]> git.proxmox.com Git - ceph.git/commitdiff
import ceph quincy 17.2.4
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Sat, 1 Oct 2022 08:42:36 +0000 (10:42 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sat, 1 Oct 2022 08:42:36 +0000 (10:42 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
695 files changed:
ceph/.readthedocs.yml
ceph/CMakeLists.txt
ceph/PendingReleaseNotes
ceph/admin/rtd-checkout-main [new file with mode: 0755]
ceph/ceph.spec
ceph/ceph.spec.in
ceph/changelog.upstream
ceph/cmake/modules/AddCephTest.cmake
ceph/cmake/modules/BuildBoost.cmake
ceph/cmake/modules/Buildpmem.cmake
ceph/cmake/modules/Distutils.cmake
ceph/debian/control
ceph/doc/cephadm/host-management.rst
ceph/doc/cephadm/operations.rst
ceph/doc/cephadm/services/index.rst
ceph/doc/cephadm/services/monitoring.rst
ceph/doc/cephadm/services/osd.rst
ceph/doc/cephadm/services/rgw.rst
ceph/doc/cephadm/upgrade.rst
ceph/doc/cephfs/cephfs-top.png
ceph/doc/cephfs/cephfs-top.rst
ceph/doc/cephfs/fs-volumes.rst
ceph/doc/cephfs/mds-state-diagram.dot
ceph/doc/cephfs/quota.rst
ceph/doc/dev/continuous-integration.rst
ceph/doc/dev/crimson/crimson.rst
ceph/doc/dev/delayed-delete.rst
ceph/doc/dev/developer_guide/basic-workflow.rst
ceph/doc/dev/developer_guide/essentials.rst
ceph/doc/dev/developer_guide/merging.rst
ceph/doc/dev/osd_internals/mclock_wpq_cmp_study.rst
ceph/doc/dev/release-process.rst
ceph/doc/index.rst
ceph/doc/man/8/cephadm.rst
ceph/doc/man/8/cephfs-top.rst
ceph/doc/man/8/rbd.rst
ceph/doc/mgr/dashboard.rst
ceph/doc/mgr/dashboard_plugins/debug.inc.rst
ceph/doc/mgr/dashboard_plugins/feature_toggles.inc.rst
ceph/doc/mgr/dashboard_plugins/motd.inc.rst
ceph/doc/mgr/orchestrator.rst
ceph/doc/mgr/telemetry.rst
ceph/doc/rados/configuration/mclock-config-ref.rst
ceph/doc/rados/operations/operating.rst
ceph/doc/rados/operations/placement-groups.rst
ceph/doc/radosgw/STS.rst
ceph/doc/radosgw/STSLite.rst
ceph/doc/radosgw/config-ref.rst
ceph/doc/radosgw/encryption.rst
ceph/doc/radosgw/vault.rst
ceph/doc/rbd/rbd-mirroring.rst
ceph/doc/start/documenting-ceph.rst
ceph/doc/start/hardware-recommendations.rst
ceph/doc/start/intro.rst
ceph/install-deps.sh
ceph/monitoring/ceph-mixin/CMakeLists.txt
ceph/monitoring/ceph-mixin/Makefile
ceph/monitoring/ceph-mixin/README.md
ceph/monitoring/ceph-mixin/alerts.jsonnet [new file with mode: 0644]
ceph/monitoring/ceph-mixin/alerts.libsonnet
ceph/monitoring/ceph-mixin/config.libsonnet
ceph/monitoring/ceph-mixin/dashboards.libsonnet [new file with mode: 0644]
ceph/monitoring/ceph-mixin/dashboards/cephfs.libsonnet
ceph/monitoring/ceph-mixin/dashboards/dashboards.libsonnet [deleted file]
ceph/monitoring/ceph-mixin/dashboards/host.libsonnet
ceph/monitoring/ceph-mixin/dashboards/osd.libsonnet
ceph/monitoring/ceph-mixin/dashboards/pool.libsonnet
ceph/monitoring/ceph-mixin/dashboards/rbd.libsonnet
ceph/monitoring/ceph-mixin/dashboards/rgw.libsonnet
ceph/monitoring/ceph-mixin/dashboards/utils.libsonnet
ceph/monitoring/ceph-mixin/dashboards_out/.lint [new file with mode: 0644]
ceph/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/host-details.json
ceph/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
ceph/monitoring/ceph-mixin/dashboards_out/osds-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/pool-detail.json
ceph/monitoring/ceph-mixin/dashboards_out/pool-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
ceph/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
ceph/monitoring/ceph-mixin/dashboards_out/rbd-details.json
ceph/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
ceph/monitoring/ceph-mixin/jsonnet-build.sh [deleted file]
ceph/monitoring/ceph-mixin/mixin.libsonnet
ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet [new file with mode: 0644]
ceph/monitoring/ceph-mixin/prometheus_alerts.yml
ceph/monitoring/ceph-mixin/test-jsonnet.sh
ceph/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
ceph/monitoring/ceph-mixin/tests_dashboards/features/host-details.feature
ceph/monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature
ceph/monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature
ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature
ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature
ceph/monitoring/ceph-mixin/tests_dashboards/util.py
ceph/monitoring/ceph-mixin/tox.ini
ceph/qa/standalone/misc/test-mclock-profile-switch.sh [new file with mode: 0644]
ceph/qa/suites/fs/full/tasks/mgr-osd-full.yaml
ceph/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml [new file with mode: 0644]
ceph/qa/suites/fs/permission/tasks/cfuse_workunit_misc.yaml
ceph/qa/suites/orch/cephadm/workunits/0-distro [new symlink]
ceph/qa/suites/rbd/maintenance/workloads/dynamic_features_no_cache.yaml
ceph/qa/suites/rbd/persistent-writeback-cache/% [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/.qa [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/1-base [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/+ [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/.qa [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/fix-2.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/openstack.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/3-supported-random-distro$ [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/big-cache.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/cache.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/rwl.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/ssd.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/.qa [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/c_api_tests_with_defaults.yaml [deleted symlink]
ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/fio.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/qemu_xfstests.yaml [deleted file]
ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/recovery.yaml [deleted file]
ceph/qa/suites/rbd/pwl-cache/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/% [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/1-base [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/2-cluster/+ [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/2-cluster/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$ [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/7-workloads/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml [new symlink]
ceph/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/% [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/1-base [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+ [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$ [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa [new symlink]
ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml [new file with mode: 0644]
ceph/qa/suites/rgw/crypt/2-kms/vault_transit.yaml
ceph/qa/tasks/ceph_manager.py
ceph/qa/tasks/cephfs/filesystem.py
ceph/qa/tasks/cephfs/kernel_mount.py
ceph/qa/tasks/cephfs/mount.py
ceph/qa/tasks/cephfs/test_failover.py
ceph/qa/tasks/cephfs/test_nfs.py
ceph/qa/tasks/cephfs/test_readahead.py
ceph/qa/tasks/cephfs/test_snap_schedules.py
ceph/qa/tasks/cephfs/test_strays.py
ceph/qa/tasks/cephfs/test_volumes.py
ceph/qa/tasks/mgr/dashboard/test_orchestrator.py
ceph/qa/tasks/mgr/dashboard/test_rbd.py
ceph/qa/tasks/mgr/dashboard/test_rgw.py
ceph/qa/tasks/rbd_pwl_cache_recovery.py [new file with mode: 0644]
ceph/qa/tasks/rgw.py
ceph/qa/tasks/s3tests.py
ceph/qa/workunits/cephadm/test_repos.sh
ceph/qa/workunits/fs/full/subvolume_clone.sh [new file with mode: 0755]
ceph/qa/workunits/fs/full/subvolume_rm.sh
ceph/qa/workunits/fs/full/subvolume_snapshot_rm.sh [new file with mode: 0755]
ceph/qa/workunits/fs/misc/dac_override.sh [new file with mode: 0755]
ceph/qa/workunits/mon/config.sh
ceph/qa/workunits/rbd/cli_generic.sh
ceph/src/.git_version
ceph/src/CMakeLists.txt
ceph/src/SimpleRADOSStriper.cc
ceph/src/auth/Crypto.cc
ceph/src/blk/kernel/KernelDevice.cc
ceph/src/ceph-volume/ceph_volume/api/lvm.py
ceph/src/ceph-volume/ceph_volume/configuration.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/batch.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/listing.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/zap.py
ceph/src/ceph-volume/ceph_volume/devices/raw/list.py
ceph/src/ceph-volume/ceph_volume/devices/simple/scan.py
ceph/src/ceph-volume/ceph_volume/main.py
ceph/src/ceph-volume/ceph_volume/tests/conftest.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_batch.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_migrate.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py
ceph/src/ceph-volume/ceph_volume/tests/devices/raw/test_list.py
ceph/src/ceph-volume/ceph_volume/tests/devices/simple/test_activate.py
ceph/src/ceph-volume/ceph_volume/tests/devices/simple/test_scan.py
ceph/src/ceph-volume/ceph_volume/tests/test_inventory.py
ceph/src/ceph-volume/ceph_volume/tests/test_main.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_device.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_disk.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_system.py
ceph/src/ceph-volume/ceph_volume/util/device.py
ceph/src/ceph-volume/ceph_volume/util/disk.py
ceph/src/ceph-volume/ceph_volume/util/encryption.py
ceph/src/ceph-volume/ceph_volume/util/prepare.py
ceph/src/ceph-volume/ceph_volume/util/system.py
ceph/src/ceph-volume/tox.ini
ceph/src/ceph-volume/tox_install_command.sh
ceph/src/cephadm/cephadm
ceph/src/cephadm/containers/keepalived/Dockerfile [new file with mode: 0644]
ceph/src/cephadm/containers/keepalived/LICENSE [new file with mode: 0644]
ceph/src/cephadm/containers/keepalived/README.md [new file with mode: 0644]
ceph/src/cephadm/containers/keepalived/skel/init.sh [new file with mode: 0755]
ceph/src/cephadm/tests/test_cephadm.py
ceph/src/cephadm/tox.ini
ceph/src/client/Client.cc
ceph/src/client/Client.h
ceph/src/client/Inode.h
ceph/src/client/MetaRequest.h
ceph/src/client/fuse_ll.cc
ceph/src/client/hypertable/CephBroker.cc
ceph/src/cls/rbd/cls_rbd_types.cc
ceph/src/common/ceph_crypto.cc
ceph/src/common/ceph_crypto.h
ceph/src/common/ceph_mutex.h
ceph/src/common/dout.h
ceph/src/common/openssl_opts_handler.cc
ceph/src/common/options/CMakeLists.txt
ceph/src/common/options/build_options.cc
ceph/src/common/options/ceph-exporter.yaml.in [new file with mode: 0644]
ceph/src/common/options/mds-client.yaml.in
ceph/src/common/options/mds.yaml.in
ceph/src/common/options/rbd.yaml.in
ceph/src/common/options/rgw.yaml.in
ceph/src/common/subsys.h
ceph/src/crimson/admin/osd_admin.cc
ceph/src/crimson/os/seastore/logging.h
ceph/src/crimson/os/seastore/onode_manager/staged-fltree/node_types.h
ceph/src/crimson/os/seastore/seastore.cc
ceph/src/crimson/os/seastore/segment_manager/block.cc
ceph/src/dokan/ceph_dokan.cc
ceph/src/dokan/ceph_dokan.h
ceph/src/dokan/dbg.cc
ceph/src/exporter/CMakeLists.txt [new file with mode: 0644]
ceph/src/exporter/DaemonMetricCollector.cc [new file with mode: 0644]
ceph/src/exporter/DaemonMetricCollector.h [new file with mode: 0644]
ceph/src/exporter/ceph_exporter.cc [new file with mode: 0644]
ceph/src/exporter/http_server.cc [new file with mode: 0644]
ceph/src/exporter/http_server.h [new file with mode: 0644]
ceph/src/exporter/util.cc [new file with mode: 0644]
ceph/src/exporter/util.h [new file with mode: 0644]
ceph/src/include/buffer.h
ceph/src/include/cephfs/ceph_ll_client.h
ceph/src/include/cephfs/libcephfs.h
ceph/src/include/cephfs/metrics/Types.h
ceph/src/include/err.h
ceph/src/include/interval_set.h
ceph/src/kv/RocksDBStore.cc
ceph/src/librados/RadosClient.cc
ceph/src/librados/librados_c.cc
ceph/src/librbd/ImageWatcher.cc
ceph/src/librbd/api/Mirror.cc
ceph/src/librbd/cache/pwl/AbstractWriteLog.cc
ceph/src/librbd/cache/pwl/AbstractWriteLog.h
ceph/src/librbd/cache/pwl/ImageCacheState.cc
ceph/src/librbd/cache/pwl/ImageCacheState.h
ceph/src/librbd/cache/pwl/rwl/WriteLog.cc
ceph/src/librbd/cache/pwl/ssd/WriteLog.cc
ceph/src/librbd/deep_copy/ImageCopyRequest.cc
ceph/src/librbd/deep_copy/ImageCopyRequest.h
ceph/src/librbd/image/RefreshRequest.cc
ceph/src/librbd/image/RefreshRequest.h
ceph/src/librbd/mirror/PromoteRequest.cc
ceph/src/librbd/mirror/snapshot/CreatePrimaryRequest.cc
ceph/src/mds/Beacon.cc
ceph/src/mds/CDir.cc
ceph/src/mds/CDir.h
ceph/src/mds/CInode.cc
ceph/src/mds/Locker.cc
ceph/src/mds/Locker.h
ceph/src/mds/MDCache.cc
ceph/src/mds/MDLog.cc
ceph/src/mds/MDLog.h
ceph/src/mds/MDSDaemon.cc
ceph/src/mds/MDSMap.cc
ceph/src/mds/MDSMap.h
ceph/src/mds/MDSPerfMetricTypes.h
ceph/src/mds/MDSRank.cc
ceph/src/mds/MDSRank.h
ceph/src/mds/MetricAggregator.cc
ceph/src/mds/MetricsHandler.cc
ceph/src/mds/OpenFileTable.cc
ceph/src/mds/OpenFileTable.h
ceph/src/mds/Server.cc
ceph/src/mds/Server.h
ceph/src/mds/SimpleLock.h
ceph/src/mds/cephfs_features.h
ceph/src/messages/MMDSBeacon.h
ceph/src/messages/MMgrUpdate.h [new file with mode: 0644]
ceph/src/mgr/BaseMgrModule.cc
ceph/src/mgr/CMakeLists.txt
ceph/src/mgr/DaemonServer.cc
ceph/src/mgr/DaemonServer.h
ceph/src/mgr/MDSPerfMetricTypes.cc
ceph/src/mgr/MDSPerfMetricTypes.h
ceph/src/mgr/MgrClient.cc
ceph/src/mgr/MgrClient.h
ceph/src/mon/ConfigMonitor.cc
ceph/src/mon/Elector.cc
ceph/src/mon/LogMonitor.cc
ceph/src/mon/MDSMonitor.cc
ceph/src/mon/MonCap.cc
ceph/src/mon/MonClient.cc
ceph/src/mon/MonClient.h
ceph/src/mon/Monitor.cc
ceph/src/mon/Monitor.h
ceph/src/mon/MonmapMonitor.cc
ceph/src/mon/OSDMonitor.cc
ceph/src/mrun
ceph/src/msg/Message.cc
ceph/src/msg/Message.h
ceph/src/msg/MessageRef.h
ceph/src/msg/async/ProtocolV1.cc
ceph/src/msg/async/ProtocolV2.cc
ceph/src/msg/msg_types.h
ceph/src/mypy-constrains.txt
ceph/src/neorados/RADOSImpl.cc
ceph/src/os/bluestore/BlueStore.cc
ceph/src/os/bluestore/BlueStore.h
ceph/src/os/bluestore/bluestore_types.cc
ceph/src/os/bluestore/bluestore_types.h
ceph/src/osd/OSD.cc
ceph/src/osd/PG.cc
ceph/src/osd/PGLog.cc
ceph/src/osd/PGLog.h
ceph/src/osd/PeeringState.cc
ceph/src/osd/PrimaryLogPG.cc
ceph/src/osd/PrimaryLogPG.h
ceph/src/osd/SnapMapper.cc
ceph/src/osd/SnapMapper.h
ceph/src/osd/osd_types.cc
ceph/src/osd/osd_types_fmt.h
ceph/src/osd/scheduler/mClockScheduler.cc
ceph/src/osd/scrubber/pg_scrubber.cc
ceph/src/pybind/cephfs/cephfs.pyx
ceph/src/pybind/mgr/cephadm/inventory.py
ceph/src/pybind/mgr/cephadm/migrations.py
ceph/src/pybind/mgr/cephadm/module.py
ceph/src/pybind/mgr/cephadm/registry.py
ceph/src/pybind/mgr/cephadm/schedule.py
ceph/src/pybind/mgr/cephadm/serve.py
ceph/src/pybind/mgr/cephadm/services/cephadmservice.py
ceph/src/pybind/mgr/cephadm/services/ingress.py
ceph/src/pybind/mgr/cephadm/services/monitoring.py
ceph/src/pybind/mgr/cephadm/templates/services/ingress/keepalived.conf.j2
ceph/src/pybind/mgr/cephadm/templates/services/promtail.yml.j2
ceph/src/pybind/mgr/cephadm/tests/fixtures.py
ceph/src/pybind/mgr/cephadm/tests/test_cephadm.py
ceph/src/pybind/mgr/cephadm/tests/test_scheduling.py
ceph/src/pybind/mgr/cephadm/tests/test_services.py
ceph/src/pybind/mgr/cephadm/tests/test_tuned_profiles.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/tuned_profiles.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/upgrade.py
ceph/src/pybind/mgr/dashboard/__init__.py
ceph/src/pybind/mgr/dashboard/cherrypy_backports.py
ceph/src/pybind/mgr/dashboard/ci/cephadm/bootstrap-cluster.sh
ceph/src/pybind/mgr/dashboard/ci/cephadm/run-cephadm-e2e-tests.sh
ceph/src/pybind/mgr/dashboard/ci/cephadm/start-cluster.sh
ceph/src/pybind/mgr/dashboard/constraints.txt
ceph/src/pybind/mgr/dashboard/controllers/home.py
ceph/src/pybind/mgr/dashboard/controllers/nfs.py
ceph/src/pybind/mgr/dashboard/controllers/orchestrator.py
ceph/src/pybind/mgr/dashboard/controllers/osd.py
ceph/src/pybind/mgr/dashboard/controllers/pool.py
ceph/src/pybind/mgr/dashboard/controllers/prometheus.py
ceph/src/pybind/mgr/dashboard/controllers/rbd.py
ceph/src/pybind/mgr/dashboard/controllers/rbd_mirroring.py
ceph/src/pybind/mgr/dashboard/controllers/rgw.py
ceph/src/pybind/mgr/dashboard/controllers/service.py
ceph/src/pybind/mgr/dashboard/frontend/.gherkin-lintrc [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/fixtures/block-rbd-status.json [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/block/mirroring.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/create-cluster.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/hosts.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/logs.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/mgr-modules.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/osds.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/01-global.feature.po.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/create-cluster/create-cluster.feature.po.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/grafana.feature.po.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/urls.po.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/grafana/grafana.feature [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome-page.e2e-spec.ts [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome.feature [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.e2e-spec.ts [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.feature [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-services.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-osds.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/05-create-cluster-review.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/06-cluster-check.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/07-osds.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/08-hosts.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/09-services.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/10-nfs-exports.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/nfs/nfs-export.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/ui/api-docs.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/ui/navigation.po.ts
ceph/src/pybind/mgr/dashboard/frontend/cypress/plugins/index.js
ceph/src/pybind/mgr/dashboard/frontend/cypress/support/commands.ts
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.7c1918629ff8b413cc76.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.cd14092ccedeaf2d7d79.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/330.4192d10f1b1db19145cc.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/3rdpartylicenses.txt
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/483.43ef92bcd845cb24eae3.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.764bfab2e2f489fdfd7f.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.7d0bcf3a0ac0c40fef3b.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.30fafaca6a3d4e1868e0.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.86799889c70942fa9a19.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.ab6c27cac6d7501e18e8.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.d9a3c3d3ac8fa3cc7c93.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.e6093c94066da7ab35c7.css [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.ffb7f665775e3c191fa3.css [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/package-lock.json
ceph/src/pybind/mgr/dashboard/frontend/package.json
ceph/src/pybind/mgr/dashboard/frontend/src/app/app-routing.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.html [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.scss [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.spec.ts [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.ts [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/image-list/image-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/image-list/image-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/mirroring.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview/overview.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview/overview.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview/overview.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list/pool-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list/pool-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-details/rbd-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form-edit-request.model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-performance/rbd-performance.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-form/rbd-snapshot-form-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-form/rbd-snapshot-form-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-tabs/cephfs-tabs.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster-review.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/host-details/host-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/host-form/host-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/host-form/host-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-creation-preview-modal/osd-creation-preview-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-details/osd-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/active-alert-list/active-alert-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/rules-list/rules-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-details/pool-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/error/error.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/error/error.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/error/error.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/error/error.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/nfs.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/orchestrator.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/orchestrator.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/osd.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/osd.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/form-button-panel/form-button-panel.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/wizard/wizard.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/constants/app.constants.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table-actions/table-actions.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/enum/cell-template.enum.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-table-fetch-data-context.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-table-paging.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-user-config.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/osd-deployment-options.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/ceph-release-name.pipe.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/motd-notification.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/prometheus-alert.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-list.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/timer.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_basics.scss
ceph/src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_forms.scss
ceph/src/pybind/mgr/dashboard/module.py
ceph/src/pybind/mgr/dashboard/openapi.yaml
ceph/src/pybind/mgr/dashboard/plugins/feature_toggles.py
ceph/src/pybind/mgr/dashboard/requirements.txt
ceph/src/pybind/mgr/dashboard/run-backend-api-tests.sh
ceph/src/pybind/mgr/dashboard/services/auth.py
ceph/src/pybind/mgr/dashboard/services/custom_banner.py [deleted file]
ceph/src/pybind/mgr/dashboard/services/exception.py
ceph/src/pybind/mgr/dashboard/services/iscsi_config.py
ceph/src/pybind/mgr/dashboard/services/orchestrator.py
ceph/src/pybind/mgr/dashboard/services/osd.py [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/services/rbd.py
ceph/src/pybind/mgr/dashboard/tests/test_nfs.py
ceph/src/pybind/mgr/dashboard/tests/test_orchestrator.py
ceph/src/pybind/mgr/dashboard/tests/test_osd.py
ceph/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py
ceph/src/pybind/mgr/dashboard/tests/test_rbd_service.py
ceph/src/pybind/mgr/dashboard/tests/test_rgw.py
ceph/src/pybind/mgr/iostat/module.py
ceph/src/pybind/mgr/mgr_module.py
ceph/src/pybind/mgr/mgr_util.py
ceph/src/pybind/mgr/nfs/cluster.py
ceph/src/pybind/mgr/orchestrator/_interface.py
ceph/src/pybind/mgr/orchestrator/module.py
ceph/src/pybind/mgr/orchestrator/tests/test_orchestrator.py
ceph/src/pybind/mgr/pg_autoscaler/module.py
ceph/src/pybind/mgr/prometheus/module.py
ceph/src/pybind/mgr/rbd_support/mirror_snapshot_schedule.py
ceph/src/pybind/mgr/rbd_support/trash_purge_schedule.py
ceph/src/pybind/mgr/requirements-required.txt
ceph/src/pybind/mgr/snap_schedule/fs/schedule_client.py
ceph/src/pybind/mgr/stats/fs/perf_stats.py
ceph/src/pybind/mgr/status/module.py
ceph/src/pybind/mgr/telemetry/module.py
ceph/src/pybind/mgr/tox.ini
ceph/src/pybind/mgr/volumes/fs/async_cloner.py
ceph/src/pybind/mgr/volumes/fs/fs_util.py
ceph/src/pybind/mgr/volumes/fs/operations/group.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/__init__.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/metadata_manager.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_v1.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_v2.py
ceph/src/pybind/mgr/volumes/fs/operations/volume.py
ceph/src/pybind/mgr/volumes/fs/vol_spec.py
ceph/src/pybind/mgr/volumes/fs/volume.py
ceph/src/pybind/mgr/volumes/module.py
ceph/src/python-common/ceph/deployment/drive_group.py
ceph/src/python-common/ceph/deployment/hostspec.py
ceph/src/python-common/ceph/deployment/service_spec.py
ceph/src/python-common/ceph/deployment/translate.py
ceph/src/rbd_fuse/rbd-fuse.cc
ceph/src/rgw/rgw_admin.cc
ceph/src/rgw/rgw_auth.cc
ceph/src/rgw/rgw_auth.h
ceph/src/rgw/rgw_auth_filters.h
ceph/src/rgw/rgw_auth_keystone.cc
ceph/src/rgw/rgw_auth_keystone.h
ceph/src/rgw/rgw_auth_s3.h
ceph/src/rgw/rgw_bucket_encryption.cc
ceph/src/rgw/rgw_bucket_encryption.h
ceph/src/rgw/rgw_common.cc
ceph/src/rgw/rgw_common.h
ceph/src/rgw/rgw_crypt.cc
ceph/src/rgw/rgw_crypt.h
ceph/src/rgw/rgw_data_sync.cc
ceph/src/rgw/rgw_datalog.cc
ceph/src/rgw/rgw_dencoder.cc
ceph/src/rgw/rgw_kms.cc
ceph/src/rgw/rgw_kms.h
ceph/src/rgw/rgw_lc.cc
ceph/src/rgw/rgw_log.cc
ceph/src/rgw/rgw_log.h
ceph/src/rgw/rgw_main.cc
ceph/src/rgw/rgw_op.cc
ceph/src/rgw/rgw_opa.cc
ceph/src/rgw/rgw_rados.cc
ceph/src/rgw/rgw_rest_s3.cc
ceph/src/rgw/rgw_rest_sts.h
ceph/src/rgw/rgw_rest_swift.cc
ceph/src/rgw/rgw_rest_user_policy.cc
ceph/src/rgw/rgw_sal.h
ceph/src/rgw/rgw_swift_auth.cc
ceph/src/rgw/rgw_swift_auth.h
ceph/src/rgw/rgw_sync_policy.cc
ceph/src/rgw/store/dbstore/CMakeLists.txt
ceph/src/script/build-integration-branch
ceph/src/test/crimson/seastore/onode_tree/test_value.h
ceph/src/test/encoding.cc
ceph/src/test/lazy-omap-stats/CMakeLists.txt
ceph/src/test/lazy-omap-stats/lazy_omap_stats_test.cc
ceph/src/test/lazy-omap-stats/lazy_omap_stats_test.h
ceph/src/test/libcephfs/test.cc
ceph/src/test/librados/aio_cxx.cc
ceph/src/test/librados/misc.cc
ceph/src/test/librados/tier_cxx.cc
ceph/src/test/librbd/cache/pwl/test_mock_ReplicatedWriteLog.cc
ceph/src/test/librbd/cache/pwl/test_mock_SSDWriteLog.cc
ceph/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc
ceph/src/test/librbd/image/test_mock_RefreshRequest.cc
ceph/src/test/librbd/migration/test_mock_HttpClient.cc
ceph/src/test/librbd/mirror/snapshot/test_mock_CreatePrimaryRequest.cc
ceph/src/test/librbd/test_mirroring.cc
ceph/src/test/objectstore/CMakeLists.txt
ceph/src/test/objectstore/run_test_deferred.sh [new file with mode: 0755]
ceph/src/test/objectstore/test_bluestore_types.cc
ceph/src/test/objectstore/test_deferred.cc [new file with mode: 0644]
ceph/src/test/osd/TestPGLog.cc
ceph/src/test/rbd_mirror/image_replayer/journal/test_mock_PrepareReplayRequest.cc
ceph/src/test/rbd_mirror/image_replayer/snapshot/test_mock_Replayer.cc
ceph/src/test/rbd_mirror/image_replayer/test_mock_BootstrapRequest.cc
ceph/src/test/rgw/test_http_manager.cc
ceph/src/test/rgw/test_rgw_kms.cc
ceph/src/test/test_snap_mapper.cc
ceph/src/tools/ceph-dencoder/common_types.h
ceph/src/tools/ceph-dencoder/rgw_types.h
ceph/src/tools/ceph_objectstore_tool.cc
ceph/src/tools/ceph_objectstore_tool.h
ceph/src/tools/cephfs/CMakeLists.txt
ceph/src/tools/cephfs/cephfs-shell [deleted file]
ceph/src/tools/cephfs/setup.py [deleted file]
ceph/src/tools/cephfs/shell/CMakeLists.txt [new file with mode: 0644]
ceph/src/tools/cephfs/shell/cephfs-shell [new file with mode: 0755]
ceph/src/tools/cephfs/shell/setup.py [new file with mode: 0644]
ceph/src/tools/cephfs/shell/tox.ini [new file with mode: 0644]
ceph/src/tools/cephfs/top/cephfs-top
ceph/src/tools/cephfs/tox.ini [deleted file]
ceph/src/tools/cephfs_mirror/Mirror.cc
ceph/src/tools/cephfs_mirror/PeerReplayer.cc
ceph/src/tools/rbd/Shell.cc
ceph/src/tools/rbd/Utils.cc
ceph/src/tools/rbd/Utils.h
ceph/src/tools/rbd/action/Group.cc
ceph/src/tools/rbd/action/List.cc
ceph/src/tools/rbd/action/MirrorPool.cc
ceph/src/tools/rbd/action/Namespace.cc
ceph/src/tools/rbd/action/Perf.cc
ceph/src/tools/rbd/action/Pool.cc
ceph/src/tools/rbd/action/Trash.cc
ceph/src/tools/rbd_mirror/ImageReplayer.cc
ceph/src/tools/rbd_mirror/image_replayer/BootstrapRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/PrepareRemoteImageRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/StateBuilder.cc
ceph/src/tools/rbd_mirror/image_replayer/StateBuilder.h
ceph/src/tools/rbd_mirror/image_replayer/journal/PrepareReplayRequest.cc
ceph/src/tools/rbd_mirror/image_replayer/journal/PrepareReplayRequest.h
ceph/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc
ceph/src/tools/rbd_mirror/image_replayer/snapshot/PrepareReplayRequest.h
ceph/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
ceph/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc
ceph/win32_deps_build.sh

index ce7de68ae37684e858eabc2a5fb336c3573f4f24..361c664fa22cd3864522af8e91c11e9722fd0cb0 100644 (file)
@@ -1,15 +1,23 @@
 ---
 # Read the Docs configuration file
 # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+#
+# The pre_build command checks if we're building a named branch (i.e., not a PR).
+# If so, check out doc/releases from the main branch before building so
+# it's always up to date on docs.ceph.com/en/*.
 
 version: 2
 formats: []
 build:
-  image: latest
+  os: ubuntu-22.04
+  tools:
+    python: "3.8"
   apt_packages:
     - ditaa
+  jobs:
+    pre_build:
+      - bash admin/rtd-checkout-main
 python:
-  version: 3.8
   install:
     - requirements: admin/doc-requirements.txt
     - requirements: admin/doc-read-the-docs.txt
index 28133cc6553f3da5004c9917b3a305463d6eb5d6..5fb3601bd0231a86882d45716c7d9db081afe4ef 100644 (file)
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.16)
 
 project(ceph
-  VERSION 17.2.3
+  VERSION 17.2.4
   LANGUAGES CXX C ASM)
 
 cmake_policy(SET CMP0028 NEW)
@@ -39,7 +39,15 @@ if(WIN32)
   # the targeted Windows version. The availability of certain functions and
   # structures will depend on it.
   set(WIN32_WINNT "0x0A00" CACHE STRING "Targeted Windows version.")
-  add_definitions(-D_WIN32_WINNT=${WIN32_WINNT})
+  # In order to avoid known winpthread issues, we're using the boost
+  # shared mutex implementation.
+  # https://github.com/msys2/MINGW-packages/issues/3319
+  add_definitions(
+    -D_WIN32_WINNT=${WIN32_WINNT}
+    -DBOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
+    -DBOOST_THREAD_V2_SHARED_MUTEX
+  )
+  set(Boost_THREADAPI "win32")
 endif()
 
 if(MINGW)
index 3854ccb566022ba055c4e4c8c4ee6a25635bc3a9..873c3e7ca18c5360e738d1b8ba5403d300365607 100644 (file)
@@ -1,3 +1,13 @@
+>=17.2.4
+--------
+
+* Cephfs: The 'AT_NO_ATTR_SYNC' macro is deprecated, please use the standard
+  'AT_STATX_DONT_SYNC' macro. The 'AT_NO_ATTR_SYNC' macro will be removed in
+  the future.
+
+* OSD: The issue of high CPU utilization during recovery/backfill operations
+  has been fixed. For more details, see: https://tracker.ceph.com/issues/56530.
+
 >=17.2.1
 
 * The "BlueStore zero block detection" feature (first introduced to Quincy in
diff --git a/ceph/admin/rtd-checkout-main b/ceph/admin/rtd-checkout-main
new file mode 100755 (executable)
index 0000000..829d7c3
--- /dev/null
@@ -0,0 +1,10 @@
+# See .readthedocs.yml
+set -ex
+re='^[0-9]+$'
+if [[ $READTHEDOCS_VERSION =~ $re ]]; then
+  echo "Building docs for PR $READTHEDOCS_VERSION.  Will not check out doc/releases from main branch."
+else
+  echo "Building docs for $READTHEDOCS_VERSION branch.  Will check out doc/releases from main branch."
+  git checkout origin/main -- doc/releases
+fi
+git status
index 4c5e7855604b956a51eebf9bdbb7f197504e0a7b..f2cac36f4e230c714b6784c2bbb840fecee29477 100644 (file)
 %if 0%{?rhel} < 9
 %bcond_with system_pmdk
 %else
+%ifarch s390x aarch64
+%bcond_with system_pmdk
+%else
 %bcond_without system_pmdk
 %endif
+%endif
 %bcond_without selinux
 %if 0%{?rhel} >= 8
 %bcond_with cephfs_java
 %{!?python3_pkgversion: %global python3_pkgversion 3}
 %{!?python3_version_nodots: %global python3_version_nodots 3}
 %{!?python3_version: %global python3_version 3}
+%{!?gts_prefix: %global gts_prefix gcc-toolset-11}
 
 %if ! 0%{?suse_version}
 # use multi-threaded xz compression: xz level 7 using ncpus threads
 %endif
 %endif
 
-%if 0%{with seastar}
-# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{9,10}-annobin
+# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{10,11}-annobin
 # do not provide gcc-annobin.so anymore, despite that they provide annobin.so. but
 # redhat-rpm-config still passes -fplugin=gcc-annobin to the compiler.
 %undefine _annotated_build
+%if 0%{?rhel} == 8 && 0%{?enable_devtoolset11:1}
+%enable_devtoolset11
 %endif
 
 #################################################################################
 # main package definition
 #################################################################################
 Name:          ceph
-Version:       17.2.3
+Version:       17.2.4
 Release:       0%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:         2
@@ -172,7 +178,7 @@ License:    LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-
 Group:         System/Filesystems
 %endif
 URL:           http://ceph.com/
-Source0:       %{?_remote_tarball_prefix}ceph-17.2.3.tar.bz2
+Source0:       %{?_remote_tarball_prefix}ceph-17.2.4.tar.bz2
 %if 0%{?suse_version}
 # _insert_obs_source_lines_here
 ExclusiveArch:  x86_64 aarch64 ppc64le s390x
@@ -196,10 +202,18 @@ BuildRequires:    selinux-policy-devel
 BuildRequires: gperf
 BuildRequires:  cmake > 3.5
 BuildRequires: fuse-devel
-%if 0%{with seastar} && 0%{?rhel}
-BuildRequires: gcc-toolset-9-gcc-c++ >= 9.2.1-2.3
-%else
-BuildRequires: gcc-c++
+%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} == 9
+BuildRequires: gcc-c++ >= 11
+%endif
+%if 0%{?rhel} == 8
+BuildRequires: %{gts_prefix}-gcc-c++
+BuildRequires: %{gts_prefix}-build
+%ifarch aarch64
+BuildRequires: %{gts_prefix}-libatomic-devel
+%endif
+%endif
+%if 0%{?fedora} || 0%{?rhel} == 9
+BuildRequires:  libatomic
 %endif
 %if 0%{with tcmalloc}
 # libprofiler did not build on ppc64le until 2.7.90
@@ -268,6 +282,8 @@ BuildRequires:      python%{python3_pkgversion}-dateutil
 BuildRequires: python%{python3_pkgversion}-coverage
 BuildRequires: python%{python3_pkgversion}-pyOpenSSL
 BuildRequires: socat
+BuildRequires: python%{python3_pkgversion}-asyncssh
+BuildRequires: python%{python3_pkgversion}-natsort
 %endif
 %if 0%{with zbd}
 BuildRequires:  libzbd-devel
@@ -311,13 +327,12 @@ BuildRequires:  systemtap-sdt-devel
 %if 0%{?fedora}
 BuildRequires:  libubsan
 BuildRequires:  libasan
-BuildRequires:  libatomic
 %endif
-%if 0%{?rhel}
-BuildRequires:  gcc-toolset-9-annobin
-BuildRequires:  gcc-toolset-9-libubsan-devel
-BuildRequires:  gcc-toolset-9-libasan-devel
-BuildRequires:  gcc-toolset-9-libatomic-devel
+%if 0%{?rhel} == 8
+BuildRequires:  %{gts_prefix}-annobin
+BuildRequires:  %{gts_prefix}-annobin-plugin-gcc
+BuildRequires:  %{gts_prefix}-libubsan-devel
+BuildRequires:  %{gts_prefix}-libasan-devel
 %endif
 %endif
 #################################################################################
@@ -347,6 +362,7 @@ BuildRequires:  rdma-core-devel
 BuildRequires: liblz4-devel >= 1.7
 # for prometheus-alerts
 BuildRequires:  golang-github-prometheus-prometheus
+BuildRequires: jsonnet
 %endif
 %if 0%{?fedora} || 0%{?rhel}
 Requires:      systemd
@@ -388,6 +404,7 @@ BuildRequires:      python%{python3_pkgversion}-pyOpenSSL
 %endif
 %if 0%{?suse_version}
 BuildRequires: golang-github-prometheus-prometheus
+BuildRequires: jsonnet
 BuildRequires: libxmlsec1-1
 BuildRequires: libxmlsec1-nss1
 BuildRequires: libxmlsec1-openssl1
@@ -581,6 +598,7 @@ Group:          System/Filesystems
 Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{python3_pkgversion}-setuptools
 %if 0%{?fedora} || 0%{?rhel}
 Requires:       python%{python3_pkgversion}-cherrypy
 Requires:       python%{python3_pkgversion}-jwt
@@ -717,6 +735,15 @@ Requires:  libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 %description -n cephfs-mirror
 Daemon for mirroring CephFS snapshots between Ceph clusters.
 
+%package -n ceph-exporter
+Summary: Daemon for exposing perf counters as Prometheus metrics
+%if 0%{?suse_version}
+Group:         System/Filesystems
+%endif
+Requires:      ceph-base = %{_epoch_prefix}%{version}-%{release}
+%description -n ceph-exporter
+Daemon for exposing perf counters as Prometheus metrics
+
 %package -n rbd-fuse
 Summary:       Ceph fuse-based client
 %if 0%{?suse_version}
@@ -1239,7 +1266,7 @@ This package provides Ceph default alerts for Prometheus.
 # common
 #################################################################################
 %prep
-%autosetup -p1 -n ceph-17.2.3
+%autosetup -p1 -n ceph-17.2.4
 
 %build
 # Disable lto on systems that do not support symver attribute
@@ -1248,10 +1275,6 @@ This package provides Ceph default alerts for Prometheus.
 %define _lto_cflags %{nil}
 %endif
 
-%if 0%{with seastar} && 0%{?rhel}
-. /opt/rh/gcc-toolset-9/enable
-%endif
-
 %if 0%{with cephfs_java}
 # Find jni.h
 for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
@@ -1296,6 +1319,9 @@ cmake .. \
     -DWITH_MANPAGE:BOOL=ON \
     -DWITH_PYTHON3:STRING=%{python3_version} \
     -DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF \
+%if 0%{?suse_version}
+    -DWITH_RADOSGW_SELECT_PARQUET:BOOL=OFF \
+%endif
 %if 0%{without ceph_test_package}
     -DWITH_TESTS:BOOL=OFF \
 %endif
@@ -1368,6 +1394,10 @@ cmake .. \
 %endif
 %if 0%{with system_utf8proc}
     -DWITH_SYSTEM_UTF8PROC:BOOL=ON \
+%endif
+%if 0%{with seastar}
+    -DWITH_SEASTAR:BOOL=ON \
+    -DWITH_JAEGER:BOOL=OFF \
 %endif
     -DWITH_GRAFANA:BOOL=ON
 
@@ -1394,6 +1424,7 @@ popd
 
 
 %install
+
 pushd %{_vpath_builddir}
 %make_install
 # we have dropped sysvinit bits
@@ -1575,8 +1606,7 @@ exit 0
 
 %if ! 0%{?suse_version}
 %postun -n cephadm
-userdel -r cephadm || true
-exit 0
+[ $1 -ne 0 ] || userdel cephadm || :
 %endif
 
 %files -n cephadm
@@ -1962,6 +1992,9 @@ if [ $1 -ge 1 ] ; then
   fi
 fi
 
+%files -n ceph-exporter
+%{_bindir}/ceph-exporter
+
 %files -n rbd-fuse
 %{_bindir}/rbd-fuse
 %{_mandir}/man8/rbd-fuse.8*
index 9f522a750b7866d1dfe490536e52c24fed1e1175..5c5e390f4ae8eeaaaf9d9e6b4058c36551590415 100644 (file)
 %if 0%{?rhel} < 9
 %bcond_with system_pmdk
 %else
+%ifarch s390x aarch64
+%bcond_with system_pmdk
+%else
 %bcond_without system_pmdk
 %endif
+%endif
 %bcond_without selinux
 %if 0%{?rhel} >= 8
 %bcond_with cephfs_java
 %{!?python3_pkgversion: %global python3_pkgversion 3}
 %{!?python3_version_nodots: %global python3_version_nodots 3}
 %{!?python3_version: %global python3_version 3}
+%{!?gts_prefix: %global gts_prefix gcc-toolset-11}
 
 %if ! 0%{?suse_version}
 # use multi-threaded xz compression: xz level 7 using ncpus threads
 %endif
 %endif
 
-%if 0%{with seastar}
-# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{9,10}-annobin
+# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{10,11}-annobin
 # do not provide gcc-annobin.so anymore, despite that they provide annobin.so. but
 # redhat-rpm-config still passes -fplugin=gcc-annobin to the compiler.
 %undefine _annotated_build
+%if 0%{?rhel} == 8 && 0%{?enable_devtoolset11:1}
+%enable_devtoolset11
 %endif
 
 #################################################################################
@@ -196,10 +202,18 @@ BuildRequires:    selinux-policy-devel
 BuildRequires: gperf
 BuildRequires:  cmake > 3.5
 BuildRequires: fuse-devel
-%if 0%{with seastar} && 0%{?rhel}
-BuildRequires: gcc-toolset-9-gcc-c++ >= 9.2.1-2.3
-%else
-BuildRequires: gcc-c++
+%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} == 9
+BuildRequires: gcc-c++ >= 11
+%endif
+%if 0%{?rhel} == 8
+BuildRequires: %{gts_prefix}-gcc-c++
+BuildRequires: %{gts_prefix}-build
+%ifarch aarch64
+BuildRequires: %{gts_prefix}-libatomic-devel
+%endif
+%endif
+%if 0%{?fedora} || 0%{?rhel} == 9
+BuildRequires:  libatomic
 %endif
 %if 0%{with tcmalloc}
 # libprofiler did not build on ppc64le until 2.7.90
@@ -268,6 +282,8 @@ BuildRequires:      python%{python3_pkgversion}-dateutil
 BuildRequires: python%{python3_pkgversion}-coverage
 BuildRequires: python%{python3_pkgversion}-pyOpenSSL
 BuildRequires: socat
+BuildRequires: python%{python3_pkgversion}-asyncssh
+BuildRequires: python%{python3_pkgversion}-natsort
 %endif
 %if 0%{with zbd}
 BuildRequires:  libzbd-devel
@@ -311,13 +327,12 @@ BuildRequires:  systemtap-sdt-devel
 %if 0%{?fedora}
 BuildRequires:  libubsan
 BuildRequires:  libasan
-BuildRequires:  libatomic
 %endif
-%if 0%{?rhel}
-BuildRequires:  gcc-toolset-9-annobin
-BuildRequires:  gcc-toolset-9-libubsan-devel
-BuildRequires:  gcc-toolset-9-libasan-devel
-BuildRequires:  gcc-toolset-9-libatomic-devel
+%if 0%{?rhel} == 8
+BuildRequires:  %{gts_prefix}-annobin
+BuildRequires:  %{gts_prefix}-annobin-plugin-gcc
+BuildRequires:  %{gts_prefix}-libubsan-devel
+BuildRequires:  %{gts_prefix}-libasan-devel
 %endif
 %endif
 #################################################################################
@@ -347,6 +362,7 @@ BuildRequires:  rdma-core-devel
 BuildRequires: liblz4-devel >= 1.7
 # for prometheus-alerts
 BuildRequires:  golang-github-prometheus-prometheus
+BuildRequires: jsonnet
 %endif
 %if 0%{?fedora} || 0%{?rhel}
 Requires:      systemd
@@ -388,6 +404,7 @@ BuildRequires:      python%{python3_pkgversion}-pyOpenSSL
 %endif
 %if 0%{?suse_version}
 BuildRequires: golang-github-prometheus-prometheus
+BuildRequires: jsonnet
 BuildRequires: libxmlsec1-1
 BuildRequires: libxmlsec1-nss1
 BuildRequires: libxmlsec1-openssl1
@@ -581,6 +598,7 @@ Group:          System/Filesystems
 Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{python3_pkgversion}-setuptools
 %if 0%{?fedora} || 0%{?rhel}
 Requires:       python%{python3_pkgversion}-cherrypy
 Requires:       python%{python3_pkgversion}-jwt
@@ -717,6 +735,15 @@ Requires:  libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 %description -n cephfs-mirror
 Daemon for mirroring CephFS snapshots between Ceph clusters.
 
+%package -n ceph-exporter
+Summary: Daemon for exposing perf counters as Prometheus metrics
+%if 0%{?suse_version}
+Group:         System/Filesystems
+%endif
+Requires:      ceph-base = %{_epoch_prefix}%{version}-%{release}
+%description -n ceph-exporter
+Daemon for exposing perf counters as Prometheus metrics
+
 %package -n rbd-fuse
 Summary:       Ceph fuse-based client
 %if 0%{?suse_version}
@@ -1248,10 +1275,6 @@ This package provides Ceph default alerts for Prometheus.
 %define _lto_cflags %{nil}
 %endif
 
-%if 0%{with seastar} && 0%{?rhel}
-. /opt/rh/gcc-toolset-9/enable
-%endif
-
 %if 0%{with cephfs_java}
 # Find jni.h
 for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
@@ -1296,6 +1319,9 @@ cmake .. \
     -DWITH_MANPAGE:BOOL=ON \
     -DWITH_PYTHON3:STRING=%{python3_version} \
     -DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF \
+%if 0%{?suse_version}
+    -DWITH_RADOSGW_SELECT_PARQUET:BOOL=OFF \
+%endif
 %if 0%{without ceph_test_package}
     -DWITH_TESTS:BOOL=OFF \
 %endif
@@ -1368,6 +1394,10 @@ cmake .. \
 %endif
 %if 0%{with system_utf8proc}
     -DWITH_SYSTEM_UTF8PROC:BOOL=ON \
+%endif
+%if 0%{with seastar}
+    -DWITH_SEASTAR:BOOL=ON \
+    -DWITH_JAEGER:BOOL=OFF \
 %endif
     -DWITH_GRAFANA:BOOL=ON
 
@@ -1394,6 +1424,7 @@ popd
 
 
 %install
+
 pushd %{_vpath_builddir}
 %make_install
 # we have dropped sysvinit bits
@@ -1575,8 +1606,7 @@ exit 0
 
 %if ! 0%{?suse_version}
 %postun -n cephadm
-userdel -r cephadm || true
-exit 0
+[ $1 -ne 0 ] || userdel cephadm || :
 %endif
 
 %files -n cephadm
@@ -1962,6 +1992,9 @@ if [ $1 -ge 1 ] ; then
   fi
 fi
 
+%files -n ceph-exporter
+%{_bindir}/ceph-exporter
+
 %files -n rbd-fuse
 %{_bindir}/rbd-fuse
 %{_mandir}/man8/rbd-fuse.8*
index c23038092ee78152651db008d6328f51b120eae3..71c3623393762221052202a8a79c20f828c4eb79 100644 (file)
@@ -1,3 +1,9 @@
+ceph (17.2.4-1) stable; urgency=medium
+
+  * New upstream release
+
+ -- Ceph Release Team <ceph-maintainers@ceph.io>  Wed, 28 Sep 2022 22:55:56 +0000
+
 ceph (17.2.3-1) stable; urgency=medium
 
   * New upstream release
index 46d3a1b4cb813fbfe7042aa2ac12e2a3afdf070a..2784567c68711c943d65811a78fbfa2fc7925c3f 100644 (file)
@@ -98,7 +98,7 @@ function(add_tox_test name)
     CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
     CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV}
     LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib
-    PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH}
+    PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:${CMAKE_CURRENT_BINARY_DIR}:$ENV{PATH}
     PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind)
   list(APPEND tox_test run-tox-${name})
 endfunction()
index bdda30f708ef83a9b5ca2ea361883d9ae984aa37..bd9497f1c093fd3339c50aa6c6f1f664dd8791bf 100644 (file)
@@ -80,10 +80,20 @@ function(do_build_boost root_dir version)
   endforeach()
   list_replace(boost_with_libs "unit_test_framework" "test")
   string(REPLACE ";" "," boost_with_libs "${boost_with_libs}")
+
+  if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
+    set(toolset gcc)
+  elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+    set(toolset clang)
+  else()
+    message(SEND_ERROR "unknown compiler: ${CMAKE_CXX_COMPILER_ID}")
+  endif()
+
   # build b2 and prepare the project-config.jam for boost
   set(configure_command
     ./bootstrap.sh --prefix=<INSTALL_DIR>
-    --with-libraries=${boost_with_libs})
+    --with-libraries=${boost_with_libs}
+    --with-toolset=${toolset})
 
   set(b2 ./b2)
   if(BOOST_J)
@@ -93,14 +103,6 @@ function(do_build_boost root_dir version)
   # suppress all debugging levels for b2
   list(APPEND b2 -d0)
 
-  if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
-    set(toolset gcc)
-  elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-    set(toolset clang)
-  else()
-    message(SEND_ERROR "unknown compiler: ${CMAKE_CXX_COMPILER_ID}")
-  endif()
-
   set(user_config ${CMAKE_BINARY_DIR}/user-config.jam)
   # edit the user-config.jam so b2 will be able to use the specified
   # toolset and python
index ead5c80ae90f56062ec5743ad64d88c3b80085a1..61c5ba6019f032ffb5ae9e847cc89b6484eb2ecf 100644 (file)
@@ -21,6 +21,7 @@ function(build_pmem)
     set(PMDK_LIB_DIR "nondebug")
   endif()
 
+  set(pmdk_cflags "-Wno-error -fno-lto")
   include(ExternalProject)
   ExternalProject_Add(pmdk_ext
       ${source_dir_args}
@@ -29,7 +30,7 @@ function(build_pmem)
       # build system tests statically linking to librbd (which uses
       # libpmemobj) will not link (because we don't build the ndctl
       # static library here).
-      BUILD_COMMAND ${make_cmd} CC=${CMAKE_C_COMPILER} NDCTL_ENABLE=n BUILD_EXAMPLES=n BUILD_BENCHMARKS=n DOC=n
+      BUILD_COMMAND ${make_cmd} CC=${CMAKE_C_COMPILER} "EXTRA_CFLAGS=${pmdk_cflags}" NDCTL_ENABLE=n BUILD_EXAMPLES=n BUILD_BENCHMARKS=n DOC=n
       BUILD_IN_SOURCE 1
       BUILD_BYPRODUCTS "<SOURCE_DIR>/src/${PMDK_LIB_DIR}/libpmem.a" "<SOURCE_DIR>/src/${PMDK_LIB_DIR}/libpmemobj.a"
       INSTALL_COMMAND "")
index 1916363382fa3377f61e3e3b3a8264add16f8bcf..9d66ae979a65d93b5bd47f839b0a2ee44c35837e 100644 (file)
@@ -69,7 +69,7 @@ function(distutils_add_cython_module target name src)
   # This little bit of magic wipes out __Pyx_check_single_interpreter()
   # Note: this is reproduced in distutils_install_cython_module
   list(APPEND PY_CPPFLAGS -D'void0=dead_function\(void\)')
-  list(APPEND PY_CPPFLAGS -D'__Pyx_check_single_interpreter\(ARG\)=ARG \#\# 0')
+  list(APPEND PY_CPPFLAGS -D'__Pyx_check_single_interpreter\(ARG\)=ARG\#\#0')
   set(PY_CC ${compiler_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1})
   set(PY_CXX ${compiler_launcher} ${CMAKE_CXX_COMPILER} ${cxx_compiler_arg1})
   set(PY_LDSHARED ${link_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1} "-shared")
@@ -129,7 +129,7 @@ function(distutils_install_cython_module name)
     set(ENV{LDSHARED} \"${PY_LDSHARED}\")
     set(ENV{CPPFLAGS} \"-iquote${CMAKE_SOURCE_DIR}/src/include
                         -D'void0=dead_function\(void\)' \
-                        -D'__Pyx_check_single_interpreter\(ARG\)=ARG \#\# 0' \
+                        -D'__Pyx_check_single_interpreter\(ARG\)=ARG\#\#0' \
                         ${CFLAG_DISABLE_VTA}\")
     set(ENV{LDFLAGS} \"-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\")
     set(ENV{CYTHON_BUILD_DIR} \"${CMAKE_CURRENT_BINARY_DIR}\")
index af0f351ee4fbf15cd14355c7eeead60094470ea8..cbb5ccaa4d850219bc7747e07e3385b38d9cdfd4 100644 (file)
@@ -24,6 +24,7 @@ Build-Depends: automake,
                hostname <pkg.ceph.check>,
                javahelper,
                jq <pkg.ceph.check>,
+               jsonnet <pkg.ceph.check>,
                junit4,
                libarrow-dev <pkg.ceph.arrow>,
                libparquet-dev <pkg.ceph.arrow>,
@@ -235,6 +236,8 @@ Depends: ceph-base (= ${binary:Version}),
          python3-pecan,
          python3-requests,
          python3-werkzeug,
+         libsqlite3-mod-ceph (= ${binary:Version}),
+         librados2 (= ${binary:Version}),
          ${misc:Depends},
          ${python:Depends},
          ${shlibs:Depends},
@@ -259,6 +262,7 @@ Depends: ceph-mgr (= ${binary:Version}),
          python3-cherrypy3,
          python3-jwt,
          python3-bcrypt,
+         python3-pkg-resources,
          python3-werkzeug,
          python3-routes,
          ${misc:Depends},
@@ -763,7 +767,8 @@ Description: RADOS distributed object store client C++ library (development file
 Package: libsqlite3-mod-ceph
 Architecture: any
 Section: libs
-Depends: ${misc:Depends},
+Depends: librados2 (= ${binary:Version}),
+         ${misc:Depends},
          ${shlibs:Depends},
 Description: SQLite3 VFS for Ceph
  A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS
index f342558fafcb74fcf841a51f36fb9c4cd4faa069..fee286e3a72a225aaf4936928aeb63f2eb1dc8bf 100644 (file)
@@ -161,7 +161,9 @@ The following host labels have a special meaning to cephadm.  All start with ``_
   bootstrap was originally run), and the ``client.admin`` key is set to be distributed
   to that host via the ``ceph orch client-keyring ...`` function.  Adding this label
   to additional hosts will normally cause cephadm to deploy config and keyring files
-  in ``/etc/ceph``.
+  in ``/etc/ceph``. Starting from versions 16.2.10 (Pacific) and 17.2.1 (Quincy) in
+  addition to the default location ``/etc/ceph/`` cephadm also stores config and keyring
+  files in the ``/var/lib/ceph/<fsid>/config`` directory.
 
 Maintenance Mode
 ================
@@ -175,6 +177,21 @@ Where the force flag when entering maintenance allows the user to bypass warning
 
 See also :ref:`cephadm-fqdn`
 
+Rescanning Host Devices
+=======================
+
+Some servers and external enclosures may not register device removal or insertion with the
+kernel. In these scenarios, you'll need to perform a host rescan. A rescan is typically
+non-disruptive, and can be performed with the following CLI command.::
+
+    ceph orch host rescan <hostname> [--with-summary]
+
+The ``with-summary`` flag provides a breakdown of the number of HBAs found and scanned, together
+with any that failed.::
+
+    [ceph: root@rh9-ceph1 /]# ceph orch host rescan rh9-ceph1 --with-summary
+    Ok. 2 adapters detected: 2 rescanned, 0 skipped, 0 failed (0.32s)
+
 Creating many hosts at once
 ===========================
 
@@ -226,6 +243,95 @@ create a new CRUSH host located in the specified hierarchy.
 
 See also :ref:`crush_map_default_types`.
 
+OS Tuning Profiles
+==================
+
+Cephadm can manage operating system tuning profiles that apply a set of sysctl settings
+to a given set of hosts. First create a YAML spec file in the following format
+
+.. code-block:: yaml
+
+    profile_name: 23-mon-host-profile
+    placement:
+      hosts:
+        - mon-host-01
+        - mon-host-02
+    settings:
+      fs.file-max: 1000000
+      vm.swappiness: '13'
+
+Then apply the tuning profile with::
+
+    ceph orch tuned-profile apply -i <tuned-profile-file-name>
+
+This profile will then be written to ``/etc/sysctl.d/`` on each host matching the
+given placement and `sysctl --system` will be run on the host.
+
+.. note::
+
+  The exact filename the profile will be written to is within ``/etc/sysctl.d/`` is
+  ``<profile-name>-cephadm-tuned-profile.conf`` where <profile-name>
+  is the `profile_name` setting specified in the provided YAML spec. Since sysctl
+  settings are applied in lexicographical order by the filename the setting is
+  specified in, you may want to set the `profile_name` in your spec so
+  that it is applied before or after other conf files that may exist.
+
+.. note::
+
+  These settings are applied only at the host level, and are not specific
+  to any certain daemon or container
+
+.. note::
+
+  Applying tuned profiles is idempotent when the ``--no-overwrite`` option is passed.
+  In this case existing profiles with the same name are not overwritten.
+
+
+Viewing Profiles
+----------------
+
+To view all current profiles cephadm is managing::
+
+    ceph orch tuned-profile ls
+
+.. note:: 
+
+  If you'd like to make modifications and re-apply a profile passing `--format yaml` to the
+  ``tuned-profile ls`` command will present the profiles in a format where they can be copied
+  and re-applied.
+
+
+Removing Profiles
+-----------------
+
+If you no longer want one of the previously applied profiles, it can be removed with::
+
+    ceph orch tuned-profile rm <profile-name>
+
+When a profile is removed, cephadm will clean up the file previously written to /etc/sysctl.d
+
+
+Modifying Profiles
+------------------
+
+While you can modify a profile by simply re-applying a YAML spec with the same profile name,
+you may also want to adjust a setting within a given profile, so there are commands
+for this purpose.
+
+To add or modify a setting for an existing profile::
+
+    ceph orch tuned-profile add-setting <setting-name> <value>
+
+To remove a setting from an existing profile::
+
+    ceph orch tuned-profile rm-setting <setting-name>
+
+.. note:: 
+
+  Modifying the placement will require re-applying a profile with the same name. Keep
+  in mind that profiles are tracked by their name, so whenever a profile with the same
+  name as an existing profile is applied, it will overwrite the old profile.
+
 SSH Configuration
 =================
 
index fb7d5481df92e638945f8838de5adbb368b0daba..9ec8371c89ad0805bbc9657e47cd173ce3444ba3 100644 (file)
@@ -395,25 +395,34 @@ process is active within the cluster.*
 CEPHADM_CHECK_KERNEL_VERSION
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 The OS kernel version (maj.min) is checked for consistency across the hosts.
-The kernel version of the majority of the hosts is used as the basis for 
+The kernel version of the majority of the hosts is used as the basis for
 identifying anomalies.
 
 .. _client_keyrings_and_configs:
 
 Client keyrings and configs
 ===========================
-
 Cephadm can distribute copies of the ``ceph.conf`` file and client keyring
-files to hosts. It is usually a good idea to store a copy of the config and
-``client.admin`` keyring on any host used to administer the cluster via the
-CLI.  By default, cephadm does this for any nodes that have the ``_admin``
-label (which normally includes the bootstrap host).
+files to hosts. Starting from versions 16.2.10 (Pacific) and 17.2.1 (Quincy),
+in addition to the default location ``/etc/ceph/`` cephadm also stores config
+and keyring files in the ``/var/lib/ceph/<fsid>/config`` directory. It is usually
+a good idea to store a copy of the config and ``client.admin`` keyring on any host
+used to administer the cluster via the CLI. By default, cephadm does this for any
+nodes that have the ``_admin`` label (which normally includes the bootstrap host).
+
+.. note:: Ceph daemons will still use files on ``/etc/ceph/``. The new configuration
+   location ``/var/lib/ceph/<fsid>/config`` is used by cephadm only. Having this config
+   directory under the fsid helps cephadm to load the configuration associated with
+   the cluster.
+
 
 When a client keyring is placed under management, cephadm will:
 
   - build a list of target hosts based on the specified placement spec (see
     :ref:`orchestrator-cli-placement-spec`)
   - store a copy of the ``/etc/ceph/ceph.conf`` file on the specified host(s)
+  - store a copy of the ``ceph.conf`` file at ``/var/lib/ceph/<fsid>/config/ceph.conf`` on the specified host(s)
+  - store a copy of the ``ceph.client.admin.keyring`` file at ``/var/lib/ceph/<fsid>/config/ceph.client.admin.keyring`` on the specified host(s)
   - store a copy of the keyring file on the specified host(s)
   - update the ``ceph.conf`` file as needed (e.g., due to a change in the cluster monitors)
   - update the keyring file if the entity's key is changed (e.g., via ``ceph
index be9b3661a9e245980c0b7e1205d1d4c413ae2799..d6520ea407f8fe6c5e0a41fc52f8ae0cf682ac5d 100644 (file)
@@ -86,7 +86,20 @@ Service Specification
 =====================
 
 A *Service Specification* is a data structure that is used to specify the
-deployment of services.  Here is an example of a service specification in YAML:
+deployment of services. In addition to parameters such as `placement` or
+`networks`, the user can set initial values of service configuration parameters
+by means of the `config` section. For each param/value configuration pair,
+cephadm calls the following command to set its value:
+
+   .. prompt:: bash #
+
+    ceph config set <service-name> <param> <value>
+
+cephadm raises health warnings in case invalid configuration parameters are
+found in the spec (`CEPHADM_INVALID_CONFIG_OPTION`) or if any error while
+trying to apply the new configuration option(s) (`CEPHADM_FAILED_SET_OPTION`).
+
+Here is an example of a service specification in YAML:
 
 .. code-block:: yaml
 
@@ -97,6 +110,10 @@ deployment of services.  Here is an example of a service specification in YAML:
         - host1
         - host2
         - host3
+    config:
+      param_1: val_1
+      ...
+      param_N: val_N
     unmanaged: false
     networks:
     - 192.169.142.0/24
@@ -414,7 +431,7 @@ Cephadm supports the deployment of multiple daemons on the same host:
     service_type: rgw
     placement:
       label: rgw
-      count-per-host: 2
+      count_per_host: 2
 
 The main reason for deploying multiple daemons per host is an additional
 performance benefit for running multiple RGW and MDS daemons on the same host.
@@ -505,6 +522,57 @@ a spec like
 
 which would cause each mon daemon to be deployed with `--cpus=2`.
 
+Custom Config Files
+===================
+
+Cephadm supports specifying miscellaneous config files for daemons.
+To do so, users must provide both the content of the config file and the
+location within the daemon's container at which it should be mounted. After
+applying a YAML spec with custom config files specified and having cephadm
+redeploy the daemons for which the config files are specified, these files will
+be mounted within the daemon's container at the specified location.
+
+Example service spec:
+
+.. code-block:: yaml
+
+    service_type: grafana
+    service_name: grafana
+    custom_configs:
+      - mount_path: /etc/example.conf
+        content: |
+          setting1 = value1
+          setting2 = value2
+      - mount_path: /usr/share/grafana/example.cert
+        content: |
+          -----BEGIN PRIVATE KEY-----
+          V2VyIGRhcyBsaWVzdCBpc3QgZG9vZi4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFt
+          ZXQsIGNvbnNldGV0dXIgc2FkaXBzY2luZyBlbGl0ciwgc2VkIGRpYW0gbm9udW15
+          IGVpcm1vZCB0ZW1wb3IgaW52aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
+          YSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3Mg
+          ZXQgYWNjdXNhbSBldCBqdXN0byBkdW8=
+          -----END PRIVATE KEY-----
+          -----BEGIN CERTIFICATE-----
+          V2VyIGRhcyBsaWVzdCBpc3QgZG9vZi4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFt
+          ZXQsIGNvbnNldGV0dXIgc2FkaXBzY2luZyBlbGl0ciwgc2VkIGRpYW0gbm9udW15
+          IGVpcm1vZCB0ZW1wb3IgaW52aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
+          YSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3Mg
+          ZXQgYWNjdXNhbSBldCBqdXN0byBkdW8=
+          -----END CERTIFICATE-----
+
+To make these new config files actually get mounted within the
+containers for the daemons
+
+.. prompt:: bash
+
+  ceph orch redeploy <service-name>
+
+For example:
+
+.. prompt:: bash
+
+  ceph orch redeploy grafana
+
 .. _orch-rm:
 
 Removing a Service
index a17beba6d1e18f40285edbbd734dd4b490414bc5..08ccd94821e081006b6aaf503482531ed812c0cc 100644 (file)
@@ -83,6 +83,28 @@ steps below:
 
      ceph orch apply grafana
 
+.. _cephadm-monitoring-centralized-logs:
+
+Centralized Logging in Ceph
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Ceph now provides centralized logging with Loki & Promtail. Centralized Log Management (CLM) consolidates all log data and pushes it to a central repository, 
+with an accessible and easy-to-use interface. Centralized logging is designed to make your life easier. 
+Some of the advantages are:
+
+#. **Linear event timeline**: it is easier to troubleshoot issues analyzing a single chain of events than thousands of different logs from a hundred nodes.
+#. **Real-time live log monitoring**: it is impractical to follow logs from thousands of different sources.
+#. **Flexible retention policies**: with per-daemon logs, log rotation is usually set to a short interval (1-2 weeks) to save disk usage.
+#. **Increased security & backup**: logs can contain sensitive information and expose usage patterns. Additionally, centralized logging allows for HA, etc.
+
+Centralized Logging in Ceph is implemented using two new services - ``loki`` & ``promtail``.
+
+Loki: It is basically a log aggregation system and is used to query logs. It can be configured as a datasource in Grafana. 
+
+Promtail: It acts as an agent that gathers logs from the system and makes them available to Loki.
+
+These two services are not deployed by default in a Ceph cluster. To enable the centralized logging you can follow the steps mentioned here :ref:`centralized-logging`.
+
 .. _cephadm-monitoring-networks-ports:
 
 Networks and Ports
@@ -195,6 +217,7 @@ set``:
 - ``services/grafana/ceph-dashboard.yml``
 - ``services/grafana/grafana.ini``
 - ``services/prometheus/prometheus.yml``
+- ``services/prometheus/alerting/custom_alerts.yml``
 
 You can look up the file templates that are currently used by cephadm in
 ``src/pybind/mgr/cephadm/templates``:
@@ -240,6 +263,15 @@ Example
   # reconfig the prometheus service
   ceph orch reconfig prometheus
 
+.. code-block:: bash
+
+  # set additional custom alerting rules for Prometheus
+  ceph config-key set mgr/cephadm/services/prometheus/alerting/custom_alerts.yml \
+    -i $PWD/custom_alerts.yml
+
+  # Note that custom alerting rules are not parsed by Jinja and hence escaping
+  # will not be an issue.
+
 Deploying monitoring without cephadm
 ------------------------------------
 
index c4260b84d90a45304388a95e26ec5a963e6b057e..70a4ad0cd13d71323ed6d43e32a01c185a6c5e2d 100644 (file)
@@ -245,6 +245,18 @@ Expected output::
 
 OSDs that are not safe to destroy will be rejected.
 
+.. note::
+    After removing OSDs, if the drives the OSDs were deployed on once again
+    become available, cephadm may automatically try to deploy more OSDs
+    on these drives if they match an existing drivegroup spec. If you deployed
+    the OSDs you are removing with a spec and don't want any new OSDs deployed on
+    the drives after removal, it's best to modify the drivegroup spec before removal.
+    Either set ``unmanaged: true`` to stop it from picking up new drives at all,
+    or modify it in some way that it no longer matches the drives used for the
+    OSDs you wish to remove. Then re-apply the spec. For more info on drivegroup
+    specs see :ref:`drivegroups`. For more info on the declarative nature of
+    cephadm in reference to deploying OSDs, see :ref:`cephadm-osd-declarative`
+
 Monitoring OSD State
 --------------------
 
index a0f130a8eead1008c0360921d3bbd53676cd0a9a..58318b727e14562819b6da56f93b6dbce306fa59 100644 (file)
@@ -65,14 +65,14 @@ example spec file:
 .. code-block:: yaml
 
     service_type: rgw
-    service_name: foo
+    service_id: foo
     placement:
       label: rgw
-      count-per-host: 2
+      count_per_host: 2
     networks:
     - 192.169.142.0/24
     spec:
-      port: 8000
+      rgw_frontend_port: 8080
 
 
 Multisite zones
@@ -224,6 +224,33 @@ It is a yaml format file with the following properties:
         ...
         -----END PRIVATE KEY-----
 
+.. code-block:: yaml
+
+    service_type: ingress
+    service_id: rgw.something    # adjust to match your existing RGW service
+    placement:
+      hosts:
+        - host1
+        - host2
+        - host3
+    spec:
+      backend_service: rgw.something      # adjust to match your existing RGW service
+      virtual_ips_list:
+      - <string>/<string>                 # ex: 192.168.20.1/24
+      - <string>/<string>                 # ex: 192.168.20.2/24
+      - <string>/<string>                 # ex: 192.168.20.3/24
+      frontend_port: <integer>            # ex: 8080
+      monitor_port: <integer>             # ex: 1967, used by haproxy for load balancer status
+      virtual_interface_networks: [ ... ] # optional: list of CIDR networks
+      ssl_cert: |                         # optional: SSL certificate and key
+        -----BEGIN CERTIFICATE-----
+        ...
+        -----END CERTIFICATE-----
+        -----BEGIN PRIVATE KEY-----
+        ...
+        -----END PRIVATE KEY-----
+
+
 where the properties of this service specification are:
 
 * ``service_type``
@@ -237,6 +264,10 @@ where the properties of this service specification are:
     to match the nodes where RGW is deployed.
 * ``virtual_ip``
     The virtual IP (and network) in CIDR format where the ingress service will be available.
+* ``virtual_ips_list``
+    The virtual IP address in CIDR format where the ingress service will be available.
+    Each virtual IP address will be primary on one node running the ingress service. The number
+    of virtual IP addresses must be less than or equal to the number of ingress nodes.
 * ``virtual_interface_networks``
     A list of networks to identify which ethernet interface to use for the virtual IP.
 * ``frontend_port``
index b7f60b7fdef3eca4c617106b92a7b41d3cc70c0a..221f212449f792df0ffbceec5b94831910f37212 100644 (file)
@@ -119,6 +119,12 @@ You can stop the upgrade process at any time by running the following command:
 
   ceph orch upgrade stop
 
+Post upgrade actions
+====================
+
+In case the new version is based on ``cephadm``, once done with the upgrade the user
+has to update the ``cephadm`` package (or ceph-common package in case the user
+doesn't use ``cephadm shell``) to a version compatible with the new version.
 
 Potential problems
 ==================
index f65aea1d2b9011701999729c8c71f9f00344c845..807029d00703effe49032b6f7d2d6f46492f7cb6 100644 (file)
Binary files a/ceph/doc/cephfs/cephfs-top.png and b/ceph/doc/cephfs/cephfs-top.png differ
index e2ca724275e0cff455cbff67e7d7713a5e223b12..824fb9d06f72b5d7611d23490eedb10a81b79f2c 100644 (file)
@@ -29,7 +29,7 @@ metrics are for a particular MDS rank (e.g., number of subtrees handled by an MD
 Once enabled, Ceph Filesystem metrics can be fetched via::
 
   $ ceph fs perf stats
-  {"version": 1, "global_counters": ["cap_hit", "read_latency", "write_latency", "metadata_latency", "dentry_lease"], "counters": [], "client_metadata": {"client.614146": {"IP": "10.1.1.100", "hostname"  : "ceph-host1", "root": "/", "mount_point": "/mnt/cephfs", "valid_metrics": ["cap_hit", "read_latency", "write_latency", "metadata_latency", "dentry_lease"]}}, "global_metrics": {"client.614146": [[0,  0], [0, 0], [0, 0], [0, 0], [0, 0]]}, "metrics": {"delayed_ranks": [], "mds.0": {"client.614146": []}}}
+  {"version": 1, "global_counters": ["cap_hit", "read_latency", "write_latency", "metadata_latency", "dentry_lease", "opened_files", "pinned_icaps", "opened_inodes", "avg_read_latency", "stdev_read_latency", "avg_write_latency", "stdev_write_latency", "avg_metadata_latency", "stdev_metadata_latency"], "counters": [], "client_metadata": {"client.324130": {"IP": "192.168.1.100", "hostname": "ceph-host1", "root": "/", "mount_point": "/mnt/cephfs", "valid_metrics": ["cap_hit", "read_latency", "write_latency", "metadata_latency", "dentry_lease, "opened_files", "pinned_icaps", "opened_inodes", "avg_read_latency", "stdev_read_latency", "avg_write_latency", "stdev_write_latency", "avg_metadata_latency", "stdev_metadata_latency"]}}, "global_metrics": {"client.324130": [[309785, 1280], [0, 0], [197, 519015022], [88, 279074768], [12, 70147], [0, 3], [3, 3], [0, 3], [0, 0], [0, 0], [0, 11699223], [0, 88245], [0, 6596951], [0, 9539]]}, "metrics": {"delayed_ranks": [], "mds.0": {"client.324130": []}}}
 
 Details of the JSON command output are as follows:
 
index eb33b1f93998d127b9b14b620eecb183890a30b0..f52f0589e2d4580771392753c1edbc81dc36a59d 100644 (file)
@@ -97,18 +97,57 @@ The CephX IDs authorized to <vol_name> need to be reauthorized to <new_vol_name>
 on-going operations of the clients using these IDs may be disrupted. Mirroring is
 expected to be disabled on the volume.
 
+Fetch the information of a CephFS volume using::
+
+    $ ceph fs volume info vol_name
+    {
+        "mon_addrs": [
+            "192.168.1.7:40977"
+        ],
+        "pending_subvolume_deletions": 0,
+        "pools": {
+            "data": [
+                {
+                    "avail": 106288709632,
+                    "name": "cephfs.vol_name.data",
+                    "used": 4096
+                }
+            ],
+            "metadata": [
+                {
+                    "avail": 106288709632,
+                    "name": "cephfs.vol_name.meta",
+                    "used": 155648
+                }
+            ]
+        },
+        "used_size": 0
+    }
+
+The output format is json and contains fields as follows.
+
+* pools: Attributes of data and metadata pools
+        * avail: The amount of free space available in bytes
+        * used: The amount of storage consumed in bytes
+        * name: Name of the pool
+* mon_addrs: List of monitor addresses
+* used_size: Current used size of the CephFS volume in bytes
+* pending_subvolume_deletions: Number of subvolumes pending deletion
+
 FS Subvolume groups
 -------------------
 
 Create a subvolume group using::
 
-    $ ceph fs subvolumegroup create <vol_name> <group_name> [--pool_layout <data_pool_name>] [--uid <uid>] [--gid <gid>] [--mode <octal_mode>]
+    $ ceph fs subvolumegroup create <vol_name> <group_name> [--size <size_in_bytes>] [--pool_layout <data_pool_name>] [--uid <uid>] [--gid <gid>] [--mode <octal_mode>]
 
 The command succeeds even if the subvolume group already exists.
 
 When creating a subvolume group you can specify its data pool layout (see
-:doc:`/cephfs/file-layouts`), uid, gid, and file mode in octal numerals. By default, the
-subvolume group is created with an octal file mode '755', uid '0', gid '0' and data pool
+:doc:`/cephfs/file-layouts`), uid, gid, file mode in octal numerals and
+size in bytes. The size of the subvolume group is specified by setting
+a quota on it (see :doc:`/cephfs/quota`). By default, the subvolume group
+is created with an octal file mode '755', uid '0', gid '0' and data pool
 layout of its parent directory.
 
 
@@ -131,6 +170,46 @@ List subvolume groups using::
 .. note:: Subvolume group snapshot feature is no longer supported in mainline CephFS (existing group
           snapshots can still be listed and deleted)
 
+Fetch the metadata of a subvolume group using::
+
+    $ ceph fs subvolumegroup info <vol_name> <group_name>
+
+The output format is json and contains fields as follows.
+
+* atime: access time of subvolume group path in the format "YYYY-MM-DD HH:MM:SS"
+* mtime: modification time of subvolume group path in the format "YYYY-MM-DD HH:MM:SS"
+* ctime: change time of subvolume group path in the format "YYYY-MM-DD HH:MM:SS"
+* uid: uid of subvolume group path
+* gid: gid of subvolume group path
+* mode: mode of subvolume group path
+* mon_addrs: list of monitor addresses
+* bytes_pcent: quota used in percentage if quota is set, else displays "undefined"
+* bytes_quota: quota size in bytes if quota is set, else displays "infinite"
+* bytes_used: current used size of the subvolume group in bytes
+* created_at: time of creation of subvolume group in the format "YYYY-MM-DD HH:MM:SS"
+* data_pool: data pool the subvolume group belongs to
+
+Check the presence of any subvolume group using::
+
+    $ ceph fs subvolumegroup exist <vol_name>
+
+The strings returned by the 'exist' command:
+    * "subvolumegroup exists": if any subvolumegroup is present
+    * "no subvolumegroup exists": if no subvolumegroup is present
+
+.. note:: It checks for the presence of custom groups and not the default one. To validate the emptiness of the volume, subvolumegroup existence check alone is not sufficient. The subvolume existence also needs to be checked as there might be subvolumes in the default group.
+
+Resize a subvolume group using::
+
+    $ ceph fs subvolumegroup resize <vol_name> <group_name> <new_size> [--no_shrink]
+
+The command resizes the subvolume group quota using the size specified by 'new_size'.
+The '--no_shrink' flag prevents the subvolume group to shrink below the current used
+size of the subvolume group.
+
+The subvolume group can be resized to an infinite size by passing 'inf' or 'infinite'
+as the new_size.
+
 Remove a snapshot of a subvolume group using::
 
     $ ceph fs subvolumegroup snapshot rm <vol_name> <group_name> <snap_name> [--force]
@@ -260,6 +339,14 @@ List subvolumes using::
 
 .. note:: subvolumes that are removed but have snapshots retained, are also listed.
 
+Check the presence of any subvolume using::
+
+    $ ceph fs subvolume exist <vol_name> [--group_name <subvol_group_name>]
+
+The strings returned by the 'exist' command:
+    * "subvolume exists": if any subvolume of given group_name is present
+    * "no subvolume exists": if no subvolume of given group_name is present
+
 Set custom metadata on the subvolume as a key-value pair using::
 
     $ ceph fs subvolume metadata set <vol_name> <subvol_name> <key_name> <value> [--group_name <subvol_group_name>]
@@ -312,7 +399,39 @@ The output format is json and contains fields as follows.
 * created_at: time of creation of snapshot in the format "YYYY-MM-DD HH:MM:SS:ffffff"
 * data_pool: data pool the snapshot belongs to
 * has_pending_clones: "yes" if snapshot clone is in progress otherwise "no"
-* size: snapshot size in bytes
+* pending_clones: list of in progress or pending clones and their target group if exist otherwise this field is not shown
+* orphan_clones_count: count of orphan clones if snapshot has orphan clones otherwise this field is not shown
+
+Sample output if snapshot clones are in progress or pending state::
+
+  $ ceph fs subvolume snapshot info cephfs subvol snap
+  {
+      "created_at": "2022-06-14 13:54:58.618769",
+      "data_pool": "cephfs.cephfs.data",
+      "has_pending_clones": "yes",
+      "pending_clones": [
+          {
+              "name": "clone_1",
+              "target_group": "target_subvol_group"
+          },
+          {
+              "name": "clone_2"
+          },
+          {
+              "name": "clone_3",
+              "target_group": "target_subvol_group"
+          }
+      ]
+  }
+
+Sample output if no snapshot clone is in progress or pending state::
+
+  $ ceph fs subvolume snapshot info cephfs subvol snap
+  {
+      "created_at": "2022-06-14 13:54:58.618769",
+      "data_pool": "cephfs.cephfs.data",
+      "has_pending_clones": "no"
+  }
 
 Set custom metadata on the snapshot as a key-value pair using::
 
index 3ad192ef19ddadef298e0c79fb5b0e4918bef52d..8c9fa25d0f57ab7ad872d4f73ff1d9f5a7930ce5 100644 (file)
@@ -57,6 +57,7 @@ D0 -> N3 [color=red,penwidth=2.0];
 // terminal (but not "in")
 node [shape=polygon,sides=6,color=black,peripheries=1];
 D1 [label="down:damaged"]
+S2 -> D1 [color=black,penwidth=2.0];
 N3 -> D1 [color=black,penwidth=2.0];
 N4 -> D1 [color=black,penwidth=2.0];
 N5 -> D1 [color=black,penwidth=2.0];
@@ -69,5 +70,6 @@ D1 -> D0 [color=red,penwidth=2.0]
 node [shape=polygon,sides=6,color=purple,peripheries=1];
 D3 [label="down:stopped"]
 S3 -> D3 [color=purple,penwidth=2.0];
+N6 -> D3 [color=purple,penwidth=2.0];
 
 }
index 951982d16431a250e7a5924d7a07b0d44ac04f0b..777298f911cd116f2646b0b2ee7053cb2a83dc3d 100644 (file)
@@ -41,6 +41,18 @@ Limitations
    the directory the client is restricted too (e.g., ``/home/user``)
    or something nested beneath it.
 
+   In case of a kernel client, it needs to have access to the parent
+   of the directory inode on which quotas are configured in order to
+   enforce them. If quota is configured on a directory path
+   (e.g., ``/home/volumes/group``), the kclient needs to have access
+   to the parent (e.g., ``/home/volumes``).
+
+   An example command to create such an user is as below::
+
+     $ ceph auth get-or-create client.guest mds 'allow r path=/home/volumes, allow rw path=/home/volumes/group' mgr 'allow rw' osd 'allow rw tag cephfs metadata=*' mon 'allow r'
+
+   See also: https://tracker.ceph.com/issues/55090
+
 #. *Snapshot file data which has since been deleted or changed does not count
    towards the quota.* See also: http://tracker.ceph.com/issues/24284
 
index cfa44b60ea7baf3e21f1b42231fc3310a6f4e459..70b6da4bdeeccca60d774db7dd146514e980e713 100644 (file)
@@ -154,15 +154,26 @@ libboost
     packages `boost`_. The packages' names are changed from ``libboost-*`` to
     ``ceph-libboost-*``, and they are instead installed into ``/opt/ceph``, so
     they don't interfere with the official ``libboost`` packages shipped by
-    distro. Its build scripts are hosted at https://github.com/tchaikov/ceph-boost.
+    distro. Its build scripts are hosted at https://github.com/ceph/ceph-boost.
+    See https://github.com/ceph/ceph-boost/commit/2a8ae02932b2a1fd6a68072da8ca0df2b99b805c
+    for an example of how to bump the version number. The commands used to
+    build 1.79 on a vanilla Ubuntu Focal OS are below.
 
     .. prompt:: bash $
 
-       tar xjf boost_1_76_0.tar.bz2
+       sudo apt install debhelper dctrl-tools chrpath libbz2-dev libicu-dev bison \
+         flex docbook-to-man help2man xsltproc doxygen dh-python python3-all-dev graphviz
+       wget http://download.ceph.com/qa/boost_1_79_0.tar.bz2
        git clone https://github.com/ceph/ceph-boost
-       cp -ra ceph-boost/debian boost_1_76_0/
+       tar xjf boost_1_79_0.tar.bz2
+       cp -ra ceph-boost/debian boost_1_79_0/
+       pushd boost_1_79_0
        export DEB_BUILD_OPTIONS='parallel=6 nodoc'
        dpkg-buildpackage -us -uc -b
+       popd
+       BOOST_SHA=$(git ls-remote https://github.com/ceph/ceph-boost main | awk '{ print $1 }')
+       ls *.deb | chacractl binary create \
+         libboost/master/$BOOST_SHA/ubuntu/focal/amd64/flavors/default
 
 libzbd
     packages `libzbd`_ . The upstream libzbd includes debian packaging already.
index 8276bea34400e77073ed1579c5fc6c594aabe96c..89adc3429c78968d8eb933b639d535388f595e7d 100644 (file)
@@ -24,6 +24,45 @@ cloned using git.
 
 .. _ASan: https://github.com/google/sanitizers/wiki/AddressSanitizer
 
+Installing Crimson with ready-to-use images
+===========================================
+
+An alternative to building Crimson from source is to use container images built
+by Ceph CI/CD and deploy them with one of the orchestrators: ``cephadm`` or ``Rook``.
+In this chapter documents the ``cephadm`` way.
+
+NOTE: We know that this procedure is suboptimal, but it has passed internal
+external quality assurance.::
+
+
+  $ curl -L https://raw.githubusercontent.com/ceph/ceph-ci/wip-bharat-crimson/src/cephadm/cephadm -o cephadm
+  $ cp cephadm /usr/sbin
+  $ vi /usr/sbin/cephadm
+
+In the file change ``DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:master'``
+to ``DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:<sha1>-crimson`` where ``<sha1>``
+is the commit ID built by the Ceph CI/CD. You may use
+https://shaman.ceph.com/builds/ceph/ to monitor branches built by Ceph's Jenkins
+and to also discover those IDs.
+
+An example::
+
+  DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:1647216bf4ebac6bcf5ad7739e02b38569736cfd-crimson
+
+When the edition is finished::
+
+  chmod 777 cephadm
+  podman pull quay.ceph.io/ceph-ci/ceph:<sha1>-crimson
+  cephadm bootstrap --mon-ip 10.1.172.208 --allow-fqdn-hostname
+  # Set "PermitRootLogin yes" for other nodes you want to use
+  echo 'PermitRootLogin yes' >>  /etc/ssh/sshd_config
+  systemctl restart sshd
+
+  ssh-copy-id -f -i /etc/ceph/ceph.pub root@<nodename>
+  cephadm shell
+  ceph orch host add <nodename>
+  ceph orch apply osd --all-available-devices
+
 Running Crimson
 ===============
 
index bf5f65a460893fa09153081b4a51c9be45475d2e..31f3e6b9727fed0f66d55a256281155ab0f3d209 100644 (file)
@@ -2,11 +2,12 @@
  CephFS delayed deletion
 =========================
 
-When you delete a file, the data is not immediately removed. Each
-object in the file needs to be removed independently, and sending
-``size_of_file / stripe_size * replication_count`` messages would slow
-the client down too much, and use a too much of the clients
-bandwidth. Additionally, snapshots may mean some objects should not be
-deleted.
+The deletion of a file does not immediately remove its data. Each of the file's
+underlying objects must be removed independently. If these objects were removed 
+immediately, the client would have to send ``size_of_file / stripe_size *
+replication_count`` messages. This would consume significant bandwith and would
+slow the client unacceptably. If snapshots exist, their existence can prevent
+the deletion of objects associated with them.
 
-Instead, the file is marked as deleted on the MDS, and deleted lazily.
+In these cases, such files are (1) marked as deleted on the MDS and (2) deleted
+lazily.
index 6bd98ebb4501c9a26bb01492eb6de55035b05f75..eddc2fe7bb7772c9c30bb0075fd55a1ba6dfdee3 100644 (file)
@@ -1,3 +1,5 @@
+.. _basic workflow dev guide:
+
 Basic Workflow
 ==============
 
@@ -8,7 +10,7 @@ The following chart illustrates the basic Ceph development workflow:
             Upstream Code                       Your Local Environment
 
            /----------\        git clone           /-------------\
-           |   Ceph   | -------------------------> | ceph/master |
+           |   Ceph   | -------------------------> | ceph/main   |
            \----------/                            \-------------/
                 ^                                    |
                 |                                    | git branch fix_1
@@ -76,7 +78,7 @@ The procedure for making changes to the Ceph repository is as follows:
 
 #. Fix the bug
 
-   #. :ref:`Synchronize local master with upstream master<synchronizing>`.
+   #. :ref:`Synchronize local main with upstream main<synchronizing>`.
          
    #. :ref:`Create a bugfix branch<bugfix_branch>` in your local working copy.
          
@@ -142,6 +144,10 @@ to work on the Ceph repository.".
 
 1. Configure your local git environment with your name and email address.  
 
+   .. note::
+      These commands will work only from within the ``ceph/`` directory
+      that was created when you cloned your fork.
+
    .. prompt:: bash $
 
       git config user.name "FIRST_NAME LAST_NAME"
@@ -163,23 +169,23 @@ Fixing the Bug
 
 .. _synchronizing:
 
-Synchronizing Local Master with Upstream Master
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Synchronizing Local Main with Upstream Main
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-In your local git environment, there is a copy of the ``master`` branch in
-``remotes/origin/master``. This is called "local master". This copy of the
-master branch (https://github.com/your_github_id/ceph.git) is "frozen in time"
+In your local git environment, there is a copy of the ``main`` branch in
+``remotes/origin/main``. This is called "local main". This copy of the
+main branch (https://github.com/your_github_id/ceph.git) is "frozen in time"
 at the moment that you cloned it, but the upstream repo
 (https://github.com/ceph/ceph.git, typically abbreviated to ``ceph/ceph.git``)
 that it was forked from is not frozen in time: the upstream repo is still being
 updated by other contributors. 
 
-Because upstream master is continually receiving updates from other
+Because upstream main is continually receiving updates from other
 contributors, your fork will drift farther and farther from the state of the
 upstream repo when you cloned it.
 
-You must keep your fork's master branch synchronized with upstream master in
-order to reduce drift between your fork's master branch and the upstream master
+You must keep your fork's main branch synchronized with upstream main in
+order to reduce drift between your fork's main branch and the upstream main
 branch.
 
 Here are the commands for keeping your fork synchronized with the
@@ -188,12 +194,12 @@ upstream repository:
 .. prompt:: bash $
 
    git fetch ceph
-   git checkout master
-   git reset --hard ceph/master
-   git push -u origin master
+   git checkout main 
+   git reset --hard ceph/main
+   git push -u origin main
 
-This procedure should be followed often, in order to keep your local ``master``
-in sync with upstream ``master``.
+This procedure should be followed often, in order to keep your local ``main``
+in sync with upstream ``main``.
 
 .. _bugfix_branch:
 
@@ -204,12 +210,12 @@ Create a branch for your bugfix:
 
 .. prompt:: bash $
 
-   git checkout master
+   git checkout main 
    git checkout -b fix_1
    git push -u origin fix_1
 
-The first command (git checkout master) makes sure that the bugfix branch
-"fix_1" is created from the most recent state of the master branch of the
+The first command (git checkout main) makes sure that the bugfix branch
+"fix_1" is created from the most recent state of the main branch of the
 upstream repository. 
 
 The second command (git checkout -b fix_1) creates a "bugfix branch" called
@@ -319,7 +325,7 @@ the `Git Commit Good Practice`_ article at the `OpenStack Project Wiki`_.
 .. _`OpenStack Project Wiki`: https://wiki.openstack.org/wiki/Main_Page
 
 See also our own `Submitting Patches
-<https://github.com/ceph/ceph/blob/master/SubmittingPatches.rst>`_ document.
+<https://github.com/ceph/ceph/blob/main/SubmittingPatches.rst>`_ document.
 
 After your pull request (PR) has been opened, update the :ref:`issue-tracker`
 by adding a comment directing other contributors to your PR. The comment can be
@@ -388,7 +394,7 @@ see how it behaves on real clusters running on physical or virtual
 hardware. Tests designed for this purpose live in the `ceph/qa
 sub-directory`_ and are run via the `teuthology framework`_.
 
-.. _`ceph/qa sub-directory`: https://github.com/ceph/ceph/tree/master/qa/
+.. _`ceph/qa sub-directory`: https://github.com/ceph/ceph/tree/main/qa/
 .. _`teuthology repository`: https://github.com/ceph/teuthology
 .. _`teuthology framework`: https://github.com/ceph/teuthology
 
@@ -437,7 +443,7 @@ will need to force push your branch with:
    git push --force origin fix_1
 
 Why do we take these extra steps instead of simply adding additional commits
-the the PR?  It is best practice for a PR to consist of a single commit; this
+the PR?  It is best practice for a PR to consist of a single commit; this
 makes for clean history, eases peer review of your changes, and facilitates
 merges.  In rare circumstances it also makes it easier to cleanly revert
 changes.
@@ -496,7 +502,7 @@ Another method of generating merge commits involves using Patrick Donnelly's
 **/ceph/src/script/ptl-tool.py**.  Merge commits that have been generated by
 the **ptl-tool** have the following form::
 
-     Merge PR #36257 into master
+     Merge PR #36257 into main 
      * refs/pull/36257/head:
              client: move client_lock to _unmount()
              client: add timer_lock support
index c265e655ad6bea8850f24dc1ab48e1e8a1219f80..91ae42e9cb5145c760ed5c22c673693d169088be 100644 (file)
@@ -159,6 +159,10 @@ register an account. Registering gives you a unique IRC identity and allows you
 to access channels where unregistered users have been locked out for technical
 reasons.
 
+See ``the official OFTC (Open and Free Technology Community) documentation's
+registration instructions
+<https://www.oftc.net/Services/#register-your-account>`` to learn how to
+register your IRC account.
 
 Channels
 ~~~~~~~~
@@ -187,7 +191,7 @@ file `CONTRIBUTING.rst`_ in the top-level directory of the source-code
 tree. There may be some overlap between this guide and that file.
 
 .. _`CONTRIBUTING.rst`:
-  https://github.com/ceph/ceph/blob/master/CONTRIBUTING.rst
+  https://github.com/ceph/ceph/blob/main/CONTRIBUTING.rst
 
 All newcomers are encouraged to read that file carefully.
 
@@ -289,7 +293,7 @@ See :ref:`kubernetes-dev`
 Backporting
 -----------
 
-All bugfixes should be merged to the ``master`` branch before being
+All bugfixes should be merged to the ``main`` branch before being
 backported. To flag a bugfix for backporting, make sure it has a
 `tracker issue`_ associated with it and set the ``Backport`` field to a
 comma-separated list of previous releases (e.g. "hammer,jewel") that you think
@@ -300,6 +304,36 @@ The rest (including the actual backporting) will be taken care of by the
 .. _`tracker issue`: http://tracker.ceph.com/
 .. _`Stable Releases and Backports`: http://tracker.ceph.com/projects/ceph-releases/wiki
 
+Dependabot
+----------
+
+Dependabot is a GitHub bot that scans the dependencies in the repositories for
+security vulnerabilities (CVEs). If a fix is available for a discovered CVE,
+Dependabot creates a pull request to update the dependency.
+
+Dependabot also indicates the compatibility score of the upgrade. This score is
+based on the number of CI failures that occur in other GitHub repositories
+where the fix was applied. 
+
+With some configuration, Dependabot can perform non-security updates (for
+example, it can upgrade to the latest minor version or patch version).
+
+Dependabot supports `several languages and package managers
+<https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems>`_.
+As of July 2022, the Ceph project receives alerts only from pip (based on the
+`requirements.txt` files) and npm (`package*.json`). It is possible to extend
+these alerts to git submodules, Golang, and Java. As of July 2022, there is no
+support for C++ package managers such as vcpkg, conan, C++20 modules.
+
+Many of the dependencies discovered by Dependabot will best be updated
+elsewhere than the Ceph Github repository (distribution packages, for example,
+will be a better place to update some of the dependencies). Nonetheless, the
+list of new and existing vulnerabilities generated by Dependabot will be
+useful.
+
+`Here is an example of a Dependabot pull request.
+<https://github.com/ceph/ceph/pull/46998>`_
+
 Guidance for use of cluster log
 -------------------------------
 
index 076e5b62a7e8913b9bdc22234e2c41404c681574..36e10fc8440b3c234f646ca0b0e8d2b1a35c63b1 100644 (file)
@@ -18,10 +18,10 @@ What ?
 Where ?
 ^^^^^^^
 
-Features are merged to the *master* branch. Bug fixes should be merged to the
+Features are merged to the *main* branch. Bug fixes should be merged to the
 corresponding named branch (e.g. *nautilus* for 14.0.z, *pacific* for 16.0.z,
 etc.). However, this is not mandatory - bug fixes and documentation
-enhancements can be merged to the *master* branch as well, since the *master*
+enhancements can be merged to the *main* branch as well, since the *main*
 branch is itself occasionally merged to the named branch during the development
 releases phase. In either case, if a bug fix is important it can also be
 flagged for backport to one or more previous stable releases.
@@ -32,16 +32,16 @@ When ?
 After each stable release, candidate branches for previous releases enter
 phase 2 (see below).  For example: the *jewel* named branch was created when
 the *infernalis* release candidates entered phase 2. From this point on,
-*master* was no longer associated with *infernalis*. After he named branch of
-the next stable release is created, *master* will be occasionally merged into
+*main* was no longer associated with *infernalis*. After he named branch of
+the next stable release is created, *main* will be occasionally merged into
 it.
 
 Branch merges
 ^^^^^^^^^^^^^
 
-* The latest stable release branch is merged periodically into master.
-* The master branch is merged periodically into the branch of the stable release.
-* The master is merged into the stable release branch
+* The latest stable release branch is merged periodically into main.
+* The main branch is merged periodically into the branch of the stable release.
+* The main is merged into the stable release branch
   immediately after each development (x.0.z) release.
 
 Stable release candidates (i.e. x.1.z) phase 1
@@ -56,12 +56,12 @@ Where ?
 ^^^^^^^
 
 The stable release branch (e.g. *jewel* for 10.0.z, *luminous*
-for 12.0.z, etc.) or *master*.  Bug fixes should be merged to the named
+for 12.0.z, etc.) or *main*.  Bug fixes should be merged to the named
 branch corresponding to the stable release candidate (e.g. *jewel* for
-10.1.z) or to *master*. During this phase, all commits to *master* will be
+10.1.z) or to *main*. During this phase, all commits to *main* will be
 merged to the named branch, and vice versa. In other words, it makes
 no difference whether a commit is merged to the named branch or to
-*master* - it will make it into the next release candidate either way.
+*main* - it will make it into the next release candidate either way.
 
 When ?
 ^^^^^^
@@ -72,9 +72,9 @@ x.1.0 tag is set in the release branch.
 Branch merges
 ^^^^^^^^^^^^^
 
-* The stable release branch is merged periodically into *master*.
-* The *master* branch is merged periodically into the stable release branch.
-* The *master* branch is merged into the stable release branch
+* The stable release branch is merged periodically into *main*.
+* The *main* branch is merged periodically into the stable release branch.
+* The *main* branch is merged into the stable release branch
   immediately after each x.1.z release candidate.
 
 Stable release candidates (i.e. x.1.z) phase 2
@@ -90,7 +90,7 @@ Where ?
 
 The stable release branch (e.g. *mimic* for 13.0.z, *octopus* for 15.0.z
 ,etc.). During this phase, all commits to the named branch will be merged into
-*master*. Cherry-picking to the named branch during release candidate phase 2
+*main*. Cherry-picking to the named branch during release candidate phase 2
 is performed manually since the official backporting process begins only when
 the release is pronounced "stable".
 
@@ -102,7 +102,7 @@ After Sage Weil announces that it is time for phase 2 to happen.
 Branch merges
 ^^^^^^^^^^^^^
 
-* The stable release branch is occasionally merged into master.
+* The stable release branch is occasionally merged into main.
 
 Stable releases (i.e. x.2.z)
 ----------------------------
@@ -112,8 +112,8 @@ What ?
 
 * Bug fixes
 * Features are sometime accepted
-* Commits should be cherry-picked from *master* when possible
-* Commits that are not cherry-picked from *master* must pertain to a bug unique to
+* Commits should be cherry-picked from *main* when possible
+* Commits that are not cherry-picked from *main* must pertain to a bug unique to
   the stable release
 * See also the `backport HOWTO`_ document
 
index eb2cfe35501171ccf5b4e5d687f5550b58be2600..88e350c862f1df94b67f7f47b281ebb3b4c90cdb 100644 (file)
@@ -164,7 +164,7 @@ Ceph. This profile is enabled by default.
 +------------------------+-------------+--------+-------+
 | background recovery    | 25%         | 1      | 100%  |
 +------------------------+-------------+--------+-------+
-| background best effort | 25%         | 1      | MAX   |
+| background best effort | 25%         | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 balanced
@@ -182,7 +182,7 @@ no competing services.
 +------------------------+-------------+--------+-------+
 | background recovery    | 40%         | 1      | 150%  |
 +------------------------+-------------+--------+-------+
-| background best effort | 20%         | 1      | MAX   |
+| background best effort | 20%         | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 high_recovery_ops
@@ -200,7 +200,7 @@ recoveries during non-peak hours.
 +------------------------+-------------+--------+-------+
 | background recovery    | 60%         | 2      | 200%  |
 +------------------------+-------------+--------+-------+
-| background best effort | 1 (MIN)     | 1      | MAX   |
+| background best effort | 1 (MIN)     | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 custom
index 5a1a316af881636570c0ef63990484422f5d5acc..3750759b846b57fb2ab5726c7577df7a787ea081 100644 (file)
   Ceph Release Process
 ======================
 
-1. Build environment
-====================
+Prerequisites
+=============
 
-There are multiple build environments, debian based packages are built via pbuilder for multiple distributions.  The build hosts are listed in the ``deb_hosts`` file, and the list of distributions are in ``deb_dist``.  All distributions are build on each of the build hosts.  Currently there is 1 64 bit and 1 32 bit build host.
+Signing Machine
+---------------
+The signing machine is a virtual machine in the `Sepia lab
+<https://wiki.sepia.ceph.com/doku.php?id=start>`_. SSH access to the signing
+machine is limited to the usual Infrastructure Admins along with a few other
+component leads (e.g., nfs-ganesha, ceph-iscsi).
 
-The RPM based packages are built natively, so one distribution per build host.  The list of hosts is found in ``rpm_hosts``.
+The ``ubuntu`` user on the machine has some `build scripts <https://github.com/ceph/ceph-build/tree/main/scripts>`_ that help with pulling, pushing, and signing packages.
 
-Prior to building, it's necessary to update the pbuilder seed tarballs::
+The GPG signing key permanently lives on a `Nitrokey Pro <https://shop.nitrokey.com/shop/product/nkpr2-nitrokey-pro-2-3>`_ and is passed through to the VM via RHV. This helps to ensure that the key cannot be exported or leave the datacenter in any way.
 
-    ./update_all_pbuilders.sh
+New Major Releases
+------------------
+For each new major (alphabetical) release, you must create one ``ceph-release`` RPM for each RPM repo (e.g., one for el8 and one for el9). `chacra <https://github.com/ceph/chacra>`_ is a python service we use to store DEB and RPM repos. The chacra repos are configured to include this ceph-release RPM, but it must be built separately. You must make sure that chacra is properly configured to include this RPM for each particular release.
 
-2. Setup keyring for signing packages
-=====================================
+1. Update chacra so it is aware of the new Ceph release.  See `this PR <https://github.com/ceph/chacra/pull/219>`_ for an example.
+2. Redeploy chacra (e.g., ``ansible-playbook chacra.ceph.com.yml``)
+3. Run https://jenkins.ceph.com/view/all/job/ceph-release-rpm/
 
-::
+Summarized build process
+========================
 
-    export GNUPGHOME=<path to keyring dir>
+1. QE finishes testing and finds a stopping point.  That commit is pushed to the ``$release-release`` branch in ceph.git (e.g., ``quincy-release``).  This allows work to continue in the working ``$release`` branch without having to freeze it during the release process.
+2. The Ceph Council approves and notifies the "Build Lead".
+3. The "Build Lead" starts the `Jenkins multijob <https://jenkins.ceph.com/view/all/job/ceph>`_, which triggers all builds.
+4. Packages are pushed to chacra.ceph.com.
+5. Packages are pulled from chacra.ceph.com to the Signer VM.
+6. Packages are signed.
+7. Packages are pushed to download.ceph.com.
+8. Release containers are built and pushed to quay.io.
 
-    # verify it's accessible
-    gpg --list-keys
+Hotfix Release Process Deviation
+--------------------------------
 
-The release key should be present::
+A hotfix release has a couple differences.
 
-  pub   4096R/17ED316D 2012-05-20
-  uid   Ceph Release Key <sage@newdream.net>
+1. Check out the most recent tag. For example, if we're releasing a hotfix on top of 17.2.3, ``git checkout -f -B quincy-release origin/v17.2.3``
+2. ``git cherry-pick -x`` the necessary hotfix commits
+3. ``git push -f origin quincy-release``
+4. Notify the "Build Lead" to start the build.
+5. The "Build Lead" should set ``RELEASE_TYPE=HOTFIX`` instead of ``STABLE``.
 
+Security Release Process Deviation
+----------------------------------
 
-3. Set up build area
-====================
+A security/CVE release is similar to a hotfix release with two differences:
 
-Clone the ceph and ceph-build source trees::
+    1. The fix should be pushed to the `ceph-private <https://github.com/ceph/ceph-private>`_ repo instead of ceph.git (requires GitHub Admin Role).
+    2. The tags (e.g., v17.2.4) must be manually pushed to ceph.git by the "Build Lead."
 
-    git clone http://github.com/ceph/ceph.git
-    git clone http://github.com/ceph/ceph-build.git
+1. Check out the most recent tag. For example, if we're releasing a security fix on top of 17.2.3, ``git checkout -f -B quincy-release origin/v17.2.3``
+2. ``git cherry-pick -x`` the necessary security fix commits
+3. ``git remote add security git@github.com:ceph/ceph-private.git``
+4. ``git push -f security quincy-release``
+5. Notify the "Build Lead" to start the build.
+6. The "Build Lead" should set ``RELEASE_TYPE=SECURITY`` instead of ``STABLE``.
+7. Finally, the `ceph-tag <https://github.com/ceph/ceph-build/blob/main/ansible/roles/ceph-release/tasks/push.yml>`_ steps need to be manually run by the "Build Lead" as close to the Announcement time as possible::
 
-In the ceph source directory, checkout next branch (for point releases use the {codename} branch)::
+    # Example using quincy pretending 17.2.4 is the security release version
+    # Add the ceph-releases repo (also requires GitHub Admin Role). The `ceph-setup <https://jenkins.ceph.com/job/ceph-setup>`_ job will have already created and pushed the tag to ceph-releases.git.
+    git remote add releases git@github.com:ceph/ceph-releases.git
+    git fetch --all
+    # Check out the version commit
+    git checkout -f -B quincy-release releases/quincy-release
+    git push -f origin quincy-release
+    git push origin v17.2.4
+    # Now create a Pull Request of quincy-release targeting quincy to merge the version commit and security fixes back into the quincy branch
 
-    git checkout next
+1. Preparing the release branch
+===============================
 
-Checkout the submodules::
+Once QE has determined a stopping point in the working (e.g., ``quincy``) branch, that commit should be pushed to the corresponding ``quincy-release`` branch.
 
-    git submodule update --force --init --recursive
+Notify the "Build Lead" that the release branch is ready.
 
-4.  Update Build version numbers
-================================
-
-Substitute the ceph release number where indicated below by the string ``0.xx``.
-
-Edit configure.ac and update the version number. Example diff::
-
-       -AC_INIT([ceph], [0.54], [ceph-devel@vger.kernel.org])
-       +AC_INIT([ceph], [0.55], [ceph-devel@vger.kernel.org])
-Update the version number in the debian change log::
-
-       DEBEMAIL user@host dch -v 0.xx-1
-
-Commit the changes::
-
-       git commit -a
-
-Tag the release::
-
-       ../ceph-build/tag-release v0.xx
-
-
-5. Create Makefiles
-===================
-
-The actual configure options used to build packages are in the
-``ceph.spec.in`` and ``debian/rules`` files.  At this point we just
-need to create a Makefile.::
-
-       ./do_autogen.sh
-
-
-6. Run the release scripts
-==========================
-
-This creates tarballs and copies them, with other needed files to
-the build hosts listed in deb_hosts and rpm_hosts, runs a local build
-script, then rsyncs the results back to the specified release directory.::
-
-       ../ceph-build/do_release.sh /tmp/release
-
-
-7. Create RPM Repo
-==================
-
-Copy the rpms to the destination repo::
-
-       mkdir /tmp/rpm-repo
-       ../ceph-build/push_to_rpm_repo.sh /tmp/release /tmp/rpm-repo 0.xx
-
-Next add any additional rpms to the repo that are needed such as leveldb.
-See RPM Backports section
+2. Starting the build
+=====================
 
-Finally, sign the rpms and build the repo indexes::
+We'll use a stable/regular 15.2.17 release of Octopus as an example throughout this document.
 
-  ../ceph-build/sign_and_index_rpm_repo.sh /tmp/release /tmp/rpm-repo 0.xx
+1. Browse to https://jenkins.ceph.com/view/all/job/ceph/build?delay=0sec
+2. Log in with GitHub OAuth
+3. Set the parameters as necessary::
 
+    BRANCH=octopus
+    TAG=checked
+    VERSION=15.2.17
+    RELEASE_TYPE=STABLE
+    ARCHS=x86_64 arm64
 
-8. Create Debian repo
-=====================
+4. Use https://docs.ceph.com/en/latest/start/os-recommendations/?highlight=debian#platforms to determine the ``DISTROS`` parameter.  For example,
 
-The key-id used below is the id of the ceph release key from step 2::
+    +-------------------+-------------------------------------------+
+    | Release           | Distro Codemap                            |
+    +===================+===========================================+
+    | octopus (15.X.X)  | ``focal bionic centos7 centos8 buster``   |
+    +-------------------+-------------------------------------------+
+    | pacific (16.X.X)  | ``focal bionic centos8 buster bullseye``  |
+    +-------------------+-------------------------------------------+
+    | quincy (17.X.X)   | ``focal centos8 centos9 bullseye``        |
+    +-------------------+-------------------------------------------+
 
-       mkdir /tmp/debian-repo
-       ../ceph-build/gen_reprepro_conf.sh /tmp/debian-repo key-id
-       ../ceph-build/push_to_deb_repo.sh /tmp/release /tmp/debian-repo 0.xx main
+5. Click ``Build``.
 
+3. Release Notes
+================
 
-Next add any addition debian packages that are needed such as leveldb.
-See the Debian Backports section below.
+Packages take hours to build. Use those hours to create the Release Notes and Announcements:
 
-Debian packages are signed when added to the repo, so no further action is
-needed.
+1. ceph.git Release Notes (e.g., `v15.2.17's ceph.git (docs.ceph.com) PR <https://github.com/ceph/ceph/pull/47198>`_)
+2. ceph.io Release Notes (e.g., `v15.2.17's ceph.io.git (www.ceph.io) PR <https://github.com/ceph/ceph.io/pull/427>`_)
+3. E-mail announcement
 
+See `the Ceph Tracker wiki page that explains how to write the release notes <https://tracker.ceph.com/projects/ceph-releases/wiki/HOWTO_write_the_release_notes>`_. 
 
-9.  Push repos to ceph.org
-==========================
+4. Signing and Publishing the Build
+===================================
 
-For a development release::
+#. Obtain the sha1 of the version commit from the `build job <https://jenkins.ceph.com/view/all/job/ceph>`_ or the ``sha1`` file created by the `ceph-setup <https://jenkins.ceph.com/job/ceph-setup/>`_ job.
 
-       rcp ceph-0.xx.tar.bz2 ceph-0.xx.tar.gz \
-            ceph_site@ceph.com:ceph.com/downloads/.
-       rsync -av /tmp/rpm-repo/0.xx/ ceph_site@ceph.com:ceph.com/rpm-testing
-       rsync -av /tmp/debian-repo/ ceph_site@ceph.com:ceph.com/debian-testing
+#. Download the packages from chacra.ceph.com to the signing virtual machine. These packages get downloaded to ``/opt/repos`` where the `Sepia Lab Long Running (Ceph) Cluster <https://wiki.sepia.ceph.com/doku.php?id=services:longrunningcluster>`_ is mounted.
 
-For a stable release, replace {CODENAME} with the release codename (e.g., ``argonaut`` or ``bobtail``)::
+   .. prompt:: bash $
 
-        rcp ceph-0.xx.tar.bz2 \
-            ceph_site@ceph.com:ceph.com/downloads/ceph-0.xx.tar.bz2
-        rcp ceph-0.xx.tar.gz  \
-            ceph_site@ceph.com:ceph.com/downloads/ceph-0.xx.tar.gz
-        rsync -av /tmp/rpm-repo/0.xx/ ceph_site@ceph.com:ceph.com/rpm-{CODENAME}
-        rsync -auv /tmp/debian-repo/ ceph_site@ceph.com:ceph.com/debian-{CODENAME}
+      ssh ubuntu@signer.front.sepia.ceph.com
+      sync-pull ceph [pacific|quincy|etc] <sha1>
+   Example::
+    
+      $ sync-pull ceph octopus 8a82819d84cf884bd39c17e3236e0632ac146dc4
+      sync for: ceph octopus
+      ********************************************
+      Found the most packages (332) in ubuntu/bionic.
+      No JSON object could be decoded
+      No JSON object could be decoded
+      ubuntu@chacra.ceph.com:/opt/repos/ceph/octopus/8a82819d84cf884bd39c17e3236e0632ac146dc4/ubuntu/bionic/flavors/default/* /opt/repos/ceph/octopus-15.2.17/debian/jessie/
+      --------------------------------------------
+      receiving incremental file list
+      db/
+       db/checksums.db
+              180.22K 100%    2.23MB/s    0:00:00 (xfr#1, to-chk=463/467)
+      db/contents.cache.db
+              507.90K 100%    1.95MB/s    0:00:00 (xfr#2, to-chk=462/467)
+      db/packages.db
+      
+      etc...
+
+#. Sign the DEBs:
+
+   .. prompt:: bash
+
+      merfi gpg /opt/repos/ceph/octopus-15.2.17/debian
+
+   Example::
+
+      $ merfi gpg /opt/repos/ceph/octopus-15.2.17/debian
+      --> Starting path collection, looking for files to sign
+      --> 18 matching paths found
+      --> will sign with the following commands:
+      --> gpg --batch --yes --armor --detach-sig --output Release.gpg Release
+      --> gpg --batch --yes --clearsign --output InRelease Release
+      --> signing: /opt/repos/ceph/octopus-15.2.17/debian/jessie/dists/bionic/Release
+      --> Running command: gpg --batch --yes --armor --detach-sig --output Release.gpg Release
+      --> Running command: gpg --batch --yes --clearsign --output InRelease Release
+      --> signing: /opt/repos/ceph/octopus-15.2.17/debian/jessie/dists/focal/Release
+      --> Running command: gpg --batch --yes --armor --detach-sig --output Release.gpg Release
+      --> Running command: gpg --batch --yes --clearsign --output InRelease Release
+      
+      etc...
+
+#. Sign the RPMs:
+
+   .. prompt:: bash
+
+      sign-rpms octopus
+
+   Example::
+   
+      $ sign-rpms octopus
+      Checking packages in: /opt/repos/ceph/octopus-15.2.17/centos/7
+      signing:  /opt/repos/ceph/octopus-15.2.17/centos/7/SRPMS/ceph-release-1-1.el7.src.rpm
+      /opt/repos/ceph/octopus-15.2.17/centos/7/SRPMS/ceph-release-1-1.el7.src.rpm:
+      signing:  /opt/repos/ceph/octopus-15.2.17/centos/7/SRPMS/ceph-15.2.17-0.el7.src.rpm
+      /opt/repos/ceph/octopus-15.2.17/centos/7/SRPMS/ceph-15.2.17-0.el7.src.rpm:
+      signing:  /opt/repos/ceph/octopus-15.2.17/centos/7/noarch/ceph-mgr-modules-core-15.2.17-0.el7.noarch.rpm
+   
+      etc...
+
+5. Publish the packages to download.ceph.com:
+
+   .. prompt:: bash $
+
+      sync-push octopus
+
+5. Build Containers
+===================
 
-10. Update Git
-==============
+Start the following two jobs:
 
-Point release
--------------
+#. https://2.jenkins.ceph.com/job/ceph-container-build-ceph-base-push-imgs/
+#. https://2.jenkins.ceph.com/job/ceph-container-build-ceph-base-push-imgs-arm64/
 
-For point releases just push the version number update to the
-branch and the new tag::
+6. Announce the Release
+=======================
 
-    git push origin {codename}
-    git push origin v0.xx
+Version Commit PR
+-----------------
 
-Development and Stable releases
--------------------------------
+The `ceph-tag Jenkins job <https://jenkins.ceph.com/job/ceph-tag>`_ creates a Pull Request in ceph.git that targets the release branch.
 
-For a development release, update tags for ``ceph.git``::
+If this was a regular release (not a hotfix release or a security release), the only commit in that Pull Request should be the version commit.  For example, see `v15.2.17's version commit PR <https://github.com/ceph/ceph/pull/47520>`_. 
 
-    git push origin v0.xx
-    git push origin HEAD:last
-    git checkout master
-    git merge next
-    git push origin master
-    git push origin HEAD:next
+Request a review and then merge the Pull Request.
 
-Similarly, for a development release, for both ``teuthology.git`` and ``ceph-qa-suite.git``::
+Announcing
+----------
 
-    git checkout master
-    git reset --hard origin/master
-    git branch -f last origin/next
-    git push -f origin last
-    git push -f origin master:next
+Publish the Release Notes on ceph.io before announcing the release by email, because the e-mail announcement references the ceph.io blog post.
index cca7031cb8db9a6096d2f9eb9393b404b62fed87..b9323c452648e5b6f4775a9f6bb0c62eaf68c3e9 100644 (file)
@@ -5,6 +5,13 @@
 Ceph uniquely delivers **object, block, and file storage in one unified
 system**.
 
+.. warning:: 
+
+   :ref:`If this is your first time using Ceph, read the "Basic Workflow" 
+   page in the Ceph Developer Guide to learn how to contribute to the 
+   Ceph project. (Click anywhere in this paragraph to read the "Basic 
+   Workflow" page of the Ceph Developer Guide.) <basic workflow dev guide>`.
+
 .. container:: columns-3
 
    .. container:: column
index ebcc3a6a2719bfafd7a73306d0ad6c931505f6e0..b34d5dc5281b11777dac7cfdc67bd67643b5aa10 100644 (file)
@@ -194,6 +194,17 @@ Arguments:
 * [--skip-firewalld]           Do not configure firewalld
 * [--skip-pull]                do not pull the latest image before adopting
 
+Configuration:
+
+When starting the shell, cephadm looks for configuration in the following order.
+Only the first values found are used:
+
+1. An explicit, user provided path to a config file (``-c/--config`` option)
+2. Config file for daemon specified with ``--name`` parameter (``/var/lib/ceph/<fsid>/<daemon-name>/config``)
+3. ``/var/lib/ceph/<fsid>/config/ceph.conf`` if it exists
+4. The config file for a ``mon`` daemon (``/var/lib/ceph/<fsid>/mon.<mon-id>/config``) if it exists
+5. Finally: fallback to the default file ``/etc/ceph/ceph.conf``
+
 
 bootstrap
 ---------
index 654633c7568038565dd750694cb33acf4409cfeb..c3719cd36fcd8fa48c0233b72600676547cdd6b6 100644 (file)
@@ -43,18 +43,6 @@ Descriptions of fields
 
    cap hit rate
 
-.. describe:: rlat
-
-   read latency
-
-.. describe:: wlat
-
-   write latency
-
-.. describe:: mlat
-
-   metadata latency
-
 .. describe:: dlease
 
    dentry lease rate
@@ -95,6 +83,29 @@ Descriptions of fields
 
    speed of write IOs compared with the last refresh
 
+.. describe:: rlatavg
+
+   average read latency
+
+.. describe:: rlatsd
+
+   standard deviation (variance) for read latency
+
+.. describe:: wlatavg
+
+   average write latency
+
+.. describe:: wlatsd
+
+   standard deviation (variance) for write latency
+
+.. describe:: mlatavg
+
+   average metadata latency
+
+.. describe:: mlatsd
+
+   standard deviation (variance) for metadata latency
 
 Availability
 ============
index 27b176e1ba70a4d0f2af71c874f78eae50390fa5..28ab9dcf9e129785a702281e94ddd70e37028d78 100644 (file)
@@ -830,7 +830,8 @@ Per mapping (block device) `rbd device map` options:
 * alloc_size - Minimum allocation unit of the underlying OSD object store
   backend (since 5.1, default is 64K bytes).  This is used to round off and
   drop discards that are too small.  For bluestore, the recommended setting is
-  bluestore_min_alloc_size (typically 64K for hard disk drives and 16K for
+  bluestore_min_alloc_size (currently set to 4K for all types of drives,
+  previously used to be set to 64K for hard disk drives and 16K for
   solid-state drives).  For filestore with filestore_punch_hole = false, the
   recommended setting is image object size (typically 4M).
 
index 5bfcced4c240d071a18acad01ff587059b85c5e8..3f3e92520e87b21c7aeb567a7f4b2d8e0a76ab52 100644 (file)
@@ -215,9 +215,11 @@ If you're building Ceph from source and want to start the dashboard from your
 development environment, please see the files ``README.rst`` and ``HACKING.rst``
 in the source directory ``src/pybind/mgr/dashboard``.
 
-Within a running Ceph cluster, the Ceph Dashboard is enabled with::
+Within a running Ceph cluster, the Ceph Dashboard is enabled with:
 
-  $ ceph mgr module enable dashboard
+.. prompt:: bash $
+
+   ceph mgr module enable dashboard
 
 Configuration
 -------------
@@ -230,9 +232,11 @@ SSL/TLS Support
 All HTTP connections to the dashboard are secured with SSL/TLS by default.
 
 To get the dashboard up and running quickly, you can generate and install a
-self-signed certificate::
+self-signed certificate:
+
+.. prompt:: bash $
 
-  $ ceph dashboard create-self-signed-cert
+   ceph dashboard create-self-signed-cert
 
 Note that most web browsers will complain about self-signed certificates
 and require explicit confirmation before establishing a secure connection to the
@@ -241,28 +245,36 @@ dashboard.
 To properly secure a deployment and to remove the warning, a
 certificate that is issued by a certificate authority (CA) should be used.
 
-For example, a key pair can be generated with a command similar to::
+For example, a key pair can be generated with a command similar to:
 
-  $ openssl req -new -nodes -x509 \
-    -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \
-    -keyout dashboard.key -out dashboard.crt -extensions v3_ca
+.. prompt:: bash $
+
+   openssl req -new -nodes -x509 \
+   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \
+   -keyout dashboard.key -out dashboard.crt -extensions v3_ca
 
 The ``dashboard.crt`` file should then be signed by a CA. Once that is done, you
-can enable it for Ceph manager instances by running the following commands::
+can enable it for Ceph manager instances by running the following commands:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-ssl-certificate -i dashboard.crt
-  $ ceph dashboard set-ssl-certificate-key -i dashboard.key
+   ceph dashboard set-ssl-certificate -i dashboard.crt
+   ceph dashboard set-ssl-certificate-key -i dashboard.key
 
 If unique certificates are desired for each manager instance,
 the name of the instance can be included as follows (where ``$name`` is the name
-of the ``ceph-mgr`` instance, usually the hostname)::
+of the ``ceph-mgr`` instance, usually the hostname):
 
-  $ ceph dashboard set-ssl-certificate $name -i dashboard.crt
-  $ ceph dashboard set-ssl-certificate-key $name -i dashboard.key
+.. prompt:: bash $
 
-SSL can also be disabled by setting this configuration value::
+   ceph dashboard set-ssl-certificate $name -i dashboard.crt
+   ceph dashboard set-ssl-certificate-key $name -i dashboard.key
 
-  $ ceph config set mgr mgr/dashboard/ssl false
+SSL can also be disabled by setting this configuration value:
+
+.. prompt:: bash $
+
+   ceph config set mgr mgr/dashboard/ssl false
 
 This might be useful if the dashboard will be running behind a proxy which does
 not support SSL for its upstream servers or other situations where SSL is not
@@ -279,10 +291,12 @@ wanted or required. See :ref:`dashboard-proxy-configuration` for more details.
   You must restart Ceph manager processes after changing the SSL
   certificate and key. This can be accomplished by either running ``ceph mgr
   fail mgr`` or by disabling and re-enabling the dashboard module (which also
-  triggers the manager to respawn itself)::
+  triggers the manager to respawn itself):
+  
+  .. prompt:: bash $
 
-    $ ceph mgr module disable dashboard
-    $ ceph mgr module enable dashboard
+     ceph mgr module disable dashboard
+     ceph mgr module enable dashboard
 
 .. _dashboard-host-name-and-port:
 
@@ -298,19 +312,23 @@ If no specific address has been configured, the web app will bind to ``::``,
 which corresponds to all available IPv4 and IPv6 addresses.
 
 These defaults can be changed via the configuration key facility on a
-cluster-wide level (so they apply to all manager instances) as follows::
+cluster-wide level (so they apply to all manager instances) as follows:
+
+.. prompt:: bash $
 
-  $ ceph config set mgr mgr/dashboard/server_addr $IP
-  $ ceph config set mgr mgr/dashboard/server_port $PORT
-  $ ceph config set mgr mgr/dashboard/ssl_server_port $PORT
+   ceph config set mgr mgr/dashboard/server_addr $IP
+   ceph config set mgr mgr/dashboard/server_port $PORT
+   ceph config set mgr mgr/dashboard/ssl_server_port $PORT
 
 Since each ``ceph-mgr`` hosts its own instance of the dashboard, it may be
 necessary to configure them separately. The IP address and port for a specific
-manager instance can be changed with the following commands::
+manager instance can be changed with the following commands:
 
-  $ ceph config set mgr mgr/dashboard/$name/server_addr $IP
-  $ ceph config set mgr mgr/dashboard/$name/server_port $PORT
-  $ ceph config set mgr mgr/dashboard/$name/ssl_server_port $PORT
+.. prompt:: bash $
+
+   ceph config set mgr mgr/dashboard/$name/server_addr $IP
+   ceph config set mgr mgr/dashboard/$name/server_port $PORT
+   ceph config set mgr mgr/dashboard/$name/ssl_server_port $PORT
 
 Replace ``$name`` with the ID of the ceph-mgr instance hosting the dashboard.
 
@@ -329,9 +347,11 @@ you can use. For more details please refer to the `User and Role Management`_
 section.
 
 To create a user with the administrator role you can use the following
-commands::
+commands:
 
-  $ ceph dashboard ac-user-create <username> -i <file-containing-password> administrator
+.. prompt:: bash $
+
+   ceph dashboard ac-user-create <username> -i <file-containing-password> administrator
 
 Account Lock-out
 ^^^^^^^^^^^^^^^^
@@ -339,27 +359,33 @@ Account Lock-out
 It disables a user account if a user repeatedly enters the wrong credentials
 for multiple times. It is enabled by default to prevent brute-force or dictionary
 attacks. The user can get or set the default number of lock-out attempts using
-these commands respectively::
+these commands respectively:
+
+.. prompt:: bash $
 
-  $ ceph dashboard get-account-lockout-attempts
-  $ ceph dashboard set-account-lockout-attempts <value:int>
+   ceph dashboard get-account-lockout-attempts
+   ceph dashboard set-account-lockout-attempts <value:int>
 
 .. warning::
 
   This feature can be disabled by setting the default number of lock-out attempts to 0.
   However, by disabling this feature, the account is more vulnerable to brute-force or
-  dictionary based attacks. This can be disabled by::
+  dictionary based attacks. This can be disabled by:
 
-    $ ceph dashboard set-account-lockout-attempts 0
+  .. prompt:: bash $
+
+     ceph dashboard set-account-lockout-attempts 0
 
 Enable a Locked User
 ^^^^^^^^^^^^^^^^^^^^
 
 If a user account is disabled as a result of multiple invalid login attempts, then
 it needs to be manually enabled by the administrator. This can be done by the following
-command::
+command:
+
+.. prompt:: bash $
 
-  $ ceph dashboard ac-user-enable <username>
+   ceph dashboard ac-user-enable <username>
 
 Accessing the Dashboard
 ^^^^^^^^^^^^^^^^^^^^^^^
@@ -378,28 +404,36 @@ Enabling the Object Gateway Management Frontend
 
 When RGW is deployed with cephadm, the RGW credentials used by the
 dashboard will be automatically configured. You can also manually force the
-credentials to be set up with::
+credentials to be set up with:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-rgw-credentials
+   ceph dashboard set-rgw-credentials
 
 This will create an RGW user with uid ``dashboard`` for each realm in
 the system.
 
-If you've configured a custom 'admin' resource in your RGW admin API, you should set it here also::
+If you've configured a custom 'admin' resource in your RGW admin API, you should set it here also:
 
-  $ ceph dashboard set-rgw-api-admin-resource <admin_resource>
+.. prompt:: bash $
+
+   ceph dashboard set-rgw-api-admin-resource <admin_resource>
 
 If you are using a self-signed certificate in your Object Gateway setup,
 you should disable certificate verification in the dashboard to avoid refused
 connections, e.g. caused by certificates signed by unknown CA or not matching
-the host name::
+the host name:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-rgw-api-ssl-verify False
+   ceph dashboard set-rgw-api-ssl-verify False
 
 If the Object Gateway takes too long to process requests and the dashboard runs
-into timeouts, you can set the timeout value to your needs::
+into timeouts, you can set the timeout value to your needs:
 
-  $ ceph dashboard set-rest-requests-timeout <seconds>
+.. prompt:: bash $
+
+   ceph dashboard set-rest-requests-timeout <seconds>
 
 The default value is 45 seconds.
 
@@ -423,16 +457,20 @@ If the ``ceph-iscsi`` REST API is configured in HTTPS mode and its using a self-
 certificate, you need to configure the dashboard to avoid SSL certificate
 verification when accessing ceph-iscsi API.
 
-To disable API SSL verification run the following command::
+To disable API SSL verification run the following command:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-iscsi-api-ssl-verification false
+   ceph dashboard set-iscsi-api-ssl-verification false
 
-The available iSCSI gateways must be defined using the following commands::
+The available iSCSI gateways must be defined using the following commands:
 
-  $ ceph dashboard iscsi-gateway-list
-  $ # Gateway URL format for a new gateway: <scheme>://<username>:<password>@<host>[:port]
-  $ ceph dashboard iscsi-gateway-add -i <file-containing-gateway-url> [<gateway_name>]
-  $ ceph dashboard iscsi-gateway-rm <gateway_name>
+.. prompt:: bash $
+
+   ceph dashboard iscsi-gateway-list
+   # Gateway URL format for a new gateway: <scheme>://<username>:<password>@<host>[:port]
+   ceph dashboard iscsi-gateway-add -i <file-containing-gateway-url> [<gateway_name>]
+   ceph dashboard iscsi-gateway-rm <gateway_name>
 
 
 .. _dashboard-grafana:
@@ -480,9 +518,11 @@ The following process describes how to configure Grafana and Prometheus
 manually. After you have installed Prometheus, Grafana, and the Node exporter
 on appropriate hosts, proceed with the following steps.
 
-#.  Enable the Ceph Exporter which comes as Ceph Manager module by running::
+#.  Enable the Ceph Exporter which comes as Ceph Manager module by running:
+
+    .. prompt:: bash $
 
-      $ ceph mgr module enable prometheus
+       ceph mgr module enable prometheus
 
     More details can be found in the documentation of the :ref:`mgr-prometheus`.
 
@@ -524,7 +564,9 @@ on appropriate hosts, proceed with the following steps.
 #.  Add Prometheus as data source to Grafana `using the Grafana Web UI
     <https://grafana.com/docs/grafana/latest/features/datasources/add-a-data-source/>`_.
 
-#.  Install the `vonage-status-panel and grafana-piechart-panel` plugins using::
+#.  Install the `vonage-status-panel and grafana-piechart-panel` plugins using:
+
+    .. prompt:: bash $
 
       grafana-cli plugins install vonage-status-panel
       grafana-cli plugins install grafana-piechart-panel
@@ -532,16 +574,20 @@ on appropriate hosts, proceed with the following steps.
 #.  Add Dashboards to Grafana:
 
     Dashboards can be added to Grafana by importing dashboard JSON files.
-    Use the following command to download the JSON files::
+    Use the following command to download the JSON files:
 
-      wget https://raw.githubusercontent.com/ceph/ceph/master/monitoring/ceph-mixin/dashboards_out/<Dashboard-name>.json
+    .. prompt:: bash $
+
+       wget https://raw.githubusercontent.com/ceph/ceph/main/monitoring/ceph-mixin/dashboards_out/<Dashboard-name>.json
 
     You can find various dashboard JSON files `here <https://github.com/ceph/ceph/tree/
-    master/monitoring/ceph-mixin/dashboards_out>`_ .
+    main/monitoring/ceph-mixin/dashboards_out>`_.
+
+    For Example, for ceph-cluster overview you can use:
 
-    For Example, for ceph-cluster overview you can use::
+    .. prompt:: bash $
 
-      wget https://raw.githubusercontent.com/ceph/ceph/master/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
+       wget https://raw.githubusercontent.com/ceph/ceph/main/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
 
     You may also author your own dashboards.
 
@@ -577,9 +623,11 @@ After you have set up Grafana and Prometheus, you will need to configure the
 connection information that the Ceph Dashboard will use to access Grafana.
 
 You need to tell the dashboard on which URL the Grafana instance is
-running/deployed::
+running/deployed:
 
-  $ ceph dashboard set-grafana-api-url <grafana-server-url>  # default: ''
+.. prompt:: bash $
+
+   ceph dashboard set-grafana-api-url <grafana-server-url>  # default: ''
 
 The format of the URL : `<protocol>://<IP-address>:<port>`
 
@@ -596,18 +644,22 @@ The format of the URL : `<protocol>://<IP-address>:<port>`
 If you are using a self-signed certificate for Grafana,
 disable certificate verification in the dashboard to avoid refused connections,
 which can be a result of certificates signed by an unknown CA or that do not
-match the host name::
+match the host name:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-grafana-api-ssl-verify False
+   ceph dashboard set-grafana-api-ssl-verify False
 
 You can also access Grafana directly to monitor your cluster.
 
 .. note::
 
   Ceph Dashboard configuration information can also be unset. For example, to
-  clear the Grafana API URL we configured above::
+  clear the Grafana API URL we configured above:
 
-    $ ceph dashboard reset-grafana-api-url
+  .. prompt:: bash $
+
+     ceph dashboard reset-grafana-api-url
 
 Alternative URL for Browsers
 """"""""""""""""""""""""""""
@@ -633,9 +685,11 @@ This setting won't ever be changed automatically, unlike the GRAFANA_API_URL
 which is set by :ref:`cephadm` (only if cephadm is used to deploy monitoring
 services).
 
-To change the URL that is returned to the frontend issue the following command::
+To change the URL that is returned to the frontend issue the following command:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-grafana-frontend-api-url <grafana-server-url>
+   ceph dashboard set-grafana-frontend-api-url <grafana-server-url>
 
 If no value is set for that option, it will simply fall back to the value of the
 GRAFANA_API_URL option. If set, it will instruct the browser to use this URL to
@@ -659,9 +713,11 @@ process can be performed by an existing Identity Provider (IdP).
   Please ensure that this library is installed on your system, either by using
   your distribution's package management or via Python's `pip` installer.
 
-To configure SSO on Ceph Dashboard, you should use the following command::
+To configure SSO on Ceph Dashboard, you should use the following command:
+
+.. prompt:: bash $
 
-  $ ceph dashboard sso setup saml2 <ceph_dashboard_base_url> <idp_metadata> {<idp_username_attribute>} {<idp_entity_id>} {<sp_x_509_cert>} {<sp_private_key>}
+   ceph dashboard sso setup saml2 <ceph_dashboard_base_url> <idp_metadata> {<idp_username_attribute>} {<idp_entity_id>} {<sp_x_509_cert>} {<sp_private_key>}
 
 Parameters:
 
@@ -675,25 +731,33 @@ Parameters:
 
   The issuer value of SAML requests will follow this pattern:  **<ceph_dashboard_base_url>**/auth/saml2/metadata
 
-To display the current SAML 2.0 configuration, use the following command::
+To display the current SAML 2.0 configuration, use the following command:
 
-  $ ceph dashboard sso show saml2
+.. prompt:: bash $
+
+   ceph dashboard sso show saml2
 
 .. note::
 
   For more information about `onelogin_settings`, please check the `onelogin documentation <https://github.com/onelogin/python-saml>`_.
 
-To disable SSO::
+To disable SSO:
+
+.. prompt:: bash $
+
+   ceph dashboard sso disable
+
+To check if SSO is enabled:
 
-  $ ceph dashboard sso disable
+.. prompt:: bash $
 
-To check if SSO is enabled::
+   ceph dashboard sso status
 
-  $ ceph dashboard sso status
+To enable SSO:
 
-To enable SSO::
+.. prompt:: bash $
 
-  $ ceph dashboard sso enable saml2
+   ceph dashboard sso enable saml2
 
 .. _dashboard-alerting:
 
@@ -768,25 +832,32 @@ in order to manage silences.
 
   #. Update a silence (which will recreate and expire it (default Alertmanager behaviour))
 
-  To use it, specify the host and port of the Alertmanager server::
+  To use it, specify the host and port of the Alertmanager server:
+  
+  .. prompt:: bash $
 
-    $ ceph dashboard set-alertmanager-api-host <alertmanager-host:port>  # default: ''
+     ceph dashboard set-alertmanager-api-host <alertmanager-host:port>  # default: ''
 
-  For example::
+  For example:
+  
+  .. prompt:: bash $
 
-    $ ceph dashboard set-alertmanager-api-host 'http://localhost:9093'
+     ceph dashboard set-alertmanager-api-host 'http://localhost:9093'
 
   To be able to see all configured alerts, you will need to configure the URL to
   the Prometheus API. Using this API, the UI will also help you in verifying
   that a new silence will match a corresponding alert.
 
-  ::
+  
+  .. prompt:: bash $
 
-    $ ceph dashboard set-prometheus-api-host <prometheus-host:port>  # default: ''
+     ceph dashboard set-prometheus-api-host <prometheus-host:port>  # default: ''
 
-  For example::
+  For example:
 
-    $ ceph dashboard set-prometheus-api-host 'http://localhost:9090'
+  .. prompt:: bash $
+
+     ceph dashboard set-prometheus-api-host 'http://localhost:9090'
 
   After setting up the hosts, refresh your browser's dashboard window or tab.
 
@@ -801,13 +872,17 @@ Alertmanager setup, you should disable certificate verification in the
 dashboard to avoid refused connections caused by certificates signed by
 an unknown CA or that do not match the host name.
 
-- For Prometheus::
+- For Prometheus:
+
+.. prompt:: bash $
+
+   ceph dashboard set-prometheus-api-ssl-verify False
 
-  $ ceph dashboard set-prometheus-api-ssl-verify False
+- For Alertmanager:
 
-- For Alertmanager::
+.. prompt:: bash $
 
-  $ ceph dashboard set-alertmanager-api-ssl-verify False
+   ceph dashboard set-alertmanager-api-ssl-verify False
 
 .. _dashboard-user-role-management:
 
@@ -823,30 +898,38 @@ following checks:
 - Is the password longer than N characters?
 - Are the old and new password the same?
 
-The password policy feature can be switched on or off completely::
+The password policy feature can be switched on or off completely:
 
-    $ ceph dashboard set-pwd-policy-enabled <true|false>
+.. prompt:: bash $
 
-The following individual checks can also be switched on or off::
+    ceph dashboard set-pwd-policy-enabled <true|false>
 
-  $ ceph dashboard set-pwd-policy-check-length-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-oldpwd-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-username-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-exclusion-list-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-complexity-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-sequential-chars-enabled <true|false>
-  $ ceph dashboard set-pwd-policy-check-repetitive-chars-enabled <true|false>
+The following individual checks can also be switched on or off:
+
+.. prompt:: bash $
+
+  ceph dashboard set-pwd-policy-check-length-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-oldpwd-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-username-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-exclusion-list-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-complexity-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-sequential-chars-enabled <true|false>
+  ceph dashboard set-pwd-policy-check-repetitive-chars-enabled <true|false>
 
 Additionally the following options are available to configure password
 policy.
 
-- Minimum password length (defaults to 8)::
+- Minimum password length (defaults to 8):
+
+.. prompt:: bash $
+
+   ceph dashboard set-pwd-policy-min-length <N>
 
-  $ ceph dashboard set-pwd-policy-min-length <N>
+- Minimum password complexity (defaults to 10):
 
-- Minimum password complexity (defaults to 10)::
+  .. prompt:: bash $
 
-  $ ceph dashboard set-pwd-policy-min-complexity <N>
+     ceph dashboard set-pwd-policy-min-complexity <N>
 
   Password complexity is calculated by classifying each character in
   the password. The complexity count starts by 0. A character is rated by
@@ -859,9 +942,11 @@ policy.
   - Increase by 5 if the character has not been classified by one of the previous rules.
 
 - A list of comma separated words that are not allowed to be used in a
-  password::
+  password:
 
-  $ ceph dashboard set-pwd-policy-exclusion-list <word>[,...]
+  .. prompt:: bash $
+
+     ceph dashboard set-pwd-policy-exclusion-list <word>[,...]
 
 
 User Accounts
@@ -879,44 +964,60 @@ available to all ``ceph-mgr`` instances.
 
 We provide a set of CLI commands to manage user accounts:
 
-- *Show User(s)*::
+- *Show User(s)*:
+
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-user-show [<username>]
+     ceph dashboard ac-user-show [<username>]
 
-- *Create User*::
+- *Create User*:
+  
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-user-create [--enabled] [--force-password] [--pwd_update_required] <username> -i <file-containing-password> [<rolename>] [<name>] [<email>] [<pwd_expiration_date>]
+     ceph dashboard ac-user-create [--enabled] [--force-password] [--pwd_update_required] <username> -i <file-containing-password> [<rolename>] [<name>] [<email>] [<pwd_expiration_date>]
 
   To bypass password policy checks use the `force-password` option.
   Add the option `pwd_update_required` so that a newly created user has
   to change their password after the first login.
 
-- *Delete User*::
+- *Delete User*:
+
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-user-delete <username>
+     ceph dashboard ac-user-delete <username>
 
-- *Change Password*::
+- *Change Password*:
 
-  $ ceph dashboard ac-user-set-password [--force-password] <username> -i <file-containing-password>
+  .. prompt:: bash $
 
-- *Change Password Hash*::
+     ceph dashboard ac-user-set-password [--force-password] <username> -i <file-containing-password>
 
-  $ ceph dashboard ac-user-set-password-hash <username> -i <file-containing-password-hash>
+- *Change Password Hash*:
+
+  .. prompt:: bash $
+
+     ceph dashboard ac-user-set-password-hash <username> -i <file-containing-password-hash>
 
   The hash must be a bcrypt hash and salt, e.g. ``$2b$12$Pt3Vq/rDt2y9glTPSV.VFegiLkQeIpddtkhoFetNApYmIJOY8gau2``.
   This can be used to import users from an external database.
 
-- *Modify User (name, and email)*::
+- *Modify User (name, and email)*:
+
+  .. prompt:: bash $
+
+     ceph dashboard ac-user-set-info <username> <name> <email>
 
-  $ ceph dashboard ac-user-set-info <username> <name> <email>
+- *Disable User*:
 
-- *Disable User*::
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-user-disable <username>
+     ceph dashboard ac-user-disable <username>
 
-- *Enable User*::
+- *Enable User*:
 
-  $ ceph dashboard ac-user-enable <username>
+  .. prompt:: bash $
+
+     ceph dashboard ac-user-enable <username>
 
 User Roles and Permissions
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -991,42 +1092,58 @@ The list of system roles are:
 - **pool-manager**: allows full permissions for the *pool* scope.
 - **cephfs-manager**: allows full permissions for the *cephfs* scope.
 
-The list of available roles can be retrieved with the following command::
+The list of available roles can be retrieved with the following command:
+
+.. prompt:: bash $
 
-  $ ceph dashboard ac-role-show [<rolename>]
+   ceph dashboard ac-role-show [<rolename>]
 
 You can also use the CLI to create new roles. The available commands are the
 following:
 
-- *Create Role*::
+- *Create Role*:
+
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-role-create <rolename> [<description>]
+     ceph dashboard ac-role-create <rolename> [<description>]
 
-- *Delete Role*::
+- *Delete Role*:
 
-  $ ceph dashboard ac-role-delete <rolename>
+  .. prompt:: bash $
 
-- *Add Scope Permissions to Role*::
+     ceph dashboard ac-role-delete <rolename>
 
-  $ ceph dashboard ac-role-add-scope-perms <rolename> <scopename> <permission> [<permission>...]
+- *Add Scope Permissions to Role*:
 
-- *Delete Scope Permission from Role*::
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-role-del-scope-perms <rolename> <scopename>
+     ceph dashboard ac-role-add-scope-perms <rolename> <scopename> <permission> [<permission>...]
+
+- *Delete Scope Permission from Role*:
+
+  .. prompt:: bash $
+
+     ceph dashboard ac-role-del-scope-perms <rolename> <scopename>
 
 To assign roles to users, the following commands are available:
 
-- *Set User Roles*::
+- *Set User Roles*:
+
+  .. prompt:: bash $
+
+     ceph dashboard ac-user-set-roles <username> <rolename> [<rolename>...]
+
+- *Add Roles To User*:
 
-  $ ceph dashboard ac-user-set-roles <username> <rolename> [<rolename>...]
+  .. prompt:: bash $
 
-- *Add Roles To User*::
+     ceph dashboard ac-user-add-roles <username> <rolename> [<rolename>...]
 
-  $ ceph dashboard ac-user-add-roles <username> <rolename> [<rolename>...]
+- *Delete Roles from User*:
 
-- *Delete Roles from User*::
+  .. prompt:: bash $
 
-  $ ceph dashboard ac-user-del-roles <username> <rolename> [<rolename>...]
+     ceph dashboard ac-user-del-roles <username> <rolename> [<rolename>...]
 
 
 Example of User and Custom Role Creation
@@ -1036,19 +1153,25 @@ In this section we show a complete example of the commands that
 create a user account that can manage RBD images, view and create Ceph pools,
 and has read-only access to other scopes.
 
-1. *Create the user*::
+1. *Create the user*:
 
-   $ ceph dashboard ac-user-create bob -i <file-containing-password>
+   .. prompt:: bash $
 
-2. *Create role and specify scope permissions*::
+      ceph dashboard ac-user-create bob -i <file-containing-password>
 
-   $ ceph dashboard ac-role-create rbd/pool-manager
-   $ ceph dashboard ac-role-add-scope-perms rbd/pool-manager rbd-image read create update delete
-   $ ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read create
+2. *Create role and specify scope permissions*:
 
-3. *Associate roles to user*::
+   .. prompt:: bash $
 
-   $ ceph dashboard ac-user-set-roles bob rbd/pool-manager read-only
+      ceph dashboard ac-role-create rbd/pool-manager
+      ceph dashboard ac-role-add-scope-perms rbd/pool-manager rbd-image read create update delete
+      ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read create
+
+3. *Associate roles to user*:
+
+   .. prompt:: bash $
+
+      ceph dashboard ac-user-set-roles bob rbd/pool-manager read-only
 
 .. _dashboard-proxy-configuration:
 
@@ -1075,9 +1198,9 @@ you may wish to service it under a URL prefix. To get the dashboard
 to use hyperlinks that include your prefix, you can set the
 ``url_prefix`` setting:
 
-::
+.. prompt:: bash $
 
-  ceph config set mgr mgr/dashboard/url_prefix $PREFIX
+   ceph config set mgr mgr/dashboard/url_prefix $PREFIX
 
 so you can access the dashboard at ``http://$IP:$PORT/$PREFIX/``.
 
@@ -1088,21 +1211,27 @@ If the dashboard is behind a load-balancing proxy like `HAProxy <https://www.hap
 you might want to disable redirection to prevent situations in which
 internal (unresolvable) URLs are published to the frontend client. Use the
 following command to get the dashboard to respond with an HTTP error (500 by default)
-instead of redirecting to the active dashboard::
+instead of redirecting to the active dashboard:
 
-  $ ceph config set mgr mgr/dashboard/standby_behaviour "error"
+.. prompt:: bash $
 
-To reset the setting to default redirection, use the following command::
+   ceph config set mgr mgr/dashboard/standby_behaviour "error"
 
-  $ ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
+To reset the setting to default redirection, use the following command:
+
+.. prompt:: bash $
+
+   ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
 
 Configure the error status code
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 When redirection is disabled, you may want to customize the HTTP status
-code of standby dashboards. To do so you need to run the command::
+code of standby dashboards. To do so you need to run the command:
+
+.. prompt:: bash $
 
-  $ ceph config set mgr mgr/dashboard/standby_error_status_code 503
+   ceph config set mgr mgr/dashboard/standby_error_status_code 503
 
 HAProxy example configuration
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1154,9 +1283,11 @@ Auditing API Requests
 
 The REST API can log PUT, POST and DELETE requests to the Ceph
 audit log. This feature is disabled by default, but can be enabled with the
-following command::
+following command:
 
-  $ ceph dashboard set-audit-api-enabled <true|false>
+.. prompt:: bash $
+
+   ceph dashboard set-audit-api-enabled <true|false>
 
 If enabled, the following parameters are logged per each request:
 
@@ -1166,9 +1297,11 @@ If enabled, the following parameters are logged per each request:
 * user - The name of the user, otherwise 'None'
 
 The logging of the request payload (the arguments and their values) is enabled
-by default. Execute the following command to disable this behaviour::
+by default. Execute the following command to disable this behaviour:
+
+.. prompt:: bash $
 
-  $ ceph dashboard set-audit-api-log-payload <true|false>
+   ceph dashboard set-audit-api-log-payload <true|false>
 
 A log entry may look like this::
 
@@ -1201,9 +1334,14 @@ Troubleshooting the Dashboard
 Locating the Dashboard
 ^^^^^^^^^^^^^^^^^^^^^^
 
-If you are unsure of the location of the Ceph Dashboard, run the following command::
+If you are unsure of the location of the Ceph Dashboard, run the following command:
+
+.. prompt:: bash $
+
+   ceph mgr services | jq .dashboard
+
+::
 
-    $ ceph mgr services | jq .dashboard
     "https://host:port"
 
 The command returns the URL where the Ceph Dashboard is located: ``https://<host>:<port>/``
@@ -1221,9 +1359,11 @@ Accessing the Dashboard
 If you are unable to access the Ceph Dashboard, run the following
 commands:
 
-#. Verify the Ceph Dashboard module is enabled::
+#. Verify the Ceph Dashboard module is enabled:
+
+   .. prompt:: bash $
 
-    $ ceph mgr module ls | jq .enabled_modules
+      ceph mgr module ls | jq .enabled_modules
 
    Ensure the Ceph Dashboard module is listed in the return value of the
    command. Example snipped output from the command above::
@@ -1234,42 +1374,62 @@ commands:
       "restful"
     ]
 
-#. If it is not listed, activate the module with the following command::
+#. If it is not listed, activate the module with the following command:
 
-    $ ceph mgr module enable dashboard
+   .. prompt:: bash $
+
+      ceph mgr module enable dashboard
 
 #. Check the Ceph Dashboard and/or ``ceph-mgr`` log files for any errors.
 
-   * Check if ``ceph-mgr`` log messages are written to a file by::
+   * Check if ``ceph-mgr`` log messages are written to a file by:
+     
+     .. prompt:: bash $
+
+        ceph config get mgr log_to_file
+
+     ::
 
-        $ ceph config get mgr log_to_file
         true
 
    * Get the location of the log file (it's ``/var/log/ceph/<cluster-name>-<daemon-name>.log``
-     by default)::
+     by default):
+
+     .. prompt:: bash $
+
+        ceph config get mgr log_file
+
+     ::
 
-        $ ceph config get mgr log_file
         /var/log/ceph/$cluster-$name.log
 
 #. Ensure the SSL/TSL support is configured properly:
 
-   * Check if the SSL/TSL support is enabled::
+   * Check if the SSL/TSL support is enabled:
+
+     .. prompt:: bash $
 
-       $ ceph config get mgr mgr/dashboard/ssl
+        ceph config get mgr mgr/dashboard/ssl
 
-   * If the command returns ``true``, verify a certificate exists by::
+   * If the command returns ``true``, verify a certificate exists by:
 
-       $ ceph config-key get mgr/dashboard/crt
+     .. prompt:: bash $
 
-     and::
+        ceph config-key get mgr/dashboard/crt
 
-       $ ceph config-key get mgr/dashboard/key
+     and:
+
+     .. prompt:: bash $
+
+        ceph config-key get mgr/dashboard/key
 
    * If it doesn't return ``true``, run the following command to generate a self-signed
      certificate or follow the instructions outlined in
-     :ref:`dashboard-ssl-tls-support`::
+     :ref:`dashboard-ssl-tls-support`:
+
+     .. prompt:: bash $
 
-       $ ceph dashboard create-self-signed-cert
+        ceph dashboard create-self-signed-cert
 
 
 Trouble Logging into the Dashboard
@@ -1287,24 +1447,33 @@ error, run through the procedural checks below:
    and password, and ensure that your keyboard's caps lock is not enabled by accident.
 
 #. If your user credentials are correct, but you are experiencing the same
-   error, check that the user account exists::
+   error, check that the user account exists:
 
-    $ ceph dashboard ac-user-show <username>
+   .. prompt:: bash $
+
+      ceph dashboard ac-user-show <username>
 
    This command returns your user data. If the user does not exist, it will
    print::
 
-    $ Error ENOENT: User <username> does not exist
+      Error ENOENT: User <username> does not exist
+
+#. Check if the user is enabled:
+
+   .. prompt:: bash $
 
-#. Check if the user is enabled::
+      ceph dashboard ac-user-show <username> | jq .enabled
+
+   ::
 
-    $ ceph dashboard ac-user-show <username> | jq .enabled
     true
 
    Check if ``enabled`` is set to ``true`` for your user. If not the user is
-   not enabled, run::
+   not enabled, run:
+
+   .. prompt:: bash $
 
-    $ ceph dashboard ac-user-enable <username>
+      ceph dashboard ac-user-enable <username>
 
 Please see :ref:`dashboard-user-role-management` for more information.
 
@@ -1334,9 +1503,11 @@ To enable this flag via the Ceph Dashboard, navigate from *Cluster* to *Manager
 modules*. Select *Dashboard module* and click the edit button. Click the
 *debug* checkbox and update.
 
-To enable it via the CLI, run the following command::
+To enable it via the CLI, run the following command:
 
-    $ ceph dashboard debug enable
+.. prompt:: bash $
+
+   ceph dashboard debug enable
 
 
 Setting Logging Level of Dashboard Module
@@ -1345,29 +1516,74 @@ Setting Logging Level of Dashboard Module
 Setting the logging level to debug makes the log more verbose and helpful for
 debugging.
 
-#. Increase the logging level of manager daemons::
+#. Increase the logging level of manager daemons:
+
+   .. prompt:: bash $
 
-   $ ceph tell mgr config set debug_mgr 20
+      ceph tell mgr config set debug_mgr 20
 
 #. Adjust the logging level of the Ceph Dashboard module via the Dashboard or
    CLI:
 
    * Navigate from *Cluster* to *Manager modules*. Select *Dashboard module*
      and click the edit button. Modify the ``log_level`` configuration.
-   * To adjust it via the CLI, run the following command::
+   * To adjust it via the CLI, run the following command:
 
-        $ bin/ceph config set mgr mgr/dashboard/log_level debug
+     .. prompt:: bash $
 
-#.  High log levels can result in considerable log volume, which can
+        bin/ceph config set mgr mgr/dashboard/log_level debug
+
+3. High log levels can result in considerable log volume, which can
 easily fill up your filesystem. Set a calendar reminder for an hour, a day,
 or a week in the future to revert this temporary logging increase.  This looks
-something like this::
+something like this:
 
-    $ ceph config log
-    ...
-    --- 11 --- 2020-11-07 11:11:11.960659 --- mgr.x/dashboard/log_level = debug ---
-    ...
-    $ ceph config reset 11
+   .. prompt:: bash $
+
+      ceph config log
+
+   ::
+
+      ...
+      --- 11 --- 2020-11-07 11:11:11.960659 --- mgr.x/dashboard/log_level = debug ---
+      ...
+    
+   .. prompt:: bash $
+
+      ceph config reset 11
+
+.. _centralized-logging:
+
+Enable Centralized Logging in Dashboard
+"""""""""""""""""""""""""""""""""""""""
+
+To learn more about centralized logging, see :ref:`cephadm-monitoring-centralized-logs`
+
+1. Create the Loki service on any particular host using "Create Services" option.
+
+2. Similarly create the Promtail service which will be by default deployed 
+   on all the running hosts.
+
+3. To see debug-level messages as well as info-level events, run the following command via CLI:
+
+   .. prompt:: bash $
+
+      ceph config set mgr mgr/cephadm/log_to_cluster_level debug
+
+4. To enable logging to files, run the following commands via CLI:
+
+   .. prompt:: bash $
+
+      ceph config set global log_to_file true
+      ceph config set global mon_cluster_log_to_file true
+
+5. Click on the Daemon Logs tab under Cluster -> Logs.
+
+6. You can find some pre-defined labels there on clicking the Log browser button such as filename,
+   job etc that can help you query the logs at one go.
+
+7. You can query the logs with LogQL for advanced search and perform some
+   calculations as well - https://grafana.com/docs/loki/latest/logql/.
 
 
 Reporting issues from Dashboard
@@ -1382,11 +1598,15 @@ on the issue tracker. Under the ``my account`` tab in the Ceph Issue Tracker,
 the user can see their API access key. This key is used for authentication
 when creating a new issue. To store the Ceph API access key, in the CLI run:
 
-``ceph dashboard set-issue-tracker-api-key -i <file-containing-key>``
+.. prompt:: bash $
+
+   ``ceph dashboard set-issue-tracker-api-key -i <file-containing-key>``
 
 Then on successful update, you can create an issue using:
 
-``ceph dashboard create issue <project> <tracker_type> <subject> <description>``
+.. prompt:: bash $
+
+   ``ceph dashboard create issue <project> <tracker_type> <subject> <description>``
 
 The available projects to create an issue on are:
 #. dashboard
index e11137cd258df902c97f1b195aeb37b5f585346d..883419cbf57c87458c95c3e91ee0cbb00232ffcd 100644 (file)
@@ -4,13 +4,30 @@ Debug
 ^^^^^
 
 This plugin allows to customize the behaviour of the dashboard according to the
-debug mode. It can be enabled, disabled or checked with the following command::
+debug mode. It can be enabled, disabled or checked with the following command:
+
+.. prompt:: bash $
+
+   ceph dashboard debug status
+
+::
 
-  $ ceph dashboard debug status
   Debug: 'disabled'
-  $ ceph dashboard debug enable
+
+.. prompt:: bash $
+
+   ceph dashboard debug enable
+
+::
+
   Debug: 'enabled'
-  $ ceph dashboard debug disable
+
+.. prompt:: bash $
+
+   ceph dashboard debug disable
+
+::
+
   Debug: 'disabled'
 
 By default, it's disabled. This is the recommended setting for production
index 5153e7092c80f1450cb8f75e8da6bca1d4c990a5..7c96b0faaaf5b80a230c187cc5eefd2aa75bcd62 100644 (file)
@@ -25,9 +25,14 @@ The list of features that can be enabled/disabled is:
 
 By default all features come enabled.
 
-To retrieve a list of features and their current statuses::
+To retrieve a list of features and their current statuses:
+
+.. prompt:: bash $
+
+   ceph dashboard feature status
+
+::
 
-  $ ceph dashboard feature status
   Feature 'cephfs': 'enabled'
   Feature 'iscsi': 'enabled'
   Feature 'mirroring': 'enabled'
@@ -35,9 +40,14 @@ To retrieve a list of features and their current statuses::
   Feature 'rgw': 'enabled'
   Feature 'nfs': 'enabled'
 
-To enable or disable the status of a single or multiple features::
+To enable or disable the status of a single or multiple features:
+
+.. prompt:: bash $
+
+   ceph dashboard feature disable iscsi mirroring
+
+:: 
 
-  $ ceph dashboard feature disable iscsi mirroring
   Feature 'iscsi': disabled
   Feature 'mirroring': disabled
 
index b8464e1f33a05cd223fb6421df85c3e10f6e18b4..0f9cc199a9737dc09937c89009aae2ca84319632 100644 (file)
@@ -12,17 +12,23 @@ syntax to specify the expiration time: `Ns|m|h|d|w` for seconds, minutes,
 hours, days and weeks. If the MOTD should expire after 2 hours, use `2h`
 or `5w` for 5 weeks. Use `0` to configure a MOTD that does not expire.
 
-To configure a MOTD, run the following command::
+To configure a MOTD, run the following command:
 
-  $ ceph dashboard motd set <severity:info|warning|danger> <expires> <message>
+.. prompt:: bash $
 
-To show the configured MOTD::
+   ceph dashboard motd set <severity:info|warning|danger> <expires> <message>
 
-  $ ceph dashboard motd get
+To show the configured MOTD:
 
-To clear the configured MOTD run::
+.. prompt:: bash $
 
-  $ ceph dashboard motd clear
+   ceph dashboard motd get
+
+To clear the configured MOTD run:
+
+.. prompt:: bash $
+
+   ceph dashboard motd clear
 
 A MOTD with a `info` or `warning` severity can be closed by the user. The
 `info` MOTD is not displayed anymore until the local storage cookies are
index 2f20667f20c11865fbf40cdc33614ea3b2d13c42..24704e5e1b3061021a9e7fcf3d97b58d4d76be05 100644 (file)
@@ -5,14 +5,18 @@
 Orchestrator CLI
 ================
 
-This module provides a command line interface (CLI) to orchestrator
-modules (``ceph-mgr`` modules which interface with external orchestration services).
+This module provides a command line interface (CLI) for orchestrator modules.
+Orchestrator modules are ``ceph-mgr`` plugins that interface with external
+orchestration services.
 
-As the orchestrator CLI unifies multiple external orchestrators, a common nomenclature
-for the orchestrator module is needed.
+Definition of Terms
+===================
+
+The orchestrator CLI unifies multiple external orchestrators, so we need a
+common nomenclature for the orchestrator module: 
 
 +--------------------------------------+---------------------------------------+
-| *host*                               | hostname (not DNS name) of the        |
+| *host*                               | hostname (not the DNS name) of the    |
 |                                      | physical host. Not the podname,       |
 |                                      | container name, or hostname inside    |
 |                                      | the container.                        |
@@ -20,7 +24,7 @@ for the orchestrator module is needed.
 | *service type*                       | The type of the service. e.g., nfs,   |
 |                                      | mds, osd, mon, rgw, mgr, iscsi        |
 +--------------------------------------+---------------------------------------+
-| *service*                            | A logical service, Typically          |
+| *service*                            | A logical service. Typically          |
 |                                      | comprised of multiple service         |
 |                                      | instances on multiple hosts for HA    |
 |                                      |                                       |
@@ -34,29 +38,28 @@ for the orchestrator module is needed.
 |                                      | like LIO or knfsd or whatever)        |
 |                                      |                                       |
 |                                      | This identifier should                |
-|                                      | uniquely identify the instance        |
+|                                      | uniquely identify the instance.       |
 +--------------------------------------+---------------------------------------+
 
-The relation between the names is the following:
-
-* A *service* has a specific *service type*
-* A *daemon* is a physical instance of a *service type*
+Here is how the names relate: 
 
+* A *service* has a specific *service type*.
+* A *daemon* is a physical instance of a *service type*.
 
 .. note::
 
-    Orchestrator modules may only implement a subset of the commands listed below.
-    Also, the implementation of the commands may differ between modules.
+    Orchestrator modules might implement only a subset of the commands listed
+    below. The implementation of the commands may differ between modules.
 
 Status
 ======
 
-::
+.. prompt:: bash $
 
-    ceph orch status [--detail]
+   ceph orch status [--detail]
 
-Show current orchestrator mode and high-level status (whether the orchestrator
-plugin is available and operational)
+This command shows the current orchestrator mode and its high-level status
+(whether the orchestrator plugin is available and operational).
 
 
 ..
@@ -92,15 +95,20 @@ plugin is available and operational)
 Stateless services (MDS/RGW/NFS/rbd-mirror/iSCSI)
 =================================================
 
-(Please note: The orchestrator will not configure the services. Please look into the corresponding
-documentation for service configuration details.)
+.. note::
+
+   The orchestrator will not configure the services. See the relevant
+   documentation for details about how to configure particular services. 
+
+The ``name`` parameter identifies the kind of the group of instances. The
+following short list explains the meaning of the ``name`` parameter:
 
-The ``name`` parameter is an identifier of the group of instances:
+* A CephFS file system identifies a group of MDS daemons.
+* A zone name identifies a group of RGWs.
 
-* a CephFS file system for a group of MDS daemons,
-* a zone name for a group of RGWs
+Creating/growing/shrinking/removing services:
 
-Creating/growing/shrinking/removing services::
+.. prompt:: bash $
 
     ceph orch apply mds <fs_name> [--placement=<placement>] [--dry-run]
     ceph orch apply rgw <name> [--realm=<realm>] [--zone=<zone>] [--port=<port>] [--ssl] [--placement=<placement>] [--dry-run]
@@ -111,33 +119,73 @@ where ``placement`` is a :ref:`orchestrator-cli-placement-spec`.
 
 e.g., ``ceph orch apply mds myfs --placement="3 host1 host2 host3"``
 
-Service Commands::
+Service Commands:
+
+.. prompt:: bash $
 
     ceph orch <start|stop|restart|redeploy|reconfig> <service_name>
 
+.. note:: These commands apply only to cephadm containerized daemons.
+
+Options
+=======
+
+.. option:: start
+
+   Start the daemon on the corresponding host.
+
+.. option:: stop
+
+   Stop the daemon on the corresponding host.
+
+.. option:: restart
+
+   Restart the daemon on the corresponding host.
+
+.. option:: redeploy
+
+   Redeploy the ceph daemon on the corresponding host. This will recreate the daemon directory
+   structure under ``/var/lib/ceph/<fsid>/<daemon-name>`` (if it doesn't exist), refresh its
+   configuration files, regenerate its unit-files and restarts the systemd daemon.
+
+.. option:: reconfig
+
+   Reconfigure the daemon on the corresponding host. This will refresh configuration files then restart the daemon.
+
+   .. note:: this command assumes the daemon directory ``/var/lib/ceph/<fsid>/<daemon-name>`` already exists.
 
 
 Configuring the Orchestrator CLI
 ================================
 
-To enable the orchestrator, select the orchestrator module to use
-with the ``set backend`` command::
+Enable the orchestrator by using the ``set backend`` command to select the orchestrator module that will be used:
+
+.. prompt:: bash $
 
     ceph orch set backend <module>
 
-For example, to enable the Rook orchestrator module and use it with the CLI::
+Example - Configuring the Orchestrator CLI
+------------------------------------------
+
+For example, to enable the Rook orchestrator module and use it with the CLI:
+
+.. prompt:: bash $
 
     ceph mgr module enable rook
     ceph orch set backend rook
 
-Check the backend is properly configured::
+Confirm that the backend is properly configured:
+
+.. prompt:: bash $
 
     ceph orch status
 
 Disable the Orchestrator
 ------------------------
 
-To disable the orchestrator, use the empty string ``""``::
+To disable the orchestrator, use the empty string ``""``:
+
+.. prompt:: bash $
 
     ceph orch set backend ""
     ceph mgr module disable rook
index dc817e8cf29b0434571c73066c72bcf0adfb3c47..bed07746d2514f71c97e462ae2e19b1f98f7f79b 100644 (file)
@@ -191,6 +191,7 @@ List all collections with::
   crash_base            REPORTING                                            Information about daemon crashes (daemon type and version, backtrace, etc.)
   device_base           REPORTING                                            Information about device health metrics
   ident_base            NOT REPORTING: CHANNEL ident IS OFF                  User-provided identifying information about the cluster
+  perf_memory_metrics   NOT REPORTING: NOT OPTED-IN, CHANNEL perf IS OFF     Heap stats and mempools for mon and mds
   perf_perf             NOT REPORTING: NOT OPTED-IN, CHANNEL perf IS OFF     Information about performance counters of the cluster
 
 
index da13a0cfafd2b50a60047b55339a5962e594fe17..1040b2e66c2eb166606f6d7b0836179c4ebc0f61 100644 (file)
@@ -102,7 +102,7 @@ shows the resource control parameters set by the profile:
 +------------------------+-------------+--------+-------+
 | background recovery    | 25%         | 1      | 100%  |
 +------------------------+-------------+--------+-------+
-| background best-effort | 25%         | 1      | MAX   |
+| background best-effort | 25%         | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 high_recovery_ops
@@ -120,7 +120,7 @@ parameters set by the profile:
 +------------------------+-------------+--------+-------+
 | background recovery    | 60%         | 2      | 200%  |
 +------------------------+-------------+--------+-------+
-| background best-effort | 1 (MIN)     | 1      | MAX   |
+| background best-effort | 1 (MIN)     | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 balanced
@@ -139,7 +139,7 @@ within the OSD.
 +------------------------+-------------+--------+-------+
 | background recovery    | 40%         | 1      | 150%  |
 +------------------------+-------------+--------+-------+
-| background best-effort | 20%         | 1      | MAX   |
+| background best-effort | 20%         | 2      | MAX   |
 +------------------------+-------------+--------+-------+
 
 .. note:: Across the built-in profiles, internal background best-effort clients
@@ -247,6 +247,145 @@ And that's it! You are ready to run workloads on the cluster and check if the
 QoS requirements are being met.
 
 
+Switching Between Built-in and Custom Profiles
+==============================================
+
+There may be situations requiring switching from a built-in profile to the
+*custom* profile and vice-versa. The following sections outline the steps to
+accomplish this.
+
+Steps to Switch From a Built-in to the Custom Profile
+-----------------------------------------------------
+
+The following command can be used to switch to the *custom* profile:
+
+  .. prompt:: bash #
+
+    ceph config set osd osd_mclock_profile custom
+
+For example, to change the profile to *custom* on all OSDs, the following
+command can be used:
+
+  .. prompt:: bash #
+
+    ceph config set osd osd_mclock_profile custom
+
+After switching to the *custom* profile, the desired mClock configuration
+option may be modified. For example, to change the client reservation IOPS
+allocation for a specific OSD (say osd.0), the following command can be used:
+
+  .. prompt:: bash #
+
+    ceph config set osd.0 osd_mclock_scheduler_client_res 3000
+
+.. important:: Care must be taken to change the reservations of other services like
+   recovery and background best effort accordingly to ensure that the sum of the
+   reservations do not exceed the maximum IOPS capacity of the OSD.
+
+.. tip::  The reservation and limit parameter allocations are per-shard based on
+   the type of backing device (HDD/SSD) under the OSD. See
+   :confval:`osd_op_num_shards_hdd` and :confval:`osd_op_num_shards_ssd` for
+   more details.
+
+Steps to Switch From the Custom Profile to a Built-in Profile
+-------------------------------------------------------------
+
+Switching from the *custom* profile to a built-in profile requires an
+intermediate step of removing the custom settings from the central config
+database for the changes to take effect.
+
+The following sequence of commands can be used to switch to a built-in profile:
+
+#. Set the desired built-in profile using:
+
+   .. prompt:: bash #
+
+     ceph config set osd <mClock Configuration Option>
+
+   For example, to set the built-in profile to ``high_client_ops`` on all
+   OSDs, run the following command:
+
+   .. prompt:: bash #
+
+     ceph config set osd osd_mclock_profile high_client_ops
+#. Determine the existing custom mClock configuration settings in the central
+   config database using the following command:
+
+   .. prompt:: bash #
+
+     ceph config dump
+#. Remove the custom mClock configuration settings determined in the previous
+   step from the central config database:
+
+   .. prompt:: bash #
+
+     ceph config rm osd <mClock Configuration Option>
+
+   For example, to remove the configuration option
+   :confval:`osd_mclock_scheduler_client_res` that was set on all OSDs, run the
+   following command:
+
+   .. prompt:: bash #
+
+     ceph config rm osd osd_mclock_scheduler_client_res
+#. After all existing custom mClock configuration settings have been removed
+   from the central config database, the configuration settings pertaining to
+   ``high_client_ops`` will come into effect. For e.g., to verify the settings
+   on osd.0 use:
+
+   .. prompt:: bash #
+
+     ceph config show osd.0
+
+Switch Temporarily Between mClock Profiles
+------------------------------------------
+
+To switch between mClock profiles on a temporary basis, the following commands
+may be used to override the settings:
+
+.. warning:: This section is for advanced users or for experimental testing. The
+   recommendation is to not use the below commands on a running cluster as it
+   could have unexpected outcomes.
+
+.. note:: The configuration changes on an OSD using the below commands are
+   ephemeral and are lost when it restarts. It is also important to note that
+   the config options overridden using the below commands cannot be modified
+   further using the *ceph config set osd.N ...* command. The changes will not
+   take effect until a given OSD is restarted. This is intentional, as per the
+   config subsystem design. However, any further modification can still be made
+   ephemerally using the commands mentioned below.
+
+#. Run the *injectargs* command as shown to override the mclock settings:
+
+   .. prompt:: bash #
+
+     ceph tell osd.N injectargs '--<mClock Configuration Option>=<value>'
+
+   For example, the following command overrides the
+   :confval:`osd_mclock_profile` option on osd.0:
+
+   .. prompt:: bash #
+
+     ceph tell osd.0 injectargs '--osd_mclock_profile=high_recovery_ops'
+
+
+#. An alternate command that can be used is:
+
+   .. prompt:: bash #
+
+     ceph daemon osd.N config set <mClock Configuration Option> <value>
+
+   For example, the following command overrides the
+   :confval:`osd_mclock_profile` option on osd.0:
+
+   .. prompt:: bash #
+
+     ceph daemon osd.0 config set osd_mclock_profile high_recovery_ops
+
+The individual QoS-related config options for the *custom* profile can also be
+modified ephemerally using the above commands.
+
+
 OSD Capacity Determination (Automated)
 ======================================
 
index 5a9353fdb448eaed10ca128b9dc0cabe71b4bdee..60855a8eaf52e3de07aeb5041116a71dfcb6ac99 100644 (file)
@@ -10,87 +10,107 @@ Running Ceph with systemd
 
 For all distributions that support systemd (CentOS 7, Fedora, Debian
 Jessie 8 and later, SUSE), ceph daemons are now managed using native
-systemd files instead of the legacy sysvinit scripts.  For example::
+systemd files instead of the legacy sysvinit scripts.  For example:
 
-        sudo systemctl start ceph.target       # start all daemons
-        sudo systemctl status ceph-osd@12      # check status of osd.12
+.. prompt:: bash $
 
-To list the Ceph systemd units on a node, execute::
+   sudo systemctl start ceph.target       # start all daemons
+   sudo systemctl status ceph-osd@12      # check status of osd.12
 
-        sudo systemctl status ceph\*.service ceph\*.target
+To list the Ceph systemd units on a node, execute:
+
+.. prompt:: bash $
+
+   sudo systemctl status ceph\*.service ceph\*.target
 
 Starting all Daemons
 --------------------
 
 To start all daemons on a Ceph Node (irrespective of type), execute the
-following::
+following:
+
+.. prompt:: bash $
 
-       sudo systemctl start ceph.target
+   sudo systemctl start ceph.target
 
 
 Stopping all Daemons
 --------------------
 
 To stop all daemons on a Ceph Node (irrespective of type), execute the
-following::
+following:
 
-        sudo systemctl stop ceph\*.service ceph\*.target
+.. prompt:: bash $
+
+   sudo systemctl stop ceph\*.service ceph\*.target
 
 
 Starting all Daemons by Type
 ----------------------------
 
 To start all daemons of a particular type on a Ceph Node, execute one of the
-following::
+following:
+
+.. prompt:: bash $
 
-        sudo systemctl start ceph-osd.target
-        sudo systemctl start ceph-mon.target
-        sudo systemctl start ceph-mds.target
+   sudo systemctl start ceph-osd.target
+   sudo systemctl start ceph-mon.target
+   sudo systemctl start ceph-mds.target
 
 
 Stopping all Daemons by Type
 ----------------------------
 
 To stop all daemons of a particular type on a Ceph Node, execute one of the
-following::
+following:
 
-        sudo systemctl stop ceph-mon\*.service ceph-mon.target
-        sudo systemctl stop ceph-osd\*.service ceph-osd.target
-        sudo systemctl stop ceph-mds\*.service ceph-mds.target
+.. prompt:: bash $
+
+   sudo systemctl stop ceph-mon\*.service ceph-mon.target
+   sudo systemctl stop ceph-osd\*.service ceph-osd.target
+   sudo systemctl stop ceph-mds\*.service ceph-mds.target
 
 
 Starting a Daemon
 -----------------
 
 To start a specific daemon instance on a Ceph Node, execute one of the
-following::
+following:
+
+.. prompt:: bash $
+
+   sudo systemctl start ceph-osd@{id}
+   sudo systemctl start ceph-mon@{hostname}
+   sudo systemctl start ceph-mds@{hostname}
 
-       sudo systemctl start ceph-osd@{id}
-       sudo systemctl start ceph-mon@{hostname}
-       sudo systemctl start ceph-mds@{hostname}
+For example:
 
-For example::
+.. prompt:: bash $
 
-       sudo systemctl start ceph-osd@1
-       sudo systemctl start ceph-mon@ceph-server
-       sudo systemctl start ceph-mds@ceph-server
+   sudo systemctl start ceph-osd@1
+   sudo systemctl start ceph-mon@ceph-server
+   sudo systemctl start ceph-mds@ceph-server
 
 
 Stopping a Daemon
 -----------------
 
 To stop a specific daemon instance on a Ceph Node, execute one of the
-following::
+following:
+
+.. prompt:: bash $
+
+   sudo systemctl stop ceph-osd@{id}
+   sudo systemctl stop ceph-mon@{hostname}
+   sudo systemctl stop ceph-mds@{hostname}
 
-       sudo systemctl stop ceph-osd@{id}
-       sudo systemctl stop ceph-mon@{hostname}
-       sudo systemctl stop ceph-mds@{hostname}
+For example:
 
-For example::
+.. prompt:: bash $
 
-       sudo systemctl stop ceph-osd@1
-       sudo systemctl stop ceph-mon@ceph-server
-       sudo systemctl stop ceph-mds@ceph-server
+   sudo systemctl stop ceph-osd@1
+   sudo systemctl stop ceph-mon@ceph-server
+   sudo systemctl stop ceph-mds@ceph-server
 
 
 .. index:: sysvinit; operating a cluster
index d8d1a532bb659dfb753349ed4754197c2753b1fa..c471ff8bcd94e726ce61c4b8d0b01ec0154bf03d 100644 (file)
@@ -143,16 +143,21 @@ example, a pool that maps to OSDs of class `ssd` and a pool that maps
 to OSDs of class `hdd` will each have optimal PG counts that depend on
 the number of those respective device types.
 
+In the case where a pool uses OSDs under two or more CRUSH roots, e.g., (shadow
+trees with both `ssd` and `hdd` devices), the autoscaler will
+issue a warning to the user in the manager log stating the name of the pool
+and the set of roots that overlap each other. The autoscaler will not
+scale any pools with overlapping roots because this can cause problems
+with the scaling process. We recommend making each pool belong to only
+one root (one OSD class) to get rid of the warning and ensure a successful
+scaling process.
+
 The autoscaler uses the `bulk` flag to determine which pool
 should start out with a full complement of PGs and only
 scales down when the usage ratio across the pool is not even.
 However, if the pool doesn't have the `bulk` flag, the pool will
 start out with minimal PGs and only when there is more usage in the pool.
 
-The autoscaler identifies any overlapping roots and prevents the pools
-with such roots from scaling because overlapping roots can cause problems
-with the scaling process.
-
 To create pool with `bulk` flag::
 
   ceph osd pool create <pool-name> --bulk
index b4cd67148b582fab6daf8f3a0ba1b2ce2015d408..f0729680b7d56af4459075ed6cf7d57e16810765 100644 (file)
@@ -107,6 +107,15 @@ Examples
 those credentials. In this example, TESTER1 assumes a role created by TESTER, to access S3 resources owned by TESTER,
 according to the permission policy attached to the role.
 
+.. code-block:: console
+
+   radosgw-admin caps add --uid="TESTER" --caps="roles=*"
+
+2. The following is an example of the AssumeRole API call, which shows steps to create a role, assign a policy to it
+   (that allows access to S3 resources), assuming a role to get temporary credentials and accessing S3 resources using
+   those credentials. In this example, TESTER1 assumes a role created by TESTER, to access S3 resources owned by TESTER,
+   according to the permission policy attached to the role.
+
 .. code-block:: python
 
     import boto3
@@ -286,4 +295,4 @@ Steps for integrating Radosgw with Keycloak can be found here
 STSLite
 =======
 STSLite has been built on STS, and documentation for the same can be found here
-:doc:`STSLite`.
\ No newline at end of file
+:doc:`STSLite`.
index c78c14e5005b3452c914b255da97e35ac58c8c85..f5dae7050a17342dd4ff83086dfe8a09fceacdad 100644 (file)
@@ -35,7 +35,7 @@ Parameters:
     **TokenCode** (String/ Optional): The value provided by the MFA device, if MFA is required.
 
 An administrative user needs to attach a policy to allow invocation of GetSessionToken API using its permanent
-credentials and to allow subsequent s3 operations invocation using only the temporary credentials returned
+credentials and to allow subsequent S3 operations invocation using only the temporary credentials returned
 by GetSessionToken.
 
 The user attaching the policy needs to have admin caps. For example::
index 295fa8ce2d77e64693e7fe32dc7879303c414189..9d127aa04cff37524aff66914c697cc575047fbd 100644 (file)
@@ -229,6 +229,22 @@ HashiCorp Vault Settings
 .. confval:: rgw_crypt_vault_secret_engine
 .. confval:: rgw_crypt_vault_namespace
 
+SSE-S3 Settings
+===============
+
+.. confval:: rgw_crypt_sse_s3_backend
+.. confval:: rgw_crypt_sse_s3_vault_secret_engine
+.. confval:: rgw_crypt_sse_s3_key_template
+.. confval:: rgw_crypt_sse_s3_vault_auth
+.. confval:: rgw_crypt_sse_s3_vault_token_file
+.. confval:: rgw_crypt_sse_s3_vault_addr
+.. confval:: rgw_crypt_sse_s3_vault_prefix
+.. confval:: rgw_crypt_sse_s3_vault_namespace
+.. confval:: rgw_crypt_sse_s3_vault_verify_ssl
+.. confval:: rgw_crypt_sse_s3_vault_ssl_cacert
+.. confval:: rgw_crypt_sse_s3_vault_ssl_clientcert
+.. confval:: rgw_crypt_sse_s3_vault_ssl_clientkey
+
 
 QoS settings
 ------------
index 2b51e088f5356c4bbed5588fce14214c22197bf5..7cada356d690dbf0088f2765f3bfac543bf741dc 100644 (file)
@@ -25,13 +25,14 @@ keys and remember which key was used to encrypt each object.
 
 This is implemented in S3 according to the `Amazon SSE-C`_ specification.
 
-As all key management is handled by the client, no special configuration is
-needed to support this encryption mode.
+As all key management is handled by the client, no special Ceph configuration
+is needed to support this encryption mode.
 
 Key Management Service
 ======================
 
-This mode allows keys to be stored in a secure key management service and
+In this mode, an administrator stores keys in a secure key management service.
+These keys are then
 retrieved on demand by the Ceph Object Gateway to serve requests to encrypt
 or decrypt data.
 
@@ -43,12 +44,26 @@ integration with `Barbican`_, `Vault`_, and `KMIP`_ are implemented.
 See `OpenStack Barbican Integration`_, `HashiCorp Vault Integration`_,
 and `KMIP Integration`_.
 
+SSE-S3
+======
+
+This makes key management invisible to the user.  They are still stored
+in vault, but they are automatically created and deleted by Ceph. and
+retrieved as required to serve requests to encrypt
+or decrypt data.
+
+This is implemented in S3 according to the `Amazon SSE-S3`_ specification.
+
+In principle, any key management service could be used here.  Currently
+only integration with `Vault`_, is implemented.
+
+See `HashiCorp Vault Integration`_.
+
 Bucket Encryption APIs
 ======================
 
 Bucket Encryption APIs to support server-side encryption with Amazon
 S3-managed keys (SSE-S3) or AWS KMS customer master keys (SSE-KMS). 
-SSE-KMS implementation via BucketEncryption APIs is not supported yet.
 
 See `PutBucketEncryption`_, `GetBucketEncryption`_, `DeleteBucketEncryption`_
 
@@ -69,6 +84,7 @@ The configuration expects a base64-encoded 256 bit key. For example::
 
 .. _Amazon SSE-C: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
 .. _Amazon SSE-KMS: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
+.. _Amazon SSE-S3: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html
 .. _Barbican: https://wiki.openstack.org/wiki/Barbican
 .. _Vault: https://www.vaultproject.io/docs/
 .. _KMIP: http://www.oasis-open.org/committees/kmip/
index e21b639e9a6f25287fbd701abdc767542e9ada5c..a5b51b9bd9270f6fc5d2b1dc9047c07f60beb102 100644 (file)
@@ -111,7 +111,7 @@ Token policies for the object gateway
 
 All Vault tokens have powers as specified by the polices attached
 to that token.  Multiple policies may be associated with one
-token.  You should only use the policy necessary for your
+token.  You should only use the policies necessary for your
 configuration.
 
 When using the kv secret engine with the object gateway::
@@ -156,6 +156,18 @@ transit secret engine, you might need the following policy::
     }
   EOF
 
+If you are using both sse-kms and sse-s3, then you should point
+each to separate containers.  You could either use separate
+vault instances, or you could use either separately mounted
+transit instances, or different branches under a common transit
+pointpoint.  If you are not using separate vault instances, you can
+Use these to point kms and sse-s3 to separate containers:
+``rgw_crypt_vault_prefix``
+and/or
+``rgw_crypt_sse_s3_vault_prefix``.
+When granting vault permissions to sse-kms bucket owners, you should
+not give them permission to muck around with sse-s3 keys;
+only ceph itself should be doing that.
 
 Token authentication
 --------------------
index 464ed2ce92958e398ac51138ddaee5939da4e090..74a2a364e8d0d961e9da4b17aeb55c2b08a78680 100644 (file)
@@ -326,7 +326,7 @@ For example::
 
         $ rbd --cluster site-a mirror image snapshot image-pool/image-1
 
-By default only ``3`` mirror-snapshots will be created per-image. The most
+By default up to ``5`` mirror-snapshots will be created per-image. The most
 recent mirror-snapshot is automatically pruned if the limit is reached.
 The limit can be overridden via the ``rbd_mirroring_max_mirroring_snapshots``
 configuration option if required. Additionally, mirror-snapshots are
index 1ab3a87171d4097dffde1b44647a6191995acfc3..7df48d02c700c42733bd79b3e661e230b865940c 100644 (file)
@@ -30,12 +30,14 @@ repository. Python Sphinx renders the source into HTML and manpages.
 
 Viewing Old Ceph Documentation
 ==============================
-The https://docs.ceph.com link displays the ``master`` branch by default, but
-you can view the documentation for older versions of Ceph (e.g., ``mimic``) by
-replacing the version name in the url (e.g. ``pacific`` in
-`https://docs.ceph.com/en/pacific <https://docs.ceph.com/en/pacific>`_) with the
-branch name you prefer (e.g. ``mimic``, to create a URL that reads
-`https://docs.ceph.com/en/mimic/ <https://docs.ceph.com/en/mimic/>`_).
+The https://docs.ceph.com link displays the latest release branch by default
+(for example, if "Quincy" is the most recent release, then by default
+https://docs.ceph.com displays the documentation for Quincy), but you can view
+the documentation for older versions of Ceph (for example, ``pacific``) by
+replacing the version name in the url (for example, ``quincy`` in
+`https://docs.ceph.com/en/pacific <https://docs.ceph.com/en/quincy>`_) with the
+branch name you prefer (for example, ``pacific``, to create a URL that reads
+`https://docs.ceph.com/en/pacific/ <https://docs.ceph.com/en/pacific/>`_).
 
 .. _making_contributions:
 
@@ -140,13 +142,13 @@ Select a Branch
 ---------------
 
 When you make small changes to the documentation, such as fixing typographical
-errors or clarifying explanations, use the ``master`` branch (default). You
-should also use the ``master`` branch when making contributions to features that
-are in the current release. ``master`` is the most commonly used branch. :
+errors or clarifying explanations, use the ``main`` branch (default). You
+should also use the ``main`` branch when making contributions to features that
+are in the current release. ``main`` is the most commonly used branch. :
 
 .. prompt:: bash $
 
-       git checkout master
+       git checkout main
 
 When you make changes to documentation that affect an upcoming release, use 
 the ``next`` branch. ``next`` is the second most commonly used branch. :
@@ -158,7 +160,7 @@ the ``next`` branch. ``next`` is the second most commonly used branch. :
 When you are making substantial contributions such as new features that are not
 yet in the current release; if your contribution is related to an issue with a
 tracker ID; or, if you want to see your documentation rendered on the Ceph.com
-website before it gets merged into the ``master`` branch, you should create a
+website before it gets merged into the ``main`` branch, you should create a
 branch. To distinguish branches that include only documentation updates, we
 prepend them with ``wip-doc`` by convention, following the form
 ``wip-doc-{your-branch-name}``. If the branch relates to an issue filed in
index b6c47502c1d3907e5a0f1304c527f26e6a80eb4f..d922c03dc9d5de0ad305452004d748b31952386e 100644 (file)
@@ -21,21 +21,30 @@ data cluster (e.g., OpenStack, CloudStack, etc).
 CPU
 ===
 
-CephFS metadata servers are CPU intensive, so they should have significant
-processing power (e.g., quad core or better CPUs) and benefit from higher clock
-rate (frequency in GHz). Ceph OSDs run the :term:`RADOS` service, calculate
-data placement with :term:`CRUSH`, replicate data, and maintain their own copy of the
-cluster map. Therefore, OSD nodes should have a reasonable amount of processing
-power. Requirements vary by use-case; a starting point might be one core per
-OSD for light / archival usage, and two cores per OSD for heavy workloads such
-as RBD volumes attached to VMs.  Monitor / manager nodes do not have heavy CPU
-demands so a modest processor can be chosen for them.  Also consider whether the
-host machine will run CPU-intensive processes in addition to Ceph daemons. For
-example, if your hosts will run computing VMs (e.g., OpenStack Nova), you will
-need to ensure that these other processes leave sufficient processing power for
-Ceph daemons. We recommend running additional CPU-intensive processes on
-separate hosts to avoid resource contention.
-
+CephFS metadata servers (MDS) are CPU-intensive. CephFS metadata servers (MDS)
+should therefore have quad-core (or better) CPUs and high clock rates (GHz). OSD
+nodes need enough processing power to run the RADOS service, to calculate data
+placement with CRUSH, to replicate data, and to maintain their own copies of the
+cluster map.
+
+The requirements of one Ceph cluster are not the same as the requirements of
+another, but here are some general guidelines. 
+
+In earlier versions of Ceph, we would make hardware recommendations based on
+the number of cores per OSD, but this cores-per-OSD metric is no longer as
+useful a metric as the number of cycles per IOP and the number of IOPs per OSD.
+For example, for NVMe drives, Ceph can easily utilize five or six cores on real
+clusters and up to about fourteen cores on single OSDs in isolation. So cores
+per OSD are no longer as pressing a concern as they were. When selecting
+hardware, select for IOPs per core.
+
+Monitor nodes and manager nodes have no heavy CPU demands and require only
+modest processors. If your host machines will run CPU-intensive processes in
+addition to Ceph daemons, make sure that you have enough processing power to
+run both the CPU-intensive processes and the Ceph daemons. (OpenStack Nova is
+one such example of a CPU-intensive process.) We recommend that you run
+non-Ceph CPU-intensive processes on separate hosts (that is, on hosts that are
+not your monitor and manager nodes) in order to avoid resource contention.
 
 RAM
 ===
@@ -340,34 +349,50 @@ multiple OSDs per host.
 Networks
 ========
 
-Provision at least 10Gbps+ networking in your racks. Replicating 1TB of data
-across a 1Gbps network takes 3 hours, and 10TBs takes 30 hours! By contrast,
-with a 10Gbps network, the replication times would be 20 minutes and 1 hour
-respectively. In a petabyte-scale cluster, failure of an OSD drive is an
-expectation, not an exception. System administrators will appreciate PGs
-recovering from a ``degraded`` state to an ``active + clean`` state as rapidly
-as possible, with price / performance tradeoffs taken into consideration.
-Additionally, some deployment tools employ VLANs to make  hardware and network
-cabling more manageable. VLANs using 802.1q protocol require VLAN-capable NICs
-and Switches. The added hardware expense may be offset by the operational cost
-savings for network setup and maintenance. When using VLANs to handle VM
+Provision at least 10 Gb/s networking in your racks.
+
+Speed
+-----
+
+It takes three hours to replicate 1 TB of data across a 1 Gb/s network and it
+takes thirty hours to replicate 10 TB across a 1 Gb/s network. But it takes only
+twenty minutes to replicate 1 TB across a 10 Gb/s network, and it takes
+only one hour to replicate 10 TB across a 10 Gb/s network. 
+
+Cost
+----
+
+The larger the Ceph cluster, the more common OSD failures will be.
+The faster that a placement group (PG) can recover from a ``degraded`` state to
+an ``active + clean`` state, the better. Notably, fast recovery minimizes
+the liklihood of multiple, overlapping failures that can cause data to become
+temporarily unavailable or even lost. Of course, when provisioning your
+network, you will have to balance price against performance. 
+
+Some deployment tools employ VLANs to make hardware and network cabling more
+manageable. VLANs that use the 802.1q protocol require VLAN-capable NICs and
+switches. The added expense of this hardware may be offset by the operational
+cost savings on network setup and maintenance. When using VLANs to handle VM
 traffic between the cluster and compute stacks (e.g., OpenStack, CloudStack,
-etc.), there is additional value in using 10G Ethernet or better; 40Gb or
-25/50/100 Gb networking as of 2020 is common for production clusters.
+etc.), there is additional value in using 10 Gb/s Ethernet or better; 40 Gb/s or
+25/50/100 Gb/s networking as of 2022 is common for production clusters.
+
+Top-of-rack (TOR) switches also need fast and redundant uplinks to spind
+spine switches / routers, often at least 40 Gb/s.
 
-Top-of-rack routers for each network also need to be able to communicate with
-spine routers that have even faster throughput, often 40Gbp/s or more.
 
+Baseboard Management Controller (BMC)
+-------------------------------------
 
-Your server hardware should have a Baseboard Management Controller (BMC).
+Your server chassis should have a Baseboard Management Controller (BMC).
+Well-known examples are iDRAC (Dell), CIMC (Cisco UCS), and iLO (HPE).
 Administration and deployment tools may also use BMCs extensively, especially
-via IPMI or Redfish, so consider
-the cost/benefit tradeoff of an out-of-band network for administration.
-Hypervisor SSH access, VM image uploads, OS image installs, management sockets,
-etc. can impose significant loads on a network.  Running three networks may seem
-like overkill, but each traffic path represents a potential capacity, throughput
-and/or performance bottleneck that you should carefully consider before
-deploying a large scale data cluster.
+via IPMI or Redfish, so consider the cost/benefit tradeoff of an out-of-band
+network for security and administration.  Hypervisor SSH access, VM image uploads,
+OS image installs, management sockets, etc. can impose significant loads on a network.
+Running three networks may seem like overkill, but each traffic path represents
+a potential capacity, throughput and/or performance bottleneck that you should
+carefully consider before deploying a large scale data cluster.
  
 
 Failure Domains
@@ -440,10 +465,11 @@ and development clusters can run successfully with modest hardware.
 
 
 
-
-
+.. _block and block.db: https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/#block-and-block-db
 .. _Ceph blog: https://ceph.com/community/blog/
 .. _Ceph Write Throughput 1: http://ceph.com/community/ceph-performance-part-1-disk-controller-write-throughput/
 .. _Ceph Write Throughput 2: http://ceph.com/community/ceph-performance-part-2-write-throughput-without-ssd-journals/
 .. _Mapping Pools to Different Types of OSDs: ../../rados/operations/crush-map#placing-different-pools-on-different-osds
 .. _OS Recommendations: ../os-recommendations
+.. _Storage Networking Industry Association's Total Cost of Ownership calculator: https://www.snia.org/forums/cmsi/programs/TCOcalc
+.. _Werner Fischer's blog post on partition alignment: https://www.thomas-krenn.com/en/wiki/Partition_Alignment_detailed_explanation
index 1f1eb9b383e89c734a892ff77c0df5e3ce9a759f..e0e944b87dbd5aa4204bd6cfc9b3d702dfc00e75 100644 (file)
@@ -34,7 +34,7 @@ required when running Ceph File System clients.
   `REST API`_.  At least two managers are normally required for high
   availability.
 
-- **Ceph OSDs**: A :term:`Ceph OSD` (object storage daemon,
+- **Ceph OSDs**: An Object Storage Daemon (:term:`Ceph OSD`,
   ``ceph-osd``) stores data, handles data replication, recovery,
   rebalancing, and provides some monitoring information to Ceph
   Monitors and Managers by checking other Ceph OSD Daemons for a
@@ -49,10 +49,10 @@ required when running Ceph File System clients.
   Ceph Storage Cluster.
 
 Ceph stores data as objects within logical storage pools. Using the
-:term:`CRUSH` algorithm, Ceph calculates which placement group should
-contain the object, and further calculates which Ceph OSD Daemon
-should store the placement group.  The CRUSH algorithm enables the
-Ceph Storage Cluster to scale, rebalance, and recover dynamically.
+:term:`CRUSH` algorithm, Ceph calculates which placement group (PG) should
+contain the object, and which OSD should store the placement group.  The
+CRUSH algorithm enables the Ceph Storage Cluster to scale, rebalance, and
+recover dynamically.
 
 .. _REST API: ../../mgr/restful
 
index 6f4cd178fb98554640f3c831972b34762e411131..d3381564158559805151083a8b7db51097947428 100755 (executable)
@@ -217,19 +217,6 @@ function install_libzbd_on_ubuntu {
         libzbd-dev
 }
 
-function install_libpmem_on_ubuntu {
-    local codename=$1
-    local project=pmem
-    local sha1=7c18b4b1413ae965ea8bcbfc69eb9784f9212319
-    install_pkg_on_ubuntu \
-        $project \
-        $sha1 \
-        $codename \
-        check \
-        libpmem-dev \
-        libpmemobj-dev
-}
-
 function version_lt {
     test $1 != $(echo -e "$1\n$2" | sort -rV | head -n 1)
 }
@@ -305,7 +292,6 @@ else
     [ $WITH_SEASTAR ] && with_seastar=true || with_seastar=false
     [ $WITH_JAEGER ] && with_jaeger=true || with_jaeger=false
     [ $WITH_ZBD ] && with_zbd=true || with_zbd=false
-    [ $WITH_PMEM ] && with_pmem=true || with_pmem=false
     source /etc/os-release
     case "$ID" in
     debian|ubuntu|devuan|elementary|softiron)
@@ -322,7 +308,6 @@ else
             *Focal*)
                 [ ! $NO_BOOST_PKGS ] && install_boost_on_ubuntu focal
                 $with_zbd && install_libzbd_on_ubuntu focal
-                $with_pmem && install_libpmem_on_ubuntu focal
                 ;;
             *)
                 $SUDO apt-get install -y gcc
@@ -372,7 +357,7 @@ else
                 ;;
             centos|rhel|ol|virtuozzo)
                 MAJOR_VERSION="$(echo $VERSION_ID | cut -d. -f1)"
-                $SUDO dnf install -y dnf-utils
+                $SUDO dnf install -y dnf-utils selinux-policy-targeted
                 rpm --quiet --query epel-release || \
                    $SUDO dnf -y install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$MAJOR_VERSION.noarch.rpm
                 $SUDO rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION
@@ -396,7 +381,7 @@ else
         $SUDO $builddepcmd $DIR/ceph.spec 2>&1 | tee $DIR/yum-builddep.out
         [ ${PIPESTATUS[0]} -ne 0 ] && exit 1
         IGNORE_YUM_BUILDEP_ERRORS="ValueError: SELinux policy is not managed or store cannot be accessed."
-        sed "/$IGNORE_YUM_BUILDEP_ERRORS/d" $DIR/yum-builddep.out | grep -qi "error:" && exit 1
+        sed "/$IGNORE_YUM_BUILDEP_ERRORS/d" $DIR/yum-builddep.out | grep -i "error:" && exit 1
         ;;
     opensuse*|suse|sles)
         echo "Using zypper to install dependencies"
index 66e620f6c85e768a5c92cd25892b5aff05beb18c..e63c740b7a57510da4d62c11ca1973f48ea6ae57 100644 (file)
@@ -11,17 +11,6 @@ if(WITH_GRAFANA)
       include(AddCephTest)
       set(CEPH_BUILD_VIRTUALENV ${CMAKE_BINARY_DIR})
 
-      add_test(NAME jsonnet-build
-          COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/jsonnet-build.sh ${CMAKE_CURRENT_BINARY_DIR})
-      set_property(TEST jsonnet-build PROPERTY
-          FIXTURES_SETUP jsonnet)
-      add_test(NAME jsonnet-cleanup
-          COMMAND rm -rf go-jsonnet
-                         ${CMAKE_CURRENT_BINARY_DIR}/jsonnet
-                         ${CMAKE_CURRENT_BINARY_DIR}/jsonnetfmt)
-      set_property(TEST jsonnet-cleanup PROPERTY
-          FIXTURES_CLEANUP jsonnet)
-
       add_test(NAME jsonnet-bundler-build
           COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/jsonnet-bundler-build.sh ${CMAKE_CURRENT_BINARY_DIR})
       set_property(TEST jsonnet-bundler-build PROPERTY
@@ -34,10 +23,10 @@ if(WITH_GRAFANA)
       add_tox_test(grafana-lint TOX_ENVS lint)
       add_tox_test(jsonnet-lint TOX_ENVS jsonnet-lint)
       set_property(TEST run-tox-jsonnet-lint PROPERTY
-          FIXTURES_REQUIRED venv-for-jsonnet-lint jsonnet)
+          FIXTURES_REQUIRED venv-for-jsonnet-lint)
       add_tox_test(jsonnet-check TOX_ENVS jsonnet-check)
       set_property(TEST run-tox-jsonnet-check PROPERTY
-          FIXTURES_REQUIRED venv-for-jsonnet-check jsonnet jsonnet-bundler)
+          FIXTURES_REQUIRED venv-for-jsonnet-check jsonnet-bundler)
 
       add_tox_test(alerts-check TOX_ENVS alerts-check)
       add_tox_test(alerts-lint TOX_ENVS alerts-lint)
index 44575b77eb6a4073b3b5b55f3499cae0f886cd77..0cb7aa5393c297298a7cba78e47ede5a37c4fabc 100644 (file)
@@ -8,7 +8,7 @@ generate: dashboards_out
 vendor: jsonnetfile.lock.json
        tox -ejsonnet-bundler-install
 
-dashboards_out: vendor $(JSONNETS_FILES)
+dashboards_out: vendor dashboards
        tox -ejsonnet-fix
 
 lint:
index fd0fe95ed90ba4e38f2ebbfe97eb922e7a36dd3d..4b8b43035f2eb1d0fd4c2ba314476b884c45818c 100644 (file)
@@ -5,7 +5,7 @@ All the Grafana dashboards are already generated in the `dashboards_out`
 directory and alerts in the `prometheus_alerts.yml` file.
 
 You can use the Grafana dashboards and alerts with Jsonnet like any other
-prometheus mixin. You can find more ressources about mixins in general on
+prometheus mixin. You can find more resources about mixins in general on
 [monitoring.mixins.dev](https://monitoring.mixins.dev/).
 
 ### Grafana dashboards for Ceph
@@ -26,11 +26,20 @@ plugin](http://docs.ceph.com/en/latest/mgr/prometheus/) and the
 
 
 ### Prometheus alerts
-In `prometheus_alerts.yml` you'll find a set of Prometheus
+In `prometheus_alerts.libsonnet` you'll find a set of Prometheus
 alert rules that should provide a decent set of default alerts for a
-Ceph cluster. Just put this file in a place according to your Prometheus
+Ceph cluster. After building them with jsonnet put this file in place according to your Prometheus
 configuration (wherever the `rules` configuration stanza points).
 
+### Multi-cluster support
+Ceph-mixin supports dashboards and alerts across multiple clusters. 
+To enable this feature you need to configure the following in `config.libsonnnet`:
+
+```
+showMultiCluster: true,
+clusterLabel: '<your cluster label>',
+```
+
 #### SNMP
 Ceph provides a MIB (CEPH-PROMETHEUS-ALERT-MIB.txt) to support sending Prometheus
 alerts through to an SNMP management platform. The translation from Prometheus
diff --git a/ceph/monitoring/ceph-mixin/alerts.jsonnet b/ceph/monitoring/ceph-mixin/alerts.jsonnet
new file mode 100644 (file)
index 0000000..43826ee
--- /dev/null
@@ -0,0 +1 @@
+std.manifestYamlDoc((import 'alerts.libsonnet').prometheusAlerts, indent_array_in_object=true, quote_keys=false)
index 9c759938a0510a59eadf1b66da5876b22befdf51..c2d39e2d33302080eeac151e388f7a487e609f68 100644 (file)
@@ -1,3 +1,4 @@
 {
-  prometheusAlerts+:: std.parseYaml(importstr 'prometheus_alerts.yml'),
+  prometheusAlerts+:: (import 'prometheus_alerts.libsonnet') +
+                      { _config:: $._config },
 }
index 0967ef424bce6791893e9a57bb952f80fd536e93..7ee1210b043310cf23652ebc95191e43ac4b9252 100644 (file)
@@ -1 +1,11 @@
-{}
+{
+  _config+:: {
+    dashboardTags: ['ceph-mixin'],
+
+    clusterLabel: 'cluster',
+    showMultiCluster: false,
+
+    CephNodeNetworkPacketDropsThreshold: 0.005,
+    CephNodeNetworkPacketDropsPerSec: 10,
+  },
+}
diff --git a/ceph/monitoring/ceph-mixin/dashboards.libsonnet b/ceph/monitoring/ceph-mixin/dashboards.libsonnet
new file mode 100644 (file)
index 0000000..5cae183
--- /dev/null
@@ -0,0 +1,10 @@
+{
+  grafanaDashboards+::
+    (import 'dashboards/cephfs.libsonnet') +
+    (import 'dashboards/host.libsonnet') +
+    (import 'dashboards/osd.libsonnet') +
+    (import 'dashboards/pool.libsonnet') +
+    (import 'dashboards/rbd.libsonnet') +
+    (import 'dashboards/rgw.libsonnet') +
+    { _config:: $._config },
+}
index 3d09a54536de6f790ef7bf0fcd5901cb2018c71c..d12d9f4ddc10b3e9447df807bd8ad921057819d0 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
-local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'cephfs-overview.json':
-      local CephfsOverviewGraphPanel(title, formatY1, labelY1, expr, legendFormat, x, y, w, h) =
-        u.graphPanelSchema({},
-                           title,
-                           '',
-                           'null',
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           0,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr, legendFormat)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'MDS Performance',
-        '',
-        'tbO9LAiZz',
-        'now-1h',
-        '15s',
-        16,
-        [],
-        '',
-        {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
-      )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.2'
+(import 'utils.libsonnet') {
+  'cephfs-overview.json':
+    $.dashboardSchema(
+      'MDS Performance',
+      '',
+      'tbO9LAiZz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags,
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addTemplate(
-        g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
-      )
-      .addTemplate(
-        u.addTemplateSchema('mds_servers',
-                            '$datasource',
-                            'label_values(ceph_mds_inodes, ceph_daemon)',
-                            1,
-                            true,
-                            1,
-                            'MDS Server',
-                            '')
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('mds_servers',
+                          '$datasource',
+                          'label_values(ceph_mds_inodes{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          'MDS Server',
+                          '')
+    )
+    .addPanels([
+      $.addRowSchema(false, true, 'MDS Performance') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
+      $.simpleGraphPanel(
+        {},
+        'MDS Workload - $mds_servers',
+        '',
+        'none',
+        'Reads(-) / Writes (+)',
+        0,
+        'sum(rate(ceph_objecter_op_r{%(matchers)s, ceph_daemon=~"($mds_servers).*"}[$__rate_interval]))' % $.matchers(),
+        'Read Ops',
+        0,
+        1,
+        12,
+        9
       )
-      .addPanels([
-        u.addRowSchema(false, true, 'MDS Performance') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
-        CephfsOverviewGraphPanel(
-          'MDS Workload - $mds_servers',
-          'none',
-          'Reads(-) / Writes (+)',
-          'sum(rate(ceph_objecter_op_r{ceph_daemon=~"($mds_servers).*"}[1m]))',
-          'Read Ops',
-          0,
-          1,
-          12,
-          9
-        )
-        .addTarget(u.addTargetSchema(
-          'sum(rate(ceph_objecter_op_w{ceph_daemon=~"($mds_servers).*"}[1m]))',
-          'Write Ops'
-        ))
-        .addSeriesOverride(
-          { alias: '/.*Reads/', transform: 'negative-Y' }
-        ),
-        CephfsOverviewGraphPanel(
-          'Client Request Load - $mds_servers',
-          'none',
-          'Client Requests',
-          'ceph_mds_server_handle_client_request{ceph_daemon=~"($mds_servers).*"}',
-          '{{ceph_daemon}}',
-          12,
-          1,
-          12,
-          9
-        ),
-      ]),
-  },
+      .addTarget($.addTargetSchema(
+        'sum(rate(ceph_objecter_op_w{%(matchers)s, ceph_daemon=~"($mds_servers).*"}[$__rate_interval]))' % $.matchers(),
+        'Write Ops'
+      ))
+      .addSeriesOverride(
+        { alias: '/.*Reads/', transform: 'negative-Y' }
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Client Request Load - $mds_servers',
+        '',
+        'none',
+        'Client Requests',
+        0,
+        'ceph_mds_server_handle_client_request{%(matchers)s, ceph_daemon=~"($mds_servers).*"}' % $.matchers(),
+        '{{ceph_daemon}}',
+        12,
+        1,
+        12,
+        9
+      ),
+    ]),
 }
diff --git a/ceph/monitoring/ceph-mixin/dashboards/dashboards.libsonnet b/ceph/monitoring/ceph-mixin/dashboards/dashboards.libsonnet
deleted file mode 100644 (file)
index 72ca483..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-(import 'cephfs.libsonnet') +
-(import 'host.libsonnet') +
-(import 'osd.libsonnet') +
-(import 'pool.libsonnet') +
-(import 'rbd.libsonnet') +
-(import 'rgw.libsonnet')
index 06cb66d0a026432c0b3ac120a49c50e5babc7cc0..3e0b31f2c4595fe110ffdc2b0f8bb390f8aee4e4 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
-local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'hosts-overview.json':
-      local HostsOverviewSingleStatPanel(format,
-                                         title,
-                                         description,
-                                         valueName,
-                                         expr,
-                                         instant,
-                                         x,
-                                         y,
-                                         w,
-                                         h) =
-        u.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
-                              '$datasource',
-                              format,
-                              title,
-                              description,
-                              valueName,
-                              false,
-                              100,
-                              false,
-                              false,
-                              '')
-        .addTarget(
-          u.addTargetSchema(expr, '', 'time_series', 1, instant)
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      local HostsOverviewGraphPanel(title, description, formatY1, expr, legendFormat, x, y, w, h) =
-        u.graphPanelSchema(
-          {}, title, description, 'null', false, formatY1, 'short', null, null, 0, 1, '$datasource'
-        )
-        .addTargets(
-          [u.addTargetSchema(
-            expr, legendFormat
-          )]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'Host Overview',
+(import 'utils.libsonnet') {
+  'hosts-overview.json':
+    $.dashboardSchema(
+      'Host Overview',
+      '',
+      'y0KGL0iZz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags,
+      '',
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='singlestat', name='Singlestat', version='5.0.0'
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
+      )
+    )
+    .addTemplate(
+      g.template.datasource('datasource',
+                            'prometheus',
+                            'default',
+                            label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('osd_hosts',
+                          '$datasource',
+                          'label_values(ceph_disk_occupation{%(matchers)s}, exported_instance)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          null,
+                          '([^.]*).*')
+    )
+    .addTemplate(
+      $.addTemplateSchema('mon_hosts',
+                          '$datasource',
+                          'label_values(ceph_mon_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          null,
+                          'mon.(.*)')
+    )
+    .addTemplate(
+      $.addTemplateSchema('mds_hosts',
+                          '$datasource',
+                          'label_values(ceph_mds_inodes{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          null,
+                          'mds.(.*)')
+    )
+    .addTemplate(
+      $.addTemplateSchema('rgw_hosts',
+                          '$datasource',
+                          'label_values(ceph_rgw_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          null,
+                          'rgw.(.*)')
+    )
+    .addPanels([
+      $.simpleSingleStatPanel(
+        'none',
+        'OSD Hosts',
         '',
-        'y0KGL0iZz',
-        'now-1h',
-        '10s',
+        'current',
+        'count(sum by (hostname) (ceph_osd_metadata{%(matchers)s}))' % $.matchers(),
+        true,
+        'time_series',
+        0,
+        0,
+        4,
+        5
+      ),
+      $.simpleSingleStatPanel(
+        'percentunit',
+        'AVG CPU Busy',
+        'Average CPU busy across all hosts (OSD, RGW, MON etc) within the cluster',
+        'current',
+        |||
+          avg(1 - (
+            avg by(instance) (
+              rate(node_cpu_seconds_total{mode='idle',instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}[$__rate_interval]) or
+              rate(node_cpu{mode='idle',instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}[$__rate_interval])
+            )
+          ))
+        |||,
+        true,
+        'time_series',
+        4,
+        0,
+        4,
+        5
+      ),
+      $.simpleSingleStatPanel(
+        'percentunit',
+        'AVG RAM Utilization',
+        'Average Memory Usage across all hosts in the cluster (excludes buffer/cache usage)',
+        'current',
+        |||
+          avg ((
+            (
+              node_memory_MemTotal{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+              node_memory_MemTotal_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}
+            ) - ((
+              node_memory_MemFree{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+              node_memory_MemFree_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}) +
+              (
+                node_memory_Cached{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+                node_memory_Cached_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}
+              ) + (
+                node_memory_Buffers{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+                node_memory_Buffers_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}
+              ) + (
+                node_memory_Slab{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+                node_memory_Slab_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}
+              )
+            )
+          ) / (
+            node_memory_MemTotal{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or
+             node_memory_MemTotal_bytes{instance=~"($osd_hosts|$rgw_hosts|$mon_hosts|$mds_hosts).*"}
+          ))
+        |||,
+        true,
+        'time_series',
+        8,
+        0,
+        4,
+        5
+      ),
+      $.simpleSingleStatPanel(
+        'none',
+        'Physical IOPS',
+        'IOPS Load at the device as reported by the OS on all OSD hosts',
+        'current',
+        |||
+          sum ((
+            rate(node_disk_reads_completed{instance=~"($osd_hosts).*"}[$__rate_interval]) or
+            rate(node_disk_reads_completed_total{instance=~"($osd_hosts).*"}[$__rate_interval])
+          ) + (
+            rate(node_disk_writes_completed{instance=~"($osd_hosts).*"}[$__rate_interval]) or
+            rate(node_disk_writes_completed_total{instance=~"($osd_hosts).*"}[$__rate_interval])
+          ))
+        |||,
+        true,
+        'time_series',
+        12,
+        0,
+        4,
+        5
+      ),
+      $.simpleSingleStatPanel(
+        'percent',
+        'AVG Disk Utilization',
+        'Average Disk utilization for all OSD data devices (i.e. excludes journal/WAL)',
+        'current',
+        |||
+          avg (
+            label_replace(
+              (rate(node_disk_io_time_ms[$__rate_interval]) / 10 ) or
+                (rate(node_disk_io_time_seconds_total[$__rate_interval]) * 100),
+              "instance", "$1", "instance", "([^.:]*).*"
+            ) * on(instance, device) group_left(ceph_daemon) label_replace(
+              label_replace(
+                ceph_disk_occupation_human{%(matchers)s, instance=~"($osd_hosts).*"},
+                "device", "$1", "device", "/dev/(.*)"
+              ), "instance", "$1", "instance", "([^.:]*).*"
+            )
+          )
+        ||| % $.matchers(),
+        true,
+        'time_series',
         16,
-        [],
+        0,
+        4,
+        5
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Network Load',
+        'Total send/receive network load across all hosts in the ceph cluster',
+        'current',
+        |||
+          sum (
+            (
+              rate(node_network_receive_bytes{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[$__rate_interval]) or
+              rate(node_network_receive_bytes_total{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[$__rate_interval])
+            ) unless on (device, instance)
+            label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)")
+          ) +
+          sum (
+            (
+              rate(node_network_transmit_bytes{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[$__rate_interval]) or
+              rate(node_network_transmit_bytes_total{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[$__rate_interval])
+            ) unless on (device, instance)
+            label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)")
+          )
+        |||,
+        true,
+        'time_series',
+        20,
+        0,
+        4,
+        5
+      ),
+      $.simpleGraphPanel(
+        {},
+        'CPU Busy - Top 10 Hosts',
+        'Show the top 10 busiest hosts by cpu',
+        'percent',
+        null,
+        0,
+        |||
+          topk(10,
+            100 * (
+              1 - (
+                avg by(instance) (
+                  rate(node_cpu_seconds_total{mode='idle',instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}[$__rate_interval]) or
+                    rate(node_cpu{mode='idle',instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}[$__rate_interval])
+                )
+              )
+            )
+          )
+        |||,
+        '{{instance}}',
+        0,
+        5,
+        12,
+        9
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Network Load - Top 10 Hosts',
+        'Top 10 hosts by network load',
+        'Bps',
+        null,
+        0,
+        |||
+          topk(10, (sum by(instance) (
+          (
+            rate(node_network_receive_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[$__rate_interval]) or
+            rate(node_network_receive_bytes_total{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[$__rate_interval])
+          ) +
+          (
+            rate(node_network_transmit_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[$__rate_interval]) or
+            rate(node_network_transmit_bytes_total{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[$__rate_interval])
+          ) unless on (device, instance)
+            label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)"))
+          ))
+        |||,
+        '{{instance}}',
+        12,
+        5,
+        12,
+        9
+      ),
+    ]),
+  'host-details.json':
+    $.dashboardSchema(
+      'Host Details',
+      '',
+      'rtOg0AiWz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags + ['overview'],
+      ''
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='singlestat', name='Singlestat', version='5.0.0'
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1, '-- Grafana --', true, true, 'rgba(0, 211, 255, 1)', 'Annotations & Alerts', 'dashboard'
+      )
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('ceph_hosts',
+                          '$datasource',
+                          'label_values({%(clusterMatcher)s}, instance)' % $.matchers(),
+                          1,
+                          false,
+                          3,
+                          'Hostname',
+                          '([^.:]*).*')
+    )
+    .addPanels([
+      $.addRowSchema(false, true, '$ceph_hosts System Overview') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
+      $.simpleSingleStatPanel(
+        'none',
+        'OSDs',
         '',
+        'current',
+        "count(sum by (ceph_daemon) (ceph_osd_metadata{%(matchers)s, hostname='$ceph_hosts'}))" % $.matchers(),
+        null,
+        'time_series',
+        0,
+        1,
+        3,
+        5
+      ),
+      $.simpleGraphPanel(
         {
-          refresh_intervals: ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.2'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addRequired(
-        type='panel', id='singlestat', name='Singlestat', version='5.0.0'
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
+          interrupt: '#447EBC',
+          steal: '#6D1F62',
+          system: '#890F02',
+          user: '#3F6833',
+          wait: '#C15C17',
+        },
+        'CPU Utilization',
+        "Shows the CPU breakdown. When multiple servers are selected, only the first host's cpu data is shown",
+        'percent',
+        '% Utilization',
+        null,
+        |||
+          sum by (mode) (
+            rate(node_cpu{instance=~"($ceph_hosts)([\\\\.:].*)?", mode=~"(irq|nice|softirq|steal|system|user|iowait)"}[$__rate_interval]) or
+            rate(node_cpu_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?", mode=~"(irq|nice|softirq|steal|system|user|iowait)"}[$__rate_interval])
+          ) / (
+            scalar(
+              sum(rate(node_cpu{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) or
+              rate(node_cpu_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]))
+            ) * 100
+          )
+        |||,
+        '{{mode}}',
+        3,
+        1,
+        6,
+        10
+      ),
+      $.simpleGraphPanel(
+        {
+          Available: '#508642',
+          Free: '#508642',
+          Total: '#bf1b00',
+          Used: '#bf1b00',
+          total: '#bf1b00',
+          used: '#0a50a1',
+        },
+        'RAM Usage',
+        '',
+        'bytes',
+        'RAM used',
+        null,
+        |||
+          node_memory_MemFree{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+            node_memory_MemFree_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+        |||,
+        'Free',
+        9,
+        1,
+        6,
+        10
       )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'default',
-                              label='Data Source')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              node_memory_MemTotal{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                node_memory_MemTotal_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+            |||,
+            'total'
+          ),
+          $.addTargetSchema(
+            |||
+              (
+                node_memory_Cached{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                node_memory_Cached_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+              ) + (
+                node_memory_Buffers{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                node_memory_Buffers_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+              ) + (
+                node_memory_Slab{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                node_memory_Slab_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+              )
+            |||,
+            'buffers/cache'
+          ),
+          $.addTargetSchema(
+            |||
+              (
+                node_memory_MemTotal{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                node_memory_MemTotal_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+              ) - (
+                (
+                  node_memory_MemFree{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                  node_memory_MemFree_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+                ) + (
+                  node_memory_Cached{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                  node_memory_Cached_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+                ) + (
+                  node_memory_Buffers{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                  node_memory_Buffers_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+                ) +
+                (
+                  node_memory_Slab{instance=~"$ceph_hosts([\\\\.:].*)?"} or
+                  node_memory_Slab_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}
+                )
+              )
+            |||,
+            'used'
+          ),
+        ]
       )
-      .addTemplate(
-        u.addTemplateSchema('osd_hosts',
-                            '$datasource',
-                            'label_values(ceph_disk_occupation, exported_instance)',
-                            1,
-                            true,
-                            1,
-                            null,
-                            '([^.]*).*')
+      .addSeriesOverride(
+        {
+          alias: 'total',
+          color: '#bf1b00',
+          fill: 0,
+          linewidth: 2,
+          stack: false,
+        }
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Network Load',
+        "Show the network load (rx,tx) across all interfaces (excluding loopback 'lo')",
+        'decbytes',
+        'Send (-) / Receive (+)',
+        null,
+        |||
+          sum by (device) (
+            rate(
+              node_network_receive_bytes{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[$__rate_interval]) or
+              rate(node_network_receive_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[$__rate_interval]
+            )
+          )
+        |||,
+        '{{device}}.rx',
+        15,
+        1,
+        6,
+        10
       )
-      .addTemplate(
-        u.addTemplateSchema('mon_hosts',
-                            '$datasource',
-                            'label_values(ceph_mon_metadata, ceph_daemon)',
-                            1,
-                            true,
-                            1,
-                            null,
-                            'mon.(.*)')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              sum by (device) (
+                rate(node_network_transmit_bytes{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[$__rate_interval]) or
+                rate(node_network_transmit_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[$__rate_interval])
+              )
+            |||,
+            '{{device}}.tx'
+          ),
+        ]
       )
-      .addTemplate(
-        u.addTemplateSchema('mds_hosts',
-                            '$datasource',
-                            'label_values(ceph_mds_inodes, ceph_daemon)',
-                            1,
-                            true,
-                            1,
-                            null,
-                            'mds.(.*)')
+      .addSeriesOverride(
+        { alias: '/.*tx/', transform: 'negative-Y' }
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Network drop rate',
+        '',
+        'pps',
+        'Send (-) / Receive (+)',
+        null,
+        |||
+          rate(node_network_receive_drop{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval]) or
+            rate(node_network_receive_drop_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval])
+        |||,
+        '{{device}}.rx',
+        21,
+        1,
+        3,
+        5
       )
-      .addTemplate(
-        u.addTemplateSchema('rgw_hosts',
-                            '$datasource',
-                            'label_values(ceph_rgw_metadata, ceph_daemon)',
-                            1,
-                            true,
-                            1,
-                            null,
-                            'rgw.(.*)')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              rate(node_network_transmit_drop{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval]) or
+                rate(node_network_transmit_drop_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval])
+            |||,
+            '{{device}}.tx'
+          ),
+        ]
       )
-      .addPanels([
-        HostsOverviewSingleStatPanel(
-          'none',
-          'OSD Hosts',
-          '',
-          'current',
-          'count(sum by (hostname) (ceph_osd_metadata))',
-          true,
-          0,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewSingleStatPanel(
-          'percentunit',
-          'AVG CPU Busy',
-          'Average CPU busy across all hosts (OSD, RGW, MON etc) within the cluster',
-          'current',
-          'avg(\n  1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode=\'idle\',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode=\'idle\',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )',
-          true,
-          4,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewSingleStatPanel(
-          'percentunit',
-          'AVG RAM Utilization',
-          'Average Memory Usage across all hosts in the cluster (excludes buffer/cache usage)',
-          'current',
-          'avg (((node_memory_MemTotal{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_MemTotal_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"})- (\n  (node_memory_MemFree{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_MemFree_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"})  + \n  (node_memory_Cached{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_Cached_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}) + \n  (node_memory_Buffers{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_Buffers_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"}) +\n  (node_memory_Slab{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_Slab_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"})\n  )) /\n (node_memory_MemTotal{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*"} or node_memory_MemTotal_bytes{instance=~"($osd_hosts|$rgw_hosts|$mon_hosts|$mds_hosts).*"} ))',
-          true,
-          8,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewSingleStatPanel(
-          'none',
-          'Physical IOPS',
-          'IOPS Load at the device as reported by the OS on all OSD hosts',
-          'current',
-          'sum ((irate(node_disk_reads_completed{instance=~"($osd_hosts).*"}[5m]) or irate(node_disk_reads_completed_total{instance=~"($osd_hosts).*"}[5m]) )  + \n(irate(node_disk_writes_completed{instance=~"($osd_hosts).*"}[5m]) or irate(node_disk_writes_completed_total{instance=~"($osd_hosts).*"}[5m])))',
-          true,
-          12,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewSingleStatPanel(
-          'percent',
-          'AVG Disk Utilization',
-          'Average Disk utilization for all OSD data devices (i.e. excludes journal/WAL)',
-          'current',
-          'avg (\n  label_replace((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100), "instance", "$1", "instance", "([^.:]*).*"\n  ) *\n  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~"($osd_hosts).*"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^.:]*).*")\n)',
-          true,
-          16,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewSingleStatPanel(
-          'bytes',
-          'Network Load',
-          'Total send/receive network load across all hosts in the ceph cluster',
-          'current',
-          |||
-            sum (
-                    (
-                            irate(node_network_receive_bytes{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[1m]) or
-                            irate(node_network_receive_bytes_total{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[1m])
-                    ) unless on (device, instance)
-                    label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)")
-            ) +
-            sum (
-                    (
-                            irate(node_network_transmit_bytes{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[1m]) or
-                            irate(node_network_transmit_bytes_total{instance=~"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*",device!="lo"}[1m])
-                    ) unless on (device, instance)
-                    label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)")
-                    )
-          |||
-          ,
-          true,
-          20,
-          0,
-          4,
-          5
-        ),
-        HostsOverviewGraphPanel(
-          'CPU Busy - Top 10 Hosts',
-          'Show the top 10 busiest hosts by cpu',
-          'percent',
-          'topk(10,100 * ( 1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode=\'idle\',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode=\'idle\',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )\n)',
-          '{{instance}}',
-          0,
-          5,
-          12,
-          9
-        ),
-        HostsOverviewGraphPanel(
-          'Network Load - Top 10 Hosts', 'Top 10 hosts by network load', 'Bps', |||
-            topk(10, (sum by(instance) (
-            (
-                    irate(node_network_receive_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[1m]) or
-                    irate(node_network_receive_bytes_total{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[1m])
-            ) +
-            (
-                    irate(node_network_transmit_bytes{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[1m]) or
-                    irate(node_network_transmit_bytes_total{instance=~"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*",device!="lo"}[1m])
-            ) unless on (device, instance)
-                    label_replace((bonding_slaves > 0), "device", "$1", "master", "(.+)"))
-            ))
-          |||
-          , '{{instance}}', 12, 5, 12, 9
-        ),
-      ]),
-    'host-details.json':
-      local HostDetailsSingleStatPanel(format,
-                                       title,
-                                       description,
-                                       valueName,
-                                       expr,
-                                       x,
-                                       y,
-                                       w,
-                                       h) =
-        u.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
-                              '$datasource',
-                              format,
-                              title,
-                              description,
-                              valueName,
-                              false,
-                              100,
-                              false,
-                              false,
-                              '')
-        .addTarget(u.addTargetSchema(expr)) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      local HostDetailsGraphPanel(alias,
-                                  title,
-                                  description,
-                                  nullPointMode,
-                                  formatY1,
-                                  labelY1,
-                                  expr,
-                                  legendFormat,
-                                  x,
-                                  y,
-                                  w,
-                                  h) =
-        u.graphPanelSchema(alias,
-                           title,
-                           description,
-                           nullPointMode,
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           null,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr, legendFormat)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'Host Details',
-        '',
-        'rtOg0AiWz',
-        'now-1h',
-        '10s',
-        16,
-        ['overview'],
-        '',
+      .addSeriesOverride(
         {
-          refresh_intervals: ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
+          alias: '/.*tx/',
+          transform: 'negative-Y',
         }
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Raw Capacity',
+        'Each OSD consists of a Journal/WAL partition and a data partition. The RAW Capacity shown is the sum of the data partitions across all OSDs on the selected OSD hosts.',
+        'current',
+        |||
+          sum(
+            ceph_osd_stat_bytes{%(matchers)s} and
+              on (ceph_daemon) ceph_disk_occupation{%(matchers)s, instance=~"($ceph_hosts)([\\\\.:].*)?"}
+          )
+        ||| % $.matchers(),
+        null,
+        'time_series',
+        0,
+        6,
+        3,
+        5
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Network error rate',
+        '',
+        'pps',
+        'Send (-) / Receive (+)',
+        null,
+        |||
+          rate(node_network_receive_errs{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval]) or
+            rate(node_network_receive_errs_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval])
+        |||,
+        '{{device}}.rx',
+        21,
+        6,
+        3,
+        5
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.2'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
+      .addTargets(
+        [$.addTargetSchema(
+          |||
+            rate(node_network_transmit_errs{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval]) or
+              rate(node_network_transmit_errs_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[$__rate_interval])
+          |||,
+          '{{device}}.tx'
+        )]
       )
-      .addRequired(
-        type='panel', id='singlestat', name='Singlestat', version='5.0.0'
+      .addSeriesOverride(
+        {
+          alias: '/.*tx/',
+          transform: 'negative-Y',
+        }
+      ),
+      $.addRowSchema(false,
+                     true,
+                     'OSD Disk Performance Statistics') + { gridPos: { x: 0, y: 11, w: 24, h: 1 } },
+      $.simpleGraphPanel(
+        {},
+        '$ceph_hosts Disk IOPS',
+        "For any OSD devices on the host, this chart shows the iops per physical device. Each device is shown by it's name and corresponding OSD id value",
+        'ops',
+        'Read (-) / Write (+)',
+        null,
+        |||
+          label_replace(
+            (
+              rate(node_disk_writes_completed{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) or
+              rate(node_disk_writes_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          ) * on(instance, device) group_left(ceph_daemon) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s}, "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{device}}({{ceph_daemon}}) writes',
+        0,
+        12,
+        11,
+        9
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1, '-- Grafana --', true, true, 'rgba(0, 211, 255, 1)', 'Annotations & Alerts', 'dashboard'
-        )
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              label_replace(
+                (
+                  rate(node_disk_reads_completed{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) or
+                  rate(node_disk_reads_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])
+                ), "instance", "$1", "instance", "([^:.]*).*"
+              ) * on(instance, device) group_left(ceph_daemon) label_replace(
+                label_replace(
+                  ceph_disk_occupation_human{%(matchers)s},"device", "$1", "device", "/dev/(.*)"
+                ), "instance", "$1", "instance", "([^:.]*).*"
+              )
+            ||| % $.matchers(),
+            '{{device}}({{ceph_daemon}}) reads'
+          ),
+        ]
       )
-      .addTemplate(
-        g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+      .addSeriesOverride(
+        { alias: '/.*reads/', transform: 'negative-Y' }
+      ),
+      $.simpleGraphPanel(
+        {},
+        '$ceph_hosts Throughput by Disk',
+        'For OSD hosts, this chart shows the disk bandwidth (read bytes/sec + write bytes/sec) of the physical OSD device. Each device is shown by device name, and corresponding OSD id',
+        'Bps',
+        'Read (-) / Write (+)',
+        null,
+        |||
+          label_replace(
+            (
+              rate(node_disk_bytes_written{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) or
+              rate(node_disk_written_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])
+            ), "instance", "$1", "instance", "([^:.]*).*") * on(instance, device)
+            group_left(ceph_daemon) label_replace(
+              label_replace(ceph_disk_occupation_human{%(matchers)s}, "device", "$1", "device", "/dev/(.*)"),
+              "instance", "$1", "instance", "([^:.]*).*"
+            )
+        ||| % $.matchers(),
+        '{{device}}({{ceph_daemon}}) write',
+        12,
+        12,
+        11,
+        9
       )
-      .addTemplate(
-        u.addTemplateSchema('ceph_hosts', '$datasource', 'label_values(node_scrape_collector_success, instance) ', 1, false, 3, 'Hostname', '([^.:]*).*')
+      .addTargets(
+        [$.addTargetSchema(
+          |||
+            label_replace(
+              (
+                rate(node_disk_bytes_read{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) or
+                rate(node_disk_read_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])
+              ),
+              "instance", "$1", "instance", "([^:.]*).*") * on(instance, device)
+              group_left(ceph_daemon) label_replace(
+                label_replace(ceph_disk_occupation_human{%(matchers)s}, "device", "$1", "device", "/dev/(.*)"),
+                "instance", "$1", "instance", "([^:.]*).*"
+              )
+          ||| % $.matchers(),
+          '{{device}}({{ceph_daemon}}) read'
+        )]
       )
-      .addPanels([
-        u.addRowSchema(false, true, '$ceph_hosts System Overview') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
-        HostDetailsSingleStatPanel(
-          'none',
-          'OSDs',
-          '',
-          'current',
-          "count(sum by (ceph_daemon) (ceph_osd_metadata{hostname='$ceph_hosts'}))",
-          0,
-          1,
-          3,
-          5
-        ),
-        HostDetailsGraphPanel(
-          {
-            interrupt: '#447EBC',
-            steal: '#6D1F62',
-            system: '#890F02',
-            user: '#3F6833',
-            wait: '#C15C17',
-          }, 'CPU Utilization', "Shows the CPU breakdown. When multiple servers are selected, only the first host's cpu data is shown", 'null', 'percent', '% Utilization', 'sum by (mode) (\n  irate(node_cpu{instance=~"($ceph_hosts)([\\\\.:].*)?", mode=~"(irq|nice|softirq|steal|system|user|iowait)"}[1m]) or\n  irate(node_cpu_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?", mode=~"(irq|nice|softirq|steal|system|user|iowait)"}[1m])\n) / scalar(\n  sum(irate(node_cpu{instance=~"($ceph_hosts)([\\\\.:].*)?"}[1m]) or\n      irate(node_cpu_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[1m]))\n) * 100', '{{mode}}', 3, 1, 6, 10
-        ),
-        HostDetailsGraphPanel(
-          {
-            Available: '#508642',
-            Free: '#508642',
-            Total: '#bf1b00',
-            Used: '#bf1b00',
-            total: '#bf1b00',
-            used: '#0a50a1',
-          },
-          'RAM Usage',
-          '',
-          'null',
-          'bytes',
-          'RAM used',
-          'node_memory_MemFree{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_MemFree_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"} ',
-          'Free',
-          9,
-          1,
-          6,
-          10
-        )
-        .addTargets(
-          [
-            u.addTargetSchema('node_memory_MemTotal{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_MemTotal_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"} ', 'total'),
-            u.addTargetSchema('(node_memory_Cached{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Cached_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}) + \n(node_memory_Buffers{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Buffers_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}) +\n(node_memory_Slab{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Slab_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}) \n', 'buffers/cache'),
-            u.addTargetSchema('(node_memory_MemTotal{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_MemTotal_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"})- (\n  (node_memory_MemFree{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_MemFree_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"})  + \n  (node_memory_Cached{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Cached_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}) + \n  (node_memory_Buffers{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Buffers_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"}) +\n  (node_memory_Slab{instance=~"$ceph_hosts([\\\\.:].*)?"} or node_memory_Slab_bytes{instance=~"$ceph_hosts([\\\\.:].*)?"})\n  )\n  \n', 'used'),
-          ]
-        )
-        .addSeriesOverride(
-          {
-            alias: 'total',
-            color: '#bf1b00',
-            fill: 0,
-            linewidth: 2,
-            stack: false,
-          }
-        ),
-        HostDetailsGraphPanel(
-          {},
-          'Network Load',
-          "Show the network load (rx,tx) across all interfaces (excluding loopback 'lo')",
-          'null',
-          'decbytes',
-          'Send (-) / Receive (+)',
-          'sum by (device) (\n  irate(node_network_receive_bytes{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[1m]) or \n  irate(node_network_receive_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[1m])\n)',
-          '{{device}}.rx',
-          15,
-          1,
-          6,
-          10
-        )
-        .addTargets(
-          [
-            u.addTargetSchema('sum by (device) (\n  irate(node_network_transmit_bytes{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[1m]) or\n  irate(node_network_transmit_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?",device!="lo"}[1m])\n)', '{{device}}.tx'),
-          ]
-        )
-        .addSeriesOverride(
-          { alias: '/.*tx/', transform: 'negative-Y' }
-        ),
-        HostDetailsGraphPanel(
-          {},
-          'Network drop rate',
-          '',
-          'null',
-          'pps',
-          'Send (-) / Receive (+)',
-          'irate(node_network_receive_drop{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m]) or irate(node_network_receive_drop_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m])',
-          '{{device}}.rx',
-          21,
-          1,
-          3,
-          5
-        )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              'irate(node_network_transmit_drop{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m]) or irate(node_network_transmit_drop_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m])', '{{device}}.tx'
-            ),
-          ]
-        )
-        .addSeriesOverride(
-          {
-            alias: '/.*tx/',
-            transform: 'negative-Y',
-          }
-        ),
-        HostDetailsSingleStatPanel(
-          'bytes',
-          'Raw Capacity',
-          'Each OSD consists of a Journal/WAL partition and a data partition. The RAW Capacity shown is the sum of the data partitions across all OSDs on the selected OSD hosts.',
-          'current',
-          'sum(ceph_osd_stat_bytes and on (ceph_daemon) ceph_disk_occupation{instance=~"($ceph_hosts)([\\\\.:].*)?"})',
-          0,
-          6,
-          3,
-          5
-        ),
-        HostDetailsGraphPanel(
-          {},
-          'Network error rate',
-          '',
-          'null',
-          'pps',
-          'Send (-) / Receive (+)',
-          'irate(node_network_receive_errs{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m]) or irate(node_network_receive_errs_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m])',
-          '{{device}}.rx',
-          21,
-          6,
-          3,
-          5
-        )
-        .addTargets(
-          [u.addTargetSchema(
-            'irate(node_network_transmit_errs{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m]) or irate(node_network_transmit_errs_total{instance=~"$ceph_hosts([\\\\.:].*)?"}[1m])', '{{device}}.tx'
-          )]
-        )
-        .addSeriesOverride(
-          {
-            alias: '/.*tx/',
-            transform: 'negative-Y',
-          }
-        ),
-        u.addRowSchema(false,
-                       true,
-                       'OSD Disk Performance Statistics') + { gridPos: { x: 0, y: 11, w: 24, h: 1 } },
-        HostDetailsGraphPanel(
-          {},
-          '$ceph_hosts Disk IOPS',
-          "For any OSD devices on the host, this chart shows the iops per physical device. Each device is shown by it's name and corresponding OSD id value",
-          'connected',
-          'ops',
-          'Read (-) / Write (+)',
-          'label_replace(\n  (\n    irate(node_disk_writes_completed{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) or\n    irate(node_disk_writes_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m])\n  ),\n  "instance",\n  "$1",\n  "instance",\n  "([^:.]*).*"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      "device",\n      "$1",\n      "device",\n      "/dev/(.*)"\n    ),\n    "instance",\n    "$1",\n    "instance",\n    "([^:.]*).*"\n  )',
-          '{{device}}({{ceph_daemon}}) writes',
-          0,
-          12,
-          11,
-          9
-        )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              'label_replace(\n    (irate(node_disk_reads_completed{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) or irate(node_disk_reads_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m])),\n    "instance",\n    "$1",\n    "instance",\n    "([^:.]*).*"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      "device",\n      "$1",\n      "device",\n      "/dev/(.*)"\n    ),\n    "instance",\n    "$1",\n    "instance",\n    "([^:.]*).*"\n  )',
-              '{{device}}({{ceph_daemon}}) reads'
-            ),
-          ]
-        )
-        .addSeriesOverride(
-          { alias: '/.*reads/', transform: 'negative-Y' }
-        ),
-        HostDetailsGraphPanel(
-          {},
-          '$ceph_hosts Throughput by Disk',
-          'For OSD hosts, this chart shows the disk bandwidth (read bytes/sec + write bytes/sec) of the physical OSD device. Each device is shown by device name, and corresponding OSD id',
-          'connected',
-          'Bps',
-          'Read (-) / Write (+)',
-          'label_replace((irate(node_disk_bytes_written{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) or irate(node_disk_written_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m])), "instance", "$1", "instance", "([^:.]*).*") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{device}}({{ceph_daemon}}) write',
-          12,
-          12,
-          11,
-          9
-        )
-        .addTargets(
-          [u.addTargetSchema(
-            'label_replace((irate(node_disk_bytes_read{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) or irate(node_disk_read_bytes_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m])), "instance", "$1", "instance", "([^:.]*).*") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-            '{{device}}({{ceph_daemon}}) read'
-          )]
-        )
-        .addSeriesOverride(
-          { alias: '/.*read/', transform: 'negative-Y' }
-        ),
-        HostDetailsGraphPanel(
-          {},
-          '$ceph_hosts Disk Latency',
-          "For OSD hosts, this chart shows the latency at the physical drive. Each drive is shown by device name, with it's corresponding OSD id",
-          'null as zero',
-          's',
-          '',
-          'max by(instance,device) (label_replace((irate(node_disk_write_time_seconds_total{ instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) )  / clamp_min(irate(node_disk_writes_completed_total{ instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]), 0.001) or   (irate(node_disk_read_time_seconds_total{ instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) )  / clamp_min(irate(node_disk_reads_completed_total{ instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]), 0.001), "instance", "$1", "instance", "([^:.]*).*")) *  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~"($ceph_hosts)([\\\\.:].*)?"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{device}}({{ceph_daemon}})',
-          0,
-          21,
-          11,
-          9
-        ),
-        HostDetailsGraphPanel(
-          {},
-          '$ceph_hosts Disk utilization',
-          'Show disk utilization % (util) of any OSD devices on the host by the physical device name and associated OSD id.',
-          'connected',
-          'percent',
-          '%Util',
-          'label_replace(((irate(node_disk_io_time_ms{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) / 10 ) or  irate(node_disk_io_time_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[5m]) * 100), "instance", "$1", "instance", "([^:.]*).*") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~"($ceph_hosts)([\\\\.:].*)?"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{device}}({{ceph_daemon}})',
-          12,
-          21,
-          11,
-          9
-        ),
-      ]),
-  },
+      .addSeriesOverride(
+        { alias: '/.*read/', transform: 'negative-Y' }
+      ),
+      $.simpleGraphPanel(
+        {},
+        '$ceph_hosts Disk Latency',
+        "For OSD hosts, this chart shows the latency at the physical drive. Each drive is shown by device name, with it's corresponding OSD id",
+        's',
+        '',
+        null,
+        |||
+          max by(instance, device) (label_replace(
+            (rate(node_disk_write_time_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])) /
+              clamp_min(rate(node_disk_writes_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]), 0.001) or
+              (rate(node_disk_read_time_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval])) /
+                clamp_min(rate(node_disk_reads_completed_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]), 0.001),
+            "instance", "$1", "instance", "([^:.]*).*"
+          )) * on(instance, device) group_left(ceph_daemon) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{instance=~"($ceph_hosts)([\\\\.:].*)?"},
+              "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{device}}({{ceph_daemon}})',
+        0,
+        21,
+        11,
+        9
+      ),
+      $.simpleGraphPanel(
+        {},
+        '$ceph_hosts Disk utilization',
+        'Show disk utilization % (util) of any OSD devices on the host by the physical device name and associated OSD id.',
+        'percent',
+        '%Util',
+        null,
+        |||
+          label_replace(
+            (
+              (rate(node_disk_io_time_ms{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) / 10) or
+              rate(node_disk_io_time_seconds_total{instance=~"($ceph_hosts)([\\\\.:].*)?"}[$__rate_interval]) * 100
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          ) * on(instance, device) group_left(ceph_daemon) label_replace(
+            label_replace(ceph_disk_occupation_human{%(matchers)s, instance=~"($ceph_hosts)([\\\\.:].*)?"},
+            "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{device}}({{ceph_daemon}})',
+        12,
+        21,
+        11,
+        9
+      ),
+    ]),
 }
index c5e614675e3f210d18cc2b21b4864dc4602409ba..129b74ba6669112df29001a6f63345c860678afe 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
-local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'osds-overview.json':
-      local OsdOverviewStyle(alias, pattern, type, unit) =
-        u.addStyle(alias, null, [
-          'rgba(245, 54, 54, 0.9)',
-          'rgba(237, 129, 40, 0.89)',
-          'rgba(50, 172, 45, 0.97)',
-        ], 'YYYY-MM-DD HH:mm:ss', 2, 1, pattern, [], type, unit, []);
-      local OsdOverviewGraphPanel(alias,
-                                  title,
-                                  description,
-                                  formatY1,
-                                  labelY1,
-                                  min,
-                                  expr,
-                                  legendFormat1,
-                                  x,
-                                  y,
-                                  w,
-                                  h) =
-        u.graphPanelSchema(alias,
-                           title,
-                           description,
-                           'null',
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           min,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr, legendFormat1)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-      local OsdOverviewPieChartPanel(alias, description, title) =
-        u.addPieChartSchema(alias,
-                            '$datasource',
-                            description,
-                            'Under graph',
-                            'pie',
-                            title,
-                            'current');
-      local OsdOverviewSingleStatPanel(colors,
-                                       format,
-                                       title,
-                                       description,
-                                       valueName,
-                                       colorValue,
-                                       gaugeMaxValue,
-                                       gaugeShow,
-                                       sparkLineShow,
-                                       thresholds,
-                                       expr,
-                                       x,
-                                       y,
-                                       w,
-                                       h) =
-        u.addSingleStatSchema(
-          colors,
-          '$datasource',
-          format,
-          title,
-          description,
-          valueName,
-          colorValue,
-          gaugeMaxValue,
-          gaugeShow,
-          sparkLineShow,
-          thresholds
-        )
-        .addTarget(
-          u.addTargetSchema(expr)
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'OSD Overview',
-        '',
-        'lo02I1Aiz',
-        'now-1h',
-        '10s',
-        16,
-        [],
-        '',
-        {
-          refresh_intervals: ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
+(import 'utils.libsonnet') {
+  'osds-overview.json':
+    $.dashboardSchema(
+      'OSD Overview',
+      '',
+      'lo02I1Aiz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags,
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.0.0'
-      )
-      .addRequired(
-        type='panel', id='grafana-piechart-panel', name='Pie Chart', version='1.3.3'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addRequired(
-        type='panel', id='table', name='Table', version='5.0.0'
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='grafana-piechart-panel', name='Pie Chart', version='1.3.3'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='table', name='Table', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addPanels([
+      $.simpleGraphPanel(
+        { '@95%ile': '#e0752d' },
+        'OSD Read Latencies',
+        '',
+        'ms',
+        null,
+        '0',
+        |||
+          avg (
+            rate(ceph_osd_op_r_latency_sum{%(matchers)s}[$__rate_interval]) /
+              on (ceph_daemon) rate(ceph_osd_op_r_latency_count{%(matchers)s}[$__rate_interval]) * 1000
+          )
+        ||| % $.matchers(),
+        'AVG read',
+        0,
+        0,
+        8,
+        8
       )
-      .addTemplate(
-        g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              max(
+                rate(ceph_osd_op_r_latency_sum{%(matchers)s}[$__rate_interval]) /
+                on (ceph_daemon) rate(ceph_osd_op_r_latency_count{%(matchers)s}[$__rate_interval]) * 1000
+              )
+            ||| % $.matchers(),
+            'MAX read'
+          ),
+          $.addTargetSchema(
+            |||
+              quantile(0.95,
+                (
+                  rate(ceph_osd_op_r_latency_sum{%(matchers)s}[$__rate_interval]) /
+                    on (ceph_daemon) rate(ceph_osd_op_r_latency_count{%(matchers)s}[$__rate_interval])
+                    * 1000
+                )
+              )
+            ||| % $.matchers(),
+            '@95%ile'
+          ),
+        ],
+      ),
+      $.addTableSchema(
+        '$datasource',
+        "This table shows the osd's that are delivering the 10 highest read latencies within the cluster",
+        { col: 2, desc: true },
+        [
+          $.overviewStyle('OSD ID', 'ceph_daemon', 'string', 'short'),
+          $.overviewStyle('Latency (ms)', 'Value', 'number', 'none'),
+          $.overviewStyle('', '/.*/', 'hidden', 'short'),
+        ],
+        'Highest READ Latencies',
+        'table'
       )
-      .addPanels([
-        OsdOverviewGraphPanel(
-          { '@95%ile': '#e0752d' },
-          'OSD Read Latencies',
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk(10,
+              (sort(
+                (
+                  rate(ceph_osd_op_r_latency_sum{%(matchers)s}[$__rate_interval]) /
+                    on (ceph_daemon) rate(ceph_osd_op_r_latency_count{%(matchers)s}[$__rate_interval]) *
+                    1000
+                )
+              ))
+            )
+          ||| % $.matchers(),
           '',
-          'ms',
-          null,
-          '0',
-          'avg (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)',
-          'AVG read',
-          0,
-          0,
-          8,
-          8
-        )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              'max (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)',
-              'MAX read'
-            ),
-            u.addTargetSchema(
-              'quantile(0.95,\n  (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)\n)', '@95%ile'
-            ),
-          ],
-        ),
-        u.addTableSchema(
-          '$datasource',
-          "This table shows the osd's that are delivering the 10 highest read latencies within the cluster",
-          { col: 2, desc: true },
-          [
-            OsdOverviewStyle('OSD ID', 'ceph_daemon', 'string', 'short'),
-            OsdOverviewStyle('Latency (ms)', 'Value', 'number', 'none'),
-            OsdOverviewStyle('', '/.*/', 'hidden', 'short'),
-          ],
-          'Highest READ Latencies',
-          'table'
+          'table',
+          1,
+          true
         )
-        .addTarget(
-          u.addTargetSchema(
-            'topk(10,\n  (sort(\n    (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)\n  ))\n)\n\n', '', 'table', 1, true
+      ) + { gridPos: { x: 8, y: 0, w: 4, h: 8 } },
+      $.simpleGraphPanel(
+        {
+          '@95%ile write': '#e0752d',
+        },
+        'OSD Write Latencies',
+        '',
+        'ms',
+        null,
+        '0',
+        |||
+          avg(
+            rate(ceph_osd_op_w_latency_sum{%(matchers)s}[$__rate_interval]) /
+              on (ceph_daemon) rate(ceph_osd_op_w_latency_count{%(matchers)s}[$__rate_interval])
+              * 1000
           )
-        ) + { gridPos: { x: 8, y: 0, w: 4, h: 8 } },
-        OsdOverviewGraphPanel(
-          {
-            '@95%ile write': '#e0752d',
-          },
-          'OSD Write Latencies',
+        ||| % $.matchers(),
+        'AVG write',
+        12,
+        0,
+        8,
+        8
+      )
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              max(
+                rate(ceph_osd_op_w_latency_sum{%(matchers)s}[$__rate_interval]) /
+                  on (ceph_daemon) rate(ceph_osd_op_w_latency_count{%(matchers)s}[$__rate_interval]) *
+                  1000
+              )
+            ||| % $.matchers(), 'MAX write'
+          ),
+          $.addTargetSchema(
+            |||
+              quantile(0.95, (
+                rate(ceph_osd_op_w_latency_sum{%(matchers)s}[$__rate_interval]) /
+                  on (ceph_daemon) rate(ceph_osd_op_w_latency_count{%(matchers)s}[$__rate_interval]) *
+                  1000
+              ))
+            ||| % $.matchers(), '@95%ile write'
+          ),
+        ],
+      ),
+      $.addTableSchema(
+        '$datasource',
+        "This table shows the osd's that are delivering the 10 highest write latencies within the cluster",
+        { col: 2, desc: true },
+        [
+          $.overviewStyle(
+            'OSD ID', 'ceph_daemon', 'string', 'short'
+          ),
+          $.overviewStyle('Latency (ms)', 'Value', 'number', 'none'),
+          $.overviewStyle('', '/.*/', 'hidden', 'short'),
+        ],
+        'Highest WRITE Latencies',
+        'table'
+      )
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk(10,
+              (sort(
+                (rate(ceph_osd_op_w_latency_sum{%(matchers)s}[$__rate_interval]) /
+                  on (ceph_daemon) rate(ceph_osd_op_w_latency_count{%(matchers)s}[$__rate_interval]) *
+                  1000)
+              ))
+            )
+          ||| % $.matchers(),
           '',
-          'ms',
-          null,
-          '0',
-          'avg (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)',
-          'AVG write',
-          12,
-          0,
-          8,
-          8
-        )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              'max (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)',
-              'MAX write'
-            ),
-            u.addTargetSchema(
-              'quantile(0.95,\n (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)\n)', '@95%ile write'
-            ),
-          ],
-        ),
-        u.addTableSchema(
-          '$datasource',
-          "This table shows the osd's that are delivering the 10 highest write latencies within the cluster",
-          { col: 2, desc: true },
-          [
-            OsdOverviewStyle(
-              'OSD ID', 'ceph_daemon', 'string', 'short'
-            ),
-            OsdOverviewStyle('Latency (ms)', 'Value', 'number', 'none'),
-            OsdOverviewStyle('', '/.*/', 'hidden', 'short'),
-          ],
-          'Highest WRITE Latencies',
-          'table'
-        )
-        .addTarget(
-          u.addTargetSchema(
-            'topk(10,\n  (sort(\n    (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)\n  ))\n)\n\n',
-            '',
-            'table',
-            1,
-            true
-          )
-        ) + { gridPos: { x: 20, y: 0, w: 4, h: 8 } },
-        OsdOverviewPieChartPanel(
-          {}, '', 'OSD Types Summary'
+          'table',
+          1,
+          true
         )
-        .addTarget(
-          u.addTargetSchema('count by (device_class) (ceph_osd_metadata)', '{{device_class}}')
-        ) + { gridPos: { x: 0, y: 8, w: 4, h: 8 } },
-        OsdOverviewPieChartPanel(
-          { 'Non-Encrypted': '#E5AC0E' }, '', 'OSD Objectstore Types'
+      ) + { gridPos: { x: 20, y: 0, w: 4, h: 8 } },
+      $.simplePieChart(
+        {}, '', 'OSD Types Summary'
+      )
+      .addTarget(
+        $.addTargetSchema('count by (device_class) (ceph_osd_metadata{%(matchers)s})' % $.matchers(), '{{device_class}}')
+      ) + { gridPos: { x: 0, y: 8, w: 4, h: 8 } },
+      $.simplePieChart(
+        { 'Non-Encrypted': '#E5AC0E' }, '', 'OSD Objectstore Types'
+      )
+      .addTarget(
+        $.addTargetSchema(
+          'count(ceph_bluefs_wal_total_bytes{%(matchers)s})' % $.matchers(), 'bluestore', 'time_series', 2
         )
-        .addTarget(
-          u.addTargetSchema(
-            'count(ceph_bluefs_wal_total_bytes)', 'bluestore', 'time_series', 2
-          )
+      )
+      .addTarget(
+        $.addTargetSchema(
+          'absent(ceph_bluefs_wal_total_bytes{%(matchers)s}) * count(ceph_osd_metadata{%(matchers)s})' % $.matchers(), 'filestore', 'time_series', 2
         )
-        .addTarget(
-          u.addTargetSchema(
-            'absent(ceph_bluefs_wal_total_bytes)*count(ceph_osd_metadata)', 'filestore', 'time_series', 2
+      ) + { gridPos: { x: 4, y: 8, w: 4, h: 8 } },
+      $.simplePieChart(
+        {}, 'The pie chart shows the various OSD sizes used within the cluster', 'OSD Size Summary'
+      )
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} < 1099511627776)' % $.matchers(), '<1TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 1099511627776 < 2199023255552)' % $.matchers(), '<2TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 2199023255552 < 3298534883328)' % $.matchers(), '<3TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 3298534883328 < 4398046511104)' % $.matchers(), '<4TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 4398046511104 < 6597069766656)' % $.matchers(), '<6TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 6597069766656 < 8796093022208)' % $.matchers(), '<8TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 8796093022208 < 10995116277760)' % $.matchers(), '<10TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 10995116277760 < 13194139533312)' % $.matchers(), '<12TB', 'time_series', 2
+      ))
+      .addTarget($.addTargetSchema(
+        'count(ceph_osd_stat_bytes{%(matchers)s} >= 13194139533312)' % $.matchers(), '<12TB+', 'time_series', 2
+      )) + { gridPos: { x: 8, y: 8, w: 4, h: 8 } },
+      g.graphPanel.new(bars=true,
+                       datasource='$datasource',
+                       title='Distribution of PGs per OSD',
+                       x_axis_buckets=20,
+                       x_axis_mode='histogram',
+                       x_axis_values=['total'],
+                       formatY1='short',
+                       formatY2='short',
+                       labelY1='# of OSDs',
+                       min='0',
+                       nullPointMode='null')
+      .addTarget($.addTargetSchema(
+        'ceph_osd_numpg{%(matchers)s}' % $.matchers(), 'PGs per OSD', 'time_series', 1, true
+      )) + { gridPos: { x: 12, y: 8, w: 8, h: 8 } },
+      $.gaugeSingleStatPanel(
+        'percentunit',
+        'OSD onode Hits Ratio',
+        'This gauge panel shows onode Hits ratio to help determine if increasing RAM per OSD could help improve the performance of the cluster',
+        'current',
+        true,
+        1,
+        true,
+        false,
+        '.75',
+        |||
+          sum(ceph_bluestore_onode_hits{%(matchers)s}) / (
+            sum(ceph_bluestore_onode_hits{%(matchers)s}) +
+            sum(ceph_bluestore_onode_misses{%(matchers)s})
           )
-        ) + { gridPos: { x: 4, y: 8, w: 4, h: 8 } },
-        OsdOverviewPieChartPanel(
-          {}, 'The pie chart shows the various OSD sizes used within the cluster', 'OSD Size Summary'
-        )
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes < 1099511627776)', '<1TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 1099511627776 < 2199023255552)', '<2TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 2199023255552 < 3298534883328)', '<3TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 3298534883328 < 4398046511104)', '<4TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 4398046511104 < 6597069766656)', '<6TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 6597069766656 < 8796093022208)', '<8TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 8796093022208 < 10995116277760)', '<10TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 10995116277760 < 13194139533312)', '<12TB', 'time_series', 2
-        ))
-        .addTarget(u.addTargetSchema(
-          'count(ceph_osd_stat_bytes >= 13194139533312)', '<12TB+', 'time_series', 2
-        )) + { gridPos: { x: 8, y: 8, w: 4, h: 8 } },
-        g.graphPanel.new(bars=true,
-                         datasource='$datasource',
-                         title='Distribution of PGs per OSD',
-                         x_axis_buckets=20,
-                         x_axis_mode='histogram',
-                         x_axis_values=['total'],
-                         formatY1='short',
-                         formatY2='short',
-                         labelY1='# of OSDs',
-                         min='0',
-                         nullPointMode='null')
-        .addTarget(u.addTargetSchema(
-          'ceph_osd_numpg\n', 'PGs per OSD', 'time_series', 1, true
-        )) + { gridPos: { x: 12, y: 8, w: 8, h: 8 } },
-        OsdOverviewSingleStatPanel(
-          ['#d44a3a', '#299c46'],
-          'percentunit',
-          'OSD onode Hits Ratio',
-          'This gauge panel shows onode Hits ratio to help determine if increasing RAM per OSD could help improve the performance of the cluster',
-          'current',
-          true,
-          1,
-          true,
-          false,
-          '.75',
-          'sum(ceph_bluestore_onode_hits)/(sum(ceph_bluestore_onode_hits) + sum(ceph_bluestore_onode_misses))',
-          20,
-          8,
-          4,
-          8
-        ),
-        u.addRowSchema(false,
-                       true,
-                       'R/W Profile') + { gridPos: { x: 0, y: 16, w: 24, h: 1 } },
-        OsdOverviewGraphPanel(
-          {},
-          'Read/Write Profile',
-          'Show the read/write workload profile overtime',
-          'short',
-          null,
-          null,
-          'round(sum(irate(ceph_pool_rd[30s])))',
-          'Reads',
-          0,
-          17,
-          24,
-          8
-        )
-        .addTargets([u.addTargetSchema(
-          'round(sum(irate(ceph_pool_wr[30s])))', 'Writes'
-        )]),
-      ]),
-    'osd-device-details.json':
-      local OsdDeviceDetailsPanel(title,
-                                  description,
-                                  formatY1,
-                                  labelY1,
-                                  expr1,
-                                  expr2,
-                                  legendFormat1,
-                                  legendFormat2,
-                                  x,
-                                  y,
-                                  w,
-                                  h) =
-        u.graphPanelSchema({},
-                           title,
-                           description,
-                           'null',
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           null,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [
-            u.addTargetSchema(expr1,
-                              legendFormat1),
-            u.addTargetSchema(expr2, legendFormat2),
-          ]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
+        ||| % $.matchers(),
+        'time_series',
+        20,
+        8,
+        4,
+        8
+      ),
+      $.addRowSchema(false,
+                     true,
+                     'R/W Profile') + { gridPos: { x: 0, y: 16, w: 24, h: 1 } },
+      $.simpleGraphPanel(
+        {},
+        'Read/Write Profile',
+        'Show the read/write workload profile overtime',
+        'short',
+        null,
+        null,
+        'round(sum(rate(ceph_pool_rd{%(matchers)s}[$__rate_interval])))' % $.matchers(),
+        'Reads',
+        0,
+        17,
+        24,
+        8
+      )
+      .addTargets([$.addTargetSchema(
+        'round(sum(rate(ceph_pool_wr{%(matchers)s}[$__rate_interval])))' % $.matchers(), 'Writes'
+      )]),
+    ]),
+  'osd-device-details.json':
+    local OsdDeviceDetailsPanel(title,
+                                description,
+                                formatY1,
+                                labelY1,
+                                expr1,
+                                expr2,
+                                legendFormat1,
+                                legendFormat2,
+                                x,
+                                y,
+                                w,
+                                h) =
+      $.graphPanelSchema({},
+                         title,
+                         description,
+                         'null',
+                         false,
+                         formatY1,
+                         'short',
+                         labelY1,
+                         null,
+                         null,
+                         1,
+                         '$datasource')
+      .addTargets(
+        [
+          $.addTargetSchema(expr1,
+                            legendFormat1),
+          $.addTargetSchema(expr2, legendFormat2),
+        ]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
 
-      u.dashboardSchema(
-        'OSD device details',
-        '',
-        'CrAHE0iZz',
-        'now-3h',
-        '',
-        16,
-        [],
+    $.dashboardSchema(
+      'OSD device details',
+      '',
+      'CrAHE0iZz',
+      'now-3h',
+      '30s',
+      16,
+      $._config.dashboardTags,
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
+      )
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource',
+                            'prometheus',
+                            'default',
+                            label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('osd',
+                          '$datasource',
+                          'label_values(ceph_osd_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          false,
+                          1,
+                          'OSD',
+                          '(.*)')
+    )
+    .addPanels([
+      $.addRowSchema(
+        false, true, 'OSD Performance'
+      ) + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
+      OsdDeviceDetailsPanel(
+        '$osd Latency',
         '',
+        's',
+        'Read (-) / Write (+)',
+        |||
+          rate(ceph_osd_op_r_latency_sum{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval]) /
+            on (ceph_daemon) rate(ceph_osd_op_r_latency_count{%(matchers)s}[$__rate_interval])
+        ||| % $.matchers(),
+        |||
+          rate(ceph_osd_op_w_latency_sum{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval]) /
+            on (ceph_daemon) rate(ceph_osd_op_w_latency_count{%(matchers)s}[$__rate_interval])
+        ||| % $.matchers(),
+        'read',
+        'write',
+        0,
+        1,
+        6,
+        9
+      )
+      .addSeriesOverride(
         {
-          refresh_intervals: ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
+          alias: 'read',
+          transform: 'negative-Y',
         }
+      ),
+      OsdDeviceDetailsPanel(
+        '$osd R/W IOPS',
+        '',
+        'short',
+        'Read (-) / Write (+)',
+        'rate(ceph_osd_op_r{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval])' % $.matchers(),
+        'rate(ceph_osd_op_w{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval])' % $.matchers(),
+        'Reads',
+        'Writes',
+        6,
+        1,
+        6,
+        9
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
+      .addSeriesOverride(
+        { alias: 'Reads', transform: 'negative-Y' }
+      ),
+      OsdDeviceDetailsPanel(
+        '$osd R/W Bytes',
+        '',
+        'bytes',
+        'Read (-) / Write (+)',
+        'rate(ceph_osd_op_r_out_bytes{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval])' % $.matchers(),
+        'rate(ceph_osd_op_w_in_bytes{%(matchers)s, ceph_daemon=~"$osd"}[$__rate_interval])' % $.matchers(),
+        'Read Bytes',
+        'Write Bytes',
+        12,
+        1,
+        6,
+        9
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.2'
+      .addSeriesOverride({ alias: 'Read Bytes', transform: 'negative-Y' }),
+      $.addRowSchema(
+        false, true, 'Physical Device Performance'
+      ) + { gridPos: { x: 0, y: 10, w: 24, h: 1 } },
+      OsdDeviceDetailsPanel(
+        'Physical Device Latency for $osd',
+        '',
+        's',
+        'Read (-) / Write (+)',
+        |||
+          (
+            label_replace(
+              rate(node_disk_read_time_seconds_total{%(clusterMatcher)s}[$__rate_interval]) /
+                rate(node_disk_reads_completed_total{%(clusterMatcher)s}[$__rate_interval]),
+              "instance", "$1", "instance", "([^:.]*).*"
+            ) and on (instance, device) label_replace(
+              label_replace(
+                ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"},
+                "device", "$1", "device", "/dev/(.*)"
+              ), "instance", "$1", "instance", "([^:.]*).*"
+            )
+          )
+        ||| % $.matchers(),
+        |||
+          (
+            label_replace(
+              rate(node_disk_write_time_seconds_total{%(clusterMatcher)s}[$__rate_interval]) /
+                rate(node_disk_writes_completed_total{%(clusterMatcher)s}[$__rate_interval]),
+              "instance", "$1", "instance", "([^:.]*).*") and on (instance, device)
+              label_replace(
+                label_replace(
+                  ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"
+                ), "instance", "$1", "instance", "([^:.]*).*"
+              )
+            )
+        ||| % $.matchers(),
+        '{{instance}}/{{device}} Reads',
+        '{{instance}}/{{device}} Writes',
+        0,
+        11,
+        6,
+        9
       )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
+      .addSeriesOverride(
+        { alias: '/.*Reads/', transform: 'negative-Y' }
+      ),
+      OsdDeviceDetailsPanel(
+        'Physical Device R/W IOPS for $osd',
+        '',
+        'short',
+        'Read (-) / Write (+)',
+        |||
+          label_replace(
+            rate(node_disk_writes_completed_total{%(clusterMatcher)s}[$__rate_interval]),
+            "instance", "$1", "instance", "([^:.]*).*"
+          ) and on (instance, device) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"},
+              "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        |||
+          label_replace(
+            rate(node_disk_reads_completed_total{%(clusterMatcher)s}[$__rate_interval]),
+            "instance", "$1", "instance", "([^:.]*).*"
+          ) and on (instance, device) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"},
+              "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{device}} on {{instance}} Writes',
+        '{{device}} on {{instance}} Reads',
+        6,
+        11,
+        6,
+        9
       )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'default',
-                              label='Data Source')
+      .addSeriesOverride(
+        { alias: '/.*Reads/', transform: 'negative-Y' }
+      ),
+      OsdDeviceDetailsPanel(
+        'Physical Device R/W Bytes for $osd',
+        '',
+        'Bps',
+        'Read (-) / Write (+)',
+        |||
+          label_replace(
+            rate(node_disk_read_bytes_total{%(clusterMatcher)s}[$__rate_interval]), "instance", "$1", "instance", "([^:.]*).*"
+          ) and on (instance, device) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"},
+              "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        |||
+          label_replace(
+            rate(node_disk_written_bytes_total{%(clusterMatcher)s}[$__rate_interval]), "instance", "$1", "instance", "([^:.]*).*"
+          ) and on (instance, device) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"},
+              "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{instance}} {{device}} Reads',
+        '{{instance}} {{device}} Writes',
+        12,
+        11,
+        6,
+        9
       )
-      .addTemplate(
-        u.addTemplateSchema('osd',
-                            '$datasource',
-                            'label_values(ceph_osd_metadata,ceph_daemon)',
-                            1,
-                            false,
-                            1,
-                            'OSD',
-                            '(.*)')
+      .addSeriesOverride(
+        { alias: '/.*Reads/', transform: 'negative-Y' }
+      ),
+      $.graphPanelSchema(
+        {},
+        'Physical Device Util% for $osd',
+        '',
+        'null',
+        false,
+        'percentunit',
+        'short',
+        null,
+        null,
+        null,
+        1,
+        '$datasource'
       )
-      .addPanels([
-        u.addRowSchema(
-          false, true, 'OSD Performance'
-        ) + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
-        OsdDeviceDetailsPanel(
-          '$osd Latency',
-          '',
-          's',
-          'Read (-) / Write (+)',
-          'irate(ceph_osd_op_r_latency_sum{ceph_daemon=~"$osd"}[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m])',
-          'irate(ceph_osd_op_w_latency_sum{ceph_daemon=~"$osd"}[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m])',
-          'read',
-          'write',
-          0,
-          1,
-          6,
-          9
-        )
-        .addSeriesOverride(
-          {
-            alias: 'read',
-            transform: 'negative-Y',
-          }
-        ),
-        OsdDeviceDetailsPanel(
-          '$osd R/W IOPS',
-          '',
-          'short',
-          'Read (-) / Write (+)',
-          'irate(ceph_osd_op_r{ceph_daemon=~"$osd"}[1m])',
-          'irate(ceph_osd_op_w{ceph_daemon=~"$osd"}[1m])',
-          'Reads',
-          'Writes',
-          6,
-          1,
-          6,
-          9
-        )
-        .addSeriesOverride(
-          { alias: 'Reads', transform: 'negative-Y' }
-        ),
-        OsdDeviceDetailsPanel(
-          '$osd R/W Bytes',
-          '',
-          'bytes',
-          'Read (-) / Write (+)',
-          'irate(ceph_osd_op_r_out_bytes{ceph_daemon=~"$osd"}[1m])',
-          'irate(ceph_osd_op_w_in_bytes{ceph_daemon=~"$osd"}[1m])',
-          'Read Bytes',
-          'Write Bytes',
-          12,
-          1,
-          6,
-          9
-        )
-        .addSeriesOverride({ alias: 'Read Bytes', transform: 'negative-Y' }),
-        u.addRowSchema(
-          false, true, 'Physical Device Performance'
-        ) + { gridPos: { x: 0, y: 10, w: 24, h: 1 } },
-        OsdDeviceDetailsPanel(
-          'Physical Device Latency for $osd',
-          '',
-          's',
-          'Read (-) / Write (+)',
-          '(label_replace(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*"))',
-          '(label_replace(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*"))',
-          '{{instance}}/{{device}} Reads',
-          '{{instance}}/{{device}} Writes',
-          0,
-          11,
-          6,
-          9
-        )
-        .addSeriesOverride(
-          { alias: '/.*Reads/', transform: 'negative-Y' }
-        ),
-        OsdDeviceDetailsPanel(
-          'Physical Device R/W IOPS for $osd',
-          '',
-          'short',
-          'Read (-) / Write (+)',
-          'label_replace(irate(node_disk_writes_completed_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          'label_replace(irate(node_disk_reads_completed_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{device}} on {{instance}} Writes',
-          '{{device}} on {{instance}} Reads',
-          6,
-          11,
-          6,
-          9
-        )
-        .addSeriesOverride(
-          { alias: '/.*Reads/', transform: 'negative-Y' }
-        ),
-        OsdDeviceDetailsPanel(
-          'Physical Device R/W Bytes for $osd',
-          '',
-          'Bps',
-          'Read (-) / Write (+)',
-          'label_replace(irate(node_disk_read_bytes_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          'label_replace(irate(node_disk_written_bytes_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{instance}} {{device}} Reads',
-          '{{instance}} {{device}} Writes',
-          12,
-          11,
-          6,
-          9
-        )
-        .addSeriesOverride(
-          { alias: '/.*Reads/', transform: 'negative-Y' }
-        ),
-        u.graphPanelSchema(
-          {},
-          'Physical Device Util% for $osd',
-          '',
-          'null',
-          false,
-          'percentunit',
-          'short',
-          null,
-          null,
-          null,
-          1,
-          '$datasource'
-        )
-        .addTarget(u.addTargetSchema(
-          'label_replace(irate(node_disk_io_time_seconds_total[1m]), "instance", "$1", "instance", "([^:.]*).*") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"), "instance", "$1", "instance", "([^:.]*).*")',
-          '{{device}} on {{instance}}'
-        )) + { gridPos: { x: 18, y: 11, w: 6, h: 9 } },
-      ]),
-  },
+      .addTarget($.addTargetSchema(
+        |||
+          label_replace(
+            rate(node_disk_io_time_seconds_total{%(clusterMatcher)s}[$__rate_interval]),
+            "instance", "$1", "instance", "([^:.]*).*"
+          ) and on (instance, device) label_replace(
+            label_replace(
+              ceph_disk_occupation_human{%(matchers)s, ceph_daemon=~"$osd"}, "device", "$1", "device", "/dev/(.*)"
+            ), "instance", "$1", "instance", "([^:.]*).*"
+          )
+        ||| % $.matchers(),
+        '{{device}} on {{instance}}'
+      )) + { gridPos: { x: 18, y: 11, w: 6, h: 9 } },
+    ]),
 }
index 8fb4f815c745a7d83527124003df7059ee3e3f59..6444335d9cf554ae479cd07b3798a8b827b33e05 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
-local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'pool-overview.json':
-      local PoolOverviewSingleStatPanel(format,
-                                        title,
-                                        description,
-                                        valueName,
-                                        expr,
-                                        instant,
-                                        targetFormat,
-                                        x,
-                                        y,
-                                        w,
-                                        h) =
-        u.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
-                              '$datasource',
-                              format,
-                              title,
-                              description,
-                              valueName,
-                              false,
-                              100,
-                              false,
-                              false,
-                              '')
-        .addTarget(u.addTargetSchema(expr, '', targetFormat, 1, instant)) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      local PoolOverviewStyle(alias,
-                              pattern,
-                              type,
-                              unit,
-                              colorMode,
-                              thresholds,
-                              valueMaps) =
-        u.addStyle(alias,
-                   colorMode,
-                   [
-                     'rgba(245, 54, 54, 0.9)',
-                     'rgba(237, 129, 40, 0.89)',
-                     'rgba(50, 172, 45, 0.97)',
-                   ],
-                   'YYYY-MM-DD HH:mm:ss',
-                   2,
-                   1,
-                   pattern,
-                   thresholds,
-                   type,
-                   unit,
-                   valueMaps);
-
-      local PoolOverviewGraphPanel(title,
-                                   description,
-                                   formatY1,
-                                   labelY1,
-                                   expr,
-                                   legendFormat,
-                                   x,
-                                   y,
-                                   w,
-                                   h) =
-        u.graphPanelSchema({},
-                           title,
-                           description,
-                           'null as zero',
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           0,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr,
-                             legendFormat)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'Ceph Pools Overview',
+(import 'utils.libsonnet') {
+  'pool-overview.json':
+    $.dashboardSchema(
+      'Ceph Pools Overview',
+      '',
+      'z99hzWtmk',
+      'now-1h',
+      '30s',
+      22,
+      $._config.dashboardTags,
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
+      )
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      g.template.custom(label='TopK',
+                        name='topk',
+                        current='15',
+                        query='15')
+    )
+    .addPanels([
+      $.simpleSingleStatPanel(
+        'none',
+        'Pools',
         '',
-        'z99hzWtmk',
-        'now-1h',
-        '15s',
-        22,
-        [],
+        'avg',
+        'count(ceph_pool_metadata{%(matchers)s})' % $.matchers(),
+        true,
+        'table',
+        0,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'none',
+        'Pools with Compression',
+        'Count of the pools that have compression enabled',
+        'current',
+        'count(ceph_pool_metadata{%(matchers)s, compression_mode!="none"})' % $.matchers(),
+        null,
         '',
-        { refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'], time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'] }
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
-      )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'Dashboard1',
-                              label='Data Source')
+        3,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Total Raw Capacity',
+        'Total raw capacity available to the cluster',
+        'current',
+        'sum(ceph_osd_stat_bytes{%(matchers)s})' % $.matchers(),
+        null,
+        '',
+        6,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Raw Capacity Consumed',
+        'Total raw capacity consumed by user data and associated overheads (metadata + redundancy)',
+        'current',
+        'sum(ceph_pool_bytes_used{%(matchers)s})' % $.matchers(),
+        true,
+        '',
+        9,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Logical Stored ',
+        'Total of client data stored in the cluster',
+        'current',
+        'sum(ceph_pool_stored{%(matchers)s})' % $.matchers(),
+        true,
+        '',
+        12,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'bytes',
+        'Compression Savings',
+        'A compression saving is determined as the data eligible to be compressed minus the capacity used to store the data after compression',
+        'current',
+        |||
+          sum(
+            ceph_pool_compress_under_bytes{%(matchers)s} -
+              ceph_pool_compress_bytes_used{%(matchers)s}
+          )
+        ||| % $.matchers(),
+        null,
+        '',
+        15,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'percent',
+        'Compression Eligibility',
+        'Indicates how suitable the data is within the pools that are/have been enabled for compression - averaged across all pools holding compressed data',
+        'current',
+        |||
+          (
+            sum(ceph_pool_compress_under_bytes{%(matchers)s} > 0) /
+              sum(ceph_pool_stored_raw{%(matchers)s} and ceph_pool_compress_under_bytes{%(matchers)s} > 0)
+          ) * 100
+        ||| % $.matchers(),
+        null,
+        'table',
+        18,
+        0,
+        3,
+        3
+      ),
+      $.simpleSingleStatPanel(
+        'none',
+        'Compression Factor',
+        'This factor describes the average ratio of data eligible to be compressed divided by the data actually stored. It does not account for data written that was ineligible for compression (too small, or compression yield too low)',
+        'current',
+        |||
+          sum(
+            ceph_pool_compress_under_bytes{%(matchers)s} > 0)
+              / sum(ceph_pool_compress_bytes_used{%(matchers)s} > 0
+          )
+        ||| % $.matchers(),
+        null,
+        '',
+        21,
+        0,
+        3,
+        3
+      ),
+      $.addTableSchema(
+        '$datasource',
+        '',
+        { col: 5, desc: true },
+        [
+          $.overviewStyle('', 'Time', 'hidden', 'short'),
+          $.overviewStyle('', 'instance', 'hidden', 'short'),
+          $.overviewStyle('', 'job', 'hidden', 'short'),
+          $.overviewStyle('Pool Name', 'name', 'string', 'short'),
+          $.overviewStyle('Pool ID', 'pool_id', 'hidden', 'none'),
+          $.overviewStyle('Compression Factor', 'Value #A', 'number', 'none'),
+          $.overviewStyle('% Used', 'Value #D', 'number', 'percentunit', 'value', ['70', '85']),
+          $.overviewStyle('Usable Free', 'Value #B', 'number', 'bytes'),
+          $.overviewStyle('Compression Eligibility', 'Value #C', 'number', 'percent'),
+          $.overviewStyle('Compression Savings', 'Value #E', 'number', 'bytes'),
+          $.overviewStyle('Growth (5d)', 'Value #F', 'number', 'bytes', 'value', ['0', '0']),
+          $.overviewStyle('IOPS', 'Value #G', 'number', 'none'),
+          $.overviewStyle('Bandwidth', 'Value #H', 'number', 'Bps'),
+          $.overviewStyle('', '__name__', 'hidden', 'short'),
+          $.overviewStyle('', 'type', 'hidden', 'short'),
+          $.overviewStyle('', 'compression_mode', 'hidden', 'short'),
+          $.overviewStyle('Type', 'description', 'string', 'short'),
+          $.overviewStyle('Stored', 'Value #J', 'number', 'bytes'),
+          $.overviewStyle('', 'Value #I', 'hidden', 'short'),
+          $.overviewStyle('Compression', 'Value #K', 'string', 'short', null, [], [{ text: 'ON', value: '1' }]),
+        ],
+        'Pool Overview',
+        'table'
       )
-      .addTemplate(
-        g.template.custom(label='TopK',
-                          name='topk',
-                          current='15',
-                          query='15')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              (
+                ceph_pool_compress_under_bytes{%(matchers)s} /
+                  ceph_pool_compress_bytes_used{%(matchers)s} > 0
+              ) and on(pool_id) (
+                (
+                  (ceph_pool_compress_under_bytes{%(matchers)s} > 0) /
+                    ceph_pool_stored_raw{%(matchers)s}
+                ) * 100 > 0.5
+              )
+            ||| % $.matchers(),
+            'A',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            |||
+              ceph_pool_max_avail{%(matchers)s} *
+                on(pool_id) group_left(name) ceph_pool_metadata{%(matchers)s}
+            ||| % $.matchers(),
+            'B',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            |||
+              (
+                (ceph_pool_compress_under_bytes{%(matchers)s} > 0) /
+                  ceph_pool_stored_raw{%(matchers)s}
+              ) * 100
+            ||| % $.matchers(),
+            'C',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            |||
+              ceph_pool_percent_used{%(matchers)s} *
+                on(pool_id) group_left(name) ceph_pool_metadata{%(matchers)s}
+            ||| % $.matchers(),
+            'D',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            |||
+              ceph_pool_compress_under_bytes{%(matchers)s} -
+                ceph_pool_compress_bytes_used{%(matchers)s} > 0
+            ||| % $.matchers(),
+            'E',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            'delta(ceph_pool_stored{%(matchers)s}[5d])' % $.matchers(), 'F', 'table', 1, true
+          ),
+          $.addTargetSchema(
+            |||
+              rate(ceph_pool_rd{%(matchers)s}[$__rate_interval])
+                + rate(ceph_pool_wr{%(matchers)s}[$__rate_interval])
+            ||| % $.matchers(),
+            'G',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            |||
+              rate(ceph_pool_rd_bytes{%(matchers)s}[$__rate_interval]) +
+                rate(ceph_pool_wr_bytes{%(matchers)s}[$__rate_interval])
+            ||| % $.matchers(),
+            'H',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            'ceph_pool_metadata{%(matchers)s}' % $.matchers(), 'I', 'table', 1, true
+          ),
+          $.addTargetSchema(
+            'ceph_pool_stored{%(matchers)s} * on(pool_id) group_left ceph_pool_metadata{%(matchers)s}' % $.matchers(),
+            'J',
+            'table',
+            1,
+            true
+          ),
+          $.addTargetSchema(
+            'ceph_pool_metadata{%(matchers)s, compression_mode!="none"}' % $.matchers(), 'K', 'table', 1, true
+          ),
+          $.addTargetSchema('', 'L', '', '', null),
+        ]
+      ) + { gridPos: { x: 0, y: 3, w: 24, h: 6 } },
+      $.simpleGraphPanel(
+        {},
+        'Top $topk Client IOPS by Pool',
+        'This chart shows the sum of read and write IOPS from all clients by pool',
+        'short',
+        'IOPS',
+        0,
+        |||
+          topk($topk,
+            round(
+              (
+                rate(ceph_pool_rd{%(matchers)s}[$__rate_interval]) +
+                  rate(ceph_pool_wr{%(matchers)s}[$__rate_interval])
+              ), 1
+            ) * on(pool_id) group_left(instance,name) ceph_pool_metadata{%(matchers)s})
+        ||| % $.matchers(),
+        '{{name}} ',
+        0,
+        9,
+        12,
+        8
       )
-      .addPanels([
-        PoolOverviewSingleStatPanel(
-          'none',
-          'Pools',
-          '',
-          'avg',
-          'count(ceph_pool_metadata)',
-          true,
-          'table',
-          0,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'none',
-          'Pools with Compression',
-          'Count of the pools that have compression enabled',
-          'current',
-          'count(ceph_pool_metadata{compression_mode!="none"})',
-          null,
-          '',
-          3,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'bytes',
-          'Total Raw Capacity',
-          'Total raw capacity available to the cluster',
-          'current',
-          'sum(ceph_osd_stat_bytes)',
-          null,
-          '',
-          6,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'bytes',
-          'Raw Capacity Consumed',
-          'Total raw capacity consumed by user data and associated overheads (metadata + redundancy)',
-          'current',
-          'sum(ceph_pool_bytes_used)',
-          true,
-          '',
-          9,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'bytes',
-          'Logical Stored ',
-          'Total of client data stored in the cluster',
-          'current',
-          'sum(ceph_pool_stored)',
-          true,
-          '',
-          12,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'bytes',
-          'Compression Savings',
-          'A compression saving is determined as the data eligible to be compressed minus the capacity used to store the data after compression',
-          'current',
-          'sum(ceph_pool_compress_under_bytes - ceph_pool_compress_bytes_used)',
-          null,
-          '',
-          15,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'percent',
-          'Compression Eligibility',
-          'Indicates how suitable the data is within the pools that are/have been enabled for compression - averaged across all pools holding compressed data\n',
-          'current',
-          '(sum(ceph_pool_compress_under_bytes > 0) / sum(ceph_pool_stored_raw and ceph_pool_compress_under_bytes > 0)) * 100',
-          null,
-          'table',
-          18,
-          0,
-          3,
-          3
-        ),
-        PoolOverviewSingleStatPanel(
-          'none',
-          'Compression Factor',
-          'This factor describes the average ratio of data eligible to be compressed divided by the data actually stored. It does not account for data written that was ineligible for compression (too small, or compression yield too low)',
-          'current',
-          'sum(ceph_pool_compress_under_bytes > 0) / sum(ceph_pool_compress_bytes_used > 0)',
-          null,
-          '',
-          21,
-          0,
-          3,
-          3
-        ),
-        u.addTableSchema(
-          '$datasource',
-          '',
-          { col: 5, desc: true },
-          [
-            PoolOverviewStyle('', 'Time', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('', 'instance', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('', 'job', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('Pool Name', 'name', 'string', 'short', null, [], []),
-            PoolOverviewStyle('Pool ID', 'pool_id', 'hidden', 'none', null, [], []),
-            PoolOverviewStyle('Compression Factor', 'Value #A', 'number', 'none', null, [], []),
-            PoolOverviewStyle('% Used', 'Value #D', 'number', 'percentunit', 'value', ['70', '85'], []),
-            PoolOverviewStyle('Usable Free', 'Value #B', 'number', 'bytes', null, [], []),
-            PoolOverviewStyle('Compression Eligibility', 'Value #C', 'number', 'percent', null, [], []),
-            PoolOverviewStyle('Compression Savings', 'Value #E', 'number', 'bytes', null, [], []),
-            PoolOverviewStyle('Growth (5d)', 'Value #F', 'number', 'bytes', 'value', ['0', '0'], []),
-            PoolOverviewStyle('IOPS', 'Value #G', 'number', 'none', null, [], []),
-            PoolOverviewStyle('Bandwidth', 'Value #H', 'number', 'Bps', null, [], []),
-            PoolOverviewStyle('', '__name__', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('', 'type', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('', 'compression_mode', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('Type', 'description', 'string', 'short', null, [], []),
-            PoolOverviewStyle('Stored', 'Value #J', 'number', 'bytes', null, [], []),
-            PoolOverviewStyle('', 'Value #I', 'hidden', 'short', null, [], []),
-            PoolOverviewStyle('Compression', 'Value #K', 'string', 'short', null, [], [{ text: 'ON', value: '1' }]),
-          ],
-          'Pool Overview',
-          'table'
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk($topk,
+              rate(ceph_pool_wr{%(matchers)s}[$__rate_interval]) +
+                on(pool_id) group_left(instance,name) ceph_pool_metadata{%(matchers)s}
+            )
+          ||| % $.matchers(),
+          '{{name}} - write'
         )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              '(ceph_pool_compress_under_bytes / ceph_pool_compress_bytes_used > 0) and on(pool_id) (((ceph_pool_compress_under_bytes > 0) / ceph_pool_stored_raw) * 100 > 0.5)',
-              'A',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              'ceph_pool_max_avail * on(pool_id) group_left(name) ceph_pool_metadata',
-              'B',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              '((ceph_pool_compress_under_bytes > 0) / ceph_pool_stored_raw) * 100',
-              'C',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              '(ceph_pool_percent_used * on(pool_id) group_left(name) ceph_pool_metadata)',
-              'D',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              '(ceph_pool_compress_under_bytes - ceph_pool_compress_bytes_used > 0)',
-              'E',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              'delta(ceph_pool_stored[5d])', 'F', 'table', 1, true
-            ),
-            u.addTargetSchema(
-              'rate(ceph_pool_rd[30s]) + rate(ceph_pool_wr[30s])',
-              'G',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              'rate(ceph_pool_rd_bytes[30s]) + rate(ceph_pool_wr_bytes[30s])',
-              'H',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              'ceph_pool_metadata', 'I', 'table', 1, true
-            ),
-            u.addTargetSchema(
-              'ceph_pool_stored * on(pool_id) group_left ceph_pool_metadata',
-              'J',
-              'table',
-              1,
-              true
-            ),
-            u.addTargetSchema(
-              'ceph_pool_metadata{compression_mode!="none"}', 'K', 'table', 1, true
-            ),
-            u.addTargetSchema('', 'L', '', '', null),
-          ]
-        ) + { gridPos: { x: 0, y: 3, w: 24, h: 6 } },
-        PoolOverviewGraphPanel(
-          'Top $topk Client IOPS by Pool',
-          'This chart shows the sum of read and write IOPS from all clients by pool',
-          'short',
-          'IOPS',
-          'topk($topk,round((rate(ceph_pool_rd[30s]) + rate(ceph_pool_wr[30s])),1) * on(pool_id) group_left(instance,name) ceph_pool_metadata) ',
-          '{{name}} ',
-          0,
-          9,
-          12,
-          8
-        )
-        .addTarget(
-          u.addTargetSchema(
-            'topk($topk,rate(ceph_pool_wr[30s]) + on(pool_id) group_left(instance,name) ceph_pool_metadata) ',
-            '{{name}} - write'
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Top $topk Client Bandwidth by Pool',
+        'The chart shows the sum of read and write bytes from all clients, by pool',
+        'Bps',
+        'Throughput',
+        0,
+        |||
+          topk($topk,
+            (
+              rate(ceph_pool_rd_bytes{%(matchers)s}[$__rate_interval]) +
+                rate(ceph_pool_wr_bytes{%(matchers)s}[$__rate_interval])
+            ) * on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s}
           )
-        ),
-        PoolOverviewGraphPanel(
-          'Top $topk Client Bandwidth by Pool',
-          'The chart shows the sum of read and write bytes from all clients, by pool',
-          'Bps',
-          'Throughput',
-          'topk($topk,(rate(ceph_pool_rd_bytes[30s]) + rate(ceph_pool_wr_bytes[30s])) * on(pool_id) group_left(instance,name) ceph_pool_metadata)',
-          '{{name}}',
-          12,
-          9,
-          12,
-          8
-        ),
-        PoolOverviewGraphPanel(
-          'Pool Capacity Usage (RAW)',
-          'Historical view of capacity usage, to help identify growth and trends in pool consumption',
-          'bytes',
-          'Capacity Used',
-          'ceph_pool_bytes_used * on(pool_id) group_right ceph_pool_metadata',
-          '{{name}}',
-          0,
-          17,
-          24,
-          7
-        ),
-      ]),
-    'pool-detail.json':
-      local PoolDetailSingleStatPanel(format,
-                                      title,
-                                      description,
-                                      valueName,
-                                      colorValue,
-                                      gaugeMaxValue,
-                                      gaugeShow,
-                                      sparkLineShow,
-                                      thresholds,
-                                      expr,
-                                      targetFormat,
-                                      x,
-                                      y,
-                                      w,
-                                      h) =
-        u.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
-                              '$datasource',
-                              format,
-                              title,
-                              description,
-                              valueName,
-                              colorValue,
-                              gaugeMaxValue,
-                              gaugeShow,
-                              sparkLineShow,
-                              thresholds)
-        .addTarget(u.addTargetSchema(expr, '', targetFormat)) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      local PoolDetailGraphPanel(alias,
-                                 title,
-                                 description,
-                                 formatY1,
-                                 labelY1,
-                                 expr,
-                                 legendFormat,
-                                 x,
-                                 y,
-                                 w,
-                                 h) =
-        u.graphPanelSchema(alias,
-                           title,
-                           description,
-                           'null as zero',
-                           false,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           null,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr, legendFormat)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'Ceph Pool Details',
+        ||| % $.matchers(),
+        '{{name}}',
+        12,
+        9,
+        12,
+        8
+      ),
+      $.simpleGraphPanel(
+        {},
+        'Pool Capacity Usage (RAW)',
+        'Historical view of capacity usage, to help identify growth and trends in pool consumption',
+        'bytes',
+        'Capacity Used',
+        0,
+        'ceph_pool_bytes_used{%(matchers)s} * on(pool_id) group_right ceph_pool_metadata{%(matchers)s}' % $.matchers(),
+        '{{name}}',
+        0,
+        17,
+        24,
+        7
+      ),
+    ]),
+  'pool-detail.json':
+    $.dashboardSchema(
+      'Ceph Pool Details',
+      '',
+      '-xyV8KCiz',
+      'now-1h',
+      '30s',
+      22,
+      $._config.dashboardTags,
+      ''
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='singlestat', name='Singlestat', version='5.0.0'
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
+      )
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('pool_name',
+                          '$datasource',
+                          'label_values(ceph_pool_metadata{%(matchers)s}, name)' % $.matchers(),
+                          1,
+                          false,
+                          1,
+                          'Pool Name',
+                          '')
+    )
+    .addPanels([
+      $.gaugeSingleStatPanel(
+        'percentunit',
+        'Capacity used',
         '',
-        '-xyV8KCiz',
-        'now-1h',
-        '15s',
-        22,
-        [],
+        'current',
+        true,
+        1,
+        true,
+        true,
+        '.7,.8',
+        |||
+          (ceph_pool_stored{%(matchers)s} / (ceph_pool_stored{%(matchers)s} + ceph_pool_max_avail{%(matchers)s})) *
+            on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+        ||| % $.matchers(),
+        'time_series',
+        0,
+        0,
+        7,
+        7
+      ),
+      $.gaugeSingleStatPanel(
+        's',
+        'Time till full',
+        'Time till pool is full assuming the average fill rate of the last 6 hours',
+        false,
+        100,
+        false,
+        false,
         '',
+        'current',
+        |||
+          (ceph_pool_max_avail{%(matchers)s} / deriv(ceph_pool_stored{%(matchers)s}[6h])) *
+            on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"} > 0
+        ||| % $.matchers(),
+        'time_series',
+        7,
+        0,
+        5,
+        7
+      ),
+      $.simpleGraphPanel(
         {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.2'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addRequired(
-        type='panel', id='singlestat', name='Singlestat', version='5.0.0'
+          read_op_per_sec:
+            '#3F6833',
+          write_op_per_sec: '#E5AC0E',
+        },
+        '$pool_name Object Ingress/Egress',
+        '',
+        'ops',
+        'Objects out(-) / in(+) ',
+        null,
+        |||
+          deriv(ceph_pool_objects{%(matchers)s}[1m]) *
+            on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+        ||| % $.matchers(),
+        'Objects per second',
+        12,
+        0,
+        12,
+        7
+      ),
+      $.simpleGraphPanel(
+        {
+          read_op_per_sec: '#3F6833',
+          write_op_per_sec: '#E5AC0E',
+        },
+        '$pool_name Client IOPS',
+        '',
+        'iops',
+        'Read (-) / Write (+)',
+        null,
+        |||
+          rate(ceph_pool_rd{%(matchers)s}[$__rate_interval]) *
+            on(pool_id) group_left(instance,name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+        ||| % $.matchers(),
+        'reads',
+        0,
+        7,
+        12,
+        7
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
+      .addSeriesOverride({ alias: 'reads', transform: 'negative-Y' })
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            rate(ceph_pool_wr{%(matchers)s}[$__rate_interval]) *
+              on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+          ||| % $.matchers(),
+          'writes'
         )
+      ),
+      $.simpleGraphPanel(
+        {
+          read_op_per_sec: '#3F6833',
+          write_op_per_sec: '#E5AC0E',
+        },
+        '$pool_name Client Throughput',
+        '',
+        'Bps',
+        'Read (-) / Write (+)',
+        null,
+        |||
+          rate(ceph_pool_rd_bytes{%(matchers)s}[$__rate_interval]) +
+            on(pool_id) group_left(instance, name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+        ||| % $.matchers(),
+        'reads',
+        12,
+        7,
+        12,
+        7
       )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'Prometheus admin.virt1.home.fajerski.name:9090',
-                              label='Data Source')
-      )
-      .addTemplate(
-        u.addTemplateSchema('pool_name',
-                            '$datasource',
-                            'label_values(ceph_pool_metadata,name)',
-                            1,
-                            false,
-                            1,
-                            'Pool Name',
-                            '')
-      )
-      .addPanels([
-        PoolDetailSingleStatPanel(
-          'percentunit',
-          'Capacity used',
-          '',
-          'current',
-          true,
-          1,
-          true,
-          true,
-          '.7,.8',
-          '(ceph_pool_stored / (ceph_pool_stored + ceph_pool_max_avail)) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}',
-          'time_series',
-          0,
-          0,
-          7,
-          7
-        ),
-        PoolDetailSingleStatPanel(
-          's',
-          'Time till full',
-          'Time till pool is full assuming the average fill rate of the last 6 hours',
-          false,
-          100,
-          false,
-          false,
-          '',
-          'current',
-          '(ceph_pool_max_avail / deriv(ceph_pool_stored[6h])) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"} > 0',
-          'time_series',
-          7,
-          0,
-          5,
-          7
-        ),
-        PoolDetailGraphPanel(
-          {
-            read_op_per_sec:
-              '#3F6833',
-            write_op_per_sec: '#E5AC0E',
-          },
-          '$pool_name Object Ingress/Egress',
-          '',
-          'ops',
-          'Objects out(-) / in(+) ',
-          'deriv(ceph_pool_objects[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}',
-          'Objects per second',
-          12,
-          0,
-          12,
-          7
-        ),
-        PoolDetailGraphPanel(
-          {
-            read_op_per_sec: '#3F6833',
-            write_op_per_sec: '#E5AC0E',
-          }, '$pool_name Client IOPS', '', 'iops', 'Read (-) / Write (+)', 'irate(ceph_pool_rd[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}', 'reads', 0, 7, 12, 7
-        )
-        .addSeriesOverride({ alias: 'reads', transform: 'negative-Y' })
-        .addTarget(
-          u.addTargetSchema(
-            'irate(ceph_pool_wr[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}', 'writes'
-          )
-        ),
-        PoolDetailGraphPanel(
-          {
-            read_op_per_sec: '#3F6833',
-            write_op_per_sec: '#E5AC0E',
-          },
-          '$pool_name Client Throughput',
-          '',
-          'Bps',
-          'Read (-) / Write (+)',
-          'irate(ceph_pool_rd_bytes[1m]) + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}',
-          'reads',
-          12,
-          7,
-          12,
-          7
+      .addSeriesOverride({ alias: 'reads', transform: 'negative-Y' })
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            rate(ceph_pool_wr_bytes{%(matchers)s}[$__rate_interval]) +
+              on(pool_id) group_left(instance,name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+          ||| % $.matchers(),
+          'writes'
         )
-        .addSeriesOverride({ alias: 'reads', transform: 'negative-Y' })
-        .addTarget(
-          u.addTargetSchema(
-            'irate(ceph_pool_wr_bytes[1m]) + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}',
-            'writes'
-          )
-        ),
-        PoolDetailGraphPanel(
-          {
-            read_op_per_sec: '#3F6833',
-            write_op_per_sec: '#E5AC0E',
-          },
-          '$pool_name Objects',
-          '',
-          'short',
-          'Objects',
-          'ceph_pool_objects * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~"$pool_name"}',
-          'Number of Objects',
-          0,
-          14,
-          12,
-          7
-        ),
-      ]),
-  },
+      ),
+      $.simpleGraphPanel(
+        {
+          read_op_per_sec: '#3F6833',
+          write_op_per_sec: '#E5AC0E',
+        },
+        '$pool_name Objects',
+        '',
+        'short',
+        'Objects',
+        null,
+        |||
+          ceph_pool_objects{%(matchers)s} *
+            on(pool_id) group_left(instance,name) ceph_pool_metadata{%(matchers)s, name=~"$pool_name"}
+        ||| % $.matchers(),
+        'Number of Objects',
+        0,
+        14,
+        12,
+        7
+      ),
+    ]),
 }
index a4ca6982d3bb7b073d69d9323f0ff132f560e01d..0eca5a877737be9ab9dead1994fb5874d14be0da 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
 local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'rbd-details.json':
-      local RbdDetailsPanel(title, formatY1, expr1, expr2, x, y, w, h) =
-        u.graphPanelSchema({},
-                           title,
-                           '',
-                           'null as zero',
-                           false,
-                           formatY1,
-                           formatY1,
-                           null,
-                           null,
-                           0,
-                           1,
-                           '$Datasource')
-        .addTargets(
-          [
-            u.addTargetSchema(expr1,
-                              '{{pool}} Write'),
-            u.addTargetSchema(expr2, '{{pool}} Read'),
-          ]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
+(import 'utils.libsonnet') {
+  'rbd-details.json':
+    local RbdDetailsPanel(title, formatY1, expr1, expr2, x, y, w, h) =
+      $.graphPanelSchema({},
+                         title,
+                         '',
+                         'null as zero',
+                         false,
+                         formatY1,
+                         formatY1,
+                         null,
+                         null,
+                         0,
+                         1,
+                         '$datasource')
+      .addTargets(
+        [
+          $.addTargetSchema(expr1,
+                            '{{pool}} Write'),
+          $.addTargetSchema(expr2, '{{pool}} Read'),
+        ]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
 
-      u.dashboardSchema(
-        'RBD Details',
-        'Detailed Performance of RBD Images (IOPS/Throughput/Latency)',
-        'YhCYGcuZz',
-        'now-1h',
-        false,
-        16,
-        [],
-        '',
-        {
-          refresh_intervals: ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
-      )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.3.3'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
+    $.dashboardSchema(
+      'RBD Details',
+      'Detailed Performance of RBD Images (IOPS/Throughput/Latency)',
+      'YhCYGcuZz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags,
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addTemplate(
-        g.template.datasource('Datasource', 'prometheus', 'default', label=null)
-      )
-      .addTemplate(
-        u.addTemplateSchema('Pool',
-                            '$Datasource',
-                            'label_values(pool)',
-                            1,
-                            false,
-                            0,
-                            '',
-                            '')
-      )
-      .addTemplate(
-        u.addTemplateSchema('Image',
-                            '$Datasource',
-                            'label_values(image)',
-                            1,
-                            false,
-                            0,
-                            '',
-                            '')
-      )
-      .addPanels([
-        RbdDetailsPanel(
-          'IOPS',
-          'iops',
-          'irate(ceph_rbd_write_ops{pool="$Pool", image="$Image"}[30s])',
-          'irate(ceph_rbd_read_ops{pool="$Pool", image="$Image"}[30s])',
-          0,
-          0,
-          8,
-          9
-        ),
-        RbdDetailsPanel(
-          'Throughput',
-          'Bps',
-          'irate(ceph_rbd_write_bytes{pool="$Pool", image="$Image"}[30s])',
-          'irate(ceph_rbd_read_bytes{pool="$Pool", image="$Image"}[30s])',
-          8,
-          0,
-          8,
-          9
-        ),
-        RbdDetailsPanel(
-          'Average Latency',
-          'ns',
-          'irate(ceph_rbd_write_latency_sum{pool="$Pool", image="$Image"}[30s]) / irate(ceph_rbd_write_latency_count{pool="$Pool", image="$Image"}[30s])',
-          'irate(ceph_rbd_read_latency_sum{pool="$Pool", image="$Image"}[30s]) / irate(ceph_rbd_read_latency_count{pool="$Pool", image="$Image"}[30s])',
-          16,
-          0,
-          8,
-          9
-        ),
-      ]),
-    'rbd-overview.json':
-      local RgwOverviewStyle(alias, pattern, type, unit) =
-        u.addStyle(alias,
-                   null,
-                   ['rgba(245, 54, 54, 0.9)', 'rgba(237, 129, 40, 0.89)', 'rgba(50, 172, 45, 0.97)'],
-                   'YYYY-MM-DD HH:mm:ss',
-                   2,
-                   1,
-                   pattern,
-                   [],
-                   type,
-                   unit,
-                   []);
-      local RbdOverviewPanel(title,
-                             formatY1,
-                             expr1,
-                             expr2,
-                             legendFormat1,
-                             legendFormat2,
-                             x,
-                             y,
-                             w,
-                             h) =
-        u.graphPanelSchema({},
-                           title,
-                           '',
-                           'null',
-                           false,
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.3.3'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('pool',
+                          '$datasource',
+                          'label_values(pool)',
+                          1,
+                          false,
+                          0,
+                          '',
+                          '')
+    )
+    .addTemplate(
+      $.addTemplateSchema('image',
+                          '$datasource',
+                          'label_values(image)',
+                          1,
+                          false,
+                          0,
+                          '',
+                          '')
+    )
+    .addPanels([
+      RbdDetailsPanel(
+        'IOPS',
+        'iops',
+        'rate(ceph_rbd_write_ops{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers()
+        ,
+        'rate(ceph_rbd_read_ops{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
+        0,
+        0,
+        8,
+        9
+      ),
+      RbdDetailsPanel(
+        'Throughput',
+        'Bps',
+        'rate(ceph_rbd_write_bytes{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
+        'rate(ceph_rbd_read_bytes{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
+        8,
+        0,
+        8,
+        9
+      ),
+      RbdDetailsPanel(
+        'Average Latency',
+        'ns',
+        |||
+          rate(ceph_rbd_write_latency_sum{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval]) /
+            rate(ceph_rbd_write_latency_count{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])
+        ||| % $.matchers(),
+        |||
+          rate(ceph_rbd_read_latency_sum{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval]) /
+            rate(ceph_rbd_read_latency_count{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])
+        ||| % $.matchers(),
+        16,
+        0,
+        8,
+        9
+      ),
+    ]),
+  'rbd-overview.json':
+    local RbdOverviewPanel(title,
                            formatY1,
-                           'short',
-                           null,
-                           null,
-                           0,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [
-            u.addTargetSchema(expr1,
-                              legendFormat1),
-            u.addTargetSchema(expr2,
-                              legendFormat2),
-          ]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
+                           expr1,
+                           expr2,
+                           legendFormat1,
+                           legendFormat2,
+                           x,
+                           y,
+                           w,
+                           h) =
+      $.graphPanelSchema({},
+                         title,
+                         '',
+                         'null',
+                         false,
+                         formatY1,
+                         'short',
+                         null,
+                         null,
+                         0,
+                         1,
+                         '$datasource')
+      .addTargets(
+        [
+          $.addTargetSchema(expr1,
+                            legendFormat1),
+          $.addTargetSchema(expr2,
+                            legendFormat2),
+        ]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
 
-      u.dashboardSchema(
-        'RBD Overview',
-        '',
-        '41FrpeUiz',
-        'now-1h',
-        '30s',
+    $.dashboardSchema(
+      'RBD Overview',
+      '',
+      '41FrpeUiz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags + ['overview'],
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
+      )
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.4.2'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addRequired(
+      type='datasource', id='prometheus', name='Prometheus', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='table', name='Table', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addPanels([
+      RbdOverviewPanel(
+        'IOPS',
+        'short',
+        'round(sum(rate(ceph_rbd_write_ops{%(matchers)s}[$__rate_interval])))' % $.matchers(),
+        'round(sum(rate(ceph_rbd_read_ops{%(matchers)s}[$__rate_interval])))' % $.matchers(),
+        'Writes',
+        'Reads',
+        0,
+        0,
+        8,
+        7
+      ),
+      RbdOverviewPanel(
+        'Throughput',
+        'Bps',
+        'round(sum(rate(ceph_rbd_write_bytes{%(matchers)s}[$__rate_interval])))' % $.matchers(),
+        'round(sum(rate(ceph_rbd_read_bytes{%(matchers)s}[$__rate_interval])))' % $.matchers(),
+        'Write',
+        'Read',
+        8,
+        0,
+        8,
+        7
+      ),
+      RbdOverviewPanel(
+        'Average Latency',
+        'ns',
+        |||
+          round(
+            sum(rate(ceph_rbd_write_latency_sum{%(matchers)s}[$__rate_interval])) /
+              sum(rate(ceph_rbd_write_latency_count{%(matchers)s}[$__rate_interval]))
+          )
+        ||| % $.matchers(),
+        |||
+          round(
+            sum(rate(ceph_rbd_read_latency_sum{%(matchers)s}[$__rate_interval])) /
+              sum(rate(ceph_rbd_read_latency_count{%(matchers)s}[$__rate_interval]))
+          )
+        ||| % $.matchers(),
+        'Write',
+        'Read',
         16,
-        ['overview'],
+        0,
+        8,
+        7
+      ),
+      $.addTableSchema(
+        '$datasource',
         '',
-        {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
+        { col: 3, desc: true },
+        [
+          $.overviewStyle('Pool', 'pool', 'string', 'short'),
+          $.overviewStyle('Image', 'image', 'string', 'short'),
+          $.overviewStyle('IOPS', 'Value', 'number', 'iops'),
+          $.overviewStyle('', '/.*/', 'hidden', 'short'),
+        ],
+        'Highest IOPS',
+        'table'
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk(10,
+              (
+                sort((
+                  rate(ceph_rbd_write_ops{%(matchers)s}[$__rate_interval]) +
+                    on (image, pool, namespace) rate(ceph_rbd_read_ops{%(matchers)s}[$__rate_interval])
+                ))
+              )
+            )
+          ||| % $.matchers(),
+          '',
+          'table',
           1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
+          true
         )
+      ) + { gridPos: { x: 0, y: 7, w: 8, h: 7 } },
+      $.addTableSchema(
+        '$datasource',
+        '',
+        { col: 3, desc: true },
+        [
+          $.overviewStyle('Pool', 'pool', 'string', 'short'),
+          $.overviewStyle('Image', 'image', 'string', 'short'),
+          $.overviewStyle('Throughput', 'Value', 'number', 'Bps'),
+          $.overviewStyle('', '/.*/', 'hidden', 'short'),
+        ],
+        'Highest Throughput',
+        'table'
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.4.2'
-      )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addRequired(
-        type='datasource', id='prometheus', name='Prometheus', version='5.0.0'
-      )
-      .addRequired(
-        type='panel', id='table', name='Table', version='5.0.0'
-      )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'default',
-                              label='Data Source')
-      )
-      .addPanels([
-        RbdOverviewPanel(
-          'IOPS',
-          'short',
-          'round(sum(irate(ceph_rbd_write_ops[30s])))',
-          'round(sum(irate(ceph_rbd_read_ops[30s])))',
-          'Writes',
-          'Reads',
-          0,
-          0,
-          8,
-          7
-        ),
-        RbdOverviewPanel(
-          'Throughput',
-          'Bps',
-          'round(sum(irate(ceph_rbd_write_bytes[30s])))',
-          'round(sum(irate(ceph_rbd_read_bytes[30s])))',
-          'Write',
-          'Read',
-          8,
-          0,
-          8,
-          7
-        ),
-        RbdOverviewPanel(
-          'Average Latency',
-          'ns',
-          'round(sum(irate(ceph_rbd_write_latency_sum[30s])) / sum(irate(ceph_rbd_write_latency_count[30s])))',
-          'round(sum(irate(ceph_rbd_read_latency_sum[30s])) / sum(irate(ceph_rbd_read_latency_count[30s])))',
-          'Write',
-          'Read',
-          16,
-          0,
-          8,
-          7
-        ),
-        u.addTableSchema(
-          '$datasource',
-          '',
-          { col: 3, desc: true },
-          [
-            RgwOverviewStyle('Pool', 'pool', 'string', 'short'),
-            RgwOverviewStyle('Image', 'image', 'string', 'short'),
-            RgwOverviewStyle('IOPS', 'Value', 'number', 'iops'),
-            RgwOverviewStyle('', '/.*/', 'hidden', 'short'),
-          ],
-          'Highest IOPS',
-          'table'
-        )
-        .addTarget(
-          u.addTargetSchema(
-            'topk(10, (sort((irate(ceph_rbd_write_ops[30s]) + on (image, pool, namespace) irate(ceph_rbd_read_ops[30s])))))',
-            '',
-            'table',
-            1,
-            true
-          )
-        ) + { gridPos: { x: 0, y: 7, w: 8, h: 7 } },
-        u.addTableSchema(
-          '$datasource',
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk(10,
+              sort(
+                sum(
+                  rate(ceph_rbd_read_bytes{%(matchers)s}[$__rate_interval]) +
+                    rate(ceph_rbd_write_bytes{%(matchers)s}[$__rate_interval])
+                ) by (pool, image, namespace)
+              )
+            )
+          ||| % $.matchers(),
           '',
-          { col: 3, desc: true },
-          [
-            RgwOverviewStyle('Pool', 'pool', 'string', 'short'),
-            RgwOverviewStyle('Image', 'image', 'string', 'short'),
-            RgwOverviewStyle('Throughput', 'Value', 'number', 'Bps'),
-            RgwOverviewStyle('', '/.*/', 'hidden', 'short'),
-          ],
-          'Highest Throughput',
-          'table'
+          'table',
+          1,
+          true
         )
-        .addTarget(
-          u.addTargetSchema(
-            'topk(10, sort(sum(irate(ceph_rbd_read_bytes[30s]) + irate(ceph_rbd_write_bytes[30s])) by (pool, image, namespace)))',
-            '',
-            'table',
-            1,
-            true
-          )
-        ) + { gridPos: { x: 8, y: 7, w: 8, h: 7 } },
-        u.addTableSchema(
-          '$datasource',
+      ) + { gridPos: { x: 8, y: 7, w: 8, h: 7 } },
+      $.addTableSchema(
+        '$datasource',
+        '',
+        { col: 3, desc: true },
+        [
+          $.overviewStyle('Pool', 'pool', 'string', 'short'),
+          $.overviewStyle('Image', 'image', 'string', 'short'),
+          $.overviewStyle('Latency', 'Value', 'number', 'ns'),
+          $.overviewStyle('', '/.*/', 'hidden', 'short'),
+        ],
+        'Highest Latency',
+        'table'
+      )
+      .addTarget(
+        $.addTargetSchema(
+          |||
+            topk(10,
+              sum(
+                rate(ceph_rbd_write_latency_sum{%(matchers)s}[$__rate_interval]) /
+                  clamp_min(rate(ceph_rbd_write_latency_count{%(matchers)s}[$__rate_interval]), 1) +
+                  rate(ceph_rbd_read_latency_sum{%(matchers)s}[$__rate_interval]) /
+                  clamp_min(rate(ceph_rbd_read_latency_count{%(matchers)s}[$__rate_interval]), 1)
+              ) by (pool, image, namespace)
+            )
+          ||| % $.matchers(),
           '',
-          { col: 3, desc: true },
-          [
-            RgwOverviewStyle('Pool', 'pool', 'string', 'short'),
-            RgwOverviewStyle('Image', 'image', 'string', 'short'),
-            RgwOverviewStyle('Latency', 'Value', 'number', 'ns'),
-            RgwOverviewStyle('', '/.*/', 'hidden', 'short'),
-          ],
-          'Highest Latency',
-          'table'
+          'table',
+          1,
+          true
         )
-        .addTarget(
-          u.addTargetSchema(
-            'topk(10,\n  sum(\n    irate(ceph_rbd_write_latency_sum[30s]) / clamp_min(irate(ceph_rbd_write_latency_count[30s]), 1) +\n    irate(ceph_rbd_read_latency_sum[30s]) / clamp_min(irate(ceph_rbd_read_latency_count[30s]), 1)\n  ) by (pool, image, namespace)\n)',
-            '',
-            'table',
-            1,
-            true
-          )
-        ) + { gridPos: { x: 16, y: 7, w: 8, h: 7 } },
-      ]),
-  },
+      ) + { gridPos: { x: 16, y: 7, w: 8, h: 7 } },
+    ]),
 }
index f7f76187f1427ee8b2daa5ccd06326405be23257..437eb783f1875ed10fa420b87d0fe0db93b7def5 100644 (file)
 local g = import 'grafonnet/grafana.libsonnet';
 local u = import 'utils.libsonnet';
 
-{
-  grafanaDashboards+:: {
-    'radosgw-sync-overview.json':
-      local RgwSyncOverviewPanel(title, formatY1, labelY1, rgwMetric, x, y, w, h) =
-        u.graphPanelSchema({},
-                           title,
-                           '',
-                           'null as zero',
-                           true,
-                           formatY1,
-                           'short',
-                           labelY1,
-                           null,
-                           0,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema('sum by (source_zone) (rate(%s[30s]))' % rgwMetric,
-                             '{{source_zone}}')]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
+(import 'utils.libsonnet') {
+  'radosgw-sync-overview.json':
+    local RgwSyncOverviewPanel(title, formatY1, labelY1, rgwMetric, x, y, w, h) =
+      $.graphPanelSchema({},
+                         title,
+                         '',
+                         'null as zero',
+                         true,
+                         formatY1,
+                         'short',
+                         labelY1,
+                         null,
+                         0,
+                         1,
+                         '$datasource')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            'sum by (source_zone) (rate(%(rgwMetric)s{%(matchers)s}[$__rate_interval]))'
+            % ($.matchers() + { rgwMetric: rgwMetric }),
+            '{{source_zone}}'
+          ),
+        ]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
 
-      u.dashboardSchema(
-        'RGW Sync Overview',
-        '',
-        'rgw-sync-overview',
-        'now-1h',
-        '15s',
-        16,
-        ['overview'],
-        '',
-        {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
-      )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
-      )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    $.dashboardSchema(
+      'RGW Sync Overview',
+      '',
+      'rgw-sync-overview',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags + ['overview'],
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
-      )
-      .addTemplate(
-        u.addTemplateSchema('rgw_servers', '$datasource', 'prometehus', 1, true, 1, '', '')
-      )
-      .addTemplate(
-        g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema(
+        'rgw_servers',
+        '$datasource',
+        'label_values(ceph_rgw_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+        1,
+        true,
+        1,
+        '',
+        'RGW Server'
       )
-      .addPanels([
-        RgwSyncOverviewPanel(
-          'Replication (throughput) from Source Zone',
-          'Bps',
-          null,
-          'ceph_data_sync_from_zone_fetch_bytes_sum',
-          0,
-          0,
-          8,
-          7
-        ),
-        RgwSyncOverviewPanel(
-          'Replication (objects) from Source Zone',
-          'short',
-          'Objects/s',
-          'ceph_data_sync_from_zone_fetch_bytes_count',
-          8,
-          0,
-          8,
-          7
-        ),
-        RgwSyncOverviewPanel(
-          'Polling Request Latency from Source Zone',
-          'ms',
-          null,
-          'ceph_data_sync_from_zone_poll_latency_sum',
-          16,
-          0,
-          8,
-          7
-        ),
-        RgwSyncOverviewPanel(
-          'Unsuccessful Object Replications from Source Zone',
-          'short',
-          'Count/s',
-          'ceph_data_sync_from_zone_fetch_errors',
-          0,
-          7,
-          8,
-          7
-        ),
-      ]),
-    'radosgw-overview.json':
-      local RgwOverviewPanel(
+    )
+    .addPanels([
+      RgwSyncOverviewPanel(
+        'Replication (throughput) from Source Zone',
+        'Bps',
+        null,
+        'ceph_data_sync_from_zone_fetch_bytes_sum',
+        0,
+        0,
+        8,
+        7
+      ),
+      RgwSyncOverviewPanel(
+        'Replication (objects) from Source Zone',
+        'short',
+        'Objects/s',
+        'ceph_data_sync_from_zone_fetch_bytes_count',
+        8,
+        0,
+        8,
+        7
+      ),
+      RgwSyncOverviewPanel(
+        'Polling Request Latency from Source Zone',
+        'ms',
+        null,
+        'ceph_data_sync_from_zone_poll_latency_sum',
+        16,
+        0,
+        8,
+        7
+      ),
+      RgwSyncOverviewPanel(
+        'Unsuccessful Object Replications from Source Zone',
+        'short',
+        'Count/s',
+        'ceph_data_sync_from_zone_fetch_errors',
+        0,
+        7,
+        8,
+        7
+      ),
+    ]),
+  'radosgw-overview.json':
+    local RgwOverviewPanel(
+      title,
+      description,
+      formatY1,
+      formatY2,
+      expr1,
+      legendFormat1,
+      x,
+      y,
+      w,
+      h,
+      datasource='$datasource',
+      legend_alignAsTable=false,
+      legend_avg=false,
+      legend_min=false,
+      legend_max=false,
+      legend_current=false,
+      legend_values=false
+          ) =
+      $.graphPanelSchema(
+        {},
         title,
         description,
+        'null',
+        false,
         formatY1,
         formatY2,
-        expr1,
-        legendFormat1,
-        x,
-        y,
-        w,
-        h,
-        datasource='$datasource',
-        legend_alignAsTable=false,
-        legend_avg=false,
-        legend_min=false,
-        legend_max=false,
-        legend_current=false,
-        legend_values=false
-            ) =
-        u.graphPanelSchema(
-          {},
-          title,
-          description,
-          'null',
-          false,
-          formatY1,
-          formatY2,
-          null,
-          null,
-          0,
-          1,
-          datasource,
-          legend_alignAsTable,
-          legend_avg,
-          legend_min,
-          legend_max,
-          legend_current,
-          legend_values
-        )
-        .addTargets(
-          [u.addTargetSchema(expr1, legendFormat1)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
+        null,
+        null,
+        0,
+        1,
+        datasource,
+        legend_alignAsTable,
+        legend_avg,
+        legend_min,
+        legend_max,
+        legend_current,
+        legend_values
+      )
+      .addTargets(
+        [$.addTargetSchema(expr1, legendFormat1)]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
 
-      u.dashboardSchema(
-        'RGW Overview',
-        '',
-        'WAkugZpiz',
-        'now-1h',
-        '15s',
-        16,
-        ['overview'],
-        '',
-        {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
+    $.dashboardSchema(
+      'RGW Overview',
+      '',
+      'WAkugZpiz',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags + ['overview'],
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource',
+                            'prometheus',
+                            'default',
+                            label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema(
+        'rgw_servers',
+        '$datasource',
+        'label_values(ceph_rgw_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+        1,
+        true,
+        1,
+        '',
+        'RGW Server'
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    )
+    .addTemplate(
+      $.addTemplateSchema(
+        'code',
+        '$datasource',
+        'label_values(haproxy_server_http_responses_total{job=~"$job_haproxy", instance=~"$ingress_service"}, code)',
+        1,
+        true,
+        1,
+        'HTTP Code',
+        ''
       )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      $.addTemplateSchema(
+        'job_haproxy',
+        '$datasource',
+        'label_values(haproxy_server_status, job)',
+        1,
+        true,
+        1,
+        'job haproxy',
+        '(.*)',
+        multi=true,
+        allValues='.+',
+      ),
+    )
+    .addTemplate(
+      $.addTemplateSchema(
+        'ingress_service',
+        '$datasource',
+        'label_values(haproxy_server_status{job=~"$job_haproxy"}, instance)',
+        1,
+        true,
+        1,
+        'Ingress Service',
+        ''
       )
-      .addTemplate(
-        u.addTemplateSchema(
-          'rgw_servers',
-          '$datasource',
-          'label_values(ceph_rgw_metadata, ceph_daemon)',
-          1,
-          true,
-          1,
-          '',
-          ''
-        )
+    )
+    .addPanels([
+      $.addRowSchema(false,
+                     true,
+                     'RGW Overview - All Gateways') +
+      {
+        gridPos: { x: 0, y: 0, w: 24, h: 1 },
+      },
+      RgwOverviewPanel(
+        'Average GET/PUT Latencies',
+        '',
+        's',
+        'short',
+        |||
+          rate(ceph_rgw_get_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+            rate(ceph_rgw_get_initial_lat_count{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s}
+        ||| % $.matchers(),
+        'GET AVG',
+        0,
+        1,
+        8,
+        7
+      ).addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              rate(ceph_rgw_put_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+                rate(ceph_rgw_put_initial_lat_count{%(matchers)s}[$__rate_interval]) *
+                on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s}
+            ||| % $.matchers(),
+            'PUT AVG'
+          ),
+        ]
+      ),
+      RgwOverviewPanel(
+        'Total Requests/sec by RGW Instance',
+        '',
+        'none',
+        'short',
+        |||
+          sum by (rgw_host) (
+            label_replace(
+              rate(ceph_rgw_req{%(matchers)s}[$__rate_interval]) *
+                on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s},
+              "rgw_host", "$1", "ceph_daemon", "rgw.(.*)"
+            )
+          )
+        ||| % $.matchers(),
+        '{{rgw_host}}',
+        8,
+        1,
+        7,
+        7
+      ),
+      RgwOverviewPanel(
+        'GET Latencies by RGW Instance',
+        'Latencies are shown stacked, without a yaxis to provide a visual indication of GET latency imbalance across RGW hosts',
+        's',
+        'short',
+        |||
+          label_replace(
+            rate(ceph_rgw_get_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+              rate(ceph_rgw_get_initial_lat_count{%(matchers)s}[$__rate_interval]) *
+              on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s},
+            "rgw_host", "$1", "ceph_daemon", "rgw.(.*)"
+          )
+        ||| % $.matchers(),
+        '{{rgw_host}}',
+        15,
+        1,
+        6,
+        7
+      ),
+      RgwOverviewPanel(
+        'Bandwidth Consumed by Type',
+        'Total bytes transferred in/out of all radosgw instances within the cluster',
+        'bytes',
+        'short',
+        'sum(rate(ceph_rgw_get_b{%(matchers)s}[$__rate_interval]))' % $.matchers(),
+        'GETs',
+        0,
+        8,
+        8,
+        6
+      ).addTargets(
+        [$.addTargetSchema('sum(rate(ceph_rgw_put_b{%(matchers)s}[$__rate_interval]))' % $.matchers(),
+                           'PUTs')]
+      ),
+      RgwOverviewPanel(
+        'Bandwidth by RGW Instance',
+        'Total bytes transferred in/out through get/put operations, by radosgw instance',
+        'bytes',
+        'short',
+        |||
+          label_replace(sum by (instance_id) (
+            rate(ceph_rgw_get_b{%(matchers)s}[$__rate_interval]) +
+              rate(ceph_rgw_put_b{%(matchers)s}[$__rate_interval])) *
+              on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s},
+            "rgw_host", "$1", "ceph_daemon", "rgw.(.*)"
+          )
+        ||| % $.matchers(),
+        '{{rgw_host}}',
+        8,
+        8,
+        7,
+        6
+      ),
+      RgwOverviewPanel(
+        'PUT Latencies by RGW Instance',
+        'Latencies are shown stacked, without a yaxis to provide a visual indication of PUT latency imbalance across RGW hosts',
+        's',
+        'short',
+        |||
+          label_replace(
+            rate(ceph_rgw_put_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+              rate(ceph_rgw_put_initial_lat_count{%(matchers)s}[$__rate_interval]) *
+              on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s},
+            "rgw_host", "$1", "ceph_daemon", "rgw.(.*)"
+          )
+        ||| % $.matchers(),
+        '{{rgw_host}}',
+        15,
+        8,
+        6,
+        6
+      ),
+      $.addRowSchema(
+        false, true, 'RGW Overview - HAProxy Metrics'
+      ) + { gridPos: { x: 0, y: 12, w: 9, h: 12 } },
+      RgwOverviewPanel(
+        'Total responses by HTTP code',
+        '',
+        'short',
+        'short',
+        |||
+          sum(
+            rate(
+              haproxy_frontend_http_responses_total{code=~"$code", job=~"$job_haproxy", instance=~"$ingress_service", proxy=~"frontend"}[$__rate_interval]
+            )
+          ) by (code)
+        |||,
+        'Frontend {{ code }}',
+        0,
+        12,
+        5,
+        12,
+        '$datasource',
+        true,
+        true,
+        true,
+        true,
+        true,
+        true
       )
-      .addTemplate(
-        u.addTemplateSchema(
-          'code',
-          '$datasource',
-          'label_values(haproxy_server_http_responses_total{instance=~"$ingress_service"}, code)',
-          1,
-          true,
-          1,
-          'HTTP Code',
-          ''
-        )
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_http_responses_total{code=~"$code", job=~"$job_haproxy", instance=~"$ingress_service", proxy=~"backend"}[$__rate_interval]
+                )
+              ) by (code)
+            |||, 'Backend {{ code }}'
+          ),
+        ]
       )
-      .addTemplate(
-        u.addTemplateSchema(
-          'ingress_service',
-          '$datasource',
-          'label_values(haproxy_server_status, instance)',
-          1,
-          true,
-          1,
-          'Ingress Service',
-          ''
-        )
+      .addSeriesOverride([
+        {
+          alias: '/.*Back.*/',
+          transform: 'negative-Y',
+        },
+        { alias: '/.*1.*/' },
+        { alias: '/.*2.*/' },
+        { alias: '/.*3.*/' },
+        { alias: '/.*4.*/' },
+        { alias: '/.*5.*/' },
+        { alias: '/.*other.*/' },
+      ]),
+      RgwOverviewPanel(
+        'Total requests / responses',
+        '',
+        'short',
+        'short',
+        |||
+          sum(
+            rate(
+              haproxy_frontend_http_requests_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+            )
+          ) by (instance)
+        |||,
+        'Requests',
+        5,
+        12,
+        5,
+        12,
+        '$datasource',
+        true,
+        true,
+        true,
+        true,
+        true,
+        true
       )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'default',
-                              label='Data Source')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_response_errors_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Response errors', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_frontend_request_errors_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Requests errors'
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_redispatch_warnings_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Backend redispatch', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_retry_warnings_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Backend retry', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_frontend_requests_denied_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Request denied', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                haproxy_backend_current_queue{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}
+              ) by (instance)
+            |||, 'Backend Queued', 'time_series', 2
+          ),
+        ]
       )
-      .addPanels([
-        u.addRowSchema(false,
-                       true,
-                       'RGW Overview - All Gateways') +
+      .addSeriesOverride([
+        {
+          alias: '/.*Response.*/',
+          transform: 'negative-Y',
+        },
         {
-          gridPos: { x: 0, y: 0, w: 24, h: 1 },
+          alias: '/.*Backend.*/',
+          transform: 'negative-Y',
         },
-        RgwOverviewPanel(
-          'Average GET/PUT Latencies',
-          '',
-          's',
-          'short',
-          'rate(ceph_rgw_get_initial_lat_sum[30s]) / rate(ceph_rgw_get_initial_lat_count[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata',
-          'GET AVG',
-          0,
-          1,
-          8,
-          7
-        ).addTargets(
-          [
-            u.addTargetSchema(
-              'rate(ceph_rgw_put_initial_lat_sum[30s]) / rate(ceph_rgw_put_initial_lat_count[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata',
-              'PUT AVG'
-            ),
-          ]
-        ),
-        RgwOverviewPanel(
-          'Total Requests/sec by RGW Instance',
-          '',
-          'none',
-          'short',
-          'sum by (rgw_host) (label_replace(rate(ceph_rgw_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata, "rgw_host", "$1", "ceph_daemon", "rgw.(.*)"))',
-          '{{rgw_host}}',
-          8,
-          1,
-          7,
-          7
-        ),
-        RgwOverviewPanel(
-          'GET Latencies by RGW Instance',
-          'Latencies are shown stacked, without a yaxis to provide a visual indication of GET latency imbalance across RGW hosts',
-          's',
-          'short',
-          'label_replace(\n    rate(ceph_rgw_get_initial_lat_sum[30s]) /\n    rate(ceph_rgw_get_initial_lat_count[30s]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata,\n"rgw_host", "$1", "ceph_daemon", "rgw.(.*)")',
-          '{{rgw_host}}',
-          15,
-          1,
-          6,
-          7
-        ),
-        RgwOverviewPanel(
-          'Bandwidth Consumed by Type',
-          'Total bytes transferred in/out of all radosgw instances within the cluster',
-          'bytes',
-          'short',
-          'sum(rate(ceph_rgw_get_b[30s]))',
-          'GETs',
-          0,
-          8,
-          8,
-          6
-        ).addTargets(
-          [u.addTargetSchema('sum(rate(ceph_rgw_put_b[30s]))',
-                             'PUTs')]
-        ),
-        RgwOverviewPanel(
-          'Bandwidth by RGW Instance',
-          'Total bytes transferred in/out through get/put operations, by radosgw instance',
-          'bytes',
-          'short',
-          'label_replace(sum by (instance_id) (\n    rate(ceph_rgw_get_b[30s]) + \n    rate(ceph_rgw_put_b[30s])\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata, "rgw_host", "$1", "ceph_daemon", "rgw.(.*)")',
-          '{{rgw_host}}',
-          8,
-          8,
-          7,
-          6
-        ),
-        RgwOverviewPanel(
-          'PUT Latencies by RGW Instance',
-          'Latencies are shown stacked, without a yaxis to provide a visual indication of PUT latency imbalance across RGW hosts',
-          's',
-          'short',
-          'label_replace(\n    rate(ceph_rgw_put_initial_lat_sum[30s]) /\n    rate(ceph_rgw_put_initial_lat_count[30s]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata,\n"rgw_host", "$1", "ceph_daemon", "rgw.(.*)")',
-          '{{rgw_host}}',
-          15,
-          8,
-          6,
-          6
-        ),
-        u.addRowSchema(
-          false, true, 'RGW Overview - HAProxy Metrics'
-        ) + { gridPos: { x: 0, y: 12, w: 9, h: 12 } },
-        RgwOverviewPanel(
-          'Total responses by HTTP code',
-          '',
-          'short',
-          'short',
-          'sum(irate(haproxy_frontend_http_responses_total{code=~"$code",instance=~"$ingress_service",proxy=~"frontend"}[5m])) by (code)',
-          'Frontend {{ code }}',
-          0,
-          12,
-          5,
-          12,
-          '$datasource',
-          true,
-          true,
-          true,
-          true,
-          true,
-          true
-        )
-        .addTargets(
-          [u.addTargetSchema('sum(irate(haproxy_backend_http_responses_total{code=~"$code",instance=~"$ingress_service",proxy=~"backend"}[5m])) by (code)', 'Backend {{ code }}')]
-        )
-        .addSeriesOverride([
-          {
-            alias: '/.*Back.*/',
-            transform: 'negative-Y',
-          },
-          { alias: '/.*1.*/' },
-          { alias: '/.*2.*/' },
-          { alias: '/.*3.*/' },
-          { alias: '/.*4.*/' },
-          { alias: '/.*5.*/' },
-          { alias: '/.*other.*/' },
-        ]),
-        RgwOverviewPanel(
-          'Total requests / responses',
-          '',
-          'short',
-          'short',
-          'sum(irate(haproxy_frontend_http_requests_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])) by (instance)',
-          'Requests',
-          5,
-          12,
-          5,
-          12,
-          '$datasource',
-          true,
-          true,
-          true,
-          true,
-          true,
-          true
-        )
-        .addTargets(
-          [
-            u.addTargetSchema('sum(irate(haproxy_backend_response_errors_total{proxy=~"backend",instance=~"$ingress_service"}[5m])) by (instance)', 'Response errors', 'time_series', 2),
-            u.addTargetSchema('sum(irate(haproxy_frontend_request_errors_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])) by (instance)', 'Requests errors'),
-            u.addTargetSchema('sum(irate(haproxy_backend_redispatch_warnings_total{proxy=~"backend",instance=~"$ingress_service"}[5m])) by (instance)', 'Backend redispatch', 'time_series', 2),
-            u.addTargetSchema('sum(irate(haproxy_backend_retry_warnings_total{proxy=~"backend",instance=~"$ingress_service"}[5m])) by (instance)', 'Backend retry', 'time_series', 2),
-            u.addTargetSchema('sum(irate(haproxy_frontend_requests_denied_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])) by (instance)', 'Request denied', 'time_series', 2),
-            u.addTargetSchema('sum(haproxy_backend_current_queue{proxy=~"backend",instance=~"$ingress_service"}) by (instance)', 'Backend Queued', 'time_series', 2),
-          ]
-        )
-        .addSeriesOverride([
-          {
-            alias: '/.*Response.*/',
-            transform: 'negative-Y',
-          },
-          {
-            alias: '/.*Backend.*/',
-            transform: 'negative-Y',
-          },
-        ]),
-        RgwOverviewPanel(
-          'Total number of connections',
-          '',
-          'short',
-          'short',
-          'sum(irate(haproxy_frontend_connections_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])) by (instance)',
-          'Front',
-          10,
-          12,
-          5,
-          12,
-          '$datasource',
-          true,
-          true,
-          true,
-          true,
-          true,
-          true
-        )
-        .addTargets(
-          [
-            u.addTargetSchema('sum(irate(haproxy_backend_connection_attempts_total{proxy=~"backend",instance=~"$ingress_service"}[5m])) by (instance)', 'Back'),
-            u.addTargetSchema('sum(irate(haproxy_backend_connection_errors_total{proxy=~"backend",instance=~"$ingress_service"}[5m])) by (instance)', 'Back errors'),
-          ]
-        )
-        .addSeriesOverride([
-          {
-            alias: '/.*Back.*/',
-            transform: 'negative-Y',
-          },
-        ]),
-        RgwOverviewPanel(
-          'Current total of incoming / outgoing bytes',
-          '',
-          'short',
-          'short',
-          'sum(irate(haproxy_frontend_bytes_in_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])*8) by (instance)',
-          'IN Front',
-          15,
-          12,
-          6,
-          12,
-          '$datasource',
-          true,
-          true,
-          true,
-          true,
-          true,
-          true
-        )
-        .addTargets(
-          [
-            u.addTargetSchema('sum(irate(haproxy_frontend_bytes_out_total{proxy=~"frontend",instance=~"$ingress_service"}[5m])*8) by (instance)', 'OUT Front', 'time_series', 2),
-            u.addTargetSchema('sum(irate(haproxy_backend_bytes_in_total{proxy=~"backend",instance=~"$ingress_service"}[5m])*8) by (instance)', 'IN Back', 'time_series', 2),
-            u.addTargetSchema('sum(irate(haproxy_backend_bytes_out_total{proxy=~"backend",instance=~"$ingress_service"}[5m])*8) by (instance)', 'OUT Back', 'time_series', 2),
-          ]
-        )
-        .addSeriesOverride([
-          {
-            alias: '/.*OUT.*/',
-            transform: 'negative-Y',
-          },
-        ]),
       ]),
-    'radosgw-detail.json':
-      local RgwDetailsPanel(aliasColors,
-                            title,
-                            description,
-                            formatY1,
-                            formatY2,
-                            expr1,
-                            expr2,
-                            legendFormat1,
-                            legendFormat2,
-                            x,
-                            y,
-                            w,
-                            h) =
-        u.graphPanelSchema(aliasColors,
-                           title,
-                           description,
-                           'null',
-                           false,
-                           formatY1,
-                           formatY2,
-                           null,
-                           null,
-                           0,
-                           1,
-                           '$datasource')
-        .addTargets(
-          [u.addTargetSchema(expr1, legendFormat1), u.addTargetSchema(expr2, legendFormat2)]
-        ) + { gridPos: { x: x, y: y, w: w, h: h } };
-
-      u.dashboardSchema(
-        'RGW Instance Detail',
-        '',
-        'x5ARzZtmk',
-        'now-1h',
-        '15s',
-        16,
-        ['overview'],
+      RgwOverviewPanel(
+        'Total number of connections',
         '',
-        {
-          refresh_intervals: ['5s', '10s', '15s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
-          time_options: ['5m', '15m', '1h', '6h', '12h', '24h', '2d', '7d', '30d'],
-        }
+        'short',
+        'short',
+        |||
+          sum(
+            rate(
+              haproxy_frontend_connections_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+            )
+          ) by (instance)
+        |||,
+        'Front',
+        10,
+        12,
+        5,
+        12,
+        '$datasource',
+        true,
+        true,
+        true,
+        true,
+        true,
+        true
       )
-      .addAnnotation(
-        u.addAnnotationSchema(
-          1,
-          '-- Grafana --',
-          true,
-          true,
-          'rgba(0, 211, 255, 1)',
-          'Annotations & Alerts',
-          'dashboard'
-        )
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_connection_attempts_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Back'
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_connection_errors_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                )
+              ) by (instance)
+            |||, 'Back errors'
+          ),
+        ]
       )
-      .addRequired(
-        type='grafana', id='grafana', name='Grafana', version='5.0.0'
+      .addSeriesOverride([
+        {
+          alias: '/.*Back.*/',
+          transform: 'negative-Y',
+        },
+      ]),
+      RgwOverviewPanel(
+        'Current total of incoming / outgoing bytes',
+        '',
+        'short',
+        'short',
+        |||
+          sum(
+            rate(
+              haproxy_frontend_bytes_in_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+            ) * 8
+          ) by (instance)
+        |||,
+        'IN Front',
+        15,
+        12,
+        6,
+        12,
+        '$datasource',
+        true,
+        true,
+        true,
+        true,
+        true,
+        true
       )
-      .addRequired(
-        type='panel',
-        id='grafana-piechart-panel',
-        name='Pie Chart',
-        version='1.3.3'
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_frontend_bytes_out_total{proxy=~"frontend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                ) * 8
+              ) by (instance)
+            |||, 'OUT Front', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_bytes_in_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                ) * 8
+              ) by (instance)
+            |||, 'IN Back', 'time_series', 2
+          ),
+          $.addTargetSchema(
+            |||
+              sum(
+                rate(
+                  haproxy_backend_bytes_out_total{proxy=~"backend", job=~"$job_haproxy", instance=~"$ingress_service"}[$__rate_interval]
+                ) * 8
+              ) by (instance)
+            |||, 'OUT Back', 'time_series', 2
+          ),
+        ]
       )
-      .addRequired(
-        type='panel', id='graph', name='Graph', version='5.0.0'
+      .addSeriesOverride([
+        {
+          alias: '/.*OUT.*/',
+          transform: 'negative-Y',
+        },
+      ]),
+    ]),
+  'radosgw-detail.json':
+    local RgwDetailsPanel(aliasColors,
+                          title,
+                          description,
+                          formatY1,
+                          formatY2,
+                          expr1,
+                          expr2,
+                          legendFormat1,
+                          legendFormat2,
+                          x,
+                          y,
+                          w,
+                          h) =
+      $.graphPanelSchema(aliasColors,
+                         title,
+                         description,
+                         'null',
+                         false,
+                         formatY1,
+                         formatY2,
+                         null,
+                         null,
+                         0,
+                         1,
+                         '$datasource')
+      .addTargets(
+        [$.addTargetSchema(expr1, legendFormat1), $.addTargetSchema(expr2, legendFormat2)]
+      ) + { gridPos: { x: x, y: y, w: w, h: h } };
+
+    $.dashboardSchema(
+      'RGW Instance Detail',
+      '',
+      'x5ARzZtmk',
+      'now-1h',
+      '30s',
+      16,
+      $._config.dashboardTags + ['overview'],
+      ''
+    )
+    .addAnnotation(
+      $.addAnnotationSchema(
+        1,
+        '-- Grafana --',
+        true,
+        true,
+        'rgba(0, 211, 255, 1)',
+        'Annotations & Alerts',
+        'dashboard'
       )
-      .addTemplate(
-        g.template.datasource('datasource',
-                              'prometheus',
-                              'default',
-                              label='Data Source')
+    )
+    .addRequired(
+      type='grafana', id='grafana', name='Grafana', version='5.0.0'
+    )
+    .addRequired(
+      type='panel',
+      id='grafana-piechart-panel',
+      name='Pie Chart',
+      version='1.3.3'
+    )
+    .addRequired(
+      type='panel', id='graph', name='Graph', version='5.0.0'
+    )
+    .addTemplate(
+      g.template.datasource('datasource',
+                            'prometheus',
+                            'default',
+                            label='Data Source')
+    )
+    .addTemplate(
+      $.addClusterTemplate()
+    )
+    .addTemplate(
+      $.addJobTemplate()
+    )
+    .addTemplate(
+      $.addTemplateSchema('rgw_servers',
+                          '$datasource',
+                          'label_values(ceph_rgw_metadata{%(matchers)s}, ceph_daemon)' % $.matchers(),
+                          1,
+                          true,
+                          1,
+                          '',
+                          '')
+    )
+    .addPanels([
+      $.addRowSchema(false, true, 'RGW Host Detail : $rgw_servers') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
+      RgwDetailsPanel(
+        {},
+        '$rgw_servers GET/PUT Latencies',
+        '',
+        's',
+        'short',
+        |||
+          sum by (instance_id) (
+            rate(ceph_rgw_get_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+              rate(ceph_rgw_get_initial_lat_count{%(matchers)s}[$__rate_interval])
+          ) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        |||
+          sum by (instance_id) (
+            rate(ceph_rgw_put_initial_lat_sum{%(matchers)s}[$__rate_interval]) /
+              rate(ceph_rgw_put_initial_lat_count{%(matchers)s}[$__rate_interval])
+          ) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'GET {{ceph_daemon}}',
+        'PUT {{ceph_daemon}}',
+        0,
+        1,
+        6,
+        8
+      ),
+      RgwDetailsPanel(
+        {},
+        'Bandwidth by HTTP Operation',
+        '',
+        'bytes',
+        'short',
+        |||
+          rate(ceph_rgw_get_b{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        |||
+          rate(ceph_rgw_put_b{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon)
+            ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'GETs {{ceph_daemon}}',
+        'PUTs {{ceph_daemon}}',
+        6,
+        1,
+        7,
+        8
+      ),
+      RgwDetailsPanel(
+        {
+          GETs: '#7eb26d',
+          Other: '#447ebc',
+          PUTs: '#eab839',
+          Requests: '#3f2b5b',
+          'Requests Failed': '#bf1b00',
+        },
+        'HTTP Request Breakdown',
+        '',
+        'short',
+        'short',
+        |||
+          rate(ceph_rgw_failed_req{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s,ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        |||
+          rate(ceph_rgw_get{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'Requests Failed {{ceph_daemon}}',
+        'GETs {{ceph_daemon}}',
+        13,
+        1,
+        7,
+        8
       )
-      .addTemplate(
-        u.addTemplateSchema('rgw_servers',
-                            '$datasource',
-                            'label_values(ceph_rgw_metadata, ceph_daemon)',
-                            1,
-                            true,
-                            1,
-                            '',
-                            '')
+      .addTargets(
+        [
+          $.addTargetSchema(
+            |||
+              rate(ceph_rgw_put{%(matchers)s}[$__rate_interval]) *
+                on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+            ||| % $.matchers(),
+            'PUTs {{ceph_daemon}}'
+          ),
+          $.addTargetSchema(
+            |||
+              (
+                rate(ceph_rgw_req{%(matchers)s}[$__rate_interval]) -
+                  (
+                    rate(ceph_rgw_get{%(matchers)s}[$__rate_interval]) +
+                      rate(ceph_rgw_put{%(matchers)s}[$__rate_interval])
+                  )
+              ) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+            ||| % $.matchers(),
+            'Other {{ceph_daemon}}'
+          ),
+        ]
+      ),
+      $.simplePieChart(
+        {
+          GETs: '#7eb26d',
+          'Other (HEAD,POST,DELETE)': '#447ebc',
+          PUTs: '#eab839',
+          Requests: '#3f2b5b',
+          Failures: '#bf1b00',
+        }, '', 'Workload Breakdown'
       )
-      .addPanels([
-        u.addRowSchema(false, true, 'RGW Host Detail : $rgw_servers') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
-        RgwDetailsPanel(
-          {},
-          '$rgw_servers GET/PUT Latencies',
-          '',
-          's',
-          'short',
-          'sum by (instance_id) (rate(ceph_rgw_get_initial_lat_sum[30s]) / rate(ceph_rgw_get_initial_lat_count[30s])) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'sum by (instance_id) (rate(ceph_rgw_put_initial_lat_sum[30s]) / rate(ceph_rgw_put_initial_lat_count[30s])) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'GET {{ceph_daemon}}',
-          'PUT {{ceph_daemon}}',
-          0,
-          1,
-          6,
-          8
-        ),
-        RgwDetailsPanel(
-          {},
-          'Bandwidth by HTTP Operation',
-          '',
-          'bytes',
-          'short',
-          'rate(ceph_rgw_get_b[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'rate(ceph_rgw_put_b[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'GETs {{ceph_daemon}}',
-          'PUTs {{ceph_daemon}}',
-          6,
-          1,
-          7,
-          8
-        ),
-        RgwDetailsPanel(
-          {
-            GETs: '#7eb26d',
-            Other: '#447ebc',
-            PUTs: '#eab839',
-            Requests: '#3f2b5b',
-            'Requests Failed': '#bf1b00',
-          },
-          'HTTP Request Breakdown',
-          '',
-          'short',
-          'short',
-          'rate(ceph_rgw_failed_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'rate(ceph_rgw_get[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'Requests Failed {{ceph_daemon}}',
-          'GETs {{ceph_daemon}}',
-          13,
-          1,
-          7,
-          8
-        )
-        .addTargets(
-          [
-            u.addTargetSchema(
-              'rate(ceph_rgw_put[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-              'PUTs {{ceph_daemon}}'
-            ),
-            u.addTargetSchema(
-              '(\n    rate(ceph_rgw_req[30s]) -\n    (rate(ceph_rgw_get[30s]) + rate(ceph_rgw_put[30s]))\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-              'Other {{ceph_daemon}}'
-            ),
-          ]
-        ),
-        u.addPieChartSchema(
-          {
-            GETs: '#7eb26d',
-            'Other (HEAD,POST,DELETE)': '#447ebc',
-            PUTs: '#eab839',
-            Requests: '#3f2b5b',
-            Failures: '#bf1b00',
-          }, '$datasource', '', 'Under graph', 'pie', 'Workload Breakdown', 'current'
-        )
-        .addTarget(u.addTargetSchema(
-          'rate(ceph_rgw_failed_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'Failures {{ceph_daemon}}'
-        ))
-        .addTarget(u.addTargetSchema(
-          'rate(ceph_rgw_get[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'GETs {{ceph_daemon}}'
-        ))
-        .addTarget(u.addTargetSchema(
-          'rate(ceph_rgw_put[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'PUTs {{ceph_daemon}}'
-        ))
-        .addTarget(u.addTargetSchema(
-          '(\n    rate(ceph_rgw_req[30s]) -\n    (rate(ceph_rgw_get[30s]) + rate(ceph_rgw_put[30s]))\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~"$rgw_servers"}',
-          'Other (DELETE,LIST) {{ceph_daemon}}'
-        )) + { gridPos: { x: 20, y: 1, w: 4, h: 8 } },
-      ]),
-  },
+      .addTarget($.addTargetSchema(
+        |||
+          rate(ceph_rgw_failed_req{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'Failures {{ceph_daemon}}'
+      ))
+      .addTarget($.addTargetSchema(
+        |||
+          rate(ceph_rgw_get{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'GETs {{ceph_daemon}}'
+      ))
+      .addTarget($.addTargetSchema(
+        |||
+          rate(ceph_rgw_put{%(matchers)s}[$__rate_interval]) *
+            on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'PUTs {{ceph_daemon}}'
+      ))
+      .addTarget($.addTargetSchema(
+        |||
+          (
+            rate(ceph_rgw_req{%(matchers)s}[$__rate_interval]) -
+              (
+                rate(ceph_rgw_get{%(matchers)s}[$__rate_interval]) +
+                  rate(ceph_rgw_put{%(matchers)s}[$__rate_interval])
+              )
+          ) * on (instance_id) group_left (ceph_daemon)
+            ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
+        ||| % $.matchers(),
+        'Other (DELETE,LIST) {{ceph_daemon}}'
+      )) + { gridPos: { x: 20, y: 1, w: 4, h: 8 } },
+    ]),
 }
index 1f25d370c2a1323c0c3dbe23754e3929f9ce3e57..a7774c7ceed82c51aa80960bcdde5900d2f948eb 100644 (file)
@@ -1,6 +1,8 @@
 local g = import 'grafonnet/grafana.libsonnet';
 
 {
+  _config:: error 'must provide _config',
+
   dashboardSchema(title,
                   description,
                   uid,
@@ -8,8 +10,7 @@ local g = import 'grafonnet/grafana.libsonnet';
                   refresh,
                   schemaVersion,
                   tags,
-                  timezone,
-                  timepicker)::
+                  timezone)::
     g.dashboard.new(title=title,
                     description=description,
                     uid=uid,
@@ -17,8 +18,7 @@ local g = import 'grafonnet/grafana.libsonnet';
                     refresh=refresh,
                     schemaVersion=schemaVersion,
                     tags=tags,
-                    timezone=timezone,
-                    timepicker=timepicker),
+                    timezone=timezone),
 
   graphPanelSchema(aliasColors,
                    title,
@@ -72,7 +72,10 @@ local g = import 'grafonnet/grafana.libsonnet';
                     includeAll,
                     sort,
                     label,
-                    regex)::
+                    regex,
+                    hide='',
+                    multi=false,
+                    allValues=null)::
     g.template.new(name=name,
                    datasource=datasource,
                    query=query,
@@ -80,7 +83,10 @@ local g = import 'grafonnet/grafana.libsonnet';
                    includeAll=includeAll,
                    sort=sort,
                    label=label,
-                   regex=regex),
+                   regex=regex,
+                   hide=hide,
+                   multi=multi,
+                   allValues=allValues),
 
   addAnnotationSchema(builtIn,
                       datasource,
@@ -170,4 +176,158 @@ local g = import 'grafonnet/grafana.libsonnet';
       unit: unit,
       valueMaps: valueMaps,
     },
+
+  matchers()::
+    local jobMatcher = 'job=~"$job"';
+    local clusterMatcher = '%s=~"$cluster"' % $._config.clusterLabel;
+    {
+      // Common labels
+      jobMatcher: jobMatcher,
+      clusterMatcher: (if $._config.showMultiCluster then clusterMatcher else ''),
+      matchers: jobMatcher +
+                (if $._config.showMultiCluster then ', ' + clusterMatcher else ''),
+    },
+
+  addClusterTemplate()::
+    $.addTemplateSchema(
+      'cluster',
+      '$datasource',
+      'label_values(ceph_osd_metadata, %s)' % $._config.clusterLabel,
+      1,
+      true,
+      1,
+      'cluster',
+      '(.*)',
+      if !$._config.showMultiCluster then 'variable' else '',
+      multi=true,
+      allValues='.+',
+    ),
+
+  addJobTemplate()::
+    $.addTemplateSchema(
+      'job',
+      '$datasource',
+      'label_values(ceph_osd_metadata{%(clusterMatcher)s}, job)' % $.matchers(),
+      1,
+      true,
+      1,
+      'job',
+      '(.*)',
+      multi=true,
+      allValues='.+',
+    ),
+
+  overviewStyle(alias,
+                pattern,
+                type,
+                unit,
+                colorMode=null,
+                thresholds=[],
+                valueMaps=[])::
+    $.addStyle(alias,
+               colorMode,
+               [
+                 'rgba(245, 54, 54, 0.9)',
+                 'rgba(237, 129, 40, 0.89)',
+                 'rgba(50, 172, 45, 0.97)',
+               ],
+               'YYYY-MM-DD HH:mm:ss',
+               2,
+               1,
+               pattern,
+               thresholds,
+               type,
+               unit,
+               valueMaps),
+
+  simpleGraphPanel(alias,
+                   title,
+                   description,
+                   formatY1,
+                   labelY1,
+                   min,
+                   expr,
+                   legendFormat,
+                   x,
+                   y,
+                   w,
+                   h)::
+    $.graphPanelSchema(alias,
+                       title,
+                       description,
+                       'null',
+                       false,
+                       formatY1,
+                       'short',
+                       labelY1,
+                       null,
+                       min,
+                       1,
+                       '$datasource')
+    .addTargets(
+      [$.addTargetSchema(expr, legendFormat)]
+    ) + { gridPos: { x: x, y: y, w: w, h: h } },
+
+  simpleSingleStatPanel(format,
+                        title,
+                        description,
+                        valueName,
+                        expr,
+                        instant,
+                        targetFormat,
+                        x,
+                        y,
+                        w,
+                        h)::
+    $.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
+                          '$datasource',
+                          format,
+                          title,
+                          description,
+                          valueName,
+                          false,
+                          100,
+                          false,
+                          false,
+                          '')
+    .addTarget($.addTargetSchema(expr, '', targetFormat, 1, instant)) + {
+      gridPos: { x: x, y: y, w: w, h: h },
+    },
+  gaugeSingleStatPanel(format,
+                       title,
+                       description,
+                       valueName,
+                       colorValue,
+                       gaugeMaxValue,
+                       gaugeShow,
+                       sparkLineShow,
+                       thresholds,
+                       expr,
+                       targetFormat,
+                       x,
+                       y,
+                       w,
+                       h)::
+    $.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
+                          '$datasource',
+                          format,
+                          title,
+                          description,
+                          valueName,
+                          colorValue,
+                          gaugeMaxValue,
+                          gaugeShow,
+                          sparkLineShow,
+                          thresholds)
+    .addTarget($.addTargetSchema(expr, '', targetFormat)) + { gridPos: { x:
+      x, y: y, w: w, h: h } },
+
+  simplePieChart(alias, description, title)::
+    $.addPieChartSchema(alias,
+                        '$datasource',
+                        description,
+                        'Under graph',
+                        'pie',
+                        title,
+                        'current'),
 }
diff --git a/ceph/monitoring/ceph-mixin/dashboards_out/.lint b/ceph/monitoring/ceph-mixin/dashboards_out/.lint
new file mode 100644 (file)
index 0000000..6352e85
--- /dev/null
@@ -0,0 +1,5 @@
+exclusions:
+  template-instance-rule:
+    reason: "Instance template not needed because of ceph-mgr leader election."
+  target-instance-rule:
+    reason: "Instance matcher not needed because of ceph-mgr leader election."
index 5c0c27329d69aee395bc6506ac98903f2c68378b..3e7aeef45785d42b4c8af9d34e5a635eaec12d6e 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(rate(ceph_objecter_op_r{ceph_daemon=~\"($mds_servers).*\"}[1m]))",
+               "expr": "sum(rate(ceph_objecter_op_r{job=~\"$job\", ceph_daemon=~\"($mds_servers).*\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Read Ops",
                "refId": "A"
             },
             {
-               "expr": "sum(rate(ceph_objecter_op_w{ceph_daemon=~\"($mds_servers).*\"}[1m]))",
+               "expr": "sum(rate(ceph_objecter_op_w{job=~\"$job\", ceph_daemon=~\"($mds_servers).*\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Write Ops",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "ceph_mds_server_handle_client_request{ceph_daemon=~\"($mds_servers).*\"}",
+               "expr": "ceph_mds_server_handle_client_request{job=~\"$job\", ceph_daemon=~\"($mds_servers).*\"}",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{ceph_daemon}}",
          ]
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "mds_servers",
             "options": [ ],
-            "query": "label_values(ceph_mds_inodes, ceph_daemon)",
+            "query": "label_values(ceph_mds_inodes{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "",
             "sort": 1,
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 7b3c1df152efaffb573337a9d6d93d03e7f4c236..93c51f00941072123cc56e7e7a7651b8f4432f22 100644 (file)
          "tableColumn": "",
          "targets": [
             {
-               "expr": "count(sum by (ceph_daemon) (ceph_osd_metadata{hostname='$ceph_hosts'}))",
+               "expr": "count(sum by (ceph_daemon) (ceph_osd_metadata{job=~\"$job\", hostname='$ceph_hosts'}))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (mode) (\n  irate(node_cpu{instance=~\"($ceph_hosts)([\\\\.:].*)?\", mode=~\"(irq|nice|softirq|steal|system|user|iowait)\"}[1m]) or\n  irate(node_cpu_seconds_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\", mode=~\"(irq|nice|softirq|steal|system|user|iowait)\"}[1m])\n) / scalar(\n  sum(irate(node_cpu{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[1m]) or\n      irate(node_cpu_seconds_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[1m]))\n) * 100",
+               "expr": "sum by (mode) (\n  rate(node_cpu{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\", mode=~\"(irq|nice|softirq|steal|system|user|iowait)\"}[$__rate_interval]) or\n  rate(node_cpu_seconds_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\", mode=~\"(irq|nice|softirq|steal|system|user|iowait)\"}[$__rate_interval])\n) / (\n  scalar(\n    sum(rate(node_cpu{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n    rate(node_cpu_seconds_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]))\n  ) * 100\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{mode}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "node_memory_MemFree{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_MemFree_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"} ",
+               "expr": "node_memory_MemFree{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_MemFree_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Free",
                "refId": "A"
             },
             {
-               "expr": "node_memory_MemTotal{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_MemTotal_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"} ",
+               "expr": "node_memory_MemTotal{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_MemTotal_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "total",
                "refId": "B"
             },
             {
-               "expr": "(node_memory_Cached{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Cached_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"}) + \n(node_memory_Buffers{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Buffers_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"}) +\n(node_memory_Slab{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Slab_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"}) \n",
+               "expr": "(\n  node_memory_Cached{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_Cached_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n) + (\n  node_memory_Buffers{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_Buffers_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n) + (\n  node_memory_Slab{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_Slab_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "buffers/cache",
                "refId": "C"
             },
             {
-               "expr": "(node_memory_MemTotal{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_MemTotal_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"})- (\n  (node_memory_MemFree{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_MemFree_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"})  + \n  (node_memory_Cached{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Cached_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"}) + \n  (node_memory_Buffers{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Buffers_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"}) +\n  (node_memory_Slab{instance=~\"$ceph_hosts([\\\\.:].*)?\"} or node_memory_Slab_bytes{instance=~\"$ceph_hosts([\\\\.:].*)?\"})\n  )\n  \n",
+               "expr": "(\n  node_memory_MemTotal{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n  node_memory_MemTotal_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n) - (\n  (\n    node_memory_MemFree{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n    node_memory_MemFree_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n  ) + (\n    node_memory_Cached{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n    node_memory_Cached_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n  ) + (\n    node_memory_Buffers{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n    node_memory_Buffers_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n  ) +\n  (\n    node_memory_Slab{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"} or\n    node_memory_Slab_bytes{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "used",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (device) (\n  irate(node_network_receive_bytes{instance=~\"($ceph_hosts)([\\\\.:].*)?\",device!=\"lo\"}[1m]) or \n  irate(node_network_receive_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\",device!=\"lo\"}[1m])\n)",
+               "expr": "sum by (device) (\n  rate(\n    node_network_receive_bytes{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\",device!=\"lo\"}[$__rate_interval]) or\n    rate(node_network_receive_bytes_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\",device!=\"lo\"}[$__rate_interval]\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.rx",
                "refId": "A"
             },
             {
-               "expr": "sum by (device) (\n  irate(node_network_transmit_bytes{instance=~\"($ceph_hosts)([\\\\.:].*)?\",device!=\"lo\"}[1m]) or\n  irate(node_network_transmit_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\",device!=\"lo\"}[1m])\n)",
+               "expr": "sum by (device) (\n  rate(node_network_transmit_bytes{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\",device!=\"lo\"}[$__rate_interval]) or\n  rate(node_network_transmit_bytes_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\",device!=\"lo\"}[$__rate_interval])\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.tx",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(node_network_receive_drop{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m]) or irate(node_network_receive_drop_total{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m])",
+               "expr": "rate(node_network_receive_drop{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n  rate(node_network_receive_drop_total{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.rx",
                "refId": "A"
             },
             {
-               "expr": "irate(node_network_transmit_drop{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m]) or irate(node_network_transmit_drop_total{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m])",
+               "expr": "rate(node_network_transmit_drop{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n  rate(node_network_transmit_drop_total{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.tx",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_osd_stat_bytes and on (ceph_daemon) ceph_disk_occupation{instance=~\"($ceph_hosts)([\\\\.:].*)?\"})",
+               "expr": "sum(\n  ceph_osd_stat_bytes{job=~\"$job\"} and\n    on (ceph_daemon) ceph_disk_occupation{job=~\"$job\", instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(node_network_receive_errs{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m]) or irate(node_network_receive_errs_total{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m])",
+               "expr": "rate(node_network_receive_errs{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n  rate(node_network_receive_errs_total{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.rx",
                "refId": "A"
             },
             {
-               "expr": "irate(node_network_transmit_errs{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m]) or irate(node_network_transmit_errs_total{instance=~\"$ceph_hosts([\\\\.:].*)?\"}[1m])",
+               "expr": "rate(node_network_transmit_errs{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n  rate(node_network_transmit_errs_total{instance=~\"$ceph_hosts([\\\\\\\\.:].*)?\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}.tx",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "connected",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(\n  (\n    irate(node_disk_writes_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or\n    irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])\n  ),\n  \"instance\",\n  \"$1\",\n  \"instance\",\n  \"([^:.]*).*\"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
+               "expr": "label_replace(\n  (\n    rate(node_disk_writes_completed{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n    rate(node_disk_writes_completed_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) * on(instance, device) group_left(ceph_daemon) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}}) writes",
                "refId": "A"
             },
             {
-               "expr": "label_replace(\n    (irate(node_disk_reads_completed{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n)\n* on(instance, device) group_left(ceph_daemon)\n  label_replace(\n    label_replace(\n      ceph_disk_occupation_human,\n      \"device\",\n      \"$1\",\n      \"device\",\n      \"/dev/(.*)\"\n    ),\n    \"instance\",\n    \"$1\",\n    \"instance\",\n    \"([^:.]*).*\"\n  )",
+               "expr": "label_replace(\n  (\n    rate(node_disk_reads_completed{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n    rate(node_disk_reads_completed_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) * on(instance, device) group_left(ceph_daemon) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\"},\"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}}) reads",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "connected",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace((irate(node_disk_bytes_written{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_written_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  (\n    rate(node_disk_bytes_written{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n    rate(node_disk_written_bytes_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device)\n  group_left(ceph_daemon) label_replace(\n    label_replace(ceph_disk_occupation_human{job=~\"$job\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"),\n    \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n  )\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}}) write",
                "refId": "A"
             },
             {
-               "expr": "label_replace((irate(node_disk_bytes_read{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) or irate(node_disk_read_bytes_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m])), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  (\n    rate(node_disk_bytes_read{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) or\n    rate(node_disk_read_bytes_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])\n  ),\n  \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device)\n  group_left(ceph_daemon) label_replace(\n    label_replace(ceph_disk_occupation_human{job=~\"$job\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"),\n    \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n  )\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}}) read",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "max by(instance,device) (label_replace((irate(node_disk_write_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_writes_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001) or   (irate(node_disk_read_time_seconds_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) )  / clamp_min(irate(node_disk_reads_completed_total{ instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]), 0.001), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")) *  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "max by(instance, device) (label_replace(\n  (rate(node_disk_write_time_seconds_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])) /\n    clamp_min(rate(node_disk_writes_completed_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]), 0.001) or\n    (rate(node_disk_read_time_seconds_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval])) /\n      clamp_min(rate(node_disk_reads_completed_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]), 0.001),\n  \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)) * on(instance, device) group_left(ceph_daemon) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"},\n    \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}})",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "connected",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(((irate(node_disk_io_time_ms{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) / 10 ) or  irate(node_disk_io_time_seconds_total{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($ceph_hosts)([\\\\.:].*)?\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  (\n    (rate(node_disk_io_time_ms{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) / 10) or\n    rate(node_disk_io_time_seconds_total{instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"}[$__rate_interval]) * 100\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) * on(instance, device) group_left(ceph_daemon) label_replace(\n  label_replace(ceph_disk_occupation_human{job=~\"$job\", instance=~\"($ceph_hosts)([\\\\\\\\.:].*)?\"},\n  \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}}({{ceph_daemon}})",
          ]
       }
    ],
-   "refresh": "10s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
    "tags": [
+      "ceph-mixin",
       "overview"
    ],
    "templating": {
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "ceph_hosts",
             "options": [ ],
-            "query": "label_values(node_scrape_collector_success, instance) ",
+            "query": "label_values({}, instance)",
             "refresh": 1,
             "regex": "([^.:]*).*",
             "sort": 3,
index 3572d7ad4132a93e754f7a8d5aa2e32c93113cb8..f1cd4c49935b28de7a1c1ec596281c14bc9e80bc 100644 (file)
          "tableColumn": "",
          "targets": [
             {
-               "expr": "count(sum by (hostname) (ceph_osd_metadata))",
+               "expr": "count(sum by (hostname) (ceph_osd_metadata{job=~\"$job\"}))",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "avg(\n  1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )",
+               "expr": "avg(1 - (\n  avg by(instance) (\n    rate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[$__rate_interval]) or\n    rate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[$__rate_interval])\n  )\n))\n",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "avg (((node_memory_MemTotal{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_MemTotal_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"})- (\n  (node_memory_MemFree{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_MemFree_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"})  + \n  (node_memory_Cached{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_Cached_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}) + \n  (node_memory_Buffers{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_Buffers_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}) +\n  (node_memory_Slab{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_Slab_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"})\n  )) /\n (node_memory_MemTotal{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or node_memory_MemTotal_bytes{instance=~\"($osd_hosts|$rgw_hosts|$mon_hosts|$mds_hosts).*\"} ))",
+               "expr": "avg ((\n  (\n    node_memory_MemTotal{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n    node_memory_MemTotal_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}\n  ) - ((\n    node_memory_MemFree{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n    node_memory_MemFree_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}) +\n    (\n      node_memory_Cached{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n      node_memory_Cached_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}\n    ) + (\n      node_memory_Buffers{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n      node_memory_Buffers_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}\n    ) + (\n      node_memory_Slab{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n      node_memory_Slab_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}\n    )\n  )\n) / (\n  node_memory_MemTotal{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"} or\n   node_memory_MemTotal_bytes{instance=~\"($osd_hosts|$rgw_hosts|$mon_hosts|$mds_hosts).*\"}\n))\n",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum ((irate(node_disk_reads_completed{instance=~\"($osd_hosts).*\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($osd_hosts).*\"}[5m]) )  + \n(irate(node_disk_writes_completed{instance=~\"($osd_hosts).*\"}[5m]) or irate(node_disk_writes_completed_total{instance=~\"($osd_hosts).*\"}[5m])))",
+               "expr": "sum ((\n  rate(node_disk_reads_completed{instance=~\"($osd_hosts).*\"}[$__rate_interval]) or\n  rate(node_disk_reads_completed_total{instance=~\"($osd_hosts).*\"}[$__rate_interval])\n) + (\n  rate(node_disk_writes_completed{instance=~\"($osd_hosts).*\"}[$__rate_interval]) or\n  rate(node_disk_writes_completed_total{instance=~\"($osd_hosts).*\"}[$__rate_interval])\n))\n",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "avg (\n  label_replace((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\"\n  ) *\n  on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation_human{instance=~\"($osd_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\")\n)",
+               "expr": "avg (\n  label_replace(\n    (rate(node_disk_io_time_ms[$__rate_interval]) / 10 ) or\n      (rate(node_disk_io_time_seconds_total[$__rate_interval]) * 100),\n    \"instance\", \"$1\", \"instance\", \"([^.:]*).*\"\n  ) * on(instance, device) group_left(ceph_daemon) label_replace(\n    label_replace(\n      ceph_disk_occupation_human{job=~\"$job\", instance=~\"($osd_hosts).*\"},\n      \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n    ), \"instance\", \"$1\", \"instance\", \"([^.:]*).*\"\n  )\n)\n",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum (\n        (\n                irate(node_network_receive_bytes{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[1m]) or\n                irate(node_network_receive_bytes_total{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[1m])\n        ) unless on (device, instance)\n        label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\")\n) +\nsum (\n        (\n                irate(node_network_transmit_bytes{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[1m]) or\n                irate(node_network_transmit_bytes_total{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[1m])\n        ) unless on (device, instance)\n        label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\")\n        )\n",
+               "expr": "sum (\n  (\n    rate(node_network_receive_bytes{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[$__rate_interval]) or\n    rate(node_network_receive_bytes_total{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[$__rate_interval])\n  ) unless on (device, instance)\n  label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\")\n) +\nsum (\n  (\n    rate(node_network_transmit_bytes{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[$__rate_interval]) or\n    rate(node_network_transmit_bytes_total{instance=~\"($osd_hosts|mon_hosts|mds_hosts|rgw_hosts).*\",device!=\"lo\"}[$__rate_interval])\n  ) unless on (device, instance)\n  label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\")\n)\n",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "topk(10,100 * ( 1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )\n)",
+               "expr": "topk(10,\n  100 * (\n    1 - (\n      avg by(instance) (\n        rate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[$__rate_interval]) or\n          rate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[$__rate_interval])\n      )\n    )\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "topk(10, (sum by(instance) (\n(\n        irate(node_network_receive_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[1m]) or\n        irate(node_network_receive_bytes_total{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[1m])\n) +\n(\n        irate(node_network_transmit_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[1m]) or\n        irate(node_network_transmit_bytes_total{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[1m])\n) unless on (device, instance)\n        label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\"))\n))\n",
+               "expr": "topk(10, (sum by(instance) (\n(\n  rate(node_network_receive_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[$__rate_interval]) or\n  rate(node_network_receive_bytes_total{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[$__rate_interval])\n) +\n(\n  rate(node_network_transmit_bytes{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[$__rate_interval]) or\n  rate(node_network_transmit_bytes_total{instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\",device!=\"lo\"}[$__rate_interval])\n) unless on (device, instance)\n  label_replace((bonding_slaves > 0), \"device\", \"$1\", \"master\", \"(.+)\"))\n))\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}}",
          ]
       }
    ],
-   "refresh": "10s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "osd_hosts",
             "options": [ ],
-            "query": "label_values(ceph_disk_occupation, exported_instance)",
+            "query": "label_values(ceph_disk_occupation{job=~\"$job\"}, exported_instance)",
             "refresh": 1,
             "regex": "([^.]*).*",
             "sort": 1,
             "multi": false,
             "name": "mon_hosts",
             "options": [ ],
-            "query": "label_values(ceph_mon_metadata, ceph_daemon)",
+            "query": "label_values(ceph_mon_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "mon.(.*)",
             "sort": 1,
             "multi": false,
             "name": "mds_hosts",
             "options": [ ],
-            "query": "label_values(ceph_mds_inodes, ceph_daemon)",
+            "query": "label_values(ceph_mds_inodes{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "mds.(.*)",
             "sort": 1,
             "multi": false,
             "name": "rgw_hosts",
             "options": [ ],
-            "query": "label_values(ceph_rgw_metadata, ceph_daemon)",
+            "query": "label_values(ceph_rgw_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "rgw.(.*)",
             "sort": 1,
index 3b45dc967a53aa52af4da182447e577e1200aebd..384516fb019561eed73667baa59d85b384694517 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_osd_op_r_latency_sum{ceph_daemon=~\"$osd\"}[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m])",
+               "expr": "rate(ceph_osd_op_r_latency_sum{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval]) /\n  on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "read",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_osd_op_w_latency_sum{ceph_daemon=~\"$osd\"}[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m])",
+               "expr": "rate(ceph_osd_op_w_latency_sum{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval]) /\n  on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "write",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_osd_op_r{ceph_daemon=~\"$osd\"}[1m])",
+               "expr": "rate(ceph_osd_op_r{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Reads",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_osd_op_w{ceph_daemon=~\"$osd\"}[1m])",
+               "expr": "rate(ceph_osd_op_w{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Writes",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_osd_op_r_out_bytes{ceph_daemon=~\"$osd\"}[1m])",
+               "expr": "rate(ceph_osd_op_r_out_bytes{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Read Bytes",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_osd_op_w_in_bytes{ceph_daemon=~\"$osd\"}[1m])",
+               "expr": "rate(ceph_osd_op_w_in_bytes{job=~\"$job\", ceph_daemon=~\"$osd\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Write Bytes",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "(label_replace(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
+               "expr": "(\n  label_replace(\n    rate(node_disk_read_time_seconds_total{}[$__rate_interval]) /\n      rate(node_disk_reads_completed_total{}[$__rate_interval]),\n    \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n  ) and on (instance, device) label_replace(\n    label_replace(\n      ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"},\n      \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n    ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}}/{{device}} Reads",
                "refId": "A"
             },
             {
-               "expr": "(label_replace(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"))",
+               "expr": "(\n  label_replace(\n    rate(node_disk_write_time_seconds_total{}[$__rate_interval]) /\n      rate(node_disk_writes_completed_total{}[$__rate_interval]),\n    \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device)\n    label_replace(\n      label_replace(\n        ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n      ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n    )\n  )\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}}/{{device}} Writes",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(irate(node_disk_writes_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  rate(node_disk_writes_completed_total{}[$__rate_interval]),\n  \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) and on (instance, device) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"},\n    \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}} on {{instance}} Writes",
                "refId": "A"
             },
             {
-               "expr": "label_replace(irate(node_disk_reads_completed_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  rate(node_disk_reads_completed_total{}[$__rate_interval]),\n  \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) and on (instance, device) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"},\n    \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}} on {{instance}} Reads",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(irate(node_disk_read_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  rate(node_disk_read_bytes_total{}[$__rate_interval]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) and on (instance, device) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"},\n    \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}} {{device}} Reads",
                "refId": "A"
             },
             {
-               "expr": "label_replace(irate(node_disk_written_bytes_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  rate(node_disk_written_bytes_total{}[$__rate_interval]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) and on (instance, device) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"},\n    \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{instance}} {{device}} Writes",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(irate(node_disk_io_time_seconds_total[1m]), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\") and on (instance, device) label_replace(label_replace(ceph_disk_occupation_human{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\")",
+               "expr": "label_replace(\n  rate(node_disk_io_time_seconds_total{}[$__rate_interval]),\n  \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n) and on (instance, device) label_replace(\n  label_replace(\n    ceph_disk_occupation_human{job=~\"$job\", ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"\n  ), \"instance\", \"$1\", \"instance\", \"([^:.]*).*\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device}} on {{instance}}",
          ]
       }
    ],
-   "refresh": "",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "osd",
             "options": [ ],
-            "query": "label_values(ceph_osd_metadata,ceph_daemon)",
+            "query": "label_values(ceph_osd_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "(.*)",
             "sort": 1,
index ffcf0601563ee31595226313a5b65471c6522e2a..5ea8955b29740c028a2edf3cea311b287f42e666 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "avg (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)",
+               "expr": "avg (\n  rate(ceph_osd_op_r_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n    on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval]) * 1000\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "AVG read",
                "refId": "A"
             },
             {
-               "expr": "max (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)",
+               "expr": "max(\n  rate(ceph_osd_op_r_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n  on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval]) * 1000\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "MAX read",
                "refId": "B"
             },
             {
-               "expr": "quantile(0.95,\n  (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)\n)",
+               "expr": "quantile(0.95,\n  (\n    rate(ceph_osd_op_r_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n      on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval])\n      * 1000\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "@95%ile",
          ],
          "targets": [
             {
-               "expr": "topk(10,\n  (sort(\n    (irate(ceph_osd_op_r_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_r_latency_count[1m]) * 1000)\n  ))\n)\n\n",
+               "expr": "topk(10,\n  (sort(\n    (\n      rate(ceph_osd_op_r_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n        on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval]) *\n        1000\n    )\n  ))\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "avg (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)",
+               "expr": "avg(\n  rate(ceph_osd_op_w_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n    on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval])\n    * 1000\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "AVG write",
                "refId": "A"
             },
             {
-               "expr": "max (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)",
+               "expr": "max(\n  rate(ceph_osd_op_w_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n    on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval]) *\n    1000\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "MAX write",
                "refId": "B"
             },
             {
-               "expr": "quantile(0.95,\n (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)\n)",
+               "expr": "quantile(0.95, (\n  rate(ceph_osd_op_w_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n    on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval]) *\n    1000\n))\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "@95%ile write",
          ],
          "targets": [
             {
-               "expr": "topk(10,\n  (sort(\n    (irate(ceph_osd_op_w_latency_sum[1m]) / on (ceph_daemon) irate(ceph_osd_op_w_latency_count[1m]) * 1000)\n  ))\n)\n\n",
+               "expr": "topk(10,\n  (sort(\n    (rate(ceph_osd_op_w_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n      on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval]) *\n      1000)\n  ))\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          "pieType": "pie",
          "targets": [
             {
-               "expr": "count by (device_class) (ceph_osd_metadata)",
+               "expr": "count by (device_class) (ceph_osd_metadata{job=~\"$job\"})",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{device_class}}",
          "pieType": "pie",
          "targets": [
             {
-               "expr": "count(ceph_bluefs_wal_total_bytes)",
+               "expr": "count(ceph_bluefs_wal_total_bytes{job=~\"$job\"})",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "bluestore",
                "refId": "A"
             },
             {
-               "expr": "absent(ceph_bluefs_wal_total_bytes)*count(ceph_osd_metadata)",
+               "expr": "absent(ceph_bluefs_wal_total_bytes{job=~\"$job\"}) * count(ceph_osd_metadata{job=~\"$job\"})",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "filestore",
          "pieType": "pie",
          "targets": [
             {
-               "expr": "count(ceph_osd_stat_bytes < 1099511627776)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} < 1099511627776)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<1TB",
                "refId": "A"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 1099511627776 < 2199023255552)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 1099511627776 < 2199023255552)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<2TB",
                "refId": "B"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 2199023255552 < 3298534883328)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 2199023255552 < 3298534883328)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<3TB",
                "refId": "C"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 3298534883328 < 4398046511104)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 3298534883328 < 4398046511104)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<4TB",
                "refId": "D"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 4398046511104 < 6597069766656)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 4398046511104 < 6597069766656)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<6TB",
                "refId": "E"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 6597069766656 < 8796093022208)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 6597069766656 < 8796093022208)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<8TB",
                "refId": "F"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 8796093022208 < 10995116277760)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 8796093022208 < 10995116277760)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<10TB",
                "refId": "G"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 10995116277760 < 13194139533312)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 10995116277760 < 13194139533312)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<12TB",
                "refId": "H"
             },
             {
-               "expr": "count(ceph_osd_stat_bytes >= 13194139533312)",
+               "expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} >= 13194139533312)",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "<12TB+",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "ceph_osd_numpg\n",
+               "expr": "ceph_osd_numpg{job=~\"$job\"}",
                "format": "time_series",
                "instant": true,
                "intervalFactor": 1,
          "colorBackground": false,
          "colorValue": true,
          "colors": [
-            "#d44a3a",
-            "#299c46"
+            "#299c46",
+            "rgba(237, 129, 40, 0.89)",
+            "#d44a3a"
          ],
          "datasource": "$datasource",
          "description": "This gauge panel shows onode Hits ratio to help determine if increasing RAM per OSD could help improve the performance of the cluster",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_bluestore_onode_hits)/(sum(ceph_bluestore_onode_hits) + sum(ceph_bluestore_onode_misses))",
+               "expr": "sum(ceph_bluestore_onode_hits{job=~\"$job\"}) / (\n  sum(ceph_bluestore_onode_hits{job=~\"$job\"}) +\n  sum(ceph_bluestore_onode_misses{job=~\"$job\"})\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "round(sum(irate(ceph_pool_rd[30s])))",
+               "expr": "round(sum(rate(ceph_pool_rd{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Reads",
                "refId": "A"
             },
             {
-               "expr": "round(sum(irate(ceph_pool_wr[30s])))",
+               "expr": "round(sum(rate(ceph_pool_wr{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Writes",
          ]
       }
    ],
-   "refresh": "10s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "refresh": 1,
             "regex": "",
             "type": "datasource"
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
          }
       ]
    },
index 9a8518e151c61f7cebc576153615427131087c7f..dc8b4152a494c5ba140202ca076d24bb488cb547 100644 (file)
          "tableColumn": "",
          "targets": [
             {
-               "expr": "(ceph_pool_stored / (ceph_pool_stored + ceph_pool_max_avail)) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "(ceph_pool_stored{job=~\"$job\"} / (ceph_pool_stored{job=~\"$job\"} + ceph_pool_max_avail{job=~\"$job\"})) *\n  on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "(ceph_pool_max_avail / deriv(ceph_pool_stored[6h])) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"} > 0",
+               "expr": "(ceph_pool_max_avail{job=~\"$job\"} / deriv(ceph_pool_stored{job=~\"$job\"}[6h])) *\n  on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"} > 0\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "deriv(ceph_pool_objects[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "deriv(ceph_pool_objects{job=~\"$job\"}[1m]) *\n  on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Objects per second",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_pool_rd[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "rate(ceph_pool_rd{job=~\"$job\"}[$__rate_interval]) *\n  on(pool_id) group_left(instance,name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "reads",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_pool_wr[1m]) * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "rate(ceph_pool_wr{job=~\"$job\"}[$__rate_interval]) *\n  on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "writes",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_pool_rd_bytes[1m]) + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "rate(ceph_pool_rd_bytes{job=~\"$job\"}[$__rate_interval]) +\n  on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "reads",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_pool_wr_bytes[1m]) + on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "rate(ceph_pool_wr_bytes{job=~\"$job\"}[$__rate_interval]) +\n  on(pool_id) group_left(instance,name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "writes",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "ceph_pool_objects * on(pool_id) group_left(instance,name) ceph_pool_metadata{name=~\"$pool_name\"}",
+               "expr": "ceph_pool_objects{job=~\"$job\"} *\n  on(pool_id) group_left(instance,name) ceph_pool_metadata{job=~\"$job\", name=~\"$pool_name\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Number of Objects",
          ]
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 22,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "current": {
-               "text": "Prometheus admin.virt1.home.fajerski.name:9090",
-               "value": "Prometheus admin.virt1.home.fajerski.name:9090"
+               "text": "default",
+               "value": "default"
             },
             "hide": 0,
             "label": "Data Source",
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "pool_name",
             "options": [ ],
-            "query": "label_values(ceph_pool_metadata,name)",
+            "query": "label_values(ceph_pool_metadata{job=~\"$job\"}, name)",
             "refresh": 1,
             "regex": "",
             "sort": 1,
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 5767d40eb1a1edc142bbcf1397fd35922cbc2541..7f042aa5b0d8c422cebfe57ad0d88d0e99bfba2a 100644 (file)
@@ -85,7 +85,7 @@
          "tableColumn": "",
          "targets": [
             {
-               "expr": "count(ceph_pool_metadata)",
+               "expr": "count(ceph_pool_metadata{job=~\"$job\"})",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "count(ceph_pool_metadata{compression_mode!=\"none\"})",
+               "expr": "count(ceph_pool_metadata{job=~\"$job\", compression_mode!=\"none\"})",
                "format": "",
                "intervalFactor": 1,
                "legendFormat": "",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_osd_stat_bytes)",
+               "expr": "sum(ceph_osd_stat_bytes{job=~\"$job\"})",
                "format": "",
                "intervalFactor": 1,
                "legendFormat": "",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_pool_bytes_used)",
+               "expr": "sum(ceph_pool_bytes_used{job=~\"$job\"})",
                "format": "",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_pool_stored)",
+               "expr": "sum(ceph_pool_stored{job=~\"$job\"})",
                "format": "",
                "instant": true,
                "intervalFactor": 1,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_pool_compress_under_bytes - ceph_pool_compress_bytes_used)",
+               "expr": "sum(\n  ceph_pool_compress_under_bytes{job=~\"$job\"} -\n    ceph_pool_compress_bytes_used{job=~\"$job\"}\n)\n",
                "format": "",
                "intervalFactor": 1,
                "legendFormat": "",
             "#d44a3a"
          ],
          "datasource": "$datasource",
-         "description": "Indicates how suitable the data is within the pools that are/have been enabled for compression - averaged across all pools holding compressed data\n",
+         "description": "Indicates how suitable the data is within the pools that are/have been enabled for compression - averaged across all pools holding compressed data",
          "format": "percent",
          "gauge": {
             "maxValue": 100,
          "tableColumn": "",
          "targets": [
             {
-               "expr": "(sum(ceph_pool_compress_under_bytes > 0) / sum(ceph_pool_stored_raw and ceph_pool_compress_under_bytes > 0)) * 100",
+               "expr": "(\n  sum(ceph_pool_compress_under_bytes{job=~\"$job\"} > 0) /\n    sum(ceph_pool_stored_raw{job=~\"$job\"} and ceph_pool_compress_under_bytes{job=~\"$job\"} > 0)\n) * 100\n",
                "format": "table",
                "intervalFactor": 1,
                "legendFormat": "",
          "tableColumn": "",
          "targets": [
             {
-               "expr": "sum(ceph_pool_compress_under_bytes > 0) / sum(ceph_pool_compress_bytes_used > 0)",
+               "expr": "sum(\n  ceph_pool_compress_under_bytes{job=~\"$job\"} > 0)\n    / sum(ceph_pool_compress_bytes_used{job=~\"$job\"} > 0\n)\n",
                "format": "",
                "intervalFactor": 1,
                "legendFormat": "",
          ],
          "targets": [
             {
-               "expr": "(ceph_pool_compress_under_bytes / ceph_pool_compress_bytes_used > 0) and on(pool_id) (((ceph_pool_compress_under_bytes > 0) / ceph_pool_stored_raw) * 100 > 0.5)",
+               "expr": "(\n  ceph_pool_compress_under_bytes{job=~\"$job\"} /\n    ceph_pool_compress_bytes_used{job=~\"$job\"} > 0\n) and on(pool_id) (\n  (\n    (ceph_pool_compress_under_bytes{job=~\"$job\"} > 0) /\n      ceph_pool_stored_raw{job=~\"$job\"}\n  ) * 100 > 0.5\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "A"
             },
             {
-               "expr": "ceph_pool_max_avail * on(pool_id) group_left(name) ceph_pool_metadata",
+               "expr": "ceph_pool_max_avail{job=~\"$job\"} *\n  on(pool_id) group_left(name) ceph_pool_metadata{job=~\"$job\"}\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "B"
             },
             {
-               "expr": "((ceph_pool_compress_under_bytes > 0) / ceph_pool_stored_raw) * 100",
+               "expr": "(\n  (ceph_pool_compress_under_bytes{job=~\"$job\"} > 0) /\n    ceph_pool_stored_raw{job=~\"$job\"}\n) * 100\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "C"
             },
             {
-               "expr": "(ceph_pool_percent_used * on(pool_id) group_left(name) ceph_pool_metadata)",
+               "expr": "ceph_pool_percent_used{job=~\"$job\"} *\n  on(pool_id) group_left(name) ceph_pool_metadata{job=~\"$job\"}\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "D"
             },
             {
-               "expr": "(ceph_pool_compress_under_bytes - ceph_pool_compress_bytes_used > 0)",
+               "expr": "ceph_pool_compress_under_bytes{job=~\"$job\"} -\n  ceph_pool_compress_bytes_used{job=~\"$job\"} > 0\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "E"
             },
             {
-               "expr": "delta(ceph_pool_stored[5d])",
+               "expr": "delta(ceph_pool_stored{job=~\"$job\"}[5d])",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "F"
             },
             {
-               "expr": "rate(ceph_pool_rd[30s]) + rate(ceph_pool_wr[30s])",
+               "expr": "rate(ceph_pool_rd{job=~\"$job\"}[$__rate_interval])\n  + rate(ceph_pool_wr{job=~\"$job\"}[$__rate_interval])\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "G"
             },
             {
-               "expr": "rate(ceph_pool_rd_bytes[30s]) + rate(ceph_pool_wr_bytes[30s])",
+               "expr": "rate(ceph_pool_rd_bytes{job=~\"$job\"}[$__rate_interval]) +\n  rate(ceph_pool_wr_bytes{job=~\"$job\"}[$__rate_interval])\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "H"
             },
             {
-               "expr": "ceph_pool_metadata",
+               "expr": "ceph_pool_metadata{job=~\"$job\"}",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "I"
             },
             {
-               "expr": "ceph_pool_stored * on(pool_id) group_left ceph_pool_metadata",
+               "expr": "ceph_pool_stored{job=~\"$job\"} * on(pool_id) group_left ceph_pool_metadata{job=~\"$job\"}",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
                "refId": "J"
             },
             {
-               "expr": "ceph_pool_metadata{compression_mode!=\"none\"}",
+               "expr": "ceph_pool_metadata{job=~\"$job\", compression_mode!=\"none\"}",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "topk($topk,round((rate(ceph_pool_rd[30s]) + rate(ceph_pool_wr[30s])),1) * on(pool_id) group_left(instance,name) ceph_pool_metadata) ",
+               "expr": "topk($topk,\n  round(\n    (\n      rate(ceph_pool_rd{job=~\"$job\"}[$__rate_interval]) +\n        rate(ceph_pool_wr{job=~\"$job\"}[$__rate_interval])\n    ), 1\n  ) * on(pool_id) group_left(instance,name) ceph_pool_metadata{job=~\"$job\"})\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{name}} ",
                "refId": "A"
             },
             {
-               "expr": "topk($topk,rate(ceph_pool_wr[30s]) + on(pool_id) group_left(instance,name) ceph_pool_metadata) ",
+               "expr": "topk($topk,\n  rate(ceph_pool_wr{job=~\"$job\"}[$__rate_interval]) +\n    on(pool_id) group_left(instance,name) ceph_pool_metadata{job=~\"$job\"}\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{name}} - write",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "topk($topk,(rate(ceph_pool_rd_bytes[30s]) + rate(ceph_pool_wr_bytes[30s])) * on(pool_id) group_left(instance,name) ceph_pool_metadata)",
+               "expr": "topk($topk,\n  (\n    rate(ceph_pool_rd_bytes{job=~\"$job\"}[$__rate_interval]) +\n      rate(ceph_pool_wr_bytes{job=~\"$job\"}[$__rate_interval])\n  ) * on(pool_id) group_left(instance, name) ceph_pool_metadata{job=~\"$job\"}\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{name}}",
          "lines": true,
          "linewidth": 1,
          "links": [ ],
-         "nullPointMode": "null as zero",
+         "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "ceph_pool_bytes_used * on(pool_id) group_right ceph_pool_metadata",
+               "expr": "ceph_pool_bytes_used{job=~\"$job\"} * on(pool_id) group_right ceph_pool_metadata{job=~\"$job\"}",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{name}}",
          ]
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 22,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
             "current": {
-               "text": "Dashboard1",
-               "value": "Dashboard1"
+               "text": "default",
+               "value": "default"
             },
             "hide": 0,
             "label": "Data Source",
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": {
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 4d68906f2ba07b75ad2299fad3a4b2854e88db9f..a0f8f3537c4819ae26e8a3ff2a424c962a830d33 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (instance_id) (rate(ceph_rgw_get_initial_lat_sum[30s]) / rate(ceph_rgw_get_initial_lat_count[30s])) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "sum by (instance_id) (\n  rate(ceph_rgw_get_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n    rate(ceph_rgw_get_initial_lat_count{job=~\"$job\"}[$__rate_interval])\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GET {{ceph_daemon}}",
                "refId": "A"
             },
             {
-               "expr": "sum by (instance_id) (rate(ceph_rgw_put_initial_lat_sum[30s]) / rate(ceph_rgw_put_initial_lat_count[30s])) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "sum by (instance_id) (\n  rate(ceph_rgw_put_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n    rate(ceph_rgw_put_initial_lat_count{job=~\"$job\"}[$__rate_interval])\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUT {{ceph_daemon}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "rate(ceph_rgw_get_b[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_get_b{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GETs {{ceph_daemon}}",
                "refId": "A"
             },
             {
-               "expr": "rate(ceph_rgw_put_b[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_put_b{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon)\n  ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUTs {{ceph_daemon}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "rate(ceph_rgw_failed_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_failed_req{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\",ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Requests Failed {{ceph_daemon}}",
                "refId": "A"
             },
             {
-               "expr": "rate(ceph_rgw_get[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_get{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GETs {{ceph_daemon}}",
                "refId": "B"
             },
             {
-               "expr": "rate(ceph_rgw_put[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_put{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUTs {{ceph_daemon}}",
                "refId": "C"
             },
             {
-               "expr": "(\n    rate(ceph_rgw_req[30s]) -\n    (rate(ceph_rgw_get[30s]) + rate(ceph_rgw_put[30s]))\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "(\n  rate(ceph_rgw_req{job=~\"$job\"}[$__rate_interval]) -\n    (\n      rate(ceph_rgw_get{job=~\"$job\"}[$__rate_interval]) +\n        rate(ceph_rgw_put{job=~\"$job\"}[$__rate_interval])\n    )\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Other {{ceph_daemon}}",
          "pieType": "pie",
          "targets": [
             {
-               "expr": "rate(ceph_rgw_failed_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_failed_req{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Failures {{ceph_daemon}}",
                "refId": "A"
             },
             {
-               "expr": "rate(ceph_rgw_get[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_get{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GETs {{ceph_daemon}}",
                "refId": "B"
             },
             {
-               "expr": "rate(ceph_rgw_put[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "rate(ceph_rgw_put{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUTs {{ceph_daemon}}",
                "refId": "C"
             },
             {
-               "expr": "(\n    rate(ceph_rgw_req[30s]) -\n    (rate(ceph_rgw_get[30s]) + rate(ceph_rgw_put[30s]))\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{ceph_daemon=~\"$rgw_servers\"}",
+               "expr": "(\n  rate(ceph_rgw_req{job=~\"$job\"}[$__rate_interval]) -\n    (\n      rate(ceph_rgw_get{job=~\"$job\"}[$__rate_interval]) +\n        rate(ceph_rgw_put{job=~\"$job\"}[$__rate_interval])\n    )\n) * on (instance_id) group_left (ceph_daemon)\n  ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Other (DELETE,LIST) {{ceph_daemon}}",
          "valueName": "current"
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
    "tags": [
+      "ceph-mixin",
       "overview"
    ],
    "templating": {
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "rgw_servers",
             "options": [ ],
-            "query": "label_values(ceph_rgw_metadata, ceph_daemon)",
+            "query": "label_values(ceph_rgw_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
             "regex": "",
             "sort": 1,
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 7f9375290fc0c976f5db865201ca942a14a2829b..4332aac5ee502942652c645f945f999be5713039 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "rate(ceph_rgw_get_initial_lat_sum[30s]) / rate(ceph_rgw_get_initial_lat_count[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata",
+               "expr": "rate(ceph_rgw_get_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n  rate(ceph_rgw_get_initial_lat_count{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GET AVG",
                "refId": "A"
             },
             {
-               "expr": "rate(ceph_rgw_put_initial_lat_sum[30s]) / rate(ceph_rgw_put_initial_lat_count[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata",
+               "expr": "rate(ceph_rgw_put_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n  rate(ceph_rgw_put_initial_lat_count{job=~\"$job\"}[$__rate_interval]) *\n  on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"}\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUT AVG",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (rgw_host) (label_replace(rate(ceph_rgw_req[30s]) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata, \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"))",
+               "expr": "sum by (rgw_host) (\n  label_replace(\n    rate(ceph_rgw_req{job=~\"$job\"}[$__rate_interval]) *\n      on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"},\n    \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"\n  )\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{rgw_host}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(\n    rate(ceph_rgw_get_initial_lat_sum[30s]) /\n    rate(ceph_rgw_get_initial_lat_count[30s]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata,\n\"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\")",
+               "expr": "label_replace(\n  rate(ceph_rgw_get_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n    rate(ceph_rgw_get_initial_lat_count{job=~\"$job\"}[$__rate_interval]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"},\n  \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{rgw_host}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(rate(ceph_rgw_get_b[30s]))",
+               "expr": "sum(rate(ceph_rgw_get_b{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "GETs",
                "refId": "A"
             },
             {
-               "expr": "sum(rate(ceph_rgw_put_b[30s]))",
+               "expr": "sum(rate(ceph_rgw_put_b{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "PUTs",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(sum by (instance_id) (\n    rate(ceph_rgw_get_b[30s]) + \n    rate(ceph_rgw_put_b[30s])\n) * on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata, \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\")",
+               "expr": "label_replace(sum by (instance_id) (\n  rate(ceph_rgw_get_b{job=~\"$job\"}[$__rate_interval]) +\n    rate(ceph_rgw_put_b{job=~\"$job\"}[$__rate_interval])) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"},\n  \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{rgw_host}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "label_replace(\n    rate(ceph_rgw_put_initial_lat_sum[30s]) /\n    rate(ceph_rgw_put_initial_lat_count[30s]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata,\n\"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\")",
+               "expr": "label_replace(\n  rate(ceph_rgw_put_initial_lat_sum{job=~\"$job\"}[$__rate_interval]) /\n    rate(ceph_rgw_put_initial_lat_count{job=~\"$job\"}[$__rate_interval]) *\n    on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\"},\n  \"rgw_host\", \"$1\", \"ceph_daemon\", \"rgw.(.*)\"\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{rgw_host}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(irate(haproxy_frontend_http_responses_total{code=~\"$code\",instance=~\"$ingress_service\",proxy=~\"frontend\"}[5m])) by (code)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_http_responses_total{code=~\"$code\", job=~\"$job_haproxy\", instance=~\"$ingress_service\", proxy=~\"frontend\"}[$__rate_interval]\n  )\n) by (code)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Frontend {{ code }}",
                "refId": "A"
             },
             {
-               "expr": "sum(irate(haproxy_backend_http_responses_total{code=~\"$code\",instance=~\"$ingress_service\",proxy=~\"backend\"}[5m])) by (code)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_http_responses_total{code=~\"$code\", job=~\"$job_haproxy\", instance=~\"$ingress_service\", proxy=~\"backend\"}[$__rate_interval]\n  )\n) by (code)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Backend {{ code }}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(irate(haproxy_frontend_http_requests_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_http_requests_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Requests",
                "refId": "A"
             },
             {
-               "expr": "sum(irate(haproxy_backend_response_errors_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_response_errors_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "Response errors",
                "refId": "B"
             },
             {
-               "expr": "sum(irate(haproxy_frontend_request_errors_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_request_errors_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Requests errors",
                "refId": "C"
             },
             {
-               "expr": "sum(irate(haproxy_backend_redispatch_warnings_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_redispatch_warnings_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "Backend redispatch",
                "refId": "D"
             },
             {
-               "expr": "sum(irate(haproxy_backend_retry_warnings_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_retry_warnings_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "Backend retry",
                "refId": "E"
             },
             {
-               "expr": "sum(irate(haproxy_frontend_requests_denied_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_requests_denied_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "Request denied",
                "refId": "F"
             },
             {
-               "expr": "sum(haproxy_backend_current_queue{proxy=~\"backend\",instance=~\"$ingress_service\"}) by (instance)",
+               "expr": "sum(\n  haproxy_backend_current_queue{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "Backend Queued",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(irate(haproxy_frontend_connections_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_connections_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Front",
                "refId": "A"
             },
             {
-               "expr": "sum(irate(haproxy_backend_connection_attempts_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_connection_attempts_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Back",
                "refId": "B"
             },
             {
-               "expr": "sum(irate(haproxy_backend_connection_errors_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_connection_errors_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  )\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Back errors",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum(irate(haproxy_frontend_bytes_in_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])*8) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_bytes_in_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  ) * 8\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "IN Front",
                "refId": "A"
             },
             {
-               "expr": "sum(irate(haproxy_frontend_bytes_out_total{proxy=~\"frontend\",instance=~\"$ingress_service\"}[5m])*8) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_frontend_bytes_out_total{proxy=~\"frontend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  ) * 8\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "OUT Front",
                "refId": "B"
             },
             {
-               "expr": "sum(irate(haproxy_backend_bytes_in_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])*8) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_bytes_in_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  ) * 8\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "IN Back",
                "refId": "C"
             },
             {
-               "expr": "sum(irate(haproxy_backend_bytes_out_total{proxy=~\"backend\",instance=~\"$ingress_service\"}[5m])*8) by (instance)",
+               "expr": "sum(\n  rate(\n    haproxy_backend_bytes_out_total{proxy=~\"backend\", job=~\"$job_haproxy\", instance=~\"$ingress_service\"}[$__rate_interval]\n  ) * 8\n) by (instance)\n",
                "format": "time_series",
                "intervalFactor": 2,
                "legendFormat": "OUT Back",
          ]
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
    "tags": [
+      "ceph-mixin",
       "overview"
    ],
    "templating": {
       "list": [
+         {
+            "current": {
+               "text": "default",
+               "value": "default"
+            },
+            "hide": 0,
+            "label": "Data Source",
+            "name": "datasource",
+            "options": [ ],
+            "query": "prometheus",
+            "refresh": 1,
+            "regex": "",
+            "type": "datasource"
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
             "multi": false,
             "name": "rgw_servers",
             "options": [ ],
-            "query": "label_values(ceph_rgw_metadata, ceph_daemon)",
+            "query": "label_values(ceph_rgw_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
-            "regex": "",
+            "regex": "RGW Server",
             "sort": 1,
             "tagValuesQuery": "",
             "tags": [ ],
             "multi": false,
             "name": "code",
             "options": [ ],
-            "query": "label_values(haproxy_server_http_responses_total{instance=~\"$ingress_service\"}, code)",
+            "query": "label_values(haproxy_server_http_responses_total{job=~\"$job_haproxy\", instance=~\"$ingress_service\"}, code)",
             "refresh": 1,
             "regex": "",
             "sort": 1,
             "useTags": false
          },
          {
-            "allValue": null,
+            "allValue": ".+",
             "current": { },
             "datasource": "$datasource",
             "hide": 0,
             "includeAll": true,
-            "label": "Ingress Service",
-            "multi": false,
-            "name": "ingress_service",
+            "label": "job haproxy",
+            "multi": true,
+            "name": "job_haproxy",
             "options": [ ],
-            "query": "label_values(haproxy_server_status, instance)",
+            "query": "label_values(haproxy_server_status, job)",
             "refresh": 1,
-            "regex": "",
+            "regex": "(.*)",
             "sort": 1,
             "tagValuesQuery": "",
             "tags": [ ],
             "useTags": false
          },
          {
-            "current": {
-               "text": "default",
-               "value": "default"
-            },
+            "allValue": null,
+            "current": { },
+            "datasource": "$datasource",
             "hide": 0,
-            "label": "Data Source",
-            "name": "datasource",
+            "includeAll": true,
+            "label": "Ingress Service",
+            "multi": false,
+            "name": "ingress_service",
             "options": [ ],
-            "query": "prometheus",
+            "query": "label_values(haproxy_server_status{job=~\"$job_haproxy\"}, instance)",
             "refresh": 1,
             "regex": "",
-            "type": "datasource"
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
          }
       ]
    },
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 232242acc58600fc1ea06a31e60134609c2dcb61..e0c3037d50a31c6f1e4c6aa312e6f10e64aab501 100644 (file)
@@ -80,7 +80,7 @@
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_bytes_sum[30s]))",
+               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_bytes_sum{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{source_zone}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_bytes_count[30s]))",
+               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_bytes_count{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{source_zone}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_poll_latency_sum[30s]))",
+               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_poll_latency_sum{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{source_zone}}",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_errors[30s]))",
+               "expr": "sum by (source_zone) (rate(ceph_data_sync_from_zone_fetch_errors{job=~\"$job\"}[$__rate_interval]))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{source_zone}}",
          ]
       }
    ],
-   "refresh": "15s",
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
    "tags": [
+      "ceph-mixin",
       "overview"
    ],
    "templating": {
       "list": [
          {
-            "allValue": null,
+            "current": {
+               "text": "default",
+               "value": "default"
+            },
+            "hide": 0,
+            "label": "Data Source",
+            "name": "datasource",
+            "options": [ ],
+            "query": "prometheus",
+            "refresh": 1,
+            "regex": "",
+            "type": "datasource"
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
             "current": { },
             "datasource": "$datasource",
             "hide": 0,
             "includeAll": true,
-            "label": "",
-            "multi": false,
-            "name": "rgw_servers",
+            "label": "job",
+            "multi": true,
+            "name": "job",
             "options": [ ],
-            "query": "prometehus",
+            "query": "label_values(ceph_osd_metadata{}, job)",
             "refresh": 1,
-            "regex": "",
+            "regex": "(.*)",
             "sort": 1,
             "tagValuesQuery": "",
             "tags": [ ],
             "useTags": false
          },
          {
-            "current": {
-               "text": "default",
-               "value": "default"
-            },
+            "allValue": null,
+            "current": { },
+            "datasource": "$datasource",
             "hide": 0,
-            "label": "Data Source",
-            "name": "datasource",
+            "includeAll": true,
+            "label": "",
+            "multi": false,
+            "name": "rgw_servers",
             "options": [ ],
-            "query": "prometheus",
+            "query": "label_values(ceph_rgw_metadata{job=~\"$job\"}, ceph_daemon)",
             "refresh": 1,
-            "regex": "",
-            "type": "datasource"
+            "regex": "RGW Server",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
          }
       ]
    },
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
index 7a9e1b56b8fc9603364c0a11e9c067e82d439e83..f64de312af52872229ac49cde74fee84a0737a84 100644 (file)
@@ -42,7 +42,7 @@
          "bars": false,
          "dashLength": 10,
          "dashes": false,
-         "datasource": "$Datasource",
+         "datasource": "$datasource",
          "description": "",
          "fill": 1,
          "fillGradient": 0,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_rbd_write_ops{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_write_ops{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Write",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_rbd_read_ops{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_read_ops{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Read",
          "bars": false,
          "dashLength": 10,
          "dashes": false,
-         "datasource": "$Datasource",
+         "datasource": "$datasource",
          "description": "",
          "fill": 1,
          "fillGradient": 0,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_rbd_write_bytes{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_write_bytes{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Write",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_rbd_read_bytes{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_read_bytes{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Read",
          "bars": false,
          "dashLength": 10,
          "dashes": false,
-         "datasource": "$Datasource",
+         "datasource": "$datasource",
          "description": "",
          "fill": 1,
          "fillGradient": 0,
          "steppedLine": false,
          "targets": [
             {
-               "expr": "irate(ceph_rbd_write_latency_sum{pool=\"$Pool\", image=\"$Image\"}[30s]) / irate(ceph_rbd_write_latency_count{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_write_latency_sum{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval]) /\n  rate(ceph_rbd_write_latency_count{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Write",
                "refId": "A"
             },
             {
-               "expr": "irate(ceph_rbd_read_latency_sum{pool=\"$Pool\", image=\"$Image\"}[30s]) / irate(ceph_rbd_read_latency_count{pool=\"$Pool\", image=\"$Image\"}[30s])",
+               "expr": "rate(ceph_rbd_read_latency_sum{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval]) /\n  rate(ceph_rbd_read_latency_count{job=~\"$job\", pool=\"$pool\", image=\"$image\"}[$__rate_interval])\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "{{pool}} Read",
          ]
       }
    ],
-   "refresh": false,
+   "refresh": "30s",
    "rows": [ ],
    "schemaVersion": 16,
    "style": "dark",
-   "tags": [ ],
+   "tags": [
+      "ceph-mixin"
+   ],
    "templating": {
       "list": [
          {
                "value": "default"
             },
             "hide": 0,
-            "label": null,
-            "name": "Datasource",
+            "label": "Data Source",
+            "name": "datasource",
             "options": [ ],
             "query": "prometheus",
             "refresh": 1,
             "regex": "",
             "type": "datasource"
          },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
          {
             "allValue": null,
             "current": { },
-            "datasource": "$Datasource",
+            "datasource": "$datasource",
             "hide": 0,
             "includeAll": false,
             "label": "",
             "multi": false,
-            "name": "Pool",
+            "name": "pool",
             "options": [ ],
             "query": "label_values(pool)",
             "refresh": 1,
          {
             "allValue": null,
             "current": { },
-            "datasource": "$Datasource",
+            "datasource": "$datasource",
             "hide": 0,
             "includeAll": false,
             "label": "",
             "multi": false,
-            "name": "Image",
+            "name": "image",
             "options": [ ],
             "query": "label_values(image)",
             "refresh": 1,
index 29b82afa523b0efcbe232258f852a3c551d9b646..e017280e02bfa998e37cf64e8b8f29a9e600c4ad 100644 (file)
          "steppedLine": false,
          "targets": [
             {
-               "expr": "round(sum(irate(ceph_rbd_write_ops[30s])))",
+               "expr": "round(sum(rate(ceph_rbd_write_ops{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Writes",
                "refId": "A"
             },
             {
-               "expr": "round(sum(irate(ceph_rbd_read_ops[30s])))",
+               "expr": "round(sum(rate(ceph_rbd_read_ops{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Reads",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "round(sum(irate(ceph_rbd_write_bytes[30s])))",
+               "expr": "round(sum(rate(ceph_rbd_write_bytes{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Write",
                "refId": "A"
             },
             {
-               "expr": "round(sum(irate(ceph_rbd_read_bytes[30s])))",
+               "expr": "round(sum(rate(ceph_rbd_read_bytes{job=~\"$job\"}[$__rate_interval])))",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Read",
          "steppedLine": false,
          "targets": [
             {
-               "expr": "round(sum(irate(ceph_rbd_write_latency_sum[30s])) / sum(irate(ceph_rbd_write_latency_count[30s])))",
+               "expr": "round(\n  sum(rate(ceph_rbd_write_latency_sum{job=~\"$job\"}[$__rate_interval])) /\n    sum(rate(ceph_rbd_write_latency_count{job=~\"$job\"}[$__rate_interval]))\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Write",
                "refId": "A"
             },
             {
-               "expr": "round(sum(irate(ceph_rbd_read_latency_sum[30s])) / sum(irate(ceph_rbd_read_latency_count[30s])))",
+               "expr": "round(\n  sum(rate(ceph_rbd_read_latency_sum{job=~\"$job\"}[$__rate_interval])) /\n    sum(rate(ceph_rbd_read_latency_count{job=~\"$job\"}[$__rate_interval]))\n)\n",
                "format": "time_series",
                "intervalFactor": 1,
                "legendFormat": "Read",
          ],
          "targets": [
             {
-               "expr": "topk(10, (sort((irate(ceph_rbd_write_ops[30s]) + on (image, pool, namespace) irate(ceph_rbd_read_ops[30s])))))",
+               "expr": "topk(10,\n  (\n    sort((\n      rate(ceph_rbd_write_ops{job=~\"$job\"}[$__rate_interval]) +\n        on (image, pool, namespace) rate(ceph_rbd_read_ops{job=~\"$job\"}[$__rate_interval])\n    ))\n  )\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          ],
          "targets": [
             {
-               "expr": "topk(10, sort(sum(irate(ceph_rbd_read_bytes[30s]) + irate(ceph_rbd_write_bytes[30s])) by (pool, image, namespace)))",
+               "expr": "topk(10,\n  sort(\n    sum(\n      rate(ceph_rbd_read_bytes{job=~\"$job\"}[$__rate_interval]) +\n        rate(ceph_rbd_write_bytes{job=~\"$job\"}[$__rate_interval])\n    ) by (pool, image, namespace)\n  )\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
          ],
          "targets": [
             {
-               "expr": "topk(10,\n  sum(\n    irate(ceph_rbd_write_latency_sum[30s]) / clamp_min(irate(ceph_rbd_write_latency_count[30s]), 1) +\n    irate(ceph_rbd_read_latency_sum[30s]) / clamp_min(irate(ceph_rbd_read_latency_count[30s]), 1)\n  ) by (pool, image, namespace)\n)",
+               "expr": "topk(10,\n  sum(\n    rate(ceph_rbd_write_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n      clamp_min(rate(ceph_rbd_write_latency_count{job=~\"$job\"}[$__rate_interval]), 1) +\n      rate(ceph_rbd_read_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n      clamp_min(rate(ceph_rbd_read_latency_count{job=~\"$job\"}[$__rate_interval]), 1)\n  ) by (pool, image, namespace)\n)\n",
                "format": "table",
                "instant": true,
                "intervalFactor": 1,
    "schemaVersion": 16,
    "style": "dark",
    "tags": [
+      "ceph-mixin",
       "overview"
    ],
    "templating": {
             "refresh": 1,
             "regex": "",
             "type": "datasource"
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 2,
+            "includeAll": true,
+            "label": "cluster",
+            "multi": true,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": ".+",
+            "current": { },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "job",
+            "multi": true,
+            "name": "job",
+            "options": [ ],
+            "query": "label_values(ceph_osd_metadata{}, job)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
          }
       ]
    },
       "refresh_intervals": [
          "5s",
          "10s",
-         "15s",
          "30s",
          "1m",
          "5m",
diff --git a/ceph/monitoring/ceph-mixin/jsonnet-build.sh b/ceph/monitoring/ceph-mixin/jsonnet-build.sh
deleted file mode 100755 (executable)
index 8e229f9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh -ex
-
-JSONNET_VERSION="v0.18.0"
-OUTPUT_DIR=${1:-$(pwd)}
-
-git clone -b ${JSONNET_VERSION} --depth 1 https://github.com/google/go-jsonnet.git
-cd go-jsonnet
-go build ./cmd/jsonnet
-go build ./cmd/jsonnetfmt
-mv jsonnet jsonnetfmt ${OUTPUT_DIR}
index c89b2a916a8915df905b00703543c0edd7cb8b10..3c983a300195b4ed93d21597cc9d52e27d66d6c4 100644 (file)
@@ -1,3 +1,3 @@
 (import 'config.libsonnet') +
-(import 'dashboards/dashboards.libsonnet') +
+(import 'dashboards.libsonnet') +
 (import 'alerts.libsonnet')
diff --git a/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet b/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet
new file mode 100644 (file)
index 0000000..bed89a8
--- /dev/null
@@ -0,0 +1,718 @@
+{
+  _config:: error 'must provide _config',
+
+  MultiClusterQuery()::
+    if $._config.showMultiCluster
+    then 'cluster,'
+    else '',
+
+  MultiClusterSummary()::
+    if $._config.showMultiCluster
+    then ' on cluster {{ $labels.cluster }}'
+    else '',
+
+  groups+: [
+    {
+      name: 'cluster health',
+      rules: [
+        {
+          alert: 'CephHealthError',
+          'for': '5m',
+          expr: 'ceph_health_status == 2',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.2.1' },
+          annotations: {
+            summary: 'Ceph is in the ERROR state%(cluster)s' % $.MultiClusterSummary(),
+            description: "The cluster state has been HEALTH_ERROR for more than 5 minutes%(cluster)s. Please check 'ceph health detail' for more information." % $.MultiClusterSummary(),
+          },
+        },
+        {
+          alert: 'CephHealthWarning',
+          'for': '15m',
+          expr: 'ceph_health_status == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'Ceph is in the WARNING state%(cluster)s' % $.MultiClusterSummary(),
+            description: "The cluster state has been HEALTH_WARN for more than 15 minutes%(cluster)s. Please check 'ceph health detail' for more information." % $.MultiClusterSummary(),
+          },
+        },
+      ],
+    },
+    {
+      name: 'mon',
+      rules: [
+        {
+          alert: 'CephMonDownQuorumAtRisk',
+          'for': '30s',
+          expr: |||
+            (
+              (ceph_health_detail{name="MON_DOWN"} == 1) * on() (
+                count(ceph_mon_quorum_status == 1) == bool (floor(count(ceph_mon_metadata) / 2) + 1)
+              )
+            ) == 1
+          |||,
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.3.1' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down',
+            summary: 'Monitor quorum is at risk%(cluster)s' % $.MultiClusterSummary(),
+            description: '{{ $min := query "floor(count(ceph_mon_metadata) / 2) + 1" | first | value }}Quorum requires a majority of monitors (x {{ $min }}) to be active. Without quorum the cluster will become inoperable, affecting all services and connected clients. The following monitors are down: {{- range query "(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)" }} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}',
+          },
+        },
+        {
+          alert: 'CephMonDown',
+          'for': '30s',
+          expr: |||
+            count(ceph_mon_quorum_status == 0) <= (count(ceph_mon_metadata) - floor(count(ceph_mon_metadata) / 2) + 1)
+          |||,
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down',
+            summary: 'One or more monitors down%(cluster)s' % $.MultiClusterSummary(),
+            description: |||
+              {{ $down := query "count(ceph_mon_quorum_status == 0)" | first | value }}{{ $s := "" }}{{ if gt $down 1.0 }}{{ $s = "s" }}{{ end }}You have {{ $down }} monitor{{ $s }} down. Quorum is still intact, but the loss of an additional monitor will make your cluster inoperable.  The following monitors are down: {{- range query "(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)" }}   - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}
+            |||,
+          },
+        },
+        {
+          alert: 'CephMonDiskspaceCritical',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MON_DISK_CRIT"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.3.2' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-crit',
+            summary: 'Filesystem space on at least one monitor is critically low%(cluster)s' % $.MultiClusterSummary(),
+            description: "The free space available to a monitor's store is critically low. You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*. Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; {{- range query \"ceph_mon_metadata\"}} - {{ .Labels.hostname }} {{- end }}",
+          },
+        },
+        {
+          alert: 'CephMonDiskspaceLow',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="MON_DISK_LOW"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-low',
+            summary: 'Drive space on at least one monitor is approaching full%(cluster)s' % $.MultiClusterSummary(),
+            description: "The space available to a monitor's store is approaching full (>70% is the default). You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*.  Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; {{- range query \"ceph_mon_metadata\"}} - {{ .Labels.hostname }} {{- end }}",
+          },
+        },
+        {
+          alert: 'CephMonClockSkew',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MON_CLOCK_SKEW"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-clock-skew',
+            summary: 'Clock skew detected among monitors%(cluster)s' % $.MultiClusterSummary(),
+            description: "Ceph monitors rely on closely synchronized time to maintain quorum and cluster consistency. This event indicates that the time on at least one mon has drifted too far from the lead mon. Review cluster status with ceph -s. This will show which monitors are affected. Check the time sync status on each monitor host with 'ceph time-sync-status' and the state and peers of your ntpd or chrony daemon.",
+          },
+        },
+      ],
+    },
+    {
+      name: 'osd',
+      rules: [
+        {
+          alert: 'CephOSDDownHigh',
+          expr: 'count(ceph_osd_up == 0) / count(ceph_osd_up) * 100 >= 10',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.1' },
+          annotations: {
+            summary: 'More than 10%% of OSDs are down%(cluster)s' % $.MultiClusterSummary(),
+            description: '{{ $value | humanize }}% or {{ with query "count(ceph_osd_up == 0)" }}{{ . | first | value }}{{ end }} of {{ with query "count(ceph_osd_up)" }}{{ . | first | value }}{{ end }} OSDs are down (>= 10%). The following OSDs are down: {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0" }} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}',
+          },
+        },
+        {
+          alert: 'CephOSDHostDown',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="OSD_HOST_DOWN"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.8' },
+          annotations: {
+            summary: 'An OSD host is offline%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The following OSDs are down: {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0" }} - {{ .Labels.hostname }} : {{ .Labels.ceph_daemon }} {{- end }}',
+          },
+        },
+        {
+          alert: 'CephOSDDown',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="OSD_DOWN"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.2' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-down',
+            summary: 'An OSD has been marked down%(cluster)s' % $.MultiClusterSummary(),
+            description: |||
+              {{ $num := query "count(ceph_osd_up == 0)" | first | value }}{{ $s := "" }}{{ if gt $num 1.0 }}{{ $s = "s" }}{{ end }}{{ $num }} OSD{{ $s }} down for over 5mins. The following OSD{{ $s }} {{ if eq $s "" }}is{{ else }}are{{ end }} down: {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0"}} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}
+            |||,
+          },
+        },
+        {
+          alert: 'CephOSDNearFull',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="OSD_NEARFULL"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.3' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-nearfull',
+            summary: 'OSD(s) running low on free space (NEARFULL)%(cluster)s' % $.MultiClusterSummary(),
+            description: "One or more OSDs have reached the NEARFULL threshold. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data.",
+          },
+        },
+        {
+          alert: 'CephOSDFull',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="OSD_FULL"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.6' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-full',
+            summary: 'OSD full, writes blocked%(cluster)s' % $.MultiClusterSummary(),
+            description: "An OSD has reached the FULL threshold. Writes to pools that share the affected OSD will be blocked. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data.",
+          },
+        },
+        {
+          alert: 'CephOSDBackfillFull',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="OSD_BACKFILLFULL"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-backfillfull',
+            summary: 'OSD(s) too full for backfill operations%(cluster)s' % $.MultiClusterSummary(),
+            description: "An OSD has reached the BACKFILL FULL threshold. This will prevent rebalance operations from completing. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data.",
+          },
+        },
+        {
+          alert: 'CephOSDTooManyRepairs',
+          'for': '30s',
+          expr: 'ceph_health_detail{name="OSD_TOO_MANY_REPAIRS"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-too-many-repairs',
+            summary: 'OSD reports a high number of read errors%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Reads from an OSD have used a secondary PG to return data to the client, indicating a potential failing drive.',
+          },
+        },
+        {
+          alert: 'CephOSDTimeoutsPublicNetwork',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="OSD_SLOW_PING_TIME_FRONT"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'Network issues delaying OSD heartbeats (public network)%(cluster)s' % $.MultiClusterSummary(),
+            description: "OSD heartbeats on the cluster's 'public' network (frontend) are running slow. Investigate the network for latency or loss issues. Use 'ceph health detail' to show the affected OSDs.",
+          },
+        },
+        {
+          alert: 'CephOSDTimeoutsClusterNetwork',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="OSD_SLOW_PING_TIME_BACK"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'Network issues delaying OSD heartbeats (cluster network)%(cluster)s' % $.MultiClusterSummary(),
+            description: "OSD heartbeats on the cluster's 'cluster' network (backend) are slow. Investigate the network for latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs.",
+          },
+        },
+        {
+          alert: 'CephOSDInternalDiskSizeMismatch',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="BLUESTORE_DISK_SIZE_MISMATCH"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-disk-size-mismatch',
+            summary: 'OSD size inconsistency error%(cluster)s' % $.MultiClusterSummary(),
+            description: 'One or more OSDs have an internal inconsistency between metadata and the size of the device. This could lead to the OSD(s) crashing in future. You should redeploy the affected OSDs.',
+          },
+        },
+        {
+          alert: 'CephDeviceFailurePredicted',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="DEVICE_HEALTH"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#id2',
+            summary: 'Device(s) predicted to fail soon%(cluster)s' % $.MultiClusterSummary(),
+            description: "The device health module has determined that one or more devices will fail soon. To review device status use 'ceph device ls'. To show a specific device use 'ceph device info <dev id>'. Mark the OSD out so that data may migrate to other OSDs. Once the OSD has drained, destroy the OSD, replace the device, and redeploy the OSD.",
+          },
+        },
+        {
+          alert: 'CephDeviceFailurePredictionTooHigh',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="DEVICE_HEALTH_TOOMANY"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.7' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany',
+            summary: 'Too many devices are predicted to fail, unable to resolve%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availabililty. Prevent data integrity issues by adding new OSDs so that data may be relocated.',
+          },
+        },
+        {
+          alert: 'CephDeviceFailureRelocationIncomplete',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="DEVICE_HEALTH_IN_USE"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-in-use',
+            summary: 'Device failure is predicted, but unable to relocate data%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The device health module has determined that one or more devices will fail soon, but the normal process of relocating the data on the device to other OSDs in the cluster is blocked. \nEnsure that the cluster has available free space. It may be necessary to add capacity to the cluster to allow data from the failing device to successfully migrate, or to enable the balancer.',
+          },
+        },
+        {
+          alert: 'CephOSDFlapping',
+          expr: '(rate(ceph_osd_up[5m]) * on(%(cluster)sceph_daemon) group_left(hostname) ceph_osd_metadata) * 60 > 1' % $.MultiClusterQuery(),
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.4' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd#flapping-osds',
+            summary: 'Network issues are causing OSDs to flap (mark each other down)%(cluster)s' % $.MultiClusterSummary(),
+            description: 'OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} was marked down and back up {{ $value | humanize }} times once a minute for 5 minutes. This may indicate a network issue (latency, packet loss, MTU mismatch) on the cluster network, or the public network if no cluster network is deployed. Check the network stats on the listed host(s).',
+          },
+        },
+        {
+          alert: 'CephOSDReadErrors',
+          'for': '30s',
+          expr: 'ceph_health_detail{name="BLUESTORE_SPURIOUS_READ_ERRORS"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-spurious-read-errors',
+            summary: 'Device read errors detected%(cluster)s' % $.MultiClusterSummary(),
+            description: 'An OSD has encountered read errors, but the OSD has recovered by retrying the reads. This may indicate an issue with hardware or the kernel.',
+          },
+        },
+        {
+          alert: 'CephPGImbalance',
+          'for': '5m',
+          expr: |||
+            abs(
+              ((ceph_osd_numpg > 0) - on (%(cluster)sjob) group_left avg(ceph_osd_numpg > 0) by (%(cluster)sjob)) /
+              on (job) group_left avg(ceph_osd_numpg > 0) by (job)
+            ) * on (%(cluster)sceph_daemon) group_left(hostname) ceph_osd_metadata > 0.30
+          ||| % [$.MultiClusterQuery(), $.MultiClusterQuery(), $.MultiClusterQuery()],
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.4.5' },
+          annotations: {
+            summary: 'PGs are not balanced across OSDs%(cluster)s' % $.MultiClusterSummary(),
+            description: 'OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} deviates by more than 30% from average PG count.',
+          },
+        },
+      ],
+    },
+    {
+      name: 'mds',
+      rules: [
+        {
+          alert: 'CephFilesystemDamaged',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MDS_DAMAGE"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.5.1' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages',
+            summary: 'CephFS filesystem is damaged%(cluster)s.' % $.MultiClusterSummary(),
+            description: 'Filesystem metadata has been corrupted. Data may be inaccessible. Analyze metrics from the MDS daemon admin socket, or escalate to support.',
+          },
+        },
+        {
+          alert: 'CephFilesystemOffline',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MDS_ALL_DOWN"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.5.3' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-all-down',
+            summary: 'CephFS filesystem is offline%(cluster)s' % $.MultiClusterSummary(),
+            description: 'All MDS ranks are unavailable. The MDS daemons managing metadata are down, rendering the filesystem offline.',
+          },
+        },
+        {
+          alert: 'CephFilesystemDegraded',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="FS_DEGRADED"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.5.4' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-degraded',
+            summary: 'CephFS filesystem is degraded%(cluster)s' % $.MultiClusterSummary(),
+            description: 'One or more metadata daemons (MDS ranks) are failed or in a damaged state. At best the filesystem is partially available, at worst the filesystem is completely unusable.',
+          },
+        },
+        {
+          alert: 'CephFilesystemMDSRanksLow',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MDS_UP_LESS_THAN_MAX"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-up-less-than-max',
+            summary: 'Ceph MDS daemon count is lower than configured%(cluster)s' % $.MultiClusterSummary(),
+            description: "The filesystem's 'max_mds' setting defines the number of MDS ranks in the filesystem. The current number of active MDS daemons is less than this value.",
+          },
+        },
+        {
+          alert: 'CephFilesystemInsufficientStandby',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MDS_INSUFFICIENT_STANDBY"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-insufficient-standby',
+            summary: 'Ceph filesystem standby daemons too few%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The minimum number of standby daemons required by standby_count_wanted is less than the current number of standby daemons. Adjust the standby count or increase the number of MDS daemons.',
+          },
+        },
+        {
+          alert: 'CephFilesystemFailureNoStandby',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="FS_WITH_FAILED_MDS"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.5.5' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-with-failed-mds',
+            summary: 'MDS daemon failed, no further standby available%(cluster)s' % $.MultiClusterSummary(),
+            description: 'An MDS daemon has failed, leaving only one active rank and no available standby. Investigate the cause of the failure or add a standby MDS.',
+          },
+        },
+        {
+          alert: 'CephFilesystemReadOnly',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="MDS_HEALTH_READ_ONLY"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.5.2' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages',
+            summary: 'CephFS filesystem in read only mode due to write error(s)%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The filesystem has switched to READ ONLY due to an unexpected error when writing to the metadata pool. Either analyze the output from the MDS daemon admin socket, or escalate to support.',
+          },
+        },
+      ],
+    },
+    {
+      name: 'mgr',
+      rules: [
+        {
+          alert: 'CephMgrModuleCrash',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="RECENT_MGR_MODULE_CRASH"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.6.1' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#recent-mgr-module-crash',
+            summary: 'A manager module has recently crashed%(cluster)s' % $.MultiClusterSummary(),
+            description: "One or more mgr modules have crashed and have yet to be acknowledged by an administrator. A crashed module may impact functionality within the cluster. Use the 'ceph crash' command to determine which module has failed, and archive it to acknowledge the failure.",
+          },
+        },
+        {
+          alert: 'CephMgrPrometheusModuleInactive',
+          'for': '1m',
+          expr: 'up{job="ceph"} == 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.6.2' },
+          annotations: {
+            summary: 'The mgr/prometheus module is not available%(cluster)s' % $.MultiClusterSummary(),
+            description: "The mgr/prometheus module at {{ $labels.instance }} is unreachable. This could mean that the module has been disabled or the mgr daemon itself is down. Without the mgr/prometheus module metrics and alerts will no longer function. Open a shell to an admin node or toolbox pod and use 'ceph -s' to to determine whether the mgr is active. If the mgr is not active, restart it, otherwise you can determine module status with 'ceph mgr module ls'. If it is not listed as enabled, enable it with 'ceph mgr module enable prometheus'.",
+          },
+        },
+      ],
+    },
+    {
+      name: 'pgs',
+      rules: [
+        {
+          alert: 'CephPGsInactive',
+          'for': '5m',
+          expr: 'ceph_pool_metadata * on(%(cluster)spool_id,instance) group_left() (ceph_pg_total - ceph_pg_active) > 0' % $.MultiClusterQuery(),
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.1' },
+          annotations: {
+            summary: 'One or more placement groups are inactive%(cluster)s' % $.MultiClusterSummary(),
+            description: '{{ $value }} PGs have been inactive for more than 5 minutes in pool {{ $labels.name }}. Inactive placement groups are not able to serve read/write requests.',
+          },
+        },
+        {
+          alert: 'CephPGsUnclean',
+          'for': '15m',
+          expr: 'ceph_pool_metadata * on(%(cluster)spool_id,instance) group_left() (ceph_pg_total - ceph_pg_clean) > 0' % $.MultiClusterQuery(),
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.2' },
+          annotations: {
+            summary: 'One or more placement groups are marked unclean%(cluster)s' % $.MultiClusterSummary(),
+            description: '{{ $value }} PGs have been unclean for more than 15 minutes in pool {{ $labels.name }}. Unclean PGs have not recovered from a previous failure.',
+          },
+        },
+        {
+          alert: 'CephPGsDamaged',
+          'for': '5m',
+          expr: 'ceph_health_detail{name=~"PG_DAMAGED|OSD_SCRUB_ERRORS"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.4' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-damaged',
+            summary: 'Placement group damaged, manual intervention needed%(cluster)s' % $.MultiClusterSummary(),
+            description: "During data consistency checks (scrub), at least one PG has been flagged as being damaged or inconsistent. Check to see which PG is affected, and attempt a manual repair if necessary. To list problematic placement groups, use 'rados list-inconsistent-pg <pool>'. To repair PGs use the 'ceph pg repair <pg_num>' command.",
+          },
+        },
+        {
+          alert: 'CephPGRecoveryAtRisk',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="PG_RECOVERY_FULL"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.5' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-recovery-full',
+            summary: 'OSDs are too full for recovery%(cluster)s' % $.MultiClusterSummary(),
+            description: "Data redundancy is at risk since one or more OSDs are at or above the 'full' threshold. Add more capacity to the cluster, restore down/out OSDs, or delete unwanted data.",
+          },
+        },
+        {
+          alert: 'CephPGUnavilableBlockingIO',
+          'for': '1m',
+          expr: '((ceph_health_detail{name="PG_AVAILABILITY"} == 1) - scalar(ceph_health_detail{name="OSD_DOWN"})) == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.3' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-availability',
+            summary: 'PG is unavailable%(cluster)s, blocking I/O' % $.MultiClusterSummary(),
+            description: "Data availability is reduced, impacting the cluster's ability to service I/O. One or more placement groups (PGs) are in a state that blocks I/O.",
+          },
+        },
+        {
+          alert: 'CephPGBackfillAtRisk',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="PG_BACKFILL_FULL"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.6' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-backfill-full',
+            summary: 'Backfill operations are blocked due to lack of free space%(cluster)s' % $.MultiClusterSummary(),
+            description: "Data redundancy may be at risk due to lack of free space within the cluster. One or more OSDs have reached the 'backfillfull' threshold. Add more capacity, or delete unwanted data.",
+          },
+        },
+        {
+          alert: 'CephPGNotScrubbed',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="PG_NOT_SCRUBBED"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-scrubbed',
+            summary: 'Placement group(s) have not been scrubbed%(cluster)s' % $.MultiClusterSummary(),
+            description: "One or more PGs have not been scrubbed recently. Scrubs check metadata integrity, protecting against bit-rot. They check that metadata is consistent across data replicas. When PGs miss their scrub interval, it may indicate that the scrub window is too small, or PGs were not in a 'clean' state during the scrub window. You can manually initiate a scrub with: ceph pg scrub <pgid>",
+          },
+        },
+        {
+          alert: 'CephPGsHighPerOSD',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="TOO_MANY_PGS"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks/#too-many-pgs',
+            summary: 'Placement groups per OSD is too high%(cluster)s' % $.MultiClusterSummary(),
+            description: "The number of placement groups per OSD is too high (exceeds the mon_max_pg_per_osd setting).\n Check that the pg_autoscaler has not been disabled for any pools with 'ceph osd pool autoscale-status', and that the profile selected is appropriate. You may also adjust the target_size_ratio of a pool to guide the autoscaler based on the expected relative size of the pool ('ceph osd pool set cephfs.cephfs.meta target_size_ratio .1') or set the pg_autoscaler mode to 'warn' and adjust pg_num appropriately for one or more pools.",
+          },
+        },
+        {
+          alert: 'CephPGNotDeepScrubbed',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="PG_NOT_DEEP_SCRUBBED"} == 1',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-deep-scrubbed',
+            summary: 'Placement group(s) have not been deep scrubbed%(cluster)s' % $.MultiClusterSummary(),
+            description: "One or more PGs have not been deep scrubbed recently. Deep scrubs protect against bit-rot. They compare data replicas to ensure consistency. When PGs miss their deep scrub interval, it may indicate that the window is too small or PGs were not in a 'clean' state during the deep-scrub window.",
+          },
+        },
+      ],
+    },
+    {
+      name: 'nodes',
+      rules: [
+        {
+          alert: 'CephNodeRootFilesystemFull',
+          'for': '5m',
+          expr: 'node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100 < 5',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.8.1' },
+          annotations: {
+            summary: 'Root filesystem is dangerously full%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Root volume is dangerously full: {{ $value | humanize }}% free.',
+          },
+        },
+        {
+          alert: 'CephNodeNetworkPacketDrops',
+          expr: |||
+            (
+              rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_drop_total{device!="lo"}[1m])
+            ) / (
+              rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_packets_total{device!="lo"}[1m])
+            ) >= %(CephNodeNetworkPacketDropsThreshold)s and (
+              rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_drop_total{device!="lo"}[1m])
+            ) >= %(CephNodeNetworkPacketDropsPerSec)s
+          ||| % $._config,
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.8.2' },
+          annotations: {
+            summary: 'One or more NICs reports packet drops%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Node {{ $labels.instance }} experiences packet drop > %(CephNodeNetworkPacketDropsThreshold)s%% or > %(CephNodeNetworkPacketDropsPerSec)s packets/s on interface {{ $labels.device }}.' % { CephNodeNetworkPacketDropsThreshold: $._config.CephNodeNetworkPacketDropsThreshold * 100, CephNodeNetworkPacketDropsPerSec: $._config.CephNodeNetworkPacketDropsPerSec },
+          },
+        },
+        {
+          alert: 'CephNodeNetworkPacketErrors',
+          expr: |||
+            (
+              rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_errs_total{device!="lo"}[1m])
+            ) / (
+              rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_packets_total{device!="lo"}[1m])
+            ) >= 0.0001 or (
+              rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+              rate(node_network_transmit_errs_total{device!="lo"}[1m])
+            ) >= 10
+          |||,
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.8.3' },
+          annotations: {
+            summary: 'One or more NICs reports packet errors%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Node {{ $labels.instance }} experiences packet errors > 0.01% or > 10 packets/s on interface {{ $labels.device }}.',
+          },
+        },
+        {
+          alert: 'CephNodeDiskspaceWarning',
+          expr: 'predict_linear(node_filesystem_free_bytes{device=~"/.*"}[2d], 3600 * 24 * 5) *on(instance) group_left(nodename) node_uname_info < 0',
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.8.4' },
+          annotations: {
+            summary: 'Host filesystem free space is getting low%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Mountpoint {{ $labels.mountpoint }} on {{ $labels.nodename }} will be full in less than 5 days based on the 48 hour trailing fill rate.',
+          },
+        },
+        {
+          alert: 'CephNodeInconsistentMTU',
+          expr: 'node_network_mtu_bytes * (node_network_up{device!="lo"} > 0) ==  scalar(    max by (device) (node_network_mtu_bytes * (node_network_up{device!="lo"} > 0)) !=      quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!="lo"} > 0))  )or node_network_mtu_bytes * (node_network_up{device!="lo"} > 0) ==  scalar(    min by (device) (node_network_mtu_bytes * (node_network_up{device!="lo"} > 0)) !=      quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!="lo"} > 0))  )',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'MTU settings across Ceph hosts are inconsistent%(cluster)s' % $.MultiClusterSummary(),
+            description: 'Node {{ $labels.instance }} has a different MTU size ({{ $value }}) than the median of devices named {{ $labels.device }}.',
+          },
+        },
+      ],
+    },
+    {
+      name: 'pools',
+      rules: [
+        {
+          alert: 'CephPoolGrowthWarning',
+          expr: '(predict_linear(ceph_pool_percent_used[2d], 3600 * 24 * 5) * on(%(cluster)spool_id)    group_right ceph_pool_metadata) >= 95' % $.MultiClusterQuery(),
+          labels: { severity: 'warning', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.9.2' },
+          annotations: {
+            summary: 'Pool growth rate may soon exceed capacity%(cluster)s' % $.MultiClusterSummary(),
+            description: "Pool '{{ $labels.name }}' will be full in less than 5 days assuming the average fill-up rate of the past 48 hours.",
+          },
+        },
+        {
+          alert: 'CephPoolBackfillFull',
+          expr: 'ceph_health_detail{name="POOL_BACKFILLFULL"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'Free space in a pool is too low for recovery/backfill%(cluster)s' % $.MultiClusterSummary(),
+            description: 'A pool is approaching the near full threshold, which will prevent recovery/backfill operations from completing. Consider adding more capacity.',
+          },
+        },
+        {
+          alert: 'CephPoolFull',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="POOL_FULL"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.9.1' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#pool-full',
+            summary: 'Pool is full - writes are blocked%(cluster)s' % $.MultiClusterSummary(),
+            description: "A pool has reached its MAX quota, or OSDs supporting the pool have reached the FULL threshold. Until this is resolved, writes to the pool will be blocked. Pool Breakdown (top 5) {{- range query \"topk(5, sort_desc(ceph_pool_percent_used * on(pool_id) group_right ceph_pool_metadata))\" }} - {{ .Labels.name }} at {{ .Value }}% {{- end }} Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)",
+          },
+        },
+        {
+          alert: 'CephPoolNearFull',
+          'for': '5m',
+          expr: 'ceph_health_detail{name="POOL_NEAR_FULL"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            summary: 'One or more Ceph pools are nearly full%(cluster)s' % $.MultiClusterSummary(),
+            description: "A pool has exceeded the warning (percent full) threshold, or OSDs supporting the pool have reached the NEARFULL threshold. Writes may continue, but you are at risk of the pool going read-only if more capacity isn't made available. Determine the affected pool with 'ceph df detail', looking at QUOTA BYTES and STORED. Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>). Also ensure that the balancer is active.",
+          },
+        },
+      ],
+    },
+    {
+      name: 'healthchecks',
+      rules: [
+        {
+          alert: 'CephSlowOps',
+          'for': '30s',
+          expr: 'ceph_healthcheck_slow_ops > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#slow-ops',
+            summary: 'OSD operations are slow to complete%(cluster)s' % $.MultiClusterSummary(),
+            description: '{{ $value }} OSD requests are taking too long to process (osd_op_complaint_time exceeded)',
+          },
+        },
+      ],
+    },
+    {
+      name: 'cephadm',
+      rules: [
+        {
+          alert: 'CephadmUpgradeFailed',
+          'for': '30s',
+          expr: 'ceph_health_detail{name="UPGRADE_EXCEPTION"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.11.2' },
+          annotations: {
+            summary: 'Ceph version upgrade has failed%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The cephadm cluster upgrade process has failed. The cluster remains in an undetermined state. Please review the cephadm logs, to understand the nature of the issue',
+          },
+        },
+        {
+          alert: 'CephadmDaemonFailed',
+          'for': '30s',
+          expr: 'ceph_health_detail{name="CEPHADM_FAILED_DAEMON"} > 0',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.11.1' },
+          annotations: {
+            summary: 'A ceph daemon manged by cephadm is down%(cluster)s' % $.MultiClusterSummary(),
+            description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'",
+          },
+        },
+        {
+          alert: 'CephadmPaused',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="CEPHADM_PAUSED"} > 0',
+          labels: { severity: 'warning', type: 'ceph_default' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/cephadm/operations#cephadm-paused',
+            summary: 'Orchestration tasks via cephadm are PAUSED%(cluster)s' % $.MultiClusterSummary(),
+            description: "Cluster management has been paused manually. This will prevent the orchestrator from service management and reconciliation. If this is not intentional, resume cephadm operations with 'ceph orch resume'",
+          },
+        },
+      ],
+    },
+    {
+      name: 'PrometheusServer',
+      rules: [
+        {
+          alert: 'PrometheusJobMissing',
+          'for': '30s',
+          expr: 'absent(up{job="ceph"})',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.12.1' },
+          annotations: {
+            summary: 'The scrape job for Ceph is missing from Prometheus%(cluster)s' % $.MultiClusterSummary(),
+            description: "The prometheus job that scrapes from Ceph is no longer defined, this will effectively mean you'll have no metrics or alerts for the cluster.  Please review the job definitions in the prometheus.yml file of the prometheus instance.",
+          },
+        },
+      ],
+    },
+    {
+      name: 'rados',
+      rules: [
+        {
+          alert: 'CephObjectMissing',
+          'for': '30s',
+          expr: '(ceph_health_detail{name="OBJECT_UNFOUND"} == 1) * on() (count(ceph_osd_up == 1) == bool count(ceph_osd_metadata)) == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.10.1' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks#object-unfound',
+            summary: 'Object(s) marked UNFOUND%(cluster)s' % $.MultiClusterSummary(),
+            description: 'The latest version of a RADOS object can not be found, even though all OSDs are up. I/O requests for this object from clients will block (hang). Resolving this issue may require the object to be rolled back to a prior version manually, and manually verified.',
+          },
+        },
+      ],
+    },
+    {
+      name: 'generic',
+      rules: [
+        {
+          alert: 'CephDaemonCrash',
+          'for': '1m',
+          expr: 'ceph_health_detail{name="RECENT_CRASH"} == 1',
+          labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.1.2' },
+          annotations: {
+            documentation: 'https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash',
+            summary: 'One or more Ceph daemons have crashed, and are pending acknowledgement%(cluster)s' % $.MultiClusterSummary(),
+            description: "One or more daemons have crashed recently, and need to be acknowledged. This notification ensures that software crashes do not go unseen. To acknowledge a crash, use the 'ceph crash archive <id>' command.",
+          },
+        },
+      ],
+    },
+  ],
+}
index f56b5877885d5166fa33275f393cd4c6bc45550e..a544d41eb0ee0ac15806a52c93ea5c36856c20cf 100644 (file)
 groups:
-  - name: cluster health
+  - name: "cluster health"
     rules:
-      - alert: CephHealthError
-        expr: ceph_health_status == 2
-        for: 5m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.2.1
-        annotations:
-          summary: Cluster is in an ERROR state
-          description: >
-            Ceph in HEALTH_ERROR state for more than 5 minutes.
-            Please check "ceph health detail" for more information.
-
-      - alert: CephHealthWarning
-        expr: ceph_health_status == 1
-        for: 15m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          summary: Cluster is in a WARNING state
-          description: >
-            Ceph has been in HEALTH_WARN for more than 15 minutes.
-            Please check "ceph health detail" for more information.
-
-  - name: mon
+      - alert: "CephHealthError"
+        annotations:
+          description: "The cluster state has been HEALTH_ERROR for more than 5 minutes. Please check 'ceph health detail' for more information."
+          summary: "Ceph is in the ERROR state"
+        expr: "ceph_health_status == 2"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.2.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephHealthWarning"
+        annotations:
+          description: "The cluster state has been HEALTH_WARN for more than 15 minutes. Please check 'ceph health detail' for more information."
+          summary: "Ceph is in the WARNING state"
+        expr: "ceph_health_status == 1"
+        for: "15m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "mon"
     rules:
-      - alert: CephMonDownQuorumAtRisk
-        expr: ((ceph_health_detail{name="MON_DOWN"} == 1) * on() (count(ceph_mon_quorum_status == 1) == bool (floor(count(ceph_mon_metadata) / 2) + 1))) == 1
-        for: 30s
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.3.1
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down
-          summary: Monitor quorum is at risk
-          description: |
-            {{ $min := query "floor(count(ceph_mon_metadata) / 2) +1" | first | value }}Quorum requires a majority of monitors (x {{ $min }}) to be active
-            Without quorum the cluster will become inoperable, affecting all connected clients and services.
-
-            The following monitors are down:
-            {{- range query "(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)" }}
-              - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }}
-            {{- end }}
-      - alert: CephMonDown
-        expr: (count(ceph_mon_quorum_status == 0) <= (count(ceph_mon_metadata) - floor(count(ceph_mon_metadata) / 2) + 1))
-        for: 30s
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down
-          summary: One of more ceph monitors are down
-          description: |
-            {{ $down := query "count(ceph_mon_quorum_status == 0)" | first | value }}{{ $s := "" }}{{ if gt $down 1.0 }}{{ $s = "s" }}{{ end }}You have {{ $down }} monitor{{ $s }} down.
-            Quorum is still intact, but the loss of further monitors will make your cluster inoperable.
-
-            The following monitors are down:
-            {{- range query "(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)" }}
-              - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }}
-            {{- end }}
-      - alert: CephMonDiskspaceCritical
-        expr: ceph_health_detail{name="MON_DISK_CRIT"} == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.3.2
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-crit
-          summary: Disk space on at least one monitor is critically low
-          description: |
-            The free space available to a monitor's store is critically low (<5% by default).
-            You should increase the space available to the monitor(s). The
-            default location for the store sits under /var/lib/ceph. Your monitor hosts are;
-            {{- range query "ceph_mon_metadata"}}
-              - {{ .Labels.hostname }}
-            {{- end }}
-
-      - alert: CephMonDiskspaceLow
-        expr: ceph_health_detail{name="MON_DISK_LOW"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-low
-          summary: Disk space on at least one monitor is approaching full
-          description: |
-            The space available to a monitor's store is approaching full (>70% is the default).
-            You should increase the space available to the monitor store. The
-            default location for the store sits under /var/lib/ceph. Your monitor hosts are;
-            {{- range query "ceph_mon_metadata"}}
-              - {{ .Labels.hostname }}
-            {{- end }}
-
-      - alert: CephMonClockSkew
-        expr: ceph_health_detail{name="MON_CLOCK_SKEW"} == 1
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-clock-skew
-          summary: Clock skew across the Monitor hosts detected
-          description: |
-            The ceph monitors rely on a consistent time reference to maintain
-            quorum and cluster consistency. This event indicates that at least
-            one of your mons is not sync'd correctly.
-
-            Review the cluster status with ceph -s. This will show which monitors
-            are affected. Check the time sync status on each monitor host.
-
-  - name: osd
-    rules:
-      - alert: CephOSDDownHigh
-        expr: count(ceph_osd_up == 0) / count(ceph_osd_up) * 100 >= 10
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.1
+      - alert: "CephMonDownQuorumAtRisk"
         annotations:
-          summary: More than 10% of OSDs are down
-          description: |
-            {{ $value | humanize }}% or {{ with query "count(ceph_osd_up == 0)" }}{{ . | first | value }}{{ end }} of {{ with query "count(ceph_osd_up)" }}{{ . | first | value }}{{ end }} OSDs are down (>= 10%).
-
-            The following OSDs are down:
-            {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0" }}
-              - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }}
-            {{- end }}
-      - alert: CephOSDHostDown
-        expr: ceph_health_detail{name="OSD_HOST_DOWN"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.8
-        annotations:
-          summary: An OSD host is offline
-          description: |
-            The following OSDs are down:
-            {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0" }}
-            - {{ .Labels.hostname }} : {{ .Labels.ceph_daemon }}
-            {{- end }}
-      - alert: CephOSDDown
-        expr: ceph_health_detail{name="OSD_DOWN"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.2
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-down
-          summary: An OSD has been marked down/unavailable
-          description: |
-            {{ $num := query "count(ceph_osd_up == 0)" | first | value }}{{ $s := "" }}{{ if gt $num 1.0 }}{{ $s = "s" }}{{ end }}{{ $num }} OSD{{ $s }} down for over 5mins.
-
-            The following OSD{{ $s }} {{ if eq $s "" }}is{{ else }}are{{ end }} down:
-              {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0"}}
-              - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }}
-              {{- end }}
-
-      - alert: CephOSDNearFull
-        expr: ceph_health_detail{name="OSD_NEARFULL"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.3
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-nearfull
-          summary: OSD(s) running low on free space (NEARFULL)
-          description: |
-            One or more OSDs have reached their NEARFULL threshold
-
-            Use 'ceph health detail' to identify which OSDs have reached this threshold.
-            To resolve, either add capacity to the cluster, or delete unwanted data
-      - alert: CephOSDFull
-        expr: ceph_health_detail{name="OSD_FULL"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.6
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-full
-          summary: OSD(s) is full, writes blocked
-          description: |
-            An OSD has reached it's full threshold. Writes from all pools that share the
-            affected OSD will be blocked.
-
-            To resolve, either add capacity to the cluster, or delete unwanted data
-      - alert: CephOSDBackfillFull
-        expr: ceph_health_detail{name="OSD_BACKFILLFULL"} > 0
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-backfillfull
-          summary: OSD(s) too full for backfill operations
-          description: |
-            An OSD has reached it's BACKFILL FULL threshold. This will prevent rebalance operations
-            completing for some pools. Check the current capacity utilisation with 'ceph df'
-
-            To resolve, either add capacity to the cluster, or delete unwanted data
-      - alert: CephOSDTooManyRepairs
-        expr: ceph_health_detail{name="OSD_TOO_MANY_REPAIRS"} == 1
-        for: 30s
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-too-many-repairs
-          summary: OSD has hit a high number of read errors
-          description: |
-            Reads from an OSD have used a secondary PG to return data to the client, indicating
-            a potential failing disk.
-      - alert: CephOSDTimeoutsPublicNetwork
-        expr: ceph_health_detail{name="OSD_SLOW_PING_TIME_FRONT"} == 1
-        for: 1m
+          description: "{{ $min := query \"floor(count(ceph_mon_metadata) / 2) + 1\" | first | value }}Quorum requires a majority of monitors (x {{ $min }}) to be active. Without quorum the cluster will become inoperable, affecting all services and connected clients. The following monitors are down: {{- range query \"(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)\" }} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down"
+          summary: "Monitor quorum is at risk"
+        expr: |
+          (
+            (ceph_health_detail{name="MON_DOWN"} == 1) * on() (
+              count(ceph_mon_quorum_status == 1) == bool (floor(count(ceph_mon_metadata) / 2) + 1)
+            )
+          ) == 1
+        for: "30s"
         labels:
-          severity: warning
-          type: ceph_default
+          oid: "1.3.6.1.4.1.50495.1.2.1.3.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephMonDown"
         annotations:
-          summary: Network issues delaying OSD heartbeats (public network)
           description: |
-            OSD heartbeats on the cluster's 'public' network (frontend) are running slow. Investigate the network
-            for any latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs.
-      - alert: CephOSDTimeoutsClusterNetwork
-        expr: ceph_health_detail{name="OSD_SLOW_PING_TIME_BACK"} == 1
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
+            {{ $down := query "count(ceph_mon_quorum_status == 0)" | first | value }}{{ $s := "" }}{{ if gt $down 1.0 }}{{ $s = "s" }}{{ end }}You have {{ $down }} monitor{{ $s }} down. Quorum is still intact, but the loss of an additional monitor will make your cluster inoperable.  The following monitors are down: {{- range query "(ceph_mon_quorum_status == 0) + on(ceph_daemon) group_left(hostname) (ceph_mon_metadata * 0)" }}   - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down"
+          summary: "One or more monitors down"
+        expr: |
+          count(ceph_mon_quorum_status == 0) <= (count(ceph_mon_metadata) - floor(count(ceph_mon_metadata) / 2) + 1)
+        for: "30s"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephMonDiskspaceCritical"
+        annotations:
+          description: "The free space available to a monitor's store is critically low. You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*. Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; {{- range query \"ceph_mon_metadata\"}} - {{ .Labels.hostname }} {{- end }}"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-crit"
+          summary: "Filesystem space on at least one monitor is critically low"
+        expr: "ceph_health_detail{name=\"MON_DISK_CRIT\"} == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.3.2"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephMonDiskspaceLow"
+        annotations:
+          description: "The space available to a monitor's store is approaching full (>70% is the default). You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*.  Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; {{- range query \"ceph_mon_metadata\"}} - {{ .Labels.hostname }} {{- end }}"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-low"
+          summary: "Drive space on at least one monitor is approaching full"
+        expr: "ceph_health_detail{name=\"MON_DISK_LOW\"} == 1"
+        for: "5m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephMonClockSkew"
+        annotations:
+          description: "Ceph monitors rely on closely synchronized time to maintain quorum and cluster consistency. This event indicates that the time on at least one mon has drifted too far from the lead mon. Review cluster status with ceph -s. This will show which monitors are affected. Check the time sync status on each monitor host with 'ceph time-sync-status' and the state and peers of your ntpd or chrony daemon."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-clock-skew"
+          summary: "Clock skew detected among monitors"
+        expr: "ceph_health_detail{name=\"MON_CLOCK_SKEW\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "osd"
+    rules:
+      - alert: "CephOSDDownHigh"
         annotations:
-          summary: Network issues delaying OSD heartbeats (cluster network)
-          description: |
-            OSD heartbeats on the cluster's 'cluster' network (backend) are running slow. Investigate the network
-            for any latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs.
-      - alert: CephOSDInternalDiskSizeMismatch
-        expr: ceph_health_detail{name="BLUESTORE_DISK_SIZE_MISMATCH"} == 1
-        for: 1m
+          description: "{{ $value | humanize }}% or {{ with query \"count(ceph_osd_up == 0)\" }}{{ . | first | value }}{{ end }} of {{ with query \"count(ceph_osd_up)\" }}{{ . | first | value }}{{ end }} OSDs are down (>= 10%). The following OSDs are down: {{- range query \"(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0\" }} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}"
+          summary: "More than 10% of OSDs are down"
+        expr: "count(ceph_osd_up == 0) / count(ceph_osd_up) * 100 >= 10"
         labels:
-          severity: warning
-          type: ceph_default
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephOSDHostDown"
         annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-disk-size-mismatch
-          summary: OSD size inconsistency error
-          description: |
-            One or more OSDs have an internal inconsistency between the size of the physical device and it's metadata.
-            This could lead to the OSD(s) crashing in future. You should redeploy the effected OSDs.
-      - alert: CephDeviceFailurePredicted
-        expr: ceph_health_detail{name="DEVICE_HEALTH"} == 1
-        for: 1m
+          description: "The following OSDs are down: {{- range query \"(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0\" }} - {{ .Labels.hostname }} : {{ .Labels.ceph_daemon }} {{- end }}"
+          summary: "An OSD host is offline"
+        expr: "ceph_health_detail{name=\"OSD_HOST_DOWN\"} == 1"
+        for: "5m"
         labels:
-          severity: warning
-          type: ceph_default
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.8"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDDown"
         annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#id2
-          summary: Device(s) have been predicted to fail soon
-          description: |
-            The device health module has determined that one or more devices will fail
-            soon. To review the device states use 'ceph device ls'. To show a specific
-            device use 'ceph device info <dev id>'.
-
-            Mark the OSD as out (so data may migrate to other OSDs in the cluster). Once
-            the osd is empty remove and replace the OSD.
-      - alert: CephDeviceFailurePredictionTooHigh
-        expr: ceph_health_detail{name="DEVICE_HEALTH_TOOMANY"} == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.7
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany
-          summary: Too many devices have been predicted to fail, unable to resolve
           description: |
-            The device health module has determined that the number of devices predicted to
-            fail can not be remediated automatically, since it would take too many osd's out of
-            the cluster, impacting performance and potentially availabililty. You should add new
-            OSDs to the cluster to allow data to be relocated to avoid the data integrity issues.
-      - alert: CephDeviceFailureRelocationIncomplete
-        expr: ceph_health_detail{name="DEVICE_HEALTH_IN_USE"} == 1
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-in-use
-          summary: A device failure is predicted, but unable to relocate data
-          description: |
-            The device health module has determined that one or more devices will fail
-            soon, but the normal process of relocating the data on the device to other
-            OSDs in the cluster is blocked.
-
-            Check the the cluster has available freespace. It may be necessary to add
-            more disks to the cluster to allow the data from the failing device to
-            successfully migrate.
-
-      - alert: CephOSDFlapping
-        expr: |
-          (
-            rate(ceph_osd_up[5m])
-            * on(ceph_daemon) group_left(hostname) ceph_osd_metadata
-          ) * 60 > 1
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.4
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd#flapping-osds
-          summary: Network issues are causing OSD's to flap (mark each other out)
-          description: >
-            OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} was
-            marked down and back up at {{ $value | humanize }} times once a
-            minute for 5 minutes. This could indicate a network issue (latency,
-            packet drop, disruption) on the clusters "cluster network". Check the
-            network environment on the listed host(s).
-
-      - alert: CephOSDReadErrors
-        expr: ceph_health_detail{name="BLUESTORE_SPURIOUS_READ_ERRORS"} == 1
-        for: 30s
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-spurious-read-errors
-          summary: Device read errors detected
-          description: >
-            An OSD has encountered read errors, but the OSD has recovered by retrying
-            the reads. This may indicate an issue with the Hardware or Kernel.
-      # alert on high deviation from average PG count
-      - alert: CephPGImbalance
+            {{ $num := query "count(ceph_osd_up == 0)" | first | value }}{{ $s := "" }}{{ if gt $num 1.0 }}{{ $s = "s" }}{{ end }}{{ $num }} OSD{{ $s }} down for over 5mins. The following OSD{{ $s }} {{ if eq $s "" }}is{{ else }}are{{ end }} down: {{- range query "(ceph_osd_up * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) == 0"}} - {{ .Labels.ceph_daemon }} on {{ .Labels.hostname }} {{- end }}
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-down"
+          summary: "An OSD has been marked down"
+        expr: "ceph_health_detail{name=\"OSD_DOWN\"} == 1"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.2"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDNearFull"
+        annotations:
+          description: "One or more OSDs have reached the NEARFULL threshold. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-nearfull"
+          summary: "OSD(s) running low on free space (NEARFULL)"
+        expr: "ceph_health_detail{name=\"OSD_NEARFULL\"} == 1"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.3"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDFull"
+        annotations:
+          description: "An OSD has reached the FULL threshold. Writes to pools that share the affected OSD will be blocked. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-full"
+          summary: "OSD full, writes blocked"
+        expr: "ceph_health_detail{name=\"OSD_FULL\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.6"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephOSDBackfillFull"
+        annotations:
+          description: "An OSD has reached the BACKFILL FULL threshold. This will prevent rebalance operations from completing. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-backfillfull"
+          summary: "OSD(s) too full for backfill operations"
+        expr: "ceph_health_detail{name=\"OSD_BACKFILLFULL\"} > 0"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDTooManyRepairs"
+        annotations:
+          description: "Reads from an OSD have used a secondary PG to return data to the client, indicating a potential failing drive."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-too-many-repairs"
+          summary: "OSD reports a high number of read errors"
+        expr: "ceph_health_detail{name=\"OSD_TOO_MANY_REPAIRS\"} == 1"
+        for: "30s"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDTimeoutsPublicNetwork"
+        annotations:
+          description: "OSD heartbeats on the cluster's 'public' network (frontend) are running slow. Investigate the network for latency or loss issues. Use 'ceph health detail' to show the affected OSDs."
+          summary: "Network issues delaying OSD heartbeats (public network)"
+        expr: "ceph_health_detail{name=\"OSD_SLOW_PING_TIME_FRONT\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDTimeoutsClusterNetwork"
+        annotations:
+          description: "OSD heartbeats on the cluster's 'cluster' network (backend) are slow. Investigate the network for latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs."
+          summary: "Network issues delaying OSD heartbeats (cluster network)"
+        expr: "ceph_health_detail{name=\"OSD_SLOW_PING_TIME_BACK\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDInternalDiskSizeMismatch"
+        annotations:
+          description: "One or more OSDs have an internal inconsistency between metadata and the size of the device. This could lead to the OSD(s) crashing in future. You should redeploy the affected OSDs."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-disk-size-mismatch"
+          summary: "OSD size inconsistency error"
+        expr: "ceph_health_detail{name=\"BLUESTORE_DISK_SIZE_MISMATCH\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephDeviceFailurePredicted"
+        annotations:
+          description: "The device health module has determined that one or more devices will fail soon. To review device status use 'ceph device ls'. To show a specific device use 'ceph device info <dev id>'. Mark the OSD out so that data may migrate to other OSDs. Once the OSD has drained, destroy the OSD, replace the device, and redeploy the OSD."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#id2"
+          summary: "Device(s) predicted to fail soon"
+        expr: "ceph_health_detail{name=\"DEVICE_HEALTH\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephDeviceFailurePredictionTooHigh"
+        annotations:
+          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availabililty. Prevent data integrity issues by adding new OSDs so that data may be relocated."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany"
+          summary: "Too many devices are predicted to fail, unable to resolve"
+        expr: "ceph_health_detail{name=\"DEVICE_HEALTH_TOOMANY\"} == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.7"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephDeviceFailureRelocationIncomplete"
+        annotations:
+          description: "The device health module has determined that one or more devices will fail soon, but the normal process of relocating the data on the device to other OSDs in the cluster is blocked. \nEnsure that the cluster has available free space. It may be necessary to add capacity to the cluster to allow data from the failing device to successfully migrate, or to enable the balancer."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-in-use"
+          summary: "Device failure is predicted, but unable to relocate data"
+        expr: "ceph_health_detail{name=\"DEVICE_HEALTH_IN_USE\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDFlapping"
+        annotations:
+          description: "OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} was marked down and back up {{ $value | humanize }} times once a minute for 5 minutes. This may indicate a network issue (latency, packet loss, MTU mismatch) on the cluster network, or the public network if no cluster network is deployed. Check the network stats on the listed host(s)."
+          documentation: "https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd#flapping-osds"
+          summary: "Network issues are causing OSDs to flap (mark each other down)"
+        expr: "(rate(ceph_osd_up[5m]) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata) * 60 > 1"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.4"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephOSDReadErrors"
+        annotations:
+          description: "An OSD has encountered read errors, but the OSD has recovered by retrying the reads. This may indicate an issue with hardware or the kernel."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-spurious-read-errors"
+          summary: "Device read errors detected"
+        expr: "ceph_health_detail{name=\"BLUESTORE_SPURIOUS_READ_ERRORS\"} == 1"
+        for: "30s"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPGImbalance"
+        annotations:
+          description: "OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} deviates by more than 30% from average PG count."
+          summary: "PGs are not balanced across OSDs"
         expr: |
           abs(
-            (
-              (ceph_osd_numpg > 0) - on (job) group_left avg(ceph_osd_numpg > 0) by (job)
-            ) / on (job) group_left avg(ceph_osd_numpg > 0) by (job)
-          ) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata > 0.30
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.4.5
-        annotations:
-          summary: PG allocations are not balanced across devices
-          description: >
-            OSD {{ $labels.ceph_daemon }} on {{ $labels.hostname }} deviates
-            by more than 30% from average PG count.
-      # alert on high commit latency...but how high is too high
-
-  - name: mds
+            ((ceph_osd_numpg > 0) - on (job) group_left avg(ceph_osd_numpg > 0) by (job)) /
+            on (job) group_left avg(ceph_osd_numpg > 0) by (job)
+          ) * on (ceph_daemon) group_left(hostname) ceph_osd_metadata > 0.30
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.4.5"
+          severity: "warning"
+          type: "ceph_default"
+  - name: "mds"
     rules:
-      - alert: CephFilesystemDamaged
-        expr: ceph_health_detail{name="MDS_DAMAGE"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.5.1
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages
-          summary: Ceph filesystem is damaged.
-          description: >
-            The filesystems metadata has been corrupted. Data access
-            may be blocked.
-
-            Either analyse the output from the mds daemon admin socket, or
-            escalate to support
-      - alert: CephFilesystemOffline
-        expr: ceph_health_detail{name="MDS_ALL_DOWN"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.5.3
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-all-down
-          summary: Ceph filesystem is offline
-          description: >
-            All MDS ranks are unavailable. The ceph daemons providing the metadata
-            for the Ceph filesystem are all down, rendering the filesystem offline.
-      - alert: CephFilesystemDegraded
-        expr: ceph_health_detail{name="FS_DEGRADED"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.5.4
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-degraded
-          summary: Ceph filesystem is degraded
-          description: >
-            One or more metadata daemons (MDS ranks) are failed or in a
-            damaged state. At best the filesystem is partially available,
-            worst case is the filesystem is completely unusable.
-      - alert: CephFilesystemMDSRanksLow
-        expr: ceph_health_detail{name="MDS_UP_LESS_THAN_MAX"} > 0
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-up-less-than-max
-          summary: Ceph MDS daemon count is lower than configured
-          description: >
-            The filesystem's "max_mds" setting defined the number of MDS ranks in
-            the filesystem. The current number of active MDS daemons is less than
-            this setting.
-      - alert: CephFilesystemInsufficientStandby
-        expr: ceph_health_detail{name="MDS_INSUFFICIENT_STANDBY"} > 0
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-insufficient-standby
-          summary: Ceph filesystem standby daemons too low
-          description: >
-            The minimum number of standby daemons determined by standby_count_wanted
-            is less than the actual number of standby daemons. Adjust the standby count
-            or increase the number of mds daemons within the filesystem.
-      - alert: CephFilesystemFailureNoStandby
-        expr: ceph_health_detail{name="FS_WITH_FAILED_MDS"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.5.5
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-with-failed-mds
-          summary: Ceph MDS daemon failed, no further standby available
-          description: >
-            An MDS daemon has failed, leaving only one active rank without
-            further standby. Investigate the cause of the failure or add a
-            standby daemon
-      - alert: CephFilesystemReadOnly
-        expr: ceph_health_detail{name="MDS_HEALTH_READ_ONLY"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.5.2
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages
-          summary: Ceph filesystem in read only mode, due to write error(s)
-          description: >
-            The filesystem has switched to READ ONLY due to an unexpected
-            write error, when writing to the metadata pool
-
-            Either analyse the output from the mds daemon admin socket, or
-            escalate to support
-
-  - name: mgr
+      - alert: "CephFilesystemDamaged"
+        annotations:
+          description: "Filesystem metadata has been corrupted. Data may be inaccessible. Analyze metrics from the MDS daemon admin socket, or escalate to support."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages"
+          summary: "CephFS filesystem is damaged."
+        expr: "ceph_health_detail{name=\"MDS_DAMAGE\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.5.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephFilesystemOffline"
+        annotations:
+          description: "All MDS ranks are unavailable. The MDS daemons managing metadata are down, rendering the filesystem offline."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-all-down"
+          summary: "CephFS filesystem is offline"
+        expr: "ceph_health_detail{name=\"MDS_ALL_DOWN\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.5.3"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephFilesystemDegraded"
+        annotations:
+          description: "One or more metadata daemons (MDS ranks) are failed or in a damaged state. At best the filesystem is partially available, at worst the filesystem is completely unusable."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-degraded"
+          summary: "CephFS filesystem is degraded"
+        expr: "ceph_health_detail{name=\"FS_DEGRADED\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.5.4"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephFilesystemMDSRanksLow"
+        annotations:
+          description: "The filesystem's 'max_mds' setting defines the number of MDS ranks in the filesystem. The current number of active MDS daemons is less than this value."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-up-less-than-max"
+          summary: "Ceph MDS daemon count is lower than configured"
+        expr: "ceph_health_detail{name=\"MDS_UP_LESS_THAN_MAX\"} > 0"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephFilesystemInsufficientStandby"
+        annotations:
+          description: "The minimum number of standby daemons required by standby_count_wanted is less than the current number of standby daemons. Adjust the standby count or increase the number of MDS daemons."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-insufficient-standby"
+          summary: "Ceph filesystem standby daemons too few"
+        expr: "ceph_health_detail{name=\"MDS_INSUFFICIENT_STANDBY\"} > 0"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephFilesystemFailureNoStandby"
+        annotations:
+          description: "An MDS daemon has failed, leaving only one active rank and no available standby. Investigate the cause of the failure or add a standby MDS."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-with-failed-mds"
+          summary: "MDS daemon failed, no further standby available"
+        expr: "ceph_health_detail{name=\"FS_WITH_FAILED_MDS\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.5.5"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephFilesystemReadOnly"
+        annotations:
+          description: "The filesystem has switched to READ ONLY due to an unexpected error when writing to the metadata pool. Either analyze the output from the MDS daemon admin socket, or escalate to support."
+          documentation: "https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages"
+          summary: "CephFS filesystem in read only mode due to write error(s)"
+        expr: "ceph_health_detail{name=\"MDS_HEALTH_READ_ONLY\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.5.2"
+          severity: "critical"
+          type: "ceph_default"
+  - name: "mgr"
     rules:
-      - alert: CephMgrModuleCrash
-        expr: ceph_health_detail{name="RECENT_MGR_MODULE_CRASH"} == 1
-        for: 5m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.6.1
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#recent-mgr-module-crash
-          summary: A mgr module has recently crashed
-          description: >
-            One or more mgr modules have crashed and are yet to be acknowledged by the administrator. A
-            crashed module may impact functionality within the cluster. Use the 'ceph crash' commands to
-            investigate which module has failed, and archive it to acknowledge the failure.
-      - alert: CephMgrPrometheusModuleInactive
-        expr: up{job="ceph"} == 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.6.2
-        annotations:
-          summary: Ceph's mgr/prometheus module is not available
-          description: >
-            The mgr/prometheus module at {{ $labels.instance }} is unreachable. This
-            could mean that the module has been disabled or the mgr itself is down.
-
-            Without the mgr/prometheus module metrics and alerts will no longer
-            function. Open a shell to ceph and use 'ceph -s' to to determine whether the
-            mgr is active. If the mgr is not active, restart it, otherwise you can check
-            the mgr/prometheus module is loaded with 'ceph mgr module ls'  and if it's
-            not listed as enabled, enable it with 'ceph mgr module enable prometheus'
-
-  - name: pgs
+      - alert: "CephMgrModuleCrash"
+        annotations:
+          description: "One or more mgr modules have crashed and have yet to be acknowledged by an administrator. A crashed module may impact functionality within the cluster. Use the 'ceph crash' command to determine which module has failed, and archive it to acknowledge the failure."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#recent-mgr-module-crash"
+          summary: "A manager module has recently crashed"
+        expr: "ceph_health_detail{name=\"RECENT_MGR_MODULE_CRASH\"} == 1"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.6.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephMgrPrometheusModuleInactive"
+        annotations:
+          description: "The mgr/prometheus module at {{ $labels.instance }} is unreachable. This could mean that the module has been disabled or the mgr daemon itself is down. Without the mgr/prometheus module metrics and alerts will no longer function. Open a shell to an admin node or toolbox pod and use 'ceph -s' to to determine whether the mgr is active. If the mgr is not active, restart it, otherwise you can determine module status with 'ceph mgr module ls'. If it is not listed as enabled, enable it with 'ceph mgr module enable prometheus'."
+          summary: "The mgr/prometheus module is not available"
+        expr: "up{job=\"ceph\"} == 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.6.2"
+          severity: "critical"
+          type: "ceph_default"
+  - name: "pgs"
     rules:
-      - alert: CephPGsInactive
-        expr: ceph_pool_metadata * on(pool_id,instance) group_left() (ceph_pg_total - ceph_pg_active) > 0
-        for: 5m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.1
-        annotations:
-          summary: One or more Placement Groups are inactive
-          description: >
-            {{ $value }} PGs have been inactive for more than 5 minutes in pool {{ $labels.name }}.
-            Inactive placement groups aren't able to serve read/write
-            requests.
-      - alert: CephPGsUnclean
-        expr: ceph_pool_metadata * on(pool_id,instance) group_left() (ceph_pg_total - ceph_pg_clean) > 0
-        for: 15m
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.2
-        annotations:
-          summary: One or more platcment groups are marked unclean
-          description: >
-            {{ $value }} PGs haven't been clean for more than 15 minutes in pool {{ $labels.name }}.
-            Unclean PGs haven't been able to completely recover from a previous failure.
-      - alert: CephPGsDamaged
-        expr: ceph_health_detail{name=~"PG_DAMAGED|OSD_SCRUB_ERRORS"} == 1
-        for: 5m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.4
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-damaged
-          summary: Placement group damaged, manual intervention needed
-          description: >
-            During data consistency checks (scrub), at least one PG has been flagged as being
-            damaged or inconsistent.
-
-            Check to see which PG is affected, and attempt a manual repair if necessary. To list
-            problematic placement groups, use 'rados list-inconsistent-pg <pool>'. To repair PGs use
-            the 'ceph pg repair <pg_num>' command.
-      - alert: CephPGRecoveryAtRisk
-        expr: ceph_health_detail{name="PG_RECOVERY_FULL"} == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.5
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-recovery-full
-          summary: OSDs are too full for automatic recovery
-          description: >
-            Data redundancy may be reduced, or is at risk, since one or more OSDs are at or above their
-            'full' threshold. Add more capacity to the cluster, or delete unwanted data.
-      - alert: CephPGUnavilableBlockingIO
-        # PG_AVAILABILITY, but an OSD is not in a DOWN state
-        expr: ((ceph_health_detail{name="PG_AVAILABILITY"} == 1) - scalar(ceph_health_detail{name="OSD_DOWN"})) == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.3
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-availability
-          summary: Placement group is unavailable, blocking some I/O
-          description: >
-            Data availability is reduced impacting the clusters ability to service I/O to some data. One or
-            more placement groups (PGs) are in a state that blocks IO.
-      - alert: CephPGBackfillAtRisk
-        expr: ceph_health_detail{name="PG_BACKFILL_FULL"} == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.7.6
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-backfill-full
-          summary: Backfill operations are blocked, due to lack of freespace
-          description: >
-            Data redundancy may be at risk due to lack of free space within the cluster. One or more OSDs
-            have breached their 'backfillfull' threshold. Add more capacity, or delete unwanted data.
-      - alert: CephPGNotScrubbed
-        expr: ceph_health_detail{name="PG_NOT_SCRUBBED"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-scrubbed
-          summary: Placement group(s) have not been scrubbed
-          description: |
-            One or more PGs have not been scrubbed recently. The scrub process is a data integrity
-            feature, protectng against bit-rot. It checks that objects and their metadata (size and
-            attributes) match across object replicas. When PGs miss their scrub window, it may
-            indicate the scrub window is too small, or PGs were not in a 'clean' state during the
-            scrub window.
-
-            You can manually initiate a scrub with: ceph pg scrub <pgid>
-      - alert: CephPGsHighPerOSD
-        expr: ceph_health_detail{name="TOO_MANY_PGS"} == 1
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks/#too-many-pgs
-          summary: Placement groups per OSD is too high
-          description: |
-            The number of placement groups per OSD is too high (exceeds the mon_max_pg_per_osd setting).
-
-            Check that the pg_autoscaler hasn't been disabled for any of the pools, with 'ceph osd pool autoscale-status'
-            and that the profile selected is appropriate. You may also adjust the target_size_ratio of a pool to guide
-            the autoscaler based on the expected relative size of the pool
-            (i.e. 'ceph osd pool set cephfs.cephfs.meta target_size_ratio .1')
-      - alert: CephPGNotDeepScrubbed
-        expr: ceph_health_detail{name="PG_NOT_DEEP_SCRUBBED"} == 1
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-deep-scrubbed
-          summary: Placement group(s) have not been deep scrubbed
-          description: |
-            One or more PGs have not been deep scrubbed recently. Deep scrub is a data integrity
-            feature, protectng against bit-rot. It compares the contents of objects and their
-            replicas for inconsistency. When PGs miss their deep scrub window, it may indicate
-            that the window is too small or PGs were not in a 'clean' state during the deep-scrub
-            window.
-
-            You can manually initiate a deep scrub with: ceph pg deep-scrub <pgid>
-
-  - name: nodes
+      - alert: "CephPGsInactive"
+        annotations:
+          description: "{{ $value }} PGs have been inactive for more than 5 minutes in pool {{ $labels.name }}. Inactive placement groups are not able to serve read/write requests."
+          summary: "One or more placement groups are inactive"
+        expr: "ceph_pool_metadata * on(pool_id,instance) group_left() (ceph_pg_total - ceph_pg_active) > 0"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPGsUnclean"
+        annotations:
+          description: "{{ $value }} PGs have been unclean for more than 15 minutes in pool {{ $labels.name }}. Unclean PGs have not recovered from a previous failure."
+          summary: "One or more placement groups are marked unclean"
+        expr: "ceph_pool_metadata * on(pool_id,instance) group_left() (ceph_pg_total - ceph_pg_clean) > 0"
+        for: "15m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.2"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPGsDamaged"
+        annotations:
+          description: "During data consistency checks (scrub), at least one PG has been flagged as being damaged or inconsistent. Check to see which PG is affected, and attempt a manual repair if necessary. To list problematic placement groups, use 'rados list-inconsistent-pg <pool>'. To repair PGs use the 'ceph pg repair <pg_num>' command."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-damaged"
+          summary: "Placement group damaged, manual intervention needed"
+        expr: "ceph_health_detail{name=~\"PG_DAMAGED|OSD_SCRUB_ERRORS\"} == 1"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.4"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPGRecoveryAtRisk"
+        annotations:
+          description: "Data redundancy is at risk since one or more OSDs are at or above the 'full' threshold. Add more capacity to the cluster, restore down/out OSDs, or delete unwanted data."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-recovery-full"
+          summary: "OSDs are too full for recovery"
+        expr: "ceph_health_detail{name=\"PG_RECOVERY_FULL\"} == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.5"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPGUnavilableBlockingIO"
+        annotations:
+          description: "Data availability is reduced, impacting the cluster's ability to service I/O. One or more placement groups (PGs) are in a state that blocks I/O."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-availability"
+          summary: "PG is unavailable, blocking I/O"
+        expr: "((ceph_health_detail{name=\"PG_AVAILABILITY\"} == 1) - scalar(ceph_health_detail{name=\"OSD_DOWN\"})) == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.3"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPGBackfillAtRisk"
+        annotations:
+          description: "Data redundancy may be at risk due to lack of free space within the cluster. One or more OSDs have reached the 'backfillfull' threshold. Add more capacity, or delete unwanted data."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-backfill-full"
+          summary: "Backfill operations are blocked due to lack of free space"
+        expr: "ceph_health_detail{name=\"PG_BACKFILL_FULL\"} == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.7.6"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPGNotScrubbed"
+        annotations:
+          description: "One or more PGs have not been scrubbed recently. Scrubs check metadata integrity, protecting against bit-rot. They check that metadata is consistent across data replicas. When PGs miss their scrub interval, it may indicate that the scrub window is too small, or PGs were not in a 'clean' state during the scrub window. You can manually initiate a scrub with: ceph pg scrub <pgid>"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-scrubbed"
+          summary: "Placement group(s) have not been scrubbed"
+        expr: "ceph_health_detail{name=\"PG_NOT_SCRUBBED\"} == 1"
+        for: "5m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPGsHighPerOSD"
+        annotations:
+          description: "The number of placement groups per OSD is too high (exceeds the mon_max_pg_per_osd setting).\n Check that the pg_autoscaler has not been disabled for any pools with 'ceph osd pool autoscale-status', and that the profile selected is appropriate. You may also adjust the target_size_ratio of a pool to guide the autoscaler based on the expected relative size of the pool ('ceph osd pool set cephfs.cephfs.meta target_size_ratio .1') or set the pg_autoscaler mode to 'warn' and adjust pg_num appropriately for one or more pools."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks/#too-many-pgs"
+          summary: "Placement groups per OSD is too high"
+        expr: "ceph_health_detail{name=\"TOO_MANY_PGS\"} == 1"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPGNotDeepScrubbed"
+        annotations:
+          description: "One or more PGs have not been deep scrubbed recently. Deep scrubs protect against bit-rot. They compare data replicas to ensure consistency. When PGs miss their deep scrub interval, it may indicate that the window is too small or PGs were not in a 'clean' state during the deep-scrub window."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-deep-scrubbed"
+          summary: "Placement group(s) have not been deep scrubbed"
+        expr: "ceph_health_detail{name=\"PG_NOT_DEEP_SCRUBBED\"} == 1"
+        for: "5m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "nodes"
     rules:
-      - alert: CephNodeRootFilesystemFull
-        expr: node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100 < 5
-        for: 5m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.8.1
-        annotations:
-          summary: Root filesystem is dangerously full
-          description: >
-            Root volume (OSD and MON store) is dangerously full: {{ $value | humanize }}% free.
-
-      # alert on nic packet errors and drops rates > 1% packets/s
-      - alert: CephNodeNetworkPacketDrops
+      - alert: "CephNodeRootFilesystemFull"
+        annotations:
+          description: "Root volume is dangerously full: {{ $value | humanize }}% free."
+          summary: "Root filesystem is dangerously full"
+        expr: "node_filesystem_avail_bytes{mountpoint=\"/\"} / node_filesystem_size_bytes{mountpoint=\"/\"} * 100 < 5"
+        for: "5m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.8.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephNodeNetworkPacketDrops"
+        annotations:
+          description: "Node {{ $labels.instance }} experiences packet drop > 0.5% or > 10 packets/s on interface {{ $labels.device }}."
+          summary: "One or more NICs reports packet drops"
         expr: |
           (
-            increase(node_network_receive_drop_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_drop_total{device!="lo"}[1m])
+            rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_drop_total{device!="lo"}[1m])
           ) / (
-            increase(node_network_receive_packets_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_packets_total{device!="lo"}[1m])
-          ) >= 0.0001 or (
-            increase(node_network_receive_drop_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_drop_total{device!="lo"}[1m])
+            rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_packets_total{device!="lo"}[1m])
+          ) >= 0.0050000000000000001 and (
+            rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_drop_total{device!="lo"}[1m])
           ) >= 10
         labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.8.2
+          oid: "1.3.6.1.4.1.50495.1.2.1.8.2"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephNodeNetworkPacketErrors"
         annotations:
-          summary: One or more Nics is seeing packet drops
-          description: >
-            Node {{ $labels.instance }} experiences packet drop > 0.01% or >
-            10 packets/s on interface {{ $labels.device }}.
-
-      - alert: CephNodeNetworkPacketErrors
+          description: "Node {{ $labels.instance }} experiences packet errors > 0.01% or > 10 packets/s on interface {{ $labels.device }}."
+          summary: "One or more NICs reports packet errors"
         expr: |
           (
-            increase(node_network_receive_errs_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_errs_total{device!="lo"}[1m])
+            rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_errs_total{device!="lo"}[1m])
           ) / (
-            increase(node_network_receive_packets_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_packets_total{device!="lo"}[1m])
+            rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_packets_total{device!="lo"}[1m])
           ) >= 0.0001 or (
-            increase(node_network_receive_errs_total{device!="lo"}[1m]) +
-            increase(node_network_transmit_errs_total{device!="lo"}[1m])
+            rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+            rate(node_network_transmit_errs_total{device!="lo"}[1m])
           ) >= 10
         labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.8.3
-        annotations:
-          summary: One or more Nics is seeing packet errors
-          description: >
-            Node {{ $labels.instance }} experiences packet errors > 0.01% or
-            > 10 packets/s on interface {{ $labels.device }}.
-
-      # Restrict to device names beginning with '/' to skip false alarms from
-      # tmpfs, overlay type filesystems
-      - alert: CephNodeDiskspaceWarning
-        expr: |
-          predict_linear(node_filesystem_free_bytes{device=~"/.*"}[2d], 3600 * 24 * 5) *
-          on(instance) group_left(nodename) node_uname_info < 0
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.8.4
-        annotations:
-          summary: Host filesystem freespace is getting low
-          description: >
-            Mountpoint {{ $labels.mountpoint }} on {{ $labels.nodename }}
-            will be full in less than 5 days assuming the average fill-up
-            rate of the past 48 hours.
-
-      - alert: CephNodeInconsistentMTU
-        expr: |
-          node_network_mtu_bytes * (node_network_up{device!="lo"} > 0) ==
-            scalar(
-              max by (device) (node_network_mtu_bytes * (node_network_up{device!="lo"} > 0)) !=
-                quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!="lo"} > 0))
-            )
-          or
-          node_network_mtu_bytes * (node_network_up{device!="lo"} > 0) ==
-            scalar(
-              min by (device) (node_network_mtu_bytes * (node_network_up{device!="lo"} > 0)) !=
-                quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!="lo"} > 0))
-            )
+          oid: "1.3.6.1.4.1.50495.1.2.1.8.3"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephNodeDiskspaceWarning"
+        annotations:
+          description: "Mountpoint {{ $labels.mountpoint }} on {{ $labels.nodename }} will be full in less than 5 days based on the 48 hour trailing fill rate."
+          summary: "Host filesystem free space is getting low"
+        expr: "predict_linear(node_filesystem_free_bytes{device=~\"/.*\"}[2d], 3600 * 24 * 5) *on(instance) group_left(nodename) node_uname_info < 0"
         labels:
-          severity: warning
-          type: ceph_default
+          oid: "1.3.6.1.4.1.50495.1.2.1.8.4"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephNodeInconsistentMTU"
         annotations:
-          summary: MTU settings across Ceph hosts are inconsistent
-          description: >
-            Node {{ $labels.instance }} has a different MTU size ({{ $value }})
-            than the median of devices named {{ $labels.device }}.
-
-  - name: pools
+          description: "Node {{ $labels.instance }} has a different MTU size ({{ $value }}) than the median of devices named {{ $labels.device }}."
+          summary: "MTU settings across Ceph hosts are inconsistent"
+        expr: "node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0) ==  scalar(    max by (device) (node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) !=      quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0))  )or node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0) ==  scalar(    min by (device) (node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) !=      quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0))  )"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "pools"
     rules:
-      - alert: CephPoolGrowthWarning
-        expr: |
-          (predict_linear(ceph_pool_percent_used[2d], 3600 * 24 * 5) * on(pool_id)
-              group_right ceph_pool_metadata) >= 95
-        labels:
-          severity: warning
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.9.2
-        annotations:
-          summary: Pool growth rate may soon exceed it's capacity
-          description: >
-            Pool '{{ $labels.name }}' will be full in less than 5 days
-            assuming the average fill-up rate of the past 48 hours.
-      - alert: CephPoolBackfillFull
-        expr: ceph_health_detail{name="POOL_BACKFILLFULL"} > 0
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          summary: Freespace in a pool is too low for recovery/rebalance
-          description: >
-            A pool is approaching it's near full threshold, which will
-            prevent rebalance operations from completing. You should
-            consider adding more capacity to the pool.
-
-      - alert: CephPoolFull
-        expr: ceph_health_detail{name="POOL_FULL"} > 0
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.9.1
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pool-full
-          summary: Pool is full - writes are blocked
-          description: |
-            A pool has reached it's MAX quota, or the OSDs supporting the pool
-            have reached their FULL threshold. Until this is resolved, writes to
-            the pool will be blocked.
-            Pool Breakdown (top 5)
-            {{- range query "topk(5, sort_desc(ceph_pool_percent_used * on(pool_id) group_right ceph_pool_metadata))" }}
-              - {{ .Labels.name }} at {{ .Value }}%
-            {{- end }}
-            Either increase the pools quota, or add capacity to the cluster first
-            then increase it's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)
-      - alert: CephPoolNearFull
-        expr: ceph_health_detail{name="POOL_NEAR_FULL"} > 0
-        for: 5m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          summary: One or more Ceph pools are getting full
-          description: |
-            A pool has exceeeded it warning (percent full) threshold, or the OSDs
-            supporting the pool have reached their NEARFULL thresholds. Writes may
-            continue, but you are at risk of the pool going read only if more capacity
-            isn't made available.
-
-            Determine the affected pool with 'ceph df detail', for example looking
-            at QUOTA BYTES and STORED. Either increase the pools quota, or add
-            capacity to the cluster first then increase it's quota
-            (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)
-  - name: healthchecks
+      - alert: "CephPoolGrowthWarning"
+        annotations:
+          description: "Pool '{{ $labels.name }}' will be full in less than 5 days assuming the average fill-up rate of the past 48 hours."
+          summary: "Pool growth rate may soon exceed capacity"
+        expr: "(predict_linear(ceph_pool_percent_used[2d], 3600 * 24 * 5) * on(pool_id)    group_right ceph_pool_metadata) >= 95"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.9.2"
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPoolBackfillFull"
+        annotations:
+          description: "A pool is approaching the near full threshold, which will prevent recovery/backfill operations from completing. Consider adding more capacity."
+          summary: "Free space in a pool is too low for recovery/backfill"
+        expr: "ceph_health_detail{name=\"POOL_BACKFILLFULL\"} > 0"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+      - alert: "CephPoolFull"
+        annotations:
+          description: "A pool has reached its MAX quota, or OSDs supporting the pool have reached the FULL threshold. Until this is resolved, writes to the pool will be blocked. Pool Breakdown (top 5) {{- range query \"topk(5, sort_desc(ceph_pool_percent_used * on(pool_id) group_right ceph_pool_metadata))\" }} - {{ .Labels.name }} at {{ .Value }}% {{- end }} Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pool-full"
+          summary: "Pool is full - writes are blocked"
+        expr: "ceph_health_detail{name=\"POOL_FULL\"} > 0"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.9.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephPoolNearFull"
+        annotations:
+          description: "A pool has exceeded the warning (percent full) threshold, or OSDs supporting the pool have reached the NEARFULL threshold. Writes may continue, but you are at risk of the pool going read-only if more capacity isn't made available. Determine the affected pool with 'ceph df detail', looking at QUOTA BYTES and STORED. Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>). Also ensure that the balancer is active."
+          summary: "One or more Ceph pools are nearly full"
+        expr: "ceph_health_detail{name=\"POOL_NEAR_FULL\"} > 0"
+        for: "5m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "healthchecks"
     rules:
-      - alert: CephSlowOps
-        expr: ceph_healthcheck_slow_ops > 0
-        for: 30s
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#slow-ops
-          summary: MON/OSD operations are slow to complete
-          description: >
-            {{ $value }} OSD requests are taking too long to process (osd_op_complaint_time exceeded)
-# cephadm alerts
-  - name: cephadm
+      - alert: "CephSlowOps"
+        annotations:
+          description: "{{ $value }} OSD requests are taking too long to process (osd_op_complaint_time exceeded)"
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#slow-ops"
+          summary: "OSD operations are slow to complete"
+        expr: "ceph_healthcheck_slow_ops > 0"
+        for: "30s"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "cephadm"
     rules:
-      - alert: CephadmUpgradeFailed
-        expr: ceph_health_detail{name="UPGRADE_EXCEPTION"} > 0
-        for: 30s
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.11.2
-        annotations:
-          summary: Ceph version upgrade has failed
-          description: >
-            The cephadm cluster upgrade process has failed. The cluster remains in
-            an undetermined state.
-
-            Please review the cephadm logs, to understand the nature of the issue
-      - alert: CephadmDaemonFailed
-        expr: ceph_health_detail{name="CEPHADM_FAILED_DAEMON"} > 0
-        for: 30s
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.11.1
-        annotations:
-          summary: A ceph daemon manged by cephadm is down
-          description: >
-            A daemon managed by cephadm is no longer active. Determine, which
-            daemon is down with 'ceph health detail'. you may start daemons with
-            the 'ceph orch daemon start <daemon_id>'
-      - alert: CephadmPaused
-        expr: ceph_health_detail{name="CEPHADM_PAUSED"} > 0
-        for: 1m
-        labels:
-          severity: warning
-          type: ceph_default
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/cephadm/operations#cephadm-paused
-          summary: Orchestration tasks via cephadm are PAUSED
-          description: >
-            Cluster management has been paused manually. This will prevent the
-            orchestrator from service management and reconciliation. If this is
-            not intentional, resume cephadm operations with 'ceph orch resume'
-
-# prometheus alerts
-  - name: PrometheusServer
+      - alert: "CephadmUpgradeFailed"
+        annotations:
+          description: "The cephadm cluster upgrade process has failed. The cluster remains in an undetermined state. Please review the cephadm logs, to understand the nature of the issue"
+          summary: "Ceph version upgrade has failed"
+        expr: "ceph_health_detail{name=\"UPGRADE_EXCEPTION\"} > 0"
+        for: "30s"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.11.2"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephadmDaemonFailed"
+        annotations:
+          description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'"
+          summary: "A ceph daemon manged by cephadm is down"
+        expr: "ceph_health_detail{name=\"CEPHADM_FAILED_DAEMON\"} > 0"
+        for: "30s"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.11.1"
+          severity: "critical"
+          type: "ceph_default"
+      - alert: "CephadmPaused"
+        annotations:
+          description: "Cluster management has been paused manually. This will prevent the orchestrator from service management and reconciliation. If this is not intentional, resume cephadm operations with 'ceph orch resume'"
+          documentation: "https://docs.ceph.com/en/latest/cephadm/operations#cephadm-paused"
+          summary: "Orchestration tasks via cephadm are PAUSED"
+        expr: "ceph_health_detail{name=\"CEPHADM_PAUSED\"} > 0"
+        for: "1m"
+        labels:
+          severity: "warning"
+          type: "ceph_default"
+  - name: "PrometheusServer"
     rules:
-      - alert: PrometheusJobMissing
-        expr: absent(up{job="ceph"})
-        for: 30s
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.12.1
+      - alert: "PrometheusJobMissing"
         annotations:
-          summary: The scrape job for Ceph is missing from Prometheus
-          description: |
-            The prometheus job that scrapes from Ceph is no longer defined, this
-            will effectively mean you'll have no metrics or alerts for the cluster.
-
-            Please review the job definitions in the prometheus.yml file of the prometheus
-            instance.
-# Object related events
-  - name: rados
-    rules:
-      - alert: CephObjectMissing
-        expr: (ceph_health_detail{name="OBJECT_UNFOUND"} == 1) * on() (count(ceph_osd_up == 1) == bool count(ceph_osd_metadata)) == 1
-        for: 30s
+          description: "The prometheus job that scrapes from Ceph is no longer defined, this will effectively mean you'll have no metrics or alerts for the cluster.  Please review the job definitions in the prometheus.yml file of the prometheus instance."
+          summary: "The scrape job for Ceph is missing from Prometheus"
+        expr: "absent(up{job=\"ceph\"})"
+        for: "30s"
         labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.10.1
-        annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#object-unfound
-          summary: Object(s) has been marked UNFOUND
-          description: |
-            A version of a RADOS object can not be found, even though all OSDs are up. I/O
-            requests for this object from clients will block (hang). Resolving this issue may
-            require the object to be rolled back to a prior version manually, and manually verified.
-# Generic
-  - name: generic
+          oid: "1.3.6.1.4.1.50495.1.2.1.12.1"
+          severity: "critical"
+          type: "ceph_default"
+  - name: "rados"
     rules:
-      - alert: CephDaemonCrash
-        expr: ceph_health_detail{name="RECENT_CRASH"} == 1
-        for: 1m
-        labels:
-          severity: critical
-          type: ceph_default
-          oid: 1.3.6.1.4.1.50495.1.2.1.1.2
+      - alert: "CephObjectMissing"
+        annotations:
+          description: "The latest version of a RADOS object can not be found, even though all OSDs are up. I/O requests for this object from clients will block (hang). Resolving this issue may require the object to be rolled back to a prior version manually, and manually verified."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#object-unfound"
+          summary: "Object(s) marked UNFOUND"
+        expr: "(ceph_health_detail{name=\"OBJECT_UNFOUND\"} == 1) * on() (count(ceph_osd_up == 1) == bool count(ceph_osd_metadata)) == 1"
+        for: "30s"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.10.1"
+          severity: "critical"
+          type: "ceph_default"
+  - name: "generic"
+    rules:
+      - alert: "CephDaemonCrash"
         annotations:
-          documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash
-          summary: One or more Ceph daemons have crashed, and are pending acknowledgement
-          description: |
-            One or more daemons have crashed recently, and need to be acknowledged. This notification
-            ensures that software crashes don't go unseen. To acknowledge a crash, use the
-            'ceph crash archive <id>' command.
+          description: "One or more daemons have crashed recently, and need to be acknowledged. This notification ensures that software crashes do not go unseen. To acknowledge a crash, use the 'ceph crash archive <id>' command."
+          documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash"
+          summary: "One or more Ceph daemons have crashed, and are pending acknowledgement"
+        expr: "ceph_health_detail{name=\"RECENT_CRASH\"} == 1"
+        for: "1m"
+        labels:
+          oid: "1.3.6.1.4.1.50495.1.2.1.1.2"
+          severity: "critical"
+          type: "ceph_default"
index fef0443a9ade5367fee901fa75c788ea539c53ef..87c53389200005b87ddf448c079cb11e4e3b4824 100755 (executable)
@@ -19,6 +19,10 @@ do
     done
 done
 
+jsonnet -J vendor -S alerts.jsonnet -o ${TEMPDIR}/prometheus_alerts.yml
+jsondiff --indent 2 "prometheus_alerts.yml" "${TEMPDIR}/prometheus_alerts.yml" \
+    | tee -a ${TEMPDIR}/json_difference.log
+
 err=0
 if [ $(wc -l < ${TEMPDIR}/json_difference.log) -eq 0 ]
 then
index 680082d8981607003fa3b4ab4efaba18edc49f3e..7b7e7db7301bddc9f0d55e2ca2b56198fb89652c 100644 (file)
@@ -26,10 +26,8 @@ tests:
           type: ceph_default
           severity: critical
         exp_annotations:
-          summary: Cluster is in an ERROR state
-          description: >
-            Ceph in HEALTH_ERROR state for more than 5 minutes.
-            Please check "ceph health detail" for more information.
+          summary: Ceph is in the ERROR state
+          description: The cluster state has been HEALTH_ERROR for more than 5 minutes. Please check 'ceph health detail' for more information.
 
  # health warning
  - interval: 5m
@@ -54,10 +52,8 @@ tests:
           type: ceph_default
           severity: warning
         exp_annotations:
-          summary: Cluster is in a WARNING state
-          description: >
-            Ceph has been in HEALTH_WARN for more than 15 minutes.
-            Please check "ceph health detail" for more information.
+          summary: Ceph is in the WARNING state
+          description: The cluster state has been HEALTH_WARN for more than 15 minutes. Please check 'ceph health detail' for more information.
 
  # 10% OSDs down
  - interval: 1m
@@ -105,11 +101,7 @@ tests:
            severity: critical
          exp_annotations:
            summary: More than 10% of OSDs are down
-           description: |
-             33.33% or 1 of 3 OSDs are down (>= 10%).
-
-             The following OSDs are down:
-               - osd.1 on ceph
+           description: "33.33% or 1 of 3 OSDs are down (>= 10%). The following OSDs are down: - osd.1 on ceph"
 
  # flapping OSD
  - interval: 1s
@@ -166,13 +158,8 @@ tests:
            type: ceph_default
          exp_annotations:
            documentation: https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd#flapping-osds
-           summary: Network issues are causing OSD's to flap (mark each other out)
-           description: >
-              OSD osd.0 on ceph was
-              marked down and back up at 20.1 times once a minute for 5 minutes.
-              This could indicate a network issue (latency, packet drop, disruption)
-              on the clusters "cluster network". Check the network environment on the
-              listed host(s).
+           summary: Network issues are causing OSDs to flap (mark each other down)
+           description: "OSD osd.0 on ceph was marked down and back up 20.1 times once a minute for 5 minutes. This may indicate a network issue (latency, packet loss, MTU mismatch) on the cluster network, or the public network if no cluster network is deployed. Check the network stats on the listed host(s)."
 
  # high pg count deviation
  - interval: 1m
@@ -244,10 +231,8 @@ tests:
            severity: warning
            type: ceph_default
          exp_annotations:
-           summary: PG allocations are not balanced across devices
-           description: >
-              OSD osd.1 on ceph deviates
-              by more than 30% from average PG count.
+           summary: PGs are not balanced across OSDs
+           description: "OSD osd.1 on ceph deviates by more than 30% from average PG count."
 
  # pgs inactive
  - interval: 1m
@@ -295,12 +280,8 @@ tests:
            severity: critical
            type: ceph_default
          exp_annotations:
-           summary: One or more Placement Groups are inactive
-           description: >
-              1 PGs have been inactive for more than 5 minutes in pool
-              device_health_metrics.
-              Inactive placement groups aren't able to serve read/write
-              requests.
+           summary: One or more placement groups are inactive
+           description: "1 PGs have been inactive for more than 5 minutes in pool device_health_metrics. Inactive placement groups are not able to serve read/write requests."
 
  #pgs unclean
  - interval: 1m
@@ -351,12 +332,8 @@ tests:
            severity: warning
            type: ceph_default
          exp_annotations:
-           summary: One or more platcment groups are marked unclean
-           description: >
-              1 PGs haven't been clean for more than 15 minutes in pool
-              device_health_metrics.
-              Unclean PGs haven't been able to completely recover from a
-              previous failure.
+           summary: One or more placement groups are marked unclean
+           description: "1 PGs have been unclean for more than 15 minutes in pool device_health_metrics. Unclean PGs have not recovered from a previous failure."
 
  # root volume full
  - interval: 1m
@@ -395,36 +372,41 @@ tests:
            type: ceph_default
          exp_annotations:
            summary: Root filesystem is dangerously full
-           description: >
-             Root volume (OSD and MON store) is dangerously full: 4.811% free.
+           description: "Root volume is dangerously full: 4.811% free."
 
  # network packets dropped
- - interval: 1s
+ - interval: 1m
    input_series:
     - series: 'node_network_receive_drop_total{device="eth0",
       instance="node-exporter",job="node-exporter"}'
-      values: '1+1x500'
+      values: '0+600x10'
     - series: 'node_network_transmit_drop_total{device="eth0",
       instance="node-exporter",job="node-exporter"}'
-      values: '1+1x500'
+      values: '0+600x10'
+    - series: 'node_network_receive_packets_total{device="eth0",
+      instance="node-exporter",job="node-exporter"}'
+      values: '0+750x10'
+    - series: 'node_network_transmit_packets_total{device="eth0",
+      instance="node-exporter",job="node-exporter"}'
+      values: '0+750x10'
    promql_expr_test:
      - expr: |
          (
-           increase(node_network_receive_drop_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_drop_total{device!="lo"}[1m])
+           rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_drop_total{device!="lo"}[1m])
          ) / (
-           increase(node_network_receive_packets_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_packets_total{device!="lo"}[1m])
-         ) >= 0.0001 or (
-           increase(node_network_receive_drop_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_drop_total{device!="lo"}[1m])
+           rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_packets_total{device!="lo"}[1m])
+         ) >= 0.0050000000000000001 and (
+           rate(node_network_receive_drop_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_drop_total{device!="lo"}[1m])
          ) >= 10
 
        eval_time: 5m
        exp_samples:
          - labels: '{device="eth0", instance="node-exporter",
            job="node-exporter"}'
-           value: 1.2E+02
+           value: 8E-1
    alert_rule_test:
      - eval_time: 5m
        alertname: CephNodeNetworkPacketDrops
@@ -437,38 +419,42 @@ tests:
            severity: warning
            type: ceph_default
          exp_annotations:
-           summary: One or more Nics is seeing packet drops
-           description: >
-             Node node-exporter experiences packet drop > 0.01% or >
-             10 packets/s on interface eth0.
+           summary: One or more NICs reports packet drops
+           description: "Node node-exporter experiences packet drop > 0.5% or > 10 packets/s on interface eth0."
 
  # network packets errors
- - interval: 1s
+ - interval: 1m
    input_series:
     - series: 'node_network_receive_errs_total{device="eth0",
       instance="node-exporter",job="node-exporter"}'
-      values: '1+1x500'
+      values: '0+600x10'
     - series: 'node_network_transmit_errs_total{device="eth0",
       instance="node-exporter",job="node-exporter"}'
-      values: '1+1x500'
+      values: '0+600x10'
+    - series: 'node_network_transmit_packets_total{device="eth0",
+      instance="node-exporter",job="node-exporter"}'
+      values: '0+750x10'
+    - series: 'node_network_receive_packets_total{device="eth0",
+      instance="node-exporter",job="node-exporter"}'
+      values: '0+750x10'
    promql_expr_test:
      - expr: |
          (
-           increase(node_network_receive_errs_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_errs_total{device!="lo"}[1m])
+           rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_errs_total{device!="lo"}[1m])
          ) / (
-           increase(node_network_receive_packets_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_packets_total{device!="lo"}[1m])
+           rate(node_network_receive_packets_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_packets_total{device!="lo"}[1m])
          ) >= 0.0001 or (
-           increase(node_network_receive_errs_total{device!="lo"}[1m]) +
-           increase(node_network_transmit_errs_total{device!="lo"}[1m])
+           rate(node_network_receive_errs_total{device!="lo"}[1m]) +
+           rate(node_network_transmit_errs_total{device!="lo"}[1m])
          ) >= 10
 
        eval_time: 5m
        exp_samples:
          - labels: '{device="eth0", instance="node-exporter",
            job="node-exporter"}'
-           value: 1.2E+02
+           value: 8E-01
    alert_rule_test:
      - eval_time: 5m
        alertname: CephNodeNetworkPacketErrors
@@ -480,11 +466,9 @@ tests:
            oid: 1.3.6.1.4.1.50495.1.2.1.8.3
            severity: warning
            type: ceph_default
-         exp_annotations:
-           summary: One or more Nics is seeing packet errors
-           description: >
-             Node node-exporter experiences packet errors > 0.01% or > 10
-             packets/s on interface eth0.
+         exp_annotations: 
+           summary: One or more NICs reports packet errors
+           description: "Node node-exporter experiences packet errors > 0.01% or > 10 packets/s on interface eth0."
 
 # Node Storage disk space filling up
  - interval: 1m
@@ -523,11 +507,8 @@ tests:
            mountpoint: /rootfs
            nodename: node-1.unittests.com
          exp_annotations:
-           summary: Host filesystem freespace is getting low
-           description: >
-             Mountpoint /rootfs on node-1.unittests.com
-             will be full in less than 5 days assuming the average fill-up
-             rate of the past 48 hours.
+           summary: Host filesystem free space is getting low
+           description: "Mountpoint /rootfs on node-1.unittests.com will be full in less than 5 days based on the 48 hour trailing fill rate."
  # MTU Mismatch
  - interval: 1m
    input_series:
@@ -604,9 +585,7 @@ tests:
            type: ceph_default
          exp_annotations:
            summary: MTU settings across Ceph hosts are inconsistent
-           description: >
-               Node hostname1 has a different MTU size (2200)
-               than the median of devices named eth4.
+           description: "Node hostname1 has a different MTU size (2200) than the median of devices named eth4."
        - exp_labels:
            device: eth4
            instance: node-exporter
@@ -615,9 +594,7 @@ tests:
            type: ceph_default
          exp_annotations:
            summary: MTU settings across Ceph hosts are inconsistent
-           description: >
-               Node node-exporter has a different MTU size (9000)
-               than the median of devices named eth4.
+           description: "Node node-exporter has a different MTU size (9000) than the median of devices named eth4."
 
  # pool full, data series has 6 but using topk(5) so to ensure the
  # results are working as expected
@@ -675,18 +652,7 @@ tests:
          exp_annotations:
            documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pool-full
            summary: Pool is full - writes are blocked
-           description: |
-             A pool has reached it's MAX quota, or the OSDs supporting the pool
-             have reached their FULL threshold. Until this is resolved, writes to
-             the pool will be blocked.
-             Pool Breakdown (top 5)
-               - rbd at 96%
-               - iscsi at 90%
-               - default.rgw.index at 72%
-               - cephfs_data at 32%
-               - default.rgw.log at 19%
-             Either increase the pools quota, or add capacity to the cluster first
-             then increase it's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)
+           description: "A pool has reached its MAX quota, or OSDs supporting the pool have reached the FULL threshold. Until this is resolved, writes to the pool will be blocked. Pool Breakdown (top 5) - rbd at 96% - iscsi at 90% - default.rgw.index at 72% - cephfs_data at 32% - default.rgw.log at 19% Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)"
  # slow OSD ops
  - interval : 1m
    input_series:
@@ -710,10 +676,8 @@ tests:
            type: ceph_default
          exp_annotations:
            documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#slow-ops
-           summary: MON/OSD operations are slow to complete
-           description: >
-             1 OSD requests are taking too long to process
-             (osd_op_complaint_time exceeded)
+           summary: OSD operations are slow to complete
+           description: "1 OSD requests are taking too long to process (osd_op_complaint_time exceeded)"
 
 # CEPHADM orchestrator alert triggers
  - interval: 30s
@@ -739,11 +703,7 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.11.2
         exp_annotations:
           summary: Ceph version upgrade has failed
-          description: >
-            The cephadm cluster upgrade process has failed. The cluster remains in
-            an undetermined state.
-
-            Please review the cephadm logs, to understand the nature of the issue
+          description: "The cephadm cluster upgrade process has failed. The cluster remains in an undetermined state. Please review the cephadm logs, to understand the nature of the issue"
  - interval: 30s
    input_series:
     - series: 'ceph_health_detail{name="CEPHADM_FAILED_DAEMON"}'
@@ -767,10 +727,7 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.11.1
         exp_annotations:
           summary: A ceph daemon manged by cephadm is down
-          description: >
-            A daemon managed by cephadm is no longer active. Determine, which
-            daemon is down with 'ceph health detail'. you may start daemons with
-            the 'ceph orch daemon start <daemon_id>'
+          description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="CEPHADM_PAUSED"}'
@@ -794,10 +751,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephadm/operations#cephadm-paused
           summary: Orchestration tasks via cephadm are PAUSED
-          description: >
-            Cluster management has been paused manually. This will prevent the
-            orchestrator from service management and reconciliation. If this is
-            not intentional, resume cephadm operations with 'ceph orch resume'
+          description: "Cluster management has been paused manually. This will prevent the orchestrator from service management and reconciliation. If this is not intentional, resume cephadm operations with 'ceph orch resume'"
 # MDS
  - interval: 1m
    input_series:
@@ -822,13 +776,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.5.1
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages
-          summary: Ceph filesystem is damaged.
-          description: >
-            The filesystems metadata has been corrupted. Data access
-            may be blocked.
-
-            Either analyse the output from the mds daemon admin socket, or
-            escalate to support
+          summary: CephFS filesystem is damaged.
+          description: "Filesystem metadata has been corrupted. Data may be inaccessible. Analyze metrics from the MDS daemon admin socket, or escalate to support."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MDS_HEALTH_READ_ONLY"}'
@@ -852,13 +801,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.5.2
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages#cephfs-health-messages
-          summary: Ceph filesystem in read only mode, due to write error(s)
-          description: >
-            The filesystem has switched to READ ONLY due to an unexpected
-            write error, when writing to the metadata pool
-
-            Either analyse the output from the mds daemon admin socket, or
-            escalate to support
+          summary: CephFS filesystem in read only mode due to write error(s)
+          description: "The filesystem has switched to READ ONLY due to an unexpected error when writing to the metadata pool. Either analyze the output from the MDS daemon admin socket, or escalate to support."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MDS_ALL_DOWN"}'
@@ -882,10 +826,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.5.3
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-all-down
-          summary: Ceph filesystem is offline
-          description: >
-            All MDS ranks are unavailable. The ceph daemons providing the metadata
-            for the Ceph filesystem are all down, rendering the filesystem offline.
+          summary: CephFS filesystem is offline
+          description: "All MDS ranks are unavailable. The MDS daemons managing metadata are down, rendering the filesystem offline."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="FS_DEGRADED"}'
@@ -909,11 +851,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.5.4
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-degraded
-          summary: Ceph filesystem is degraded
-          description: >
-            One or more metadata daemons (MDS ranks) are failed or in a
-            damaged state. At best the filesystem is partially available,
-            worst case is the filesystem is completely unusable.
+          summary: CephFS filesystem is degraded
+          description: "One or more metadata daemons (MDS ranks) are failed or in a damaged state. At best the filesystem is partially available, at worst the filesystem is completely unusable."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MDS_INSUFFICIENT_STANDBY"}'
@@ -936,11 +875,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-insufficient-standby
-          summary: Ceph filesystem standby daemons too low
-          description: >
-            The minimum number of standby daemons determined by standby_count_wanted
-            is less than the actual number of standby daemons. Adjust the standby count
-            or increase the number of mds daemons within the filesystem.
+          summary: Ceph filesystem standby daemons too few
+          description: "The minimum number of standby daemons required by standby_count_wanted is less than the current number of standby daemons. Adjust the standby count or increase the number of MDS daemons."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="FS_WITH_FAILED_MDS"}'
@@ -964,11 +900,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.5.5
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#fs-with-failed-mds
-          summary: Ceph MDS daemon failed, no further standby available
-          description: >
-            An MDS daemon has failed, leaving only one active rank without
-            further standby. Investigate the cause of the failure or add a
-            standby daemon
+          summary: MDS daemon failed, no further standby available
+          description: "An MDS daemon has failed, leaving only one active rank and no available standby. Investigate the cause of the failure or add a standby MDS."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MDS_UP_LESS_THAN_MAX"}'
@@ -992,10 +925,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/cephfs/health-messages/#mds-up-less-than-max
           summary: Ceph MDS daemon count is lower than configured
-          description: >
-            The filesystem's "max_mds" setting defined the number of MDS ranks in
-            the filesystem. The current number of active MDS daemons is less than
-            this setting.
+          description: "The filesystem's 'max_mds' setting defines the number of MDS ranks in the filesystem. The current number of active MDS daemons is less than this value."
 # MGR
  - interval: 1m
    input_series:
@@ -1020,16 +950,8 @@ tests:
           type: ceph_default
           oid: 1.3.6.1.4.1.50495.1.2.1.6.2
         exp_annotations:
-          summary: Ceph's mgr/prometheus module is not available
-          description: >
-            The mgr/prometheus module at ceph-mgr:9283 is unreachable. This
-            could mean that the module has been disabled or the mgr itself is down.
-
-            Without the mgr/prometheus module metrics and alerts will no longer
-            function. Open a shell to ceph and use 'ceph -s' to to determine whether the
-            mgr is active. If the mgr is not active, restart it, otherwise you can check
-            the mgr/prometheus module is loaded with 'ceph mgr module ls'  and if it's
-            not listed as enabled, enable it with 'ceph mgr module enable prometheus'
+          summary: The mgr/prometheus module is not available
+          description: "The mgr/prometheus module at ceph-mgr:9283 is unreachable. This could mean that the module has been disabled or the mgr daemon itself is down. Without the mgr/prometheus module metrics and alerts will no longer function. Open a shell to an admin node or toolbox pod and use 'ceph -s' to to determine whether the mgr is active. If the mgr is not active, restart it, otherwise you can determine module status with 'ceph mgr module ls'. If it is not listed as enabled, enable it with 'ceph mgr module enable prometheus'."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="RECENT_MGR_MODULE_CRASH"}'
@@ -1053,11 +975,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.6.1
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#recent-mgr-module-crash
-          summary: A mgr module has recently crashed
-          description: >
-            One or more mgr modules have crashed and are yet to be acknowledged by the administrator. A
-            crashed module may impact functionality within the cluster. Use the 'ceph crash' commands to
-            investigate which module has failed, and archive it to acknowledge the failure.
+          summary: A manager module has recently crashed
+          description: "One or more mgr modules have crashed and have yet to be acknowledged by an administrator. A crashed module may impact functionality within the cluster. Use the 'ceph crash' command to determine which module has failed, and archive it to acknowledge the failure."
 # MON
  - interval: 1m
    input_series:
@@ -1084,12 +1003,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.3.2
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-crit
-          summary: Disk space on at least one monitor is critically low
-          description: |
-            The free space available to a monitor's store is critically low (<5% by default).
-            You should increase the space available to the monitor(s). The
-            default location for the store sits under /var/lib/ceph. Your monitor hosts are;
-              - ceph-mon-a
+          summary: Filesystem space on at least one monitor is critically low
+          description: "The free space available to a monitor's store is critically low. You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*. Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; - ceph-mon-a"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MON_DISK_LOW"}'
@@ -1114,12 +1029,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-disk-low
-          summary: Disk space on at least one monitor is approaching full
-          description: |
-            The space available to a monitor's store is approaching full (>70% is the default).
-            You should increase the space available to the monitor store. The
-            default location for the store sits under /var/lib/ceph. Your monitor hosts are;
-              - ceph-mon-a
+          summary: Drive space on at least one monitor is approaching full
+          description: "The space available to a monitor's store is approaching full (>70% is the default). You should increase the space available to the monitor(s). The default directory is /var/lib/ceph/mon-*/data/store.db on traditional deployments, and /var/lib/rook/mon-*/data/store.db on the mon pod's worker node for Rook. Look for old, rotated versions of *.log and MANIFEST*.  Do NOT touch any *.sst files. Also check any other directories under /var/lib/rook and other directories on the same filesystem, often /var/log and /var/tmp are culprits. Your monitor hosts are; - ceph-mon-a"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="MON_CLOCK_SKEW"}'
@@ -1142,14 +1053,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-clock-skew
-          summary: Clock skew across the Monitor hosts detected
-          description: |
-            The ceph monitors rely on a consistent time reference to maintain
-            quorum and cluster consistency. This event indicates that at least
-            one of your mons is not sync'd correctly.
-
-            Review the cluster status with ceph -s. This will show which monitors
-            are affected. Check the time sync status on each monitor host.
+          summary: Clock skew detected among monitors
+          description: "Ceph monitors rely on closely synchronized time to maintain quorum and cluster consistency. This event indicates that the time on at least one mon has drifted too far from the lead mon. Review cluster status with ceph -s. This will show which monitors are affected. Check the time sync status on each monitor host with 'ceph time-sync-status' and the state and peers of your ntpd or chrony daemon."
 
 # Check 3 mons one down, quorum at risk
  - interval: 1m
@@ -1188,12 +1093,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down
           summary: Monitor quorum is at risk
-          description: |
-            Quorum requires a majority of monitors (x 2) to be active
-            Without quorum the cluster will become inoperable, affecting all connected clients and services.
-
-            The following monitors are down:
-              - mon.c on ceph-mon-3
+          description: "Quorum requires a majority of monitors (x 2) to be active. Without quorum the cluster will become inoperable, affecting all services and connected clients. The following monitors are down: - mon.c on ceph-mon-3"
 # check 5 mons, 1 down - warning only
  - interval: 1m
    input_series:
@@ -1234,13 +1134,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#mon-down
-          summary: One of more ceph monitors are down
-          description: |
-            You have 1 monitor down.
-            Quorum is still intact, but the loss of further monitors will make your cluster inoperable.
-
-            The following monitors are down:
-              - mon.e on ceph-mon-5
+          summary: One or more monitors down
+          description: "You have 1 monitor down. Quorum is still intact, but the loss of an additional monitor will make your cluster inoperable.  The following monitors are down:   - mon.e on ceph-mon-5\n"
 # Device Health
  - interval: 1m
    input_series:
@@ -1264,14 +1159,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#id2
-          summary: Device(s) have been predicted to fail soon
-          description: |
-            The device health module has determined that one or more devices will fail
-            soon. To review the device states use 'ceph device ls'. To show a specific
-            device use 'ceph device info <dev id>'.
-
-            Mark the OSD as out (so data may migrate to other OSDs in the cluster). Once
-            the osd is empty remove and replace the OSD.
+          summary: Device(s) predicted to fail soon
+          description: "The device health module has determined that one or more devices will fail soon. To review device status use 'ceph device ls'. To show a specific device use 'ceph device info <dev id>'. Mark the OSD out so that data may migrate to other OSDs. Once the OSD has drained, destroy the OSD, replace the device, and redeploy the OSD."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="DEVICE_HEALTH_TOOMANY"}'
@@ -1295,12 +1184,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.4.7
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany
-          summary: Too many devices have been predicted to fail, unable to resolve
-          description: |
-            The device health module has determined that the number of devices predicted to
-            fail can not be remediated automatically, since it would take too many osd's out of
-            the cluster, impacting performance and potentially availabililty. You should add new
-            OSDs to the cluster to allow data to be relocated to avoid the data integrity issues.
+          summary: Too many devices are predicted to fail, unable to resolve
+          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availabililty. Prevent data integrity issues by adding new OSDs so that data may be relocated."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="DEVICE_HEALTH_IN_USE"}'
@@ -1323,15 +1208,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-in-use
-          summary: A device failure is predicted, but unable to relocate data
-          description: |
-            The device health module has determined that one or more devices will fail
-            soon, but the normal process of relocating the data on the device to other
-            OSDs in the cluster is blocked.
-
-            Check the the cluster has available freespace. It may be necessary to add
-            more disks to the cluster to allow the data from the failing device to
-            successfully migrate.
+          summary: Device failure is predicted, but unable to relocate data
+          description: "The device health module has determined that one or more devices will fail soon, but the normal process of relocating the data on the device to other OSDs in the cluster is blocked. \nEnsure that the cluster has available free space. It may be necessary to add capacity to the cluster to allow data from the failing device to successfully migrate, or to enable the balancer."
 # OSD
  - interval: 1m
    input_series:
@@ -1360,9 +1238,7 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.4.8
         exp_annotations:
           summary: An OSD host is offline
-          description: |
-            The following OSDs are down:
-            - ceph-osd-1 : osd.0
+          description: "The following OSDs are down: - ceph-osd-1 : osd.0"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_SLOW_PING_TIME_FRONT"}'
@@ -1385,9 +1261,7 @@ tests:
           type: ceph_default
         exp_annotations:
           summary: Network issues delaying OSD heartbeats (public network)
-          description: |
-            OSD heartbeats on the cluster's 'public' network (frontend) are running slow. Investigate the network
-            for any latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs.
+          description: "OSD heartbeats on the cluster's 'public' network (frontend) are running slow. Investigate the network for latency or loss issues. Use 'ceph health detail' to show the affected OSDs."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_SLOW_PING_TIME_BACK"}'
@@ -1410,9 +1284,7 @@ tests:
           type: ceph_default
         exp_annotations:
           summary: Network issues delaying OSD heartbeats (cluster network)
-          description: |
-            OSD heartbeats on the cluster's 'cluster' network (backend) are running slow. Investigate the network
-            for any latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs.
+          description: "OSD heartbeats on the cluster's 'cluster' network (backend) are slow. Investigate the network for latency issues on this subnet. Use 'ceph health detail' to show the affected OSDs."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="BLUESTORE_DISK_SIZE_MISMATCH"}'
@@ -1436,9 +1308,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-disk-size-mismatch
           summary: OSD size inconsistency error
-          description: |
-            One or more OSDs have an internal inconsistency between the size of the physical device and it's metadata.
-            This could lead to the OSD(s) crashing in future. You should redeploy the effected OSDs.
+          description: "One or more OSDs have an internal inconsistency between metadata and the size of the device. This could lead to the OSD(s) crashing in future. You should redeploy the affected OSDs."
  - interval: 30s
    input_series:
     - series: 'ceph_health_detail{name="BLUESTORE_SPURIOUS_READ_ERRORS"}'
@@ -1462,9 +1332,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#bluestore-spurious-read-errors
           summary: Device read errors detected
-          description: >
-            An OSD has encountered read errors, but the OSD has recovered by retrying
-            the reads. This may indicate an issue with the Hardware or Kernel.
+          description: "An OSD has encountered read errors, but the OSD has recovered by retrying the reads. This may indicate an issue with hardware or the kernel."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_DOWN"}'
@@ -1500,12 +1368,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.4.2
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-down
-          summary: An OSD has been marked down/unavailable
-          description: |
-            1 OSD down for over 5mins.
-
-            The following OSD is down:
-              - osd.1 on ceph-osd-2
+          summary: An OSD has been marked down
+          description: "1 OSD down for over 5mins. The following OSD is down: - osd.1 on ceph-osd-2\n"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_NEARFULL"}'
@@ -1530,11 +1394,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-nearfull
           summary: OSD(s) running low on free space (NEARFULL)
-          description: |
-            One or more OSDs have reached their NEARFULL threshold
-
-            Use 'ceph health detail' to identify which OSDs have reached this threshold.
-            To resolve, either add capacity to the cluster, or delete unwanted data
+          description: One or more OSDs have reached the NEARFULL threshold. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_FULL"}'
@@ -1558,12 +1418,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.4.6
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-full
-          summary: OSD(s) is full, writes blocked
-          description: |
-            An OSD has reached it's full threshold. Writes from all pools that share the
-            affected OSD will be blocked.
-
-            To resolve, either add capacity to the cluster, or delete unwanted data
+          summary: OSD full, writes blocked
+          description: An OSD has reached the FULL threshold. Writes to pools that share the affected OSD will be blocked. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="OSD_BACKFILLFULL"}'
@@ -1587,11 +1443,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-backfillfull
           summary: OSD(s) too full for backfill operations
-          description: |
-            An OSD has reached it's BACKFILL FULL threshold. This will prevent rebalance operations
-            completing for some pools. Check the current capacity utilisation with 'ceph df'
-
-            To resolve, either add capacity to the cluster, or delete unwanted data
+          description: "An OSD has reached the BACKFILL FULL threshold. This will prevent rebalance operations from completing. Use 'ceph health detail' and 'ceph osd df' to identify the problem. To resolve, add capacity to the affected OSD's failure domain, restore down/out OSDs, or delete unwanted data."
  - interval: 30s
    input_series:
     - series: 'ceph_health_detail{name="OSD_TOO_MANY_REPAIRS"}'
@@ -1614,10 +1466,8 @@ tests:
           type: ceph_default
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#osd-too-many-repairs
-          summary: OSD has hit a high number of read errors
-          description: |
-            Reads from an OSD have used a secondary PG to return data to the client, indicating
-            a potential failing disk.
+          summary: OSD reports a high number of read errors
+          description: Reads from an OSD have used a secondary PG to return data to the client, indicating a potential failing drive.
 # Pools
    # trigger percent full prediction on pools 1 and 2 only
  - interval: 12h
@@ -1649,10 +1499,8 @@ tests:
           type: ceph_default
           oid: 1.3.6.1.4.1.50495.1.2.1.9.2
         exp_annotations:
-          summary: Pool growth rate may soon exceed it's capacity
-          description: >
-            Pool 'rbd' will be full in less than 5 days
-            assuming the average fill-up rate of the past 48 hours.
+          summary: Pool growth rate may soon exceed capacity
+          description: Pool 'rbd' will be full in less than 5 days assuming the average fill-up rate of the past 48 hours.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="POOL_BACKFILLFULL"}'
@@ -1674,11 +1522,8 @@ tests:
           severity: warning
           type: ceph_default
         exp_annotations:
-          summary: Freespace in a pool is too low for recovery/rebalance
-          description: >
-            A pool is approaching it's near full threshold, which will
-            prevent rebalance operations from completing. You should
-            consider adding more capacity to the pool.
+          summary: Free space in a pool is too low for recovery/backfill
+          description: A pool is approaching the near full threshold, which will prevent recovery/backfill operations from completing. Consider adding more capacity.
 
  - interval: 1m
    input_series:
@@ -1701,17 +1546,8 @@ tests:
           severity: warning
           type: ceph_default
         exp_annotations:
-          summary: One or more Ceph pools are getting full
-          description: |
-            A pool has exceeeded it warning (percent full) threshold, or the OSDs
-            supporting the pool have reached their NEARFULL thresholds. Writes may
-            continue, but you are at risk of the pool going read only if more capacity
-            isn't made available.
-
-            Determine the affected pool with 'ceph df detail', for example looking
-            at QUOTA BYTES and STORED. Either increase the pools quota, or add
-            capacity to the cluster first then increase it's quota
-            (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>)
+          summary: One or more Ceph pools are nearly full
+          description: "A pool has exceeded the warning (percent full) threshold, or OSDs supporting the pool have reached the NEARFULL threshold. Writes may continue, but you are at risk of the pool going read-only if more capacity isn't made available. Determine the affected pool with 'ceph df detail', looking at QUOTA BYTES and STORED. Increase the pool's quota, or add capacity to the cluster first then increase the pool's quota (e.g. ceph osd pool set quota <pool_name> max_bytes <bytes>). Also ensure that the balancer is active."
 
 # PGs
  - interval: 1m
@@ -1737,14 +1573,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-scrubbed
           summary: Placement group(s) have not been scrubbed
-          description: |
-            One or more PGs have not been scrubbed recently. The scrub process is a data integrity
-            feature, protectng against bit-rot. It checks that objects and their metadata (size and
-            attributes) match across object replicas. When PGs miss their scrub window, it may
-            indicate the scrub window is too small, or PGs were not in a 'clean' state during the
-            scrub window.
-
-            You can manually initiate a scrub with: ceph pg scrub <pgid>
+          description: "One or more PGs have not been scrubbed recently. Scrubs check metadata integrity, protecting against bit-rot. They check that metadata is consistent across data replicas. When PGs miss their scrub interval, it may indicate that the scrub window is too small, or PGs were not in a 'clean' state during the scrub window. You can manually initiate a scrub with: ceph pg scrub <pgid>"
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="PG_DAMAGED"}'
@@ -1769,13 +1598,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-damaged
           summary: Placement group damaged, manual intervention needed
-          description: >
-            During data consistency checks (scrub), at least one PG has been flagged as being
-            damaged or inconsistent.
-
-            Check to see which PG is affected, and attempt a manual repair if necessary. To list
-            problematic placement groups, use 'rados list-inconsistent-pg <pool>'. To repair PGs use
-            the 'ceph pg repair <pg_num>' command.
+          description: During data consistency checks (scrub), at least one PG has been flagged as being damaged or inconsistent. Check to see which PG is affected, and attempt a manual repair if necessary. To list problematic placement groups, use 'rados list-inconsistent-pg <pool>'. To repair PGs use the 'ceph pg repair <pg_num>' command.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="TOO_MANY_PGS"}'
@@ -1799,13 +1622,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks/#too-many-pgs
           summary: Placement groups per OSD is too high
-          description: |
-            The number of placement groups per OSD is too high (exceeds the mon_max_pg_per_osd setting).
-
-            Check that the pg_autoscaler hasn't been disabled for any of the pools, with 'ceph osd pool autoscale-status'
-            and that the profile selected is appropriate. You may also adjust the target_size_ratio of a pool to guide
-            the autoscaler based on the expected relative size of the pool
-            (i.e. 'ceph osd pool set cephfs.cephfs.meta target_size_ratio .1')
+          description: "The number of placement groups per OSD is too high (exceeds the mon_max_pg_per_osd setting).\n Check that the pg_autoscaler has not been disabled for any pools with 'ceph osd pool autoscale-status', and that the profile selected is appropriate. You may also adjust the target_size_ratio of a pool to guide the autoscaler based on the expected relative size of the pool ('ceph osd pool set cephfs.cephfs.meta target_size_ratio .1') or set the pg_autoscaler mode to 'warn' and adjust pg_num appropriately for one or more pools."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="PG_RECOVERY_FULL"}'
@@ -1829,10 +1646,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.7.5
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-recovery-full
-          summary: OSDs are too full for automatic recovery
-          description: >
-            Data redundancy may be reduced, or is at risk, since one or more OSDs are at or above their
-            'full' threshold. Add more capacity to the cluster, or delete unwanted data.
+          summary: OSDs are too full for recovery
+          description: Data redundancy is at risk since one or more OSDs are at or above the 'full' threshold. Add more capacity to the cluster, restore down/out OSDs, or delete unwanted data.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="PG_BACKFILL_FULL"}'
@@ -1856,10 +1671,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.7.6
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-backfill-full
-          summary: Backfill operations are blocked, due to lack of freespace
-          description: >
-            Data redundancy may be at risk due to lack of free space within the cluster. One or more OSDs
-            have breached their 'backfillfull' threshold. Add more capacity, or delete unwanted data.
+          summary: Backfill operations are blocked due to lack of free space
+          description: Data redundancy may be at risk due to lack of free space within the cluster. One or more OSDs have reached the 'backfillfull' threshold. Add more capacity, or delete unwanted data.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="PG_AVAILABILITY"}'
@@ -1891,10 +1704,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.7.3
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-availability
-          summary: Placement group is unavailable, blocking some I/O
-          description: >
-            Data availability is reduced impacting the clusters ability to service I/O to some data. One or
-            more placement groups (PGs) are in a state that blocks IO.
+          summary: PG is unavailable, blocking I/O
+          description: Data availability is reduced, impacting the cluster's ability to service I/O. One or more placement groups (PGs) are in a state that blocks I/O.
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="PG_NOT_DEEP_SCRUBBED"}'
@@ -1918,14 +1729,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-not-deep-scrubbed
           summary: Placement group(s) have not been deep scrubbed
-          description: |
-            One or more PGs have not been deep scrubbed recently. Deep scrub is a data integrity
-            feature, protectng against bit-rot. It compares the contents of objects and their
-            replicas for inconsistency. When PGs miss their deep scrub window, it may indicate
-            that the window is too small or PGs were not in a 'clean' state during the deep-scrub
-            window.
-
-            You can manually initiate a deep scrub with: ceph pg deep-scrub <pgid>
+          description: One or more PGs have not been deep scrubbed recently. Deep scrubs protect against bit-rot. They compare data replicas to ensure consistency. When PGs miss their deep scrub interval, it may indicate that the window is too small or PGs were not in a 'clean' state during the deep-scrub window.
 
 # Prometheus
  - interval: 1m
@@ -1949,12 +1753,7 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.12.1
         exp_annotations:
           summary: The scrape job for Ceph is missing from Prometheus
-          description: |
-            The prometheus job that scrapes from Ceph is no longer defined, this
-            will effectively mean you'll have no metrics or alerts for the cluster.
-
-            Please review the job definitions in the prometheus.yml file of the prometheus
-            instance.
+          description: The prometheus job that scrapes from Ceph is no longer defined, this will effectively mean you'll have no metrics or alerts for the cluster.  Please review the job definitions in the prometheus.yml file of the prometheus instance.
 # RADOS
  - interval: 1m
    input_series:
@@ -1991,11 +1790,8 @@ tests:
           oid: 1.3.6.1.4.1.50495.1.2.1.10.1
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#object-unfound
-          summary: Object(s) has been marked UNFOUND
-          description: |
-            A version of a RADOS object can not be found, even though all OSDs are up. I/O
-            requests for this object from clients will block (hang). Resolving this issue may
-            require the object to be rolled back to a prior version manually, and manually verified.
+          summary: Object(s) marked UNFOUND
+          description: The latest version of a RADOS object can not be found, even though all OSDs are up. I/O requests for this object from clients will block (hang). Resolving this issue may require the object to be rolled back to a prior version manually, and manually verified.
 # Generic Alerts
  - interval: 1m
    input_series:
@@ -2022,7 +1818,4 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash
           summary: One or more Ceph daemons have crashed, and are pending acknowledgement
-          description: |
-            One or more daemons have crashed recently, and need to be acknowledged. This notification
-            ensures that software crashes don't go unseen. To acknowledge a crash, use the
-            'ceph crash archive <id>' command.
+          description: One or more daemons have crashed recently, and need to be acknowledged. This notification ensures that software crashes do not go unseen. To acknowledge a crash, use the 'ceph crash archive <id>' command.
index 5784ecbb27068a0f6c2b6df9965d3d3e389ae7ad..51e3c5819bab9674f5be3cac1e86c79b97804e7c 100644 (file)
@@ -3,9 +3,9 @@ Feature: Host Details Dashboard
 Scenario: "Test OSD"
   Given the following series:
     | metrics | values |
-    | ceph_osd_metadata{back_iface="",ceph_daemon="osd.0",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
-    | ceph_osd_metadata{back_iface="",ceph_daemon="osd.1",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
-    | ceph_osd_metadata{back_iface="",ceph_daemon="osd.2",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
+    | ceph_osd_metadata{job="ceph",back_iface="",ceph_daemon="osd.0",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
+    | ceph_osd_metadata{job="ceph",back_iface="",ceph_daemon="osd.1",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
+    | ceph_osd_metadata{job="ceph",back_iface="",ceph_daemon="osd.2",cluster_addr="192.168.1.12",device_class="hdd",front_iface="",hostname="127.0.0.1",objectstore="bluestore",public_addr="192.168.1.12",ceph_version="ceph version 17.0.0-8967-g6932a4f702a (6932a4f702a0d557fc36df3ca7a3bca70de42667) quincy (dev)"} | 1.0 |
   When variable `ceph_hosts` is `127.0.0.1`
   Then Grafana panel `OSDs` with legend `EMPTY` shows:
     | metrics | values |
@@ -16,54 +16,54 @@ Scenario: "Test OSD"
 Scenario: "Test Disk IOPS - Writes - Several OSDs per device"
   Given the following series:
     | metrics | values |
-    | node_disk_writes_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_writes_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0 osd.1 osd.2",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.3 osd.4 osd.5",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_writes_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_writes_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0 osd.1 osd.2",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.3 osd.4 osd.5",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk IOPS` with legend `{{device}}({{ceph_daemon}}) writes` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0 osd.1 osd.2", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.3 osd.4 osd.5", device="sdb", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.0 osd.1 osd.2", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.3 osd.4 osd.5", device="sdb", instance="localhost"} | 1 |
 
 Scenario: "Test Disk IOPS - Writes - Single OSD per device"
   Given the following series:
     | metrics | values |
-    | node_disk_writes_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_writes_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_writes_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_writes_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk IOPS` with legend `{{device}}({{ceph_daemon}}) writes` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.1", device="sdb", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.1", device="sdb", instance="localhost"} | 1 |
 
 Scenario: "Test Disk IOPS - Reads - Several OSDs per device"
   Given the following series:
     | metrics | values |
-    | node_disk_reads_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_reads_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0 osd.1 osd.2",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.3 osd.4 osd.5",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_reads_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_reads_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0 osd.1 osd.2",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.3 osd.4 osd.5",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk IOPS` with legend `{{device}}({{ceph_daemon}}) reads` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0 osd.1 osd.2", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.3 osd.4 osd.5", device="sdb", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.0 osd.1 osd.2", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.3 osd.4 osd.5", device="sdb", instance="localhost"} | 1 |
 
 Scenario: "Test Disk IOPS - Reads - Single OSD per device"
   Given the following series:
     | metrics | values |
-    | node_disk_reads_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_reads_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_reads_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_reads_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk IOPS` with legend `{{device}}({{ceph_daemon}}) reads` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.1", device="sdb", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.1", device="sdb", instance="localhost"} | 1 |
 
 # IOPS Panel - end
 
@@ -72,44 +72,44 @@ Scenario: "Test Disk IOPS - Reads - Single OSD per device"
 Scenario: "Test disk throughput - read"
   Given the following series:
     | metrics | values |
-    | node_disk_read_bytes_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_read_bytes_total{device="sdb",instance="localhost:9100"} | 100+600x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_read_bytes_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_read_bytes_total{job="ceph",device="sdb",instance="localhost:9100"} | 100+600x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Throughput by Disk` with legend `{{device}}({{ceph_daemon}}) read` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.1", device="sdb", instance="localhost"} | 10 |
+    | {job="ceph",ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.1", device="sdb", instance="localhost"} | 10 |
 
 Scenario: "Test disk throughput - write"
   Given the following series:
     | metrics | values |
-    | node_disk_written_bytes_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_written_bytes_total{device="sdb",instance="localhost:9100"} | 100+600x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_written_bytes_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_written_bytes_total{job="ceph",device="sdb",instance="localhost:9100"} | 100+600x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Throughput by Disk` with legend `{{device}}({{ceph_daemon}}) write` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
-    | {ceph_daemon="osd.1", device="sdb", instance="localhost"} | 10 |
+    | {job="ceph",ceph_daemon="osd.0", device="sda", instance="localhost"} | 1 |
+    | {job="ceph",ceph_daemon="osd.1", device="sdb", instance="localhost"} | 10 |
 
 # Node disk bytes written/read panel - end
 
 Scenario: "Test $ceph_hosts Disk Latency panel"
   Given the following series:
     | metrics | values |
-    | node_disk_write_time_seconds_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_write_time_seconds_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_writes_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_writes_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_read_time_seconds_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_read_time_seconds_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_reads_completed_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_reads_completed_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_write_time_seconds_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_write_time_seconds_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_writes_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_writes_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_read_time_seconds_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_read_time_seconds_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_reads_completed_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_reads_completed_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk Latency` with legend `{{device}}({{ceph_daemon}})` shows:
     | metrics | values |
@@ -119,13 +119,13 @@ Scenario: "Test $ceph_hosts Disk Latency panel"
 Scenario: "Test $ceph_hosts Disk utilization"
   Given the following series:
     | metrics | values |
-    | node_disk_io_time_seconds_total{device="sda",instance="localhost:9100"} | 10+60x1 |
-    | node_disk_io_time_seconds_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | node_disk_io_time_seconds_total{job="ceph",device="sda",instance="localhost:9100"} | 10+60x1 |
+    | node_disk_io_time_seconds_total{job="ceph",device="sdb",instance="localhost:9100"} | 10+60x1 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `ceph_hosts` is `localhost`
   Then Grafana panel `$ceph_hosts Disk utilization` with legend `{{device}}({{ceph_daemon}})` shows:
     | metrics | values |
-    | {ceph_daemon="osd.0", device="sda", instance="localhost"} | 100 |
-    | {ceph_daemon="osd.1", device="sdb", instance="localhost"} | 100 |
+    | {job="ceph",ceph_daemon="osd.0", device="sda", instance="localhost"} | 100 |
+    | {job="ceph",ceph_daemon="osd.1", device="sdb", instance="localhost"} | 100 |
 
index 595f233096454699c5188625864b5bcdcc2fbb11..6c5eceaed3f6e1fb11d9f300b2e97198c07ea92e 100644 (file)
@@ -33,8 +33,8 @@ Scenario: "Test AVG Disk Utilization"
     | node_disk_io_time_seconds_total{device="sda",instance="localhost:9100"} | 10+60x1 |
     | node_disk_io_time_seconds_total{device="sdb",instance="localhost:9100"} | 10+60x1 |
     | node_disk_io_time_seconds_total{device="sdc",instance="localhost:9100"} | 10 2000 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd_hosts` is `localhost`
   Then Grafana panel `AVG Disk Utilization` with legend `EMPTY` shows:
     | metrics | values |
index 07af8692c8c1473963d181d6b0838b4838ac604e..0d6ca8b17154270944eb2ad077a7db47dd6b1460 100644 (file)
@@ -7,8 +7,8 @@ Scenario: "Test Physical Device Latency for $osd - Reads"
     | node_disk_reads_completed_total{device="sdb",instance="localhost"} | 10 60 |
     | node_disk_read_time_seconds_total{device="sda",instance="localhost"} | 100 600 |
     | node_disk_read_time_seconds_total{device="sdb",instance="localhost"} | 100 600 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device Latency for $osd` with legend `{{instance}}/{{device}} Reads` shows:
     | metrics | values |
@@ -21,8 +21,8 @@ Scenario: "Test Physical Device Latency for $osd - Writes"
     | node_disk_writes_completed_total{device="sdb",instance="localhost"} | 10 60 |
     | node_disk_write_time_seconds_total{device="sda",instance="localhost"} | 100 600 |
     | node_disk_write_time_seconds_total{device="sdb",instance="localhost"} | 100 600 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device Latency for $osd` with legend `{{instance}}/{{device}} Writes` shows:
     | metrics | values |
@@ -33,8 +33,8 @@ Scenario: "Test Physical Device R/W IOPS for $osd - Writes"
     | metrics | values |
     | node_disk_writes_completed_total{device="sda",instance="localhost"} | 10 100 |
     | node_disk_writes_completed_total{device="sdb",instance="localhost"} | 10 100 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device R/W IOPS for $osd` with legend `{{device}} on {{instance}} Writes` shows:
     | metrics | values |
@@ -45,8 +45,8 @@ Scenario: "Test Physical Device R/W IOPS for $osd - Reads"
     | metrics | values |
     | node_disk_reads_completed_total{device="sda",instance="localhost"} | 10 100 |
     | node_disk_reads_completed_total{device="sdb",instance="localhost"} | 10 100 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device R/W IOPS for $osd` with legend `{{device}} on {{instance}} Reads` shows:
     | metrics | values |
@@ -57,8 +57,8 @@ Scenario: "Test Physical Device R/W Bytes for $osd - Reads"
     | metrics | values |
     | node_disk_reads_completed_total{device="sda",instance="localhost"} | 10 100 |
     | node_disk_reads_completed_total{device="sdb",instance="localhost"} | 10 100 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device R/W IOPS for $osd` with legend `{{device}} on {{instance}} Reads` shows:
     | metrics | values |
@@ -69,8 +69,8 @@ Scenario: "Test Physical Device R/W Bytes for $osd - Writes"
     | metrics | values |
     | node_disk_writes_completed_total{device="sda",instance="localhost"} | 10 100 |
     | node_disk_writes_completed_total{device="sdb",instance="localhost"} | 10 100 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device R/W IOPS for $osd` with legend `{{device}} on {{instance}} Writes` shows:
     | metrics | values |
@@ -80,8 +80,8 @@ Scenario: "Test Physical Device Util% for $osd"
   Given the following series:
     | metrics | values |
     | node_disk_io_time_seconds_total{device="sda",instance="localhost:9100"} | 10 100 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
-    | ceph_disk_occupation_human{ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.0",device="/dev/sda",instance="localhost:9283"} | 1.0 |
+    | ceph_disk_occupation_human{job="ceph",ceph_daemon="osd.1",device="/dev/sdb",instance="localhost:9283"} | 1.0 |
   When variable `osd` is `osd.0`
   Then Grafana panel `Physical Device Util% for $osd` with legend `{{device}} on {{instance}}` shows:
     | metrics | values |
index bcc793a21a55e208ae21d65f2d10626a1459568d..e0016c5077d15997d6c69cbea1f644cac76b3c16 100644 (file)
@@ -10,7 +10,7 @@ Scenario: "Test $rgw_servers GET/PUT Latencies - GET"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `$rgw_servers GET/PUT Latencies` with legend `GET {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance_id="58892247"} | 2.5000000000000004 |
+    | {ceph_daemon="rgw.foo", instance_id="58892247"} | 1.5 |
 
 Scenario: "Test $rgw_servers GET/PUT Latencies - PUT"
   Given the following series:
@@ -33,7 +33,7 @@ Scenario: "Test Bandwidth by HTTP Operation - GET"
   And variable `rgw_servers` is `rgw.1`
   Then Grafana panel `Bandwidth by HTTP Operation` with legend `GETs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.1", instance="127.0.0.1", instance_id="92806566", job="ceph"} | 1.6666666666666667 |
+    | {ceph_daemon="rgw.1", instance="127.0.0.1", instance_id="92806566", job="ceph"} | 1.5 |
 
 Scenario: "Test Bandwidth by HTTP Operation - PUT"
   Given the following series:
@@ -44,7 +44,7 @@ Scenario: "Test Bandwidth by HTTP Operation - PUT"
   And variable `rgw_servers` is `rgw.1`
   Then Grafana panel `Bandwidth by HTTP Operation` with legend `PUTs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.1", instance="127.0.0.1", instance_id="92806566", job="ceph"} | 1 |
+    | {ceph_daemon="rgw.1", instance="127.0.0.1", instance_id="92806566", job="ceph"} | 7.5E-01 |
 
 Scenario: "Test HTTP Request Breakdown - Requests Failed"
   Given the following series:
@@ -55,7 +55,7 @@ Scenario: "Test HTTP Request Breakdown - Requests Failed"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `HTTP Request Breakdown` with legend `Requests Failed {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 6.666666666666667e-02 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1E-01 |
 
 Scenario: "Test HTTP Request Breakdown - GET"
   Given the following series:
@@ -66,7 +66,7 @@ Scenario: "Test HTTP Request Breakdown - GET"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `HTTP Request Breakdown` with legend `GETs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | .6666666666666666 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1.1666666666666667 |
 
 Scenario: "Test HTTP Request Breakdown - PUT"
   Given the following series:
@@ -77,7 +77,7 @@ Scenario: "Test HTTP Request Breakdown - PUT"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `HTTP Request Breakdown` with legend `PUTs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 2.3333333333333335 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1.5 |
 
 Scenario: "Test HTTP Request Breakdown - Other"
   Given the following series:
@@ -101,7 +101,7 @@ Scenario: "Test Workload Breakdown - Failures"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `Workload Breakdown` with legend `Failures {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 6.666666666666667e-02 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1E-01 |
 
 Scenario: "Test Workload Breakdown - GETs"
   Given the following series:
@@ -112,7 +112,7 @@ Scenario: "Test Workload Breakdown - GETs"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `Workload Breakdown` with legend `GETs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | .6666666666666666 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1.1666666666666667 |
 
 Scenario: "Test Workload Breakdown - PUTs"
   Given the following series:
@@ -123,7 +123,7 @@ Scenario: "Test Workload Breakdown - PUTs"
   And variable `rgw_servers` is `rgw.foo`
   Then Grafana panel `Workload Breakdown` with legend `PUTs {{ceph_daemon}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 2.3333333333333335 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1.5 |
 
 Scenario: "Test Workload Breakdown - Other"
   Given the following series:
index 69e46b1d511d79f7204d123f5a11e83390d91bec..b095392a21bcf53bd6831fadc5ab527f96b41ee4 100644 (file)
@@ -9,7 +9,7 @@ Scenario: "Test Average GET Latencies"
   When interval is `30s`
   Then Grafana panel `Average GET/PUT Latencies` with legend `GET AVG` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo",instance="127.0.0.1", instance_id="58892247", job="ceph"} | 2.5000000000000004 |
+    | {ceph_daemon="rgw.foo",instance="127.0.0.1", instance_id="58892247", job="ceph"} | 1.5 |
 
 Scenario: "Test Average PUT Latencies"
   Given the following series:
@@ -30,7 +30,7 @@ Scenario: "Test Total Requests/sec by RGW Instance"
   When interval is `30s`
   Then Grafana panel `Total Requests/sec by RGW Instance` with legend `{{rgw_host}}` shows:
     | metrics | values |
-    | {rgw_host="1"} | 1.6666666666666667 |
+    | {rgw_host="1"} | 1.5 |
 
 Scenario: "Test GET Latencies by RGW Instance"
   Given the following series:
@@ -41,7 +41,7 @@ Scenario: "Test GET Latencies by RGW Instance"
   When interval is `30s`
   Then Grafana panel `GET Latencies by RGW Instance` with legend `{{rgw_host}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph", rgw_host="foo"} | 2.5000000000000004 |
+    | {ceph_daemon="rgw.foo", instance="127.0.0.1", instance_id="58892247", job="ceph", rgw_host="foo"} | 1.5 |
 
 Scenario: "Test Bandwidth Consumed by Type- GET"
   Given the following series:
@@ -51,7 +51,7 @@ Scenario: "Test Bandwidth Consumed by Type- GET"
   And interval is `30s`
   Then Grafana panel `Bandwidth Consumed by Type` with legend `GETs` shows:
     | metrics | values |
-    | {} | 1.6666666666666667 |
+    | {} | 1.5 |
 
 Scenario: "Test Bandwidth Consumed by Type- PUT"
   Given the following series:
@@ -61,7 +61,7 @@ Scenario: "Test Bandwidth Consumed by Type- PUT"
   And interval is `30s`
   Then Grafana panel `Bandwidth Consumed by Type` with legend `PUTs` shows:
     | metrics | values |
-    | {} | 1 |
+    | {} | 7.5E-01 |
 
 Scenario: "Test Bandwidth by RGW Instance"
   Given the following series:
@@ -73,7 +73,7 @@ Scenario: "Test Bandwidth by RGW Instance"
   And interval is `30s`
   Then Grafana panel `Bandwidth by RGW Instance` with legend `{{rgw_host}}` shows:
     | metrics | values |
-    | {ceph_daemon="rgw.1", instance_id="92806566", rgw_host="1"} | 2.666666666666667 |
+    | {ceph_daemon="rgw.1", instance_id="92806566", rgw_host="1"} | 2.25 |
 
 Scenario: "Test PUT Latencies by RGW Instance"
   Given the following series:
@@ -90,8 +90,8 @@ Scenario: "Test PUT Latencies by RGW Instance"
 Scenario: "Test Total backend responses by HTTP code"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_http_responses_total{code="200",instance="ingress.rgw.1",proxy="backend"} | 10 100 |
-    | haproxy_backend_http_responses_total{code="404",instance="ingress.rgw.1",proxy="backend"} | 20 200 |
+    | haproxy_backend_http_responses_total{job="haproxy",code="200",instance="ingress.rgw.1",proxy="backend"} | 10 100 |
+    | haproxy_backend_http_responses_total{job="haproxy",code="404",instance="ingress.rgw.1",proxy="backend"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   When variable `code` is `200`
   Then Grafana panel `Total responses by HTTP code` with legend `Backend {{ code }}` shows:
@@ -101,8 +101,8 @@ Scenario: "Test Total backend responses by HTTP code"
 Scenario: "Test Total frontend responses by HTTP code"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_http_responses_total{code="200",instance="ingress.rgw.1",proxy="frontend"} | 10 100 |
-    | haproxy_frontend_http_responses_total{code="404",instance="ingress.rgw.1",proxy="frontend"} | 20 200 |
+    | haproxy_frontend_http_responses_total{job="haproxy",code="200",instance="ingress.rgw.1",proxy="frontend"} | 10 100 |
+    | haproxy_frontend_http_responses_total{job="haproxy",code="404",instance="ingress.rgw.1",proxy="frontend"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   When variable `code` is `200`
   Then Grafana panel `Total responses by HTTP code` with legend `Frontend {{ code }}` shows:
@@ -112,8 +112,8 @@ Scenario: "Test Total frontend responses by HTTP code"
 Scenario: "Test Total http frontend requests by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_http_requests_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_http_requests_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_http_requests_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_http_requests_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Requests` shows:
     | metrics | values |
@@ -122,8 +122,8 @@ Scenario: "Test Total http frontend requests by instance"
 Scenario: "Test Total backend response errors by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_response_errors_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_response_errors_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_response_errors_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_response_errors_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Response errors` shows:
     | metrics | values |
@@ -132,8 +132,8 @@ Scenario: "Test Total backend response errors by instance"
 Scenario: "Test Total frontend requests errors by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_request_errors_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_request_errors_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_request_errors_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_request_errors_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Requests errors` shows:
     | metrics | values |
@@ -142,8 +142,8 @@ Scenario: "Test Total frontend requests errors by instance"
 Scenario: "Test Total backend redispatch warnings by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_redispatch_warnings_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_redispatch_warnings_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_redispatch_warnings_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_redispatch_warnings_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Backend redispatch` shows:
     | metrics | values |
@@ -152,8 +152,8 @@ Scenario: "Test Total backend redispatch warnings by instance"
 Scenario: "Test Total backend retry warnings by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_retry_warnings_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_retry_warnings_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_retry_warnings_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_retry_warnings_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Backend retry` shows:
     | metrics | values |
@@ -162,8 +162,8 @@ Scenario: "Test Total backend retry warnings by instance"
 Scenario: "Test Total frontend requests denied by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_requests_denied_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_requests_denied_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_requests_denied_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_requests_denied_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Request denied` shows:
     | metrics | values |
@@ -172,8 +172,8 @@ Scenario: "Test Total frontend requests denied by instance"
 Scenario: "Test Total backend current queue by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_current_queue{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_current_queue{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_current_queue{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_current_queue{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total requests / responses` with legend `Backend Queued` shows:
     | metrics | values |
@@ -182,8 +182,8 @@ Scenario: "Test Total backend current queue by instance"
 Scenario: "Test Total frontend connections by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_connections_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_connections_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_connections_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_connections_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total number of connections` with legend `Front` shows:
     | metrics | values |
@@ -192,8 +192,8 @@ Scenario: "Test Total frontend connections by instance"
 Scenario: "Test Total backend connections attempts by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_connection_attempts_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_connection_attempts_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_connection_attempts_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_connection_attempts_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total number of connections` with legend `Back` shows:
     | metrics | values |
@@ -202,8 +202,8 @@ Scenario: "Test Total backend connections attempts by instance"
 Scenario: "Test Total backend connections error by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_connection_errors_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_connection_errors_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_connection_errors_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_connection_errors_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Total number of connections` with legend `Back errors` shows:
     | metrics | values |
@@ -212,8 +212,8 @@ Scenario: "Test Total backend connections error by instance"
 Scenario: "Test Total frontend bytes incoming by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_bytes_in_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_bytes_in_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_bytes_in_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_bytes_in_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Current total of incoming / outgoing bytes` with legend `IN Front` shows:
     | metrics | values |
@@ -222,8 +222,8 @@ Scenario: "Test Total frontend bytes incoming by instance"
 Scenario: "Test Total frontend bytes outgoing by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_frontend_bytes_out_total{proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_frontend_bytes_out_total{proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_frontend_bytes_out_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_frontend_bytes_out_total{job="haproxy",proxy="frontend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Current total of incoming / outgoing bytes` with legend `OUT Front` shows:
     | metrics | values |
@@ -232,8 +232,8 @@ Scenario: "Test Total frontend bytes outgoing by instance"
 Scenario: "Test Total backend bytes incoming by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_bytes_in_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_bytes_in_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_bytes_in_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_bytes_in_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Current total of incoming / outgoing bytes` with legend `IN Back` shows:
     | metrics | values |
@@ -242,8 +242,8 @@ Scenario: "Test Total backend bytes incoming by instance"
 Scenario: "Test Total backend bytes outgoing by instance"
   Given the following series:
     | metrics | values |
-    | haproxy_backend_bytes_out_total{proxy="backend",instance="ingress.rgw.1"} | 10 100 |
-    | haproxy_backend_bytes_out_total{proxy="backend",instance="ingress.rgw.1"} | 20 200 |
+    | haproxy_backend_bytes_out_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 10 100 |
+    | haproxy_backend_bytes_out_total{job="haproxy",proxy="backend",instance="ingress.rgw.1"} | 20 200 |
   When variable `ingress_service` is `ingress.rgw.1`
   Then Grafana panel `Current total of incoming / outgoing bytes` with legend `OUT Back` shows:
     | metrics | values |
index 4310eb207f0580cde895e2ae4b4c3dace934f408..1fce6559dfb9c0e3f042be8c1e5933fdfc2ac157 100644 (file)
@@ -30,6 +30,7 @@ def get_dashboards_data() -> Dict[str, Any]:
             data['stats'][str(file)] = {'total': 0, 'tested': 0}
             add_dashboard_queries(data, dashboard_data, str(file))
             add_dashboard_variables(data, dashboard_data)
+            add_default_dashboards_variables(data)
     return data
 
 
@@ -76,6 +77,10 @@ def add_dashboard_variables(data: Dict[str, Any], dashboard_data: Dict[str, Any]
         if 'name' in variable:
             data['variables'][variable['name']] = 'UNSET VARIABLE'
 
+def add_default_dashboards_variables(data: Dict[str, Any]) -> None:
+    data['variables']['job'] = 'ceph'
+    data['variables']['job_haproxy'] = 'haproxy'
+    data['variables']['__rate_interval'] = '1m'
 
 def replace_grafana_expr_variables(expr: str, variable: str, value: Any) -> str:
     """ Replace grafana variables in expression with a value
index e6cae299d68fa0d6d3ea2535ef78fa4b5a5649dd..821a5cd5640b732ee8339ee50a4a998ac80b9333 100644 (file)
@@ -22,7 +22,7 @@ whitelist_externals =
     sh
 description =
     check: Ensure that auto-generated files matches the current version
-    fix: Update generated files from jsonnet filse with latest changes
+    fix: Update generated files from jsonnet file with latest changes
     lint: Test if jsonnet files are linted (without any update)
 deps =
     -rrequirements-grafonnet.txt
@@ -56,7 +56,7 @@ whitelist_externals =
 commands =
     behave tests_dashboards/features 
 
-[testenv:alerts-{check,lint}]
+[testenv:alerts-{fix,check,lint}]
 deps =
     -rrequirements-alerts.txt
     pytest
@@ -64,6 +64,7 @@ depends = grafonnet-check
 whitelist_externals =
   promtool
 commands =
+    fix: jsonnet -J vendor -S alerts.jsonnet -o prometheus_alerts.yml
     lint: promtool check rules prometheus_alerts.yml
     test: pytest -rA tests_alerts/test_syntax.py tests_alerts/test_unittests.py
           python3 ./tests_alerts/validate_rules.py
diff --git a/ceph/qa/standalone/misc/test-mclock-profile-switch.sh b/ceph/qa/standalone/misc/test-mclock-profile-switch.sh
new file mode 100644 (file)
index 0000000..1bbd6ee
--- /dev/null
@@ -0,0 +1,198 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2022 Red Hat <contact@redhat.com>
+#
+# Author: Sridhar Seshasayee <sseshasa@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Library Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library Public License for more details.
+#
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:7124" # git grep '\<7124\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    CEPH_ARGS+="--debug-bluestore 20 "
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+        $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+function TEST_profile_builtin_to_custom() {
+    local dir=$1
+    local OSDS=3
+
+    setup $dir || return 1
+    run_mon $dir a --osd_pool_default_size=$OSDS || return 1
+    run_mgr $dir x || return 1
+    for osd in $(seq 0 $(expr $OSDS - 1))
+    do
+      run_osd $dir $osd --osd_op_queue=mclock_scheduler || return 1
+    done
+
+    # Verify that the default mclock profile is set on the OSDs
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
+      test "$mclock_profile" = "high_client_ops" || return 1
+    done
+
+    # Change the mclock profile to 'custom'
+    ceph config set osd osd_mclock_profile custom || return 1
+
+    # Verify that the mclock profile is set to 'custom' on the OSDs
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
+      test "$mclock_profile" = "custom" || return 1
+    done
+
+    # Change a mclock config param and confirm the change
+    local client_res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.$id) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    echo "client_res = $client_res"
+    local client_res_new=$(expr $client_res + 10)
+    echo "client_res_new = $client_res_new"
+    ceph config set osd osd_mclock_scheduler_client_res \
+      $client_res_new || return 1
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      # Check value in config monitor db
+      local res=$(ceph config get osd.$id \
+        osd_mclock_scheduler_client_res) || return 1
+      test $res -eq $client_res_new || return 1
+      # Check value in the in-memory 'values' map
+      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+        osd.$id) config get osd_mclock_scheduler_client_res | \
+        jq .osd_mclock_scheduler_client_res | bc)
+      test $res -eq $client_res_new || return 1
+    done
+
+    teardown $dir || return 1
+}
+
+function TEST_profile_custom_to_builtin() {
+    local dir=$1
+    local OSDS=3
+
+    setup $dir || return 1
+    run_mon $dir a --osd_pool_default_size=$OSDS || return 1
+    run_mgr $dir x || return 1
+    for osd in $(seq 0 $(expr $OSDS - 1))
+    do
+      run_osd $dir $osd --osd_op_queue=mclock_scheduler || return 1
+    done
+
+    # Verify that the default mclock profile is set on the OSDs
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
+      test "$mclock_profile" = "high_client_ops" || return 1
+    done
+
+    # Change the mclock profile to 'custom'
+    ceph config set osd osd_mclock_profile custom || return 1
+
+    # Verify that the mclock profile is set to 'custom' on the OSDs
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
+      test "$mclock_profile" = "custom" || return 1
+    done
+
+    # Save the original client reservations allocated to the OSDs
+    local client_res=()
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      client_res+=( $(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+        osd.$id) config get osd_mclock_scheduler_client_res | \
+        jq .osd_mclock_scheduler_client_res | bc) )
+      echo "Original client_res for osd.$id = ${client_res[$id]}"
+    done
+
+    # Change a mclock config param and confirm the change
+    local client_res_new=$(expr ${client_res[0]} + 10)
+    echo "client_res_new = $client_res_new"
+    ceph config set osd osd_mclock_scheduler_client_res \
+      $client_res_new || return 1
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      # Check value in config monitor db
+      local res=$(ceph config get osd.$id \
+        osd_mclock_scheduler_client_res) || return 1
+      test $res -eq $client_res_new || return 1
+      # Check value in the in-memory 'values' map
+      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+        osd.$id) config get osd_mclock_scheduler_client_res | \
+        jq .osd_mclock_scheduler_client_res | bc)
+      test $res -eq $client_res_new || return 1
+    done
+
+    # Switch the mclock profile back to the original built-in profile.
+    # The config subsystem prevents the overwrite of the changed QoS config
+    # option above i.e. osd_mclock_scheduler_client_res. This fact is verified
+    # before proceeding to remove the entry from the config monitor db. After
+    # the config entry is removed, the original value for the config option is
+    # restored and is verified.
+    ceph config set osd osd_mclock_profile high_client_ops || return 1
+    # Verify that the mclock profile is set to 'high_client_ops' on the OSDs
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
+      test "$mclock_profile" = "high_client_ops" || return 1
+    done
+
+    # Verify that the new value is still in effect
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      # Check value in config monitor db
+      local res=$(ceph config get osd.$id \
+        osd_mclock_scheduler_client_res) || return 1
+      test $res -eq $client_res_new || return 1
+      # Check value in the in-memory 'values' map
+      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+        osd.$id) config get osd_mclock_scheduler_client_res | \
+        jq .osd_mclock_scheduler_client_res | bc)
+      test $res -eq $client_res_new || return 1
+    done
+
+    # Remove the changed QoS config option from monitor db
+    ceph config rm osd osd_mclock_scheduler_client_res || return 1
+
+    # Verify that the original values are now restored
+    for id in $(seq 0 $(expr $OSDS - 1))
+    do
+      # Check value in the in-memory 'values' map
+      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+        osd.$id) config get osd_mclock_scheduler_client_res | \
+        jq .osd_mclock_scheduler_client_res | bc)
+      test $res -eq ${client_res[$id]} || return 1
+    done
+
+    teardown $dir || return 1
+}
+
+main test-mclock-profile-switch "$@"
+
+# Local Variables:
+# compile-command: "cd build ; make -j4 && \
+#   ../qa/run-standalone.sh test-mclock-profile-switch.sh"
+# End:
index 88d6527bf82af7bc14f09ad96873efb16aa13c54..b4f673e395794300dee48224886607c76e8368d7 100644 (file)
@@ -15,7 +15,17 @@ overrides:
         bluestore block size: 1073741824
 tasks:
 - workunit:
-    cleanup: false
+    cleanup: true
     clients:
       client.0:
         - fs/full/subvolume_rm.sh
+- workunit:
+    cleanup: true
+    clients:
+      client.0:
+        - fs/full/subvolume_clone.sh
+- workunit:
+    cleanup: true
+    clients:
+      client.0:
+        - fs/full/subvolume_snapshot_rm.sh
diff --git a/ceph/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml b/ceph/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml
new file mode 100644 (file)
index 0000000..7bbcf00
--- /dev/null
@@ -0,0 +1,30 @@
+overrides:
+  ceph:
+    conf:
+      mgr:
+        debug mgr: 20
+        debug ms: 1
+        debug finisher: 20
+        debug client: 20
+    log-whitelist:
+      - OSD full dropping all updates
+      - OSD near full
+      - pausewr flag
+      - failsafe engaged, dropping updates
+      - failsafe disengaged, no longer dropping
+      - is full \(reached quota
+      - POOL_FULL
+      - POOL_BACKFILLFULL
+
+overrides:
+  kclient:
+    snapdirname: .customsnapkernel
+  ceph:
+    conf:
+      client:
+        client snapdir: .customsnapfuse
+
+tasks:
+  - cephfs_test_runner:
+      modules:
+        - tasks.cephfs.test_snap_schedules.TestSnapSchedulesSnapdir
index 6ff6195bfb473959daeaa716863598307b93df9d..ca026c45ff1ec3c49ecf3768d28e14dc84e0ad97 100644 (file)
@@ -9,3 +9,4 @@ tasks:
       all:
         - fs/misc/acl.sh
         - fs/misc/chmod.sh
+        - fs/misc/dac_override.sh
diff --git a/ceph/qa/suites/orch/cephadm/workunits/0-distro b/ceph/qa/suites/orch/cephadm/workunits/0-distro
new file mode 120000 (symlink)
index 0000000..4b34171
--- /dev/null
@@ -0,0 +1 @@
+.qa/distros/container-hosts
\ No newline at end of file
index dc8671b7d9ddef654efb476b3110fa4e0221bd12..5d80e6bd372786d978a1152f5e90c788c3473387 100644 (file)
@@ -11,3 +11,4 @@ op_workload:
           - rbd/qemu_dynamic_features.sh
         env:
           IMAGE_NAME: client.0.1-clone
+        timeout: 0
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/% b/ceph/qa/suites/rbd/persistent-writeback-cache/%
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/.qa b/ceph/qa/suites/rbd/persistent-writeback-cache/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/1-base b/ceph/qa/suites/rbd/persistent-writeback-cache/1-base
deleted file mode 120000 (symlink)
index fd10a85..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../thrash/base
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/+ b/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/+
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/.qa b/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/fix-2.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/fix-2.yaml
deleted file mode 100644 (file)
index dbccecb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-roles:
-- [mon.a, mgr.x, osd.0, osd.1]
-- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/openstack.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/2-cluster/openstack.yaml
deleted file mode 100644 (file)
index b113e4f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-openstack:
-    - volumes: # attached to each instance
-        count: 4
-        size: 10 # GB
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/3-supported-random-distro$ b/ceph/qa/suites/rbd/persistent-writeback-cache/3-supported-random-distro$
deleted file mode 120000 (symlink)
index 0862b44..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.qa/distros/supported-random-distro$
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/big-cache.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/big-cache.yaml
deleted file mode 100644 (file)
index 7ac3f31..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd_persistent_cache_path: /home/ubuntu/cephtest/write_back_cache
-        rbd_persistent_cache_size: 8589934592
-        rbd_plugins: pwl_cache
-        rbd_default_features: 61
-tasks:
-- exec:
-    client.0:
-      - "mkdir -m 777 /home/ubuntu/cephtest/write_back_cache"
-- exec_on_cleanup:
-    client.0:
-      - "rm -rf /home/ubuntu/cephtest/write_back_cache"
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/cache.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/4-pool/cache.yaml
deleted file mode 100644 (file)
index 9265e7d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd_persistent_cache_path: /home/ubuntu/cephtest/write_back_cache
-        rbd_persistent_cache_size: 1073741824
-        rbd_plugins: pwl_cache
-        rbd_default_features: 61
-tasks:
-- exec:
-    client.0:
-      - "mkdir -m 777 /home/ubuntu/cephtest/write_back_cache"
-- exec_on_cleanup:
-    client.0:
-      - "rm -rf /home/ubuntu/cephtest/write_back_cache"
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/rwl.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/rwl.yaml
deleted file mode 100644 (file)
index 5aeab26..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd_persistent_cache_mode: rwl
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/ssd.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/5-cache-mode/ssd.yaml
deleted file mode 100644 (file)
index 0821491..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd_persistent_cache_mode: ssd
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/.qa b/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/c_api_tests_with_defaults.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/c_api_tests_with_defaults.yaml
deleted file mode 120000 (symlink)
index 9490327..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../librbd/workloads/c_api_tests_with_defaults.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/fio.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/fio.yaml
deleted file mode 100644 (file)
index f7aecce..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-tasks:
-- rbd_fio:
-    client.0:
-      fio-io-size: 100%
-      formats: [2]
-      io-engine: rbd
-      rw: randwrite
-      runtime: 600
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/qemu_xfstests.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/qemu_xfstests.yaml
deleted file mode 100644 (file)
index 255b963..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-tasks:
-- qemu:
-    client.0:
-      test: qa/run_xfstests_qemu.sh
-      type: block
-      cpus: 4
-      memory: 4096
-      disks: 3
diff --git a/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/recovery.yaml b/ceph/qa/suites/rbd/persistent-writeback-cache/6-workloads/recovery.yaml
deleted file mode 100644 (file)
index 63a0c9d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-tasks:
-- rbd.create_image:
-    client.0:
-      image_name: testimage
-      image_size: 10
-      image_format: 2
-- exec:
-    client.0:
-      - "timeout 10s rbd bench --io-pattern rand --io-type write testimage || true"
-      - "rbd bench --io-type write --io-pattern rand --io-total 32M testimage"
diff --git a/ceph/qa/suites/rbd/pwl-cache/.qa b/ceph/qa/suites/rbd/pwl-cache/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/% b/ceph/qa/suites/rbd/pwl-cache/home/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/.qa b/ceph/qa/suites/rbd/pwl-cache/home/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/1-base b/ceph/qa/suites/rbd/pwl-cache/home/1-base
new file mode 120000 (symlink)
index 0000000..89c3c7e
--- /dev/null
@@ -0,0 +1 @@
+../../basic/base/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/+ b/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/.qa b/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml b/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml
new file mode 100644 (file)
index 0000000..dbccecb
--- /dev/null
@@ -0,0 +1,3 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1]
+- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml b/ceph/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml
new file mode 100644 (file)
index 0000000..b113e4f
--- /dev/null
@@ -0,0 +1,4 @@
+openstack:
+    - volumes: # attached to each instance
+        count: 4
+        size: 10 # GB
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$ b/ceph/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$
new file mode 120000 (symlink)
index 0000000..0862b44
--- /dev/null
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml b/ceph/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml
new file mode 100644 (file)
index 0000000..be4641b
--- /dev/null
@@ -0,0 +1,13 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_path: /home/ubuntu/cephtest/rbd-pwl-cache
+        rbd_plugins: pwl_cache
+tasks:
+- exec:
+    client.0:
+      - "mkdir -m 777 /home/ubuntu/cephtest/rbd-pwl-cache"
+- exec_on_cleanup:
+    client.0:
+      - "rm -rf /home/ubuntu/cephtest/rbd-pwl-cache"
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa b/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml b/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml
new file mode 100644 (file)
index 0000000..5aeab26
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_mode: rwl
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml b/ceph/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml
new file mode 100644 (file)
index 0000000..0821491
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_mode: ssd
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa b/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml b/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml
new file mode 100644 (file)
index 0000000..53fcddc
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_size: 1073741824
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml b/ceph/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml
new file mode 100644 (file)
index 0000000..b53d368
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_size: 8589934592
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/.qa b/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml b/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml
new file mode 120000 (symlink)
index 0000000..359001f
--- /dev/null
@@ -0,0 +1 @@
+../../../librbd/workloads/c_api_tests_with_defaults.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml b/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml
new file mode 100644 (file)
index 0000000..f7aecce
--- /dev/null
@@ -0,0 +1,8 @@
+tasks:
+- rbd_fio:
+    client.0:
+      fio-io-size: 100%
+      formats: [2]
+      io-engine: rbd
+      rw: randwrite
+      runtime: 600
diff --git a/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml b/ceph/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml
new file mode 100644 (file)
index 0000000..3017beb
--- /dev/null
@@ -0,0 +1,9 @@
+tasks:
+- rbd.create_image:
+    client.0:
+      image_name: testimage
+      image_size: 10240
+      image_format: 2
+- rbd_pwl_cache_recovery:
+    client.0:
+      image_name: testimage
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/% b/ceph/qa/suites/rbd/pwl-cache/tmpfs/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/.qa b/ceph/qa/suites/rbd/pwl-cache/tmpfs/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/1-base b/ceph/qa/suites/rbd/pwl-cache/tmpfs/1-base
new file mode 120000 (symlink)
index 0000000..89c3c7e
--- /dev/null
@@ -0,0 +1 @@
+../../basic/base/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+ b/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa b/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml
new file mode 100644 (file)
index 0000000..dbccecb
--- /dev/null
@@ -0,0 +1,3 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1]
+- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml
new file mode 100644 (file)
index 0000000..b113e4f
--- /dev/null
@@ -0,0 +1,4 @@
+openstack:
+    - volumes: # attached to each instance
+        count: 4
+        size: 10 # GB
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$ b/ceph/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$
new file mode 120000 (symlink)
index 0000000..0862b44
--- /dev/null
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml
new file mode 100644 (file)
index 0000000..b5578a0
--- /dev/null
@@ -0,0 +1,22 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_path: /home/ubuntu/cephtest/rbd-pwl-cache
+        rbd_plugins: pwl_cache
+tasks:
+- exec:
+    client.0:
+      - "mkdir /home/ubuntu/cephtest/tmpfs"
+      - "mkdir /home/ubuntu/cephtest/rbd-pwl-cache"
+      - "sudo mount -t tmpfs -o size=20G tmpfs /home/ubuntu/cephtest/tmpfs"
+      - "truncate -s 20G /home/ubuntu/cephtest/tmpfs/loopfile"
+      - "mkfs.ext4 /home/ubuntu/cephtest/tmpfs/loopfile"
+      - "sudo mount -o loop /home/ubuntu/cephtest/tmpfs/loopfile /home/ubuntu/cephtest/rbd-pwl-cache"
+      - "sudo chmod 777 /home/ubuntu/cephtest/rbd-pwl-cache"
+- exec_on_cleanup:
+    client.0:
+      - "sudo umount /home/ubuntu/cephtest/rbd-pwl-cache"
+      - "sudo umount /home/ubuntu/cephtest/tmpfs"
+      - "rm -rf /home/ubuntu/cephtest/rbd-pwl-cache"
+      - "rm -rf /home/ubuntu/cephtest/tmpfs"
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa b/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml
new file mode 100644 (file)
index 0000000..5aeab26
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_mode: rwl
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml
new file mode 100644 (file)
index 0000000..0821491
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_mode: ssd
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa b/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml
new file mode 100644 (file)
index 0000000..53fcddc
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_size: 1073741824
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml
new file mode 100644 (file)
index 0000000..1c43b5d
--- /dev/null
@@ -0,0 +1,5 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd_persistent_cache_size: 5368709120
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa b/ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml b/ceph/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml
new file mode 100644 (file)
index 0000000..255b963
--- /dev/null
@@ -0,0 +1,8 @@
+tasks:
+- qemu:
+    client.0:
+      test: qa/run_xfstests_qemu.sh
+      type: block
+      cpus: 4
+      memory: 4096
+      disks: 3
index fe8c8409dbef9a393bb673663117a068980e23d1..d20bb52bcbfb3da805d4456876f22f9a4d158189 100644 (file)
@@ -6,9 +6,15 @@ overrides:
         rgw crypt vault auth: token
         rgw crypt vault secret engine: transit
         rgw crypt vault prefix: /v1/transit/
+        rgw crypt sse s3 backend: vault
+        rgw crypt sse s3 vault auth: token
+        rgw crypt sse s3 vault secret engine: transit
+        rgw crypt sse s3 vault prefix: /v1/transit/
   rgw:
     client.0:
       use-vault-role: client.0
+  s3tests:
+    with-sse-s3: true
 
 tasks:
 - vault:
index 51d802cd7ce9d53cf7278863711465aff32aa03d..652d7d9ae3152b30dd3836f815aa1eef06618a8b 100644 (file)
@@ -14,6 +14,7 @@ import logging
 import threading
 import traceback
 import os
+import re
 import shlex
 
 from io import BytesIO, StringIO
@@ -70,6 +71,14 @@ def write_conf(ctx, conf_path=DEFAULT_CONF_PATH, cluster='ceph'):
     conf_fp = BytesIO()
     ctx.ceph[cluster].conf.write(conf_fp)
     conf_fp.seek(0)
+    lines = conf_fp.readlines()
+    m = None
+    for l in lines:
+     m = re.search("rgw.crypt.sse.s3.backend *= *(.*)", l.decode())
+     if m:
+      break
+    ctx.ceph[cluster].rgw_crypt_sse_s3_backend = m.expand("\\1") if m else None
+    conf_fp.seek(0)
     writes = ctx.cluster.run(
         args=[
             'sudo', 'mkdir', '-p', '/etc/ceph', run.Raw('&&'),
@@ -646,6 +655,7 @@ class OSDThrasher(Thrasher):
                     options['max_change'])
 
     def primary_affinity(self, osd=None):
+        self.log("primary_affinity")
         if osd is None:
             osd = random.choice(self.in_osds)
         if random.random() >= .5:
@@ -672,6 +682,7 @@ class OSDThrasher(Thrasher):
         """
         Install or remove random pg_upmap entries in OSDMap
         """
+        self.log("thrash_pg_upmap")
         from random import shuffle
         out = self.ceph_manager.raw_cluster_cmd('osd', 'dump', '-f', 'json-pretty')
         j = json.loads(out)
@@ -680,12 +691,14 @@ class OSDThrasher(Thrasher):
             if random.random() >= .3:
                 pgs = self.ceph_manager.get_pg_stats()
                 if not pgs:
+                    self.log('No pgs; doing nothing')
                     return
                 pg = random.choice(pgs)
                 pgid = str(pg['pgid'])
                 poolid = int(pgid.split('.')[0])
                 sizes = [x['size'] for x in j['pools'] if x['pool'] == poolid]
                 if len(sizes) == 0:
+                    self.log('No pools; doing nothing')
                     return
                 n = sizes[0]
                 osds = self.in_osds + self.out_osds
@@ -714,6 +727,7 @@ class OSDThrasher(Thrasher):
         """
         Install or remove random pg_upmap_items entries in OSDMap
         """
+        self.log("thrash_pg_upmap_items")
         from random import shuffle
         out = self.ceph_manager.raw_cluster_cmd('osd', 'dump', '-f', 'json-pretty')
         j = json.loads(out)
@@ -722,12 +736,14 @@ class OSDThrasher(Thrasher):
             if random.random() >= .3:
                 pgs = self.ceph_manager.get_pg_stats()
                 if not pgs:
+                    self.log('No pgs; doing nothing')
                     return
                 pg = random.choice(pgs)
                 pgid = str(pg['pgid'])
                 poolid = int(pgid.split('.')[0])
                 sizes = [x['size'] for x in j['pools'] if x['pool'] == poolid]
                 if len(sizes) == 0:
+                    self.log('No pools; doing nothing')
                     return
                 n = sizes[0]
                 osds = self.in_osds + self.out_osds
@@ -883,15 +899,15 @@ class OSDThrasher(Thrasher):
         """
         self.log("test_pool_min_size")
         self.all_up()
+        time.sleep(60) # buffer time for recovery to start.
         self.ceph_manager.wait_for_recovery(
             timeout=self.config.get('timeout')
             )
-
         minout = int(self.config.get("min_out", 1))
         minlive = int(self.config.get("min_live", 2))
         mindead = int(self.config.get("min_dead", 1))
         self.log("doing min_size thrashing")
-        self.ceph_manager.wait_for_clean(timeout=60)
+        self.ceph_manager.wait_for_clean(timeout=180)
         assert self.ceph_manager.is_clean(), \
             'not clean before minsize thrashing starts'
         while not self.stopping:
@@ -965,7 +981,7 @@ class OSDThrasher(Thrasher):
                     # try a few times since there might be a concurrent pool
                     # creation or deletion
                     with safe_while(
-                            sleep=5, tries=5,
+                            sleep=25, tries=5,
                             action='check for active or peered') as proceed:
                         while proceed():
                             if self.ceph_manager.all_active_or_peered():
@@ -991,7 +1007,7 @@ class OSDThrasher(Thrasher):
         Pause injection testing. Check for osd being down when finished.
         """
         the_one = random.choice(self.live_osds)
-        self.log("inject_pause on {osd}".format(osd=the_one))
+        self.log("inject_pause on osd.{osd}".format(osd=the_one))
         self.log(
             "Testing {key} pause injection for duration {duration}".format(
                 key=conf_key,
@@ -1166,6 +1182,7 @@ class OSDThrasher(Thrasher):
         This sequence should cause the revived osd to have to handle
         a map gap since the mons would have trimmed
         """
+        self.log("test_map_discontinuity")
         while len(self.in_osds) < (self.minin + 1):
             self.in_osd()
         self.log("Waiting for recovery")
@@ -1207,8 +1224,9 @@ class OSDThrasher(Thrasher):
         mindead = int(self.config.get("min_dead", 0))
 
         self.log('choose_action: min_in %d min_out '
-                 '%d min_live %d min_dead %d' %
-                 (minin, minout, minlive, mindead))
+                 '%d min_live %d min_dead %d '
+                 'chance_down %.2f' %
+                 (minin, minout, minlive, mindead, chance_down))
         actions = []
         if len(self.in_osds) > minin:
             actions.append((self.out_osd, 1.0,))
@@ -2670,7 +2688,11 @@ class CephManager:
         True if all pgs are clean
         """
         pgs = self.get_pg_stats()
-        return self._get_num_active_clean(pgs) == len(pgs)
+        if self._get_num_active_clean(pgs) == len(pgs):
+            return True
+        else:
+            self.dump_pgs_not_active_clean()
+            return False
 
     def is_recovered(self):
         """
@@ -2716,6 +2738,12 @@ class CephManager:
              self.log('PG %s is not active' % pg['pgid'])
              self.log(pg)
 
+    def dump_pgs_not_active_peered(self, pgs):
+        for pg in pgs:
+            if (not pg['state'].count('active')) and (not pg['state'].count('peered')):
+                self.log('PG %s is not active or peered' % pg['pgid'])
+                self.log(pg)
+
     def wait_for_clean(self, timeout=1200):
         """
         Returns true when all pgs are clean.
@@ -2901,7 +2929,11 @@ class CephManager:
         Wrapper to check if all PGs are active or peered
         """
         pgs = self.get_pg_stats()
-        return self._get_num_active(pgs) + self._get_num_peered(pgs) == len(pgs)
+        if self._get_num_active(pgs) + self._get_num_peered(pgs) == len(pgs):
+            return True
+        else:
+            self.dump_pgs_not_active_peered(pgs)
+            return False
 
     def wait_till_active(self, timeout=None):
         """
index c8cdbedd1c6fd791040af3c660e465abdcdb53a5..8788070e7170c31df6ca33deb0bc3d6d925c070f 100644 (file)
@@ -713,6 +713,11 @@ class Filesystem(MDSCluster):
     def run_client_payload(self, cmd):
         # avoid circular dep by importing here:
         from tasks.cephfs.fuse_mount import FuseMount
+
+        # Wait for at MDS daemons to be ready before mounting the
+        # ceph-fuse client in run_client_payload()
+        self.wait_for_daemons()
+
         d = misc.get_testdir(self._ctx)
         m = FuseMount(self._ctx, d, "admin", self.client_remote, cephfs_name=self.name)
         m.mount_wait()
index 9eef819633d1f6e34872abecd64120be81229b53..f20fcc3cda1c4404c37f6485081b7d6b2ce18516 100644 (file)
@@ -1,3 +1,4 @@
+import errno
 import json
 import logging
 import os
@@ -32,6 +33,7 @@ class KernelMount(CephFSMount):
         self.client_config = client_config
         self.dynamic_debug = client_config.get('dynamic_debug', False)
         self.rbytes = client_config.get('rbytes', False)
+        self.snapdirname = client_config.get('snapdirname', '.snap')
         self.syntax_style = client_config.get('syntax', 'v2')
         self.inst = None
         self.addr = None
@@ -107,6 +109,8 @@ class KernelMount(CephFSMount):
             opts += ",rbytes"
         else:
             opts += ",norbytes"
+        if self.snapdirname != '.snap':
+            opts += f',snapdirname={self.snapdirname}'
 
         mount_cmd = ['sudo'] + self._nsenter_args
         stx_opt = self._make_mount_cmd_old_or_new_style()
@@ -212,12 +216,16 @@ class KernelMount(CephFSMount):
         stdout = StringIO()
         stderr = StringIO()
         try:
-            self.run_shell_payload(f"sudo dd if={path}", timeout=(5*60),
-                stdout=stdout, stderr=stderr)
+            self.run_shell_payload(f"sudo dd if={path}", timeout=(5 * 60),
+                                   stdout=stdout, stderr=stderr)
             return stdout.getvalue()
         except CommandFailedError:
             if 'no such file or directory' in stderr.getvalue().lower():
-                return None
+                return errno.ENOENT
+            elif 'not a directory' in stderr.getvalue().lower():
+                return errno.ENOTDIR
+            elif 'permission denied' in stderr.getvalue().lower():
+                return errno.EACCES
             raise
 
     def _get_global_id(self):
@@ -349,8 +357,23 @@ echo '{fdata}' | sudo tee /sys/kernel/debug/dynamic_debug/control
         return epoch, barrier
 
     def get_op_read_count(self):
-        buf = self.read_debug_file("metrics/size")
-        if buf is None:
-            return 0
-        else:
-            return int(re.findall(r'read.*', buf)[0].split()[1])
+        stdout = StringIO()
+        stderr = StringIO()
+        try:
+            path = os.path.join(self._get_debug_dir(), "metrics/size")
+            self.run_shell(f"sudo stat {path}", stdout=stdout,
+                           stderr=stderr, cwd=None)
+            buf = self.read_debug_file("metrics/size")
+        except CommandFailedError:
+            if 'no such file or directory' in stderr.getvalue().lower() \
+                    or 'not a directory' in stderr.getvalue().lower():
+                try:
+                    path = os.path.join(self._get_debug_dir(), "metrics")
+                    self.run_shell(f"sudo stat {path}", stdout=stdout,
+                                   stderr=stderr, cwd=None)
+                    buf = self.read_debug_file("metrics")
+                except CommandFailedError:
+                    return errno.ENOENT
+            else:
+                return 0
+        return int(re.findall(r'read.*', buf)[0].split()[1])
index 41ebcba8587f2c19658fd9afd4173c0f9dbf08a0..d3e3e4587ace0495af7501c217ae832b35b46814 100644 (file)
@@ -697,7 +697,7 @@ class CephFSMount(object):
 
     def run_shell(self, args, timeout=900, **kwargs):
         args = args.split() if isinstance(args, str) else args
-        kwargs.pop('omit_sudo', False)
+        omit_sudo = kwargs.pop('omit_sudo', False)
         sudo = kwargs.pop('sudo', False)
         cwd = kwargs.pop('cwd', self.mountpoint)
         stdout = kwargs.pop('stdout', StringIO())
@@ -706,7 +706,9 @@ class CephFSMount(object):
         if sudo:
             args.insert(0, 'sudo')
 
-        return self.client_remote.run(args=args, cwd=cwd, timeout=timeout, stdout=stdout, stderr=stderr, **kwargs)
+        return self.client_remote.run(args=args, cwd=cwd, timeout=timeout,
+                                      stdout=stdout, stderr=stderr,
+                                      omit_sudo=omit_sudo, **kwargs)
 
     def run_shell_payload(self, payload, **kwargs):
         return self.run_shell(["bash", "-c", Raw(f"'{payload}'")], **kwargs)
@@ -837,6 +839,31 @@ class CephFSMount(object):
 
         return rproc
 
+    def open_dir_background(self, basename):
+        """
+        Create and hold a capability to a directory.
+        """
+        assert(self.is_mounted())
+
+        path = os.path.join(self.hostfs_mntpt, basename)
+
+        pyscript = dedent("""
+            import time
+            import os
+
+            os.mkdir("{path}")
+            fd = os.open("{path}", os.O_RDONLY)
+            while True:
+                time.sleep(1)
+            """).format(path=path)
+
+        rproc = self._run_python(pyscript)
+        self.background_procs.append(rproc)
+
+        self.wait_for_visible(basename)
+
+        return rproc
+
     def wait_for_dir_empty(self, dirname, timeout=30):
         dirpath = os.path.join(self.hostfs_mntpt, dirname)
         with safe_while(sleep=5, tries=(timeout//5)) as proceed:
index 7147807bf521cc4e770d5eae1c5affdbae601391..8fb9f2775a935eb5ef97eebf6e703854b2feae30 100644 (file)
@@ -602,6 +602,25 @@ class TestStandbyReplay(CephFSTestCase):
             self.fs.mds_restart(mds_id=victim['name'])
             status = self._confirm_single_replay(status=status)
 
+    def test_standby_replay_prepare_beacon(self):
+        """
+        That a MDSMonitor::prepare_beacon handles standby-replay daemons
+        correctly without removing the standby. (Note, usually a standby-replay
+        beacon will just be replied to by MDSMonitor::preprocess_beacon.)
+        """
+
+        status = self._confirm_no_replay()
+        self.fs.set_max_mds(1)
+        self.fs.set_allow_standby_replay(True)
+        status = self._confirm_single_replay()
+        replays = list(status.get_replays(self.fs.id))
+        self.assertEqual(len(replays), 1)
+        self.config_set('mds.'+replays[0]['name'], 'mds_inject_health_dummy', True)
+        time.sleep(10) # for something not to happen...
+        status = self._confirm_single_replay()
+        replays2 = list(status.get_replays(self.fs.id))
+        self.assertEqual(replays[0]['gid'], replays2[0]['gid'])
+
     def test_rank_stopped(self):
         """
         That when a rank is STOPPED, standby replays for
index 47b3e63a6da984c1fbfde5d8fc3280ef5cf6c8b4..1f439cd3183144206b47b07b1588365c023533e4 100644 (file)
@@ -83,11 +83,16 @@ class TestNFS(MgrTestCase):
         '''
         event_occurred = False
         # Wait few seconds for NFS daemons' status to be updated
-        with contextutil.safe_while(sleep=10, tries=12, _raise=False) as proceed:
+        with contextutil.safe_while(sleep=10, tries=18, _raise=False) as proceed:
             while not event_occurred and proceed():
                 daemons_details = json.loads(
                     self._fetch_nfs_daemons_details(enable_json=True))
                 log.info('daemons details %s', daemons_details)
+                # 'events' key may not exist in the daemon description
+                # after a mgr fail over and could take some time to appear
+                # (it's populated on first daemon event)
+                if 'events' not in daemons_details[0]:
+                    continue
                 for event in daemons_details[0]['events']:
                     log.info('daemon event %s', event)
                     if expected_event in event:
index b1484ab0713e5a8cb3197a865e6395f9be293400..7e6270f035d22b6d51d8afe358b714f05a63ede8 100644 (file)
@@ -16,8 +16,7 @@ class TestReadahead(CephFSTestCase):
         initial_op_read = self.mount_a.get_op_read_count()
         self.mount_a.run_shell(["dd", "if=foo", "of=/dev/null", "bs=128k", "count=32"])
         op_read = self.mount_a.get_op_read_count()
-
-        assert op_read >= initial_op_read
+        self.assertGreaterEqual(op_read, initial_op_read)
         op_read -= initial_op_read
         log.info("read operations: {0}".format(op_read))
 
index 388e38135ba7e2d6fc79855be250ed8d37c57670..4a9ce838ef7fc22ff2551c78ad3271eb20dd85f2 100644 (file)
@@ -19,7 +19,7 @@ def seconds_upto_next_schedule(time_from, timo):
     ts = int(time_from)
     return ((int(ts / 60) * 60) + timo) - ts
 
-class TestSnapSchedules(CephFSTestCase):
+class TestSnapSchedulesHelper(CephFSTestCase):
     CLIENTS_REQUIRED = 1
 
     TEST_VOLUME_NAME = 'snap_vol'
@@ -54,7 +54,7 @@ class TestSnapSchedules(CephFSTestCase):
         result = json.loads(self._fs_cmd("volume", "ls"))
         if len(result) == 0:
             self.vol_created = True
-            self.volname = TestSnapSchedules.TEST_VOLUME_NAME
+            self.volname = TestSnapSchedulesHelper.TEST_VOLUME_NAME
             self._fs_cmd("volume", "create", self.volname)
         else:
             self.volname = result[0]['name']
@@ -72,7 +72,7 @@ class TestSnapSchedules(CephFSTestCase):
         self.config_set('mgr', 'mgr/snap_schedule/dump_on_update', True)
 
     def setUp(self):
-        super(TestSnapSchedules, self).setUp()
+        super(TestSnapSchedulesHelper, self).setUp()
         self.volname = None
         self.vol_created = False
         self._create_or_reuse_test_volume()
@@ -88,7 +88,7 @@ class TestSnapSchedules(CephFSTestCase):
         if self.vol_created:
             self._delete_test_volume()
         self._disable_snap_schedule()
-        super(TestSnapSchedules, self).tearDown()
+        super(TestSnapSchedulesHelper, self).tearDown()
 
     def _schedule_to_timeout(self, schedule):
         mult = schedule[-1]
@@ -120,14 +120,14 @@ class TestSnapSchedules(CephFSTestCase):
 
     def verify(self, dir_path, max_trials):
         trials = 0
-        snap_path = "{0}/.snap".format(dir_path)
+        snap_path = f'{dir_path}/.snap'
         while (len(self.create_cbks) or len(self.remove_cbks)) and trials < max_trials:
             snapshots = set(self.mount_a.ls(path=snap_path))
-            log.info(f"snapshots: {snapshots}")
+            log.info(f'snapshots: {snapshots}')
             added = snapshots - self.snapshots
-            log.info(f"added: {added}")
+            log.info(f'added: {added}')
             removed = self.snapshots - snapshots
-            log.info(f"removed: {removed}")
+            log.info(f'removed: {removed}')
             if added:
                 for cbk in list(self.create_cbks):
                     res = cbk(list(added))
@@ -151,7 +151,7 @@ class TestSnapSchedules(CephFSTestCase):
 
         # expected "scheduled" snapshot name
         ts_name = (datetime.utcfromtimestamp(snap_sched_exec_epoch)
-                   + timedelta(seconds=wait_timo)).strftime(TestSnapSchedules.SNAPSHOT_TS_FORMAT)
+                   + timedelta(seconds=wait_timo)).strftime(TestSnapSchedulesHelper.SNAPSHOT_TS_FORMAT)
         return (wait_timo, ts_name)
 
     def verify_schedule(self, dir_path, schedules, retentions=[]):
@@ -165,7 +165,8 @@ class TestSnapSchedules(CephFSTestCase):
             self.assertTrue(schedule in json_res['schedule'])
         for retention in retentions:
             self.assertTrue(retention in json_res['retention'])
-
+    
+class TestSnapSchedules(TestSnapSchedulesHelper):
     def remove_snapshots(self, dir_path):
         snap_path = f'{dir_path}/.snap'
 
@@ -359,7 +360,7 @@ class TestSnapSchedules(CephFSTestCase):
         snap_path = f"{dir_path}/.snap"[1:]
         snapshots = self.mount_a.ls(path=snap_path)
         fs_count = len(snapshots)
-        log.debug(f'snapshots: {snapshots}');
+        log.debug(f'snapshots: {snapshots}')
 
         result = self.fs_snap_schedule_cmd('status', path=dir_path,
                                            snap_schedule='1M', format='json')
@@ -453,4 +454,50 @@ class TestSnapSchedules(CephFSTestCase):
         # cleanup
         self.fs_snap_schedule_cmd('remove', path=testdir, snap_schedule='1M')
         self.remove_snapshots(testdir[1:])
-        self.mount_a.run_shell(['rmdir', testdir[1:]])
+        self.mount_a.run_shell(['rmdir', testdir[1:]])    
+
+class TestSnapSchedulesSnapdir(TestSnapSchedulesHelper):
+    def remove_snapshots(self, dir_path, sdn):
+        snap_path = f'{dir_path}/{sdn}'
+
+        snapshots = self.mount_a.ls(path=snap_path)
+        for snapshot in snapshots:
+            snapshot_path = os.path.join(snap_path, snapshot)
+            log.debug(f'removing snapshot: {snapshot_path}')
+            self.mount_a.run_shell(['rmdir', snapshot_path])
+
+    def get_snap_dir_name(self):
+        from tasks.cephfs.fuse_mount import FuseMount
+        from tasks.cephfs.kernel_mount import KernelMount
+
+        if isinstance(self.mount_a, KernelMount):
+            sdn = self.mount_a.client_config.get('snapdirname', '.snap')
+        elif isinstance(self.mount_a, FuseMount):
+            sdn = self.mount_a.client_config.get('client_snapdir', '.snap')
+            self.fs.set_ceph_conf('client', 'client snapdir', sdn)
+            self.mount_a.remount()
+        return sdn
+
+    def test_snap_dir_name(self):
+        """Test the correctness of snap directory name"""
+        self.mount_a.run_shell(['mkdir', '-p', TestSnapSchedulesSnapdir.TEST_DIRECTORY])
+
+        # set a schedule on the dir
+        self.fs_snap_schedule_cmd('add', path=TestSnapSchedulesSnapdir.TEST_DIRECTORY, snap_schedule='1M')
+        self.fs_snap_schedule_cmd('retention', 'add', path=TestSnapSchedulesSnapdir.TEST_DIRECTORY, retention_spec_or_period='1M')
+        exec_time = time.time()
+
+        timo, snap_sfx = self.calc_wait_time_and_snap_name(exec_time, '1M')
+        sdn = self.get_snap_dir_name()
+        log.info(f'expecting snap {TestSnapSchedulesSnapdir.TEST_DIRECTORY}/{sdn}/scheduled-{snap_sfx} in ~{timo}s...')
+        
+        # verify snapshot schedule
+        self.verify_schedule(TestSnapSchedulesSnapdir.TEST_DIRECTORY, ['1M'], retentions=[{'M':1}])
+        
+        # remove snapshot schedule
+        self.fs_snap_schedule_cmd('remove', path=TestSnapSchedulesSnapdir.TEST_DIRECTORY)
+
+        # remove all scheduled snapshots
+        self.remove_snapshots(TestSnapSchedulesSnapdir.TEST_DIRECTORY, sdn)
+
+        self.mount_a.run_shell(['rmdir', TestSnapSchedulesSnapdir.TEST_DIRECTORY])
index 582f1a81bcd4acefcae76906c93ad98599339f7d..8bdc126e2b647c2d7bcf6451bcf78713cc365fa6 100644 (file)
@@ -602,7 +602,6 @@ class TestStrays(CephFSTestCase):
         """
         :param to_id: MDS id to move it to
         :param path: Filesystem path (string) to move
-        :param watch_ino: Inode number to look for at destination to confirm move
         :return: None
         """
         self.mount_a.run_shell(["setfattr", "-n", "ceph.dir.pin", "-v", str(rank), path])
@@ -700,6 +699,46 @@ ln dir_1/original dir_2/linkto
         # See that the stray counter on rank 0 has incremented
         self.assertEqual(self.get_mdc_stat("strays_created", rank_0_id), 1)
 
+    def test_migrate_unlinked_dir(self):
+        """
+        Reproduce https://tracker.ceph.com/issues/53597
+        """
+        rank_0_id, rank_1_id = self._setup_two_ranks()
+
+        self.mount_a.run_shell_payload("""
+mkdir pin
+touch pin/placeholder
+""")
+
+        self._force_migrate("pin")
+
+        # Hold the dir open so it cannot be purged
+        p = self.mount_a.open_dir_background("pin/to-be-unlinked")
+
+        # Unlink the dentry
+        self.mount_a.run_shell(["rmdir", "pin/to-be-unlinked"])
+
+        # Wait to see the stray count increment
+        self.wait_until_equal(
+            lambda: self.get_mdc_stat("num_strays", mds_id=rank_1_id),
+            expect_val=1, timeout=60, reject_fn=lambda x: x > 1)
+        # but not purged
+        self.assertEqual(self.get_mdc_stat("strays_created", mds_id=rank_1_id), 1)
+        self.assertEqual(self.get_mdc_stat("strays_enqueued", mds_id=rank_1_id), 0)
+
+        # Test loading unlinked dir into cache
+        self.fs.mds_asok(['flush', 'journal'], rank_1_id)
+        self.fs.mds_asok(['cache', 'drop'], rank_1_id)
+
+        # Shut down rank 1
+        self.fs.set_max_mds(1)
+        self.fs.wait_for_daemons(timeout=120)
+        # Now the stray should be migrated to rank 0
+        # self.assertEqual(self.get_mdc_stat("strays_created", mds_id=rank_0_id), 1)
+        # https://github.com/ceph/ceph/pull/44335#issuecomment-1125940158
+
+        self.mount_a.kill_background(p)
+
     def assert_backtrace(self, ino, expected_path):
         """
         Assert that the backtrace in the data pool for an inode matches
index 9b564917172ce4a3386c59d6208bfcb4bc96e3e0..330b6cb941fe3a59db763e8fb9cfefb826c8b1ab 100644 (file)
@@ -207,12 +207,24 @@ class TestVolumesHelper(CephFSTestCase):
         else:
             self.volname = result[0]['name']
 
+    def  _get_volume_info(self, vol_name):
+        args = ["volume", "info", vol_name]
+        args = tuple(args)
+        vol_md = self._fs_cmd(*args)
+        return vol_md
+
     def  _get_subvolume_group_path(self, vol_name, group_name):
         args = ("subvolumegroup", "getpath", vol_name, group_name)
         path = self._fs_cmd(*args)
         # remove the leading '/', and trailing whitespaces
         return path[1:].rstrip()
 
+    def  _get_subvolume_group_info(self, vol_name, group_name):
+        args = ["subvolumegroup", "info", vol_name, group_name]
+        args = tuple(args)
+        group_md = self._fs_cmd(*args)
+        return group_md
+
     def  _get_subvolume_path(self, vol_name, subvol_name, group_name=None):
         args = ["subvolume", "getpath", vol_name, subvol_name]
         if group_name:
@@ -296,12 +308,22 @@ class TestVolumesHelper(CephFSTestCase):
         # flip ownership to nobody. assumption: nobody's id is 65534
         self.mount_a.run_shell(["chown", "-h", "65534:65534", sym_path2], sudo=True, omit_sudo=False)
 
-    def _wait_for_trash_empty(self, timeout=30):
+    def _wait_for_trash_empty(self, timeout=60):
         # XXX: construct the trash dir path (note that there is no mgr
         # [sub]volume interface for this).
         trashdir = os.path.join("./", "volumes", "_deleting")
         self.mount_a.wait_for_dir_empty(trashdir, timeout=timeout)
 
+    def _wait_for_subvol_trash_empty(self, subvol, group="_nogroup", timeout=30):
+        trashdir = os.path.join("./", "volumes", group, subvol, ".trash")
+        try:
+            self.mount_a.wait_for_dir_empty(trashdir, timeout=timeout)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.ENOENT:
+                pass
+            else:
+                raise
+
     def _assert_meta_location_and_version(self, vol_name, subvol_name, subvol_group=None, version=2, legacy=False):
         if legacy:
             subvol_path = self._get_subvolume_path(vol_name, subvol_name, group_name=subvol_group)
@@ -608,6 +630,38 @@ class TestVolumes(TestVolumesHelper):
         # data pool names unchanged
         self.assertCountEqual(orig_data_pool_names, list(self.fs.data_pools.values()))
 
+    def test_volume_info(self):
+        """
+        Tests the 'fs volume info' command
+        """
+        vol_fields = ["pools", "used_size", "pending_subvolume_deletions", "mon_addrs"]
+        group = self._generate_random_group_name()
+        # create subvolumegroup
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        # get volume metadata
+        vol_info = json.loads(self._get_volume_info(self.volname))
+        for md in vol_fields:
+            self.assertIn(md, vol_info,
+                          f"'{md}' key not present in metadata of volume")
+        self.assertEqual(vol_info["used_size"], 0,
+                         "Size should be zero when volumes directory is empty")
+
+    def test_volume_info_without_subvolumegroup(self):
+        """
+        Tests the 'fs volume info' command without subvolume group
+        """
+        vol_fields = ["pools", "mon_addrs"]
+        # get volume metadata
+        vol_info = json.loads(self._get_volume_info(self.volname))
+        for md in vol_fields:
+            self.assertIn(md, vol_info,
+                          f"'{md}' key not present in metadata of volume")
+        self.assertNotIn("used_size", vol_info,
+                         "'used_size' should not be present in absence of subvolumegroup")
+        self.assertNotIn("pending_subvolume_deletions", vol_info,
+                         "'pending_subvolume_deletions' should not be present in absence"
+                         " of subvolumegroup")
+
 
 class TestSubvolumeGroups(TestVolumesHelper):
     """Tests for FS subvolume group operations."""
@@ -760,6 +814,805 @@ class TestSubvolumeGroups(TestVolumesHelper):
         else:
             raise RuntimeError("expected the 'fs subvolumegroup create' command to fail")
 
+    def test_subvolume_group_create_with_size(self):
+        # create group with size -- should set quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "1000000000")
+
+        # get group metadata
+        group_info = json.loads(self._get_subvolume_group_info(self.volname, group))
+        self.assertEqual(group_info["bytes_quota"], 1000000000)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_info(self):
+        # tests the 'fs subvolumegroup info' command
+
+        group_md = ["atime", "bytes_pcent", "bytes_quota", "bytes_used", "created_at", "ctime",
+                     "data_pool", "gid", "mode", "mon_addrs", "mtime", "uid"]
+
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # get group metadata
+        group_info = json.loads(self._get_subvolume_group_info(self.volname, group))
+        for md in group_md:
+            self.assertIn(md, group_info, "'{0}' key not present in metadata of group".format(md))
+
+        self.assertEqual(group_info["bytes_pcent"], "undefined", "bytes_pcent should be set to undefined if quota is not set")
+        self.assertEqual(group_info["bytes_quota"], "infinite", "bytes_quota should be set to infinite if quota is not set")
+        self.assertEqual(group_info["uid"], 0)
+        self.assertEqual(group_info["gid"], 0)
+
+        nsize = self.DEFAULT_FILE_SIZE*1024*1024
+        self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize))
+
+        # get group metadata after quota set
+        group_info = json.loads(self._get_subvolume_group_info(self.volname, group))
+        for md in group_md:
+            self.assertIn(md, group_info, "'{0}' key not present in metadata of subvolume".format(md))
+
+        self.assertNotEqual(group_info["bytes_pcent"], "undefined", "bytes_pcent should not be set to undefined if quota is set")
+        self.assertEqual(group_info["bytes_quota"], nsize, "bytes_quota should be set to '{0}'".format(nsize))
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_create_idempotence(self):
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # try creating w/ same subvolume group name -- should be idempotent
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_create_idempotence_mode(self):
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # try creating w/ same subvolume group name with mode -- should set mode
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "--mode=766")
+
+        group_path = self._get_subvolume_group_path(self.volname, group)
+
+        # check subvolumegroup's  mode
+        mode = self.mount_a.run_shell(['stat', '-c' '%a', group_path]).stdout.getvalue().strip()
+        self.assertEqual(mode, "766")
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_create_idempotence_uid_gid(self):
+        desired_uid = 1000
+        desired_gid = 1000
+
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # try creating w/ same subvolume group name with uid/gid -- should set uid/gid
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "--uid", str(desired_uid), "--gid", str(desired_gid))
+
+        group_path = self._get_subvolume_group_path(self.volname, group)
+
+        # verify the uid and gid
+        actual_uid = int(self.mount_a.run_shell(['stat', '-c' '%u', group_path]).stdout.getvalue().strip())
+        actual_gid = int(self.mount_a.run_shell(['stat', '-c' '%g', group_path]).stdout.getvalue().strip())
+        self.assertEqual(desired_uid, actual_uid)
+        self.assertEqual(desired_gid, actual_gid)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_create_idempotence_data_pool(self):
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        group_path = self._get_subvolume_group_path(self.volname, group)
+
+        default_pool = self.mount_a.getfattr(group_path, "ceph.dir.layout.pool")
+        new_pool = "new_pool"
+        self.assertNotEqual(default_pool, new_pool)
+
+        # add data pool
+        newid = self.fs.add_data_pool(new_pool)
+
+        # try creating w/ same subvolume group name with new data pool -- should set pool
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "--pool_layout", new_pool)
+        desired_pool = self.mount_a.getfattr(group_path, "ceph.dir.layout.pool")
+        try:
+            self.assertEqual(desired_pool, new_pool)
+        except AssertionError:
+            self.assertEqual(int(desired_pool), newid) # old kernel returns id
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_create_idempotence_resize(self):
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # try creating w/ same subvolume name with size -- should set quota
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "1000000000")
+
+        # get group metadata
+        group_info = json.loads(self._get_subvolume_group_info(self.volname, group))
+        self.assertEqual(group_info["bytes_quota"], 1000000000)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_quota_mds_path_restriction_to_group_path(self):
+        """
+        Tests subvolumegroup quota enforcement with mds path restriction set to group.
+        For quota to be enforced, read permission needs to be provided to the parent
+        of the directory on which quota is set. Please see the tracker comment [1]
+        [1] https://tracker.ceph.com/issues/55090#note-8
+        """
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*100
+        # create group with 100MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # Create auth_id
+        authid = "client.guest1"
+        user = json.loads(self.fs.mon_manager.raw_cluster_cmd(
+            "auth", "get-or-create", authid,
+            "mds", "allow rw path=/volumes",
+            "mgr", "allow rw",
+            "osd", "allow rw tag cephfs *=*",
+            "mon", "allow r",
+            "--format=json-pretty"
+            ))
+
+        # Prepare guest_mount with new authid
+        guest_mount = self.mount_b
+        guest_mount.umount_wait()
+
+        # configure credentials for guest client
+        self._configure_guest_auth(guest_mount, "guest1", user[0]["key"])
+
+        # mount the subvolume
+        mount_path = os.path.join("/", subvolpath)
+        guest_mount.mount_wait(cephfs_mntpt=mount_path)
+
+        # create 99 files of 1MB
+        guest_mount.run_shell_payload("mkdir -p dir1")
+        for i in range(99):
+            filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+            guest_mount.write_n_mb(os.path.join("dir1", filename), self.DEFAULT_FILE_SIZE)
+        try:
+            # write two files of 1MB file to exceed the quota
+            guest_mount.run_shell_payload("mkdir -p dir2")
+            for i in range(2):
+                filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+                guest_mount.write_n_mb(os.path.join("dir2", filename), self.DEFAULT_FILE_SIZE)
+            # For quota to be enforced
+            time.sleep(60)
+            # create 400 files of 1MB to exceed quota
+            for i in range(400):
+                filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+                guest_mount.write_n_mb(os.path.join("dir2", filename), self.DEFAULT_FILE_SIZE)
+                # Sometimes quota enforcement takes time.
+                if i == 200:
+                    time.sleep(60)
+        except CommandFailedError:
+            pass
+        else:
+            self.fail(f"expected filling subvolume {subvolname} with 400 files of size 1MB to fail")
+
+        # clean up
+        guest_mount.umount_wait()
+
+        # Delete the subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_mds_path_restriction_to_subvolume_path(self):
+        """
+        Tests subvolumegroup quota enforcement with mds path restriction set to subvolume path
+        The quota should not be enforced because of the fourth limitation mentioned at
+        https://docs.ceph.com/en/latest/cephfs/quota/#limitations
+        """
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*100
+        # create group with 100MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        mount_path = os.path.join("/", subvolpath)
+
+        # Create auth_id
+        authid = "client.guest1"
+        user = json.loads(self.fs.mon_manager.raw_cluster_cmd(
+            "auth", "get-or-create", authid,
+            "mds", f"allow rw path={mount_path}",
+            "mgr", "allow rw",
+            "osd", "allow rw tag cephfs *=*",
+            "mon", "allow r",
+            "--format=json-pretty"
+            ))
+
+        # Prepare guest_mount with new authid
+        guest_mount = self.mount_b
+        guest_mount.umount_wait()
+
+        # configure credentials for guest client
+        self._configure_guest_auth(guest_mount, "guest1", user[0]["key"])
+
+        # mount the subvolume
+        guest_mount.mount_wait(cephfs_mntpt=mount_path)
+
+        # create 99 files of 1MB to exceed quota
+        guest_mount.run_shell_payload("mkdir -p dir1")
+        for i in range(99):
+            filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+            guest_mount.write_n_mb(os.path.join("dir1", filename), self.DEFAULT_FILE_SIZE)
+        try:
+            # write two files of 1MB file to exceed the quota
+            guest_mount.run_shell_payload("mkdir -p dir2")
+            for i in range(2):
+                filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+                guest_mount.write_n_mb(os.path.join("dir2", filename), self.DEFAULT_FILE_SIZE)
+            # For quota to be enforced
+            time.sleep(60)
+            # create 400 files of 1MB to exceed quota
+            for i in range(400):
+                filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, i)
+                guest_mount.write_n_mb(os.path.join("dir2", filename), self.DEFAULT_FILE_SIZE)
+                # Sometimes quota enforcement takes time.
+                if i == 200:
+                    time.sleep(60)
+        except CommandFailedError:
+            self.fail(f"Quota should not be enforced, expected filling subvolume {subvolname} with 400 files of size 1MB to succeed")
+
+        # clean up
+        guest_mount.umount_wait()
+
+        # Delete the subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_exceeded_subvolume_removal(self):
+        """
+        Tests subvolume removal if it's group quota is exceeded
+        """
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*100
+        # create group with 100MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create 99 files of 1MB to exceed quota
+        self._do_subvolume_io(subvolname, subvolume_group=group, number_of_files=99)
+
+        try:
+            # write two files of 1MB file to exceed the quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=2)
+            # For quota to be enforced
+            time.sleep(20)
+            # create 400 files of 1MB to exceed quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=400)
+        except CommandFailedError:
+            # Delete subvolume when group quota is exceeded
+            self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        else:
+            self.fail(f"expected filling subvolume {subvolname} with 400 files of size 1MB to fail")
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_exceeded_subvolume_removal_retained_snaps(self):
+        """
+        Tests retained snapshot subvolume removal if it's group quota is exceeded
+        """
+        group = self._generate_random_group_name()
+        subvolname = self._generate_random_subvolume_name()
+        snapshot1, snapshot2 = self._generate_random_snapshot_name(2)
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*100
+        # create group with 100MB quota
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create 99 files of 1MB to exceed quota
+        self._do_subvolume_io(subvolname, subvolume_group=group, number_of_files=99)
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolname, snapshot1, "--group_name", group)
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolname, snapshot2, "--group_name", group)
+
+        try:
+            # write two files of 1MB file to exceed the quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=2)
+            # For quota to be enforced
+            time.sleep(20)
+            # create 400 files of 1MB to exceed quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, number_of_files=400)
+        except CommandFailedError:
+            # remove with snapshot retention
+            self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group, "--retain-snapshots")
+            # remove snapshot1
+            self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolname, snapshot1, "--group_name", group)
+            # remove snapshot2 (should remove volume)
+            self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolname, snapshot2, "--group_name", group)
+            # verify subvolume trash is clean
+            self._wait_for_subvol_trash_empty(subvolname, group=group)
+        else:
+            self.fail(f"expected filling subvolume {subvolname} with 400 files of size 1MB to fail")
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_subvolume_removal(self):
+        """
+        Tests subvolume removal if it's group quota is set.
+        """
+        # create group with size -- should set quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "1000000000")
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname, "--group_name", group)
+
+        # remove subvolume
+        try:
+            self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        except CommandFailedError:
+            self.fail("expected the 'fs subvolume rm' command to succeed if group quota is set")
+
+        # remove subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_legacy_subvolume_removal(self):
+        """
+        Tests legacy subvolume removal if it's group quota is set.
+        """
+        subvolume = self._generate_random_subvolume_name()
+        group = self._generate_random_group_name()
+
+        # emulate a old-fashioned subvolume -- in a custom group
+        createpath1 = os.path.join(".", "volumes", group, subvolume)
+        self.mount_a.run_shell(['mkdir', '-p', createpath1], sudo=True)
+
+        # this would auto-upgrade on access without anyone noticing
+        subvolpath1 = self._fs_cmd("subvolume", "getpath", self.volname, subvolume, "--group-name", group)
+        self.assertNotEqual(subvolpath1, None)
+        subvolpath1 = subvolpath1.rstrip() # remove "/" prefix and any trailing newline
+
+        # and... the subvolume path returned should be what we created behind the scene
+        self.assertEqual(createpath1[1:], subvolpath1)
+
+        # Set subvolumegroup quota on idempotent subvolumegroup creation
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "1000000000")
+
+        # remove subvolume
+        try:
+            self._fs_cmd("subvolume", "rm", self.volname, subvolume, "--group_name", group)
+        except CommandFailedError:
+            self.fail("expected the 'fs subvolume rm' command to succeed if group quota is set")
+
+        # remove subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_quota_v1_subvolume_removal(self):
+        """
+        Tests v1 subvolume removal if it's group quota is set.
+        """
+        subvolume = self._generate_random_subvolume_name()
+        group = self._generate_random_group_name()
+
+        # emulate a v1 subvolume -- in a custom group
+        self._create_v1_subvolume(subvolume, subvol_group=group, has_snapshot=False)
+
+        # Set subvolumegroup quota on idempotent subvolumegroup creation
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "1000000000")
+
+        # remove subvolume
+        try:
+            self._fs_cmd("subvolume", "rm", self.volname, subvolume, "--group_name", group)
+        except CommandFailedError:
+            self.fail("expected the 'fs subvolume rm' command to succeed if group quota is set")
+
+        # remove subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_resize_fail_invalid_size(self):
+        """
+        That a subvolume group cannot be resized to an invalid size and the quota did not change
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024
+        # create group with 1MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "--size", str(osize))
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # try to resize the subvolume with an invalid size -10
+        nsize = -10
+        try:
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize))
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL,
+                             "invalid error code on resize of subvolume group with invalid size")
+        else:
+            self.fail("expected the 'fs subvolumegroup resize' command to fail")
+
+        # verify the quota did not change
+        size = int(self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes"))
+        self.assertEqual(size, osize)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_resize_fail_zero_size(self):
+        """
+        That a subvolume group cannot be resized to a zero size and the quota did not change
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024
+        # create group with 1MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group, "--size", str(osize))
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # try to resize the subvolume group with size 0
+        nsize = 0
+        try:
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize))
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL,
+                             "invalid error code on resize of subvolume group with invalid size")
+        else:
+            self.fail("expected the 'fs subvolumegroup resize' command to fail")
+
+        # verify the quota did not change
+        size = int(self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes"))
+        self.assertEqual(size, osize)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_resize_quota_lt_used_size(self):
+        """
+        That a subvolume group can be resized to a size smaller than the current used size
+        and the resulting quota matches the expected size.
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*20
+        # create group with 20MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create one file of 10MB
+        file_size=self.DEFAULT_FILE_SIZE*10
+        number_of_files=1
+        log.debug("filling subvolume {0} with {1} file of size {2}MB".format(subvolname,
+                                                                             number_of_files,
+                                                                             file_size))
+        filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, self.DEFAULT_NUMBER_OF_FILES+1)
+        self.mount_a.write_n_mb(os.path.join(subvolpath, filename), file_size)
+
+        usedsize = int(self.mount_a.getfattr(subvolpath, "ceph.dir.rbytes"))
+
+        # shrink the subvolume group
+        nsize = usedsize // 2
+        try:
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize))
+        except CommandFailedError:
+            self.fail("expected the 'fs subvolumegroup resize' command to succeed")
+
+        # verify the quota
+        size = int(self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes"))
+        self.assertEqual(size, nsize)
+
+        # remove subvolume and group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_resize_fail_quota_lt_used_size_no_shrink(self):
+        """
+        That a subvolume group cannot be resized to a size smaller than the current used size
+        when --no_shrink is given and the quota did not change.
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*20
+        # create group with 20MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create one file of 10MB
+        file_size=self.DEFAULT_FILE_SIZE*10
+        number_of_files=1
+        log.debug("filling subvolume {0} with {1} file of size {2}MB".format(subvolname,
+                                                                             number_of_files,
+                                                                             file_size))
+        filename = "{0}.{1}".format(TestVolumes.TEST_FILE_NAME_PREFIX, self.DEFAULT_NUMBER_OF_FILES+2)
+        self.mount_a.write_n_mb(os.path.join(subvolpath, filename), file_size)
+
+        usedsize = int(self.mount_a.getfattr(grouppath, "ceph.dir.rbytes"))
+
+        # shrink the subvolume group
+        nsize = usedsize // 2
+        try:
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize), "--no_shrink")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL, "invalid error code on resize of subvolumegroup with quota less than used")
+        else:
+            self.fail("expected the 'fs subvolumegroup resize' command to fail")
+
+        # verify the quota did not change
+        size = int(self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes"))
+        self.assertEqual(size, osize)
+
+        # remove subvolume and group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_resize_expand_on_full_subvolume(self):
+        """
+        That the subvolume group can be expanded after it is full and future write succeed
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*100
+        # create group with 100MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create 99 files of 1MB
+        self._do_subvolume_io(subvolname, subvolume_group=group, number_of_files=99)
+
+        try:
+            # write two files of 1MB file to exceed the quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=2)
+            # For quota to be enforced
+            time.sleep(20)
+            # create 500 files of 1MB
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=500)
+        except CommandFailedError:
+            # Not able to write. So expand the subvolumegroup more and try writing the files again
+            nsize = osize*7
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, str(nsize))
+            try:
+                self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=500)
+            except CommandFailedError:
+                self.fail("expected filling subvolume {0} with 500 files of size 1MB "
+                          "to succeed".format(subvolname))
+        else:
+            self.fail("expected filling subvolume {0} with 500 files of size 1MB "
+                      "to fail".format(subvolname))
+
+        # remove subvolume and group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_group_resize_infinite_size(self):
+        """
+        That a subvolume group can be resized to an infinite size by unsetting its quota.
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize))
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # resize inf
+        self._fs_cmd("subvolumegroup", "resize", self.volname, group, "inf")
+
+        # verify that the quota is None
+        size = self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes")
+        self.assertEqual(size, None)
+
+        # remove subvolume group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_group_resize_infinite_size_future_writes(self):
+        """
+        That a subvolume group can be resized to an infinite size and the future writes succeed.
+        """
+
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*5
+        # create group with 5MB quota
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group,
+                     "--size", str(osize), "--mode=777")
+
+        # make sure it exists
+        grouppath = self._get_subvolume_group_path(self.volname, group)
+        self.assertNotEqual(grouppath, None)
+
+        # create subvolume under the group
+        subvolname = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolname,
+                     "--group_name", group, "--mode=777")
+
+        # make sure it exists
+        subvolpath = self._get_subvolume_path(self.volname, subvolname, group_name=group)
+        self.assertNotEqual(subvolpath, None)
+
+        # create 4 files of 1MB
+        self._do_subvolume_io(subvolname, subvolume_group=group, number_of_files=4)
+
+        try:
+            # write two files of 1MB file to exceed the quota
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=2)
+            # For quota to be enforced
+            time.sleep(20)
+            # create 500 files of 1MB
+            self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=500)
+        except CommandFailedError:
+            # Not able to write. So resize subvolumegroup to 'inf' and try writing the files again
+            # resize inf
+            self._fs_cmd("subvolumegroup", "resize", self.volname, group, "inf")
+            try:
+                self._do_subvolume_io(subvolname, subvolume_group=group, create_dir='dir1', number_of_files=500)
+            except CommandFailedError:
+                self.fail("expected filling subvolume {0} with 500 files of size 1MB "
+                          "to succeed".format(subvolname))
+        else:
+            self.fail("expected filling subvolume {0} with 500 files of size 1MB "
+                      "to fail".format(subvolname))
+
+
+        # verify that the quota is None
+        size = self.mount_a.getfattr(grouppath, "ceph.quota.max_bytes")
+        self.assertEqual(size, None)
+
+        # remove subvolume and group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, "--group_name", group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
     def test_subvolume_group_ls(self):
         # tests the 'fs subvolumegroup ls' command
 
@@ -793,10 +1646,47 @@ class TestSubvolumeGroups(TestVolumesHelper):
         self._fs_cmd("subvolume", "create", self.volname, subvolume)
         self._fs_cmd("subvolume", "rm", self.volname, subvolume)
 
-        subvolumegroupls = json.loads(self._fs_cmd('subvolumegroup', 'ls', self.volname))
-        subvolgroupnames = [subvolumegroup['name'] for subvolumegroup in subvolumegroupls]
-        if "_deleting" in subvolgroupnames:
-            self.fail("Listing subvolume groups listed '_deleting' directory")
+        subvolumegroupls = json.loads(self._fs_cmd('subvolumegroup', 'ls', self.volname))
+        subvolgroupnames = [subvolumegroup['name'] for subvolumegroup in subvolumegroupls]
+        if "_deleting" in subvolgroupnames:
+            self.fail("Listing subvolume groups listed '_deleting' directory")
+
+    def test_subvolume_group_ls_filter_internal_directories(self):
+        # tests the 'fs subvolumegroup ls' command filters internal directories
+        # eg: '_deleting', '_nogroup', '_index', "_legacy"
+
+        subvolumegroups = self._generate_random_group_name(3)
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
+
+        #create subvolumegroups
+        for groupname in subvolumegroups:
+            self._fs_cmd("subvolumegroup", "create", self.volname, groupname)
+
+        # create subvolume which will create '_nogroup' directory
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+
+        # create snapshot
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # clone snapshot which will create '_index' directory
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # remove snapshot
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+
+        # remove subvolume which will create '_deleting' directory
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+
+        # list subvolumegroups
+        ret = json.loads(self._fs_cmd('subvolumegroup', 'ls', self.volname))
+        self.assertEqual(len(ret), len(subvolumegroups))
+
+        ret_list = [subvolumegroup['name'] for subvolumegroup in ret]
+        self.assertEqual(len(ret_list), len(subvolumegroups))
+
+        self.assertEqual(all(elem in subvolumegroups for elem in ret_list), True)
 
     def test_subvolume_group_ls_for_nonexistent_volume(self):
         # tests the 'fs subvolumegroup ls' command when /volume doesn't exist
@@ -835,6 +1725,66 @@ class TestSubvolumeGroups(TestVolumesHelper):
         except CommandFailedError:
             raise RuntimeError("expected the 'fs subvolumegroup rm --force' command to succeed")
 
+    def test_subvolume_group_exists_with_subvolumegroup_and_no_subvolume(self):
+        """Test the presence of any subvolumegroup when only subvolumegroup is present"""
+
+        group = self._generate_random_group_name()
+        # create subvolumegroup
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "subvolumegroup exists")
+        # delete subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolumegroup exists")
+
+    def test_subvolume_group_exists_with_no_subvolumegroup_and_subvolume(self):
+        """Test the presence of any subvolumegroup when no subvolumegroup is present"""
+
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolumegroup exists")
+
+    def test_subvolume_group_exists_with_subvolumegroup_and_subvolume(self):
+        """Test the presence of any subvolume when subvolumegroup
+            and subvolume both are present"""
+
+        group = self._generate_random_group_name()
+        subvolume = self._generate_random_subvolume_name(2)
+        # create subvolumegroup
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        # create subvolume in group
+        self._fs_cmd("subvolume", "create", self.volname, subvolume[0], "--group_name", group)
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume[1])
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "subvolumegroup exists")
+        # delete subvolume in group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume[0], "--group_name", group)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "subvolumegroup exists")
+        # delete subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume[1])
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "subvolumegroup exists")
+        # delete subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolumegroup exists")
+
+    def test_subvolume_group_exists_without_subvolumegroup_and_with_subvolume(self):
+        """Test the presence of any subvolume when subvolume is present
+            but no subvolumegroup is present"""
+
+        subvolume = self._generate_random_subvolume_name()
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolumegroup exists")
+        # delete subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        ret = self._fs_cmd("subvolumegroup", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolumegroup exists")
+
 
 class TestSubvolumes(TestVolumesHelper):
     """Tests for FS subvolume operations, except snapshot and snapshot clone."""
@@ -1214,6 +2164,41 @@ class TestSubvolumes(TestVolumesHelper):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_create_and_ls_providing_group_as_nogroup(self):
+        """
+        That a 'subvolume create' and 'subvolume ls' should throw
+        permission denied error if option --group=_nogroup is provided.
+        """
+
+        subvolname = self._generate_random_subvolume_name()
+
+        # try to create subvolume providing --group_name=_nogroup option
+        try:
+            self._fs_cmd("subvolume", "create", self.volname, subvolname, "--group_name", "_nogroup")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EPERM)
+        else:
+            self.fail("expected the 'fs subvolume create' command to fail")
+
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolname)
+
+        # try to list subvolumes providing --group_name=_nogroup option
+        try:
+            self._fs_cmd("subvolume", "ls", self.volname, "--group_name", "_nogroup")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EPERM)
+        else:
+            self.fail("expected the 'fs subvolume ls' command to fail")
+
+        # list subvolumes
+        self._fs_cmd("subvolume", "ls", self.volname)
+
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname)
+
+        # verify trash dir is clean.
+        self._wait_for_trash_empty()
+
     def test_subvolume_expand(self):
         """
         That a subvolume can be expanded in size and its quota matches the expected size.
@@ -1318,6 +2303,44 @@ class TestSubvolumes(TestVolumesHelper):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_ls_with_groupname_as_internal_directory(self):
+        # tests the 'fs subvolume ls' command when the default groupname as internal directories
+        # Eg: '_nogroup', '_legacy', '_deleting', '_index'.
+        # Expecting 'fs subvolume ls' will be fail with errno EINVAL for '_legacy', '_deleting', '_index'
+        # Expecting 'fs subvolume ls' will be fail with errno EPERM for '_nogroup'
+
+        # try to list subvolumes providing --group_name=_nogroup option
+        try:
+            self._fs_cmd("subvolume", "ls", self.volname, "--group_name", "_nogroup")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EPERM)
+        else:
+            self.fail("expected the 'fs subvolume ls' command to fail with error 'EPERM' for _nogroup")
+
+        # try to list subvolumes providing --group_name=_legacy option
+        try:
+            self._fs_cmd("subvolume", "ls", self.volname, "--group_name", "_legacy")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL)
+        else:
+            self.fail("expected the 'fs subvolume ls' command to fail with error 'EINVAL' for _legacy")
+
+        # try to list subvolumes providing --group_name=_deleting option
+        try:
+            self._fs_cmd("subvolume", "ls", self.volname, "--group_name", "_deleting")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL)
+        else:
+            self.fail("expected the 'fs subvolume ls' command to fail with error 'EINVAL' for _deleting")
+
+        # try to list subvolumes providing --group_name=_index option
+        try:
+            self._fs_cmd("subvolume", "ls", self.volname, "--group_name", "_index")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EINVAL)
+        else:
+            self.fail("expected the 'fs subvolume ls' command to fail with error 'EINVAL' for _index")
+
     def test_subvolume_ls_for_notexistent_default_group(self):
         # tests the 'fs subvolume ls' command when the default group '_nogroup' doesn't exist
         # prerequisite: we expect that the volume is created and the default group _nogroup is
@@ -2421,6 +3444,57 @@ class TestSubvolumes(TestVolumesHelper):
         except CommandFailedError:
             self.fail("expected the 'fs subvolume rm --force' command to succeed")
 
+    def test_subvolume_exists_with_subvolumegroup_and_subvolume(self):
+        """Test the presence of any subvolume by specifying the name of subvolumegroup"""
+
+        group = self._generate_random_group_name()
+        subvolume1 = self._generate_random_subvolume_name()
+        # create subvolumegroup
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        # create subvolume in group
+        self._fs_cmd("subvolume", "create", self.volname, subvolume1, "--group_name", group)
+        ret = self._fs_cmd("subvolume", "exist", self.volname, "--group_name", group)
+        self.assertEqual(ret.strip('\n'), "subvolume exists")
+        # delete subvolume in group
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume1, "--group_name", group)
+        ret = self._fs_cmd("subvolume", "exist", self.volname, "--group_name", group)
+        self.assertEqual(ret.strip('\n'), "no subvolume exists")
+        # delete subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_exists_with_subvolumegroup_and_no_subvolume(self):
+        """Test the presence of any subvolume specifying the name
+            of subvolumegroup and no subvolumes"""
+
+        group = self._generate_random_group_name()
+        # create subvolumegroup
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        ret = self._fs_cmd("subvolume", "exist", self.volname, "--group_name", group)
+        self.assertEqual(ret.strip('\n'), "no subvolume exists")
+        # delete subvolumegroup
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+    def test_subvolume_exists_without_subvolumegroup_and_with_subvolume(self):
+        """Test the presence of any subvolume without specifying the name
+            of subvolumegroup"""
+
+        subvolume1 = self._generate_random_subvolume_name()
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume1)
+        ret = self._fs_cmd("subvolume", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "subvolume exists")
+        # delete subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume1)
+        ret = self._fs_cmd("subvolume", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolume exists")
+
+    def test_subvolume_exists_without_subvolumegroup_and_without_subvolume(self):
+        """Test the presence of any subvolume without any subvolumegroup
+            and without any subvolume"""
+
+        ret = self._fs_cmd("subvolume", "exist", self.volname)
+        self.assertEqual(ret.strip('\n'), "no subvolume exists")
+
     def test_subvolume_shrink(self):
         """
         That a subvolume can be shrinked in size and its quota matches the expected size.
@@ -3196,7 +4270,7 @@ class TestSubvolumeSnapshots(TestVolumesHelper):
         tests the 'fs subvolume snapshot info' command
         """
 
-        snap_md = ["created_at", "data_pool", "has_pending_clones", "size"]
+        snap_md = ["created_at", "data_pool", "has_pending_clones"]
 
         subvolume = self._generate_random_subvolume_name()
         snapshot, snap_missing = self._generate_random_snapshot_name(2)
@@ -3523,7 +4597,7 @@ class TestSubvolumeSnapshots(TestVolumesHelper):
         """
         ensure a retained subvolume can be recreated and further snapshotted
         """
-        snap_md = ["created_at", "data_pool", "has_pending_clones", "size"]
+        snap_md = ["created_at", "data_pool", "has_pending_clones"]
 
         subvolume = self._generate_random_subvolume_name()
         snapshot1, snapshot2 = self._generate_random_snapshot_name(2)
@@ -3586,7 +4660,7 @@ class TestSubvolumeSnapshots(TestVolumesHelper):
         ensure retain snapshots based delete of a subvolume with snapshots retains the subvolume
         also test allowed and dis-allowed operations on a retained subvolume
         """
-        snap_md = ["created_at", "data_pool", "has_pending_clones", "size"]
+        snap_md = ["created_at", "data_pool", "has_pending_clones"]
 
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
@@ -4399,6 +5473,69 @@ class TestSubvolumeSnapshots(TestVolumesHelper):
         # verify trash dir is clean.
         self._wait_for_trash_empty()
 
+    def test_clean_stale_subvolume_snapshot_metadata(self):
+        """
+        Validate cleaning of stale subvolume snapshot metadata.
+        """
+        subvolname = self._generate_random_subvolume_name()
+        group = self._generate_random_group_name()
+        snapshot = self._generate_random_snapshot_name()
+
+        # create group.
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # create subvolume in group.
+        self._fs_cmd("subvolume", "create", self.volname, subvolname, group)
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolname, snapshot, group)
+
+        # set metadata for snapshot.
+        key = "key"
+        value = "value"
+        try:
+            self._fs_cmd("subvolume", "snapshot", "metadata", "set", self.volname, subvolname, snapshot, key, value, group)
+        except CommandFailedError:
+            self.fail("expected the 'fs subvolume snapshot metadata set' command to succeed")
+
+        # save the subvolume config file.
+        meta_path = os.path.join(".", "volumes", group, subvolname, ".meta")
+        tmp_meta_path = os.path.join(".", "volumes", group, subvolname, ".meta.stale_snap_section")
+        self.mount_a.run_shell(['sudo', 'cp', '-p', meta_path, tmp_meta_path], omit_sudo=False)
+
+        # Delete snapshot, this would remove user snap metadata
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolname, snapshot, group)
+
+        # Copy back saved subvolume config file. This would have stale snapshot metadata
+        self.mount_a.run_shell(['sudo', 'cp', '-p', tmp_meta_path, meta_path], omit_sudo=False)
+
+        # Verify that it has stale snapshot metadata
+        section_name = "SNAP_METADATA_" + snapshot
+        try:
+            self.mount_a.run_shell(f"sudo grep {section_name} {meta_path}", omit_sudo=False)
+        except CommandFailedError:
+            self.fail("Expected grep cmd to succeed because stale snapshot metadata exist")
+
+        # Do any subvolume operation to clean the stale snapshot metadata
+        _ = json.loads(self._get_subvolume_info(self.volname, subvolname, group))
+
+        # Verify that the stale snapshot metadata is cleaned
+        try:
+            self.mount_a.run_shell(f"sudo grep {section_name} {meta_path}", omit_sudo=False)
+        except CommandFailedError as e:
+            self.assertNotEqual(e.exitstatus, 0)
+        else:
+            self.fail("Expected non-zero exist status because stale snapshot metadata should not exist")
+
+        self._fs_cmd("subvolume", "rm", self.volname, subvolname, group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
+        # verify trash dir is clean.
+        self._wait_for_trash_empty()
+        # Clean tmp config file
+        self.mount_a.run_shell(['sudo', 'rm', '-f', tmp_meta_path], omit_sudo=False)
+
+
 class TestSubvolumeSnapshotClones(TestVolumesHelper):
     """ Tests for FS subvolume snapshot clone operations."""
     def test_clone_subvolume_info(self):
@@ -4445,6 +5582,230 @@ class TestSubvolumeSnapshotClones(TestVolumesHelper):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_snapshot_info_without_snapshot_clone(self):
+        """
+        Verify subvolume snapshot info output without clonnnig snapshot.
+        If no clone is performed then path /volumes/_index/clone/{track_id}
+        will not exist.
+        """
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+
+        # create subvolume.
+        self._fs_cmd("subvolume", "create", self.volname, subvolume, "--mode=777")
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # list snapshot info
+        result = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot))
+
+        # verify snapshot info
+        self.assertEqual(result['has_pending_clones'], "no")
+        self.assertFalse('orphan_clones_count' in result)
+        self.assertFalse('pending_clones' in result)
+
+        # remove snapshot, subvolume, clone
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_snapshot_info_if_no_clone_pending(self):
+        """
+        Verify subvolume snapshot info output if no clone is in pending state.
+        """
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone_list =  [f'clone_{i}' for i in range(3)]
+
+        # create subvolume.
+        self._fs_cmd("subvolume", "create", self.volname, subvolume, "--mode=777")
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # schedule a clones
+        for clone in clone_list:
+            self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # check clones status
+        for clone in clone_list:
+            self._wait_for_clone_to_complete(clone)
+
+        # list snapshot info
+        result = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot))
+
+        # verify snapshot info
+        self.assertEqual(result['has_pending_clones'], "no")
+        self.assertFalse('orphan_clones_count' in result)
+        self.assertFalse('pending_clones' in result)
+
+        # remove snapshot, subvolume, clone
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        for clone in clone_list:
+            self._fs_cmd("subvolume", "rm", self.volname, clone)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_snapshot_info_if_clone_pending_for_no_group(self):
+        """
+        Verify subvolume snapshot info output if clones are in pending state.
+        Clones are not specified for particular target_group. Hence target_group
+        should not be in the output as we don't show _nogroup (default group)
+        """
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone_list =  [f'clone_{i}' for i in range(3)]
+
+        # create subvolume.
+        self._fs_cmd("subvolume", "create", self.volname, subvolume, "--mode=777")
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 5)
+
+        # schedule a clones
+        for clone in clone_list:
+            self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # list snapshot info
+        result = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot))
+
+        # verify snapshot info
+        expected_clone_list = []
+        for clone in clone_list:
+            expected_clone_list.append({"name": clone})
+        self.assertEqual(result['has_pending_clones'], "yes")
+        self.assertFalse('orphan_clones_count' in result)
+        self.assertListEqual(result['pending_clones'], expected_clone_list)
+        self.assertEqual(len(result['pending_clones']), 3)
+
+        # check clones status
+        for clone in clone_list:
+            self._wait_for_clone_to_complete(clone)
+
+        # remove snapshot, subvolume, clone
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        for clone in clone_list:
+            self._fs_cmd("subvolume", "rm", self.volname, clone)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_snapshot_info_if_clone_pending_for_target_group(self):
+        """
+        Verify subvolume snapshot info output if clones are in pending state.
+        Clones are not specified for target_group.
+        """
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
+        group = self._generate_random_group_name()
+        target_group = self._generate_random_group_name()
+
+        # create groups
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        self._fs_cmd("subvolumegroup", "create", self.volname, target_group)
+
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume, group, "--mode=777")
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot, group)
+
+        # insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 5)
+
+        # schedule a clone
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone,
+                     "--group_name", group, "--target_group_name", target_group)
+
+        # list snapshot info
+        result = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot, "--group_name", group))
+
+        # verify snapshot info
+        expected_clone_list = [{"name": clone, "target_group": target_group}]
+        self.assertEqual(result['has_pending_clones'], "yes")
+        self.assertFalse('orphan_clones_count' in result)
+        self.assertListEqual(result['pending_clones'], expected_clone_list)
+        self.assertEqual(len(result['pending_clones']), 1)
+
+        # check clone status
+        self._wait_for_clone_to_complete(clone, clone_group=target_group)
+
+        # remove snapshot
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot, group)
+
+        # remove subvolumes
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume, group)
+        self._fs_cmd("subvolume", "rm", self.volname, clone, target_group)
+
+        # remove groups
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+        self._fs_cmd("subvolumegroup", "rm", self.volname, target_group)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_snapshot_info_if_orphan_clone(self):
+        """
+        Verify subvolume snapshot info output if orphan clones exists.
+        Orphan clones should not list under pending clones.
+        orphan_clones_count should display correct count of orphan clones'
+        """
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone_list =  [f'clone_{i}' for i in range(3)]
+
+        # create subvolume.
+        self._fs_cmd("subvolume", "create", self.volname, subvolume, "--mode=777")
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # insert delay at the beginning of snapshot clone
+        self.config_set('mgr', 'mgr/volumes/snapshot_clone_delay', 5)
+
+        # schedule a clones
+        for clone in clone_list:
+            self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # remove track file for third clone to make it orphan
+        meta_path = os.path.join(".", "volumes", "_nogroup", subvolume, ".meta")
+        pending_clones_result = self.mount_a.run_shell(f"sudo grep \"clone snaps\" -A3 {meta_path}", omit_sudo=False, stdout=StringIO(), stderr=StringIO())
+        third_clone_track_id = pending_clones_result.stdout.getvalue().splitlines()[3].split(" = ")[0]
+        third_clone_track_path = os.path.join(".", "volumes", "_index", "clone", third_clone_track_id)
+        self.mount_a.run_shell(f"sudo rm -f {third_clone_track_path}", omit_sudo=False)
+
+        # list snapshot info
+        result = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot))
+
+        # verify snapshot info
+        expected_clone_list = []
+        for i in range(len(clone_list)-1):
+            expected_clone_list.append({"name": clone_list[i]})
+        self.assertEqual(result['has_pending_clones'], "yes")
+        self.assertEqual(result['orphan_clones_count'], 1)
+        self.assertListEqual(result['pending_clones'], expected_clone_list)
+        self.assertEqual(len(result['pending_clones']), 2)
+
+        # check clones status
+        for i in range(len(clone_list)-1):
+            self._wait_for_clone_to_complete(clone_list[i])
+
+        # list snapshot info after cloning completion
+        res = json.loads(self._fs_cmd("subvolume", "snapshot", "info", self.volname, subvolume, snapshot))
+
+        # verify snapshot info (has_pending_clones should be no)
+        self.assertEqual(res['has_pending_clones'], "no")
+
     def test_non_clone_status(self):
         subvolume = self._generate_random_subvolume_name()
 
@@ -6137,7 +7498,7 @@ class TestMisc(TestVolumesHelper):
         subvol_md = ["atime", "bytes_pcent", "bytes_quota", "bytes_used", "created_at", "ctime",
                      "data_pool", "gid", "mode", "mon_addrs", "mtime", "path", "pool_namespace",
                      "type", "uid", "features", "state"]
-        snap_md = ["created_at", "data_pool", "has_pending_clones", "size"]
+        snap_md = ["created_at", "data_pool", "has_pending_clones"]
 
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
@@ -6338,11 +7699,10 @@ class TestMisc(TestVolumesHelper):
         poor man's upgrade test -- theme continues...
         """
         subvol1, subvol2 = self._generate_random_subvolume_name(2)
-        group = self._generate_random_group_name()
 
         # emulate a old-fashioned subvolume in the default group
         createpath1 = os.path.join(".", "volumes", "_nogroup", subvol1)
-        self.mount_a.run_shell(['mkdir', '-p', createpath1], sudo=True)
+        self.mount_a.run_shell(['sudo', 'mkdir', '-p', createpath1], omit_sudo=False)
 
         # add required xattrs to subvolume
         default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
@@ -6354,7 +7714,7 @@ class TestMisc(TestVolumesHelper):
         # Create malicious .meta file in legacy subvolume root. Copy v2 subvolume
         # .meta into legacy subvol1's root
         subvol2_metapath = os.path.join(".", "volumes", "_nogroup", subvol2, ".meta")
-        self.mount_a.run_shell(["cp", subvol2_metapath, createpath1], sudo=True)
+        self.mount_a.run_shell(['sudo', 'cp', subvol2_metapath, createpath1], omit_sudo=False)
 
         # Upgrade legacy subvol1 to v1
         subvolpath1 = self._fs_cmd("subvolume", "getpath", self.volname, subvol1)
@@ -6396,7 +7756,7 @@ class TestMisc(TestVolumesHelper):
 
         # emulate a old-fashioned subvolume -- in a custom group
         createpath = os.path.join(".", "volumes", group, subvol)
-        self.mount_a.run_shell(['mkdir', '-p', createpath], sudo=True)
+        self.mount_a.run_shell(['sudo', 'mkdir', '-p', createpath], omit_sudo=False)
 
         # add required xattrs to subvolume
         default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
@@ -6439,7 +7799,7 @@ class TestMisc(TestVolumesHelper):
 
         # emulate a old-fashioned subvolume -- in a custom group
         createpath = os.path.join(".", "volumes", group, subvol)
-        self.mount_a.run_shell(['mkdir', '-p', createpath], sudo=True)
+        self.mount_a.run_shell(['sudo', 'mkdir', '-p', createpath], omit_sudo=False)
 
         # add required xattrs to subvolume
         default_pool = self.mount_a.getfattr(".", "ceph.dir.layout.pool")
index 8395853e3d67387060c50175099e261ce8de4791..2a804c4c2b83f38f13f82b59d09b17ec5d4af67b 100644 (file)
@@ -8,7 +8,7 @@ class OrchestratorControllerTest(DashboardTestCase):
 
     AUTH_ROLES = ['cluster-manager']
 
-    URL_STATUS = '/api/orchestrator/status'
+    URL_STATUS = '/ui-api/orchestrator/status'
 
     ORCHESTRATOR = True
 
index b8df472a69254ddeef99466e819d98b5227ab934..997d10f2a801e0883ad14c8d76d50ced1b144e0e 100644 (file)
@@ -10,10 +10,12 @@ from .helper import DashboardTestCase, JLeaf, JList, JObj
 
 class RbdTest(DashboardTestCase):
     AUTH_ROLES = ['pool-manager', 'block-manager', 'cluster-manager']
+    LIST_VERSION = '2.0'
 
     @DashboardTestCase.RunAs('test', 'test', [{'rbd-image': ['create', 'update', 'delete']}])
     def test_read_access_permissions(self):
-        self._get('/api/block/image')
+        self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name',
+                  version=RbdTest.LIST_VERSION)
         self.assertStatus(403)
         self.get_image('pool', None, 'image')
         self.assertStatus(403)
@@ -205,6 +207,7 @@ class RbdTest(DashboardTestCase):
         {
             "size": 1073741824,
             "obj_size": 4194304,
+            "mirror_mode": "journal",
             "num_objs": 256,
             "order": 22,
             "block_name_prefix": "rbd_data.10ae2ae8944a",
@@ -245,6 +248,7 @@ class RbdTest(DashboardTestCase):
                 'source': JLeaf(int),
                 'value': JLeaf(str),
             })),
+            'mirror_mode': JLeaf(str),
         })
         self.assertSchema(img, schema)
 
@@ -280,12 +284,12 @@ class RbdTest(DashboardTestCase):
             self.fail("Snapshot {} not found".format(snap_name))
 
     def test_list(self):
-        data = self._view_cache_get('/api/block/image')
+        data = self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name',
+                         version=RbdTest.LIST_VERSION)
         self.assertStatus(200)
         self.assertEqual(len(data), 2)
 
         for pool_view in data:
-            self.assertEqual(pool_view['status'], 0)
             self.assertIsNotNone(pool_view['value'])
             self.assertIn('pool_name', pool_view)
             self.assertIn(pool_view['pool_name'], ['rbd', 'rbd_iscsi'])
index dc972d3ed0a4158f508c757fa68d179d5066f5a2..53577a87a9617d5b914acd4b47b25d90ee7b7542 100644 (file)
@@ -84,7 +84,7 @@ class RgwApiCredentialsTest(RgwTestCase):
         # Set the default credentials.
         self._ceph_cmd_with_secret(['dashboard', 'set-rgw-api-secret-key'], 'admin')
         self._ceph_cmd_with_secret(['dashboard', 'set-rgw-api-access-key'], 'admin')
-        data = self._get('/api/rgw/status')
+        data = self._get('/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertIn('available', data)
         self.assertIn('message', data)
@@ -480,7 +480,7 @@ class RgwDaemonTest(RgwTestCase):
         self.assertTrue(data['rgw_metadata'])
 
     def test_status(self):
-        data = self._get('/api/rgw/status')
+        data = self._get('/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertIn('available', data)
         self.assertIn('message', data)
diff --git a/ceph/qa/tasks/rbd_pwl_cache_recovery.py b/ceph/qa/tasks/rbd_pwl_cache_recovery.py
new file mode 100644 (file)
index 0000000..e13c1f6
--- /dev/null
@@ -0,0 +1,96 @@
+"""
+persistent write log cache recovery task
+"""
+import contextlib
+import logging
+import random
+import json
+import time
+
+from teuthology import misc as teuthology
+from teuthology import contextutil
+
+DEFAULT_NUM_ITERATIONS = 20
+IO_PATTERNS = ("full-seq", "rand")
+IO_SIZES = ('4K', '16K', '128K', '1024K')
+
+log = logging.getLogger(__name__)
+
+@contextlib.contextmanager
+def thrashes_rbd_bench_on_persistent_cache(ctx, config):
+    """
+    thrashes rbd bench on persistent write log cache.
+    It can test recovery feature of persistent write log cache.
+    """
+    log.info("thrashes rbd bench on persistent write log cache")
+
+    client, client_config = list(config.items())[0]
+    (remote,) = ctx.cluster.only(client).remotes.keys()
+    client_config = client_config if client_config is not None else dict()
+    image_name = client_config.get('image_name', 'testimage')
+    num_iterations = client_config.get('num_iterations', DEFAULT_NUM_ITERATIONS)
+
+    for i in range(num_iterations):
+        log.info("start rbd bench")
+        # rbd bench could not specify the run time so set a large enough test size.
+        remote.run(
+            args=[
+                'rbd', 'bench',
+                '--io-type', 'write',
+                '--io-pattern', random.choice(IO_PATTERNS),
+                '--io-size', random.choice(IO_SIZES),
+                '--io-total', '100G',
+                image_name,
+                ],
+            wait=False,
+        )
+        # Wait a few seconds for the rbd bench process to run
+        # and complete the pwl cache initialization
+        time.sleep(10)
+        log.info("dump cache state when rbd bench running.")
+        remote.sh(['rbd', 'status', image_name, '--format=json'])
+        log.info("sleep...")
+        time.sleep(random.randint(10, 60))
+        log.info("rbd bench crash.")
+        remote.run(
+            args=[
+                'killall', '-9', 'rbd',
+                ],
+            check_status=False,
+        )
+        log.info("wait for watch timeout.")
+        time.sleep(40)
+        log.info("check cache state after crash.")
+        out = remote.sh(['rbd', 'status', image_name, '--format=json'])
+        rbd_status = json.loads(out)
+        assert len(rbd_status['watchers']) == 0
+        assert rbd_status['persistent_cache']['present'] == True
+        assert rbd_status['persistent_cache']['empty'] == False
+        assert rbd_status['persistent_cache']['clean'] == False
+        log.info("check dirty cache file.")
+        remote.run(
+            args=[
+                'test', '-e', rbd_status['persistent_cache']['path'],
+                ]
+        )
+    try:
+        yield
+    finally:
+        log.info("cleanup")
+
+@contextlib.contextmanager
+def task(ctx, config):
+    """
+    This is task for testing persistent write log cache recovery.
+    """
+    assert isinstance(config, dict), \
+            "task rbd_pwl_cache_recovery only supports a dictionary for configuration"
+
+    managers = []
+    config = teuthology.replace_all_with_clients(ctx.cluster, config)
+    managers.append(
+        lambda: thrashes_rbd_bench_on_persistent_cache(ctx=ctx, config=config)
+        )
+
+    with contextutil.nested(*managers):
+        yield
index 3d2542981b1beabfcf6a2b6c7974a9ecd4a82899..bde82de41756c97691f5fdfae8dd3233c21fe302 100644 (file)
@@ -138,9 +138,12 @@ def start_rgw(ctx, config, clients):
             ctx.cluster.only(client).run(args=['sudo', 'chmod', '600', token_path])
             ctx.cluster.only(client).run(args=['sudo', 'chown', 'ceph', token_path])
 
+            vault_addr = "{}:{}".format(*ctx.vault.endpoints[vault_role])
             rgw_cmd.extend([
-                '--rgw_crypt_vault_addr', "{}:{}".format(*ctx.vault.endpoints[vault_role]),
-                '--rgw_crypt_vault_token_file', token_path
+                '--rgw_crypt_vault_addr', vault_addr,
+                '--rgw_crypt_vault_token_file', token_path,
+                '--rgw_crypt_sse_s3_vault_addr', vault_addr,
+                '--rgw_crypt_sse_s3_vault_token_file', token_path,
             ])
         elif pykmip_role is not None:
             if not hasattr(ctx, 'pykmip'):
index bd844c6c1a78da2d40e003327655202ce73b30e5..4ee388f5db2e600d3612fffca2f82fea23df08ce 100644 (file)
@@ -416,6 +416,7 @@ def run_tests(ctx, config):
     testdir = teuthology.get_testdir(ctx)
     for client, client_config in config.items():
         client_config = client_config or {}
+        (cluster_name,_,_) = teuthology.split_role(client)
         (remote,) = ctx.cluster.only(client).remotes.keys()
         args = [
             'S3TEST_CONF={tdir}/archive/s3-tests.{client}.conf'.format(tdir=testdir, client=client),
@@ -432,6 +433,12 @@ def run_tests(ctx, config):
         attrs = ["!fails_on_rgw", "!lifecycle_expiration", "!fails_strict_rfc2616","!test_of_sts","!webidentity_test"]
         if client_config.get('calling-format') != 'ordinary':
             attrs += ['!fails_with_subdomain']
+        if not client_config.get('with-sse-s3'):
+            attrs += ['!sse-s3']
+        elif client_config.get('with-sse-s3'):
+            pass
+        elif ctx.ceph[cluster_name].rgw_crypt_sse_s3_backend is None:
+            attrs += ['!sse-s3']
        
         if 'extra_attrs' in client_config:
             attrs = client_config.get('extra_attrs') 
index 148972cebde710002b9b45c9a86743627efa12e3..4b0749231df5bcdc02ba34afdaab5cc2ce321300 100755 (executable)
@@ -24,7 +24,7 @@ sudo $CEPHADM -v add-repo --release octopus
 test_install_uninstall
 sudo $CEPHADM -v rm-repo
 
-sudo $CEPHADM -v add-repo --dev master
+sudo $CEPHADM -v add-repo --dev main
 test_install_uninstall
 sudo $CEPHADM -v rm-repo
 
diff --git a/ceph/qa/workunits/fs/full/subvolume_clone.sh b/ceph/qa/workunits/fs/full/subvolume_clone.sh
new file mode 100755 (executable)
index 0000000..a111312
--- /dev/null
@@ -0,0 +1,114 @@
+#!/usr/bin/env bash
+set -ex
+
+# This testcase tests the  'ceph fs subvolume snapshot clone' when the osd is full.
+# The clone fails with 'MetadataMgrException: -28 (error in write)' and
+# truncates the config file of corresponding subvolume while updating the config file.
+# Hence the subsequent subvolume commands on the clone fails with
+# 'MetadataMgrException: -2 (section 'GLOBAL' does not exist)' traceback.
+
+# The osd is of the size 1GB. The full-ratios are set so that osd is treated full
+# at around 600MB. The subvolume is created and 100MB is written.
+# The subvolume is snapshotted and cloned ten times. Since the clone delay is set to 15 seconds,
+# all the clones reach pending state for sure. Among ten clones, only few succeed and rest fails
+# with ENOSPACE.
+
+# At this stage, ".meta" config file of the failed clones are checked if it's truncated.
+# and clone status command is checked for traceback.
+
+# Note that the failed clones would be in retry loop and it's state would be 'pending' or 'in-progress'.
+# It's state is not updated to 'failed' as the config update to gets ENOSPACE too.
+
+set -e
+ignore_failure() {
+        if "$@"; then return 0; else return 0; fi
+}
+
+expect_failure() {
+        if "$@"; then return 1; else return 0; fi
+}
+
+NUM_CLONES=10
+
+ceph fs subvolume create cephfs sub_0
+subvol_path_0=$(ceph fs subvolume getpath cephfs sub_0 2>/dev/null)
+
+# For debugging
+echo "Before ratios are set"
+df $CEPH_MNT
+ceph osd df
+
+ceph osd set-full-ratio 0.6
+ceph osd set-nearfull-ratio 0.50
+ceph osd set-backfillfull-ratio 0.55
+
+# For debugging
+echo "After ratios are set"
+df -h
+ceph osd df
+
+for i in {1..100};do sudo dd if=/dev/urandom of=$CEPH_MNT$subvol_path_0/1MB_file-$i status=progress bs=1M count=1 conv=fdatasync;done
+
+# For debugging
+echo "After subvolumes are written"
+df -h $CEPH_MNT
+ceph osd df
+
+# snapshot
+ceph fs subvolume snapshot create cephfs sub_0 snap_0
+
+# Set clone snapshot delay
+ceph config set mgr mgr/volumes/snapshot_clone_delay 15
+
+# Schedule few clones, some would fail with no space
+for i in $(eval echo {1..$NUM_CLONES});do ceph fs subvolume snapshot clone cephfs sub_0 snap_0 clone_$i;done
+
+# Wait for osd is full
+timeout=90
+while [ $timeout -gt 0 ]
+do
+  health=$(ceph health detail)
+  [[ $health = *"OSD_FULL"* ]] && echo "OSD is full" && break
+  echo "Wating for osd to be full: $timeout"
+  sleep 1
+  let "timeout-=1"
+done
+
+# For debugging
+echo "After osd is full"
+df -h $CEPH_MNT
+ceph osd df
+
+# Check clone status, this should not crash
+for i in $(eval echo {1..$NUM_CLONES})
+do
+  ignore_failure ceph fs clone status cephfs clone_$i >/tmp/out_${PID}_file 2>/tmp/error_${PID}_file
+  cat /tmp/error_${PID}_file
+  if grep "complete" /tmp/out_${PID}_file; then
+    echo "The clone_$i is completed"
+  else
+    #in-progress/pending clones, No traceback should be found in stderr
+    echo clone_$i in PENDING/IN-PROGRESS
+    expect_failure sudo grep "Traceback" /tmp/error_${PID}_file
+    #config file should not be truncated and GLOBAL section should be found
+    sudo grep "GLOBAL" $CEPH_MNT/volumes/_nogroup/clone_$i/.meta
+  fi
+done
+
+# Hard cleanup
+ignore_failure sudo rm -rf $CEPH_MNT/_index/clone/*
+ignore_failure sudo rm -rf $CEPH_MNT/volumes/_nogroup/clone_*
+ignore_failure sudo rmdir $CEPH_MNT/volumes/_nogroup/sub_0/.snap/snap_0
+ignore_failure sudo rm -rf $CEPH_MNT/volumes/_nogroup/sub_0
+
+#Set the ratios back for other full tests to run
+ceph osd set-full-ratio 0.95
+ceph osd set-nearfull-ratio 0.95
+ceph osd set-backfillfull-ratio 0.95
+
+#After test
+echo "After test"
+df -h $CEPH_MNT
+ceph osd df
+
+echo OK
index d0f9e240347e56a973f34faac7a01f29c332e4a8..a464e30f56e9599986265902ac7b08fffc19194c 100755 (executable)
@@ -59,4 +59,14 @@ do
   let "timeout-=1"
 done
 
+#Set the ratios back for other full tests to run
+ceph osd set-full-ratio 0.95
+ceph osd set-nearfull-ratio 0.95
+ceph osd set-backfillfull-ratio 0.95
+
+#After test
+echo "After test"
+df -h
+ceph osd df
+
 echo OK
diff --git a/ceph/qa/workunits/fs/full/subvolume_snapshot_rm.sh b/ceph/qa/workunits/fs/full/subvolume_snapshot_rm.sh
new file mode 100755 (executable)
index 0000000..f6d0add
--- /dev/null
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+set -ex
+
+# This testcase tests the  'ceph fs subvolume snapshot rm' when the osd is full.
+# The snapshot rm fails with 'MetadataMgrException: -28 (error in write)' and
+# truncates the config file of corresponding subvolume. Hence the subsequent
+# snapshot rm of the same snapshot fails with 'MetadataMgrException: -2 (section 'GLOBAL' does not exist)'
+# traceback.
+
+# The osd is of the size 1GB. The subvolume is created and 800MB file is written.
+# Then full-ratios are set below 500MB such that the osd is treated as full.
+# The subvolume snapshot is taken which succeeds as no extra space is required
+# for snapshot. Now, the removal of the snapshot fails with ENOSPACE as it
+# fails to remove the snapshot metadata set. The snapshot removal fails
+# but should not traceback and truncate the config file.
+
+set -e
+expect_failure() {
+       if "$@"; then return 1; else return 0; fi
+}
+
+ignore_failure() {
+       if "$@"; then return 0; else return 0; fi
+}
+
+ceph fs subvolume create cephfs sub_0
+subvol_path=$(ceph fs subvolume getpath cephfs sub_0 2>/dev/null)
+
+#For debugging
+echo "Before write"
+df $CEPH_MNT
+ceph osd df
+
+# Write 800MB file and set full ratio to around 200MB
+ignore_failure sudo dd if=/dev/urandom of=$CEPH_MNT$subvol_path/800MB_file-1 status=progress bs=1M count=800 conv=fdatasync
+
+ceph osd set-full-ratio 0.2
+ceph osd set-nearfull-ratio 0.16
+ceph osd set-backfillfull-ratio 0.18
+
+timeout=30
+while [ $timeout -gt 0 ]
+do
+  health=$(ceph health detail)
+  [[ $health = *"OSD_FULL"* ]] && echo "OSD is full" && break
+  echo "Wating for osd to be full: $timeout"
+  sleep 1
+  let "timeout-=1"
+done
+
+#Take snapshot
+ceph fs subvolume snapshot create cephfs sub_0 snap_0
+
+#Remove snapshot fails but should not throw traceback
+expect_failure ceph fs subvolume snapshot rm cephfs sub_0 snap_0 2>/tmp/error_${PID}_file
+cat /tmp/error_${PID}_file
+
+# No traceback should be found
+expect_failure grep "Traceback" /tmp/error_${PID}_file
+
+# Validate config file is not truncated and GLOBAL section exists
+sudo grep "GLOBAL" $CEPH_MNT/volumes/_nogroup/sub_0/.meta
+
+#For debugging
+echo "After write"
+df $CEPH_MNT
+ceph osd df
+
+# Snapshot removal with force option should succeed
+ceph fs subvolume snapshot rm cephfs sub_0 snap_0 --force
+
+#Cleanup from backend
+ignore_failure sudo rm -f /tmp/error_${PID}_file
+ignore_failure sudo rm -rf $CEPH_MNT/volumes/_nogroup/sub_0
+
+#Set the ratios back for other full tests to run
+ceph osd set-full-ratio 0.95
+ceph osd set-nearfull-ratio 0.95
+ceph osd set-backfillfull-ratio 0.95
+
+#After test
+echo "After test"
+df -h $CEPH_MNT
+ceph osd df
+
+echo OK
diff --git a/ceph/qa/workunits/fs/misc/dac_override.sh b/ceph/qa/workunits/fs/misc/dac_override.sh
new file mode 100755 (executable)
index 0000000..dfb1a90
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -x
+
+expect_failure() {
+       if "$@"; then return 1; else return 0; fi
+}
+
+set -e
+
+mkdir -p testdir
+file=test_chmod.$$
+
+echo "foo" > testdir/${file}
+sudo chmod 600 testdir
+
+# only root can read
+expect_failure cat testdir/${file}
+
+# directory read/write DAC override for root should allow read
+sudo cat testdir/${file}
index 36eab8f7ba3236fa3ac1f571c45711b62c179a8b..1b00201ae48165f8336633065d4350f46bfdc37c 100755 (executable)
@@ -62,6 +62,17 @@ ceph config rm client.foo.bar debug_asok
 ceph config get client.foo.bar.baz debug_asok | grep 33
 ceph config rm global debug_asok
 
+# whitespace keys
+ceph config set client.foo 'debug asok' 44
+ceph config get client.foo 'debug asok' | grep 44
+ceph config set client.foo debug_asok 55
+ceph config get client.foo 'debug asok' | grep 55
+ceph config set client.foo 'debug asok' 66
+ceph config get client.foo debug_asok | grep 66
+ceph config rm client.foo debug_asok
+ceph config set client.foo debug_asok 66
+ceph config rm client.foo 'debug asok'
+
 # help
 ceph config help debug_asok | grep debug_asok
 
index 6b403c09567dd4a662609439f49ae0ec25103b92..042d67faddaf7c2da71e4f1d46fb5d1f404227d1 100755 (executable)
@@ -1310,6 +1310,20 @@ test_mirror_snapshot_schedule() {
     test "$(rbd mirror snapshot schedule status -p rbd2/ns1 --image test1 --format xml |
         $XMLSTARLET sel -t -v '//scheduled_images/image/image')" = 'rbd2/ns1/test1'
 
+    rbd mirror image demote rbd2/ns1/test1
+    for i in `seq 12`; do
+        rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' || break
+        sleep 10
+    done
+    rbd mirror snapshot schedule status | expect_fail grep 'rbd2/ns1/test1'
+
+    rbd mirror image promote rbd2/ns1/test1
+    for i in `seq 12`; do
+        rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' && break
+        sleep 10
+    done
+    rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1'
+
     rbd mirror snapshot schedule add 1h 00:15
     test "$(rbd mirror snapshot schedule ls)" = 'every 1h starting at 00:15:00'
     rbd mirror snapshot schedule ls -R | grep 'every 1h starting at 00:15:00'
@@ -1331,11 +1345,11 @@ test_mirror_snapshot_schedule() {
     test "$(rbd mirror snapshot schedule ls -p rbd2/ns1 --image test1)" = 'every 1m'
 
     rbd rm rbd2/ns1/test1
-
     for i in `seq 12`; do
         rbd mirror snapshot schedule status | grep 'rbd2/ns1/test1' || break
         sleep 10
     done
+    rbd mirror snapshot schedule status | expect_fail grep 'rbd2/ns1/test1'
 
     rbd mirror snapshot schedule remove
     test "$(rbd mirror snapshot schedule ls -R --format json)" = "[]"
@@ -1344,6 +1358,107 @@ test_mirror_snapshot_schedule() {
     ceph osd pool rm rbd2 rbd2 --yes-i-really-really-mean-it
 }
 
+test_perf_image_iostat() {
+    echo "testing perf image iostat..."
+    remove_images
+
+    ceph osd pool create rbd1 8
+    rbd pool init rbd1
+    rbd namespace create rbd1/ns
+    ceph osd pool create rbd2 8
+    rbd pool init rbd2
+    rbd namespace create rbd2/ns
+
+    IMAGE_SPECS=("test1" "rbd1/test2" "rbd1/ns/test3" "rbd2/test4" "rbd2/ns/test5")
+    for spec in "${IMAGE_SPECS[@]}"; do
+        # ensure all images are created without a separate data pool
+        # as we filter iostat by specific pool specs below
+        rbd create $RBD_CREATE_ARGS --size 10G --rbd-default-data-pool '' $spec
+    done
+
+    BENCH_PIDS=()
+    for spec in "${IMAGE_SPECS[@]}"; do
+        rbd bench --io-type write --io-pattern rand --io-total 10G --io-threads 1 \
+            --rbd-cache false $spec >/dev/null 2>&1 &
+        BENCH_PIDS+=($!)
+    done
+
+    # test specifying pool spec via spec syntax
+    test "$(rbd perf image iostat --format json rbd1 |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test2'
+    test "$(rbd perf image iostat --format json rbd1/ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test3'
+    test "$(rbd perf image iostat --format json --rbd-default-pool rbd1 /ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test3'
+
+    # test specifying pool spec via options
+    test "$(rbd perf image iostat --format json --pool rbd2 |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test4'
+    test "$(rbd perf image iostat --format json --pool rbd2 --namespace ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test5'
+    test "$(rbd perf image iostat --format json --rbd-default-pool rbd2 --namespace ns |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test5'
+
+    # test omitting pool spec (-> GLOBAL_POOL_KEY)
+    test "$(rbd perf image iostat --format json |
+        jq -r 'map(.image) | sort | join(" ")')" = 'test1 test2 test3 test4 test5'
+
+    for pid in "${BENCH_PIDS[@]}"; do
+        kill $pid
+    done
+    wait
+
+    remove_images
+    ceph osd pool rm rbd2 rbd2 --yes-i-really-really-mean-it
+    ceph osd pool rm rbd1 rbd1 --yes-i-really-really-mean-it
+}
+
+test_mirror_pool_peer_bootstrap_create() {
+    echo "testing mirror pool peer bootstrap create..."
+    remove_images
+
+    ceph osd pool create rbd1 8
+    rbd pool init rbd1
+    rbd mirror pool enable rbd1 image
+    ceph osd pool create rbd2 8
+    rbd pool init rbd2
+    rbd mirror pool enable rbd2 pool
+
+    readarray -t MON_ADDRS < <(ceph mon dump |
+        sed -n 's/^[0-9]: \(.*\) mon\.[a-z]$/\1/p')
+
+    # check that all monitors make it to the token even if only one
+    # valid monitor is specified
+    BAD_MON_ADDR="1.2.3.4:6789"
+    MON_HOST="${MON_ADDRS[0]},$BAD_MON_ADDR"
+    TOKEN="$(rbd mirror pool peer bootstrap create \
+        --mon-host "$MON_HOST" rbd1 | base64 -d)"
+    TOKEN_FSID="$(jq -r '.fsid' <<< "$TOKEN")"
+    TOKEN_CLIENT_ID="$(jq -r '.client_id' <<< "$TOKEN")"
+    TOKEN_KEY="$(jq -r '.key' <<< "$TOKEN")"
+    TOKEN_MON_HOST="$(jq -r '.mon_host' <<< "$TOKEN")"
+
+    test "$TOKEN_FSID" = "$(ceph fsid)"
+    test "$TOKEN_KEY" = "$(ceph auth get-key client.$TOKEN_CLIENT_ID)"
+    for addr in "${MON_ADDRS[@]}"; do
+        fgrep "$addr" <<< "$TOKEN_MON_HOST"
+    done
+    expect_fail fgrep "$BAD_MON_ADDR" <<< "$TOKEN_MON_HOST"
+
+    # check that the token does not change, including across pools
+    test "$(rbd mirror pool peer bootstrap create \
+        --mon-host "$MON_HOST" rbd1 | base64 -d)" = "$TOKEN"
+    test "$(rbd mirror pool peer bootstrap create \
+        rbd1 | base64 -d)" = "$TOKEN"
+    test "$(rbd mirror pool peer bootstrap create \
+        --mon-host "$MON_HOST" rbd2 | base64 -d)" = "$TOKEN"
+    test "$(rbd mirror pool peer bootstrap create \
+        rbd2 | base64 -d)" = "$TOKEN"
+
+    ceph osd pool rm rbd2 rbd2 --yes-i-really-really-mean-it
+    ceph osd pool rm rbd1 rbd1 --yes-i-really-really-mean-it
+}
+
 test_pool_image_args
 test_rename
 test_ls
@@ -1366,5 +1481,7 @@ test_thick_provision
 test_namespace
 test_trash_purge_schedule
 test_mirror_snapshot_schedule
+test_perf_image_iostat
+test_mirror_pool_peer_bootstrap_create
 
 echo OK
index 493a132360ed6ae5a5b84dec301821765531e65c..00c39bb377920b54048f2837ffa02e91a1580e8b 100644 (file)
@@ -1,2 +1,2 @@
-dff484dfc9e19a9819f375586300b3b79d80034d
-17.2.3
+1353ed37dec8d74973edc3d5d5908c20ad5a7332
+17.2.4
index 83a90e4ecba6ba7c884316c4f06f657955f699da..c779c8521ff1271df36da06f77b95992960ef17b 100644 (file)
@@ -596,6 +596,7 @@ endif(NOT WITH_SYSTEM_ROCKSDB)
 
 if(WITH_MGR)
   add_subdirectory(mgr)
+  add_subdirectory(exporter)
 endif()
 
 set(librados_config_srcs
@@ -889,6 +890,7 @@ add_custom_target(vstart-base DEPENDS
     ceph-mon
     ceph-authtool
     ceph-conf
+    ceph-exporter
     monmaptool
     crushtool
     rados)
@@ -901,6 +903,7 @@ endif()
 
 if (WITH_MGR)
   add_dependencies(vstart-base ceph-mgr)
+  add_dependencies(vstart-base ceph-exporter)
 endif()
 
 add_custom_target(vstart DEPENDS vstart-base)
index 3a64193d3e41c6684da4a79e5111e4eb5d61231b..bbbf15527938852aa61c5ff5dfafb258533e5afd 100644 (file)
@@ -488,7 +488,10 @@ ssize_t SimpleRADOSStriper::read(void* data, size_t len, uint64_t off)
   }
 
   size_t r = 0;
-  std::vector<std::pair<bufferlist, aiocompletionptr>> reads;
+  // Don't use std::vector to store bufferlists (e.g for parallelizing aio_reads),
+  // as they are being moved whenever the vector resizes
+  // and will cause invalidated references.
+  std::deque<std::pair<bufferlist, aiocompletionptr>> reads;
   while ((len-r) > 0) {
     auto ext = get_next_extent(off+r, len-r);
     auto& [bl, aiocp] = reads.emplace_back();
index c96222feafcb864ca44ca8fc215417cdac302514..ce666e8bdc8c3c8f266f133927136c2ede325d9b 100644 (file)
 #include "common/debug.h"
 #include <errno.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 using std::ostringstream;
 using std::string;
 
@@ -40,6 +46,7 @@ using ceph::bufferlist;
 using ceph::bufferptr;
 using ceph::Formatter;
 
+
 // use getentropy() if available. it uses the same source of randomness
 // as /dev/urandom without the filesystem overhead
 #ifdef HAVE_GETENTROPY
@@ -603,3 +610,6 @@ CryptoHandler *CryptoHandler::create(int type)
     return NULL;
   }
 }
+
+#pragma clang diagnostic pop
+#pragma GCC diagnostic pop
index 1b03ce31cd7b4765a1adb94d19ad86dd505ced8a..ee06af61e055f96f425af802a2a8c720d5558e68 100644 (file)
@@ -19,6 +19,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/file.h>
+#include <sys/mman.h>
 
 #include <boost/container/flat_map.hpp>
 #include <boost/lockfree/queue.hpp>
@@ -1078,7 +1079,17 @@ struct ExplicitHugePagePool {
         nullptr,
         buffer_size,
         PROT_READ | PROT_WRITE,
+#if defined(__FreeBSD__)
+        // FreeBSD doesn't have MAP_HUGETLB nor MAP_POPULATE but it has
+        // a different, more automated / implicit mechanisms. However,
+        // we want to mimic the Linux behavior as closely as possible
+        // also in the matter of error handling which is the reason
+        // behind MAP_ALIGNED_SUPER.
+        // See: https://lists.freebsd.org/pipermail/freebsd-questions/2014-August/260578.html
+        MAP_PRIVATE | MAP_ANONYMOUS | MAP_PREFAULT_READ | MAP_ALIGNED_SUPER,
+#else
         MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE | MAP_HUGETLB,
+#endif // __FreeBSD__
         -1,
         0);
       if (mmaped_region == MAP_FAILED) {
index 9a5907c5d7f994af3a6fc4460325ae03dde3aa42..b23466b7aa3cc53f315685e2059295cdad73ec65 100644 (file)
@@ -785,6 +785,17 @@ def get_device_vgs(device, name_prefix=''):
     return [VolumeGroup(**vg) for vg in vgs if vg['vg_name'] and vg['vg_name'].startswith(name_prefix)]
 
 
+def get_all_devices_vgs(name_prefix=''):
+    vg_fields = f'pv_name,{VG_FIELDS}'
+    cmd = ['pvs'] + VG_CMD_OPTIONS + ['-o', vg_fields]
+    stdout, stderr, returncode = process.call(
+        cmd,
+        run_on_host=True,
+        verbose_on_failure=False
+    )
+    vgs = _output_parser(stdout, vg_fields)
+    return [VolumeGroup(**vg) for vg in vgs]
+
 #################################
 #
 # Code for LVM Logical Volumes
index 2fee47ffab910ad4c4310bbc6581c5c769a0bd9f..e0f7ef1f0c6551e89385643cf77ec51e3d1f02b2 100644 (file)
@@ -86,13 +86,14 @@ class Conf(conf_parentclass):
         s = '_'.join(s.split())
         return s
 
-    def get_safe(self, section, key, default=None):
+    def get_safe(self, section, key, default=None, check_valid=True):
         """
         Attempt to get a configuration value from a certain section
         in a ``cfg`` object but returning None if not found. Avoids the need
         to be doing try/except {ConfigParser Exceptions} every time.
         """
-        self.is_valid()
+        if check_valid:
+            self.is_valid()
         try:
             return self.get(section, key)
         except (configparser.NoSectionError, configparser.NoOptionError):
index 6fa619d5003a280ab69f3a005e849f6eafc3cd3c..90c4c22c407aadf5289d7172ed5b423cdb9938e1 100644 (file)
@@ -73,7 +73,8 @@ def get_physical_osds(devices, args):
                                      abs_size,
                                      args.osds_per_device,
                                      osd_id,
-                                     'dmcrypt' if args.dmcrypt else None))
+                                     'dmcrypt' if args.dmcrypt else None,
+                                     dev.symlink))
     return ret
 
 
@@ -119,14 +120,10 @@ def get_physical_fast_allocs(devices, type_, fast_slots_per_device, new_osds, ar
                 continue
             # any LV present is considered a taken slot
             occupied_slots = len(dev.lvs)
-            # prior to v15.2.8, db/wal deployments were grouping multiple fast devices into single VGs - we need to
-            # multiply requested_slots (per device) by the number of devices in the VG in order to ensure that
-            # abs_size is calculated correctly from vg_size
-            slots_for_vg = len(vg_devices) * requested_slots
             dev_size = dev.vg_size[0]
             # this only looks at the first vg on device, unsure if there is a better
             # way
-            abs_size = disk.Size(b=int(dev_size / slots_for_vg))
+            abs_size = disk.Size(b=int(dev_size / requested_slots))
             free_size = dev.vg_free[0]
             relative_size = int(abs_size) / dev_size
             if requested_size:
@@ -572,7 +569,8 @@ class Batch(object):
                      abs_size,
                      slots,
                      id_,
-                     encryption):
+                     encryption,
+                     symlink=None):
             self.id_ = id_
             self.data = self.VolSpec(path=data_path,
                                 rel_size=rel_size,
@@ -582,6 +580,7 @@ class Batch(object):
             self.fast = None
             self.very_fast = None
             self.encryption = encryption
+            self.symlink = symlink
 
         def add_fast_device(self, path, rel_size, abs_size, slots, type_):
             self.fast = self.VolSpec(path=path,
@@ -633,9 +632,12 @@ class Batch(object):
             if self.encryption:
                 report += templates.osd_encryption.format(
                     enc=self.encryption)
+            path = self.data.path
+            if self.symlink:
+                path = f'{self.symlink} -> {self.data.path}'
             report += templates.osd_component.format(
                 _type=self.data.type_,
-                path=self.data.path,
+                path=path,
                 size=self.data.abs_size,
                 percent=self.data.rel_size)
             if self.fast:
index 44d5063ce37e09c559d4258bac5975b4f9954d1b..c16afdaa767286a198c6278defc150a8cc35fe71 100644 (file)
@@ -101,6 +101,8 @@ class List(object):
 
         report = {}
 
+        pvs = api.get_pvs()
+
         for lv in lvs:
             if not api.is_ceph_device(lv):
                 continue
@@ -109,8 +111,7 @@ class List(object):
             report.setdefault(osd_id, [])
             lv_report = lv.as_dict()
 
-            pvs = api.get_pvs(filters={'lv_uuid': lv.lv_uuid})
-            lv_report['devices'] = [pv.name for pv in pvs] if pvs else []
+            lv_report['devices'] = [pv.name for pv in pvs if pv.lv_uuid == lv.lv_uuid] if pvs else []
             report[osd_id].append(lv_report)
 
             phys_devs = self.create_report_non_lv_device(lv)
index 9f8141d5406ce7aefda66d9bb7c7bb7c856fd61c..d6d778d165efe5d6d180e4f7c08f94a7a1ece413 100644 (file)
@@ -171,8 +171,8 @@ class Zap(object):
         pv = api.get_single_pv(filters={'lv_uuid': lv.lv_uuid})
         self.unmount_lv(lv)
 
-        wipefs(device.abspath)
-        zap_data(device.abspath)
+        wipefs(device.path)
+        zap_data(device.path)
 
         if self.args.destroy:
             lvs = api.get_lvs(filters={'vg_name': device.vg_name})
@@ -188,8 +188,8 @@ class Zap(object):
                 mlogger.info('More than 1 LV left in VG, will proceed to '
                              'destroy LV only')
                 mlogger.info('Removing LV because --destroy was given: %s',
-                             device.abspath)
-                api.remove_lv(device.abspath)
+                             device.path)
+                api.remove_lv(device.path)
         elif lv:
             # just remove all lvm metadata, leaving the LV around
             lv.clear_tags()
@@ -209,15 +209,15 @@ class Zap(object):
                 if os.path.realpath(mapper_path) in holders:
                     self.dmcrypt_close(mapper_uuid)
 
-        if system.device_is_mounted(device.abspath):
-            mlogger.info("Unmounting %s", device.abspath)
-            system.unmount(device.abspath)
+        if system.device_is_mounted(device.path):
+            mlogger.info("Unmounting %s", device.path)
+            system.unmount(device.path)
 
-        wipefs(device.abspath)
-        zap_data(device.abspath)
+        wipefs(device.path)
+        zap_data(device.path)
 
         if self.args.destroy:
-            mlogger.info("Destroying partition since --destroy was used: %s" % device.abspath)
+            mlogger.info("Destroying partition since --destroy was used: %s" % device.path)
             disk.remove_partition(device)
 
     def zap_lvm_member(self, device):
@@ -230,7 +230,7 @@ class Zap(object):
         """
         for lv in device.lvs:
             if lv.lv_name:
-                mlogger.info('Zapping lvm member {}. lv_path is {}'.format(device.abspath, lv.lv_path))
+                mlogger.info('Zapping lvm member {}. lv_path is {}'.format(device.path, lv.lv_path))
                 self.zap_lv(Device(lv.lv_path))
             else:
                 vg = api.get_single_vg(filters={'vg_name': lv.vg_name})
@@ -259,15 +259,15 @@ class Zap(object):
         for part_name in device.sys_api.get('partitions', {}).keys():
             self.zap_partition(Device('/dev/%s' % part_name))
 
-        wipefs(device.abspath)
-        zap_data(device.abspath)
+        wipefs(device.path)
+        zap_data(device.path)
 
     @decorators.needs_root
     def zap(self, devices=None):
         devices = devices or self.args.devices
 
         for device in devices:
-            mlogger.info("Zapping: %s", device.abspath)
+            mlogger.info("Zapping: %s", device.path)
             if device.is_mapper and not device.is_mpath:
                 terminal.error("Refusing to zap the mapper device: {}".format(device))
                 raise SystemExit(1)
index 50d2046daac59335081ac5e868d26462e70a9a97..06a2b3c2240876f18ec5149ec7314975b03493a9 100644 (file)
@@ -68,22 +68,17 @@ class List(object):
 
     def generate(self, devs=None):
         logger.debug('Listing block devices via lsblk...')
+        info_devices = disk.lsblk_all(abspath=True)
         if devs is None or devs == []:
-            devs = []
             # If no devs are given initially, we want to list ALL devices including children and
             # parents. Parent disks with child partitions may be the appropriate device to return if
             # the parent disk has a bluestore header, but children may be the most appropriate
             # devices to return if the parent disk does not have a bluestore header.
-            out, err, ret = process.call([
-                'lsblk', '--paths', '--output=NAME', '--noheadings', '--list'
-            ])
-            assert not ret
-            devs = out
+            devs = [device['NAME'] for device in info_devices if device.get('NAME',)]
 
         result = {}
         logger.debug('inspecting devices: {}'.format(devs))
         for dev in devs:
-            info = disk.lsblk(dev, abspath=True)
             # Linux kernels built with CONFIG_ATARI_PARTITION enabled can falsely interpret
             # bluestore's on-disk format as an Atari partition table. These false Atari partitions
             # can be interpreted as real OSDs if a bluestore OSD was previously created on the false
@@ -93,28 +88,29 @@ class List(object):
             # parent isn't bluestore, then the child could be a valid bluestore OSD. If we fail to
             # determine whether a parent is bluestore, we should err on the side of not reporting
             # the child so as not to give a false negative.
-            if 'PKNAME' in info and info['PKNAME'] != "":
-                parent = info['PKNAME']
-                try:
-                    if disk.has_bluestore_label(parent):
-                        logger.warning(('ignoring child device {} whose parent {} is a BlueStore OSD.'.format(dev, parent),
-                                        'device is likely a phantom Atari partition. device info: {}'.format(info)))
+            for info_device in info_devices:
+                if 'PKNAME' in info_device and info_device['PKNAME'] != "":
+                    parent = info_device['PKNAME']
+                    try:
+                        if disk.has_bluestore_label(parent):
+                            logger.warning(('ignoring child device {} whose parent {} is a BlueStore OSD.'.format(dev, parent),
+                                            'device is likely a phantom Atari partition. device info: {}'.format(info_device)))
+                            continue
+                    except OSError as e:
+                        logger.error(('ignoring child device {} to avoid reporting invalid BlueStore data from phantom Atari partitions.'.format(dev),
+                                    'failed to determine if parent device {} is BlueStore. err: {}'.format(parent, e)))
                         continue
-                except OSError as e:
-                    logger.error(('ignoring child device {} to avoid reporting invalid BlueStore data from phantom Atari partitions.'.format(dev),
-                                  'failed to determine if parent device {} is BlueStore. err: {}'.format(parent, e)))
-                    continue
 
-            bs_info = _get_bluestore_info(dev)
-            if bs_info is None:
-                # None is also returned in the rare event that there is an issue reading info from
-                # a BlueStore disk, so be sure to log our assumption that it isn't bluestore
-                logger.info('device {} does not have BlueStore information'.format(dev))
-                continue
-            uuid = bs_info['osd_uuid']
-            if uuid not in result:
-                result[uuid] = {}
-            result[uuid].update(bs_info)
+                bs_info = _get_bluestore_info(dev)
+                if bs_info is None:
+                    # None is also returned in the rare event that there is an issue reading info from
+                    # a BlueStore disk, so be sure to log our assumption that it isn't bluestore
+                    logger.info('device {} does not have BlueStore information'.format(dev))
+                    continue
+                uuid = bs_info['osd_uuid']
+                if uuid not in result:
+                    result[uuid] = {}
+                result[uuid].update(bs_info)
 
         return result
 
index 70e5256d27317f97c6705733d4d8679f739960a1..ff7040beb06956007b6a853f96cf2c21fff580b9 100644 (file)
@@ -137,8 +137,8 @@ class Scan(object):
                     osd_metadata[file_json_key] = content
 
         # we must scan the paths again because this might be a temporary mount
-        path_mounts = system.get_mounts(paths=True)
-        device = path_mounts.get(path)
+        path_mounts = system.Mounts(paths=True)
+        device = path_mounts.get_mounts().get(path)
 
         # it is possible to have more than one device, pick the first one, and
         # warn that it is possible that more than one device is 'data'
@@ -360,8 +360,8 @@ class Scan(object):
                 ))
 
         # Capture some environment status, so that it can be reused all over
-        self.device_mounts = system.get_mounts(devices=True)
-        self.path_mounts = system.get_mounts(paths=True)
+        self.device_mounts = system.Mounts(devices=True).get_mounts()
+        self.path_mounts = system.Mounts(paths=True).get_mounts()
 
         for path in paths:
             args.osd_path = path
index 652b0f9c87d13ed5a13506214c370609993303f9..7868665cecbf59e32856be3f38462615947f36d1 100644 (file)
@@ -147,8 +147,8 @@ Ceph Conf: {ceph_path}
             # we warn only here, because it is possible that the configuration
             # file is not needed, or that it will be loaded by some other means
             # (like reading from lvm tags)
-            logger.exception('ignoring inability to load ceph.conf')
-            terminal.red(error)
+            logger.warning('ignoring inability to load ceph.conf', exc_info=1)
+            terminal.yellow(error)
         # dispatch to sub-commands
         terminal.dispatch(self.mapper, subcommand_args)
 
index c41a46074439766f5d1a7534e8b156531420f931..f060f78d44c57b5b645d020de4037337defcccfa 100644 (file)
@@ -58,32 +58,28 @@ def mock_lv_device_generator():
         return dev
     return mock_lv
 
-
-@pytest.fixture
-def mock_devices_available():
+def mock_device():
     dev = create_autospec(device.Device)
     dev.path = '/dev/foo'
     dev.vg_name = 'vg_foo'
     dev.lv_name = 'lv_foo'
+    dev.symlink = None
     dev.vgs = [lvm.VolumeGroup(vg_name=dev.vg_name, lv_name=dev.lv_name)]
     dev.available_lvm = True
     dev.vg_size = [21474836480]
     dev.vg_free = dev.vg_size
-    return [dev]
+    dev.lvs = []
+    return dev
+
+@pytest.fixture(params=range(1,3))
+def mock_devices_available(request):
+    ret = []
+    for _ in range(request.param):
+        ret.append(mock_device())
+    return ret
 
 @pytest.fixture
 def mock_device_generator():
-    def mock_device():
-        dev = create_autospec(device.Device)
-        dev.path = '/dev/foo'
-        dev.vg_name = 'vg_foo'
-        dev.lv_name = 'lv_foo'
-        dev.vgs = [lvm.VolumeGroup(vg_name=dev.vg_name, lv_name=dev.lv_name)]
-        dev.available_lvm = True
-        dev.vg_size = [21474836480]
-        dev.vg_free = dev.vg_size
-        dev.lvs = []
-        return dev
     return mock_device
 
 
@@ -238,14 +234,15 @@ def ceph_parttype(request):
 @pytest.fixture
 def lsblk_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype):
     monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
-                        lambda path: {'TYPE': 'disk', 'PARTLABEL': ceph_partlabel})
-    # setting blkid here too in order to be able to fall back to PARTTYPE based
-    # membership
-    monkeypatch.setattr("ceph_volume.util.device.disk.blkid",
                         lambda path: {'TYPE': 'disk',
-                                      'PARTLABEL': '',
+                                      'NAME': 'sda',
+                                      'PARTLABEL': ceph_partlabel,
                                       'PARTTYPE': ceph_parttype})
-
+    monkeypatch.setattr("ceph_volume.util.device.disk.lsblk_all",
+                        lambda: [{'TYPE': 'disk',
+                                  'NAME': 'sda',
+                                  'PARTLABEL': ceph_partlabel,
+                                  'PARTTYPE': ceph_parttype}])
 
 @pytest.fixture
 def blkid_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype):
@@ -264,14 +261,19 @@ def blkid_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype):
 def device_info_not_ceph_disk_member(monkeypatch, request):
     monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
                         lambda path: {'TYPE': 'disk',
+                                      'NAME': 'sda',
                                       'PARTLABEL': request.param[0]})
+    monkeypatch.setattr("ceph_volume.util.device.disk.lsblk_all",
+                        lambda: [{'TYPE': 'disk',
+                                  'NAME': 'sda',
+                                  'PARTLABEL': request.param[0]}])
     monkeypatch.setattr("ceph_volume.util.device.disk.blkid",
                         lambda path: {'TYPE': 'disk',
                                       'PARTLABEL': request.param[1]})
 
 @pytest.fixture
-def patched_get_block_devs_lsblk():
-    with patch('ceph_volume.util.disk.get_block_devs_lsblk') as p:
+def patched_get_block_devs_sysfs():
+    with patch('ceph_volume.util.disk.get_block_devs_sysfs') as p:
         yield p
 
 @pytest.fixture
@@ -285,7 +287,11 @@ def patch_bluestore_label():
 def device_info(monkeypatch, patch_bluestore_label):
     def apply(devices=None, lsblk=None, lv=None, blkid=None, udevadm=None,
               has_bluestore_label=False):
-        devices = devices if devices else {}
+        if devices:
+            for dev in devices.keys():
+                devices[dev]['device_nodes'] = os.path.basename(dev)
+        else:
+            devices = {}
         lsblk = lsblk if lsblk else {}
         blkid = blkid if blkid else {}
         udevadm = udevadm if udevadm else {}
@@ -305,3 +311,11 @@ def device_info(monkeypatch, patch_bluestore_label):
 @pytest.fixture(params=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.999, 1.0])
 def data_allocate_fraction(request):
     return request.param
+
+@pytest.fixture
+def fake_filesystem(fs):
+
+    fs.create_dir('/sys/block/sda/slaves')
+    fs.create_dir('/sys/block/sda/queue')
+    fs.create_dir('/sys/block/rbd0')
+    yield fs
index 96a5b5d74db5cc6ffdf9377155cc0ade67110bb7..e1578e33df3a5dbbd4381953730d665906824b5c 100644 (file)
@@ -225,6 +225,16 @@ class TestBatch(object):
                                               'block_db', 2, 2, args)
         assert len(fast) == 2
 
+    def test_get_physical_fast_allocs_abs_size(self, factory,
+                                               conf_ceph_stub,
+                                               mock_devices_available):
+        conf_ceph_stub('[global]\nfsid=asdf-lkjh')
+        args = factory(block_db_slots=None, get_block_db_size=None)
+        fasts = batch.get_physical_fast_allocs(mock_devices_available,
+                                              'block_db', 2, 2, args)
+        for fast, dev in zip(fasts, mock_devices_available):
+            assert fast[2] == int(dev.vg_size[0] / 2)
+
     def test_batch_fast_allocations_one_block_db_length(self, factory, conf_ceph_stub,
                                                   mock_lv_device_generator):
         conf_ceph_stub('[global]\nfsid=asdf-lkjh')
index 1faaee05e6ddad66e5daf2ffa62996cfcd7ff6f7..4c86d0ca1c4745de15373ae394840a1a19a26695 100644 (file)
@@ -69,7 +69,7 @@ class TestFindAssociatedDevices(object):
 
         result = migrate.find_associated_devices(osd_id='0', osd_fsid='1234')
         assert len(result) == 1
-        assert result[0][0].abspath == '/dev/VolGroup/lv1'
+        assert result[0][0].path == '/dev/VolGroup/lv1'
         assert result[0][0].lvs == [vol]
         assert result[0][1] == 'block'
 
@@ -96,10 +96,10 @@ class TestFindAssociatedDevices(object):
         assert len(result) == 2
         for d in result:
           if d[1] == 'block':
-            assert d[0].abspath == '/dev/VolGroup/lv1'
+            assert d[0].path == '/dev/VolGroup/lv1'
             assert d[0].lvs == [vol]
           elif d[1] == 'wal':
-            assert d[0].abspath == '/dev/VolGroup/lv2'
+            assert d[0].path == '/dev/VolGroup/lv2'
             assert d[0].lvs == [vol2]
           else:
             assert False
@@ -133,13 +133,13 @@ class TestFindAssociatedDevices(object):
         assert len(result) == 3
         for d in result:
           if d[1] == 'block':
-            assert d[0].abspath == '/dev/VolGroup/lv1'
+            assert d[0].path == '/dev/VolGroup/lv1'
             assert d[0].lvs == [vol]
           elif d[1] == 'wal':
-            assert d[0].abspath == '/dev/VolGroup/lv2'
+            assert d[0].path == '/dev/VolGroup/lv2'
             assert d[0].lvs == [vol2]
           elif d[1] == 'db':
-            assert d[0].abspath == '/dev/VolGroup/lv3'
+            assert d[0].path == '/dev/VolGroup/lv3'
             assert d[0].lvs == [vol3]
           else:
             assert False
index 53c69463317a6078927164c64ad43c10687d9cf7..64016111c26317098bdadf5864835e26aaa6e392 100644 (file)
@@ -69,7 +69,7 @@ class TestFindAssociatedDevices(object):
         monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
 
         result = zap.find_associated_devices(osd_id='0')
-        assert result[0].abspath == '/dev/VolGroup/lv'
+        assert result[0].path == '/dev/VolGroup/lv'
 
     def test_lv_is_matched_fsid(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,' +\
@@ -82,7 +82,7 @@ class TestFindAssociatedDevices(object):
         monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
 
         result = zap.find_associated_devices(osd_fsid='asdf-lkjh')
-        assert result[0].abspath == '/dev/VolGroup/lv'
+        assert result[0].path == '/dev/VolGroup/lv'
 
     def test_lv_is_matched_id_fsid(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,' +\
@@ -95,7 +95,7 @@ class TestFindAssociatedDevices(object):
         monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
 
         result = zap.find_associated_devices(osd_id='0', osd_fsid='asdf-lkjh')
-        assert result[0].abspath == '/dev/VolGroup/lv'
+        assert result[0].path == '/dev/VolGroup/lv'
 
 
 class TestEnsureAssociatedLVs(object):
index d5ccee5c964956939de61832f53a6bb9cf45db70..5ad501bab94a43f2dbd3520b8528579426f1c890 100644 (file)
@@ -48,19 +48,19 @@ def _devices_side_effect():
         "/dev/mapper/ceph--osd--block--2": {},
     }
 
-def _lsblk_list_output():
+def _lsblk_all_devices(abspath=True):
     return [
-        '/dev/sda',
-        '/dev/sda1',
-        '/dev/sda2',
-        '/dev/sda3',
-        '/dev/sdb',
-        '/dev/sdb2',
-        '/dev/sdb3',
-        '/dev/sdc',
-        '/dev/sdd',
-        '/dev/mapper/ceph--osd--block--1',
-        '/dev/mapper/ceph--osd--block--2',
+        {"NAME": "/dev/sda", "KNAME": "/dev/sda", "PKNAME": ""},
+        {"NAME": "/dev/sda1", "KNAME": "/dev/sda1", "PKNAME": "/dev/sda"},
+        {"NAME": "/dev/sda2", "KNAME": "/dev/sda2", "PKNAME": "/dev/sda"},
+        {"NAME": "/dev/sda3", "KNAME": "/dev/sda3", "PKNAME": "/dev/sda"},
+        {"NAME": "/dev/sdb", "KNAME": "/dev/sdb", "PKNAME": ""},
+        {"NAME": "/dev/sdb2", "KNAME": "/dev/sdb2", "PKNAME": "/dev/sdb"},
+        {"NAME": "/dev/sdb3", "KNAME": "/dev/sdb3", "PKNAME": "/dev/sdb"},
+        {"NAME": "/dev/sdc", "KNAME": "/dev/sdc", "PKNAME": ""},
+        {"NAME": "/dev/sdd", "KNAME": "/dev/sdd", "PKNAME": ""},
+        {"NAME": "/dev/mapper/ceph--osd--block--1", "KNAME": "/dev/mapper/ceph--osd--block--1", "PKNAME": "/dev/sdd"},
+        {"NAME": "/dev/mapper/ceph--osd--block--2", "KNAME": "/dev/mapper/ceph--osd--block--2", "PKNAME": "/dev/sdd"},
     ]
 
 # dummy lsblk output for device with optional parent output
@@ -153,7 +153,7 @@ def _process_call_side_effect(command, **kw):
                 return _lsblk_output(dev, parent="/dev/sdd"), '', 0
             pytest.fail('dev {} needs behavior specified for it'.format(dev))
         if "/dev/" not in command:
-            return _lsblk_list_output(), '', 0
+            return _lsblk_all_devices(), '', 0
         pytest.fail('command {} needs behavior specified for it'.format(command))
 
     if "ceph-bluestore-tool" in command:
@@ -192,15 +192,16 @@ class TestList(object):
     @patch('ceph_volume.util.device.disk.get_devices')
     @patch('ceph_volume.util.disk.has_bluestore_label')
     @patch('ceph_volume.process.call')
-    def test_raw_list(self, patched_call, patched_bluestore_label, patched_get_devices):
+    @patch('ceph_volume.util.disk.lsblk_all')
+    def test_raw_list(self, patched_disk_lsblk, patched_call, patched_bluestore_label, patched_get_devices):
         raw.list.logger.setLevel("DEBUG")
         patched_call.side_effect = _process_call_side_effect
+        patched_disk_lsblk.side_effect = _lsblk_all_devices
         patched_bluestore_label.side_effect = _has_bluestore_label_side_effect
         patched_get_devices.side_effect = _devices_side_effect
 
         result = raw.list.List([]).generate()
-        patched_call.assert_any_call(['lsblk', '--paths', '--output=NAME', '--noheadings', '--list'])
-        assert len(result) == 2
+        assert len(result) == 3
 
         sdb = result['sdb-uuid']
         assert sdb['osd_uuid'] == 'sdb-uuid'
@@ -219,17 +220,19 @@ class TestList(object):
     @patch('ceph_volume.util.device.disk.get_devices')
     @patch('ceph_volume.util.disk.has_bluestore_label')
     @patch('ceph_volume.process.call')
-    def test_raw_list_with_OSError(self, patched_call, patched_bluestore_label, patched_get_devices):
+    @patch('ceph_volume.util.disk.lsblk_all')
+    def test_raw_list_with_OSError(self, patched_disk_lsblk, patched_call, patched_bluestore_label, patched_get_devices):
         def _has_bluestore_label_side_effect_with_OSError(device_path):
             if device_path == "/dev/sdd":
                 raise OSError('fake OSError')
             return _has_bluestore_label_side_effect(device_path)
 
         raw.list.logger.setLevel("DEBUG")
+        patched_disk_lsblk.side_effect = _lsblk_all_devices
         patched_call.side_effect = _process_call_side_effect
         patched_bluestore_label.side_effect = _has_bluestore_label_side_effect_with_OSError
         patched_get_devices.side_effect = _devices_side_effect
 
         result = raw.list.List([]).generate()
-        assert len(result) == 1
+        assert len(result) == 3
         assert 'sdb-uuid' in result
index ac2dd0e7b3c312a10c8a154679b135effda33041..5c7bd3117920ac4e19c6e37b2a799d13449f620e 100644 (file)
@@ -5,9 +5,9 @@ from ceph_volume.devices.simple import activate
 
 class TestActivate(object):
 
-    def test_no_data_uuid(self, factory, tmpfile, is_root, monkeypatch, capture):
-        json_config = tmpfile(contents='{}')
-        args = factory(osd_id='0', osd_fsid='1234', json_config=json_config)
+    def test_no_data_uuid(self, factory, is_root, monkeypatch, capture, fake_filesystem):
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        args = factory(osd_id='0', osd_fsid='1234', json_config='/tmp/json-config')
         with pytest.raises(RuntimeError):
             activate.Activate([]).activate(args)
 
@@ -45,9 +45,9 @@ class TestActivate(object):
 
 class TestEnableSystemdUnits(object):
 
-    def test_nothing_is_activated(self, tmpfile, is_root, capsys):
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--no-systemd', '--file', json_config, '0', '1234'], from_trigger=True)
+    def test_nothing_is_activated(self, is_root, capsys, fake_filesystem):
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--no-systemd', '--file', '/tmp/json-config', '0', '1234'], from_trigger=True)
         activation.activate = lambda x: True
         activation.main()
         activation.enable_systemd_units('0', '1234')
@@ -56,69 +56,69 @@ class TestEnableSystemdUnits(object):
         assert 'Skipping masking of ceph-disk' in stderr
         assert 'Skipping enabling and starting OSD simple' in stderr
 
-    def test_no_systemd_flag_is_true(self, tmpfile, is_root):
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--no-systemd', '--file', json_config, '0', '1234'], from_trigger=True)
+    def test_no_systemd_flag_is_true(self, is_root, fake_filesystem):
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--no-systemd', '--file', '/tmp/json-config', '0', '1234'], from_trigger=True)
         activation.activate = lambda x: True
         activation.main()
         assert activation.skip_systemd is True
 
-    def test_no_systemd_flag_is_false(self, tmpfile, is_root):
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--file', json_config, '0', '1234'], from_trigger=True)
+    def test_no_systemd_flag_is_false(self, is_root, fake_filesystem):
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--file', '/tmp/json-config', '0', '1234'], from_trigger=True)
         activation.activate = lambda x: True
         activation.main()
         assert activation.skip_systemd is False
 
-    def test_masks_ceph_disk(self, tmpfile, is_root, monkeypatch, capture):
+    def test_masks_ceph_disk(self, is_root, monkeypatch, capture, fake_filesystem):
         monkeypatch.setattr('ceph_volume.systemd.systemctl.mask_ceph_disk', capture)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_volume', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_osd', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.start_osd', lambda *a: True)
 
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--file', json_config, '0', '1234'], from_trigger=False)
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--file', '/tmp/json-config', '0', '1234'], from_trigger=False)
         activation.activate = lambda x: True
         activation.main()
         activation.enable_systemd_units('0', '1234')
         assert len(capture.calls) == 1
 
-    def test_enables_simple_unit(self, tmpfile, is_root, monkeypatch, capture):
+    def test_enables_simple_unit(self, is_root, monkeypatch, capture, fake_filesystem):
         monkeypatch.setattr('ceph_volume.systemd.systemctl.mask_ceph_disk', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_volume', capture)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_osd', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.start_osd', lambda *a: True)
 
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--file', json_config, '0', '1234'], from_trigger=False)
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--file', '/tmp/json-config', '0', '1234'], from_trigger=False)
         activation.activate = lambda x: True
         activation.main()
         activation.enable_systemd_units('0', '1234')
         assert len(capture.calls) == 1
         assert capture.calls[0]['args'] == ('0', '1234', 'simple')
 
-    def test_enables_osd_unit(self, tmpfile, is_root, monkeypatch, capture):
+    def test_enables_osd_unit(self, is_root, monkeypatch, capture, fake_filesystem):
         monkeypatch.setattr('ceph_volume.systemd.systemctl.mask_ceph_disk', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_volume', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_osd', capture)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.start_osd', lambda *a: True)
 
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--file', json_config, '0', '1234'], from_trigger=False)
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--file', '/tmp/json-config', '0', '1234'], from_trigger=False)
         activation.activate = lambda x: True
         activation.main()
         activation.enable_systemd_units('0', '1234')
         assert len(capture.calls) == 1
         assert capture.calls[0]['args'] == ('0',)
 
-    def test_starts_osd_unit(self, tmpfile, is_root, monkeypatch, capture):
+    def test_starts_osd_unit(self, is_root, monkeypatch, capture, fake_filesystem):
         monkeypatch.setattr('ceph_volume.systemd.systemctl.mask_ceph_disk', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_volume', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.enable_osd', lambda *a: True)
         monkeypatch.setattr('ceph_volume.systemd.systemctl.start_osd', capture)
 
-        json_config = tmpfile(contents='{}')
-        activation = activate.Activate(['--file', json_config, '0', '1234'], from_trigger=False)
+        fake_filesystem.create_file('/tmp/json-config', contents='{}')
+        activation = activate.Activate(['--file', '/tmp/json-config', '0', '1234'], from_trigger=False)
         activation.activate = lambda x: True
         activation.main()
         activation.enable_systemd_units('0', '1234')
index 118493625f37a7f69377474d12060cff05a55a4b..b5d12065578534159763c51ad3bf5a2658efe843 100644 (file)
@@ -5,20 +5,23 @@ from ceph_volume.devices.simple import scan
 
 class TestGetContents(object):
 
-    def test_multiple_lines_are_left_as_is(self, tmpfile):
-        magic_file = tmpfile(contents='first\nsecond\n')
+    def setup(self):
+        self.magic_file_name = '/tmp/magic-file'
+
+    def test_multiple_lines_are_left_as_is(self, fake_filesystem):
+        magic_file = fake_filesystem.create_file(self.magic_file_name, contents='first\nsecond\n')
         scanner = scan.Scan([])
-        assert scanner.get_contents(magic_file) == 'first\nsecond\n'
+        assert scanner.get_contents(magic_file.path) == 'first\nsecond\n'
 
-    def test_extra_whitespace_gets_removed(self, tmpfile):
-        magic_file = tmpfile(contents='first   ')
+    def test_extra_whitespace_gets_removed(self, fake_filesystem):
+        magic_file = fake_filesystem.create_file(self.magic_file_name, contents='first   ')
         scanner = scan.Scan([])
-        assert scanner.get_contents(magic_file) == 'first'
+        assert scanner.get_contents(magic_file.path) == 'first'
 
-    def test_single_newline_values_are_trimmed(self, tmpfile):
-        magic_file = tmpfile(contents='first\n')
+    def test_single_newline_values_are_trimmed(self, fake_filesystem):
+        magic_file = fake_filesystem.create_file(self.magic_file_name, contents='first\n')
         scanner = scan.Scan([])
-        assert scanner.get_contents(magic_file) == 'first'
+        assert scanner.get_contents(magic_file.path) == 'first'
 
 
 class TestEtcPath(object):
@@ -36,10 +39,10 @@ class TestEtcPath(object):
         assert scanner.etc_path == path
         assert os.path.isdir(path)
 
-    def test_complains_when_file(self, tmpfile):
-        path = tmpfile()
+    def test_complains_when_file(self, fake_filesystem):
+        etc_dir = fake_filesystem.create_file('/etc/ceph/osd')
         scanner = scan.Scan([])
-        scanner._etc_path = path
+        scanner._etc_path = etc_dir.path
         with pytest.raises(RuntimeError):
             scanner.etc_path
 
index b00bd668d01aa666b35dead238ad2c40f9ee6502..785d8b56e86b66132d05efa867adefa1b7cb9eb6 100644 (file)
@@ -3,10 +3,12 @@
 import pytest
 from ceph_volume.util.device import Devices
 from ceph_volume.util.lsmdisk import LSMDisk
+from mock.mock import patch
 import ceph_volume.util.lsmdisk as lsmdisk
 
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_report_keys(device_info):
     device_info(devices={
         # example output of disk.get_devices()
@@ -28,13 +30,15 @@ def device_report_keys(device_info):
                      'size': 1999844147200.0,
                      'support_discard': '',
                      'vendor': 'DELL',
-                     'device_id': 'Vendor-Model-Serial'}
+                     'device_id': 'Vendor-Model-Serial',
+                     'device_nodes': 'sdb'}
     }
  )
     report = Devices().json_report()[0]
     return list(report.keys())
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_sys_api_keys(device_info):
     device_info(devices={
         # example output of disk.get_devices()
@@ -55,13 +59,15 @@ def device_sys_api_keys(device_info):
                      'sectorsize': '512',
                      'size': 1999844147200.0,
                      'support_discard': '',
-                     'vendor': 'DELL'}
+                     'vendor': 'DELL',
+                     'device_nodes': 'sdb'}
     }
  )
     report = Devices().json_report()[0]
     return list(report['sys_api'].keys())
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_data(device_info):
     device_info(
         devices={
@@ -85,6 +91,7 @@ def device_data(device_info):
                 'size': 1999844147200.0,
                 'support_discard': '',
                 'vendor': 'DELL',
+                'device_nodes': 'sdb'
             }
         }
     )
@@ -140,6 +147,7 @@ class TestInventory(object):
         'size',
         'support_discard',
         'vendor',
+        'device_nodes'
     ]
 
     expected_lsm_keys = [
index afe9a23446d94507a31fcf151cafcedbd320d35e..d03d405d5538d099627a0a1bf558d7f636d92571 100644 (file)
@@ -39,7 +39,7 @@ class TestVolume(object):
         assert error.value.code == 0
         log = caplog.records[-1]
         assert log.message == 'ignoring inability to load ceph.conf'
-        assert log.levelname == 'ERROR'
+        assert log.levelname == 'WARNING'
 
     def test_logs_current_command(self, caplog):
         with pytest.raises(SystemExit) as error:
@@ -50,15 +50,15 @@ class TestVolume(object):
         assert log.message == 'Running command: ceph-volume --cluster barnacle lvm --help'
         assert log.levelname == 'INFO'
 
-    def test_logs_set_level_error(self, caplog):
+    def test_logs_set_level_warning(self, caplog):
         with pytest.raises(SystemExit) as error:
-            main.Volume(argv=['ceph-volume', '--log-level', 'error', '--cluster', 'barnacle', 'lvm', '--help'])
+            main.Volume(argv=['ceph-volume', '--log-level', 'warning', '--cluster', 'barnacle', 'lvm', '--help'])
         # make sure we aren't causing an actual error
         assert error.value.code == 0
         assert caplog.records
-        # only log levels of 'ERROR' or above should be captured
+        # only log levels of 'WARNING'
         for log in caplog.records:
-            assert log.levelname in ['ERROR', 'CRITICAL']
+            assert log.levelname == 'WARNING'
 
     def test_logs_incorrect_log_level(self, capsys):
         with pytest.raises(SystemExit) as error:
index 19aaaa3bd7e839f3cda5d02c88597e67db18399b..b0446a13b4685a6780cbb23a661b151d664a9d87 100644 (file)
@@ -16,11 +16,12 @@ class TestOSDPath(object):
         with pytest.raises(exceptions.SuperUserError):
             self.validator('')
 
-    def test_path_is_not_a_directory(self, is_root, tmpfile, monkeypatch):
+    def test_path_is_not_a_directory(self, is_root, monkeypatch, fake_filesystem):
+        fake_file = fake_filesystem.create_file('/tmp/foo')
         monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
         validator = arg_validators.OSDPath()
         with pytest.raises(argparse.ArgumentError):
-            validator(tmpfile())
+            validator(fake_file.path)
 
     def test_files_are_missing(self, is_root, tmpdir, monkeypatch):
         tmppath = str(tmpdir)
@@ -78,16 +79,25 @@ class TestExcludeGroupOptions(object):
 
 class TestValidDevice(object):
 
-    def setup(self):
+    def setup(self, fake_filesystem):
         self.validator = arg_validators.ValidDevice()
 
     @patch('ceph_volume.util.arg_validators.disk.has_bluestore_label', return_value=False)
-    def test_path_is_valid(self, m_has_bs_label, fake_call, patch_bluestore_label):
-        result = self.validator('/')
-        assert result.abspath == '/'
+    def test_path_is_valid(self, m_has_bs_label,
+                           fake_call, patch_bluestore_label,
+                           device_info, monkeypatch):
+        monkeypatch.setattr('ceph_volume.util.device.Device.exists', lambda: True)
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
+        device_info(lsblk=lsblk)
+        result = self.validator('/dev/sda')
+        assert result.path == '/dev/sda'
 
     @patch('ceph_volume.util.arg_validators.disk.has_bluestore_label', return_value=False)
-    def test_path_is_invalid(self, m_has_bs_label, fake_call, patch_bluestore_label):
+    def test_path_is_invalid(self, m_has_bs_label,
+                             fake_call, patch_bluestore_label,
+                             device_info):
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
+        device_info(lsblk=lsblk)
         with pytest.raises(argparse.ArgumentError):
             self.validator('/device/does/not/exist')
 
index f6e439279d78c4e80e6b6aafdf0882dcf8bfd5fa..8eef3ff00c1d9ce94258b1762360caa9f0bb58e5 100644 (file)
@@ -1,3 +1,4 @@
+import os
 import pytest
 from copy import deepcopy
 from ceph_volume.util import device
@@ -16,8 +17,8 @@ class TestDevice(object):
                             deepcopy(volumes))
 
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "disk"}
-        device_info(devices=data,lsblk=lsblk)
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
+        device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.sys_api
         assert "foo" in disk.sys_api
@@ -32,157 +33,196 @@ class TestDevice(object):
 
         # 5GB in size
         data = {"/dev/sda": {"size": "5368709120"}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.lvm_size.gb == 4
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lvm_size_rounds_down(self, fake_call, device_info):
         # 5.5GB in size
         data = {"/dev/sda": {"size": "5905580032"}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.lvm_size.gb == 4
 
     def test_is_lv(self, fake_call, device_info):
         data = {"lv_path": "vg/lv", "vg_name": "vg", "name": "lv"}
-        lsblk = {"TYPE": "lvm"}
+        lsblk = {"TYPE": "lvm", "NAME": "vg-lv"}
         device_info(lv=data,lsblk=lsblk)
         disk = device.Device("vg/lv")
         assert disk.is_lv
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_vgs_is_empty(self, fake_call, device_info, monkeypatch):
         BarPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000",
                                  pv_tags={})
         pvolumes = []
         pvolumes.append(BarPVolume)
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(lsblk=lsblk)
         monkeypatch.setattr(api, 'get_pvs', lambda **kwargs: {})
 
         disk = device.Device("/dev/nvme0n1")
         assert disk.vgs == []
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_vgs_is_not_empty(self, fake_call, device_info, monkeypatch):
-        vg = api.VolumeGroup(vg_name='foo/bar', vg_free_count=6,
+        vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=6,
                              vg_extent_size=1073741824)
-        monkeypatch.setattr(api, 'get_device_vgs', lambda x: [vg])
-        lsblk = {"TYPE": "disk"}
+        monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg])
+        lsblk = {"TYPE": "disk", "NAME": "nvme0n1"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/nvme0n1")
         assert len(disk.vgs) == 1
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_device(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "device"}
+        lsblk = {"TYPE": "device", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    def test_loop_device_is_not_device(self, fake_call, device_info):
+        data = {"/dev/loop0": {"foo": "bar"}}
+        lsblk = {"TYPE": "loop"}
+        device_info(devices=data, lsblk=lsblk)
+        disk = device.Device("/dev/loop0")
+        assert disk.is_device is False
+
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    def test_loop_device_is_device(self, fake_call, device_info):
+        data = {"/dev/loop0": {"foo": "bar"}}
+        lsblk = {"TYPE": "loop"}
+        os.environ["CEPH_VOLUME_ALLOW_LOOP_DEVICES"] = "1"
+        device_info(devices=data, lsblk=lsblk)
+        disk = device.Device("/dev/loop0")
+        assert disk.is_device is True
+        del os.environ["CEPH_VOLUME_ALLOW_LOOP_DEVICES"]
+
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "1"}}
-        lsblk = {"TYPE": "device"}
+        lsblk = {"TYPE": "device", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_not_rotational(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
-        lsblk = {"TYPE": "device"}
+        lsblk = {"TYPE": "device", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational_lsblk(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "device", "ROTA": "1"}
+        lsblk = {"TYPE": "device", "ROTA": "1", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_not_rotational_lsblk(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
-        lsblk = {"TYPE": "device", "ROTA": "0"}
+        lsblk = {"TYPE": "device", "ROTA": "0", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational_defaults_true(self, fake_call, device_info):
         # rotational will default true if no info from sys_api or lsblk is found
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "device", "foo": "bar"}
+        lsblk = {"TYPE": "device", "foo": "bar", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_disk_is_device(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_partition(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
-        lsblk = {"TYPE": "part", "PKNAME": "sda"}
+        lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda1")
         assert disk.is_partition
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mpath_device_is_device(self, fake_call, device_info):
         data = {"/dev/foo": {"foo": "bar"}}
-        lsblk = {"TYPE": "mpath"}
+        lsblk = {"TYPE": "mpath", "NAME": "foo"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/foo")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_lvm_member(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
-        lsblk = {"TYPE": "part", "PKNAME": "sda"}
+        lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda1")
         assert not disk.is_lvm_member
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_lvm_member(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
-        lsblk = {"TYPE": "part", "PKNAME": "sda"}
+        lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda1")
         assert not disk.is_lvm_member
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_mapper_device(self, fake_call, device_info):
-        lsblk = {"TYPE": "lvm"}
+        lsblk = {"TYPE": "lvm", "NAME": "foo"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/mapper/foo")
         assert disk.is_mapper
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_dm_is_mapper_device(self, fake_call, device_info):
-        lsblk = {"TYPE": "lvm"}
+        lsblk = {"TYPE": "lvm", "NAME": "dm-4"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/dm-4")
         assert disk.is_mapper
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_mapper_device(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.is_mapper
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_lsblk(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
+                             "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_member_not_available_lsblk(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
@@ -190,23 +230,27 @@ class TestDevice(object):
         assert "Used by ceph-disk" in disk.rejected_reasons
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
+                             "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_member_not_available_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
         assert not disk.available
         assert "Used by ceph-disk" in disk.rejected_reasons
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_removable_device(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 1}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sdb"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sdb")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_device_with_gpt_headers(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 0, "size": 5368709120}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sdb"}
         blkid= {"PTTYPE": "gpt"}
         device_info(
             devices=data,
@@ -216,96 +260,145 @@ class TestDevice(object):
         disk = device.Device("/dev/sdb")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_accept_non_removable_device(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 0, "size": 5368709120}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sdb"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sdb")
         assert disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_not_acceptable_device(self, fake_call, device_info):
         data = {"/dev/dm-0": {"foo": "bar"}}
-        lsblk = {"TYPE": "mpath"}
+        lsblk = {"TYPE": "mpath", "NAME": "dm-0"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/dm-0")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    @patch('ceph_volume.util.device.os.path.realpath')
+    @patch('ceph_volume.util.device.os.path.islink')
+    def test_accept_symlink_to_device(self,
+                                      m_os_path_islink,
+                                      m_os_path_realpath,
+                                      device_info,
+                                      fake_call):
+        m_os_path_islink.return_value = True
+        m_os_path_realpath.return_value = '/dev/sdb'
+        data = {"/dev/sdb": {"ro": 0, "size": 5368709120}}
+        lsblk = {"TYPE": "disk"}
+        device_info(devices=data,lsblk=lsblk)
+        disk = device.Device("/dev/test_symlink")
+        print(disk)
+        print(disk.sys_api)
+        assert disk.available
+
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    @patch('ceph_volume.util.device.os.readlink')
+    @patch('ceph_volume.util.device.os.path.islink')
+    def test_reject_symlink_to_device_mapper(self,
+                                             m_os_path_islink,
+                                             m_os_readlink,
+                                             device_info,
+                                             fake_call):
+        m_os_path_islink.return_value = True
+        m_os_readlink.return_value = '/dev/dm-0'
+        data = {"/dev/mapper/mpatha": {"ro": 0, "size": 5368709120}}
+        lsblk = {"TYPE": "disk"}
+        device_info(devices=data,lsblk=lsblk)
+        disk = device.Device("/dev/mapper/mpatha")
+        assert disk.available
+
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_readonly_device(self, fake_call, device_info):
         data = {"/dev/cdrom": {"ro": 1}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "cdrom"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/cdrom")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_smaller_than_5gb(self, fake_call, device_info):
         data = {"/dev/sda": {"size": 5368709119}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.available, 'too small device is available'
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_accept_non_readonly_device(self, fake_call, device_info):
         data = {"/dev/sda": {"ro": 0, "size": 5368709120}}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(devices=data,lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_bluestore_device(self, fake_call, monkeypatch, patch_bluestore_label, device_info):
         patch_bluestore_label.return_value = True
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.available
         assert "Has BlueStore device label" in disk.rejected_reasons
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_device_with_oserror(self, fake_call, monkeypatch, patch_bluestore_label, device_info):
         patch_bluestore_label.side_effect = OSError('test failure')
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.available
         assert "Failed to determine if device is BlueStore" in disk.rejected_reasons
 
-    @pytest.mark.usefixtures("device_info_not_ceph_disk_member",
+    @pytest.mark.usefixtures("lsblk_ceph_disk_member",
+                             "device_info_not_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_ceph_disk_member_lsblk(self, fake_call, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_existing_vg_available(self, fake_call, monkeypatch, device_info):
-        vg = api.VolumeGroup(vg_name='foo/bar', vg_free_count=1536,
+        vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=1536,
                              vg_extent_size=4194304)
-        monkeypatch.setattr(api, 'get_device_vgs', lambda x: [vg])
-        lsblk = {"TYPE": "disk"}
+        monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg])
+        lsblk = {"TYPE": "disk", "NAME": "nvme0n1"}
         data = {"/dev/nvme0n1": {"size": "6442450944"}}
-        device_info(devices=data, lsblk=lsblk)
+        lv = {"tags": {"ceph.osd_id": "1"}}
+        device_info(devices=data, lsblk=lsblk, lv=lv)
         disk = device.Device("/dev/nvme0n1")
         assert disk.available_lvm
         assert not disk.available
         assert not disk.available_raw
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_existing_vg_too_small(self, fake_call, monkeypatch, device_info):
-        vg = api.VolumeGroup(vg_name='foo/bar', vg_free_count=4,
+        vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=4,
                              vg_extent_size=1073741824)
-        monkeypatch.setattr(api, 'get_device_vgs', lambda x: [vg])
-        lsblk = {"TYPE": "disk"}
+        monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg])
+        lsblk = {"TYPE": "disk", "NAME": "nvme0n1"}
         data = {"/dev/nvme0n1": {"size": "6442450944"}}
-        device_info(devices=data, lsblk=lsblk)
+        lv = {"tags": {"ceph.osd_id": "1"}}
+        device_info(devices=data, lsblk=lsblk, lv=lv)
         disk = device.Device("/dev/nvme0n1")
         assert not disk.available_lvm
         assert not disk.available
         assert not disk.available_raw
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_multiple_existing_vgs(self, fake_call, monkeypatch, device_info):
-        vg1 = api.VolumeGroup(vg_name='foo/bar', vg_free_count=1000,
+        vg1 = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=1000,
                              vg_extent_size=4194304)
-        vg2 = api.VolumeGroup(vg_name='foo/bar', vg_free_count=536,
+        vg2 = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=536,
                              vg_extent_size=4194304)
-        monkeypatch.setattr(api, 'get_device_vgs', lambda x: [vg1, vg2])
-        lsblk = {"TYPE": "disk"}
+        monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg1, vg2])
+        lsblk = {"TYPE": "disk", "NAME": "nvme0n1"}
         data = {"/dev/nvme0n1": {"size": "6442450944"}}
-        device_info(devices=data, lsblk=lsblk)
+        lv = {"tags": {"ceph.osd_id": "1"}}
+        device_info(devices=data, lsblk=lsblk, lv=lv)
         disk = device.Device("/dev/nvme0n1")
         assert disk.available_lvm
         assert not disk.available
@@ -315,7 +408,7 @@ class TestDevice(object):
     def test_used_by_ceph(self, fake_call, device_info,
                           monkeypatch, ceph_type):
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "part", "PKNAME": "sda"}
+        lsblk = {"TYPE": "part", "NAME": "sda", "PKNAME": "sda"}
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000",
                                  lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes = []
@@ -337,12 +430,13 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.used_by_ceph
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_not_used_by_ceph(self, fake_call, device_info, monkeypatch):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes = []
         pvolumes.append(FooPVolume)
         data = {"/dev/sda": {"foo": "bar"}}
-        lsblk = {"TYPE": "part", "PKNAME": "sda"}
+        lsblk = {"TYPE": "part", "NAME": "sda", "PKNAME": "sda"}
         lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": "journal"}}
         monkeypatch.setattr(api, 'get_pvs', lambda **kwargs: pvolumes)
 
@@ -350,9 +444,10 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert not disk.used_by_ceph
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_get_device_id(self, fake_call, device_info):
         udev = {k:k for k in ['ID_VENDOR', 'ID_MODEL', 'ID_SCSI_SERIAL']}
-        lsblk = {"TYPE": "disk"}
+        lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(udevadm=udev,lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk._get_device_id() == 'ID_VENDOR_ID_MODEL_ID_SCSI_SERIAL'
@@ -362,7 +457,7 @@ class TestDevice(object):
         # low-level behavior of has_bluestore_label
         with patch.object(device.Device, "__init__", lambda self, path, with_lsm=False: None):
             disk = device.Device("/dev/sda")
-            disk.abspath = "/dev/sda"
+            disk.path = "/dev/sda"
             with patch('builtins.open', mock_open(read_data=b'bluestore block device\n')):
                 assert disk.has_bluestore_label
             with patch('builtins.open', mock_open(read_data=b'not a bluestore block device\n')):
@@ -371,109 +466,123 @@ class TestDevice(object):
 
 class TestDeviceEncryption(object):
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_not_encrypted_lsblk(self, fake_call, device_info):
-        lsblk = {'TYPE': 'part', 'FSTYPE': 'xfs', 'PKNAME': 'sda'}
+        lsblk = {'TYPE': 'part', 'FSTYPE': 'xfs', 'NAME': 'sda', 'PKNAME': 'sda'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_encrypted_lsblk(self, fake_call, device_info):
-        lsblk = {'TYPE': 'part', 'FSTYPE': 'crypto_LUKS', 'PKNAME': 'sda'}
+        lsblk = {'TYPE': 'part', 'FSTYPE': 'crypto_LUKS', 'NAME': 'sda', 'PKNAME': 'sda'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_not_encrypted_blkid(self, fake_call, device_info):
-        lsblk = {'TYPE': 'part', 'PKNAME': 'sda'}
+        lsblk = {'TYPE': 'part', 'NAME': 'sda', 'PKNAME': 'sda'}
         blkid = {'TYPE': 'ceph data'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_encrypted_blkid(self, fake_call, device_info):
-        lsblk = {'TYPE': 'part', 'PKNAME': 'sda'}
+        lsblk = {'TYPE': 'part', 'NAME': 'sda' ,'PKNAME': 'sda'}
         blkid = {'TYPE': 'crypto_LUKS'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_luks1(self, fake_call, device_info, monkeypatch):
         status = {'type': 'LUKS1'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'uuid','TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_luks2(self, fake_call, device_info, monkeypatch):
         status = {'type': 'LUKS2'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'uuid', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_plain(self, fake_call, device_info, monkeypatch):
         status = {'type': 'PLAIN'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'uuid', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_not_encrypted_plain(self, fake_call, device_info, monkeypatch):
         monkeypatch.setattr(device, 'encryption_status', lambda x: {})
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'uuid', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_blkid(self, fake_call, device_info):
-        lsblk = {'TYPE': 'lvm'}
+        lsblk = {'TYPE': 'lvm', 'NAME': 'sda'}
         blkid = {'TYPE': 'crypto_LUKS'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_blkid(self, fake_call, factory, device_info):
-        lsblk = {'TYPE': 'lvm'}
+        lsblk = {'TYPE': 'lvm', 'NAME': 'sda'}
         blkid = {'TYPE': 'xfs'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_lsblk(self, fake_call, device_info):
-        lsblk = {'FSTYPE': 'crypto_LUKS', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'crypto_LUKS', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_lsblk(self, fake_call, factory, device_info):
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_lvm_api(self, fake_call, factory, device_info):
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         disk.lv_api = factory(encrypted=True)
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_lvm_api(self, fake_call, factory, device_info):
-        lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
+        lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
@@ -491,28 +600,37 @@ class TestDeviceOrdering(object):
                 "/dev/sdd": {"removable": 1}, # invalid
         }
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_valid_before_invalid(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk"}
-        device_info(devices=self.data,lsblk=lsblk)
+        lsblk_sda = {"NAME": "sda", "TYPE": "disk"}
+        lsblk_sdb = {"NAME": "sdb", "TYPE": "disk"}
+        device_info(devices=self.data,lsblk=lsblk_sda)
         sda = device.Device("/dev/sda")
+        device_info(devices=self.data,lsblk=lsblk_sdb)
         sdb = device.Device("/dev/sdb")
 
         assert sda < sdb
         assert sdb > sda
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_valid_alphabetical_ordering(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk"}
-        device_info(devices=self.data,lsblk=lsblk)
+        lsblk_sda = {"NAME": "sda", "TYPE": "disk"}
+        lsblk_sdc = {"NAME": "sdc", "TYPE": "disk"}
+        device_info(devices=self.data,lsblk=lsblk_sda)
         sda = device.Device("/dev/sda")
+        device_info(devices=self.data,lsblk=lsblk_sdc)
         sdc = device.Device("/dev/sdc")
 
         assert sda < sdc
         assert sdc > sda
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_invalid_alphabetical_ordering(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk"}
-        device_info(devices=self.data,lsblk=lsblk)
+        lsblk_sdb = {"NAME": "sdb", "TYPE": "disk"}
+        lsblk_sdd = {"NAME": "sdd", "TYPE": "disk"}
+        device_info(devices=self.data,lsblk=lsblk_sdb)
         sdb = device.Device("/dev/sdb")
+        device_info(devices=self.data,lsblk=lsblk_sdd)
         sdd = device.Device("/dev/sdd")
 
         assert sdb < sdd
@@ -521,38 +639,45 @@ class TestDeviceOrdering(object):
 
 class TestCephDiskDevice(object):
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partlabel_lsblk(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk", "PARTLABEL": ""}
+        lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": ""}
         device_info(lsblk=lsblk)
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
         assert disk.partlabel == ''
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partlabel_blkid(self, fake_call, device_info):
+        lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "ceph data"}
         blkid = {"TYPE": "disk", "PARTLABEL": "ceph data"}
-        device_info(blkid=blkid)
+        device_info(blkid=blkid, lsblk=lsblk)
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
         assert disk.partlabel == 'ceph data'
 
-    @pytest.mark.usefixtures("blkid_ceph_disk_member",
+    @pytest.mark.usefixtures("lsblk_ceph_disk_member",
+                             "blkid_ceph_disk_member",
                              "disable_kernel_queries")
-    def test_is_member_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    def test_is_member_blkid(self, fake_call, monkeypatch):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
         assert disk.is_member is True
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_member_lsblk(self, fake_call, patch_bluestore_label, device_info):
-        lsblk = {"TYPE": "disk", "PARTLABEL": "ceph"}
+        lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "ceph"}
         device_info(lsblk=lsblk)
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
         assert disk.is_member is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_unknown_type(self, fake_call, device_info):
-        lsblk = {"TYPE": "disk", "PARTLABEL": "gluster"}
+        lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "gluster"}
         device_info(lsblk=lsblk)
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
@@ -560,7 +685,9 @@ class TestCephDiskDevice(object):
 
     ceph_types = ['data', 'wal', 'db', 'lockbox', 'journal', 'block']
 
-    @pytest.mark.usefixtures("blkid_ceph_disk_member",
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    @pytest.mark.usefixtures("lsblk_ceph_disk_member",
+                             "blkid_ceph_disk_member",
                              "disable_kernel_queries")
     def test_type_blkid(self, monkeypatch, fake_call, device_info, ceph_partlabel):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
@@ -570,6 +697,7 @@ class TestCephDiskDevice(object):
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
                              "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_type_lsblk(self, fake_call, device_info, ceph_partlabel):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
index 44f19e036fa47d87eb41dc6c35ccf72343e25444..fcd644a861b53be67147a9751e6b0d2942a1d726 100644 (file)
@@ -1,7 +1,7 @@
 import os
 import pytest
-from mock.mock import patch
 from ceph_volume.util import disk
+from mock.mock import patch
 
 
 class TestLsblkParser(object):
@@ -218,119 +218,74 @@ class TestSizeParse(object):
         assert result == disk.Size(tb=1.8)
 
 
-class TestGetBlockDevsLsblk(object):
-
-    @patch('ceph_volume.process.call')
-    def test_return_structure(self, patched_call):
-        lsblk_stdout = [
-                       '/dev/dm-0 /dev/mapper/ceph--8b2684eb--56ff--49e4--8f28--522e04cbd6ab-osd--data--9fc29fbf--3b5b--4066--be10--61042569b5a7 lvm',
-                       '/dev/vda  /dev/vda                                                                                                       disk',
-                       '/dev/vda1 /dev/vda1                                                                                                      part',
-                       '/dev/vdb  /dev/vdb                                                                                                       disk',]
-        patched_call.return_value = (lsblk_stdout, '', 0)
-        disks = disk.get_block_devs_lsblk()
-        assert len(disks) == len(lsblk_stdout)
-        assert len(disks[0]) == 3
-
-    @patch('ceph_volume.process.call')
-    def test_empty_lsblk(self, patched_call):
-        patched_call.return_value = ([], '', 0)
-        disks = disk.get_block_devs_lsblk()
-        assert len(disks) == 0
-
-    @patch('ceph_volume.process.call')
-    def test_raise_on_failure(self, patched_call):
-        patched_call.return_value = ([], 'error', 1)
-        with pytest.raises(OSError):
-            disk.get_block_devs_lsblk()
-
-
 class TestGetDevices(object):
 
-    def setup_path(self, tmpdir):
-        path = os.path.join(str(tmpdir), 'block')
-        os.makedirs(path)
-        return path
-
-    def test_no_devices_are_found(self, tmpdir, patched_get_block_devs_lsblk):
-        patched_get_block_devs_lsblk.return_value = []
+    def test_no_devices_are_found(self, tmpdir, patched_get_block_devs_sysfs):
+        patched_get_block_devs_sysfs.return_value = []
         result = disk.get_devices(_sys_block_path=str(tmpdir))
         assert result == {}
 
-    def test_sda_block_is_found(self, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_sda_block_is_found(self, patched_get_block_devs_sysfs, fake_filesystem):
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        os.makedirs(os.path.join(block_path, 'sda'))
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        result = disk.get_devices()
         assert len(result.keys()) == 1
         assert result[sda_path]['human_readable_size'] == '0.00 B'
         assert result[sda_path]['model'] == ''
         assert result[sda_path]['partitions'] == {}
 
-
-    def test_sda_size(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_sda_size(self, patched_get_block_devs_sysfs, fake_filesystem):
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        block_sda_path = os.path.join(block_path, 'sda')
-        os.makedirs(block_sda_path)
-        tmpfile('size', '1024', directory=block_sda_path)
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        fake_filesystem.create_file('/sys/block/sda/size', contents = '1024')
+        result = disk.get_devices()
         assert list(result.keys()) == [sda_path]
         assert result[sda_path]['human_readable_size'] == '512.00 KB'
 
-    def test_sda_sectorsize_fallsback(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_sda_sectorsize_fallsback(self, patched_get_block_devs_sysfs, fake_filesystem):
         # if no sectorsize, it will use queue/hw_sector_size
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        block_sda_path = os.path.join(block_path, 'sda')
-        sda_queue_path = os.path.join(block_sda_path, 'queue')
-        os.makedirs(block_sda_path)
-        os.makedirs(sda_queue_path)
-        tmpfile('hw_sector_size', contents='1024', directory=sda_queue_path)
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        fake_filesystem.create_file('/sys/block/sda/queue/hw_sector_size', contents = '1024')
+        result = disk.get_devices()
         assert list(result.keys()) == [sda_path]
         assert result[sda_path]['sectorsize'] == '1024'
 
-    def test_sda_sectorsize_from_logical_block(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_sda_sectorsize_from_logical_block(self, patched_get_block_devs_sysfs, fake_filesystem):
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        block_sda_path = os.path.join(block_path, 'sda')
-        sda_queue_path = os.path.join(block_sda_path, 'queue')
-        os.makedirs(block_sda_path)
-        os.makedirs(sda_queue_path)
-        tmpfile('logical_block_size', contents='99', directory=sda_queue_path)
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        fake_filesystem.create_file('/sys/block/sda/queue/logical_block_size', contents = '99')
+        result = disk.get_devices()
         assert result[sda_path]['sectorsize'] == '99'
 
-    def test_sda_sectorsize_does_not_fallback(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_sda_sectorsize_does_not_fallback(self, patched_get_block_devs_sysfs, fake_filesystem):
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        block_sda_path = os.path.join(block_path, 'sda')
-        sda_queue_path = os.path.join(block_sda_path, 'queue')
-        os.makedirs(block_sda_path)
-        os.makedirs(sda_queue_path)
-        tmpfile('logical_block_size', contents='99', directory=sda_queue_path)
-        tmpfile('hw_sector_size', contents='1024', directory=sda_queue_path)
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        fake_filesystem.create_file('/sys/block/sda/queue/logical_block_size', contents = '99')
+        fake_filesystem.create_file('/sys/block/sda/queue/hw_sector_size', contents = '1024')
+        result = disk.get_devices()
         assert result[sda_path]['sectorsize'] == '99'
 
-    def test_is_rotational(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_is_rotational(self, patched_get_block_devs_sysfs, fake_filesystem):
         sda_path = '/dev/sda'
-        patched_get_block_devs_lsblk.return_value = [[sda_path, sda_path, 'disk']]
-        block_path = self.setup_path(tmpdir)
-        block_sda_path = os.path.join(block_path, 'sda')
-        sda_queue_path = os.path.join(block_sda_path, 'queue')
-        os.makedirs(block_sda_path)
-        os.makedirs(sda_queue_path)
-        tmpfile('rotational', contents='1', directory=sda_queue_path)
-        result = disk.get_devices(_sys_block_path=block_path)
+        patched_get_block_devs_sysfs.return_value = [[sda_path, sda_path, 'disk']]
+        fake_filesystem.create_file('/sys/block/sda/queue/rotational', contents = '1')
+        result = disk.get_devices()
         assert result[sda_path]['rotational'] == '1'
 
+    @patch('ceph_volume.util.disk.is_locked_raw_device', lambda x: False)
+    def test_is_ceph_rbd(self, patched_get_block_devs_sysfs, fake_filesystem):
+        rbd_path = '/dev/rbd0'
+        patched_get_block_devs_sysfs.return_value = [[rbd_path, rbd_path, 'disk']]
+        result = disk.get_devices()
+        assert rbd_path not in result
+
 
 class TestSizeCalculations(object):
 
@@ -549,3 +504,21 @@ class TestSizeSpecificFormatting(object):
         result = "%s" % size.tb
         assert "%s" % size.tb == "%s" % size.terabytes
         assert result == "1027.00 TB"
+
+
+class TestAllowLoopDevsWarning(object):
+    def test_loop_dev_warning(self, fake_call, caplog):
+        assert disk.allow_loop_devices() is False
+        assert not caplog.records
+        os.environ['CEPH_VOLUME_ALLOW_LOOP_DEVICES'] = "y"
+        assert disk.allow_loop_devices() is True
+        log = caplog.records[0]
+        assert log.levelname == "WARNING"
+        assert "will never be supported in production" in log.message
+
+
+class TestHasBlueStoreLabel(object):
+    def test_device_path_is_a_path(self, fake_filesystem):
+        device_path = '/var/lib/ceph/osd/ceph-0'
+        fake_filesystem.create_dir(device_path)
+        assert not disk.has_bluestore_label(device_path)
\ No newline at end of file
index fc0991cf7b7406f6bd266728f0ac85b5f96a67c4..cd2ea8f187fc236435a73554d05da365c15209c4 100644 (file)
@@ -48,9 +48,9 @@ class TestStatus(object):
 
 class TestDmcryptClose(object):
 
-    def test_mapper_exists(self, fake_run, tmpfile):
-        file_name = tmpfile(name='mapper-device')
-        encryption.dmcrypt_close(file_name)
+    def test_mapper_exists(self, fake_run, fake_filesystem):
+        file_name = fake_filesystem.create_file('mapper-device')
+        encryption.dmcrypt_close(file_name.path)
         arguments = fake_run.calls[0]['args'][0]
         assert arguments[0] == 'cryptsetup'
         assert arguments[1] == 'remove'
index e7a124b8dd6ae340c0ffb2656b462061c1d60a97..5746f7023ce5f904b2480c6b01b7bf4b20beb92b 100644 (file)
@@ -145,27 +145,28 @@ class TestGetMounts(object):
         with open(proc_path, 'w') as f:
             f.write('')
         monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        assert system.get_mounts() == {}
+        m = system.Mounts()
+        assert m.get_mounts() == {}
 
     def test_is_mounted_(self, fake_proc):
-        result = system.get_mounts()
-        assert result['/dev/sdc2'] == ['/boot']
+        m = system.Mounts()
+        assert m.get_mounts()['/dev/sdc2'] == ['/boot']
 
     def test_ignores_two_fields(self, fake_proc):
-        result = system.get_mounts()
-        assert result.get('/dev/sde4') is None
+        m = system.Mounts()
+        assert m.get_mounts().get('/dev/sde4') is None
 
     def test_tmpfs_is_reported(self, fake_proc):
-        result = system.get_mounts()
-        assert result['tmpfs'][0] == '/dev/shm'
+        m = system.Mounts()
+        assert m.get_mounts()['tmpfs'][0] == '/dev/shm'
 
     def test_non_skip_devs_arent_reported(self, fake_proc):
-        result = system.get_mounts()
-        assert result.get('cgroup') is None
+        m = system.Mounts()
+        assert m.get_mounts().get('cgroup') is None
 
     def test_multiple_mounts_are_appended(self, fake_proc):
-        result = system.get_mounts()
-        assert len(result['tmpfs']) == 7
+        m = system.Mounts()
+        assert len(m.get_mounts()['tmpfs']) == 7
 
     def test_nonexistent_devices_are_skipped(self, tmpdir, monkeypatch):
         PROCDIR = str(tmpdir)
@@ -176,19 +177,19 @@ class TestGetMounts(object):
                     /dev/sda2 /far/lib/ceph/osd/ceph-1 xfs rw,attr2,inode64,noquota 0 0"""))
         monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
         monkeypatch.setattr(os.path, 'exists', lambda x: False if x == '/dev/sda1' else True)
-        result = system.get_mounts()
-        assert result.get('/dev/sda1') is None
+        m = system.Mounts()
+        assert m.get_mounts().get('/dev/sda1') is None
 
 
 class TestIsBinary(object):
 
-    def test_is_binary(self, tmpfile):
-        binary_path = tmpfile(contents='asd\n\nlkjh\x00')
-        assert system.is_binary(binary_path)
+    def test_is_binary(self, fake_filesystem):
+        binary_path = fake_filesystem.create_file('/tmp/fake-file', contents='asd\n\nlkjh\x00')
+        assert system.is_binary(binary_path.path)
 
-    def test_is_not_binary(self, tmpfile):
-        binary_path = tmpfile(contents='asd\n\nlkjh0')
-        assert system.is_binary(binary_path) is False
+    def test_is_not_binary(self, fake_filesystem):
+        binary_path = fake_filesystem.create_file('/tmp/fake-file', contents='asd\n\nlkjh0')
+        assert system.is_binary(binary_path.path) is False
 
 
 class TestGetFileContents(object):
@@ -197,21 +198,20 @@ class TestGetFileContents(object):
         filepath = os.path.join(str(tmpdir), 'doesnotexist')
         assert system.get_file_contents(filepath, 'default') == 'default'
 
-    def test_path_has_contents(self, tmpfile):
-        interesting_file = tmpfile(contents="1")
-        result = system.get_file_contents(interesting_file)
+    def test_path_has_contents(self, fake_filesystem):
+        interesting_file = fake_filesystem.create_file('/tmp/fake-file', contents="1")
+        result = system.get_file_contents(interesting_file.path)
         assert result == "1"
 
-    def test_path_has_multiline_contents(self, tmpfile):
-        interesting_file = tmpfile(contents="0\n1")
-        result = system.get_file_contents(interesting_file)
+    def test_path_has_multiline_contents(self, fake_filesystem):
+        interesting_file = fake_filesystem.create_file('/tmp/fake-file', contents="0\n1")
+        result = system.get_file_contents(interesting_file.path)
         assert result == "0\n1"
 
-    def test_exception_returns_default(self, tmpfile):
-        interesting_file = tmpfile(contents="0")
-        # remove read, causes IOError
-        os.chmod(interesting_file, 0o000)
-        result = system.get_file_contents(interesting_file)
+    def test_exception_returns_default(self):
+        with patch('builtins.open') as mocked_open:
+            mocked_open.side_effect = Exception()
+            result = system.get_file_contents('/tmp/fake-file')
         assert result == ''
 
 
index edd6e804fb19ea10c63f07eb0046ba754c47fca7..015cfe6ff607c497176d9e73f910a9cb19f56a7a 100644 (file)
@@ -3,18 +3,19 @@
 import logging
 import os
 from functools import total_ordering
-from ceph_volume import sys_info, process
+from ceph_volume import sys_info
 from ceph_volume.api import lvm
 from ceph_volume.util import disk, system
 from ceph_volume.util.lsmdisk import LSMDisk
 from ceph_volume.util.constants import ceph_disk_guids
+from ceph_volume.util.disk import allow_loop_devices
 
 
 logger = logging.getLogger(__name__)
 
 
 report_template = """
-{dev:<25} {size:<12} {rot!s:<7} {available!s:<9} {model}"""
+{dev:<25} {size:<12} {device_nodes:<15} {rot!s:<7} {available!s:<9} {model}"""
 
 
 def encryption_status(abspath):
@@ -33,10 +34,17 @@ class Devices(object):
     """
 
     def __init__(self, filter_for_batch=False, with_lsm=False):
+        lvs = lvm.get_lvs()
+        lsblk_all = disk.lsblk_all()
+        all_devices_vgs = lvm.get_all_devices_vgs()
         if not sys_info.devices:
             sys_info.devices = disk.get_devices()
-        self.devices = [Device(k, with_lsm) for k in
-                            sys_info.devices.keys()]
+        self.devices = [Device(k,
+                               with_lsm,
+                               lvs=lvs,
+                               lsblk_all=lsblk_all,
+                               all_devices_vgs=all_devices_vgs) for k in
+                        sys_info.devices.keys()]
         if filter_for_batch:
             self.devices = [d for d in self.devices if d.available_lvm_batch]
 
@@ -48,6 +56,8 @@ class Devices(object):
                 rot='rotates',
                 model='Model name',
                 available='available',
+                device_nodes='Device nodes',
+
             )]
         for device in sorted(self.devices):
             output.append(device.report())
@@ -89,23 +99,37 @@ class Device(object):
     # unittests
     lvs = []
 
-    def __init__(self, path, with_lsm=False):
+    def __init__(self, path, with_lsm=False, lvs=None, lsblk_all=None, all_devices_vgs=None):
         self.path = path
         # LVs can have a vg/lv path, while disks will have /dev/sda
-        self.abspath = path
+        self.symlink = None
+        # check if we are a symlink
+        if os.path.islink(self.path):
+            self.symlink = self.path
+            real_path = os.path.realpath(self.path)
+            # check if we are not a device mapper
+            if "dm-" not in real_path:
+                self.path = real_path
+        if not sys_info.devices:
+            sys_info.devices = disk.get_devices()
+        if sys_info.devices.get(self.path, {}):
+            self.device_nodes = sys_info.devices[self.path]['device_nodes']
+        self.sys_api = sys_info.devices.get(self.path, {})
+        self.partitions = self._get_partitions()
         self.lv_api = None
-        self.lvs = []
+        self.lvs = [] if not lvs else lvs
+        self.lsblk_all = lsblk_all
+        self.all_devices_vgs = all_devices_vgs
         self.vgs = []
         self.vg_name = None
         self.lv_name = None
         self.disk_api = {}
-        self.blkid_api = {}
-        self.sys_api = {}
+        self.blkid_api = None
         self._exists = None
         self._is_lvm_member = None
+        self.ceph_device = False
         self._parse()
         self.lsm_data = self.fetch_lsm(with_lsm)
-        self.ceph_device = None
 
         self.available_lvm, self.rejected_reasons_lvm = self._check_lvm_reject_reasons()
         self.available_raw, self.rejected_reasons_raw = self._check_raw_reject_reasons()
@@ -148,47 +172,65 @@ class Device(object):
     def __hash__(self):
         return hash(self.path)
 
+    def load_blkid_api(self):
+        if self.blkid_api is None:
+            self.blkid_api = disk.blkid(self.path)
+
     def _parse(self):
-        if not sys_info.devices:
-            sys_info.devices = disk.get_devices()
-        self.sys_api = sys_info.devices.get(self.abspath, {})
+        lv = None
         if not self.sys_api:
             # if no device was found check if we are a partition
-            partname = self.abspath.split('/')[-1]
+            partname = self.path.split('/')[-1]
             for device, info in sys_info.devices.items():
                 part = info['partitions'].get(partname, {})
                 if part:
                     self.sys_api = part
                     break
 
-        # if the path is not absolute, we have 'vg/lv', let's use LV name
-        # to get the LV.
-        if self.path[0] == '/':
-            lv = lvm.get_single_lv(filters={'lv_path': self.path})
+        if self.lvs:
+            for _lv in self.lvs:
+                # if the path is not absolute, we have 'vg/lv', let's use LV name
+                # to get the LV.
+                if self.path[0] == '/':
+                    if _lv.lv_path == self.path:
+                        lv = _lv
+                        break
+                else:
+                    vgname, lvname = self.path.split('/')
+                    if _lv.lv_name == lvname and _lv.vg_name == vgname:
+                        lv = _lv
+                        break
         else:
-            vgname, lvname = self.path.split('/')
-            lv = lvm.get_single_lv(filters={'lv_name': lvname,
-                                            'vg_name': vgname})
+            if self.path[0] == '/':
+                lv = lvm.get_single_lv(filters={'lv_path': self.path})
+            else:
+                vgname, lvname = self.path.split('/')
+                lv = lvm.get_single_lv(filters={'lv_name': lvname,
+                                                'vg_name': vgname})
+
         if lv:
             self.lv_api = lv
             self.lvs = [lv]
-            self.abspath = lv.lv_path
+            self.path = lv.lv_path
             self.vg_name = lv.vg_name
             self.lv_name = lv.name
             self.ceph_device = lvm.is_ceph_device(lv)
         else:
-            dev = disk.lsblk(self.path)
-            self.blkid_api = disk.blkid(self.path)
+            self.lvs = []
+            if self.lsblk_all:
+                for dev in self.lsblk_all:
+                    if dev['NAME'] == os.path.basename(self.path):
+                        break
+            else:
+                dev = disk.lsblk(self.path)
             self.disk_api = dev
             device_type = dev.get('TYPE', '')
             # always check is this is an lvm member
-            if device_type in ['part', 'disk']:
+            valid_types = ['part', 'disk']
+            if allow_loop_devices():
+                valid_types.append('loop')
+            if device_type in valid_types:
                 self._set_lvm_membership()
-            out, err, rc = process.call([
-                'ceph-bluestore-tool', 'show-label',
-                '--dev', self.path], verbose_on_failure=False)
-            if rc:
-                self.ceph_device = True
 
         self.ceph_disk = CephDiskDevice(self)
 
@@ -200,7 +242,7 @@ class Device(object):
             prefix = 'Partition'
         elif self.is_device:
             prefix = 'Raw Device'
-        return '<%s: %s>' % (prefix, self.abspath)
+        return '<%s: %s>' % (prefix, self.path)
 
     def pretty_report(self):
         def format_value(v):
@@ -232,11 +274,12 @@ class Device(object):
 
     def report(self):
         return report_template.format(
-            dev=self.abspath,
+            dev=self.path,
             size=self.size_human,
             rot=self.rotational,
             available=self.available,
             model=self.model,
+            device_nodes=self.device_nodes
         )
 
     def json_report(self):
@@ -252,7 +295,7 @@ class Device(object):
         """
         props = ['ID_VENDOR', 'ID_MODEL', 'ID_MODEL_ENC', 'ID_SERIAL_SHORT', 'ID_SERIAL',
                  'ID_SCSI_SERIAL']
-        p = disk.udevadm_property(self.abspath, props)
+        p = disk.udevadm_property(self.path, props)
         if p.get('ID_MODEL','').startswith('LVM PV '):
             p['ID_MODEL'] = p.get('ID_MODEL_ENC', '').replace('\\x20', ' ').strip()
         if 'ID_VENDOR' in p and 'ID_MODEL' in p and 'ID_SCSI_SERIAL' in p:
@@ -281,40 +324,51 @@ class Device(object):
             # VGs, should we consider it as part of LVM? We choose not to
             # here, because most likely, we need to use VGs from this PV.
             self._is_lvm_member = False
-            for path in self._get_pv_paths():
-                vgs = lvm.get_device_vgs(path)
+            device_to_check = [self.path]
+            device_to_check.extend(self.partitions)
+
+            # a pv can only be in one vg, so this should be safe
+            # FIXME: While the above assumption holds, sda1 and sda2
+            # can each host a PV and VG. I think the vg_name property is
+            # actually unused (not 100% sure) and can simply be removed
+            vgs = None
+            if not self.all_devices_vgs:
+                self.all_devices_vgs = lvm.get_all_devices_vgs()
+            for path in device_to_check:
+                for dev_vg in self.all_devices_vgs:
+                    if dev_vg.pv_name == path:
+                        vgs = [dev_vg]
                 if vgs:
                     self.vgs.extend(vgs)
-                    # a pv can only be in one vg, so this should be safe
-                    # FIXME: While the above assumption holds, sda1 and sda2
-                    # can each host a PV and VG. I think the vg_name property is
-                    # actually unused (not 100% sure) and can simply be removed
                     self.vg_name = vgs[0]
                     self._is_lvm_member = True
                     self.lvs.extend(lvm.get_device_lvs(path))
-        return self._is_lvm_member
+                if self.lvs:
+                    self.ceph_device = any([True if lv.tags.get('ceph.osd_id') else False for lv in self.lvs])
 
-    def _get_pv_paths(self):
+    def _get_partitions(self):
         """
         For block devices LVM can reside on the raw block device or on a
         partition. Return a list of paths to be checked for a pv.
         """
-        paths = [self.abspath]
-        path_dir = os.path.dirname(self.abspath)
-        for part in self.sys_api.get('partitions', {}).keys():
-            paths.append(os.path.join(path_dir, part))
-        return paths
+        partitions = []
+        path_dir = os.path.dirname(self.path)
+        for partition in self.sys_api.get('partitions', {}).keys():
+            partitions.append(os.path.join(path_dir, partition))
+        return partitions
 
     @property
     def exists(self):
-        return os.path.exists(self.abspath)
+        return os.path.exists(self.path)
 
     @property
     def has_fs(self):
+        self.load_blkid_api()
         return 'TYPE' in self.blkid_api
 
     @property
     def has_gpt_headers(self):
+        self.load_blkid_api()
         return self.blkid_api.get("PTTYPE") == "gpt"
 
     @property
@@ -362,18 +416,27 @@ class Device(object):
 
     @property
     def is_ceph_disk_member(self):
-        is_member = self.ceph_disk.is_member
+        def is_member(device):
+            return 'ceph' in device.get('PARTLABEL', '') or \
+                device.get('PARTTYPE', '') in ceph_disk_guids.keys()
+        # If we come from Devices(), self.lsblk_all is set already.
+        # Otherwise, we have to grab the data.
+        details = self.lsblk_all or disk.lsblk_all()
+        _is_member = False
         if self.sys_api.get("partitions"):
             for part in self.sys_api.get("partitions").keys():
-                part = Device("/dev/%s" % part)
-                if part.is_ceph_disk_member:
-                    is_member = True
-                    break
-        return is_member
+                for dev in details:
+                    if part.startswith(dev['NAME']):
+                        if is_member(dev):
+                            _is_member = True
+                return _is_member
+        else:
+            return is_member(self.disk_api)
+        raise RuntimeError(f"Couln't check if device {self.path} is a ceph-disk member.")
 
     @property
     def has_bluestore_label(self):
-        return disk.has_bluestore_label(self.abspath)
+        return disk.has_bluestore_label(self.path)
 
     @property
     def is_mapper(self):
@@ -381,7 +444,10 @@ class Device(object):
 
     @property
     def device_type(self):
-        if self.disk_api:
+        self.load_blkid_api()
+        if 'type' in self.sys_api:
+            return self.sys_api['type']
+        elif self.disk_api:
             return self.disk_api['TYPE']
         elif self.blkid_api:
             return self.blkid_api['TYPE']
@@ -396,6 +462,7 @@ class Device(object):
 
     @property
     def is_partition(self):
+        self.load_blkid_api()
         if self.disk_api:
             return self.disk_api['TYPE'] == 'part'
         elif self.blkid_api:
@@ -404,13 +471,17 @@ class Device(object):
 
     @property
     def is_device(self):
+        self.load_blkid_api()
         api = None
         if self.disk_api:
             api = self.disk_api
         elif self.blkid_api:
             api = self.blkid_api
         if api:
-            return self.device_type in ['disk', 'device', 'mpath']
+            valid_types = ['disk', 'device', 'mpath']
+            if allow_loop_devices():
+                valid_types.append('loop')
+            return self.device_type in valid_types
         return False
 
     @property
@@ -423,6 +494,7 @@ class Device(object):
         Only correct for LVs, device mappers, and partitions. Will report a ``None``
         for raw devices.
         """
+        self.load_blkid_api()
         crypt_reports = [self.blkid_api.get('TYPE', ''), self.disk_api.get('FSTYPE', '')]
         if self.is_lv:
             # if disk APIs are reporting this is encrypted use that:
@@ -435,7 +507,7 @@ class Device(object):
         elif self.is_partition:
             return 'crypto_LUKS' in crypt_reports
         elif self.is_mapper:
-            active_mapper = encryption_status(self.abspath)
+            active_mapper = encryption_status(self.path)
             if active_mapper:
                 # normalize a bit to ensure same values regardless of source
                 encryption_type = active_mapper['type'].lower().strip('12')  # turn LUKS1 or LUKS2 into luks
@@ -520,7 +592,7 @@ class Device(object):
         except OSError as e:
             # likely failed to open the device. assuming it is BlueStore is the safest option
             # so that a possibly-already-existing OSD doesn't get overwritten
-            logger.error('failed to determine if device {} is BlueStore. device should not be used to avoid false negatives. err: {}'.format(self.abspath, e))
+            logger.error('failed to determine if device {} is BlueStore. device should not be used to avoid false negatives. err: {}'.format(self.path, e))
             rejected.append('Failed to determine if device is BlueStore')
 
         if self.is_partition:
@@ -530,7 +602,7 @@ class Device(object):
             except OSError as e:
                 # likely failed to open the device. assuming the parent is BlueStore is the safest
                 # option so that a possibly-already-existing OSD doesn't get overwritten
-                logger.error('failed to determine if partition {} (parent: {}) has a BlueStore parent. partition should not be used to avoid false negatives. err: {}'.format(self.abspath, self.parent_device, e))
+                logger.error('failed to determine if partition {} (parent: {}) has a BlueStore parent. partition should not be used to avoid false negatives. err: {}'.format(self.path, self.parent_device, e))
                 rejected.append('Failed to determine if parent device is BlueStore')
 
         if self.has_gpt_headers:
index 88db0513817a95b6881939c426b3e1fe010fccbd..d2459e1208674d6b49e63348b29138f4350d315e 100644 (file)
@@ -134,10 +134,10 @@ def remove_partition(device):
 
     :param device: A ``Device()`` object
     """
-    udev_info = udevadm_property(device.abspath)
+    udev_info = udevadm_property(device.path)
     partition_number = udev_info.get('ID_PART_ENTRY_NUMBER')
     if not partition_number:
-        raise RuntimeError('Unable to detect the partition number for device: %s' % device.abspath)
+        raise RuntimeError('Unable to detect the partition number for device: %s' % device.path)
 
     process.run(
         ['parted', device.parent_device, '--script', '--', 'rm', partition_number]
@@ -229,6 +229,11 @@ def _udevadm_info(device):
 
 
 def lsblk(device, columns=None, abspath=False):
+    return lsblk_all(device=device,
+                     columns=columns,
+                     abspath=abspath)
+
+def lsblk_all(device='', columns=None, abspath=False):
     """
     Create a dictionary of identifying values for a device using ``lsblk``.
     Each supported column is a key, in its *raw* format (all uppercase
@@ -241,6 +246,7 @@ def lsblk(device, columns=None, abspath=False):
 
          NAME  device name
         KNAME  internal kernel device name
+        PKNAME internal kernel parent device name
       MAJ:MIN  major:minor device number
        FSTYPE  filesystem type
    MOUNTPOINT  where the device is mounted
@@ -284,38 +290,46 @@ def lsblk(device, columns=None, abspath=False):
 
     Normal CLI output, as filtered by the flags in this function will look like ::
 
-        $ lsblk --nodeps -P -o NAME,KNAME,MAJ:MIN,FSTYPE,MOUNTPOINT
+        $ lsblk -P -o NAME,KNAME,PKNAME,MAJ:MIN,FSTYPE,MOUNTPOINT
         NAME="sda1" KNAME="sda1" MAJ:MIN="8:1" FSTYPE="ext4" MOUNTPOINT="/"
 
     :param columns: A list of columns to report as keys in its original form.
     :param abspath: Set the flag for absolute paths on the report
     """
     default_columns = [
-        'NAME', 'KNAME', 'MAJ:MIN', 'FSTYPE', 'MOUNTPOINT', 'LABEL', 'UUID',
-        'RO', 'RM', 'MODEL', 'SIZE', 'STATE', 'OWNER', 'GROUP', 'MODE',
+        'NAME', 'KNAME', 'PKNAME', 'MAJ:MIN', 'FSTYPE', 'MOUNTPOINT', 'LABEL',
+        'UUID', 'RO', 'RM', 'MODEL', 'SIZE', 'STATE', 'OWNER', 'GROUP', 'MODE',
         'ALIGNMENT', 'PHY-SEC', 'LOG-SEC', 'ROTA', 'SCHED', 'TYPE', 'DISC-ALN',
         'DISC-GRAN', 'DISC-MAX', 'DISC-ZERO', 'PKNAME', 'PARTLABEL'
     ]
-    device = device.rstrip('/')
     columns = columns or default_columns
-    # --nodeps -> Avoid adding children/parents to the device, only give information
-    #             on the actual device we are querying for
     # -P       -> Produce pairs of COLUMN="value"
     # -p       -> Return full paths to devices, not just the names, when ``abspath`` is set
     # -o       -> Use the columns specified or default ones provided by this function
-    base_command = ['lsblk', '--nodeps', '-P']
+    base_command = ['lsblk', '-P']
     if abspath:
         base_command.append('-p')
     base_command.append('-o')
     base_command.append(','.join(columns))
-    base_command.append(device)
+
     out, err, rc = process.call(base_command)
 
     if rc != 0:
-        return {}
+        raise RuntimeError(f"Error: {err}")
+
+    result = []
+
+    for line in out:
+        result.append(_lsblk_parser(line))
+
+    if not device:
+        return result
 
-    return _lsblk_parser(' '.join(out))
+    for dev in result:
+        if dev['NAME'] == os.path.basename(device):
+            return dev
 
+    return {}
 
 def is_device(dev):
     """
@@ -326,16 +340,14 @@ def is_device(dev):
     """
     if not os.path.exists(dev):
         return False
-    # use lsblk first, fall back to using stat
-    TYPE = lsblk(dev).get('TYPE')
-    if TYPE:
-        return TYPE in ['disk', 'mpath']
+    if not dev.startswith('/dev/'):
+        return False
+    if dev[len('/dev/'):].startswith('loop'):
+        if not allow_loop_devices():
+            return False
 
     # fallback to stat
     return _stat_is_device(os.lstat(dev).st_mode)
-    if stat.S_ISBLK(os.lstat(dev)):
-        return True
-    return False
 
 
 def is_partition(dev):
@@ -361,6 +373,13 @@ def is_partition(dev):
     return False
 
 
+def is_ceph_rbd(dev):
+    """
+    Boolean to determine if a given device is a ceph RBD device, like /dev/rbd0
+    """
+    return dev.startswith(('/dev/rbd'))
+
+
 class BaseFloatUnit(float):
     """
     Base class to support float representations of size values. Suffix is
@@ -724,24 +743,78 @@ def is_locked_raw_device(disk_path):
     return 0
 
 
-def get_block_devs_lsblk():
-    '''
-    This returns a list of lists with 3 items per inner list.
-    KNAME - reflects the kernel device name , for example /dev/sda or /dev/dm-0
-    NAME - the device name, for example /dev/sda or
-           /dev/mapper/<vg_name>-<lv_name>
-    TYPE - the block device type: disk, partition, lvm and such
+class AllowLoopDevices(object):
+    allow = False
+    warned = False
 
-    '''
-    cmd = ['lsblk', '-plno', 'KNAME,NAME,TYPE']
-    stdout, stderr, rc = process.call(cmd)
-    # lsblk returns 1 on failure
-    if rc == 1:
-        raise OSError('lsblk returned failure, stderr: {}'.format(stderr))
-    return [re.split(r'\s+', line) for line in stdout]
+    @classmethod
+    def __call__(cls):
+        val = os.environ.get("CEPH_VOLUME_ALLOW_LOOP_DEVICES", "false").lower()
+        if val not in ("false", 'no', '0'):
+            cls.allow = True
+            if not cls.warned:
+                logger.warning(
+                    "CEPH_VOLUME_ALLOW_LOOP_DEVICES is set in your "
+                    "environment, so we will allow the use of unattached loop"
+                    " devices as disks. This feature is intended for "
+                    "development purposes only and will never be supported in"
+                    " production. Issues filed based on this behavior will "
+                    "likely be ignored."
+                )
+                cls.warned = True
+        return cls.allow
+
+
+allow_loop_devices = AllowLoopDevices()
+
+
+def get_block_devs_sysfs(_sys_block_path='/sys/block', _sys_dev_block_path='/sys/dev/block'):
+    def holder_inner_loop():
+        for holder in holders:
+            # /sys/block/sdy/holders/dm-8/dm/uuid
+            holder_dm_type = get_file_contents(os.path.join(_sys_block_path, dev, f'holders/{holder}/dm/uuid')).split('-')[0].lower()
+            if holder_dm_type == 'mpath':
+                return True
+
+    # First, get devices that are _not_ partitions
+    result = list()
+    dev_names = os.listdir(_sys_block_path)
+    for dev in dev_names:
+        name = kname = os.path.join("/dev", dev)
+        if not os.path.exists(name):
+            continue
+        type_ = 'disk'
+        holders = os.listdir(os.path.join(_sys_block_path, dev, 'holders'))
+        if get_file_contents(os.path.join(_sys_block_path, dev, 'removable')) == "1":
+            continue
+        if holder_inner_loop():
+            continue
+        dm_dir_path = os.path.join(_sys_block_path, dev, 'dm')
+        if os.path.isdir(dm_dir_path):
+            dm_type = get_file_contents(os.path.join(dm_dir_path, 'uuid'))
+            type_ = dm_type.split('-')[0].lower()
+            basename = get_file_contents(os.path.join(dm_dir_path, 'name'))
+            name = os.path.join("/dev/mapper", basename)
+        if dev.startswith('loop'):
+            if not allow_loop_devices():
+                continue
+            # Skip loop devices that are not attached
+            if not os.path.exists(os.path.join(_sys_block_path, dev, 'loop')):
+                continue
+            type_ = 'loop'
+        result.append([kname, name, type_])
+    # Next, look for devices that _are_ partitions
+    for item in os.listdir(_sys_dev_block_path):
+        is_part = get_file_contents(os.path.join(_sys_dev_block_path, item, 'partition')) == "1"
+        dev = os.path.basename(os.readlink(os.path.join(_sys_dev_block_path, item)))
+        if not is_part:
+            continue
+        name = kname = os.path.join("/dev", dev)
+        result.append([name, kname, "part"])
+    return sorted(result, key=lambda x: x[0])
 
 
-def get_devices(_sys_block_path='/sys/block'):
+def get_devices(_sys_block_path='/sys/block', device=''):
     """
     Captures all available block devices as reported by lsblk.
     Additional interesting metadata like sectors, size, vendor,
@@ -754,16 +827,24 @@ def get_devices(_sys_block_path='/sys/block'):
 
     device_facts = {}
 
-    block_devs = get_block_devs_lsblk()
+    block_devs = get_block_devs_sysfs(_sys_block_path)
+
+    block_types = ['disk', 'mpath']
+    if allow_loop_devices():
+        block_types.append('loop')
 
     for block in block_devs:
         devname = os.path.basename(block[0])
         diskname = block[1]
-        if block[2] not in ['disk', 'mpath']:
+        if block[2] not in block_types:
             continue
         sysdir = os.path.join(_sys_block_path, devname)
         metadata = {}
 
+        # If the device is ceph rbd it gets excluded
+        if is_ceph_rbd(diskname):
+            continue
+
         # If the mapper device is a logical volume it gets excluded
         if is_mapper_device(diskname):
             if lvm.get_device_lvs(diskname):
@@ -785,6 +866,12 @@ def get_devices(_sys_block_path='/sys/block'):
         for key, file_ in facts:
             metadata[key] = get_file_contents(os.path.join(sysdir, file_))
 
+        device_slaves = os.listdir(os.path.join(sysdir, 'slaves'))
+        if device_slaves:
+            metadata['device_nodes'] = ','.join(device_slaves)
+        else:
+            metadata['device_nodes'] = devname
+
         metadata['scheduler_mode'] = ""
         scheduler = get_file_contents(sysdir + "/queue/scheduler")
         if scheduler is not None:
@@ -805,6 +892,7 @@ def get_devices(_sys_block_path='/sys/block'):
         metadata['human_readable_size'] = human_readable_size(metadata['size'])
         metadata['path'] = diskname
         metadata['locked'] = is_locked_raw_device(metadata['path'])
+        metadata['type'] = block[2]
 
         device_facts[diskname] = metadata
     return device_facts
@@ -815,10 +903,13 @@ def has_bluestore_label(device_path):
 
     # throws OSError on failure
     logger.info("opening device {} to check for BlueStore label".format(device_path))
-    with open(device_path, "rb") as fd:
-        # read first 22 bytes looking for bluestore disk signature
-        signature = fd.read(22)
-        if signature.decode('ascii', 'replace') == bluestoreDiskSignature:
-            isBluestore = True
+    try:
+        with open(device_path, "rb") as fd:
+            # read first 22 bytes looking for bluestore disk signature
+            signature = fd.read(22)
+            if signature.decode('ascii', 'replace') == bluestoreDiskSignature:
+                isBluestore = True
+    except IsADirectoryError:
+        logger.info(f'{device_path} is a directory, skipping.')
 
     return isBluestore
index 2a2c03337b61f0db47d34c6349435f11f6c16f0b..cefd6094bd09eb7d4fcaafbc8e74f4819e4621ac 100644 (file)
@@ -1,13 +1,14 @@
 import base64
 import os
 import logging
-from ceph_volume import process, conf
+from ceph_volume import process, conf, terminal
 from ceph_volume.util import constants, system
 from ceph_volume.util.device import Device
 from .prepare import write_keyring
 from .disk import lsblk, device_family, get_part_entry_type
 
 logger = logging.getLogger(__name__)
+mlogger = terminal.MultiLogger(__name__)
 
 def get_key_size_from_conf():
     """
@@ -18,7 +19,7 @@ def get_key_size_from_conf():
     key_size = conf.ceph.get_safe(
         'osd',
         'osd_dmcrypt_key_size',
-        default='512')
+        default='512', check_valid=False)
 
     if key_size not in ['256', '512']:
         logger.warning(("Invalid value set for osd_dmcrypt_key_size ({}). "
@@ -135,6 +136,7 @@ def get_dmcrypt_key(osd_id, osd_fsid, lockbox_keyring=None):
     name = 'client.osd-lockbox.%s' % osd_fsid
     config_key = 'dm-crypt/osd/%s/luks' % osd_fsid
 
+    mlogger.info(f'Running ceph config-key get {config_key}')
     stdout, stderr, returncode = process.call(
         [
             'ceph',
@@ -145,7 +147,8 @@ def get_dmcrypt_key(osd_id, osd_fsid, lockbox_keyring=None):
             'get',
             config_key
         ],
-        show_command=True
+        show_command=True,
+        logfile_verbose=False
     )
     if returncode != 0:
         raise RuntimeError('Unable to retrieve dmcrypt secret')
@@ -232,7 +235,7 @@ def legacy_encrypted(device):
     This function assumes that ``device`` will be a partition.
     """
     if os.path.isdir(device):
-        mounts = system.get_mounts(paths=True)
+        mounts = system.Mounts(paths=True).get_mounts()
         # yes, rebind the device variable here because a directory isn't going
         # to help with parsing
         device = mounts.get(device, [None])[0]
@@ -270,6 +273,6 @@ def legacy_encrypted(device):
     devices = [Device(i['NAME']) for i in device_family(parent_device)]
     for d in devices:
         if d.ceph_disk.type == 'lockbox':
-            metadata['lockbox'] = d.abspath
+            metadata['lockbox'] = d.path
             break
     return metadata
index df6d8c70401ca13cd421c2f2439af1f8f4f79455..ff7427eedd207bd7782655bc7be147ea71184012 100644 (file)
@@ -19,7 +19,8 @@ mlogger = terminal.MultiLogger(__name__)
 def create_key():
     stdout, stderr, returncode = process.call(
         ['ceph-authtool', '--gen-print-key'],
-        show_command=True)
+        show_command=True,
+        logfile_verbose=False)
     if returncode != 0:
         raise RuntimeError('Unable to generate a new auth key')
     return ' '.join(stdout).strip()
@@ -40,13 +41,15 @@ def write_keyring(osd_id, secret, keyring_name='keyring', name=None):
     """
     osd_keyring = '/var/lib/ceph/osd/%s-%s/%s' % (conf.cluster, osd_id, keyring_name)
     name = name or 'osd.%s' % str(osd_id)
-    process.run(
+    mlogger.info(f'Creating keyring file for {name}')
+    process.call(
         [
             'ceph-authtool', osd_keyring,
             '--create-keyring',
             '--name', name,
             '--add-key', secret
-        ])
+        ],
+        logfile_verbose=False)
     system.chown(osd_keyring)
 
 
index ed1fb8ed2a26d046087f464f12f4d0eeb7092efb..590a0599b56b58aef5ac42b65f1f1b5481ba120f 100644 (file)
@@ -6,6 +6,7 @@ import platform
 import tempfile
 import uuid
 import subprocess
+import threading
 from ceph_volume import process, terminal
 from . import as_string
 
@@ -236,7 +237,8 @@ def path_is_mounted(path, destination=None):
     """
     Check if the given path is mounted
     """
-    mounts = get_mounts(paths=True)
+    m = Mounts(paths=True)
+    mounts = m.get_mounts()
     realpath = os.path.realpath(path)
     mounted_locations = mounts.get(realpath, [])
 
@@ -250,16 +252,17 @@ def device_is_mounted(dev, destination=None):
     Check if the given device is mounted, optionally validating that a
     destination exists
     """
-    plain_mounts = get_mounts(devices=True)
-    realpath_mounts = get_mounts(devices=True, realpath=True)
+    plain_mounts = Mounts(devices=True)
+    realpath_mounts = Mounts(devices=True, realpath=True)
+
     realpath_dev = os.path.realpath(dev) if dev.startswith('/') else dev
     destination = os.path.realpath(destination) if destination else None
     # plain mounts
-    plain_dev_mounts = plain_mounts.get(dev, [])
-    realpath_dev_mounts = plain_mounts.get(realpath_dev, [])
+    plain_dev_mounts = plain_mounts.get_mounts().get(dev, [])
+    realpath_dev_mounts = plain_mounts.get_mounts().get(realpath_dev, [])
     # realpath mounts
-    plain_dev_real_mounts = realpath_mounts.get(dev, [])
-    realpath_dev_real_mounts = realpath_mounts.get(realpath_dev, [])
+    plain_dev_real_mounts = realpath_mounts.get_mounts().get(dev, [])
+    realpath_dev_real_mounts = realpath_mounts.get_mounts().get(realpath_dev, [])
 
     mount_locations = [
         plain_dev_mounts,
@@ -282,61 +285,97 @@ def device_is_mounted(dev, destination=None):
     logger.info('%s was not found as mounted', dev)
     return False
 
-
-def get_mounts(devices=False, paths=False, realpath=False):
-    """
-    Create a mapping of all available system mounts so that other helpers can
-    detect nicely what path or device is mounted
-
-    It ignores (most of) non existing devices, but since some setups might need
-    some extra device information, it will make an exception for:
-
-    - tmpfs
-    - devtmpfs
-    - /dev/root
-
-    If ``devices`` is set to ``True`` the mapping will be a device-to-path(s),
-    if ``paths`` is set to ``True`` then the mapping will be
-    a path-to-device(s)
-
-    :param realpath: Resolve devices to use their realpaths. This is useful for
-    paths like LVM where more than one path can point to the same device
-    """
-    devices_mounted = {}
-    paths_mounted = {}
-    do_not_skip = ['tmpfs', 'devtmpfs', '/dev/root']
-    default_to_devices = devices is False and paths is False
-
-    with open(PROCDIR + '/mounts', 'rb') as mounts:
-        proc_mounts = mounts.readlines()
-
-    for line in proc_mounts:
-        fields = [as_string(f) for f in line.split()]
-        if len(fields) < 3:
-            continue
-        if realpath:
-            device = os.path.realpath(fields[0]) if fields[0].startswith('/') else fields[0]
-        else:
-            device = fields[0]
-        path = os.path.realpath(fields[1])
-        # only care about actual existing devices
-        if not os.path.exists(device) or not device.startswith('/'):
-            if device not in do_not_skip:
+class Mounts(object):
+    excluded_paths = []
+
+    def __init__(self, devices=False, paths=False, realpath=False):
+        self.devices = devices
+        self.paths = paths
+        self.realpath = realpath
+
+    def safe_realpath(self, path, timeout=0.2):
+        def _realpath(path, result):
+            p = os.path.realpath(path)
+            result.append(p)
+
+        result = []
+        t = threading.Thread(target=_realpath, args=(path, result))
+        t.setDaemon(True)
+        t.start()
+        t.join(timeout)
+        if t.is_alive():
+            return None
+        return result[0]
+
+    def get_mounts(self):
+        """
+        Create a mapping of all available system mounts so that other helpers can
+        detect nicely what path or device is mounted
+
+        It ignores (most of) non existing devices, but since some setups might need
+        some extra device information, it will make an exception for:
+
+        - tmpfs
+        - devtmpfs
+        - /dev/root
+
+        If ``devices`` is set to ``True`` the mapping will be a device-to-path(s),
+        if ``paths`` is set to ``True`` then the mapping will be
+        a path-to-device(s)
+
+        :param realpath: Resolve devices to use their realpaths. This is useful for
+        paths like LVM where more than one path can point to the same device
+        """
+        devices_mounted = {}
+        paths_mounted = {}
+        do_not_skip = ['tmpfs', 'devtmpfs', '/dev/root']
+        default_to_devices = self.devices is False and self.paths is False
+
+
+        with open(PROCDIR + '/mounts', 'rb') as mounts:
+            proc_mounts = mounts.readlines()
+
+        for line in proc_mounts:
+            fields = [as_string(f) for f in line.split()]
+            if len(fields) < 3:
                 continue
-        if device in devices_mounted.keys():
-            devices_mounted[device].append(path)
-        else:
-            devices_mounted[device] = [path]
-        if path in paths_mounted.keys():
-            paths_mounted[path].append(device)
-        else:
-            paths_mounted[path] = [device]
+            if fields[0] in Mounts.excluded_paths or \
+                fields[1] in Mounts.excluded_paths:
+                continue
+            if self.realpath:
+                if fields[0].startswith('/'):
+                    device = self.safe_realpath(fields[0])
+                    if device is None:
+                        logger.warning(f"Can't get realpath on {fields[0]}, skipping.")
+                        Mounts.excluded_paths.append(fields[0])
+                        continue
+                else:
+                    device = fields[0]
+            else:
+                device = fields[0]
+            path = self.safe_realpath(fields[1])
+            if path is None:
+                logger.warning(f"Can't get realpath on {fields[1]}, skipping.")
+                Mounts.excluded_paths.append(fields[1])
+                continue
+            # only care about actual existing devices
+            if not os.path.exists(device) or not device.startswith('/'):
+                if device not in do_not_skip:
+                    continue
+            if device in devices_mounted.keys():
+                devices_mounted[device].append(path)
+            else:
+                devices_mounted[device] = [path]
+            if path in paths_mounted.keys():
+                paths_mounted[path].append(device)
+            else:
+                paths_mounted[path] = [device]
 
-    # Default to returning information for devices if
-    if devices is True or default_to_devices:
-        return devices_mounted
-    else:
-        return paths_mounted
+        # Default to returning information for devices if
+        if self.devices is True or default_to_devices:
+            return devices_mounted
+        else:
+            return paths_mounted
 
 
 def set_context(path, recursive=False):
index c58951a9b00c384bf4010e1512850bb38bedb2f8..820cf6fb3475f624919b0cdcbf4f9f7916804113 100644 (file)
@@ -7,6 +7,7 @@ deps=
   pytest
   pytest-xdist
   mock
+  pyfakefs
 install_command=./tox_install_command.sh {opts} {packages}
 commands=py.test --numprocesses=auto -vv {posargs:ceph_volume/tests} --ignore=ceph_volume/tests/functional
 
index 79343a4c2412f421e232abab6b52d6ed2f359080..c13c95533a2f38952af8db2de5fc8cc6808283fb 100755 (executable)
@@ -1,3 +1,3 @@
-#!/bin/bash
+#!/usr/bin/env bash
 python -m pip install --editable="file://`pwd`/../python-common"
 python -m pip install $@
index 2353e7b1e74b28607f8b4f75e2bb8af48d81a77d..ed5a48d87968689a43d65c90a13bcb67932e1d69 100755 (executable)
@@ -53,8 +53,8 @@ DEFAULT_PROMTAIL_IMAGE = 'docker.io/grafana/promtail:2.4.0'
 DEFAULT_NODE_EXPORTER_IMAGE = 'quay.io/prometheus/node-exporter:v1.3.1'
 DEFAULT_ALERT_MANAGER_IMAGE = 'quay.io/prometheus/alertmanager:v0.23.0'
 DEFAULT_GRAFANA_IMAGE = 'quay.io/ceph/ceph-grafana:8.3.5'
-DEFAULT_HAPROXY_IMAGE = 'docker.io/library/haproxy:2.3'
-DEFAULT_KEEPALIVED_IMAGE = 'docker.io/arcts/keepalived'
+DEFAULT_HAPROXY_IMAGE = 'quay.io/ceph/haproxy:2.3'
+DEFAULT_KEEPALIVED_IMAGE = 'quay.io/ceph/keepalived:2.1.5'
 DEFAULT_SNMP_GATEWAY_IMAGE = 'docker.io/maxwo/snmp-notifier:v1.2.1'
 DEFAULT_REGISTRY = 'docker.io'   # normalize unqualified digests to this
 # ------------------------------------------------------------------------------
@@ -82,6 +82,7 @@ CUSTOM_PS1 = r'[ceph: \u@\h \W]\$ '
 DEFAULT_TIMEOUT = None  # in seconds
 DEFAULT_RETRY = 15
 DATEFMT = '%Y-%m-%dT%H:%M:%S.%fZ'
+QUIET_LOG_LEVEL = 9  # DEBUG is 10, so using 9 to be lower level than DEBUG
 
 logger: logging.Logger = None  # type: ignore
 
@@ -107,9 +108,26 @@ You can invoke cephadm in two ways:
 """
 cached_stdin = None
 
+
 ##################################
 
 
+async def run_func(func: Callable, cmd: str) -> subprocess.CompletedProcess:
+    logger.debug(f'running function {func.__name__}, with parms: {cmd}')
+    response = func(cmd)
+    return response
+
+
+async def concurrent_tasks(func: Callable, cmd_list: List[str]) -> List[Any]:
+    tasks = []
+    for cmd in cmd_list:
+        tasks.append(run_func(func, cmd))
+
+    data = await asyncio.gather(*tasks)
+
+    return data
+
+
 class EndPoint:
     """EndPoint representing an ip:port format"""
 
@@ -234,7 +252,7 @@ class Podman(ContainerEngine):
         return self._version
 
     def get_version(self, ctx: CephadmContext) -> None:
-        out, _, _ = call_throws(ctx, [self.path, 'version', '--format', '{{.Client.Version}}'])
+        out, _, _ = call_throws(ctx, [self.path, 'version', '--format', '{{.Client.Version}}'], verbosity=CallVerbosity.QUIET)
         self._version = _parse_podman_version(out)
 
     def __str__(self) -> str:
@@ -615,14 +633,14 @@ class Monitoring(object):
                 _, err, code = call(ctx, [
                     ctx.container_engine.path, 'exec', container_id, cmd,
                     '--version'
-                ], verbosity=CallVerbosity.DEBUG)
+                ], verbosity=CallVerbosity.QUIET)
                 if code == 0:
                     break
             cmd = 'alertmanager'  # reset cmd for version extraction
         else:
             _, err, code = call(ctx, [
                 ctx.container_engine.path, 'exec', container_id, cmd, '--version'
-            ], verbosity=CallVerbosity.DEBUG)
+            ], verbosity=CallVerbosity.QUIET)
         if code == 0 and \
                 err.startswith('%s, version ' % cmd):
             version = err.split(' ')[2]
@@ -713,7 +731,7 @@ class NFSGanesha(object):
         out, err, code = call(ctx,
                               [ctx.container_engine.path, 'exec', container_id,
                                NFSGanesha.entrypoint, '-v'],
-                              verbosity=CallVerbosity.DEBUG)
+                              verbosity=CallVerbosity.QUIET)
         if code == 0:
             match = re.search(r'NFS-Ganesha Release\s*=\s*[V]*([\d.]+)', out)
             if match:
@@ -845,7 +863,7 @@ class CephIscsi(object):
         out, err, code = call(ctx,
                               [ctx.container_engine.path, 'exec', container_id,
                                '/usr/bin/python3', '-c', "import pkg_resources; print(pkg_resources.require('ceph_iscsi')[0].version)"],
-                              verbosity=CallVerbosity.DEBUG)
+                              verbosity=CallVerbosity.QUIET)
         if code == 0:
             version = out.strip()
         return version
@@ -1442,20 +1460,21 @@ class FileLock(object):
         try:
             while True:
                 if not self.is_locked:
-                    logger.debug('Acquiring lock %s on %s', lock_id,
-                                 lock_filename)
+                    logger.log(QUIET_LOG_LEVEL, 'Acquiring lock %s on %s', lock_id,
+                               lock_filename)
                     self._acquire()
 
                 if self.is_locked:
-                    logger.debug('Lock %s acquired on %s', lock_id,
-                                 lock_filename)
+                    logger.log(QUIET_LOG_LEVEL, 'Lock %s acquired on %s', lock_id,
+                               lock_filename)
                     break
                 elif timeout >= 0 and time.time() - start_time > timeout:
                     logger.warning('Timeout acquiring lock %s on %s', lock_id,
                                    lock_filename)
                     raise Timeout(self._lock_file)
                 else:
-                    logger.debug(
+                    logger.log(
+                        QUIET_LOG_LEVEL,
                         'Lock %s not acquired on %s, waiting %s seconds ...',
                         lock_id, lock_filename, poll_intervall
                     )
@@ -1534,14 +1553,47 @@ class FileLock(object):
 # Popen wrappers, lifted from ceph-volume
 
 class CallVerbosity(Enum):
+    #####
+    # Format:
+    # Normal Operation: <log-level-when-no-errors>, Errors: <log-level-when-error>
+    #
+    # NOTE: QUIET log level is custom level only used when --verbose is passed
+    #####
+
+    # Normal Operation: None, Errors: None
     SILENT = 0
-    # log stdout/stderr to logger.debug
-    DEBUG = 1
-    # On a non-zero exit status, it will forcefully set
-    # logging ON for the terminal
-    VERBOSE_ON_FAILURE = 2
-    # log at info (instead of debug) level.
-    VERBOSE = 3
+    # Normal Operation: QUIET, Error: QUIET
+    QUIET = 1
+    # Normal Operation: DEBUG, Error: DEBUG
+    DEBUG = 2
+    # Normal Operation: QUIET, Error: INFO
+    QUIET_UNLESS_ERROR = 3
+    # Normal Operation: DEBUG, Error: INFO
+    VERBOSE_ON_FAILURE = 4
+    # Normal Operation: INFO, Error: INFO
+    VERBOSE = 5
+
+    def success_log_level(self) -> int:
+        _verbosity_level_to_log_level = {
+            self.SILENT: 0,
+            self.QUIET: QUIET_LOG_LEVEL,
+            self.DEBUG: logging.DEBUG,
+            self.QUIET_UNLESS_ERROR: QUIET_LOG_LEVEL,
+            self.VERBOSE_ON_FAILURE: logging.DEBUG,
+            self.VERBOSE: logging.INFO
+        }
+        return _verbosity_level_to_log_level[self]  # type: ignore
+
+    def error_log_level(self) -> int:
+        _verbosity_level_to_log_level = {
+            self.SILENT: 0,
+            self.QUIET: QUIET_LOG_LEVEL,
+            self.DEBUG: logging.DEBUG,
+            self.QUIET_UNLESS_ERROR: logging.INFO,
+            self.VERBOSE_ON_FAILURE: logging.INFO,
+            self.VERBOSE: logging.INFO
+        }
+        return _verbosity_level_to_log_level[self]  # type: ignore
 
 
 if sys.version_info < (3, 8):
@@ -1689,10 +1741,6 @@ def call(ctx: CephadmContext,
         async for line in reader:
             message = line.decode('utf-8')
             collected.write(message)
-            if verbosity == CallVerbosity.VERBOSE:
-                logger.info(prefix + message.rstrip())
-            elif verbosity != CallVerbosity.SILENT:
-                logger.debug(prefix + message.rstrip())
         return collected.getvalue()
 
     async def run_with_timeout() -> Tuple[str, str, int]:
@@ -1714,13 +1762,14 @@ def call(ctx: CephadmContext,
             return stdout, stderr, returncode
 
     stdout, stderr, returncode = async_run(run_with_timeout())
-    if returncode != 0 and verbosity == CallVerbosity.VERBOSE_ON_FAILURE:
-        logger.info('Non-zero exit code %d from %s',
-                    returncode, ' '.join(command))
-        for line in stdout.splitlines():
-            logger.info(prefix + 'stdout ' + line)
-        for line in stderr.splitlines():
-            logger.info(prefix + 'stderr ' + line)
+    log_level = verbosity.success_log_level()
+    if returncode != 0:
+        log_level = verbosity.error_log_level()
+        logger.log(log_level, f'Non-zero exit code {returncode} from {" ".join(command)}')
+    for line in stdout.splitlines():
+        logger.log(log_level, prefix + 'stdout ' + line)
+    for line in stderr.splitlines():
+        logger.log(log_level, prefix + 'stderr ' + line)
     return stdout, stderr, returncode
 
 
@@ -2395,7 +2444,7 @@ def check_unit(ctx, unit_name):
     installed = False
     try:
         out, err, code = call(ctx, ['systemctl', 'is-enabled', unit_name],
-                              verbosity=CallVerbosity.DEBUG)
+                              verbosity=CallVerbosity.QUIET)
         if code == 0:
             enabled = True
             installed = True
@@ -2409,7 +2458,7 @@ def check_unit(ctx, unit_name):
     state = 'unknown'
     try:
         out, err, code = call(ctx, ['systemctl', 'is-active', unit_name],
-                              verbosity=CallVerbosity.DEBUG)
+                              verbosity=CallVerbosity.QUIET)
         out = out.strip()
         if out in ['active']:
             state = 'running'
@@ -2555,10 +2604,8 @@ def get_daemon_args(ctx, fsid, daemon_type, daemon_id):
                 r += ['--cluster.peer={}'.format(peer)]
             # some alertmanager, by default, look elsewhere for a config
             r += ['--config.file=/etc/alertmanager/alertmanager.yml']
-        if daemon_type == 'loki':
-            r += ['--config.file=/etc/loki/loki.yml']
         if daemon_type == 'promtail':
-            r += ['--config.file=/etc/promtail/promtail.yml']
+            r += ['--config.expand-env']
         if daemon_type == 'node-exporter':
             r += ['--path.procfs=/host/proc',
                   '--path.sysfs=/host/sys',
@@ -2683,10 +2730,46 @@ def create_daemon_dirs(ctx, fsid, daemon_type, daemon_id, uid, gid,
         sg = SNMPGateway.init(ctx, fsid, daemon_id)
         sg.create_daemon_conf()
 
+    _write_custom_conf_files(ctx, daemon_type, str(daemon_id), fsid, uid, gid)
+
 
-def get_parm(option):
-    # type: (str) -> Dict[str, str]
+def _write_custom_conf_files(ctx: CephadmContext, daemon_type: str, daemon_id: str, fsid: str, uid: int, gid: int) -> None:
+    # mostly making this its own function to make unit testing easier
+    if 'config_json' not in ctx or not ctx.config_json:
+        return
+    config_json = get_custom_config_files(ctx.config_json)
+    custom_config_dir = os.path.join(ctx.data_dir, fsid, 'custom_config_files', f'{daemon_type}.{daemon_id}')
+    if not os.path.exists(custom_config_dir):
+        makedirs(custom_config_dir, uid, gid, 0o755)
+    mandatory_keys = ['mount_path', 'content']
+    for ccf in config_json['custom_config_files']:
+        if all(k in ccf for k in mandatory_keys):
+            file_path = os.path.join(custom_config_dir, os.path.basename(ccf['mount_path']))
+            with open(file_path, 'w+', encoding='utf-8') as f:
+                os.fchown(f.fileno(), uid, gid)
+                os.fchmod(f.fileno(), 0o600)
+                f.write(ccf['content'])
 
+
+def get_parm(option: str) -> Dict[str, str]:
+    js = _get_config_json(option)
+    # custom_config_files is a special field that may be in the config
+    # dict. It is used for mounting custom config files into daemon's containers
+    # and should be accessed through the "get_custom_config_files" function.
+    # For get_parm we need to discard it.
+    js.pop('custom_config_files', None)
+    return js
+
+
+def get_custom_config_files(option: str) -> Dict[str, List[Dict[str, str]]]:
+    js = _get_config_json(option)
+    res: Dict[str, List[Dict[str, str]]] = {'custom_config_files': []}
+    if 'custom_config_files' in js:
+        res['custom_config_files'] = js['custom_config_files']
+    return res
+
+
+def _get_config_json(option: str) -> Dict[str, Any]:
     if not option:
         return dict()
 
@@ -3045,7 +3128,7 @@ def extract_uid_gid(ctx, img='', file_path='/var/lib/ceph'):
                 image=img,
                 entrypoint='stat',
                 args=['-c', '%u %g', fp]
-            ).run()
+            ).run(verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
             uid, gid = out.split(' ')
             return int(uid), int(gid)
         except RuntimeError as e:
@@ -3288,16 +3371,6 @@ def deploy_daemon_units(
                     bind_mounts=get_container_binds(ctx, fsid, daemon_type, daemon_id),
                     cname='ceph-%s-%s.%s-activate' % (fsid, daemon_type, daemon_id),
                 )
-                if 'cluster' in ctx and ctx.cluster:
-                    # ctx.cluster is only set during adoption of a daemon from a cluster
-                    # with a custom name (not "ceph"). The initial activate command the first
-                    # time we start the new cephadm based systemd unit for this osd must account
-                    # for this by mounting to the correct data dir in the container. Otherwise
-                    # necessary files from the old data dir of the daemon won't be copied over
-                    # to the new data dir on the host. After the first start (e.g. on any redeploys)
-                    # this is no longer necessary as we will have these files in the data dir on the host
-                    if data_dir in prestart.volume_mounts:
-                        prestart.volume_mounts[data_dir] = f'/var/lib/ceph/osd/{ctx.cluster}-{daemon_id}'
                 _write_container_cmd_to_bash(ctx, f, prestart, 'LVM OSDs use ceph-volume lvm activate')
         elif daemon_type == CephIscsi.daemon_type:
             f.write(' '.join(CephIscsi.configfs_mount_umount(data_dir, mount=True)) + '\n')
@@ -3947,10 +4020,10 @@ class CephContainer:
         ]
         return ret
 
-    def run(self, timeout=DEFAULT_TIMEOUT):
-        # type: (Optional[int]) -> str
+    def run(self, timeout=DEFAULT_TIMEOUT, verbosity=CallVerbosity.VERBOSE_ON_FAILURE):
+        # type: (Optional[int], CallVerbosity) -> str
         out, _, _ = call_throws(self.ctx, self.run_cmd(),
-                                desc=self.entrypoint, timeout=timeout)
+                                desc=self.entrypoint, timeout=timeout, verbosity=verbosity)
         return out
 
 
@@ -4497,7 +4570,7 @@ def _pull_image(ctx, image, insecure=False):
     cmd_str = ' '.join(cmd)
 
     for sleep_secs in [1, 4, 25]:
-        out, err, ret = call(ctx, cmd)
+        out, err, ret = call(ctx, cmd, verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
         if not ret:
             return
 
@@ -4980,7 +5053,8 @@ def wait_for_mon(
         timeout = ctx.timeout if ctx.timeout else 60  # seconds
         out, err, ret = call(ctx, c.run_cmd(),
                              desc=c.entrypoint,
-                             timeout=timeout)
+                             timeout=timeout,
+                             verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
         return ret == 0
 
     is_available(ctx, 'mon', is_mon_available)
@@ -5007,7 +5081,9 @@ def create_mgr(
         # type: () -> bool
         timeout = ctx.timeout if ctx.timeout else 60  # seconds
         try:
-            out = clifunc(['status', '-f', 'json-pretty'], timeout=timeout)
+            out = clifunc(['status', '-f', 'json-pretty'],
+                          timeout=timeout,
+                          verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
             j = json.loads(out)
             return j.get('mgrmap', {}).get('available', False)
         except Exception as e:
@@ -5079,6 +5155,11 @@ def prepare_ssh(
             logger.info('Deploying %s service with default placement...' % t)
             cli(['orch', 'apply', t])
 
+    if ctx.with_centralized_logging:
+        for t in ['loki', 'promtail']:
+            logger.info('Deploying %s service with default placement...' % t)
+            cli(['orch', 'apply', t])
+
 
 def enable_cephadm_mgr_module(
     cli: Callable, wait_for_mgr_restart: Callable
@@ -5344,6 +5425,8 @@ def save_cluster_config(ctx: CephadmContext, uid: int, gid: int, fsid: str) -> N
 def command_bootstrap(ctx):
     # type: (CephadmContext) -> int
 
+    ctx.error_code = 0
+
     if not ctx.output_config:
         ctx.output_config = os.path.join(ctx.output_dir, CEPH_CONF)
     if not ctx.output_keyring:
@@ -5450,8 +5533,8 @@ def command_bootstrap(ctx):
     tmp_config = write_tmp(config, uid, gid)
 
     # a CLI helper to reduce our typing
-    def cli(cmd, extra_mounts={}, timeout=DEFAULT_TIMEOUT):
-        # type: (List[str], Dict[str, str], Optional[int]) -> str
+    def cli(cmd, extra_mounts={}, timeout=DEFAULT_TIMEOUT, verbosity=CallVerbosity.VERBOSE_ON_FAILURE):
+        # type: (List[str], Dict[str, str], Optional[int], CallVerbosity) -> str
         mounts = {
             log_dir: '/var/log/ceph:z',
             admin_keyring.name: '/etc/ceph/ceph.client.admin.keyring:z',
@@ -5466,7 +5549,7 @@ def command_bootstrap(ctx):
             entrypoint='/usr/bin/ceph',
             args=cmd,
             volume_mounts=mounts,
-        ).run(timeout=timeout)
+        ).run(timeout=timeout, verbosity=verbosity)
 
     wait_for_mon(ctx, mon_id, mon_dir, admin_keyring.name, tmp_config.name)
 
@@ -5503,9 +5586,9 @@ def command_bootstrap(ctx):
         # stat' command first, then fall back to 'mgr dump' if
         # necessary
         try:
-            j = json_loads_retry(lambda: cli(['mgr', 'stat']))
+            j = json_loads_retry(lambda: cli(['mgr', 'stat'], verbosity=CallVerbosity.QUIET_UNLESS_ERROR))
         except Exception:
-            j = json_loads_retry(lambda: cli(['mgr', 'dump']))
+            j = json_loads_retry(lambda: cli(['mgr', 'dump'], verbosity=CallVerbosity.QUIET_UNLESS_ERROR))
         epoch = j['epoch']
 
         # wait for mgr to have it
@@ -5562,6 +5645,7 @@ def command_bootstrap(ctx):
             out = cli(['orch', 'apply', '-i', '/tmp/spec.yml'], extra_mounts=mounts)
             logger.info(out)
         except Exception:
+            ctx.error_code = -errno.EINVAL
             logger.info('\nApplying %s to cluster failed!\n' % ctx.apply_spec)
 
     save_cluster_config(ctx, uid, gid, fsid)
@@ -5587,7 +5671,7 @@ def command_bootstrap(ctx):
                 'For more information see:\n\n'
                 '\thttps://docs.ceph.com/docs/master/mgr/telemetry/\n')
     logger.info('Bootstrap complete.')
-    return 0
+    return ctx.error_code
 
 ##################################
 
@@ -5656,16 +5740,30 @@ def extract_uid_gid_monitoring(ctx, daemon_type):
     return uid, gid
 
 
-def get_container_with_extra_args(ctx: CephadmContext,
-                                  fsid: str, daemon_type: str, daemon_id: Union[int, str],
-                                  privileged: bool = False,
-                                  ptrace: bool = False,
-                                  container_args: Optional[List[str]] = None) -> 'CephContainer':
-    # wrapper for get_container that additionally adds extra_container_args if present
-    # used for deploying daemons with additional podman/docker container arguments
+def get_deployment_container(ctx: CephadmContext,
+                             fsid: str, daemon_type: str, daemon_id: Union[int, str],
+                             privileged: bool = False,
+                             ptrace: bool = False,
+                             container_args: Optional[List[str]] = None) -> 'CephContainer':
+    # wrapper for get_container specifically for containers made during the `cephadm deploy`
+    # command. Adds some extra things such as extra container args and custom config files
     c = get_container(ctx, fsid, daemon_type, daemon_id, privileged, ptrace, container_args)
     if 'extra_container_args' in ctx and ctx.extra_container_args:
         c.container_args.extend(ctx.extra_container_args)
+    if 'config_json' in ctx and ctx.config_json:
+        conf_files = get_custom_config_files(ctx.config_json)
+        mandatory_keys = ['mount_path', 'content']
+        for conf in conf_files['custom_config_files']:
+            if all(k in conf for k in mandatory_keys):
+                mount_path = conf['mount_path']
+                file_path = os.path.join(
+                    ctx.data_dir,
+                    fsid,
+                    'custom_config_files',
+                    f'{daemon_type}.{daemon_id}',
+                    os.path.basename(mount_path)
+                )
+                c.volume_mounts[file_path] = mount_path
     return c
 
 
@@ -5710,8 +5808,8 @@ def command_deploy(ctx):
         uid, gid = extract_uid_gid(ctx)
         make_var_run(ctx, ctx.fsid, uid, gid)
 
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id,
-                                          ptrace=ctx.allow_ptrace)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id,
+                                     ptrace=ctx.allow_ptrace)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
                       osd_fsid=ctx.osd_fsid,
@@ -5735,7 +5833,7 @@ def command_deploy(ctx):
                             'contain arg for {}'.format(daemon_type.capitalize(), ', '.join(required_args)))
 
         uid, gid = extract_uid_gid_monitoring(ctx, daemon_type)
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       reconfig=ctx.reconfig,
                       ports=daemon_ports)
@@ -5747,7 +5845,7 @@ def command_deploy(ctx):
         config, keyring = get_config_and_keyring(ctx)
         # TODO: extract ganesha uid/gid (997, 994) ?
         uid, gid = extract_uid_gid(ctx)
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
                       reconfig=ctx.reconfig,
@@ -5756,7 +5854,7 @@ def command_deploy(ctx):
     elif daemon_type == CephIscsi.daemon_type:
         config, keyring = get_config_and_keyring(ctx)
         uid, gid = extract_uid_gid(ctx)
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
                       reconfig=ctx.reconfig,
@@ -5765,7 +5863,7 @@ def command_deploy(ctx):
     elif daemon_type == HAproxy.daemon_type:
         haproxy = HAproxy.init(ctx, ctx.fsid, daemon_id)
         uid, gid = haproxy.extract_uid_gid_haproxy()
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       reconfig=ctx.reconfig,
                       ports=daemon_ports)
@@ -5773,7 +5871,7 @@ def command_deploy(ctx):
     elif daemon_type == Keepalived.daemon_type:
         keepalived = Keepalived.init(ctx, ctx.fsid, daemon_id)
         uid, gid = keepalived.extract_uid_gid_keepalived()
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       reconfig=ctx.reconfig,
                       ports=daemon_ports)
@@ -5782,9 +5880,9 @@ def command_deploy(ctx):
         cc = CustomContainer.init(ctx, ctx.fsid, daemon_id)
         if not ctx.reconfig and not redeploy:
             daemon_ports.extend(cc.ports)
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id,
-                                          privileged=cc.privileged,
-                                          ptrace=ctx.allow_ptrace)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id,
+                                     privileged=cc.privileged,
+                                     ptrace=ctx.allow_ptrace)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c,
                       uid=cc.uid, gid=cc.gid, config=None,
                       keyring=None, reconfig=ctx.reconfig,
@@ -5799,7 +5897,7 @@ def command_deploy(ctx):
 
     elif daemon_type == SNMPGateway.daemon_type:
         sc = SNMPGateway.init(ctx, ctx.fsid, daemon_id)
-        c = get_container_with_extra_args(ctx, ctx.fsid, daemon_type, daemon_id)
+        c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c,
                       sc.uid, sc.gid,
                       ports=daemon_ports)
@@ -5992,7 +6090,7 @@ def command_ceph_volume(ctx):
         volume_mounts=mounts,
     )
 
-    out, err, code = call_throws(ctx, c.run_cmd())
+    out, err, code = call_throws(ctx, c.run_cmd(), verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
     if not code:
         print(out)
 
@@ -6057,7 +6155,7 @@ def _list_ipv4_networks(ctx: CephadmContext) -> Dict[str, Dict[str, Set[str]]]:
     execstr: Optional[str] = find_executable('ip')
     if not execstr:
         raise FileNotFoundError("unable to find 'ip' command")
-    out, _, _ = call_throws(ctx, [execstr, 'route', 'ls'])
+    out, _, _ = call_throws(ctx, [execstr, 'route', 'ls'], verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
     return _parse_ipv4_route(out)
 
 
@@ -6085,8 +6183,8 @@ def _list_ipv6_networks(ctx: CephadmContext) -> Dict[str, Dict[str, Set[str]]]:
     execstr: Optional[str] = find_executable('ip')
     if not execstr:
         raise FileNotFoundError("unable to find 'ip' command")
-    routes, _, _ = call_throws(ctx, [execstr, '-6', 'route', 'ls'])
-    ips, _, _ = call_throws(ctx, [execstr, '-6', 'addr', 'ls'])
+    routes, _, _ = call_throws(ctx, [execstr, '-6', 'route', 'ls'], verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
+    ips, _, _ = call_throws(ctx, [execstr, '-6', 'addr', 'ls'], verbosity=CallVerbosity.QUIET_UNLESS_ERROR)
     return _parse_ipv6_route(routes, ips)
 
 
@@ -6124,7 +6222,7 @@ def _parse_ipv6_route(routes: str, ips: str) -> Dict[str, Dict[str, Set[str]]]:
         net = [n for n in r.keys()
                if ipaddress.ip_address(ip) in ipaddress.ip_network(n)]
         if net and iface in r[net[0]]:
-            assert(iface)
+            assert iface
             r[net[0]][iface].add(ip)
 
     return r
@@ -6192,14 +6290,14 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
     out, err, code = call(
         ctx,
         [container_path, 'stats', '--format', '{{.ID}},{{.MemUsage}}', '--no-stream'],
-        verbosity=CallVerbosity.DEBUG
+        verbosity=CallVerbosity.QUIET
     )
     seen_memusage_cid_len, seen_memusage = _parse_mem_usage(code, out)
 
     out, err, code = call(
         ctx,
         [container_path, 'stats', '--format', '{{.ID}},{{.CPUPerc}}', '--no-stream'],
-        verbosity=CallVerbosity.DEBUG
+        verbosity=CallVerbosity.QUIET
     )
     seen_cpuperc_cid_len, seen_cpuperc = _parse_cpu_perc(code, out)
 
@@ -6228,7 +6326,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                             try:
                                 out, err, code = call(ctx,
                                                       ['ceph', '-v'],
-                                                      verbosity=CallVerbosity.DEBUG)
+                                                      verbosity=CallVerbosity.QUIET)
                                 if not code and out.startswith('ceph version '):
                                     host_version = out.split(' ')[2]
                             except Exception:
@@ -6279,7 +6377,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                                         container_path, 'image', 'inspect', image_id,
                                         '--format', '{{.RepoDigests}}',
                                     ],
-                                    verbosity=CallVerbosity.DEBUG)
+                                    verbosity=CallVerbosity.QUIET)
                                 if not code:
                                     image_digests = list(set(map(
                                         normalize_image_digest,
@@ -6298,7 +6396,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                                     out, err, code = call(ctx,
                                                           [container_path, 'exec', container_id,
                                                            'ceph', '-v'],
-                                                          verbosity=CallVerbosity.DEBUG)
+                                                          verbosity=CallVerbosity.QUIET)
                                     if not code and \
                                        out.startswith('ceph version '):
                                         version = out.split(' ')[2]
@@ -6307,7 +6405,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                                     out, err, code = call(ctx,
                                                           [container_path, 'exec', container_id,
                                                            'grafana-server', '-v'],
-                                                          verbosity=CallVerbosity.DEBUG)
+                                                          verbosity=CallVerbosity.QUIET)
                                     if not code and \
                                        out.startswith('Version '):
                                         version = out.split(' ')[1]
@@ -6323,7 +6421,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                                     out, err, code = call(ctx,
                                                           [container_path, 'exec', container_id,
                                                            'haproxy', '-v'],
-                                                          verbosity=CallVerbosity.DEBUG)
+                                                          verbosity=CallVerbosity.QUIET)
                                     if not code and \
                                        out.startswith('HA-Proxy version '):
                                         version = out.split(' ')[2]
@@ -6332,7 +6430,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                                     out, err, code = call(ctx,
                                                           [container_path, 'exec', container_id,
                                                            'keepalived', '--version'],
-                                                          verbosity=CallVerbosity.DEBUG)
+                                                          verbosity=CallVerbosity.QUIET)
                                     if not code and \
                                        err.startswith('Keepalived '):
                                         version = err.split(' ')[1]
@@ -6442,7 +6540,7 @@ def get_container_stats(ctx: CephadmContext, container_path: str, fsid: str, dae
             '--format', '{{.Id}},{{.Config.Image}},{{.Image}},{{.Created}},{{index .Config.Labels "io.ceph.version"}}',
             name
         ]
-        out, err, code = call(ctx, cmd, verbosity=CallVerbosity.DEBUG)
+        out, err, code = call(ctx, cmd, verbosity=CallVerbosity.QUIET)
         if not code:
             break
     return out, err, code
@@ -6569,6 +6667,37 @@ class AdoptOsd(object):
 
         return osd_fsid, osd_type
 
+    def change_cluster_name(self) -> None:
+        logger.info('Attempting to convert osd cluster name to ceph . . .')
+        c = get_ceph_volume_container(
+            self.ctx,
+            args=['lvm', 'list', '{}'.format(self.osd_id), '--format=json'],
+        )
+        out, err, code = call_throws(self.ctx, c.run_cmd())
+        if code:
+            raise Exception(f'Failed to get list of LVs: {err}\nceph-volume failed with rc {code}')
+        try:
+            js = json.loads(out)
+            if not js:
+                raise RuntimeError(f'Failed to find osd.{self.osd_id}')
+            device: Optional[Dict[Any, Any]] = None
+            for d in js[self.osd_id]:
+                if d['type'] == 'block':
+                    device = d
+                    break
+            if not device:
+                raise RuntimeError(f'Failed to find block device for osd.{self.osd_id}')
+            vg = device['vg_name']
+            out, err, code = call_throws(self.ctx, ['lvchange', '--deltag', f'ceph.cluster_name={self.ctx.cluster}', vg])
+            if code:
+                raise RuntimeError(f"Can't delete tag ceph.cluster_name={self.ctx.cluster} on osd.{self.osd_id}.\nlvchange failed with rc {code}")
+            out, err, code = call_throws(self.ctx, ['lvchange', '--addtag', 'ceph.cluster_name=ceph', vg])
+            if code:
+                raise RuntimeError(f"Can't add tag ceph.cluster_name=ceph on osd.{self.osd_id}.\nlvchange failed with rc {code}")
+            logger.info('Successfully converted osd cluster name')
+        except (Exception, RuntimeError) as e:
+            logger.info(f'Failed to convert osd cluster name: {e}')
+
 
 def command_adopt_ceph(ctx, daemon_type, daemon_id, fsid):
     # type: (CephadmContext, str, str, str) -> None
@@ -6594,6 +6723,8 @@ def command_adopt_ceph(ctx, daemon_type, daemon_id, fsid):
             osd_fsid, osd_type = adopt_osd.check_offline_simple_osd()
         if not osd_fsid:
             raise Error('Unable to find OSD {}'.format(daemon_id))
+        elif ctx.cluster != 'ceph':
+            adopt_osd.change_cluster_name()
         logger.info('objectstore_type is %s' % osd_type)
         assert osd_type
         if osd_type == 'filestore':
@@ -6919,7 +7050,7 @@ def _zap_osds(ctx: CephadmContext) -> None:
         raise Error(f'Invalid JSON in ceph-volume inventory: {e}')
 
     for i in ls:
-        matches = [lv.get('cluster_fsid') == ctx.fsid for lv in i.get('lvs', [])]
+        matches = [lv.get('cluster_fsid') == ctx.fsid and i.get('ceph_device') for lv in i.get('lvs', [])]
         if any(matches) and all(matches):
             _zap(ctx, i.get('path'))
         elif any(matches):
@@ -7378,7 +7509,7 @@ class Packager(object):
 
     def repo_gpgkey(self) -> Tuple[str, str]:
         if self.ctx.gpg_url:
-            return self.ctx.gpg_url
+            return self.ctx.gpg_url, 'manual'
         if self.stable or self.version:
             return 'https://download.ceph.com/keys/release.gpg', 'release'
         else:
@@ -7442,7 +7573,7 @@ class Apt(Packager):
         self.update()
 
     def rm_repo(self) -> None:
-        for name in ['autobuild', 'release']:
+        for name in ['autobuild', 'release', 'manual']:
             p = '/etc/apt/trusted.gpg.d/ceph.%s.gpg' % name
             if os.path.exists(p):
                 logger.info('Removing repo GPG key %s...' % p)
@@ -7526,6 +7657,7 @@ class YumDnf(Packager):
         'scientific': ('centos', 'el'),
         'rocky': ('centos', 'el'),
         'almalinux': ('centos', 'el'),
+        'ol': ('centos', 'el'),
         'fedora': ('fedora', 'fc'),
         'mariner': ('mariner', 'cm'),
     }
@@ -7829,6 +7961,50 @@ def command_install(ctx: CephadmContext) -> None:
     pkg = create_packager(ctx)
     pkg.install(ctx.packages)
 
+
+def command_rescan_disks(ctx: CephadmContext) -> str:
+
+    def probe_hba(scan_path: str) -> None:
+        """Tell the adapter to rescan"""
+        with open(scan_path, 'w') as f:
+            f.write('- - -')
+
+    cmd = ctx.func.__name__.replace('command_', '')
+    logger.info(f'{cmd}: starting')
+    start = time.time()
+
+    all_scan_files = glob('/sys/class/scsi_host/*/scan')
+    scan_files = []
+    skipped = []
+    for scan_path in all_scan_files:
+        adapter_name = os.path.basename(os.path.dirname(scan_path))
+        proc_name = read_file([os.path.join(os.path.dirname(scan_path), 'proc_name')])
+        if proc_name in ['unknown', 'usb-storage']:
+            skipped.append(os.path.basename(scan_path))
+            logger.info(f'{cmd}: rescan skipping incompatible host adapter {adapter_name} : {proc_name}')
+            continue
+
+        scan_files.append(scan_path)
+
+    if not scan_files:
+        logger.info(f'{cmd}: no compatible HBAs found')
+        return 'Ok. No compatible HBAs found'
+
+    responses = async_run(concurrent_tasks(probe_hba, scan_files))
+    failures = [r for r in responses if r]
+
+    logger.info(f'{cmd}: Complete. {len(scan_files)} adapters rescanned, {len(failures)} failures, {len(skipped)} skipped')
+
+    elapsed = time.time() - start
+    if failures:
+        plural = 's' if len(failures) > 1 else ''
+        if len(failures) == len(scan_files):
+            return f'Failed. All {len(scan_files)} rescan requests failed'
+        else:
+            return f'Partial. {len(scan_files) - len(failures)} successful, {len(failures)} failure{plural} against: {", ".join(failures)}'
+
+    return f'Ok. {len(all_scan_files)} adapters detected: {len(scan_files)} rescanned, {len(skipped)} skipped, {len(failures)} failed ({elapsed:.2f}s)'
+
 ##################################
 
 
@@ -8295,7 +8471,7 @@ class HostFacts():
             security = {}
             try:
                 out, err, code = call(self.ctx, ['sestatus'],
-                                      verbosity=CallVerbosity.DEBUG)
+                                      verbosity=CallVerbosity.QUIET)
                 security['type'] = 'SELinux'
                 status, mode, policy = '', '', ''
                 for line in out.split('\n'):
@@ -8972,6 +9148,10 @@ def _get_parser():
         '--skip-monitoring-stack',
         action='store_true',
         help='Do not automatically provision monitoring stack (prometheus, grafana, alertmanager, node-exporter)')
+    parser_bootstrap.add_argument(
+        '--with-centralized-logging',
+        action='store_true',
+        help='Automatically provision centralized logging (promtail, loki)')
     parser_bootstrap.add_argument(
         '--apply-spec',
         help='Apply cluster spec after bootstrap (copy ssh key, add hosts and apply services)')
@@ -9171,6 +9351,10 @@ def _get_parser():
         '--daemon-id',
         help='daemon id for agent')
 
+    parser_disk_rescan = subparsers.add_parser(
+        'disk-rescan', help='rescan all HBAs to detect new/removed devices')
+    parser_disk_rescan.set_defaults(func=command_rescan_disks)
+
     return parser
 
 
@@ -9205,6 +9389,7 @@ def cephadm_init_logging(ctx: CephadmContext, args: List[str]) -> None:
     """Configure the logging for cephadm as well as updating the system
     to have the expected log dir and logrotate configuration.
     """
+    logging.addLevelName(QUIET_LOG_LEVEL, 'QUIET')
     global logger
     if not os.path.exists(LOG_DIR):
         os.makedirs(LOG_DIR)
@@ -9215,6 +9400,7 @@ def cephadm_init_logging(ctx: CephadmContext, args: List[str]) -> None:
         dictConfig(logging_config)
 
     logger = logging.getLogger()
+    logger.setLevel(QUIET_LOG_LEVEL)
 
     if not os.path.exists(ctx.logrotate_dir + '/cephadm'):
         with open(ctx.logrotate_dir + '/cephadm', 'w') as f:
@@ -9225,13 +9411,14 @@ def cephadm_init_logging(ctx: CephadmContext, args: List[str]) -> None:
     compress
     missingok
     notifempty
+    su root root
 }
 """)
 
     if ctx.verbose:
         for handler in logger.handlers:
-            if handler.name == 'console':
-                handler.setLevel(logging.DEBUG)
+            if handler.name in ['console', 'log_file', 'console_stdout']:
+                handler.setLevel(QUIET_LOG_LEVEL)
     logger.debug('%s\ncephadm %s' % ('-' * 80, args))
 
 
diff --git a/ceph/src/cephadm/containers/keepalived/Dockerfile b/ceph/src/cephadm/containers/keepalived/Dockerfile
new file mode 100644 (file)
index 0000000..ac305f7
--- /dev/null
@@ -0,0 +1,24 @@
+FROM registry.access.redhat.com/ubi8/ubi-minimal:latest
+
+RUN microdnf install --nodocs \
+    bash       \
+    curl       \
+    iproute    \
+    keepalived-2.1.5 \
+ && rm /etc/keepalived/keepalived.conf && microdnf clean all
+
+COPY /skel /
+
+RUN chmod +x init.sh
+
+CMD ["./init.sh"]
+
+# Build specific labels
+LABEL maintainer="Guillaume Abrioux <gabrioux@redhat.com>"
+LABEL com.redhat.component="keepalived-container"
+LABEL version=2.1.5
+LABEL name="keepalived"
+LABEL description="keepalived for Ceph"
+LABEL summary="Provides keepalived on RHEL 8 for Ceph."
+LABEL io.k8s.display-name="Keepalived on RHEL 8"
+LABEL io.openshift.tags="Ceph keepalived"
diff --git a/ceph/src/cephadm/containers/keepalived/LICENSE b/ceph/src/cephadm/containers/keepalived/LICENSE
new file mode 100644 (file)
index 0000000..74b10b1
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 University of Michigan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/ceph/src/cephadm/containers/keepalived/README.md b/ceph/src/cephadm/containers/keepalived/README.md
new file mode 100644 (file)
index 0000000..a70d61e
--- /dev/null
@@ -0,0 +1,233 @@
+# arcts/keepalived
+
+A small [ubi8-minimal](https://catalog.redhat.com/software/containers/registry/registry.access.redhat.com/repository/ubi8/ubi-minimal) based Docker container that provides a method of IP high availability via [keepalived](http://www.keepalived.org/) (VRRP failover), and optional Kubernetes API Server monitoring. If allowed to auto configure (default behaviour) it will automatically generate a unicast based failover configuration with a minimal amount of user supplied information.
+
+For specific information on Keepalived, please see the man page on [keepalived.conf](http://linux.die.net/man/5/keepalived.conf) or the [Keepalived User Guide](http://www.keepalived.org/pdf/UserGuide.pdf).
+
+
+## Index
+- [arcts/keepalived](#arctskeepalived)
+  - [Index](#index)
+  - [Prerequisites](#prerequisites)
+  - [Configuration](#configuration)
+    - [Execution Control](#execution-control)
+    - [Autoconfiguration Options](#autoconfiguration-options)
+    - [Kubernetes Options](#kubernetes-options)
+    - [Suggested Kubernetes Settings](#suggested-kubernetes-settings)
+    - [Example Keepalived Configs](#example-keepalived-configs)
+        - [Example Autogenerated Keepalived Master Config](#example-autogenerated-keepalived-master-config)
+        - [Example Autogenerated Keepalived Backup Config](#example-autogenerated-keepalived-backup-config)
+  - [Example Run Commands](#example-run-commands)
+        - [Example Master Run Command](#example-master-run-command)
+        - [Example Backup Run Command](#example-backup-run-command)
+
+
+## Prerequisites
+
+Before attempting to deploy the keepalived container, the host must allow non local binding of ipv4 addresses. To do this, configure the sysctl tunable `net.ipv4.ip_nonlocal_bind=1`.
+
+In addition to enabling the nonlocal binds, the container must be run with both host networking (`--net=host`) and security setting CAP_NET_ADMIN (`--cap-add NET_ADMIN`) capability. These allow the container to manage the host's networking configuration, and this is essential to the function of keepalived.
+
+
+## Configuration
+### Execution Control
+
+|        Variable       |                      Default                     |
+|:---------------------:|:------------------------------------------------:|
+| `KEEPALIVED_AUTOCONF` |                      `true`                      |
+|   `KEEPALIVED_CONF`   |         `/etc/keepalived/keepalived.conf`        |
+|    `KEEPALIVED_CMD`   | `/usr/sbin/keepalived -n -l -f $KEEPALIVED_CONF` |
+|   `KEEPALIVED_DEBUG`  |                      `false`                     |
+
+* `KEEPALIVED_AUTOCONF` -  Enables or disables the auto-configuration of keepalived.
+
+* `KEEPALIVED_CONF` - The path to the keepalived configuration file.
+
+* `KEEPALIVED_CMD` - The command called to execute keepalived.
+
+* `KEEPALIVED_DEBUG` - Enables or disables debug level logging for keepalived (adds `-D` to `KEEPALIVED_CMD`.
+
+
+### Autoconfiguration Options
+
+|                   Variable                  |               Default              |
+|:-------------------------------------------:|:----------------------------------:|
+|           `KEEPALIVED_ADVERT_INT`           |                 `1`                |
+|            `KEEPALIVED_AUTH_PASS`           | `pwd$KEEPALIVED_VIRTUAL_ROUTER_ID` |
+|            `KEEPALIVED_INTERFACE`           |               `eth0`               |
+|            `KEEPALIVED_PRIORITY`            |                `200`               |
+|              `KEEPALIVED_STATE`             |              `MASTER`              |
+|       `KEEPALIVED_TRACK_INTERFACE_###`      |                                    |
+|         `KEEPALIVED_UNICAST_SRC_IP`         |                                    |
+|        `KEEPALIVED_UNICAST_PEER_###`        |                                    |
+|      `KEEPALIVED_VIRTUAL_IPADDRESS_###`     |                                    |
+| `KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_###` |                                    |
+|        `KEEPALIVED_VIRTUAL_ROUTER_ID`       |                 `1`                |
+|      `KEEPALIVED_KUBE_APISERVER_CHECK`      |               `false`              |
+
+* `KEEPALIVED_ADVERT_INT` - The VRRP advertisement interval (in seconds).
+
+* `KEEPALIVED_AUTH_PASS` - A shared password used to authenticate each node in a VRRP group (**Note:** If password is longer than 8 characters, only the first 8 characters are used).
+
+* `KEEPALIVED_INTERFACE` - The host interface that keepalived will monitor and use for VRRP traffic.
+
+* `KEEPALIVED_PRIORITY` - Election value, the server configured with the highest priority will become the Master.
+
+* `KEEPALIVED_STATE` - Defines the server role as Master or Backup. (**Options:** `MASTER` or `BACKUP`).
+
+* `KEEPALIVED_TRACK_INTERFACE_###` - An interface that's state should be monitored (e.g. eth0). More than one can be supplied as long as the variable name ends in a number from 0-999.
+
+* `KEEPALIVED_UNICAST_SRC_IP` - The IP on the host that the keepalived daemon should bind to. **Note:** If not specified, it will be the first IP bound to the interface specified in `KEEPALIVED_INTERFACE`.
+
+* `KEEPALIVED_UNICAST_PEER_###` - An IP of a peer participating in the VRRP group. More tha one can be supplied as long as the variable name ends in a number from 0-999.
+
+* `KEEPALIVED_VIRTUAL_IPADDRESS_###` - An instance of an address that will be monitored and failed over from one host to another. These should be a quoted string in the form of: `<IPADDRESS>/<MASK> brd <BROADCAST_IP> dev <DEVICE> scope <SCOPE> label <LABEL>` At a minimum the ip address, mask and device should be specified e.g. `KEEPALIVED_VIRTUAL_IPADDRESS_1="10.10.0.2/24 dev eth0"`. More than one can be supplied as long as the variable name ends in a number from 0-999. **Note:** Keepalived has a hard limit of **20** addresses that can be monitored. More can be failed over with the monitored addresses via `KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_###`.
+
+
+* `KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_###` - An instance of an address that will be failed over with the monitored addresses supplied via `KEEPALIVED_VIRTUAL_IPADDRESS_###`.  These should be a quoted string in the form of: `<IPADDRESS>/<MASK> brd <BROADCAST_IP> dev <DEVICE> scope <SCOPE> label <LABEL>` At a minimum the ip address, mask and device should be specified e.g. `KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_1="172.16.1.20/24 dev eth1"`. More than one can be supplied as long as the variable name ends in a number from 0-999.
+
+* `KEEPALIVED_VIRTUAL_ROUTER_ID` - A unique number from 0 to 255 that should identify the VRRP group. Master and Backup should have the same value. Multiple instances of keepalived can be run on the same host, but each pair **MUST** have a unique virtual router id.
+
+* `KEEPALIVED_KUBE_APISERVER_CHECK` -  If enabled it configures a simple check script for the Kubernetes API-Server. For more information on this feature, please see the [Kubernetes Options](#kubernetes-options) section.
+
+
+### Kubernetes Options
+
+
+|          **Variable**         |                   **Default**                  |
+|:-----------------------------:|:----------------------------------------------:|
+|    `KUBE_APISERVER_ADDRESS`   | parsed from `KEEPALIVED_VIRTUAL_IPADDRESS_###` |
+|     `KUBE_APISERVER_PORT`     |                     `6443`                     |
+| `KUBE_APISERVER_CHK_INTERVAL` |                       `3`                      |
+|   `KUBE_APISERVER_CHK_FALL`   |                      `10`                      |
+|   `KUBE_APISERVER_CHK_RISE`   |                       `2`                      |
+|  `KUBE_APISERVER_CHK_WEIGHT`  |                      `-50`                     |
+
+
+
+* `KUBE_APISERVER_ADDRESS` - The Virtual IP being used for the Kube API Server. If none is supplied, it is assumed to be the lowest numbered entry in the `KEEPALIVED_VIRTUAL_IPADDRESS_###` variables.
+
+* `KUBE_APISERVER_PORT` - The port to use in conjunction with the `KUBE_APISERVER_ADDRESS`.
+
+* `KUBE_APISERVER_CHK_INTERVAL` - The interval in seconds between calling the script.
+
+* `KUBE_APISERVER_CHK_FALL` - The number of consecutive non-zero script exits before setting the state to `FAULT`.
+
+* `KUBE_APISERVER_CHK_RISE` - The number of consecutive zero script exits before exiting the `FAULT` state.
+
+* `KUBE_APISERVER_CHK_WEIGHT` - The weight to apply to the priority when the service enters the `FAULT` state.
+
+
+
+---
+
+### Suggested Kubernetes Settings
+
+Assuming there are three nodes running the kube-apiserver, you cannot rely on setting just the`KEEPALIVED_STATE` parameter to manage failover across the nodes.
+
+To manage kube-apiserver failover, enable the healthcheck option with `KEEPALIVED_KUBE_APISERVER_CHECK`, and set the `KEEPALIVED_PRIORITY` manually for the three instances.
+
+| **Node** | **Priority** |
+|:--------:|:------------:|
+|  node-01 |      200     |
+|  node-02 |      190     |
+|  node-03 |      180     |
+
+With the default weight of `-50`, if `node-01` has an issue, it's priority will drop to `150` and allow `node-02` to take over, the same is repeated if `node-02` has a failure dropping it's weight to `140` and `node-03` takes over.
+
+Recovery occurs in the same order with the system with the highest priority being promoted to master.
+
+### Example Keepalived Configs
+
+##### Example Autogenerated Keepalived Master Config
+```
+vrrp_instance MAIN {
+  state MASTER
+  interface eth0
+  virtual_router_id 2
+  priority 200
+  advert_int 1
+  unicast_src_ip 10.10.0.21
+  unicast_peer {
+    10.10.0.22
+  }
+  authentication {
+    auth_type PASS
+    auth_pass pwd1
+  }
+  virtual_ipaddress {
+    10.10.0.2/24 dev eth0
+  }
+  virtual_ipaddress_excluded {
+    172.16.1.20/24 dev eth1
+  }
+  track_interface {
+    eth0
+    eth1
+  }
+}
+```
+
+##### Example Autogenerated Keepalived Backup Config
+```
+vrrp_instance MAIN {
+  state BACKUP
+  interface eth0
+  virtual_router_id 2
+  priority 100
+  advert_int 1
+  unicast_src_ip 10.10.0.22
+  unicast_peer {
+    10.10.0.21
+  }
+  authentication {
+    auth_type PASS
+    auth_pass pwd1
+  }
+  virtual_ipaddress {
+    10.10.0.2/24 dev eth0
+  }
+  virtual_ipaddress_excluded {
+    172.16.1.20/24 dev eth1
+  }
+  track_interface {
+    eth0
+    eth1
+  }
+}
+
+```
+
+
+## Example Run Commands
+##### Example Master Run Command
+```bash
+docker run -d --net=host --cap-add NET_ADMIN \
+-e KEEPALIVED_AUTOCONF=true                  \
+-e KEEPALIVED_STATE=MASTER                   \
+-e KEEPALIVED_INTERFACE=eth0                 \
+-e KEEPALIVED_VIRTUAL_ROUTER_ID=2            \
+-e KEEPALIVED_UNICAST_SRC_IP=10.10.0.21      \
+-e KEEPALIVED_UNICAST_PEER_0=10.10.0.22      \
+-e KEEPALIVED_TRACK_INTERFACE_1=eth0         \
+-e KEEPALVED_TRACK_INTERFACE_2=eth1          \
+-e KEEPALIVED_VIRTUAL_IPADDRESS_1="10.10.0.3/24 dev eth0" \
+-e KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_1="172.16.1.20/24 dev eth1" \
+arcts/keepalived
+```
+
+##### Example Backup Run Command
+```bash
+docker run -d --net=host --cap-add NET_ADMIN \
+-e KEEPALIVED_AUTOCONF=true                  \
+-e KEEPALIVED_STATE=BACKUP                   \
+-e KEEPALIVED_INTERFACE=eth0                 \
+-e KEEPALIVED_VIRTUAL_ROUTER_ID=2            \
+-e KEEPALIVED_UNICAST_SRC_IP=10.10.0.22      \
+-e KEEPALIVED_UNICAST_PEER_0=10.10.0.21      \
+-e KEEPALIVED_TRACK_INTERFACE_1=eth0         \
+-e KEEPALVED_TRACK_INTERFACE_2=eth1          \
+-e KEEPALIVED_VIRTUAL_IPADDRESS_1="10.10.0.3/24 dev eth0" \
+-e KEEPALIVED_VIRTUAL_IPADDRESS_EXCLUDED_1="172.16.1.20/24 dev eth1" \
+arcts/keepalived
+```
diff --git a/ceph/src/cephadm/containers/keepalived/skel/init.sh b/ceph/src/cephadm/containers/keepalived/skel/init.sh
new file mode 100755 (executable)
index 0000000..9c86cfa
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+set -o pipefail
+
+
+KEEPALIVED_DEBUG=${KEEPALIVED_DEBUG:-false}
+KEEPALIVED_KUBE_APISERVER_CHECK=${KEEPALIVED_KUBE_APISERVER_CHECK:-false}
+KEEPALIVED_CONF=${KEEPALIVED_CONF:-/etc/keepalived/keepalived.conf}
+KEEPALIVED_VAR_RUN=${KEEPALIVED_VAR_RUN:-/var/run/keepalived}
+
+if [[ ${KEEPALIVED_DEBUG,,} == 'true' ]]; then
+  kd_cmd="/usr/sbin/keepalived -n -l -D -f $KEEPALIVED_CONF"
+else
+  kd_cmd="/usr/sbin/keepalived -n -l -f $KEEPALIVED_CONF"
+fi
+
+KEEPALIVED_CMD=${KEEPALIVED_CMD:-"$kd_cmd"}
+
+rm -fr "$KEEPALIVED_VAR_RUN"
+
+exec $KEEPALIVED_CMD
\ No newline at end of file
index 63706198f3b0e38a5f509d821db3654de5117dcb..eb78fe3d32d73630981fb8fd103304d5b1ec51e0 100644 (file)
@@ -17,6 +17,8 @@ from .fixtures import (
     mock_bad_firewalld,
 )
 
+from pyfakefs import fake_filesystem_unittest
+
 with mock.patch('builtins.open', create=True):
     from importlib.machinery import SourceFileLoader
     cd = SourceFileLoader('cephadm', 'cephadm').load_module()
@@ -243,6 +245,83 @@ class TestCephAdm(object):
         with pytest.raises(Exception):
             cd.prepare_dashboard(ctx, 0, 0, lambda _, extra_mounts=None, ___=None : '5', lambda : None)
 
+    @mock.patch('cephadm.logger')
+    @mock.patch('cephadm.get_custom_config_files')
+    @mock.patch('cephadm.get_container')
+    def test_get_deployment_container(self, _get_container, _get_config, logger):
+        """
+        test get_deployment_container properly makes use of extra container args and custom conf files
+        """
+
+        ctx = cd.CephadmContext()
+        ctx.config_json = '-'
+        ctx.extra_container_args = [
+            '--pids-limit=12345',
+            '--something',
+        ]
+        ctx.data_dir = 'data'
+        _get_config.return_value = {'custom_config_files': [
+            {
+                'mount_path': '/etc/testing.str',
+                'content': 'this\nis\na\nstring',
+            }
+        ]}
+        _get_container.return_value = cd.CephContainer.for_daemon(
+            ctx,
+            fsid='9b9d7609-f4d5-4aba-94c8-effa764d96c9',
+            daemon_type='grafana',
+            daemon_id='host1',
+            entrypoint='',
+            args=[],
+            container_args=[],
+            volume_mounts={},
+            bind_mounts=[],
+            envs=[],
+            privileged=False,
+            ptrace=False,
+            host_network=True,
+        )
+        c = cd.get_deployment_container(ctx,
+                                    '9b9d7609-f4d5-4aba-94c8-effa764d96c9',
+                                    'grafana',
+                                    'host1',)
+
+        assert '--pids-limit=12345' in c.container_args
+        assert '--something' in c.container_args
+        assert os.path.join('data', '9b9d7609-f4d5-4aba-94c8-effa764d96c9', 'custom_config_files', 'grafana.host1', 'testing.str') in c.volume_mounts
+        assert c.volume_mounts[os.path.join('data', '9b9d7609-f4d5-4aba-94c8-effa764d96c9', 'custom_config_files', 'grafana.host1', 'testing.str')] == '/etc/testing.str'
+
+    @mock.patch('cephadm.logger')
+    @mock.patch('cephadm.get_custom_config_files')
+    def test_write_custom_conf_files(self, _get_config, logger, cephadm_fs):
+        """
+        test _write_custom_conf_files writes the conf files correctly
+        """
+
+        ctx = cd.CephadmContext()
+        ctx.config_json = '-'
+        ctx.data_dir = cd.DATA_DIR
+        _get_config.return_value = {'custom_config_files': [
+            {
+                'mount_path': '/etc/testing.str',
+                'content': 'this\nis\na\nstring',
+            },
+            {
+                'mount_path': '/etc/testing.conf',
+                'content': 'very_cool_conf_setting: very_cool_conf_value\nx: y',
+            },
+            {
+                'mount_path': '/etc/no-content.conf',
+            },
+        ]}
+        cd._write_custom_conf_files(ctx, 'mon', 'host1', 'fsid', 0, 0)
+        with open(os.path.join(cd.DATA_DIR, 'fsid', 'custom_config_files', 'mon.host1', 'testing.str'), 'r') as f:
+            assert 'this\nis\na\nstring' == f.read()
+        with open(os.path.join(cd.DATA_DIR, 'fsid', 'custom_config_files', 'mon.host1', 'testing.conf'), 'r') as f:
+            assert 'very_cool_conf_setting: very_cool_conf_value\nx: y' == f.read()
+        with pytest.raises(FileNotFoundError):
+            open(os.path.join(cd.DATA_DIR, 'fsid', 'custom_config_files', 'mon.host1', 'no-content.conf'), 'r')
+
     @mock.patch('cephadm.call_throws')
     @mock.patch('cephadm.get_parm')
     def test_registry_login(self, get_parm, call_throws):
@@ -2323,4 +2402,36 @@ class TestNetworkValidation:
 
         # invalid IPv6 and valid subnets list
         with pytest.raises(Exception):
-            rc = cd.ip_in_sublets('fe80:2030:31:24', 'fe80::/64')
\ No newline at end of file
+            rc = cd.ip_in_sublets('fe80:2030:31:24', 'fe80::/64')
+
+class TestRescan(fake_filesystem_unittest.TestCase):
+
+    def setUp(self):
+        self.setUpPyfakefs()
+        self.fs.create_dir('/sys/class')
+        self.ctx = cd.CephadmContext()
+        self.ctx.func = cd.command_rescan_disks
+
+    def test_no_hbas(self):
+        out = cd.command_rescan_disks(self.ctx)
+        assert out == 'Ok. No compatible HBAs found'
+
+    def test_success(self):
+        self.fs.create_file('/sys/class/scsi_host/host0/scan')
+        self.fs.create_file('/sys/class/scsi_host/host1/scan')
+        out = cd.command_rescan_disks(self.ctx)
+        assert out.startswith('Ok. 2 adapters detected: 2 rescanned, 0 skipped, 0 failed')
+
+    def test_skip_usb_adapter(self):
+        self.fs.create_file('/sys/class/scsi_host/host0/scan')
+        self.fs.create_file('/sys/class/scsi_host/host1/scan')
+        self.fs.create_file('/sys/class/scsi_host/host1/proc_name', contents='usb-storage')
+        out = cd.command_rescan_disks(self.ctx)
+        assert out.startswith('Ok. 2 adapters detected: 1 rescanned, 1 skipped, 0 failed')
+
+    def test_skip_unknown_adapter(self):
+        self.fs.create_file('/sys/class/scsi_host/host0/scan')
+        self.fs.create_file('/sys/class/scsi_host/host1/scan')
+        self.fs.create_file('/sys/class/scsi_host/host1/proc_name', contents='unknown')
+        out = cd.command_rescan_disks(self.ctx)
+        assert out.startswith('Ok. 2 adapters detected: 1 rescanned, 1 skipped, 0 failed')
index 4f8d3d7af2269735e4c772a7d0f770f41e988c19..095bced7a74feb165908d9d70d86b261e6593992 100644 (file)
@@ -41,7 +41,7 @@ commands=pytest {posargs}
 
 [testenv:mypy]
 basepython = python3
-deps = 
+deps =
     mypy
     -c{toxinidir}/../mypy-constrains.txt
 commands = mypy --config-file ../mypy.ini {posargs:cephadm}
@@ -62,6 +62,6 @@ deps =
     flake8-quotes
 commands =
     flake8 --config=tox.ini {posargs:cephadm}
-    bash -c "test $(grep 'docker.io' cephadm | wc -l) == 13"
+    bash -c "test $(grep 'docker.io' cephadm | wc -l) == 11"
 # Downstream distributions may choose to alter this "docker.io" number,
 # to make sure no new references to docker.io are creeping in unnoticed.
index 33253ed10c0d1ae5e726e367ee39a1f157d3277b..5572446f20b1ae6136762c56b1a36125e8549754 100644 (file)
@@ -176,6 +176,30 @@ bool Client::is_reserved_vino(vinodeno_t &vino) {
   return false;
 }
 
+// running average and standard deviation -- presented in
+// Donald Knuth's TAoCP, Volume II.
+double calc_average(double old_avg, double value, uint64_t count) {
+  double new_avg;
+  if (count == 1) {
+    new_avg = value;
+  } else {
+    new_avg = old_avg + ((value - old_avg) / count);
+  }
+
+  return new_avg;
+}
+
+double calc_sq_sum(double old_sq_sum, double old_mean, double new_mean,
+                   double value, uint64_t count) {
+  double new_sq_sum;
+  if (count == 1) {
+    new_sq_sum = 0.0;
+  } else {
+    new_sq_sum = old_sq_sum + (value - old_mean)*(value - new_mean);
+  }
+
+  return new_sq_sum;
+}
 
 // -------------
 
@@ -357,6 +381,12 @@ Client::Client(Messenger *m, MonClient *mc, Objecter *objecter_)
   _collect_and_send_global_metrics = cct->_conf.get_val<bool>(
     "client_collect_and_send_global_metrics");
 
+  mount_timeout = cct->_conf.get_val<std::chrono::seconds>(
+    "client_mount_timeout");
+
+  caps_release_delay = cct->_conf.get_val<std::chrono::seconds>(
+    "client_caps_release_delay");
+
   if (cct->_conf->client_acl_type == "posix_acl")
     acl_type = POSIX_ACL;
 
@@ -585,6 +615,16 @@ void Client::_finish_init()
     plb.add_time_avg(l_c_wrlat, "wrlat", "Latency of a file data write operation");
     plb.add_time_avg(l_c_read, "rdlat", "Latency of a file data read operation");
     plb.add_time_avg(l_c_fsync, "fsync", "Latency of a file sync operation");
+    // average, standard deviation mds/r/w/ latencies
+    plb.add_time(l_c_md_avg, "mdavg", "Average latency for processing metadata requests");
+    plb.add_u64(l_c_md_sqsum, "mdsqsum", "Sum of squares (to calculate variability/stdev) for metadata requests");
+    plb.add_u64(l_c_md_ops, "mdops", "Total metadata IO operations");
+    plb.add_time(l_c_rd_avg, "readavg", "Average latency for processing read requests");
+    plb.add_u64(l_c_rd_sqsum, "readsqsum", "Sum of squares ((to calculate variability/stdev) for read requests");
+    plb.add_u64(l_c_rd_ops, "rdops", "Total read IO operations");
+    plb.add_time(l_c_wr_avg, "writeavg", "Average latency for processing write requests");
+    plb.add_u64(l_c_wr_sqsum, "writesqsum", "Sum of squares ((to calculate variability/stdev) for write requests");
+    plb.add_u64(l_c_wr_ops, "rdops", "Total write IO operations");
     logger.reset(plb.create_perf_counters());
     cct->get_perfcounters_collection()->add(logger.get());
   }
@@ -710,6 +750,63 @@ void Client::shutdown()
   }
 }
 
+void Client::update_io_stat_metadata(utime_t latency) {
+  auto lat_nsec = latency.to_nsec();
+  // old values are used to compute new ones
+  auto o_avg = logger->tget(l_c_md_avg).to_nsec();
+  auto o_sqsum = logger->get(l_c_md_sqsum);
+
+  auto n_avg = calc_average(o_avg, lat_nsec, nr_metadata_request);
+  auto n_sqsum = calc_sq_sum(o_sqsum, o_avg, n_avg, lat_nsec,
+                              nr_metadata_request);
+
+  logger->tinc(l_c_lat, latency);
+  logger->tinc(l_c_reply, latency);
+
+  utime_t avg;
+  avg.set_from_double(n_avg / 1000000000);
+  logger->tset(l_c_md_avg, avg);
+  logger->set(l_c_md_sqsum, n_sqsum);
+  logger->set(l_c_md_ops, nr_metadata_request);
+}
+
+void Client::update_io_stat_read(utime_t latency) {
+  auto lat_nsec = latency.to_nsec();
+  // old values are used to compute new ones
+  auto o_avg = logger->tget(l_c_rd_avg).to_nsec();
+  auto o_sqsum = logger->get(l_c_rd_sqsum);
+
+  auto n_avg = calc_average(o_avg, lat_nsec, nr_read_request);
+  auto n_sqsum = calc_sq_sum(o_sqsum, o_avg, n_avg, lat_nsec,
+                              nr_read_request);
+
+  logger->tinc(l_c_read, latency);
+
+  utime_t avg;
+  avg.set_from_double(n_avg / 1000000000);
+  logger->tset(l_c_rd_avg, avg);
+  logger->set(l_c_rd_sqsum, n_sqsum);
+  logger->set(l_c_rd_ops, nr_read_request);
+}
+
+void Client::update_io_stat_write(utime_t latency) {
+  auto lat_nsec = latency.to_nsec();
+  // old values are used to compute new ones
+  auto o_avg = logger->tget(l_c_wr_avg).to_nsec();
+  auto o_sqsum = logger->get(l_c_wr_sqsum);
+
+  auto n_avg = calc_average(o_avg, lat_nsec, nr_write_request);
+  auto n_sqsum = calc_sq_sum(o_sqsum, o_avg, n_avg, lat_nsec,
+                              nr_write_request);
+
+  logger->tinc(l_c_wrlat, latency);
+
+  utime_t avg;
+  avg.set_from_double(n_avg / 1000000000);
+  logger->tset(l_c_wr_avg, avg);
+  logger->set(l_c_wr_sqsum, n_sqsum);
+  logger->set(l_c_wr_ops, nr_write_request);
+}
 
 // ===================
 // metadata cache stuff
@@ -1523,6 +1620,7 @@ mds_rank_t Client::choose_target_mds(MetaRequest *req, Inode** phash_diri)
   mds_rank_t mds = MDS_RANK_NONE;
   __u32 hash = 0;
   bool is_hash = false;
+  int issued = 0;
 
   Inode *in = NULL;
   Dentry *de = NULL;
@@ -1583,9 +1681,12 @@ mds_rank_t Client::choose_target_mds(MetaRequest *req, Inode** phash_diri)
     ldout(cct, 20) << __func__ << " " << *in << " is_hash=" << is_hash
              << " hash=" << hash << dendl;
   
+    if (req->get_op() == CEPH_MDS_OP_GETATTR)
+      issued = req->inode()->caps_issued();
+
     if (is_hash && S_ISDIR(in->mode) && (!in->fragmap.empty() || !in->frag_repmap.empty())) {
       frag_t fg = in->dirfragtree[hash];
-      if (!req->auth_is_best()) {
+      if (!req->auth_is_best(issued)) {
         auto repmapit = in->frag_repmap.find(fg);
         if (repmapit != in->frag_repmap.end()) {
           auto& repmap = repmapit->second;
@@ -1606,7 +1707,7 @@ mds_rank_t Client::choose_target_mds(MetaRequest *req, Inode** phash_diri)
       }
     }
   
-    if (in->auth_cap && req->auth_is_best()) {
+    if (in->auth_cap && req->auth_is_best(issued)) {
       mds = in->auth_cap->session->mds_num;
     } else if (!in->caps.empty()) {
       mds = in->caps.begin()->second.session->mds_num;
@@ -1791,6 +1892,7 @@ int Client::make_request(MetaRequest *request,
 
   // and timestamp
   request->op_stamp = ceph_clock_now();
+  request->created = ceph::coarse_mono_clock::now();
 
   // make note
   mds_requests[tid] = request->get();
@@ -1916,8 +2018,9 @@ int Client::make_request(MetaRequest *request,
   utime_t lat = ceph_clock_now();
   lat -= request->sent_stamp;
   ldout(cct, 20) << "lat " << lat << dendl;
-  logger->tinc(l_c_lat, lat);
-  logger->tinc(l_c_reply, lat);
+
+  ++nr_metadata_request;
+  update_io_stat_metadata(lat);
 
   put_request(request);
   return r;
@@ -2536,25 +2639,6 @@ void Client::handle_client_reply(const MConstRef<MClientReply>& reply)
     return;
   }
 
-  if (-CEPHFS_ESTALE == reply->get_result()) { // see if we can get to proper MDS
-    ldout(cct, 20) << "got ESTALE on tid " << request->tid
-                  << " from mds." << request->mds << dendl;
-    request->send_to_auth = true;
-    request->resend_mds = choose_target_mds(request);
-    Inode *in = request->inode();
-    std::map<mds_rank_t, Cap>::const_iterator it;
-    if (request->resend_mds >= 0 &&
-       request->resend_mds == request->mds &&
-       (in == NULL ||
-         (it = in->caps.find(request->resend_mds)) != in->caps.end() ||
-         request->sent_on_mseq == it->second.mseq)) {
-      ldout(cct, 20) << "have to return ESTALE" << dendl;
-    } else {
-      request->caller_cond->notify_all();
-      return;
-    }
-  }
-  
   ceph_assert(!request->reply);
   request->reply = reply;
   insert_trace(request, session.get());
@@ -3542,8 +3626,8 @@ int Client::get_caps_used(Inode *in)
 void Client::cap_delay_requeue(Inode *in)
 {
   ldout(cct, 10) << __func__ << " on " << *in << dendl;
-  in->hold_caps_until = ceph_clock_now();
-  in->hold_caps_until += cct->_conf->client_caps_release_delay;
+
+  in->hold_caps_until = ceph::coarse_mono_clock::now() + caps_release_delay;
   delayed_list.push_back(&in->delay_cap_item);
 }
 
@@ -4820,10 +4904,20 @@ void Client::invalidate_snaprealm_and_children(SnapRealm *realm)
 SnapRealm *Client::get_snap_realm(inodeno_t r)
 {
   SnapRealm *realm = snap_realms[r];
-  if (!realm)
+
+  ldout(cct, 20) << __func__ << " " << r << " " << realm << ", nref was "
+                 << (realm ? realm->nref : 0) << dendl;
+  if (!realm) {
     snap_realms[r] = realm = new SnapRealm(r);
-  ldout(cct, 20) << __func__ << " " << r << " " << realm << " " << realm->nref << " -> " << (realm->nref + 1) << dendl;
+
+    // Do not release the global snaprealm until unmounting.
+    if (r == CEPH_INO_GLOBAL_SNAPREALM)
+      realm->nref++;
+  }
+
   realm->nref++;
+  ldout(cct, 20) << __func__ << " " << r << " " << realm << ", nref now is "
+                 << realm->nref << dendl;
   return realm;
 }
 
@@ -5589,8 +5683,10 @@ void Client::handle_cap_grant(MetaSession *session, Inode *in, Cap *cap, const M
 int Client::inode_permission(Inode *in, const UserPerm& perms, unsigned want)
 {
   if (perms.uid() == 0) {
-    // Executable are overridable when there is at least one exec bit set
-    if((want & MAY_EXEC) && !(in->mode & S_IXUGO))
+    // For directories, DACs are overridable.
+    // For files, Read/write DACs are always overridable but executable DACs are
+    // overridable when there is at least one exec bit set
+    if(!S_ISDIR(in->mode) && (want & MAY_EXEC) && !(in->mode & S_IXUGO))
       return -CEPHFS_EACCES;
     return 0;
   }
@@ -5937,7 +6033,7 @@ int Client::authenticate()
   }
 
   client_lock.unlock();
-  int r = monclient->authenticate(cct->_conf->client_mount_timeout);
+  int r = monclient->authenticate(std::chrono::duration<double>(mount_timeout).count());
   client_lock.lock();
   if (r < 0) {
     return r;
@@ -6506,6 +6602,13 @@ void Client::_unmount(bool abort)
 
   _close_sessions();
 
+  // release the global snapshot realm
+  SnapRealm *global_realm = snap_realms[CEPH_INO_GLOBAL_SNAPREALM];
+  if (global_realm) {
+    ceph_assert(global_realm->nref == 1);
+    put_snap_realm(global_realm);
+  }
+
   mref_writer.update_state(CLIENT_UNMOUNTED);
 
   ldout(cct, 2) << "unmounted." << dendl;
@@ -6551,8 +6654,8 @@ void Client::renew_and_flush_cap_releases()
 
   if (!mount_aborted && mdsmap->get_epoch()) {
     // renew caps?
-    utime_t el = ceph_clock_now() - last_cap_renew;
-    if (unlikely(el > mdsmap->get_session_timeout() / 3.0))
+    auto el = ceph::coarse_mono_clock::now() - last_cap_renew;
+    if (unlikely(utime_t(el) > mdsmap->get_session_timeout() / 3.0))
       renew_caps();
 
     flush_cap_releases();
@@ -6563,7 +6666,7 @@ void Client::tick()
 {
   ldout(cct, 20) << "tick" << dendl;
 
-  utime_t now = ceph_clock_now();
+  auto now = ceph::coarse_mono_clock::now();
 
   /*
    * If the mount() is not finished
@@ -6571,7 +6674,7 @@ void Client::tick()
   if (is_mounting() && !mds_requests.empty()) {
     MetaRequest *req = mds_requests.begin()->second;
 
-    if (req->op_stamp + cct->_conf->client_mount_timeout < now) {
+    if (req->created + mount_timeout < now) {
       req->abort(-CEPHFS_ETIMEDOUT);
       if (req->caller_cond) {
         req->kick = true;
@@ -6605,7 +6708,7 @@ void Client::tick()
   trim_cache(true);
 
   if (blocklisted && (is_mounted() || is_unmounting()) &&
-      last_auto_reconnect + 30 * 60 < now &&
+      last_auto_reconnect + std::chrono::seconds(30 * 60) < now &&
       cct->_conf.get_val<bool>("client_reconnect_stale")) {
     messenger->client_reset();
     fd_gen++; // invalidate open files
@@ -6677,21 +6780,30 @@ void Client::collect_and_send_global_metrics() {
   // read latency
   if (_collect_and_send_global_metrics ||
       session->mds_metric_flags.test(CLIENT_METRIC_TYPE_READ_LATENCY)) {
-    metric = ClientMetricMessage(ReadLatencyPayload(logger->tget(l_c_read)));
+    metric = ClientMetricMessage(ReadLatencyPayload(logger->tget(l_c_read),
+                                                    logger->tget(l_c_rd_avg),
+                                                    logger->get(l_c_rd_sqsum),
+                                                    nr_read_request));
     message.push_back(metric);
   }
 
   // write latency
   if (_collect_and_send_global_metrics ||
       session->mds_metric_flags.test(CLIENT_METRIC_TYPE_WRITE_LATENCY)) {
-    metric = ClientMetricMessage(WriteLatencyPayload(logger->tget(l_c_wrlat)));
+    metric = ClientMetricMessage(WriteLatencyPayload(logger->tget(l_c_wrlat),
+                                                    logger->tget(l_c_wr_avg),
+                                                    logger->get(l_c_wr_sqsum),
+                                                    nr_write_request));
     message.push_back(metric);
   }
 
   // metadata latency
   if (_collect_and_send_global_metrics ||
       session->mds_metric_flags.test(CLIENT_METRIC_TYPE_METADATA_LATENCY)) {
-    metric = ClientMetricMessage(MetadataLatencyPayload(logger->tget(l_c_lat)));
+    metric = ClientMetricMessage(MetadataLatencyPayload(logger->tget(l_c_lat),
+                                                        logger->tget(l_c_md_avg),
+                                                        logger->get(l_c_md_sqsum),
+                                                        nr_metadata_request));
     message.push_back(metric);
   }
 
@@ -6757,7 +6869,7 @@ void Client::collect_and_send_global_metrics() {
 void Client::renew_caps()
 {
   ldout(cct, 10) << "renew_caps()" << dendl;
-  last_cap_renew = ceph_clock_now();
+  last_cap_renew = ceph::coarse_mono_clock::now();
 
   for (auto &p : mds_sessions) {
     ldout(cct, 15) << "renew_caps requesting from mds." << p.first << dendl;
@@ -7964,11 +8076,11 @@ unsigned Client::statx_to_mask(unsigned int flags, unsigned int want)
 {
   unsigned mask = 0;
 
-  /* if NO_ATTR_SYNC is set, then we don't need any -- just use what's in cache */
-  if (flags & AT_NO_ATTR_SYNC)
+  /* The AT_STATX_FORCE_SYNC is always in higher priority than AT_STATX_DONT_SYNC. */
+  if ((flags & AT_STATX_SYNC_TYPE) == AT_STATX_DONT_SYNC)
     goto out;
 
-  /* Always set PIN to distinguish from AT_NO_ATTR_SYNC case */
+  /* Always set PIN to distinguish from AT_STATX_DONT_SYNC case */
   mask |= CEPH_CAP_PIN;
   if (want & (CEPH_STATX_MODE|CEPH_STATX_UID|CEPH_STATX_GID|CEPH_STATX_BTIME|CEPH_STATX_CTIME|CEPH_STATX_VERSION))
     mask |= CEPH_CAP_AUTH_SHARED;
@@ -8096,7 +8208,7 @@ void Client::fill_statx(Inode *in, unsigned int mask, struct ceph_statx *stx)
   memset(stx, 0, sizeof(struct ceph_statx));
 
   /*
-   * If mask is 0, then the caller set AT_NO_ATTR_SYNC. Reset the mask
+   * If mask is 0, then the caller set AT_STATX_DONT_SYNC. Reset the mask
    * so that all bits are set.
    */
   if (!mask)
@@ -10100,7 +10212,9 @@ success:
   
   lat = ceph_clock_now();
   lat -= start;
-  logger->tinc(l_c_read, lat);
+
+  ++nr_read_request;
+  update_io_stat_read(lat);
 
 done:
   // done!
@@ -10382,12 +10496,13 @@ int64_t Client::_write(Fh *f, int64_t offset, uint64_t size, const char *buf,
   ceph_assert(ceph_mutex_is_locked_by_me(client_lock));
 
   uint64_t fpos = 0;
+  Inode *in = f->inode.get();
 
-  if ((uint64_t)(offset+size) > mdsmap->get_max_filesize()) //too large!
-    return -CEPHFS_EFBIG;
-
+  if ( (uint64_t)(offset+size) > mdsmap->get_max_filesize() && //exceeds config
+       (uint64_t)(offset+size) > in->size ) { //exceeds filesize 
+      return -CEPHFS_EFBIG;              
+       }
   //ldout(cct, 7) << "write fh " << fh << " size " << size << " offset " << offset << dendl;
-  Inode *in = f->inode.get();
 
   if (objecter->osdmap_pool_full(in->layout.pool_id)) {
     return -CEPHFS_ENOSPC;
@@ -10560,7 +10675,9 @@ success:
   // time
   lat = ceph_clock_now();
   lat -= start;
-  logger->tinc(l_c_wrlat, lat);
+
+  ++nr_write_request;
+  update_io_stat_write(lat);
 
   if (fpos) {
     lock_fh_pos(f);
@@ -11001,9 +11118,9 @@ int Client::statfs(const char *path, struct statvfs *stbuf,
   ceph_assert(root != nullptr);
   InodeRef quota_root = root->quota.is_enable() ? root : get_quota_root(root.get(), perms);
 
-  // get_quota_root should always give us something
-  // because client quotas are always enabled
-  ceph_assert(quota_root != nullptr);
+  // get_quota_root should always give us something if client quotas are
+  // enabled
+  ceph_assert(cct->_conf.get_val<bool>("client_quota") == false || quota_root != nullptr);
 
   if (quota_root && cct->_conf->client_quota_df && quota_root->quota.max_bytes) {
 
@@ -13819,7 +13936,7 @@ int Client::_rename(Inode *fromdir, const char *fromname, Inode *todir, const ch
     else
       return -CEPHFS_EROFS;
   }
-  if (fromdir != todir) {
+  if (cct->_conf.get_val<bool>("client_quota") && fromdir != todir) {
     Inode *fromdir_root =
       fromdir->quota.is_enable() ? fromdir : get_quota_root(fromdir, perm);
     Inode *todir_root =
@@ -15222,6 +15339,10 @@ Inode *Client::get_quota_root(Inode *in, const UserPerm& perms)
 {
   Inode *quota_in = root_ancestor;
   SnapRealm *realm = in->snaprealm;
+
+  if (!cct->_conf.get_val<bool>("client_quota"))
+    return NULL;
+
   while (realm) {
     ldout(cct, 10) << __func__ << " realm " << realm->ino << dendl;
     if (realm->ino != in->ino) {
@@ -15247,6 +15368,9 @@ Inode *Client::get_quota_root(Inode *in, const UserPerm& perms)
 bool Client::check_quota_condition(Inode *in, const UserPerm& perms,
                                   std::function<bool (const Inode &in)> test)
 {
+  if (!cct->_conf.get_val<bool>("client_quota"))
+    return false;
+
   while (true) {
     ceph_assert(in != NULL);
     if (test(*in)) {
@@ -15715,6 +15839,8 @@ const char** Client::get_tracked_conf_keys() const
     "client_oc_max_dirty",
     "client_oc_target_dirty",
     "client_oc_max_dirty_age",
+    "client_caps_release_delay",
+    "client_mount_timeout",
     NULL
   };
   return keys;
@@ -15752,6 +15878,14 @@ void Client::handle_conf_change(const ConfigProxy& conf,
     _collect_and_send_global_metrics = cct->_conf.get_val<bool>(
       "client_collect_and_send_global_metrics");
   }
+  if (changed.count("client_caps_release_delay")) {
+    caps_release_delay = cct->_conf.get_val<std::chrono::seconds>(
+      "client_caps_release_delay");
+  }
+  if (changed.count("client_mount_timeout")) {
+    mount_timeout = cct->_conf.get_val<std::chrono::seconds>(
+      "client_mount_timeout");
+  }
 }
 
 void intrusive_ptr_add_ref(Inode *in)
index 84fc15d3fe87968bfac04aa0402b848763e8ac97..3d0985964e78cd9c4a0f2f32325f75ac2d165a5c 100644 (file)
@@ -77,6 +77,15 @@ enum {
   l_c_wrlat,
   l_c_read,
   l_c_fsync,
+  l_c_md_avg,
+  l_c_md_sqsum,
+  l_c_md_ops,
+  l_c_rd_avg,
+  l_c_rd_sqsum,
+  l_c_rd_ops,
+  l_c_wr_avg,
+  l_c_wr_sqsum,
+  l_c_wr_ops,
   l_c_last,
 };
 
@@ -344,7 +353,7 @@ public:
    * If @a cb returns a negative error code, stop and return that.
    */
   int readdir_r_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p,
-                  unsigned want=0, unsigned flags=AT_NO_ATTR_SYNC,
+                  unsigned want=0, unsigned flags=AT_STATX_DONT_SYNC,
                   bool getref=false);
 
   struct dirent * readdir(dir_result_t *d);
@@ -1457,6 +1466,10 @@ private:
   void collect_and_send_metrics();
   void collect_and_send_global_metrics();
 
+  void update_io_stat_metadata(utime_t latency);
+  void update_io_stat_read(utime_t latency);
+  void update_io_stat_write(utime_t latency);
+
   uint32_t deleg_timeout = 0;
 
   client_switch_interrupt_callback_t switch_interrupt_cb = nullptr;
@@ -1475,7 +1488,7 @@ private:
   Finisher async_ino_releasor;
   Finisher objecter_finisher;
 
-  utime_t last_cap_renew;
+  ceph::coarse_mono_time last_cap_renew;
 
   CommandHook m_command_hook;
 
@@ -1536,8 +1549,8 @@ private:
   ceph::unordered_map<inodeno_t,SnapRealm*> snap_realms;
   std::map<std::string, std::string> metadata;
 
-  utime_t last_auto_reconnect;
-
+  ceph::coarse_mono_time last_auto_reconnect;
+  std::chrono::seconds caps_release_delay, mount_timeout;
   // trace generation
   std::ofstream traceout;
 
@@ -1574,6 +1587,10 @@ private:
 
   ceph::spinlock delay_i_lock;
   std::map<Inode*,int> delay_i_release;
+
+  uint64_t nr_metadata_request = 0;
+  uint64_t nr_read_request = 0;
+  uint64_t nr_write_request = 0;
 };
 
 /**
index eddfb6da9a69a4875b16aea15b7b819c6b59e0b3..665f4b76af88ca6ee048faea8c1739c9fb9b4b48 100644 (file)
@@ -115,6 +115,7 @@ struct CapSnap {
 #define I_ERROR_FILELOCK       (1 << 5)
 
 struct Inode : RefCountedObject {
+  ceph::coarse_mono_time hold_caps_until;
   Client *client;
 
   // -- the actual inode --
@@ -211,7 +212,6 @@ struct Inode : RefCountedObject {
   int cache_gen = 0;
   int snap_caps = 0;
   int snap_cap_refs = 0;
-  utime_t hold_caps_until;
   xlist<Inode*>::item delay_cap_item, dirty_cap_item, flushing_cap_item;
 
   SnapRealm *snaprealm = 0;
index 630f5ee15bc879ba5c039a441aa2057a6de508c7..4dc8a53b8723479daa7459631ff36a794be4868b 100644 (file)
@@ -25,6 +25,7 @@ private:
   Dentry *_old_dentry = NULL; //associated with path2
   int abort_rc = 0;
 public:
+  ceph::coarse_mono_time created = ceph::coarse_mono_clock::zero();
   uint64_t tid = 0;
   utime_t  op_stamp;
   ceph_mds_request_head head;
@@ -186,12 +187,45 @@ public:
       return false;
     return true;
   }
-  bool auth_is_best() {
-    if ((head.op & CEPH_MDS_OP_WRITE) || head.op == CEPH_MDS_OP_OPEN ||
-        (head.op == CEPH_MDS_OP_GETATTR && (head.args.getattr.mask & CEPH_STAT_RSTAT)) ||
-       head.op == CEPH_MDS_OP_READDIR || send_to_auth) 
+  bool auth_is_best(int issued) {
+    if (send_to_auth)
       return true;
-    return false;    
+
+    /* Any write op ? */
+    if (head.op & CEPH_MDS_OP_WRITE)
+      return true;
+
+    switch (head.op) {
+    case CEPH_MDS_OP_OPEN:
+    case CEPH_MDS_OP_READDIR:
+      return true;
+    case CEPH_MDS_OP_GETATTR:
+      /*
+       * If any 'x' caps is issued we can just choose the auth MDS
+       * instead of the random replica MDSes. Because only when the
+       * Locker is in LOCK_EXEC state will the loner client could
+       * get the 'x' caps. And if we send the getattr requests to
+       * any replica MDS it must auth pin and tries to rdlock from
+       * the auth MDS, and then the auth MDS need to do the Locker
+       * state transition to LOCK_SYNC. And after that the lock state
+       * will change back.
+       *
+       * This cost much when doing the Locker state transition and
+       * usually will need to revoke caps from clients.
+       *
+       * And for the 'Xs' caps for getxattr we will also choose the
+       * auth MDS, because the MDS side code is buggy due to setxattr
+       * won't notify the replica MDSes when the values changed and
+       * the replica MDS will return the old values. Though we will
+       * fix it in MDS code, but this still makes sense for old ceph.
+       */
+      if (((head.args.getattr.mask & CEPH_CAP_ANY_SHARED) &&
+          (issued & CEPH_CAP_ANY_EXCL)) ||
+          (head.args.getattr.mask & (CEPH_STAT_RSTAT | CEPH_STAT_CAP_XATTR)))
+        return true;
+    default:
+      return false;
+    }
   }
 
   void dump(Formatter *f) const;
index ee81752721c6bbffddcd6a9469827cb39a929239..2f4cd28b340791c0e0715680139b8fba2b799a1a 100644 (file)
@@ -52,6 +52,8 @@
 #define FINO_STAG(x) ((x) >> 48)
 #define MAKE_FINO(i,s) ((i) | ((int64_t)(s) << 48))
 #define STAG_MASK 0xffff
+#define G_NOSNAP_STAG   0 // for all CEPH_NOSNAP
+#define G_SNAPDIR_STAG  1 // for all CEPH_SNAPDIR
 
 #define MINORBITS      20
 #define MINORMASK      ((1U << MINORBITS) - 1)
 #define _CEPH_CLIENT_ID        "ceph.client_id"
 #endif
 
+/*
+ * The dedicated struct for snapid <-> stag map for each ceph
+ * inode, and the stag is a number in range [2, 0xffff], and
+ * the stag number 0 is reserved for CEPH_NOSNAP and 1 is
+ * reserved for CEPH_SNAPDIR.
+ */
+struct ceph_fuse_fake_inode_stag {
+  ceph::unordered_map<uint64_t,int> snap_stag_map;  // <snapid, stagid>
+  ceph::unordered_map<int, uint64_t> stag_snap_map; // <stagid, snapid>
+  int last_stag = 1;
+};
+
 using namespace std;
 
 static const ceph::unordered_map<int,int> cephfs_errno_to_system_errno = {
@@ -156,20 +170,19 @@ public:
   int fd_on_success;
   Client *client;
 
-  struct fuse_session *se;
+  struct fuse_session *se = nullptr;
 #if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
   struct fuse_cmdline_opts opts;
   struct fuse_conn_info_opts *conn_opts;
 #else
-  struct fuse_chan *ch;
-  char *mountpoint;
+  struct fuse_chan *ch = nullptr;
+  char *mountpoint = nullptr;
 #endif
 
   ceph::mutex stag_lock = ceph::make_mutex("fuse_ll.cc stag_lock");
-  int last_stag;
 
-  ceph::unordered_map<uint64_t,int> snap_stag_map;
-  ceph::unordered_map<int,uint64_t> stag_snap_map;
+  // a map of <ceph ino, fino stag/snapid map>
+  ceph::unordered_map<uint64_t, struct ceph_fuse_fake_inode_stag> g_fino_maps;
 
   pthread_key_t fuse_req_key = 0;
   void set_fuse_req(fuse_req_t);
@@ -351,7 +364,9 @@ static void fuse_ll_forget(fuse_req_t req, fuse_ino_t ino,
 #endif
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
-  cfuse->client->ll_forget(cfuse->iget(ino), nlookup+1);
+  Inode *in = cfuse->iget(ino);
+  if (in)
+    cfuse->client->ll_forget(in, nlookup+1);
   fuse_reply_none(req);
 }
 
@@ -360,11 +375,16 @@ static void fuse_ll_getattr(fuse_req_t req, fuse_ino_t ino,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   struct stat stbuf;
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
-  
+
   (void) fi; // XXX
 
   if (cfuse->client->ll_getattr(in, &stbuf, perms)
@@ -383,8 +403,13 @@ static void fuse_ll_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int mask = 0;
@@ -420,8 +445,13 @@ static void fuse_ll_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_setxattr(in, name, value, size, flags, perms);
@@ -434,9 +464,14 @@ static void fuse_ll_listxattr(fuse_req_t req, fuse_ino_t ino, size_t size)
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   char buf[size];
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_listxattr(in, buf, size, perms);
@@ -459,9 +494,14 @@ static void fuse_ll_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   char buf[size];
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_getxattr(in, name, buf, size, perms);
@@ -480,8 +520,13 @@ static void fuse_ll_removexattr(fuse_req_t req, fuse_ino_t ino,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_removexattr(in, name, perms);
@@ -495,10 +540,14 @@ static void fuse_ll_opendir(fuse_req_t req, fuse_ino_t ino,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
+  UserPerm perms(ctx->uid, ctx->gid);
   void *dirp;
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
 
-  UserPerm perms(ctx->uid, ctx->gid);
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_opendir(in, fi->flags, (dir_result_t **)&dirp,
@@ -517,11 +566,15 @@ static void fuse_ll_readlink(fuse_req_t req, fuse_ino_t ino)
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   char buf[PATH_MAX + 1];  // leave room for a null terminator
   UserPerm perms(ctx->uid, ctx->gid);
-  get_fuse_groups(perms, req);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
 
+  get_fuse_groups(perms, req);
   int r = cfuse->client->ll_readlink(in, buf, sizeof(buf) - 1, perms);
   if (r >= 0) {
     buf[r] = '\0';
@@ -538,9 +591,14 @@ static void fuse_ll_mknod(fuse_req_t req, fuse_ino_t parent, const char *name,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *i2, *i1 = cfuse->iget(parent);
   struct fuse_entry_param fe;
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *i2, *i1 = cfuse->iget(parent);
+  if (!i1) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   memset(&fe, 0, sizeof(fe));
@@ -600,6 +658,11 @@ static void fuse_ll_mkdir(fuse_req_t req, fuse_ino_t parent, const char *name,
 #endif
 
   i1 = cfuse->iget(parent);
+  if (!i1) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   int r = cfuse->client->ll_mkdir(i1, name, mode, &fe.attr, &i2, perm);
   if (r == 0) {
     fe.ino = cfuse->make_fake_ino(fe.attr.st_ino, fe.attr.st_dev);
@@ -618,8 +681,13 @@ static void fuse_ll_unlink(fuse_req_t req, fuse_ino_t parent, const char *name)
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(parent);
   UserPerm perm(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(parent);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perm, req);
 
   int r = cfuse->client->ll_unlink(in, name, perm);
@@ -632,8 +700,13 @@ static void fuse_ll_rmdir(fuse_req_t req, fuse_ino_t parent, const char *name)
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(parent);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(parent);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_rmdir(in, name, perms);
@@ -647,9 +720,14 @@ static void fuse_ll_symlink(fuse_req_t req, const char *existing,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *i2, *i1 = cfuse->iget(parent);
   struct fuse_entry_param fe;
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *i2, *i1 = cfuse->iget(parent);
+  if (!i1) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   memset(&fe, 0, sizeof(fe));
@@ -677,9 +755,14 @@ static void fuse_ll_rename(fuse_req_t req, fuse_ino_t parent, const char *name,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
+  UserPerm perm(ctx->uid, ctx->gid);
   Inode *in = cfuse->iget(parent);
   Inode *nin = cfuse->iget(newparent);
-  UserPerm perm(ctx->uid, ctx->gid);
+  if (!in || !nin) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perm, req);
 
   int r = cfuse->client->ll_rename(in, name, nin, newname, perm);
@@ -694,14 +777,18 @@ static void fuse_ll_link(fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
+  struct fuse_entry_param fe;
   Inode *in = cfuse->iget(ino);
   Inode *nin = cfuse->iget(newparent);
-  struct fuse_entry_param fe;
+  if (!in || !nin) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
 
   memset(&fe, 0, sizeof(fe));
   UserPerm perm(ctx->uid, ctx->gid);
   get_fuse_groups(perm, req);
-  
+
   /*
    * Note that we could successfully link, but then fail the subsequent
    * getattr and return an error. Perhaps we should ignore getattr errors,
@@ -736,9 +823,14 @@ static void fuse_ll_open(fuse_req_t req, fuse_ino_t ino,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   Fh *fh = NULL;
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_open(in, fi->flags, &fh, perms);
@@ -930,10 +1022,14 @@ static void fuse_ll_readdir(fuse_req_t req, fuse_ino_t ino, size_t size,
 
   struct readdir_context rc;
   rc.req = req;
+  rc.snap = cfuse->fino_snap(ino);
+  if (rc.snap == CEPH_MAXSNAP) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
   rc.buf = new char[size];
   rc.size = size;
   rc.pos = 0;
-  rc.snap = cfuse->fino_snap(ino);
 
   int r = cfuse->client->readdir_r_cb(dirp, fuse_ll_add_dirent, &rc);
   if (r == 0 || r == -CEPHFS_ENOSPC)  /* ignore ENOSPC from our callback */
@@ -965,8 +1061,13 @@ static void fuse_ll_access(fuse_req_t req, fuse_ino_t ino, int mask)
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *in = cfuse->iget(ino);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->inode_permission(in, perms, mask);
@@ -979,10 +1080,15 @@ static void fuse_ll_create(fuse_req_t req, fuse_ino_t parent, const char *name,
 {
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
-  Inode *i1 = cfuse->iget(parent), *i2;
   struct fuse_entry_param fe;
   Fh *fh = NULL;
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *i1 = cfuse->iget(parent), *i2;
+  if (!i1) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   memset(&fe, 0, sizeof(fe));
@@ -1015,9 +1121,14 @@ static void fuse_ll_statfs(fuse_req_t req, fuse_ino_t ino)
 {
   struct statvfs stbuf;
   CephFuse::Handle *cfuse = fuse_ll_req_prepare(req);
-  Inode *in = cfuse->iget(ino);
   const struct fuse_ctx *ctx = fuse_req_ctx(req);
   UserPerm perms(ctx->uid, ctx->gid);
+  Inode *in = cfuse->iget(ino);
+  if (!in) {
+    fuse_reply_err(req, get_sys_errno(CEPHFS_EINVAL));
+    return;
+  }
+
   get_fuse_groups(perms, req);
 
   int r = cfuse->client->ll_statfs(in, &stbuf, perms);
@@ -1259,16 +1370,8 @@ const static struct fuse_lowlevel_ops fuse_ll_oper = {
 
 CephFuse::Handle::Handle(Client *c, int fd) :
   fd_on_success(fd),
-  client(c),
-  se(NULL),
-#if FUSE_VERSION < FUSE_MAKE_VERSION(3, 0)
-  ch(NULL),
-  mountpoint(NULL),
-#endif
-  last_stag(0)
+  client(c)
 {
-  snap_stag_map[CEPH_NOSNAP] = 0;
-  stag_snap_map[0] = CEPH_NOSNAP;
   memset(&args, 0, sizeof(args));
 #if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
   memset(&opts, 0, sizeof(opts));
@@ -1528,8 +1631,25 @@ uint64_t CephFuse::Handle::fino_snap(uint64_t fino)
   } else {
     std::lock_guard l(stag_lock);
     uint64_t stag = FINO_STAG(fino);
-    ceph_assert(stag_snap_map.count(stag));
-    return stag_snap_map[stag];
+    if (stag == 0)
+      return CEPH_NOSNAP;
+    else if (stag == 1)
+      return CEPH_SNAPDIR;
+
+    inodeno_t ino = FINO_INO(fino);
+
+    // does the fino_maps for the ino exist ?
+    if (!g_fino_maps.count(ino))
+      return CEPH_MAXSNAP;
+
+    auto &fino_maps = g_fino_maps[ino];
+
+    // does the stagid <--> snapid map exist ?
+    if (!fino_maps.stag_snap_map.count(stag))
+      return CEPH_MAXSNAP;
+
+    // get the snapid
+    return fino_maps.stag_snap_map[stag];
   }
 }
 
@@ -1541,14 +1661,17 @@ Inode * CephFuse::Handle::iget(fuse_ino_t fino)
   if (client->use_faked_inos()) {
     return client->ll_get_inode((ino_t)fino);
   } else {
-    vinodeno_t vino(FINO_INO(fino), fino_snap(fino));
+    uint64_t snap = fino_snap(fino);
+    if (snap == CEPH_MAXSNAP)
+      return NULL;
+    vinodeno_t vino(FINO_INO(fino), snap);
     return client->ll_get_inode(vino);
   }
 }
 
 void CephFuse::Handle::iput(Inode *in)
 {
-    client->ll_put(in);
+  client->ll_put(in);
 }
 
 uint64_t CephFuse::Handle::make_fake_ino(inodeno_t ino, snapid_t snapid)
@@ -1563,35 +1686,57 @@ uint64_t CephFuse::Handle::make_fake_ino(inodeno_t ino, snapid_t snapid)
     if (snapid == CEPH_NOSNAP && ino == client->get_root_ino())
       return FUSE_ROOT_ID;
 
-    std::lock_guard l(stag_lock);
-    auto p = snap_stag_map.find(snapid);
-    if (p != snap_stag_map.end()) {
-      inodeno_t fino = MAKE_FINO(ino, p->second);
-      return fino;
-    }
+    int stag;
+    if (snapid == CEPH_NOSNAP) {
+      stag = G_NOSNAP_STAG;
+    } else if (snapid == CEPH_SNAPDIR) {
+      stag = G_SNAPDIR_STAG;
+    } else {
+      std::lock_guard l(stag_lock);
+      auto &fino_maps = g_fino_maps[ino]; // will insert it anyway if not exists
 
-    int first = last_stag & STAG_MASK;
-    int stag =  (++last_stag) & STAG_MASK;
-    for (; stag != first; stag = (++last_stag) & STAG_MASK) {
-      if (stag == 0)
-       continue;
-
-      auto p = stag_snap_map.find(stag);
-      if (p == stag_snap_map.end()) {
-       snap_stag_map[snapid] = stag;
-       stag_snap_map[stag] = snapid;
-       break;
+      // already exist ?
+      if (fino_maps.snap_stag_map.count(snapid)) {
+        inodeno_t fino = MAKE_FINO(ino, fino_maps.snap_stag_map[snapid]);
+        return fino;
       }
 
-      if (!client->ll_get_snap_ref(p->second)) {
-       snap_stag_map.erase(p->second);
-       snap_stag_map[snapid] = stag;
-       p->second = snapid;
-       break;
+      // create a new snapid <--> stagid map
+      int first = fino_maps.last_stag & STAG_MASK;
+      stag =  (++fino_maps.last_stag) & STAG_MASK;
+      for (; stag != first; stag = (++fino_maps.last_stag) & STAG_MASK) {
+        // stag 0 is reserved for CEPH_NOSNAP and 1 for CEPH_SNAPDIR
+        if (stag == 0 || stag == 1)
+          continue;
+
+        // the new stag is not used ?
+        if (!fino_maps.stag_snap_map.count(stag)) {
+          fino_maps.snap_stag_map[snapid] = stag;
+          fino_maps.stag_snap_map[stag] = snapid;
+          break;
+        }
+
+        // the stag is already used by a snpaid,
+        // try to free it
+        auto _snapid = fino_maps.stag_snap_map[stag];
+        if (!client->ll_get_snap_ref(_snapid)) {
+          fino_maps.snap_stag_map.erase(_snapid);
+          fino_maps.snap_stag_map[snapid] = stag;
+          fino_maps.stag_snap_map[stag] = snapid;
+          break;
+        }
+      }
+      if (stag == first) {
+        /*
+         * It shouldn't be here because the max snapshots for each
+         * directory is 4_K, and here we have around 64_K, which is
+         * from 0xffff - 2, stags could be used for each directory.
+         *
+         * More detail please see mds 'mds_max_snaps_per_dir' option.
+         */
+        ceph_abort_msg("run out of stag");
       }
     }
-    if (stag == first)
-      ceph_abort_msg("run out of stag");
 
     inodeno_t fino = MAKE_FINO(ino, stag);
     //cout << "make_fake_ino " << ino << "." << snapid << " -> " << fino << std::endl;
index d3f283a0b070b0613c5c32c8ee4666e82fba8e6f..596e722871f1bb761287db401993f16022ef5064 100644 (file)
@@ -388,7 +388,7 @@ int CephBroker::rmdir_recursive(const char *directory) {
   int r;
   if ((r = ceph_opendir(cmount, directory, &dirp)) < 0)
     return r; //failed to open
-  while ((r = ceph_readdirplus_r(cmount, dirp, &de, &stx, CEPH_STATX_INO, AT_NO_ATTR_SYNC, NULL)) > 0) {
+  while ((r = ceph_readdirplus_r(cmount, dirp, &de, &stx, CEPH_STATX_INO, AT_STATX_DONT_SYNC, NULL)) > 0) {
     String new_dir = de.d_name;
     if(!(new_dir.compare(".")==0 || new_dir.compare("..")==0)) {
       new_dir = directory;
index ce424f7c36a1eb296a3b17d9faace3f0e1761b4a..e47f227777b8f76c67c3efff6ddec0ba0337ebb4 100644 (file)
@@ -1001,12 +1001,16 @@ std::ostream& operator<<(std::ostream& os, const MirrorSnapshotNamespace& ns) {
   os << "[" << SNAPSHOT_NAMESPACE_TYPE_MIRROR << " "
      << "state=" << ns.state << ", "
      << "complete=" << ns.complete << ", "
-     << "mirror_peer_uuids=" << ns.mirror_peer_uuids << ", "
-     << "primary_mirror_uuid=" << ns.primary_mirror_uuid << ", "
-     << "primary_snap_id=" << ns.primary_snap_id << ", "
-     << "last_copied_object_number=" << ns.last_copied_object_number << ", "
-     << "snap_seqs=" << ns.snap_seqs
-     << "]";
+     << "mirror_peer_uuids=" << ns.mirror_peer_uuids << ", ";
+  if (ns.is_primary()) {
+     os << "clean_since_snap_id=" << ns.clean_since_snap_id;
+  } else {
+     os << "primary_mirror_uuid=" << ns.primary_mirror_uuid << ", "
+        << "primary_snap_id=" << ns.primary_snap_id << ", "
+        << "last_copied_object_number=" << ns.last_copied_object_number << ", "
+        << "snap_seqs=" << ns.snap_seqs;
+  }
+  os << "]";
   return os;
 }
 
index e1f8705c9e6545f3b2277d0b45c068115e8f4b91..d658edd6af1296328716821f24da804934dd6ecc 100644 (file)
 #  include <openssl/err.h>
 #endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 namespace TOPNSPC::crypto::ssl {
 
 #if OPENSSL_VERSION_NUMBER < 0x10100000L
@@ -213,3 +219,6 @@ void ssl::OpenSSLDigest::Final(unsigned char *digest) {
 }
 
 }
+
+#pragma clang diagnostic pop
+#pragma GCC diagnostic pop
index 2feced03a99a5a1391489b4eee118bca563a7065..dd1b14ffab69ef10ced6213e82878a4da7b22a44 100644 (file)
 
 #include "include/ceph_assert.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 extern "C" {
   const EVP_MD *EVP_md5(void);
   const EVP_MD *EVP_sha1(void);
@@ -202,4 +208,7 @@ auto digest(const ceph::buffer::list& bl)
 }
 }
 
+#pragma clang diagnostic pop
+#pragma GCC diagnostic pop
+
 #endif
index 4029a5a9f159ce9f4ace47834ba7a21d33214aef..81777c7dbe2a0962a51685c76853f7b00a049881 100644 (file)
@@ -69,6 +69,9 @@ namespace ceph {
 // ============================================================================
 // debug (lockdep-capable, various sanity checks and asserts)
 // ============================================================================
+//
+// Note: this is known to cause deadlocks on Windows because
+// of the winpthreads shared mutex implementation.
 
 #include "common/condition_variable_debug.h"
 #include "common/mutex_debug.h"
@@ -115,27 +118,39 @@ namespace ceph {
 
 #include <condition_variable>
 #include <mutex>
-#include <shared_mutex>
 
+// The winpthreads shared mutex implementation is broken.
+// We'll use boost::shared_mutex instead.
+// https://github.com/msys2/MINGW-packages/issues/3319
+#if __MINGW32__
+#include <boost/thread/shared_mutex.hpp>
+#else
+#include <shared_mutex>
+#endif
 
 namespace ceph {
 
   typedef std::mutex mutex;
   typedef std::recursive_mutex recursive_mutex;
   typedef std::condition_variable condition_variable;
+
+#if __MINGW32__
+  typedef boost::shared_mutex shared_mutex;
+#else
   typedef std::shared_mutex shared_mutex;
+#endif
 
   // discard arguments to make_mutex (they are for debugging only)
   template <typename ...Args>
-  std::mutex make_mutex(Args&& ...args) {
+  mutex make_mutex(Args&& ...args) {
     return {};
   }
   template <typename ...Args>
-  std::recursive_mutex make_recursive_mutex(Args&& ...args) {
+  recursive_mutex make_recursive_mutex(Args&& ...args) {
     return {};
   }
   template <typename ...Args>
-  std::shared_mutex make_shared_mutex(Args&& ...args) {
+  shared_mutex make_shared_mutex(Args&& ...args) {
     return {};
   }
 
index 421222d535f8d81622eb63222059d66f5a26cb1d..a1375fbb91026877578cd5ebaebe5993b07f9104 100644 (file)
@@ -99,11 +99,12 @@ namespace ceph::dout {
 template<typename T>
 struct dynamic_marker_t {
   T value;
-  operator T() const { return value; }
+  // constexpr ctor isn't needed as it's an aggregate type
+  constexpr operator T() const { return value; }
 };
 
 template<typename T>
-dynamic_marker_t<T> need_dynamic(T&& t) {
+constexpr dynamic_marker_t<T> need_dynamic(T&& t) {
   return dynamic_marker_t<T>{ std::forward<T>(t) };
 }
 
index bb5f27e6b26b1106b6f2070fe6ef7bd34d213573..81d0c478651a6d9fd59d6f120d2a4e86ca560f9a 100644 (file)
@@ -113,7 +113,14 @@ void load_module(const string &engine_conf)
   }
 
   OPENSSL_load_builtin_modules();
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
   ENGINE_load_builtin_engines();
+#pragma clang diagnostic pop
+#pragma GCC diagnostic pop
 
   if (CONF_modules_load(
           conf, nullptr,
index d2104a0dad2671bb74c88147950f91206699e7b1..da24c673f6b374045d651be22aedee08a200a00b 100644 (file)
@@ -93,6 +93,7 @@ add_options(osd)
 add_options(rbd)
 add_options(rbd-mirror)
 add_options(immutable-object-cache)
+add_options(ceph-exporter)
 
 # if set to empty string, system default luarocks package location (if exist) will be used
 set(rgw_luarocks_location "")
index 001fac90287c04d6b1332a79464e38f0914036c4..867fc2efd7e1ba2ca80f6a376f664ca8a5ef4c56 100644 (file)
@@ -18,6 +18,7 @@ std::vector<Option> get_immutable_object_cache_options();
 std::vector<Option> get_mds_options();
 std::vector<Option> get_mds_client_options();
 std::vector<Option> get_cephfs_mirror_options();
+std::vector<Option> get_ceph_exporter_options();
 
 std::vector<Option> build_options()
 {
@@ -46,6 +47,7 @@ std::vector<Option> build_options()
   ingest(get_mds_options(), "mds");
   ingest(get_mds_client_options(), "mds_client");
   ingest(get_cephfs_mirror_options(), "cephfs-mirror");
+  ingest(get_ceph_exporter_options(), "ceph-exporter");
 
   return result;
 }
diff --git a/ceph/src/common/options/ceph-exporter.yaml.in b/ceph/src/common/options/ceph-exporter.yaml.in
new file mode 100644 (file)
index 0000000..798a185
--- /dev/null
@@ -0,0 +1,54 @@
+# -*- mode: YAML -*-
+---
+
+options:
+- name: exporter_sock_dir
+  type: str
+  level: advanced
+  desc: The path to ceph daemons socket files dir
+  default: /var/run/ceph/
+  services:
+  - ceph-exporter
+  flags:
+  - runtime
+- name: exporter_addr
+  type: str
+  level: advanced
+  desc: Host ip address where exporter is deployed
+  default: 0.0.0.0
+  services:
+  - ceph-exporter
+- name: exporter_http_port
+  type: int
+  level: advanced
+  desc: Port to deploy exporter on. Default is 9926
+  default: 9926
+  services:
+  - ceph-exporter
+- name: exporter_prio_limit
+  type: int
+  level: advanced
+  desc: Only perf counters greater than or equal to exporter_prio_limit are fetched
+  default: 5
+  services:
+  - ceph-exporter
+  flags:
+  - runtime
+- name: exporter_stats_period
+  type: int
+  level: advanced
+  desc: Time to wait before sending requests again to exporter server (seconds)
+  default: 5
+  services:
+  - ceph-exporter
+  flags:
+  - runtime
+- name: exporter_sort_metrics
+  type: bool
+  level: advanced
+  desc: If true it will sort the metrics and group them.
+  default: true
+  services:
+  - ceph-exporter
+  flags:
+  - runtime
index 1881130f8316f0abf12d35b7bed2f306cd417561..fa9327e5e3a7157587f35fed37772b63b81cdcca 100644 (file)
@@ -31,14 +31,13 @@ options:
   - mds_client
   with_legacy: true
 - name: client_mount_timeout
-  type: float
+  type: secs
   level: advanced
   desc: timeout for mounting CephFS (seconds)
   fmt_desc: Set the timeout for CephFS mount in seconds.
   default: 5_min
   services:
   - mds_client
-  with_legacy: true
 - name: client_tick_interval
   type: secs
   level: dev
@@ -144,7 +143,7 @@ options:
   - mds_client
   with_legacy: true
 - name: client_caps_release_delay
-  type: int
+  type: secs
   level: dev
   default: 5
   services:
@@ -153,7 +152,6 @@ options:
     sets how many   seconds a client waits to release capabilities that it no
     longer needs in case the capabilities are needed for another user space
     operation.
-  with_legacy: true
 - name: client_quota_df
   type: bool
   level: advanced
@@ -486,6 +484,9 @@ options:
   default: false
   services:
   - mds_client
+  flags:
+  - startup
+  - no_mon_update
   with_legacy: true
 - name: client_fs
   type: str
@@ -559,3 +560,13 @@ options:
   - mds_client
   flags:
   - runtime
+- name: client_quota
+  type: bool
+  level: advanced
+  desc: Enable quota enforcement
+  long_desc: Enable quota_bytes and quota_files enforcement for the client.
+  default: true
+  services:
+  - mds_client
+  flags:
+  - runtime
index 53b6e0423d044ea07700646e12dea98ce880f8cb..45a7862f76537d34683a994d4a51f74d0d3c721c 100644 (file)
@@ -1035,6 +1035,12 @@ options:
   services:
   - mds
   with_legacy: true
+- name: mds_inject_health_dummy
+  type: bool
+  level: dev
+  default: false
+  services:
+  - mds
 #  percentage of MDS modify replies to skip sending the client a trace on [0-1]
 - name: mds_inject_traceless_reply_probability
   type: float
index 770365db510492abd80ed695dc0f46297153acec..2dc357ae766f2b1c60fc382307677d2bcc5d4571 100644 (file)
@@ -466,7 +466,7 @@ options:
   type: uint
   level: advanced
   desc: mirroring snapshots limit
-  default: 3
+  default: 5
   services:
   - rbd
   min: 3
index a561a3b1239bad75dca33bf94fd12e3d05a4d318..ac140fce7976945d7b5764342547707c6a411357 100644 (file)
@@ -2734,6 +2734,155 @@ options:
   services:
   - rgw
   with_legacy: true
+- name: rgw_crypt_sse_s3_backend
+  type: str
+  level: advanced
+  desc: Where the SSE-S3 encryption keys are stored. The only valid choice here is
+    HashiCorp Vault ('vault').
+  fmt_desc: Where the SSE-S3 encryption keys are stored. The only valid
+    choice is HashiCorp Vault (``vault``).
+  default: vault
+  services:
+  - rgw
+  enum_values:
+  - vault
+  with_legacy: true
+
+- name: rgw_crypt_sse_s3_vault_secret_engine
+  type: str
+  level: advanced
+  desc: Vault Secret Engine to be used to retrieve encryption keys.
+  fmt_desc: |
+    Vault Secret Engine to be used to retrieve encryption keys.  The
+    only valid choice here is transit.
+  default: transit
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_auth
+  - rgw_crypt_sse_s3_vault_addr
+  with_legacy: true
+- name: rgw_crypt_sse_s3_key_template
+  type: str
+  level: advanced
+  desc: template for per-bucket sse-s3 keys in vault.
+  long_desc: This is the template for per-bucket sse-s3 keys.
+    This string may include ``%bucket_id`` which will be expanded out to
+    the bucket marker, a unique uuid assigned to that bucket.
+    It could contain ``%owner_id``, which will expand out to the owner's id.
+    Any other use of % is reserved and should not be used.
+    If the template contains ``%bucket_id``, associated bucket keys
+    will be automatically removed when the bucket is removed.
+  services:
+  - rgw
+  default: "%bucket_id"
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_auth
+  - rgw_crypt_sse_s3_vault_addr
+  with_legacy: true
+- name: rgw_crypt_sse_s3_vault_auth
+  type: str
+  level: advanced
+  desc: Type of authentication method to be used with SSE-S3 and Vault.
+  fmt_desc: Type of authentication method to be used. The only method
+    currently supported is ``token``.
+  default: token
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_addr
+  - rgw_crypt_sse_s3_vault_token_file
+  enum_values:
+  - token
+  - agent
+  with_legacy: true
+- name: rgw_crypt_sse_s3_vault_token_file
+  type: str
+  level: advanced
+  desc: If authentication method is 'token', provide a path to the token file, which
+    for security reasons should readable only by Rados Gateway.
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_auth
+  - rgw_crypt_sse_s3_vault_addr
+  with_legacy: true
+- name: rgw_crypt_sse_s3_vault_addr
+  type: str
+  level: advanced
+  desc: SSE-S3 Vault server base address.
+  fmt_desc: Vault server base address, e.g. ``http://vaultserver:8200``.
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_auth
+  - rgw_crypt_sse_s3_vault_prefix
+  with_legacy: true
+# Optional URL prefix to Vault secret path
+- name: rgw_crypt_sse_s3_vault_prefix
+  type: str
+  level: advanced
+  desc: SSE-S3 Vault secret URL prefix, which can be used to restrict access to a particular
+    subset of the Vault secret space.
+  fmt_desc: The Vault secret URL prefix, which can be used to restrict access
+    to a particular subset of the secret space, e.g. ``/v1/secret/data``.
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_addr
+  - rgw_crypt_sse_s3_vault_auth
+  with_legacy: true
+#  Vault Namespace (only availabe in Vault Enterprise Version)
+- name: rgw_crypt_sse_s3_vault_namespace
+  type: str
+  level: advanced
+  desc: Vault Namespace to be used to select your tenant
+  fmt_desc: If set, Vault Namespace provides tenant isolation for teams and individuals
+    on the same Vault Enterprise instance, e.g. ``acme/tenant1``
+  services:
+  - rgw
+  see_also:
+  - rgw_crypt_sse_s3_backend
+  - rgw_crypt_sse_s3_vault_auth
+  - rgw_crypt_sse_s3_vault_addr
+  with_legacy: true
+# Enable TLS authentication rgw and vault
+- name: rgw_crypt_sse_s3_vault_verify_ssl
+  type: bool
+  level: advanced
+  desc: Should RGW verify the vault server SSL certificate.
+  default: true
+  services:
+  - rgw
+  with_legacy: true
+# TLS certs options
+- name: rgw_crypt_sse_s3_vault_ssl_cacert
+  type: str
+  level: advanced
+  desc: Path for custom ca certificate for accessing vault server
+  services:
+  - rgw
+  with_legacy: true
+- name: rgw_crypt_sse_s3_vault_ssl_clientcert
+  type: str
+  level: advanced
+  desc: Path for custom client certificate for accessing vault server
+  services:
+  - rgw
+  with_legacy: true
+- name: rgw_crypt_sse_s3_vault_ssl_clientkey
+  type: str
+  level: advanced
+  desc: Path for private key required for client cert
+  services:
+  - rgw
+  with_legacy: true
 - name: rgw_list_bucket_min_readahead
   type: int
   level: advanced
index 0667bbd79af6610156e187235eeb991ef417d10c..97875f01335505f4113479816ae40bf84c31f5ba 100644 (file)
@@ -95,3 +95,4 @@ SUBSYS(seastore_journal, 0, 5)
 SUBSYS(seastore_device, 0, 5)
 SUBSYS(alienstore, 0, 5)
 SUBSYS(mclock, 1, 5)
+SUBSYS(ceph_exporter, 1, 5)
\ No newline at end of file
index e8320458834773f0eb04333a8903bb6632522cfb..faba5939cf0d1ccdcc04287bbe83fd6488fb35e2 100644 (file)
@@ -297,9 +297,8 @@ static ghobject_t test_ops_get_object_name(
     }
     if (pool < 0) {
       // the return type of `fmt::format` is `std::string`
-      using namespace fmt::literals;
       throw std::invalid_argument{
-        "Invalid pool '{}'"_format(*pool_arg)
+        fmt::format("Invalid pool '{}'", *pool_arg)
       };
     }
     return pool;
index 7153850eca35483e20970daa7a118c30aca087c6..5094a6e4a5a6bc5f7d6bd38a0522f9e5919b6cae 100644 (file)
@@ -12,8 +12,6 @@
 #define LOGGER(subname_) crimson::get_logger(ceph_subsys_##subname_)
 #define LOG_PREFIX(x) constexpr auto FNAME = #x
 
-#ifdef NDEBUG
-
 #define LOG(level_, MSG, ...) \
   LOCAL_LOGGER.log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
 #define LOGT(level_, MSG, t, ...) \
 #define SUBLOGT(subname_, level_, MSG, t, ...) \
   LOGGER(subname_).log(level_, "{}({}): " MSG, FNAME, (void*)&t , ##__VA_ARGS__)
 
-#else
-
-// do compile-time format string validation
-using namespace fmt::literals;
-template<seastar::log_level lv>
-void _LOG(seastar::logger& logger, std::string_view info) {
-  logger.log(lv, info.data());
-}
-
-#define LOG(level_, MSG, ...) \
-  _LOG<level_>(LOCAL_LOGGER, "{}: " MSG ## _format(FNAME , ##__VA_ARGS__))
-#define LOGT(level_, MSG, t_, ...) \
-  _LOG<level_>(LOCAL_LOGGER, "{}({}): " MSG ## _format(FNAME, (void*)&t_ , ##__VA_ARGS__))
-#define SUBLOG(subname_, level_, MSG, ...) \
-  _LOG<level_>(LOGGER(subname_), "{}: " MSG ## _format(FNAME , ##__VA_ARGS__))
-#define SUBLOGT(subname_, level_, MSG, t_, ...) \
-  _LOG<level_>(LOGGER(subname_), "{}({}): " MSG ## _format(FNAME, (void*)&t_ , ##__VA_ARGS__))
-
-#endif
-
 #define TRACE(...) LOG(seastar::log_level::trace, __VA_ARGS__)
 #define TRACET(...) LOGT(seastar::log_level::trace, __VA_ARGS__)
 #define SUBTRACE(subname_, ...) SUBLOG(subname_, seastar::log_level::trace, __VA_ARGS__)
index c5ee76b71bca8ec408db03240ee839d4e63ebe6a..22c140b5993d948063150e1502227dd5f305b32e 100644 (file)
@@ -109,3 +109,37 @@ enum class nextent_state_t : uint8_t {
 };
 
 }
+
+template <> struct fmt::formatter<crimson::os::seastore::onode::node_delta_op_t>
+  : fmt::formatter<std::string_view> {
+  using node_delta_op_t =  crimson::os::seastore::onode::node_delta_op_t;
+  // parse is inherited from formatter<string_view>.
+  template <typename FormatContext>
+  auto format(node_delta_op_t op, FormatContext& ctx) {
+    std::string_view name = "unknown";
+    switch (op) {
+    case node_delta_op_t::INSERT:
+      name = "insert";
+      break;
+    case node_delta_op_t::SPLIT:
+      name = "split";
+      break;
+    case node_delta_op_t::SPLIT_INSERT:
+      name = "split_insert";
+      break;
+    case node_delta_op_t::UPDATE_CHILD_ADDR:
+      name = "update_child_addr";
+      break;
+    case node_delta_op_t::ERASE:
+      name = "erase";
+      break;
+    case node_delta_op_t::MAKE_TAIL:
+      name = "make_tail";
+      break;
+    case node_delta_op_t::SUBOP_UPDATE_VALUE:
+      name = "subop_update_value";
+      break;
+    }
+    return formatter<string_view>::format(name, ctx);
+  }
+};
index eb166b1ad3258ee005eb6049774c099b2774cfed..2d38788c57992b70616408e618f5dd8c9da750a5 100644 (file)
 using std::string;
 using crimson::common::local_conf;
 
+template <> struct fmt::formatter<crimson::os::seastore::SeaStore::op_type_t>
+  : fmt::formatter<std::string_view> {
+  using op_type_t =  crimson::os::seastore::SeaStore::op_type_t;
+  // parse is inherited from formatter<string_view>.
+  template <typename FormatContext>
+  auto format(op_type_t op, FormatContext& ctx) {
+    std::string_view name = "unknown";
+    switch (op) {
+      case op_type_t::TRANSACTION:
+      name = "transaction";
+      break;
+    case op_type_t::READ:
+      name = "read";
+      break;
+    case op_type_t::WRITE:
+      name = "write";
+      break;
+    case op_type_t::GET_ATTR:
+      name = "get_attr";
+      break;
+    case op_type_t::GET_ATTRS:
+      name = "get_attrs";
+      break;
+    case op_type_t::STAT:
+      name = "stat";
+      break;
+    case op_type_t::OMAP_GET_VALUES:
+      name = "omap_get_values";
+      break;
+    case op_type_t::OMAP_LIST:
+      name = "omap_list";
+      break;
+    case op_type_t::MAX:
+      name = "unknown";
+      break;
+    }
+    return formatter<string_view>::format(name, ctx);
+  }
+};
+
 SET_SUBSYS(seastore);
 
 namespace crimson::os::seastore {
index f27942d5d3e77b09430e6d6481b4d139cff44daa..ced49d630532998df37d5108ece514b1417de995 100644 (file)
@@ -4,6 +4,8 @@
 #include <sys/mman.h>
 #include <string.h>
 
+#include <fmt/format.h>
+
 #include "include/buffer.h"
 
 #include "crimson/common/config_proxy.h"
@@ -24,6 +26,28 @@ SET_SUBSYS(seastore_device);
  * - TRACE: DEBUG details
  */
 
+using segment_state_t = crimson::os::seastore::Segment::segment_state_t;
+
+template <> struct fmt::formatter<segment_state_t>: fmt::formatter<std::string_view> {
+  // parse is inherited from formatter<string_view>.
+  template <typename FormatContext>
+  auto format(segment_state_t s, FormatContext& ctx) {
+    std::string_view name = "unknown";
+    switch (s) {
+    case segment_state_t::EMPTY:
+      name = "empty";
+      break;
+    case segment_state_t::OPEN:
+      name = "open";
+      break;
+    case segment_state_t::CLOSED:
+      name = "closed";
+      break;
+    }
+    return formatter<string_view>::format(name, ctx);
+  }
+};
+
 namespace crimson::os::seastore::segment_manager::block {
 
 static write_ertr::future<> do_write(
index 35c82a2715c9e4b137447c88326f224db0763f8a..91f37cc8911e237fd5cb3fdb4912ff4d226f7e19 100644 (file)
@@ -954,7 +954,7 @@ int do_map() {
           <<". Mountpoint: " << to_string(g_cfg->mountpoint) << dendl;
 
   DWORD status = DokanMain(dokan_options, dokan_operations);
-  switch (status) {
+  switch (static_cast<int>(status)) {
   case DOKAN_SUCCESS:
     dout(2) << "Dokan has returned successfully" << dendl;
     break;
index acc50c01e690fbc12a31eee94d83c2e3d92d1e2d..7f25867f007852713fb8281bb2ea15f2418b7dac 100644 (file)
 #define CEPH_DOKAN_IO_DEFAULT_TIMEOUT 60 * 5 // Seconds
 #define CEPH_DOKAN_DEFAULT_THREAD_COUNT 10
 
-typedef DWORD NTSTATUS;
 // Avoid conflicting COM types, exposed when using C++.
 #define _OLE2_H_
 
+#include <bcrypt.h>  // for typedef of NTSTATUS
 #include <dokan.h>
 
 struct Config {
index 6860ff35cd7810268856825543989d4b721438b1..1448fa9bbef74b8000e63efd7b228e7304618c24 100644 (file)
@@ -139,7 +139,7 @@ void print_open_params(
   check_flag(o, FlagsAndAttributes, SECURITY_EFFECTIVE_ONLY);
   check_flag(o, FlagsAndAttributes, SECURITY_SQOS_PRESENT);
 
-  o << "\n\tIsDirectory: " << (DokanFileInfo->IsDirectory != NULL);
+  o << "\n\tIsDirectory: " << static_cast<bool>(DokanFileInfo->IsDirectory);
 
   o << "\n\tCreateOptions: " << hex << CreateOptions << " ";
   check_flag(o, CreateOptions, FILE_DIRECTORY_FILE);
diff --git a/ceph/src/exporter/CMakeLists.txt b/ceph/src/exporter/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0c0c03b
--- /dev/null
@@ -0,0 +1,10 @@
+set(exporter_srcs
+  ceph_exporter.cc
+  DaemonMetricCollector.cc
+  http_server.cc
+  util.cc
+  )
+add_executable(ceph-exporter ${exporter_srcs})
+target_link_libraries(ceph-exporter
+  global-static ceph-common)
+install(TARGETS ceph-exporter DESTINATION bin)
diff --git a/ceph/src/exporter/DaemonMetricCollector.cc b/ceph/src/exporter/DaemonMetricCollector.cc
new file mode 100644 (file)
index 0000000..7f88113
--- /dev/null
@@ -0,0 +1,391 @@
+#include "DaemonMetricCollector.h"
+#include "common/admin_socket_client.h"
+#include "common/debug.h"
+#include "common/hostname.h"
+#include "common/perf_counters.h"
+#include "global/global_init.h"
+#include "global/global_context.h"
+#include "common/split.h"
+#include "include/common_fwd.h"
+#include "util.h"
+
+#include <boost/json/src.hpp>
+#include <chrono>
+#include <filesystem>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <regex>
+#include <string>
+#include <utility>
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_ceph_exporter
+
+using json_object = boost::json::object;
+using json_value = boost::json::value;
+using json_array = boost::json::array;
+
+void DaemonMetricCollector::request_loop(boost::asio::steady_timer &timer) {
+  timer.async_wait([&](const boost::system::error_code &e) {
+    std::cerr << e << std::endl;
+    update_sockets();
+    dump_asok_metrics();
+    auto stats_period = g_conf().get_val<int64_t>("exporter_stats_period");
+    // time to wait before sending requests again
+    timer.expires_from_now(std::chrono::seconds(stats_period));
+    request_loop(timer);
+  });
+}
+
+void DaemonMetricCollector::main() {
+  // time to wait before sending requests again
+
+  boost::asio::io_service io;
+  boost::asio::steady_timer timer{io, std::chrono::seconds(0)};
+  request_loop(timer);
+  io.run();
+}
+
+std::string DaemonMetricCollector::get_metrics() {
+  const std::lock_guard<std::mutex> lock(metrics_mutex);
+  return metrics;
+}
+
+template <class T>
+void add_metric(std::unique_ptr<MetricsBuilder> &builder, T value,
+                std::string name, std::string description, std::string mtype,
+                labels_t labels) {
+  builder->add(std::to_string(value), name, description, mtype, labels);
+}
+
+void add_double_or_int_metric(std::unique_ptr<MetricsBuilder> &builder,
+                              json_value value, std::string name,
+                              std::string description, std::string mtype,
+                              labels_t labels) {
+  if (value.is_int64()) {
+    int64_t v = value.as_int64();
+    add_metric(builder, v, name, description, mtype, labels);
+  } else if (value.is_double()) {
+    double v = value.as_double();
+    add_metric(builder, v, name, description, mtype, labels);
+  }
+}
+
+std::string boost_string_to_std(boost::json::string js) {
+  std::string res(js.data());
+  return res;
+}
+
+std::string quote(std::string value) { return "\"" + value + "\""; }
+
+bool is_hyphen(char ch) { return ch == '-'; }
+
+void DaemonMetricCollector::dump_asok_metrics() {
+  BlockTimer timer(__FILE__, __FUNCTION__);
+
+  std::vector<std::pair<std::string, int>> daemon_pids;
+
+  bool sort = g_conf().get_val<bool>("exporter_sort_metrics");
+  if (sort) {
+    builder = std::unique_ptr<OrderedMetricsBuilder>(new OrderedMetricsBuilder());
+  } else {
+    builder = std::unique_ptr<UnorderedMetricsBuilder>(new UnorderedMetricsBuilder());
+  }
+  for (auto &[daemon_name, sock_client] : clients) {
+    bool ok;
+    sock_client.ping(&ok);
+    if (!ok) {
+      continue;
+    }
+    std::string perf_dump_response = asok_request(sock_client, "perf dump", daemon_name);
+    if (perf_dump_response.size() == 0) {
+      continue;
+    }
+    std::string perf_schema_response = asok_request(sock_client, "perf schema", daemon_name);
+    if (perf_schema_response.size() == 0) {
+      continue;
+    }
+    std::string config_show = asok_request(sock_client, "config show", daemon_name);
+    json_object pid_file_json = boost::json::parse(config_show).as_object();
+    std::string pid_path =
+      boost_string_to_std(pid_file_json["pid_file"].as_string());
+    std::string pid_str = read_file_to_string(pid_path);
+    if (!pid_path.size()) {
+      continue;
+    }
+    daemon_pids.push_back({daemon_name, std::stoi(pid_str)});
+    json_object dump = boost::json::parse(perf_dump_response).as_object();
+    json_object schema = boost::json::parse(perf_schema_response).as_object();
+    for (auto &perf : schema) {
+      auto sv = perf.key();
+      std::string perf_group = {sv.begin(), sv.end()};
+      json_object perf_group_object = perf.value().as_object();
+      for (auto &perf_counter : perf_group_object) {
+        auto sv1 = perf_counter.key();
+        std::string perf_name = {sv1.begin(), sv1.end()};
+        json_object perf_info = perf_counter.value().as_object();
+        auto prio_limit = g_conf().get_val<int64_t>("exporter_prio_limit");
+        if (perf_info["priority"].as_int64() <
+            prio_limit) {
+          continue;
+        }
+        std::string name = "ceph_" + perf_group + "_" + perf_name;
+        std::replace_if(name.begin(), name.end(), is_hyphen, '_');
+
+        // FIXME: test this, based on mgr_module perfpath_to_path_labels
+        auto labels_and_name = get_labels_and_metric_name(daemon_name, name);
+        labels_t labels = labels_and_name.first;
+        name = labels_and_name.second;
+
+        json_value perf_values = dump[perf_group].as_object()[perf_name];
+        dump_asok_metric(perf_info, perf_values, name, labels);
+      }
+    }
+  }
+  dout(10) << "Perf counters retrieved for " << clients.size() << " daemons." << dendl;
+  // get time spent on this function
+  timer.stop();
+  std::string scrap_desc("Time spent scraping and transforming perfcounters to metrics");
+  labels_t scrap_labels;
+  scrap_labels["host"] = quote(ceph_get_hostname());
+  scrap_labels["function"] = quote(__FUNCTION__);
+  add_metric(builder, timer.get_ms(), "ceph_exporter_scrape_time", scrap_desc,
+             "gauge", scrap_labels);
+
+  const std::lock_guard<std::mutex> lock(metrics_mutex);
+  get_process_metrics(daemon_pids);
+  metrics = builder->dump();
+}
+
+std::vector<std::string> read_proc_stat_file(std::string path) {
+  std::string stat = read_file_to_string(path);
+  std::vector<std::string> strings;
+  auto parts = ceph::split(stat);
+  strings.assign(parts.begin(), parts.end());
+  return strings;
+}
+
+struct pstat read_pid_stat(int pid) {
+  std::string stat_path("/proc/" + std::to_string(pid) + "/stat");
+  std::vector<std::string> stats = read_proc_stat_file(stat_path);
+  struct pstat stat;
+  stat.minflt = std::stoul(stats[9]);
+  stat.majflt = std::stoul(stats[11]);
+  stat.utime = std::stoul(stats[13]);
+  stat.stime = std::stoul(stats[14]);
+  stat.num_threads = std::stoul(stats[19]);
+  stat.start_time = std::stoul(stats[21]);
+  stat.vm_size = std::stoul(stats[22]);
+  stat.resident_size = std::stoi(stats[23]);
+  return stat;
+}
+
+void DaemonMetricCollector::get_process_metrics(std::vector<std::pair<std::string, int>> daemon_pids) {
+  std::string path("/proc");
+  std::stringstream ss;
+  for (auto &[daemon_name, pid] : daemon_pids) {
+    std::vector<std::string> uptimes = read_proc_stat_file("/proc/uptime");
+    struct pstat stat = read_pid_stat(pid);
+    int clk_tck = sysconf(_SC_CLK_TCK);
+    double start_time_seconds = stat.start_time / (double)clk_tck;
+    double user_time = stat.utime / (double)clk_tck;
+    double kernel_time = stat.stime / (double)clk_tck;
+    double total_time_seconds = user_time + kernel_time;
+    double uptime = std::stod(uptimes[0]);
+    double elapsed_time = uptime - start_time_seconds;
+    double idle_time = elapsed_time  - total_time_seconds;
+    double usage = total_time_seconds * 100 / elapsed_time;
+
+    labels_t labels;
+    labels["ceph_daemon"] = quote(daemon_name);
+    add_metric(builder, stat.minflt, "ceph_exporter_minflt_total",
+               "Number of minor page faults of daemon", "counter", labels);
+    add_metric(builder, stat.majflt, "ceph_exporter_majflt_total",
+               "Number of major page faults of daemon", "counter", labels);
+    add_metric(builder, stat.num_threads, "ceph_exporter_num_threads",
+               "Number of threads used by daemon", "gauge", labels);
+    add_metric(builder, usage, "ceph_exporter_cpu_usage", "CPU usage of a daemon",
+               "gauge", labels);
+
+    std::string cpu_time_desc = "Process time in kernel/user/idle mode";
+    labels_t cpu_total_labels;
+    cpu_total_labels["ceph_daemon"] = quote(daemon_name);
+    cpu_total_labels["mode"] = quote("kernel");
+    add_metric(builder, kernel_time, "ceph_exporter_cpu_total", cpu_time_desc,
+               "counter", cpu_total_labels);
+    cpu_total_labels["mode"] = quote("user");
+    add_metric(builder, user_time, "ceph_exporter_cpu_total", cpu_time_desc,
+               "counter", cpu_total_labels);
+    cpu_total_labels["mode"] = quote("idle");
+    add_metric(builder, idle_time, "ceph_exporter_cpu_total", cpu_time_desc,
+               "counter", cpu_total_labels);
+    add_metric(builder, stat.vm_size, "ceph_exporter_vm_size", "Virtual memory used in a daemon",
+               "gauge", labels);
+    add_metric(builder, stat.resident_size, "ceph_exporter_resident_size",
+               "Resident memory in a daemon", "gauge", labels);
+  }
+}
+
+std::string DaemonMetricCollector::asok_request(AdminSocketClient &asok,
+                                                std::string command, std::string daemon_name) {
+  std::string request("{\"prefix\": \"" + command + "\"}");
+  std::string response;
+  std::string err = asok.do_request(request, &response);
+  if (err.length() > 0 || response.substr(0, 5) == "ERROR") {
+    dout(1) << "command " << command << "failed for daemon " << daemon_name 
+      << "with error: " << err << dendl;
+    return "";
+  }
+  return response;
+}
+
+std::pair<labels_t, std::string>
+DaemonMetricCollector::get_labels_and_metric_name(std::string daemon_name,
+                                                  std::string metric_name) {
+  std::string new_metric_name;
+  labels_t labels;
+  new_metric_name = metric_name;
+  if (daemon_name.find("rgw") != std::string::npos) {
+    std::string tmp = daemon_name.substr(16, std::string::npos);
+    std::string::size_type pos = tmp.find('.');
+    labels["instance_id"] = quote("rgw." + tmp.substr(0, pos));
+  } else {
+    labels["ceph_daemon"] = quote(daemon_name);
+    if (daemon_name.find("rbd-mirror") != std::string::npos) {
+      std::regex re("^rbd_mirror_image_([^/]+)/(?:(?:([^/]+)/"
+                    ")?)(.*)\\.(replay(?:_bytes|_latency)?)$");
+      std::smatch match;
+      if (std::regex_search(daemon_name, match, re) == true) {
+        new_metric_name = "ceph_rbd_mirror_image_" + match.str(4);
+        labels["pool"] = quote(match.str(1));
+        labels["namespace"] = quote(match.str(2));
+        labels["image"] = quote(match.str(3));
+      }
+    }
+  }
+  return {labels, new_metric_name};
+}
+
+/*
+perf_values can be either a int/double or a json_object. Since
+   json_value is a wrapper of both we use that class.
+ */
+void DaemonMetricCollector::dump_asok_metric(json_object perf_info,
+                                             json_value perf_values,
+                                             std::string name,
+                                             labels_t labels) {
+  int64_t type = perf_info["type"].as_int64();
+  std::string metric_type =
+    boost_string_to_std(perf_info["metric_type"].as_string());
+  std::string description =
+    boost_string_to_std(perf_info["description"].as_string());
+
+  if (type & PERFCOUNTER_LONGRUNAVG) {
+    int64_t count = perf_values.as_object()["avgcount"].as_int64();
+    add_metric(builder, count, name + "_count", description, metric_type,
+               labels);
+    json_value sum_value = perf_values.as_object()["sum"];
+    add_double_or_int_metric(builder, sum_value, name + "_sum", description,
+                             metric_type, labels);
+  } else if (type & PERFCOUNTER_TIME) {
+    if (perf_values.is_int64()) {
+      double value = perf_values.as_int64() / 1000000000.0f;
+      add_metric(builder, value, name, description, metric_type, labels);
+    } else if (perf_values.is_double()) {
+      double value = perf_values.as_double() / 1000000000.0f;
+      add_metric(builder, value, name, description, metric_type, labels);
+    }
+  } else {
+    add_double_or_int_metric(builder, perf_values, name, description,
+                             metric_type, labels);
+  }
+}
+
+void DaemonMetricCollector::update_sockets() {
+  std::string sock_dir = g_conf().get_val<std::string>("exporter_sock_dir");
+  clients.clear();
+  std::filesystem::path sock_path = sock_dir;
+  if(!std::filesystem::is_directory(sock_path.parent_path())) {
+    dout(1) << "ERROR: No such directory exist" << sock_dir << dendl;
+    return;
+  }
+  for (const auto &entry :
+         std::filesystem::directory_iterator(sock_dir)) {
+    if (entry.path().extension() == ".asok") {
+      std::string daemon_socket_name = entry.path().filename().string();
+      std::string daemon_name =
+        daemon_socket_name.substr(0, daemon_socket_name.size() - 5);
+      if (clients.find(daemon_name) == clients.end() &&
+          !(daemon_name.find("mgr") != std::string::npos) &&
+          !(daemon_name.find("ceph-exporter") != std::string::npos)) {
+        AdminSocketClient sock(entry.path().string());
+        clients.insert({daemon_name, std::move(sock)});
+      }
+    }
+  }
+}
+
+void OrderedMetricsBuilder::add(std::string value, std::string name,
+                                std::string description, std::string mtype,
+                                labels_t labels) {
+
+  if (metrics.find(name) == metrics.end()) {
+    Metric metric(name, mtype, description);
+    metrics[name] = std::move(metric);
+  }
+  Metric &metric = metrics[name];
+  metric.add(labels, value);
+}
+
+std::string OrderedMetricsBuilder::dump() {
+  for (auto &[name, metric] : metrics) {
+    out += metric.dump() + "\n";
+  }
+  return out;
+}
+
+void UnorderedMetricsBuilder::add(std::string value, std::string name,
+                                  std::string description, std::string mtype,
+                                  labels_t labels) {
+
+  Metric metric(name, mtype, description);
+  metric.add(labels, value);
+  out += metric.dump() + "\n\n";
+}
+
+std::string UnorderedMetricsBuilder::dump() { return out; }
+
+void Metric::add(labels_t labels, std::string value) {
+  metric_entry entry;
+  entry.labels = labels;
+  entry.value = value;
+  entries.push_back(entry);
+}
+
+std::string Metric::dump() {
+  std::stringstream metric_ss;
+  metric_ss << "# HELP " << name << " " << description << "\n";
+  metric_ss << "# TYPE " << name << " " << mtype << "\n";
+  for (auto &entry : entries) {
+    std::stringstream labels_ss;
+    size_t i = 0;
+    for (auto &[label_name, label_value] : entry.labels) {
+      labels_ss << label_name << "=" << label_value;
+      if (i < entry.labels.size() - 1) {
+        labels_ss << ",";
+      }
+      i++;
+    }
+    metric_ss << name << "{" << labels_ss.str() << "} " << entry.value;
+    if (&entry != &entries.back()) {
+      metric_ss << "\n";
+    }
+  }
+  return metric_ss.str();
+}
+
+DaemonMetricCollector &collector_instance() {
+  static DaemonMetricCollector instance;
+  return instance;
+}
diff --git a/ceph/src/exporter/DaemonMetricCollector.h b/ceph/src/exporter/DaemonMetricCollector.h
new file mode 100644 (file)
index 0000000..c823866
--- /dev/null
@@ -0,0 +1,104 @@
+#pragma once
+
+#include "common/admin_socket_client.h"
+#include <map>
+#include <string>
+#include <vector>
+
+#include <boost/asio.hpp>
+#include <boost/json/object.hpp>
+#include <filesystem>
+#include <map>
+#include <string>
+#include <vector>
+
+struct pstat {
+  unsigned long utime;
+  unsigned long stime;
+  unsigned long minflt;
+  unsigned long majflt;
+  unsigned long start_time;
+  int num_threads;
+  unsigned long vm_size;
+  int resident_size;
+};
+
+class MetricsBuilder;
+class OrderedMetricsBuilder;
+class UnorderedMetricsBuilder;
+class Metric;
+
+typedef std::map<std::string, std::string> labels_t;
+
+class DaemonMetricCollector {
+public:
+  void main();
+  std::string get_metrics();
+
+private:
+  std::map<std::string, AdminSocketClient> clients;
+  std::string metrics;
+  std::mutex metrics_mutex;
+  std::unique_ptr<MetricsBuilder> builder;
+  void update_sockets();
+  void request_loop(boost::asio::steady_timer &timer);
+
+  void dump_asok_metrics();
+  void dump_asok_metric(boost::json::object perf_info,
+                        boost::json::value perf_values, std::string name,
+                        labels_t labels);
+  std::pair<labels_t, std::string>
+  get_labels_and_metric_name(std::string daemon_name, std::string metric_name);
+  void get_process_metrics(std::vector<std::pair<std::string, int>> daemon_pids);
+  std::string asok_request(AdminSocketClient &asok, std::string command, std::string daemon_name);
+};
+
+class Metric {
+private:
+  struct metric_entry {
+    labels_t labels;
+    std::string value;
+  };
+  std::string name;
+  std::string mtype;
+  std::string description;
+  std::vector<metric_entry> entries;
+
+public:
+  Metric(std::string name, std::string mtype, std::string description)
+      : name(name), mtype(mtype), description(description) {}
+  Metric(const Metric &) = default;
+  Metric() = default;
+  void add(labels_t labels, std::string value);
+  std::string dump();
+};
+
+class MetricsBuilder {
+public:
+  virtual ~MetricsBuilder() = default;
+  virtual std::string dump() = 0;
+  virtual void add(std::string value, std::string name, std::string description,
+                   std::string mtype, labels_t labels) = 0;
+
+protected:
+  std::string out;
+};
+
+class OrderedMetricsBuilder : public MetricsBuilder {
+private:
+  std::map<std::string, Metric> metrics;
+
+public:
+  std::string dump();
+  void add(std::string value, std::string name, std::string description,
+           std::string mtype, labels_t labels);
+};
+
+class UnorderedMetricsBuilder : public MetricsBuilder {
+public:
+  std::string dump();
+  void add(std::string value, std::string name, std::string description,
+           std::string mtype, labels_t labels);
+};
+
+DaemonMetricCollector &collector_instance();
diff --git a/ceph/src/exporter/ceph_exporter.cc b/ceph/src/exporter/ceph_exporter.cc
new file mode 100644 (file)
index 0000000..70650ff
--- /dev/null
@@ -0,0 +1,65 @@
+#include "common/ceph_argparse.h"
+#include "common/config.h"
+#include "exporter/DaemonMetricCollector.h"
+#include "exporter/http_server.h"
+#include "global/global_init.h"
+#include "global/global_context.h"
+
+#include <boost/thread/thread.hpp>
+#include <iostream>
+#include <map>
+#include <string>
+
+#define dout_context g_ceph_context
+
+static void usage() {
+  std::cout << "usage: ceph-exporter [options]\n"
+            << "options:\n"
+               "  --sock-dir:     The path to ceph daemons socket files dir\n"
+               "  --addrs:        Host ip address where exporter is deployed\n"
+               "  --port:         Port to deploy exporter on. Default is 9926\n"
+               "  --prio-limit:   Only perf counters greater than or equal to prio-limit are fetched. Default: 5\n"
+               "  --stats-period: Time to wait before sending requests again to exporter server (seconds). Default: 5s"
+            << std::endl;
+  generic_server_usage();
+}
+
+int main(int argc, char **argv) {
+
+  auto args = argv_to_vec(argc, argv);
+  if (args.empty()) {
+    std::cerr << argv[0] << ": -h or --help for usage" << std::endl;
+    exit(1);
+  }
+  if (ceph_argparse_need_usage(args)) {
+    usage();
+    exit(0);
+  }
+
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                         CODE_ENVIRONMENT_DAEMON, 0);
+  std::string val;
+  for (auto i = args.begin(); i != args.end();) {
+    if (ceph_argparse_double_dash(args, i)) {
+      break;
+    } else if (ceph_argparse_witharg(args, i, &val, "--sock-dir", (char *)NULL)) {
+      cct->_conf.set_val("exporter_sock_dir", val);
+    } else if (ceph_argparse_witharg(args, i, &val, "--addrs", (char *)NULL)) {
+      cct->_conf.set_val("exporter_addr", val);
+    } else if (ceph_argparse_witharg(args, i, &val, "--port", (char *)NULL)) {
+      cct->_conf.set_val("exporter_http_port", val);
+    } else if (ceph_argparse_witharg(args, i, &val, "--prio-limit", (char *)NULL)) {
+      cct->_conf.set_val("exporter_prio_limit", val);
+    } else if (ceph_argparse_witharg(args, i, &val, "--stats-period", (char *)NULL)) {
+      cct->_conf.set_val("exporter_stats_period", val);
+    } else {
+      ++i;
+    }
+  }
+  common_init_finish(g_ceph_context);
+
+  boost::thread server_thread(http_server_thread_entrypoint);
+  DaemonMetricCollector &collector = collector_instance();
+  collector.main();
+  server_thread.join();
+}
diff --git a/ceph/src/exporter/http_server.cc b/ceph/src/exporter/http_server.cc
new file mode 100644 (file)
index 0000000..317d877
--- /dev/null
@@ -0,0 +1,169 @@
+#include "http_server.h"
+#include "common/debug.h"
+#include "common/hostname.h"
+#include "global/global_init.h"
+#include "global/global_context.h"
+#include "exporter/DaemonMetricCollector.h"
+
+#include <boost/asio.hpp>
+#include <boost/beast/core.hpp>
+#include <boost/beast/http.hpp>
+#include <boost/beast/version.hpp>
+#include <boost/thread/thread.hpp>
+#include <chrono>
+#include <cstdlib>
+#include <ctime>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <string>
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_ceph_exporter
+
+namespace beast = boost::beast;   // from <boost/beast.hpp>
+namespace http = beast::http;     // from <boost/beast/http.hpp>
+namespace net = boost::asio;      // from <boost/asio.hpp>
+using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp>
+
+class http_connection : public std::enable_shared_from_this<http_connection> {
+public:
+  http_connection(tcp::socket socket) : socket_(std::move(socket)) {}
+
+  // Initiate the asynchronous operations associated with the connection.
+  void start() {
+    read_request();
+    check_deadline();
+  }
+
+private:
+  tcp::socket socket_;
+  beast::flat_buffer buffer_{8192};
+  http::request<http::dynamic_body> request_;
+  http::response<http::string_body> response_;
+
+  net::steady_timer deadline_{socket_.get_executor(), std::chrono::seconds(60)};
+
+  // Asynchronously receive a complete request message.
+  void read_request() {
+    auto self = shared_from_this();
+
+    http::async_read(socket_, buffer_, request_,
+                     [self](beast::error_code ec, std::size_t bytes_transferred) {
+                       boost::ignore_unused(bytes_transferred);
+                       if (ec) {
+                         dout(1) << "ERROR: " << ec.message() << dendl;
+                         return;
+                       }
+                       else {
+                         self->process_request();
+                       }
+                     });
+  }
+
+  // Determine what needs to be done with the request message.
+  void process_request() {
+    response_.version(request_.version());
+    response_.keep_alive(request_.keep_alive());
+
+    switch (request_.method()) {
+    case http::verb::get:
+      response_.result(http::status::ok);
+      create_response();
+      break;
+
+    default:
+      // We return responses indicating an error if
+      // we do not recognize the request method.
+      response_.result(http::status::method_not_allowed);
+      response_.set(http::field::content_type, "text/plain");
+      std::string body("Invalid request-method '" +
+                       std::string(request_.method_string()) + "'");
+      response_.body() = body;
+      break;
+    }
+
+    write_response();
+  }
+
+  // Construct a response message based on the program state.
+  void create_response() {
+    if (request_.target() == "/") {
+      response_.set(http::field::content_type, "text/html; charset=utf-8");
+      std::string body("<html>\n"
+                       "<head><title>Ceph Exporter</title></head>\n"
+                       "<body>\n"
+                       "<h1>Ceph Exporter</h1>\n"
+                       "<p><a href='/metrics'>Metrics</a></p>"
+                       "</body>\n"
+                       "</html>\n");
+      response_.body() = body;
+    } else if (request_.target() == "/metrics") {
+      response_.set(http::field::content_type, "text/plain; charset=utf-8");
+      DaemonMetricCollector &collector = collector_instance();
+      std::string metrics = collector.get_metrics();
+      response_.body() = metrics;
+    } else {
+      response_.result(http::status::method_not_allowed);
+      response_.set(http::field::content_type, "text/plain");
+      response_.body() = "File not found \n";
+    }
+  }
+
+  // Asynchronously transmit the response message.
+  void write_response() {
+    auto self = shared_from_this();
+
+    response_.prepare_payload();
+
+    http::async_write(socket_, response_,
+                      [self](beast::error_code ec, std::size_t) {
+                        self->socket_.shutdown(tcp::socket::shutdown_send, ec);
+                        self->deadline_.cancel();
+                        if (ec) {
+                          dout(1) << "ERROR: " << ec.message() << dendl;
+                          return;
+                        }
+                      });
+  }
+
+  // Check whether we have spent enough time on this connection.
+  void check_deadline() {
+    auto self = shared_from_this();
+
+    deadline_.async_wait([self](beast::error_code ec) {
+      if (!ec) {
+        // Close socket to cancel any outstanding operation.
+        self->socket_.close(ec);
+      }
+    });
+  }
+};
+
+// "Loop" forever accepting new connections.
+void http_server(tcp::acceptor &acceptor, tcp::socket &socket) {
+  acceptor.async_accept(socket, [&](beast::error_code ec) {
+    if (!ec)
+      std::make_shared<http_connection>(std::move(socket))->start();
+    http_server(acceptor, socket);
+  });
+}
+
+void http_server_thread_entrypoint() {
+  try {
+    std::string exporter_addr = g_conf().get_val<std::string>("exporter_addr");
+    auto const address = net::ip::make_address(exporter_addr);
+    unsigned short port = g_conf().get_val<int64_t>("exporter_http_port");
+
+    net::io_context ioc{1};
+
+    tcp::acceptor acceptor{ioc, {address, port}};
+    tcp::socket socket{ioc};
+    http_server(acceptor, socket);
+    dout(1) << "Http server running on " << exporter_addr << ":" << port << dendl;
+    ioc.run();
+  } catch (std::exception const &e) {
+    dout(1) << "Error: " << e.what() << dendl;
+    exit(EXIT_FAILURE);
+  }
+}
diff --git a/ceph/src/exporter/http_server.h b/ceph/src/exporter/http_server.h
new file mode 100644 (file)
index 0000000..0d0502f
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <string>
+
+void http_server_thread_entrypoint();
diff --git a/ceph/src/exporter/util.cc b/ceph/src/exporter/util.cc
new file mode 100644 (file)
index 0000000..0ae190c
--- /dev/null
@@ -0,0 +1,48 @@
+#include "util.h"
+#include "common/debug.h"
+#include <boost/algorithm/string/classification.hpp>
+#include <cctype>
+#include <chrono>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_ceph_exporter
+
+BlockTimer::BlockTimer(std::string file, std::string function)
+       : file(file), function(function), stopped(false) {
+       t1 = std::chrono::high_resolution_clock::now();
+}
+BlockTimer::~BlockTimer() {
+  dout(20) << file << ":" << function << ": " << ms.count() << "ms" << dendl;
+}
+
+// useful with stop
+double BlockTimer::get_ms() {
+       return ms.count();
+}
+
+// Manually stop the timer as you might want to get the time
+void BlockTimer::stop() {
+       if (!stopped) {
+               stopped = true;
+               t2 = std::chrono::high_resolution_clock::now();
+               ms = t2 - t1;
+       }
+}
+
+bool string_is_digit(std::string s) {
+       size_t i = 0;
+       while (std::isdigit(s[i]) && i < s.size()) {
+               i++;
+       }
+       return i >= s.size();
+}
+
+std::string read_file_to_string(std::string path) {
+       std::ifstream is(path);
+       std::stringstream buffer;
+       buffer << is.rdbuf();
+       return buffer.str();
+}
diff --git a/ceph/src/exporter/util.h b/ceph/src/exporter/util.h
new file mode 100644 (file)
index 0000000..b1fb83a
--- /dev/null
@@ -0,0 +1,22 @@
+#include "common/hostname.h"
+#include <chrono>
+#include <string>
+
+#define TIMED_FUNCTION() BlockTimer timer(__FILE__, __FUNCTION__) 
+
+class BlockTimer {
+ public:
+       BlockTimer(std::string file, std::string function);
+       ~BlockTimer();
+       void stop();
+       double get_ms();
+ private:
+       std::chrono::duration<double, std::milli> ms;
+       std::string file, function;
+       bool stopped;
+       std::chrono::time_point<std::chrono::high_resolution_clock> t1, t2;
+};
+
+bool string_is_digit(std::string s);
+std::string read_file_to_string(std::string path);
+std::string get_hostname(std::string path);
index 0c89367dd3b2c42fc55bee06981a0bb0e0691886..ef4add9d7d8a80a6673d28d902d19b041ac43ada 100644 (file)
@@ -41,6 +41,7 @@
 #include <iosfwd>
 #include <iomanip>
 #include <list>
+#include <memory>
 #include <vector>
 #include <string>
 #if __cplusplus >= 201703L
@@ -863,7 +864,9 @@ struct error_code;
        if (first_round) {
          impl_f(first_round);
        }
-       if (const auto second_round = len - first_round; second_round) {
+       // no C++17 for the sake of the C++11 guarantees of librados, sorry.
+       const auto second_round = len - first_round;
+       if (second_round) {
          _refill(second_round);
          impl_f(second_round);
        }
index 5bc693846b971671ee88c0a4f88e1d9ffc12f76a..ac5b7c2247178890e5e51ffe614a6dee0f6b694a 100644 (file)
@@ -92,15 +92,24 @@ struct ceph_statx {
 /*
  * Compatibility macros until these defines make their way into glibc
  */
-#ifndef AT_NO_ATTR_SYNC
-#define AT_NO_ATTR_SYNC                0x4000 /* Don't sync attributes with the server */
+#ifndef AT_STATX_DONT_SYNC
+#define AT_STATX_SYNC_TYPE     0x6000
+#define AT_STATX_SYNC_AS_STAT  0x0000
+#define AT_STATX_FORCE_SYNC    0x2000
+#define AT_STATX_DONT_SYNC     0x4000 /* Don't sync attributes with the server */
 #endif
 
+/*
+ * This is deprecated and just for backwards compatibility.
+ * Please use AT_STATX_DONT_SYNC instead.
+ */
+#define AT_NO_ATTR_SYNC                AT_STATX_DONT_SYNC /* Deprecated */
+
 /*
  * The statx interfaces only allow these flags. In order to allow us to add
  * others in the future, we disallow setting any that aren't recognized.
  */
-#define CEPH_REQ_FLAG_MASK             (AT_SYMLINK_NOFOLLOW|AT_NO_ATTR_SYNC)
+#define CEPH_REQ_FLAG_MASK             (AT_SYMLINK_NOFOLLOW|AT_STATX_DONT_SYNC)
 
 /* fallocate mode flags */
 #ifndef FALLOC_FL_KEEP_SIZE
index a348a5b6c00675c1de2379599b7b187c18406a89..344d763e8d87b94a2ebf4956da65c51a59396681 100644 (file)
@@ -852,7 +852,7 @@ int ceph_rename(struct ceph_mount_info *cmount, const char *from, const char *to
  * @param fd the file descriptor of the file to get statistics of.
  * @param stx the ceph_statx struct that will be filled in with the file's statistics.
  * @param want bitfield of CEPH_STATX_* flags showing designed attributes
- * @param flags bitfield that can be used to set AT_* modifier flags (only AT_NO_ATTR_SYNC and AT_SYMLINK_NOFOLLOW)
+ * @param flags bitfield that can be used to set AT_* modifier flags (AT_STATX_SYNC_AS_STAT, AT_STATX_FORCE_SYNC, AT_STATX_DONT_SYNC and AT_SYMLINK_NOFOLLOW)
  * @returns 0 on success or negative error code on failure.
  */
 int ceph_fstatx(struct ceph_mount_info *cmount, int fd, struct ceph_statx *stx,
@@ -866,7 +866,7 @@ int ceph_fstatx(struct ceph_mount_info *cmount, int fd, struct ceph_statx *stx,
  * @param relpath to the file/directory to get statistics of
  * @param stx the ceph_statx struct that will be filled in with the file's statistics.
  * @param want bitfield of CEPH_STATX_* flags showing designed attributes
- * @param flags bitfield that can be used to set AT_* modifier flags (only AT_NO_ATTR_SYNC and AT_SYMLINK_NOFOLLOW)
+ * @param flags bitfield that can be used to set AT_* modifier flags (AT_STATX_SYNC_AS_STAT, AT_STATX_FORCE_SYNC, AT_STATX_DONT_SYNC and AT_SYMLINK_NOFOLLOW)
  * @returns 0 on success or negative error code on failure.
  */
 int ceph_statxat(struct ceph_mount_info *cmount, int dirfd, const char *relpath,
@@ -879,7 +879,7 @@ int ceph_statxat(struct ceph_mount_info *cmount, int dirfd, const char *relpath,
  * @param path the file or directory to get the statistics of.
  * @param stx the ceph_statx struct that will be filled in with the file's statistics.
  * @param want bitfield of CEPH_STATX_* flags showing designed attributes
- * @param flags bitfield that can be used to set AT_* modifier flags (only AT_NO_ATTR_SYNC and AT_SYMLINK_NOFOLLOW)
+ * @param flags bitfield that can be used to set AT_* modifier flags (AT_STATX_SYNC_AS_STAT, AT_STATX_FORCE_SYNC, AT_STATX_DONT_SYNC and AT_SYMLINK_NOFOLLOW)
  * @returns 0 on success or negative error code on failure.
  */
 int ceph_statx(struct ceph_mount_info *cmount, const char *path, struct ceph_statx *stx,
index 7f5a40e245d89c8f3f9ebffcaea0f1a5e817f819..d7cf5613861119da016162b2019fae3840fc9c95 100644 (file)
@@ -27,6 +27,12 @@ enum ClientMetricType {
   CLIENT_METRIC_TYPE_OPENED_INODES,
   CLIENT_METRIC_TYPE_READ_IO_SIZES,
   CLIENT_METRIC_TYPE_WRITE_IO_SIZES,
+  CLIENT_METRIC_TYPE_AVG_READ_LATENCY,
+  CLIENT_METRIC_TYPE_STDEV_READ_LATENCY,
+  CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY,
+  CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY,
+  CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY,
+  CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY,
 };
 inline std::ostream &operator<<(std::ostream &os, const ClientMetricType &type) {
   switch(type) {
@@ -60,6 +66,24 @@ inline std::ostream &operator<<(std::ostream &os, const ClientMetricType &type)
   case ClientMetricType::CLIENT_METRIC_TYPE_WRITE_IO_SIZES:
     os << "WRITE_IO_SIZES";
     break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_AVG_READ_LATENCY:
+    os << "AVG_READ_LATENCY";
+    break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_READ_LATENCY:
+    os << "STDEV_READ_LATENCY";
+    break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY:
+    os << "AVG_WRITE_LATENCY";
+    break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY:
+    os << "STDEV_WRITE_LATENCY";
+    break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY:
+    os << "AVG_METADATA_LATENCY";
+    break;
+  case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY:
+    os << "STDEV_METADATA_LATENCY";
+    break;
   default:
     os << "(UNKNOWN:" << static_cast<std::underlying_type<ClientMetricType>::type>(type) << ")";
     break;
@@ -128,97 +152,154 @@ struct CapInfoPayload : public ClientMetricPayloadBase {
 
 struct ReadLatencyPayload : public ClientMetricPayloadBase {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;  // sum of squares
+  uint64_t count;   // IO count
 
   ReadLatencyPayload()
     : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY) { }
-  ReadLatencyPayload(utime_t lat)
-    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY), lat(lat) {
+  ReadLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY),
+      lat(lat),
+      mean(mean),
+      sq_sum(sq_sum),
+      count(count) {
   }
 
   void encode(bufferlist &bl) const {
     using ceph::encode;
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 1, bl);
     encode(lat, bl);
+    encode(mean, bl);
+    encode(sq_sum, bl);
+    encode(count, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator &iter) {
     using ceph::decode;
-    DECODE_START(1, iter);
+    DECODE_START(2, iter);
     decode(lat, iter);
+    if (struct_v >= 2) {
+      decode(mean, iter);
+      decode(sq_sum, iter);
+      decode(count, iter);
+    }
     DECODE_FINISH(iter);
   }
 
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
+    f->dump_int("avg_latency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   void print(std::ostream *out) const {
-    *out << "latency: " << lat;
+    *out << "latency: " << lat << ", avg_latency: " << mean
+         << ", sq_sum: " << sq_sum << ", count=" << count;
   }
 };
 
 struct WriteLatencyPayload : public ClientMetricPayloadBase {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;  // sum of squares
+  uint64_t count;   // IO count
 
   WriteLatencyPayload()
     : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY) { }
-  WriteLatencyPayload(utime_t lat)
-    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY), lat(lat) {
+  WriteLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY),
+      lat(lat),
+      mean(mean),
+      sq_sum(sq_sum),
+      count(count){
   }
 
   void encode(bufferlist &bl) const {
     using ceph::encode;
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 1, bl);
     encode(lat, bl);
+    encode(mean, bl);
+    encode(sq_sum, bl);
+    encode(count, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator &iter) {
     using ceph::decode;
-    DECODE_START(1, iter);
+    DECODE_START(2, iter);
     decode(lat, iter);
+    if (struct_v >= 2) {
+      decode(mean, iter);
+      decode(sq_sum, iter);
+      decode(count, iter);
+    }
     DECODE_FINISH(iter);
   }
 
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
+    f->dump_int("avg_latency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   void print(std::ostream *out) const {
-    *out << "latency: " << lat;
+    *out << "latency: " << lat << ", avg_latency: " << mean
+         << ", sq_sum: " << sq_sum << ", count=" << count;
   }
 };
 
 struct MetadataLatencyPayload : public ClientMetricPayloadBase {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;  // sum of squares
+  uint64_t count;   // IO count
 
   MetadataLatencyPayload()
-    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY) { }
-  MetadataLatencyPayload(utime_t lat)
-    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY), lat(lat) {
+  : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY) { }
+  MetadataLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+    : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY),
+      lat(lat),
+      mean(mean),
+      sq_sum(sq_sum),
+      count(count) {
   }
 
   void encode(bufferlist &bl) const {
     using ceph::encode;
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 1, bl);
     encode(lat, bl);
+    encode(mean, bl);
+    encode(sq_sum, bl);
+    encode(count, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator &iter) {
     using ceph::decode;
-    DECODE_START(1, iter);
+    DECODE_START(2, iter);
     decode(lat, iter);
+    if (struct_v >= 2) {
+      decode(mean, iter);
+      decode(sq_sum, iter);
+      decode(count, iter);
+    }
     DECODE_FINISH(iter);
   }
 
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
+    f->dump_int("avg_latency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   void print(std::ostream *out) const {
-    *out << "latency: " << lat;
+    *out << "latency: " << lat << ", avg_latency: " << mean
+         << ", sq_sum: " << sq_sum << ", count=" << count;
   }
 };
 
index 2c63b69909bbf6d1ae779eb366f5c498e66bc200..c188e97532f4838dc8f6113c623b12953eb825b6 100644 (file)
@@ -5,10 +5,11 @@
  * adapted from linux 2.6.24 include/linux/err.h
  */
 #define MAX_ERRNO 4095
-#define IS_ERR_VALUE(x) ((x) >= (unsigned long)-MAX_ERRNO)
+#define IS_ERR_VALUE(x) ((x) >= (uintptr_t)-MAX_ERRNO)
 
 #include <errno.h>
 #include <stdint.h>
+#include <stdbool.h>
 
 /* this generates a warning in c++; caller can do the cast manually
 static inline void *ERR_PTR(long error)
@@ -17,12 +18,12 @@ static inline void *ERR_PTR(long error)
 }
 */
 
-static inline long PTR_ERR(const void *ptr)
+static inline intptr_t PTR_ERR(const void *ptr)
 {
-  return (uintptr_t) ptr;
+  return (intptr_t) ptr;
 }
 
-static inline long IS_ERR(const void *ptr)
+static inline bool IS_ERR(const void *ptr)
 {
   return IS_ERR_VALUE((uintptr_t)ptr);
 }
index f1a21e5f96e1ae290e077386b16692bdf80e038a..dfb2a306ca21340797c1c1b1944f9f7b684813e3 100644 (file)
@@ -106,6 +106,21 @@ class interval_set {
           return prev;
         }
 
+        // Predecrement
+        iterator& operator--()
+        {
+          --_iter;
+          return *this;
+        }
+
+        // Postdecrement
+        iterator operator--(int)
+        {
+          iterator prev(_iter);
+          --_iter;
+          return prev;
+        }
+
     friend class interval_set::const_iterator;
 
     protected:
@@ -174,6 +189,21 @@ class interval_set {
           return prev;
         }
 
+        // Predecrement
+        iterator& operator--()
+        {
+          --_iter;
+          return *this;
+        }
+
+        // Postdecrement
+        iterator operator--(int)
+        {
+          iterator prev(_iter);
+          --_iter;
+          return prev;
+        }
+
     protected:
         typename Map::const_iterator _iter;
   };
index 070f79a609be8f0279d3bfb2e36e1b4e60a87d47..be032b4fa862a21a98b3fbec0c9f43514a1007ae 100644 (file)
@@ -1739,6 +1739,8 @@ void RocksDBStore::RocksDBTransactionImpl::rm_range_keys(const string &prefix,
                                                          const string &start,
                                                          const string &end)
 {
+  ldout(db->cct, 10) << __func__ << " enter start=" << start
+                    << " end=" << end << dendl;
   auto p_iter = db->cf_handles.find(prefix);
   if (p_iter == db->cf_handles.end()) {
     uint64_t cnt = db->delete_range_threshold;
@@ -1750,6 +1752,8 @@ void RocksDBStore::RocksDBTransactionImpl::rm_range_keys(const string &prefix,
       bat.Delete(db->default_cf, combine_strings(prefix, it->key()));
     }
     if (cnt == 0) {
+      ldout(db->cct, 10) << __func__ << " p_iter == end(), resorting to DeleteRange"
+                        << dendl;
       bat.RollbackToSavePoint();
       bat.DeleteRange(db->default_cf,
                      rocksdb::Slice(combine_strings(prefix, start)),
@@ -1770,6 +1774,8 @@ void RocksDBStore::RocksDBTransactionImpl::rm_range_keys(const string &prefix,
        bat.Delete(cf, it->key());
       }
       if (cnt == 0) {
+        ldout(db->cct, 10) << __func__ << " p_iter != end(), resorting to DeleteRange"
+                          << dendl;
        bat.RollbackToSavePoint();
        bat.DeleteRange(cf, rocksdb::Slice(start), rocksdb::Slice(end));
       } else {
@@ -1778,6 +1784,7 @@ void RocksDBStore::RocksDBTransactionImpl::rm_range_keys(const string &prefix,
       delete it;
     }
   }
+  ldout(db->cct, 10) << __func__ << " end" << dendl;
 }
 
 void RocksDBStore::RocksDBTransactionImpl::merge(
index 3d4563c8bf1e6f1edfd671ae22d628d91d5f2ab5..43914a89c2c182234f4063cafd87d9e40a505ea1 100644 (file)
@@ -283,7 +283,7 @@ int librados::RadosClient::connect()
     goto out;
   }
 
-  err = monclient.authenticate(conf->client_mount_timeout);
+  err = monclient.authenticate(std::chrono::duration<double>(conf.get_val<std::chrono::seconds>("client_mount_timeout")).count());
   if (err) {
     ldout(cct, 0) << conf->name << " authentication error " << cpp_strerror(-err) << dendl;
     shutdown();
index 93b29911da37bb3080d4894a5d457ee226b93661..792768b9d8f9678f5fd4a09817992701746c9523 100644 (file)
@@ -1174,7 +1174,9 @@ extern "C" void LIBRADOS_C_API_DEFAULT_F(rados_ioctx_destroy)(rados_ioctx_t io)
 {
   tracepoint(librados, rados_ioctx_destroy_enter, io);
   librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
-  ctx->put();
+  if (ctx) {
+    ctx->put();
+  }
   tracepoint(librados, rados_ioctx_destroy_exit);
 }
 LIBRADOS_C_API_BASE_DEFAULT(rados_ioctx_destroy);
index f4fdc54b90d116196bbd20932c7aba21dc712abc..f5a27e0c2bbafc6496f80940e63d130e99f98578 100644 (file)
@@ -572,12 +572,11 @@ template <typename I>
 void ImageWatcher<I>::schedule_request_lock(bool use_timer, int timer_delay) {
   ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
 
-  if (m_image_ctx.exclusive_lock == nullptr) {
-    // exclusive lock dynamically disabled via image refresh
+  // see notify_request_lock()
+  if (m_image_ctx.exclusive_lock == nullptr ||
+      m_image_ctx.exclusive_lock->is_lock_owner()) {
     return;
   }
-  ceph_assert(m_image_ctx.exclusive_lock &&
-              !m_image_ctx.exclusive_lock->is_lock_owner());
 
   std::shared_lock watch_locker{this->m_watch_lock};
   if (this->is_registered(this->m_watch_lock)) {
index 51716ff3698799290c685577f505c7877ec18efe..8a0e8f8251dd37533ee7b2f2dc9dd8c4d5dde18d 100644 (file)
@@ -115,6 +115,26 @@ int remove_peer_config_key(librados::IoCtx& io_ctx,
   return 0;
 }
 
+std::string get_mon_host(CephContext* cct) {
+  std::string mon_host;
+  if (auto mon_addrs = cct->get_mon_addrs();
+      mon_addrs != nullptr && !mon_addrs->empty()) {
+    CachedStackStringStream css;
+    for (auto it = mon_addrs->begin(); it != mon_addrs->end(); ++it) {
+      if (it != mon_addrs->begin()) {
+        *css << ",";
+      }
+      *css << *it;
+    }
+    mon_host = css->str();
+  } else {
+    ldout(cct, 20) << "falling back to mon_host in conf" << dendl;
+    mon_host = cct->_conf.get_val<std::string>("mon_host");
+  }
+  ldout(cct, 20) << "mon_host=" << mon_host << dendl;
+  return mon_host;
+}
+
 int create_bootstrap_user(CephContext* cct, librados::Rados& rados,
                           std::string* peer_client_id, std::string* cephx_key) {
   ldout(cct, 20) << dendl;
@@ -1298,8 +1318,7 @@ int Mirror<I>::peer_bootstrap_create(librados::IoCtx& io_ctx,
     return r;
   }
 
-  std::string mon_host = cct->_conf.get_val<std::string>("mon_host");
-  ldout(cct, 20) << "mon_host=" << mon_host << dendl;
+  std::string mon_host = get_mon_host(cct);
 
   // format the token response
   bufferlist token_bl;
@@ -1471,7 +1490,7 @@ int Mirror<I>::peer_bootstrap_import(librados::IoCtx& io_ctx,
       return r;
     }
 
-    std::string local_mon_host = cct->_conf.get_val<std::string>("mon_host");
+    std::string local_mon_host = get_mon_host(cct);
 
     // create local cluster peer in remote cluster
     r = create_bootstrap_peer(cct, remote_io_ctx,
index 49f4161effe07fbf2874325df16ae59d135be3e2..580726ddffc67e7b93eeab9798649bece78ecbd5 100644 (file)
@@ -314,8 +314,7 @@ void AbstractWriteLog<I>::log_perf() {
 
 template <typename I>
 void AbstractWriteLog<I>::periodic_stats() {
-  std::lock_guard locker(m_lock);
-  update_image_cache_state();
+  std::unique_lock locker(m_lock);
   ldout(m_image_ctx.cct, 5) << "STATS: m_log_entries=" << m_log_entries.size()
                             << ", m_dirty_log_entries=" << m_dirty_log_entries.size()
                             << ", m_free_log_entries=" << m_free_log_entries
@@ -328,6 +327,9 @@ void AbstractWriteLog<I>::periodic_stats() {
                             << ", m_current_sync_gen=" << m_current_sync_gen
                             << ", m_flushed_sync_gen=" << m_flushed_sync_gen
                             << dendl;
+
+  update_image_cache_state();
+  write_image_cache_state(locker);
 }
 
 template <typename I>
@@ -570,15 +572,15 @@ void AbstractWriteLog<I>::pwl_init(Context *on_finish, DeferredContexts &later)
 }
 
 template <typename I>
-void AbstractWriteLog<I>::update_image_cache_state() {
+void AbstractWriteLog<I>::write_image_cache_state(std::unique_lock<ceph::mutex>& locker) {
   using klass = AbstractWriteLog<I>;
   Context *ctx = util::create_context_callback<
-                 klass, &klass::handle_update_image_cache_state>(this);
-  update_image_cache_state(ctx);
+                 klass, &klass::handle_write_image_cache_state>(this);
+  m_cache_state->write_image_cache_state(locker, ctx);
 }
 
 template <typename I>
-void AbstractWriteLog<I>::update_image_cache_state(Context *on_finish) {
+void AbstractWriteLog<I>::update_image_cache_state() {
   ldout(m_image_ctx.cct, 10) << dendl;
 
   ceph_assert(ceph_mutex_is_locked_by_me(m_lock));
@@ -593,11 +595,10 @@ void AbstractWriteLog<I>::update_image_cache_state(Context *on_finish) {
   m_cache_state->hit_bytes = m_perfcounter->get(l_librbd_pwl_rd_hit_bytes);
   m_cache_state->miss_bytes = m_perfcounter->get(l_librbd_pwl_rd_bytes) -
       m_cache_state->hit_bytes;
-  m_cache_state->write_image_cache_state(on_finish);
 }
 
 template <typename I>
-void AbstractWriteLog<I>::handle_update_image_cache_state(int r) {
+void AbstractWriteLog<I>::handle_write_image_cache_state(int r) {
   CephContext *cct = m_image_ctx.cct;
   ldout(cct, 10) << "r=" << r << dendl;
 
@@ -622,8 +623,9 @@ void AbstractWriteLog<I>::init(Context *on_finish) {
   Context *ctx = new LambdaContext(
     [this, on_finish](int r) {
       if (r >= 0) {
-        std::lock_guard locker(m_lock);
-        update_image_cache_state(on_finish);
+        std::unique_lock locker(m_lock);
+        update_image_cache_state();
+        m_cache_state->write_image_cache_state(locker, on_finish);
       } else {
         on_finish->complete(r);
       }
@@ -654,14 +656,15 @@ void AbstractWriteLog<I>::shut_down(Context *on_finish) {
       Context *next_ctx = override_ctx(r, ctx);
       periodic_stats();
 
-      std::lock_guard locker(m_lock);
+      std::unique_lock locker(m_lock);
       check_image_cache_state_clean();
       m_wake_up_enabled = false;
       m_log_entries.clear();
       m_cache_state->clean = true;
       m_cache_state->empty = true;
       remove_pool_file();
-      update_image_cache_state(next_ctx);
+      update_image_cache_state();
+      m_cache_state->write_image_cache_state(locker, next_ctx);
     });
   ctx = new LambdaContext(
     [this, ctx](int r) {
@@ -1305,6 +1308,7 @@ void AbstractWriteLog<I>::complete_op_log_entries(GenericLogOperations &&ops,
 {
   GenericLogEntries dirty_entries;
   int published_reserves = 0;
+  bool need_update_state = false;
   ldout(m_image_ctx.cct, 20) << __func__ << ": completing" << dendl;
   for (auto &op : ops) {
     utime_t now = ceph_clock_now();
@@ -1327,6 +1331,7 @@ void AbstractWriteLog<I>::complete_op_log_entries(GenericLogOperations &&ops,
       if (m_cache_state->clean && !this->m_dirty_log_entries.empty()) {
         m_cache_state->clean = false;
         update_image_cache_state();
+        need_update_state = true;
       }
     }
     op->complete(result);
@@ -1342,6 +1347,10 @@ void AbstractWriteLog<I>::complete_op_log_entries(GenericLogOperations &&ops,
                       log_entry->ram_entry.write_bytes);
     m_perfcounter->tinc(l_librbd_pwl_log_op_app_to_cmp_t, now - op->log_append_start_time);
   }
+  if (need_update_state) {
+    std::unique_lock locker(m_lock);
+    write_image_cache_state(locker);
+  }
   // New entries may be flushable
   {
     std::lock_guard locker(m_lock);
@@ -1738,6 +1747,7 @@ void AbstractWriteLog<I>::process_writeback_dirty_entries() {
   bool all_clean = false;
   int flushed = 0;
   bool has_write_entry = false;
+  bool need_update_state = false;
 
   ldout(cct, 20) << "Look for dirty entries" << dendl;
   {
@@ -1760,6 +1770,7 @@ void AbstractWriteLog<I>::process_writeback_dirty_entries() {
         if (!m_cache_state->clean && all_clean) {
           m_cache_state->clean = true;
           update_image_cache_state();
+          need_update_state = true;
         }
         break;
       }
@@ -1791,6 +1802,10 @@ void AbstractWriteLog<I>::process_writeback_dirty_entries() {
 
     construct_flush_entries(entries_to_flush, post_unlock, has_write_entry);
   }
+  if (need_update_state) {
+    std::unique_lock locker(m_lock);
+    write_image_cache_state(locker);
+  }
 
   if (all_clean) {
     /* All flushing complete, drain outside lock */
@@ -2007,14 +2022,15 @@ void AbstractWriteLog<I>::flush_dirty_entries(Context *on_finish) {
   bool stop_flushing;
 
   {
-    std::lock_guard locker(m_lock);
+    std::unique_lock locker(m_lock);
     flushing = (0 != m_flush_ops_in_flight);
     all_clean = m_dirty_log_entries.empty();
+    stop_flushing = (m_shutting_down);
     if (!m_cache_state->clean && all_clean && !flushing) {
       m_cache_state->clean = true;
       update_image_cache_state();
+      write_image_cache_state(locker);
     }
-    stop_flushing = (m_shutting_down);
   }
 
   if (!flushing && (all_clean || stop_flushing)) {
index 4905edde6e770d1aba52078e916e935bc3a69c04..ffe299c37d3e3d2cfc7d088722bf96cb1095189c 100644 (file)
@@ -233,8 +233,6 @@ private:
   void arm_periodic_stats();
 
   void pwl_init(Context *on_finish, pwl::DeferredContexts &later);
-  void update_image_cache_state(Context *on_finish);
-  void handle_update_image_cache_state(int r);
   void check_image_cache_state_clean();
 
   void flush_dirty_entries(Context *on_finish);
@@ -399,6 +397,8 @@ protected:
     return 0;
   }
   void update_image_cache_state(void);
+  void write_image_cache_state(std::unique_lock<ceph::mutex>& locker);
+  void handle_write_image_cache_state(int r);
 };
 
 } // namespace pwl
index fe6e1087d05205df6ea0472f51f8f0474d82f40d..ab941df0f65fc38fdee9fd68f9642637cee7b7a9 100644 (file)
@@ -60,9 +60,10 @@ bool ImageCacheState<I>::init_from_metadata(json_spirit::mValue& json_root) {
 }
 
 template <typename I>
-void ImageCacheState<I>::write_image_cache_state(Context *on_finish) {
+void ImageCacheState<I>::write_image_cache_state(std::unique_lock<ceph::mutex>& locker,
+                                                 Context *on_finish) {
+  ceph_assert(ceph_mutex_is_locked_by_me(*locker.mutex()));
   stats_timestamp = ceph_clock_now();
-  std::shared_lock owner_lock{m_image_ctx->owner_lock};
   json_spirit::mObject o;
   o["present"] = present;
   o["empty"] = empty;
@@ -82,7 +83,9 @@ void ImageCacheState<I>::write_image_cache_state(Context *on_finish) {
   o["hit_bytes"] = hit_bytes;
   o["miss_bytes"] = miss_bytes;
   std::string image_state_json = json_spirit::write(o);
+  locker.unlock();
 
+  std::shared_lock owner_lock{m_image_ctx->owner_lock};
   ldout(m_image_ctx->cct, 20) << __func__ << " Store state: "
                               << image_state_json << dendl;
   m_plugin_api.execute_image_metadata_set(m_image_ctx, PERSISTENT_CACHE_STATE,
index c2fd4b778253f8d89fe0b5430ad2ad1b162a4b78..5be5f73ac1513539db28ddfb881ad029e71b0b0e 100644 (file)
@@ -63,7 +63,8 @@ public:
   void init_from_config();
   bool init_from_metadata(json_spirit::mValue& json_root);
 
-  void write_image_cache_state(Context *on_finish);
+  void write_image_cache_state(std::unique_lock<ceph::mutex>& locker,
+                               Context *on_finish);
 
   void clear_image_cache_state(Context *on_finish);
 
index 41bdafe5b9e3d148c4819ffd2e9a3506d9d0f7e9..e922ba543aa27852f0b9498a311ac76106a133c7 100644 (file)
@@ -104,7 +104,7 @@ void WriteLog<I>::alloc_op_log_entries(GenericLogOperations &ops)
   ceph_assert(ceph_mutex_is_locked_by_me(this->m_log_append_lock));
 
   /* Allocate the (already reserved) log entries */
-  std::lock_guard locker(m_lock);
+  std::unique_lock locker(m_lock);
 
   for (auto &operation : ops) {
     uint32_t entry_index = this->m_first_free_entry;
@@ -120,6 +120,7 @@ void WriteLog<I>::alloc_op_log_entries(GenericLogOperations &ops)
   if (m_cache_state->empty && !m_log_entries.empty()) {
     m_cache_state->empty = false;
     this->update_image_cache_state();
+    this->write_image_cache_state(locker);
   }
 }
 
@@ -547,6 +548,7 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
     m_perfcounter->hinc(l_librbd_pwl_retire_tx_t_hist, utime_t(tx_end - tx_start).to_nsec(),
         retiring_entries.size());
 
+    bool need_update_state = false;
     /* Update runtime copy of first_valid, and free entries counts */
     {
       std::lock_guard locker(m_lock);
@@ -557,6 +559,7 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
       if (!m_cache_state->empty && m_log_entries.empty()) {
         m_cache_state->empty = true;
         this->update_image_cache_state();
+        need_update_state = true;
       }
       for (auto &entry: retiring_entries) {
         if (entry->write_bytes()) {
@@ -573,6 +576,10 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
       this->m_alloc_failed_since_retire = false;
       this->wake_up();
     }
+    if (need_update_state) {
+      std::unique_lock locker(m_lock);
+      this->write_image_cache_state(locker);
+    }
   } else {
     ldout(cct, 20) << "Nothing to retire" << dendl;
     return false;
index 2c0dc258b86fb5dc03adf368b42e34dac934a41e..753b15b69f7f953e351f45bc5e0967966aa96a3c 100644 (file)
@@ -531,7 +531,7 @@ void WriteLog<I>::release_ram(std::shared_ptr<GenericLogEntry> log_entry) {
 
 template <typename I>
 void WriteLog<I>::alloc_op_log_entries(GenericLogOperations &ops) {
-  std::lock_guard locker(m_lock);
+  std::unique_lock locker(m_lock);
 
   for (auto &operation : ops) {
     auto &log_entry = operation->get_log_entry();
@@ -542,6 +542,7 @@ void WriteLog<I>::alloc_op_log_entries(GenericLogOperations &ops) {
   if (m_cache_state->empty && !m_log_entries.empty()) {
     m_cache_state->empty = false;
     this->update_image_cache_state();
+    this->write_image_cache_state(locker);
   }
 }
 
@@ -807,6 +808,7 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
             allocated_bytes += entry->get_aligned_data_size();
           }
         }
+        bool need_update_state = false;
         {
           std::lock_guard locker(m_lock);
           m_first_valid_entry = first_valid_entry;
@@ -818,6 +820,7 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
           if (!m_cache_state->empty && m_log_entries.empty()) {
             m_cache_state->empty = true;
             this->update_image_cache_state();
+            need_update_state = true;
           }
 
           ldout(m_image_ctx.cct, 20)
@@ -832,6 +835,10 @@ bool WriteLog<I>::retire_entries(const unsigned long int frees_per_tx) {
           this->m_alloc_failed_since_retire = false;
           this->wake_up();
         }
+        if (need_update_state) {
+          std::unique_lock locker(m_lock);
+          this->write_image_cache_state(locker);
+        }
 
         this->dispatch_deferred_writes();
         this->process_writeback_dirty_entries();
index 2338dfde9d63bea340b6d096b423f619c30fa47c..08e959dd572325f74beda92c334167a29836e0ab 100644 (file)
@@ -5,6 +5,7 @@
 #include "ObjectCopyRequest.h"
 #include "common/errno.h"
 #include "librbd/Utils.h"
+#include "librbd/asio/ContextWQ.h"
 #include "librbd/deep_copy/Handler.h"
 #include "librbd/deep_copy/Utils.h"
 #include "librbd/object_map/DiffRequest.h"
@@ -18,6 +19,7 @@
 namespace librbd {
 namespace deep_copy {
 
+using librbd::util::create_async_context_callback;
 using librbd::util::create_context_callback;
 using librbd::util::unique_lock_name;
 
@@ -145,11 +147,8 @@ void ImageCopyRequest<I>::send_object_copies() {
 
     // attempt to schedule at least 'max_ops' initial requests where
     // some objects might be skipped if fast-diff notes no change
-    while (m_current_ops < max_ops) {
-      int r = send_next_object_copy();
-      if (r < 0) {
-        break;
-      }
+    for (uint64_t i = 0; i < max_ops; i++) {
+      send_next_object_copy();
     }
 
     complete = (m_current_ops == 0) && !m_updating_progress;
@@ -161,7 +160,7 @@ void ImageCopyRequest<I>::send_object_copies() {
 }
 
 template <typename I>
-int ImageCopyRequest<I>::send_next_object_copy() {
+void ImageCopyRequest<I>::send_next_object_copy() {
   ceph_assert(ceph_mutex_is_locked(m_lock));
 
   if (m_canceled && m_ret_val == 0) {
@@ -169,13 +168,18 @@ int ImageCopyRequest<I>::send_next_object_copy() {
     m_ret_val = -ECANCELED;
   }
 
-  if (m_ret_val < 0) {
-    return m_ret_val;
-  } else if (m_object_no >= m_end_object_no) {
-    return -ENODATA;
+  if (m_ret_val < 0 || m_object_no >= m_end_object_no) {
+    return;
   }
 
   uint64_t ono = m_object_no++;
+  Context *ctx = new LambdaContext(
+    [this, ono](int r) {
+      handle_object_copy(ono, r);
+    });
+
+  ldout(m_cct, 20) << "object_num=" << ono << dendl;
+  ++m_current_ops;
 
   uint8_t object_diff_state = object_map::DIFF_STATE_HOLE;
   if (m_object_diff_state.size() > 0) {
@@ -199,13 +203,11 @@ int ImageCopyRequest<I>::send_next_object_copy() {
 
     if (object_diff_state == object_map::DIFF_STATE_HOLE) {
       ldout(m_cct, 20) << "skipping non-existent object " << ono << dendl;
-      return 1;
+      create_async_context_callback(*m_src_image_ctx, ctx)->complete(0);
+      return;
     }
   }
 
-  ldout(m_cct, 20) << "object_num=" << ono << dendl;
-  ++m_current_ops;
-
   uint32_t flags = 0;
   if (m_flatten) {
     flags |= OBJECT_COPY_REQUEST_FLAG_FLATTEN;
@@ -215,15 +217,10 @@ int ImageCopyRequest<I>::send_next_object_copy() {
     flags |= OBJECT_COPY_REQUEST_FLAG_EXISTS_CLEAN;
   }
 
-  Context *ctx = new LambdaContext(
-    [this, ono](int r) {
-      handle_object_copy(ono, r);
-    });
   auto req = ObjectCopyRequest<I>::create(
     m_src_image_ctx, m_dst_image_ctx, m_src_snap_id_start, m_dst_snap_id_start,
     m_snap_map, ono, flags, m_handler, ctx);
   req->send();
-  return 0;
 }
 
 template <typename I>
@@ -258,13 +255,7 @@ void ImageCopyRequest<I>::handle_object_copy(uint64_t object_no, int r) {
       }
     }
 
-    while (true) {
-      r = send_next_object_copy();
-      if (r != 1) {
-        break;
-      }
-    }
-
+    send_next_object_copy();
     complete = (m_current_ops == 0) && !m_updating_progress;
   }
 
index 9b7934dd35adb9ae98ee3f0b7beb2015d7b2bd66..cb8b83781a5c55908df397fe4beb1444bf8fd1bb 100644 (file)
@@ -109,7 +109,7 @@ private:
   void handle_compute_diff(int r);
 
   void send_object_copies();
-  int send_next_object_copy();
+  void send_next_object_copy();
   void handle_object_copy(uint64_t object_no, int r);
 
   void finish(int r);
index 9b7138815af550a666672076173af9aaf1aa1b65..24159c55bf2825dfa24f555b1493937b28ff8999 100644 (file)
@@ -67,6 +67,7 @@ void RefreshRequest<I>::send() {
 template <typename I>
 void RefreshRequest<I>::send_get_migration_header() {
   if (m_image_ctx.ignore_migrating) {
+    m_migration_spec = {};
     if (m_image_ctx.old_format) {
       send_v1_get_snapshots();
     } else {
@@ -95,7 +96,7 @@ Context *RefreshRequest<I>::handle_get_migration_header(int *result) {
   CephContext *cct = m_image_ctx.cct;
   ldout(cct, 10) << this << " " << __func__ << ": r=" << *result << dendl;
 
-  if (*result == 0) {
+  if (*result >= 0) {
     auto it = m_out_bl.cbegin();
     *result = cls_client::migration_get_finish(&it, &m_migration_spec);
   } else if (*result == -ENOENT) {
@@ -222,6 +223,7 @@ Context *RefreshRequest<I>::handle_v1_read_header(int *result) {
   if (migrating) {
     send_get_migration_header();
   } else {
+    m_migration_spec = {};
     send_v1_get_snapshots();
   }
   return nullptr;
@@ -252,7 +254,7 @@ Context *RefreshRequest<I>::handle_v1_get_snapshots(int *result) {
 
   std::vector<std::string> snap_names;
   std::vector<uint64_t> snap_sizes;
-  if (*result == 0) {
+  if (*result >= 0) {
     auto it = m_out_bl.cbegin();
     *result = cls_client::old_snapshot_list_finish(&it, &snap_names,
                                                    &snap_sizes, &m_snapc);
@@ -305,15 +307,16 @@ Context *RefreshRequest<I>::handle_v1_get_locks(int *result) {
   ldout(cct, 10) << this << " " << __func__ << ": "
                  << "r=" << *result << dendl;
 
-  if (*result == 0) {
+  if (*result >= 0) {
     auto it = m_out_bl.cbegin();
     ClsLockType lock_type;
     *result = rados::cls::lock::get_lock_info_finish(&it, &m_lockers,
                                                      &lock_type, &m_lock_tag);
-    if (*result == 0) {
+    if (*result >= 0) {
       m_exclusive_locked = (lock_type == ClsLockType::EXCLUSIVE);
     }
   }
+
   if (*result < 0) {
     lderr(cct) << "failed to retrieve locks: " << cpp_strerror(*result)
                << dendl;
@@ -405,10 +408,10 @@ Context *RefreshRequest<I>::handle_v2_get_mutable_metadata(int *result) {
   }
 
   if (*result >= 0) {
-    ClsLockType lock_type = ClsLockType::NONE;
+    ClsLockType lock_type;
     *result = rados::cls::lock::get_lock_info_finish(&it, &m_lockers,
                                                      &lock_type, &m_lock_tag);
-    if (*result == 0) {
+    if (*result >= 0) {
       m_exclusive_locked = (lock_type == ClsLockType::EXCLUSIVE);
     }
   }
@@ -436,6 +439,8 @@ Context *RefreshRequest<I>::handle_v2_get_mutable_metadata(int *result) {
     ldout(cct, 5) << "ignoring dynamically disabled exclusive lock" << dendl;
     m_features |= RBD_FEATURE_EXCLUSIVE_LOCK;
     m_incomplete_update = true;
+  } else {
+    m_incomplete_update = false;
   }
 
   if (((m_incompatible_features & RBD_FEATURE_NON_PRIMARY) != 0U) &&
@@ -453,6 +458,7 @@ Context *RefreshRequest<I>::handle_v2_get_mutable_metadata(int *result) {
   }
   m_read_only = (m_read_only_flags != 0U);
 
+  m_legacy_parent = false;
   send_v2_get_parent();
   return nullptr;
 }
@@ -488,20 +494,25 @@ Context *RefreshRequest<I>::handle_v2_get_parent(int *result) {
 
   auto it = m_out_bl.cbegin();
   if (!m_legacy_parent) {
-    if (*result == 0) {
+    if (*result >= 0) {
       *result = cls_client::parent_get_finish(&it, &m_parent_md.spec);
     }
 
     std::optional<uint64_t> parent_overlap;
-    if (*result == 0) {
+    if (*result >= 0) {
       *result = cls_client::parent_overlap_get_finish(&it, &parent_overlap);
     }
 
-    if (*result == 0 && parent_overlap) {
-      m_parent_md.overlap = *parent_overlap;
-      m_head_parent_overlap = true;
+    if (*result >= 0) {
+      if (parent_overlap) {
+        m_parent_md.overlap = *parent_overlap;
+        m_head_parent_overlap = true;
+      } else {
+        m_parent_md.overlap = 0;
+        m_head_parent_overlap = false;
+      }
     }
-  } else if (*result == 0) {
+  } else if (*result >= 0) {
     *result = cls_client::get_parent_finish(&it, &m_parent_md.spec,
                                             &m_parent_md.overlap);
     m_head_parent_overlap = true;
@@ -512,7 +523,7 @@ Context *RefreshRequest<I>::handle_v2_get_parent(int *result) {
     m_legacy_parent = true;
     send_v2_get_parent();
     return nullptr;
-  } if (*result < 0) {
+  } else if (*result < 0) {
     lderr(cct) << "failed to retrieve parent: " << cpp_strerror(*result)
                << dendl;
     return m_on_finish;
@@ -521,10 +532,10 @@ Context *RefreshRequest<I>::handle_v2_get_parent(int *result) {
   if ((m_features & RBD_FEATURE_MIGRATING) != 0) {
     ldout(cct, 1) << "migrating feature set" << dendl;
     send_get_migration_header();
-    return nullptr;
+  } else {
+    m_migration_spec = {};
+    send_v2_get_metadata();
   }
-
-  send_v2_get_metadata();
   return nullptr;
 }
 
@@ -535,6 +546,7 @@ void RefreshRequest<I>::send_v2_get_metadata() {
 
   auto ctx = create_context_callback<
     RefreshRequest<I>, &RefreshRequest<I>::handle_v2_get_metadata>(this);
+  m_metadata.clear();
   auto req = GetMetadataRequest<I>::create(
     m_image_ctx.md_ctx, m_image_ctx.header_oid, true,
     ImageCtx::METADATA_CONF_PREFIX, ImageCtx::METADATA_CONF_PREFIX, 0U,
@@ -591,6 +603,7 @@ Context *RefreshRequest<I>::handle_v2_get_pool_metadata(int *result) {
 template <typename I>
 void RefreshRequest<I>::send_v2_get_op_features() {
   if ((m_features & RBD_FEATURE_OPERATIONS) == 0LL) {
+    m_op_features = 0;
     send_v2_get_group();
     return;
   }
@@ -618,10 +631,12 @@ Context *RefreshRequest<I>::handle_v2_get_op_features(int *result) {
 
   // -EOPNOTSUPP handler not required since feature bit implies OSD
   // supports the method
-  if (*result == 0) {
+  if (*result >= 0) {
     auto it = m_out_bl.cbegin();
-    cls_client::op_features_get_finish(&it, &m_op_features);
-  } else if (*result < 0) {
+    *result = cls_client::op_features_get_finish(&it, &m_op_features);
+  }
+
+  if (*result < 0) {
     lderr(cct) << "failed to retrieve op features: " << cpp_strerror(*result)
                << dendl;
     return m_on_finish;
@@ -655,16 +670,20 @@ Context *RefreshRequest<I>::handle_v2_get_group(int *result) {
   ldout(cct, 10) << this << " " << __func__ << ": "
                  << "r=" << *result << dendl;
 
-  if (*result == 0) {
+  if (*result >= 0) {
     auto it = m_out_bl.cbegin();
-    cls_client::image_group_get_finish(&it, &m_group_spec);
+    *result = cls_client::image_group_get_finish(&it, &m_group_spec);
   }
-  if (*result < 0 && *result != -EOPNOTSUPP) {
+
+  if (*result == -EOPNOTSUPP) {
+    m_group_spec = {};
+  } else if (*result < 0) {
     lderr(cct) << "failed to retrieve group: " << cpp_strerror(*result)
                << dendl;
     return m_on_finish;
   }
 
+  m_legacy_snapshot = LEGACY_SNAPSHOT_DISABLED;
   send_v2_get_snapshots();
   return nullptr;
 }
@@ -754,16 +773,20 @@ Context *RefreshRequest<I>::handle_v2_get_snapshots(int *result) {
       *result = cls_client::snapshot_get_finish(&it, &m_snap_infos[i]);
     }
 
-    if (*result == 0) {
+    if (*result >= 0) {
       if (m_legacy_parent) {
         *result = cls_client::get_parent_finish(&it, &m_snap_parents[i].spec,
                                                 &m_snap_parents[i].overlap);
       } else {
         std::optional<uint64_t> parent_overlap;
         *result = cls_client::parent_overlap_get_finish(&it, &parent_overlap);
-        if (*result == 0 && parent_overlap && m_parent_md.spec.pool_id > -1) {
-          m_snap_parents[i].spec = m_parent_md.spec;
-          m_snap_parents[i].overlap = *parent_overlap;
+        if (*result >= 0) {
+          if (parent_overlap && m_parent_md.spec.pool_id > -1) {
+            m_snap_parents[i].spec = m_parent_md.spec;
+            m_snap_parents[i].overlap = *parent_overlap;
+          } else {
+            m_snap_parents[i] = {};
+          }
         }
       }
     }
@@ -782,8 +805,8 @@ Context *RefreshRequest<I>::handle_v2_get_snapshots(int *result) {
     }
   }
 
-  if (*result == -ENOENT) {
-    ldout(cct, 10) << "out-of-sync snapshot state detected" << dendl;
+  if (*result == -ENOENT && m_enoent_retries++ < MAX_ENOENT_RETRIES) {
+    ldout(cct, 10) << "out-of-sync snapshot state detected, retrying" << dendl;
     send_v2_get_mutable_metadata();
     return nullptr;
   } else if (m_legacy_snapshot == LEGACY_SNAPSHOT_DISABLED &&
@@ -842,7 +865,14 @@ Context *RefreshRequest<I>::handle_v2_refresh_parent(int *result) {
   CephContext *cct = m_image_ctx.cct;
   ldout(cct, 10) << this << " " << __func__ << ": r=" << *result << dendl;
 
-  if (*result < 0) {
+  if (*result == -ENOENT && m_enoent_retries++ < MAX_ENOENT_RETRIES) {
+    ldout(cct, 10) << "out-of-sync parent info detected, retrying" << dendl;
+    ceph_assert(m_refresh_parent != nullptr);
+    delete m_refresh_parent;
+    m_refresh_parent = nullptr;
+    send_v2_get_mutable_metadata();
+    return nullptr;
+  } else if (*result < 0) {
     lderr(cct) << "failed to refresh parent image: " << cpp_strerror(*result)
                << dendl;
     save_result(result);
index 6970a9b45626cd8e62759335cc45add3372f8084..42f4b4669ef2c98b48694759851255ad3790fea8 100644 (file)
@@ -27,6 +27,8 @@ template<typename> class RefreshParentRequest;
 template<typename ImageCtxT = ImageCtx>
 class RefreshRequest {
 public:
+  static constexpr int MAX_ENOENT_RETRIES = 10;
+
   static RefreshRequest *create(ImageCtxT &image_ctx, bool acquiring_lock,
                                 bool skip_open_parent, Context *on_finish) {
     return new RefreshRequest(image_ctx, acquiring_lock, skip_open_parent,
@@ -50,37 +52,37 @@ private:
    *  * |                                                     |     migrating)
    *  * | (v2)                                                v
    *  * \-----> V2_GET_MUTABLE_METADATA                   V1_GET_SNAPSHOTS
-   *  *             |                                         |
-   *  *             |     -EOPNOTSUPP                         v
-   *  *             |  * * *                              V1_GET_LOCKS
-   *  *             |  *   *                                  |
-   *  *             v  v   *                                  v
-   *  *         V2_GET_PARENT                              <apply>
-   *  *             |                                         |
+   *  *    *        |                                         |
+   *  *    *        |     -EOPNOTSUPP                         v
+   *  *    *        |  * * *                              V1_GET_LOCKS
+   *  *    *        |  *   *                                  |
+   *  *    *        v  v   *                                  v
+   *  *    *    V2_GET_PARENT                              <apply>
+   *  *    *        |                                         |
    *  *             v                                         |
    *  * * * * * GET_MIGRATION_HEADER (skip if not             |
    *  (ENOENT)      |                 migrating)              |
    *                v                                         |
-   *            V2_GET_METADATA                               |
-   *                |                                         |
-   *                v                                         |
-   *            V2_GET_POOL_METADATA                          |
-   *                |                                         |
-   *                v (skip if not enabled)                   |
-   *            V2_GET_OP_FEATURES                            |
-   *                |                                         |
-   *                v                                         |
-   *            V2_GET_GROUP                                  |
-   *                |                                         |
-   *                |     -EOPNOTSUPP                         |
-   *                |   * * * *                               |
-   *                |   *     *                               |
-   *                v   v     *                               |
-   *            V2_GET_SNAPSHOTS (skip if no snaps)           |
-   *                |                                         |
-   *                v                                         |
-   *            V2_REFRESH_PARENT (skip if no parent or       |
-   *                |              refresh not needed)        |
+   *       *    V2_GET_METADATA                               |
+   *       *        |                                         |
+   *       *        v                                         |
+   *       *    V2_GET_POOL_METADATA                          |
+   *       *        |                                         |
+   *       *        v (skip if not enabled)                   |
+   *       *    V2_GET_OP_FEATURES                            |
+   *       *        |                                         |
+   *       *        v                                         |
+   *       *    V2_GET_GROUP                                  |
+   *       *        |                                         |
+   *       *        |        -EOPNOTSUPP                      |
+   *       *        |     * * *                               |
+   *       *        |     *   *                               |
+   *       *        v     v   *                               |
+   *        * * V2_GET_SNAPSHOTS (skip if no snaps)           |
+   *     (ENOENT)   |                                         |
+   *       *        v                                         |
+   *        * * V2_REFRESH_PARENT (skip if no parent or       |
+   *     (ENOENT)   |              refresh not needed)        |
    *                v                                         |
    *            V2_INIT_EXCLUSIVE_LOCK (skip if lock          |
    *                |                   active or disabled)   |
@@ -144,6 +146,8 @@ private:
   bool m_legacy_parent = false;
   LegacySnapshot m_legacy_snapshot = LEGACY_SNAPSHOT_DISABLED;
 
+  int m_enoent_retries = 0;
+
   uint8_t m_order = 0;
   uint64_t m_size = 0;
   uint64_t m_features = 0;
index b7ae9366e20e4f073fdea0f6ce3505c4705eced1..b119e4edcd95b3d761ea738743d173d66602b018 100644 (file)
@@ -59,7 +59,8 @@ void PromoteRequest<I>::handle_get_info(int r) {
     finish(-EINVAL);
     return;
   } else if (m_promotion_state == PROMOTION_STATE_NON_PRIMARY && !m_force) {
-    lderr(cct) << "image is still primary within a remote cluster" << dendl;
+    lderr(cct) << "image is primary within a remote cluster or demotion is not propagated yet"
+               << dendl;
     finish(-EBUSY);
     return;
   }
index 13f7894156ed16cc91513668cad470a9c0b384c9..54da9ad610933d67d72e95588a143a22f99ca0cc 100644 (file)
@@ -218,7 +218,7 @@ void CreatePrimaryRequest<I>::unlink_peer() {
         continue;
       }
       count++;
-      if (count == 3) {
+      if (count == max_snapshots) {
         unlink_snap_id = snap_it.first;
       }
       if (count > max_snapshots) {
index 766e4c5d26711e7a55b00eafebea1dc223e91bd0..78c92a3f1c655c28c583193bbc10538301c9f666 100644 (file)
@@ -14,6 +14,7 @@
 
 
 #include "common/dout.h"
+#include "common/likely.h"
 #include "common/HeartbeatMap.h"
 
 #include "include/stringify.h"
@@ -298,6 +299,11 @@ void Beacon::notify_health(MDSRank const *mds)
 
   health.metrics.clear();
 
+  if (unlikely(g_conf().get_val<bool>("mds_inject_health_dummy"))) {
+    MDSHealthMetric m(MDS_HEALTH_DUMMY, HEALTH_ERR, std::string("dummy"));
+    health.metrics.push_back(m);
+  }
+
   // Detect presence of entries in DamageTable
   if (!mds->damage_table.empty()) {
     MDSHealthMetric m(MDS_HEALTH_DAMAGE, HEALTH_ERR, std::string(
index b5012c340e843c00feb24d60bd5fe653da611327..7e18263d85704abe95858a3492c79c561e305bc1 100644 (file)
@@ -1474,6 +1474,20 @@ void CDir::mark_new(LogSegment *ls)
   mdcache->mds->queue_waiters(waiters);
 }
 
+void CDir::set_fresh_fnode(fnode_const_ptr&& ptr) {
+  ceph_assert(inode->is_auth());
+  ceph_assert(!is_projected());
+  ceph_assert(!state_test(STATE_COMMITTING));
+  reset_fnode(std::move(ptr));
+  projected_version = committing_version = committed_version = get_version();
+
+  if (state_test(STATE_REJOINUNDEF)) {
+    ceph_assert(mdcache->mds->is_rejoin());
+    state_clear(STATE_REJOINUNDEF);
+    mdcache->opened_undef_dirfrag(this);
+  }
+}
+
 void CDir::mark_clean()
 {
   dout(10) << __func__ << " " << *this << " version " << get_version() << dendl;
@@ -1548,16 +1562,9 @@ void CDir::fetch(MDSContext *c, std::string_view want_dn, bool ignore_authpinnab
       !inode->snaprealm) {
     dout(7) << "fetch dirfrag for unlinked directory, mark complete" << dendl;
     if (get_version() == 0) {
-      ceph_assert(inode->is_auth());
       auto _fnode = allocate_fnode();
       _fnode->version = 1;
-      reset_fnode(std::move(_fnode));
-
-      if (state_test(STATE_REJOINUNDEF)) {
-       ceph_assert(mdcache->mds->is_rejoin());
-       state_clear(STATE_REJOINUNDEF);
-       mdcache->opened_undef_dirfrag(this);
-      }
+      set_fresh_fnode(std::move(_fnode));
     }
     mark_complete();
 
@@ -2003,17 +2010,7 @@ void CDir::_omap_fetched(bufferlist& hdrbl, map<string, bufferlist>& omap,
   // take the loaded fnode?
   // only if we are a fresh CDir* with no prior state.
   if (get_version() == 0) {
-    ceph_assert(!is_projected());
-    ceph_assert(!state_test(STATE_COMMITTING));
-    auto _fnode = allocate_fnode(got_fnode);
-    reset_fnode(std::move(_fnode));
-    projected_version = committing_version = committed_version = get_version();
-
-    if (state_test(STATE_REJOINUNDEF)) {
-      ceph_assert(mdcache->mds->is_rejoin());
-      state_clear(STATE_REJOINUNDEF);
-      mdcache->opened_undef_dirfrag(this);
-    }
+    set_fresh_fnode(allocate_fnode(got_fnode));
   }
 
   list<CInode*> undef_inodes;
index c8d3e417ad49a154a50de003779867198d8c8c56..b2dcdafde756b57a2f363a1290c3ddbb936fdd2c 100644 (file)
@@ -247,6 +247,7 @@ public:
   void reset_fnode(fnode_const_ptr&& ptr) {
     fnode = std::move(ptr);
   }
+  void set_fresh_fnode(fnode_const_ptr&& ptr);
 
   const fnode_const_ptr& get_fnode() const {
     return fnode;
index 370fdfbd47f632563d95f74c2eab214accd72b98..1231ca293624581b522e28f628d0bc47bee2b223 100644 (file)
@@ -2037,10 +2037,11 @@ void CInode::decode_lock_inest(bufferlist::const_iterator& p)
 
 void CInode::encode_lock_ixattr(bufferlist& bl)
 {
-  ENCODE_START(1, 1, bl);
+  ENCODE_START(2, 1, bl);
   encode(get_inode()->version, bl);
   encode(get_inode()->ctime, bl);
   encode_xattrs(bl);
+  encode(get_inode()->xattr_version, bl);
   ENCODE_FINISH(bl);
 }
 
@@ -2048,13 +2049,16 @@ void CInode::decode_lock_ixattr(bufferlist::const_iterator& p)
 {
   ceph_assert(!is_auth());
   auto _inode = allocate_inode(*get_inode());
-  DECODE_START(1, p);
+  DECODE_START(2, p);
   decode(_inode->version, p);
   utime_t tm;
   decode(tm, p);
   if (_inode->ctime < tm)
     _inode->ctime = tm;
   decode_xattrs(p);
+  if (struct_v >= 2) {
+    decode(_inode->xattr_version, p);
+  }
   DECODE_FINISH(p);
   reset_inode(std::move(_inode));
 }
index bacc79a10381d63bdfc29cb1c0a357a18e4b05a1..a73c4225cbf27d58986db974401249b03058faee 100644 (file)
@@ -1201,7 +1201,6 @@ void Locker::eval_gather(SimpleLock *lock, bool first, bool *pneed_issue, MDSCon
 
       if (lock->is_dirty() && !lock->is_flushed()) {
        scatter_writebehind(static_cast<ScatterLock *>(lock));
-       mds->mdlog->flush();
        return;
       }
       lock->clear_flushed();
@@ -2230,7 +2229,11 @@ Capability* Locker::issue_new_caps(CInode *in,
     // [auth] twiddle mode?
     eval(in, CEPH_CAP_LOCKS);
 
-    if (_need_flush_mdlog(in, my_want))
+    int all_allowed = -1, loner_allowed = -1, xlocker_allowed = -1;
+    int allowed = get_allowed_caps(in, cap, all_allowed, loner_allowed,
+                                   xlocker_allowed);
+
+    if (_need_flush_mdlog(in, my_want & ~allowed, true))
       mds->mdlog->flush();
 
   } else {
@@ -2269,30 +2272,64 @@ public:
   }
 };
 
-int Locker::issue_caps(CInode *in, Capability *only_cap)
+int Locker::get_allowed_caps(CInode *in, Capability *cap,
+                             int &all_allowed, int &loner_allowed,
+                             int &xlocker_allowed)
 {
+  client_t client = cap->get_client();
+
   // allowed caps are determined by the lock mode.
-  int all_allowed = in->get_caps_allowed_by_type(CAP_ANY);
-  int loner_allowed = in->get_caps_allowed_by_type(CAP_LONER);
-  int xlocker_allowed = in->get_caps_allowed_by_type(CAP_XLOCKER);
+  if (all_allowed == -1)
+    all_allowed = in->get_caps_allowed_by_type(CAP_ANY);
+  if (loner_allowed == -1)
+    loner_allowed = in->get_caps_allowed_by_type(CAP_LONER);
+  if (xlocker_allowed == -1)
+    xlocker_allowed = in->get_caps_allowed_by_type(CAP_XLOCKER);
 
   client_t loner = in->get_loner();
   if (loner >= 0) {
-    dout(7) << "issue_caps loner client." << loner
+    dout(7) << "get_allowed_caps loner client." << loner
            << " allowed=" << ccap_string(loner_allowed) 
            << ", xlocker allowed=" << ccap_string(xlocker_allowed)
            << ", others allowed=" << ccap_string(all_allowed)
            << " on " << *in << dendl;
   } else {
-    dout(7) << "issue_caps allowed=" << ccap_string(all_allowed) 
+    dout(7) << "get_allowed_caps allowed=" << ccap_string(all_allowed) 
            << ", xlocker allowed=" << ccap_string(xlocker_allowed)
            << " on " << *in << dendl;
   }
 
-  ceph_assert(in->is_head());
+  // do not issue _new_ bits when size|mtime is projected
+  int allowed;
+  if (loner == client)
+    allowed = loner_allowed;
+  else
+    allowed = all_allowed;
 
+  // add in any xlocker-only caps (for locks this client is the xlocker for)
+  allowed |= xlocker_allowed & in->get_xlocker_mask(client);
+  if (in->is_dir()) {
+    allowed &= ~CEPH_CAP_ANY_DIR_OPS;
+    if (allowed & CEPH_CAP_FILE_EXCL)
+      allowed |= cap->get_lock_cache_allowed();
+  }
+
+  if ((in->get_inode()->inline_data.version != CEPH_INLINE_NONE &&
+       cap->is_noinline()) ||
+      (!in->get_inode()->layout.pool_ns.empty() &&
+       cap->is_nopoolns()))
+    allowed &= ~(CEPH_CAP_FILE_RD | CEPH_CAP_FILE_WR);
+
+  return allowed;
+}
+
+int Locker::issue_caps(CInode *in, Capability *only_cap)
+{
   // count conflicts with
-  int nissued = 0;        
+  int nissued = 0;
+  int all_allowed = -1, loner_allowed = -1, xlocker_allowed = -1;
+
+  ceph_assert(in->is_head());
 
   // client caps
   map<client_t, Capability>::iterator it;
@@ -2302,28 +2339,8 @@ int Locker::issue_caps(CInode *in, Capability *only_cap)
     it = in->client_caps.begin();
   for (; it != in->client_caps.end(); ++it) {
     Capability *cap = &it->second;
-
-    // do not issue _new_ bits when size|mtime is projected
-    int allowed;
-    if (loner == it->first)
-      allowed = loner_allowed;
-    else
-      allowed = all_allowed;
-
-    // add in any xlocker-only caps (for locks this client is the xlocker for)
-    allowed |= xlocker_allowed & in->get_xlocker_mask(it->first);
-    if (in->is_dir()) {
-      allowed &= ~CEPH_CAP_ANY_DIR_OPS;
-      if (allowed & CEPH_CAP_FILE_EXCL)
-       allowed |= cap->get_lock_cache_allowed();
-    }
-
-    if ((in->get_inode()->inline_data.version != CEPH_INLINE_NONE &&
-        cap->is_noinline()) ||
-       (!in->get_inode()->layout.pool_ns.empty() &&
-        cap->is_nopoolns()))
-      allowed &= ~(CEPH_CAP_FILE_RD | CEPH_CAP_FILE_WR);
-
+    int allowed = get_allowed_caps(in, cap, all_allowed, loner_allowed,
+                                   xlocker_allowed);
     int pending = cap->pending();
     int wanted = cap->wanted();
 
@@ -2934,18 +2951,18 @@ void Locker::share_inode_max_size(CInode *in, Capability *only_cap)
   }
 }
 
-bool Locker::_need_flush_mdlog(CInode *in, int wanted)
+bool Locker::_need_flush_mdlog(CInode *in, int wanted, bool lock_state_any)
 {
   /* flush log if caps are wanted by client but corresponding lock is unstable and locked by
    * pending mutations. */
   if (((wanted & (CEPH_CAP_FILE_RD|CEPH_CAP_FILE_WR|CEPH_CAP_FILE_SHARED|CEPH_CAP_FILE_EXCL)) &&
-       in->filelock.is_unstable_and_locked()) ||
+       (lock_state_any ? in->filelock.is_locked() : in->filelock.is_unstable_and_locked())) ||
       ((wanted & (CEPH_CAP_AUTH_SHARED|CEPH_CAP_AUTH_EXCL)) &&
-       in->authlock.is_unstable_and_locked()) ||
+       (lock_state_any ? in->authlock.is_locked() : in->authlock.is_unstable_and_locked())) ||
       ((wanted & (CEPH_CAP_LINK_SHARED|CEPH_CAP_LINK_EXCL)) &&
-       in->linklock.is_unstable_and_locked()) ||
+       (lock_state_any ? in->linklock.is_locked() : in->linklock.is_unstable_and_locked())) ||
       ((wanted & (CEPH_CAP_XATTR_SHARED|CEPH_CAP_XATTR_EXCL)) &&
-       in->xattrlock.is_unstable_and_locked()))
+       (lock_state_any ? in->xattrlock.is_locked() : in->xattrlock.is_unstable_and_locked())))
     return true;
   return false;
 }
@@ -4231,8 +4248,8 @@ void Locker::handle_client_lease(const cref_t<MClientLease> &m)
 }
 
 
-void Locker::issue_client_lease(CDentry *dn, MDRequestRef &mdr, int mask,
-                               utime_t now, bufferlist &bl)
+void Locker::issue_client_lease(CDentry *dn, CInode *in, MDRequestRef &mdr, utime_t now,
+                                bufferlist &bl)
 {
   client_t client = mdr->get_client();
   Session *session = mdr->session;
@@ -4243,6 +4260,17 @@ void Locker::issue_client_lease(CDentry *dn, MDRequestRef &mdr, int mask,
       !diri->is_stray() &&  // do not issue dn leases in stray dir!
       !diri->filelock.can_lease(client) &&
       !(diri->get_client_cap_pending(client) & (CEPH_CAP_FILE_SHARED | CEPH_CAP_FILE_EXCL))) {
+    int mask = 0;
+    CDentry::linkage_t *dnl = dn->get_linkage(client, mdr);
+    if (dnl->is_primary()) {
+      ceph_assert(dnl->get_inode() == in);
+      mask = CEPH_LEASE_PRIMARY_LINK;
+    } else {
+      if (dnl->is_remote())
+        ceph_assert(dnl->get_remote_ino() == in->ino());
+      else
+        ceph_assert(!in);
+    }
     // issue a dentry lease
     ClientLease *l = dn->add_client_lease(client, session);
     session->touch_lease(l);
@@ -4262,7 +4290,7 @@ void Locker::issue_client_lease(CDentry *dn, MDRequestRef &mdr, int mask,
   } else {
     // null lease
     LeaseStat lstat;
-    lstat.mask = mask;
+    lstat.mask = 0;
     lstat.alternate_name = std::string(dn->alternate_name);
     encode_lease(bl, session->info, lstat);
     dout(20) << "issue_client_lease no/null lease on " << *dn << dendl;
@@ -4669,7 +4697,6 @@ bool Locker::simple_sync(SimpleLock *lock, bool *need_issue)
     if (!gather && lock->is_dirty()) {
       lock->get_parent()->auth_pin(lock);
       scatter_writebehind(static_cast<ScatterLock*>(lock));
-      mds->mdlog->flush();
       return false;
     }
 
@@ -4828,7 +4855,6 @@ void Locker::simple_lock(SimpleLock *lock, bool *need_issue)
   if (!gather && lock->is_dirty()) {
     lock->get_parent()->auth_pin(lock);
     scatter_writebehind(static_cast<ScatterLock*>(lock));
-    mds->mdlog->flush();
     return;
   }
 
@@ -4970,6 +4996,7 @@ void Locker::scatter_writebehind(ScatterLock *lock)
   in->finish_scatter_gather_update_accounted(lock->get_type(), &le->metablob);
 
   mds->mdlog->submit_entry(le, new C_Locker_ScatterWB(this, lock, mut));
+  mds->mdlog->flush();
 }
 
 void Locker::scatter_writebehind_finish(ScatterLock *lock, MutationRef& mut)
index 9cc0b80ef7b132ed062b380fbb7c8bc424f958e7..3aff8db0bf17b9045380a3d0fef6c500da78f031 100644 (file)
@@ -164,6 +164,8 @@ public:
   // -- file i/o --
   version_t issue_file_data_version(CInode *in);
   Capability* issue_new_caps(CInode *in, int mode, MDRequestRef& mdr, SnapRealm *conrealm);
+  int get_allowed_caps(CInode *in, Capability *cap, int &all_allowed,
+                       int &loner_allowed, int &xlocker_allowed);
   int issue_caps(CInode *in, Capability *only_cap=0);
   void issue_caps_set(std::set<CInode*>& inset);
   void issue_truncate(CInode *in);
@@ -185,7 +187,7 @@ public:
   // -- client leases --
   void handle_client_lease(const cref_t<MClientLease> &m);
 
-  void issue_client_lease(CDentry *dn, MDRequestRef &mdr, int mask, utime_t now, bufferlist &bl);
+  void issue_client_lease(CDentry *dn, CInode *in, MDRequestRef &mdr, utime_t now, bufferlist &bl);
   void revoke_client_leases(SimpleLock *lock);
   static void encode_lease(bufferlist& bl, const session_info_t& info, const LeaseStat& ls);
 
@@ -212,7 +214,7 @@ protected:
 
   void scatter_writebehind_finish(ScatterLock *lock, MutationRef& mut);
 
-  bool _need_flush_mdlog(CInode *in, int wanted_caps);
+  bool _need_flush_mdlog(CInode *in, int wanted_caps, bool lock_state_any=false);
   void adjust_cap_wanted(Capability *cap, int wanted, int issue_seq);
   void handle_client_caps(const cref_t<MClientCaps> &m);
   void _update_cap_fields(CInode *in, int dirty, const cref_t<MClientCaps> &m, CInode::mempool_inode *pi);
index 8696c6d929aa8e98134b959c59132be417a3233a..387cd9b478b0e71c22f72dfb8207b390e6b74dbc 100644 (file)
@@ -6324,6 +6324,11 @@ void MDCache::identify_files_to_recover()
 {
   dout(10) << "identify_files_to_recover" << dendl;
   int count = 0;
+
+  // Clear the recover and check queues in case the monitor sends rejoin mdsmap twice.
+  rejoin_recover_q.clear();
+  rejoin_check_q.clear();
+
   for (auto &p : inode_map) {
     CInode *in = p.second;
     if (!in->is_auth())
@@ -7888,7 +7893,7 @@ bool MDCache::shutdown_pass()
 
   // (only do this once!)
   if (!mds->mdlog->is_capped()) {
-    dout(7) << "capping the log" << dendl;
+    dout(7) << "capping the mdlog" << dendl;
     mds->mdlog->cap();
   }
   
index b5fcf043dcb9b4b8d7a666b354b43fa47416f43f..eea60b48ae527d475d22aaf8a69166d1c24e4971 100644 (file)
@@ -281,7 +281,7 @@ void MDLog::_submit_entry(LogEvent *le, MDSLogContextBase *c)
 {
   ceph_assert(ceph_mutex_is_locked_by_me(submit_mutex));
   ceph_assert(!mds->is_any_replay());
-  ceph_assert(!capped);
+  ceph_assert(!mds_is_shutting_down);
 
   ceph_assert(le == cur_event);
   cur_event = NULL;
@@ -482,9 +482,9 @@ void MDLog::kick_submitter()
 }
 
 void MDLog::cap()
-{ 
-  dout(5) << "cap" << dendl;
-  capped = true;
+{
+  dout(5) << "mark mds is shutting down" << dendl;
+  mds_is_shutting_down = true;
 }
 
 void MDLog::shutdown()
@@ -503,7 +503,7 @@ void MDLog::shutdown()
       mds->mds_lock.unlock();
       // Because MDS::stopping is true, it's safe to drop mds_lock: nobody else
       // picking it up will do anything with it.
-   
+
       submit_mutex.lock();
       submit_cond.notify_all();
       submit_mutex.unlock();
@@ -581,6 +581,26 @@ public:
   }
 };
 
+void MDLog::try_to_commit_open_file_table(uint64_t last_seq)
+{
+  ceph_assert(ceph_mutex_is_locked_by_me(submit_mutex));
+
+  if (mds_is_shutting_down) // shutting down the MDS
+    return;
+
+  if (mds->mdcache->open_file_table.is_any_committing())
+    return;
+
+  // when there have dirty items, maybe there has no any new log event
+  if (mds->mdcache->open_file_table.is_any_dirty() ||
+      last_seq > mds->mdcache->open_file_table.get_committed_log_seq()) {
+    submit_mutex.unlock();
+    mds->mdcache->open_file_table.commit(new C_OFT_Committed(this, last_seq),
+                                         last_seq, CEPH_MSG_PRIO_HIGH);
+    submit_mutex.lock();
+  }
+}
+
 void MDLog::trim(int m)
 {
   unsigned max_segments = g_conf()->mds_log_max_segments;
@@ -684,17 +704,7 @@ void MDLog::trim(int m)
     }
   }
 
-  if (!capped &&
-      !mds->mdcache->open_file_table.is_any_committing()) {
-    uint64_t last_seq = get_last_segment_seq();
-    if (mds->mdcache->open_file_table.is_any_dirty() ||
-       last_seq > mds->mdcache->open_file_table.get_committed_log_seq()) {
-      submit_mutex.unlock();
-      mds->mdcache->open_file_table.commit(new C_OFT_Committed(this, last_seq),
-                                          last_seq, CEPH_MSG_PRIO_HIGH);
-      submit_mutex.lock();
-    }
-  }
+  try_to_commit_open_file_table(get_last_segment_seq());
 
   // discard expired segments and unlock submit_mutex
   _trim_expired_segments();
@@ -730,14 +740,7 @@ int MDLog::trim_all()
   uint64_t last_seq = 0;
   if (!segments.empty()) {
     last_seq = get_last_segment_seq();
-    if (!capped &&
-       !mds->mdcache->open_file_table.is_any_committing() &&
-       last_seq > mds->mdcache->open_file_table.get_committing_log_seq()) {
-      submit_mutex.unlock();
-      mds->mdcache->open_file_table.commit(new C_OFT_Committed(this, last_seq),
-                                          last_seq, CEPH_MSG_PRIO_DEFAULT);
-      submit_mutex.lock();
-    }
+    try_to_commit_open_file_table(last_seq);
   }
 
   map<uint64_t,LogSegment*>::iterator p = segments.begin();
@@ -831,7 +834,7 @@ void MDLog::_trim_expired_segments()
       break;
     }
 
-    if (!capped && ls->seq >= oft_committed_seq) {
+    if (!mds_is_shutting_down && ls->seq >= oft_committed_seq) {
       dout(10) << "_trim_expired_segments open file table committedseq " << oft_committed_seq
               << " <= " << ls->seq << "/" << ls->offset << dendl;
       break;
@@ -880,9 +883,9 @@ void MDLog::_expired(LogSegment *ls)
   dout(5) << "_expired segment " << ls->seq << "/" << ls->offset
          << ", " << ls->num_events << " events" << dendl;
 
-  if (!capped && ls == peek_current_segment()) {
+  if (!mds_is_shutting_down && ls == peek_current_segment()) {
     dout(5) << "_expired not expiring " << ls->seq << "/" << ls->offset
-           << ", last one and !capped" << dendl;
+           << ", last one and !mds_is_shutting_down" << dendl;
   } else {
     // expired.
     expired_segments.insert(ls);
index b6b0be60f9d57a31f1cd564577b8aac8f221bb19..6111f85a97f97bea5a221ca429954cd23f5a4e46 100644 (file)
@@ -121,7 +121,7 @@ public:
   Journaler *get_journaler() { return journaler; }
   bool empty() const { return segments.empty(); }
 
-  bool is_capped() const { return capped; }
+  bool is_capped() const { return mds_is_shutting_down; }
   void cap();
 
   void kick_submitter();
@@ -258,7 +258,7 @@ protected:
 
   int num_events = 0; // in events
   int unflushed = 0;
-  bool capped = false;
+  bool mds_is_shutting_down = false;
 
   // Log position which is persistent *and* for which
   // submit_entry wait_for_safe callbacks have already
@@ -298,6 +298,8 @@ private:
   void _prepare_new_segment();
   void _journal_segment_subtree_map(MDSContext *onsync);
 
+  void try_to_commit_open_file_table(uint64_t last_seq);
+
   void try_expire(LogSegment *ls, int op_prio);
   void _maybe_expired(LogSegment *ls, int op_prio);
   void _expired(LogSegment *ls);
index f1c2f66941b62879e7629d73a0e24b8afaa296f6..fef8a18e002b5312de6a25b99ae517ad817a087c 100644 (file)
@@ -183,7 +183,9 @@ void MDSDaemon::asok_command(
       if (cmd_getval(cmdmap, "value", value)) {
        heapcmd_vec.push_back(value);
       }
-      ceph_heap_profiler_handle_command(heapcmd_vec, ss);
+      std::stringstream outss;
+      ceph_heap_profiler_handle_command(heapcmd_vec, outss);
+      outbl.append(outss);
       r = 0;
     }
   } else if (command == "cpu_profiler") {
index 3a417b02ab9b03bdc37ab88cc4f1a6cc39b74667..b54ad444d3b4636cbc192f8f292c2c1388ffe161 100644 (file)
@@ -999,28 +999,44 @@ MDSMap::availability_t MDSMap::is_cluster_available() const
 
 bool MDSMap::state_transition_valid(DaemonState prev, DaemonState next)
 {
-  bool state_valid = true;
-  if (next != prev) {
-    if (prev == MDSMap::STATE_REPLAY) {
-      if (next != MDSMap::STATE_RESOLVE && next != MDSMap::STATE_RECONNECT) {
-        state_valid = false;
-      }
-    } else if (prev == MDSMap::STATE_REJOIN) {
-      if (next != MDSMap::STATE_ACTIVE &&
-         next != MDSMap::STATE_CLIENTREPLAY &&
-         next != MDSMap::STATE_STOPPED) {
-        state_valid = false;
-      }
-    } else if (prev >= MDSMap::STATE_RESOLVE && prev < MDSMap::STATE_ACTIVE) {
-      // Once I have entered replay, the only allowable transitions are to
-      // the next next along in the sequence.
-      if (next != prev + 1) {
-        state_valid = false;
-      }
+  if (next == prev)
+    return true;
+  if (next == MDSMap::STATE_DAMAGED)
+    return true;
+
+  if (prev == MDSMap::STATE_BOOT) {
+    return next == MDSMap::STATE_STANDBY;
+  } else if (prev == MDSMap::STATE_STANDBY) {
+    return next == MDSMap::STATE_STANDBY_REPLAY ||
+           next == MDSMap::STATE_REPLAY ||
+           next == MDSMap::STATE_CREATING ||
+           next == MDSMap::STATE_STARTING;
+  } else if (prev == MDSMap::STATE_CREATING || prev == MDSMap::STATE_STARTING) {
+    return next == MDSMap::STATE_ACTIVE;
+  } else if (prev == MDSMap::STATE_STANDBY_REPLAY) {
+    return next == MDSMap::STATE_REPLAY;
+  } else if (prev == MDSMap::STATE_REPLAY) {
+    return next == MDSMap::STATE_RESOLVE ||
+           next == MDSMap::STATE_RECONNECT;
+  } else if (prev >= MDSMap::STATE_RESOLVE && prev < MDSMap::STATE_ACTIVE) {
+    // Once I have entered replay, the only allowable transitions are to
+    // the next next along in the sequence.
+    // Except...
+    if (prev == MDSMap::STATE_REJOIN &&
+        (next == MDSMap::STATE_ACTIVE ||    // No need to do client replay
+         next == MDSMap::STATE_STOPPED)) {  // no subtrees
+      return true;         
     }
+    return next == prev + 1;
+  } else if (prev == MDSMap::STATE_ACTIVE) {
+    return next == MDSMap::STATE_STOPPING;
+  } else if (prev == MDSMap::STATE_STOPPING) {
+    return next == MDSMap::STATE_STOPPED;
+  } else {
+    derr << __func__ << ": Unknown prev state "
+         << ceph_mds_state_name(prev) << "(" << prev << ")" << dendl;
+    return false;
   }
-
-  return state_valid;
 }
 
 bool MDSMap::check_health(mds_rank_t standby_daemon_count)
index b4f514b94099a3387d6733db146421a9a9545158..3c630ce9c3aa8823d86f0107701191bd4a5bad5c 100644 (file)
@@ -56,9 +56,8 @@ class MDSMap {
 public:
   /* These states are the union of the set of possible states of an MDS daemon,
    * and the set of possible states of an MDS rank. See
-   * doc/cephfs/mds-states.rst for state descriptions,
-   * doc/cephfs/mds-state-diagram.svg for a visual state diagram, and
-   * doc/cephfs/mds-state-diagram.dot to update mds-state-diagram.svg.
+   * doc/cephfs/mds-states.rst for state descriptions and a visual state diagram, and
+   * doc/cephfs/mds-state-diagram.dot to update the diagram.
    */
   typedef enum {
     // States of an MDS daemon not currently holding a rank
@@ -66,10 +65,10 @@ public:
     STATE_NULL     =   CEPH_MDS_STATE_NULL,                                  // null value for fns returning this type.
     STATE_BOOT     =   CEPH_MDS_STATE_BOOT,                // up, boot announcement.  destiny unknown.
     STATE_STANDBY  =   CEPH_MDS_STATE_STANDBY,             // up, idle.  waiting for assignment by monitor.
-    STATE_STANDBY_REPLAY = CEPH_MDS_STATE_STANDBY_REPLAY,  // up, replaying active node, ready to take over.
 
     // States of an MDS rank, and of any MDS daemon holding that rank
     // ==============================================================
+    STATE_STANDBY_REPLAY = CEPH_MDS_STATE_STANDBY_REPLAY,  // up, replaying active node, ready to take over and not serving clients. Note: Up to two MDS hold the rank being replayed.
     STATE_STOPPED  =   CEPH_MDS_STATE_STOPPED,        // down, once existed, but no subtrees. empty log.  may not be held by a daemon.
 
     STATE_CREATING  =  CEPH_MDS_STATE_CREATING,       // up, creating MDS instance (new journal, idalloc..).
index 6bf64e91809fafcaf9038d51acd586bb4e551ec1..78b838c892d92f4166528cf73fe6149b374782c5 100644 (file)
@@ -39,66 +39,102 @@ struct CapHitMetric {
 
 struct ReadLatencyMetric {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;
+  uint64_t count;
   bool updated = false;
 
   DENC(ReadLatencyMetric, v, p) {
-    DENC_START(2, 1, p);
+    DENC_START(3, 1, p);
     denc(v.lat, p);
     if (struct_v >= 2)
       denc(v.updated, p);
+    if (struct_v >= 3) {
+      denc(v.mean, p);
+      denc(v.sq_sum, p);
+      denc(v.count, p);
+    }
     DENC_FINISH(p);
   }
 
   void dump(Formatter *f) const {
     f->dump_object("read_latency", lat);
+    f->dump_object("avg_read_alatency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   friend std::ostream& operator<<(std::ostream& os, const ReadLatencyMetric &metric) {
-    os << "{latency=" << metric.lat << "}";
+    os << "{latency=" << metric.lat << ", avg_latency=" << metric.mean
+       << ", sq_sum=" << metric.sq_sum << ", count=" << metric.count << "}";
     return os;
   }
 };
 
 struct WriteLatencyMetric {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;
+  uint64_t count;
   bool updated = false;
 
   DENC(WriteLatencyMetric, v, p) {
-    DENC_START(2, 1, p);
+    DENC_START(3, 1, p);
     denc(v.lat, p);
     if (struct_v >= 2)
       denc(v.updated, p);
+    if (struct_v >= 3) {
+      denc(v.mean, p);
+      denc(v.sq_sum, p);
+      denc(v.count, p);
+    }
     DENC_FINISH(p);
   }
 
   void dump(Formatter *f) const {
     f->dump_object("write_latency", lat);
+    f->dump_object("avg_write_alatency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   friend std::ostream& operator<<(std::ostream& os, const WriteLatencyMetric &metric) {
-    os << "{latency=" << metric.lat << "}";
+    os << "{latency=" << metric.lat << ", avg_latency=" << metric.mean
+       << ", sq_sum=" << metric.sq_sum << ", count=" << metric.count  << "}";
     return os;
   }
 };
 
 struct MetadataLatencyMetric {
   utime_t lat;
+  utime_t mean;
+  uint64_t sq_sum;
+  uint64_t count;
   bool updated = false;
 
   DENC(MetadataLatencyMetric, v, p) {
-    DENC_START(2, 1, p);
+    DENC_START(3, 1, p);
     denc(v.lat, p);
     if (struct_v >= 2)
       denc(v.updated, p);
+    if (struct_v >= 3) {
+      denc(v.mean, p);
+      denc(v.sq_sum, p);
+      denc(v.count, p);
+    }
     DENC_FINISH(p);
   }
 
   void dump(Formatter *f) const {
     f->dump_object("metadata_latency", lat);
+    f->dump_object("avg_metadata_alatency", mean);
+    f->dump_unsigned("sq_sum", sq_sum);
+    f->dump_unsigned("count", count);
   }
 
   friend std::ostream& operator<<(std::ostream& os, const MetadataLatencyMetric &metric) {
-    os << "{latency=" << metric.lat << "}";
+    os << "{latency=" << metric.lat << ", avg_latency=" << metric.mean
+       << ", sq_sum=" << metric.sq_sum << ", count=" << metric.count << "}";
     return os;
   }
 };
index 1199a65397cf6ddd92b1f6c6d0ec4d19233dfcbf..014ee06317aea70bdaedbf6a51bea699bc09915a 100644 (file)
@@ -2238,8 +2238,15 @@ void MDSRankDispatcher::handle_mds_map(
   // I am only to be passed MDSMaps in which I hold a rank
   ceph_assert(whoami != MDS_RANK_NONE);
 
-  MDSMap::DaemonState oldstate = state;
   mds_gid_t mds_gid = mds_gid_t(monc->get_global_id());
+  MDSMap::DaemonState oldstate = oldmap.get_state_gid(mds_gid);
+  if (oldstate == MDSMap::STATE_NULL) {
+    // monitor may skip sending me the STANDBY map (e.g. if paxos_propose_interval is high)
+    // Assuming I have passed STANDBY state if I got a rank in the first map.
+    oldstate = MDSMap::STATE_STANDBY;
+  }
+  // I should not miss map update
+  ceph_assert(state == oldstate);
   state = mdsmap->get_state_gid(mds_gid);
   if (state != oldstate) {
     last_state = oldstate;
@@ -3506,7 +3513,7 @@ void MDSRankDispatcher::handle_osd_map()
   // reconnect state will journal blocklisted clients (journal
   // is opened for writing in `replay_done` before moving to
   // up:resolve).
-  if (!is_replay()) {
+  if (!is_any_replay()) {
     std::set<entity_addr_t> newly_blocklisted;
     objecter->consume_blocklist_events(&newly_blocklisted);
     auto epoch = objecter->with_osdmap([](const OSDMap &o){return o.get_epoch();});
index c0897071048f5bc9db5bc2cfa54ee83a78708f49..d0e01f2295786cb32063b54d158ee333dde8f89d 100644 (file)
@@ -413,7 +413,7 @@ class MDSRank {
     // The last different state I held before current
     MDSMap::DaemonState last_state = MDSMap::STATE_BOOT;
     // The state assigned to me by the MDSMap
-    MDSMap::DaemonState state = MDSMap::STATE_BOOT;
+    MDSMap::DaemonState state = MDSMap::STATE_STANDBY;
 
     bool cluster_degraded = false;
 
index 046e79269868e2b34791e1d1232eaec9e2ebc929..6487084fb639cde750ce7e22e643056bf630ebd1 100644 (file)
@@ -168,6 +168,42 @@ void MetricAggregator::refresh_metrics_for_rank(const entity_inst_t &client,
         c->second = metrics.write_io_sizes_metric.total_size;
       }
       break;
+    case MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC:
+      if (metrics.read_latency_metric.updated) {
+        c->first = metrics.read_latency_metric.mean.tv.tv_sec;
+        c->second = metrics.read_latency_metric.mean.tv.tv_nsec;
+      }
+      break;
+    case MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC:
+      if (metrics.read_latency_metric.updated) {
+        c->first = metrics.read_latency_metric.sq_sum;
+        c->second = metrics.read_latency_metric.count;
+      }
+      break;
+    case MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC:
+      if (metrics.write_latency_metric.updated) {
+        c->first = metrics.write_latency_metric.mean.tv.tv_sec;
+        c->second = metrics.write_latency_metric.mean.tv.tv_nsec;
+      }
+      break;
+    case MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC:
+      if (metrics.write_latency_metric.updated) {
+        c->first = metrics.write_latency_metric.sq_sum;
+        c->second = metrics.write_latency_metric.count;
+      }
+      break;
+    case MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC:
+      if (metrics.metadata_latency_metric.updated) {
+        c->first = metrics.metadata_latency_metric.mean.tv.tv_sec;
+        c->second = metrics.metadata_latency_metric.mean.tv.tv_nsec;
+      }
+      break;
+    case MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC:
+      if (metrics.metadata_latency_metric.updated) {
+        c->first = metrics.metadata_latency_metric.sq_sum;
+        c->second = metrics.metadata_latency_metric.count;
+      }
+      break;
     default:
       ceph_abort_msg("unknown counter type");
     }
index 3fcaaaec1fab667dd22862962802f697311e0f6c..b28b06b7ad294cbe0225b1d47ac3ea2d47c1dad4 100644 (file)
@@ -166,7 +166,9 @@ void MetricsHandler::handle_payload(Session *session, const CapInfoPayload &payl
 
 void MetricsHandler::handle_payload(Session *session, const ReadLatencyPayload &payload) {
   dout(20) << ": type=" << payload.get_type()
-          << ", session=" << session << ", latency=" << payload.lat << dendl;
+           << ", session=" << session << ", latency=" << payload.lat
+           << ", avg=" << payload.mean << ", sq_sum=" << payload.sq_sum
+           << ", count=" << payload.count << dendl;
 
   auto it = client_metrics_map.find(session->info.inst);
   if (it == client_metrics_map.end()) {
@@ -176,12 +178,17 @@ void MetricsHandler::handle_payload(Session *session, const ReadLatencyPayload &
   auto &metrics = it->second.second;
   metrics.update_type = UPDATE_TYPE_REFRESH;
   metrics.read_latency_metric.lat = payload.lat;
+  metrics.read_latency_metric.mean = payload.mean;
+  metrics.read_latency_metric.sq_sum = payload.sq_sum;
+  metrics.read_latency_metric.count = payload.count;
   metrics.read_latency_metric.updated = true;
 }
 
 void MetricsHandler::handle_payload(Session *session, const WriteLatencyPayload &payload) {
   dout(20) << ": type=" << payload.get_type()
-          << ", session=" << session << ", latency=" << payload.lat << dendl;
+           << ", session=" << session << ", latency=" << payload.lat
+           << ", avg=" << payload.mean << ", sq_sum=" << payload.sq_sum
+           << ", count=" << payload.count << dendl;
 
   auto it = client_metrics_map.find(session->info.inst);
   if (it == client_metrics_map.end()) {
@@ -191,12 +198,17 @@ void MetricsHandler::handle_payload(Session *session, const WriteLatencyPayload
   auto &metrics = it->second.second;
   metrics.update_type = UPDATE_TYPE_REFRESH;
   metrics.write_latency_metric.lat = payload.lat;
+  metrics.write_latency_metric.mean = payload.mean;
+  metrics.write_latency_metric.sq_sum = payload.sq_sum;
+  metrics.write_latency_metric.count = payload.count;
   metrics.write_latency_metric.updated = true;
 }
 
 void MetricsHandler::handle_payload(Session *session, const MetadataLatencyPayload &payload) {
   dout(20) << ": type=" << payload.get_type()
-          << ", session=" << session << ", latency=" << payload.lat << dendl;
+           << ", session=" << session << ", latency=" << payload.lat
+           << ", avg=" << payload.mean << ", sq_sum=" << payload.sq_sum
+           << ", count=" << payload.count << dendl;
 
   auto it = client_metrics_map.find(session->info.inst);
   if (it == client_metrics_map.end()) {
@@ -206,6 +218,9 @@ void MetricsHandler::handle_payload(Session *session, const MetadataLatencyPaylo
   auto &metrics = it->second.second;
   metrics.update_type = UPDATE_TYPE_REFRESH;
   metrics.metadata_latency_metric.lat = payload.lat;
+  metrics.metadata_latency_metric.mean = payload.mean;
+  metrics.metadata_latency_metric.sq_sum = payload.sq_sum;
+  metrics.metadata_latency_metric.count = payload.count;
   metrics.metadata_latency_metric.updated = true;
 }
 
index 1d52e4b99239abfca68925f37249e20a75ed0db9..784baa56c0769dcd88b61b30f2e9ca8b2490e373 100644 (file)
@@ -271,13 +271,14 @@ public:
 
 void OpenFileTable::_commit_finish(int r, uint64_t log_seq, MDSContext *fin)
 {
-  dout(10) << __func__ << " log_seq " << log_seq << dendl;
+  dout(10) << __func__ << " log_seq " << log_seq << " committed_log_seq " << committed_log_seq
+           << " committing_log_seq " << committing_log_seq << dendl;
   if (r < 0) {
     mds->handle_write_error(r);
     return;
   }
 
-  ceph_assert(log_seq <= committing_log_seq);
+  ceph_assert(log_seq == committing_log_seq);
   ceph_assert(log_seq >= committed_log_seq);
   committed_log_seq = log_seq;
   num_pending_commit--;
@@ -336,7 +337,8 @@ void OpenFileTable::_journal_finish(int r, uint64_t log_seq, MDSContext *c,
 
 void OpenFileTable::commit(MDSContext *c, uint64_t log_seq, int op_prio)
 {
-  dout(10) << __func__ << " log_seq " << log_seq << dendl;
+  dout(10) << __func__ << " log_seq " << log_seq << " committing_log_seq:"
+          << committing_log_seq << dendl;
 
   ceph_assert(num_pending_commit == 0);
   num_pending_commit++;
@@ -1059,6 +1061,12 @@ void OpenFileTable::_prefetch_dirfrags()
     CInode *diri = mdcache->get_inode(ino);
     if (!diri)
       continue;
+
+    if (!diri->is_dir()) {
+      dout(10) << " " << *diri << " is not dir" << dendl;
+      continue;
+    }
+
     if (diri->state_test(CInode::STATE_REJOINUNDEF))
       continue;
 
index d3934f753b4fefa8097f1f172e8c51de3d8f4c26..1f91c202021f9ad8d3ee5c11a0c9459e48fe48d3 100644 (file)
@@ -42,7 +42,6 @@ public:
 
   void commit(MDSContext *c, uint64_t log_seq, int op_prio);
   uint64_t get_committed_log_seq() const { return committed_log_seq; }
-  uint64_t get_committing_log_seq() const { return committing_log_seq; }
   bool is_any_committing() const { return num_pending_commit > 0; }
 
   void load(MDSContext *c);
index b6e4e960b756fc793c00d286a444701acba70ed8..b01eb92b368495267b73ed4717244e92858205a3 100644 (file)
@@ -2312,20 +2312,7 @@ void Server::set_trace_dist(const ref_t<MClientReply> &reply,
     dout(20) << "set_trace_dist added dir  " << *dir << dendl;
 
     encode(dn->get_name(), bl);
-
-    int lease_mask = 0;
-    CDentry::linkage_t *dnl = dn->get_linkage(mdr->get_client(), mdr);
-    if (dnl->is_primary()) {
-      ceph_assert(dnl->get_inode() == in);
-      lease_mask = CEPH_LEASE_PRIMARY_LINK;
-    } else {
-      if (dnl->is_remote())
-       ceph_assert(dnl->get_remote_ino() == in->ino());
-      else
-       ceph_assert(!in);
-    }
-    mds->locker->issue_client_lease(dn, mdr, lease_mask, now, bl);
-    dout(20) << "set_trace_dist added dn   " << snapid << " " << *dn << dendl;
+    mds->locker->issue_client_lease(dn, in, mdr, now, bl);
   } else
     reply->head.is_dentry = 0;
 
@@ -3352,18 +3339,20 @@ CInode* Server::prepare_new_inode(MDRequestRef& mdr, CDir *dir, inodeno_t useino
   _inode->truncate_seq = 1; /* starting with 1, 0 is kept for no-truncation logic */
 
   CInode *diri = dir->get_inode();
+  auto pip = diri->get_projected_inode();
 
-  dout(10) << oct << " dir mode 0" << diri->get_inode()->mode << " new mode 0" << mode << dec << dendl;
+  dout(10) << oct << " dir mode 0" << pip->mode << " new mode 0" << mode << dec << dendl;
 
-  if (diri->get_inode()->mode & S_ISGID) {
+  if (pip->mode & S_ISGID) {
     dout(10) << " dir is sticky" << dendl;
-    _inode->gid = diri->get_inode()->gid;
+    _inode->gid = pip->gid;
     if (S_ISDIR(mode)) {
-      dout(10) << " new dir also sticky" << dendl;      
+      dout(10) << " new dir also sticky" << dendl;
       _inode->mode |= S_ISGID;
     }
-  } else 
+  } else {
     _inode->gid = mdr->client_request->get_caller_gid();
+  }
 
   _inode->uid = mdr->client_request->get_caller_uid();
 
@@ -3432,15 +3421,68 @@ void Server::apply_allocated_inos(MDRequestRef& mdr, Session *session)
   }
 }
 
+struct C_MDS_TryOpenInode : public ServerContext {
+  MDRequestRef mdr;
+  inodeno_t ino;
+  C_MDS_TryOpenInode(Server *s, MDRequestRef& r, inodeno_t i) :
+    ServerContext(s), mdr(r), ino(i) {}
+  void finish(int r) override {
+    server->_try_open_ino(mdr, r, ino);
+  }
+};
+
+void Server::_try_open_ino(MDRequestRef& mdr, int r, inodeno_t ino)
+{
+  dout(10) << "_try_open_ino " << mdr.get() << " ino " << ino << " r=" << r << dendl;
+
+  // `r` is a rank if >=0, else an error code
+  if (r >= 0) {
+    mds_rank_t dest_rank(r);
+    if (dest_rank == mds->get_nodeid())
+      dispatch_client_request(mdr);
+    else
+      mdcache->request_forward(mdr, dest_rank);
+    return;
+  }
+
+  // give up
+  if (r == -CEPHFS_ENOENT || r == -CEPHFS_ENODATA)
+    r = -CEPHFS_ESTALE;
+  respond_to_request(mdr, r);
+}
+
 class C_MDS_TryFindInode : public ServerContext {
   MDRequestRef mdr;
+  MDCache *mdcache;
+  inodeno_t ino;
 public:
-  C_MDS_TryFindInode(Server *s, MDRequestRef& r) : ServerContext(s), mdr(r) {}
+  C_MDS_TryFindInode(Server *s, MDRequestRef& r, MDCache *m, inodeno_t i) :
+    ServerContext(s), mdr(r), mdcache(m), ino(i) {}
   void finish(int r) override {
-    if (r == -CEPHFS_ESTALE) // :( find_ino_peers failed
-      server->respond_to_request(mdr, r);
-    else
+    if (r == -CEPHFS_ESTALE) { // :( find_ino_peers failed
+      /*
+       * There has one case that when the MDS crashes and the
+       * openfiletable journal couldn't be flushed and then
+       * the replacing MDS is possibly won't load some already
+       * opened CInodes into the MDCache. And if the clients
+       * will retry some requests after reconnected, the MDS
+       * will return -ESTALE after failing to find the ino in
+       * all active peers.
+       *
+       * As a workaround users can run `ls -R ${mountpoint}`
+       * to list all the sub-files or sub-direcotries from the
+       * mountpoint.
+       *
+       * We need try to open the ino and try it again.
+       */
+      CInode *in = mdcache->get_inode(ino);
+      if (in && in->state_test(CInode::STATE_PURGING))
+        server->respond_to_request(mdr, r);
+      else
+        mdcache->open_ino(ino, (int64_t)-1, new C_MDS_TryOpenInode(server, mdr, ino));
+    } else {
       server->dispatch_client_request(mdr);
+    }
   }
 };
 
@@ -3480,8 +3522,8 @@ CInode* Server::rdlock_path_pin_ref(MDRequestRef& mdr,
       respond_to_request(mdr, r);
     } else if (r == -CEPHFS_ESTALE) {
       dout(10) << "FAIL on CEPHFS_ESTALE but attempting recovery" << dendl;
-      MDSContext *c = new C_MDS_TryFindInode(this, mdr);
-      mdcache->find_ino_peers(refpath.get_ino(), c);
+      inodeno_t ino = refpath.get_ino();
+      mdcache->find_ino_peers(ino, new C_MDS_TryFindInode(this, mdr, mdcache, ino));
     } else {
       dout(10) << "FAIL on error " << r << dendl;
       respond_to_request(mdr, r);
@@ -3566,7 +3608,8 @@ CDentry* Server::rdlock_path_xlock_dentry(MDRequestRef& mdr,
   if (r < 0) {
     if (r == -CEPHFS_ESTALE) {
       dout(10) << "FAIL on CEPHFS_ESTALE but attempting recovery" << dendl;
-      mdcache->find_ino_peers(refpath.get_ino(), new C_MDS_TryFindInode(this, mdr));
+      inodeno_t ino = refpath.get_ino();
+      mdcache->find_ino_peers(ino, new C_MDS_TryFindInode(this, mdr, mdcache, ino));
       return nullptr;
     }
     respond_to_request(mdr, r);
@@ -3651,7 +3694,8 @@ Server::rdlock_two_paths_xlock_destdn(MDRequestRef& mdr, bool xlock_srcdn)
   if (r != 0) {
     if (r == -CEPHFS_ESTALE) {
       dout(10) << "CEPHFS_ESTALE on path, attempting recovery" << dendl;
-      mdcache->find_ino_peers(refpath.get_ino(), new C_MDS_TryFindInode(this, mdr));
+      inodeno_t ino = refpath.get_ino();
+      mdcache->find_ino_peers(ino, new C_MDS_TryFindInode(this, mdr, mdcache, ino));
     } else if (r < 0) {
       respond_to_request(mdr, r);
     }
@@ -3663,7 +3707,8 @@ Server::rdlock_two_paths_xlock_destdn(MDRequestRef& mdr, bool xlock_srcdn)
   if (r != 0) {
     if (r == -CEPHFS_ESTALE) {
       dout(10) << "CEPHFS_ESTALE on path2, attempting recovery" << dendl;
-      mdcache->find_ino_peers(refpath2.get_ino(), new C_MDS_TryFindInode(this, mdr));
+      inodeno_t ino = refpath2.get_ino();
+      mdcache->find_ino_peers(ino, new C_MDS_TryFindInode(this, mdr, mdcache, ino));
     } else if (r < 0) {
       respond_to_request(mdr, r);
     }
@@ -4758,8 +4803,7 @@ void Server::handle_client_readdir(MDRequestRef& mdr)
     // dentry
     dout(12) << "including    dn " << *dn << dendl;
     encode(dn->get_name(), dnbl);
-    int lease_mask = dnl->is_primary() ? CEPH_LEASE_PRIMARY_LINK : 0;
-    mds->locker->issue_client_lease(dn, mdr, lease_mask, now, dnbl);
+    mds->locker->issue_client_lease(dn, in, mdr, now, dnbl);
 
     // inode
     dout(12) << "including inode " << *in << dendl;
@@ -6885,7 +6929,8 @@ void Server::handle_client_link(MDRequestRef& mdr)
     targeti = mdcache->get_inode(req->get_filepath2().get_ino());
     if (!targeti) {
       dout(10) << "CEPHFS_ESTALE on path2, attempting recovery" << dendl;
-      mdcache->find_ino_peers(req->get_filepath2().get_ino(), new C_MDS_TryFindInode(this, mdr));
+      inodeno_t ino = req->get_filepath2().get_ino();
+      mdcache->find_ino_peers(ino, new C_MDS_TryFindInode(this, mdr, mdcache, ino));
       return;
     }
     mdr->pin(targeti);
index b16106ef565b39ca28a5d9453bcca910edc776b4..33054bd067eb7db02f04a77f2516b4a909636e6d 100644 (file)
@@ -187,6 +187,7 @@ public:
   void journal_allocated_inos(MDRequestRef& mdr, EMetaBlob *blob);
   void apply_allocated_inos(MDRequestRef& mdr, Session *session);
 
+  void _try_open_ino(MDRequestRef& mdr, int r, inodeno_t ino);
   CInode* rdlock_path_pin_ref(MDRequestRef& mdr, bool want_auth,
                              bool no_want_auth=false);
   CDentry* rdlock_path_xlock_dentry(MDRequestRef& mdr, bool create,
index 5c625b6af06f2819b80bbd2df7984f038f1c3d34..725c4488c17f0a8fb7eafb965decc36da7bf999c 100644 (file)
@@ -256,8 +256,9 @@ public:
     return get_sm()->states[state].next == 0;
   }
   bool is_unstable_and_locked() const {
-    if (is_stable())
-      return false;
+    return (!is_stable() && is_locked());
+  }
+  bool is_locked() const {
     return is_rdlocked() || is_wrlocked() || is_xlocked();
   }
   int get_next_state() {
index e934914ba5bb23857b5adc6d6c3397ed7ce4f8be..85a636e9b3f2e6d80176bf9b808d908312338744 100644 (file)
@@ -73,6 +73,12 @@ namespace ceph {
     CLIENT_METRIC_TYPE_OPENED_INODES,          \
     CLIENT_METRIC_TYPE_READ_IO_SIZES,          \
     CLIENT_METRIC_TYPE_WRITE_IO_SIZES,         \
+    CLIENT_METRIC_TYPE_AVG_READ_LATENCY,       \
+    CLIENT_METRIC_TYPE_STDEV_READ_LATENCY,     \
+    CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY,      \
+    CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY,    \
+    CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY,   \
+    CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY, \
 }
 
 #define CEPHFS_FEATURES_MDS_SUPPORTED CEPHFS_FEATURES_ALL
index 82a310d1eee36270ee7626441379c20fa4be1fa9..f2fa150bee31accddaa4713e462ca8b899a98c4c 100644 (file)
@@ -45,6 +45,7 @@ enum mds_metric_t {
   MDS_HEALTH_SLOW_REQUEST,
   MDS_HEALTH_CACHE_OVERSIZED,
   MDS_HEALTH_SLOW_METADATA_IO,
+  MDS_HEALTH_DUMMY, // not a real health warning, for testing
 };
 
 inline const char *mds_metric_name(mds_metric_t m)
@@ -62,6 +63,7 @@ inline const char *mds_metric_name(mds_metric_t m)
   case MDS_HEALTH_SLOW_REQUEST: return "MDS_SLOW_REQUEST";
   case MDS_HEALTH_CACHE_OVERSIZED: return "MDS_CACHE_OVERSIZED";
   case MDS_HEALTH_SLOW_METADATA_IO: return "MDS_SLOW_METADATA_IO";
+  case MDS_HEALTH_DUMMY: return "MDS_DUMMY";
   default:
     return "???";
   }
diff --git a/ceph/src/messages/MMgrUpdate.h b/ceph/src/messages/MMgrUpdate.h
new file mode 100644 (file)
index 0000000..5e1f27b
--- /dev/null
@@ -0,0 +1,84 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2022 Prashant D <pdhange@redhat.com>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation.  See file COPYING.
+ */
+
+
+#ifndef CEPH_MMGRUPDATE_H_
+#define CEPH_MMGRUPDATE_H_
+
+#include "msg/Message.h"
+
+class MMgrUpdate : public Message {
+private:
+  static constexpr int HEAD_VERSION = 2;
+  static constexpr int COMPAT_VERSION = 1;
+
+public:
+
+  std::string daemon_name;
+  std::string service_name;  // optional; otherwise infer from entity type
+
+  std::map<std::string,std::string> daemon_metadata;
+  std::map<std::string,std::string> daemon_status;
+
+  bool need_metadata_update = false;
+
+  void decode_payload() override
+  {
+    using ceph::decode;
+    auto p = payload.cbegin();
+    decode(daemon_name, p);
+    if (header.version >= 2) {
+      decode(service_name, p);
+      decode(need_metadata_update, p);
+      if (need_metadata_update) {
+       decode(daemon_metadata, p);
+       decode(daemon_status, p);
+      }
+    }
+  }
+
+  void encode_payload(uint64_t features) override {
+    using ceph::encode;
+    encode(daemon_name, payload);
+    encode(service_name, payload);
+    encode(need_metadata_update, payload);
+    if (need_metadata_update) {
+      encode(daemon_metadata, payload);
+      encode(daemon_status, payload);
+    }
+  }
+
+  std::string_view get_type_name() const override { return "mgrupdate"; }
+  void print(std::ostream& out) const override {
+    out << get_type_name() << "(";
+    if (service_name.length()) {
+      out << service_name;
+    } else {
+      out << ceph_entity_type_name(get_source().type());
+    }
+    out << "." << daemon_name;
+    out << ")";
+  }
+
+private:
+  MMgrUpdate()
+    : Message{MSG_MGR_UPDATE, HEAD_VERSION, COMPAT_VERSION}
+  {}
+  using RefCountedObject::put;
+  using RefCountedObject::get;
+  template<class T, typename... Args>
+  friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
+};
+
+#endif
+
index 2e894b031d48718c2121633869e7307faa1b6ab2..ca441d5e539df1046c8b02ae0a6dc5231c1be345 100644 (file)
@@ -1104,6 +1104,12 @@ ceph_add_mds_perf_query(BaseMgrModule *self, PyObject *args)
     {"opened_inodes", MDSPerformanceCounterType::OPENED_INODES_METRIC},
     {"read_io_sizes", MDSPerformanceCounterType::READ_IO_SIZES_METRIC},
     {"write_io_sizes", MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC},
+    {"avg_read_latency", MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC},
+    {"stdev_read_latency", MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC},
+    {"avg_write_latency", MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC},
+    {"stdev_write_latency", MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC},
+    {"avg_metadata_latency", MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC},
+    {"stdev_metadata_latency", MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC},
   };
 
   PyObject *py_query = nullptr;
index a53d1d8c2a0a5fd45eac95762dbcfa335679fa14..b11c40c42bc922e20c9622e86d4c4a77dbe5c422 100644 (file)
@@ -34,6 +34,7 @@ if(WITH_MGR)
     mgr_commands.cc
     $<TARGET_OBJECTS:mgr_cap_obj>)
   add_executable(ceph-mgr ${mgr_srcs})
+  target_compile_definitions(ceph-mgr PRIVATE PY_SSIZE_T_CLEAN)
   if(WITH_LIBCEPHSQLITE)
     target_link_libraries(ceph-mgr cephsqlite SQLite3::SQLite3)
   endif()
index fd493a8d947d8ba29f0a2b6135d0108e9ee9528e..1b4744cf6b3516a5be1de28b8fdf80ddf1dd4c7c 100644 (file)
@@ -27,6 +27,7 @@
 #include "mon/MonCommand.h"
 
 #include "messages/MMgrOpen.h"
+#include "messages/MMgrUpdate.h"
 #include "messages/MMgrClose.h"
 #include "messages/MMgrConfigure.h"
 #include "messages/MMonMgrReport.h"
@@ -267,6 +268,8 @@ bool DaemonServer::ms_dispatch2(const ref_t<Message>& m)
       return handle_report(ref_cast<MMgrReport>(m));
     case MSG_MGR_OPEN:
       return handle_open(ref_cast<MMgrOpen>(m));
+    case MSG_MGR_UPDATE:
+      return handle_update(ref_cast<MMgrUpdate>(m));
     case MSG_MGR_CLOSE:
       return handle_close(ref_cast<MMgrClose>(m));
     case MSG_COMMAND:
@@ -531,6 +534,49 @@ bool DaemonServer::handle_open(const ref_t<MMgrOpen>& m)
   return true;
 }
 
+bool DaemonServer::handle_update(const ref_t<MMgrUpdate>& m)
+{
+  DaemonKey key;
+  if (!m->service_name.empty()) {
+    key.type = m->service_name;
+  } else {
+    key.type = ceph_entity_type_name(m->get_connection()->get_peer_type());
+  }
+  key.name = m->daemon_name;
+
+  dout(10) << "from " << m->get_connection() << " " << key << dendl;
+
+  if (m->get_connection()->get_peer_type() == entity_name_t::TYPE_CLIENT &&
+      m->service_name.empty()) {
+    // Clients should not be sending us update request
+    dout(10) << "rejecting update request from non-daemon client " << m->daemon_name
+            << dendl;
+    clog->warn() << "rejecting report from non-daemon client " << m->daemon_name
+                << " at " << m->get_connection()->get_peer_addrs();
+    m->get_connection()->mark_down();
+    return true;
+  }
+
+
+  {
+    std::unique_lock locker(lock);
+
+    DaemonStatePtr daemon;
+    // Look up the DaemonState
+    if (daemon_state.exists(key)) {
+      dout(20) << "updating existing DaemonState for " << key << dendl;
+
+      daemon = daemon_state.get(key);
+      if (m->need_metadata_update &&
+          !m->daemon_metadata.empty()) {
+        daemon_state.update_metadata(daemon, m->daemon_metadata);
+      }
+    }
+  }
+
+  return true;
+}
+
 bool DaemonServer::handle_close(const ref_t<MMgrClose>& m)
 {
   std::lock_guard l(lock);
@@ -2780,7 +2826,7 @@ void DaemonServer::adjust_pgs()
              dout(10) << "pool " << i.first
                       << " pg_num " << p.get_pg_num()
                       << " - pgp_num " << p.get_pgp_num()
-                      << " gap > max_pg_num_change " << max_jump
+                      << " gap >= max_pg_num_change " << max_jump
                       << " - must scale pgp_num first"
                       << dendl;
            } else {
@@ -2937,13 +2983,19 @@ void DaemonServer::got_service_map()
       if (pending_service_map.epoch == 0) {
        // we just started up
        dout(10) << "got initial map e" << service_map.epoch << dendl;
+       ceph_assert(pending_service_map_dirty == 0);
+       pending_service_map = service_map;
+       pending_service_map.epoch = service_map.epoch + 1;
+      } else if (pending_service_map.epoch <= service_map.epoch) {
+       // we just started up but got one more not our own map
+       dout(10) << "got newer initial map e" << service_map.epoch << dendl;
+       ceph_assert(pending_service_map_dirty == 0);
        pending_service_map = service_map;
        pending_service_map.epoch = service_map.epoch + 1;
       } else {
-       // we we already active and therefore must have persisted it,
+       // we already active and therefore must have persisted it,
        // which means ours is the same or newer.
        dout(10) << "got updated map e" << service_map.epoch << dendl;
-       ceph_assert(pending_service_map.epoch > service_map.epoch);
       }
     });
 
index d719a96a7bcc36cd3d051b839063d54bc30e4bf7..ff98356807ad976c03ca28d3a0f5927bad83b423 100644 (file)
@@ -36,6 +36,7 @@
 
 class MMgrReport;
 class MMgrOpen;
+class MMgrUpdate;
 class MMgrClose;
 class MMonMgrReport;
 class MCommand;
@@ -275,6 +276,7 @@ public:
 
   void fetch_missing_metadata(const DaemonKey& key, const entity_addr_t& addr);
   bool handle_open(const ceph::ref_t<MMgrOpen>& m);
+  bool handle_update(const ceph::ref_t<MMgrUpdate>& m);
   bool handle_close(const ceph::ref_t<MMgrClose>& m);
   bool handle_report(const ceph::ref_t<MMgrReport>& m);
   bool handle_command(const ceph::ref_t<MCommand>& m);
index 5568cbe5d7a319e8c9fea36e80ccc922567f19b1..a16003774a494b324dd7993438aa1d8defbad96d 100644 (file)
@@ -35,6 +35,12 @@ void MDSPerformanceCounterDescriptor::pack_counter(
   case MDSPerformanceCounterType::OPENED_INODES_METRIC:
   case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
   case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
+  case MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC:
+  case MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC:
+  case MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC:
     break;
   default:
     ceph_abort_msg("unknown counter type");
@@ -57,6 +63,12 @@ void MDSPerformanceCounterDescriptor::unpack_counter(
   case MDSPerformanceCounterType::OPENED_INODES_METRIC:
   case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
   case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
+  case MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC:
+  case MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC:
+  case MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC:
+  case MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC:
     break;
   default:
     ceph_abort_msg("unknown counter type");
@@ -95,6 +107,24 @@ std::ostream& operator<<(std::ostream &os, const MDSPerformanceCounterDescriptor
    case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
      os << "write_io_sizes_metric";
      break;
+   case MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC:
+     os << "avg_read_latency";
+     break;
+   case MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC:
+     os << "stdev_read_latency";
+     break;
+   case MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC:
+     os << "avg_write_latency";
+     break;
+   case MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC:
+     os << "stdev_write_latency";
+     break;
+   case MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC:
+     os << "avg_metadata_latency";
+     break;
+   case MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC:
+     os << "stdev_metadata_latency";
+     break;
    }
 
    return os;
index a965e5fa7122f39f04a442ad7732676585d53665..aa35b8cab0fc2037390df6e3f4de9cb312ceca80 100644 (file)
@@ -126,6 +126,12 @@ enum class MDSPerformanceCounterType : uint8_t {
   OPENED_INODES_METRIC = 7,
   READ_IO_SIZES_METRIC = 8,
   WRITE_IO_SIZES_METRIC = 9,
+  AVG_READ_LATENCY_METRIC = 10,
+  STDEV_READ_LATENCY_METRIC = 11,
+  AVG_WRITE_LATENCY_METRIC = 12,
+  STDEV_WRITE_LATENCY_METRIC = 13,
+  AVG_METADATA_LATENCY_METRIC = 14,
+  STDEV_METADATA_LATENCY_METRIC = 15,
 };
 
 struct MDSPerformanceCounterDescriptor {
@@ -143,6 +149,12 @@ struct MDSPerformanceCounterDescriptor {
     case MDSPerformanceCounterType::OPENED_INODES_METRIC:
     case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
     case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
+    case MDSPerformanceCounterType::AVG_READ_LATENCY_METRIC:
+    case MDSPerformanceCounterType::STDEV_READ_LATENCY_METRIC:
+    case MDSPerformanceCounterType::AVG_WRITE_LATENCY_METRIC:
+    case MDSPerformanceCounterType::STDEV_WRITE_LATENCY_METRIC:
+    case MDSPerformanceCounterType::AVG_METADATA_LATENCY_METRIC:
+    case MDSPerformanceCounterType::STDEV_METADATA_LATENCY_METRIC:
       return true;
     default:
       return false;
index 66ac5901e50998e122a91521b923750dfe2182cb..6253d267034335267af3530d227ffc0012968832 100644 (file)
@@ -21,6 +21,7 @@
 #include "messages/MMgrMap.h"
 #include "messages/MMgrReport.h"
 #include "messages/MMgrOpen.h"
+#include "messages/MMgrUpdate.h"
 #include "messages/MMgrClose.h"
 #include "messages/MMgrConfigure.h"
 #include "messages/MCommand.h"
@@ -245,6 +246,24 @@ void MgrClient::_send_open()
   }
 }
 
+void MgrClient::_send_update()
+{
+  if (session && session->con) {
+    auto update = make_message<MMgrUpdate>();
+    if (!service_name.empty()) {
+      update->service_name = service_name;
+      update->daemon_name = daemon_name;
+    } else {
+      update->daemon_name = cct->_conf->name.get_id();
+    }
+    if (need_metadata_update) {
+      update->daemon_metadata = daemon_metadata;
+    }
+    update->need_metadata_update = need_metadata_update;
+    session->con->send_message2(update);
+  }
+}
+
 bool MgrClient::handle_mgr_map(ref_t<MMgrMap> m)
 {
   ceph_assert(ceph_mutex_is_locked_by_me(lock));
@@ -566,6 +585,30 @@ bool MgrClient::handle_command_reply(
   return true;
 }
 
+int MgrClient::update_daemon_metadata(
+  const std::string& service,
+  const std::string& name,
+  const std::map<std::string,std::string>& metadata)
+{
+  std::lock_guard l(lock);
+  if (service_daemon) {
+    return -EEXIST;
+  }
+  ldout(cct,1) << service << "." << name << " metadata " << metadata << dendl;
+  service_name = service;
+  daemon_name = name;
+  daemon_metadata = metadata;
+  daemon_dirty_status = true;
+
+  if (need_metadata_update &&
+      !daemon_metadata.empty()) {
+    _send_update();
+    need_metadata_update = false;
+  }
+
+  return 0;
+}
+
 int MgrClient::service_daemon_register(
   const std::string& service,
   const std::string& name,
index f09ba91b712c2ef4032acc81e581445280ee708d..a48ae163e18a8da011efeb81729d7022dc1e8da3 100644 (file)
@@ -94,6 +94,7 @@ protected:
   bool service_daemon = false;
   bool daemon_dirty_status = false;
   bool task_dirty_status = false;
+  bool need_metadata_update = true;
   std::string service_name, daemon_name;
   std::map<std::string,std::string> daemon_metadata;
   std::map<std::string,std::string> daemon_status;
@@ -102,6 +103,7 @@ protected:
 
   void reconnect();
   void _send_open();
+  void _send_update();
 
   // In pre-luminous clusters, the ceph-mgr service is absent or optional,
   // so we must not block in start_command waiting for it.
@@ -157,6 +159,10 @@ public:
     ceph::buffer::list *outbl, std::string *outs,
     Context *onfinish);
 
+  int update_daemon_metadata(
+    const std::string& service,
+    const std::string& name,
+    const std::map<std::string,std::string>& metadata);
   int service_daemon_register(
     const std::string& service,
     const std::string& name,
index 39aa9f9b17737fea8ef9690b90f9238e5683b5a0..471aebf6dd6ba6360774bcff3abd2d2415336eba 100644 (file)
@@ -191,6 +191,7 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op)
     stringstream ss;
     string name;
     cmd_getval(cmdmap, "key", name);
+    name = ConfFile::normalize_key_name(name);
     const Option *opt = g_conf().find_option(name);
     if (!opt) {
       opt = mon.mgrmon()->find_module_option(name);
@@ -321,11 +322,13 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op)
       &src);
 
     if (cmd_getval(cmdmap, "key", name)) {
+      name = ConfFile::normalize_key_name(name);
       const Option *opt = g_conf().find_option(name);
       if (!opt) {
        opt = mon.mgrmon()->find_module_option(name);
       }
       if (!opt) {
+        ss << "unrecognized key '" << name << "'";
        err = -ENOENT;
        goto reply;
       }
@@ -535,7 +538,8 @@ bool ConfigMonitor::prepare_command(MonOpRequestRef op)
     cmd_getval(cmdmap, "name", name);
     cmd_getval(cmdmap, "value", value);
     cmd_getval(cmdmap, "force", force);
-
+    name = ConfFile::normalize_key_name(name);
+    
     if (prefix == "config set" && !force) {
       const Option *opt = g_conf().find_option(name);
       if (!opt) {
index 79b227a9c653024231127fdb3d696b4a5775942f..42be292d45146a3f14c1eca3c030243735825ea0 100644 (file)
@@ -713,8 +713,10 @@ void Elector::notify_rank_removed(int rank_removed)
   peer_tracker.notify_rank_removed(rank_removed);
   /* we have to clean up the pinging state, which is annoying
      because it's not indexed anywhere (and adding indexing
-     would also be annoying). So what we do is start with the
-     remoed rank and examine the state of the surrounding ranks.
+     would also be annoying).
+     In the case where we are removing any rank that is not the
+     higest, we start with the removed rank and examine the state
+     of the surrounding ranks.
      Everybody who remains with larger rank gets a new rank one lower
      than before, and we have to figure out the remaining scheduled
      ping contexts. So, starting one past with the removed rank, we:
@@ -725,35 +727,46 @@ void Elector::notify_rank_removed(int rank_removed)
      * * start pinging it if we're not already
      * check if the next rank is in the same pinging set, and delete
      * ourselves if not.
+     In the case where we are removing the highest rank,
+     we erase the removed rank from all sets.
    */
-  for (unsigned i = rank_removed + 1; i <= paxos_size() ; ++i) {
-    if (live_pinging.count(i)) {
-      dead_pinging.erase(i-1);
-      if (!live_pinging.count(i-1)) {
-       begin_peer_ping(i-1);
+  if (rank_removed < paxos_size()) {
+    for (unsigned i = rank_removed + 1; i <= paxos_size() ; ++i) {
+      if (live_pinging.count(i)) {
+        dead_pinging.erase(i-1);
+        if (!live_pinging.count(i-1)) {
+         begin_peer_ping(i-1);
+        }
+        if (!live_pinging.count(i+1)) {
+         live_pinging.erase(i);
+        }
       }
-      if (!live_pinging.count(i+1)) {
-       live_pinging.erase(i);
+      else if (dead_pinging.count(i)) {
+        live_pinging.erase(i-1);
+        if (!dead_pinging.count(i-1)) {
+         begin_dead_ping(i-1);
+        }
+        if (!dead_pinging.count(i+1)) {
+         dead_pinging.erase(i);
+        }
+      } else {
+        // we aren't pinging rank i at all
+        if (i-1 == (unsigned)rank_removed) {
+         // so we special case to make sure we
+         // actually nuke the removed rank
+         dead_pinging.erase(rank_removed);
+         live_pinging.erase(rank_removed);
+        }
       }
-    }
-    else if (dead_pinging.count(i)) {
-      live_pinging.erase(i-1);
-      if (!dead_pinging.count(i-1)) {
-       begin_dead_ping(i-1);
-      }
-      if (!dead_pinging.count(i+1)) {
-       dead_pinging.erase(i);
-      }
-    } else {
-      // we aren't pinging rank i at all
-      if (i-1 == (unsigned)rank_removed) {
-       // so we special case to make sure we
-       // actually nuke the removed rank
-       dead_pinging.erase(rank_removed);
-       live_pinging.erase(rank_removed);
-      }
-    }
-  }
+     }
+   } else {
+     if (live_pinging.count(rank_removed)) {
+       live_pinging.erase(rank_removed);
+     }
+     if (dead_pinging.count(rank_removed)) {
+       dead_pinging.erase(rank_removed);
+     }
+   }
 }
 
 void Elector::notify_strategy_maybe_changed(int strategy)
index eb489e5dfc734d55b2b66ea55de5adf800bb5c7f..80e069d593af0f37132ac58eeaef07a77582b50f 100644 (file)
@@ -415,7 +415,7 @@ void LogMonitor::log_external(const LogEntry& le)
     }
 
     if (fd >= 0) {
-      fmt::format_to(file_log_buffer, "{}\n", le);
+      fmt::format_to(std::back_inserter(file_log_buffer), "{}\n", le);
       int err = safe_write(fd, file_log_buffer.data(), file_log_buffer.size());
       file_log_buffer.clear();
       if (err < 0) {
index 5b397cb59b6d96ccc063157572ec1b6cd77b48b7..638612df8839967a2a0585b436b56c56ea8c929c 100644 (file)
@@ -248,6 +248,9 @@ void MDSMonitor::encode_pending(MonitorDBStore::TransactionRef t)
       health.decode(bl_i);
     }
     for (const auto &metric : health.metrics) {
+      if (metric.type == MDS_HEALTH_DUMMY) {
+        continue;
+      }
       const auto rank = info.rank;
       health_check_t *check = &new_checks.get_or_add(
        mds_metric_name(metric.type),
@@ -593,10 +596,16 @@ bool MDSMonitor::prepare_beacon(MonOpRequestRef op)
 
   std::set<mds_metric_t> new_types;
   for (const auto &i : new_health) {
+    if (i.type == MDS_HEALTH_DUMMY) {
+      continue;
+    }
     new_types.insert(i.type);
   }
 
   for (const auto &new_metric: new_health) {
+    if (new_metric.type == MDS_HEALTH_DUMMY) {
+      continue;
+    }
     if (old_types.count(new_metric.type) == 0) {
       dout(10) << "MDS health message (" << m->get_orig_source()
               << "): " << new_metric.sev << " " << new_metric.message << dendl;
@@ -691,26 +700,27 @@ bool MDSMonitor::prepare_beacon(MonOpRequestRef op)
       return true;
     }
 
-    // legal state change?
-    if ((info.state == MDSMap::STATE_STANDBY && state > 0) ||
-        (info.state == MDSMap::STATE_STANDBY_REPLAY && state > 0 && state != MDSMap::STATE_DAMAGED)) {
-      /* N.B.: standby-replay can indicate the rank is damaged due to failure to replay */
-      dout(10) << "mds_beacon mds can't activate itself (" << ceph_mds_state_name(info.state)
-              << " -> " << ceph_mds_state_name(state) << ")" << dendl;
+    if (state == MDSMap::STATE_DNE) {
+      dout(1) << __func__ << ": DNE from " << info << dendl;
       goto evict;
-    } else if ((state == MDSMap::STATE_STANDBY || state == MDSMap::STATE_STANDBY_REPLAY)
-        && info.rank != MDS_RANK_NONE)
-    {
-      dout(4) << "mds_beacon MDS can't go back into standby after taking rank: "
-                 "held rank " << info.rank << " while requesting state "
-              << ceph_mds_state_name(state) << dendl;
+    }
+
+    // legal state change?
+    if ((info.state == MDSMap::STATE_STANDBY && state != info.state) ||
+        (info.state == MDSMap::STATE_STANDBY_REPLAY && state != info.state && state != MDSMap::STATE_DAMAGED)) {
+      // Standby daemons should never modify their own state.
+      // Except that standby-replay can indicate the rank is damaged due to failure to replay.
+      // Reject any attempts to do so.
+      derr << "standby " << gid << " attempted to change state to "
+           << ceph_mds_state_name(state) << ", rejecting" << dendl;
       goto evict;
-    } else if (info.state == MDSMap::STATE_STOPPING &&
-        state != MDSMap::STATE_STOPPING &&
-        state != MDSMap::STATE_STOPPED) {
-      // we can't transition to any other states from STOPPING
-      dout(0) << "got beacon for MDS in STATE_STOPPING, ignoring requested state change"
-              << dendl;
+    } else if (info.state != MDSMap::STATE_STANDBY && state != info.state &&
+               !MDSMap::state_transition_valid(info.state, state)) {
+      // Validate state transitions for daemons that hold a rank
+      derr << "daemon " << gid << " (rank " << info.rank << ") "
+           << "reported invalid state transition "
+           << ceph_mds_state_name(info.state) << " -> "
+           << ceph_mds_state_name(state) << dendl;
       goto evict;
     }
 
@@ -791,23 +801,6 @@ bool MDSMonitor::prepare_beacon(MonOpRequestRef op)
       last_beacon.erase(rankgid);
 
       /* MDS expects beacon reply back */
-    } else if (state == MDSMap::STATE_DNE) {
-      dout(1) << __func__ << ": DNE from " << info << dendl;
-      goto evict;
-    } else if (info.state == MDSMap::STATE_STANDBY && state != info.state) {
-      // Standby daemons should never modify their own
-      // state.  Reject any attempts to do so.
-      derr << "standby " << gid << " attempted to change state to "
-           << ceph_mds_state_name(state) << ", rejecting" << dendl;
-      goto evict;
-    } else if (info.state != MDSMap::STATE_STANDBY && state != info.state &&
-               !MDSMap::state_transition_valid(info.state, state)) {
-      // Validate state transitions for daemons that hold a rank
-      derr << "daemon " << gid << " (rank " << info.rank << ") "
-           << "reported invalid state transition "
-           << ceph_mds_state_name(info.state) << " -> "
-           << ceph_mds_state_name(state) << dendl;
-      goto evict;
     } else {
       if (info.state != MDSMap::STATE_ACTIVE && state == MDSMap::STATE_ACTIVE) {
         const auto &fscid = pending.mds_roles.at(gid);
index e1dc3723965916f5cd0d364ab9b35cf59723727d..2f2378f624631d2640b4484b6041f40bc709f521 100644 (file)
@@ -213,6 +213,9 @@ void MonCapGrant::expand_profile(const EntityName& name) const
     profile_grants.push_back(MonCapGrant("auth rm"));
     // tell commands (this is a bit of a kludge)
     profile_grants.push_back(MonCapGrant("smart"));
+    // allow the Telemetry module to gather heap and mempool metrics
+    profile_grants.push_back(MonCapGrant("heap"));
+    profile_grants.push_back(MonCapGrant("dump_mempools"));
   }
   if (profile == "osd" || profile == "mds" || profile == "mon" ||
       profile == "mgr") {
index 9ffa7d367df9868ef90d63034180f6a2f4924ece..38ad26f61bdcf346db20b357a3f05b30a4b34580 100644 (file)
@@ -154,7 +154,7 @@ int MonClient::get_monmap_and_config()
     if (r < 0) {
       return r;
     }
-    r = authenticate(cct->_conf->client_mount_timeout);
+    r = authenticate(std::chrono::duration<double>(cct->_conf.get_val<std::chrono::seconds>("client_mount_timeout")).count());
     if (r == -ETIMEDOUT) {
       shutdown();
       continue;
index 19aa047c2181fccf0eebfc4e31e0eae540ce587c..de6bba574ff1a296fd539e6ccee2290da4414ad2 100644 (file)
@@ -158,7 +158,7 @@ struct MonClientPinger : public Dispatcher,
   int wait_for_reply(double timeout = 0.0) {
     std::unique_lock locker{lock};
     if (timeout <= 0) {
-      timeout = cct->_conf->client_mount_timeout;
+      timeout = std::chrono::duration<double>(cct->_conf.get_val<std::chrono::seconds>("client_mount_timeout")).count();
     }
     done = false;
     if (ping_recvd_cond.wait_for(locker,
index ac6d6632c39a3a1399915aaf66b86e9d1d864e8a..f756c1f07e4477e6e662a8866d0dc4d068045acb 100644 (file)
@@ -2966,6 +2966,19 @@ void Monitor::log_health(
   }
 }
 
+void Monitor::update_pending_metadata()
+{
+  Metadata metadata;
+  collect_metadata(&metadata);
+  size_t version_size = mon_metadata[rank]["ceph_version_short"].size();
+  const std::string current_version = mon_metadata[rank]["ceph_version_short"];
+  const std::string pending_version = metadata["ceph_version_short"];
+
+  if (current_version.compare(0, version_size, pending_version) < 0) {
+    mgr_client.update_daemon_metadata("mon", name, metadata);
+  }
+}
+
 void Monitor::get_cluster_status(stringstream &ss, Formatter *f,
                                 MonSession *session)
 {
@@ -3425,7 +3438,15 @@ void Monitor::handle_command(MonOpRequestRef op)
 
   // validate user's permissions for requested command
   map<string,string> param_str_map;
-  _generate_command_map(cmdmap, param_str_map);
+
+  // Catch bad_cmd_get exception if _generate_command_map() throws it
+  try {
+    _generate_command_map(cmdmap, param_str_map);
+  }
+  catch(bad_cmd_get& e) {
+    reply_command(op, -EINVAL, e.what(), 0);
+  }
+
   if (!_allowed_command(session, service, prefix, cmdmap,
                         param_str_map, mon_cmd)) {
     dout(1) << __func__ << " access denied" << dendl;
index 454daf63c6c7583128633ad8aa511353c98b4e94..575fef0a9c886059241b9fca30725a075a2d4445 100644 (file)
@@ -796,6 +796,8 @@ public:
     const health_check_map_t& previous,
     MonitorDBStore::TransactionRef t);
 
+  void update_pending_metadata();
+
 protected:
 
   class HealthCheckLogStatus {
index f9792ed575591b6a11bbdff551ce6422e1a0cf8e..6c5a9ce5736a7fa1e12593d3450d1f517fd7573f 100644 (file)
@@ -248,6 +248,8 @@ void MonmapMonitor::on_active()
 
   apply_mon_features(mon.get_quorum_mon_features(),
                     mon.quorum_min_mon_release);
+
+  mon.update_pending_metadata();
 }
 
 bool MonmapMonitor::preprocess_query(MonOpRequestRef op)
index 0d63ba8b5f6100c9263514e9b71aed440d33405a..5d76862e0a8346a593879f0f69b55870a04fc912 100644 (file)
@@ -12600,6 +12600,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       return false;
     }
 
+    // make sure kvmon is writeable.
+    if (!mon.kvmon()->is_writeable()) {
+      dout(10) << __func__ << " waiting for kv mon to be writeable for "
+               << "osd new" << dendl;
+      mon.kvmon()->wait_for_writeable(op, new C_RetryMessage(this, op));
+      return false;
+    }
+
     map<string,string> param_map;
 
     bufferlist bl = m->get_data();
index ba6f8cece41fc274f5fd0c79d7b32c7b4837ec29..4bcd4d8cc74e7923040a0f101b34e7ee78920eeb 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
 
 [ $# -lt 2 ] && echo "usage: $0 <name> <command> [params...]" && exit 1
 
index 6c57d355bdf49f95f90a2f624a3a705290c2cd6d..266eb7676786b85ea7481855fa6d8bd94c600a56 100644 (file)
 #include "messages/MMgrDigest.h"
 #include "messages/MMgrReport.h"
 #include "messages/MMgrOpen.h"
+#include "messages/MMgrUpdate.h"
 #include "messages/MMgrClose.h"
 #include "messages/MMgrConfigure.h"
 #include "messages/MMonMgrReport.h"
@@ -893,6 +894,10 @@ Message *decode_message(CephContext *cct,
     m = make_message<MMgrOpen>();
     break;
 
+  case MSG_MGR_UPDATE:
+    m = make_message<MMgrUpdate>();
+    break;
+
   case MSG_MGR_CLOSE:
     m = make_message<MMgrClose>();
     break;
index 362ae5ec6089d9c8eeb988aeced8b375ea5a248e..a7aff1e27a603fbc4f3274ad47a447a8ea27d246 100644 (file)
 #define MSG_MGR_COMMAND           0x709
 #define MSG_MGR_COMMAND_REPLY     0x70a
 
+// *** ceph-mgr <-> MON daemons ***
+#define MSG_MGR_UPDATE     0x70b
+
 // ======================================================
 
 // abstract Message class
index cd5b2dd741a247cfacbdad3aca35b5bcace17b6d..ef7a56a44d942cd1059348f9aed73ce15582a020 100644 (file)
@@ -101,6 +101,7 @@ class MMgrConfigure;
 class MMgrDigest;
 class MMgrMap;
 class MMgrOpen;
+class MMgrUpdate;
 class MMgrReport;
 class MMonCommandAck;
 class MMonCommand;
index 43363371bc35d05eb342a4113881ee9936e8dc07..1bc661a559b82ca6e293f01153d890fa07b93d7c 100644 (file)
@@ -662,7 +662,7 @@ CtPtr ProtocolV1::throttle_message() {
                    << "/" << connection->policy.throttler_messages->get_max()
                    << dendl;
     if (!connection->policy.throttler_messages->get_or_fail()) {
-      ldout(cct, 10) << __func__ << " wants 1 message from policy throttle "
+      ldout(cct, 1) << __func__ << " wants 1 message from policy throttle "
                      << connection->policy.throttler_messages->get_current()
                      << "/" << connection->policy.throttler_messages->get_max()
                      << " failed, just wait." << dendl;
@@ -693,7 +693,7 @@ CtPtr ProtocolV1::throttle_bytes() {
                      << connection->policy.throttler_bytes->get_current() << "/"
                      << connection->policy.throttler_bytes->get_max() << dendl;
       if (!connection->policy.throttler_bytes->get_or_fail(cur_msg_size)) {
-        ldout(cct, 10) << __func__ << " wants " << cur_msg_size
+        ldout(cct, 1) << __func__ << " wants " << cur_msg_size
                        << " bytes from policy throttler "
                        << connection->policy.throttler_bytes->get_current()
                        << "/" << connection->policy.throttler_bytes->get_max()
@@ -720,7 +720,7 @@ CtPtr ProtocolV1::throttle_dispatch_queue() {
   if (cur_msg_size) {
     if (!connection->dispatch_queue->dispatch_throttler.get_or_fail(
             cur_msg_size)) {
-      ldout(cct, 10)
+      ldout(cct, 1)
           << __func__ << " wants " << cur_msg_size
           << " bytes from dispatch throttle "
           << connection->dispatch_queue->dispatch_throttler.get_current() << "/"
index a176fc2c808ac9eb8d465310781daf4eacc20b98..d63621438801fdc33155c2afe3529120a5e489d2 100644 (file)
@@ -1530,7 +1530,7 @@ CtPtr ProtocolV2::throttle_message() {
                    << "/" << connection->policy.throttler_messages->get_max()
                    << dendl;
     if (!connection->policy.throttler_messages->get_or_fail()) {
-      ldout(cct, 10) << __func__ << " wants 1 message from policy throttle "
+      ldout(cct, 1) << __func__ << " wants 1 message from policy throttle "
                      << connection->policy.throttler_messages->get_current()
                      << "/" << connection->policy.throttler_messages->get_max()
                      << " failed, just wait." << dendl;
@@ -1560,7 +1560,7 @@ CtPtr ProtocolV2::throttle_bytes() {
                      << connection->policy.throttler_bytes->get_current() << "/"
                      << connection->policy.throttler_bytes->get_max() << dendl;
       if (!connection->policy.throttler_bytes->get_or_fail(cur_msg_size)) {
-        ldout(cct, 10) << __func__ << " wants " << cur_msg_size
+        ldout(cct, 1) << __func__ << " wants " << cur_msg_size
                        << " bytes from policy throttler "
                        << connection->policy.throttler_bytes->get_current()
                        << "/" << connection->policy.throttler_bytes->get_max()
@@ -1588,7 +1588,7 @@ CtPtr ProtocolV2::throttle_dispatch_queue() {
   if (cur_msg_size) {
     if (!connection->dispatch_queue->dispatch_throttler.get_or_fail(
             cur_msg_size)) {
-      ldout(cct, 10)
+      ldout(cct, 1)
           << __func__ << " wants " << cur_msg_size
           << " bytes from dispatch throttle "
           << connection->dispatch_queue->dispatch_throttler.get_current() << "/"
@@ -2596,7 +2596,7 @@ CtPtr ProtocolV2::handle_reconnect(ceph::bufferlist &payload)
 CtPtr ProtocolV2::handle_existing_connection(const AsyncConnectionRef& existing) {
   ldout(cct, 20) << __func__ << " existing=" << existing << dendl;
 
-  std::lock_guard<std::mutex> l(existing->lock);
+  std::unique_lock<std::mutex> l(existing->lock);
 
   ProtocolV2 *exproto = dynamic_cast<ProtocolV2 *>(existing->protocol.get());
   if (!exproto) {
@@ -2607,6 +2607,7 @@ CtPtr ProtocolV2::handle_existing_connection(const AsyncConnectionRef& existing)
   if (exproto->state == CLOSED) {
     ldout(cct, 1) << __func__ << " existing " << existing << " already closed."
                   << dendl;
+    l.unlock();
     return send_server_ident();
   }
 
@@ -2636,6 +2637,7 @@ CtPtr ProtocolV2::handle_existing_connection(const AsyncConnectionRef& existing)
         << dendl;
     existing->protocol->stop();
     existing->dispatch_queue->queue_reset(existing.get());
+    l.unlock();
     return send_server_ident();
   }
 
@@ -2714,14 +2716,11 @@ CtPtr ProtocolV2::reuse_connection(const AsyncConnectionRef& existing,
   exproto->pre_auth.enabled = false;
 
   if (!reconnecting) {
-    exproto->peer_supported_features = peer_supported_features;
-    exproto->tx_frame_asm.set_is_rev1(tx_frame_asm.get_is_rev1());
-    exproto->rx_frame_asm.set_is_rev1(rx_frame_asm.get_is_rev1());
-
     exproto->client_cookie = client_cookie;
     exproto->peer_name = peer_name;
     exproto->connection_features = connection_features;
     existing->set_features(connection_features);
+    exproto->peer_supported_features = peer_supported_features;
   }
   exproto->peer_global_seq = peer_global_seq;
 
@@ -2764,6 +2763,9 @@ CtPtr ProtocolV2::reuse_connection(const AsyncConnectionRef& existing,
         new_worker,
         new_center,
         exproto,
+        reconnecting=reconnecting,
+        tx_is_rev1=tx_frame_asm.get_is_rev1(),
+        rx_is_rev1=rx_frame_asm.get_is_rev1(),
         temp_stream_handlers=std::move(temp_stream_handlers),
         temp_compression_handlers=std::move(temp_compression_handlers)
       ](ConnectedSocket &cs) mutable {
@@ -2781,6 +2783,10 @@ CtPtr ProtocolV2::reuse_connection(const AsyncConnectionRef& existing,
           existing->open_write = false;
           exproto->session_stream_handlers = std::move(temp_stream_handlers);
           exproto->session_compression_handlers = std::move(temp_compression_handlers);
+          if (!reconnecting) {
+            exproto->tx_frame_asm.set_is_rev1(tx_is_rev1);
+            exproto->rx_frame_asm.set_is_rev1(rx_is_rev1);
+          }
           existing->write_lock.unlock();
           if (exproto->state == NONE) {
             existing->shutdown_socket();
index 6e0ee1261de4d8917a04b3b76121d22b2787bbc0..a33545d916f3d51ed13592082bc72bea8b897d32 100644 (file)
 
 #define MAX_PORT_NUMBER 65535
 
+#ifdef _WIN32
+// ceph_sockaddr_storage matches the Linux format.
+#define AF_INET6_LINUX 10
+#endif
+
 namespace ceph {
   class Formatter;
 }
@@ -161,6 +166,14 @@ static inline void encode(const sockaddr_storage& a, ceph::buffer::list& bl) {
                                  (unsigned char*)(&ss + 1) - dst);
   ::memcpy(dst, src, copy_size);
   encode(ss, bl);
+#elif defined(_WIN32)
+  ceph_sockaddr_storage ss{};
+  ::memcpy(&ss, &a, std::min(sizeof(ss), sizeof(a)));
+  // The Windows AF_INET6 definition doesn't match the Linux one.
+  if (a.ss_family == AF_INET6) {
+    ss.ss_family = AF_INET6_LINUX;
+  }
+  encode(ss, bl);
 #else
   ceph_sockaddr_storage ss;
   ::memset(&ss, '\0', sizeof(ss));
@@ -186,6 +199,13 @@ static inline void decode(sockaddr_storage& a,
   auto const copy_size = std::min((unsigned char*)(&ss + 1) - src,
                                  (unsigned char*)(&a + 1) - dst);
   ::memcpy(dst, src, copy_size);
+#elif defined(_WIN32)
+  ceph_sockaddr_storage ss{};
+  decode(ss, bl);
+  ::memcpy(&a, &ss, std::min(sizeof(ss), sizeof(a)));
+  if (a.ss_family == AF_INET6_LINUX) {
+    a.ss_family = AF_INET6;
+  }
 #else
   ceph_sockaddr_storage ss{};
   decode(ss, bl);
@@ -470,7 +490,11 @@ struct entity_addr_t {
     encode(elen, bl);
     if (elen) {
       uint16_t ss_family = u.sa.sa_family;
-
+#if defined(_WIN32)
+      if (ss_family == AF_INET6) {
+        ss_family = AF_INET6_LINUX;
+      }
+#endif
       encode(ss_family, bl);
       elen -= sizeof(u.sa.sa_family);
       bl.append(u.sa.sa_data, elen);
@@ -501,6 +525,11 @@ struct entity_addr_t {
        throw ceph::buffer::malformed_input("elen smaller than family len");
       }
       decode(ss_family, bl);
+#if defined(_WIN32)
+      if (ss_family == AF_INET6_LINUX) {
+        ss_family = AF_INET6;
+      }
+#endif
       u.sa.sa_family = ss_family;
       elen -= sizeof(ss_family);
       if (elen > get_sockaddr_len() - sizeof(u.sa.sa_family)) {
index 8851ed501b1793813bb4eb20b27d5ee730c47032..9eb774c189a0e2c12c0b0f26b19418e12a8a825a 100644 (file)
@@ -12,6 +12,7 @@ types-PyYAML==5.4.0
 
 # src/pybind
 types-backports==0.1.2
+types-pkg_resources==0.1.3
 
 # qa/
 types-boto==0.1.0
index bddd62c2f8ba16e6f1172fdcd7d20f35ca19eb03..6c9c210a85cde02f391758e5920ebcc97a11e7c7 100644 (file)
@@ -59,7 +59,7 @@ RADOS::RADOS(boost::asio::io_context& ioctx,
   if (err) {
     throw boost::system::system_error(ceph::to_error_code(err));
   }
-  err = monclient.authenticate(cct->_conf->client_mount_timeout);
+  err = monclient.authenticate(std::chrono::duration<double>(cct->_conf.get_val<std::chrono::seconds>("client_mount_timeout")).count());
   if (err) {
     throw boost::system::system_error(ceph::to_error_code(err));
   }
index 6c9e737b4568e17a8b2d779e0f1286315bc8b3bb..3239a825846d8bf65e7598d78d7f8fbb9c56749a 100644 (file)
@@ -13918,6 +13918,10 @@ int BlueStore::_deferred_replay()
   dout(10) << __func__ << " start" << dendl;
   int count = 0;
   int r = 0;
+  interval_set<uint64_t> bluefs_extents;
+  if (bluefs) {
+    bluefs->get_block_extents(bluefs_layout.shared_bdev, &bluefs_extents);
+  }
   CollectionRef ch = _get_collection(coll_t::meta());
   bool fake_ch = false;
   if (!ch) {
@@ -13943,10 +13947,15 @@ int BlueStore::_deferred_replay()
       r = -EIO;
       goto out;
     }
-    TransContext *txc = _txc_create(ch.get(), osr,  nullptr);
-    txc->deferred_txn = deferred_txn;
-    txc->set_state(TransContext::STATE_KV_DONE);
-    _txc_state_proc(txc);
+    bool has_some = _eliminate_outdated_deferred(deferred_txn, bluefs_extents);
+    if (has_some) {
+      TransContext *txc = _txc_create(ch.get(), osr,  nullptr);
+      txc->deferred_txn = deferred_txn;
+      txc->set_state(TransContext::STATE_KV_DONE);
+      _txc_state_proc(txc);
+    } else {
+      delete deferred_txn;
+    }
   }
  out:
   dout(20) << __func__ << " draining osr" << dendl;
@@ -13959,6 +13968,76 @@ int BlueStore::_deferred_replay()
   return r;
 }
 
+bool BlueStore::_eliminate_outdated_deferred(bluestore_deferred_transaction_t* deferred_txn,
+                                            interval_set<uint64_t>& bluefs_extents)
+{
+  bool has_some = false;
+  dout(30) << __func__ << " bluefs_extents: " << std::hex << bluefs_extents << std::dec << dendl;
+  auto it = deferred_txn->ops.begin();
+  while (it != deferred_txn->ops.end()) {
+    // We process a pair of _data_/_extents_ (here: it->data/it->extents)
+    // by eliminating _extents_ that belong to bluefs, removing relevant parts of _data_
+    // example:
+    // +------------+---------------+---------------+---------------+
+    // | data       | aaaaaaaabbbbb | bbbbcccccdddd | ddddeeeeeefff |
+    // | extent     | 40000 - 44000 | 50000 - 58000 | 58000 - 60000 |
+    // | in bluefs? |       no      |      yes      |       no      |
+    // +------------+---------------+---------------+---------------+
+    // result:
+    // +------------+---------------+---------------+
+    // | data       | aaaaaaaabbbbb | ddddeeeeeefff |
+    // | extent     | 40000 - 44000 | 58000 - 60000 |
+    // +------------+---------------+---------------+
+    PExtentVector new_extents;
+    ceph::buffer::list new_data;
+    uint32_t data_offset = 0; // this tracks location of extent 'e' inside it->data
+    dout(30) << __func__ << " input extents: " << it->extents << dendl;
+    for (auto& e: it->extents) {
+      interval_set<uint64_t> region;
+      region.insert(e.offset, e.length);
+
+      auto mi = bluefs_extents.lower_bound(e.offset);
+      if (mi != bluefs_extents.begin()) {
+       --mi;
+       if (mi.get_end() <= e.offset) {
+         ++mi;
+       }
+      }
+      while (mi != bluefs_extents.end() && mi.get_start() < e.offset + e.length) {
+       // The interval_set does not like (asserts) when we erase interval that does not exist.
+       // Hence we do we implement (region-mi) by ((region+mi)-mi).
+       region.union_insert(mi.get_start(), mi.get_len());
+       region.erase(mi.get_start(), mi.get_len());
+       ++mi;
+      }
+      // 'region' is now a subset of e, without parts used by bluefs
+      // we trim coresponding parts from it->data (actally constructing new_data / new_extents)
+      for (auto ki = region.begin(); ki != region.end(); ki++) {
+       ceph::buffer::list chunk;
+       // A chunk from it->data; data_offset is a an offset where 'e' was located;
+       // 'ki.get_start() - e.offset' is an offset of ki inside 'e'.
+       chunk.substr_of(it->data, data_offset + (ki.get_start() - e.offset), ki.get_len());
+       new_data.claim_append(chunk);
+       new_extents.emplace_back(bluestore_pextent_t(ki.get_start(), ki.get_len()));
+      }
+      data_offset += e.length;
+    }
+    dout(30) << __func__ << " output extents: " << new_extents << dendl;
+    if (it->data.length() != new_data.length()) {
+      dout(10) << __func__ << " trimmed deferred extents: " << it->extents << "->" << new_extents << dendl;
+    }
+    if (new_extents.size() == 0) {
+      it = deferred_txn->ops.erase(it);
+    } else {
+      has_some = true;
+      std::swap(it->extents, new_extents);
+      std::swap(it->data, new_data);
+      ++it;
+    }
+  }
+  return has_some;
+}
+
 // ---------------------------
 // transactions
 
index 10fdd0f721a0a31f3bc3b3693868f488a34b36fc..5f1b84d9100ac97a22297487672ac44a27dfc66b 100644 (file)
@@ -2684,6 +2684,8 @@ private:
   void _deferred_submit_unlock(OpSequencer *osr);
   void _deferred_aio_finish(OpSequencer *osr);
   int _deferred_replay();
+  bool _eliminate_outdated_deferred(bluestore_deferred_transaction_t* deferred_txn,
+                                   interval_set<uint64_t>& bluefs_extents);
 
 public:
   using mempool_dynamic_bitset =
index 121f7ccd3049f6aba8fd2478597212a49f3ab611..b62f6e2a3670b00ff7da37048685e0e9b364468f 100644 (file)
@@ -366,11 +366,12 @@ ostream& operator<<(ostream& out, const bluestore_extent_ref_map_t& m)
 bluestore_blob_use_tracker_t::bluestore_blob_use_tracker_t(
   const bluestore_blob_use_tracker_t& tracker)
  : au_size{tracker.au_size},
-   num_au{tracker.num_au},
+   num_au(0),
+   alloc_au(0),
    bytes_per_au{nullptr}
 {
-  if (num_au > 0) {
-    allocate();
+  if (tracker.num_au > 0) {
+    allocate(tracker.num_au);
     std::copy(tracker.bytes_per_au, tracker.bytes_per_au + num_au, bytes_per_au);
   } else {
     total_bytes = tracker.total_bytes;
@@ -385,9 +386,8 @@ bluestore_blob_use_tracker_t::operator=(const bluestore_blob_use_tracker_t& rhs)
   }
   clear();
   au_size = rhs.au_size;
-  num_au = rhs.num_au;
   if (rhs.num_au > 0) {
-    allocate();
+    allocate( rhs.num_au);
     std::copy(rhs.bytes_per_au, rhs.bytes_per_au + num_au, bytes_per_au);
   } else {
     total_bytes = rhs.total_bytes;
@@ -395,19 +395,31 @@ bluestore_blob_use_tracker_t::operator=(const bluestore_blob_use_tracker_t& rhs)
   return *this;
 }
 
-void bluestore_blob_use_tracker_t::allocate()
+void bluestore_blob_use_tracker_t::allocate(uint32_t au_count)
 {
-  ceph_assert(num_au != 0);
-  bytes_per_au = new uint32_t[num_au];
+  ceph_assert(au_count != 0);
+  ceph_assert(num_au == 0);
+  ceph_assert(alloc_au == 0);
+  num_au = alloc_au = au_count;
+  bytes_per_au = new uint32_t[alloc_au];
   mempool::get_pool(
     mempool::pool_index_t(mempool::mempool_bluestore_cache_other)).
-      adjust_count(1, sizeof(uint32_t) * num_au);
+      adjust_count(alloc_au, sizeof(uint32_t) * alloc_au);
 
   for (uint32_t i = 0; i < num_au; ++i) {
     bytes_per_au[i] = 0;
   }
 }
 
+void bluestore_blob_use_tracker_t::release(uint32_t au_count, uint32_t* ptr) {
+  if (au_count) {
+    delete[] ptr;
+    mempool::get_pool(
+      mempool::pool_index_t(mempool::mempool_bluestore_cache_other)).
+        adjust_count(-(int32_t)au_count, -(int32_t)(sizeof(uint32_t) * au_count));
+  }
+}
+
 void bluestore_blob_use_tracker_t::init(
   uint32_t full_length, uint32_t _au_size) {
   ceph_assert(!au_size || is_empty()); 
@@ -417,8 +429,7 @@ void bluestore_blob_use_tracker_t::init(
   uint32_t _num_au = round_up_to(full_length, _au_size) / _au_size;
   au_size = _au_size;
   if ( _num_au > 1 ) {
-    num_au = _num_au;
-    allocate();
+    allocate(_num_au);
   }
 }
 
index ed82991a5673e8deb7c0db966af550d1a738b1a6..e92a7555235b001c2e5b001e1ee9723947ab0ad0 100644 (file)
@@ -247,10 +247,11 @@ struct bluestore_blob_use_tracker_t {
   //   1) Struct isn't packed hence it's padded. And even if it's packed see 2)
   //   2) Mem manager has its own granularity, most probably >= 8 bytes
   //
-  uint32_t au_size; // Allocation (=tracking) unit size,
-                    // == 0 if uninitialized
-  uint32_t num_au;  // Amount of allocation units tracked
-                    // == 0 if single unit or the whole blob is tracked
+  uint32_t au_size;  // Allocation (=tracking) unit size,
+                     // == 0 if uninitialized
+  uint32_t num_au;   // Amount of allocation units tracked
+                     // == 0 if single unit or the whole blob is tracked
+  uint32_t alloc_au; // Amount of allocation units allocated
                        
   union {
     uint32_t* bytes_per_au;
@@ -258,7 +259,7 @@ struct bluestore_blob_use_tracker_t {
   };
   
   bluestore_blob_use_tracker_t()
-    : au_size(0), num_au(0), bytes_per_au(nullptr) {
+    : au_size(0), num_au(0), alloc_au(0), bytes_per_au(nullptr) {
   }
   bluestore_blob_use_tracker_t(const bluestore_blob_use_tracker_t& tracker);
   bluestore_blob_use_tracker_t& operator=(const bluestore_blob_use_tracker_t& rhs);
@@ -267,15 +268,11 @@ struct bluestore_blob_use_tracker_t {
   }
 
   void clear() {
-    if (num_au != 0) {
-      delete[] bytes_per_au;
-      mempool::get_pool(
-        mempool::pool_index_t(mempool::mempool_bluestore_cache_other)).
-          adjust_count(-1, -sizeof(uint32_t) * num_au);
-    }
+    release(alloc_au, bytes_per_au);
+    num_au = 0;
+    alloc_au = 0;
     bytes_per_au = 0;
     au_size = 0;
-    num_au = 0;
   }
 
   uint32_t get_referenced_bytes() const {
@@ -311,7 +308,6 @@ struct bluestore_blob_use_tracker_t {
       ceph_assert(_num_au <= num_au);
       if (_num_au) {
         num_au = _num_au; // bytes_per_au array is left unmodified
-
       } else {
         clear();
       }
@@ -337,15 +333,17 @@ struct bluestore_blob_use_tracker_t {
       if (_num_au > num_au) {
        auto old_bytes = bytes_per_au;
        auto old_num_au = num_au;
-       num_au = _num_au;
-       allocate();
+       auto old_alloc_au = alloc_au;
+       alloc_au = num_au = 0; // to bypass an assertion in allocate()
+       bytes_per_au = nullptr;
+       allocate(_num_au);
        for (size_t i = 0; i < old_num_au; i++) {
          bytes_per_au[i] = old_bytes[i];
        }
        for (size_t i = old_num_au; i < num_au; i++) {
          bytes_per_au[i] = 0;
        }
-       delete[] old_bytes;
+       release(old_alloc_au, old_bytes);
       }
     }
   }
@@ -410,12 +408,14 @@ struct bluestore_blob_use_tracker_t {
     clear();
     denc_varint(au_size, p);
     if (au_size) {
-      denc_varint(num_au, p);
-      if (!num_au) {
+      uint32_t _num_au;
+      denc_varint(_num_au, p);
+      if (!_num_au) {
+        num_au = 0;
         denc_varint(total_bytes, p);
       } else {
-        allocate();
-        for (size_t i = 0; i < num_au; ++i) {
+        allocate(_num_au);
+        for (size_t i = 0; i < _num_au; ++i) {
          denc_varint(bytes_per_au[i], p);
         }
       }
@@ -425,7 +425,8 @@ struct bluestore_blob_use_tracker_t {
   void dump(ceph::Formatter *f) const;
   static void generate_test_instances(std::list<bluestore_blob_use_tracker_t*>& o);
 private:
-  void allocate();
+  void allocate(uint32_t _num_au);
+  void release(uint32_t _num_au, uint32_t* ptr);
 };
 WRITE_CLASS_DENC(bluestore_blob_use_tracker_t)
 std::ostream& operator<<(std::ostream& out, const bluestore_blob_use_tracker_t& rm);
index 141326d45d639841a521d5ecbaeb08c4b822a6d6..a21b04a688db063601d40a786af63e2b2c12e0a9 100644 (file)
@@ -1991,7 +1991,10 @@ void OSDService::_queue_for_recovery(
 // Commands shared between OSD's console and admin console:
 namespace ceph::osd_cmds {
 
-int heap(CephContext& cct, const cmdmap_t& cmdmap, Formatter& f, std::ostream& os);
+int heap(CephContext& cct,
+         const cmdmap_t& cmdmap,
+         std::ostream& outos,
+         std::ostream& erros);
 
 } // namespace ceph::osd_cmds
 
@@ -2896,7 +2899,9 @@ will start to track new ops received afterwards.";
   }
 
   else if (prefix == "heap") {
-    ret = ceph::osd_cmds::heap(*cct, cmdmap, *f, ss);
+    std::stringstream outss;
+    ret = ceph::osd_cmds::heap(*cct, cmdmap, outss, ss);
+    outbl.append(outss);
   }
 
   else if (prefix == "debug dump_missing") {
@@ -10877,7 +10882,7 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb)
       if (is_smallest_thread_index) {
         sdata->shard_lock.unlock();
         handle_oncommits(oncommits);
-        return;
+        sdata->shard_lock.lock();
       }
       std::unique_lock wait_lock{sdata->sdata_wait_lock};
       auto future_time = ceph::real_clock::from_double(*when_ready);
@@ -10893,6 +10898,11 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb)
       // Reapply default wq timeouts
       osd->cct->get_heartbeat_map()->reset_timeout(hb,
         timeout_interval, suicide_interval);
+      // Populate the oncommits list if there were any additions
+      // to the context_queue while we were waiting
+      if (is_smallest_thread_index) {
+        sdata->context_queue.move_to(oncommits);
+      }
     }
   } // while
 
@@ -11217,17 +11227,19 @@ void OSD::ShardedOpWQ::stop_for_fast_shutdown()
 
 namespace ceph::osd_cmds {
 
-int heap(CephContext& cct, const cmdmap_t& cmdmap, Formatter& f,
-        std::ostream& os)
+int heap(CephContext& cct,
+         const cmdmap_t& cmdmap,
+         std::ostream& outos,
+         std::ostream& erros)
 {
   if (!ceph_using_tcmalloc()) {
-        os << "could not issue heap profiler command -- not using tcmalloc!";
+        erros << "could not issue heap profiler command -- not using tcmalloc!";
         return -EOPNOTSUPP;
   }
 
   string cmd;
   if (!cmd_getval(cmdmap, "heapcmd", cmd)) {
-        os << "unable to get value for command \"" << cmd << "\"";
+        erros << "unable to get value for command \"" << cmd << "\"";
        return -EINVAL;
   }
 
@@ -11239,7 +11251,7 @@ int heap(CephContext& cct, const cmdmap_t& cmdmap, Formatter& f,
     cmd_vec.push_back(val);
   }
 
-  ceph_heap_profiler_handle_command(cmd_vec, os);
+  ceph_heap_profiler_handle_command(cmd_vec, outos);
 
   return 0;
 }
index d77cef0d7b5c552b1156a2124b56dcea82c65a7d..9b0eb491c9875351031daceab329ab28161ce27c 100644 (file)
@@ -1326,6 +1326,7 @@ unsigned int PG::scrub_requeue_priority(Scrub::scrub_prio_t with_priority, unsig
  */
 Scrub::schedule_result_t PG::sched_scrub()
 {
+  using Scrub::schedule_result_t;
   dout(15) << __func__ << " pg(" << info.pgid
          << (is_active() ? ") <active>" : ") <not-active>")
          << (is_clean() ? " <clean>" : " <not-clean>") << dendl;
@@ -1333,11 +1334,19 @@ Scrub::schedule_result_t PG::sched_scrub()
   ceph_assert(m_scrubber);
 
   if (is_scrub_queued_or_active()) {
-    return Scrub::schedule_result_t::already_started;
+    return schedule_result_t::already_started;
   }
 
   if (!is_primary() || !is_active() || !is_clean()) {
-    return Scrub::schedule_result_t::bad_pg_state;
+    return schedule_result_t::bad_pg_state;
+  }
+
+  if (state_test(PG_STATE_SNAPTRIM) || state_test(PG_STATE_SNAPTRIM_WAIT)) {
+    // note that the trimmer checks scrub status when setting 'snaptrim_wait'
+    // (on the transition from NotTrimming to Trimming/WaitReservation),
+    // i.e. some time before setting 'snaptrim'.
+    dout(10) << __func__ << ": cannot scrub while snap-trimming" << dendl;
+    return schedule_result_t::bad_pg_state;
   }
 
   // analyse the combination of the requested scrub flags, the osd/pool configuration
@@ -1349,14 +1358,14 @@ Scrub::schedule_result_t PG::sched_scrub()
     // (due to configuration or priority issues)
     // The reason was already reported by the callee.
     dout(10) << __func__ << ": failed to initiate a scrub" << dendl;
-    return Scrub::schedule_result_t::preconditions;
+    return schedule_result_t::preconditions;
   }
 
   // try to reserve the local OSD resources. If failing: no harm. We will
   // be retried by the OSD later on.
   if (!m_scrubber->reserve_local()) {
     dout(10) << __func__ << ": failed to reserve locally" << dendl;
-    return Scrub::schedule_result_t::no_local_resources;
+    return schedule_result_t::no_local_resources;
   }
 
   // can commit to the updated flags now, as nothing will stop the scrub
@@ -1371,7 +1380,7 @@ Scrub::schedule_result_t PG::sched_scrub()
 
   dout(10) << __func__ << ": queueing" << dendl;
   osd->queue_for_scrub(this, Scrub::scrub_prio_t::low_priority);
-  return Scrub::schedule_result_t::scrub_initiated;
+  return schedule_result_t::scrub_initiated;
 }
 
 double PG::next_deepscrub_interval() const
index d7ab12c01dfa269ab18f7110876625f40749c693..ad6762b297341214550eac8aa4297e4d8ad532e0 100644 (file)
@@ -60,6 +60,7 @@ void PGLog::IndexedLog::trim(
   set<string>* trimmed_dups,
   eversion_t *write_from_dups)
 {
+  lgeneric_subdout(cct, osd, 10) << "IndexedLog::trim s=" << s << dendl;
   ceph_assert(s <= can_rollback_to);
   if (complete_to != log.end())
     lgeneric_subdout(cct, osd, 20) << " complete_to " << complete_to->version << dendl;
@@ -131,10 +132,18 @@ void PGLog::IndexedLog::trim(
     }
   }
 
-  while (!dups.empty()) {
+  // we can hit an inflated `dups` b/c of https://tracker.ceph.com/issues/53729
+  // the idea is to slowly trim them over a prolonged period of time and mix
+  // omap deletes with writes (if we're here, a new log entry got added) to
+  // neither: 1) blow size of single Transaction nor 2) generate-n-accumulate
+  // large amount of tombstones in BlueStore's RocksDB.
+  // if trimming immediately is a must, then the ceph-objectstore-tool is
+  // the way to go.
+  const size_t max_dups = cct->_conf->osd_pg_log_dups_tracked;
+  for (size_t max_dups_to_trim = cct->_conf->osd_pg_log_trim_max;
+       max_dups_to_trim > 0 && dups.size() > max_dups;
+       max_dups_to_trim--) {
     const auto& e = *dups.begin();
-    if (e.version.version >= earliest_dup_version)
-      break;
     lgeneric_subdout(cct, osd, 20) << "trim dup " << e << dendl;
     if (trimmed_dups)
       trimmed_dups->insert(e.get_key_name());
@@ -145,6 +154,10 @@ void PGLog::IndexedLog::trim(
   // raise tail?
   if (tail < s)
     tail = s;
+  lgeneric_subdout(cct, osd, 20) << "IndexedLog::trim after trim"
+                                << " dups.size()=" << dups.size()
+                                << " tail=" << tail
+                                << " s=" << s << dendl;
 }
 
 ostream& PGLog::IndexedLog::print(ostream& out) const
@@ -506,6 +519,9 @@ void PGLog::merge_log(pg_info_t &oinfo, pg_log_t&& olog, pg_shard_t fromosd,
 
 // returns true if any changes were made to log.dups
 bool PGLog::merge_log_dups(const pg_log_t& olog) {
+  dout(5) << __func__
+         << " log.dups.size()=" << log.dups.size()
+         <<  "olog.dups.size()=" << olog.dups.size() << dendl;
   bool changed = false;
 
   if (!olog.dups.empty()) {
@@ -584,6 +600,10 @@ bool PGLog::merge_log_dups(const pg_log_t& olog) {
     }
   }
 
+  dout(5) << "end of " << __func__ << " changed=" << changed
+         << " log.dups.size()=" << log.dups.size()
+         << " olog.dups.size()=" << olog.dups.size() << dendl;
+
   return changed;
 }
 
@@ -641,7 +661,8 @@ void PGLog::write_log_and_missing(
       dirty_from_dups,
       write_from_dups,
       &may_include_deletes_in_missing_dirty,
-      (pg_log_debug ? &log_keys_debug : nullptr));
+      (pg_log_debug ? &log_keys_debug : nullptr),
+      this);
     undirty();
   } else {
     dout(10) << "log is not dirty" << dendl;
@@ -655,14 +676,15 @@ void PGLog::write_log_and_missing_wo_missing(
     pg_log_t &log,
     const coll_t& coll, const ghobject_t &log_oid,
     map<eversion_t, hobject_t> &divergent_priors,
-    bool require_rollback
+    bool require_rollback,
+    const DoutPrefixProvider *dpp
     )
 {
   _write_log_and_missing_wo_missing(
     t, km, log, coll, log_oid,
     divergent_priors, eversion_t::max(), eversion_t(), eversion_t(),
     true, true, require_rollback,
-    eversion_t::max(), eversion_t(), eversion_t(), nullptr);
+    eversion_t::max(), eversion_t(), eversion_t(), nullptr, dpp);
 }
 
 // static
@@ -674,7 +696,8 @@ void PGLog::write_log_and_missing(
     const ghobject_t &log_oid,
     const pg_missing_tracker_t &missing,
     bool require_rollback,
-    bool *may_include_deletes_in_missing_dirty)
+    bool *may_include_deletes_in_missing_dirty,
+    const DoutPrefixProvider *dpp)
 {
   _write_log_and_missing(
     t, km, log, coll, log_oid,
@@ -688,7 +711,7 @@ void PGLog::write_log_and_missing(
     eversion_t::max(),
     eversion_t(),
     eversion_t(),
-    may_include_deletes_in_missing_dirty, nullptr);
+    may_include_deletes_in_missing_dirty, nullptr, dpp);
 }
 
 // static
@@ -707,10 +730,14 @@ void PGLog::_write_log_and_missing_wo_missing(
   eversion_t dirty_to_dups,
   eversion_t dirty_from_dups,
   eversion_t write_from_dups,
-  set<string> *log_keys_debug
+  set<string> *log_keys_debug,
+  const DoutPrefixProvider *dpp
   )
 {
-  // dout(10) << "write_log_and_missing, clearing up to " << dirty_to << dendl;
+  ldpp_dout(dpp, 10) << "_write_log_and_missing_wo_missing, clearing up to " << dirty_to
+                    << " dirty_to_dups=" << dirty_to_dups
+                    << " dirty_from_dups=" << dirty_from_dups
+                    << " write_from_dups=" << write_from_dups << dendl;
   if (touch_log)
     t.touch(coll, log_oid);
   if (dirty_to != eversion_t()) {
@@ -761,6 +788,8 @@ void PGLog::_write_log_and_missing_wo_missing(
   if (dirty_to_dups != eversion_t()) {
     pg_log_dup_t min, dirty_to_dup;
     dirty_to_dup.version = dirty_to_dups;
+    ldpp_dout(dpp, 10) << __func__ << " remove dups min=" << min.get_key_name()
+                      << " to dirty_to_dup=" << dirty_to_dup.get_key_name() << dendl;
     t.omap_rmkeyrange(
       coll, log_oid,
       min.get_key_name(), dirty_to_dup.get_key_name());
@@ -769,11 +798,16 @@ void PGLog::_write_log_and_missing_wo_missing(
     pg_log_dup_t max, dirty_from_dup;
     max.version = eversion_t::max();
     dirty_from_dup.version = dirty_from_dups;
+    ldpp_dout(dpp, 10) << __func__ << " remove dups dirty_from_dup="
+                      << dirty_from_dup.get_key_name()
+                      << " to max=" << max.get_key_name() << dendl;
     t.omap_rmkeyrange(
       coll, log_oid,
       dirty_from_dup.get_key_name(), max.get_key_name());
   }
 
+  ldpp_dout(dpp, 10) << __func__ << " going to encode log.dups.size()="
+                    << log.dups.size() << dendl;
   for (const auto& entry : log.dups) {
     if (entry.version > dirty_to_dups)
       break;
@@ -781,7 +815,8 @@ void PGLog::_write_log_and_missing_wo_missing(
     encode(entry, bl);
     (*km)[entry.get_key_name()] = std::move(bl);
   }
-
+  ldpp_dout(dpp, 10) << __func__ << " 1st round encoded log.dups.size()="
+                    << log.dups.size() << dendl;
   for (auto p = log.dups.rbegin();
        p != log.dups.rend() &&
         (p->version >= dirty_from_dups || p->version >= write_from_dups) &&
@@ -791,9 +826,12 @@ void PGLog::_write_log_and_missing_wo_missing(
     encode(*p, bl);
     (*km)[p->get_key_name()] = std::move(bl);
   }
+  ldpp_dout(dpp, 10) << __func__ << " 2st round encoded log.dups.size()="
+                    << log.dups.size() << dendl;
 
   if (dirty_divergent_priors) {
-    //dout(10) << "write_log_and_missing: writing divergent_priors" << dendl;
+    ldpp_dout(dpp, 10) << "write_log_and_missing: writing divergent_priors"
+                      << dendl;
     encode(divergent_priors, (*km)["divergent_priors"]);
   }
   if (require_rollback) {
@@ -804,6 +842,7 @@ void PGLog::_write_log_and_missing_wo_missing(
       log.get_rollback_info_trimmed_to(),
       (*km)["rollback_info_trimmed_to"]);
   }
+  ldpp_dout(dpp, 10) << "end of " << __func__ << dendl;
 }
 
 // static
@@ -825,8 +864,14 @@ void PGLog::_write_log_and_missing(
   eversion_t dirty_from_dups,
   eversion_t write_from_dups,
   bool *may_include_deletes_in_missing_dirty, // in/out param
-  set<string> *log_keys_debug
+  set<string> *log_keys_debug,
+  const DoutPrefixProvider *dpp
   ) {
+  ldpp_dout(dpp, 10) << __func__ << " clearing up to " << dirty_to
+                    << " dirty_to_dups=" << dirty_to_dups
+                    << " dirty_from_dups=" << dirty_from_dups
+                    << " write_from_dups=" << write_from_dups
+                    << " trimmed_dups.size()=" << trimmed_dups.size() << dendl;
   set<string> to_remove;
   to_remove.swap(trimmed_dups);
   for (auto& t : trimmed) {
@@ -849,7 +894,8 @@ void PGLog::_write_log_and_missing(
     clear_up_to(log_keys_debug, dirty_to.get_key_name());
   }
   if (dirty_to != eversion_t::max() && dirty_from != eversion_t::max()) {
-    //   dout(10) << "write_log_and_missing, clearing from " << dirty_from << dendl;
+    ldpp_dout(dpp, 10) << "write_log_and_missing, clearing from "
+                      << dirty_from << dendl;
     t.omap_rmkeyrange(
       coll, log_oid,
       dirty_from.get_key_name(), eversion_t::max().get_key_name());
@@ -890,6 +936,8 @@ void PGLog::_write_log_and_missing(
   if (dirty_to_dups != eversion_t()) {
     pg_log_dup_t min, dirty_to_dup;
     dirty_to_dup.version = dirty_to_dups;
+    ldpp_dout(dpp, 10) << __func__ << " remove dups min=" << min.get_key_name()
+                      << " to dirty_to_dup=" << dirty_to_dup.get_key_name() << dendl;
     t.omap_rmkeyrange(
       coll, log_oid,
       min.get_key_name(), dirty_to_dup.get_key_name());
@@ -898,11 +946,16 @@ void PGLog::_write_log_and_missing(
     pg_log_dup_t max, dirty_from_dup;
     max.version = eversion_t::max();
     dirty_from_dup.version = dirty_from_dups;
+    ldpp_dout(dpp, 10) << __func__ << " remove dups dirty_from_dup="
+                      << dirty_from_dup.get_key_name()
+                      << " to max=" << max.get_key_name() << dendl;
     t.omap_rmkeyrange(
       coll, log_oid,
       dirty_from_dup.get_key_name(), max.get_key_name());
   }
 
+  ldpp_dout(dpp, 10) << __func__ << " going to encode log.dups.size()="
+                    << log.dups.size() << dendl;
   for (const auto& entry : log.dups) {
     if (entry.version > dirty_to_dups)
       break;
@@ -910,6 +963,8 @@ void PGLog::_write_log_and_missing(
     encode(entry, bl);
     (*km)[entry.get_key_name()] = std::move(bl);
   }
+  ldpp_dout(dpp, 10) << __func__ << " 1st round encoded log.dups.size()="
+                    << log.dups.size() << dendl;
 
   for (auto p = log.dups.rbegin();
        p != log.dups.rend() &&
@@ -920,9 +975,12 @@ void PGLog::_write_log_and_missing(
     encode(*p, bl);
     (*km)[p->get_key_name()] = std::move(bl);
   }
+  ldpp_dout(dpp, 10) << __func__ << " 2st round encoded log.dups.size()="
+                    << log.dups.size() << dendl;
 
   if (clear_divergent_priors) {
-    //dout(10) << "write_log_and_missing: writing divergent_priors" << dendl;
+    ldpp_dout(dpp, 10) << "write_log_and_missing: writing divergent_priors"
+                      << dendl;
     to_remove.insert("divergent_priors");
   }
   // since we encode individual missing items instead of a whole
@@ -952,6 +1010,7 @@ void PGLog::_write_log_and_missing(
 
   if (!to_remove.empty())
     t.omap_rmkeys(coll, log_oid, to_remove);
+  ldpp_dout(dpp, 10) << "end of " << __func__ << dendl;
 }
 
 void PGLog::rebuild_missing_set_with_deletes(
index 25c88217c51cce1ddd35c7da9e58eeea2495b396..5fe78e7845c23fbfeac112b22cf80069070dc7ed 100644 (file)
@@ -1334,7 +1334,8 @@ public:
     pg_log_t &log,
     const coll_t& coll,
     const ghobject_t &log_oid, std::map<eversion_t, hobject_t> &divergent_priors,
-    bool require_rollback);
+    bool require_rollback,
+    const DoutPrefixProvider *dpp = nullptr);
 
   static void write_log_and_missing(
     ObjectStore::Transaction& t,
@@ -1344,7 +1345,8 @@ public:
     const ghobject_t &log_oid,
     const pg_missing_tracker_t &missing,
     bool require_rollback,
-    bool *rebuilt_missing_set_with_deletes);
+    bool *rebuilt_missing_set_with_deletes,
+    const DoutPrefixProvider *dpp = nullptr);
 
   static void _write_log_and_missing_wo_missing(
     ObjectStore::Transaction& t,
@@ -1361,7 +1363,8 @@ public:
     eversion_t dirty_to_dups,
     eversion_t dirty_from_dups,
     eversion_t write_from_dups,
-    std::set<std::string> *log_keys_debug
+    std::set<std::string> *log_keys_debug,
+    const DoutPrefixProvider *dpp = nullptr
     );
 
   static void _write_log_and_missing(
@@ -1382,7 +1385,8 @@ public:
     eversion_t dirty_from_dups,
     eversion_t write_from_dups,
     bool *may_include_deletes_in_missing_dirty,
-    std::set<std::string> *log_keys_debug
+    std::set<std::string> *log_keys_debug,
+    const DoutPrefixProvider *dpp = nullptr
     );
 
   void read_log_and_missing(
@@ -1395,7 +1399,7 @@ public:
     bool debug_verify_stored_missing = false
     ) {
     return read_log_and_missing(
-      store, ch, pgmeta_oid, info,
+      cct, store, ch, pgmeta_oid, info,
       log, missing, oss,
       tolerate_divergent_missing_log,
       &clear_divergent_priors,
@@ -1406,6 +1410,7 @@ public:
 
   template <typename missing_type>
   static void read_log_and_missing(
+    CephContext *cct,
     ObjectStore *store,
     ObjectStore::CollectionHandle &ch,
     ghobject_t pgmeta_oid,
@@ -1419,8 +1424,9 @@ public:
     std::set<std::string> *log_keys_debug = nullptr,
     bool debug_verify_stored_missing = false
     ) {
-    ldpp_dout(dpp, 20) << "read_log_and_missing coll " << ch->cid
+    ldpp_dout(dpp, 10) << "read_log_and_missing coll " << ch->cid
                       << " " << pgmeta_oid << dendl;
+    size_t total_dups = 0;
 
     // legacy?
     struct stat st;
@@ -1438,6 +1444,7 @@ public:
     missing.may_include_deletes = false;
     std::list<pg_log_entry_t> entries;
     std::list<pg_log_dup_t> dups;
+    const auto NUM_DUPS_WARN_THRESHOLD = 2*cct->_conf->osd_pg_log_dups_tracked;
     if (p) {
       using ceph::decode;
       for (p->seek_to_first(); p->valid() ; p->next()) {
@@ -1469,11 +1476,20 @@ public:
          }
          missing.add(oid, std::move(item));
        } else if (p->key().substr(0, 4) == std::string("dup_")) {
+         ++total_dups;
          pg_log_dup_t dup;
          decode(dup, bp);
          if (!dups.empty()) {
            ceph_assert(dups.back().version < dup.version);
          }
+         if (dups.size() == NUM_DUPS_WARN_THRESHOLD) {
+           ldpp_dout(dpp, 0) << "read_log_and_missing WARN num of dups exceeded "
+                             << NUM_DUPS_WARN_THRESHOLD << "."
+                             << " You can be hit by THE DUPS BUG"
+                             << " https://tracker.ceph.com/issues/53729."
+                             << " Consider ceph-objectstore-tool --op trim-pg-log-dups"
+                             << dendl;
+         }
          dups.push_back(dup);
        } else {
          pg_log_entry_t e;
@@ -1653,7 +1669,9 @@ public:
        (*clear_divergent_priors) = false;
       missing.flush();
     }
-    ldpp_dout(dpp, 10) << "read_log_and_missing done" << dendl;
+    ldpp_dout(dpp, 10) << "read_log_and_missing done coll " << ch->cid
+                      << " total_dups=" << total_dups
+                      << " log.dups.size()=" << log.dups.size() << dendl;
   } // static read_log_and_missing
 
 #ifdef WITH_SEASTAR
index 68b8d22259955dfb82455429b25b3ed8abd8fbc3..19abf2021e3f39e8d76354736adcb23f6d4fb19f 100644 (file)
@@ -1213,14 +1213,14 @@ void PeeringState::proc_lease_ack(int from, const pg_lease_ack_t& a)
          was_min = true;
        }
        acting_readable_until_ub[i] = a.readable_until_ub;
-       break;
       }
+      break;
     }
   }
   if (was_min) {
     auto old_ru = readable_until;
     recalc_readable_until();
-    if (now < old_ru) {
+    if (now >= old_ru) {
       pl->recheck_readable();
     }
   }
index f7b15a5f8e1fdacc9a02c6447724030fa1da3642..c86f40bb392df19e066b8e78967eb08c3a6261d7 100644 (file)
@@ -7114,7 +7114,11 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          goto fail;
        }
        pg_t raw_pg;
-       get_osdmap()->object_locator_to_pg(target_name, target_oloc, raw_pg);
+       result = get_osdmap()->object_locator_to_pg(target_name, target_oloc, raw_pg);
+       if (result < 0) {
+         dout(5) << " pool information is invalid: " << result << dendl;
+         break;
+       }
        hobject_t target(target_name, target_oloc.key, target_snapid,
                raw_pg.ps(), raw_pg.pool(),
                target_oloc.nspace);
@@ -7263,7 +7267,11 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
 
        pg_t raw_pg;
        chunk_info_t chunk_info;
-       get_osdmap()->object_locator_to_pg(tgt_name, tgt_oloc, raw_pg);
+       result = get_osdmap()->object_locator_to_pg(tgt_name, tgt_oloc, raw_pg);
+       if (result < 0) {
+         dout(5) << " pool information is invalid: " << result << dendl;
+         break;
+       }
        hobject_t target(tgt_name, tgt_oloc.key, snapid_t(),
                         raw_pg.ps(), raw_pg.pool(),
                         tgt_oloc.nspace);
@@ -10589,7 +10597,10 @@ int PrimaryLogPG::do_cdc(const object_info_t& oi,
   for (auto p : cdc_chunks) {
     bufferlist chunk;
     chunk.substr_of(bl, p.first, p.second);
-    hobject_t target = get_fpoid_from_chunk(oi.soid, chunk);
+    auto [ret, target] = get_fpoid_from_chunk(oi.soid, chunk);
+    if (ret < 0) {
+      return ret;
+    }
     chunks[p.first] = std::move(chunk);
     chunk_map[p.first] = chunk_info_t(0, p.second, target);
     total_length += p.second;
@@ -10597,11 +10608,12 @@ int PrimaryLogPG::do_cdc(const object_info_t& oi,
   return total_length;
 }
 
-hobject_t PrimaryLogPG::get_fpoid_from_chunk(const hobject_t soid, bufferlist& chunk)
+std::pair<int, hobject_t> PrimaryLogPG::get_fpoid_from_chunk(
+  const hobject_t soid, bufferlist& chunk)
 {
   pg_pool_t::fingerprint_t fp_algo = pool.info.get_fingerprint_type();
   if (fp_algo == pg_pool_t::TYPE_FINGERPRINT_NONE) {
-    return hobject_t();
+    return make_pair(-EINVAL, hobject_t());
   }
   object_t fp_oid = [&fp_algo, &chunk]() -> string {
     switch (fp_algo) {
@@ -10622,11 +10634,14 @@ hobject_t PrimaryLogPG::get_fpoid_from_chunk(const hobject_t soid, bufferlist& c
   oloc.pool = pool.info.get_dedup_tier();
   // check if dedup_tier isn't set
   ceph_assert(oloc.pool > 0);
-  get_osdmap()->object_locator_to_pg(fp_oid, oloc, raw_pg);
+  int ret = get_osdmap()->object_locator_to_pg(fp_oid, oloc, raw_pg);
+  if (ret < 0) {
+    return make_pair(ret, hobject_t());
+  }
   hobject_t target(fp_oid, oloc.key, snapid_t(),
                    raw_pg.ps(), raw_pg.pool(),
                    oloc.nspace);
-  return target;
+  return make_pair(0, target);
 }
 
 int PrimaryLogPG::finish_set_dedup(hobject_t oid, int r, ceph_tid_t tid, uint64_t offset)
index b92c46bf4a9265d11af87de36426a5d84fa1b1ab..4a54e6ebe2cd7de884dedb1a6842675b692df270 100644 (file)
@@ -1458,7 +1458,7 @@ protected:
   int do_cdc(const object_info_t& oi, std::map<uint64_t, chunk_info_t>& chunk_map,
             std::map<uint64_t, bufferlist>& chunks);
   int start_dedup(OpRequestRef op, ObjectContextRef obc);
-  hobject_t get_fpoid_from_chunk(const hobject_t soid, bufferlist& chunk);
+  std::pair<int, hobject_t> get_fpoid_from_chunk(const hobject_t soid, bufferlist& chunk);
   int finish_set_dedup(hobject_t oid, int r, ceph_tid_t tid, uint64_t offset);
   int finish_set_manifest_refcount(hobject_t oid, int r, ceph_tid_t tid, uint64_t offset);
 
index 07c6f57c78ae4ac0efbdc01a4f947b520a3feb71..804213b1f264461d6830a7f0ed2681868dc3a579 100644 (file)
@@ -660,6 +660,38 @@ bool SnapMapper::is_legacy_mapping(const string &to_test)
     LEGACY_MAPPING_PREFIX;
 }
 
+/* Octopus modified the SnapMapper key format from
+ *
+ *  <LEGACY_MAPPING_PREFIX><snapid>_<shardid>_<hobject_t::to_str()>
+ *
+ * to
+ *
+ *  <MAPPING_PREFIX><pool>_<snapid>_<shardid>_<hobject_t::to_str()>
+ *
+ * We can't reconstruct the new key format just from the value since the
+ * Mapping object contains an hobject rather than a ghobject. Instead,
+ * we exploit the fact that the new format is identical starting at <snapid>.
+ *
+ * Note that the original version of this conversion introduced in 94ebe0ea
+ * had a crucial bug which essentially destroyed legacy keys by mapping
+ * them to
+ *
+ *  <MAPPING_PREFIX><poolid>_<snapid>_
+ *
+ * without the object-unique suffix.
+ * See https://tracker.ceph.com/issues/56147
+ */
+std::string SnapMapper::convert_legacy_key(
+  const std::string& old_key,
+  const bufferlist& value)
+{
+  auto old = from_raw(make_pair(old_key, value));
+  std::string object_suffix = old_key.substr(
+    SnapMapper::LEGACY_MAPPING_PREFIX.length());
+  return SnapMapper::MAPPING_PREFIX + std::to_string(old.second.pool)
+    + "_" + object_suffix;
+}
+
 int SnapMapper::convert_legacy(
   CephContext *cct,
   ObjectStore *store,
@@ -681,13 +713,9 @@ int SnapMapper::convert_legacy(
   while (iter->valid()) {
     bool valid = SnapMapper::is_legacy_mapping(iter->key());
     if (valid) {
-      SnapMapper::Mapping m;
-      bufferlist bl(iter->value());
-      auto bp = bl.cbegin();
-      decode(m, bp);
       to_set.emplace(
-       SnapMapper::get_prefix(m.hoid.pool, m.snap),
-       bl);
+       convert_legacy_key(iter->key(), iter->value()),
+       iter->value());
       ++n;
       iter->next();
     }
index f8c2aff1b20f420826ac6b0e0593fd06f6444bfb..90b0c7c8d82e1b4c5141b8918e275f1ffa4a2e28 100644 (file)
@@ -100,6 +100,7 @@ public:
  * particular snap will group under up to 8 prefixes.
  */
 class SnapMapper {
+  friend class MapperVerifier;
 public:
   CephContext* cct;
   struct object_snaps {
@@ -174,6 +175,10 @@ public:
     void run();
   };
 
+  static std::string convert_legacy_key(
+    const std::string& old_key,
+    const bufferlist& value);
+
   static int convert_legacy(
     CephContext *cct,
     ObjectStore *store,
index e794d78a2a909f21163c5b792cad0a640d80b17d..3a92591409f4217497d5c3f6a28dd11a50b2aedd 100644 (file)
@@ -5219,7 +5219,8 @@ static void _handle_dups(CephContext* cct, pg_log_t &target, const pg_log_t &oth
 {
   auto earliest_dup_version =
                target.head.version < maxdups ? 0u : target.head.version - maxdups + 1;
-  lgeneric_subdout(cct, osd, 20) << "copy_up_to/copy_after earliest_dup_version " << earliest_dup_version << dendl;
+  lgeneric_subdout(cct, osd, 20) << __func__ << " earliest_dup_version "
+                                << earliest_dup_version << dendl;
 
   for (auto d = other.dups.cbegin(); d != other.dups.cend(); ++d) {
     if (d->version.version >= earliest_dup_version) {
@@ -5249,7 +5250,9 @@ void pg_log_t::copy_after(CephContext* cct, const pg_log_t &other, eversion_t v)
   can_rollback_to = other.can_rollback_to;
   head = other.head;
   tail = other.tail;
-  lgeneric_subdout(cct, osd, 20) << __func__ << " v " << v << dendl;
+  lgeneric_subdout(cct, osd, 20) << __func__ << " v " << v
+                                << " dups.size()=" << dups.size()
+                                << " other.dups.size()=" << other.dups.size() << dendl;
   for (auto i = other.log.crbegin(); i != other.log.crend(); ++i) {
     ceph_assert(i->version > other.tail);
     if (i->version <= v) {
@@ -5261,6 +5264,9 @@ void pg_log_t::copy_after(CephContext* cct, const pg_log_t &other, eversion_t v)
     log.push_front(*i);
   }
   _handle_dups(cct, *this, other, cct->_conf->osd_pg_log_dups_tracked);
+  lgeneric_subdout(cct, osd, 20) << __func__ << " END v " << v
+                                << " dups.size()=" << dups.size()
+                                << " other.dups.size()=" << other.dups.size() << dendl;
 }
 
 void pg_log_t::copy_up_to(CephContext* cct, const pg_log_t &other, int max)
@@ -5269,7 +5275,9 @@ void pg_log_t::copy_up_to(CephContext* cct, const pg_log_t &other, int max)
   int n = 0;
   head = other.head;
   tail = other.tail;
-  lgeneric_subdout(cct, osd, 20) << __func__ << " max " << max << dendl;
+  lgeneric_subdout(cct, osd, 20) << __func__ << " max " << max
+                               << " dups.size()=" << dups.size()
+                               << " other.dups.size()=" << other.dups.size() << dendl;
   for (auto i = other.log.crbegin(); i != other.log.crend(); ++i) {
     ceph_assert(i->version > other.tail);
     if (n++ >= max) {
@@ -5280,6 +5288,9 @@ void pg_log_t::copy_up_to(CephContext* cct, const pg_log_t &other, int max)
     log.push_front(*i);
   }
   _handle_dups(cct, *this, other, cct->_conf->osd_pg_log_dups_tracked);
+  lgeneric_subdout(cct, osd, 20) << __func__ << " END max " << max
+                                << " dups.size()=" << dups.size()
+                                << " other.dups.size()=" << other.dups.size() << dendl;
 }
 
 ostream& pg_log_t::print(ostream& out) const
index deac85c5a570c5395d3b27887d9f6f37d2d53b97..23c0e8a3b81afff95c5058fb94d9e1f09394e010 100644 (file)
@@ -104,3 +104,14 @@ struct fmt::formatter<object_info_t> {
     return fmt::format_to(ctx.out(), ")");
   }
 };
+
+template <>
+struct fmt::formatter<pg_t> {
+  constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); }
+
+  template <typename FormatContext>
+  auto format(const pg_t& pg, FormatContext& ctx)
+  {
+    return fmt::format_to(ctx.out(), "{}.{:x}", pg.pool(), pg.m_seed);
+  }
+};
index 8487127138287a3f28bca8534516f05830ffb032..0f2abf87b68cf99b372156f0fbaa46a750359dc8 100644 (file)
@@ -345,33 +345,33 @@ void mClockScheduler::set_profile_config()
     static_cast<size_t>(op_scheduler_class::background_best_effort)];
 
   // Set external client params
-  cct->_conf.set_val("osd_mclock_scheduler_client_res",
+  cct->_conf.set_val_default("osd_mclock_scheduler_client_res",
     std::to_string(client.res));
-  cct->_conf.set_val("osd_mclock_scheduler_client_wgt",
+  cct->_conf.set_val_default("osd_mclock_scheduler_client_wgt",
     std::to_string(client.wgt));
-  cct->_conf.set_val("osd_mclock_scheduler_client_lim",
+  cct->_conf.set_val_default("osd_mclock_scheduler_client_lim",
     std::to_string(client.lim));
   dout(10) << __func__ << " client QoS params: " << "["
            << client.res << "," << client.wgt << "," << client.lim
            << "]" << dendl;
 
   // Set background recovery client params
-  cct->_conf.set_val("osd_mclock_scheduler_background_recovery_res",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_recovery_res",
     std::to_string(rec.res));
-  cct->_conf.set_val("osd_mclock_scheduler_background_recovery_wgt",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_recovery_wgt",
     std::to_string(rec.wgt));
-  cct->_conf.set_val("osd_mclock_scheduler_background_recovery_lim",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_recovery_lim",
     std::to_string(rec.lim));
   dout(10) << __func__ << " Recovery QoS params: " << "["
            << rec.res << "," << rec.wgt << "," << rec.lim
            << "]" << dendl;
 
   // Set background best effort client params
-  cct->_conf.set_val("osd_mclock_scheduler_background_best_effort_res",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_best_effort_res",
     std::to_string(best_effort.res));
-  cct->_conf.set_val("osd_mclock_scheduler_background_best_effort_wgt",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_best_effort_wgt",
     std::to_string(best_effort.wgt));
-  cct->_conf.set_val("osd_mclock_scheduler_background_best_effort_lim",
+  cct->_conf.set_val_default("osd_mclock_scheduler_background_best_effort_lim",
     std::to_string(best_effort.lim));
   dout(10) << __func__ << " Best effort QoS params: " << "["
     << best_effort.res << "," << best_effort.wgt << "," << best_effort.lim
index 25e4a83d9e8b4974f0315bcfbdd9a38bf7f6a838..220d2933cd00b601d8bb8633cabc27a63cd0ea17 100644 (file)
@@ -127,7 +127,7 @@ bool PgScrubber::verify_against_abort(epoch_t epoch_to_verify)
           << " vs last-aborted: " << m_last_aborted << dendl;
 
   // if we were not aware of the abort before - kill the scrub.
-  if (epoch_to_verify > m_last_aborted) {
+  if (epoch_to_verify >= m_last_aborted) {
     scrub_clear_state();
     m_last_aborted = std::max(epoch_to_verify, m_epoch_start);
   }
@@ -146,9 +146,7 @@ bool PgScrubber::should_abort() const
       dout(10) << "nodeep_scrub set, aborting" << dendl;
       return true;
     }
-  }
-
-  if (get_osdmap()->test_flag(CEPH_OSDMAP_NOSCRUB) ||
+  } else if (get_osdmap()->test_flag(CEPH_OSDMAP_NOSCRUB) ||
       m_pg->pool.info.has_flag(pg_pool_t::FLAG_NOSCRUB)) {
     dout(10) << "noscrub set, aborting" << dendl;
     return true;
@@ -1619,8 +1617,8 @@ void PgScrubber::handle_scrub_reserve_grant(OpRequestRef op, pg_shard_t from)
   if (m_reservations.has_value()) {
     m_reservations->handle_reserve_grant(op, from);
   } else {
-    derr << __func__ << ": received unsolicited reservation grant from osd " << from
-        << " (" << op << ")" << dendl;
+    dout(20) << __func__ << ": late/unsolicited reservation grant from osd "
+        << from << " (" << op << ")" << dendl;
   }
 }
 
@@ -2130,6 +2128,10 @@ PgScrubber::PgScrubber(PG* pg)
 void PgScrubber::set_scrub_begin_time()
 {
   scrub_begin_stamp = ceph_clock_now();
+  m_osds->clog->debug() << fmt::format(
+    "{} {} starts",
+    m_pg->info.pgid.pgid,
+    m_mode_desc);
 }
 
 void PgScrubber::set_scrub_duration()
index 96125ba2e43698c0dc13a7d22bc5c0071040a317..71a6a3f044af5733ec8be2c3baedde7f70f85de4 100644 (file)
@@ -22,8 +22,11 @@ import os
 import time
 from typing import Any, Dict, Optional
 
-AT_NO_ATTR_SYNC = 0x4000
-AT_SYMLINK_NOFOLLOW = 0x100
+AT_SYMLINK_NOFOLLOW = 0x0100
+AT_STATX_SYNC_TYPE  = 0x6000
+AT_STATX_SYNC_AS_STAT = 0x0000
+AT_STATX_FORCE_SYNC = 0x2000
+AT_STATX_DONT_SYNC = 0x4000
 cdef int AT_SYMLINK_NOFOLLOW_CDEF = AT_SYMLINK_NOFOLLOW
 CEPH_STATX_BASIC_STATS = 0x7ff
 cdef int CEPH_STATX_BASIC_STATS_CDEF = CEPH_STATX_BASIC_STATS
@@ -177,7 +180,8 @@ class NotDirectory(OSError):
 
 class DiskQuotaExceeded(OSError):
     pass
-
+class PermissionDenied(OSError):
+    pass
 
 cdef errno_to_exception =  {
     CEPHFS_EPERM      : PermissionError,
@@ -193,6 +197,7 @@ cdef errno_to_exception =  {
     CEPHFS_ENOTEMPTY  : ObjectNotEmpty,
     CEPHFS_ENOTDIR    : NotDirectory,
     CEPHFS_EDQUOT     : DiskQuotaExceeded,
+    CEPHFS_EACCES     : PermissionDenied,
 }
 
 
@@ -938,7 +943,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_opendir(self.cluster, _path, &handle);
         if ret < 0:
-            raise make_ex(ret, "opendir failed")
+            raise make_ex(ret, "opendir failed at {}".format(path.decode('utf-8')))
         d = DirResult()
         d.lib = self
         d.handle = handle
@@ -1941,7 +1946,7 @@ cdef class LibCephFS(object):
 
         :param path: the file or directory to get the statistics of.
         :param mask: want bitfield of CEPH_STATX_* flags showing designed attributes.
-        :param flag: bitfield that can be used to set AT_* modifier flags (only AT_NO_ATTR_SYNC and AT_SYMLINK_NOFOLLOW)
+        :param flag: bitfield that can be used to set AT_* modifier flags (AT_STATX_SYNC_AS_STAT, AT_STATX_FORCE_SYNC, AT_STATX_DONT_SYNC and AT_SYMLINK_NOFOLLOW)
         """
 
         self.require_state("mounted")
index dbdedd477780c5a607c06ae2ab2a0c73fe68d368..04385a4fa81cc8e31b420133fcc487bb7b27ecbe 100644 (file)
@@ -1,15 +1,17 @@
 import datetime
+import enum
 from copy import copy
 import ipaddress
 import json
 import logging
+import math
 import socket
 from typing import TYPE_CHECKING, Dict, List, Iterator, Optional, Any, Tuple, Set, Mapping, cast, \
     NamedTuple, Type
 
 import orchestrator
 from ceph.deployment import inventory
-from ceph.deployment.service_spec import ServiceSpec, PlacementSpec
+from ceph.deployment.service_spec import ServiceSpec, PlacementSpec, TunedProfileSpec
 from ceph.utils import str_to_datetime, datetime_to_str, datetime_now
 from orchestrator import OrchestratorError, HostSpec, OrchestratorEvent, service_to_daemon_types
 from cephadm.services.cephadmservice import CephadmDaemonDeploySpec
@@ -28,6 +30,12 @@ SPEC_STORE_PREFIX = "spec."
 AGENT_CACHE_PREFIX = 'agent.'
 
 
+class HostCacheStatus(enum.Enum):
+    stray = 'stray'
+    host = 'host'
+    devices = 'devices'
+
+
 class Inventory:
     """
     The inventory stores a HostSpec for all hosts persistently.
@@ -397,6 +405,80 @@ class ClientKeyringStore():
             self.save()
 
 
+class TunedProfileStore():
+    """
+    Store for out tuned profile information
+    """
+
+    def __init__(self, mgr: "CephadmOrchestrator") -> None:
+        self.mgr: CephadmOrchestrator = mgr
+        self.mgr = mgr
+        self.profiles: Dict[str, TunedProfileSpec] = {}
+
+    def __contains__(self, profile: str) -> bool:
+        return profile in self.profiles
+
+    def load(self) -> None:
+        c = self.mgr.get_store('tuned_profiles') or b'{}'
+        j = json.loads(c)
+        for k, v in j.items():
+            self.profiles[k] = TunedProfileSpec.from_json(v)
+            self.profiles[k]._last_updated = datetime_to_str(datetime_now())
+
+    def exists(self, profile_name: str) -> bool:
+        return profile_name in self.profiles
+
+    def save(self) -> None:
+        profiles_json = {k: v.to_json() for k, v in self.profiles.items()}
+        self.mgr.set_store('tuned_profiles', json.dumps(profiles_json))
+
+    def add_setting(self, profile: str, setting: str, value: str) -> None:
+        if profile in self.profiles:
+            self.profiles[profile].settings[setting] = value
+            self.profiles[profile]._last_updated = datetime_to_str(datetime_now())
+            self.save()
+        else:
+            logger.error(
+                f'Attempted to set setting "{setting}" for nonexistent os tuning profile "{profile}"')
+
+    def rm_setting(self, profile: str, setting: str) -> None:
+        if profile in self.profiles:
+            if setting in self.profiles[profile].settings:
+                self.profiles[profile].settings.pop(setting, '')
+                self.profiles[profile]._last_updated = datetime_to_str(datetime_now())
+                self.save()
+            else:
+                logger.error(
+                    f'Attemped to remove nonexistent setting "{setting}" from os tuning profile "{profile}"')
+        else:
+            logger.error(
+                f'Attempted to remove setting "{setting}" from nonexistent os tuning profile "{profile}"')
+
+    def add_profile(self, spec: TunedProfileSpec) -> None:
+        spec._last_updated = datetime_to_str(datetime_now())
+        self.profiles[spec.profile_name] = spec
+        self.save()
+
+    def rm_profile(self, profile: str) -> None:
+        if profile in self.profiles:
+            self.profiles.pop(profile, TunedProfileSpec(''))
+        else:
+            logger.error(f'Attempted to remove nonexistent os tuning profile "{profile}"')
+        self.save()
+
+    def last_updated(self, profile: str) -> Optional[datetime.datetime]:
+        if profile not in self.profiles or not self.profiles[profile]._last_updated:
+            return None
+        return str_to_datetime(self.profiles[profile]._last_updated)
+
+    def set_last_updated(self, profile: str, new_datetime: datetime.datetime) -> None:
+        if profile in self.profiles:
+            self.profiles[profile]._last_updated = datetime_to_str(new_datetime)
+
+    def list_profiles(self) -> List[TunedProfileSpec]:
+        return [p for p in self.profiles.values()]
+
+
 class HostCache():
     """
     HostCache stores different things:
@@ -443,6 +525,7 @@ class HostCache():
         self.last_network_update = {}   # type: Dict[str, datetime.datetime]
         self.last_device_update = {}   # type: Dict[str, datetime.datetime]
         self.last_device_change = {}   # type: Dict[str, datetime.datetime]
+        self.last_tuned_profile_update = {}  # type: Dict[str, datetime.datetime]
         self.daemon_refresh_queue = []  # type: List[str]
         self.device_refresh_queue = []  # type: List[str]
         self.network_refresh_queue = []  # type: List[str]
@@ -463,7 +546,9 @@ class HostCache():
         # type: () -> None
         for k, v in self.mgr.get_store_prefix(HOST_CACHE_PREFIX).items():
             host = k[len(HOST_CACHE_PREFIX):]
-            if host not in self.mgr.inventory:
+            if self._get_host_cache_entry_status(host) != HostCacheStatus.host:
+                if self._get_host_cache_entry_status(host) == HostCacheStatus.devices:
+                    continue
                 self.mgr.log.warning('removing stray HostCache host record %s' % (
                     host))
                 self.mgr.set_store(k, None)
@@ -482,14 +567,16 @@ class HostCache():
                 self.daemons[host] = {}
                 self.osdspec_previews[host] = []
                 self.osdspec_last_applied[host] = {}
-                self.devices[host] = []
                 self.networks[host] = {}
                 self.daemon_config_deps[host] = {}
                 for name, d in j.get('daemons', {}).items():
                     self.daemons[host][name] = \
                         orchestrator.DaemonDescription.from_json(d)
+                self.devices[host] = []
+                # still want to check old device location for upgrade scenarios
                 for d in j.get('devices', []):
                     self.devices[host].append(inventory.Device.from_json(d))
+                self.devices[host] += self.load_host_devices(host)
                 self.networks[host] = j.get('networks_and_interfaces', {})
                 self.osdspec_previews[host] = j.get('osdspec_previews', {})
                 self.last_client_files[host] = j.get('last_client_files', {})
@@ -503,6 +590,9 @@ class HostCache():
                     }
                 if 'last_host_check' in j:
                     self.last_host_check[host] = str_to_datetime(j['last_host_check'])
+                if 'last_tuned_profile_update' in j:
+                    self.last_tuned_profile_update[host] = str_to_datetime(
+                        j['last_tuned_profile_update'])
                 self.registry_login_queue.add(host)
                 self.scheduled_daemon_actions[host] = j.get('scheduled_daemon_actions', {})
                 self.metadata_up_to_date[host] = j.get('metadata_up_to_date', False)
@@ -517,6 +607,23 @@ class HostCache():
                     host, e))
                 pass
 
+    def _get_host_cache_entry_status(self, host: str) -> HostCacheStatus:
+        # return whether a host cache entry in the config-key
+        # store is for a host, a set of devices or is stray.
+        # for a host, the entry name will match a hostname in our
+        # inventory. For devices, it will be formatted
+        # <hostname>.devices.<integer> where <hostname> is
+        # in out inventory. If neither case applies, it is stray
+        if host in self.mgr.inventory:
+            return HostCacheStatus.host
+        try:
+            # try stripping off the ".devices.<integer>" and see if we get
+            # a host name that matches our inventory
+            actual_host = '.'.join(host.split('.')[:-2])
+            return HostCacheStatus.devices if actual_host in self.mgr.inventory else HostCacheStatus.stray
+        except Exception:
+            return HostCacheStatus.stray
+
     def update_host_daemons(self, host, dm):
         # type: (str, Dict[str, orchestrator.DaemonDescription]) -> None
         self.daemons[host] = dm
@@ -668,12 +775,11 @@ class HostCache():
             j['last_network_update'] = datetime_to_str(self.last_network_update[host])
         if host in self.last_device_change:
             j['last_device_change'] = datetime_to_str(self.last_device_change[host])
+        if host in self.last_tuned_profile_update:
+            j['last_tuned_profile_update'] = datetime_to_str(self.last_tuned_profile_update[host])
         if host in self.daemons:
             for name, dd in self.daemons[host].items():
                 j['daemons'][name] = dd.to_json()
-        if host in self.devices:
-            for d in self.devices[host]:
-                j['devices'].append(d.to_json())
         if host in self.networks:
             j['networks_and_interfaces'] = self.networks[host]
         if host in self.daemon_config_deps:
@@ -697,9 +803,71 @@ class HostCache():
             j['scheduled_daemon_actions'] = self.scheduled_daemon_actions[host]
         if host in self.metadata_up_to_date:
             j['metadata_up_to_date'] = self.metadata_up_to_date[host]
+        if host in self.devices:
+            self.save_host_devices(host)
 
         self.mgr.set_store(HOST_CACHE_PREFIX + host, json.dumps(j))
 
+    def save_host_devices(self, host: str) -> None:
+        if host not in self.devices or not self.devices[host]:
+            logger.debug(f'Host {host} has no devices to save')
+            return
+
+        devs: List[Dict[str, Any]] = []
+        for d in self.devices[host]:
+            devs.append(d.to_json())
+
+        def byte_len(s: str) -> int:
+            return len(s.encode('utf-8'))
+
+        dev_cache_counter: int = 0
+        cache_size: int = self.mgr.get_foreign_ceph_option('mon', 'mon_config_key_max_entry_size')
+        if cache_size is not None and cache_size != 0 and byte_len(json.dumps(devs)) > cache_size - 1024:
+            # no guarantee all device entries take up the same amount of space
+            # splitting it up so there's one more entry than we need should be fairly
+            # safe and save a lot of extra logic checking sizes
+            cache_entries_needed = math.ceil(byte_len(json.dumps(devs)) / cache_size) + 1
+            dev_sublist_size = math.ceil(len(devs) / cache_entries_needed)
+            dev_lists: List[List[Dict[str, Any]]] = [devs[i:i + dev_sublist_size]
+                                                     for i in range(0, len(devs), dev_sublist_size)]
+            for dev_list in dev_lists:
+                dev_dict: Dict[str, Any] = {'devices': dev_list}
+                if dev_cache_counter == 0:
+                    dev_dict.update({'entries': len(dev_lists)})
+                self.mgr.set_store(HOST_CACHE_PREFIX + host + '.devices.'
+                                   + str(dev_cache_counter), json.dumps(dev_dict))
+                dev_cache_counter += 1
+        else:
+            self.mgr.set_store(HOST_CACHE_PREFIX + host + '.devices.'
+                               + str(dev_cache_counter), json.dumps({'devices': devs, 'entries': 1}))
+
+    def load_host_devices(self, host: str) -> List[inventory.Device]:
+        dev_cache_counter: int = 0
+        devs: List[Dict[str, Any]] = []
+        dev_entries: int = 0
+        try:
+            # number of entries for the host's devices should be in
+            # the "entries" field of the first entry
+            dev_entries = json.loads(self.mgr.get_store(
+                HOST_CACHE_PREFIX + host + '.devices.0')).get('entries')
+        except Exception:
+            logger.debug(f'No device entries found for host {host}')
+        for i in range(dev_entries):
+            try:
+                new_devs = json.loads(self.mgr.get_store(
+                    HOST_CACHE_PREFIX + host + '.devices.' + str(i))).get('devices', [])
+                if len(new_devs) > 0:
+                    # verify list contains actual device objects by trying to load one from json
+                    inventory.Device.from_json(new_devs[0])
+                    # if we didn't throw an Exception on above line, we can add the devices
+                    devs = devs + new_devs
+                    dev_cache_counter += 1
+            except Exception as e:
+                logger.error(('Hit exception trying to load devices from '
+                             + f'{HOST_CACHE_PREFIX + host + ".devices." + str(dev_cache_counter)} in key store: {e}'))
+                return []
+        return [inventory.Device.from_json(d) for d in devs]
+
     def rm_host(self, host):
         # type: (str) -> None
         if host in self.daemons:
@@ -728,6 +896,8 @@ class HostCache():
             del self.last_network_update[host]
         if host in self.last_device_change:
             del self.last_device_change[host]
+        if host in self.last_tuned_profile_update:
+            del self.last_tuned_profile_update[host]
         if host in self.daemon_config_deps:
             del self.daemon_config_deps[host]
         if host in self.scheduled_daemon_actions:
@@ -769,6 +939,15 @@ class HostCache():
             h for h in self.mgr.inventory.all_specs() if '_no_schedule' not in h.labels
         ]
 
+    def get_draining_hosts(self) -> List[HostSpec]:
+        """
+        Returns all hosts that have _no_schedule label and therefore should have
+        no daemons placed on them, but are potentially still reachable
+        """
+        return [
+            h for h in self.mgr.inventory.all_specs() if '_no_schedule' in h.labels
+        ]
+
     def get_unreachable_hosts(self) -> List[HostSpec]:
         """
         Return all hosts that are offline or in maintenance mode.
@@ -911,6 +1090,24 @@ class HostCache():
             return True
         return False
 
+    def host_needs_tuned_profile_update(self, host: str, profile: str) -> bool:
+        if host in self.mgr.offline_hosts:
+            logger.debug(f'Host "{host}" marked as offline. Cannot apply tuned profile')
+            return False
+        if profile not in self.mgr.tuned_profiles:
+            logger.debug(
+                f'Cannot apply tuned profile {profile} on host {host}. Profile does not exist')
+            return False
+        if host not in self.last_tuned_profile_update:
+            return True
+        last_profile_update = self.mgr.tuned_profiles.last_updated(profile)
+        if last_profile_update is None:
+            self.mgr.tuned_profiles.set_last_updated(profile, datetime_now())
+            return True
+        if self.last_tuned_profile_update[host] < last_profile_update:
+            return True
+        return False
+
     def host_had_daemon_refresh(self, host: str) -> bool:
         """
         ... at least once.
index 672a895bc14c8009239e7f69b4c3fa8cd425dcb2..69f39cb9107703eb286b7ce0ee7085ace3bde420 100644 (file)
@@ -112,6 +112,7 @@ class Migrations:
                 spec=spec,
                 hosts=self.mgr.inventory.all_specs(),
                 unreachable_hosts=self.mgr.cache.get_unreachable_hosts(),
+                draining_hosts=self.mgr.cache.get_draining_hosts(),
                 daemons=existing_daemons,
             ).place()
 
index 766ea77266dc29caceace41a0db71fda291694ed..b2a48801cc2d779a1faf603718b53de5fed78169 100644 (file)
@@ -25,7 +25,8 @@ from ceph.deployment import inventory
 from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.service_spec import \
     ServiceSpec, PlacementSpec, \
-    HostPlacementSpec, IngressSpec
+    HostPlacementSpec, IngressSpec, \
+    TunedProfileSpec
 from ceph.utils import str_to_datetime, datetime_to_str, datetime_now
 from cephadm.serve import CephadmServe
 from cephadm.services.cephadmservice import CephadmDaemonDeploySpec
@@ -56,13 +57,14 @@ from .services.monitoring import GrafanaService, AlertmanagerService, Prometheus
     NodeExporterService, SNMPGatewayService, LokiService, PromtailService
 from .schedule import HostAssignment
 from .inventory import Inventory, SpecStore, HostCache, AgentCache, EventStore, \
-    ClientKeyringStore, ClientKeyringSpec
+    ClientKeyringStore, ClientKeyringSpec, TunedProfileStore
 from .upgrade import CephadmUpgrade
 from .template import TemplateMgr
 from .utils import CEPH_IMAGE_TYPES, RESCHEDULE_FROM_OFFLINE_HOSTS_TYPES, forall_hosts, \
     cephadmNoImage, CEPH_UPGRADE_ORDER
 from .configchecks import CephadmConfigChecks
 from .offline_watcher import OfflineHostWatcher
+from .tuned_profiles import TunedProfileUtils
 
 try:
     import asyncssh
@@ -100,8 +102,8 @@ DEFAULT_LOKI_IMAGE = 'docker.io/grafana/loki:2.4.0'
 DEFAULT_PROMTAIL_IMAGE = 'docker.io/grafana/promtail:2.4.0'
 DEFAULT_ALERT_MANAGER_IMAGE = 'quay.io/prometheus/alertmanager:v0.23.0'
 DEFAULT_GRAFANA_IMAGE = 'quay.io/ceph/ceph-grafana:8.3.5'
-DEFAULT_HAPROXY_IMAGE = 'docker.io/library/haproxy:2.3'
-DEFAULT_KEEPALIVED_IMAGE = 'docker.io/arcts/keepalived'
+DEFAULT_HAPROXY_IMAGE = 'quay.io/ceph/haproxy:2.3'
+DEFAULT_KEEPALIVED_IMAGE = 'quay.io/ceph/keepalived:2.1.5'
 DEFAULT_SNMP_GATEWAY_IMAGE = 'docker.io/maxwo/snmp-notifier:v1.2.1'
 # ------------------------------------------------------------------------------
 
@@ -505,6 +507,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule,
         self.keys = ClientKeyringStore(self)
         self.keys.load()
 
+        self.tuned_profiles = TunedProfileStore(self)
+        self.tuned_profiles.load()
+
+        self.tuned_profile_utils = TunedProfileUtils(self)
+
         # ensure the host lists are in sync
         for h in self.inventory.keys():
             if h not in self.cache.daemons:
@@ -1756,6 +1763,34 @@ Then run the following:
 
         return f"Ceph cluster {self._cluster_fsid} on {hostname} has exited maintenance mode"
 
+    @handle_orch_error
+    @host_exists()
+    def rescan_host(self, hostname: str) -> str:
+        """Use cephadm to issue a disk rescan on each HBA
+
+        Some HBAs and external enclosures don't automatically register
+        device insertion with the kernel, so for these scenarios we need
+        to manually rescan
+
+        :param hostname: (str) host name
+        """
+        self.log.info(f'disk rescan request sent to host "{hostname}"')
+        _out, _err, _code = self.wait_async(CephadmServe(self)._run_cephadm(hostname, cephadmNoImage, "disk-rescan",
+                                                                            [],
+                                                                            no_fsid=True,
+                                                                            error_ok=True))
+        if not _err:
+            raise OrchestratorError('Unexpected response from cephadm disk-rescan call')
+
+        msg = _err[0].split('\n')[-1]
+        log_msg = f'disk rescan: {msg}'
+        if msg.upper().startswith('OK'):
+            self.log.info(log_msg)
+        else:
+            self.log.warning(log_msg)
+
+        return f'{msg}'
+
     def get_minimal_ceph_conf(self) -> str:
         _, config, _ = self.check_mon_command({
             "prefix": "config generate-minimal-conf",
@@ -1890,6 +1925,9 @@ Then run the following:
 
     @handle_orch_error
     def service_action(self, action: str, service_name: str) -> List[str]:
+        if service_name not in self.spec_store.all_specs.keys():
+            raise OrchestratorError(f'Invalid service name "{service_name}".'
+                                    + ' View currently running services using "ceph orch ls"')
         dds: List[DaemonDescription] = self.cache.get_daemons_by_service(service_name)
         if not dds:
             raise OrchestratorError(f'No daemons exist under service name "{service_name}".'
@@ -1918,6 +1956,10 @@ Then run the following:
             if daemon_spec.daemon_type != 'osd':
                 daemon_spec = self.cephadm_services[daemon_type_to_service(
                     daemon_spec.daemon_type)].prepare_create(daemon_spec)
+            else:
+                # for OSDs, we still need to update config, just not carry out the full
+                # prepare_create function
+                daemon_spec.final_config, daemon_spec.deps = self.osd_service.generate_config(daemon_spec)
             return self.wait_async(CephadmServe(self)._create_daemon(daemon_spec, reconfig=(action == 'reconfig')))
 
         actions = {
@@ -2322,8 +2364,9 @@ Then run the following:
         else:
             need = {
                 'prometheus': ['mgr', 'alertmanager', 'node-exporter', 'ingress'],
-                'grafana': ['prometheus'],
+                'grafana': ['prometheus', 'loki'],
                 'alertmanager': ['mgr', 'alertmanager', 'snmp-gateway'],
+                'promtail': ['loki'],
             }
             for dep_type in need.get(daemon_type, []):
                 for dd in self.cache.get_daemons_by_type(dep_type):
@@ -2435,6 +2478,49 @@ Then run the following:
 
         return self._apply_service_spec(cast(ServiceSpec, spec))
 
+    @handle_orch_error
+    def apply_tuned_profiles(self, specs: List[TunedProfileSpec], no_overwrite: bool = False) -> str:
+        outs = []
+        for spec in specs:
+            if no_overwrite and self.tuned_profiles.exists(spec.profile_name):
+                outs.append(f"Tuned profile '{spec.profile_name}' already exists (--no-overwrite was passed)")
+            else:
+                self.tuned_profiles.add_profile(spec)
+                outs.append(f'Saved tuned profile {spec.profile_name}')
+        self._kick_serve_loop()
+        return '\n'.join(outs)
+
+    @handle_orch_error
+    def rm_tuned_profile(self, profile_name: str) -> str:
+        if profile_name not in self.tuned_profiles:
+            raise OrchestratorError(
+                f'Tuned profile {profile_name} does not exist. Nothing to remove.')
+        self.tuned_profiles.rm_profile(profile_name)
+        self._kick_serve_loop()
+        return f'Removed tuned profile {profile_name}'
+
+    @handle_orch_error
+    def tuned_profile_ls(self) -> List[TunedProfileSpec]:
+        return self.tuned_profiles.list_profiles()
+
+    @handle_orch_error
+    def tuned_profile_add_setting(self, profile_name: str, setting: str, value: str) -> str:
+        if profile_name not in self.tuned_profiles:
+            raise OrchestratorError(
+                f'Tuned profile {profile_name} does not exist. Cannot add setting.')
+        self.tuned_profiles.add_setting(profile_name, setting, value)
+        self._kick_serve_loop()
+        return f'Added setting {setting} with value {value} to tuned profile {profile_name}'
+
+    @handle_orch_error
+    def tuned_profile_rm_setting(self, profile_name: str, setting: str) -> str:
+        if profile_name not in self.tuned_profiles:
+            raise OrchestratorError(
+                f'Tuned profile {profile_name} does not exist. Cannot remove setting.')
+        self.tuned_profiles.rm_setting(profile_name, setting)
+        self._kick_serve_loop()
+        return f'Removed setting {setting} from tuned profile {profile_name}'
+
     def set_health_warning(self, name: str, summary: str, count: int, detail: List[str]) -> None:
         self.health_checks[name] = {
             'severity': 'warning',
@@ -2460,6 +2546,7 @@ Then run the following:
             spec=spec,
             hosts=self.cache.get_schedulable_hosts(),
             unreachable_hosts=self.cache.get_unreachable_hosts(),
+            draining_hosts=self.cache.get_draining_hosts(),
             networks=self.cache.networks,
             daemons=self.cache.get_daemons_by_service(spec.service_name()),
             allow_colo=svc.allow_colo(),
@@ -2538,6 +2625,7 @@ Then run the following:
             spec=spec,
             hosts=self.inventory.all_specs(),  # All hosts, even those without daemon refresh
             unreachable_hosts=self.cache.get_unreachable_hosts(),
+            draining_hosts=self.cache.get_draining_hosts(),
             networks=self.cache.networks,
             daemons=self.cache.get_daemons_by_service(spec.service_name()),
             allow_colo=self.cephadm_services[spec.service_type].allow_colo(),
@@ -2770,7 +2858,10 @@ Then run the following:
 
         # trigger the serve loop to initiate the removal
         self._kick_serve_loop()
-        return "Scheduled OSD(s) for removal"
+        warning_zap = "" if zap else ("\nVG/LV for the OSDs won't be zapped (--zap wasn't passed).\n"
+                                      "Run the `ceph-volume lvm zap` command with `--destroy`"
+                                      " against the VG/LV if you want them to be destroyed.")
+        return f"Scheduled OSD(s) for removal.{warning_zap}"
 
     @handle_orch_error
     def stop_remove_osds(self, osd_ids: List[str]) -> str:
index 7b293a4c1a5280cb1e71db63e359885966716bc3..31e5fb23e807bc0453c43fd1efc8c0dfb7420a85 100644 (file)
@@ -39,7 +39,11 @@ class Registry:
         headers = {'Accept': 'application/json'}
         url = f'https://{self.api_domain}/v2/{image}/tags/list'
         while True:
-            r = requests.get(url, headers=headers)
+            try:
+                r = requests.get(url, headers=headers)
+            except requests.exceptions.ConnectionError as e:
+                msg = f"Cannot get tags from url '{url}': {e}"
+                raise ValueError(msg) from e
             if r.status_code == 401:
                 if 'Authorization' in headers:
                     raise ValueError('failed authentication')
index 612c558043c8f59e600543c0a418f5c77915f547..692b4282e860e6ab196e771f14c22fd391f82dad 100644 (file)
@@ -1,3 +1,4 @@
+import ipaddress
 import hashlib
 import logging
 import random
@@ -143,6 +144,7 @@ class HostAssignment(object):
                  spec,  # type: ServiceSpec
                  hosts: List[orchestrator.HostSpec],
                  unreachable_hosts: List[orchestrator.HostSpec],
+                 draining_hosts: List[orchestrator.HostSpec],
                  daemons: List[orchestrator.DaemonDescription],
                  networks: Dict[str, Dict[str, Dict[str, List[str]]]] = {},
                  filter_new_host=None,  # type: Optional[Callable[[str],bool]]
@@ -156,6 +158,7 @@ class HostAssignment(object):
         self.primary_daemon_type = primary_daemon_type or spec.service_type
         self.hosts: List[orchestrator.HostSpec] = hosts
         self.unreachable_hosts: List[orchestrator.HostSpec] = unreachable_hosts
+        self.draining_hosts: List[orchestrator.HostSpec] = draining_hosts
         self.filter_new_host = filter_new_host
         self.service_name = spec.service_name()
         self.daemons = daemons
@@ -189,7 +192,8 @@ class HostAssignment(object):
 
         if self.spec.placement.hosts:
             explicit_hostnames = {h.hostname for h in self.spec.placement.hosts}
-            unknown_hosts = explicit_hostnames.difference(set(self.get_hostnames()))
+            known_hosts = self.get_hostnames() + [h.hostname for h in self.draining_hosts]
+            unknown_hosts = explicit_hostnames.difference(set(known_hosts))
             if unknown_hosts:
                 raise OrchestratorValidationError(
                     f'Cannot place {self.spec.one_line_str()} on {", ".join(sorted(unknown_hosts))}: Unknown hosts')
@@ -353,19 +357,19 @@ class HostAssignment(object):
             for i in range(len(to_add)):
                 to_add[i] = to_add[i].assign_rank_generation(ranks[i], self.rank_map)
 
-        # If we don't have <count> the list of candidates is definitive.
-        if count is None:
-            final = existing_slots + to_add
-            logger.debug('Provided hosts: %s' % final)
-            return self.place_per_host_daemons(final, to_add, to_remove)
-
-        logger.debug('Combine hosts with existing daemons %s + new hosts %s' % (
-            existing, to_add))
+        logger.debug('Combine hosts with existing daemons %s + new hosts %s' % (existing, to_add))
         return self.place_per_host_daemons(existing_slots + to_add, to_add, to_remove)
 
     def find_ip_on_host(self, hostname: str, subnets: List[str]) -> Optional[str]:
         for subnet in subnets:
             ips: List[str] = []
+            # following is to allow loopback interfaces for both ipv4 and ipv6. Since we
+            # only have the subnet (and no IP) we assume default loopback IP address.
+            if ipaddress.ip_network(subnet).is_loopback:
+                if ipaddress.ip_network(subnet).version == 4:
+                    ips.append('127.0.0.1')
+                else:
+                    ips.append('::1')
             for iface, iface_ips in self.networks.get(hostname, {}).get(subnet, {}).items():
                 ips.extend(iface_ips)
             if ips:
@@ -378,7 +382,7 @@ class HostAssignment(object):
                 DaemonPlacement(daemon_type=self.primary_daemon_type,
                                 hostname=h.hostname, network=h.network, name=h.name,
                                 ports=self.ports_start)
-                for h in self.spec.placement.hosts
+                for h in self.spec.placement.hosts if h.hostname not in [dh.hostname for dh in self.draining_hosts]
             ]
         elif self.spec.placement.label:
             ls = [
@@ -429,15 +433,17 @@ class HostAssignment(object):
             if len(old) > len(ls):
                 logger.debug('Filtered %s down to %s' % (old, ls))
 
-        # shuffle for pseudo random selection
-        # gen seed off of self.spec to make shuffling deterministic
+        # now that we have the list of nodes candidates based on the configured
+        # placement, let's shuffle the list for node pseudo-random selection. For this,
+        # we generate a seed from the service name and we use to shuffle the candidates.
+        # This makes shuffling deterministic for the same service name.
         seed = int(
             hashlib.sha1(self.spec.service_name().encode('utf-8')).hexdigest(),
             16
-        ) % (2 ** 32)
+        ) % (2 ** 32)  # truncate result to 32 bits
         final = sorted(ls)
         random.Random(seed).shuffle(final)
-        return ls
+        return final
 
     def remove_non_maintenance_unreachable_candidates(self, candidates: List[DaemonPlacement]) -> List[DaemonPlacement]:
         in_maintenance: Dict[str, bool] = {}
index 207f3c6ba49f68a4795cd073a52793f7abe1f283..6ca94393ed2360b8cc58fb1a5cc4d705700352fe 100644 (file)
@@ -1,3 +1,4 @@
+import ipaddress
 import hashlib
 import json
 import logging
@@ -162,7 +163,7 @@ class CephadmServe:
                 )
                 ret, out, err = self.mgr.mon_command({
                     'prefix': 'config set',
-                    'who': f'osd/host:{host}',
+                    'who': f'osd/host:{host.split(".")[0]}',
                     'name': 'osd_memory_target',
                     'value': str(val),
                 })
@@ -171,11 +172,15 @@ class CephadmServe:
                         f'Unable to set osd_memory_target on {host} to {val}: {err}'
                     )
         else:
-            self.mgr.check_mon_command({
-                'prefix': 'config rm',
-                'who': f'osd/host:{host}',
-                'name': 'osd_memory_target',
-            })
+            # if osd memory autotuning is off, we don't want to remove these config
+            # options as users may be using them. Since there is no way to set autotuning
+            # on/off at a host level, best we can do is check if it is globally on.
+            if self.mgr.get_foreign_ceph_option('osd', 'osd_memory_target_autotune'):
+                self.mgr.check_mon_command({
+                    'prefix': 'config rm',
+                    'who': f'osd/host:{host.split(".")[0]}',
+                    'name': 'osd_memory_target',
+                })
         self.mgr.cache.update_autotune(host)
 
     def _refresh_hosts_and_daemons(self) -> None:
@@ -515,6 +520,7 @@ class CephadmServe:
                                             len(self.mgr.apply_spec_fails),
                                             warnings)
         self.mgr.update_watched_hosts()
+        self.mgr.tuned_profile_utils._write_all_tuned_profiles()
         return r
 
     def _apply_service_config(self, spec: ServiceSpec) -> None:
@@ -603,14 +609,19 @@ class CephadmServe:
 
         def matches_network(host):
             # type: (str) -> bool
-            # make sure we have 1 or more IPs for any of those networks on that
-            # host
-            for network in public_networks:
-                if len(self.mgr.cache.networks[host].get(network, [])) > 0:
-                    return True
+            # make sure the host has at least one network that belongs to some configured public network(s)
+            for pn in public_networks:
+                public_network = ipaddress.ip_network(pn)
+                for hn in self.mgr.cache.networks[host]:
+                    host_network = ipaddress.ip_network(hn)
+                    if host_network.overlaps(public_network):
+                        return True
+
+            host_networks = ','.join(self.mgr.cache.networks[host])
+            pub_networks = ','.join(public_networks)
             self.log.info(
-                f"Filtered out host {host}: does not belong to mon public_network"
-                f" ({','.join(public_networks)})"
+                f"Filtered out host {host}: does not belong to mon public_network(s): "
+                f" {pub_networks}, host network(s): {host_networks}"
             )
             return False
 
@@ -622,6 +633,7 @@ class CephadmServe:
             hosts=self.mgr.cache.get_non_draining_hosts() if spec.service_name(
             ) == 'agent' else self.mgr.cache.get_schedulable_hosts(),
             unreachable_hosts=self.mgr.cache.get_unreachable_hosts(),
+            draining_hosts=self.mgr.cache.get_draining_hosts(),
             daemons=daemons,
             networks=self.mgr.cache.networks,
             filter_new_host=(
@@ -1000,6 +1012,7 @@ class CephadmServe:
                     spec=ServiceSpec('mon', placement=pspec),
                     hosts=self.mgr.cache.get_schedulable_hosts(),
                     unreachable_hosts=self.mgr.cache.get_unreachable_hosts(),
+                    draining_hosts=self.mgr.cache.get_draining_hosts(),
                     daemons=[],
                     networks=self.mgr.cache.networks,
                 )
@@ -1030,6 +1043,7 @@ class CephadmServe:
                     spec=ServiceSpec('mon', placement=ks.placement),
                     hosts=self.mgr.cache.get_schedulable_hosts(),
                     unreachable_hosts=self.mgr.cache.get_unreachable_hosts(),
+                    draining_hosts=self.mgr.cache.get_draining_hosts(),
                     daemons=[],
                     networks=self.mgr.cache.networks,
                 )
@@ -1052,6 +1066,8 @@ class CephadmServe:
                             client_files: Dict[str, Dict[str, Tuple[int, int, int, bytes, str]]],
                             host: str) -> None:
         updated_files = False
+        if host in self.mgr.offline_hosts:
+            return
         old_files = self.mgr.cache.get_host_client_files(host).copy()
         for path, m in client_files.get(host, {}).items():
             mode, uid, gid, content, digest = m
@@ -1065,6 +1081,8 @@ class CephadmServe:
             self.mgr.cache.update_client_file(host, path, digest, mode, uid, gid)
             updated_files = True
         for path in old_files.keys():
+            if path == '/etc/ceph/ceph.conf':
+                continue
             self.log.info(f'Removing {host}:{path}')
             cmd = ['rm', '-f', path]
             self.mgr.ssh.check_execute_command(host, cmd)
@@ -1125,6 +1143,12 @@ class CephadmServe:
                 except AttributeError:
                     eca = None
 
+                if daemon_spec.service_name in self.mgr.spec_store:
+                    configs = self.mgr.spec_store[daemon_spec.service_name].spec.custom_configs
+                    if configs is not None:
+                        daemon_spec.final_config.update(
+                            {'custom_config_files': [c.to_json() for c in configs]})
+
                 if self.mgr.cache.host_needs_registry_login(daemon_spec.host) and self.mgr.registry_url:
                     await self._registry_login(daemon_spec.host, json.loads(str(self.mgr.get_store('registry_credentials'))))
 
index 8abb0e63a2c102181d7937c3cf8f99c357a4fbb9..8028b27c661cac56b9fc2d5dc15f263f951d53a3 100644 (file)
@@ -40,7 +40,8 @@ class CephadmDaemonDeploySpec:
                  ports: Optional[List[int]] = None,
                  rank: Optional[int] = None,
                  rank_generation: Optional[int] = None,
-                 extra_container_args: Optional[List[str]] = None):
+                 extra_container_args: Optional[List[str]] = None,
+                 ):
         """
         A data struction to encapsulate `cephadm deploy ...
         """
@@ -178,10 +179,6 @@ class CephadmService(metaclass=ABCMeta):
             rank: Optional[int] = None,
             rank_generation: Optional[int] = None,
     ) -> CephadmDaemonDeploySpec:
-        try:
-            eca = spec.extra_container_args
-        except AttributeError:
-            eca = None
         return CephadmDaemonDeploySpec(
             host=host,
             daemon_id=daemon_id,
@@ -192,7 +189,8 @@ class CephadmService(metaclass=ABCMeta):
             ip=ip,
             rank=rank,
             rank_generation=rank_generation,
-            extra_container_args=eca,
+            extra_container_args=spec.extra_container_args if hasattr(
+                spec, 'extra_container_args') else None,
         )
 
     def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
index cd5936ec69778eb6f89b2e6f932d3067ac269719..75276535ac717acf16316e4fec43b82cc0570df8 100644 (file)
@@ -15,6 +15,7 @@ logger = logging.getLogger(__name__)
 
 class IngressService(CephService):
     TYPE = 'ingress'
+    MAX_KEEPALIVED_PASS_LEN = 8
 
     def primary_daemon_type(self) -> str:
         return 'haproxy'
@@ -77,7 +78,8 @@ class IngressService(CephService):
         password = self.mgr.get_store(pw_key)
         if password is None:
             if not spec.monitor_password:
-                password = ''.join(random.choice(string.ascii_lowercase) for _ in range(20))
+                password = ''.join(random.choice(string.ascii_lowercase)
+                                   for _ in range(self.MAX_KEEPALIVED_PASS_LEN))
                 self.mgr.set_store(pw_key, password)
         else:
             if spec.monitor_password:
@@ -98,7 +100,7 @@ class IngressService(CephService):
             for rank in range(num_ranks):
                 if rank in by_rank:
                     d = by_rank[rank]
-                    assert(d.ports)
+                    assert d.ports
                     servers.append({
                         'name': f"{spec.backend_service}.{rank}",
                         'ip': d.ip or resolve_ip(self.mgr.inventory.get_addr(str(d.hostname))),
@@ -129,7 +131,7 @@ class IngressService(CephService):
                 'servers': servers,
                 'user': spec.monitor_user or 'admin',
                 'password': password,
-                'ip': str(spec.virtual_ip).split('/')[0] or daemon_spec.ip or '*',
+                'ip': "*" if spec.virtual_ips_list else str(spec.virtual_ip).split('/')[0] or daemon_spec.ip or '*',
                 'frontend_port': daemon_spec.ports[0] if daemon_spec.ports else spec.frontend_port,
                 'monitor_port': daemon_spec.ports[1] if daemon_spec.ports else spec.monitor_port,
             }
@@ -176,7 +178,8 @@ class IngressService(CephService):
         password = self.mgr.get_store(pw_key)
         if password is None:
             if not spec.keepalived_password:
-                password = ''.join(random.choice(string.ascii_lowercase) for _ in range(20))
+                password = ''.join(random.choice(string.ascii_lowercase)
+                                   for _ in range(self.MAX_KEEPALIVED_PASS_LEN))
                 self.mgr.set_store(pw_key, password)
         else:
             if spec.keepalived_password:
@@ -196,15 +199,23 @@ class IngressService(CephService):
         hosts = sorted(list(set([host] + [str(d.hostname) for d in daemons])))
 
         # interface
-        bare_ip = str(spec.virtual_ip).split('/')[0]
+        bare_ips = []
+        if spec.virtual_ip:
+            bare_ips.append(str(spec.virtual_ip).split('/')[0])
+        elif spec.virtual_ips_list:
+            bare_ips = [str(vip).split('/')[0] for vip in spec.virtual_ips_list]
         interface = None
-        for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():
-            if ifaces and ipaddress.ip_address(bare_ip) in ipaddress.ip_network(subnet):
-                interface = list(ifaces.keys())[0]
-                logger.info(
-                    f'{bare_ip} is in {subnet} on {host} interface {interface}'
-                )
-                break
+        for bare_ip in bare_ips:
+            for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():
+                if ifaces and ipaddress.ip_address(bare_ip) in ipaddress.ip_network(subnet):
+                    interface = list(ifaces.keys())[0]
+                    logger.info(
+                        f'{bare_ip} is in {subnet} on {host} interface {interface}'
+                    )
+                    break
+            else:  # nobreak
+                continue
+            break
         # try to find interface by matching spec.virtual_interface_networks
         if not interface and spec.virtual_interface_networks:
             for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():
@@ -230,10 +241,33 @@ class IngressService(CephService):
                     script = f'/usr/bin/curl {build_url(scheme="http", host=d.ip or "localhost", port=port)}/health'
         assert script
 
-        # set state. first host in placement is master all others backups
-        state = 'BACKUP'
-        if hosts[0] == host:
-            state = 'MASTER'
+        states = []
+        priorities = []
+        virtual_ips = []
+
+        # Set state and priority. Have one master for each VIP. Or at least the first one as master if only one VIP.
+        if spec.virtual_ip:
+            virtual_ips.append(spec.virtual_ip)
+            if hosts[0] == host:
+                states.append('MASTER')
+                priorities.append(100)
+            else:
+                states.append('BACKUP')
+                priorities.append(90)
+
+        elif spec.virtual_ips_list:
+            virtual_ips = spec.virtual_ips_list
+            if len(virtual_ips) > len(hosts):
+                raise OrchestratorError(
+                    "Number of virtual IPs for ingress is greater than number of available hosts"
+                )
+            for x in range(len(virtual_ips)):
+                if hosts[x] == host:
+                    states.append('MASTER')
+                    priorities.append(100)
+                else:
+                    states.append('BACKUP')
+                    priorities.append(90)
 
         # remove host, daemon is being deployed on from hosts list for
         # other_ips in conf file and converter to ips
@@ -248,7 +282,9 @@ class IngressService(CephService):
                 'script': script,
                 'password': password,
                 'interface': interface,
-                'state': state,
+                'virtual_ips': virtual_ips,
+                'states': states,
+                'priorities': priorities,
                 'other_ips': other_ips,
                 'host_ip': resolve_ip(self.mgr.inventory.get_addr(host)),
             }
index 0bd388f461fc2b174adbc9aeb766a37ec41718d4..f99c79e795575531149e31cc5f2a97c52f612003 100644 (file)
@@ -1,6 +1,8 @@
 import errno
+import ipaddress
 import logging
 import os
+import socket
 from typing import List, Any, Tuple, Dict, Optional, cast
 from urllib.parse import urlparse
 
@@ -37,19 +39,23 @@ class GrafanaService(CephadmService):
 
             deps.append(dd.name())
 
-        daemons = self.mgr.cache.get_daemons_by_service('mgr')
+        daemons = self.mgr.cache.get_daemons_by_service('loki')
         loki_host = ''
-        assert daemons is not None
-        if daemons != []:
-            assert daemons[0].hostname is not None
-            addr = daemons[0].ip if daemons[0].ip else self._inventory_get_fqdn(daemons[0].hostname)
-            loki_host = build_url(scheme='http', host=addr, port=3100)
+        for i, dd in enumerate(daemons):
+            assert dd.hostname is not None
+            if i == 0:
+                addr = dd.ip if dd.ip else self._inventory_get_fqdn(dd.hostname)
+                loki_host = build_url(scheme='http', host=addr, port=3100)
+
+            deps.append(dd.name())
 
         grafana_data_sources = self.mgr.template.render(
             'services/grafana/ceph-dashboard.yml.j2', {'hosts': prom_services, 'loki_host': loki_host})
 
-        cert = self.mgr.get_store('grafana_crt')
-        pkey = self.mgr.get_store('grafana_key')
+        cert_path = f'{daemon_spec.host}/grafana_crt'
+        key_path = f'{daemon_spec.host}/grafana_key'
+        cert = self.mgr.get_store(cert_path)
+        pkey = self.mgr.get_store(key_path)
         if cert and pkey:
             try:
                 verify_tls(cert, pkey)
@@ -57,9 +63,9 @@ class GrafanaService(CephadmService):
                 logger.warning('Provided grafana TLS certificates invalid: %s', str(e))
                 cert, pkey = None, None
         if not (cert and pkey):
-            cert, pkey = create_self_signed_cert('Ceph', 'cephadm')
-            self.mgr.set_store('grafana_crt', cert)
-            self.mgr.set_store('grafana_key', pkey)
+            cert, pkey = create_self_signed_cert('Ceph', daemon_spec.host)
+            self.mgr.set_store(cert_path, cert)
+            self.mgr.set_store(key_path, pkey)
             if 'dashboard' in self.mgr.get('mgr_map')['modules']:
                 self.mgr.check_mon_command({
                     'prefix': 'dashboard set-grafana-api-ssl-verify',
@@ -75,6 +81,10 @@ class GrafanaService(CephadmService):
                 'http_addr': daemon_spec.ip if daemon_spec.ip else ''
             })
 
+        if 'dashboard' in self.mgr.get('mgr_map')['modules'] and spec.initial_admin_password:
+            self.mgr.check_mon_command(
+                {'prefix': 'dashboard set-grafana-api-password'}, inbuf=spec.initial_admin_password)
+
         config_file = {
             'files': {
                 "grafana.ini": grafana_ini,
@@ -106,6 +116,17 @@ class GrafanaService(CephadmService):
             service_url
         )
 
+    def pre_remove(self, daemon: DaemonDescription) -> None:
+        """
+        Called before grafana daemon is removed.
+        """
+        if daemon.hostname is not None:
+            # delete cert/key entires for this grafana daemon
+            cert_path = f'{daemon.hostname}/grafana_crt'
+            key_path = f'{daemon.hostname}/grafana_key'
+            self.mgr.set_store(cert_path, None)
+            self.mgr.set_store(key_path, None)
+
     def ok_to_stop(self,
                    daemon_ids: List[str],
                    force: bool = False,
@@ -148,8 +169,19 @@ class AlertmanagerService(CephadmService):
         proto = None  # http: or https:
         url = mgr_map.get('services', {}).get('dashboard', None)
         if url:
-            dashboard_urls.append(url.rstrip('/'))
-            p_result = urlparse(url)
+            p_result = urlparse(url.rstrip('/'))
+            hostname = socket.getfqdn(p_result.hostname)
+
+            try:
+                ip = ipaddress.ip_address(hostname)
+            except ValueError:
+                pass
+            else:
+                if ip.version == 6:
+                    hostname = f'[{hostname}]'
+
+            dashboard_urls.append(
+                f'{p_result.scheme}://{hostname}:{p_result.port}{p_result.path}')
             proto = p_result.scheme
             port = p_result.port
         # scan all mgrs to generate deps and to get standbys too.
@@ -345,6 +377,23 @@ class PrometheusService(CephadmService):
                 alerts = f.read()
             r['files']['/etc/prometheus/alerting/ceph_alerts.yml'] = alerts
 
+        # Include custom alerts if present in key value store. This enables the
+        # users to add custom alerts. Write the file in any case, so that if the
+        # content of the key value store changed, that file is overwritten
+        # (emptied in case they value has been removed from the key value
+        # store). This prevents the necessity to adapt `cephadm` binary to
+        # remove the file.
+        #
+        # Don't use the template engine for it as
+        #
+        #   1. the alerts are always static and
+        #   2. they are a template themselves for the Go template engine, which
+        #      use curly braces and escaping that is cumbersome and unnecessary
+        #      for the user.
+        #
+        r['files']['/etc/prometheus/alerting/custom_alerts.yml'] = \
+            self.mgr.get_store('services/prometheus/alerting/custom_alerts.yml', '')
+
         return r, sorted(deps)
 
     def get_active_daemon(self, daemon_descrs: List[DaemonDescription]) -> DaemonDescription:
@@ -432,14 +481,18 @@ class PromtailService(CephadmService):
     def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[str, Any], List[str]]:
         assert self.TYPE == daemon_spec.daemon_type
         deps: List[str] = []
-        hostnames: List[str] = []
-        for dd in self.mgr.cache.get_daemons_by_service('mgr'):
+
+        daemons = self.mgr.cache.get_daemons_by_service('loki')
+        loki_host = ''
+        for i, dd in enumerate(daemons):
             assert dd.hostname is not None
-            addr = self.mgr.inventory.get_addr(dd.hostname)
-            hostnames.append(addr)
+            if i == 0:
+                loki_host = dd.ip if dd.ip else self._inventory_get_fqdn(dd.hostname)
+
+            deps.append(dd.name())
+
         context = {
-            'hostnames': hostnames,
-            'client_hostname': hostnames[0],
+            'client_hostname': loki_host,
         }
 
         yml = self.mgr.template.render('services/promtail.yml.j2', context)
index 4caeebf51f9e0cc2727d30232cefc90fc0733e49..f560c9756654d0d51a025dc37d668ee7575023da 100644 (file)
@@ -7,11 +7,12 @@ vrrp_script check_backend {
     fall 2
 }
 
-vrrp_instance VI_0 {
-  state {{ state }}
-  priority 100
+{% for x in range(virtual_ips|length) %}
+vrrp_instance VI_{{ x }} {
+  state {{ states[x] }}
+  priority {{ priorities[x] }}
   interface {{ interface }}
-  virtual_router_id 51
+  virtual_router_id {{ 50 + x }}
   advert_int 1
   authentication {
       auth_type PASS
@@ -24,9 +25,10 @@ vrrp_instance VI_0 {
     {% endfor %}
   }
   virtual_ipaddress {
-    {{ spec.virtual_ip }} dev {{ interface }}
+    {{ virtual_ips[x] }} dev {{ interface }}
   }
   track_script {
       check_backend
   }
 }
+{% endfor %}
index f500f5d22eef2d815d5012a138251aa8ae39f417..5ce7a3103522617b5037f0feb3882c3547f0ac67 100644 (file)
@@ -12,10 +12,6 @@ clients:
 scrape_configs:
 - job_name: system
   static_configs:
-  - targets:
-{% for url in hostnames %}
-    - {{ url }}
-{% endfor %}
-    labels:
+  - labels:
       job: Cluster Logs
-      __path__: /var/log/ceph/**/*.log
+      __path__: /var/log/ceph/**/*.log
\ No newline at end of file
index 7a4ac0d873cd734f999df606ac4ac610b0db37fe..0567f7f7e68a02b5cc784dc2d12f1ac98cd96aae 100644 (file)
@@ -99,7 +99,8 @@ def with_cephadm_module(module_options=None, store=None):
             mock.patch("cephadm.agent.CephadmAgentHelpers._apply_agent", return_value=False), \
             mock.patch("cephadm.agent.CephadmAgentHelpers._agent_down", return_value=False), \
             mock.patch('cephadm.agent.CherryPyThread.run'), \
-            mock.patch('cephadm.offline_watcher.OfflineHostWatcher.run'):
+            mock.patch('cephadm.offline_watcher.OfflineHostWatcher.run'), \
+            mock.patch('cephadm.tuned_profiles.TunedProfileUtils._remove_stray_tuned_profiles'):
 
         m = CephadmOrchestrator.__new__(CephadmOrchestrator)
         if module_options is not None:
index d8eb76b43b0f8f25944af8dd97961d1fe0888f8b..354ee338a5cfb768ec6e8c58b295a60f10965da0 100644 (file)
@@ -7,6 +7,7 @@ import pytest
 
 from ceph.deployment.drive_group import DriveGroupSpec, DeviceSelection
 from cephadm.serve import CephadmServe
+from cephadm.inventory import HostCacheStatus
 from cephadm.services.osd import OSD, OSDRemovalQueue, OsdIdClaims
 
 try:
@@ -15,7 +16,8 @@ except ImportError:
     pass
 
 from ceph.deployment.service_spec import ServiceSpec, PlacementSpec, RGWSpec, \
-    NFSServiceSpec, IscsiServiceSpec, HostPlacementSpec, CustomContainerSpec, MDSSpec
+    NFSServiceSpec, IscsiServiceSpec, HostPlacementSpec, CustomContainerSpec, MDSSpec, \
+    CustomConfig
 from ceph.deployment.drive_selection.selector import DriveSelection
 from ceph.deployment.inventory import Devices, Device
 from ceph.utils import datetime_to_str, datetime_now
@@ -474,6 +476,37 @@ class TestCephadm(object):
                     image='',
                 )
 
+    @mock.patch("cephadm.serve.CephadmServe._run_cephadm")
+    def test_custom_config(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        test_cert = ['-----BEGIN PRIVATE KEY-----',
+                     'YSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3Mg',
+                     'ZXQgYWNjdXNhbSBldCBqdXN0byBkdW8=',
+                     '-----END PRIVATE KEY-----',
+                     '-----BEGIN CERTIFICATE-----',
+                     'YSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3Mg',
+                     'ZXQgYWNjdXNhbSBldCBqdXN0byBkdW8=',
+                     '-----END CERTIFICATE-----']
+        configs = [
+            CustomConfig(content='something something something',
+                         mount_path='/etc/test.conf'),
+            CustomConfig(content='\n'.join(test_cert), mount_path='/usr/share/grafana/thing.crt')
+        ]
+        conf_outs = [json.dumps(c.to_json()) for c in configs]
+        stdin_str = '{' + \
+            f'"config": "", "keyring": "", "custom_config_files": [{conf_outs[0]}, {conf_outs[1]}]' + '}'
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, ServiceSpec(service_type='crash', custom_configs=configs), CephadmOrchestrator.apply_crash):
+                _run_cephadm.assert_called_with(
+                    'test', 'crash.test', 'deploy', [
+                        '--name', 'crash.test',
+                        '--meta-json', '{"service_name": "crash", "ports": [], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null}',
+                        '--config-json', '-',
+                    ],
+                    stdin=stdin_str,
+                    image='',
+                )
+
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
     def test_daemon_check_post(self, cephadm_module: CephadmOrchestrator):
         with with_host(cephadm_module, 'test'):
@@ -1153,7 +1186,9 @@ class TestCephadm(object):
 
     @mock.patch("cephadm.module.CephadmOrchestrator.get_foreign_ceph_option")
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm")
-    def test_invalid_config_option_health_warning(self, _run_cephadm, get_foreign_ceph_option, cephadm_module: CephadmOrchestrator):
+    @mock.patch("cephadm.module.HostCache.save_host_devices")
+    def test_invalid_config_option_health_warning(self, _save_devs, _run_cephadm, get_foreign_ceph_option, cephadm_module: CephadmOrchestrator):
+        _save_devs.return_value = None
         _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
         with with_host(cephadm_module, 'test'):
             ps = PlacementSpec(hosts=['test:0.0.0.0=a'], count=1)
@@ -1167,6 +1202,144 @@ class TestCephadm(object):
             assert 'Ignoring invalid mgr config option test' in cephadm_module.health_checks[
                 'CEPHADM_INVALID_CONFIG_OPTION']['detail']
 
+    @mock.patch("cephadm.module.CephadmOrchestrator.get_foreign_ceph_option")
+    @mock.patch("cephadm.serve.CephadmServe._run_cephadm")
+    @mock.patch("cephadm.module.CephadmOrchestrator.set_store")
+    def test_save_devices(self, _set_store, _run_cephadm, _get_foreign_ceph_option, cephadm_module: CephadmOrchestrator):
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        entry_size = 65536  # default 64k size
+        _get_foreign_ceph_option.return_value = entry_size
+
+        class FakeDev():
+            def __init__(self, c: str = 'a'):
+                # using 1015 here makes the serialized string exactly 1024 bytes if c is one char
+                self.content = {c: c * 1015}
+
+            def to_json(self):
+                return self.content
+
+            def from_json(self, stuff):
+                return json.loads(stuff)
+
+        def byte_len(s):
+            return len(s.encode('utf-8'))
+
+        with with_host(cephadm_module, 'test'):
+            fake_devices = [FakeDev()] * 100  # should be ~100k
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) > entry_size
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) < entry_size * 2
+            cephadm_module.cache.update_host_devices('test', fake_devices)
+            cephadm_module.cache.save_host_devices('test')
+            expected_calls = [
+                mock.call('host.test.devices.0', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 34], 'entries': 3})),
+                mock.call('host.test.devices.1', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 34]})),
+                mock.call('host.test.devices.2', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 32]})),
+            ]
+            _set_store.assert_has_calls(expected_calls)
+
+            fake_devices = [FakeDev()] * 300  # should be ~300k
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) > entry_size * 4
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) < entry_size * 5
+            cephadm_module.cache.update_host_devices('test', fake_devices)
+            cephadm_module.cache.save_host_devices('test')
+            expected_calls = [
+                mock.call('host.test.devices.0', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50], 'entries': 6})),
+                mock.call('host.test.devices.1', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50]})),
+                mock.call('host.test.devices.2', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50]})),
+                mock.call('host.test.devices.3', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50]})),
+                mock.call('host.test.devices.4', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50]})),
+                mock.call('host.test.devices.5', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 50]})),
+            ]
+            _set_store.assert_has_calls(expected_calls)
+
+            fake_devices = [FakeDev()] * 62  # should be ~62k, just under cache size
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) < entry_size
+            cephadm_module.cache.update_host_devices('test', fake_devices)
+            cephadm_module.cache.save_host_devices('test')
+            expected_calls = [
+                mock.call('host.test.devices.0', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 62], 'entries': 1})),
+            ]
+            _set_store.assert_has_calls(expected_calls)
+
+            # should be ~64k but just over so it requires more entries
+            fake_devices = [FakeDev()] * 64
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) > entry_size
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) < entry_size * 2
+            cephadm_module.cache.update_host_devices('test', fake_devices)
+            cephadm_module.cache.save_host_devices('test')
+            expected_calls = [
+                mock.call('host.test.devices.0', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 22], 'entries': 3})),
+                mock.call('host.test.devices.1', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 22]})),
+                mock.call('host.test.devices.2', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev()] * 20]})),
+            ]
+            _set_store.assert_has_calls(expected_calls)
+
+            # test for actual content being correct using differing devices
+            entry_size = 3072
+            _get_foreign_ceph_option.return_value = entry_size
+            fake_devices = [FakeDev('a'), FakeDev('b'), FakeDev('c'), FakeDev('d'), FakeDev('e')]
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) > entry_size
+            assert byte_len(json.dumps([d.to_json() for d in fake_devices])) < entry_size * 2
+            cephadm_module.cache.update_host_devices('test', fake_devices)
+            cephadm_module.cache.save_host_devices('test')
+            expected_calls = [
+                mock.call('host.test.devices.0', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev('a'), FakeDev('b')]], 'entries': 3})),
+                mock.call('host.test.devices.1', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev('c'), FakeDev('d')]]})),
+                mock.call('host.test.devices.2', json.dumps(
+                    {'devices': [d.to_json() for d in [FakeDev('e')]]})),
+            ]
+            _set_store.assert_has_calls(expected_calls)
+
+    @mock.patch("cephadm.module.CephadmOrchestrator.get_store")
+    def test_load_devices(self, _get_store, cephadm_module: CephadmOrchestrator):
+        def _fake_store(key):
+            if key == 'host.test.devices.0':
+                return json.dumps({'devices': [d.to_json() for d in [Device('/path')] * 9], 'entries': 3})
+            elif key == 'host.test.devices.1':
+                return json.dumps({'devices': [d.to_json() for d in [Device('/path')] * 7]})
+            elif key == 'host.test.devices.2':
+                return json.dumps({'devices': [d.to_json() for d in [Device('/path')] * 4]})
+            else:
+                raise Exception(f'Get store with unexpected value {key}')
+
+        _get_store.side_effect = _fake_store
+        devs = cephadm_module.cache.load_host_devices('test')
+        assert devs == [Device('/path')] * 20
+
+    @mock.patch("cephadm.module.Inventory.__contains__")
+    def test_check_stray_host_cache_entry(self, _contains, cephadm_module: CephadmOrchestrator):
+        def _fake_inv(key):
+            if key in ['host1', 'node02', 'host.something.com']:
+                return True
+            return False
+
+        _contains.side_effect = _fake_inv
+        assert cephadm_module.cache._get_host_cache_entry_status('host1') == HostCacheStatus.host
+        assert cephadm_module.cache._get_host_cache_entry_status(
+            'host.something.com') == HostCacheStatus.host
+        assert cephadm_module.cache._get_host_cache_entry_status(
+            'node02.devices.37') == HostCacheStatus.devices
+        assert cephadm_module.cache._get_host_cache_entry_status(
+            'host.something.com.devices.0') == HostCacheStatus.devices
+        assert cephadm_module.cache._get_host_cache_entry_status('hostXXX') == HostCacheStatus.stray
+        assert cephadm_module.cache._get_host_cache_entry_status(
+            'host.nothing.com') == HostCacheStatus.stray
+
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.services.nfs.NFSService.run_grace_tool", mock.MagicMock())
     @mock.patch("cephadm.services.nfs.NFSService.purge", mock.MagicMock())
index c70ef9fb5ee1106ebffde9b37aa4a5a00cd91ad9..fcdee838bb4c8f5b1797f61706abdbe2415c8838 100644 (file)
@@ -133,6 +133,7 @@ def run_scheduler_test(results, mk_spec, hosts, daemons, key_elems):
                 spec=spec,
                 hosts=hosts,
                 unreachable_hosts=[],
+                draining_hosts=[],
                 daemons=daemons,
             ).place()
             if isinstance(host_res, list):
@@ -149,6 +150,7 @@ def run_scheduler_test(results, mk_spec, hosts, daemons, key_elems):
                 spec=spec,
                 hosts=hosts,
                 unreachable_hosts=[],
+                draining_hosts=[],
                 daemons=daemons
             ).place()
 
@@ -157,39 +159,6 @@ def run_scheduler_test(results, mk_spec, hosts, daemons, key_elems):
             assert_res(e)
 
 
-# * first match from the top wins
-# * where e=[], *=any
-#
-#       + list of known hosts available for scheduling (host_key)
-#       |   + hosts used for explict placement (explicit_key)
-#       |   |   + count
-#       |   |   | + section (host, label, pattern)
-#       |   |   | |     + expected result
-#       |   |   | |     |
-test_explicit_scheduler_results = [
-    (k("*   *   0 *"), error(SpecValidationError, 'num/count must be >= 1')),
-    (k("*   e   N l"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mgr>: No matching hosts for label mylabel')),
-    (k("*   e   N p"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mgr>: No matching hosts')),
-    (k("*   e   N h"), error(OrchestratorValidationError, 'placement spec is empty: no hosts, no label, no pattern, no count')),
-    (k("*   e   * *"), none),
-    (k("1   12  * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 2: Unknown hosts")),
-    (k("1   123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 2, 3: Unknown hosts")),
-    (k("1   *   * *"), exactly('1')),
-    (k("12  1   * *"), exactly('1')),
-    (k("12  12  1 *"), one_of('1', '2')),
-    (k("12  12  * *"), exactly('1', '2')),
-    (k("12  123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 3: Unknown hosts")),
-    (k("12  123 1 *"), one_of('1', '2', '3')),
-    (k("12  123 * *"), two_of('1', '2', '3')),
-    (k("123 1   * *"), exactly('1')),
-    (k("123 12  1 *"), one_of('1', '2')),
-    (k("123 12  * *"), exactly('1', '2')),
-    (k("123 123 1 *"), one_of('1', '2', '3')),
-    (k("123 123 2 *"), two_of('1', '2', '3')),
-    (k("123 123 * *"), exactly('1', '2', '3')),
-]
-
-
 @pytest.mark.parametrize("dp,n,result",
     [   # noqa: E128
         (
@@ -240,6 +209,39 @@ def test_daemon_placement_match(dp, dd, result):
     assert dp.matches_daemon(dd) == result
 
 
+# * first match from the top wins
+# * where e=[], *=any
+#
+#       + list of known hosts available for scheduling (host_key)
+#       |   + hosts used for explict placement (explicit_key)
+#       |   |   + count
+#       |   |   | + section (host, label, pattern)
+#       |   |   | |     + expected result
+#       |   |   | |     |
+test_explicit_scheduler_results = [
+    (k("*   *   0 *"), error(SpecValidationError, 'num/count must be >= 1')),
+    (k("*   e   N l"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mgr>: No matching hosts for label mylabel')),
+    (k("*   e   N p"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mgr>: No matching hosts')),
+    (k("*   e   N h"), error(OrchestratorValidationError, 'placement spec is empty: no hosts, no label, no pattern, no count')),
+    (k("*   e   * *"), none),
+    (k("1   12  * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 2: Unknown hosts")),
+    (k("1   123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 2, 3: Unknown hosts")),
+    (k("1   *   * *"), exactly('1')),
+    (k("12  1   * *"), exactly('1')),
+    (k("12  12  1 *"), one_of('1', '2')),
+    (k("12  12  * *"), exactly('1', '2')),
+    (k("12  123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mgr> on 3: Unknown hosts")),
+    (k("12  123 1 *"), one_of('1', '2', '3')),
+    (k("12  123 * *"), two_of('1', '2', '3')),
+    (k("123 1   * *"), exactly('1')),
+    (k("123 12  1 *"), one_of('1', '2')),
+    (k("123 12  * *"), exactly('1', '2')),
+    (k("123 123 1 *"), one_of('1', '2', '3')),
+    (k("123 123 2 *"), two_of('1', '2', '3')),
+    (k("123 123 * *"), exactly('1', '2', '3')),
+]
+
+
 @pytest.mark.parametrize("spec_section_key,spec_section",
     [   # noqa: E128
         ('h', 'hosts'),
@@ -655,8 +657,8 @@ class NodeAssignmentTest(NamedTuple):
             [],
             {},
             {0: {0: None}, 1: {0: None}, 2: {0: None}},
-            ['nfs:host1(rank=0.0)', 'nfs:host2(rank=1.0)', 'nfs:host3(rank=2.0)'],
-            ['nfs:host1(rank=0.0)', 'nfs:host2(rank=1.0)', 'nfs:host3(rank=2.0)'],
+            ['nfs:host3(rank=0.0)', 'nfs:host2(rank=1.0)', 'nfs:host1(rank=2.0)'],
+            ['nfs:host3(rank=0.0)', 'nfs:host2(rank=1.0)', 'nfs:host1(rank=2.0)'],
             []
         ),
         # 21: ranked, exist
@@ -669,8 +671,8 @@ class NodeAssignmentTest(NamedTuple):
             ],
             {0: {1: '0.1'}},
             {0: {1: '0.1'}, 1: {0: None}, 2: {0: None}},
-            ['nfs:host1(rank=0.1)', 'nfs:host2(rank=1.0)', 'nfs:host3(rank=2.0)'],
-            ['nfs:host2(rank=1.0)', 'nfs:host3(rank=2.0)'],
+            ['nfs:host1(rank=0.1)', 'nfs:host3(rank=1.0)', 'nfs:host2(rank=2.0)'],
+            ['nfs:host3(rank=1.0)', 'nfs:host2(rank=2.0)'],
             []
         ),
         # ranked, exist, different ranks
@@ -778,8 +780,8 @@ class NodeAssignmentTest(NamedTuple):
             ],
             {0: {2: '0.2'}, 1: {2: '1.2', 3: '1.3'}},
             {0: {2: '0.2'}, 1: {2: '1.2', 3: '1.3', 4: None}},
-            ['nfs:host1(rank=0.2)', 'nfs:host2(rank=1.4)'],
-            ['nfs:host2(rank=1.4)'],
+            ['nfs:host1(rank=0.2)', 'nfs:host3(rank=1.4)'],
+            ['nfs:host3(rank=1.4)'],
             ['nfs.1.2']
         ),
         # ranked, not enough hosts
@@ -841,6 +843,7 @@ def test_node_assignment(service_type, placement, hosts, daemons, rank_map, post
         spec=spec,
         hosts=[HostSpec(h, labels=['foo']) for h in hosts],
         unreachable_hosts=[],
+        draining_hosts=[],
         daemons=daemons,
         allow_colo=allow_colo,
         rank_map=rank_map,
@@ -871,6 +874,79 @@ def test_node_assignment(service_type, placement, hosts, daemons, rank_map, post
     assert sorted([d.name() for d in to_remove]) == sorted(expected_remove)
 
 
+class NodeAssignmentTest5(NamedTuple):
+    service_type: str
+    placement: PlacementSpec
+    available_hosts: List[str]
+    candidates_hosts: List[str]
+
+
+@pytest.mark.parametrize("service_type, placement, available_hosts, expected_candidates",
+    [   # noqa: E128
+        NodeAssignmentTest5(
+            'alertmanager',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host3 host1 host4 host2'.split(),
+        ),
+        NodeAssignmentTest5(
+            'prometheus',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host3 host2 host4 host1'.split(),
+        ),
+        NodeAssignmentTest5(
+            'grafana',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host1 host2 host4 host3'.split(),
+        ),
+        NodeAssignmentTest5(
+            'mgr',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host4 host2 host1 host3'.split(),
+        ),
+        NodeAssignmentTest5(
+            'mon',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host1 host3 host4 host2'.split(),
+        ),
+        NodeAssignmentTest5(
+            'rgw',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host1 host3 host2 host4'.split(),
+        ),
+        NodeAssignmentTest5(
+            'cephfs-mirror',
+            PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+            'host1 host2 host3 host4'.split(),
+            'host4 host3 host1 host2'.split(),
+        ),
+    ])
+def test_node_assignment_random_shuffle(service_type, placement, available_hosts, expected_candidates):
+    spec = None
+    service_id = None
+    allow_colo = False
+    spec = ServiceSpec(service_type=service_type,
+                       service_id=service_id,
+                       placement=placement)
+
+    candidates = HostAssignment(
+        spec=spec,
+        hosts=[HostSpec(h, labels=['foo']) for h in available_hosts],
+        unreachable_hosts=[],
+        draining_hosts=[],
+        daemons=[],
+        allow_colo=allow_colo,
+    ).get_candidates()
+
+    candidates_hosts = [h.hostname for h in candidates]
+    assert candidates_hosts == expected_candidates
+
+
 class NodeAssignmentTest2(NamedTuple):
     service_type: str
     placement: PlacementSpec
@@ -947,6 +1023,7 @@ def test_node_assignment2(service_type, placement, hosts,
         spec=ServiceSpec(service_type, placement=placement),
         hosts=[HostSpec(h, labels=['foo']) for h in hosts],
         unreachable_hosts=[],
+        draining_hosts=[],
         daemons=daemons,
     ).place()
     assert len(hosts) == expected_len
@@ -981,6 +1058,7 @@ def test_node_assignment3(service_type, placement, hosts,
         spec=ServiceSpec(service_type, placement=placement),
         hosts=[HostSpec(h) for h in hosts],
         unreachable_hosts=[],
+        draining_hosts=[],
         daemons=daemons,
     ).place()
     assert len(hosts) == expected_len
@@ -1078,6 +1156,7 @@ def test_node_assignment4(spec, networks, daemons,
         spec=spec,
         hosts=[HostSpec(h, labels=['foo']) for h in networks.keys()],
         unreachable_hosts=[],
+        draining_hosts=[],
         daemons=daemons,
         allow_colo=True,
         networks=networks,
@@ -1164,6 +1243,7 @@ def test_bad_specs(service_type, placement, hosts, daemons, expected):
             spec=ServiceSpec(service_type, placement=placement),
             hosts=[HostSpec(h) for h in hosts],
             unreachable_hosts=[],
+            draining_hosts=[],
             daemons=daemons,
         ).place()
     assert str(e.value) == expected
@@ -1340,6 +1420,7 @@ def test_active_assignment(service_type, placement, hosts, daemons, expected, ex
         spec=spec,
         hosts=[HostSpec(h) for h in hosts],
         unreachable_hosts=[],
+        draining_hosts=[],
         daemons=daemons,
     ).place()
     assert sorted([h.hostname for h in hosts]) in expected
@@ -1437,6 +1518,7 @@ def test_unreachable_host(service_type, placement, hosts, unreachable_hosts, dae
         spec=spec,
         hosts=[HostSpec(h) for h in hosts],
         unreachable_hosts=[HostSpec(h) for h in unreachable_hosts],
+        draining_hosts=[],
         daemons=daemons,
     ).place()
     assert sorted([h.hostname for h in to_add]) in expected_add
@@ -1513,6 +1595,76 @@ def test_remove_from_offline(service_type, placement, hosts, maintenance_hosts,
         spec=spec,
         hosts=host_specs,
         unreachable_hosts=[h for h in host_specs if h.status],
+        draining_hosts=[],
+        daemons=daemons,
+    ).place()
+    assert sorted([h.hostname for h in to_add]) in expected_add
+    assert sorted([h.name() for h in to_remove]) in expected_remove
+
+
+class DrainExplicitPlacementTest(NamedTuple):
+    service_type: str
+    placement: PlacementSpec
+    hosts: List[str]
+    maintenance_hosts: List[str]
+    offline_hosts: List[str]
+    draining_hosts: List[str]
+    daemons: List[DaemonDescription]
+    expected_add: List[List[str]]
+    expected_remove: List[List[str]]
+
+
+@pytest.mark.parametrize("service_type,placement,hosts,maintenance_hosts,offline_hosts,draining_hosts,daemons,expected_add,expected_remove",
+                         [
+                             DrainExplicitPlacementTest(
+                                 'crash',
+                                 PlacementSpec(hosts='host1 host2 host3'.split()),
+                                 'host1 host2 host3 host4'.split(),
+                                 [],
+                                 [],
+                                 ['host3'],
+                                 [
+                                     DaemonDescription('crash', 'host1', 'host1'),
+                                     DaemonDescription('crash', 'host2', 'host2'),
+                                     DaemonDescription('crash', 'host3', 'host3'),
+                                 ],
+                                 [[]],
+                                 [['crash.host3']],
+                             ),
+                             DrainExplicitPlacementTest(
+                                 'crash',
+                                 PlacementSpec(hosts='host1 host2 host3 host4'.split()),
+                                 'host1 host2 host3 host4'.split(),
+                                 [],
+                                 [],
+                                 ['host1', 'host4'],
+                                 [
+                                     DaemonDescription('crash', 'host1', 'host1'),
+                                     DaemonDescription('crash', 'host3', 'host3'),
+                                 ],
+                                 [['host2']],
+                                 [['crash.host1']],
+                             ),
+                         ])
+def test_drain_from_explict_placement(service_type, placement, hosts, maintenance_hosts, offline_hosts, draining_hosts, daemons, expected_add, expected_remove):
+
+    spec = ServiceSpec(service_type=service_type,
+                       service_id='test',
+                       placement=placement)
+
+    host_specs = [HostSpec(h) for h in hosts]
+    draining_host_specs = [HostSpec(h) for h in draining_hosts]
+    for h in host_specs:
+        if h.hostname in offline_hosts:
+            h.status = 'offline'
+        if h.hostname in maintenance_hosts:
+            h.status = 'maintenance'
+
+    hosts, to_add, to_remove = HostAssignment(
+        spec=spec,
+        hosts=host_specs,
+        unreachable_hosts=[h for h in host_specs if h.status],
+        draining_hosts=draining_host_specs,
         daemons=daemons,
     ).place()
     assert sorted([h.hostname for h in to_add]) in expected_add
index e59e95c7bad29541133ed8acb8fb62dc2a1542e9..98dcc850f20505fb5b88723bf798b25d8c1a8235 100644 (file)
@@ -238,40 +238,116 @@ class TestISCSIService:
 
 
 class TestMonitoring:
+    def _get_config(self, url: str) -> str:
+        return f"""
+        # This file is generated by cephadm.
+        # See https://prometheus.io/docs/alerting/configuration/ for documentation.
+
+        global:
+          resolve_timeout: 5m
+          http_config:
+            tls_config:
+              insecure_skip_verify: true
+
+        route:
+          receiver: 'default'
+          routes:
+            - group_by: ['alertname']
+              group_wait: 10s
+              group_interval: 10s
+              repeat_interval: 1h
+              receiver: 'ceph-dashboard'
+
+        receivers:
+        - name: 'default'
+          webhook_configs:
+        - name: 'ceph-dashboard'
+          webhook_configs:
+          - url: '{url}/api/prometheus_receiver'
+        """
+
     @patch("cephadm.serve.CephadmServe._run_cephadm")
-    def test_alertmanager_config(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config(self, mock_get, _run_cephadm,
+                                 cephadm_module: CephadmOrchestrator):
         _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        mock_get.return_value = {"services": {"dashboard": "http://[::1]:8080"}}
 
         with with_host(cephadm_module, 'test'):
             with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config('http://localhost:8080')).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--meta-json', '{"service_name": "alertmanager", "ports": [9093, 9094], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null}',
+                        '--config-json', '-', '--tcp-ports', '9093 9094'
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
 
-                y = dedent("""
-                # This file is generated by cephadm.
-                # See https://prometheus.io/docs/alerting/configuration/ for documentation.
+    @patch("cephadm.serve.CephadmServe._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config_v6(self, mock_get, _run_cephadm,
+                                    cephadm_module: CephadmOrchestrator):
+        dashboard_url = "http://[2001:db8:4321:0000:0000:0000:0000:0000]:8080"
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        mock_get.return_value = {"services": {"dashboard": dashboard_url}}
 
-                global:
-                  resolve_timeout: 5m
-                  http_config:
-                    tls_config:
-                      insecure_skip_verify: true
-
-                route:
-                  receiver: 'default'
-                  routes:
-                    - group_by: ['alertname']
-                      group_wait: 10s
-                      group_interval: 10s
-                      repeat_interval: 1h
-                      receiver: 'ceph-dashboard'
-
-                receivers:
-                - name: 'default'
-                  webhook_configs:
-                - name: 'ceph-dashboard'
-                  webhook_configs:
-                  - url: 'http://[::1]:8080/api/prometheus_receiver'
-                """).lstrip()
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config(dashboard_url)).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--meta-json',
+                        '{"service_name": "alertmanager", "ports": [9093, 9094], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null}',
+                        '--config-json', '-', '--tcp-ports', '9093 9094'
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.serve.CephadmServe._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    @patch("socket.getfqdn")
+    def test_alertmanager_config_v6_fqdn(self, mock_getfqdn, mock_get, _run_cephadm,
+                                         cephadm_module: CephadmOrchestrator):
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        mock_getfqdn.return_value = "mgr.test.fqdn"
+        mock_get.return_value = {"services": {
+            "dashboard": "http://[2001:db8:4321:0000:0000:0000:0000:0000]:8080"}}
 
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config("http://mgr.test.fqdn:8080")).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--meta-json',
+                        '{"service_name": "alertmanager", "ports": [9093, 9094], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null}',
+                        '--config-json', '-', '--tcp-ports', '9093 9094'
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
+
+    @patch("cephadm.serve.CephadmServe._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    def test_alertmanager_config_v4(self, mock_get, _run_cephadm, cephadm_module: CephadmOrchestrator):
+        dashboard_url = "http://192.168.0.123:8080"
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        mock_get.return_value = {"services": {"dashboard": dashboard_url}}
+
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config(dashboard_url)).lstrip()
                 _run_cephadm.assert_called_with(
                     'test',
                     'alertmanager.test',
@@ -282,8 +358,32 @@ class TestMonitoring:
                         '--config-json', '-', '--tcp-ports', '9093 9094'
                     ],
                     stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
-                    image='')\
+                    image='')
+
+    @patch("cephadm.serve.CephadmServe._run_cephadm")
+    @patch("mgr_module.MgrModule.get")
+    @patch("socket.getfqdn")
+    def test_alertmanager_config_v4_fqdn(self, mock_getfqdn, mock_get, _run_cephadm,
+                                         cephadm_module: CephadmOrchestrator):
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+        mock_getfqdn.return_value = "mgr.test.fqdn"
+        mock_get.return_value = {"services": {"dashboard": "http://192.168.0.123:8080"}}
 
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, AlertManagerSpec()):
+                y = dedent(self._get_config("http://mgr.test.fqdn:8080")).lstrip()
+                _run_cephadm.assert_called_with(
+                    'test',
+                    'alertmanager.test',
+                    'deploy',
+                    [
+                        '--name', 'alertmanager.test',
+                        '--meta-json',
+                        '{"service_name": "alertmanager", "ports": [9093, 9094], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null}',
+                        '--config-json', '-', '--tcp-ports', '9093 9094'
+                    ],
+                    stdin=json.dumps({"files": {"alertmanager.yml": y}, "peers": []}),
+                    image='')
 
     @patch("cephadm.serve.CephadmServe._run_cephadm")
     def test_prometheus_config(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
@@ -326,7 +426,8 @@ class TestMonitoring:
                         '--config-json', '-',
                         '--tcp-ports', '9095'
                     ],
-                    stdin=json.dumps({"files": {"prometheus.yml": y}}),
+                    stdin=json.dumps({"files": {"prometheus.yml": y,
+                                                "/etc/prometheus/alerting/custom_alerts.yml": ""}}),
                     image='')
 
     @patch("cephadm.serve.CephadmServe._run_cephadm")
@@ -398,14 +499,12 @@ class TestMonitoring:
                   filename: /tmp/positions.yaml
 
                 clients:
-                  - url: http://1::4:3100/loki/api/v1/push
+                  - url: http://:3100/loki/api/v1/push
 
                 scrape_configs:
                 - job_name: system
                   static_configs:
-                  - targets:
-                    - 1::4
-                    labels:
+                  - labels:
                       job: Cluster Logs
                       __path__: /var/log/ceph/**/*.log""").lstrip()
 
@@ -430,8 +529,8 @@ class TestMonitoring:
         _run_cephadm.side_effect = async_side_effect(("{}", "", 0))
 
         with with_host(cephadm_module, "test"):
-            cephadm_module.set_store("grafana_crt", "c")
-            cephadm_module.set_store("grafana_key", "k")
+            cephadm_module.set_store("test/grafana_crt", "c")
+            cephadm_module.set_store("test/grafana_key", "k")
             with with_service(
                 cephadm_module, MonitoringSpec("prometheus")
             ) as _, with_service(cephadm_module, ServiceSpec("mgr")) as _, with_service(
@@ -483,7 +582,7 @@ class TestMonitoring:
                             type: 'loki'
                             access: 'proxy'
                             orgId: 2
-                            url: 'http://[1::4]:3100'
+                            url: ''
                             basicAuth: false
                             isDefault: true
                             editable: false""").lstrip(),
@@ -551,7 +650,7 @@ class TestMonitoring:
                                     "    type: 'loki'\n"
                                     "    access: 'proxy'\n"
                                     '    orgId: 2\n'
-                                    "    url: 'http://[1::4]:3100'\n"
+                                    "    url: ''\n"
                                     '    basicAuth: false\n'
                                     '    isDefault: true\n'
                                     '    editable: false',
@@ -827,7 +926,7 @@ class TestIngressService:
                                 'state MASTER\n  '
                                 'priority 100\n  '
                                 'interface if0\n  '
-                                'virtual_router_id 51\n  '
+                                'virtual_router_id 50\n  '
                                 'advert_int 1\n  '
                                 'authentication {\n      '
                                 'auth_type PASS\n      '
@@ -841,7 +940,7 @@ class TestIngressService:
                                 '}\n  '
                                 'track_script {\n      '
                                 'check_backend\n  }\n'
-                                '}'
+                                '}\n'
                         }
                 }
 
@@ -905,6 +1004,130 @@ class TestIngressService:
 
                 assert haproxy_generated_conf[0] == haproxy_expected_conf
 
+    @patch("cephadm.serve.CephadmServe._run_cephadm")
+    def test_ingress_config_multi_vips(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
+        _run_cephadm.side_effect = async_side_effect(('{}', '', 0))
+
+        with with_host(cephadm_module, 'test'):
+            cephadm_module.cache.update_host_networks('test', {
+                '1.2.3.0/24': {
+                    'if0': ['1.2.3.4/32']
+                }
+            })
+
+            # Check the ingress with multiple VIPs
+            s = RGWSpec(service_id="foo", placement=PlacementSpec(count=1),
+                        rgw_frontend_type='beast')
+
+            ispec = IngressSpec(service_type='ingress',
+                                service_id='test',
+                                backend_service='rgw.foo',
+                                frontend_port=8089,
+                                monitor_port=8999,
+                                monitor_user='admin',
+                                monitor_password='12345',
+                                keepalived_password='12345',
+                                virtual_interface_networks=['1.2.3.0/24'],
+                                virtual_ips_list=["1.2.3.4/32"])
+            with with_service(cephadm_module, s) as _, with_service(cephadm_module, ispec) as _:
+                # generate the keepalived conf based on the specified spec
+                # Test with only 1 IP on the list, as it will fail with more VIPS but only one host.
+                keepalived_generated_conf = cephadm_module.cephadm_services['ingress'].keepalived_generate_config(
+                    CephadmDaemonDeploySpec(host='test', daemon_id='ingress', service_name=ispec.service_name()))
+
+                keepalived_expected_conf = {
+                    'files':
+                        {
+                            'keepalived.conf':
+                                '# This file is generated by cephadm.\n'
+                                'vrrp_script check_backend {\n    '
+                                'script "/usr/bin/curl http://localhost:8999/health"\n    '
+                                'weight -20\n    '
+                                'interval 2\n    '
+                                'rise 2\n    '
+                                'fall 2\n}\n\n'
+                                'vrrp_instance VI_0 {\n  '
+                                'state MASTER\n  '
+                                'priority 100\n  '
+                                'interface if0\n  '
+                                'virtual_router_id 50\n  '
+                                'advert_int 1\n  '
+                                'authentication {\n      '
+                                'auth_type PASS\n      '
+                                'auth_pass 12345\n  '
+                                '}\n  '
+                                'unicast_src_ip 1::4\n  '
+                                'unicast_peer {\n  '
+                                '}\n  '
+                                'virtual_ipaddress {\n    '
+                                '1.2.3.4/32 dev if0\n  '
+                                '}\n  '
+                                'track_script {\n      '
+                                'check_backend\n  }\n'
+                                '}\n'
+                        }
+                }
+
+                # check keepalived config
+                assert keepalived_generated_conf[0] == keepalived_expected_conf
+
+                # generate the haproxy conf based on the specified spec
+                haproxy_generated_conf = cephadm_module.cephadm_services['ingress'].haproxy_generate_config(
+                    CephadmDaemonDeploySpec(host='test', daemon_id='ingress', service_name=ispec.service_name()))
+
+                haproxy_expected_conf = {
+                    'files':
+                        {
+                            'haproxy.cfg':
+                                '# This file is generated by cephadm.'
+                                '\nglobal\n    log         '
+                                '127.0.0.1 local2\n    '
+                                'chroot      /var/lib/haproxy\n    '
+                                'pidfile     /var/lib/haproxy/haproxy.pid\n    '
+                                'maxconn     8000\n    '
+                                'daemon\n    '
+                                'stats socket /var/lib/haproxy/stats\n'
+                                '\ndefaults\n    '
+                                'mode                    http\n    '
+                                'log                     global\n    '
+                                'option                  httplog\n    '
+                                'option                  dontlognull\n    '
+                                'option http-server-close\n    '
+                                'option forwardfor       except 127.0.0.0/8\n    '
+                                'option                  redispatch\n    '
+                                'retries                 3\n    '
+                                'timeout queue           20s\n    '
+                                'timeout connect         5s\n    '
+                                'timeout http-request    1s\n    '
+                                'timeout http-keep-alive 5s\n    '
+                                'timeout client          1s\n    '
+                                'timeout server          1s\n    '
+                                'timeout check           5s\n    '
+                                'maxconn                 8000\n'
+                                '\nfrontend stats\n    '
+                                'mode http\n    '
+                                'bind *:8999\n    '
+                                'bind localhost:8999\n    '
+                                'stats enable\n    '
+                                'stats uri /stats\n    '
+                                'stats refresh 10s\n    '
+                                'stats auth admin:12345\n    '
+                                'http-request use-service prometheus-exporter if { path /metrics }\n    '
+                                'monitor-uri /health\n'
+                                '\nfrontend frontend\n    '
+                                'bind *:8089\n    '
+                                'default_backend backend\n\n'
+                                'backend backend\n    '
+                                'option forwardfor\n    '
+                                'balance static-rr\n    '
+                                'option httpchk HEAD / HTTP/1.0\n    '
+                                'server '
+                                + haproxy_generated_conf[1][0] + ' 1::4:80 check weight 100\n'
+                        }
+                }
+
+                assert haproxy_generated_conf[0] == haproxy_expected_conf
+
 
 class TestCephFsMirror:
     @patch("cephadm.serve.CephadmServe._run_cephadm")
diff --git a/ceph/src/pybind/mgr/cephadm/tests/test_tuned_profiles.py b/ceph/src/pybind/mgr/cephadm/tests/test_tuned_profiles.py
new file mode 100644 (file)
index 0000000..1521b01
--- /dev/null
@@ -0,0 +1,220 @@
+import pytest
+import json
+from tests import mock
+from cephadm.tuned_profiles import TunedProfileUtils, SYSCTL_DIR
+from cephadm.inventory import TunedProfileStore
+from ceph.utils import datetime_now
+from ceph.deployment.service_spec import TunedProfileSpec, PlacementSpec
+from cephadm.ssh import SSHManager
+from orchestrator import HostSpec
+
+from typing import List, Dict
+
+
+class SaveError(Exception):
+    pass
+
+
+class FakeCache:
+    def __init__(self,
+                 hosts,
+                 schedulable_hosts,
+                 unreachable_hosts):
+        self.hosts = hosts
+        self.unreachable_hosts = [HostSpec(h) for h in unreachable_hosts]
+        self.schedulable_hosts = [HostSpec(h) for h in schedulable_hosts]
+        self.last_tuned_profile_update = {}
+
+    def get_hosts(self):
+        return self.hosts
+
+    def get_schedulable_hosts(self):
+        return self.schedulable_hosts
+
+    def get_unreachable_hosts(self):
+        return self.unreachable_hosts
+
+    def get_draining_hosts(self):
+        return []
+
+    @property
+    def networks(self):
+        return {h: {'a': {'b': ['c']}} for h in self.hosts}
+
+    def host_needs_tuned_profile_update(self, host, profile_name):
+        return profile_name == 'p2'
+
+
+class FakeMgr:
+    def __init__(self,
+                 hosts: List[str],
+                 schedulable_hosts: List[str],
+                 unreachable_hosts: List[str],
+                 profiles: Dict[str, TunedProfileSpec]):
+        self.cache = FakeCache(hosts, schedulable_hosts, unreachable_hosts)
+        self.tuned_profiles = TunedProfileStore(self)
+        self.tuned_profiles.profiles = profiles
+        self.ssh = SSHManager(self)
+        self.offline_hosts = []
+
+    def set_store(self, what: str, value: str):
+        raise SaveError(f'{what}: {value}')
+
+    def get_store(self, what: str):
+        if what == 'tuned_profiles':
+            return json.dumps({'x': TunedProfileSpec('x',
+                                                     PlacementSpec(hosts=['x']),
+                                                     {'x': 'x'}).to_json(),
+                               'y': TunedProfileSpec('y',
+                                                     PlacementSpec(hosts=['y']),
+                                                     {'y': 'y'}).to_json()})
+        return ''
+
+
+class TestTunedProfiles:
+    tspec1 = TunedProfileSpec('p1',
+                              PlacementSpec(hosts=['a', 'b', 'c']),
+                              {'setting1': 'value1',
+                               'setting2': 'value2',
+                               'setting with space': 'value with space'})
+    tspec2 = TunedProfileSpec('p2',
+                              PlacementSpec(hosts=['a', 'c']),
+                              {'something': 'something_else',
+                               'high': '5'})
+    tspec3 = TunedProfileSpec('p3',
+                              PlacementSpec(hosts=['c']),
+                              {'wow': 'wow2',
+                               'setting with space': 'value with space',
+                               'down': 'low'})
+
+    def profiles_to_calls(self, tp: TunedProfileUtils, profiles: List[TunedProfileSpec]) -> List[Dict[str, str]]:
+        # this function takes a list of tuned profiles and returns a mapping from
+        # profile names to the string that will be written to the actual config file on the host.
+        res = []
+        for p in profiles:
+            p_str = tp._profile_to_str(p)
+            res.append({p.profile_name: p_str})
+        return res
+
+    @mock.patch("cephadm.tuned_profiles.TunedProfileUtils._remove_stray_tuned_profiles")
+    @mock.patch("cephadm.tuned_profiles.TunedProfileUtils._write_tuned_profiles")
+    def test_write_all_tuned_profiles(self, _write_profiles, _rm_profiles):
+        profiles = {'p1': self.tspec1, 'p2': self.tspec2, 'p3': self.tspec3}
+        mgr = FakeMgr(['a', 'b', 'c'],
+                      ['a', 'b', 'c'],
+                      [],
+                      profiles)
+        tp = TunedProfileUtils(mgr)
+        tp._write_all_tuned_profiles()
+        # need to check that _write_tuned_profiles is correctly called with the
+        # profiles that match the tuned profile placements and with the correct
+        # strings that should be generated from the settings the profiles have.
+        # the _profiles_to_calls helper allows us to generated the input we
+        # should check against
+        calls = [
+            mock.call('a', self.profiles_to_calls(tp, [self.tspec1, self.tspec2])),
+            mock.call('b', self.profiles_to_calls(tp, [self.tspec1])),
+            mock.call('c', self.profiles_to_calls(tp, [self.tspec1, self.tspec2, self.tspec3]))
+        ]
+        _write_profiles.assert_has_calls(calls, any_order=True)
+
+    @mock.patch('cephadm.ssh.SSHManager.check_execute_command')
+    def test_rm_stray_tuned_profiles(self, _check_execute_command):
+        profiles = {'p1': self.tspec1, 'p2': self.tspec2, 'p3': self.tspec3}
+        # for this test, going to use host "a" and put 4 cephadm generated
+        # profiles "p1" "p2", "p3" and "who" only two of which should be there ("p1", "p2")
+        # as well as a file not generated by cephadm. Only the "p3" and "who"
+        # profiles should be removed from the host. This should total to 4
+        # calls to check_execute_command, 1 "ls", 2 "rm", and 1 "sysctl --system"
+        _check_execute_command.return_value = '\n'.join(['p1-cephadm-tuned-profile.conf',
+                                                         'p2-cephadm-tuned-profile.conf',
+                                                         'p3-cephadm-tuned-profile.conf',
+                                                         'who-cephadm-tuned-profile.conf',
+                                                         'dont-touch-me'])
+        mgr = FakeMgr(['a', 'b', 'c'],
+                      ['a', 'b', 'c'],
+                      [],
+                      profiles)
+        tp = TunedProfileUtils(mgr)
+        tp._remove_stray_tuned_profiles('a', self.profiles_to_calls(tp, [self.tspec1, self.tspec2]))
+        calls = [
+            mock.call('a', ['ls', SYSCTL_DIR]),
+            mock.call('a', ['rm', '-f', f'{SYSCTL_DIR}/p3-cephadm-tuned-profile.conf']),
+            mock.call('a', ['rm', '-f', f'{SYSCTL_DIR}/who-cephadm-tuned-profile.conf']),
+            mock.call('a', ['sysctl', '--system'])
+        ]
+        _check_execute_command.assert_has_calls(calls, any_order=True)
+
+    @mock.patch('cephadm.ssh.SSHManager.check_execute_command')
+    @mock.patch('cephadm.ssh.SSHManager.write_remote_file')
+    def test_write_tuned_profiles(self, _write_remote_file, _check_execute_command):
+        profiles = {'p1': self.tspec1, 'p2': self.tspec2, 'p3': self.tspec3}
+        # for this test we will use host "a" and have it so host_needs_tuned_profile_update
+        # returns True for p2 and False for p1 (see FakeCache class). So we should see
+        # 2 ssh calls, one to write p2, one to run sysctl --system
+        _check_execute_command.return_value = 'success'
+        _write_remote_file.return_value = 'success'
+        mgr = FakeMgr(['a', 'b', 'c'],
+                      ['a', 'b', 'c'],
+                      [],
+                      profiles)
+        tp = TunedProfileUtils(mgr)
+        tp._write_tuned_profiles('a', self.profiles_to_calls(tp, [self.tspec1, self.tspec2]))
+        _check_execute_command.assert_called_with('a', ['sysctl', '--system'])
+        _write_remote_file.assert_called_with(
+            'a', f'{SYSCTL_DIR}/p2-cephadm-tuned-profile.conf', tp._profile_to_str(self.tspec2).encode('utf-8'))
+
+    def test_store(self):
+        mgr = FakeMgr(['a', 'b', 'c'],
+                      ['a', 'b', 'c'],
+                      [],
+                      {})
+        tps = TunedProfileStore(mgr)
+        save_str_p1 = 'tuned_profiles: ' + json.dumps({'p1': self.tspec1.to_json()})
+        tspec1_updated = self.tspec1.copy()
+        tspec1_updated.settings.update({'new-setting': 'new-value'})
+        save_str_p1_updated = 'tuned_profiles: ' + json.dumps({'p1': tspec1_updated.to_json()})
+        save_str_p1_updated_p2 = 'tuned_profiles: ' + \
+            json.dumps({'p1': tspec1_updated.to_json(), 'p2': self.tspec2.to_json()})
+        tspec2_updated = self.tspec2.copy()
+        tspec2_updated.settings.pop('something')
+        save_str_p1_updated_p2_updated = 'tuned_profiles: ' + \
+            json.dumps({'p1': tspec1_updated.to_json(), 'p2': tspec2_updated.to_json()})
+        save_str_p2_updated = 'tuned_profiles: ' + json.dumps({'p2': tspec2_updated.to_json()})
+        with pytest.raises(SaveError) as e:
+            tps.add_profile(self.tspec1)
+        assert str(e.value) == save_str_p1
+        assert 'p1' in tps
+        with pytest.raises(SaveError) as e:
+            tps.add_setting('p1', 'new-setting', 'new-value')
+        assert str(e.value) == save_str_p1_updated
+        assert 'new-setting' in tps.list_profiles()[0].settings
+        with pytest.raises(SaveError) as e:
+            tps.add_profile(self.tspec2)
+        assert str(e.value) == save_str_p1_updated_p2
+        assert 'p2' in tps
+        assert 'something' in tps.list_profiles()[1].settings
+        with pytest.raises(SaveError) as e:
+            tps.rm_setting('p2', 'something')
+        assert 'something' not in tps.list_profiles()[1].settings
+        assert str(e.value) == save_str_p1_updated_p2_updated
+        with pytest.raises(SaveError) as e:
+            tps.rm_profile('p1')
+        assert str(e.value) == save_str_p2_updated
+        assert 'p1' not in tps
+        assert 'p2' in tps
+        assert len(tps.list_profiles()) == 1
+        assert tps.list_profiles()[0].profile_name == 'p2'
+
+        cur_last_updated = tps.last_updated('p2')
+        new_last_updated = datetime_now()
+        assert cur_last_updated != new_last_updated
+        tps.set_last_updated('p2', new_last_updated)
+        assert tps.last_updated('p2') == new_last_updated
+
+        # check FakeMgr get_store func to see what is expected to be found in Key Store here
+        tps.load()
+        assert 'x' in tps
+        assert 'y' in tps
+        assert [p for p in tps.list_profiles() if p.profile_name == 'x'][0].settings == {'x': 'x'}
+        assert [p for p in tps.list_profiles() if p.profile_name == 'y'][0].settings == {'y': 'y'}
diff --git a/ceph/src/pybind/mgr/cephadm/tuned_profiles.py b/ceph/src/pybind/mgr/cephadm/tuned_profiles.py
new file mode 100644 (file)
index 0000000..3f61795
--- /dev/null
@@ -0,0 +1,80 @@
+import logging
+from typing import Dict, List, TYPE_CHECKING
+from ceph.utils import datetime_now
+from .schedule import HostAssignment
+from ceph.deployment.service_spec import ServiceSpec, TunedProfileSpec
+
+if TYPE_CHECKING:
+    from cephadm.module import CephadmOrchestrator
+
+logger = logging.getLogger(__name__)
+
+SYSCTL_DIR = '/etc/sysctl.d'
+
+
+class TunedProfileUtils():
+    def __init__(self, mgr: "CephadmOrchestrator") -> None:
+        self.mgr = mgr
+
+    def _profile_to_str(self, p: TunedProfileSpec) -> str:
+        p_str = f'# created by cephadm\n# tuned profile "{p.profile_name}"\n\n'
+        for k, v in p.settings.items():
+            p_str += f'{k} = {v}\n'
+        return p_str
+
+    def _write_all_tuned_profiles(self) -> None:
+        host_profile_mapping: Dict[str, List[Dict[str, str]]] = {}
+        for host in self.mgr.cache.get_hosts():
+            host_profile_mapping[host] = []
+
+        for profile in self.mgr.tuned_profiles.list_profiles():
+            p_str = self._profile_to_str(profile)
+            ha = HostAssignment(
+                spec=ServiceSpec(
+                    'crash', placement=profile.placement),
+                hosts=self.mgr.cache.get_schedulable_hosts(),
+                unreachable_hosts=self.mgr.cache.get_unreachable_hosts(),
+                draining_hosts=self.mgr.cache.get_draining_hosts(),
+                daemons=[],
+                networks=self.mgr.cache.networks,
+            )
+            all_slots, _, _ = ha.place()
+            for host in {s.hostname for s in all_slots}:
+                host_profile_mapping[host].append({profile.profile_name: p_str})
+
+        for host, profiles in host_profile_mapping.items():
+            self._remove_stray_tuned_profiles(host, profiles)
+            self._write_tuned_profiles(host, profiles)
+
+    def _remove_stray_tuned_profiles(self, host: str, profiles: List[Dict[str, str]]) -> None:
+        if host in self.mgr.offline_hosts:
+            return
+        cmd = ['ls', SYSCTL_DIR]
+        found_files = self.mgr.ssh.check_execute_command(host, cmd).split('\n')
+        found_files = [s.strip() for s in found_files]
+        updated = False
+        for file in found_files:
+            if '-cephadm-tuned-profile.conf' not in file:
+                continue
+            if not any(file.split('-')[0] in p.keys() for p in profiles):
+                logger.info(f'Removing stray tuned profile file {file}')
+                cmd = ['rm', '-f', f'{SYSCTL_DIR}/{file}']
+                self.mgr.ssh.check_execute_command(host, cmd)
+                updated = True
+        if updated:
+            self.mgr.ssh.check_execute_command(host, ['sysctl', '--system'])
+
+    def _write_tuned_profiles(self, host: str, profiles: List[Dict[str, str]]) -> None:
+        if host in self.mgr.offline_hosts:
+            return
+        updated = False
+        for p in profiles:
+            for profile_name, content in p.items():
+                if self.mgr.cache.host_needs_tuned_profile_update(host, profile_name):
+                    logger.info(f'Writing tuned profile {profile_name} to host {host}')
+                    profile_filename: str = f'{SYSCTL_DIR}/{profile_name}-cephadm-tuned-profile.conf'
+                    self.mgr.ssh.write_remote_file(host, profile_filename, content.encode('utf-8'))
+                    updated = True
+        if updated:
+            self.mgr.ssh.check_execute_command(host, ['sysctl', '--system'])
+        self.mgr.cache.last_tuned_profile_update[host] = datetime_now()
index d41b9286ec223c5c3889b539e465f647b7e30f21..c2cc0aff9775a7429d21eeb4672800d9f8d11439 100644 (file)
@@ -147,6 +147,7 @@ class CephadmUpgrade:
             r.target_image = self.target_image
             r.in_progress = True
             r.progress, r.services_complete = self._get_upgrade_info()
+            r.is_paused = self.upgrade_state.paused
 
             if self.upgrade_state.daemon_types is not None:
                 which_str = f'Upgrading daemons of type(s) {",".join(self.upgrade_state.daemon_types)}'
@@ -267,7 +268,11 @@ class CephadmUpgrade:
             "registry": reg_name,
             "bare_image": bare_image,
         }
-        ls = reg.get_tags(bare_image)
+
+        try:
+            ls = reg.get_tags(bare_image)
+        except ValueError as e:
+            raise OrchestratorError(f'{e}')
         if not tags:
             for t in ls:
                 if t[0] != 'v':
@@ -451,6 +456,7 @@ class CephadmUpgrade:
         if not self.upgrade_state.paused:
             return 'Upgrade to %s not paused' % self.target_image
         self.upgrade_state.paused = False
+        self.upgrade_state.error = ''
         self.mgr.log.info('Upgrade: Resumed upgrade to %s' % self.target_image)
         self._save_upgrade_state()
         self.mgr.event.set()
index 653474c6304dba59240d46618b6baffa677d03c4..d2eab9751fe07ea4cee4b0f126c38df416652844 100644 (file)
@@ -48,5 +48,13 @@ else:
         os.path.dirname(__file__),
         'frontend/dist'))
 
+    import rbd
+
+    # Api tests do not mock rbd as opposed to dashboard unit tests. Both
+    # use UNITTEST env variable.
+    if isinstance(rbd, mock.Mock):
+        rbd.RBD_MIRROR_IMAGE_MODE_JOURNAL = 0
+        rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT = 1
+
 # DO NOT REMOVE: required for ceph-mgr to load a module
 from .module import Module, StandbyModule  # noqa: F401
index 9be4c9ba9f7db9f46218de796b05bbe04975f1e8..8871004fed2df7ff0f6247da7816ad593e73232f 100644 (file)
@@ -32,7 +32,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 """
 
-from distutils.version import StrictVersion
+from pkg_resources import parse_version
 
 # The SSL code in CherryPy 3.5.0 is buggy.  It was fixed long ago,
 # but 3.5.0 is still shipping in major linux distributions
@@ -42,7 +42,7 @@ from distutils.version import StrictVersion
 def patch_http_connection_init(v):
     # It was fixed in 3.7.0.  Exact lower bound version is probably earlier,
     # but 3.5.0 is what this monkey patch is tested on.
-    if StrictVersion("3.5.0") <= v < StrictVersion("3.7.0"):
+    if parse_version("3.5.0") <= v < parse_version("3.7.0"):
         from cherrypy.wsgiserver.wsgiserver2 import CP_fileobject, HTTPConnection
 
         def fixed_init(hc_self, server, sock, makefile=CP_fileobject):
@@ -63,7 +63,7 @@ def patch_http_connection_init(v):
 def skip_wait_for_occupied_port(v):
     # the issue was fixed in 3.2.3. it's present in 3.2.2 (current version on
     # centos:7) and back to at least 3.0.0.
-    if StrictVersion("3.1.2") <= v < StrictVersion("3.2.3"):
+    if parse_version("3.1.2") <= v < parse_version("3.2.3"):
         # https://github.com/cherrypy/cherrypy/issues/1100
         from cherrypy.process import servers
         servers.wait_for_occupied_port = lambda host, port: None
@@ -71,7 +71,7 @@ def skip_wait_for_occupied_port(v):
 
 # cherrypy.wsgiserver was extracted wsgiserver into cheroot in cherrypy v9.0.0
 def patch_builtin_ssl_wrap(v, new_wrap):
-    if v < StrictVersion("9.0.0"):
+    if v < parse_version("9.0.0"):
         from cherrypy.wsgiserver.ssl_builtin import BuiltinSSLAdapter as builtin_ssl
     else:
         from cheroot.ssl.builtin import BuiltinSSLAdapter as builtin_ssl  # type: ignore
@@ -81,7 +81,7 @@ def patch_builtin_ssl_wrap(v, new_wrap):
 def accept_exceptions_from_builtin_ssl(v):
     # the fix was included by cheroot v5.2.0, which was included by cherrypy
     # 10.2.0.
-    if v < StrictVersion("10.2.0"):
+    if v < parse_version("10.2.0"):
         # see https://github.com/cherrypy/cheroot/pull/4
         import ssl
 
@@ -117,11 +117,11 @@ def accept_socket_error_0(v):
     # see https://github.com/cherrypy/cherrypy/issues/1618
     try:
         import cheroot
-        cheroot_version = cheroot.__version__
+        cheroot_version = parse_version(cheroot.__version__)
     except ImportError:
         pass
 
-    if v < StrictVersion("9.0.0") or cheroot_version < StrictVersion("6.5.5"):
+    if v < parse_version("9.0.0") or cheroot_version < parse_version("6.5.5"):
         generic_socket_error = OSError
 
         def accept_socket_error_0(func):
@@ -157,7 +157,7 @@ def patch_request_unique_id(v):
     Monkey-patching is preferred over alternatives as inheritance, as it'd break
     type checks (cherrypy/lib/cgtools.py: `isinstance(obj, _cprequest.Request)`)
     """
-    if v < StrictVersion('11.1.0'):
+    if v < parse_version('11.1.0'):
         import uuid
         from functools import update_wrapper
 
@@ -191,8 +191,9 @@ def patch_request_unique_id(v):
 
 
 def patch_cherrypy(v):
-    patch_http_connection_init(v)
-    skip_wait_for_occupied_port(v)
-    accept_exceptions_from_builtin_ssl(v)
-    accept_socket_error_0(v)
-    patch_request_unique_id(v)
+    ver = parse_version(v)
+    patch_http_connection_init(ver)
+    skip_wait_for_occupied_port(ver)
+    accept_exceptions_from_builtin_ssl(ver)
+    accept_socket_error_0(ver)
+    patch_request_unique_id(ver)
index a0e997587259d70679adeab1b98c65038a4e2b89..5a3fa4349c37144104887ed0e676199fe5ae82d4 100755 (executable)
@@ -11,10 +11,13 @@ mkdir -p /etc/ceph
 mon_ip=$(ifconfig eth0  | grep 'inet ' | awk '{ print $2}')
 
 bootstrap_extra_options='--allow-fqdn-hostname --dashboard-password-noupdate'
-bootstrap_extra_options_not_expanded='--skip-monitoring-stack'
-{% if expanded_cluster is not defined %}
-  bootstrap_extra_options+=" ${bootstrap_extra_options_not_expanded}"
-{% endif %}
+
+# commenting the below lines. Uncomment it when any extra options are
+# needed for the bootstrap.
+# bootstrap_extra_options_not_expanded=''
+# {% if expanded_cluster is not defined %}
+#   bootstrap_extra_options+=" ${bootstrap_extra_options_not_expanded}"
+# {% endif %}
 
 cephadm bootstrap --mon-ip $mon_ip --initial-dashboard-password {{ admin_password }} --shared_ceph_folder /mnt/{{ ceph_dev_folder }} ${bootstrap_extra_options}
 
index e109297160892ce84a465bcba854e71775db967d..063b544f49148290cb80d45b44c86e094d509fcd 100755 (executable)
@@ -24,7 +24,7 @@ export CYPRESS_BASE_URL CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD
 cypress_run () {
     local specs="$1"
     local timeout="$2"
-    local override_config="ignoreTestFiles=*.po.ts,retries=0,testFiles=${specs}"
+    local override_config="ignoreTestFiles=*.po.ts,retries=0,testFiles=${specs},chromeWebSecurity=false"
     if [[ -n "$timeout" ]]; then
         override_config="${override_config},defaultCommandTimeout=${timeout}"
     fi
@@ -38,4 +38,13 @@ cypress_run () {
 
 cd ${CEPH_DEV_FOLDER}/src/pybind/mgr/dashboard/frontend
 
-cypress_run "orchestrator/workflow/*-spec.ts"
+# check if the prometheus daemon is running
+# before starting the e2e tests
+
+PROMETHEUS_RUNNING_COUNT=$(kcli ssh -u root ceph-node-00 'cephadm shell "ceph orch ls --service_name=prometheus --format=json"' | jq -r '.[] | .status.running')
+while [[ $PROMETHEUS_RUNNING_COUNT -lt 1 ]]; do
+    PROMETHEUS_RUNNING_COUNT=$(kcli ssh -u root ceph-node-00 'cephadm shell "ceph orch ls --service_name=prometheus --format=json"' | jq -r '.[] | .status.running')
+done
+
+cypress_run ["orchestrator/workflow/*.feature, orchestrator/workflow/*-spec.ts"]
+cypress_run "orchestrator/grafana/*.feature"
index 74ebb1c5f622af980e3583f4f1eddeb6f70e6294..26fbd8a7c4b699f194280d2075e845ad203430c3 100755 (executable)
@@ -5,31 +5,36 @@ set -eEx
 cleanup() {
     set +x
     if [[ -n "$JENKINS_HOME" ]]; then
-        printf "\n\nStarting cleanup...\n\n"
+        echo "Starting cleanup..."
         kcli delete plan -y ceph || true
         kcli delete network ceph-dashboard -y
         docker container prune -f
-        printf "\n\nCleanup completed.\n\n"
+        echo "Cleanup completed."
     fi
 }
 
 on_error() {
     set +x
     if [ "$1" != "0" ]; then
-        printf "\n\nERROR $1 thrown on line $2\n\n"
-        printf "\n\nCollecting info...\n\n"
-        printf "\n\nDisplaying MGR logs:\n\n"
-        kcli ssh -u root -- ceph-node-00 'cephadm logs -n \$(cephadm ls | grep -Eo "mgr\.ceph[0-9a-z.-]+" | head -n 1) -- --no-tail --no-pager'
-        for vm_id in 0 1 2
+        echo "ERROR $1 thrown on line $2"
+        echo
+        echo "Collecting info..."
+        echo
+        echo "Saving MGR logs:"
+        echo
+        mkdir -p ${CEPH_DEV_FOLDER}/logs
+        kcli ssh -u root -- ceph-node-00 'cephadm logs -n \$(cephadm ls | grep -Eo "mgr\.ceph[0-9a-z.-]+" | head -n 1) -- --no-tail --no-pager' > ${CEPH_DEV_FOLDER}/logs/mgr.cephadm.log
+        for vm_id in {0..3}
         do
             local vm="ceph-node-0${vm_id}"
-            printf "\n\nDisplaying journalctl from VM ${vm}:\n\n"
-            kcli ssh -u root -- ${vm} 'journalctl --no-tail --no-pager -t cloud-init' || true
-            printf "\n\nEnd of journalctl from VM ${vm}\n\n"
-            printf "\n\nDisplaying container logs:\n\n"
-            kcli ssh -u root -- ${vm} 'podman logs --names --since 30s \$(podman ps -aq)' || true
+            echo "Saving journalctl from VM ${vm}:"
+            echo
+            kcli ssh -u root -- ${vm} 'journalctl --no-tail --no-pager -t cloud-init' > ${CEPH_DEV_FOLDER}/logs/journal.ceph-node-0${vm_id}.log || true
+            echo "Saving container logs:"
+            echo
+            kcli ssh -u root -- ${vm} 'podman logs --names --since 30s \$(podman ps -aq)' > ${CEPH_DEV_FOLDER}/logs/container.ceph-node-0${vm_id}.log || true
         done
-        printf "\n\nTEST FAILED.\n\n"
+        echo "TEST FAILED."
     fi
 }
 
index 75af032326c093eff683356e9b45c50d0c8f98ec..00e1aad0164f9341ab5bbbef094e2429312855d9 100644 (file)
@@ -1,5 +1,5 @@
 CherryPy==13.1.0
-more-itertools==4.1.0
+more-itertools==8.14.0
 PyJWT==2.0.1
 bcrypt==3.1.4
 python3-saml==1.4.1
index b79b53ca86a3132e0d8092316d6a0d7f66515840..f911cf3888fa07b4263600dbce2815a639b05ee2 100644 (file)
@@ -14,7 +14,6 @@ import cherrypy
 from cherrypy.lib.static import serve_file
 
 from .. import mgr
-from ..services.custom_banner import get_login_banner_mgr
 from . import BaseController, Endpoint, Proxy, Router, UIRouter
 
 logger = logging.getLogger("controllers.home")
@@ -146,4 +145,4 @@ class LangsController(BaseController, LanguageMixin):
 class LoginController(BaseController):
     @Endpoint('GET', 'custom_banner')
     def __call__(self):
-        return get_login_banner_mgr()
+        return mgr.get_store('custom_login_banner')
index d14b5402863c10aa59988208e238872e249e50b7..3c177511c1da9f9769c05d4147ef2f0f98eedb5f 100644 (file)
@@ -81,31 +81,8 @@ def NfsTask(name, metadata, wait_for):  # noqa: N802
     return composed_decorator
 
 
-@APIRouter('/nfs-ganesha', Scope.NFS_GANESHA)
-@APIDoc("NFS-Ganesha Cluster Management API", "NFS-Ganesha")
-class NFSGanesha(RESTController):
-
-    @EndpointDoc("Status of NFS-Ganesha management feature",
-                 responses={200: {
-                     'available': (bool, "Is API available?"),
-                     'message': (str, "Error message")
-                 }})
-    @Endpoint()
-    @ReadPermission
-    def status(self):
-        status = {'available': True, 'message': None}
-        try:
-            mgr.remote('nfs', 'cluster_ls')
-        except (ImportError, RuntimeError) as error:
-            logger.exception(error)
-            status['available'] = False
-            status['message'] = str(error)  # type: ignore
-
-        return status
-
-
 @APIRouter('/nfs-ganesha/cluster', Scope.NFS_GANESHA)
-@APIDoc(group="NFS-Ganesha")
+@APIDoc("NFS-Ganesha Cluster Management API", "NFS-Ganesha")
 class NFSGaneshaCluster(RESTController):
     @ReadPermission
     @RESTController.MethodMap(version=APIVersion.EXPERIMENTAL)
@@ -285,3 +262,16 @@ class NFSGaneshaUi(BaseController):
     @ReadPermission
     def filesystems(self):
         return CephFS.list_filesystems()
+
+    @Endpoint()
+    @ReadPermission
+    def status(self):
+        status = {'available': True, 'message': None}
+        try:
+            mgr.remote('nfs', 'cluster_ls')
+        except (ImportError, RuntimeError) as error:
+            logger.exception(error)
+            status['available'] = False
+            status['message'] = str(error)  # type: ignore
+
+        return status
index b93b850e022ce046e8fbb99e4738755b0954a3cd..51d0a459dab462f62bccf79cc19999c952c76781 100644 (file)
@@ -4,7 +4,7 @@ from functools import wraps
 
 from ..exceptions import DashboardException
 from ..services.orchestrator import OrchClient
-from . import APIDoc, APIRouter, Endpoint, EndpointDoc, ReadPermission, RESTController
+from . import APIDoc, Endpoint, EndpointDoc, ReadPermission, RESTController, UIRouter
 
 STATUS_SCHEMA = {
     "available": (bool, "Orchestrator status"),
@@ -35,7 +35,7 @@ def raise_if_no_orchestrator(features=None):
     return inner
 
 
-@APIRouter('/orchestrator')
+@UIRouter('/orchestrator')
 @APIDoc("Orchestrator Management API", "Orchestrator")
 class Orchestrator(RESTController):
 
index ceebb5acdafbfde4129831fdbe34ee64deddff6d..9c903ed672eec997627e79952fcbe169cb8f0634 100644 (file)
@@ -14,10 +14,11 @@ from ..security import Scope
 from ..services.ceph_service import CephService, SendCommandError
 from ..services.exception import handle_orchestrator_error, handle_send_command_error
 from ..services.orchestrator import OrchClient, OrchFeature
+from ..services.osd import HostStorageSummary, OsdDeploymentOptions
 from ..tools import str_to_bool
 from . import APIDoc, APIRouter, CreatePermission, DeletePermission, Endpoint, \
-    EndpointDoc, ReadPermission, RESTController, Task, UpdatePermission, \
-    allow_empty_body
+    EndpointDoc, ReadPermission, RESTController, Task, UIRouter, \
+    UpdatePermission, allow_empty_body
 from ._version import APIVersion
 from .orchestrator import raise_if_no_orchestrator
 
@@ -47,6 +48,72 @@ EXPORT_INDIV_FLAGS_GET_SCHEMA = {
 }
 
 
+class DeploymentOptions:
+    def __init__(self):
+        self.options = {
+            OsdDeploymentOptions.COST_CAPACITY:
+                HostStorageSummary(OsdDeploymentOptions.COST_CAPACITY,
+                                   title='Cost/Capacity-optimized',
+                                   desc='All the available HDDs are selected'),
+            OsdDeploymentOptions.THROUGHPUT:
+                HostStorageSummary(OsdDeploymentOptions.THROUGHPUT,
+                                   title='Throughput-optimized',
+                                   desc="HDDs/SSDs are selected for data"
+                                   "devices and SSDs/NVMes for DB/WAL devices"),
+            OsdDeploymentOptions.IOPS:
+                HostStorageSummary(OsdDeploymentOptions.IOPS,
+                                   title='IOPS-optimized',
+                                   desc='All the available NVMes are selected'),
+        }
+        self.recommended_option = None
+
+    def as_dict(self):
+        return {
+            'options': {k: v.as_dict() for k, v in self.options.items()},
+            'recommended_option': self.recommended_option
+        }
+
+
+predefined_drive_groups = {
+    OsdDeploymentOptions.COST_CAPACITY: {
+        'service_type': 'osd',
+        'service_id': 'cost_capacity',
+        'placement': {
+            'host_pattern': '*'
+        },
+        'data_devices': {
+            'rotational': 1
+        },
+        'encrypted': False
+    },
+    OsdDeploymentOptions.THROUGHPUT: {
+        'service_type': 'osd',
+        'service_id': 'throughput_optimized',
+        'placement': {
+            'host_pattern': '*'
+        },
+        'data_devices': {
+            'rotational': 1
+        },
+        'db_devices': {
+            'rotational': 0
+        },
+        'encrypted': False
+    },
+    OsdDeploymentOptions.IOPS: {
+        'service_type': 'osd',
+        'service_id': 'iops_optimized',
+        'placement': {
+            'host_pattern': '*'
+        },
+        'data_devices': {
+            'rotational': 0
+        },
+        'encrypted': False
+    },
+}
+
+
 def osd_task(name, metadata, wait_for=2.0):
     return Task("osd/{}".format(name), metadata, wait_for)
 
@@ -291,6 +358,18 @@ class Osd(RESTController):
             id=int(svc_id),
             weight=float(weight))
 
+    def _create_predefined_drive_group(self, data):
+        orch = OrchClient.instance()
+        option = OsdDeploymentOptions(data[0]['option'])
+        if option in list(OsdDeploymentOptions):
+            try:
+                predefined_drive_groups[
+                    option]['encrypted'] = data[0]['encrypted']
+                orch.osds.create([DriveGroupSpec.from_json(
+                    predefined_drive_groups[option])])
+            except (ValueError, TypeError, DriveGroupValidationError) as e:
+                raise DashboardException(e, component='osd')
+
     def _create_bare(self, data):
         """Create a OSD container that has no associated device.
 
@@ -330,6 +409,8 @@ class Osd(RESTController):
             return self._create_bare(data)
         if method == 'drive_groups':
             return self._create_with_drive_groups(data)
+        if method == 'predefined':
+            return self._create_predefined_drive_group(data)
         raise DashboardException(
             component='osd', http_status_code=400, msg='Unknown method: {}'.format(method))
 
@@ -405,6 +486,44 @@ class Osd(RESTController):
         return CephService.send_command('mon', 'device ls-by-daemon', who='osd.{}'.format(svc_id))
 
 
+@UIRouter('/osd', Scope.OSD)
+@APIDoc("Dashboard UI helper function; not part of the public API", "OsdUI")
+class OsdUi(Osd):
+    @Endpoint('GET')
+    @ReadPermission
+    @raise_if_no_orchestrator([OrchFeature.DAEMON_LIST])
+    @handle_orchestrator_error('host')
+    def deployment_options(self):
+        orch = OrchClient.instance()
+        hdds = 0
+        ssds = 0
+        nvmes = 0
+        res = DeploymentOptions()
+
+        for inventory_host in orch.inventory.list(hosts=None, refresh=True):
+            for device in inventory_host.devices.devices:
+                if device.available:
+                    if device.human_readable_type == 'hdd':
+                        hdds += 1
+                    # SSDs and NVMe are both counted as 'ssd'
+                    # so differentiating nvme using its path
+                    elif '/dev/nvme' in device.path:
+                        nvmes += 1
+                    else:
+                        ssds += 1
+
+        if hdds:
+            res.options[OsdDeploymentOptions.COST_CAPACITY].available = True
+            res.recommended_option = OsdDeploymentOptions.COST_CAPACITY
+        if hdds and ssds:
+            res.options[OsdDeploymentOptions.THROUGHPUT].available = True
+            res.recommended_option = OsdDeploymentOptions.THROUGHPUT
+        if nvmes:
+            res.options[OsdDeploymentOptions.IOPS].available = True
+
+        return res.as_dict()
+
+
 @APIRouter('/osd/flags', Scope.OSD)
 @APIDoc(group='OSD')
 class OsdFlagsController(RESTController):
index 386d584404c88ce64ab781c043eecfcc7db572cf..f3aa6d0a4bc30673cdfff6f7aa185092c634fd2c 100644 (file)
@@ -343,3 +343,9 @@ class PoolUi(Pool):
             "used_profiles": used_profiles,
             'nodes': mgr.get('osd_map_tree')['nodes']
         }
+
+
+class RBDPool(Pool):
+    def create(self, pool='rbd-mirror'):  # pylint: disable=arguments-differ
+        super().create(pool, pg_num=1, pool_type='replicated',
+                       rule_name='replicated_rule', application_metadata=['rbd'])
index f1dae7f1a2fa2d89b9b3e3e8176ab939343e7a69..af90f0d60088866045729debcedda8afa2239a24 100644 (file)
@@ -51,7 +51,12 @@ class PrometheusRESTController(RESTController):
                 "Could not reach {}'s API on {}".format(api_name, base_url),
                 http_status_code=404,
                 component='prometheus')
-        content = json.loads(response.content)
+        try:
+            content = json.loads(response.content, strict=False)
+        except json.JSONDecodeError as e:
+            raise DashboardException(
+                "Error parsing Prometheus Alertmanager response: {}".format(e.msg),
+                component='prometheus')
         if content['status'] == 'success':
             if 'data' in content:
                 return content['data']
index 252ddfc61c1ba36845a2c38f5e6ee821027966f6..c20ee8ca282b375220b5b1ae2f56601eae434359 100644 (file)
@@ -7,6 +7,7 @@ import math
 from datetime import datetime
 from functools import partial
 
+import cherrypy
 import rbd
 
 from .. import mgr
@@ -14,17 +15,19 @@ from ..exceptions import DashboardException
 from ..security import Scope
 from ..services.ceph_service import CephService
 from ..services.exception import handle_rados_error, handle_rbd_error, serialize_dashboard_exception
-from ..services.rbd import RbdConfiguration, RbdService, RbdSnapshotService, \
-    format_bitmask, format_features, parse_image_spec, rbd_call, \
+from ..services.rbd import MIRROR_IMAGE_MODE, RbdConfiguration, \
+    RbdMirroringService, RbdService, RbdSnapshotService, format_bitmask, \
+    format_features, get_image_spec, parse_image_spec, rbd_call, \
     rbd_image_call
 from ..tools import ViewCache, str_to_bool
-from . import APIDoc, APIRouter, CreatePermission, DeletePermission, \
-    EndpointDoc, RESTController, Task, UpdatePermission, allow_empty_body
+from . import APIDoc, APIRouter, BaseController, CreatePermission, \
+    DeletePermission, Endpoint, EndpointDoc, ReadPermission, RESTController, \
+    Task, UIRouter, UpdatePermission, allow_empty_body
+from ._version import APIVersion
 
 logger = logging.getLogger(__name__)
 
 RBD_SCHEMA = ([{
-    "status": (int, 'Status of the image'),
     "value": ([str], ''),
     "pool_name": (str, 'pool name')
 }])
@@ -76,31 +79,41 @@ class Rbd(RESTController):
     ALLOW_DISABLE_FEATURES = {"exclusive-lock", "object-map", "fast-diff", "deep-flatten",
                               "journaling"}
 
-    def _rbd_list(self, pool_name=None):
+    DEFAULT_LIMIT = 5
+
+    def _rbd_list(self, pool_name=None, offset=0, limit=DEFAULT_LIMIT, search='', sort=''):
         if pool_name:
             pools = [pool_name]
         else:
             pools = [p['pool_name'] for p in CephService.get_pool_list('rbd')]
 
-        result = []
-        for pool in pools:
-            # pylint: disable=unbalanced-tuple-unpacking
-            status, value = RbdService.rbd_pool_list(pool)
-            for i, image in enumerate(value):
-                value[i]['configuration'] = RbdConfiguration(
-                    pool, image['namespace'], image['name']).list()
-            result.append({'status': status, 'value': value, 'pool_name': pool})
-        return result
+        images, num_total_images = RbdService.rbd_pool_list(
+            pools, offset=offset, limit=limit, search=search, sort=sort)
+        cherrypy.response.headers['X-Total-Count'] = num_total_images
+        pool_result = {}
+        for i, image in enumerate(images):
+            pool = image['pool_name']
+            if pool not in pool_result:
+                pool_result[pool] = {'value': [], 'pool_name': image['pool_name']}
+            pool_result[pool]['value'].append(image)
+
+            images[i]['configuration'] = RbdConfiguration(
+                pool, image['namespace'], image['name']).list()
+        return list(pool_result.values())
 
     @handle_rbd_error()
     @handle_rados_error('pool')
     @EndpointDoc("Display Rbd Images",
                  parameters={
                      'pool_name': (str, 'Pool Name'),
+                     'limit': (int, 'limit'),
+                     'offset': (int, 'offset'),
                  },
                  responses={200: RBD_SCHEMA})
-    def list(self, pool_name=None):
-        return self._rbd_list(pool_name)
+    @RESTController.MethodMap(version=APIVersion(2, 0))  # type: ignore
+    def list(self, pool_name=None, offset: int = 0, limit: int = DEFAULT_LIMIT,
+             search: str = '', sort: str = ''):
+        return self._rbd_list(pool_name, offset=offset, limit=limit, search=search, sort=sort)
 
     @handle_rbd_error()
     @handle_rados_error('pool')
@@ -109,8 +122,9 @@ class Rbd(RESTController):
 
     @RbdTask('create',
              {'pool_name': '{pool_name}', 'namespace': '{namespace}', 'image_name': '{name}'}, 2.0)
-    def create(self, name, pool_name, size, namespace=None, obj_size=None, features=None,
-               stripe_unit=None, stripe_count=None, data_pool=None, configuration=None):
+    def create(self, name, pool_name, size, namespace=None, schedule_interval='',
+               obj_size=None, features=None, stripe_unit=None, stripe_count=None,
+               data_pool=None, configuration=None, mirror_mode=None):
 
         size = int(size)
 
@@ -132,6 +146,13 @@ class Rbd(RESTController):
                              image_name=name).set_configuration(configuration)
 
         rbd_call(pool_name, namespace, _create)
+        if mirror_mode:
+            RbdMirroringService.enable_image(name, pool_name, namespace,
+                                             MIRROR_IMAGE_MODE[mirror_mode])
+
+        if schedule_interval:
+            image_spec = get_image_spec(pool_name, namespace, name)
+            RbdMirroringService.snapshot_schedule_add(image_spec, schedule_interval)
 
     @RbdTask('delete', ['{image_spec}'], 2.0)
     def delete(self, image_spec):
@@ -146,7 +167,11 @@ class Rbd(RESTController):
         return rbd_call(pool_name, namespace, rbd_inst.remove, image_name)
 
     @RbdTask('edit', ['{image_spec}', '{name}'], 4.0)
-    def set(self, image_spec, name=None, size=None, features=None, configuration=None):
+    def set(self, image_spec, name=None, size=None, features=None,
+            configuration=None, enable_mirror=None, primary=None,
+            resync=False, mirror_mode=None, schedule_interval='',
+            remove_scheduling=False):
+
         pool_name, namespace, image_name = parse_image_spec(image_spec)
 
         def _edit(ioctx, image):
@@ -182,6 +207,32 @@ class Rbd(RESTController):
             RbdConfiguration(pool_ioctx=ioctx, image_name=image_name).set_configuration(
                 configuration)
 
+            mirror_image_info = image.mirror_image_get_info()
+            if enable_mirror and mirror_image_info['state'] == rbd.RBD_MIRROR_IMAGE_DISABLED:
+                RbdMirroringService.enable_image(
+                    image_name, pool_name, namespace,
+                    MIRROR_IMAGE_MODE[mirror_mode])
+            elif (enable_mirror is False
+                  and mirror_image_info['state'] == rbd.RBD_MIRROR_IMAGE_ENABLED):
+                RbdMirroringService.disable_image(
+                    image_name, pool_name, namespace)
+
+            if primary and not mirror_image_info['primary']:
+                RbdMirroringService.promote_image(
+                    image_name, pool_name, namespace)
+            elif primary is False and mirror_image_info['primary']:
+                RbdMirroringService.demote_image(
+                    image_name, pool_name, namespace)
+
+            if resync:
+                RbdMirroringService.resync_image(image_name, pool_name, namespace)
+
+            if schedule_interval:
+                RbdMirroringService.snapshot_schedule_add(image_spec, schedule_interval)
+
+            if remove_scheduling:
+                RbdMirroringService.snapshot_schedule_remove(image_spec)
+
         return rbd_image_call(pool_name, namespace, image_name, _edit)
 
     @RbdTask('copy',
@@ -263,6 +314,20 @@ class Rbd(RESTController):
         return rbd_call(pool_name, namespace, rbd_inst.trash_move, image_name, delay)
 
 
+@UIRouter('/block/rbd')
+class RbdStatus(BaseController):
+    @EndpointDoc("Display RBD Image feature status")
+    @Endpoint()
+    @ReadPermission
+    def status(self):
+        status = {'available': True, 'message': None}
+        if not CephService.get_pool_list('rbd'):
+            status['available'] = False
+            status['message'] = 'No RBD pools in the cluster. Please create a pool '\
+                                'with the "rbd" application label.'  # type: ignore
+        return status
+
+
 @APIRouter('/block/image/{image_spec}/snap', Scope.RBD_IMAGE)
 @APIDoc("RBD Snapshot Management API", "RbdSnapshot")
 class RbdSnapshot(RESTController):
@@ -275,7 +340,13 @@ class RbdSnapshot(RESTController):
         pool_name, namespace, image_name = parse_image_spec(image_spec)
 
         def _create_snapshot(ioctx, img, snapshot_name):
-            img.create_snap(snapshot_name)
+            mirror_info = img.mirror_image_get_info()
+            mirror_mode = img.mirror_image_get_mode()
+            if (mirror_info['state'] == rbd.RBD_MIRROR_IMAGE_ENABLED
+                    and mirror_mode == rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT):
+                img.mirror_image_create_snapshot()
+            else:
+                img.create_snap(snapshot_name)
 
         return rbd_image_call(pool_name, namespace, image_name, _create_snapshot,
                               snapshot_name)
@@ -467,7 +538,7 @@ class RbdNamespace(RESTController):
     def delete(self, pool_name, namespace):
         with mgr.rados.open_ioctx(pool_name) as ioctx:
             # pylint: disable=unbalanced-tuple-unpacking
-            _, images = RbdService.rbd_pool_list(pool_name, namespace)
+            images, _ = RbdService.rbd_pool_list([pool_name], namespace=namespace)
             if images:
                 raise DashboardException(
                     msg='Namespace contains images which must be deleted first',
@@ -481,7 +552,7 @@ class RbdNamespace(RESTController):
             namespaces = self.rbd_inst.namespace_list(ioctx)
             for namespace in namespaces:
                 # pylint: disable=unbalanced-tuple-unpacking
-                _, images = RbdService.rbd_pool_list(pool_name, namespace)
+                images, _ = RbdService.rbd_pool_list([pool_name], namespace=namespace)
                 result.append({
                     'namespace': namespace,
                     'num_images': len(images) if images else 0
index f5bda8c8926f23d870291fdf6bf4af1f1f9001da..17ef0b88b2a362e6fa9b94dd4cedb100fcfcbc31 100644 (file)
@@ -4,19 +4,23 @@ import json
 import logging
 import re
 from functools import partial
-from typing import no_type_check
+from typing import NamedTuple, Optional, no_type_check
 
 import cherrypy
 import rbd
 
 from .. import mgr
+from ..controllers.pool import RBDPool
+from ..controllers.service import Service
 from ..security import Scope
 from ..services.ceph_service import CephService
 from ..services.exception import handle_rados_error, handle_rbd_error, serialize_dashboard_exception
+from ..services.orchestrator import OrchClient
 from ..services.rbd import rbd_call
 from ..tools import ViewCache
-from . import APIDoc, APIRouter, BaseController, Endpoint, EndpointDoc, \
-    ReadPermission, RESTController, Task, UpdatePermission, allow_empty_body
+from . import APIDoc, APIRouter, BaseController, CreatePermission, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, Task, UIRouter, \
+    UpdatePermission, allow_empty_body
 
 logger = logging.getLogger('controllers.rbd_mirror')
 
@@ -199,6 +203,13 @@ def get_daemons_and_pools():  # pylint: disable=R0915
     }
 
 
+class ReplayingData(NamedTuple):
+    bytes_per_second: Optional[int] = None
+    seconds_until_synced: Optional[int] = None
+    syncing_percent: Optional[float] = None
+    entries_behind_primary: Optional[int] = None
+
+
 @ViewCache()
 @no_type_check
 def _get_pool_datum(pool_name):
@@ -228,15 +239,17 @@ def _get_pool_datum(pool_name):
             'state': 'Error'
         },
         rbd.MIRROR_IMAGE_STATUS_STATE_SYNCING: {
-            'health': 'syncing'
+            'health': 'syncing',
+            'state_color': 'success',
+            'state': 'Syncing'
         },
         rbd.MIRROR_IMAGE_STATUS_STATE_STARTING_REPLAY: {
-            'health': 'ok',
+            'health': 'syncing',
             'state_color': 'success',
             'state': 'Starting'
         },
         rbd.MIRROR_IMAGE_STATUS_STATE_REPLAYING: {
-            'health': 'ok',
+            'health': 'syncing',
             'state_color': 'success',
             'state': 'Replaying'
         },
@@ -248,8 +261,9 @@ def _get_pool_datum(pool_name):
         rbd.MIRROR_IMAGE_STATUS_STATE_STOPPED: {
             'health': 'ok',
             'state_color': 'info',
-            'state': 'Primary'
+            'state': 'Stopped'
         }
+
     }
 
     rbdctx = rbd.RBD()
@@ -271,6 +285,29 @@ def _get_pool_datum(pool_name):
     return data
 
 
+def _update_syncing_image_data(mirror_image, image):
+    if mirror_image['state'] == 'Replaying':
+        p = re.compile("replaying, ({.*})")
+        replaying_data = p.findall(mirror_image['description'])
+        assert len(replaying_data) == 1
+        replaying_data = json.loads(replaying_data[0])
+        if 'replay_state' in replaying_data and replaying_data['replay_state'] == 'idle':
+            image.update({
+                'state_color': 'info',
+                'state': 'Idle'
+            })
+        for field in ReplayingData._fields:
+            try:
+                image[field] = replaying_data[field]
+            except KeyError:
+                pass
+    else:
+        p = re.compile("bootstrapping, IMAGE_COPY/COPY_OBJECT (.*)%")
+        image.update({
+            'progress': (p.findall(mirror_image['description']) or [0])[0]
+        })
+
+
 @ViewCache()
 def _get_content_data():  # pylint: disable=R0914
     pool_names = [pool['pool_name'] for pool in CephService.get_pool_list('rbd')
@@ -296,26 +333,21 @@ def _get_content_data():  # pylint: disable=R0914
         for mirror_image in mirror_images:
             image = {
                 'pool_name': pool_name,
-                'name': mirror_image['name']
+                'name': mirror_image['name'],
+                'state_color': mirror_image['state_color'],
+                'state': mirror_image['state']
             }
 
             if mirror_image['health'] == 'ok':
                 image.update({
-                    'state_color': mirror_image['state_color'],
-                    'state': mirror_image['state'],
                     'description': mirror_image['description']
                 })
                 image_ready.append(image)
             elif mirror_image['health'] == 'syncing':
-                p = re.compile("bootstrapping, IMAGE_COPY/COPY_OBJECT (.*)%")
-                image.update({
-                    'progress': (p.findall(mirror_image['description']) or [0])[0]
-                })
+                _update_syncing_image_data(mirror_image, image)
                 image_syncing.append(image)
             else:
                 image.update({
-                    'state_color': mirror_image['state_color'],
-                    'state': mirror_image['state'],
                     'description': mirror_image['description']
                 })
                 image_error.append(image)
@@ -574,3 +606,41 @@ class RbdMirroringPoolPeer(RESTController):
             rbd.RBD().mirror_peer_set_attributes(ioctx, peer_uuid, attributes)
 
         _reset_view_cache()
+
+
+@UIRouter('/block/mirroring', Scope.RBD_MIRRORING)
+class RbdMirroringStatus(BaseController):
+    @EndpointDoc('Display RBD Mirroring Status')
+    @Endpoint()
+    @ReadPermission
+    def status(self):
+        status = {'available': True, 'message': None}
+        orch_status = OrchClient.instance().status()
+
+        # if the orch is not available we can't create the service
+        # using dashboard.
+        if not orch_status['available']:
+            return status
+        if not CephService.get_service_list('rbd-mirror') or not CephService.get_pool_list('rbd'):
+            status['available'] = False
+            status['message'] = 'RBD mirroring is not configured'  # type: ignore
+        return status
+
+    @Endpoint('POST')
+    @EndpointDoc('Configure RBD Mirroring')
+    @CreatePermission
+    def configure(self):
+        rbd_pool = RBDPool()
+        service = Service()
+
+        service_spec = {
+            'service_type': 'rbd-mirror',
+            'placement': {},
+            'unmanaged': False
+        }
+
+        if not CephService.get_service_list('rbd-mirror'):
+            service.create(service_spec, 'rbd-mirror')
+
+        if not CephService.get_pool_list('rbd'):
+            rbd_pool.create()
index 713294d8f977a96d94602aea322fac855130dada..f42b91a0e940e6343fcc26b36ea71ea7d12d11a9 100644 (file)
@@ -13,7 +13,7 @@ from ..services.ceph_service import CephService
 from ..services.rgw_client import NoRgwDaemonsException, RgwClient
 from ..tools import json_str_to_object, str_to_bool
 from . import APIDoc, APIRouter, BaseController, Endpoint, EndpointDoc, \
-    ReadPermission, RESTController, allow_empty_body
+    ReadPermission, RESTController, UIRouter, allow_empty_body
 from ._version import APIVersion
 
 try:
@@ -41,7 +41,7 @@ RGW_USER_SCHEMA = {
 }
 
 
-@APIRouter('/rgw', Scope.RGW)
+@UIRouter('/rgw', Scope.RGW)
 @APIDoc("RGW Management API", "Rgw")
 class Rgw(BaseController):
     @Endpoint()
index d3ba882a1d92633ab143fc86df0008f0751e6657..afe684302b160d4ce962595b8fb241c9635800b4 100644 (file)
@@ -3,12 +3,11 @@ from typing import Dict, List, Optional
 import cherrypy
 from ceph.deployment.service_spec import ServiceSpec
 
-from ..exceptions import DashboardException
 from ..security import Scope
-from ..services.exception import handle_orchestrator_error
+from ..services.exception import handle_custom_error, handle_orchestrator_error
 from ..services.orchestrator import OrchClient, OrchFeature
 from . import APIDoc, APIRouter, CreatePermission, DeletePermission, Endpoint, \
-    ReadPermission, RESTController, Task
+    ReadPermission, RESTController, Task, UpdatePermission
 from .orchestrator import raise_if_no_orchestrator
 
 
@@ -50,6 +49,7 @@ class Service(RESTController):
         return [d.to_dict() for d in daemons]
 
     @CreatePermission
+    @handle_custom_error('service', exceptions=(ValueError, TypeError))
     @raise_if_no_orchestrator([OrchFeature.SERVICE_CREATE])
     @handle_orchestrator_error('service')
     @service_task('create', {'service_name': '{service_name}'})
@@ -59,11 +59,22 @@ class Service(RESTController):
         :param service_name: The service name, e.g. 'alertmanager'.
         :return: None
         """
-        try:
-            orch = OrchClient.instance()
-            orch.services.apply(service_spec)
-        except (ValueError, TypeError) as e:
-            raise DashboardException(e, component='service')
+
+        OrchClient.instance().services.apply(service_spec, no_overwrite=True)
+
+    @UpdatePermission
+    @handle_custom_error('service', exceptions=(ValueError, TypeError))
+    @raise_if_no_orchestrator([OrchFeature.SERVICE_CREATE])
+    @handle_orchestrator_error('service')
+    @service_task('edit', {'service_name': '{service_name}'})
+    def set(self, service_spec: Dict, service_name: str):  # pylint: disable=W0613
+        """
+        :param service_spec: The service specification as JSON.
+        :param service_name: The service name, e.g. 'alertmanager'.
+        :return: None
+        """
+
+        OrchClient.instance().services.apply(service_spec, no_overwrite=False)
 
     @DeletePermission
     @raise_if_no_orchestrator([OrchFeature.SERVICE_DELETE])
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/.gherkin-lintrc b/ceph/src/pybind/mgr/dashboard/frontend/.gherkin-lintrc
new file mode 100644 (file)
index 0000000..706b93b
--- /dev/null
@@ -0,0 +1,33 @@
+{
+  "no-files-without-scenarios" : "on",
+  "no-unnamed-features": "on",
+  "no-unnamed-scenarios": "on",
+  "no-dupe-scenario-names": ["on", "in-feature"],
+  "no-dupe-feature-names": "on",
+  "no-partially-commented-tag-lines": "on",
+  "indentation": ["on", {
+      "Feature": 0,
+      "Background": 4,
+      "Scenario": 4,
+      "Step": 8,
+      "Examples": 8,
+      "example": 12
+      }],
+  "no-trailing-spaces": "on",
+  "new-line-at-eof": ["on", "yes"],
+  "no-multiple-empty-lines": "on",
+  "no-empty-file": "on",
+  "no-scenario-outlines-without-examples": "on",
+  "name-length": "off",
+  "no-restricted-tags": ["on", {"tags": ["@watch", "@wip"]}],
+  "use-and": "off",
+  "no-duplicate-tags": "on",
+  "no-superfluous-tags": "on",
+  "no-homogenous-tags": "on",
+  "one-space-between-tags": "on",
+  "no-unused-variables": "on",
+  "no-background-only-scenario": "off",
+  "no-empty-background": "on",
+  "no-examples-in-scenarios": "on",
+  "scenario-size": ["on", { "steps-length": {"Background": 3, "Scenario": 15}}]
+}
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/fixtures/block-rbd-status.json b/ceph/src/pybind/mgr/dashboard/frontend/cypress/fixtures/block-rbd-status.json
new file mode 100644 (file)
index 0000000..1d6f30b
--- /dev/null
@@ -0,0 +1 @@
+{ "available": false, "message": "No RBD pools in the cluster. Please create a pool with the \"rbd\" application label." }
\ No newline at end of file
index 120956579d8d188feccf9f8f0a10eb49acf725e2..dfba73b27409d98f34065c1c1212eb0621a6c894 100644 (file)
@@ -20,9 +20,9 @@ describe('Mirroring page', () => {
   });
 
   it('should show text for all tabs', () => {
-    mirroring.getTabText(0).should('eq', 'Issues');
-    mirroring.getTabText(1).should('eq', 'Syncing');
-    mirroring.getTabText(2).should('eq', 'Ready');
+    mirroring.getTabText(0).should('eq', 'Issues (0)');
+    mirroring.getTabText(1).should('eq', 'Syncing (0)');
+    mirroring.getTabText(2).should('eq', 'Ready (0)');
   });
 
   describe('checks that edit mode functionality shows in the pools table', () => {
index 819afd559b1298529d5c81b98650479a5a9e50cb..300eddbcc3de8c676cd937ac31e7c9a01746e98b 100644 (file)
@@ -1,7 +1,7 @@
-import { HostsPageHelper } from 'cypress/integration/cluster/hosts.po';
-import { ServicesPageHelper } from 'cypress/integration/cluster/services.po';
-import { PageHelper } from 'cypress/integration/page-helper.po';
-import { NotificationSidebarPageHelper } from 'cypress/integration/ui/notification.po';
+import { PageHelper } from '../page-helper.po';
+import { NotificationSidebarPageHelper } from '../ui/notification.po';
+import { HostsPageHelper } from './hosts.po';
+import { ServicesPageHelper } from './services.po';
 
 const pages = {
   index: { url: '#/expand-cluster', id: 'cd-create-cluster' }
index b741749f770a781599aab23d39d37d6a1da879da..b769c880a87d0930cedb1dd433c22293dff98e67 100644 (file)
@@ -158,14 +158,26 @@ export class HostsPageHelper extends PageHelper {
     this.clickActionButton('start-drain');
     this.checkLabelExists(hostname, ['_no_schedule'], true);
 
+    // unselect it to avoid colliding with any other selection
+    // in different steps
+    this.getTableCell(this.columnIndex.hostname, hostname).click();
+
     this.clickTab('cd-host-details', hostname, 'Daemons');
     cy.get('cd-host-details').within(() => {
       cy.wait(20000);
       this.expectTableCount('total', 0);
     });
+  }
 
-    // unselect it to avoid colliding with any other selection
-    // in different steps
-    this.getTableCell(this.columnIndex.hostname, hostname).click();
+  checkServiceInstancesExist(hostname: string, instances: string[]) {
+    this.getTableCell(this.columnIndex.hostname, hostname)
+      .parent()
+      .find(`datatable-body-cell:nth-child(${this.columnIndex.services}) .badge`)
+      .should(($ele) => {
+        const serviceInstances = $ele.toArray().map((v) => v.innerText);
+        for (const instance of instances) {
+          expect(serviceInstances).to.include(instance);
+        }
+      });
   }
 }
index 9868b89aedbc5489298b34355d7a092078a44a06..ecc3cc1cd912668b407dacdce3d5283b5cf48258 100644 (file)
@@ -27,8 +27,8 @@ describe('Logs page', () => {
       logs.expectBreadcrumbText('Logs');
     });
 
-    it('should show two tabs', () => {
-      logs.getTabsCount().should('eq', 2);
+    it('should show three tabs', () => {
+      logs.getTabsCount().should('eq', 3);
     });
 
     it('should show cluster logs tab at first', () => {
@@ -38,6 +38,10 @@ describe('Logs page', () => {
     it('should show audit logs as a second tab', () => {
       logs.getTabText(1).should('eq', 'Audit Logs');
     });
+
+    it('should show daemon logs as a third tab', () => {
+      logs.getTabText(2).should('eq', 'Daemon Logs');
+    });
   });
 
   describe('audit logs respond to pool creation and deletion test', () => {
index 8faaff09afae5df1eb91c6e528254bf114c6a98b..04d2eee46142f4b4e857a154d87ddb450bed5d52 100644 (file)
@@ -33,10 +33,12 @@ export class ManagerModulesPageHelper extends PageHelper {
 
     // Clears the editable fields
     for (const input of inputs) {
-      const id = `#${input.id}`;
-      cy.get(id).clear();
       if (input.oldValue) {
-        cy.get(id).type(input.oldValue);
+        const id = `#${input.id}`;
+        cy.get(id).clear();
+        if (input.oldValue) {
+          cy.get(id).type(input.oldValue);
+        }
       }
     }
 
@@ -44,10 +46,12 @@ export class ManagerModulesPageHelper extends PageHelper {
     cy.contains('button', 'Update').click();
     this.getExpandCollapseElement(name).should('be.visible').click();
     for (const input of inputs) {
-      cy.get('.datatable-body')
-        .eq(1)
-        .should('contain', input.id)
-        .and('not.contain', input.newValue);
+      if (input.oldValue) {
+        cy.get('.datatable-body')
+          .eq(1)
+          .should('contain', input.id)
+          .and('not.contain', input.newValue);
+      }
     }
   }
 }
index d388a3c5ba6e6439306aca9c5f4a1c454aef3cf7..cd812f474fb89ae9d55a3275d5181954e79f7725 100644 (file)
@@ -14,6 +14,7 @@ export class OSDsPageHelper extends PageHelper {
   };
 
   create(deviceType: 'hdd' | 'ssd', hostname?: string, expandCluster = false) {
+    cy.get('[aria-label="toggle advanced mode"]').click();
     // Click Primary devices Add button
     cy.get('cd-osd-devices-selection-groups[name="Primary"]').as('primaryGroups');
     cy.get('@primaryGroups').find('button').click();
index a7959c7b355f3115051ece6c3cfacc64cc84b347..481d6bc9b4d3a66d7a0df5b9c3a3fd25e5e45954 100644 (file)
@@ -41,17 +41,21 @@ export class ServicesPageHelper extends PageHelper {
     exist?: boolean,
     count = '1',
     snmpVersion?: string,
-    snmpPrivProtocol?: boolean
+    snmpPrivProtocol?: boolean,
+    unmanaged = false
   ) {
     cy.get(`${this.pages.create.id}`).within(() => {
       this.selectServiceType(serviceType);
       switch (serviceType) {
         case 'rgw':
           cy.get('#service_id').type('foo');
-          cy.get('#count').type(count);
+          unmanaged ? cy.get('label[for=unmanaged]').click() : cy.get('#count').type(count);
           break;
 
         case 'ingress':
+          if (unmanaged) {
+            cy.get('label[for=unmanaged]').click();
+          }
           this.selectOption('backend_service', 'rgw.foo');
           cy.get('#service_id').should('have.value', 'rgw.foo');
           cy.get('#virtual_ip').type('192.168.100.1/24');
@@ -61,7 +65,7 @@ export class ServicesPageHelper extends PageHelper {
 
         case 'nfs':
           cy.get('#service_id').type('testnfs');
-          cy.get('#count').type(count);
+          unmanaged ? cy.get('label[for=unmanaged]').click() : cy.get('#count').type(count);
           break;
 
         case 'snmp-gateway':
@@ -85,7 +89,7 @@ export class ServicesPageHelper extends PageHelper {
 
         default:
           cy.get('#service_id').type('test');
-          cy.get('#count').type(count);
+          unmanaged ? cy.get('label[for=unmanaged]').click() : cy.get('#count').type(count);
           break;
       }
       if (serviceType === 'snmp-gateway') {
@@ -159,6 +163,18 @@ export class ServicesPageHelper extends PageHelper {
     });
   }
 
+  isUnmanaged(serviceName: string, unmanaged: boolean) {
+    this.getTableCell(this.columnIndex.service_name, serviceName)
+      .parent()
+      .find(`datatable-body-cell:nth-child(${this.columnIndex.placement})`)
+      .should(($ele) => {
+        const placement = $ele.text().split(';');
+        unmanaged
+          ? expect(placement).to.include('unmanaged')
+          : expect(placement).to.not.include('unmanaged');
+      });
+  }
+
   deleteService(serviceName: string) {
     const getRow = this.getTableCell.bind(this, this.columnIndex.service_name);
     getRow(serviceName).click();
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/01-global.feature.po.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/01-global.feature.po.ts
new file mode 100644 (file)
index 0000000..575d401
--- /dev/null
@@ -0,0 +1,188 @@
+import { And, Given, Then, When } from 'cypress-cucumber-preprocessor/steps';
+
+import { UrlsCollection } from './urls.po';
+
+const urlsCollection = new UrlsCollection();
+
+Given('I am logged in', () => {
+  cy.login();
+  Cypress.Cookies.preserveOnce('token');
+});
+
+Given('I am on the {string} page', (page: string) => {
+  cy.visit(urlsCollection.pages[page].url);
+  cy.get(urlsCollection.pages[page].id).should('exist');
+});
+
+Then('I should be on the {string} page', (page: string) => {
+  cy.get(urlsCollection.pages[page].id).should('exist');
+});
+
+And('I should see a button to {string}', (button: string) => {
+  cy.get(`[aria-label="${button}"]`).should('be.visible');
+});
+
+When('I click on {string} button', (button: string) => {
+  cy.get(`[aria-label="${button}"]`).first().click();
+});
+
+// When you are clicking on an action in the table actions dropdown button
+When('I click on {string} button from the table actions', (button: string) => {
+  cy.get('.table-actions button.dropdown-toggle').first().click();
+  cy.get(`[aria-label="${button}"]`).first().click();
+});
+
+And('select options {string}', (labels: string) => {
+  if (labels) {
+    cy.get('a[data-testid=select-menu-edit]').click();
+    for (const label of labels.split(', ')) {
+      cy.get('.popover-body div.select-menu-item-content').contains(label).click();
+    }
+  }
+});
+
+And('{string} option {string}', (action: string, labels: string) => {
+  if (labels) {
+    if (action === 'add') {
+      cy.get('cd-modal').find('.select-menu-edit').click();
+      for (const label of labels.split(', ')) {
+        cy.get('.popover-body input').type(`${label}{enter}`);
+      }
+    } else {
+      for (const label of labels.split(', ')) {
+        cy.contains('cd-modal .badge', new RegExp(`^${label}$`))
+          .find('.badge-remove')
+          .click();
+      }
+    }
+  }
+});
+
+/**
+ * Fills in the given field using the value provided
+ * @param field ID of the field that needs to be filled out.
+ * @param value Value that should be filled in the field.
+ */
+And('enter {string} {string}', (field: string, value: string) => {
+  cy.get('cd-modal').within(() => {
+    cy.get(`input[id=${field}]`).type(value);
+  });
+});
+
+And('I click on submit button', () => {
+  cy.get('[data-cy=submitBtn]').click();
+});
+
+/**
+ * Selects any row on the datatable if it matches the given name
+ */
+When('I select a row {string}', (row: string) => {
+  cy.get('cd-table .search input').first().clear().type(row);
+  cy.contains(`datatable-body-row datatable-body-cell .datatable-body-cell-label`, row).click();
+});
+
+Then('I should see the modal', () => {
+  cy.get('cd-modal').should('exist');
+});
+
+Then('I should not see the modal', () => {
+  cy.get('cd-modal').should('not.exist');
+});
+
+/**
+ * Some modals have an additional confirmation to be provided
+ * by ticking the 'Are you sure?' box.
+ */
+Then('I check the tick box in modal', () => {
+  cy.get('cd-modal .custom-control-label').click();
+});
+
+And('I confirm to {string}', (action: string) => {
+  cy.contains('cd-modal button', action).click();
+  cy.get('cd-modal').should('not.exist');
+});
+
+Then('I should see an error in {string} field', (field: string) => {
+  cy.get('cd-modal').within(() => {
+    cy.get(`input[id=${field}]`).should('have.class', 'ng-invalid');
+  });
+});
+
+Then('I should see a row with {string}', (row: string) => {
+  cy.get('cd-table .search input').first().clear().type(row);
+  cy.contains(`datatable-body-row datatable-body-cell .datatable-body-cell-label`, row).should(
+    'exist'
+  );
+});
+
+Then('I should not see a row with {string}', (row: string) => {
+  cy.get('cd-table .search input').first().clear().type(row);
+  cy.contains(`datatable-body-row datatable-body-cell .datatable-body-cell-label`, row).should(
+    'not.exist'
+  );
+});
+
+Then('I should see rows with following entries', (entries) => {
+  entries.hashes().forEach((entry: any) => {
+    cy.get('cd-table .search input').first().clear().type(entry.hostname);
+    cy.contains(
+      `datatable-body-row datatable-body-cell .datatable-body-cell-label`,
+      entry.hostname
+    ).should('exist');
+  });
+});
+
+And('I should see row {string} have {string}', (row: string, options: string) => {
+  if (options) {
+    cy.get('cd-table .search input').first().clear().type(row);
+    for (const option of options.split(',')) {
+      cy.contains(
+        `datatable-body-row datatable-body-cell .datatable-body-cell-label .badge`,
+        option
+      ).should('exist');
+    }
+  }
+});
+
+And('I should see row {string} does not have {string}', (row: string, options: string) => {
+  if (options) {
+    cy.get('cd-table .search input').first().clear().type(row);
+    for (const option of options.split(',')) {
+      cy.contains(
+        `datatable-body-row datatable-body-cell .datatable-body-cell-label .badge`,
+        option
+      ).should('not.exist');
+    }
+  }
+});
+
+And('I go to the {string} tab', (names: string) => {
+  for (const name of names.split(', ')) {
+    cy.contains('.nav.nav-tabs li', name).click();
+  }
+});
+
+And('select {string} {string}', (selectionName: string, option: string) => {
+  cy.get(`select[name=${selectionName}]`).select(option);
+  cy.get(`select[name=${selectionName}] option:checked`).contains(option);
+});
+
+When('I expand the row {string}', (row: string) => {
+  cy.contains('.datatable-body-row', row).first().find('.tc_expand-collapse').click();
+});
+
+And('I should see row {string} have {string} on this tab', (row: string, options: string) => {
+  if (options) {
+    cy.get('cd-table').should('exist');
+    cy.get('datatable-scroller, .empty-row');
+    cy.get('.datatable-row-detail').within(() => {
+      cy.get('cd-table .search input').first().clear().type(row);
+      for (const option of options.split(',')) {
+        cy.contains(
+          `datatable-body-row datatable-body-cell .datatable-body-cell-label span`,
+          option
+        ).should('exist');
+      }
+    });
+  }
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/create-cluster/create-cluster.feature.po.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/create-cluster/create-cluster.feature.po.ts
new file mode 100644 (file)
index 0000000..d18c348
--- /dev/null
@@ -0,0 +1,12 @@
+import { Given, Then } from 'cypress-cucumber-preprocessor/steps';
+
+Given('I am on the {string} section', (page: string) => {
+  cy.get('cd-wizard').within(() => {
+    cy.get('.nav-link').should('contain.text', page).first().click();
+    cy.get('.nav-link.active').should('contain.text', page);
+  });
+});
+
+Then('I should see a message {string}', () => {
+  cy.get('cd-create-cluster').should('contain.text', 'Please expand your cluster first');
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/grafana.feature.po.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/grafana.feature.po.ts
new file mode 100644 (file)
index 0000000..7366f8b
--- /dev/null
@@ -0,0 +1,86 @@
+import { e2e } from '@grafana/e2e';
+import { Then, When } from 'cypress-cucumber-preprocessor/steps';
+import 'cypress-iframe';
+
+function getIframe() {
+  cy.frameLoaded('#iframe');
+  return cy.iframe();
+}
+
+Then('I should see the grafana panel {string}', (panels: string) => {
+  getIframe().within(() => {
+    for (const panel of panels.split(', ')) {
+      cy.get('.grafana-app')
+        .wait(100)
+        .within(() => {
+          e2e.components.Panels.Panel.title(panel).should('be.visible');
+        });
+    }
+  });
+});
+
+When('I view the grafana panel {string}', (panels: string) => {
+  getIframe().within(() => {
+    for (const panel of panels.split(', ')) {
+      cy.get('.grafana-app')
+        .wait(100)
+        .within(() => {
+          e2e.components.Panels.Panel.title(panel).should('be.visible').click();
+          e2e.components.Panels.Panel.headerItems('View').should('be.visible').click();
+        });
+    }
+  });
+});
+
+Then('I should not see {string} in the panel {string}', (value: string, panels: string) => {
+  getIframe().within(() => {
+    for (const panel of panels.split(', ')) {
+      cy.get('.grafana-app')
+        .wait(100)
+        .within(() => {
+          cy.get(`[aria-label="${panel} panel"]`)
+            .should('be.visible')
+            .within(() => {
+              cy.get('span').first().should('not.have.text', value);
+            });
+        });
+    }
+  });
+});
+
+Then(
+  'I should see the legends {string} in the graph {string}',
+  (legends: string, panels: string) => {
+    getIframe().within(() => {
+      for (const panel of panels.split(', ')) {
+        cy.get('.grafana-app')
+          .wait(100)
+          .within(() => {
+            cy.get(`[aria-label="${panel} panel"]`)
+              .should('be.visible')
+              .within(() => {
+                for (const legend of legends.split(', ')) {
+                  cy.get('a').contains(legend);
+                }
+              });
+          });
+      }
+    });
+  }
+);
+
+Then('I should not see No Data in the graph {string}', (panels: string) => {
+  getIframe().within(() => {
+    for (const panel of panels.split(', ')) {
+      cy.get('.grafana-app')
+        .wait(100)
+        .within(() => {
+          cy.get(`[aria-label="${panel} panel"]`)
+            .should('be.visible')
+            .within(() => {
+              cy.get('div.datapoints-warning').should('not.exist');
+            });
+        });
+    }
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/urls.po.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/common/urls.po.ts
new file mode 100644 (file)
index 0000000..2863550
--- /dev/null
@@ -0,0 +1,44 @@
+import { PageHelper } from '../page-helper.po';
+
+export class UrlsCollection extends PageHelper {
+  pages = {
+    // Cluster expansion
+    welcome: { url: '#/expand-cluster', id: 'cd-create-cluster' },
+
+    // Landing page
+    dashboard: { url: '#/dashboard', id: 'cd-dashboard' },
+
+    // Hosts
+    hosts: { url: '#/hosts', id: 'cd-hosts' },
+    'add hosts': { url: '#/hosts/(modal:add)', id: 'cd-host-form' },
+
+    // Services
+    services: { url: '#/services', id: 'cd-services' },
+    'create services': { url: '#/services/(modal:create)', id: 'cd-service-form' },
+
+    // Physical Disks
+    'physical disks': { url: '#/inventory', id: 'cd-inventory' },
+
+    // Monitors
+    monitors: { url: '#/monitor', id: 'cd-monitor' },
+
+    // OSDs
+    osds: { url: '#/osd', id: 'cd-osd-list' },
+    'create osds': { url: '#/osd/create', id: 'cd-osd-form' },
+
+    // Configuration
+    configuration: { url: '#/configuration', id: 'cd-configuration' },
+
+    // Crush Map
+    'crush map': { url: '#/crush-map', id: 'cd-crushmap' },
+
+    // Mgr modules
+    'mgr-modules': { url: '#/mgr-modules', id: 'cd-mgr-module-list' },
+
+    // Logs
+    logs: { url: '#/logs', id: 'cd-logs' },
+
+    // RGW Daemons
+    'rgw daemons': { url: '#/rgw/daemon', id: 'cd-rgw-daemon-list' }
+  };
+}
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/grafana/grafana.feature b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/grafana/grafana.feature
new file mode 100644 (file)
index 0000000..62476ad
--- /dev/null
@@ -0,0 +1,63 @@
+Feature: Grafana panels
+
+    Go to some of the grafana performance section and check if
+    panels are populated without any issues
+
+    Background: Log in
+        Given I am logged in
+
+    Scenario Outline: Hosts Overall Performance
+        Given I am on the "hosts" page
+        When I go to the "Overall Performance" tab
+        Then I should see the grafana panel "<panel>"
+        When I view the grafana panel "<panel>"
+        Then I should not see "No Data" in the panel "<panel>"
+
+        Examples:
+            | panel |
+            | OSD Hosts |
+            | AVG CPU Busy |
+            | AVG RAM Utilization |
+            | Physical IOPS |
+            | AVG Disk Utilization |
+            | Network Load |
+            | CPU Busy - Top 10 Hosts |
+            | Network Load - Top 10 Hosts |
+
+    Scenario Outline: RGW Daemon Overall Performance
+        Given I am on the "rgw daemons" page
+        When I go to the "Overall Performance" tab
+        Then I should see the grafana panel "<panel>"
+        When I view the grafana panel "<panel>"
+        Then I should not see No Data in the graph "<panel>"
+        And I should see the legends "<legends>" in the graph "<panel>"
+
+        Examples:
+            | panel | legends |
+            | Total Requests/sec by RGW Instance | foo.ceph-node-00, foo.ceph-node-01, foo.ceph-node-02 |
+            | GET Latencies by RGW Instance | foo.ceph-node-00, foo.ceph-node-01, foo.ceph-node-02 |
+            | Bandwidth by RGW Instance | foo.ceph-node-00, foo.ceph-node-01, foo.ceph-node-02 |
+            | PUT Latencies by RGW Instance | foo.ceph-node-00, foo.ceph-node-01, foo.ceph-node-02 |
+            | Average GET/PUT Latencies | GET AVG, PUT AVG |
+            | Bandwidth Consumed by Type | GETs, PUTs |
+
+    Scenario Outline: RGW per Daemon Performance
+        Given I am on the "rgw daemons" page
+        When I expand the row "<name>"
+        And I go to the "Performance Details" tab
+        Then I should see the grafana panel "<panel>"
+        When I view the grafana panel "<panel>"
+        Then I should not see No Data in the graph "<panel>"
+        And I should see the legends "<name>" in the graph "<panel>"
+
+        Examples:
+            | name | panel |
+            | foo.ceph-node-00 | Bandwidth by HTTP Operation |
+            | foo.ceph-node-00 | HTTP Request Breakdown |
+            | foo.ceph-node-00 | Workload Breakdown |
+            | foo.ceph-node-01 | Bandwidth by HTTP Operation |
+            | foo.ceph-node-01 | HTTP Request Breakdown |
+            | foo.ceph-node-01 | Workload Breakdown |
+            | foo.ceph-node-02 | Bandwidth by HTTP Operation |
+            | foo.ceph-node-02 | HTTP Request Breakdown |
+            | foo.ceph-node-02 | Workload Breakdown |
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome-page.e2e-spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome-page.e2e-spec.ts
deleted file mode 100644 (file)
index 02ebb18..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CreateClusterWizardHelper } from 'cypress/integration/cluster/create-cluster.po';
-
-describe('Create cluster page', () => {
-  const createCluster = new CreateClusterWizardHelper();
-
-  beforeEach(() => {
-    cy.login();
-    Cypress.Cookies.preserveOnce('token');
-    createCluster.navigateTo();
-  });
-
-  it('should open the wizard when Expand Cluster is clicked', () => {
-    createCluster.createCluster();
-  });
-
-  it('should skip to dashboard landing page when Skip is clicked', () => {
-    createCluster.doSkip();
-  });
-});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome.feature b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/01-create-cluster-welcome.feature
new file mode 100644 (file)
index 0000000..6ba2fc4
--- /dev/null
@@ -0,0 +1,26 @@
+Feature: Cluster expansion welcome screen
+
+    Go to the welcome screen and decide whether
+    to proceed to wizard or skips to landing page
+
+    Background: Login
+        Given I am logged in
+
+    Scenario: Cluster expansion welcome screen
+        Given I am on the "welcome" page
+        And I should see a button to "Expand Cluster"
+        And I should see a button to "Skip"
+        And I should see a message "Please expand your cluster first"
+
+    Scenario: Go to the Cluster expansion wizard
+        Given I am on the "welcome" page
+        And I should see a button to "Expand Cluster"
+        When I click on "Expand Cluster" button
+        Then I am on the "Add Hosts" section
+
+    Scenario: Skips the process and go to the landing page
+        Given I am on the "welcome" page
+        And I should see a button to "Skip"
+        When I click on "Skip" button
+        And I confirm to "Continue"
+        Then I should be on the "dashboard" page
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.e2e-spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.e2e-spec.ts
deleted file mode 100644 (file)
index a8d4b87..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-import {
-  CreateClusterHostPageHelper,
-  CreateClusterWizardHelper
-} from 'cypress/integration/cluster/create-cluster.po';
-
-describe('Create cluster add host page', () => {
-  const createCluster = new CreateClusterWizardHelper();
-  const createClusterHostPage = new CreateClusterHostPageHelper();
-  const hostnames = ['ceph-node-00', 'ceph-node-01', 'ceph-node-02', 'ceph-node-[01-03]'];
-  const addHost = (hostname: string, exist?: boolean, pattern?: boolean, labels: string[] = []) => {
-    cy.get('button[data-testid=table-action-button]').click();
-    createClusterHostPage.add(hostname, exist, false, labels);
-    if (!pattern) {
-      createClusterHostPage.checkExist(hostname, true);
-    }
-  };
-
-  beforeEach(() => {
-    cy.login();
-    Cypress.Cookies.preserveOnce('token');
-    createCluster.navigateTo();
-    createCluster.createCluster();
-  });
-
-  it('should check if title contains Add Hosts', () => {
-    cy.get('.nav-link').should('contain.text', 'Add Hosts');
-
-    cy.get('.title').should('contain.text', 'Add Hosts');
-  });
-
-  it('should check existing host and add new hosts', () => {
-    createClusterHostPage.checkExist(hostnames[0], true);
-
-    addHost(hostnames[1], false);
-    addHost(hostnames[2], false);
-    createClusterHostPage.remove(hostnames[1]);
-    createClusterHostPage.remove(hostnames[2]);
-    addHost(hostnames[3], false, true);
-  });
-
-  it('should remove a host', () => {
-    createClusterHostPage.remove(hostnames[1]);
-  });
-
-  it('should add a host with some predefined labels and verify it', () => {
-    const labels = ['mon', 'mgr', 'rgw', 'osd'];
-    addHost(hostnames[1], false, false, labels);
-    createClusterHostPage.checkLabelExists(hostnames[1], labels, true);
-  });
-
-  it('should verify "_no_schedule" label is added', () => {
-    createClusterHostPage.checkLabelExists(hostnames[1], ['_no_schedule'], true);
-    createClusterHostPage.checkLabelExists(hostnames[2], ['_no_schedule'], true);
-  });
-
-  it('should not add an existing host', () => {
-    cy.get('.btn.btn-accent').first().click({ force: true });
-    createClusterHostPage.add(hostnames[0], true);
-  });
-
-  it('should edit host labels', () => {
-    const labels = ['foo', 'bar'];
-    createClusterHostPage.editLabels(hostnames[0], labels, true);
-    createClusterHostPage.editLabels(hostnames[0], labels, false);
-  });
-});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.feature b/ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/02-create-cluster-add-host.feature
new file mode 100644 (file)
index 0000000..93c1083
--- /dev/null
@@ -0,0 +1,74 @@
+Feature: Cluster expansion host addition
+
+    Add some hosts and perform some host related actions like editing the labels
+    and removing the hosts from the cluster and verify all of the actions are performed
+    as expected
+
+    Background: Cluster expansion wizard
+        Given I am logged in
+        And I am on the "welcome" page
+        And I click on "Expand Cluster" button
+
+    Scenario Outline: Add hosts
+        Given I am on the "Add Hosts" section
+        When I click on "Add" button
+        And enter "hostname" "<hostname>"
+        And select options "<labels>"
+        And I click on submit button
+        Then I should see a row with "<hostname>"
+        And I should see row "<hostname>" have "<labels>"
+
+        Examples:
+            | hostname | labels |
+            | ceph-node-01 | mon, mgr |
+            | ceph-node-02 ||
+
+    Scenario Outline: Remove hosts
+        Given I am on the "Add Hosts" section
+        And I should see a row with "<hostname>"
+        When I select a row "<hostname>"
+        And I click on "Remove" button from the table actions
+        Then I should see the modal
+        And I check the tick box in modal
+        And I click on "Remove Host" button
+        Then I should not see the modal
+        And I should not see a row with "<hostname>"
+
+        Examples:
+            | hostname |
+            | ceph-node-01 |
+            | ceph-node-02 |
+
+    Scenario: Add hosts using pattern 'ceph-node-[01-02]'
+        Given I am on the "Add Hosts" section
+        When I click on "Add" button
+        And enter "hostname" "ceph-node-[01-02]"
+        And I click on submit button
+        Then I should see rows with following entries
+            | hostname |
+            | ceph-node-01 |
+            | ceph-node-02 |
+
+    Scenario: Add exisiting host and verify it failed
+        Given I am on the "Add Hosts" section
+        And I should see a row with "ceph-node-00"
+        When I click on "Add" button
+        And enter "hostname" "ceph-node-00"
+        Then I should see an error in "hostname" field
+
+    Scenario Outline: Add and remove labels on host
+        Given I am on the "Add Hosts" section
+        When I select a row "<hostname>"
+        And I click on "Edit" button from the table actions
+        And "add" option "<labels>"
+        And I click on submit button
+        Then I should see row "<hostname>" have "<labels>"
+        When I select a row "<hostname>"
+        And I click on "Edit" button from the table actions
+        And "remove" option "<labels>"
+        And I click on submit button
+        Then I should see row "<hostname>" does not have "<labels>"
+
+        Examples:
+            | hostname | labels |
+            | ceph-node-01 | foo |
index e386a170a0488bd00bf429dded3f780bfb76e60b..7668cafcf928c23babd75fed2e97c577bacbad87 100644 (file)
@@ -1,14 +1,16 @@
+/* tslint:disable*/
 import {
   CreateClusterServicePageHelper,
   CreateClusterWizardHelper
-} from 'cypress/integration/cluster/create-cluster.po';
+} from '../../cluster/create-cluster.po';
+/* tslint:enable*/
 
 describe('Create cluster create services page', () => {
   const createCluster = new CreateClusterWizardHelper();
   const createClusterServicePage = new CreateClusterServicePageHelper();
 
   const createService = (serviceType: string, serviceName: string, count = '1') => {
-    cy.get('button[data-testid=table-action-button]').click();
+    cy.get('[aria-label=Create]').first().click();
     createClusterServicePage.addService(serviceType, false, count);
     createClusterServicePage.checkExist(serviceName, true);
   };
index 12a2ac8b57d5fc307598de8df1b1d40616c41a5b..a82be985548569b3445b09fb20211c3942756cf0 100644 (file)
@@ -1,5 +1,7 @@
-import { CreateClusterWizardHelper } from 'cypress/integration/cluster/create-cluster.po';
-import { OSDsPageHelper } from 'cypress/integration/cluster/osds.po';
+/* tslint:disable*/
+import { CreateClusterWizardHelper } from '../../cluster/create-cluster.po';
+import { OSDsPageHelper } from '../../cluster/osds.po';
+/* tslint:enable*/
 
 const osds = new OSDsPageHelper();
 
@@ -20,7 +22,7 @@ describe('Create cluster create osds page', () => {
 
   describe('when Orchestrator is available', () => {
     it('should create OSDs', () => {
-      const hostnames = ['ceph-node-00', 'ceph-node-02', 'ceph-node-03'];
+      const hostnames = ['ceph-node-00', 'ceph-node-01', 'ceph-node-02'];
       for (const hostname of hostnames) {
         osds.create('hdd', hostname, true);
 
index ba6e78ddeeb18ad50a2cdc67f139ad389aa99267..f93ad7a975bb9afae1fafecdf8064b849d96ea4c 100644 (file)
@@ -1,7 +1,9 @@
+/* tslint:disable*/
 import {
   CreateClusterHostPageHelper,
   CreateClusterWizardHelper
-} from 'cypress/integration/cluster/create-cluster.po';
+} from '../../cluster/create-cluster.po';
+/* tslint:enable*/
 
 describe('Create Cluster Review page', () => {
   const createCluster = new CreateClusterWizardHelper();
index 8a0d7ccf45ab6ade1e4fbbf5708cc81971115a67..589cbaa904c23ddc7f6e93ed2a3ea5b789775ca0 100644 (file)
@@ -1,11 +1,15 @@
-import { CreateClusterWizardHelper } from 'cypress/integration/cluster/create-cluster.po';
-import { HostsPageHelper } from 'cypress/integration/cluster/hosts.po';
-import { ServicesPageHelper } from 'cypress/integration/cluster/services.po';
+/* tslint:disable*/
+import { Input, ManagerModulesPageHelper } from '../../cluster/mgr-modules.po';
+import { CreateClusterWizardHelper } from '../../cluster/create-cluster.po';
+import { HostsPageHelper } from '../../cluster/hosts.po';
+import { ServicesPageHelper } from '../../cluster/services.po';
+/* tslint:enable*/
 
 describe('when cluster creation is completed', () => {
   const createCluster = new CreateClusterWizardHelper();
   const services = new ServicesPageHelper();
   const hosts = new HostsPageHelper();
+  const mgrmodules = new ManagerModulesPageHelper();
 
   const hostnames = ['ceph-node-00', 'ceph-node-01', 'ceph-node-02', 'ceph-node-03'];
 
@@ -28,6 +32,41 @@ describe('when cluster creation is completed', () => {
       hosts.navigateTo();
     });
 
+    it('should check if monitoring stacks are running on the root host', () => {
+      const monitoringStack = ['alertmanager', 'grafana', 'node-exporter', 'prometheus'];
+      hosts.clickTab('cd-host-details', 'ceph-node-00', 'Daemons');
+      for (const daemon of monitoringStack) {
+        cy.get('cd-host-details').within(() => {
+          services.checkServiceStatus(daemon);
+        });
+      }
+    });
+
+    // avoid creating node-exporter on the newly added host
+    // to favour the host draining process
+    it('should reduce the count for node-exporter', () => {
+      services.editService('node-exporter', '3');
+    });
+
+    // grafana ip address is set to the fqdn by default.
+    // kcli is not working with that, so setting the IP manually.
+    it('should change ip address of grafana', { retries: 2 }, () => {
+      const dashboardArr: Input[] = [
+        {
+          id: 'GRAFANA_API_URL',
+          newValue: 'https://192.168.100.100:3000',
+          oldValue: ''
+        }
+      ];
+      mgrmodules.editMgrModule('dashboard', dashboardArr);
+    });
+
+    it('should add one more host', () => {
+      hosts.navigateTo('add');
+      hosts.add(hostnames[3]);
+      hosts.checkExist(hostnames[3], true);
+    });
+
     it('should have removed "_no_schedule" label', () => {
       for (const hostname of hostnames) {
         hosts.checkLabelExists(hostname, ['_no_schedule'], false);
index 90db14668f712b388c9efbf1a3e9203f160bbbd3..a0a1dd03214b4e55a185eecf34f876d32367c97b 100644 (file)
@@ -1,4 +1,6 @@
-import { OSDsPageHelper } from 'cypress/integration/cluster/osds.po';
+/* tslint:disable*/
+import { OSDsPageHelper } from '../../cluster/osds.po';
+/* tslint:enable*/
 
 describe('OSDs page', () => {
   const osds = new OSDsPageHelper();
index 0abead17483d3b76692850fa27c47cba58e09162..374ecdb0cb6ee8d827d92ff037098cbdcef383cd 100644 (file)
@@ -1,5 +1,7 @@
-import { HostsPageHelper } from 'cypress/integration/cluster/hosts.po';
-import { ServicesPageHelper } from 'cypress/integration/cluster/services.po';
+/* tslint:disable*/
+import { HostsPageHelper } from '../../cluster/hosts.po';
+import { ServicesPageHelper } from '../../cluster/services.po';
+/* tslint:enable*/
 
 describe('Host Page', () => {
   const hosts = new HostsPageHelper();
@@ -29,15 +31,19 @@ describe('Host Page', () => {
     }
   });
 
-  it('should force maintenance and exit', { retries: 2 }, () => {
-    hosts.maintenance(hostnames[1], true, true);
+  it('should force maintenance and exit', () => {
+    hosts.maintenance(hostnames[3], true, true);
   });
 
   it('should drain, remove and add the host back', () => {
-    hosts.drain(hostnames[1]);
-    hosts.remove(hostnames[1]);
+    hosts.drain(hostnames[3]);
+    hosts.remove(hostnames[3]);
     hosts.navigateTo('add');
-    hosts.add(hostnames[1]);
-    hosts.checkExist(hostnames[1], true);
+    hosts.add(hostnames[3]);
+    hosts.checkExist(hostnames[3], true);
+  });
+
+  it('should show the exact count of daemons', () => {
+    hosts.checkServiceInstancesExist(hostnames[0], ['mgr: 1', 'prometheus: 1']);
   });
 });
index 4349b1ecffb23cae20fcc7e43ae4ced83d0cbd17..ed9ffb9890a1e83de84872d8f847e2841cd296e8 100644 (file)
@@ -1,4 +1,6 @@
-import { ServicesPageHelper } from 'cypress/integration/cluster/services.po';
+/* tslint:disable*/
+import { ServicesPageHelper } from '../../cluster/services.po';
+/* tslint:enable*/
 
 describe('Services page', () => {
   const services = new ServicesPageHelper();
@@ -101,4 +103,12 @@ describe('Services page', () => {
 
     services.deleteService('snmp-gateway');
   });
+
+  it('should create ingress as unmanaged', () => {
+    services.navigateTo('create');
+    services.addService('ingress', false, undefined, undefined, undefined, true);
+    services.checkExist('ingress.rgw.foo', true);
+    services.isUnmanaged('ingress.rgw.foo', true);
+    services.deleteService('ingress.rgw.foo');
+  });
 });
index 2d92075298e19c77027b81e8f11e9c597db5aeec..f4b5499f08b27eea6518537ff6426aa36b4eeeb2 100644 (file)
@@ -1,6 +1,8 @@
-import { ServicesPageHelper } from 'cypress/integration/cluster/services.po';
-import { NFSPageHelper } from 'cypress/integration/orchestrator/workflow/nfs/nfs-export.po';
-import { BucketsPageHelper } from 'cypress/integration/rgw/buckets.po';
+/* tslint:disable*/
+import { ServicesPageHelper } from '../../cluster/services.po';
+import { NFSPageHelper } from '../../orchestrator/workflow/nfs/nfs-export.po';
+import { BucketsPageHelper } from '../../rgw/buckets.po';
+/* tslint:enable*/
 
 describe('nfsExport page', () => {
   const nfsExport = new NFSPageHelper();
index 03b3bb18dac84b27dc6ebd71a98fd131dddfd8a9..c700ef0581dd761c89754e1a2c5a660a13c2081b 100644 (file)
@@ -1,4 +1,6 @@
-import { PageHelper } from 'cypress/integration/page-helper.po';
+/* tslint:disable*/
+import { PageHelper } from '../../../page-helper.po';
+/* tslint:enable*/
 
 const pages = {
   index: { url: '#/nfs', id: 'cd-nfs-list' },
index 53c7c3ca8d782c8254542902f86d0dee699c22fd..52994859e249551e240d04cb4c2558a0cd64cc89 100644 (file)
@@ -1,4 +1,4 @@
-import { ApiDocsPageHelper } from 'cypress/integration/ui/api-docs.po';
+import { ApiDocsPageHelper } from '../ui/api-docs.po';
 
 describe('Api Docs Page', () => {
   const apiDocs = new ApiDocsPageHelper();
index a3673284cdfb3282250f16435fee2424696a099d..a7ecf3af0e8d5946bfa942edb1320d5cf8ece78e 100644 (file)
@@ -35,7 +35,7 @@ export class NavigationPageHelper extends PageHelper {
     {
       menu: 'Block',
       submenus: [
-        { menu: 'Images', component: 'cd-rbd-list' },
+        { menu: 'Images', component: 'cd-error' },
         { menu: 'Mirroring', component: 'cd-mirroring' },
         { menu: 'iSCSI', component: 'cd-iscsi' }
       ]
@@ -52,9 +52,10 @@ export class NavigationPageHelper extends PageHelper {
   }
 
   checkNavigations(navs: any) {
-    // The nfs-ganesha and RGW status requests are mocked to ensure that this method runs in time
-    cy.intercept('/api/nfs-ganesha/status', { fixture: 'nfs-ganesha-status.json' });
-    cy.intercept('/api/rgw/status', { fixture: 'rgw-status.json' });
+    // The nfs-ganesha, RGW, and block/rbd status requests are mocked to ensure that this method runs in time
+    cy.intercept('/ui-api/nfs-ganesha/status', { fixture: 'nfs-ganesha-status.json' });
+    cy.intercept('/ui-api/rgw/status', { fixture: 'rgw-status.json' });
+    cy.intercept('/ui-api/block/rbd/status', { fixture: 'block-rbd-status.json' });
 
     navs.forEach((nav: any) => {
       cy.contains('.simplebar-content li.nav-item a', nav.menu).click();
index ce29463bb6c60e939e4552078451bfed22068fa4..d9294002ba4010eaebd41e33e0141657b1d35861 100644 (file)
@@ -1,10 +1,26 @@
+
+const browserify = require('@cypress/browserify-preprocessor');
+const cucumber = require('cypress-cucumber-preprocessor').default;
 module.exports = (on, _config) => {
+  const options = {
+    ...browserify.defaultOptions,
+    typescript: require.resolve("typescript"),
+  };
+
+  on('file:preprocessor', cucumber(options));
   on('before:browser:launch', (browser, launchOptions) => {
     if (browser.name === 'chrome' && browser.isHeadless) {
       launchOptions.args.push('--disable-gpu');
       return launchOptions;
     }
   });
+
+  on('task', {
+    log({ message, optional }) {
+      optional ? console.log(message, optional) : console.log(message);
+      return null;
+    },
+  });
 };
 
 require('@applitools/eyes-cypress')(module);
index 8c9b9ea9642ce3fe281e48ca22e1dd0be0bc1ad9..6ff17f9d6978e11f35787a657e2c02ad6222ca59 100644 (file)
@@ -2,14 +2,20 @@ declare global {
   namespace Cypress {
     interface Chainable<Subject> {
       login(): void;
+      logToConsole(message: string, optional?: any): void;
       text(): Chainable<string>;
     }
   }
 }
-
-import { CdHelperClass } from '~/app/shared/classes/cd-helper.class';
-import { Permissions } from '~/app/shared/models/permissions';
-
+// Disabling tslint rule since cypress-cucumber has
+// issues with absolute import paths.
+// This can be removed when
+// https://github.com/cypress-io/cypress-browserify-preprocessor/issues/53
+// is fixed.
+/* tslint:disable*/
+import { CdHelperClass } from '../../src/app/shared/classes/cd-helper.class';
+import { Permissions } from '../../src/app/shared/models/permissions';
+/* tslint:enable*/
 let auth: any;
 
 const fillAuth = () => {
@@ -44,6 +50,10 @@ Cypress.Commands.add('login', () => {
 });
 
 // @ts-ignore
-Cypress.Commands.add('text', { prevSubject: true }, (subject) => {
+Cypress.Commands.add('text', { prevSubject: true }, (subject: any) => {
   return subject.text();
 });
+
+Cypress.Commands.add('logToConsole', (message: string, optional?: any) => {
+  cy.task('log', { message: `(${new Date().toISOString()}) ${message}`, optional });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.7c1918629ff8b413cc76.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.7c1918629ff8b413cc76.js
new file mode 100644 (file)
index 0000000..ae5e1b6
--- /dev/null
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[281],{59281:(ri,Oe,r)=>{r.r(Oe),r.d(Oe,{RgwModule:()=>e_,RoutedRgwModule:()=>ai});var f=r(12057),a=r(24751),w=r(6283),M=r(38549),Ue=r(37496),A=r(79512),O_=r(44466),U_=r(66265),W_=r(23815),u=r.n(W_),Y=r(35758),Me=r(95152),We=r(33394),Ze=r(64762),$e=r(58497),me=r(25917),he=r(19773),Z_=r(96736),$_=r(5304),ge=r(20523),h_=r(93523),e=r(74788);let O=class{constructor(o,_){this.http=o,this.rgwDaemonService=_,this.url="api/rgw/user"}list(){return this.enumerate().pipe((0,he.zg)(o=>o.length>0?(0,Y.D)(o.map(_=>this.get(_))):(0,me.of)([])))}enumerate(){return this.rgwDaemonService.request(o=>this.http.get(this.url,{params:o}))}enumerateEmail(){return this.rgwDaemonService.request(o=>this.http.get(`${this.url}/get_emails`,{params:o}))}get(o){return this.rgwDaemonService.request(_=>this.http.get(`${this.url}/${o}`,{params:_}))}getQuota(o){return this.rgwDaemonService.request(_=>this.http.get(`${this.url}/${o}/quota`,{params:_}))}create(o){return this.rgwDaemonService.request(_=>(u().keys(o).forEach(n=>{_=_.append(n,o[n])}),this.http.post(this.url,null,{params:_})))}update(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.put(`${this.url}/${o}`,null,{params:n})))}updateQuota(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.put(`${this.url}/${o}/quota`,null,{params:n})))}delete(o){return this.rgwDaemonService.request(_=>this.http.delete(`${this.url}/${o}`,{params:_}))}createSubuser(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.post(`${this.url}/${o}/subuser`,null,{params:n})))}deleteSubuser(o,_){return this.rgwDaemonService.request(n=>this.http.delete(`${this.url}/${o}/subuser/${_}`,{params:n}))}addCapability(o,_,n){return this.rgwDaemonService.request(i=>(i=(i=i.append("type",_)).append("perm",n),this.http.post(`${this.url}/${o}/capability`,null,{params:i})))}deleteCapability(o,_,n){return this.rgwDaemonService.request(i=>(i=(i=i.append("type",_)).append("perm",n),this.http.delete(`${this.url}/${o}/capability`,{params:i})))}addS3Key(o,_){return this.rgwDaemonService.request(n=>(n=n.append("key_type","s3"),u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.post(`${this.url}/${o}/key`,null,{params:n})))}deleteS3Key(o,_){return this.rgwDaemonService.request(n=>(n=(n=n.append("key_type","s3")).append("access_key",_),this.http.delete(`${this.url}/${o}/key`,{params:n})))}exists(o){return this.get(o).pipe((0,Z_.h)(!0),(0,$_.K)(_=>(u().isFunction(_.preventDefault)&&_.preventDefault(),(0,me.of)(!1))))}emailExists(o){return o=decodeURIComponent(o),this.enumerateEmail().pipe((0,he.zg)(_=>{const n=u().indexOf(_,o);return(0,me.of)(-1!==n)}))}};O.\u0275fac=function(o){return new(o||O)(e.LFG($e.eN),e.LFG(ge.b))},O.\u0275prov=e.Yz7({token:O,factory:O.\u0275fac,providedIn:"root"}),O=(0,Ze.gn)([h_.o,(0,Ze.w6)("design:paramtypes",[$e.eN,ge.b])],O);var D=r(65862),Ae=r(18001),Ie=r(93614),m=r(77205),ve=r(97161),k=(()=>{return(t=k||(k={})).ENABLED="Enabled",t.DISABLED="Disabled",k;var t})(),B=(()=>{return(t=B||(B={})).ENABLED="Enabled",t.SUSPENDED="Suspended",B;var t})(),J=r(62862),Fe=r(63622),V=r(41582),H=r(56310),q=r(87925),X=r(94276),j=r(82945),I_=r(18372),ee=r(30839),K=r(10545);function v_(t,o){1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",35),e.SDv(2,36),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",37),e.qZA(),e.qZA())}function F_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,39),e.qZA())}function L_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,40),e.qZA())}function D_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,41),e.qZA())}function y_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,42),e.qZA())}function x_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,43),e.qZA())}function q_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,44),e.qZA())}function w_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,45),e.qZA())}function k_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,46),e.qZA())}function B_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,48),e.qZA()),2&t&&e.Q6J("ngValue",null)}function H_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,49),e.qZA()),2&t&&e.Q6J("ngValue",null)}function X_(t,o){if(1&t&&(e.TgZ(0,"option",50),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function K_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,51),e.qZA())}function z_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,53),e.qZA()),2&t&&e.Q6J("ngValue",null)}function Q_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,54),e.qZA()),2&t&&e.Q6J("ngValue",null)}function Y_(t,o){if(1&t&&(e.TgZ(0,"option",50),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_.name),e.xp6(1),e.Oqu(_.description)}}function J_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,55),e.qZA())}function V_(t,o){if(1&t&&(e.TgZ(0,"select",52),e.YNc(1,z_,2,1,"option",18),e.YNc(2,Q_,2,1,"option",18),e.YNc(3,Y_,2,2,"option",19),e.qZA(),e.YNc(4,J_,2,0,"span",14)),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(1),e.Q6J("ngIf",null===n.placementTargets),e.xp6(1),e.Q6J("ngIf",null!==n.placementTargets),e.xp6(1),e.Q6J("ngForOf",n.placementTargets),e.xp6(1),e.Q6J("ngIf",n.bucketForm.showError("placement-target",_,"required"))}}function j_(t,o){1&t&&(e.ynx(0),e._UZ(1,"input",56),e.BQk())}function et(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend",25),e.SDv(2,57),e.qZA(),e.TgZ(3,"div",9),e.TgZ(4,"div",27),e.TgZ(5,"div",28),e.TgZ(6,"input",58),e.NdJ("change",function(){return e.CHM(_),e.oxw(2).setMfaDeleteValidators()}),e.qZA(),e.TgZ(7,"label",59),e.SDv(8,60),e.qZA(),e.TgZ(9,"cd-helper"),e.TgZ(10,"span"),e.SDv(11,61),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}}function _t(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,70),e.qZA())}function tt(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",67),e.SDv(2,68),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",69),e.YNc(5,_t,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.bucketForm.showError("mfa-token-serial",_,"required"))}}function nt(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,74),e.qZA())}function ot(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",71),e.SDv(2,72),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",73),e.YNc(5,nt,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.bucketForm.showError("mfa-token-pin",_,"required"))}}function it(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend",25),e.SDv(2,62),e.qZA(),e.TgZ(3,"div",9),e.TgZ(4,"div",27),e.TgZ(5,"div",28),e.TgZ(6,"input",63),e.NdJ("change",function(){return e.CHM(_),e.oxw(2).setMfaDeleteValidators()}),e.qZA(),e.TgZ(7,"label",64),e.SDv(8,65),e.qZA(),e.TgZ(9,"cd-helper"),e.TgZ(10,"span"),e.SDv(11,66),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(12,tt,6,1,"div",8),e.YNc(13,ot,6,1,"div",8),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(12),e.Q6J("ngIf",_.areMfaCredentialsRequired()),e.xp6(1),e.Q6J("ngIf",_.areMfaCredentialsRequired())}}function st(t,o){1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",75),e.SDv(2,76),e.qZA(),e.TgZ(3,"div",12),e.TgZ(4,"select",77),e.TgZ(5,"option",78),e.SDv(6,79),e.qZA(),e.TgZ(7,"option",80),e.SDv(8,81),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function at(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,86),e.qZA())}function rt(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,87),e.qZA())}function lt(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",82),e.ynx(2),e.SDv(3,83),e.BQk(),e.TgZ(4,"cd-helper"),e.SDv(5,84),e.qZA(),e.qZA(),e.TgZ(6,"div",12),e._UZ(7,"input",85),e.YNc(8,at,2,0,"span",14),e.YNc(9,rt,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(8),e.Q6J("ngIf",n.bucketForm.showError("lock_retention_period_days",_,"pattern")),e.xp6(1),e.Q6J("ngIf",n.bucketForm.showError("lock_retention_period_days",_,"lockDays"))}}const Le=function(t){return{required:t}};function ct(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.YNc(9,v_,5,0,"div",8),e.TgZ(10,"div",9),e.TgZ(11,"label",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.YNc(15,F_,2,0,"span",14),e.YNc(16,L_,2,0,"span",14),e.YNc(17,D_,2,0,"span",14),e.YNc(18,y_,2,0,"span",14),e.YNc(19,x_,2,0,"span",14),e.YNc(20,q_,2,0,"span",14),e.YNc(21,w_,2,0,"span",14),e.YNc(22,k_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(23,"div",9),e.TgZ(24,"label",15),e.SDv(25,16),e.qZA(),e.TgZ(26,"div",12),e.TgZ(27,"select",17),e.YNc(28,B_,2,1,"option",18),e.YNc(29,H_,2,1,"option",18),e.YNc(30,X_,2,2,"option",19),e.qZA(),e.YNc(31,K_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(32,"div",9),e.TgZ(33,"label",20),e.SDv(34,21),e.qZA(),e.TgZ(35,"div",12),e.YNc(36,V_,5,4,"ng-template",null,22,e.W1O),e.YNc(38,j_,2,0,"ng-container",23),e.qZA(),e.qZA(),e.YNc(39,et,12,0,"fieldset",24),e.YNc(40,it,14,2,"fieldset",24),e.TgZ(41,"fieldset"),e.TgZ(42,"legend",25),e.SDv(43,26),e.qZA(),e.TgZ(44,"div",9),e.TgZ(45,"div",27),e.TgZ(46,"div",28),e._UZ(47,"input",29),e.TgZ(48,"label",30),e.SDv(49,31),e.qZA(),e.TgZ(50,"cd-helper"),e.TgZ(51,"span"),e.SDv(52,32),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(53,st,9,0,"div",8),e.YNc(54,lt,10,2,"div",8),e.qZA(),e.qZA(),e.TgZ(55,"div",33),e.TgZ(56,"cd-form-button-panel",34),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().submit()}),e.ALo(57,"titlecase"),e.ALo(58,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),n=e.MAs(37),i=e.oxw();e.xp6(1),e.Q6J("formGroup",i.bucketForm),e.xp6(6),e.pQV(e.lcZ(6,29,i.action))(e.lcZ(7,31,i.resource)),e.QtT(5),e.xp6(2),e.Q6J("ngIf",i.editing),e.xp6(2),e.Q6J("ngClass",e.VKq(37,Le,!i.editing)),e.xp6(3),e.Q6J("readonly",i.editing)("autofocus",!i.editing),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"required")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"bucketNameInvalid")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"bucketNameNotAllowed")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"containsUpperCase")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"lowerCaseOrNumber")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"ipAddress")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"onlyLowerCaseAndNumbers")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"shouldBeInRange")),e.xp6(5),e.Q6J("autofocus",i.editing),e.xp6(1),e.Q6J("ngIf",null===i.owners),e.xp6(1),e.Q6J("ngIf",null!==i.owners),e.xp6(1),e.Q6J("ngForOf",i.owners),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("owner",_,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(39,Le,!i.editing)),e.xp6(5),e.Q6J("ngIf",i.editing)("ngIfElse",n),e.xp6(1),e.Q6J("ngIf",i.editing),e.xp6(1),e.Q6J("ngIf",i.editing),e.xp6(13),e.Q6J("ngIf",i.bucketForm.getValue("lock_enabled")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.getValue("lock_enabled")),e.xp6(2),e.Q6J("form",i.bucketForm)("submitText",e.lcZ(57,33,i.action)+" "+e.lcZ(58,35,i.resource))}}let De=(()=>{class t extends Ie.E{constructor(_,n,i,s,c,d,E,g){super(),this.route=_,this.router=n,this.formBuilder=i,this.rgwBucketService=s,this.rgwSiteService=c,this.rgwUserService=d,this.notificationService=E,this.actionLabels=g,this.editing=!1,this.owners=null,this.placementTargets=[],this.isVersioningAlreadyEnabled=!1,this.isMfaDeleteAlreadyEnabled=!1,this.icons=D.P,this.editing=this.router.url.startsWith(`/rgw/bucket/${A.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource="bucket",this.createForm()}get isVersioningEnabled(){return this.bucketForm.getValue("versioning")}get isMfaDeleteEnabled(){return this.bucketForm.getValue("mfa-delete")}createForm(){const _=this,n=m.h.custom("lockDays",()=>{if(!_.bucketForm||!u().get(_.bucketForm.getRawValue(),"lock_enabled"))return!1;const i=Number(_.bucketForm.getValue("lock_retention_period_days"));return!Number.isInteger(i)||0===i});this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[a.kI.required],this.editing?[]:[m.h.bucketName(),m.h.bucketExistence(!1,this.rgwBucketService)]],owner:[null,[a.kI.required]],"placement-target":[null,this.editing?[]:[a.kI.required]],versioning:[null],"mfa-delete":[null],"mfa-token-serial":[""],"mfa-token-pin":[""],lock_enabled:[{value:!1,disabled:this.editing}],lock_mode:["COMPLIANCE"],lock_retention_period_days:[0,[m.h.number(!1),n]]})}ngOnInit(){const _={owners:this.rgwUserService.enumerate()};this.editing||(_.getPlacementTargets=this.rgwSiteService.get("placement-targets")),this.route.params.subscribe(n=>{if(n.hasOwnProperty("bid")){const i=decodeURIComponent(n.bid);_.getBid=this.rgwBucketService.get(i)}(0,Y.D)(_).subscribe(i=>{if(this.owners=i.owners.sort(),i.getPlacementTargets){const s=i.getPlacementTargets;this.zonegroup=s.zonegroup,u().forEach(s.placement_targets,c=>{c.description=`${c.name} (${"pool"}: ${c.data_pool})`,this.placementTargets.push(c)}),1===this.placementTargets.length&&this.bucketForm.get("placement-target").setValue(this.placementTargets[0].name)}if(i.getBid){const s=i.getBid,c=u().clone(this.bucketForm.getRawValue());let d=u().pick(s,u().keys(c));d.lock_retention_period_days=this.rgwBucketService.getLockDays(s),d["placement-target"]=s.placement_rule,d.versioning=s.versioning===B.ENABLED,d["mfa-delete"]=s.mfa_delete===k.ENABLED,d=u().merge(c,d),this.bucketForm.setValue(d),this.editing&&(this.isVersioningAlreadyEnabled=this.isVersioningEnabled,this.isMfaDeleteAlreadyEnabled=this.isMfaDeleteEnabled,this.setMfaDeleteValidators(),d.lock_enabled&&this.bucketForm.controls.versioning.disable())}this.loadingReady()})})}goToListView(){this.router.navigate(["/rgw/bucket"])}submit(){if(this.bucketForm.pristine)return void this.goToListView();const _=this.bucketForm.value;if(this.editing){const n=this.getVersioningStatus(),i=this.getMfaDeleteStatus();this.rgwBucketService.update(_.bid,_.id,_.owner,n,i,_["mfa-token-serial"],_["mfa-token-pin"],_.lock_mode,_.lock_retention_period_days).subscribe(()=>{this.notificationService.show(Ae.k.success,"Updated Object Gateway bucket '" + _.bid + "'."),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(_.bid,_.owner,this.zonegroup,_["placement-target"],_.lock_enabled,_.lock_mode,_.lock_retention_period_days).subscribe(()=>{this.notificationService.show(Ae.k.success,"Created Object Gateway bucket '" + _.bid + "'"),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}areMfaCredentialsRequired(){return this.isMfaDeleteEnabled!==this.isMfaDeleteAlreadyEnabled||this.isMfaDeleteAlreadyEnabled&&this.isVersioningEnabled!==this.isVersioningAlreadyEnabled}setMfaDeleteValidators(){const _=this.bucketForm.get("mfa-token-serial"),n=this.bucketForm.get("mfa-token-pin");this.areMfaCredentialsRequired()?(_.setValidators(a.kI.required),n.setValidators(a.kI.required)):(_.setValidators(null),n.setValidators(null)),_.updateValueAndValidity(),n.updateValueAndValidity()}getVersioningStatus(){return this.isVersioningEnabled?B.ENABLED:B.SUSPENDED}getMfaDeleteStatus(){return this.isMfaDeleteEnabled?k.ENABLED:k.DISABLED}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(w.gz),e.Y36(w.F0),e.Y36(J.O),e.Y36(Me.o),e.Y36(We.I),e.Y36(O),e.Y36(ve.g),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,y,x,S,_e,te,ne,oe,ie,se,ae,re,le,ce,de,ue,Re;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",n="Name...",i="Owner",s="Placement target",c="Locking",d="Enabled",E="Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.",g="Id",C="This field is required.",b="Bucket names can only contain lowercase letters, numbers, periods and hyphens.",P="The chosen name is already in use.",G="Bucket names must not contain uppercase characters or underscores.",N="Each label must start and end with a lowercase letter or a number.",p="Bucket names cannot be formatted as IP address.",U="Bucket labels cannot be empty and can only contain lowercase letters, numbers and hyphens.",W="Bucket names must be 3 to 63 characters long.",Z="Loading...",$="-- Select a user --",h="This field is required.",I="Loading...",v="-- Select a placement target --",F="This field is required.",T="Versioning",y="Enabled",x="Enables versioning for the objects in the bucket.",S="Multi-Factor Authentication",_e="Delete enabled",te="Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.",ne="Token Serial Number",oe="This field is required.",ie="Token PIN",se="This field is required.",ae="Mode",re="Compliance",le="Governance",ce="Days",de="The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.",ue="The entered value must be a positive integer.",Re="Retention Days must be a positive integer.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","bucketForm","novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],o,[1,"card-body"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","bid",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","bid","name","bid","type","text","placeholder",n,"formControlName","bid",1,"form-control",3,"readonly","autofocus"],["class","invalid-feedback",4,"ngIf"],["for","owner",1,"cd-col-form-label","required"],i,["id","owner","name","owner","formControlName","owner",1,"form-control",3,"autofocus"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],["for","placement-target",1,"cd-col-form-label",3,"ngClass"],s,["placementTargetSelect",""],[4,"ngIf","ngIfElse"],[4,"ngIf"],[1,"cd-header"],c,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","lock_enabled","formControlName","lock_enabled","type","checkbox",1,"custom-control-input"],["for","lock_enabled",1,"custom-control-label"],d,E,[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["for","id",1,"cd-col-form-label"],g,["id","id","name","id","type","text","formControlName","id","readonly","",1,"form-control"],[1,"invalid-feedback"],C,b,P,G,N,p,U,W,[3,"ngValue"],Z,$,[3,"value"],h,["id","placement-target","name","placement-target","formControlName","placement-target",1,"form-control"],I,v,F,["id","placement-target","name","placement-target","formControlName","placement-target","type","text","readonly","",1,"form-control"],T,["type","checkbox","id","versioning","name","versioning","formControlName","versioning",1,"custom-control-input",3,"change"],["for","versioning",1,"custom-control-label"],y,x,S,["type","checkbox","id","mfa-delete","name","mfa-delete","formControlName","mfa-delete",1,"custom-control-input",3,"change"],["for","mfa-delete",1,"custom-control-label"],_e,te,["for","mfa-token-serial",1,"cd-col-form-label"],ne,["type","text","id","mfa-token-serial","name","mfa-token-serial","formControlName","mfa-token-serial",1,"form-control"],oe,["for","mfa-token-pin",1,"cd-col-form-label"],ie,["type","text","id","mfa-token-pin","name","mfa-token-pin","formControlName","mfa-token-pin",1,"form-control"],se,["for","lock_mode",1,"cd-col-form-label"],ae,["formControlName","lock_mode","name","lock_mode","id","lock_mode",1,"form-control"],["value","COMPLIANCE"],re,["value","GOVERNANCE"],le,["for","lock_retention_period_days",1,"cd-col-form-label"],ce,de,["type","number","id","lock_retention_period_days","formControlName","lock_retention_period_days","min","0",1,"form-control"],ue,Re]},template:function(_,n){1&_&&e.YNc(0,ct,59,41,"div",0),2&_&&e.Q6J("cdFormLoading",n.loading)},directives:[Fe.y,a._Y,a.JL,V.V,a.sg,f.O5,H.P,f.mk,q.o,a.Fj,X.b,a.JJ,a.u,j.U,a.EJ,f.sg,a.Wl,I_.S,ee.p,a.YN,a.Kr,a.wV,a.qQ],pipes:[f.rS,K.m],styles:[""]}),t})();var ye=r(18891),be=r(68136),xe=r(30982),z=r(35905),Pe=r(68774),qe=r(47557),we=r(66369),Q=r(51847),Ee=r(74937),Te=r(63285),ke=r(94928),dt=r(96102),Be=r(68962);function ut(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,24),e.qZA())}function Rt(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimless"),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.selection.bucket_quota.max_size)," ")}}function gt(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,25),e.qZA())}function Et(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.hij(" ",_.selection.bucket_quota.max_objects," ")}}function Tt(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,20),e.qZA(),e.TgZ(3,"table",1),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",2),e.SDv(7,21),e.qZA(),e.TgZ(8,"td",4),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",5),e.SDv(13,22),e.qZA(),e.YNc(14,ut,2,0,"td",0),e.YNc(15,Rt,3,3,"td",0),e.qZA(),e.TgZ(16,"tr"),e.TgZ(17,"td",5),e.SDv(18,23),e.qZA(),e.YNc(19,gt,2,0,"td",0),e.YNc(20,Et,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(2);e.xp6(9),e.Oqu(e.lcZ(10,5,_.selection.bucket_quota.enabled)),e.xp6(5),e.Q6J("ngIf",_.selection.bucket_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",_.selection.bucket_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota.max_objects>-1)}}function St(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"tr"),e.TgZ(2,"td",5),e.SDv(3,26),e.qZA(),e.TgZ(4,"td"),e._uU(5),e.qZA(),e.qZA(),e.TgZ(6,"tr"),e.TgZ(7,"td",5),e.SDv(8,27),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.qZA(),e.qZA(),e.BQk()),2&t){const _=e.oxw(2);e.xp6(5),e.Oqu(_.selection.lock_mode),e.xp6(5),e.Oqu(_.selection.lock_retention_period_days)}}function ft(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"table",1),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",2),e.SDv(5,3),e.qZA(),e.TgZ(6,"td",4),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",5),e.SDv(10,6),e.qZA(),e.TgZ(11,"td"),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",5),e.SDv(15,7),e.qZA(),e.TgZ(16,"td"),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",5),e.SDv(20,8),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.qZA(),e.qZA(),e.TgZ(23,"tr"),e.TgZ(24,"td",5),e.SDv(25,9),e.qZA(),e.TgZ(26,"td"),e._uU(27),e.qZA(),e.qZA(),e.TgZ(28,"tr"),e.TgZ(29,"td",5),e.SDv(30,10),e.qZA(),e.TgZ(31,"td"),e._uU(32),e.qZA(),e.qZA(),e.TgZ(33,"tr"),e.TgZ(34,"td",5),e.SDv(35,11),e.qZA(),e.TgZ(36,"td"),e._uU(37),e.qZA(),e.qZA(),e.TgZ(38,"tr"),e.TgZ(39,"td",5),e.SDv(40,12),e.qZA(),e.TgZ(41,"td"),e._uU(42),e.qZA(),e.qZA(),e.TgZ(43,"tr"),e.TgZ(44,"td",5),e.SDv(45,13),e.qZA(),e.TgZ(46,"td"),e._uU(47),e.qZA(),e.qZA(),e.TgZ(48,"tr"),e.TgZ(49,"td",5),e.SDv(50,14),e.qZA(),e.TgZ(51,"td"),e._uU(52),e.ALo(53,"cdDate"),e.qZA(),e.qZA(),e.TgZ(54,"tr"),e.TgZ(55,"td",5),e.SDv(56,15),e.qZA(),e.TgZ(57,"td"),e._uU(58),e.qZA(),e.qZA(),e.TgZ(59,"tr"),e.TgZ(60,"td",5),e.SDv(61,16),e.qZA(),e.TgZ(62,"td"),e._uU(63),e.qZA(),e.qZA(),e.TgZ(64,"tr"),e.TgZ(65,"td",5),e.SDv(66,17),e.qZA(),e.TgZ(67,"td"),e._uU(68),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(69,Tt,21,7,"div",0),e.TgZ(70,"legend"),e.SDv(71,18),e.qZA(),e.TgZ(72,"table",1),e.TgZ(73,"tbody"),e.TgZ(74,"tr"),e.TgZ(75,"td",2),e.SDv(76,19),e.qZA(),e.TgZ(77,"td",4),e._uU(78),e.ALo(79,"booleanText"),e.qZA(),e.qZA(),e.YNc(80,St,11,2,"ng-container",0),e.qZA(),e.qZA(),e.BQk()),2&t){const _=e.oxw();e.xp6(7),e.Oqu(_.selection.bid),e.xp6(5),e.Oqu(_.selection.id),e.xp6(5),e.Oqu(_.selection.owner),e.xp6(5),e.Oqu(_.selection.index_type),e.xp6(5),e.Oqu(_.selection.placement_rule),e.xp6(5),e.Oqu(_.selection.marker),e.xp6(5),e.Oqu(_.selection.max_marker),e.xp6(5),e.Oqu(_.selection.ver),e.xp6(5),e.Oqu(_.selection.master_ver),e.xp6(5),e.Oqu(e.lcZ(53,16,_.selection.mtime)),e.xp6(6),e.Oqu(_.selection.zonegroup),e.xp6(5),e.Oqu(_.selection.versioning),e.xp6(5),e.Oqu(_.selection.mfa_delete),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota),e.xp6(9),e.Oqu(e.lcZ(79,18,_.selection.lock_enabled)),e.xp6(2),e.Q6J("ngIf",_.selection.lock_enabled)}}let Ct=(()=>{class t{constructor(_){this.rgwBucketService=_}ngOnChanges(){this.selection&&this.rgwBucketService.get(this.selection.bid).subscribe(_=>{_.lock_retention_period_days=this.rgwBucketService.getLockDays(_),this.selection=_})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Me.o))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F;return o="Name",_="ID",n="Owner",i="Index type",s="Placement rule",c="Marker",d="Maximum marker",E="Version",g="Master version",C="Modification time",b="Zonegroup",P="Versioning",G="MFA Delete",N="Locking",p="Enabled",U="Bucket quota",W="Enabled",Z="Maximum size",$="Maximum objects",h="Unlimited",I="Unlimited",v="Mode",F="Days",[[4,"ngIf"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],o,[1,"w-75"],[1,"bold"],_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F]},template:function(_,n){1&_&&e.YNc(0,ft,81,20,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5],pipes:[dt.N,Be.T,we.n],styles:["table[_ngcontent-%COMP%]{table-layout:fixed}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{word-wrap:break-word}"]}),t})();var He=r(60251);const pt=["bucketSizeTpl"],Mt=["bucketObjectTpl"];function mt(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",8),2&t){const _=e.oxw().row;e.Q6J("total",_.bucket_quota.max_size)("used",_.bucket_size)}}function At(t,o){1&t&&e.SDv(0,9)}function bt(t,o){if(1&t&&(e.YNc(0,mt,1,2,"cd-usage-bar",6),e.YNc(1,At,1,0,"ng-template",null,7,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.bucket_quota.max_size>0&&_.bucket_quota.enabled)("ngIfElse",n)}}function Pt(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",12),2&t){const _=e.oxw().row;e.Q6J("total",_.bucket_quota.max_objects)("used",_.num_objects)("isBinary",!1)}}function Gt(t,o){1&t&&e.SDv(0,13)}function Nt(t,o){if(1&t&&(e.YNc(0,Pt,1,3,"cd-usage-bar",10),e.YNc(1,Gt,1,0,"ng-template",null,11,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.bucket_quota.max_objects>0&&_.bucket_quota.enabled)("ngIfElse",n)}}let Ut=(()=>{class t extends be.o{constructor(_,n,i,s,c,d,E,g){super(g),this.authStorageService=_,this.dimlessBinaryPipe=n,this.dimlessPipe=i,this.rgwBucketService=s,this.modalService=c,this.urlBuilder=d,this.actionLabels=E,this.ngZone=g,this.columns=[],this.buckets=[],this.selection=new Pe.r}ngOnInit(){this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:"Name",prop:"bid",flexGrow:2},{name:"Owner",prop:"owner",flexGrow:2.5},{name:"Used Capacity",prop:"bucket_size",flexGrow:.6,pipe:this.dimlessBinaryPipe},{name:"Capacity Limit %",prop:"size_usage",cellTemplate:this.bucketSizeTpl,flexGrow:.8},{name:"Objects",prop:"num_objects",flexGrow:.6,pipe:this.dimlessPipe},{name:"Object Limit %",prop:"object_usage",cellTemplate:this.bucketObjectTpl,flexGrow:.8}];const _=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().bid)}`;this.tableActions=[{permission:"create",icon:D.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:c=>!c.hasSelection},{permission:"update",icon:D.P.edit,routerLink:()=>this.urlBuilder.getEdit(_()),name:this.actionLabels.EDIT},{permission:"delete",icon:D.P.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:c=>c.hasMultiSelection}],this.setTableRefreshTimeout()}transformBucketData(){u().forEach(this.buckets,_=>{const n=_.bucket_quota.max_size,i=_.bucket_quota.max_objects;_.bucket_size=0,_.num_objects=0,u().isEmpty(_.usage)||(_.bucket_size=_.usage["rgw.main"].size_actual,_.num_objects=_.usage["rgw.main"].num_objects),_.size_usage=n>0?_.bucket_size/n:void 0,_.object_usage=i>0?_.num_objects/i:void 0})}getBucketList(_){this.setTableRefreshTimeout(),this.rgwBucketService.list(!0).subscribe(n=>{this.buckets=n,this.transformBucketData()},()=>{_.error()})}updateSelection(_){this.selection=_}deleteAction(){this.modalService.show(xe.M,{itemDescription:this.selection.hasSingleSelection?"bucket":"buckets",itemNames:this.selection.selected.map(_=>_.bid),submitActionObservable:()=>new ye.y(_=>{(0,Y.D)(this.selection.selected.map(n=>this.rgwBucketService.delete(n.bid))).subscribe({error:n=>{_.error(n),this.table.refreshBtn()},complete:()=>{_.complete(),this.table.refreshBtn()}})})})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Ee.j),e.Y36(qe.$),e.Y36(we.n),e.Y36(Me.o),e.Y36(Te.Z),e.Y36(Q.F),e.Y36(A.p4),e.Y36(e.R0b))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-list"]],viewQuery:function(_,n){if(1&_&&(e.Gf(z.a,7),e.Gf(pt,7),e.Gf(Mt,7)),2&_){let i;e.iGM(i=e.CRH())&&(n.table=i.first),e.iGM(i=e.CRH())&&(n.bucketSizeTpl=i.first),e.iGM(i=e.CRH())&&(n.bucketObjectTpl=i.first)}},features:[e._Bn([{provide:Q.F,useValue:new Q.F("rgw/bucket")}]),e.qOj],decls:8,vars:9,consts:function(){let o,_;return o="No Limit",_="No Limit",[["columnMode","flex","selectionType","multiClick","identifier","bid",3,"autoReload","data","columns","hasDetails","status","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["bucketSizeTpl",""],["bucketObjectTpl",""],[3,"total","used",4,"ngIf","ngIfElse"],["noSizeQuota",""],[3,"total","used"],o,[3,"total","used","isBinary",4,"ngIf","ngIfElse"],["noObjectQuota",""],[3,"total","used","isBinary"],_]},template:function(_,n){1&_&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(s){return n.setExpandedRow(s)})("updateSelection",function(s){return n.updateSelection(s)})("fetchData",function(s){return n.getBucketList(s)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-rgw-bucket-details",3),e.qZA(),e.YNc(4,bt,3,2,"ng-template",null,4,e.W1O),e.YNc(6,Nt,3,2,"ng-template",null,5,e.W1O)),2&_&&(e.Q6J("autoReload",!1)("data",n.buckets)("columns",n.columns)("hasDetails",!0)("status",n.tableStatus),e.xp6(2),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("selection",n.expandedRow))},directives:[z.a,ke.K,Ct,f.O5,He.O],styles:[""]}),t})();var Wt=r(58111),Xe=r(59376),Zt=r(61350),$t=r(98056),Ke=r(76317);function ht(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table-key-value",11),e.NdJ("fetchData",function(){return e.CHM(_),e.oxw(2).getMetaData()}),e.qZA()}if(2&t){const _=e.oxw(2);e.Q6J("data",_.metadata)}}function It(t,o){if(1&t&&e._UZ(0,"cd-table-performance-counter",12),2&t){const _=e.oxw(2);e.Q6J("serviceId",_.serviceMapId)}}function vt(t,o){if(1&t&&e._UZ(0,"cd-grafana",15),2&t){const _=e.oxw(3);e.Q6J("grafanaPath","rgw-instance-detail?var-rgw_servers=rgw."+_.serviceId)("type","metrics")}}function Ft(t,o){1&t&&(e.TgZ(0,"li",13),e.TgZ(1,"a",4),e.SDv(2,14),e.qZA(),e.YNc(3,vt,1,2,"ng-template",6),e.qZA())}function Lt(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,ht,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,It,1,1,"ng-template",6),e.qZA(),e.YNc(11,Ft,4,0,"li",9),e.qZA(),e._UZ(12,"div",10),e.BQk()),2&t){const _=e.MAs(2),n=e.oxw();e.xp6(11),e.Q6J("ngIf",n.grafanaPermission.read),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Dt=(()=>{class t{constructor(_,n){this.rgwDaemonService=_,this.authStorageService=n,this.serviceId="",this.serviceMapId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection&&(this.serviceId=this.selection.id,this.serviceMapId=this.selection.service_map_id)}getMetaData(){u().isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(_=>{this.metadata=_.rgw_metadata})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ge.b),e.Y36(Ee.j))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-daemon-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n;return o="Details",_="Performance Counters",n="Performance Details",[[4,"ngIf"],["ngbNav","","cdStatefulTab","rgw-daemon-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","performance-counters"],_,["ngbNavItem","performance-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"data","fetchData"],["serviceType","rgw",3,"serviceId"],["ngbNavItem","performance-details"],n,["uid","x5ARzZtmk","grafanaStyle","one",3,"grafanaPath","type"]]},template:function(_,n){1&_&&e.YNc(0,Lt,13,2,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5,M.Pz,Xe.m,M.nv,M.Vx,M.uN,M.tO,Zt.b,$t.p,Ke.F],styles:[""]}),t})();function yt(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",8),e.NdJ("setExpandedRow",function(i){return e.CHM(_),e.oxw().setExpandedRow(i)})("fetchData",function(i){return e.CHM(_),e.oxw().getDaemonList(i)}),e._UZ(1,"cd-rgw-daemon-details",9),e.qZA()}if(2&t){const _=e.oxw();e.Q6J("data",_.daemons)("columns",_.columns)("hasDetails",!0),e.xp6(1),e.Q6J("selection",_.expandedRow)}}function xt(t,o){1&t&&e._UZ(0,"cd-grafana",11),2&t&&e.Q6J("grafanaPath","rgw-overview?")("type","metrics")}function qt(t,o){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,10),e.qZA(),e.YNc(3,xt,1,2,"ng-template",5),e.qZA())}function wt(t,o){1&t&&e._UZ(0,"cd-grafana",13),2&t&&e.Q6J("grafanaPath","radosgw-sync-overview?")("type","metrics")}function kt(t,o){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,12),e.qZA(),e.YNc(3,wt,1,2,"ng-template",5),e.qZA())}let Bt=(()=>{class t extends be.o{constructor(_,n,i,s){super(),this.rgwDaemonService=_,this.authStorageService=n,this.cephShortVersionPipe=i,this.rgwSiteService=s,this.columns=[],this.daemons=[],this.updateDaemons=c=>{this.daemons=c}}ngOnInit(){this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:"ID",prop:"id",flexGrow:2},{name:"Hostname",prop:"server_hostname",flexGrow:2},{name:"Zone",prop:"zone_name",flexGrow:2},{name:"Zone Group",prop:"zonegroup_name",flexGrow:2},{name:"Realm",prop:"realm_name",flexGrow:2},{name:"Version",prop:"version",flexGrow:1,pipe:this.cephShortVersionPipe}],this.rgwSiteService.get("realms").subscribe(_=>this.isMultiSite=_.length>0)}getDaemonList(_){this.rgwDaemonService.list().subscribe(this.updateDaemons,()=>{_.error()})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ge.b),e.Y36(Ee.j),e.Y36(Wt.F),e.Y36(We.I))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-daemon-list"]],features:[e.qOj],decls:9,vars:3,consts:function(){let o,_,n;return o="Daemons List",_="Overall Performance",n="Sync Performance",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["columnMode","flex",3,"data","columns","hasDetails","setExpandedRow","fetchData"],["cdTableDetail","",3,"selection"],_,["uid","WAkugZpiz","grafanaStyle","two",3,"grafanaPath","type"],n,["uid","rgw-sync-overview","grafanaStyle","two",3,"grafanaPath","type"]]},template:function(_,n){if(1&_&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,yt,2,4,"ng-template",5),e.qZA(),e.YNc(6,qt,4,0,"li",6),e.YNc(7,kt,4,0,"li",6),e.qZA(),e._UZ(8,"div",7)),2&_){const i=e.MAs(1);e.xp6(6),e.Q6J("ngIf",n.grafanaPermission.read),e.xp6(1),e.Q6J("ngIf",n.grafanaPermission.read&&n.isMultiSite),e.xp6(1),e.Q6J("ngbNavOutlet",i)}},directives:[M.Pz,M.nv,M.Vx,M.uN,f.O5,M.tO,z.a,Dt,Ke.F],styles:[""]}),t})();var Ht=r(58071),Ge=r(28211),Se=(()=>{return(t=Se||(Se={})).USERS="users",t.BUCKETS="buckets",t.METADATA="metadata",t.USAGE="usage",t.ZONE="zone",Se;var t})();let ze=(()=>{class t{static getAll(){return Object.values(t.capabilities)}}return t.capabilities=Se,t})();var fe=r(60312);function Xt(t,o){1&t&&e._UZ(0,"input",22),2&t&&e.Q6J("readonly",!0)}function Kt(t,o){1&t&&(e.TgZ(0,"option",17),e.SDv(1,25),e.qZA()),2&t&&e.Q6J("ngValue",null)}function zt(t,o){if(1&t&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function Qt(t,o){if(1&t&&(e.TgZ(0,"select",23),e.YNc(1,Kt,2,1,"option",24),e.YNc(2,zt,2,2,"option",19),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.Q6J("ngIf",null!==_.types),e.xp6(1),e.Q6J("ngForOf",_.types)}}function Yt(t,o){1&t&&(e.TgZ(0,"span",27),e.SDv(1,28),e.qZA())}function Jt(t,o){if(1&t&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Vt(t,o){1&t&&(e.TgZ(0,"span",27),e.SDv(1,29),e.qZA())}const jt=function(t){return{required:t}},en=function(){return["read","write","*"]};let _n=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.activeModal=n,this.actionLabels=i,this.submitAction=new e.vpe,this.editing=!0,this.types=[],this.resource="capability",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({type:[null,[a.kI.required]],perm:[null,[a.kI.required]]})}setEditing(_=!0){this.editing=_,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD}setValues(_,n){this.formGroup.setValue({type:_,perm:n})}setCapabilities(_){const n=[];_.forEach(i=>{n.push(i.type)}),this.types=[],ze.getAll().forEach(i=>{-1===u().indexOf(n,i)&&this.types.push(i)})}onSubmit(){this.submitAction.emit(this.formGroup.value),this.activeModal.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-capability-modal"]],outputs:{submitAction:"submitAction"},decls:29,vars:24,consts:function(){let o,_,n,i,s,c,d;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Type",n="Permission",i="-- Select a permission --",s="-- Select a type --",c="This field is required.",d="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","type",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","type","class","form-control","type","text","formControlName","type",3,"readonly",4,"ngIf"],["id","type","class","form-control","formControlName","type","autofocus","",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["for","perm",1,"cd-col-form-label","required"],n,["id","perm","formControlName","perm",1,"form-control"],[3,"ngValue"],i,[3,"value",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["id","type","type","text","formControlName","type",1,"form-control",3,"readonly"],["id","type","formControlName","type","autofocus","",1,"form-control"],[3,"ngValue",4,"ngIf"],s,[3,"value"],[1,"invalid-feedback"],c,d]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.YNc(13,Xt,1,1,"input",11),e.YNc(14,Qt,3,2,"select",12),e.YNc(15,Yt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(16,"div",7),e.TgZ(17,"label",14),e.SDv(18,15),e.qZA(),e.TgZ(19,"div",10),e.TgZ(20,"select",16),e.TgZ(21,"option",17),e.SDv(22,18),e.qZA(),e.YNc(23,Jt,2,2,"option",19),e.qZA(),e.YNc(24,Vt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(25,"div",20),e.TgZ(26,"cd-form-button-panel",21),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(27,"titlecase"),e.ALo(28,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,13,n.action))(e.lcZ(4,15,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(4),e.Q6J("ngClass",e.VKq(21,jt,!n.editing)),e.xp6(3),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",!n.editing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("type",i,"required")),e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(23,en)),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("perm",i,"required")),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(27,17,n.action)+" "+e.lcZ(28,19,n.resource))}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,f.mk,f.O5,q.o,a.EJ,X.b,a.JJ,a.u,a.YN,a.Kr,f.sg,ee.p,a.Fj,j.U],pipes:[f.rS,K.m],styles:[""]}),t})();var Ce=r(4416),pe=r(58039);function tn(t,o){1&t&&e._UZ(0,"input",17),2&t&&e.Q6J("readonly",!0)}function nn(t,o){1&t&&(e.TgZ(0,"option",21),e.SDv(1,22),e.qZA()),2&t&&e.Q6J("ngValue",null)}function on(t,o){if(1&t&&(e.TgZ(0,"option",23),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function sn(t,o){if(1&t&&(e.TgZ(0,"select",18),e.YNc(1,nn,2,1,"option",19),e.YNc(2,on,2,2,"option",20),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.Q6J("ngIf",null!==_.userCandidates),e.xp6(1),e.Q6J("ngForOf",_.userCandidates)}}function an(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,25),e.qZA())}function rn(t,o){1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"div",26),e.TgZ(2,"div",27),e._UZ(3,"input",28),e.TgZ(4,"label",29),e.SDv(5,30),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function ln(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,38),e.qZA())}const Ne=function(t){return{required:t}};function cn(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",31),e.SDv(2,32),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",33),e._UZ(5,"input",34),e.TgZ(6,"span",35),e._UZ(7,"button",36),e._UZ(8,"cd-copy-2-clipboard-button",37),e.qZA(),e.qZA(),e.YNc(9,ln,2,0,"span",13),e.qZA(),e.qZA()),2&t){const _=e.oxw(),n=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(3,Ne,!_.viewing)),e.xp6(4),e.Q6J("readonly",_.viewing),e.xp6(4),e.Q6J("ngIf",_.formGroup.showError("access_key",n,"required"))}}function dn(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,44),e.qZA())}function un(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",39),e.SDv(2,40),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",33),e._UZ(5,"input",41),e.TgZ(6,"span",35),e._UZ(7,"button",42),e._UZ(8,"cd-copy-2-clipboard-button",43),e.qZA(),e.qZA(),e.YNc(9,dn,2,0,"span",13),e.qZA(),e.qZA()),2&t){const _=e.oxw(),n=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(3,Ne,!_.viewing)),e.xp6(4),e.Q6J("readonly",_.viewing),e.xp6(4),e.Q6J("ngIf",_.formGroup.showError("secret_key",n,"required"))}}let Qe=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.activeModal=n,this.actionLabels=i,this.submitAction=new e.vpe,this.viewing=!0,this.userCandidates=[],this.resource="S3 Key",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({user:[null,[a.kI.required]],generate_key:[!0],access_key:[null,[m.h.requiredIf({generate_key:!1})]],secret_key:[null,[m.h.requiredIf({generate_key:!1})]]})}setViewing(_=!0){this.viewing=_,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE}setValues(_,n,i){this.formGroup.setValue({user:_,generate_key:u().isEmpty(n),access_key:n,secret_key:i})}setUserCandidates(_){this.userCandidates=_}onSubmit(){this.submitAction.emit(this.formGroup.value),this.activeModal.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-s3-key-modal"]],outputs:{submitAction:"submitAction"},decls:23,vars:24,consts:function(){let o,_,n,i,s,c,d,E,g;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="-- Select a username --",i="This field is required.",s="Auto-generate key",c="Access key",d="This field is required.",E="Secret key",g="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","user",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","user","class","form-control","type","text","formControlName","user",3,"readonly",4,"ngIf"],["id","user","class","form-control","formControlName","user","autofocus","",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent"],["id","user","type","text","formControlName","user",1,"form-control",3,"readonly"],["id","user","formControlName","user","autofocus","",1,"form-control"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],n,[3,"value"],[1,"invalid-feedback"],i,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","generate_key","type","checkbox","formControlName","generate_key",1,"custom-control-input"],["for","generate_key",1,"custom-control-label"],s,["for","access_key",1,"cd-col-form-label",3,"ngClass"],c,[1,"input-group"],["id","access_key","type","password","formControlName","access_key",1,"form-control",3,"readonly"],[1,"input-group-append"],["type","button","cdPasswordButton","access_key",1,"btn","btn-light"],["source","access_key"],d,["for","secret_key",1,"cd-col-form-label",3,"ngClass"],E,["id","secret_key","type","password","formControlName","secret_key",1,"form-control",3,"readonly"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],g]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.YNc(13,tn,1,1,"input",11),e.YNc(14,sn,3,2,"select",12),e.YNc(15,an,2,0,"span",13),e.qZA(),e.qZA(),e.YNc(16,rn,6,0,"div",14),e.YNc(17,cn,10,5,"div",14),e.YNc(18,un,10,5,"div",14),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(21,"titlecase"),e.ALo(22,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,14,n.action))(e.lcZ(4,16,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(4),e.Q6J("ngClass",e.VKq(22,Ne,!n.viewing)),e.xp6(3),e.Q6J("ngIf",n.viewing),e.xp6(1),e.Q6J("ngIf",!n.viewing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",!n.viewing),e.xp6(1),e.Q6J("ngIf",!n.formGroup.getValue("generate_key")),e.xp6(1),e.Q6J("ngIf",!n.formGroup.getValue("generate_key")),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(21,18,n.action)+" "+e.lcZ(22,20,n.resource))("showSubmit",!n.viewing)}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,f.mk,f.O5,ee.p,q.o,a.Fj,X.b,a.JJ,a.u,a.EJ,j.U,f.sg,a.YN,a.Kr,a.Wl,Ce.C,pe.s],pipes:[f.rS,K.m],styles:[""]}),t})();class Rn{}function gn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,30),e.qZA())}function En(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,31),e.qZA())}function Tn(t,o){if(1&t&&(e.TgZ(0,"option",32),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Sn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,33),e.qZA())}function fn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,48),e.qZA())}function Cn(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",41),e.SDv(2,42),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",43),e._UZ(5,"input",44),e.TgZ(6,"span",45),e._UZ(7,"button",46),e._UZ(8,"cd-copy-2-clipboard-button",47),e.qZA(),e.qZA(),e.YNc(9,fn,2,0,"span",15),e.qZA(),e.qZA()),2&t){const _=e.oxw(2),n=e.MAs(7);e.xp6(9),e.Q6J("ngIf",_.formGroup.showError("secret_key",n,"required"))}}function pn(t,o){if(1&t&&(e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,34),e.qZA(),e.TgZ(3,"div",7),e.TgZ(4,"div",35),e.TgZ(5,"div",36),e._UZ(6,"input",37),e.TgZ(7,"label",38),e.SDv(8,39),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,Cn,10,1,"div",40),e.qZA()),2&t){const _=e.oxw();e.xp6(9),e.Q6J("ngIf",!_.editing&&!_.formGroup.getValue("generate_secret"))}}const Mn=function(t){return{required:t}},mn=function(){return["read","write"]};let An=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.bsModalRef=n,this.actionLabels=i,this.submitAction=new e.vpe,this.editing=!0,this.subusers=[],this.resource="Subuser",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[a.kI.required,this.subuserValidator()]],perm:[null,[a.kI.required]],generate_secret:[!0],secret_key:[null,[m.h.requiredIf({generate_secret:!1})]]})}subuserValidator(){const _=this;return n=>_.editing||(0,m.P)(n.value)?null:_.subusers.some(s=>u().isEqual(_.getSubuserName(s.id),n.value))?{subuserIdExists:!0}:null}getSubuserName(_){if(u().isEmpty(_))return _;const n=_.match(/([^:]+)(:(.+))?/);return u().isUndefined(n[3])?n[1]:n[3]}setEditing(_=!0){this.editing=_,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE}setValues(_,n="",i=""){this.formGroup.setValue({uid:_,subuid:this.getSubuserName(n),perm:i,generate_secret:!0,secret_key:null})}setSubusers(_){this.subusers=_}onSubmit(){const _=this.formGroup.value,n=new Rn;n.id=`${_.uid}:${_.subuid}`,n.permissions=_.perm,n.generate_secret=_.generate_secret,n.secret_key=_.secret_key,this.submitAction.emit(n),this.bsModalRef.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-subuser-modal"]],outputs:{submitAction:"submitAction"},decls:39,vars:26,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="Subuser",i="Permission",s="-- Select a permission --",c="read, write",d="full",E="This field is required.",g="The chosen subuser ID is already in use.",C="This field is required.",b="Swift key",P="Auto-generate secret",G="Secret key",N="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","uid",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["id","uid","type","text","formControlName","uid",1,"form-control",3,"readonly"],["for","subuid",1,"cd-col-form-label",3,"ngClass"],n,["id","subuid","type","text","formControlName","subuid","autofocus","",1,"form-control",3,"readonly"],["class","invalid-feedback",4,"ngIf"],["for","perm",1,"cd-col-form-label","required"],i,["id","perm","formControlName","perm",1,"form-control"],[3,"ngValue"],s,[3,"value",4,"ngFor","ngForOf"],["value","read-write"],c,["value","full-control"],d,[4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],E,g,[3,"value"],C,b,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","generate_secret","type","checkbox","formControlName","generate_secret",1,"custom-control-input"],["for","generate_secret",1,"custom-control-label"],P,["class","form-group row",4,"ngIf"],["for","secret_key",1,"cd-col-form-label","required"],G,[1,"input-group"],["id","secret_key","type","password","formControlName","secret_key",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],N]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",12),e.SDv(16,13),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",14),e.YNc(19,gn,2,0,"span",15),e.YNc(20,En,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(21,"div",7),e.TgZ(22,"label",16),e.SDv(23,17),e.qZA(),e.TgZ(24,"div",10),e.TgZ(25,"select",18),e.TgZ(26,"option",19),e.SDv(27,20),e.qZA(),e.YNc(28,Tn,2,2,"option",21),e.TgZ(29,"option",22),e.SDv(30,23),e.qZA(),e.TgZ(31,"option",24),e.SDv(32,25),e.qZA(),e.qZA(),e.YNc(33,Sn,2,0,"span",15),e.qZA(),e.qZA(),e.YNc(34,pn,10,1,"fieldset",26),e.qZA(),e.TgZ(35,"div",27),e.TgZ(36,"cd-form-button-panel",28),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(37,"titlecase"),e.ALo(38,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.bsModalRef),e.xp6(4),e.pQV(e.lcZ(3,15,n.action))(e.lcZ(4,17,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(7),e.Q6J("readonly",!0),e.xp6(2),e.Q6J("ngClass",e.VKq(23,Mn,!n.editing)),e.xp6(3),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("subuid",i,"required")),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("subuid",i,"subuserIdExists")),e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(25,mn)),e.xp6(5),e.Q6J("ngIf",n.formGroup.showError("perm",i,"required")),e.xp6(1),e.Q6J("ngIf",!n.editing),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(37,19,n.action)+" "+e.lcZ(38,21,n.resource))}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,q.o,a.Fj,X.b,a.JJ,a.u,f.mk,j.U,f.O5,a.EJ,a.YN,a.Kr,f.sg,ee.p,a.Wl,Ce.C,pe.s],pipes:[f.rS,K.m],styles:[""]}),t})();var bn=r(13472);let Ye=(()=>{class t{constructor(_,n){this.activeModal=_,this.actionLabels=n,this.resource="Swift Key",this.action=this.actionLabels.SHOW}setValues(_,n){this.user=_,this.secret_key=n}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-swift-key-modal"]],decls:24,vars:11,consts:function(){let o,_,n;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="Secret key",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],[1,"modal-body"],["novalidate",""],[1,"form-group","row"],["for","user",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["id","user","name","user","type","text",1,"form-control",3,"readonly","ngModel","ngModelChange"],["for","secret_key",1,"cd-col-form-label"],n,[1,"input-group"],["id","secret_key","name","secret_key","type","password",1,"form-control",3,"ngModel","readonly","ngModelChange"],[1,"input-group-append"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],[1,"modal-footer"],[3,"backAction"]]},template:function(_,n){1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"div",4),e.TgZ(7,"form",5),e.TgZ(8,"div",6),e.TgZ(9,"label",7),e.SDv(10,8),e.qZA(),e.TgZ(11,"div",9),e.TgZ(12,"input",10),e.NdJ("ngModelChange",function(s){return n.user=s}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(13,"div",6),e.TgZ(14,"label",11),e.SDv(15,12),e.qZA(),e.TgZ(16,"div",9),e.TgZ(17,"div",13),e.TgZ(18,"input",14),e.NdJ("ngModelChange",function(s){return n.secret_key=s}),e.qZA(),e.TgZ(19,"span",15),e._UZ(20,"button",16),e._UZ(21,"cd-copy-2-clipboard-button",17),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(22,"div",18),e.TgZ(23,"cd-back-button",19),e.NdJ("backAction",function(){return n.activeModal.close()}),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_&&(e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,7,n.action))(e.lcZ(4,9,n.resource)),e.QtT(2),e.xp6(8),e.Q6J("readonly",!0)("ngModel",n.user),e.xp6(6),e.Q6J("ngModel",n.secret_key)("readonly",!0))},directives:[fe.z,a._Y,a.JL,a.F,H.P,q.o,a.Fj,X.b,a.JJ,a.On,Ce.C,pe.s,bn.W],pipes:[f.rS,K.m],styles:[""]}),t})();var Pn=r(17932);function Gn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,50),e.qZA())}function Nn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,51),e.qZA())}function On(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,52),e.qZA())}function Un(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,56),e.qZA())}function Wn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,57),e.qZA())}function Zn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",53),e.SDv(2,54),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",55),e.YNc(5,Un,2,0,"span",13),e.YNc(6,Wn,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(4),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("tenant",_,"pattern")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("tenant",_,"notUnique"))}}function $n(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,58),e.qZA())}function hn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,59),e.qZA())}function In(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,60),e.qZA())}function vn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,61),e.qZA())}function Fn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,64),e.qZA())}function Ln(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,65),e.qZA())}function Dn(t,o){if(1&t&&(e.TgZ(0,"div",8),e._UZ(1,"label",62),e.TgZ(2,"div",11),e._UZ(3,"input",63),e.YNc(4,Fn,2,0,"span",13),e.YNc(5,Ln,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(4),e.Q6J("ngIf",n.userForm.showError("max_buckets",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("max_buckets",_,"min"))}}function yn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,77),e.qZA())}function xn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",70),e.SDv(2,71),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",72),e._UZ(5,"input",73),e.TgZ(6,"span",74),e._UZ(7,"button",75),e._UZ(8,"cd-copy-2-clipboard-button",76),e.qZA(),e.qZA(),e.YNc(9,yn,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(9),e.Q6J("ngIf",n.userForm.showError("access_key",_,"required"))}}function qn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,83),e.qZA())}function wn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",78),e.SDv(2,79),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",72),e._UZ(5,"input",80),e.TgZ(6,"span",74),e._UZ(7,"button",81),e._UZ(8,"cd-copy-2-clipboard-button",82),e.qZA(),e.qZA(),e.YNc(9,qn,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(9),e.Q6J("ngIf",n.userForm.showError("secret_key",_,"required"))}}function kn(t,o){if(1&t&&(e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,66),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"div",14),e.TgZ(5,"div",15),e._UZ(6,"input",67),e.TgZ(7,"label",68),e.SDv(8,69),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,xn,10,1,"div",19),e.YNc(10,wn,10,1,"div",19),e.qZA()),2&t){const _=e.oxw(2);e.xp6(9),e.Q6J("ngIf",!_.editing&&!_.userForm.getValue("generate_key")),e.xp6(1),e.Q6J("ngIf",!_.editing&&!_.userForm.getValue("generate_key"))}}function Bn(t,o){1&t&&(e.TgZ(0,"span",93),e.TgZ(1,"span",94),e.SDv(2,95),e.qZA(),e.qZA())}const L=function(t){return[t]};function Hn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",72),e.TgZ(2,"div",96),e.TgZ(3,"span",97),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",98),e.TgZ(6,"div",99),e.TgZ(7,"span",97),e._UZ(8,"i"),e.qZA(),e.qZA(),e._UZ(9,"input",98),e.TgZ(10,"span",74),e.TgZ(11,"button",100),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showSubuserModal(s)}),e._UZ(12,"i",90),e.qZA(),e.TgZ(13,"button",101),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteSubuser(s)}),e._UZ(14,"i",90),e.qZA(),e.qZA(),e.qZA(),e._UZ(15,"span",94),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.user),e.xp6(1),e.s9C("value",_.id),e.xp6(3),e.Tol(n.icons.share),e.xp6(1),e.s9C("value","full-control"===_.permissions?"full":_.permissions),e.xp6(3),e.Q6J("ngClass",e.VKq(10,L,n.icons.edit)),e.xp6(2),e.Q6J("ngClass",e.VKq(12,L,n.icons.destroy))}}function Xn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,84),e.qZA(),e.TgZ(3,"div",85),e.TgZ(4,"div",14),e.YNc(5,Bn,3,0,"span",86),e.YNc(6,Hn,16,14,"span",87),e.TgZ(7,"div",85),e.TgZ(8,"div",88),e.TgZ(9,"button",89),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showSubuserModal()}),e._UZ(10,"i",90),e.ynx(11),e.SDv(12,91),e.ALo(13,"titlecase"),e.ALo(14,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(15,"span",92),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(5),e.Q6J("ngIf",0===_.subusers.length),e.xp6(1),e.Q6J("ngForOf",_.subusers),e.xp6(4),e.Q6J("ngClass",e.VKq(9,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(13,5,_.actionLabels.CREATE))(e.lcZ(14,7,_.subuserLabel)),e.QtT(12)}}function Kn(t,o){1&t&&(e.TgZ(0,"span",93),e.TgZ(1,"span",94),e.SDv(2,107),e.qZA(),e.qZA())}function zn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",72),e.TgZ(2,"div",96),e.TgZ(3,"div",97),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",98),e.TgZ(6,"span",74),e.TgZ(7,"button",108),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showS3KeyModal(s)}),e._UZ(8,"i",90),e.qZA(),e.TgZ(9,"button",109),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteS3Key(s)}),e._UZ(10,"i",90),e.qZA(),e.qZA(),e.qZA(),e._UZ(11,"span",94),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.key),e.xp6(1),e.s9C("value",_.user),e.xp6(3),e.Q6J("ngClass",e.VKq(6,L,n.icons.show)),e.xp6(2),e.Q6J("ngClass",e.VKq(8,L,n.icons.destroy))}}function Qn(t,o){1&t&&(e.TgZ(0,"span",93),e.TgZ(1,"span",94),e.SDv(2,110),e.qZA(),e.qZA())}function Yn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",72),e.TgZ(2,"div",96),e.TgZ(3,"span",97),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",98),e.TgZ(6,"span",74),e.TgZ(7,"button",111),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showSwiftKeyModal(s)}),e._UZ(8,"i",90),e.qZA(),e.qZA(),e.qZA(),e._UZ(9,"span",94),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.key),e.xp6(1),e.s9C("value",_.user),e.xp6(3),e.Q6J("ngClass",e.VKq(5,L,n.icons.show))}}function Jn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,102),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"label",62),e.SDv(5,103),e.qZA(),e.TgZ(6,"div",11),e.YNc(7,Kn,3,0,"span",86),e.YNc(8,zn,12,10,"span",87),e.TgZ(9,"div",85),e.TgZ(10,"div",88),e.TgZ(11,"button",104),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showS3KeyModal()}),e._UZ(12,"i",90),e.ynx(13),e.SDv(14,105),e.ALo(15,"titlecase"),e.ALo(16,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(17,"span",92),e.qZA(),e._UZ(18,"hr"),e.qZA(),e.TgZ(19,"div",8),e.TgZ(20,"label",62),e.SDv(21,106),e.qZA(),e.TgZ(22,"div",11),e.YNc(23,Qn,3,0,"span",86),e.YNc(24,Yn,10,7,"span",87),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(7),e.Q6J("ngIf",0===_.s3Keys.length),e.xp6(1),e.Q6J("ngForOf",_.s3Keys),e.xp6(4),e.Q6J("ngClass",e.VKq(11,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(15,7,_.actionLabels.CREATE))(e.lcZ(16,9,_.s3keyLabel)),e.QtT(14),e.xp6(7),e.Q6J("ngIf",0===_.swiftKeys.length),e.xp6(1),e.Q6J("ngForOf",_.swiftKeys)}}function Vn(t,o){1&t&&(e.TgZ(0,"span",93),e.TgZ(1,"span",94),e.SDv(2,115),e.qZA(),e.qZA())}function jn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",72),e.TgZ(2,"span",96),e.TgZ(3,"div",97),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",98),e.TgZ(6,"span",74),e.TgZ(7,"button",116),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showCapabilityModal(s)}),e._UZ(8,"i",90),e.qZA(),e.TgZ(9,"button",117),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteCapability(s)}),e._UZ(10,"i",90),e.qZA(),e.qZA(),e.qZA(),e._UZ(11,"span",94),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.share),e.xp6(1),e.hYB("value","",_.type,":",_.perm,""),e.xp6(3),e.Q6J("ngClass",e.VKq(7,L,n.icons.edit)),e.xp6(2),e.Q6J("ngClass",e.VKq(9,L,n.icons.destroy))}}function eo(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,112),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"div",14),e.YNc(5,Vn,3,0,"span",86),e.YNc(6,jn,12,11,"span",87),e.TgZ(7,"div",85),e.TgZ(8,"div",88),e.TgZ(9,"button",113),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showCapabilityModal()}),e.ALo(10,"pipeFunction"),e.ALo(11,"pipeFunction"),e._UZ(12,"i",90),e.ynx(13),e.SDv(14,114),e.ALo(15,"titlecase"),e.ALo(16,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(17,"span",92),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(5),e.Q6J("ngIf",0===_.capabilities.length),e.xp6(1),e.Q6J("ngForOf",_.capabilities),e.xp6(3),e.Q6J("disabled",e.xi3(10,7,_.capabilities,_.hasAllCapabilities))("disableTooltip",!e.xi3(11,10,_.capabilities,_.hasAllCapabilities)),e.xp6(3),e.Q6J("ngClass",e.VKq(17,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(15,13,_.actionLabels.ADD))(e.lcZ(16,15,_.capabilityLabel)),e.QtT(14)}}function _o(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",118),e.TgZ(4,"label",119),e.SDv(5,120),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function to(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,124),e.qZA())}function no(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,125),e.qZA())}function oo(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",121),e.SDv(2,122),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",123),e.YNc(5,to,2,0,"span",13),e.YNc(6,no,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("user_quota_max_size",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_quota_max_size",_,"quotaMaxSize"))}}function io(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",126),e.TgZ(4,"label",127),e.SDv(5,128),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function so(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,132),e.qZA())}function ao(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,133),e.qZA())}function ro(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",129),e.SDv(2,130),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",131),e.YNc(5,so,2,0,"span",13),e.YNc(6,ao,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("user_quota_max_objects",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_quota_max_objects",_,"min"))}}function lo(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",134),e.TgZ(4,"label",135),e.SDv(5,136),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function co(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,140),e.qZA())}function uo(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,141),e.qZA())}function Ro(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",137),e.SDv(2,138),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",139),e.YNc(5,co,2,0,"span",13),e.YNc(6,uo,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_size",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_size",_,"quotaMaxSize"))}}function go(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",142),e.TgZ(4,"label",143),e.SDv(5,144),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function Eo(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,148),e.qZA())}function To(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,149),e.qZA())}function So(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",145),e.SDv(2,146),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",147),e.YNc(5,Eo,2,0,"span",13),e.YNc(6,To,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_objects",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_objects",_,"min"))}}const Je=function(t){return{required:t}};function fo(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.YNc(14,Gn,2,0,"span",13),e.YNc(15,Nn,2,0,"span",13),e.YNc(16,On,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(17,"div",8),e.TgZ(18,"div",14),e.TgZ(19,"div",15),e.TgZ(20,"input",16),e.NdJ("click",function(){return e.CHM(_),e.oxw().updateFieldsWhenTenanted()}),e.qZA(),e.TgZ(21,"label",17),e.SDv(22,18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(23,Zn,7,3,"div",19),e.TgZ(24,"div",8),e.TgZ(25,"label",20),e.SDv(26,21),e.qZA(),e.TgZ(27,"div",11),e._UZ(28,"input",22),e.YNc(29,$n,2,0,"span",13),e.YNc(30,hn,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(31,"div",8),e.TgZ(32,"label",23),e.SDv(33,24),e.qZA(),e.TgZ(34,"div",11),e._UZ(35,"input",25),e.YNc(36,In,2,0,"span",13),e.YNc(37,vn,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(38,"div",8),e.TgZ(39,"label",26),e.SDv(40,27),e.qZA(),e.TgZ(41,"div",11),e.TgZ(42,"select",28),e.NdJ("change",function(i){return e.CHM(_),e.oxw().onMaxBucketsModeChange(i.target.value)}),e.TgZ(43,"option",29),e.SDv(44,30),e.qZA(),e.TgZ(45,"option",31),e.SDv(46,32),e.qZA(),e.TgZ(47,"option",33),e.SDv(48,34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(49,Dn,6,2,"div",19),e.TgZ(50,"div",8),e.TgZ(51,"div",14),e.TgZ(52,"div",15),e._UZ(53,"input",35),e.TgZ(54,"label",36),e.SDv(55,37),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(56,kn,11,2,"fieldset",38),e.YNc(57,Xn,16,11,"fieldset",38),e.YNc(58,Jn,25,13,"fieldset",38),e.YNc(59,eo,18,19,"fieldset",38),e.TgZ(60,"fieldset"),e.TgZ(61,"legend"),e.SDv(62,39),e.qZA(),e.TgZ(63,"div",8),e.TgZ(64,"div",14),e.TgZ(65,"div",15),e._UZ(66,"input",40),e.TgZ(67,"label",41),e.SDv(68,42),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(69,_o,6,0,"div",19),e.YNc(70,oo,7,2,"div",19),e.YNc(71,io,6,0,"div",19),e.YNc(72,ro,7,2,"div",19),e.qZA(),e.TgZ(73,"fieldset"),e.TgZ(74,"legend"),e.SDv(75,43),e.qZA(),e.TgZ(76,"div",8),e.TgZ(77,"div",14),e.TgZ(78,"div",15),e._UZ(79,"input",44),e.TgZ(80,"label",45),e.SDv(81,46),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(82,lo,6,0,"div",19),e.YNc(83,Ro,7,2,"div",19),e.YNc(84,go,6,0,"div",19),e.YNc(85,So,7,2,"div",19),e.qZA(),e.qZA(),e.TgZ(86,"div",47),e.TgZ(87,"cd-form-button-panel",48),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().onSubmit()}),e.ALo(88,"titlecase"),e.ALo(89,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),n=e.oxw();e.xp6(1),e.Q6J("formGroup",n.userForm),e.xp6(6),e.pQV(e.lcZ(6,30,n.action))(e.lcZ(7,32,n.resource)),e.QtT(5),e.xp6(3),e.Q6J("ngClass",e.VKq(38,Je,!n.editing)),e.xp6(3),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_id",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_id",_,"pattern")),e.xp6(1),e.Q6J("ngIf",!n.userForm.getValue("show_tenant")&&n.userForm.showError("user_id",_,"notUnique")),e.xp6(4),e.Q6J("readonly",!0),e.xp6(3),e.Q6J("ngIf",n.userForm.getValue("show_tenant")),e.xp6(2),e.Q6J("ngClass",e.VKq(40,Je,!n.editing)),e.xp6(4),e.Q6J("ngIf",n.userForm.showError("display_name",_,"pattern")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("display_name",_,"required")),e.xp6(6),e.Q6J("ngIf",n.userForm.showError("email",_,"email")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("email",_,"notUnique")),e.xp6(12),e.Q6J("ngIf",1==n.userForm.get("max_buckets_mode").value),e.xp6(7),e.Q6J("ngIf",!n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(10),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value&&!n.userForm.getValue("user_quota_max_size_unlimited")),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value&&!n.userForm.getValue("user_quota_max_objects_unlimited")),e.xp6(10),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value&&!n.userForm.getValue("bucket_quota_max_size_unlimited")),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value&&!n.userForm.getValue("bucket_quota_max_objects_unlimited")),e.xp6(2),e.Q6J("form",n.userForm)("submitText",e.lcZ(88,34,n.action)+" "+e.lcZ(89,36,n.resource))}}let Ve=(()=>{class t extends Ie.E{constructor(_,n,i,s,c,d,E){super(),this.formBuilder=_,this.route=n,this.router=i,this.rgwUserService=s,this.modalService=c,this.notificationService=d,this.actionLabels=E,this.editing=!1,this.submitObservables=[],this.icons=D.P,this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.showTenant=!1,this.previousTenant=null,this.resource="user",this.subuserLabel="subuser",this.s3keyLabel="S3 Key",this.capabilityLabel="capability",this.editing=this.router.url.startsWith(`/rgw/user/${A.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.createForm()}createForm(){this.userForm=this.formBuilder.group({user_id:[null,[a.kI.required,a.kI.pattern(/^[a-zA-Z0-9!@#%^&*()_-]+$/)],this.editing?[]:[m.h.unique(this.rgwUserService.exists,this.rgwUserService,()=>this.userForm.getValue("tenant"))]],show_tenant:[this.editing],tenant:[null,[a.kI.pattern(/^[a-zA-Z0-9!@#%^&*()_-]+$/)],this.editing?[]:[m.h.unique(this.rgwUserService.exists,this.rgwUserService,()=>this.userForm.getValue("user_id"),!0)]],display_name:[null,[a.kI.required,a.kI.pattern(/^[a-zA-Z0-9!@#%^&*()_ -]+$/)]],email:[null,[m.h.email],[m.h.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets_mode:[1],max_buckets:[1e3,[m.h.requiredIf({max_buckets_mode:"1"}),m.h.number(!1)]],suspended:[!1],generate_key:[!0],access_key:[null,[m.h.requiredIf({generate_key:!1})]],secret_key:[null,[m.h.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[m.h.composeIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1},[a.kI.required,this.quotaMaxSizeValidator])]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[m.h.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[m.h.composeIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1},[a.kI.required,this.quotaMaxSizeValidator])]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[m.h.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})}ngOnInit(){this.route.params.subscribe(_=>{if(!_.hasOwnProperty("uid"))return void this.loadingReady();const n=decodeURIComponent(_.uid),i=[];i.push(this.rgwUserService.get(n)),i.push(this.rgwUserService.getQuota(n)),(0,Y.D)(i).subscribe(s=>{const c=u().clone(this.userForm.value);let d=u().pick(s[0],u().keys(this.userForm.value));switch(d.max_buckets){case-1:d.max_buckets_mode=-1,d.max_buckets="";break;case 0:d.max_buckets_mode=0,d.max_buckets="";break;default:d.max_buckets_mode=1}["user","bucket"].forEach(g=>{const C=s[1][g+"_quota"];d[g+"_quota_enabled"]=C.enabled,C.max_size<0?(d[g+"_quota_max_size_unlimited"]=!0,d[g+"_quota_max_size"]=null):(d[g+"_quota_max_size_unlimited"]=!1,d[g+"_quota_max_size"]=`${C.max_size} B`),C.max_objects<0?(d[g+"_quota_max_objects_unlimited"]=!0,d[g+"_quota_max_objects"]=null):(d[g+"_quota_max_objects_unlimited"]=!1,d[g+"_quota_max_objects"]=C.max_objects)}),d=u().merge(c,d),this.userForm.setValue(d),this.subusers=s[0].subusers,this.s3Keys=s[0].keys,this.swiftKeys=s[0].swift_keys;const E={"read, write":"*"};s[0].caps.forEach(g=>{g.perm in E&&(g.perm=E[g.perm])}),this.capabilities=s[0].caps,this.loadingReady()},()=>{this.loadingError()})})}goToListView(){this.router.navigate(["/rgw/user"])}onSubmit(){let _;if(this.userForm.pristine)return void this.goToListView();const n=this.getUID();if(this.editing){if(this._isGeneralDirty()){const i=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(n,i))}_="Updated Object Gateway user '" + n + "'"}else{const i=this._getCreateArgs();this.submitObservables.push(this.rgwUserService.create(i)),_="Created Object Gateway user '" + n + "'"}if(this._isUserQuotaDirty()){const i=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,i))}if(this._isBucketQuotaDirty()){const i=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,i))}(0,Ht.z)(...this.submitObservables).subscribe({error:()=>{this.userForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.notificationService.show(Ae.k.success,_),this.goToListView()}})}updateFieldsWhenTenanted(){this.showTenant=this.userForm.getValue("show_tenant"),this.showTenant?(this.userForm.get("user_id").markAsTouched(),this.previousTenant=this.userForm.get("tenant").value,this.userForm.get("tenant").patchValue(null)):(this.userForm.get("user_id").markAsUntouched(),this.userForm.get("tenant").patchValue(this.previousTenant))}getUID(){var _;let n=this.userForm.getValue("user_id");const i=null===(_=this.userForm)||void 0===_?void 0:_.getValue("tenant");return i&&i.length>0&&(n=`${this.userForm.getValue("tenant")}$${n}`),n}quotaMaxSizeValidator(_){return(0,m.P)(_.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(_.value)||(new Ge.H).toBytes(_.value)<1024?{quotaMaxSize:!0}:null}setSubuser(_,n){const i={"full-control":"full","read-write":"readwrite"},s=this.getUID();this.submitObservables.push(this.rgwUserService.createSubuser(s,{subuser:_.id,access:_.permissions in i?i[_.permissions]:_.permissions,key_type:"swift",secret_key:_.secret_key,generate_secret:_.generate_secret?"true":"false"})),u().isNumber(n)?this.subusers[n]=_:(this.subusers.push(_),this.swiftKeys.push({user:_.id,secret_key:_.generate_secret?"Apply your changes first...":_.secret_key})),this.userForm.markAsDirty()}deleteSubuser(_){const n=this.subusers[_];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.getUID(),n.id)),this.s3Keys=this.s3Keys.filter(i=>i.user!==n.id),this.swiftKeys=this.swiftKeys.filter(i=>i.user!==n.id),this.subusers.splice(_,1),this.userForm.markAsDirty()}setCapability(_,n){const i=this.getUID();if(u().isNumber(n)){const s=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(i,s.type,s.perm)),this.submitObservables.push(this.rgwUserService.addCapability(i,_.type,_.perm)),this.capabilities[n]=_}else this.submitObservables.push(this.rgwUserService.addCapability(i,_.type,_.perm)),this.capabilities=[...this.capabilities,_];this.userForm.markAsDirty()}deleteCapability(_){const n=this.capabilities[_];this.submitObservables.push(this.rgwUserService.deleteCapability(this.getUID(),n.type,n.perm)),this.capabilities.splice(_,1),this.capabilities=[...this.capabilities],this.userForm.markAsDirty()}hasAllCapabilities(_){return!u().difference(ze.getAll(),u().map(_,"type")).length}setS3Key(_,n){if(!u().isNumber(n)){const i=_.user.match(/([^:]+)(:(.+))?/),s=i[1],c={subuser:i[2]?i[3]:"",generate_key:_.generate_key?"true":"false"};"false"===c.generate_key&&(u().isNil(_.access_key)||(c.access_key=_.access_key),u().isNil(_.secret_key)||(c.secret_key=_.secret_key)),this.submitObservables.push(this.rgwUserService.addS3Key(s,c)),this.s3Keys.push({user:_.user,access_key:_.generate_key?"Apply your changes first...":_.access_key,secret_key:_.generate_key?"Apply your changes first...":_.secret_key})}this.userForm.markAsDirty()}deleteS3Key(_){const n=this.s3Keys[_];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.getUID(),n.access_key)),this.s3Keys.splice(_,1),this.userForm.markAsDirty()}showSubuserModal(_){const n=this.getUID(),i=this.modalService.show(An);if(u().isNumber(_)){const s=this.subusers[_];i.componentInstance.setEditing(),i.componentInstance.setValues(n,s.id,s.permissions)}else i.componentInstance.setEditing(!1),i.componentInstance.setValues(n),i.componentInstance.setSubusers(this.subusers);i.componentInstance.submitAction.subscribe(s=>{this.setSubuser(s,_)})}showS3KeyModal(_){const n=this.modalService.show(Qe);if(u().isNumber(_)){const i=this.s3Keys[_];n.componentInstance.setViewing(),n.componentInstance.setValues(i.user,i.access_key,i.secret_key)}else{const i=this._getS3KeyUserCandidates();n.componentInstance.setViewing(!1),n.componentInstance.setUserCandidates(i),n.componentInstance.submitAction.subscribe(s=>{this.setS3Key(s)})}}showSwiftKeyModal(_){const n=this.modalService.show(Ye),i=this.swiftKeys[_];n.componentInstance.setValues(i.user,i.secret_key)}showCapabilityModal(_){const n=this.modalService.show(_n);if(u().isNumber(_)){const i=this.capabilities[_];n.componentInstance.setEditing(),n.componentInstance.setValues(i.type,i.perm)}else n.componentInstance.setEditing(!1),n.componentInstance.setCapabilities(this.capabilities);n.componentInstance.submitAction.subscribe(i=>{this.setCapability(i,_)})}_isGeneralDirty(){return["display_name","email","max_buckets_mode","max_buckets","suspended"].some(_=>this.userForm.get(_).dirty)}_isUserQuotaDirty(){return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(_=>this.userForm.get(_).dirty)}_isBucketQuotaDirty(){return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(_=>this.userForm.get(_).dirty)}_getCreateArgs(){const _={uid:this.getUID(),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");u().isString(n)&&n.length>0&&u().merge(_,{email:n}),this.userForm.getValue("generate_key")||u().merge(_,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")});const s=parseInt(this.userForm.getValue("max_buckets_mode"),10);return u().includes([-1,0],s)&&u().merge(_,{max_buckets:s}),_}_getUpdateArgs(){const _={},n=["display_name","email","max_buckets","suspended"];for(const s of n)_[s]=this.userForm.getValue(s);const i=parseInt(this.userForm.getValue("max_buckets_mode"),10);return u().includes([-1,0],i)&&(_.max_buckets=i),_}_getUserQuotaArgs(){const _={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){const n=(new Ge.H).toBytes(this.userForm.getValue("user_quota_max_size"));_.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(_.max_objects=this.userForm.getValue("user_quota_max_objects")),_}_getBucketQuotaArgs(){const _={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){const n=(new Ge.H).toBytes(this.userForm.getValue("bucket_quota_max_size"));_.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(_.max_objects=this.userForm.getValue("bucket_quota_max_objects")),_}_getS3KeyUserCandidates(){let _=[];const n=this.getUID();return u().isString(n)&&!u().isEmpty(n)&&_.push(n),this.subusers.forEach(i=>{_.push(i.id)}),this.s3Keys.forEach(i=>{_.push(i.user)}),_=u().uniq(_),_}onMaxBucketsModeChange(_){"1"===_&&(this.userForm.get("max_buckets").valid||this.userForm.patchValue({max_buckets:1e3}))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(w.gz),e.Y36(w.F0),e.Y36(O),e.Y36(Te.Z),e.Y36(ve.g),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,y,x,S,_e,te,ne,oe,ie,se,ae,re,le,ce,de,ue,Re,R,__,t_,n_,o_,i_,s_,a_,r_,l_,c_,d_,u_,R_,g_,E_,T_,S_,f_,C_,p_,M_,m_,A_,b_,P_,G_,N_;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="User ID",n="Show Tenant",i="Full name",s="Email address",c="Max. buckets",d="Disabled",E="Unlimited",g="Custom",C="Suspended",b="User quota",P="Enabled",G="Bucket quota",N="Enabled",p="This field is required.",U="The value is not valid.",W="The chosen user ID is already in use.",Z="Tenant",$="The value is not valid.",h="The chosen user ID exists in this tenant.",I="The value is not valid.",v="This field is required.",F="This is not a valid email address.",T="The chosen email address is already in use.",y="This field is required.",x="The entered value must be >= 1.",S="S3 key",_e="Auto-generate key",te="Access key",ne="This field is required.",oe="Secret key",ie="This field is required.",se="Subusers",ae="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",re="There are no subusers.",le="Edit",ce="Delete",de="Keys",ue="S3",Re="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",R="Swift",__="There are no keys.",t_="Show",n_="Delete",o_="There are no keys.",i_="Show",s_="Capabilities",a_="All capabilities are already added.",r_="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",l_="There are no capabilities.",c_="Edit",d_="Delete",u_="Unlimited size",R_="Max. size",g_="This field is required.",E_="The value is not valid.",T_="Unlimited objects",S_="Max. objects",f_="This field is required.",C_="The entered value must be >= 0.",p_="Unlimited size",M_="Max. size",m_="This field is required.",A_="The value is not valid.",b_="Unlimited objects",P_="Max. objects",G_="This field is required.",N_="The entered value must be >= 0.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],o,[1,"card-body"],[1,"form-group","row"],["for","user_id",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","user_id","type","text","formControlName","user_id",1,"form-control",3,"readonly"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","show_tenant","type","checkbox","formControlName","show_tenant",1,"custom-control-input",3,"readonly","click"],["for","show_tenant",1,"custom-control-label"],n,["class","form-group row",4,"ngIf"],["for","display_name",1,"cd-col-form-label",3,"ngClass"],i,["id","display_name","type","text","formControlName","display_name",1,"form-control"],["for","email",1,"cd-col-form-label"],s,["id","email","type","text","formControlName","email",1,"form-control"],["for","max_buckets_mode",1,"cd-col-form-label"],c,["formControlName","max_buckets_mode","name","max_buckets_mode","id","max_buckets_mode",1,"form-control",3,"change"],["value","-1"],d,["value","0"],E,["value","1"],g,["id","suspended","type","checkbox","formControlName","suspended",1,"custom-control-input"],["for","suspended",1,"custom-control-label"],C,[4,"ngIf"],b,["id","user_quota_enabled","type","checkbox","formControlName","user_quota_enabled",1,"custom-control-input"],["for","user_quota_enabled",1,"custom-control-label"],P,G,["id","bucket_quota_enabled","type","checkbox","formControlName","bucket_quota_enabled",1,"custom-control-input"],["for","bucket_quota_enabled",1,"custom-control-label"],N,[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],p,U,W,["for","tenant",1,"cd-col-form-label"],Z,["id","tenant","type","text","formControlName","tenant","autofocus","",1,"form-control",3,"readonly"],$,h,I,v,F,T,[1,"cd-col-form-label"],["id","max_buckets","type","number","formControlName","max_buckets","min","1",1,"form-control"],y,x,S,["id","generate_key","type","checkbox","formControlName","generate_key",1,"custom-control-input"],["for","generate_key",1,"custom-control-label"],_e,["for","access_key",1,"cd-col-form-label","required"],te,[1,"input-group"],["id","access_key","type","password","formControlName","access_key",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","access_key",1,"btn","btn-light"],["source","access_key"],ne,["for","secret_key",1,"cd-col-form-label","required"],oe,["id","secret_key","type","password","formControlName","secret_key",1,"form-control"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],ie,se,[1,"row"],["class","no-border",4,"ngIf"],[4,"ngFor","ngForOf"],[1,"col-12"],["type","button",1,"btn","btn-light","float-right","tc_addSubuserButton",3,"click"],[3,"ngClass"],ae,[1,"help-block"],[1,"no-border"],[1,"form-text","text-muted"],re,[1,"input-group-prepend"],[1,"input-group-text"],["type","text","readonly","",1,"cd-form-control",3,"value"],[1,"input-group-prepend","border-left-0","border-right-0"],["type","button","ngbTooltip",le,1,"btn","btn-light","tc_showSubuserButton",3,"click"],["type","button","ngbTooltip",ce,1,"btn","btn-light","tc_deleteSubuserButton",3,"click"],de,ue,["type","button",1,"btn","btn-light","float-right","tc_addS3KeyButton",3,"click"],Re,R,__,["type","button","ngbTooltip",t_,1,"btn","btn-light","tc_showS3KeyButton",3,"click"],["type","button","ngbTooltip",n_,1,"btn","btn-light","tc_deleteS3KeyButton",3,"click"],o_,["type","button","ngbTooltip",i_,1,"btn","btn-light","tc_showSwiftKeyButton",3,"click"],s_,["type","button","ngbTooltip",a_,"triggers","pointerenter:pointerleave",1,"btn","btn-light","float-right","tc_addCapButton",3,"disabled","disableTooltip","click"],r_,l_,["type","button","ngbTooltip",c_,1,"btn","btn-light","tc_editCapButton",3,"click"],["type","button","ngbTooltip",d_,1,"btn","btn-light","tc_deleteCapButton",3,"click"],["id","user_quota_max_size_unlimited","type","checkbox","formControlName","user_quota_max_size_unlimited",1,"custom-control-input"],["for","user_quota_max_size_unlimited",1,"custom-control-label"],u_,["for","user_quota_max_size",1,"cd-col-form-label","required"],R_,["id","user_quota_max_size","type","text","formControlName","user_quota_max_size","cdDimlessBinary","",1,"form-control"],g_,E_,["id","user_quota_max_objects_unlimited","type","checkbox","formControlName","user_quota_max_objects_unlimited",1,"custom-control-input"],["for","user_quota_max_objects_unlimited",1,"custom-control-label"],T_,["for","user_quota_max_objects",1,"cd-col-form-label","required"],S_,["id","user_quota_max_objects","type","number","formControlName","user_quota_max_objects","min","0",1,"form-control"],f_,C_,["id","bucket_quota_max_size_unlimited","type","checkbox","formControlName","bucket_quota_max_size_unlimited",1,"custom-control-input"],["for","bucket_quota_max_size_unlimited",1,"custom-control-label"],p_,["for","bucket_quota_max_size",1,"cd-col-form-label","required"],M_,["id","bucket_quota_max_size","type","text","formControlName","bucket_quota_max_size","cdDimlessBinary","",1,"form-control"],m_,A_,["id","bucket_quota_max_objects_unlimited","type","checkbox","formControlName","bucket_quota_max_objects_unlimited",1,"custom-control-input"],["for","bucket_quota_max_objects_unlimited",1,"custom-control-label"],b_,["for","bucket_quota_max_objects",1,"cd-col-form-label","required"],P_,["id","bucket_quota_max_objects","type","number","formControlName","bucket_quota_max_objects","min","0",1,"form-control"],G_,N_]},template:function(_,n){1&_&&e.YNc(0,fo,90,42,"div",0),2&_&&e.Q6J("cdFormLoading",n.loading)},directives:[Fe.y,a._Y,a.JL,V.V,a.sg,H.P,f.mk,q.o,a.Fj,X.b,a.JJ,a.u,f.O5,a.Wl,a.EJ,a.YN,a.Kr,ee.p,j.U,a.wV,a.qQ,Ce.C,pe.s,f.sg,M._L,Pn.Q],pipes:[f.rS,K.m,Ue.i],styles:[""]}),t})();var je=r(99466),Co=r(78877),po=r(86969);const Mo=["accessKeyTpl"],mo=["secretKeyTpl"];function Ao(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,20),e.qZA(),e.TgZ(3,"td"),e._uU(4),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Oqu(_.user.email)}}function bo(t,o){if(1&t&&(e.TgZ(0,"div"),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.xp6(1),e.AsE(" ",_.id," (",_.permissions,") ")}}function Po(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,21),e.qZA(),e.TgZ(3,"td"),e.YNc(4,bo,2,2,"div",22),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Q6J("ngForOf",_.user.subusers)}}function Go(t,o){if(1&t&&(e.TgZ(0,"div"),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.xp6(1),e.AsE(" ",_.type," (",_.perm,") ")}}function No(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,23),e.qZA(),e.TgZ(3,"td"),e.YNc(4,Go,2,2,"div",22),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Q6J("ngForOf",_.user.caps)}}function Oo(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,24),e.qZA(),e.TgZ(3,"td"),e._uU(4),e.ALo(5,"join"),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Oqu(e.lcZ(5,1,_.user.mfa_ids))}}function Uo(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function Wo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,29),e.qZA())}function Zo(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.user.user_quota.max_size)," ")}}function $o(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function ho(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,30),e.qZA())}function Io(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",_.user.user_quota.max_objects," ")}}function vo(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,25),e.qZA(),e.TgZ(3,"table",9),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",10),e.SDv(7,26),e.qZA(),e.TgZ(8,"td",12),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",15),e.SDv(13,27),e.qZA(),e.YNc(14,Uo,2,0,"td",0),e.YNc(15,Wo,2,0,"td",0),e.YNc(16,Zo,3,3,"td",0),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",15),e.SDv(19,28),e.qZA(),e.YNc(20,$o,2,0,"td",0),e.YNc(21,ho,2,0,"td",0),e.YNc(22,Io,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(9),e.Oqu(e.lcZ(10,7,_.user.user_quota.enabled)),e.xp6(5),e.Q6J("ngIf",!_.user.user_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",!_.user.user_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_objects>-1)}}function Fo(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function Lo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,35),e.qZA())}function Do(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.user.bucket_quota.max_size)," ")}}function yo(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function xo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,36),e.qZA())}function qo(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",_.user.bucket_quota.max_objects," ")}}function wo(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,31),e.qZA(),e.TgZ(3,"table",9),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",10),e.SDv(7,32),e.qZA(),e.TgZ(8,"td",12),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",15),e.SDv(13,33),e.qZA(),e.YNc(14,Fo,2,0,"td",0),e.YNc(15,Lo,2,0,"td",0),e.YNc(16,Do,3,3,"td",0),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",15),e.SDv(19,34),e.qZA(),e.YNc(20,yo,2,0,"td",0),e.YNc(21,xo,2,0,"td",0),e.YNc(22,qo,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(9),e.Oqu(e.lcZ(10,7,_.user.bucket_quota.enabled)),e.xp6(5),e.Q6J("ngIf",!_.user.bucket_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",!_.user.bucket_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_objects>-1)}}function ko(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"table",9),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",10),e.SDv(5,11),e.qZA(),e.TgZ(6,"td",12),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",10),e.SDv(10,13),e.qZA(),e.TgZ(11,"td",12),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",10),e.SDv(15,14),e.qZA(),e.TgZ(16,"td",12),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",15),e.SDv(20,16),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.qZA(),e.qZA(),e.YNc(23,Ao,5,1,"tr",0),e.TgZ(24,"tr"),e.TgZ(25,"td",15),e.SDv(26,17),e.qZA(),e.TgZ(27,"td"),e._uU(28),e.ALo(29,"booleanText"),e.qZA(),e.qZA(),e.TgZ(30,"tr"),e.TgZ(31,"td",15),e.SDv(32,18),e.qZA(),e.TgZ(33,"td"),e._uU(34),e.ALo(35,"booleanText"),e.qZA(),e.qZA(),e.TgZ(36,"tr"),e.TgZ(37,"td",15),e.SDv(38,19),e.qZA(),e.TgZ(39,"td"),e._uU(40),e.ALo(41,"map"),e.qZA(),e.qZA(),e.YNc(42,Po,5,1,"tr",0),e.YNc(43,No,5,1,"tr",0),e.YNc(44,Oo,6,3,"tr",0),e.qZA(),e.qZA(),e.YNc(45,vo,23,9,"div",0),e.YNc(46,wo,23,9,"div",0),e.qZA()),2&t){const _=e.oxw(3);e.xp6(7),e.Oqu(_.user.tenant),e.xp6(5),e.Oqu(_.user.user_id),e.xp6(5),e.Oqu(_.user.uid),e.xp6(5),e.Oqu(_.user.display_name),e.xp6(1),e.Q6J("ngIf",null==_.user.email?null:_.user.email.length),e.xp6(5),e.Oqu(e.lcZ(29,13,_.user.suspended)),e.xp6(6),e.Oqu(e.lcZ(35,15,"true"===_.user.system)),e.xp6(6),e.Oqu(e.xi3(41,17,_.user.max_buckets,_.maxBucketsMap)),e.xp6(2),e.Q6J("ngIf",_.user.subusers&&_.user.subusers.length),e.xp6(1),e.Q6J("ngIf",_.user.caps&&_.user.caps.length),e.xp6(1),e.Q6J("ngIf",null==_.user.mfa_ids?null:_.user.mfa_ids.length),e.xp6(1),e.Q6J("ngIf",_.user.user_quota),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota)}}function Bo(t,o){if(1&t&&e.YNc(0,ko,47,20,"div",0),2&t){const _=e.oxw(2);e.Q6J("ngIf",_.user)}}const Ho=function(t){return[t]};function Xo(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",39),e.NdJ("updateSelection",function(i){return e.CHM(_),e.oxw(3).updateKeysSelection(i)}),e.TgZ(1,"div",40),e.TgZ(2,"div",41),e.TgZ(3,"button",42),e.NdJ("click",function(){return e.CHM(_),e.oxw(3).showKeyModal()}),e._UZ(4,"i",43),e.ynx(5),e.SDv(6,44),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(3);e.Q6J("data",_.keys)("columns",_.keysColumns),e.xp6(3),e.Q6J("disabled",!_.keysSelection.hasSingleSelection),e.xp6(1),e.Q6J("ngClass",e.VKq(4,Ho,_.icons.show))}}function Ko(t,o){1&t&&(e.TgZ(0,"li",37),e.TgZ(1,"a",4),e.SDv(2,38),e.qZA(),e.YNc(3,Xo,7,6,"ng-template",6),e.qZA())}function zo(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,Bo,1,1,"ng-template",6),e.qZA(),e.YNc(7,Ko,4,0,"li",7),e.qZA(),e._UZ(8,"div",8),e.BQk()),2&t){const _=e.MAs(2),n=e.oxw();e.xp6(7),e.Q6J("ngIf",n.keys.length),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Qo=(()=>{class t{constructor(_,n){this.rgwUserService=_,this.modalService=n,this.keys=[],this.keysColumns=[],this.keysSelection=new Pe.r,this.icons=D.P}ngOnInit(){this.keysColumns=[{name:"Username",prop:"username",flexGrow:1},{name:"Type",prop:"type",flexGrow:1}],this.maxBucketsMap={"-1":"Disabled",0:"Unlimited"}}ngOnChanges(){this.selection&&(this.user=this.selection,this.user.subusers=u().sortBy(this.user.subusers,"id"),this.user.caps=u().sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(_=>{u().extend(this.user,_)}),this.keys=[],this.user.keys&&this.user.keys.forEach(_=>{this.keys.push({id:this.keys.length+1,type:"S3",username:_.user,ref:_})}),this.user.swift_keys&&this.user.swift_keys.forEach(_=>{this.keys.push({id:this.keys.length+1,type:"Swift",username:_.user,ref:_})}),this.keys=u().sortBy(this.keys,"user"))}updateKeysSelection(_){this.keysSelection=_}showKeyModal(){const _=this.keysSelection.first(),n=this.modalService.show("S3"===_.type?Qe:Ye);switch(_.type){case"S3":n.componentInstance.setViewing(),n.componentInstance.setValues(_.ref.user,_.ref.access_key,_.ref.secret_key);break;case"Swift":n.componentInstance.setValues(_.ref.user,_.ref.secret_key)}}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(O),e.Y36(Te.Z))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-details"]],viewQuery:function(_,n){if(1&_&&(e.Gf(Mo,5),e.Gf(mo,5)),2&_){let i;e.iGM(i=e.CRH())&&(n.accessKeyTpl=i.first),e.iGM(i=e.CRH())&&(n.secretKeyTpl=i.first)}},inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,y,x;return o="Details",_="Tenant",n="User ID",i="Username",s="Full name",c="Suspended",d="System",E="Maximum buckets",g="Email address",C="Subusers",b="Capabilities",P="MFAs(Id)",G="User quota",N="Enabled",p="Maximum size",U="Maximum objects",W="Unlimited",Z="Unlimited",$="Bucket quota",h="Enabled",I="Maximum size",v="Maximum objects",F="Unlimited",T="Unlimited",y="Keys",x="Show",[[4,"ngIf"],["ngbNav","","cdStatefulTab","rgw-user-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","keys",4,"ngIf"],[3,"ngbNavOutlet"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],_,[1,"w-75"],n,i,[1,"bold"],s,c,d,E,g,C,[4,"ngFor","ngForOf"],b,P,G,N,p,U,W,Z,$,h,I,v,F,T,["ngbNavItem","keys"],y,["columnMode","flex","selectionType","multi","forceIdentifier","true",3,"data","columns","updateSelection"],[1,"table-actions"],["dropdown","",1,"btn-group"],["type","button",1,"btn","btn-accent",3,"disabled","click"],[3,"ngClass"],x]},template:function(_,n){1&_&&e.YNc(0,zo,9,2,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5,M.Pz,Xe.m,M.nv,M.Vx,M.uN,M.tO,f.sg,z.a,q.o,f.mk],pipes:[Be.T,Co.b,po.A,qe.$],styles:[""]}),t})();const Yo=["userSizeTpl"],Jo=["userObjectTpl"];function Vo(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",8),2&t){const _=e.oxw().row;e.Q6J("total",_.user_quota.max_size)("used",_.stats.size_actual)}}function jo(t,o){1&t&&e.SDv(0,9)}function ei(t,o){if(1&t&&(e.YNc(0,Vo,1,2,"cd-usage-bar",6),e.YNc(1,jo,1,0,"ng-template",null,7,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.user_quota.max_size>0&&_.user_quota.enabled)("ngIfElse",n)}}function _i(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",12),2&t){const _=e.oxw().row;e.Q6J("total",_.user_quota.max_objects)("used",_.stats.num_objects)("isBinary",!1)}}function ti(t,o){1&t&&e.SDv(0,13)}function ni(t,o){if(1&t&&(e.YNc(0,_i,1,3,"cd-usage-bar",10),e.YNc(1,ti,1,0,"ng-template",null,11,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.user_quota.max_objects>0&&_.user_quota.enabled)("ngIfElse",n)}}let ii=(()=>{class t extends be.o{constructor(_,n,i,s,c,d){super(d),this.authStorageService=_,this.rgwUserService=n,this.modalService=i,this.urlBuilder=s,this.actionLabels=c,this.ngZone=d,this.columns=[],this.users=[],this.selection=new Pe.r}ngOnInit(){this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:"Username",prop:"uid",flexGrow:1},{name:"Tenant",prop:"tenant",flexGrow:1},{name:"Full name",prop:"display_name",flexGrow:1},{name:"Email address",prop:"email",flexGrow:1},{name:"Suspended",prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:je.e.checkIcon},{name:"Max. buckets",prop:"max_buckets",flexGrow:1,cellTransformation:je.e.map,customTemplateConfig:{"-1":"Disabled",0:"Unlimited"}},{name:"Capacity Limit %",prop:"size_usage",cellTemplate:this.userSizeTpl,flexGrow:.8},{name:"Object Limit %",prop:"object_usage",cellTemplate:this.userObjectTpl,flexGrow:.8}];const _=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().uid)}`;this.tableActions=[{permission:"create",icon:D.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:c=>!c.hasSelection},{permission:"update",icon:D.P.edit,routerLink:()=>this.urlBuilder.getEdit(_()),name:this.actionLabels.EDIT},{permission:"delete",icon:D.P.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:c=>c.hasMultiSelection}],this.setTableRefreshTimeout()}getUserList(_){this.setTableRefreshTimeout(),this.rgwUserService.list().subscribe(n=>{this.users=n},()=>{_.error()})}updateSelection(_){this.selection=_}deleteAction(){this.modalService.show(xe.M,{itemDescription:this.selection.hasSingleSelection?"user":"users",itemNames:this.selection.selected.map(_=>_.uid),submitActionObservable:()=>new ye.y(_=>{(0,Y.D)(this.selection.selected.map(n=>this.rgwUserService.delete(n.uid))).subscribe({error:n=>{_.error(n),this.table.refreshBtn()},complete:()=>{_.complete(),this.table.refreshBtn()}})})})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Ee.j),e.Y36(O),e.Y36(Te.Z),e.Y36(Q.F),e.Y36(A.p4),e.Y36(e.R0b))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-list"]],viewQuery:function(_,n){if(1&_&&(e.Gf(z.a,7),e.Gf(Yo,7),e.Gf(Jo,7)),2&_){let i;e.iGM(i=e.CRH())&&(n.table=i.first),e.iGM(i=e.CRH())&&(n.userSizeTpl=i.first),e.iGM(i=e.CRH())&&(n.userObjectTpl=i.first)}},features:[e._Bn([{provide:Q.F,useValue:new Q.F("rgw/user")}]),e.qOj],decls:8,vars:9,consts:function(){let o,_;return o="No Limit",_="No Limit",[["columnMode","flex","selectionType","multiClick","identifier","uid",3,"autoReload","data","columns","hasDetails","status","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["userSizeTpl",""],["userObjectTpl",""],[3,"total","used",4,"ngIf","ngIfElse"],["noSizeQuota",""],[3,"total","used"],o,[3,"total","used","isBinary",4,"ngIf","ngIfElse"],["noObjectQuota",""],[3,"total","used","isBinary"],_]},template:function(_,n){1&_&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(s){return n.setExpandedRow(s)})("updateSelection",function(s){return n.updateSelection(s)})("fetchData",function(s){return n.getUserList(s)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-rgw-user-details",3),e.qZA(),e.YNc(4,ei,3,2,"ng-template",null,4,e.W1O),e.YNc(6,ni,3,2,"ng-template",null,5,e.W1O)),2&_&&(e.Q6J("autoReload",!1)("data",n.users)("columns",n.columns)("hasDetails",!0)("status",n.tableStatus),e.xp6(2),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("selection",n.expandedRow))},directives:[z.a,ke.K,Qo,f.O5,He.O],styles:[""]}),t})(),e_=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[f.ez,O_.m,a.u5,a.UX,U_.B,M.Oz,w.Bz,M.HK,Ue.b]]}),t})();const si=[{path:""},{path:"daemon",component:Bt,data:{breadcrumbs:"Daemons"}},{path:"user",data:{breadcrumbs:"Users"},children:[{path:"",component:ii},{path:A.MQ.CREATE,component:Ve,data:{breadcrumbs:A.Qn.CREATE}},{path:`${A.MQ.EDIT}/:uid`,component:Ve,data:{breadcrumbs:A.Qn.EDIT}}]},{path:"bucket",data:{breadcrumbs:"Buckets"},children:[{path:"",component:Ut},{path:A.MQ.CREATE,component:De,data:{breadcrumbs:A.Qn.CREATE}},{path:`${A.MQ.EDIT}/:bid`,component:De,data:{breadcrumbs:A.Qn.EDIT}}]}];let ai=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[e_,w.Bz.forChild(si)]]}),t})()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.cd14092ccedeaf2d7d79.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/281.cd14092ccedeaf2d7d79.js
deleted file mode 100644 (file)
index a064d6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[281],{59281:(si,Oe,r)=>{r.r(Oe),r.d(Oe,{RgwModule:()=>e_,RoutedRgwModule:()=>ii});var f=r(12057),a=r(24751),w=r(6283),M=r(38549),Ue=r(37496),A=r(79512),N_=r(44466),O_=r(66265),U_=r(23815),u=r.n(U_),Y=r(35758),Me=r(95152),We=r(33394),Ze=r(64762),$e=r(58497),me=r(25917),he=r(19773),W_=r(96736),Z_=r(5304),ge=r(20523),$_=r(93523),e=r(74788);let O=class{constructor(o,_){this.http=o,this.rgwDaemonService=_,this.url="api/rgw/user"}list(){return this.enumerate().pipe((0,he.zg)(o=>o.length>0?(0,Y.D)(o.map(_=>this.get(_))):(0,me.of)([])))}enumerate(){return this.rgwDaemonService.request(o=>this.http.get(this.url,{params:o}))}enumerateEmail(){return this.rgwDaemonService.request(o=>this.http.get(`${this.url}/get_emails`,{params:o}))}get(o){return this.rgwDaemonService.request(_=>this.http.get(`${this.url}/${o}`,{params:_}))}getQuota(o){return this.rgwDaemonService.request(_=>this.http.get(`${this.url}/${o}/quota`,{params:_}))}create(o){return this.rgwDaemonService.request(_=>(u().keys(o).forEach(n=>{_=_.append(n,o[n])}),this.http.post(this.url,null,{params:_})))}update(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.put(`${this.url}/${o}`,null,{params:n})))}updateQuota(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.put(`${this.url}/${o}/quota`,null,{params:n})))}delete(o){return this.rgwDaemonService.request(_=>this.http.delete(`${this.url}/${o}`,{params:_}))}createSubuser(o,_){return this.rgwDaemonService.request(n=>(u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.post(`${this.url}/${o}/subuser`,null,{params:n})))}deleteSubuser(o,_){return this.rgwDaemonService.request(n=>this.http.delete(`${this.url}/${o}/subuser/${_}`,{params:n}))}addCapability(o,_,n){return this.rgwDaemonService.request(i=>(i=(i=i.append("type",_)).append("perm",n),this.http.post(`${this.url}/${o}/capability`,null,{params:i})))}deleteCapability(o,_,n){return this.rgwDaemonService.request(i=>(i=(i=i.append("type",_)).append("perm",n),this.http.delete(`${this.url}/${o}/capability`,{params:i})))}addS3Key(o,_){return this.rgwDaemonService.request(n=>(n=n.append("key_type","s3"),u().keys(_).forEach(i=>{n=n.append(i,_[i])}),this.http.post(`${this.url}/${o}/key`,null,{params:n})))}deleteS3Key(o,_){return this.rgwDaemonService.request(n=>(n=(n=n.append("key_type","s3")).append("access_key",_),this.http.delete(`${this.url}/${o}/key`,{params:n})))}exists(o){return this.get(o).pipe((0,W_.h)(!0),(0,Z_.K)(_=>(u().isFunction(_.preventDefault)&&_.preventDefault(),(0,me.of)(!1))))}emailExists(o){return o=decodeURIComponent(o),this.enumerateEmail().pipe((0,he.zg)(_=>{const n=u().indexOf(_,o);return(0,me.of)(-1!==n)}))}};O.\u0275fac=function(o){return new(o||O)(e.LFG($e.eN),e.LFG(ge.b))},O.\u0275prov=e.Yz7({token:O,factory:O.\u0275fac,providedIn:"root"}),O=(0,Ze.gn)([$_.o,(0,Ze.w6)("design:paramtypes",[$e.eN,ge.b])],O);var D=r(65862),Ae=r(18001),Ie=r(93614),m=r(77205),ve=r(97161),k=(()=>{return(t=k||(k={})).ENABLED="Enabled",t.DISABLED="Disabled",k;var t})(),B=(()=>{return(t=B||(B={})).ENABLED="Enabled",t.SUSPENDED="Suspended",B;var t})(),J=r(62862),Fe=r(63622),V=r(41582),H=r(56310),q=r(87925),X=r(94276),j=r(82945),h_=r(18372),ee=r(30839),K=r(10545);function I_(t,o){1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",35),e.SDv(2,36),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",37),e.qZA(),e.qZA())}function v_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,39),e.qZA())}function F_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,40),e.qZA())}function L_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,41),e.qZA())}function D_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,42),e.qZA())}function x_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,43),e.qZA())}function y_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,44),e.qZA())}function q_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,45),e.qZA())}function w_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,46),e.qZA())}function k_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,48),e.qZA()),2&t&&e.Q6J("ngValue",null)}function B_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,49),e.qZA()),2&t&&e.Q6J("ngValue",null)}function H_(t,o){if(1&t&&(e.TgZ(0,"option",50),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function X_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,51),e.qZA())}function K_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,53),e.qZA()),2&t&&e.Q6J("ngValue",null)}function z_(t,o){1&t&&(e.TgZ(0,"option",47),e.SDv(1,54),e.qZA()),2&t&&e.Q6J("ngValue",null)}function Q_(t,o){if(1&t&&(e.TgZ(0,"option",50),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_.name),e.xp6(1),e.Oqu(_.description)}}function Y_(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,55),e.qZA())}function J_(t,o){if(1&t&&(e.TgZ(0,"select",52),e.YNc(1,K_,2,1,"option",18),e.YNc(2,z_,2,1,"option",18),e.YNc(3,Q_,2,2,"option",19),e.qZA(),e.YNc(4,Y_,2,0,"span",14)),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(1),e.Q6J("ngIf",null===n.placementTargets),e.xp6(1),e.Q6J("ngIf",null!==n.placementTargets),e.xp6(1),e.Q6J("ngForOf",n.placementTargets),e.xp6(1),e.Q6J("ngIf",n.bucketForm.showError("placement-target",_,"required"))}}function V_(t,o){1&t&&(e.ynx(0),e._UZ(1,"input",56),e.BQk())}function j_(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend",25),e.SDv(2,57),e.qZA(),e.TgZ(3,"div",9),e.TgZ(4,"div",27),e.TgZ(5,"div",28),e.TgZ(6,"input",58),e.NdJ("change",function(){return e.CHM(_),e.oxw(2).setMfaDeleteValidators()}),e.qZA(),e.TgZ(7,"label",59),e.SDv(8,60),e.qZA(),e.TgZ(9,"cd-helper"),e.TgZ(10,"span"),e.SDv(11,61),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}}function et(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,70),e.qZA())}function _t(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",67),e.SDv(2,68),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",69),e.YNc(5,et,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.bucketForm.showError("mfa-token-serial",_,"required"))}}function tt(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,74),e.qZA())}function nt(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",71),e.SDv(2,72),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",73),e.YNc(5,tt,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.bucketForm.showError("mfa-token-pin",_,"required"))}}function ot(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend",25),e.SDv(2,62),e.qZA(),e.TgZ(3,"div",9),e.TgZ(4,"div",27),e.TgZ(5,"div",28),e.TgZ(6,"input",63),e.NdJ("change",function(){return e.CHM(_),e.oxw(2).setMfaDeleteValidators()}),e.qZA(),e.TgZ(7,"label",64),e.SDv(8,65),e.qZA(),e.TgZ(9,"cd-helper"),e.TgZ(10,"span"),e.SDv(11,66),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(12,_t,6,1,"div",8),e.YNc(13,nt,6,1,"div",8),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(12),e.Q6J("ngIf",_.areMfaCredentialsRequired()),e.xp6(1),e.Q6J("ngIf",_.areMfaCredentialsRequired())}}function it(t,o){1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",75),e.SDv(2,76),e.qZA(),e.TgZ(3,"div",12),e.TgZ(4,"select",77),e.TgZ(5,"option",78),e.SDv(6,79),e.qZA(),e.TgZ(7,"option",80),e.SDv(8,81),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function st(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,86),e.qZA())}function at(t,o){1&t&&(e.TgZ(0,"span",38),e.SDv(1,87),e.qZA())}function rt(t,o){if(1&t&&(e.TgZ(0,"div",9),e.TgZ(1,"label",82),e.ynx(2),e.SDv(3,83),e.BQk(),e.TgZ(4,"cd-helper"),e.SDv(5,84),e.qZA(),e.qZA(),e.TgZ(6,"div",12),e._UZ(7,"input",85),e.YNc(8,st,2,0,"span",14),e.YNc(9,at,2,0,"span",14),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(8),e.Q6J("ngIf",n.bucketForm.showError("lock_retention_period_days",_,"pattern")),e.xp6(1),e.Q6J("ngIf",n.bucketForm.showError("lock_retention_period_days",_,"lockDays"))}}const Le=function(t){return{required:t}};function lt(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.YNc(9,I_,5,0,"div",8),e.TgZ(10,"div",9),e.TgZ(11,"label",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.YNc(15,v_,2,0,"span",14),e.YNc(16,F_,2,0,"span",14),e.YNc(17,L_,2,0,"span",14),e.YNc(18,D_,2,0,"span",14),e.YNc(19,x_,2,0,"span",14),e.YNc(20,y_,2,0,"span",14),e.YNc(21,q_,2,0,"span",14),e.YNc(22,w_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(23,"div",9),e.TgZ(24,"label",15),e.SDv(25,16),e.qZA(),e.TgZ(26,"div",12),e.TgZ(27,"select",17),e.YNc(28,k_,2,1,"option",18),e.YNc(29,B_,2,1,"option",18),e.YNc(30,H_,2,2,"option",19),e.qZA(),e.YNc(31,X_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(32,"div",9),e.TgZ(33,"label",20),e.SDv(34,21),e.qZA(),e.TgZ(35,"div",12),e.YNc(36,J_,5,4,"ng-template",null,22,e.W1O),e.YNc(38,V_,2,0,"ng-container",23),e.qZA(),e.qZA(),e.YNc(39,j_,12,0,"fieldset",24),e.YNc(40,ot,14,2,"fieldset",24),e.TgZ(41,"fieldset"),e.TgZ(42,"legend",25),e.SDv(43,26),e.qZA(),e.TgZ(44,"div",9),e.TgZ(45,"div",27),e.TgZ(46,"div",28),e._UZ(47,"input",29),e.TgZ(48,"label",30),e.SDv(49,31),e.qZA(),e.TgZ(50,"cd-helper"),e.TgZ(51,"span"),e.SDv(52,32),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(53,it,9,0,"div",8),e.YNc(54,rt,10,2,"div",8),e.qZA(),e.qZA(),e.TgZ(55,"div",33),e.TgZ(56,"cd-form-button-panel",34),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().submit()}),e.ALo(57,"titlecase"),e.ALo(58,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),n=e.MAs(37),i=e.oxw();e.xp6(1),e.Q6J("formGroup",i.bucketForm),e.xp6(6),e.pQV(e.lcZ(6,29,i.action))(e.lcZ(7,31,i.resource)),e.QtT(5),e.xp6(2),e.Q6J("ngIf",i.editing),e.xp6(2),e.Q6J("ngClass",e.VKq(37,Le,!i.editing)),e.xp6(3),e.Q6J("readonly",i.editing)("autofocus",!i.editing),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"required")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"bucketNameInvalid")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"bucketNameNotAllowed")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"containsUpperCase")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"lowerCaseOrNumber")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"ipAddress")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"onlyLowerCaseAndNumbers")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("bid",_,"shouldBeInRange")),e.xp6(5),e.Q6J("autofocus",i.editing),e.xp6(1),e.Q6J("ngIf",null===i.owners),e.xp6(1),e.Q6J("ngIf",null!==i.owners),e.xp6(1),e.Q6J("ngForOf",i.owners),e.xp6(1),e.Q6J("ngIf",i.bucketForm.showError("owner",_,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(39,Le,!i.editing)),e.xp6(5),e.Q6J("ngIf",i.editing)("ngIfElse",n),e.xp6(1),e.Q6J("ngIf",i.editing),e.xp6(1),e.Q6J("ngIf",i.editing),e.xp6(13),e.Q6J("ngIf",i.bucketForm.getValue("lock_enabled")),e.xp6(1),e.Q6J("ngIf",i.bucketForm.getValue("lock_enabled")),e.xp6(2),e.Q6J("form",i.bucketForm)("submitText",e.lcZ(57,33,i.action)+" "+e.lcZ(58,35,i.resource))}}let De=(()=>{class t extends Ie.E{constructor(_,n,i,s,c,d,E,g){super(),this.route=_,this.router=n,this.formBuilder=i,this.rgwBucketService=s,this.rgwSiteService=c,this.rgwUserService=d,this.notificationService=E,this.actionLabels=g,this.editing=!1,this.owners=null,this.placementTargets=[],this.isVersioningAlreadyEnabled=!1,this.isMfaDeleteAlreadyEnabled=!1,this.icons=D.P,this.editing=this.router.url.startsWith(`/rgw/bucket/${A.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource="bucket",this.createForm()}get isVersioningEnabled(){return this.bucketForm.getValue("versioning")}get isMfaDeleteEnabled(){return this.bucketForm.getValue("mfa-delete")}createForm(){const _=this,n=m.h.custom("lockDays",()=>{if(!_.bucketForm||!u().get(_.bucketForm.getRawValue(),"lock_enabled"))return!1;const i=Number(_.bucketForm.getValue("lock_retention_period_days"));return!Number.isInteger(i)||0===i});this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[a.kI.required],this.editing?[]:[m.h.bucketName(),m.h.bucketExistence(!1,this.rgwBucketService)]],owner:[null,[a.kI.required]],"placement-target":[null,this.editing?[]:[a.kI.required]],versioning:[null],"mfa-delete":[null],"mfa-token-serial":[""],"mfa-token-pin":[""],lock_enabled:[{value:!1,disabled:this.editing}],lock_mode:["COMPLIANCE"],lock_retention_period_days:[0,[m.h.number(!1),n]]})}ngOnInit(){const _={owners:this.rgwUserService.enumerate()};this.editing||(_.getPlacementTargets=this.rgwSiteService.get("placement-targets")),this.route.params.subscribe(n=>{if(n.hasOwnProperty("bid")){const i=decodeURIComponent(n.bid);_.getBid=this.rgwBucketService.get(i)}(0,Y.D)(_).subscribe(i=>{if(this.owners=i.owners.sort(),i.getPlacementTargets){const s=i.getPlacementTargets;this.zonegroup=s.zonegroup,u().forEach(s.placement_targets,c=>{c.description=`${c.name} (${"pool"}: ${c.data_pool})`,this.placementTargets.push(c)}),1===this.placementTargets.length&&this.bucketForm.get("placement-target").setValue(this.placementTargets[0].name)}if(i.getBid){const s=i.getBid,c=u().clone(this.bucketForm.getRawValue());let d=u().pick(s,u().keys(c));d.lock_retention_period_days=this.rgwBucketService.getLockDays(s),d["placement-target"]=s.placement_rule,d.versioning=s.versioning===B.ENABLED,d["mfa-delete"]=s.mfa_delete===k.ENABLED,d=u().merge(c,d),this.bucketForm.setValue(d),this.editing&&(this.isVersioningAlreadyEnabled=this.isVersioningEnabled,this.isMfaDeleteAlreadyEnabled=this.isMfaDeleteEnabled,this.setMfaDeleteValidators(),d.lock_enabled&&this.bucketForm.controls.versioning.disable())}this.loadingReady()})})}goToListView(){this.router.navigate(["/rgw/bucket"])}submit(){if(this.bucketForm.pristine)return void this.goToListView();const _=this.bucketForm.value;if(this.editing){const n=this.getVersioningStatus(),i=this.getMfaDeleteStatus();this.rgwBucketService.update(_.bid,_.id,_.owner,n,i,_["mfa-token-serial"],_["mfa-token-pin"],_.lock_mode,_.lock_retention_period_days).subscribe(()=>{this.notificationService.show(Ae.k.success,"Updated Object Gateway bucket '" + _.bid + "'."),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(_.bid,_.owner,this.zonegroup,_["placement-target"],_.lock_enabled,_.lock_mode,_.lock_retention_period_days).subscribe(()=>{this.notificationService.show(Ae.k.success,"Created Object Gateway bucket '" + _.bid + "'"),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}areMfaCredentialsRequired(){return this.isMfaDeleteEnabled!==this.isMfaDeleteAlreadyEnabled||this.isMfaDeleteAlreadyEnabled&&this.isVersioningEnabled!==this.isVersioningAlreadyEnabled}setMfaDeleteValidators(){const _=this.bucketForm.get("mfa-token-serial"),n=this.bucketForm.get("mfa-token-pin");this.areMfaCredentialsRequired()?(_.setValidators(a.kI.required),n.setValidators(a.kI.required)):(_.setValidators(null),n.setValidators(null)),_.updateValueAndValidity(),n.updateValueAndValidity()}getVersioningStatus(){return this.isVersioningEnabled?B.ENABLED:B.SUSPENDED}getMfaDeleteStatus(){return this.isMfaDeleteEnabled?k.ENABLED:k.DISABLED}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(w.gz),e.Y36(w.F0),e.Y36(J.O),e.Y36(Me.o),e.Y36(We.I),e.Y36(O),e.Y36(ve.g),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,x,y,S,_e,te,ne,oe,ie,se,ae,re,le,ce,de,ue,Re;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",n="Name...",i="Owner",s="Placement target",c="Locking",d="Enabled",E="Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.",g="Id",C="This field is required.",b="Bucket names can only contain lowercase letters, numbers, periods and hyphens.",P="The chosen name is already in use.",G="Bucket names must not contain uppercase characters or underscores.",N="Each label must start and end with a lowercase letter or a number.",p="Bucket names cannot be formatted as IP address.",U="Bucket labels cannot be empty and can only contain lowercase letters, numbers and hyphens.",W="Bucket names must be 3 to 63 characters long.",Z="Loading...",$="-- Select a user --",h="This field is required.",I="Loading...",v="-- Select a placement target --",F="This field is required.",T="Versioning",x="Enabled",y="Enables versioning for the objects in the bucket.",S="Multi-Factor Authentication",_e="Delete enabled",te="Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.",ne="Token Serial Number",oe="This field is required.",ie="Token PIN",se="This field is required.",ae="Mode",re="Compliance",le="Governance",ce="Days",de="The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.",ue="The entered value must be a positive integer.",Re="Retention Days must be a positive integer.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","bucketForm","novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],o,[1,"card-body"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","bid",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","bid","name","bid","type","text","placeholder",n,"formControlName","bid",1,"form-control",3,"readonly","autofocus"],["class","invalid-feedback",4,"ngIf"],["for","owner",1,"cd-col-form-label","required"],i,["id","owner","name","owner","formControlName","owner",1,"form-control",3,"autofocus"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],["for","placement-target",1,"cd-col-form-label",3,"ngClass"],s,["placementTargetSelect",""],[4,"ngIf","ngIfElse"],[4,"ngIf"],[1,"cd-header"],c,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","lock_enabled","formControlName","lock_enabled","type","checkbox",1,"custom-control-input"],["for","lock_enabled",1,"custom-control-label"],d,E,[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["for","id",1,"cd-col-form-label"],g,["id","id","name","id","type","text","formControlName","id","readonly","",1,"form-control"],[1,"invalid-feedback"],C,b,P,G,N,p,U,W,[3,"ngValue"],Z,$,[3,"value"],h,["id","placement-target","name","placement-target","formControlName","placement-target",1,"form-control"],I,v,F,["id","placement-target","name","placement-target","formControlName","placement-target","type","text","readonly","",1,"form-control"],T,["type","checkbox","id","versioning","name","versioning","formControlName","versioning",1,"custom-control-input",3,"change"],["for","versioning",1,"custom-control-label"],x,y,S,["type","checkbox","id","mfa-delete","name","mfa-delete","formControlName","mfa-delete",1,"custom-control-input",3,"change"],["for","mfa-delete",1,"custom-control-label"],_e,te,["for","mfa-token-serial",1,"cd-col-form-label"],ne,["type","text","id","mfa-token-serial","name","mfa-token-serial","formControlName","mfa-token-serial",1,"form-control"],oe,["for","mfa-token-pin",1,"cd-col-form-label"],ie,["type","text","id","mfa-token-pin","name","mfa-token-pin","formControlName","mfa-token-pin",1,"form-control"],se,["for","lock_mode",1,"cd-col-form-label"],ae,["formControlName","lock_mode","name","lock_mode","id","lock_mode",1,"form-control"],["value","COMPLIANCE"],re,["value","GOVERNANCE"],le,["for","lock_retention_period_days",1,"cd-col-form-label"],ce,de,["type","number","id","lock_retention_period_days","formControlName","lock_retention_period_days","min","0",1,"form-control"],ue,Re]},template:function(_,n){1&_&&e.YNc(0,lt,59,41,"div",0),2&_&&e.Q6J("cdFormLoading",n.loading)},directives:[Fe.y,a._Y,a.JL,V.V,a.sg,f.O5,H.P,f.mk,q.o,a.Fj,X.b,a.JJ,a.u,j.U,a.EJ,f.sg,a.Wl,h_.S,ee.p,a.YN,a.Kr,a.wV,a.qQ],pipes:[f.rS,K.m],styles:[""]}),t})();var xe=r(18891),be=r(68136),ye=r(30982),z=r(64337),Pe=r(68774),qe=r(47557),we=r(66369),Q=r(51847),Ee=r(74937),Te=r(63285),ke=r(94928),ct=r(96102),Be=r(68962);function dt(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,24),e.qZA())}function ut(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimless"),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.selection.bucket_quota.max_size)," ")}}function Rt(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,25),e.qZA())}function gt(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.hij(" ",_.selection.bucket_quota.max_objects," ")}}function Et(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,20),e.qZA(),e.TgZ(3,"table",1),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",2),e.SDv(7,21),e.qZA(),e.TgZ(8,"td",4),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",5),e.SDv(13,22),e.qZA(),e.YNc(14,dt,2,0,"td",0),e.YNc(15,ut,3,3,"td",0),e.qZA(),e.TgZ(16,"tr"),e.TgZ(17,"td",5),e.SDv(18,23),e.qZA(),e.YNc(19,Rt,2,0,"td",0),e.YNc(20,gt,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(2);e.xp6(9),e.Oqu(e.lcZ(10,5,_.selection.bucket_quota.enabled)),e.xp6(5),e.Q6J("ngIf",_.selection.bucket_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",_.selection.bucket_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota.max_objects>-1)}}function Tt(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"tr"),e.TgZ(2,"td",5),e.SDv(3,26),e.qZA(),e.TgZ(4,"td"),e._uU(5),e.qZA(),e.qZA(),e.TgZ(6,"tr"),e.TgZ(7,"td",5),e.SDv(8,27),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.qZA(),e.qZA(),e.BQk()),2&t){const _=e.oxw(2);e.xp6(5),e.Oqu(_.selection.lock_mode),e.xp6(5),e.Oqu(_.selection.lock_retention_period_days)}}function St(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"table",1),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",2),e.SDv(5,3),e.qZA(),e.TgZ(6,"td",4),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",5),e.SDv(10,6),e.qZA(),e.TgZ(11,"td"),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",5),e.SDv(15,7),e.qZA(),e.TgZ(16,"td"),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",5),e.SDv(20,8),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.qZA(),e.qZA(),e.TgZ(23,"tr"),e.TgZ(24,"td",5),e.SDv(25,9),e.qZA(),e.TgZ(26,"td"),e._uU(27),e.qZA(),e.qZA(),e.TgZ(28,"tr"),e.TgZ(29,"td",5),e.SDv(30,10),e.qZA(),e.TgZ(31,"td"),e._uU(32),e.qZA(),e.qZA(),e.TgZ(33,"tr"),e.TgZ(34,"td",5),e.SDv(35,11),e.qZA(),e.TgZ(36,"td"),e._uU(37),e.qZA(),e.qZA(),e.TgZ(38,"tr"),e.TgZ(39,"td",5),e.SDv(40,12),e.qZA(),e.TgZ(41,"td"),e._uU(42),e.qZA(),e.qZA(),e.TgZ(43,"tr"),e.TgZ(44,"td",5),e.SDv(45,13),e.qZA(),e.TgZ(46,"td"),e._uU(47),e.qZA(),e.qZA(),e.TgZ(48,"tr"),e.TgZ(49,"td",5),e.SDv(50,14),e.qZA(),e.TgZ(51,"td"),e._uU(52),e.ALo(53,"cdDate"),e.qZA(),e.qZA(),e.TgZ(54,"tr"),e.TgZ(55,"td",5),e.SDv(56,15),e.qZA(),e.TgZ(57,"td"),e._uU(58),e.qZA(),e.qZA(),e.TgZ(59,"tr"),e.TgZ(60,"td",5),e.SDv(61,16),e.qZA(),e.TgZ(62,"td"),e._uU(63),e.qZA(),e.qZA(),e.TgZ(64,"tr"),e.TgZ(65,"td",5),e.SDv(66,17),e.qZA(),e.TgZ(67,"td"),e._uU(68),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(69,Et,21,7,"div",0),e.TgZ(70,"legend"),e.SDv(71,18),e.qZA(),e.TgZ(72,"table",1),e.TgZ(73,"tbody"),e.TgZ(74,"tr"),e.TgZ(75,"td",2),e.SDv(76,19),e.qZA(),e.TgZ(77,"td",4),e._uU(78),e.ALo(79,"booleanText"),e.qZA(),e.qZA(),e.YNc(80,Tt,11,2,"ng-container",0),e.qZA(),e.qZA(),e.BQk()),2&t){const _=e.oxw();e.xp6(7),e.Oqu(_.selection.bid),e.xp6(5),e.Oqu(_.selection.id),e.xp6(5),e.Oqu(_.selection.owner),e.xp6(5),e.Oqu(_.selection.index_type),e.xp6(5),e.Oqu(_.selection.placement_rule),e.xp6(5),e.Oqu(_.selection.marker),e.xp6(5),e.Oqu(_.selection.max_marker),e.xp6(5),e.Oqu(_.selection.ver),e.xp6(5),e.Oqu(_.selection.master_ver),e.xp6(5),e.Oqu(e.lcZ(53,16,_.selection.mtime)),e.xp6(6),e.Oqu(_.selection.zonegroup),e.xp6(5),e.Oqu(_.selection.versioning),e.xp6(5),e.Oqu(_.selection.mfa_delete),e.xp6(1),e.Q6J("ngIf",_.selection.bucket_quota),e.xp6(9),e.Oqu(e.lcZ(79,18,_.selection.lock_enabled)),e.xp6(2),e.Q6J("ngIf",_.selection.lock_enabled)}}let ft=(()=>{class t{constructor(_){this.rgwBucketService=_}ngOnChanges(){this.selection&&this.rgwBucketService.get(this.selection.bid).subscribe(_=>{_.lock_retention_period_days=this.rgwBucketService.getLockDays(_),this.selection=_})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Me.o))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F;return o="Name",_="ID",n="Owner",i="Index type",s="Placement rule",c="Marker",d="Maximum marker",E="Version",g="Master version",C="Modification time",b="Zonegroup",P="Versioning",G="MFA Delete",N="Locking",p="Enabled",U="Bucket quota",W="Enabled",Z="Maximum size",$="Maximum objects",h="Unlimited",I="Unlimited",v="Mode",F="Days",[[4,"ngIf"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],o,[1,"w-75"],[1,"bold"],_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F]},template:function(_,n){1&_&&e.YNc(0,St,81,20,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5],pipes:[ct.N,Be.T,we.n],styles:["table[_ngcontent-%COMP%]{table-layout:fixed}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{word-wrap:break-word}"]}),t})();var He=r(60251);const Ct=["bucketSizeTpl"],pt=["bucketObjectTpl"];function Mt(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",8),2&t){const _=e.oxw().row;e.Q6J("total",_.bucket_quota.max_size)("used",_.bucket_size)}}function mt(t,o){1&t&&e.SDv(0,9)}function At(t,o){if(1&t&&(e.YNc(0,Mt,1,2,"cd-usage-bar",6),e.YNc(1,mt,1,0,"ng-template",null,7,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.bucket_quota.max_size>0&&_.bucket_quota.enabled)("ngIfElse",n)}}function bt(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",12),2&t){const _=e.oxw().row;e.Q6J("total",_.bucket_quota.max_objects)("used",_.num_objects)("isBinary",!1)}}function Pt(t,o){1&t&&e.SDv(0,13)}function Gt(t,o){if(1&t&&(e.YNc(0,bt,1,3,"cd-usage-bar",10),e.YNc(1,Pt,1,0,"ng-template",null,11,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.bucket_quota.max_objects>0&&_.bucket_quota.enabled)("ngIfElse",n)}}let Ot=(()=>{class t extends be.o{constructor(_,n,i,s,c,d,E,g){super(g),this.authStorageService=_,this.dimlessBinaryPipe=n,this.dimlessPipe=i,this.rgwBucketService=s,this.modalService=c,this.urlBuilder=d,this.actionLabels=E,this.ngZone=g,this.columns=[],this.buckets=[],this.selection=new Pe.r}ngOnInit(){this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:"Name",prop:"bid",flexGrow:2},{name:"Owner",prop:"owner",flexGrow:2.5},{name:"Used Capacity",prop:"bucket_size",flexGrow:.6,pipe:this.dimlessBinaryPipe},{name:"Capacity Limit %",prop:"size_usage",cellTemplate:this.bucketSizeTpl,flexGrow:.8},{name:"Objects",prop:"num_objects",flexGrow:.6,pipe:this.dimlessPipe},{name:"Object Limit %",prop:"object_usage",cellTemplate:this.bucketObjectTpl,flexGrow:.8}];const _=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().bid)}`;this.tableActions=[{permission:"create",icon:D.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:c=>!c.hasSelection},{permission:"update",icon:D.P.edit,routerLink:()=>this.urlBuilder.getEdit(_()),name:this.actionLabels.EDIT},{permission:"delete",icon:D.P.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:c=>c.hasMultiSelection}],this.setTableRefreshTimeout()}transformBucketData(){u().forEach(this.buckets,_=>{const n=_.bucket_quota.max_size,i=_.bucket_quota.max_objects;_.bucket_size=0,_.num_objects=0,u().isEmpty(_.usage)||(_.bucket_size=_.usage["rgw.main"].size_actual,_.num_objects=_.usage["rgw.main"].num_objects),_.size_usage=n>0?_.bucket_size/n:void 0,_.object_usage=i>0?_.num_objects/i:void 0})}getBucketList(_){this.setTableRefreshTimeout(),this.rgwBucketService.list(!0).subscribe(n=>{this.buckets=n,this.transformBucketData()},()=>{_.error()})}updateSelection(_){this.selection=_}deleteAction(){this.modalService.show(ye.M,{itemDescription:this.selection.hasSingleSelection?"bucket":"buckets",itemNames:this.selection.selected.map(_=>_.bid),submitActionObservable:()=>new xe.y(_=>{(0,Y.D)(this.selection.selected.map(n=>this.rgwBucketService.delete(n.bid))).subscribe({error:n=>{_.error(n),this.table.refreshBtn()},complete:()=>{_.complete(),this.table.refreshBtn()}})})})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Ee.j),e.Y36(qe.$),e.Y36(we.n),e.Y36(Me.o),e.Y36(Te.Z),e.Y36(Q.F),e.Y36(A.p4),e.Y36(e.R0b))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-bucket-list"]],viewQuery:function(_,n){if(1&_&&(e.Gf(z.a,7),e.Gf(Ct,7),e.Gf(pt,7)),2&_){let i;e.iGM(i=e.CRH())&&(n.table=i.first),e.iGM(i=e.CRH())&&(n.bucketSizeTpl=i.first),e.iGM(i=e.CRH())&&(n.bucketObjectTpl=i.first)}},features:[e._Bn([{provide:Q.F,useValue:new Q.F("rgw/bucket")}]),e.qOj],decls:8,vars:9,consts:function(){let o,_;return o="No Limit",_="No Limit",[["columnMode","flex","selectionType","multiClick","identifier","bid",3,"autoReload","data","columns","hasDetails","status","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["bucketSizeTpl",""],["bucketObjectTpl",""],[3,"total","used",4,"ngIf","ngIfElse"],["noSizeQuota",""],[3,"total","used"],o,[3,"total","used","isBinary",4,"ngIf","ngIfElse"],["noObjectQuota",""],[3,"total","used","isBinary"],_]},template:function(_,n){1&_&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(s){return n.setExpandedRow(s)})("updateSelection",function(s){return n.updateSelection(s)})("fetchData",function(s){return n.getBucketList(s)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-rgw-bucket-details",3),e.qZA(),e.YNc(4,At,3,2,"ng-template",null,4,e.W1O),e.YNc(6,Gt,3,2,"ng-template",null,5,e.W1O)),2&_&&(e.Q6J("autoReload",!1)("data",n.buckets)("columns",n.columns)("hasDetails",!0)("status",n.tableStatus),e.xp6(2),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("selection",n.expandedRow))},directives:[z.a,ke.K,ft,f.O5,He.O],styles:[""]}),t})();var Ut=r(58111),Xe=r(59376),Wt=r(61350),Zt=r(98056),Ke=r(76317);function $t(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table-key-value",11),e.NdJ("fetchData",function(){return e.CHM(_),e.oxw(2).getMetaData()}),e.qZA()}if(2&t){const _=e.oxw(2);e.Q6J("data",_.metadata)}}function ht(t,o){if(1&t&&e._UZ(0,"cd-table-performance-counter",12),2&t){const _=e.oxw(2);e.Q6J("serviceId",_.serviceMapId)}}function It(t,o){if(1&t&&e._UZ(0,"cd-grafana",15),2&t){const _=e.oxw(3);e.Q6J("grafanaPath","rgw-instance-detail?var-rgw_servers=rgw."+_.serviceId)}}function vt(t,o){1&t&&(e.TgZ(0,"li",13),e.TgZ(1,"a",4),e.SDv(2,14),e.qZA(),e.YNc(3,It,1,1,"ng-template",6),e.qZA())}function Ft(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,$t,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,ht,1,1,"ng-template",6),e.qZA(),e.YNc(11,vt,4,0,"li",9),e.qZA(),e._UZ(12,"div",10),e.BQk()),2&t){const _=e.MAs(2),n=e.oxw();e.xp6(11),e.Q6J("ngIf",n.grafanaPermission.read),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Lt=(()=>{class t{constructor(_,n){this.rgwDaemonService=_,this.authStorageService=n,this.serviceId="",this.serviceMapId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection&&(this.serviceId=this.selection.id,this.serviceMapId=this.selection.service_map_id)}getMetaData(){u().isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(_=>{this.metadata=_.rgw_metadata})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ge.b),e.Y36(Ee.j))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-daemon-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n;return o="Details",_="Performance Counters",n="Performance Details",[[4,"ngIf"],["ngbNav","","cdStatefulTab","rgw-daemon-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","performance-counters"],_,["ngbNavItem","performance-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"data","fetchData"],["serviceType","rgw",3,"serviceId"],["ngbNavItem","performance-details"],n,["uid","x5ARzZtmk","grafanaStyle","one",3,"grafanaPath"]]},template:function(_,n){1&_&&e.YNc(0,Ft,13,2,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5,M.Pz,Xe.m,M.nv,M.Vx,M.uN,M.tO,Wt.b,Zt.p,Ke.F],styles:[""]}),t})();function Dt(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",8),e.NdJ("setExpandedRow",function(i){return e.CHM(_),e.oxw().setExpandedRow(i)})("fetchData",function(i){return e.CHM(_),e.oxw().getDaemonList(i)}),e._UZ(1,"cd-rgw-daemon-details",9),e.qZA()}if(2&t){const _=e.oxw();e.Q6J("data",_.daemons)("columns",_.columns)("hasDetails",!0),e.xp6(1),e.Q6J("selection",_.expandedRow)}}function xt(t,o){1&t&&e._UZ(0,"cd-grafana",11),2&t&&e.Q6J("grafanaPath","rgw-overview?")}function yt(t,o){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,10),e.qZA(),e.YNc(3,xt,1,1,"ng-template",5),e.qZA())}function qt(t,o){1&t&&e._UZ(0,"cd-grafana",13),2&t&&e.Q6J("grafanaPath","radosgw-sync-overview?")}function wt(t,o){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,12),e.qZA(),e.YNc(3,qt,1,1,"ng-template",5),e.qZA())}let kt=(()=>{class t extends be.o{constructor(_,n,i,s){super(),this.rgwDaemonService=_,this.authStorageService=n,this.cephShortVersionPipe=i,this.rgwSiteService=s,this.columns=[],this.daemons=[],this.updateDaemons=c=>{this.daemons=c}}ngOnInit(){this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:"ID",prop:"id",flexGrow:2},{name:"Hostname",prop:"server_hostname",flexGrow:2},{name:"Zone",prop:"zone_name",flexGrow:2},{name:"Zone Group",prop:"zonegroup_name",flexGrow:2},{name:"Realm",prop:"realm_name",flexGrow:2},{name:"Version",prop:"version",flexGrow:1,pipe:this.cephShortVersionPipe}],this.rgwSiteService.get("realms").subscribe(_=>this.isMultiSite=_.length>0)}getDaemonList(_){this.rgwDaemonService.list().subscribe(this.updateDaemons,()=>{_.error()})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ge.b),e.Y36(Ee.j),e.Y36(Ut.F),e.Y36(We.I))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-daemon-list"]],features:[e.qOj],decls:9,vars:3,consts:function(){let o,_,n;return o="Daemons List",_="Overall Performance",n="Sync Performance",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["columnMode","flex",3,"data","columns","hasDetails","setExpandedRow","fetchData"],["cdTableDetail","",3,"selection"],_,["uid","WAkugZpiz","grafanaStyle","two",3,"grafanaPath"],n,["uid","rgw-sync-overview","grafanaStyle","two",3,"grafanaPath"]]},template:function(_,n){if(1&_&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,Dt,2,4,"ng-template",5),e.qZA(),e.YNc(6,yt,4,0,"li",6),e.YNc(7,wt,4,0,"li",6),e.qZA(),e._UZ(8,"div",7)),2&_){const i=e.MAs(1);e.xp6(6),e.Q6J("ngIf",n.grafanaPermission.read),e.xp6(1),e.Q6J("ngIf",n.grafanaPermission.read&&n.isMultiSite),e.xp6(1),e.Q6J("ngbNavOutlet",i)}},directives:[M.Pz,M.nv,M.Vx,M.uN,f.O5,M.tO,z.a,Lt,Ke.F],styles:[""]}),t})();var Bt=r(58071),Ge=r(28211),Se=(()=>{return(t=Se||(Se={})).USERS="users",t.BUCKETS="buckets",t.METADATA="metadata",t.USAGE="usage",t.ZONE="zone",Se;var t})();let ze=(()=>{class t{static getAll(){return Object.values(t.capabilities)}}return t.capabilities=Se,t})();var fe=r(60312);function Ht(t,o){1&t&&e._UZ(0,"input",22),2&t&&e.Q6J("readonly",!0)}function Xt(t,o){1&t&&(e.TgZ(0,"option",17),e.SDv(1,25),e.qZA()),2&t&&e.Q6J("ngValue",null)}function Kt(t,o){if(1&t&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function zt(t,o){if(1&t&&(e.TgZ(0,"select",23),e.YNc(1,Xt,2,1,"option",24),e.YNc(2,Kt,2,2,"option",19),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.Q6J("ngIf",null!==_.types),e.xp6(1),e.Q6J("ngForOf",_.types)}}function Qt(t,o){1&t&&(e.TgZ(0,"span",27),e.SDv(1,28),e.qZA())}function Yt(t,o){if(1&t&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Jt(t,o){1&t&&(e.TgZ(0,"span",27),e.SDv(1,29),e.qZA())}const Vt=function(t){return{required:t}},jt=function(){return["read","write","*"]};let en=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.activeModal=n,this.actionLabels=i,this.submitAction=new e.vpe,this.editing=!0,this.types=[],this.resource="capability",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({type:[null,[a.kI.required]],perm:[null,[a.kI.required]]})}setEditing(_=!0){this.editing=_,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD}setValues(_,n){this.formGroup.setValue({type:_,perm:n})}setCapabilities(_){const n=[];_.forEach(i=>{n.push(i.type)}),this.types=[],ze.getAll().forEach(i=>{-1===u().indexOf(n,i)&&this.types.push(i)})}onSubmit(){this.submitAction.emit(this.formGroup.value),this.activeModal.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-capability-modal"]],outputs:{submitAction:"submitAction"},decls:29,vars:24,consts:function(){let o,_,n,i,s,c,d;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Type",n="Permission",i="-- Select a permission --",s="-- Select a type --",c="This field is required.",d="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","type",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","type","class","form-control","type","text","formControlName","type",3,"readonly",4,"ngIf"],["id","type","class","form-control","formControlName","type","autofocus","",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["for","perm",1,"cd-col-form-label","required"],n,["id","perm","formControlName","perm",1,"form-control"],[3,"ngValue"],i,[3,"value",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["id","type","type","text","formControlName","type",1,"form-control",3,"readonly"],["id","type","formControlName","type","autofocus","",1,"form-control"],[3,"ngValue",4,"ngIf"],s,[3,"value"],[1,"invalid-feedback"],c,d]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.YNc(13,Ht,1,1,"input",11),e.YNc(14,zt,3,2,"select",12),e.YNc(15,Qt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(16,"div",7),e.TgZ(17,"label",14),e.SDv(18,15),e.qZA(),e.TgZ(19,"div",10),e.TgZ(20,"select",16),e.TgZ(21,"option",17),e.SDv(22,18),e.qZA(),e.YNc(23,Yt,2,2,"option",19),e.qZA(),e.YNc(24,Jt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(25,"div",20),e.TgZ(26,"cd-form-button-panel",21),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(27,"titlecase"),e.ALo(28,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,13,n.action))(e.lcZ(4,15,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(4),e.Q6J("ngClass",e.VKq(21,Vt,!n.editing)),e.xp6(3),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",!n.editing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("type",i,"required")),e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(23,jt)),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("perm",i,"required")),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(27,17,n.action)+" "+e.lcZ(28,19,n.resource))}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,f.mk,f.O5,q.o,a.EJ,X.b,a.JJ,a.u,a.YN,a.Kr,f.sg,ee.p,a.Fj,j.U],pipes:[f.rS,K.m],styles:[""]}),t})();var Ce=r(4416),pe=r(58039);function _n(t,o){1&t&&e._UZ(0,"input",17),2&t&&e.Q6J("readonly",!0)}function tn(t,o){1&t&&(e.TgZ(0,"option",21),e.SDv(1,22),e.qZA()),2&t&&e.Q6J("ngValue",null)}function nn(t,o){if(1&t&&(e.TgZ(0,"option",23),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.Oqu(_)}}function on(t,o){if(1&t&&(e.TgZ(0,"select",18),e.YNc(1,tn,2,1,"option",19),e.YNc(2,nn,2,2,"option",20),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.Q6J("ngIf",null!==_.userCandidates),e.xp6(1),e.Q6J("ngForOf",_.userCandidates)}}function sn(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,25),e.qZA())}function an(t,o){1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"div",26),e.TgZ(2,"div",27),e._UZ(3,"input",28),e.TgZ(4,"label",29),e.SDv(5,30),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function rn(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,38),e.qZA())}const Ne=function(t){return{required:t}};function ln(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",31),e.SDv(2,32),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",33),e._UZ(5,"input",34),e.TgZ(6,"span",35),e._UZ(7,"button",36),e._UZ(8,"cd-copy-2-clipboard-button",37),e.qZA(),e.qZA(),e.YNc(9,rn,2,0,"span",13),e.qZA(),e.qZA()),2&t){const _=e.oxw(),n=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(3,Ne,!_.viewing)),e.xp6(4),e.Q6J("readonly",_.viewing),e.xp6(4),e.Q6J("ngIf",_.formGroup.showError("access_key",n,"required"))}}function cn(t,o){1&t&&(e.TgZ(0,"span",24),e.SDv(1,44),e.qZA())}function dn(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",39),e.SDv(2,40),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",33),e._UZ(5,"input",41),e.TgZ(6,"span",35),e._UZ(7,"button",42),e._UZ(8,"cd-copy-2-clipboard-button",43),e.qZA(),e.qZA(),e.YNc(9,cn,2,0,"span",13),e.qZA(),e.qZA()),2&t){const _=e.oxw(),n=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(3,Ne,!_.viewing)),e.xp6(4),e.Q6J("readonly",_.viewing),e.xp6(4),e.Q6J("ngIf",_.formGroup.showError("secret_key",n,"required"))}}let Qe=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.activeModal=n,this.actionLabels=i,this.submitAction=new e.vpe,this.viewing=!0,this.userCandidates=[],this.resource="S3 Key",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({user:[null,[a.kI.required]],generate_key:[!0],access_key:[null,[m.h.requiredIf({generate_key:!1})]],secret_key:[null,[m.h.requiredIf({generate_key:!1})]]})}setViewing(_=!0){this.viewing=_,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE}setValues(_,n,i){this.formGroup.setValue({user:_,generate_key:u().isEmpty(n),access_key:n,secret_key:i})}setUserCandidates(_){this.userCandidates=_}onSubmit(){this.submitAction.emit(this.formGroup.value),this.activeModal.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-s3-key-modal"]],outputs:{submitAction:"submitAction"},decls:23,vars:24,consts:function(){let o,_,n,i,s,c,d,E,g;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="-- Select a username --",i="This field is required.",s="Auto-generate key",c="Access key",d="This field is required.",E="Secret key",g="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","user",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","user","class","form-control","type","text","formControlName","user",3,"readonly",4,"ngIf"],["id","user","class","form-control","formControlName","user","autofocus","",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent"],["id","user","type","text","formControlName","user",1,"form-control",3,"readonly"],["id","user","formControlName","user","autofocus","",1,"form-control"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],n,[3,"value"],[1,"invalid-feedback"],i,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","generate_key","type","checkbox","formControlName","generate_key",1,"custom-control-input"],["for","generate_key",1,"custom-control-label"],s,["for","access_key",1,"cd-col-form-label",3,"ngClass"],c,[1,"input-group"],["id","access_key","type","password","formControlName","access_key",1,"form-control",3,"readonly"],[1,"input-group-append"],["type","button","cdPasswordButton","access_key",1,"btn","btn-light"],["source","access_key"],d,["for","secret_key",1,"cd-col-form-label",3,"ngClass"],E,["id","secret_key","type","password","formControlName","secret_key",1,"form-control",3,"readonly"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],g]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.YNc(13,_n,1,1,"input",11),e.YNc(14,on,3,2,"select",12),e.YNc(15,sn,2,0,"span",13),e.qZA(),e.qZA(),e.YNc(16,an,6,0,"div",14),e.YNc(17,ln,10,5,"div",14),e.YNc(18,dn,10,5,"div",14),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(21,"titlecase"),e.ALo(22,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,14,n.action))(e.lcZ(4,16,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(4),e.Q6J("ngClass",e.VKq(22,Ne,!n.viewing)),e.xp6(3),e.Q6J("ngIf",n.viewing),e.xp6(1),e.Q6J("ngIf",!n.viewing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",!n.viewing),e.xp6(1),e.Q6J("ngIf",!n.formGroup.getValue("generate_key")),e.xp6(1),e.Q6J("ngIf",!n.formGroup.getValue("generate_key")),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(21,18,n.action)+" "+e.lcZ(22,20,n.resource))("showSubmit",!n.viewing)}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,f.mk,f.O5,ee.p,q.o,a.Fj,X.b,a.JJ,a.u,a.EJ,j.U,f.sg,a.YN,a.Kr,a.Wl,Ce.C,pe.s],pipes:[f.rS,K.m],styles:[""]}),t})();class un{}function Rn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,30),e.qZA())}function gn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,31),e.qZA())}function En(t,o){if(1&t&&(e.TgZ(0,"option",32),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Tn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,33),e.qZA())}function Sn(t,o){1&t&&(e.TgZ(0,"span",29),e.SDv(1,48),e.qZA())}function fn(t,o){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",41),e.SDv(2,42),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"div",43),e._UZ(5,"input",44),e.TgZ(6,"span",45),e._UZ(7,"button",46),e._UZ(8,"cd-copy-2-clipboard-button",47),e.qZA(),e.qZA(),e.YNc(9,Sn,2,0,"span",15),e.qZA(),e.qZA()),2&t){const _=e.oxw(2),n=e.MAs(7);e.xp6(9),e.Q6J("ngIf",_.formGroup.showError("secret_key",n,"required"))}}function Cn(t,o){if(1&t&&(e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,34),e.qZA(),e.TgZ(3,"div",7),e.TgZ(4,"div",35),e.TgZ(5,"div",36),e._UZ(6,"input",37),e.TgZ(7,"label",38),e.SDv(8,39),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,fn,10,1,"div",40),e.qZA()),2&t){const _=e.oxw();e.xp6(9),e.Q6J("ngIf",!_.editing&&!_.formGroup.getValue("generate_secret"))}}const pn=function(t){return{required:t}},Mn=function(){return["read","write"]};let mn=(()=>{class t{constructor(_,n,i){this.formBuilder=_,this.bsModalRef=n,this.actionLabels=i,this.submitAction=new e.vpe,this.editing=!0,this.subusers=[],this.resource="Subuser",this.createForm()}createForm(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[a.kI.required,this.subuserValidator()]],perm:[null,[a.kI.required]],generate_secret:[!0],secret_key:[null,[m.h.requiredIf({generate_secret:!1})]]})}subuserValidator(){const _=this;return n=>_.editing||(0,m.P)(n.value)?null:_.subusers.some(s=>u().isEqual(_.getSubuserName(s.id),n.value))?{subuserIdExists:!0}:null}getSubuserName(_){if(u().isEmpty(_))return _;const n=_.match(/([^:]+)(:(.+))?/);return u().isUndefined(n[3])?n[1]:n[3]}setEditing(_=!0){this.editing=_,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE}setValues(_,n="",i=""){this.formGroup.setValue({uid:_,subuid:this.getSubuserName(n),perm:i,generate_secret:!0,secret_key:null})}setSubusers(_){this.subusers=_}onSubmit(){const _=this.formGroup.value,n=new un;n.id=`${_.uid}:${_.subuid}`,n.permissions=_.perm,n.generate_secret=_.generate_secret,n.secret_key=_.secret_key,this.submitAction.emit(n),this.bsModalRef.close()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-subuser-modal"]],outputs:{submitAction:"submitAction"},decls:39,vars:26,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="Subuser",i="Permission",s="-- Select a permission --",c="read, write",d="full",E="This field is required.",g="The chosen subuser ID is already in use.",C="This field is required.",b="Swift key",P="Auto-generate secret",G="Secret key",N="This field is required.",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","uid",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["id","uid","type","text","formControlName","uid",1,"form-control",3,"readonly"],["for","subuid",1,"cd-col-form-label",3,"ngClass"],n,["id","subuid","type","text","formControlName","subuid","autofocus","",1,"form-control",3,"readonly"],["class","invalid-feedback",4,"ngIf"],["for","perm",1,"cd-col-form-label","required"],i,["id","perm","formControlName","perm",1,"form-control"],[3,"ngValue"],s,[3,"value",4,"ngFor","ngForOf"],["value","read-write"],c,["value","full-control"],d,[4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],E,g,[3,"value"],C,b,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","generate_secret","type","checkbox","formControlName","generate_secret",1,"custom-control-input"],["for","generate_secret",1,"custom-control-label"],P,["class","form-group row",4,"ngIf"],["for","secret_key",1,"cd-col-form-label","required"],G,[1,"input-group"],["id","secret_key","type","password","formControlName","secret_key",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],N]},template:function(_,n){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",12),e.SDv(16,13),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",14),e.YNc(19,Rn,2,0,"span",15),e.YNc(20,gn,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(21,"div",7),e.TgZ(22,"label",16),e.SDv(23,17),e.qZA(),e.TgZ(24,"div",10),e.TgZ(25,"select",18),e.TgZ(26,"option",19),e.SDv(27,20),e.qZA(),e.YNc(28,En,2,2,"option",21),e.TgZ(29,"option",22),e.SDv(30,23),e.qZA(),e.TgZ(31,"option",24),e.SDv(32,25),e.qZA(),e.qZA(),e.YNc(33,Tn,2,0,"span",15),e.qZA(),e.qZA(),e.YNc(34,Cn,10,1,"fieldset",26),e.qZA(),e.TgZ(35,"div",27),e.TgZ(36,"cd-form-button-panel",28),e.NdJ("submitActionEvent",function(){return n.onSubmit()}),e.ALo(37,"titlecase"),e.ALo(38,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const i=e.MAs(7);e.Q6J("modalRef",n.bsModalRef),e.xp6(4),e.pQV(e.lcZ(3,15,n.action))(e.lcZ(4,17,n.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",n.formGroup),e.xp6(7),e.Q6J("readonly",!0),e.xp6(2),e.Q6J("ngClass",e.VKq(23,pn,!n.editing)),e.xp6(3),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("subuid",i,"required")),e.xp6(1),e.Q6J("ngIf",n.formGroup.showError("subuid",i,"subuserIdExists")),e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(25,Mn)),e.xp6(5),e.Q6J("ngIf",n.formGroup.showError("perm",i,"required")),e.xp6(1),e.Q6J("ngIf",!n.editing),e.xp6(2),e.Q6J("form",n.formGroup)("submitText",e.lcZ(37,19,n.action)+" "+e.lcZ(38,21,n.resource))}},directives:[fe.z,a._Y,a.JL,V.V,a.sg,H.P,q.o,a.Fj,X.b,a.JJ,a.u,f.mk,j.U,f.O5,a.EJ,a.YN,a.Kr,f.sg,ee.p,a.Wl,Ce.C,pe.s],pipes:[f.rS,K.m],styles:[""]}),t})();var An=r(13472);let Ye=(()=>{class t{constructor(_,n){this.activeModal=_,this.actionLabels=n,this.resource="Swift Key",this.action=this.actionLabels.SHOW}setValues(_,n){this.user=_,this.secret_key=n}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(M.Kz),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-swift-key-modal"]],decls:24,vars:11,consts:function(){let o,_,n;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Username",n="Secret key",[[3,"modalRef"],[1,"modal-title"],o,[1,"modal-content"],[1,"modal-body"],["novalidate",""],[1,"form-group","row"],["for","user",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["id","user","name","user","type","text",1,"form-control",3,"readonly","ngModel","ngModelChange"],["for","secret_key",1,"cd-col-form-label"],n,[1,"input-group"],["id","secret_key","name","secret_key","type","password",1,"form-control",3,"ngModel","readonly","ngModelChange"],[1,"input-group-append"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],[1,"modal-footer"],[3,"backAction"]]},template:function(_,n){1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"div",4),e.TgZ(7,"form",5),e.TgZ(8,"div",6),e.TgZ(9,"label",7),e.SDv(10,8),e.qZA(),e.TgZ(11,"div",9),e.TgZ(12,"input",10),e.NdJ("ngModelChange",function(s){return n.user=s}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(13,"div",6),e.TgZ(14,"label",11),e.SDv(15,12),e.qZA(),e.TgZ(16,"div",9),e.TgZ(17,"div",13),e.TgZ(18,"input",14),e.NdJ("ngModelChange",function(s){return n.secret_key=s}),e.qZA(),e.TgZ(19,"span",15),e._UZ(20,"button",16),e._UZ(21,"cd-copy-2-clipboard-button",17),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(22,"div",18),e.TgZ(23,"cd-back-button",19),e.NdJ("backAction",function(){return n.activeModal.close()}),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_&&(e.Q6J("modalRef",n.activeModal),e.xp6(4),e.pQV(e.lcZ(3,7,n.action))(e.lcZ(4,9,n.resource)),e.QtT(2),e.xp6(8),e.Q6J("readonly",!0)("ngModel",n.user),e.xp6(6),e.Q6J("ngModel",n.secret_key)("readonly",!0))},directives:[fe.z,a._Y,a.JL,a.F,H.P,q.o,a.Fj,X.b,a.JJ,a.On,Ce.C,pe.s,An.W],pipes:[f.rS,K.m],styles:[""]}),t})();var bn=r(17932);function Pn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,50),e.qZA())}function Gn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,51),e.qZA())}function Nn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,52),e.qZA())}function On(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,56),e.qZA())}function Un(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,57),e.qZA())}function Wn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",53),e.SDv(2,54),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",55),e.YNc(5,On,2,0,"span",13),e.YNc(6,Un,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(4),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("tenant",_,"pattern")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("tenant",_,"notUnique"))}}function Zn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,58),e.qZA())}function $n(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,59),e.qZA())}function hn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,60),e.qZA())}function In(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,63),e.qZA())}function vn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,64),e.qZA())}function Fn(t,o){if(1&t&&(e.TgZ(0,"div",8),e._UZ(1,"label",61),e.TgZ(2,"div",11),e._UZ(3,"input",62),e.YNc(4,In,2,0,"span",13),e.YNc(5,vn,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(4),e.Q6J("ngIf",n.userForm.showError("max_buckets",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("max_buckets",_,"min"))}}function Ln(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,76),e.qZA())}function Dn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",69),e.SDv(2,70),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",71),e._UZ(5,"input",72),e.TgZ(6,"span",73),e._UZ(7,"button",74),e._UZ(8,"cd-copy-2-clipboard-button",75),e.qZA(),e.qZA(),e.YNc(9,Ln,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(9),e.Q6J("ngIf",n.userForm.showError("access_key",_,"required"))}}function xn(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,82),e.qZA())}function yn(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",77),e.SDv(2,78),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",71),e._UZ(5,"input",79),e.TgZ(6,"span",73),e._UZ(7,"button",80),e._UZ(8,"cd-copy-2-clipboard-button",81),e.qZA(),e.qZA(),e.YNc(9,xn,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),n=e.oxw();e.xp6(9),e.Q6J("ngIf",n.userForm.showError("secret_key",_,"required"))}}function qn(t,o){if(1&t&&(e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,65),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"div",14),e.TgZ(5,"div",15),e._UZ(6,"input",66),e.TgZ(7,"label",67),e.SDv(8,68),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,Dn,10,1,"div",19),e.YNc(10,yn,10,1,"div",19),e.qZA()),2&t){const _=e.oxw(2);e.xp6(9),e.Q6J("ngIf",!_.editing&&!_.userForm.getValue("generate_key")),e.xp6(1),e.Q6J("ngIf",!_.editing&&!_.userForm.getValue("generate_key"))}}function wn(t,o){1&t&&(e.TgZ(0,"span",92),e.TgZ(1,"span",93),e.SDv(2,94),e.qZA(),e.qZA())}const L=function(t){return[t]};function kn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",71),e.TgZ(2,"div",95),e.TgZ(3,"span",96),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",97),e.TgZ(6,"div",98),e.TgZ(7,"span",96),e._UZ(8,"i"),e.qZA(),e.qZA(),e._UZ(9,"input",97),e.TgZ(10,"span",73),e.TgZ(11,"button",99),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showSubuserModal(s)}),e._UZ(12,"i",89),e.qZA(),e.TgZ(13,"button",100),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteSubuser(s)}),e._UZ(14,"i",89),e.qZA(),e.qZA(),e.qZA(),e._UZ(15,"span",93),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.user),e.xp6(1),e.s9C("value",_.id),e.xp6(3),e.Tol(n.icons.share),e.xp6(1),e.s9C("value","full-control"===_.permissions?"full":_.permissions),e.xp6(3),e.Q6J("ngClass",e.VKq(10,L,n.icons.edit)),e.xp6(2),e.Q6J("ngClass",e.VKq(12,L,n.icons.destroy))}}function Bn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,83),e.qZA(),e.TgZ(3,"div",84),e.TgZ(4,"div",14),e.YNc(5,wn,3,0,"span",85),e.YNc(6,kn,16,14,"span",86),e.TgZ(7,"div",84),e.TgZ(8,"div",87),e.TgZ(9,"button",88),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showSubuserModal()}),e._UZ(10,"i",89),e.ynx(11),e.SDv(12,90),e.ALo(13,"titlecase"),e.ALo(14,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(15,"span",91),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(5),e.Q6J("ngIf",0===_.subusers.length),e.xp6(1),e.Q6J("ngForOf",_.subusers),e.xp6(4),e.Q6J("ngClass",e.VKq(9,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(13,5,_.actionLabels.CREATE))(e.lcZ(14,7,_.subuserLabel)),e.QtT(12)}}function Hn(t,o){1&t&&(e.TgZ(0,"span",92),e.TgZ(1,"span",93),e.SDv(2,106),e.qZA(),e.qZA())}function Xn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",71),e.TgZ(2,"div",95),e.TgZ(3,"div",96),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",97),e.TgZ(6,"span",73),e.TgZ(7,"button",107),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showS3KeyModal(s)}),e._UZ(8,"i",89),e.qZA(),e.TgZ(9,"button",108),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteS3Key(s)}),e._UZ(10,"i",89),e.qZA(),e.qZA(),e.qZA(),e._UZ(11,"span",93),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.key),e.xp6(1),e.s9C("value",_.user),e.xp6(3),e.Q6J("ngClass",e.VKq(6,L,n.icons.show)),e.xp6(2),e.Q6J("ngClass",e.VKq(8,L,n.icons.destroy))}}function Kn(t,o){1&t&&(e.TgZ(0,"span",92),e.TgZ(1,"span",93),e.SDv(2,109),e.qZA(),e.qZA())}function zn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",71),e.TgZ(2,"div",95),e.TgZ(3,"span",96),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",97),e.TgZ(6,"span",73),e.TgZ(7,"button",110),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showSwiftKeyModal(s)}),e._UZ(8,"i",89),e.qZA(),e.qZA(),e.qZA(),e._UZ(9,"span",93),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.key),e.xp6(1),e.s9C("value",_.user),e.xp6(3),e.Q6J("ngClass",e.VKq(5,L,n.icons.show))}}function Qn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,101),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"label",61),e.SDv(5,102),e.qZA(),e.TgZ(6,"div",11),e.YNc(7,Hn,3,0,"span",85),e.YNc(8,Xn,12,10,"span",86),e.TgZ(9,"div",84),e.TgZ(10,"div",87),e.TgZ(11,"button",103),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showS3KeyModal()}),e._UZ(12,"i",89),e.ynx(13),e.SDv(14,104),e.ALo(15,"titlecase"),e.ALo(16,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(17,"span",91),e.qZA(),e._UZ(18,"hr"),e.qZA(),e.TgZ(19,"div",8),e.TgZ(20,"label",61),e.SDv(21,105),e.qZA(),e.TgZ(22,"div",11),e.YNc(23,Kn,3,0,"span",85),e.YNc(24,zn,10,7,"span",86),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(7),e.Q6J("ngIf",0===_.s3Keys.length),e.xp6(1),e.Q6J("ngForOf",_.s3Keys),e.xp6(4),e.Q6J("ngClass",e.VKq(11,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(15,7,_.actionLabels.CREATE))(e.lcZ(16,9,_.s3keyLabel)),e.QtT(14),e.xp6(7),e.Q6J("ngIf",0===_.swiftKeys.length),e.xp6(1),e.Q6J("ngForOf",_.swiftKeys)}}function Yn(t,o){1&t&&(e.TgZ(0,"span",92),e.TgZ(1,"span",93),e.SDv(2,114),e.qZA(),e.qZA())}function Jn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"span"),e.TgZ(1,"div",71),e.TgZ(2,"span",95),e.TgZ(3,"div",96),e._UZ(4,"i"),e.qZA(),e.qZA(),e._UZ(5,"input",97),e.TgZ(6,"span",73),e.TgZ(7,"button",115),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).showCapabilityModal(s)}),e._UZ(8,"i",89),e.qZA(),e.TgZ(9,"button",116),e.NdJ("click",function(){const s=e.CHM(_).index;return e.oxw(3).deleteCapability(s)}),e._UZ(10,"i",89),e.qZA(),e.qZA(),e.qZA(),e._UZ(11,"span",93),e.qZA()}if(2&t){const _=o.$implicit,n=e.oxw(3);e.xp6(4),e.Tol(n.icons.share),e.xp6(1),e.hYB("value","",_.type,":",_.perm,""),e.xp6(3),e.Q6J("ngClass",e.VKq(7,L,n.icons.edit)),e.xp6(2),e.Q6J("ngClass",e.VKq(9,L,n.icons.destroy))}}function Vn(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"fieldset"),e.TgZ(1,"legend"),e.SDv(2,111),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"div",14),e.YNc(5,Yn,3,0,"span",85),e.YNc(6,Jn,12,11,"span",86),e.TgZ(7,"div",84),e.TgZ(8,"div",87),e.TgZ(9,"button",112),e.NdJ("click",function(){return e.CHM(_),e.oxw(2).showCapabilityModal()}),e.ALo(10,"pipeFunction"),e.ALo(11,"pipeFunction"),e._UZ(12,"i",89),e.ynx(13),e.SDv(14,113),e.ALo(15,"titlecase"),e.ALo(16,"upperFirst"),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(17,"span",91),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(2);e.xp6(5),e.Q6J("ngIf",0===_.capabilities.length),e.xp6(1),e.Q6J("ngForOf",_.capabilities),e.xp6(3),e.Q6J("disabled",e.xi3(10,7,_.capabilities,_.hasAllCapabilities))("disableTooltip",!e.xi3(11,10,_.capabilities,_.hasAllCapabilities)),e.xp6(3),e.Q6J("ngClass",e.VKq(17,L,_.icons.add)),e.xp6(4),e.pQV(e.lcZ(15,13,_.actionLabels.ADD))(e.lcZ(16,15,_.capabilityLabel)),e.QtT(14)}}function jn(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",117),e.TgZ(4,"label",118),e.SDv(5,119),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function eo(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,123),e.qZA())}function _o(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,124),e.qZA())}function to(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",120),e.SDv(2,121),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",122),e.YNc(5,eo,2,0,"span",13),e.YNc(6,_o,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("user_quota_max_size",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_quota_max_size",_,"quotaMaxSize"))}}function no(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",125),e.TgZ(4,"label",126),e.SDv(5,127),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function oo(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,131),e.qZA())}function io(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,132),e.qZA())}function so(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",128),e.SDv(2,129),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",130),e.YNc(5,oo,2,0,"span",13),e.YNc(6,io,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("user_quota_max_objects",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_quota_max_objects",_,"min"))}}function ao(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",133),e.TgZ(4,"label",134),e.SDv(5,135),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function ro(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,139),e.qZA())}function lo(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,140),e.qZA())}function co(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",136),e.SDv(2,137),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",138),e.YNc(5,ro,2,0,"span",13),e.YNc(6,lo,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_size",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_size",_,"quotaMaxSize"))}}function uo(t,o){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"div",14),e.TgZ(2,"div",15),e._UZ(3,"input",141),e.TgZ(4,"label",142),e.SDv(5,143),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function Ro(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,147),e.qZA())}function go(t,o){1&t&&(e.TgZ(0,"span",49),e.SDv(1,148),e.qZA())}function Eo(t,o){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",144),e.SDv(2,145),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",146),e.YNc(5,Ro,2,0,"span",13),e.YNc(6,go,2,0,"span",13),e.qZA(),e.qZA()),2&t){e.oxw();const _=e.MAs(2),n=e.oxw();e.xp6(5),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_objects",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("bucket_quota_max_objects",_,"min"))}}const Je=function(t){return{required:t}};function To(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.YNc(14,Pn,2,0,"span",13),e.YNc(15,Gn,2,0,"span",13),e.YNc(16,Nn,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(17,"div",8),e.TgZ(18,"div",14),e.TgZ(19,"div",15),e.TgZ(20,"input",16),e.NdJ("click",function(){return e.CHM(_),e.oxw().updateFieldsWhenTenanted()}),e.qZA(),e.TgZ(21,"label",17),e.SDv(22,18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(23,Wn,7,3,"div",19),e.TgZ(24,"div",8),e.TgZ(25,"label",20),e.SDv(26,21),e.qZA(),e.TgZ(27,"div",11),e._UZ(28,"input",22),e.YNc(29,Zn,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(30,"div",8),e.TgZ(31,"label",23),e.SDv(32,24),e.qZA(),e.TgZ(33,"div",11),e._UZ(34,"input",25),e.YNc(35,$n,2,0,"span",13),e.YNc(36,hn,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(37,"div",8),e.TgZ(38,"label",26),e.SDv(39,27),e.qZA(),e.TgZ(40,"div",11),e.TgZ(41,"select",28),e.NdJ("change",function(i){return e.CHM(_),e.oxw().onMaxBucketsModeChange(i.target.value)}),e.TgZ(42,"option",29),e.SDv(43,30),e.qZA(),e.TgZ(44,"option",31),e.SDv(45,32),e.qZA(),e.TgZ(46,"option",33),e.SDv(47,34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(48,Fn,6,2,"div",19),e.TgZ(49,"div",8),e.TgZ(50,"div",14),e.TgZ(51,"div",15),e._UZ(52,"input",35),e.TgZ(53,"label",36),e.SDv(54,37),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(55,qn,11,2,"fieldset",38),e.YNc(56,Bn,16,11,"fieldset",38),e.YNc(57,Qn,25,13,"fieldset",38),e.YNc(58,Vn,18,19,"fieldset",38),e.TgZ(59,"fieldset"),e.TgZ(60,"legend"),e.SDv(61,39),e.qZA(),e.TgZ(62,"div",8),e.TgZ(63,"div",14),e.TgZ(64,"div",15),e._UZ(65,"input",40),e.TgZ(66,"label",41),e.SDv(67,42),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(68,jn,6,0,"div",19),e.YNc(69,to,7,2,"div",19),e.YNc(70,no,6,0,"div",19),e.YNc(71,so,7,2,"div",19),e.qZA(),e.TgZ(72,"fieldset"),e.TgZ(73,"legend"),e.SDv(74,43),e.qZA(),e.TgZ(75,"div",8),e.TgZ(76,"div",14),e.TgZ(77,"div",15),e._UZ(78,"input",44),e.TgZ(79,"label",45),e.SDv(80,46),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(81,ao,6,0,"div",19),e.YNc(82,co,7,2,"div",19),e.YNc(83,uo,6,0,"div",19),e.YNc(84,Eo,7,2,"div",19),e.qZA(),e.qZA(),e.TgZ(85,"div",47),e.TgZ(86,"cd-form-button-panel",48),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().onSubmit()}),e.ALo(87,"titlecase"),e.ALo(88,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),n=e.oxw();e.xp6(1),e.Q6J("formGroup",n.userForm),e.xp6(6),e.pQV(e.lcZ(6,29,n.action))(e.lcZ(7,31,n.resource)),e.QtT(5),e.xp6(3),e.Q6J("ngClass",e.VKq(37,Je,!n.editing)),e.xp6(3),e.Q6J("readonly",n.editing),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_id",_,"required")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("user_id",_,"pattern")),e.xp6(1),e.Q6J("ngIf",!n.userForm.getValue("show_tenant")&&n.userForm.showError("user_id",_,"notUnique")),e.xp6(4),e.Q6J("readonly",!0),e.xp6(3),e.Q6J("ngIf",n.userForm.getValue("show_tenant")),e.xp6(2),e.Q6J("ngClass",e.VKq(39,Je,!n.editing)),e.xp6(4),e.Q6J("ngIf",n.userForm.showError("display_name",_,"required")),e.xp6(6),e.Q6J("ngIf",n.userForm.showError("email",_,"email")),e.xp6(1),e.Q6J("ngIf",n.userForm.showError("email",_,"notUnique")),e.xp6(12),e.Q6J("ngIf",1==n.userForm.get("max_buckets_mode").value),e.xp6(7),e.Q6J("ngIf",!n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(1),e.Q6J("ngIf",n.editing),e.xp6(10),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value&&!n.userForm.getValue("user_quota_max_size_unlimited")),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.user_quota_enabled.value&&!n.userForm.getValue("user_quota_max_objects_unlimited")),e.xp6(10),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value&&!n.userForm.getValue("bucket_quota_max_size_unlimited")),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value),e.xp6(1),e.Q6J("ngIf",n.userForm.controls.bucket_quota_enabled.value&&!n.userForm.getValue("bucket_quota_max_objects_unlimited")),e.xp6(2),e.Q6J("form",n.userForm)("submitText",e.lcZ(87,33,n.action)+" "+e.lcZ(88,35,n.resource))}}let Ve=(()=>{class t extends Ie.E{constructor(_,n,i,s,c,d,E){super(),this.formBuilder=_,this.route=n,this.router=i,this.rgwUserService=s,this.modalService=c,this.notificationService=d,this.actionLabels=E,this.editing=!1,this.submitObservables=[],this.icons=D.P,this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.showTenant=!1,this.previousTenant=null,this.resource="user",this.subuserLabel="subuser",this.s3keyLabel="S3 Key",this.capabilityLabel="capability",this.editing=this.router.url.startsWith(`/rgw/user/${A.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.createForm()}createForm(){this.userForm=this.formBuilder.group({user_id:[null,[a.kI.required,a.kI.pattern(/^[a-zA-Z0-9!@#%^&*()_-]+$/)],this.editing?[]:[m.h.unique(this.rgwUserService.exists,this.rgwUserService,()=>this.userForm.getValue("tenant"))]],show_tenant:[this.editing],tenant:[null,[a.kI.pattern(/^[a-zA-Z0-9!@#%^&*()_-]+$/)],this.editing?[]:[m.h.unique(this.rgwUserService.exists,this.rgwUserService,()=>this.userForm.getValue("user_id"),!0)]],display_name:[null,[a.kI.required]],email:[null,[m.h.email],[m.h.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets_mode:[1],max_buckets:[1e3,[m.h.requiredIf({max_buckets_mode:"1"}),m.h.number(!1)]],suspended:[!1],generate_key:[!0],access_key:[null,[m.h.requiredIf({generate_key:!1})]],secret_key:[null,[m.h.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[m.h.composeIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1},[a.kI.required,this.quotaMaxSizeValidator])]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[m.h.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[m.h.composeIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1},[a.kI.required,this.quotaMaxSizeValidator])]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[m.h.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})}ngOnInit(){this.route.params.subscribe(_=>{if(!_.hasOwnProperty("uid"))return void this.loadingReady();const n=decodeURIComponent(_.uid),i=[];i.push(this.rgwUserService.get(n)),i.push(this.rgwUserService.getQuota(n)),(0,Y.D)(i).subscribe(s=>{const c=u().clone(this.userForm.value);let d=u().pick(s[0],u().keys(this.userForm.value));switch(d.max_buckets){case-1:d.max_buckets_mode=-1,d.max_buckets="";break;case 0:d.max_buckets_mode=0,d.max_buckets="";break;default:d.max_buckets_mode=1}["user","bucket"].forEach(g=>{const C=s[1][g+"_quota"];d[g+"_quota_enabled"]=C.enabled,C.max_size<0?(d[g+"_quota_max_size_unlimited"]=!0,d[g+"_quota_max_size"]=null):(d[g+"_quota_max_size_unlimited"]=!1,d[g+"_quota_max_size"]=`${C.max_size} B`),C.max_objects<0?(d[g+"_quota_max_objects_unlimited"]=!0,d[g+"_quota_max_objects"]=null):(d[g+"_quota_max_objects_unlimited"]=!1,d[g+"_quota_max_objects"]=C.max_objects)}),d=u().merge(c,d),this.userForm.setValue(d),this.subusers=s[0].subusers,this.s3Keys=s[0].keys,this.swiftKeys=s[0].swift_keys;const E={"read, write":"*"};s[0].caps.forEach(g=>{g.perm in E&&(g.perm=E[g.perm])}),this.capabilities=s[0].caps,this.loadingReady()},()=>{this.loadingError()})})}goToListView(){this.router.navigate(["/rgw/user"])}onSubmit(){let _;if(this.userForm.pristine)return void this.goToListView();const n=this.getUID();if(this.editing){if(this._isGeneralDirty()){const i=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(n,i))}_="Updated Object Gateway user '" + n + "'"}else{const i=this._getCreateArgs();this.submitObservables.push(this.rgwUserService.create(i)),_="Created Object Gateway user '" + n + "'"}if(this._isUserQuotaDirty()){const i=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,i))}if(this._isBucketQuotaDirty()){const i=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,i))}(0,Bt.z)(...this.submitObservables).subscribe({error:()=>{this.userForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.notificationService.show(Ae.k.success,_),this.goToListView()}})}updateFieldsWhenTenanted(){this.showTenant=this.userForm.getValue("show_tenant"),this.showTenant?(this.userForm.get("user_id").markAsTouched(),this.previousTenant=this.userForm.get("tenant").value,this.userForm.get("tenant").patchValue(null)):(this.userForm.get("user_id").markAsUntouched(),this.userForm.get("tenant").patchValue(this.previousTenant))}getUID(){var _;let n=this.userForm.getValue("user_id");const i=null===(_=this.userForm)||void 0===_?void 0:_.getValue("tenant");return i&&i.length>0&&(n=`${this.userForm.getValue("tenant")}$${n}`),n}quotaMaxSizeValidator(_){return(0,m.P)(_.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(_.value)||(new Ge.H).toBytes(_.value)<1024?{quotaMaxSize:!0}:null}setSubuser(_,n){const i={"full-control":"full","read-write":"readwrite"},s=this.getUID();this.submitObservables.push(this.rgwUserService.createSubuser(s,{subuser:_.id,access:_.permissions in i?i[_.permissions]:_.permissions,key_type:"swift",secret_key:_.secret_key,generate_secret:_.generate_secret?"true":"false"})),u().isNumber(n)?this.subusers[n]=_:(this.subusers.push(_),this.swiftKeys.push({user:_.id,secret_key:_.generate_secret?"Apply your changes first...":_.secret_key})),this.userForm.markAsDirty()}deleteSubuser(_){const n=this.subusers[_];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.getUID(),n.id)),this.s3Keys=this.s3Keys.filter(i=>i.user!==n.id),this.swiftKeys=this.swiftKeys.filter(i=>i.user!==n.id),this.subusers.splice(_,1),this.userForm.markAsDirty()}setCapability(_,n){const i=this.getUID();if(u().isNumber(n)){const s=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(i,s.type,s.perm)),this.submitObservables.push(this.rgwUserService.addCapability(i,_.type,_.perm)),this.capabilities[n]=_}else this.submitObservables.push(this.rgwUserService.addCapability(i,_.type,_.perm)),this.capabilities=[...this.capabilities,_];this.userForm.markAsDirty()}deleteCapability(_){const n=this.capabilities[_];this.submitObservables.push(this.rgwUserService.deleteCapability(this.getUID(),n.type,n.perm)),this.capabilities.splice(_,1),this.capabilities=[...this.capabilities],this.userForm.markAsDirty()}hasAllCapabilities(_){return!u().difference(ze.getAll(),u().map(_,"type")).length}setS3Key(_,n){if(!u().isNumber(n)){const i=_.user.match(/([^:]+)(:(.+))?/),s=i[1],c={subuser:i[2]?i[3]:"",generate_key:_.generate_key?"true":"false"};"false"===c.generate_key&&(u().isNil(_.access_key)||(c.access_key=_.access_key),u().isNil(_.secret_key)||(c.secret_key=_.secret_key)),this.submitObservables.push(this.rgwUserService.addS3Key(s,c)),this.s3Keys.push({user:_.user,access_key:_.generate_key?"Apply your changes first...":_.access_key,secret_key:_.generate_key?"Apply your changes first...":_.secret_key})}this.userForm.markAsDirty()}deleteS3Key(_){const n=this.s3Keys[_];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.getUID(),n.access_key)),this.s3Keys.splice(_,1),this.userForm.markAsDirty()}showSubuserModal(_){const n=this.getUID(),i=this.modalService.show(mn);if(u().isNumber(_)){const s=this.subusers[_];i.componentInstance.setEditing(),i.componentInstance.setValues(n,s.id,s.permissions)}else i.componentInstance.setEditing(!1),i.componentInstance.setValues(n),i.componentInstance.setSubusers(this.subusers);i.componentInstance.submitAction.subscribe(s=>{this.setSubuser(s,_)})}showS3KeyModal(_){const n=this.modalService.show(Qe);if(u().isNumber(_)){const i=this.s3Keys[_];n.componentInstance.setViewing(),n.componentInstance.setValues(i.user,i.access_key,i.secret_key)}else{const i=this._getS3KeyUserCandidates();n.componentInstance.setViewing(!1),n.componentInstance.setUserCandidates(i),n.componentInstance.submitAction.subscribe(s=>{this.setS3Key(s)})}}showSwiftKeyModal(_){const n=this.modalService.show(Ye),i=this.swiftKeys[_];n.componentInstance.setValues(i.user,i.secret_key)}showCapabilityModal(_){const n=this.modalService.show(en);if(u().isNumber(_)){const i=this.capabilities[_];n.componentInstance.setEditing(),n.componentInstance.setValues(i.type,i.perm)}else n.componentInstance.setEditing(!1),n.componentInstance.setCapabilities(this.capabilities);n.componentInstance.submitAction.subscribe(i=>{this.setCapability(i,_)})}_isGeneralDirty(){return["display_name","email","max_buckets_mode","max_buckets","suspended"].some(_=>this.userForm.get(_).dirty)}_isUserQuotaDirty(){return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(_=>this.userForm.get(_).dirty)}_isBucketQuotaDirty(){return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(_=>this.userForm.get(_).dirty)}_getCreateArgs(){const _={uid:this.getUID(),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");u().isString(n)&&n.length>0&&u().merge(_,{email:n}),this.userForm.getValue("generate_key")||u().merge(_,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")});const s=parseInt(this.userForm.getValue("max_buckets_mode"),10);return u().includes([-1,0],s)&&u().merge(_,{max_buckets:s}),_}_getUpdateArgs(){const _={},n=["display_name","email","max_buckets","suspended"];for(const s of n)_[s]=this.userForm.getValue(s);const i=parseInt(this.userForm.getValue("max_buckets_mode"),10);return u().includes([-1,0],i)&&(_.max_buckets=i),_}_getUserQuotaArgs(){const _={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){const n=(new Ge.H).toBytes(this.userForm.getValue("user_quota_max_size"));_.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(_.max_objects=this.userForm.getValue("user_quota_max_objects")),_}_getBucketQuotaArgs(){const _={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){const n=(new Ge.H).toBytes(this.userForm.getValue("bucket_quota_max_size"));_.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(_.max_objects=this.userForm.getValue("bucket_quota_max_objects")),_}_getS3KeyUserCandidates(){let _=[];const n=this.getUID();return u().isString(n)&&!u().isEmpty(n)&&_.push(n),this.subusers.forEach(i=>{_.push(i.id)}),this.s3Keys.forEach(i=>{_.push(i.user)}),_=u().uniq(_),_}onMaxBucketsModeChange(_){"1"===_&&(this.userForm.get("max_buckets").valid||this.userForm.patchValue({max_buckets:1e3}))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(J.O),e.Y36(w.gz),e.Y36(w.F0),e.Y36(O),e.Y36(Te.Z),e.Y36(ve.g),e.Y36(A.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,x,y,S,_e,te,ne,oe,ie,se,ae,re,le,ce,de,ue,Re,R,__,t_,n_,o_,i_,s_,a_,r_,l_,c_,d_,u_,R_,g_,E_,T_,S_,f_,C_,p_,M_,m_,A_,b_,P_,G_;return o="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="User ID",n="Show Tenant",i="Full name",s="Email address",c="Max. buckets",d="Disabled",E="Unlimited",g="Custom",C="Suspended",b="User quota",P="Enabled",G="Bucket quota",N="Enabled",p="This field is required.",U="The value is not valid.",W="The chosen user ID is already in use.",Z="Tenant",$="The value is not valid.",h="The chosen user ID exists in this tenant.",I="This field is required.",v="This is not a valid email address.",F="The chosen email address is already in use.",T="This field is required.",x="The entered value must be >= 1.",y="S3 key",S="Auto-generate key",_e="Access key",te="This field is required.",ne="Secret key",oe="This field is required.",ie="Subusers",se="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",ae="There are no subusers.",re="Edit",le="Delete",ce="Keys",de="S3",ue="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",Re="Swift",R="There are no keys.",__="Show",t_="Delete",n_="There are no keys.",o_="Show",i_="Capabilities",s_="All capabilities are already added.",a_="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",r_="There are no capabilities.",l_="Edit",c_="Delete",d_="Unlimited size",u_="Max. size",R_="This field is required.",g_="The value is not valid.",E_="Unlimited objects",T_="Max. objects",S_="This field is required.",f_="The entered value must be >= 0.",C_="Unlimited size",p_="Max. size",M_="This field is required.",m_="The value is not valid.",A_="Unlimited objects",b_="Max. objects",P_="This field is required.",G_="The entered value must be >= 0.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],o,[1,"card-body"],[1,"form-group","row"],["for","user_id",1,"cd-col-form-label",3,"ngClass"],_,[1,"cd-col-form-input"],["id","user_id","type","text","formControlName","user_id",1,"form-control",3,"readonly"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","show_tenant","type","checkbox","formControlName","show_tenant",1,"custom-control-input",3,"readonly","click"],["for","show_tenant",1,"custom-control-label"],n,["class","form-group row",4,"ngIf"],["for","display_name",1,"cd-col-form-label",3,"ngClass"],i,["id","display_name","type","text","formControlName","display_name",1,"form-control"],["for","email",1,"cd-col-form-label"],s,["id","email","type","text","formControlName","email",1,"form-control"],["for","max_buckets_mode",1,"cd-col-form-label"],c,["formControlName","max_buckets_mode","name","max_buckets_mode","id","max_buckets_mode",1,"form-control",3,"change"],["value","-1"],d,["value","0"],E,["value","1"],g,["id","suspended","type","checkbox","formControlName","suspended",1,"custom-control-input"],["for","suspended",1,"custom-control-label"],C,[4,"ngIf"],b,["id","user_quota_enabled","type","checkbox","formControlName","user_quota_enabled",1,"custom-control-input"],["for","user_quota_enabled",1,"custom-control-label"],P,G,["id","bucket_quota_enabled","type","checkbox","formControlName","bucket_quota_enabled",1,"custom-control-input"],["for","bucket_quota_enabled",1,"custom-control-label"],N,[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],p,U,W,["for","tenant",1,"cd-col-form-label"],Z,["id","tenant","type","text","formControlName","tenant","autofocus","",1,"form-control",3,"readonly"],$,h,I,v,F,[1,"cd-col-form-label"],["id","max_buckets","type","number","formControlName","max_buckets","min","1",1,"form-control"],T,x,y,["id","generate_key","type","checkbox","formControlName","generate_key",1,"custom-control-input"],["for","generate_key",1,"custom-control-label"],S,["for","access_key",1,"cd-col-form-label","required"],_e,[1,"input-group"],["id","access_key","type","password","formControlName","access_key",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","access_key",1,"btn","btn-light"],["source","access_key"],te,["for","secret_key",1,"cd-col-form-label","required"],ne,["id","secret_key","type","password","formControlName","secret_key",1,"form-control"],["type","button","cdPasswordButton","secret_key",1,"btn","btn-light"],["source","secret_key"],oe,ie,[1,"row"],["class","no-border",4,"ngIf"],[4,"ngFor","ngForOf"],[1,"col-12"],["type","button",1,"btn","btn-light","float-right","tc_addSubuserButton",3,"click"],[3,"ngClass"],se,[1,"help-block"],[1,"no-border"],[1,"form-text","text-muted"],ae,[1,"input-group-prepend"],[1,"input-group-text"],["type","text","readonly","",1,"cd-form-control",3,"value"],[1,"input-group-prepend","border-left-0","border-right-0"],["type","button","ngbTooltip",re,1,"btn","btn-light","tc_showSubuserButton",3,"click"],["type","button","ngbTooltip",le,1,"btn","btn-light","tc_deleteSubuserButton",3,"click"],ce,de,["type","button",1,"btn","btn-light","float-right","tc_addS3KeyButton",3,"click"],ue,Re,R,["type","button","ngbTooltip",__,1,"btn","btn-light","tc_showS3KeyButton",3,"click"],["type","button","ngbTooltip",t_,1,"btn","btn-light","tc_deleteS3KeyButton",3,"click"],n_,["type","button","ngbTooltip",o_,1,"btn","btn-light","tc_showSwiftKeyButton",3,"click"],i_,["type","button","ngbTooltip",s_,"triggers","pointerenter:pointerleave",1,"btn","btn-light","float-right","tc_addCapButton",3,"disabled","disableTooltip","click"],a_,r_,["type","button","ngbTooltip",l_,1,"btn","btn-light","tc_editCapButton",3,"click"],["type","button","ngbTooltip",c_,1,"btn","btn-light","tc_deleteCapButton",3,"click"],["id","user_quota_max_size_unlimited","type","checkbox","formControlName","user_quota_max_size_unlimited",1,"custom-control-input"],["for","user_quota_max_size_unlimited",1,"custom-control-label"],d_,["for","user_quota_max_size",1,"cd-col-form-label","required"],u_,["id","user_quota_max_size","type","text","formControlName","user_quota_max_size","cdDimlessBinary","",1,"form-control"],R_,g_,["id","user_quota_max_objects_unlimited","type","checkbox","formControlName","user_quota_max_objects_unlimited",1,"custom-control-input"],["for","user_quota_max_objects_unlimited",1,"custom-control-label"],E_,["for","user_quota_max_objects",1,"cd-col-form-label","required"],T_,["id","user_quota_max_objects","type","number","formControlName","user_quota_max_objects","min","0",1,"form-control"],S_,f_,["id","bucket_quota_max_size_unlimited","type","checkbox","formControlName","bucket_quota_max_size_unlimited",1,"custom-control-input"],["for","bucket_quota_max_size_unlimited",1,"custom-control-label"],C_,["for","bucket_quota_max_size",1,"cd-col-form-label","required"],p_,["id","bucket_quota_max_size","type","text","formControlName","bucket_quota_max_size","cdDimlessBinary","",1,"form-control"],M_,m_,["id","bucket_quota_max_objects_unlimited","type","checkbox","formControlName","bucket_quota_max_objects_unlimited",1,"custom-control-input"],["for","bucket_quota_max_objects_unlimited",1,"custom-control-label"],A_,["for","bucket_quota_max_objects",1,"cd-col-form-label","required"],b_,["id","bucket_quota_max_objects","type","number","formControlName","bucket_quota_max_objects","min","0",1,"form-control"],P_,G_]},template:function(_,n){1&_&&e.YNc(0,To,89,41,"div",0),2&_&&e.Q6J("cdFormLoading",n.loading)},directives:[Fe.y,a._Y,a.JL,V.V,a.sg,H.P,f.mk,q.o,a.Fj,X.b,a.JJ,a.u,f.O5,a.Wl,a.EJ,a.YN,a.Kr,ee.p,j.U,a.wV,a.qQ,Ce.C,pe.s,f.sg,M._L,bn.Q],pipes:[f.rS,K.m,Ue.i],styles:[""]}),t})();var je=r(99466),So=r(78877),fo=r(86969);const Co=["accessKeyTpl"],po=["secretKeyTpl"];function Mo(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,20),e.qZA(),e.TgZ(3,"td"),e._uU(4),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Oqu(_.user.email)}}function mo(t,o){if(1&t&&(e.TgZ(0,"div"),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.xp6(1),e.AsE(" ",_.id," (",_.permissions,") ")}}function Ao(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,21),e.qZA(),e.TgZ(3,"td"),e.YNc(4,mo,2,2,"div",22),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Q6J("ngForOf",_.user.subusers)}}function bo(t,o){if(1&t&&(e.TgZ(0,"div"),e._uU(1),e.qZA()),2&t){const _=o.$implicit;e.xp6(1),e.AsE(" ",_.type," (",_.perm,") ")}}function Po(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,23),e.qZA(),e.TgZ(3,"td"),e.YNc(4,bo,2,2,"div",22),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Q6J("ngForOf",_.user.caps)}}function Go(t,o){if(1&t&&(e.TgZ(0,"tr"),e.TgZ(1,"td",15),e.SDv(2,24),e.qZA(),e.TgZ(3,"td"),e._uU(4),e.ALo(5,"join"),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(4),e.Oqu(e.lcZ(5,1,_.user.mfa_ids))}}function No(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function Oo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,29),e.qZA())}function Uo(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.user.user_quota.max_size)," ")}}function Wo(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function Zo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,30),e.qZA())}function $o(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",_.user.user_quota.max_objects," ")}}function ho(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,25),e.qZA(),e.TgZ(3,"table",9),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",10),e.SDv(7,26),e.qZA(),e.TgZ(8,"td",12),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",15),e.SDv(13,27),e.qZA(),e.YNc(14,No,2,0,"td",0),e.YNc(15,Oo,2,0,"td",0),e.YNc(16,Uo,3,3,"td",0),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",15),e.SDv(19,28),e.qZA(),e.YNc(20,Wo,2,0,"td",0),e.YNc(21,Zo,2,0,"td",0),e.YNc(22,$o,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(9),e.Oqu(e.lcZ(10,7,_.user.user_quota.enabled)),e.xp6(5),e.Q6J("ngIf",!_.user.user_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",!_.user.user_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.user.user_quota.enabled&&_.user.user_quota.max_objects>-1)}}function Io(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function vo(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,35),e.qZA())}function Fo(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",e.lcZ(2,1,_.user.bucket_quota.max_size)," ")}}function Lo(t,o){1&t&&(e.TgZ(0,"td"),e._uU(1,"-"),e.qZA())}function Do(t,o){1&t&&(e.TgZ(0,"td"),e.SDv(1,36),e.qZA())}function xo(t,o){if(1&t&&(e.TgZ(0,"td"),e._uU(1),e.qZA()),2&t){const _=e.oxw(5);e.xp6(1),e.hij(" ",_.user.bucket_quota.max_objects," ")}}function yo(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,31),e.qZA(),e.TgZ(3,"table",9),e.TgZ(4,"tbody"),e.TgZ(5,"tr"),e.TgZ(6,"td",10),e.SDv(7,32),e.qZA(),e.TgZ(8,"td",12),e._uU(9),e.ALo(10,"booleanText"),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td",15),e.SDv(13,33),e.qZA(),e.YNc(14,Io,2,0,"td",0),e.YNc(15,vo,2,0,"td",0),e.YNc(16,Fo,3,3,"td",0),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",15),e.SDv(19,34),e.qZA(),e.YNc(20,Lo,2,0,"td",0),e.YNc(21,Do,2,0,"td",0),e.YNc(22,xo,2,1,"td",0),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(9),e.Oqu(e.lcZ(10,7,_.user.bucket_quota.enabled)),e.xp6(5),e.Q6J("ngIf",!_.user.bucket_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_size<=-1),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_size>-1),e.xp6(4),e.Q6J("ngIf",!_.user.bucket_quota.enabled),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_objects<=-1),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota.enabled&&_.user.bucket_quota.max_objects>-1)}}function qo(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"table",9),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",10),e.SDv(5,11),e.qZA(),e.TgZ(6,"td",12),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",10),e.SDv(10,13),e.qZA(),e.TgZ(11,"td",12),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",10),e.SDv(15,14),e.qZA(),e.TgZ(16,"td",12),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",15),e.SDv(20,16),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.qZA(),e.qZA(),e.YNc(23,Mo,5,1,"tr",0),e.TgZ(24,"tr"),e.TgZ(25,"td",15),e.SDv(26,17),e.qZA(),e.TgZ(27,"td"),e._uU(28),e.ALo(29,"booleanText"),e.qZA(),e.qZA(),e.TgZ(30,"tr"),e.TgZ(31,"td",15),e.SDv(32,18),e.qZA(),e.TgZ(33,"td"),e._uU(34),e.ALo(35,"booleanText"),e.qZA(),e.qZA(),e.TgZ(36,"tr"),e.TgZ(37,"td",15),e.SDv(38,19),e.qZA(),e.TgZ(39,"td"),e._uU(40),e.ALo(41,"map"),e.qZA(),e.qZA(),e.YNc(42,Ao,5,1,"tr",0),e.YNc(43,Po,5,1,"tr",0),e.YNc(44,Go,6,3,"tr",0),e.qZA(),e.qZA(),e.YNc(45,ho,23,9,"div",0),e.YNc(46,yo,23,9,"div",0),e.qZA()),2&t){const _=e.oxw(3);e.xp6(7),e.Oqu(_.user.tenant),e.xp6(5),e.Oqu(_.user.user_id),e.xp6(5),e.Oqu(_.user.uid),e.xp6(5),e.Oqu(_.user.display_name),e.xp6(1),e.Q6J("ngIf",null==_.user.email?null:_.user.email.length),e.xp6(5),e.Oqu(e.lcZ(29,13,_.user.suspended)),e.xp6(6),e.Oqu(e.lcZ(35,15,"true"===_.user.system)),e.xp6(6),e.Oqu(e.xi3(41,17,_.user.max_buckets,_.maxBucketsMap)),e.xp6(2),e.Q6J("ngIf",_.user.subusers&&_.user.subusers.length),e.xp6(1),e.Q6J("ngIf",_.user.caps&&_.user.caps.length),e.xp6(1),e.Q6J("ngIf",null==_.user.mfa_ids?null:_.user.mfa_ids.length),e.xp6(1),e.Q6J("ngIf",_.user.user_quota),e.xp6(1),e.Q6J("ngIf",_.user.bucket_quota)}}function wo(t,o){if(1&t&&e.YNc(0,qo,47,20,"div",0),2&t){const _=e.oxw(2);e.Q6J("ngIf",_.user)}}const ko=function(t){return[t]};function Bo(t,o){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",39),e.NdJ("updateSelection",function(i){return e.CHM(_),e.oxw(3).updateKeysSelection(i)}),e.TgZ(1,"div",40),e.TgZ(2,"div",41),e.TgZ(3,"button",42),e.NdJ("click",function(){return e.CHM(_),e.oxw(3).showKeyModal()}),e._UZ(4,"i",43),e.ynx(5),e.SDv(6,44),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(3);e.Q6J("data",_.keys)("columns",_.keysColumns),e.xp6(3),e.Q6J("disabled",!_.keysSelection.hasSingleSelection),e.xp6(1),e.Q6J("ngClass",e.VKq(4,ko,_.icons.show))}}function Ho(t,o){1&t&&(e.TgZ(0,"li",37),e.TgZ(1,"a",4),e.SDv(2,38),e.qZA(),e.YNc(3,Bo,7,6,"ng-template",6),e.qZA())}function Xo(t,o){if(1&t&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,wo,1,1,"ng-template",6),e.qZA(),e.YNc(7,Ho,4,0,"li",7),e.qZA(),e._UZ(8,"div",8),e.BQk()),2&t){const _=e.MAs(2),n=e.oxw();e.xp6(7),e.Q6J("ngIf",n.keys.length),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Ko=(()=>{class t{constructor(_,n){this.rgwUserService=_,this.modalService=n,this.keys=[],this.keysColumns=[],this.keysSelection=new Pe.r,this.icons=D.P}ngOnInit(){this.keysColumns=[{name:"Username",prop:"username",flexGrow:1},{name:"Type",prop:"type",flexGrow:1}],this.maxBucketsMap={"-1":"Disabled",0:"Unlimited"}}ngOnChanges(){this.selection&&(this.user=this.selection,this.user.subusers=u().sortBy(this.user.subusers,"id"),this.user.caps=u().sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(_=>{u().extend(this.user,_)}),this.keys=[],this.user.keys&&this.user.keys.forEach(_=>{this.keys.push({id:this.keys.length+1,type:"S3",username:_.user,ref:_})}),this.user.swift_keys&&this.user.swift_keys.forEach(_=>{this.keys.push({id:this.keys.length+1,type:"Swift",username:_.user,ref:_})}),this.keys=u().sortBy(this.keys,"user"))}updateKeysSelection(_){this.keysSelection=_}showKeyModal(){const _=this.keysSelection.first(),n=this.modalService.show("S3"===_.type?Qe:Ye);switch(_.type){case"S3":n.componentInstance.setViewing(),n.componentInstance.setValues(_.ref.user,_.ref.access_key,_.ref.secret_key);break;case"Swift":n.componentInstance.setValues(_.ref.user,_.ref.secret_key)}}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(O),e.Y36(Te.Z))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-details"]],viewQuery:function(_,n){if(1&_&&(e.Gf(Co,5),e.Gf(po,5)),2&_){let i;e.iGM(i=e.CRH())&&(n.accessKeyTpl=i.first),e.iGM(i=e.CRH())&&(n.secretKeyTpl=i.first)}},inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let o,_,n,i,s,c,d,E,g,C,b,P,G,N,p,U,W,Z,$,h,I,v,F,T,x,y;return o="Details",_="Tenant",n="User ID",i="Username",s="Full name",c="Suspended",d="System",E="Maximum buckets",g="Email address",C="Subusers",b="Capabilities",P="MFAs(Id)",G="User quota",N="Enabled",p="Maximum size",U="Maximum objects",W="Unlimited",Z="Unlimited",$="Bucket quota",h="Enabled",I="Maximum size",v="Maximum objects",F="Unlimited",T="Unlimited",x="Keys",y="Show",[[4,"ngIf"],["ngbNav","","cdStatefulTab","rgw-user-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],o,["ngbNavContent",""],["ngbNavItem","keys",4,"ngIf"],[3,"ngbNavOutlet"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],_,[1,"w-75"],n,i,[1,"bold"],s,c,d,E,g,C,[4,"ngFor","ngForOf"],b,P,G,N,p,U,W,Z,$,h,I,v,F,T,["ngbNavItem","keys"],x,["columnMode","flex","selectionType","multi","forceIdentifier","true",3,"data","columns","updateSelection"],[1,"table-actions"],["dropdown","",1,"btn-group"],["type","button",1,"btn","btn-accent",3,"disabled","click"],[3,"ngClass"],y]},template:function(_,n){1&_&&e.YNc(0,Xo,9,2,"ng-container",0),2&_&&e.Q6J("ngIf",n.selection)},directives:[f.O5,M.Pz,Xe.m,M.nv,M.Vx,M.uN,M.tO,f.sg,z.a,q.o,f.mk],pipes:[Be.T,So.b,fo.A,qe.$],styles:[""]}),t})();const zo=["userSizeTpl"],Qo=["userObjectTpl"];function Yo(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",8),2&t){const _=e.oxw().row;e.Q6J("total",_.user_quota.max_size)("used",_.stats.size_actual)}}function Jo(t,o){1&t&&e.SDv(0,9)}function Vo(t,o){if(1&t&&(e.YNc(0,Yo,1,2,"cd-usage-bar",6),e.YNc(1,Jo,1,0,"ng-template",null,7,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.user_quota.max_size>0&&_.user_quota.enabled)("ngIfElse",n)}}function jo(t,o){if(1&t&&e._UZ(0,"cd-usage-bar",12),2&t){const _=e.oxw().row;e.Q6J("total",_.user_quota.max_objects)("used",_.stats.num_objects)("isBinary",!1)}}function ei(t,o){1&t&&e.SDv(0,13)}function _i(t,o){if(1&t&&(e.YNc(0,jo,1,3,"cd-usage-bar",10),e.YNc(1,ei,1,0,"ng-template",null,11,e.W1O)),2&t){const _=o.row,n=e.MAs(2);e.Q6J("ngIf",_.user_quota.max_objects>0&&_.user_quota.enabled)("ngIfElse",n)}}let ni=(()=>{class t extends be.o{constructor(_,n,i,s,c,d){super(d),this.authStorageService=_,this.rgwUserService=n,this.modalService=i,this.urlBuilder=s,this.actionLabels=c,this.ngZone=d,this.columns=[],this.users=[],this.selection=new Pe.r}ngOnInit(){this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:"Username",prop:"uid",flexGrow:1},{name:"Tenant",prop:"tenant",flexGrow:1},{name:"Full name",prop:"display_name",flexGrow:1},{name:"Email address",prop:"email",flexGrow:1},{name:"Suspended",prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:je.e.checkIcon},{name:"Max. buckets",prop:"max_buckets",flexGrow:1,cellTransformation:je.e.map,customTemplateConfig:{"-1":"Disabled",0:"Unlimited"}},{name:"Capacity Limit %",prop:"size_usage",cellTemplate:this.userSizeTpl,flexGrow:.8},{name:"Object Limit %",prop:"object_usage",cellTemplate:this.userObjectTpl,flexGrow:.8}];const _=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().uid)}`;this.tableActions=[{permission:"create",icon:D.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:c=>!c.hasSelection},{permission:"update",icon:D.P.edit,routerLink:()=>this.urlBuilder.getEdit(_()),name:this.actionLabels.EDIT},{permission:"delete",icon:D.P.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:c=>c.hasMultiSelection}],this.setTableRefreshTimeout()}getUserList(_){this.setTableRefreshTimeout(),this.rgwUserService.list().subscribe(n=>{this.users=n},()=>{_.error()})}updateSelection(_){this.selection=_}deleteAction(){this.modalService.show(ye.M,{itemDescription:this.selection.hasSingleSelection?"user":"users",itemNames:this.selection.selected.map(_=>_.uid),submitActionObservable:()=>new xe.y(_=>{(0,Y.D)(this.selection.selected.map(n=>this.rgwUserService.delete(n.uid))).subscribe({error:n=>{_.error(n),this.table.refreshBtn()},complete:()=>{_.complete(),this.table.refreshBtn()}})})})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(Ee.j),e.Y36(O),e.Y36(Te.Z),e.Y36(Q.F),e.Y36(A.p4),e.Y36(e.R0b))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-rgw-user-list"]],viewQuery:function(_,n){if(1&_&&(e.Gf(z.a,7),e.Gf(zo,7),e.Gf(Qo,7)),2&_){let i;e.iGM(i=e.CRH())&&(n.table=i.first),e.iGM(i=e.CRH())&&(n.userSizeTpl=i.first),e.iGM(i=e.CRH())&&(n.userObjectTpl=i.first)}},features:[e._Bn([{provide:Q.F,useValue:new Q.F("rgw/user")}]),e.qOj],decls:8,vars:9,consts:function(){let o,_;return o="No Limit",_="No Limit",[["columnMode","flex","selectionType","multiClick","identifier","uid",3,"autoReload","data","columns","hasDetails","status","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["userSizeTpl",""],["userObjectTpl",""],[3,"total","used",4,"ngIf","ngIfElse"],["noSizeQuota",""],[3,"total","used"],o,[3,"total","used","isBinary",4,"ngIf","ngIfElse"],["noObjectQuota",""],[3,"total","used","isBinary"],_]},template:function(_,n){1&_&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(s){return n.setExpandedRow(s)})("updateSelection",function(s){return n.updateSelection(s)})("fetchData",function(s){return n.getUserList(s)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-rgw-user-details",3),e.qZA(),e.YNc(4,Vo,3,2,"ng-template",null,4,e.W1O),e.YNc(6,_i,3,2,"ng-template",null,5,e.W1O)),2&_&&(e.Q6J("autoReload",!1)("data",n.users)("columns",n.columns)("hasDetails",!0)("status",n.tableStatus),e.xp6(2),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("selection",n.expandedRow))},directives:[z.a,ke.K,Ko,f.O5,He.O],styles:[""]}),t})(),e_=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[f.ez,N_.m,a.u5,a.UX,O_.B,M.Oz,w.Bz,M.HK,Ue.b]]}),t})();const oi=[{path:""},{path:"daemon",component:kt,data:{breadcrumbs:"Daemons"}},{path:"user",data:{breadcrumbs:"Users"},children:[{path:"",component:ni},{path:A.MQ.CREATE,component:Ve,data:{breadcrumbs:A.Qn.CREATE}},{path:`${A.MQ.EDIT}/:uid`,component:Ve,data:{breadcrumbs:A.Qn.EDIT}}]},{path:"bucket",data:{breadcrumbs:"Buckets"},children:[{path:"",component:Ot},{path:A.MQ.CREATE,component:De,data:{breadcrumbs:A.Qn.CREATE}},{path:`${A.MQ.EDIT}/:bid`,component:De,data:{breadcrumbs:A.Qn.EDIT}}]}];let ii=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[e_,w.Bz.forChild(oi)]]}),t})()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/330.4192d10f1b1db19145cc.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/330.4192d10f1b1db19145cc.js
deleted file mode 100644 (file)
index e1d1907..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[330],{91330:(it,Oe,p)=>{p.r(Oe),p.d(Oe,{BlockModule:()=>Mt,RoutedBlockModule:()=>$a});var l=p(12057),r=p(24751),m=p(6283),ne=p(19723),I=p(38549),Ie=p(37496),D=p(79512),j=p(4222),_e=p(44466),be=p(23815),C=p.n(be),W=p(35758),b=p(64762),ie=p(58497),Y=p(93523),e=p(74788);let k=class{constructor(_){this.http=_}listTargets(){return this.http.get("api/iscsi/target")}getTarget(_){return this.http.get(`api/iscsi/target/${_}`)}updateTarget(_,t){return this.http.put(`api/iscsi/target/${_}`,t,{observe:"response"})}status(){return this.http.get("ui-api/iscsi/status")}settings(){return this.http.get("ui-api/iscsi/settings")}version(){return this.http.get("ui-api/iscsi/version")}portals(){return this.http.get("ui-api/iscsi/portals")}createTarget(_){return this.http.post("api/iscsi/target",_,{observe:"response"})}deleteTarget(_){return this.http.delete(`api/iscsi/target/${_}`,{observe:"response"})}getDiscovery(){return this.http.get("api/iscsi/discoveryauth")}updateDiscovery(_){return this.http.put("api/iscsi/discoveryauth",_)}overview(){return this.http.get("ui-api/iscsi/overview")}};k.\u0275fac=function(_){return new(_||k)(e.LFG(ie.eN))},k.\u0275prov=e.Yz7({token:k,factory:k.\u0275fac,providedIn:"root"}),k=(0,b.gn)([Y.o,(0,b.w6)("design:paramtypes",[ie.eN])],k);var Ne=p(88002),Z=p(19358),Ae=p(34089);let x=class{constructor(_,t){this.http=_,this.rbdConfigurationService=t}isRBDPool(_){return-1!==C().indexOf(_.application_metadata,"rbd")&&!_.pool_name.includes("/")}create(_){return this.http.post("api/block/image",_,{observe:"response"})}delete(_){return this.http.delete(`api/block/image/${_.toStringEncoded()}`,{observe:"response"})}update(_,t){return this.http.put(`api/block/image/${_.toStringEncoded()}`,t,{observe:"response"})}get(_){return this.http.get(`api/block/image/${_.toStringEncoded()}`)}list(){return this.http.get("api/block/image").pipe((0,Ne.U)(_=>_.map(t=>(t.value.map(o=>(o.configuration&&o.configuration.map(i=>Object.assign(i,this.rbdConfigurationService.getOptionByName(i.name))),o)),t))))}copy(_,t){return this.http.post(`api/block/image/${_.toStringEncoded()}/copy`,t,{observe:"response"})}flatten(_){return this.http.post(`api/block/image/${_.toStringEncoded()}/flatten`,null,{observe:"response"})}defaultFeatures(){return this.http.get("api/block/image/default_features")}cloneFormatVersion(){return this.http.get("api/block/image/clone_format_version")}createSnapshot(_,t){const o={snapshot_name:t};return this.http.post(`api/block/image/${_.toStringEncoded()}/snap`,o,{observe:"response"})}renameSnapshot(_,t,o){const i={new_snap_name:o};return this.http.put(`api/block/image/${_.toStringEncoded()}/snap/${t}`,i,{observe:"response"})}protectSnapshot(_,t,o){const i={is_protected:o};return this.http.put(`api/block/image/${_.toStringEncoded()}/snap/${t}`,i,{observe:"response"})}rollbackSnapshot(_,t){return this.http.post(`api/block/image/${_.toStringEncoded()}/snap/${t}/rollback`,null,{observe:"response"})}cloneSnapshot(_,t,o){return this.http.post(`api/block/image/${_.toStringEncoded()}/snap/${t}/clone`,o,{observe:"response"})}deleteSnapshot(_,t){return this.http.delete(`api/block/image/${_.toStringEncoded()}/snap/${t}`,{observe:"response"})}listTrash(){return this.http.get("api/block/image/trash/")}createNamespace(_,t){return this.http.post(`api/block/pool/${_}/namespace`,{namespace:t},{observe:"response"})}listNamespaces(_){return this.http.get(`api/block/pool/${_}/namespace/`)}deleteNamespace(_,t){return this.http.delete(`api/block/pool/${_}/namespace/${t}`,{observe:"response"})}moveTrash(_,t){return this.http.post(`api/block/image/${_.toStringEncoded()}/move_trash`,{delay:t},{observe:"response"})}purgeTrash(_){return this.http.post(`api/block/image/trash/purge/?pool_name=${_}`,null,{observe:"response"})}restoreTrash(_,t){return this.http.post(`api/block/image/trash/${_.toStringEncoded()}/restore`,{new_image_name:t},{observe:"response"})}removeTrash(_,t=!1){return this.http.delete(`api/block/image/trash/${_.toStringEncoded()}/?force=${t}`,{observe:"response"})}};x.\u0275fac=function(_){return new(_||x)(e.LFG(ie.eN),e.LFG(Ae.n))},x.\u0275prov=e.Yz7({token:x,factory:x.\u0275fac,providedIn:"root"}),(0,b.gn)([(0,b.fM)(1,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[Z.N,String]),(0,b.w6)("design:returntype",void 0)],x.prototype,"createSnapshot",null),(0,b.gn)([(0,b.fM)(2,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[Z.N,String,String]),(0,b.w6)("design:returntype",void 0)],x.prototype,"renameSnapshot",null),(0,b.gn)([(0,b.fM)(2,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[Z.N,String,Boolean]),(0,b.w6)("design:returntype",void 0)],x.prototype,"protectSnapshot",null),(0,b.gn)([(0,b.fM)(1,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[Z.N,String]),(0,b.w6)("design:returntype",void 0)],x.prototype,"restoreTrash",null),x=(0,b.gn)([Y.o,(0,b.w6)("design:paramtypes",[ie.eN,Ae.n])],x);var ae=p(7022),V=p(14745),T=p(65862),q=p(93614),M=p(95463),B=p(77205),F=p(76111),Q=p(32337),R=p(60312),v=p(41582),g=p(56310),f=p(87925),h=p(94276),O=p(30839);function H(n,_){if(1&n&&(e.TgZ(0,"option",6),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("ngValue",t),e.xp6(1),e.Oqu(t)}}function De(n,_){if(1&n&&(e.TgZ(0,"select",5),e._UZ(1,"option",6),e.YNc(2,H,2,2,"option",7),e.qZA()),2&n){const t=e.oxw();e.s9C("id",t.setting),e.s9C("name",t.setting),e.Q6J("formControlName",t.setting),e.xp6(1),e.Q6J("ngValue",null),e.xp6(1),e.Q6J("ngForOf",t.limits.values)}}function Jt(n,_){if(1&n&&e._UZ(0,"input",10),2&n){const t=e.oxw(2);e.Q6J("formControlName",t.setting)}}function Yt(n,_){if(1&n&&e._UZ(0,"input",11),2&n){const t=e.oxw(2);e.Q6J("formControlName",t.setting)}}function Vt(n,_){if(1&n&&(e.ynx(0),e._UZ(1,"br"),e.TgZ(2,"div",12),e._UZ(3,"input",13),e.TgZ(4,"label",14),e._uU(5,"Yes"),e.qZA(),e.qZA(),e.TgZ(6,"div",12),e._UZ(7,"input",13),e.TgZ(8,"label",14),e._uU(9,"No"),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw(2);e.xp6(3),e.Q6J("id",t.setting+"True")("value",!0)("formControlName",t.setting),e.xp6(1),e.Q6J("for",t.setting+"True"),e.xp6(3),e.Q6J("id",t.setting+"False")("value",!1)("formControlName",t.setting),e.xp6(1),e.Q6J("for",t.setting+"False")}}function Ut(n,_){if(1&n&&(e.TgZ(0,"span"),e.YNc(1,Jt,1,1,"input",8),e.YNc(2,Yt,1,1,"input",9),e.YNc(3,Vt,10,8,"ng-container",3),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf","int"===t.limits.type),e.xp6(1),e.Q6J("ngIf","str"===t.limits.type),e.xp6(1),e.Q6J("ngIf","bool"===t.limits.type)}}function jt(n,_){if(1&n&&(e.TgZ(0,"span",15),e.ynx(1),e.SDv(2,16),e.BQk(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.pQV(t.limits.min),e.QtT(2)}}function Wt(n,_){if(1&n&&(e.TgZ(0,"span",15),e.ynx(1),e.SDv(2,17),e.BQk(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.pQV(t.limits.max),e.QtT(2)}}let _t=(()=>{class n{ngOnInit(){const t=[];"min"in this.limits&&t.push(r.kI.min(this.limits.min)),"max"in this.limits&&t.push(r.kI.max(this.limits.max)),this.settingsForm.get(this.setting).setValidators(t)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-setting"]],inputs:{settingsForm:"settingsForm",formDir:"formDir",setting:"setting",limits:"limits"},decls:7,vars:7,consts:function(){let _,t;return _="Must be greater than or equal to " + "\ufffd0\ufffd" + ".",t="Must be less than or equal to " + "\ufffd0\ufffd" + ".",[[1,"form-group",3,"formGroup"],[1,"col-form-label",3,"for"],["class","form-control",3,"id","name","formControlName",4,"ngIf"],[4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"form-control",3,"id","name","formControlName"],[3,"ngValue"],[3,"ngValue",4,"ngFor","ngForOf"],["type","number","class","form-control",3,"formControlName",4,"ngIf"],["type","text","class","form-control",3,"formControlName",4,"ngIf"],["type","number",1,"form-control",3,"formControlName"],["type","text",1,"form-control",3,"formControlName"],[1,"custom-control","custom-radio","custom-control-inline"],["type","radio",1,"custom-control-input",3,"id","value","formControlName"],[1,"custom-control-label",3,"for"],[1,"invalid-feedback"],_,t]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e._uU(2),e.qZA(),e.YNc(3,De,3,5,"select",2),e.YNc(4,Ut,4,3,"span",3),e.YNc(5,jt,3,1,"span",4),e.YNc(6,Wt,3,1,"span",4),e.qZA()),2&t&&(e.Q6J("formGroup",o.settingsForm),e.xp6(1),e.s9C("for",o.setting),e.xp6(1),e.Oqu(o.setting),e.xp6(1),e.Q6J("ngIf","enum"===o.limits.type),e.xp6(1),e.Q6J("ngIf","enum"!==o.limits.type),e.xp6(1),e.Q6J("ngIf",o.settingsForm.showError(o.setting,o.formDir,"min")),e.xp6(1),e.Q6J("ngIf",o.settingsForm.showError(o.setting,o.formDir,"max")))},directives:[g.P,r.JL,r.sg,v.V,l.O5,f.o,r.EJ,h.b,r.JJ,r.u,r.YN,r.Kr,l.sg,r.wV,r.Fj,r._],styles:[""]}),n})();var He=p(88820);function eo(n,_){1&n&&(e.TgZ(0,"span",29),e.SDv(1,30),e.qZA())}function to(n,_){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"legend",10),e.SDv(2,21),e.qZA(),e.TgZ(3,"div",12),e.TgZ(4,"div",13),e.TgZ(5,"label",22),e.SDv(6,23),e.qZA(),e._UZ(7,"input",24),e.YNc(8,eo,2,0,"span",25),e.qZA(),e.qZA(),e.TgZ(9,"div",12),e.TgZ(10,"div",13),e.TgZ(11,"label",26),e.SDv(12,27),e.qZA(),e._UZ(13,"input",28),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(9);e.xp6(8),e.Q6J("ngIf",t.settingsForm.showError("lun",o,"required"))}}function oo(n,_){if(1&n&&(e.TgZ(0,"option",31),e._uU(1),e.ALo(2,"iscsiBackstore"),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(e.lcZ(2,2,t))}}function no(n,_){if(1&n&&(e.TgZ(0,"div",12),e.TgZ(1,"div",13),e._UZ(2,"cd-iscsi-setting",33),e.qZA(),e.qZA()),2&n){const t=_.$implicit,o=e.oxw(2).$implicit,i=e.oxw(),s=e.MAs(9);e.xp6(2),e.Q6J("settingsForm",i.settingsForm)("formDir",s)("setting",t.key)("limits",i.getDiskControlLimits(o,t.key))}}function io(n,_){if(1&n&&(e.ynx(0),e.YNc(1,no,3,4,"div",32),e.ALo(2,"keyvalue"),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw();e.xp6(1),e.Q6J("ngForOf",e.lcZ(2,1,o.disk_default_controls[t]))}}function _o(n,_){if(1&n&&(e.ynx(0),e.YNc(1,io,3,3,"ng-container",9),e.BQk()),2&n){const t=_.$implicit,o=e.oxw();e.xp6(1),e.Q6J("ngIf",o.settingsForm.value.backstore===t)}}let so=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.iscsiService=o,this.actionLabels=i}ngOnInit(){const t={backstore:new r.NI(this.imagesSettings[this.image].backstore),lun:new r.NI(this.imagesSettings[this.image].lun),wwn:new r.NI(this.imagesSettings[this.image].wwn)};C().forEach(this.backstores,o=>{const i=this.imagesSettings[this.image][o]||{};C().forIn(this.disk_default_controls[o],(s,a)=>{t[a]=new r.NI(i[a])})}),this.settingsForm=new M.d(t)}getDiskControlLimits(t,o){return this.disk_controls_limits?this.disk_controls_limits[t][o]:{type:"int"}}save(){const t=this.settingsForm.controls.backstore.value,o=this.settingsForm.controls.lun.value,i=this.settingsForm.controls.wwn.value,s={};C().forIn(this.settingsForm.controls,(a,d)=>{""!==a.value&&null!==a.value&&d in this.disk_default_controls[this.settingsForm.value.backstore]&&(s[d]=a.value,C().forEach(this.backstores,c=>{c!==t&&d in(this.imagesSettings[this.image][c]||{})&&(this.imagesSettings[this.image][c][d]=a.value)}))}),this.imagesSettings[this.image].backstore=t,this.imagesSettings[this.image].lun=o,this.imagesSettings[this.image].wwn=i,this.imagesSettings[this.image][t]=s,this.imagesSettings=Object.assign({},this.imagesSettings),this.control.updateValueAndValidity({emitEvent:!1}),this.activeModal.close()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(k),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-image-settings-modal"]],decls:25,vars:8,consts:function(){let _,t,o,i,s,a,d,c;return _="Configure",t="Changing these parameters from their default values is usually not necessary.",o="Settings",i="Backstore",s="Identifier",a="lun",d="wwn",c="This field is required.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","settingsForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"alert-warning"],t,[4,"ngIf"],[1,"cd-header"],o,[1,"form-group","row"],[1,"col-sm-12"],[1,"col-form-label"],i,["id","backstore","name","backstore","formControlName","backstore",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],[4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],s,["for","lun",1,"col-form-label","required"],a,["type","number","id","lun","name","lun","formControlName","lun",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","wwn",1,"col-form-label"],d,["type","text","id","wwn","name","wwn","formControlName","wwn",1,"form-control"],[1,"invalid-feedback"],c,[3,"value"],["class","form-group row",4,"ngFor","ngForOf"],[3,"settingsForm","formDir","setting","limits"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.ynx(2),e.SDv(3,2),e.BQk(),e._uU(4,"\xa0 "),e.TgZ(5,"small"),e._uU(6),e.qZA(),e.BQk(),e.ynx(7,3),e.TgZ(8,"form",4,5),e.TgZ(10,"div",6),e.TgZ(11,"p",7),e.SDv(12,8),e.qZA(),e.YNc(13,to,14,1,"span",9),e.TgZ(14,"legend",10),e.SDv(15,11),e.qZA(),e.TgZ(16,"div",12),e.TgZ(17,"div",13),e.TgZ(18,"label",14),e.SDv(19,15),e.qZA(),e.TgZ(20,"select",16),e.YNc(21,oo,3,4,"option",17),e.qZA(),e.qZA(),e.qZA(),e.YNc(22,_o,2,1,"ng-container",18),e.qZA(),e.TgZ(23,"div",19),e.TgZ(24,"cd-form-button-panel",20),e.NdJ("submitActionEvent",function(){return o.save()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(6),e.Oqu(o.image),e.xp6(2),e.Q6J("formGroup",o.settingsForm),e.xp6(5),e.Q6J("ngIf",o.api_version>=1),e.xp6(8),e.Q6J("ngForOf",o.backstores),e.xp6(1),e.Q6J("ngForOf",o.backstores),e.xp6(2),e.Q6J("form",o.settingsForm)("submitText",o.actionLabels.UPDATE))},directives:[R.z,r._Y,r.JL,r.sg,v.V,l.O5,g.P,f.o,r.EJ,h.b,r.JJ,r.u,l.sg,O.p,r.wV,r.Fj,r.YN,r.Kr,_t],pipes:[He.V,l.Nd],styles:[""]}),n})();function ao(n,_){if(1&n&&(e.TgZ(0,"div",12),e.TgZ(1,"div",13),e._UZ(2,"cd-iscsi-setting",14),e.qZA(),e.qZA()),2&n){const t=_.$implicit,o=e.oxw(),i=e.MAs(5);e.xp6(2),e.Q6J("settingsForm",o.settingsForm)("formDir",i)("setting",t.key)("limits",o.getTargetControlLimits(t.key))}}let ro=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.iscsiService=o,this.actionLabels=i}ngOnInit(){const t={};C().forIn(this.target_default_controls,(o,i)=>{t[i]=new r.NI(this.target_controls.value[i])}),this.settingsForm=new M.d(t)}save(){const t={};C().forIn(this.settingsForm.controls,(o,i)=>{""===o.value||null===o.value||(t[i]=o.value)}),this.target_controls.setValue(t),this.activeModal.close()}getTargetControlLimits(t){return this.target_controls_limits?this.target_controls_limits[t]:["Yes","No"].includes(this.target_default_controls[t])?{type:"bool"}:{type:"int"}}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(k),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-iqn-settings-modal"]],decls:13,vars:7,consts:function(){let _,t;return _="Advanced Settings",t="Changing these parameters from their default values is usually not necessary.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","settingsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"alert-warning"],t,["class","form-group row",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"form-group","row"],[1,"col-sm-12"],[3,"settingsForm","formDir","setting","limits"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p",7),e.SDv(8,8),e.qZA(),e.YNc(9,ao,3,4,"div",9),e.ALo(10,"keyvalue"),e.qZA(),e.TgZ(11,"div",10),e.TgZ(12,"cd-form-button-panel",11),e.NdJ("submitActionEvent",function(){return o.save()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.settingsForm),e.xp6(5),e.Q6J("ngForOf",e.lcZ(10,5,o.settingsForm.controls)),e.xp6(3),e.Q6J("form",o.settingsForm)("submitText",o.actionLabels.UPDATE))},directives:[R.z,r._Y,r.JL,r.sg,v.V,l.sg,O.p,g.P,_t],pipes:[l.Nd],styles:[""]}),n})();var re=p(63285),st=p(63622);let lo=(()=>{class n{constructor(t){this.ngControl=t}onInput(t){this.setValue(t)}setValue(t){t=C().isString(t)?t.trim():t,this.ngControl.control.setValue(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(r.a5))},n.\u0275dir=e.lG2({type:n,selectors:[["","cdTrim",""]],hostBindings:function(t,o){1&t&&e.NdJ("input",function(s){return o.onInput(s.target.value)})}}),n})();var co=p(39092),at=p(4416),Je=p(58039),Ye=p(10545);function po(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,42),e.qZA())}function go(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,43),e.qZA())}function uo(n,_){1&n&&(e.TgZ(0,"span",41),e.ynx(1),e.SDv(2,44),e.BQk(),e._UZ(3,"br"),e.ynx(4),e.SDv(5,45),e.BQk(),e._UZ(6,"br"),e.TgZ(7,"a",46),e.SDv(8,47),e.qZA(),e.qZA())}function mo(n,_){1&n&&(e.TgZ(0,"span",48),e.SDv(1,49),e.qZA())}const z=function(n){return[n]};function To(n,_){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const i=e.CHM(t),s=i.index,a=i.$implicit;return e.oxw(2).removePortal(s,a)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=_.$implicit,o=e.oxw(2);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,z,o.icons.destroy))}}function fo(n,_){if(1&n&&(e.TgZ(0,"span",41),e.SDv(1,53),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.pQV(t.minimum_gateways),e.QtT(1)}}function Co(n,_){if(1&n&&(e.TgZ(0,"div",56),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit,o=e.oxw(2);e.xp6(1),e.hij("lun: ",o.imagesSettings[t].lun,"")}}function So(n,_){if(1&n&&(e.ynx(0),e.SDv(1,57),e.ALo(2,"iscsiBackstore"),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw(2);e.xp6(2),e.pQV(e.lcZ(2,1,o.imagesSettings[t].backstore)),e.QtT(1)}}function Eo(n,_){1&n&&(e.ynx(0),e.SDv(1,58),e.BQk())}function Ro(n,_){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.YNc(4,Co,2,1,"div",54),e.TgZ(5,"button",52),e.NdJ("click",function(){const s=e.CHM(t).$implicit;return e.oxw(2).imageSettingsModal(s)}),e._UZ(6,"i",16),e.qZA(),e.TgZ(7,"button",52),e.NdJ("click",function(){const i=e.CHM(t),s=i.index,a=i.$implicit;return e.oxw(2).removeImage(s,a)}),e._UZ(8,"i",16),e.qZA(),e.qZA(),e.qZA(),e.TgZ(9,"span",48),e.YNc(10,So,3,3,"ng-container",55),e.YNc(11,Eo,2,0,"ng-container",55),e.qZA(),e.BQk()}if(2&n){const t=_.$implicit,o=e.oxw(2);e.xp6(2),e.Q6J("value",t),e.xp6(2),e.Q6J("ngIf",o.api_version>=1),e.xp6(2),e.Q6J("ngClass",e.VKq(6,z,o.icons.deepCheck)),e.xp6(2),e.Q6J("ngClass",e.VKq(8,z,o.icons.destroy)),e.xp6(2),e.Q6J("ngIf",o.backstores.length>1),e.xp6(1),e.Q6J("ngIf",o.hasAdvancedSettings(o.imagesSettings[t][o.imagesSettings[t].backstore]))}}function Mo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,59),e.qZA())}function Oo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,60),e.qZA())}function Ao(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,78),e.qZA())}function ho(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,79),e.qZA())}function Po(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,80),e.qZA())}function Io(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,81),e.qZA())}function bo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,82),e.qZA())}function No(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,83),e.qZA())}function Do(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,84),e.qZA())}function vo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,85),e.qZA())}function Lo(n,_){if(1&n&&(e.TgZ(0,"div",61),e.TgZ(1,"div",8),e.TgZ(2,"label",62),e.ynx(3),e.SDv(4,63),e.BQk(),e.qZA(),e.TgZ(5,"div",11),e._UZ(6,"input",64),e.YNc(7,Ao,2,0,"span",17),e.YNc(8,ho,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(9,"div",8),e.TgZ(10,"label",65),e.ynx(11),e.SDv(12,66),e.BQk(),e.qZA(),e.TgZ(13,"div",11),e.TgZ(14,"div",12),e._UZ(15,"input",67),e.TgZ(16,"span",14),e._UZ(17,"button",68),e._UZ(18,"cd-copy-2-clipboard-button",69),e.qZA(),e.qZA(),e.YNc(19,Po,2,0,"span",17),e.YNc(20,Io,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(21,"div",8),e.TgZ(22,"label",70),e.ynx(23),e.SDv(24,71),e.BQk(),e.qZA(),e.TgZ(25,"div",11),e._UZ(26,"input",72),e.YNc(27,bo,2,0,"span",17),e.YNc(28,No,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(29,"div",8),e.TgZ(30,"label",73),e.ynx(31),e.SDv(32,74),e.BQk(),e.qZA(),e.TgZ(33,"div",11),e.TgZ(34,"div",12),e._UZ(35,"input",75),e.TgZ(36,"span",14),e._UZ(37,"button",76),e._UZ(38,"cd-copy-2-clipboard-button",77),e.qZA(),e.qZA(),e.YNc(39,Do,2,0,"span",17),e.YNc(40,vo,2,0,"span",17),e.qZA(),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(7),e.Q6J("ngIf",o.targetForm.showError("user",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("user",t,"pattern")),e.xp6(11),e.Q6J("ngIf",o.targetForm.showError("password",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("password",t,"pattern")),e.xp6(7),e.Q6J("ngIf",o.targetForm.showError("mutual_user",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("mutual_user",t,"pattern")),e.xp6(11),e.Q6J("ngIf",o.targetForm.showError("mutual_password",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("mutual_password",t,"pattern"))}}function Fo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,115),e.qZA())}function $o(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,116),e.qZA())}function Zo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,117),e.qZA())}function Bo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,118),e.qZA())}function Go(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,119),e.qZA())}function yo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,120),e.qZA())}function xo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,121),e.qZA())}function wo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,122),e.qZA())}function qo(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,123),e.qZA())}function Ho(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,124),e.qZA())}function Ko(n,_){1&n&&(e.TgZ(0,"span",41),e.SDv(1,125),e.qZA())}function ko(n,_){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const i=e.CHM(t),s=i.index,a=i.$implicit,d=e.oxw(),c=d.$implicit,u=d.index;return e.oxw(3).removeInitiatorImage(c,s,u,a)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=_.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,z,o.icons.destroy))}}function Xo(n,_){1&n&&(e.TgZ(0,"span"),e.SDv(1,126),e.qZA())}function Qo(n,_){if(1&n&&(e.TgZ(0,"div",22),e.TgZ(1,"div",23),e.TgZ(2,"cd-select",127),e._UZ(3,"i",25),e.ynx(4),e.SDv(5,128),e.BQk(),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=t.$implicit,i=t.index,s=e.oxw(3);e.xp6(2),e.Q6J("data",o.getValue("luns"))("options",s.imagesInitiatorSelections[i])("messages",s.messages.initiatorImage),e.xp6(1),e.Q6J("ngClass",e.VKq(4,z,s.icons.add))}}function zo(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",92),e.TgZ(1,"div",5),e.ynx(2),e.SDv(3,93),e.BQk(),e._uU(4),e.TgZ(5,"button",94),e.NdJ("click",function(){const s=e.CHM(t).index;return e.oxw(3).removeInitiator(s)}),e._UZ(6,"i",25),e.qZA(),e.qZA(),e.TgZ(7,"div",7),e.TgZ(8,"div",8),e.TgZ(9,"label",95),e.SDv(10,96),e.qZA(),e.TgZ(11,"div",11),e.TgZ(12,"input",97),e.NdJ("blur",function(){return e.CHM(t),e.oxw(3).updatedInitiatorSelector()}),e.qZA(),e.YNc(13,Fo,2,0,"span",17),e.YNc(14,$o,2,0,"span",17),e.YNc(15,Zo,2,0,"span",17),e.qZA(),e.qZA(),e.ynx(16,61),e.TgZ(17,"div",8),e.TgZ(18,"label",98),e.SDv(19,99),e.qZA(),e.TgZ(20,"div",11),e._UZ(21,"input",100),e.YNc(22,Bo,2,0,"span",17),e.YNc(23,Go,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(24,"div",8),e.TgZ(25,"label",101),e.SDv(26,102),e.qZA(),e.TgZ(27,"div",11),e.TgZ(28,"div",12),e._UZ(29,"input",103),e.TgZ(30,"span",14),e._UZ(31,"button",104),e._UZ(32,"cd-copy-2-clipboard-button",105),e.qZA(),e.qZA(),e.YNc(33,yo,2,0,"span",17),e.YNc(34,xo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(35,"div",8),e.TgZ(36,"label",106),e.ynx(37),e.SDv(38,107),e.BQk(),e.qZA(),e.TgZ(39,"div",11),e._UZ(40,"input",108),e.YNc(41,wo,2,0,"span",17),e.YNc(42,qo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(43,"div",8),e.TgZ(44,"label",109),e.SDv(45,110),e.qZA(),e.TgZ(46,"div",11),e.TgZ(47,"div",12),e._UZ(48,"input",111),e.TgZ(49,"span",14),e._UZ(50,"button",104),e._UZ(51,"cd-copy-2-clipboard-button",105),e.qZA(),e.qZA(),e.YNc(52,Ho,2,0,"span",17),e.YNc(53,Ko,2,0,"span",17),e.qZA(),e.qZA(),e.BQk(),e.TgZ(54,"div",8),e.TgZ(55,"label",112),e.SDv(56,113),e.qZA(),e.TgZ(57,"div",11),e.YNc(58,ko,6,4,"ng-container",21),e.YNc(59,Xo,2,0,"span",55),e.YNc(60,Qo,6,6,"div",114),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=_.$implicit,o=_.index;e.oxw(2);const i=e.MAs(2),s=e.oxw();e.Q6J("formGroup",t),e.xp6(4),e.hij(": ",t.getValue("client_iqn")," "),e.xp6(2),e.Q6J("ngClass",e.VKq(25,z,s.icons.destroy)),e.xp6(7),e.Q6J("ngIf",t.showError("client_iqn",i,"notUnique")),e.xp6(1),e.Q6J("ngIf",t.showError("client_iqn",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("client_iqn",i,"pattern")),e.xp6(6),e.Q6J("id","user"+o),e.xp6(1),e.Q6J("ngIf",t.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("user",i,"pattern")),e.xp6(6),e.Q6J("id","password"+o),e.xp6(2),e.Q6J("cdPasswordButton","password"+o),e.xp6(1),e.Q6J("source","password"+o),e.xp6(1),e.Q6J("ngIf",t.showError("password",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("password",i,"pattern")),e.xp6(6),e.Q6J("id","mutual_user"+o),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_user",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_user",i,"pattern")),e.xp6(6),e.Q6J("id","mutual_password"+o),e.xp6(2),e.Q6J("cdPasswordButton","mutual_password"+o),e.xp6(1),e.Q6J("source","mutual_password"+o),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_password",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_password",i,"pattern")),e.xp6(5),e.Q6J("ngForOf",t.getValue("luns")),e.xp6(1),e.Q6J("ngIf",t.getValue("cdIsInGroup")),e.xp6(1),e.Q6J("ngIf",!t.getValue("cdIsInGroup"))}}function Jo(n,_){1&n&&(e.TgZ(0,"span",48),e.SDv(1,129),e.qZA())}function Yo(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",86),e.SDv(2,87),e.qZA(),e.TgZ(3,"div",88),e.YNc(4,zo,61,27,"div",89),e.TgZ(5,"div",22),e.TgZ(6,"div",23),e.YNc(7,Jo,2,0,"span",18),e.TgZ(8,"button",90),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).addInitiator(),!1}),e._UZ(9,"i",25),e.ynx(10),e.SDv(11,91),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(12,"hr"),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",t.initiators.controls),e.xp6(3),e.Q6J("ngIf",0===t.initiators.controls.length),e.xp6(2),e.Q6J("ngClass",e.VKq(3,z,t.icons.add))}}function Vo(n,_){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const s=e.CHM(t).index,a=e.oxw(),d=a.$implicit,c=a.index;return e.oxw(3).removeGroupInitiator(d,s,c)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=_.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,z,o.icons.destroy))}}function Uo(n,_){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const s=e.CHM(t).index,a=e.oxw(),d=a.$implicit,c=a.index;return e.oxw(3).removeGroupDisk(d,s,c)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=_.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,z,o.icons.destroy))}}function jo(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",92),e.TgZ(1,"div",5),e.ynx(2),e.SDv(3,133),e.BQk(),e._uU(4),e.TgZ(5,"button",94),e.NdJ("click",function(){const s=e.CHM(t).index;return e.oxw(3).removeGroup(s)}),e._UZ(6,"i",25),e.qZA(),e.qZA(),e.TgZ(7,"div",7),e.TgZ(8,"div",8),e.TgZ(9,"label",134),e.SDv(10,135),e.qZA(),e.TgZ(11,"div",11),e._UZ(12,"input",136),e.qZA(),e.qZA(),e.TgZ(13,"div",8),e.TgZ(14,"label",137),e.ynx(15),e.SDv(16,138),e.BQk(),e.qZA(),e.TgZ(17,"div",11),e.YNc(18,Vo,6,4,"ng-container",21),e.TgZ(19,"div",22),e.TgZ(20,"div",23),e.TgZ(21,"cd-select",24),e.NdJ("selection",function(i){const a=e.CHM(t).index;return e.oxw(3).onGroupMemberSelection(i,a)}),e._UZ(22,"i",25),e.ynx(23),e.SDv(24,139),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(25,"hr"),e.qZA(),e.qZA(),e.TgZ(26,"div",8),e.TgZ(27,"label",28),e.ynx(28),e.SDv(29,140),e.BQk(),e.qZA(),e.TgZ(30,"div",11),e.YNc(31,Uo,6,4,"ng-container",21),e.TgZ(32,"div",22),e.TgZ(33,"div",23),e.TgZ(34,"cd-select",127),e._UZ(35,"i",25),e.ynx(36),e.SDv(37,141),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(38,"hr"),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=_.$implicit,o=_.index,i=e.oxw(3);e.Q6J("formGroup",t),e.xp6(4),e.hij(": ",t.getValue("group_id")," "),e.xp6(2),e.Q6J("ngClass",e.VKq(13,z,i.icons.destroy)),e.xp6(12),e.Q6J("ngForOf",t.getValue("members")),e.xp6(3),e.Q6J("data",t.getValue("members"))("options",i.groupMembersSelections[o])("messages",i.messages.groupInitiator),e.xp6(1),e.Q6J("ngClass",e.VKq(15,z,i.icons.add)),e.xp6(9),e.Q6J("ngForOf",t.getValue("disks")),e.xp6(3),e.Q6J("data",t.getValue("disks"))("options",i.groupDiskSelections[o])("messages",i.messages.initiatorImage),e.xp6(1),e.Q6J("ngClass",e.VKq(17,z,i.icons.add))}}function Wo(n,_){1&n&&(e.TgZ(0,"span",48),e.SDv(1,142),e.qZA())}function en(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",86),e.SDv(2,130),e.qZA(),e.TgZ(3,"div",131),e.YNc(4,jo,39,19,"div",89),e.TgZ(5,"div",22),e.TgZ(6,"div",23),e.YNc(7,Wo,2,0,"span",18),e.TgZ(8,"button",90),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).addGroup(),!1}),e._UZ(9,"i",25),e.ynx(10),e.SDv(11,132),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",t.groups.controls),e.xp6(3),e.Q6J("ngIf",0===t.groups.controls.length),e.xp6(2),e.Q6J("ngClass",e.VKq(3,z,t.icons.add))}}function tn(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.TgZ(15,"span",14),e.TgZ(16,"button",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().targetSettingsModal()}),e._UZ(17,"i",16),e.qZA(),e.qZA(),e.qZA(),e.YNc(18,po,2,0,"span",17),e.YNc(19,go,2,0,"span",17),e.YNc(20,uo,9,0,"span",17),e.YNc(21,mo,2,0,"span",18),e._UZ(22,"hr"),e.qZA(),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",19),e.SDv(25,20),e.qZA(),e.TgZ(26,"div",11),e.YNc(27,To,6,4,"ng-container",21),e.TgZ(28,"div",22),e.TgZ(29,"div",23),e.TgZ(30,"cd-select",24),e.NdJ("selection",function(i){return e.CHM(t),e.oxw().onPortalSelection(i)}),e._UZ(31,"i",25),e.ynx(32),e.SDv(33,26),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(34,"input",27),e.YNc(35,fo,2,1,"span",17),e._UZ(36,"hr"),e.qZA(),e.qZA(),e.TgZ(37,"div",8),e.TgZ(38,"label",28),e.SDv(39,29),e.qZA(),e.TgZ(40,"div",11),e.YNc(41,Ro,12,10,"ng-container",21),e._UZ(42,"input",30),e.YNc(43,Mo,2,0,"span",17),e.YNc(44,Oo,2,0,"span",17),e.TgZ(45,"div",22),e.TgZ(46,"div",23),e.TgZ(47,"cd-select",24),e.NdJ("selection",function(i){return e.CHM(t),e.oxw().onImageSelection(i)}),e._UZ(48,"i",25),e.ynx(49),e.SDv(50,31),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(51,"hr"),e.qZA(),e.qZA(),e.TgZ(52,"div",8),e.TgZ(53,"div",32),e.TgZ(54,"div",33),e._UZ(55,"input",34),e.TgZ(56,"label",35),e.SDv(57,36),e.qZA(),e.qZA(),e._UZ(58,"hr"),e.qZA(),e.qZA(),e.YNc(59,Lo,41,8,"div",37),e.YNc(60,Yo,13,5,"div",38),e.YNc(61,en,12,5,"div",38),e.qZA(),e.TgZ(62,"div",39),e.TgZ(63,"cd-form-button-panel",40),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.ALo(64,"titlecase"),e.ALo(65,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.targetForm),e.xp6(6),e.pQV(e.lcZ(6,26,o.action))(e.lcZ(7,28,o.resource)),e.QtT(5),e.xp6(10),e.Q6J("ngClass",e.VKq(34,z,o.icons.deepCheck)),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"pattern")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"iqn")),e.xp6(1),e.Q6J("ngIf",o.hasAdvancedSettings(o.targetForm.getValue("target_controls"))),e.xp6(6),e.Q6J("ngForOf",o.portals.value),e.xp6(3),e.Q6J("data",o.portals.value)("options",o.portalsSelections)("messages",o.messages.portals),e.xp6(1),e.Q6J("ngClass",e.VKq(36,z,o.icons.add)),e.xp6(4),e.Q6J("ngIf",o.targetForm.showError("portals",t,"minGateways")),e.xp6(6),e.Q6J("ngForOf",o.targetForm.getValue("disks")),e.xp6(2),e.Q6J("ngIf",o.targetForm.showError("disks",t,"dupLunId")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("disks",t,"dupWwn")),e.xp6(3),e.Q6J("data",o.disks.value)("options",o.imagesSelections)("messages",o.messages.images),e.xp6(1),e.Q6J("ngClass",e.VKq(38,z,o.icons.add)),e.xp6(11),e.Q6J("ngIf",o.cephIscsiConfigVersion>10&&!o.targetForm.getValue("acl_enabled")),e.xp6(1),e.Q6J("ngIf",o.targetForm.getValue("acl_enabled")),e.xp6(1),e.Q6J("ngIf",o.targetForm.getValue("acl_enabled")),e.xp6(2),e.Q6J("form",o.targetForm)("submitText",e.lcZ(64,30,o.action)+" "+e.lcZ(65,32,o.resource))}}let rt=(()=>{class n extends q.E{constructor(t,o,i,s,a,d,c){super(),this.iscsiService=t,this.modalService=o,this.rbdService=i,this.router=s,this.route=a,this.taskWrapper=d,this.actionLabels=c,this.api_version=0,this.minimum_gateways=1,this.icons=T.P,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new ae.a({noOptions:"There are no portals available."}),images:new ae.a({noOptions:"There are no images available."}),initiatorImage:new ae.a({noOptions:"There are no images available. Please make sure you add an image to the target."}),groupInitiator:new ae.a({noOptions:"There are no initiators available. Please make sure you add an initiator to the target."})},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.resource="target"}ngOnInit(){const t=[this.iscsiService.listTargets(),this.rbdService.list(),this.iscsiService.portals(),this.iscsiService.settings(),this.iscsiService.version()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(o=>{this.target_iqn=decodeURIComponent(o.target_iqn),t.push(this.iscsiService.getTarget(this.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,(0,W.D)(t).subscribe(o=>{const i=C()(o[0]).filter(a=>a.target_iqn!==this.target_iqn).flatMap(a=>a.disks).map(a=>`${a.pool}/${a.image}`).value();"api_version"in o[3]&&(this.api_version=o[3].api_version),this.minimum_gateways=o[3].config.minimum_gateways,this.target_default_controls=o[3].target_default_controls,this.target_controls_limits=o[3].target_controls_limits,this.disk_default_controls=o[3].disk_default_controls,this.disk_controls_limits=o[3].disk_controls_limits,this.backstores=o[3].backstores,this.default_backstore=o[3].default_backstore,this.unsupported_rbd_features=o[3].unsupported_rbd_features,this.required_rbd_features=o[3].required_rbd_features,this.imagesAll=C()(o[1]).flatMap(a=>a.value).filter(a=>!a.namespace&&!(-1!==i.indexOf(`${a.pool_name}/${a.name}`)||0===this.getValidBackstores(a).length)).value(),this.imagesSelections=this.imagesAll.map(a=>new V.$(!1,`${a.pool_name}/${a.name}`,""));const s=[];o[2].forEach(a=>{a.ip_addresses.forEach(d=>{s.push(new V.$(!1,a.name+":"+d,""))})}),this.portalsSelections=[...s],this.cephIscsiConfigVersion=o[4].ceph_iscsi_config_version,this.createForm(),o[5]&&this.resolveModel(o[5]),this.loadingReady()})}createForm(){if(this.targetForm=new M.d({target_iqn:new r.NI("iqn.2001-07.com.ceph:"+Date.now(),{validators:[r.kI.required,r.kI.pattern(this.IQN_REGEX)]}),target_controls:new r.NI({}),portals:new r.NI([],{validators:[B.h.custom("minGateways",t=>C().uniq(t.map(i=>i.split(":")[0])).length<Math.max(1,this.minimum_gateways))]}),disks:new r.NI([],{validators:[B.h.custom("dupLunId",t=>{const o=this.getLunIds(t);return o.length!==C().uniq(o).length}),B.h.custom("dupWwn",t=>{const o=this.getWwns(t);return o.length!==C().uniq(o).length})]}),initiators:new r.Oe([]),groups:new r.Oe([]),acl_enabled:new r.NI(!1)}),this.cephIscsiConfigVersion>10){const t=new M.d({user:new r.NI(""),password:new r.NI(""),mutual_user:new r.NI(""),mutual_password:new r.NI("")});this.setAuthValidator(t),this.targetForm.addControl("auth",t)}}resolveModel(t){this.targetForm.patchValue({target_iqn:t.target_iqn,target_controls:t.target_controls,acl_enabled:t.acl_enabled}),this.cephIscsiConfigVersion>10&&this.targetForm.patchValue({auth:t.auth});const o=[];C().forEach(t.portals,s=>{o.push(`${s.host}:${s.ip}`)}),this.targetForm.patchValue({portals:o});const i=[];C().forEach(t.disks,s=>{const a=`${s.pool}/${s.image}`;i.push(a),this.imagesSettings[a]={backstore:s.backstore},this.imagesSettings[a][s.backstore]=s.controls,"lun"in s&&(this.imagesSettings[a].lun=s.lun),"wwn"in s&&(this.imagesSettings[a].wwn=s.wwn),this.onImageSelection({option:{name:a,selected:!0}})}),this.targetForm.patchValue({disks:i}),C().forEach(t.clients,s=>{const a=this.addInitiator();s.luns=C().map(s.luns,d=>`${d.pool}/${d.image}`),a.patchValue(s)}),t.groups.forEach((s,a)=>{const d=this.addGroup();s.disks=C().map(s.disks,c=>`${c.pool}/${c.image}`),d.patchValue(s),C().forEach(s.members,c=>{this.onGroupMemberSelection({option:new V.$(!0,c,"")},a)})})}hasAdvancedSettings(t){return Object.values(t).length>0}get portals(){return this.targetForm.get("portals")}onPortalSelection(){this.portals.setValue(this.portals.value)}removePortal(t,o){return this.portalsSelections.forEach(i=>{i.name===o&&(i.selected=!1)}),this.portals.value.splice(t,1),this.portals.setValue(this.portals.value),!1}get disks(){return this.targetForm.get("disks")}removeImage(t,o){return this.imagesSelections.forEach(i=>{i.name===o&&(i.selected=!1)}),this.disks.value.splice(t,1),this.removeImageRefs(o),this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1}),!1}removeImageRefs(t){this.initiators.controls.forEach(o=>{const i=o.value.luns.filter(s=>s!==t);o.get("luns").setValue(i)}),this.groups.controls.forEach(o=>{const i=o.value.disks.filter(s=>s!==t);o.get("disks").setValue(i)}),C().forEach(this.imagesInitiatorSelections,(o,i)=>{this.imagesInitiatorSelections[i]=o.filter(s=>s.name!==t)}),C().forEach(this.groupDiskSelections,(o,i)=>{this.groupDiskSelections[i]=o.filter(s=>s.name!==t)})}getDefaultBackstore(t){let o=this.default_backstore;const i=this.getImageById(t);return this.validFeatures(i,this.default_backstore)||this.backstores.forEach(s=>{s!==this.default_backstore&&this.validFeatures(i,s)&&(o=s)}),o}isLunIdInUse(t,o){const i=this.disks.value.filter(s=>s!==o);return this.getLunIds(i).includes(t)}getLunIds(t){return C().map(t,o=>this.imagesSettings[o].lun)}nextLunId(t){const o=this.disks.value.filter(a=>a!==t),i=this.getLunIds(o);let s=0;for(;i.includes(s);)s++;return s}getWwns(t){return C().map(t,i=>this.imagesSettings[i].wwn).filter(i=>C().isString(i)&&""!==i)}onImageSelection(t){const o=t.option;if(o.selected){if(this.imagesSettings[o.name])this.isLunIdInUse(this.imagesSettings[o.name].lun,o.name)&&(this.imagesSettings[o.name].lun=this.nextLunId(o.name));else{const i=this.getDefaultBackstore(o.name);this.imagesSettings[o.name]={backstore:i,lun:this.nextLunId(o.name)},this.imagesSettings[o.name][i]={}}C().forEach(this.imagesInitiatorSelections,(i,s)=>{i.push(new V.$(!1,o.name,"")),this.imagesInitiatorSelections[s]=[...i]}),C().forEach(this.groupDiskSelections,(i,s)=>{i.push(new V.$(!1,o.name,"")),this.groupDiskSelections[s]=[...i]})}else this.removeImageRefs(o.name);this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1})}get initiators(){return this.targetForm.get("initiators")}addInitiator(){const t=new M.d({client_iqn:new r.NI("",{validators:[r.kI.required,B.h.custom("notUnique",i=>{const s=this.initiators.controls.reduce(function(a,d){return a.concat(d.value.client_iqn)},[]);return s.indexOf(i)!==s.lastIndexOf(i)}),r.kI.pattern(this.IQN_REGEX)]}),auth:new M.d({user:new r.NI(""),password:new r.NI(""),mutual_user:new r.NI(""),mutual_password:new r.NI("")}),luns:new r.NI([]),cdIsInGroup:new r.NI(!1)});this.setAuthValidator(t),this.initiators.push(t),C().forEach(this.groupMembersSelections,(i,s)=>{i.push(new V.$(!1,"","")),this.groupMembersSelections[s]=[...i]});const o=C().map(this.targetForm.getValue("disks"),i=>new V.$(!1,i,""));return this.imagesInitiatorSelections.push(o),t}setAuthValidator(t){B.h.validateIf(t.get("user"),()=>t.getValue("password")||t.getValue("mutual_user")||t.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.USER_REGEX)],[t.get("password"),t.get("mutual_user"),t.get("mutual_password")]),B.h.validateIf(t.get("password"),()=>t.getValue("user")||t.getValue("mutual_user")||t.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.PASSWORD_REGEX)],[t.get("user"),t.get("mutual_user"),t.get("mutual_password")]),B.h.validateIf(t.get("mutual_user"),()=>t.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.USER_REGEX)],[t.get("user"),t.get("password"),t.get("mutual_password")]),B.h.validateIf(t.get("mutual_password"),()=>t.getValue("mutual_user"),[r.kI.required],[r.kI.pattern(this.PASSWORD_REGEX)],[t.get("user"),t.get("password"),t.get("mutual_user")])}removeInitiator(t){const o=this.initiators.value[t];this.initiators.removeAt(t),C().forEach(this.groupMembersSelections,(i,s)=>{i.splice(t,1),this.groupMembersSelections[s]=[...i]}),this.groups.controls.forEach(i=>{const s=i.value.members.filter(a=>a!==o.client_iqn);i.get("members").setValue(s)}),this.imagesInitiatorSelections.splice(t,1)}updatedInitiatorSelector(){this.initiators.controls.forEach(t=>{t.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),C().forEach(this.groupMembersSelections,(t,o)=>{C().forEach(t,(i,s)=>{const a=i.name;i.name=this.initiators.controls[s].value.client_iqn,this.groups.controls.forEach(d=>{const c=d.value.members,u=c.indexOf(a);-1!==u&&(c[u]=i.name),d.get("members").setValue(c)})}),this.groupMembersSelections[o]=[...this.groupMembersSelections[o]]})}removeInitiatorImage(t,o,i,s){const a=t.getValue("luns");return a.splice(o,1),t.patchValue({luns:a}),this.imagesInitiatorSelections[i].forEach(d=>{d.name===s&&(d.selected=!1)}),!1}get groups(){return this.targetForm.get("groups")}addGroup(){const t=new M.d({group_id:new r.NI("",{validators:[r.kI.required]}),members:new r.NI([]),disks:new r.NI([])});this.groups.push(t);const o=C().map(this.targetForm.getValue("disks"),s=>new V.$(!1,s,""));this.groupDiskSelections.push(o);const i=C().map(this.initiators.value,s=>new V.$(!1,s.client_iqn,"",!s.cdIsInGroup));return this.groupMembersSelections.push(i),t}removeGroup(t){this.groups.removeAt(t),this.groupMembersSelections[t].filter(i=>i.selected).forEach(i=>{i.selected=!1,this.onGroupMemberSelection({option:i},t)}),this.groupMembersSelections.splice(t,1),this.groupDiskSelections.splice(t,1)}onGroupMemberSelection(t,o){const i=t.option;let s=[];i.selected||(s=this.groupDiskSelections[o].filter(d=>d.selected).map(d=>d.name)),this.initiators.controls.forEach((a,d)=>{a.value.client_iqn===i.name&&(a.patchValue({luns:s}),a.get("cdIsInGroup").setValue(i.selected),C().forEach(this.groupMembersSelections,c=>{c[d].enabled=!i.selected}),this.imagesInitiatorSelections[d].forEach(c=>{c.selected=s.includes(c.name)}))})}removeGroupInitiator(t,o,i){const s=t.getValue("members")[o];t.getValue("members").splice(o,1),this.onGroupMemberSelection({option:new V.$(!1,s,"")},i)}removeGroupDisk(t,o,i){const s=t.getValue("disks")[o];t.getValue("disks").splice(o,1),this.groupDiskSelections[i].forEach(a=>{a.name===s&&(a.selected=!1)}),this.groupDiskSelections[i]=[...this.groupDiskSelections[i]]}submit(){const t=C().cloneDeep(this.targetForm.value),o={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};if(this.cephIscsiConfigVersion>10){const s=this.targetForm.get("auth");s.getValue("user")||s.get("user").setValue(""),s.getValue("password")||s.get("password").setValue(""),s.getValue("mutual_user")||s.get("mutual_user").setValue(""),s.getValue("mutual_password")||s.get("mutual_password").setValue("");const a=this.targetForm.getValue("acl_enabled");o.auth={user:a?"":s.getValue("user"),password:a?"":s.getValue("password"),mutual_user:a?"":s.getValue("mutual_user"),mutual_password:a?"":s.getValue("mutual_password")}}let i;t.disks.forEach(s=>{const a=s.split("/"),d=this.imagesSettings[s].backstore;o.disks.push({pool:a[0],image:a[1],backstore:d,controls:this.imagesSettings[s][d],lun:this.imagesSettings[s].lun,wwn:this.imagesSettings[s].wwn})}),t.portals.forEach(s=>{const a=s.indexOf(":");o.portals.push({host:s.substring(0,a),ip:s.substring(a+1)})}),o.acl_enabled&&(t.initiators.forEach(s=>{s.auth.user||(s.auth.user=""),s.auth.password||(s.auth.password=""),s.auth.mutual_user||(s.auth.mutual_user=""),s.auth.mutual_password||(s.auth.mutual_password=""),delete s.cdIsInGroup;const a=[];s.luns.forEach(d=>{const c=d.split("/");a.push({pool:c[0],image:c[1]})}),s.luns=a}),o.clients=t.initiators),o.acl_enabled&&(t.groups.forEach(s=>{const a=[];s.disks.forEach(d=>{const c=d.split("/");a.push({pool:c[0],image:c[1]})}),s.disks=a}),o.groups=t.groups),this.isEdit?(o.new_target_iqn=o.target_iqn,o.target_iqn=this.target_iqn,i=this.taskWrapper.wrapTaskAroundCall({task:new F.R("iscsi/target/edit",{target_iqn:o.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,o)})):i=this.taskWrapper.wrapTaskAroundCall({task:new F.R("iscsi/target/create",{target_iqn:o.target_iqn}),call:this.iscsiService.createTarget(o)}),i.subscribe({error:()=>{this.targetForm.setErrors({cdSubmitButton:!0})},complete:()=>this.router.navigate(["/block/iscsi/targets"])})}targetSettingsModal(){const t={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls,target_controls_limits:this.target_controls_limits};this.modalRef=this.modalService.show(ro,t)}imageSettingsModal(t){const o={imagesSettings:this.imagesSettings,image:t,api_version:this.api_version,disk_default_controls:this.disk_default_controls,disk_controls_limits:this.disk_controls_limits,backstores:this.getValidBackstores(this.getImageById(t)),control:this.targetForm.get("disks")};this.modalRef=this.modalService.show(so,o)}validFeatures(t,o){const i=t.features,s=this.required_rbd_features[o];return(i&s)===s&&0==(i&this.unsupported_rbd_features[o])}getImageById(t){return this.imagesAll.find(o=>t===`${o.pool_name}/${o.name}`)}getValidBackstores(t){return this.backstores.filter(o=>this.validFeatures(t,o))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(k),e.Y36(re.Z),e.Y36(x),e.Y36(m.F0),e.Y36(m.gz),e.Y36(Q.P),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P,$,G,X,J,te,A,w,de,pe,ge,ue,me,Te,fe,Ce,Se,y,Ze,Be,Ge,ye,xe,we,qe,L,Ot,At,ht,Pt,It,bt,Nt,Dt,vt,Lt,Ft,$t,Zt,Bt,Gt,yt,xt,wt,qt,Ht,Kt,kt,Xt,Qt,zt;return _="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Target IQN",o="Portals",i="Add portal",s="Images",a="Add image",d="ACL authentication",c="This field is required.",u="IQN has wrong pattern.",S="An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'",N="For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309",P="More information",$="This target has modified advanced settings.",G="At least " + "\ufffd0\ufffd" + " gateways are required.",X="Backstore: " + "\ufffd0\ufffd" + ".\xA0",J="This image has modified settings.",te="Duplicated LUN numbers.",A="Duplicated WWN.",w="User",de="Password",pe="Mutual User",ge="Mutual Password",ue="This field is required.",me="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",Te="This field is required.",fe="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",Ce="This field is required.",Se="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",y="This field is required.",Ze="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",Be="Initiators",Ge="Add initiator",ye="Initiator",xe="Client IQN",we="User",qe="Password",L="Mutual User",Ot="Mutual Password",At="Images",ht="Initiator IQN needs to be unique.",Pt="This field is required.",It="IQN has wrong pattern.",bt="This field is required.",Nt="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",Dt="This field is required.",vt="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",Lt="This field is required.",Ft="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",$t="This field is required.",Zt="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",Bt="Initiator belongs to a group. Images will be configure in the group.",Gt="Add image",yt="No items added.",xt="Groups",wt="Add group",qt="Group",Ht="Name",Kt="Initiators",kt="Add initiator",Xt="Images",Qt="Add image",zt="No items added.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","targetForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],_,[1,"card-body"],[1,"form-group","row"],["for","target_iqn",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],[1,"input-group"],["type","text","id","target_iqn","name","target_iqn","formControlName","target_iqn","cdTrim","",1,"form-control"],[1,"input-group-append"],["id","ecp-info-button","type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],["class","invalid-feedback",4,"ngIf"],["class","form-text text-muted",4,"ngIf"],["for","portals",1,"cd-col-form-label","required"],o,[4,"ngFor","ngForOf"],[1,"row"],[1,"col-md-12"],["elemClass","btn btn-light float-right",3,"data","options","messages","selection"],[3,"ngClass"],i,["type","hidden","id","portals","name","portals","formControlName","portals",1,"form-control"],["for","disks",1,"cd-col-form-label"],s,["type","hidden","id","disks","name","disks","formControlName","disks",1,"form-control"],a,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","acl_enabled","name","acl_enabled","id","acl_enabled",1,"custom-control-input"],["for","acl_enabled",1,"custom-control-label"],d,["formGroupName","auth",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],c,u,S,N,["target","_blank","href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],P,[1,"form-text","text-muted"],$,[1,"input-group","cd-mb"],["type","text","disabled","",1,"cd-form-control",3,"value"],["type","button",1,"btn","btn-light",3,"click"],G,["class","input-group-text",4,"ngIf"],[4,"ngIf"],[1,"input-group-text"],X,J,te,A,["formGroupName","auth"],["for","target_user",1,"cd-col-form-label"],w,["type","text","autocomplete","off","id","target_user","name","target_user","formControlName","user",1,"form-control"],["for","target_password",1,"cd-col-form-label"],de,["type","password","autocomplete","new-password","id","target_password","name","target_password","formControlName","password",1,"form-control"],["type","button","cdPasswordButton","target_password",1,"btn","btn-light"],["source","target_password"],["for","target_mutual_user",1,"cd-col-form-label"],pe,["type","text","autocomplete","off","id","target_mutual_user","name","target_mutual_user","formControlName","mutual_user",1,"form-control"],["for","target_mutual_password",1,"cd-col-form-label"],ge,["type","password","autocomplete","new-password","id","target_mutual_password","name","target_mutual_password","formControlName","mutual_password",1,"form-control"],["type","button","cdPasswordButton","target_mutual_password",1,"btn","btn-light"],["source","target_mutual_password"],ue,me,Te,fe,Ce,Se,y,Ze,["for","initiators",1,"cd-col-form-label"],Be,["formArrayName","initiators",1,"cd-col-form-input"],["class","card mb-2",3,"formGroup",4,"ngFor","ngForOf"],[1,"btn","btn-light","float-right",3,"click"],Ge,[1,"card","mb-2",3,"formGroup"],ye,["type","button",1,"close",3,"click"],["for","client_iqn",1,"cd-col-form-label","required"],xe,["type","text","formControlName","client_iqn","cdTrim","",1,"form-control",3,"blur"],["for","user",1,"cd-col-form-label"],we,["formControlName","user","autocomplete","off","type","text",1,"form-control",3,"id"],["for","password",1,"cd-col-form-label"],qe,["formControlName","password","autocomplete","new-password","type","password",1,"form-control",3,"id"],["type","button",1,"btn","btn-light",3,"cdPasswordButton"],[3,"source"],["for","mutual_user",1,"cd-col-form-label"],L,["formControlName","mutual_user","autocomplete","off","type","text",1,"form-control",3,"id"],["for","mutual_password",1,"cd-col-form-label"],Ot,["formControlName","mutual_password","autocomplete","new-password","type","password",1,"form-control",3,"id"],["for","luns",1,"cd-col-form-label"],At,["class","row",4,"ngIf"],ht,Pt,It,bt,Nt,Dt,vt,Lt,Ft,$t,Zt,Bt,["elemClass","btn btn-light float-right",3,"data","options","messages"],Gt,yt,xt,["formArrayName","groups",1,"cd-col-form-input"],wt,qt,["for","group_id",1,"cd-col-form-label","required"],Ht,["type","text","formControlName","group_id",1,"form-control"],["for","members",1,"cd-col-form-label"],Kt,kt,Xt,Qt,zt]},template:function(t,o){1&t&&e.YNc(0,tn,66,40,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[st.y,r._Y,r.JL,r.sg,v.V,g.P,f.o,r.Fj,h.b,r.JJ,r.u,lo,l.mk,l.O5,l.sg,co.H,r.Wl,O.p,r.x0,at.C,Je.s,r.CE],pipes:[l.rS,Ye.m,He.V],styles:[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]}),n})();var lt=p(68136),he=p(30982),ee=p(64337),ve=p(99466),Ee=p(68774),ct=p(55657),se=p(38047),Ve=p(18001),Le=p(97161),oe=p(74937);function on(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function nn(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function _n(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,33),e.qZA())}function sn(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,34),e.qZA())}function an(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,35),e.qZA())}function rn(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function ln(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,37),e.qZA())}function cn(n,_){1&n&&(e.TgZ(0,"span",30),e.SDv(1,38),e.qZA())}let dn=(()=>{class n{constructor(t,o,i,s,a){this.authStorageService=t,this.activeModal=o,this.actionLabels=i,this.iscsiService=s,this.notificationService=a,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.permission=this.authStorageService.getPermissions().iscsi}ngOnInit(){this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(t=>{this.discoveryForm.patchValue(t)})}createForm(){this.discoveryForm=new M.d({user:new r.NI({value:"",disabled:!this.hasPermission}),password:new r.NI({value:"",disabled:!this.hasPermission}),mutual_user:new r.NI({value:"",disabled:!this.hasPermission}),mutual_password:new r.NI({value:"",disabled:!this.hasPermission})}),B.h.validateIf(this.discoveryForm.get("user"),()=>this.discoveryForm.getValue("password")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),B.h.validateIf(this.discoveryForm.get("password"),()=>this.discoveryForm.getValue("user")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),B.h.validateIf(this.discoveryForm.get("mutual_user"),()=>this.discoveryForm.getValue("mutual_password"),[r.kI.required],[r.kI.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),B.h.validateIf(this.discoveryForm.get("mutual_password"),()=>this.discoveryForm.getValue("mutual_user"),[r.kI.required],[r.kI.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])}submitAction(){this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(()=>{this.notificationService.show(Ve.k.success,"Updated discovery authentication"),this.activeModal.close()},()=>{this.discoveryForm.setErrors({cdSubmitButton:!0})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(I.Kz),e.Y36(D.p4),e.Y36(k),e.Y36(Le.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-discovery-modal"]],decls:46,vars:13,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P,$;return _="Discovery Authentication",t="User",o="Password",i="Mutual User",s="Mutual Password",a="This field is required.",d="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",c="This field is required.",u="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",S="This field is required.",N="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",P="This field is required.",$="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","discoveryForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","user",1,"cd-col-form-label"],t,[1,"cd-col-form-input"],["id","user","formControlName","user","type","text","autocomplete","off",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","password",1,"cd-col-form-label"],o,[1,"input-group"],["id","password","formControlName","password","type","password","autocomplete","new-password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-light"],["source","password"],["for","mutual_user",1,"cd-col-form-label"],i,["id","mutual_user","formControlName","mutual_user","type","text","autocomplete","off",1,"form-control"],["for","mutual_password",1,"cd-col-form-label"],s,["id","mutual_password","formControlName","mutual_password","type","password","autocomplete","new-password",1,"form-control"],["type","button","cdPasswordButton","mutual_password",1,"btn","btn-light"],["source","mutual_password"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"invalid-feedback"],a,d,c,u,S,N,P,$]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e._UZ(11,"input",11),e.YNc(12,on,2,0,"span",12),e.YNc(13,nn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",13),e.SDv(16,14),e.qZA(),e.TgZ(17,"div",10),e.TgZ(18,"div",15),e._UZ(19,"input",16),e.TgZ(20,"span",17),e._UZ(21,"button",18),e._UZ(22,"cd-copy-2-clipboard-button",19),e.qZA(),e.qZA(),e.YNc(23,_n,2,0,"span",12),e.YNc(24,sn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(25,"div",7),e.TgZ(26,"label",20),e.ynx(27),e.SDv(28,21),e.BQk(),e.qZA(),e.TgZ(29,"div",10),e._UZ(30,"input",22),e.YNc(31,an,2,0,"span",12),e.YNc(32,rn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(33,"div",7),e.TgZ(34,"label",23),e.SDv(35,24),e.qZA(),e.TgZ(36,"div",10),e.TgZ(37,"div",15),e._UZ(38,"input",25),e.TgZ(39,"span",17),e._UZ(40,"button",26),e._UZ(41,"cd-copy-2-clipboard-button",27),e.qZA(),e.qZA(),e.YNc(42,ln,2,0,"span",12),e.YNc(43,cn,2,0,"span",12),e.qZA(),e.qZA(),e.qZA(),e.TgZ(44,"div",28),e.TgZ(45,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.discoveryForm),e.xp6(8),e.Q6J("ngIf",o.discoveryForm.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("user",i,"pattern")),e.xp6(10),e.Q6J("ngIf",o.discoveryForm.showError("password",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("password",i,"pattern")),e.xp6(7),e.Q6J("ngIf",o.discoveryForm.showError("mutual_user",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("mutual_user",i,"pattern")),e.xp6(10),e.Q6J("ngIf",o.discoveryForm.showError("mutual_password",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("mutual_password",i,"pattern")),e.xp6(2),e.Q6J("form",o.discoveryForm)("showSubmit",o.hasPermission)("submitText",o.actionLabels.SUBMIT)}},directives:[R.z,r._Y,r.JL,r.sg,v.V,g.P,f.o,r.Fj,h.b,r.JJ,r.u,l.O5,at.C,Je.s,O.p],styles:[""]}),n})();var pn=p(86969);let dt=(()=>{class n{constructor(t){this.router=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-tabs"]],decls:8,vars:1,consts:function(){let _,t;return _="Overview",t="Targets",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/block/iscsi/overview"],["ngbNavLink",""],_,["ngbNavItem","/block/iscsi/targets"],t]},template:function(t,o){1&t&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(s){return o.router.navigate([s.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"li",5),e.TgZ(6,"a",3),e.SDv(7,6),e.qZA(),e.qZA(),e.qZA()),2&t&&e.Q6J("activeId",o.router.url)},directives:[I.Pz,I.nv,I.Vx],styles:[""]}),n})();var pt=p(34501),gn=p(30490),Re=p(94928),un=p(68962);const mn=["highlightTpl"],Tn=["detailTable"],fn=["tree"],Cn=function(){return["logged_in"]},Sn=function(){return["logged_out"]},En=function(n,_){return{"badge-success":n,"badge-danger":_}};function Rn(n,_){if(1&n&&(e._UZ(0,"i"),e.TgZ(1,"span"),e._uU(2),e.qZA(),e._uU(3," \xa0 "),e.TgZ(4,"span",8),e._uU(5),e.qZA()),2&n){const t=_.$implicit;e.Tol(t.data.cdIcon),e.xp6(2),e.Oqu(t.data.name),e.xp6(2),e.Q6J("ngClass",e.WLB(7,En,e.DdM(5,Cn).includes(t.data.status),e.DdM(6,Sn).includes(t.data.status))),e.xp6(1),e.hij(" ",t.data.status," ")}}function Mn(n,_){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"legend"),e._uU(2),e.qZA(),e._UZ(3,"cd-table",10,11),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.Oqu(t.title),e.xp6(1),e.Q6J("data",t.data)("columns",t.columns)("limit",0)}}function On(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t)}}function An(n,_){if(1&n&&(e.TgZ(0,"strong"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t)}}function hn(n,_){if(1&n&&(e.YNc(0,On,2,1,"span",12),e.YNc(1,An,2,1,"strong",12)),2&n){const t=_.row;e.Q6J("ngIf",void 0===t.default||t.default===t.current),e.xp6(1),e.Q6J("ngIf",void 0!==t.default&&t.default!==t.current)}}let Pn=(()=>{class n{constructor(t,o){this.iscsiBackstorePipe=t,this.booleanTextPipe=o,this.icons=T.P,this.metadata={},this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}}}set content(t){this.detailTable=t,t&&t.updateColumns()}ngOnInit(){this.columns=[{prop:"displayName",name:"Name",flexGrow:1,cellTemplate:this.highlightTpl},{prop:"current",name:"Current",flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:"Default",flexGrow:1,cellTemplate:this.highlightTpl}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.generateTree()),this.data=void 0}generateTree(){const t=C().cloneDeep(this.selectedItem.target_controls);this.cephIscsiConfigVersion>10&&C().extend(t,C().cloneDeep(this.selectedItem.auth)),this.metadata={root:t};const o={target:{expanded:C().join(this.selectedItem.cdExecuting?[T.P.large,T.P.spinner,T.P.spin]:[T.P.large,T.P.bullseye]," ")},initiators:{expanded:C().join([T.P.large,T.P.user]," "),leaf:C().join([T.P.user]," ")},groups:{expanded:C().join([T.P.large,T.P.users]," "),leaf:C().join([T.P.users]," ")},disks:{expanded:C().join([T.P.large,T.P.disk]," "),leaf:C().join([T.P.disk]," ")},portals:{expanded:C().join([T.P.large,T.P.server]," "),leaf:C().join([T.P.server]," ")}},i=[];C().forEach(this.selectedItem.disks,c=>{const u="disk_"+c.pool+"_"+c.image;this.metadata[u]={controls:c.controls,backstore:c.backstore},["wwn","lun"].forEach(S=>{S in c&&(this.metadata[u][S]=c[S])}),i.push({name:`${c.pool}/${c.image}`,cdId:u,cdIcon:o.disks.leaf})});const s=[];C().forEach(this.selectedItem.portals,c=>{s.push({name:`${c.host}:${c.ip}`,cdIcon:o.portals.leaf})});const a=[];C().forEach(this.selectedItem.clients,c=>{const u=C().cloneDeep(c.auth);c.info&&(C().extend(u,c.info),delete u.state,C().forEach(Object.keys(c.info.state),P=>{u[P.toLowerCase()]=c.info.state[P]})),this.metadata["client_"+c.client_iqn]=u;const S=[];c.luns.forEach(P=>{S.push({name:`${P.pool}/${P.image}`,cdId:"disk_"+P.pool+"_"+P.image,cdIcon:o.disks.leaf})});let N="";c.info&&(N=Object.keys(c.info.state).includes("LOGGED_IN")?"logged_in":"logged_out"),a.push({name:c.client_iqn,status:N,cdId:"client_"+c.client_iqn,children:S,cdIcon:o.initiators.leaf})});const d=[];C().forEach(this.selectedItem.groups,c=>{const u=[];c.disks.forEach(N=>{u.push({name:`${N.pool}/${N.image}`,cdId:"disk_"+N.pool+"_"+N.image,cdIcon:o.disks.leaf})});const S=[];c.members.forEach(N=>{S.push({name:N,cdId:"client_"+N})}),d.push({name:c.group_id,cdIcon:o.groups.leaf,children:[{name:"Disks",children:u,cdIcon:o.disks.expanded},{name:"Initiators",children:S,cdIcon:o.initiators.expanded}]})}),this.nodes=[{name:this.selectedItem.target_iqn,cdId:"root",isExpanded:!0,cdIcon:o.target.expanded,children:[{name:"Disks",isExpanded:!0,children:i,cdIcon:o.disks.expanded},{name:"Portals",isExpanded:!0,children:s,cdIcon:o.portals.expanded},{name:"Initiators",isExpanded:!0,children:a,cdIcon:o.initiators.expanded},{name:"Groups",isExpanded:!0,children:d,cdIcon:o.groups.expanded}]}]}format(t){return"boolean"==typeof t?this.booleanTextPipe.transform(t):t}onNodeSelected(t,o){var i,s,a,d;if(ne.iM.ACTIVATE(t,o,!0),o.data.cdId){this.title=o.data.name;const c=this.metadata[o.data.cdId]||{};"root"===o.data.cdId?(null===(i=this.detailTable)||void 0===i||i.toggleColumn({prop:"default",isHidden:!0}),this.data=C().map(this.settings.target_default_controls,(u,S)=>({displayName:S,default:u=this.format(u),current:C().isUndefined(c[S])?u:this.format(c[S])})),this.cephIscsiConfigVersion>10&&["user","password","mutual_user","mutual_password"].forEach(u=>{this.data.push({displayName:u,default:null,current:c[u]})})):o.data.cdId.toString().startsWith("disk_")?(null===(s=this.detailTable)||void 0===s||s.toggleColumn({prop:"default",isHidden:!0}),this.data=C().map(this.settings.disk_default_controls[c.backstore],(u,S)=>({displayName:S,default:u=this.format(u),current:C().isUndefined(c.controls[S])?u:this.format(c.controls[S])})),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(c.backstore)}),["wwn","lun"].forEach(u=>{u in c&&this.data.push({displayName:u,default:void 0,current:c[u]})})):(null===(a=this.detailTable)||void 0===a||a.toggleColumn({prop:"default",isHidden:!1}),this.data=C().map(c,(u,S)=>({displayName:S,default:void 0,current:this.format(u)})))}else this.data=void 0;null===(d=this.detailTable)||void 0===d||d.updateColumns()}onUpdateData(){this.tree.treeModel.expandAll()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(He.V),e.Y36(un.T))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-details"]],viewQuery:function(t,o){if(1&t&&(e.Gf(mn,7),e.Gf(Tn,5),e.Gf(fn,5)),2&t){let i;e.iGM(i=e.CRH())&&(o.highlightTpl=i.first),e.iGM(i=e.CRH())&&(o.content=i.first),e.iGM(i=e.CRH())&&(o.tree=i.first)}},inputs:{selection:"selection",settings:"settings",cephIscsiConfigVersion:"cephIscsiConfigVersion"},features:[e.TTD],decls:11,vars:3,consts:function(){let _;return _="iSCSI Topology",[[1,"row"],[1,"col-6"],_,[3,"nodes","options","updateData"],["tree",""],["treeNodeTemplate",""],["class","col-6 metadata",4,"ngIf"],["highlightTpl",""],[1,"badge",3,"ngClass"],[1,"col-6","metadata"],["columnMode","flex",3,"data","columns","limit"],["detailTable",""],[4,"ngIf"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"legend"),e.SDv(3,2),e.qZA(),e.TgZ(4,"tree-root",3,4),e.NdJ("updateData",function(){return o.onUpdateData()}),e.YNc(6,Rn,6,10,"ng-template",null,5,e.W1O),e.qZA(),e.qZA(),e.YNc(8,Mn,5,4,"div",6),e.qZA(),e.YNc(9,hn,2,2,"ng-template",null,7,e.W1O)),2&t&&(e.xp6(4),e.Q6J("nodes",o.nodes)("options",o.treeOptions),e.xp6(4),e.Q6J("ngIf",o.data))},directives:[ne.qr,l.O5,l.mk,ee.a],styles:[""]}),n})();function In(n,_){if(1&n&&(e.ynx(0),e._UZ(1,"br"),e.TgZ(2,"span"),e.SDv(3,6),e.qZA(),e.TgZ(4,"pre"),e._uU(5),e.qZA(),e.BQk()),2&n){const t=e.oxw(2);e.xp6(5),e.Oqu(t.status)}}function bn(n,_){if(1&n&&(e.TgZ(0,"cd-alert-panel",2),e.ynx(1),e.tHW(2,3),e._UZ(3,"cd-doc",4),e.N_p(),e.BQk(),e.YNc(4,In,6,1,"ng-container",5),e.qZA()),2&n){const t=e.oxw();e.xp6(4),e.Q6J("ngIf",t.status)}}function Nn(n,_){if(1&n&&e._UZ(0,"cd-iscsi-target-details",15),2&n){const t=e.oxw(2);e.Q6J("cephIscsiConfigVersion",t.cephIscsiConfigVersion)("selection",t.expandedRow)("settings",t.settings)}}const Dn=function(n){return[n]};function vn(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",7,8),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().getTargets()})("setExpandedRow",function(i){return e.CHM(t),e.oxw().setExpandedRow(i)})("updateSelection",function(i){return e.CHM(t),e.oxw().updateSelection(i)}),e.TgZ(2,"div",9),e._UZ(3,"cd-table-actions",10),e.TgZ(4,"button",11),e.NdJ("click",function(){return e.CHM(t),e.oxw().configureDiscoveryAuth()}),e._UZ(5,"i",12),e.ynx(6),e.SDv(7,13),e.BQk(),e.qZA(),e.qZA(),e.YNc(8,Nn,1,3,"cd-iscsi-target-details",14),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.targets)("columns",t.columns)("hasDetails",!0)("autoReload",!1)("status",t.tableStatus),e.xp6(3),e.Q6J("permission",t.permission)("selection",t.selection)("tableActions",t.tableActions),e.xp6(2),e.Q6J("ngClass",e.VKq(10,Dn,t.icons.key)),e.xp6(3),e.Q6J("ngIf",t.expandedRow)}}let Ln=(()=>{class n extends lt.o{constructor(t,o,i,s,a,d,c,u,S){super(S),this.authStorageService=t,this.iscsiService=o,this.joinPipe=i,this.taskListService=s,this.notAvailablePipe=a,this.modalService=d,this.taskWrapper=c,this.actionLabels=u,this.ngZone=S,this.available=void 0,this.selection=new Ee.r,this.targets=[],this.icons=T.P,this.builders={"iscsi/target/create":N=>({target_iqn:N.target_iqn})},this.permission=this.authStorageService.getPermissions().iscsi,this.tableActions=[{permission:"create",icon:T.P.add,routerLink:()=>"/block/iscsi/targets/create",name:this.actionLabels.CREATE},{permission:"update",icon:T.P.edit,routerLink:()=>`/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,name:this.actionLabels.EDIT,disable:()=>this.getEditDisableDesc()},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteIscsiTargetModal(),name:this.actionLabels.DELETE,disable:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:"Target",prop:"target_iqn",flexGrow:2,cellTransformation:ve.e.executing},{name:"Portals",prop:"cdPortals",pipe:this.joinPipe,flexGrow:2},{name:"Images",prop:"cdImages",pipe:this.joinPipe,flexGrow:2},{name:"# Sessions",prop:"info.num_sessions",pipe:this.notAvailablePipe,flexGrow:1}],this.iscsiService.status().subscribe(t=>{this.available=t.available,t.available||(this.status=t.message)})}getTargets(){this.available&&(this.setTableRefreshTimeout(),this.iscsiService.version().subscribe(t=>{this.cephIscsiConfigVersion=t.ceph_iscsi_config_version}),this.taskListService.init(()=>this.iscsiService.listTargets(),t=>this.prepareResponse(t),t=>this.targets=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders),this.iscsiService.settings().subscribe(t=>{this.settings=t}))}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}getEditDisableDesc(){const t=this.selection.first();return t&&(null==t?void 0:t.cdExecuting)?t.cdExecuting:t&&C().isUndefined(null==t?void 0:t.info)?"Unavailable gateway(s)":!t}getDeleteDisableDesc(){var t;const o=this.selection.first();return(null==o?void 0:o.cdExecuting)?o.cdExecuting:o&&C().isUndefined(null==o?void 0:o.info)?"Unavailable gateway(s)":o&&(null===(t=null==o?void 0:o.info)||void 0===t?void 0:t.num_sessions)?"Target has active sessions":!o}prepareResponse(t){return t.forEach(o=>{o.cdPortals=o.portals.map(i=>`${i.host}:${i.ip}`),o.cdImages=o.disks.map(i=>`${i.pool}/${i.image}`)}),t}onFetchError(){this.table.reset()}itemFilter(t,o){return t.target_iqn===o.metadata.target_iqn}taskFilter(t){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(t.name)}updateSelection(t){this.selection=t}deleteIscsiTargetModal(){const t=this.selection.first().target_iqn;this.modalRef=this.modalService.show(he.M,{itemDescription:"iSCSI target",itemNames:[t],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new F.R("iscsi/target/delete",{target_iqn:t}),call:this.iscsiService.deleteTarget(t)})})}configureDiscoveryAuth(){this.modalService.show(dn)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(k),e.Y36(pn.A),e.Y36(se.j),e.Y36(ct.g),e.Y36(re.Z),e.Y36(Q.P),e.Y36(D.p4),e.Y36(e.R0b))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-list"]],viewQuery:function(t,o){if(1&t&&e.Gf(ee.a,5),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first)}},features:[e._Bn([se.j]),e.qOj],decls:3,vars:2,consts:function(){let _,t,o,i;return _="iSCSI Targets not available",t="Please consult the " + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + " on how to configure and enable the iSCSI Targets management functionality.",o="Available information:",i="Discovery authentication",[["type","info","title",_,4,"ngIf"],["columnMode","flex","identifier","target_iqn","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","autoReload","status","fetchData","setExpandedRow","updateSelection",4,"ngIf"],["type","info","title",_],t,["section","iscsi"],[4,"ngIf"],o,["columnMode","flex","identifier","target_iqn","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","autoReload","status","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],i,["cdTableDetail","",3,"cephIscsiConfigVersion","selection","settings",4,"ngIf"],["cdTableDetail","",3,"cephIscsiConfigVersion","selection","settings"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-iscsi-tabs"),e.YNc(1,bn,5,1,"cd-alert-panel",0),e.YNc(2,vn,9,12,"cd-table",1)),2&t&&(e.xp6(1),e.Q6J("ngIf",!1===o.available),e.xp6(1),e.Q6J("ngIf",!0===o.available))},directives:[dt,l.O5,pt.G,gn.K,ee.a,Re.K,f.o,l.mk,Pn],styles:[""]}),n})();var Ue=p(66369),Fn=p(76446),$n=p(90068);const Zn=["iscsiSparklineTpl"],Bn=["iscsiPerSecondTpl"],Gn=["iscsiRelativeDateTpl"];function yn(n,_){if(1&n&&(e.TgZ(0,"span"),e._UZ(1,"cd-sparkline",9),e.qZA()),2&n){const t=e.oxw(),o=t.value,i=t.row;e.xp6(1),e.Q6J("data",o)("isBinary",i.cdIsBinary)}}function xn(n,_){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function wn(n,_){if(1&n&&(e.YNc(0,yn,2,2,"span",7),e.YNc(1,xn,2,0,"span",8)),2&n){const t=_.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}function qn(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.hij(" ",t," /s ")}}function Hn(n,_){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function Kn(n,_){if(1&n&&(e.YNc(0,qn,2,1,"span",7),e.YNc(1,Hn,2,0,"span",8)),2&n){const t=_.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}function kn(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"notAvailable"),e.ALo(3,"relativeDate"),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.hij(" ",e.lcZ(2,1,e.lcZ(3,3,t))," ")}}function Xn(n,_){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function Qn(n,_){if(1&n&&(e.YNc(0,kn,4,5,"span",7),e.YNc(1,Xn,2,0,"span",8)),2&n){const t=_.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}let zn=(()=>{class n{constructor(t,o,i){this.iscsiService=t,this.dimlessPipe=o,this.iscsiBackstorePipe=i,this.gateways=[],this.images=[]}ngOnInit(){this.gatewaysColumns=[{name:"Name",prop:"name"},{name:"State",prop:"state",flexGrow:1,cellTransformation:ve.e.badge,customTemplateConfig:{map:{up:{class:"badge-success"},down:{class:"badge-danger"}}}},{name:"# Targets",prop:"num_targets"},{name:"# Sessions",prop:"num_sessions"}],this.imagesColumns=[{name:"Pool",prop:"pool"},{name:"Image",prop:"image"},{name:"Backstore",prop:"backstore",pipe:this.iscsiBackstorePipe},{name:"Read Bytes",prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:"Write Bytes",prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:"Read Ops",prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:"Write Ops",prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:"A/O Since",prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]}refresh(){this.iscsiService.overview().subscribe(t=>{this.gateways=t.gateways,this.images=t.images,this.images.map(o=>(o.stats_history&&(o.stats_history.rd_bytes=o.stats_history.rd_bytes.map(i=>i[1]),o.stats_history.wr_bytes=o.stats_history.wr_bytes.map(i=>i[1])),o.cdIsBinary=!0,o))})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(k),e.Y36(Ue.n),e.Y36(He.V))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Zn,7),e.Gf(Bn,7),e.Gf(Gn,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.iscsiSparklineTpl=i.first),e.iGM(i=e.CRH())&&(o.iscsiPerSecondTpl=i.first),e.iGM(i=e.CRH())&&(o.iscsiRelativeDateTpl=i.first)}},decls:13,vars:4,consts:function(){let _,t;return _="Gateways",t="Images",[_,[3,"data","columns","fetchData"],t,[3,"data","columns"],["iscsiSparklineTpl",""],["iscsiPerSecondTpl",""],["iscsiRelativeDateTpl",""],[4,"ngIf"],["class","text-muted",4,"ngIf"],[3,"data","isBinary"],[1,"text-muted"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-iscsi-tabs"),e.TgZ(1,"legend"),e.SDv(2,0),e.qZA(),e.TgZ(3,"cd-table",1),e.NdJ("fetchData",function(){return o.refresh()}),e.qZA(),e.TgZ(4,"legend"),e.SDv(5,2),e.qZA(),e._UZ(6,"cd-table",3),e.YNc(7,wn,2,2,"ng-template",null,4,e.W1O),e.YNc(9,Kn,2,2,"ng-template",null,5,e.W1O),e.YNc(11,Qn,2,2,"ng-template",null,6,e.W1O)),2&t&&(e.xp6(3),e.Q6J("data",o.gateways)("columns",o.gatewaysColumns),e.xp6(3),e.Q6J("data",o.images)("columns",o.imagesColumns))},directives:[dt,ee.a,l.O5,Fn.l],pipes:[ct.g,$n.h],styles:[""]}),n})(),Jn=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[l.ez,_e.m,I.Oz,m.Bz,r.u5,r.UX,I.ZQ]]}),n})();var Yn=p(75319),Vn=p(26215),Un=p(45435),gt=p(55358);let K=class{constructor(_,t){this.http=_,this.timerService=t,this.REFRESH_INTERVAL=3e4,this.summaryDataSource=new Vn.X(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/block/mirroring/summary")}retrieveSummaryObserver(){return _=>{this.summaryDataSource.next(_)}}subscribeSummary(_,t){return this.summaryData$.pipe((0,Un.h)(o=>!!o)).subscribe(_,t)}getPool(_){return this.http.get(`api/block/mirroring/pool/${_}`)}updatePool(_,t){return this.http.put(`api/block/mirroring/pool/${_}`,t,{observe:"response"})}getSiteName(){return this.http.get("api/block/mirroring/site_name")}setSiteName(_){return this.http.put("api/block/mirroring/site_name",{site_name:_},{observe:"response"})}createBootstrapToken(_){return this.http.post(`api/block/mirroring/pool/${_}/bootstrap/token`,{})}importBootstrapToken(_,t,o){return this.http.post(`api/block/mirroring/pool/${_}/bootstrap/peer`,{direction:t,token:o},{observe:"response"})}getPeer(_,t){return this.http.get(`api/block/mirroring/pool/${_}/peer/${t}`)}addPeer(_,t){return this.http.post(`api/block/mirroring/pool/${_}/peer`,t,{observe:"response"})}updatePeer(_,t,o){return this.http.put(`api/block/mirroring/pool/${_}/peer/${t}`,o,{observe:"response"})}deletePeer(_,t){return this.http.delete(`api/block/mirroring/pool/${_}/peer/${t}`,{observe:"response"})}};K.\u0275fac=function(_){return new(_||K)(e.LFG(ie.eN),e.LFG(gt.f))},K.\u0275prov=e.Yz7({token:K,factory:K.\u0275fac,providedIn:"root"}),(0,b.gn)([(0,b.fM)(0,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[String]),(0,b.w6)("design:returntype",void 0)],K.prototype,"setSiteName",null),(0,b.gn)([(0,b.fM)(1,Y.G),(0,b.fM)(2,Y.G),(0,b.w6)("design:type",Function),(0,b.w6)("design:paramtypes",[String,String,String]),(0,b.w6)("design:returntype",void 0)],K.prototype,"importBootstrapToken",null),K=(0,b.gn)([Y.o,(0,b.w6)("design:paramtypes",[ie.eN,gt.f])],K);var je=p(58071),jn=p(68307),ut=p(12627),le=p(82945),Wn=p(39749),ei=p(13472);function ti(n,_){1&n&&(e.TgZ(0,"span",25),e.SDv(1,26),e.qZA())}function oi(n,_){if(1&n&&(e.TgZ(0,"div",27),e._UZ(1,"input",28),e.TgZ(2,"label",29),e._uU(3),e.qZA(),e.qZA()),2&n){const t=_.$implicit;e.xp6(1),e.s9C("id",t.name),e.s9C("name",t.name),e.s9C("formControlName",t.name),e.xp6(1),e.s9C("for",t.name),e.xp6(1),e.Oqu(t.name)}}function ni(n,_){1&n&&(e.TgZ(0,"span",25),e.SDv(1,30),e.qZA())}let ii=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.rbdMirroringService=o,this.taskWrapper=i,this.pools=[],this.createForm()}createForm(){this.createBootstrapForm=new M.d({siteName:new r.NI("",{validators:[r.kI.required]}),pools:new r.cw({},{validators:[this.validatePools()]}),token:new r.NI("",{})})}ngOnInit(){this.createBootstrapForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(t=>{this.createBootstrapForm.get("siteName").setValue(t.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.pools=t.content_data.pools.reduce((s,a)=>(s.push({name:a.name,mirror_mode:a.mirror_mode}),s),[]);const i=this.createBootstrapForm.get("pools");C().each(this.pools,s=>{const a=s.name,d="disabled"===s.mirror_mode,c=i.controls[a];c?d&&c.disabled?c.enable():!d&&c.enabled&&(c.disable(),c.setValue(!0)):i.addControl(a,new r.NI({value:!d,disabled:!d}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return t=>{let o=0;return C().each(t.controls,i=>{!0===i.value&&++o}),o>0?null:{requirePool:!0}}}generate(){this.createBootstrapForm.get("token").setValue("");let t="";const o=[],i=this.createBootstrapForm.get("pools");C().each(i.controls,(u,S)=>{!0===u.value&&(t=S,u.disabled||o.push(S))});const s={mirror_mode:"image"},a=(0,je.z)(this.rbdMirroringService.setSiteName(this.createBootstrapForm.getValue("siteName")),(0,W.D)(o.map(u=>this.rbdMirroringService.updatePool(u,s))),this.rbdMirroringService.createBootstrapToken(t).pipe((0,jn.b)(u=>this.createBootstrapForm.get("token").setValue(u.token)))).pipe((0,ut.Z)()),d=()=>{this.rbdMirroringService.refresh(),this.createBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/mirroring/bootstrap/create",{}),call:a}).subscribe({error:d,complete:d})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(K),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-bootstrap-create-modal"]],decls:32,vars:6,consts:function(){let _,t,o,i,s,a,d,c,u,S,N;return _="Create Bootstrap Token",t="To create a bootstrap token which can be imported by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, and click\xA0 " + "\ufffd#10\ufffd" + "Generate" + "\ufffd/#10\ufffd" + ".",o="Site Name",i="Name...",s="Pools",a="Generate",d="Token",c="Generated token...",u="Close",S="This field is required.",N="At least one pool is required.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","createBootstrapForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","siteName",1,"col-form-label","required"],o,["type","text","placeholder",i,"id","siteName","name","siteName","formControlName","siteName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["formGroupName","pools",1,"form-group"],["for","pools",1,"col-form-label","required"],s,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"mb-4","float-right",3,"form","submitAction"],a,["for","token",1,"col-form-label"],d,["placeholder",c,"id","token","formControlName","token","readonly","",1,"form-control","resize-vertical"],["source","token",1,"float-right"],[1,"modal-footer"],["name",u,3,"backAction"],[1,"invalid-feedback"],S,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],N]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,ti,2,0,"span",12),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"label",14),e.SDv(18,15),e.qZA(),e.YNc(19,oi,4,5,"div",16),e.YNc(20,ni,2,0,"span",12),e.qZA(),e.TgZ(21,"cd-submit-button",17),e.NdJ("submitAction",function(){return o.generate()}),e.SDv(22,18),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",19),e.TgZ(25,"span"),e.SDv(26,20),e.qZA(),e.qZA(),e.TgZ(27,"textarea",21),e._uU(28,"          "),e.qZA(),e.qZA(),e._UZ(29,"cd-copy-2-clipboard-button",22),e.qZA(),e.TgZ(30,"div",23),e.TgZ(31,"cd-back-button",24),e.NdJ("backAction",function(){return o.activeModal.close()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.createBootstrapForm),e.xp6(11),e.Q6J("ngIf",o.createBootstrapForm.showError("siteName",i,"required")),e.xp6(4),e.Q6J("ngForOf",o.pools),e.xp6(1),e.Q6J("ngIf",o.createBootstrapForm.showError("pools",i,"requirePool")),e.xp6(1),e.Q6J("form",o.createBootstrapForm)}},directives:[R.z,r._Y,r.JL,v.V,r.sg,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.O5,r.x0,l.sg,Wn.w,Je.s,ei.W,r.Wl],styles:[".form-group.ng-invalid[_ngcontent-%COMP%]   .invalid-feedback[_ngcontent-%COMP%]{display:block}"]}),n})();function _i(n,_){1&n&&(e.TgZ(0,"span",26),e.SDv(1,27),e.qZA())}function si(n,_){if(1&n&&(e.TgZ(0,"option",28),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t.key),e.xp6(1),e.Oqu(t.desc)}}function ai(n,_){if(1&n&&(e.TgZ(0,"div",29),e._UZ(1,"input",30),e.TgZ(2,"label",31),e._uU(3),e.qZA(),e.qZA()),2&n){const t=_.$implicit;e.xp6(1),e.s9C("id",t.name),e.s9C("name",t.name),e.s9C("formControlName",t.name),e.xp6(1),e.s9C("for",t.name),e.xp6(1),e.Oqu(t.name)}}function ri(n,_){1&n&&(e.TgZ(0,"span",26),e.SDv(1,32),e.qZA())}function li(n,_){1&n&&(e.TgZ(0,"span",26),e.SDv(1,33),e.qZA())}function ci(n,_){1&n&&(e.TgZ(0,"span",26),e.SDv(1,34),e.qZA())}let di=(()=>{class n{constructor(t,o,i,s){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=s,this.pools=[],this.directions=[{key:"rx-tx",desc:"Bidirectional"},{key:"rx",desc:"Unidirectional (receive-only)"}],this.createForm()}createForm(){this.importBootstrapForm=new M.d({siteName:new r.NI("",{validators:[r.kI.required]}),direction:new r.NI("rx-tx",{}),pools:new r.cw({},{validators:[this.validatePools()]}),token:new r.NI("",{validators:[r.kI.required,this.validateToken()]})})}ngOnInit(){this.rbdMirroringService.getSiteName().subscribe(t=>{this.importBootstrapForm.get("siteName").setValue(t.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.pools=t.content_data.pools.reduce((s,a)=>(s.push({name:a.name,mirror_mode:a.mirror_mode}),s),[]);const i=this.importBootstrapForm.get("pools");C().each(this.pools,s=>{const a=s.name,d="disabled"===s.mirror_mode,c=i.controls[a];c?d&&c.disabled?c.enable():!d&&c.enabled&&(c.disable(),c.setValue(!0)):i.addControl(a,new r.NI({value:!d,disabled:!d}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return t=>{let o=0;return C().each(t.controls,i=>{!0===i.value&&++o}),o>0?null:{requirePool:!0}}}validateToken(){return t=>{try{if(JSON.parse(atob(t.value)))return null}catch(o){}return{invalidToken:!0}}}import(){const t=[],o=[],i=this.importBootstrapForm.get("pools");C().each(i.controls,(u,S)=>{!0===u.value&&(t.push(S),u.disabled||o.push(S))});const s={mirror_mode:"image"};let a=(0,je.z)(this.rbdMirroringService.setSiteName(this.importBootstrapForm.getValue("siteName")),(0,W.D)(o.map(u=>this.rbdMirroringService.updatePool(u,s))));a=t.reduce((u,S)=>(0,je.z)(u,this.rbdMirroringService.importBootstrapToken(S,this.importBootstrapForm.getValue("direction"),this.importBootstrapForm.getValue("token"))),a).pipe((0,ut.Z)());const d=()=>{this.rbdMirroringService.refresh(),this.importBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/mirroring/bootstrap/import",{}),call:a}).subscribe({error:d,complete:()=>{d(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(D.p4),e.Y36(K),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-bootstrap-import-modal"]],decls:36,vars:10,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P;return _="Import Bootstrap Token",t="To import a bootstrap token which was created by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, provide the generated token, and click\xA0" + "\ufffd#10\ufffd" + "Import" + "\ufffd/#10\ufffd" + ".",o="Site Name",i="Name...",s="Direction",a="Pools",d="Token",c="Generated token...",u="This field is required.",S="At least one pool is required.",N="This field is required.",P="The token is invalid.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","importBootstrapForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","siteName",1,"col-form-label","required"],o,["type","text","placeholder",i,"id","siteName","name","siteName","formControlName","siteName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","direction",1,"col-form-label"],s,["id","direction","name","direction","formControlName","direction",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["formGroupName","pools",1,"form-group"],["for","pools",1,"col-form-label","required"],a,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],["for","token",1,"col-form-label","required"],d,["placeholder",c,"id","token","formControlName","token",1,"form-control","resize-vertical"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],u,[3,"value"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],S,N,P]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,_i,2,0,"span",12),e.qZA(),e.TgZ(16,"div",8),e.TgZ(17,"label",13),e.TgZ(18,"span"),e.SDv(19,14),e.qZA(),e.qZA(),e.TgZ(20,"select",15),e.YNc(21,si,2,2,"option",16),e.qZA(),e.qZA(),e.TgZ(22,"div",17),e.TgZ(23,"label",18),e.SDv(24,19),e.qZA(),e.YNc(25,ai,4,5,"div",20),e.YNc(26,ri,2,0,"span",12),e.qZA(),e.TgZ(27,"div",8),e.TgZ(28,"label",21),e.SDv(29,22),e.qZA(),e.TgZ(30,"textarea",23),e._uU(31,"          "),e.qZA(),e.YNc(32,li,2,0,"span",12),e.YNc(33,ci,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(34,"div",24),e.TgZ(35,"cd-form-button-panel",25),e.NdJ("submitActionEvent",function(){return o.import()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.importBootstrapForm),e.xp6(11),e.Q6J("ngIf",o.importBootstrapForm.showError("siteName",i,"required")),e.xp6(6),e.Q6J("ngForOf",o.directions),e.xp6(4),e.Q6J("ngForOf",o.pools),e.xp6(1),e.Q6J("ngIf",o.importBootstrapForm.showError("pools",i,"requirePool")),e.xp6(6),e.Q6J("ngIf",o.importBootstrapForm.showError("token",i,"required")),e.xp6(1),e.Q6J("ngIf",o.importBootstrapForm.showError("token",i,"invalidToken")),e.xp6(2),e.Q6J("form",o.importBootstrapForm)("submitText",o.actionLabels.SUBMIT)}},directives:[R.z,r._Y,r.JL,v.V,r.sg,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.O5,r.EJ,l.sg,r.x0,O.p,r.YN,r.Kr,r.Wl],styles:[""]}),n})(),pi=(()=>{class n{constructor(t,o,i,s){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=s,this.createForm()}createForm(){this.editSiteNameForm=new M.d({siteName:new r.NI("",{})})}ngOnInit(){this.editSiteNameForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(t=>{this.editSiteNameForm.get("siteName").setValue(t.site_name)})}update(){this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/mirroring/site_name/edit",{}),call:this.rbdMirroringService.setSiteName(this.editSiteNameForm.getValue("siteName"))}).subscribe({error:()=>this.editSiteNameForm.setErrors({cdSubmitButton:!0}),complete:()=>{this.rbdMirroringService.refresh(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(D.p4),e.Y36(K),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-edit-site-mode-modal"]],decls:17,vars:4,consts:function(){let _,t,o,i;return _="Edit site name",t="Edit the site name and click\xA0 " + "\ufffd#10\ufffd" + "Update" + "\ufffd/#10\ufffd" + ".",o="Site Name",i="Name...",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","editSiteNameForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","siteName",1,"col-form-label","required"],o,["type","text","placeholder",i,"id","siteName","name","siteName","formControlName","siteName","autofocus","",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.qZA(),e.qZA(),e.TgZ(15,"div",12),e.TgZ(16,"cd-form-button-panel",13),e.NdJ("submitActionEvent",function(){return o.update()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.editSiteNameForm),e.xp6(12),e.Q6J("form",o.editSiteNameForm)("submitText",o.actionLabels.UPDATE))},directives:[R.z,r._Y,r.JL,v.V,r.sg,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,O.p],styles:[""]}),n})();var U=p(69158),gi=p(58111);let We=(()=>{class n{transform(t){return"warning"===t?"badge badge-warning":"error"===t?"badge badge-danger":"success"===t?"badge badge-success":"badge badge-info"}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"mirrorHealthColor",type:n,pure:!0}),n})();const ui=["healthTmpl"];function mi(n,_){if(1&n&&(e.TgZ(0,"span",2),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=_.value;e.Q6J("ngClass",e.lcZ(1,2,_.row.health_color)),e.xp6(2),e.Oqu(o)}}let Ti=(()=>{class n{constructor(t,o){this.rbdMirroringService=t,this.cephShortVersionPipe=o,this.tableStatus=new U.E}ngOnInit(){this.columns=[{prop:"instance_id",name:"Instance",flexGrow:2},{prop:"id",name:"ID",flexGrow:2},{prop:"server_hostname",name:"Hostname",flexGrow:2},{prop:"version",name:"Version",pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:"Health",cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.data=t.content_data.daemons,this.tableStatus=new U.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(K),e.Y36(gi.F))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-daemons"]],viewQuery:function(t,o){if(1&t&&e.Gf(ui,7),2&t){let i;e.iGM(i=e.CRH())&&(o.healthTmpl=i.first)}},decls:3,vars:4,consts:[["columnMode","flex",3,"data","columns","autoReload","status","fetchData"],["healthTmpl",""],[3,"ngClass"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()}),e.qZA(),e.YNc(1,mi,3,4,"ng-template",null,1,e.W1O)),2&t&&e.Q6J("data",o.data)("columns",o.columns)("autoReload",-1)("status",o.tableStatus)},directives:[ee.a,l.mk],pipes:[We],styles:[""]}),n})();var fi=p(18891);class Ci{}function Si(n,_){if(1&n&&(e.TgZ(0,"option",16),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t.id),e.xp6(1),e.Oqu(t.name)}}function Ei(n,_){1&n&&(e.TgZ(0,"span",17),e.SDv(1,18),e.qZA())}let Ri=(()=>{class n{constructor(t,o,i,s){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=s,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:"Disabled"},{id:"pool",name:"Pool"},{id:"image",name:"Image"}],this.createForm()}createForm(){this.editModeForm=new M.d({mirrorMode:new r.NI("",{validators:[r.kI.required,this.validateMode.bind(this)]})})}ngOnInit(){this.pattern=`${this.poolName}`,this.rbdMirroringService.getPool(this.poolName).subscribe(t=>{this.setResponse(t)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.peerExists=!1;const i=t.content_data.pools.find(s=>this.poolName===s.name);this.peerExists=i&&i.peer_uuids.length})}ngOnDestroy(){this.subs.unsubscribe()}validateMode(t){return"disabled"===t.value&&this.peerExists?{cannotDisable:{value:t.value}}:null}setResponse(t){this.editModeForm.get("mirrorMode").setValue(t.mirror_mode)}update(){const t=new Ci;t.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,t)}).subscribe({error:()=>this.editModeForm.setErrors({cdSubmitButton:!0}),complete:()=>{this.rbdMirroringService.refresh(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(D.p4),e.Y36(K),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-pool-edit-mode-modal"]],decls:21,vars:7,consts:function(){let _,t,o,i;return _="Edit pool mirror mode",t="To edit the mirror mode for pool\xA0 " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd0\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ", select a new mode from the list and click\xA0 " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Update" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ".",t=e.Zx4(t),o="Mode",i="Peer clusters must be removed prior to disabling mirror.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","editModeForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","mirrorMode",1,"col-form-label"],o,["id","mirrorMode","name","mirrorMode","formControlName","mirrorMode",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],i]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"label",9),e.TgZ(14,"span"),e.SDv(15,10),e.qZA(),e.qZA(),e.TgZ(16,"select",11),e.YNc(17,Si,2,2,"option",12),e.qZA(),e.YNc(18,Ei,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(19,"div",14),e.TgZ(20,"cd-form-button-panel",15),e.NdJ("submitActionEvent",function(){return o.update()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.editModeForm),e.xp6(7),e.pQV(o.poolName),e.QtT(9),e.xp6(6),e.Q6J("ngForOf",o.mirrorModes),e.xp6(1),e.Q6J("ngIf",o.editModeForm.showError("mirrorMode",i,"cannotDisable")),e.xp6(2),e.Q6J("form",o.editModeForm)("submitText",o.actionLabels.UPDATE)}},directives:[R.z,r._Y,r.JL,v.V,r.sg,g.P,f.o,r.EJ,h.b,r.JJ,r.u,l.sg,l.O5,O.p,r.YN,r.Kr],styles:[""]}),n})();class Mi{}function Oi(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,25),e.qZA())}function Ai(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,26),e.qZA())}function hi(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,27),e.qZA())}function Pi(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,28),e.qZA())}function Ii(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,29),e.qZA())}function bi(n,_){1&n&&(e.TgZ(0,"span",24),e.SDv(1,30),e.qZA())}let Ni=(()=>{class n{constructor(t,o,i,s){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=s,this.bsConfig={containerClass:"theme-default"},this.createForm()}createForm(){this.editPeerForm=new M.d({clusterName:new r.NI("",{validators:[r.kI.required,this.validateClusterName]}),clientID:new r.NI("",{validators:[r.kI.required,this.validateClientID]}),monAddr:new r.NI("",{validators:[this.validateMonAddr]}),key:new r.NI("",{validators:[this.validateKey]})})}ngOnInit(){this.pattern=`${this.poolName}/${this.peerUUID}`,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(t=>{this.setResponse(t)})}validateClusterName(t){if(!t.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:t.value}}}validateClientID(t){if(!t.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:t.value}}}validateMonAddr(t){if(!t.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:t.value}}}validateKey(t){try{if(""===t.value||atob(t.value))return null}catch(o){}return{invalidKey:{value:t.value}}}setResponse(t){this.response=t,this.editPeerForm.get("clusterName").setValue(t.cluster_name),this.editPeerForm.get("clientID").setValue(t.client_id),this.editPeerForm.get("monAddr").setValue(t.mon_host),this.editPeerForm.get("key").setValue(t.key)}update(){const t=new Mi;let o;t.cluster_name=this.editPeerForm.getValue("clusterName"),t.client_id=this.editPeerForm.getValue("clientID"),t.mon_host=this.editPeerForm.getValue("monAddr"),t.key=this.editPeerForm.getValue("key"),o=this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new F.R("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,t)}:{task:new F.R("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,t)}),o.subscribe({error:()=>this.editPeerForm.setErrors({cdSubmitButton:!0}),complete:()=>{this.rbdMirroringService.refresh(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(D.p4),e.Y36(K),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-pool-edit-peer-modal"]],decls:38,vars:13,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P,$,G,X,J,te,A;return _="{VAR_SELECT, select, edit {Edit} other {Add}}",_=e.Zx4(_,{VAR_SELECT:"\ufffd0\ufffd"}),t="" + _ + " pool mirror peer",o="{VAR_SELECT, select, edit {Edit} other {Add}}",o=e.Zx4(o,{VAR_SELECT:"\ufffd0\ufffd"}),i="" + o + " the pool mirror peer attributes for pool " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + " and click " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Submit" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ".",i=e.Zx4(i),s="Cluster Name",a="Name...",d="CephX ID",c="CephX ID...",u="Monitor Addresses",S="Comma-delimited addresses...",N="CephX Key",P="Base64-encoded key...",$="This field is required.",G="The cluster name is not valid.",X="This field is required.",J="The CephX ID is not valid.",te="The monitory address is not valid.",A="CephX key must be base64 encoded.",[[3,"modalRef"],[1,"modal-title"],t,[1,"modal-content"],["name","editPeerForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],i,[1,"form-group"],["for","clusterName",1,"col-form-label","required"],s,["type","text","placeholder",a,"id","clusterName","name","clusterName","formControlName","clusterName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","clientID",1,"col-form-label","required"],d,["type","text","placeholder",c,"id","clientID","name","clientID","formControlName","clientID",1,"form-control"],["for","monAddr",1,"col-form-label"],u,["type","text","placeholder",S,"id","monAddr","name","monAddr","formControlName","monAddr",1,"form-control"],["for","key",1,"col-form-label"],N,["type","text","placeholder",P,"id","key","name","key","formControlName","key",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],$,G,X,J,te,A]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.TgZ(8,"span"),e.tHW(9,7),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"label",9),e.SDv(14,10),e.qZA(),e._UZ(15,"input",11),e.YNc(16,Oi,2,0,"span",12),e.YNc(17,Ai,2,0,"span",12),e.qZA(),e.TgZ(18,"div",8),e.TgZ(19,"label",13),e.SDv(20,14),e.qZA(),e._UZ(21,"input",15),e.YNc(22,hi,2,0,"span",12),e.YNc(23,Pi,2,0,"span",12),e.qZA(),e.TgZ(24,"div",8),e.TgZ(25,"label",16),e.TgZ(26,"span"),e.SDv(27,17),e.qZA(),e.qZA(),e._UZ(28,"input",18),e.YNc(29,Ii,2,0,"span",12),e.qZA(),e.TgZ(30,"div",8),e.TgZ(31,"label",19),e.TgZ(32,"span"),e.SDv(33,20),e.qZA(),e.qZA(),e._UZ(34,"input",21),e.YNc(35,bi,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(36,"div",22),e.TgZ(37,"cd-form-button-panel",23),e.NdJ("submitActionEvent",function(){return o.update()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.mode),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.editPeerForm),e.xp6(7),e.pQV(o.mode)(o.poolName),e.QtT(9),e.xp6(5),e.Q6J("ngIf",o.editPeerForm.showError("clusterName",i,"required")),e.xp6(1),e.Q6J("ngIf",o.editPeerForm.showError("clusterName",i,"invalidClusterName")),e.xp6(5),e.Q6J("ngIf",o.editPeerForm.showError("clientID",i,"required")),e.xp6(1),e.Q6J("ngIf",o.editPeerForm.showError("clientID",i,"invalidClientID")),e.xp6(6),e.Q6J("ngIf",o.editPeerForm.showError("monAddr",i,"invalidMonAddr")),e.xp6(6),e.Q6J("ngIf",o.editPeerForm.showError("key",i,"invalidKey")),e.xp6(2),e.Q6J("form",o.editPeerForm)("submitText",o.actionLabels.SUBMIT)}},directives:[R.z,r._Y,r.JL,v.V,r.sg,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.O5,O.p],styles:[""]}),n})();const Di=["healthTmpl"];function vi(n,_){if(1&n&&(e.TgZ(0,"span",3),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=_.value;e.Q6J("ngClass",e.lcZ(1,2,_.row.health_color)),e.xp6(2),e.Oqu(o)}}let Li=(()=>{class n{constructor(t,o,i,s){this.authStorageService=t,this.rbdMirroringService=o,this.modalService=i,this.taskWrapper=s,this.selection=new Ee.r,this.tableStatus=new U.E,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;const a={permission:"update",icon:T.P.edit,click:()=>this.editModeModal(),name:"Edit Mode",canBePrimary:()=>!0},d={permission:"create",icon:T.P.add,name:"Add Peer",click:()=>this.editPeersModal("add"),disable:()=>!this.selection.first()||"disabled"===this.selection.first().mirror_mode,visible:()=>!this.getPeerUUID(),canBePrimary:()=>!1},c={permission:"update",icon:T.P.exchange,name:"Edit Peer",click:()=>this.editPeersModal("edit"),visible:()=>!!this.getPeerUUID()},u={permission:"delete",icon:T.P.destroy,name:"Delete Peer",click:()=>this.deletePeersModal(),visible:()=>!!this.getPeerUUID()};this.tableActions=[a,d,c,u]}ngOnInit(){this.columns=[{prop:"name",name:"Name",flexGrow:2},{prop:"mirror_mode",name:"Mode",flexGrow:2},{prop:"leader_id",name:"Leader",flexGrow:2},{prop:"image_local_count",name:"# Local",flexGrow:2},{prop:"image_remote_count",name:"# Remote",flexGrow:2},{prop:"health",name:"Health",cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.data=t.content_data.pools,this.tableStatus=new U.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}editModeModal(){const t={poolName:this.selection.first().name};this.modalRef=this.modalService.show(Ri,t)}editPeersModal(t){const o={poolName:this.selection.first().name,mode:t};"edit"===t&&(o.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(Ni,o)}deletePeersModal(){const t=this.selection.first().name,o=this.getPeerUUID();this.modalRef=this.modalService.show(he.M,{itemDescription:"mirror peer",itemNames:[`${t} (${o})`],submitActionObservable:()=>new fi.y(i=>{this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/mirroring/peer/delete",{pool_name:t}),call:this.rbdMirroringService.deletePeer(t,o)}).subscribe({error:s=>i.error(s),complete:()=>{this.rbdMirroringService.refresh(),i.complete()}})})})}getPeerUUID(){const t=this.selection.first(),o=this.data.find(i=>t&&t.name===i.name);if(o&&o.peer_uuids)return o.peer_uuids[0]}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(K),e.Y36(re.Z),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-pools"]],viewQuery:function(t,o){if(1&t&&e.Gf(Di,7),2&t){let i;e.iGM(i=e.CRH())&&(o.healthTmpl=i.first)}},decls:4,vars:7,consts:[["columnMode","flex","identifier","name","forceIdentifier","true","selectionType","single",3,"data","columns","autoReload","status","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["healthTmpl",""],[3,"ngClass"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()})("updateSelection",function(s){return o.updateSelection(s)}),e._UZ(1,"cd-table-actions",1),e.qZA(),e.YNc(2,vi,3,4,"ng-template",null,2,e.W1O)),2&t&&(e.Q6J("data",o.data)("columns",o.columns)("autoReload",-1)("status",o.tableStatus),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[ee.a,Re.K,l.mk],pipes:[We],styles:[""]}),n})();var mt=p(59376);const Fi=["stateTmpl"],$i=["syncTmpl"],Zi=["progressTmpl"];function Bi(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",14),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_error.data)("columns",t.image_error.columns)("autoReload",-1)("status",t.tableStatus)}}function Gi(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",14),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_syncing.data)("columns",t.image_syncing.columns)("autoReload",-1)("status",t.tableStatus)}}function yi(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",14),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_ready.data)("columns",t.image_ready.columns)("autoReload",-1)("status",t.tableStatus)}}function xi(n,_){if(1&n&&(e.TgZ(0,"span",15),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=_.value;e.Q6J("ngClass",e.lcZ(1,2,_.row.state_color)),e.xp6(2),e.Oqu(o)}}function wi(n,_){1&n&&(e.TgZ(0,"span",16),e.SDv(1,17),e.qZA())}function qi(n,_){1&n&&e._UZ(0,"ngb-progressbar",18),2&n&&e.Q6J("value",_.value)("showValue",!0)}let Hi=(()=>{class n{constructor(t){this.rbdMirroringService=t,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}},this.tableStatus=new U.E}ngOnInit(){this.image_error.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"description",name:"Issue",flexGrow:4},{prop:"state",name:"State",cellTemplate:this.stateTmpl,flexGrow:1}],this.image_syncing.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"progress",name:"Progress",cellTemplate:this.progressTmpl,flexGrow:2},{prop:"state",name:"State",cellTemplate:this.syncTmpl,flexGrow:1}],this.image_ready.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"description",name:"Description",flexGrow:4},{prop:"state",name:"State",cellTemplate:this.stateTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.image_error.data=t.content_data.image_error,this.image_syncing.data=t.content_data.image_syncing,this.image_ready.data=t.content_data.image_ready,this.tableStatus=new U.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(K))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-images"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Fi,7),e.Gf($i,7),e.Gf(Zi,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.stateTmpl=i.first),e.iGM(i=e.CRH())&&(o.syncTmpl=i.first),e.iGM(i=e.CRH())&&(o.progressTmpl=i.first)}},decls:21,vars:1,consts:function(){let _,t,o,i;return _="Issues",t="Syncing",o="Ready",i="Syncing",[["ngbNav","","cdStatefulTab","image-list",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","issues"],["ngbNavLink",""],_,["ngbNavContent",""],["ngbNavItem","syncing"],t,["ngbNavItem","ready"],o,[3,"ngbNavOutlet"],["stateTmpl",""],["syncTmpl",""],["progressTmpl",""],["columnMode","flex",3,"data","columns","autoReload","status","fetchData"],[3,"ngClass"],[1,"badge","badge-info"],i,["type","info",3,"value","showValue"]]},template:function(t,o){if(1&t&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,Bi,1,4,"ng-template",5),e.qZA(),e.TgZ(6,"li",6),e.TgZ(7,"a",3),e.SDv(8,7),e.qZA(),e.YNc(9,Gi,1,4,"ng-template",5),e.qZA(),e.TgZ(10,"li",8),e.TgZ(11,"a",3),e.SDv(12,9),e.qZA(),e.YNc(13,yi,1,4,"ng-template",5),e.qZA(),e.qZA(),e._UZ(14,"div",10),e.YNc(15,xi,3,4,"ng-template",null,11,e.W1O),e.YNc(17,wi,2,0,"ng-template",null,12,e.W1O),e.YNc(19,qi,1,2,"ng-template",null,13,e.W1O)),2&t){const i=e.MAs(1);e.xp6(14),e.Q6J("ngbNavOutlet",i)}},directives:[I.Pz,mt.m,I.nv,I.Vx,I.uN,I.tO,ee.a,l.mk,I.Ly],pipes:[We],styles:[""]}),n})(),Ki=(()=>{class n{constructor(t,o,i){this.authStorageService=t,this.rbdMirroringService=o,this.modalService=i,this.selection=new Ee.r,this.peersExist=!0,this.subs=new Yn.w,this.permission=this.authStorageService.getPermissions().rbdMirroring;const s={permission:"update",icon:T.P.edit,click:()=>this.editSiteNameModal(),name:"Edit Site Name",canBePrimary:()=>!0,disable:()=>!1},a={permission:"update",icon:T.P.upload,click:()=>this.createBootstrapModal(),name:"Create Bootstrap Token",disable:()=>!1},d={permission:"update",icon:T.P.download,click:()=>this.importBootstrapModal(),name:"Import Bootstrap Token",disable:()=>this.peersExist};this.tableActions=[s,a,d]}ngOnInit(){this.subs.add(this.rbdMirroringService.startPolling()),this.subs.add(this.rbdMirroringService.subscribeSummary(t=>{this.status=t.content_data.status,this.siteName=t.site_name,this.peersExist=!!t.content_data.pools.find(o=>o.peer_uuids.length>0)}))}ngOnDestroy(){this.subs.unsubscribe()}editSiteNameModal(){this.modalRef=this.modalService.show(pi,{siteName:this.siteName})}createBootstrapModal(){this.modalRef=this.modalService.show(ii,{siteName:this.siteName})}importBootstrapModal(){this.modalRef=this.modalService.show(di,{siteName:this.siteName})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(K),e.Y36(re.Z))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring"]],decls:21,vars:4,consts:function(){let _,t,o,i;return _="Site Name:",t="Daemons",o="Pools",i="Images",[[1,"row"],[1,"col-md-12"],_,[1,"table-actions","float-right",3,"permission","selection","tableActions"],[1,"col-sm-6"],t,o,i]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"span"),e.TgZ(3,"strong"),e.SDv(4,2),e.qZA(),e._uU(5),e.qZA(),e._UZ(6,"cd-table-actions",3),e.qZA(),e.qZA(),e.TgZ(7,"div",0),e.TgZ(8,"div",4),e.TgZ(9,"legend"),e.SDv(10,5),e.qZA(),e._UZ(11,"cd-mirroring-daemons"),e.qZA(),e.TgZ(12,"div",4),e.TgZ(13,"legend"),e.SDv(14,6),e.qZA(),e._UZ(15,"cd-mirroring-pools"),e.qZA(),e.qZA(),e.TgZ(16,"div",0),e.TgZ(17,"div",1),e.TgZ(18,"legend"),e.SDv(19,7),e.qZA(),e._UZ(20,"cd-mirroring-images"),e.qZA(),e.qZA()),2&t&&(e.xp6(5),e.hij(" ",o.siteName,""),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[Re.K,Ti,Li,Hi],styles:[""]}),n})();var Tt=p(80226),ki=p(28049),Xi=p(43190),Ke=p(80842),et=p(30633),Fe=p(47557),Qi=p(28211);class zi{}var Pe=(()=>{return(n=Pe||(Pe={}))[n.V1=1]="V1",n[n.V2=2]="V2",Pe;var n})();class Ji{constructor(){this.features=[]}}class Yi{constructor(){this.features=[]}}class Ui extends class{}{constructor(){super(...arguments),this.features=[]}}class ji{constructor(){this.features=[]}}var ke=(()=>{return(n=ke||(ke={})).editing="editing",n.cloning="cloning",n.copying="copying",ke;var n})(),Wi=p(17932),e_=p(54555),t_=p(18372);function o_(n,_){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",56),e.SDv(2,57),e.ALo(3,"titlecase"),e.qZA(),e.TgZ(4,"div",12),e._UZ(5,"input",58),e._UZ(6,"hr"),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(3,1,t.action)),e.QtT(2)}}function n_(n,_){1&n&&(e.TgZ(0,"span",59),e.ynx(1),e.SDv(2,60),e.BQk(),e.qZA())}function i_(n,_){1&n&&(e.TgZ(0,"span",59),e.ynx(1),e.SDv(2,61),e.BQk(),e.qZA())}function __(n,_){1&n&&e._UZ(0,"input",62)}function s_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,65),e.qZA()),2&n&&e.Q6J("ngValue",null)}function a_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,66),e.qZA()),2&n&&e.Q6J("ngValue",null)}function r_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,67),e.qZA()),2&n&&e.Q6J("ngValue",null)}function l_(n,_){if(1&n&&(e.TgZ(0,"option",68),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function c_(n,_){if(1&n&&(e.TgZ(0,"select",63),e.YNc(1,s_,2,1,"option",64),e.YNc(2,a_,2,1,"option",64),e.YNc(3,r_,2,1,"option",64),e.YNc(4,l_,2,2,"option",44),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.pools)}}function d_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,69),e.qZA())}const p_=function(n,_){return[n,_]};function g_(n,_){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"div",20),e._UZ(2,"i",70),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(2),e.Q6J("ngClass",e.WLB(1,p_,t.icons.spinner,t.icons.spin))}}function u_(n,_){1&n&&e._UZ(0,"input",74)}function m_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,76),e.qZA()),2&n&&e.Q6J("ngValue",null)}function T_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,77),e.qZA()),2&n&&e.Q6J("ngValue",null)}function f_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,78),e.qZA()),2&n&&e.Q6J("ngValue",null)}function C_(n,_){if(1&n&&(e.TgZ(0,"option",68),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function S_(n,_){if(1&n&&(e.TgZ(0,"select",75),e.YNc(1,m_,2,1,"option",64),e.YNc(2,T_,2,1,"option",64),e.YNc(3,f_,2,1,"option",64),e.YNc(4,C_,2,2,"option",44),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.namespaces)}}function E_(n,_){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",71),e._uU(2," Namespace "),e.qZA(),e.TgZ(3,"div",12),e.YNc(4,u_,1,0,"input",72),e.YNc(5,S_,5,4,"select",73),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngIf","editing"===t.mode||!t.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==t.mode&&t.poolPermission.read)}}function R_(n,_){1&n&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"span"),e.SDv(2,79),e.qZA(),e.qZA())}function M_(n,_){1&n&&e._UZ(0,"input",85)}function O_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,87),e.qZA()),2&n&&e.Q6J("ngValue",null)}function A_(n,_){1&n&&(e.TgZ(0,"option",48),e.SDv(1,88),e.qZA()),2&n&&e.Q6J("ngValue",null)}function h_(n,_){1&n&&(e.TgZ(0,"option",48),e._uU(1,"-- Select a data pool -- "),e.qZA()),2&n&&e.Q6J("ngValue",null)}function P_(n,_){if(1&n&&(e.TgZ(0,"option",68),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function I_(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"select",86),e.NdJ("change",function(i){return e.CHM(t),e.oxw(3).onDataPoolChange(i.target.value)}),e.YNc(1,O_,2,1,"option",64),e.YNc(2,A_,2,1,"option",64),e.YNc(3,h_,2,1,"option",64),e.YNc(4,P_,2,2,"option",44),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngIf",null===t.dataPools),e.xp6(1),e.Q6J("ngIf",null!==t.dataPools&&0===t.dataPools.length),e.xp6(1),e.Q6J("ngIf",null!==t.dataPools&&t.dataPools.length>0),e.xp6(1),e.Q6J("ngForOf",t.dataPools)}}function b_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,89),e.qZA())}const Xe=function(n){return{required:n}};function N_(n,_){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",80),e.TgZ(2,"span",70),e.SDv(3,81),e.qZA(),e._UZ(4,"cd-helper",82),e.qZA(),e.TgZ(5,"div",12),e.YNc(6,M_,1,0,"input",83),e.YNc(7,I_,5,4,"select",84),e.YNc(8,b_,2,0,"span",14),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(4,Xe,"editing"!==o.mode)),e.xp6(4),e.Q6J("ngIf","editing"===o.mode||!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("dataPool",t,"required"))}}function D_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,90),e.qZA())}function v_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,91),e.qZA())}function L_(n,_){if(1&n&&e._UZ(0,"cd-helper",95),2&n){const t=e.oxw().$implicit;e.s9C("html",t.helperHtml)}}function F_(n,_){if(1&n&&(e.TgZ(0,"div",21),e._UZ(1,"input",92),e.TgZ(2,"label",93),e._uU(3),e.qZA(),e.YNc(4,L_,1,1,"cd-helper",94),e.qZA()),2&n){const t=_.$implicit;e.xp6(1),e.s9C("id",t.key),e.s9C("name",t.key),e.s9C("formControlName",t.key),e.xp6(1),e.s9C("for",t.key),e.xp6(1),e.Oqu(t.desc),e.xp6(1),e.Q6J("ngIf",t.helperHtml)}}function $_(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"a",96),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).advancedEnabled=!0,!1}),e.SDv(1,97),e.qZA()}}function Z_(n,_){if(1&n&&(e.TgZ(0,"option",68),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function B_(n,_){if(1&n&&(e.TgZ(0,"option",68),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function G_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,98),e.qZA())}function y_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,99),e.qZA())}function x_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,100),e.qZA())}function w_(n,_){1&n&&(e.TgZ(0,"span",59),e.SDv(1,101),e.qZA())}function q_(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.YNc(9,o_,7,3,"div",8),e.TgZ(10,"div",9),e.TgZ(11,"label",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.YNc(15,n_,3,0,"span",14),e.YNc(16,i_,3,0,"span",14),e.qZA(),e.qZA(),e.TgZ(17,"div",15),e.NdJ("change",function(i){return e.CHM(t),e.oxw().onPoolChange(i.target.value)}),e.TgZ(18,"label",16),e.SDv(19,17),e.qZA(),e.TgZ(20,"div",12),e.YNc(21,__,1,0,"input",18),e.YNc(22,c_,5,4,"select",19),e.YNc(23,d_,2,0,"span",14),e.qZA(),e.qZA(),e.YNc(24,g_,3,4,"div",8),e.YNc(25,E_,6,2,"div",8),e.TgZ(26,"div",9),e.TgZ(27,"div",20),e.TgZ(28,"div",21),e.TgZ(29,"input",22),e.NdJ("change",function(){return e.CHM(t),e.oxw().onUseDataPoolChange()}),e.qZA(),e.TgZ(30,"label",23),e.SDv(31,24),e.qZA(),e.YNc(32,R_,3,0,"cd-helper",25),e.qZA(),e.qZA(),e.qZA(),e.YNc(33,N_,9,6,"div",8),e.TgZ(34,"div",9),e.TgZ(35,"label",26),e.SDv(36,27),e.qZA(),e.TgZ(37,"div",12),e._UZ(38,"input",28),e.YNc(39,D_,2,0,"span",14),e.YNc(40,v_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(41,"div",29),e.TgZ(42,"label",30),e.SDv(43,31),e.qZA(),e.TgZ(44,"div",12),e.YNc(45,F_,5,6,"div",32),e.qZA(),e.qZA(),e.TgZ(46,"div",33),e.TgZ(47,"div",34),e.YNc(48,$_,2,0,"a",35),e.qZA(),e.qZA(),e.TgZ(49,"div",36),e.TgZ(50,"legend",37),e.SDv(51,38),e.qZA(),e.TgZ(52,"div",39),e.TgZ(53,"h4",37),e.SDv(54,40),e.qZA(),e.TgZ(55,"div",9),e.TgZ(56,"label",41),e.SDv(57,42),e.qZA(),e.TgZ(58,"div",12),e.TgZ(59,"select",43),e.YNc(60,Z_,2,2,"option",44),e.qZA(),e.qZA(),e.qZA(),e.TgZ(61,"div",9),e.TgZ(62,"label",45),e.SDv(63,46),e.qZA(),e.TgZ(64,"div",12),e.TgZ(65,"select",47),e.TgZ(66,"option",48),e.SDv(67,49),e.qZA(),e.YNc(68,B_,2,2,"option",44),e.qZA(),e.YNc(69,G_,2,0,"span",14),e.YNc(70,y_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(71,"div",9),e.TgZ(72,"label",50),e.SDv(73,51),e.qZA(),e.TgZ(74,"div",12),e._UZ(75,"input",52),e.YNc(76,x_,2,0,"span",14),e.YNc(77,w_,2,0,"span",14),e.qZA(),e.qZA(),e.qZA(),e.TgZ(78,"cd-rbd-configuration-form",53),e.NdJ("changes",function(i){return e.CHM(t),e.oxw().getDirtyConfigurationValues=i}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(79,"div",54),e.TgZ(80,"cd-form-button-panel",55),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.ALo(81,"titlecase"),e.ALo(82,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.rbdForm),e.xp6(6),e.pQV(e.lcZ(6,32,o.action))(e.lcZ(7,34,o.resource)),e.QtT(5),e.xp6(2),e.Q6J("ngIf",o.rbdForm.getValue("parent")),e.xp6(6),e.Q6J("ngIf",o.rbdForm.showError("name",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("name",t,"pattern")),e.xp6(2),e.Q6J("ngClass",e.VKq(40,Xe,"editing"!==o.mode)),e.xp6(3),e.Q6J("ngIf","editing"===o.mode||!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("pool",t,"required")),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.rbdForm.getValue("pool")&&null===o.namespaces),e.xp6(1),e.Q6J("ngIf","editing"===o.mode&&o.rbdForm.getValue("namespace")||"editing"!==o.mode&&(o.namespaces&&o.namespaces.length>0||!o.poolPermission.read)),e.xp6(7),e.Q6J("ngIf",o.allDataPools.length<=1),e.xp6(1),e.Q6J("ngIf",o.rbdForm.getValue("useDataPool")),e.xp6(6),e.Q6J("ngIf",o.rbdForm.showError("size",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("size",t,"invalidSizeObject")),e.xp6(5),e.Q6J("ngForOf",o.featuresList),e.xp6(3),e.Q6J("ngIf",!o.advancedEnabled),e.xp6(1),e.Q6J("hidden",!o.advancedEnabled),e.xp6(11),e.Q6J("ngForOf",o.objectSizes),e.xp6(2),e.Q6J("ngClass",e.VKq(42,Xe,o.rbdForm.getValue("stripingCount"))),e.xp6(4),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.objectSizes),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingUnit",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingUnit",t,"invalidStripingUnit")),e.xp6(2),e.Q6J("ngClass",e.VKq(44,Xe,o.rbdForm.getValue("stripingUnit"))),e.xp6(4),e.Q6J("ngIf",o.rbdForm.showError("stripingCount",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingCount",t,"min")),e.xp6(1),e.Q6J("form",o.rbdForm)("initializeData",o.initializeConfigData),e.xp6(2),e.Q6J("form",t)("submitText",e.lcZ(81,36,o.action)+" "+e.lcZ(82,38,o.resource))}}let $e=(()=>{class n extends q.E{constructor(t,o,i,s,a,d,c,u,S){super(),this.authStorageService=t,this.route=o,this.poolService=i,this.rbdService=s,this.formatter=a,this.taskWrapper=d,this.dimlessBinaryPipe=c,this.actionLabels=u,this.router=S,this.namespaces=[],this.namespacesByPoolCache={},this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=[],this.featuresList=[],this.initializeConfigData=new Tt.t(1),this.advancedEnabled=!1,this.rbdFormMode=ke,this.defaultObjectSize="4 MiB",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.rbdImage=new Tt.t(1),this.icons=T.P,this.routerUrl=this.router.url,this.poolPermission=this.authStorageService.getPermissions().pool,this.resource="RBD",this.features={"deep-flatten":{desc:"Deep flatten",requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:"Layering",requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:"Exclusive lock",requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:"Object map (requires exclusive-lock)",requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},journaling:{desc:"Journaling (requires exclusive-lock)",requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:"Fast diff (interlocked with object-map)",requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}objToArray(t){return C().map(t,(o,i)=>Object.assign(o,{key:i}))}createForm(){this.rbdForm=new M.d({parent:new r.NI(""),name:new r.NI("",{validators:[r.kI.required,r.kI.pattern(/^[^@/]+?$/)]}),pool:new r.NI(null,{validators:[r.kI.required]}),namespace:new r.NI(null),useDataPool:new r.NI(!1),dataPool:new r.NI(null),size:new r.NI(null,{updateOn:"blur"}),obj_size:new r.NI(this.defaultObjectSize),features:new M.d(this.featuresList.reduce((t,o)=>(t[o.key]=new r.NI({value:!1,disabled:!!o.initDisabled}),t),{})),stripingUnit:new r.NI(null),stripingCount:new r.NI(null,{updateOn:"blur"})},this.validateRbdForm(this.formatter))}disableForEdit(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("namespace").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable(),this.rbdImage.subscribe(t=>{t.image_format===Pe.V1&&(this.rbdForm.get("deep-flatten").disable(),this.rbdForm.get("layering").disable(),this.rbdForm.get("exclusive-lock").disable())})}disableForClone(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}disableForCopy(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}ngOnInit(){this.prepareFormForAction(),this.gatherNeededData().subscribe(this.handleExternalData.bind(this))}prepareFormForAction(){const t=this.routerUrl;t.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):t.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):t.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,C().each(this.features,o=>{this.rbdForm.get("features").get(o.key).valueChanges.subscribe(i=>this.featureFormUpdate(o.key,i))})}gatherNeededData(){const t={};return this.mode?this.route.params.subscribe(o=>{const i=Z.N.fromString(decodeURIComponent(o.image_spec));o.snap&&(this.snapName=decodeURIComponent(o.snap)),t.rbd=this.rbdService.get(i)}):t.defaultFeatures=this.rbdService.defaultFeatures(),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&(t.pools=this.poolService.list(["pool_name","type","flags_names","application_metadata"])),(0,W.D)(t)}handleExternalData(t){if(this.handlePoolData(t.pools),t.defaultFeatures&&this.setFeatures(t.defaultFeatures),t.rbd){const o=t.rbd;this.setResponse(o,this.snapName),this.rbdImage.next(o)}this.loadingReady()}handlePoolData(t){if(!t)return;const o=[],i=[];for(const s of t)this.rbdService.isRBDPool(s)&&("replicated"===s.type?(o.push(s),i.push(s)):"erasure"===s.type&&-1!==s.flags_names.indexOf("ec_overwrites")&&i.push(s));if(this.pools=o,this.allPools=o,this.dataPools=i,this.allDataPools=i,1===this.pools.length){const s=this.pools[0].pool_name;this.rbdForm.get("pool").setValue(s),this.onPoolChange(s)}this.allDataPools.length<=1&&this.rbdForm.get("useDataPool").disable()}onPoolChange(t){const o=this.rbdForm.get("dataPool");o.value===t&&o.setValue(null),this.dataPools=this.allDataPools?this.allDataPools.filter(i=>i.pool_name!==t):[],this.namespaces=null,t in this.namespacesByPoolCache?this.namespaces=this.namespacesByPoolCache[t]:this.rbdService.listNamespaces(t).subscribe(i=>{i=i.map(s=>s.namespace),this.namespacesByPoolCache[t]=i,this.namespaces=i}),this.rbdForm.get("namespace").setValue(null)}onUseDataPoolChange(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))}onDataPoolChange(t){const o=this.allPools.filter(i=>i.pool_name!==t);this.rbdForm.getValue("pool")===t&&this.rbdForm.get("pool").setValue(null),this.pools=o}validateRbdForm(t){return o=>{const i=o.get("useDataPool"),s=o.get("dataPool");let a=null;i.value&&null==s.value&&(a={required:!0}),s.setErrors(a);const d=o.get("size"),c=o.get("obj_size"),u=t.toBytes(null!=c.value?c.value:this.defaultObjectSize),S=o.get("stripingCount"),N=null!=S.value?S.value:1;let P=null;null===d.value?P={required:!0}:N*u>t.toBytes(d.value)&&(P={invalidSizeObject:!0}),d.setErrors(P);const $=o.get("stripingUnit");let G=null;null===$.value&&null!==S.value?G={required:!0}:null!==$.value&&t.toBytes($.value)>u&&(G={invalidStripingUnit:!0}),$.setErrors(G);let X=null;return null===S.value&&null!==$.value?X={required:!0}:N<1&&(X={min:!0}),S.setErrors(X),null}}deepBoxCheck(t,o){this.getDependentChildFeatures(t).forEach(s=>{const a=this.rbdForm.get(s.key);o?a.enable({emitEvent:!1}):(a.disable({emitEvent:!1}),a.setValue(!1,{emitEvent:!1}),this.deepBoxCheck(s.key,o));const d=this.rbdForm.get("features");this.mode===this.rbdFormMode.editing&&d.get(s.key).enabled&&(-1!==this.response.features_name.indexOf(s.key)&&!s.allowDisable||-1===this.response.features_name.indexOf(s.key)&&!s.allowEnable)&&d.get(s.key).disable()})}getDependentChildFeatures(t){return C().filter(this.features,o=>o.requires===t)||[]}interlockCheck(t,o){const i=this.featuresList.find(s=>s.key===t);if(this.response){const s=null!=i.interlockedWith,a=this.featuresList.find(c=>c.interlockedWith===i.key),d=!!this.response.features_name.find(c=>c===i.key);if(s){if(d!==!!this.response.features_name.find(u=>u===i.interlockedWith))return}else if(a&&!!this.response.features_name.find(u=>u===a.key)!==d)return}o?C().filter(this.features,s=>s.interlockedWith===t).forEach(s=>this.rbdForm.get(s.key).setValue(!0,{emitEvent:!1})):i.interlockedWith&&this.rbdForm.get("features").get(i.interlockedWith).setValue(!1)}featureFormUpdate(t,o){if(o){const i=this.features[t].requires;if(i&&!this.rbdForm.getValue(i))return void this.rbdForm.get(`features.${t}`).setValue(!1)}this.deepBoxCheck(t,o),this.interlockCheck(t,o)}setFeatures(t){const o=this.rbdForm.get("features");C().forIn(this.features,i=>{-1!==t.indexOf(i.key)&&o.get(i.key).setValue(!0),this.featureFormUpdate(i.key,o.get(i.key).value)})}setResponse(t,o){this.response=t;const i=new Z.N(t.pool_name,t.namespace,t.name).toString();if(this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(`${i}@${o}`);else if(this.mode===this.rbdFormMode.copying)o?this.rbdForm.get("parent").setValue(`${i}@${o}`):this.rbdForm.get("parent").setValue(`${i}`);else if(t.parent){const s=t.parent;this.rbdForm.get("parent").setValue(`${s.pool_name}/${s.image_name}@${s.snap_name}`)}this.mode===this.rbdFormMode.editing&&this.rbdForm.get("name").setValue(t.name),this.rbdForm.get("pool").setValue(t.pool_name),this.onPoolChange(t.pool_name),this.rbdForm.get("namespace").setValue(t.namespace),t.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(t.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(t.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(t.obj_size)),this.setFeatures(t.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(t.stripe_unit)),this.rbdForm.get("stripingCount").setValue(t.stripe_count),this.initializeConfigData.next({initialData:this.response.configuration,sourceType:et.h.image})}createRequest(){const t=new Ui;return t.pool_name=this.rbdForm.getValue("pool"),t.namespace=this.rbdForm.getValue("namespace"),t.name=this.rbdForm.getValue("name"),t.size=this.formatter.toBytes(this.rbdForm.getValue("size")),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(),t}addObjectSizeAndStripingToRequest(t){t.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),C().forIn(this.features,o=>{this.rbdForm.getValue(o.key)&&t.features.push(o.key)}),t.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),t.stripe_count=this.rbdForm.getValue("stripingCount"),t.data_pool=this.rbdForm.getValue("dataPool")}createAction(){const t=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/create",{pool_name:t.pool_name,namespace:t.namespace,image_name:t.name}),call:this.rbdService.create(t)})}editRequest(){const t=new ji;return t.name=this.rbdForm.getValue("name"),t.size=this.formatter.toBytes(this.rbdForm.getValue("size")),C().forIn(this.features,o=>{this.rbdForm.getValue(o.key)&&t.features.push(o.key)}),t.configuration=this.getDirtyConfigurationValues(),t}cloneRequest(){const t=new Ji;return t.child_pool_name=this.rbdForm.getValue("pool"),t.child_namespace=this.rbdForm.getValue("namespace"),t.child_image_name=this.rbdForm.getValue("name"),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(!0,et.h.image),t}editAction(){const t=new Z.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/edit",{image_spec:t.toString()}),call:this.rbdService.update(t,this.editRequest())})}cloneAction(){const t=this.cloneRequest(),o=new Z.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/clone",{parent_image_spec:o.toString(),parent_snap_name:this.snapName,child_pool_name:t.child_pool_name,child_namespace:t.child_namespace,child_image_name:t.child_image_name}),call:this.rbdService.cloneSnapshot(o,this.snapName,t)})}copyRequest(){const t=new Yi;return this.snapName&&(t.snapshot_name=this.snapName),t.dest_pool_name=this.rbdForm.getValue("pool"),t.dest_namespace=this.rbdForm.getValue("namespace"),t.dest_image_name=this.rbdForm.getValue("name"),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(!0,et.h.image),t}copyAction(){const t=this.copyRequest(),o=new Z.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/copy",{src_image_spec:o.toString(),dest_pool_name:t.dest_pool_name,dest_namespace:t.dest_namespace,dest_image_name:t.dest_image_name}),call:this.rbdService.copy(o,t)})}submit(){this.mode||this.rbdImage.next("create"),this.rbdImage.pipe((0,ki.P)(),(0,Xi.w)(()=>this.mode===this.rbdFormMode.editing?this.editAction():this.mode===this.rbdFormMode.cloning?this.cloneAction():this.mode===this.rbdFormMode.copying?this.copyAction():this.createAction())).subscribe(()=>{},()=>this.rbdForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/block/rbd"]))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(m.gz),e.Y36(Ke.q),e.Y36(x),e.Y36(Qi.H),e.Y36(Q.P),e.Y36(Fe.$),e.Y36(D.p4),e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P,$,G,X,J,te,A,w,de,pe,ge,ue,me,Te,fe,Ce,Se,y,Ze,Be,Ge,ye,xe,we,qe;return _="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Name",o="Pool",i="Use a dedicated data pool",s="Size",a="e.g., 10GiB",d="Features",c="Advanced",u="Striping",S="Object size",N="Stripe unit",P="-- Select stripe unit --",$="Stripe count",G="" + "\ufffd0\ufffd" + " from",X="This field is required.",J="'/' and '@' are not allowed.",te="Loading...",A="-- No rbd pools available --",w="-- Select a pool --",de="This field is required.",pe="Loading...",ge="-- No namespaces available --",ue="-- Select a namespace --",me="You need more than one pool with the rbd application label use to use a dedicated data pool.",Te="Data pool",fe="Dedicated pool that stores the object-data of the RBD.",Ce="Loading...",Se="-- No data pools available --",y="This field is required.",Ze="This field is required.",Be="You have to increase the size.",Ge="Advanced...",ye="This field is required because stripe count is defined!",xe="Stripe unit is greater than object size.",we="This field is required because stripe unit is defined!",qe="Stripe count must be greater than 0.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","rbdForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],_,[1,"card-body"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["type","text","placeholder","Name...","id","name","name","name","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"form-group","row",3,"change"],["for","pool",1,"cd-col-form-label",3,"ngClass"],o,["class","form-control","type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",4,"ngIf"],["id","pool","name","pool","class","form-control","formControlName","pool",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","useDataPool","name","useDataPool","formControlName","useDataPool",1,"custom-control-input",3,"change"],["for","useDataPool",1,"custom-control-label"],i,[4,"ngIf"],["for","size",1,"cd-col-form-label","required"],s,["id","size","name","size","type","text","formControlName","size","placeholder",a,"defaultUnit","GiB","cdDimlessBinary","",1,"form-control"],["formGroupName","features",1,"form-group","row"],["for","features",1,"cd-col-form-label"],d,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"row"],[1,"col-sm-12"],["class","float-right margin-right-md","href","",3,"click",4,"ngIf"],[3,"hidden"],[1,"cd-header"],c,[1,"col-md-12"],u,["for","size",1,"cd-col-form-label"],S,["id","obj_size","name","obj_size","formControlName","obj_size",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["for","stripingUnit",1,"cd-col-form-label",3,"ngClass"],N,["id","stripingUnit","name","stripingUnit","formControlName","stripingUnit",1,"form-control"],[3,"ngValue"],P,["for","stripingCount",1,"cd-col-form-label",3,"ngClass"],$,["id","stripingCount","name","stripingCount","formControlName","stripingCount","type","number",1,"form-control"],[3,"form","initializeData","changes"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["for","name",1,"cd-col-form-label"],G,["type","text","id","parent","name","parent","formControlName","parent",1,"form-control"],[1,"invalid-feedback"],X,J,["type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",1,"form-control"],["id","pool","name","pool","formControlName","pool",1,"form-control"],[3,"ngValue",4,"ngIf"],te,A,w,[3,"value"],de,[3,"ngClass"],["for","pool",1,"cd-col-form-label"],["class","form-control","type","text","placeholder","Namespace...","id","namespace","name","namespace","formControlName","namespace",4,"ngIf"],["id","namespace","name","namespace","class","form-control","formControlName","namespace",4,"ngIf"],["type","text","placeholder","Namespace...","id","namespace","name","namespace","formControlName","namespace",1,"form-control"],["id","namespace","name","namespace","formControlName","namespace",1,"form-control"],pe,ge,ue,me,["for","dataPool",1,"cd-col-form-label"],Te,["html",fe],["class","form-control","type","text","placeholder","Data pool name...","id","dataPool","name","dataPool","formControlName","dataPool",4,"ngIf"],["id","dataPool","name","dataPool","class","form-control","formControlName","dataPool",3,"change",4,"ngIf"],["type","text","placeholder","Data pool name...","id","dataPool","name","dataPool","formControlName","dataPool",1,"form-control"],["id","dataPool","name","dataPool","formControlName","dataPool",1,"form-control",3,"change"],Ce,Se,y,Ze,Be,["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],[3,"html",4,"ngIf"],[3,"html"],["href","",1,"float-right","margin-right-md",3,"click"],Ge,ye,xe,we,qe]},template:function(t,o){1&t&&e.YNc(0,q_,83,46,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[st.y,r._Y,r.JL,r.sg,v.V,l.O5,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.mk,r.Wl,Wi.Q,r.x0,l.sg,r.EJ,r.YN,r.Kr,r.wV,e_.d,O.p,t_.S],pipes:[l.rS,Ye.m],styles:[""]}),n})();var ft=p(36169),ce=p(91801),tt=p(51847),H_=p(16738),Me=p.n(H_),ot=p(62862),K_=p(52266);function k_(n,_){1&n&&(e.TgZ(0,"div",18),e.TgZ(1,"span"),e.SDv(2,19),e.qZA(),e.qZA())}function X_(n,_){1&n&&(e.TgZ(0,"span",20),e.SDv(1,21),e.qZA())}function Q_(n,_){1&n&&(e.TgZ(0,"span",20),e.SDv(1,22),e.qZA())}function z_(n,_){if(1&n&&e._UZ(0,"cd-date-time-picker",23),2&n){const t=e.oxw();e.Q6J("control",t.moveForm.get("expiresAt"))}}let J_=(()=>{class n{constructor(t,o,i,s,a){this.rbdService=t,this.activeModal=o,this.actionLabels=i,this.fb=s,this.taskWrapper=a,this.createForm()}createForm(){this.moveForm=this.fb.group({expiresAt:["",[B.h.custom("format",t=>!(""===t||Me()(t,"YYYY-MM-DD HH:mm:ss").isValid())),B.h.custom("expired",t=>Me()().isAfter(t))]]})}ngOnInit(){this.imageSpec=new Z.N(this.poolName,this.namespace,this.imageName),this.imageSpecStr=this.imageSpec.toString(),this.pattern=`${this.poolName}/${this.imageName}`}moveImage(){let t=0;const o=this.moveForm.getValue("expiresAt");o&&(t=Me()(o,"YYYY-MM-DD HH:mm:ss").diff(Me()(),"seconds",!0)),t<0&&(t=0),this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/trash/move",{image_spec:this.imageSpecStr}),call:this.rbdService.moveTrash(this.imageSpec,t)}).subscribe({complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(x),e.Y36(I.Kz),e.Y36(D.p4),e.Y36(ot.O),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-move-modal"]],decls:23,vars:9,consts:function(){let _,t,o,i,s,a,d;return _="Move an image to trash",t="To move " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd0\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + " to trash, click " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Move" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ". Optionally, you can pick an expiration date.",t=e.Zx4(t),o="Protection expires at",i="NOT PROTECTED",s="This image contains snapshot(s), which will prevent it from being removed after moved to trash.",a="Wrong date format. Please use \"YYYY-MM-DD HH:mm:ss\".",d="Protection has already expired. Please pick a future date or leave it empty.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","moveForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],["class","alert alert-warning","role","alert",4,"ngIf"],t,[1,"form-group"],["for","expiresAt",1,"col-form-label"],o,["type","text","placeholder",i,"formControlName","expiresAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["p","ngbPopover"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["popContent",""],["role","alert",1,"alert","alert-warning"],s,[1,"invalid-feedback"],a,d,[3,"control"]]},template:function(t,o){if(1&t){const i=e.EpF();e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,k_,3,0,"div",7),e.TgZ(8,"p"),e.tHW(9,8),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.qZA(),e.TgZ(12,"div",9),e.TgZ(13,"label",10),e.SDv(14,11),e.qZA(),e.TgZ(15,"input",12,13),e.NdJ("click",function(){return e.CHM(i),e.MAs(16).open()})("keypress",function(){return e.CHM(i),e.MAs(16).close()}),e.qZA(),e.YNc(17,X_,2,0,"span",14),e.YNc(18,Q_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return o.moveImage()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA(),e.YNc(21,z_,1,1,"ng-template",null,17,e.W1O)}if(2&t){const i=e.MAs(5),s=e.MAs(22);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.moveForm),e.xp6(3),e.Q6J("ngIf",o.hasSnapshots),e.xp6(4),e.pQV(o.imageSpecStr),e.QtT(9),e.xp6(4),e.Q6J("ngbPopover",s),e.xp6(2),e.Q6J("ngIf",o.moveForm.showError("expiresAt",i,"format")),e.xp6(1),e.Q6J("ngIf",o.moveForm.showError("expiresAt",i,"expired")),e.xp6(2),e.Q6J("form",o.moveForm)("submitText",o.actionLabels.MOVE)}},directives:[R.z,r._Y,r.JL,r.sg,v.V,l.O5,g.P,f.o,r.Fj,h.b,r.JJ,r.u,I.o8,O.p,K_.J],styles:[""]}),n})();function Y_(n,_){1&n&&(e.TgZ(0,"li",10),e.TgZ(1,"a",3),e.SDv(2,11),e.qZA(),e.qZA())}let Qe=(()=>{class n{constructor(t,o){this.authStorageService=t,this.router=o,this.grafanaPermission=this.authStorageService.getPermissions().grafana}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-tabs"]],decls:12,vars:2,consts:function(){let _,t,o,i;return _="Images",t="Namespaces",o="Trash",i="Overall Performance",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/block/rbd"],["ngbNavLink",""],_,["ngbNavItem","/block/rbd/namespaces"],t,["ngbNavItem","/block/rbd/trash"],o,["ngbNavItem","/block/rbd/performance",4,"ngIf"],["ngbNavItem","/block/rbd/performance"],i]},template:function(t,o){1&t&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(s){return o.router.navigate([s.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"li",5),e.TgZ(6,"a",3),e.SDv(7,6),e.qZA(),e.qZA(),e.TgZ(8,"li",7),e.TgZ(9,"a",3),e.SDv(10,8),e.qZA(),e.qZA(),e.YNc(11,Y_,3,0,"li",9),e.qZA()),2&t&&(e.Q6J("activeId",o.router.url),e.xp6(11),e.Q6J("ngIf",o.grafanaPermission.read))},directives:[I.Pz,I.nv,I.Vx,l.O5],styles:[""]}),n})();var V_=p(25917),Ct=p(51295),nt=p(60737),U_=p(74255),St=p(71099),Et=p(79765);function j_(n,_){1&n&&(e.TgZ(0,"span",15),e.SDv(1,16),e.qZA())}let W_=(()=>{class n{constructor(t,o,i,s,a){this.activeModal=t,this.rbdService=o,this.taskManagerService=i,this.notificationService=s,this.actionLabels=a,this.editing=!1,this.onSubmit=new Et.xQ,this.action=this.actionLabels.CREATE,this.resource="RBD Snapshot",this.createForm()}createForm(){this.snapshotForm=new M.d({snapshotName:new r.NI("",{validators:[r.kI.required]})})}setSnapName(t){this.snapName=t,this.snapshotForm.get("snapshotName").setValue(t)}setEditing(t=!0){this.editing=t,this.action=this.editing?this.actionLabels.RENAME:this.actionLabels.CREATE}editAction(){const t=this.snapshotForm.getValue("snapshotName"),o=new Z.N(this.poolName,this.namespace,this.imageName),i=new F.R;i.name="rbd/snap/edit",i.metadata={image_spec:o.toString(),snapshot_name:t},this.rbdService.renameSnapshot(o,this.snapName,t).toPromise().then(()=>{this.taskManagerService.subscribe(i.name,i.metadata,s=>{this.notificationService.notifyTask(s)}),this.activeModal.close(),this.onSubmit.next(this.snapName)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}createAction(){const t=this.snapshotForm.getValue("snapshotName"),o=new Z.N(this.poolName,this.namespace,this.imageName),i=new F.R;i.name="rbd/snap/create",i.metadata={image_spec:o.toString(),snapshot_name:t},this.rbdService.createSnapshot(o,t).toPromise().then(()=>{this.taskManagerService.subscribe(i.name,i.metadata,s=>{this.notificationService.notifyTask(s)}),this.activeModal.close(),this.onSubmit.next(t)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}submit(){this.editing?this.editAction():this.createAction()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(x),e.Y36(St.k),e.Y36(Le.g),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-snapshot-form-modal"]],decls:19,vars:15,consts:function(){let _,t,o;return _="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Name",o="This field is required.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","snapshotForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","snapshotName",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["type","text","placeholder","Snapshot name...","id","snapshotName","name","snapshotName","formControlName","snapshotName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],o]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.YNc(14,j_,2,0,"span",12),e.qZA(),e.qZA(),e.qZA(),e.TgZ(15,"div",13),e.TgZ(16,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.submit()}),e.ALo(17,"titlecase"),e.ALo(18,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,7,o.action))(e.lcZ(4,9,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.snapshotForm),e.xp6(8),e.Q6J("ngIf",o.snapshotForm.showError("snapshotName",i,"required")),e.xp6(2),e.Q6J("form",o.snapshotForm)("submitText",e.lcZ(17,11,o.action)+" "+e.lcZ(18,13,o.resource))}},directives:[R.z,r._Y,r.JL,r.sg,v.V,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.O5,O.p],pipes:[l.rS,Ye.m],styles:[""]}),n})();class es{constructor(_,t,o){this.featuresName=t,this.cloneFormatVersion=1,o.cloneFormatVersion().subscribe(i=>{this.cloneFormatVersion=i}),this.create={permission:"create",icon:T.P.add,name:_.CREATE},this.rename={permission:"update",icon:T.P.edit,name:_.RENAME},this.protect={permission:"update",icon:T.P.lock,visible:i=>i.hasSingleSelection&&!i.first().is_protected,name:_.PROTECT},this.unprotect={permission:"update",icon:T.P.unlock,visible:i=>i.hasSingleSelection&&i.first().is_protected,name:_.UNPROTECT},this.clone={permission:"create",canBePrimary:i=>i.hasSingleSelection,disable:i=>this.getCloneDisableDesc(i,this.featuresName),icon:T.P.clone,name:_.CLONE},this.copy={permission:"create",canBePrimary:i=>i.hasSingleSelection,disable:i=>!i.hasSingleSelection||i.first().cdExecuting,icon:T.P.copy,name:_.COPY},this.rollback={permission:"update",icon:T.P.undo,name:_.ROLLBACK},this.deleteSnap={permission:"delete",icon:T.P.destroy,disable:i=>{const s=i.first();return!i.hasSingleSelection||s.cdExecuting||s.is_protected},name:_.DELETE},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}getCloneDisableDesc(_,t){return!(_.hasSingleSelection&&!_.first().cdExecuting)||((null==t?void 0:t.includes("layering"))?1===this.cloneFormatVersion&&!_.first().is_protected&&"Snapshot must be protected in order to clone.":"Parent image must support Layering")}}class ts{}var ze=p(96102);const os=["nameTpl"],ns=["rollbackTpl"];function is(n,_){if(1&n&&(e.ynx(0),e.SDv(1,3),e.BQk(),e.TgZ(2,"strong"),e._uU(3),e.qZA(),e._uU(4,".\n")),2&n){const t=_.$implicit;e.xp6(3),e.hij(" ",t.snapName,"")}}let _s=(()=>{class n{constructor(t,o,i,s,a,d,c,u,S,N,P){this.authStorageService=t,this.modalService=o,this.dimlessBinaryPipe=i,this.cdDatePipe=s,this.rbdService=a,this.taskManagerService=d,this.notificationService=c,this.summaryService=u,this.taskListService=S,this.actionLabels=N,this.cdr=P,this.snapshots=[],this.selection=new Ee.r,this.builders={"rbd/snap/create":$=>{const G=new ts;return G.name=$.snapshot_name,G}},this.permission=this.authStorageService.getPermissions().rbdImage}ngOnInit(){this.columns=[{name:"Name",prop:"name",cellTransformation:ve.e.executing,flexGrow:2},{name:"Size",prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"Provisioned",prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"State",prop:"is_protected",flexGrow:1,cellTransformation:ve.e.badge,customTemplateConfig:{map:{true:{value:"PROTECTED",class:"badge-success"},false:{value:"UNPROTECTED",class:"badge-info"}}}},{name:"Created",prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}],this.imageSpec=new Z.N(this.poolName,this.namespace,this.rbdName),this.rbdTableActions=new es(this.actionLabels,this.featuresName,this.rbdService),this.rbdTableActions.create.click=()=>this.openCreateSnapshotModal(),this.rbdTableActions.rename.click=()=>this.openEditSnapshotModal(),this.rbdTableActions.protect.click=()=>this.toggleProtection(),this.rbdTableActions.unprotect.click=()=>this.toggleProtection();const t=()=>this.selection.first()&&`${this.imageSpec.toStringEncoded()}/${encodeURIComponent(this.selection.first().name)}`;this.rbdTableActions.clone.routerLink=()=>`/block/rbd/clone/${t()}`,this.rbdTableActions.copy.routerLink=()=>`/block/rbd/copy/${t()}`,this.rbdTableActions.rollback.click=()=>this.rollbackModal(),this.rbdTableActions.deleteSnap.click=()=>this.deleteSnapshotModal(),this.tableActions=this.rbdTableActions.ordering,this.taskListService.init(()=>(0,V_.of)(this.snapshots),null,s=>{Ct.T.updateChanged(this,{data:s})&&(this.cdr.detectChanges(),this.data=[...this.data])},()=>{Ct.T.updateChanged(this,{data:this.snapshots})&&(this.cdr.detectChanges(),this.data=[...this.data])},s=>["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(s.name)&&this.imageSpec.toString()===s.metadata.image_spec,(s,a)=>s.name===a.metadata.snapshot_name,this.builders)}ngOnChanges(){this.columns&&(this.imageSpec=new Z.N(this.poolName,this.namespace,this.rbdName),this.rbdTableActions&&(this.rbdTableActions.featuresName=this.featuresName),this.taskListService.fetch())}openSnapshotModal(t,o=null){this.modalRef=this.modalService.show(W_),this.modalRef.componentInstance.poolName=this.poolName,this.modalRef.componentInstance.imageName=this.rbdName,this.modalRef.componentInstance.namespace=this.namespace,o?this.modalRef.componentInstance.setEditing():o=`${this.rbdName}_${Me()().toISOString(!0)}`,this.modalRef.componentInstance.setSnapName(o),this.modalRef.componentInstance.onSubmit.subscribe(i=>{const s=new nt.o;s.name=t,s.metadata={image_spec:this.imageSpec.toString(),snapshot_name:i},this.summaryService.addRunningTask(s)})}openCreateSnapshotModal(){this.openSnapshotModal("rbd/snap/create")}openEditSnapshotModal(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)}toggleProtection(){const t=this.selection.first().name,o=this.selection.first().is_protected,i=new F.R;i.name="rbd/snap/edit";const s=new Z.N(this.poolName,this.namespace,this.rbdName);i.metadata={image_spec:s.toString(),snapshot_name:t},this.rbdService.protectSnapshot(s,t,!o).toPromise().then(()=>{const a=new nt.o;a.name=i.name,a.metadata=i.metadata,this.summaryService.addRunningTask(a),this.taskManagerService.subscribe(i.name,i.metadata,d=>{this.notificationService.notifyTask(d)})})}_asyncTask(t,o,i){const s=new F.R;s.name=o,s.metadata={image_spec:new Z.N(this.poolName,this.namespace,this.rbdName).toString(),snapshot_name:i};const a=new Z.N(this.poolName,this.namespace,this.rbdName);this.rbdService[t](a,i).toPromise().then(()=>{const d=new nt.o;d.name=s.name,d.metadata=s.metadata,this.summaryService.addRunningTask(d),this.modalRef.close(),this.taskManagerService.subscribe(d.name,d.metadata,c=>{this.notificationService.notifyTask(c)})}).catch(()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}rollbackModal(){const t=this.selection.selected[0].name,o=new Z.N(this.poolName,this.namespace,this.rbdName).toString(),i={titleText:"RBD snapshot rollback",buttonText:"Rollback",bodyTpl:this.rollbackTpl,bodyData:{snapName:`${o}@${t}`},onSubmit:()=>{this._asyncTask("rollbackSnapshot","rbd/snap/rollback",t)}};this.modalRef=this.modalService.show(ft.Y,i)}deleteSnapshotModal(){const t=this.selection.selected[0].name;this.modalRef=this.modalService.show(he.M,{itemDescription:"RBD snapshot",itemNames:[t],submitAction:()=>this._asyncTask("deleteSnapshot","rbd/snap/delete",t)})}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(re.Z),e.Y36(Fe.$),e.Y36(ze.N),e.Y36(x),e.Y36(St.k),e.Y36(Le.g),e.Y36(U_.J),e.Y36(se.j),e.Y36(D.p4),e.Y36(e.sBO))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-snapshot-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(os,5),e.Gf(ns,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.nameTpl=i.first),e.iGM(i=e.CRH())&&(o.rollbackTpl=i.first)}},inputs:{snapshots:"snapshots",featuresName:"featuresName",poolName:"poolName",namespace:"namespace",rbdName:"rbdName"},features:[e._Bn([se.j]),e.TTD],decls:4,vars:5,consts:function(){let _;return _="You are about to rollback",[["columnMode","flex","selectionType","single",3,"data","columns","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["rollbackTpl",""],_]},template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("updateSelection",function(s){return o.updateSelection(s)}),e._UZ(1,"cd-table-actions",1),e.qZA(),e.YNc(2,is,5,1,"ng-template",null,2,e.W1O)),2&t&&(e.Q6J("data",o.data)("columns",o.columns),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[ee.a,Re.K],styles:[""],changeDetection:0}),n})();var ss=p(71752),Rt=p(76317),as=p(41039);const rs=["poolConfigurationSourceTpl"];function ls(n,_){1&n&&(e.ynx(0),e.tHW(1,3),e._UZ(2,"strong"),e.N_p(),e.BQk())}function cs(n,_){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",38),e._uU(2),e.qZA(),e.qZA()),2&n){const t=_.$implicit;e.xp6(2),e.Oqu(t)}}function ds(n,_){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",39),e.SDv(2,40),e.qZA(),e.qZA()),2&n){e.oxw(3);const t=e.MAs(1);e.xp6(1),e.Q6J("ngbTooltip",t)}}function ps(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.selection.disk_usage)," ")}}function gs(n,_){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",39),e.SDv(2,41),e.qZA(),e.qZA()),2&n){e.oxw(3);const t=e.MAs(1);e.xp6(1),e.Q6J("ngbTooltip",t)}}function us(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.selection.total_disk_usage)," ")}}function ms(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.hij("/",t.selection.parent.pool_namespace,"")}}function Ts(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,ms,2,1,"span",1),e._uU(3),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Oqu(t.selection.parent.pool_name),e.xp6(1),e.Q6J("ngIf",t.selection.parent.pool_namespace),e.xp6(1),e.AsE("/",t.selection.parent.image_name,"@",t.selection.parent.snap_name,"")}}function fs(n,_){1&n&&(e.TgZ(0,"span"),e._uU(1,"-"),e.qZA())}function Cs(n,_){if(1&n&&(e.TgZ(0,"table",17),e.TgZ(1,"tbody"),e.TgZ(2,"tr"),e.TgZ(3,"td",18),e.SDv(4,19),e.qZA(),e.TgZ(5,"td",20),e._uU(6),e.qZA(),e.qZA(),e.TgZ(7,"tr"),e.TgZ(8,"td",21),e.SDv(9,22),e.qZA(),e.TgZ(10,"td"),e._uU(11),e.qZA(),e.qZA(),e.TgZ(12,"tr"),e.TgZ(13,"td",21),e.SDv(14,23),e.qZA(),e.TgZ(15,"td"),e._uU(16),e.ALo(17,"empty"),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",21),e.SDv(20,24),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.ALo(23,"cdDate"),e.qZA(),e.qZA(),e.TgZ(24,"tr"),e.TgZ(25,"td",21),e.SDv(26,25),e.qZA(),e.TgZ(27,"td"),e._uU(28),e.ALo(29,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(30,"tr"),e.TgZ(31,"td",21),e.SDv(32,26),e.qZA(),e.TgZ(33,"td"),e._uU(34),e.ALo(35,"dimless"),e.qZA(),e.qZA(),e.TgZ(36,"tr"),e.TgZ(37,"td",21),e.SDv(38,27),e.qZA(),e.TgZ(39,"td"),e._uU(40),e.ALo(41,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(42,"tr"),e.TgZ(43,"td",21),e.SDv(44,28),e.qZA(),e.TgZ(45,"td"),e.YNc(46,cs,3,1,"span",29),e.qZA(),e.qZA(),e.TgZ(47,"tr"),e.TgZ(48,"td",21),e.SDv(49,30),e.qZA(),e.TgZ(50,"td"),e.YNc(51,ds,3,1,"span",1),e.YNc(52,ps,3,3,"span",1),e.qZA(),e.qZA(),e.TgZ(53,"tr"),e.TgZ(54,"td",21),e.SDv(55,31),e.qZA(),e.TgZ(56,"td"),e.YNc(57,gs,3,1,"span",1),e.YNc(58,us,3,3,"span",1),e.qZA(),e.qZA(),e.TgZ(59,"tr"),e.TgZ(60,"td",21),e.SDv(61,32),e.qZA(),e.TgZ(62,"td"),e._uU(63),e.ALo(64,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(65,"tr"),e.TgZ(66,"td",21),e.SDv(67,33),e.qZA(),e.TgZ(68,"td"),e._uU(69),e.qZA(),e.qZA(),e.TgZ(70,"tr"),e.TgZ(71,"td",21),e.SDv(72,34),e.qZA(),e.TgZ(73,"td"),e.YNc(74,Ts,4,4,"span",1),e.YNc(75,fs,2,0,"span",1),e.qZA(),e.qZA(),e.TgZ(76,"tr"),e.TgZ(77,"td",21),e.SDv(78,35),e.qZA(),e.TgZ(79,"td"),e._uU(80),e.qZA(),e.qZA(),e.TgZ(81,"tr"),e.TgZ(82,"td",21),e.SDv(83,36),e.qZA(),e.TgZ(84,"td"),e._uU(85),e.qZA(),e.qZA(),e.TgZ(86,"tr"),e.TgZ(87,"td",21),e.SDv(88,37),e.qZA(),e.TgZ(89,"td"),e._uU(90),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(6),e.Oqu(t.selection.name),e.xp6(5),e.Oqu(t.selection.pool_name),e.xp6(5),e.Oqu(e.lcZ(17,19,t.selection.data_pool)),e.xp6(6),e.Oqu(e.lcZ(23,21,t.selection.timestamp)),e.xp6(6),e.Oqu(e.lcZ(29,23,t.selection.size)),e.xp6(6),e.Oqu(e.lcZ(35,25,t.selection.num_objs)),e.xp6(6),e.Oqu(e.lcZ(41,27,t.selection.obj_size)),e.xp6(6),e.Q6J("ngForOf",t.selection.features_name),e.xp6(5),e.Q6J("ngIf",-1===(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(1),e.Q6J("ngIf",-1!==(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(5),e.Q6J("ngIf",-1===(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(1),e.Q6J("ngIf",-1!==(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(5),e.Oqu(e.lcZ(64,29,t.selection.stripe_unit)),e.xp6(6),e.Oqu(t.selection.stripe_count),e.xp6(5),e.Q6J("ngIf",t.selection.parent),e.xp6(1),e.Q6J("ngIf",!t.selection.parent),e.xp6(5),e.Oqu(t.selection.block_name_prefix),e.xp6(5),e.Oqu(t.selection.order),e.xp6(5),e.Oqu(t.selection.image_format)}}function Ss(n,_){if(1&n&&e._UZ(0,"cd-rbd-snapshot-list",42),2&n){const t=e.oxw(2);e.Q6J("snapshots",t.selection.snapshots)("featuresName",t.selection.features_name)("poolName",t.selection.pool_name)("namespace",t.selection.namespace)("rbdName",t.selection.name)}}function Es(n,_){if(1&n&&e._UZ(0,"cd-rbd-configuration-table",43),2&n){const t=e.oxw(2);e.Q6J("data",t.selection.configuration)}}function Rs(n,_){if(1&n&&e._UZ(0,"cd-grafana",44),2&n){const t=e.oxw(2);e.Q6J("grafanaPath",t.rbdDashboardUrl)}}function Ms(n,_){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",4,5),e.TgZ(3,"li",6),e.TgZ(4,"a",7),e.SDv(5,8),e.qZA(),e.YNc(6,Cs,91,31,"ng-template",9),e.qZA(),e.TgZ(7,"li",10),e.TgZ(8,"a",7),e.SDv(9,11),e.qZA(),e.YNc(10,Ss,1,5,"ng-template",9),e.qZA(),e.TgZ(11,"li",12),e.TgZ(12,"a",7),e.SDv(13,13),e.qZA(),e.YNc(14,Es,1,1,"ng-template",9),e.qZA(),e.TgZ(15,"li",14),e.TgZ(16,"a",7),e.SDv(17,15),e.qZA(),e.YNc(18,Rs,1,1,"ng-template",9),e.qZA(),e.qZA(),e._UZ(19,"div",16),e.BQk()),2&n){const t=e.MAs(2);e.xp6(19),e.Q6J("ngbNavOutlet",t)}}function Os(n,_){1&n&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",45),e.SDv(2,46),e.qZA(),e.BQk())}function As(n,_){1&n&&(e.ynx(0),e.TgZ(1,"strong",49),e.SDv(2,50),e.qZA(),e.BQk())}function hs(n,_){1&n&&(e.TgZ(0,"span",51),e.SDv(1,52),e.qZA())}function Ps(n,_){if(1&n&&(e.YNc(0,As,3,0,"ng-container",47),e.YNc(1,hs,2,0,"ng-template",null,48,e.W1O)),2&n){const t=_.value,o=e.MAs(2);e.Q6J("ngIf",+t)("ngIfElse",o)}}let Is=(()=>{class n{ngOnChanges(){this.selection&&(this.rbdDashboardUrl=`rbd-details?var-Pool=${this.selection.pool_name}&var-Image=${this.selection.name}`)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-details"]],viewQuery:function(t,o){if(1&t&&(e.Gf(rs,7),e.Gf(I.Pz,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.poolConfigurationSourceTpl=i.first),e.iGM(i=e.CRH())&&(o.nav=i.first)}},inputs:{selection:"selection",images:"images"},features:[e.TTD],decls:6,vars:2,consts:function(){let _,t,o,i,s,a,d,c,u,S,N,P,$,G,X,J,te,A,w,de,pe,ge,ue,me,Te,fe,Ce,Se;return _="Only available for RBD images with " + "\ufffd#2\ufffd" + "fast-diff" + "\ufffd/#2\ufffd" + " enabled",t="Details",o="Snapshots",i="Configuration",s="Performance",a="Name",d="Pool",c="Data Pool",u="Created",S="Size",N="Objects",P="Object size",$="Features",G="Provisioned",X="Total provisioned",J="Striping unit",te="Striping count",A="Parent",w="Block name prefix",de="Order",pe="Format Version",ge="N/A",ue="N/A",me="Information can not be displayed for RBD in status 'Removing'.",Te="This setting overrides the global value",fe="Image",Ce="This is the global value. No value for this option has been set for this image.",Se="Global",[["usageNotAvailableTooltipTpl",""],[4,"ngIf"],["poolConfigurationSourceTpl",""],_,["ngbNav","","cdStatefulTab","rbd-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],t,["ngbNavContent",""],["ngbNavItem","snapshots"],o,["ngbNavItem","configuration"],i,["ngbNavItem","performance"],s,[3,"ngbNavOutlet"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],a,[1,"w-75"],[1,"bold"],d,c,u,S,N,P,$,[4,"ngFor","ngForOf"],G,X,J,te,A,w,de,pe,[1,"badge","badge-dark","mr-2"],["placement","top",1,"form-text","text-muted",3,"ngbTooltip"],ge,ue,[3,"snapshots","featuresName","poolName","namespace","rbdName"],[3,"data"],["uid","YhCYGcuZz","grafanaStyle","one",3,"grafanaPath"],["type","warning"],me,[4,"ngIf","ngIfElse"],["global",""],["ngbTooltip",Te],fe,["ngbTooltip",Ce],Se]},template:function(t,o){1&t&&(e.YNc(0,ls,3,0,"ng-template",null,0,e.W1O),e.YNc(2,Ms,20,1,"ng-container",1),e.YNc(3,Os,3,0,"ng-container",1),e.YNc(4,Ps,3,2,"ng-template",null,2,e.W1O)),2&t&&(e.xp6(2),e.Q6J("ngIf",o.selection&&"REMOVING"!==o.selection.source),e.xp6(1),e.Q6J("ngIf",o.selection&&"REMOVING"===o.selection.source))},directives:[l.O5,I.Pz,mt.m,I.nv,I.Vx,I.uN,I.tO,l.sg,I._L,_s,ss.P,Rt.F,pt.G],pipes:[as.W,ze.N,Fe.$,Ue.n],styles:[""]}),n})();const bs=["usageTpl"],Ns=["parentTpl"],Ds=["nameTpl"],vs=["flattenTpl"],Ls=["deleteTpl"],Fs=["removingStatTpl"],$s=["provisionedNotAvailableTooltipTpl"],Zs=["totalProvisionedNotAvailableTooltipTpl"];function Bs(n,_){1&n&&e._UZ(0,"div",11),2&n&&e.Q6J("innerHtml","Only available for RBD images with <strong>fast-diff</strong> enabled",e.oJD)}function Gs(n,_){if(1&n&&(e.TgZ(0,"span",14),e.SDv(1,15),e.qZA()),2&n){e.oxw(2);const t=e.MAs(6);e.Q6J("ngbTooltip",t)}}function ys(n,_){if(1&n&&(e.SDv(0,16),e.ALo(1,"dimlessBinary")),2&n){const t=e.oxw().row;e.xp6(1),e.pQV(e.lcZ(1,1,t.disk_usage)),e.QtT(0)}}function xs(n,_){if(1&n&&(e.YNc(0,Gs,2,1,"span",12),e.YNc(1,ys,2,3,"ng-template",null,13,e.W1O)),2&n){const t=_.row,o=e.MAs(2);e.Q6J("ngIf",null===t.disk_usage&&!t.features_name.includes("fast-diff"))("ngIfElse",o)}}function ws(n,_){if(1&n&&(e.TgZ(0,"span",14),e.SDv(1,18),e.qZA()),2&n){e.oxw(2);const t=e.MAs(6);e.Q6J("ngbTooltip",t)}}function qs(n,_){if(1&n&&(e.SDv(0,19),e.ALo(1,"dimlessBinary")),2&n){const t=e.oxw().row;e.xp6(1),e.pQV(e.lcZ(1,1,t.total_disk_usage)),e.QtT(0)}}function Hs(n,_){if(1&n&&(e.YNc(0,ws,2,1,"span",12),e.YNc(1,qs,2,3,"ng-template",null,17,e.W1O)),2&n){const t=_.row,o=e.MAs(2);e.Q6J("ngIf",null===t.total_disk_usage&&!t.features_name.includes("fast-diff"))("ngIfElse",o)}}function Ks(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).value;e.xp6(1),e.hij("/",t.pool_namespace,"")}}function ks(n,_){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,Ks,2,1,"span",20),e._uU(3),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t.pool_name),e.xp6(1),e.Q6J("ngIf",t.pool_namespace),e.xp6(1),e.AsE("/",t.image_name,"@",t.snap_name,"")}}function Xs(n,_){1&n&&(e.TgZ(0,"span"),e._uU(1,"-"),e.qZA())}function Qs(n,_){if(1&n&&(e.YNc(0,ks,4,4,"span",20),e.YNc(1,Xs,2,0,"span",20)),2&n){const t=_.value;e.Q6J("ngIf",t),e.xp6(1),e.Q6J("ngIf",!t)}}function zs(n,_){if(1&n&&(e._uU(0," You are about to flatten "),e.TgZ(1,"strong"),e._uU(2),e.qZA(),e._uU(3,". "),e._UZ(4,"br"),e._UZ(5,"br"),e._uU(6," All blocks will be copied from parent "),e.TgZ(7,"strong"),e._uU(8),e.qZA(),e._uU(9," to child "),e.TgZ(10,"strong"),e._uU(11),e.qZA(),e._uU(12,".\n")),2&n){const t=_.$implicit;e.xp6(2),e.Oqu(t.child),e.xp6(6),e.Oqu(t.parent),e.xp6(3),e.Oqu(t.child)}}function Js(n,_){if(1&n&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.xp6(1),e.Oqu(t)}}function Ys(n,_){if(1&n&&(e.ynx(0),e.TgZ(1,"span"),e.SDv(2,24),e.qZA(),e.TgZ(3,"ul"),e.YNc(4,Js,2,1,"li",25),e.qZA(),e.BQk()),2&n){const t=e.oxw(2).snapshots;e.xp6(4),e.Q6J("ngForOf",t)}}function Vs(n,_){if(1&n&&(e.TgZ(0,"div",22),e.TgZ(1,"span"),e.SDv(2,23),e.qZA(),e._UZ(3,"br"),e.YNc(4,Ys,5,1,"ng-container",20),e.qZA()),2&n){const t=e.oxw().snapshots;e.xp6(4),e.Q6J("ngIf",t.length>0)}}function Us(n,_){1&n&&e.YNc(0,Vs,5,1,"div",21),2&n&&e.Q6J("ngIf",_.hasSnapshots)}const js=function(n,_){return[n,_]};function Ws(n,_){if(1&n&&e._UZ(0,"i",27),2&n){const t=e.oxw(2);e.Q6J("ngClass",e.WLB(1,js,t.icons.spinner,t.icons.spin))}}function ea(n,_){if(1&n&&(e.TgZ(0,"span",27),e._uU(1),e.qZA()),2&n){const t=e.oxw(),o=t.column,i=t.row;e.Q6J("ngClass",null!=o&&null!=o.customTemplateConfig&&o.customTemplateConfig.executingClass?o.customTemplateConfig.executingClass:"text-muted italic"),e.xp6(1),e.hij(" (",i.cdExecuting,") ")}}function ta(n,_){if(1&n&&e._UZ(0,"i",29),2&n){const t=e.oxw(2);e.Gre("",t.icons.warning," warn")}}function oa(n,_){if(1&n&&(e.YNc(0,Ws,1,4,"i",26),e.TgZ(1,"span",27),e._uU(2),e.qZA(),e.YNc(3,ea,2,2,"span",26),e.YNc(4,ta,1,3,"i",28)),2&n){const t=_.column,o=_.value,i=_.row;e.Q6J("ngIf",i.cdExecuting),e.xp6(1),e.Q6J("ngClass",null==t||null==t.customTemplateConfig?null:t.customTemplateConfig.valueClass),e.xp6(1),e.hij(" ",o," "),e.xp6(1),e.Q6J("ngIf",i.cdExecuting),e.xp6(1),e.Q6J("ngIf",i.source&&"REMOVING"===i.source)}}let ia=(()=>{class n extends lt.o{constructor(t,o,i,s,a,d,c,u,S){super(),this.authStorageService=t,this.rbdService=o,this.dimlessBinaryPipe=i,this.dimlessPipe=s,this.modalService=a,this.taskWrapper=d,this.taskListService=c,this.urlBuilder=u,this.actionLabels=S,this.tableStatus=new U.E,this.selection=new Ee.r,this.icons=T.P,this.builders={"rbd/create":A=>this.createRbdFromTask(A.pool_name,A.namespace,A.image_name),"rbd/delete":A=>this.createRbdFromTaskImageSpec(A.image_spec),"rbd/clone":A=>this.createRbdFromTask(A.child_pool_name,A.child_namespace,A.child_image_name),"rbd/copy":A=>this.createRbdFromTask(A.dest_pool_name,A.dest_namespace,A.dest_image_name)},this.permission=this.authStorageService.getPermissions().rbdImage;const N=()=>this.selection.first()&&new Z.N(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name).toStringEncoded();this.tableActions=[{permission:"create",icon:T.P.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:A=>!A.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:T.P.edit,routerLink:()=>this.urlBuilder.getEdit(N()),name:this.actionLabels.EDIT,disable:A=>this.getRemovingStatusDesc(A)||this.getInvalidNameDisable(A)},{permission:"create",canBePrimary:A=>A.hasSingleSelection,disable:A=>this.getRemovingStatusDesc(A)||this.getInvalidNameDisable(A)||!!A.first().cdExecuting,icon:T.P.copy,routerLink:()=>`/block/rbd/copy/${N()}`,name:this.actionLabels.COPY},{permission:"update",disable:A=>this.getRemovingStatusDesc(A)||this.getInvalidNameDisable(A)||A.first().cdExecuting||!A.first().parent,icon:T.P.flatten,click:()=>this.flattenRbdModal(),name:this.actionLabels.FLATTEN},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteRbdModal(),name:this.actionLabels.DELETE,disable:A=>this.getDeleteDisableDesc(A)},{permission:"delete",icon:T.P.trash,click:()=>this.trashRbdModal(),name:this.actionLabels.TRASH,disable:A=>this.getRemovingStatusDesc(A)||this.getInvalidNameDisable(A)||A.first().image_format===Pe.V1}]}createRbdFromTaskImageSpec(t){const o=Z.N.fromString(t);return this.createRbdFromTask(o.poolName,o.namespace,o.imageName)}createRbdFromTask(t,o,i){const s=new zi;return s.id="-1",s.unique_id="-1",s.name=i,s.namespace=o,s.pool_name=t,s.image_format=Pe.V2,s}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:2,cellTemplate:this.removingStatTpl},{name:"Pool",prop:"pool_name",flexGrow:2},{name:"Namespace",prop:"namespace",flexGrow:2},{name:"Size",prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"Objects",prop:"num_objs",flexGrow:1,cellClass:"text-right",pipe:this.dimlessPipe},{name:"Object size",prop:"obj_size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"Provisioned",prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe,cellTemplate:this.provisionedNotAvailableTooltipTpl},{name:"Total provisioned",prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe,cellTemplate:this.totalProvisionedNotAvailableTooltipTpl},{name:"Parent",prop:"parent",flexGrow:2,cellTemplate:this.parentTpl}],this.taskListService.init(()=>this.rbdService.list(),i=>this.prepareResponse(i),i=>this.images=i,()=>this.onFetchError(),i=>["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(i.name),(i,s)=>{let a;switch(s.name){case"rbd/copy":a=new Z.N(s.metadata.dest_pool_name,s.metadata.dest_namespace,s.metadata.dest_image_name).toString();break;case"rbd/clone":a=new Z.N(s.metadata.child_pool_name,s.metadata.child_namespace,s.metadata.child_image_name).toString();break;case"rbd/create":a=new Z.N(s.metadata.pool_name,s.metadata.namespace,s.metadata.image_name).toString();break;default:a=s.metadata.image_spec}return a===new Z.N(i.pool_name,i.namespace,i.name).toString()},this.builders)}onFetchError(){this.table.reset(),this.tableStatus=new U.E(ce.T.ValueException)}prepareResponse(t){let o=[];const i={};let s;if(t.forEach(a=>{C().isUndefined(i[a.status])&&(i[a.status]=[]),i[a.status].push(a.pool_name),o=o.concat(a.value)}),i[ce.T.ValueException]?s=ce.T.ValueException:i[ce.T.ValueStale]?s=ce.T.ValueStale:i[ce.T.ValueNone]&&(s=ce.T.ValueNone),s){const a=(i[s].length>1?"pools ":"pool ")+i[s].join();this.tableStatus=new U.E(s,a)}else this.tableStatus=new U.E;return o}updateSelection(t){this.selection=t}deleteRbdModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().name,s=new Z.N(t,o,i);this.modalRef=this.modalService.show(he.M,{itemDescription:"RBD",itemNames:[s],bodyTemplate:this.deleteTpl,bodyContext:{hasSnapshots:this.hasSnapshots(),snapshots:this.listProtectedSnapshots()},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/delete",{image_spec:s.toString()}),call:this.rbdService.delete(s)})})}trashRbdModal(){const t={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,hasSnapshots:this.hasSnapshots()};this.modalRef=this.modalService.show(J_,t)}flattenRbd(t){this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/flatten",{image_spec:t.toString()}),call:this.rbdService.flatten(t)}).subscribe({complete:()=>{this.modalRef.close()}})}flattenRbdModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().name,s=this.selection.first().parent,a=new Z.N(s.pool_name,s.pool_namespace,s.image_name),d=new Z.N(t,o,i),c={titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:`${a}@${s.snap_name}`,child:d.toString()},onSubmit:()=>{this.flattenRbd(d)}};this.modalRef=this.modalService.show(ft.Y,c)}hasSnapshots(){return(this.selection.first().snapshots||[]).length>0}hasClonedSnapshots(t){return(t.snapshots||[]).some(i=>i.children&&i.children.length>0)}listProtectedSnapshots(){return this.selection.first().snapshots.reduce((i,s)=>(s.is_protected&&i.push(s.name),i),[])}getDeleteDisableDesc(t){const o=t.first();return o&&this.hasClonedSnapshots(o)?"This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.":this.getInvalidNameDisable(t)||this.hasClonedSnapshots(t.first())}getInvalidNameDisable(t){var o;const i=t.first();return(null===(o=null==i?void 0:i.name)||void 0===o?void 0:o.match(/[@/]/))?"This RBD image has an invalid name and can't be managed by ceph.":!t.first()||!t.hasSingleSelection}getRemovingStatusDesc(t){const o=t.first();return"REMOVING"===(null==o?void 0:o.source)&&"Action not possible for an RBD in status 'Removing'"}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(x),e.Y36(Fe.$),e.Y36(Ue.n),e.Y36(re.Z),e.Y36(Q.P),e.Y36(se.j),e.Y36(tt.F),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(ee.a,7),e.Gf(bs,5),e.Gf(Ns,7),e.Gf(Ds,5),e.Gf(vs,7),e.Gf(Ls,7),e.Gf(Fs,7),e.Gf($s,7),e.Gf(Zs,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first),e.iGM(i=e.CRH())&&(o.usageTpl=i.first),e.iGM(i=e.CRH())&&(o.parentTpl=i.first),e.iGM(i=e.CRH())&&(o.nameTpl=i.first),e.iGM(i=e.CRH())&&(o.flattenTpl=i.first),e.iGM(i=e.CRH())&&(o.deleteTpl=i.first),e.iGM(i=e.CRH())&&(o.removingStatTpl=i.first),e.iGM(i=e.CRH())&&(o.provisionedNotAvailableTooltipTpl=i.first),e.iGM(i=e.CRH())&&(o.totalProvisionedNotAvailableTooltipTpl=i.first)}},features:[e._Bn([se.j,{provide:tt.F,useValue:new tt.F("block/rbd")}]),e.qOj],decls:19,vars:10,consts:function(){let _,t,o,i,s,a,d;return _="N/A",t="" + "\ufffd0\ufffd" + "",o="N/A",i="" + "\ufffd0\ufffd" + "",s="Deleting this image will also delete all its snapshots.",a="The following snapshots are currently protected and will be removed:",d="RBD in status 'Removing'",[["columnMode","flex","identifier","unique_id","forceIdentifier","true","selectionType","single",3,"data","columns","searchableObjects","hasDetails","status","autoReload","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["usageNotAvailableTooltipTpl",""],["provisionedNotAvailableTooltipTpl",""],["totalProvisionedNotAvailableTooltipTpl",""],["parentTpl",""],["flattenTpl",""],["deleteTpl",""],["removingStatTpl",""],[3,"innerHtml"],["placement","top",3,"ngbTooltip",4,"ngIf","ngIfElse"],["provisioned",""],["placement","top",3,"ngbTooltip"],_,t,["totalProvisioned",""],o,i,[4,"ngIf"],["class","alert alert-warning","role","alert",4,"ngIf"],["role","alert",1,"alert","alert-warning"],s,a,[4,"ngFor","ngForOf"],[3,"ngClass",4,"ngIf"],[3,"ngClass"],["title",d,3,"class",4,"ngIf"],["title",d]]},template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0,1),e.NdJ("fetchData",function(){return o.taskListService.fetch()})("setExpandedRow",function(s){return o.setExpandedRow(s)})("updateSelection",function(s){return o.updateSelection(s)}),e._UZ(3,"cd-table-actions",2),e._UZ(4,"cd-rbd-details",3),e.qZA(),e.YNc(5,Bs,1,1,"ng-template",null,4,e.W1O),e.YNc(7,xs,3,2,"ng-template",null,5,e.W1O),e.YNc(9,Hs,3,2,"ng-template",null,6,e.W1O),e.YNc(11,Qs,2,2,"ng-template",null,7,e.W1O),e.YNc(13,zs,13,3,"ng-template",null,8,e.W1O),e.YNc(15,Us,1,1,"ng-template",null,9,e.W1O),e.YNc(17,oa,5,5,"ng-template",null,10,e.W1O)),2&t&&(e.xp6(1),e.Q6J("data",o.images)("columns",o.columns)("searchableObjects",!0)("hasDetails",!0)("status",o.tableStatus)("autoReload",-1),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("selection",o.expandedRow))},directives:[Qe,ee.a,Re.K,Is,l.O5,I._L,l.sg,l.mk],pipes:[Fe.$],styles:[".warn[_ngcontent-%COMP%]{color:#ffc200}"]}),n})();function _a(n,_){1&n&&e._UZ(0,"input",19)}function sa(n,_){1&n&&(e.TgZ(0,"option",23),e.SDv(1,24),e.qZA()),2&n&&e.Q6J("ngValue",null)}function aa(n,_){1&n&&(e.TgZ(0,"option",23),e.SDv(1,25),e.qZA()),2&n&&e.Q6J("ngValue",null)}function ra(n,_){1&n&&(e.TgZ(0,"option",23),e.SDv(1,26),e.qZA()),2&n&&e.Q6J("ngValue",null)}function la(n,_){if(1&n&&(e.TgZ(0,"option",27),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function ca(n,_){if(1&n&&(e.TgZ(0,"select",20),e.YNc(1,sa,2,1,"option",21),e.YNc(2,aa,2,1,"option",21),e.YNc(3,ra,2,1,"option",21),e.YNc(4,la,2,2,"option",22),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.pools)}}function da(n,_){1&n&&(e.TgZ(0,"span",28),e.SDv(1,29),e.qZA())}function pa(n,_){1&n&&(e.TgZ(0,"span",28),e.SDv(1,30),e.qZA())}function ga(n,_){1&n&&(e.TgZ(0,"span",28),e.SDv(1,31),e.qZA())}let ua=(()=>{class n{constructor(t,o,i,s,a,d){this.activeModal=t,this.actionLabels=o,this.authStorageService=i,this.notificationService=s,this.poolService=a,this.rbdService=d,this.pools=null,this.editing=!1,this.poolPermission=this.authStorageService.getPermissions().pool,this.createForm()}createForm(){this.namespaceForm=new M.d({pool:new r.NI(""),namespace:new r.NI("")},this.validator(),this.asyncValidator())}validator(){return t=>{const o=t.get("pool"),i=t.get("namespace");let s=null;o.value||(s={required:!0}),o.setErrors(s);let a=null;return i.value||(a={required:!0}),i.setErrors(a),null}}asyncValidator(){return t=>new Promise(o=>{const i=t.get("pool"),s=t.get("namespace");this.rbdService.listNamespaces(i.value).subscribe(a=>{if(a.some(d=>d.namespace===s.value)){const d={namespaceExists:!0};s.setErrors(d),o(d)}else o(null)})})}ngOnInit(){this.onSubmit=new Et.xQ,this.poolPermission.read&&this.poolService.list(["pool_name","type","application_metadata"]).then(t=>{const o=[];for(const i of t)this.rbdService.isRBDPool(i)&&"replicated"===i.type&&o.push(i);if(this.pools=o,1===this.pools.length){const i=this.pools[0].pool_name;this.namespaceForm.get("pool").setValue(i)}})}submit(){const t=this.namespaceForm.getValue("pool"),o=this.namespaceForm.getValue("namespace"),i=new F.R;i.name="rbd/namespace/create",i.metadata={pool:t,namespace:o},this.rbdService.createNamespace(t,o).toPromise().then(()=>{this.notificationService.show(Ve.k.success,"Created namespace '" + t + "/" + o + "'"),this.activeModal.close(),this.onSubmit.next()}).catch(()=>{this.namespaceForm.setErrors({cdSubmitButton:!0})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(I.Kz),e.Y36(D.p4),e.Y36(oe.j),e.Y36(Le.g),e.Y36(Ke.q),e.Y36(x))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-namespace-form-modal"]],decls:23,vars:9,consts:function(){let _,t,o,i,s,a,d,c,u;return _="Create Namespace",t="Pool",o="Name",i="Loading...",s="-- No rbd pools available --",a="-- Select a pool --",d="This field is required.",c="This field is required.",u="Namespace already exists.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","namespaceForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","pool",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["class","form-control","type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",4,"ngIf"],["id","pool","name","pool","class","form-control","formControlName","pool",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["for","namespace",1,"cd-col-form-label","required"],o,["type","text","placeholder","Namespace name...","id","namespace","name","namespace","formControlName","namespace","autofocus","",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",1,"form-control"],["id","pool","name","pool","formControlName","pool",1,"form-control"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],i,s,a,[3,"value"],[1,"invalid-feedback"],d,c,u]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.YNc(11,_a,1,0,"input",11),e.YNc(12,ca,5,4,"select",12),e.YNc(13,da,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",14),e.SDv(16,15),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",16),e.YNc(19,pa,2,0,"span",13),e.YNc(20,ga,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(21,"div",17),e.TgZ(22,"cd-form-button-panel",18),e.NdJ("submitActionEvent",function(){return o.submit()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.namespaceForm),e.xp6(7),e.Q6J("ngIf",!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.namespaceForm.showError("pool",i,"required")),e.xp6(6),e.Q6J("ngIf",o.namespaceForm.showError("namespace",i,"required")),e.xp6(1),e.Q6J("ngIf",o.namespaceForm.showError("namespace",i,"namespaceExists")),e.xp6(2),e.Q6J("form",o.namespaceForm)("submitText",o.actionLabels.CREATE)}},directives:[R.z,r._Y,r.JL,r.sg,v.V,g.P,l.O5,f.o,r.Fj,h.b,r.JJ,r.u,le.U,O.p,r.EJ,l.sg,r.YN,r.Kr],styles:[""]}),n})(),ma=(()=>{class n{constructor(t,o,i,s,a,d){this.authStorageService=t,this.rbdService=o,this.poolService=i,this.modalService=s,this.notificationService=a,this.actionLabels=d,this.selection=new Ee.r,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"create",icon:T.P.add,click:()=>this.createModal(),name:this.actionLabels.CREATE},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE,disable:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:"Namespace",prop:"namespace",flexGrow:1},{name:"Pool",prop:"pool",flexGrow:1},{name:"Total images",prop:"num_images",flexGrow:1}],this.refresh()}refresh(){this.poolService.list(["pool_name","type","application_metadata"]).then(t=>{t=t.filter(i=>this.rbdService.isRBDPool(i)&&"replicated"===i.type);const o=[];t.forEach(i=>{o.push(this.rbdService.listNamespaces(i.pool_name))}),o.length>0?(0,W.D)(o).subscribe(i=>{const s=[];for(let a=0;a<i.length;a++){const c=t[a].pool_name;i[a].forEach(u=>{s.push({id:`${c}/${u.namespace}`,pool:c,namespace:u.namespace,num_images:u.num_images})})}this.namespaces=s}):this.namespaces=[]})}updateSelection(t){this.selection=t}createModal(){this.modalRef=this.modalService.show(ua),this.modalRef.componentInstance.onSubmit.subscribe(()=>{this.refresh()})}deleteModal(){const t=this.selection.first().pool,o=this.selection.first().namespace;this.modalRef=this.modalService.show(he.M,{itemDescription:"Namespace",itemNames:[`${t}/${o}`],submitAction:()=>this.rbdService.deleteNamespace(t,o).subscribe(()=>{this.notificationService.show(Ve.k.success,"Deleted namespace '" + t + "/" + o + "'"),this.modalRef.close(),this.refresh()},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})})}getDeleteDisableDesc(){var t;const o=this.selection.first();return(null==o?void 0:o.num_images)>0?"Namespace contains images":!(null===(t=this.selection)||void 0===t?void 0:t.first())}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(x),e.Y36(Ke.q),e.Y36(re.Z),e.Y36(Le.g),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-namespace-list"]],features:[e._Bn([se.j])],decls:4,vars:5,consts:[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","fetchData","updateSelection"],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"]],template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()})("updateSelection",function(s){return o.updateSelection(s)}),e.TgZ(2,"div",1),e._UZ(3,"cd-table-actions",2),e.qZA(),e.qZA()),2&t&&(e.xp6(1),e.Q6J("data",o.namespaces)("columns",o.columns),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[Qe,ee.a,Re.K],styles:[""]}),n})(),Ta=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-performance"]],decls:2,vars:1,consts:[["uid","41FrpeUiz","grafanaStyle","two",3,"grafanaPath"]],template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e._UZ(1,"cd-grafana",0)),2&t&&(e.xp6(1),e.Q6J("grafanaPath","rbd-overview?"))},directives:[Qe,Rt.F],styles:[""]}),n})();function fa(n,_){1&n&&e._UZ(0,"input",15)}function Ca(n,_){if(1&n&&(e.TgZ(0,"option",20),e._uU(1),e.qZA()),2&n){const t=_.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Sa(n,_){if(1&n&&(e.TgZ(0,"select",16),e.TgZ(1,"option",17),e.SDv(2,18),e.qZA(),e.YNc(3,Ca,2,2,"option",19),e.qZA()),2&n){const t=e.oxw();e.xp6(3),e.Q6J("ngForOf",t.pools)}}let Ea=(()=>{class n{constructor(t,o,i,s,a,d,c){this.authStorageService=t,this.rbdService=o,this.activeModal=i,this.actionLabels=s,this.fb=a,this.poolService=d,this.taskWrapper=c,this.poolPermission=this.authStorageService.getPermissions().pool}createForm(){this.purgeForm=this.fb.group({poolName:""})}ngOnInit(){this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(t=>{this.pools=t.filter(o=>o.application_metadata.includes("rbd")).map(o=>o.pool_name)}),this.createForm()}purge(){const t=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/trash/purge",{pool_name:t}),call:this.rbdService.purgeTrash(t)}).subscribe({error:()=>{this.purgeForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(x),e.Y36(I.Kz),e.Y36(D.p4),e.Y36(ot.O),e.Y36(Ke.q),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-purge-modal"]],decls:18,vars:6,consts:function(){let _,t,o,i,s;return _="Purge Trash",t="To purge, select\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "All" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + "\xA0 or one pool and click\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "Purge" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ".\xA0",t=e.Zx4(t),o="Pool:",i="Pool name...",s="All",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","purgeForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],[1,"col-form-label","mx-auto"],o,["class","form-control","type","text","placeholder",i,"formControlName","poolName",4,"ngIf"],["id","poolName","name","poolName","class","form-control","formControlName","poolName",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["type","text","placeholder",i,"formControlName","poolName",1,"form-control"],["id","poolName","name","poolName","formControlName","poolName",1,"form-control"],["value",""],s,[3,"value",4,"ngFor","ngForOf"],[3,"value"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"kbd"),e._UZ(10,"kbd"),e.N_p(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e.YNc(14,fa,1,0,"input",11),e.YNc(15,Sa,4,1,"select",12),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.purge()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.purgeForm),e.xp6(10),e.Q6J("ngIf",!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.poolPermission.read),e.xp6(2),e.Q6J("form",o.purgeForm)("submitText",o.actionLabels.PURGE))},directives:[R.z,r._Y,r.JL,r.sg,v.V,g.P,l.O5,O.p,f.o,r.Fj,h.b,r.JJ,r.u,r.EJ,r.YN,r.Kr,l.sg],styles:[""]}),n})();function Ra(n,_){1&n&&(e.TgZ(0,"span",15),e.SDv(1,16),e.qZA())}let Ma=(()=>{class n{constructor(t,o,i,s,a){this.rbdService=t,this.activeModal=o,this.actionLabels=i,this.fb=s,this.taskWrapper=a}ngOnInit(){this.imageSpec=new Z.N(this.poolName,this.namespace,this.imageName).toString(),this.restoreForm=this.fb.group({name:this.imageName})}restore(){const t=this.restoreForm.getValue("name"),o=new Z.N(this.poolName,this.namespace,this.imageId);this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/trash/restore",{image_id_spec:o.toString(),new_image_name:t}),call:this.rbdService.restoreTrash(o,t)}).subscribe({error:()=>{this.restoreForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(x),e.Y36(I.Kz),e.Y36(D.p4),e.Y36(ot.O),e.Y36(Q.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-restore-modal"]],decls:18,vars:7,consts:function(){let _,t,o,i;return _="Restore Image",t="To restore\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "" + "\ufffd0\ufffd" + "@" + "\ufffd1\ufffd" + "" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ",\xA0 type the image's new name and click\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "Restore" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ".",t=e.Zx4(t),o="New Name",i="This field is required.",[[3,"modalRef"],[1,"modal-title"],_,[1,"modal-content"],["name","restoreForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","name",1,"col-form-label"],o,["type","text","name","name","id","name","autocomplete","off","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],i]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"kbd"),e._UZ(10,"kbd"),e.N_p(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,Ra,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.restore()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.restoreForm),e.xp6(6),e.pQV(o.imageSpec)(o.imageId),e.QtT(8),e.xp6(5),e.Q6J("ngIf",o.restoreForm.showError("name",i,"required")),e.xp6(2),e.Q6J("form",o.restoreForm)("submitText",o.actionLabels.RESTORE)}},directives:[R.z,r._Y,r.JL,r.sg,v.V,g.P,f.o,r.Fj,h.b,r.JJ,r.u,le.U,l.O5,O.p],styles:[""]}),n})();const Oa=["expiresTpl"],Aa=["deleteTpl"],ha=function(n){return[n]};function Pa(n,_){if(1&n){const t=e.EpF();e.TgZ(0,"button",6),e.NdJ("click",function(){return e.CHM(t),e.oxw().purgeModal()}),e._UZ(1,"i",7),e.ynx(2),e.SDv(3,8),e.BQk(),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("disabled",t.disablePurgeBtn),e.xp6(1),e.Q6J("ngClass",e.VKq(2,ha,t.icons.destroy))}}function Ia(n,_){1&n&&(e.ynx(0),e.SDv(1,10),e.BQk())}function ba(n,_){1&n&&(e.ynx(0),e.SDv(1,11),e.BQk())}function Na(n,_){if(1&n&&(e.YNc(0,Ia,2,0,"ng-container",9),e.YNc(1,ba,2,0,"ng-container",9),e._uU(2),e.ALo(3,"cdDate")),2&n){const t=_.row,o=_.value;e.Q6J("ngIf",t.cdIsExpired),e.xp6(1),e.Q6J("ngIf",!t.cdIsExpired),e.xp6(1),e.hij(" ",e.lcZ(3,3,o),"\n")}}function Da(n,_){if(1&n&&(e.TgZ(0,"p",13),e.TgZ(1,"strong"),e.ynx(2),e.SDv(3,14),e.ALo(4,"cdDate"),e.BQk(),e.qZA(),e.qZA()),2&n){const t=e.oxw().expiresAt;e.xp6(4),e.pQV(e.lcZ(4,1,t)),e.QtT(3)}}function va(n,_){1&n&&e.YNc(0,Da,5,3,"p",12),2&n&&e.Q6J("ngIf",!_.isExpired)}let La=(()=>{class n{constructor(t,o,i,s,a,d,c){this.authStorageService=t,this.rbdService=o,this.modalService=i,this.cdDatePipe=s,this.taskListService=a,this.taskWrapper=d,this.actionLabels=c,this.icons=T.P,this.executingTasks=[],this.selection=new Ee.r,this.tableStatus=new U.E,this.disablePurgeBtn=!0,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"update",icon:T.P.undo,click:()=>this.restoreModal(),name:this.actionLabels.RESTORE},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"ID",prop:"id",flexGrow:1,cellTransformation:ve.e.executing},{name:"Name",prop:"name",flexGrow:1},{name:"Pool",prop:"pool_name",flexGrow:1},{name:"Namespace",prop:"namespace",flexGrow:1},{name:"Status",prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:"Deleted At",prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(()=>this.rbdService.listTrash(),i=>this.prepareResponse(i),i=>this.images=i,()=>this.onFetchError(),i=>["rbd/trash/remove","rbd/trash/restore"].includes(i.name),(i,s)=>new Z.N(i.pool_name,i.namespace,i.id).toString()===s.metadata.image_id_spec,void 0)}prepareResponse(t){let o=[];const i={};let s;if(t.forEach(a=>{C().isUndefined(i[a.status])&&(i[a.status]=[]),i[a.status].push(a.pool_name),o=o.concat(a.value),this.disablePurgeBtn=!o.length}),i[3]?s=3:i[1]?s=1:i[2]&&(s=2),s){const a=(i[s].length>1?"pools ":"pool ")+i[s].join();this.tableStatus=new U.E(s,a)}else this.tableStatus=new U.E;return o.forEach(a=>{a.cdIsExpired=Me()().isAfter(a.deferment_end_time)}),o}onFetchError(){this.table.reset(),this.tableStatus=new U.E(ce.T.ValueException)}updateSelection(t){this.selection=t}restoreModal(){const t={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(Ma,t)}deleteModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().id,s=this.selection.first().deferment_end_time,a=Me()().isAfter(s),d=new Z.N(t,o,i);this.modalRef=this.modalService.show(he.M,{itemDescription:"RBD",itemNames:[d],bodyTemplate:this.deleteTpl,bodyContext:{expiresAt:s,isExpired:a},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new F.R("rbd/trash/remove",{image_id_spec:d.toString()}),call:this.rbdService.removeTrash(d,!0)})})}purgeModal(){this.modalService.show(Ea)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(x),e.Y36(re.Z),e.Y36(ze.N),e.Y36(se.j),e.Y36(Q.P),e.Y36(D.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(ee.a,7),e.Gf(Oa,7),e.Gf(Aa,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first),e.iGM(i=e.CRH())&&(o.expiresTpl=i.first),e.iGM(i=e.CRH())&&(o.deleteTpl=i.first)}},features:[e._Bn([se.j])],decls:9,vars:8,consts:function(){let _,t,o,i;return _="Purge Trash",t="Expired at",o="Protected until",i="This image is protected until " + "\ufffd0\ufffd" + ".",[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","status","autoReload","fetchData","updateSelection"],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["class","btn btn-light","type","button",3,"disabled","click",4,"ngIf"],["expiresTpl",""],["deleteTpl",""],["type","button",1,"btn","btn-light",3,"disabled","click"],["aria-hidden","true",3,"ngClass"],_,[4,"ngIf"],t,o,["class","text-danger",4,"ngIf"],[1,"text-danger"],i]},template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0),e.NdJ("fetchData",function(){return o.taskListService.fetch()})("updateSelection",function(s){return o.updateSelection(s)}),e.TgZ(2,"div",1),e._UZ(3,"cd-table-actions",2),e.YNc(4,Pa,4,4,"button",3),e.qZA(),e.qZA(),e.YNc(5,Na,4,5,"ng-template",null,4,e.W1O),e.YNc(7,va,1,1,"ng-template",null,5,e.W1O)),2&t&&(e.xp6(1),e.Q6J("data",o.images)("columns",o.columns)("status",o.tableStatus)("autoReload",-1),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("ngIf",o.permission.delete))},directives:[Qe,ee.a,Re.K,l.O5,f.o,l.mk],pipes:[ze.N],styles:[""]}),n})(),Mt=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[l.ez,Jn,r.u5,r.UX,I.Oz,I.dT,I.HK,Ie.b,_e.m,m.Bz,ne.xc]]}),n})();const Fa=[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[j.T],data:{breadcrumbs:"Images"},children:[{path:"",component:ia},{path:"namespaces",component:ma,data:{breadcrumbs:"Namespaces"}},{path:"trash",component:La,data:{breadcrumbs:"Trash"}},{path:"performance",component:Ta,data:{breadcrumbs:"Overall Performance"}},{path:D.MQ.CREATE,component:$e,data:{breadcrumbs:D.Qn.CREATE}},{path:`${D.MQ.EDIT}/:image_spec`,component:$e,data:{breadcrumbs:D.Qn.EDIT}},{path:`${D.MQ.CLONE}/:image_spec/:snap`,component:$e,data:{breadcrumbs:D.Qn.CLONE}},{path:`${D.MQ.COPY}/:image_spec`,component:$e,data:{breadcrumbs:D.Qn.COPY}},{path:`${D.MQ.COPY}/:image_spec/:snap`,component:$e,data:{breadcrumbs:D.Qn.COPY}}]},{path:"mirroring",component:Ki,canActivate:[j.T],data:{breadcrumbs:"Mirroring"}},{path:"iscsi",canActivate:[j.T],data:{breadcrumbs:"iSCSI"},children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:zn,data:{breadcrumbs:"Overview"}},{path:"targets",data:{breadcrumbs:"Targets"},children:[{path:"",component:Ln},{path:D.MQ.CREATE,component:rt,data:{breadcrumbs:D.Qn.CREATE}},{path:`${D.MQ.EDIT}/:target_iqn`,component:rt,data:{breadcrumbs:D.Qn.EDIT}}]}]}];let $a=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[Mt,m.Bz.forChild(Fa)]]}),n})()},54555:(it,Oe,p)=>{p.d(Oe,{d:()=>Q});var l=p(74788),r=p(24751),m=p(23815),ne=p.n(m),I=p(80226),Ie=p(65862),D=p(95463),j=p(30633),_e=p(28211),be=p(34089),C=p(41582),W=p(12057),b=p(56310),ie=p(18372),Y=p(87925),e=p(94276);let k=(()=>{class R{constructor(g,f){this.control=g,this.formatter=f}setValue(g){const f=this.formatter.toMilliseconds(g);this.control.control.setValue(`${f} ms`)}ngOnInit(){this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.control.value))}onUpdate(g){this.setValue(g)}}return R.\u0275fac=function(g){return new(g||R)(l.Y36(r.a5),l.Y36(_e.H))},R.\u0275dir=l.lG2({type:R,selectors:[["","cdMilliseconds",""]],hostBindings:function(g,f){1&g&&l.NdJ("blur",function(O){return f.onUpdate(O.target.value)})},inputs:{ngDataReady:"ngDataReady"}}),R})();var Ne=p(20044);let Z=(()=>{class R{constructor(g,f,h,O){this.elementRef=g,this.control=f,this.dimlessBinaryPerSecondPipe=h,this.formatter=O,this.ngModelChange=new l.vpe,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.el.value))}setValue(g){/^[\d.]+$/.test(g)&&(g+=this.defaultUnit||"m");const f=this.formatter.toBytes(g,0),h=this.round(f);this.el.value=this.dimlessBinaryPerSecondPipe.transform(h),null!==f?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(g){if(null!==g&&0!==g){if(!ne().isUndefined(this.minBytes)&&g<this.minBytes)return this.minBytes;if(!ne().isUndefined(this.maxBytes)&&g>this.maxBytes)return this.maxBytes;if(!ne().isUndefined(this.roundPower)){const f=Math.round(Math.log(g)/Math.log(this.roundPower));return Math.pow(this.roundPower,f)}}return g}onBlur(g){this.setValue(g)}}return R.\u0275fac=function(g){return new(g||R)(l.Y36(l.SBq),l.Y36(r.a5),l.Y36(Ne.O),l.Y36(_e.H))},R.\u0275dir=l.lG2({type:R,selectors:[["","cdDimlessBinaryPerSecond",""]],hostBindings:function(g,f){1&g&&l.NdJ("blur",function(O){return f.onBlur(O.target.value)})},inputs:{ngDataReady:"ngDataReady",minBytes:"minBytes",maxBytes:"maxBytes",roundPower:"roundPower",defaultUnit:"defaultUnit"},outputs:{ngModelChange:"ngModelChange"}}),R})(),Ae=(()=>{class R{constructor(g,f){this.formatter=g,this.ngControl=f}setValue(g){const f=this.formatter.toIops(g);this.ngControl.control.setValue(`${f} IOPS`)}ngOnInit(){this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.ngControl.value))}onUpdate(g){this.setValue(g)}}return R.\u0275fac=function(g){return new(g||R)(l.Y36(_e.H),l.Y36(r.a5))},R.\u0275dir=l.lG2({type:R,selectors:[["","cdIops",""]],hostBindings:function(g,f){1&g&&l.NdJ("blur",function(O){return f.onUpdate(O.target.value)})},inputs:{ngDataReady:"ngDataReady"}}),R})();function x(R,v){if(1&R&&(l.ynx(0),l._UZ(1,"input",18),l.BQk()),2&R){const g=l.oxw().$implicit,f=l.oxw(2);l.xp6(1),l.Q6J("id",g.name)("name",g.name)("formControlName",g.name)("ngDataReady",f.ngDataReady)}}function ae(R,v){if(1&R&&(l.ynx(0),l._UZ(1,"input",19),l.BQk()),2&R){const g=l.oxw().$implicit,f=l.oxw(2);l.xp6(1),l.Q6J("id",g.name)("name",g.name)("formControlName",g.name)("ngDataReady",f.ngDataReady)}}function V(R,v){if(1&R&&(l.ynx(0),l._UZ(1,"input",20),l.BQk()),2&R){const g=l.oxw().$implicit,f=l.oxw(2);l.xp6(1),l.Q6J("id",g.name)("name",g.name)("formControlName",g.name)("ngDataReady",f.ngDataReady)}}function T(R,v){1&R&&(l.TgZ(0,"span",21),l.SDv(1,22),l.qZA())}const q=function(R){return{active:R}},M=function(R){return[R]};function B(R,v){if(1&R){const g=l.EpF();l.TgZ(0,"div",10),l.TgZ(1,"label",11),l._uU(2),l.TgZ(3,"cd-helper"),l._uU(4),l.qZA(),l.qZA(),l.TgZ(5,"div"),l.TgZ(6,"div",12),l.ynx(7,13),l.YNc(8,x,2,4,"ng-container",14),l.YNc(9,ae,2,4,"ng-container",14),l.YNc(10,V,2,4,"ng-container",14),l.BQk(),l.TgZ(11,"span",15),l.TgZ(12,"button",16),l.NdJ("click",function(){const O=l.CHM(g).$implicit;return l.oxw(2).reset(O.name)}),l._UZ(13,"i",7),l.qZA(),l.qZA(),l.qZA(),l.YNc(14,T,2,0,"span",17),l.qZA(),l.qZA()}if(2&R){const g=v.$implicit,f=l.oxw().$implicit,h=l.oxw(),O=l.MAs(1);l.xp6(1),l.Q6J("for",g.name),l.xp6(1),l.Oqu(g.displayName),l.xp6(2),l.Oqu(g.description),l.xp6(1),l.Gre("cd-col-form-input ",f.heading,""),l.xp6(2),l.Q6J("ngSwitch",g.type),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.milliseconds),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.bps),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.iops),l.xp6(2),l.Q6J("ngClass",l.VKq(13,q,h.isDisabled(g.name))),l.xp6(1),l.Q6J("ngClass",l.VKq(15,M,h.icons.erase)),l.xp6(1),l.Q6J("ngIf",h.form.showError("configuration."+g.name,O,"min"))}}function F(R,v){if(1&R){const g=l.EpF();l.TgZ(0,"div",4),l.TgZ(1,"h4",5),l.TgZ(2,"span",6),l.NdJ("click",function(){const O=l.CHM(g).$implicit;return l.oxw().toggleSectionVisibility(O.class)}),l._uU(3),l._UZ(4,"i",7),l.qZA(),l.qZA(),l.TgZ(5,"div",8),l.YNc(6,B,15,17,"div",9),l.qZA(),l.qZA()}if(2&R){const g=v.$implicit,f=l.oxw();l.xp6(3),l.hij(" ",g.heading," "),l.xp6(1),l.Q6J("ngClass",f.sectionVisibility[g.class]?f.icons.minusCircle:f.icons.addCircle),l.xp6(1),l.Tol(g.class),l.Q6J("hidden",!f.sectionVisibility[g.class]),l.xp6(1),l.Q6J("ngForOf",g.options)}}let Q=(()=>{class R{constructor(g,f){this.formatterService=g,this.rbdConfigurationService=f,this.initializeData=new I.t(1),this.changes=new l.vpe,this.icons=Ie.P,this.ngDataReady=new l.vpe,this.configurationType=j.r,this.sectionVisibility={}}ngOnInit(){const g=this.createConfigurationFormGroup();this.form.addControl("configuration",g),g.valueChanges.subscribe(()=>{this.changes.emit(this.getDirtyValues.bind(this))}),this.initializeData&&this.initializeData.subscribe(f=>{this.initialData=f.initialData;const h=f.sourceType;this.rbdConfigurationService.getWritableOptionFields().forEach(O=>{const H=f.initialData.filter(De=>De.name===O.name).pop();H&&H.source===h&&this.form.get(`configuration.${O.name}`).setValue(H.value)}),this.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(f=>this.sectionVisibility[f.class]=!1)}getDirtyValues(g=!1,f){if(g&&!f)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");const h={};return this.rbdConfigurationService.getWritableOptionFields().forEach(O=>{const H=this.form.get("configuration").get(O.name);this.initialData&&this.initialData[O.name]===H.value||(H.dirty||g&&H.source===f)&&(h[O.name]=null===H.value?H.value:O.type===j.r.bps?this.formatterService.toBytes(H.value):O.type===j.r.milliseconds?this.formatterService.toMilliseconds(H.value):O.type===j.r.iops?this.formatterService.toIops(H.value):H.value)}),h}createConfigurationFormGroup(){const g=new D.d({});return this.rbdConfigurationService.getWritableOptionFields().forEach(f=>{let h;if(f.type!==j.r.milliseconds&&f.type!==j.r.iops&&f.type!==j.r.bps)throw new Error(`Type ${f.type} is unknown, you may need to add it to RbdConfiguration class`);{let O=0;ne().forEach(this.initialData,H=>{H.name===f.name&&(O=H.value)}),h=new r.NI(O,r.kI.min(0))}g.addControl(f.name,h)}),g}reset(g){const f=this.form.get("configuration").get(g);f.disabled?(f.setValue(f.previousValue||0),f.enable(),f.previousValue||f.markAsPristine()):(f.previousValue=f.value,f.setValue(null),f.markAsDirty(),f.disable())}isDisabled(g){return this.form.get("configuration").get(g).disabled}toggleSectionVisibility(g){this.sectionVisibility[g]=!this.sectionVisibility[g]}}return R.\u0275fac=function(g){return new(g||R)(l.Y36(_e.H),l.Y36(be.n))},R.\u0275cmp=l.Xpm({type:R,selectors:[["cd-rbd-configuration-form"]],inputs:{form:"form",initializeData:"initializeData"},outputs:{changes:"changes"},decls:5,vars:2,consts:function(){let v,g,f;return v="RBD Configuration",g="Remove the local configuration value. The parent configuration value will be inherited and used instead.",f="The minimum value is 0",[[3,"formGroup"],["cfgFormGroup",""],v,["class","col-12",4,"ngFor","ngForOf"],[1,"col-12"],[1,"cd-header"],[1,"collapsible",3,"click"],["aria-hidden","true",3,"ngClass"],[3,"hidden"],["class","form-group row",4,"ngFor","ngForOf"],[1,"form-group","row"],[1,"cd-col-form-label",3,"for"],[1,"input-group"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"input-group-append"],["type","button","data-toggle","button","title",g,1,"btn","btn-light",3,"ngClass","click"],["class","invalid-feedback",4,"ngIf"],["type","text","cdMilliseconds","",1,"form-control",3,"id","name","formControlName","ngDataReady"],["type","text","defaultUnit","b","cdDimlessBinaryPerSecond","",1,"form-control",3,"id","name","formControlName","ngDataReady"],["type","text","cdIops","",1,"form-control",3,"id","name","formControlName","ngDataReady"],[1,"invalid-feedback"],f]},template:function(g,f){1&g&&(l.TgZ(0,"fieldset",0,1),l.TgZ(2,"legend"),l.SDv(3,2),l.qZA(),l.YNc(4,F,7,7,"div",3),l.qZA()),2&g&&(l.Q6J("formGroup",f.form.get("configuration")),l.xp6(4),l.Q6J("ngForOf",f.rbdConfigurationService.sections))},directives:[r.JL,r.sg,C.V,W.sg,W.mk,b.P,ie.S,W.RF,W.n9,Y.o,W.O5,r.Fj,e.b,k,r.JJ,r.u,Z,Ae],styles:[".collapsible[_ngcontent-%COMP%]{cursor:pointer;user-select:none}"]}),R})()},71752:(it,Oe,p)=>{p.d(Oe,{P:()=>V});var l=p(64337),r=p(30633),m=p(74788);let ne=(()=>{class T{transform(M){return{0:"global",1:"pool",2:"image"}[M]}}return T.\u0275fac=function(M){return new(M||T)},T.\u0275pipe=m.Yjl({name:"rbdConfigurationSource",type:T,pure:!0}),T})();var I=p(28211),Ie=p(34089),D=p(12057),j=p(20044),_e=p(48537),be=p(21766);const C=["configurationSourceTpl"],W=["configurationValueTpl"],b=["poolConfTable"];function ie(T,q){1&T&&(m.TgZ(0,"span"),m.SDv(1,6),m.qZA())}function Y(T,q){1&T&&(m.TgZ(0,"strong"),m.SDv(1,7),m.qZA())}function e(T,q){1&T&&(m.TgZ(0,"strong"),m.SDv(1,8),m.qZA())}function k(T,q){1&T&&(m.TgZ(0,"div",4),m.YNc(1,ie,2,0,"span",5),m.YNc(2,Y,2,0,"strong",5),m.YNc(3,e,2,0,"strong",5),m.qZA()),2&T&&(m.Q6J("ngSwitch",q.value),m.xp6(1),m.Q6J("ngSwitchCase","global"),m.xp6(1),m.Q6J("ngSwitchCase","image"),m.xp6(1),m.Q6J("ngSwitchCase","pool"))}function Ne(T,q){if(1&T&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"dimlessBinaryPerSecond"),m.qZA()),2&T){const M=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,M))}}function Z(T,q){if(1&T&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"milliseconds"),m.qZA()),2&T){const M=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,M))}}function Ae(T,q){if(1&T&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"iops"),m.qZA()),2&T){const M=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,M))}}function x(T,q){if(1&T&&(m.TgZ(0,"span"),m._uU(1),m.qZA()),2&T){const M=m.oxw().value;m.xp6(1),m.Oqu(M)}}function ae(T,q){if(1&T&&(m.TgZ(0,"div",4),m.YNc(1,Ne,3,3,"span",5),m.YNc(2,Z,3,3,"span",5),m.YNc(3,Ae,3,3,"span",5),m.YNc(4,x,2,1,"span",9),m.qZA()),2&T){const M=q.row,B=m.oxw();m.Q6J("ngSwitch",M.type),m.xp6(1),m.Q6J("ngSwitchCase",B.typeField.bps),m.xp6(1),m.Q6J("ngSwitchCase",B.typeField.milliseconds),m.xp6(1),m.Q6J("ngSwitchCase",B.typeField.iops)}}let V=(()=>{class T{constructor(M,B){this.formatterService=M,this.rbdConfigurationService=B,this.sourceField=r.h,this.typeField=r.r}ngOnInit(){this.poolConfigurationColumns=[{prop:"displayName",name:"Name"},{prop:"description",name:"Description"},{prop:"name",name:"Key"},{prop:"source",name:"Source",cellTemplate:this.configurationSourceTpl,pipe:new ne},{prop:"value",name:"Value",cellTemplate:this.configurationValueTpl}]}ngOnChanges(){!this.data||(this.data=this.data.filter(M=>this.rbdConfigurationService.getOptionFields().map(B=>B.name).includes(M.name)))}}return T.\u0275fac=function(M){return new(M||T)(m.Y36(I.H),m.Y36(Ie.n))},T.\u0275cmp=m.Xpm({type:T,selectors:[["cd-rbd-configuration-table"]],viewQuery:function(M,B){if(1&M&&(m.Gf(C,7),m.Gf(W,7),m.Gf(b,7)),2&M){let F;m.iGM(F=m.CRH())&&(B.configurationSourceTpl=F.first),m.iGM(F=m.CRH())&&(B.configurationValueTpl=F.first),m.iGM(F=m.CRH())&&(B.poolConfTable=F.first)}},inputs:{data:"data"},features:[m.TTD],decls:6,vars:2,consts:function(){let q,M,B;return q="Global",M="Image",B="Pool",[["identifier","name",3,"data","columns"],["poolConfTable",""],["configurationSourceTpl",""],["configurationValueTpl",""],[3,"ngSwitch"],[4,"ngSwitchCase"],q,M,B,[4,"ngSwitchDefault"]]},template:function(M,B){1&M&&(m._UZ(0,"cd-table",0,1),m.YNc(2,k,4,4,"ng-template",null,2,m.W1O),m.YNc(4,ae,5,4,"ng-template",null,3,m.W1O)),2&M&&m.Q6J("data",B.data)("columns",B.poolConfigurationColumns)},directives:[l.a,D.RF,D.n9,D.ED],pipes:[j.O,_e.J,be.A],styles:[""]}),T})()}}]);
\ No newline at end of file
index edf330098763d701cd61c2509b5a86dee31d6f07..0f40b833c75b9393d73957d3e2c1e6a48d835d90 100644 (file)
@@ -16,6 +16,83 @@ MIT
 @angular/router
 MIT
 
+@babel/runtime
+MIT
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+@babel/runtime-corejs3
+MIT
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+@braintree/sanitize-url
+MIT
+MIT License
+
+Copyright (c) 2017 Braintree
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
 @circlon/angular-tree-component
 MIT
 The MIT License (MIT)
@@ -322,6 +399,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
 
+autolinker
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2014 Gregory Jacobs (http://greg-jacobs.com)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
 balanced-match
 MIT
 (MIT)
@@ -347,6 +449,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
+base64-js
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2014 Jameson Little
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
 brace-expansion
 MIT
 MIT License
@@ -372,6 +499,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
+call-bind
+MIT
+MIT License
+
+Copyright (c) 2020 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
 can-use-dom
 MIT
 The MIT License (MIT)
@@ -411,6 +563,31 @@ The above copyright notice and this permission notice shall be included in all c
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
+classnames
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2018 Jed Watson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
 concat-map
 MIT
 This software is released under the MIT license:
@@ -433,6 +610,59 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
+cookie
+MIT
+(The MIT License)
+
+Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com>
+Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+copy-to-clipboard
+MIT
+MIT License
+
+Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
 core-js
 MIT
 Copyright (c) 2014-2022 Denis Pushkarev
@@ -456,11 +686,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
 
-detect-browser
+core-js-pure
+MIT
+Copyright (c) 2014-2022 Denis Pushkarev
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+cross-fetch
 MIT
 The MIT License (MIT)
 
-Copyright (c) 2019 Damon Oehlman <damon.oehlman@gmail.com>
+Copyright (c) 2017 Leonardo Quixadá
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -481,281 +734,467 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
-file-saver
+css.escape
 MIT
-The MIT License
+Copyright Mathias Bynens <https://mathiasbynens.be/>
 
-Copyright © 2016 [Eli Grey][1].
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
 
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-  [1]: http://eligrey.com
+deepmerge
+MIT
+The MIT License (MIT)
 
+Copyright (c) 2012 James Halliday, Josh Duff, and other contributors
 
-lodash
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+detect-browser
 MIT
-Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+The MIT License (MIT)
 
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+Copyright (c) 2019 Damon Oehlman <damon.oehlman@gmail.com>
 
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
 
-The following license applies to all parts of this software except as
-documented below:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
-====
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+dompurify
+(MPL-2.0 OR Apache-2.0)
+DOMPurify
+Copyright 2015 Mario Heiderich
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+DOMPurify is free software; you can redistribute it and/or modify it under the
+terms of either:
 
-====
+a) the Apache License Version 2.0, or
+b) the Mozilla Public License Version 2.0
 
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
+-----------------------------------------------------------------------------
 
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
+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
 
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
+    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.
 
+-----------------------------------------------------------------------------
+Mozilla Public License, version 2.0
 
-lodash-es
-MIT
-Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+1. Definitions
 
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+1.1. “Contributor”
 
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
+     means each individual or legal entity that creates, contributes to the
+     creation of, or owns Covered Software.
 
-The following license applies to all parts of this software except as
-documented below:
+1.2. “Contributor Version”
 
-====
+     means the combination of the Contributions of others (if any) used by a
+     Contributor and that particular Contributor’s Contribution.
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+1.3. “Contribution”
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+     means Covered Software of a particular Contributor.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+1.4. “Covered Software”
 
-====
+     means Source Code Form to which the initial Contributor has attached the
+     notice in Exhibit A, the Executable Form of such Source Code Form, and
+     Modifications of such Source Code Form, in each case including portions
+     thereof.
 
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
+1.5. “Incompatible With Secondary Licenses”
+     means
 
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
+     a. that the initial Contributor has attached the notice described in
+        Exhibit B to the Covered Software; or
 
-====
+     b. that the Covered Software was made available under the terms of version
+        1.1 or earlier of the License, but not also under the terms of a
+        Secondary License.
 
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
+1.6. “Executable Form”
 
+     means any form of the work other than Source Code Form.
 
-lodash.debounce
-MIT
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
+1.7. “Larger Work”
 
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+     means a work that combines Covered Software with other material, in a separate
+     file or files, that is not Covered Software.
 
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
+1.8. “License”
 
-The following license applies to all parts of this software except as
-documented below:
+     means this document.
 
-====
+1.9. “Licensable”
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+     means having the right to grant, to the maximum extent possible, whether at the
+     time of the initial grant or subsequently, any and all of the rights conveyed by
+     this License.
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+1.10. “Modifications”
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+     means any of the following:
 
-====
+     a. any file in Source Code Form that results from an addition to, deletion
+        from, or modification of the contents of Covered Software; or
 
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
+     b. any new file in Source Code Form that contains any Covered Software.
 
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
+1.11. “Patent Claims” of a Contributor
 
-====
+      means any patent claim(s), including without limitation, method, process,
+      and apparatus claims, in any patent Licensable by such Contributor that
+      would be infringed, but for the grant of the License, by the making,
+      using, selling, offering for sale, having made, import, or transfer of
+      either its Contributions or its Contributor Version.
 
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
+1.12. “Secondary License”
 
+      means either the GNU General Public License, Version 2.0, the GNU Lesser
+      General Public License, Version 2.1, the GNU Affero General Public
+      License, Version 3.0, or any later versions of those licenses.
 
-lodash.memoize
-MIT
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
+1.13. “Source Code Form”
 
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+      means the form of the work preferred for making modifications.
 
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
+1.14. “You” (or “Your”)
 
-The following license applies to all parts of this software except as
-documented below:
+      means an individual or a legal entity exercising rights under this
+      License. For legal entities, “You” includes any entity that controls, is
+      controlled by, or is under common control with You. For purposes of this
+      definition, “control” means (a) the power, direct or indirect, to cause
+      the direction or management of such entity, whether by contract or
+      otherwise, or (b) ownership of more than fifty percent (50%) of the
+      outstanding shares or beneficial ownership of such entity.
 
-====
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+2. License Grants and Conditions
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+2.1. Grants
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+     Each Contributor hereby grants You a world-wide, royalty-free,
+     non-exclusive license:
 
-====
+     a. under intellectual property rights (other than patent or trademark)
+        Licensable by such Contributor to use, reproduce, make available,
+        modify, display, perform, distribute, and otherwise exploit its
+        Contributions, either on an unmodified basis, with Modifications, or as
+        part of a Larger Work; and
 
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
+     b. under Patent Claims of such Contributor to make, use, sell, offer for
+        sale, have made, import, and otherwise transfer either its Contributions
+        or its Contributor Version.
 
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
+2.2. Effective Date
 
-====
+     The licenses granted in Section 2.1 with respect to any Contribution become
+     effective for each Contribution on the date the Contributor first distributes
+     such Contribution.
 
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
+2.3. Limitations on Grant Scope
 
+     The licenses granted in this Section 2 are the only rights granted under this
+     License. No additional rights or licenses will be implied from the distribution
+     or licensing of Covered Software under this License. Notwithstanding Section
+     2.1(b) above, no patent license is granted by a Contributor:
 
-lodash.throttle
-MIT
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
+     a. for any code that a Contributor has removed from Covered Software; or
 
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+     b. for infringements caused by: (i) Your and any other third party’s
+        modifications of Covered Software, or (ii) the combination of its
+        Contributions with other software (except as part of its Contributor
+        Version); or
 
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
+     c. under Patent Claims infringed by Covered Software in the absence of its
+        Contributions.
 
-The following license applies to all parts of this software except as
-documented below:
+     This License does not grant any rights in the trademarks, service marks, or
+     logos of any Contributor (except as may be necessary to comply with the
+     notice requirements in Section 3.4).
 
-====
+2.4. Subsequent Licenses
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+     No Contributor makes additional grants as a result of Your choice to
+     distribute the Covered Software under a subsequent version of this License
+     (see Section 10.2) or under the terms of a Secondary License (if permitted
+     under the terms of Section 3.3).
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+2.5. Representation
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+     Each Contributor represents that the Contributor believes its Contributions
+     are its original creation(s) or it has sufficient rights to grant the
+     rights to its Contributions conveyed by this License.
 
-====
+2.6. Fair Use
 
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
+     This License is not intended to limit any rights You have under applicable
+     copyright doctrines of fair use, fair dealing, or other equivalents.
 
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
+2.7. Conditions
 
-====
+     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+     Section 2.1.
 
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
 
+3. Responsibilities
 
-mobx
+3.1. Distribution of Source Form
+
+     All distribution of Covered Software in Source Code Form, including any
+     Modifications that You create or to which You contribute, must be under the
+     terms of this License. You must inform recipients that the Source Code Form
+     of the Covered Software is governed by the terms of this License, and how
+     they can obtain a copy of this License. You may not attempt to alter or
+     restrict the recipients’ rights in the Source Code Form.
+
+3.2. Distribution of Executable Form
+
+     If You distribute Covered Software in Executable Form then:
+
+     a. such Covered Software must also be made available in Source Code Form,
+        as described in Section 3.1, and You must inform recipients of the
+        Executable Form how they can obtain a copy of such Source Code Form by
+        reasonable means in a timely manner, at a charge no more than the cost
+        of distribution to the recipient; and
+
+     b. You may distribute such Executable Form under the terms of this License,
+        or sublicense it under different terms, provided that the license for
+        the Executable Form does not attempt to limit or alter the recipients’
+        rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+     You may create and distribute a Larger Work under terms of Your choice,
+     provided that You also comply with the requirements of this License for the
+     Covered Software. If the Larger Work is a combination of Covered Software
+     with a work governed by one or more Secondary Licenses, and the Covered
+     Software is not Incompatible With Secondary Licenses, this License permits
+     You to additionally distribute such Covered Software under the terms of
+     such Secondary License(s), so that the recipient of the Larger Work may, at
+     their option, further distribute the Covered Software under the terms of
+     either this License or such Secondary License(s).
+
+3.4. Notices
+
+     You may not remove or alter the substance of any license notices (including
+     copyright notices, patent notices, disclaimers of warranty, or limitations
+     of liability) contained within the Source Code Form of the Covered
+     Software, except that You may alter any license notices to the extent
+     required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+     You may choose to offer, and to charge a fee for, warranty, support,
+     indemnity or liability obligations to one or more recipients of Covered
+     Software. However, You may do so only on Your own behalf, and not on behalf
+     of any Contributor. You must make it absolutely clear that any such
+     warranty, support, indemnity, or liability obligation is offered by You
+     alone, and You hereby agree to indemnify every Contributor for any
+     liability incurred by such Contributor as a result of warranty, support,
+     indemnity or liability terms You offer. You may include additional
+     disclaimers of warranty and limitations of liability specific to any
+     jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+   If it is impossible for You to comply with any of the terms of this License
+   with respect to some or all of the Covered Software due to statute, judicial
+   order, or regulation then You must: (a) comply with the terms of this License
+   to the maximum extent possible; and (b) describe the limitations and the code
+   they affect. Such description must be placed in a text file included with all
+   distributions of the Covered Software under this License. Except to the
+   extent prohibited by statute or regulation, such description must be
+   sufficiently detailed for a recipient of ordinary skill to be able to
+   understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+     fail to comply with any of its terms. However, if You become compliant,
+     then the rights granted under this License from a particular Contributor
+     are reinstated (a) provisionally, unless and until such Contributor
+     explicitly and finally terminates Your grants, and (b) on an ongoing basis,
+     if such Contributor fails to notify You of the non-compliance by some
+     reasonable means prior to 60 days after You have come back into compliance.
+     Moreover, Your grants from a particular Contributor are reinstated on an
+     ongoing basis if such Contributor notifies You of the non-compliance by
+     some reasonable means, this is the first time You have received notice of
+     non-compliance with this License from such Contributor, and You become
+     compliant prior to 30 days after Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+     infringement claim (excluding declaratory judgment actions, counter-claims,
+     and cross-claims) alleging that a Contributor Version directly or
+     indirectly infringes any patent, then the rights granted to You by any and
+     all Contributors for the Covered Software under Section 2.1 of this License
+     shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+     license agreements (excluding distributors and resellers) which have been
+     validly granted by You or Your distributors under this License prior to
+     termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+   Covered Software is provided under this License on an “as is” basis, without
+   warranty of any kind, either expressed, implied, or statutory, including,
+   without limitation, warranties that the Covered Software is free of defects,
+   merchantable, fit for a particular purpose or non-infringing. The entire
+   risk as to the quality and performance of the Covered Software is with You.
+   Should any Covered Software prove defective in any respect, You (not any
+   Contributor) assume the cost of any necessary servicing, repair, or
+   correction. This disclaimer of warranty constitutes an essential part of this
+   License. No use of  any Covered Software is authorized under this License
+   except under this disclaimer.
+
+7. Limitation of Liability
+
+   Under no circumstances and under no legal theory, whether tort (including
+   negligence), contract, or otherwise, shall any Contributor, or anyone who
+   distributes Covered Software as permitted above, be liable to You for any
+   direct, indirect, special, incidental, or consequential damages of any
+   character including, without limitation, damages for lost profits, loss of
+   goodwill, work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses, even if such party shall have been
+   informed of the possibility of such damages. This limitation of liability
+   shall not apply to liability for death or personal injury resulting from such
+   party’s negligence to the extent applicable law prohibits such limitation.
+   Some jurisdictions do not allow the exclusion or limitation of incidental or
+   consequential damages, so this exclusion and limitation may not apply to You.
+
+8. Litigation
+
+   Any litigation relating to this License may be brought only in the courts of
+   a jurisdiction where the defendant maintains its principal place of business
+   and such litigation shall be governed by laws of that jurisdiction, without
+   reference to its conflict-of-law provisions. Nothing in this Section shall
+   prevent a party’s ability to bring cross-claims or counter-claims.
+
+9. Miscellaneous
+
+   This License represents the complete agreement concerning the subject matter
+   hereof. If any provision of this License is held to be unenforceable, such
+   provision shall be reformed only to the extent necessary to make it
+   enforceable. Any law or regulation which provides that the language of a
+   contract shall be construed against the drafter shall not be used to construe
+   this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+      Mozilla Foundation is the license steward. Except as provided in Section
+      10.3, no one other than the license steward has the right to modify or
+      publish new versions of this License. Each version will be given a
+      distinguishing version number.
+
+10.2. Effect of New Versions
+
+      You may distribute the Covered Software under the terms of the version of
+      the License under which You originally received the Covered Software, or
+      under the terms of any subsequent version published by the license
+      steward.
+
+10.3. Modified Versions
+
+      If you create software not governed by this License, and you want to
+      create a new license for such software, you may create and use a modified
+      version of this License if you rename the license and remove any
+      references to the name of the license steward (except to note that such
+      modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
+      If You choose to distribute Source Code Form that is Incompatible With
+      Secondary Licenses under the terms of this version of the License, the
+      notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+
+      This Source Code Form is subject to the
+      terms of the Mozilla Public License, v.
+      2.0. If a copy of the MPL was not
+      distributed with this file, You can
+      obtain one at
+      http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file, then
+You may include the notice in a location (such as a LICENSE file in a relevant
+directory) where a recipient would be likely to look for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - “Incompatible With Secondary Licenses” Notice
+
+      This Source Code Form is “Incompatible
+      With Secondary Licenses”, as defined by
+      the Mozilla Public License, v. 2.0.
+
+
+
+drange
 MIT
 The MIT License (MIT)
 
-Copyright (c) 2015 Michel Weststrate
+Copyright (c) 2014 David Tudury
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -776,18 +1215,162 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
-moment
+fast-json-patch
 MIT
-Copyright (c) JS Foundation and other contributors
+(The MIT License)
 
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
+Copyright (c) 2013, 2014, 2020 Joachim Wester
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+fault
+MIT
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+file-saver
+MIT
+The MIT License
+
+Copyright © 2016 [Eli Grey][1].
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+  [1]: http://eligrey.com
+
+
+format
+MIT
+
+formdata-node
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2017-present Nick K.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+function-bind
+MIT
+Copyright (c) 2013 Raynos.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+
+get-intrinsic
+MIT
+MIT License
+
+Copyright (c) 2020 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+has
+MIT
+Copyright (c) 2013 Thiago de Arruda
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
 
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
@@ -802,11 +1385,1125 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
 
-ng-block-ui
+has-symbols
+MIT
+MIT License
+
+Copyright (c) 2016 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+highlight.js
+BSD-3-Clause
+BSD 3-Clause License
+
+Copyright (c) 2006, Ivan Sagalaev.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+hoist-non-react-statics
+BSD-3-Clause
+Software License Agreement (BSD License)
+========================================
+
+Copyright (c) 2015, Yahoo! Inc. All rights reserved.
+----------------------------------------------------
+
+Redistribution and use of this software in source and binary forms, with or
+without modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  * Neither the name of Yahoo! Inc. nor the names of YUI's contributors may be
+    used to endorse or promote products derived from this software without
+    specific prior written permission of Yahoo! Inc.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ieee754
+BSD-3-Clause
+Copyright 2008 Fair Oaks Labs, Inc.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+immutable
+MIT
+MIT License
+
+Copyright (c) 2014-present, Facebook, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+is-plain-object
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2014-2017, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+js-file-download
+MIT
+Copyright 2017 Kenneth Jiang
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
+
+
+js-yaml
+MIT
+(The MIT License)
+
+Copyright (C) 2011-2015 by Vitaly Puzrin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+lodash
+MIT
+Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+lodash-es
+MIT
+Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+lodash.debounce
+MIT
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+lodash.memoize
+MIT
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+lodash.throttle
+MIT
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+lowlight
+MIT
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+mobx
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015 Michel Weststrate
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+moment
+MIT
+Copyright (c) JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+ng-block-ui
+MIT
+MIT License
+
+Copyright (c) 2017 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+ng-click-outside
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2016 Eugene Cheung
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+ng2-charts
+ISC
+
+ngx-pipe-function
+MIT License
+
+Copyright (c) 2019 Artem Lanovyy
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+ngx-toastr
+MIT
+The MIT License (MIT)
+
+Copyright (c) Scott Cooper <scttcper@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+object-assign
+MIT
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+object-inspect
+MIT
+MIT License
+
+Copyright (c) 2013 James Halliday
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+prop-types
+MIT
+MIT License
+
+Copyright (c) 2013-present, Facebook, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+punycode
+MIT
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+qs
+BSD-3-Clause
+BSD 3-Clause License
+
+Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+querystring
+MIT
+
+Copyright 2012 Irakli Gozalishvili. All rights reserved.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+
+querystringify
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+randexp
+MIT
+MIT License
+
+Copyright (C) 2011 by fent
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. 
+
+
+react
+MIT
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+react-copy-to-clipboard
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2016 Nik Butenko
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+react-debounce-input
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2016 Nik Butenko
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+react-dom
+MIT
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+react-immutable-proptypes
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015 James Burnett
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+react-immutable-pure-component
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2017 Piotr Tomasz Monarski
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+react-is
+MIT
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+react-redux
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015-present Dan Abramov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+react-syntax-highlighter
+MIT
+MIT License
+
+Copyright (c) 2019 Conor Hastings
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+redux
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015-present Dan Abramov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+redux-immutable
+BSD-3-Clause
+Copyright (c) 2016, Gajus Kuizinas (http://gajus.com/)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Gajus Kuizinas (http://gajus.com/) nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANUARY BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+remarkable
 MIT
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2017 
+Copyright (c) 2014-2016, Jon Schlinkert
+Copyright (c) 2014 Jon Schlinkert, Vitaly Puzrin.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -815,23 +2512,23 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
 
 
-ng-click-outside
+repeat-string
 MIT
 The MIT License (MIT)
 
-Copyright (c) 2016 Eugene Cheung
+Copyright (c) 2014-2016, Jon Schlinkert.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -852,13 +2549,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
 
-ng2-charts
-ISC
-
-ngx-pipe-function
-MIT License
+requires-port
+MIT
+The MIT License (MIT)
 
-Copyright (c) 2019 Artem Lanovyy
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -879,11 +2574,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
-ngx-toastr
+
+reselect
 MIT
 The MIT License (MIT)
 
-Copyright (c) Scott Cooper <scttcper@gmail.com>
+Copyright (c) 2015-2018 Reselect Contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -904,6 +2600,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
+ret
+MIT
+MIT License
+
+Copyright (C) 2011 by fent
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. 
+
+
 rxjs
 Apache-2.0
                                Apache License
@@ -1081,81 +2802,329 @@ Apache-2.0
     incurred by, or claims asserted against, such Contributor by reason
     of your accepting any such warranty or additional liability.
 
- END OF TERMS AND CONDITIONS
+ 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 (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
+
+ 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.
+
+
+scheduler
+MIT
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+serialize-error
+MIT
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+side-channel
+MIT
+MIT License
+
+Copyright (c) 2019 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+simplebar
+MIT
+
+simplebar-angular
+The MIT License (MIT)
+
+Copyright (c) 2015 Jonathan Nicol
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+swagger-client
+Apache-2.0
+
+                                 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
 
- APPENDIX: How to apply the Apache License to your work.
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
 
-    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.
+      (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
 
- Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
+      (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.
 
- 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
+      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.
 
-     http://www.apache.org/licenses/LICENSE-2.0
+   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.
 
- 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.
+   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.
 
-simplebar
-MIT
-The MIT License (MIT)
+   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.
 
-Copyright (c) 2015 Jonathan Nicol
+   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.
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+   END OF TERMS AND CONDITIONS
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+   APPENDIX: How to apply the Apache License to your work.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+      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.
 
-simplebar-angular
-The MIT License (MIT)
+   Copyright [yyyy] [name of copyright owner]
 
-Copyright (c) 2015 Jonathan Nicol
+   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
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+       http://www.apache.org/licenses/LICENSE-2.0
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+   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.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
 
 swagger-ui
 Apache-2.0
@@ -1363,6 +3332,37 @@ Apache-2.0
    limitations under the License.
 
 
+toggle-selection
+MIT
+
+traverse
+MIT
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+http://www.opensource.org/licenses/mit-license.php 
+
+Copyright 2010 James Halliday (mail@substack.net)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
 tslib
 0BSD
 Copyright (c) Microsoft Corporation.
@@ -1378,6 +3378,111 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 PERFORMANCE OF THIS SOFTWARE.
 
+url
+MIT
+The MIT License (MIT)
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+url-parse
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+xml-but-prettier
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015 Jonathan Persson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+zenscroll
+Unlicense
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org>
+
+
+
 zone.js
 MIT
 The MIT License
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/483.43ef92bcd845cb24eae3.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/483.43ef92bcd845cb24eae3.js
new file mode 100644 (file)
index 0000000..1f9b929
--- /dev/null
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[483],{70483:(ct,Oe,p)=>{p.r(Oe),p.d(Oe,{BlockModule:()=>$t,RoutedBlockModule:()=>sr});var l=p(12057),a=p(24751),m=p(6283),ne=p(19723),N=p(38549),Ie=p(37496),v=p(79512),U=p(4222),re=p(54462),Ae=p(44466),be=p(23815),S=p.n(be),le=p(35758),D=p(64762),ie=p(58497),V=p(93523),e=p(74788);let X=class{constructor(s){this.http=s}listTargets(){return this.http.get("api/iscsi/target")}getTarget(s){return this.http.get(`api/iscsi/target/${s}`)}updateTarget(s,t){return this.http.put(`api/iscsi/target/${s}`,t,{observe:"response"})}status(){return this.http.get("ui-api/iscsi/status")}settings(){return this.http.get("ui-api/iscsi/settings")}version(){return this.http.get("ui-api/iscsi/version")}portals(){return this.http.get("ui-api/iscsi/portals")}createTarget(s){return this.http.post("api/iscsi/target",s,{observe:"response"})}deleteTarget(s){return this.http.delete(`api/iscsi/target/${s}`,{observe:"response"})}getDiscovery(){return this.http.get("api/iscsi/discoveryauth")}updateDiscovery(s){return this.http.put("api/iscsi/discoveryauth",s)}overview(){return this.http.get("ui-api/iscsi/overview")}};X.\u0275fac=function(s){return new(s||X)(e.LFG(ie.eN))},X.\u0275prov=e.Yz7({token:X,factory:X.\u0275fac,providedIn:"root"}),X=(0,D.gn)([V.o,(0,D.w6)("design:paramtypes",[ie.eN])],X);var Ne=p(88002),Fe=p(76189),L=p(19358),he=p(34089);let q=class extends Fe.S{constructor(s,t){super(),this.http=s,this.rbdConfigurationService=t}isRBDPool(s){return-1!==S().indexOf(s.application_metadata,"rbd")&&!s.pool_name.includes("/")}create(s){return this.http.post("api/block/image",s,{observe:"response"})}delete(s){return this.http.delete(`api/block/image/${s.toStringEncoded()}`,{observe:"response"})}update(s,t){return this.http.put(`api/block/image/${s.toStringEncoded()}`,t,{observe:"response"})}get(s){return this.http.get(`api/block/image/${s.toStringEncoded()}`)}list(s){return this.http.get("api/block/image",{params:s,headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"}).pipe((0,Ne.U)(t=>t.body.map(o=>(o.value.map(i=>(i.configuration&&i.configuration.map(_=>Object.assign(_,this.rbdConfigurationService.getOptionByName(_.name))),i)),o.headers=t.headers,o))))}copy(s,t){return this.http.post(`api/block/image/${s.toStringEncoded()}/copy`,t,{observe:"response"})}flatten(s){return this.http.post(`api/block/image/${s.toStringEncoded()}/flatten`,null,{observe:"response"})}defaultFeatures(){return this.http.get("api/block/image/default_features")}cloneFormatVersion(){return this.http.get("api/block/image/clone_format_version")}createSnapshot(s,t){const o={snapshot_name:t};return this.http.post(`api/block/image/${s.toStringEncoded()}/snap`,o,{observe:"response"})}renameSnapshot(s,t,o){const i={new_snap_name:o};return this.http.put(`api/block/image/${s.toStringEncoded()}/snap/${t}`,i,{observe:"response"})}protectSnapshot(s,t,o){const i={is_protected:o};return this.http.put(`api/block/image/${s.toStringEncoded()}/snap/${t}`,i,{observe:"response"})}rollbackSnapshot(s,t){return this.http.post(`api/block/image/${s.toStringEncoded()}/snap/${t}/rollback`,null,{observe:"response"})}cloneSnapshot(s,t,o){return this.http.post(`api/block/image/${s.toStringEncoded()}/snap/${t}/clone`,o,{observe:"response"})}deleteSnapshot(s,t){return this.http.delete(`api/block/image/${s.toStringEncoded()}/snap/${t}`,{observe:"response"})}listTrash(){return this.http.get("api/block/image/trash/")}createNamespace(s,t){return this.http.post(`api/block/pool/${s}/namespace`,{namespace:t},{observe:"response"})}listNamespaces(s){return this.http.get(`api/block/pool/${s}/namespace/`)}deleteNamespace(s,t){return this.http.delete(`api/block/pool/${s}/namespace/${t}`,{observe:"response"})}moveTrash(s,t){return this.http.post(`api/block/image/${s.toStringEncoded()}/move_trash`,{delay:t},{observe:"response"})}purgeTrash(s){return this.http.post(`api/block/image/trash/purge/?pool_name=${s}`,null,{observe:"response"})}restoreTrash(s,t){return this.http.post(`api/block/image/trash/${s.toStringEncoded()}/restore`,{new_image_name:t},{observe:"response"})}removeTrash(s,t=!1){return this.http.delete(`api/block/image/trash/${s.toStringEncoded()}/?force=${t}`,{observe:"response"})}};q.\u0275fac=function(s){return new(s||q)(e.LFG(ie.eN),e.LFG(he.n))},q.\u0275prov=e.Yz7({token:q,factory:q.\u0275fac,providedIn:"root"}),(0,D.gn)([(0,D.fM)(1,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[L.N,String]),(0,D.w6)("design:returntype",void 0)],q.prototype,"createSnapshot",null),(0,D.gn)([(0,D.fM)(2,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[L.N,String,String]),(0,D.w6)("design:returntype",void 0)],q.prototype,"renameSnapshot",null),(0,D.gn)([(0,D.fM)(2,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[L.N,String,Boolean]),(0,D.w6)("design:returntype",void 0)],q.prototype,"protectSnapshot",null),(0,D.gn)([(0,D.fM)(1,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[L.N,String]),(0,D.w6)("design:returntype",void 0)],q.prototype,"restoreTrash",null),q=(0,D.gn)([V.o,(0,D.w6)("design:paramtypes",[ie.eN,he.n])],q);var F=p(7022),y=p(14745),T=p(65862),H=p(93614),x=p(95463),z=p(77205),A=p(86919),R=p(76111),u=p(32337),C=p(60312),h=p(41582),O=p(56310),$=p(87925),k=p(94276),j=p(30839);function to(n,s){if(1&n&&(e.TgZ(0,"option",6),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("ngValue",t),e.xp6(1),e.Oqu(t)}}function oo(n,s){if(1&n&&(e.TgZ(0,"select",5),e._UZ(1,"option",6),e.YNc(2,to,2,2,"option",7),e.qZA()),2&n){const t=e.oxw();e.s9C("id",t.setting),e.s9C("name",t.setting),e.Q6J("formControlName",t.setting),e.xp6(1),e.Q6J("ngValue",null),e.xp6(1),e.Q6J("ngForOf",t.limits.values)}}function no(n,s){if(1&n&&e._UZ(0,"input",10),2&n){const t=e.oxw(2);e.Q6J("formControlName",t.setting)}}function io(n,s){if(1&n&&e._UZ(0,"input",11),2&n){const t=e.oxw(2);e.Q6J("formControlName",t.setting)}}function so(n,s){if(1&n&&(e.ynx(0),e._UZ(1,"br"),e.TgZ(2,"div",12),e._UZ(3,"input",13),e.TgZ(4,"label",14),e._uU(5,"Yes"),e.qZA(),e.qZA(),e.TgZ(6,"div",12),e._UZ(7,"input",13),e.TgZ(8,"label",14),e._uU(9,"No"),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw(2);e.xp6(3),e.Q6J("id",t.setting+"True")("value",!0)("formControlName",t.setting),e.xp6(1),e.Q6J("for",t.setting+"True"),e.xp6(3),e.Q6J("id",t.setting+"False")("value",!1)("formControlName",t.setting),e.xp6(1),e.Q6J("for",t.setting+"False")}}function _o(n,s){if(1&n&&(e.TgZ(0,"span"),e.YNc(1,no,1,1,"input",8),e.YNc(2,io,1,1,"input",9),e.YNc(3,so,10,8,"ng-container",3),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf","int"===t.limits.type),e.xp6(1),e.Q6J("ngIf","str"===t.limits.type),e.xp6(1),e.Q6J("ngIf","bool"===t.limits.type)}}function ao(n,s){if(1&n&&(e.TgZ(0,"span",15),e.ynx(1),e.SDv(2,16),e.BQk(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.pQV(t.limits.min),e.QtT(2)}}function ro(n,s){if(1&n&&(e.TgZ(0,"span",15),e.ynx(1),e.SDv(2,17),e.BQk(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.pQV(t.limits.max),e.QtT(2)}}let dt=(()=>{class n{ngOnInit(){const t=[];"min"in this.limits&&t.push(a.kI.min(this.limits.min)),"max"in this.limits&&t.push(a.kI.max(this.limits.max)),this.settingsForm.get(this.setting).setValidators(t)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-setting"]],inputs:{settingsForm:"settingsForm",formDir:"formDir",setting:"setting",limits:"limits"},decls:7,vars:7,consts:function(){let s,t;return s="Must be greater than or equal to " + "\ufffd0\ufffd" + ".",t="Must be less than or equal to " + "\ufffd0\ufffd" + ".",[[1,"form-group",3,"formGroup"],[1,"col-form-label",3,"for"],["class","form-control",3,"id","name","formControlName",4,"ngIf"],[4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"form-control",3,"id","name","formControlName"],[3,"ngValue"],[3,"ngValue",4,"ngFor","ngForOf"],["type","number","class","form-control",3,"formControlName",4,"ngIf"],["type","text","class","form-control",3,"formControlName",4,"ngIf"],["type","number",1,"form-control",3,"formControlName"],["type","text",1,"form-control",3,"formControlName"],[1,"custom-control","custom-radio","custom-control-inline"],["type","radio",1,"custom-control-input",3,"id","value","formControlName"],[1,"custom-control-label",3,"for"],[1,"invalid-feedback"],s,t]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e._uU(2),e.qZA(),e.YNc(3,oo,3,5,"select",2),e.YNc(4,_o,4,3,"span",3),e.YNc(5,ao,3,1,"span",4),e.YNc(6,ro,3,1,"span",4),e.qZA()),2&t&&(e.Q6J("formGroup",o.settingsForm),e.xp6(1),e.s9C("for",o.setting),e.xp6(1),e.Oqu(o.setting),e.xp6(1),e.Q6J("ngIf","enum"===o.limits.type),e.xp6(1),e.Q6J("ngIf","enum"!==o.limits.type),e.xp6(1),e.Q6J("ngIf",o.settingsForm.showError(o.setting,o.formDir,"min")),e.xp6(1),e.Q6J("ngIf",o.settingsForm.showError(o.setting,o.formDir,"max")))},directives:[O.P,a.JL,a.sg,h.V,l.O5,$.o,a.EJ,k.b,a.JJ,a.u,a.YN,a.Kr,l.sg,a.wV,a.Fj,a._],styles:[""]}),n})();var Je=p(88820);function lo(n,s){1&n&&(e.TgZ(0,"span",29),e.SDv(1,30),e.qZA())}function co(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"legend",10),e.SDv(2,21),e.qZA(),e.TgZ(3,"div",12),e.TgZ(4,"div",13),e.TgZ(5,"label",22),e.SDv(6,23),e.qZA(),e._UZ(7,"input",24),e.YNc(8,lo,2,0,"span",25),e.qZA(),e.qZA(),e.TgZ(9,"div",12),e.TgZ(10,"div",13),e.TgZ(11,"label",26),e.SDv(12,27),e.qZA(),e._UZ(13,"input",28),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(9);e.xp6(8),e.Q6J("ngIf",t.settingsForm.showError("lun",o,"required"))}}function po(n,s){if(1&n&&(e.TgZ(0,"option",31),e._uU(1),e.ALo(2,"iscsiBackstore"),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(e.lcZ(2,2,t))}}function go(n,s){if(1&n&&(e.TgZ(0,"div",12),e.TgZ(1,"div",13),e._UZ(2,"cd-iscsi-setting",33),e.qZA(),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(2).$implicit,i=e.oxw(),_=e.MAs(9);e.xp6(2),e.Q6J("settingsForm",i.settingsForm)("formDir",_)("setting",t.key)("limits",i.getDiskControlLimits(o,t.key))}}function uo(n,s){if(1&n&&(e.ynx(0),e.YNc(1,go,3,4,"div",32),e.ALo(2,"keyvalue"),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw();e.xp6(1),e.Q6J("ngForOf",e.lcZ(2,1,o.disk_default_controls[t]))}}function mo(n,s){if(1&n&&(e.ynx(0),e.YNc(1,uo,3,3,"ng-container",9),e.BQk()),2&n){const t=s.$implicit,o=e.oxw();e.xp6(1),e.Q6J("ngIf",o.settingsForm.value.backstore===t)}}let To=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.iscsiService=o,this.actionLabels=i}ngOnInit(){const t={backstore:new a.NI(this.imagesSettings[this.image].backstore),lun:new a.NI(this.imagesSettings[this.image].lun),wwn:new a.NI(this.imagesSettings[this.image].wwn)};S().forEach(this.backstores,o=>{const i=this.imagesSettings[this.image][o]||{};S().forIn(this.disk_default_controls[o],(_,r)=>{t[r]=new a.NI(i[r])})}),this.settingsForm=new x.d(t)}getDiskControlLimits(t,o){return this.disk_controls_limits?this.disk_controls_limits[t][o]:{type:"int"}}save(){const t=this.settingsForm.controls.backstore.value,o=this.settingsForm.controls.lun.value,i=this.settingsForm.controls.wwn.value,_={};S().forIn(this.settingsForm.controls,(r,c)=>{""!==r.value&&null!==r.value&&c in this.disk_default_controls[this.settingsForm.value.backstore]&&(_[c]=r.value,S().forEach(this.backstores,d=>{d!==t&&c in(this.imagesSettings[this.image][d]||{})&&(this.imagesSettings[this.image][d][c]=r.value)}))}),this.imagesSettings[this.image].backstore=t,this.imagesSettings[this.image].lun=o,this.imagesSettings[this.image].wwn=i,this.imagesSettings[this.image][t]=_,this.imagesSettings=Object.assign({},this.imagesSettings),this.control.updateValueAndValidity({emitEvent:!1}),this.activeModal.close()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(X),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-image-settings-modal"]],decls:25,vars:8,consts:function(){let s,t,o,i,_,r,c,d;return s="Configure",t="Changing these parameters from their default values is usually not necessary.",o="Settings",i="Backstore",_="Identifier",r="lun",c="wwn",d="This field is required.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","settingsForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"alert-warning"],t,[4,"ngIf"],[1,"cd-header"],o,[1,"form-group","row"],[1,"col-sm-12"],[1,"col-form-label"],i,["id","backstore","name","backstore","formControlName","backstore",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],[4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],_,["for","lun",1,"col-form-label","required"],r,["type","number","id","lun","name","lun","formControlName","lun",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","wwn",1,"col-form-label"],c,["type","text","id","wwn","name","wwn","formControlName","wwn",1,"form-control"],[1,"invalid-feedback"],d,[3,"value"],["class","form-group row",4,"ngFor","ngForOf"],[3,"settingsForm","formDir","setting","limits"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.ynx(2),e.SDv(3,2),e.BQk(),e._uU(4,"\xa0 "),e.TgZ(5,"small"),e._uU(6),e.qZA(),e.BQk(),e.ynx(7,3),e.TgZ(8,"form",4,5),e.TgZ(10,"div",6),e.TgZ(11,"p",7),e.SDv(12,8),e.qZA(),e.YNc(13,co,14,1,"span",9),e.TgZ(14,"legend",10),e.SDv(15,11),e.qZA(),e.TgZ(16,"div",12),e.TgZ(17,"div",13),e.TgZ(18,"label",14),e.SDv(19,15),e.qZA(),e.TgZ(20,"select",16),e.YNc(21,po,3,4,"option",17),e.qZA(),e.qZA(),e.qZA(),e.YNc(22,mo,2,1,"ng-container",18),e.qZA(),e.TgZ(23,"div",19),e.TgZ(24,"cd-form-button-panel",20),e.NdJ("submitActionEvent",function(){return o.save()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(6),e.Oqu(o.image),e.xp6(2),e.Q6J("formGroup",o.settingsForm),e.xp6(5),e.Q6J("ngIf",o.api_version>=1),e.xp6(8),e.Q6J("ngForOf",o.backstores),e.xp6(1),e.Q6J("ngForOf",o.backstores),e.xp6(2),e.Q6J("form",o.settingsForm)("submitText",o.actionLabels.UPDATE))},directives:[C.z,a._Y,a.JL,a.sg,h.V,l.O5,O.P,$.o,a.EJ,k.b,a.JJ,a.u,l.sg,j.p,a.wV,a.Fj,a.YN,a.Kr,dt],pipes:[Je.V,l.Nd],styles:[""]}),n})();function fo(n,s){if(1&n&&(e.TgZ(0,"div",12),e.TgZ(1,"div",13),e._UZ(2,"cd-iscsi-setting",14),e.qZA(),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(),i=e.MAs(5);e.xp6(2),e.Q6J("settingsForm",o.settingsForm)("formDir",i)("setting",t.key)("limits",o.getTargetControlLimits(t.key))}}let Co=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.iscsiService=o,this.actionLabels=i}ngOnInit(){const t={};S().forIn(this.target_default_controls,(o,i)=>{t[i]=new a.NI(this.target_controls.value[i])}),this.settingsForm=new x.d(t)}save(){const t={};S().forIn(this.settingsForm.controls,(o,i)=>{""===o.value||null===o.value||(t[i]=o.value)}),this.target_controls.setValue(t),this.activeModal.close()}getTargetControlLimits(t){return this.target_controls_limits?this.target_controls_limits[t]:["Yes","No"].includes(this.target_default_controls[t])?{type:"bool"}:{type:"int"}}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(X),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-iqn-settings-modal"]],decls:13,vars:7,consts:function(){let s,t;return s="Advanced Settings",t="Changing these parameters from their default values is usually not necessary.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","settingsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"alert-warning"],t,["class","form-group row",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"form-group","row"],[1,"col-sm-12"],[3,"settingsForm","formDir","setting","limits"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p",7),e.SDv(8,8),e.qZA(),e.YNc(9,fo,3,4,"div",9),e.ALo(10,"keyvalue"),e.qZA(),e.TgZ(11,"div",10),e.TgZ(12,"cd-form-button-panel",11),e.NdJ("submitActionEvent",function(){return o.save()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.settingsForm),e.xp6(5),e.Q6J("ngForOf",e.lcZ(10,5,o.settingsForm.controls)),e.xp6(3),e.Q6J("form",o.settingsForm)("submitText",o.actionLabels.UPDATE))},directives:[C.z,a._Y,a.JL,a.sg,h.V,l.sg,j.p,O.P,dt],pipes:[l.Nd],styles:[""]}),n})();var de=p(63285),pt=p(63622);let So=(()=>{class n{constructor(t){this.ngControl=t}onInput(t){this.setValue(t)}setValue(t){t=S().isString(t)?t.trim():t,this.ngControl.control.setValue(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(a.a5))},n.\u0275dir=e.lG2({type:n,selectors:[["","cdTrim",""]],hostBindings:function(t,o){1&t&&e.NdJ("input",function(_){return o.onInput(_.target.value)})}}),n})();var Eo=p(39092),gt=p(4416),Ye=p(58039),et=p(10545);function Ro(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,42),e.qZA())}function Mo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,43),e.qZA())}function Oo(n,s){1&n&&(e.TgZ(0,"span",41),e.ynx(1),e.SDv(2,44),e.BQk(),e._UZ(3,"br"),e.ynx(4),e.SDv(5,45),e.BQk(),e._UZ(6,"br"),e.TgZ(7,"a",46),e.SDv(8,47),e.qZA(),e.qZA())}function Ao(n,s){1&n&&(e.TgZ(0,"span",48),e.SDv(1,49),e.qZA())}const J=function(n){return[n]};function ho(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const i=e.CHM(t),_=i.index,r=i.$implicit;return e.oxw(2).removePortal(_,r)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit,o=e.oxw(2);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,J,o.icons.destroy))}}function Po(n,s){if(1&n&&(e.TgZ(0,"span",41),e.SDv(1,53),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.pQV(t.minimum_gateways),e.QtT(1)}}function Io(n,s){if(1&n&&(e.TgZ(0,"div",56),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit,o=e.oxw(2);e.xp6(1),e.hij("lun: ",o.imagesSettings[t].lun,"")}}function bo(n,s){if(1&n&&(e.ynx(0),e.SDv(1,57),e.ALo(2,"iscsiBackstore"),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw(2);e.xp6(2),e.pQV(e.lcZ(2,1,o.imagesSettings[t].backstore)),e.QtT(1)}}function No(n,s){1&n&&(e.ynx(0),e.SDv(1,58),e.BQk())}function Fo(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.YNc(4,Io,2,1,"div",54),e.TgZ(5,"button",52),e.NdJ("click",function(){const _=e.CHM(t).$implicit;return e.oxw(2).imageSettingsModal(_)}),e._UZ(6,"i",16),e.qZA(),e.TgZ(7,"button",52),e.NdJ("click",function(){const i=e.CHM(t),_=i.index,r=i.$implicit;return e.oxw(2).removeImage(_,r)}),e._UZ(8,"i",16),e.qZA(),e.qZA(),e.qZA(),e.TgZ(9,"span",48),e.YNc(10,bo,3,3,"ng-container",55),e.YNc(11,No,2,0,"ng-container",55),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit,o=e.oxw(2);e.xp6(2),e.Q6J("value",t),e.xp6(2),e.Q6J("ngIf",o.api_version>=1),e.xp6(2),e.Q6J("ngClass",e.VKq(6,J,o.icons.deepCheck)),e.xp6(2),e.Q6J("ngClass",e.VKq(8,J,o.icons.destroy)),e.xp6(2),e.Q6J("ngIf",o.backstores.length>1),e.xp6(1),e.Q6J("ngIf",o.hasAdvancedSettings(o.imagesSettings[t][o.imagesSettings[t].backstore]))}}function Do(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,59),e.qZA())}function vo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,60),e.qZA())}function Lo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,78),e.qZA())}function $o(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,79),e.qZA())}function Zo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,80),e.qZA())}function Bo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,81),e.qZA())}function Go(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,82),e.qZA())}function yo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,83),e.qZA())}function xo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,84),e.qZA())}function wo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,85),e.qZA())}function qo(n,s){if(1&n&&(e.TgZ(0,"div",61),e.TgZ(1,"div",8),e.TgZ(2,"label",62),e.ynx(3),e.SDv(4,63),e.BQk(),e.qZA(),e.TgZ(5,"div",11),e._UZ(6,"input",64),e.YNc(7,Lo,2,0,"span",17),e.YNc(8,$o,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(9,"div",8),e.TgZ(10,"label",65),e.ynx(11),e.SDv(12,66),e.BQk(),e.qZA(),e.TgZ(13,"div",11),e.TgZ(14,"div",12),e._UZ(15,"input",67),e.TgZ(16,"span",14),e._UZ(17,"button",68),e._UZ(18,"cd-copy-2-clipboard-button",69),e.qZA(),e.qZA(),e.YNc(19,Zo,2,0,"span",17),e.YNc(20,Bo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(21,"div",8),e.TgZ(22,"label",70),e.ynx(23),e.SDv(24,71),e.BQk(),e.qZA(),e.TgZ(25,"div",11),e._UZ(26,"input",72),e.YNc(27,Go,2,0,"span",17),e.YNc(28,yo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(29,"div",8),e.TgZ(30,"label",73),e.ynx(31),e.SDv(32,74),e.BQk(),e.qZA(),e.TgZ(33,"div",11),e.TgZ(34,"div",12),e._UZ(35,"input",75),e.TgZ(36,"span",14),e._UZ(37,"button",76),e._UZ(38,"cd-copy-2-clipboard-button",77),e.qZA(),e.qZA(),e.YNc(39,xo,2,0,"span",17),e.YNc(40,wo,2,0,"span",17),e.qZA(),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(7),e.Q6J("ngIf",o.targetForm.showError("user",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("user",t,"pattern")),e.xp6(11),e.Q6J("ngIf",o.targetForm.showError("password",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("password",t,"pattern")),e.xp6(7),e.Q6J("ngIf",o.targetForm.showError("mutual_user",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("mutual_user",t,"pattern")),e.xp6(11),e.Q6J("ngIf",o.targetForm.showError("mutual_password",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("mutual_password",t,"pattern"))}}function Ho(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,115),e.qZA())}function ko(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,116),e.qZA())}function Ko(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,117),e.qZA())}function Xo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,118),e.qZA())}function Qo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,119),e.qZA())}function zo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,120),e.qZA())}function Jo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,121),e.qZA())}function Yo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,122),e.qZA())}function Vo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,123),e.qZA())}function Uo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,124),e.qZA())}function jo(n,s){1&n&&(e.TgZ(0,"span",41),e.SDv(1,125),e.qZA())}function Wo(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const i=e.CHM(t),_=i.index,r=i.$implicit,c=e.oxw(),d=c.$implicit,g=c.index;return e.oxw(3).removeInitiatorImage(d,_,g,r)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,J,o.icons.destroy))}}function en(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,126),e.qZA())}function tn(n,s){if(1&n&&(e.TgZ(0,"div",22),e.TgZ(1,"div",23),e.TgZ(2,"cd-select",127),e._UZ(3,"i",25),e.ynx(4),e.SDv(5,128),e.BQk(),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=t.$implicit,i=t.index,_=e.oxw(3);e.xp6(2),e.Q6J("data",o.getValue("luns"))("options",_.imagesInitiatorSelections[i])("messages",_.messages.initiatorImage),e.xp6(1),e.Q6J("ngClass",e.VKq(4,J,_.icons.add))}}function on(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",92),e.TgZ(1,"div",5),e.ynx(2),e.SDv(3,93),e.BQk(),e._uU(4),e.TgZ(5,"button",94),e.NdJ("click",function(){const _=e.CHM(t).index;return e.oxw(3).removeInitiator(_)}),e._UZ(6,"i",25),e.qZA(),e.qZA(),e.TgZ(7,"div",7),e.TgZ(8,"div",8),e.TgZ(9,"label",95),e.SDv(10,96),e.qZA(),e.TgZ(11,"div",11),e.TgZ(12,"input",97),e.NdJ("blur",function(){return e.CHM(t),e.oxw(3).updatedInitiatorSelector()}),e.qZA(),e.YNc(13,Ho,2,0,"span",17),e.YNc(14,ko,2,0,"span",17),e.YNc(15,Ko,2,0,"span",17),e.qZA(),e.qZA(),e.ynx(16,61),e.TgZ(17,"div",8),e.TgZ(18,"label",98),e.SDv(19,99),e.qZA(),e.TgZ(20,"div",11),e._UZ(21,"input",100),e.YNc(22,Xo,2,0,"span",17),e.YNc(23,Qo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(24,"div",8),e.TgZ(25,"label",101),e.SDv(26,102),e.qZA(),e.TgZ(27,"div",11),e.TgZ(28,"div",12),e._UZ(29,"input",103),e.TgZ(30,"span",14),e._UZ(31,"button",104),e._UZ(32,"cd-copy-2-clipboard-button",105),e.qZA(),e.qZA(),e.YNc(33,zo,2,0,"span",17),e.YNc(34,Jo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(35,"div",8),e.TgZ(36,"label",106),e.ynx(37),e.SDv(38,107),e.BQk(),e.qZA(),e.TgZ(39,"div",11),e._UZ(40,"input",108),e.YNc(41,Yo,2,0,"span",17),e.YNc(42,Vo,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(43,"div",8),e.TgZ(44,"label",109),e.SDv(45,110),e.qZA(),e.TgZ(46,"div",11),e.TgZ(47,"div",12),e._UZ(48,"input",111),e.TgZ(49,"span",14),e._UZ(50,"button",104),e._UZ(51,"cd-copy-2-clipboard-button",105),e.qZA(),e.qZA(),e.YNc(52,Uo,2,0,"span",17),e.YNc(53,jo,2,0,"span",17),e.qZA(),e.qZA(),e.BQk(),e.TgZ(54,"div",8),e.TgZ(55,"label",112),e.SDv(56,113),e.qZA(),e.TgZ(57,"div",11),e.YNc(58,Wo,6,4,"ng-container",21),e.YNc(59,en,2,0,"span",55),e.YNc(60,tn,6,6,"div",114),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit,o=s.index;e.oxw(2);const i=e.MAs(2),_=e.oxw();e.Q6J("formGroup",t),e.xp6(4),e.hij(": ",t.getValue("client_iqn")," "),e.xp6(2),e.Q6J("ngClass",e.VKq(25,J,_.icons.destroy)),e.xp6(7),e.Q6J("ngIf",t.showError("client_iqn",i,"notUnique")),e.xp6(1),e.Q6J("ngIf",t.showError("client_iqn",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("client_iqn",i,"pattern")),e.xp6(6),e.Q6J("id","user"+o),e.xp6(1),e.Q6J("ngIf",t.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("user",i,"pattern")),e.xp6(6),e.Q6J("id","password"+o),e.xp6(2),e.Q6J("cdPasswordButton","password"+o),e.xp6(1),e.Q6J("source","password"+o),e.xp6(1),e.Q6J("ngIf",t.showError("password",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("password",i,"pattern")),e.xp6(6),e.Q6J("id","mutual_user"+o),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_user",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_user",i,"pattern")),e.xp6(6),e.Q6J("id","mutual_password"+o),e.xp6(2),e.Q6J("cdPasswordButton","mutual_password"+o),e.xp6(1),e.Q6J("source","mutual_password"+o),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_password",i,"required")),e.xp6(1),e.Q6J("ngIf",t.showError("mutual_password",i,"pattern")),e.xp6(5),e.Q6J("ngForOf",t.getValue("luns")),e.xp6(1),e.Q6J("ngIf",t.getValue("cdIsInGroup")),e.xp6(1),e.Q6J("ngIf",!t.getValue("cdIsInGroup"))}}function nn(n,s){1&n&&(e.TgZ(0,"span",48),e.SDv(1,129),e.qZA())}function sn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",86),e.SDv(2,87),e.qZA(),e.TgZ(3,"div",88),e.YNc(4,on,61,27,"div",89),e.TgZ(5,"div",22),e.TgZ(6,"div",23),e.YNc(7,nn,2,0,"span",18),e.TgZ(8,"button",90),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).addInitiator(),!1}),e._UZ(9,"i",25),e.ynx(10),e.SDv(11,91),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(12,"hr"),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",t.initiators.controls),e.xp6(3),e.Q6J("ngIf",0===t.initiators.controls.length),e.xp6(2),e.Q6J("ngClass",e.VKq(3,J,t.icons.add))}}function _n(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const _=e.CHM(t).index,r=e.oxw(),c=r.$implicit,d=r.index;return e.oxw(3).removeGroupInitiator(c,_,d)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,J,o.icons.destroy))}}function an(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",50),e._UZ(2,"input",51),e.TgZ(3,"span",14),e.TgZ(4,"button",52),e.NdJ("click",function(){const _=e.CHM(t).index,r=e.oxw(),c=r.$implicit,d=r.index;return e.oxw(3).removeGroupDisk(c,_,d)}),e._UZ(5,"i",16),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit,o=e.oxw(4);e.xp6(2),e.Q6J("value",t),e.xp6(3),e.Q6J("ngClass",e.VKq(2,J,o.icons.destroy))}}function rn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",92),e.TgZ(1,"div",5),e.ynx(2),e.SDv(3,133),e.BQk(),e._uU(4),e.TgZ(5,"button",94),e.NdJ("click",function(){const _=e.CHM(t).index;return e.oxw(3).removeGroup(_)}),e._UZ(6,"i",25),e.qZA(),e.qZA(),e.TgZ(7,"div",7),e.TgZ(8,"div",8),e.TgZ(9,"label",134),e.SDv(10,135),e.qZA(),e.TgZ(11,"div",11),e._UZ(12,"input",136),e.qZA(),e.qZA(),e.TgZ(13,"div",8),e.TgZ(14,"label",137),e.ynx(15),e.SDv(16,138),e.BQk(),e.qZA(),e.TgZ(17,"div",11),e.YNc(18,_n,6,4,"ng-container",21),e.TgZ(19,"div",22),e.TgZ(20,"div",23),e.TgZ(21,"cd-select",24),e.NdJ("selection",function(i){const r=e.CHM(t).index;return e.oxw(3).onGroupMemberSelection(i,r)}),e._UZ(22,"i",25),e.ynx(23),e.SDv(24,139),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(25,"hr"),e.qZA(),e.qZA(),e.TgZ(26,"div",8),e.TgZ(27,"label",28),e.ynx(28),e.SDv(29,140),e.BQk(),e.qZA(),e.TgZ(30,"div",11),e.YNc(31,an,6,4,"ng-container",21),e.TgZ(32,"div",22),e.TgZ(33,"div",23),e.TgZ(34,"cd-select",127),e._UZ(35,"i",25),e.ynx(36),e.SDv(37,141),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(38,"hr"),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit,o=s.index,i=e.oxw(3);e.Q6J("formGroup",t),e.xp6(4),e.hij(": ",t.getValue("group_id")," "),e.xp6(2),e.Q6J("ngClass",e.VKq(13,J,i.icons.destroy)),e.xp6(12),e.Q6J("ngForOf",t.getValue("members")),e.xp6(3),e.Q6J("data",t.getValue("members"))("options",i.groupMembersSelections[o])("messages",i.messages.groupInitiator),e.xp6(1),e.Q6J("ngClass",e.VKq(15,J,i.icons.add)),e.xp6(9),e.Q6J("ngForOf",t.getValue("disks")),e.xp6(3),e.Q6J("data",t.getValue("disks"))("options",i.groupDiskSelections[o])("messages",i.messages.initiatorImage),e.xp6(1),e.Q6J("ngClass",e.VKq(17,J,i.icons.add))}}function ln(n,s){1&n&&(e.TgZ(0,"span",48),e.SDv(1,142),e.qZA())}function cn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",86),e.SDv(2,130),e.qZA(),e.TgZ(3,"div",131),e.YNc(4,rn,39,19,"div",89),e.TgZ(5,"div",22),e.TgZ(6,"div",23),e.YNc(7,ln,2,0,"span",18),e.TgZ(8,"button",90),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).addGroup(),!1}),e._UZ(9,"i",25),e.ynx(10),e.SDv(11,132),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",t.groups.controls),e.xp6(3),e.Q6J("ngIf",0===t.groups.controls.length),e.xp6(2),e.Q6J("ngClass",e.VKq(3,J,t.icons.add))}}function dn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.TgZ(15,"span",14),e.TgZ(16,"button",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().targetSettingsModal()}),e._UZ(17,"i",16),e.qZA(),e.qZA(),e.qZA(),e.YNc(18,Ro,2,0,"span",17),e.YNc(19,Mo,2,0,"span",17),e.YNc(20,Oo,9,0,"span",17),e.YNc(21,Ao,2,0,"span",18),e._UZ(22,"hr"),e.qZA(),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",19),e.SDv(25,20),e.qZA(),e.TgZ(26,"div",11),e.YNc(27,ho,6,4,"ng-container",21),e.TgZ(28,"div",22),e.TgZ(29,"div",23),e.TgZ(30,"cd-select",24),e.NdJ("selection",function(i){return e.CHM(t),e.oxw().onPortalSelection(i)}),e._UZ(31,"i",25),e.ynx(32),e.SDv(33,26),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(34,"input",27),e.YNc(35,Po,2,1,"span",17),e._UZ(36,"hr"),e.qZA(),e.qZA(),e.TgZ(37,"div",8),e.TgZ(38,"label",28),e.SDv(39,29),e.qZA(),e.TgZ(40,"div",11),e.YNc(41,Fo,12,10,"ng-container",21),e._UZ(42,"input",30),e.YNc(43,Do,2,0,"span",17),e.YNc(44,vo,2,0,"span",17),e.TgZ(45,"div",22),e.TgZ(46,"div",23),e.TgZ(47,"cd-select",24),e.NdJ("selection",function(i){return e.CHM(t),e.oxw().onImageSelection(i)}),e._UZ(48,"i",25),e.ynx(49),e.SDv(50,31),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e._UZ(51,"hr"),e.qZA(),e.qZA(),e.TgZ(52,"div",8),e.TgZ(53,"div",32),e.TgZ(54,"div",33),e._UZ(55,"input",34),e.TgZ(56,"label",35),e.SDv(57,36),e.qZA(),e.qZA(),e._UZ(58,"hr"),e.qZA(),e.qZA(),e.YNc(59,qo,41,8,"div",37),e.YNc(60,sn,13,5,"div",38),e.YNc(61,cn,12,5,"div",38),e.qZA(),e.TgZ(62,"div",39),e.TgZ(63,"cd-form-button-panel",40),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.ALo(64,"titlecase"),e.ALo(65,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.targetForm),e.xp6(6),e.pQV(e.lcZ(6,26,o.action))(e.lcZ(7,28,o.resource)),e.QtT(5),e.xp6(10),e.Q6J("ngClass",e.VKq(34,J,o.icons.deepCheck)),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"required")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"pattern")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("target_iqn",t,"iqn")),e.xp6(1),e.Q6J("ngIf",o.hasAdvancedSettings(o.targetForm.getValue("target_controls"))),e.xp6(6),e.Q6J("ngForOf",o.portals.value),e.xp6(3),e.Q6J("data",o.portals.value)("options",o.portalsSelections)("messages",o.messages.portals),e.xp6(1),e.Q6J("ngClass",e.VKq(36,J,o.icons.add)),e.xp6(4),e.Q6J("ngIf",o.targetForm.showError("portals",t,"minGateways")),e.xp6(6),e.Q6J("ngForOf",o.targetForm.getValue("disks")),e.xp6(2),e.Q6J("ngIf",o.targetForm.showError("disks",t,"dupLunId")),e.xp6(1),e.Q6J("ngIf",o.targetForm.showError("disks",t,"dupWwn")),e.xp6(3),e.Q6J("data",o.disks.value)("options",o.imagesSelections)("messages",o.messages.images),e.xp6(1),e.Q6J("ngClass",e.VKq(38,J,o.icons.add)),e.xp6(11),e.Q6J("ngIf",o.cephIscsiConfigVersion>10&&!o.targetForm.getValue("acl_enabled")),e.xp6(1),e.Q6J("ngIf",o.targetForm.getValue("acl_enabled")),e.xp6(1),e.Q6J("ngIf",o.targetForm.getValue("acl_enabled")),e.xp6(2),e.Q6J("form",o.targetForm)("submitText",e.lcZ(64,30,o.action)+" "+e.lcZ(65,32,o.resource))}}let ut=(()=>{class n extends H.E{constructor(t,o,i,_,r,c,d){super(),this.iscsiService=t,this.modalService=o,this.rbdService=i,this.router=_,this.route=r,this.taskWrapper=c,this.actionLabels=d,this.api_version=0,this.minimum_gateways=1,this.icons=T.P,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new F.a({noOptions:"There are no portals available."}),images:new F.a({noOptions:"There are no images available."}),initiatorImage:new F.a({noOptions:"There are no images available. Please make sure you add an image to the target."}),groupInitiator:new F.a({noOptions:"There are no initiators available. Please make sure you add an initiator to the target."})},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.resource="target"}ngOnInit(){const t=new A.E(()=>{});t.pageInfo.limit=-1;const o=[this.iscsiService.listTargets(),this.rbdService.list(t.toParams()),this.iscsiService.portals(),this.iscsiService.settings(),this.iscsiService.version()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(i=>{this.target_iqn=decodeURIComponent(i.target_iqn),o.push(this.iscsiService.getTarget(this.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,(0,le.D)(o).subscribe(i=>{const _=S()(i[0]).filter(c=>c.target_iqn!==this.target_iqn).flatMap(c=>c.disks).map(c=>`${c.pool}/${c.image}`).value();"api_version"in i[3]&&(this.api_version=i[3].api_version),this.minimum_gateways=i[3].config.minimum_gateways,this.target_default_controls=i[3].target_default_controls,this.target_controls_limits=i[3].target_controls_limits,this.disk_default_controls=i[3].disk_default_controls,this.disk_controls_limits=i[3].disk_controls_limits,this.backstores=i[3].backstores,this.default_backstore=i[3].default_backstore,this.unsupported_rbd_features=i[3].unsupported_rbd_features,this.required_rbd_features=i[3].required_rbd_features,this.imagesAll=S()(i[1]).flatMap(c=>c.value).filter(c=>!c.namespace&&!(-1!==_.indexOf(`${c.pool_name}/${c.name}`)||0===this.getValidBackstores(c).length)).value(),this.imagesSelections=this.imagesAll.map(c=>new y.$(!1,`${c.pool_name}/${c.name}`,""));const r=[];i[2].forEach(c=>{c.ip_addresses.forEach(d=>{r.push(new y.$(!1,c.name+":"+d,""))})}),this.portalsSelections=[...r],this.cephIscsiConfigVersion=i[4].ceph_iscsi_config_version,this.createForm(),i[5]&&this.resolveModel(i[5]),this.loadingReady()})}createForm(){if(this.targetForm=new x.d({target_iqn:new a.NI("iqn.2001-07.com.ceph:"+Date.now(),{validators:[a.kI.required,a.kI.pattern(this.IQN_REGEX)]}),target_controls:new a.NI({}),portals:new a.NI([],{validators:[z.h.custom("minGateways",t=>S().uniq(t.map(i=>i.split(":")[0])).length<Math.max(1,this.minimum_gateways))]}),disks:new a.NI([],{validators:[z.h.custom("dupLunId",t=>{const o=this.getLunIds(t);return o.length!==S().uniq(o).length}),z.h.custom("dupWwn",t=>{const o=this.getWwns(t);return o.length!==S().uniq(o).length})]}),initiators:new a.Oe([]),groups:new a.Oe([]),acl_enabled:new a.NI(!1)}),this.cephIscsiConfigVersion>10){const t=new x.d({user:new a.NI(""),password:new a.NI(""),mutual_user:new a.NI(""),mutual_password:new a.NI("")});this.setAuthValidator(t),this.targetForm.addControl("auth",t)}}resolveModel(t){this.targetForm.patchValue({target_iqn:t.target_iqn,target_controls:t.target_controls,acl_enabled:t.acl_enabled}),this.cephIscsiConfigVersion>10&&this.targetForm.patchValue({auth:t.auth});const o=[];S().forEach(t.portals,_=>{o.push(`${_.host}:${_.ip}`)}),this.targetForm.patchValue({portals:o});const i=[];S().forEach(t.disks,_=>{const r=`${_.pool}/${_.image}`;i.push(r),this.imagesSettings[r]={backstore:_.backstore},this.imagesSettings[r][_.backstore]=_.controls,"lun"in _&&(this.imagesSettings[r].lun=_.lun),"wwn"in _&&(this.imagesSettings[r].wwn=_.wwn),this.onImageSelection({option:{name:r,selected:!0}})}),this.targetForm.patchValue({disks:i}),S().forEach(t.clients,_=>{const r=this.addInitiator();_.luns=S().map(_.luns,c=>`${c.pool}/${c.image}`),r.patchValue(_)}),t.groups.forEach((_,r)=>{const c=this.addGroup();_.disks=S().map(_.disks,d=>`${d.pool}/${d.image}`),c.patchValue(_),S().forEach(_.members,d=>{this.onGroupMemberSelection({option:new y.$(!0,d,"")},r)})})}hasAdvancedSettings(t){return Object.values(t).length>0}get portals(){return this.targetForm.get("portals")}onPortalSelection(){this.portals.setValue(this.portals.value)}removePortal(t,o){return this.portalsSelections.forEach(i=>{i.name===o&&(i.selected=!1)}),this.portals.value.splice(t,1),this.portals.setValue(this.portals.value),!1}get disks(){return this.targetForm.get("disks")}removeImage(t,o){return this.imagesSelections.forEach(i=>{i.name===o&&(i.selected=!1)}),this.disks.value.splice(t,1),this.removeImageRefs(o),this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1}),!1}removeImageRefs(t){this.initiators.controls.forEach(o=>{const i=o.value.luns.filter(_=>_!==t);o.get("luns").setValue(i)}),this.groups.controls.forEach(o=>{const i=o.value.disks.filter(_=>_!==t);o.get("disks").setValue(i)}),S().forEach(this.imagesInitiatorSelections,(o,i)=>{this.imagesInitiatorSelections[i]=o.filter(_=>_.name!==t)}),S().forEach(this.groupDiskSelections,(o,i)=>{this.groupDiskSelections[i]=o.filter(_=>_.name!==t)})}getDefaultBackstore(t){let o=this.default_backstore;const i=this.getImageById(t);return this.validFeatures(i,this.default_backstore)||this.backstores.forEach(_=>{_!==this.default_backstore&&this.validFeatures(i,_)&&(o=_)}),o}isLunIdInUse(t,o){const i=this.disks.value.filter(_=>_!==o);return this.getLunIds(i).includes(t)}getLunIds(t){return S().map(t,o=>this.imagesSettings[o].lun)}nextLunId(t){const o=this.disks.value.filter(r=>r!==t),i=this.getLunIds(o);let _=0;for(;i.includes(_);)_++;return _}getWwns(t){return S().map(t,i=>this.imagesSettings[i].wwn).filter(i=>S().isString(i)&&""!==i)}onImageSelection(t){const o=t.option;if(o.selected){if(this.imagesSettings[o.name])this.isLunIdInUse(this.imagesSettings[o.name].lun,o.name)&&(this.imagesSettings[o.name].lun=this.nextLunId(o.name));else{const i=this.getDefaultBackstore(o.name);this.imagesSettings[o.name]={backstore:i,lun:this.nextLunId(o.name)},this.imagesSettings[o.name][i]={}}S().forEach(this.imagesInitiatorSelections,(i,_)=>{i.push(new y.$(!1,o.name,"")),this.imagesInitiatorSelections[_]=[...i]}),S().forEach(this.groupDiskSelections,(i,_)=>{i.push(new y.$(!1,o.name,"")),this.groupDiskSelections[_]=[...i]})}else this.removeImageRefs(o.name);this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1})}get initiators(){return this.targetForm.get("initiators")}addInitiator(){const t=new x.d({client_iqn:new a.NI("",{validators:[a.kI.required,z.h.custom("notUnique",i=>{const _=this.initiators.controls.reduce(function(r,c){return r.concat(c.value.client_iqn)},[]);return _.indexOf(i)!==_.lastIndexOf(i)}),a.kI.pattern(this.IQN_REGEX)]}),auth:new x.d({user:new a.NI(""),password:new a.NI(""),mutual_user:new a.NI(""),mutual_password:new a.NI("")}),luns:new a.NI([]),cdIsInGroup:new a.NI(!1)});this.setAuthValidator(t),this.initiators.push(t),S().forEach(this.groupMembersSelections,(i,_)=>{i.push(new y.$(!1,"","")),this.groupMembersSelections[_]=[...i]});const o=S().map(this.targetForm.getValue("disks"),i=>new y.$(!1,i,""));return this.imagesInitiatorSelections.push(o),t}setAuthValidator(t){z.h.validateIf(t.get("user"),()=>t.getValue("password")||t.getValue("mutual_user")||t.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.USER_REGEX)],[t.get("password"),t.get("mutual_user"),t.get("mutual_password")]),z.h.validateIf(t.get("password"),()=>t.getValue("user")||t.getValue("mutual_user")||t.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.PASSWORD_REGEX)],[t.get("user"),t.get("mutual_user"),t.get("mutual_password")]),z.h.validateIf(t.get("mutual_user"),()=>t.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.USER_REGEX)],[t.get("user"),t.get("password"),t.get("mutual_password")]),z.h.validateIf(t.get("mutual_password"),()=>t.getValue("mutual_user"),[a.kI.required],[a.kI.pattern(this.PASSWORD_REGEX)],[t.get("user"),t.get("password"),t.get("mutual_user")])}removeInitiator(t){const o=this.initiators.value[t];this.initiators.removeAt(t),S().forEach(this.groupMembersSelections,(i,_)=>{i.splice(t,1),this.groupMembersSelections[_]=[...i]}),this.groups.controls.forEach(i=>{const _=i.value.members.filter(r=>r!==o.client_iqn);i.get("members").setValue(_)}),this.imagesInitiatorSelections.splice(t,1)}updatedInitiatorSelector(){this.initiators.controls.forEach(t=>{t.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),S().forEach(this.groupMembersSelections,(t,o)=>{S().forEach(t,(i,_)=>{const r=i.name;i.name=this.initiators.controls[_].value.client_iqn,this.groups.controls.forEach(c=>{const d=c.value.members,g=d.indexOf(r);-1!==g&&(d[g]=i.name),c.get("members").setValue(d)})}),this.groupMembersSelections[o]=[...this.groupMembersSelections[o]]})}removeInitiatorImage(t,o,i,_){const r=t.getValue("luns");return r.splice(o,1),t.patchValue({luns:r}),this.imagesInitiatorSelections[i].forEach(c=>{c.name===_&&(c.selected=!1)}),!1}get groups(){return this.targetForm.get("groups")}addGroup(){const t=new x.d({group_id:new a.NI("",{validators:[a.kI.required]}),members:new a.NI([]),disks:new a.NI([])});this.groups.push(t);const o=S().map(this.targetForm.getValue("disks"),_=>new y.$(!1,_,""));this.groupDiskSelections.push(o);const i=S().map(this.initiators.value,_=>new y.$(!1,_.client_iqn,"",!_.cdIsInGroup));return this.groupMembersSelections.push(i),t}removeGroup(t){this.groups.removeAt(t),this.groupMembersSelections[t].filter(i=>i.selected).forEach(i=>{i.selected=!1,this.onGroupMemberSelection({option:i},t)}),this.groupMembersSelections.splice(t,1),this.groupDiskSelections.splice(t,1)}onGroupMemberSelection(t,o){const i=t.option;let _=[];i.selected||(_=this.groupDiskSelections[o].filter(c=>c.selected).map(c=>c.name)),this.initiators.controls.forEach((r,c)=>{r.value.client_iqn===i.name&&(r.patchValue({luns:_}),r.get("cdIsInGroup").setValue(i.selected),S().forEach(this.groupMembersSelections,d=>{d[c].enabled=!i.selected}),this.imagesInitiatorSelections[c].forEach(d=>{d.selected=_.includes(d.name)}))})}removeGroupInitiator(t,o,i){const _=t.getValue("members")[o];t.getValue("members").splice(o,1),this.onGroupMemberSelection({option:new y.$(!1,_,"")},i)}removeGroupDisk(t,o,i){const _=t.getValue("disks")[o];t.getValue("disks").splice(o,1),this.groupDiskSelections[i].forEach(r=>{r.name===_&&(r.selected=!1)}),this.groupDiskSelections[i]=[...this.groupDiskSelections[i]]}submit(){const t=S().cloneDeep(this.targetForm.value),o={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};if(this.cephIscsiConfigVersion>10){const _=this.targetForm.get("auth");_.getValue("user")||_.get("user").setValue(""),_.getValue("password")||_.get("password").setValue(""),_.getValue("mutual_user")||_.get("mutual_user").setValue(""),_.getValue("mutual_password")||_.get("mutual_password").setValue("");const r=this.targetForm.getValue("acl_enabled");o.auth={user:r?"":_.getValue("user"),password:r?"":_.getValue("password"),mutual_user:r?"":_.getValue("mutual_user"),mutual_password:r?"":_.getValue("mutual_password")}}let i;t.disks.forEach(_=>{const r=_.split("/"),c=this.imagesSettings[_].backstore;o.disks.push({pool:r[0],image:r[1],backstore:c,controls:this.imagesSettings[_][c],lun:this.imagesSettings[_].lun,wwn:this.imagesSettings[_].wwn})}),t.portals.forEach(_=>{const r=_.indexOf(":");o.portals.push({host:_.substring(0,r),ip:_.substring(r+1)})}),o.acl_enabled&&(t.initiators.forEach(_=>{_.auth.user||(_.auth.user=""),_.auth.password||(_.auth.password=""),_.auth.mutual_user||(_.auth.mutual_user=""),_.auth.mutual_password||(_.auth.mutual_password=""),delete _.cdIsInGroup;const r=[];_.luns.forEach(c=>{const d=c.split("/");r.push({pool:d[0],image:d[1]})}),_.luns=r}),o.clients=t.initiators),o.acl_enabled&&(t.groups.forEach(_=>{const r=[];_.disks.forEach(c=>{const d=c.split("/");r.push({pool:d[0],image:d[1]})}),_.disks=r}),o.groups=t.groups),this.isEdit?(o.new_target_iqn=o.target_iqn,o.target_iqn=this.target_iqn,i=this.taskWrapper.wrapTaskAroundCall({task:new R.R("iscsi/target/edit",{target_iqn:o.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,o)})):i=this.taskWrapper.wrapTaskAroundCall({task:new R.R("iscsi/target/create",{target_iqn:o.target_iqn}),call:this.iscsiService.createTarget(o)}),i.subscribe({error:()=>{this.targetForm.setErrors({cdSubmitButton:!0})},complete:()=>this.router.navigate(["/block/iscsi/targets"])})}targetSettingsModal(){const t={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls,target_controls_limits:this.target_controls_limits};this.modalRef=this.modalService.show(Co,t)}imageSettingsModal(t){const o={imagesSettings:this.imagesSettings,image:t,api_version:this.api_version,disk_default_controls:this.disk_default_controls,disk_controls_limits:this.disk_controls_limits,backstores:this.getValidBackstores(this.getImageById(t)),control:this.targetForm.get("disks")};this.modalRef=this.modalService.show(To,o)}validFeatures(t,o){const i=t.features,_=this.required_rbd_features[o];return(i&_)===_&&0==(i&this.unsupported_rbd_features[o])}getImageById(t){return this.imagesAll.find(o=>t===`${o.pool_name}/${o.name}`)}getValidBackstores(t){return this.backstores.filter(o=>this.validFeatures(t,o))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(X),e.Y36(de.Z),e.Y36(q),e.Y36(m.F0),e.Y36(m.gz),e.Y36(u.P),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P,Z,B,Q,Y,ee,te,w,_e,ae,M,ge,ue,me,Te,fe,Ce,G,Be,Ge,ye,xe,we,qe,He,ke,Ke,Xe,Qe,ze,b,Zt,Bt,Gt,yt,xt,wt,qt,Ht,kt,Kt,Xt,Qt,zt,Jt,Yt,Vt,Ut,jt,Wt,eo;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Target IQN",o="Portals",i="Add portal",_="Images",r="Add image",c="ACL authentication",d="This field is required.",g="IQN has wrong pattern.",f="An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'",I="For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309",P="More information",Z="This target has modified advanced settings.",B="At least " + "\ufffd0\ufffd" + " gateways are required.",Q="Backstore: " + "\ufffd0\ufffd" + ".\xA0",Y="This image has modified settings.",ee="Duplicated LUN numbers.",te="Duplicated WWN.",w="User",_e="Password",ae="Mutual User",M="Mutual Password",ge="This field is required.",ue="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",me="This field is required.",Te="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",fe="This field is required.",Ce="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",G="This field is required.",Be="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",Ge="Initiators",ye="Add initiator",xe="Initiator",we="Client IQN",qe="User",He="Password",ke="Mutual User",Ke="Mutual Password",Xe="Images",Qe="Initiator IQN needs to be unique.",ze="This field is required.",b="IQN has wrong pattern.",Zt="This field is required.",Bt="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",Gt="This field is required.",yt="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",xt="This field is required.",wt="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",qt="This field is required.",Ht="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",kt="Initiator belongs to a group. Images will be configure in the group.",Kt="Add image",Xt="No items added.",Qt="Groups",zt="Add group",Jt="Group",Yt="Name",Vt="Initiators",Ut="Add initiator",jt="Images",Wt="Add image",eo="No items added.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","targetForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],[1,"form-group","row"],["for","target_iqn",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],[1,"input-group"],["type","text","id","target_iqn","name","target_iqn","formControlName","target_iqn","cdTrim","",1,"form-control"],[1,"input-group-append"],["id","ecp-info-button","type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],["class","invalid-feedback",4,"ngIf"],["class","form-text text-muted",4,"ngIf"],["for","portals",1,"cd-col-form-label","required"],o,[4,"ngFor","ngForOf"],[1,"row"],[1,"col-md-12"],["elemClass","btn btn-light float-right",3,"data","options","messages","selection"],[3,"ngClass"],i,["type","hidden","id","portals","name","portals","formControlName","portals",1,"form-control"],["for","disks",1,"cd-col-form-label"],_,["type","hidden","id","disks","name","disks","formControlName","disks",1,"form-control"],r,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","acl_enabled","name","acl_enabled","id","acl_enabled",1,"custom-control-input"],["for","acl_enabled",1,"custom-control-label"],c,["formGroupName","auth",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],d,g,f,I,["target","_blank","href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],P,[1,"form-text","text-muted"],Z,[1,"input-group","cd-mb"],["type","text","disabled","",1,"cd-form-control",3,"value"],["type","button",1,"btn","btn-light",3,"click"],B,["class","input-group-text",4,"ngIf"],[4,"ngIf"],[1,"input-group-text"],Q,Y,ee,te,["formGroupName","auth"],["for","target_user",1,"cd-col-form-label"],w,["type","text","autocomplete","off","id","target_user","name","target_user","formControlName","user",1,"form-control"],["for","target_password",1,"cd-col-form-label"],_e,["type","password","autocomplete","new-password","id","target_password","name","target_password","formControlName","password",1,"form-control"],["type","button","cdPasswordButton","target_password",1,"btn","btn-light"],["source","target_password"],["for","target_mutual_user",1,"cd-col-form-label"],ae,["type","text","autocomplete","off","id","target_mutual_user","name","target_mutual_user","formControlName","mutual_user",1,"form-control"],["for","target_mutual_password",1,"cd-col-form-label"],M,["type","password","autocomplete","new-password","id","target_mutual_password","name","target_mutual_password","formControlName","mutual_password",1,"form-control"],["type","button","cdPasswordButton","target_mutual_password",1,"btn","btn-light"],["source","target_mutual_password"],ge,ue,me,Te,fe,Ce,G,Be,["for","initiators",1,"cd-col-form-label"],Ge,["formArrayName","initiators",1,"cd-col-form-input"],["class","card mb-2",3,"formGroup",4,"ngFor","ngForOf"],[1,"btn","btn-light","float-right",3,"click"],ye,[1,"card","mb-2",3,"formGroup"],xe,["type","button",1,"close",3,"click"],["for","client_iqn",1,"cd-col-form-label","required"],we,["type","text","formControlName","client_iqn","cdTrim","",1,"form-control",3,"blur"],["for","user",1,"cd-col-form-label"],qe,["formControlName","user","autocomplete","off","type","text",1,"form-control",3,"id"],["for","password",1,"cd-col-form-label"],He,["formControlName","password","autocomplete","new-password","type","password",1,"form-control",3,"id"],["type","button",1,"btn","btn-light",3,"cdPasswordButton"],[3,"source"],["for","mutual_user",1,"cd-col-form-label"],ke,["formControlName","mutual_user","autocomplete","off","type","text",1,"form-control",3,"id"],["for","mutual_password",1,"cd-col-form-label"],Ke,["formControlName","mutual_password","autocomplete","new-password","type","password",1,"form-control",3,"id"],["for","luns",1,"cd-col-form-label"],Xe,["class","row",4,"ngIf"],Qe,ze,b,Zt,Bt,Gt,yt,xt,wt,qt,Ht,kt,["elemClass","btn btn-light float-right",3,"data","options","messages"],Kt,Xt,Qt,["formArrayName","groups",1,"cd-col-form-input"],zt,Jt,["for","group_id",1,"cd-col-form-label","required"],Yt,["type","text","formControlName","group_id",1,"form-control"],["for","members",1,"cd-col-form-label"],Vt,Ut,jt,Wt,eo]},template:function(t,o){1&t&&e.YNc(0,dn,66,40,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[pt.y,a._Y,a.JL,a.sg,h.V,O.P,$.o,a.Fj,k.b,a.JJ,a.u,So,l.mk,l.O5,l.sg,Eo.H,a.Wl,j.p,a.x0,gt.C,Ye.s,a.CE],pipes:[l.rS,et.m,Je.V],styles:[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]}),n})();var mt=p(68136),pe=p(30982),W=p(35905),De=p(99466),Se=p(68774),Tt=p(55657),ce=p(38047),tt=p(18001),ve=p(97161),oe=p(74937);function pn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function gn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function un(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,33),e.qZA())}function mn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,34),e.qZA())}function Tn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,35),e.qZA())}function fn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function Cn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,37),e.qZA())}function Sn(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,38),e.qZA())}let En=(()=>{class n{constructor(t,o,i,_,r){this.authStorageService=t,this.activeModal=o,this.actionLabels=i,this.iscsiService=_,this.notificationService=r,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.permission=this.authStorageService.getPermissions().iscsi}ngOnInit(){this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(t=>{this.discoveryForm.patchValue(t)})}createForm(){this.discoveryForm=new x.d({user:new a.NI({value:"",disabled:!this.hasPermission}),password:new a.NI({value:"",disabled:!this.hasPermission}),mutual_user:new a.NI({value:"",disabled:!this.hasPermission}),mutual_password:new a.NI({value:"",disabled:!this.hasPermission})}),z.h.validateIf(this.discoveryForm.get("user"),()=>this.discoveryForm.getValue("password")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),z.h.validateIf(this.discoveryForm.get("password"),()=>this.discoveryForm.getValue("user")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),z.h.validateIf(this.discoveryForm.get("mutual_user"),()=>this.discoveryForm.getValue("mutual_password"),[a.kI.required],[a.kI.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),z.h.validateIf(this.discoveryForm.get("mutual_password"),()=>this.discoveryForm.getValue("mutual_user"),[a.kI.required],[a.kI.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])}submitAction(){this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(()=>{this.notificationService.show(tt.k.success,"Updated discovery authentication"),this.activeModal.close()},()=>{this.discoveryForm.setErrors({cdSubmitButton:!0})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(N.Kz),e.Y36(v.p4),e.Y36(X),e.Y36(ve.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-discovery-modal"]],decls:46,vars:13,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P,Z;return s="Discovery Authentication",t="User",o="Password",i="Mutual User",_="Mutual Password",r="This field is required.",c="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",d="This field is required.",g="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",f="This field is required.",I="User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'.",P="This field is required.",Z="Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","discoveryForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","user",1,"cd-col-form-label"],t,[1,"cd-col-form-input"],["id","user","formControlName","user","type","text","autocomplete","off",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","password",1,"cd-col-form-label"],o,[1,"input-group"],["id","password","formControlName","password","type","password","autocomplete","new-password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-light"],["source","password"],["for","mutual_user",1,"cd-col-form-label"],i,["id","mutual_user","formControlName","mutual_user","type","text","autocomplete","off",1,"form-control"],["for","mutual_password",1,"cd-col-form-label"],_,["id","mutual_password","formControlName","mutual_password","type","password","autocomplete","new-password",1,"form-control"],["type","button","cdPasswordButton","mutual_password",1,"btn","btn-light"],["source","mutual_password"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"invalid-feedback"],r,c,d,g,f,I,P,Z]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e._UZ(11,"input",11),e.YNc(12,pn,2,0,"span",12),e.YNc(13,gn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",13),e.SDv(16,14),e.qZA(),e.TgZ(17,"div",10),e.TgZ(18,"div",15),e._UZ(19,"input",16),e.TgZ(20,"span",17),e._UZ(21,"button",18),e._UZ(22,"cd-copy-2-clipboard-button",19),e.qZA(),e.qZA(),e.YNc(23,un,2,0,"span",12),e.YNc(24,mn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(25,"div",7),e.TgZ(26,"label",20),e.ynx(27),e.SDv(28,21),e.BQk(),e.qZA(),e.TgZ(29,"div",10),e._UZ(30,"input",22),e.YNc(31,Tn,2,0,"span",12),e.YNc(32,fn,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(33,"div",7),e.TgZ(34,"label",23),e.SDv(35,24),e.qZA(),e.TgZ(36,"div",10),e.TgZ(37,"div",15),e._UZ(38,"input",25),e.TgZ(39,"span",17),e._UZ(40,"button",26),e._UZ(41,"cd-copy-2-clipboard-button",27),e.qZA(),e.qZA(),e.YNc(42,Cn,2,0,"span",12),e.YNc(43,Sn,2,0,"span",12),e.qZA(),e.qZA(),e.qZA(),e.TgZ(44,"div",28),e.TgZ(45,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.discoveryForm),e.xp6(8),e.Q6J("ngIf",o.discoveryForm.showError("user",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("user",i,"pattern")),e.xp6(10),e.Q6J("ngIf",o.discoveryForm.showError("password",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("password",i,"pattern")),e.xp6(7),e.Q6J("ngIf",o.discoveryForm.showError("mutual_user",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("mutual_user",i,"pattern")),e.xp6(10),e.Q6J("ngIf",o.discoveryForm.showError("mutual_password",i,"required")),e.xp6(1),e.Q6J("ngIf",o.discoveryForm.showError("mutual_password",i,"pattern")),e.xp6(2),e.Q6J("form",o.discoveryForm)("showSubmit",o.hasPermission)("submitText",o.actionLabels.SUBMIT)}},directives:[C.z,a._Y,a.JL,a.sg,h.V,O.P,$.o,a.Fj,k.b,a.JJ,a.u,l.O5,gt.C,Ye.s,j.p],styles:[""]}),n})();var Rn=p(86969);let ft=(()=>{class n{constructor(t){this.router=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-tabs"]],decls:8,vars:1,consts:function(){let s,t;return s="Overview",t="Targets",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/block/iscsi/overview"],["ngbNavLink",""],s,["ngbNavItem","/block/iscsi/targets"],t]},template:function(t,o){1&t&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(_){return o.router.navigate([_.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"li",5),e.TgZ(6,"a",3),e.SDv(7,6),e.qZA(),e.qZA(),e.qZA()),2&t&&e.Q6J("activeId",o.router.url)},directives:[N.Pz,N.nv,N.Vx],styles:[""]}),n})();var Ct=p(34501),Mn=p(30490),Ee=p(94928),On=p(68962);const An=["highlightTpl"],hn=["detailTable"],Pn=["tree"],In=function(){return["logged_in"]},bn=function(){return["logged_out"]},Nn=function(n,s){return{"badge-success":n,"badge-danger":s}};function Fn(n,s){if(1&n&&(e._UZ(0,"i"),e.TgZ(1,"span"),e._uU(2),e.qZA(),e._uU(3," \xa0 "),e.TgZ(4,"span",8),e._uU(5),e.qZA()),2&n){const t=s.$implicit;e.Tol(t.data.cdIcon),e.xp6(2),e.Oqu(t.data.name),e.xp6(2),e.Q6J("ngClass",e.WLB(7,Nn,e.DdM(5,In).includes(t.data.status),e.DdM(6,bn).includes(t.data.status))),e.xp6(1),e.hij(" ",t.data.status," ")}}function Dn(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"legend"),e._uU(2),e.qZA(),e._UZ(3,"cd-table",10,11),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.Oqu(t.title),e.xp6(1),e.Q6J("data",t.data)("columns",t.columns)("limit",0)}}function vn(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t)}}function Ln(n,s){if(1&n&&(e.TgZ(0,"strong"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t)}}function $n(n,s){if(1&n&&(e.YNc(0,vn,2,1,"span",12),e.YNc(1,Ln,2,1,"strong",12)),2&n){const t=s.row;e.Q6J("ngIf",void 0===t.default||t.default===t.current),e.xp6(1),e.Q6J("ngIf",void 0!==t.default&&t.default!==t.current)}}let Zn=(()=>{class n{constructor(t,o){this.iscsiBackstorePipe=t,this.booleanTextPipe=o,this.icons=T.P,this.metadata={},this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}}}set content(t){this.detailTable=t,t&&t.updateColumns()}ngOnInit(){this.columns=[{prop:"displayName",name:"Name",flexGrow:1,cellTemplate:this.highlightTpl},{prop:"current",name:"Current",flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:"Default",flexGrow:1,cellTemplate:this.highlightTpl}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.generateTree()),this.data=void 0}generateTree(){const t=S().cloneDeep(this.selectedItem.target_controls);this.cephIscsiConfigVersion>10&&S().extend(t,S().cloneDeep(this.selectedItem.auth)),this.metadata={root:t};const o={target:{expanded:S().join(this.selectedItem.cdExecuting?[T.P.large,T.P.spinner,T.P.spin]:[T.P.large,T.P.bullseye]," ")},initiators:{expanded:S().join([T.P.large,T.P.user]," "),leaf:S().join([T.P.user]," ")},groups:{expanded:S().join([T.P.large,T.P.users]," "),leaf:S().join([T.P.users]," ")},disks:{expanded:S().join([T.P.large,T.P.disk]," "),leaf:S().join([T.P.disk]," ")},portals:{expanded:S().join([T.P.large,T.P.server]," "),leaf:S().join([T.P.server]," ")}},i=[];S().forEach(this.selectedItem.disks,d=>{const g="disk_"+d.pool+"_"+d.image;this.metadata[g]={controls:d.controls,backstore:d.backstore},["wwn","lun"].forEach(f=>{f in d&&(this.metadata[g][f]=d[f])}),i.push({name:`${d.pool}/${d.image}`,cdId:g,cdIcon:o.disks.leaf})});const _=[];S().forEach(this.selectedItem.portals,d=>{_.push({name:`${d.host}:${d.ip}`,cdIcon:o.portals.leaf})});const r=[];S().forEach(this.selectedItem.clients,d=>{const g=S().cloneDeep(d.auth);d.info&&(S().extend(g,d.info),delete g.state,S().forEach(Object.keys(d.info.state),P=>{g[P.toLowerCase()]=d.info.state[P]})),this.metadata["client_"+d.client_iqn]=g;const f=[];d.luns.forEach(P=>{f.push({name:`${P.pool}/${P.image}`,cdId:"disk_"+P.pool+"_"+P.image,cdIcon:o.disks.leaf})});let I="";d.info&&(I=Object.keys(d.info.state).includes("LOGGED_IN")?"logged_in":"logged_out"),r.push({name:d.client_iqn,status:I,cdId:"client_"+d.client_iqn,children:f,cdIcon:o.initiators.leaf})});const c=[];S().forEach(this.selectedItem.groups,d=>{const g=[];d.disks.forEach(I=>{g.push({name:`${I.pool}/${I.image}`,cdId:"disk_"+I.pool+"_"+I.image,cdIcon:o.disks.leaf})});const f=[];d.members.forEach(I=>{f.push({name:I,cdId:"client_"+I})}),c.push({name:d.group_id,cdIcon:o.groups.leaf,children:[{name:"Disks",children:g,cdIcon:o.disks.expanded},{name:"Initiators",children:f,cdIcon:o.initiators.expanded}]})}),this.nodes=[{name:this.selectedItem.target_iqn,cdId:"root",isExpanded:!0,cdIcon:o.target.expanded,children:[{name:"Disks",isExpanded:!0,children:i,cdIcon:o.disks.expanded},{name:"Portals",isExpanded:!0,children:_,cdIcon:o.portals.expanded},{name:"Initiators",isExpanded:!0,children:r,cdIcon:o.initiators.expanded},{name:"Groups",isExpanded:!0,children:c,cdIcon:o.groups.expanded}]}]}format(t){return"boolean"==typeof t?this.booleanTextPipe.transform(t):t}onNodeSelected(t,o){var i,_,r,c;if(ne.iM.ACTIVATE(t,o,!0),o.data.cdId){this.title=o.data.name;const d=this.metadata[o.data.cdId]||{};"root"===o.data.cdId?(null===(i=this.detailTable)||void 0===i||i.toggleColumn({prop:"default",isHidden:!0}),this.data=S().map(this.settings.target_default_controls,(g,f)=>({displayName:f,default:g=this.format(g),current:S().isUndefined(d[f])?g:this.format(d[f])})),this.cephIscsiConfigVersion>10&&["user","password","mutual_user","mutual_password"].forEach(g=>{this.data.push({displayName:g,default:null,current:d[g]})})):o.data.cdId.toString().startsWith("disk_")?(null===(_=this.detailTable)||void 0===_||_.toggleColumn({prop:"default",isHidden:!0}),this.data=S().map(this.settings.disk_default_controls[d.backstore],(g,f)=>({displayName:f,default:g=this.format(g),current:S().isUndefined(d.controls[f])?g:this.format(d.controls[f])})),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(d.backstore)}),["wwn","lun"].forEach(g=>{g in d&&this.data.push({displayName:g,default:void 0,current:d[g]})})):(null===(r=this.detailTable)||void 0===r||r.toggleColumn({prop:"default",isHidden:!1}),this.data=S().map(d,(g,f)=>({displayName:f,default:void 0,current:this.format(g)})))}else this.data=void 0;null===(c=this.detailTable)||void 0===c||c.updateColumns()}onUpdateData(){this.tree.treeModel.expandAll()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Je.V),e.Y36(On.T))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-details"]],viewQuery:function(t,o){if(1&t&&(e.Gf(An,7),e.Gf(hn,5),e.Gf(Pn,5)),2&t){let i;e.iGM(i=e.CRH())&&(o.highlightTpl=i.first),e.iGM(i=e.CRH())&&(o.content=i.first),e.iGM(i=e.CRH())&&(o.tree=i.first)}},inputs:{selection:"selection",settings:"settings",cephIscsiConfigVersion:"cephIscsiConfigVersion"},features:[e.TTD],decls:11,vars:3,consts:function(){let s;return s="iSCSI Topology",[[1,"row"],[1,"col-6"],s,[3,"nodes","options","updateData"],["tree",""],["treeNodeTemplate",""],["class","col-6 metadata",4,"ngIf"],["highlightTpl",""],[1,"badge",3,"ngClass"],[1,"col-6","metadata"],["columnMode","flex",3,"data","columns","limit"],["detailTable",""],[4,"ngIf"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"legend"),e.SDv(3,2),e.qZA(),e.TgZ(4,"tree-root",3,4),e.NdJ("updateData",function(){return o.onUpdateData()}),e.YNc(6,Fn,6,10,"ng-template",null,5,e.W1O),e.qZA(),e.qZA(),e.YNc(8,Dn,5,4,"div",6),e.qZA(),e.YNc(9,$n,2,2,"ng-template",null,7,e.W1O)),2&t&&(e.xp6(4),e.Q6J("nodes",o.nodes)("options",o.treeOptions),e.xp6(4),e.Q6J("ngIf",o.data))},directives:[ne.qr,l.O5,l.mk,W.a],styles:[""]}),n})();function Bn(n,s){if(1&n&&(e.ynx(0),e._UZ(1,"br"),e.TgZ(2,"span"),e.SDv(3,6),e.qZA(),e.TgZ(4,"pre"),e._uU(5),e.qZA(),e.BQk()),2&n){const t=e.oxw(2);e.xp6(5),e.Oqu(t.status)}}function Gn(n,s){if(1&n&&(e.TgZ(0,"cd-alert-panel",2),e.ynx(1),e.tHW(2,3),e._UZ(3,"cd-doc",4),e.N_p(),e.BQk(),e.YNc(4,Bn,6,1,"ng-container",5),e.qZA()),2&n){const t=e.oxw();e.xp6(4),e.Q6J("ngIf",t.status)}}function yn(n,s){if(1&n&&e._UZ(0,"cd-iscsi-target-details",15),2&n){const t=e.oxw(2);e.Q6J("cephIscsiConfigVersion",t.cephIscsiConfigVersion)("selection",t.expandedRow)("settings",t.settings)}}const xn=function(n){return[n]};function wn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",7,8),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().getTargets()})("setExpandedRow",function(i){return e.CHM(t),e.oxw().setExpandedRow(i)})("updateSelection",function(i){return e.CHM(t),e.oxw().updateSelection(i)}),e.TgZ(2,"div",9),e._UZ(3,"cd-table-actions",10),e.TgZ(4,"button",11),e.NdJ("click",function(){return e.CHM(t),e.oxw().configureDiscoveryAuth()}),e._UZ(5,"i",12),e.ynx(6),e.SDv(7,13),e.BQk(),e.qZA(),e.qZA(),e.YNc(8,yn,1,3,"cd-iscsi-target-details",14),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.targets)("columns",t.columns)("hasDetails",!0)("autoReload",!1)("status",t.tableStatus),e.xp6(3),e.Q6J("permission",t.permission)("selection",t.selection)("tableActions",t.tableActions),e.xp6(2),e.Q6J("ngClass",e.VKq(10,xn,t.icons.key)),e.xp6(3),e.Q6J("ngIf",t.expandedRow)}}let qn=(()=>{class n extends mt.o{constructor(t,o,i,_,r,c,d,g,f){super(f),this.authStorageService=t,this.iscsiService=o,this.joinPipe=i,this.taskListService=_,this.notAvailablePipe=r,this.modalService=c,this.taskWrapper=d,this.actionLabels=g,this.ngZone=f,this.available=void 0,this.selection=new Se.r,this.targets=[],this.icons=T.P,this.builders={"iscsi/target/create":I=>({target_iqn:I.target_iqn})},this.permission=this.authStorageService.getPermissions().iscsi,this.tableActions=[{permission:"create",icon:T.P.add,routerLink:()=>"/block/iscsi/targets/create",name:this.actionLabels.CREATE},{permission:"update",icon:T.P.edit,routerLink:()=>`/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,name:this.actionLabels.EDIT,disable:()=>this.getEditDisableDesc()},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteIscsiTargetModal(),name:this.actionLabels.DELETE,disable:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:"Target",prop:"target_iqn",flexGrow:2,cellTransformation:De.e.executing},{name:"Portals",prop:"cdPortals",pipe:this.joinPipe,flexGrow:2},{name:"Images",prop:"cdImages",pipe:this.joinPipe,flexGrow:2},{name:"# Sessions",prop:"info.num_sessions",pipe:this.notAvailablePipe,flexGrow:1}],this.iscsiService.status().subscribe(t=>{this.available=t.available,t.available||(this.status=t.message)})}getTargets(){this.available&&(this.setTableRefreshTimeout(),this.iscsiService.version().subscribe(t=>{this.cephIscsiConfigVersion=t.ceph_iscsi_config_version}),this.taskListService.init(()=>this.iscsiService.listTargets(),t=>this.prepareResponse(t),t=>this.targets=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders),this.iscsiService.settings().subscribe(t=>{this.settings=t}))}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}getEditDisableDesc(){const t=this.selection.first();return t&&(null==t?void 0:t.cdExecuting)?t.cdExecuting:t&&S().isUndefined(null==t?void 0:t.info)?"Unavailable gateway(s)":!t}getDeleteDisableDesc(){var t;const o=this.selection.first();return(null==o?void 0:o.cdExecuting)?o.cdExecuting:o&&S().isUndefined(null==o?void 0:o.info)?"Unavailable gateway(s)":o&&(null===(t=null==o?void 0:o.info)||void 0===t?void 0:t.num_sessions)?"Target has active sessions":!o}prepareResponse(t){return t.forEach(o=>{o.cdPortals=o.portals.map(i=>`${i.host}:${i.ip}`),o.cdImages=o.disks.map(i=>`${i.pool}/${i.image}`)}),t}onFetchError(){this.table.reset()}itemFilter(t,o){return t.target_iqn===o.metadata.target_iqn}taskFilter(t){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(t.name)}updateSelection(t){this.selection=t}deleteIscsiTargetModal(){const t=this.selection.first().target_iqn;this.modalRef=this.modalService.show(pe.M,{itemDescription:"iSCSI target",itemNames:[t],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new R.R("iscsi/target/delete",{target_iqn:t}),call:this.iscsiService.deleteTarget(t)})})}configureDiscoveryAuth(){this.modalService.show(En)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(X),e.Y36(Rn.A),e.Y36(ce.j),e.Y36(Tt.g),e.Y36(de.Z),e.Y36(u.P),e.Y36(v.p4),e.Y36(e.R0b))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi-target-list"]],viewQuery:function(t,o){if(1&t&&e.Gf(W.a,5),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first)}},features:[e._Bn([ce.j]),e.qOj],decls:3,vars:2,consts:function(){let s,t,o,i;return s="iSCSI Targets not available",t="Please consult the " + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + " on how to configure and enable the iSCSI Targets management functionality.",o="Available information:",i="Discovery authentication",[["type","info","title",s,4,"ngIf"],["columnMode","flex","identifier","target_iqn","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","autoReload","status","fetchData","setExpandedRow","updateSelection",4,"ngIf"],["type","info","title",s],t,["section","iscsi"],[4,"ngIf"],o,["columnMode","flex","identifier","target_iqn","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","autoReload","status","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],i,["cdTableDetail","",3,"cephIscsiConfigVersion","selection","settings",4,"ngIf"],["cdTableDetail","",3,"cephIscsiConfigVersion","selection","settings"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-iscsi-tabs"),e.YNc(1,Gn,5,1,"cd-alert-panel",0),e.YNc(2,wn,9,12,"cd-table",1)),2&t&&(e.xp6(1),e.Q6J("ngIf",!1===o.available),e.xp6(1),e.Q6J("ngIf",!0===o.available))},directives:[ft,l.O5,Ct.G,Mn.K,W.a,Ee.K,$.o,l.mk,Zn],styles:[""]}),n})();var ot=p(66369),Hn=p(76446),kn=p(90068);const Kn=["iscsiSparklineTpl"],Xn=["iscsiPerSecondTpl"],Qn=["iscsiRelativeDateTpl"];function zn(n,s){if(1&n&&(e.TgZ(0,"span"),e._UZ(1,"cd-sparkline",9),e.qZA()),2&n){const t=e.oxw(),o=t.value,i=t.row;e.xp6(1),e.Q6J("data",o)("isBinary",i.cdIsBinary)}}function Jn(n,s){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function Yn(n,s){if(1&n&&(e.YNc(0,zn,2,2,"span",7),e.YNc(1,Jn,2,0,"span",8)),2&n){const t=s.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}function Vn(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.hij(" ",t," /s ")}}function Un(n,s){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function jn(n,s){if(1&n&&(e.YNc(0,Vn,2,1,"span",7),e.YNc(1,Un,2,0,"span",8)),2&n){const t=s.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}function Wn(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"notAvailable"),e.ALo(3,"relativeDate"),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.hij(" ",e.lcZ(2,1,e.lcZ(3,3,t))," ")}}function ei(n,s){1&n&&(e.TgZ(0,"span",10),e._uU(1," n/a "),e.qZA())}function ti(n,s){if(1&n&&(e.YNc(0,Wn,4,5,"span",7),e.YNc(1,ei,2,0,"span",8)),2&n){const t=s.row;e.Q6J("ngIf","user:rbd"===t.backstore),e.xp6(1),e.Q6J("ngIf","user:rbd"!==t.backstore)}}let oi=(()=>{class n{constructor(t,o,i){this.iscsiService=t,this.dimlessPipe=o,this.iscsiBackstorePipe=i,this.gateways=[],this.images=[]}ngOnInit(){this.gatewaysColumns=[{name:"Name",prop:"name"},{name:"State",prop:"state",flexGrow:1,cellTransformation:De.e.badge,customTemplateConfig:{map:{up:{class:"badge-success"},down:{class:"badge-danger"}}}},{name:"# Targets",prop:"num_targets"},{name:"# Sessions",prop:"num_sessions"}],this.imagesColumns=[{name:"Pool",prop:"pool"},{name:"Image",prop:"image"},{name:"Backstore",prop:"backstore",pipe:this.iscsiBackstorePipe},{name:"Read Bytes",prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:"Write Bytes",prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:"Read Ops",prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:"Write Ops",prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:"A/O Since",prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]}refresh(){this.iscsiService.overview().subscribe(t=>{this.gateways=t.gateways,this.images=t.images,this.images.map(o=>(o.stats_history&&(o.stats_history.rd_bytes=o.stats_history.rd_bytes.map(i=>i[1]),o.stats_history.wr_bytes=o.stats_history.wr_bytes.map(i=>i[1])),o.cdIsBinary=!0,o))})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(X),e.Y36(ot.n),e.Y36(Je.V))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-iscsi"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Kn,7),e.Gf(Xn,7),e.Gf(Qn,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.iscsiSparklineTpl=i.first),e.iGM(i=e.CRH())&&(o.iscsiPerSecondTpl=i.first),e.iGM(i=e.CRH())&&(o.iscsiRelativeDateTpl=i.first)}},decls:13,vars:4,consts:function(){let s,t;return s="Gateways",t="Images",[s,[3,"data","columns","fetchData"],t,[3,"data","columns"],["iscsiSparklineTpl",""],["iscsiPerSecondTpl",""],["iscsiRelativeDateTpl",""],[4,"ngIf"],["class","text-muted",4,"ngIf"],[3,"data","isBinary"],[1,"text-muted"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-iscsi-tabs"),e.TgZ(1,"legend"),e.SDv(2,0),e.qZA(),e.TgZ(3,"cd-table",1),e.NdJ("fetchData",function(){return o.refresh()}),e.qZA(),e.TgZ(4,"legend"),e.SDv(5,2),e.qZA(),e._UZ(6,"cd-table",3),e.YNc(7,Yn,2,2,"ng-template",null,4,e.W1O),e.YNc(9,jn,2,2,"ng-template",null,5,e.W1O),e.YNc(11,ti,2,2,"ng-template",null,6,e.W1O)),2&t&&(e.xp6(3),e.Q6J("data",o.gateways)("columns",o.gatewaysColumns),e.xp6(3),e.Q6J("data",o.images)("columns",o.imagesColumns))},directives:[ft,W.a,l.O5,Hn.l],pipes:[Tt.g,kn.h],styles:[""]}),n})(),ni=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[l.ez,Ae.m,N.Oz,m.Bz,a.u5,a.UX,N.ZQ]]}),n})();var ii=p(75319),si=p(26215),_i=p(45435),St=p(46947);let K=class{constructor(s,t){this.http=s,this.timerService=t,this.REFRESH_INTERVAL=3e4,this.summaryDataSource=new si.X(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/block/mirroring/summary")}retrieveSummaryObserver(){return s=>{this.summaryDataSource.next(s)}}subscribeSummary(s,t){return this.summaryData$.pipe((0,_i.h)(o=>!!o)).subscribe(s,t)}getPool(s){return this.http.get(`api/block/mirroring/pool/${s}`)}updatePool(s,t){return this.http.put(`api/block/mirroring/pool/${s}`,t,{observe:"response"})}getSiteName(){return this.http.get("api/block/mirroring/site_name")}setSiteName(s){return this.http.put("api/block/mirroring/site_name",{site_name:s},{observe:"response"})}createBootstrapToken(s){return this.http.post(`api/block/mirroring/pool/${s}/bootstrap/token`,{})}importBootstrapToken(s,t,o){return this.http.post(`api/block/mirroring/pool/${s}/bootstrap/peer`,{direction:t,token:o},{observe:"response"})}getPeer(s,t){return this.http.get(`api/block/mirroring/pool/${s}/peer/${t}`)}addPeer(s,t){return this.http.post(`api/block/mirroring/pool/${s}/peer`,t,{observe:"response"})}updatePeer(s,t,o){return this.http.put(`api/block/mirroring/pool/${s}/peer/${t}`,o,{observe:"response"})}deletePeer(s,t){return this.http.delete(`api/block/mirroring/pool/${s}/peer/${t}`,{observe:"response"})}};K.\u0275fac=function(s){return new(s||K)(e.LFG(ie.eN),e.LFG(St.f))},K.\u0275prov=e.Yz7({token:K,factory:K.\u0275fac,providedIn:"root"}),(0,D.gn)([(0,D.fM)(0,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[String]),(0,D.w6)("design:returntype",void 0)],K.prototype,"setSiteName",null),(0,D.gn)([(0,D.fM)(1,V.G),(0,D.fM)(2,V.G),(0,D.w6)("design:type",Function),(0,D.w6)("design:paramtypes",[String,String,String]),(0,D.w6)("design:returntype",void 0)],K.prototype,"importBootstrapToken",null),K=(0,D.gn)([V.o,(0,D.w6)("design:paramtypes",[ie.eN,St.f])],K);var nt=p(58071),ai=p(68307),Et=p(12627),Re=p(82945),ri=p(39749),li=p(13472);function ci(n,s){1&n&&(e.TgZ(0,"span",25),e.SDv(1,26),e.qZA())}function di(n,s){if(1&n&&(e.TgZ(0,"div",27),e._UZ(1,"input",28),e.TgZ(2,"label",29),e._uU(3),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.s9C("id",t.name),e.s9C("name",t.name),e.s9C("formControlName",t.name),e.xp6(1),e.s9C("for",t.name),e.xp6(1),e.Oqu(t.name)}}function pi(n,s){1&n&&(e.TgZ(0,"span",25),e.SDv(1,30),e.qZA())}let gi=(()=>{class n{constructor(t,o,i){this.activeModal=t,this.rbdMirroringService=o,this.taskWrapper=i,this.pools=[],this.createForm()}createForm(){this.createBootstrapForm=new x.d({siteName:new a.NI("",{validators:[a.kI.required]}),pools:new a.cw({},{validators:[this.validatePools()]}),token:new a.NI("",{})})}ngOnInit(){this.createBootstrapForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(t=>{this.createBootstrapForm.get("siteName").setValue(t.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.pools=t.content_data.pools.reduce((_,r)=>(_.push({name:r.name,mirror_mode:r.mirror_mode}),_),[]);const i=this.createBootstrapForm.get("pools");S().each(this.pools,_=>{const r=_.name,c="disabled"===_.mirror_mode,d=i.controls[r];d?c&&d.disabled?d.enable():!c&&d.enabled&&(d.disable(),d.setValue(!0)):i.addControl(r,new a.NI({value:!c,disabled:!c}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return t=>{let o=0;return S().each(t.controls,i=>{!0===i.value&&++o}),o>0?null:{requirePool:!0}}}generate(){this.createBootstrapForm.get("token").setValue("");let t="";const o=[],i=this.createBootstrapForm.get("pools");S().each(i.controls,(g,f)=>{!0===g.value&&(t=f,g.disabled||o.push(f))});const _={mirror_mode:"image"},r=(0,nt.z)(this.rbdMirroringService.setSiteName(this.createBootstrapForm.getValue("siteName")),(0,le.D)(o.map(g=>this.rbdMirroringService.updatePool(g,_))),this.rbdMirroringService.createBootstrapToken(t).pipe((0,ai.b)(g=>this.createBootstrapForm.get("token").setValue(g.token)))).pipe((0,Et.Z)()),c=()=>{this.rbdMirroringService.refresh(),this.createBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/mirroring/bootstrap/create",{}),call:r}).subscribe({error:c,complete:c})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(K),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-bootstrap-create-modal"]],decls:32,vars:6,consts:function(){let s,t,o,i,_,r,c,d,g,f,I;return s="Create Bootstrap Token",t="To create a bootstrap token which can be imported by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, and click\xA0 " + "\ufffd#10\ufffd" + "Generate" + "\ufffd/#10\ufffd" + ".",o="Site Name",i="Name...",_="Pools",r="Generate",c="Token",d="Generated token...",g="Close",f="This field is required.",I="At least one pool is required.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","createBootstrapForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","siteName",1,"col-form-label","required"],o,["type","text","placeholder",i,"id","siteName","name","siteName","formControlName","siteName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["formGroupName","pools",1,"form-group"],["for","pools",1,"col-form-label","required"],_,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"mb-4","float-right",3,"form","submitAction"],r,["for","token",1,"col-form-label"],c,["placeholder",d,"id","token","formControlName","token","readonly","",1,"form-control","resize-vertical"],["source","token",1,"float-right"],[1,"modal-footer"],["name",g,3,"backAction"],[1,"invalid-feedback"],f,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],I]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,ci,2,0,"span",12),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"label",14),e.SDv(18,15),e.qZA(),e.YNc(19,di,4,5,"div",16),e.YNc(20,pi,2,0,"span",12),e.qZA(),e.TgZ(21,"cd-submit-button",17),e.NdJ("submitAction",function(){return o.generate()}),e.SDv(22,18),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",19),e.TgZ(25,"span"),e.SDv(26,20),e.qZA(),e.qZA(),e.TgZ(27,"textarea",21),e._uU(28,"          "),e.qZA(),e.qZA(),e._UZ(29,"cd-copy-2-clipboard-button",22),e.qZA(),e.TgZ(30,"div",23),e.TgZ(31,"cd-back-button",24),e.NdJ("backAction",function(){return o.activeModal.close()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.createBootstrapForm),e.xp6(11),e.Q6J("ngIf",o.createBootstrapForm.showError("siteName",i,"required")),e.xp6(4),e.Q6J("ngForOf",o.pools),e.xp6(1),e.Q6J("ngIf",o.createBootstrapForm.showError("pools",i,"requirePool")),e.xp6(1),e.Q6J("form",o.createBootstrapForm)}},directives:[C.z,a._Y,a.JL,h.V,a.sg,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.O5,a.x0,l.sg,ri.w,Ye.s,li.W,a.Wl],styles:[".form-group.ng-invalid[_ngcontent-%COMP%]   .invalid-feedback[_ngcontent-%COMP%]{display:block}"]}),n})();function ui(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,27),e.qZA())}function mi(n,s){if(1&n&&(e.TgZ(0,"option",28),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.key),e.xp6(1),e.Oqu(t.desc)}}function Ti(n,s){if(1&n&&(e.TgZ(0,"div",29),e._UZ(1,"input",30),e.TgZ(2,"label",31),e._uU(3),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.s9C("id",t.name),e.s9C("name",t.name),e.s9C("formControlName",t.name),e.xp6(1),e.s9C("for",t.name),e.xp6(1),e.Oqu(t.name)}}function fi(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,32),e.qZA())}function Ci(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,33),e.qZA())}function Si(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,34),e.qZA())}let Ei=(()=>{class n{constructor(t,o,i,_){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=_,this.pools=[],this.directions=[{key:"rx-tx",desc:"Bidirectional"},{key:"rx",desc:"Unidirectional (receive-only)"}],this.createForm()}createForm(){this.importBootstrapForm=new x.d({siteName:new a.NI("",{validators:[a.kI.required]}),direction:new a.NI("rx-tx",{}),pools:new a.cw({},{validators:[this.validatePools()]}),token:new a.NI("",{validators:[a.kI.required,this.validateToken()]})})}ngOnInit(){this.rbdMirroringService.getSiteName().subscribe(t=>{this.importBootstrapForm.get("siteName").setValue(t.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.pools=t.content_data.pools.reduce((_,r)=>(_.push({name:r.name,mirror_mode:r.mirror_mode}),_),[]);const i=this.importBootstrapForm.get("pools");S().each(this.pools,_=>{const r=_.name,c="disabled"===_.mirror_mode,d=i.controls[r];d?c&&d.disabled?d.enable():!c&&d.enabled&&(d.disable(),d.setValue(!0)):i.addControl(r,new a.NI({value:!c,disabled:!c}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return t=>{let o=0;return S().each(t.controls,i=>{!0===i.value&&++o}),o>0?null:{requirePool:!0}}}validateToken(){return t=>{try{if(JSON.parse(atob(t.value)))return null}catch(o){}return{invalidToken:!0}}}import(){const t=[],o=[],i=this.importBootstrapForm.get("pools");S().each(i.controls,(g,f)=>{!0===g.value&&(t.push(f),g.disabled||o.push(f))});const _={mirror_mode:"image"};let r=(0,nt.z)(this.rbdMirroringService.setSiteName(this.importBootstrapForm.getValue("siteName")),(0,le.D)(o.map(g=>this.rbdMirroringService.updatePool(g,_))));r=t.reduce((g,f)=>(0,nt.z)(g,this.rbdMirroringService.importBootstrapToken(f,this.importBootstrapForm.getValue("direction"),this.importBootstrapForm.getValue("token"))),r).pipe((0,Et.Z)());const c=()=>{this.rbdMirroringService.refresh(),this.importBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/mirroring/bootstrap/import",{}),call:r}).subscribe({error:c,complete:()=>{c(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(v.p4),e.Y36(K),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-bootstrap-import-modal"]],decls:36,vars:10,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P;return s="Import Bootstrap Token",t="To import a bootstrap token which was created by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, provide the generated token, and click\xA0" + "\ufffd#10\ufffd" + "Import" + "\ufffd/#10\ufffd" + ".",o="Site Name",i="Name...",_="Direction",r="Pools",c="Token",d="Generated token...",g="This field is required.",f="At least one pool is required.",I="This field is required.",P="The token is invalid.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","importBootstrapForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","siteName",1,"col-form-label","required"],o,["type","text","placeholder",i,"id","siteName","name","siteName","formControlName","siteName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","direction",1,"col-form-label"],_,["id","direction","name","direction","formControlName","direction",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["formGroupName","pools",1,"form-group"],["for","pools",1,"col-form-label","required"],r,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],["for","token",1,"col-form-label","required"],c,["placeholder",d,"id","token","formControlName","token",1,"form-control","resize-vertical"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],g,[3,"value"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],f,I,P]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,ui,2,0,"span",12),e.qZA(),e.TgZ(16,"div",8),e.TgZ(17,"label",13),e.TgZ(18,"span"),e.SDv(19,14),e.qZA(),e.qZA(),e.TgZ(20,"select",15),e.YNc(21,mi,2,2,"option",16),e.qZA(),e.qZA(),e.TgZ(22,"div",17),e.TgZ(23,"label",18),e.SDv(24,19),e.qZA(),e.YNc(25,Ti,4,5,"div",20),e.YNc(26,fi,2,0,"span",12),e.qZA(),e.TgZ(27,"div",8),e.TgZ(28,"label",21),e.SDv(29,22),e.qZA(),e.TgZ(30,"textarea",23),e._uU(31,"          "),e.qZA(),e.YNc(32,Ci,2,0,"span",12),e.YNc(33,Si,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(34,"div",24),e.TgZ(35,"cd-form-button-panel",25),e.NdJ("submitActionEvent",function(){return o.import()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.importBootstrapForm),e.xp6(11),e.Q6J("ngIf",o.importBootstrapForm.showError("siteName",i,"required")),e.xp6(6),e.Q6J("ngForOf",o.directions),e.xp6(4),e.Q6J("ngForOf",o.pools),e.xp6(1),e.Q6J("ngIf",o.importBootstrapForm.showError("pools",i,"requirePool")),e.xp6(6),e.Q6J("ngIf",o.importBootstrapForm.showError("token",i,"required")),e.xp6(1),e.Q6J("ngIf",o.importBootstrapForm.showError("token",i,"invalidToken")),e.xp6(2),e.Q6J("form",o.importBootstrapForm)("submitText",o.actionLabels.SUBMIT)}},directives:[C.z,a._Y,a.JL,h.V,a.sg,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.O5,a.EJ,l.sg,a.x0,j.p,a.YN,a.Kr,a.Wl],styles:[""]}),n})();var se=p(69158),Ri=p(58111);let it=(()=>{class n{transform(t){return"warning"===t?"badge badge-warning":"error"===t?"badge badge-danger":"success"===t?"badge badge-success":"badge badge-info"}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"mirrorHealthColor",type:n,pure:!0}),n})();const Mi=["healthTmpl"];function Oi(n,s){if(1&n&&(e.TgZ(0,"span",2),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=s.value;e.Q6J("ngClass",e.lcZ(1,2,s.row.health_color)),e.xp6(2),e.Oqu(o)}}let Ai=(()=>{class n{constructor(t,o){this.rbdMirroringService=t,this.cephShortVersionPipe=o,this.tableStatus=new se.E}ngOnInit(){this.columns=[{prop:"instance_id",name:"Instance",flexGrow:2},{prop:"id",name:"ID",flexGrow:2},{prop:"server_hostname",name:"Hostname",flexGrow:2},{prop:"version",name:"Version",pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:"Health",cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.data=t.content_data.daemons,this.tableStatus=new se.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(K),e.Y36(Ri.F))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-daemons"]],viewQuery:function(t,o){if(1&t&&e.Gf(Mi,7),2&t){let i;e.iGM(i=e.CRH())&&(o.healthTmpl=i.first)}},decls:3,vars:4,consts:[["columnMode","flex",3,"data","columns","autoReload","status","fetchData"],["healthTmpl",""],[3,"ngClass"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()}),e.qZA(),e.YNc(1,Oi,3,4,"ng-template",null,1,e.W1O)),2&t&&e.Q6J("data",o.data)("columns",o.columns)("autoReload",-1)("status",o.tableStatus)},directives:[W.a,l.mk],pipes:[it],styles:[""]}),n})();var Rt=p(18891);class hi{}function Pi(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,25),e.qZA())}function Ii(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,26),e.qZA())}function bi(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,27),e.qZA())}function Ni(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,28),e.qZA())}function Fi(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,29),e.qZA())}function Di(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,30),e.qZA())}let vi=(()=>{class n{constructor(t,o,i,_){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=_,this.bsConfig={containerClass:"theme-default"},this.createForm()}createForm(){this.editPeerForm=new x.d({clusterName:new a.NI("",{validators:[a.kI.required,this.validateClusterName]}),clientID:new a.NI("",{validators:[a.kI.required,this.validateClientID]}),monAddr:new a.NI("",{validators:[this.validateMonAddr]}),key:new a.NI("",{validators:[this.validateKey]})})}ngOnInit(){this.pattern=`${this.poolName}/${this.peerUUID}`,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(t=>{this.setResponse(t)})}validateClusterName(t){if(!t.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:t.value}}}validateClientID(t){if(!t.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:t.value}}}validateMonAddr(t){if(!t.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:t.value}}}validateKey(t){try{if(""===t.value||atob(t.value))return null}catch(o){}return{invalidKey:{value:t.value}}}setResponse(t){this.response=t,this.editPeerForm.get("clusterName").setValue(t.cluster_name),this.editPeerForm.get("clientID").setValue(t.client_id),this.editPeerForm.get("monAddr").setValue(t.mon_host),this.editPeerForm.get("key").setValue(t.key)}update(){const t=new hi;let o;t.cluster_name=this.editPeerForm.getValue("clusterName"),t.client_id=this.editPeerForm.getValue("clientID"),t.mon_host=this.editPeerForm.getValue("monAddr"),t.key=this.editPeerForm.getValue("key"),o=this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new R.R("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,t)}:{task:new R.R("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,t)}),o.subscribe({error:()=>this.editPeerForm.setErrors({cdSubmitButton:!0}),complete:()=>{this.rbdMirroringService.refresh(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(v.p4),e.Y36(K),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-pool-edit-peer-modal"]],decls:38,vars:13,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P,Z,B,Q,Y,ee,te;return s="{VAR_SELECT, select, edit {Edit} other {Add}}",s=e.Zx4(s,{VAR_SELECT:"\ufffd0\ufffd"}),t="" + s + " pool mirror peer",o="{VAR_SELECT, select, edit {Edit} other {Add}}",o=e.Zx4(o,{VAR_SELECT:"\ufffd0\ufffd"}),i="" + o + " the pool mirror peer attributes for pool " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + " and click " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Submit" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ".",i=e.Zx4(i),_="Cluster Name",r="Name...",c="CephX ID",d="CephX ID...",g="Monitor Addresses",f="Comma-delimited addresses...",I="CephX Key",P="Base64-encoded key...",Z="This field is required.",B="The cluster name is not valid.",Q="This field is required.",Y="The CephX ID is not valid.",ee="The monitory address is not valid.",te="CephX key must be base64 encoded.",[[3,"modalRef"],[1,"modal-title"],t,[1,"modal-content"],["name","editPeerForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],i,[1,"form-group"],["for","clusterName",1,"col-form-label","required"],_,["type","text","placeholder",r,"id","clusterName","name","clusterName","formControlName","clusterName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","clientID",1,"col-form-label","required"],c,["type","text","placeholder",d,"id","clientID","name","clientID","formControlName","clientID",1,"form-control"],["for","monAddr",1,"col-form-label"],g,["type","text","placeholder",f,"id","monAddr","name","monAddr","formControlName","monAddr",1,"form-control"],["for","key",1,"col-form-label"],I,["type","text","placeholder",P,"id","key","name","key","formControlName","key",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],Z,B,Q,Y,ee,te]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.TgZ(8,"span"),e.tHW(9,7),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"label",9),e.SDv(14,10),e.qZA(),e._UZ(15,"input",11),e.YNc(16,Pi,2,0,"span",12),e.YNc(17,Ii,2,0,"span",12),e.qZA(),e.TgZ(18,"div",8),e.TgZ(19,"label",13),e.SDv(20,14),e.qZA(),e._UZ(21,"input",15),e.YNc(22,bi,2,0,"span",12),e.YNc(23,Ni,2,0,"span",12),e.qZA(),e.TgZ(24,"div",8),e.TgZ(25,"label",16),e.TgZ(26,"span"),e.SDv(27,17),e.qZA(),e.qZA(),e._UZ(28,"input",18),e.YNc(29,Fi,2,0,"span",12),e.qZA(),e.TgZ(30,"div",8),e.TgZ(31,"label",19),e.TgZ(32,"span"),e.SDv(33,20),e.qZA(),e.qZA(),e._UZ(34,"input",21),e.YNc(35,Di,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(36,"div",22),e.TgZ(37,"cd-form-button-panel",23),e.NdJ("submitActionEvent",function(){return o.update()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.mode),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.editPeerForm),e.xp6(7),e.pQV(o.mode)(o.poolName),e.QtT(9),e.xp6(5),e.Q6J("ngIf",o.editPeerForm.showError("clusterName",i,"required")),e.xp6(1),e.Q6J("ngIf",o.editPeerForm.showError("clusterName",i,"invalidClusterName")),e.xp6(5),e.Q6J("ngIf",o.editPeerForm.showError("clientID",i,"required")),e.xp6(1),e.Q6J("ngIf",o.editPeerForm.showError("clientID",i,"invalidClientID")),e.xp6(6),e.Q6J("ngIf",o.editPeerForm.showError("monAddr",i,"invalidMonAddr")),e.xp6(6),e.Q6J("ngIf",o.editPeerForm.showError("key",i,"invalidKey")),e.xp6(2),e.Q6J("form",o.editPeerForm)("submitText",o.actionLabels.SUBMIT)}},directives:[C.z,a._Y,a.JL,h.V,a.sg,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.O5,j.p],styles:[""]}),n})();const Li=["healthTmpl"];function $i(n,s){if(1&n&&(e.TgZ(0,"span",4),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=s.value;e.Q6J("ngClass",e.lcZ(1,2,s.row.health_color)),e.xp6(2),e.Oqu(o)}}let Bi=(()=>{class n{constructor(t,o,i,_,r){this.authStorageService=t,this.rbdMirroringService=o,this.modalService=i,this.taskWrapper=_,this.router=r,this.selection=new Se.r,this.tableStatus=new se.E,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;const c={permission:"update",icon:T.P.edit,click:()=>this.editModeModal(),name:"Edit Mode",canBePrimary:()=>!0},d={permission:"create",icon:T.P.add,name:"Add Peer",click:()=>this.editPeersModal("add"),disable:()=>!this.selection.first()||"disabled"===this.selection.first().mirror_mode,visible:()=>!this.getPeerUUID(),canBePrimary:()=>!1},g={permission:"update",icon:T.P.exchange,name:"Edit Peer",click:()=>this.editPeersModal("edit"),visible:()=>!!this.getPeerUUID()},f={permission:"delete",icon:T.P.destroy,name:"Delete Peer",click:()=>this.deletePeersModal(),visible:()=>!!this.getPeerUUID()};this.tableActions=[c,d,g,f]}ngOnInit(){this.columns=[{prop:"name",name:"Name",flexGrow:2},{prop:"mirror_mode",name:"Mode",flexGrow:2},{prop:"leader_id",name:"Leader",flexGrow:2},{prop:"image_local_count",name:"# Local",flexGrow:2},{prop:"image_remote_count",name:"# Remote",flexGrow:2},{prop:"health",name:"Health",cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.data=t.content_data.pools,this.tableStatus=new se.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}editModeModal(){this.router.navigate(["/block/mirroring",{outlets:{modal:[v.MQ.EDIT,this.selection.first().name]}}])}editPeersModal(t){const o={poolName:this.selection.first().name,mode:t};"edit"===t&&(o.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(vi,o)}deletePeersModal(){const t=this.selection.first().name,o=this.getPeerUUID();this.modalRef=this.modalService.show(pe.M,{itemDescription:"mirror peer",itemNames:[`${t} (${o})`],submitActionObservable:()=>new Rt.y(i=>{this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/mirroring/peer/delete",{pool_name:t}),call:this.rbdMirroringService.deletePeer(t,o)}).subscribe({error:_=>i.error(_),complete:()=>{this.rbdMirroringService.refresh(),i.complete()}})})})}getPeerUUID(){const t=this.selection.first(),o=this.data.find(i=>t&&t.name===i.name);if(o&&o.peer_uuids)return o.peer_uuids[0]}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(K),e.Y36(de.Z),e.Y36(u.P),e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-pools"]],viewQuery:function(t,o){if(1&t&&e.Gf(Li,7),2&t){let i;e.iGM(i=e.CRH())&&(o.healthTmpl=i.first)}},decls:5,vars:7,consts:[["columnMode","flex","identifier","name","forceIdentifier","true","selectionType","single",3,"data","columns","autoReload","status","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["healthTmpl",""],["name","modal"],[3,"ngClass"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()})("updateSelection",function(_){return o.updateSelection(_)}),e._UZ(1,"cd-table-actions",1),e.qZA(),e.YNc(2,$i,3,4,"ng-template",null,2,e.W1O),e._UZ(4,"router-outlet",3)),2&t&&(e.Q6J("data",o.data)("columns",o.columns)("autoReload",-1)("status",o.tableStatus),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[W.a,Ee.K,m.lC,l.mk],pipes:[it],styles:[""]}),n})();var Mt=p(59376);const Gi=["stateTmpl"],yi=["syncTmpl"],xi=["progressTmpl"];function wi(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",13),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_error.data)("columns",t.image_error.columns)("autoReload",-1)("status",t.tableStatus)}}function qi(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",13),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_syncing.data)("columns",t.image_syncing.columns)("autoReload",-1)("status",t.tableStatus)}}function Hi(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",13),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.image_ready.data)("columns",t.image_ready.columns)("autoReload",-1)("status",t.tableStatus)}}function ki(n,s){if(1&n&&(e.TgZ(0,"span",14),e.ALo(1,"mirrorHealthColor"),e._uU(2),e.qZA()),2&n){const o=s.value;e.Q6J("ngClass",e.lcZ(1,2,s.row.state_color)),e.xp6(2),e.Oqu(o)}}function Ki(n,s){1&n&&e._UZ(0,"div")}function Xi(n,s){if(1&n&&e._UZ(0,"ngb-progressbar",17),2&n){const t=e.oxw().value;e.Q6J("value",t)("showValue",!0)}}function Qi(n,s){if(1&n&&(e.YNc(0,Ki,1,0,"div",15),e.YNc(1,Xi,1,2,"ngb-progressbar",16)),2&n){const t=s.row;e.Q6J("ngIf","Replaying"===t.state),e.xp6(1),e.Q6J("ngIf","Syncing"===t.state)}}let zi=(()=>{class n{constructor(t){this.rbdMirroringService=t,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}},this.tableStatus=new se.E}ngOnInit(){this.image_error.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"state",name:"State",cellTemplate:this.stateTmpl,flexGrow:1},{prop:"description",name:"Issue",flexGrow:4}],this.image_syncing.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"state",name:"State",cellTemplate:this.stateTmpl,flexGrow:1},{prop:"progress",name:"Progress",cellTemplate:this.progressTmpl,flexGrow:2},{prop:"bytes_per_second",name:"Bytes per second",flexGrow:2},{prop:"entries_behind_primary",name:"Entries behind primary",flexGrow:2}],this.image_ready.columns=[{prop:"pool_name",name:"Pool",flexGrow:2},{prop:"name",name:"Image",flexGrow:2},{prop:"state",name:"State",cellTemplate:this.stateTmpl,flexGrow:1},{prop:"description",name:"Description",flexGrow:4}],this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.image_error.data=t.content_data.image_error,this.image_syncing.data=t.content_data.image_syncing,this.image_ready.data=t.content_data.image_ready,this.tableStatus=new se.E(t.status)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(K))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring-images"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Gi,7),e.Gf(yi,7),e.Gf(xi,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.stateTmpl=i.first),e.iGM(i=e.CRH())&&(o.syncTmpl=i.first),e.iGM(i=e.CRH())&&(o.progressTmpl=i.first)}},decls:19,vars:4,consts:function(){let s,t,o;return s="Issues (" + "\ufffd0\ufffd" + ")",t="Syncing (" + "\ufffd0\ufffd" + ")",o="Ready (" + "\ufffd0\ufffd" + ")",[["ngbNav","","cdStatefulTab","image-list",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","issues"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","syncing"],t,["ngbNavItem","ready"],o,[3,"ngbNavOutlet"],["stateTmpl",""],["progressTmpl",""],["columnMode","flex",3,"data","columns","autoReload","status","fetchData"],[3,"ngClass"],[4,"ngIf"],["type","info",3,"value","showValue",4,"ngIf"],["type","info",3,"value","showValue"]]},template:function(t,o){if(1&t&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,wi,1,4,"ng-template",5),e.qZA(),e.TgZ(6,"li",6),e.TgZ(7,"a",3),e.SDv(8,7),e.qZA(),e.YNc(9,qi,1,4,"ng-template",5),e.qZA(),e.TgZ(10,"li",8),e.TgZ(11,"a",3),e.SDv(12,9),e.qZA(),e.YNc(13,Hi,1,4,"ng-template",5),e.qZA(),e.qZA(),e._UZ(14,"div",10),e.YNc(15,ki,3,4,"ng-template",null,11,e.W1O),e.YNc(17,Qi,2,2,"ng-template",null,12,e.W1O)),2&t){const i=e.MAs(1);e.xp6(4),e.pQV(o.image_error.data.length),e.QtT(4),e.xp6(4),e.pQV(o.image_syncing.data.length),e.QtT(8),e.xp6(4),e.pQV(o.image_ready.data.length),e.QtT(12),e.xp6(2),e.Q6J("ngbNavOutlet",i)}},directives:[N.Pz,Mt.m,N.nv,N.Vx,N.uN,N.tO,W.a,l.mk,l.O5,N.Ly],pipes:[it],styles:[""]}),n})();function Ji(n,s){if(1&n&&e._UZ(0,"i",18),2&n){const t=e.oxw();e.Q6J("ngClass",t.icons.edit)}}function Yi(n,s){if(1&n&&e._UZ(0,"i",18),2&n){const t=e.oxw();e.Q6J("ngClass",t.icons.check)}}let Vi=(()=>{class n{constructor(t,o,i,_){this.authStorageService=t,this.rbdMirroringService=o,this.modalService=i,this.taskWrapper=_,this.selection=new Se.r,this.peersExist=!0,this.subs=new ii.w,this.editing=!1,this.icons=T.P,this.permission=this.authStorageService.getPermissions().rbdMirroring;const r={permission:"update",icon:T.P.upload,click:()=>this.createBootstrapModal(),name:"Create Bootstrap Token",canBePrimary:()=>!0,disable:()=>!1},c={permission:"update",icon:T.P.download,click:()=>this.importBootstrapModal(),name:"Import Bootstrap Token",disable:()=>this.peersExist};this.tableActions=[r,c]}ngOnInit(){this.createForm(),this.subs.add(this.rbdMirroringService.startPolling()),this.subs.add(this.rbdMirroringService.subscribeSummary(t=>{this.status=t.content_data.status,this.peersExist=!!t.content_data.pools.find(o=>o.peer_uuids.length>0)})),this.rbdMirroringService.getSiteName().subscribe(t=>{this.siteName=t.site_name,this.rbdmirroringForm.get("siteName").setValue(this.siteName)})}createForm(){this.rbdmirroringForm=new x.d({siteName:new a.NI({value:"",disabled:!0})})}ngOnDestroy(){this.subs.unsubscribe()}updateSiteName(){this.editing&&this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/mirroring/site_name/edit",{}),call:this.rbdMirroringService.setSiteName(this.rbdmirroringForm.getValue("siteName"))}).subscribe({complete:()=>{this.rbdMirroringService.refresh()}}),this.editing=!this.editing}createBootstrapModal(){this.modalRef=this.modalService.show(gi,{siteName:this.siteName})}importBootstrapModal(){this.modalRef=this.modalService.show(Ei,{siteName:this.siteName})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(K),e.Y36(de.Z),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mirroring"]],decls:29,vars:9,consts:function(){let s,t,o,i;return s="Site Name",t="Daemons",o="Pools",i="Images",[[1,"row"],[1,"col-md-12"],["name","rbdmirroringForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"d-flex","flex-row"],["for","siteName",1,"col-form-label"],s,[1,"col-md-4","input-group","mb-3","mr-auto"],["type","text","id","siteName","name","siteName","formControlName","siteName",1,"form-control"],[1,"input-group-append"],["id","editSiteName",1,"btn","btn-light",3,"click"],[3,"ngClass",4,"ngIf"],[3,"source","byId"],[1,"table-actions",3,"permission","selection","tableActions"],[1,"col-sm-6"],t,o,i,[3,"ngClass"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"form",2,3),e.TgZ(4,"div",4),e.TgZ(5,"label",5),e.SDv(6,6),e.qZA(),e.TgZ(7,"div",7),e._UZ(8,"input",8),e.TgZ(9,"div",9),e.TgZ(10,"button",10),e.NdJ("click",function(){return o.updateSiteName()}),e.YNc(11,Ji,1,1,"i",11),e.YNc(12,Yi,1,1,"i",11),e.qZA(),e._UZ(13,"cd-copy-2-clipboard-button",12),e.qZA(),e.qZA(),e._UZ(14,"cd-table-actions",13),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(15,"div",0),e.TgZ(16,"div",14),e.TgZ(17,"legend"),e.SDv(18,15),e.qZA(),e._UZ(19,"cd-mirroring-daemons"),e.qZA(),e.TgZ(20,"div",14),e.TgZ(21,"legend"),e.SDv(22,16),e.qZA(),e._UZ(23,"cd-mirroring-pools"),e.qZA(),e.qZA(),e.TgZ(24,"div",0),e.TgZ(25,"div",1),e.TgZ(26,"legend"),e.SDv(27,17),e.qZA(),e._UZ(28,"cd-mirroring-images"),e.qZA(),e.qZA()),2&t&&(e.xp6(2),e.Q6J("formGroup",o.rbdmirroringForm),e.xp6(6),e.uIk("disabled",!o.editing||null),e.xp6(3),e.Q6J("ngIf",!o.editing),e.xp6(1),e.Q6J("ngIf",o.editing),e.xp6(1),e.Q6J("source",o.siteName)("byId",!1),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[a._Y,a.JL,h.V,a.sg,$.o,a.Fj,k.b,a.JJ,a.u,l.O5,Ye.s,Ee.K,Ai,Bi,zi,l.mk],styles:[""]}),n})();class Ui{}function ji(n,s){if(1&n&&(e.TgZ(0,"option",16),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.id),e.xp6(1),e.Oqu(t.name)}}function Wi(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,18),e.qZA())}let es=(()=>{class n{constructor(t,o,i,_,r,c){this.activeModal=t,this.actionLabels=o,this.rbdMirroringService=i,this.taskWrapper=_,this.route=r,this.location=c,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:"Disabled"},{id:"pool",name:"Pool"},{id:"image",name:"Image"}],this.createForm()}createForm(){this.editModeForm=new x.d({mirrorMode:new a.NI("",{validators:[a.kI.required,this.validateMode.bind(this)]})})}ngOnInit(){this.route.params.subscribe(t=>{this.poolName=t.pool_name}),this.pattern=`${this.poolName}`,this.rbdMirroringService.getPool(this.poolName).subscribe(t=>{this.setResponse(t)}),this.subs=this.rbdMirroringService.subscribeSummary(t=>{this.peerExists=!1;const i=t.content_data.pools.find(_=>this.poolName===_.name);this.peerExists=i&&i.peer_uuids.length})}ngOnDestroy(){this.subs.unsubscribe()}validateMode(t){return"disabled"===t.value&&this.peerExists?{cannotDisable:{value:t.value}}:null}setResponse(t){this.editModeForm.get("mirrorMode").setValue(t.mirror_mode)}update(){const t=new Ui;t.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,t)}).subscribe({error:()=>this.editModeForm.setErrors({cdSubmitButton:!0}),complete:()=>{this.rbdMirroringService.refresh(),this.location.back()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(v.p4),e.Y36(K),e.Y36(u.P),e.Y36(m.gz),e.Y36(l.Ye))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-pool-edit-mode-modal"]],decls:21,vars:7,consts:function(){let s,t,o,i;return s="Edit pool mirror mode",t="To edit the mirror mode for pool\xA0 " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd0\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ", select a new mode from the list and click\xA0 " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Update" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ".",t=e.Zx4(t),o="Mode",i="Peer clusters must be removed prior to disabling mirror.",[["pageURL","mirroring",3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","editModeForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","mirrorMode",1,"col-form-label"],o,["id","mirrorMode","name","mirrorMode","formControlName","mirrorMode",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],i]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.ynx(8),e.tHW(9,7),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.BQk(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"label",9),e.TgZ(14,"span"),e.SDv(15,10),e.qZA(),e.qZA(),e.TgZ(16,"select",11),e.YNc(17,ji,2,2,"option",12),e.qZA(),e.YNc(18,Wi,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(19,"div",14),e.TgZ(20,"cd-form-button-panel",15),e.NdJ("submitActionEvent",function(){return o.update()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.editModeForm),e.xp6(7),e.pQV(o.poolName),e.QtT(9),e.xp6(6),e.Q6J("ngForOf",o.mirrorModes),e.xp6(1),e.Q6J("ngIf",o.editModeForm.showError("mirrorMode",i,"cannotDisable")),e.xp6(2),e.Q6J("form",o.editModeForm)("submitText",o.actionLabels.UPDATE)}},directives:[C.z,a._Y,a.JL,h.V,a.sg,O.P,$.o,a.EJ,k.b,a.JJ,a.u,l.sg,l.O5,j.p,a.YN,a.Kr],styles:[""]}),n})();var Ot=p(80226),ts=p(28049),os=p(43190),Ve=p(80842),st=p(30633),Le=p(47557),ns=p(28211);class is{}var Pe=(()=>{return(n=Pe||(Pe={}))[n.V1=1]="V1",n[n.V2=2]="V2",Pe;var n})();class ss{constructor(){this.features=[]}}class _s{constructor(){this.features=[]}}class rs extends class{}{constructor(){super(...arguments),this.features=[]}}class _t{constructor(){this.features=[],this.remove_scheduling=!1}}var Ue=(()=>{return(n=Ue||(Ue={})).editing="editing",n.cloning="cloning",n.copying="copying",Ue;var n})(),ls=p(17932),cs=p(18372),ds=p(54555);function ps(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",58),e.SDv(2,59),e.ALo(3,"titlecase"),e.qZA(),e.TgZ(4,"div",12),e._UZ(5,"input",60),e._UZ(6,"hr"),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(3,1,t.action)),e.QtT(2)}}function gs(n,s){1&n&&(e.TgZ(0,"span",61),e.ynx(1),e.SDv(2,62),e.BQk(),e.qZA())}function us(n,s){1&n&&(e.TgZ(0,"span",61),e.ynx(1),e.SDv(2,63),e.BQk(),e.qZA())}function ms(n,s){1&n&&e._UZ(0,"input",64)}function Ts(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,67),e.qZA()),2&n&&e.Q6J("ngValue",null)}function fs(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,68),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Cs(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,69),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Ss(n,s){if(1&n&&(e.TgZ(0,"option",70),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function Es(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"select",65),e.NdJ("change",function(){return e.CHM(t),e.oxw(2).setPoolMirrorMode()}),e.YNc(1,Ts,2,1,"option",66),e.YNc(2,fs,2,1,"option",66),e.YNc(3,Cs,2,1,"option",66),e.YNc(4,Ss,2,2,"option",46),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.pools)}}function Rs(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,71),e.qZA())}const Ms=function(n,s){return[n,s]};function Os(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"div",20),e._UZ(2,"i",72),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(2),e.Q6J("ngClass",e.WLB(1,Ms,t.icons.spinner,t.icons.spin))}}function As(n,s){1&n&&e._UZ(0,"input",76)}function hs(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,78),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Ps(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,79),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Is(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,80),e.qZA()),2&n&&e.Q6J("ngValue",null)}function bs(n,s){if(1&n&&(e.TgZ(0,"option",70),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Ns(n,s){if(1&n&&(e.TgZ(0,"select",77),e.YNc(1,hs,2,1,"option",66),e.YNc(2,Ps,2,1,"option",66),e.YNc(3,Is,2,1,"option",66),e.YNc(4,bs,2,2,"option",46),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.namespaces)}}function Fs(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",73),e._uU(2," Namespace "),e.qZA(),e.TgZ(3,"div",12),e.YNc(4,As,1,0,"input",74),e.YNc(5,Ns,5,4,"select",75),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngIf","editing"===t.mode||!t.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==t.mode&&t.poolPermission.read)}}function Ds(n,s){1&n&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"span"),e.SDv(2,81),e.qZA(),e.qZA())}function vs(n,s){1&n&&e._UZ(0,"input",87)}function Ls(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,89),e.qZA()),2&n&&e.Q6J("ngValue",null)}function $s(n,s){1&n&&(e.TgZ(0,"option",50),e.SDv(1,90),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Zs(n,s){1&n&&(e.TgZ(0,"option",50),e._uU(1,"-- Select a data pool -- "),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Bs(n,s){if(1&n&&(e.TgZ(0,"option",70),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function Gs(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"select",88),e.NdJ("change",function(i){return e.CHM(t),e.oxw(3).onDataPoolChange(i.target.value)}),e.YNc(1,Ls,2,1,"option",66),e.YNc(2,$s,2,1,"option",66),e.YNc(3,Zs,2,1,"option",66),e.YNc(4,Bs,2,2,"option",46),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngIf",null===t.dataPools),e.xp6(1),e.Q6J("ngIf",null!==t.dataPools&&0===t.dataPools.length),e.xp6(1),e.Q6J("ngIf",null!==t.dataPools&&t.dataPools.length>0),e.xp6(1),e.Q6J("ngForOf",t.dataPools)}}function ys(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,91),e.qZA())}const je=function(n){return{required:n}};function xs(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",82),e.TgZ(2,"span",72),e.SDv(3,83),e.qZA(),e._UZ(4,"cd-helper",84),e.qZA(),e.TgZ(5,"div",12),e.YNc(6,vs,1,0,"input",85),e.YNc(7,Gs,5,4,"select",86),e.YNc(8,ys,2,0,"span",14),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(4,je,"editing"!==o.mode)),e.xp6(4),e.Q6J("ngIf","editing"===o.mode||!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("dataPool",t,"required"))}}function ws(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,92),e.qZA())}function qs(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,93),e.qZA())}function Hs(n,s){if(1&n&&e._UZ(0,"cd-helper",97),2&n){const t=e.oxw().$implicit;e.s9C("html",t.helperHtml)}}function ks(n,s){if(1&n&&(e.TgZ(0,"div",21),e._UZ(1,"input",94),e.TgZ(2,"label",95),e._uU(3),e.qZA(),e.YNc(4,Hs,1,1,"cd-helper",96),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.s9C("id",t.key),e.s9C("name",t.key),e.s9C("formControlName",t.key),e.xp6(1),e.s9C("for",t.key),e.xp6(1),e.Oqu(t.desc),e.xp6(1),e.Q6J("ngIf",t.helperHtml)}}const At=function(n){return["edit",n]},ht=function(n){return{modal:n}},Pt=function(n){return{outlets:n}},It=function(n){return["/block/mirroring",n]};function Ks(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"span"),e.tHW(2,98),e._UZ(3,"b"),e._UZ(4,"a",99),e.N_p(),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("routerLink",e.VKq(7,It,e.VKq(5,Pt,e.VKq(3,ht,e.VKq(1,At,t.currentPoolName)))))}}function Xs(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"span"),e.tHW(2,103),e._UZ(3,"b"),e._UZ(4,"a",99),e.N_p(),e.qZA(),e.qZA()),2&n){const t=e.oxw(4);e.xp6(4),e.Q6J("routerLink",e.VKq(7,It,e.VKq(5,Pt,e.VKq(3,ht,e.VKq(1,At,t.currentPoolName)))))}}function Qs(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",101),e.TgZ(1,"input",102),e.NdJ("change",function(){return e.CHM(t),e.oxw(3).setExclusiveLock()}),e.qZA(),e.TgZ(2,"label",95),e._uU(3),e.ALo(4,"titlecase"),e.qZA(),e.YNc(5,Xs,5,9,"cd-helper",25),e.qZA()}if(2&n){const t=s.$implicit,o=e.oxw(3);e.xp6(1),e.Q6J("id",t)("value",t),e.uIk("disabled","pool"===o.poolMirrorMode&&"snapshot"===t||null),e.xp6(1),e.Q6J("for",t),e.xp6(1),e.Oqu(e.lcZ(4,6,t)),e.xp6(2),e.Q6J("ngIf","pool"===o.poolMirrorMode&&"snapshot"===t)}}function zs(n,s){if(1&n&&(e.TgZ(0,"div"),e.YNc(1,Qs,6,8,"div",100),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngForOf",t.mirroringOptions)}}function Js(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",104),e.tHW(2,105),e._UZ(3,"cd-helper",106),e.N_p(),e.qZA(),e.TgZ(4,"div",12),e._UZ(5,"input",107),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(5),e.uIk("disabled",t.mode===t.rbdFormMode.editing||null)}}function Ys(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"a",108),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).advancedEnabled=!0,!1}),e.SDv(1,109),e.qZA()}}function Vs(n,s){if(1&n&&(e.TgZ(0,"option",70),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Us(n,s){if(1&n&&(e.TgZ(0,"option",70),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function js(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,110),e.qZA())}function Ws(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,111),e.qZA())}function e_(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,112),e.qZA())}function t_(n,s){1&n&&(e.TgZ(0,"span",61),e.SDv(1,113),e.qZA())}function o_(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.YNc(9,ps,7,3,"div",8),e.TgZ(10,"div",9),e.TgZ(11,"label",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"div",12),e._UZ(14,"input",13),e.YNc(15,gs,3,0,"span",14),e.YNc(16,us,3,0,"span",14),e.qZA(),e.qZA(),e.TgZ(17,"div",15),e.NdJ("change",function(i){return e.CHM(t),e.oxw().onPoolChange(i.target.value)}),e.TgZ(18,"label",16),e.SDv(19,17),e.qZA(),e.TgZ(20,"div",12),e.YNc(21,ms,1,0,"input",18),e.YNc(22,Es,5,4,"select",19),e.YNc(23,Rs,2,0,"span",14),e.qZA(),e.qZA(),e.YNc(24,Os,3,4,"div",8),e.YNc(25,Fs,6,2,"div",8),e.TgZ(26,"div",9),e.TgZ(27,"div",20),e.TgZ(28,"div",21),e.TgZ(29,"input",22),e.NdJ("change",function(){return e.CHM(t),e.oxw().onUseDataPoolChange()}),e.qZA(),e.TgZ(30,"label",23),e.SDv(31,24),e.qZA(),e.YNc(32,Ds,3,0,"cd-helper",25),e.qZA(),e.qZA(),e.qZA(),e.YNc(33,xs,9,6,"div",8),e.TgZ(34,"div",9),e.TgZ(35,"label",26),e.SDv(36,27),e.qZA(),e.TgZ(37,"div",12),e._UZ(38,"input",28),e.YNc(39,ws,2,0,"span",14),e.YNc(40,qs,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(41,"div",29),e.TgZ(42,"label",30),e.SDv(43,31),e.qZA(),e.TgZ(44,"div",12),e.YNc(45,ks,5,6,"div",32),e.qZA(),e.qZA(),e.TgZ(46,"div",9),e.TgZ(47,"div",20),e.TgZ(48,"div",21),e.TgZ(49,"input",33),e.NdJ("change",function(){return e.CHM(t),e.oxw().setMirrorMode()}),e.qZA(),e.TgZ(50,"label",34),e._uU(51,"Mirroring"),e.qZA(),e.YNc(52,Ks,5,9,"cd-helper",25),e.qZA(),e.YNc(53,zs,2,1,"div",25),e.qZA(),e.qZA(),e.YNc(54,Js,6,1,"div",8),e.TgZ(55,"div",35),e.TgZ(56,"div",36),e.YNc(57,Ys,2,0,"a",37),e.qZA(),e.qZA(),e.TgZ(58,"div",38),e.TgZ(59,"legend",39),e.SDv(60,40),e.qZA(),e.TgZ(61,"div",41),e.TgZ(62,"h4",39),e.SDv(63,42),e.qZA(),e.TgZ(64,"div",9),e.TgZ(65,"label",43),e.tHW(66,44),e._UZ(67,"cd-helper"),e.N_p(),e.qZA(),e.TgZ(68,"div",12),e.TgZ(69,"select",45),e.YNc(70,Vs,2,2,"option",46),e.qZA(),e.qZA(),e.qZA(),e.TgZ(71,"div",9),e.TgZ(72,"label",47),e.tHW(73,48),e._UZ(74,"cd-helper"),e.N_p(),e.qZA(),e.TgZ(75,"div",12),e.TgZ(76,"select",49),e.TgZ(77,"option",50),e.SDv(78,51),e.qZA(),e.YNc(79,Us,2,2,"option",46),e.qZA(),e.YNc(80,js,2,0,"span",14),e.YNc(81,Ws,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(82,"div",9),e.TgZ(83,"label",52),e.tHW(84,53),e._UZ(85,"cd-helper"),e.N_p(),e.qZA(),e.TgZ(86,"div",12),e._UZ(87,"input",54),e.YNc(88,e_,2,0,"span",14),e.YNc(89,t_,2,0,"span",14),e.qZA(),e.qZA(),e.qZA(),e.TgZ(90,"cd-rbd-configuration-form",55),e.NdJ("changes",function(i){return e.CHM(t),e.oxw().getDirtyConfigurationValues=i}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(91,"div",56),e.TgZ(92,"cd-form-button-panel",57),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.ALo(93,"titlecase"),e.ALo(94,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.rbdForm),e.xp6(6),e.pQV(e.lcZ(6,35,o.action))(e.lcZ(7,37,o.resource)),e.QtT(5),e.xp6(2),e.Q6J("ngIf",o.rbdForm.getValue("parent")),e.xp6(6),e.Q6J("ngIf",o.rbdForm.showError("name",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("name",t,"pattern")),e.xp6(2),e.Q6J("ngClass",e.VKq(43,je,"editing"!==o.mode)),e.xp6(3),e.Q6J("ngIf","editing"===o.mode||!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("pool",t,"required")),e.xp6(1),e.Q6J("ngIf","editing"!==o.mode&&o.rbdForm.getValue("pool")&&null===o.namespaces),e.xp6(1),e.Q6J("ngIf","editing"===o.mode&&o.rbdForm.getValue("namespace")||"editing"!==o.mode&&(o.namespaces&&o.namespaces.length>0||!o.poolPermission.read)),e.xp6(7),e.Q6J("ngIf",o.allDataPools.length<=1),e.xp6(1),e.Q6J("ngIf",o.rbdForm.getValue("useDataPool")),e.xp6(6),e.Q6J("ngIf",o.rbdForm.showError("size",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("size",t,"invalidSizeObject")),e.xp6(5),e.Q6J("ngForOf",o.featuresList),e.xp6(7),e.Q6J("ngIf",!1===o.mirroring&&o.currentPoolName),e.xp6(1),e.Q6J("ngIf",o.mirroring),e.xp6(1),e.Q6J("ngIf","snapshot"===o.rbdForm.getValue("mirroringMode")&&o.mirroring),e.xp6(3),e.Q6J("ngIf",!o.advancedEnabled),e.xp6(1),e.Q6J("hidden",!o.advancedEnabled),e.xp6(12),e.Q6J("ngForOf",o.objectSizes),e.xp6(2),e.Q6J("ngClass",e.VKq(45,je,o.rbdForm.getValue("stripingCount"))),e.xp6(5),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.objectSizes),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingUnit",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingUnit",t,"invalidStripingUnit")),e.xp6(2),e.Q6J("ngClass",e.VKq(47,je,o.rbdForm.getValue("stripingUnit"))),e.xp6(5),e.Q6J("ngIf",o.rbdForm.showError("stripingCount",t,"required")),e.xp6(1),e.Q6J("ngIf",o.rbdForm.showError("stripingCount",t,"min")),e.xp6(1),e.Q6J("form",o.rbdForm)("initializeData",o.initializeConfigData),e.xp6(2),e.Q6J("form",t)("submitText",e.lcZ(93,39,o.action)+" "+e.lcZ(94,41,o.resource))}}let $e=(()=>{class n extends H.E{constructor(t,o,i,_,r,c,d,g,f,I){super(),this.authStorageService=t,this.route=o,this.poolService=i,this.rbdService=_,this.formatter=r,this.taskWrapper=c,this.dimlessBinaryPipe=d,this.actionLabels=g,this.router=f,this.rbdMirroringService=I,this.namespaces=[],this.namespacesByPoolCache={},this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=[],this.featuresList=[],this.initializeConfigData=new Ot.t(1),this.advancedEnabled=!1,this.rbdFormMode=Ue,this.defaultObjectSize="4 MiB",this.mirroringOptions=["journal","snapshot"],this.mirroring=!1,this.currentPoolName="",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.defaultStripingUnit="4 MiB",this.defaultStripingCount=1,this.rbdImage=new Ot.t(1),this.icons=T.P,this.routerUrl=this.router.url,this.poolPermission=this.authStorageService.getPermissions().pool,this.resource="RBD",this.features={"deep-flatten":{desc:"Deep flatten",requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:"Layering",requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:"Exclusive lock",requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:"Object map (requires exclusive-lock)",requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:"Fast diff (interlocked with object-map)",requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}objToArray(t){return S().map(t,(o,i)=>Object.assign(o,{key:i}))}createForm(){this.rbdForm=new x.d({parent:new a.NI(""),name:new a.NI("",{validators:[a.kI.required,a.kI.pattern(/^[^@/]+?$/)]}),pool:new a.NI(null,{validators:[a.kI.required]}),namespace:new a.NI(null),useDataPool:new a.NI(!1),dataPool:new a.NI(null),size:new a.NI(null,{updateOn:"blur"}),obj_size:new a.NI(this.defaultObjectSize),features:new x.d(this.featuresList.reduce((t,o)=>(t[o.key]=new a.NI({value:!1,disabled:!!o.initDisabled}),t),{})),mirroring:new a.NI(!1),schedule:new a.NI("",{validators:[a.kI.pattern(/^([0-9]+)d|([0-9]+)h|([0-9]+)m$/)]}),mirroringMode:new a.NI(this.mirroringOptions[0]),stripingUnit:new a.NI(this.defaultStripingUnit),stripingCount:new a.NI(this.defaultStripingCount,{updateOn:"blur"})},this.validateRbdForm(this.formatter))}disableForEdit(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("namespace").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable(),this.rbdImage.subscribe(t=>{t.image_format===Pe.V1&&(this.rbdForm.get("deep-flatten").disable(),this.rbdForm.get("layering").disable(),this.rbdForm.get("exclusive-lock").disable())})}disableForClone(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}disableForCopy(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}ngOnInit(){this.prepareFormForAction(),this.gatherNeededData().subscribe(this.handleExternalData.bind(this))}setExclusiveLock(){this.mirroring&&"journal"===this.rbdForm.get("mirroringMode").value?(this.rbdForm.get("exclusive-lock").setValue(!0),this.rbdForm.get("exclusive-lock").disable()):(this.rbdForm.get("exclusive-lock").enable(),"pool"===this.poolMirrorMode&&this.rbdForm.get("mirroringMode").setValue(this.mirroringOptions[0]))}setMirrorMode(){this.mirroring=!this.mirroring,this.setExclusiveLock()}setPoolMirrorMode(){var t;this.currentPoolName=this.mode===this.rbdFormMode.editing?null===(t=this.response)||void 0===t?void 0:t.pool_name:this.rbdForm.getValue("pool"),this.currentPoolName&&(this.rbdMirroringService.refresh(),this.rbdMirroringService.subscribeSummary(o=>{const i=o.content_data.pools.find(_=>_.name===this.currentPoolName);this.poolMirrorMode=i.mirror_mode,"disabled"===i.mirror_mode?(this.mirroring=!1,this.rbdForm.get("mirroring").setValue(this.mirroring),this.rbdForm.get("mirroring").disable()):this.mode!==this.rbdFormMode.editing&&(this.rbdForm.get("mirroring").enable(),this.mirroring=!0,this.rbdForm.get("mirroring").setValue(this.mirroring))})),this.setExclusiveLock()}prepareFormForAction(){const t=this.routerUrl;t.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):t.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):t.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,S().each(this.features,o=>{this.rbdForm.get("features").get(o.key).valueChanges.subscribe(i=>this.featureFormUpdate(o.key,i))})}gatherNeededData(){const t={};return this.mode?this.route.params.subscribe(o=>{const i=L.N.fromString(decodeURIComponent(o.image_spec));o.snap&&(this.snapName=decodeURIComponent(o.snap)),t.rbd=this.rbdService.get(i)}):t.defaultFeatures=this.rbdService.defaultFeatures(),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&(t.pools=this.poolService.list(["pool_name","type","flags_names","application_metadata"])),(0,le.D)(t)}handleExternalData(t){if(this.handlePoolData(t.pools),this.setPoolMirrorMode(),t.defaultFeatures&&this.setFeatures(t.defaultFeatures),t.rbd){const o=t.rbd;this.setResponse(o,this.snapName),this.rbdImage.next(o)}this.loadingReady()}handlePoolData(t){if(!t)return;const o=[],i=[];for(const _ of t)this.rbdService.isRBDPool(_)&&("replicated"===_.type?(o.push(_),i.push(_)):"erasure"===_.type&&-1!==_.flags_names.indexOf("ec_overwrites")&&i.push(_));if(this.pools=o,this.allPools=o,this.dataPools=i,this.allDataPools=i,1===this.pools.length){const _=this.pools[0].pool_name;this.rbdForm.get("pool").setValue(_),this.onPoolChange(_)}this.allDataPools.length<=1&&this.rbdForm.get("useDataPool").disable()}onPoolChange(t){const o=this.rbdForm.get("dataPool");o.value===t&&o.setValue(null),this.dataPools=this.allDataPools?this.allDataPools.filter(i=>i.pool_name!==t):[],this.namespaces=null,t in this.namespacesByPoolCache?this.namespaces=this.namespacesByPoolCache[t]:this.rbdService.listNamespaces(t).subscribe(i=>{i=i.map(_=>_.namespace),this.namespacesByPoolCache[t]=i,this.namespaces=i}),this.rbdForm.get("namespace").setValue(null)}onUseDataPoolChange(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))}onDataPoolChange(t){const o=this.allPools.filter(i=>i.pool_name!==t);this.rbdForm.getValue("pool")===t&&this.rbdForm.get("pool").setValue(null),this.pools=o}validateRbdForm(t){return o=>{const i=o.get("useDataPool"),_=o.get("dataPool");let r=null;i.value&&null==_.value&&(r={required:!0}),_.setErrors(r);const c=o.get("size"),d=o.get("obj_size"),g=t.toBytes(null!=d.value?d.value:this.defaultObjectSize),f=o.get("stripingCount"),I=null!=f.value?f.value:this.defaultStripingCount;let P=null;null===c.value?P={required:!0}:I*g>t.toBytes(c.value)&&(P={invalidSizeObject:!0}),c.setErrors(P);const Z=o.get("stripingUnit");let B=null;null===Z.value&&null!==f.value?B={required:!0}:null!==Z.value&&t.toBytes(Z.value)>g&&(B={invalidStripingUnit:!0}),Z.setErrors(B);let Q=null;return null===f.value&&null!==Z.value?Q={required:!0}:I<1&&(Q={min:!0}),f.setErrors(Q),null}}deepBoxCheck(t,o){this.getDependentChildFeatures(t).forEach(_=>{const r=this.rbdForm.get(_.key);o?r.enable({emitEvent:!1}):(r.disable({emitEvent:!1}),r.setValue(!1,{emitEvent:!1}),this.deepBoxCheck(_.key,o));const c=this.rbdForm.get("features");this.mode===this.rbdFormMode.editing&&c.get(_.key).enabled&&(-1!==this.response.features_name.indexOf(_.key)&&!_.allowDisable||-1===this.response.features_name.indexOf(_.key)&&!_.allowEnable)&&c.get(_.key).disable()})}getDependentChildFeatures(t){return S().filter(this.features,o=>o.requires===t)||[]}interlockCheck(t,o){const i=this.featuresList.find(_=>_.key===t);if(this.response){const _=null!=i.interlockedWith,r=this.featuresList.find(d=>d.interlockedWith===i.key),c=!!this.response.features_name.find(d=>d===i.key);if(_){if(c!==!!this.response.features_name.find(g=>g===i.interlockedWith))return}else if(r&&!!this.response.features_name.find(g=>g===r.key)!==c)return}o?S().filter(this.features,_=>_.interlockedWith===t).forEach(_=>this.rbdForm.get(_.key).setValue(!0,{emitEvent:!1})):i.interlockedWith&&this.rbdForm.get("features").get(i.interlockedWith).setValue(!1)}featureFormUpdate(t,o){if(o){const i=this.features[t].requires;if(i&&!this.rbdForm.getValue(i))return void this.rbdForm.get(`features.${t}`).setValue(!1)}this.deepBoxCheck(t,o),this.interlockCheck(t,o)}setFeatures(t){const o=this.rbdForm.get("features");S().forIn(this.features,i=>{-1!==t.indexOf(i.key)&&o.get(i.key).setValue(!0),this.featureFormUpdate(i.key,o.get(i.key).value)})}setResponse(t,o){this.response=t;const i=new L.N(t.pool_name,t.namespace,t.name).toString();if(this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(`${i}@${o}`);else if(this.mode===this.rbdFormMode.copying)o?this.rbdForm.get("parent").setValue(`${i}@${o}`):this.rbdForm.get("parent").setValue(`${i}`);else if(t.parent){const _=t.parent;this.rbdForm.get("parent").setValue(`${_.pool_name}/${_.image_name}@${_.snap_name}`)}this.mode===this.rbdFormMode.editing&&(this.rbdForm.get("name").setValue(t.name),"snapshot"===(null==t?void 0:t.mirror_mode)||t.features_name.includes("journaling")?(this.mirroring=!0,this.rbdForm.get("mirroring").setValue(this.mirroring),this.rbdForm.get("mirroringMode").setValue(null==t?void 0:t.mirror_mode),this.rbdForm.get("schedule").setValue(null==t?void 0:t.schedule_interval)):(this.mirroring=!1,this.rbdForm.get("mirroring").setValue(this.mirroring)),this.setPoolMirrorMode()),this.rbdForm.get("pool").setValue(t.pool_name),this.onPoolChange(t.pool_name),this.rbdForm.get("namespace").setValue(t.namespace),t.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(t.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(t.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(t.obj_size)),this.setFeatures(t.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(t.stripe_unit)),this.rbdForm.get("stripingCount").setValue(t.stripe_count),this.initializeConfigData.next({initialData:this.response.configuration,sourceType:st.h.image})}createRequest(){const t=new rs;return t.pool_name=this.rbdForm.getValue("pool"),t.namespace=this.rbdForm.getValue("namespace"),t.name=this.rbdForm.getValue("name"),t.schedule_interval=this.rbdForm.getValue("schedule"),t.size=this.formatter.toBytes(this.rbdForm.getValue("size")),"image"===this.poolMirrorMode&&(t.mirror_mode=this.rbdForm.getValue("mirroringMode")),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(),t}addObjectSizeAndStripingToRequest(t){t.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),S().forIn(this.features,o=>{this.rbdForm.getValue(o.key)&&t.features.push(o.key)}),this.mirroring&&"journal"===this.rbdForm.getValue("mirroringMode")&&t.features.push("journaling"),t.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),t.stripe_count=this.rbdForm.getValue("stripingCount"),t.data_pool=this.rbdForm.getValue("dataPool")}createAction(){const t=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/create",{pool_name:t.pool_name,namespace:t.namespace,image_name:t.name,schedule_interval:t.schedule_interval,start_time:t.start_time}),call:this.rbdService.create(t)})}editRequest(){const t=new _t;if(t.name=this.rbdForm.getValue("name"),t.schedule_interval=this.rbdForm.getValue("schedule"),t.name=this.rbdForm.getValue("name"),t.size=this.formatter.toBytes(this.rbdForm.getValue("size")),S().forIn(this.features,o=>{this.rbdForm.getValue(o.key)&&t.features.push(o.key)}),t.enable_mirror=this.rbdForm.getValue("mirroring"),"image"===this.poolMirrorMode)t.enable_mirror&&(t.mirror_mode=this.rbdForm.getValue("mirroringMode"));else if(t.enable_mirror)t.features.push("journaling");else{const o=t.features.indexOf("journaling",0);o>-1&&t.features.splice(o,1)}return t.configuration=this.getDirtyConfigurationValues(),t}cloneRequest(){const t=new ss;return t.child_pool_name=this.rbdForm.getValue("pool"),t.child_namespace=this.rbdForm.getValue("namespace"),t.child_image_name=this.rbdForm.getValue("name"),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(!0,st.h.image),t}editAction(){const t=new L.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/edit",{image_spec:t.toString()}),call:this.rbdService.update(t,this.editRequest())})}cloneAction(){const t=this.cloneRequest(),o=new L.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/clone",{parent_image_spec:o.toString(),parent_snap_name:this.snapName,child_pool_name:t.child_pool_name,child_namespace:t.child_namespace,child_image_name:t.child_image_name}),call:this.rbdService.cloneSnapshot(o,this.snapName,t)})}copyRequest(){const t=new _s;return this.snapName&&(t.snapshot_name=this.snapName),t.dest_pool_name=this.rbdForm.getValue("pool"),t.dest_namespace=this.rbdForm.getValue("namespace"),t.dest_image_name=this.rbdForm.getValue("name"),this.addObjectSizeAndStripingToRequest(t),t.configuration=this.getDirtyConfigurationValues(!0,st.h.image),t}copyAction(){const t=this.copyRequest(),o=new L.N(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/copy",{src_image_spec:o.toString(),dest_pool_name:t.dest_pool_name,dest_namespace:t.dest_namespace,dest_image_name:t.dest_image_name}),call:this.rbdService.copy(o,t)})}submit(){this.mode||this.rbdImage.next("create"),this.rbdImage.pipe((0,ts.P)(),(0,os.w)(()=>this.mode===this.rbdFormMode.editing?this.editAction():this.mode===this.rbdFormMode.cloning?this.cloneAction():this.mode===this.rbdFormMode.copying?this.copyAction():this.createAction())).subscribe(()=>{},()=>this.rbdForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/block/rbd"]))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(m.gz),e.Y36(Ve.q),e.Y36(q),e.Y36(ns.H),e.Y36(u.P),e.Y36(Le.$),e.Y36(v.p4),e.Y36(m.F0),e.Y36(K))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P,Z,B,Q,Y,ee,te,w,_e,ae,M,ge,ue,me,Te,fe,Ce,G,Be,Ge,ye,xe,we,qe,He,ke,Ke,Xe,Qe,ze;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Name",o="Pool",i="Use a dedicated data pool",_="Size",r="e.g., 10GiB",c="Features",d="Advanced",g="Striping",f="Object size" + "\ufffd#67\ufffd" + "Objects in the Ceph Storage Cluster have a maximum configurable size (e.g., 2MB, 4MB, etc.). The object size should be large enough to accommodate many stripe units, and should be a multiple of the stripe unit." + "\ufffd/#67\ufffd" + "",I="Stripe unit" + "\ufffd#74\ufffd" + "Stripes have a configurable unit size (e.g., 64kb). The Ceph Client divides the data it will write to objects into equally sized stripe units, except for the last stripe unit. A stripe width, should be a fraction of the Object Size so that an object may contain many stripe units." + "\ufffd/#74\ufffd" + "",P="-- Select stripe unit --",Z="Stripe count" + "\ufffd#85\ufffd" + "The Ceph Client writes a sequence of stripe units over a series of objects determined by the stripe count. The series of objects is called an object set. After the Ceph Client writes to the last object in the object set, it returns to the first object in the object set." + "\ufffd/#85\ufffd" + "",B="" + "\ufffd0\ufffd" + " from",Q="This field is required.",Y="'/' and '@' are not allowed.",ee="Loading...",te="-- No rbd pools available --",w="-- Select a pool --",_e="This field is required.",ae="Loading...",M="-- No namespaces available --",ge="-- Select a namespace --",ue="You need more than one pool with the rbd application label use to use a dedicated data pool.",me="Data pool",Te="Dedicated pool that stores the object-data of the RBD.",fe="Loading...",Ce="-- No data pools available --",G="This field is required.",Be="This field is required.",Ge="You have to increase the size.",ye="You need to enable a " + "\ufffd#3\ufffd" + "mirror mode" + "\ufffd/#3\ufffd" + " in the selected pool. Please " + "\ufffd#4\ufffd" + "click here to select a mode and enable it in this pool." + "\ufffd/#4\ufffd" + "",xe="You need to enable " + "\ufffd#3\ufffd" + "image mirror mode" + "\ufffd/#3\ufffd" + " in the selected pool. Please " + "\ufffd#4\ufffd" + "click here to select a mode and enable it in this pool." + "\ufffd/#4\ufffd" + "",we="Create Mirror-Snapshots automatically on a periodic basis. The interval can be specified in days, hours, or minutes using d, h, m suffix respectively.",qe="Schedule Interval " + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + "",He="e.g., 12h or 1d or 10m",ke="Advanced...",Ke="This field is required because stripe count is defined!",Xe="Stripe unit is greater than object size.",Qe="This field is required because stripe unit is defined!",ze="Stripe count must be greater than 0.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","rbdForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["type","text","placeholder","Name...","id","name","name","name","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"form-group","row",3,"change"],["for","pool",1,"cd-col-form-label",3,"ngClass"],o,["class","form-control","type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",4,"ngIf"],["id","pool","name","pool","class","form-control","formControlName","pool",3,"change",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","useDataPool","name","useDataPool","formControlName","useDataPool",1,"custom-control-input",3,"change"],["for","useDataPool",1,"custom-control-label"],i,[4,"ngIf"],["for","size",1,"cd-col-form-label","required"],_,["id","size","name","size","type","text","formControlName","size","placeholder",r,"defaultUnit","GiB","cdDimlessBinary","",1,"form-control"],["formGroupName","features",1,"form-group","row"],["for","features",1,"cd-col-form-label"],c,["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],["type","checkbox","id","mirroring","name","mirroring","formControlName","mirroring",1,"custom-control-input",3,"change"],["for","mirroring",1,"custom-control-label"],[1,"row"],[1,"col-sm-12"],["class","float-right margin-right-md","href","",3,"click",4,"ngIf"],[3,"hidden"],[1,"cd-header"],d,[1,"col-md-12"],g,["for","size",1,"cd-col-form-label"],f,["id","obj_size","name","obj_size","formControlName","obj_size",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["for","stripingUnit",1,"cd-col-form-label",3,"ngClass"],I,["id","stripingUnit","name","stripingUnit","formControlName","stripingUnit",1,"form-control"],[3,"ngValue"],P,["for","stripingCount",1,"cd-col-form-label",3,"ngClass"],Z,["id","stripingCount","name","stripingCount","formControlName","stripingCount","type","number",1,"form-control"],[3,"form","initializeData","changes"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["for","name",1,"cd-col-form-label"],B,["type","text","id","parent","name","parent","formControlName","parent",1,"form-control"],[1,"invalid-feedback"],Q,Y,["type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",1,"form-control"],["id","pool","name","pool","formControlName","pool",1,"form-control",3,"change"],[3,"ngValue",4,"ngIf"],ee,te,w,[3,"value"],_e,[3,"ngClass"],["for","pool",1,"cd-col-form-label"],["class","form-control","type","text","placeholder","Namespace...","id","namespace","name","namespace","formControlName","namespace",4,"ngIf"],["id","namespace","name","namespace","class","form-control","formControlName","namespace",4,"ngIf"],["type","text","placeholder","Namespace...","id","namespace","name","namespace","formControlName","namespace",1,"form-control"],["id","namespace","name","namespace","formControlName","namespace",1,"form-control"],ae,M,ge,ue,["for","dataPool",1,"cd-col-form-label"],me,["html",Te],["class","form-control","type","text","placeholder","Data pool name...","id","dataPool","name","dataPool","formControlName","dataPool",4,"ngIf"],["id","dataPool","name","dataPool","class","form-control","formControlName","dataPool",3,"change",4,"ngIf"],["type","text","placeholder","Data pool name...","id","dataPool","name","dataPool","formControlName","dataPool",1,"form-control"],["id","dataPool","name","dataPool","formControlName","dataPool",1,"form-control",3,"change"],fe,Ce,G,Be,Ge,["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],[3,"html",4,"ngIf"],[3,"html"],ye,[3,"routerLink"],["class","custom-control custom-radio ml-2",4,"ngFor","ngForOf"],[1,"custom-control","custom-radio","ml-2"],["type","radio","name","mirroringMode","formControlName","mirroringMode",1,"custom-control-input",3,"id","value","change"],xe,[1,"cd-col-form-label"],qe,["html",we],["id","schedule","name","schedule","type","text","formControlName","schedule","placeholder",He,1,"form-control"],["href","",1,"float-right","margin-right-md",3,"click"],ke,Ke,Xe,Qe,ze]},template:function(t,o){1&t&&e.YNc(0,o_,95,49,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[pt.y,a._Y,a.JL,a.sg,h.V,l.O5,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.mk,a.Wl,ls.Q,a.x0,l.sg,cs.S,a.EJ,a.YN,a.Kr,a.wV,ds.d,j.p,m.yS,a._],pipes:[l.rS,et.m],styles:[""]}),n})();var bt=p(71225),Nt=p(36169);let n_=(()=>{class n{constructor(){}static getCount(t){var o;return Number(null===(o=t.headers)||void 0===o?void 0:o.get("X-Total-Count"))}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var at=p(51847),i_=p(16738),Me=p.n(i_),rt=p(62862),s_=p(52266);function __(n,s){1&n&&(e.TgZ(0,"div",18),e.TgZ(1,"span"),e.SDv(2,19),e.qZA(),e.qZA())}function a_(n,s){1&n&&(e.TgZ(0,"span",20),e.SDv(1,21),e.qZA())}function r_(n,s){1&n&&(e.TgZ(0,"span",20),e.SDv(1,22),e.qZA())}function l_(n,s){if(1&n&&e._UZ(0,"cd-date-time-picker",23),2&n){const t=e.oxw();e.Q6J("control",t.moveForm.get("expiresAt"))}}let c_=(()=>{class n{constructor(t,o,i,_,r){this.rbdService=t,this.activeModal=o,this.actionLabels=i,this.fb=_,this.taskWrapper=r,this.createForm()}createForm(){this.moveForm=this.fb.group({expiresAt:["",[z.h.custom("format",t=>!(""===t||Me()(t,"YYYY-MM-DD HH:mm:ss").isValid())),z.h.custom("expired",t=>Me()().isAfter(t))]]})}ngOnInit(){this.imageSpec=new L.N(this.poolName,this.namespace,this.imageName),this.imageSpecStr=this.imageSpec.toString(),this.pattern=`${this.poolName}/${this.imageName}`}moveImage(){let t=0;const o=this.moveForm.getValue("expiresAt");o&&(t=Me()(o,"YYYY-MM-DD HH:mm:ss").diff(Me()(),"seconds",!0)),t<0&&(t=0),this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/trash/move",{image_spec:this.imageSpecStr}),call:this.rbdService.moveTrash(this.imageSpec,t)}).subscribe({complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(q),e.Y36(N.Kz),e.Y36(v.p4),e.Y36(rt.O),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-move-modal"]],decls:23,vars:9,consts:function(){let s,t,o,i,_,r,c;return s="Move an image to trash",t="To move " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "" + "\ufffd0\ufffd" + "" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + " to trash, click " + "[\ufffd#10\ufffd|\ufffd#11\ufffd]" + "Move" + "[\ufffd/#10\ufffd|\ufffd/#11\ufffd]" + ". Optionally, you can pick an expiration date.",t=e.Zx4(t),o="Protection expires at",i="NOT PROTECTED",_="This image contains snapshot(s), which will prevent it from being removed after moved to trash.",r="Wrong date format. Please use \"YYYY-MM-DD HH:mm:ss\".",c="Protection has already expired. Please pick a future date or leave it empty.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","moveForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],["class","alert alert-warning","role","alert",4,"ngIf"],t,[1,"form-group"],["for","expiresAt",1,"col-form-label"],o,["type","text","placeholder",i,"formControlName","expiresAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["p","ngbPopover"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["popContent",""],["role","alert",1,"alert","alert-warning"],_,[1,"invalid-feedback"],r,c,[3,"control"]]},template:function(t,o){if(1&t){const i=e.EpF();e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,__,3,0,"div",7),e.TgZ(8,"p"),e.tHW(9,8),e._UZ(10,"kbd"),e._UZ(11,"kbd"),e.N_p(),e.qZA(),e.TgZ(12,"div",9),e.TgZ(13,"label",10),e.SDv(14,11),e.qZA(),e.TgZ(15,"input",12,13),e.NdJ("click",function(){return e.CHM(i),e.MAs(16).open()})("keypress",function(){return e.CHM(i),e.MAs(16).close()}),e.qZA(),e.YNc(17,a_,2,0,"span",14),e.YNc(18,r_,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return o.moveImage()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA(),e.YNc(21,l_,1,1,"ng-template",null,17,e.W1O)}if(2&t){const i=e.MAs(5),_=e.MAs(22);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.moveForm),e.xp6(3),e.Q6J("ngIf",o.hasSnapshots),e.xp6(4),e.pQV(o.imageSpecStr),e.QtT(9),e.xp6(4),e.Q6J("ngbPopover",_),e.xp6(2),e.Q6J("ngIf",o.moveForm.showError("expiresAt",i,"format")),e.xp6(1),e.Q6J("ngIf",o.moveForm.showError("expiresAt",i,"expired")),e.xp6(2),e.Q6J("form",o.moveForm)("submitText",o.actionLabels.MOVE)}},directives:[C.z,a._Y,a.JL,a.sg,h.V,l.O5,O.P,$.o,a.Fj,k.b,a.JJ,a.u,N.o8,j.p,s_.J],styles:[""]}),n})();function d_(n,s){1&n&&(e.TgZ(0,"li",10),e.TgZ(1,"a",3),e.SDv(2,11),e.qZA(),e.qZA())}let We=(()=>{class n{constructor(t,o){this.authStorageService=t,this.router=o,this.grafanaPermission=this.authStorageService.getPermissions().grafana}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(m.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-tabs"]],decls:12,vars:2,consts:function(){let s,t,o,i;return s="Images",t="Namespaces",o="Trash",i="Overall Performance",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/block/rbd"],["ngbNavLink",""],s,["ngbNavItem","/block/rbd/namespaces"],t,["ngbNavItem","/block/rbd/trash"],o,["ngbNavItem","/block/rbd/performance",4,"ngIf"],["ngbNavItem","/block/rbd/performance"],i]},template:function(t,o){1&t&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(_){return o.router.navigate([_.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"li",5),e.TgZ(6,"a",3),e.SDv(7,6),e.qZA(),e.qZA(),e.TgZ(8,"li",7),e.TgZ(9,"a",3),e.SDv(10,8),e.qZA(),e.qZA(),e.YNc(11,d_,3,0,"li",9),e.qZA()),2&t&&(e.Q6J("activeId",o.router.url),e.xp6(11),e.Q6J("ngIf",o.grafanaPermission.read))},directives:[N.Pz,N.nv,N.Vx,l.O5],styles:[""]}),n})();var p_=p(25917),Ft=p(51295),lt=p(60737),g_=p(74255),Dt=p(71099),vt=p(79765);function u_(n,s){1&n&&(e.TgZ(0,"span",16),e.SDv(1,17),e.qZA())}function m_(n,s){if(1&n&&(e.TgZ(0,"span"),e.tHW(1,18),e._UZ(2,"b"),e.N_p(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.pQV(t.imageName),e.QtT(1)}}let T_=(()=>{class n{constructor(t,o,i,_,r){this.activeModal=t,this.rbdService=o,this.taskManagerService=i,this.notificationService=_,this.actionLabels=r,this.editing=!1,this.onSubmit=new vt.xQ,this.action=this.actionLabels.CREATE,this.resource="RBD Snapshot",this.createForm()}createForm(){this.snapshotForm=new x.d({snapshotName:new a.NI("",{validators:[a.kI.required]})})}setSnapName(t){this.snapName=t,"snapshot"!==this.mirroring?this.snapshotForm.get("snapshotName").setValue(t):this.snapshotForm.get("snapshotName").clearValidators()}setEditing(t=!0){this.editing=t,this.action=this.editing?this.actionLabels.RENAME:this.actionLabels.CREATE}editAction(){const t=this.snapshotForm.getValue("snapshotName"),o=new L.N(this.poolName,this.namespace,this.imageName),i=new R.R;i.name="rbd/snap/edit",i.metadata={image_spec:o.toString(),snapshot_name:t},this.rbdService.renameSnapshot(o,this.snapName,t).toPromise().then(()=>{this.taskManagerService.subscribe(i.name,i.metadata,_=>{this.notificationService.notifyTask(_)}),this.activeModal.close(),this.onSubmit.next(this.snapName)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}createAction(){const t=this.snapshotForm.getValue("snapshotName"),o=new L.N(this.poolName,this.namespace,this.imageName),i=new R.R;i.name="rbd/snap/create",i.metadata={image_spec:o.toString(),snapshot_name:t},this.rbdService.createSnapshot(o,t).toPromise().then(()=>{this.taskManagerService.subscribe(i.name,i.metadata,_=>{this.notificationService.notifyTask(_)}),this.activeModal.close(),this.onSubmit.next(t)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}submit(){this.editing?this.editAction():this.createAction()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(q),e.Y36(Dt.k),e.Y36(ve.g),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-snapshot-form-modal"]],decls:22,vars:17,consts:function(){let s,t,o,i;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Name",o="This field is required.",i="Snapshot mode is enabled on image " + "\ufffd#2\ufffd" + "" + "\ufffd0\ufffd" + "" + "\ufffd/#2\ufffd" + ": snapshot names are auto generated",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","snapshotForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","snapshotName",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["type","text","placeholder","Snapshot name...","id","snapshotName","name","snapshotName","formControlName","snapshotName","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],o,i]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.YNc(14,u_,2,0,"span",12),e._UZ(15,"br"),e._UZ(16,"br"),e.YNc(17,m_,3,1,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(18,"div",14),e.TgZ(19,"cd-form-button-panel",15),e.NdJ("submitActionEvent",function(){return o.submit()}),e.ALo(20,"titlecase"),e.ALo(21,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,9,o.action))(e.lcZ(4,11,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.snapshotForm),e.xp6(7),e.uIk("disabled","snapshot"===o.mirroring||null),e.xp6(1),e.Q6J("ngIf",o.snapshotForm.showError("snapshotName",i,"required")),e.xp6(3),e.Q6J("ngIf","snapshot"===o.mirroring),e.xp6(2),e.Q6J("form",o.snapshotForm)("submitText",e.lcZ(20,13,o.action)+" "+e.lcZ(21,15,o.resource))}},directives:[C.z,a._Y,a.JL,a.sg,h.V,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.O5,j.p],pipes:[l.rS,et.m],styles:[""]}),n})();class f_{constructor(s,t,o){this.featuresName=t,this.cloneFormatVersion=1,o.cloneFormatVersion().subscribe(i=>{this.cloneFormatVersion=i}),this.create={permission:"create",icon:T.P.add,name:s.CREATE},this.rename={permission:"update",icon:T.P.edit,name:s.RENAME,disable:i=>this.disableForMirrorSnapshot(i)},this.protect={permission:"update",icon:T.P.lock,visible:i=>i.hasSingleSelection&&!i.first().is_protected,name:s.PROTECT,disable:i=>this.disableForMirrorSnapshot(i)},this.unprotect={permission:"update",icon:T.P.unlock,visible:i=>i.hasSingleSelection&&i.first().is_protected,name:s.UNPROTECT,disable:i=>this.disableForMirrorSnapshot(i)},this.clone={permission:"create",canBePrimary:i=>i.hasSingleSelection,disable:i=>this.getCloneDisableDesc(i,this.featuresName)||this.disableForMirrorSnapshot(i),icon:T.P.clone,name:s.CLONE},this.copy={permission:"create",canBePrimary:i=>i.hasSingleSelection,disable:i=>!i.hasSingleSelection||i.first().cdExecuting||this.disableForMirrorSnapshot(i),icon:T.P.copy,name:s.COPY},this.rollback={permission:"update",icon:T.P.undo,name:s.ROLLBACK,disable:i=>this.disableForMirrorSnapshot(i)},this.deleteSnap={permission:"delete",icon:T.P.destroy,disable:i=>{const _=i.first();return!i.hasSingleSelection||_.cdExecuting||_.is_protected||this.disableForMirrorSnapshot(i)},name:s.DELETE},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}getCloneDisableDesc(s,t){return!(s.hasSingleSelection&&!s.first().cdExecuting)||((null==t?void 0:t.includes("layering"))?1===this.cloneFormatVersion&&!s.first().is_protected&&"Snapshot must be protected in order to clone.":"Parent image must support Layering")}disableForMirrorSnapshot(s){return s.hasSingleSelection&&"snapshot"===s.first().mirror_mode&&s.first().name.includes(".mirror.")}}class C_{}var Ze=p(96102);const S_=["nameTpl"],E_=["rollbackTpl"];function R_(n,s){if(1&n&&(e.ynx(0),e.SDv(1,3),e.BQk(),e.TgZ(2,"strong"),e._uU(3),e.qZA(),e._uU(4,".\n")),2&n){const t=s.$implicit;e.xp6(3),e.hij(" ",t.snapName,"")}}let M_=(()=>{class n{constructor(t,o,i,_,r,c,d,g,f,I,P){this.authStorageService=t,this.modalService=o,this.dimlessBinaryPipe=i,this.cdDatePipe=_,this.rbdService=r,this.taskManagerService=c,this.notificationService=d,this.summaryService=g,this.taskListService=f,this.actionLabels=I,this.cdr=P,this.snapshots=[],this.selection=new Se.r,this.builders={"rbd/snap/create":Z=>{const B=new C_;return B.name=Z.snapshot_name,B}},this.permission=this.authStorageService.getPermissions().rbdImage}ngOnInit(){this.columns=[{name:"Name",prop:"name",cellTransformation:De.e.executing,flexGrow:2},{name:"Size",prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"Provisioned",prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:"State",prop:"is_protected",flexGrow:1,cellTransformation:De.e.badge,customTemplateConfig:{map:{true:{value:"PROTECTED",class:"badge-success"},false:{value:"UNPROTECTED",class:"badge-info"}}}},{name:"Created",prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}],this.imageSpec=new L.N(this.poolName,this.namespace,this.rbdName),this.rbdTableActions=new f_(this.actionLabels,this.featuresName,this.rbdService),this.rbdTableActions.create.click=()=>this.openCreateSnapshotModal(),this.rbdTableActions.rename.click=()=>this.openEditSnapshotModal(),this.rbdTableActions.protect.click=()=>this.toggleProtection(),this.rbdTableActions.unprotect.click=()=>this.toggleProtection();const t=()=>this.selection.first()&&`${this.imageSpec.toStringEncoded()}/${encodeURIComponent(this.selection.first().name)}`;this.rbdTableActions.clone.routerLink=()=>`/block/rbd/clone/${t()}`,this.rbdTableActions.copy.routerLink=()=>`/block/rbd/copy/${t()}`,this.rbdTableActions.rollback.click=()=>this.rollbackModal(),this.rbdTableActions.deleteSnap.click=()=>this.deleteSnapshotModal(),this.tableActions=this.rbdTableActions.ordering,this.taskListService.init(()=>(0,p_.of)(this.snapshots),null,_=>{Ft.T.updateChanged(this,{data:_})&&(this.cdr.detectChanges(),this.data=[...this.data])},()=>{Ft.T.updateChanged(this,{data:this.snapshots})&&(this.cdr.detectChanges(),this.data=[...this.data])},_=>["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(_.name)&&this.imageSpec.toString()===_.metadata.image_spec,(_,r)=>_.name===r.metadata.snapshot_name,this.builders)}ngOnChanges(){this.columns&&(this.imageSpec=new L.N(this.poolName,this.namespace,this.rbdName),this.rbdTableActions&&(this.rbdTableActions.featuresName=this.featuresName),this.taskListService.fetch())}openSnapshotModal(t,o=null){this.modalRef=this.modalService.show(T_,{mirroring:this.mirroring}),this.modalRef.componentInstance.poolName=this.poolName,this.modalRef.componentInstance.imageName=this.rbdName,this.modalRef.componentInstance.namespace=this.namespace,o?this.modalRef.componentInstance.setEditing():o=`${this.rbdName}_${Me()().toISOString(!0)}`,this.modalRef.componentInstance.setSnapName(o),this.modalRef.componentInstance.onSubmit.subscribe(_=>{const r=new lt.o;r.name=t,r.metadata={image_spec:this.imageSpec.toString(),snapshot_name:_},this.summaryService.addRunningTask(r)})}openCreateSnapshotModal(){this.openSnapshotModal("rbd/snap/create")}openEditSnapshotModal(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)}toggleProtection(){const t=this.selection.first().name,o=this.selection.first().is_protected,i=new R.R;i.name="rbd/snap/edit";const _=new L.N(this.poolName,this.namespace,this.rbdName);i.metadata={image_spec:_.toString(),snapshot_name:t},this.rbdService.protectSnapshot(_,t,!o).toPromise().then(()=>{const r=new lt.o;r.name=i.name,r.metadata=i.metadata,this.summaryService.addRunningTask(r),this.taskManagerService.subscribe(i.name,i.metadata,c=>{this.notificationService.notifyTask(c)})})}_asyncTask(t,o,i){const _=new R.R;_.name=o,_.metadata={image_spec:new L.N(this.poolName,this.namespace,this.rbdName).toString(),snapshot_name:i};const r=new L.N(this.poolName,this.namespace,this.rbdName);this.rbdService[t](r,i).toPromise().then(()=>{const c=new lt.o;c.name=_.name,c.metadata=_.metadata,this.summaryService.addRunningTask(c),this.modalRef.close(),this.taskManagerService.subscribe(c.name,c.metadata,d=>{this.notificationService.notifyTask(d)})}).catch(()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}rollbackModal(){const t=this.selection.selected[0].name,o=new L.N(this.poolName,this.namespace,this.rbdName).toString(),i={titleText:"RBD snapshot rollback",buttonText:"Rollback",bodyTpl:this.rollbackTpl,bodyData:{snapName:`${o}@${t}`},onSubmit:()=>{this._asyncTask("rollbackSnapshot","rbd/snap/rollback",t)}};this.modalRef=this.modalService.show(Nt.Y,i)}deleteSnapshotModal(){const t=this.selection.selected[0].name;this.modalRef=this.modalService.show(pe.M,{itemDescription:"RBD snapshot",itemNames:[t],submitAction:()=>this._asyncTask("deleteSnapshot","rbd/snap/delete",t)})}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(de.Z),e.Y36(Le.$),e.Y36(Ze.N),e.Y36(q),e.Y36(Dt.k),e.Y36(ve.g),e.Y36(g_.J),e.Y36(ce.j),e.Y36(v.p4),e.Y36(e.sBO))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-snapshot-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(S_,5),e.Gf(E_,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.nameTpl=i.first),e.iGM(i=e.CRH())&&(o.rollbackTpl=i.first)}},inputs:{snapshots:"snapshots",featuresName:"featuresName",poolName:"poolName",namespace:"namespace",mirroring:"mirroring",rbdName:"rbdName"},features:[e._Bn([ce.j]),e.TTD],decls:4,vars:5,consts:function(){let s;return s="You are about to rollback",[["columnMode","flex","selectionType","single",3,"data","columns","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["rollbackTpl",""],s]},template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("updateSelection",function(_){return o.updateSelection(_)}),e._UZ(1,"cd-table-actions",1),e.qZA(),e.YNc(2,R_,5,1,"ng-template",null,2,e.W1O)),2&t&&(e.Q6J("data",o.data)("columns",o.columns),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[W.a,Ee.K],styles:[""],changeDetection:0}),n})();var O_=p(71752),Lt=p(76317),A_=p(41039);const h_=["poolConfigurationSourceTpl"];function P_(n,s){1&n&&(e.ynx(0),e.tHW(1,3),e._UZ(2,"strong"),e.N_p(),e.BQk())}function I_(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",38),e._uU(2),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.Oqu(t)}}function b_(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",39),e.SDv(2,40),e.qZA(),e.qZA()),2&n){e.oxw(3);const t=e.MAs(1);e.xp6(1),e.Q6J("ngbTooltip",t)}}function N_(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.selection.disk_usage)," ")}}function F_(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",39),e.SDv(2,41),e.qZA(),e.qZA()),2&n){e.oxw(3);const t=e.MAs(1);e.xp6(1),e.Q6J("ngbTooltip",t)}}function D_(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.selection.total_disk_usage)," ")}}function v_(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.hij("/",t.selection.parent.pool_namespace,"")}}function L_(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,v_,2,1,"span",1),e._uU(3),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Oqu(t.selection.parent.pool_name),e.xp6(1),e.Q6J("ngIf",t.selection.parent.pool_namespace),e.xp6(1),e.AsE("/",t.selection.parent.image_name,"@",t.selection.parent.snap_name,"")}}function $_(n,s){1&n&&(e.TgZ(0,"span"),e._uU(1,"-"),e.qZA())}function Z_(n,s){if(1&n&&(e.TgZ(0,"table",17),e.TgZ(1,"tbody"),e.TgZ(2,"tr"),e.TgZ(3,"td",18),e.SDv(4,19),e.qZA(),e.TgZ(5,"td",20),e._uU(6),e.qZA(),e.qZA(),e.TgZ(7,"tr"),e.TgZ(8,"td",21),e.SDv(9,22),e.qZA(),e.TgZ(10,"td"),e._uU(11),e.qZA(),e.qZA(),e.TgZ(12,"tr"),e.TgZ(13,"td",21),e.SDv(14,23),e.qZA(),e.TgZ(15,"td"),e._uU(16),e.ALo(17,"empty"),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",21),e.SDv(20,24),e.qZA(),e.TgZ(21,"td"),e._uU(22),e.ALo(23,"cdDate"),e.qZA(),e.qZA(),e.TgZ(24,"tr"),e.TgZ(25,"td",21),e.SDv(26,25),e.qZA(),e.TgZ(27,"td"),e._uU(28),e.ALo(29,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(30,"tr"),e.TgZ(31,"td",21),e.SDv(32,26),e.qZA(),e.TgZ(33,"td"),e._uU(34),e.ALo(35,"dimless"),e.qZA(),e.qZA(),e.TgZ(36,"tr"),e.TgZ(37,"td",21),e.SDv(38,27),e.qZA(),e.TgZ(39,"td"),e._uU(40),e.ALo(41,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(42,"tr"),e.TgZ(43,"td",21),e.SDv(44,28),e.qZA(),e.TgZ(45,"td"),e.YNc(46,I_,3,1,"span",29),e.qZA(),e.qZA(),e.TgZ(47,"tr"),e.TgZ(48,"td",21),e.SDv(49,30),e.qZA(),e.TgZ(50,"td"),e.YNc(51,b_,3,1,"span",1),e.YNc(52,N_,3,3,"span",1),e.qZA(),e.qZA(),e.TgZ(53,"tr"),e.TgZ(54,"td",21),e.SDv(55,31),e.qZA(),e.TgZ(56,"td"),e.YNc(57,F_,3,1,"span",1),e.YNc(58,D_,3,3,"span",1),e.qZA(),e.qZA(),e.TgZ(59,"tr"),e.TgZ(60,"td",21),e.SDv(61,32),e.qZA(),e.TgZ(62,"td"),e._uU(63),e.ALo(64,"dimlessBinary"),e.qZA(),e.qZA(),e.TgZ(65,"tr"),e.TgZ(66,"td",21),e.SDv(67,33),e.qZA(),e.TgZ(68,"td"),e._uU(69),e.qZA(),e.qZA(),e.TgZ(70,"tr"),e.TgZ(71,"td",21),e.SDv(72,34),e.qZA(),e.TgZ(73,"td"),e.YNc(74,L_,4,4,"span",1),e.YNc(75,$_,2,0,"span",1),e.qZA(),e.qZA(),e.TgZ(76,"tr"),e.TgZ(77,"td",21),e.SDv(78,35),e.qZA(),e.TgZ(79,"td"),e._uU(80),e.qZA(),e.qZA(),e.TgZ(81,"tr"),e.TgZ(82,"td",21),e.SDv(83,36),e.qZA(),e.TgZ(84,"td"),e._uU(85),e.qZA(),e.qZA(),e.TgZ(86,"tr"),e.TgZ(87,"td",21),e.SDv(88,37),e.qZA(),e.TgZ(89,"td"),e._uU(90),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(6),e.Oqu(t.selection.name),e.xp6(5),e.Oqu(t.selection.pool_name),e.xp6(5),e.Oqu(e.lcZ(17,19,t.selection.data_pool)),e.xp6(6),e.Oqu(e.lcZ(23,21,t.selection.timestamp)),e.xp6(6),e.Oqu(e.lcZ(29,23,t.selection.size)),e.xp6(6),e.Oqu(e.lcZ(35,25,t.selection.num_objs)),e.xp6(6),e.Oqu(e.lcZ(41,27,t.selection.obj_size)),e.xp6(6),e.Q6J("ngForOf",t.selection.features_name),e.xp6(5),e.Q6J("ngIf",-1===(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(1),e.Q6J("ngIf",-1!==(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(5),e.Q6J("ngIf",-1===(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(1),e.Q6J("ngIf",-1!==(null==t.selection.features_name?null:t.selection.features_name.indexOf("fast-diff"))),e.xp6(5),e.Oqu(e.lcZ(64,29,t.selection.stripe_unit)),e.xp6(6),e.Oqu(t.selection.stripe_count),e.xp6(5),e.Q6J("ngIf",t.selection.parent),e.xp6(1),e.Q6J("ngIf",!t.selection.parent),e.xp6(5),e.Oqu(t.selection.block_name_prefix),e.xp6(5),e.Oqu(t.selection.order),e.xp6(5),e.Oqu(t.selection.image_format)}}function B_(n,s){if(1&n&&e._UZ(0,"cd-rbd-snapshot-list",42),2&n){const t=e.oxw(2);e.Q6J("snapshots",t.selection.snapshots)("featuresName",t.selection.features_name)("poolName",t.selection.pool_name)("namespace",t.selection.namespace)("mirroring",t.selection.mirror_mode)("rbdName",t.selection.name)}}function G_(n,s){if(1&n&&e._UZ(0,"cd-rbd-configuration-table",43),2&n){const t=e.oxw(2);e.Q6J("data",t.selection.configuration)}}function y_(n,s){if(1&n&&e._UZ(0,"cd-grafana",44),2&n){const t=e.oxw(2);e.Q6J("grafanaPath",t.rbdDashboardUrl)("type","metrics")}}function x_(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",4,5),e.TgZ(3,"li",6),e.TgZ(4,"a",7),e.SDv(5,8),e.qZA(),e.YNc(6,Z_,91,31,"ng-template",9),e.qZA(),e.TgZ(7,"li",10),e.TgZ(8,"a",7),e.SDv(9,11),e.qZA(),e.YNc(10,B_,1,6,"ng-template",9),e.qZA(),e.TgZ(11,"li",12),e.TgZ(12,"a",7),e.SDv(13,13),e.qZA(),e.YNc(14,G_,1,1,"ng-template",9),e.qZA(),e.TgZ(15,"li",14),e.TgZ(16,"a",7),e.SDv(17,15),e.qZA(),e.YNc(18,y_,1,2,"ng-template",9),e.qZA(),e.qZA(),e._UZ(19,"div",16),e.BQk()),2&n){const t=e.MAs(2);e.xp6(19),e.Q6J("ngbNavOutlet",t)}}function w_(n,s){1&n&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",45),e.SDv(2,46),e.qZA(),e.BQk())}function q_(n,s){1&n&&(e.ynx(0),e.TgZ(1,"strong",49),e.SDv(2,50),e.qZA(),e.BQk())}function H_(n,s){1&n&&(e.TgZ(0,"span",51),e.SDv(1,52),e.qZA())}function k_(n,s){if(1&n&&(e.YNc(0,q_,3,0,"ng-container",47),e.YNc(1,H_,2,0,"ng-template",null,48,e.W1O)),2&n){const t=s.value,o=e.MAs(2);e.Q6J("ngIf",+t)("ngIfElse",o)}}let K_=(()=>{class n{ngOnChanges(){this.selection&&(this.rbdDashboardUrl=`rbd-details?var-Pool=${this.selection.pool_name}&var-Image=${this.selection.name}`)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-details"]],viewQuery:function(t,o){if(1&t&&(e.Gf(h_,7),e.Gf(N.Pz,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.poolConfigurationSourceTpl=i.first),e.iGM(i=e.CRH())&&(o.nav=i.first)}},inputs:{selection:"selection",images:"images"},features:[e.TTD],decls:6,vars:2,consts:function(){let s,t,o,i,_,r,c,d,g,f,I,P,Z,B,Q,Y,ee,te,w,_e,ae,M,ge,ue,me,Te,fe,Ce;return s="Only available for RBD images with " + "\ufffd#2\ufffd" + "fast-diff" + "\ufffd/#2\ufffd" + " enabled",t="Details",o="Snapshots",i="Configuration",_="Performance",r="Name",c="Pool",d="Data Pool",g="Created",f="Size",I="Objects",P="Object size",Z="Features",B="Provisioned",Q="Total provisioned",Y="Striping unit",ee="Striping count",te="Parent",w="Block name prefix",_e="Order",ae="Format Version",M="N/A",ge="N/A",ue="Information can not be displayed for RBD in status 'Removing'.",me="This setting overrides the global value",Te="Image",fe="This is the global value. No value for this option has been set for this image.",Ce="Global",[["usageNotAvailableTooltipTpl",""],[4,"ngIf"],["poolConfigurationSourceTpl",""],s,["ngbNav","","cdStatefulTab","rbd-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],t,["ngbNavContent",""],["ngbNavItem","snapshots"],o,["ngbNavItem","configuration"],i,["ngbNavItem","performance"],_,[3,"ngbNavOutlet"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],r,[1,"w-75"],[1,"bold"],c,d,g,f,I,P,Z,[4,"ngFor","ngForOf"],B,Q,Y,ee,te,w,_e,ae,[1,"badge","badge-dark","mr-2"],["placement","top",1,"form-text","text-muted",3,"ngbTooltip"],M,ge,[3,"snapshots","featuresName","poolName","namespace","mirroring","rbdName"],[3,"data"],["uid","YhCYGcuZz","grafanaStyle","one",3,"grafanaPath","type"],["type","warning"],ue,[4,"ngIf","ngIfElse"],["global",""],["ngbTooltip",me],Te,["ngbTooltip",fe],Ce]},template:function(t,o){1&t&&(e.YNc(0,P_,3,0,"ng-template",null,0,e.W1O),e.YNc(2,x_,20,1,"ng-container",1),e.YNc(3,w_,3,0,"ng-container",1),e.YNc(4,k_,3,2,"ng-template",null,2,e.W1O)),2&t&&(e.xp6(2),e.Q6J("ngIf",o.selection&&"REMOVING"!==o.selection.source),e.xp6(1),e.Q6J("ngIf",o.selection&&"REMOVING"===o.selection.source))},directives:[l.O5,N.Pz,Mt.m,N.nv,N.Vx,N.uN,N.tO,l.sg,N._L,M_,O_.P,Lt.F,Ct.G],pipes:[A_.W,Ze.N,Le.$,ot.n],styles:[""]}),n})();const X_=["usageTpl"],Q_=["parentTpl"],z_=["nameTpl"],J_=["mirroringTpl"],Y_=["flattenTpl"],V_=["deleteTpl"],U_=["removingStatTpl"],j_=["provisionedNotAvailableTooltipTpl"],W_=["totalProvisionedNotAvailableTooltipTpl"];function ea(n,s){1&n&&e._UZ(0,"div",12),2&n&&e.Q6J("innerHtml","Only available for RBD images with <strong>fast-diff</strong> enabled",e.oJD)}function ta(n,s){if(1&n&&(e.TgZ(0,"span",15),e.SDv(1,16),e.qZA()),2&n){const t=e.oxw(2);e.Q6J("ngbTooltip",t.usageNotAvailableTooltipTpl)}}function oa(n,s){if(1&n&&(e.SDv(0,17),e.ALo(1,"dimlessBinary")),2&n){const t=e.oxw().row;e.xp6(1),e.pQV(e.lcZ(1,1,t.disk_usage)),e.QtT(0)}}function na(n,s){if(1&n&&(e.YNc(0,ta,2,1,"span",13),e.YNc(1,oa,2,3,"ng-template",null,14,e.W1O)),2&n){const t=s.row,o=e.MAs(2);e.Q6J("ngIf",null===t.disk_usage&&!t.features_name.includes("fast-diff"))("ngIfElse",o)}}function ia(n,s){if(1&n&&(e.TgZ(0,"span",15),e.SDv(1,19),e.qZA()),2&n){const t=e.oxw(2);e.Q6J("ngbTooltip",t.usageNotAvailableTooltipTpl)}}function sa(n,s){if(1&n&&(e.SDv(0,20),e.ALo(1,"dimlessBinary")),2&n){const t=e.oxw().row;e.xp6(1),e.pQV(e.lcZ(1,1,t.total_disk_usage)),e.QtT(0)}}function _a(n,s){if(1&n&&(e.YNc(0,ia,2,1,"span",13),e.YNc(1,sa,2,3,"ng-template",null,18,e.W1O)),2&n){const t=s.row,o=e.MAs(2);e.Q6J("ngIf",null===t.total_disk_usage&&!t.features_name.includes("fast-diff"))("ngIfElse",o)}}function aa(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).value;e.xp6(1),e.hij("/",t.pool_namespace,"")}}function ra(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.YNc(2,aa,2,1,"span",21),e._uU(3),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t.pool_name),e.xp6(1),e.Q6J("ngIf",t.pool_namespace),e.xp6(1),e.AsE("/",t.image_name,"@",t.snap_name,"")}}function la(n,s){1&n&&(e.TgZ(0,"span"),e._uU(1,"-"),e.qZA())}function ca(n,s){if(1&n&&(e.YNc(0,ra,4,4,"span",21),e.YNc(1,la,2,0,"span",21)),2&n){const t=s.value;e.Q6J("ngIf",t),e.xp6(1),e.Q6J("ngIf",!t)}}function da(n,s){if(1&n&&(e.TgZ(0,"span",26),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t[0])}}function pa(n,s){if(1&n&&(e.TgZ(0,"span",27),e.ALo(1,"cdDate"),e._uU(2),e.qZA()),2&n){const t=e.oxw().value;e.Q6J("ngbTooltip","Next scheduled snapshot on "+e.lcZ(1,2,t[2])),e.xp6(2),e.Oqu(t[1])}}function ga(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,28),e.qZA())}function ua(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,29),e.qZA())}function ma(n,s){if(1&n&&(e.TgZ(0,"span",26),e._uU(1),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Oqu(t)}}function Ta(n,s){if(1&n&&(e.YNc(0,da,2,1,"span",22),e._uU(1,"\xa0 "),e.YNc(2,pa,3,4,"span",23),e.YNc(3,ga,2,0,"span",24),e.YNc(4,ua,2,0,"span",24),e.YNc(5,ma,2,1,"ng-template",null,25,e.W1O)),2&n){const t=s.value,o=s.row,i=e.MAs(6);e.Q6J("ngIf",3===t.length)("ngIfElse",i),e.xp6(2),e.Q6J("ngIf",3===t.length),e.xp6(1),e.Q6J("ngIf",!0===o.primary),e.xp6(1),e.Q6J("ngIf",!1===o.primary)}}function fa(n,s){if(1&n&&(e._uU(0," You are about to flatten "),e.TgZ(1,"strong"),e._uU(2),e.qZA(),e._uU(3,". "),e._UZ(4,"br"),e._UZ(5,"br"),e._uU(6," All blocks will be copied from parent "),e.TgZ(7,"strong"),e._uU(8),e.qZA(),e._uU(9," to child "),e.TgZ(10,"strong"),e._uU(11),e.qZA(),e._uU(12,".\n")),2&n){const t=s.$implicit;e.xp6(2),e.Oqu(t.child),e.xp6(6),e.Oqu(t.parent),e.xp6(3),e.Oqu(t.child)}}function Ca(n,s){if(1&n&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.Oqu(t)}}function Sa(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"span"),e.SDv(2,33),e.qZA(),e.TgZ(3,"ul"),e.YNc(4,Ca,2,1,"li",34),e.qZA(),e.BQk()),2&n){const t=e.oxw(2).snapshots;e.xp6(4),e.Q6J("ngForOf",t)}}function Ea(n,s){if(1&n&&(e.TgZ(0,"div",31),e.TgZ(1,"span"),e.SDv(2,32),e.qZA(),e._UZ(3,"br"),e.YNc(4,Sa,5,1,"ng-container",21),e.qZA()),2&n){const t=e.oxw().snapshots;e.xp6(4),e.Q6J("ngIf",t.length>0)}}function Ra(n,s){1&n&&e.YNc(0,Ea,5,1,"div",30),2&n&&e.Q6J("ngIf",s.hasSnapshots)}const Ma=function(n,s){return[n,s]};function Oa(n,s){if(1&n&&e._UZ(0,"i",36),2&n){const t=e.oxw(2);e.Q6J("ngClass",e.WLB(1,Ma,t.icons.spinner,t.icons.spin))}}function Aa(n,s){if(1&n&&(e.TgZ(0,"span",36),e._uU(1),e.qZA()),2&n){const t=e.oxw(),o=t.column,i=t.row;e.Q6J("ngClass",null!=o&&null!=o.customTemplateConfig&&o.customTemplateConfig.executingClass?o.customTemplateConfig.executingClass:"text-muted italic"),e.xp6(1),e.hij(" (",i.cdExecuting,") ")}}function ha(n,s){if(1&n&&e._UZ(0,"i",38),2&n){const t=e.oxw(2);e.Gre("",t.icons.warning," warn")}}function Pa(n,s){if(1&n&&(e.YNc(0,Oa,1,4,"i",35),e.TgZ(1,"span",36),e._uU(2),e.qZA(),e.YNc(3,Aa,2,2,"span",35),e.YNc(4,ha,1,3,"i",37)),2&n){const t=s.column,o=s.value,i=s.row;e.Q6J("ngIf",i.cdExecuting),e.xp6(1),e.Q6J("ngClass",null==t||null==t.customTemplateConfig?null:t.customTemplateConfig.valueClass),e.xp6(1),e.hij(" ",o," "),e.xp6(1),e.Q6J("ngIf",i.cdExecuting),e.xp6(1),e.Q6J("ngIf",i.source&&"REMOVING"===i.source)}}let ba=(()=>{class n extends mt.o{constructor(t,o,i,_,r,c,d,g,f){super(),this.authStorageService=t,this.rbdService=o,this.dimlessBinaryPipe=i,this.dimlessPipe=_,this.modalService=r,this.taskWrapper=c,this.taskListService=d,this.urlBuilder=g,this.actionLabels=f,this.tableStatus=new bt.c("light"),this.selection=new Se.r,this.icons=T.P,this.count=0,this.tableContext=null,this.builders={"rbd/create":M=>this.createRbdFromTask(M.pool_name,M.namespace,M.image_name),"rbd/delete":M=>this.createRbdFromTaskImageSpec(M.image_spec),"rbd/clone":M=>this.createRbdFromTask(M.child_pool_name,M.child_namespace,M.child_image_name),"rbd/copy":M=>this.createRbdFromTask(M.dest_pool_name,M.dest_namespace,M.dest_image_name)},this.permission=this.authStorageService.getPermissions().rbdImage;const I=()=>this.selection.first()&&new L.N(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name).toStringEncoded();this.tableActions=[{permission:"create",icon:T.P.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:M=>!M.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:T.P.edit,routerLink:()=>this.urlBuilder.getEdit(I()),name:this.actionLabels.EDIT,disable:M=>this.getRemovingStatusDesc(M)||this.getInvalidNameDisable(M)},{permission:"create",canBePrimary:M=>M.hasSingleSelection,disable:M=>this.getRemovingStatusDesc(M)||this.getInvalidNameDisable(M)||!!M.first().cdExecuting,icon:T.P.copy,routerLink:()=>`/block/rbd/copy/${I()}`,name:this.actionLabels.COPY},{permission:"update",disable:M=>this.getRemovingStatusDesc(M)||this.getInvalidNameDisable(M)||M.first().cdExecuting||!M.first().parent,icon:T.P.flatten,click:()=>this.flattenRbdModal(),name:this.actionLabels.FLATTEN},{permission:"update",icon:T.P.refresh,click:()=>this.resyncRbdModal(),name:this.actionLabels.RESYNC,disable:M=>this.getResyncDisableDesc(M)},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteRbdModal(),name:this.actionLabels.DELETE,disable:M=>this.getDeleteDisableDesc(M)},{permission:"delete",icon:T.P.trash,click:()=>this.trashRbdModal(),name:this.actionLabels.TRASH,disable:M=>this.getRemovingStatusDesc(M)||this.getInvalidNameDisable(M)||M.first().image_format===Pe.V1},{permission:"update",icon:T.P.edit,click:()=>this.removeSchedulingModal(),name:this.actionLabels.REMOVE_SCHEDULING,disable:M=>this.getRemovingStatusDesc(M)||this.getInvalidNameDisable(M)||void 0===M.first().schedule_info},{permission:"update",icon:T.P.edit,click:()=>this.actionPrimary(!0),name:this.actionLabels.PROMOTE,visible:()=>null!=this.selection.first()&&!this.selection.first().primary},{permission:"update",icon:T.P.edit,click:()=>this.actionPrimary(!1),name:this.actionLabels.DEMOTE,visible:()=>null!=this.selection.first()&&this.selection.first().primary}]}createRbdFromTaskImageSpec(t){const o=L.N.fromString(t);return this.createRbdFromTask(o.poolName,o.namespace,o.imageName)}createRbdFromTask(t,o,i){const _=new is;return _.id="-1",_.unique_id="-1",_.name=i,_.namespace=o,_.pool_name=t,_.image_format=Pe.V2,_}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:2,cellTemplate:this.removingStatTpl},{name:"Pool",prop:"pool_name",flexGrow:2},{name:"Namespace",prop:"namespace",flexGrow:2},{name:"Size",prop:"size",flexGrow:1,cellClass:"text-right",sortable:!1,pipe:this.dimlessBinaryPipe},{name:"Objects",prop:"num_objs",flexGrow:1,cellClass:"text-right",sortable:!1,pipe:this.dimlessPipe},{name:"Object size",prop:"obj_size",flexGrow:1,cellClass:"text-right",sortable:!1,pipe:this.dimlessBinaryPipe},{name:"Provisioned",prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe,sortable:!1,cellTemplate:this.provisionedNotAvailableTooltipTpl},{name:"Total provisioned",prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe,sortable:!1,cellTemplate:this.totalProvisionedNotAvailableTooltipTpl},{name:"Parent",prop:"parent",flexGrow:2,sortable:!1,cellTemplate:this.parentTpl},{name:"Mirroring",prop:"mirror_mode",flexGrow:3,sortable:!1,cellTemplate:this.mirroringTpl}],this.taskListService.init(i=>this.getRbdImages(i),i=>this.prepareResponse(i),i=>this.images=i,()=>this.onFetchError(),i=>["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(i.name),(i,_)=>{let r;switch(_.name){case"rbd/copy":r=new L.N(_.metadata.dest_pool_name,_.metadata.dest_namespace,_.metadata.dest_image_name).toString();break;case"rbd/clone":r=new L.N(_.metadata.child_pool_name,_.metadata.child_namespace,_.metadata.child_image_name).toString();break;case"rbd/create":r=new L.N(_.metadata.pool_name,_.metadata.namespace,_.metadata.image_name).toString();break;default:r=_.metadata.image_spec}return r===new L.N(i.pool_name,i.namespace,i.name).toString()},this.builders)}onFetchError(){this.table.reset(),this.tableStatus=new bt.c("danger")}getRbdImages(t){var o;return null!==t&&(this.tableContext=t),null==this.tableContext&&(this.tableContext=new A.E(()=>{})),this.rbdService.list(null===(o=this.tableContext)||void 0===o?void 0:o.toParams())}prepareResponse(t){let o=[];return t.forEach(i=>{o=o.concat(i.value)}),o.forEach(i=>{if(void 0!==i.schedule_info){let _=[];const r="scheduled";let c=+new Date(i.schedule_info.schedule_time);const d=(new Date).getTimezoneOffset();c+=6e4*Math.abs(d),_.push(i.mirror_mode,r,c),i.mirror_mode=_,_=[]}}),this.count=o.length>0?n_.getCount(t[0]):0,o}updateSelection(t){this.selection=t}deleteRbdModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().name,_=new L.N(t,o,i);this.modalRef=this.modalService.show(pe.M,{itemDescription:"RBD",itemNames:[_],bodyTemplate:this.deleteTpl,bodyContext:{hasSnapshots:this.hasSnapshots(),snapshots:this.listProtectedSnapshots()},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/delete",{image_spec:_.toString()}),call:this.rbdService.delete(_)})})}resyncRbdModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().name,_=new L.N(t,o,i);this.modalRef=this.modalService.show(pe.M,{itemDescription:"RBD",itemNames:[_],actionDescription:"resync",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/edit",{image_spec:_.toString()}),call:this.rbdService.update(_,{resync:!0})})})}trashRbdModal(){const t={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,hasSnapshots:this.hasSnapshots()};this.modalRef=this.modalService.show(c_,t)}flattenRbd(t){this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/flatten",{image_spec:t.toString()}),call:this.rbdService.flatten(t)}).subscribe({complete:()=>{this.modalRef.close()}})}flattenRbdModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().name,_=this.selection.first().parent,r=new L.N(_.pool_name,_.pool_namespace,_.image_name),c=new L.N(t,o,i),d={titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:`${r}@${_.snap_name}`,child:c.toString()},onSubmit:()=>{this.flattenRbd(c)}};this.modalRef=this.modalService.show(Nt.Y,d)}editRequest(){const t=new _t;return t.remove_scheduling=!t.remove_scheduling,t}removeSchedulingModal(){const t=this.selection.first().name,o=new L.N(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name);this.modalRef=this.modalService.show(pe.M,{actionDescription:"remove scheduling on",itemDescription:"image",itemNames:[`${t}`],submitActionObservable:()=>new Rt.y(i=>{this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/edit",{image_spec:o.toString()}),call:this.rbdService.update(o,this.editRequest())}).subscribe({error:_=>i.error(_),complete:()=>{this.modalRef.close()}})})})}actionPrimary(t){const o=new _t;o.primary=t;const i=new L.N(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name);this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/edit",{image_spec:i.toString()}),call:this.rbdService.update(i,o)}).subscribe()}hasSnapshots(){return(this.selection.first().snapshots||[]).length>0}hasClonedSnapshots(t){return(t.snapshots||[]).some(i=>i.children&&i.children.length>0)}listProtectedSnapshots(){return this.selection.first().snapshots.reduce((i,_)=>(_.is_protected&&i.push(_.name),i),[])}getDeleteDisableDesc(t){const o=t.first();return o&&this.hasClonedSnapshots(o)?"This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.":this.getInvalidNameDisable(t)||this.hasClonedSnapshots(t.first())}getResyncDisableDesc(t){const o=t.first();return o&&this.imageIsPrimary(o)?"Primary RBD images cannot be resynced":this.getInvalidNameDisable(t)}imageIsPrimary(t){return t.primary}getInvalidNameDisable(t){var o;const i=t.first();return(null===(o=null==i?void 0:i.name)||void 0===o?void 0:o.match(/[@/]/))?"This RBD image has an invalid name and can't be managed by ceph.":!t.first()||!t.hasSingleSelection}getRemovingStatusDesc(t){const o=t.first();return"REMOVING"===(null==o?void 0:o.source)&&"Action not possible for an RBD in status 'Removing'"}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(q),e.Y36(Le.$),e.Y36(ot.n),e.Y36(de.Z),e.Y36(u.P),e.Y36(ce.j),e.Y36(at.F),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(W.a,7),e.Gf(X_,5),e.Gf(Q_,7),e.Gf(z_,5),e.Gf(J_,7),e.Gf(Y_,7),e.Gf(V_,7),e.Gf(U_,7),e.Gf(j_,7),e.Gf(W_,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first),e.iGM(i=e.CRH())&&(o.usageTpl=i.first),e.iGM(i=e.CRH())&&(o.parentTpl=i.first),e.iGM(i=e.CRH())&&(o.nameTpl=i.first),e.iGM(i=e.CRH())&&(o.mirroringTpl=i.first),e.iGM(i=e.CRH())&&(o.flattenTpl=i.first),e.iGM(i=e.CRH())&&(o.deleteTpl=i.first),e.iGM(i=e.CRH())&&(o.removingStatTpl=i.first),e.iGM(i=e.CRH())&&(o.provisionedNotAvailableTooltipTpl=i.first),e.iGM(i=e.CRH())&&(o.totalProvisionedNotAvailableTooltipTpl=i.first)}},features:[e._Bn([ce.j,{provide:at.F,useValue:new at.F("block/rbd")}]),e.qOj],decls:21,vars:13,consts:function(){let s,t,o,i,_,r,c,d,g;return s="N/A",t="" + "\ufffd0\ufffd" + "",o="N/A",i="" + "\ufffd0\ufffd" + "",_="primary",r="secondary",c="Deleting this image will also delete all its snapshots.",d="The following snapshots are currently protected and will be removed:",g="RBD in status 'Removing'",[["columnMode","flex","identifier","unique_id","forceIdentifier","true","selectionType","single",3,"data","columns","searchableObjects","serverSide","count","hasDetails","status","maxLimit","autoReload","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["scheduleStatus",""],["provisionedNotAvailableTooltipTpl",""],["totalProvisionedNotAvailableTooltipTpl",""],["parentTpl",""],["mirroringTpl",""],["flattenTpl",""],["deleteTpl",""],["removingStatTpl",""],[3,"innerHtml"],["placement","top",3,"ngbTooltip",4,"ngIf","ngIfElse"],["provisioned",""],["placement","top",3,"ngbTooltip"],s,t,["totalProvisioned",""],o,i,[4,"ngIf"],["class","badge badge-info",4,"ngIf","ngIfElse"],["class","badge badge-info",3,"ngbTooltip",4,"ngIf"],["class","badge badge-info",4,"ngIf"],["probb",""],[1,"badge","badge-info"],[1,"badge","badge-info",3,"ngbTooltip"],_,r,["class","alert alert-warning","role","alert",4,"ngIf"],["role","alert",1,"alert","alert-warning"],c,d,[4,"ngFor","ngForOf"],[3,"ngClass",4,"ngIf"],[3,"ngClass"],["title",g,3,"class",4,"ngIf"],["title",g]]},template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0,1),e.NdJ("fetchData",function(_){return o.taskListService.fetch(_)})("setExpandedRow",function(_){return o.setExpandedRow(_)})("updateSelection",function(_){return o.updateSelection(_)}),e._UZ(3,"cd-table-actions",2),e._UZ(4,"cd-rbd-details",3),e.qZA(),e.YNc(5,ea,1,1,"ng-template",null,4,e.W1O),e.YNc(7,na,3,2,"ng-template",null,5,e.W1O),e.YNc(9,_a,3,2,"ng-template",null,6,e.W1O),e.YNc(11,ca,2,2,"ng-template",null,7,e.W1O),e.YNc(13,Ta,7,5,"ng-template",null,8,e.W1O),e.YNc(15,fa,13,3,"ng-template",null,9,e.W1O),e.YNc(17,Ra,1,1,"ng-template",null,10,e.W1O),e.YNc(19,Pa,5,5,"ng-template",null,11,e.W1O)),2&t&&(e.xp6(1),e.Q6J("data",o.images)("columns",o.columns)("searchableObjects",!0)("serverSide",!0)("count",o.count)("hasDetails",!0)("status",o.tableStatus)("maxLimit",25)("autoReload",-1),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("selection",o.expandedRow))},directives:[We,W.a,Ee.K,K_,l.O5,N._L,l.sg,l.mk],pipes:[Le.$,Ze.N],styles:[".warn[_ngcontent-%COMP%]{color:#ffc200}"]}),n})();function Na(n,s){1&n&&e._UZ(0,"input",19)}function Fa(n,s){1&n&&(e.TgZ(0,"option",23),e.SDv(1,24),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Da(n,s){1&n&&(e.TgZ(0,"option",23),e.SDv(1,25),e.qZA()),2&n&&e.Q6J("ngValue",null)}function va(n,s){1&n&&(e.TgZ(0,"option",23),e.SDv(1,26),e.qZA()),2&n&&e.Q6J("ngValue",null)}function La(n,s){if(1&n&&(e.TgZ(0,"option",27),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function $a(n,s){if(1&n&&(e.TgZ(0,"select",20),e.YNc(1,Fa,2,1,"option",21),e.YNc(2,Da,2,1,"option",21),e.YNc(3,va,2,1,"option",21),e.YNc(4,La,2,2,"option",22),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",null!==t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.pools)}}function Za(n,s){1&n&&(e.TgZ(0,"span",28),e.SDv(1,29),e.qZA())}function Ba(n,s){1&n&&(e.TgZ(0,"span",28),e.SDv(1,30),e.qZA())}function Ga(n,s){1&n&&(e.TgZ(0,"span",28),e.SDv(1,31),e.qZA())}let ya=(()=>{class n{constructor(t,o,i,_,r,c){this.activeModal=t,this.actionLabels=o,this.authStorageService=i,this.notificationService=_,this.poolService=r,this.rbdService=c,this.pools=null,this.editing=!1,this.poolPermission=this.authStorageService.getPermissions().pool,this.createForm()}createForm(){this.namespaceForm=new x.d({pool:new a.NI(""),namespace:new a.NI("")},this.validator(),this.asyncValidator())}validator(){return t=>{const o=t.get("pool"),i=t.get("namespace");let _=null;o.value||(_={required:!0}),o.setErrors(_);let r=null;return i.value||(r={required:!0}),i.setErrors(r),null}}asyncValidator(){return t=>new Promise(o=>{const i=t.get("pool"),_=t.get("namespace");this.rbdService.listNamespaces(i.value).subscribe(r=>{if(r.some(c=>c.namespace===_.value)){const c={namespaceExists:!0};_.setErrors(c),o(c)}else o(null)})})}ngOnInit(){this.onSubmit=new vt.xQ,this.poolPermission.read&&this.poolService.list(["pool_name","type","application_metadata"]).then(t=>{const o=[];for(const i of t)this.rbdService.isRBDPool(i)&&"replicated"===i.type&&o.push(i);if(this.pools=o,1===this.pools.length){const i=this.pools[0].pool_name;this.namespaceForm.get("pool").setValue(i)}})}submit(){const t=this.namespaceForm.getValue("pool"),o=this.namespaceForm.getValue("namespace"),i=new R.R;i.name="rbd/namespace/create",i.metadata={pool:t,namespace:o},this.rbdService.createNamespace(t,o).toPromise().then(()=>{this.notificationService.show(tt.k.success,"Created namespace '" + t + "/" + o + "'"),this.activeModal.close(),this.onSubmit.next()}).catch(()=>{this.namespaceForm.setErrors({cdSubmitButton:!0})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(N.Kz),e.Y36(v.p4),e.Y36(oe.j),e.Y36(ve.g),e.Y36(Ve.q),e.Y36(q))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-namespace-form-modal"]],decls:23,vars:9,consts:function(){let s,t,o,i,_,r,c,d,g;return s="Create Namespace",t="Pool",o="Name",i="Loading...",_="-- No rbd pools available --",r="-- Select a pool --",c="This field is required.",d="This field is required.",g="Namespace already exists.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","namespaceForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","pool",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["class","form-control","type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",4,"ngIf"],["id","pool","name","pool","class","form-control","formControlName","pool",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["for","namespace",1,"cd-col-form-label","required"],o,["type","text","placeholder","Namespace name...","id","namespace","name","namespace","formControlName","namespace","autofocus","",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["type","text","placeholder","Pool name...","id","pool","name","pool","formControlName","pool",1,"form-control"],["id","pool","name","pool","formControlName","pool",1,"form-control"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],i,_,r,[3,"value"],[1,"invalid-feedback"],c,d,g]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.YNc(11,Na,1,0,"input",11),e.YNc(12,$a,5,4,"select",12),e.YNc(13,Za,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",14),e.SDv(16,15),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",16),e.YNc(19,Ba,2,0,"span",13),e.YNc(20,Ga,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(21,"div",17),e.TgZ(22,"cd-form-button-panel",18),e.NdJ("submitActionEvent",function(){return o.submit()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.namespaceForm),e.xp6(7),e.Q6J("ngIf",!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.namespaceForm.showError("pool",i,"required")),e.xp6(6),e.Q6J("ngIf",o.namespaceForm.showError("namespace",i,"required")),e.xp6(1),e.Q6J("ngIf",o.namespaceForm.showError("namespace",i,"namespaceExists")),e.xp6(2),e.Q6J("form",o.namespaceForm)("submitText",o.actionLabels.CREATE)}},directives:[C.z,a._Y,a.JL,a.sg,h.V,O.P,l.O5,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,j.p,a.EJ,l.sg,a.YN,a.Kr],styles:[""]}),n})(),xa=(()=>{class n{constructor(t,o,i,_,r,c){this.authStorageService=t,this.rbdService=o,this.poolService=i,this.modalService=_,this.notificationService=r,this.actionLabels=c,this.selection=new Se.r,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"create",icon:T.P.add,click:()=>this.createModal(),name:this.actionLabels.CREATE},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE,disable:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:"Namespace",prop:"namespace",flexGrow:1},{name:"Pool",prop:"pool",flexGrow:1},{name:"Total images",prop:"num_images",flexGrow:1}],this.refresh()}refresh(){this.poolService.list(["pool_name","type","application_metadata"]).then(t=>{t=t.filter(i=>this.rbdService.isRBDPool(i)&&"replicated"===i.type);const o=[];t.forEach(i=>{o.push(this.rbdService.listNamespaces(i.pool_name))}),o.length>0?(0,le.D)(o).subscribe(i=>{const _=[];for(let r=0;r<i.length;r++){const d=t[r].pool_name;i[r].forEach(g=>{_.push({id:`${d}/${g.namespace}`,pool:d,namespace:g.namespace,num_images:g.num_images})})}this.namespaces=_}):this.namespaces=[]})}updateSelection(t){this.selection=t}createModal(){this.modalRef=this.modalService.show(ya),this.modalRef.componentInstance.onSubmit.subscribe(()=>{this.refresh()})}deleteModal(){const t=this.selection.first().pool,o=this.selection.first().namespace;this.modalRef=this.modalService.show(pe.M,{itemDescription:"Namespace",itemNames:[`${t}/${o}`],submitAction:()=>this.rbdService.deleteNamespace(t,o).subscribe(()=>{this.notificationService.show(tt.k.success,"Deleted namespace '" + t + "/" + o + "'"),this.modalRef.close(),this.refresh()},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})})}getDeleteDisableDesc(){var t;const o=this.selection.first();return(null==o?void 0:o.num_images)>0?"Namespace contains images":!(null===(t=this.selection)||void 0===t?void 0:t.first())}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(q),e.Y36(Ve.q),e.Y36(de.Z),e.Y36(ve.g),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-namespace-list"]],features:[e._Bn([ce.j])],decls:4,vars:5,consts:[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","fetchData","updateSelection"],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"]],template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0),e.NdJ("fetchData",function(){return o.refresh()})("updateSelection",function(_){return o.updateSelection(_)}),e.TgZ(2,"div",1),e._UZ(3,"cd-table-actions",2),e.qZA(),e.qZA()),2&t&&(e.xp6(1),e.Q6J("data",o.namespaces)("columns",o.columns),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[We,W.a,Ee.K],styles:[""]}),n})(),wa=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-performance"]],decls:2,vars:2,consts:[["uid","41FrpeUiz","grafanaStyle","two",3,"grafanaPath","type"]],template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e._UZ(1,"cd-grafana",0)),2&t&&(e.xp6(1),e.Q6J("grafanaPath","rbd-overview?")("type","metrics"))},directives:[We,Lt.F],styles:[""]}),n})();var qa=p(91801);function Ha(n,s){1&n&&e._UZ(0,"input",15)}function ka(n,s){if(1&n&&(e.TgZ(0,"option",20),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Ka(n,s){if(1&n&&(e.TgZ(0,"select",16),e.TgZ(1,"option",17),e.SDv(2,18),e.qZA(),e.YNc(3,ka,2,2,"option",19),e.qZA()),2&n){const t=e.oxw();e.xp6(3),e.Q6J("ngForOf",t.pools)}}let Xa=(()=>{class n{constructor(t,o,i,_,r,c,d){this.authStorageService=t,this.rbdService=o,this.activeModal=i,this.actionLabels=_,this.fb=r,this.poolService=c,this.taskWrapper=d,this.poolPermission=this.authStorageService.getPermissions().pool}createForm(){this.purgeForm=this.fb.group({poolName:""})}ngOnInit(){this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(t=>{this.pools=t.filter(o=>o.application_metadata.includes("rbd")).map(o=>o.pool_name)}),this.createForm()}purge(){const t=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/trash/purge",{pool_name:t}),call:this.rbdService.purgeTrash(t)}).subscribe({error:()=>{this.purgeForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(q),e.Y36(N.Kz),e.Y36(v.p4),e.Y36(rt.O),e.Y36(Ve.q),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-purge-modal"]],decls:18,vars:6,consts:function(){let s,t,o,i,_;return s="Purge Trash",t="To purge, select\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "All" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + "\xA0 or one pool and click\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "Purge" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ".\xA0",t=e.Zx4(t),o="Pool:",i="Pool name...",_="All",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","purgeForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],[1,"col-form-label","mx-auto"],o,["class","form-control","type","text","placeholder",i,"formControlName","poolName",4,"ngIf"],["id","poolName","name","poolName","class","form-control","formControlName","poolName",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["type","text","placeholder",i,"formControlName","poolName",1,"form-control"],["id","poolName","name","poolName","formControlName","poolName",1,"form-control"],["value",""],_,[3,"value",4,"ngFor","ngForOf"],[3,"value"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"kbd"),e._UZ(10,"kbd"),e.N_p(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e.YNc(14,Ha,1,0,"input",11),e.YNc(15,Ka,4,1,"select",12),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.purge()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.purgeForm),e.xp6(10),e.Q6J("ngIf",!o.poolPermission.read),e.xp6(1),e.Q6J("ngIf",o.poolPermission.read),e.xp6(2),e.Q6J("form",o.purgeForm)("submitText",o.actionLabels.PURGE))},directives:[C.z,a._Y,a.JL,a.sg,h.V,O.P,l.O5,j.p,$.o,a.Fj,k.b,a.JJ,a.u,a.EJ,a.YN,a.Kr,l.sg],styles:[""]}),n})();function Qa(n,s){1&n&&(e.TgZ(0,"span",15),e.SDv(1,16),e.qZA())}let za=(()=>{class n{constructor(t,o,i,_,r){this.rbdService=t,this.activeModal=o,this.actionLabels=i,this.fb=_,this.taskWrapper=r}ngOnInit(){this.imageSpec=new L.N(this.poolName,this.namespace,this.imageName).toString(),this.restoreForm=this.fb.group({name:this.imageName})}restore(){const t=this.restoreForm.getValue("name"),o=new L.N(this.poolName,this.namespace,this.imageId);this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/trash/restore",{image_id_spec:o.toString(),new_image_name:t}),call:this.rbdService.restoreTrash(o,t)}).subscribe({error:()=>{this.restoreForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(q),e.Y36(N.Kz),e.Y36(v.p4),e.Y36(rt.O),e.Y36(u.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-restore-modal"]],decls:18,vars:7,consts:function(){let s,t,o,i;return s="Restore Image",t="To restore\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "" + "\ufffd0\ufffd" + "@" + "\ufffd1\ufffd" + "" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ",\xA0 type the image's new name and click\xA0 " + "[\ufffd#9\ufffd|\ufffd#10\ufffd]" + "Restore" + "[\ufffd/#9\ufffd|\ufffd/#10\ufffd]" + ".",t=e.Zx4(t),o="New Name",i="This field is required.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","restoreForm","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],t,[1,"form-group"],["for","name",1,"col-form-label"],o,["type","text","name","name","id","name","autocomplete","off","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],i]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"kbd"),e._UZ(10,"kbd"),e.N_p(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"label",9),e.SDv(13,10),e.qZA(),e._UZ(14,"input",11),e.YNc(15,Qa,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.restore()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const i=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.restoreForm),e.xp6(6),e.pQV(o.imageSpec)(o.imageId),e.QtT(8),e.xp6(5),e.Q6J("ngIf",o.restoreForm.showError("name",i,"required")),e.xp6(2),e.Q6J("form",o.restoreForm)("submitText",o.actionLabels.RESTORE)}},directives:[C.z,a._Y,a.JL,a.sg,h.V,O.P,$.o,a.Fj,k.b,a.JJ,a.u,Re.U,l.O5,j.p],styles:[""]}),n})();const Ja=["expiresTpl"],Ya=["deleteTpl"],Va=function(n){return[n]};function Ua(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"button",6),e.NdJ("click",function(){return e.CHM(t),e.oxw().purgeModal()}),e._UZ(1,"i",7),e.ynx(2),e.SDv(3,8),e.BQk(),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("disabled",t.disablePurgeBtn),e.xp6(1),e.Q6J("ngClass",e.VKq(2,Va,t.icons.destroy))}}function ja(n,s){1&n&&(e.ynx(0),e.SDv(1,10),e.BQk())}function Wa(n,s){1&n&&(e.ynx(0),e.SDv(1,11),e.BQk())}function er(n,s){if(1&n&&(e.YNc(0,ja,2,0,"ng-container",9),e.YNc(1,Wa,2,0,"ng-container",9),e._uU(2),e.ALo(3,"cdDate")),2&n){const t=s.row,o=s.value;e.Q6J("ngIf",t.cdIsExpired),e.xp6(1),e.Q6J("ngIf",!t.cdIsExpired),e.xp6(1),e.hij(" ",e.lcZ(3,3,o),"\n")}}function tr(n,s){if(1&n&&(e.TgZ(0,"p",13),e.TgZ(1,"strong"),e.ynx(2),e.SDv(3,14),e.ALo(4,"cdDate"),e.BQk(),e.qZA(),e.qZA()),2&n){const t=e.oxw().expiresAt;e.xp6(4),e.pQV(e.lcZ(4,1,t)),e.QtT(3)}}function or(n,s){1&n&&e.YNc(0,tr,5,3,"p",12),2&n&&e.Q6J("ngIf",!s.isExpired)}let nr=(()=>{class n{constructor(t,o,i,_,r,c,d){this.authStorageService=t,this.rbdService=o,this.modalService=i,this.cdDatePipe=_,this.taskListService=r,this.taskWrapper=c,this.actionLabels=d,this.icons=T.P,this.executingTasks=[],this.selection=new Se.r,this.tableStatus=new se.E,this.disablePurgeBtn=!0,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"update",icon:T.P.undo,click:()=>this.restoreModal(),name:this.actionLabels.RESTORE},{permission:"delete",icon:T.P.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"ID",prop:"id",flexGrow:1,cellTransformation:De.e.executing},{name:"Name",prop:"name",flexGrow:1},{name:"Pool",prop:"pool_name",flexGrow:1},{name:"Namespace",prop:"namespace",flexGrow:1},{name:"Status",prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:"Deleted At",prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(()=>this.rbdService.listTrash(),i=>this.prepareResponse(i),i=>this.images=i,()=>this.onFetchError(),i=>["rbd/trash/remove","rbd/trash/restore"].includes(i.name),(i,_)=>new L.N(i.pool_name,i.namespace,i.id).toString()===_.metadata.image_id_spec,void 0)}prepareResponse(t){let o=[];const i={};let _;if(t.forEach(r=>{S().isUndefined(i[r.status])&&(i[r.status]=[]),i[r.status].push(r.pool_name),o=o.concat(r.value),this.disablePurgeBtn=!o.length}),i[3]?_=3:i[1]?_=1:i[2]&&(_=2),_){const r=(i[_].length>1?"pools ":"pool ")+i[_].join();this.tableStatus=new se.E(_,r)}else this.tableStatus=new se.E;return o.forEach(r=>{r.cdIsExpired=Me()().isAfter(r.deferment_end_time)}),o}onFetchError(){this.table.reset(),this.tableStatus=new se.E(qa.T.ValueException)}updateSelection(t){this.selection=t}restoreModal(){const t={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(za,t)}deleteModal(){const t=this.selection.first().pool_name,o=this.selection.first().namespace,i=this.selection.first().id,_=this.selection.first().deferment_end_time,r=Me()().isAfter(_),c=new L.N(t,o,i);this.modalRef=this.modalService.show(pe.M,{itemDescription:"RBD",itemNames:[c],bodyTemplate:this.deleteTpl,bodyContext:{expiresAt:_,isExpired:r},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new R.R("rbd/trash/remove",{image_id_spec:c.toString()}),call:this.rbdService.removeTrash(c,!0)})})}purgeModal(){this.modalService.show(Xa)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(oe.j),e.Y36(q),e.Y36(de.Z),e.Y36(Ze.N),e.Y36(ce.j),e.Y36(u.P),e.Y36(v.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rbd-trash-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(W.a,7),e.Gf(Ja,7),e.Gf(Ya,7)),2&t){let i;e.iGM(i=e.CRH())&&(o.table=i.first),e.iGM(i=e.CRH())&&(o.expiresTpl=i.first),e.iGM(i=e.CRH())&&(o.deleteTpl=i.first)}},features:[e._Bn([ce.j])],decls:9,vars:8,consts:function(){let s,t,o,i;return s="Purge Trash",t="Expired at",o="Protected until",i="This image is protected until " + "\ufffd0\ufffd" + ".",[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","status","autoReload","fetchData","updateSelection"],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["class","btn btn-light","type","button",3,"disabled","click",4,"ngIf"],["expiresTpl",""],["deleteTpl",""],["type","button",1,"btn","btn-light",3,"disabled","click"],["aria-hidden","true",3,"ngClass"],s,[4,"ngIf"],t,o,["class","text-danger",4,"ngIf"],[1,"text-danger"],i]},template:function(t,o){1&t&&(e._UZ(0,"cd-rbd-tabs"),e.TgZ(1,"cd-table",0),e.NdJ("fetchData",function(){return o.taskListService.fetch()})("updateSelection",function(_){return o.updateSelection(_)}),e.TgZ(2,"div",1),e._UZ(3,"cd-table-actions",2),e.YNc(4,Ua,4,4,"button",3),e.qZA(),e.qZA(),e.YNc(5,er,4,5,"ng-template",null,4,e.W1O),e.YNc(7,or,1,1,"ng-template",null,5,e.W1O)),2&t&&(e.xp6(1),e.Q6J("data",o.images)("columns",o.columns)("status",o.tableStatus)("autoReload",-1),e.xp6(2),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("ngIf",o.permission.delete))},directives:[We,W.a,Ee.K,l.O5,$.o,l.mk],pipes:[Ze.N],styles:[""]}),n})(),$t=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[l.ez,ni,a.u5,a.UX,N.Oz,N.dT,N.HK,Ie.b,Ae.m,m.Bz,ne.xc]]}),n})();const ir=[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[U.T,re.P],data:{moduleStatusGuardConfig:{uiApiPath:"block/rbd",redirectTo:"error",header:"No RBD pools available",button_name:"Create RBD pool",button_route:"/pool/create"},breadcrumbs:"Images"},children:[{path:"",component:ba},{path:"namespaces",component:xa,data:{breadcrumbs:"Namespaces"}},{path:"trash",component:nr,data:{breadcrumbs:"Trash"}},{path:"performance",component:wa,data:{breadcrumbs:"Overall Performance"}},{path:v.MQ.CREATE,component:$e,data:{breadcrumbs:v.Qn.CREATE}},{path:`${v.MQ.EDIT}/:image_spec`,component:$e,data:{breadcrumbs:v.Qn.EDIT}},{path:`${v.MQ.CLONE}/:image_spec/:snap`,component:$e,data:{breadcrumbs:v.Qn.CLONE}},{path:`${v.MQ.COPY}/:image_spec`,component:$e,data:{breadcrumbs:v.Qn.COPY}},{path:`${v.MQ.COPY}/:image_spec/:snap`,component:$e,data:{breadcrumbs:v.Qn.COPY}}]},{path:"mirroring",component:Vi,canActivate:[U.T,re.P],data:{moduleStatusGuardConfig:{uiApiPath:"block/mirroring",redirectTo:"error",header:"RBD mirroring is not configured",button_name:"Configure RBD Mirroring",button_title:"This will create rbd-mirror service and a replicated RBD pool",component:"RBD Mirroring",uiConfig:!0},breadcrumbs:"Mirroring"},children:[{path:`${v.MQ.EDIT}/:pool_name`,component:es,outlet:"modal"}]},{path:"iscsi",canActivate:[U.T],data:{breadcrumbs:"iSCSI"},children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:oi,data:{breadcrumbs:"Overview"}},{path:"targets",data:{breadcrumbs:"Targets"},children:[{path:"",component:qn},{path:v.MQ.CREATE,component:ut,data:{breadcrumbs:v.Qn.CREATE}},{path:`${v.MQ.EDIT}/:target_iqn`,component:ut,data:{breadcrumbs:v.Qn.EDIT}}]}]}];let sr=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[$t,m.Bz.forChild(ir)]]}),n})()},54555:(ct,Oe,p)=>{p.d(Oe,{d:()=>z});var l=p(74788),a=p(24751),m=p(23815),ne=p.n(m),N=p(80226),Ie=p(65862),v=p(95463),U=p(30633),re=p(28211),Ae=p(34089),be=p(41582),S=p(12057),le=p(56310),D=p(18372),ie=p(87925),V=p(94276);let e=(()=>{class A{constructor(u,C){this.control=u,this.formatter=C}setValue(u){const C=this.formatter.toMilliseconds(u);this.control.control.setValue(`${C} ms`)}ngOnInit(){this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.control.value))}onUpdate(u){this.setValue(u)}}return A.\u0275fac=function(u){return new(u||A)(l.Y36(a.a5),l.Y36(re.H))},A.\u0275dir=l.lG2({type:A,selectors:[["","cdMilliseconds",""]],hostBindings:function(u,C){1&u&&l.NdJ("blur",function(O){return C.onUpdate(O.target.value)})},inputs:{ngDataReady:"ngDataReady"}}),A})();var X=p(20044);let Ne=(()=>{class A{constructor(u,C,h,O){this.elementRef=u,this.control=C,this.dimlessBinaryPerSecondPipe=h,this.formatter=O,this.ngModelChange=new l.vpe,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.el.value))}setValue(u){/^[\d.]+$/.test(u)&&(u+=this.defaultUnit||"m");const C=this.formatter.toBytes(u,0),h=this.round(C);this.el.value=this.dimlessBinaryPerSecondPipe.transform(h),null!==C?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(u){if(null!==u&&0!==u){if(!ne().isUndefined(this.minBytes)&&u<this.minBytes)return this.minBytes;if(!ne().isUndefined(this.maxBytes)&&u>this.maxBytes)return this.maxBytes;if(!ne().isUndefined(this.roundPower)){const C=Math.round(Math.log(u)/Math.log(this.roundPower));return Math.pow(this.roundPower,C)}}return u}onBlur(u){this.setValue(u)}}return A.\u0275fac=function(u){return new(u||A)(l.Y36(l.SBq),l.Y36(a.a5),l.Y36(X.O),l.Y36(re.H))},A.\u0275dir=l.lG2({type:A,selectors:[["","cdDimlessBinaryPerSecond",""]],hostBindings:function(u,C){1&u&&l.NdJ("blur",function(O){return C.onBlur(O.target.value)})},inputs:{ngDataReady:"ngDataReady",minBytes:"minBytes",maxBytes:"maxBytes",roundPower:"roundPower",defaultUnit:"defaultUnit"},outputs:{ngModelChange:"ngModelChange"}}),A})(),Fe=(()=>{class A{constructor(u,C){this.formatter=u,this.ngControl=C}setValue(u){const C=this.formatter.toIops(u);this.ngControl.control.setValue(`${C} IOPS`)}ngOnInit(){this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.ngControl.value))}onUpdate(u){this.setValue(u)}}return A.\u0275fac=function(u){return new(u||A)(l.Y36(re.H),l.Y36(a.a5))},A.\u0275dir=l.lG2({type:A,selectors:[["","cdIops",""]],hostBindings:function(u,C){1&u&&l.NdJ("blur",function(O){return C.onUpdate(O.target.value)})},inputs:{ngDataReady:"ngDataReady"}}),A})();function L(A,R){if(1&A&&(l.ynx(0),l._UZ(1,"input",18),l.BQk()),2&A){const u=l.oxw().$implicit,C=l.oxw(2);l.xp6(1),l.Q6J("id",u.name)("name",u.name)("formControlName",u.name)("ngDataReady",C.ngDataReady)}}function he(A,R){if(1&A&&(l.ynx(0),l._UZ(1,"input",19),l.BQk()),2&A){const u=l.oxw().$implicit,C=l.oxw(2);l.xp6(1),l.Q6J("id",u.name)("name",u.name)("formControlName",u.name)("ngDataReady",C.ngDataReady)}}function q(A,R){if(1&A&&(l.ynx(0),l._UZ(1,"input",20),l.BQk()),2&A){const u=l.oxw().$implicit,C=l.oxw(2);l.xp6(1),l.Q6J("id",u.name)("name",u.name)("formControlName",u.name)("ngDataReady",C.ngDataReady)}}function F(A,R){1&A&&(l.TgZ(0,"span",21),l.SDv(1,22),l.qZA())}const y=function(A){return{active:A}},T=function(A){return[A]};function H(A,R){if(1&A){const u=l.EpF();l.TgZ(0,"div",10),l.TgZ(1,"label",11),l._uU(2),l.TgZ(3,"cd-helper"),l._uU(4),l.qZA(),l.qZA(),l.TgZ(5,"div"),l.TgZ(6,"div",12),l.ynx(7,13),l.YNc(8,L,2,4,"ng-container",14),l.YNc(9,he,2,4,"ng-container",14),l.YNc(10,q,2,4,"ng-container",14),l.BQk(),l.TgZ(11,"span",15),l.TgZ(12,"button",16),l.NdJ("click",function(){const O=l.CHM(u).$implicit;return l.oxw(2).reset(O.name)}),l._UZ(13,"i",7),l.qZA(),l.qZA(),l.qZA(),l.YNc(14,F,2,0,"span",17),l.qZA(),l.qZA()}if(2&A){const u=R.$implicit,C=l.oxw().$implicit,h=l.oxw(),O=l.MAs(1);l.xp6(1),l.Q6J("for",u.name),l.xp6(1),l.Oqu(u.displayName),l.xp6(2),l.Oqu(u.description),l.xp6(1),l.Gre("cd-col-form-input ",C.heading,""),l.xp6(2),l.Q6J("ngSwitch",u.type),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.milliseconds),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.bps),l.xp6(1),l.Q6J("ngSwitchCase",h.configurationType.iops),l.xp6(2),l.Q6J("ngClass",l.VKq(13,y,h.isDisabled(u.name))),l.xp6(1),l.Q6J("ngClass",l.VKq(15,T,h.icons.erase)),l.xp6(1),l.Q6J("ngIf",h.form.showError("configuration."+u.name,O,"min"))}}function x(A,R){if(1&A){const u=l.EpF();l.TgZ(0,"div",4),l.TgZ(1,"h4",5),l.TgZ(2,"span",6),l.NdJ("click",function(){const O=l.CHM(u).$implicit;return l.oxw().toggleSectionVisibility(O.class)}),l._uU(3),l._UZ(4,"i",7),l.qZA(),l.qZA(),l.TgZ(5,"div",8),l.YNc(6,H,15,17,"div",9),l.qZA(),l.qZA()}if(2&A){const u=R.$implicit,C=l.oxw();l.xp6(3),l.hij(" ",u.heading," "),l.xp6(1),l.Q6J("ngClass",C.sectionVisibility[u.class]?C.icons.minusCircle:C.icons.addCircle),l.xp6(1),l.Tol(u.class),l.Q6J("hidden",!C.sectionVisibility[u.class]),l.xp6(1),l.Q6J("ngForOf",u.options)}}let z=(()=>{class A{constructor(u,C){this.formatterService=u,this.rbdConfigurationService=C,this.initializeData=new N.t(1),this.changes=new l.vpe,this.icons=Ie.P,this.ngDataReady=new l.vpe,this.configurationType=U.r,this.sectionVisibility={}}ngOnInit(){const u=this.createConfigurationFormGroup();this.form.addControl("configuration",u),u.valueChanges.subscribe(()=>{this.changes.emit(this.getDirtyValues.bind(this))}),this.initializeData&&this.initializeData.subscribe(C=>{this.initialData=C.initialData;const h=C.sourceType;this.rbdConfigurationService.getWritableOptionFields().forEach(O=>{const $=C.initialData.filter(k=>k.name===O.name).pop();$&&$.source===h&&this.form.get(`configuration.${O.name}`).setValue($.value)}),this.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(C=>this.sectionVisibility[C.class]=!1)}getDirtyValues(u=!1,C){if(u&&!C)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");const h={};return this.rbdConfigurationService.getWritableOptionFields().forEach(O=>{const $=this.form.get("configuration").get(O.name);this.initialData&&this.initialData[O.name]===$.value||($.dirty||u&&$.source===C)&&(h[O.name]=null===$.value?$.value:O.type===U.r.bps?this.formatterService.toBytes($.value):O.type===U.r.milliseconds?this.formatterService.toMilliseconds($.value):O.type===U.r.iops?this.formatterService.toIops($.value):$.value)}),h}createConfigurationFormGroup(){const u=new v.d({});return this.rbdConfigurationService.getWritableOptionFields().forEach(C=>{let h;if(C.type!==U.r.milliseconds&&C.type!==U.r.iops&&C.type!==U.r.bps)throw new Error(`Type ${C.type} is unknown, you may need to add it to RbdConfiguration class`);{let O=0;ne().forEach(this.initialData,$=>{$.name===C.name&&(O=$.value)}),h=new a.NI(O,a.kI.min(0))}u.addControl(C.name,h)}),u}reset(u){const C=this.form.get("configuration").get(u);C.disabled?(C.setValue(C.previousValue||0),C.enable(),C.previousValue||C.markAsPristine()):(C.previousValue=C.value,C.setValue(null),C.markAsDirty(),C.disable())}isDisabled(u){return this.form.get("configuration").get(u).disabled}toggleSectionVisibility(u){this.sectionVisibility[u]=!this.sectionVisibility[u]}}return A.\u0275fac=function(u){return new(u||A)(l.Y36(re.H),l.Y36(Ae.n))},A.\u0275cmp=l.Xpm({type:A,selectors:[["cd-rbd-configuration-form"]],inputs:{form:"form",initializeData:"initializeData"},outputs:{changes:"changes"},decls:5,vars:2,consts:function(){let R,u,C;return R="RBD Configuration",u="Remove the local configuration value. The parent configuration value will be inherited and used instead.",C="The minimum value is 0",[[3,"formGroup"],["cfgFormGroup",""],R,["class","col-12",4,"ngFor","ngForOf"],[1,"col-12"],[1,"cd-header"],[1,"collapsible",3,"click"],["aria-hidden","true",3,"ngClass"],[3,"hidden"],["class","form-group row",4,"ngFor","ngForOf"],[1,"form-group","row"],[1,"cd-col-form-label",3,"for"],[1,"input-group"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"input-group-append"],["type","button","data-toggle","button","title",u,1,"btn","btn-light",3,"ngClass","click"],["class","invalid-feedback",4,"ngIf"],["type","text","cdMilliseconds","",1,"form-control",3,"id","name","formControlName","ngDataReady"],["type","text","defaultUnit","b","cdDimlessBinaryPerSecond","",1,"form-control",3,"id","name","formControlName","ngDataReady"],["type","text","cdIops","",1,"form-control",3,"id","name","formControlName","ngDataReady"],[1,"invalid-feedback"],C]},template:function(u,C){1&u&&(l.TgZ(0,"fieldset",0,1),l.TgZ(2,"legend"),l.SDv(3,2),l.qZA(),l.YNc(4,x,7,7,"div",3),l.qZA()),2&u&&(l.Q6J("formGroup",C.form.get("configuration")),l.xp6(4),l.Q6J("ngForOf",C.rbdConfigurationService.sections))},directives:[a.JL,a.sg,be.V,S.sg,S.mk,le.P,D.S,S.RF,S.n9,ie.o,S.O5,a.Fj,V.b,e,a.JJ,a.u,Ne,Fe],styles:[".collapsible[_ngcontent-%COMP%]{cursor:pointer;user-select:none}"]}),A})()},71752:(ct,Oe,p)=>{p.d(Oe,{P:()=>q});var l=p(35905),a=p(30633),m=p(74788);let ne=(()=>{class F{transform(T){return{0:"global",1:"pool",2:"image"}[T]}}return F.\u0275fac=function(T){return new(T||F)},F.\u0275pipe=m.Yjl({name:"rbdConfigurationSource",type:F,pure:!0}),F})();var N=p(28211),Ie=p(34089),v=p(12057),U=p(20044),re=p(48537),Ae=p(21766);const be=["configurationSourceTpl"],S=["configurationValueTpl"],le=["poolConfTable"];function D(F,y){1&F&&(m.TgZ(0,"span"),m.SDv(1,6),m.qZA())}function ie(F,y){1&F&&(m.TgZ(0,"strong"),m.SDv(1,7),m.qZA())}function V(F,y){1&F&&(m.TgZ(0,"strong"),m.SDv(1,8),m.qZA())}function e(F,y){1&F&&(m.TgZ(0,"div",4),m.YNc(1,D,2,0,"span",5),m.YNc(2,ie,2,0,"strong",5),m.YNc(3,V,2,0,"strong",5),m.qZA()),2&F&&(m.Q6J("ngSwitch",y.value),m.xp6(1),m.Q6J("ngSwitchCase","global"),m.xp6(1),m.Q6J("ngSwitchCase","image"),m.xp6(1),m.Q6J("ngSwitchCase","pool"))}function X(F,y){if(1&F&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"dimlessBinaryPerSecond"),m.qZA()),2&F){const T=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,T))}}function Ne(F,y){if(1&F&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"milliseconds"),m.qZA()),2&F){const T=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,T))}}function Fe(F,y){if(1&F&&(m.TgZ(0,"span"),m._uU(1),m.ALo(2,"iops"),m.qZA()),2&F){const T=m.oxw().value;m.xp6(1),m.Oqu(m.lcZ(2,1,T))}}function L(F,y){if(1&F&&(m.TgZ(0,"span"),m._uU(1),m.qZA()),2&F){const T=m.oxw().value;m.xp6(1),m.Oqu(T)}}function he(F,y){if(1&F&&(m.TgZ(0,"div",4),m.YNc(1,X,3,3,"span",5),m.YNc(2,Ne,3,3,"span",5),m.YNc(3,Fe,3,3,"span",5),m.YNc(4,L,2,1,"span",9),m.qZA()),2&F){const T=y.row,H=m.oxw();m.Q6J("ngSwitch",T.type),m.xp6(1),m.Q6J("ngSwitchCase",H.typeField.bps),m.xp6(1),m.Q6J("ngSwitchCase",H.typeField.milliseconds),m.xp6(1),m.Q6J("ngSwitchCase",H.typeField.iops)}}let q=(()=>{class F{constructor(T,H){this.formatterService=T,this.rbdConfigurationService=H,this.sourceField=a.h,this.typeField=a.r}ngOnInit(){this.poolConfigurationColumns=[{prop:"displayName",name:"Name"},{prop:"description",name:"Description"},{prop:"name",name:"Key"},{prop:"source",name:"Source",cellTemplate:this.configurationSourceTpl,pipe:new ne},{prop:"value",name:"Value",cellTemplate:this.configurationValueTpl}]}ngOnChanges(){!this.data||(this.data=this.data.filter(T=>this.rbdConfigurationService.getOptionFields().map(H=>H.name).includes(T.name)))}}return F.\u0275fac=function(T){return new(T||F)(m.Y36(N.H),m.Y36(Ie.n))},F.\u0275cmp=m.Xpm({type:F,selectors:[["cd-rbd-configuration-table"]],viewQuery:function(T,H){if(1&T&&(m.Gf(be,7),m.Gf(S,7),m.Gf(le,7)),2&T){let x;m.iGM(x=m.CRH())&&(H.configurationSourceTpl=x.first),m.iGM(x=m.CRH())&&(H.configurationValueTpl=x.first),m.iGM(x=m.CRH())&&(H.poolConfTable=x.first)}},inputs:{data:"data"},features:[m.TTD],decls:6,vars:2,consts:function(){let y,T,H;return y="Global",T="Image",H="Pool",[["identifier","name",3,"data","columns"],["poolConfTable",""],["configurationSourceTpl",""],["configurationValueTpl",""],[3,"ngSwitch"],[4,"ngSwitchCase"],y,T,H,[4,"ngSwitchDefault"]]},template:function(T,H){1&T&&(m._UZ(0,"cd-table",0,1),m.YNc(2,e,4,4,"ng-template",null,2,m.W1O),m.YNc(4,he,5,4,"ng-template",null,3,m.W1O)),2&T&&m.Q6J("data",H.data)("columns",H.poolConfigurationColumns)},directives:[l.a,v.RF,v.n9,v.ED],pipes:[U.O,re.J,Ae.A],styles:[""]}),F})()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.764bfab2e2f489fdfd7f.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.764bfab2e2f489fdfd7f.js
deleted file mode 100644 (file)
index 8102940..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[585],{24585:(Fi,Fe,r)=>{r.r(Fe),r.d(Fe,{PoolModule:()=>ze,RoutedPoolModule:()=>Ai});var C=r(12057),a=r(24751),Oe=r(6283),g=r(38549),M=r(79512),d_=r(44466),u_=r(91330),f_=r(370),P_=r(23815),u=r.n(P_),E_=r(80226),g_=r(26504),ue=r(80842);class S{constructor(){this.nodes=[],this.idTree={},this.allDevices=[],this.buckets=[],this.failureDomains={},this.failureDomainKeys=[],this.devices=[],this.deviceCount=0}static searchFailureDomains(i,_){return this.getFailureDomains(this.search(i,_))}static search(i,_){const[o,n]=_.split("~"),s=i.find(c=>["name","id","type"].some(d=>c[d]===o));return s?(i=this.getSubNodes(s,this.createIdTreeFromNodes(i)),n&&(i=this.filterNodesByDeviceType(i,n)),i):[]}static createIdTreeFromNodes(i){const _={};return i.forEach(o=>{_[o.id]=o}),_}static getSubNodes(i,_){let o=[i];return i.children&&i.children.forEach(n=>{o=o.concat(this.getSubNodes(_[n],_))}),o}static filterNodesByDeviceType(i,_){let n,o=i.filter(c=>c.device_class&&c.device_class!==_).map(c=>c.id),s=o;do{n=!1,i=i.filter(d=>!o.includes(d.id));const c=[];i.forEach(d=>{d.children&&d.children.every(P=>o.includes(P))&&(c.push(d.id),n=!0)}),n&&(o=c,s=s.concat(c))}while(n);return(i=u().cloneDeep(i)).map(c=>(c.children&&(c.children=c.children.filter(d=>!s.includes(d))),c))}static getFailureDomains(i){const _={};return i.forEach(o=>{const n=o.type;_[n]||(_[n]=[]),_[n].push(o)}),_}initCrushNodeSelection(i,_,o,n){this.nodes=i,this.idTree=S.createIdTreeFromNodes(i),i.forEach(s=>{this.idTree[s.id]=s}),this.buckets=u().sortBy(i.filter(s=>s.children),"name"),this.controls={root:_,failure:o,device:n},this.preSelectRoot(),this.controls.root.valueChanges.subscribe(()=>this.onRootChange()),this.controls.failure.valueChanges.subscribe(()=>this.onFailureDomainChange()),this.controls.device.valueChanges.subscribe(()=>this.onDeviceChange())}preSelectRoot(){const i=this.nodes.find(_=>"root"===_.type);this.silentSet(this.controls.root,i),this.onRootChange()}silentSet(i,_){i.setValue(_,{emitEvent:!1})}onRootChange(){const i=S.getSubNodes(this.controls.root.value,this.idTree),_=S.getFailureDomains(i);Object.keys(_).forEach(o=>{_[o].length<=1&&delete _[o]}),this.failureDomains=_,this.failureDomainKeys=Object.keys(_).sort(),this.updateFailureDomain()}updateFailureDomain(){let i=this.getIncludedCustomValue(this.controls.failure,Object.keys(this.failureDomains));""===i&&(i=this.setMostCommonDomain(this.controls.failure)),this.updateDevices(i)}getIncludedCustomValue(i,_){return i.dirty&&_.includes(i.value)?i.value:""}setMostCommonDomain(i){let _={n:0,type:""};return Object.keys(this.failureDomains).forEach(o=>{const n=this.failureDomains[o].length;_.n<n&&(_={n,type:o})}),this.silentSet(i,_.type),_.type}onFailureDomainChange(){this.updateDevices()}updateDevices(i=this.controls.failure.value){const _=u().flatten(this.failureDomains[i].map(n=>S.getSubNodes(n,this.idTree)));this.allDevices=_.filter(n=>n.device_class).map(n=>n.device_class),this.devices=u().uniq(this.allDevices).sort();const o=1===this.devices.length?this.devices[0]:this.getIncludedCustomValue(this.controls.device,this.devices);this.silentSet(this.controls.device,o),this.onDeviceChange(o)}onDeviceChange(i=this.controls.device.value){this.deviceCount=""===i?this.allDevices.length:this.allDevices.filter(_=>_===i).length}}var Ne=r(30982),p_=r(14745),b=r(65862),R_=r(93614),be=r(95463),E=r(77205),m_=r(30633),v=r(76111),C_=r(47557),M_=r(28211),de=r(32337),e=r(74788),ve=r(62862),Ie=r(83608),$e=r(60312),fe=r(41582),Pe=r(56310),Ee=r(87925),ge=r(94276),pe=r(82945),Re=r(18372),me=r(30839),Ce=r(10545);function h_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function T_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function S_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,33),e.qZA())}function L_(t,i){1&t&&(e.TgZ(0,"option",26),e.SDv(1,34),e.qZA())}function A_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}function F_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function N_(t,i){1&t&&(e.TgZ(0,"option",26),e.SDv(1,37),e.qZA())}function b_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw();e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function v_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,38),e.qZA())}function I_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}let $_=(()=>{class t extends S{constructor(_,o,n,s,c){super(),this.formBuilder=_,this.activeModal=o,this.taskWrapper=n,this.crushRuleService=s,this.actionLabels=c,this.submitAction=new e.vpe,this.tooltips=this.crushRuleService.formTooltips,this.action=this.actionLabels.CREATE,this.resource="Crush Rule",this.createForm()}createForm(){this.form=this.formBuilder.group({name:["",[a.kI.required,a.kI.pattern("[A-Za-z0-9_-]+"),E.h.custom("uniqueName",_=>this.names&&-1!==this.names.indexOf(_))]],root:null,failure_domain:"",device_class:""})}ngOnInit(){this.crushRuleService.getInfo().subscribe(({names:_,nodes:o})=>{this.initCrushNodeSelection(o,this.form.get("root"),this.form.get("failure_domain"),this.form.get("device_class")),this.names=_})}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _=u().cloneDeep(this.form.value);_.root=_.root.name,""===_.device_class&&delete _.device_class,this.taskWrapper.wrapTaskAroundCall({task:new v.R("crushRule/create",_),call:this.crushRuleService.create(_)}).subscribe({error:()=>{this.form.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close(),this.submitAction.emit(_)}})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ve.O),e.Y36(g.Kz),e.Y36(de.P),e.Y36(Ie.H),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-crush-rule-form-modal"]],outputs:{submitAction:"submitAction"},features:[e.qOj],decls:55,vars:27,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Root",n="Failure domain type",s="Device class",c="Let Ceph decide",d="This field is required!",P="The name can only consist of alphanumeric characters, dashes and underscores.",p="The chosen erasure code profile name is already in use.",R="Loading...",h="This field is required!",T="Loading...",m="This field is required!",[[3,"modalRef"],[1,"modal-title"],i,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label"],_,[1,"required"],[1,"cd-col-form-input"],["type","text","id","name","name","name","placeholder","Name...","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","root",1,"cd-col-form-label"],o,[3,"html"],["id","root","name","root","formControlName","root",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],["for","failure_domain",1,"cd-col-form-label"],n,["id","failure_domain","name","failure_domain","formControlName","failure_domain",1,"form-control"],["for","device_class",1,"cd-col-form-label"],s,["id","device_class","name","device_class","formControlName","device_class",1,"form-control"],["ngValue",""],c,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],d,P,p,R,[3,"ngValue"],h,T,m]},template:function(_,o){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.ynx(11),e.SDv(12,9),e.BQk(),e._UZ(13,"span",10),e.qZA(),e.TgZ(14,"div",11),e._UZ(15,"input",12),e.YNc(16,h_,2,0,"span",13),e.YNc(17,T_,2,0,"span",13),e.YNc(18,S_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(19,"div",7),e.TgZ(20,"label",14),e.ynx(21),e.SDv(22,15),e.BQk(),e._UZ(23,"cd-helper",16),e._UZ(24,"span",10),e.qZA(),e.TgZ(25,"div",11),e.TgZ(26,"select",17),e.YNc(27,L_,2,0,"option",18),e.YNc(28,A_,2,2,"option",19),e.qZA(),e.YNc(29,F_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(30,"div",7),e.TgZ(31,"label",20),e.ynx(32),e.SDv(33,21),e.BQk(),e._UZ(34,"cd-helper",16),e._UZ(35,"span",10),e.qZA(),e.TgZ(36,"div",11),e.TgZ(37,"select",22),e.YNc(38,N_,2,0,"option",18),e.YNc(39,b_,2,3,"option",19),e.qZA(),e.YNc(40,v_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(41,"div",7),e.TgZ(42,"label",23),e.ynx(43),e.SDv(44,24),e.BQk(),e._UZ(45,"cd-helper",16),e.qZA(),e.TgZ(46,"div",11),e.TgZ(47,"select",25),e.TgZ(48,"option",26),e.SDv(49,27),e.qZA(),e.YNc(50,I_,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(51,"div",28),e.TgZ(52,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(53,"titlecase"),e.ALo(54,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const n=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,19,o.action))(e.lcZ(4,21,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.form),e.xp6(10),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"pattern")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"uniqueName")),e.xp6(5),e.Q6J("html",o.tooltips.root),e.xp6(4),e.Q6J("ngIf",!o.buckets),e.xp6(1),e.Q6J("ngForOf",o.buckets),e.xp6(1),e.Q6J("ngIf",o.form.showError("root",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.failure_domain),e.xp6(4),e.Q6J("ngIf",!o.failureDomains),e.xp6(1),e.Q6J("ngForOf",o.failureDomainKeys),e.xp6(1),e.Q6J("ngIf",o.form.showError("failure_domain",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.device_class),e.xp6(5),e.Q6J("ngForOf",o.devices),e.xp6(2),e.Q6J("form",o.form)("submitText",e.lcZ(53,23,o.action)+" "+e.lcZ(54,25,o.resource))}},directives:[$e.z,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,Re.S,a.EJ,C.sg,a.YN,a.Kr,me.p],pipes:[C.rS,Ce.m],styles:[""]}),t})();class D_{}var Z_=r(58497);let Me=(()=>{class t{constructor(_){this.http=_,this.apiPath="api/erasure_code_profile",this.formTooltips={k:"Each object is split in data-chunks parts, each stored on a different OSD.",m:"Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.",plugins:{jerasure:{description:"The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.",technique:"The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.",packetSize:"The encoding will be done on packets of bytes size at a time.\n          Choosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic."},lrc:{description:"With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.",l:"Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.",crushLocality:"The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done."},isa:{description:"The isa plugin encapsulates the ISA library. It only runs on Intel processors.",technique:"The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy."},shec:{description:"The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.",c:"The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data."},clay:{description:"CLAY (short for coupled-layer) codes are erasure codes designed to\n          bring about significant savings in terms of network bandwidth and disk IO when a failed\n          node/OSD/rack is being repaired.",d:"Number of OSDs requested to send data during recovery of a single chunk.\n          d needs to be chosen such that k+1 <= d <= k+m-1. The larger the d, the better\n          the savings.",scalar_mds:"scalar_mds specifies the plugin that is used as a building block\n          in the layered construction. It can be one of jerasure, isa, shec.",technique:"technique specifies the technique that will be picked\n          within the 'scalar_mds' plugin specified. Supported techniques\n          are 'reed_sol_van', 'reed_sol_r6_op', 'cauchy_orig',\n          'cauchy_good', 'liber8tion' for jerasure, 'reed_sol_van',\n          'cauchy' for isa and 'single', 'multiple' for shec."}},crushRoot:"The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.",crushFailureDomain:"Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.",crushDeviceClass:"Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.",directory:"Set the directory name from which the erasure code plugin is loaded."}}list(){return this.http.get(this.apiPath)}create(_){return this.http.post(this.apiPath,_,{observe:"response"})}delete(_){return this.http.delete(`${this.apiPath}/${_}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return t.\u0275fac=function(_){return new(_||t)(e.LFG(Z_.eN))},t.\u0275prov=e.Yz7({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function x_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,47),e.qZA())}function y_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,48),e.qZA())}function U_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,49),e.qZA())}function q_(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,50),e.qZA())}function H_(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}function G_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,52),e.qZA())}function z_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,53),e.qZA())}function X_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,54),e.qZA())}function w_(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,55),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.deviceCount),e.QtT(1)}}function Q_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,56),e.qZA())}function J_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,57),e.qZA())}function k_(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,58),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.lrcMultiK),e.QtT(1)}}function V_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,59),e.qZA())}function Y_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,60),e.qZA())}function B_(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,61),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.deviceCount),e.QtT(1)}}function j_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,65),e.qZA())}function K_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,66),e.qZA())}function W_(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",62),e.TgZ(2,"span",14),e.SDv(3,63),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",64),e.YNc(7,j_,2,0,"span",12),e.YNc(8,K_,2,0,"span",12),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.shec.c),e.xp6(3),e.Q6J("ngIf",_.form.showError("c",o,"min")),e.xp6(1),e.Q6J("ngIf",_.form.showError("c",o,"cGreaterM"))}}function eo(t,i){1&t&&(e.TgZ(0,"span",39),e.SDv(1,75),e.qZA())}function _o(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,76),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.pQV(_.getDMin())(_.getDMax()),e.QtT(1)}}function oo(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,77),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.pQV(_.getDMax()),e.QtT(1)}}function to(t,i){if(1&t&&(e.ynx(0),e.YNc(1,_o,2,2,"span",23),e.YNc(2,oo,2,1,"span",23),e.BQk()),2&t){const _=e.oxw(2);e.xp6(1),e.Q6J("ngIf",_.getDMin()<_.getDMax()),e.xp6(1),e.Q6J("ngIf",_.getDMin()===_.getDMax())}}function io(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,78),e.qZA()),2&t){const _=e.oxw(2);e.xp6(1),e.pQV(_.getDMin()),e.QtT(1)}}function no(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,79),e.qZA()),2&t){const _=e.oxw(2);e.xp6(1),e.pQV(_.getDMax()),e.QtT(1)}}function so(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",67),e.TgZ(2,"span",14),e.SDv(3,68),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"div",69),e._UZ(7,"input",70),e.TgZ(8,"span",71),e.TgZ(9,"button",72),e.NdJ("click",function(){return e.CHM(_),e.oxw().toggleDCalc()}),e._UZ(10,"i",73),e.qZA(),e.qZA(),e.qZA(),e.YNc(11,eo,2,0,"span",23),e.YNc(12,to,3,2,"ng-container",74),e.YNc(13,io,2,1,"span",12),e.YNc(14,no,2,1,"span",12),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.clay.d),e.xp6(6),e.Q6J("ngClass",_.dCalc?_.icons.unlock:_.icons.lock),e.xp6(1),e.Q6J("ngIf",_.dCalc),e.xp6(1),e.Q6J("ngIf",!_.dCalc),e.xp6(1),e.Q6J("ngIf",_.form.showError("d",o,"dMin")),e.xp6(1),e.Q6J("ngIf",_.form.showError("d",o,"dMax"))}}function ao(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,84),e.qZA())}function lo(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,85),e.qZA())}function ro(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,86),e.qZA())}function co(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",80),e.TgZ(2,"span",14),e.SDv(3,81),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",82),e.YNc(7,ao,2,0,"span",12),e.YNc(8,lo,2,0,"span",12),e.YNc(9,ro,2,0,"span",12),e.TgZ(10,"span",39),e.SDv(11,83),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.lrc.l),e.xp6(3),e.Q6J("ngIf",_.form.showError("l",o,"required")),e.xp6(1),e.Q6J("ngIf",_.form.showError("l",o,"min")),e.xp6(1),e.Q6J("ngIf",_.form.showError("l",o,"unequal")),e.xp6(2),e.pQV(_.lrcGroups),e.QtT(11)}}function Oo(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,87),e.qZA())}function uo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw();e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function fo(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,91),e.qZA())}function Po(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,92),e.qZA())}function Eo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw(2);e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function go(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",88),e.ynx(2),e.SDv(3,89),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",90),e.YNc(7,fo,2,0,"option",18),e.YNc(8,Po,2,0,"option",18),e.YNc(9,Eo,2,3,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins.lrc.crushLocality),e.xp6(3),e.Q6J("ngIf",!_.failureDomains),e.xp6(1),e.Q6J("ngIf",_.failureDomainKeys.length>0),e.xp6(1),e.Q6J("ngForOf",_.failureDomainKeys)}}function po(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}const De=function(t,i,_){return[t,i,_]};function Ro(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",93),e.ynx(2),e.SDv(3,94),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",95),e.YNc(7,po,2,2,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins.clay.scalar_mds),e.xp6(3),e.Q6J("ngForOf",e.kEZ(2,De,_.PLUGIN.JERASURE,_.PLUGIN.ISA,_.PLUGIN.SHEC))}}function mo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}function Co(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",96),e.ynx(2),e.SDv(3,97),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",98),e.YNc(7,mo,2,2,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins[_.plugin].technique),e.xp6(3),e.Q6J("ngForOf",_.techniques)}}function Mo(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,102),e.qZA())}function ho(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",99),e.ynx(2),e.SDv(3,100),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",101),e.YNc(7,Mo,2,0,"span",12),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.jerasure.packetSize),e.xp6(3),e.Q6J("ngIf",_.form.showError("packetSize",o,"min"))}}function To(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,103),e.qZA())}function So(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}function Lo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}let Ao=(()=>{class t extends S{constructor(_,o,n,s,c){super(),this.formBuilder=_,this.activeModal=o,this.taskWrapper=n,this.ecpService=s,this.actionLabels=c,this.submitAction=new e.vpe,this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",CLAY:"clay",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.icons=b.P,this.action=this.actionLabels.CREATE,this.resource="EC Profile",this.createForm(),this.setJerasureDefaults()}createForm(){this.form=this.formBuilder.group({name:[null,[a.kI.required,a.kI.pattern("[A-Za-z0-9_-]+"),E.h.custom("uniqueName",_=>this.names&&-1!==this.names.indexOf(_))]],plugin:[this.PLUGIN.JERASURE,[a.kI.required]],k:[4,[a.kI.required,E.h.custom("max",()=>this.baseValueValidation(!0)),E.h.custom("unequal",_=>this.lrcDataValidation(_)),E.h.custom("kLowerM",_=>this.shecDataValidation(_))]],m:[2,[a.kI.required,E.h.custom("max",()=>this.baseValueValidation())]],crushFailureDomain:"",crushRoot:null,crushDeviceClass:"",directory:"",technique:"reed_sol_van",packetSize:[2048],l:[3,[a.kI.required,E.h.custom("unequal",_=>this.lrcLocalityValidation(_))]],crushLocality:"",c:[2,[a.kI.required,E.h.custom("cGreaterM",_=>this.shecDurabilityValidation(_))]],d:[5,[a.kI.required,E.h.custom("dMin",_=>this.dMinValidation(_)),E.h.custom("dMax",_=>this.dMaxValidation(_))]],scalar_mds:[this.PLUGIN.JERASURE,[a.kI.required]]}),this.toggleDCalc(),this.form.get("k").valueChanges.subscribe(()=>this.updateValidityOnChange(["m","l","d"])),this.form.get("m").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","l","c","d"])),this.form.get("l").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","m"])),this.form.get("plugin").valueChanges.subscribe(_=>this.onPluginChange(_)),this.form.get("scalar_mds").valueChanges.subscribe(()=>this.setClayDefaultsForScalar())}baseValueValidation(_=!1){return this.validValidation(()=>this.getKMSum()>this.deviceCount&&this.form.getValue("k")>this.form.getValue("m")===_)}validValidation(_,o){return!((!this.form||o)&&this.plugin!==o)&&_()}getKMSum(){return this.form.getValue("k")+this.form.getValue("m")}lrcDataValidation(_){return this.validValidation(()=>{const o=this.form.getValue("m"),n=this.form.getValue("l"),s=_+o;return this.lrcMultiK=_/(s/n),_%(s/n)!=0},"lrc")}shecDataValidation(_){return this.validValidation(()=>this.form.getValue("m")>_,"shec")}lrcLocalityValidation(_){return this.validValidation(()=>{const o=this.getKMSum();return this.lrcGroups=_>0?o/_:0,_>0&&o%_!=0},"lrc")}shecDurabilityValidation(_){return this.validValidation(()=>{const o=this.form.getValue("m");return _>o},"shec")}dMinValidation(_){return this.validValidation(()=>this.getDMin()>_,"clay")}getDMin(){return this.form.getValue("k")+1}dMaxValidation(_){return this.validValidation(()=>_>this.getDMax(),"clay")}getDMax(){const _=this.form.getValue("m");return this.form.getValue("k")+_-1}toggleDCalc(){this.dCalc=!this.dCalc,this.form.get("d")[this.dCalc?"disable":"enable"](),this.calculateD()}calculateD(){this.plugin!==this.PLUGIN.CLAY||!this.dCalc||this.form.silentSet("d",this.getDMax())}updateValidityOnChange(_){_.forEach(o=>{"d"===o&&this.calculateD(),this.form.get(o).updateValueAndValidity({emitEvent:!1})})}onPluginChange(_){this.plugin=_,_===this.PLUGIN.JERASURE?this.setJerasureDefaults():_===this.PLUGIN.LRC?this.setLrcDefaults():_===this.PLUGIN.ISA?this.setIsaDefaults():_===this.PLUGIN.SHEC?this.setShecDefaults():_===this.PLUGIN.CLAY&&this.setClayDefaults(),this.updateValidityOnChange(["m"])}setJerasureDefaults(){this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"],this.setDefaults({k:4,m:2,technique:"reed_sol_van"})}setLrcDefaults(){this.setDefaults({k:4,m:2,l:3})}setIsaDefaults(){this.techniques=["reed_sol_van","cauchy"],this.setDefaults({k:7,m:3,technique:"reed_sol_van"})}setShecDefaults(){this.setDefaults({k:4,m:3,c:2})}setClayDefaults(){this.setDefaults({k:4,m:2,scalar_mds:this.PLUGIN.JERASURE}),this.setClayDefaultsForScalar()}setClayDefaultsForScalar(){const _=this.form.getValue("scalar_mds");let o="reed_sol_van";_===this.PLUGIN.JERASURE?this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liber8tion"]:_===this.PLUGIN.ISA?this.techniques=["reed_sol_van","cauchy"]:(o="single",this.techniques=["single","multiple"]),this.setDefaults({technique:o})}setDefaults(_){Object.keys(_).forEach(o=>{const n=this.form.get(o),s=n.value;n.pristine||"technique"===o&&!this.techniques.includes(s)||"k"===o&&[4,7].includes(s)||"m"===o&&[2,3].includes(s)?n.setValue(_[o]):n.updateValueAndValidity()})}ngOnInit(){this.ecpService.getInfo().subscribe(({plugins:_,names:o,directory:n,nodes:s})=>{this.initCrushNodeSelection(s,this.form.get("crushRoot"),this.form.get("crushFailureDomain"),this.form.get("crushDeviceClass")),this.plugins=_,this.names=o,this.form.silentSet("directory",n),this.preValidateNumericInputFields()})}preValidateNumericInputFields(){const _=["k","m","l","c","d"].map(o=>this.form.get(o));_.forEach(o=>{o.markAsTouched(),o.markAsDirty()}),_[1].updateValueAndValidity()}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new v.R("ecp/create",{name:_.name}),call:this.ecpService.create(_)}).subscribe({error:()=>{this.form.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close(),this.submitAction.emit(_)}})}createJson(){const _={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE,this.PLUGIN.CLAY],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC],d:[this.PLUGIN.CLAY],scalar_mds:[this.PLUGIN.CLAY]},o=new D_,n=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(s=>{const c=_[s],d=this.form.getValue(s);return(c&&c.includes(n)||!c)&&d&&""!==d}).forEach(s=>{this.extendJson(s,o)}),o}extendJson(_,o){const s=this.form.getValue(_);o[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[_]||_]="crushRoot"===_?s.name:s}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ve.O),e.Y36(g.Kz),e.Y36(de.P),e.Y36(Me),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-erasure-code-profile-form-modal"]],outputs:{submitAction:"submitAction"},features:[e.qOj],decls:98,vars:53,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m,f,A,I,$,D,Z,x,y,U,q,H,G,z,X,w,Q,J,k,V,Y,B,j,K,N,W,ee,_e,oe,te,ie,ne,se,ae,le,re,ce;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Plugin",n="Data chunks (k)",s="Coding chunks (m)",c="Crush failure domain",d="Crush root",P="Crush device class",p="Let Ceph decide",R="Available OSDs: " + "\ufffd0\ufffd" + "",h="Directory",T="This field is required!",m="The name can only consist of alphanumeric characters, dashes and underscores.",f="The chosen erasure code profile name is already in use.",A="Loading...",I="This field is required!",$="This field is required!",D="Must be equal to or greater than 2.",Z="Chunks (k+m) have exceeded the available OSDs of " + "\ufffd0\ufffd" + ".",x="For an equal distribution k has to be a multiple of (k+m)/l.",y="K has to be equal to or greater than m in order to recover data correctly through c.",U="Distribution factor: " + "\ufffd0\ufffd" + "",q="This field is required!",H="Must be equal to or greater than 1.",G="Chunks (k+m) have exceeded the available OSDs of " + "\ufffd0\ufffd" + ".",z="Durability estimator (c)",X="Must be equal to or greater than 1.",w="C has to be equal to or lower than m as m defines the amount of chunks that can be used.",Q="Helper chunks (d)",J="Set d manually or use the plugin's default calculation that maximizes d.",k="D is automatically updated on k and m changes",V="D can be set from " + "\ufffd0\ufffd" + " to " + "\ufffd1\ufffd" + "",Y="D can only be set to " + "\ufffd0\ufffd" + "",B="D has to be greater than k (" + "\ufffd0\ufffd" + ").",j="D has to be lower than k + m (" + "\ufffd0\ufffd" + ").",K="Locality (l)",N="Locality groups: " + "\ufffd0\ufffd" + "",W="This field is required!",ee="Must be equal to or greater than 1.",_e="Can't split up chunks (k+m) correctly with the current locality.",oe="Loading...",te="Crush Locality",ie="Loading...",ne="None",se="Scalar mds",ae="Technique",le="Packetsize",re="Must be equal to or greater than 1.",ce="Loading...",[[3,"modalRef"],[1,"modal-title"],i,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["type","text","id","name","name","name","placeholder","Name...","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","plugin",1,"cd-col-form-label"],[1,"required"],o,[3,"html"],["id","plugin","name","plugin","formControlName","plugin",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],["for","k",1,"cd-col-form-label"],n,["type","number","id","k","name","k","ng-model","$ctrl.erasureCodeProfile.k","placeholder","Data chunks...","formControlName","k","min","2",1,"form-control"],["class","form-text text-muted",4,"ngIf"],["for","m",1,"cd-col-form-label"],s,["type","number","id","m","name","m","placeholder","Coding chunks...","formControlName","m","min","1",1,"form-control"],["class","form-group row",4,"ngIf"],["for","crushFailureDomain",1,"cd-col-form-label"],c,["id","crushFailureDomain","name","crushFailureDomain","formControlName","crushFailureDomain",1,"form-control"],["for","crushRoot",1,"cd-col-form-label"],d,["id","crushRoot","name","crushRoot","formControlName","crushRoot",1,"form-control"],["for","crushDeviceClass",1,"cd-col-form-label"],P,["id","crushDeviceClass","name","crushDeviceClass","formControlName","crushDeviceClass",1,"form-control"],["ngValue",""],p,[1,"form-text","text-muted"],R,["for","directory",1,"cd-col-form-label"],h,["type","text","id","directory","name","directory","placeholder","Path...","formControlName","directory",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],T,m,f,A,[3,"ngValue"],I,$,D,Z,x,y,U,q,H,G,["for","c",1,"cd-col-form-label"],z,["type","number","id","c","name","c","placeholder","Coding chunks...","formControlName","c","min","1",1,"form-control"],X,w,["for","d",1,"cd-col-form-label"],Q,[1,"input-group"],["type","number","id","d","name","d","placeholder","Helper chunks...","formControlName","d",1,"form-control"],[1,"input-group-append"],["id","d-calc-btn","ngbTooltip",J,"type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],[4,"ngIf"],k,V,Y,B,j,["for","l",1,"cd-col-form-label"],K,["type","number","id","l","name","l","placeholder","Coding chunks...","formControlName","l","min","1",1,"form-control"],N,W,ee,_e,oe,["for","crushLocality",1,"cd-col-form-label"],te,["id","crushLocality","name","crushLocality","formControlName","crushLocality",1,"form-control"],ie,ne,["for","scalar_mds",1,"cd-col-form-label"],se,["id","scalar_mds","name","scalar_mds","formControlName","scalar_mds",1,"form-control"],["for","technique",1,"cd-col-form-label"],ae,["id","technique","name","technique","formControlName","technique",1,"form-control"],["for","packetSize",1,"cd-col-form-label"],le,["type","number","id","packetSize","name","packetSize","placeholder","Packetsize...","formControlName","packetSize","min","1",1,"form-control"],re,ce]},template:function(_,o){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.YNc(14,x_,2,0,"span",12),e.YNc(15,y_,2,0,"span",12),e.YNc(16,U_,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(17,"div",7),e.TgZ(18,"label",13),e.TgZ(19,"span",14),e.SDv(20,15),e.qZA(),e._UZ(21,"cd-helper",16),e.qZA(),e.TgZ(22,"div",10),e.TgZ(23,"select",17),e.YNc(24,q_,2,0,"option",18),e.YNc(25,H_,2,2,"option",19),e.qZA(),e.YNc(26,G_,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(27,"div",7),e.TgZ(28,"label",20),e.TgZ(29,"span",14),e.SDv(30,21),e.qZA(),e._UZ(31,"cd-helper",16),e.qZA(),e.TgZ(32,"div",10),e._UZ(33,"input",22),e.YNc(34,z_,2,0,"span",12),e.YNc(35,X_,2,0,"span",12),e.YNc(36,w_,2,1,"span",12),e.YNc(37,Q_,2,0,"span",12),e.YNc(38,J_,2,0,"span",12),e.YNc(39,k_,2,1,"span",23),e.qZA(),e.qZA(),e.TgZ(40,"div",7),e.TgZ(41,"label",24),e.TgZ(42,"span",14),e.SDv(43,25),e.qZA(),e._UZ(44,"cd-helper",16),e.qZA(),e.TgZ(45,"div",10),e._UZ(46,"input",26),e.YNc(47,V_,2,0,"span",12),e.YNc(48,Y_,2,0,"span",12),e.YNc(49,B_,2,1,"span",12),e.qZA(),e.qZA(),e.YNc(50,W_,9,3,"div",27),e.YNc(51,so,15,6,"div",27),e.YNc(52,co,12,5,"div",27),e.TgZ(53,"div",7),e.TgZ(54,"label",28),e.ynx(55),e.SDv(56,29),e.BQk(),e._UZ(57,"cd-helper",16),e.qZA(),e.TgZ(58,"div",10),e.TgZ(59,"select",30),e.YNc(60,Oo,2,0,"option",18),e.YNc(61,uo,2,3,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(62,go,10,4,"div",27),e.YNc(63,Ro,8,6,"div",27),e.YNc(64,Co,8,2,"div",27),e.YNc(65,ho,8,2,"div",27),e.TgZ(66,"div",7),e.TgZ(67,"label",31),e.ynx(68),e.SDv(69,32),e.BQk(),e._UZ(70,"cd-helper",16),e.qZA(),e.TgZ(71,"div",10),e.TgZ(72,"select",33),e.YNc(73,To,2,0,"option",18),e.YNc(74,So,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.TgZ(75,"div",7),e.TgZ(76,"label",34),e.ynx(77),e.SDv(78,35),e.BQk(),e._UZ(79,"cd-helper",16),e.qZA(),e.TgZ(80,"div",10),e.TgZ(81,"select",36),e.TgZ(82,"option",37),e.SDv(83,38),e.qZA(),e.YNc(84,Lo,2,2,"option",19),e.qZA(),e.TgZ(85,"span",39),e.SDv(86,40),e.qZA(),e.qZA(),e.qZA(),e.TgZ(87,"div",7),e.TgZ(88,"label",41),e.ynx(89),e.SDv(90,42),e.BQk(),e._UZ(91,"cd-helper",16),e.qZA(),e.TgZ(92,"div",10),e._UZ(93,"input",43),e.qZA(),e.qZA(),e.qZA(),e.TgZ(94,"div",44),e.TgZ(95,"cd-form-button-panel",45),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(96,"titlecase"),e.ALo(97,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const n=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,41,o.action))(e.lcZ(4,43,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.form),e.xp6(8),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"pattern")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"uniqueName")),e.xp6(5),e.Q6J("html",o.tooltips.plugins[o.plugin].description),e.xp6(3),e.Q6J("ngIf",!o.plugins),e.xp6(1),e.Q6J("ngForOf",o.plugins),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.k),e.xp6(3),e.Q6J("ngIf",o.form.showError("k",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"max")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"unequal")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"kLowerM")),e.xp6(1),e.Q6J("ngIf","lrc"===o.plugin),e.xp6(5),e.Q6J("html",o.tooltips.m),e.xp6(3),e.Q6J("ngIf",o.form.showError("m",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("m",n,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("m",n,"max")),e.xp6(1),e.Q6J("ngIf","shec"===o.plugin),e.xp6(1),e.Q6J("ngIf","clay"===o.plugin),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.LRC),e.xp6(5),e.Q6J("html",o.tooltips.crushFailureDomain),e.xp6(3),e.Q6J("ngIf",!o.failureDomains),e.xp6(1),e.Q6J("ngForOf",o.failureDomainKeys),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.LRC),e.xp6(1),e.Q6J("ngIf",o.PLUGIN.CLAY===o.plugin),e.xp6(1),e.Q6J("ngIf",e.kEZ(49,De,o.PLUGIN.JERASURE,o.PLUGIN.ISA,o.PLUGIN.CLAY).includes(o.plugin)),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.JERASURE),e.xp6(5),e.Q6J("html",o.tooltips.crushRoot),e.xp6(3),e.Q6J("ngIf",!o.buckets),e.xp6(1),e.Q6J("ngForOf",o.buckets),e.xp6(5),e.Q6J("html",o.tooltips.crushDeviceClass),e.xp6(5),e.Q6J("ngForOf",o.devices),e.xp6(2),e.pQV(o.deviceCount),e.QtT(86),e.xp6(5),e.Q6J("html",o.tooltips.directory),e.xp6(4),e.Q6J("form",o.form)("submitText",e.lcZ(96,45,o.action)+" "+e.lcZ(97,47,o.resource))}},directives:[$e.z,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,Re.S,a.EJ,C.sg,a.wV,a.qQ,a.YN,a.Kr,me.p,g._L,C.mk],pipes:[C.rS,Ce.m],styles:[""]}),t})();var Fo=r(7022);class No{constructor(){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],default:["cephfs","rbd","rgw"],available:[],validators:[a.kI.pattern("[A-Za-z0-9_]+"),a.kI.maxLength(128)],messages:new Fo.a({empty:"No applications added",selectionLimit:{text:"Applications limit reached",tooltip:"A pool can only have up to four applications definitions."},customValidations:{pattern:"Allowed characters '_a-zA-Z0-9'",maxlength:"Maximum length is 128 characters"},filter:"Filter or add applications'",add:"Add application"})}}}var Ze=r(63285),he=r(74937),bo=r(63622),vo=r(60192),Io=r(17932),$o=r(54555),Do=r(30490),xe=r(61350);const Zo=["crushInfoTabs"],xo=["crushDeletionBtn"],yo=["ecpInfoTabs"],Uo=["ecpDeletionBtn"];function qo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,42),e.qZA())}function Ho(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,43),e.qZA())}function Go(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,44),e.qZA())}function zo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,45),e.qZA())}function Xo(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function wo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,47),e.qZA())}function Qo(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Jo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,58),e.qZA())}function ko(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,59),e.qZA())}function Vo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,60),e.qZA())}function Yo(t,i){1&t&&(e.TgZ(0,"span",55),e.SDv(1,61),e.qZA())}function Bo(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",52),e.SDv(2,53),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"input",54),e.NdJ("focus",function(){return e.CHM(_),e.oxw(3).externalPgChange=!1})("blur",function(){return e.CHM(_),e.oxw(3).alignPgs()}),e.qZA(),e.YNc(5,Jo,2,0,"span",13),e.YNc(6,ko,2,0,"span",13),e.YNc(7,Vo,2,0,"span",13),e.TgZ(8,"span",55),e._UZ(9,"cd-doc",56),e.qZA(),e.YNc(10,Yo,2,0,"span",57),e.qZA(),e.qZA()}if(2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(5),e.Q6J("ngIf",o.form.showError("pgNum",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("pgNum",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("pgNum",_,"34")),e.xp6(3),e.Q6J("ngIf",o.externalPgChange)}}function jo(t,i){if(1&t&&(e.TgZ(0,"span",41),e.TgZ(1,"ul",66),e.TgZ(2,"li"),e.SDv(3,67),e.qZA(),e.TgZ(4,"li"),e.SDv(5,68),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(3),e.pQV(_.getMinSize()),e.QtT(3),e.xp6(2),e.pQV(_.getMaxSize()),e.QtT(5)}}function Ko(t,i){if(1&t&&(e.TgZ(0,"span",41),e.SDv(1,69),e.qZA()),2&t){const _=e.oxw(4);e.xp6(1),e.pQV(_.getMinSize())(_.getMaxSize()),e.QtT(1)}}function Wo(t,i){1&t&&(e.TgZ(0,"span",70),e.SDv(1,71),e.qZA())}function et(t,i){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",62),e.SDv(2,63),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",64),e.YNc(5,jo,6,2,"span",13),e.YNc(6,Ko,2,2,"span",13),e.YNc(7,Wo,2,0,"span",65),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(4),e.Q6J("max",o.getMaxSize())("min",o.getMinSize()),e.xp6(1),e.Q6J("ngIf",o.form.showError("size",_)),e.xp6(1),e.Q6J("ngIf",o.form.showError("size",_)),e.xp6(1),e.Q6J("ngIf",1===o.form.getValue("size"))}}function _t(t,i){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",72),e.SDv(2,73),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",74),e._UZ(5,"input",75),e.TgZ(6,"label",76),e.SDv(7,77),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function ot(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"div",8),e.TgZ(2,"label",48),e.SDv(3,49),e.qZA(),e.TgZ(4,"div",11),e.TgZ(5,"select",50),e.YNc(6,Qo,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(7,Bo,11,4,"div",51),e.YNc(8,et,8,5,"div",51),e.YNc(9,_t,8,0,"div",51),e.qZA()),2&t){const _=e.oxw(2);e.xp6(6),e.Q6J("ngForOf",_.pgAutoscaleModes),e.xp6(1),e.Q6J("ngIf","on"!==_.form.getValue("pgAutoscaleMode")),e.xp6(1),e.Q6J("ngIf",_.isReplicated),e.xp6(1),e.Q6J("ngIf",_.info.is_all_bluestore&&_.isErasure)}}function tt(t,i){if(1&t&&e._UZ(0,"i",78),2&t){const _=e.oxw(2);e.Gre("",_.icons.warning," icon-warning-color")}}function it(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,93),e.qZA())}function nt(t,i){1&t&&(e.TgZ(0,"option",94),e.SDv(1,95),e.qZA()),2&t&&e.Q6J("ngValue",null)}function st(t,i){1&t&&(e.TgZ(0,"option",94),e.SDv(1,96),e.qZA()),2&t&&e.Q6J("ngValue",null)}function at(t,i){if(1&t&&(e.TgZ(0,"option",94),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}const F=function(t){return[t]};function lt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",97),e.NdJ("click",function(){return e.CHM(_),e.oxw(4).addErasureCodeProfile()}),e._UZ(1,"i",89),e.qZA()}if(2&t){const _=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,F,_.icons.add))}}function rt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",98,99),e.NdJ("click",function(){return e.CHM(_),e.oxw(4).deleteErasureCodeProfile()}),e._UZ(2,"i",89),e.qZA()}if(2&t){const _=e.oxw(4);e.xp6(2),e.Q6J("ngClass",e.VKq(1,F,_.icons.trash))}}const ct=function(){return["name"]};function Ot(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",110),2&t){const _=e.oxw(5);e.Q6J("renderObjects",!0)("hideKeys",e.DdM(4,ct))("data",_.form.getValue("erasureProfile"))("autoReload",!1)}}function dt(t,i){1&t&&(e.TgZ(0,"span"),e.SDv(1,113),e.qZA())}function ut(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.xp6(1),e.hij(" ",_," ")}}function ft(t,i){if(1&t&&(e.TgZ(0,"ul"),e.YNc(1,ut,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(6);e.xp6(1),e.Q6J("ngForOf",_.ecpUsage)}}function Pt(t,i){if(1&t&&(e.YNc(0,dt,2,0,"ng-template",null,111,e.W1O),e.YNc(2,ft,2,1,"ul",112)),2&t){const _=e.MAs(1),o=e.oxw(5);e.xp6(2),e.Q6J("ngIf",o.ecpUsage)("ngIfElse",_)}}function Et(t,i){if(1&t&&(e.TgZ(0,"span",100),e.TgZ(1,"ul",101,102),e.TgZ(3,"li",103),e.TgZ(4,"a",104),e.SDv(5,105),e.qZA(),e.YNc(6,Ot,1,5,"ng-template",106),e.qZA(),e.TgZ(7,"li",107),e.TgZ(8,"a",104),e.SDv(9,108),e.qZA(),e.YNc(10,Pt,3,2,"ng-template",106),e.qZA(),e.qZA(),e._UZ(11,"div",109),e.qZA()),2&t){const _=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",_)}}const ye=function(t){return{active:t}};function gt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",80),e.SDv(2,81),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",82),e.TgZ(5,"select",83),e.YNc(6,it,2,0,"option",84),e.YNc(7,nt,2,1,"option",85),e.YNc(8,st,2,1,"option",85),e.YNc(9,at,2,2,"option",86),e.qZA(),e.TgZ(10,"span",87),e.TgZ(11,"button",88),e.NdJ("click",function(){e.CHM(_);const n=e.oxw(3);return n.data.erasureInfo=!n.data.erasureInfo}),e._UZ(12,"i",89),e.qZA(),e.YNc(13,lt,2,3,"button",90),e.YNc(14,rt,3,3,"button",91),e.qZA(),e.qZA(),e.YNc(15,Et,12,1,"span",92),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(3);e.xp6(6),e.Q6J("ngIf",!_.ecProfiles),e.xp6(1),e.Q6J("ngIf",_.ecProfiles&&0===_.ecProfiles.length),e.xp6(1),e.Q6J("ngIf",_.ecProfiles&&_.ecProfiles.length>0),e.xp6(1),e.Q6J("ngForOf",_.ecProfiles),e.xp6(2),e.Q6J("ngClass",e.VKq(9,ye,_.data.erasureInfo)),e.xp6(1),e.Q6J("ngClass",e.VKq(11,F,_.icons.questionCircle)),e.xp6(1),e.Q6J("ngIf",!_.editing),e.xp6(1),e.Q6J("ngIf",!_.editing),e.xp6(1),e.Q6J("ngIf",_.data.erasureInfo&&_.form.getValue("erasureProfile"))}}function pt(t,i){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",115),e.SDv(2,116),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"span",55),e.SDv(5,117),e.qZA(),e.qZA(),e.qZA())}function Rt(t,i){1&t&&(e.TgZ(0,"span",55),e.TgZ(1,"span"),e.SDv(2,120),e.qZA(),e._uU(3,"\xa0 "),e.qZA())}function mt(t,i){if(1&t&&(e.TgZ(0,"option",94),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.rule_name," ")}}function Ct(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",97),e.NdJ("click",function(){return e.CHM(_),e.oxw(5).addCrushRule()}),e._UZ(1,"i",89),e.qZA()}if(2&t){const _=e.oxw(5);e.xp6(1),e.Q6J("ngClass",e.VKq(1,F,_.icons.add))}}function Mt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",126,127),e.NdJ("click",function(){return e.CHM(_),e.oxw(5).deleteCrushRule()}),e._UZ(2,"i",89),e.qZA()}if(2&t){const _=e.oxw(5);e.xp6(2),e.Q6J("ngClass",e.VKq(1,F,_.icons.trash))}}const ht=function(){return["steps","type","rule_name"]};function Tt(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",110),2&t){const _=e.oxw(6);e.Q6J("renderObjects",!1)("hideKeys",e.DdM(4,ht))("data",_.form.getValue("crushRule"))("autoReload",!1)}}function St(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw(7);e.xp6(1),e.hij(" ",o.describeCrushStep(_)," ")}}function Lt(t,i){if(1&t&&(e.TgZ(0,"ol"),e.YNc(1,St,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(6);e.xp6(1),e.Q6J("ngForOf",_.form.get("crushRule").value.steps)}}function At(t,i){1&t&&(e.TgZ(0,"span"),e.SDv(1,136),e.qZA())}function Ft(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.xp6(1),e.hij(" ",_," ")}}function Nt(t,i){if(1&t&&(e.TgZ(0,"ul"),e.YNc(1,Ft,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(7);e.xp6(1),e.Q6J("ngForOf",_.crushUsage)}}function bt(t,i){if(1&t&&(e.YNc(0,At,2,0,"ng-template",null,135,e.W1O),e.YNc(2,Nt,2,1,"ul",112)),2&t){const _=e.MAs(1),o=e.oxw(6);e.xp6(2),e.Q6J("ngIf",o.crushUsage)("ngIfElse",_)}}function vt(t,i){if(1&t&&(e.TgZ(0,"div",128),e.TgZ(1,"ul",101,129),e.TgZ(3,"li",130),e.TgZ(4,"a",104),e.SDv(5,131),e.qZA(),e.YNc(6,Tt,1,5,"ng-template",106),e.qZA(),e.TgZ(7,"li",132),e.TgZ(8,"a",104),e.SDv(9,133),e.qZA(),e.YNc(10,Lt,2,1,"ng-template",106),e.qZA(),e.TgZ(11,"li",107),e.TgZ(12,"a",104),e.SDv(13,134),e.qZA(),e.YNc(14,bt,3,2,"ng-template",106),e.qZA(),e.qZA(),e._UZ(15,"div",109),e.qZA()),2&t){const _=e.MAs(2);e.xp6(15),e.Q6J("ngbNavOutlet",_)}}function It(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,137),e.qZA())}function $t(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,138),e.qZA())}function Dt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"div",82),e.TgZ(2,"select",121),e.TgZ(3,"option",94),e.SDv(4,122),e.qZA(),e.YNc(5,mt,2,2,"option",86),e.qZA(),e.TgZ(6,"span",87),e.TgZ(7,"button",123),e.NdJ("click",function(){e.CHM(_);const n=e.oxw(4);return n.data.crushInfo=!n.data.crushInfo}),e._UZ(8,"i",89),e.qZA(),e.YNc(9,Ct,2,3,"button",90),e.YNc(10,Mt,3,3,"button",124),e.qZA(),e.qZA(),e.YNc(11,vt,16,1,"div",125),e.YNc(12,It,2,0,"span",13),e.YNc(13,$t,2,0,"span",13),e.qZA()}if(2&t){e.oxw(3);const _=e.MAs(2),o=e.oxw();e.xp6(3),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.current.rules),e.xp6(2),e.Q6J("ngClass",e.VKq(9,ye,o.data.crushInfo)),e.xp6(1),e.Q6J("ngClass",e.VKq(11,F,o.icons.questionCircle)),e.xp6(1),e.Q6J("ngIf",o.isReplicated&&!o.editing),e.xp6(1),e.Q6J("ngIf",o.isReplicated&&!o.editing),e.xp6(1),e.Q6J("ngIf",o.data.crushInfo&&o.form.getValue("crushRule")),e.xp6(1),e.Q6J("ngIf",o.form.showError("crushRule",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("crushRule",_,"tooFewOsds"))}}function Zt(t,i){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",115),e.SDv(2,118),e.qZA(),e.TgZ(3,"div",11),e.YNc(4,Rt,4,0,"ng-template",null,119,e.W1O),e.YNc(6,Dt,14,13,"div",112),e.qZA(),e.qZA()),2&t){const _=e.MAs(5),o=e.oxw(3);e.xp6(6),e.Q6J("ngIf",o.current.rules.length>0)("ngIfElse",_)}}function xt(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,79),e.qZA(),e.YNc(3,gt,16,13,"div",51),e.YNc(4,pt,6,0,"div",51),e.YNc(5,Zt,7,2,"div",51),e.qZA()),2&t){const _=e.oxw(2);e.xp6(3),e.Q6J("ngIf",_.isErasure),e.xp6(1),e.Q6J("ngIf",_.isErasure&&!_.editing),e.xp6(1),e.Q6J("ngIf",_.isReplicated||_.editing)}}function yt(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Ut(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,156),e.qZA())}function qt(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,157),e.qZA())}function Ht(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Gt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,158),e.qZA())}function zt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,159),e.qZA())}function Xt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,160),e.qZA())}function wt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,161),e.qZA())}function Qt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,162),e.qZA())}function Jt(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"div",8),e.TgZ(2,"label",144),e.SDv(3,145),e.qZA(),e.TgZ(4,"div",11),e.TgZ(5,"select",146),e.YNc(6,Ut,2,0,"option",84),e.YNc(7,qt,2,0,"option",84),e.YNc(8,Ht,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.TgZ(9,"div",8),e.TgZ(10,"label",147),e.SDv(11,148),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",149),e.YNc(14,Gt,2,0,"span",13),e.YNc(15,zt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(16,"div",8),e.TgZ(17,"label",150),e.SDv(18,151),e.qZA(),e.TgZ(19,"div",11),e._UZ(20,"input",152),e.YNc(21,Xt,2,0,"span",13),e.YNc(22,wt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",153),e.SDv(25,154),e.qZA(),e.TgZ(26,"div",11),e._UZ(27,"input",155),e.YNc(28,Qt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(6),e.Q6J("ngIf",!o.info.compression_algorithms),e.xp6(1),e.Q6J("ngIf",o.info.compression_algorithms&&0===o.info.compression_algorithms.length),e.xp6(1),e.Q6J("ngForOf",o.info.compression_algorithms),e.xp6(6),e.Q6J("ngIf",o.form.showError("minBlobSize",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("minBlobSize",_,"maximum")),e.xp6(6),e.Q6J("ngIf",o.form.showError("maxBlobSize",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("maxBlobSize",_,"minimum")),e.xp6(6),e.Q6J("ngIf",o.form.showError("ratio",_,"min")||o.form.showError("ratio",_,"max"))}}function kt(t,i){if(1&t&&(e.TgZ(0,"div",139),e.TgZ(1,"legend"),e.SDv(2,140),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"label",141),e.SDv(5,142),e.qZA(),e.TgZ(6,"div",11),e.TgZ(7,"select",143),e.YNc(8,yt,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,Jt,29,8,"div",20),e.qZA()),2&t){const _=e.oxw(2);e.xp6(8),e.Q6J("ngForOf",_.info.compression_modes),e.xp6(1),e.Q6J("ngIf",_.hasCompressionEnabled())}}function Vt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,163),e.qZA())}function Yt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.YNc(14,qo,2,0,"span",13),e.YNc(15,Ho,2,0,"span",13),e.YNc(16,Go,2,0,"span",13),e.YNc(17,zo,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(18,"div",8),e.TgZ(19,"label",14),e.SDv(20,15),e.qZA(),e.TgZ(21,"div",11),e.TgZ(22,"select",16),e.TgZ(23,"option",17),e.SDv(24,18),e.qZA(),e.YNc(25,Xo,2,2,"option",19),e.qZA(),e.YNc(26,wo,2,0,"span",13),e.qZA(),e.qZA(),e.YNc(27,ot,10,4,"div",20),e.TgZ(28,"div",8),e.TgZ(29,"label",21),e.SDv(30,22),e.qZA(),e.TgZ(31,"div",11),e.TgZ(32,"cd-select-badges",23),e.NdJ("selection",function(){return e.CHM(_),e.oxw().appSelection()}),e.qZA(),e.YNc(33,tt,1,3,"i",24),e.qZA(),e.qZA(),e.YNc(34,xt,6,3,"div",20),e.YNc(35,kt,10,2,"div",25),e.TgZ(36,"div"),e.TgZ(37,"legend"),e.SDv(38,26),e.qZA(),e.TgZ(39,"div",8),e.TgZ(40,"label",27),e.ynx(41),e.SDv(42,28),e.BQk(),e.TgZ(43,"cd-helper"),e.TgZ(44,"span"),e.SDv(45,29),e.qZA(),e._UZ(46,"br"),e.TgZ(47,"span"),e.SDv(48,30),e.qZA(),e.qZA(),e.qZA(),e.TgZ(49,"div",11),e._UZ(50,"input",31),e.qZA(),e.qZA(),e.TgZ(51,"div",8),e.TgZ(52,"label",32),e.ynx(53),e.SDv(54,33),e.BQk(),e.TgZ(55,"cd-helper"),e.TgZ(56,"span"),e.SDv(57,34),e.qZA(),e._UZ(58,"br"),e.TgZ(59,"span"),e.SDv(60,35),e.qZA(),e.qZA(),e.qZA(),e.TgZ(61,"div",11),e._UZ(62,"input",36),e.YNc(63,Vt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(64,"div",37),e.TgZ(65,"cd-rbd-configuration-form",38),e.NdJ("changes",function(n){return e.CHM(_),e.oxw().currentConfigurationValues=n()}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(66,"div",39),e.TgZ(67,"cd-form-button-panel",40),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().submit()}),e.ALo(68,"titlecase"),e.ALo(69,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.form),e.xp6(6),e.pQV(e.lcZ(6,25,o.action))(e.lcZ(7,27,o.resource)),e.QtT(5),e.xp6(7),e.Q6J("ngIf",o.form.showError("name",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"uniqueName")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"rbdPool")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"pattern")),e.xp6(8),e.Q6J("ngForOf",o.data.poolTypes),e.xp6(1),e.Q6J("ngIf",o.form.showError("poolType",_,"required")),e.xp6(1),e.Q6J("ngIf",o.isReplicated||o.isErasure),e.xp6(5),e.Q6J("customBadges",!0)("customBadgeValidators",o.data.applications.validators)("messages",o.data.applications.messages)("data",o.data.applications.selected)("options",o.data.applications.available)("selectionLimit",4),e.xp6(1),e.Q6J("ngIf",o.data.applications.selected<=0),e.xp6(1),e.Q6J("ngIf",o.isErasure||o.isReplicated),e.xp6(1),e.Q6J("ngIf",o.info.is_all_bluestore),e.xp6(28),e.Q6J("ngIf",o.form.showError("max_objects",_,"min")),e.xp6(1),e.Q6J("hidden",o.isErasure||-1===o.data.applications.selected.indexOf("rbd")),e.xp6(1),e.Q6J("form",o.form)("initializeData",o.initializeConfigData),e.xp6(2),e.Q6J("form",o.form)("submitText",e.lcZ(68,29,o.action)+" "+e.lcZ(69,31,o.resource))}}let Ue=(()=>{class t extends R_.E{constructor(_,o,n,s,c,d,P,p,R,h,T){super(),this.dimlessBinaryPipe=_,this.route=o,this.router=n,this.modalService=s,this.poolService=c,this.authStorageService=d,this.formatter=P,this.taskWrapper=p,this.ecpService=R,this.crushRuleService=h,this.actionLabels=T,this.editing=!1,this.isReplicated=!1,this.isErasure=!1,this.data=new No,this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new E_.t(1),this.currentConfigurationValues={},this.icons=b.P,this.crushUsage=void 0,this.ecpUsage=void 0,this.crushRuleMaxSize=10,this.editing=this.router.url.startsWith(`/pool/${M.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource="pool",this.authenticate(),this.createForm()}authenticate(){if(this.permission=this.authStorageService.getPermissions().pool,!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)throw new g_._2}createForm(){const _=new be.d({mode:new a.NI("none"),algorithm:new a.NI(""),minBlobSize:new a.NI("",{updateOn:"blur"}),maxBlobSize:new a.NI("",{updateOn:"blur"}),ratio:new a.NI("",{updateOn:"blur"})});this.form=new be.d({name:new a.NI("",{validators:[a.kI.pattern(/^[.A-Za-z0-9_/-]+$/),a.kI.required,E.h.custom("rbdPool",()=>this.form&&this.form.getValue("name").includes("/")&&this.data&&-1!==this.data.applications.selected.indexOf("rbd"))]}),poolType:new a.NI("",{validators:[a.kI.required]}),crushRule:new a.NI(null,{validators:[E.h.custom("tooFewOsds",o=>this.info&&o&&this.info.osd_count<1),E.h.custom("required",o=>this.isReplicated&&this.info.crush_rules_replicated.length>0&&!o)]}),size:new a.NI("",{updateOn:"blur"}),erasureProfile:new a.NI(null),pgNum:new a.NI("",{validators:[a.kI.required]}),pgAutoscaleMode:new a.NI(null),ecOverwrites:new a.NI(!1),compression:_,max_bytes:new a.NI(""),max_objects:new a.NI(0)},[E.h.custom("form",()=>null)])}ngOnInit(){this.poolService.getInfo().subscribe(_=>{this.initInfo(_),this.editing?this.initEditMode():(this.setAvailableApps(),this.loadingReady()),this.listenToChanges(),this.setComplexValidators()})}initInfo(_){this.pgAutoscaleModes=_.pg_autoscale_modes,this.form.silentSet("pgAutoscaleMode",_.pg_autoscale_default_mode),this.form.silentSet("algorithm",_.bluestore_compression_algorithm),this.info=_,this.initEcp(_.erasure_code_profiles)}initEcp(_){this.setListControlStatus("erasureProfile",_),this.ecProfiles=_}setListControlStatus(_,o){const n=this.form.get(_),s=n.value;1!==o.length||s&&u().isEqual(s,o[0])?0===o.length&&s&&n.setValue(null):n.setValue(o[0]),o.length<=1?n.enabled&&n.disable():n.disabled&&n.enable()}initEditMode(){this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(_=>this.poolService.get(_.name).subscribe(o=>{this.data.pool=o,this.initEditFormData(o),this.loadingReady()}))}disableForEdit(){["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(_=>this.form.get(_).disable())}initEditFormData(_){this.initializeConfigData.next({initialData:_.configuration,sourceType:m_.h.pool}),this.poolTypeChange(_.type);const o=this.info.crush_rules_replicated.concat(this.info.crush_rules_erasure),n={name:_.pool_name,poolType:_.type,crushRule:o.find(s=>s.rule_name===_.crush_rule),size:_.size,erasureProfile:this.ecProfiles.find(s=>s.name===_.erasure_code_profile),pgAutoscaleMode:_.pg_autoscale_mode,pgNum:_.pg_num,ecOverwrites:_.flags_names.includes("ec_overwrites"),mode:_.options.compression_mode,algorithm:_.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(_.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(_.options.compression_max_blob_size),ratio:_.options.compression_required_ratio,max_bytes:this.dimlessBinaryPipe.transform(_.quota_max_bytes),max_objects:_.quota_max_objects};Object.keys(n).forEach(s=>{const c=n[s];!u().isUndefined(c)&&""!==c&&this.form.silentSet(s,c)}),this.data.pgs=this.form.getValue("pgNum"),this.setAvailableApps(this.data.applications.default.concat(_.application_metadata)),this.data.applications.selected=_.application_metadata}setAvailableApps(_=this.data.applications.default){this.data.applications.available=u().uniq(_.sort()).map(o=>new p_.$(!1,o,""))}listenToChanges(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()}listenToChangesDuringAddEdit(){this.form.get("pgNum").valueChanges.subscribe(_=>{const o=_-this.data.pgs;1===Math.abs(o)&&2!==_?this.doPgPowerJump(o):this.data.pgs=_})}doPgPowerJump(_){const o=this.calculatePgPower()+_;this.setPgs(-1===_?Math.round(o):Math.floor(o))}calculatePgPower(_=this.form.getValue("pgNum")){return Math.log(_)/Math.log(2)}setPgs(_){const o=Math.pow(2,_<0?0:_);this.data.pgs=o,this.form.silentSet("pgNum",o)}listenToChangesDuringAdd(){this.form.get("poolType").valueChanges.subscribe(_=>{this.poolTypeChange(_)}),this.form.get("crushRule").valueChanges.subscribe(_=>{this.crushDeletionBtn&&this.crushDeletionBtn.isOpen()&&this.crushDeletionBtn.close(),_&&(this.setCorrectMaxSize(_),this.crushRuleIsUsedBy(_.rule_name),this.replicatedRuleChange(),this.pgCalc())}),this.form.get("size").valueChanges.subscribe(()=>{this.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(_=>{this.ecpDeletionBtn&&this.ecpDeletionBtn.isOpen()&&this.ecpDeletionBtn.close(),_&&(this.ecpIsUsedBy(_.name),this.pgCalc())}),this.form.get("mode").valueChanges.subscribe(()=>{["minBlobSize","maxBlobSize","ratio"].forEach(_=>{this.form.get(_).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(()=>{this.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(()=>{this.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})}poolTypeChange(_){if("replicated"===_?this.setTypeBooleans(!0,!1):this.setTypeBooleans(!1,"erasure"===_),!_||!this.info)return void(this.current.rules=[]);const o=this.info["crush_rules_"+_]||[];this.current.rules=o,!this.editing&&(this.isReplicated&&this.setListControlStatus("crushRule",o),this.replicatedRuleChange(),this.pgCalc())}setTypeBooleans(_,o){this.isReplicated=_,this.isErasure=o}replicatedRuleChange(){if(!this.isReplicated)return;const _=this.form.get("size");let o=this.form.getValue("size")||3;const n=this.getMinSize(),s=this.getMaxSize();o<n?o=n:o>s&&(o=s),o!==_.value&&this.form.silentSet("size",o)}getMinSize(){return!this.info||this.info.osd_count<1?0:1}getMaxSize(){const _=this.form.getValue("crushRule");return this.info?_?_.usable_size:Math.min(this.info.osd_count,3):0}pgCalc(){const _=this.form.getValue("poolType");if(!this.info||this.form.get("pgNum").dirty||!_)return;const o=100*this.info.osd_count,n=this.isReplicated?this.replicatedPgCalc(o):this.erasurePgCalc(o);if(!n)return;const s=this.data.pgs;this.alignPgs(n),this.externalPgChange||(this.externalPgChange=s!==this.data.pgs)}setCorrectMaxSize(_=this.form.getValue("crushRule")){if(!_)return;const n=S.searchFailureDomains(this.info.nodes,_.steps[0].item_name)[_.steps[1].type];_.usable_size=Math.min(n?n.length:this.crushRuleMaxSize,this.crushRuleMaxSize)}replicatedPgCalc(_){const o=this.form.get("size"),n=o.value;return o.valid&&n>0?_/n:0}erasurePgCalc(_){const o=this.form.get("erasureProfile"),n=o.value;return(o.valid||o.disabled)&&n?_/(n.k+n.m):0}alignPgs(_=this.form.getValue("pgNum")){this.setPgs(Math.round(this.calculatePgPower(_<1?1:_)))}setComplexValidators(){this.editing?this.form.get("name").setValidators([this.form.get("name").validator,E.h.custom("uniqueName",_=>this.data.pool&&this.info&&-1!==this.info.pool_names.indexOf(_)&&this.info.pool_names.indexOf(_)!==this.info.pool_names.indexOf(this.data.pool.pool_name))]):(E.h.validateIf(this.form.get("size"),()=>this.isReplicated,[E.h.custom("min",_=>this.form.getValue("size")&&_<this.getMinSize()),E.h.custom("max",_=>this.form.getValue("size")&&this.getMaxSize()<_)]),this.form.get("name").setValidators([this.form.get("name").validator,E.h.custom("uniqueName",_=>this.info&&-1!==this.info.pool_names.indexOf(_))])),this.setCompressionValidators()}setCompressionValidators(){E.h.validateIf(this.form.get("minBlobSize"),()=>this.hasCompressionEnabled(),[a.kI.min(0),E.h.custom("maximum",_=>this.oddBlobSize(_,this.form.getValue("maxBlobSize")))]),E.h.validateIf(this.form.get("maxBlobSize"),()=>this.hasCompressionEnabled(),[a.kI.min(0),E.h.custom("minimum",_=>this.oddBlobSize(this.form.getValue("minBlobSize"),_))]),E.h.validateIf(this.form.get("ratio"),()=>this.hasCompressionEnabled(),[a.kI.min(0),a.kI.max(1)])}oddBlobSize(_,o){const n=this.formatter.toBytes(_),s=this.formatter.toBytes(o);return Boolean(n&&s&&n>=s)}hasCompressionEnabled(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()}describeCrushStep(_){return[_.op.replace("_"," "),_.item_name||"",_.type?_.num+" type "+_.type:""].join(" ")}addErasureCodeProfile(){this.addModal(Ao,_=>this.reloadECPs(_))}addModal(_,o){this.hideOpenTooltips(),this.modalService.show(_).componentInstance.submitAction.subscribe(s=>{o(s.name)})}hideOpenTooltips(){const _=o=>o&&o.isOpen()&&o.close();_(this.ecpDeletionBtn),_(this.crushDeletionBtn)}reloadECPs(_){this.reloadList({newItemName:_,getInfo:()=>this.ecpService.list(),initInfo:o=>this.initEcp(o),findNewItem:()=>this.ecProfiles.find(o=>o.name===_),controlName:"erasureProfile"})}reloadList({newItemName:_,getInfo:o,initInfo:n,findNewItem:s,controlName:c}){this.modalSubscription&&this.modalSubscription.unsubscribe(),o().subscribe(d=>{if(n(d),!_)return;const P=s();P&&this.form.get(c).setValue(P)})}deleteErasureCodeProfile(){this.deletionModal({value:this.form.getValue("erasureProfile"),usage:this.ecpUsage,deletionBtn:this.ecpDeletionBtn,dataName:"erasureInfo",getTabs:()=>this.ecpInfoTabs,tabPosition:"used-by-pools",nameAttribute:"name",itemDescription:"erasure code profile",reloadFn:()=>this.reloadECPs(),deleteFn:_=>this.ecpService.delete(_),taskName:"ecp/delete"})}deletionModal({value:_,usage:o,deletionBtn:n,dataName:s,getTabs:c,tabPosition:d,nameAttribute:P,itemDescription:p,reloadFn:R,deleteFn:h,taskName:T}){if(!_)return;if(o)return n.animation=!1,n.toggle(),this.data[s]=!0,void setTimeout(()=>{const f=c();f&&f.select(d)},50);const m=_[P];this.modalService.show(Ne.M,{itemDescription:p,itemNames:[m],submitActionObservable:()=>{const f=h(m);return f.subscribe(()=>R()),this.taskWrapper.wrapTaskAroundCall({task:new v.R(T,{name:m}),call:f})}})}addCrushRule(){this.addModal($_,_=>this.reloadCrushRules(_))}reloadCrushRules(_){this.reloadList({newItemName:_,getInfo:()=>this.poolService.getInfo(),initInfo:o=>{this.initInfo(o),this.poolTypeChange("replicated")},findNewItem:()=>this.info.crush_rules_replicated.find(o=>o.rule_name===_),controlName:"crushRule"})}deleteCrushRule(){this.deletionModal({value:this.form.getValue("crushRule"),usage:this.crushUsage,deletionBtn:this.crushDeletionBtn,dataName:"crushInfo",getTabs:()=>this.crushInfoTabs,tabPosition:"used-by-pools",nameAttribute:"rule_name",itemDescription:"crush rule",reloadFn:()=>this.reloadCrushRules(),deleteFn:_=>this.crushRuleService.delete(_),taskName:"crushRule/delete"})}crushRuleIsUsedBy(_){this.crushUsage=_?this.info.used_rules[_]:void 0}ecpIsUsedBy(_){this.ecpUsage=_?this.info.used_profiles[_]:void 0}submit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _={pool:this.form.getValue("name")};this.assignFormFields(_,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_autoscale_mode",formControlName:"pgAutoscaleMode",editable:!0},{externalFieldName:"pg_num",formControlName:"pgNum",replaceFn:n=>"on"===this.form.getValue("pgAutoscaleMode")?1:n,editable:!0},this.isReplicated?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",replaceFn:n=>this.isReplicated?n&&n.rule_name:void 0},{externalFieldName:"quota_max_bytes",formControlName:"max_bytes",replaceFn:this.formatter.toBytes,editable:!0,resetValue:this.editing?0:void 0},{externalFieldName:"quota_max_objects",formControlName:"max_objects",editable:!0,resetValue:this.editing?0:void 0}]),this.info.is_all_bluestore&&(this.assignFormField(_,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:()=>this.isErasure?["ec_overwrites"]:void 0}),"none"!==this.form.getValue("mode")?this.assignFormFields(_,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:n=>this.hasCompressionEnabled()&&n},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(_,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:()=>"unset"},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:()=>this.data.pool.pool_name}]));const o=this.data.applications.selected;(o.length>0||this.editing)&&(_.application_metadata=o),this.isReplicated&&!u().isEmpty(this.currentConfigurationValues)&&(_.configuration=this.currentConfigurationValues),this.triggerApiTask(_)}assignFormFields(_,o){o.forEach(n=>this.assignFormField(_,n))}assignFormField(_,{externalFieldName:o,formControlName:n,attr:s,replaceFn:c,editable:d,resetValue:P}){if(this.editing&&(!d||this.form.get(n).pristine))return;const p=this.form.getValue(n);let R=c?c(p):s?u().get(p,s):p;if(!p||!R){if(!d||u().isUndefined(P))return;R=P}_[o]=R}triggerApiTask(_){this.taskWrapper.wrapTaskAroundCall({task:new v.R("pool/"+(this.editing?M.MQ.EDIT:M.MQ.CREATE),{pool_name:_.hasOwnProperty("srcpool")?_.srcpool:_.pool}),call:this.poolService[this.editing?M.MQ.UPDATE:M.MQ.CREATE](_)}).subscribe({error:o=>{u().isObject(o.error)&&"34"===o.error.code&&this.form.get("pgNum").setErrors({34:!0}),this.form.setErrors({cdSubmitButton:!0})},complete:()=>this.router.navigate(["/pool"])})}appSelection(){this.form.get("name").updateValueAndValidity({emitEvent:!1,onlySelf:!0})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(C_.$),e.Y36(Oe.gz),e.Y36(Oe.F0),e.Y36(Ze.Z),e.Y36(ue.q),e.Y36(he.j),e.Y36(M_.H),e.Y36(de.P),e.Y36(Me),e.Y36(Ie.H),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-form"]],viewQuery:function(_,o){if(1&_&&(e.Gf(Zo,5),e.Gf(xo,5),e.Gf(yo,5),e.Gf(Uo,5)),2&_){let n;e.iGM(n=e.CRH())&&(o.crushInfoTabs=n.first),e.iGM(n=e.CRH())&&(o.crushDeletionBtn=n.first),e.iGM(n=e.CRH())&&(o.ecpInfoTabs=n.first),e.iGM(n=e.CRH())&&(o.ecpDeletionBtn=n.first)}},features:[e.qOj],decls:1,vars:1,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m,f,A,I,$,D,Z,x,y,U,q,H,G,z,X,w,Q,J,k,V,Y,B,j,K,N,W,ee,_e,oe,te,ie,ne,se,ae,le,re,ce,O,Xe,we,Qe,Je,ke,Ve,Ye,Be,je,Ke,We,e_,__,o_,t_,i_,n_,s_,a_,l_,r_,c_,O_;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Name...",n="Pool type",s="-- Select a pool type --",c="Applications",d="Pools should be associated with an application tag",P="Quotas",p="Max bytes",R="Leave it blank or specify 0 to disable this quota.",h="A valid quota should be greater than 0.",T="e.g., 10GiB",m="Max objects",f="Leave it blank or specify 0 to disable this quota.",A="A valid quota should be greater than 0.",I="This field is required!",$="The chosen Ceph pool name is already in use.",D="It's not possible to create an RBD pool with '/' in the name. Please change the name or remove 'rbd' from the applications list.",Z="Pool name can only contain letters, numbers, '.', '-', '_' or '/'.",x="This field is required!",y="PG Autoscale",U="Placement groups",q="Calculation help",H="This field is required!",G="At least one placement group is needed!",z="Your cluster can't handle this many PGs. Please recalculate the PG amount needed.",X="The current PGs settings were calculated for you, you should make sure the values suit your needs before submit.",w="Replicated size",Q="Minimum: " + "\ufffd0\ufffd" + "",J="Maximum: " + "\ufffd0\ufffd" + "",k="The size specified is out of range. A value from " + "\ufffd0\ufffd" + " to " + "\ufffd1\ufffd" + " is usable.",V="A size of 1 will not create a replication of the object. The 'Replicated size' includes the object itself.",Y="Flags",B="EC Overwrites",j="CRUSH",K="Erasure code profile",N="This profile can't be deleted as it is in use.",W="Loading...",ee="-- No erasure code profile available --",_e="-- Select an erasure code profile --",oe="Profile",te="Used by pools",ie="Profile is not in use.",ne="Crush ruleset",se="A new crush ruleset will be implicitly created.",ae="Crush ruleset",le="There are no rules.",re="-- Select a crush rule --",ce="Placement and\n                            replication strategies or distribution policies that allow to\n                            specify how CRUSH places data replicas.",O="This rule can't be deleted as it is in use.",Xe="Crush rule",we="Crush steps",Qe="Used by pools",Je="Rule is not in use.",ke="This field is required!",Ve="The rule can't be used in the current cluster as it has too few OSDs to meet the minimum required OSD by this rule.",Ye="Compression",Be="Mode",je="Algorithm",Ke="Minimum blob size",We="e.g., 128KiB",e_="Maximum blob size",__="e.g., 512KiB",o_="Ratio",t_="Compression ratio",i_="Loading...",n_="-- No erasure compression algorithm available --",s_="Value should be greater than 0",a_="Value should be less than the maximum blob size",l_="Value should be greater than 0",r_="Value should be greater than the minimum blob size",c_="Value should be between 0.0 and 1.0",O_="The value should be greater or equal to 0",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],i,[1,"card-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],_,[1,"cd-col-form-input"],["id","name","name","name","type","text","placeholder",o,"formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","poolType",1,"cd-col-form-label","required"],n,["id","poolType","formControlName","poolType","name","poolType",1,"form-control"],["ngValue",""],s,[3,"value",4,"ngFor","ngForOf"],[4,"ngIf"],["for","applications",1,"cd-col-form-label"],c,["id","applications",3,"customBadges","customBadgeValidators","messages","data","options","selectionLimit","selection"],["title",d,3,"class",4,"ngIf"],["formGroupName","compression",4,"ngIf"],P,["for","max_bytes",1,"cd-col-form-label"],p,R,h,["id","max_bytes","name","max_bytes","type","text","formControlName","max_bytes","placeholder",T,"defaultUnit","GiB","cdDimlessBinary","",1,"form-control"],["for","max_objects",1,"cd-col-form-label"],m,f,A,["id","max_objects","min","0","name","max_objects","type","number","formControlName","max_objects",1,"form-control"],[3,"hidden"],[3,"form","initializeData","changes"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],I,$,D,Z,[3,"value"],x,["for","pgAutoscaleMode",1,"cd-col-form-label"],y,["id","pgAutoscaleMode","name","pgAutoscaleMode","formControlName","pgAutoscaleMode",1,"form-control"],["class","form-group row",4,"ngIf"],["for","pgNum",1,"cd-col-form-label","required"],U,["id","pgNum","name","pgNum","formControlName","pgNum","min","1","type","number","required","",1,"form-control",3,"focus","blur"],[1,"form-text","text-muted"],["section","pgs","docText",q],["class","form-text text-muted",4,"ngIf"],H,G,z,X,["for","size",1,"cd-col-form-label","required"],w,["id","size","name","size","type","number","formControlName","size",1,"form-control",3,"max","min"],["class","text-warning-dark",4,"ngIf"],[1,"list-inline"],Q,J,k,[1,"text-warning-dark"],V,[1,"cd-col-form-label"],Y,[1,"custom-control","custom-checkbox"],["type","checkbox","id","ec-overwrites","formControlName","ecOverwrites",1,"custom-control-input"],["for","ec-overwrites",1,"custom-control-label"],B,["title",d],j,["for","erasureProfile",1,"cd-col-form-label"],K,[1,"input-group"],["id","erasureProfile","name","erasureProfile","formControlName","erasureProfile",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"input-group-append"],["id","ecp-info-button","type","button",1,"btn","btn-light",3,"ngClass","click"],["aria-hidden","true",3,"ngClass"],["class","btn btn-light","type","button",3,"click",4,"ngIf"],["class","btn btn-light","type","button","ngbTooltip",N,"triggers","manual",3,"click",4,"ngIf"],["class","form-text text-muted","id","ecp-info-block",4,"ngIf"],W,[3,"ngValue"],ee,_e,["type","button",1,"btn","btn-light",3,"click"],["type","button","ngbTooltip",N,"triggers","manual",1,"btn","btn-light",3,"click"],["ecpDeletionBtn","ngbTooltip"],["id","ecp-info-block",1,"form-text","text-muted"],["ngbNav","",1,"nav-tabs"],["ecpInfoTabs","ngbNav"],["ngbNavItem","ecp-info"],["ngbNavLink",""],oe,["ngbNavContent",""],["ngbNavItem","used-by-pools"],te,[3,"ngbNavOutlet"],[3,"renderObjects","hideKeys","data","autoReload"],["ecpIsNotUsed",""],[4,"ngIf","ngIfElse"],ie,[4,"ngFor","ngForOf"],["for","crushRule",1,"cd-col-form-label"],ne,se,ae,["noRules",""],le,["id","crushRule","formControlName","crushRule","name","crushSet",1,"form-control"],re,["id","crush-info-button","type","button","ngbTooltip",ce,1,"btn","btn-light",3,"ngClass","click"],["class","btn btn-light","type","button","ngbTooltip",O,"triggers","manual",3,"click",4,"ngIf"],["class","form-text text-muted","id","crush-info-block",4,"ngIf"],["type","button","ngbTooltip",O,"triggers","manual",1,"btn","btn-light",3,"click"],["crushDeletionBtn","ngbTooltip"],["id","crush-info-block",1,"form-text","text-muted"],["crushInfoTabs","ngbNav"],["ngbNavItem","crush-rule-info"],Xe,["ngbNavItem","crush-rule-steps"],we,Qe,["ruleIsNotUsed",""],Je,ke,Ve,["formGroupName","compression"],Ye,["for","mode",1,"cd-col-form-label"],Be,["id","mode","name","mode","formControlName","mode",1,"form-control"],["for","algorithm",1,"cd-col-form-label"],je,["id","algorithm","name","algorithm","formControlName","algorithm",1,"form-control"],["for","minBlobSize",1,"cd-col-form-label"],Ke,["id","minBlobSize","name","minBlobSize","formControlName","minBlobSize","type","text","min","0","placeholder",We,"defaultUnit","KiB","cdDimlessBinary","",1,"form-control"],["for","maxBlobSize",1,"cd-col-form-label"],e_,["id","maxBlobSize","type","text","min","0","formControlName","maxBlobSize","placeholder",__,"defaultUnit","KiB","cdDimlessBinary","",1,"form-control"],["for","ratio",1,"cd-col-form-label"],o_,["id","ratio","name","ratio","formControlName","ratio","type","number","min","0","max","1","step","0.1","placeholder",t_,1,"form-control"],i_,n_,s_,a_,l_,r_,c_,O_]},template:function(_,o){1&_&&e.YNc(0,Yt,70,33,"div",0),2&_&&e.Q6J("cdFormLoading",o.loading)},directives:[bo.y,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,a.EJ,a.YN,a.Kr,C.sg,vo.m,Re.S,Io.Q,a.qQ,a.wV,$o.d,me.p,a.Q7,Do.K,a.Fd,a.Wl,C.mk,g._L,g.Pz,g.nv,g.Vx,g.uN,g.tO,xe.b,a.x0],pipes:[C.rS,Ce.m],styles:[".icon-warning-color[_ngcontent-%COMP%]{margin-left:3px}"]}),t})();var Bt=r(19773),jt=r(49671),Kt=r(68136),Te=r(69158),Se=r(64337),L=r(99466),Wt=r(91801),ei=r(68774),_i=r(66369),qe=r(38047),Le=r(51847);class oi{constructor(i){this.pool_name=i}}var ti=r(64724);let ii=(()=>{class t{constructor(_,o,n){this.templateRef=_,this.viewContainer=o,this.authStorageService=n,this.cdScopeMatchAll=!0}set cdScope(_){this.permissions=this.authStorageService.getPermissions(),this.isAuthorized(_)?this.viewContainer.createEmbeddedView(this.templateRef):this.viewContainer.clear()}isAuthorized(_){const o=this.cdScopeMatchAll?u().every:u().some;return u().isString(_)?u().get(this.permissions,[_,"read"],!1):u().isArray(_)?o(_,n=>this.permissions[n].read):!!u().isObject(_)&&o(_,(n,s)=>o(n,c=>this.permissions[s][c]))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(e.Rgc),e.Y36(e.s_b),e.Y36(he.j))},t.\u0275dir=e.lG2({type:t,selectors:[["","cdScope",""]],inputs:{cdScope:"cdScope",cdScopeMatchAll:"cdScopeMatchAll"}}),t})();var ni=r(94928),He=r(51295),si=r(59376),Ge=r(76317),ai=r(71752);function li(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",12),2&t){const _=e.oxw(2);e.Q6J("renderObjects",!0)("data",_.poolDetails)("autoReload",!1)}}function ri(t,i){if(1&t&&e._UZ(0,"cd-grafana",15),2&t){const _=e.oxw(3);e.MGl("grafanaPath","ceph-pool-detail?var-pool_name=",_.selection.pool_name,"")}}function ci(t,i){1&t&&(e.TgZ(0,"li",13),e.TgZ(1,"a",5),e.SDv(2,14),e.qZA(),e.YNc(3,ri,1,1,"ng-template",7),e.qZA())}function Oi(t,i){if(1&t&&e._UZ(0,"cd-rbd-configuration-table",18),2&t){const _=e.oxw(3);e.Q6J("data",_.selectedPoolConfiguration)}}function di(t,i){1&t&&(e.TgZ(0,"li",16),e.TgZ(1,"a",5),e.SDv(2,17),e.qZA(),e.YNc(3,Oi,1,1,"ng-template",7),e.qZA())}function ui(t,i){if(1&t&&e._UZ(0,"cd-table",21),2&t){const _=e.oxw(3);e.Q6J("data",_.cacheTiers)("columns",_.cacheTierColumns)("autoSave",!1)}}function fi(t,i){1&t&&(e.TgZ(0,"li",19),e.TgZ(1,"a",5),e.SDv(2,20),e.qZA(),e.YNc(3,ui,1,3,"ng-template",7),e.qZA())}function Pi(t,i){if(1&t&&(e.ynx(0,1),e.TgZ(1,"ul",2,3),e.TgZ(3,"li",4),e.TgZ(4,"a",5),e.SDv(5,6),e.qZA(),e.YNc(6,li,1,3,"ng-template",7),e.qZA(),e.YNc(7,ci,4,0,"li",8),e.YNc(8,di,4,0,"li",9),e.YNc(9,fi,4,0,"li",10),e.qZA(),e._UZ(10,"div",11),e.BQk()),2&t){const _=e.MAs(2),o=e.oxw();e.xp6(7),e.Q6J("ngIf",o.permissions.grafana.read),e.xp6(1),e.Q6J("ngIf","replicated"===o.selection.type),e.xp6(1),e.Q6J("ngIf",(null==o.selection.tiers?null:o.selection.tiers.length)>0),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Ei=(()=>{class t{constructor(_){this.poolService=_,this.cacheTierColumns=[],this.omittedPoolAttributes=["cdExecuting","cdIsBinary","stats"],this.cacheTierColumns=[{prop:"pool_name",name:"Name",flexGrow:3},{prop:"cache_mode",name:"Cache Mode",flexGrow:2},{prop:"cache_min_evict_age",name:"Min Evict Age",flexGrow:2},{prop:"cache_min_flush_age",name:"Min Flush Age",flexGrow:2},{prop:"target_max_bytes",name:"Target Max Bytes",flexGrow:2},{prop:"target_max_objects",name:"Target Max Objects",flexGrow:2}]}ngOnChanges(){this.selection&&(this.poolService.getConfiguration(this.selection.pool_name).subscribe(_=>{He.T.updateChanged(this,{selectedPoolConfiguration:_})}),He.T.updateChanged(this,{poolDetails:u().omit(this.selection,this.omittedPoolAttributes)}))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ue.q))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-details"]],inputs:{cacheTiers:"cacheTiers",permissions:"permissions",selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let i,_,o,n;return i="Details",_="Performance Details",o="Configuration",n="Cache Tiers Details",[["cdTableDetail","",4,"ngIf"],["cdTableDetail",""],["ngbNav","","cdStatefulTab","pool-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],i,["ngbNavContent",""],["ngbNavItem","performance-details",4,"ngIf"],["ngbNavItem","configuration",4,"ngIf"],["ngbNavItem","cache-tiers-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"renderObjects","data","autoReload"],["ngbNavItem","performance-details"],_,["uid","-xyV8KCiz","grafanaStyle","three",3,"grafanaPath"],["ngbNavItem","configuration"],o,[3,"data"],["ngbNavItem","cache-tiers-details"],n,["columnMode","flex",3,"data","columns","autoSave"]]},template:function(_,o){1&_&&e.YNc(0,Pi,11,4,"ng-container",0),2&_&&e.Q6J("ngIf",o.selection)},directives:[C.O5,g.Pz,si.m,g.nv,g.Vx,g.uN,g.tO,xe.b,Ge.F,ai.P,Se.a],styles:[""],changeDetection:0}),t})();var gi=r(60251);const pi=["poolUsageTpl"],Ri=["poolConfigurationSourceTpl"];function mi(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",9,10),e.NdJ("fetchData",function(){return e.CHM(_),e.oxw().taskListService.fetch()})("setExpandedRow",function(n){return e.CHM(_),e.oxw().setExpandedRow(n)})("updateSelection",function(n){return e.CHM(_),e.oxw().updateSelection(n)}),e._UZ(2,"cd-table-actions",11),e._UZ(3,"cd-pool-details",12),e.qZA()}if(2&t){const _=e.oxw();e.Q6J("data",_.pools)("columns",_.columns)("hasDetails",!0)("status",_.tableStatus)("autoReload",-1),e.xp6(2),e.Q6J("permission",_.permissions.pool)("selection",_.selection)("tableActions",_.tableActions),e.xp6(1),e.Q6J("selection",_.expandedRow)("permissions",_.permissions)("cacheTiers",_.cacheTiers)}}function Ci(t,i){1&t&&e._UZ(0,"cd-grafana",14),2&t&&e.Q6J("grafanaPath","ceph-pools-overview?")}function Mi(t,i){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,13),e.qZA(),e.YNc(3,Ci,1,1,"ng-template",5),e.qZA())}function hi(t,i){if(1&t&&e._UZ(0,"cd-usage-bar",16),2&t){const _=e.oxw().row;e.Q6J("total",_.stats.bytes_used.latest+_.stats.avail_raw.latest)("used",_.stats.bytes_used.latest)}}function Ti(t,i){if(1&t&&e.YNc(0,hi,1,2,"cd-usage-bar",15),2&t){const _=i.row;e.Q6J("ngIf",null==_.stats||null==_.stats.avail_raw?null:_.stats.avail_raw.latest)}}let Si=(()=>{class t extends Kt.o{constructor(_,o,n,s,c,d,P,p,R,h,T){super(),this.poolService=_,this.taskWrapper=o,this.ecpService=n,this.authStorageService=s,this.taskListService=c,this.modalService=d,this.pgCategoryService=P,this.dimlessPipe=p,this.urlBuilder=R,this.configurationService=h,this.actionLabels=T,this.selection=new ei.r,this.executingTasks=[],this.tableStatus=new Te.E,this.cacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:b.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:b.P.edit,routerLink:()=>this.urlBuilder.getEdit(encodeURIComponent(this.selection.first().pool_name)),name:this.actionLabels.EDIT},{permission:"delete",icon:b.P.destroy,click:()=>this.deletePoolModal(),name:this.actionLabels.DELETE,disable:this.getDisableDesc.bind(this)}],this.permissions.configOpt.read&&this.configurationService.get("mon_allow_pool_delete").subscribe(m=>{if(u().has(m,"value")){const f=u().find(m.value,A=>"mon"===A.section)||{value:!1};this.monAllowPoolDelete="true"===f.value}})}ngOnInit(){const _=(o,n,s)=>u().get(n,o)>u().get(s,o)?1:-1;this.columns=[{prop:"pool_name",name:"Name",flexGrow:4,cellTransformation:L.e.executing},{prop:"data_protection",name:"Data Protection",cellTransformation:L.e.badge,customTemplateConfig:{class:"badge-background-gray"},flexGrow:1.3},{prop:"application_metadata",name:"Applications",cellTransformation:L.e.badge,customTemplateConfig:{class:"badge-background-primary"},flexGrow:1.5},{prop:"pg_status",name:"PG Status",flexGrow:1.2,cellClass:({row:o,column:n,value:s})=>this.getPgStatusCellClass(o,n,s)},{prop:"crush_rule",name:"Crush Ruleset",isHidden:!0,flexGrow:2},{name:"Usage",prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:1.2},{prop:"stats.rd_bytes.rates",name:"Read bytes",comparator:(o,n,s,c)=>_("stats.rd_bytes.latest",s,c),cellTransformation:L.e.sparkline,flexGrow:1.5},{prop:"stats.wr_bytes.rates",name:"Write bytes",comparator:(o,n,s,c)=>_("stats.wr_bytes.latest",s,c),cellTransformation:L.e.sparkline,flexGrow:1.5},{prop:"stats.rd.rate",name:"Read ops",flexGrow:1,pipe:this.dimlessPipe,cellTransformation:L.e.perSecond},{prop:"stats.wr.rate",name:"Write ops",flexGrow:1,pipe:this.dimlessPipe,cellTransformation:L.e.perSecond}],this.taskListService.init(()=>this.ecpService.list().pipe((0,Bt.zg)(o=>(this.ecProfileList=o,this.poolService.getList()))),void 0,o=>{this.pools=this.transformPoolsData(o),this.tableStatus=new Te.E},()=>{this.table.reset(),this.tableStatus=new Te.E(Wt.T.ValueException)},o=>o.name.startsWith("pool/"),(o,n)=>n.metadata.pool_name===o.pool_name,{default:o=>new oi(o.pool_name)})}updateSelection(_){this.selection=_}deletePoolModal(){const _=this.selection.first().pool_name;this.modalService.show(Ne.M,{itemDescription:"Pool",itemNames:[_],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new v.R(`pool/${M.MQ.DELETE}`,{pool_name:_}),call:this.poolService.delete(_)})})}getPgStatusCellClass(_,o,n){return{"text-right":!0,[`pg-${this.pgCategoryService.getTypeByStates(n)}`]:!0}}getErasureCodeProfile(_){let o="";return u().forEach(this.ecProfileList,n=>{n.name===_&&(o=`EC: ${n.k}+${n.m}`)}),o}transformPoolsData(_){const o=["bytes_used","max_avail","avail_raw","percent_used","rd_bytes","wr_bytes","rd","wr"],n={latest:0,rate:0,rates:[]};return u().forEach(_,s=>{s.pg_status=this.transformPgStatus(s.pg_status);const c={};u().forEach(o,d=>{c[d]=s.stats&&s.stats[d]?s.stats[d]:n}),s.stats=c,s.usage=c.percent_used.latest,!s.cdExecuting&&s.pg_num+s.pg_placement_num!==s.pg_num_target+s.pg_placement_num_target&&(s.cdExecuting="Updating"),["rd_bytes","wr_bytes"].forEach(d=>{s.stats[d].rates=s.stats[d].rates.map(P=>P[1])}),s.cdIsBinary=!0,"erasure"===s.type&&(s.data_protection=this.getErasureCodeProfile(s.erasure_code_profile)),"replicated"===s.type&&(s.data_protection=`replica: \xd7${s.size}`)}),_}transformPgStatus(_){const o=[];return u().forEach(_,(n,s)=>{o.push(`${n} ${s}`)}),o.join(", ")}getSelectionTiers(){if(void 0!==this.expandedRow){const _=this.expandedRow.tiers;this.cacheTiers=this.pools.filter(o=>_.includes(o.pool))}}getDisableDesc(){var _;return!(null===(_=this.selection)||void 0===_?void 0:_.hasSelection)||!this.monAllowPoolDelete&&"Pool deletion is disabled by the mon_allow_pool_delete configuration setting."}setExpandedRow(_){super.setExpandedRow(_),this.getSelectionTiers()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ue.q),e.Y36(de.P),e.Y36(Me),e.Y36(he.j),e.Y36(qe.j),e.Y36(Ze.Z),e.Y36(jt.j),e.Y36(_i.n),e.Y36(Le.F),e.Y36(ti.e),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-list"]],viewQuery:function(_,o){if(1&_&&(e.Gf(Se.a,5),e.Gf(pi,7),e.Gf(Ri,5)),2&_){let n;e.iGM(n=e.CRH())&&(o.table=n.first),e.iGM(n=e.CRH())&&(o.poolUsageTpl=n.first),e.iGM(n=e.CRH())&&(o.poolConfigurationSourceTpl=n.first)}},features:[e._Bn([qe.j,{provide:Le.F,useValue:new Le.F("pool")}]),e.qOj],decls:10,vars:2,consts:function(){let i,_;return i="Pools List",_="Overall Performance",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],i,["ngbNavContent",""],["ngbNavItem","",4,"cdScope"],[3,"ngbNavOutlet"],["poolUsageTpl",""],["id","pool-list","selectionType","single",3,"data","columns","hasDetails","status","autoReload","fetchData","setExpandedRow","updateSelection"],["table",""],["id","pool-list-actions",1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","","id","pool-list-details",3,"selection","permissions","cacheTiers"],_,["uid","z99hzWtmk","grafanaStyle","two",3,"grafanaPath"],["decimals","2",3,"total","used",4,"ngIf"],["decimals","2",3,"total","used"]]},template:function(_,o){if(1&_&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,mi,4,11,"ng-template",5),e.qZA(),e.YNc(6,Mi,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,Ti,1,1,"ng-template",null,8,e.W1O)),2&_){const n=e.MAs(1);e.xp6(6),e.Q6J("cdScope","grafana"),e.xp6(1),e.Q6J("ngbNavOutlet",n)}},directives:[g.Pz,g.nv,g.Vx,g.uN,ii,g.tO,Se.a,ni.K,Ei,Ge.F,C.O5,gi.O],styles:["cd-pool-list .pg-clean{color:#0b0}  cd-pool-list .pg-working{color:#2b99a8}  cd-pool-list .pg-warning{color:#ffc200}  cd-pool-list .pg-unknown{color:#ef5c55}"]}),t})(),ze=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[f_.t,C.ez,g.Oz,d_.m,Oe.Bz,a.UX,g.HK,u_.BlockModule]]}),t})();const Li=[{path:"",component:Si},{path:M.MQ.CREATE,component:Ue,data:{breadcrumbs:M.Qn.CREATE}},{path:`${M.MQ.EDIT}/:name`,component:Ue,data:{breadcrumbs:M.Qn.EDIT}}];let Ai=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[ze,Oe.Bz.forChild(Li)]]}),t})()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.7d0bcf3a0ac0c40fef3b.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/585.7d0bcf3a0ac0c40fef3b.js
new file mode 100644 (file)
index 0000000..c43f640
--- /dev/null
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[585],{24585:(Fi,Fe,r)=>{r.r(Fe),r.d(Fe,{PoolModule:()=>ze,RoutedPoolModule:()=>Ai});var C=r(12057),a=r(24751),Oe=r(6283),g=r(38549),M=r(79512),d_=r(44466),u_=r(70483),f_=r(370),P_=r(23815),u=r.n(P_),E_=r(80226),g_=r(26504),ue=r(80842);class S{constructor(){this.nodes=[],this.idTree={},this.allDevices=[],this.buckets=[],this.failureDomains={},this.failureDomainKeys=[],this.devices=[],this.deviceCount=0}static searchFailureDomains(i,_){return this.getFailureDomains(this.search(i,_))}static search(i,_){const[o,n]=_.split("~"),s=i.find(c=>["name","id","type"].some(d=>c[d]===o));return s?(i=this.getSubNodes(s,this.createIdTreeFromNodes(i)),n&&(i=this.filterNodesByDeviceType(i,n)),i):[]}static createIdTreeFromNodes(i){const _={};return i.forEach(o=>{_[o.id]=o}),_}static getSubNodes(i,_){let o=[i];return i.children&&i.children.forEach(n=>{o=o.concat(this.getSubNodes(_[n],_))}),o}static filterNodesByDeviceType(i,_){let n,o=i.filter(c=>c.device_class&&c.device_class!==_).map(c=>c.id),s=o;do{n=!1,i=i.filter(d=>!o.includes(d.id));const c=[];i.forEach(d=>{d.children&&d.children.every(P=>o.includes(P))&&(c.push(d.id),n=!0)}),n&&(o=c,s=s.concat(c))}while(n);return(i=u().cloneDeep(i)).map(c=>(c.children&&(c.children=c.children.filter(d=>!s.includes(d))),c))}static getFailureDomains(i){const _={};return i.forEach(o=>{const n=o.type;_[n]||(_[n]=[]),_[n].push(o)}),_}initCrushNodeSelection(i,_,o,n){this.nodes=i,this.idTree=S.createIdTreeFromNodes(i),i.forEach(s=>{this.idTree[s.id]=s}),this.buckets=u().sortBy(i.filter(s=>s.children),"name"),this.controls={root:_,failure:o,device:n},this.preSelectRoot(),this.controls.root.valueChanges.subscribe(()=>this.onRootChange()),this.controls.failure.valueChanges.subscribe(()=>this.onFailureDomainChange()),this.controls.device.valueChanges.subscribe(()=>this.onDeviceChange())}preSelectRoot(){const i=this.nodes.find(_=>"root"===_.type);this.silentSet(this.controls.root,i),this.onRootChange()}silentSet(i,_){i.setValue(_,{emitEvent:!1})}onRootChange(){const i=S.getSubNodes(this.controls.root.value,this.idTree),_=S.getFailureDomains(i);Object.keys(_).forEach(o=>{_[o].length<=1&&delete _[o]}),this.failureDomains=_,this.failureDomainKeys=Object.keys(_).sort(),this.updateFailureDomain()}updateFailureDomain(){let i=this.getIncludedCustomValue(this.controls.failure,Object.keys(this.failureDomains));""===i&&(i=this.setMostCommonDomain(this.controls.failure)),this.updateDevices(i)}getIncludedCustomValue(i,_){return i.dirty&&_.includes(i.value)?i.value:""}setMostCommonDomain(i){let _={n:0,type:""};return Object.keys(this.failureDomains).forEach(o=>{const n=this.failureDomains[o].length;_.n<n&&(_={n,type:o})}),this.silentSet(i,_.type),_.type}onFailureDomainChange(){this.updateDevices()}updateDevices(i=this.controls.failure.value){const _=u().flatten(this.failureDomains[i].map(n=>S.getSubNodes(n,this.idTree)));this.allDevices=_.filter(n=>n.device_class).map(n=>n.device_class),this.devices=u().uniq(this.allDevices).sort();const o=1===this.devices.length?this.devices[0]:this.getIncludedCustomValue(this.controls.device,this.devices);this.silentSet(this.controls.device,o),this.onDeviceChange(o)}onDeviceChange(i=this.controls.device.value){this.deviceCount=""===i?this.allDevices.length:this.allDevices.filter(_=>_===i).length}}var Ne=r(30982),p_=r(14745),b=r(65862),R_=r(93614),be=r(95463),E=r(77205),m_=r(30633),v=r(76111),C_=r(47557),M_=r(28211),de=r(32337),e=r(74788),ve=r(62862),Ie=r(83608),$e=r(60312),fe=r(41582),Pe=r(56310),Ee=r(87925),ge=r(94276),pe=r(82945),Re=r(18372),me=r(30839),Ce=r(10545);function h_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function T_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function S_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,33),e.qZA())}function L_(t,i){1&t&&(e.TgZ(0,"option",26),e.SDv(1,34),e.qZA())}function A_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}function F_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function N_(t,i){1&t&&(e.TgZ(0,"option",26),e.SDv(1,37),e.qZA())}function b_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw();e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function v_(t,i){1&t&&(e.TgZ(0,"span",30),e.SDv(1,38),e.qZA())}function I_(t,i){if(1&t&&(e.TgZ(0,"option",35),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}let $_=(()=>{class t extends S{constructor(_,o,n,s,c){super(),this.formBuilder=_,this.activeModal=o,this.taskWrapper=n,this.crushRuleService=s,this.actionLabels=c,this.submitAction=new e.vpe,this.tooltips=this.crushRuleService.formTooltips,this.action=this.actionLabels.CREATE,this.resource="Crush Rule",this.createForm()}createForm(){this.form=this.formBuilder.group({name:["",[a.kI.required,a.kI.pattern("[A-Za-z0-9_-]+"),E.h.custom("uniqueName",_=>this.names&&-1!==this.names.indexOf(_))]],root:null,failure_domain:"",device_class:""})}ngOnInit(){this.crushRuleService.getInfo().subscribe(({names:_,nodes:o})=>{this.initCrushNodeSelection(o,this.form.get("root"),this.form.get("failure_domain"),this.form.get("device_class")),this.names=_})}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _=u().cloneDeep(this.form.value);_.root=_.root.name,""===_.device_class&&delete _.device_class,this.taskWrapper.wrapTaskAroundCall({task:new v.R("crushRule/create",_),call:this.crushRuleService.create(_)}).subscribe({error:()=>{this.form.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close(),this.submitAction.emit(_)}})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ve.O),e.Y36(g.Kz),e.Y36(de.P),e.Y36(Ie.H),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-crush-rule-form-modal"]],outputs:{submitAction:"submitAction"},features:[e.qOj],decls:55,vars:27,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Root",n="Failure domain type",s="Device class",c="Let Ceph decide",d="This field is required!",P="The name can only consist of alphanumeric characters, dashes and underscores.",p="The chosen erasure code profile name is already in use.",R="Loading...",h="This field is required!",T="Loading...",m="This field is required!",[[3,"modalRef"],[1,"modal-title"],i,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label"],_,[1,"required"],[1,"cd-col-form-input"],["type","text","id","name","name","name","placeholder","Name...","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","root",1,"cd-col-form-label"],o,[3,"html"],["id","root","name","root","formControlName","root",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],["for","failure_domain",1,"cd-col-form-label"],n,["id","failure_domain","name","failure_domain","formControlName","failure_domain",1,"form-control"],["for","device_class",1,"cd-col-form-label"],s,["id","device_class","name","device_class","formControlName","device_class",1,"form-control"],["ngValue",""],c,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],d,P,p,R,[3,"ngValue"],h,T,m]},template:function(_,o){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.ynx(11),e.SDv(12,9),e.BQk(),e._UZ(13,"span",10),e.qZA(),e.TgZ(14,"div",11),e._UZ(15,"input",12),e.YNc(16,h_,2,0,"span",13),e.YNc(17,T_,2,0,"span",13),e.YNc(18,S_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(19,"div",7),e.TgZ(20,"label",14),e.ynx(21),e.SDv(22,15),e.BQk(),e._UZ(23,"cd-helper",16),e._UZ(24,"span",10),e.qZA(),e.TgZ(25,"div",11),e.TgZ(26,"select",17),e.YNc(27,L_,2,0,"option",18),e.YNc(28,A_,2,2,"option",19),e.qZA(),e.YNc(29,F_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(30,"div",7),e.TgZ(31,"label",20),e.ynx(32),e.SDv(33,21),e.BQk(),e._UZ(34,"cd-helper",16),e._UZ(35,"span",10),e.qZA(),e.TgZ(36,"div",11),e.TgZ(37,"select",22),e.YNc(38,N_,2,0,"option",18),e.YNc(39,b_,2,3,"option",19),e.qZA(),e.YNc(40,v_,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(41,"div",7),e.TgZ(42,"label",23),e.ynx(43),e.SDv(44,24),e.BQk(),e._UZ(45,"cd-helper",16),e.qZA(),e.TgZ(46,"div",11),e.TgZ(47,"select",25),e.TgZ(48,"option",26),e.SDv(49,27),e.qZA(),e.YNc(50,I_,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(51,"div",28),e.TgZ(52,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(53,"titlecase"),e.ALo(54,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const n=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,19,o.action))(e.lcZ(4,21,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.form),e.xp6(10),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"pattern")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"uniqueName")),e.xp6(5),e.Q6J("html",o.tooltips.root),e.xp6(4),e.Q6J("ngIf",!o.buckets),e.xp6(1),e.Q6J("ngForOf",o.buckets),e.xp6(1),e.Q6J("ngIf",o.form.showError("root",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.failure_domain),e.xp6(4),e.Q6J("ngIf",!o.failureDomains),e.xp6(1),e.Q6J("ngForOf",o.failureDomainKeys),e.xp6(1),e.Q6J("ngIf",o.form.showError("failure_domain",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.device_class),e.xp6(5),e.Q6J("ngForOf",o.devices),e.xp6(2),e.Q6J("form",o.form)("submitText",e.lcZ(53,23,o.action)+" "+e.lcZ(54,25,o.resource))}},directives:[$e.z,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,Re.S,a.EJ,C.sg,a.YN,a.Kr,me.p],pipes:[C.rS,Ce.m],styles:[""]}),t})();class D_{}var Z_=r(58497);let Me=(()=>{class t{constructor(_){this.http=_,this.apiPath="api/erasure_code_profile",this.formTooltips={k:"Each object is split in data-chunks parts, each stored on a different OSD.",m:"Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.",plugins:{jerasure:{description:"The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.",technique:"The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.",packetSize:"The encoding will be done on packets of bytes size at a time.\n          Choosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic."},lrc:{description:"With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.",l:"Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.",crushLocality:"The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done."},isa:{description:"The isa plugin encapsulates the ISA library. It only runs on Intel processors.",technique:"The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy."},shec:{description:"The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.",c:"The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data."},clay:{description:"CLAY (short for coupled-layer) codes are erasure codes designed to\n          bring about significant savings in terms of network bandwidth and disk IO when a failed\n          node/OSD/rack is being repaired.",d:"Number of OSDs requested to send data during recovery of a single chunk.\n          d needs to be chosen such that k+1 <= d <= k+m-1. The larger the d, the better\n          the savings.",scalar_mds:"scalar_mds specifies the plugin that is used as a building block\n          in the layered construction. It can be one of jerasure, isa, shec.",technique:"technique specifies the technique that will be picked\n          within the 'scalar_mds' plugin specified. Supported techniques\n          are 'reed_sol_van', 'reed_sol_r6_op', 'cauchy_orig',\n          'cauchy_good', 'liber8tion' for jerasure, 'reed_sol_van',\n          'cauchy' for isa and 'single', 'multiple' for shec."}},crushRoot:"The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.",crushFailureDomain:"Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.",crushDeviceClass:"Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.",directory:"Set the directory name from which the erasure code plugin is loaded."}}list(){return this.http.get(this.apiPath)}create(_){return this.http.post(this.apiPath,_,{observe:"response"})}delete(_){return this.http.delete(`${this.apiPath}/${_}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return t.\u0275fac=function(_){return new(_||t)(e.LFG(Z_.eN))},t.\u0275prov=e.Yz7({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function x_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,47),e.qZA())}function y_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,48),e.qZA())}function U_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,49),e.qZA())}function q_(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,50),e.qZA())}function H_(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}function G_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,52),e.qZA())}function z_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,53),e.qZA())}function X_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,54),e.qZA())}function w_(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,55),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.deviceCount),e.QtT(1)}}function Q_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,56),e.qZA())}function J_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,57),e.qZA())}function k_(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,58),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.lrcMultiK),e.QtT(1)}}function V_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,59),e.qZA())}function Y_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,60),e.qZA())}function B_(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,61),e.qZA()),2&t){const _=e.oxw();e.xp6(1),e.pQV(_.deviceCount),e.QtT(1)}}function j_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,65),e.qZA())}function K_(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,66),e.qZA())}function W_(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",62),e.TgZ(2,"span",14),e.SDv(3,63),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",64),e.YNc(7,j_,2,0,"span",12),e.YNc(8,K_,2,0,"span",12),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.shec.c),e.xp6(3),e.Q6J("ngIf",_.form.showError("c",o,"min")),e.xp6(1),e.Q6J("ngIf",_.form.showError("c",o,"cGreaterM"))}}function eo(t,i){1&t&&(e.TgZ(0,"span",39),e.SDv(1,75),e.qZA())}function _o(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,76),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.pQV(_.getDMin())(_.getDMax()),e.QtT(1)}}function oo(t,i){if(1&t&&(e.TgZ(0,"span",39),e.SDv(1,77),e.qZA()),2&t){const _=e.oxw(3);e.xp6(1),e.pQV(_.getDMax()),e.QtT(1)}}function to(t,i){if(1&t&&(e.ynx(0),e.YNc(1,_o,2,2,"span",23),e.YNc(2,oo,2,1,"span",23),e.BQk()),2&t){const _=e.oxw(2);e.xp6(1),e.Q6J("ngIf",_.getDMin()<_.getDMax()),e.xp6(1),e.Q6J("ngIf",_.getDMin()===_.getDMax())}}function io(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,78),e.qZA()),2&t){const _=e.oxw(2);e.xp6(1),e.pQV(_.getDMin()),e.QtT(1)}}function no(t,i){if(1&t&&(e.TgZ(0,"span",46),e.SDv(1,79),e.qZA()),2&t){const _=e.oxw(2);e.xp6(1),e.pQV(_.getDMax()),e.QtT(1)}}function so(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",67),e.TgZ(2,"span",14),e.SDv(3,68),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"div",69),e._UZ(7,"input",70),e.TgZ(8,"span",71),e.TgZ(9,"button",72),e.NdJ("click",function(){return e.CHM(_),e.oxw().toggleDCalc()}),e._UZ(10,"i",73),e.qZA(),e.qZA(),e.qZA(),e.YNc(11,eo,2,0,"span",23),e.YNc(12,to,3,2,"ng-container",74),e.YNc(13,io,2,1,"span",12),e.YNc(14,no,2,1,"span",12),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.clay.d),e.xp6(6),e.Q6J("ngClass",_.dCalc?_.icons.unlock:_.icons.lock),e.xp6(1),e.Q6J("ngIf",_.dCalc),e.xp6(1),e.Q6J("ngIf",!_.dCalc),e.xp6(1),e.Q6J("ngIf",_.form.showError("d",o,"dMin")),e.xp6(1),e.Q6J("ngIf",_.form.showError("d",o,"dMax"))}}function ao(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,84),e.qZA())}function lo(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,85),e.qZA())}function ro(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,86),e.qZA())}function co(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",80),e.TgZ(2,"span",14),e.SDv(3,81),e.qZA(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",82),e.YNc(7,ao,2,0,"span",12),e.YNc(8,lo,2,0,"span",12),e.YNc(9,ro,2,0,"span",12),e.TgZ(10,"span",39),e.SDv(11,83),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.lrc.l),e.xp6(3),e.Q6J("ngIf",_.form.showError("l",o,"required")),e.xp6(1),e.Q6J("ngIf",_.form.showError("l",o,"min")),e.xp6(1),e.Q6J("ngIf",_.form.showError("l",o,"unequal")),e.xp6(2),e.pQV(_.lrcGroups),e.QtT(11)}}function Oo(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,87),e.qZA())}function uo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw();e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function fo(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,91),e.qZA())}function Po(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,92),e.qZA())}function Eo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw(2);e.Q6J("ngValue",_),e.xp6(1),e.AsE(" ",_," ( ",o.failureDomains[_].length," ) ")}}function go(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",88),e.ynx(2),e.SDv(3,89),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",90),e.YNc(7,fo,2,0,"option",18),e.YNc(8,Po,2,0,"option",18),e.YNc(9,Eo,2,3,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins.lrc.crushLocality),e.xp6(3),e.Q6J("ngIf",!_.failureDomains),e.xp6(1),e.Q6J("ngIf",_.failureDomainKeys.length>0),e.xp6(1),e.Q6J("ngForOf",_.failureDomainKeys)}}function po(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}const De=function(t,i,_){return[t,i,_]};function Ro(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",93),e.ynx(2),e.SDv(3,94),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",95),e.YNc(7,po,2,2,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins.clay.scalar_mds),e.xp6(3),e.Q6J("ngForOf",e.kEZ(2,De,_.PLUGIN.JERASURE,_.PLUGIN.ISA,_.PLUGIN.SHEC))}}function mo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}function Co(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",96),e.ynx(2),e.SDv(3,97),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e.TgZ(6,"select",98),e.YNc(7,mo,2,2,"option",19),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw();e.xp6(4),e.Q6J("html",_.tooltips.plugins[_.plugin].technique),e.xp6(3),e.Q6J("ngForOf",_.techniques)}}function Mo(t,i){1&t&&(e.TgZ(0,"span",46),e.SDv(1,102),e.qZA())}function ho(t,i){if(1&t&&(e.TgZ(0,"div",7),e.TgZ(1,"label",99),e.ynx(2),e.SDv(3,100),e.BQk(),e._UZ(4,"cd-helper",16),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",101),e.YNc(7,Mo,2,0,"span",12),e.qZA(),e.qZA()),2&t){const _=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("html",_.tooltips.plugins.jerasure.packetSize),e.xp6(3),e.Q6J("ngIf",_.form.showError("packetSize",o,"min"))}}function To(t,i){1&t&&(e.TgZ(0,"option",37),e.SDv(1,103),e.qZA())}function So(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}function Lo(t,i){if(1&t&&(e.TgZ(0,"option",51),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_," ")}}let Ao=(()=>{class t extends S{constructor(_,o,n,s,c){super(),this.formBuilder=_,this.activeModal=o,this.taskWrapper=n,this.ecpService=s,this.actionLabels=c,this.submitAction=new e.vpe,this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",CLAY:"clay",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.icons=b.P,this.action=this.actionLabels.CREATE,this.resource="EC Profile",this.createForm(),this.setJerasureDefaults()}createForm(){this.form=this.formBuilder.group({name:[null,[a.kI.required,a.kI.pattern("[A-Za-z0-9_-]+"),E.h.custom("uniqueName",_=>this.names&&-1!==this.names.indexOf(_))]],plugin:[this.PLUGIN.JERASURE,[a.kI.required]],k:[4,[a.kI.required,E.h.custom("max",()=>this.baseValueValidation(!0)),E.h.custom("unequal",_=>this.lrcDataValidation(_)),E.h.custom("kLowerM",_=>this.shecDataValidation(_))]],m:[2,[a.kI.required,E.h.custom("max",()=>this.baseValueValidation())]],crushFailureDomain:"",crushRoot:null,crushDeviceClass:"",directory:"",technique:"reed_sol_van",packetSize:[2048],l:[3,[a.kI.required,E.h.custom("unequal",_=>this.lrcLocalityValidation(_))]],crushLocality:"",c:[2,[a.kI.required,E.h.custom("cGreaterM",_=>this.shecDurabilityValidation(_))]],d:[5,[a.kI.required,E.h.custom("dMin",_=>this.dMinValidation(_)),E.h.custom("dMax",_=>this.dMaxValidation(_))]],scalar_mds:[this.PLUGIN.JERASURE,[a.kI.required]]}),this.toggleDCalc(),this.form.get("k").valueChanges.subscribe(()=>this.updateValidityOnChange(["m","l","d"])),this.form.get("m").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","l","c","d"])),this.form.get("l").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","m"])),this.form.get("plugin").valueChanges.subscribe(_=>this.onPluginChange(_)),this.form.get("scalar_mds").valueChanges.subscribe(()=>this.setClayDefaultsForScalar())}baseValueValidation(_=!1){return this.validValidation(()=>this.getKMSum()>this.deviceCount&&this.form.getValue("k")>this.form.getValue("m")===_)}validValidation(_,o){return!((!this.form||o)&&this.plugin!==o)&&_()}getKMSum(){return this.form.getValue("k")+this.form.getValue("m")}lrcDataValidation(_){return this.validValidation(()=>{const o=this.form.getValue("m"),n=this.form.getValue("l"),s=_+o;return this.lrcMultiK=_/(s/n),_%(s/n)!=0},"lrc")}shecDataValidation(_){return this.validValidation(()=>this.form.getValue("m")>_,"shec")}lrcLocalityValidation(_){return this.validValidation(()=>{const o=this.getKMSum();return this.lrcGroups=_>0?o/_:0,_>0&&o%_!=0},"lrc")}shecDurabilityValidation(_){return this.validValidation(()=>{const o=this.form.getValue("m");return _>o},"shec")}dMinValidation(_){return this.validValidation(()=>this.getDMin()>_,"clay")}getDMin(){return this.form.getValue("k")+1}dMaxValidation(_){return this.validValidation(()=>_>this.getDMax(),"clay")}getDMax(){const _=this.form.getValue("m");return this.form.getValue("k")+_-1}toggleDCalc(){this.dCalc=!this.dCalc,this.form.get("d")[this.dCalc?"disable":"enable"](),this.calculateD()}calculateD(){this.plugin!==this.PLUGIN.CLAY||!this.dCalc||this.form.silentSet("d",this.getDMax())}updateValidityOnChange(_){_.forEach(o=>{"d"===o&&this.calculateD(),this.form.get(o).updateValueAndValidity({emitEvent:!1})})}onPluginChange(_){this.plugin=_,_===this.PLUGIN.JERASURE?this.setJerasureDefaults():_===this.PLUGIN.LRC?this.setLrcDefaults():_===this.PLUGIN.ISA?this.setIsaDefaults():_===this.PLUGIN.SHEC?this.setShecDefaults():_===this.PLUGIN.CLAY&&this.setClayDefaults(),this.updateValidityOnChange(["m"])}setJerasureDefaults(){this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"],this.setDefaults({k:4,m:2,technique:"reed_sol_van"})}setLrcDefaults(){this.setDefaults({k:4,m:2,l:3})}setIsaDefaults(){this.techniques=["reed_sol_van","cauchy"],this.setDefaults({k:7,m:3,technique:"reed_sol_van"})}setShecDefaults(){this.setDefaults({k:4,m:3,c:2})}setClayDefaults(){this.setDefaults({k:4,m:2,scalar_mds:this.PLUGIN.JERASURE}),this.setClayDefaultsForScalar()}setClayDefaultsForScalar(){const _=this.form.getValue("scalar_mds");let o="reed_sol_van";_===this.PLUGIN.JERASURE?this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liber8tion"]:_===this.PLUGIN.ISA?this.techniques=["reed_sol_van","cauchy"]:(o="single",this.techniques=["single","multiple"]),this.setDefaults({technique:o})}setDefaults(_){Object.keys(_).forEach(o=>{const n=this.form.get(o),s=n.value;n.pristine||"technique"===o&&!this.techniques.includes(s)||"k"===o&&[4,7].includes(s)||"m"===o&&[2,3].includes(s)?n.setValue(_[o]):n.updateValueAndValidity()})}ngOnInit(){this.ecpService.getInfo().subscribe(({plugins:_,names:o,directory:n,nodes:s})=>{this.initCrushNodeSelection(s,this.form.get("crushRoot"),this.form.get("crushFailureDomain"),this.form.get("crushDeviceClass")),this.plugins=_,this.names=o,this.form.silentSet("directory",n),this.preValidateNumericInputFields()})}preValidateNumericInputFields(){const _=["k","m","l","c","d"].map(o=>this.form.get(o));_.forEach(o=>{o.markAsTouched(),o.markAsDirty()}),_[1].updateValueAndValidity()}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new v.R("ecp/create",{name:_.name}),call:this.ecpService.create(_)}).subscribe({error:()=>{this.form.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close(),this.submitAction.emit(_)}})}createJson(){const _={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE,this.PLUGIN.CLAY],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC],d:[this.PLUGIN.CLAY],scalar_mds:[this.PLUGIN.CLAY]},o=new D_,n=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(s=>{const c=_[s],d=this.form.getValue(s);return(c&&c.includes(n)||!c)&&d&&""!==d}).forEach(s=>{this.extendJson(s,o)}),o}extendJson(_,o){const s=this.form.getValue(_);o[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[_]||_]="crushRoot"===_?s.name:s}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ve.O),e.Y36(g.Kz),e.Y36(de.P),e.Y36(Me),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-erasure-code-profile-form-modal"]],outputs:{submitAction:"submitAction"},features:[e.qOj],decls:98,vars:53,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m,f,A,I,$,D,Z,x,y,U,q,H,G,z,X,w,Q,J,k,V,Y,B,j,K,N,W,ee,_e,oe,te,ie,ne,se,ae,le,re,ce;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Plugin",n="Data chunks (k)",s="Coding chunks (m)",c="Crush failure domain",d="Crush root",P="Crush device class",p="Let Ceph decide",R="Available OSDs: " + "\ufffd0\ufffd" + "",h="Directory",T="This field is required!",m="The name can only consist of alphanumeric characters, dashes and underscores.",f="The chosen erasure code profile name is already in use.",A="Loading...",I="This field is required!",$="This field is required!",D="Must be equal to or greater than 2.",Z="Chunks (k+m) have exceeded the available OSDs of " + "\ufffd0\ufffd" + ".",x="For an equal distribution k has to be a multiple of (k+m)/l.",y="K has to be equal to or greater than m in order to recover data correctly through c.",U="Distribution factor: " + "\ufffd0\ufffd" + "",q="This field is required!",H="Must be equal to or greater than 1.",G="Chunks (k+m) have exceeded the available OSDs of " + "\ufffd0\ufffd" + ".",z="Durability estimator (c)",X="Must be equal to or greater than 1.",w="C has to be equal to or lower than m as m defines the amount of chunks that can be used.",Q="Helper chunks (d)",J="Set d manually or use the plugin's default calculation that maximizes d.",k="D is automatically updated on k and m changes",V="D can be set from " + "\ufffd0\ufffd" + " to " + "\ufffd1\ufffd" + "",Y="D can only be set to " + "\ufffd0\ufffd" + "",B="D has to be greater than k (" + "\ufffd0\ufffd" + ").",j="D has to be lower than k + m (" + "\ufffd0\ufffd" + ").",K="Locality (l)",N="Locality groups: " + "\ufffd0\ufffd" + "",W="This field is required!",ee="Must be equal to or greater than 1.",_e="Can't split up chunks (k+m) correctly with the current locality.",oe="Loading...",te="Crush Locality",ie="Loading...",ne="None",se="Scalar mds",ae="Technique",le="Packetsize",re="Must be equal to or greater than 1.",ce="Loading...",[[3,"modalRef"],[1,"modal-title"],i,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label"],_,[1,"cd-col-form-input"],["type","text","id","name","name","name","placeholder","Name...","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","plugin",1,"cd-col-form-label"],[1,"required"],o,[3,"html"],["id","plugin","name","plugin","formControlName","plugin",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],["for","k",1,"cd-col-form-label"],n,["type","number","id","k","name","k","ng-model","$ctrl.erasureCodeProfile.k","placeholder","Data chunks...","formControlName","k","min","2",1,"form-control"],["class","form-text text-muted",4,"ngIf"],["for","m",1,"cd-col-form-label"],s,["type","number","id","m","name","m","placeholder","Coding chunks...","formControlName","m","min","1",1,"form-control"],["class","form-group row",4,"ngIf"],["for","crushFailureDomain",1,"cd-col-form-label"],c,["id","crushFailureDomain","name","crushFailureDomain","formControlName","crushFailureDomain",1,"form-control"],["for","crushRoot",1,"cd-col-form-label"],d,["id","crushRoot","name","crushRoot","formControlName","crushRoot",1,"form-control"],["for","crushDeviceClass",1,"cd-col-form-label"],P,["id","crushDeviceClass","name","crushDeviceClass","formControlName","crushDeviceClass",1,"form-control"],["ngValue",""],p,[1,"form-text","text-muted"],R,["for","directory",1,"cd-col-form-label"],h,["type","text","id","directory","name","directory","placeholder","Path...","formControlName","directory",1,"form-control"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],T,m,f,A,[3,"ngValue"],I,$,D,Z,x,y,U,q,H,G,["for","c",1,"cd-col-form-label"],z,["type","number","id","c","name","c","placeholder","Coding chunks...","formControlName","c","min","1",1,"form-control"],X,w,["for","d",1,"cd-col-form-label"],Q,[1,"input-group"],["type","number","id","d","name","d","placeholder","Helper chunks...","formControlName","d",1,"form-control"],[1,"input-group-append"],["id","d-calc-btn","ngbTooltip",J,"type","button",1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],[4,"ngIf"],k,V,Y,B,j,["for","l",1,"cd-col-form-label"],K,["type","number","id","l","name","l","placeholder","Coding chunks...","formControlName","l","min","1",1,"form-control"],N,W,ee,_e,oe,["for","crushLocality",1,"cd-col-form-label"],te,["id","crushLocality","name","crushLocality","formControlName","crushLocality",1,"form-control"],ie,ne,["for","scalar_mds",1,"cd-col-form-label"],se,["id","scalar_mds","name","scalar_mds","formControlName","scalar_mds",1,"form-control"],["for","technique",1,"cd-col-form-label"],ae,["id","technique","name","technique","formControlName","technique",1,"form-control"],["for","packetSize",1,"cd-col-form-label"],le,["type","number","id","packetSize","name","packetSize","placeholder","Packetsize...","formControlName","packetSize","min","1",1,"form-control"],re,ce]},template:function(_,o){if(1&_&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",11),e.YNc(14,x_,2,0,"span",12),e.YNc(15,y_,2,0,"span",12),e.YNc(16,U_,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(17,"div",7),e.TgZ(18,"label",13),e.TgZ(19,"span",14),e.SDv(20,15),e.qZA(),e._UZ(21,"cd-helper",16),e.qZA(),e.TgZ(22,"div",10),e.TgZ(23,"select",17),e.YNc(24,q_,2,0,"option",18),e.YNc(25,H_,2,2,"option",19),e.qZA(),e.YNc(26,G_,2,0,"span",12),e.qZA(),e.qZA(),e.TgZ(27,"div",7),e.TgZ(28,"label",20),e.TgZ(29,"span",14),e.SDv(30,21),e.qZA(),e._UZ(31,"cd-helper",16),e.qZA(),e.TgZ(32,"div",10),e._UZ(33,"input",22),e.YNc(34,z_,2,0,"span",12),e.YNc(35,X_,2,0,"span",12),e.YNc(36,w_,2,1,"span",12),e.YNc(37,Q_,2,0,"span",12),e.YNc(38,J_,2,0,"span",12),e.YNc(39,k_,2,1,"span",23),e.qZA(),e.qZA(),e.TgZ(40,"div",7),e.TgZ(41,"label",24),e.TgZ(42,"span",14),e.SDv(43,25),e.qZA(),e._UZ(44,"cd-helper",16),e.qZA(),e.TgZ(45,"div",10),e._UZ(46,"input",26),e.YNc(47,V_,2,0,"span",12),e.YNc(48,Y_,2,0,"span",12),e.YNc(49,B_,2,1,"span",12),e.qZA(),e.qZA(),e.YNc(50,W_,9,3,"div",27),e.YNc(51,so,15,6,"div",27),e.YNc(52,co,12,5,"div",27),e.TgZ(53,"div",7),e.TgZ(54,"label",28),e.ynx(55),e.SDv(56,29),e.BQk(),e._UZ(57,"cd-helper",16),e.qZA(),e.TgZ(58,"div",10),e.TgZ(59,"select",30),e.YNc(60,Oo,2,0,"option",18),e.YNc(61,uo,2,3,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(62,go,10,4,"div",27),e.YNc(63,Ro,8,6,"div",27),e.YNc(64,Co,8,2,"div",27),e.YNc(65,ho,8,2,"div",27),e.TgZ(66,"div",7),e.TgZ(67,"label",31),e.ynx(68),e.SDv(69,32),e.BQk(),e._UZ(70,"cd-helper",16),e.qZA(),e.TgZ(71,"div",10),e.TgZ(72,"select",33),e.YNc(73,To,2,0,"option",18),e.YNc(74,So,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.TgZ(75,"div",7),e.TgZ(76,"label",34),e.ynx(77),e.SDv(78,35),e.BQk(),e._UZ(79,"cd-helper",16),e.qZA(),e.TgZ(80,"div",10),e.TgZ(81,"select",36),e.TgZ(82,"option",37),e.SDv(83,38),e.qZA(),e.YNc(84,Lo,2,2,"option",19),e.qZA(),e.TgZ(85,"span",39),e.SDv(86,40),e.qZA(),e.qZA(),e.qZA(),e.TgZ(87,"div",7),e.TgZ(88,"label",41),e.ynx(89),e.SDv(90,42),e.BQk(),e._UZ(91,"cd-helper",16),e.qZA(),e.TgZ(92,"div",10),e._UZ(93,"input",43),e.qZA(),e.qZA(),e.qZA(),e.TgZ(94,"div",44),e.TgZ(95,"cd-form-button-panel",45),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(96,"titlecase"),e.ALo(97,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&_){const n=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,41,o.action))(e.lcZ(4,43,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.form),e.xp6(8),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"pattern")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"uniqueName")),e.xp6(5),e.Q6J("html",o.tooltips.plugins[o.plugin].description),e.xp6(3),e.Q6J("ngIf",!o.plugins),e.xp6(1),e.Q6J("ngForOf",o.plugins),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",n,"required")),e.xp6(5),e.Q6J("html",o.tooltips.k),e.xp6(3),e.Q6J("ngIf",o.form.showError("k",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"max")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"unequal")),e.xp6(1),e.Q6J("ngIf",o.form.showError("k",n,"kLowerM")),e.xp6(1),e.Q6J("ngIf","lrc"===o.plugin),e.xp6(5),e.Q6J("html",o.tooltips.m),e.xp6(3),e.Q6J("ngIf",o.form.showError("m",n,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("m",n,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("m",n,"max")),e.xp6(1),e.Q6J("ngIf","shec"===o.plugin),e.xp6(1),e.Q6J("ngIf","clay"===o.plugin),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.LRC),e.xp6(5),e.Q6J("html",o.tooltips.crushFailureDomain),e.xp6(3),e.Q6J("ngIf",!o.failureDomains),e.xp6(1),e.Q6J("ngForOf",o.failureDomainKeys),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.LRC),e.xp6(1),e.Q6J("ngIf",o.PLUGIN.CLAY===o.plugin),e.xp6(1),e.Q6J("ngIf",e.kEZ(49,De,o.PLUGIN.JERASURE,o.PLUGIN.ISA,o.PLUGIN.CLAY).includes(o.plugin)),e.xp6(1),e.Q6J("ngIf",o.plugin===o.PLUGIN.JERASURE),e.xp6(5),e.Q6J("html",o.tooltips.crushRoot),e.xp6(3),e.Q6J("ngIf",!o.buckets),e.xp6(1),e.Q6J("ngForOf",o.buckets),e.xp6(5),e.Q6J("html",o.tooltips.crushDeviceClass),e.xp6(5),e.Q6J("ngForOf",o.devices),e.xp6(2),e.pQV(o.deviceCount),e.QtT(86),e.xp6(5),e.Q6J("html",o.tooltips.directory),e.xp6(4),e.Q6J("form",o.form)("submitText",e.lcZ(96,45,o.action)+" "+e.lcZ(97,47,o.resource))}},directives:[$e.z,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,Re.S,a.EJ,C.sg,a.wV,a.qQ,a.YN,a.Kr,me.p,g._L,C.mk],pipes:[C.rS,Ce.m],styles:[""]}),t})();var Fo=r(7022);class No{constructor(){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],default:["cephfs","rbd","rgw"],available:[],validators:[a.kI.pattern("[A-Za-z0-9_]+"),a.kI.maxLength(128)],messages:new Fo.a({empty:"No applications added",selectionLimit:{text:"Applications limit reached",tooltip:"A pool can only have up to four applications definitions."},customValidations:{pattern:"Allowed characters '_a-zA-Z0-9'",maxlength:"Maximum length is 128 characters"},filter:"Filter or add applications'",add:"Add application"})}}}var Ze=r(63285),he=r(74937),bo=r(63622),vo=r(60192),Io=r(17932),$o=r(54555),Do=r(30490),xe=r(61350);const Zo=["crushInfoTabs"],xo=["crushDeletionBtn"],yo=["ecpInfoTabs"],Uo=["ecpDeletionBtn"];function qo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,42),e.qZA())}function Ho(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,43),e.qZA())}function Go(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,44),e.qZA())}function zo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,45),e.qZA())}function Xo(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function wo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,47),e.qZA())}function Qo(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Jo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,58),e.qZA())}function ko(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,59),e.qZA())}function Vo(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,60),e.qZA())}function Yo(t,i){1&t&&(e.TgZ(0,"span",55),e.SDv(1,61),e.qZA())}function Bo(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",52),e.SDv(2,53),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"input",54),e.NdJ("focus",function(){return e.CHM(_),e.oxw(3).externalPgChange=!1})("blur",function(){return e.CHM(_),e.oxw(3).alignPgs()}),e.qZA(),e.YNc(5,Jo,2,0,"span",13),e.YNc(6,ko,2,0,"span",13),e.YNc(7,Vo,2,0,"span",13),e.TgZ(8,"span",55),e._UZ(9,"cd-doc",56),e.qZA(),e.YNc(10,Yo,2,0,"span",57),e.qZA(),e.qZA()}if(2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(5),e.Q6J("ngIf",o.form.showError("pgNum",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("pgNum",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("pgNum",_,"34")),e.xp6(3),e.Q6J("ngIf",o.externalPgChange)}}function jo(t,i){if(1&t&&(e.TgZ(0,"span",41),e.TgZ(1,"ul",66),e.TgZ(2,"li"),e.SDv(3,67),e.qZA(),e.TgZ(4,"li"),e.SDv(5,68),e.qZA(),e.qZA(),e.qZA()),2&t){const _=e.oxw(4);e.xp6(3),e.pQV(_.getMinSize()),e.QtT(3),e.xp6(2),e.pQV(_.getMaxSize()),e.QtT(5)}}function Ko(t,i){if(1&t&&(e.TgZ(0,"span",41),e.SDv(1,69),e.qZA()),2&t){const _=e.oxw(4);e.xp6(1),e.pQV(_.getMinSize())(_.getMaxSize()),e.QtT(1)}}function Wo(t,i){1&t&&(e.TgZ(0,"span",70),e.SDv(1,71),e.qZA())}function et(t,i){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",62),e.SDv(2,63),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",64),e.YNc(5,jo,6,2,"span",13),e.YNc(6,Ko,2,2,"span",13),e.YNc(7,Wo,2,0,"span",65),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(4),e.Q6J("max",o.getMaxSize())("min",o.getMinSize()),e.xp6(1),e.Q6J("ngIf",o.form.showError("size",_)),e.xp6(1),e.Q6J("ngIf",o.form.showError("size",_)),e.xp6(1),e.Q6J("ngIf",1===o.form.getValue("size"))}}function _t(t,i){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",72),e.SDv(2,73),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",74),e._UZ(5,"input",75),e.TgZ(6,"label",76),e.SDv(7,77),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function ot(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"div",8),e.TgZ(2,"label",48),e.SDv(3,49),e.qZA(),e.TgZ(4,"div",11),e.TgZ(5,"select",50),e.YNc(6,Qo,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(7,Bo,11,4,"div",51),e.YNc(8,et,8,5,"div",51),e.YNc(9,_t,8,0,"div",51),e.qZA()),2&t){const _=e.oxw(2);e.xp6(6),e.Q6J("ngForOf",_.pgAutoscaleModes),e.xp6(1),e.Q6J("ngIf","on"!==_.form.getValue("pgAutoscaleMode")),e.xp6(1),e.Q6J("ngIf",_.isReplicated),e.xp6(1),e.Q6J("ngIf",_.info.is_all_bluestore&&_.isErasure)}}function tt(t,i){if(1&t&&e._UZ(0,"i",78),2&t){const _=e.oxw(2);e.Gre("",_.icons.warning," icon-warning-color")}}function it(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,93),e.qZA())}function nt(t,i){1&t&&(e.TgZ(0,"option",94),e.SDv(1,95),e.qZA()),2&t&&e.Q6J("ngValue",null)}function st(t,i){1&t&&(e.TgZ(0,"option",94),e.SDv(1,96),e.qZA()),2&t&&e.Q6J("ngValue",null)}function at(t,i){if(1&t&&(e.TgZ(0,"option",94),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.name," ")}}const F=function(t){return[t]};function lt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",97),e.NdJ("click",function(){return e.CHM(_),e.oxw(4).addErasureCodeProfile()}),e._UZ(1,"i",89),e.qZA()}if(2&t){const _=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,F,_.icons.add))}}function rt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",98,99),e.NdJ("click",function(){return e.CHM(_),e.oxw(4).deleteErasureCodeProfile()}),e._UZ(2,"i",89),e.qZA()}if(2&t){const _=e.oxw(4);e.xp6(2),e.Q6J("ngClass",e.VKq(1,F,_.icons.trash))}}const ct=function(){return["name"]};function Ot(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",110),2&t){const _=e.oxw(5);e.Q6J("renderObjects",!0)("hideKeys",e.DdM(4,ct))("data",_.form.getValue("erasureProfile"))("autoReload",!1)}}function dt(t,i){1&t&&(e.TgZ(0,"span"),e.SDv(1,113),e.qZA())}function ut(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.xp6(1),e.hij(" ",_," ")}}function ft(t,i){if(1&t&&(e.TgZ(0,"ul"),e.YNc(1,ut,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(6);e.xp6(1),e.Q6J("ngForOf",_.ecpUsage)}}function Pt(t,i){if(1&t&&(e.YNc(0,dt,2,0,"ng-template",null,111,e.W1O),e.YNc(2,ft,2,1,"ul",112)),2&t){const _=e.MAs(1),o=e.oxw(5);e.xp6(2),e.Q6J("ngIf",o.ecpUsage)("ngIfElse",_)}}function Et(t,i){if(1&t&&(e.TgZ(0,"span",100),e.TgZ(1,"ul",101,102),e.TgZ(3,"li",103),e.TgZ(4,"a",104),e.SDv(5,105),e.qZA(),e.YNc(6,Ot,1,5,"ng-template",106),e.qZA(),e.TgZ(7,"li",107),e.TgZ(8,"a",104),e.SDv(9,108),e.qZA(),e.YNc(10,Pt,3,2,"ng-template",106),e.qZA(),e.qZA(),e._UZ(11,"div",109),e.qZA()),2&t){const _=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",_)}}const ye=function(t){return{active:t}};function gt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",80),e.SDv(2,81),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"div",82),e.TgZ(5,"select",83),e.YNc(6,it,2,0,"option",84),e.YNc(7,nt,2,1,"option",85),e.YNc(8,st,2,1,"option",85),e.YNc(9,at,2,2,"option",86),e.qZA(),e.TgZ(10,"span",87),e.TgZ(11,"button",88),e.NdJ("click",function(){e.CHM(_);const n=e.oxw(3);return n.data.erasureInfo=!n.data.erasureInfo}),e._UZ(12,"i",89),e.qZA(),e.YNc(13,lt,2,3,"button",90),e.YNc(14,rt,3,3,"button",91),e.qZA(),e.qZA(),e.YNc(15,Et,12,1,"span",92),e.qZA(),e.qZA()}if(2&t){const _=e.oxw(3);e.xp6(6),e.Q6J("ngIf",!_.ecProfiles),e.xp6(1),e.Q6J("ngIf",_.ecProfiles&&0===_.ecProfiles.length),e.xp6(1),e.Q6J("ngIf",_.ecProfiles&&_.ecProfiles.length>0),e.xp6(1),e.Q6J("ngForOf",_.ecProfiles),e.xp6(2),e.Q6J("ngClass",e.VKq(9,ye,_.data.erasureInfo)),e.xp6(1),e.Q6J("ngClass",e.VKq(11,F,_.icons.questionCircle)),e.xp6(1),e.Q6J("ngIf",!_.editing),e.xp6(1),e.Q6J("ngIf",!_.editing),e.xp6(1),e.Q6J("ngIf",_.data.erasureInfo&&_.form.getValue("erasureProfile"))}}function pt(t,i){1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",115),e.SDv(2,116),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"span",55),e.SDv(5,117),e.qZA(),e.qZA(),e.qZA())}function Rt(t,i){1&t&&(e.TgZ(0,"span",55),e.TgZ(1,"span"),e.SDv(2,120),e.qZA(),e._uU(3,"\xa0 "),e.qZA())}function mt(t,i){if(1&t&&(e.TgZ(0,"option",94),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("ngValue",_),e.xp6(1),e.hij(" ",_.rule_name," ")}}function Ct(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",97),e.NdJ("click",function(){return e.CHM(_),e.oxw(5).addCrushRule()}),e._UZ(1,"i",89),e.qZA()}if(2&t){const _=e.oxw(5);e.xp6(1),e.Q6J("ngClass",e.VKq(1,F,_.icons.add))}}function Mt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"button",126,127),e.NdJ("click",function(){return e.CHM(_),e.oxw(5).deleteCrushRule()}),e._UZ(2,"i",89),e.qZA()}if(2&t){const _=e.oxw(5);e.xp6(2),e.Q6J("ngClass",e.VKq(1,F,_.icons.trash))}}const ht=function(){return["steps","type","rule_name"]};function Tt(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",110),2&t){const _=e.oxw(6);e.Q6J("renderObjects",!1)("hideKeys",e.DdM(4,ht))("data",_.form.getValue("crushRule"))("autoReload",!1)}}function St(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit,o=e.oxw(7);e.xp6(1),e.hij(" ",o.describeCrushStep(_)," ")}}function Lt(t,i){if(1&t&&(e.TgZ(0,"ol"),e.YNc(1,St,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(6);e.xp6(1),e.Q6J("ngForOf",_.form.get("crushRule").value.steps)}}function At(t,i){1&t&&(e.TgZ(0,"span"),e.SDv(1,136),e.qZA())}function Ft(t,i){if(1&t&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.xp6(1),e.hij(" ",_," ")}}function Nt(t,i){if(1&t&&(e.TgZ(0,"ul"),e.YNc(1,Ft,2,1,"li",114),e.qZA()),2&t){const _=e.oxw(7);e.xp6(1),e.Q6J("ngForOf",_.crushUsage)}}function bt(t,i){if(1&t&&(e.YNc(0,At,2,0,"ng-template",null,135,e.W1O),e.YNc(2,Nt,2,1,"ul",112)),2&t){const _=e.MAs(1),o=e.oxw(6);e.xp6(2),e.Q6J("ngIf",o.crushUsage)("ngIfElse",_)}}function vt(t,i){if(1&t&&(e.TgZ(0,"div",128),e.TgZ(1,"ul",101,129),e.TgZ(3,"li",130),e.TgZ(4,"a",104),e.SDv(5,131),e.qZA(),e.YNc(6,Tt,1,5,"ng-template",106),e.qZA(),e.TgZ(7,"li",132),e.TgZ(8,"a",104),e.SDv(9,133),e.qZA(),e.YNc(10,Lt,2,1,"ng-template",106),e.qZA(),e.TgZ(11,"li",107),e.TgZ(12,"a",104),e.SDv(13,134),e.qZA(),e.YNc(14,bt,3,2,"ng-template",106),e.qZA(),e.qZA(),e._UZ(15,"div",109),e.qZA()),2&t){const _=e.MAs(2);e.xp6(15),e.Q6J("ngbNavOutlet",_)}}function It(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,137),e.qZA())}function $t(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,138),e.qZA())}function Dt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"div",82),e.TgZ(2,"select",121),e.TgZ(3,"option",94),e.SDv(4,122),e.qZA(),e.YNc(5,mt,2,2,"option",86),e.qZA(),e.TgZ(6,"span",87),e.TgZ(7,"button",123),e.NdJ("click",function(){e.CHM(_);const n=e.oxw(4);return n.data.crushInfo=!n.data.crushInfo}),e._UZ(8,"i",89),e.qZA(),e.YNc(9,Ct,2,3,"button",90),e.YNc(10,Mt,3,3,"button",124),e.qZA(),e.qZA(),e.YNc(11,vt,16,1,"div",125),e.YNc(12,It,2,0,"span",13),e.YNc(13,$t,2,0,"span",13),e.qZA()}if(2&t){e.oxw(3);const _=e.MAs(2),o=e.oxw();e.xp6(3),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.current.rules),e.xp6(2),e.Q6J("ngClass",e.VKq(9,ye,o.data.crushInfo)),e.xp6(1),e.Q6J("ngClass",e.VKq(11,F,o.icons.questionCircle)),e.xp6(1),e.Q6J("ngIf",o.isReplicated&&!o.editing),e.xp6(1),e.Q6J("ngIf",o.isReplicated&&!o.editing),e.xp6(1),e.Q6J("ngIf",o.data.crushInfo&&o.form.getValue("crushRule")),e.xp6(1),e.Q6J("ngIf",o.form.showError("crushRule",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("crushRule",_,"tooFewOsds"))}}function Zt(t,i){if(1&t&&(e.TgZ(0,"div",8),e.TgZ(1,"label",115),e.SDv(2,118),e.qZA(),e.TgZ(3,"div",11),e.YNc(4,Rt,4,0,"ng-template",null,119,e.W1O),e.YNc(6,Dt,14,13,"div",112),e.qZA(),e.qZA()),2&t){const _=e.MAs(5),o=e.oxw(3);e.xp6(6),e.Q6J("ngIf",o.current.rules.length>0)("ngIfElse",_)}}function xt(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"legend"),e.SDv(2,79),e.qZA(),e.YNc(3,gt,16,13,"div",51),e.YNc(4,pt,6,0,"div",51),e.YNc(5,Zt,7,2,"div",51),e.qZA()),2&t){const _=e.oxw(2);e.xp6(3),e.Q6J("ngIf",_.isErasure),e.xp6(1),e.Q6J("ngIf",_.isErasure&&!_.editing),e.xp6(1),e.Q6J("ngIf",_.isReplicated||_.editing)}}function yt(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Ut(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,156),e.qZA())}function qt(t,i){1&t&&(e.TgZ(0,"option",17),e.SDv(1,157),e.qZA())}function Ht(t,i){if(1&t&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&t){const _=i.$implicit;e.Q6J("value",_),e.xp6(1),e.hij(" ",_," ")}}function Gt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,158),e.qZA())}function zt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,159),e.qZA())}function Xt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,160),e.qZA())}function wt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,161),e.qZA())}function Qt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,162),e.qZA())}function Jt(t,i){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"div",8),e.TgZ(2,"label",144),e.SDv(3,145),e.qZA(),e.TgZ(4,"div",11),e.TgZ(5,"select",146),e.YNc(6,Ut,2,0,"option",84),e.YNc(7,qt,2,0,"option",84),e.YNc(8,Ht,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.TgZ(9,"div",8),e.TgZ(10,"label",147),e.SDv(11,148),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",149),e.YNc(14,Gt,2,0,"span",13),e.YNc(15,zt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(16,"div",8),e.TgZ(17,"label",150),e.SDv(18,151),e.qZA(),e.TgZ(19,"div",11),e._UZ(20,"input",152),e.YNc(21,Xt,2,0,"span",13),e.YNc(22,wt,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(23,"div",8),e.TgZ(24,"label",153),e.SDv(25,154),e.qZA(),e.TgZ(26,"div",11),e._UZ(27,"input",155),e.YNc(28,Qt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA()),2&t){e.oxw(2);const _=e.MAs(2),o=e.oxw();e.xp6(6),e.Q6J("ngIf",!o.info.compression_algorithms),e.xp6(1),e.Q6J("ngIf",o.info.compression_algorithms&&0===o.info.compression_algorithms.length),e.xp6(1),e.Q6J("ngForOf",o.info.compression_algorithms),e.xp6(6),e.Q6J("ngIf",o.form.showError("minBlobSize",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("minBlobSize",_,"maximum")),e.xp6(6),e.Q6J("ngIf",o.form.showError("maxBlobSize",_,"min")),e.xp6(1),e.Q6J("ngIf",o.form.showError("maxBlobSize",_,"minimum")),e.xp6(6),e.Q6J("ngIf",o.form.showError("ratio",_,"min")||o.form.showError("ratio",_,"max"))}}function kt(t,i){if(1&t&&(e.TgZ(0,"div",139),e.TgZ(1,"legend"),e.SDv(2,140),e.qZA(),e.TgZ(3,"div",8),e.TgZ(4,"label",141),e.SDv(5,142),e.qZA(),e.TgZ(6,"div",11),e.TgZ(7,"select",143),e.YNc(8,yt,2,2,"option",19),e.qZA(),e.qZA(),e.qZA(),e.YNc(9,Jt,29,8,"div",20),e.qZA()),2&t){const _=e.oxw(2);e.xp6(8),e.Q6J("ngForOf",_.info.compression_modes),e.xp6(1),e.Q6J("ngIf",_.hasCompressionEnabled())}}function Vt(t,i){1&t&&(e.TgZ(0,"span",41),e.SDv(1,163),e.qZA())}function Yt(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.YNc(14,qo,2,0,"span",13),e.YNc(15,Ho,2,0,"span",13),e.YNc(16,Go,2,0,"span",13),e.YNc(17,zo,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(18,"div",8),e.TgZ(19,"label",14),e.SDv(20,15),e.qZA(),e.TgZ(21,"div",11),e.TgZ(22,"select",16),e.TgZ(23,"option",17),e.SDv(24,18),e.qZA(),e.YNc(25,Xo,2,2,"option",19),e.qZA(),e.YNc(26,wo,2,0,"span",13),e.qZA(),e.qZA(),e.YNc(27,ot,10,4,"div",20),e.TgZ(28,"div",8),e.TgZ(29,"label",21),e.SDv(30,22),e.qZA(),e.TgZ(31,"div",11),e.TgZ(32,"cd-select-badges",23),e.NdJ("selection",function(){return e.CHM(_),e.oxw().appSelection()}),e.qZA(),e.YNc(33,tt,1,3,"i",24),e.qZA(),e.qZA(),e.YNc(34,xt,6,3,"div",20),e.YNc(35,kt,10,2,"div",25),e.TgZ(36,"div"),e.TgZ(37,"legend"),e.SDv(38,26),e.qZA(),e.TgZ(39,"div",8),e.TgZ(40,"label",27),e.ynx(41),e.SDv(42,28),e.BQk(),e.TgZ(43,"cd-helper"),e.TgZ(44,"span"),e.SDv(45,29),e.qZA(),e._UZ(46,"br"),e.TgZ(47,"span"),e.SDv(48,30),e.qZA(),e.qZA(),e.qZA(),e.TgZ(49,"div",11),e._UZ(50,"input",31),e.qZA(),e.qZA(),e.TgZ(51,"div",8),e.TgZ(52,"label",32),e.ynx(53),e.SDv(54,33),e.BQk(),e.TgZ(55,"cd-helper"),e.TgZ(56,"span"),e.SDv(57,34),e.qZA(),e._UZ(58,"br"),e.TgZ(59,"span"),e.SDv(60,35),e.qZA(),e.qZA(),e.qZA(),e.TgZ(61,"div",11),e._UZ(62,"input",36),e.YNc(63,Vt,2,0,"span",13),e.qZA(),e.qZA(),e.qZA(),e.TgZ(64,"div",37),e.TgZ(65,"cd-rbd-configuration-form",38),e.NdJ("changes",function(n){return e.CHM(_),e.oxw().currentConfigurationValues=n()}),e.qZA(),e.qZA(),e.qZA(),e.TgZ(66,"div",39),e.TgZ(67,"cd-form-button-panel",40),e.NdJ("submitActionEvent",function(){return e.CHM(_),e.oxw().submit()}),e.ALo(68,"titlecase"),e.ALo(69,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&t){const _=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.form),e.xp6(6),e.pQV(e.lcZ(6,25,o.action))(e.lcZ(7,27,o.resource)),e.QtT(5),e.xp6(7),e.Q6J("ngIf",o.form.showError("name",_,"required")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"uniqueName")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"rbdPool")),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",_,"pattern")),e.xp6(8),e.Q6J("ngForOf",o.data.poolTypes),e.xp6(1),e.Q6J("ngIf",o.form.showError("poolType",_,"required")),e.xp6(1),e.Q6J("ngIf",o.isReplicated||o.isErasure),e.xp6(5),e.Q6J("customBadges",!0)("customBadgeValidators",o.data.applications.validators)("messages",o.data.applications.messages)("data",o.data.applications.selected)("options",o.data.applications.available)("selectionLimit",4),e.xp6(1),e.Q6J("ngIf",o.data.applications.selected<=0),e.xp6(1),e.Q6J("ngIf",o.isErasure||o.isReplicated),e.xp6(1),e.Q6J("ngIf",o.info.is_all_bluestore),e.xp6(28),e.Q6J("ngIf",o.form.showError("max_objects",_,"min")),e.xp6(1),e.Q6J("hidden",o.isErasure||-1===o.data.applications.selected.indexOf("rbd")),e.xp6(1),e.Q6J("form",o.form)("initializeData",o.initializeConfigData),e.xp6(2),e.Q6J("form",o.form)("submitText",e.lcZ(68,29,o.action)+" "+e.lcZ(69,31,o.resource))}}let Ue=(()=>{class t extends R_.E{constructor(_,o,n,s,c,d,P,p,R,h,T){super(),this.dimlessBinaryPipe=_,this.route=o,this.router=n,this.modalService=s,this.poolService=c,this.authStorageService=d,this.formatter=P,this.taskWrapper=p,this.ecpService=R,this.crushRuleService=h,this.actionLabels=T,this.editing=!1,this.isReplicated=!1,this.isErasure=!1,this.data=new No,this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new E_.t(1),this.currentConfigurationValues={},this.icons=b.P,this.crushUsage=void 0,this.ecpUsage=void 0,this.crushRuleMaxSize=10,this.editing=this.router.url.startsWith(`/pool/${M.MQ.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource="pool",this.authenticate(),this.createForm()}authenticate(){if(this.permission=this.authStorageService.getPermissions().pool,!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)throw new g_._2}createForm(){const _=new be.d({mode:new a.NI("none"),algorithm:new a.NI(""),minBlobSize:new a.NI("",{updateOn:"blur"}),maxBlobSize:new a.NI("",{updateOn:"blur"}),ratio:new a.NI("",{updateOn:"blur"})});this.form=new be.d({name:new a.NI("",{validators:[a.kI.pattern(/^[.A-Za-z0-9_/-]+$/),a.kI.required,E.h.custom("rbdPool",()=>this.form&&this.form.getValue("name").includes("/")&&this.data&&-1!==this.data.applications.selected.indexOf("rbd"))]}),poolType:new a.NI("",{validators:[a.kI.required]}),crushRule:new a.NI(null,{validators:[E.h.custom("tooFewOsds",o=>this.info&&o&&this.info.osd_count<1),E.h.custom("required",o=>this.isReplicated&&this.info.crush_rules_replicated.length>0&&!o)]}),size:new a.NI("",{updateOn:"blur"}),erasureProfile:new a.NI(null),pgNum:new a.NI("",{validators:[a.kI.required]}),pgAutoscaleMode:new a.NI(null),ecOverwrites:new a.NI(!1),compression:_,max_bytes:new a.NI(""),max_objects:new a.NI(0)},[E.h.custom("form",()=>null)])}ngOnInit(){this.poolService.getInfo().subscribe(_=>{this.initInfo(_),this.editing?this.initEditMode():(this.setAvailableApps(),this.loadingReady()),this.listenToChanges(),this.setComplexValidators()})}initInfo(_){this.pgAutoscaleModes=_.pg_autoscale_modes,this.form.silentSet("pgAutoscaleMode",_.pg_autoscale_default_mode),this.form.silentSet("algorithm",_.bluestore_compression_algorithm),this.info=_,this.initEcp(_.erasure_code_profiles)}initEcp(_){this.setListControlStatus("erasureProfile",_),this.ecProfiles=_}setListControlStatus(_,o){const n=this.form.get(_),s=n.value;1!==o.length||s&&u().isEqual(s,o[0])?0===o.length&&s&&n.setValue(null):n.setValue(o[0]),o.length<=1?n.enabled&&n.disable():n.disabled&&n.enable()}initEditMode(){this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(_=>this.poolService.get(_.name).subscribe(o=>{this.data.pool=o,this.initEditFormData(o),this.loadingReady()}))}disableForEdit(){["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(_=>this.form.get(_).disable())}initEditFormData(_){this.initializeConfigData.next({initialData:_.configuration,sourceType:m_.h.pool}),this.poolTypeChange(_.type);const o=this.info.crush_rules_replicated.concat(this.info.crush_rules_erasure),n={name:_.pool_name,poolType:_.type,crushRule:o.find(s=>s.rule_name===_.crush_rule),size:_.size,erasureProfile:this.ecProfiles.find(s=>s.name===_.erasure_code_profile),pgAutoscaleMode:_.pg_autoscale_mode,pgNum:_.pg_num,ecOverwrites:_.flags_names.includes("ec_overwrites"),mode:_.options.compression_mode,algorithm:_.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(_.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(_.options.compression_max_blob_size),ratio:_.options.compression_required_ratio,max_bytes:this.dimlessBinaryPipe.transform(_.quota_max_bytes),max_objects:_.quota_max_objects};Object.keys(n).forEach(s=>{const c=n[s];!u().isUndefined(c)&&""!==c&&this.form.silentSet(s,c)}),this.data.pgs=this.form.getValue("pgNum"),this.setAvailableApps(this.data.applications.default.concat(_.application_metadata)),this.data.applications.selected=_.application_metadata}setAvailableApps(_=this.data.applications.default){this.data.applications.available=u().uniq(_.sort()).map(o=>new p_.$(!1,o,""))}listenToChanges(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()}listenToChangesDuringAddEdit(){this.form.get("pgNum").valueChanges.subscribe(_=>{const o=_-this.data.pgs;1===Math.abs(o)&&2!==_?this.doPgPowerJump(o):this.data.pgs=_})}doPgPowerJump(_){const o=this.calculatePgPower()+_;this.setPgs(-1===_?Math.round(o):Math.floor(o))}calculatePgPower(_=this.form.getValue("pgNum")){return Math.log(_)/Math.log(2)}setPgs(_){const o=Math.pow(2,_<0?0:_);this.data.pgs=o,this.form.silentSet("pgNum",o)}listenToChangesDuringAdd(){this.form.get("poolType").valueChanges.subscribe(_=>{this.poolTypeChange(_)}),this.form.get("crushRule").valueChanges.subscribe(_=>{this.crushDeletionBtn&&this.crushDeletionBtn.isOpen()&&this.crushDeletionBtn.close(),_&&(this.setCorrectMaxSize(_),this.crushRuleIsUsedBy(_.rule_name),this.replicatedRuleChange(),this.pgCalc())}),this.form.get("size").valueChanges.subscribe(()=>{this.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(_=>{this.ecpDeletionBtn&&this.ecpDeletionBtn.isOpen()&&this.ecpDeletionBtn.close(),_&&(this.ecpIsUsedBy(_.name),this.pgCalc())}),this.form.get("mode").valueChanges.subscribe(()=>{["minBlobSize","maxBlobSize","ratio"].forEach(_=>{this.form.get(_).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(()=>{this.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(()=>{this.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})}poolTypeChange(_){if("replicated"===_?this.setTypeBooleans(!0,!1):this.setTypeBooleans(!1,"erasure"===_),!_||!this.info)return void(this.current.rules=[]);const o=this.info["crush_rules_"+_]||[];this.current.rules=o,!this.editing&&(this.isReplicated&&this.setListControlStatus("crushRule",o),this.replicatedRuleChange(),this.pgCalc())}setTypeBooleans(_,o){this.isReplicated=_,this.isErasure=o}replicatedRuleChange(){if(!this.isReplicated)return;const _=this.form.get("size");let o=this.form.getValue("size")||3;const n=this.getMinSize(),s=this.getMaxSize();o<n?o=n:o>s&&(o=s),o!==_.value&&this.form.silentSet("size",o)}getMinSize(){return!this.info||this.info.osd_count<1?0:1}getMaxSize(){const _=this.form.getValue("crushRule");return this.info?_?_.usable_size:Math.min(this.info.osd_count,3):0}pgCalc(){const _=this.form.getValue("poolType");if(!this.info||this.form.get("pgNum").dirty||!_)return;const o=100*this.info.osd_count,n=this.isReplicated?this.replicatedPgCalc(o):this.erasurePgCalc(o);if(!n)return;const s=this.data.pgs;this.alignPgs(n),this.externalPgChange||(this.externalPgChange=s!==this.data.pgs)}setCorrectMaxSize(_=this.form.getValue("crushRule")){if(!_)return;const n=S.searchFailureDomains(this.info.nodes,_.steps[0].item_name)[_.steps[1].type];_.usable_size=Math.min(n?n.length:this.crushRuleMaxSize,this.crushRuleMaxSize)}replicatedPgCalc(_){const o=this.form.get("size"),n=o.value;return o.valid&&n>0?_/n:0}erasurePgCalc(_){const o=this.form.get("erasureProfile"),n=o.value;return(o.valid||o.disabled)&&n?_/(n.k+n.m):0}alignPgs(_=this.form.getValue("pgNum")){this.setPgs(Math.round(this.calculatePgPower(_<1?1:_)))}setComplexValidators(){this.editing?this.form.get("name").setValidators([this.form.get("name").validator,E.h.custom("uniqueName",_=>this.data.pool&&this.info&&-1!==this.info.pool_names.indexOf(_)&&this.info.pool_names.indexOf(_)!==this.info.pool_names.indexOf(this.data.pool.pool_name))]):(E.h.validateIf(this.form.get("size"),()=>this.isReplicated,[E.h.custom("min",_=>this.form.getValue("size")&&_<this.getMinSize()),E.h.custom("max",_=>this.form.getValue("size")&&this.getMaxSize()<_)]),this.form.get("name").setValidators([this.form.get("name").validator,E.h.custom("uniqueName",_=>this.info&&-1!==this.info.pool_names.indexOf(_))])),this.setCompressionValidators()}setCompressionValidators(){E.h.validateIf(this.form.get("minBlobSize"),()=>this.hasCompressionEnabled(),[a.kI.min(0),E.h.custom("maximum",_=>this.oddBlobSize(_,this.form.getValue("maxBlobSize")))]),E.h.validateIf(this.form.get("maxBlobSize"),()=>this.hasCompressionEnabled(),[a.kI.min(0),E.h.custom("minimum",_=>this.oddBlobSize(this.form.getValue("minBlobSize"),_))]),E.h.validateIf(this.form.get("ratio"),()=>this.hasCompressionEnabled(),[a.kI.min(0),a.kI.max(1)])}oddBlobSize(_,o){const n=this.formatter.toBytes(_),s=this.formatter.toBytes(o);return Boolean(n&&s&&n>=s)}hasCompressionEnabled(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()}describeCrushStep(_){return[_.op.replace("_"," "),_.item_name||"",_.type?_.num+" type "+_.type:""].join(" ")}addErasureCodeProfile(){this.addModal(Ao,_=>this.reloadECPs(_))}addModal(_,o){this.hideOpenTooltips(),this.modalService.show(_).componentInstance.submitAction.subscribe(s=>{o(s.name)})}hideOpenTooltips(){const _=o=>o&&o.isOpen()&&o.close();_(this.ecpDeletionBtn),_(this.crushDeletionBtn)}reloadECPs(_){this.reloadList({newItemName:_,getInfo:()=>this.ecpService.list(),initInfo:o=>this.initEcp(o),findNewItem:()=>this.ecProfiles.find(o=>o.name===_),controlName:"erasureProfile"})}reloadList({newItemName:_,getInfo:o,initInfo:n,findNewItem:s,controlName:c}){this.modalSubscription&&this.modalSubscription.unsubscribe(),o().subscribe(d=>{if(n(d),!_)return;const P=s();P&&this.form.get(c).setValue(P)})}deleteErasureCodeProfile(){this.deletionModal({value:this.form.getValue("erasureProfile"),usage:this.ecpUsage,deletionBtn:this.ecpDeletionBtn,dataName:"erasureInfo",getTabs:()=>this.ecpInfoTabs,tabPosition:"used-by-pools",nameAttribute:"name",itemDescription:"erasure code profile",reloadFn:()=>this.reloadECPs(),deleteFn:_=>this.ecpService.delete(_),taskName:"ecp/delete"})}deletionModal({value:_,usage:o,deletionBtn:n,dataName:s,getTabs:c,tabPosition:d,nameAttribute:P,itemDescription:p,reloadFn:R,deleteFn:h,taskName:T}){if(!_)return;if(o)return n.animation=!1,n.toggle(),this.data[s]=!0,void setTimeout(()=>{const f=c();f&&f.select(d)},50);const m=_[P];this.modalService.show(Ne.M,{itemDescription:p,itemNames:[m],submitActionObservable:()=>{const f=h(m);return f.subscribe(()=>R()),this.taskWrapper.wrapTaskAroundCall({task:new v.R(T,{name:m}),call:f})}})}addCrushRule(){this.addModal($_,_=>this.reloadCrushRules(_))}reloadCrushRules(_){this.reloadList({newItemName:_,getInfo:()=>this.poolService.getInfo(),initInfo:o=>{this.initInfo(o),this.poolTypeChange("replicated")},findNewItem:()=>this.info.crush_rules_replicated.find(o=>o.rule_name===_),controlName:"crushRule"})}deleteCrushRule(){this.deletionModal({value:this.form.getValue("crushRule"),usage:this.crushUsage,deletionBtn:this.crushDeletionBtn,dataName:"crushInfo",getTabs:()=>this.crushInfoTabs,tabPosition:"used-by-pools",nameAttribute:"rule_name",itemDescription:"crush rule",reloadFn:()=>this.reloadCrushRules(),deleteFn:_=>this.crushRuleService.delete(_),taskName:"crushRule/delete"})}crushRuleIsUsedBy(_){this.crushUsage=_?this.info.used_rules[_]:void 0}ecpIsUsedBy(_){this.ecpUsage=_?this.info.used_profiles[_]:void 0}submit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const _={pool:this.form.getValue("name")};this.assignFormFields(_,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_autoscale_mode",formControlName:"pgAutoscaleMode",editable:!0},{externalFieldName:"pg_num",formControlName:"pgNum",replaceFn:n=>"on"===this.form.getValue("pgAutoscaleMode")?1:n,editable:!0},this.isReplicated?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",replaceFn:n=>this.isReplicated?n&&n.rule_name:void 0},{externalFieldName:"quota_max_bytes",formControlName:"max_bytes",replaceFn:this.formatter.toBytes,editable:!0,resetValue:this.editing?0:void 0},{externalFieldName:"quota_max_objects",formControlName:"max_objects",editable:!0,resetValue:this.editing?0:void 0}]),this.info.is_all_bluestore&&(this.assignFormField(_,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:()=>this.isErasure?["ec_overwrites"]:void 0}),"none"!==this.form.getValue("mode")?this.assignFormFields(_,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:n=>this.hasCompressionEnabled()&&n},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(_,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:()=>"unset"},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:()=>this.data.pool.pool_name}]));const o=this.data.applications.selected;(o.length>0||this.editing)&&(_.application_metadata=o),this.isReplicated&&!u().isEmpty(this.currentConfigurationValues)&&(_.configuration=this.currentConfigurationValues),this.triggerApiTask(_)}assignFormFields(_,o){o.forEach(n=>this.assignFormField(_,n))}assignFormField(_,{externalFieldName:o,formControlName:n,attr:s,replaceFn:c,editable:d,resetValue:P}){if(this.editing&&(!d||this.form.get(n).pristine))return;const p=this.form.getValue(n);let R=c?c(p):s?u().get(p,s):p;if(!p||!R){if(!d||u().isUndefined(P))return;R=P}_[o]=R}triggerApiTask(_){this.taskWrapper.wrapTaskAroundCall({task:new v.R("pool/"+(this.editing?M.MQ.EDIT:M.MQ.CREATE),{pool_name:_.hasOwnProperty("srcpool")?_.srcpool:_.pool}),call:this.poolService[this.editing?M.MQ.UPDATE:M.MQ.CREATE](_)}).subscribe({error:o=>{u().isObject(o.error)&&"34"===o.error.code&&this.form.get("pgNum").setErrors({34:!0}),this.form.setErrors({cdSubmitButton:!0})},complete:()=>this.router.navigate(["/pool"])})}appSelection(){this.form.get("name").updateValueAndValidity({emitEvent:!1,onlySelf:!0})}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(C_.$),e.Y36(Oe.gz),e.Y36(Oe.F0),e.Y36(Ze.Z),e.Y36(ue.q),e.Y36(he.j),e.Y36(M_.H),e.Y36(de.P),e.Y36(Me),e.Y36(Ie.H),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-form"]],viewQuery:function(_,o){if(1&_&&(e.Gf(Zo,5),e.Gf(xo,5),e.Gf(yo,5),e.Gf(Uo,5)),2&_){let n;e.iGM(n=e.CRH())&&(o.crushInfoTabs=n.first),e.iGM(n=e.CRH())&&(o.crushDeletionBtn=n.first),e.iGM(n=e.CRH())&&(o.ecpInfoTabs=n.first),e.iGM(n=e.CRH())&&(o.ecpDeletionBtn=n.first)}},features:[e.qOj],decls:1,vars:1,consts:function(){let i,_,o,n,s,c,d,P,p,R,h,T,m,f,A,I,$,D,Z,x,y,U,q,H,G,z,X,w,Q,J,k,V,Y,B,j,K,N,W,ee,_e,oe,te,ie,ne,se,ae,le,re,ce,O,Xe,we,Qe,Je,ke,Ve,Ye,Be,je,Ke,We,e_,__,o_,t_,i_,n_,s_,a_,l_,r_,c_,O_;return i="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",_="Name",o="Name...",n="Pool type",s="-- Select a pool type --",c="Applications",d="Pools should be associated with an application tag",P="Quotas",p="Max bytes",R="Leave it blank or specify 0 to disable this quota.",h="A valid quota should be greater than 0.",T="e.g., 10GiB",m="Max objects",f="Leave it blank or specify 0 to disable this quota.",A="A valid quota should be greater than 0.",I="This field is required!",$="The chosen Ceph pool name is already in use.",D="It's not possible to create an RBD pool with '/' in the name. Please change the name or remove 'rbd' from the applications list.",Z="Pool name can only contain letters, numbers, '.', '-', '_' or '/'.",x="This field is required!",y="PG Autoscale",U="Placement groups",q="Calculation help",H="This field is required!",G="At least one placement group is needed!",z="Your cluster can't handle this many PGs. Please recalculate the PG amount needed.",X="The current PGs settings were calculated for you, you should make sure the values suit your needs before submit.",w="Replicated size",Q="Minimum: " + "\ufffd0\ufffd" + "",J="Maximum: " + "\ufffd0\ufffd" + "",k="The size specified is out of range. A value from " + "\ufffd0\ufffd" + " to " + "\ufffd1\ufffd" + " is usable.",V="A size of 1 will not create a replication of the object. The 'Replicated size' includes the object itself.",Y="Flags",B="EC Overwrites",j="CRUSH",K="Erasure code profile",N="This profile can't be deleted as it is in use.",W="Loading...",ee="-- No erasure code profile available --",_e="-- Select an erasure code profile --",oe="Profile",te="Used by pools",ie="Profile is not in use.",ne="Crush ruleset",se="A new crush ruleset will be implicitly created.",ae="Crush ruleset",le="There are no rules.",re="-- Select a crush rule --",ce="Placement and\n                            replication strategies or distribution policies that allow to\n                            specify how CRUSH places data replicas.",O="This rule can't be deleted as it is in use.",Xe="Crush rule",we="Crush steps",Qe="Used by pools",Je="Rule is not in use.",ke="This field is required!",Ve="The rule can't be used in the current cluster as it has too few OSDs to meet the minimum required OSD by this rule.",Ye="Compression",Be="Mode",je="Algorithm",Ke="Minimum blob size",We="e.g., 128KiB",e_="Maximum blob size",__="e.g., 512KiB",o_="Ratio",t_="Compression ratio",i_="Loading...",n_="-- No erasure compression algorithm available --",s_="Value should be greater than 0",a_="Value should be less than the maximum blob size",l_="Value should be greater than 0",r_="Value should be greater than the minimum blob size",c_="Value should be between 0.0 and 1.0",O_="The value should be greater or equal to 0",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],i,[1,"card-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],_,[1,"cd-col-form-input"],["id","name","name","name","type","text","placeholder",o,"formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","poolType",1,"cd-col-form-label","required"],n,["id","poolType","formControlName","poolType","name","poolType",1,"form-control"],["ngValue",""],s,[3,"value",4,"ngFor","ngForOf"],[4,"ngIf"],["for","applications",1,"cd-col-form-label"],c,["id","applications",3,"customBadges","customBadgeValidators","messages","data","options","selectionLimit","selection"],["title",d,3,"class",4,"ngIf"],["formGroupName","compression",4,"ngIf"],P,["for","max_bytes",1,"cd-col-form-label"],p,R,h,["id","max_bytes","name","max_bytes","type","text","formControlName","max_bytes","placeholder",T,"defaultUnit","GiB","cdDimlessBinary","",1,"form-control"],["for","max_objects",1,"cd-col-form-label"],m,f,A,["id","max_objects","min","0","name","max_objects","type","number","formControlName","max_objects",1,"form-control"],[3,"hidden"],[3,"form","initializeData","changes"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],I,$,D,Z,[3,"value"],x,["for","pgAutoscaleMode",1,"cd-col-form-label"],y,["id","pgAutoscaleMode","name","pgAutoscaleMode","formControlName","pgAutoscaleMode",1,"form-control"],["class","form-group row",4,"ngIf"],["for","pgNum",1,"cd-col-form-label","required"],U,["id","pgNum","name","pgNum","formControlName","pgNum","min","1","type","number","required","",1,"form-control",3,"focus","blur"],[1,"form-text","text-muted"],["section","pgs","docText",q],["class","form-text text-muted",4,"ngIf"],H,G,z,X,["for","size",1,"cd-col-form-label","required"],w,["id","size","name","size","type","number","formControlName","size",1,"form-control",3,"max","min"],["class","text-warning-dark",4,"ngIf"],[1,"list-inline"],Q,J,k,[1,"text-warning-dark"],V,[1,"cd-col-form-label"],Y,[1,"custom-control","custom-checkbox"],["type","checkbox","id","ec-overwrites","formControlName","ecOverwrites",1,"custom-control-input"],["for","ec-overwrites",1,"custom-control-label"],B,["title",d],j,["for","erasureProfile",1,"cd-col-form-label"],K,[1,"input-group"],["id","erasureProfile","name","erasureProfile","formControlName","erasureProfile",1,"form-control"],["ngValue","",4,"ngIf"],[3,"ngValue",4,"ngIf"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"input-group-append"],["id","ecp-info-button","type","button",1,"btn","btn-light",3,"ngClass","click"],["aria-hidden","true",3,"ngClass"],["class","btn btn-light","type","button",3,"click",4,"ngIf"],["class","btn btn-light","type","button","ngbTooltip",N,"triggers","manual",3,"click",4,"ngIf"],["class","form-text text-muted","id","ecp-info-block",4,"ngIf"],W,[3,"ngValue"],ee,_e,["type","button",1,"btn","btn-light",3,"click"],["type","button","ngbTooltip",N,"triggers","manual",1,"btn","btn-light",3,"click"],["ecpDeletionBtn","ngbTooltip"],["id","ecp-info-block",1,"form-text","text-muted"],["ngbNav","",1,"nav-tabs"],["ecpInfoTabs","ngbNav"],["ngbNavItem","ecp-info"],["ngbNavLink",""],oe,["ngbNavContent",""],["ngbNavItem","used-by-pools"],te,[3,"ngbNavOutlet"],[3,"renderObjects","hideKeys","data","autoReload"],["ecpIsNotUsed",""],[4,"ngIf","ngIfElse"],ie,[4,"ngFor","ngForOf"],["for","crushRule",1,"cd-col-form-label"],ne,se,ae,["noRules",""],le,["id","crushRule","formControlName","crushRule","name","crushSet",1,"form-control"],re,["id","crush-info-button","type","button","ngbTooltip",ce,1,"btn","btn-light",3,"ngClass","click"],["class","btn btn-light","type","button","ngbTooltip",O,"triggers","manual",3,"click",4,"ngIf"],["class","form-text text-muted","id","crush-info-block",4,"ngIf"],["type","button","ngbTooltip",O,"triggers","manual",1,"btn","btn-light",3,"click"],["crushDeletionBtn","ngbTooltip"],["id","crush-info-block",1,"form-text","text-muted"],["crushInfoTabs","ngbNav"],["ngbNavItem","crush-rule-info"],Xe,["ngbNavItem","crush-rule-steps"],we,Qe,["ruleIsNotUsed",""],Je,ke,Ve,["formGroupName","compression"],Ye,["for","mode",1,"cd-col-form-label"],Be,["id","mode","name","mode","formControlName","mode",1,"form-control"],["for","algorithm",1,"cd-col-form-label"],je,["id","algorithm","name","algorithm","formControlName","algorithm",1,"form-control"],["for","minBlobSize",1,"cd-col-form-label"],Ke,["id","minBlobSize","name","minBlobSize","formControlName","minBlobSize","type","text","min","0","placeholder",We,"defaultUnit","KiB","cdDimlessBinary","",1,"form-control"],["for","maxBlobSize",1,"cd-col-form-label"],e_,["id","maxBlobSize","type","text","min","0","formControlName","maxBlobSize","placeholder",__,"defaultUnit","KiB","cdDimlessBinary","",1,"form-control"],["for","ratio",1,"cd-col-form-label"],o_,["id","ratio","name","ratio","formControlName","ratio","type","number","min","0","max","1","step","0.1","placeholder",t_,1,"form-control"],i_,n_,s_,a_,l_,r_,c_,O_]},template:function(_,o){1&_&&e.YNc(0,Yt,70,33,"div",0),2&_&&e.Q6J("cdFormLoading",o.loading)},directives:[bo.y,a._Y,a.JL,fe.V,a.sg,Pe.P,Ee.o,a.Fj,ge.b,a.JJ,a.u,pe.U,C.O5,a.EJ,a.YN,a.Kr,C.sg,vo.m,Re.S,Io.Q,a.qQ,a.wV,$o.d,me.p,a.Q7,Do.K,a.Fd,a.Wl,C.mk,g._L,g.Pz,g.nv,g.Vx,g.uN,g.tO,xe.b,a.x0],pipes:[C.rS,Ce.m],styles:[".icon-warning-color[_ngcontent-%COMP%]{margin-left:3px}"]}),t})();var Bt=r(19773),jt=r(49671),Kt=r(68136),Te=r(69158),Se=r(35905),L=r(99466),Wt=r(91801),ei=r(68774),_i=r(66369),qe=r(38047),Le=r(51847);class oi{constructor(i){this.pool_name=i}}var ti=r(64724);let ii=(()=>{class t{constructor(_,o,n){this.templateRef=_,this.viewContainer=o,this.authStorageService=n,this.cdScopeMatchAll=!0}set cdScope(_){this.permissions=this.authStorageService.getPermissions(),this.isAuthorized(_)?this.viewContainer.createEmbeddedView(this.templateRef):this.viewContainer.clear()}isAuthorized(_){const o=this.cdScopeMatchAll?u().every:u().some;return u().isString(_)?u().get(this.permissions,[_,"read"],!1):u().isArray(_)?o(_,n=>this.permissions[n].read):!!u().isObject(_)&&o(_,(n,s)=>o(n,c=>this.permissions[s][c]))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(e.Rgc),e.Y36(e.s_b),e.Y36(he.j))},t.\u0275dir=e.lG2({type:t,selectors:[["","cdScope",""]],inputs:{cdScope:"cdScope",cdScopeMatchAll:"cdScopeMatchAll"}}),t})();var ni=r(94928),He=r(51295),si=r(59376),Ge=r(76317),ai=r(71752);function li(t,i){if(1&t&&e._UZ(0,"cd-table-key-value",12),2&t){const _=e.oxw(2);e.Q6J("renderObjects",!0)("data",_.poolDetails)("autoReload",!1)}}function ri(t,i){if(1&t&&e._UZ(0,"cd-grafana",15),2&t){const _=e.oxw(3);e.MGl("grafanaPath","ceph-pool-detail?var-pool_name=",_.selection.pool_name,""),e.Q6J("type","metrics")}}function ci(t,i){1&t&&(e.TgZ(0,"li",13),e.TgZ(1,"a",5),e.SDv(2,14),e.qZA(),e.YNc(3,ri,1,2,"ng-template",7),e.qZA())}function Oi(t,i){if(1&t&&e._UZ(0,"cd-rbd-configuration-table",18),2&t){const _=e.oxw(3);e.Q6J("data",_.selectedPoolConfiguration)}}function di(t,i){1&t&&(e.TgZ(0,"li",16),e.TgZ(1,"a",5),e.SDv(2,17),e.qZA(),e.YNc(3,Oi,1,1,"ng-template",7),e.qZA())}function ui(t,i){if(1&t&&e._UZ(0,"cd-table",21),2&t){const _=e.oxw(3);e.Q6J("data",_.cacheTiers)("columns",_.cacheTierColumns)("autoSave",!1)}}function fi(t,i){1&t&&(e.TgZ(0,"li",19),e.TgZ(1,"a",5),e.SDv(2,20),e.qZA(),e.YNc(3,ui,1,3,"ng-template",7),e.qZA())}function Pi(t,i){if(1&t&&(e.ynx(0,1),e.TgZ(1,"ul",2,3),e.TgZ(3,"li",4),e.TgZ(4,"a",5),e.SDv(5,6),e.qZA(),e.YNc(6,li,1,3,"ng-template",7),e.qZA(),e.YNc(7,ci,4,0,"li",8),e.YNc(8,di,4,0,"li",9),e.YNc(9,fi,4,0,"li",10),e.qZA(),e._UZ(10,"div",11),e.BQk()),2&t){const _=e.MAs(2),o=e.oxw();e.xp6(7),e.Q6J("ngIf",o.permissions.grafana.read),e.xp6(1),e.Q6J("ngIf","replicated"===o.selection.type),e.xp6(1),e.Q6J("ngIf",(null==o.selection.tiers?null:o.selection.tiers.length)>0),e.xp6(1),e.Q6J("ngbNavOutlet",_)}}let Ei=(()=>{class t{constructor(_){this.poolService=_,this.cacheTierColumns=[],this.omittedPoolAttributes=["cdExecuting","cdIsBinary","stats"],this.cacheTierColumns=[{prop:"pool_name",name:"Name",flexGrow:3},{prop:"cache_mode",name:"Cache Mode",flexGrow:2},{prop:"cache_min_evict_age",name:"Min Evict Age",flexGrow:2},{prop:"cache_min_flush_age",name:"Min Flush Age",flexGrow:2},{prop:"target_max_bytes",name:"Target Max Bytes",flexGrow:2},{prop:"target_max_objects",name:"Target Max Objects",flexGrow:2}]}ngOnChanges(){this.selection&&(this.poolService.getConfiguration(this.selection.pool_name).subscribe(_=>{He.T.updateChanged(this,{selectedPoolConfiguration:_})}),He.T.updateChanged(this,{poolDetails:u().omit(this.selection,this.omittedPoolAttributes)}))}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ue.q))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-details"]],inputs:{cacheTiers:"cacheTiers",permissions:"permissions",selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let i,_,o,n;return i="Details",_="Performance Details",o="Configuration",n="Cache Tiers Details",[["cdTableDetail","",4,"ngIf"],["cdTableDetail",""],["ngbNav","","cdStatefulTab","pool-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],i,["ngbNavContent",""],["ngbNavItem","performance-details",4,"ngIf"],["ngbNavItem","configuration",4,"ngIf"],["ngbNavItem","cache-tiers-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"renderObjects","data","autoReload"],["ngbNavItem","performance-details"],_,["uid","-xyV8KCiz","grafanaStyle","three",3,"grafanaPath","type"],["ngbNavItem","configuration"],o,[3,"data"],["ngbNavItem","cache-tiers-details"],n,["columnMode","flex",3,"data","columns","autoSave"]]},template:function(_,o){1&_&&e.YNc(0,Pi,11,4,"ng-container",0),2&_&&e.Q6J("ngIf",o.selection)},directives:[C.O5,g.Pz,si.m,g.nv,g.Vx,g.uN,g.tO,xe.b,Ge.F,ai.P,Se.a],styles:[""],changeDetection:0}),t})();var gi=r(60251);const pi=["poolUsageTpl"],Ri=["poolConfigurationSourceTpl"];function mi(t,i){if(1&t){const _=e.EpF();e.TgZ(0,"cd-table",9,10),e.NdJ("fetchData",function(){return e.CHM(_),e.oxw().taskListService.fetch()})("setExpandedRow",function(n){return e.CHM(_),e.oxw().setExpandedRow(n)})("updateSelection",function(n){return e.CHM(_),e.oxw().updateSelection(n)}),e._UZ(2,"cd-table-actions",11),e._UZ(3,"cd-pool-details",12),e.qZA()}if(2&t){const _=e.oxw();e.Q6J("data",_.pools)("columns",_.columns)("hasDetails",!0)("status",_.tableStatus)("autoReload",-1),e.xp6(2),e.Q6J("permission",_.permissions.pool)("selection",_.selection)("tableActions",_.tableActions),e.xp6(1),e.Q6J("selection",_.expandedRow)("permissions",_.permissions)("cacheTiers",_.cacheTiers)}}function Ci(t,i){1&t&&e._UZ(0,"cd-grafana",14),2&t&&e.Q6J("grafanaPath","ceph-pools-overview?")("type","metrics")}function Mi(t,i){1&t&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,13),e.qZA(),e.YNc(3,Ci,1,2,"ng-template",5),e.qZA())}function hi(t,i){if(1&t&&e._UZ(0,"cd-usage-bar",16),2&t){const _=e.oxw().row;e.Q6J("total",_.stats.bytes_used.latest+_.stats.avail_raw.latest)("used",_.stats.bytes_used.latest)}}function Ti(t,i){if(1&t&&e.YNc(0,hi,1,2,"cd-usage-bar",15),2&t){const _=i.row;e.Q6J("ngIf",null==_.stats||null==_.stats.avail_raw?null:_.stats.avail_raw.latest)}}let Si=(()=>{class t extends Kt.o{constructor(_,o,n,s,c,d,P,p,R,h,T){super(),this.poolService=_,this.taskWrapper=o,this.ecpService=n,this.authStorageService=s,this.taskListService=c,this.modalService=d,this.pgCategoryService=P,this.dimlessPipe=p,this.urlBuilder=R,this.configurationService=h,this.actionLabels=T,this.selection=new ei.r,this.executingTasks=[],this.tableStatus=new Te.E,this.cacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:b.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:b.P.edit,routerLink:()=>this.urlBuilder.getEdit(encodeURIComponent(this.selection.first().pool_name)),name:this.actionLabels.EDIT},{permission:"delete",icon:b.P.destroy,click:()=>this.deletePoolModal(),name:this.actionLabels.DELETE,disable:this.getDisableDesc.bind(this)}],this.permissions.configOpt.read&&this.configurationService.get("mon_allow_pool_delete").subscribe(m=>{if(u().has(m,"value")){const f=u().find(m.value,A=>"mon"===A.section)||{value:!1};this.monAllowPoolDelete="true"===f.value}})}ngOnInit(){const _=(o,n,s)=>u().get(n,o)>u().get(s,o)?1:-1;this.columns=[{prop:"pool_name",name:"Name",flexGrow:4,cellTransformation:L.e.executing},{prop:"data_protection",name:"Data Protection",cellTransformation:L.e.badge,customTemplateConfig:{class:"badge-background-gray"},flexGrow:1.3},{prop:"application_metadata",name:"Applications",cellTransformation:L.e.badge,customTemplateConfig:{class:"badge-background-primary"},flexGrow:1.5},{prop:"pg_status",name:"PG Status",flexGrow:1.2,cellClass:({row:o,column:n,value:s})=>this.getPgStatusCellClass(o,n,s)},{prop:"crush_rule",name:"Crush Ruleset",isHidden:!0,flexGrow:2},{name:"Usage",prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:1.2},{prop:"stats.rd_bytes.rates",name:"Read bytes",comparator:(o,n,s,c)=>_("stats.rd_bytes.latest",s,c),cellTransformation:L.e.sparkline,flexGrow:1.5},{prop:"stats.wr_bytes.rates",name:"Write bytes",comparator:(o,n,s,c)=>_("stats.wr_bytes.latest",s,c),cellTransformation:L.e.sparkline,flexGrow:1.5},{prop:"stats.rd.rate",name:"Read ops",flexGrow:1,pipe:this.dimlessPipe,cellTransformation:L.e.perSecond},{prop:"stats.wr.rate",name:"Write ops",flexGrow:1,pipe:this.dimlessPipe,cellTransformation:L.e.perSecond}],this.taskListService.init(()=>this.ecpService.list().pipe((0,Bt.zg)(o=>(this.ecProfileList=o,this.poolService.getList()))),void 0,o=>{this.pools=this.transformPoolsData(o),this.tableStatus=new Te.E},()=>{this.table.reset(),this.tableStatus=new Te.E(Wt.T.ValueException)},o=>o.name.startsWith("pool/"),(o,n)=>n.metadata.pool_name===o.pool_name,{default:o=>new oi(o.pool_name)})}updateSelection(_){this.selection=_}deletePoolModal(){const _=this.selection.first().pool_name;this.modalService.show(Ne.M,{itemDescription:"Pool",itemNames:[_],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new v.R(`pool/${M.MQ.DELETE}`,{pool_name:_}),call:this.poolService.delete(_)})})}getPgStatusCellClass(_,o,n){return{"text-right":!0,[`pg-${this.pgCategoryService.getTypeByStates(n)}`]:!0}}getErasureCodeProfile(_){let o="";return u().forEach(this.ecProfileList,n=>{n.name===_&&(o=`EC: ${n.k}+${n.m}`)}),o}transformPoolsData(_){const o=["bytes_used","max_avail","avail_raw","percent_used","rd_bytes","wr_bytes","rd","wr"],n={latest:0,rate:0,rates:[]};return u().forEach(_,s=>{s.pg_status=this.transformPgStatus(s.pg_status);const c={};u().forEach(o,d=>{c[d]=s.stats&&s.stats[d]?s.stats[d]:n}),s.stats=c,s.usage=c.percent_used.latest,!s.cdExecuting&&s.pg_num+s.pg_placement_num!==s.pg_num_target+s.pg_placement_num_target&&(s.cdExecuting="Updating"),["rd_bytes","wr_bytes"].forEach(d=>{s.stats[d].rates=s.stats[d].rates.map(P=>P[1])}),s.cdIsBinary=!0,"erasure"===s.type&&(s.data_protection=this.getErasureCodeProfile(s.erasure_code_profile)),"replicated"===s.type&&(s.data_protection=`replica: \xd7${s.size}`)}),_}transformPgStatus(_){const o=[];return u().forEach(_,(n,s)=>{o.push(`${n} ${s}`)}),o.join(", ")}getSelectionTiers(){if(void 0!==this.expandedRow){const _=this.expandedRow.tiers;this.cacheTiers=this.pools.filter(o=>_.includes(o.pool))}}getDisableDesc(){var _;return!(null===(_=this.selection)||void 0===_?void 0:_.hasSelection)||!this.monAllowPoolDelete&&"Pool deletion is disabled by the mon_allow_pool_delete configuration setting."}setExpandedRow(_){super.setExpandedRow(_),this.getSelectionTiers()}}return t.\u0275fac=function(_){return new(_||t)(e.Y36(ue.q),e.Y36(de.P),e.Y36(Me),e.Y36(he.j),e.Y36(qe.j),e.Y36(Ze.Z),e.Y36(jt.j),e.Y36(_i.n),e.Y36(Le.F),e.Y36(ti.e),e.Y36(M.p4))},t.\u0275cmp=e.Xpm({type:t,selectors:[["cd-pool-list"]],viewQuery:function(_,o){if(1&_&&(e.Gf(Se.a,5),e.Gf(pi,7),e.Gf(Ri,5)),2&_){let n;e.iGM(n=e.CRH())&&(o.table=n.first),e.iGM(n=e.CRH())&&(o.poolUsageTpl=n.first),e.iGM(n=e.CRH())&&(o.poolConfigurationSourceTpl=n.first)}},features:[e._Bn([qe.j,{provide:Le.F,useValue:new Le.F("pool")}]),e.qOj],decls:10,vars:2,consts:function(){let i,_;return i="Pools List",_="Overall Performance",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],i,["ngbNavContent",""],["ngbNavItem","",4,"cdScope"],[3,"ngbNavOutlet"],["poolUsageTpl",""],["id","pool-list","selectionType","single",3,"data","columns","hasDetails","status","autoReload","fetchData","setExpandedRow","updateSelection"],["table",""],["id","pool-list-actions",1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","","id","pool-list-details",3,"selection","permissions","cacheTiers"],_,["uid","z99hzWtmk","grafanaStyle","two",3,"grafanaPath","type"],["decimals","2",3,"total","used",4,"ngIf"],["decimals","2",3,"total","used"]]},template:function(_,o){if(1&_&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,mi,4,11,"ng-template",5),e.qZA(),e.YNc(6,Mi,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,Ti,1,1,"ng-template",null,8,e.W1O)),2&_){const n=e.MAs(1);e.xp6(6),e.Q6J("cdScope","grafana"),e.xp6(1),e.Q6J("ngbNavOutlet",n)}},directives:[g.Pz,g.nv,g.Vx,g.uN,ii,g.tO,Se.a,ni.K,Ei,Ge.F,C.O5,gi.O],styles:["cd-pool-list .pg-clean{color:#0b0}  cd-pool-list .pg-working{color:#2b99a8}  cd-pool-list .pg-warning{color:#ffc200}  cd-pool-list .pg-unknown{color:#ef5c55}"]}),t})(),ze=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[f_.t,C.ez,g.Oz,d_.m,Oe.Bz,a.UX,g.HK,u_.BlockModule]]}),t})();const Li=[{path:"",component:Si},{path:M.MQ.CREATE,component:Ue,data:{breadcrumbs:M.Qn.CREATE}},{path:`${M.MQ.EDIT}/:name`,component:Ue,data:{breadcrumbs:M.Qn.EDIT}}];let Ai=(()=>{class t{}return t.\u0275fac=function(_){return new(_||t)},t.\u0275mod=e.oAB({type:t}),t.\u0275inj=e.cJS({imports:[[ze,Oe.Bz.forChild(Li)]]}),t})()}}]);
\ No newline at end of file
index 80c67410d56a0916a6ee84c875ea6d3aa9a83c50..d37b61f38da3d7a7eba0d168da4ba2646e7a2241 100644 (file)
@@ -4,7 +4,7 @@
 
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="icon" type="image/x-icon" id="cdFavicon" href="favicon.ico">
-<style>@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#6c757d;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--black:#000;--barley-white:#fcecba;--fg-color-over-dark-bg:#fff;--fg-hover-color-over-dark-bg:#adb5bd;--body-color-bright:#f8f9fa;--body-bg:#fff;--body-color:#212529;--body-bg-alt:#e9ecef;--health-color-error:red;--health-color-healthy:#0b0;--health-color-warning:orange;--chart-color-red:#c9190b;--chart-color-blue:#06c;--chart-color-orange:#ef9234;--chart-color-yellow:#f6d173;--chart-color-green:#7cc674;--chart-color-gray:#ededed;--chart-color-cyan:#73c5c5;--chart-color-purple:#3c3d99;--chart-color-center-text:#151515;--chart-color-center-text-description:#72767b;--chart-color-tooltip-background:#000;--chart-danger:#c9190b;--card-cap-bg:#f8f9fa;--grid-gutter-width:30px;--datatable-divider-color:#00000017;--nav-tabs-margin-bottom:1rem;--tooltip-color:#fff;--tooltip-bg:#212529;--screen-sm-min:576px;--screen-md-min:768px;--screen-lg-min:992px;--screen-xl-min:1200px;--screen-xs-max:calc(576px - 1px);--screen-sm-max:calc(768px - 1px);--screen-md-max:calc(992px - 1px);--screen-lg-max:calc(1200px - 1px);--navbar-height:43px;--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#a94442;--red:#ef5c55;--orange:#fd7e14;--yellow:#ffc200;--green:#0b0;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#374249;--success:#0b0;--info:#2b99a8;--warning:#ffc200;--danger:#ef5c55;--light:#f8f9fa;--dark:#777;--accent:#ef5c55;--warning-dark:#fd7e14;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--breakpoint-2xl:1450px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}@page{size:a3}body{min-width:992px!important}}html{background-color:#fff}body,html{font-size:12px;height:100%;width:100%}</style><link rel="stylesheet" href="styles.e6093c94066da7ab35c7.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.e6093c94066da7ab35c7.css"></noscript></head>
+<style>@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#6c757d;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--black:#000;--barley-white:#fcecba;--fg-color-over-dark-bg:#fff;--fg-hover-color-over-dark-bg:#adb5bd;--body-color-bright:#f8f9fa;--body-bg:#fff;--body-color:#212529;--body-bg-alt:#e9ecef;--health-color-error:red;--health-color-healthy:#0b0;--health-color-warning:orange;--chart-color-red:#c9190b;--chart-color-blue:#06c;--chart-color-orange:#ef9234;--chart-color-yellow:#f6d173;--chart-color-green:#7cc674;--chart-color-gray:#ededed;--chart-color-cyan:#73c5c5;--chart-color-purple:#3c3d99;--chart-color-center-text:#151515;--chart-color-center-text-description:#72767b;--chart-color-tooltip-background:#000;--chart-danger:#c9190b;--card-cap-bg:#f8f9fa;--grid-gutter-width:30px;--datatable-divider-color:#00000017;--nav-tabs-margin-bottom:1rem;--tooltip-color:#fff;--tooltip-bg:#212529;--screen-sm-min:576px;--screen-md-min:768px;--screen-lg-min:992px;--screen-xl-min:1200px;--screen-xs-max:calc(576px - 1px);--screen-sm-max:calc(768px - 1px);--screen-md-max:calc(992px - 1px);--screen-lg-max:calc(1200px - 1px);--navbar-height:43px;--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#a94442;--red:#ef5c55;--orange:#fd7e14;--yellow:#ffc200;--green:#0b0;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#374249;--success:#0b0;--info:#2b99a8;--warning:#ffc200;--danger:#ef5c55;--light:#f8f9fa;--dark:#777;--accent:#ef5c55;--warning-dark:#fd7e14;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--breakpoint-2xl:1450px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}@page{size:a3}body{min-width:992px!important}}html{background-color:#fff}body,html{font-size:12px;height:100%;width:100%}</style><link rel="stylesheet" href="styles.ffb7f665775e3c191fa3.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.ffb7f665775e3c191fa3.css"></noscript></head>
 <body>
   <noscript>
     <div class="noscript container"
@@ -18,6 +18,6 @@
   </noscript>
 
   <cd-root></cd-root>
-<script src="runtime.d9a3c3d3ac8fa3cc7c93.js" defer></script><script src="polyfills.2068f3f22a496426465b.js" defer></script><script src="scripts.6bda3fa7e09a87cd4228.js" defer></script><script src="main.30fafaca6a3d4e1868e0.js" defer></script>
+<script src="runtime.ab6c27cac6d7501e18e8.js" defer></script><script src="polyfills.2068f3f22a496426465b.js" defer></script><script src="scripts.6bda3fa7e09a87cd4228.js" defer></script><script src="main.86799889c70942fa9a19.js" defer></script>
 
 </body></html>
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.30fafaca6a3d4e1868e0.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.30fafaca6a3d4e1868e0.js
deleted file mode 100644 (file)
index 1148bf5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-var $localize=Object.assign(void 0===$localize?{}:$localize,{locale:"en-US"});
-"use strict";(function(global){global.ng=global.ng||{};global.ng.common=global.ng.common||{};global.ng.common.locales=global.ng.common.locales||{};const u=undefined;function plural(n){const i=Math.floor(Math.abs(n)),v=n.toString().replace(/^[^.]*\.?/,"").length;if(i===1&&v===0)return 1;return 5}global.ng.common.locales["en-us-posix"]=["en-US-POSIX",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","\xD7","0/00","INF","NaN",":"],["0.######","0%","\xA4\xA00.00","0.000000E+000"],"USD","$","US Dollar",{},"ltr",plural,[[["mi","n","in the morning","in the afternoon","in the evening","at night"],["midnight","noon","in the morning","in the afternoon","in the evening","at night"],u],[["midnight","noon","morning","afternoon","evening","night"],u,u],["00:00","12:00",["06:00","12:00"],["12:00","18:00"],["18:00","21:00"],["21:00","06:00"]]]]})(typeof globalThis!=="undefined"&&globalThis||typeof global!=="undefined"&&global||typeof window!=="undefined"&&window);;
-(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[179],{98255:Ge=>{function g(o){return Promise.resolve().then(()=>{var t=new Error("Cannot find module '"+o+"'");throw t.code="MODULE_NOT_FOUND",t})}g.keys=()=>[],g.resolve=g,g.id=98255,Ge.exports=g},56083:(Ge,g,o)=>{"use strict";o.d(g,{l3:()=>s,_j:()=>t,LC:()=>e,ZN:()=>M,jt:()=>l,vP:()=>h,SB:()=>m,oB:()=>_,eR:()=>C,X$:()=>a,ZE:()=>I,k1:()=>J});class t{}class e{}const s="*";function a(Y,ie){return{type:7,name:Y,definitions:ie,options:{}}}function l(Y,ie=null){return{type:4,styles:ie,timings:Y}}function h(Y,ie=null){return{type:2,steps:Y,options:ie}}function _(Y){return{type:6,styles:Y,offset:null}}function m(Y,ie,oe){return{type:0,name:Y,styles:ie,options:oe}}function C(Y,ie,oe=null){return{type:1,expr:Y,animation:ie,options:oe}}function U(Y){Promise.resolve(null).then(Y)}class M{constructor(ie=0,oe=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=ie+oe}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(ie=>ie()),this._onDoneFns=[])}onStart(ie){this._onStartFns.push(ie)}onDone(ie){this._onDoneFns.push(ie)}onDestroy(ie){this._onDestroyFns.push(ie)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){U(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(ie=>ie()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(ie=>ie()),this._onDestroyFns=[])}reset(){this._started=!1}setPosition(ie){this._position=this.totalTime?ie*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(ie){const oe="start"==ie?this._onStartFns:this._onDoneFns;oe.forEach(fe=>fe()),oe.length=0}}class I{constructor(ie){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=ie;let oe=0,fe=0,ne=0;const he=this.players.length;0==he?U(()=>this._onFinish()):this.players.forEach(ce=>{ce.onDone(()=>{++oe==he&&this._onFinish()}),ce.onDestroy(()=>{++fe==he&&this._onDestroy()}),ce.onStart(()=>{++ne==he&&this._onStart()})}),this.totalTime=this.players.reduce((ce,Ae)=>Math.max(ce,Ae.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(ie=>ie()),this._onDoneFns=[])}init(){this.players.forEach(ie=>ie.init())}onStart(ie){this._onStartFns.push(ie)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(ie=>ie()),this._onStartFns=[])}onDone(ie){this._onDoneFns.push(ie)}onDestroy(ie){this._onDestroyFns.push(ie)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(ie=>ie.play())}pause(){this.players.forEach(ie=>ie.pause())}restart(){this.players.forEach(ie=>ie.restart())}finish(){this._onFinish(),this.players.forEach(ie=>ie.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(ie=>ie.destroy()),this._onDestroyFns.forEach(ie=>ie()),this._onDestroyFns=[])}reset(){this.players.forEach(ie=>ie.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(ie){const oe=ie*this.totalTime;this.players.forEach(fe=>{const ne=fe.totalTime?Math.min(1,oe/fe.totalTime):1;fe.setPosition(ne)})}getPosition(){const ie=this.players.reduce((oe,fe)=>null===oe||fe.totalTime>oe.totalTime?fe:oe,null);return null!=ie?ie.getPosition():0}beforeDestroy(){this.players.forEach(ie=>{ie.beforeDestroy&&ie.beforeDestroy()})}triggerCallback(ie){const oe="start"==ie?this._onStartFns:this._onDoneFns;oe.forEach(fe=>fe()),oe.length=0}}const J="!"},12057:(Ge,g,o)=>{"use strict";o.d(g,{mr:()=>I,Ov:()=>Bo,ez:()=>Li,K0:()=>h,uU:()=>zo,JJ:()=>Tn,x:()=>Me,Do:()=>Y,Gx:()=>Er,Ts:()=>pn,Nd:()=>Ve,V_:()=>b,Ye:()=>ie,S$:()=>U,i8:()=>Jo,mk:()=>rt,sg:()=>$t,O5:()=>Vr,PC:()=>Fi,RF:()=>Qr,n9:()=>rn,ED:()=>fi,tP:()=>no,b0:()=>J,Zx:()=>$r,lw:()=>_,rS:()=>ua,Tn:()=>Oe,gd:()=>ds,EM:()=>Fo,JF:()=>Ua,p6:()=>Fn,Mn:()=>je,ol:()=>F,UT:()=>Et,NF:()=>Ra,w_:()=>u,bD:()=>cs,q:()=>s,Mx:()=>Ct,HT:()=>l});var t=o(74788);let e=null;function s(){return e}function l(pt){e||(e=pt)}class u{}const h=new t.OlP("DocumentToken");let _=(()=>{class pt{historyGo(Nt){throw new Error("Not implemented")}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275prov=(0,t.Yz7)({factory:m,token:pt,providedIn:"platform"}),pt})();function m(){return(0,t.LFG)(C)}const b=new t.OlP("Location Initialized");let C=(()=>{class pt extends _{constructor(Nt){super(),this._doc=Nt,this._init()}_init(){this.location=window.location,this._history=window.history}getBaseHrefFromDOM(){return s().getBaseHref(this._doc)}onPopState(Nt){const Ce=s().getGlobalEventTarget(this._doc,"window");return Ce.addEventListener("popstate",Nt,!1),()=>Ce.removeEventListener("popstate",Nt)}onHashChange(Nt){const Ce=s().getGlobalEventTarget(this._doc,"window");return Ce.addEventListener("hashchange",Nt,!1),()=>Ce.removeEventListener("hashchange",Nt)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(Nt){this.location.pathname=Nt}pushState(Nt,Ce,ye){D()?this._history.pushState(Nt,Ce,ye):this.location.hash=ye}replaceState(Nt,Ce,ye){D()?this._history.replaceState(Nt,Ce,ye):this.location.hash=ye}forward(){this._history.forward()}back(){this._history.back()}historyGo(Nt=0){this._history.go(Nt)}getState(){return this._history.state}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.LFG(h))},pt.\u0275prov=(0,t.Yz7)({factory:x,token:pt,providedIn:"platform"}),pt})();function D(){return!!window.history.pushState}function x(){return new C((0,t.LFG)(h))}function j(pt,an){if(0==pt.length)return an;if(0==an.length)return pt;let Nt=0;return pt.endsWith("/")&&Nt++,an.startsWith("/")&&Nt++,2==Nt?pt+an.substring(1):1==Nt?pt+an:pt+"/"+an}function H(pt){const an=pt.match(/#|\?|$/),Nt=an&&an.index||pt.length;return pt.slice(0,Nt-("/"===pt[Nt-1]?1:0))+pt.slice(Nt)}function z(pt){return pt&&"?"!==pt[0]?"?"+pt:pt}let U=(()=>{class pt{historyGo(Nt){throw new Error("Not implemented")}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275prov=(0,t.Yz7)({factory:M,token:pt,providedIn:"root"}),pt})();function M(pt){const an=(0,t.LFG)(h).location;return new J((0,t.LFG)(_),an&&an.origin||"")}const I=new t.OlP("appBaseHref");let J=(()=>{class pt extends U{constructor(Nt,Ce){if(super(),this._platformLocation=Nt,this._removeListenerFns=[],null==Ce&&(Ce=this._platformLocation.getBaseHrefFromDOM()),null==Ce)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=Ce}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(Nt){this._removeListenerFns.push(this._platformLocation.onPopState(Nt),this._platformLocation.onHashChange(Nt))}getBaseHref(){return this._baseHref}prepareExternalUrl(Nt){return j(this._baseHref,Nt)}path(Nt=!1){const Ce=this._platformLocation.pathname+z(this._platformLocation.search),ye=this._platformLocation.hash;return ye&&Nt?`${Ce}${ye}`:Ce}pushState(Nt,Ce,ye,Ne){const Wt=this.prepareExternalUrl(ye+z(Ne));this._platformLocation.pushState(Nt,Ce,Wt)}replaceState(Nt,Ce,ye,Ne){const Wt=this.prepareExternalUrl(ye+z(Ne));this._platformLocation.replaceState(Nt,Ce,Wt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}historyGo(Nt=0){var Ce,ye;null===(ye=(Ce=this._platformLocation).historyGo)||void 0===ye||ye.call(Ce,Nt)}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.LFG(_),t.LFG(I,8))},pt.\u0275prov=t.Yz7({token:pt,factory:pt.\u0275fac}),pt})(),Y=(()=>{class pt extends U{constructor(Nt,Ce){super(),this._platformLocation=Nt,this._baseHref="",this._removeListenerFns=[],null!=Ce&&(this._baseHref=Ce)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(Nt){this._removeListenerFns.push(this._platformLocation.onPopState(Nt),this._platformLocation.onHashChange(Nt))}getBaseHref(){return this._baseHref}path(Nt=!1){let Ce=this._platformLocation.hash;return null==Ce&&(Ce="#"),Ce.length>0?Ce.substring(1):Ce}prepareExternalUrl(Nt){const Ce=j(this._baseHref,Nt);return Ce.length>0?"#"+Ce:Ce}pushState(Nt,Ce,ye,Ne){let Wt=this.prepareExternalUrl(ye+z(Ne));0==Wt.length&&(Wt=this._platformLocation.pathname),this._platformLocation.pushState(Nt,Ce,Wt)}replaceState(Nt,Ce,ye,Ne){let Wt=this.prepareExternalUrl(ye+z(Ne));0==Wt.length&&(Wt=this._platformLocation.pathname),this._platformLocation.replaceState(Nt,Ce,Wt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}historyGo(Nt=0){var Ce,ye;null===(ye=(Ce=this._platformLocation).historyGo)||void 0===ye||ye.call(Ce,Nt)}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.LFG(_),t.LFG(I,8))},pt.\u0275prov=t.Yz7({token:pt,factory:pt.\u0275fac}),pt})(),ie=(()=>{class pt{constructor(Nt,Ce){this._subject=new t.vpe,this._urlChangeListeners=[],this._platformStrategy=Nt;const ye=this._platformStrategy.getBaseHref();this._platformLocation=Ce,this._baseHref=H(ne(ye)),this._platformStrategy.onPopState(Ne=>{this._subject.emit({url:this.path(!0),pop:!0,state:Ne.state,type:Ne.type})})}path(Nt=!1){return this.normalize(this._platformStrategy.path(Nt))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(Nt,Ce=""){return this.path()==this.normalize(Nt+z(Ce))}normalize(Nt){return pt.stripTrailingSlash(function(pt,an){return pt&&an.startsWith(pt)?an.substring(pt.length):an}(this._baseHref,ne(Nt)))}prepareExternalUrl(Nt){return Nt&&"/"!==Nt[0]&&(Nt="/"+Nt),this._platformStrategy.prepareExternalUrl(Nt)}go(Nt,Ce="",ye=null){this._platformStrategy.pushState(ye,"",Nt,Ce),this._notifyUrlChangeListeners(this.prepareExternalUrl(Nt+z(Ce)),ye)}replaceState(Nt,Ce="",ye=null){this._platformStrategy.replaceState(ye,"",Nt,Ce),this._notifyUrlChangeListeners(this.prepareExternalUrl(Nt+z(Ce)),ye)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}historyGo(Nt=0){var Ce,ye;null===(ye=(Ce=this._platformStrategy).historyGo)||void 0===ye||ye.call(Ce,Nt)}onUrlChange(Nt){this._urlChangeListeners.push(Nt),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(Ce=>{this._notifyUrlChangeListeners(Ce.url,Ce.state)}))}_notifyUrlChangeListeners(Nt="",Ce){this._urlChangeListeners.forEach(ye=>ye(Nt,Ce))}subscribe(Nt,Ce,ye){return this._subject.subscribe({next:Nt,error:Ce,complete:ye})}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.LFG(U),t.LFG(_))},pt.normalizeQueryParams=z,pt.joinWithSlash=j,pt.stripTrailingSlash=H,pt.\u0275prov=(0,t.Yz7)({factory:oe,token:pt,providedIn:"root"}),pt})();function oe(){return new ie((0,t.LFG)(U),(0,t.LFG)(_))}function ne(pt){return pt.replace(/\/index.html$/,"")}var ce=(()=>((ce=ce||{})[ce.Decimal=0]="Decimal",ce[ce.Percent=1]="Percent",ce[ce.Currency=2]="Currency",ce[ce.Scientific=3]="Scientific",ce))(),Ae=(()=>((Ae=Ae||{})[Ae.Zero=0]="Zero",Ae[Ae.One=1]="One",Ae[Ae.Two=2]="Two",Ae[Ae.Few=3]="Few",Ae[Ae.Many=4]="Many",Ae[Ae.Other=5]="Other",Ae))(),Me=(()=>((Me=Me||{})[Me.Format=0]="Format",Me[Me.Standalone=1]="Standalone",Me))(),Oe=(()=>((Oe=Oe||{})[Oe.Narrow=0]="Narrow",Oe[Oe.Abbreviated=1]="Abbreviated",Oe[Oe.Wide=2]="Wide",Oe[Oe.Short=3]="Short",Oe))(),be=(()=>((be=be||{})[be.Short=0]="Short",be[be.Medium=1]="Medium",be[be.Long=2]="Long",be[be.Full=3]="Full",be))(),ue=(()=>((ue=ue||{})[ue.Decimal=0]="Decimal",ue[ue.Group=1]="Group",ue[ue.List=2]="List",ue[ue.PercentSign=3]="PercentSign",ue[ue.PlusSign=4]="PlusSign",ue[ue.MinusSign=5]="MinusSign",ue[ue.Exponential=6]="Exponential",ue[ue.SuperscriptingExponent=7]="SuperscriptingExponent",ue[ue.PerMille=8]="PerMille",ue[ue.Infinity=9]="Infinity",ue[ue.NaN=10]="NaN",ue[ue.TimeSeparator=11]="TimeSeparator",ue[ue.CurrencyDecimal=12]="CurrencyDecimal",ue[ue.CurrencyGroup=13]="CurrencyGroup",ue))();function F(pt,an,Nt){const Ce=(0,t.cg1)(pt),Ne=Ht([Ce[t.wAp.DayPeriodsFormat],Ce[t.wAp.DayPeriodsStandalone]],an);return Ht(Ne,Nt)}function je(pt,an,Nt){const Ce=(0,t.cg1)(pt),Ne=Ht([Ce[t.wAp.DaysFormat],Ce[t.wAp.DaysStandalone]],an);return Ht(Ne,Nt)}function Et(pt,an,Nt){const Ce=(0,t.cg1)(pt),Ne=Ht([Ce[t.wAp.MonthsFormat],Ce[t.wAp.MonthsStandalone]],an);return Ht(Ne,Nt)}function At(pt,an){return Ht((0,t.cg1)(pt)[t.wAp.DateFormat],an)}function Qe(pt,an){return Ht((0,t.cg1)(pt)[t.wAp.TimeFormat],an)}function It(pt,an){return Ht((0,t.cg1)(pt)[t.wAp.DateTimeFormat],an)}function ae(pt,an){const Nt=(0,t.cg1)(pt),Ce=Nt[t.wAp.NumberSymbols][an];if(void 0===Ce){if(an===ue.CurrencyDecimal)return Nt[t.wAp.NumberSymbols][ue.Decimal];if(an===ue.CurrencyGroup)return Nt[t.wAp.NumberSymbols][ue.Group]}return Ce}function Ie(pt,an){return(0,t.cg1)(pt)[t.wAp.NumberFormats][an]}const ar=t.kL8;function Ln(pt){if(!pt[t.wAp.ExtraData])throw new Error(`Missing extra locale data for the locale "${pt[t.wAp.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function Ht(pt,an){for(let Nt=an;Nt>-1;Nt--)if(void 0!==pt[Nt])return pt[Nt];throw new Error("Locale data API: locale data undefined")}function tr(pt){const[an,Nt]=pt.split(":");return{hours:+an,minutes:+Nt}}const dn=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Kn={},qn=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var Sn=(()=>((Sn=Sn||{})[Sn.Short=0]="Short",Sn[Sn.ShortGMT=1]="ShortGMT",Sn[Sn.Long=2]="Long",Sn[Sn.Extended=3]="Extended",Sn))(),$n=(()=>(($n=$n||{})[$n.FullYear=0]="FullYear",$n[$n.Month=1]="Month",$n[$n.Date=2]="Date",$n[$n.Hours=3]="Hours",$n[$n.Minutes=4]="Minutes",$n[$n.Seconds=5]="Seconds",$n[$n.FractionalSeconds=6]="FractionalSeconds",$n[$n.Day=7]="Day",$n))(),En=(()=>((En=En||{})[En.DayPeriods=0]="DayPeriods",En[En.Days=1]="Days",En[En.Months=2]="Months",En[En.Eras=3]="Eras",En))();function Fn(pt,an,Nt,Ce){let ye=function(pt){if(sn(pt))return pt;if("number"==typeof pt&&!isNaN(pt))return new Date(pt);if("string"==typeof pt){if(pt=pt.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(pt)){const[ye,Ne=1,Wt=1]=pt.split("-").map(Or=>+Or);return Dn(ye,Ne-1,Wt)}const Nt=parseFloat(pt);if(!isNaN(pt-Nt))return new Date(Nt);let Ce;if(Ce=pt.match(dn))return function(pt){const an=new Date(0);let Nt=0,Ce=0;const ye=pt[8]?an.setUTCFullYear:an.setFullYear,Ne=pt[8]?an.setUTCHours:an.setHours;pt[9]&&(Nt=Number(pt[9]+pt[10]),Ce=Number(pt[9]+pt[11])),ye.call(an,Number(pt[1]),Number(pt[2])-1,Number(pt[3]));const Wt=Number(pt[4]||0)-Nt,Or=Number(pt[5]||0)-Ce,Ni=Number(pt[6]||0),Yo=Math.floor(1e3*parseFloat("0."+(pt[7]||0)));return Ne.call(an,Wt,Or,Ni,Yo),an}(Ce)}const an=new Date(pt);if(!sn(an))throw new Error(`Unable to convert "${pt}" into a date`);return an}(pt);an=mn(Nt,an)||an;let Or,Wt=[];for(;an;){if(Or=qn.exec(an),!Or){Wt.push(an);break}{Wt=Wt.concat(Or.slice(1));const ms=Wt.pop();if(!ms)break;an=ms}}let Ni=ye.getTimezoneOffset();Ce&&(Ni=it(Ce,Ni),ye=function(pt,an,Nt){const ye=pt.getTimezoneOffset();return function(pt,an){return(pt=new Date(pt.getTime())).setMinutes(pt.getMinutes()+an),pt}(pt,-1*(it(an,ye)-ye))}(ye,Ce));let Yo="";return Wt.forEach(ms=>{const ss=function(pt){if(nt[pt])return nt[pt];let an;switch(pt){case"G":case"GG":case"GGG":an=yn(En.Eras,Oe.Abbreviated);break;case"GGGG":an=yn(En.Eras,Oe.Wide);break;case"GGGGG":an=yn(En.Eras,Oe.Narrow);break;case"y":an=mt($n.FullYear,1,0,!1,!0);break;case"yy":an=mt($n.FullYear,2,0,!0,!0);break;case"yyy":an=mt($n.FullYear,3,0,!1,!0);break;case"yyyy":an=mt($n.FullYear,4,0,!1,!0);break;case"Y":an=Ue(1);break;case"YY":an=Ue(2,!0);break;case"YYY":an=Ue(3);break;case"YYYY":an=Ue(4);break;case"M":case"L":an=mt($n.Month,1,1);break;case"MM":case"LL":an=mt($n.Month,2,1);break;case"MMM":an=yn(En.Months,Oe.Abbreviated);break;case"MMMM":an=yn(En.Months,Oe.Wide);break;case"MMMMM":an=yn(En.Months,Oe.Narrow);break;case"LLL":an=yn(En.Months,Oe.Abbreviated,Me.Standalone);break;case"LLLL":an=yn(En.Months,Oe.Wide,Me.Standalone);break;case"LLLLL":an=yn(En.Months,Oe.Narrow,Me.Standalone);break;case"w":an=L(1);break;case"ww":an=L(2);break;case"W":an=L(1,!0);break;case"d":an=mt($n.Date,1);break;case"dd":an=mt($n.Date,2);break;case"c":case"cc":an=mt($n.Day,1);break;case"ccc":an=yn(En.Days,Oe.Abbreviated,Me.Standalone);break;case"cccc":an=yn(En.Days,Oe.Wide,Me.Standalone);break;case"ccccc":an=yn(En.Days,Oe.Narrow,Me.Standalone);break;case"cccccc":an=yn(En.Days,Oe.Short,Me.Standalone);break;case"E":case"EE":case"EEE":an=yn(En.Days,Oe.Abbreviated);break;case"EEEE":an=yn(En.Days,Oe.Wide);break;case"EEEEE":an=yn(En.Days,Oe.Narrow);break;case"EEEEEE":an=yn(En.Days,Oe.Short);break;case"a":case"aa":case"aaa":an=yn(En.DayPeriods,Oe.Abbreviated);break;case"aaaa":an=yn(En.DayPeriods,Oe.Wide);break;case"aaaaa":an=yn(En.DayPeriods,Oe.Narrow);break;case"b":case"bb":case"bbb":an=yn(En.DayPeriods,Oe.Abbreviated,Me.Standalone,!0);break;case"bbbb":an=yn(En.DayPeriods,Oe.Wide,Me.Standalone,!0);break;case"bbbbb":an=yn(En.DayPeriods,Oe.Narrow,Me.Standalone,!0);break;case"B":case"BB":case"BBB":an=yn(En.DayPeriods,Oe.Abbreviated,Me.Format,!0);break;case"BBBB":an=yn(En.DayPeriods,Oe.Wide,Me.Format,!0);break;case"BBBBB":an=yn(En.DayPeriods,Oe.Narrow,Me.Format,!0);break;case"h":an=mt($n.Hours,1,-12);break;case"hh":an=mt($n.Hours,2,-12);break;case"H":an=mt($n.Hours,1);break;case"HH":an=mt($n.Hours,2);break;case"m":an=mt($n.Minutes,1);break;case"mm":an=mt($n.Minutes,2);break;case"s":an=mt($n.Seconds,1);break;case"ss":an=mt($n.Seconds,2);break;case"S":an=mt($n.FractionalSeconds,1);break;case"SS":an=mt($n.FractionalSeconds,2);break;case"SSS":an=mt($n.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":an=jt(Sn.Short);break;case"ZZZZZ":an=jt(Sn.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":an=jt(Sn.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":an=jt(Sn.Long);break;default:return null}return nt[pt]=an,an}(ms);Yo+=ss?ss(ye,Nt,Ni):"''"===ms?"'":ms.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),Yo}function Dn(pt,an,Nt){const Ce=new Date(0);return Ce.setFullYear(pt,an,Nt),Ce.setHours(0,0,0),Ce}function mn(pt,an){const Nt=function(pt){return(0,t.cg1)(pt)[t.wAp.LocaleId]}(pt);if(Kn[Nt]=Kn[Nt]||{},Kn[Nt][an])return Kn[Nt][an];let Ce="";switch(an){case"shortDate":Ce=At(pt,be.Short);break;case"mediumDate":Ce=At(pt,be.Medium);break;case"longDate":Ce=At(pt,be.Long);break;case"fullDate":Ce=At(pt,be.Full);break;case"shortTime":Ce=Qe(pt,be.Short);break;case"mediumTime":Ce=Qe(pt,be.Medium);break;case"longTime":Ce=Qe(pt,be.Long);break;case"fullTime":Ce=Qe(pt,be.Full);break;case"short":const ye=mn(pt,"shortTime"),Ne=mn(pt,"shortDate");Ce=jn(It(pt,be.Short),[ye,Ne]);break;case"medium":const Wt=mn(pt,"mediumTime"),Or=mn(pt,"mediumDate");Ce=jn(It(pt,be.Medium),[Wt,Or]);break;case"long":const Ni=mn(pt,"longTime"),Yo=mn(pt,"longDate");Ce=jn(It(pt,be.Long),[Ni,Yo]);break;case"full":const ms=mn(pt,"fullTime"),ss=mn(pt,"fullDate");Ce=jn(It(pt,be.Full),[ms,ss])}return Ce&&(Kn[Nt][an]=Ce),Ce}function jn(pt,an){return an&&(pt=pt.replace(/\{([^}]+)}/g,function(Nt,Ce){return null!=an&&Ce in an?an[Ce]:Nt})),pt}function Xt(pt,an,Nt="-",Ce,ye){let Ne="";(pt<0||ye&&pt<=0)&&(ye?pt=1-pt:(pt=-pt,Ne=Nt));let Wt=String(pt);for(;Wt.length<an;)Wt="0"+Wt;return Ce&&(Wt=Wt.substr(Wt.length-an)),Ne+Wt}function mt(pt,an,Nt=0,Ce=!1,ye=!1){return function(Ne,Wt){let Or=function(pt,an){switch(pt){case $n.FullYear:return an.getFullYear();case $n.Month:return an.getMonth();case $n.Date:return an.getDate();case $n.Hours:return an.getHours();case $n.Minutes:return an.getMinutes();case $n.Seconds:return an.getSeconds();case $n.FractionalSeconds:return an.getMilliseconds();case $n.Day:return an.getDay();default:throw new Error(`Unknown DateType value "${pt}".`)}}(pt,Ne);if((Nt>0||Or>-Nt)&&(Or+=Nt),pt===$n.Hours)0===Or&&-12===Nt&&(Or=12);else if(pt===$n.FractionalSeconds)return function(pt,an){return Xt(pt,3).substr(0,an)}(Or,an);const Ni=ae(Wt,ue.MinusSign);return Xt(Or,an,Ni,Ce,ye)}}function yn(pt,an,Nt=Me.Format,Ce=!1){return function(ye,Ne){return function(pt,an,Nt,Ce,ye,Ne){switch(Nt){case En.Months:return Et(an,ye,Ce)[pt.getMonth()];case En.Days:return je(an,ye,Ce)[pt.getDay()];case En.DayPeriods:const Wt=pt.getHours(),Or=pt.getMinutes();if(Ne){const Yo=function(pt){const an=(0,t.cg1)(pt);return Ln(an),(an[t.wAp.ExtraData][2]||[]).map(Ce=>"string"==typeof Ce?tr(Ce):[tr(Ce[0]),tr(Ce[1])])}(an),ms=function(pt,an,Nt){const Ce=(0,t.cg1)(pt);Ln(Ce);const Ne=Ht([Ce[t.wAp.ExtraData][0],Ce[t.wAp.ExtraData][1]],an)||[];return Ht(Ne,Nt)||[]}(an,ye,Ce),ss=Yo.findIndex(Lo=>{if(Array.isArray(Lo)){const[Zo,Ea]=Lo,ul=Wt>=Zo.hours&&Or>=Zo.minutes,Ma=Wt<Ea.hours||Wt===Ea.hours&&Or<Ea.minutes;if(Zo.hours<Ea.hours){if(ul&&Ma)return!0}else if(ul||Ma)return!0}else if(Lo.hours===Wt&&Lo.minutes===Or)return!0;return!1});if(-1!==ss)return ms[ss]}return F(an,ye,Ce)[Wt<12?0:1];case En.Eras:return function(pt,an){return Ht((0,t.cg1)(pt)[t.wAp.Eras],an)}(an,Ce)[pt.getFullYear()<=0?0:1];default:throw new Error(`unexpected translation type ${Nt}`)}}(ye,Ne,pt,an,Nt,Ce)}}function jt(pt){return function(an,Nt,Ce){const ye=-1*Ce,Ne=ae(Nt,ue.MinusSign),Wt=ye>0?Math.floor(ye/60):Math.ceil(ye/60);switch(pt){case Sn.Short:return(ye>=0?"+":"")+Xt(Wt,2,Ne)+Xt(Math.abs(ye%60),2,Ne);case Sn.ShortGMT:return"GMT"+(ye>=0?"+":"")+Xt(Wt,1,Ne);case Sn.Long:return"GMT"+(ye>=0?"+":"")+Xt(Wt,2,Ne)+":"+Xt(Math.abs(ye%60),2,Ne);case Sn.Extended:return 0===Ce?"Z":(ye>=0?"+":"")+Xt(Wt,2,Ne)+":"+Xt(Math.abs(ye%60),2,Ne);default:throw new Error(`Unknown zone width "${pt}"`)}}}function ht(pt){return Dn(pt.getFullYear(),pt.getMonth(),pt.getDate()+(4-pt.getDay()))}function L(pt,an=!1){return function(Nt,Ce){let ye;if(an){const Ne=new Date(Nt.getFullYear(),Nt.getMonth(),1).getDay()-1,Wt=Nt.getDate();ye=1+Math.floor((Wt+Ne)/7)}else{const Ne=ht(Nt),Wt=function(pt){const an=Dn(pt,0,1).getDay();return Dn(pt,0,1+(an<=4?4:11)-an)}(Ne.getFullYear()),Or=Ne.getTime()-Wt.getTime();ye=1+Math.round(Or/6048e5)}return Xt(ye,pt,ae(Ce,ue.MinusSign))}}function Ue(pt,an=!1){return function(Nt,Ce){return Xt(ht(Nt).getFullYear(),pt,ae(Ce,ue.MinusSign),an)}}const nt={};function it(pt,an){pt=pt.replace(/:/g,"");const Nt=Date.parse("Jan 01, 1970 00:00:00 "+pt)/6e4;return isNaN(Nt)?an:Nt}function sn(pt){return pt instanceof Date&&!isNaN(pt.valueOf())}const An=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function Mr(pt,an,Nt,Ce,ye,Ne,Wt=!1){let Or="",Ni=!1;if(isFinite(pt)){let Yo=function(pt){let Ce,ye,Ne,Wt,Or,an=Math.abs(pt)+"",Nt=0;for((ye=an.indexOf("."))>-1&&(an=an.replace(".","")),(Ne=an.search(/e/i))>0?(ye<0&&(ye=Ne),ye+=+an.slice(Ne+1),an=an.substring(0,Ne)):ye<0&&(ye=an.length),Ne=0;"0"===an.charAt(Ne);Ne++);if(Ne===(Or=an.length))Ce=[0],ye=1;else{for(Or--;"0"===an.charAt(Or);)Or--;for(ye-=Ne,Ce=[],Wt=0;Ne<=Or;Ne++,Wt++)Ce[Wt]=Number(an.charAt(Ne))}return ye>22&&(Ce=Ce.splice(0,21),Nt=ye-1,ye=1),{digits:Ce,exponent:Nt,integerLen:ye}}(pt);Wt&&(Yo=function(pt){if(0===pt.digits[0])return pt;const an=pt.digits.length-pt.integerLen;return pt.exponent?pt.exponent+=2:(0===an?pt.digits.push(0,0):1===an&&pt.digits.push(0),pt.integerLen+=2),pt}(Yo));let ms=an.minInt,ss=an.minFrac,Lo=an.maxFrac;if(Ne){const bs=Ne.match(An);if(null===bs)throw new Error(`${Ne} is not a valid digit info`);const $o=bs[1],Ol=bs[3],dl=bs[5];null!=$o&&(ms=se($o)),null!=Ol&&(ss=se(Ol)),null!=dl?Lo=se(dl):null!=Ol&&ss>Lo&&(Lo=ss)}!function(pt,an,Nt){if(an>Nt)throw new Error(`The minimum number of digits after fraction (${an}) is higher than the maximum (${Nt}).`);let Ce=pt.digits,ye=Ce.length-pt.integerLen;const Ne=Math.min(Math.max(an,ye),Nt);let Wt=Ne+pt.integerLen,Or=Ce[Wt];if(Wt>0){Ce.splice(Math.max(pt.integerLen,Wt));for(let ss=Wt;ss<Ce.length;ss++)Ce[ss]=0}else{ye=Math.max(0,ye),pt.integerLen=1,Ce.length=Math.max(1,Wt=Ne+1),Ce[0]=0;for(let ss=1;ss<Wt;ss++)Ce[ss]=0}if(Or>=5)if(Wt-1<0){for(let ss=0;ss>Wt;ss--)Ce.unshift(0),pt.integerLen++;Ce.unshift(1),pt.integerLen++}else Ce[Wt-1]++;for(;ye<Math.max(0,Ne);ye++)Ce.push(0);let Ni=0!==Ne;const Yo=an+pt.integerLen,ms=Ce.reduceRight(function(ss,Lo,Zo,Ea){return Ea[Zo]=(Lo+=ss)<10?Lo:Lo-10,Ni&&(0===Ea[Zo]&&Zo>=Yo?Ea.pop():Ni=!1),Lo>=10?1:0},0);ms&&(Ce.unshift(ms),pt.integerLen++)}(Yo,ss,Lo);let Zo=Yo.digits,Ea=Yo.integerLen;const ul=Yo.exponent;let Ma=[];for(Ni=Zo.every(bs=>!bs);Ea<ms;Ea++)Zo.unshift(0);for(;Ea<0;Ea++)Zo.unshift(0);Ea>0?Ma=Zo.splice(Ea,Zo.length):(Ma=Zo,Zo=[0]);const va=[];for(Zo.length>=an.lgSize&&va.unshift(Zo.splice(-an.lgSize,Zo.length).join(""));Zo.length>an.gSize;)va.unshift(Zo.splice(-an.gSize,Zo.length).join(""));Zo.length&&va.unshift(Zo.join("")),Or=va.join(ae(Nt,Ce)),Ma.length&&(Or+=ae(Nt,ye)+Ma.join("")),ul&&(Or+=ae(Nt,ue.Exponential)+"+"+ul)}else Or=ae(Nt,ue.Infinity);return Or=pt<0&&!Ni?an.negPre+Or+an.negSuf:an.posPre+Or+an.posSuf,Or}function Oi(pt,an="-"){const Nt={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},Ce=pt.split(";"),ye=Ce[0],Ne=Ce[1],Wt=-1!==ye.indexOf(".")?ye.split("."):[ye.substring(0,ye.lastIndexOf("0")+1),ye.substring(ye.lastIndexOf("0")+1)],Or=Wt[0],Ni=Wt[1]||"";Nt.posPre=Or.substr(0,Or.indexOf("#"));for(let ms=0;ms<Ni.length;ms++){const ss=Ni.charAt(ms);"0"===ss?Nt.minFrac=Nt.maxFrac=ms+1:"#"===ss?Nt.maxFrac=ms+1:Nt.posSuf+=ss}const Yo=Or.split(",");if(Nt.gSize=Yo[1]?Yo[1].length:0,Nt.lgSize=Yo[2]||Yo[1]?(Yo[2]||Yo[1]).length:0,Ne){const ms=ye.length-Nt.posPre.length-Nt.posSuf.length,ss=Ne.indexOf("#");Nt.negPre=Ne.substr(0,ss).replace(/'/g,""),Nt.negSuf=Ne.substr(ss+ms).replace(/'/g,"")}else Nt.negPre=an+Nt.posPre,Nt.negSuf=Nt.posSuf;return Nt}function se(pt){const an=parseInt(pt);if(isNaN(an))throw new Error("Invalid integer literal when parsing "+pt);return an}class ct{}let Xe=(()=>{class pt extends ct{constructor(Nt){super(),this.locale=Nt}getPluralCategory(Nt,Ce){switch(ar(Ce||this.locale)(Nt)){case Ae.Zero:return"zero";case Ae.One:return"one";case Ae.Two:return"two";case Ae.Few:return"few";case Ae.Many:return"many";default:return"other"}}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.LFG(t.soG))},pt.\u0275prov=t.Yz7({token:pt,factory:pt.\u0275fac}),pt})();function Ct(pt,an){an=encodeURIComponent(an);for(const Nt of pt.split(";")){const Ce=Nt.indexOf("="),[ye,Ne]=-1==Ce?[Nt,""]:[Nt.slice(0,Ce),Nt.slice(Ce+1)];if(ye.trim()===an)return decodeURIComponent(Ne)}return null}let rt=(()=>{class pt{constructor(Nt,Ce,ye,Ne){this._iterableDiffers=Nt,this._keyValueDiffers=Ce,this._ngEl=ye,this._renderer=Ne,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(Nt){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof Nt?Nt.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(Nt){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof Nt?Nt.split(/\s+/):Nt,this._rawClass&&((0,t.sIi)(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const Nt=this._iterableDiffer.diff(this._rawClass);Nt&&this._applyIterableChanges(Nt)}else if(this._keyValueDiffer){const Nt=this._keyValueDiffer.diff(this._rawClass);Nt&&this._applyKeyValueChanges(Nt)}}_applyKeyValueChanges(Nt){Nt.forEachAddedItem(Ce=>this._toggleClass(Ce.key,Ce.currentValue)),Nt.forEachChangedItem(Ce=>this._toggleClass(Ce.key,Ce.currentValue)),Nt.forEachRemovedItem(Ce=>{Ce.previousValue&&this._toggleClass(Ce.key,!1)})}_applyIterableChanges(Nt){Nt.forEachAddedItem(Ce=>{if("string"!=typeof Ce.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${(0,t.AaK)(Ce.item)}`);this._toggleClass(Ce.item,!0)}),Nt.forEachRemovedItem(Ce=>this._toggleClass(Ce.item,!1))}_applyClasses(Nt){Nt&&(Array.isArray(Nt)||Nt instanceof Set?Nt.forEach(Ce=>this._toggleClass(Ce,!0)):Object.keys(Nt).forEach(Ce=>this._toggleClass(Ce,!!Nt[Ce])))}_removeClasses(Nt){Nt&&(Array.isArray(Nt)||Nt instanceof Set?Nt.forEach(Ce=>this._toggleClass(Ce,!1)):Object.keys(Nt).forEach(Ce=>this._toggleClass(Ce,!1)))}_toggleClass(Nt,Ce){(Nt=Nt.trim())&&Nt.split(/\s+/g).forEach(ye=>{Ce?this._renderer.addClass(this._ngEl.nativeElement,ye):this._renderer.removeClass(this._ngEl.nativeElement,ye)})}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.ZZ4),t.Y36(t.aQg),t.Y36(t.SBq),t.Y36(t.Qsj))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),pt})();class We{constructor(an,Nt,Ce,ye){this.$implicit=an,this.ngForOf=Nt,this.index=Ce,this.count=ye}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let $t=(()=>{class pt{constructor(Nt,Ce,ye){this._viewContainer=Nt,this._template=Ce,this._differs=ye,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(Nt){this._ngForOf=Nt,this._ngForOfDirty=!0}set ngForTrackBy(Nt){this._trackByFn=Nt}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(Nt){Nt&&(this._template=Nt)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const Nt=this._ngForOf;if(!this._differ&&Nt)try{this._differ=this._differs.find(Nt).create(this.ngForTrackBy)}catch(Ce){throw new Error(`Cannot find a differ supporting object '${Nt}' of type '${function(pt){return pt.name||typeof pt}(Nt)}'. NgFor only supports binding to Iterables such as Arrays.`)}}if(this._differ){const Nt=this._differ.diff(this._ngForOf);Nt&&this._applyChanges(Nt)}}_applyChanges(Nt){const Ce=[];Nt.forEachOperation((ye,Ne,Wt)=>{if(null==ye.previousIndex){const Or=this._viewContainer.createEmbeddedView(this._template,new We(null,this._ngForOf,-1,-1),null===Wt?void 0:Wt),Ni=new or(ye,Or);Ce.push(Ni)}else if(null==Wt)this._viewContainer.remove(null===Ne?void 0:Ne);else if(null!==Ne){const Or=this._viewContainer.get(Ne);this._viewContainer.move(Or,Wt);const Ni=new or(ye,Or);Ce.push(Ni)}});for(let ye=0;ye<Ce.length;ye++)this._perViewChange(Ce[ye].view,Ce[ye].record);for(let ye=0,Ne=this._viewContainer.length;ye<Ne;ye++){const Wt=this._viewContainer.get(ye);Wt.context.index=ye,Wt.context.count=Ne,Wt.context.ngForOf=this._ngForOf}Nt.forEachIdentityChange(ye=>{this._viewContainer.get(ye.currentIndex).context.$implicit=ye.item})}_perViewChange(Nt,Ce){Nt.context.$implicit=Ce.item}static ngTemplateContextGuard(Nt,Ce){return!0}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.s_b),t.Y36(t.Rgc),t.Y36(t.ZZ4))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}}),pt})();class or{constructor(an,Nt){this.record=an,this.view=Nt}}let Vr=(()=>{class pt{constructor(Nt,Ce){this._viewContainer=Nt,this._context=new Cr,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=Ce}set ngIf(Nt){this._context.$implicit=this._context.ngIf=Nt,this._updateView()}set ngIfThen(Nt){ai("ngIfThen",Nt),this._thenTemplateRef=Nt,this._thenViewRef=null,this._updateView()}set ngIfElse(Nt){ai("ngIfElse",Nt),this._elseTemplateRef=Nt,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(Nt,Ce){return!0}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.s_b),t.Y36(t.Rgc))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}}),pt})();class Cr{constructor(){this.$implicit=null,this.ngIf=null}}function ai(pt,an){if(an&&!an.createEmbeddedView)throw new Error(`${pt} must be a TemplateRef, but received '${(0,t.AaK)(an)}'.`)}class Dr{constructor(an,Nt){this._viewContainerRef=an,this._templateRef=Nt,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(an){an&&!this._created?this.create():!an&&this._created&&this.destroy()}}let Qr=(()=>{class pt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(Nt){this._ngSwitch=Nt,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(Nt){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(Nt)}_matchCase(Nt){const Ce=Nt==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||Ce,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),Ce}_updateDefaultCases(Nt){if(this._defaultViews&&Nt!==this._defaultUsed){this._defaultUsed=Nt;for(let Ce=0;Ce<this._defaultViews.length;Ce++)this._defaultViews[Ce].enforceState(Nt)}}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"}}),pt})(),rn=(()=>{class pt{constructor(Nt,Ce,ye){this.ngSwitch=ye,ye._addCase(),this._view=new Dr(Nt,Ce)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.s_b),t.Y36(t.Rgc),t.Y36(Qr,9))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"}}),pt})(),fi=(()=>{class pt{constructor(Nt,Ce,ye){ye._addDefault(new Dr(Nt,Ce))}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.s_b),t.Y36(t.Rgc),t.Y36(Qr,9))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngSwitchDefault",""]]}),pt})(),Fi=(()=>{class pt{constructor(Nt,Ce,ye){this._ngEl=Nt,this._differs=Ce,this._renderer=ye,this._ngStyle=null,this._differ=null}set ngStyle(Nt){this._ngStyle=Nt,!this._differ&&Nt&&(this._differ=this._differs.find(Nt).create())}ngDoCheck(){if(this._differ){const Nt=this._differ.diff(this._ngStyle);Nt&&this._applyChanges(Nt)}}_setStyle(Nt,Ce){const[ye,Ne]=Nt.split(".");null!=(Ce=null!=Ce&&Ne?`${Ce}${Ne}`:Ce)?this._renderer.setStyle(this._ngEl.nativeElement,ye,Ce):this._renderer.removeStyle(this._ngEl.nativeElement,ye)}_applyChanges(Nt){Nt.forEachRemovedItem(Ce=>this._setStyle(Ce.key,null)),Nt.forEachAddedItem(Ce=>this._setStyle(Ce.key,Ce.currentValue)),Nt.forEachChangedItem(Ce=>this._setStyle(Ce.key,Ce.currentValue))}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.SBq),t.Y36(t.aQg),t.Y36(t.Qsj))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"}}),pt})(),no=(()=>{class pt{constructor(Nt){this._viewContainerRef=Nt,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(Nt){if(Nt.ngTemplateOutlet){const Ce=this._viewContainerRef;this._viewRef&&Ce.remove(Ce.indexOf(this._viewRef)),this._viewRef=this.ngTemplateOutlet?Ce.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext):null}else this._viewRef&&Nt.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.s_b))},pt.\u0275dir=t.lG2({type:pt,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet"},features:[t.TTD]}),pt})();function qi(pt,an){return Error(`InvalidPipeArgument: '${an}' for pipe '${(0,t.AaK)(pt)}'`)}class to{createSubscription(an,Nt){return an.subscribe({next:Nt,error:Ce=>{throw Ce}})}dispose(an){an.unsubscribe()}onDestroy(an){an.unsubscribe()}}class zi{createSubscription(an,Nt){return an.then(Nt,Ce=>{throw Ce})}dispose(an){}onDestroy(an){}}const Go=new zi,Ro=new to;let Bo=(()=>{class pt{constructor(Nt){this._ref=Nt,this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(Nt){return this._obj?Nt!==this._obj?(this._dispose(),this.transform(Nt)):this._latestValue:(Nt&&this._subscribe(Nt),this._latestValue)}_subscribe(Nt){this._obj=Nt,this._strategy=this._selectStrategy(Nt),this._subscription=this._strategy.createSubscription(Nt,Ce=>this._updateLatestValue(Nt,Ce))}_selectStrategy(Nt){if((0,t.QGY)(Nt))return Go;if((0,t.F4k)(Nt))return Ro;throw qi(pt,Nt)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(Nt,Ce){Nt===this._obj&&(this._latestValue=Ce,this._ref.markForCheck())}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.sBO,16))},pt.\u0275pipe=t.Yjl({name:"async",type:pt,pure:!1}),pt})(),Jo=(()=>{class pt{transform(Nt){if(null==Nt)return null;if("string"!=typeof Nt)throw qi(pt,Nt);return Nt.toLowerCase()}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275pipe=t.Yjl({name:"lowercase",type:pt,pure:!0}),pt})();const es=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g;let ua=(()=>{class pt{transform(Nt){if(null==Nt)return null;if("string"!=typeof Nt)throw qi(pt,Nt);return Nt.replace(es,Ce=>Ce[0].toUpperCase()+Ce.substr(1).toLowerCase())}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275pipe=t.Yjl({name:"titlecase",type:pt,pure:!0}),pt})(),ds=(()=>{class pt{transform(Nt){if(null==Nt)return null;if("string"!=typeof Nt)throw qi(pt,Nt);return Nt.toUpperCase()}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275pipe=t.Yjl({name:"uppercase",type:pt,pure:!0}),pt})(),zo=(()=>{class pt{constructor(Nt){this.locale=Nt}transform(Nt,Ce="mediumDate",ye,Ne){if(null==Nt||""===Nt||Nt!=Nt)return null;try{return Fn(Nt,Ce,Ne||this.locale,ye)}catch(Wt){throw qi(pt,Wt.message)}}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.soG,16))},pt.\u0275pipe=t.Yjl({name:"date",type:pt,pure:!0}),pt})();const oa=/#/g;let Er=(()=>{class pt{constructor(Nt){this._localization=Nt}transform(Nt,Ce,ye){if(null==Nt)return"";if("object"!=typeof Ce||null===Ce)throw qi(pt,Ce);return Ce[function(pt,an,Nt,Ce){let ye=`=${pt}`;if(an.indexOf(ye)>-1||(ye=Nt.getPluralCategory(pt,Ce),an.indexOf(ye)>-1))return ye;if(an.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${pt}"`)}(Nt,Object.keys(Ce),this._localization,ye)].replace(oa,Nt.toString())}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(ct,16))},pt.\u0275pipe=t.Yjl({name:"i18nPlural",type:pt,pure:!0}),pt})(),pn=(()=>{class pt{transform(Nt){return JSON.stringify(Nt,null,2)}}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275pipe=t.Yjl({name:"json",type:pt,pure:!1}),pt})(),Ve=(()=>{class pt{constructor(Nt){this.differs=Nt,this.keyValues=[],this.compareFn=fn}transform(Nt,Ce=fn){if(!Nt||!(Nt instanceof Map)&&"object"!=typeof Nt)return null;this.differ||(this.differ=this.differs.find(Nt).create());const ye=this.differ.diff(Nt),Ne=Ce!==this.compareFn;return ye&&(this.keyValues=[],ye.forEachItem(Wt=>{this.keyValues.push(function(pt,an){return{key:pt,value:an}}(Wt.key,Wt.currentValue))})),(ye||Ne)&&(this.keyValues.sort(Ce),this.compareFn=Ce),this.keyValues}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.aQg,16))},pt.\u0275pipe=t.Yjl({name:"keyvalue",type:pt,pure:!1}),pt})();function fn(pt,an){const Nt=pt.key,Ce=an.key;if(Nt===Ce)return 0;if(void 0===Nt)return 1;if(void 0===Ce)return-1;if(null===Nt)return 1;if(null===Ce)return-1;if("string"==typeof Nt&&"string"==typeof Ce)return Nt<Ce?-1:1;if("number"==typeof Nt&&"number"==typeof Ce)return Nt-Ce;if("boolean"==typeof Nt&&"boolean"==typeof Ce)return Nt<Ce?-1:1;const ye=String(Nt),Ne=String(Ce);return ye==Ne?0:ye<Ne?-1:1}let Tn=(()=>{class pt{constructor(Nt){this._locale=Nt}transform(Nt,Ce,ye){if(!Ri(Nt))return null;ye=ye||this._locale;try{return function(pt,an,Nt){return Mr(pt,Oi(Ie(an,ce.Decimal),ae(an,ue.MinusSign)),an,ue.Group,ue.Decimal,Nt)}(Do(Nt),ye,Ce)}catch(Ne){throw qi(pt,Ne.message)}}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.soG,16))},pt.\u0275pipe=t.Yjl({name:"number",type:pt,pure:!0}),pt})(),$r=(()=>{class pt{constructor(Nt){this._locale=Nt}transform(Nt,Ce,ye){if(!Ri(Nt))return null;ye=ye||this._locale;try{return function(pt,an,Nt){return Mr(pt,Oi(Ie(an,ce.Percent),ae(an,ue.MinusSign)),an,ue.Group,ue.Decimal,Nt,!0).replace(new RegExp("%","g"),ae(an,ue.PercentSign))}(Do(Nt),ye,Ce)}catch(Ne){throw qi(pt,Ne.message)}}}return pt.\u0275fac=function(Nt){return new(Nt||pt)(t.Y36(t.soG,16))},pt.\u0275pipe=t.Yjl({name:"percent",type:pt,pure:!0}),pt})();function Ri(pt){return!(null==pt||""===pt||pt!=pt)}function Do(pt){if("string"==typeof pt&&!isNaN(Number(pt)-parseFloat(pt)))return Number(pt);if("number"!=typeof pt)throw new Error(`${pt} is not a number`);return pt}let Li=(()=>{class pt{}return pt.\u0275fac=function(Nt){return new(Nt||pt)},pt.\u0275mod=t.oAB({type:pt}),pt.\u0275inj=t.cJS({providers:[{provide:ct,useClass:Xe}]}),pt})();const cs="browser";function Ra(pt){return pt===cs}let Fo=(()=>{class pt{}return pt.\u0275prov=(0,t.Yz7)({token:pt,providedIn:"root",factory:()=>new Ka((0,t.LFG)(h),window)}),pt})();class Ka{constructor(an,Nt){this.document=an,this.window=Nt,this.offset=()=>[0,0]}setOffset(an){this.offset=Array.isArray(an)?()=>an:an}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(an){this.supportsScrolling()&&this.window.scrollTo(an[0],an[1])}scrollToAnchor(an){if(!this.supportsScrolling())return;const Nt=function(pt,an){const Nt=pt.getElementById(an)||pt.getElementsByName(an)[0];if(Nt)return Nt;if("function"==typeof pt.createTreeWalker&&pt.body&&(pt.body.createShadowRoot||pt.body.attachShadow)){const Ce=pt.createTreeWalker(pt.body,NodeFilter.SHOW_ELEMENT);let ye=Ce.currentNode;for(;ye;){const Ne=ye.shadowRoot;if(Ne){const Wt=Ne.getElementById(an)||Ne.querySelector(`[name="${an}"]`);if(Wt)return Wt}ye=Ce.nextNode()}}return null}(this.document,an);Nt&&(this.scrollToElement(Nt),this.attemptFocus(Nt))}setHistoryScrollRestoration(an){if(this.supportScrollRestoration()){const Nt=this.window.history;Nt&&Nt.scrollRestoration&&(Nt.scrollRestoration=an)}}scrollToElement(an){const Nt=an.getBoundingClientRect(),Ce=Nt.left+this.window.pageXOffset,ye=Nt.top+this.window.pageYOffset,Ne=this.offset();this.window.scrollTo(Ce-Ne[0],ye-Ne[1])}attemptFocus(an){return an.focus(),this.document.activeElement===an}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const an=Sa(this.window.history)||Sa(Object.getPrototypeOf(this.window.history));return!(!an||!an.writable&&!an.set)}catch(an){return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch(an){return!1}}}function Sa(pt){return Object.getOwnPropertyDescriptor(pt,"scrollRestoration")}class Ua{}},58497:(Ge,g,o)=>{"use strict";o.d(g,{TP:()=>$e,eN:()=>ue,JF:()=>Ht,UA:()=>Oe,LE:()=>U});var t=o(12057),e=o(74788),s=o(25917),a=o(18891),l=o(94612),u=o(45435),h=o(88002);class _{}class m{}class b{constructor(Kt){this.normalizedNames=new Map,this.lazyUpdate=null,Kt?this.lazyInit="string"==typeof Kt?()=>{this.headers=new Map,Kt.split("\n").forEach(dn=>{const Kn=dn.indexOf(":");if(Kn>0){const qn=dn.slice(0,Kn),Sn=qn.toLowerCase(),$n=dn.slice(Kn+1).trim();this.maybeSetNormalizedName(qn,Sn),this.headers.has(Sn)?this.headers.get(Sn).push($n):this.headers.set(Sn,[$n])}})}:()=>{this.headers=new Map,Object.keys(Kt).forEach(dn=>{let Kn=Kt[dn];const qn=dn.toLowerCase();"string"==typeof Kn&&(Kn=[Kn]),Kn.length>0&&(this.headers.set(qn,Kn),this.maybeSetNormalizedName(dn,qn))})}:this.headers=new Map}has(Kt){return this.init(),this.headers.has(Kt.toLowerCase())}get(Kt){this.init();const dn=this.headers.get(Kt.toLowerCase());return dn&&dn.length>0?dn[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(Kt){return this.init(),this.headers.get(Kt.toLowerCase())||null}append(Kt,dn){return this.clone({name:Kt,value:dn,op:"a"})}set(Kt,dn){return this.clone({name:Kt,value:dn,op:"s"})}delete(Kt,dn){return this.clone({name:Kt,value:dn,op:"d"})}maybeSetNormalizedName(Kt,dn){this.normalizedNames.has(dn)||this.normalizedNames.set(dn,Kt)}init(){this.lazyInit&&(this.lazyInit instanceof b?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(Kt=>this.applyUpdate(Kt)),this.lazyUpdate=null))}copyFrom(Kt){Kt.init(),Array.from(Kt.headers.keys()).forEach(dn=>{this.headers.set(dn,Kt.headers.get(dn)),this.normalizedNames.set(dn,Kt.normalizedNames.get(dn))})}clone(Kt){const dn=new b;return dn.lazyInit=this.lazyInit&&this.lazyInit instanceof b?this.lazyInit:this,dn.lazyUpdate=(this.lazyUpdate||[]).concat([Kt]),dn}applyUpdate(Kt){const dn=Kt.name.toLowerCase();switch(Kt.op){case"a":case"s":let Kn=Kt.value;if("string"==typeof Kn&&(Kn=[Kn]),0===Kn.length)return;this.maybeSetNormalizedName(Kt.name,dn);const qn=("a"===Kt.op?this.headers.get(dn):void 0)||[];qn.push(...Kn),this.headers.set(dn,qn);break;case"d":const Sn=Kt.value;if(Sn){let $n=this.headers.get(dn);if(!$n)return;$n=$n.filter(En=>-1===Sn.indexOf(En)),0===$n.length?(this.headers.delete(dn),this.normalizedNames.delete(dn)):this.headers.set(dn,$n)}else this.headers.delete(dn),this.normalizedNames.delete(dn)}}forEach(Kt){this.init(),Array.from(this.normalizedNames.keys()).forEach(dn=>Kt(this.normalizedNames.get(dn),this.headers.get(dn)))}}class C{encodeKey(Kt){return H(Kt)}encodeValue(Kt){return H(Kt)}decodeKey(Kt){return decodeURIComponent(Kt)}decodeValue(Kt){return decodeURIComponent(Kt)}}const x=/%(\d[a-f0-9])/gi,j={40:"@","3A":":",24:"$","2C":",","3B":";","2B":"+","3D":"=","3F":"?","2F":"/"};function H(Cn){return encodeURIComponent(Cn).replace(x,(Kt,dn)=>{var Kn;return null!==(Kn=j[dn])&&void 0!==Kn?Kn:Kt})}function z(Cn){return`${Cn}`}class U{constructor(Kt={}){if(this.updates=null,this.cloneFrom=null,this.encoder=Kt.encoder||new C,Kt.fromString){if(Kt.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(Cn,Kt){const dn=new Map;return Cn.length>0&&Cn.replace(/^\?/,"").split("&").forEach(qn=>{const Sn=qn.indexOf("="),[$n,En]=-1==Sn?[Kt.decodeKey(qn),""]:[Kt.decodeKey(qn.slice(0,Sn)),Kt.decodeValue(qn.slice(Sn+1))],Fn=dn.get($n)||[];Fn.push(En),dn.set($n,Fn)}),dn}(Kt.fromString,this.encoder)}else Kt.fromObject?(this.map=new Map,Object.keys(Kt.fromObject).forEach(dn=>{const Kn=Kt.fromObject[dn];this.map.set(dn,Array.isArray(Kn)?Kn:[Kn])})):this.map=null}has(Kt){return this.init(),this.map.has(Kt)}get(Kt){this.init();const dn=this.map.get(Kt);return dn?dn[0]:null}getAll(Kt){return this.init(),this.map.get(Kt)||null}keys(){return this.init(),Array.from(this.map.keys())}append(Kt,dn){return this.clone({param:Kt,value:dn,op:"a"})}appendAll(Kt){const dn=[];return Object.keys(Kt).forEach(Kn=>{const qn=Kt[Kn];Array.isArray(qn)?qn.forEach(Sn=>{dn.push({param:Kn,value:Sn,op:"a"})}):dn.push({param:Kn,value:qn,op:"a"})}),this.clone(dn)}set(Kt,dn){return this.clone({param:Kt,value:dn,op:"s"})}delete(Kt,dn){return this.clone({param:Kt,value:dn,op:"d"})}toString(){return this.init(),this.keys().map(Kt=>{const dn=this.encoder.encodeKey(Kt);return this.map.get(Kt).map(Kn=>dn+"="+this.encoder.encodeValue(Kn)).join("&")}).filter(Kt=>""!==Kt).join("&")}clone(Kt){const dn=new U({encoder:this.encoder});return dn.cloneFrom=this.cloneFrom||this,dn.updates=(this.updates||[]).concat(Kt),dn}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(Kt=>this.map.set(Kt,this.cloneFrom.map.get(Kt))),this.updates.forEach(Kt=>{switch(Kt.op){case"a":case"s":const dn=("a"===Kt.op?this.map.get(Kt.param):void 0)||[];dn.push(z(Kt.value)),this.map.set(Kt.param,dn);break;case"d":if(void 0===Kt.value){this.map.delete(Kt.param);break}{let Kn=this.map.get(Kt.param)||[];const qn=Kn.indexOf(z(Kt.value));-1!==qn&&Kn.splice(qn,1),Kn.length>0?this.map.set(Kt.param,Kn):this.map.delete(Kt.param)}}}),this.cloneFrom=this.updates=null)}}class I{constructor(){this.map=new Map}set(Kt,dn){return this.map.set(Kt,dn),this}get(Kt){return this.map.has(Kt)||this.map.set(Kt,Kt.defaultValue()),this.map.get(Kt)}delete(Kt){return this.map.delete(Kt),this}keys(){return this.map.keys()}}function Y(Cn){return"undefined"!=typeof ArrayBuffer&&Cn instanceof ArrayBuffer}function ie(Cn){return"undefined"!=typeof Blob&&Cn instanceof Blob}function oe(Cn){return"undefined"!=typeof FormData&&Cn instanceof FormData}class ne{constructor(Kt,dn,Kn,qn){let Sn;if(this.url=dn,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=Kt.toUpperCase(),function(Cn){switch(Cn){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||qn?(this.body=void 0!==Kn?Kn:null,Sn=qn):Sn=Kn,Sn&&(this.reportProgress=!!Sn.reportProgress,this.withCredentials=!!Sn.withCredentials,Sn.responseType&&(this.responseType=Sn.responseType),Sn.headers&&(this.headers=Sn.headers),Sn.context&&(this.context=Sn.context),Sn.params&&(this.params=Sn.params)),this.headers||(this.headers=new b),this.context||(this.context=new I),this.params){const $n=this.params.toString();if(0===$n.length)this.urlWithParams=dn;else{const En=dn.indexOf("?");this.urlWithParams=dn+(-1===En?"?":En<dn.length-1?"&":"")+$n}}else this.params=new U,this.urlWithParams=dn}serializeBody(){return null===this.body?null:Y(this.body)||ie(this.body)||oe(this.body)||"undefined"!=typeof URLSearchParams&&this.body instanceof URLSearchParams||"string"==typeof this.body?this.body:this.body instanceof U?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body||oe(this.body)?null:ie(this.body)?this.body.type||null:Y(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof U?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||"boolean"==typeof this.body?"application/json":null}clone(Kt={}){var dn;const Kn=Kt.method||this.method,qn=Kt.url||this.url,Sn=Kt.responseType||this.responseType,$n=void 0!==Kt.body?Kt.body:this.body,En=void 0!==Kt.withCredentials?Kt.withCredentials:this.withCredentials,Fn=void 0!==Kt.reportProgress?Kt.reportProgress:this.reportProgress;let Dn=Kt.headers||this.headers,mn=Kt.params||this.params;const jn=null!==(dn=Kt.context)&&void 0!==dn?dn:this.context;return void 0!==Kt.setHeaders&&(Dn=Object.keys(Kt.setHeaders).reduce((Xt,ut)=>Xt.set(ut,Kt.setHeaders[ut]),Dn)),Kt.setParams&&(mn=Object.keys(Kt.setParams).reduce((Xt,ut)=>Xt.set(ut,Kt.setParams[ut]),mn)),new ne(Kn,qn,$n,{params:mn,headers:Dn,context:jn,reportProgress:Fn,responseType:Sn,withCredentials:En})}}var he=(()=>((he=he||{})[he.Sent=0]="Sent",he[he.UploadProgress=1]="UploadProgress",he[he.ResponseHeader=2]="ResponseHeader",he[he.DownloadProgress=3]="DownloadProgress",he[he.Response=4]="Response",he[he.User=5]="User",he))();class ce{constructor(Kt,dn=200,Kn="OK"){this.headers=Kt.headers||new b,this.status=void 0!==Kt.status?Kt.status:dn,this.statusText=Kt.statusText||Kn,this.url=Kt.url||null,this.ok=this.status>=200&&this.status<300}}class Ae extends ce{constructor(Kt={}){super(Kt),this.type=he.ResponseHeader}clone(Kt={}){return new Ae({headers:Kt.headers||this.headers,status:void 0!==Kt.status?Kt.status:this.status,statusText:Kt.statusText||this.statusText,url:Kt.url||this.url||void 0})}}class Me extends ce{constructor(Kt={}){super(Kt),this.type=he.Response,this.body=void 0!==Kt.body?Kt.body:null}clone(Kt={}){return new Me({body:void 0!==Kt.body?Kt.body:this.body,headers:Kt.headers||this.headers,status:void 0!==Kt.status?Kt.status:this.status,statusText:Kt.statusText||this.statusText,url:Kt.url||this.url||void 0})}}class Oe extends ce{constructor(Kt){super(Kt,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${Kt.url||"(unknown url)"}`:`Http failure response for ${Kt.url||"(unknown url)"}: ${Kt.status} ${Kt.statusText}`,this.error=Kt.error||null}}function be(Cn,Kt){return{body:Kt,headers:Cn.headers,context:Cn.context,observe:Cn.observe,params:Cn.params,reportProgress:Cn.reportProgress,responseType:Cn.responseType,withCredentials:Cn.withCredentials}}let ue=(()=>{class Cn{constructor(dn){this.handler=dn}request(dn,Kn,qn={}){let Sn;if(dn instanceof ne)Sn=dn;else{let Fn,Dn;Fn=qn.headers instanceof b?qn.headers:new b(qn.headers),qn.params&&(Dn=qn.params instanceof U?qn.params:new U({fromObject:qn.params})),Sn=new ne(dn,Kn,void 0!==qn.body?qn.body:null,{headers:Fn,context:qn.context,params:Dn,reportProgress:qn.reportProgress,responseType:qn.responseType||"json",withCredentials:qn.withCredentials})}const $n=(0,s.of)(Sn).pipe((0,l.b)(Fn=>this.handler.handle(Fn)));if(dn instanceof ne||"events"===qn.observe)return $n;const En=$n.pipe((0,u.h)(Fn=>Fn instanceof Me));switch(qn.observe||"body"){case"body":switch(Sn.responseType){case"arraybuffer":return En.pipe((0,h.U)(Fn=>{if(null!==Fn.body&&!(Fn.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return Fn.body}));case"blob":return En.pipe((0,h.U)(Fn=>{if(null!==Fn.body&&!(Fn.body instanceof Blob))throw new Error("Response is not a Blob.");return Fn.body}));case"text":return En.pipe((0,h.U)(Fn=>{if(null!==Fn.body&&"string"!=typeof Fn.body)throw new Error("Response is not a string.");return Fn.body}));case"json":default:return En.pipe((0,h.U)(Fn=>Fn.body))}case"response":return En;default:throw new Error(`Unreachable: unhandled observe type ${qn.observe}}`)}}delete(dn,Kn={}){return this.request("DELETE",dn,Kn)}get(dn,Kn={}){return this.request("GET",dn,Kn)}head(dn,Kn={}){return this.request("HEAD",dn,Kn)}jsonp(dn,Kn){return this.request("JSONP",dn,{params:(new U).append(Kn,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(dn,Kn={}){return this.request("OPTIONS",dn,Kn)}patch(dn,Kn,qn={}){return this.request("PATCH",dn,be(qn,Kn))}post(dn,Kn,qn={}){return this.request("POST",dn,be(qn,Kn))}put(dn,Kn,qn={}){return this.request("PUT",dn,be(qn,Kn))}}return Cn.\u0275fac=function(dn){return new(dn||Cn)(e.LFG(_))},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})();class He{constructor(Kt,dn){this.next=Kt,this.interceptor=dn}handle(Kt){return this.interceptor.intercept(Kt,this.next)}}const $e=new e.OlP("HTTP_INTERCEPTORS");let F=(()=>{class Cn{intercept(dn,Kn){return Kn.handle(dn)}}return Cn.\u0275fac=function(dn){return new(dn||Cn)},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})();const It=/^\)\]\}',?\n/;let Ie=(()=>{class Cn{constructor(dn){this.xhrFactory=dn}handle(dn){if("JSONP"===dn.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new a.y(Kn=>{const qn=this.xhrFactory.build();if(qn.open(dn.method,dn.urlWithParams),dn.withCredentials&&(qn.withCredentials=!0),dn.headers.forEach((ut,mt)=>qn.setRequestHeader(ut,mt.join(","))),dn.headers.has("Accept")||qn.setRequestHeader("Accept","application/json, text/plain, */*"),!dn.headers.has("Content-Type")){const ut=dn.detectContentTypeHeader();null!==ut&&qn.setRequestHeader("Content-Type",ut)}if(dn.responseType){const ut=dn.responseType.toLowerCase();qn.responseType="json"!==ut?ut:"text"}const Sn=dn.serializeBody();let $n=null;const En=()=>{if(null!==$n)return $n;const ut=1223===qn.status?204:qn.status,mt=qn.statusText||"OK",Tt=new b(qn.getAllResponseHeaders()),yn=function(Cn){return"responseURL"in Cn&&Cn.responseURL?Cn.responseURL:/^X-Request-URL:/m.test(Cn.getAllResponseHeaders())?Cn.getResponseHeader("X-Request-URL"):null}(qn)||dn.url;return $n=new Ae({headers:Tt,status:ut,statusText:mt,url:yn}),$n},Fn=()=>{let{headers:ut,status:mt,statusText:Tt,url:yn}=En(),et=null;204!==mt&&(et=void 0===qn.response?qn.responseText:qn.response),0===mt&&(mt=et?200:0);let jt=mt>=200&&mt<300;if("json"===dn.responseType&&"string"==typeof et){const hn=et;et=et.replace(It,"");try{et=""!==et?JSON.parse(et):null}catch(Qn){et=hn,jt&&(jt=!1,et={error:Qn,text:et})}}jt?(Kn.next(new Me({body:et,headers:ut,status:mt,statusText:Tt,url:yn||void 0})),Kn.complete()):Kn.error(new Oe({error:et,headers:ut,status:mt,statusText:Tt,url:yn||void 0}))},Dn=ut=>{const{url:mt}=En(),Tt=new Oe({error:ut,status:qn.status||0,statusText:qn.statusText||"Unknown Error",url:mt||void 0});Kn.error(Tt)};let mn=!1;const jn=ut=>{mn||(Kn.next(En()),mn=!0);let mt={type:he.DownloadProgress,loaded:ut.loaded};ut.lengthComputable&&(mt.total=ut.total),"text"===dn.responseType&&!!qn.responseText&&(mt.partialText=qn.responseText),Kn.next(mt)},Xt=ut=>{let mt={type:he.UploadProgress,loaded:ut.loaded};ut.lengthComputable&&(mt.total=ut.total),Kn.next(mt)};return qn.addEventListener("load",Fn),qn.addEventListener("error",Dn),qn.addEventListener("timeout",Dn),qn.addEventListener("abort",Dn),dn.reportProgress&&(qn.addEventListener("progress",jn),null!==Sn&&qn.upload&&qn.upload.addEventListener("progress",Xt)),qn.send(Sn),Kn.next({type:he.Sent}),()=>{qn.removeEventListener("error",Dn),qn.removeEventListener("abort",Dn),qn.removeEventListener("load",Fn),qn.removeEventListener("timeout",Dn),dn.reportProgress&&(qn.removeEventListener("progress",jn),null!==Sn&&qn.upload&&qn.upload.removeEventListener("progress",Xt)),qn.readyState!==qn.DONE&&qn.abort()}})}}return Cn.\u0275fac=function(dn){return new(dn||Cn)(e.LFG(t.JF))},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})();const dt=new e.OlP("XSRF_COOKIE_NAME"),Jt=new e.OlP("XSRF_HEADER_NAME");class zt{}let ln=(()=>{class Cn{constructor(dn,Kn,qn){this.doc=dn,this.platform=Kn,this.cookieName=qn,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const dn=this.doc.cookie||"";return dn!==this.lastCookieString&&(this.parseCount++,this.lastToken=(0,t.Mx)(dn,this.cookieName),this.lastCookieString=dn),this.lastToken}}return Cn.\u0275fac=function(dn){return new(dn||Cn)(e.LFG(t.K0),e.LFG(e.Lbi),e.LFG(dt))},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})(),ar=(()=>{class Cn{constructor(dn,Kn){this.tokenService=dn,this.headerName=Kn}intercept(dn,Kn){const qn=dn.url.toLowerCase();if("GET"===dn.method||"HEAD"===dn.method||qn.startsWith("http://")||qn.startsWith("https://"))return Kn.handle(dn);const Sn=this.tokenService.getToken();return null!==Sn&&!dn.headers.has(this.headerName)&&(dn=dn.clone({headers:dn.headers.set(this.headerName,Sn)})),Kn.handle(dn)}}return Cn.\u0275fac=function(dn){return new(dn||Cn)(e.LFG(zt),e.LFG(Jt))},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})(),Ln=(()=>{class Cn{constructor(dn,Kn){this.backend=dn,this.injector=Kn,this.chain=null}handle(dn){if(null===this.chain){const Kn=this.injector.get($e,[]);this.chain=Kn.reduceRight((qn,Sn)=>new He(qn,Sn),this.backend)}return this.chain.handle(dn)}}return Cn.\u0275fac=function(dn){return new(dn||Cn)(e.LFG(m),e.LFG(e.zs3))},Cn.\u0275prov=e.Yz7({token:Cn,factory:Cn.\u0275fac}),Cn})(),Mn=(()=>{class Cn{static disable(){return{ngModule:Cn,providers:[{provide:ar,useClass:F}]}}static withOptions(dn={}){return{ngModule:Cn,providers:[dn.cookieName?{provide:dt,useValue:dn.cookieName}:[],dn.headerName?{provide:Jt,useValue:dn.headerName}:[]]}}}return Cn.\u0275fac=function(dn){return new(dn||Cn)},Cn.\u0275mod=e.oAB({type:Cn}),Cn.\u0275inj=e.cJS({providers:[ar,{provide:$e,useExisting:ar,multi:!0},{provide:zt,useClass:ln},{provide:dt,useValue:"XSRF-TOKEN"},{provide:Jt,useValue:"X-XSRF-TOKEN"}]}),Cn})(),Ht=(()=>{class Cn{}return Cn.\u0275fac=function(dn){return new(dn||Cn)},Cn.\u0275mod=e.oAB({type:Cn}),Cn.\u0275inj=e.cJS({providers:[ue,{provide:_,useClass:Ln},Ie,{provide:m,useExisting:Ie}],imports:[[Mn.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]]}),Cn})()},74788:(Ge,g,o)=>{"use strict";o.d(g,{deG:()=>Aa,tb:()=>kS,AFp:()=>IS,ip1:()=>VT,CZH:()=>Dm,hGG:()=>_O,z2F:()=>uv,sBO:()=>lT,Sil:()=>cv,_Vd:()=>Kh,UuU:()=>ly,EJc:()=>HS,SBq:()=>tp,qLn:()=>mc,vpe:()=>jp,gxx:()=>sh,tBr:()=>Ts,XFs:()=>Mn,OlP:()=>ns,zs3:()=>oc,IIB:()=>a2,ZZ4:()=>fm,aQg:()=>pm,soG:()=>Ky,YKP:()=>Ey,v3s:()=>W2,h0i:()=>fh,PXZ:()=>B2,R0b:()=>Rf,FiY:()=>Ms,r_U:()=>l2,Lbi:()=>FS,g9A:()=>LS,Qsj:()=>zE,FYo:()=>um,JOm:()=>tc,Tiy:()=>q1,q3G:()=>ys,tp0:()=>ya,EAV:()=>X2,Rgc:()=>rg,dDg:()=>YS,DyG:()=>sl,GfV:()=>py,i9L:()=>Za,s_b:()=>gm,ifc:()=>$n,eFA:()=>WS,G48:()=>L2,Gpc:()=>C,X6Q:()=>XT,_c5:()=>lO,VLi:()=>I2,c2e:()=>$S,zSh:()=>Ip,wAp:()=>Qs,vHH:()=>H,EiD:()=>Uo,mCW:()=>Cu,qzn:()=>Tu,JVY:()=>Lc,pB0:()=>$d,eBb:()=>cd,L6k:()=>Pf,LAX:()=>rf,cg1:()=>F1,Tjo:()=>sO,kL8:()=>w0,yhl:()=>nf,dqk:()=>jn,sIi:()=>ch,CqO:()=>Qg,QGY:()=>T1,F4k:()=>Up,RDi:()=>fa,AaK:()=>_,z3N:()=>Jc,qOj:()=>Z_,TTD:()=>Li,_Bn:()=>ay,xp6:()=>Sh,uIk:()=>Tf,Tol:()=>i0,Gre:()=>g0,MT6:()=>m0,DjV:()=>v0,ekj:()=>w1,Suo:()=>dS,Xpm:()=>Ue,lG2:()=>sn,Yz7:()=>Qe,cJS:()=>ae,oAB:()=>Ut,Yjl:()=>An,Y36:()=>gp,_UZ:()=>Lv,GkF:()=>Fv,BQk:()=>E1,ynx:()=>b1,qZA:()=>y1,TgZ:()=>v1,EpF:()=>kv,n5z:()=>Oo,Ikx:()=>I1,SDv:()=>lm,QtT:()=>ry,DtL:()=>ny,N_p:()=>eg,pQV:()=>Z1,Zx4:()=>iy,tHW:()=>Y1,LFG:()=>sr,$8M:()=>Vi,NdJ:()=>C1,CRH:()=>fS,oxw:()=>jv,ALo:()=>rS,lcZ:()=>iS,xi3:()=>oS,Dn7:()=>sS,Hsn:()=>Yv,F$t:()=>Bv,Q6J:()=>g1,s9C:()=>M1,MGl:()=>Xg,hYB:()=>O1,DdM:()=>GC,VKq:()=>zC,WLB:()=>WC,kEZ:()=>qC,l5B:()=>JC,qbA:()=>QC,iGM:()=>cS,MAs:()=>gt,pYS:()=>Hf,Jf7:()=>ff,CHM:()=>pa,oJD:()=>Xl,uOi:()=>su,LSH:()=>al,kYT:()=>ot,Udp:()=>A1,d8E:()=>L1,YNc:()=>B,W1O:()=>gS,_uU:()=>c0,Oqu:()=>R1,hij:()=>tm,AsE:()=>N1,lnq:()=>P1,Gf:()=>uS});var t=o(79765),e=o(75319),s=o(18891),a=o(66682),l=o(18819);function u(r){for(let i in r)if(r[i]===u)return i;throw Error("Could not find renamed property on target object.")}function h(r,i){for(const c in i)i.hasOwnProperty(c)&&!r.hasOwnProperty(c)&&(r[c]=i[c])}function _(r){if("string"==typeof r)return r;if(Array.isArray(r))return"["+r.map(_).join(", ")+"]";if(null==r)return""+r;if(r.overriddenName)return`${r.overriddenName}`;if(r.name)return`${r.name}`;const i=r.toString();if(null==i)return""+i;const c=i.indexOf("\n");return-1===c?i:i.substring(0,c)}function m(r,i){return null==r||""===r?null===i?"":i:null==i||""===i?r:r+" "+i}const b=u({__forward_ref__:u});function C(r){return r.__forward_ref__=C,r.toString=function(){return _(this())},r}function D(r){return x(r)?r():r}function x(r){return"function"==typeof r&&r.hasOwnProperty(b)&&r.__forward_ref__===C}class H extends Error{constructor(i,c){super(function(r,i){return`${r?`NG0${r}: `:""}${i}`}(i,c)),this.code=i}}function M(r){return"string"==typeof r?r:null==r?"":String(r)}function I(r){return"function"==typeof r?r.name||r.toString():"object"==typeof r&&null!=r&&"function"==typeof r.type?r.type.name||r.type.toString():M(r)}function oe(r,i){const c=i?` in ${i}`:"";throw new H("201",`No provider for ${I(r)} found${c}`)}function lt(r,i,c,v){throw new Error(`ASSERTION ERROR: ${r}`+(null==v?"":` [Expected=> ${c} ${v} ${i} <=Actual]`))}function Qe(r){return{token:r.token,providedIn:r.providedIn||null,factory:r.factory,value:void 0}}function ae(r){return{providers:r.providers||[],imports:r.imports||[]}}function Ie(r){return dt(r,ar)||dt(r,Rn)}function dt(r,i){return r.hasOwnProperty(i)?r[i]:null}function ln(r){return r&&(r.hasOwnProperty(Ln)||r.hasOwnProperty(er))?r[Ln]:null}const ar=u({\u0275prov:u}),Ln=u({\u0275inj:u}),Rn=u({ngInjectableDef:u}),er=u({ngInjectorDef:u});var Mn=(()=>((Mn=Mn||{})[Mn.Default=0]="Default",Mn[Mn.Host=1]="Host",Mn[Mn.Self=2]="Self",Mn[Mn.SkipSelf=4]="SkipSelf",Mn[Mn.Optional=8]="Optional",Mn))();let Ht;function Yn(r){const i=Ht;return Ht=r,i}function Cn(r,i,c){const v=Ie(r);return v&&"root"==v.providedIn?void 0===v.value?v.value=v.factory():v.value:c&Mn.Optional?null:void 0!==i?i:void oe(_(r),"Injector")}function dn(r){return{toString:r}.toString()}var Kn=(()=>((Kn=Kn||{})[Kn.OnPush=0]="OnPush",Kn[Kn.Default=1]="Default",Kn))(),$n=(()=>(($n=$n||{})[$n.Emulated=0]="Emulated",$n[$n.None=2]="None",$n[$n.ShadowDom=3]="ShadowDom",$n))();const En="undefined"!=typeof globalThis&&globalThis,Fn="undefined"!=typeof window&&window,Dn="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,jn=En||"undefined"!=typeof global&&global||Fn||Dn,mt={},Tt=[],yn=u({\u0275cmp:u}),et=u({\u0275dir:u}),jt=u({\u0275pipe:u}),hn=u({\u0275mod:u}),Qn=u({\u0275loc:u}),Ir=u({\u0275fac:u}),ht=u({__NG_ELEMENT_ID__:u});let L=0;function Ue(r){return dn(()=>{const c={},v={type:r.type,providersResolver:null,decls:r.decls,vars:r.vars,factory:null,template:r.template||null,consts:r.consts||null,ngContentSelectors:r.ngContentSelectors,hostBindings:r.hostBindings||null,hostVars:r.hostVars||0,hostAttrs:r.hostAttrs||null,contentQueries:r.contentQueries||null,declaredInputs:c,inputs:null,outputs:null,exportAs:r.exportAs||null,onPush:r.changeDetection===Kn.OnPush,directiveDefs:null,pipeDefs:null,selectors:r.selectors||Tt,viewQuery:r.viewQuery||null,features:r.features||null,data:r.data||{},encapsulation:r.encapsulation||$n.Emulated,id:"c",styles:r.styles||Tt,_:null,setInput:null,schemas:r.schemas||null,tView:null},S=r.directives,k=r.features,te=r.pipes;return v.id+=L++,v.inputs=Nn(r.inputs,c),v.outputs=Nn(r.outputs),k&&k.forEach(le=>le(v)),v.directiveDefs=S?()=>("function"==typeof S?S():S).map(at):null,v.pipeDefs=te?()=>("function"==typeof te?te():te).map(it):null,v})}function at(r){return Bn(r)||function(r){return r[et]||null}(r)}function it(r){return function(r){return r[jt]||null}(r)}const Pt={};function Ut(r){return dn(()=>{const i={type:r.type,bootstrap:r.bootstrap||Tt,declarations:r.declarations||Tt,imports:r.imports||Tt,exports:r.exports||Tt,transitiveCompileScopes:null,schemas:r.schemas||null,id:r.id||null};return null!=r.id&&(Pt[r.id]=r.type),i})}function ot(r,i){return dn(()=>{const c=_r(r,!0);c.declarations=i.declarations||Tt,c.imports=i.imports||Tt,c.exports=i.exports||Tt})}function Nn(r,i){if(null==r)return mt;const c={};for(const v in r)if(r.hasOwnProperty(v)){let S=r[v],k=S;Array.isArray(S)&&(k=S[1],S=S[0]),c[S]=v,i&&(i[S]=k)}return c}const sn=Ue;function An(r){return{type:r.type,name:r.name,factory:null,pure:!1!==r.pure,onDestroy:r.type.prototype.ngOnDestroy||null}}function Bn(r){return r[yn]||null}function _r(r,i){const c=r[hn]||null;if(!c&&!0===i)throw new Error(`Type ${_(r)} does not have '\u0275mod' property.`);return c}function Ei(r){return Array.isArray(r)&&"object"==typeof r[1]}function wi(r){return Array.isArray(r)&&!0===r[1]}function go(r){return 0!=(8&r.flags)}function Fi(r){return 2==(2&r.flags)}function no(r){return 1==(1&r.flags)}function Ji(r){return null!==r.template}function qi(r){return 0!=(512&r[2])}function gi(r,i){return r.hasOwnProperty(Ir)?r[Ir]:null}class Hi{constructor(i,c,v){this.previousValue=i,this.currentValue=c,this.firstChange=v}isFirstChange(){return this.firstChange}}function Li(){return cs}function cs(r){return r.type.prototype.ngOnChanges&&(r.setInput=da),Os}function Os(){const r=Ra(this),i=null==r?void 0:r.current;if(i){const c=r.previous;if(c===mt)r.previous=i;else for(let v in i)c[v]=i[v];r.current=null,this.ngOnChanges(i)}}function da(r,i,c,v){const S=Ra(r)||function(r,i){return r[xa]=i}(r,{previous:mt,current:null}),k=S.current||(S.current={}),te=S.previous,le=this.declaredInputs[c],Le=te[le];k[le]=new Hi(Le&&Le.currentValue,i,te===mt),r[v]=i}Li.ngInherit=!0;const xa="__ngSimpleChanges__";function Ra(r){return r[xa]||null}let Sa;function fa(r){Sa=r}function ks(){return void 0!==Sa?Sa:"undefined"!=typeof document?document:void 0}function pt(r){return!!r.listen}const Nt={createRenderer:(r,i)=>ks()};function ye(r){for(;Array.isArray(r);)r=r[0];return r}function Or(r,i){return ye(i[r])}function Ni(r,i){return ye(i[r.index])}function ms(r,i){return r.data[i]}function ss(r,i){return r[i]}function Lo(r,i){const c=i[r];return Ei(c)?c:c[0]}function Zo(r){return 4==(4&r[2])}function Ea(r){return 128==(128&r[2])}function Ma(r,i){return null==i?null:r[i]}function va(r){r[18]=0}function bs(r,i){r[5]+=i;let c=r,v=r[3];for(;null!==v&&(1===i&&1===c[5]||-1===i&&0===c[5]);)v[5]+=i,c=v,v=v[3]}const $o={lFrame:In(null),bindingsEnabled:!0,isInCheckNoChangesMode:!1};function Il(){return $o.bindingsEnabled}function Di(){return $o.lFrame.lView}function vs(){return $o.lFrame.tView}function pa(r){return $o.lFrame.contextLView=r,r[8]}function Vo(){let r=ja();for(;null!==r&&64===r.type;)r=r.parent;return r}function ja(){return $o.lFrame.currentTNode}function hs(){const r=$o.lFrame,i=r.currentTNode;return r.isParent?i:i.parent}function ze(r,i){const c=$o.lFrame;c.currentTNode=r,c.isParent=i}function wt(){return $o.lFrame.isParent}function kt(){$o.lFrame.isParent=!1}function gn(){return $o.isInCheckNoChangesMode}function xr(r){$o.isInCheckNoChangesMode=r}function Zr(){const r=$o.lFrame;let i=r.bindingRootIndex;return-1===i&&(i=r.bindingRootIndex=r.tView.bindingStartIndex),i}function Pr(){return $o.lFrame.bindingIndex}function ii(){return $o.lFrame.bindingIndex++}function si(r){const i=$o.lFrame,c=i.bindingIndex;return i.bindingIndex=i.bindingIndex+r,c}function Ui(r){$o.lFrame.inI18n=r}function io(r,i){const c=$o.lFrame;c.bindingIndex=c.bindingRootIndex=r,Bi(i)}function Bi(r){$o.lFrame.currentDirectiveIndex=r}function hi(r){const i=$o.lFrame.currentDirectiveIndex;return-1===i?null:r[i]}function Br(){return $o.lFrame.currentQueryIndex}function G(r){$o.lFrame.currentQueryIndex=r}function Se(r){const i=r[1];return 2===i.type?i.declTNode:1===i.type?r[6]:null}function ft(r,i,c){if(c&Mn.SkipSelf){let S=i,k=r;for(;!(S=S.parent,null!==S||c&Mn.Host||(S=Se(k),null===S||(k=k[15],10&S.type))););if(null===S)return!1;i=S,r=k}const v=$o.lFrame=Bt();return v.currentTNode=i,v.lView=r,!0}function Ft(r){const i=Bt(),c=r[1];$o.lFrame=i,i.currentTNode=c.firstChild,i.lView=r,i.tView=c,i.contextLView=r,i.bindingIndex=c.bindingStartIndex,i.inI18n=!1}function Bt(){const r=$o.lFrame,i=null===r?null:r.child;return null===i?In(r):i}function In(r){const i={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:r,child:null,inI18n:!1};return null!==r&&(r.child=i),i}function Xn(){const r=$o.lFrame;return $o.lFrame=r.parent,r.currentTNode=null,r.lView=null,r}const Sr=Xn;function pi(){const r=Xn();r.isParent=!0,r.tView=null,r.selectedIndex=-1,r.contextLView=null,r.elementDepthCount=0,r.currentDirectiveIndex=-1,r.currentNamespace=null,r.bindingRootIndex=-1,r.bindingIndex=-1,r.currentQueryIndex=0}function Un(){return $o.lFrame.selectedIndex}function lr(r){$o.lFrame.selectedIndex=r}function dr(){const r=$o.lFrame;return ms(r.tView,r.selectedIndex)}function eo(r,i){for(let c=i.directiveStart,v=i.directiveEnd;c<v;c++){const k=r.data[c].type.prototype,{ngAfterContentInit:te,ngAfterContentChecked:le,ngAfterViewInit:Le,ngAfterViewChecked:vt,ngOnDestroy:Qt}=k;te&&(r.contentHooks||(r.contentHooks=[])).push(-c,te),le&&((r.contentHooks||(r.contentHooks=[])).push(c,le),(r.contentCheckHooks||(r.contentCheckHooks=[])).push(c,le)),Le&&(r.viewHooks||(r.viewHooks=[])).push(-c,Le),vt&&((r.viewHooks||(r.viewHooks=[])).push(c,vt),(r.viewCheckHooks||(r.viewCheckHooks=[])).push(c,vt)),null!=Qt&&(r.destroyHooks||(r.destroyHooks=[])).push(c,Qt)}}function Ho(r,i,c){ha(r,i,3,c)}function Zi(r,i,c,v){(3&r[2])===c&&ha(r,i,c,v)}function na(r,i){let c=r[2];(3&c)===i&&(c&=2047,c+=1,r[2]=c)}function ha(r,i,c,v){const k=null!=v?v:-1,te=i.length-1;let le=0;for(let Le=void 0!==v?65535&r[18]:0;Le<te;Le++)if("number"==typeof i[Le+1]){if(le=i[Le],null!=v&&le>=v)break}else i[Le]<0&&(r[18]+=65536),(le<k||-1==k)&&(fl(r,c,i,Le),r[18]=(4294901760&r[18])+Le+2),Le++}function fl(r,i,c,v){const S=c[v]<0,k=c[v+1],le=r[S?-c[v]:c[v]];if(S){if(r[2]>>11<r[18]>>16&&(3&r[2])===i){r[2]+=2048;try{k.call(le)}finally{}}}else try{k.call(le)}finally{}}class Es{constructor(i,c,v){this.factory=i,this.resolving=!1,this.canSeeViewProviders=c,this.injectImpl=v}}function bl(r,i,c){const v=pt(r);let S=0;for(;S<c.length;){const k=c[S];if("number"==typeof k){if(0!==k)break;S++;const te=c[S++],le=c[S++],Le=c[S++];v?r.setAttribute(i,le,Le,te):i.setAttributeNS(te,le,Le)}else{const te=k,le=c[++S];kl(te)?v&&r.setProperty(i,te,le):v?r.setAttribute(i,te,le):i.setAttribute(te,le),S++}}return S}function ql(r){return 3===r||4===r||6===r}function kl(r){return 64===r.charCodeAt(0)}function Yl(r,i){if(null!==i&&0!==i.length)if(null===r||0===r.length)r=i.slice();else{let c=-1;for(let v=0;v<i.length;v++){const S=i[v];"number"==typeof S?c=S:0===c||ru(r,c,S,null,-1===c||2===c?i[++v]:null)}}return r}function ru(r,i,c,v,S){let k=0,te=r.length;if(-1===i)te=-1;else for(;k<r.length;){const le=r[k++];if("number"==typeof le){if(le===i){te=-1;break}if(le>i){te=k-1;break}}}for(;k<r.length;){const le=r[k];if("number"==typeof le)break;if(le===c){if(null===v)return void(null!==S&&(r[k+1]=S));if(v===r[k+1])return void(r[k+2]=S)}k++,null!==v&&k++,null!==S&&k++}-1!==te&&(r.splice(te,0,i),k=te+1),r.splice(k++,0,c),null!==v&&r.splice(k++,0,v),null!==S&&r.splice(k++,0,S)}function Je(r){return-1!==r}function Fe(r){return 32767&r}function Ot(r,i){let c=function(r){return r>>16}(r),v=i;for(;c>0;)v=v[15],c--;return v}let xe=!0;function ke(r){const i=xe;return xe=r,i}let Be=0;function Dt(r,i){const c=vn(r,i);if(-1!==c)return c;const v=i[1];v.firstCreatePass&&(r.injectorIndex=i.length,en(v.data,r),en(i,null),en(v.blueprint,null));const S=Gn(r,i),k=r.injectorIndex;if(Je(S)){const te=Fe(S),le=Ot(S,i),Le=le[1].data;for(let vt=0;vt<8;vt++)i[k+vt]=le[te+vt]|Le[te+vt]}return i[k+8]=S,k}function en(r,i){r.push(0,0,0,0,0,0,0,0,i)}function vn(r,i){return-1===r.injectorIndex||r.parent&&r.parent.injectorIndex===r.injectorIndex||null===i[r.injectorIndex+8]?-1:r.injectorIndex}function Gn(r,i){if(r.parent&&-1!==r.parent.injectorIndex)return r.parent.injectorIndex;let c=0,v=null,S=i;for(;null!==S;){const k=S[1],te=k.type;if(v=2===te?k.declTNode:1===te?S[6]:null,null===v)return-1;if(c++,S=S[15],-1!==v.injectorIndex)return v.injectorIndex|c<<16}return-1}function kn(r,i,c){!function(r,i,c){let v;"string"==typeof c?v=c.charCodeAt(0)||0:c.hasOwnProperty(ht)&&(v=c[ht]),null==v&&(v=c[ht]=Be++);const S=255&v;i.data[r+(S>>5)]|=1<<S}(r,i,c)}function jr(r,i,c){if(c&Mn.Optional)return r;oe(i,"NodeInjector")}function kr(r,i,c,v){if(c&Mn.Optional&&void 0===v&&(v=null),0==(c&(Mn.Self|Mn.Host))){const S=r[9],k=Yn(void 0);try{return S?S.get(i,v,c&Mn.Optional):Cn(i,v,c&Mn.Optional)}finally{Yn(k)}}return jr(v,i,c)}function Gr(r,i,c,v=Mn.Default,S){if(null!==r){const k=function(r){if("string"==typeof r)return r.charCodeAt(0)||0;const i=r.hasOwnProperty(ht)?r[ht]:void 0;return"number"==typeof i?i>=0?255&i:Ci:i}(c);if("function"==typeof k){if(!ft(i,r,v))return v&Mn.Host?jr(S,c,v):kr(i,c,v,S);try{const te=k(v);if(null!=te||v&Mn.Optional)return te;oe(c)}finally{Sr()}}else if("number"==typeof k){let te=null,le=vn(r,i),Le=-1,vt=v&Mn.Host?i[16][6]:null;for((-1===le||v&Mn.SkipSelf)&&(Le=-1===le?Gn(r,i):i[le+8],-1!==Le&&wo(v,!1)?(te=i[1],le=Fe(Le),i=Ot(Le,i)):le=-1);-1!==le;){const Qt=i[1];if(No(k,le,Qt.data)){const Pn=vi(le,i,c,te,v,vt);if(Pn!==ci)return Pn}Le=i[le+8],-1!==Le&&wo(v,i[1].data[le+8]===vt)&&No(k,le,i)?(te=Qt,le=Fe(Le),i=Ot(Le,i)):le=-1}}}return kr(i,c,v,S)}const ci={};function Ci(){return new oo(Vo(),Di())}function vi(r,i,c,v,S,k){const te=i[1],le=te.data[r+8],Qt=Ai(le,te,c,null==v?Fi(le)&&xe:v!=te&&0!=(3&le.type),S&Mn.Host&&k===le);return null!==Qt?fo(i,te,Qt,le):ci}function Ai(r,i,c,v,S){const k=r.providerIndexes,te=i.data,le=1048575&k,Le=r.directiveStart,Qt=k>>20,Wn=S?le+Qt:r.directiveEnd;for(let yr=v?le:le+Qt;yr<Wn;yr++){const Ur=te[yr];if(yr<Le&&c===Ur||yr>=Le&&Ur.type===c)return yr}if(S){const yr=te[Le];if(yr&&Ji(yr)&&yr.type===c)return Le}return null}function fo(r,i,c,v){let S=r[c];const k=i.data;if(function(r){return r instanceof Es}(S)){const te=S;te.resolving&&function(r,i){throw new H("200",`Circular dependency in DI detected for ${r}`)}(I(k[c]));const le=ke(te.canSeeViewProviders);te.resolving=!0;const Le=te.injectImpl?Yn(te.injectImpl):null;ft(r,v,Mn.Default);try{S=r[c]=te.factory(void 0,k,r,v),i.firstCreatePass&&c>=v.directiveStart&&function(r,i,c){const{ngOnChanges:v,ngOnInit:S,ngDoCheck:k}=i.type.prototype;if(v){const te=cs(i);(c.preOrderHooks||(c.preOrderHooks=[])).push(r,te),(c.preOrderCheckHooks||(c.preOrderCheckHooks=[])).push(r,te)}S&&(c.preOrderHooks||(c.preOrderHooks=[])).push(0-r,S),k&&((c.preOrderHooks||(c.preOrderHooks=[])).push(r,k),(c.preOrderCheckHooks||(c.preOrderCheckHooks=[])).push(r,k))}(c,k[c],i)}finally{null!==Le&&Yn(Le),ke(le),te.resolving=!1,Sr()}}return S}function No(r,i,c){return!!(c[i+(r>>5)]&1<<r)}function wo(r,i){return!(r&Mn.Self||r&Mn.Host&&i)}class oo{constructor(i,c){this._tNode=i,this._lView=c}get(i,c,v){return Gr(this._tNode,this._lView,i,v,c)}}function Oo(r){return dn(()=>{const i=r.prototype.constructor,c=i[Ir]||Ki(i),v=Object.prototype;let S=Object.getPrototypeOf(r.prototype).constructor;for(;S&&S!==v;){const k=S[Ir]||Ki(S);if(k&&k!==c)return k;S=Object.getPrototypeOf(S)}return k=>new k})}function Ki(r){return x(r)?()=>{const i=Ki(D(r));return i&&i()}:gi(r)}function Vi(r){return function(r,i){if("class"===i)return r.classes;if("style"===i)return r.styles;const c=r.attrs;if(c){const v=c.length;let S=0;for(;S<v;){const k=c[S];if(ql(k))break;if(0===k)S+=2;else if("number"==typeof k)for(S++;S<v&&"string"==typeof c[S];)S++;else{if(k===i)return c[S+1];S+=2}}}return null}(Vo(),r)}const Po="__parameters__",ho="__prop__metadata__";function Ps(r){return function(...c){if(r){const v=r(...c);for(const S in v)this[S]=v[S]}}}function _n(r,i,c){return dn(()=>{const v=Ps(i);function S(...k){if(this instanceof S)return v.apply(this,k),this;const te=new S(...k);return le.annotation=te,le;function le(Le,vt,Qt){const Pn=Le.hasOwnProperty(Po)?Le[Po]:Object.defineProperty(Le,Po,{value:[]})[Po];for(;Pn.length<=Qt;)Pn.push(null);return(Pn[Qt]=Pn[Qt]||[]).push(te),Le}}return c&&(S.prototype=Object.create(c.prototype)),S.prototype.ngMetadataName=r,S.annotationCls=S,S})}function Hs(r,i,c,v){return dn(()=>{const S=Ps(i);function k(...te){if(this instanceof k)return S.apply(this,te),this;const le=new k(...te);return function(vt,Qt){const Pn=vt.constructor,Wn=Pn.hasOwnProperty(ho)?Pn[ho]:Object.defineProperty(Pn,ho,{value:{}})[ho];Wn[Qt]=Wn.hasOwnProperty(Qt)&&Wn[Qt]||[],Wn[Qt].unshift(le),v&&v(vt,Qt,...te)}}return c&&(k.prototype=Object.create(c.prototype)),k.prototype.ngMetadataName=r,k.annotationCls=k,k})}class ns{constructor(i,c){this._desc=i,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof c?this.__NG_ELEMENT_ID__=c:void 0!==c&&(this.\u0275prov=Qe({token:this,providedIn:c.providedIn||"root",factory:c.factory}))}toString(){return`InjectionToken ${this._desc}`}}const Aa=new ns("AnalyzeForEntryComponents");class La{}const Za=Hs("ViewChild",(r,i)=>Object.assign({selector:r,first:!0,isViewQuery:!0,descendants:!0},i),La),sl=Function;function Va(r,i){void 0===i&&(i=r);for(let c=0;c<r.length;c++){let v=r[c];Array.isArray(v)?(i===r&&(i=r.slice(0,c)),Va(v,i)):i!==r&&i.push(v)}return i}function ki(r,i){r.forEach(c=>Array.isArray(c)?ki(c,i):i(c))}function Oc(r,i,c){i>=r.length?r.push(c):r.splice(i,0,c)}function pc(r,i){return i>=r.length-1?r.pop():r.splice(i,1)[0]}function pl(r,i){const c=[];for(let v=0;v<r;v++)c.push(i);return c}function xl(r,i,c){let v=el(r,i);return v>=0?r[1|v]=c:(v=~v,function(r,i,c,v){let S=r.length;if(S==i)r.push(c,v);else if(1===S)r.push(v,r[0]),r[0]=c;else{for(S--,r.push(r[S-1],r[S]);S>i;)r[S]=r[S-2],S--;r[i]=c,r[i+1]=v}}(r,v,i,c)),v}function Vl(r,i){const c=el(r,i);if(c>=0)return r[1|c]}function el(r,i){return function(r,i,c){let v=0,S=r.length>>c;for(;S!==v;){const k=v+(S-v>>1),te=r[k<<c];if(i===te)return k<<c;te>i?S=k:v=k+1}return~(S<<c)}(r,i,1)}const N={},$="__NG_DI_FLAG__",Q="ngTempTokenPath",ve=/\n/gm,De="__source",Yt=u({provide:String,useValue:u});let Zt;function wn(r){const i=Zt;return Zt=r,i}function cr(r,i=Mn.Default){if(void 0===Zt)throw new Error("inject() must be called from an injection context");return null===Zt?Cn(r,void 0,i):Zt.get(r,i&Mn.Optional?null:void 0,i)}function sr(r,i=Mn.Default){return(Ht||cr)(D(r),i)}function Pi(r){const i=[];for(let c=0;c<r.length;c++){const v=D(r[c]);if(Array.isArray(v)){if(0===v.length)throw new Error("Arguments array must have arguments.");let S,k=Mn.Default;for(let te=0;te<v.length;te++){const le=v[te],Le=Co(le);"number"==typeof Le?-1===Le?S=le.token:k|=Le:S=le}i.push(sr(S,k))}else i.push(sr(v))}return i}function yo(r,i){return r[$]=i,r.prototype[$]=i,r}function Co(r){return r[$]}function Xo(r,i,c,v){const S=r[Q];throw i[De]&&S.unshift(i[De]),r.message=function(r,i,c,v=null){r=r&&"\n"===r.charAt(0)&&"\u0275"==r.charAt(1)?r.substr(2):r;let S=_(i);if(Array.isArray(i))S=i.map(_).join(" -> ");else if("object"==typeof i){let k=[];for(let te in i)if(i.hasOwnProperty(te)){let le=i[te];k.push(te+":"+("string"==typeof le?JSON.stringify(le):_(le)))}S=`{${k.join(", ")}}`}return`${c}${v?"("+v+")":""}[${S}]: ${r.replace(ve,"\n  ")}`}("\n"+r.message,S,c,v),r.ngTokenPath=S,r[Q]=null,r}const Ts=yo(_n("Inject",r=>({token:r})),-1),Ms=yo(_n("Optional"),8),ya=yo(_n("SkipSelf"),4);let gc,Md;function Ec(r){var i;return(null===(i=function(){if(void 0===gc&&(gc=null,jn.trustedTypes))try{gc=jn.trustedTypes.createPolicy("angular",{createHTML:r=>r,createScript:r=>r,createScriptURL:r=>r})}catch(r){}return gc}())||void 0===i?void 0:i.createHTML(r))||r}function ad(){if(void 0===Md&&(Md=null,jn.trustedTypes))try{Md=jn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:r=>r,createScript:r=>r,createScriptURL:r=>r})}catch(r){}return Md}function xu(r){var i;return(null===(i=ad())||void 0===i?void 0:i.createHTML(r))||r}function Od(r){var i;return(null===(i=ad())||void 0===i?void 0:i.createScriptURL(r))||r}class Eu{constructor(i){this.changingThisBreaksApplicationSecurity=i}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see https://g.co/ng/security#xss)`}}class tf extends Eu{getTypeName(){return"HTML"}}class Is extends Eu{getTypeName(){return"Style"}}class Ic extends Eu{getTypeName(){return"Script"}}class Nf extends Eu{getTypeName(){return"URL"}}class ld extends Eu{getTypeName(){return"ResourceURL"}}function Jc(r){return r instanceof Eu?r.changingThisBreaksApplicationSecurity:r}function Tu(r,i){const c=nf(r);if(null!=c&&c!==i){if("ResourceURL"===c&&"URL"===i)return!0;throw new Error(`Required a safe ${i}, got a ${c} (see https://g.co/ng/security#xss)`)}return c===i}function nf(r){return r instanceof Eu&&r.getTypeName()||null}function Lc(r){return new tf(r)}function Pf(r){return new Is(r)}function cd(r){return new Ic(r)}function rf(r){return new Nf(r)}function $d(r){return new ld(r)}function Ad(r){const i=new hu(r);return function(){try{return!!(new window.DOMParser).parseFromString(Ec(""),"text/html")}catch(r){return!1}}()?new Fc(i):i}class Fc{constructor(i){this.inertDocumentHelper=i}getInertBodyElement(i){i="<body><remove></remove>"+i;try{const c=(new window.DOMParser).parseFromString(Ec(i),"text/html").body;return null===c?this.inertDocumentHelper.getInertBodyElement(i):(c.removeChild(c.firstChild),c)}catch(c){return null}}}class hu{constructor(i){if(this.defaultDoc=i,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const c=this.inertDocument.createElement("html");this.inertDocument.appendChild(c);const v=this.inertDocument.createElement("body");c.appendChild(v)}}getInertBodyElement(i){const c=this.inertDocument.createElement("template");if("content"in c)return c.innerHTML=Ec(i),c;const v=this.inertDocument.createElement("body");return v.innerHTML=Ec(i),this.defaultDoc.documentMode&&this.stripCustomNsAttrs(v),v}stripCustomNsAttrs(i){const c=i.attributes;for(let S=c.length-1;0<S;S--){const te=c.item(S).name;("xmlns:ns1"===te||0===te.indexOf("ns1:"))&&i.removeAttribute(te)}let v=i.firstChild;for(;v;)v.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(v),v=v.nextSibling}}const ud=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi,If=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function Cu(r){return(r=String(r)).match(ud)||r.match(If)?r:"unsafe:"+r}function dd(r){return(r=String(r)).split(",").map(i=>Cu(i.trim())).join(", ")}function kc(r){const i={};for(const c of r.split(","))i[c]=!0;return i}function wc(...r){const i={};for(const c of r)for(const v in c)c.hasOwnProperty(v)&&(i[v]=!0);return i}const Yc=kc("area,br,col,hr,img,wbr"),Lf=kc("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Su=kc("rp,rt"),V=wc(Yc,wc(Lf,kc("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),wc(Su,kc("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),wc(Su,Lf)),pe=kc("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),A=kc("srcset"),Rt=wc(pe,A,kc("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),kc("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),vr=kc("script,style,template");class Hr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(i){let c=i.firstChild,v=!0;for(;c;)if(c.nodeType===Node.ELEMENT_NODE?v=this.startElement(c):c.nodeType===Node.TEXT_NODE?this.chars(c.nodeValue):this.sanitizedSomething=!0,v&&c.firstChild)c=c.firstChild;else for(;c;){c.nodeType===Node.ELEMENT_NODE&&this.endElement(c);let S=this.checkClobberedElement(c,c.nextSibling);if(S){c=S;break}c=this.checkClobberedElement(c,c.parentNode)}return this.buf.join("")}startElement(i){const c=i.nodeName.toLowerCase();if(!V.hasOwnProperty(c))return this.sanitizedSomething=!0,!vr.hasOwnProperty(c);this.buf.push("<"),this.buf.push(c);const v=i.attributes;for(let S=0;S<v.length;S++){const k=v.item(S),te=k.name,le=te.toLowerCase();if(!Rt.hasOwnProperty(le)){this.sanitizedSomething=!0;continue}let Le=k.value;pe[le]&&(Le=Cu(Le)),A[le]&&(Le=dd(Le)),this.buf.push(" ",te,'="',Eo(Le),'"')}return this.buf.push(">"),!0}endElement(i){const c=i.nodeName.toLowerCase();V.hasOwnProperty(c)&&!Yc.hasOwnProperty(c)&&(this.buf.push("</"),this.buf.push(c),this.buf.push(">"))}chars(i){this.buf.push(Eo(i))}checkClobberedElement(i,c){if(c&&(i.compareDocumentPosition(c)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${i.outerHTML}`);return c}}const _i=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ji=/([^\#-~ |!])/g;function Eo(r){return r.replace(/&/g,"&amp;").replace(_i,function(i){return"&#"+(1024*(i.charCodeAt(0)-55296)+(i.charCodeAt(1)-56320)+65536)+";"}).replace(ji,function(i){return"&#"+i.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let rs;function Uo(r,i){let c=null;try{rs=rs||Ad(r);let v=i?String(i):"";c=rs.getInertBodyElement(v);let S=5,k=v;do{if(0===S)throw new Error("Failed to sanitize html because the input is unstable");S--,v=k,k=c.innerHTML,c=rs.getInertBodyElement(v)}while(v!==k);return Ec((new Hr).sanitizeChildren(us(c)||c))}finally{if(c){const v=us(c)||c;for(;v.firstChild;)v.removeChild(v.firstChild)}}}function us(r){return"content"in r&&function(r){return r.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===r.nodeName}(r)?r.content:null}var ys=(()=>((ys=ys||{})[ys.NONE=0]="NONE",ys[ys.HTML=1]="HTML",ys[ys.STYLE=2]="STYLE",ys[ys.SCRIPT=3]="SCRIPT",ys[ys.URL=4]="URL",ys[ys.RESOURCE_URL=5]="RESOURCE_URL",ys))();function Xl(r){const i=_u();return i?xu(i.sanitize(ys.HTML,r)||""):Tu(r,"HTML")?xu(Jc(r)):Uo(ks(),M(r))}function al(r){const i=_u();return i?i.sanitize(ys.URL,r)||"":Tu(r,"URL")?Jc(r):Cu(M(r))}function su(r){const i=_u();if(i)return Od(i.sanitize(ys.RESOURCE_URL,r)||"");if(Tu(r,"ResourceURL"))return Od(Jc(r));throw new Error("unsafe value used in a resource URL context (see https://g.co/ng/security#xss)")}function _u(){const r=Di();return r&&r[12]}const af="__ngContext__";function ec(r,i){r[af]=i}function $c(r){const i=function(r){return r[af]||null}(r);return i?Array.isArray(i)?i:i.lView:null}function lu(r){return r.ngOriginalError}function Bd(r,...i){r.error(...i)}class mc{constructor(){this._console=console}handleError(i){const c=this._findOriginalError(i),v=this._findContext(i),S=(r=i)&&r.ngErrorLogger||Bd;var r;S(this._console,"ERROR",i),c&&S(this._console,"ORIGINAL ERROR",c),v&&S(this._console,"ERROR CONTEXT",v)}_findContext(i){return i?i.ngDebugContext||this._findContext(lu(i)):null}_findOriginalError(i){let c=i&&lu(i);for(;c&&lu(c);)c=lu(c);return c||null}}const uf=/^>|^->|<!--|-->|--!>|<!-$/g,cu=/(<|>)/;const $f=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(jn))();function ff(r){return r.ownerDocument.defaultView}function Hf(r){return r.ownerDocument.body}function eu(r){return r instanceof Function?r():r}var tc=(()=>((tc=tc||{})[tc.Important=1]="Important",tc[tc.DashCase=2]="DashCase",tc))();let qu;function hf(r,i){return qu(r,i)}function Hc(r){const i=r[3];return wi(i)?i[3]:i}function ap(r){return bd(r[13])}function Zc(r){return bd(r[4])}function bd(r){for(;null!==r&&!wi(r);)r=r[4];return r}function Sc(r,i,c,v,S){if(null!=v){let k,te=!1;wi(v)?k=v:Ei(v)&&(te=!0,v=v[0]);const le=ye(v);0===r&&null!==c?null==S?R(i,c,le):T(i,c,le,S||null,!0):1===r&&null!==c?T(i,c,le,S||null,!0):2===r?Vs(i,le,te):3===r&&i.destroyNode(le),null!=k&&function(r,i,c,v,S){const k=c[7];k!==ye(c)&&Sc(i,r,v,k,S);for(let le=10;le<c.length;le++){const Le=c[le];Wr(Le[1],Le,r,i,v,k)}}(i,r,k,c,S)}}function Mc(r,i){return pt(r)?r.createText(i):r.createTextNode(i)}function Iu(r,i,c){pt(r)?r.setValue(i,c):i.textContent=c}function jf(r,i){return r.createComment(function(r){return r.replace(uf,i=>i.replace(cu,"\u200b$1\u200b"))}(i))}function Dd(r,i,c){return pt(r)?r.createElement(i,c):null===c?r.createElement(i):r.createElementNS(c,i)}function Yf(r,i){const c=r[9],v=c.indexOf(i),S=i[3];1024&i[2]&&(i[2]&=-1025,bs(S,-1)),c.splice(v,1)}function xd(r,i){if(r.length<=10)return;const c=10+i,v=r[c];if(v){const S=v[17];null!==S&&S!==r&&Yf(S,v),i>0&&(r[c-1][4]=v[4]);const k=pc(r,10+i);!function(r,i){Wr(r,i,i[11],2,null,null),i[0]=null,i[6]=null}(v[1],v);const te=k[19];null!==te&&te.detachView(k[1]),v[3]=null,v[4]=null,v[2]&=-129}return v}function _f(r,i){if(!(256&i[2])){const c=i[11];pt(c)&&c.destroyNode&&Wr(r,i,c,3,null,null),function(r){let i=r[13];if(!i)return Zf(r[1],r);for(;i;){let c=null;if(Ei(i))c=i[13];else{const v=i[10];v&&(c=v)}if(!c){for(;i&&!i[4]&&i!==r;)Ei(i)&&Zf(i[1],i),i=i[3];null===i&&(i=r),Ei(i)&&Zf(i[1],i),c=i&&i[4]}i=c}}(i)}}function Zf(r,i){if(!(256&i[2])){i[2]&=-129,i[2]|=256,function(r,i){let c;if(null!=r&&null!=(c=r.destroyHooks))for(let v=0;v<c.length;v+=2){const S=i[c[v]];if(!(S instanceof Es)){const k=c[v+1];if(Array.isArray(k))for(let te=0;te<k.length;te+=2){const le=S[k[te]],Le=k[te+1];try{Le.call(le)}finally{}}else try{k.call(S)}finally{}}}}(r,i),function(r,i){const c=r.cleanup,v=i[7];let S=-1;if(null!==c)for(let k=0;k<c.length-1;k+=2)if("string"==typeof c[k]){const te=c[k+1],le="function"==typeof te?te(i):ye(i[te]),Le=v[S=c[k+2]],vt=c[k+3];"boolean"==typeof vt?le.removeEventListener(c[k],Le,vt):vt>=0?v[S=vt]():v[S=-vt].unsubscribe(),k+=2}else{const te=v[S=c[k+1]];c[k].call(te)}if(null!==v){for(let k=S+1;k<v.length;k++)v[k]();i[7]=null}}(r,i),1===i[1].type&&pt(i[11])&&i[11].destroy();const c=i[17];if(null!==c&&wi(i[3])){c!==i[3]&&Yf(c,i);const v=i[19];null!==v&&v.detachView(r)}}}function up(r,i,c){return gf(r,i.parent,c)}function gf(r,i,c){let v=i;for(;null!==v&&40&v.type;)v=(i=v).parent;if(null===v)return c[0];if(2&v.flags){const S=r.data[v.directiveStart].encapsulation;if(S===$n.None||S===$n.Emulated)return null}return Ni(v,c)}function T(r,i,c,v,S){pt(r)?r.insertBefore(i,c,v,S):i.insertBefore(c,v,S)}function R(r,i,c){pt(r)?r.appendChild(i,c):i.appendChild(c)}function q(r,i,c,v,S){null!==v?T(r,i,c,v,S):R(r,i,c)}function tt(r,i){return pt(r)?r.parentNode(i):i.parentNode}function bn(r,i,c){return wr(r,i,c)}function rr(r,i,c){return 40&r.type?Ni(r,c):null}let qr,wr=rr;function co(r,i){wr=r,qr=i}function Ko(r,i,c,v){const S=up(r,v,i),k=i[11],le=bn(v.parent||i[6],v,i);if(null!=S)if(Array.isArray(c))for(let Le=0;Le<c.length;Le++)q(k,S,c[Le],le,!1);else q(k,S,c,le,!1);void 0!==qr&&qr(k,v,i,c,S)}function so(r,i){if(null!==i){const c=i.type;if(3&c)return Ni(i,r);if(4&c)return qs(-1,r[i.index]);if(8&c){const v=i.child;if(null!==v)return so(r,v);{const S=r[i.index];return wi(S)?qs(-1,S):ye(S)}}if(32&c)return hf(i,r)()||ye(r[i.index]);{const v=gs(r,i);return null!==v?Array.isArray(v)?v[0]:so(Hc(r[16]),v):so(r,i.next)}}return null}function gs(r,i){return null!==i?r[16][6].projection[i.projection]:null}function qs(r,i){const c=10+r+1;if(c<i.length){const v=i[c],S=v[1].firstChild;if(null!==S)return so(v,S)}return i[7]}function Vs(r,i,c){const v=tt(r,i);v&&function(r,i,c,v){pt(r)?r.removeChild(i,c,v):i.removeChild(c)}(r,v,i,c)}function oi(r,i,c,v,S,k,te){for(;null!=c;){const le=v[c.index],Le=c.type;if(te&&0===i&&(le&&ec(ye(le),v),c.flags|=4),64!=(64&c.flags))if(8&Le)oi(r,i,c.child,v,S,k,!1),Sc(i,r,S,le,k);else if(32&Le){const vt=hf(c,v);let Qt;for(;Qt=vt();)Sc(i,r,S,Qt,k);Sc(i,r,S,le,k)}else 16&Le?Gi(r,i,v,c,S,k):Sc(i,r,S,le,k);c=te?c.projectionNext:c.next}}function Wr(r,i,c,v,S,k){oi(c,v,r.firstChild,i,S,k,!1)}function Gi(r,i,c,v,S,k){const te=c[16],Le=te[6].projection[v.projection];if(Array.isArray(Le))for(let vt=0;vt<Le.length;vt++)Sc(i,r,S,Le[vt],k);else oi(r,i,Le,te[3],S,k,!0)}function ps(r,i,c){pt(r)?r.setAttribute(i,"style",c):i.style.cssText=c}function la(r,i,c){pt(r)?""===c?r.removeAttribute(i,"class"):r.setAttribute(i,"class",c):i.className=c}function Fa(r,i,c){let v=r.length;for(;;){const S=r.indexOf(i,c);if(-1===S)return S;if(0===S||r.charCodeAt(S-1)<=32){const k=i.length;if(S+k===v||r.charCodeAt(S+k)<=32)return S}c=S+1}}const Tl="ng-template";function Vp(r,i,c){let v=0;for(;v<r.length;){let S=r[v++];if(c&&"class"===S){if(S=r[v],-1!==Fa(S.toLowerCase(),i,0))return!0}else if(1===S){for(;v<r.length&&"string"==typeof(S=r[v++]);)if(S.toLowerCase()===i)return!0;return!1}}return!1}function bh(r){return 4===r.type&&r.value!==Tl}function o_(r,i,c){return i===(4!==r.type||c?r.value:Tl)}function s_(r,i,c){let v=4;const S=r.attrs||[],k=function(r){for(let i=0;i<r.length;i++)if(ql(r[i]))return i;return r.length}(S);let te=!1;for(let le=0;le<i.length;le++){const Le=i[le];if("number"!=typeof Le){if(!te)if(4&v){if(v=2|1&v,""!==Le&&!o_(r,Le,c)||""===Le&&1===i.length){if(Lu(v))return!1;te=!0}}else{const vt=8&v?Le:i[++le];if(8&v&&null!==r.attrs){if(!Vp(r.attrs,vt,c)){if(Lu(v))return!1;te=!0}continue}const Pn=a_(8&v?"class":Le,S,bh(r),c);if(-1===Pn){if(Lu(v))return!1;te=!0;continue}if(""!==vt){let Wn;Wn=Pn>k?"":S[Pn+1].toLowerCase();const yr=8&v?Wn:null;if(yr&&-1!==Fa(yr,vt,0)||2&v&&vt!==Wn){if(Lu(v))return!1;te=!0}}}}else{if(!te&&!Lu(v)&&!Lu(Le))return!1;if(te&&Lu(Le))continue;te=!1,v=Le|1&v}}return Lu(v)||te}function Lu(r){return 0==(1&r)}function a_(r,i,c,v){if(null===i)return-1;let S=0;if(v||!c){let k=!1;for(;S<i.length;){const te=i[S];if(te===r)return S;if(3===te||6===te)k=!0;else{if(1===te||2===te){let le=i[++S];for(;"string"==typeof le;)le=i[++S];continue}if(4===te)break;if(0===te){S+=4;continue}}S+=k?1:2}return-1}return function(r,i){let c=r.indexOf(4);if(c>-1)for(c++;c<r.length;){const v=r[c];if("number"==typeof v)return-1;if(v===i)return c;c++}return-1}(i,r)}function Eh(r,i,c=!1){for(let v=0;v<i.length;v++)if(s_(r,i[v],c))return!0;return!1}function d_(r,i){e:for(let c=0;c<i.length;c++){const v=i[c];if(r.length===v.length){for(let S=0;S<r.length;S++)if(r[S]!==v[S])continue e;return!0}}return!1}function Th(r,i){return r?":not("+i.trim()+")":i}function Gp(r){let i=r[0],c=1,v=2,S="",k=!1;for(;c<r.length;){let te=r[c];if("string"==typeof te)if(2&v){const le=r[++c];S+="["+te+(le.length>0?'="'+le+'"':"")+"]"}else 8&v?S+="."+te:4&v&&(S+=" "+te);else""!==S&&!Lu(te)&&(i+=Th(k,S),S=""),v=te,k=k||!Lu(v);c++}return""!==S&&(i+=Th(k,S)),i}const ca={};function Sh(r){Mh(vs(),Di(),Un()+r,gn())}function Mh(r,i,c,v){if(!v)if(3==(3&i[2])){const k=r.preOrderCheckHooks;null!==k&&Ho(i,k,c)}else{const k=r.preOrderHooks;null!==k&&Zi(i,k,0,c)}lr(c)}function wp(r,i){return r<<17|i<<2}function Ju(r){return r>>17&32767}function zp(r){return 2|r}function Gd(r){return(131068&r)>>2}function dp(r,i){return-131069&r|i<<2}function Oh(r){return 1|r}function th(r,i){const c=r.contentQueries;if(null!==c)for(let v=0;v<c.length;v+=2){const S=c[v],k=c[v+1];if(-1!==k){const te=r.data[k];G(S),te.contentQueries(2,i[k],k)}}}function Ku(r,i,c,v,S,k,te,le,Le,vt){const Qt=i.blueprint.slice();return Qt[0]=S,Qt[2]=140|v,va(Qt),Qt[3]=Qt[15]=r,Qt[8]=c,Qt[10]=te||r&&r[10],Qt[11]=le||r&&r[11],Qt[12]=Le||r&&r[12]||null,Qt[9]=vt||r&&r[9]||null,Qt[6]=k,Qt[16]=2==i.type?r[16]:Qt,Qt}function ku(r,i,c,v,S){let k=r.data[i];if(null===k)k=qd(r,i,c,v,S),$o.lFrame.inI18n&&(k.flags|=64);else if(64&k.type){k.type=c,k.value=v,k.attrs=S;const te=hs();k.injectorIndex=null===te?-1:te.injectorIndex}return ze(k,!0),k}function qd(r,i,c,v,S){const k=ja(),te=wt(),Le=r.data[i]=function(r,i,c,v,S,k){return{type:c,index:v,insertBeforeIndex:null,injectorIndex:i?i.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,propertyBindings:null,flags:0,providerIndexes:0,value:S,attrs:k,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tViews:null,next:null,projectionNext:null,child:null,parent:i,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,te?k:k&&k.parent,c,i,v,S);return null===r.firstChild&&(r.firstChild=Le),null!==k&&(te?null==k.child&&null!==Le.parent&&(k.child=Le):null===k.next&&(k.next=Le)),Le}function Jd(r,i,c,v){if(0===c)return-1;const S=i.length;for(let k=0;k<c;k++)i.push(v),r.blueprint.push(v),r.data.push(null);return S}function Gf(r,i,c){Ft(i);try{const v=r.viewQuery;null!==v&&Hu(1,v,c);const S=r.template;null!==S&&nh(r,i,S,1,c),r.firstCreatePass&&(r.firstCreatePass=!1),r.staticContentQueries&&th(r,i),r.staticViewQueries&&Hu(2,r.viewQuery,c);const k=r.components;null!==k&&function(r,i){for(let c=0;c<i.length;c++)ih(r,i[c])}(i,k)}catch(v){throw r.firstCreatePass&&(r.incompleteFirstPass=!0,r.firstCreatePass=!1),v}finally{i[2]&=-5,pi()}}function vf(r,i,c,v){const S=i[2];if(256==(256&S))return;Ft(i);const k=gn();try{va(i),function(r){$o.lFrame.bindingIndex=r}(r.bindingStartIndex),null!==c&&nh(r,i,c,2,v);const te=3==(3&S);if(!k)if(te){const vt=r.preOrderCheckHooks;null!==vt&&Ho(i,vt,null)}else{const vt=r.preOrderHooks;null!==vt&&Zi(i,vt,0,null),na(i,0)}if(function(r){for(let i=ap(r);null!==i;i=Zc(i)){if(!i[2])continue;const c=i[9];for(let v=0;v<c.length;v++){const S=c[v],k=S[3];0==(1024&S[2])&&bs(k,1),S[2]|=1024}}}(i),function(r){for(let i=ap(r);null!==i;i=Zc(i))for(let c=10;c<i.length;c++){const v=i[c],S=v[1];Ea(v)&&vf(S,v,S.template,v[8])}}(i),null!==r.contentQueries&&th(r,i),!k)if(te){const vt=r.contentCheckHooks;null!==vt&&Ho(i,vt)}else{const vt=r.contentHooks;null!==vt&&Zi(i,vt,1),na(i,1)}!function(r,i){const c=r.hostBindingOpCodes;if(null!==c)try{for(let v=0;v<c.length;v++){const S=c[v];if(S<0)lr(~S);else{const k=S,te=c[++v],le=c[++v];io(te,k),le(2,i[k])}}}finally{lr(-1)}}(r,i);const le=r.components;null!==le&&function(r,i){for(let c=0;c<i.length;c++)Hh(r,i[c])}(i,le);const Le=r.viewQuery;if(null!==Le&&Hu(2,Le,v),!k)if(te){const vt=r.viewCheckHooks;null!==vt&&Ho(i,vt)}else{const vt=r.viewHooks;null!==vt&&Zi(i,vt,2),na(i,2)}!0===r.firstUpdatePass&&(r.firstUpdatePass=!1),k||(i[2]&=-73),1024&i[2]&&(i[2]&=-1025,bs(i[3],-1))}finally{pi()}}function Fh(r,i,c,v){const S=i[10],k=!gn(),te=Zo(i);try{k&&!te&&S.begin&&S.begin(),te&&Gf(r,i,v),vf(r,i,c,v)}finally{k&&!te&&S.end&&S.end()}}function nh(r,i,c,v,S){const k=Un(),te=2&v;try{lr(-1),te&&i.length>20&&Mh(r,i,20,gn()),c(v,S)}finally{lr(k)}}function T_(r,i,c){if(go(i)){const S=i.directiveEnd;for(let k=i.directiveStart;k<S;k++){const te=r.data[k];te.contentQueries&&te.contentQueries(1,c[k],k)}}}function rh(r,i,c){!Il()||(function(r,i,c,v){const S=c.directiveStart,k=c.directiveEnd;r.firstCreatePass||Dt(c,i),ec(v,i);const te=c.initialInputs;for(let le=S;le<k;le++){const Le=r.data[le],vt=Ji(Le);vt&&gv(i,c,Le);const Qt=fo(i,r,le,c);ec(Qt,i),null!==te&&mv(0,le-S,Qt,Le,0,te),vt&&(Lo(c.index,i)[8]=Qt)}}(r,i,c,Ni(c,i)),128==(128&c.flags)&&function(r,i,c){const v=c.directiveStart,S=c.directiveEnd,te=c.index,le=$o.lFrame.currentDirectiveIndex;try{lr(te);for(let Le=v;Le<S;Le++){const vt=r.data[Le],Qt=i[Le];Bi(Le),(null!==vt.hostBindings||0!==vt.hostVars||null!==vt.hostAttrs)&&vc(vt,Qt)}}finally{lr(-1),Bi(le)}}(r,i,c))}function Rp(r,i,c=Ni){const v=i.localNames;if(null!==v){let S=i.index+1;for(let k=0;k<v.length;k+=2){const te=v[k+1],le=-1===te?c(i,r):r[te];r[S++]=le}}}function kh(r){const i=r.tView;return null===i||i.incompleteFirstPass?r.tView=Np(1,null,r.template,r.decls,r.vars,r.directiveDefs,r.pipeDefs,r.viewQuery,r.schemas,r.consts):i}function Np(r,i,c,v,S,k,te,le,Le,vt){const Qt=20+v,Pn=Qt+S,Wn=function(r,i){const c=[];for(let v=0;v<i;v++)c.push(v<r?null:ca);return c}(Qt,Pn),yr="function"==typeof vt?vt():vt;return Wn[1]={type:r,blueprint:Wn,template:c,queries:null,viewQuery:le,declTNode:i,data:Wn.slice().fill(null,Qt),bindingStartIndex:Qt,expandoStartIndex:Pn,hostBindingOpCodes:null,firstCreatePass:!0,firstUpdatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof k?k():k,pipeRegistry:"function"==typeof te?te():te,firstChild:null,schemas:Le,consts:yr,incompleteFirstPass:!1}}function Mt(r,i,c,v){const S=Sl(i);null===c?S.push(v):(S.push(c),r.firstCreatePass&&vg(r).push(v,S.length-1))}function pr(r,i,c){for(let v in r)if(r.hasOwnProperty(v)){const S=r[v];(c=null===c?{}:c).hasOwnProperty(v)?c[v].push(i,S):c[v]=[i,S]}return c}function To(r,i,c,v,S,k,te,le){const Le=Ni(i,c);let Qt,vt=i.inputs;!le&&null!=vt&&(Qt=vt[v])?(yg(r,c,Qt,v,S),Fi(i)&&function(r,i){const c=Lo(i,r);16&c[2]||(c[2]|=64)}(c,i.index)):3&i.type&&(v=function(r){return"class"===r?"className":"for"===r?"htmlFor":"formaction"===r?"formAction":"innerHtml"===r?"innerHTML":"readonly"===r?"readOnly":"tabindex"===r?"tabIndex":r}(v),S=null!=te?te(S,i.value||"",v):S,pt(k)?k.setProperty(Le,v,S):kl(v)||(Le.setProperty?Le.setProperty(v,S):Le[v]=S))}function jc(r,i,c,v){let S=!1;if(Il()){const k=function(r,i,c){const v=r.directiveRegistry;let S=null;if(v)for(let k=0;k<v.length;k++){const te=v[k];Eh(c,te.selectors,!1)&&(S||(S=[]),kn(Dt(c,i),r,te.type),Ji(te)?(Al(r,c),S.unshift(te)):S.push(te))}return S}(r,i,c),te=null===v?null:{"":-1};if(null!==k){S=!0,km(c,r.data.length,k.length);for(let Qt=0;Qt<k.length;Qt++){const Pn=k[Qt];Pn.providersResolver&&Pn.providersResolver(Pn)}let le=!1,Le=!1,vt=Jd(r,i,k.length,null);for(let Qt=0;Qt<k.length;Qt++){const Pn=k[Qt];c.mergedAttrs=Yl(c.mergedAttrs,Pn.hostAttrs),C_(r,c,i,vt,Pn),$h(vt,Pn,te),null!==Pn.contentQueries&&(c.flags|=8),(null!==Pn.hostBindings||null!==Pn.hostAttrs||0!==Pn.hostVars)&&(c.flags|=128);const Wn=Pn.type.prototype;!le&&(Wn.ngOnChanges||Wn.ngOnInit||Wn.ngDoCheck)&&((r.preOrderHooks||(r.preOrderHooks=[])).push(c.index),le=!0),!Le&&(Wn.ngOnChanges||Wn.ngDoCheck)&&((r.preOrderCheckHooks||(r.preOrderCheckHooks=[])).push(c.index),Le=!0),vt++}!function(r,i){const v=i.directiveEnd,S=r.data,k=i.attrs,te=[];let le=null,Le=null;for(let vt=i.directiveStart;vt<v;vt++){const Qt=S[vt],Pn=Qt.inputs,Wn=null===k||bh(i)?null:$m(Pn,k);te.push(Wn),le=pr(Pn,vt,le),Le=pr(Qt.outputs,vt,Le)}null!==le&&(le.hasOwnProperty("class")&&(i.flags|=16),le.hasOwnProperty("style")&&(i.flags|=32)),i.initialInputs=te,i.inputs=le,i.outputs=Le}(r,c)}te&&function(r,i,c){if(i){const v=r.localNames=[];for(let S=0;S<i.length;S+=2){const k=c[i[S+1]];if(null==k)throw new H("301",`Export of name '${i[S+1]}' not found!`);v.push(i[S],k)}}}(c,v,te)}return c.mergedAttrs=Yl(c.mergedAttrs,c.attrs),S}function ed(r,i,c,v,S,k){const te=k.hostBindings;if(te){let le=r.hostBindingOpCodes;null===le&&(le=r.hostBindingOpCodes=[]);const Le=~i.index;(function(r){let i=r.length;for(;i>0;){const c=r[--i];if("number"==typeof c&&c<0)return c}return 0})(le)!=Le&&le.push(Le),le.push(v,S,te)}}function vc(r,i){null!==r.hostBindings&&r.hostBindings(1,i)}function Al(r,i){i.flags|=2,(r.components||(r.components=[])).push(i.index)}function $h(r,i,c){if(c){if(i.exportAs)for(let v=0;v<i.exportAs.length;v++)c[i.exportAs[v]]=r;Ji(i)&&(c[""]=r)}}function km(r,i,c){r.flags|=1,r.directiveStart=i,r.directiveEnd=i+c,r.providerIndexes=i}function C_(r,i,c,v,S){r.data[v]=S;const k=S.factory||(S.factory=gi(S.type)),te=new Es(k,Ji(S),null);r.blueprint[v]=te,c[v]=te,ed(r,i,0,v,Jd(r,c,S.hostVars,ca),S)}function gv(r,i,c){const v=Ni(i,r),S=kh(c),k=r[10],te=A_(r,Ku(r,S,null,c.onPush?64:16,v,i,k,k.createRenderer(v,c),null,null));r[i.index]=te}function _g(r,i,c,v,S,k,te){if(null==k)pt(r)?r.removeAttribute(i,S,c):i.removeAttribute(S);else{const le=null==te?M(k):te(k,v||"",S);pt(r)?r.setAttribute(i,S,le,c):c?i.setAttributeNS(c,S,le):i.setAttribute(S,le)}}function mv(r,i,c,v,S,k){const te=k[i];if(null!==te){const le=v.setInput;for(let Le=0;Le<te.length;){const vt=te[Le++],Qt=te[Le++],Pn=te[Le++];null!==le?v.setInput(c,Pn,vt,Qt):c[Qt]=Pn}}}function $m(r,i){let c=null,v=0;for(;v<i.length;){const S=i[v];if(0!==S)if(5!==S){if("number"==typeof S)break;r.hasOwnProperty(S)&&(null===c&&(c=[]),c.push(S,r[S],i[v+1])),v+=2}else v+=2;else v+=4}return c}function M_(r,i,c,v){return new Array(r,!0,!1,i,null,0,v,c,null,null)}function Hh(r,i){const c=Lo(i,r);if(Ea(c)){const v=c[1];80&c[2]?vf(v,c,v.template,c[8]):c[5]>0&&$u(c)}}function $u(r){for(let v=ap(r);null!==v;v=Zc(v))for(let S=10;S<v.length;S++){const k=v[S];if(1024&k[2]){const te=k[1];vf(te,k,te.template,k[8])}else k[5]>0&&$u(k)}const c=r[1].components;if(null!==c)for(let v=0;v<c.length;v++){const S=Lo(c[v],r);Ea(S)&&S[5]>0&&$u(S)}}function ih(r,i){const c=Lo(i,r),v=c[1];(function(r,i){for(let c=i.length;c<r.blueprint.length;c++)i.push(r.blueprint[c])})(v,c),Gf(v,c,c[8])}function A_(r,i){return r[13]?r[14][4]=i:r[13]=i,r[14]=i,i}function gg(r){for(;r;){r[2]|=64;const i=Hc(r);if(qi(r)&&!i)return r;r=i}return null}function w_(r,i,c){const v=i[10];v.begin&&v.begin();try{vf(r,i,r.template,c)}catch(S){throw oh(i,S),S}finally{v.end&&v.end()}}function yf(r){!function(r){for(let i=0;i<r.components.length;i++){const c=r.components[i],v=$c(c),S=v[1];Fh(S,v,S.template,c)}}(r[8])}function Hu(r,i,c){G(0),i(r,c)}const jm=(()=>Promise.resolve(null))();function Sl(r){return r[7]||(r[7]=[])}function vg(r){return r.cleanup||(r.cleanup=[])}function oh(r,i){const c=r[9],v=c?c.get(mc,null):null;v&&v.handleError(i)}function yg(r,i,c,v,S){for(let k=0;k<c.length;){const te=c[k++],le=c[k++],Le=i[te],vt=r.data[te];null!==vt.setInput?vt.setInput(Le,S,v,le):Le[le]=S}}function Nl(r,i,c){const v=Or(i,r);Iu(r[11],v,c)}function qf(r,i,c){let v=c?r.styles:null,S=c?r.classes:null,k=0;if(null!==i)for(let te=0;te<i.length;te++){const le=i[te];"number"==typeof le?k=le:1==k?S=m(S,le):2==k&&(v=m(v,le+": "+i[++te]+";"))}c?r.styles=v:r.stylesWithoutHost=v,c?r.classes=S:r.classesWithoutHost=S}const sh=new ns("INJECTOR",-1);class x_{get(i,c=N){if(c===N){const v=new Error(`NullInjectorError: No provider for ${_(i)}!`);throw v.name="NullInjectorError",v}return c}}const Ip=new ns("Set Injector scope."),jh={},bg={};let Lp;function R_(){return void 0===Lp&&(Lp=new x_),Lp}function pp(r,i=null,c=null,v){return new P_(r,c,i||R_(),v)}class P_{constructor(i,c,v,S=null){this.parent=v,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const k=[];c&&ki(c,le=>this.processProvider(le,i,c)),ki([i],le=>this.processInjectorType(le,[],k)),this.records.set(sh,Gc(void 0,this));const te=this.records.get(Ip);this.scope=null!=te?te.value:null,this.source=S||("object"==typeof i?null:_(i))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(i=>i.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(i,c=N,v=Mn.Default){this.assertNotDestroyed();const S=wn(this),k=Yn(void 0);try{if(!(v&Mn.SkipSelf)){let le=this.records.get(i);if(void 0===le){const Le=("function"==typeof(r=i)||"object"==typeof r&&r instanceof ns)&&Ie(i);le=Le&&this.injectableDefInScope(Le)?Gc(I_(i),jh):null,this.records.set(i,le)}if(null!=le)return this.hydrate(i,le)}return(v&Mn.Self?R_():this.parent).get(i,c=v&Mn.Optional&&c===N?null:c)}catch(te){if("NullInjectorError"===te.name){if((te[Q]=te[Q]||[]).unshift(_(i)),S)throw te;return Xo(te,i,"R3InjectorError",this.source)}throw te}finally{Yn(k),wn(S)}var r}_resolveInjectorDefTypes(){this.injectorDefTypes.forEach(i=>this.get(i))}toString(){const i=[];return this.records.forEach((v,S)=>i.push(_(S))),`R3Injector[${i.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(i,c,v){if(!(i=D(i)))return!1;let S=ln(i);const k=null==S&&i.ngModule||void 0,te=void 0===k?i:k,le=-1!==v.indexOf(te);if(void 0!==k&&(S=ln(k)),null==S)return!1;if(null!=S.imports&&!le){let Qt;v.push(te);try{ki(S.imports,Pn=>{this.processInjectorType(Pn,c,v)&&(void 0===Qt&&(Qt=[]),Qt.push(Pn))})}finally{}if(void 0!==Qt)for(let Pn=0;Pn<Qt.length;Pn++){const{ngModule:Wn,providers:yr}=Qt[Pn];ki(yr,Ur=>this.processProvider(Ur,Wn,yr||Tt))}}this.injectorDefTypes.add(te);const Le=gi(te)||(()=>new te);this.records.set(te,Gc(Le,jh));const vt=S.providers;if(null!=vt&&!le){const Qt=i;ki(vt,Pn=>this.processProvider(Pn,Qt,vt))}return void 0!==k&&void 0!==i.providers}processProvider(i,c,v){let S=hp(i=D(i))?i:D(i&&i.provide);const k=Eg(r=i)?Gc(void 0,r.useValue):Gc(dc(r),jh);var r;if(hp(i)||!0!==i.multi)this.records.get(S);else{let te=this.records.get(S);te||(te=Gc(void 0,jh,!0),te.factory=()=>Pi(te.multi),this.records.set(S,te)),S=i,te.multi.push(i)}this.records.set(S,k)}hydrate(i,c){return c.value===jh&&(c.value=bg,c.value=c.factory()),"object"==typeof c.value&&c.value&&null!==(r=c.value)&&"object"==typeof r&&"function"==typeof r.ngOnDestroy&&this.onDestroy.add(c.value),c.value;var r}injectableDefInScope(i){if(!i.providedIn)return!1;const c=D(i.providedIn);return"string"==typeof c?"any"===c||c===this.scope:this.injectorDefTypes.has(c)}}function I_(r){const i=Ie(r),c=null!==i?i.factory:gi(r);if(null!==c)return c;if(r instanceof ns)throw new Error(`Token ${_(r)} is missing a \u0275prov definition.`);if(r instanceof Function)return function(r){const i=r.length;if(i>0){const v=pl(i,"?");throw new Error(`Can't resolve all parameters for ${_(r)}: (${v.join(", ")}).`)}const c=function(r){const i=r&&(r[ar]||r[Rn]);if(i){const c=function(r){if(r.hasOwnProperty("name"))return r.name;const i=(""+r).match(/^function\s*([^\s(]+)/);return null===i?"":i[1]}(r);return console.warn(`DEPRECATED: DI is instantiating a token "${c}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${c}" class.`),i}return null}(r);return null!==c?()=>c.factory(r):()=>new r}(r);throw new Error("unreachable")}function dc(r,i,c){let v;if(hp(r)){const S=D(r);return gi(S)||I_(S)}if(Eg(r))v=()=>D(r.useValue);else if(function(r){return!(!r||!r.useFactory)}(r))v=()=>r.useFactory(...Pi(r.deps||[]));else if(function(r){return!(!r||!r.useExisting)}(r))v=()=>sr(D(r.useExisting));else{const S=D(r&&(r.useClass||r.provide));if(!function(r){return!!r.deps}(r))return gi(S)||I_(S);v=()=>new S(...Pi(r.deps))}return v}function Gc(r,i,c=!1){return{factory:r,value:i,multi:c?[]:void 0}}function Eg(r){return null!==r&&"object"==typeof r&&Yt in r}function hp(r){return"function"==typeof r}const Cg=function(r,i,c){return function(r,i=null,c=null,v){const S=pp(r,i,c,v);return S._resolveInjectorDefTypes(),S}({name:c},i,r,c)};let oc=(()=>{class r{static create(c,v){return Array.isArray(c)?Cg(c,v,""):Cg(c.providers,c.parent,c.name||"")}}return r.THROW_IF_NOT_FOUND=N,r.NULL=new x_,r.\u0275prov=Qe({token:r,providedIn:"any",factory:()=>sr(sh)}),r.__NG_ELEMENT_ID__=-1,r})();function s1(r,i){eo($c(r)[1],Vo())}function Z_(r){let i=function(r){return Object.getPrototypeOf(r.prototype).constructor}(r.type),c=!0;const v=[r];for(;i;){let S;if(Ji(r))S=i.\u0275cmp||i.\u0275dir;else{if(i.\u0275cmp)throw new Error("Directives cannot inherit Components");S=i.\u0275dir}if(S){if(c){v.push(S);const te=r;te.inputs=vu(r.inputs),te.declaredInputs=vu(r.declaredInputs),te.outputs=vu(r.outputs);const le=S.hostBindings;le&&c1(r,le);const Le=S.viewQuery,vt=S.contentQueries;if(Le&&V_(r,Le),vt&&l1(r,vt),h(r.inputs,S.inputs),h(r.declaredInputs,S.declaredInputs),h(r.outputs,S.outputs),Ji(S)&&S.data.animation){const Qt=r.data;Qt.animation=(Qt.animation||[]).concat(S.data.animation)}}const k=S.features;if(k)for(let te=0;te<k.length;te++){const le=k[te];le&&le.ngInherit&&le(r),le===Z_&&(c=!1)}}i=Object.getPrototypeOf(i)}!function(r){let i=0,c=null;for(let v=r.length-1;v>=0;v--){const S=r[v];S.hostVars=i+=S.hostVars,S.hostAttrs=Yl(S.hostAttrs,c=Yl(c,S.hostAttrs))}}(v)}function vu(r){return r===mt?{}:r===Tt?[]:r}function V_(r,i){const c=r.viewQuery;r.viewQuery=c?(v,S)=>{i(v,S),c(v,S)}:i}function l1(r,i){const c=r.contentQueries;r.contentQueries=c?(v,S,k)=>{i(v,S,k),c(v,S,k)}:i}function c1(r,i){const c=r.hostBindings;r.hostBindings=c?(v,S)=>{i(v,S),c(v,S)}:i}let Zh=null;function Jf(){if(!Zh){const r=jn.Symbol;if(r&&r.iterator)Zh=r.iterator;else{const i=Object.getOwnPropertyNames(Map.prototype);for(let c=0;c<i.length;++c){const v=i[c];"entries"!==v&&"size"!==v&&Map.prototype[v]===Map.prototype.entries&&(Zh=v)}}}return Zh}class Nd{constructor(i){this.wrapped=i}static wrap(i){return new Nd(i)}static unwrap(i){return Nd.isWrapped(i)?i.wrapped:i}static isWrapped(i){return i instanceof Nd}}function ch(r){return!!z_(r)&&(Array.isArray(r)||!(r instanceof Map)&&Jf()in r)}function z_(r){return null!==r&&("function"==typeof r||"object"==typeof r)}function Qd(r,i,c){return r[i]=c}function uh(r,i){return r[i]}function nu(r,i,c){return!Object.is(r[i],c)&&(r[i]=c,!0)}function Ef(r,i,c,v){const S=nu(r,i,c);return nu(r,i+1,v)||S}function Vh(r,i,c,v,S){const k=Ef(r,i,c,v);return nu(r,i+2,S)||k}function nd(r,i,c,v,S,k){const te=Ef(r,i,c,v);return Ef(r,i+2,S,k)||te}function Tf(r,i,c,v){const S=Di();return nu(S,ii(),i)&&(vs(),function(r,i,c,v,S,k){const te=Ni(r,i);_g(i[11],te,k,r.value,c,v,S)}(dr(),S,r,i,c,v)),Tf}function _p(r,i,c,v){return nu(r,ii(),c)?i+M(c)+v:ca}function Cf(r,i,c,v,S,k){const le=Ef(r,Pr(),c,S);return si(2),le?i+M(c)+v+M(S)+k:ca}function B(r,i,c,v,S,k,te,le){const Le=Di(),vt=vs(),Qt=r+20,Pn=vt.firstCreatePass?function(r,i,c,v,S,k,te,le,Le){const vt=i.consts,Qt=ku(i,r,4,te||null,Ma(vt,le));jc(i,c,Qt,Ma(vt,Le)),eo(i,Qt);const Pn=Qt.tViews=Np(2,Qt,v,S,k,i.directiveRegistry,i.pipeRegistry,null,i.schemas,vt);return null!==i.queries&&(i.queries.template(i,Qt),Pn.queries=i.queries.embeddedTView(Qt)),Qt}(Qt,vt,Le,i,c,v,S,k,te):vt.data[Qt];ze(Pn,!1);const Wn=Le[11].createComment("");Ko(vt,Le,Wn,Pn),ec(Wn,Le),A_(Le,Le[Qt]=M_(Wn,Le,Wn,Pn)),no(Pn)&&rh(vt,Le,Pn),null!=te&&Rp(Le,Pn,le)}function gt(r){return ss($o.lFrame.contextLView,20+r)}function gp(r,i=Mn.Default){const c=Di();return null===c?sr(r,i):Gr(Vo(),c,D(r),i)}function g1(r,i,c){const v=Di();return nu(v,ii(),i)&&To(vs(),dr(),v,r,i,v[11],c,!1),g1}function m1(r,i,c,v,S){const te=S?"class":"style";yg(r,c,i.inputs[te],te,v)}function v1(r,i,c,v){const S=Di(),k=vs(),te=20+r,le=S[11],Le=S[te]=Dd(le,i,$o.lFrame.currentNamespace),vt=k.firstCreatePass?function(r,i,c,v,S,k,te){const le=i.consts,vt=ku(i,r,2,S,Ma(le,k));return jc(i,c,vt,Ma(le,te)),null!==vt.attrs&&qf(vt,vt.attrs,!1),null!==vt.mergedAttrs&&qf(vt,vt.mergedAttrs,!0),null!==i.queries&&i.queries.elementStart(i,vt),vt}(te,k,S,0,i,c,v):k.data[te];ze(vt,!0);const Qt=vt.mergedAttrs;null!==Qt&&bl(le,Le,Qt);const Pn=vt.classes;null!==Pn&&la(le,Le,Pn);const Wn=vt.styles;null!==Wn&&ps(le,Le,Wn),64!=(64&vt.flags)&&Ko(k,S,Le,vt),0===$o.lFrame.elementDepthCount&&ec(Le,S),$o.lFrame.elementDepthCount++,no(vt)&&(rh(k,S,vt),T_(k,vt,S)),null!==v&&Rp(S,vt)}function y1(){let r=Vo();wt()?kt():(r=r.parent,ze(r,!1));const i=r;$o.lFrame.elementDepthCount--;const c=vs();c.firstCreatePass&&(eo(c,r),go(r)&&c.queries.elementEnd(r)),null!=i.classesWithoutHost&&function(r){return 0!=(16&r.flags)}(i)&&m1(c,i,Di(),i.classesWithoutHost,!0),null!=i.stylesWithoutHost&&function(r){return 0!=(32&r.flags)}(i)&&m1(c,i,Di(),i.stylesWithoutHost,!1)}function Lv(r,i,c,v){v1(r,i,c,v),y1()}function b1(r,i,c){const v=Di(),S=vs(),k=r+20,te=S.firstCreatePass?function(r,i,c,v,S){const k=i.consts,te=Ma(k,v),le=ku(i,r,8,"ng-container",te);return null!==te&&qf(le,te,!0),jc(i,c,le,Ma(k,S)),null!==i.queries&&i.queries.elementStart(i,le),le}(k,S,v,i,c):S.data[k];ze(te,!0);const le=v[k]=v[11].createComment("");Ko(S,v,le,te),ec(le,v),no(te)&&(rh(S,v,te),T_(S,te,v)),null!=c&&Rp(v,te)}function E1(){let r=Vo();const i=vs();wt()?kt():(r=r.parent,ze(r,!1)),i.firstCreatePass&&(eo(i,r),go(r)&&i.queries.elementEnd(r))}function Fv(r,i,c){b1(r,i,c),E1()}function kv(){return Di()}function T1(r){return!!r&&"function"==typeof r.then}function Up(r){return!!r&&"function"==typeof r.subscribe}const Qg=Up;function C1(r,i,c,v){const S=Di(),k=vs(),te=Vo();return function(r,i,c,v,S,k,te,le){const Le=no(v),Qt=r.firstCreatePass&&vg(r),Pn=i[8],Wn=Sl(i);let yr=!0;if(3&v.type||le){const ri=Ni(v,i),So=le?le(ri):ri,Wi=Wn.length,Fs=le?ma=>le(ye(ma[v.index])):v.index;if(pt(c)){let ma=null;if(!le&&Le&&(ma=function(r,i,c,v){const S=r.cleanup;if(null!=S)for(let k=0;k<S.length-1;k+=2){const te=S[k];if(te===c&&S[k+1]===v){const le=i[7],Le=S[k+2];return le.length>Le?le[Le]:null}"string"==typeof te&&(k+=2)}return null}(r,i,S,v.index)),null!==ma)(ma.__ngLastListenerFn__||ma).__ngNextListenerFn__=k,ma.__ngLastListenerFn__=k,yr=!1;else{k=S1(v,i,Pn,k,!1);const gl=c.listen(So,S,k);Wn.push(k,gl),Qt&&Qt.push(S,Fs,Wi,Wi+1)}}else k=S1(v,i,Pn,k,!0),So.addEventListener(S,k,te),Wn.push(k),Qt&&Qt.push(S,Fs,Wi,te)}else k=S1(v,i,Pn,k,!1);const Ur=v.outputs;let Si;if(yr&&null!==Ur&&(Si=Ur[S])){const ri=Si.length;if(ri)for(let So=0;So<ri;So+=2){const Du=i[Si[So]][Si[So+1]].subscribe(k),np=Wn.length;Wn.push(k,Du),Qt&&Qt.push(S,v.index,np,-(np+1))}}}(k,S,S[11],te,r,i,!!c,v),C1}function Uv(r,i,c,v){try{return!1!==c(v)}catch(S){return oh(r,S),!1}}function S1(r,i,c,v,S){return function k(te){if(te===Function)return v;const le=2&r.flags?Lo(r.index,i):i;0==(32&i[2])&&gg(le);let Le=Uv(i,0,v,te),vt=k.__ngNextListenerFn__;for(;vt;)Le=Uv(i,0,vt,te)&&Le,vt=vt.__ngNextListenerFn__;return S&&!1===Le&&(te.preventDefault(),te.returnValue=!1),Le}}function jv(r=1){return function(r){return($o.lFrame.contextLView=function(r,i){for(;r>0;)i=i[15],r--;return i}(r,$o.lFrame.contextLView))[8]}(r)}function Ob(r,i){let c=null;const v=function(r){const i=r.attrs;if(null!=i){const c=i.indexOf(5);if(0==(1&c))return i[c+1]}return null}(r);for(let S=0;S<i.length;S++){const k=i[S];if("*"!==k){if(null===v?Eh(r,k,!0):d_(v,k))return S}else c=S}return c}function Bv(r){const i=Di()[16][6];if(!i.projection){const v=i.projection=pl(r?r.length:1,null),S=v.slice();let k=i.child;for(;null!==k;){const te=r?Ob(k,r):0;null!==te&&(S[te]?S[te].projectionNext=k:v[te]=k,S[te]=k),k=k.next}}}function Yv(r,i=0,c){const v=Di(),S=vs(),k=ku(S,20+r,16,null,c||null);null===k.projection&&(k.projection=i),kt(),64!=(64&k.flags)&&function(r,i,c){Gi(i[11],0,i,c,up(r,c,i),bn(c.parent||i[6],c,i))}(S,v,k)}function M1(r,i,c){return Xg(r,"",i,"",c),M1}function Xg(r,i,c,v,S){const k=Di(),te=_p(k,i,c,v);return te!==ca&&To(vs(),dr(),k,r,te,k[11],S,!1),Xg}function O1(r,i,c,v,S,k,te){const le=Di(),Le=Cf(le,i,c,v,S,k);return Le!==ca&&To(vs(),dr(),le,r,Le,le[11],te,!1),O1}function Qv(r,i,c,v,S){const k=r[c+1],te=null===i;let le=v?Ju(k):Gd(k),Le=!1;for(;0!==le&&(!1===Le||te);){const Qt=r[le+1];Db(r[le],i)&&(Le=!0,r[le+1]=v?Oh(Qt):zp(Qt)),le=v?Ju(Qt):Gd(Qt)}Le&&(r[c+1]=v?zp(k):Oh(k))}function Db(r,i){return null===r||null==i||(Array.isArray(r)?r[1]:r)===i||!(!Array.isArray(r)||"string"!=typeof i)&&el(r,i)>=0}const du={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Xv(r){return r.substring(du.key,du.keyEnd)}function Kv(r,i){const c=du.textEnd;return c===i?-1:(i=du.keyEnd=function(r,i,c){for(;i<c&&r.charCodeAt(i)>32;)i++;return i}(r,du.key=i,c),Wh(r,i,c))}function Wh(r,i,c){for(;i<c&&r.charCodeAt(i)<=32;)i++;return i}function A1(r,i,c){return Sf(r,i,c,!1),A1}function w1(r,i){return Sf(r,i,null,!0),w1}function i0(r){Mf(xl,sd,r,!0)}function sd(r,i){for(let c=function(r){return function(r){du.key=0,du.keyEnd=0,du.value=0,du.valueEnd=0,du.textEnd=r.length}(r),Kv(r,Wh(r,0,du.textEnd))}(i);c>=0;c=Kv(i,c))xl(r,Xv(i),!0)}function Sf(r,i,c,v){const S=Di(),k=vs(),te=si(2);k.firstUpdatePass&&Kg(k,r,te,v),i!==ca&&nu(S,te,i)&&s0(k,k.data[Un()],S,S[11],r,S[te+1]=function(r,i){return null==r||("string"==typeof i?r+=i:"object"==typeof r&&(r=_(Jc(r)))),r}(i,c),v,te)}function Mf(r,i,c,v){const S=vs(),k=si(2);S.firstUpdatePass&&Kg(S,null,k,v);const te=Di();if(c!==ca&&nu(te,k,c)){const le=S.data[Un()];if(l0(le,v)&&!D1(S,k)){let Le=v?le.classesWithoutHost:le.stylesWithoutHost;null!==Le&&(c=m(Le,c||"")),m1(S,le,te,c,v)}else!function(r,i,c,v,S,k,te,le){S===ca&&(S=Tt);let Le=0,vt=0,Qt=0<S.length?S[0]:null,Pn=0<k.length?k[0]:null;for(;null!==Qt||null!==Pn;){const Wn=Le<S.length?S[Le+1]:void 0,yr=vt<k.length?k[vt+1]:void 0;let Si,Ur=null;Qt===Pn?(Le+=2,vt+=2,Wn!==yr&&(Ur=Pn,Si=yr)):null===Pn||null!==Qt&&Qt<Pn?(Le+=2,Ur=Qt):(vt+=2,Ur=Pn,Si=yr),null!==Ur&&s0(r,i,c,v,Ur,Si,te,le),Qt=Le<S.length?S[Le]:null,Pn=vt<k.length?k[vt]:null}}(S,le,te,te[11],te[k+1],te[k+1]=function(r,i,c){if(null==c||""===c)return Tt;const v=[],S=Jc(c);if(Array.isArray(S))for(let k=0;k<S.length;k++)r(v,S[k],!0);else if("object"==typeof S)for(const k in S)S.hasOwnProperty(k)&&r(v,k,S[k]);else"string"==typeof S&&i(v,S);return v}(r,i,c),v,k)}}function D1(r,i){return i>=r.expandoStartIndex}function Kg(r,i,c,v){const S=r.data;if(null===S[c+1]){const k=S[Un()],te=D1(r,c);l0(k,v)&&null===i&&!te&&(i=!1),i=function(r,i,c,v){const S=hi(r);let k=v?i.residualClasses:i.residualStyles;if(null===S)0===(v?i.classBindings:i.styleBindings)&&(c=q_(c=x1(null,r,i,c,v),i.attrs,v),k=null);else{const te=i.directiveStylingLast;if(-1===te||r[te]!==S)if(c=x1(S,r,i,c,v),null===k){let Le=function(r,i,c){const v=c?i.classBindings:i.styleBindings;if(0!==Gd(v))return r[Ju(v)]}(r,i,v);void 0!==Le&&Array.isArray(Le)&&(Le=x1(null,r,i,Le[1],v),Le=q_(Le,i.attrs,v),function(r,i,c,v){r[Ju(c?i.classBindings:i.styleBindings)]=v}(r,i,v,Le))}else k=function(r,i,c){let v;const S=i.directiveEnd;for(let k=1+i.directiveStylingLast;k<S;k++)v=q_(v,r[k].hostAttrs,c);return q_(v,i.attrs,c)}(r,i,v)}return void 0!==k&&(v?i.residualClasses=k:i.residualStyles=k),c}(S,k,i,v),function(r,i,c,v,S,k){let te=k?i.classBindings:i.styleBindings,le=Ju(te),Le=Gd(te);r[v]=c;let Qt,vt=!1;if(Array.isArray(c)){const Pn=c;Qt=Pn[1],(null===Qt||el(Pn,Qt)>0)&&(vt=!0)}else Qt=c;if(S)if(0!==Le){const Wn=Ju(r[le+1]);r[v+1]=wp(Wn,le),0!==Wn&&(r[Wn+1]=dp(r[Wn+1],v)),r[le+1]=function(r,i){return 131071&r|i<<17}(r[le+1],v)}else r[v+1]=wp(le,0),0!==le&&(r[le+1]=dp(r[le+1],v)),le=v;else r[v+1]=wp(Le,0),0===le?le=v:r[Le+1]=dp(r[Le+1],v),Le=v;vt&&(r[v+1]=zp(r[v+1])),Qv(r,Qt,v,!0),Qv(r,Qt,v,!1),function(r,i,c,v,S){const k=S?r.residualClasses:r.residualStyles;null!=k&&"string"==typeof i&&el(k,i)>=0&&(c[v+1]=Oh(c[v+1]))}(i,Qt,r,v,k),te=wp(le,Le),k?i.classBindings=te:i.styleBindings=te}(S,k,i,c,te,v)}}function x1(r,i,c,v,S){let k=null;const te=c.directiveEnd;let le=c.directiveStylingLast;for(-1===le?le=c.directiveStart:le++;le<te&&(k=i[le],v=q_(v,k.hostAttrs,S),k!==r);)le++;return null!==r&&(c.directiveStylingLast=le),v}function q_(r,i,c){const v=c?1:2;let S=-1;if(null!==i)for(let k=0;k<i.length;k++){const te=i[k];"number"==typeof te?S=te:S===v&&(Array.isArray(r)||(r=void 0===r?[]:["",r]),xl(r,te,!!c||i[++k]))}return void 0===r?null:r}function s0(r,i,c,v,S,k,te,le){if(!(3&i.type))return;const Le=r.data,vt=Le[le+1];em(function(r){return 1==(1&r)}(vt)?a0(Le,i,c,S,Gd(vt),te):void 0)||(em(k)||function(r){return 2==(2&r)}(vt)&&(k=a0(Le,null,c,S,le,te)),function(r,i,c,v,S){const k=pt(r);if(i)S?k?r.addClass(c,v):c.classList.add(v):k?r.removeClass(c,v):c.classList.remove(v);else{let te=-1===v.indexOf("-")?void 0:tc.DashCase;if(null==S)k?r.removeStyle(c,v,te):c.style.removeProperty(v);else{const le="string"==typeof S&&S.endsWith("!important");le&&(S=S.slice(0,-10),te|=tc.Important),k?r.setStyle(c,v,S,te):c.style.setProperty(v,S,le?"important":"")}}}(v,te,Or(Un(),c),S,k))}function a0(r,i,c,v,S,k){const te=null===i;let le;for(;S>0;){const Le=r[S],vt=Array.isArray(Le),Qt=vt?Le[1]:Le,Pn=null===Qt;let Wn=c[S+1];Wn===ca&&(Wn=Pn?Tt:void 0);let yr=Pn?Vl(Wn,v):Qt===v?Wn:void 0;if(vt&&!em(yr)&&(yr=Vl(Le,v)),em(yr)&&(le=yr,te))return le;const Ur=r[S+1];S=te?Ju(Ur):Gd(Ur)}if(null!==i){let Le=k?i.residualClasses:i.residualStyles;null!=Le&&(le=Vl(Le,v))}return le}function em(r){return void 0!==r}function l0(r,i){return 0!=(r.flags&(i?16:32))}function c0(r,i=""){const c=Di(),v=vs(),S=r+20,k=v.firstCreatePass?ku(v,S,1,i,null):v.data[S],te=c[S]=Mc(c[11],i);Ko(v,c,te,k),ze(k,!1)}function R1(r){return tm("",r,""),R1}function tm(r,i,c){const v=Di(),S=_p(v,r,i,c);return S!==ca&&Nl(v,Un(),S),tm}function N1(r,i,c,v,S){const k=Di(),te=Cf(k,r,i,c,v,S);return te!==ca&&Nl(k,Un(),te),N1}function P1(r,i,c,v,S,k,te){const le=Di(),Le=function(r,i,c,v,S,k,te,le){const vt=Vh(r,Pr(),c,S,te);return si(3),vt?i+M(c)+v+M(S)+k+M(te)+le:ca}(le,r,i,c,v,S,k,te);return Le!==ca&&Nl(le,Un(),Le),P1}function g0(r,i,c){Mf(xl,sd,_p(Di(),r,i,c),!0)}function m0(r,i,c,v,S){Mf(xl,sd,Cf(Di(),r,i,c,v,S),!0)}function v0(r,i,c,v,S,k,te,le,Le){Mf(xl,sd,function(r,i,c,v,S,k,te,le,Le,vt){const Pn=nd(r,Pr(),c,S,te,Le);return si(4),Pn?i+M(c)+v+M(S)+k+M(te)+le+M(Le)+vt:ca}(Di(),r,i,c,v,S,k,te,le,Le),!0)}function I1(r,i,c){const v=Di();return nu(v,ii(),i)&&To(vs(),dr(),v,r,i,v[11],c,!0),I1}function L1(r,i,c){const v=Di();if(nu(v,ii(),i)){const k=vs(),te=dr();To(k,te,v,r,i,function(r,i,c){return(null===r||Ji(r))&&(c=function(r){for(;Array.isArray(r);){if("object"==typeof r[1])return r;r=r[0]}return null}(c[i.index])),c[11]}(hi(k.data),te,v),c,!0)}return L1}const dh=void 0;var sE=["en",[["a","p"],["AM","PM"],dh],[["AM","PM"],dh,dh],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],dh,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],dh,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",dh,"{1} 'at' {0}",dh],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function(r){const i=Math.floor(Math.abs(r)),c=r.toString().replace(/^[^.]*\.?/,"").length;return 1===i&&0===c?1:5}];let qh={};function F1(r){const i=function(r){return r.toLowerCase().replace(/_/g,"-")}(r);let c=D0(i);if(c)return c;const v=i.split("-")[0];if(c=D0(v),c)return c;if("en"===v)return sE;throw new Error(`Missing locale data for the locale "${r}".`)}function w0(r){return F1(r)[Qs.PluralCase]}function D0(r){return r in qh||(qh[r]=jn.ng&&jn.ng.common&&jn.ng.common.locales&&jn.ng.common.locales[r]),qh[r]}var Qs=(()=>((Qs=Qs||{})[Qs.LocaleId=0]="LocaleId",Qs[Qs.DayPeriodsFormat=1]="DayPeriodsFormat",Qs[Qs.DayPeriodsStandalone=2]="DayPeriodsStandalone",Qs[Qs.DaysFormat=3]="DaysFormat",Qs[Qs.DaysStandalone=4]="DaysStandalone",Qs[Qs.MonthsFormat=5]="MonthsFormat",Qs[Qs.MonthsStandalone=6]="MonthsStandalone",Qs[Qs.Eras=7]="Eras",Qs[Qs.FirstDayOfWeek=8]="FirstDayOfWeek",Qs[Qs.WeekendRange=9]="WeekendRange",Qs[Qs.DateFormat=10]="DateFormat",Qs[Qs.TimeFormat=11]="TimeFormat",Qs[Qs.DateTimeFormat=12]="DateTimeFormat",Qs[Qs.NumberSymbols=13]="NumberSymbols",Qs[Qs.NumberFormats=14]="NumberFormats",Qs[Qs.CurrencyCode=15]="CurrencyCode",Qs[Qs.CurrencySymbol=16]="CurrencySymbol",Qs[Qs.CurrencyName=17]="CurrencyName",Qs[Qs.Currencies=18]="Currencies",Qs[Qs.Directionality=19]="Directionality",Qs[Qs.PluralCase=20]="PluralCase",Qs[Qs.ExtraData=21]="ExtraData",Qs))();const x0=["zero","one","two","few","many"],nm="en-US",rm={marker:"element"},im={marker:"ICU"};var Bc=(()=>((Bc=Bc||{})[Bc.SHIFT=2]="SHIFT",Bc[Bc.APPEND_EAGERLY=1]="APPEND_EAGERLY",Bc[Bc.COMMENT=2]="COMMENT",Bc))();let N0=nm;function k1(r){(function(r,i){null==r&&lt(i,r,null,"!=")})(r,"Expected localeId to be defined"),"string"==typeof r&&(N0=r.toLowerCase().replace(/_/g,"-"))}function P0(r,i,c){const v=i.insertBeforeIndex,S=Array.isArray(v)?v[0]:v;return null===S?rr(r,0,c):ye(c[S])}function I0(r,i,c,v,S){const k=i.insertBeforeIndex;if(Array.isArray(k)){let te=v,le=null;if(3&i.type||(le=te,te=S),null!==te&&0==(2&i.flags))for(let Le=1;Le<k.length;Le++)T(r,te,c[k[Le]],le,!1)}}function L0(r,i){if(r.push(i),r.length>1)for(let c=r.length-2;c>=0;c--){const v=r[c];om(v)||F0(v,i)&&null===$1(v)&&uE(v,i.index)}}function om(r){return!(64&r.type)}function F0(r,i){return om(i)||r.index>i.index}function $1(r){const i=r.insertBeforeIndex;return Array.isArray(i)?i[0]:i}function uE(r,i){const c=r.insertBeforeIndex;Array.isArray(c)?c[0]=i:(co(P0,I0),r.insertBeforeIndex=i)}function J_(r,i){const c=r.data[i];return null===c||"string"==typeof c?null:c.hasOwnProperty("currentCaseLViewIndex")?c:c.value}function pE(r,i,c){const v=qd(r,c,64,null,null);return L0(i,v),v}function sm(r,i){const c=i[r.currentCaseLViewIndex];return null===c?c:c<0?~c:c}function k0(r){return r>>>17}function $0(r){return(131070&r)>>>1}let Q_=0,X_=0;function H0(r,i,c,v){const S=c[11];let te,k=null;for(let le=0;le<i.length;le++){const Le=i[le];if("string"==typeof Le){const vt=i[++le];null===c[vt]&&(c[vt]=Mc(S,Le))}else if("number"==typeof Le)switch(1&Le){case 0:const vt=k0(Le);let Qt,Pn;if(null===k&&(k=vt,te=tt(S,v)),vt===k?(Qt=v,Pn=te):(Qt=null,Pn=ye(c[vt])),null!==Pn){const Si=$0(Le);T(S,Pn,c[Si],Qt,!1);const So=J_(r,Si);if(null!==So&&"object"==typeof So){const Wi=sm(So,c);null!==Wi&&H0(r,So.create[Wi],c,c[So.anchorIdx])}}break;case 1:const yr=i[++le],Ur=i[++le];_g(S,Or(Le>>>1,c),null,null,yr,Ur,null);break;default:throw new Error(`Unable to determine the type of mutate operation for "${Le}"`)}else switch(Le){case im:const vt=i[++le],Qt=i[++le];null===c[Qt]&&ec(c[Qt]=jf(S,vt),c);break;case rm:const Pn=i[++le],Wn=i[++le];null===c[Wn]&&ec(c[Wn]=Dd(S,Pn,null),c)}}}function U0(r,i,c,v,S){for(let k=0;k<c.length;k++){const te=c[k],le=c[++k];if(te&S){let Le="";for(let vt=k+1;vt<=k+le;vt++){const Qt=c[vt];if("string"==typeof Qt)Le+=Qt;else if("number"==typeof Qt)if(Qt<0)Le+=M(i[v-Qt]);else{const Pn=Qt>>>2;switch(3&Qt){case 1:const Wn=c[++vt],yr=c[++vt],Ur=r.data[Pn];"string"==typeof Ur?_g(i[11],i[Pn],null,Ur,Wn,Le,yr):To(r,Ur,i,Wn,Le,i[11],yr,!1);break;case 0:const Si=i[Pn];null!==Si&&Iu(i[11],Si,Le);break;case 2:vE(r,J_(r,Pn),i,Le);break;case 3:j0(r,J_(r,Pn),v,i)}}}}else{const Le=c[k+1];if(Le>0&&3==(3&Le)){const Qt=J_(r,Le>>>2);i[Qt.currentCaseLViewIndex]<0&&j0(r,Qt,v,i)}}k+=le}}function j0(r,i,c,v){let S=v[i.currentCaseLViewIndex];if(null!==S){let k=Q_;S<0&&(S=v[i.currentCaseLViewIndex]=~S,k=-1),U0(r,v,i.update[S],c,k)}}function vE(r,i,c,v){const S=function(r,i){let c=r.cases.indexOf(i);if(-1===c)switch(r.type){case 1:{const v=function(r,i){const c=w0(i)(parseInt(r,10)),v=x0[c];return void 0!==v?v:"other"}(i,N0);c=r.cases.indexOf(v),-1===c&&"other"!==v&&(c=r.cases.indexOf("other"));break}case 0:c=r.cases.indexOf("other")}return-1===c?null:c}(i,v);if(sm(i,c)!==S&&(B0(r,i,c),c[i.currentCaseLViewIndex]=null===S?null:~S,null!==S)){const te=c[i.anchorIdx];te&&H0(r,i.create[S],c,te)}}function B0(r,i,c){let v=sm(i,c);if(null!==v){const S=i.remove[v];for(let k=0;k<S.length;k++){const te=S[k];if(te>0){const le=Or(te,c);null!==le&&Vs(c[11],le)}else B0(r,J_(r,~te),c)}}}function bE(){const r=[];let c,v,i=-1;function k(le,Le){i=0;const vt=sm(le,Le);v=null!==vt?le.remove[vt]:Tt}function te(){if(i<v.length){const le=v[i++];return le>0?c[le]:(r.push(i,v),k(c[1].data[~le],c),te())}return 0===r.length?null:(v=r.pop(),i=r.pop(),te())}return function(le,Le){for(c=Le;r.length;)r.pop();return k(le.value,Le),te}}const am=/\ufffd(\d+):?\d*\ufffd/gi,Z0=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,TE=/\ufffd(\d+)\ufffd/,Jh=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,V0=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,CE=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,SE=/\uE500/g;function G0(r,i,c,v,S,k,te){const le=Jd(r,v,1,null);let Le=le<<Bc.SHIFT,vt=hs();i===vt&&(vt=null),null===vt&&(Le|=Bc.APPEND_EAGERLY),te&&(Le|=Bc.COMMENT,function(r){void 0===qu&&(qu=r())}(bE)),S.push(Le,null===k?"":k);const Qt=qd(r,le,te?32:1,null===k?"":k,null);L0(c,Qt);const Pn=Qt.index;return ze(Qt,!1),null!==vt&&i!==vt&&function(r,i){let c=r.insertBeforeIndex;null===c?(co(P0,I0),c=r.insertBeforeIndex=[null,i]):(function(r,i,c){r!=i&&lt(c,r,i,"==")}(Array.isArray(c),!0,"Expecting array here"),c.push(i))}(vt,Pn),Qt}function Qh(r,i,c,v,S,k,te){const le=te.match(am),Le=G0(r,i,c,k,v,le?null:te,!1);le&&Xh(S,te,Le.index,null,0,null)}function Xh(r,i,c,v,S,k){const te=r.length,le=te+1;r.push(null,null);const Le=te+2,vt=i.split(am);let Qt=0;for(let Pn=0;Pn<vt.length;Pn++){const Wn=vt[Pn];if(1&Pn){const yr=S+parseInt(Wn,10);r.push(-1-yr),Qt|=q0(yr)}else""!==Wn&&r.push(Wn)}return r.push(c<<2|(v?1:0)),v&&r.push(v,k),r[te]=Qt,r[le]=r.length-Le,Qt}function W0(r){let i=0;for(let c=0;c<r.length;c++){const v=r[c];"number"==typeof v&&v<0&&i++}return i}function q0(r){return 1<<Math.min(r,31)}function U1(r){let i,k,c="",v=0,S=!1;for(;null!==(i=V0.exec(r));)S?i[0]===`\ufffd/*${k}\ufffd`&&(v=i.index,S=!1):(c+=r.substring(v,i.index+i[0].length),k=i[1],S=!0);return c+=r.substr(v),c}function J0(r,i,c,v,S,k){let te=0;const le={type:S.type,currentCaseLViewIndex:Jd(r,i,1,null),anchorIdx:k,cases:[],create:[],remove:[],update:[]};(function(r,i,c){r.push(q0(i.mainBinding),2,-1-i.mainBinding,c<<2|2)})(c,S,k),function(r,i,c){const v=r.data[i];null===v?r.data[i]=c:v.value=c}(r,k,le);const Le=S.values;for(let vt=0;vt<Le.length;vt++){const Qt=Le[vt],Pn=[];for(let Wn=0;Wn<Qt.length;Wn++){const yr=Qt[Wn];if("string"!=typeof yr){const Ur=Pn.push(yr)-1;Qt[Wn]=`\x3c!--\ufffd${Ur}\ufffd--\x3e`}}te=DE(r,le,i,c,v,S.cases[vt],Qt.join(""),Pn)|te}te&&function(r,i,c){r.push(i,1,c<<2|3)}(c,te,k)}function Q0(r){const i=[],c=[];let v=1,S=0;const k=j1(r=r.replace(Jh,function(te,le,Le){return v="select"===Le?0:1,S=parseInt(le.substr(1),10),""}));for(let te=0;te<k.length;){let le=k[te++].trim();1===v&&(le=le.replace(/\s*(?:=)?(\w+)\s*/,"$1")),le.length&&i.push(le);const Le=j1(k[te++]);i.length>c.length&&c.push(Le)}return{type:v,mainBinding:S,cases:i,values:c}}function j1(r){if(!r)return[];let i=0;const c=[],v=[],S=/[{}]/g;let k;for(S.lastIndex=0;k=S.exec(r);){const le=k.index;if("}"==k[0]){if(c.pop(),0==c.length){const Le=r.substring(i,le);Jh.test(Le)?v.push(Q0(Le)):v.push(Le),i=le+1}}else{if(0==c.length){const Le=r.substring(i,le);v.push(Le),i=le+1}c.push("{")}}const te=r.substring(i);return v.push(te),v}function DE(r,i,c,v,S,k,te,le){const Le=[],vt=[],Qt=[];i.cases.push(k),i.create.push(Le),i.remove.push(vt),i.update.push(Qt);const Wn=Ad(ks()).getInertBodyElement(te),yr=us(Wn)||Wn;return yr?X0(r,i,c,v,Le,vt,Qt,yr,S,le,0):0}function X0(r,i,c,v,S,k,te,le,Le,vt,Qt){let Pn=0,Wn=le.firstChild;for(;Wn;){const yr=Jd(r,c,1,null);switch(Wn.nodeType){case Node.ELEMENT_NODE:const Ur=Wn,Si=Ur.tagName.toLowerCase();if(V.hasOwnProperty(Si)){B1(S,rm,Si,Le,yr),r.data[yr]=Si;const Fs=Ur.attributes;for(let ma=0;ma<Fs.length;ma++){const gl=Fs.item(ma),Du=gl.name.toLowerCase();gl.value.match(am)?Rt.hasOwnProperty(Du)&&Xh(te,gl.value,yr,gl.name,0,pe[Du]?Cu:A[Du]?dd:null):PE(S,yr,gl)}Pn=X0(r,i,c,v,S,k,te,Wn,yr,vt,Qt+1)|Pn,K0(k,yr,Qt)}break;case Node.TEXT_NODE:const ri=Wn.textContent||"",So=ri.match(am);B1(S,null,So?"":ri,Le,yr),K0(k,yr,Qt),So&&(Pn=Xh(te,ri,yr,null,0,null)|Pn);break;case Node.COMMENT_NODE:const Wi=TE.exec(Wn.textContent||"");if(Wi){const ma=vt[parseInt(Wi[1],10)];B1(S,im,"",Le,yr),J0(r,c,v,Le,ma,yr),xE(k,yr,Qt)}}Wn=Wn.nextSibling}return Pn}function K0(r,i,c){0===c&&r.push(i)}function xE(r,i,c){0===c&&(r.push(~i),r.push(i))}function B1(r,i,c,v,S){null!==i&&r.push(i),r.push(c,S,function(r,i,c){return 0|i<<17|c<<1}(0,v,S))}function PE(r,i,c){r.push(i<<1|1,c.name,c.value)}const IE=/\[(\ufffd.+?\ufffd?)\]/,LE=/\[(\ufffd.+?\ufffd?)\]|(\ufffd\/?\*\d+:\d+\ufffd)/g,FE=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,kE=/{([A-Z0-9_]+)}/g,ty=/\ufffdI18N_EXP_(ICU(_\d+)?)\ufffd/g,PC=/\/\*/,$E=/\d+\:(\d+)/;function Y1(r,i,c=-1){const v=vs(),S=Di(),k=20+r,te=Ma(v.consts,i),le=hs();v.firstCreatePass&&function(r,i,c,v,S,k){const te=hs(),le=[],Le=[],vt=[[]],Qt=function(r){return r.replace(SE," ")}(S=function(r,i){if(function(r){return-1===r}(i))return U1(r);{const c=r.indexOf(`:${i}\ufffd`)+2+i.toString().length,v=r.search(new RegExp(`\ufffd\\/\\*\\d+:${i}\ufffd`));return U1(r.substring(c,v))}}(S,k)).split(CE);for(let Pn=0;Pn<Qt.length;Pn++){let Wn=Qt[Pn];if(0==(1&Pn)){const yr=j1(Wn);for(let Ur=0;Ur<yr.length;Ur++){let Si=yr[Ur];if(0==(1&Ur)){const ri=Si;""!==ri&&Qh(r,te,vt[0],le,Le,c,ri)}else{const ri=Si;if("object"!=typeof ri)throw new Error(`Unable to parse ICU expression in "${S}" message.`);J0(r,c,Le,i,ri,G0(r,te,vt[0],c,le,"",!0).index)}}}else{const yr=47===Wn.charCodeAt(0),Si=(Wn.charCodeAt(yr?1:0),20+Number.parseInt(Wn.substring(yr?2:1)));if(yr)vt.shift(),ze(hs(),!1);else{const ri=pE(r,vt[0],Si);vt.unshift([]),ze(ri,!0)}}}r.data[v]={create:le,update:Le}}(v,null===le?0:le.index,S,k,te,c);const Le=v.data[k],Qt=gf(v,le===S[6]?null:le,S);(function(r,i,c,v){const S=r[11];for(let k=0;k<i.length;k++){const te=i[k++],le=i[k],Le=(te&Bc.COMMENT)===Bc.COMMENT,vt=(te&Bc.APPEND_EAGERLY)===Bc.APPEND_EAGERLY,Qt=te>>>Bc.SHIFT;let Pn=r[Qt];null===Pn&&(Pn=r[Qt]=Le?S.createComment(le):Mc(S,le)),vt&&null!==c&&T(S,c,Pn,v,!1)}})(S,Le.create,Qt,le&&8&le.type?S[le.index]:null),Ui(!0)}function eg(){Ui(!1)}function lm(r,i,c){Y1(r,i,c),eg()}function ny(r,i){const c=vs();!function(r,i,c){const S=Vo().index,k=[];if(r.firstCreatePass&&null===r.data[i]){for(let te=0;te<c.length;te+=2){const le=c[te],Le=c[te+1];if(""!==Le){if(Z0.test(Le))throw new Error(`ICU expressions are not supported in attributes. Message: "${Le}".`);Xh(k,Le,S,le,W0(k),null)}}r.data[i]=k}}(c,r+20,Ma(c.consts,i))}function Z1(r){return function(r){r&&(Q_|=1<<Math.min(X_,31)),X_++}(nu(Di(),ii(),r)),Z1}function ry(r){!function(r,i,c){if(X_>0){const v=r.data[c];U0(r,i,Array.isArray(v)?v:v.update,Pr()-X_-1,Q_)}Q_=0,X_=0}(vs(),Di(),r+20)}function iy(r,i={}){return function(r,i={}){let c=r;if(IE.test(r)){const v={},S=[0];c=c.replace(LE,(k,te,le)=>{const Le=te||le,vt=v[Le]||[];if(vt.length||(Le.split("|").forEach(Si=>{const ri=Si.match($E),So=ri?parseInt(ri[1],10):0,Wi=PC.test(Si);vt.push([So,Wi,Si])}),v[Le]=vt),!vt.length)throw new Error(`i18n postprocess: unmatched placeholder - ${Le}`);const Qt=S[S.length-1];let Pn=0;for(let Si=0;Si<vt.length;Si++)if(vt[Si][0]===Qt){Pn=Si;break}const[Wn,yr,Ur]=vt[Pn];return yr?S.pop():Qt!==Wn&&S.push(Wn),vt.splice(Pn,1),Ur})}return Object.keys(i).length&&(c=c.replace(FE,(v,S,k,te,le,Le)=>i.hasOwnProperty(k)?`${S}${i[k]}${Le}`:v),c=c.replace(kE,(v,S)=>i.hasOwnProperty(S)?i[S]:v),c=c.replace(ty,(v,S)=>{if(i.hasOwnProperty(S)){const k=i[S];if(!k.length)throw new Error(`i18n postprocess: unmatched ICU - ${v} with key: ${S}`);return k.shift()}return v})),c}(r,i)}function tg(r,i,c,v,S){if(r=D(r),Array.isArray(r))for(let k=0;k<r.length;k++)tg(r[k],i,c,v,S);else{const k=vs(),te=Di();let le=hp(r)?r:D(r.provide),Le=dc(r);const vt=Vo(),Qt=1048575&vt.providerIndexes,Pn=vt.directiveStart,Wn=vt.providerIndexes>>20;if(hp(r)||!r.multi){const yr=new Es(Le,S,gp),Ur=G1(le,i,S?Qt:Qt+Wn,Pn);-1===Ur?(kn(Dt(vt,te),k,le),V1(k,r,i.length),i.push(le),vt.directiveStart++,vt.directiveEnd++,S&&(vt.providerIndexes+=1048576),c.push(yr),te.push(yr)):(c[Ur]=yr,te[Ur]=yr)}else{const yr=G1(le,i,Qt+Wn,Pn),Ur=G1(le,i,Qt,Qt+Wn),Si=yr>=0&&c[yr],ri=Ur>=0&&c[Ur];if(S&&!ri||!S&&!Si){kn(Dt(vt,te),k,le);const So=function(r,i,c,v,S){const k=new Es(r,c,gp);return k.multi=[],k.index=i,k.componentProviders=0,sy(k,S,v&&!c),k}(S?jE:UE,c.length,S,v,Le);!S&&ri&&(c[Ur].providerFactory=So),V1(k,r,i.length,0),i.push(le),vt.directiveStart++,vt.directiveEnd++,S&&(vt.providerIndexes+=1048576),c.push(So),te.push(So)}else V1(k,r,yr>-1?yr:Ur,sy(c[S?Ur:yr],Le,!S&&v));!S&&v&&ri&&c[Ur].componentProviders++}}}function V1(r,i,c,v){const S=hp(i);if(S||function(r){return!!r.useClass}(i)){const te=(i.useClass||i).prototype.ngOnDestroy;if(te){const le=r.destroyHooks||(r.destroyHooks=[]);if(!S&&i.multi){const Le=le.indexOf(c);-1===Le?le.push(c,[v,te]):le[Le+1].push(v,te)}else le.push(c,te)}}}function sy(r,i,c){return c&&r.componentProviders++,r.multi.push(i)-1}function G1(r,i,c,v){for(let S=c;S<v;S++)if(i[S]===r)return S;return-1}function UE(r,i,c,v){return z1(this.multi,[])}function jE(r,i,c,v){const S=this.multi;let k;if(this.providerFactory){const te=this.providerFactory.componentProviders,le=fo(c,c[1],this.providerFactory.index,v);k=le.slice(0,te),z1(S,k);for(let Le=te;Le<le.length;Le++)k.push(le[Le])}else k=[],z1(S,k);return k}function z1(r,i){for(let c=0;c<r.length;c++)i.push((0,r[c])());return i}function ay(r,i=[]){return c=>{c.providersResolver=(v,S)=>function(r,i,c){const v=vs();if(v.firstCreatePass){const S=Ji(r);tg(c,v.data,v.blueprint,S,!0),tg(i,v.data,v.blueprint,S,!1)}}(v,S?S(r):r,i)}}class ly{}class cy{}const dy="ngComponent";class YE{resolveComponentFactory(i){throw function(r){const i=Error(`No component factory found for ${_(r)}. Did you add it to @NgModule.entryComponents?`);return i[dy]=r,i}(i)}}let Kh=(()=>{class r{}return r.NULL=new YE,r})();function cm(...r){}function e_(r,i){return new tp(Ni(r,i))}const GE=function(){return e_(Vo(),Di())};let tp=(()=>{class r{constructor(c){this.nativeElement=c}}return r.__NG_ELEMENT_ID__=GE,r})();function fy(r){return r instanceof tp?r.nativeElement:r}class um{}let zE=(()=>{class r{}return r.__NG_ELEMENT_ID__=()=>qE(),r})();const qE=function(){const r=Di(),c=Lo(Vo().index,r);return function(r){return r[11]}(Ei(c)?c:r)};let q1=(()=>{class r{}return r.\u0275prov=Qe({token:r,providedIn:"root",factory:()=>null}),r})();class py{constructor(i){this.full=i,this.major=i.split(".")[0],this.minor=i.split(".")[1],this.patch=i.split(".").slice(2).join(".")}}const dm=new py("12.2.13");class hy{constructor(){}supports(i){return ch(i)}create(i){return new KE(i)}}const XE=(r,i)=>i;class KE{constructor(i){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=i||XE}forEachItem(i){let c;for(c=this._itHead;null!==c;c=c._next)i(c)}forEachOperation(i){let c=this._itHead,v=this._removalsHead,S=0,k=null;for(;c||v;){const te=!v||c&&c.currentIndex<gy(v,S,k)?c:v,le=gy(te,S,k),Le=te.currentIndex;if(te===v)S--,v=v._nextRemoved;else if(c=c._next,null==te.previousIndex)S++;else{k||(k=[]);const vt=le-S,Qt=Le-S;if(vt!=Qt){for(let Wn=0;Wn<vt;Wn++){const yr=Wn<k.length?k[Wn]:k[Wn]=0,Ur=yr+Wn;Qt<=Ur&&Ur<vt&&(k[Wn]=yr+1)}k[te.previousIndex]=Qt-vt}}le!==Le&&i(te,le,Le)}}forEachPreviousItem(i){let c;for(c=this._previousItHead;null!==c;c=c._nextPrevious)i(c)}forEachAddedItem(i){let c;for(c=this._additionsHead;null!==c;c=c._nextAdded)i(c)}forEachMovedItem(i){let c;for(c=this._movesHead;null!==c;c=c._nextMoved)i(c)}forEachRemovedItem(i){let c;for(c=this._removalsHead;null!==c;c=c._nextRemoved)i(c)}forEachIdentityChange(i){let c;for(c=this._identityChangesHead;null!==c;c=c._nextIdentityChange)i(c)}diff(i){if(null==i&&(i=[]),!ch(i))throw new Error(`Error trying to diff '${_(i)}'. Only arrays and iterables are allowed`);return this.check(i)?this:null}onDestroy(){}check(i){this._reset();let S,k,te,c=this._itHead,v=!1;if(Array.isArray(i)){this.length=i.length;for(let le=0;le<this.length;le++)k=i[le],te=this._trackByFn(le,k),null!==c&&Object.is(c.trackById,te)?(v&&(c=this._verifyReinsertion(c,k,te,le)),Object.is(c.item,k)||this._addIdentityChange(c,k)):(c=this._mismatch(c,k,te,le),v=!0),c=c._next}else S=0,function(r,i){if(Array.isArray(r))for(let c=0;c<r.length;c++)i(r[c]);else{const c=r[Jf()]();let v;for(;!(v=c.next()).done;)i(v.value)}}(i,le=>{te=this._trackByFn(S,le),null!==c&&Object.is(c.trackById,te)?(v&&(c=this._verifyReinsertion(c,le,te,S)),Object.is(c.item,le)||this._addIdentityChange(c,le)):(c=this._mismatch(c,le,te,S),v=!0),c=c._next,S++}),this.length=S;return this._truncate(c),this.collection=i,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let i;for(i=this._previousItHead=this._itHead;null!==i;i=i._next)i._nextPrevious=i._next;for(i=this._additionsHead;null!==i;i=i._nextAdded)i.previousIndex=i.currentIndex;for(this._additionsHead=this._additionsTail=null,i=this._movesHead;null!==i;i=i._nextMoved)i.previousIndex=i.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(i,c,v,S){let k;return null===i?k=this._itTail:(k=i._prev,this._remove(i)),null!==(i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(v,null))?(Object.is(i.item,c)||this._addIdentityChange(i,c),this._reinsertAfter(i,k,S)):null!==(i=null===this._linkedRecords?null:this._linkedRecords.get(v,S))?(Object.is(i.item,c)||this._addIdentityChange(i,c),this._moveAfter(i,k,S)):i=this._addAfter(new eT(c,v),k,S),i}_verifyReinsertion(i,c,v,S){let k=null===this._unlinkedRecords?null:this._unlinkedRecords.get(v,null);return null!==k?i=this._reinsertAfter(k,i._prev,S):i.currentIndex!=S&&(i.currentIndex=S,this._addToMoves(i,S)),i}_truncate(i){for(;null!==i;){const c=i._next;this._addToRemovals(this._unlink(i)),i=c}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(i,c,v){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(i);const S=i._prevRemoved,k=i._nextRemoved;return null===S?this._removalsHead=k:S._nextRemoved=k,null===k?this._removalsTail=S:k._prevRemoved=S,this._insertAfter(i,c,v),this._addToMoves(i,v),i}_moveAfter(i,c,v){return this._unlink(i),this._insertAfter(i,c,v),this._addToMoves(i,v),i}_addAfter(i,c,v){return this._insertAfter(i,c,v),this._additionsTail=null===this._additionsTail?this._additionsHead=i:this._additionsTail._nextAdded=i,i}_insertAfter(i,c,v){const S=null===c?this._itHead:c._next;return i._next=S,i._prev=c,null===S?this._itTail=i:S._prev=i,null===c?this._itHead=i:c._next=i,null===this._linkedRecords&&(this._linkedRecords=new _y),this._linkedRecords.put(i),i.currentIndex=v,i}_remove(i){return this._addToRemovals(this._unlink(i))}_unlink(i){null!==this._linkedRecords&&this._linkedRecords.remove(i);const c=i._prev,v=i._next;return null===c?this._itHead=v:c._next=v,null===v?this._itTail=c:v._prev=c,i}_addToMoves(i,c){return i.previousIndex===c||(this._movesTail=null===this._movesTail?this._movesHead=i:this._movesTail._nextMoved=i),i}_addToRemovals(i){return null===this._unlinkedRecords&&(this._unlinkedRecords=new _y),this._unlinkedRecords.put(i),i.currentIndex=null,i._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=i,i._prevRemoved=null):(i._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=i),i}_addIdentityChange(i,c){return i.item=c,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=i:this._identityChangesTail._nextIdentityChange=i,i}}class eT{constructor(i,c){this.item=i,this.trackById=c,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class tT{constructor(){this._head=null,this._tail=null}add(i){null===this._head?(this._head=this._tail=i,i._nextDup=null,i._prevDup=null):(this._tail._nextDup=i,i._prevDup=this._tail,i._nextDup=null,this._tail=i)}get(i,c){let v;for(v=this._head;null!==v;v=v._nextDup)if((null===c||c<=v.currentIndex)&&Object.is(v.trackById,i))return v;return null}remove(i){const c=i._prevDup,v=i._nextDup;return null===c?this._head=v:c._nextDup=v,null===v?this._tail=c:v._prevDup=c,null===this._head}}class _y{constructor(){this.map=new Map}put(i){const c=i.trackById;let v=this.map.get(c);v||(v=new tT,this.map.set(c,v)),v.add(i)}get(i,c){const S=this.map.get(i);return S?S.get(i,c):null}remove(i){const c=i.trackById;return this.map.get(c).remove(i)&&this.map.delete(c),i}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function gy(r,i,c){const v=r.previousIndex;if(null===v)return v;let S=0;return c&&v<c.length&&(S=c[v]),v+i+S}class my{constructor(){}supports(i){return i instanceof Map||z_(i)}create(){return new nT}}class nT{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(i){let c;for(c=this._mapHead;null!==c;c=c._next)i(c)}forEachPreviousItem(i){let c;for(c=this._previousMapHead;null!==c;c=c._nextPrevious)i(c)}forEachChangedItem(i){let c;for(c=this._changesHead;null!==c;c=c._nextChanged)i(c)}forEachAddedItem(i){let c;for(c=this._additionsHead;null!==c;c=c._nextAdded)i(c)}forEachRemovedItem(i){let c;for(c=this._removalsHead;null!==c;c=c._nextRemoved)i(c)}diff(i){if(i){if(!(i instanceof Map||z_(i)))throw new Error(`Error trying to diff '${_(i)}'. Only maps and objects are allowed`)}else i=new Map;return this.check(i)?this:null}onDestroy(){}check(i){this._reset();let c=this._mapHead;if(this._appendAfter=null,this._forEach(i,(v,S)=>{if(c&&c.key===S)this._maybeAddToChanges(c,v),this._appendAfter=c,c=c._next;else{const k=this._getOrCreateRecordForKey(S,v);c=this._insertBeforeOrAppend(c,k)}}),c){c._prev&&(c._prev._next=null),this._removalsHead=c;for(let v=c;null!==v;v=v._nextRemoved)v===this._mapHead&&(this._mapHead=null),this._records.delete(v.key),v._nextRemoved=v._next,v.previousValue=v.currentValue,v.currentValue=null,v._prev=null,v._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(i,c){if(i){const v=i._prev;return c._next=i,c._prev=v,i._prev=c,v&&(v._next=c),i===this._mapHead&&(this._mapHead=c),this._appendAfter=i,i}return this._appendAfter?(this._appendAfter._next=c,c._prev=this._appendAfter):this._mapHead=c,this._appendAfter=c,null}_getOrCreateRecordForKey(i,c){if(this._records.has(i)){const S=this._records.get(i);this._maybeAddToChanges(S,c);const k=S._prev,te=S._next;return k&&(k._next=te),te&&(te._prev=k),S._next=null,S._prev=null,S}const v=new rT(i);return this._records.set(i,v),v.currentValue=c,this._addToAdditions(v),v}_reset(){if(this.isDirty){let i;for(this._previousMapHead=this._mapHead,i=this._previousMapHead;null!==i;i=i._next)i._nextPrevious=i._next;for(i=this._changesHead;null!==i;i=i._nextChanged)i.previousValue=i.currentValue;for(i=this._additionsHead;null!=i;i=i._nextAdded)i.previousValue=i.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(i,c){Object.is(c,i.currentValue)||(i.previousValue=i.currentValue,i.currentValue=c,this._addToChanges(i))}_addToAdditions(i){null===this._additionsHead?this._additionsHead=this._additionsTail=i:(this._additionsTail._nextAdded=i,this._additionsTail=i)}_addToChanges(i){null===this._changesHead?this._changesHead=this._changesTail=i:(this._changesTail._nextChanged=i,this._changesTail=i)}_forEach(i,c){i instanceof Map?i.forEach(c):Object.keys(i).forEach(v=>c(i[v],v))}}class rT{constructor(i){this.key=i,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function vy(){return new fm([new hy])}let fm=(()=>{class r{constructor(c){this.factories=c}static create(c,v){if(null!=v){const S=v.factories.slice();c=c.concat(S)}return new r(c)}static extend(c){return{provide:r,useFactory:v=>r.create(c,v||vy()),deps:[[r,new ya,new Ms]]}}find(c){const v=this.factories.find(S=>S.supports(c));if(null!=v)return v;throw new Error(`Cannot find a differ supporting object '${c}' of type '${function(r){return r.name||typeof r}(c)}'`)}}return r.\u0275prov=Qe({token:r,providedIn:"root",factory:vy}),r})();function yy(){return new pm([new my])}let pm=(()=>{class r{constructor(c){this.factories=c}static create(c,v){if(v){const S=v.factories.slice();c=c.concat(S)}return new r(c)}static extend(c){return{provide:r,useFactory:v=>r.create(c,v||yy()),deps:[[r,new ya,new Ms]]}}find(c){const v=this.factories.find(S=>S.supports(c));if(v)return v;throw new Error(`Cannot find a differ supporting object '${c}'`)}}return r.\u0275prov=Qe({token:r,providedIn:"root",factory:yy}),r})();function hm(r,i,c,v,S=!1){for(;null!==c;){const k=i[c.index];if(null!==k&&v.push(ye(k)),wi(k))for(let le=10;le<k.length;le++){const Le=k[le],vt=Le[1].firstChild;null!==vt&&hm(Le[1],Le,vt,v)}const te=c.type;if(8&te)hm(r,i,c.child,v);else if(32&te){const le=hf(c,i);let Le;for(;Le=le();)v.push(Le)}else if(16&te){const le=gs(i,c);if(Array.isArray(le))v.push(...le);else{const Le=Hc(i[16]);hm(Le[1],Le,le,v,!0)}}c=S?c.projectionNext:c.next}return v}class ng{constructor(i,c){this._lView=i,this._cdRefInjectingView=c,this._appRef=null,this._attachedToViewContainer=!1}get rootNodes(){const i=this._lView,c=i[1];return hm(c,i,c.firstChild,[])}get context(){return this._lView[8]}set context(i){this._lView[8]=i}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const i=this._lView[3];if(wi(i)){const c=i[8],v=c?c.indexOf(this):-1;v>-1&&(xd(i,v),pc(c,v))}this._attachedToViewContainer=!1}_f(this._lView[1],this._lView)}onDestroy(i){Mt(this._lView[1],this._lView,null,i)}markForCheck(){gg(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){w_(this._lView[1],this._lView,this.context)}checkNoChanges(){!function(r,i,c){xr(!0);try{w_(r,i,c)}finally{xr(!1)}}(this._lView[1],this._lView,this.context)}attachToViewContainerRef(){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._attachedToViewContainer=!0}detachFromAppRef(){var i;this._appRef=null,Wr(this._lView[1],i=this._lView,i[11],2,null,null)}attachToAppRef(i){if(this._attachedToViewContainer)throw new Error("This view is already attached to a ViewContainer!");this._appRef=i}}class oT extends ng{constructor(i){super(i),this._view=i}detectChanges(){yf(this._view)}checkNoChanges(){!function(r){xr(!0);try{yf(r)}finally{xr(!1)}}(this._view)}get context(){return null}}const aT=function(r){return function(r,i,c){if(Fi(r)&&!c){const v=Lo(r.index,i);return new ng(v,v)}return 47&r.type?new ng(i[16],i):null}(Vo(),Di(),16==(16&r))};let lT=(()=>{class r{}return r.__NG_ELEMENT_ID__=aT,r})();const dT=[new my],pT=new fm([new hy]),hT=new pm(dT),by=function(){return _m(Vo(),Di())};let rg=(()=>{class r{}return r.__NG_ELEMENT_ID__=by,r})();const gT=rg,mT=class extends gT{constructor(i,c,v){super(),this._declarationLView=i,this._declarationTContainer=c,this.elementRef=v}createEmbeddedView(i){const c=this._declarationTContainer.tViews,v=Ku(this._declarationLView,c,i,16,null,c.declTNode,null,null,null,null);v[17]=this._declarationLView[this._declarationTContainer.index];const k=this._declarationLView[19];return null!==k&&(v[19]=k.createEmbeddedView(c)),Gf(c,v,i),new ng(v)}};function _m(r,i){return 4&r.type?new mT(i,r,e_(r,i)):null}class fh{}class Ey{}const bT=function(){return ig(Vo(),Di())};let gm=(()=>{class r{}return r.__NG_ELEMENT_ID__=bT,r})();const ET=gm,Ty=class extends ET{constructor(i,c,v){super(),this._lContainer=i,this._hostTNode=c,this._hostLView=v}get element(){return e_(this._hostTNode,this._hostLView)}get injector(){return new oo(this._hostTNode,this._hostLView)}get parentInjector(){const i=Gn(this._hostTNode,this._hostLView);if(Je(i)){const c=Ot(i,this._hostLView),v=Fe(i);return new oo(c[1].data[v+8],c)}return new oo(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(i){const c=Cy(this._lContainer);return null!==c&&c[i]||null}get length(){return this._lContainer.length-10}createEmbeddedView(i,c,v){const S=i.createEmbeddedView(c||{});return this.insert(S,v),S}createComponent(i,c,v,S,k){const te=v||this.parentInjector;if(!k&&null==i.ngModule&&te){const Le=te.get(fh,null);Le&&(k=Le)}const le=i.create(te,S,void 0,k);return this.insert(le.hostView,c),le}insert(i,c){const v=i._lView,S=v[1];if(wi(v[3])){const Qt=this.indexOf(i);if(-1!==Qt)this.detach(Qt);else{const Pn=v[3],Wn=new Ty(Pn,Pn[6],Pn[3]);Wn.detach(Wn.indexOf(i))}}const k=this._adjustIndex(c),te=this._lContainer;!function(r,i,c,v){const S=10+v,k=c.length;v>0&&(c[S-1][4]=i),v<k-10?(i[4]=c[S],Oc(c,10+v,i)):(c.push(i),i[4]=null),i[3]=c;const te=i[17];null!==te&&c!==te&&function(r,i){const c=r[9];i[16]!==i[3][3][16]&&(r[2]=!0),null===c?r[9]=[i]:c.push(i)}(te,i);const le=i[19];null!==le&&le.insertView(r),i[2]|=128}(S,v,te,k);const le=qs(k,te),Le=v[11],vt=tt(Le,te[7]);return null!==vt&&function(r,i,c,v,S,k){v[0]=S,v[6]=i,Wr(r,v,c,1,S,k)}(S,te[6],Le,v,vt,le),i.attachToViewContainerRef(),Oc(mm(te),k,i),i}move(i,c){return this.insert(i,c)}indexOf(i){const c=Cy(this._lContainer);return null!==c?c.indexOf(i):-1}remove(i){const c=this._adjustIndex(i,-1),v=xd(this._lContainer,c);v&&(pc(mm(this._lContainer),c),_f(v[1],v))}detach(i){const c=this._adjustIndex(i,-1),v=xd(this._lContainer,c);return v&&null!=pc(mm(this._lContainer),c)?new ng(v):null}_adjustIndex(i,c=0){return null==i?this.length+c:i}};function Cy(r){return r[8]}function mm(r){return r[8]||(r[8]=[])}function ig(r,i){let c;const v=i[r.index];if(wi(v))c=v;else{let S;if(8&r.type)S=ye(v);else{const k=i[11];S=k.createComment("");const te=Ni(r,i);T(k,tt(k,te),S,function(r,i){return pt(r)?r.nextSibling(i):i.nextSibling}(k,te),!1)}i[r.index]=c=M_(v,i,S,r),A_(i,c)}return new Ty(c,r,i)}const mh={};class nv extends Kh{constructor(i){super(),this.ngModule=i}resolveComponentFactory(i){const c=Bn(i);return new iv(c,this.ngModule)}}function rv(r){const i=[];for(let c in r)r.hasOwnProperty(c)&&i.push({propName:r[c],templateName:c});return i}const Vy=new ns("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>$f});class iv extends cy{constructor(i,c){super(),this.componentDef=i,this.ngModule=c,this.componentType=i.type,this.selector=i.selectors.map(Gp).join(","),this.ngContentSelectors=i.ngContentSelectors?i.ngContentSelectors:[],this.isBoundToModule=!!c}get inputs(){return rv(this.componentDef.inputs)}get outputs(){return rv(this.componentDef.outputs)}create(i,c,v,S){const k=(S=S||this.ngModule)?function(r,i){return{get:(c,v,S)=>{const k=r.get(c,mh,S);return k!==mh||v===mh?k:i.get(c,v,S)}}}(i,S.injector):i,te=k.get(um,Nt),le=k.get(q1,null),Le=te.createRenderer(null,this.componentDef),vt=this.componentDef.selectors[0][0]||"div",Qt=v?function(r,i,c){if(pt(r))return r.selectRootElement(i,c===$n.ShadowDom);let v="string"==typeof i?r.querySelector(i):i;return v.textContent="",v}(Le,v,this.componentDef.encapsulation):Dd(te.createRenderer(null,this.componentDef),vt,function(r){const i=r.toLowerCase();return"svg"===i?"http://www.w3.org/2000/svg":"math"===i?"http://www.w3.org/1998/MathML/":null}(vt)),Pn=this.componentDef.onPush?576:528,Wn=function(r,i){return{components:[],scheduler:r||$f,clean:jm,playerHandler:i||null,flags:0}}(),yr=Np(0,null,null,1,0,null,null,null,null,null),Ur=Ku(null,yr,Wn,Pn,null,null,te,Le,le,k);let Si,ri;Ft(Ur);try{const So=function(r,i,c,v,S,k){const te=c[1];c[20]=r;const Le=ku(te,20,2,"#host",null),vt=Le.mergedAttrs=i.hostAttrs;null!==vt&&(qf(Le,vt,!0),null!==r&&(bl(S,r,vt),null!==Le.classes&&la(S,r,Le.classes),null!==Le.styles&&ps(S,r,Le.styles)));const Qt=v.createRenderer(r,i),Pn=Ku(c,kh(i),null,i.onPush?64:16,c[20],Le,v,Qt,k||null,null);return te.firstCreatePass&&(kn(Dt(Le,c),te,i.type),Al(te,Le),km(Le,c.length,1)),A_(c,Pn),c[20]=Pn}(Qt,this.componentDef,Ur,te,Le);if(Qt)if(v)bl(Le,Qt,["ng-version",dm.full]);else{const{attrs:Wi,classes:Fs}=function(r){const i=[],c=[];let v=1,S=2;for(;v<r.length;){let k=r[v];if("string"==typeof k)2===S?""!==k&&i.push(k,r[++v]):8===S&&c.push(k);else{if(!Lu(S))break;S=k}v++}return{attrs:i,classes:c}}(this.componentDef.selectors[0]);Wi&&bl(Le,Qt,Wi),Fs&&Fs.length>0&&la(Le,Qt,Fs.join(" "))}if(ri=ms(yr,20),void 0!==c){const Wi=ri.projection=[];for(let Fs=0;Fs<this.ngContentSelectors.length;Fs++){const ma=c[Fs];Wi.push(null!=ma?Array.from(ma):null)}}Si=function(r,i,c,v,S){const k=c[1],te=function(r,i,c){const v=Vo();r.firstCreatePass&&(c.providersResolver&&c.providersResolver(c),C_(r,v,i,Jd(r,i,1,null),c));const S=fo(i,r,v.directiveStart,v);ec(S,i);const k=Ni(v,i);return k&&ec(k,i),S}(k,c,i);if(v.components.push(te),r[8]=te,S&&S.forEach(Le=>Le(te,i)),i.contentQueries){const Le=Vo();i.contentQueries(1,te,Le.directiveStart)}const le=Vo();return!k.firstCreatePass||null===i.hostBindings&&null===i.hostAttrs||(lr(le.index),ed(c[1],le,0,le.directiveStart,le.directiveEnd,i),vc(i,te)),te}(So,this.componentDef,Ur,Wn,[s1]),Gf(yr,Ur,null)}finally{pi()}return new Wy(this.componentType,Si,e_(ri,Ur),Ur,ri)}}class Wy extends ly{constructor(i,c,v,S,k){super(),this.location=v,this._rootLView=S,this._tNode=k,this.instance=c,this.hostView=this.changeDetectorRef=new oT(S),this.componentType=i}get injector(){return new oo(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(i){this.hostView.onDestroy(i)}}const vh=new Map;class OM extends fh{constructor(i,c){super(),this._parent=c,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[],this.componentFactoryResolver=new nv(this);const v=_r(i),S=i[Qn]||null;S&&k1(S),this._bootstrapComponents=eu(v.bootstrap),this._r3Injector=pp(i,c,[{provide:fh,useValue:this},{provide:Kh,useValue:this.componentFactoryResolver}],_(i)),this._r3Injector._resolveInjectorDefTypes(),this.instance=this.get(i)}get(i,c=oc.THROW_IF_NOT_FOUND,v=Mn.Default){return i===oc||i===fh||i===sh?this:this._r3Injector.get(i,c,v)}destroy(){const i=this._r3Injector;!i.destroyed&&i.destroy(),this.destroyCbs.forEach(c=>c()),this.destroyCbs=null}onDestroy(i){this.destroyCbs.push(i)}}class PT extends Ey{constructor(i){super(),this.moduleType=i,null!==_r(i)&&function(r){const i=new Set;!function c(v){const S=_r(v,!0),k=S.id;null!==k&&(function(r,i,c){if(i&&i!==c)throw new Error(`Duplicate module registered for ${r} - ${_(i)} vs ${_(i.name)}`)}(k,vh.get(k),v),vh.set(k,v));const te=eu(S.imports);for(const le of te)i.has(le)||(i.add(le),c(le))}(r)}(i)}create(i){return new OM(this.moduleType,i)}}function GC(r,i,c){const v=Zr()+r,S=Di();return S[v]===ca?Qd(S,v,c?i.call(c):i()):uh(S,v)}function zC(r,i,c,v){return XC(Di(),Zr(),r,i,c,v)}function WC(r,i,c,v,S){return KC(Di(),Zr(),r,i,c,v,S)}function qC(r,i,c,v,S,k){return eS(Di(),Zr(),r,i,c,v,S,k)}function JC(r,i,c,v,S,k,te){return function(r,i,c,v,S,k,te,le,Le){const vt=i+c;return nd(r,vt,S,k,te,le)?Qd(r,vt+4,Le?v.call(Le,S,k,te,le):v(S,k,te,le)):ov(r,vt+4)}(Di(),Zr(),r,i,c,v,S,k,te)}function QC(r,i,c,v,S,k,te,le){const Le=Zr()+r,vt=Di(),Qt=nd(vt,Le,c,v,S,k);return nu(vt,Le+4,te)||Qt?Qd(vt,Le+5,le?i.call(le,c,v,S,k,te):i(c,v,S,k,te)):uh(vt,Le+5)}function ov(r,i){const c=r[i];return c===ca?void 0:c}function XC(r,i,c,v,S,k){const te=i+c;return nu(r,te,S)?Qd(r,te+1,k?v.call(k,S):v(S)):ov(r,te+1)}function KC(r,i,c,v,S,k,te){const le=i+c;return Ef(r,le,S,k)?Qd(r,le+2,te?v.call(te,S,k):v(S,k)):ov(r,le+2)}function eS(r,i,c,v,S,k,te,le){const Le=i+c;return Vh(r,Le,S,k,te)?Qd(r,Le+3,le?v.call(le,S,k,te):v(S,k,te)):ov(r,Le+3)}function rS(r,i){const c=vs();let v;const S=r+20;c.firstCreatePass?(v=function(r,i){if(i)for(let c=i.length-1;c>=0;c--){const v=i[c];if(r===v.name)return v}throw new H("302",`The pipe '${r}' could not be found!`)}(i,c.pipeRegistry),c.data[S]=v,v.onDestroy&&(c.destroyHooks||(c.destroyHooks=[])).push(S,v.onDestroy)):v=c.data[S];const k=v.factory||(v.factory=gi(v.type)),te=Yn(gp);try{const le=ke(!1),Le=k();return ke(le),function(r,i,c,v){c>=r.data.length&&(r.data[c]=null,r.blueprint[c]=null),i[c]=v}(c,Di(),S,Le),Le}finally{Yn(te)}}function iS(r,i,c){const v=r+20,S=Di(),k=ss(S,v);return av(S,sv(S,v)?XC(S,Zr(),i,k.transform,c,k):k.transform(c))}function oS(r,i,c,v){const S=r+20,k=Di(),te=ss(k,S);return av(k,sv(k,S)?KC(k,Zr(),i,te.transform,c,v,te):te.transform(c,v))}function sS(r,i,c,v,S){const k=r+20,te=Di(),le=ss(te,k);return av(te,sv(te,k)?eS(te,Zr(),i,le.transform,c,v,S,le):le.transform(c,v,S))}function sv(r,i){return r[1].data[i].pure}function av(r,i){return Nd.isWrapped(i)&&(i=Nd.unwrap(i),r[Pr()]=ca),i}function IT(r){return i=>{setTimeout(r,void 0,i)}}const jp=class extends t.xQ{constructor(i=!1){super(),this.__isAsync=i}emit(i){super.next(i)}subscribe(i,c,v){var S,k,te;let le=i,Le=c||(()=>null),vt=v;if(i&&"object"==typeof i){const Pn=i;le=null===(S=Pn.next)||void 0===S?void 0:S.bind(Pn),Le=null===(k=Pn.error)||void 0===k?void 0:k.bind(Pn),vt=null===(te=Pn.complete)||void 0===te?void 0:te.bind(Pn)}this.__isAsync&&(Le=IT(Le),le&&(le=IT(le)),vt&&(vt=IT(vt)));const Qt=super.subscribe({next:le,error:Le,complete:vt});return i instanceof e.w&&i.add(Qt),Qt}};function LM(){return this._results[Jf()]()}class Jy{constructor(i=!1){this._emitDistinctChangesOnly=i,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const c=Jf(),v=Jy.prototype;v[c]||(v[c]=LM)}get changes(){return this._changes||(this._changes=new jp)}get(i){return this._results[i]}map(i){return this._results.map(i)}filter(i){return this._results.filter(i)}find(i){return this._results.find(i)}reduce(i,c){return this._results.reduce(i,c)}forEach(i){this._results.forEach(i)}some(i){return this._results.some(i)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(i,c){const v=this;v.dirty=!1;const S=Va(i);(this._changesDetected=!function(r,i,c){if(r.length!==i.length)return!1;for(let v=0;v<r.length;v++){let S=r[v],k=i[v];if(c&&(S=c(S),k=c(k)),k!==S)return!1}return!0}(v._results,S,c))&&(v._results=S,v.length=S.length,v.last=S[this.length-1],v.first=S[0])}notifyOnChanges(){this._changes&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}Symbol;class LT{constructor(i){this.queryList=i,this.matches=null}clone(){return new LT(this.queryList)}setDirty(){this.queryList.setDirty()}}class FT{constructor(i=[]){this.queries=i}createEmbeddedView(i){const c=i.queries;if(null!==c){const v=null!==i.contentQueries?i.contentQueries[0]:c.length,S=[];for(let k=0;k<v;k++){const te=c.getByIndex(k);S.push(this.queries[te.indexInDeclarationView].clone())}return new FT(S)}return null}insertView(i){this.dirtyQueriesWithMatches(i)}detachView(i){this.dirtyQueriesWithMatches(i)}dirtyQueriesWithMatches(i){for(let c=0;c<this.queries.length;c++)null!==_S(i,c).matches&&this.queries[c].setDirty()}}class aS{constructor(i,c,v=null){this.predicate=i,this.flags=c,this.read=v}}class kT{constructor(i=[]){this.queries=i}elementStart(i,c){for(let v=0;v<this.queries.length;v++)this.queries[v].elementStart(i,c)}elementEnd(i){for(let c=0;c<this.queries.length;c++)this.queries[c].elementEnd(i)}embeddedTView(i){let c=null;for(let v=0;v<this.length;v++){const S=null!==c?c.length:0,k=this.getByIndex(v).embeddedTView(i,S);k&&(k.indexInDeclarationView=v,null!==c?c.push(k):c=[k])}return null!==c?new kT(c):null}template(i,c){for(let v=0;v<this.queries.length;v++)this.queries[v].template(i,c)}getByIndex(i){return this.queries[i]}get length(){return this.queries.length}track(i){this.queries.push(i)}}class $T{constructor(i,c=-1){this.metadata=i,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=c}elementStart(i,c){this.isApplyingToNode(c)&&this.matchTNode(i,c)}elementEnd(i){this._declarationNodeIndex===i.index&&(this._appliesToNextNode=!1)}template(i,c){this.elementStart(i,c)}embeddedTView(i,c){return this.isApplyingToNode(i)?(this.crossesNgTemplate=!0,this.addMatch(-i.index,c),new $T(this.metadata)):null}isApplyingToNode(i){if(this._appliesToNextNode&&1!=(1&this.metadata.flags)){const c=this._declarationNodeIndex;let v=i.parent;for(;null!==v&&8&v.type&&v.index!==c;)v=v.parent;return c===(null!==v?v.index:-1)}return this._appliesToNextNode}matchTNode(i,c){const v=this.metadata.predicate;if(Array.isArray(v))for(let S=0;S<v.length;S++){const k=v[S];this.matchTNodeWithReadOption(i,c,$M(c,k)),this.matchTNodeWithReadOption(i,c,Ai(c,i,k,!1,!1))}else v===rg?4&c.type&&this.matchTNodeWithReadOption(i,c,-1):this.matchTNodeWithReadOption(i,c,Ai(c,i,v,!1,!1))}matchTNodeWithReadOption(i,c,v){if(null!==v){const S=this.metadata.read;if(null!==S)if(S===tp||S===gm||S===rg&&4&c.type)this.addMatch(c.index,-2);else{const k=Ai(c,i,S,!1,!1);null!==k&&this.addMatch(c.index,k)}else this.addMatch(c.index,v)}}addMatch(i,c){null===this.matches?this.matches=[i,c]:this.matches.push(i,c)}}function $M(r,i){const c=r.localNames;if(null!==c)for(let v=0;v<c.length;v+=2)if(c[v]===i)return c[v+1];return null}function UM(r,i,c,v){return-1===c?function(r,i){return 11&r.type?e_(r,i):4&r.type?_m(r,i):null}(i,r):-2===c?function(r,i,c){return c===tp?e_(i,r):c===rg?_m(i,r):c===gm?ig(i,r):void 0}(r,i,v):fo(r,r[1],c,i)}function lS(r,i,c,v){const S=i[19].queries[v];if(null===S.matches){const k=r.data,te=c.matches,le=[];for(let Le=0;Le<te.length;Le+=2){const vt=te[Le];le.push(vt<0?null:UM(i,k[vt],te[Le+1],c.metadata.read))}S.matches=le}return S.matches}function HT(r,i,c,v){const S=r.queries.getByIndex(c),k=S.matches;if(null!==k){const te=lS(r,i,S,c);for(let le=0;le<k.length;le+=2){const Le=k[le];if(Le>0)v.push(te[le/2]);else{const vt=k[le+1],Qt=i[-Le];for(let Pn=10;Pn<Qt.length;Pn++){const Wn=Qt[Pn];Wn[17]===Wn[3]&&HT(Wn[1],Wn,vt,v)}if(null!==Qt[9]){const Pn=Qt[9];for(let Wn=0;Wn<Pn.length;Wn++){const yr=Pn[Wn];HT(yr[1],yr,vt,v)}}}}}return v}function cS(r){const i=Di(),c=vs(),v=Br();G(v+1);const S=_S(c,v);if(r.dirty&&Zo(i)===(2==(2&S.metadata.flags))){if(null===S.matches)r.reset([]);else{const k=S.crossesNgTemplate?HT(c,i,v,[]):lS(c,i,S,v);r.reset(k,fy),r.notifyOnChanges()}return!0}return!1}function uS(r,i,c){const v=vs();v.firstCreatePass&&(hS(v,new aS(r,i,c),-1),2==(2&i)&&(v.staticViewQueries=!0)),pS(v,Di(),i)}function dS(r,i,c,v){const S=vs();if(S.firstCreatePass){const k=Vo();hS(S,new aS(i,c,v),k.index),function(r,i){const c=r.contentQueries||(r.contentQueries=[]);i!==(c.length?c[c.length-1]:-1)&&c.push(r.queries.length-1,i)}(S,r),2==(2&c)&&(S.staticContentQueries=!0)}pS(S,Di(),c)}function fS(){return r=Di(),i=Br(),r[19].queries[i].queryList;var r,i}function pS(r,i,c){const v=new Jy(4==(4&c));Mt(r,i,v,v.destroy),null===i[19]&&(i[19]=new FT),i[19].queries.push(new LT(v))}function hS(r,i,c){null===r.queries&&(r.queries=new kT),r.queries.track(new $T(i,c))}function _S(r,i){return r.queries.getByIndex(i)}function gS(r,i){return _m(r,i)}const a2=Hs("Input",r=>({bindingPropertyName:r})),l2=Hs("Output",r=>({bindingPropertyName:r})),VT=new ns("Application Initializer");let Dm=(()=>{class r{constructor(c){this.appInits=c,this.resolve=cm,this.reject=cm,this.initialized=!1,this.done=!1,this.donePromise=new Promise((v,S)=>{this.resolve=v,this.reject=S})}runInitializers(){if(this.initialized)return;const c=[],v=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let S=0;S<this.appInits.length;S++){const k=this.appInits[S]();if(T1(k))c.push(k);else if(Qg(k)){const te=new Promise((le,Le)=>{k.subscribe({complete:le,error:Le})});c.push(te)}}Promise.all(c).then(()=>{v()}).catch(S=>{this.reject(S)}),0===c.length&&v(),this.initialized=!0}}return r.\u0275fac=function(c){return new(c||r)(sr(VT,8))},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();const IS=new ns("AppId"),v2={provide:IS,useFactory:function(){return`${GT()}${GT()}${GT()}`},deps:[]};function GT(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const LS=new ns("Platform Initializer"),FS=new ns("Platform ID"),kS=new ns("appBootstrapListener");let $S=(()=>{class r{log(c){console.log(c)}warn(c){console.warn(c)}}return r.\u0275fac=function(c){return new(c||r)},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();const Ky=new ns("LocaleId"),HS=new ns("DefaultCurrencyCode");class b2{constructor(i,c){this.ngModuleFactory=i,this.componentFactories=c}}const zT=function(r){return new PT(r)},E2=zT,T2=function(r){return Promise.resolve(zT(r))},US=function(r){const i=zT(r),v=eu(_r(r).declarations).reduce((S,k)=>{const te=Bn(k);return te&&S.push(new iv(te)),S},[]);return new b2(i,v)},C2=US,S2=function(r){return Promise.resolve(US(r))};let cv=(()=>{class r{constructor(){this.compileModuleSync=E2,this.compileModuleAsync=T2,this.compileModuleAndAllComponentsSync=C2,this.compileModuleAndAllComponentsAsync=S2}clearCache(){}clearCacheFor(c){}getModuleId(c){}}return r.\u0275fac=function(c){return new(c||r)},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();const A2=(()=>Promise.resolve(0))();function WT(r){"undefined"==typeof Zone?A2.then(()=>{r&&r.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",r)}class Rf{constructor({enableLongStackTrace:i=!1,shouldCoalesceEventChangeDetection:c=!1,shouldCoalesceRunChangeDetection:v=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new jp(!1),this.onMicrotaskEmpty=new jp(!1),this.onStable=new jp(!1),this.onError=new jp(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");Zone.assertZonePatched();const S=this;S._nesting=0,S._outer=S._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(S._inner=S._inner.fork(new Zone.TaskTrackingZoneSpec)),i&&Zone.longStackTraceZoneSpec&&(S._inner=S._inner.fork(Zone.longStackTraceZoneSpec)),S.shouldCoalesceEventChangeDetection=!v&&c,S.shouldCoalesceRunChangeDetection=v,S.lastRequestAnimationFrameId=-1,S.nativeRequestAnimationFrame=function(){let r=jn.requestAnimationFrame,i=jn.cancelAnimationFrame;if("undefined"!=typeof Zone&&r&&i){const c=r[Zone.__symbol__("OriginalDelegate")];c&&(r=c);const v=i[Zone.__symbol__("OriginalDelegate")];v&&(i=v)}return{nativeRequestAnimationFrame:r,nativeCancelAnimationFrame:i}}().nativeRequestAnimationFrame,function(r){const i=()=>{!function(r){r.isCheckStableRunning||-1!==r.lastRequestAnimationFrameId||(r.lastRequestAnimationFrameId=r.nativeRequestAnimationFrame.call(jn,()=>{r.fakeTopEventTask||(r.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{r.lastRequestAnimationFrameId=-1,JT(r),r.isCheckStableRunning=!0,qT(r),r.isCheckStableRunning=!1},void 0,()=>{},()=>{})),r.fakeTopEventTask.invoke()}),JT(r))}(r)};r._inner=r._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(c,v,S,k,te,le)=>{try{return jS(r),c.invokeTask(S,k,te,le)}finally{(r.shouldCoalesceEventChangeDetection&&"eventTask"===k.type||r.shouldCoalesceRunChangeDetection)&&i(),BS(r)}},onInvoke:(c,v,S,k,te,le,Le)=>{try{return jS(r),c.invoke(S,k,te,le,Le)}finally{r.shouldCoalesceRunChangeDetection&&i(),BS(r)}},onHasTask:(c,v,S,k)=>{c.hasTask(S,k),v===S&&("microTask"==k.change?(r._hasPendingMicrotasks=k.microTask,JT(r),qT(r)):"macroTask"==k.change&&(r.hasPendingMacrotasks=k.macroTask))},onHandleError:(c,v,S,k)=>(c.handleError(S,k),r.runOutsideAngular(()=>r.onError.emit(k)),!1)})}(S)}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Rf.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(Rf.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(i,c,v){return this._inner.run(i,c,v)}runTask(i,c,v,S){const k=this._inner,te=k.scheduleEventTask("NgZoneEvent: "+S,i,D2,cm,cm);try{return k.runTask(te,c,v)}finally{k.cancelTask(te)}}runGuarded(i,c,v){return this._inner.runGuarded(i,c,v)}runOutsideAngular(i){return this._outer.run(i)}}const D2={};function qT(r){if(0==r._nesting&&!r.hasPendingMicrotasks&&!r.isStable)try{r._nesting++,r.onMicrotaskEmpty.emit(null)}finally{if(r._nesting--,!r.hasPendingMicrotasks)try{r.runOutsideAngular(()=>r.onStable.emit(null))}finally{r.isStable=!0}}}function JT(r){r.hasPendingMicrotasks=!!(r._hasPendingMicrotasks||(r.shouldCoalesceEventChangeDetection||r.shouldCoalesceRunChangeDetection)&&-1!==r.lastRequestAnimationFrameId)}function jS(r){r._nesting++,r.isStable&&(r.isStable=!1,r.onUnstable.emit(null))}function BS(r){r._nesting--,qT(r)}class N2{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new jp,this.onMicrotaskEmpty=new jp,this.onStable=new jp,this.onError=new jp}run(i,c,v){return i.apply(c,v)}runGuarded(i,c,v){return i.apply(c,v)}runOutsideAngular(i){return i()}runTask(i,c,v,S){return i.apply(c,v)}}let YS=(()=>{class r{constructor(c){this._ngZone=c,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),c.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Rf.assertNotInAngularZone(),WT(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())WT(()=>{for(;0!==this._callbacks.length;){let c=this._callbacks.pop();clearTimeout(c.timeoutId),c.doneCb(this._didWork)}this._didWork=!1});else{let c=this.getPendingTasks();this._callbacks=this._callbacks.filter(v=>!v.updateCb||!v.updateCb(c)||(clearTimeout(v.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(c=>({source:c.source,creationLocation:c.creationLocation,data:c.data})):[]}addCallback(c,v,S){let k=-1;v&&v>0&&(k=setTimeout(()=>{this._callbacks=this._callbacks.filter(te=>te.timeoutId!==k),c(this._didWork,this.getPendingTasks())},v)),this._callbacks.push({doneCb:c,timeoutId:k,updateCb:S})}whenStable(c,v,S){if(S&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(c,v,S),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(c,v,S){return[]}}return r.\u0275fac=function(c){return new(c||r)(sr(Rf))},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})(),ZS=(()=>{class r{constructor(){this._applications=new Map,QT.addToWindow(this)}registerApplication(c,v){this._applications.set(c,v)}unregisterApplication(c){this._applications.delete(c)}unregisterAllApplications(){this._applications.clear()}getTestability(c){return this._applications.get(c)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(c,v=!0){return QT.findTestabilityInTree(this,c,v)}}return r.\u0275fac=function(c){return new(c||r)},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();class P2{addToWindow(i){}findTestabilityInTree(i,c,v){return null}}function I2(r){QT=r}let QT=new P2,VS=!0,GS=!1;function XT(){return GS=!0,VS}function L2(){if(GS)throw new Error("Cannot enable prod mode after platform setup.");VS=!1}let Ep;const zS=new ns("AllowMultipleToken");class B2{constructor(i,c){this.name=i,this.token=c}}function WS(r,i,c=[]){const v=`Platform: ${i}`,S=new ns(v);return(k=[])=>{let te=qS();if(!te||te.injector.get(zS,!1))if(r)r(c.concat(k).concat({provide:S,useValue:!0}));else{const le=c.concat(k).concat({provide:S,useValue:!0},{provide:Ip,useValue:"platform"});!function(r){if(Ep&&!Ep.destroyed&&!Ep.injector.get(zS,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");Ep=r.get(JS);const i=r.get(LS,null);i&&i.forEach(c=>c())}(oc.create({providers:le,name:v}))}return function(r){const i=qS();if(!i)throw new Error("No platform exists!");if(!i.injector.get(r,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return i}(S)}}function qS(){return Ep&&!Ep.destroyed?Ep:null}let JS=(()=>{class r{constructor(c){this._injector=c,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(c,v){const le=function(r,i){let c;return c="noop"===r?new N2:("zone.js"===r?void 0:r)||new Rf({enableLongStackTrace:XT(),shouldCoalesceEventChangeDetection:!!(null==i?void 0:i.ngZoneEventCoalescing),shouldCoalesceRunChangeDetection:!!(null==i?void 0:i.ngZoneRunCoalescing)}),c}(v?v.ngZone:void 0,{ngZoneEventCoalescing:v&&v.ngZoneEventCoalescing||!1,ngZoneRunCoalescing:v&&v.ngZoneRunCoalescing||!1}),Le=[{provide:Rf,useValue:le}];return le.run(()=>{const vt=oc.create({providers:Le,parent:this.injector,name:c.moduleType.name}),Qt=c.create(vt),Pn=Qt.injector.get(mc,null);if(!Pn)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return le.runOutsideAngular(()=>{const Wn=le.onError.subscribe({next:yr=>{Pn.handleError(yr)}});Qt.onDestroy(()=>{KT(this._modules,Qt),Wn.unsubscribe()})}),function(r,i,c){try{const v=c();return T1(v)?v.catch(S=>{throw i.runOutsideAngular(()=>r.handleError(S)),S}):v}catch(v){throw i.runOutsideAngular(()=>r.handleError(v)),v}}(Pn,le,()=>{const Wn=Qt.injector.get(Dm);return Wn.runInitializers(),Wn.donePromise.then(()=>(k1(Qt.injector.get(Ky,nm)||nm),this._moduleDoBootstrap(Qt),Qt))})})}bootstrapModule(c,v=[]){const S=QS({},v);return function(r,i,c){const v=new PT(c);return Promise.resolve(v)}(0,0,c).then(k=>this.bootstrapModuleFactory(k,S))}_moduleDoBootstrap(c){const v=c.injector.get(uv);if(c._bootstrapComponents.length>0)c._bootstrapComponents.forEach(S=>v.bootstrap(S));else{if(!c.instance.ngDoBootstrap)throw new Error(`The module ${_(c.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);c.instance.ngDoBootstrap(v)}this._modules.push(c)}onDestroy(c){this._destroyListeners.push(c)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(c=>c.destroy()),this._destroyListeners.forEach(c=>c()),this._destroyed=!0}get destroyed(){return this._destroyed}}return r.\u0275fac=function(c){return new(c||r)(sr(oc))},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();function QS(r,i){return Array.isArray(i)?i.reduce(QS,r):Object.assign(Object.assign({},r),i)}let uv=(()=>{class r{constructor(c,v,S,k,te){this._zone=c,this._injector=v,this._exceptionHandler=S,this._componentFactoryResolver=k,this._initStatus=te,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const le=new s.y(vt=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{vt.next(this._stable),vt.complete()})}),Le=new s.y(vt=>{let Qt;this._zone.runOutsideAngular(()=>{Qt=this._zone.onStable.subscribe(()=>{Rf.assertNotInAngularZone(),WT(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,vt.next(!0))})})});const Pn=this._zone.onUnstable.subscribe(()=>{Rf.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{vt.next(!1)}))});return()=>{Qt.unsubscribe(),Pn.unsubscribe()}});this.isStable=(0,a.T)(le,Le.pipe((0,l.B)()))}bootstrap(c,v){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let S;S=c instanceof cy?c:this._componentFactoryResolver.resolveComponentFactory(c),this.componentTypes.push(S.componentType);const k=function(r){return r.isBoundToModule}(S)?void 0:this._injector.get(fh),le=S.create(oc.NULL,[],v||S.selector,k),Le=le.location.nativeElement,vt=le.injector.get(YS,null),Qt=vt&&le.injector.get(ZS);return vt&&Qt&&Qt.registerApplication(Le,vt),le.onDestroy(()=>{this.detachView(le.hostView),KT(this.components,le),Qt&&Qt.unregisterApplication(Le)}),this._loadComponent(le),le}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;for(let c of this._views)c.detectChanges()}catch(c){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(c))}finally{this._runningTick=!1}}attachView(c){const v=c;this._views.push(v),v.attachToAppRef(this)}detachView(c){const v=c;KT(this._views,v),v.detachFromAppRef()}_loadComponent(c){this.attachView(c.hostView),this.tick(),this.components.push(c),this._injector.get(kS,[]).concat(this._bootstrapListeners).forEach(S=>S(c))}ngOnDestroy(){this._views.slice().forEach(c=>c.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}get viewCount(){return this._views.length}}return r.\u0275fac=function(c){return new(c||r)(sr(Rf),sr(oc),sr(mc),sr(Kh),sr(Dm))},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();function KT(r,i){const c=r.indexOf(i);c>-1&&r.splice(c,1)}class W2{}class J2{}const Q2={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};let X2=(()=>{class r{constructor(c,v){this._compiler=c,this._config=v||Q2}load(c){return this.loadAndCompile(c)}loadAndCompile(c){let[v,S]=c.split("#");return void 0===S&&(S="default"),o(98255)(v).then(k=>k[S]).then(k=>tM(k,v,S)).then(k=>this._compiler.compileModuleAsync(k))}loadFactory(c){let[v,S]=c.split("#"),k="NgFactory";return void 0===S&&(S="default",k=""),o(98255)(this._config.factoryPathPrefix+v+this._config.factoryPathSuffix).then(te=>te[S+k]).then(te=>tM(te,v,S))}}return r.\u0275fac=function(c){return new(c||r)(sr(cv),sr(J2,8))},r.\u0275prov=Qe({token:r,factory:r.\u0275fac}),r})();function tM(r,i,c){if(!r)throw new Error(`Cannot find '${c}' in '${i}'`);return r}const sO=function(r){return null},lO=WS(null,"core",[{provide:FS,useValue:"unknown"},{provide:JS,deps:[oc]},{provide:ZS,deps:[]},{provide:$S,deps:[]}]),pO=[{provide:uv,useClass:uv,deps:[Rf,oc,mc,Kh,Dm]},{provide:Vy,deps:[Rf],useFactory:function(r){let i=[];return r.onStable.subscribe(()=>{for(;i.length;)i.pop()()}),function(c){i.push(c)}}},{provide:Dm,useClass:Dm,deps:[[new Ms,VT]]},{provide:cv,useClass:cv,deps:[]},v2,{provide:fm,useFactory:function(){return pT},deps:[]},{provide:pm,useFactory:function(){return hT},deps:[]},{provide:Ky,useFactory:function(r){return k1(r=r||"undefined"!=typeof $localize&&$localize.locale||nm),r},deps:[[new Ts(Ky),new Ms,new ya]]},{provide:HS,useValue:"USD"}];let _O=(()=>{class r{constructor(c){}}return r.\u0275fac=function(c){return new(c||r)(sr(uv))},r.\u0275mod=Ut({type:r}),r.\u0275inj=ae({providers:pO}),r})()},24751:(Ge,g,o)=>{"use strict";o.d(g,{TO:()=>Jn,Wl:()=>b,gN:()=>zt,Fj:()=>j,Oe:()=>yi,CE:()=>zi,qu:()=>an,NI:()=>nr,u:()=>Bo,cw:()=>Mr,sg:()=>no,x0:()=>qi,u5:()=>ks,Fd:()=>ni,qQ:()=>Do,Cf:()=>U,JU:()=>_,a5:()=>ln,JJ:()=>er,JL:()=>Mn,F:()=>Kr,On:()=>We,YN:()=>zo,wV:()=>Zn,_:()=>Qr,UX:()=>Ua,Q7:()=>Li,EJ:()=>ds,kI:()=>J,_Y:()=>$t,Kr:()=>Ve});var t=o(74788),e=o(12057),s=o(94402),a=o(35758),l=o(88002);let u=(()=>{class Ce{constructor(Ne,Wt){this._renderer=Ne,this._elementRef=Wt,this.onChange=Or=>{},this.onTouched=()=>{}}setProperty(Ne,Wt){this._renderer.setProperty(this._elementRef.nativeElement,Ne,Wt)}registerOnTouched(Ne){this.onTouched=Ne}registerOnChange(Ne){this.onChange=Ne}setDisabledState(Ne){this.setProperty("disabled",Ne)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(t.Qsj),t.Y36(t.SBq))},Ce.\u0275dir=t.lG2({type:Ce}),Ce})(),h=(()=>{class Ce extends u{}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,features:[t.qOj]}),Ce})();const _=new t.OlP("NgValueAccessor"),m={provide:_,useExisting:(0,t.Gpc)(()=>b),multi:!0};let b=(()=>{class Ce extends h{writeValue(Ne){this.setProperty("checked",Ne)}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("change",function(Ni){return Wt.onChange(Ni.target.checked)})("blur",function(){return Wt.onTouched()})},features:[t._Bn([m]),t.qOj]}),Ce})();const C={provide:_,useExisting:(0,t.Gpc)(()=>j),multi:!0},x=new t.OlP("CompositionEventMode");let j=(()=>{class Ce extends u{constructor(Ne,Wt,Or){super(Ne,Wt),this._compositionMode=Or,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const Ce=(0,e.q)()?(0,e.q)().getUserAgent():"";return/android (\d+)/.test(Ce.toLowerCase())}())}writeValue(Ne){this.setProperty("value",null==Ne?"":Ne)}_handleInput(Ne){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(Ne)}_compositionStart(){this._composing=!0}_compositionEnd(Ne){this._composing=!1,this._compositionMode&&this.onChange(Ne)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(t.Qsj),t.Y36(t.SBq),t.Y36(x,8))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("input",function(Ni){return Wt._handleInput(Ni.target.value)})("blur",function(){return Wt.onTouched()})("compositionstart",function(){return Wt._compositionStart()})("compositionend",function(Ni){return Wt._compositionEnd(Ni.target.value)})},features:[t._Bn([C]),t.qOj]}),Ce})();function H(Ce){return null==Ce||0===Ce.length}function z(Ce){return null!=Ce&&"number"==typeof Ce.length}const U=new t.OlP("NgValidators"),M=new t.OlP("NgAsyncValidators"),I=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[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])?)*$/;class J{static min(ye){return Y(ye)}static max(ye){return ie(ye)}static required(ye){return oe(ye)}static requiredTrue(ye){return!0===ye.value?null:{required:!0}}static email(ye){return H((Ce=ye).value)||I.test(Ce.value)?null:{email:!0};var Ce}static minLength(ye){return Ce=ye,ye=>H(ye.value)||!z(ye.value)?null:ye.value.length<Ce?{minlength:{requiredLength:Ce,actualLength:ye.value.length}}:null;var Ce}static maxLength(ye){return Ce=ye,ye=>z(ye.value)&&ye.value.length>Ce?{maxlength:{requiredLength:Ce,actualLength:ye.value.length}}:null;var Ce}static pattern(ye){return function(Ce){if(!Ce)return Me;let ye,Ne;return"string"==typeof Ce?(Ne="","^"!==Ce.charAt(0)&&(Ne+="^"),Ne+=Ce,"$"!==Ce.charAt(Ce.length-1)&&(Ne+="$"),ye=new RegExp(Ne)):(Ne=Ce.toString(),ye=Ce),Wt=>{if(H(Wt.value))return null;const Or=Wt.value;return ye.test(Or)?null:{pattern:{requiredPattern:Ne,actualValue:Or}}}}(ye)}static nullValidator(ye){return null}static compose(ye){return je(ye)}static composeAsync(ye){return lt(ye)}}function Y(Ce){return ye=>{if(H(ye.value)||H(Ce))return null;const Ne=parseFloat(ye.value);return!isNaN(Ne)&&Ne<Ce?{min:{min:Ce,actual:ye.value}}:null}}function ie(Ce){return ye=>{if(H(ye.value)||H(Ce))return null;const Ne=parseFloat(ye.value);return!isNaN(Ne)&&Ne>Ce?{max:{max:Ce,actual:ye.value}}:null}}function oe(Ce){return H(Ce.value)?{required:!0}:null}function Me(Ce){return null}function Oe(Ce){return null!=Ce}function be(Ce){const ye=(0,t.QGY)(Ce)?(0,s.D)(Ce):Ce;return(0,t.CqO)(ye),ye}function ue(Ce){let ye={};return Ce.forEach(Ne=>{ye=null!=Ne?Object.assign(Object.assign({},ye),Ne):ye}),0===Object.keys(ye).length?null:ye}function He(Ce,ye){return ye.map(Ne=>Ne(Ce))}function F(Ce){return Ce.map(ye=>function(Ce){return!Ce.validate}(ye)?ye:Ne=>ye.validate(Ne))}function je(Ce){if(!Ce)return null;const ye=Ce.filter(Oe);return 0==ye.length?null:function(Ne){return ue(He(Ne,ye))}}function Et(Ce){return null!=Ce?je(F(Ce)):null}function lt(Ce){if(!Ce)return null;const ye=Ce.filter(Oe);return 0==ye.length?null:function(Ne){const Wt=He(Ne,ye).map(be);return(0,a.D)(Wt).pipe((0,l.U)(ue))}}function nn(Ce){return null!=Ce?lt(F(Ce)):null}function St(Ce,ye){return null===Ce?[ye]:Array.isArray(Ce)?[...Ce,ye]:[Ce,ye]}function At(Ce){return Ce._rawValidators}function Qe(Ce){return Ce._rawAsyncValidators}function It(Ce){return Ce?Array.isArray(Ce)?Ce:[Ce]:[]}function ae(Ce,ye){return Array.isArray(Ce)?Ce.includes(ye):Ce===ye}function Ie(Ce,ye){const Ne=It(ye);return It(Ce).forEach(Or=>{ae(Ne,Or)||Ne.push(Or)}),Ne}function dt(Ce,ye){return It(ye).filter(Ne=>!ae(Ce,Ne))}let Jt=(()=>{class Ce{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(Ne){this._rawValidators=Ne||[],this._composedValidatorFn=Et(this._rawValidators)}_setAsyncValidators(Ne){this._rawAsyncValidators=Ne||[],this._composedAsyncValidatorFn=nn(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(Ne){this._onDestroyCallbacks.push(Ne)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(Ne=>Ne()),this._onDestroyCallbacks=[]}reset(Ne){this.control&&this.control.reset(Ne)}hasError(Ne,Wt){return!!this.control&&this.control.hasError(Ne,Wt)}getError(Ne,Wt){return this.control?this.control.getError(Ne,Wt):null}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275dir=t.lG2({type:Ce}),Ce})(),zt=(()=>{class Ce extends Jt{get formDirective(){return null}get path(){return null}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,features:[t.qOj]}),Ce})();class ln extends Jt{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class ar{constructor(ye){this._cd=ye}is(ye){var Ne,Wt,Or;return"submitted"===ye?!!(null===(Ne=this._cd)||void 0===Ne?void 0:Ne.submitted):!!(null===(Or=null===(Wt=this._cd)||void 0===Wt?void 0:Wt.control)||void 0===Or?void 0:Or[ye])}}let er=(()=>{class Ce extends ar{constructor(Ne){super(Ne)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(ln,2))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(Ne,Wt){2&Ne&&t.ekj("ng-untouched",Wt.is("untouched"))("ng-touched",Wt.is("touched"))("ng-pristine",Wt.is("pristine"))("ng-dirty",Wt.is("dirty"))("ng-valid",Wt.is("valid"))("ng-invalid",Wt.is("invalid"))("ng-pending",Wt.is("pending"))},features:[t.qOj]}),Ce})(),Mn=(()=>{class Ce extends ar{constructor(Ne){super(Ne)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(zt,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(Ne,Wt){2&Ne&&t.ekj("ng-untouched",Wt.is("untouched"))("ng-touched",Wt.is("touched"))("ng-pristine",Wt.is("pristine"))("ng-dirty",Wt.is("dirty"))("ng-valid",Wt.is("valid"))("ng-invalid",Wt.is("invalid"))("ng-pending",Wt.is("pending"))("ng-submitted",Wt.is("submitted"))},features:[t.qOj]}),Ce})();function Dn(Ce,ye){return[...ye.path,Ce]}function mn(Ce,ye){mt(Ce,ye),ye.valueAccessor.writeValue(Ce.value),function(Ce,ye){ye.valueAccessor.registerOnChange(Ne=>{Ce._pendingValue=Ne,Ce._pendingChange=!0,Ce._pendingDirty=!0,"change"===Ce.updateOn&&jt(Ce,ye)})}(Ce,ye),function(Ce,ye){const Ne=(Wt,Or)=>{ye.valueAccessor.writeValue(Wt),Or&&ye.viewToModelUpdate(Wt)};Ce.registerOnChange(Ne),ye._registerOnDestroy(()=>{Ce._unregisterOnChange(Ne)})}(Ce,ye),function(Ce,ye){ye.valueAccessor.registerOnTouched(()=>{Ce._pendingTouched=!0,"blur"===Ce.updateOn&&Ce._pendingChange&&jt(Ce,ye),"submit"!==Ce.updateOn&&Ce.markAsTouched()})}(Ce,ye),function(Ce,ye){if(ye.valueAccessor.setDisabledState){const Ne=Wt=>{ye.valueAccessor.setDisabledState(Wt)};Ce.registerOnDisabledChange(Ne),ye._registerOnDestroy(()=>{Ce._unregisterOnDisabledChange(Ne)})}}(Ce,ye)}function jn(Ce,ye,Ne=!0){const Wt=()=>{};ye.valueAccessor&&(ye.valueAccessor.registerOnChange(Wt),ye.valueAccessor.registerOnTouched(Wt)),Tt(Ce,ye),Ce&&(ye._invokeOnDestroyCallbacks(),Ce._registerOnCollectionChange(()=>{}))}function Xt(Ce,ye){Ce.forEach(Ne=>{Ne.registerOnValidatorChange&&Ne.registerOnValidatorChange(ye)})}function mt(Ce,ye){const Ne=At(Ce);null!==ye.validator?Ce.setValidators(St(Ne,ye.validator)):"function"==typeof Ne&&Ce.setValidators([Ne]);const Wt=Qe(Ce);null!==ye.asyncValidator?Ce.setAsyncValidators(St(Wt,ye.asyncValidator)):"function"==typeof Wt&&Ce.setAsyncValidators([Wt]);const Or=()=>Ce.updateValueAndValidity();Xt(ye._rawValidators,Or),Xt(ye._rawAsyncValidators,Or)}function Tt(Ce,ye){let Ne=!1;if(null!==Ce){if(null!==ye.validator){const Or=At(Ce);if(Array.isArray(Or)&&Or.length>0){const Ni=Or.filter(Yo=>Yo!==ye.validator);Ni.length!==Or.length&&(Ne=!0,Ce.setValidators(Ni))}}if(null!==ye.asyncValidator){const Or=Qe(Ce);if(Array.isArray(Or)&&Or.length>0){const Ni=Or.filter(Yo=>Yo!==ye.asyncValidator);Ni.length!==Or.length&&(Ne=!0,Ce.setAsyncValidators(Ni))}}}const Wt=()=>{};return Xt(ye._rawValidators,Wt),Xt(ye._rawAsyncValidators,Wt),Ne}function jt(Ce,ye){Ce._pendingDirty&&Ce.markAsDirty(),Ce.setValue(Ce._pendingValue,{emitModelToViewChange:!1}),ye.viewToModelUpdate(Ce._pendingValue),Ce._pendingChange=!1}function Qn(Ce,ye){mt(Ce,ye)}function Ue(Ce,ye){if(!Ce.hasOwnProperty("model"))return!1;const Ne=Ce.model;return!!Ne.isFirstChange()||!Object.is(ye,Ne.currentValue)}function at(Ce,ye){Ce._syncPendingControls(),ye.forEach(Ne=>{const Wt=Ne.control;"submit"===Wt.updateOn&&Wt._pendingChange&&(Ne.viewToModelUpdate(Wt._pendingValue),Wt._pendingChange=!1)})}function it(Ce,ye){if(!ye)return null;let Ne,Wt,Or;return Array.isArray(ye),ye.forEach(Ni=>{Ni.constructor===j?Ne=Ni:function(Ce){return Object.getPrototypeOf(Ce.constructor)===h}(Ni)?Wt=Ni:Or=Ni}),Or||Wt||Ne||null}function Pt(Ce,ye){const Ne=Ce.indexOf(ye);Ne>-1&&Ce.splice(Ne,1)}const ot="VALID",Nn="INVALID",sn="PENDING",An="DISABLED";function ir(Ce){return(br(Ce)?Ce.validators:Ce)||null}function mr(Ce){return Array.isArray(Ce)?Et(Ce):Ce||null}function _r(Ce,ye){return(br(ye)?ye.asyncValidators:Ce)||null}function Nr(Ce){return Array.isArray(Ce)?nn(Ce):Ce||null}function br(Ce){return null!=Ce&&!Array.isArray(Ce)&&"object"==typeof Ce}class Jn{constructor(ye,Ne){this._hasOwnPendingAsyncValidator=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=ye,this._rawAsyncValidators=Ne,this._composedValidatorFn=mr(this._rawValidators),this._composedAsyncValidatorFn=Nr(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(ye){this._rawValidators=this._composedValidatorFn=ye}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(ye){this._rawAsyncValidators=this._composedAsyncValidatorFn=ye}get parent(){return this._parent}get valid(){return this.status===ot}get invalid(){return this.status===Nn}get pending(){return this.status==sn}get disabled(){return this.status===An}get enabled(){return this.status!==An}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(ye){this._rawValidators=ye,this._composedValidatorFn=mr(ye)}setAsyncValidators(ye){this._rawAsyncValidators=ye,this._composedAsyncValidatorFn=Nr(ye)}addValidators(ye){this.setValidators(Ie(ye,this._rawValidators))}addAsyncValidators(ye){this.setAsyncValidators(Ie(ye,this._rawAsyncValidators))}removeValidators(ye){this.setValidators(dt(ye,this._rawValidators))}removeAsyncValidators(ye){this.setAsyncValidators(dt(ye,this._rawAsyncValidators))}hasValidator(ye){return ae(this._rawValidators,ye)}hasAsyncValidator(ye){return ae(this._rawAsyncValidators,ye)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(ye={}){this.touched=!0,this._parent&&!ye.onlySelf&&this._parent.markAsTouched(ye)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(ye=>ye.markAllAsTouched())}markAsUntouched(ye={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(Ne=>{Ne.markAsUntouched({onlySelf:!0})}),this._parent&&!ye.onlySelf&&this._parent._updateTouched(ye)}markAsDirty(ye={}){this.pristine=!1,this._parent&&!ye.onlySelf&&this._parent.markAsDirty(ye)}markAsPristine(ye={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(Ne=>{Ne.markAsPristine({onlySelf:!0})}),this._parent&&!ye.onlySelf&&this._parent._updatePristine(ye)}markAsPending(ye={}){this.status=sn,!1!==ye.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!ye.onlySelf&&this._parent.markAsPending(ye)}disable(ye={}){const Ne=this._parentMarkedDirty(ye.onlySelf);this.status=An,this.errors=null,this._forEachChild(Wt=>{Wt.disable(Object.assign(Object.assign({},ye),{onlySelf:!0}))}),this._updateValue(),!1!==ye.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},ye),{skipPristineCheck:Ne})),this._onDisabledChange.forEach(Wt=>Wt(!0))}enable(ye={}){const Ne=this._parentMarkedDirty(ye.onlySelf);this.status=ot,this._forEachChild(Wt=>{Wt.enable(Object.assign(Object.assign({},ye),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:ye.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},ye),{skipPristineCheck:Ne})),this._onDisabledChange.forEach(Wt=>Wt(!1))}_updateAncestors(ye){this._parent&&!ye.onlySelf&&(this._parent.updateValueAndValidity(ye),ye.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(ye){this._parent=ye}updateValueAndValidity(ye={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ot||this.status===sn)&&this._runAsyncValidator(ye.emitEvent)),!1!==ye.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!ye.onlySelf&&this._parent.updateValueAndValidity(ye)}_updateTreeValidity(ye={emitEvent:!0}){this._forEachChild(Ne=>Ne._updateTreeValidity(ye)),this.updateValueAndValidity({onlySelf:!0,emitEvent:ye.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?An:ot}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(ye){if(this.asyncValidator){this.status=sn,this._hasOwnPendingAsyncValidator=!0;const Ne=be(this.asyncValidator(this));this._asyncValidationSubscription=Ne.subscribe(Wt=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(Wt,{emitEvent:ye})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(ye,Ne={}){this.errors=ye,this._updateControlsErrors(!1!==Ne.emitEvent)}get(ye){return function(Ce,ye,Ne){if(null==ye||(Array.isArray(ye)||(ye=ye.split(".")),Array.isArray(ye)&&0===ye.length))return null;let Wt=Ce;return ye.forEach(Or=>{Wt=Wt instanceof Mr?Wt.controls.hasOwnProperty(Or)?Wt.controls[Or]:null:Wt instanceof yi&&Wt.at(Or)||null}),Wt}(this,ye)}getError(ye,Ne){const Wt=Ne?this.get(Ne):this;return Wt&&Wt.errors?Wt.errors[ye]:null}hasError(ye,Ne){return!!this.getError(ye,Ne)}get root(){let ye=this;for(;ye._parent;)ye=ye._parent;return ye}_updateControlsErrors(ye){this.status=this._calculateStatus(),ye&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(ye)}_initObservables(){this.valueChanges=new t.vpe,this.statusChanges=new t.vpe}_calculateStatus(){return this._allControlsDisabled()?An:this.errors?Nn:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(sn)?sn:this._anyControlsHaveStatus(Nn)?Nn:ot}_anyControlsHaveStatus(ye){return this._anyControls(Ne=>Ne.status===ye)}_anyControlsDirty(){return this._anyControls(ye=>ye.dirty)}_anyControlsTouched(){return this._anyControls(ye=>ye.touched)}_updatePristine(ye={}){this.pristine=!this._anyControlsDirty(),this._parent&&!ye.onlySelf&&this._parent._updatePristine(ye)}_updateTouched(ye={}){this.touched=this._anyControlsTouched(),this._parent&&!ye.onlySelf&&this._parent._updateTouched(ye)}_isBoxedValue(ye){return"object"==typeof ye&&null!==ye&&2===Object.keys(ye).length&&"value"in ye&&"disabled"in ye}_registerOnCollectionChange(ye){this._onCollectionChange=ye}_setUpdateStrategy(ye){br(ye)&&null!=ye.updateOn&&(this._updateOn=ye.updateOn)}_parentMarkedDirty(ye){return!ye&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}}class nr extends Jn{constructor(ye=null,Ne,Wt){super(ir(Ne),_r(Wt,Ne)),this._onChange=[],this._applyFormState(ye),this._setUpdateStrategy(Ne),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}setValue(ye,Ne={}){this.value=this._pendingValue=ye,this._onChange.length&&!1!==Ne.emitModelToViewChange&&this._onChange.forEach(Wt=>Wt(this.value,!1!==Ne.emitViewToModelChange)),this.updateValueAndValidity(Ne)}patchValue(ye,Ne={}){this.setValue(ye,Ne)}reset(ye=null,Ne={}){this._applyFormState(ye),this.markAsPristine(Ne),this.markAsUntouched(Ne),this.setValue(this.value,Ne),this._pendingChange=!1}_updateValue(){}_anyControls(ye){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(ye){this._onChange.push(ye)}_unregisterOnChange(ye){Pt(this._onChange,ye)}registerOnDisabledChange(ye){this._onDisabledChange.push(ye)}_unregisterOnDisabledChange(ye){Pt(this._onDisabledChange,ye)}_forEachChild(ye){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(ye){this._isBoxedValue(ye)?(this.value=this._pendingValue=ye.value,ye.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=ye}}class Mr extends Jn{constructor(ye,Ne,Wt){super(ir(Ne),_r(Wt,Ne)),this.controls=ye,this._initObservables(),this._setUpdateStrategy(Ne),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(ye,Ne){return this.controls[ye]?this.controls[ye]:(this.controls[ye]=Ne,Ne.setParent(this),Ne._registerOnCollectionChange(this._onCollectionChange),Ne)}addControl(ye,Ne,Wt={}){this.registerControl(ye,Ne),this.updateValueAndValidity({emitEvent:Wt.emitEvent}),this._onCollectionChange()}removeControl(ye,Ne={}){this.controls[ye]&&this.controls[ye]._registerOnCollectionChange(()=>{}),delete this.controls[ye],this.updateValueAndValidity({emitEvent:Ne.emitEvent}),this._onCollectionChange()}setControl(ye,Ne,Wt={}){this.controls[ye]&&this.controls[ye]._registerOnCollectionChange(()=>{}),delete this.controls[ye],Ne&&this.registerControl(ye,Ne),this.updateValueAndValidity({emitEvent:Wt.emitEvent}),this._onCollectionChange()}contains(ye){return this.controls.hasOwnProperty(ye)&&this.controls[ye].enabled}setValue(ye,Ne={}){this._checkAllValuesPresent(ye),Object.keys(ye).forEach(Wt=>{this._throwIfControlMissing(Wt),this.controls[Wt].setValue(ye[Wt],{onlySelf:!0,emitEvent:Ne.emitEvent})}),this.updateValueAndValidity(Ne)}patchValue(ye,Ne={}){null!=ye&&(Object.keys(ye).forEach(Wt=>{this.controls[Wt]&&this.controls[Wt].patchValue(ye[Wt],{onlySelf:!0,emitEvent:Ne.emitEvent})}),this.updateValueAndValidity(Ne))}reset(ye={},Ne={}){this._forEachChild((Wt,Or)=>{Wt.reset(ye[Or],{onlySelf:!0,emitEvent:Ne.emitEvent})}),this._updatePristine(Ne),this._updateTouched(Ne),this.updateValueAndValidity(Ne)}getRawValue(){return this._reduceChildren({},(ye,Ne,Wt)=>(ye[Wt]=Ne instanceof nr?Ne.value:Ne.getRawValue(),ye))}_syncPendingControls(){let ye=this._reduceChildren(!1,(Ne,Wt)=>!!Wt._syncPendingControls()||Ne);return ye&&this.updateValueAndValidity({onlySelf:!0}),ye}_throwIfControlMissing(ye){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet. If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[ye])throw new Error(`Cannot find form control with name: ${ye}.`)}_forEachChild(ye){Object.keys(this.controls).forEach(Ne=>{const Wt=this.controls[Ne];Wt&&ye(Wt,Ne)})}_setUpControls(){this._forEachChild(ye=>{ye.setParent(this),ye._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(ye){for(const Ne of Object.keys(this.controls)){const Wt=this.controls[Ne];if(this.contains(Ne)&&ye(Wt))return!0}return!1}_reduceValue(){return this._reduceChildren({},(ye,Ne,Wt)=>((Ne.enabled||this.disabled)&&(ye[Wt]=Ne.value),ye))}_reduceChildren(ye,Ne){let Wt=ye;return this._forEachChild((Or,Ni)=>{Wt=Ne(Wt,Or,Ni)}),Wt}_allControlsDisabled(){for(const ye of Object.keys(this.controls))if(this.controls[ye].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(ye){this._forEachChild((Ne,Wt)=>{if(void 0===ye[Wt])throw new Error(`Must supply a value for form control with name: '${Wt}'.`)})}}class yi extends Jn{constructor(ye,Ne,Wt){super(ir(Ne),_r(Wt,Ne)),this.controls=ye,this._initObservables(),this._setUpdateStrategy(Ne),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(ye){return this.controls[ye]}push(ye,Ne={}){this.controls.push(ye),this._registerControl(ye),this.updateValueAndValidity({emitEvent:Ne.emitEvent}),this._onCollectionChange()}insert(ye,Ne,Wt={}){this.controls.splice(ye,0,Ne),this._registerControl(Ne),this.updateValueAndValidity({emitEvent:Wt.emitEvent})}removeAt(ye,Ne={}){this.controls[ye]&&this.controls[ye]._registerOnCollectionChange(()=>{}),this.controls.splice(ye,1),this.updateValueAndValidity({emitEvent:Ne.emitEvent})}setControl(ye,Ne,Wt={}){this.controls[ye]&&this.controls[ye]._registerOnCollectionChange(()=>{}),this.controls.splice(ye,1),Ne&&(this.controls.splice(ye,0,Ne),this._registerControl(Ne)),this.updateValueAndValidity({emitEvent:Wt.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(ye,Ne={}){this._checkAllValuesPresent(ye),ye.forEach((Wt,Or)=>{this._throwIfControlMissing(Or),this.at(Or).setValue(Wt,{onlySelf:!0,emitEvent:Ne.emitEvent})}),this.updateValueAndValidity(Ne)}patchValue(ye,Ne={}){null!=ye&&(ye.forEach((Wt,Or)=>{this.at(Or)&&this.at(Or).patchValue(Wt,{onlySelf:!0,emitEvent:Ne.emitEvent})}),this.updateValueAndValidity(Ne))}reset(ye=[],Ne={}){this._forEachChild((Wt,Or)=>{Wt.reset(ye[Or],{onlySelf:!0,emitEvent:Ne.emitEvent})}),this._updatePristine(Ne),this._updateTouched(Ne),this.updateValueAndValidity(Ne)}getRawValue(){return this.controls.map(ye=>ye instanceof nr?ye.value:ye.getRawValue())}clear(ye={}){this.controls.length<1||(this._forEachChild(Ne=>Ne._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:ye.emitEvent}))}_syncPendingControls(){let ye=this.controls.reduce((Ne,Wt)=>!!Wt._syncPendingControls()||Ne,!1);return ye&&this.updateValueAndValidity({onlySelf:!0}),ye}_throwIfControlMissing(ye){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet. If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(ye))throw new Error(`Cannot find form control at index ${ye}`)}_forEachChild(ye){this.controls.forEach((Ne,Wt)=>{ye(Ne,Wt)})}_updateValue(){this.value=this.controls.filter(ye=>ye.enabled||this.disabled).map(ye=>ye.value)}_anyControls(ye){return this.controls.some(Ne=>Ne.enabled&&ye(Ne))}_setUpControls(){this._forEachChild(ye=>this._registerControl(ye))}_checkAllValuesPresent(ye){this._forEachChild((Ne,Wt)=>{if(void 0===ye[Wt])throw new Error(`Must supply a value for form control at index: ${Wt}.`)})}_allControlsDisabled(){for(const ye of this.controls)if(ye.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(ye){ye.setParent(this),ye._registerOnCollectionChange(this._onCollectionChange)}}const Ii={provide:zt,useExisting:(0,t.Gpc)(()=>Kr)},Oi=(()=>Promise.resolve(null))();let Kr=(()=>{class Ce extends zt{constructor(Ne,Wt){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new t.vpe,this.form=new Mr({},Et(Ne),nn(Wt))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(Ne){Oi.then(()=>{const Wt=this._findContainer(Ne.path);Ne.control=Wt.registerControl(Ne.name,Ne.control),mn(Ne.control,Ne),Ne.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(Ne)})}getControl(Ne){return this.form.get(Ne.path)}removeControl(Ne){Oi.then(()=>{const Wt=this._findContainer(Ne.path);Wt&&Wt.removeControl(Ne.name),Pt(this._directives,Ne)})}addFormGroup(Ne){Oi.then(()=>{const Wt=this._findContainer(Ne.path),Or=new Mr({});Qn(Or,Ne),Wt.registerControl(Ne.name,Or),Or.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(Ne){Oi.then(()=>{const Wt=this._findContainer(Ne.path);Wt&&Wt.removeControl(Ne.name)})}getFormGroup(Ne){return this.form.get(Ne.path)}updateModel(Ne,Wt){Oi.then(()=>{this.form.get(Ne.path).setValue(Wt)})}setValue(Ne){this.control.setValue(Ne)}onSubmit(Ne){return this.submitted=!0,at(this.form,this._directives),this.ngSubmit.emit(Ne),!1}onReset(){this.resetForm()}resetForm(Ne){this.form.reset(Ne),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(Ne){return Ne.pop(),Ne.length?this.form.get(Ne):this.form}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(U,10),t.Y36(M,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("submit",function(Ni){return Wt.onSubmit(Ni)})("reset",function(){return Wt.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[t._Bn([Ii]),t.qOj]}),Ce})(),ei=(()=>{class Ce extends zt{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return Dn(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,features:[t.qOj]}),Ce})();const Ct={provide:ln,useExisting:(0,t.Gpc)(()=>We)},bt=(()=>Promise.resolve(null))();let We=(()=>{class Ce extends ln{constructor(Ne,Wt,Or,Ni){super(),this.control=new nr,this._registered=!1,this.update=new t.vpe,this._parent=Ne,this._setValidators(Wt),this._setAsyncValidators(Or),this.valueAccessor=it(0,Ni)}ngOnChanges(Ne){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in Ne&&this._updateDisabled(Ne),Ue(Ne,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?Dn(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(Ne){this.viewModel=Ne,this.update.emit(Ne)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){mn(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(Ne){bt.then(()=>{this.control.setValue(Ne,{emitViewToModelChange:!1})})}_updateDisabled(Ne){const Wt=Ne.isDisabled.currentValue,Or=""===Wt||Wt&&"false"!==Wt;bt.then(()=>{Or&&!this.control.disabled?this.control.disable():!Or&&this.control.disabled&&this.control.enable()})}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(zt,9),t.Y36(U,10),t.Y36(M,10),t.Y36(_,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[t._Bn([Ct]),t.qOj,t.TTD]}),Ce})(),$t=(()=>{class Ce{}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),Ce})();const or={provide:_,useExisting:(0,t.Gpc)(()=>Zn),multi:!0};let Zn=(()=>{class Ce extends h{writeValue(Ne){this.setProperty("value",null==Ne?"":Ne)}registerOnChange(Ne){this.onChange=Wt=>{Ne(""==Wt?null:parseFloat(Wt))}}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("input",function(Ni){return Wt.onChange(Ni.target.value)})("blur",function(){return Wt.onTouched()})},features:[t._Bn([or]),t.qOj]}),Ce})();const Vr={provide:_,useExisting:(0,t.Gpc)(()=>Qr),multi:!0};let ai=(()=>{class Ce{}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275mod=t.oAB({type:Ce}),Ce.\u0275inj=t.cJS({}),Ce})(),Dr=(()=>{class Ce{constructor(){this._accessors=[]}add(Ne,Wt){this._accessors.push([Ne,Wt])}remove(Ne){for(let Wt=this._accessors.length-1;Wt>=0;--Wt)if(this._accessors[Wt][1]===Ne)return void this._accessors.splice(Wt,1)}select(Ne){this._accessors.forEach(Wt=>{this._isSameGroup(Wt,Ne)&&Wt[1]!==Ne&&Wt[1].fireUncheck(Ne.value)})}_isSameGroup(Ne,Wt){return!!Ne[0].control&&Ne[0]._parent===Wt._control._parent&&Ne[1].name===Wt.name}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275prov=(0,t.Yz7)({factory:function(){return new Ce},token:Ce,providedIn:ai}),Ce})(),Qr=(()=>{class Ce extends h{constructor(Ne,Wt,Or,Ni){super(Ne,Wt),this._registry=Or,this._injector=Ni,this.onChange=()=>{}}ngOnInit(){this._control=this._injector.get(ln),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(Ne){this._state=Ne===this.value,this.setProperty("checked",this._state)}registerOnChange(Ne){this._fn=Ne,this.onChange=()=>{Ne(this.value),this._registry.select(this)}}fireUncheck(Ne){this.writeValue(Ne)}_checkName(){!this.name&&this.formControlName&&(this.name=this.formControlName)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(t.Qsj),t.Y36(t.SBq),t.Y36(Dr),t.Y36(t.zs3))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("change",function(){return Wt.onChange()})("blur",function(){return Wt.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},features:[t._Bn([Vr]),t.qOj]}),Ce})();const Ei=new t.OlP("NgModelWithFormControlWarning"),Fi={provide:zt,useExisting:(0,t.Gpc)(()=>no)};let no=(()=>{class Ce extends zt{constructor(Ne,Wt){super(),this.validators=Ne,this.asyncValidators=Wt,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new t.vpe,this._setValidators(Ne),this._setAsyncValidators(Wt)}ngOnChanges(Ne){this._checkFormPresent(),Ne.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Tt(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(Ne){const Wt=this.form.get(Ne.path);return mn(Wt,Ne),Wt.updateValueAndValidity({emitEvent:!1}),this.directives.push(Ne),Wt}getControl(Ne){return this.form.get(Ne.path)}removeControl(Ne){jn(Ne.control||null,Ne,!1),Pt(this.directives,Ne)}addFormGroup(Ne){this._setUpFormContainer(Ne)}removeFormGroup(Ne){this._cleanUpFormContainer(Ne)}getFormGroup(Ne){return this.form.get(Ne.path)}addFormArray(Ne){this._setUpFormContainer(Ne)}removeFormArray(Ne){this._cleanUpFormContainer(Ne)}getFormArray(Ne){return this.form.get(Ne.path)}updateModel(Ne,Wt){this.form.get(Ne.path).setValue(Wt)}onSubmit(Ne){return this.submitted=!0,at(this.form,this.directives),this.ngSubmit.emit(Ne),!1}onReset(){this.resetForm()}resetForm(Ne){this.form.reset(Ne),this.submitted=!1}_updateDomValue(){this.directives.forEach(Ne=>{const Wt=Ne.control,Or=this.form.get(Ne.path);Wt!==Or&&(jn(Wt||null,Ne),Or instanceof nr&&(mn(Or,Ne),Ne.control=Or))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(Ne){const Wt=this.form.get(Ne.path);Qn(Wt,Ne),Wt.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(Ne){if(this.form){const Wt=this.form.get(Ne.path);Wt&&function(Ce,ye){return Tt(Ce,ye)}(Wt,Ne)&&Wt.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){mt(this.form,this),this._oldForm&&Tt(this._oldForm,this)}_checkFormPresent(){}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(U,10),t.Y36(M,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formGroup",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("submit",function(Ni){return Wt.onSubmit(Ni)})("reset",function(){return Wt.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[t._Bn([Fi]),t.qOj,t.TTD]}),Ce})();const Ji={provide:zt,useExisting:(0,t.Gpc)(()=>qi)};let qi=(()=>{class Ce extends ei{constructor(Ne,Wt,Or){super(),this._parent=Ne,this._setValidators(Wt),this._setAsyncValidators(Or)}_checkParentType(){Go(this._parent)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(zt,13),t.Y36(U,10),t.Y36(M,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formGroupName",""]],inputs:{name:["formGroupName","name"]},features:[t._Bn([Ji]),t.qOj]}),Ce})();const to={provide:zt,useExisting:(0,t.Gpc)(()=>zi)};let zi=(()=>{class Ce extends zt{constructor(Ne,Wt,Or){super(),this._parent=Ne,this._setValidators(Wt),this._setAsyncValidators(Or)}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return Dn(null==this.name?this.name:this.name.toString(),this._parent)}_checkParentType(){Go(this._parent)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(zt,13),t.Y36(U,10),t.Y36(M,10))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formArrayName",""]],inputs:{name:["formArrayName","name"]},features:[t._Bn([to]),t.qOj]}),Ce})();function Go(Ce){return!(Ce instanceof qi||Ce instanceof no||Ce instanceof zi)}const Ro={provide:ln,useExisting:(0,t.Gpc)(()=>Bo)};let Bo=(()=>{class Ce extends ln{constructor(Ne,Wt,Or,Ni,Yo){super(),this._ngModelWarningConfig=Yo,this._added=!1,this.update=new t.vpe,this._ngModelWarningSent=!1,this._parent=Ne,this._setValidators(Wt),this._setAsyncValidators(Or),this.valueAccessor=it(0,Ni)}set isDisabled(Ne){}ngOnChanges(Ne){this._added||this._setUpControl(),Ue(Ne,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(Ne){this.viewModel=Ne,this.update.emit(Ne)}get path(){return Dn(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(zt,13),t.Y36(U,10),t.Y36(M,10),t.Y36(_,10),t.Y36(Ei,8))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","formControlName",""]],inputs:{isDisabled:["disabled","isDisabled"],name:["formControlName","name"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},features:[t._Bn([Ro]),t.qOj,t.TTD]}),Ce._ngModelWarningSentOnce=!1,Ce})();const Jo={provide:_,useExisting:(0,t.Gpc)(()=>ds),multi:!0};function es(Ce,ye){return null==Ce?`${ye}`:(ye&&"object"==typeof ye&&(ye="Object"),`${Ce}: ${ye}`.slice(0,50))}let ds=(()=>{class Ce extends h{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(Ne){this._compareWith=Ne}writeValue(Ne){this.value=Ne;const Wt=this._getOptionId(Ne);null==Wt&&this.setProperty("selectedIndex",-1);const Or=es(Wt,Ne);this.setProperty("value",Or)}registerOnChange(Ne){this.onChange=Wt=>{this.value=this._getOptionValue(Wt),Ne(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(Ne){for(const Wt of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(Wt),Ne))return Wt;return null}_getOptionValue(Ne){const Wt=function(Ce){return Ce.split(":")[0]}(Ne);return this._optionMap.has(Wt)?this._optionMap.get(Wt):Ne}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("change",function(Ni){return Wt.onChange(Ni.target.value)})("blur",function(){return Wt.onTouched()})},inputs:{compareWith:"compareWith"},features:[t._Bn([Jo]),t.qOj]}),Ce})(),zo=(()=>{class Ce{constructor(Ne,Wt,Or){this._element=Ne,this._renderer=Wt,this._select=Or,this._select&&(this.id=this._select._registerOption())}set ngValue(Ne){null!=this._select&&(this._select._optionMap.set(this.id,Ne),this._setElementValue(es(this.id,Ne)),this._select.writeValue(this._select.value))}set value(Ne){this._setElementValue(Ne),this._select&&this._select.writeValue(this._select.value)}_setElementValue(Ne){this._renderer.setProperty(this._element.nativeElement,"value",Ne)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(ds,9))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),Ce})();const oa={provide:_,useExisting:(0,t.Gpc)(()=>ee),multi:!0};function Er(Ce,ye){return null==Ce?`${ye}`:("string"==typeof ye&&(ye=`'${ye}'`),ye&&"object"==typeof ye&&(ye="Object"),`${Ce}: ${ye}`.slice(0,50))}let ee=(()=>{class Ce extends h{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(Ne){this._compareWith=Ne}writeValue(Ne){let Wt;if(this.value=Ne,Array.isArray(Ne)){const Or=Ne.map(Ni=>this._getOptionId(Ni));Wt=(Ni,Yo)=>{Ni._setSelected(Or.indexOf(Yo.toString())>-1)}}else Wt=(Or,Ni)=>{Or._setSelected(!1)};this._optionMap.forEach(Wt)}registerOnChange(Ne){this.onChange=Wt=>{const Or=[];if(void 0!==Wt.selectedOptions){const Ni=Wt.selectedOptions;for(let Yo=0;Yo<Ni.length;Yo++){const ms=Ni.item(Yo),ss=this._getOptionValue(ms.value);Or.push(ss)}}else{const Ni=Wt.options;for(let Yo=0;Yo<Ni.length;Yo++){const ms=Ni.item(Yo);if(ms.selected){const ss=this._getOptionValue(ms.value);Or.push(ss)}}}this.value=Or,Ne(Or)}}_registerOption(Ne){const Wt=(this._idCounter++).toString();return this._optionMap.set(Wt,Ne),Wt}_getOptionId(Ne){for(const Wt of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(Wt)._value,Ne))return Wt;return null}_getOptionValue(Ne){const Wt=function(Ce){return Ce.split(":")[0]}(Ne);return this._optionMap.has(Wt)?this._optionMap.get(Wt)._value:Ne}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(Ne,Wt){1&Ne&&t.NdJ("change",function(Ni){return Wt.onChange(Ni.target)})("blur",function(){return Wt.onTouched()})},inputs:{compareWith:"compareWith"},features:[t._Bn([oa]),t.qOj]}),Ce})(),Ve=(()=>{class Ce{constructor(Ne,Wt,Or){this._element=Ne,this._renderer=Wt,this._select=Or,this._select&&(this.id=this._select._registerOption(this))}set ngValue(Ne){null!=this._select&&(this._value=Ne,this._setElementValue(Er(this.id,Ne)),this._select.writeValue(this._select.value))}set value(Ne){this._select?(this._value=Ne,this._setElementValue(Er(this.id,Ne)),this._select.writeValue(this._select.value)):this._setElementValue(Ne)}_setElementValue(Ne){this._renderer.setProperty(this._element.nativeElement,"value",Ne)}_setSelected(Ne){this._renderer.setProperty(this._element.nativeElement,"selected",Ne)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(ee,9))},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),Ce})(),Tn=(()=>{class Ce{constructor(){this._validator=Me}handleChanges(Ne){if(this.inputName in Ne){const Wt=this.normalizeInput(Ne[this.inputName].currentValue);this._validator=this.createValidator(Wt),this._onChange&&this._onChange()}}validate(Ne){return this._validator(Ne)}registerOnValidatorChange(Ne){this._onChange=Ne}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275dir=t.lG2({type:Ce}),Ce})();const $r={provide:U,useExisting:(0,t.Gpc)(()=>ni),multi:!0};let ni=(()=>{class Ce extends Tn{constructor(){super(...arguments),this.inputName="max",this.normalizeInput=Ne=>parseFloat(Ne),this.createValidator=Ne=>ie(Ne)}ngOnChanges(Ne){this.handleChanges(Ne)}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(Ne,Wt){if(2&Ne){let Or;t.uIk("max",null!==(Or=Wt.max)&&void 0!==Or?Or:null)}},inputs:{max:"max"},features:[t._Bn([$r]),t.qOj,t.TTD]}),Ce})();const Ri={provide:U,useExisting:(0,t.Gpc)(()=>Do),multi:!0};let Do=(()=>{class Ce extends Tn{constructor(){super(...arguments),this.inputName="min",this.normalizeInput=Ne=>parseFloat(Ne),this.createValidator=Ne=>Y(Ne)}ngOnChanges(Ne){this.handleChanges(Ne)}}return Ce.\u0275fac=function(){let ye;return function(Wt){return(ye||(ye=t.n5z(Ce)))(Wt||Ce)}}(),Ce.\u0275dir=t.lG2({type:Ce,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(Ne,Wt){if(2&Ne){let Or;t.uIk("min",null!==(Or=Wt.min)&&void 0!==Or?Or:null)}},inputs:{min:"min"},features:[t._Bn([Ri]),t.qOj,t.TTD]}),Ce})();const gi={provide:U,useExisting:(0,t.Gpc)(()=>Li),multi:!0};let Li=(()=>{class Ce{constructor(){this._required=!1}get required(){return this._required}set required(Ne){this._required=null!=Ne&&!1!==Ne&&"false"!=`${Ne}`,this._onChange&&this._onChange()}validate(Ne){return this.required?oe(Ne):null}registerOnValidatorChange(Ne){this._onChange=Ne}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275dir=t.lG2({type:Ce,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(Ne,Wt){2&Ne&&t.uIk("required",Wt.required?"":null)},inputs:{required:"required"},features:[t._Bn([gi])]}),Ce})(),fa=(()=>{class Ce{}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275mod=t.oAB({type:Ce}),Ce.\u0275inj=t.cJS({imports:[[ai]]}),Ce})(),ks=(()=>{class Ce{}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275mod=t.oAB({type:Ce}),Ce.\u0275inj=t.cJS({imports:[fa]}),Ce})(),Ua=(()=>{class Ce{static withConfig(Ne){return{ngModule:Ce,providers:[{provide:Ei,useValue:Ne.warnOnNgModelWithFormControl}]}}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275mod=t.oAB({type:Ce}),Ce.\u0275inj=t.cJS({imports:[fa]}),Ce})(),an=(()=>{class Ce{group(Ne,Wt=null){const Or=this._reduceControls(Ne);let ms,Ni=null,Yo=null;return null!=Wt&&(function(Ce){return void 0!==Ce.asyncValidators||void 0!==Ce.validators||void 0!==Ce.updateOn}(Wt)?(Ni=null!=Wt.validators?Wt.validators:null,Yo=null!=Wt.asyncValidators?Wt.asyncValidators:null,ms=null!=Wt.updateOn?Wt.updateOn:void 0):(Ni=null!=Wt.validator?Wt.validator:null,Yo=null!=Wt.asyncValidator?Wt.asyncValidator:null)),new Mr(Or,{asyncValidators:Yo,updateOn:ms,validators:Ni})}control(Ne,Wt,Or){return new nr(Ne,Wt,Or)}array(Ne,Wt,Or){const Ni=Ne.map(Yo=>this._createControl(Yo));return new yi(Ni,Wt,Or)}_reduceControls(Ne){const Wt={};return Object.keys(Ne).forEach(Or=>{Wt[Or]=this._createControl(Ne[Or])}),Wt}_createControl(Ne){return Ne instanceof nr||Ne instanceof Mr||Ne instanceof yi?Ne:Array.isArray(Ne)?this.control(Ne[0],Ne.length>1?Ne[1]:null,Ne.length>2?Ne[2]:null):this.control(Ne)}}return Ce.\u0275fac=function(Ne){return new(Ne||Ce)},Ce.\u0275prov=(0,t.Yz7)({factory:function(){return new Ce},token:Ce,providedIn:Ua}),Ce})()},91211:(Ge,g,o)=>{"use strict";o.d(g,{b2:()=>Ut,H7:()=>yn,HJ:()=>Jn,q6:()=>it,se:()=>dt});var t=o(12057),e=o(74788);class s extends t.w_{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class a extends s{static makeCurrent(){(0,t.HT)(new a)}onAndCancel(Ke,Xe,Vt){return Ke.addEventListener(Xe,Vt,!1),()=>{Ke.removeEventListener(Xe,Vt,!1)}}dispatchEvent(Ke,Xe){Ke.dispatchEvent(Xe)}remove(Ke){Ke.parentNode&&Ke.parentNode.removeChild(Ke)}createElement(Ke,Xe){return(Xe=Xe||this.getDefaultDocument()).createElement(Ke)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(Ke){return Ke.nodeType===Node.ELEMENT_NODE}isShadowRoot(Ke){return Ke instanceof DocumentFragment}getGlobalEventTarget(Ke,Xe){return"window"===Xe?window:"document"===Xe?Ke:"body"===Xe?Ke.body:null}getBaseHref(Ke){const Xe=(l=l||document.querySelector("base"),l?l.getAttribute("href"):null);return null==Xe?null:function(ct){h=h||document.createElement("a"),h.setAttribute("href",ct);const Ke=h.pathname;return"/"===Ke.charAt(0)?Ke:`/${Ke}`}(Xe)}resetBaseElement(){l=null}getUserAgent(){return window.navigator.userAgent}getCookie(Ke){return(0,t.Mx)(document.cookie,Ke)}}let h,l=null;const m=new e.OlP("TRANSITION_ID"),C=[{provide:e.ip1,useFactory:function(ct,Ke,Xe){return()=>{Xe.get(e.CZH).donePromise.then(()=>{const Vt=(0,t.q)(),Ct=Ke.querySelectorAll(`style[ng-transition="${ct}"]`);for(let rt=0;rt<Ct.length;rt++)Vt.remove(Ct[rt])})}},deps:[m,t.K0,e.zs3],multi:!0}];class D{static init(){(0,e.VLi)(new D)}addToWindow(Ke){e.dqk.getAngularTestability=(Vt,Ct=!0)=>{const rt=Ke.findTestabilityInTree(Vt,Ct);if(null==rt)throw new Error("Could not find testability for element.");return rt},e.dqk.getAllAngularTestabilities=()=>Ke.getAllTestabilities(),e.dqk.getAllAngularRootElements=()=>Ke.getAllRootElements(),e.dqk.frameworkStabilizers||(e.dqk.frameworkStabilizers=[]),e.dqk.frameworkStabilizers.push(Vt=>{const Ct=e.dqk.getAllAngularTestabilities();let rt=Ct.length,bt=!1;const We=function($t){bt=bt||$t,rt--,0==rt&&Vt(bt)};Ct.forEach(function($t){$t.whenStable(We)})})}findTestabilityInTree(Ke,Xe,Vt){if(null==Xe)return null;const Ct=Ke.getTestability(Xe);return null!=Ct?Ct:Vt?(0,t.q)().isShadowRoot(Xe)?this.findTestabilityInTree(Ke,Xe.host,!0):this.findTestabilityInTree(Ke,Xe.parentElement,!0):null}}let x=(()=>{class ct{build(){return new XMLHttpRequest}}return ct.\u0275fac=function(Xe){return new(Xe||ct)},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})();const Me=new e.OlP("EventManagerPlugins");let Oe=(()=>{class ct{constructor(Xe,Vt){this._zone=Vt,this._eventNameToPlugin=new Map,Xe.forEach(Ct=>Ct.manager=this),this._plugins=Xe.slice().reverse()}addEventListener(Xe,Vt,Ct){return this._findPluginFor(Vt).addEventListener(Xe,Vt,Ct)}addGlobalEventListener(Xe,Vt,Ct){return this._findPluginFor(Vt).addGlobalEventListener(Xe,Vt,Ct)}getZone(){return this._zone}_findPluginFor(Xe){const Vt=this._eventNameToPlugin.get(Xe);if(Vt)return Vt;const Ct=this._plugins;for(let rt=0;rt<Ct.length;rt++){const bt=Ct[rt];if(bt.supports(Xe))return this._eventNameToPlugin.set(Xe,bt),bt}throw new Error(`No event manager plugin found for event ${Xe}`)}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(Me),e.LFG(e.R0b))},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})();class be{constructor(Ke){this._doc=Ke}addGlobalEventListener(Ke,Xe,Vt){const Ct=(0,t.q)().getGlobalEventTarget(this._doc,Ke);if(!Ct)throw new Error(`Unsupported event target ${Ct} for event ${Xe}`);return this.addEventListener(Ct,Xe,Vt)}}let ue=(()=>{class ct{constructor(){this._stylesSet=new Set}addStyles(Xe){const Vt=new Set;Xe.forEach(Ct=>{this._stylesSet.has(Ct)||(this._stylesSet.add(Ct),Vt.add(Ct))}),this.onStylesAdded(Vt)}onStylesAdded(Xe){}getAllStyles(){return Array.from(this._stylesSet)}}return ct.\u0275fac=function(Xe){return new(Xe||ct)},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})(),He=(()=>{class ct extends ue{constructor(Xe){super(),this._doc=Xe,this._hostNodes=new Map,this._hostNodes.set(Xe.head,[])}_addStylesToHost(Xe,Vt,Ct){Xe.forEach(rt=>{const bt=this._doc.createElement("style");bt.textContent=rt,Ct.push(Vt.appendChild(bt))})}addHost(Xe){const Vt=[];this._addStylesToHost(this._stylesSet,Xe,Vt),this._hostNodes.set(Xe,Vt)}removeHost(Xe){const Vt=this._hostNodes.get(Xe);Vt&&Vt.forEach($e),this._hostNodes.delete(Xe)}onStylesAdded(Xe){this._hostNodes.forEach((Vt,Ct)=>{this._addStylesToHost(Xe,Ct,Vt)})}ngOnDestroy(){this._hostNodes.forEach(Xe=>Xe.forEach($e))}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(t.K0))},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})();function $e(ct){(0,t.q)().remove(ct)}const F={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},je=/%COMP%/g;function It(ct,Ke,Xe){for(let Vt=0;Vt<Ke.length;Vt++){let Ct=Ke[Vt];Array.isArray(Ct)?It(ct,Ct,Xe):(Ct=Ct.replace(je,ct),Xe.push(Ct))}return Xe}function ae(ct){return Ke=>{if("__ngUnwrap__"===Ke)return ct;!1===ct(Ke)&&(Ke.preventDefault(),Ke.returnValue=!1)}}let dt=(()=>{class ct{constructor(Xe,Vt,Ct){this.eventManager=Xe,this.sharedStylesHost=Vt,this.appId=Ct,this.rendererByCompId=new Map,this.defaultRenderer=new Jt(Xe)}createRenderer(Xe,Vt){if(!Xe||!Vt)return this.defaultRenderer;switch(Vt.encapsulation){case e.ifc.Emulated:{let Ct=this.rendererByCompId.get(Vt.id);return Ct||(Ct=new Ln(this.eventManager,this.sharedStylesHost,Vt,this.appId),this.rendererByCompId.set(Vt.id,Ct)),Ct.applyToHost(Xe),Ct}case 1:case e.ifc.ShadowDom:return new Rn(this.eventManager,this.sharedStylesHost,Xe,Vt);default:if(!this.rendererByCompId.has(Vt.id)){const Ct=It(Vt.id,Vt.styles,[]);this.sharedStylesHost.addStyles(Ct),this.rendererByCompId.set(Vt.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(Oe),e.LFG(He),e.LFG(e.AFp))},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})();class Jt{constructor(Ke){this.eventManager=Ke,this.data=Object.create(null)}destroy(){}createElement(Ke,Xe){return Xe?document.createElementNS(F[Xe]||Xe,Ke):document.createElement(Ke)}createComment(Ke){return document.createComment(Ke)}createText(Ke){return document.createTextNode(Ke)}appendChild(Ke,Xe){Ke.appendChild(Xe)}insertBefore(Ke,Xe,Vt){Ke&&Ke.insertBefore(Xe,Vt)}removeChild(Ke,Xe){Ke&&Ke.removeChild(Xe)}selectRootElement(Ke,Xe){let Vt="string"==typeof Ke?document.querySelector(Ke):Ke;if(!Vt)throw new Error(`The selector "${Ke}" did not match any elements`);return Xe||(Vt.textContent=""),Vt}parentNode(Ke){return Ke.parentNode}nextSibling(Ke){return Ke.nextSibling}setAttribute(Ke,Xe,Vt,Ct){if(Ct){Xe=Ct+":"+Xe;const rt=F[Ct];rt?Ke.setAttributeNS(rt,Xe,Vt):Ke.setAttribute(Xe,Vt)}else Ke.setAttribute(Xe,Vt)}removeAttribute(Ke,Xe,Vt){if(Vt){const Ct=F[Vt];Ct?Ke.removeAttributeNS(Ct,Xe):Ke.removeAttribute(`${Vt}:${Xe}`)}else Ke.removeAttribute(Xe)}addClass(Ke,Xe){Ke.classList.add(Xe)}removeClass(Ke,Xe){Ke.classList.remove(Xe)}setStyle(Ke,Xe,Vt,Ct){Ct&(e.JOm.DashCase|e.JOm.Important)?Ke.style.setProperty(Xe,Vt,Ct&e.JOm.Important?"important":""):Ke.style[Xe]=Vt}removeStyle(Ke,Xe,Vt){Vt&e.JOm.DashCase?Ke.style.removeProperty(Xe):Ke.style[Xe]=""}setProperty(Ke,Xe,Vt){Ke[Xe]=Vt}setValue(Ke,Xe){Ke.nodeValue=Xe}listen(Ke,Xe,Vt){return"string"==typeof Ke?this.eventManager.addGlobalEventListener(Ke,Xe,ae(Vt)):this.eventManager.addEventListener(Ke,Xe,ae(Vt))}}class Ln extends Jt{constructor(Ke,Xe,Vt,Ct){super(Ke),this.component=Vt;const rt=It(Ct+"-"+Vt.id,Vt.styles,[]);Xe.addStyles(rt),this.contentAttr="_ngcontent-%COMP%".replace(je,Ct+"-"+Vt.id),this.hostAttr="_nghost-%COMP%".replace(je,Ct+"-"+Vt.id)}applyToHost(Ke){super.setAttribute(Ke,this.hostAttr,"")}createElement(Ke,Xe){const Vt=super.createElement(Ke,Xe);return super.setAttribute(Vt,this.contentAttr,""),Vt}}class Rn extends Jt{constructor(Ke,Xe,Vt,Ct){super(Ke),this.sharedStylesHost=Xe,this.hostEl=Vt,this.shadowRoot=Vt.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const rt=It(Ct.id,Ct.styles,[]);for(let bt=0;bt<rt.length;bt++){const We=document.createElement("style");We.textContent=rt[bt],this.shadowRoot.appendChild(We)}}nodeOrShadowRoot(Ke){return Ke===this.hostEl?this.shadowRoot:Ke}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(Ke,Xe){return super.appendChild(this.nodeOrShadowRoot(Ke),Xe)}insertBefore(Ke,Xe,Vt){return super.insertBefore(this.nodeOrShadowRoot(Ke),Xe,Vt)}removeChild(Ke,Xe){return super.removeChild(this.nodeOrShadowRoot(Ke),Xe)}parentNode(Ke){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(Ke)))}}let er=(()=>{class ct extends be{constructor(Xe){super(Xe)}supports(Xe){return!0}addEventListener(Xe,Vt,Ct){return Xe.addEventListener(Vt,Ct,!1),()=>this.removeEventListener(Xe,Vt,Ct)}removeEventListener(Xe,Vt,Ct){return Xe.removeEventListener(Vt,Ct)}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(t.K0))},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})();const Sn=["alt","control","meta","shift"],En={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Fn={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"},ut={alt:ct=>ct.altKey,control:ct=>ct.ctrlKey,meta:ct=>ct.metaKey,shift:ct=>ct.shiftKey};let mt=(()=>{class ct extends be{constructor(Xe){super(Xe)}supports(Xe){return null!=ct.parseEventName(Xe)}addEventListener(Xe,Vt,Ct){const rt=ct.parseEventName(Vt),bt=ct.eventCallback(rt.fullKey,Ct,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,t.q)().onAndCancel(Xe,rt.domEventName,bt))}static parseEventName(Xe){const Vt=Xe.toLowerCase().split("."),Ct=Vt.shift();if(0===Vt.length||"keydown"!==Ct&&"keyup"!==Ct)return null;const rt=ct._normalizeKey(Vt.pop());let bt="";if(Sn.forEach($t=>{const or=Vt.indexOf($t);or>-1&&(Vt.splice(or,1),bt+=$t+".")}),bt+=rt,0!=Vt.length||0===rt.length)return null;const We={};return We.domEventName=Ct,We.fullKey=bt,We}static getEventFullKey(Xe){let Vt="",Ct=function(ct){let Ke=ct.key;if(null==Ke){if(Ke=ct.keyIdentifier,null==Ke)return"Unidentified";Ke.startsWith("U+")&&(Ke=String.fromCharCode(parseInt(Ke.substring(2),16)),3===ct.location&&Fn.hasOwnProperty(Ke)&&(Ke=Fn[Ke]))}return En[Ke]||Ke}(Xe);return Ct=Ct.toLowerCase()," "===Ct?Ct="space":"."===Ct&&(Ct="dot"),Sn.forEach(rt=>{rt!=Ct&&ut[rt](Xe)&&(Vt+=rt+".")}),Vt+=Ct,Vt}static eventCallback(Xe,Vt,Ct){return rt=>{ct.getEventFullKey(rt)===Xe&&Ct.runGuarded(()=>Vt(rt))}}static _normalizeKey(Xe){switch(Xe){case"esc":return"escape";default:return Xe}}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(t.K0))},ct.\u0275prov=e.Yz7({token:ct,factory:ct.\u0275fac}),ct})(),yn=(()=>{class ct{}return ct.\u0275fac=function(Xe){return new(Xe||ct)},ct.\u0275prov=(0,e.Yz7)({factory:function(){return(0,e.LFG)(jt)},token:ct,providedIn:"root"}),ct})(),jt=(()=>{class ct extends yn{constructor(Xe){super(),this._doc=Xe}sanitize(Xe,Vt){if(null==Vt)return null;switch(Xe){case e.q3G.NONE:return Vt;case e.q3G.HTML:return(0,e.qzn)(Vt,"HTML")?(0,e.z3N)(Vt):(0,e.EiD)(this._doc,String(Vt)).toString();case e.q3G.STYLE:return(0,e.qzn)(Vt,"Style")?(0,e.z3N)(Vt):Vt;case e.q3G.SCRIPT:if((0,e.qzn)(Vt,"Script"))return(0,e.z3N)(Vt);throw new Error("unsafe value used in a script context");case e.q3G.URL:return(0,e.yhl)(Vt),(0,e.qzn)(Vt,"URL")?(0,e.z3N)(Vt):(0,e.mCW)(String(Vt));case e.q3G.RESOURCE_URL:if((0,e.qzn)(Vt,"ResourceURL"))return(0,e.z3N)(Vt);throw new Error("unsafe value used in a resource URL context (see https://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${Xe} (see https://g.co/ng/security#xss)`)}}bypassSecurityTrustHtml(Xe){return(0,e.JVY)(Xe)}bypassSecurityTrustStyle(Xe){return(0,e.L6k)(Xe)}bypassSecurityTrustScript(Xe){return(0,e.eBb)(Xe)}bypassSecurityTrustUrl(Xe){return(0,e.LAX)(Xe)}bypassSecurityTrustResourceUrl(Xe){return(0,e.pB0)(Xe)}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(t.K0))},ct.\u0275prov=(0,e.Yz7)({factory:function(){return function(ct){return new jt(ct.get(t.K0))}((0,e.LFG)(e.gxx))},token:ct,providedIn:"root"}),ct})();const it=(0,e.eFA)(e._c5,"browser",[{provide:e.Lbi,useValue:t.bD},{provide:e.g9A,useValue:function(){a.makeCurrent(),D.init()},multi:!0},{provide:t.K0,useFactory:function(){return(0,e.RDi)(document),document},deps:[]}]),Pt=[[],{provide:e.zSh,useValue:"root"},{provide:e.qLn,useFactory:function(){return new e.qLn},deps:[]},{provide:Me,useClass:er,multi:!0,deps:[t.K0,e.R0b,e.Lbi]},{provide:Me,useClass:mt,multi:!0,deps:[t.K0]},[],{provide:dt,useClass:dt,deps:[Oe,He,e.AFp]},{provide:e.FYo,useExisting:dt},{provide:ue,useExisting:He},{provide:He,useClass:He,deps:[t.K0]},{provide:e.dDg,useClass:e.dDg,deps:[e.R0b]},{provide:Oe,useClass:Oe,deps:[Me,e.R0b]},{provide:t.JF,useClass:x,deps:[]},[]];let Ut=(()=>{class ct{constructor(Xe){if(Xe)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(Xe){return{ngModule:ct,providers:[{provide:e.AFp,useValue:Xe.appId},{provide:m,useExisting:e.AFp},C]}}}return ct.\u0275fac=function(Xe){return new(Xe||ct)(e.LFG(ct,12))},ct.\u0275mod=e.oAB({type:ct}),ct.\u0275inj=e.cJS({providers:Pt,imports:[t.ez,e.hGG]}),ct})();const ir="undefined"!=typeof window&&window||{};class mr{constructor(Ke,Xe){this.msPerTick=Ke,this.numTicks=Xe}}class _r{constructor(Ke){this.appRef=Ke.injector.get(e.z2F)}timeChangeDetection(Ke){const Xe=Ke&&Ke.record,Vt="Change Detection",Ct=null!=ir.console.profile;Xe&&Ct&&ir.console.profile(Vt);const rt=Nr();let bt=0;for(;bt<5||Nr()-rt<500;)this.appRef.tick(),bt++;const We=Nr();Xe&&Ct&&ir.console.profileEnd(Vt);const $t=(We-rt)/bt;return ir.console.log(`ran ${bt} change detection cycles`),ir.console.log(`${$t.toFixed(2)} ms per check`),new mr($t,bt)}}function Nr(){return ir.performance&&ir.performance.now?ir.performance.now():(new Date).getTime()}function Jn(ct){return function(ct,Ke){"undefined"!=typeof COMPILED&&COMPILED||((e.dqk.ng=e.dqk.ng||{})[ct]=Ke)}("profiler",new _r(ct)),ct}},6283:(Ge,g,o)=>{"use strict";o.d(g,{gz:()=>di,m2:()=>ue,OD:()=>be,wm:()=>Qo,F0:()=>Xn,rH:()=>Fr,Od:()=>lr,yS:()=>zr,Bz:()=>Es,lC:()=>li});var t=o(12057),e=o(74788),s=o(18891),a=o(94402),l=o(59193);function u(Je){return new s.y(Fe=>{let we;try{we=Je()}catch(xe){return void Fe.error(xe)}return(we?(0,a.D)(we):(0,l.c)()).subscribe(Fe)})}var h=o(25917),_=o(26215),m=o(9112),b=o(13410),C=o(58071),D=o(52441),x=o(79765),j=o(88002),H=o(43190),z=o(15257),U=o(39761),M=o(42145),I=o(45435),J=o(5304),Y=o(94612),ie=o(12627),oe=o(28049),fe=o(19773),ne=o(68307),he=o(548),ce=o(51307),Ae=o(68939),Me=o(63282);class Oe{constructor(Fe,we){this.id=Fe,this.url=we}}class be extends Oe{constructor(Fe,we,Ot="imperative",xe=null){super(Fe,we),this.navigationTrigger=Ot,this.restoredState=xe}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class ue extends Oe{constructor(Fe,we,Ot){super(Fe,we),this.urlAfterRedirects=Ot}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class He extends Oe{constructor(Fe,we,Ot){super(Fe,we),this.reason=Ot}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class $e extends Oe{constructor(Fe,we,Ot){super(Fe,we),this.error=Ot}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class F extends Oe{constructor(Fe,we,Ot,xe){super(Fe,we),this.urlAfterRedirects=Ot,this.state=xe}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class je extends Oe{constructor(Fe,we,Ot,xe){super(Fe,we),this.urlAfterRedirects=Ot,this.state=xe}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Et extends Oe{constructor(Fe,we,Ot,xe,ke){super(Fe,we),this.urlAfterRedirects=Ot,this.state=xe,this.shouldActivate=ke}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class lt extends Oe{constructor(Fe,we,Ot,xe){super(Fe,we),this.urlAfterRedirects=Ot,this.state=xe}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class nn extends Oe{constructor(Fe,we,Ot,xe){super(Fe,we),this.urlAfterRedirects=Ot,this.state=xe}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class St{constructor(Fe){this.route=Fe}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class At{constructor(Fe){this.route=Fe}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Qe{constructor(Fe){this.snapshot=Fe}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class It{constructor(Fe){this.snapshot=Fe}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ae{constructor(Fe){this.snapshot=Fe}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Ie{constructor(Fe){this.snapshot=Fe}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class dt{constructor(Fe,we,Ot){this.routerEvent=Fe,this.position=we,this.anchor=Ot}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}const Jt="primary";class zt{constructor(Fe){this.params=Fe||{}}has(Fe){return Object.prototype.hasOwnProperty.call(this.params,Fe)}get(Fe){if(this.has(Fe)){const we=this.params[Fe];return Array.isArray(we)?we[0]:we}return null}getAll(Fe){if(this.has(Fe)){const we=this.params[Fe];return Array.isArray(we)?we:[we]}return[]}get keys(){return Object.keys(this.params)}}function ln(Je){return new zt(Je)}const ar="ngNavigationCancelingError";function Ln(Je){const Fe=Error("NavigationCancelingError: "+Je);return Fe[ar]=!0,Fe}function er(Je,Fe,we){const Ot=we.path.split("/");if(Ot.length>Je.length||"full"===we.pathMatch&&(Fe.hasChildren()||Ot.length<Je.length))return null;const xe={};for(let ke=0;ke<Ot.length;ke++){const Te=Ot[ke],ge=Je[ke];if(Te.startsWith(":"))xe[Te.substring(1)]=ge;else if(Te!==ge.path)return null}return{consumed:Je.slice(0,Ot.length),posParams:xe}}function Ht(Je,Fe){const we=Je?Object.keys(Je):void 0,Ot=Fe?Object.keys(Fe):void 0;if(!we||!Ot||we.length!=Ot.length)return!1;let xe;for(let ke=0;ke<we.length;ke++)if(xe=we[ke],!tr(Je[xe],Fe[xe]))return!1;return!0}function tr(Je,Fe){if(Array.isArray(Je)&&Array.isArray(Fe)){if(Je.length!==Fe.length)return!1;const we=[...Je].sort(),Ot=[...Fe].sort();return we.every((xe,ke)=>Ot[ke]===xe)}return Je===Fe}function Yn(Je){return Array.prototype.concat.apply([],Je)}function Cn(Je){return Je.length>0?Je[Je.length-1]:null}function dn(Je,Fe){for(const we in Je)Je.hasOwnProperty(we)&&Fe(Je[we],we)}function Kn(Je){return(0,e.CqO)(Je)?Je:(0,e.QGY)(Je)?(0,a.D)(Promise.resolve(Je)):(0,h.of)(Je)}const Sn={exact:function Dn(Je,Fe,we){if(!jt(Je.segments,Fe.segments)||!ut(Je.segments,Fe.segments,we)||Je.numberOfChildren!==Fe.numberOfChildren)return!1;for(const Ot in Fe.children)if(!Je.children[Ot]||!Dn(Je.children[Ot],Fe.children[Ot],we))return!1;return!0},subset:jn},$n={exact:function(Je,Fe){return Ht(Je,Fe)},subset:function(Je,Fe){return Object.keys(Fe).length<=Object.keys(Je).length&&Object.keys(Fe).every(we=>tr(Je[we],Fe[we]))},ignored:()=>!0};function En(Je,Fe,we){return Sn[we.paths](Je.root,Fe.root,we.matrixParams)&&$n[we.queryParams](Je.queryParams,Fe.queryParams)&&!("exact"===we.fragment&&Je.fragment!==Fe.fragment)}function jn(Je,Fe,we){return Xt(Je,Fe,Fe.segments,we)}function Xt(Je,Fe,we,Ot){if(Je.segments.length>we.length){const xe=Je.segments.slice(0,we.length);return!(!jt(xe,we)||Fe.hasChildren()||!ut(xe,we,Ot))}if(Je.segments.length===we.length){if(!jt(Je.segments,we)||!ut(Je.segments,we,Ot))return!1;for(const xe in Fe.children)if(!Je.children[xe]||!jn(Je.children[xe],Fe.children[xe],Ot))return!1;return!0}{const xe=we.slice(0,Je.segments.length),ke=we.slice(Je.segments.length);return!!(jt(Je.segments,xe)&&ut(Je.segments,xe,Ot)&&Je.children[Jt])&&Xt(Je.children[Jt],Fe,ke,Ot)}}function ut(Je,Fe,we){return Fe.every((Ot,xe)=>$n[we](Je[xe].parameters,Ot.parameters))}class mt{constructor(Fe,we,Ot){this.root=Fe,this.queryParams=we,this.fragment=Ot}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ln(this.queryParams)),this._queryParamMap}toString(){return ht.serialize(this)}}class Tt{constructor(Fe,we){this.segments=Fe,this.children=we,this.parent=null,dn(we,(Ot,xe)=>Ot.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return L(this)}}class yn{constructor(Fe,we){this.path=Fe,this.parameters=we}get parameterMap(){return this._parameterMap||(this._parameterMap=ln(this.parameters)),this._parameterMap}toString(){return Nn(this)}}function jt(Je,Fe){return Je.length===Fe.length&&Je.every((we,Ot)=>we.path===Fe[Ot].path)}class Qn{}class Ir{parse(Fe){const we=new Jn(Fe);return new mt(we.parseRootSegment(),we.parseQueryParams(),we.parseFragment())}serialize(Fe){var Je;return`${`/${Ue(Fe.root,!0)}`}${function(Je){const Fe=Object.keys(Je).map(we=>{const Ot=Je[we];return Array.isArray(Ot)?Ot.map(xe=>`${at(we)}=${at(xe)}`).join("&"):`${at(we)}=${at(Ot)}`}).filter(we=>!!we);return Fe.length?`?${Fe.join("&")}`:""}(Fe.queryParams)}${"string"==typeof Fe.fragment?`#${Je=Fe.fragment,encodeURI(Je)}`:""}`}}const ht=new Ir;function L(Je){return Je.segments.map(Fe=>Nn(Fe)).join("/")}function Ue(Je,Fe){if(!Je.hasChildren())return L(Je);if(Fe){const we=Je.children[Jt]?Ue(Je.children[Jt],!1):"",Ot=[];return dn(Je.children,(xe,ke)=>{ke!==Jt&&Ot.push(`${ke}:${Ue(xe,!1)}`)}),Ot.length>0?`${we}(${Ot.join("//")})`:we}{const we=function(Je,Fe){let we=[];return dn(Je.children,(Ot,xe)=>{xe===Jt&&(we=we.concat(Fe(Ot,xe)))}),dn(Je.children,(Ot,xe)=>{xe!==Jt&&(we=we.concat(Fe(Ot,xe)))}),we}(Je,(Ot,xe)=>xe===Jt?[Ue(Je.children[Jt],!1)]:[`${xe}:${Ue(Ot,!1)}`]);return 1===Object.keys(Je.children).length&&null!=Je.children[Jt]?`${L(Je)}/${we[0]}`:`${L(Je)}/(${we.join("//")})`}}function nt(Je){return encodeURIComponent(Je).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function at(Je){return nt(Je).replace(/%3B/gi,";")}function Pt(Je){return nt(Je).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Ut(Je){return decodeURIComponent(Je)}function ot(Je){return Ut(Je.replace(/\+/g,"%20"))}function Nn(Je){return`${Pt(Je.path)}${function(Je){return Object.keys(Je).map(Fe=>`;${Pt(Fe)}=${Pt(Je[Fe])}`).join("")}(Je.parameters)}`}const Bn=/^[^\/()?;=#]+/;function ir(Je){const Fe=Je.match(Bn);return Fe?Fe[0]:""}const mr=/^[^=?&#]+/,Nr=/^[^?&#]+/;class Jn{constructor(Fe){this.url=Fe,this.remaining=Fe}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Tt([],{}):new Tt([],this.parseChildren())}parseQueryParams(){const Fe={};if(this.consumeOptional("?"))do{this.parseQueryParam(Fe)}while(this.consumeOptional("&"));return Fe}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const Fe=[];for(this.peekStartsWith("(")||Fe.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),Fe.push(this.parseSegment());let we={};this.peekStartsWith("/(")&&(this.capture("/"),we=this.parseParens(!0));let Ot={};return this.peekStartsWith("(")&&(Ot=this.parseParens(!1)),(Fe.length>0||Object.keys(we).length>0)&&(Ot[Jt]=new Tt(Fe,we)),Ot}parseSegment(){const Fe=ir(this.remaining);if(""===Fe&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(Fe),new yn(Ut(Fe),this.parseMatrixParams())}parseMatrixParams(){const Fe={};for(;this.consumeOptional(";");)this.parseParam(Fe);return Fe}parseParam(Fe){const we=ir(this.remaining);if(!we)return;this.capture(we);let Ot="";if(this.consumeOptional("=")){const xe=ir(this.remaining);xe&&(Ot=xe,this.capture(Ot))}Fe[Ut(we)]=Ut(Ot)}parseQueryParam(Fe){const we=function(Je){const Fe=Je.match(mr);return Fe?Fe[0]:""}(this.remaining);if(!we)return;this.capture(we);let Ot="";if(this.consumeOptional("=")){const Te=function(Je){const Fe=Je.match(Nr);return Fe?Fe[0]:""}(this.remaining);Te&&(Ot=Te,this.capture(Ot))}const xe=ot(we),ke=ot(Ot);if(Fe.hasOwnProperty(xe)){let Te=Fe[xe];Array.isArray(Te)||(Te=[Te],Fe[xe]=Te),Te.push(ke)}else Fe[xe]=ke}parseParens(Fe){const we={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const Ot=ir(this.remaining),xe=this.remaining[Ot.length];if("/"!==xe&&")"!==xe&&";"!==xe)throw new Error(`Cannot parse url '${this.url}'`);let ke;Ot.indexOf(":")>-1?(ke=Ot.substr(0,Ot.indexOf(":")),this.capture(ke),this.capture(":")):Fe&&(ke=Jt);const Te=this.parseChildren();we[ke]=1===Object.keys(Te).length?Te[Jt]:new Tt([],Te),this.consumeOptional("//")}return we}peekStartsWith(Fe){return this.remaining.startsWith(Fe)}consumeOptional(Fe){return!!this.peekStartsWith(Fe)&&(this.remaining=this.remaining.substring(Fe.length),!0)}capture(Fe){if(!this.consumeOptional(Fe))throw new Error(`Expected "${Fe}".`)}}class nr{constructor(Fe){this._root=Fe}get root(){return this._root.value}parent(Fe){const we=this.pathFromRoot(Fe);return we.length>1?we[we.length-2]:null}children(Fe){const we=Mr(Fe,this._root);return we?we.children.map(Ot=>Ot.value):[]}firstChild(Fe){const we=Mr(Fe,this._root);return we&&we.children.length>0?we.children[0].value:null}siblings(Fe){const we=yi(Fe,this._root);return we.length<2?[]:we[we.length-2].children.map(xe=>xe.value).filter(xe=>xe!==Fe)}pathFromRoot(Fe){return yi(Fe,this._root).map(we=>we.value)}}function Mr(Je,Fe){if(Je===Fe.value)return Fe;for(const we of Fe.children){const Ot=Mr(Je,we);if(Ot)return Ot}return null}function yi(Je,Fe){if(Je===Fe.value)return[Fe];for(const we of Fe.children){const Ot=yi(Je,we);if(Ot.length)return Ot.unshift(Fe),Ot}return[]}class Ii{constructor(Fe,we){this.value=Fe,this.children=we}toString(){return`TreeNode(${this.value})`}}function Mi(Je){const Fe={};return Je&&Je.children.forEach(we=>Fe[we.value.outlet]=we),Fe}class Oi extends nr{constructor(Fe,we){super(Fe),this.snapshot=we,Vt(this,Fe)}toString(){return this.snapshot.toString()}}function Kr(Je,Fe){const we=function(Je,Fe){const Te=new Ke([],{},{},"",{},Jt,Fe,null,Je.root,-1,{});return new Xe("",new Ii(Te,[]))}(Je,Fe),Ot=new _.X([new yn("",{})]),xe=new _.X({}),ke=new _.X({}),Te=new _.X({}),ge=new _.X(""),Re=new di(Ot,xe,Te,ge,ke,Jt,Fe,we.root);return Re.snapshot=we.root,new Oi(new Ii(Re,[]),we)}class di{constructor(Fe,we,Ot,xe,ke,Te,ge,Re){this.url=Fe,this.params=we,this.queryParams=Ot,this.fragment=xe,this.data=ke,this.outlet=Te,this.component=ge,this._futureSnapshot=Re}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,j.U)(Fe=>ln(Fe)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,j.U)(Fe=>ln(Fe)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function se(Je,Fe="emptyOnly"){const we=Je.pathFromRoot;let Ot=0;if("always"!==Fe)for(Ot=we.length-1;Ot>=1;){const xe=we[Ot],ke=we[Ot-1];if(xe.routeConfig&&""===xe.routeConfig.path)Ot--;else{if(ke.component)break;Ot--}}return function(Je){return Je.reduce((Fe,we)=>({params:Object.assign(Object.assign({},Fe.params),we.params),data:Object.assign(Object.assign({},Fe.data),we.data),resolve:Object.assign(Object.assign({},Fe.resolve),we._resolvedData)}),{params:{},data:{},resolve:{}})}(we.slice(Ot))}class Ke{constructor(Fe,we,Ot,xe,ke,Te,ge,Re,Be,xt,Dt){this.url=Fe,this.params=we,this.queryParams=Ot,this.fragment=xe,this.data=ke,this.outlet=Te,this.component=ge,this.routeConfig=Re,this._urlSegment=Be,this._lastPathIndex=xt,this._resolve=Dt}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=ln(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ln(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(Ot=>Ot.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Xe extends nr{constructor(Fe,we){super(we),this.url=Fe,Vt(this,we)}toString(){return Ct(this._root)}}function Vt(Je,Fe){Fe.value._routerState=Je,Fe.children.forEach(we=>Vt(Je,we))}function Ct(Je){const Fe=Je.children.length>0?` { ${Je.children.map(Ct).join(", ")} } `:"";return`${Je.value}${Fe}`}function rt(Je){if(Je.snapshot){const Fe=Je.snapshot,we=Je._futureSnapshot;Je.snapshot=we,Ht(Fe.queryParams,we.queryParams)||Je.queryParams.next(we.queryParams),Fe.fragment!==we.fragment&&Je.fragment.next(we.fragment),Ht(Fe.params,we.params)||Je.params.next(we.params),function(Je,Fe){if(Je.length!==Fe.length)return!1;for(let we=0;we<Je.length;++we)if(!Ht(Je[we],Fe[we]))return!1;return!0}(Fe.url,we.url)||Je.url.next(we.url),Ht(Fe.data,we.data)||Je.data.next(we.data)}else Je.snapshot=Je._futureSnapshot,Je.data.next(Je._futureSnapshot.data)}function bt(Je,Fe){return Ht(Je.params,Fe.params)&&function(Je,Fe){return jt(Je,Fe)&&Je.every((we,Ot)=>Ht(we.parameters,Fe[Ot].parameters))}(Je.url,Fe.url)&&!(!Je.parent!=!Fe.parent)&&(!Je.parent||bt(Je.parent,Fe.parent))}function $t(Je,Fe,we){if(we&&Je.shouldReuseRoute(Fe.value,we.value.snapshot)){const Ot=we.value;Ot._futureSnapshot=Fe.value;const xe=function(Je,Fe,we){return Fe.children.map(Ot=>{for(const xe of we.children)if(Je.shouldReuseRoute(Ot.value,xe.value.snapshot))return $t(Je,Ot,xe);return $t(Je,Ot)})}(Je,Fe,we);return new Ii(Ot,xe)}{if(Je.shouldAttach(Fe.value)){const ke=Je.retrieve(Fe.value);if(null!==ke){const Te=ke.route;return or(Fe,Te),Te}}const Ot=function(Je){return new di(new _.X(Je.url),new _.X(Je.params),new _.X(Je.queryParams),new _.X(Je.fragment),new _.X(Je.data),Je.outlet,Je.component,Je)}(Fe.value),xe=Fe.children.map(ke=>$t(Je,ke));return new Ii(Ot,xe)}}function or(Je,Fe){if(Je.value.routeConfig!==Fe.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(Je.children.length!==Fe.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");Fe.value._futureSnapshot=Je.value;for(let we=0;we<Je.children.length;++we)or(Je.children[we],Fe.children[we])}function ai(Je){return"object"==typeof Je&&null!=Je&&!Je.outlets&&!Je.segmentPath}function Dr(Je){return"object"==typeof Je&&null!=Je&&Je.outlets}function Qr(Je,Fe,we,Ot,xe){let ke={};return Ot&&dn(Ot,(Te,ge)=>{ke[ge]=Array.isArray(Te)?Te.map(Re=>`${Re}`):`${Te}`}),new mt(we.root===Je?Fe:rn(we.root,Je,Fe),ke,xe)}function rn(Je,Fe,we){const Ot={};return dn(Je.children,(xe,ke)=>{Ot[ke]=xe===Fe?we:rn(xe,Fe,we)}),new Tt(Je.segments,Ot)}class fi{constructor(Fe,we,Ot){if(this.isAbsolute=Fe,this.numberOfDoubleDots=we,this.commands=Ot,Fe&&Ot.length>0&&ai(Ot[0]))throw new Error("Root segment cannot have matrix parameters");const xe=Ot.find(Dr);if(xe&&xe!==Cn(Ot))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class wi{constructor(Fe,we,Ot){this.segmentGroup=Fe,this.processChildren=we,this.index=Ot}}function Ji(Je,Fe,we){if(Je||(Je=new Tt([],{})),0===Je.segments.length&&Je.hasChildren())return qi(Je,Fe,we);const Ot=function(Je,Fe,we){let Ot=0,xe=Fe;const ke={match:!1,pathIndex:0,commandIndex:0};for(;xe<Je.segments.length;){if(Ot>=we.length)return ke;const Te=Je.segments[xe],ge=we[Ot];if(Dr(ge))break;const Re=`${ge}`,Be=Ot<we.length-1?we[Ot+1]:null;if(xe>0&&void 0===Re)break;if(Re&&Be&&"object"==typeof Be&&void 0===Be.outlets){if(!Bo(Re,Be,Te))return ke;Ot+=2}else{if(!Bo(Re,{},Te))return ke;Ot++}xe++}return{match:!0,pathIndex:xe,commandIndex:Ot}}(Je,Fe,we),xe=we.slice(Ot.commandIndex);if(Ot.match&&Ot.pathIndex<Je.segments.length){const ke=new Tt(Je.segments.slice(0,Ot.pathIndex),{});return ke.children[Jt]=new Tt(Je.segments.slice(Ot.pathIndex),Je.children),qi(ke,0,xe)}return Ot.match&&0===xe.length?new Tt(Je.segments,{}):Ot.match&&!Je.hasChildren()?zi(Je,Fe,we):Ot.match?qi(Je,0,xe):zi(Je,Fe,we)}function qi(Je,Fe,we){if(0===we.length)return new Tt(Je.segments,{});{const Ot=function(Je){return Dr(Je[0])?Je[0].outlets:{[Jt]:Je}}(we),xe={};return dn(Ot,(ke,Te)=>{"string"==typeof ke&&(ke=[ke]),null!==ke&&(xe[Te]=Ji(Je.children[Te],Fe,ke))}),dn(Je.children,(ke,Te)=>{void 0===Ot[Te]&&(xe[Te]=ke)}),new Tt(Je.segments,xe)}}function zi(Je,Fe,we){const Ot=Je.segments.slice(0,Fe);let xe=0;for(;xe<we.length;){const ke=we[xe];if(Dr(ke)){const Re=Go(ke.outlets);return new Tt(Ot,Re)}if(0===xe&&ai(we[0])){Ot.push(new yn(Je.segments[Fe].path,Ro(we[0]))),xe++;continue}const Te=Dr(ke)?ke.outlets[Jt]:`${ke}`,ge=xe<we.length-1?we[xe+1]:null;Te&&ge&&ai(ge)?(Ot.push(new yn(Te,Ro(ge))),xe+=2):(Ot.push(new yn(Te,{})),xe++)}return new Tt(Ot,{})}function Go(Je){const Fe={};return dn(Je,(we,Ot)=>{"string"==typeof we&&(we=[we]),null!==we&&(Fe[Ot]=zi(new Tt([],{}),0,we))}),Fe}function Ro(Je){const Fe={};return dn(Je,(we,Ot)=>Fe[Ot]=`${we}`),Fe}function Bo(Je,Fe,we){return Je==we.path&&Ht(Fe,we.parameters)}class es{constructor(Fe,we,Ot,xe){this.routeReuseStrategy=Fe,this.futureState=we,this.currState=Ot,this.forwardEvent=xe}activate(Fe){const we=this.futureState._root,Ot=this.currState?this.currState._root:null;this.deactivateChildRoutes(we,Ot,Fe),rt(this.futureState.root),this.activateChildRoutes(we,Ot,Fe)}deactivateChildRoutes(Fe,we,Ot){const xe=Mi(we);Fe.children.forEach(ke=>{const Te=ke.value.outlet;this.deactivateRoutes(ke,xe[Te],Ot),delete xe[Te]}),dn(xe,(ke,Te)=>{this.deactivateRouteAndItsChildren(ke,Ot)})}deactivateRoutes(Fe,we,Ot){const xe=Fe.value,ke=we?we.value:null;if(xe===ke)if(xe.component){const Te=Ot.getContext(xe.outlet);Te&&this.deactivateChildRoutes(Fe,we,Te.children)}else this.deactivateChildRoutes(Fe,we,Ot);else ke&&this.deactivateRouteAndItsChildren(we,Ot)}deactivateRouteAndItsChildren(Fe,we){this.routeReuseStrategy.shouldDetach(Fe.value.snapshot)?this.detachAndStoreRouteSubtree(Fe,we):this.deactivateRouteAndOutlet(Fe,we)}detachAndStoreRouteSubtree(Fe,we){const Ot=we.getContext(Fe.value.outlet);if(Ot&&Ot.outlet){const xe=Ot.outlet.detach(),ke=Ot.children.onOutletDeactivated();this.routeReuseStrategy.store(Fe.value.snapshot,{componentRef:xe,route:Fe,contexts:ke})}}deactivateRouteAndOutlet(Fe,we){const Ot=we.getContext(Fe.value.outlet),xe=Ot&&Fe.value.component?Ot.children:we,ke=Mi(Fe);for(const Te of Object.keys(ke))this.deactivateRouteAndItsChildren(ke[Te],xe);Ot&&Ot.outlet&&(Ot.outlet.deactivate(),Ot.children.onOutletDeactivated(),Ot.attachRef=null,Ot.resolver=null,Ot.route=null)}activateChildRoutes(Fe,we,Ot){const xe=Mi(we);Fe.children.forEach(ke=>{this.activateRoutes(ke,xe[ke.value.outlet],Ot),this.forwardEvent(new Ie(ke.value.snapshot))}),Fe.children.length&&this.forwardEvent(new It(Fe.value.snapshot))}activateRoutes(Fe,we,Ot){const xe=Fe.value,ke=we?we.value:null;if(rt(xe),xe===ke)if(xe.component){const Te=Ot.getOrCreateContext(xe.outlet);this.activateChildRoutes(Fe,we,Te.children)}else this.activateChildRoutes(Fe,we,Ot);else if(xe.component){const Te=Ot.getOrCreateContext(xe.outlet);if(this.routeReuseStrategy.shouldAttach(xe.snapshot)){const ge=this.routeReuseStrategy.retrieve(xe.snapshot);this.routeReuseStrategy.store(xe.snapshot,null),Te.children.onOutletReAttached(ge.contexts),Te.attachRef=ge.componentRef,Te.route=ge.route.value,Te.outlet&&Te.outlet.attach(ge.componentRef,ge.route.value),ua(ge.route)}else{const ge=function(Je){for(let Fe=Je.parent;Fe;Fe=Fe.parent){const we=Fe.routeConfig;if(we&&we._loadedConfig)return we._loadedConfig;if(we&&we.component)return null}return null}(xe.snapshot),Re=ge?ge.module.componentFactoryResolver:null;Te.attachRef=null,Te.route=xe,Te.resolver=Re,Te.outlet&&Te.outlet.activateWith(xe,Re),this.activateChildRoutes(Fe,null,Te.children)}}else this.activateChildRoutes(Fe,null,Ot)}}function ua(Je){rt(Je.value),Je.children.forEach(ua)}class zo{constructor(Fe,we){this.routes=Fe,this.module=we}}function oa(Je){return"function"==typeof Je}function st(Je){return Je instanceof mt}const Tn=Symbol("INITIAL_VALUE");function $r(){return(0,H.w)(Je=>(0,m.aj)(Je.map(Fe=>Fe.pipe((0,z.q)(1),(0,U.O)(Tn)))).pipe((0,M.R)((Fe,we)=>{let Ot=!1;return we.reduce((xe,ke,Te)=>xe!==Tn?xe:(ke===Tn&&(Ot=!0),Ot||!1!==ke&&Te!==we.length-1&&!st(ke)?xe:ke),Fe)},Tn),(0,I.h)(Fe=>Fe!==Tn),(0,j.U)(Fe=>st(Fe)?Fe:!0===Fe),(0,z.q)(1)))}let ni=(()=>{class Je{}return Je.\u0275fac=function(we){return new(we||Je)},Je.\u0275cmp=e.Xpm({type:Je,selectors:[["ng-component"]],decls:1,vars:0,template:function(we,Ot){1&we&&e._UZ(0,"router-outlet")},directives:function(){return[li]},encapsulation:2}),Je})();function Ri(Je,Fe=""){for(let we=0;we<Je.length;we++){const Ot=Je[we];Do(Ot,gi(Fe,Ot))}}function Do(Je,Fe){Je.children&&Ri(Je.children,Fe)}function gi(Je,Fe){return Fe?Je||Fe.path?Je&&!Fe.path?`${Je}/`:!Je&&Fe.path?Fe.path:`${Je}/${Fe.path}`:"":Je}function Hi(Je){const Fe=Je.children&&Je.children.map(Hi),we=Fe?Object.assign(Object.assign({},Je),{children:Fe}):Object.assign({},Je);return!we.component&&(Fe||we.loadChildren)&&we.outlet&&we.outlet!==Jt&&(we.component=ni),we}function Li(Je){return Je.outlet||Jt}function cs(Je,Fe){const we=Je.filter(Ot=>Li(Ot)===Fe);return we.push(...Je.filter(Ot=>Li(Ot)!==Fe)),we}const Os={matched:!1,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};function da(Je,Fe,we){var Ot;if(""===Fe.path)return"full"===Fe.pathMatch&&(Je.hasChildren()||we.length>0)?Object.assign({},Os):{matched:!0,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};const ke=(Fe.matcher||er)(we,Je,Fe);if(!ke)return Object.assign({},Os);const Te={};dn(ke.posParams,(Re,Be)=>{Te[Be]=Re.path});const ge=ke.consumed.length>0?Object.assign(Object.assign({},Te),ke.consumed[ke.consumed.length-1].parameters):Te;return{matched:!0,consumedSegments:ke.consumed,lastChild:ke.consumed.length,parameters:ge,positionalParamSegments:null!==(Ot=ke.posParams)&&void 0!==Ot?Ot:{}}}function xa(Je,Fe,we,Ot,xe="corrected"){if(we.length>0&&function(Je,Fe,we){return we.some(Ot=>sa(Je,Fe,Ot)&&Li(Ot)!==Jt)}(Je,we,Ot)){const Te=new Tt(Fe,function(Je,Fe,we,Ot){const xe={};xe[Jt]=Ot,Ot._sourceSegment=Je,Ot._segmentIndexShift=Fe.length;for(const ke of we)if(""===ke.path&&Li(ke)!==Jt){const Te=new Tt([],{});Te._sourceSegment=Je,Te._segmentIndexShift=Fe.length,xe[Li(ke)]=Te}return xe}(Je,Fe,Ot,new Tt(we,Je.children)));return Te._sourceSegment=Je,Te._segmentIndexShift=Fe.length,{segmentGroup:Te,slicedSegments:[]}}if(0===we.length&&function(Je,Fe,we){return we.some(Ot=>sa(Je,Fe,Ot))}(Je,we,Ot)){const Te=new Tt(Je.segments,function(Je,Fe,we,Ot,xe,ke){const Te={};for(const ge of Ot)if(sa(Je,we,ge)&&!xe[Li(ge)]){const Re=new Tt([],{});Re._sourceSegment=Je,Re._segmentIndexShift="legacy"===ke?Je.segments.length:Fe.length,Te[Li(ge)]=Re}return Object.assign(Object.assign({},xe),Te)}(Je,Fe,we,Ot,Je.children,xe));return Te._sourceSegment=Je,Te._segmentIndexShift=Fe.length,{segmentGroup:Te,slicedSegments:we}}const ke=new Tt(Je.segments,Je.children);return ke._sourceSegment=Je,ke._segmentIndexShift=Fe.length,{segmentGroup:ke,slicedSegments:we}}function sa(Je,Fe,we){return(!(Je.hasChildren()||Fe.length>0)||"full"!==we.pathMatch)&&""===we.path}function Fo(Je,Fe,we,Ot){return!!(Li(Je)===Ot||Ot!==Jt&&sa(Fe,we,Je))&&("**"===Je.path||da(Fe,Je,we).matched)}function Ka(Je,Fe,we){return 0===Fe.length&&!Je.children[we]}class Sa{constructor(Fe){this.segmentGroup=Fe||null}}class fa{constructor(Fe){this.urlTree=Fe}}function ks(Je){return new s.y(Fe=>Fe.error(new Sa(Je)))}function Ua(Je){return new s.y(Fe=>Fe.error(new fa(Je)))}function pt(Je){return new s.y(Fe=>Fe.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${Je}'`)))}class Ce{constructor(Fe,we,Ot,xe,ke){this.configLoader=we,this.urlSerializer=Ot,this.urlTree=xe,this.config=ke,this.allowRedirects=!0,this.ngModule=Fe.get(e.h0i)}apply(){const Fe=xa(this.urlTree.root,[],[],this.config).segmentGroup,we=new Tt(Fe.segments,Fe.children);return this.expandSegmentGroup(this.ngModule,this.config,we,Jt).pipe((0,j.U)(ke=>this.createUrlTree(Ne(ke),this.urlTree.queryParams,this.urlTree.fragment))).pipe((0,J.K)(ke=>{if(ke instanceof fa)return this.allowRedirects=!1,this.match(ke.urlTree);throw ke instanceof Sa?this.noMatchError(ke):ke}))}match(Fe){return this.expandSegmentGroup(this.ngModule,this.config,Fe.root,Jt).pipe((0,j.U)(xe=>this.createUrlTree(Ne(xe),Fe.queryParams,Fe.fragment))).pipe((0,J.K)(xe=>{throw xe instanceof Sa?this.noMatchError(xe):xe}))}noMatchError(Fe){return new Error(`Cannot match any routes. URL Segment: '${Fe.segmentGroup}'`)}createUrlTree(Fe,we,Ot){const xe=Fe.segments.length>0?new Tt([],{[Jt]:Fe}):Fe;return new mt(xe,we,Ot)}expandSegmentGroup(Fe,we,Ot,xe){return 0===Ot.segments.length&&Ot.hasChildren()?this.expandChildren(Fe,we,Ot).pipe((0,j.U)(ke=>new Tt([],ke))):this.expandSegment(Fe,Ot,we,Ot.segments,xe,!0)}expandChildren(Fe,we,Ot){const xe=[];for(const ke of Object.keys(Ot.children))"primary"===ke?xe.unshift(ke):xe.push(ke);return(0,a.D)(xe).pipe((0,Y.b)(ke=>{const Te=Ot.children[ke],ge=cs(we,ke);return this.expandSegmentGroup(Fe,ge,Te,ke).pipe((0,j.U)(Re=>({segment:Re,outlet:ke})))}),(0,M.R)((ke,Te)=>(ke[Te.outlet]=Te.segment,ke),{}),(0,ie.Z)())}expandSegment(Fe,we,Ot,xe,ke,Te){return(0,a.D)(Ot).pipe((0,Y.b)(ge=>this.expandSegmentAgainstRoute(Fe,we,Ot,ge,xe,ke,Te).pipe((0,J.K)(Be=>{if(Be instanceof Sa)return(0,h.of)(null);throw Be}))),(0,oe.P)(ge=>!!ge),(0,J.K)((ge,Re)=>{if(ge instanceof b.K||"EmptyError"===ge.name){if(Ka(we,xe,ke))return(0,h.of)(new Tt([],{}));throw new Sa(we)}throw ge}))}expandSegmentAgainstRoute(Fe,we,Ot,xe,ke,Te,ge){return Fo(xe,we,ke,Te)?void 0===xe.redirectTo?this.matchSegmentAgainstRoute(Fe,we,xe,ke,Te):ge&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(Fe,we,Ot,xe,ke,Te):ks(we):ks(we)}expandSegmentAgainstRouteUsingRedirect(Fe,we,Ot,xe,ke,Te){return"**"===xe.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(Fe,Ot,xe,Te):this.expandRegularSegmentAgainstRouteUsingRedirect(Fe,we,Ot,xe,ke,Te)}expandWildCardWithParamsAgainstRouteUsingRedirect(Fe,we,Ot,xe){const ke=this.applyRedirectCommands([],Ot.redirectTo,{});return Ot.redirectTo.startsWith("/")?Ua(ke):this.lineralizeSegments(Ot,ke).pipe((0,fe.zg)(Te=>{const ge=new Tt(Te,{});return this.expandSegment(Fe,ge,we,Te,xe,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(Fe,we,Ot,xe,ke,Te){const{matched:ge,consumedSegments:Re,lastChild:Be,positionalParamSegments:xt}=da(we,xe,ke);if(!ge)return ks(we);const Dt=this.applyRedirectCommands(Re,xe.redirectTo,xt);return xe.redirectTo.startsWith("/")?Ua(Dt):this.lineralizeSegments(xe,Dt).pipe((0,fe.zg)(en=>this.expandSegment(Fe,we,Ot,en.concat(ke.slice(Be)),Te,!1)))}matchSegmentAgainstRoute(Fe,we,Ot,xe,ke){if("**"===Ot.path)return Ot.loadChildren?(Ot._loadedConfig?(0,h.of)(Ot._loadedConfig):this.configLoader.load(Fe.injector,Ot)).pipe((0,j.U)(en=>(Ot._loadedConfig=en,new Tt(xe,{})))):(0,h.of)(new Tt(xe,{}));const{matched:Te,consumedSegments:ge,lastChild:Re}=da(we,Ot,xe);if(!Te)return ks(we);const Be=xe.slice(Re);return this.getChildConfig(Fe,Ot,xe).pipe((0,fe.zg)(Dt=>{const en=Dt.module,vn=Dt.routes,{segmentGroup:Gn,slicedSegments:kn}=xa(we,ge,Be,vn),zn=new Tt(Gn.segments,Gn.children);if(0===kn.length&&zn.hasChildren())return this.expandChildren(en,vn,zn).pipe((0,j.U)(ci=>new Tt(ge,ci)));if(0===vn.length&&0===kn.length)return(0,h.of)(new Tt(ge,{}));const jr=Li(Ot)===ke;return this.expandSegment(en,zn,vn,kn,jr?Jt:ke,!0).pipe((0,j.U)(Gr=>new Tt(ge.concat(Gr.segments),Gr.children)))}))}getChildConfig(Fe,we,Ot){return we.children?(0,h.of)(new zo(we.children,Fe)):we.loadChildren?void 0!==we._loadedConfig?(0,h.of)(we._loadedConfig):this.runCanLoadGuards(Fe.injector,we,Ot).pipe((0,fe.zg)(xe=>{return xe?this.configLoader.load(Fe.injector,we).pipe((0,j.U)(ke=>(we._loadedConfig=ke,ke))):(Je=we,new s.y(Fe=>Fe.error(Ln(`Cannot load children because the guard of the route "path: '${Je.path}'" returned false`))));var Je})):(0,h.of)(new zo([],Fe))}runCanLoadGuards(Fe,we,Ot){const xe=we.canLoad;if(!xe||0===xe.length)return(0,h.of)(!0);const ke=xe.map(Te=>{const ge=Fe.get(Te);let Re;if((Je=ge)&&oa(Je.canLoad))Re=ge.canLoad(we,Ot);else{if(!oa(ge))throw new Error("Invalid CanLoad guard");Re=ge(we,Ot)}var Je;return Kn(Re)});return(0,h.of)(ke).pipe($r(),(0,ne.b)(Te=>{if(!st(Te))return;const ge=Ln(`Redirecting to "${this.urlSerializer.serialize(Te)}"`);throw ge.url=Te,ge}),(0,j.U)(Te=>!0===Te))}lineralizeSegments(Fe,we){let Ot=[],xe=we.root;for(;;){if(Ot=Ot.concat(xe.segments),0===xe.numberOfChildren)return(0,h.of)(Ot);if(xe.numberOfChildren>1||!xe.children[Jt])return pt(Fe.redirectTo);xe=xe.children[Jt]}}applyRedirectCommands(Fe,we,Ot){return this.applyRedirectCreatreUrlTree(we,this.urlSerializer.parse(we),Fe,Ot)}applyRedirectCreatreUrlTree(Fe,we,Ot,xe){const ke=this.createSegmentGroup(Fe,we.root,Ot,xe);return new mt(ke,this.createQueryParams(we.queryParams,this.urlTree.queryParams),we.fragment)}createQueryParams(Fe,we){const Ot={};return dn(Fe,(xe,ke)=>{if("string"==typeof xe&&xe.startsWith(":")){const ge=xe.substring(1);Ot[ke]=we[ge]}else Ot[ke]=xe}),Ot}createSegmentGroup(Fe,we,Ot,xe){const ke=this.createSegments(Fe,we.segments,Ot,xe);let Te={};return dn(we.children,(ge,Re)=>{Te[Re]=this.createSegmentGroup(Fe,ge,Ot,xe)}),new Tt(ke,Te)}createSegments(Fe,we,Ot,xe){return we.map(ke=>ke.path.startsWith(":")?this.findPosParam(Fe,ke,xe):this.findOrReturn(ke,Ot))}findPosParam(Fe,we,Ot){const xe=Ot[we.path.substring(1)];if(!xe)throw new Error(`Cannot redirect to '${Fe}'. Cannot find '${we.path}'.`);return xe}findOrReturn(Fe,we){let Ot=0;for(const xe of we){if(xe.path===Fe.path)return we.splice(Ot),xe;Ot++}return Fe}}function Ne(Je){const Fe={};for(const Ot of Object.keys(Je.children)){const ke=Ne(Je.children[Ot]);(ke.segments.length>0||ke.hasChildren())&&(Fe[Ot]=ke)}return function(Je){if(1===Je.numberOfChildren&&Je.children[Jt]){const Fe=Je.children[Jt];return new Tt(Je.segments.concat(Fe.segments),Fe.children)}return Je}(new Tt(Je.segments,Fe))}class Or{constructor(Fe){this.path=Fe,this.route=this.path[this.path.length-1]}}class Ni{constructor(Fe,we){this.component=Fe,this.route=we}}function Yo(Je,Fe,we){const Ot=Je._root;return Zo(Ot,Fe?Fe._root:null,we,[Ot.value])}function ss(Je,Fe,we){const Ot=function(Je){if(!Je)return null;for(let Fe=Je.parent;Fe;Fe=Fe.parent){const we=Fe.routeConfig;if(we&&we._loadedConfig)return we._loadedConfig}return null}(Fe);return(Ot?Ot.module.injector:we).get(Je)}function Zo(Je,Fe,we,Ot,xe={canDeactivateChecks:[],canActivateChecks:[]}){const ke=Mi(Fe);return Je.children.forEach(Te=>{(function(Je,Fe,we,Ot,xe={canDeactivateChecks:[],canActivateChecks:[]}){const ke=Je.value,Te=Fe?Fe.value:null,ge=we?we.getContext(Je.value.outlet):null;if(Te&&ke.routeConfig===Te.routeConfig){const Re=function(Je,Fe,we){if("function"==typeof we)return we(Je,Fe);switch(we){case"pathParamsChange":return!jt(Je.url,Fe.url);case"pathParamsOrQueryParamsChange":return!jt(Je.url,Fe.url)||!Ht(Je.queryParams,Fe.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!bt(Je,Fe)||!Ht(Je.queryParams,Fe.queryParams);case"paramsChange":default:return!bt(Je,Fe)}}(Te,ke,ke.routeConfig.runGuardsAndResolvers);Re?xe.canActivateChecks.push(new Or(Ot)):(ke.data=Te.data,ke._resolvedData=Te._resolvedData),Zo(Je,Fe,ke.component?ge?ge.children:null:we,Ot,xe),Re&&ge&&ge.outlet&&ge.outlet.isActivated&&xe.canDeactivateChecks.push(new Ni(ge.outlet.component,Te))}else Te&&Ma(Fe,ge,xe),xe.canActivateChecks.push(new Or(Ot)),Zo(Je,null,ke.component?ge?ge.children:null:we,Ot,xe)})(Te,ke[Te.value.outlet],we,Ot.concat([Te.value]),xe),delete ke[Te.value.outlet]}),dn(ke,(Te,ge)=>Ma(Te,we.getContext(ge),xe)),xe}function Ma(Je,Fe,we){const Ot=Mi(Je),xe=Je.value;dn(Ot,(ke,Te)=>{Ma(ke,xe.component?Fe?Fe.children.getContext(Te):null:Fe,we)}),we.canDeactivateChecks.push(new Ni(xe.component&&Fe&&Fe.outlet&&Fe.outlet.isActivated?Fe.outlet.component:null,xe))}class Bl{}function Na(Je){return new s.y(Fe=>Fe.error(Je))}class vs{constructor(Fe,we,Ot,xe,ke,Te){this.rootComponentType=Fe,this.config=we,this.urlTree=Ot,this.url=xe,this.paramsInheritanceStrategy=ke,this.relativeLinkResolution=Te}recognize(){const Fe=xa(this.urlTree.root,[],[],this.config.filter(Te=>void 0===Te.redirectTo),this.relativeLinkResolution).segmentGroup,we=this.processSegmentGroup(this.config,Fe,Jt);if(null===we)return null;const Ot=new Ke([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},Jt,this.rootComponentType,null,this.urlTree.root,-1,{}),xe=new Ii(Ot,we),ke=new Xe(this.url,xe);return this.inheritParamsAndData(ke._root),ke}inheritParamsAndData(Fe){const we=Fe.value,Ot=se(we,this.paramsInheritanceStrategy);we.params=Object.freeze(Ot.params),we.data=Object.freeze(Ot.data),Fe.children.forEach(xe=>this.inheritParamsAndData(xe))}processSegmentGroup(Fe,we,Ot){return 0===we.segments.length&&we.hasChildren()?this.processChildren(Fe,we):this.processSegment(Fe,we,we.segments,Ot)}processChildren(Fe,we){const Ot=[];for(const ke of Object.keys(we.children)){const Te=we.children[ke],ge=cs(Fe,ke),Re=this.processSegmentGroup(ge,Te,ke);if(null===Re)return null;Ot.push(...Re)}const xe=hs(Ot);return xe.sort((Fe,we)=>Fe.value.outlet===Jt?-1:we.value.outlet===Jt?1:Fe.value.outlet.localeCompare(we.value.outlet)),xe}processSegment(Fe,we,Ot,xe){for(const ke of Fe){const Te=this.processSegmentAgainstRoute(ke,we,Ot,xe);if(null!==Te)return Te}return Ka(we,Ot,xe)?[]:null}processSegmentAgainstRoute(Fe,we,Ot,xe){if(Fe.redirectTo||!Fo(Fe,we,Ot,xe))return null;let ke,Te=[],ge=[];if("**"===Fe.path){const vn=Ot.length>0?Cn(Ot).parameters:{};ke=new Ke(Ot,vn,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,tn(Fe),Li(Fe),Fe.component,Fe,wt(we),kt(we)+Ot.length,ur(Fe))}else{const vn=da(we,Fe,Ot);if(!vn.matched)return null;Te=vn.consumedSegments,ge=Ot.slice(vn.lastChild),ke=new Ke(Te,vn.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,tn(Fe),Li(Fe),Fe.component,Fe,wt(we),kt(we)+Te.length,ur(Fe))}const Re=(Je=Fe).children?Je.children:Je.loadChildren?Je._loadedConfig.routes:[],{segmentGroup:Be,slicedSegments:xt}=xa(we,Te,ge,Re.filter(vn=>void 0===vn.redirectTo),this.relativeLinkResolution);var Je;if(0===xt.length&&Be.hasChildren()){const vn=this.processChildren(Re,Be);return null===vn?null:[new Ii(ke,vn)]}if(0===Re.length&&0===xt.length)return[new Ii(ke,[])];const Dt=Li(Fe)===xe,en=this.processSegment(Re,Be,xt,Dt?Jt:xe);return null===en?null:[new Ii(ke,en)]}}function ja(Je){const Fe=Je.value.routeConfig;return Fe&&""===Fe.path&&void 0===Fe.redirectTo}function hs(Je){const Fe=[],we=new Set;for(const Ot of Je){if(!ja(Ot)){Fe.push(Ot);continue}const xe=Fe.find(ke=>Ot.value.routeConfig===ke.value.routeConfig);void 0!==xe?(xe.children.push(...Ot.children),we.add(xe)):Fe.push(Ot)}for(const Ot of we){const xe=hs(Ot.children);Fe.push(new Ii(Ot.value,xe))}return Fe.filter(Ot=>!we.has(Ot))}function wt(Je){let Fe=Je;for(;Fe._sourceSegment;)Fe=Fe._sourceSegment;return Fe}function kt(Je){let Fe=Je,we=Fe._segmentIndexShift?Fe._segmentIndexShift:0;for(;Fe._sourceSegment;)Fe=Fe._sourceSegment,we+=Fe._segmentIndexShift?Fe._segmentIndexShift:0;return we-1}function tn(Je){return Je.data||{}}function ur(Je){return Je.resolve||{}}function ii(Je){return(0,H.w)(Fe=>{const we=Je(Fe);return we?(0,a.D)(we).pipe((0,j.U)(()=>Fe)):(0,h.of)(Fe)})}class Ui extends class{shouldDetach(Fe){return!1}store(Fe,we){}shouldAttach(Fe){return!1}retrieve(Fe){return null}shouldReuseRoute(Fe,we){return Fe.routeConfig===we.routeConfig}}{}const io=new e.OlP("ROUTES");class vo{constructor(Fe,we,Ot,xe){this.loader=Fe,this.compiler=we,this.onLoadStartListener=Ot,this.onLoadEndListener=xe}load(Fe,we){if(we._loader$)return we._loader$;this.onLoadStartListener&&this.onLoadStartListener(we);const xe=this.loadModuleFactory(we.loadChildren).pipe((0,j.U)(ke=>{this.onLoadEndListener&&this.onLoadEndListener(we);const Te=ke.create(Fe);return new zo(Yn(Te.injector.get(io,void 0,e.XFs.Self|e.XFs.Optional)).map(Hi),Te)}),(0,J.K)(ke=>{throw we._loader$=void 0,ke}));return we._loader$=new D.c(xe,()=>new x.xQ).pipe((0,ce.x)()),we._loader$}loadModuleFactory(Fe){return"string"==typeof Fe?(0,a.D)(this.loader.load(Fe)):Kn(Fe()).pipe((0,fe.zg)(we=>we instanceof e.YKP?(0,h.of)(we):(0,a.D)(this.compiler.compileModuleAsync(we))))}}class Bi{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new hi,this.attachRef=null}}class hi{constructor(){this.contexts=new Map}onChildOutletCreated(Fe,we){const Ot=this.getOrCreateContext(Fe);Ot.outlet=we,this.contexts.set(Fe,Ot)}onChildOutletDestroyed(Fe){const we=this.getContext(Fe);we&&(we.outlet=null,we.attachRef=null)}onOutletDeactivated(){const Fe=this.contexts;return this.contexts=new Map,Fe}onOutletReAttached(Fe){this.contexts=Fe}getOrCreateContext(Fe){let we=this.getContext(Fe);return we||(we=new Bi,this.contexts.set(Fe,we)),we}getContext(Fe){return this.contexts.get(Fe)||null}}class G{shouldProcessUrl(Fe){return!0}extract(Fe){return Fe}merge(Fe,we){return Fe}}function Se(Je){throw Je}function ft(Je,Fe,we){return Fe.parse("/")}function Ft(Je,Fe){return(0,h.of)(null)}const Bt={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},In={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Xn=(()=>{class Je{constructor(we,Ot,xe,ke,Te,ge,Re,Be){this.rootComponentType=we,this.urlSerializer=Ot,this.rootContexts=xe,this.location=ke,this.config=Be,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.disposed=!1,this.lastLocationChangeInfo=null,this.navigationId=0,this.currentPageId=0,this.isNgZoneEnabled=!1,this.events=new x.xQ,this.errorHandler=Se,this.malformedUriErrorHandler=ft,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:Ft,afterPreactivation:Ft},this.urlHandlingStrategy=new G,this.routeReuseStrategy=new Ui,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="corrected",this.canceledNavigationResolution="replace",this.ngModule=Te.get(e.h0i),this.console=Te.get(e.c2e);const en=Te.get(e.R0b);this.isNgZoneEnabled=en instanceof e.R0b&&e.R0b.isInAngularZone(),this.resetConfig(Be),this.currentUrlTree=new mt(new Tt([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new vo(ge,Re,vn=>this.triggerEvent(new St(vn)),vn=>this.triggerEvent(new At(vn))),this.routerState=Kr(this.currentUrlTree,this.rootComponentType),this.transitions=new _.X({id:0,targetPageId:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}get browserPageId(){var we;return null===(we=this.location.getState())||void 0===we?void 0:we.\u0275routerPageId}setupNavigations(we){const Ot=this.events;return we.pipe((0,I.h)(xe=>0!==xe.id),(0,j.U)(xe=>Object.assign(Object.assign({},xe),{extractedUrl:this.urlHandlingStrategy.extract(xe.rawUrl)})),(0,H.w)(xe=>{let ke=!1,Te=!1;return(0,h.of)(xe).pipe((0,ne.b)(ge=>{this.currentNavigation={id:ge.id,initialUrl:ge.currentRawUrl,extractedUrl:ge.extractedUrl,trigger:ge.source,extras:ge.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign(Object.assign({},this.lastSuccessfulNavigation),{previousNavigation:null}):null}}),(0,H.w)(ge=>{const Re=this.browserUrlTree.toString(),Be=!this.navigated||ge.extractedUrl.toString()!==Re||Re!==this.currentUrlTree.toString();if(("reload"===this.onSameUrlNavigation||Be)&&this.urlHandlingStrategy.shouldProcessUrl(ge.rawUrl))return pi(ge.source)&&(this.browserUrlTree=ge.extractedUrl),(0,h.of)(ge).pipe((0,H.w)(Dt=>{const en=this.transitions.getValue();return Ot.next(new be(Dt.id,this.serializeUrl(Dt.extractedUrl),Dt.source,Dt.restoredState)),en!==this.transitions.getValue()?l.E:Promise.resolve(Dt)}),function(Je,Fe,we,Ot){return(0,H.w)(xe=>function(Je,Fe,we,Ot,xe){return new Ce(Je,Fe,we,Ot,xe).apply()}(Je,Fe,we,xe.extractedUrl,Ot).pipe((0,j.U)(ke=>Object.assign(Object.assign({},xe),{urlAfterRedirects:ke}))))}(this.ngModule.injector,this.configLoader,this.urlSerializer,this.config),(0,ne.b)(Dt=>{this.currentNavigation=Object.assign(Object.assign({},this.currentNavigation),{finalUrl:Dt.urlAfterRedirects})}),function(Je,Fe,we,Ot,xe){return(0,fe.zg)(ke=>function(Je,Fe,we,Ot,xe="emptyOnly",ke="legacy"){try{const Te=new vs(Je,Fe,we,Ot,xe,ke).recognize();return null===Te?Na(new Bl):(0,h.of)(Te)}catch(Te){return Na(Te)}}(Je,Fe,ke.urlAfterRedirects,we(ke.urlAfterRedirects),Ot,xe).pipe((0,j.U)(Te=>Object.assign(Object.assign({},ke),{targetSnapshot:Te}))))}(this.rootComponentType,this.config,Dt=>this.serializeUrl(Dt),this.paramsInheritanceStrategy,this.relativeLinkResolution),(0,ne.b)(Dt=>{"eager"===this.urlUpdateStrategy&&(Dt.extras.skipLocationChange||this.setBrowserUrl(Dt.urlAfterRedirects,Dt),this.browserUrlTree=Dt.urlAfterRedirects);const en=new F(Dt.id,this.serializeUrl(Dt.extractedUrl),this.serializeUrl(Dt.urlAfterRedirects),Dt.targetSnapshot);Ot.next(en)}));if(Be&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:en,extractedUrl:vn,source:Gn,restoredState:kn,extras:zn}=ge,jr=new be(en,this.serializeUrl(vn),Gn,kn);Ot.next(jr);const kr=Kr(vn,this.rootComponentType).snapshot;return(0,h.of)(Object.assign(Object.assign({},ge),{targetSnapshot:kr,urlAfterRedirects:vn,extras:Object.assign(Object.assign({},zn),{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=ge.rawUrl,this.browserUrlTree=ge.urlAfterRedirects,ge.resolve(null),l.E}),ii(ge=>{const{targetSnapshot:Re,id:Be,extractedUrl:xt,rawUrl:Dt,extras:{skipLocationChange:en,replaceUrl:vn}}=ge;return this.hooks.beforePreactivation(Re,{navigationId:Be,appliedUrlTree:xt,rawUrlTree:Dt,skipLocationChange:!!en,replaceUrl:!!vn})}),(0,ne.b)(ge=>{const Re=new je(ge.id,this.serializeUrl(ge.extractedUrl),this.serializeUrl(ge.urlAfterRedirects),ge.targetSnapshot);this.triggerEvent(Re)}),(0,j.U)(ge=>Object.assign(Object.assign({},ge),{guards:Yo(ge.targetSnapshot,ge.currentSnapshot,this.rootContexts)})),function(Je,Fe){return(0,fe.zg)(we=>{const{targetSnapshot:Ot,currentSnapshot:xe,guards:{canActivateChecks:ke,canDeactivateChecks:Te}}=we;return 0===Te.length&&0===ke.length?(0,h.of)(Object.assign(Object.assign({},we),{guardsResult:!0})):function(Je,Fe,we,Ot){return(0,a.D)(Je).pipe((0,fe.zg)(xe=>function(Je,Fe,we,Ot,xe){const ke=Fe&&Fe.routeConfig?Fe.routeConfig.canDeactivate:null;if(!ke||0===ke.length)return(0,h.of)(!0);const Te=ke.map(ge=>{const Re=ss(ge,Fe,xe);let Be;if(function(Je){return Je&&oa(Je.canDeactivate)}(Re))Be=Kn(Re.canDeactivate(Je,Fe,we,Ot));else{if(!oa(Re))throw new Error("Invalid CanDeactivate guard");Be=Kn(Re(Je,Fe,we,Ot))}return Be.pipe((0,oe.P)())});return(0,h.of)(Te).pipe($r())}(xe.component,xe.route,we,Fe,Ot)),(0,oe.P)(xe=>!0!==xe,!0))}(Te,Ot,xe,Je).pipe((0,fe.zg)(ge=>ge&&function(Je){return"boolean"==typeof Je}(ge)?function(Je,Fe,we,Ot){return(0,a.D)(Fe).pipe((0,Y.b)(xe=>(0,C.z)(function(Je,Fe){return null!==Je&&Fe&&Fe(new Qe(Je)),(0,h.of)(!0)}(xe.route.parent,Ot),function(Je,Fe){return null!==Je&&Fe&&Fe(new ae(Je)),(0,h.of)(!0)}(xe.route,Ot),function(Je,Fe,we){const Ot=Fe[Fe.length-1],ke=Fe.slice(0,Fe.length-1).reverse().map(Te=>function(Je){const Fe=Je.routeConfig?Je.routeConfig.canActivateChild:null;return Fe&&0!==Fe.length?{node:Je,guards:Fe}:null}(Te)).filter(Te=>null!==Te).map(Te=>u(()=>{const ge=Te.guards.map(Re=>{const Be=ss(Re,Te.node,we);let xt;if(function(Je){return Je&&oa(Je.canActivateChild)}(Be))xt=Kn(Be.canActivateChild(Ot,Je));else{if(!oa(Be))throw new Error("Invalid CanActivateChild guard");xt=Kn(Be(Ot,Je))}return xt.pipe((0,oe.P)())});return(0,h.of)(ge).pipe($r())}));return(0,h.of)(ke).pipe($r())}(Je,xe.path,we),function(Je,Fe,we){const Ot=Fe.routeConfig?Fe.routeConfig.canActivate:null;if(!Ot||0===Ot.length)return(0,h.of)(!0);const xe=Ot.map(ke=>u(()=>{const Te=ss(ke,Fe,we);let ge;if(function(Je){return Je&&oa(Je.canActivate)}(Te))ge=Kn(Te.canActivate(Fe,Je));else{if(!oa(Te))throw new Error("Invalid CanActivate guard");ge=Kn(Te(Fe,Je))}return ge.pipe((0,oe.P)())}));return(0,h.of)(xe).pipe($r())}(Je,xe.route,we))),(0,oe.P)(xe=>!0!==xe,!0))}(Ot,ke,Je,Fe):(0,h.of)(ge)),(0,j.U)(ge=>Object.assign(Object.assign({},we),{guardsResult:ge})))})}(this.ngModule.injector,ge=>this.triggerEvent(ge)),(0,ne.b)(ge=>{if(st(ge.guardsResult)){const Be=Ln(`Redirecting to "${this.serializeUrl(ge.guardsResult)}"`);throw Be.url=ge.guardsResult,Be}const Re=new Et(ge.id,this.serializeUrl(ge.extractedUrl),this.serializeUrl(ge.urlAfterRedirects),ge.targetSnapshot,!!ge.guardsResult);this.triggerEvent(Re)}),(0,I.h)(ge=>!!ge.guardsResult||(this.restoreHistory(ge),this.cancelNavigationTransition(ge,""),!1)),ii(ge=>{if(ge.guards.canActivateChecks.length)return(0,h.of)(ge).pipe((0,ne.b)(Re=>{const Be=new lt(Re.id,this.serializeUrl(Re.extractedUrl),this.serializeUrl(Re.urlAfterRedirects),Re.targetSnapshot);this.triggerEvent(Be)}),(0,H.w)(Re=>{let Be=!1;return(0,h.of)(Re).pipe(function(Je,Fe){return(0,fe.zg)(we=>{const{targetSnapshot:Ot,guards:{canActivateChecks:xe}}=we;if(!xe.length)return(0,h.of)(we);let ke=0;return(0,a.D)(xe).pipe((0,Y.b)(Te=>function(Je,Fe,we,Ot){return function(Je,Fe,we,Ot){const xe=Object.keys(Je);if(0===xe.length)return(0,h.of)({});const ke={};return(0,a.D)(xe).pipe((0,fe.zg)(Te=>function(Je,Fe,we,Ot){const xe=ss(Je,Fe,Ot);return Kn(xe.resolve?xe.resolve(Fe,we):xe(Fe,we))}(Je[Te],Fe,we,Ot).pipe((0,ne.b)(ge=>{ke[Te]=ge}))),(0,he.h)(1),(0,fe.zg)(()=>Object.keys(ke).length===xe.length?(0,h.of)(ke):l.E))}(Je._resolve,Je,Fe,Ot).pipe((0,j.U)(ke=>(Je._resolvedData=ke,Je.data=Object.assign(Object.assign({},Je.data),se(Je,we).resolve),null)))}(Te.route,Ot,Je,Fe)),(0,ne.b)(()=>ke++),(0,he.h)(1),(0,fe.zg)(Te=>ke===xe.length?(0,h.of)(we):l.E))})}(this.paramsInheritanceStrategy,this.ngModule.injector),(0,ne.b)({next:()=>Be=!0,complete:()=>{Be||(this.restoreHistory(Re),this.cancelNavigationTransition(Re,"At least one route resolver didn't emit any value."))}}))}),(0,ne.b)(Re=>{const Be=new nn(Re.id,this.serializeUrl(Re.extractedUrl),this.serializeUrl(Re.urlAfterRedirects),Re.targetSnapshot);this.triggerEvent(Be)}))}),ii(ge=>{const{targetSnapshot:Re,id:Be,extractedUrl:xt,rawUrl:Dt,extras:{skipLocationChange:en,replaceUrl:vn}}=ge;return this.hooks.afterPreactivation(Re,{navigationId:Be,appliedUrlTree:xt,rawUrlTree:Dt,skipLocationChange:!!en,replaceUrl:!!vn})}),(0,j.U)(ge=>{const Re=function(Je,Fe,we){const Ot=$t(Je,Fe._root,we?we._root:void 0);return new Oi(Ot,Fe)}(this.routeReuseStrategy,ge.targetSnapshot,ge.currentRouterState);return Object.assign(Object.assign({},ge),{targetRouterState:Re})}),(0,ne.b)(ge=>{this.currentUrlTree=ge.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(ge.urlAfterRedirects,ge.rawUrl),this.routerState=ge.targetRouterState,"deferred"===this.urlUpdateStrategy&&(ge.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,ge),this.browserUrlTree=ge.urlAfterRedirects)}),((Je,Fe,we)=>(0,j.U)(Ot=>(new es(Fe,Ot.targetRouterState,Ot.currentRouterState,we).activate(Je),Ot)))(this.rootContexts,this.routeReuseStrategy,ge=>this.triggerEvent(ge)),(0,ne.b)({next(){ke=!0},complete(){ke=!0}}),(0,Ae.x)(()=>{var ge;if(!ke&&!Te){const Re=`Navigation ID ${xe.id} is not equal to the current navigation id ${this.navigationId}`;"replace"===this.canceledNavigationResolution?(this.restoreHistory(xe),this.cancelNavigationTransition(xe,Re)):this.cancelNavigationTransition(xe,Re)}(null===(ge=this.currentNavigation)||void 0===ge?void 0:ge.id)===xe.id&&(this.currentNavigation=null)}),(0,J.K)(ge=>{if(Te=!0,function(Je){return Je&&Je[ar]}(ge)){const Re=st(ge.url);Re||(this.navigated=!0,this.restoreHistory(xe,!0));const Be=new He(xe.id,this.serializeUrl(xe.extractedUrl),ge.message);Ot.next(Be),Re?setTimeout(()=>{const xt=this.urlHandlingStrategy.merge(ge.url,this.rawUrlTree),Dt={skipLocationChange:xe.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||pi(xe.source)};this.scheduleNavigation(xt,"imperative",null,Dt,{resolve:xe.resolve,reject:xe.reject,promise:xe.promise})},0):xe.resolve(!1)}else{this.restoreHistory(xe,!0);const Re=new $e(xe.id,this.serializeUrl(xe.extractedUrl),ge);Ot.next(Re);try{xe.resolve(this.errorHandler(ge))}catch(Be){xe.reject(Be)}}return l.E}))}))}resetRootComponentType(we){this.rootComponentType=we,this.routerState.root.component=this.rootComponentType}getTransition(){const we=this.transitions.value;return we.urlAfterRedirects=this.browserUrlTree,we}setTransition(we){this.transitions.next(Object.assign(Object.assign({},this.getTransition()),we))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(we=>{const Ot=this.extractLocationChangeInfoFromEvent(we);this.shouldScheduleNavigation(this.lastLocationChangeInfo,Ot)&&setTimeout(()=>{const{source:xe,state:ke,urlTree:Te}=Ot,ge={replaceUrl:!0};if(ke){const Re=Object.assign({},ke);delete Re.navigationId,delete Re.\u0275routerPageId,0!==Object.keys(Re).length&&(ge.state=Re)}this.scheduleNavigation(Te,xe,ke,ge)},0),this.lastLocationChangeInfo=Ot}))}extractLocationChangeInfoFromEvent(we){var Ot;return{source:"popstate"===we.type?"popstate":"hashchange",urlTree:this.parseUrl(we.url),state:(null===(Ot=we.state)||void 0===Ot?void 0:Ot.navigationId)?we.state:null,transitionId:this.getTransition().id}}shouldScheduleNavigation(we,Ot){if(!we)return!0;const xe=Ot.urlTree.toString()===we.urlTree.toString();return Ot.transitionId!==we.transitionId||!xe||!("hashchange"===Ot.source&&"popstate"===we.source||"popstate"===Ot.source&&"hashchange"===we.source)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(we){this.events.next(we)}resetConfig(we){Ri(we),this.config=we.map(Hi),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.transitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(we,Ot={}){const{relativeTo:xe,queryParams:ke,fragment:Te,queryParamsHandling:ge,preserveFragment:Re}=Ot,Be=xe||this.routerState.root,xt=Re?this.currentUrlTree.fragment:Te;let Dt=null;switch(ge){case"merge":Dt=Object.assign(Object.assign({},this.currentUrlTree.queryParams),ke);break;case"preserve":Dt=this.currentUrlTree.queryParams;break;default:Dt=ke||null}return null!==Dt&&(Dt=this.removeEmptyProps(Dt)),function(Je,Fe,we,Ot,xe){if(0===we.length)return Qr(Fe.root,Fe.root,Fe,Ot,xe);const ke=function(Je){if("string"==typeof Je[0]&&1===Je.length&&"/"===Je[0])return new fi(!0,0,Je);let Fe=0,we=!1;const Ot=Je.reduce((xe,ke,Te)=>{if("object"==typeof ke&&null!=ke){if(ke.outlets){const ge={};return dn(ke.outlets,(Re,Be)=>{ge[Be]="string"==typeof Re?Re.split("/"):Re}),[...xe,{outlets:ge}]}if(ke.segmentPath)return[...xe,ke.segmentPath]}return"string"!=typeof ke?[...xe,ke]:0===Te?(ke.split("/").forEach((ge,Re)=>{0==Re&&"."===ge||(0==Re&&""===ge?we=!0:".."===ge?Fe++:""!=ge&&xe.push(ge))}),xe):[...xe,ke]},[]);return new fi(we,Fe,Ot)}(we);if(ke.toRoot())return Qr(Fe.root,new Tt([],{}),Fe,Ot,xe);const Te=function(Je,Fe,we){if(Je.isAbsolute)return new wi(Fe.root,!0,0);if(-1===we.snapshot._lastPathIndex){const ke=we.snapshot._urlSegment;return new wi(ke,ke===Fe.root,0)}const Ot=ai(Je.commands[0])?0:1;return function(Je,Fe,we){let Ot=Je,xe=Fe,ke=we;for(;ke>xe;){if(ke-=xe,Ot=Ot.parent,!Ot)throw new Error("Invalid number of '../'");xe=Ot.segments.length}return new wi(Ot,!1,xe-ke)}(we.snapshot._urlSegment,we.snapshot._lastPathIndex+Ot,Je.numberOfDoubleDots)}(ke,Fe,Je),ge=Te.processChildren?qi(Te.segmentGroup,Te.index,ke.commands):Ji(Te.segmentGroup,Te.index,ke.commands);return Qr(Te.segmentGroup,ge,Fe,Ot,xe)}(Be,this.currentUrlTree,we,Dt,null!=xt?xt:null)}navigateByUrl(we,Ot={skipLocationChange:!1}){const xe=st(we)?we:this.parseUrl(we),ke=this.urlHandlingStrategy.merge(xe,this.rawUrlTree);return this.scheduleNavigation(ke,"imperative",null,Ot)}navigate(we,Ot={skipLocationChange:!1}){return function(Je){for(let Fe=0;Fe<Je.length;Fe++){const we=Je[Fe];if(null==we)throw new Error(`The requested path contains ${we} segment at index ${Fe}`)}}(we),this.navigateByUrl(this.createUrlTree(we,Ot),Ot)}serializeUrl(we){return this.urlSerializer.serialize(we)}parseUrl(we){let Ot;try{Ot=this.urlSerializer.parse(we)}catch(xe){Ot=this.malformedUriErrorHandler(xe,this.urlSerializer,we)}return Ot}isActive(we,Ot){let xe;if(xe=!0===Ot?Object.assign({},Bt):!1===Ot?Object.assign({},In):Ot,st(we))return En(this.currentUrlTree,we,xe);const ke=this.parseUrl(we);return En(this.currentUrlTree,ke,xe)}removeEmptyProps(we){return Object.keys(we).reduce((Ot,xe)=>{const ke=we[xe];return null!=ke&&(Ot[xe]=ke),Ot},{})}processNavigations(){this.navigations.subscribe(we=>{this.navigated=!0,this.lastSuccessfulId=we.id,this.currentPageId=we.targetPageId,this.events.next(new ue(we.id,this.serializeUrl(we.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,we.resolve(!0)},we=>{this.console.warn(`Unhandled Navigation Error: ${we}`)})}scheduleNavigation(we,Ot,xe,ke,Te){var ge,Re;if(this.disposed)return Promise.resolve(!1);const Be=this.getTransition(),xt=pi(Ot)&&Be&&!pi(Be.source),vn=(this.lastSuccessfulId===Be.id||this.currentNavigation?Be.rawUrl:Be.urlAfterRedirects).toString()===we.toString();if(xt&&vn)return Promise.resolve(!0);let Gn,kn,zn;Te?(Gn=Te.resolve,kn=Te.reject,zn=Te.promise):zn=new Promise((Gr,ci)=>{Gn=Gr,kn=ci});const jr=++this.navigationId;let kr;return"computed"===this.canceledNavigationResolution?(0===this.currentPageId&&(xe=this.location.getState()),kr=xe&&xe.\u0275routerPageId?xe.\u0275routerPageId:ke.replaceUrl||ke.skipLocationChange?null!==(ge=this.browserPageId)&&void 0!==ge?ge:0:(null!==(Re=this.browserPageId)&&void 0!==Re?Re:0)+1):kr=0,this.setTransition({id:jr,targetPageId:kr,source:Ot,restoredState:xe,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:we,extras:ke,resolve:Gn,reject:kn,promise:zn,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),zn.catch(Gr=>Promise.reject(Gr))}setBrowserUrl(we,Ot){const xe=this.urlSerializer.serialize(we),ke=Object.assign(Object.assign({},Ot.extras.state),this.generateNgRouterState(Ot.id,Ot.targetPageId));this.location.isCurrentPathEqualTo(xe)||Ot.extras.replaceUrl?this.location.replaceState(xe,"",ke):this.location.go(xe,"",ke)}restoreHistory(we,Ot=!1){var xe,ke;if("computed"===this.canceledNavigationResolution){const Te=this.currentPageId-we.targetPageId;"popstate"!==we.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(xe=this.currentNavigation)||void 0===xe?void 0:xe.finalUrl)||0===Te?this.currentUrlTree===(null===(ke=this.currentNavigation)||void 0===ke?void 0:ke.finalUrl)&&0===Te&&(this.resetState(we),this.browserUrlTree=we.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(Te)}else"replace"===this.canceledNavigationResolution&&(Ot&&this.resetState(we),this.resetUrlToCurrentUrlTree())}resetState(we){this.routerState=we.currentRouterState,this.currentUrlTree=we.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,we.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}cancelNavigationTransition(we,Ot){const xe=new He(we.id,this.serializeUrl(we.extractedUrl),Ot);this.triggerEvent(xe),we.resolve(!1)}generateNgRouterState(we,Ot){return"computed"===this.canceledNavigationResolution?{navigationId:we,\u0275routerPageId:Ot}:{navigationId:we}}}return Je.\u0275fac=function(we){return new(we||Je)(e.LFG(e.DyG),e.LFG(Qn),e.LFG(hi),e.LFG(t.Ye),e.LFG(e.zs3),e.LFG(e.v3s),e.LFG(e.Sil),e.LFG(void 0))},Je.\u0275prov=e.Yz7({token:Je,factory:Je.\u0275fac}),Je})();function pi(Je){return"imperative"!==Je}let Fr=(()=>{class Je{constructor(we,Ot,xe,ke,Te){this.router=we,this.route=Ot,this.commands=[],this.onChanges=new x.xQ,null==xe&&ke.setAttribute(Te.nativeElement,"tabindex","0")}ngOnChanges(we){this.onChanges.next(this)}set routerLink(we){this.commands=null!=we?Array.isArray(we)?we:[we]:[]}onClick(){const we={skipLocationChange:Un(this.skipLocationChange),replaceUrl:Un(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,we),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:Un(this.preserveFragment)})}}return Je.\u0275fac=function(we){return new(we||Je)(e.Y36(Xn),e.Y36(di),e.$8M("tabindex"),e.Y36(e.Qsj),e.Y36(e.SBq))},Je.\u0275dir=e.lG2({type:Je,selectors:[["","routerLink","",5,"a",5,"area"]],hostBindings:function(we,Ot){1&we&&e.NdJ("click",function(){return Ot.onClick()})},inputs:{routerLink:"routerLink",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",state:"state",relativeTo:"relativeTo"},features:[e.TTD]}),Je})(),zr=(()=>{class Je{constructor(we,Ot,xe){this.router=we,this.route=Ot,this.locationStrategy=xe,this.commands=[],this.onChanges=new x.xQ,this.subscription=we.events.subscribe(ke=>{ke instanceof ue&&this.updateTargetUrlAndHref()})}set routerLink(we){this.commands=null!=we?Array.isArray(we)?we:[we]:[]}ngOnChanges(we){this.updateTargetUrlAndHref(),this.onChanges.next(this)}ngOnDestroy(){this.subscription.unsubscribe()}onClick(we,Ot,xe,ke,Te){if(0!==we||Ot||xe||ke||Te||"string"==typeof this.target&&"_self"!=this.target)return!0;const ge={skipLocationChange:Un(this.skipLocationChange),replaceUrl:Un(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,ge),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:Un(this.preserveFragment)})}}return Je.\u0275fac=function(we){return new(we||Je)(e.Y36(Xn),e.Y36(di),e.Y36(t.S$))},Je.\u0275dir=e.lG2({type:Je,selectors:[["a","routerLink",""],["area","routerLink",""]],hostVars:2,hostBindings:function(we,Ot){1&we&&e.NdJ("click",function(ke){return Ot.onClick(ke.button,ke.ctrlKey,ke.shiftKey,ke.altKey,ke.metaKey)}),2&we&&(e.Ikx("href",Ot.href,e.LSH),e.uIk("target",Ot.target))},inputs:{routerLink:"routerLink",target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",state:"state",relativeTo:"relativeTo"},features:[e.TTD]}),Je})();function Un(Je){return""===Je||!!Je}let lr=(()=>{class Je{constructor(we,Ot,xe,ke,Te,ge){this.router=we,this.element=Ot,this.renderer=xe,this.cdr=ke,this.link=Te,this.linkWithHref=ge,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.routerEventsSubscription=we.events.subscribe(Re=>{Re instanceof ue&&this.update()})}ngAfterContentInit(){(0,h.of)(this.links.changes,this.linksWithHrefs.changes,(0,h.of)(null)).pipe((0,Me.J)()).subscribe(we=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){var we;null===(we=this.linkInputChangesSubscription)||void 0===we||we.unsubscribe();const Ot=[...this.links.toArray(),...this.linksWithHrefs.toArray(),this.link,this.linkWithHref].filter(xe=>!!xe).map(xe=>xe.onChanges);this.linkInputChangesSubscription=(0,a.D)(Ot).pipe((0,Me.J)()).subscribe(xe=>{this.isActive!==this.isLinkActive(this.router)(xe)&&this.update()})}set routerLinkActive(we){const Ot=Array.isArray(we)?we:we.split(" ");this.classes=Ot.filter(xe=>!!xe)}ngOnChanges(we){this.update()}ngOnDestroy(){var we;this.routerEventsSubscription.unsubscribe(),null===(we=this.linkInputChangesSubscription)||void 0===we||we.unsubscribe()}update(){!this.links||!this.linksWithHrefs||!this.router.navigated||Promise.resolve().then(()=>{const we=this.hasActiveLinks();this.isActive!==we&&(this.isActive=we,this.cdr.markForCheck(),this.classes.forEach(Ot=>{we?this.renderer.addClass(this.element.nativeElement,Ot):this.renderer.removeClass(this.element.nativeElement,Ot)}))})}isLinkActive(we){const Ot=function(Je){return!!Je.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return xe=>we.isActive(xe.urlTree,Ot)}hasActiveLinks(){const we=this.isLinkActive(this.router);return this.link&&we(this.link)||this.linkWithHref&&we(this.linkWithHref)||this.links.some(we)||this.linksWithHrefs.some(we)}}return Je.\u0275fac=function(we){return new(we||Je)(e.Y36(Xn),e.Y36(e.SBq),e.Y36(e.Qsj),e.Y36(e.sBO),e.Y36(Fr,8),e.Y36(zr,8))},Je.\u0275dir=e.lG2({type:Je,selectors:[["","routerLinkActive",""]],contentQueries:function(we,Ot,xe){if(1&we&&(e.Suo(xe,Fr,5),e.Suo(xe,zr,5)),2&we){let ke;e.iGM(ke=e.CRH())&&(Ot.links=ke),e.iGM(ke=e.CRH())&&(Ot.linksWithHrefs=ke)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",routerLinkActive:"routerLinkActive"},exportAs:["routerLinkActive"],features:[e.TTD]}),Je})(),li=(()=>{class Je{constructor(we,Ot,xe,ke,Te){this.parentContexts=we,this.location=Ot,this.resolver=xe,this.changeDetector=Te,this.activated=null,this._activatedRoute=null,this.activateEvents=new e.vpe,this.deactivateEvents=new e.vpe,this.name=ke||Jt,we.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const we=this.parentContexts.getContext(this.name);we&&we.route&&(we.attachRef?this.attach(we.attachRef,we.route):this.activateWith(we.route,we.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const we=this.activated;return this.activated=null,this._activatedRoute=null,we}attach(we,Ot){this.activated=we,this._activatedRoute=Ot,this.location.insert(we.hostView)}deactivate(){if(this.activated){const we=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(we)}}activateWith(we,Ot){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=we;const Te=(Ot=Ot||this.resolver).resolveComponentFactory(we._futureSnapshot.routeConfig.component),ge=this.parentContexts.getOrCreateContext(this.name).children,Re=new Ti(we,ge,this.location.injector);this.activated=this.location.createComponent(Te,this.location.length,Re),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return Je.\u0275fac=function(we){return new(we||Je)(e.Y36(hi),e.Y36(e.s_b),e.Y36(e._Vd),e.$8M("name"),e.Y36(e.sBO))},Je.\u0275dir=e.lG2({type:Je,selectors:[["router-outlet"]],outputs:{activateEvents:"activate",deactivateEvents:"deactivate"},exportAs:["outlet"]}),Je})();class Ti{constructor(Fe,we,Ot){this.route=Fe,this.childContexts=we,this.parent=Ot}get(Fe,we){return Fe===di?this.route:Fe===hi?this.childContexts:this.parent.get(Fe,we)}}class Ao{}class Qo{preload(Fe,we){return we().pipe((0,J.K)(()=>(0,h.of)(null)))}}class jo{preload(Fe,we){return(0,h.of)(null)}}let uo=(()=>{class Je{constructor(we,Ot,xe,ke,Te){this.router=we,this.injector=ke,this.preloadingStrategy=Te,this.loader=new vo(Ot,xe,Be=>we.triggerEvent(new St(Be)),Be=>we.triggerEvent(new At(Be)))}setUpPreloading(){this.subscription=this.router.events.pipe((0,I.h)(we=>we instanceof ue),(0,Y.b)(()=>this.preload())).subscribe(()=>{})}preload(){const we=this.injector.get(e.h0i);return this.processRoutes(we,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(we,Ot){const xe=[];for(const ke of Ot)if(ke.loadChildren&&!ke.canLoad&&ke._loadedConfig){const Te=ke._loadedConfig;xe.push(this.processRoutes(Te.module,Te.routes))}else ke.loadChildren&&!ke.canLoad?xe.push(this.preloadConfig(we,ke)):ke.children&&xe.push(this.processRoutes(we,ke.children));return(0,a.D)(xe).pipe((0,Me.J)(),(0,j.U)(ke=>{}))}preloadConfig(we,Ot){return this.preloadingStrategy.preload(Ot,()=>(Ot._loadedConfig?(0,h.of)(Ot._loadedConfig):this.loader.load(we.injector,Ot)).pipe((0,fe.zg)(ke=>(Ot._loadedConfig=ke,this.processRoutes(ke.module,ke.routes)))))}}return Je.\u0275fac=function(we){return new(we||Je)(e.LFG(Xn),e.LFG(e.v3s),e.LFG(e.Sil),e.LFG(e.zs3),e.LFG(Ao))},Je.\u0275prov=e.Yz7({token:Je,factory:Je.\u0275fac}),Je})(),eo=(()=>{class Je{constructor(we,Ot,xe={}){this.router=we,this.viewportScroller=Ot,this.options=xe,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},xe.scrollPositionRestoration=xe.scrollPositionRestoration||"disabled",xe.anchorScrolling=xe.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(we=>{we instanceof be?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=we.navigationTrigger,this.restoredId=we.restoredState?we.restoredState.navigationId:0):we instanceof ue&&(this.lastId=we.id,this.scheduleScrollEvent(we,this.router.parseUrl(we.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(we=>{we instanceof dt&&(we.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(we.position):we.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(we.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(we,Ot){this.router.triggerEvent(new dt(we,"popstate"===this.lastSource?this.store[this.restoredId]:null,Ot))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return Je.\u0275fac=function(we){return new(we||Je)(e.LFG(Xn),e.LFG(t.EM),e.LFG(void 0))},Je.\u0275prov=e.Yz7({token:Je,factory:Je.\u0275fac}),Je})();const Zi=new e.OlP("ROUTER_CONFIGURATION"),na=new e.OlP("ROUTER_FORROOT_GUARD"),fl=[t.Ye,{provide:Qn,useClass:Ir},{provide:Xn,useFactory:function(Je,Fe,we,Ot,xe,ke,Te,ge={},Re,Be){const xt=new Xn(null,Je,Fe,we,Ot,xe,ke,Yn(Te));return Re&&(xt.urlHandlingStrategy=Re),Be&&(xt.routeReuseStrategy=Be),function(Je,Fe){Je.errorHandler&&(Fe.errorHandler=Je.errorHandler),Je.malformedUriErrorHandler&&(Fe.malformedUriErrorHandler=Je.malformedUriErrorHandler),Je.onSameUrlNavigation&&(Fe.onSameUrlNavigation=Je.onSameUrlNavigation),Je.paramsInheritanceStrategy&&(Fe.paramsInheritanceStrategy=Je.paramsInheritanceStrategy),Je.relativeLinkResolution&&(Fe.relativeLinkResolution=Je.relativeLinkResolution),Je.urlUpdateStrategy&&(Fe.urlUpdateStrategy=Je.urlUpdateStrategy)}(ge,xt),ge.enableTracing&&xt.events.subscribe(Dt=>{var en,vn;null===(en=console.group)||void 0===en||en.call(console,`Router Event: ${Dt.constructor.name}`),console.log(Dt.toString()),console.log(Dt),null===(vn=console.groupEnd)||void 0===vn||vn.call(console)}),xt},deps:[Qn,hi,t.Ye,e.zs3,e.v3s,e.Sil,io,Zi,[class{},new e.FiY],[class{},new e.FiY]]},hi,{provide:di,useFactory:function(Je){return Je.routerState.root},deps:[Xn]},{provide:e.v3s,useClass:e.EAV},uo,jo,Qo,{provide:Zi,useValue:{enableTracing:!1}}];function Hn(){return new e.PXZ("Router",Xn)}let Es=(()=>{class Je{constructor(we,Ot){}static forRoot(we,Ot){return{ngModule:Je,providers:[fl,As(we),{provide:na,useFactory:mo,deps:[[Xn,new e.FiY,new e.tp0]]},{provide:Zi,useValue:Ot||{}},{provide:t.S$,useFactory:Hl,deps:[t.lw,[new e.tBr(t.mr),new e.FiY],Zi]},{provide:eo,useFactory:Ll,deps:[Xn,t.EM,Zi]},{provide:Ao,useExisting:Ot&&Ot.preloadingStrategy?Ot.preloadingStrategy:jo},{provide:e.PXZ,multi:!0,useFactory:Hn},[Fl,{provide:e.ip1,multi:!0,useFactory:bl,deps:[Fl]},{provide:kl,useFactory:ql,deps:[Fl]},{provide:e.tb,multi:!0,useExisting:kl}]]}}static forChild(we){return{ngModule:Je,providers:[As(we)]}}}return Je.\u0275fac=function(we){return new(we||Je)(e.LFG(na,8),e.LFG(Xn,8))},Je.\u0275mod=e.oAB({type:Je}),Je.\u0275inj=e.cJS({}),Je})();function Ll(Je,Fe,we){return we.scrollOffset&&Fe.setOffset(we.scrollOffset),new eo(Je,Fe,we)}function Hl(Je,Fe,we={}){return we.useHash?new t.Do(Je,Fe):new t.b0(Je,Fe)}function mo(Je){return"guarded"}function As(Je){return[{provide:e.deG,multi:!0,useValue:Je},{provide:io,multi:!0,useValue:Je}]}let Fl=(()=>{class Je{constructor(we){this.injector=we,this.initNavigation=!1,this.destroyed=!1,this.resultOfPreactivationDone=new x.xQ}appInitializer(){return this.injector.get(t.V_,Promise.resolve(null)).then(()=>{if(this.destroyed)return Promise.resolve(!0);let Ot=null;const xe=new Promise(ge=>Ot=ge),ke=this.injector.get(Xn),Te=this.injector.get(Zi);return"disabled"===Te.initialNavigation?(ke.setUpLocationChangeListener(),Ot(!0)):"enabled"===Te.initialNavigation||"enabledBlocking"===Te.initialNavigation?(ke.hooks.afterPreactivation=()=>this.initNavigation?(0,h.of)(null):(this.initNavigation=!0,Ot(!0),this.resultOfPreactivationDone),ke.initialNavigation()):Ot(!0),xe})}bootstrapListener(we){const Ot=this.injector.get(Zi),xe=this.injector.get(uo),ke=this.injector.get(eo),Te=this.injector.get(Xn),ge=this.injector.get(e.z2F);we===ge.components[0]&&(("enabledNonBlocking"===Ot.initialNavigation||void 0===Ot.initialNavigation)&&Te.initialNavigation(),xe.setUpPreloading(),ke.init(),Te.resetRootComponentType(ge.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}ngOnDestroy(){this.destroyed=!0}}return Je.\u0275fac=function(we){return new(we||Je)(e.LFG(e.zs3))},Je.\u0275prov=e.Yz7({token:Je,factory:Je.\u0275fac}),Je})();function bl(Je){return Je.appInitializer.bind(Je)}function ql(Je){return Je.bootstrapListener.bind(Je)}const kl=new e.OlP("Router Initializer")},19723:(Ge,g,o)=>{"use strict";o.d(g,{iM:()=>Fu,qr:()=>Ph,xc:()=>Np});var t=o(74788),e=o(12057),s=function(P,W){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Z,Ee){Z.__proto__=Ee}||function(Z,Ee){for(var Mt in Ee)Ee.hasOwnProperty(Mt)&&(Z[Mt]=Ee[Mt])})(P,W)};function a(P,W){function Z(){this.constructor=P}s(P,W),P.prototype=null===W?Object.create(W):(Z.prototype=W.prototype,new Z)}var l=function(){return(l=Object.assign||function(W){for(var Z,Ee=1,Mt=arguments.length;Ee<Mt;Ee++)for(var cn in Z=arguments[Ee])Object.prototype.hasOwnProperty.call(Z,cn)&&(W[cn]=Z[cn]);return W}).apply(this,arguments)};function u(P,W){var Z="function"==typeof Symbol&&P[Symbol.iterator];if(!Z)return P;var Mt,pr,Ee=Z.call(P),cn=[];try{for(;(void 0===W||W-- >0)&&!(Mt=Ee.next()).done;)cn.push(Mt.value)}catch(Rr){pr={error:Rr}}finally{try{Mt&&!Mt.done&&(Z=Ee.return)&&Z.call(Ee)}finally{if(pr)throw pr.error}}return cn}function h(){for(var P=[],W=0;W<arguments.length;W++)P=P.concat(u(arguments[W]));return P}var m=[];Object.freeze(m);var b={};Object.freeze(b);var C={};function D(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:C}function x(){return++Ct.mobxGuid}function j(P){throw H(!1,P),"X"}function H(P,W){if(!P)throw new Error("[mobx] "+(W||"An invariant failed, however the error is obfuscated because this is an production build."))}function M(P){var W=!1;return function(){if(!W)return W=!0,P.apply(this,arguments)}}var I=function(){};function Y(P){return null!==P&&"object"==typeof P}function ie(P){if(null===P||"object"!=typeof P)return!1;var W=Object.getPrototypeOf(P);return W===Object.prototype||null===W}function ne(P,W,Z){Object.defineProperty(P,W,{enumerable:!1,writable:!0,configurable:!0,value:Z})}function he(P,W,Z){Object.defineProperty(P,W,{enumerable:!1,writable:!1,configurable:!0,value:Z})}function Me(P,W){var Z="isMobX"+P;return W.prototype[Z]=!0,function(Ee){return Y(Ee)&&!0===Ee[Z]}}function ue(P){return void 0!==D().Map&&P instanceof D().Map}function He(P){return P instanceof Set}function $e(P){for(var W=[];;){var Z=P.next();if(Z.done)break;W.push(Z.value)}return W}function F(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function je(P){return null===P?null:"object"==typeof P?""+P:P}function Et(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function lt(P,W){he(P,Et(),W)}function nn(P){return P[Et()]=At,P}function St(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function At(){return this}var Qe=function(){function P(W){void 0===W&&(W="Atom@"+x()),this.name=W,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=hn.NOT_TRACKING}return P.prototype.onBecomeUnobserved=function(){},P.prototype.onBecomeObserved=function(){},P.prototype.reportObserved=function(){return Qr(this)},P.prototype.reportChanged=function(){ai(),function(P){if(P.lowestObserverState!==hn.STALE){P.lowestObserverState=hn.STALE;for(var W=P.observers,Z=W.length;Z--;){var Ee=W[Z];Ee.dependenciesState===hn.UP_TO_DATE&&(Ee.isTracing!==Qn.NONE&&wi(Ee,P),Ee.onBecomeStale()),Ee.dependenciesState=hn.STALE}}}(this),Dr()},P.prototype.toString=function(){return this.name},P}(),It=Me("Atom",Qe);function Ie(P,W){return P===W}var ln={identity:Ie,structural:function(P,W){return Qo(P,W)},default:function(P,W){return function(P,W){return"number"==typeof P&&"number"==typeof W&&isNaN(P)&&isNaN(W)}(P,W)||Ie(P,W)},shallow:function(P,W){return Qo(P,W,1)}},ar={},Ln={};function Rn(P,W){var Z=W?ar:Ln;return Z[P]||(Z[P]={configurable:!0,enumerable:W,get:function(){return er(this),this[P]},set:function(Ee){er(this),this[P]=Ee}})}function er(P){if(!0!==P.__mobxDidRunLazyInitializers){var W=P.__mobxDecorators;if(W)for(var Z in ne(P,"__mobxDidRunLazyInitializers",!0),W){var Ee=W[Z];Ee.propertyCreator(P,Ee.prop,Ee.descriptor,Ee.decoratorTarget,Ee.decoratorArguments)}}}function Mn(P,W){return function(){var Ee,Mt=function(pr,Rr,ui,To){return!0===To?(W(pr,Rr,ui,pr,Ee),null):(Object.prototype.hasOwnProperty.call(pr,"__mobxDecorators")||ne(pr,"__mobxDecorators",l({},pr.__mobxDecorators)),pr.__mobxDecorators[Rr]={prop:Rr,propertyCreator:W,descriptor:ui,decoratorTarget:pr,decoratorArguments:Ee},Rn(Rr,P))};return Ht(arguments)?(Ee=m,Mt.apply(null,arguments)):(Ee=Array.prototype.slice.call(arguments),Mt)}}function Ht(P){return(2===P.length||3===P.length)&&"string"==typeof P[1]||4===P.length&&!0===P[3]}function tr(P,W,Z){return Ne(P)?P:Array.isArray(P)?mt.array(P,{name:Z}):ie(P)?mt.object(P,void 0,{name:Z}):ue(P)?mt.map(P,{name:Z}):He(P)?mt.set(P,{name:Z}):P}function Cn(P){return P}function dn(P){var W=Mn(!0,function(Ee,Mt,cn,pr,Rr){!function(P,W,Z,Ee){var Mt=ft(P);if(Di(Mt)){var cn=pa(Mt,{object:P,name:W,type:"add",newValue:Z});if(!cn)return;Z=cn.newValue}Z=(Mt.values[W]=new Kr(Z,Ee,Mt.name+"."+W,!1)).value,Object.defineProperty(P,W,function(P){return In[P]||(In[P]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,P)},set:function(W){this.$mobx.write(this,P,W)}})}(W)),Mt.keys&&Mt.keys.push(W),function(P,W,Z,Ee){var Mt=Vo(P),cn=Bo(),pr=Mt||cn?{type:"add",object:W,name:Z,newValue:Ee}:null;cn&&es(l({},pr,{name:P.name,key:Z})),Mt&&hs(P,pr),cn&&ds()}(Mt,P,W,Z)}(Ee,Mt,cn?cn.initializer?cn.initializer.call(Ee):cn.value:void 0,P)}),Z=("undefined"!=typeof process&&process,W);return Z.enhancer=P,Z}var Kn={deep:!0,name:void 0,defaultDecorator:void 0};function $n(P){return null==P?Kn:"string"==typeof P?{name:P,deep:!0}:P}function En(P){return P.defaultDecorator?P.defaultDecorator.enhancer:!1===P.deep?Cn:tr}Object.freeze(Kn),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var Fn=dn(tr),Dn=dn(function(P,W,Z){return null==P||lr(P)||bi(P)||Bi(P)||G(P)?P:Array.isArray(P)?mt.array(P,{name:Z,deep:!1}):ie(P)?mt.object(P,void 0,{name:Z,deep:!1}):ue(P)?mt.map(P,{name:Z,deep:!1}):He(P)?mt.set(P,{name:Z,deep:!1}):j(!1)}),mn=dn(Cn),jn=dn(function(P,W,Z){return Qo(P,W)?W:P}),ut={box:function(P,W){arguments.length>2&&Tt("box");var Z=$n(W);return new Kr(P,En(Z),Z.name,!0,Z.equals)},shallowBox:function(P,W){return arguments.length>2&&Tt("shallowBox"),mt.box(P,{name:W,deep:!1})},array:function(P,W){arguments.length>2&&Tt("array");var Z=$n(W);return new xr(P,En(Z),Z.name)},shallowArray:function(P,W){return arguments.length>2&&Tt("shallowArray"),mt.array(P,{name:W,deep:!1})},map:function(P,W){arguments.length>2&&Tt("map");var Z=$n(W);return new io(P,En(Z),Z.name)},shallowMap:function(P,W){return arguments.length>2&&Tt("shallowMap"),mt.map(P,{name:W,deep:!1})},set:function(P,W){arguments.length>2&&Tt("set");var Z=$n(W);return new Br(P,En(Z),Z.name)},object:function(P,W,Z){"string"==typeof arguments[1]&&Tt("object");var Ee=$n(Z);return Ra({},P,W,Ee)},shallowObject:function(P,W){return"string"==typeof arguments[1]&&Tt("shallowObject"),mt.object(P,{},{name:W,deep:!1})},ref:mn,shallow:Dn,deep:Fn,struct:jn},mt=function(P,W,Z){if("string"==typeof arguments[1])return Fn.apply(null,arguments);if(Ne(P))return P;var Ee=ie(P)?mt.object(P,W,Z):Array.isArray(P)?mt.array(P,W):ue(P)?mt.map(P,W):He(P)?mt.set(P,W):P;if(Ee!==P)return Ee;j(!1)};function Tt(P){j("Expected one or two arguments to observable."+P+". Did you accidentally try to use observable."+P+" as decorator?")}Object.keys(ut).forEach(function(P){return mt[P]=ut[P]});var yn=Mn(!1,function(P,W,Z,Ee,Mt){!function(P,W,Z){var Ee=ft(P);Z.name=Ee.name+"."+W,Z.context=P,Ee.values[W]=new di(Z),Object.defineProperty(P,W,function(P){return Xn[P]||(Xn[P]={configurable:Ct.computedConfigurable,enumerable:!1,get:function(){return pi(this).read(this,P)},set:function(W){pi(this).write(this,P,W)}})}(W))}(P,W,l({get:Z.get,set:Z.set},Mt[0]||{}))}),et=yn({equals:ln.structural}),jt=function(W,Z,Ee){if("string"==typeof Z||null!==W&&"object"==typeof W&&1===arguments.length)return yn.apply(null,arguments);var Mt="object"==typeof Z?Z:{};return Mt.get=W,Mt.set="function"==typeof Z?Z:Mt.set,Mt.name=Mt.name||W.name||"",new di(Mt)};jt.struct=et;var hn=(()=>{return(P=hn||(hn={}))[P.NOT_TRACKING=-1]="NOT_TRACKING",P[P.UP_TO_DATE=0]="UP_TO_DATE",P[P.POSSIBLY_STALE=1]="POSSIBLY_STALE",P[P.STALE=2]="STALE",hn;var P})(),Qn=(()=>{return(P=Qn||(Qn={}))[P.NONE=0]="NONE",P[P.LOG=1]="LOG",P[P.BREAK=2]="BREAK",Qn;var P})(),Ir=function(W){this.cause=W};function ht(P){return P instanceof Ir}function L(P){switch(P.dependenciesState){case hn.UP_TO_DATE:return!1;case hn.NOT_TRACKING:case hn.STALE:return!0;case hn.POSSIBLY_STALE:for(var W=sn(),Z=P.observing,Ee=Z.length,Mt=0;Mt<Ee;Mt++){var cn=Z[Mt];if(se(cn)){if(Ct.disableErrorBoundaries)cn.get();else try{cn.get()}catch(pr){return An(W),!0}if(P.dependenciesState===hn.STALE)return An(W),!0}}return mr(P),An(W),!1}}function nt(P){var W=P.observers.length>0;Ct.computationDepth>0&&W&&j(!1),!Ct.allowStateChanges&&(W||"strict"===Ct.enforceActions)&&j(!1)}function it(P,W,Z){var Ee=Bn(!0);mr(P),P.newObserving=new Array(P.observing.length+100),P.unboundDepsCount=0,P.runId=++Ct.runId;var cn,Mt=Ct.trackingDerivation;if(Ct.trackingDerivation=P,!0===Ct.disableErrorBoundaries)cn=W.call(Z);else try{cn=W.call(Z)}catch(pr){cn=new Ir(pr)}return Ct.trackingDerivation=Mt,function(P){for(var W=P.observing,Z=P.observing=P.newObserving,Ee=hn.UP_TO_DATE,Mt=0,cn=P.unboundDepsCount,pr=0;pr<cn;pr++)0===(Rr=Z[pr]).diffValue&&(Rr.diffValue=1,Mt!==pr&&(Z[Mt]=Rr),Mt++),Rr.dependenciesState>Ee&&(Ee=Rr.dependenciesState);for(Z.length=Mt,P.newObserving=null,cn=W.length;cn--;)0===(Rr=W[cn]).diffValue&&Vr(Rr,P),Rr.diffValue=0;for(;Mt--;){var Rr;1===(Rr=Z[Mt]).diffValue&&(Rr.diffValue=0,Zn(Rr,P))}Ee!==hn.UP_TO_DATE&&(P.dependenciesState=Ee,P.onBecomeStale())}(P),ir(Ee),cn}function ot(P){var W=P.observing;P.observing=[];for(var Z=W.length;Z--;)Vr(W[Z],P);P.dependenciesState=hn.NOT_TRACKING}function Nn(P){var W=sn(),Z=P();return An(W),Z}function sn(){var P=Ct.trackingDerivation;return Ct.trackingDerivation=null,P}function An(P){Ct.trackingDerivation=P}function Bn(P){var W=Ct.allowStateReads;return Ct.allowStateReads=P,W}function ir(P){Ct.allowStateReads=P}function mr(P){if(P.dependenciesState!==hn.UP_TO_DATE){P.dependenciesState=hn.UP_TO_DATE;for(var W=P.observing,Z=W.length;Z--;)W[Z].lowestObserverState=hn.UP_TO_DATE}}var _r=0,Nr=1;function br(P,W){var Z=function(){return Jn(P,W,this,arguments)};return Z.isMobxAction=!0,Z}function Jn(P,W,Z,Ee){var Mt=function(P,W,Z){var Ee=Bo()&&!!P,Mt=0;if(Ee){Mt=Date.now();var cn=Z&&Z.length||0,pr=new Array(cn);if(cn>0)for(var Rr=0;Rr<cn;Rr++)pr[Rr]=Z[Rr];es({type:"action",name:P,object:W,arguments:pr})}var ui=sn();ai();var os={prevDerivation:ui,prevAllowStateChanges:Ii(!0),prevAllowStateReads:Bn(!0),notifySpy:Ee,startTime:Mt,actionId:Nr++,parentActionId:_r};return _r=os.actionId,os}(P,Z,Ee);try{return W.apply(Z,Ee)}catch(cn){throw Mt.error=cn,cn}finally{!function(P){_r!==P.actionId&&j("invalid action stack. did you forget to finish an action?"),_r=P.parentActionId,void 0!==P.error&&(Ct.suppressReactionErrors=!0),Mi(P.prevAllowStateChanges),ir(P.prevAllowStateReads),Dr(),An(P.prevDerivation),P.notifySpy&&ds({time:Date.now()-P.startTime}),Ct.suppressReactionErrors=!1}(Mt)}}function Ii(P){var W=Ct.allowStateChanges;return Ct.allowStateChanges=P,W}function Mi(P){Ct.allowStateChanges=P}var Kr=function(P){function W(Z,Ee,Mt,cn,pr){void 0===Mt&&(Mt="ObservableValue@"+x()),void 0===cn&&(cn=!0),void 0===pr&&(pr=ln.default);var Rr=P.call(this,Mt)||this;return Rr.enhancer=Ee,Rr.name=Mt,Rr.equals=pr,Rr.hasUnreportedChange=!1,Rr.value=Ee(Z,void 0,Mt),cn&&Bo()&&Jo({type:"create",name:Rr.name,newValue:""+Rr.value}),Rr}return a(W,P),W.prototype.dehanceValue=function(Z){return void 0!==this.dehancer?this.dehancer(Z):Z},W.prototype.set=function(Z){var Ee=this.value;if((Z=this.prepareNewValue(Z))!==Ct.UNCHANGED){var Mt=Bo();Mt&&es({type:"update",name:this.name,newValue:Z,oldValue:Ee}),this.setNewValue(Z),Mt&&ds()}},W.prototype.prepareNewValue=function(Z){if(nt(this),Di(this)){var Ee=pa(this,{object:this,type:"update",newValue:Z});if(!Ee)return Ct.UNCHANGED;Z=Ee.newValue}return Z=this.enhancer(Z,this.value,this.name),this.equals(this.value,Z)?Ct.UNCHANGED:Z},W.prototype.setNewValue=function(Z){var Ee=this.value;this.value=Z,this.reportChanged(),Vo(this)&&hs(this,{type:"update",object:this,newValue:Z,oldValue:Ee})},W.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},W.prototype.intercept=function(Z){return vs(this,Z)},W.prototype.observe=function(Z,Ee){return Ee&&Z({object:this,type:"update",newValue:this.value,oldValue:void 0}),ja(this,Z)},W.prototype.toJSON=function(){return this.get()},W.prototype.toString=function(){return this.name+"["+this.value+"]"},W.prototype.valueOf=function(){return je(this.get())},W}(Qe);Kr.prototype[F()]=Kr.prototype.valueOf,Me("ObservableValue",Kr);var di=function(){function P(W){this.dependenciesState=hn.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=hn.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+x(),this.value=new Ir(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=Qn.NONE,this.derivation=W.get,this.name=W.name||"ComputedValue@"+x(),W.set&&(this.setter=br(this.name+"-setter",W.set)),this.equals=W.equals||(W.compareStructural||W.struct?ln.structural:ln.default),this.scope=W.context,this.requiresReaction=!!W.requiresReaction,this.keepAlive=!!W.keepAlive}return P.prototype.onBecomeStale=function(){!function(P){if(P.lowestObserverState===hn.UP_TO_DATE){P.lowestObserverState=hn.POSSIBLY_STALE;for(var W=P.observers,Z=W.length;Z--;){var Ee=W[Z];Ee.dependenciesState===hn.UP_TO_DATE&&(Ee.dependenciesState=hn.POSSIBLY_STALE,Ee.isTracing!==Qn.NONE&&wi(Ee,P),Ee.onBecomeStale())}}}(this)},P.prototype.onBecomeUnobserved=function(){},P.prototype.onBecomeObserved=function(){},P.prototype.get=function(){this.isComputing&&j("Cycle detected in computation "+this.name+": "+this.derivation),0!==Ct.inBatch||0!==this.observers.length||this.keepAlive?(Qr(this),L(this)&&this.trackAndCompute()&&function(P){if(P.lowestObserverState!==hn.STALE){P.lowestObserverState=hn.STALE;for(var W=P.observers,Z=W.length;Z--;){var Ee=W[Z];Ee.dependenciesState===hn.POSSIBLY_STALE?Ee.dependenciesState=hn.STALE:Ee.dependenciesState===hn.UP_TO_DATE&&(P.lowestObserverState=hn.UP_TO_DATE)}}}(this)):L(this)&&(this.warnAboutUntrackedRead(),ai(),this.value=this.computeValue(!1),Dr());var W=this.value;if(ht(W))throw W.cause;return W},P.prototype.peek=function(){var W=this.computeValue(!1);if(ht(W))throw W.cause;return W},P.prototype.set=function(W){if(this.setter){H(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,W)}finally{this.isRunningSetter=!1}}else H(!1,!1)},P.prototype.trackAndCompute=function(){Bo()&&Jo({object:this.scope,type:"compute",name:this.name});var W=this.value,Z=this.dependenciesState===hn.NOT_TRACKING,Ee=this.computeValue(!0),Mt=Z||ht(W)||ht(Ee)||!this.equals(W,Ee);return Mt&&(this.value=Ee),Mt},P.prototype.computeValue=function(W){var Z;if(this.isComputing=!0,Ct.computationDepth++,W)Z=it(this,this.derivation,this.scope);else if(!0===Ct.disableErrorBoundaries)Z=this.derivation.call(this.scope);else try{Z=this.derivation.call(this.scope)}catch(Ee){Z=new Ir(Ee)}return Ct.computationDepth--,this.isComputing=!1,Z},P.prototype.suspend=function(){this.keepAlive||(ot(this),this.value=void 0)},P.prototype.observe=function(W,Z){var Ee=this,Mt=!0,cn=void 0;return $r(function(){var pr=Ee.get();if(!Mt||Z){var Rr=sn();W({type:"update",object:Ee,newValue:pr,oldValue:cn}),An(Rr)}Mt=!1,cn=pr})},P.prototype.warnAboutUntrackedRead=function(){},P.prototype.toJSON=function(){return this.get()},P.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},P.prototype.valueOf=function(){return je(this.get())},P}();di.prototype[F()]=di.prototype.valueOf;var P,se=Me("ComputedValue",di),Ke=function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1},Xe=!0,Ct=((P=D()).__mobxInstanceCount>0&&!P.__mobxGlobals&&(Xe=!1),P.__mobxGlobals&&P.__mobxGlobals.version!==(new Ke).version&&(Xe=!1),Xe?P.__mobxGlobals?(P.__mobxInstanceCount+=1,P.__mobxGlobals.UNCHANGED||(P.__mobxGlobals.UNCHANGED={}),P.__mobxGlobals):(P.__mobxInstanceCount=1,P.__mobxGlobals=new Ke):(setTimeout(function(){j("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")},1),new Ke));function Zn(P,W){var Z=P.observers.length;Z&&(P.observersIndexes[W.__mapid]=Z),P.observers[Z]=W,P.lowestObserverState>W.dependenciesState&&(P.lowestObserverState=W.dependenciesState)}function Vr(P,W){if(1===P.observers.length)P.observers.length=0,Cr(P);else{var Z=P.observers,Ee=P.observersIndexes,Mt=Z.pop();if(Mt!==W){var cn=Ee[W.__mapid]||0;cn?Ee[Mt.__mapid]=cn:delete Ee[Mt.__mapid],Z[cn]=Mt}delete Ee[W.__mapid]}}function Cr(P){!1===P.isPendingUnobservation&&(P.isPendingUnobservation=!0,Ct.pendingUnobservations.push(P))}function ai(){Ct.inBatch++}function Dr(){if(0==--Ct.inBatch){to();for(var P=Ct.pendingUnobservations,W=0;W<P.length;W++){var Z=P[W];Z.isPendingUnobservation=!1,0===Z.observers.length&&(Z.isBeingObserved&&(Z.isBeingObserved=!1,Z.onBecomeUnobserved()),Z instanceof di&&Z.suspend())}Ct.pendingUnobservations=[]}}function Qr(P){var W=Ct.trackingDerivation;return null!==W?(W.runId!==P.lastAccessedBy&&(P.lastAccessedBy=W.runId,W.newObserving[W.unboundDepsCount++]=P,P.isBeingObserved||(P.isBeingObserved=!0,P.onBecomeObserved())),!0):(0===P.observers.length&&Ct.inBatch>0&&Cr(P),!1)}function wi(P,W){if(console.log("[mobx.trace] '"+P.name+"' is invalidated due to a change in: '"+W.name+"'"),P.isTracing===Qn.BREAK){var Z=[];go(function(P,W){return Dl(dr(P,void 0))}(P),Z,1),new Function("debugger;\n/*\nTracing '"+P.name+"'\n\nYou are entering this break point because derivation '"+P.name+"' is being traced and '"+W.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(P instanceof di?P.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+Z.join("\n")+"\n*/\n    ")()}}function go(P,W,Z){W.length>=1e3?W.push("(and many more)"):(W.push(""+new Array(Z).join("\t")+P.name),P.dependencies&&P.dependencies.forEach(function(Ee){return go(Ee,W,Z+1)}))}var Fi=function(){function P(W,Z,Ee,Mt){void 0===W&&(W="Reaction@"+x()),void 0===Mt&&(Mt=!1),this.name=W,this.onInvalidate=Z,this.errorHandler=Ee,this.requiresObservable=Mt,this.observing=[],this.newObserving=[],this.dependenciesState=hn.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+x(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=Qn.NONE}return P.prototype.onBecomeStale=function(){this.schedule()},P.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,Ct.pendingReactions.push(this),to())},P.prototype.isScheduled=function(){return this._isScheduled},P.prototype.runReaction=function(){if(!this.isDisposed){if(ai(),this._isScheduled=!1,L(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Bo()&&Jo({name:this.name,type:"scheduled-reaction"})}catch(W){this.reportExceptionInDerivation(W)}}Dr()}},P.prototype.track=function(W){ai();var Ee,Z=Bo();Z&&(Ee=Date.now(),es({name:this.name,type:"reaction"})),this._isRunning=!0;var Mt=it(this,W,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&ot(this),ht(Mt)&&this.reportExceptionInDerivation(Mt.cause),Z&&ds({time:Date.now()-Ee}),Dr()},P.prototype.reportExceptionInDerivation=function(W){var Z=this;if(this.errorHandler)this.errorHandler(W,this);else{if(Ct.disableErrorBoundaries)throw W;var Ee="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";Ct.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(Ee,W),Bo()&&Jo({type:"error",name:this.name,message:Ee,error:""+W}),Ct.globalReactionErrorHandlers.forEach(function(Mt){return Mt(W,Z)})}},P.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(ai(),ot(this),Dr()))},P.prototype.getDisposer=function(){var W=this.dispose.bind(this);return W.$mobx=this,W},P.prototype.toString=function(){return"Reaction["+this.name+"]"},P.prototype.trace=function(W){void 0===W&&(W=!1),function(){for(var P=[],W=0;W<arguments.length;W++)P[W]=arguments[W];var Z=!1;"boolean"==typeof P[P.length-1]&&(Z=P.pop());var Ee=Ja(P);if(!Ee)return j(!1);Ee.isTracing===Qn.NONE&&console.log("[mobx.trace] '"+Ee.name+"' tracing enabled"),Ee.isTracing=Z?Qn.BREAK:Qn.LOG}(this,W)},P}();function to(){Ct.inBatch>0||Ct.isRunningReactions||function(P){P()}(zi)}function zi(){Ct.isRunningReactions=!0;for(var P=Ct.pendingReactions,W=0;P.length>0;){100==++W&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+P[0]),P.splice(0));for(var Z=P.splice(0),Ee=0,Mt=Z.length;Ee<Mt;Ee++)Z[Ee].runReaction()}Ct.isRunningReactions=!1}var Go=Me("Reaction",Fi);function Bo(){return!!Ct.spyListeners.length}function Jo(P){if(Ct.spyListeners.length)for(var W=Ct.spyListeners,Z=0,Ee=W.length;Z<Ee;Z++)W[Z](P)}function es(P){Jo(l({},P,{spyReportStart:!0}))}var ua={spyReportEnd:!0};function ds(P){Jo(P?l({},P,{spyReportEnd:!0}):ua)}function oa(){j(!1)}function Er(P){return function(W,Z,Ee){if(Ee){if(Ee.value)return{value:br(P,Ee.value),enumerable:!1,configurable:!0,writable:!0};var Mt=Ee.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return br(P,Mt.call(this))}}}return st(P).apply(this,arguments)}}function st(P){return function(W,Z,Ee){Object.defineProperty(W,Z,{configurable:!0,enumerable:!1,get:function(){},set:function(Mt){ne(this,Z,ee(P,Mt))}})}}var ee=function(W,Z,Ee,Mt){return 1===arguments.length&&"function"==typeof W?br(W.name||"<unnamed action>",W):2===arguments.length&&"function"==typeof Z?br(W,Z):1===arguments.length&&"string"==typeof W?Er(W):!0!==Mt?Er(Z).apply(null,arguments):void(W[Z]=br(W.name||Z,Ee.value))};function Tn(P,W,Z){ne(P,W,br(W,Z.bind(P)))}function $r(P,W){void 0===W&&(W=b);var Mt,Z=W&&W.name||P.name||"Autorun@"+x();if(W.scheduler||W.delay){var cn=Ri(W),pr=!1;Mt=new Fi(Z,function(){pr||(pr=!0,cn(function(){pr=!1,Mt.isDisposed||Mt.track(Rr)}))},W.onError,W.requiresObservable)}else Mt=new Fi(Z,function(){this.track(Rr)},W.onError,W.requiresObservable);function Rr(){P(Mt)}return Mt.schedule(),Mt.getDisposer()}ee.bound=function(P,W,Z,Ee){return!0===Ee?(Tn(P,W,Z.value),null):Z?{configurable:!0,enumerable:!1,get:function(){return Tn(this,W,Z.value||Z.initializer.call(this)),this[W]},set:oa}:{enumerable:!1,configurable:!0,set:function(Mt){Tn(this,W,Mt)},get:function(){}}};var ni=function(P){return P()};function Ri(P){return P.scheduler?P.scheduler:P.delay?function(W){return setTimeout(W,P.delay)}:ni}function Do(P,W,Z){void 0===Z&&(Z=b),"boolean"==typeof Z&&(Z={fireImmediately:Z});var To,Ee=Z.name||"Reaction@"+x(),Mt=ee(Ee,Z.onError?function(P,W){return function(){try{return W.apply(this,arguments)}catch(Z){P.call(this,Z)}}}(Z.onError,W):W),cn=!Z.scheduler&&!Z.delay,pr=Ri(Z),Rr=!0,ui=!1,Io=Z.compareStructural?ln.structural:Z.equals||ln.default,os=new Fi(Ee,function(){Rr||cn?Ta():ui||(ui=!0,pr(Ta))},Z.onError,Z.requiresObservable);function Ta(){if(ui=!1,!os.isDisposed){var _l=!1;os.track(function(){var qa=P(os);_l=Rr||!Io(To,qa),To=qa}),Rr&&Z.fireImmediately&&Mt(To,os),!Rr&&!0===_l&&Mt(To,os),Rr&&(Rr=!1)}}return os.schedule(),os.getDisposer()}function Li(P,W,Z){return cs("onBecomeUnobserved",P,W,Z)}function cs(P,W,Z,Ee){var Mt="function"==typeof Ee?dr(W,Z):dr(W),cn="function"==typeof Ee?Ee:Z,pr=Mt[P];return"function"!=typeof pr?j(!1):(Mt[P]=function(){pr.call(this),cn.call(this)},function(){Mt[P]=pr})}function Ra(P,W,Z,Ee){var cn=(Ee=$n(Ee)).defaultDecorator||(!1===Ee.deep?mn:Fn);er(P),ft(P,Ee.name,cn.enhancer),ai();try{for(var Mt in W){var pr=Object.getOwnPropertyDescriptor(W,Mt),ui=(Z&&Mt in Z?Z[Mt]:pr.get?yn:cn)(P,Mt,pr,!0);ui&&Object.defineProperty(P,Mt,ui)}}finally{Dr()}return P}function Dl(P){var W={name:P.name};return P.observing&&P.observing.length>0&&(W.dependencies=function(P){var W=[];return P.forEach(function(Z){-1===W.indexOf(Z)&&W.push(Z)}),W}(P.observing).map(Dl)),W}function ye(P,W){if(null==P)return!1;if(void 0!==W){if(lr(P)){var Z=P.$mobx;return Z.values&&!!Z.values[W]}return!1}return lr(P)||!!P.$mobx||It(P)||Go(P)||se(P)}function Ne(P){return 1!==arguments.length&&j(!1),ye(P)}function Ja(P){switch(P.length){case 0:return Ct.trackingDerivation;case 1:return dr(P[0]);case 2:return dr(P[0],P[1])}}function il(P,W){void 0===W&&(W=void 0),ai();try{return P.apply(W)}finally{Dr()}}function Di(P){return void 0!==P.interceptors&&P.interceptors.length>0}function vs(P,W){var Z=P.interceptors||(P.interceptors=[]);return Z.push(W),M(function(){var Ee=Z.indexOf(W);-1!==Ee&&Z.splice(Ee,1)})}function pa(P,W){var Z=sn();try{var Ee=P.interceptors;if(Ee)for(var Mt=0,cn=Ee.length;Mt<cn&&(H(!(W=Ee[Mt](W))||W.type,"Intercept handlers should return nothing or a change object"),W);Mt++);return W}finally{An(Z)}}function Vo(P){return void 0!==P.changeListeners&&P.changeListeners.length>0}function ja(P,W){var Z=P.changeListeners||(P.changeListeners=[]);return Z.push(W),M(function(){var Ee=Z.indexOf(W);-1!==Ee&&Z.splice(Ee,1)})}function hs(P,W){var Z=sn(),Ee=P.changeListeners;if(Ee){for(var Mt=0,cn=(Ee=Ee.slice()).length;Mt<cn;Mt++)Ee[Mt](W);An(Z)}}var wt=function(){var P=!1,W={};return Object.defineProperty(W,"0",{set:function(){P=!0}}),Object.create(W)[0]=1,!1===P}(),kt=0,tn=function(){};(function(P,W){void 0!==Object.setPrototypeOf?Object.setPrototypeOf(P.prototype,W):void 0!==P.prototype.__proto__?P.prototype.__proto__=W:P.prototype=W})(tn,Array.prototype),Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach(function(P){Object.defineProperty(tn.prototype,P,{configurable:!0,writable:!0,value:Array.prototype[P]})});var gn=function(){function P(W,Z,Ee,Mt){this.array=Ee,this.owned=Mt,this.values=[],this.lastKnownLength=0,this.atom=new Qe(W||"ObservableArray@"+x()),this.enhancer=function(cn,pr){return Z(cn,pr,W+"[..]")}}return P.prototype.dehanceValue=function(W){return void 0!==this.dehancer?this.dehancer(W):W},P.prototype.dehanceValues=function(W){return void 0!==this.dehancer&&W.length>0?W.map(this.dehancer):W},P.prototype.intercept=function(W){return vs(this,W)},P.prototype.observe=function(W,Z){return void 0===Z&&(Z=!1),Z&&W({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ja(this,W)},P.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},P.prototype.setArrayLength=function(W){if("number"!=typeof W||W<0)throw new Error("[mobx.array] Out of range: "+W);var Z=this.values.length;if(W!==Z)if(W>Z){for(var Ee=new Array(W-Z),Mt=0;Mt<W-Z;Mt++)Ee[Mt]=void 0;this.spliceWithArray(Z,0,Ee)}else this.spliceWithArray(W,Z-W)},P.prototype.updateArrayLength=function(W,Z){if(W!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=Z,Z>0&&W+Z+1>kt&&ii(W+Z+1)},P.prototype.spliceWithArray=function(W,Z,Ee){var Mt=this;nt(this.atom);var cn=this.values.length;if(void 0===W?W=0:W>cn?W=cn:W<0&&(W=Math.max(0,cn+W)),Z=1===arguments.length?cn-W:null==Z?0:Math.max(0,Math.min(Z,cn-W)),void 0===Ee&&(Ee=m),Di(this)){var pr=pa(this,{object:this.array,type:"splice",index:W,removedCount:Z,added:Ee});if(!pr)return m;Z=pr.removedCount,Ee=pr.added}var Rr=(Ee=0===Ee.length?Ee:Ee.map(function(To){return Mt.enhancer(To,void 0)})).length-Z;this.updateArrayLength(cn,Rr);var ui=this.spliceItemsIntoValues(W,Z,Ee);return(0!==Z||0!==Ee.length)&&this.notifyArraySplice(W,Ee,ui),this.dehanceValues(ui)},P.prototype.spliceItemsIntoValues=function(W,Z,Ee){var Mt;if(Ee.length<1e4)return(Mt=this.values).splice.apply(Mt,h([W,Z],Ee));var cn=this.values.slice(W,W+Z);return this.values=this.values.slice(0,W).concat(Ee,this.values.slice(W+Z)),cn},P.prototype.notifyArrayChildUpdate=function(W,Z,Ee){var Mt=!this.owned&&Bo(),cn=Vo(this),pr=cn||Mt?{object:this.array,type:"update",index:W,newValue:Z,oldValue:Ee}:null;Mt&&es(l({},pr,{name:this.atom.name})),this.atom.reportChanged(),cn&&hs(this,pr),Mt&&ds()},P.prototype.notifyArraySplice=function(W,Z,Ee){var Mt=!this.owned&&Bo(),cn=Vo(this),pr=cn||Mt?{object:this.array,type:"splice",index:W,removed:Ee,added:Z,removedCount:Ee.length,addedCount:Z.length}:null;Mt&&es(l({},pr,{name:this.atom.name})),this.atom.reportChanged(),cn&&hs(this,pr),Mt&&ds()},P}(),xr=function(P){function W(Z,Ee,Mt,cn){void 0===Mt&&(Mt="ObservableArray@"+x()),void 0===cn&&(cn=!1);var pr=P.call(this)||this,Rr=new gn(Mt,Ee,pr,cn);if(he(pr,"$mobx",Rr),Z&&Z.length){var ui=Ii(!0);pr.spliceWithArray(0,0,Z),Mi(ui)}return wt&&Object.defineProperty(Rr.array,"0",Zr),pr}return a(W,P),W.prototype.intercept=function(Z){return this.$mobx.intercept(Z)},W.prototype.observe=function(Z,Ee){return void 0===Ee&&(Ee=!1),this.$mobx.observe(Z,Ee)},W.prototype.clear=function(){return this.splice(0)},W.prototype.concat=function(){for(var Z=[],Ee=0;Ee<arguments.length;Ee++)Z[Ee]=arguments[Ee];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),Z.map(function(Mt){return bi(Mt)?Mt.peek():Mt}))},W.prototype.replace=function(Z){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,Z)},W.prototype.toJS=function(){return this.slice()},W.prototype.toJSON=function(){return this.toJS()},W.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},W.prototype.find=function(Z,Ee,Mt){void 0===Mt&&(Mt=0);var cn=this.findIndex.apply(this,arguments);return-1===cn?void 0:this.get(cn)},W.prototype.findIndex=function(Z,Ee,Mt){void 0===Mt&&(Mt=0);for(var cn=this.peek(),pr=cn.length,Rr=Mt;Rr<pr;Rr++)if(Z.call(Ee,cn[Rr],Rr,this))return Rr;return-1},W.prototype.splice=function(Z,Ee){for(var Mt=[],cn=2;cn<arguments.length;cn++)Mt[cn-2]=arguments[cn];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(Z);case 2:return this.$mobx.spliceWithArray(Z,Ee)}return this.$mobx.spliceWithArray(Z,Ee,Mt)},W.prototype.spliceWithArray=function(Z,Ee,Mt){return this.$mobx.spliceWithArray(Z,Ee,Mt)},W.prototype.push=function(){for(var Z=[],Ee=0;Ee<arguments.length;Ee++)Z[Ee]=arguments[Ee];var Mt=this.$mobx;return Mt.spliceWithArray(Mt.values.length,0,Z),Mt.values.length},W.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},W.prototype.shift=function(){return this.splice(0,1)[0]},W.prototype.unshift=function(){for(var Z=[],Ee=0;Ee<arguments.length;Ee++)Z[Ee]=arguments[Ee];var Mt=this.$mobx;return Mt.spliceWithArray(0,0,Z),Mt.values.length},W.prototype.reverse=function(){var Z=this.slice();return Z.reverse.apply(Z,arguments)},W.prototype.sort=function(Z){var Ee=this.slice();return Ee.sort.apply(Ee,arguments)},W.prototype.remove=function(Z){var Ee=this.$mobx.dehanceValues(this.$mobx.values).indexOf(Z);return Ee>-1&&(this.splice(Ee,1),!0)},W.prototype.move=function(Z,Ee){function Mt(Rr){if(Rr<0)throw new Error("[mobx.array] Index out of bounds: "+Rr+" is negative");var ui=this.$mobx.values.length;if(Rr>=ui)throw new Error("[mobx.array] Index out of bounds: "+Rr+" is not smaller than "+ui)}if(Mt.call(this,Z),Mt.call(this,Ee),Z!==Ee){var pr,cn=this.$mobx.values;pr=Z<Ee?h(cn.slice(0,Z),cn.slice(Z+1,Ee+1),[cn[Z]],cn.slice(Ee+1)):h(cn.slice(0,Ee),[cn[Z]],cn.slice(Ee,Z),cn.slice(Z+1)),this.replace(pr)}},W.prototype.get=function(Z){var Ee=this.$mobx;if(Ee){if(Z<Ee.values.length)return Ee.atom.reportObserved(),Ee.dehanceValue(Ee.values[Z]);console.warn("[mobx.array] Attempt to read an array index ("+Z+") that is out of bounds ("+Ee.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},W.prototype.set=function(Z,Ee){var Mt=this.$mobx,cn=Mt.values;if(Z<cn.length){nt(Mt.atom);var pr=cn[Z];if(Di(Mt)){var Rr=pa(Mt,{type:"update",object:this,index:Z,newValue:Ee});if(!Rr)return;Ee=Rr.newValue}(Ee=Mt.enhancer(Ee,pr))!==pr&&(cn[Z]=Ee,Mt.notifyArrayChildUpdate(Z,Ee,pr))}else{if(Z!==cn.length)throw new Error("[mobx.array] Index out of bounds, "+Z+" is larger than "+cn.length);Mt.spliceWithArray(Z,0,[Ee])}},W}(tn);lt(xr.prototype,function(){this.$mobx.atom.reportObserved();var P=this,W=0;return nn({next:function(){return W<P.length?{value:P[W++],done:!1}:{done:!0,value:void 0}}})}),Object.defineProperty(xr.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(P){this.$mobx.setArrayLength(P)}}),ne(xr.prototype,St(),"Array"),["every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","slice","some","toString","toLocaleString"].forEach(function(P){var W=Array.prototype[P];H("function"==typeof W,"Base function not defined on Array prototype: '"+P+"'"),ne(xr.prototype,P,function(){return W.apply(this.peek(),arguments)})}),function(P,W){for(var Z=0;Z<W.length;Z++)ne(P,W[Z],P[W[Z]])}(xr.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var Zr=Pr(0);function Pr(P){return{enumerable:!1,configurable:!1,get:function(){return this.get(P)},set:function(W){this.set(P,W)}}}function mi(P){Object.defineProperty(xr.prototype,""+P,Pr(P))}function ii(P){for(var W=kt;W<P;W++)mi(W);kt=P}ii(1e3);var si=Me("ObservableArrayAdministration",gn);function bi(P){return Y(P)&&si(P.$mobx)}var Ui={},io=function(){function P(W,Z,Ee){if(void 0===Z&&(Z=tr),void 0===Ee&&(Ee="ObservableMap@"+x()),this.enhancer=Z,this.name=Ee,this.$mobx=Ui,this._keys=new xr(void 0,Cn,this.name+".keys()",!0),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(W)}return P.prototype._has=function(W){return this._data.has(W)},P.prototype.has=function(W){var Z=this;if(!Ct.trackingDerivation)return this._has(W);var Ee=this._hasMap.get(W);if(!Ee){var Mt=Ee=new Kr(this._has(W),Cn,this.name+"."+vo(W)+"?",!1);this._hasMap.set(W,Mt),Li(Mt,function(){return Z._hasMap.delete(W)})}return Ee.get()},P.prototype.set=function(W,Z){var Ee=this._has(W);if(Di(this)){var Mt=pa(this,{type:Ee?"update":"add",object:this,newValue:Z,name:W});if(!Mt)return this;Z=Mt.newValue}return Ee?this._updateValue(W,Z):this._addValue(W,Z),this},P.prototype.delete=function(W){var Z=this;if(Di(this)&&!(Ee=pa(this,{type:"delete",object:this,name:W})))return!1;if(this._has(W)){var Mt=Bo(),cn=Vo(this),Ee=cn||Mt?{type:"delete",object:this,oldValue:this._data.get(W).value,name:W}:null;return Mt&&es(l({},Ee,{name:this.name,key:W})),il(function(){Z._keys.remove(W),Z._updateHasMapEntry(W,!1),Z._data.get(W).setNewValue(void 0),Z._data.delete(W)}),cn&&hs(this,Ee),Mt&&ds(),!0}return!1},P.prototype._updateHasMapEntry=function(W,Z){var Ee=this._hasMap.get(W);Ee&&Ee.setNewValue(Z)},P.prototype._updateValue=function(W,Z){var Ee=this._data.get(W);if((Z=Ee.prepareNewValue(Z))!==Ct.UNCHANGED){var Mt=Bo(),cn=Vo(this),pr=cn||Mt?{type:"update",object:this,oldValue:Ee.value,name:W,newValue:Z}:null;Mt&&es(l({},pr,{name:this.name,key:W})),Ee.setNewValue(Z),cn&&hs(this,pr),Mt&&ds()}},P.prototype._addValue=function(W,Z){var Ee=this;il(function(){var Rr=new Kr(Z,Ee.enhancer,Ee.name+"."+vo(W),!1);Ee._data.set(W,Rr),Z=Rr.value,Ee._updateHasMapEntry(W,!0),Ee._keys.push(W)});var Mt=Bo(),cn=Vo(this),pr=cn||Mt?{type:"add",object:this,name:W,newValue:Z}:null;Mt&&es(l({},pr,{name:this.name,key:W})),cn&&hs(this,pr),Mt&&ds()},P.prototype.get=function(W){return this.has(W)?this.dehanceValue(this._data.get(W).get()):this.dehanceValue(void 0)},P.prototype.dehanceValue=function(W){return void 0!==this.dehancer?this.dehancer(W):W},P.prototype.keys=function(){return this._keys[Et()]()},P.prototype.values=function(){var W=this,Z=0;return nn({next:function(){return Z<W._keys.length?{value:W.get(W._keys[Z++]),done:!1}:{value:void 0,done:!0}}})},P.prototype.entries=function(){var W=this,Z=0;return nn({next:function(){if(Z<W._keys.length){var Ee=W._keys[Z++];return{value:[Ee,W.get(Ee)],done:!1}}return{done:!0}}})},P.prototype.forEach=function(W,Z){var Ee=this;this._keys.forEach(function(Mt){return W.call(Z,Ee.get(Mt),Mt,Ee)})},P.prototype.merge=function(W){var Z=this;return Bi(W)&&(W=W.toJS()),il(function(){ie(W)?Object.keys(W).forEach(function(Ee){return Z.set(Ee,W[Ee])}):Array.isArray(W)?W.forEach(function(Ee){var Mt=u(Ee,2);return Z.set(Mt[0],Mt[1])}):ue(W)?W.constructor!==Map?j("Cannot initialize from classes that inherit from Map: "+W.constructor.name):W.forEach(function(Ee,Mt){return Z.set(Mt,Ee)}):null!=W&&j("Cannot initialize map from "+W)}),this},P.prototype.clear=function(){var W=this;il(function(){Nn(function(){W._keys.slice().forEach(function(Z){return W.delete(Z)})})})},P.prototype.replace=function(W){var Z=this;return il(function(){for(var Ee=function(P){return ue(P)||Bi(P)?P:Array.isArray(P)?new Map(P):ie(P)?new Map(Object.entries(P)):j("Cannot convert to map from '"+P+"'")}(W),Mt=Z._keys,cn=Array.from(Ee.keys()),pr=!1,Rr=0;Rr<Mt.length;Rr++){var ui=Mt[Rr];Mt.length===cn.length&&ui!==cn[Rr]&&(pr=!0),Ee.has(ui)||(pr=!0,Z.delete(ui))}Ee.forEach(function(To,Io){Z._data.has(Io)||(pr=!0),Z.set(Io,To)}),pr&&Z._keys.replace(cn)}),this},Object.defineProperty(P.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),P.prototype.toPOJO=function(){var W=this,Z={};return this._keys.forEach(function(Ee){return Z["symbol"==typeof Ee?Ee:vo(Ee)]=W.get(Ee)}),Z},P.prototype.toJS=function(){var W=this,Z=new Map;return this._keys.forEach(function(Ee){return Z.set(Ee,W.get(Ee))}),Z},P.prototype.toJSON=function(){return this.toPOJO()},P.prototype.toString=function(){var W=this;return this.name+"[{ "+this._keys.map(function(Z){return vo(Z)+": "+W.get(Z)}).join(", ")+" }]"},P.prototype.observe=function(W,Z){return ja(this,W)},P.prototype.intercept=function(W){return vs(this,W)},P}();function vo(P){return P&&P.toString?P.toString():new String(P).toString()}lt(io.prototype,function(){return this.entries()}),he(io.prototype,St(),"Map");var Bi=Me("ObservableMap",io),hi={},Br=function(){function P(W,Z,Ee){if(void 0===Z&&(Z=tr),void 0===Ee&&(Ee="ObservableSet@"+x()),this.name=Ee,this.$mobx=hi,this._data=new Set,this._atom=function(P,W,Z){void 0===W&&(W=I),void 0===Z&&(Z=I);var Ee=new Qe(P);return function(P,W,Z){cs("onBecomeObserved",P,W,void 0)}(Ee,W),Li(Ee,Z),Ee}(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(Mt,cn){return Z(Mt,cn,Ee)},W&&this.replace(W)}return P.prototype.dehanceValue=function(W){return void 0!==this.dehancer?this.dehancer(W):W},P.prototype.clear=function(){var W=this;il(function(){Nn(function(){W._data.forEach(function(Z){W.delete(Z)})})})},P.prototype.forEach=function(W,Z){var Ee=this;this._data.forEach(function(Mt){W.call(Z,Mt,Mt,Ee)})},Object.defineProperty(P.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),P.prototype.add=function(W){var Z=this;if(nt(this._atom),Di(this)&&!(Ee=pa(this,{type:"add",object:this,newValue:W})))return this;if(!this.has(W)){il(function(){Z._data.add(Z.enhancer(W,void 0)),Z._atom.reportChanged()});var Mt=Bo(),cn=Vo(this),Ee=cn||Mt?{type:"add",object:this,newValue:W}:null;cn&&hs(this,Ee)}return this},P.prototype.delete=function(W){var Z=this;if(Di(this)&&!(Ee=pa(this,{type:"delete",object:this,oldValue:W})))return!1;if(this.has(W)){var Mt=Bo(),cn=Vo(this),Ee=cn||Mt?{type:"delete",object:this,oldValue:W}:null;return il(function(){Z._atom.reportChanged(),Z._data.delete(W)}),cn&&hs(this,Ee),!0}return!1},P.prototype.has=function(W){return this._atom.reportObserved(),this._data.has(this.dehanceValue(W))},P.prototype.entries=function(){var W=0,Z=$e(this.keys()),Ee=$e(this.values());return nn({next:function(){var Mt=W;return W+=1,Mt<Ee.length?{value:[Z[Mt],Ee[Mt]],done:!1}:{done:!0}}})},P.prototype.keys=function(){return this.values()},P.prototype.values=function(){this._atom.reportObserved();var Ee,W=this,Z=0;return void 0!==this._data.values?Ee=$e(this._data.values()):(Ee=[],this._data.forEach(function(Mt){return Ee.push(Mt)})),nn({next:function(){return Z<Ee.length?{value:W.dehanceValue(Ee[Z++]),done:!1}:{done:!0}}})},P.prototype.replace=function(W){var Z=this;return G(W)&&(W=W.toJS()),il(function(){Array.isArray(W)||He(W)?(Z.clear(),W.forEach(function(Ee){return Z.add(Ee)})):null!=W&&j("Cannot initialize set from "+W)}),this},P.prototype.observe=function(W,Z){return ja(this,W)},P.prototype.intercept=function(W){return vs(this,W)},P.prototype.toJS=function(){return new Set(this)},P.prototype.toString=function(){return this.name+"[ "+$e(this.keys()).join(", ")+" ]"},P}();lt(Br.prototype,function(){return this.values()}),he(Br.prototype,St(),"Set");var G=Me("ObservableSet",Br),Se=function(){function P(W,Z,Ee){this.target=W,this.name=Z,this.defaultEnhancer=Ee,this.values={}}return P.prototype.read=function(W,Z){if(this.target===W||(this.illegalAccess(W,Z),this.values[Z]))return this.values[Z].get()},P.prototype.write=function(W,Z,Ee){var Mt=this.target;Mt!==W&&this.illegalAccess(W,Z);var cn=this.values[Z];if(cn instanceof di)cn.set(Ee);else{if(Di(this)){if(!(pr=pa(this,{type:"update",object:Mt,name:Z,newValue:Ee})))return;Ee=pr.newValue}if((Ee=cn.prepareNewValue(Ee))!==Ct.UNCHANGED){var Rr=Vo(this),ui=Bo(),pr=Rr||ui?{type:"update",object:Mt,oldValue:cn.value,name:Z,newValue:Ee}:null;ui&&es(l({},pr,{name:this.name,key:Z})),cn.setNewValue(Ee),Rr&&hs(this,pr),ui&&ds()}}},P.prototype.remove=function(W){if(this.values[W]){var Z=this.target;if(Di(this)&&!(Ee=pa(this,{object:Z,name:W,type:"remove"})))return;try{ai();var Mt=Vo(this),cn=Bo(),pr=this.values[W].get();this.keys&&this.keys.remove(W),delete this.values[W],delete this.target[W];var Ee=Mt||cn?{type:"remove",object:Z,oldValue:pr,name:W}:null;cn&&es(l({},Ee,{name:this.name,key:W})),Mt&&hs(this,Ee),cn&&ds()}finally{Dr()}}},P.prototype.illegalAccess=function(W,Z){console.warn("Property '"+Z+"' of '"+W+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},P.prototype.observe=function(W,Z){return ja(this,W)},P.prototype.intercept=function(W){return vs(this,W)},P.prototype.getKeys=function(){var W=this;return void 0===this.keys&&(this.keys=new xr(Object.keys(this.values).filter(function(Z){return W.values[Z]instanceof Kr}),Cn,"keys("+this.name+")",!0)),this.keys.slice()},P}();function ft(P,W,Z){void 0===W&&(W=""),void 0===Z&&(Z=tr);var Ee=P.$mobx;return Ee||(ie(P)||(W=(P.constructor.name||"ObservableObject")+"@"+x()),W||(W="ObservableObject@"+x()),he(P,"$mobx",Ee=new Se(P,W,Z)),Ee)}var In=Object.create(null),Xn=Object.create(null);function pi(P){return P.$mobx||(er(P),P.$mobx)}var Un=Me("ObservableObjectAdministration",Se);function lr(P){return!!Y(P)&&(er(P),Un(P.$mobx))}function dr(P,W){if("object"==typeof P&&null!==P){if(bi(P))return void 0!==W&&j(!1),P.$mobx.atom;if(G(P))return P.$mobx;if(Bi(P)){var Z=P;return void 0===W?dr(Z._keys):((Ee=Z._data.get(W)||Z._hasMap.get(W))||j(!1),Ee)}var Ee;if(er(P),lr(P))return W?((Ee=P.$mobx.values[W])||j(!1),Ee):j(!1);if(It(P)||se(P)||Go(P))return P}else if("function"==typeof P&&Go(P.$mobx))return P.$mobx;return j(!1)}function li(P,W){return P||j("Expecting some object"),void 0!==W?li(dr(P,W)):It(P)||se(P)||Go(P)||Bi(P)||G(P)?P:(er(P),P.$mobx?P.$mobx:void j(!1))}var Ao=Object.prototype.toString;function Qo(P,W,Z){return void 0===Z&&(Z=-1),jo(P,W,Z)}function jo(P,W,Z,Ee,Mt){if(P===W)return 0!==P||1/P==1/W;if(null==P||null==W)return!1;if(P!=P)return W!=W;var cn=typeof P;if("function"!==cn&&"object"!==cn&&"object"!=typeof W)return!1;P=uo(P),W=uo(W);var pr=Ao.call(P);if(pr!==Ao.call(W))return!1;switch(pr){case"[object RegExp]":case"[object String]":return""+P==""+W;case"[object Number]":return+P!=+P?+W!=+W:0==+P?1/+P==1/W:+P==+W;case"[object Date]":case"[object Boolean]":return+P==+W;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(P)===Symbol.valueOf.call(W)}var Rr="[object Array]"===pr;if(!Rr){if("object"!=typeof P||"object"!=typeof W)return!1;var ui=P.constructor,To=W.constructor;if(ui!==To&&!("function"==typeof ui&&ui instanceof ui&&"function"==typeof To&&To instanceof To)&&"constructor"in P&&"constructor"in W)return!1}if(0===Z)return!1;Z<0&&(Z=-1),Mt=Mt||[];for(var Io=(Ee=Ee||[]).length;Io--;)if(Ee[Io]===P)return Mt[Io]===W;if(Ee.push(P),Mt.push(W),Rr){if((Io=P.length)!==W.length)return!1;for(;Io--;)if(!jo(P[Io],W[Io],Z-1,Ee,Mt))return!1}else{var os=Object.keys(P),Ta=void 0;if(Io=os.length,Object.keys(W).length!==Io)return!1;for(;Io--;)if(!eo(W,Ta=os[Io])||!jo(P[Ta],W[Ta],Z-1,Ee,Mt))return!1}return Ee.pop(),Mt.pop(),!0}function uo(P){return bi(P)?P.peek():ue(P)||Bi(P)||He(P)||G(P)?$e(P.entries()):P}function eo(P,W){return Object.prototype.hasOwnProperty.call(P,W)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(P){return Ct.spyListeners.push(P),M(function(){Ct.spyListeners=Ct.spyListeners.filter(function(W){return W!==P})})},extras:{getDebugName:function(P,W){return(void 0!==W?dr(P,W):lr(P)||Bi(P)||G(P)?li(P):dr(P)).name}},$mobx:"$mobx"});const fl=function(P,W,Z){switch(Z.length){case 0:return P.call(W);case 1:return P.call(W,Z[0]);case 2:return P.call(W,Z[0],Z[1]);case 3:return P.call(W,Z[0],Z[1],Z[2])}return P.apply(W,Z)},Es=function(P){return P};var Ll=Math.max;const mo=function(P,W,Z){return W=Ll(void 0===W?P.length-1:W,0),function(){for(var Ee=arguments,Mt=-1,cn=Ll(Ee.length-W,0),pr=Array(cn);++Mt<cn;)pr[Mt]=Ee[W+Mt];Mt=-1;for(var Rr=Array(W+1);++Mt<W;)Rr[Mt]=Ee[Mt];return Rr[W]=Z(pr),fl(P,this,Rr)}},qc=function(P){return function(){return P}};var yc=o(99567),kl=Date.now;const Fe=function(P){var W=0,Z=0;return function(){var Ee=kl(),Mt=16-(Ee-Z);if(Z=Ee,Mt>0){if(++W>=800)return arguments[0]}else W=0;return P.apply(void 0,arguments)}}(yc.Z?function(P,W){return(0,yc.Z)(P,"toString",{configurable:!0,enumerable:!1,value:qc(W),writable:!0})}:Es),Ot=function(P,W){return Fe(mo(P,W,Es),P+"")};var xe=o(7475),ke=o(2951),Te=o(66224);const Re=function(P,W,Z){(void 0!==Z&&!(0,Te.Z)(P[W],Z)||void 0===Z&&!(W in P))&&(0,ke.Z)(P,W,Z)},en=function(W,Z,Ee){for(var Mt=-1,cn=Object(W),pr=Ee(W),Rr=pr.length;Rr--;){var ui=pr[++Mt];if(!1===Z(cn[ui],ui,cn))break}return W};var vn=o(27672),Gn=o(1044),kn=o(36889),zn=o(22595),jr=o(2172),kr=o(34654),Gr=o(18402),ci=o(6539);var Ai=o(12434),fo=o(58209),po=o(4214),No=o(46382),wo=o(11595),Vi=Function.prototype.toString,Wo=Object.prototype.hasOwnProperty,Po=Vi.call(Object);const xo=function(P){if(!(0,ci.Z)(P)||"[object Object]"!=(0,No.Z)(P))return!1;var W=(0,wo.Z)(P);if(null===W)return!0;var Z=Wo.call(W,"constructor")&&W.constructor;return"function"==typeof Z&&Z instanceof Z&&Vi.call(Z)==Po};var Ps=o(99436);const Hs=function(P,W){if(("constructor"!==W||"function"!=typeof P[W])&&"__proto__"!=W)return P[W]};var Pa=o(57640),Oa=o(76212);const Aa=function(P,W,Z,Ee,Mt,cn,pr){var Rr=Hs(P,Z),ui=Hs(W,Z),To=pr.get(ui);if(To)Re(P,Z,To);else{var Io=cn?cn(Rr,ui,Z+"",P,W,pr):void 0,os=void 0===Io;if(os){var Ta=(0,kr.Z)(ui),_l=!Ta&&(0,Ai.Z)(ui),qa=!Ta&&!_l&&(0,Ps.Z)(ui);Io=ui,Ta||_l||qa?(0,kr.Z)(Rr)?Io=Rr:function(P){return(0,ci.Z)(P)&&(0,Gr.Z)(P)}(Rr)?Io=(0,kn.Z)(Rr):_l?(os=!1,Io=(0,vn.Z)(ui,!0)):qa?(os=!1,Io=(0,Gn.Z)(ui,!0)):Io=[]:xo(ui)||(0,jr.Z)(ui)?(Io=Rr,(0,jr.Z)(Rr)?Io=function(P){return(0,Pa.Z)(P,(0,Oa.Z)(P))}(Rr):(!(0,po.Z)(Rr)||(0,fo.Z)(Rr))&&(Io=(0,zn.Z)(ui))):os=!1}os&&(pr.set(ui,Io),Mt(Io,ui,Ee,cn,pr),pr.delete(ui)),Re(P,Z,Io)}},La=function zs(P,W,Z,Ee,Mt){P!==W&&en(W,function(cn,pr){if(Mt||(Mt=new xe.Z),(0,po.Z)(cn))Aa(P,W,pr,Z,zs,Ee,Mt);else{var Rr=Ee?Ee(Hs(P,pr),cn,pr+"",P,W,Mt):void 0;void 0===Rr&&(Rr=cn),Re(P,pr,Rr)}},Oa.Z)},Ds=function ws(P,W,Z,Ee,Mt,cn){return(0,po.Z)(P)&&(0,po.Z)(W)&&(cn.set(W,P),La(P,W,void 0,ws,cn),cn.delete(W)),P};var Ws=o(28078);const Zs=function(P,W,Z){if(!(0,po.Z)(Z))return!1;var Ee=typeof W;return!!("number"==Ee?(0,Gr.Z)(Z)&&(0,Ws.Z)(W,Z.length):"string"==Ee&&W in Z)&&(0,Te.Z)(Z[W],P)},Ha=function(P){return Ot(function(W,Z){var Ee=-1,Mt=Z.length,cn=Mt>1?Z[Mt-1]:void 0,pr=Mt>2?Z[2]:void 0;for(cn=P.length>3&&"function"==typeof cn?(Mt--,cn):void 0,pr&&Zs(Z[0],Z[1],pr)&&(cn=Mt<3?void 0:cn,Mt=1),W=Object(W);++Ee<Mt;){var Rr=Z[Ee];Rr&&P(W,Rr,Ee,cn)}return W})}(function(P,W,Z,Ee){La(P,W,Z,Ee)}),Us=Ot(function(P){return P.push(void 0,Ds),fl(Ha,void 0,P)}),Zl=function(P){return"symbol"==typeof P||(0,ci.Z)(P)&&"[object Symbol]"==(0,No.Z)(P)};var lc=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Va=/^\w*$/;const Oc=function(P,W){if((0,kr.Z)(P))return!1;var Z=typeof P;return!("number"!=Z&&"symbol"!=Z&&"boolean"!=Z&&null!=P&&!Zl(P))||Va.test(P)||!lc.test(P)||null!=W&&P in Object(W)};var pc=o(79489);function _a(P,W){if("function"!=typeof P||null!=W&&"function"!=typeof W)throw new TypeError("Expected a function");var Z=function(){var Ee=arguments,Mt=W?W.apply(this,Ee):Ee[0],cn=Z.cache;if(cn.has(Mt))return cn.get(Mt);var pr=P.apply(this,Ee);return Z.cache=cn.set(Mt,pr)||cn,pr};return Z.cache=new(_a.Cache||pc.Z),Z}_a.Cache=pc.Z;var ou=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xl=/\\(\\)?/g;const el=(W=_a(function(P){var W=[];return 46===P.charCodeAt(0)&&W.push(""),P.replace(ou,function(Z,Ee,Mt,cn){W.push(Mt?cn.replace(xl,"$1"):Ee||Z)}),W},function(Ee){return 500===Z.size&&Z.clear(),Ee}),Z=W.cache,W);var W,Z,tl=o(35770);const bc=function(P,W){for(var Z=-1,Ee=null==P?0:P.length,Mt=Array(Ee);++Z<Ee;)Mt[Z]=W(P[Z],Z,P);return Mt};var hc=tl.Z?tl.Z.prototype:void 0,Jl=hc?hc.toString:void 0;const yl=function nl(P){if("string"==typeof P)return P;if((0,kr.Z)(P))return bc(P,nl)+"";if(Zl(P))return Jl?Jl.call(P):"";var W=P+"";return"0"==W&&1/P==-1/0?"-0":W},p=function(P){return null==P?"":yl(P)},N=function(P,W){return(0,kr.Z)(P)?P:Oc(P,W)?[P]:el(p(P))},de=function(P){if("string"==typeof P||Zl(P))return P;var W=P+"";return"0"==W&&1/P==-1/0?"-0":W},qe=function(P,W){for(var Z=0,Ee=(W=N(W,P)).length;null!=P&&Z<Ee;)P=P[de(W[Z++])];return Z&&Z==Ee?P:void 0},_t=function(P,W,Z){var Ee=null==P?void 0:qe(P,W);return void 0===Ee?Z:Ee};var Yt=o(57765);const wn=function(P){var W=null==P?0:P.length;return W?P[W-1]:void 0},Yr=function(P,W){return W.length<2?P:qe(P,function(P,W,Z){var Ee=-1,Mt=P.length;W<0&&(W=-W>Mt?0:Mt+W),(Z=Z>Mt?Mt:Z)<0&&(Z+=Mt),Mt=W>Z?0:Z-W>>>0,W>>>=0;for(var cn=Array(Mt);++Ee<Mt;)cn[Ee]=P[Ee+W];return cn}(W,0,-1))},yo=function(P,W){return W=N(W,P),null==(P=Yr(P,W))||delete P[de(wn(W))]},Xo=function(P){return xo(P)?void 0:P};var ts=o(57052),_s=tl.Z?tl.Z.isConcatSpreadable:void 0;const Ms=function(P){return(0,kr.Z)(P)||(0,jr.Z)(P)||!!(_s&&P&&P[_s])},ya=function xs(P,W,Z,Ee,Mt){var cn=-1,pr=P.length;for(Z||(Z=Ms),Mt||(Mt=[]);++cn<pr;){var Rr=P[cn];W>0&&Z(Rr)?W>1?xs(Rr,W-1,Z,Ee,Mt):(0,ts.Z)(Mt,Rr):Ee||(Mt[Mt.length]=Rr)}return Mt},Ga=function(P){return null!=P&&P.length?ya(P,1):[]},rl=function(P){return Fe(mo(P,void 0,Ga),P+"")};var Gl=o(23359);const yt=rl(function(P,W){var Z={};if(null==P)return Z;var Ee=!1;W=bc(W,function(cn){return cn=N(cn,P),Ee||(Ee=cn.length>1),cn}),(0,Pa.Z)(P,(0,Gl.Z)(P),Z),Ee&&(Z=(0,Yt.Z)(Z,7,Xo));for(var Mt=W.length;Mt--;)yo(Z,W[Mt]);return Z}),fs=function(P,W){for(var Z=-1,Ee=null==P?0:P.length;++Z<Ee;)if(W(P[Z],Z,P))return!0;return!1};function Gu(P){var W=-1,Z=null==P?0:P.length;for(this.__data__=new pc.Z;++W<Z;)this.add(P[W])}Gu.prototype.add=Gu.prototype.push=function(P){return this.__data__.set(P,"__lodash_hash_undefined__"),this},Gu.prototype.has=function(P){return this.__data__.has(P)};const Sd=Gu,Md=function(P,W){return P.has(W)},Od=function(P,W,Z,Ee,Mt,cn){var pr=1&Z,Rr=P.length,ui=W.length;if(Rr!=ui&&!(pr&&ui>Rr))return!1;var To=cn.get(P),Io=cn.get(W);if(To&&Io)return To==W&&Io==P;var os=-1,Ta=!0,_l=2&Z?new Sd:void 0;for(cn.set(P,W),cn.set(W,P);++os<Rr;){var qa=P[os],Rl=W[os];if(Ee)var Vc=pr?Ee(Rl,qa,os,W,P,cn):Ee(qa,Rl,os,P,W,cn);if(void 0!==Vc){if(Vc)continue;Ta=!1;break}if(_l){if(!fs(W,function(jc,ed){if(!Md(_l,ed)&&(qa===jc||Mt(qa,jc,Z,Ee,cn)))return _l.push(ed)})){Ta=!1;break}}else if(qa!==Rl&&!Mt(qa,Rl,Z,Ee,cn)){Ta=!1;break}}return cn.delete(P),cn.delete(W),Ta};var Eu=o(83345);const Is=function(P){var W=-1,Z=Array(P.size);return P.forEach(function(Ee,Mt){Z[++W]=[Mt,Ee]}),Z},Nf=function(P){var W=-1,Z=Array(P.size);return P.forEach(function(Ee){Z[++W]=Ee}),Z};var ud=tl.Z?tl.Z.prototype:void 0,wd=ud?ud.valueOf:void 0;var dd=o(22018),Yc=Object.prototype.hasOwnProperty;var fd=o(81901),Ff="[object Arguments]",V="[object Array]",pe="[object Object]",K=Object.prototype.hasOwnProperty;const Rt=function(P,W,Z,Ee,Mt,cn){var pr=(0,kr.Z)(P),Rr=(0,kr.Z)(W),ui=pr?V:(0,fd.Z)(P),To=Rr?V:(0,fd.Z)(W),Io=(ui=ui==Ff?pe:ui)==pe,os=(To=To==Ff?pe:To)==pe,Ta=ui==To;if(Ta&&(0,Ai.Z)(P)){if(!(0,Ai.Z)(W))return!1;pr=!0,Io=!1}if(Ta&&!Io)return cn||(cn=new xe.Z),pr||(0,Ps.Z)(P)?Od(P,W,Z,Ee,Mt,cn):function(P,W,Z,Ee,Mt,cn,pr){switch(Z){case"[object DataView]":if(P.byteLength!=W.byteLength||P.byteOffset!=W.byteOffset)return!1;P=P.buffer,W=W.buffer;case"[object ArrayBuffer]":return!(P.byteLength!=W.byteLength||!cn(new Eu.Z(P),new Eu.Z(W)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,Te.Z)(+P,+W);case"[object Error]":return P.name==W.name&&P.message==W.message;case"[object RegExp]":case"[object String]":return P==W+"";case"[object Map]":var Rr=Is;case"[object Set]":if(Rr||(Rr=Nf),P.size!=W.size&&!(1&Ee))return!1;var To=pr.get(P);if(To)return To==W;Ee|=2,pr.set(P,W);var Io=Od(Rr(P),Rr(W),Ee,Mt,cn,pr);return pr.delete(P),Io;case"[object Symbol]":if(wd)return wd.call(P)==wd.call(W)}return!1}(P,W,ui,Z,Ee,Mt,cn);if(!(1&Z)){var _l=Io&&K.call(P,"__wrapped__"),qa=os&&K.call(W,"__wrapped__");if(_l||qa){var Rl=_l?P.value():P,Vc=qa?W.value():W;return cn||(cn=new xe.Z),Mt(Rl,Vc,Z,Ee,cn)}}return!!Ta&&(cn||(cn=new xe.Z),function(P,W,Z,Ee,Mt,cn){var pr=1&Z,Rr=(0,dd.Z)(P),ui=Rr.length;if(ui!=(0,dd.Z)(W).length&&!pr)return!1;for(var os=ui;os--;){var Ta=Rr[os];if(!(pr?Ta in W:Yc.call(W,Ta)))return!1}var _l=cn.get(P),qa=cn.get(W);if(_l&&qa)return _l==W&&qa==P;var Rl=!0;cn.set(P,W),cn.set(W,P);for(var Vc=pr;++os<ui;){var jc=P[Ta=Rr[os]],ed=W[Ta];if(Ee)var zf=pr?Ee(ed,jc,Ta,W,P,cn):Ee(jc,ed,Ta,P,W,cn);if(!(void 0===zf?jc===ed||Mt(jc,ed,Z,Ee,cn):zf)){Rl=!1;break}Vc||(Vc="constructor"==Ta)}if(Rl&&!Vc){var Wf=P.constructor,tu=W.constructor;Wf!=tu&&"constructor"in P&&"constructor"in W&&!("function"==typeof Wf&&Wf instanceof Wf&&"function"==typeof tu&&tu instanceof tu)&&(Rl=!1)}return cn.delete(P),cn.delete(W),Rl}(P,W,Z,Ee,Mt,cn))},Hr=function vr(P,W,Z,Ee,Mt){return P===W||(null==P||null==W||!(0,ci.Z)(P)&&!(0,ci.Z)(W)?P!=P&&W!=W:Rt(P,W,Z,Ee,vr,Mt))},us=function(P){return P==P&&!(0,po.Z)(P)};var Ks=o(6251);const al=function(P,W){return function(Z){return null!=Z&&Z[P]===W&&(void 0!==W||P in Object(Z))}},ea=function(P){var W=function(P){for(var W=(0,Ks.Z)(P),Z=W.length;Z--;){var Ee=W[Z],Mt=P[Ee];W[Z]=[Ee,Mt,us(Mt)]}return W}(P);return 1==W.length&&W[0][2]?al(W[0][0],W[0][1]):function(Z){return Z===P||function(P,W,Z,Ee){var Mt=Z.length,cn=Mt,pr=!Ee;if(null==P)return!cn;for(P=Object(P);Mt--;){var Rr=Z[Mt];if(pr&&Rr[2]?Rr[1]!==P[Rr[0]]:!(Rr[0]in P))return!1}for(;++Mt<cn;){var ui=(Rr=Z[Mt])[0],To=P[ui],Io=Rr[1];if(pr&&Rr[2]){if(void 0===To&&!(ui in P))return!1}else{var os=new xe.Z;if(Ee)var Ta=Ee(To,Io,ui,P,W,os);if(!(void 0===Ta?Hr(Io,To,3,Ee,os):Ta))return!1}}return!0}(Z,P,W)}},Ul=function(P,W){return null!=P&&W in Object(P)};var zl=o(19238);const _u=function(P,W){return null!=P&&function(P,W,Z){for(var Ee=-1,Mt=(W=N(W,P)).length,cn=!1;++Ee<Mt;){var pr=de(W[Ee]);if(!(cn=null!=P&&Z(P,pr)))break;P=P[pr]}return cn||++Ee!=Mt?cn:!!(Mt=null==P?0:P.length)&&(0,zl.Z)(Mt)&&(0,Ws.Z)(pr,Mt)&&((0,kr.Z)(P)||(0,jr.Z)(P))}(P,W,Ul)},is=function(P){return Oc(P)?function(P){return function(W){return null==W?void 0:W[P]}}(de(P)):function(P){return function(W){return qe(W,P)}}(P)},hd=function(P){return"function"==typeof P?P:null==P?Es:"object"==typeof P?(0,kr.Z)(P)?function(P,W){return Oc(P)&&us(W)?al(de(P),W):function(Z){var Ee=_t(Z,P);return void 0===Ee&&Ee===W?_u(Z,P):Hr(W,Ee,3)}}(P[0],P[1]):ea(P):is(P)},_d=function(Z,Ee){if(null==Z)return Z;if(!(0,Gr.Z)(Z))return function(P,W){return P&&en(P,W,Ks.Z)}(Z,Ee);for(var Mt=Z.length,cn=-1,pr=Object(Z);++cn<Mt&&!1!==Ee(pr[cn],cn,pr););return Z},Mu=function(P,W){var Z;return _d(P,function(Ee,Mt,cn){return!(Z=W(Ee,Mt,cn))}),!!Z},lu=function(P,W){for(var Z=-1,Ee=null==P?0:P.length;++Z<Ee;)if(!W(P[Z],Z,P))return!1;return!0},Bd=function(P,W){var Z=!0;return _d(P,function(Ee,Mt,cn){return Z=!!W(Ee,Mt,cn)}),Z},uf=function(P){return P&&P.length?P[0]:void 0},df=function(P){for(var W=-1,Z=null==P?0:P.length,Ee=0,Mt=[];++W<Z;){var cn=P[W];cn&&(Mt[Ee++]=cn)}return Mt},sp=function(P,W,Z,Ee){for(var Mt=P.length,cn=Z+(Ee?1:-1);Ee?cn--:++cn<Mt;)if(W(P[cn],cn,P))return cn;return-1};var mu=/\s/;var $f=/^\s+/;const vd=function(P){return P&&P.slice(0,function(P){for(var W=P.length;W--&&mu.test(P.charAt(W)););return W}(P)+1).replace($f,"")};var Ou=/^[-+]0x[0-9a-f]+$/i,eu=/^0b[01]+$/i,pf=/^0o[0-7]+$/i,Yd=parseInt;const Mp=function(P){if("number"==typeof P)return P;if(Zl(P))return NaN;if((0,po.Z)(P)){var W="function"==typeof P.valueOf?P.valueOf():P;P=(0,po.Z)(W)?W+"":W}if("string"!=typeof P)return 0===P?P:+P;P=vd(P);var Z=eu.test(P);return Z||pf.test(P)?Yd(P.slice(2),Z?2:8):Ou.test(P)?NaN:+P},Hc=function(P){var W=function(P){return P?1/0===(P=Mp(P))||-1/0===P?17976931348623157e292*(P<0?-1:1):P==P?P:0:0===P?P:0}(P),Z=W%1;return W==W?Z?W-Z:W:0};var Zd=Math.max;const bd=function(W,Z,Ee){var Mt=Object(W);if(!(0,Gr.Z)(W)){var cn=hd(Z);W=(0,Ks.Z)(W),Z=function(Rr){return cn(Mt[Rr],Rr,Mt)}}var pr=function(P,W,Z){var Ee=null==P?0:P.length;if(!Ee)return-1;var Mt=null==Z?0:Hc(Z);return Mt<0&&(Mt=Zd(Ee+Mt,0)),sp(P,hd(W),Mt)}(W,Z,Ee);return pr>-1?Mt[cn?W[pr]:pr]:void 0},Mc=function(P){return"string"==typeof P||!(0,kr.Z)(P)&&(0,ci.Z)(P)&&"[object String]"==(0,No.Z)(P)};var Iu=o(40309);const Dd=function(){return Iu.Z.Date.now()};var Zp=Math.max,Bf=Math.min;const xd=function(P,W,Z){var Ee=!0,Mt=!0;if("function"!=typeof P)throw new TypeError("Expected a function");return(0,po.Z)(Z)&&(Ee="leading"in Z?!!Z.leading:Ee,Mt="trailing"in Z?!!Z.trailing:Mt),function(P,W,Z){var Ee,Mt,cn,pr,Rr,ui,To=0,Io=!1,os=!1,Ta=!0;if("function"!=typeof P)throw new TypeError("Expected a function");function _l(vc){var td=Ee,Al=Mt;return Ee=Mt=void 0,To=vc,pr=P.apply(Al,td)}function qa(vc){return To=vc,Rr=setTimeout(jc,W),Io?_l(vc):pr}function Vc(vc){var td=vc-ui;return void 0===ui||td>=W||td<0||os&&vc-To>=cn}function jc(){var vc=Dd();if(Vc(vc))return ed(vc);Rr=setTimeout(jc,function(vc){var rc=W-(vc-ui);return os?Bf(rc,cn-(vc-To)):rc}(vc))}function ed(vc){return Rr=void 0,Ta&&Ee?_l(vc):(Ee=Mt=void 0,pr)}function tu(){var vc=Dd(),td=Vc(vc);if(Ee=arguments,Mt=this,ui=vc,td){if(void 0===Rr)return qa(ui);if(os)return clearTimeout(Rr),Rr=setTimeout(jc,W),_l(ui)}return void 0===Rr&&(Rr=setTimeout(jc,W)),pr}return W=Mp(W)||0,(0,po.Z)(Z)&&(Io=!!Z.leading,cn=(os="maxWait"in Z)?Zp(Mp(Z.maxWait)||0,W):cn,Ta="trailing"in Z?!!Z.trailing:Ta),tu.cancel=function(){void 0!==Rr&&clearTimeout(Rr),To=0,Ee=ui=Mt=Rr=void 0},tu.flush=function(){return void 0===Rr?pr:ed(Dd())},tu}(P,W,{leading:Ee,maxWait:W,trailing:Mt})},Zf=function(P){return P!=P},Pe=function(P){return null==P?[]:function(P,W){return bc(W,function(Z){return P[Z]})}(P,(0,Ks.Z)(P))};var tt=Math.max;const bn=function(P,W,Z,Ee){P=(0,Gr.Z)(P)?P:Pe(P),Z=Z&&!Ee?Hc(Z):0;var Mt=P.length;return Z<0&&(Z=tt(Mt+Z,0)),Mc(P)?Z<=Mt&&P.indexOf(W,Z)>-1:!!Mt&&function(P,W,Z){return W==W?function(P,W,Z){for(var Ee=Z-1,Mt=P.length;++Ee<Mt;)if(P[Ee]===W)return Ee;return-1}(P,W,Z):sp(P,Zf,Z)}(P,W,Z)>-1};var rr=o(15427);const qr=function(P,W,Z,Ee){if(!(0,po.Z)(P))return P;for(var Mt=-1,cn=(W=N(W,P)).length,pr=cn-1,Rr=P;null!=Rr&&++Mt<cn;){var ui=de(W[Mt]),To=Z;if("__proto__"===ui||"constructor"===ui||"prototype"===ui)return P;if(Mt!=pr){var Io=Rr[ui];void 0===(To=Ee?Ee(Io,ui,Rr):void 0)&&(To=(0,po.Z)(Io)?Io:(0,Ws.Z)(W[Mt+1])?[]:{})}(0,rr.Z)(Rr,ui,To),Rr=Rr[ui]}return P},gs=function(P,W){return function(P,W,Z){for(var Ee=-1,Mt=W.length,cn={};++Ee<Mt;){var pr=W[Ee],Rr=qe(P,pr);Z(Rr,pr)&&qr(cn,N(pr,P),Rr)}return cn}(P,W,function(Z,Ee){return _u(P,Ee)})},Vs=rl(function(P,W){return null==P?{}:gs(P,W)});function oi(P,W){1&P&&(t.TgZ(0,"span"),t._uU(1,"loading..."),t.qZA())}const Wr=function(P){return{$implicit:P}};function ti(P,W){if(1&P&&(t.ynx(0),t.TgZ(1,"div"),t.Hsn(2),t.qZA(),t.BQk()),2&P){const Z=t.oxw();t.xp6(1),t.Udp("height",Z.getTotalHeight())}}const Gi=function(){return{dontDetach:!0}},ro=["*"],ia=["loadingTemplate"],ps=["treeNodeTemplate"],la=["treeNodeWrapperTemplate"],Fa=["treeNodeFullTemplate"],Gs=["viewport"],Tl=function(P,W,Z,Ee){return{loadingTemplate:P,treeNodeTemplate:W,treeNodeWrapperTemplate:Z,treeNodeFullTemplate:Ee}};function Vp(P,W){if(1&P&&t._UZ(0,"tree-node-collection",4),2&P){const Z=t.oxw();t.Q6J("nodes",Z.treeModel.roots)("treeModel",Z.treeModel)("templates",t.l5B(3,Tl,Z.loadingTemplate,Z.treeNodeTemplate,Z.treeNodeWrapperTemplate,Z.treeNodeFullTemplate))}}function bh(P,W){if(1&P&&t._UZ(0,"tree-node-drop-slot",5),2&P){const Z=t.oxw();t.Q6J("dropIndex",0)("node",Z.treeModel.virtualRoot)}}function o_(P,W){if(1&P&&t._UZ(0,"tree-node-drop-slot",6),2&P){const Z=t.oxw(3);t.Q6J("dropIndex",Z.node.index)("node",Z.node.parent)}}function s_(P,W){if(1&P&&(t.TgZ(0,"div"),t.YNc(1,o_,1,2,"tree-node-drop-slot",3),t._UZ(2,"tree-node-wrapper",4),t._UZ(3,"tree-node-children",5),t._UZ(4,"tree-node-drop-slot",6),t.qZA()),2&P){const Z=t.oxw(2);t.Tol(Z.node.getClass()),t.ekj("tree-node",!0)("tree-node-expanded",Z.node.isExpanded&&Z.node.hasChildren)("tree-node-collapsed",Z.node.isCollapsed&&Z.node.hasChildren)("tree-node-leaf",Z.node.isLeaf)("tree-node-active",Z.node.isActive)("tree-node-focused",Z.node.isFocused),t.xp6(1),t.Q6J("ngIf",0===Z.index),t.xp6(1),t.Q6J("node",Z.node)("index",Z.index)("templates",Z.templates),t.xp6(1),t.Q6J("node",Z.node)("templates",Z.templates),t.xp6(1),t.Q6J("dropIndex",Z.node.index+1)("node",Z.node.parent)}}const Lu=function(P,W,Z,Ee){return{$implicit:P,node:W,index:Z,templates:Ee}};function a_(P,W){if(1&P&&(t.ynx(0),t.YNc(1,s_,5,22,"div",1),t.GkF(2,2),t.BQk()),2&P){const Z=t.oxw();t.xp6(1),t.Q6J("ngIf",!Z.templates.treeNodeFullTemplate),t.xp6(1),t.Q6J("ngTemplateOutlet",Z.templates.treeNodeFullTemplate)("ngTemplateOutletContext",t.l5B(3,Lu,Z.node,Z.node,Z.index,Z.templates))}}function Eh(P,W){if(1&P&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&P){const Z=t.oxw();t.xp6(1),t.Oqu(Z.node.displayField)}}const l_=function(P,W,Z){return{$implicit:P,node:W,index:Z}};function c_(P,W){if(1&P){const Z=t.EpF();t.TgZ(0,"span",3),t.NdJ("click",function(Mt){return t.CHM(Z),t.oxw(2).node.mouseAction("expanderClick",Mt)}),t._UZ(1,"span",4),t.qZA()}if(2&P){const Z=t.oxw(2);t.ekj("toggle-children-wrapper-expanded",Z.node.isExpanded)("toggle-children-wrapper-collapsed",Z.node.isCollapsed)}}function u_(P,W){1&P&&t._UZ(0,"span",5)}function d_(P,W){if(1&P&&(t.ynx(0),t.YNc(1,c_,2,4,"span",1),t.YNc(2,u_,1,0,"span",2),t.BQk()),2&P){const Z=t.oxw();t.xp6(1),t.Q6J("ngIf",Z.node.hasChildren),t.xp6(1),t.Q6J("ngIf",!Z.node.hasChildren)}}function Th(P,W){if(1&P&&t._UZ(0,"tree-node-collection",4),2&P){const Z=t.oxw(3);t.Q6J("nodes",Z.node.children)("templates",Z.templates)("treeModel",Z.node.treeModel)}}function Gp(P,W){if(1&P&&t._UZ(0,"tree-loading-component",5),2&P){const Z=t.oxw(3);t.Udp("padding-left",Z.node.getNodePadding()),t.Q6J("template",Z.templates.loadingTemplate)("node",Z.node)}}function Ch(P,W){if(1&P&&(t.TgZ(0,"div"),t.YNc(1,Th,1,3,"tree-node-collection",2),t.YNc(2,Gp,1,4,"tree-loading-component",3),t.qZA()),2&P){const Z=t.oxw(2);t.ekj("tree-children",!0)("tree-children-no-padding",Z.node.options.levelPadding),t.xp6(1),t.Q6J("ngIf",Z.node.children),t.xp6(1),t.Q6J("ngIf",!Z.node.children)}}function f_(P,W){if(1&P&&(t.ynx(0),t.YNc(1,Ch,3,6,"div",1),t.BQk()),2&P){const Z=t.oxw();t.xp6(1),t.Q6J("treeAnimateOpen",Z.node.isExpanded)("treeAnimateOpenSpeed",Z.node.options.animateSpeed)("treeAnimateOpenAcceleration",Z.node.options.animateAcceleration)("treeAnimateOpenEnabled",Z.node.options.animateExpand)}}function ca(P,W){if(1&P&&t._UZ(0,"tree-node",2),2&P){const Z=W.$implicit,Ee=W.index,Mt=t.oxw(2);t.Q6J("node",Z)("index",Ee)("templates",Mt.templates)}}function Sh(P,W){if(1&P&&(t.ynx(0),t.TgZ(1,"div"),t.YNc(2,ca,1,3,"tree-node",1),t.qZA(),t.BQk()),2&P){const Z=t.oxw();t.xp6(1),t.Udp("margin-top",Z.marginTop),t.xp6(1),t.Q6J("ngForOf",Z.viewportNodes)("ngForTrackBy",Z.trackNode)}}function Mh(P,W){if(1&P&&t._UZ(0,"tree-node-checkbox",4),2&P){const Z=t.oxw(2);t.Q6J("node",Z.node)}}function wp(P,W){if(1&P){const Z=t.EpF();t.TgZ(0,"div",2),t.YNc(1,Mh,1,1,"tree-node-checkbox",3),t._UZ(2,"tree-node-expander",4),t.TgZ(3,"div",5),t.NdJ("click",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("click",Mt)})("dblclick",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("dblClick",Mt)})("mouseover",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("mouseOver",Mt)})("mouseout",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("mouseOut",Mt)})("contextmenu",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("contextMenu",Mt)})("treeDrop",function(Mt){return t.CHM(Z),t.oxw().node.onDrop(Mt)})("treeDropDragOver",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("dragOver",Mt)})("treeDropDragLeave",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("dragLeave",Mt)})("treeDropDragEnter",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("dragEnter",Mt)}),t._UZ(4,"tree-node-content",6),t.qZA(),t.qZA()}if(2&P){const Z=t.oxw();t.Udp("padding-left",Z.node.getNodePadding()),t.xp6(1),t.Q6J("ngIf",Z.node.options.useCheckbox),t.xp6(1),t.Q6J("node",Z.node),t.xp6(1),t.ekj("node-content-wrapper-active",Z.node.isActive)("node-content-wrapper-focused",Z.node.isFocused),t.Q6J("treeAllowDrop",Z.node.allowDrop)("allowDragoverStyling",Z.node.allowDragoverStyling())("treeDrag",Z.node)("treeDragEnabled",Z.node.allowDrag()),t.xp6(1),t.Q6J("node",Z.node)("index",Z.index)("template",Z.templates.treeNodeTemplate)}}function Ju(P,W){if(1&P){const Z=t.EpF();t.ynx(0),t.TgZ(1,"input",1),t.NdJ("click",function(Mt){return t.CHM(Z),t.oxw().node.mouseAction("checkboxClick",Mt)}),t.qZA(),t.BQk()}if(2&P){const Z=t.oxw();t.xp6(1),t.Q6J("checked",Z.node.isSelected)("indeterminate",Z.node.isPartiallySelected)}}let mf=(()=>{class P{constructor(Z,Ee){this.templateRef=Z,this.viewContainer=Ee,this.templateBindings={}}ngOnInit(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)}shouldDetach(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach}autoDetect(Z){this.dispose=$r(()=>Z.detectChanges())}ngOnDestroy(){this.dispose&&this.dispose()}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(t.Rgc),t.Y36(t.s_b))},P.\u0275dir=t.lG2({type:P,selectors:[["","treeMobxAutorun",""]],inputs:{treeMobxAutorun:"treeMobxAutorun"}}),P})();const Fu={TOGGLE_ACTIVE:(P,W,Z)=>W&&W.toggleActivated(),TOGGLE_ACTIVE_MULTI:(P,W,Z)=>W&&W.toggleActivated(!0),TOGGLE_SELECTED:(P,W,Z)=>W&&W.toggleSelected(),ACTIVATE:(P,W,Z)=>W.setIsActive(!0),DEACTIVATE:(P,W,Z)=>W.setIsActive(!1),SELECT:(P,W,Z)=>W.setIsSelected(!0),DESELECT:(P,W,Z)=>W.setIsSelected(!1),FOCUS:(P,W,Z)=>W.focus(),TOGGLE_EXPANDED:(P,W,Z)=>W.hasChildren&&W.toggleExpanded(),EXPAND:(P,W,Z)=>W.expand(),COLLAPSE:(P,W,Z)=>W.collapse(),DRILL_DOWN:(P,W,Z)=>P.focusDrillDown(),DRILL_UP:(P,W,Z)=>P.focusDrillUp(),NEXT_NODE:(P,W,Z)=>P.focusNextNode(),PREVIOUS_NODE:(P,W,Z)=>P.focusPreviousNode(),MOVE_NODE:(P,W,Z,{from:Ee,to:Mt})=>{Z.ctrlKey?P.copyNode(Ee,Mt):P.moveNode(Ee,Mt)}},wh={mouse:{click:Fu.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:Fu.TOGGLE_EXPANDED,checkboxClick:Fu.TOGGLE_SELECTED,drop:Fu.MOVE_NODE},keys:{39:Fu.DRILL_DOWN,37:Fu.DRILL_UP,40:Fu.NEXT_NODE,38:Fu.PREVIOUS_NODE,32:Fu.TOGGLE_ACTIVE,13:Fu.TOGGLE_ACTIVE}};class Jp{constructor(W={}){this.options=W,this.actionMapping=Us({},this.options.actionMapping,wh),W.rtl&&(this.actionMapping.keys[39]=_t(W,["actionMapping","keys",39])||Fu.DRILL_UP,this.actionMapping.keys[37]=_t(W,["actionMapping","keys",37])||Fu.DRILL_DOWN)}get hasChildrenField(){return this.options.hasChildrenField||"hasChildren"}get childrenField(){return this.options.childrenField||"children"}get displayField(){return this.options.displayField||"name"}get idField(){return this.options.idField||"id"}get isExpandedField(){return this.options.isExpandedField||"isExpanded"}get getChildren(){return this.options.getChildren}get levelPadding(){return this.options.levelPadding||0}get useVirtualScroll(){return this.options.useVirtualScroll}get animateExpand(){return this.options.animateExpand}get animateSpeed(){return this.options.animateSpeed||1}get animateAcceleration(){return this.options.animateAcceleration||1.2}get scrollOnActivate(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate}get rtl(){return!!this.options.rtl}get rootId(){return this.options.rootId}get useCheckbox(){return this.options.useCheckbox}get useTriState(){return void 0===this.options.useTriState||this.options.useTriState}get scrollContainer(){return this.options.scrollContainer}get allowDragoverStyling(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling}getNodeClone(W){return this.options.getNodeClone?this.options.getNodeClone(W):yt(Object.assign({},W.data),["id"])}allowDrop(W,Z,Ee){return this.options.allowDrop instanceof Function?this.options.allowDrop(W,Z,Ee):void 0===this.options.allowDrop||this.options.allowDrop}allowDrag(W){return this.options.allowDrag instanceof Function?this.options.allowDrag(W):this.options.allowDrag}nodeClass(W){return this.options.nodeClass?this.options.nodeClass(W):""}nodeHeight(W){if(W.data.virtual)return 0;let Z=this.options.nodeHeight||22;return"function"==typeof Z&&(Z=Z(W)),Z+(0===W.index?2:1)*this.dropSlotHeight}get dropSlotHeight(){return function(P){return"number"==typeof P||(0,ci.Z)(P)&&"[object Number]"==(0,No.Z)(P)}(this.options.dropSlotHeight)?this.options.dropSlotHeight:2}}const nc={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"};var uu=function(P,W,Z,Ee){var pr,Mt=arguments.length,cn=Mt<3?W:null===Ee?Ee=Object.getOwnPropertyDescriptor(W,Z):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)cn=Reflect.decorate(P,W,Z,Ee);else for(var Rr=P.length-1;Rr>=0;Rr--)(pr=P[Rr])&&(cn=(Mt<3?pr(cn):Mt>3?pr(W,Z,cn):pr(W,Z))||cn);return Mt>3&&cn&&Object.defineProperty(W,Z,cn),cn},Cl=function(P,W){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(P,W)};let y_=(()=>{class P{constructor(Z,Ee,Mt,cn){this.data=Z,this.parent=Ee,this.treeModel=Mt,this.position=0,this.allowDrop=(pr,Rr)=>this.options.allowDrop(pr,{parent:this,index:0},Rr),this.allowDragoverStyling=()=>this.options.allowDragoverStyling,null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=cn,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}get isHidden(){return this.treeModel.isHidden(this)}get isExpanded(){return this.treeModel.isExpanded(this)}get isActive(){return this.treeModel.isActive(this)}get isFocused(){return this.treeModel.isNodeFocused(this)}get isSelected(){return this.isSelectable()?this.treeModel.isSelected(this):function(P,W,Z){var Ee=(0,kr.Z)(P)?fs:Mu;return Z&&Zs(P,W,Z)&&(W=void 0),Ee(P,hd(W))}(this.children,Z=>Z.isSelected)}get isAllSelected(){return this.isSelectable()?this.treeModel.isSelected(this):function(P,W,Z){var Ee=(0,kr.Z)(P)?lu:Bd;return Z&&Zs(P,W,Z)&&(W=void 0),Ee(P,hd(W))}(this.children,Z=>Z.isAllSelected)}get isPartiallySelected(){return this.isSelected&&!this.isAllSelected}get level(){return this.parent?this.parent.level+1:0}get path(){return this.parent?[...this.parent.path,this.id]:[]}get elementRef(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"}get originalNode(){return this._originalNode}get hasChildren(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)}get isCollapsed(){return!this.isExpanded}get isLeaf(){return!this.hasChildren}get isRoot(){return this.parent.data.virtual}get realParent(){return this.isRoot?null:this.parent}get options(){return this.treeModel.options}fireEvent(Z){this.treeModel.fireEvent(Z)}get displayField(){return this.getField("display")}get id(){return this.getField("id")}set id(Z){this.setField("id",Z)}getField(Z){return this.data[this.options[`${Z}Field`]]}setField(Z,Ee){this.data[this.options[`${Z}Field`]]=Ee}_findAdjacentSibling(Z,Ee=!1){const Mt=this._getParentsChildren(Ee),cn=Mt.indexOf(this);return Mt.length>cn+Z?Mt[cn+Z]:null}findNextSibling(Z=!1){return this._findAdjacentSibling(1,Z)}findPreviousSibling(Z=!1){return this._findAdjacentSibling(-1,Z)}getVisibleChildren(){return this.visibleChildren}get visibleChildren(){return(this.children||[]).filter(Z=>!Z.isHidden)}getFirstChild(Z=!1){return uf((Z?this.visibleChildren:this.children)||[])}getLastChild(Z=!1){return wn((Z?this.visibleChildren:this.children)||[])}findNextNode(Z=!0,Ee=!1){return Z&&this.isExpanded&&this.getFirstChild(Ee)||this.findNextSibling(Ee)||this.parent&&this.parent.findNextNode(!1,Ee)}findPreviousNode(Z=!1){let Ee=this.findPreviousSibling(Z);return Ee?Ee._getLastOpenDescendant(Z):this.realParent}_getLastOpenDescendant(Z=!1){const Ee=this.getLastChild(Z);return this.isCollapsed||!Ee?this:Ee._getLastOpenDescendant(Z)}_getParentsChildren(Z=!1){return this.parent&&(Z?this.parent.getVisibleChildren():this.parent.children)||[]}getIndexInParent(Z=!1){return this._getParentsChildren(Z).indexOf(this)}isDescendantOf(Z){return this===Z||this.parent&&this.parent.isDescendantOf(Z)}getNodePadding(){return this.options.levelPadding*(this.level-1)+"px"}getClass(){return[this.options.nodeClass(this),`tree-node-level-${this.level}`].join(" ")}onDrop(Z){this.mouseAction("drop",Z.event,{from:Z.element,to:{parent:this,index:0,dropOnNode:!0}})}allowDrag(){return this.options.allowDrag(this)}loadNodeChildren(){return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then(Z=>{Z&&(this.setField("children",Z),this._initChildren(),this.options.useTriState&&this.treeModel.isSelected(this)&&this.setIsSelected(!0),this.children.forEach(Ee=>{Ee.getField("isExpanded")&&Ee.hasChildren&&Ee.expand()}))}).then(()=>{this.fireEvent({eventName:nc.loadNodeChildren,node:this})}):Promise.resolve()}expand(){return this.isExpanded||this.toggleExpanded(),this}collapse(){return this.isExpanded&&this.toggleExpanded(),this}doForAll(Z){Promise.resolve(Z(this)).then(()=>{this.children&&this.children.forEach(Ee=>Ee.doForAll(Z))})}expandAll(){this.doForAll(Z=>Z.expand())}collapseAll(){this.doForAll(Z=>Z.collapse())}ensureVisible(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this}toggleExpanded(){return this.setIsExpanded(!this.isExpanded),this}setIsExpanded(Z){return this.hasChildren&&this.treeModel.setExpandedNode(this,Z),this}autoLoadChildren(){this.handler=Do(()=>this.isExpanded,Z=>{!this.children&&this.hasChildren&&Z&&this.loadNodeChildren()},{fireImmediately:!0})}dispose(){this.children&&this.children.forEach(Z=>Z.dispose()),this.handler&&this.handler(),this.parent=null,this.children=null}setIsActive(Z,Ee=!1){return this.treeModel.setActiveNode(this,Z,Ee),Z&&this.focus(this.options.scrollOnActivate),this}isSelectable(){return this.isLeaf||!this.children||!this.options.useTriState}setIsSelected(Z){return this.isSelectable()?this.treeModel.setSelectedNode(this,Z):this.visibleChildren.forEach(Ee=>Ee.setIsSelected(Z)),this}toggleSelected(){return this.setIsSelected(!this.isSelected),this}toggleActivated(Z=!1){return this.setIsActive(!this.isActive,Z),this}setActiveAndVisible(Z=!1){return this.setIsActive(!0,Z).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this}scrollIntoView(Z=!1){this.treeModel.virtualScroll.scrollIntoView(this,Z)}focus(Z=!0){let Ee=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),Z&&this.scrollIntoView(),Ee&&this.fireEvent({eventName:nc.blur,node:Ee}),this.fireEvent({eventName:nc.focus,node:this}),this}blur(){let Z=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),Z&&this.fireEvent({eventName:nc.blur,node:this}),this}setIsHidden(Z){this.treeModel.setIsHidden(this,Z)}hide(){this.setIsHidden(!0)}show(){this.setIsHidden(!1)}mouseAction(Z,Ee,Mt=null){this.treeModel.setFocus(!0);const pr=this.options.actionMapping.mouse[Z];pr&&pr(this.treeModel,this,Ee,Mt)}getSelfHeight(){return this.options.nodeHeight(this)}_initChildren(){this.children=this.getField("children").map((Z,Ee)=>new P(Z,this,this.treeModel,Ee))}}return uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isHidden",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isExpanded",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isActive",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isFocused",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isSelected",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isAllSelected",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"isPartiallySelected",null),uu([mt,Cl("design:type",Array)],P.prototype,"children",void 0),uu([mt,Cl("design:type",Number)],P.prototype,"index",void 0),uu([mt,Cl("design:type",Object)],P.prototype,"position",void 0),uu([mt,Cl("design:type",Number)],P.prototype,"height",void 0),uu([jt,Cl("design:type",Number),Cl("design:paramtypes",[])],P.prototype,"level",null),uu([jt,Cl("design:type",Array),Cl("design:paramtypes",[])],P.prototype,"path",null),uu([jt,Cl("design:type",Object),Cl("design:paramtypes",[])],P.prototype,"visibleChildren",null),uu([ee,Cl("design:type",Function),Cl("design:paramtypes",[Object]),Cl("design:returntype",void 0)],P.prototype,"setIsSelected",null),uu([ee,Cl("design:type",Function),Cl("design:paramtypes",[]),Cl("design:returntype",void 0)],P.prototype,"_initChildren",null),P})();var ll=function(P,W,Z,Ee){var pr,Mt=arguments.length,cn=Mt<3?W:null===Ee?Ee=Object.getOwnPropertyDescriptor(W,Z):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)cn=Reflect.decorate(P,W,Z,Ee);else for(var Rr=P.length-1;Rr>=0;Rr--)(pr=P[Rr])&&(cn=(Mt<3?pr(cn):Mt>3?pr(W,Z,cn):pr(W,Z))||cn);return Mt>3&&cn&&Object.defineProperty(W,Z,cn),cn},ko=function(P,W){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(P,W)};let Wa=(()=>{class P{constructor(){this.options=new Jp,this.eventNames=Object.keys(nc),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}fireEvent(Z){Z.treeModel=this,this.events[Z.eventName].emit(Z),this.events.event.emit(Z)}subscribe(Z,Ee){const Mt=this.events[Z].subscribe(Ee);this.subscriptions.push(Mt)}getFocusedNode(){return this.focusedNode}getActiveNode(){return this.activeNodes[0]}getActiveNodes(){return this.activeNodes}getVisibleRoots(){return this.virtualRoot.visibleChildren}getFirstRoot(Z=!1){return uf(Z?this.getVisibleRoots():this.roots)}getLastRoot(Z=!1){return wn(Z?this.getVisibleRoots():this.roots)}get isFocused(){return P.focusedTree===this}isNodeFocused(Z){return this.focusedNode===Z}isEmptyTree(){return this.roots&&0===this.roots.length}get focusedNode(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null}get expandedNodes(){const Z=Object.keys(this.expandedNodeIds).filter(Ee=>this.expandedNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return df(Z)}get activeNodes(){const Z=Object.keys(this.activeNodeIds).filter(Ee=>this.activeNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return df(Z)}get hiddenNodes(){const Z=Object.keys(this.hiddenNodeIds).filter(Ee=>this.hiddenNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return df(Z)}get selectedLeafNodes(){const Z=Object.keys(this.selectedLeafNodeIds).filter(Ee=>this.selectedLeafNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return df(Z)}getNodeByPath(Z,Ee=null){if(!Z)return null;if(Ee=Ee||this.virtualRoot,0===Z.length)return Ee;if(!Ee.children)return null;const Mt=Z.shift(),cn=bd(Ee.children,{id:Mt});return cn?this.getNodeByPath(Z,cn):null}getNodeById(Z){const Ee=Z.toString();return this.getNodeBy(Mt=>Mt.id.toString()===Ee)}getNodeBy(Z,Ee=null){if(!(Ee=Ee||this.virtualRoot).children)return null;const Mt=bd(Ee.children,Z);if(Mt)return Mt;for(let cn of Ee.children){const pr=this.getNodeBy(Z,cn);if(pr)return pr}}isExpanded(Z){return this.expandedNodeIds[Z.id]}isHidden(Z){return this.hiddenNodeIds[Z.id]}isActive(Z){return this.activeNodeIds[Z.id]}isSelected(Z){return this.selectedLeafNodeIds[Z.id]}ngOnDestroy(){this.dispose(),this.unsubscribeAll()}dispose(){this.virtualRoot&&this.virtualRoot.dispose()}unsubscribeAll(){this.subscriptions.forEach(Z=>Z.unsubscribe()),this.subscriptions=[]}setData({nodes:Z,options:Ee=null,events:Mt=null}){Ee&&(this.options=new Jp(Ee)),Mt&&(this.events=Mt),Z&&(this.nodes=Z),this.update()}update(){let Z={id:this.options.rootId,virtual:!0,[this.options.childrenField]:this.nodes};this.dispose(),this.virtualRoot=new y_(Z,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:nc.updateData})}setFocusedNode(Z){this.focusedNodeId=Z?Z.id:null}setFocus(Z){P.focusedTree=Z?this:null}doForAll(Z){this.roots.forEach(Ee=>Ee.doForAll(Z))}focusNextNode(){let Z=this.getFocusedNode(),Ee=Z?Z.findNextNode(!0,!0):this.getFirstRoot(!0);Ee&&Ee.focus()}focusPreviousNode(){let Z=this.getFocusedNode(),Ee=Z?Z.findPreviousNode(!0):this.getLastRoot(!0);Ee&&Ee.focus()}focusDrillDown(){let Z=this.getFocusedNode();if(Z&&Z.isCollapsed&&Z.hasChildren)Z.toggleExpanded();else{let Ee=Z?Z.getFirstChild(!0):this.getFirstRoot(!0);Ee&&Ee.focus()}}focusDrillUp(){let Z=this.getFocusedNode();if(Z)if(Z.isExpanded)Z.toggleExpanded();else{let Ee=Z.realParent;Ee&&Ee.focus()}}setActiveNode(Z,Ee,Mt=!1){Mt?this._setActiveNodeMulti(Z,Ee):this._setActiveNodeSingle(Z,Ee),Ee?(Z.focus(this.options.scrollOnActivate),this.fireEvent({eventName:nc.activate,node:Z}),this.fireEvent({eventName:nc.nodeActivate,node:Z})):(this.fireEvent({eventName:nc.deactivate,node:Z}),this.fireEvent({eventName:nc.nodeDeactivate,node:Z}))}setSelectedNode(Z,Ee){this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,{[Z.id]:Ee}),Ee?(Z.focus(),this.fireEvent({eventName:nc.select,node:Z})):this.fireEvent({eventName:nc.deselect,node:Z})}setExpandedNode(Z,Ee){this.expandedNodeIds=Object.assign({},this.expandedNodeIds,{[Z.id]:Ee}),this.fireEvent({eventName:nc.toggleExpanded,node:Z,isExpanded:Ee})}expandAll(){this.roots.forEach(Z=>Z.expandAll())}collapseAll(){this.roots.forEach(Z=>Z.collapseAll())}setIsHidden(Z,Ee){this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,{[Z.id]:Ee})}setHiddenNodeIds(Z){this.hiddenNodeIds=Z.reduce((Ee,Mt)=>Object.assign(Ee,{[Mt]:!0}),{})}performKeyAction(Z,Ee){const Mt=this.options.actionMapping.keys[Ee.keyCode];return!!Mt&&(Ee.preventDefault(),Mt(this,Z,Ee),!0)}filterNodes(Z,Ee=!0){let Mt;if(!Z)return this.clearFilter();if(Mc(Z))Mt=pr=>-1!==pr.displayField.toLowerCase().indexOf(Z.toLowerCase());else{if(!(0,fo.Z)(Z))return console.error("Don't know what to do with filter",Z),void console.error("Should be either a string or function");Mt=Z}const cn={};this.roots.forEach(pr=>this._filterNode(cn,pr,Mt,Ee)),this.hiddenNodeIds=cn,this.fireEvent({eventName:nc.changeFilter})}clearFilter(){this.hiddenNodeIds={},this.fireEvent({eventName:nc.changeFilter})}moveNode(Z,Ee){const Mt=Z.getIndexInParent(),cn=Z.parent;if(!this.canMoveNode(Z,Ee,Mt))return;const pr=cn.getField("children");Ee.parent.getField("children")||Ee.parent.setField("children",[]);const Rr=Ee.parent.getField("children"),ui=pr.splice(Mt,1)[0];let To=cn===Ee.parent&&Ee.index>Mt?Ee.index-1:Ee.index;Rr.splice(To,0,ui),cn.treeModel.update(),Ee.parent.treeModel!==cn.treeModel&&Ee.parent.treeModel.update(),this.fireEvent({eventName:nc.moveNode,node:ui,to:{parent:Ee.parent.data,index:To},from:{parent:cn.data,index:Mt}})}copyNode(Z,Ee){const Mt=Z.getIndexInParent();if(!this.canMoveNode(Z,Ee,Mt))return;Ee.parent.getField("children")||Ee.parent.setField("children",[]);const cn=Ee.parent.getField("children"),pr=this.options.getNodeClone(Z);cn.splice(Ee.index,0,pr),Z.treeModel.update(),Ee.parent.treeModel!==Z.treeModel&&Ee.parent.treeModel.update(),this.fireEvent({eventName:nc.copyNode,node:pr,to:{parent:Ee.parent.data,index:Ee.index}})}getState(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}}setState(Z){!Z||Object.assign(this,{expandedNodeIds:Z.expandedNodeIds||{},selectedLeafNodeIds:Z.selectedLeafNodeIds||{},activeNodeIds:Z.activeNodeIds||{},hiddenNodeIds:Z.hiddenNodeIds||{},focusedNodeId:Z.focusedNodeId})}subscribeToState(Z){$r(()=>Z(this.getState()))}canMoveNode(Z,Ee,Mt){return Mt||Z.getIndexInParent(),(Z.parent!==Ee.parent||Mt!==Ee.index)&&!Ee.parent.isDescendantOf(Z)}calculateExpandedNodes(){this._calculateExpandedNodes()}_filterNode(Z,Ee,Mt,cn){let pr=Mt(Ee);return Ee.children&&Ee.children.forEach(Rr=>{this._filterNode(Z,Rr,Mt,cn)&&(pr=!0)}),pr||(Z[Ee.id]=!0),cn&&pr&&Ee.ensureVisible(),pr}_calculateExpandedNodes(Z=null){(Z=Z||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,{[Z.id]:!0})),Z.children&&Z.children.forEach(Ee=>this._calculateExpandedNodes(Ee))}_setActiveNodeSingle(Z,Ee){this.activeNodes.filter(Mt=>Mt!==Z).forEach(Mt=>{this.fireEvent({eventName:nc.deactivate,node:Mt}),this.fireEvent({eventName:nc.nodeDeactivate,node:Mt})}),this.activeNodeIds=Ee?{[Z.id]:!0}:{}}_setActiveNodeMulti(Z,Ee){this.activeNodeIds=Object.assign({},this.activeNodeIds,{[Z.id]:Ee})}}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275prov=t.Yz7({token:P,factory:P.\u0275fac}),P.focusedTree=null,P})();ll([mt,ko("design:type",Array)],Wa.prototype,"roots",void 0),ll([mt,ko("design:type",Object)],Wa.prototype,"expandedNodeIds",void 0),ll([mt,ko("design:type",Object)],Wa.prototype,"selectedLeafNodeIds",void 0),ll([mt,ko("design:type",Object)],Wa.prototype,"activeNodeIds",void 0),ll([mt,ko("design:type",Object)],Wa.prototype,"hiddenNodeIds",void 0),ll([mt,ko("design:type",Object)],Wa.prototype,"focusedNodeId",void 0),ll([mt,ko("design:type",y_)],Wa.prototype,"virtualRoot",void 0),ll([jt,ko("design:type",Object),ko("design:paramtypes",[])],Wa.prototype,"focusedNode",null),ll([jt,ko("design:type",Object),ko("design:paramtypes",[])],Wa.prototype,"expandedNodes",null),ll([jt,ko("design:type",Object),ko("design:paramtypes",[])],Wa.prototype,"activeNodes",null),ll([jt,ko("design:type",Object),ko("design:paramtypes",[])],Wa.prototype,"hiddenNodes",null),ll([jt,ko("design:type",Object),ko("design:paramtypes",[])],Wa.prototype,"selectedLeafNodes",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"setData",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"update",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"setFocusedNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"setFocus",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"doForAll",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"focusNextNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"focusPreviousNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"focusDrillDown",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"focusDrillUp",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"setActiveNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"setSelectedNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"setExpandedNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"expandAll",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"collapseAll",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"setIsHidden",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"setHiddenNodeIds",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"filterNodes",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[]),ko("design:returntype",void 0)],Wa.prototype,"clearFilter",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"moveNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object,Object]),ko("design:returntype",void 0)],Wa.prototype,"copyNode",null),ll([ee,ko("design:type",Function),ko("design:paramtypes",[Object]),ko("design:returntype",void 0)],Wa.prototype,"setState",null);let Xp=(()=>{class P{constructor(){this._draggedElement=null}set(Z){this._draggedElement=Z}get(){return this._draggedElement}isDragging(){return!!this.get()}}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275prov=(0,t.Yz7)({factory:function(){return new P},token:P,providedIn:"root"}),P})();var Wd=function(P,W,Z,Ee){var pr,Mt=arguments.length,cn=Mt<3?W:null===Ee?Ee=Object.getOwnPropertyDescriptor(W,Z):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)cn=Reflect.decorate(P,W,Z,Ee);else for(var Rr=P.length-1;Rr>=0;Rr--)(pr=P[Rr])&&(cn=(Mt<3?pr(cn):Mt>3?pr(W,Z,cn):pr(W,Z))||cn);return Mt>3&&cn&&Object.defineProperty(W,Z,cn),cn},Uc=function(P,W){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(P,W)};let Au=(()=>{class P{constructor(Z){this.treeModel=Z,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,Z.virtualScroll=this,this._dispose=[$r(()=>this.fixScroll())]}get y(){return 150*this.yBlocks}get totalHeight(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0}fireEvent(Z){this.treeModel.fireEvent(Z)}init(){const Z=this.recalcPositions.bind(this);Z(),this._dispose=[...this._dispose,Do(()=>this.treeModel.roots,Z),Do(()=>this.treeModel.expandedNodeIds,Z),Do(()=>this.treeModel.hiddenNodeIds,Z)],this.treeModel.subscribe(nc.loadNodeChildren,Z)}isEnabled(){return this.treeModel.options.useVirtualScroll}_setYBlocks(Z){this.yBlocks=Z}recalcPositions(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)}_getPositionAfter(Z,Ee){let Mt=Ee;return Z.forEach(cn=>{cn.position=Mt,Mt=this._getPositionAfterNode(cn,Mt)}),Mt}_getPositionAfterNode(Z,Ee){let Mt=Z.getSelfHeight()+Ee;return Z.children&&Z.isExpanded&&(Mt=this._getPositionAfter(Z.visibleChildren,Mt)),Z.height=Mt-Ee,Mt}clear(){this._dispose.forEach(Z=>Z())}setViewport(Z){Object.assign(this,{viewport:Z,x:Z.scrollLeft,yBlocks:Math.round(Z.scrollTop/150),viewportHeight:Z.getBoundingClientRect?Z.getBoundingClientRect().height:0})}scrollIntoView(Z,Ee,Mt=!0){if(Z.options.scrollContainer){const cn=Z.options.scrollContainer,pr=cn.getBoundingClientRect().height,Rr=cn.getBoundingClientRect().top,ui=this.viewport.getBoundingClientRect().top+Z.position-Rr;(Ee||ui<cn.scrollTop||ui+Z.getSelfHeight()>cn.scrollTop+pr)&&(cn.scrollTop=Mt?ui-pr/2:ui)}else(Ee||Z.position<this.y||Z.position+Z.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=Mt?Z.position-this.viewportHeight/2:Z.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))}getViewportNodes(Z){if(!Z)return[];const Ee=Z.filter(To=>!To.isHidden);if(!this.isEnabled())return Ee;if(!this.viewportHeight||!Ee.length)return[];const Mt=Rh(Ee,To=>To.position+500>this.y||To.position+To.height>this.y),cn=Rh(Ee,To=>To.position-500>this.y+this.viewportHeight,Mt),pr=[];if(cn-Mt>(1e3+this.viewportHeight)/Ee[0].treeModel.options.options.nodeHeight)return[];for(let To=Mt;To<=cn;To++)pr.push(Ee[To]);return pr}fixScroll(){const Z=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>Z&&this._setYBlocks(Z/150)}}return P.\u0275fac=function(Z){return new(Z||P)(t.LFG(Wa))},P.\u0275prov=t.Yz7({token:P,factory:P.\u0275fac}),P})();function Rh(P,W,Z=0){let Ee=Z,Mt=P.length-1;for(;Ee!==Mt;){let cn=Math.floor((Ee+Mt)/2);W(P[cn])?Mt=cn:Ee=Ee===cn?Mt:cn}return Ee}Wd([mt,Uc("design:type",Object)],Au.prototype,"yBlocks",void 0),Wd([mt,Uc("design:type",Object)],Au.prototype,"x",void 0),Wd([mt,Uc("design:type",Object)],Au.prototype,"viewportHeight",void 0),Wd([jt,Uc("design:type",Object),Uc("design:paramtypes",[])],Au.prototype,"y",null),Wd([jt,Uc("design:type",Object),Uc("design:paramtypes",[])],Au.prototype,"totalHeight",null),Wd([ee,Uc("design:type",Function),Uc("design:paramtypes",[Object]),Uc("design:returntype",void 0)],Au.prototype,"_setYBlocks",null),Wd([ee,Uc("design:type",Function),Uc("design:paramtypes",[]),Uc("design:returntype",void 0)],Au.prototype,"recalcPositions",null),Wd([ee,Uc("design:type",Function),Uc("design:paramtypes",[Object]),Uc("design:returntype",void 0)],Au.prototype,"setViewport",null),Wd([ee,Uc("design:type",Function),Uc("design:paramtypes",[Object,Object,Object]),Uc("design:returntype",void 0)],Au.prototype,"scrollIntoView",null);let Nh=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-loading-component"]],inputs:{template:"template",node:"node"},decls:2,vars:5,consts:[[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(Z,Ee){1&Z&&(t.YNc(0,oi,2,0,"span",0),t.GkF(1,1)),2&Z&&(t.Q6J("ngIf",!Ee.template),t.xp6(1),t.Q6J("ngTemplateOutlet",Ee.template)("ngTemplateOutletContext",t.VKq(3,Wr,Ee.node)))},directives:[e.O5,e.tP],encapsulation:2}),P})(),Vf=(()=>{class P{constructor(Z,Ee,Mt){this.elementRef=Z,this.ngZone=Ee,this.virtualScroll=Mt,this.setViewport=xd(()=>{this.virtualScroll.setViewport(this.elementRef.nativeElement)},17),this.scrollEventHandler=this.setViewport.bind(this)}ngOnInit(){this.virtualScroll.init()}ngAfterViewInit(){setTimeout(()=>{this.setViewport(),this.virtualScroll.fireEvent({eventName:nc.initialized})});let Z=this.elementRef.nativeElement;this.ngZone.runOutsideAngular(()=>{Z.addEventListener("scroll",this.scrollEventHandler)})}ngOnDestroy(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)}getTotalHeight(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(t.SBq),t.Y36(t.R0b),t.Y36(Au))},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-viewport"]],features:[t._Bn([Au])],ngContentSelectors:ro,decls:1,vars:2,consts:[[4,"treeMobxAutorun"]],template:function(Z,Ee){1&Z&&(t.F$t(),t.YNc(0,ti,3,2,"ng-container",0)),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:[mf],encapsulation:2}),P})(),Ph=(()=>{class P{constructor(Z,Ee){this.treeModel=Z,this.treeDraggedElement=Ee,Z.eventNames.forEach(Mt=>this[Mt]=new t.vpe),Z.subscribeToState(Mt=>this.stateChange.emit(Mt))}set nodes(Z){}set options(Z){}set focused(Z){this.treeModel.setFocus(Z)}set state(Z){this.treeModel.setState(Z)}onKeydown(Z){if(!this.treeModel.isFocused||bn(["input","textarea"],document.activeElement.tagName.toLowerCase()))return;const Ee=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(Ee,Z)}onMousedown(Z){(function Ee(Mt,cn){return!Mt||Mt.localName!==cn&&Ee(Mt.parentElement,cn)})(Z.target,"tree-root")&&this.treeModel.setFocus(!1)}ngOnChanges(Z){(Z.options||Z.nodes)&&this.treeModel.setData({options:Z.options&&Z.options.currentValue,nodes:Z.nodes&&Z.nodes.currentValue,events:Vs(this,this.treeModel.eventNames)})}sizeChanged(){this.viewportComponent.setViewport()}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(Wa),t.Y36(Xp))},P.\u0275cmp=t.Xpm({type:P,selectors:[["Tree"],["tree-root"]],contentQueries:function(Z,Ee,Mt){if(1&Z&&(t.Suo(Mt,ia,5),t.Suo(Mt,ps,5),t.Suo(Mt,la,5),t.Suo(Mt,Fa,5)),2&Z){let cn;t.iGM(cn=t.CRH())&&(Ee.loadingTemplate=cn.first),t.iGM(cn=t.CRH())&&(Ee.treeNodeTemplate=cn.first),t.iGM(cn=t.CRH())&&(Ee.treeNodeWrapperTemplate=cn.first),t.iGM(cn=t.CRH())&&(Ee.treeNodeFullTemplate=cn.first)}},viewQuery:function(Z,Ee){if(1&Z&&t.Gf(Gs,5),2&Z){let Mt;t.iGM(Mt=t.CRH())&&(Ee.viewportComponent=Mt.first)}},hostBindings:function(Z,Ee){1&Z&&t.NdJ("keydown",function(cn){return Ee.onKeydown(cn)},!1,t.pYS)("mousedown",function(cn){return Ee.onMousedown(cn)},!1,t.pYS)},inputs:{nodes:"nodes",options:"options",focused:"focused",state:"state"},outputs:{toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",updateData:"updateData",initialized:"initialized",moveNode:"moveNode",copyNode:"copyNode",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",event:"event",stateChange:"stateChange"},features:[t._Bn([Wa]),t.TTD],decls:5,vars:6,consts:[["viewport",""],[1,"angular-tree-component"],[3,"nodes","treeModel","templates",4,"ngIf"],["class","empty-tree-drop-slot",3,"dropIndex","node",4,"ngIf"],[3,"nodes","treeModel","templates"],[1,"empty-tree-drop-slot",3,"dropIndex","node"]],template:function(Z,Ee){1&Z&&(t.TgZ(0,"tree-viewport",null,0),t.TgZ(2,"div",1),t.YNc(3,Vp,1,8,"tree-node-collection",2),t.YNc(4,bh,1,2,"tree-node-drop-slot",3),t.qZA(),t.qZA()),2&Z&&(t.xp6(2),t.ekj("node-dragging",Ee.treeDraggedElement.isDragging())("angular-tree-component-rtl",Ee.treeModel.options.rtl),t.xp6(1),t.Q6J("ngIf",Ee.treeModel.roots),t.xp6(1),t.Q6J("ngIf",Ee.treeModel.isEmptyTree()))},directives:function(){return[Vf,e.O5,qd,Xu]},encapsulation:2}),P})(),Dp=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["TreeNode"],["tree-node"]],inputs:{node:"node",index:"index",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"class","tree-node","tree-node-expanded","tree-node-collapsed","tree-node-leaf","tree-node-active","tree-node-focused",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[3,"dropIndex","node",4,"ngIf"],[3,"node","index","templates"],[3,"node","templates"],[3,"dropIndex","node"]],template:function(Z,Ee){1&Z&&t.YNc(0,a_,3,8,"ng-container",0),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:function(){return[mf,e.O5,e.tP,Jd,Lh,Xu]},encapsulation:2}),P})(),Ih=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-content"]],inputs:{node:"node",index:"index",template:"template"},decls:2,vars:7,consts:[[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(Z,Ee){1&Z&&(t.YNc(0,Eh,2,1,"span",0),t.GkF(1,1)),2&Z&&(t.Q6J("ngIf",!Ee.template),t.xp6(1),t.Q6J("ngTemplateOutlet",Ee.template)("ngTemplateOutletContext",t.kEZ(3,l_,Ee.node,Ee.node,Ee.index)))},directives:[e.O5,e.tP],encapsulation:2}),P})(),Xu=(()=>{class P{onDrop(Z){this.node.mouseAction("drop",Z.event,{from:Z.element,to:{parent:this.node,index:this.dropIndex}})}allowDrop(Z,Ee){return this.node.options.allowDrop(Z,{parent:this.node,index:this.dropIndex},Ee)}}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["TreeNodeDropSlot"],["tree-node-drop-slot"]],inputs:{node:"node",dropIndex:"dropIndex"},decls:1,vars:2,consts:[[1,"node-drop-slot",3,"treeAllowDrop","allowDragoverStyling","treeDrop"]],template:function(Z,Ee){1&Z&&(t.TgZ(0,"div",0),t.NdJ("treeDrop",function(cn){return Ee.onDrop(cn)}),t.qZA()),2&Z&&t.Q6J("treeAllowDrop",Ee.allowDrop.bind(Ee))("allowDragoverStyling",!0)},directives:function(){return[nh]},encapsulation:2}),P})(),Kp=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-expander"]],inputs:{node:"node"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],["class","toggle-children-wrapper",3,"toggle-children-wrapper-expanded","toggle-children-wrapper-collapsed","click",4,"ngIf"],["class","toggle-children-placeholder",4,"ngIf"],[1,"toggle-children-wrapper",3,"click"],[1,"toggle-children"],[1,"toggle-children-placeholder"]],template:function(Z,Ee){1&Z&&t.YNc(0,d_,3,2,"ng-container",0),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:[mf,e.O5],encapsulation:2}),P})(),Lh=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-children"]],inputs:{node:"node",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"tree-children","tree-children-no-padding",4,"treeAnimateOpen","treeAnimateOpenSpeed","treeAnimateOpenAcceleration","treeAnimateOpenEnabled"],[3,"nodes","templates","treeModel",4,"ngIf"],["class","tree-node-loading",3,"padding-left","template","node",4,"ngIf"],[3,"nodes","templates","treeModel"],[1,"tree-node-loading",3,"template","node"]],template:function(Z,Ee){1&Z&&t.YNc(0,f_,2,4,"ng-container",0),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:function(){return[mf,kh,e.O5,qd,Nh]},encapsulation:2}),P})();const xp=Object.assign(function(...P){return ee(...P)},ee),th=Object.assign(function(...P){return jt(...P)},jt),fp=Object.assign(function(...P){return mt(...P)},mt);var Ku=function(P,W,Z,Ee){var pr,Mt=arguments.length,cn=Mt<3?W:null===Ee?Ee=Object.getOwnPropertyDescriptor(W,Z):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)cn=Reflect.decorate(P,W,Z,Ee);else for(var Rr=P.length-1;Rr>=0;Rr--)(pr=P[Rr])&&(cn=(Mt<3?pr(cn):Mt>3?pr(W,Z,cn):pr(W,Z))||cn);return Mt>3&&cn&&Object.defineProperty(W,Z,cn),cn},ku=function(P,W){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(P,W)};let qd=(()=>{class P{constructor(){this._dispose=[]}get nodes(){return this._nodes}set nodes(Z){this.setNodes(Z)}get marginTop(){const Z=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(Z&&Z.parent?Z.position-Z.parent.position-Z.parent.getSelfHeight():0)+"px"}setNodes(Z){this._nodes=Z}ngOnInit(){this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[Do(()=>this.virtualScroll.getViewportNodes(this.nodes).map(Z=>Z.index),Z=>{this.viewportNodes=Z.map(Ee=>this.nodes[Ee])},{compareStructural:!0,fireImmediately:!0}),Do(()=>this.nodes,Z=>{this.viewportNodes=this.virtualScroll.getViewportNodes(Z)})]}ngOnDestroy(){this._dispose.forEach(Z=>Z())}trackNode(Z,Ee){return Ee.id}}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-collection"]],inputs:{nodes:"nodes",treeModel:"treeModel",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"node","index","templates",4,"ngFor","ngForOf","ngForTrackBy"],[3,"node","index","templates"]],template:function(Z,Ee){1&Z&&t.YNc(0,Sh,3,4,"ng-container",0),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:[mf,e.sg,Dp],encapsulation:2}),P})();Ku([fp,ku("design:type",Object)],qd.prototype,"_nodes",void 0),Ku([fp,ku("design:type",Array)],qd.prototype,"viewportNodes",void 0),Ku([th,ku("design:type",String),ku("design:paramtypes",[])],qd.prototype,"marginTop",null),Ku([xp,ku("design:type",Function),ku("design:paramtypes",[Object]),ku("design:returntype",void 0)],qd.prototype,"setNodes",null);let Jd=(()=>{class P{constructor(){}}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-wrapper"]],inputs:{node:"node",index:"index",templates:"templates"},decls:2,vars:8,consts:[["class","node-wrapper",3,"padding-left",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"node-wrapper"],[3,"node",4,"ngIf"],[3,"node"],[1,"node-content-wrapper",3,"treeAllowDrop","allowDragoverStyling","treeDrag","treeDragEnabled","click","dblclick","mouseover","mouseout","contextmenu","treeDrop","treeDropDragOver","treeDropDragLeave","treeDropDragEnter"],[3,"node","index","template"]],template:function(Z,Ee){1&Z&&(t.YNc(0,wp,5,15,"div",0),t.GkF(1,1)),2&Z&&(t.Q6J("ngIf",!Ee.templates.treeNodeWrapperTemplate),t.xp6(1),t.Q6J("ngTemplateOutlet",Ee.templates.treeNodeWrapperTemplate)("ngTemplateOutletContext",t.l5B(3,Lu,Ee.node,Ee.node,Ee.index,Ee.templates)))},directives:function(){return[e.O5,e.tP,Kp,rh,nh,Ih,Gf]},encapsulation:2}),P})(),Gf=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275cmp=t.Xpm({type:P,selectors:[["tree-node-checkbox"]],inputs:{node:"node"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],["type","checkbox",1,"tree-node-checkbox",3,"checked","indeterminate","click"]],template:function(Z,Ee){1&Z&&t.YNc(0,Ju,2,2,"ng-container",0),2&Z&&t.Q6J("treeMobxAutorun",t.DdM(1,Gi))},directives:[mf],encapsulation:2}),P})();const vf="is-dragging-over",Fh="is-dragging-over-disabled";let nh=(()=>{class P{constructor(Z,Ee,Mt,cn){this.el=Z,this.renderer=Ee,this.treeDraggedElement=Mt,this.ngZone=cn,this.allowDragoverStyling=!0,this.onDropCallback=new t.vpe,this.onDragOverCallback=new t.vpe,this.onDragLeaveCallback=new t.vpe,this.onDragEnterCallback=new t.vpe,this._allowDrop=(pr,Rr)=>!0,this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}set treeAllowDrop(Z){this._allowDrop=Z instanceof Function?Z:(Ee,Mt)=>Z}allowDrop(Z){return this._allowDrop(this.treeDraggedElement.get(),Z)}ngAfterViewInit(){let Z=this.el.nativeElement;this.ngZone.runOutsideAngular(()=>{Z.addEventListener("dragover",this.dragOverEventHandler),Z.addEventListener("dragenter",this.dragEnterEventHandler),Z.addEventListener("dragleave",this.dragLeaveEventHandler)})}ngOnDestroy(){let Z=this.el.nativeElement;Z.removeEventListener("dragover",this.dragOverEventHandler),Z.removeEventListener("dragenter",this.dragEnterEventHandler),Z.removeEventListener("dragleave",this.dragLeaveEventHandler)}onDragOver(Z){if(!this.allowDrop(Z))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:Z,element:this.treeDraggedElement.get()}),Z.preventDefault(),this.allowDragoverStyling&&this.addClass()}onDragEnter(Z){!this.allowDrop(Z)||(Z.preventDefault(),this.onDragEnterCallback.emit({event:Z,element:this.treeDraggedElement.get()}))}onDragLeave(Z){if(!this.allowDrop(Z))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:Z,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()}onDrop(Z){!this.allowDrop(Z)||(Z.preventDefault(),this.onDropCallback.emit({event:Z,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))}addClass(){this.renderer.addClass(this.el.nativeElement,vf)}removeClass(){this.renderer.removeClass(this.el.nativeElement,vf)}addDisabledClass(){this.renderer.addClass(this.el.nativeElement,Fh)}removeDisabledClass(){this.renderer.removeClass(this.el.nativeElement,Fh)}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(Xp),t.Y36(t.R0b))},P.\u0275dir=t.lG2({type:P,selectors:[["","treeDrop",""]],hostBindings:function(Z,Ee){1&Z&&t.NdJ("drop",function(cn){return Ee.onDrop(cn)})},inputs:{allowDragoverStyling:"allowDragoverStyling",treeAllowDrop:"treeAllowDrop"},outputs:{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}}),P})(),rh=(()=>{class P{constructor(Z,Ee,Mt,cn){this.el=Z,this.renderer=Ee,this.treeDraggedElement=Mt,this.ngZone=cn,this.dragEventHandler=this.onDrag.bind(this)}ngAfterViewInit(){let Z=this.el.nativeElement;this.ngZone.runOutsideAngular(()=>{Z.addEventListener("drag",this.dragEventHandler)})}ngDoCheck(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")}ngOnDestroy(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)}onDragStart(Z){Z.dataTransfer.setData("text",Z.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",Z)}onDrag(Z){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",Z)}onDragEnd(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(Xp),t.Y36(t.R0b))},P.\u0275dir=t.lG2({type:P,selectors:[["","treeDrag",""]],hostBindings:function(Z,Ee){1&Z&&t.NdJ("dragstart",function(cn){return Ee.onDragStart(cn)})("dragend",function(){return Ee.onDragEnd()})},inputs:{draggedElement:["treeDrag","draggedElement"],treeDragEnabled:"treeDragEnabled"}}),P})(),kh=(()=>{class P{constructor(Z,Ee,Mt){this.renderer=Z,this.templateRef=Ee,this.viewContainerRef=Mt}set isOpen(Z){Z?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!Z}_show(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])}_hide(){this.viewContainerRef.clear(),this.innerElement=null}_animateOpen(){let Z=this.animateSpeed,Ee=this.animateAcceleration,Mt=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout(()=>{const cn=setInterval(()=>{if(!this._isOpen||!this.innerElement)return clearInterval(cn);Mt+=Z;const pr=Math.round(Mt);this.renderer.setStyle(this.innerElement,"max-height",`${pr}px`);const Rr=this.innerElement.getBoundingClientRect?this.innerElement.getBoundingClientRect().height:0;Z*=Ee,Ee*=1.005,Rr<pr&&(this.renderer.setStyle(this.innerElement,"max-height",null),clearInterval(cn))},17)})}_animateClose(){if(!this.innerElement)return;let Z=this.animateSpeed,Ee=this.animateAcceleration,Mt=this.innerElement.getBoundingClientRect().height;const cn=setInterval(()=>{if(this._isOpen||!this.innerElement)return clearInterval(cn);Mt-=Z,this.renderer.setStyle(this.innerElement,"max-height",`${Mt}px`),Z*=Ee,Ee*=1.005,Mt<=0&&(this.viewContainerRef.clear(),this.innerElement=null,clearInterval(cn))},17)}}return P.\u0275fac=function(Z){return new(Z||P)(t.Y36(t.Qsj),t.Y36(t.Rgc),t.Y36(t.s_b))},P.\u0275dir=t.lG2({type:P,selectors:[["","treeAnimateOpen",""]],inputs:{isOpen:["treeAnimateOpen","isOpen"],animateSpeed:["treeAnimateOpenSpeed","animateSpeed"],animateAcceleration:["treeAnimateOpenAcceleration","animateAcceleration"],isEnabled:["treeAnimateOpenEnabled","isEnabled"]}}),P})(),Np=(()=>{class P{}return P.\u0275fac=function(Z){return new(Z||P)},P.\u0275mod=t.oAB({type:P}),P.\u0275inj=t.cJS({providers:[],imports:[[e.ez]]}),P})()},38549:(Ge,g,o)=>{"use strict";o.d(g,{Kz:()=>E,xm:()=>Ma,_A:()=>va,vL:()=>vo,_D:()=>mi,lQ:()=>ii,VL:()=>Ho,M:()=>cc,jt:()=>tl,TH:()=>ou,Vi:()=>xl,XC:()=>bc,iD:()=>el,J4:()=>ke,FF:()=>ve,Pz:()=>sr,uN:()=>wn,nv:()=>cr,Vx:()=>Tr,Oz:()=>ts,tO:()=>Co,M2:()=>bu,o8:()=>gc,AX:()=>fs,dT:()=>Ql,Ly:()=>Gu,ZQ:()=>Sd,Pm:()=>Jc,UL:()=>Tu,_L:()=>Hd,xI:()=>Ad,HK:()=>ud,dR:()=>Su,ZS:()=>fd});var t=o(74788),e=o(12057),s=o(59796),a=o(56693),l=o(55197),u=o(20509);function h(...V){if(1===V.length){if(!(0,s.k)(V[0]))return V[0];V=V[0]}return(0,a.n)(V,void 0).lift(new _)}class _{call(pe,A){return A.subscribe(new m(pe))}}class m extends l.L{constructor(pe){super(pe),this.hasFirst=!1,this.observables=[],this.subscriptions=[]}_next(pe){this.observables.push(pe)}_complete(){const pe=this.observables,A=pe.length;if(0===A)this.destination.complete();else{for(let K=0;K<A&&!this.hasFirst;K++){const Rt=(0,u.D)(this,pe[K],void 0,K);this.subscriptions&&this.subscriptions.push(Rt),this.add(Rt)}this.observables=null}}notifyNext(pe,A,K){if(!this.hasFirst){this.hasFirst=!0;for(let Ye=0;Ye<this.subscriptions.length;Ye++)if(Ye!==K){let Rt=this.subscriptions[Ye];Rt.unsubscribe(),this.remove(Rt)}this.subscriptions=null}this.destination.next(A)}}var b=o(77393),C=o(20377),D=o(85345);function x(...V){const pe=V[V.length-1];return"function"==typeof pe&&V.pop(),(0,a.n)(V,void 0).lift(new j(pe))}class j{constructor(pe){this.resultSelector=pe}call(pe,A){return A.subscribe(new H(pe,this.resultSelector))}}class H extends b.L{constructor(pe,A,K=Object.create(null)){super(pe),this.resultSelector=A,this.iterators=[],this.active=0,this.resultSelector="function"==typeof A?A:void 0}_next(pe){const A=this.iterators;(0,s.k)(pe)?A.push(new U(pe)):A.push("function"==typeof pe[C.hZ]?new z(pe[C.hZ]()):new M(this.destination,this,pe))}_complete(){const pe=this.iterators,A=pe.length;if(this.unsubscribe(),0!==A){this.active=A;for(let K=0;K<A;K++){let Ye=pe[K];Ye.stillUnsubscribed?this.destination.add(Ye.subscribe()):this.active--}}else this.destination.complete()}notifyInactive(){this.active--,0===this.active&&this.destination.complete()}checkIterators(){const pe=this.iterators,A=pe.length,K=this.destination;for(let vr=0;vr<A;vr++){let Hr=pe[vr];if("function"==typeof Hr.hasValue&&!Hr.hasValue())return}let Ye=!1;const Rt=[];for(let vr=0;vr<A;vr++){let Hr=pe[vr],_i=Hr.next();if(Hr.hasCompleted()&&(Ye=!0),_i.done)return void K.complete();Rt.push(_i.value)}this.resultSelector?this._tryresultSelector(Rt):K.next(Rt),Ye&&K.complete()}_tryresultSelector(pe){let A;try{A=this.resultSelector.apply(this,pe)}catch(K){return void this.destination.error(K)}this.destination.next(A)}}class z{constructor(pe){this.iterator=pe,this.nextResult=pe.next()}hasValue(){return!0}next(){const pe=this.nextResult;return this.nextResult=this.iterator.next(),pe}hasCompleted(){const pe=this.nextResult;return Boolean(pe&&pe.done)}}class U{constructor(pe){this.array=pe,this.index=0,this.length=0,this.length=pe.length}[C.hZ](){return this}next(pe){const A=this.index++;return A<this.length?{value:this.array[A],done:!1}:{value:null,done:!0}}hasValue(){return this.array.length>this.index}hasCompleted(){return this.array.length===this.index}}class M extends D.Ds{constructor(pe,A,K){super(pe),this.parent=A,this.observable=K,this.stillUnsubscribed=!0,this.buffer=[],this.isComplete=!1}[C.hZ](){return this}next(){const pe=this.buffer;return 0===pe.length&&this.isComplete?{value:null,done:!0}:{value:pe.shift(),done:!1}}hasValue(){return this.buffer.length>0}hasCompleted(){return 0===this.buffer.length&&this.isComplete}notifyComplete(){this.buffer.length>0?(this.isComplete=!0,this.parent.notifyInactive()):this.destination.complete()}notifyNext(pe){this.buffer.push(pe),this.parent.checkIterators()}subscribe(){return(0,D.ft)(this.observable,new D.IY(this))}}var I=o(18891),J=o(59193),Y=o(25917),ie=o(79765),oe=o(22759),fe=o(46797),ne=o(26215),Ae=(o(9112),o(17757),o(66682)),Me=o(58071);function be(...V){return pe=>{let A;return"function"==typeof V[V.length-1]&&(A=V.pop()),pe.lift(new ue(V,A))}}class ue{constructor(pe,A){this.observables=pe,this.project=A}call(pe,A){return A.subscribe(new He(pe,this.observables,this.project))}}class He extends l.L{constructor(pe,A,K){super(pe),this.observables=A,this.project=K,this.toRespond=[];const Ye=A.length;this.values=new Array(Ye);for(let Rt=0;Rt<Ye;Rt++)this.toRespond.push(Rt);for(let Rt=0;Rt<Ye;Rt++)this.add((0,u.D)(this,A[Rt],void 0,Rt))}notifyNext(pe,A,K){this.values[K]=A;const Ye=this.toRespond;if(Ye.length>0){const Rt=Ye.indexOf(K);-1!==Rt&&Ye.splice(Rt,1)}}notifyComplete(){}_next(pe){if(0===this.toRespond.length){const A=[pe,...this.values];this.project?this._tryProject(A):this.destination.next(A)}}_tryProject(pe){let A;try{A=this.project.apply(this,pe)}catch(K){return void this.destination.error(K)}this.destination.next(A)}}class F{constructor(pe){this.total=pe}call(pe,A){return A.subscribe(new je(pe,this.total))}}class je extends b.L{constructor(pe,A){super(pe),this.total=A,this.count=0}_next(pe){++this.count>this.total&&this.destination.next(pe)}}var Et=o(46782),lt=o(45435),nn=o(15257),St=o(88002),At=o(39761),Qe=o(87519),It=o(43190),ae=o(68307),Ie=o(71289),dt=o(19773),Jt=o(18819),zt=o(24751);function tr(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",1),t.NdJ("click",function(){return t.CHM(A),t.oxw().close()}),t.TgZ(1,"span",2),t._uU(2,"\xd7"),t.qZA(),t.qZA()}}const Yn=["*"],Sn=["defaultDayTemplate"],$n=["content"];function En(V,pe){if(1&V&&t._UZ(0,"div",7),2&V){const K=pe.currentMonth,Ye=pe.selected,Rt=pe.disabled,vr=pe.focused;t.Q6J("date",pe.date)("currentMonth",K)("selected",Ye)("disabled",Rt)("focused",vr)}}function Fn(V,pe){if(1&V&&(t.TgZ(0,"div",12),t._uU(1),t.qZA()),2&V){const A=t.oxw().$implicit,K=t.oxw(2);t.xp6(1),t.hij(" ",K.i18n.getMonthLabel(A.firstDate)," ")}}function Dn(V,pe){if(1&V&&(t.TgZ(0,"div",9),t.YNc(1,Fn,2,1,"div",10),t._UZ(2,"ngb-datepicker-month",11),t.qZA()),2&V){const A=pe.$implicit,K=t.oxw(2);t.xp6(1),t.Q6J("ngIf","none"===K.navigation||K.displayMonths>1&&"select"===K.navigation),t.xp6(1),t.Q6J("month",A.firstDate)}}function mn(V,pe){if(1&V&&t.YNc(0,Dn,3,2,"div",8),2&V){const A=t.oxw();t.Q6J("ngForOf",A.model.months)}}function jn(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"ngb-datepicker-navigation",13),t.NdJ("navigate",function(Ye){return t.CHM(A),t.oxw().onNavigateEvent(Ye)})("select",function(Ye){return t.CHM(A),t.oxw().onNavigateDateSelect(Ye)}),t.qZA()}if(2&V){const A=t.oxw();t.Q6J("date",A.model.firstDate)("months",A.model.months)("disabled",A.model.disabled)("showSelect","select"===A.model.navigation)("prevDisabled",A.model.prevDisabled)("nextDisabled",A.model.nextDisabled)("selectBoxes",A.model.selectBoxes)}}function Xt(V,pe){}function ut(V,pe){}function mt(V,pe){if(1&V&&(t.TgZ(0,"div",5),t._uU(1),t.qZA()),2&V){const A=t.oxw(2);t.xp6(1),t.Oqu(A.i18n.getWeekLabel())}}function Tt(V,pe){if(1&V&&(t.TgZ(0,"div",6),t._uU(1),t.qZA()),2&V){const A=pe.$implicit;t.xp6(1),t.Oqu(A)}}function yn(V,pe){if(1&V&&(t.TgZ(0,"div",2),t.YNc(1,mt,2,1,"div",3),t.YNc(2,Tt,2,1,"div",4),t.qZA()),2&V){const A=t.oxw();t.xp6(1),t.Q6J("ngIf",A.datepicker.showWeekNumbers),t.xp6(1),t.Q6J("ngForOf",A.viewModel.weekdays)}}function et(V,pe){if(1&V&&(t.TgZ(0,"div",11),t._uU(1),t.qZA()),2&V){const A=t.oxw(2).$implicit,K=t.oxw();t.xp6(1),t.Oqu(K.i18n.getWeekNumerals(A.number))}}function jt(V,pe){}function hn(V,pe){if(1&V&&t.YNc(0,jt,0,0,"ng-template",14),2&V){const A=t.oxw().$implicit,K=t.oxw(3);t.Q6J("ngTemplateOutlet",K.datepicker.dayTemplate)("ngTemplateOutletContext",A.context)}}function Qn(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(Ye){const vr=t.CHM(A).$implicit;return t.oxw(3).doSelect(vr),Ye.preventDefault()}),t.YNc(1,hn,1,2,"ng-template",13),t.qZA()}if(2&V){const A=pe.$implicit;t.ekj("disabled",A.context.disabled)("hidden",A.hidden)("ngb-dp-today",A.context.today),t.Q6J("tabindex",A.tabindex),t.uIk("aria-label",A.ariaLabel),t.xp6(1),t.Q6J("ngIf",!A.hidden)}}function Ir(V,pe){if(1&V&&(t.TgZ(0,"div",8),t.YNc(1,et,2,1,"div",9),t.YNc(2,Qn,2,9,"div",10),t.qZA()),2&V){const A=t.oxw().$implicit,K=t.oxw();t.xp6(1),t.Q6J("ngIf",K.datepicker.showWeekNumbers),t.xp6(1),t.Q6J("ngForOf",A.days)}}function ht(V,pe){1&V&&t.YNc(0,Ir,3,2,"div",7),2&V&&t.Q6J("ngIf",!pe.$implicit.collapsed)}function L(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"ngb-datepicker-navigation-select",7),t.NdJ("select",function(Ye){return t.CHM(A),t.oxw().select.emit(Ye)}),t.qZA()}if(2&V){const A=t.oxw();t.Q6J("date",A.date)("disabled",A.disabled)("months",A.selectBoxes.months)("years",A.selectBoxes.years)}}function Ue(V,pe){1&V&&t._UZ(0,"div",0)}function nt(V,pe){1&V&&t._UZ(0,"div",0)}function at(V,pe){if(1&V&&(t.YNc(0,Ue,1,0,"div",9),t.TgZ(1,"div",10),t._uU(2),t.qZA(),t.YNc(3,nt,1,0,"div",9)),2&V){const A=pe.$implicit,K=pe.index,Ye=t.oxw(2);t.Q6J("ngIf",K>0),t.xp6(2),t.hij(" ",Ye.i18n.getMonthLabel(A.firstDate)," "),t.xp6(1),t.Q6J("ngIf",K!==Ye.months.length-1)}}function it(V,pe){if(1&V&&t.YNc(0,at,4,3,"ng-template",8),2&V){const A=t.oxw();t.Q6J("ngForOf",A.months)}}const Pt=["ngbDatepickerDayView",""],Ut=["month"],ot=["year"];function Nn(V,pe){if(1&V&&(t.TgZ(0,"option",5),t._uU(1),t.qZA()),2&V){const A=pe.$implicit,K=t.oxw();t.Q6J("value",A),t.uIk("aria-label",K.i18n.getMonthFullName(A,null==K.date?null:K.date.year)),t.xp6(1),t.Oqu(K.i18n.getMonthShortName(A,null==K.date?null:K.date.year))}}function sn(V,pe){if(1&V&&(t.TgZ(0,"option",5),t._uU(1),t.qZA()),2&V){const A=pe.$implicit,K=t.oxw();t.Q6J("value",A),t.xp6(1),t.Oqu(K.i18n.getYearNumerals(A))}}const An=["dialog"],Bn=["ngbNavOutlet",""];function ir(V,pe){}const mr=function(V){return{$implicit:V}};function _r(V,pe){if(1&V&&(t.TgZ(0,"div",2),t.YNc(1,ir,0,0,"ng-template",3),t.qZA()),2&V){const A=t.oxw().$implicit,K=t.oxw();t.Q6J("item",A)("nav",K.nav)("role",K.paneRole),t.xp6(1),t.Q6J("ngTemplateOutlet",(null==A.contentTpl?null:A.contentTpl.templateRef)||null)("ngTemplateOutletContext",t.VKq(5,mr,A.active||K.isPanelTransitioning(A)))}}function Nr(V,pe){if(1&V&&t.YNc(0,_r,2,7,"div",1),2&V){const A=pe.$implicit,K=t.oxw();t.Q6J("ngIf",A.isPanelInDom()||K.isPanelTransitioning(A))}}function Qr(V,pe){if(1&V&&t._uU(0),2&V){const A=t.oxw(2);t.Oqu(A.title)}}function rn(V,pe){}function fi(V,pe){if(1&V&&(t.TgZ(0,"h3",3),t.YNc(1,Qr,1,1,"ng-template",null,4,t.W1O),t.YNc(3,rn,0,0,"ng-template",5),t.qZA()),2&V){const A=t.MAs(2),K=t.oxw();t.xp6(3),t.Q6J("ngTemplateOutlet",K.isTitleTemplate()?K.title:A)("ngTemplateOutletContext",K.context)}}function Ei(V,pe){if(1&V&&(t.TgZ(0,"span"),t.SDv(1,2),t.ALo(2,"percent"),t.qZA()),2&V){const A=t.oxw();t.xp6(2),t.pQV(t.lcZ(2,1,A.getValue()/A.max)),t.QtT(1)}}function no(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw();return Ye.changeHour(Ye.hourStep)}),t._UZ(1,"span",12),t.TgZ(2,"span",13),t.SDv(3,14),t.qZA(),t.qZA()}if(2&V){const A=t.oxw();t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function Ji(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw();return Ye.changeHour(-Ye.hourStep)}),t._UZ(1,"span",15),t.TgZ(2,"span",13),t.SDv(3,16),t.qZA(),t.qZA()}if(2&V){const A=t.oxw();t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function qi(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw();return Ye.changeMinute(Ye.minuteStep)}),t._UZ(1,"span",12),t.TgZ(2,"span",13),t.SDv(3,17),t.qZA(),t.qZA()}if(2&V){const A=t.oxw();t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function to(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw();return Ye.changeMinute(-Ye.minuteStep)}),t._UZ(1,"span",15),t.TgZ(2,"span",13),t.SDv(3,18),t.qZA(),t.qZA()}if(2&V){const A=t.oxw();t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function zi(V,pe){1&V&&(t.TgZ(0,"div",5),t._uU(1,":"),t.qZA())}function Go(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw(2);return Ye.changeSecond(Ye.secondStep)}),t._UZ(1,"span",12),t.TgZ(2,"span",13),t.SDv(3,21),t.qZA(),t.qZA()}if(2&V){const A=t.oxw(2);t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function Ro(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",11),t.NdJ("click",function(){t.CHM(A);const Ye=t.oxw(2);return Ye.changeSecond(-Ye.secondStep)}),t._UZ(1,"span",15),t.TgZ(2,"span",13),t.SDv(3,22),t.qZA(),t.qZA()}if(2&V){const A=t.oxw(2);t.ekj("btn-sm",A.isSmallSize)("btn-lg",A.isLargeSize)("disabled",A.disabled),t.Q6J("disabled",A.disabled)}}function Bo(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"div",19),t.YNc(1,Go,4,7,"button",3),t.TgZ(2,"input",20),t.NdJ("change",function(Ye){return t.CHM(A),t.oxw().updateSecond(Ye.target.value)})("blur",function(){return t.CHM(A),t.oxw().handleBlur()})("input",function(Ye){return t.CHM(A),t.oxw().formatInput(Ye.target)})("keydown.ArrowUp",function(Ye){t.CHM(A);const Rt=t.oxw();return Rt.changeSecond(Rt.secondStep),Ye.preventDefault()})("keydown.ArrowDown",function(Ye){t.CHM(A);const Rt=t.oxw();return Rt.changeSecond(-Rt.secondStep),Ye.preventDefault()}),t.qZA(),t.YNc(3,Ro,4,7,"button",3),t.qZA()}if(2&V){const A=t.oxw();t.xp6(1),t.Q6J("ngIf",A.spinners),t.xp6(1),t.ekj("form-control-sm",A.isSmallSize)("form-control-lg",A.isLargeSize),t.Q6J("value",A.formatMinSec(null==A.model?null:A.model.second))("readOnly",A.readonlyInputs)("disabled",A.disabled),t.xp6(1),t.Q6J("ngIf",A.spinners)}}function Jo(V,pe){1&V&&t._UZ(0,"div",5)}function es(V,pe){if(1&V&&(t.ynx(0),t.SDv(1,27),t.BQk()),2&V){const A=t.oxw(2);t.xp6(1),t.pQV(A.i18n.getAfternoonPeriod()),t.QtT(1)}}function ua(V,pe){if(1&V&&t.SDv(0,28),2&V){const A=t.oxw(2);t.pQV(A.i18n.getMorningPeriod()),t.QtT(0)}}function ds(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"div",23),t.TgZ(1,"button",24),t.NdJ("click",function(){return t.CHM(A),t.oxw().toggleMeridian()}),t.YNc(2,es,2,1,"ng-container",25),t.YNc(3,ua,1,1,"ng-template",null,26,t.W1O),t.qZA(),t.qZA()}if(2&V){const A=t.MAs(4),K=t.oxw();t.xp6(1),t.ekj("btn-sm",K.isSmallSize)("btn-lg",K.isLargeSize)("disabled",K.disabled),t.Q6J("disabled",K.disabled),t.xp6(1),t.Q6J("ngIf",K.model&&K.model.hour>=12)("ngIfElse",A)}}function st(V,pe){if(1&V&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&V){const A=t.oxw().$implicit,K=t.oxw();t.Tol(K.highlightClass),t.xp6(1),t.Oqu(A)}}function pn(V,pe){if(1&V&&t._uU(0),2&V){const A=t.oxw().$implicit;t.Oqu(A)}}function ee(V,pe){if(1&V&&(t.YNc(0,st,2,3,"span",1),t.YNc(1,pn,1,1,"ng-template",null,2,t.W1O)),2&V){const A=pe.odd,K=t.MAs(2);t.Q6J("ngIf",A)("ngIfElse",K)}}function Ve(V,pe){if(1&V&&t._UZ(0,"ngb-highlight",2),2&V){const K=pe.term;t.Q6J("result",(0,pe.formatter)(pe.result))("term",K)}}function fn(V,pe){}const Tn=function(V,pe,A){return{result:V,term:pe,formatter:A}};function $r(V,pe){if(1&V){const A=t.EpF();t.TgZ(0,"button",3),t.NdJ("mouseenter",function(){const Rt=t.CHM(A).index;return t.oxw().markActive(Rt)})("click",function(){const Rt=t.CHM(A).$implicit;return t.oxw().select(Rt)}),t.YNc(1,fn,0,0,"ng-template",4),t.qZA()}if(2&V){const A=pe.$implicit,K=pe.index,Ye=t.oxw(),Rt=t.MAs(1);t.ekj("active",K===Ye.activeIdx),t.Q6J("id",Ye.id+"-"+K),t.xp6(1),t.Q6J("ngTemplateOutlet",Ye.resultTemplate||Rt)("ngTemplateOutletContext",t.kEZ(5,Tn,A,Ye.term,Ye.formatter))}}function ni(V){return parseInt(`${V}`,10)}function Ri(V){return null!=V?`${V}`:""}function gi(V){return"string"==typeof V}function Hi(V){return!isNaN(ni(V))}function Li(V){return"number"==typeof V&&isFinite(V)&&Math.floor(V)===V}function cs(V){return null!=V}function Os(V){return Hi(V)?`0${V}`.slice(-2):""}function xa(V,pe){return V&&V.className&&V.className.split&&V.className.split(/\s+/).indexOf(pe)>=0}function Ml(V){return(V||document.body).getBoundingClientRect()}function Ca(V){return V.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}"undefined"!=typeof Element&&!Element.prototype.closest&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest=function(V){let pe=this;if(!document.documentElement.contains(pe))return null;do{if(pe.matches(V))return pe;pe=pe.parentElement||pe.parentNode}while(null!==pe&&1===pe.nodeType);return null});const sa={animation:!0,transitionTimerDelayMs:5};let Fo=(()=>{class V{constructor(){this.animation=sa.animation}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})();const fa=()=>{},{transitionTimerDelayMs:Ua}=sa,pt=new Map,an=(V,pe,A,K)=>{let Ye=K.context||{};const Rt=pt.get(pe);if(Rt)switch(K.runningTransition){case"continue":return J.E;case"stop":V.run(()=>Rt.transition$.complete()),Ye=Object.assign(Rt.context,Ye),pt.delete(pe)}const vr=A(pe,K.animation,Ye)||fa;if(!K.animation||"none"===window.getComputedStyle(pe).transitionProperty)return V.run(()=>vr()),(0,Y.of)(void 0).pipe(function(V){return pe=>new I.y(A=>pe.subscribe(vr=>V.run(()=>A.next(vr)),vr=>V.run(()=>A.error(vr)),()=>V.run(()=>A.complete())))}(V));const Hr=new ie.xQ,_i=new ie.xQ,ji=Hr.pipe(function(...V){return pe=>(0,Me.z)(pe,(0,Y.of)(...V))}(!0));pt.set(pe,{transition$:Hr,complete:()=>{_i.next(),_i.complete()},context:Ye});const Eo=function(V){const{transitionDelay:pe,transitionDuration:A}=window.getComputedStyle(V);return 1e3*(parseFloat(pe)+parseFloat(A))}(pe);return V.runOutsideAngular(()=>{const rs=(0,oe.R)(pe,"transitionend").pipe((0,Et.R)(ji),(0,lt.h)(({target:us})=>us===pe));h((0,fe.H)(Eo+Ua).pipe((0,Et.R)(ji)),rs,_i).pipe((0,Et.R)(ji)).subscribe(()=>{pt.delete(pe),V.run(()=>{vr(),Hr.next(),Hr.complete()})})}),Hr.asObservable()},ye=(V,pe,A)=>{let{direction:K,maxHeight:Ye}=A;const{classList:Rt}=V;function vr(){Rt.add("collapse"),"show"===K?Rt.add("show"):Rt.remove("show")}if(pe)return Ye||(Ye=function(V){if("undefined"==typeof navigator)return"0px";const{classList:pe}=V,A=pe.contains("show");A||pe.add("show"),V.style.height="";const K=V.getBoundingClientRect().height+"px";return A||pe.remove("show"),K}(V),A.maxHeight=Ye,V.style.height="show"!==K?Ye:"0px",Rt.remove("collapse"),Rt.remove("collapsing"),Rt.remove("show"),Ml(V),Rt.add("collapsing")),V.style.height="show"===K?Ye:"0px",()=>{vr(),Rt.remove("collapsing"),V.style.height=""};vr()};let Ea=(()=>{class V{constructor(A){this._ngbConfig=A,this.dismissible=!0,this.type="warning"}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})();const ul=({classList:V})=>{V.remove("show")};let Ma=(()=>{class V{constructor(A,K,Ye,Rt){this._renderer=K,this._element=Ye,this._zone=Rt,this.closed=new t.vpe,this.dismissible=A.dismissible,this.type=A.type,this.animation=A.animation}close(){const A=an(this._zone,this._element.nativeElement,ul,{animation:this.animation,runningTransition:"continue"});return A.subscribe(()=>this.closed.emit()),A}ngOnChanges(A){const K=A.type;K&&!K.firstChange&&(this._renderer.removeClass(this._element.nativeElement,`alert-${K.previousValue}`),this._renderer.addClass(this._element.nativeElement,`alert-${K.currentValue}`))}ngOnInit(){this._renderer.addClass(this._element.nativeElement,`alert-${this.type}`)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(Ea),t.Y36(t.Qsj),t.Y36(t.SBq),t.Y36(t.R0b))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-alert"]],hostAttrs:["role","alert",1,"alert","show"],hostVars:4,hostBindings:function(A,K){2&A&&t.ekj("fade",K.animation)("alert-dismissible",K.dismissible)},inputs:{dismissible:"dismissible",type:"type",animation:"animation"},outputs:{closed:"closed"},exportAs:["ngbAlert"],features:[t.TTD],ngContentSelectors:Yn,decls:2,vars:1,consts:function(){let pe;return pe="Close",[["type","button","class","close","aria-label",pe,3,"click",4,"ngIf"],["type","button","aria-label",pe,1,"close",3,"click"],["aria-hidden","true"]]},template:function(A,K){1&A&&(t.F$t(),t.Hsn(0),t.YNc(1,tr,3,0,"button",0)),2&A&&(t.xp6(1),t.Q6J("ngIf",K.dismissible))},directives:[e.O5],styles:["ngb-alert{display:block}"],encapsulation:2,changeDetection:0}),V})(),va=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})(),Pr=(()=>{class V{constructor(A){this._ngbConfig=A}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})(),mi=(()=>{class V{constructor(A,K,Ye){this._element=A,this._zone=Ye,this.collapsed=!1,this.ngbCollapseChange=new t.vpe,this.shown=new t.vpe,this.hidden=new t.vpe,this.animation=K.animation}ngOnInit(){this._runTransition(this.collapsed,!1)}ngOnChanges({collapsed:A}){A.firstChange||this._runTransitionWithEvents(this.collapsed,this.animation)}toggle(A=this.collapsed){this.collapsed=!A,this.ngbCollapseChange.next(this.collapsed),this._runTransitionWithEvents(this.collapsed,this.animation)}_runTransition(A,K){return an(this._zone,this._element.nativeElement,ye,{animation:K,runningTransition:"stop",context:{direction:A?"hide":"show"}})}_runTransitionWithEvents(A,K){this._runTransition(A,K).subscribe(()=>{A?this.hidden.emit():this.shown.emit()})}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq),t.Y36(Pr),t.Y36(t.R0b))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbCollapse",""]],inputs:{collapsed:["ngbCollapse","collapsed"],animation:"animation"},outputs:{ngbCollapseChange:"ngbCollapseChange",shown:"shown",hidden:"hidden"},exportAs:["ngbCollapse"],features:[t.TTD]}),V})(),ii=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({}),V})();class si{constructor(pe,A,K){this.year=Li(pe)?pe:null,this.month=Li(A)?A:null,this.day=Li(K)?K:null}static from(pe){return pe instanceof si?pe:pe?new si(pe.year,pe.month,pe.day):null}equals(pe){return null!=pe&&this.year===pe.year&&this.month===pe.month&&this.day===pe.day}before(pe){return!!pe&&(this.year===pe.year?this.month===pe.month?this.day!==pe.day&&this.day<pe.day:this.month<pe.month:this.year<pe.year)}after(pe){return!!pe&&(this.year===pe.year?this.month===pe.month?this.day!==pe.day&&this.day>pe.day:this.month>pe.month:this.year>pe.year)}}function bi(V){return new si(V.getFullYear(),V.getMonth()+1,V.getDate())}function Ui(V){const pe=new Date(V.year,V.month-1,V.day,12);return isNaN(pe.getTime())||pe.setFullYear(V.year),pe}function io(){return new Bi}let vo=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:io,token:V,providedIn:"root"}),V})(),Bi=(()=>{class V extends vo{getDaysPerWeek(){return 7}getMonths(){return[1,2,3,4,5,6,7,8,9,10,11,12]}getWeeksPerMonth(){return 6}getNext(A,K="d",Ye=1){let Rt=Ui(A),vr=!0,Hr=Rt.getMonth();switch(K){case"y":Rt.setFullYear(Rt.getFullYear()+Ye);break;case"m":Hr+=Ye,Rt.setMonth(Hr),Hr%=12,Hr<0&&(Hr+=12);break;case"d":Rt.setDate(Rt.getDate()+Ye),vr=!1;break;default:return A}return vr&&Rt.getMonth()!==Hr&&Rt.setDate(0),bi(Rt)}getPrev(A,K="d",Ye=1){return this.getNext(A,K,-Ye)}getWeekday(A){let Ye=Ui(A).getDay();return 0===Ye?7:Ye}getWeekNumber(A,K){7===K&&(K=0);const vr=Ui(A[(11-K)%7]);vr.setDate(vr.getDate()+4-(vr.getDay()||7));const Hr=vr.getTime();return vr.setMonth(0),vr.setDate(1),Math.floor(Math.round((Hr-vr.getTime())/864e5)/7)+1}getToday(){return bi(new Date)}isValid(A){if(!(A&&Li(A.year)&&Li(A.month)&&Li(A.day)&&0!==A.year))return!1;const K=Ui(A);return!isNaN(K.getTime())&&K.getFullYear()===A.year&&K.getMonth()+1===A.month&&K.getDate()===A.day}}return V.\u0275fac=function(){let pe;return function(K){return(pe||(pe=t.n5z(V)))(K||V)}}(),V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})();function hi(V,pe){return!function(V,pe){return!V&&!pe||!!V&&!!pe&&V.equals(pe)}(V,pe)}function Br(V,pe){return!(!V&&!pe||V&&pe&&V.year===pe.year&&V.month===pe.month)}function ft(V,pe,A){return V&&pe&&V.before(pe)?pe:V&&A&&V.after(A)?A:V||null}function Ft(V,pe){const{minDate:A,maxDate:K,disabled:Ye,markDisabled:Rt}=pe;return!(null==V||Ye||Rt&&Rt(V,{year:V.year,month:V.month})||A&&V.before(A)||K&&V.after(K))}let lr=(()=>{class V{getMonthLabel(A){return`${this.getMonthFullName(A.month,A.year)} ${this.getYearNumerals(A.year)}`}getDayNumerals(A){return`${A.day}`}getWeekNumerals(A){return`${A}`}getYearNumerals(A){return`${A}`}getWeekLabel(){return""}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return function(V){return new dr(V)}(t.LFG(t.soG))},token:V,providedIn:"root"}),V})(),dr=(()=>{class V extends lr{constructor(A){super(),this._locale=A,this._monthsShort=(0,e.UT)(A,e.x.Standalone,e.Tn.Abbreviated),this._monthsFull=(0,e.UT)(A,e.x.Standalone,e.Tn.Wide)}getWeekdayLabel(A,K){const Ye=(0,e.Mn)(this._locale,e.x.Standalone,void 0===K?e.Tn.Short:K);return Ye.map((vr,Hr)=>Ye[(Hr+1)%7])[A-1]||""}getMonthShortName(A){return this._monthsShort[A-1]||""}getMonthFullName(A){return this._monthsFull[A-1]||""}getDayAriaLabel(A){const K=new Date(A.year,A.month-1,A.day);return(0,e.p6)(K,"fullDate",this._locale)}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(t.soG))},V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})(),li=(()=>{class V{constructor(A,K){this._calendar=A,this._i18n=K,this._VALIDATORS={dayTemplateData:Ye=>{if(this._state.dayTemplateData!==Ye)return{dayTemplateData:Ye}},displayMonths:Ye=>{if(Li(Ye=ni(Ye))&&Ye>0&&this._state.displayMonths!==Ye)return{displayMonths:Ye}},disabled:Ye=>{if(this._state.disabled!==Ye)return{disabled:Ye}},firstDayOfWeek:Ye=>{if(Li(Ye=ni(Ye))&&Ye>=0&&this._state.firstDayOfWeek!==Ye)return{firstDayOfWeek:Ye}},focusVisible:Ye=>{if(this._state.focusVisible!==Ye&&!this._state.disabled)return{focusVisible:Ye}},markDisabled:Ye=>{if(this._state.markDisabled!==Ye)return{markDisabled:Ye}},maxDate:Ye=>{const Rt=this.toValidDate(Ye,null);if(hi(this._state.maxDate,Rt))return{maxDate:Rt}},minDate:Ye=>{const Rt=this.toValidDate(Ye,null);if(hi(this._state.minDate,Rt))return{minDate:Rt}},navigation:Ye=>{if(this._state.navigation!==Ye)return{navigation:Ye}},outsideDays:Ye=>{if(this._state.outsideDays!==Ye)return{outsideDays:Ye}},weekdays:Ye=>{const Rt=!0===Ye||!1===Ye?e.Tn.Short:Ye,vr=!0!==Ye&&!1!==Ye||Ye;if(this._state.weekdayWidth!==Rt||this._state.weekdaysVisible!==vr)return{weekdayWidth:Rt,weekdaysVisible:vr}}},this._model$=new ie.xQ,this._dateSelect$=new ie.xQ,this._state={dayTemplateData:null,markDisabled:null,maxDate:null,minDate:null,disabled:!1,displayMonths:1,firstDate:null,firstDayOfWeek:1,lastDate:null,focusDate:null,focusVisible:!1,months:[],navigation:"select",outsideDays:"visible",prevDisabled:!1,nextDisabled:!1,selectedDate:null,selectBoxes:{years:[],months:[]},weekdayWidth:e.Tn.Short,weekdaysVisible:!0}}get model$(){return this._model$.pipe((0,lt.h)(A=>A.months.length>0))}get dateSelect$(){return this._dateSelect$.pipe((0,lt.h)(A=>null!==A))}set(A){let K=Object.keys(A).map(Ye=>this._VALIDATORS[Ye](A[Ye])).reduce((Ye,Rt)=>Object.assign(Object.assign({},Ye),Rt),{});Object.keys(K).length>0&&this._nextState(K)}focus(A){const K=this.toValidDate(A,null);null!=K&&!this._state.disabled&&hi(this._state.focusDate,K)&&this._nextState({focusDate:A})}focusSelect(){Ft(this._state.focusDate,this._state)&&this.select(this._state.focusDate,{emitEvent:!0})}open(A){const K=this.toValidDate(A,this._calendar.getToday());null!=K&&!this._state.disabled&&(!this._state.firstDate||Br(this._state.firstDate,K))&&this._nextState({firstDate:K})}select(A,K={}){const Ye=this.toValidDate(A,null);null!=Ye&&!this._state.disabled&&(hi(this._state.selectedDate,Ye)&&this._nextState({selectedDate:Ye}),K.emitEvent&&Ft(Ye,this._state)&&this._dateSelect$.next(Ye))}toValidDate(A,K){const Ye=si.from(A);return void 0===K&&(K=this._calendar.getToday()),this._calendar.isValid(Ye)?Ye:K}getMonth(A){for(let K of this._state.months)if(A.month===K.number&&A.year===K.year)return K;throw new Error(`month ${A.month} of year ${A.year} not found`)}_nextState(A){const K=this._updateState(A);this._patchContexts(K),this._state=K,this._model$.next(this._state)}_patchContexts(A){const{months:K,displayMonths:Ye,selectedDate:Rt,focusDate:vr,focusVisible:Hr,disabled:_i,outsideDays:ji}=A;A.months.forEach(Eo=>{Eo.weeks.forEach(rs=>{rs.days.forEach(Uo=>{vr&&(Uo.context.focused=vr.equals(Uo.date)&&Hr),Uo.tabindex=!_i&&vr&&Uo.date.equals(vr)&&vr.month===Eo.number?0:-1,!0===_i&&(Uo.context.disabled=!0),void 0!==Rt&&(Uo.context.selected=null!==Rt&&Rt.equals(Uo.date)),Eo.number!==Uo.date.month&&(Uo.hidden="hidden"===ji||"collapsed"===ji||Ye>1&&Uo.date.after(K[0].firstDate)&&Uo.date.before(K[Ye-1].lastDate))})})})}_updateState(A){const K=Object.assign({},this._state,A);let Ye=K.firstDate;if(("minDate"in A||"maxDate"in A)&&(function(V,pe){if(pe&&V&&pe.before(V))throw new Error(`'maxDate' ${pe} should be greater than 'minDate' ${V}`)}(K.minDate,K.maxDate),K.focusDate=ft(K.focusDate,K.minDate,K.maxDate),K.firstDate=ft(K.firstDate,K.minDate,K.maxDate),Ye=K.focusDate),"disabled"in A&&(K.focusVisible=!1),"selectedDate"in A&&0===this._state.months.length&&(Ye=K.selectedDate),"focusVisible"in A||"focusDate"in A&&(K.focusDate=ft(K.focusDate,K.minDate,K.maxDate),Ye=K.focusDate,0!==K.months.length&&K.focusDate&&!K.focusDate.before(K.firstDate)&&!K.focusDate.after(K.lastDate)))return K;if("firstDate"in A&&(K.firstDate=ft(K.firstDate,K.minDate,K.maxDate),Ye=K.firstDate),Ye){const vr=function(V,pe,A,K,Ye){const{displayMonths:Rt,months:vr}=A,Hr=vr.splice(0,vr.length);return Array.from({length:Rt},(ji,Eo)=>{const rs=Object.assign(V.getNext(pe,"m",Eo),{day:1});if(vr[Eo]=null,!Ye){const Uo=Hr.findIndex(us=>us.firstDate.equals(rs));-1!==Uo&&(vr[Eo]=Hr.splice(Uo,1)[0])}return rs}).forEach((ji,Eo)=>{null===vr[Eo]&&(vr[Eo]=function(V,pe,A,K,Ye={}){const{dayTemplateData:Rt,minDate:vr,maxDate:Hr,firstDayOfWeek:_i,markDisabled:ji,outsideDays:Eo,weekdayWidth:rs,weekdaysVisible:Uo}=A,us=V.getToday();Ye.firstDate=null,Ye.lastDate=null,Ye.number=pe.month,Ye.year=pe.year,Ye.weeks=Ye.weeks||[],Ye.weekdays=Ye.weekdays||[],pe=function(V,pe,A){const K=V.getDaysPerWeek(),Ye=new si(pe.year,pe.month,1),Rt=V.getWeekday(Ye)%K;return V.getPrev(Ye,"d",(K+Rt-A)%K)}(V,pe,_i),Uo||(Ye.weekdays.length=0);for(let Ks=0;Ks<V.getWeeksPerMonth();Ks++){let ys=Ye.weeks[Ks];ys||(ys=Ye.weeks[Ks]={number:0,days:[],collapsed:!0});const Xl=ys.days;for(let Dc=0;Dc<V.getDaysPerWeek();Dc++){0===Ks&&Uo&&(Ye.weekdays[Dc]=K.getWeekdayLabel(V.getWeekday(pe),rs));const al=new si(pe.year,pe.month,pe.day),su=V.getNext(al),ea=K.getDayAriaLabel(al);let Kl=!!(vr&&al.before(vr)||Hr&&al.after(Hr));!Kl&&ji&&(Kl=ji(al,{month:Ye.number,year:Ye.year}));let Ul=al.equals(us),zl=Rt?Rt(al,{month:Ye.number,year:Ye.year}):void 0;null===Ye.firstDate&&al.month===Ye.number&&(Ye.firstDate=al),al.month===Ye.number&&su.month!==Ye.number&&(Ye.lastDate=al);let xc=Xl[Dc];xc||(xc=Xl[Dc]={}),xc.date=al,xc.context=Object.assign(xc.context||{},{$implicit:al,date:al,data:zl,currentMonth:Ye.number,currentYear:Ye.year,disabled:Kl,focused:!1,selected:!1,today:Ul}),xc.tabindex=-1,xc.ariaLabel=ea,xc.hidden=!1,pe=su}ys.number=V.getWeekNumber(Xl.map(Dc=>Dc.date),_i),ys.collapsed="collapsed"===Eo&&Xl[0].date.month!==Ye.number&&Xl[Xl.length-1].date.month!==Ye.number}return Ye}(V,ji,A,K,Hr.shift()||{}))}),vr}(this._calendar,Ye,K,this._i18n,"dayTemplateData"in A||"firstDayOfWeek"in A||"markDisabled"in A||"minDate"in A||"maxDate"in A||"disabled"in A||"outsideDays"in A||"weekdaysVisible"in A);K.months=vr,K.firstDate=vr[0].firstDate,K.lastDate=vr[vr.length-1].lastDate,"selectedDate"in A&&!Ft(K.selectedDate,K)&&(K.selectedDate=null),"firstDate"in A&&(!K.focusDate||K.focusDate.before(K.firstDate)||K.focusDate.after(K.lastDate))&&(K.focusDate=Ye);const Hr=!this._state.firstDate||this._state.firstDate.year!==K.firstDate.year,_i=!this._state.firstDate||this._state.firstDate.month!==K.firstDate.month;"select"===K.navigation?(("minDate"in A||"maxDate"in A||0===K.selectBoxes.years.length||Hr)&&(K.selectBoxes.years=function(V,pe,A){if(!V)return[];const K=pe?Math.max(pe.year,V.year-500):V.year-10,Rt=(A?Math.min(A.year,V.year+500):V.year+10)-K+1,vr=Array(Rt);for(let Hr=0;Hr<Rt;Hr++)vr[Hr]=K+Hr;return vr}(K.firstDate,K.minDate,K.maxDate)),("minDate"in A||"maxDate"in A||0===K.selectBoxes.months.length||Hr)&&(K.selectBoxes.months=function(V,pe,A,K){if(!pe)return[];let Ye=V.getMonths(pe.year);if(A&&pe.year===A.year){const Rt=Ye.findIndex(vr=>vr===A.month);Ye=Ye.slice(Rt)}if(K&&pe.year===K.year){const Rt=Ye.findIndex(vr=>vr===K.month);Ye=Ye.slice(0,Rt+1)}return Ye}(this._calendar,K.firstDate,K.minDate,K.maxDate))):K.selectBoxes={years:[],months:[]},("arrows"===K.navigation||"select"===K.navigation)&&(_i||Hr||"minDate"in A||"maxDate"in A||"disabled"in A)&&(K.prevDisabled=K.disabled||function(V,pe,A){const K=Object.assign(V.getPrev(pe,"m"),{day:1});return null!=A&&(K.year===A.year&&K.month<A.month||K.year<A.year&&1===A.month)}(this._calendar,K.firstDate,K.minDate),K.nextDisabled=K.disabled||function(V,pe,A){const K=Object.assign(V.getNext(pe,"m"),{day:1});return null!=A&&K.after(A)}(this._calendar,K.lastDate,K.maxDate))}return K}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(vo),t.LFG(lr))},V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})();var Ti=(()=>{return(V=Ti||(Ti={}))[V.PREV=0]="PREV",V[V.NEXT=1]="NEXT",Ti;var V})();let Ao=(()=>{class V{constructor(){this.displayMonths=1,this.firstDayOfWeek=1,this.navigation="select",this.outsideDays="visible",this.showWeekNumbers=!1,this.weekdays=e.Tn.Short}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})();function Qo(){return new uo}let jo=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:Qo,token:V,providedIn:"root"}),V})(),uo=(()=>{class V extends jo{fromModel(A){return A&&Li(A.year)&&Li(A.month)&&Li(A.day)?{year:A.year,month:A.month,day:A.day}:null}toModel(A){return A&&Li(A.year)&&Li(A.month)&&Li(A.day)?{year:A.year,month:A.month,day:A.day}:null}}return V.\u0275fac=function(){let pe;return function(K){return(pe||(pe=t.n5z(V)))(K||V)}}(),V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})(),eo=(()=>{class V{constructor(A){this.templateRef=A}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.Rgc))},V.\u0275dir=t.lG2({type:V,selectors:[["ng-template","ngbDatepickerContent",""]]}),V})(),Ho=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i,ji){this._service=A,this._calendar=K,this.i18n=Ye,this._elementRef=Hr,this._ngbDateAdapter=_i,this._ngZone=ji,this._controlValue=null,this._destroyed$=new ie.xQ,this._publicState={},this.navigate=new t.vpe,this.dateSelect=new t.vpe,this.onChange=Eo=>{},this.onTouched=()=>{},["dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","showWeekNumbers","startDate","weekdays"].forEach(Eo=>this[Eo]=Rt[Eo]),A.dateSelect$.pipe((0,Et.R)(this._destroyed$)).subscribe(Eo=>{this.dateSelect.emit(Eo)}),A.model$.pipe((0,Et.R)(this._destroyed$)).subscribe(Eo=>{const rs=Eo.firstDate,Uo=this.model?this.model.firstDate:null;this._publicState={maxDate:Eo.maxDate,minDate:Eo.minDate,firstDate:Eo.firstDate,lastDate:Eo.lastDate,focusedDate:Eo.focusDate,months:Eo.months.map(Dc=>Dc.firstDate)};let us=!1;if(!rs.equals(Uo)&&(this.navigate.emit({current:Uo?{year:Uo.year,month:Uo.month}:null,next:{year:rs.year,month:rs.month},preventDefault:()=>us=!0}),us&&null!==Uo))return void this._service.open(Uo);const Ks=Eo.selectedDate,ys=Eo.focusDate,Xl=this.model?this.model.focusDate:null;this.model=Eo,hi(Ks,this._controlValue)&&(this._controlValue=Ks,this.onTouched(),this.onChange(this._ngbDateAdapter.toModel(Ks))),hi(ys,Xl)&&Xl&&Eo.focusVisible&&this.focus(),vr.markForCheck()})}get state(){return this._publicState}get calendar(){return this._calendar}focusDate(A){this._service.focus(si.from(A))}focusSelect(){this._service.focusSelect()}focus(){this._ngZone.onStable.asObservable().pipe((0,nn.q)(1)).subscribe(()=>{const A=this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex="0"]');A&&A.focus()})}navigateTo(A){this._service.open(si.from(A?A.day?A:Object.assign(Object.assign({},A),{day:1}):null))}ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{const A=(0,oe.R)(this._contentEl.nativeElement,"focusin"),K=(0,oe.R)(this._contentEl.nativeElement,"focusout"),{nativeElement:Ye}=this._elementRef;(0,Ae.T)(A,K).pipe((0,lt.h)(({target:Rt,relatedTarget:vr})=>!(xa(Rt,"ngb-dp-day")&&xa(vr,"ngb-dp-day")&&Ye.contains(Rt)&&Ye.contains(vr))),(0,Et.R)(this._destroyed$)).subscribe(({type:Rt})=>this._ngZone.run(()=>this._service.set({focusVisible:"focusin"===Rt})))})}ngOnDestroy(){this._destroyed$.next()}ngOnInit(){if(void 0===this.model){const A={};["dayTemplateData","displayMonths","markDisabled","firstDayOfWeek","navigation","minDate","maxDate","outsideDays","weekdays"].forEach(K=>A[K]=this[K]),this._service.set(A),this.navigateTo(this.startDate)}this.dayTemplate||(this.dayTemplate=this._defaultDayTemplate)}ngOnChanges(A){const K={};if(["dayTemplateData","displayMonths","markDisabled","firstDayOfWeek","navigation","minDate","maxDate","outsideDays","weekdays"].filter(Ye=>Ye in A).forEach(Ye=>K[Ye]=this[Ye]),this._service.set(K),"startDate"in A){const{currentValue:Ye,previousValue:Rt}=A.startDate;Br(Rt,Ye)&&this.navigateTo(this.startDate)}}onDateSelect(A){this._service.focus(A),this._service.select(A,{emitEvent:!0})}onNavigateDateSelect(A){this._service.open(A)}onNavigateEvent(A){switch(A){case Ti.PREV:this._service.open(this._calendar.getPrev(this.model.firstDate,"m",1));break;case Ti.NEXT:this._service.open(this._calendar.getNext(this.model.firstDate,"m",1))}}registerOnChange(A){this.onChange=A}registerOnTouched(A){this.onTouched=A}setDisabledState(A){this._service.set({disabled:A})}writeValue(A){this._controlValue=si.from(this._ngbDateAdapter.fromModel(A)),this._service.select(this._controlValue)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(li),t.Y36(vo),t.Y36(lr),t.Y36(Ao),t.Y36(t.sBO),t.Y36(t.SBq),t.Y36(jo),t.Y36(t.R0b))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-datepicker"]],contentQueries:function(A,K,Ye){if(1&A&&t.Suo(Ye,eo,7),2&A){let Rt;t.iGM(Rt=t.CRH())&&(K.contentTemplate=Rt.first)}},viewQuery:function(A,K){if(1&A&&(t.Gf(Sn,7),t.Gf($n,7)),2&A){let Ye;t.iGM(Ye=t.CRH())&&(K._defaultDayTemplate=Ye.first),t.iGM(Ye=t.CRH())&&(K._contentEl=Ye.first)}},inputs:{dayTemplate:"dayTemplate",dayTemplateData:"dayTemplateData",displayMonths:"displayMonths",firstDayOfWeek:"firstDayOfWeek",footerTemplate:"footerTemplate",markDisabled:"markDisabled",maxDate:"maxDate",minDate:"minDate",navigation:"navigation",outsideDays:"outsideDays",showWeekNumbers:"showWeekNumbers",startDate:"startDate",weekdays:"weekdays"},outputs:{navigate:"navigate",dateSelect:"dateSelect"},exportAs:["ngbDatepicker"],features:[t._Bn([{provide:zt.JU,useExisting:(0,t.Gpc)(()=>V),multi:!0},li]),t.TTD],decls:10,vars:5,consts:[["defaultDayTemplate",""],["defaultContentTemplate",""],[1,"ngb-dp-header"],[3,"date","months","disabled","showSelect","prevDisabled","nextDisabled","selectBoxes","navigate","select",4,"ngIf"],[1,"ngb-dp-content"],["content",""],[3,"ngTemplateOutlet"],["ngbDatepickerDayView","",3,"date","currentMonth","selected","disabled","focused"],["class","ngb-dp-month",4,"ngFor","ngForOf"],[1,"ngb-dp-month"],["class","ngb-dp-month-name",4,"ngIf"],[3,"month"],[1,"ngb-dp-month-name"],[3,"date","months","disabled","showSelect","prevDisabled","nextDisabled","selectBoxes","navigate","select"]],template:function(A,K){if(1&A&&(t.YNc(0,En,1,5,"ng-template",null,0,t.W1O),t.YNc(2,mn,1,1,"ng-template",null,1,t.W1O),t.TgZ(4,"div",2),t.YNc(5,jn,1,7,"ngb-datepicker-navigation",3),t.qZA(),t.TgZ(6,"div",4,5),t.YNc(8,Xt,0,0,"ng-template",6),t.qZA(),t.YNc(9,ut,0,0,"ng-template",6)),2&A){const Ye=t.MAs(3);t.xp6(5),t.Q6J("ngIf","none"!==K.navigation),t.xp6(1),t.ekj("ngb-dp-months",!K.contentTemplate),t.xp6(2),t.Q6J("ngTemplateOutlet",(null==K.contentTemplate?null:K.contentTemplate.templateRef)||Ye),t.xp6(1),t.Q6J("ngTemplateOutlet",K.footerTemplate)}},directives:function(){return[e.O5,e.tP,Te,e.sg,ha,fl]},styles:["ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}"],encapsulation:2,changeDetection:0}),V})();var Zi=(()=>{return(V=Zi||(Zi={}))[V.Tab=9]="Tab",V[V.Enter=13]="Enter",V[V.Escape=27]="Escape",V[V.Space=32]="Space",V[V.PageUp=33]="PageUp",V[V.PageDown=34]="PageDown",V[V.End=35]="End",V[V.Home=36]="Home",V[V.ArrowLeft=37]="ArrowLeft",V[V.ArrowUp=38]="ArrowUp",V[V.ArrowRight=39]="ArrowRight",V[V.ArrowDown=40]="ArrowDown",Zi;var V})();let na=(()=>{class V{processKey(A,K){const{state:Ye,calendar:Rt}=K;switch(A.which){case Zi.PageUp:K.focusDate(Rt.getPrev(Ye.focusedDate,A.shiftKey?"y":"m",1));break;case Zi.PageDown:K.focusDate(Rt.getNext(Ye.focusedDate,A.shiftKey?"y":"m",1));break;case Zi.End:K.focusDate(A.shiftKey?Ye.maxDate:Ye.lastDate);break;case Zi.Home:K.focusDate(A.shiftKey?Ye.minDate:Ye.firstDate);break;case Zi.ArrowLeft:K.focusDate(Rt.getPrev(Ye.focusedDate,"d",1));break;case Zi.ArrowUp:K.focusDate(Rt.getPrev(Ye.focusedDate,"d",Rt.getDaysPerWeek()));break;case Zi.ArrowRight:K.focusDate(Rt.getNext(Ye.focusedDate,"d",1));break;case Zi.ArrowDown:K.focusDate(Rt.getNext(Ye.focusedDate,"d",Rt.getDaysPerWeek()));break;case Zi.Enter:case Zi.Space:K.focusSelect();break;default:return}A.preventDefault(),A.stopPropagation()}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})(),ha=(()=>{class V{constructor(A,K,Ye,Rt){this.i18n=A,this.datepicker=K,this._keyboardService=Ye,this._service=Rt}set month(A){this.viewModel=this._service.getMonth(A)}onKeyDown(A){this._keyboardService.processKey(A,this.datepicker)}doSelect(A){!A.context.disabled&&!A.hidden&&this.datepicker.onDateSelect(A.date)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(lr),t.Y36(Ho),t.Y36(na),t.Y36(li))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-datepicker-month"]],hostAttrs:["role","grid"],hostBindings:function(A,K){1&A&&t.NdJ("keydown",function(Rt){return K.onKeyDown(Rt)})},inputs:{month:"month"},decls:2,vars:2,consts:[["class","ngb-dp-week ngb-dp-weekdays","role","row",4,"ngIf"],["ngFor","",3,"ngForOf"],["role","row",1,"ngb-dp-week","ngb-dp-weekdays"],["class","ngb-dp-weekday ngb-dp-showweek small",4,"ngIf"],["class","ngb-dp-weekday small","role","columnheader",4,"ngFor","ngForOf"],[1,"ngb-dp-weekday","ngb-dp-showweek","small"],["role","columnheader",1,"ngb-dp-weekday","small"],["class","ngb-dp-week","role","row",4,"ngIf"],["role","row",1,"ngb-dp-week"],["class","ngb-dp-week-number small text-muted",4,"ngIf"],["class","ngb-dp-day","role","gridcell",3,"disabled","tabindex","hidden","ngb-dp-today","click",4,"ngFor","ngForOf"],[1,"ngb-dp-week-number","small","text-muted"],["role","gridcell",1,"ngb-dp-day",3,"tabindex","click"],[3,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(A,K){1&A&&(t.YNc(0,yn,3,2,"div",0),t.YNc(1,ht,1,1,"ng-template",1)),2&A&&(t.Q6J("ngIf",K.viewModel.weekdays.length>0),t.xp6(1),t.Q6J("ngForOf",K.viewModel.weeks))},directives:[e.O5,e.sg,e.tP],styles:['ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex="0"]{z-index:1}'],encapsulation:2}),V})(),fl=(()=>{class V{constructor(A){this.i18n=A,this.navigation=Ti,this.months=[],this.navigate=new t.vpe,this.select=new t.vpe}onClickPrev(A){A.currentTarget.focus(),this.navigate.emit(this.navigation.PREV)}onClickNext(A){A.currentTarget.focus(),this.navigate.emit(this.navigation.NEXT)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(lr))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-datepicker-navigation"]],inputs:{months:"months",date:"date",disabled:"disabled",showSelect:"showSelect",prevDisabled:"prevDisabled",nextDisabled:"nextDisabled",selectBoxes:"selectBoxes"},outputs:{navigate:"navigate",select:"select"},decls:8,vars:4,consts:function(){let pe,A,K,Ye;return pe="Previous month",A="Previous month",K="Next month",Ye="Next month",[[1,"ngb-dp-arrow"],["type","button","aria-label",pe,"title",A,1,"btn","btn-link","ngb-dp-arrow-btn",3,"disabled","click"],[1,"ngb-dp-navigation-chevron"],["class","ngb-dp-navigation-select",3,"date","disabled","months","years","select",4,"ngIf"],[4,"ngIf"],[1,"ngb-dp-arrow","right"],["type","button","aria-label",K,"title",Ye,1,"btn","btn-link","ngb-dp-arrow-btn",3,"disabled","click"],[1,"ngb-dp-navigation-select",3,"date","disabled","months","years","select"],["ngFor","",3,"ngForOf"],["class","ngb-dp-arrow",4,"ngIf"],[1,"ngb-dp-month-name"]]},template:function(A,K){1&A&&(t.TgZ(0,"div",0),t.TgZ(1,"button",1),t.NdJ("click",function(Rt){return K.onClickPrev(Rt)}),t._UZ(2,"span",2),t.qZA(),t.qZA(),t.YNc(3,L,1,4,"ngb-datepicker-navigation-select",3),t.YNc(4,it,1,1,void 0,4),t.TgZ(5,"div",5),t.TgZ(6,"button",6),t.NdJ("click",function(Rt){return K.onClickNext(Rt)}),t._UZ(7,"span",2),t.qZA(),t.qZA()),2&A&&(t.xp6(1),t.Q6J("disabled",K.prevDisabled),t.xp6(2),t.Q6J("ngIf",K.showSelect),t.xp6(1),t.Q6J("ngIf",!K.showSelect),t.xp6(2),t.Q6J("disabled",K.nextDisabled))},directives:function(){return[e.O5,ge,e.sg]},styles:["ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}"],encapsulation:2,changeDetection:0}),V})();const Hn=(V,pe)=>!!pe&&pe.some(A=>A.contains(V)),Ll=(V,pe)=>!pe||null!=function(V,pe){return pe&&void 0!==V.closest?V.closest(pe):null}(V,pe),As="undefined"!=typeof navigator&&!!navigator.userAgent&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2||/Android/.test(navigator.userAgent));function fc(V,pe,A,K,Ye,Rt,vr,Hr){A&&V.runOutsideAngular((V=>As?()=>setTimeout(()=>V(),100):V)(()=>{const ji=(0,oe.R)(pe,"keydown").pipe((0,Et.R)(Ye),(0,lt.h)(Uo=>Uo.which===Zi.Escape),(0,ae.b)(Uo=>Uo.preventDefault())),Eo=(0,oe.R)(pe,"mousedown").pipe((0,St.U)(Uo=>{const us=Uo.target;return 2!==Uo.button&&!Hn(us,vr)&&("inside"===A?Hn(us,Rt)&&Ll(us,Hr):"outside"===A?!Hn(us,Rt):Ll(us,Hr)||!Hn(us,Rt))}),(0,Et.R)(Ye)),rs=(0,oe.R)(pe,"mouseup").pipe(be(Eo),(0,lt.h)(([Uo,us])=>us),(0,Ie.g)(0),(0,Et.R)(Ye));h([ji.pipe((0,St.U)(Uo=>0)),rs.pipe((0,St.U)(Uo=>1))]).subscribe(Uo=>V.run(()=>K(Uo)))}))}const Fl=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(", ");function bl(V){const pe=Array.from(V.querySelectorAll(Fl)).filter(A=>-1!==A.tabIndex);return[pe[0],pe[pe.length-1]]}const ql=(V,pe,A,K=!1)=>{V.runOutsideAngular(()=>{const Ye=(0,oe.R)(pe,"focusin").pipe((0,Et.R)(A),(0,St.U)(Rt=>Rt.target));(0,oe.R)(pe,"keydown").pipe((0,Et.R)(A),(0,lt.h)(Rt=>Rt.which===Zi.Tab),be(Ye)).subscribe(([Rt,vr])=>{const[Hr,_i]=bl(pe);(vr===Hr||vr===pe)&&Rt.shiftKey&&(_i.focus(),Rt.preventDefault()),vr===_i&&!Rt.shiftKey&&(Hr.focus(),Rt.preventDefault())}),K&&(0,oe.R)(pe,"click").pipe((0,Et.R)(A),be(Ye),(0,St.U)(Rt=>Rt[1])).subscribe(Rt=>Rt.focus())})},Yl=/\s+/,ru=new class{getAllStyles(pe){return window.getComputedStyle(pe)}getStyle(pe,A){return this.getAllStyles(pe)[A]}isStaticPositioned(pe){return"static"===(this.getStyle(pe,"position")||"static")}offsetParent(pe){let A=pe.offsetParent||document.documentElement;for(;A&&A!==document.documentElement&&this.isStaticPositioned(A);)A=A.offsetParent;return A||document.documentElement}position(pe,A=!0){let K,Ye={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(pe,"position"))K=pe.getBoundingClientRect(),K={top:K.top,bottom:K.bottom,left:K.left,right:K.right,height:K.height,width:K.width};else{const Rt=this.offsetParent(pe);K=this.offset(pe,!1),Rt!==document.documentElement&&(Ye=this.offset(Rt,!1)),Ye.top+=Rt.clientTop,Ye.left+=Rt.clientLeft}return K.top-=Ye.top,K.bottom-=Ye.top,K.left-=Ye.left,K.right-=Ye.left,A&&(K.top=Math.round(K.top),K.bottom=Math.round(K.bottom),K.left=Math.round(K.left),K.right=Math.round(K.right)),K}offset(pe,A=!0){const K=pe.getBoundingClientRect(),Ye_top=window.pageYOffset-document.documentElement.clientTop,Ye_left=window.pageXOffset-document.documentElement.clientLeft;let Rt={height:K.height||pe.offsetHeight,width:K.width||pe.offsetWidth,top:K.top+Ye_top,bottom:K.bottom+Ye_top,left:K.left+Ye_left,right:K.right+Ye_left};return A&&(Rt.height=Math.round(Rt.height),Rt.width=Math.round(Rt.width),Rt.top=Math.round(Rt.top),Rt.bottom=Math.round(Rt.bottom),Rt.left=Math.round(Rt.left),Rt.right=Math.round(Rt.right)),Rt}positionElements(pe,A,K,Ye){const[Rt="top",vr="center"]=K.split("-"),Hr=Ye?this.offset(pe,!1):this.position(pe,!1),_i=this.getAllStyles(A),ji=parseFloat(_i.marginTop),Eo=parseFloat(_i.marginBottom),rs=parseFloat(_i.marginLeft),Uo=parseFloat(_i.marginRight);let us=0,Ks=0;switch(Rt){case"top":us=Hr.top-(A.offsetHeight+ji+Eo);break;case"bottom":us=Hr.top+Hr.height;break;case"left":Ks=Hr.left-(A.offsetWidth+rs+Uo);break;case"right":Ks=Hr.left+Hr.width}switch(vr){case"top":us=Hr.top;break;case"bottom":us=Hr.top+Hr.height-A.offsetHeight;break;case"left":Ks=Hr.left;break;case"right":Ks=Hr.left+Hr.width-A.offsetWidth;break;case"center":"top"===Rt||"bottom"===Rt?Ks=Hr.left+Hr.width/2-A.offsetWidth/2:us=Hr.top+Hr.height/2-A.offsetHeight/2}A.style.transform=`translate(${Math.round(Ks)}px, ${Math.round(us)}px)`;const ys=A.getBoundingClientRect(),Xl=document.documentElement,Dc=window.innerHeight||Xl.clientHeight,al=window.innerWidth||Xl.clientWidth;return ys.left>=0&&ys.top>=0&&ys.right<=al&&ys.bottom<=Dc}};function Je(V,pe,A,K,Ye){let Rt=Array.isArray(A)?A:A.split(Yl);const vr=["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right","left-top","left-bottom","right-top","right-bottom"],Hr=pe.classList,_i=us=>{const[Ks,ys]=us.split("-"),Xl=[];return Ye&&(Xl.push(`${Ye}-${Ks}`),ys&&Xl.push(`${Ye}-${Ks}-${ys}`),Xl.forEach(Dc=>{Hr.add(Dc)})),Xl};Ye&&vr.forEach(us=>{Hr.remove(`${Ye}-${us}`)});let ji=Rt.findIndex(us=>"auto"===us);ji>=0&&vr.forEach(function(us){null==Rt.find(Ks=>-1!==Ks.search("^"+us))&&Rt.splice(ji++,1,us)});const Eo=pe.style;Eo.position="absolute",Eo.top="0",Eo.left="0",Eo["will-change"]="transform";let rs=null,Uo=!1;for(rs of Rt){let us=_i(rs);if(ru.positionElements(V,pe,rs,K)){Uo=!0;break}Ye&&us.forEach(Ks=>{Hr.remove(Ks)})}return Uo||(rs=Rt[0],_i(rs),ru.positionElements(V,pe,rs,K)),rs}function Fe(){return new Ot}let we=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:Fe,token:V,providedIn:"root"}),V})(),Ot=(()=>{class V extends we{parse(A){if(null!=A){const K=A.trim().split("-");if(1===K.length&&Hi(K[0]))return{year:ni(K[0]),month:null,day:null};if(2===K.length&&Hi(K[0])&&Hi(K[1]))return{year:ni(K[0]),month:ni(K[1]),day:null};if(3===K.length&&Hi(K[0])&&Hi(K[1])&&Hi(K[2]))return{year:ni(K[0]),month:ni(K[1]),day:ni(K[2])}}return null}format(A){return A?`${A.year}-${Hi(A.month)?Os(A.month):""}-${Hi(A.day)?Os(A.day):""}`:""}}return V.\u0275fac=function(){let pe;return function(K){return(pe||(pe=t.n5z(V)))(K||V)}}(),V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})(),xe=(()=>{class V extends Ao{constructor(){super(...arguments),this.autoClose=!0,this.placement=["bottom-left","bottom-right","top-left","top-right"],this.restoreFocus=!0}}return V.\u0275fac=function(){let pe;return function(K){return(pe||(pe=t.n5z(V)))(K||V)}}(),V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})(),ke=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i,ji,Eo,rs,Uo){this._parserFormatter=A,this._elRef=K,this._vcRef=Ye,this._renderer=Rt,this._cfr=vr,this._ngZone=Hr,this._calendar=_i,this._dateAdapter=ji,this._document=Eo,this._changeDetector=rs,this._cRef=null,this._disabled=!1,this._elWithFocus=null,this._model=null,this.dateSelect=new t.vpe,this.navigate=new t.vpe,this.closed=new t.vpe,this._onChange=us=>{},this._onTouched=()=>{},this._validatorChange=()=>{},["autoClose","container","positionTarget","placement"].forEach(us=>this[us]=Uo[us]),this._zoneSubscription=Hr.onStable.subscribe(()=>this._updatePopupPosition())}get disabled(){return this._disabled}set disabled(A){this._disabled=""===A||A&&"false"!==A,this.isOpen()&&this._cRef.instance.setDisabledState(this._disabled)}registerOnChange(A){this._onChange=A}registerOnTouched(A){this._onTouched=A}registerOnValidatorChange(A){this._validatorChange=A}setDisabledState(A){this.disabled=A}validate(A){const{value:K}=A;if(null!=K){const Ye=this._fromDateStruct(this._dateAdapter.fromModel(K));if(!Ye)return{ngbDate:{invalid:K}};if(this.minDate&&Ye.before(si.from(this.minDate)))return{ngbDate:{minDate:{minDate:this.minDate,actual:K}}};if(this.maxDate&&Ye.after(si.from(this.maxDate)))return{ngbDate:{maxDate:{maxDate:this.maxDate,actual:K}}}}return null}writeValue(A){this._model=this._fromDateStruct(this._dateAdapter.fromModel(A)),this._writeModelValue(this._model)}manualDateChange(A,K=!1){const Ye=A!==this._inputValue;Ye&&(this._inputValue=A,this._model=this._fromDateStruct(this._parserFormatter.parse(A))),(Ye||!K)&&this._onChange(this._model?this._dateAdapter.toModel(this._model):""===A?null:A),K&&this._model&&this._writeModelValue(this._model)}isOpen(){return!!this._cRef}open(){if(!this.isOpen()){const A=this._cfr.resolveComponentFactory(Ho);this._cRef=this._vcRef.createComponent(A),this._applyPopupStyling(this._cRef.location.nativeElement),this._applyDatepickerInputs(this._cRef.instance),this._subscribeForDatepickerOutputs(this._cRef.instance),this._cRef.instance.ngOnInit(),this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model)),this._cRef.instance.registerOnChange(K=>{this.writeValue(K),this._onChange(K),this._onTouched()}),this._cRef.changeDetectorRef.detectChanges(),this._cRef.instance.setDisabledState(this.disabled),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement),this._elWithFocus=this._document.activeElement,ql(this._ngZone,this._cRef.location.nativeElement,this.closed,!0),this._cRef.instance.focus(),fc(this._ngZone,this._document,this.autoClose,()=>this.close(),this.closed,[],[this._elRef.nativeElement,this._cRef.location.nativeElement])}}close(){if(this.isOpen()){this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView)),this._cRef=null,this.closed.emit(),this._changeDetector.markForCheck();let A=this._elWithFocus;gi(this.restoreFocus)?A=this._document.querySelector(this.restoreFocus):void 0!==this.restoreFocus&&(A=this.restoreFocus),A&&A.focus?A.focus():this._document.body.focus()}}toggle(){this.isOpen()?this.close():this.open()}navigateTo(A){this.isOpen()&&this._cRef.instance.navigateTo(A)}onBlur(){this._onTouched()}onFocus(){this._elWithFocus=this._elRef.nativeElement}ngOnChanges(A){if((A.minDate||A.maxDate)&&(this._validatorChange(),this.isOpen()&&(A.minDate&&(this._cRef.instance.minDate=this.minDate),A.maxDate&&(this._cRef.instance.maxDate=this.maxDate),this._cRef.instance.ngOnChanges(A))),A.datepickerClass){const{currentValue:K,previousValue:Ye}=A.datepickerClass;this._applyPopupClass(K,Ye)}}ngOnDestroy(){this.close(),this._zoneSubscription.unsubscribe()}_applyDatepickerInputs(A){["dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","showNavigation","showWeekNumbers","weekdays"].forEach(K=>{void 0!==this[K]&&(A[K]=this[K])}),A.startDate=this.startDate||this._model}_applyPopupClass(A,K){var Ye;const Rt=null===(Ye=this._cRef)||void 0===Ye?void 0:Ye.location.nativeElement;Rt&&(A&&this._renderer.addClass(Rt,A),K&&this._renderer.removeClass(Rt,K))}_applyPopupStyling(A){this._renderer.addClass(A,"dropdown-menu"),this._renderer.addClass(A,"show"),"body"===this.container&&this._renderer.addClass(A,"ngb-dp-body"),this._applyPopupClass(this.datepickerClass)}_subscribeForDatepickerOutputs(A){A.navigate.subscribe(K=>this.navigate.emit(K)),A.dateSelect.subscribe(K=>{this.dateSelect.emit(K),(!0===this.autoClose||"inside"===this.autoClose)&&this.close()})}_writeModelValue(A){const K=this._parserFormatter.format(A);this._inputValue=K,this._renderer.setProperty(this._elRef.nativeElement,"value",K),this.isOpen()&&(this._cRef.instance.writeValue(this._dateAdapter.toModel(A)),this._onTouched())}_fromDateStruct(A){const K=A?new si(A.year,A.month,A.day):null;return this._calendar.isValid(K)?K:null}_updatePopupPosition(){if(!this._cRef)return;let A;if(A=gi(this.positionTarget)?this._document.querySelector(this.positionTarget):this.positionTarget instanceof HTMLElement?this.positionTarget:this._elRef.nativeElement,this.positionTarget&&!A)throw new Error("ngbDatepicker could not find element declared in [positionTarget] to position against.");Je(A,this._cRef.location.nativeElement,this.placement,"body"===this.container)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(we),t.Y36(t.SBq),t.Y36(t.s_b),t.Y36(t.Qsj),t.Y36(t._Vd),t.Y36(t.R0b),t.Y36(vo),t.Y36(jo),t.Y36(e.K0),t.Y36(t.sBO),t.Y36(xe))},V.\u0275dir=t.lG2({type:V,selectors:[["input","ngbDatepicker",""]],hostVars:1,hostBindings:function(A,K){1&A&&t.NdJ("input",function(Rt){return K.manualDateChange(Rt.target.value)})("change",function(Rt){return K.manualDateChange(Rt.target.value,!0)})("focus",function(){return K.onFocus()})("blur",function(){return K.onBlur()}),2&A&&t.Ikx("disabled",K.disabled)},inputs:{disabled:"disabled",autoClose:"autoClose",datepickerClass:"datepickerClass",dayTemplate:"dayTemplate",dayTemplateData:"dayTemplateData",displayMonths:"displayMonths",firstDayOfWeek:"firstDayOfWeek",footerTemplate:"footerTemplate",markDisabled:"markDisabled",minDate:"minDate",maxDate:"maxDate",navigation:"navigation",outsideDays:"outsideDays",placement:"placement",restoreFocus:"restoreFocus",showWeekNumbers:"showWeekNumbers",startDate:"startDate",container:"container",positionTarget:"positionTarget",weekdays:"weekdays"},outputs:{dateSelect:"dateSelect",navigate:"navigate",closed:"closed"},exportAs:["ngbDatepicker"],features:[t._Bn([{provide:zt.JU,useExisting:(0,t.Gpc)(()=>V),multi:!0},{provide:zt.Cf,useExisting:(0,t.Gpc)(()=>V),multi:!0},{provide:Ao,useExisting:xe}]),t.TTD]}),V})(),Te=(()=>{class V{constructor(A){this.i18n=A}isMuted(){return!this.selected&&(this.date.month!==this.currentMonth||this.disabled)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(lr))},V.\u0275cmp=t.Xpm({type:V,selectors:[["","ngbDatepickerDayView",""]],hostAttrs:[1,"btn-light"],hostVars:10,hostBindings:function(A,K){2&A&&t.ekj("bg-primary",K.selected)("text-white",K.selected)("text-muted",K.isMuted())("outside",K.isMuted())("active",K.focused)},inputs:{currentMonth:"currentMonth",date:"date",disabled:"disabled",focused:"focused",selected:"selected"},attrs:Pt,decls:1,vars:1,template:function(A,K){1&A&&t._uU(0),2&A&&t.Oqu(K.i18n.getDayNumerals(K.date))},styles:["[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}"],encapsulation:2,changeDetection:0}),V})(),ge=(()=>{class V{constructor(A,K){this.i18n=A,this._renderer=K,this.select=new t.vpe,this._month=-1,this._year=-1}changeMonth(A){this.select.emit(new si(this.date.year,ni(A),1))}changeYear(A){this.select.emit(new si(ni(A),this.date.month,1))}ngAfterViewChecked(){this.date&&(this.date.month!==this._month&&(this._month=this.date.month,this._renderer.setProperty(this.monthSelect.nativeElement,"value",this._month)),this.date.year!==this._year&&(this._year=this.date.year,this._renderer.setProperty(this.yearSelect.nativeElement,"value",this._year)))}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(lr),t.Y36(t.Qsj))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-datepicker-navigation-select"]],viewQuery:function(A,K){if(1&A&&(t.Gf(Ut,7,t.SBq),t.Gf(ot,7,t.SBq)),2&A){let Ye;t.iGM(Ye=t.CRH())&&(K.monthSelect=Ye.first),t.iGM(Ye=t.CRH())&&(K.yearSelect=Ye.first)}},inputs:{date:"date",disabled:"disabled",months:"months",years:"years"},outputs:{select:"select"},decls:6,vars:4,consts:function(){let pe,A,K,Ye;return pe="Select month",A="Select month",K="Select year",Ye="Select year",[["aria-label",pe,"title",A,1,"custom-select",3,"disabled","change"],["month",""],[3,"value",4,"ngFor","ngForOf"],["aria-label",K,"title",Ye,1,"custom-select",3,"disabled","change"],["year",""],[3,"value"]]},template:function(A,K){1&A&&(t.TgZ(0,"select",0,1),t.NdJ("change",function(Rt){return K.changeMonth(Rt.target.value)}),t.YNc(2,Nn,2,3,"option",2),t.qZA(),t.TgZ(3,"select",3,4),t.NdJ("change",function(Rt){return K.changeYear(Rt.target.value)}),t.YNc(5,sn,2,2,"option",2),t.qZA()),2&A&&(t.Q6J("disabled",K.disabled),t.xp6(2),t.Q6J("ngForOf",K.months),t.xp6(1),t.Q6J("disabled",K.disabled),t.xp6(2),t.Q6J("ngForOf",K.years))},directives:[e.sg,zt.YN,zt.Kr],styles:["ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}"],encapsulation:2,changeDetection:0}),V})();new Date(1882,10,12),new Date(2174,10,25);let cc=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez,zt.u5]]}),V})(),Ac=(()=>{class V{constructor(){this.autoClose=!0,this.placement=["bottom-left","bottom-right","top-left","top-right"]}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})(),bu=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275dir=t.lG2({type:V,selectors:[["",8,"navbar"]]}),V})(),ou=(()=>{class V{constructor(A){this.elementRef=A,this._disabled=!1}set disabled(A){this._disabled=""===A||!0===A}get disabled(){return this._disabled}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbDropdownItem",""]],hostAttrs:[1,"dropdown-item"],hostVars:2,hostBindings:function(A,K){2&A&&t.ekj("disabled",K.disabled)},inputs:{disabled:"disabled"}}),V})(),xl=(()=>{class V{constructor(A,K){this.dropdown=A,this.placement="bottom",this.isOpen=!1,this.nativeElement=K.nativeElement}}return V.\u0275fac=function(A){return new(A||V)(t.Y36((0,t.Gpc)(()=>tl)),t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbDropdownMenu",""]],contentQueries:function(A,K,Ye){if(1&A&&t.Suo(Ye,ou,4),2&A){let Rt;t.iGM(Rt=t.CRH())&&(K.menuItems=Rt)}},hostVars:5,hostBindings:function(A,K){1&A&&t.NdJ("keydown.ArrowUp",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.ArrowDown",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Home",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.End",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Enter",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Space",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Tab",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Shift.Tab",function(Rt){return K.dropdown.onKeyDown(Rt)}),2&A&&(t.uIk("x-placement",K.placement),t.ekj("dropdown-menu",!0)("show",K.dropdown.isOpen()))}}),V})(),Vl=(()=>{class V{constructor(A,K){this.dropdown=A,this.nativeElement=K.nativeElement}}return V.\u0275fac=function(A){return new(A||V)(t.Y36((0,t.Gpc)(()=>tl)),t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbDropdownAnchor",""]],hostAttrs:[1,"dropdown-toggle"],hostVars:1,hostBindings:function(A,K){2&A&&t.uIk("aria-expanded",K.dropdown.isOpen())}}),V})(),el=(()=>{class V extends Vl{constructor(A,K){super(A,K)}}return V.\u0275fac=function(A){return new(A||V)(t.Y36((0,t.Gpc)(()=>tl)),t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbDropdownToggle",""]],hostAttrs:[1,"dropdown-toggle"],hostVars:1,hostBindings:function(A,K){1&A&&t.NdJ("click",function(){return K.dropdown.toggle()})("keydown.ArrowUp",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.ArrowDown",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Home",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.End",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Tab",function(Rt){return K.dropdown.onKeyDown(Rt)})("keydown.Shift.Tab",function(Rt){return K.dropdown.onKeyDown(Rt)}),2&A&&t.uIk("aria-expanded",K.dropdown.isOpen())},features:[t._Bn([{provide:Vl,useExisting:(0,t.Gpc)(()=>V)}]),t.qOj]}),V})(),tl=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i){this._changeDetector=A,this._document=Ye,this._ngZone=Rt,this._elementRef=vr,this._renderer=Hr,this._closed$=new ie.xQ,this._bodyContainer=null,this._open=!1,this.openChange=new t.vpe,this.placement=K.placement,this.container=K.container,this.autoClose=K.autoClose,this.display=_i?"static":"dynamic",this._zoneSubscription=Rt.onStable.subscribe(()=>{this._positionMenu()})}ngAfterContentInit(){this._ngZone.onStable.pipe((0,nn.q)(1)).subscribe(()=>{this._applyPlacementClasses(),this._open&&this._setCloseHandlers()})}ngOnChanges(A){if(A.container&&this._open&&this._applyContainer(this.container),A.placement&&!A.placement.isFirstChange&&this._applyPlacementClasses(),A.dropdownClass){const{currentValue:K,previousValue:Ye}=A.dropdownClass;this._applyCustomDropdownClass(K,Ye)}}isOpen(){return this._open}open(){this._open||(this._open=!0,this._applyContainer(this.container),this.openChange.emit(!0),this._setCloseHandlers(),this._anchor&&this._anchor.nativeElement.focus())}_setCloseHandlers(){fc(this._ngZone,this._document,this.autoClose,A=>{this.close(),0===A&&this._anchor.nativeElement.focus()},this._closed$,this._menu?[this._menu.nativeElement]:[],this._anchor?[this._anchor.nativeElement]:[],".dropdown-item,.dropdown-divider")}close(){this._open&&(this._open=!1,this._resetContainer(),this._closed$.next(),this.openChange.emit(!1),this._changeDetector.markForCheck())}toggle(){this.isOpen()?this.close():this.open()}ngOnDestroy(){this._resetContainer(),this._closed$.next(),this._zoneSubscription.unsubscribe()}onKeyDown(A){const K=A.which,Ye=this._getMenuElements();let Rt=-1,vr=null;const Hr=this._isEventFromToggle(A);if(!Hr&&Ye.length&&Ye.forEach((_i,ji)=>{_i.contains(A.target)&&(vr=_i),_i===this._document.activeElement&&(Rt=ji)}),K!==Zi.Space&&K!==Zi.Enter){if(K!==Zi.Tab){if(Hr||vr){if(this.open(),Ye.length){switch(K){case Zi.ArrowDown:Rt=Math.min(Rt+1,Ye.length-1);break;case Zi.ArrowUp:if(this._isDropup()&&-1===Rt){Rt=Ye.length-1;break}Rt=Math.max(Rt-1,0);break;case Zi.Home:Rt=0;break;case Zi.End:Rt=Ye.length-1}Ye[Rt].focus()}A.preventDefault()}}else if(A.target&&this.isOpen()&&this.autoClose){if(this._anchor.nativeElement===A.target)return void("body"!==this.container||A.shiftKey?A.shiftKey&&this.close():(this._renderer.setAttribute(this._menu.nativeElement,"tabindex","0"),this._menu.nativeElement.focus(),this._renderer.removeAttribute(this._menu.nativeElement,"tabindex")));if("body"===this.container){const _i=this._menu.nativeElement.querySelectorAll(Fl);A.shiftKey&&A.target===_i[0]?(this._anchor.nativeElement.focus(),A.preventDefault()):!A.shiftKey&&A.target===_i[_i.length-1]&&(this._anchor.nativeElement.focus(),this.close())}else(0,oe.R)(A.target,"focusout").pipe((0,nn.q)(1)).subscribe(({relatedTarget:_i})=>{this._elementRef.nativeElement.contains(_i)||this.close()})}}else vr&&(!0===this.autoClose||"inside"===this.autoClose)&&(0,oe.R)(vr,"click").pipe((0,nn.q)(1)).subscribe(()=>this.close())}_isDropup(){return this._elementRef.nativeElement.classList.contains("dropup")}_isEventFromToggle(A){return this._anchor.nativeElement.contains(A.target)}_getMenuElements(){const A=this._menu;return null==A?[]:A.menuItems.filter(K=>!K.disabled).map(K=>K.elementRef.nativeElement)}_positionMenu(){const A=this._menu;this.isOpen()&&A&&this._applyPlacementClasses("dynamic"===this.display?Je(this._anchor.nativeElement,this._bodyContainer||this._menu.nativeElement,this.placement,"body"===this.container):this._getFirstPlacement(this.placement))}_getFirstPlacement(A){return Array.isArray(A)?A[0]:A.split(" ")[0]}_resetContainer(){const A=this._renderer;if(this._menu){const Ye=this._menu.nativeElement;A.appendChild(this._elementRef.nativeElement,Ye),A.removeStyle(Ye,"position"),A.removeStyle(Ye,"transform")}this._bodyContainer&&(A.removeChild(this._document.body,this._bodyContainer),this._bodyContainer=null)}_applyContainer(A=null){if(this._resetContainer(),"body"===A){const K=this._renderer,Ye=this._menu.nativeElement,Rt=this._bodyContainer=this._bodyContainer||K.createElement("div");K.setStyle(Rt,"position","absolute"),K.setStyle(Ye,"position","static"),K.setStyle(Rt,"z-index","1050"),K.appendChild(Rt,Ye),K.appendChild(this._document.body,Rt)}this._applyCustomDropdownClass(this.dropdownClass)}_applyCustomDropdownClass(A,K){const Ye="body"===this.container?this._bodyContainer:this._elementRef.nativeElement;Ye&&(K&&this._renderer.removeClass(Ye,K),A&&this._renderer.addClass(Ye,A))}_applyPlacementClasses(A){const K=this._menu;if(K){A||(A=this._getFirstPlacement(this.placement));const Ye=this._renderer,Rt=this._elementRef.nativeElement;Ye.removeClass(Rt,"dropup"),Ye.removeClass(Rt,"dropdown"),K.placement="static"===this.display?null:A;const vr=-1!==A.search("^top")?"dropup":"dropdown";Ye.addClass(Rt,vr);const Hr=this._bodyContainer;Hr&&(Ye.removeClass(Hr,"dropup"),Ye.removeClass(Hr,"dropdown"),Ye.addClass(Hr,vr))}}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.sBO),t.Y36(Ac),t.Y36(e.K0),t.Y36(t.R0b),t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(bu,8))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbDropdown",""]],contentQueries:function(A,K,Ye){if(1&A&&(t.Suo(Ye,xl,5),t.Suo(Ye,Vl,5)),2&A){let Rt;t.iGM(Rt=t.CRH())&&(K._menu=Rt.first),t.iGM(Rt=t.CRH())&&(K._anchor=Rt.first)}},hostVars:2,hostBindings:function(A,K){2&A&&t.ekj("show",K.isOpen())},inputs:{_open:["open","_open"],placement:"placement",container:"container",autoClose:"autoClose",display:"display",dropdownClass:"dropdownClass"},outputs:{openChange:"openChange"},exportAs:["ngbDropdown"],features:[t.TTD]}),V})(),bc=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({}),V})(),vl=(()=>{class V{constructor(A){this._ngbConfig=A,this.backdrop=!0,this.keyboard=!0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})();class hc{constructor(pe,A,K){this.nodes=pe,this.viewRef=A,this.componentRef=K}}class Jl{constructor(pe,A,K,Ye,Rt,vr,Hr){this._type=pe,this._injector=A,this._viewContainerRef=K,this._renderer=Ye,this._ngZone=Rt,this._componentFactoryResolver=vr,this._applicationRef=Hr,this._windowRef=null,this._contentRef=null}open(pe,A,K=!1){this._windowRef||(this._contentRef=this._getContentRef(pe,A),this._windowRef=this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type),this._viewContainerRef.length,this._injector,this._contentRef.nodes));const{nativeElement:Ye}=this._windowRef.location,Rt=this._ngZone.onStable.pipe((0,nn.q)(1),(0,dt.zg)(()=>an(this._ngZone,Ye,({classList:vr})=>vr.add("show"),{animation:K,runningTransition:"continue"})));return{windowRef:this._windowRef,transition$:Rt}}close(pe=!1){return this._windowRef?an(this._ngZone,this._windowRef.location.nativeElement,({classList:A})=>A.remove("show"),{animation:pe,runningTransition:"stop"}).pipe((0,ae.b)(()=>{var A;this._windowRef&&(this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView)),this._windowRef=null),(null===(A=this._contentRef)||void 0===A?void 0:A.viewRef)&&(this._applicationRef.detachView(this._contentRef.viewRef),this._contentRef.viewRef.destroy(),this._contentRef=null)})):(0,Y.of)(void 0)}_getContentRef(pe,A){if(pe){if(pe instanceof t.Rgc){const K=pe.createEmbeddedView(A);return this._applicationRef.attachView(K),new hc([K.rootNodes],K)}return new hc([[this._renderer.createText(`${pe}`)]])}return new hc([])}}const nl=()=>{};let El=(()=>{class V{constructor(A){this._document=A}compensate(){const A=this._getWidth();return this._isPresent(A)?this._adjustBody(A):nl}_adjustBody(A){const K=this._document.body,Ye=K.style.paddingRight,Rt=parseFloat(window.getComputedStyle(K)["padding-right"]);return K.style["padding-right"]=`${Rt+A}px`,()=>K.style["padding-right"]=Ye}_isPresent(A){const K=this._document.body.getBoundingClientRect();return window.innerWidth-(K.left+K.right)>=A-.1*A}_getWidth(){const A=this._document.createElement("div");A.className="modal-scrollbar-measure";const K=this._document.body;K.appendChild(A);const Ye=A.getBoundingClientRect().width-A.clientWidth;return K.removeChild(A),Ye}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(e.K0))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(e.K0))},token:V,providedIn:"root"}),V})(),p=(()=>{class V{constructor(A,K){this._el=A,this._zone=K}ngOnInit(){this._zone.onStable.asObservable().pipe((0,nn.q)(1)).subscribe(()=>{an(this._zone,this._el.nativeElement,(A,K)=>{K&&Ml(A),A.classList.add("show")},{animation:this.animation,runningTransition:"continue"})})}hide(){return an(this._zone,this._el.nativeElement,({classList:A})=>A.remove("show"),{animation:this.animation,runningTransition:"stop"})}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq),t.Y36(t.R0b))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-modal-backdrop"]],hostAttrs:[2,"z-index","1050"],hostVars:6,hostBindings:function(A,K){2&A&&(t.Tol("modal-backdrop"+(K.backdropClass?" "+K.backdropClass:"")),t.ekj("show",!K.animation)("fade",K.animation))},inputs:{animation:"animation",backdropClass:"backdropClass"},decls:0,vars:0,template:function(A,K){},encapsulation:2}),V})();class E{close(pe){}dismiss(pe){}}class N{constructor(pe,A,K,Ye){this._windowCmptRef=pe,this._contentRef=A,this._backdropCmptRef=K,this._beforeDismiss=Ye,this._closed=new ie.xQ,this._dismissed=new ie.xQ,this._hidden=new ie.xQ,pe.instance.dismissEvent.subscribe(Rt=>{this.dismiss(Rt)}),this.result=new Promise((Rt,vr)=>{this._resolve=Rt,this._reject=vr}),this.result.then(null,()=>{})}get componentInstance(){if(this._contentRef&&this._contentRef.componentRef)return this._contentRef.componentRef.instance}get closed(){return this._closed.asObservable().pipe((0,Et.R)(this._hidden))}get dismissed(){return this._dismissed.asObservable().pipe((0,Et.R)(this._hidden))}get hidden(){return this._hidden.asObservable()}get shown(){return this._windowCmptRef.instance.shown.asObservable()}close(pe){this._windowCmptRef&&(this._closed.next(pe),this._resolve(pe),this._removeModalElements())}_dismiss(pe){this._dismissed.next(pe),this._reject(pe),this._removeModalElements()}dismiss(pe){if(this._windowCmptRef)if(this._beforeDismiss){const A=this._beforeDismiss();A&&A.then?A.then(K=>{!1!==K&&this._dismiss(pe)},()=>{}):!1!==A&&this._dismiss(pe)}else this._dismiss(pe)}_removeModalElements(){const pe=this._windowCmptRef.instance.hide(),A=this._backdropCmptRef?this._backdropCmptRef.instance.hide():(0,Y.of)(void 0);pe.subscribe(()=>{const{nativeElement:K}=this._windowCmptRef.location;K.parentNode.removeChild(K),this._windowCmptRef.destroy(),this._contentRef&&this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._windowCmptRef=null,this._contentRef=null}),A.subscribe(()=>{if(this._backdropCmptRef){const{nativeElement:K}=this._backdropCmptRef.location;K.parentNode.removeChild(K),this._backdropCmptRef.destroy(),this._backdropCmptRef=null}}),x(pe,A).subscribe(()=>{this._hidden.next(),this._hidden.complete()})}}var $=(()=>{return(V=$||($={}))[V.BACKDROP_CLICK=0]="BACKDROP_CLICK",V[V.ESC=1]="ESC",$;var V})();let Q=(()=>{class V{constructor(A,K,Ye){this._document=A,this._elRef=K,this._zone=Ye,this._closed$=new ie.xQ,this._elWithFocus=null,this.backdrop=!0,this.keyboard=!0,this.dismissEvent=new t.vpe,this.shown=new ie.xQ,this.hidden=new ie.xQ}dismiss(A){this.dismissEvent.emit(A)}ngOnInit(){this._elWithFocus=this._document.activeElement,this._zone.onStable.asObservable().pipe((0,nn.q)(1)).subscribe(()=>{this._show()})}ngOnDestroy(){this._disableEventHandling()}hide(){const{nativeElement:A}=this._elRef,K={animation:this.animation,runningTransition:"stop"},vr=x(an(this._zone,A,()=>A.classList.remove("show"),K),an(this._zone,this._dialogEl.nativeElement,()=>{},K));return vr.subscribe(()=>{this.hidden.next(),this.hidden.complete()}),this._disableEventHandling(),this._restoreFocus(),vr}_show(){const A={animation:this.animation,runningTransition:"continue"};x(an(this._zone,this._elRef.nativeElement,(Rt,vr)=>{vr&&Ml(Rt),Rt.classList.add("show")},A),an(this._zone,this._dialogEl.nativeElement,()=>{},A)).subscribe(()=>{this.shown.next(),this.shown.complete()}),this._enableEventHandling(),this._setFocus()}_enableEventHandling(){const{nativeElement:A}=this._elRef;this._zone.runOutsideAngular(()=>{(0,oe.R)(A,"keydown").pipe((0,Et.R)(this._closed$),(0,lt.h)(Ye=>Ye.which===Zi.Escape)).subscribe(Ye=>{this.keyboard?requestAnimationFrame(()=>{Ye.defaultPrevented||this._zone.run(()=>this.dismiss($.ESC))}):"static"===this.backdrop&&this._bumpBackdrop()});let K=!1;(0,oe.R)(this._dialogEl.nativeElement,"mousedown").pipe((0,Et.R)(this._closed$),(0,ae.b)(()=>K=!1),(0,It.w)(()=>(0,oe.R)(A,"mouseup").pipe((0,Et.R)(this._closed$),(0,nn.q)(1))),(0,lt.h)(({target:Ye})=>A===Ye)).subscribe(()=>{K=!0}),(0,oe.R)(A,"click").pipe((0,Et.R)(this._closed$)).subscribe(({target:Ye})=>{A===Ye&&("static"===this.backdrop?this._bumpBackdrop():!0===this.backdrop&&!K&&this._zone.run(()=>this.dismiss($.BACKDROP_CLICK))),K=!1})})}_disableEventHandling(){this._closed$.next()}_setFocus(){const{nativeElement:A}=this._elRef;if(!A.contains(document.activeElement)){const K=A.querySelector("[ngbAutofocus]"),Ye=bl(A)[0];(K||Ye||A).focus()}}_restoreFocus(){const A=this._document.body,K=this._elWithFocus;let Ye;Ye=K&&K.focus&&A.contains(K)?K:A,this._zone.runOutsideAngular(()=>{setTimeout(()=>Ye.focus()),this._elWithFocus=null})}_bumpBackdrop(){"static"===this.backdrop&&an(this._zone,this._elRef.nativeElement,({classList:A})=>(A.add("modal-static"),()=>A.remove("modal-static")),{animation:this.animation,runningTransition:"continue"})}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(e.K0),t.Y36(t.SBq),t.Y36(t.R0b))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-modal-window"]],viewQuery:function(A,K){if(1&A&&t.Gf(An,7),2&A){let Ye;t.iGM(Ye=t.CRH())&&(K._dialogEl=Ye.first)}},hostAttrs:["role","dialog","tabindex","-1"],hostVars:7,hostBindings:function(A,K){2&A&&(t.uIk("aria-modal",!0)("aria-labelledby",K.ariaLabelledBy)("aria-describedby",K.ariaDescribedBy),t.Tol("modal d-block"+(K.windowClass?" "+K.windowClass:"")),t.ekj("fade",K.animation))},inputs:{backdrop:"backdrop",keyboard:"keyboard",animation:"animation",ariaLabelledBy:"ariaLabelledBy",ariaDescribedBy:"ariaDescribedBy",centered:"centered",scrollable:"scrollable",size:"size",windowClass:"windowClass",modalDialogClass:"modalDialogClass"},outputs:{dismissEvent:"dismiss"},ngContentSelectors:Yn,decls:4,vars:2,consts:[["role","document"],["dialog",""],[1,"modal-content"]],template:function(A,K){1&A&&(t.F$t(),t.TgZ(0,"div",0,1),t.TgZ(2,"div",2),t.Hsn(3),t.qZA(),t.qZA()),2&A&&t.Tol("modal-dialog"+(K.size?" modal-"+K.size:"")+(K.centered?" modal-dialog-centered":"")+(K.scrollable?" modal-dialog-scrollable":"")+(K.modalDialogClass?" "+K.modalDialogClass:""))},styles:["ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}"],encapsulation:2}),V})(),de=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr){this._applicationRef=A,this._injector=K,this._document=Ye,this._scrollBar=Rt,this._rendererFactory=vr,this._ngZone=Hr,this._activeWindowCmptHasChanged=new ie.xQ,this._ariaHiddenValues=new Map,this._backdropAttributes=["animation","backdropClass"],this._modalRefs=[],this._windowAttributes=["animation","ariaLabelledBy","ariaDescribedBy","backdrop","centered","keyboard","scrollable","size","windowClass","modalDialogClass"],this._windowCmpts=[],this._activeInstances=new t.vpe,this._activeWindowCmptHasChanged.subscribe(()=>{if(this._windowCmpts.length){const _i=this._windowCmpts[this._windowCmpts.length-1];ql(this._ngZone,_i.location.nativeElement,this._activeWindowCmptHasChanged),this._revertAriaHidden(),this._setAriaHidden(_i.location.nativeElement)}})}open(A,K,Ye,Rt){const vr=Rt.container instanceof HTMLElement?Rt.container:cs(Rt.container)?this._document.querySelector(Rt.container):this._document.body,Hr=this._rendererFactory.createRenderer(null,null),_i=this._scrollBar.compensate(),ji=()=>{this._modalRefs.length||(Hr.removeClass(this._document.body,"modal-open"),this._revertAriaHidden())};if(!vr)throw new Error(`The specified modal container "${Rt.container||"body"}" was not found in the DOM.`);const Eo=new E,rs=this._getContentRef(A,Rt.injector||K,Ye,Eo,Rt);let Uo=!1!==Rt.backdrop?this._attachBackdrop(A,vr):void 0,us=this._attachWindowComponent(A,vr,rs),Ks=new N(us,rs,Uo,Rt.beforeDismiss);return this._registerModalRef(Ks),this._registerWindowCmpt(us),Ks.result.then(_i,_i),Ks.result.then(ji,ji),Eo.close=ys=>{Ks.close(ys)},Eo.dismiss=ys=>{Ks.dismiss(ys)},this._applyWindowOptions(us.instance,Rt),1===this._modalRefs.length&&Hr.addClass(this._document.body,"modal-open"),Uo&&Uo.instance&&(this._applyBackdropOptions(Uo.instance,Rt),Uo.changeDetectorRef.detectChanges()),us.changeDetectorRef.detectChanges(),Ks}get activeInstances(){return this._activeInstances}dismissAll(A){this._modalRefs.forEach(K=>K.dismiss(A))}hasOpenModals(){return this._modalRefs.length>0}_attachBackdrop(A,K){let Rt=A.resolveComponentFactory(p).create(this._injector);return this._applicationRef.attachView(Rt.hostView),K.appendChild(Rt.location.nativeElement),Rt}_attachWindowComponent(A,K,Ye){let vr=A.resolveComponentFactory(Q).create(this._injector,Ye.nodes);return this._applicationRef.attachView(vr.hostView),K.appendChild(vr.location.nativeElement),vr}_applyWindowOptions(A,K){this._windowAttributes.forEach(Ye=>{cs(K[Ye])&&(A[Ye]=K[Ye])})}_applyBackdropOptions(A,K){this._backdropAttributes.forEach(Ye=>{cs(K[Ye])&&(A[Ye]=K[Ye])})}_getContentRef(A,K,Ye,Rt,vr){return Ye?Ye instanceof t.Rgc?this._createFromTemplateRef(Ye,Rt):gi(Ye)?this._createFromString(Ye):this._createFromComponent(A,K,Ye,Rt,vr):new hc([])}_createFromTemplateRef(A,K){const Rt=A.createEmbeddedView({$implicit:K,close(vr){K.close(vr)},dismiss(vr){K.dismiss(vr)}});return this._applicationRef.attachView(Rt),new hc([Rt.rootNodes],Rt)}_createFromString(A){const K=this._document.createTextNode(`${A}`);return new hc([[K]])}_createFromComponent(A,K,Ye,Rt,vr){const Hr=A.resolveComponentFactory(Ye),_i=t.zs3.create({providers:[{provide:E,useValue:Rt}],parent:K}),ji=Hr.create(_i),Eo=ji.location.nativeElement;return vr.scrollable&&Eo.classList.add("component-host-scrollable"),this._applicationRef.attachView(ji.hostView),new hc([[Eo]],ji.hostView,ji)}_setAriaHidden(A){const K=A.parentElement;K&&A!==this._document.body&&(Array.from(K.children).forEach(Ye=>{Ye!==A&&"SCRIPT"!==Ye.nodeName&&(this._ariaHiddenValues.set(Ye,Ye.getAttribute("aria-hidden")),Ye.setAttribute("aria-hidden","true"))}),this._setAriaHidden(K))}_revertAriaHidden(){this._ariaHiddenValues.forEach((A,K)=>{A?K.setAttribute("aria-hidden",A):K.removeAttribute("aria-hidden")}),this._ariaHiddenValues.clear()}_registerModalRef(A){const K=()=>{const Ye=this._modalRefs.indexOf(A);Ye>-1&&(this._modalRefs.splice(Ye,1),this._activeInstances.emit(this._modalRefs))};this._modalRefs.push(A),this._activeInstances.emit(this._modalRefs),A.result.then(K,K)}_registerWindowCmpt(A){this._windowCmpts.push(A),this._activeWindowCmptHasChanged.next(),A.onDestroy(()=>{const K=this._windowCmpts.indexOf(A);K>-1&&(this._windowCmpts.splice(K,1),this._activeWindowCmptHasChanged.next())})}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(t.z2F),t.LFG(t.zs3),t.LFG(e.K0),t.LFG(El),t.LFG(t.FYo),t.LFG(t.R0b))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(t.z2F),t.LFG(t.gxx),t.LFG(e.K0),t.LFG(El),t.LFG(t.FYo),t.LFG(t.R0b))},token:V,providedIn:"root"}),V})(),ve=(()=>{class V{constructor(A,K,Ye,Rt){this._moduleCFR=A,this._injector=K,this._modalStack=Ye,this._config=Rt}open(A,K={}){const Ye=Object.assign(Object.assign(Object.assign({},this._config),{animation:this._config.animation}),K);return this._modalStack.open(this._moduleCFR,this._injector,A,Ye)}get activeInstances(){return this._modalStack.activeInstances}dismissAll(A){this._modalStack.dismissAll(A)}hasOpenModals(){return this._modalStack.hasOpenModals()}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(t._Vd),t.LFG(t.zs3),t.LFG(de),t.LFG(vl))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(t._Vd),t.LFG(t.gxx),t.LFG(de),t.LFG(vl))},token:V,providedIn:"root"}),V})(),De=(()=>{class V{constructor(A){this._ngbConfig=A,this.destroyOnHide=!0,this.orientation="horizontal",this.roles="tablist",this.keyboard=!1}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})();const _t=V=>cs(V)&&""!==V;let Zt=0,wn=(()=>{class V{constructor(A){this.templateRef=A}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.Rgc))},V.\u0275dir=t.lG2({type:V,selectors:[["ng-template","ngbNavContent",""]]}),V})(),cr=(()=>{class V{constructor(A,K){this.elementRef=K,this.disabled=!1,this.shown=new t.vpe,this.hidden=new t.vpe,this._nav=A}ngAfterContentChecked(){this.contentTpl=this.contentTpls.first}ngOnInit(){cs(this.domId)||(this.domId="ngb-nav-"+Zt++)}get active(){return this._nav.activeId===this.id}get id(){return _t(this._id)?this._id:this.domId}get panelDomId(){return`${this.domId}-panel`}isPanelInDom(){return(cs(this.destroyOnHide)?!this.destroyOnHide:!this._nav.destroyOnHide)||this.active}}return V.\u0275fac=function(A){return new(A||V)(t.Y36((0,t.Gpc)(()=>sr)),t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbNavItem",""]],contentQueries:function(A,K,Ye){if(1&A&&t.Suo(Ye,wn,4),2&A){let Rt;t.iGM(Rt=t.CRH())&&(K.contentTpls=Rt)}},hostVars:2,hostBindings:function(A,K){2&A&&t.ekj("nav-item",!0)},inputs:{disabled:"disabled",domId:"domId",destroyOnHide:"destroyOnHide",_id:["ngbNavItem","_id"]},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbNavItem"]}),V})(),sr=(()=>{class V{constructor(A,K,Ye,Rt){this.role=A,this._cd=Ye,this._document=Rt,this.activeIdChange=new t.vpe,this.shown=new t.vpe,this.hidden=new t.vpe,this.destroy$=new ie.xQ,this.navItemChange$=new ie.xQ,this.navChange=new t.vpe,this.animation=K.animation,this.destroyOnHide=K.destroyOnHide,this.orientation=K.orientation,this.roles=K.roles,this.keyboard=K.keyboard}click(A){A.disabled||this._updateActiveId(A.id)}onKeyDown(A){if("tablist"!==this.roles||!this.keyboard)return;const K=A.which,Ye=this.links.filter(Hr=>!Hr.navItem.disabled),{length:Rt}=Ye;let vr=-1;if(Ye.forEach((Hr,_i)=>{Hr.elRef.nativeElement===this._document.activeElement&&(vr=_i)}),Rt){switch(K){case Zi.ArrowLeft:if("vertical"===this.orientation)return;vr=(vr-1+Rt)%Rt;break;case Zi.ArrowRight:if("vertical"===this.orientation)return;vr=(vr+1)%Rt;break;case Zi.ArrowDown:if("horizontal"===this.orientation)return;vr=(vr+1)%Rt;break;case Zi.ArrowUp:if("horizontal"===this.orientation)return;vr=(vr-1+Rt)%Rt;break;case Zi.Home:vr=0;break;case Zi.End:vr=Rt-1}"changeWithArrows"===this.keyboard&&this.select(Ye[vr].navItem.id),Ye[vr].elRef.nativeElement.focus(),A.preventDefault()}}select(A){this._updateActiveId(A,!1)}ngAfterContentInit(){if(!cs(this.activeId)){const A=this.items.first?this.items.first.id:null;_t(A)&&(this._updateActiveId(A,!1),this._cd.detectChanges())}this.items.changes.pipe((0,Et.R)(this.destroy$)).subscribe(()=>this._notifyItemChanged(this.activeId))}ngOnChanges({activeId:A}){A&&!A.firstChange&&this._notifyItemChanged(A.currentValue)}ngOnDestroy(){this.destroy$.next()}_updateActiveId(A,K=!0){if(this.activeId!==A){let Ye=!1;K&&this.navChange.emit({activeId:this.activeId,nextId:A,preventDefault:()=>{Ye=!0}}),Ye||(this.activeId=A,this.activeIdChange.emit(A),this._notifyItemChanged(A))}}_notifyItemChanged(A){this.navItemChange$.next(this._getItemById(A))}_getItemById(A){return this.items&&this.items.find(K=>K.id===A)||null}}return V.\u0275fac=function(A){return new(A||V)(t.$8M("role"),t.Y36(De),t.Y36(t.sBO),t.Y36(e.K0))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbNav",""]],contentQueries:function(A,K,Ye){if(1&A&&(t.Suo(Ye,cr,4),t.Suo(Ye,Tr,5)),2&A){let Rt;t.iGM(Rt=t.CRH())&&(K.items=Rt),t.iGM(Rt=t.CRH())&&(K.links=Rt)}},hostVars:6,hostBindings:function(A,K){1&A&&t.NdJ("keydown.arrowLeft",function(Rt){return K.onKeyDown(Rt)})("keydown.arrowRight",function(Rt){return K.onKeyDown(Rt)})("keydown.arrowDown",function(Rt){return K.onKeyDown(Rt)})("keydown.arrowUp",function(Rt){return K.onKeyDown(Rt)})("keydown.Home",function(Rt){return K.onKeyDown(Rt)})("keydown.End",function(Rt){return K.onKeyDown(Rt)}),2&A&&(t.uIk("aria-orientation","vertical"===K.orientation&&"tablist"===K.roles?"vertical":void 0)("role",K.role?K.role:K.roles?"tablist":void 0),t.ekj("nav",!0)("flex-column","vertical"===K.orientation))},inputs:{animation:"animation",destroyOnHide:"destroyOnHide",orientation:"orientation",roles:"roles",keyboard:"keyboard",activeId:"activeId"},outputs:{activeIdChange:"activeIdChange",shown:"shown",hidden:"hidden",navChange:"navChange"},exportAs:["ngbNav"],features:[t.TTD]}),V})(),Tr=(()=>{class V{constructor(A,K,Ye,Rt){this.role=A,this.navItem=K,this.nav=Ye,this.elRef=Rt}hasNavItemClass(){return this.navItem.elementRef.nativeElement.nodeType===Node.COMMENT_NODE}}return V.\u0275fac=function(A){return new(A||V)(t.$8M("role"),t.Y36(cr),t.Y36(sr),t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["a","ngbNavLink",""]],hostAttrs:["href",""],hostVars:14,hostBindings:function(A,K){1&A&&t.NdJ("click",function(Rt){return K.nav.click(K.navItem),Rt.preventDefault()}),2&A&&(t.Ikx("id",K.navItem.domId),t.uIk("role",K.role?K.role:K.nav.roles?"tab":void 0)("tabindex",K.navItem.disabled?-1:void 0)("aria-controls",K.navItem.isPanelInDom()?K.navItem.panelDomId:null)("aria-selected",K.navItem.active)("aria-disabled",K.navItem.disabled),t.ekj("nav-link",!0)("nav-item",K.hasNavItemClass())("active",K.navItem.active)("disabled",K.navItem.disabled))}}),V})();const Yr=({classList:V})=>(V.remove("show"),()=>V.remove("active")),Pi=(V,pe)=>{pe&&Ml(V),V.classList.add("show")};let yo=(()=>{class V{constructor(A){this.elRef=A}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbNavPane",""]],hostAttrs:[1,"tab-pane"],hostVars:5,hostBindings:function(A,K){2&A&&(t.Ikx("id",K.item.panelDomId),t.uIk("role",K.role?K.role:K.nav.roles?"tabpanel":void 0)("aria-labelledby",K.item.domId),t.ekj("fade",K.nav.animation))},inputs:{item:"item",nav:"nav",role:"role"}}),V})(),Co=(()=>{class V{constructor(A,K){this._cd=A,this._ngZone=K,this._activePane=null}isPanelTransitioning(A){var K;return(null===(K=this._activePane)||void 0===K?void 0:K.item)===A}ngAfterViewInit(){var A;this._updateActivePane(),this.nav.navItemChange$.pipe((0,Et.R)(this.nav.destroy$),(0,At.O)((null===(A=this._activePane)||void 0===A?void 0:A.item)||null),(0,Qe.x)(),pe=>pe.lift(new F(1))).subscribe(K=>{const Ye={animation:this.nav.animation,runningTransition:"stop"};this._cd.detectChanges(),this._activePane?an(this._ngZone,this._activePane.elRef.nativeElement,Yr,Ye).subscribe(()=>{var Rt;const vr=null===(Rt=this._activePane)||void 0===Rt?void 0:Rt.item;this._activePane=this._getPaneForItem(K),this._cd.markForCheck(),this._activePane&&(this._activePane.elRef.nativeElement.classList.add("active"),an(this._ngZone,this._activePane.elRef.nativeElement,Pi,Ye).subscribe(()=>{K&&(K.shown.emit(),this.nav.shown.emit(K.id))})),vr&&(vr.hidden.emit(),this.nav.hidden.emit(vr.id))}):this._updateActivePane()})}_updateActivePane(){var A,K;this._activePane=this._getActivePane(),null===(A=this._activePane)||void 0===A||A.elRef.nativeElement.classList.add("show"),null===(K=this._activePane)||void 0===K||K.elRef.nativeElement.classList.add("active")}_getPaneForItem(A){return this._panes&&this._panes.find(K=>K.item===A)||null}_getActivePane(){return this._panes&&this._panes.find(A=>A.item.active)||null}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.sBO),t.Y36(t.R0b))},V.\u0275cmp=t.Xpm({type:V,selectors:[["","ngbNavOutlet",""]],viewQuery:function(A,K){if(1&A&&t.Gf(yo,5),2&A){let Ye;t.iGM(Ye=t.CRH())&&(K._panes=Ye)}},hostVars:2,hostBindings:function(A,K){2&A&&t.ekj("tab-content",!0)},inputs:{paneRole:"paneRole",nav:["ngbNavOutlet","nav"]},attrs:Bn,decls:1,vars:1,consts:[["ngFor","",3,"ngForOf"],["ngbNavPane","",3,"item","nav","role",4,"ngIf"],["ngbNavPane","",3,"item","nav","role"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(A,K){1&A&&t.YNc(0,Nr,1,1,"ng-template",0),2&A&&t.Q6J("ngForOf",K.nav.items)},directives:[e.sg,e.O5,yo,e.tP],encapsulation:2,changeDetection:0}),V})(),ts=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})();class $s{constructor(pe,A){this.open=pe,this.close=A,A||(this.close=pe)}isManual(){return"manual"===this.open||"manual"===this.close}}const X={hover:["mouseenter","mouseleave"],focus:["focusin","focusout"]},qt=V=>V>0?(0,Ie.g)(V):pe=>pe;function xi(V,pe,A,K,Ye,Rt,vr=0,Hr=0){const _i=function(V,pe=X){const A=(V||"").trim();if(0===A.length)return[];const K=A.split(/\s+/).map(Rt=>Rt.split(":")).map(Rt=>{let vr=pe[Rt[0]]||Rt;return new $s(vr[0],vr[1])}),Ye=K.filter(Rt=>Rt.isManual());if(Ye.length>1)throw"Triggers parse error: only one manual trigger is allowed";if(1===Ye.length&&K.length>1)throw"Triggers parse error: manual trigger can't be mixed with other triggers";return K}(A);if(1===_i.length&&_i[0].isManual())return()=>{};const ji=function(V,pe,A,K){return new I.y(Ye=>{const Rt=[],vr=()=>Ye.next(!0),Hr=()=>Ye.next(!1),_i=()=>Ye.next(!K());return A.forEach(ji=>{ji.open===ji.close?Rt.push(V.listen(pe,ji.open,_i)):Rt.push(V.listen(pe,ji.open,vr),V.listen(pe,ji.close,Hr))}),()=>{Rt.forEach(ji=>ji())}})}(V,pe,_i,K).pipe(function(V,pe,A){return K=>{let Ye=null;const Rt=K.pipe((0,St.U)(_i=>({open:_i})),(0,lt.h)(_i=>{const ji=A();return ji===_i.open||Ye&&Ye.open!==ji?(Ye&&Ye.open!==_i.open&&(Ye=null),!1):(Ye=_i,!0)}),(0,Jt.B)()),vr=Rt.pipe((0,lt.h)(_i=>_i.open),qt(V)),Hr=Rt.pipe((0,lt.h)(_i=>!_i.open),qt(pe));return(0,Ae.T)(vr,Hr).pipe((0,lt.h)(_i=>_i===Ye&&(Ye=null,_i.open!==A())),(0,St.U)(_i=>_i.open))}}(vr,Hr,K)).subscribe(Eo=>Eo?Ye():Rt());return()=>ji.unsubscribe()}let fs=(()=>{class V{constructor(A){this._ngbConfig=A,this.autoClose=!0,this.placement="auto",this.triggers="click",this.disablePopover=!1,this.openDelay=0,this.closeDelay=0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})(),aa=0,za=(()=>{class V{isTitleTemplate(){return this.title instanceof t.Rgc}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-popover-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(A,K){2&A&&(t.Ikx("id",K.id),t.Tol("popover"+(K.popoverClass?" "+K.popoverClass:"")),t.ekj("fade",K.animation))},inputs:{animation:"animation",title:"title",id:"id",popoverClass:"popoverClass",context:"context"},ngContentSelectors:Yn,decls:4,vars:1,consts:[[1,"arrow"],["class","popover-header",4,"ngIf"],[1,"popover-body"],[1,"popover-header"],["simpleTitle",""],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(A,K){1&A&&(t.F$t(),t._UZ(0,"div",0),t.YNc(1,fi,4,2,"h3",1),t.TgZ(2,"div",2),t.Hsn(3),t.qZA()),2&A&&(t.xp6(1),t.Q6J("ngIf",K.title))},directives:[e.O5,e.tP],styles:["ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}"],encapsulation:2,changeDetection:0}),V})(),gc=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i,ji,Eo,rs){this._elementRef=A,this._renderer=K,this._ngZone=_i,this._document=ji,this._changeDetector=Eo,this.shown=new t.vpe,this.hidden=new t.vpe,this._ngbPopoverWindowId="ngb-popover-"+aa++,this._windowRef=null,this.animation=Hr.animation,this.autoClose=Hr.autoClose,this.placement=Hr.placement,this.triggers=Hr.triggers,this.container=Hr.container,this.disablePopover=Hr.disablePopover,this.popoverClass=Hr.popoverClass,this.openDelay=Hr.openDelay,this.closeDelay=Hr.closeDelay,this._popupService=new Jl(za,Ye,vr,K,this._ngZone,Rt,rs),this._zoneSubscription=_i.onStable.subscribe(()=>{this._windowRef&&Je(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container,"bs-popover")})}_isDisabled(){return!(!this.disablePopover&&(this.ngbPopover||this.popoverTitle))}open(A){if(!this._windowRef&&!this._isDisabled()){const{windowRef:K,transition$:Ye}=this._popupService.open(this.ngbPopover,A,this.animation);this._windowRef=K,this._windowRef.instance.animation=this.animation,this._windowRef.instance.title=this.popoverTitle,this._windowRef.instance.context=A,this._windowRef.instance.popoverClass=this.popoverClass,this._windowRef.instance.id=this._ngbPopoverWindowId,this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ngbPopoverWindowId),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._windowRef.changeDetectorRef.detectChanges(),this._windowRef.changeDetectorRef.markForCheck(),fc(this._ngZone,this._document,this.autoClose,()=>this.close(),this.hidden,[this._windowRef.location.nativeElement]),Ye.subscribe(()=>this.shown.emit())}}close(){this._windowRef&&(this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby"),this._popupService.close(this.animation).subscribe(()=>{this._windowRef=null,this.hidden.emit(),this._changeDetector.markForCheck()}))}toggle(){this._windowRef?this.close():this.open()}isOpen(){return null!=this._windowRef}ngOnInit(){this._unregisterListenersFn=xi(this._renderer,this._elementRef.nativeElement,this.triggers,this.isOpen.bind(this),this.open.bind(this),this.close.bind(this),+this.openDelay,+this.closeDelay)}ngOnChanges({ngbPopover:A,popoverTitle:K,disablePopover:Ye,popoverClass:Rt}){Rt&&this.isOpen()&&(this._windowRef.instance.popoverClass=Rt.currentValue),(A||K||Ye)&&this._isDisabled()&&this.close()}ngOnDestroy(){this.close(),this._unregisterListenersFn&&this._unregisterListenersFn(),this._zoneSubscription.unsubscribe()}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(t.zs3),t.Y36(t._Vd),t.Y36(t.s_b),t.Y36(fs),t.Y36(t.R0b),t.Y36(e.K0),t.Y36(t.sBO),t.Y36(t.z2F))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbPopover",""]],inputs:{animation:"animation",autoClose:"autoClose",placement:"placement",triggers:"triggers",container:"container",disablePopover:"disablePopover",popoverClass:"popoverClass",openDelay:"openDelay",closeDelay:"closeDelay",ngbPopover:"ngbPopover",popoverTitle:"popoverTitle"},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbPopover"],features:[t.TTD]}),V})(),Ql=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})(),Ec=(()=>{class V{constructor(){this.max=100,this.animated=!1,this.striped=!1,this.showValue=!1}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})(),Gu=(()=>{class V{constructor(A){this.value=0,this.max=A.max,this.animated=A.animated,this.striped=A.striped,this.textType=A.textType,this.type=A.type,this.showValue=A.showValue,this.height=A.height}set max(A){this._max=!Hi(A)||A<=0?100:A}get max(){return this._max}getValue(){return function(V,pe,A=0){return Math.max(Math.min(V,pe),A)}(this.value,this.max)}getPercentValue(){return 100*this.getValue()/this.max}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(Ec))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-progressbar"]],hostAttrs:[1,"progress"],hostVars:2,hostBindings:function(A,K){2&A&&t.Udp("height",K.height)},inputs:{value:"value",max:"max",animated:"animated",striped:"striped",textType:"textType",type:"type",showValue:"showValue",height:"height"},ngContentSelectors:Yn,decls:3,vars:11,consts:function(){let pe;return pe="" + "\ufffd0\ufffd" + "",[["role","progressbar","aria-valuemin","0"],[4,"ngIf"],pe]},template:function(A,K){1&A&&(t.F$t(),t.TgZ(0,"div",0),t.YNc(1,Ei,3,3,"span",1),t.Hsn(2),t.qZA()),2&A&&(t.DjV("progress-bar",K.type?" bg-"+K.type:"","",K.textType?" text-"+K.textType:"","\n    ",K.animated?" progress-bar-animated":"","",K.striped?" progress-bar-striped":"",""),t.Udp("width",K.getPercentValue(),"%"),t.uIk("aria-valuenow",K.getValue())("aria-valuemax",K.max),t.xp6(1),t.Q6J("ngIf",K.showValue))},directives:[e.O5],pipes:[e.Zx],encapsulation:2,changeDetection:0}),V})(),Sd=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})();class xu{constructor(pe,A,K){this.hour=ni(pe),this.minute=ni(A),this.second=ni(K)}changeHour(pe=1){this.updateHour((isNaN(this.hour)?0:this.hour)+pe)}updateHour(pe){this.hour=Hi(pe)?(pe<0?24+pe:pe)%24:NaN}changeMinute(pe=1){this.updateMinute((isNaN(this.minute)?0:this.minute)+pe)}updateMinute(pe){Hi(pe)?(this.minute=pe%60<0?60+pe%60:pe%60,this.changeHour(Math.floor(pe/60))):this.minute=NaN}changeSecond(pe=1){this.updateSecond((isNaN(this.second)?0:this.second)+pe)}updateSecond(pe){Hi(pe)?(this.second=pe<0?60+pe%60:pe%60,this.changeMinute(Math.floor(pe/60))):this.second=NaN}isValid(pe=!0){return Hi(this.hour)&&Hi(this.minute)&&(!pe||Hi(this.second))}toString(){return`${this.hour||0}:${this.minute||0}:${this.second||0}`}}let ef=(()=>{class V{constructor(){this.meridian=!1,this.spinners=!0,this.seconds=!1,this.hourStep=1,this.minuteStep=1,this.secondStep=1,this.disabled=!1,this.readonlyInputs=!1,this.size="medium"}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})();function Od(){return new tf}let Eu=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:Od,token:V,providedIn:"root"}),V})(),tf=(()=>{class V extends Eu{fromModel(A){return A&&Li(A.hour)&&Li(A.minute)?{hour:A.hour,minute:A.minute,second:Li(A.second)?A.second:null}:null}toModel(A){return A&&Li(A.hour)&&Li(A.minute)?{hour:A.hour,minute:A.minute,second:Li(A.second)?A.second:null}:null}}return V.\u0275fac=function(){let pe;return function(K){return(pe||(pe=t.n5z(V)))(K||V)}}(),V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})(),Ic=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return function(V){return new Nf(V)}(t.LFG(t.soG))},token:V,providedIn:"root"}),V})(),Nf=(()=>{class V extends Ic{constructor(A){super(),this._periods=(0,e.ol)(A,e.x.Standalone,e.Tn.Narrow)}getMorningPeriod(){return this._periods[0]}getAfternoonPeriod(){return this._periods[1]}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(t.soG))},V.\u0275prov=t.Yz7({token:V,factory:V.\u0275fac}),V})();const ld=/[^0-9]/g;let Jc=(()=>{class V{constructor(A,K,Ye,Rt){this._config=A,this._ngbTimeAdapter=K,this._cd=Ye,this.i18n=Rt,this.onChange=vr=>{},this.onTouched=()=>{},this.meridian=A.meridian,this.spinners=A.spinners,this.seconds=A.seconds,this.hourStep=A.hourStep,this.minuteStep=A.minuteStep,this.secondStep=A.secondStep,this.disabled=A.disabled,this.readonlyInputs=A.readonlyInputs,this.size=A.size}set hourStep(A){this._hourStep=Li(A)?A:this._config.hourStep}get hourStep(){return this._hourStep}set minuteStep(A){this._minuteStep=Li(A)?A:this._config.minuteStep}get minuteStep(){return this._minuteStep}set secondStep(A){this._secondStep=Li(A)?A:this._config.secondStep}get secondStep(){return this._secondStep}writeValue(A){const K=this._ngbTimeAdapter.fromModel(A);this.model=K?new xu(K.hour,K.minute,K.second):new xu,!this.seconds&&(!K||!Hi(K.second))&&(this.model.second=0),this._cd.markForCheck()}registerOnChange(A){this.onChange=A}registerOnTouched(A){this.onTouched=A}setDisabledState(A){this.disabled=A}changeHour(A){this.model.changeHour(A),this.propagateModelChange()}changeMinute(A){this.model.changeMinute(A),this.propagateModelChange()}changeSecond(A){this.model.changeSecond(A),this.propagateModelChange()}updateHour(A){const K=this.model.hour>=12,Ye=ni(A);this.model.updateHour(this.meridian&&(K&&Ye<12||!K&&12===Ye)?Ye+12:Ye),this.propagateModelChange()}updateMinute(A){this.model.updateMinute(ni(A)),this.propagateModelChange()}updateSecond(A){this.model.updateSecond(ni(A)),this.propagateModelChange()}toggleMeridian(){this.meridian&&this.changeHour(12)}formatInput(A){A.value=A.value.replace(ld,"")}formatHour(A){return Hi(A)?Os(this.meridian?A%12==0?12:A%12:A%24):Os(NaN)}formatMinSec(A){return Os(Hi(A)?A:NaN)}handleBlur(){this.onTouched()}get isSmallSize(){return"small"===this.size}get isLargeSize(){return"large"===this.size}ngOnChanges(A){A.seconds&&!this.seconds&&this.model&&!Hi(this.model.second)&&(this.model.second=0,this.propagateModelChange(!1))}propagateModelChange(A=!0){A&&this.onTouched(),this.model.isValid(this.seconds)?this.onChange(this._ngbTimeAdapter.toModel({hour:this.model.hour,minute:this.model.minute,second:this.model.second})):this.onChange(this._ngbTimeAdapter.toModel(null))}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(ef),t.Y36(Eu),t.Y36(t.sBO),t.Y36(Ic))},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-timepicker"]],inputs:{meridian:"meridian",spinners:"spinners",seconds:"seconds",hourStep:"hourStep",minuteStep:"minuteStep",secondStep:"secondStep",readonlyInputs:"readonlyInputs",size:"size"},features:[t._Bn([{provide:zt.JU,useExisting:(0,t.Gpc)(()=>V),multi:!0}]),t.TTD],decls:16,vars:25,consts:function(){let pe,A,K,Ye,Rt,vr,Hr,_i,ji,Eo,rs,Uo,us,Ks;return pe="HH",A="Hours",K="MM",Ye="Minutes",Rt="Increment hours",vr="Decrement hours",Hr="Increment minutes",_i="Decrement minutes",ji="SS",Eo="Seconds",rs="Increment seconds",Uo="Decrement seconds",us="" + "\ufffd0\ufffd" + "",Ks="" + "\ufffd0\ufffd" + "",[[3,"disabled"],[1,"ngb-tp"],[1,"ngb-tp-input-container","ngb-tp-hour"],["tabindex","-1","type","button","class","btn btn-link",3,"btn-sm","btn-lg","disabled","click",4,"ngIf"],["type","text","maxlength","2","inputmode","numeric","placeholder",pe,"aria-label",A,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],[1,"ngb-tp-spacer"],[1,"ngb-tp-input-container","ngb-tp-minute"],["type","text","maxlength","2","inputmode","numeric","placeholder",K,"aria-label",Ye,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],["class","ngb-tp-spacer",4,"ngIf"],["class","ngb-tp-input-container ngb-tp-second",4,"ngIf"],["class","ngb-tp-meridian",4,"ngIf"],["tabindex","-1","type","button",1,"btn","btn-link",3,"disabled","click"],[1,"chevron","ngb-tp-chevron"],[1,"sr-only"],Rt,[1,"chevron","ngb-tp-chevron","bottom"],vr,Hr,_i,[1,"ngb-tp-input-container","ngb-tp-second"],["type","text","maxlength","2","inputmode","numeric","placeholder",ji,"aria-label",Eo,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],rs,Uo,[1,"ngb-tp-meridian"],["type","button",1,"btn","btn-outline-primary",3,"disabled","click"],[4,"ngIf","ngIfElse"],["am",""],us,Ks]},template:function(A,K){1&A&&(t.TgZ(0,"fieldset",0),t.TgZ(1,"div",1),t.TgZ(2,"div",2),t.YNc(3,no,4,7,"button",3),t.TgZ(4,"input",4),t.NdJ("change",function(Rt){return K.updateHour(Rt.target.value)})("blur",function(){return K.handleBlur()})("input",function(Rt){return K.formatInput(Rt.target)})("keydown.ArrowUp",function(Rt){return K.changeHour(K.hourStep),Rt.preventDefault()})("keydown.ArrowDown",function(Rt){return K.changeHour(-K.hourStep),Rt.preventDefault()}),t.qZA(),t.YNc(5,Ji,4,7,"button",3),t.qZA(),t.TgZ(6,"div",5),t._uU(7,":"),t.qZA(),t.TgZ(8,"div",6),t.YNc(9,qi,4,7,"button",3),t.TgZ(10,"input",7),t.NdJ("change",function(Rt){return K.updateMinute(Rt.target.value)})("blur",function(){return K.handleBlur()})("input",function(Rt){return K.formatInput(Rt.target)})("keydown.ArrowUp",function(Rt){return K.changeMinute(K.minuteStep),Rt.preventDefault()})("keydown.ArrowDown",function(Rt){return K.changeMinute(-K.minuteStep),Rt.preventDefault()}),t.qZA(),t.YNc(11,to,4,7,"button",3),t.qZA(),t.YNc(12,zi,2,0,"div",8),t.YNc(13,Bo,4,9,"div",9),t.YNc(14,Jo,1,0,"div",8),t.YNc(15,ds,5,9,"div",10),t.qZA(),t.qZA()),2&A&&(t.ekj("disabled",K.disabled),t.Q6J("disabled",K.disabled),t.xp6(3),t.Q6J("ngIf",K.spinners),t.xp6(1),t.ekj("form-control-sm",K.isSmallSize)("form-control-lg",K.isLargeSize),t.Q6J("value",K.formatHour(null==K.model?null:K.model.hour))("readOnly",K.readonlyInputs)("disabled",K.disabled),t.xp6(1),t.Q6J("ngIf",K.spinners),t.xp6(4),t.Q6J("ngIf",K.spinners),t.xp6(1),t.ekj("form-control-sm",K.isSmallSize)("form-control-lg",K.isLargeSize),t.Q6J("value",K.formatMinSec(null==K.model?null:K.model.minute))("readOnly",K.readonlyInputs)("disabled",K.disabled),t.xp6(1),t.Q6J("ngIf",K.spinners),t.xp6(1),t.Q6J("ngIf",K.seconds),t.xp6(1),t.Q6J("ngIf",K.seconds),t.xp6(1),t.Q6J("ngIf",K.meridian),t.xp6(1),t.Q6J("ngIf",K.meridian))},directives:[e.O5],styles:['ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:"";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}'],encapsulation:2}),V})(),Tu=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})(),Ad=(()=>{class V{constructor(A){this._ngbConfig=A,this.autoClose=!0,this.placement="auto",this.triggers="hover focus",this.disableTooltip=!1,this.openDelay=0,this.closeDelay=0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(A){this._animation=A}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(Fo))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(Fo))},token:V,providedIn:"root"}),V})(),Fc=0,hu=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-tooltip-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(A,K){2&A&&(t.Ikx("id",K.id),t.Tol("tooltip"+(K.tooltipClass?" "+K.tooltipClass:"")),t.ekj("fade",K.animation))},inputs:{animation:"animation",id:"id",tooltipClass:"tooltipClass"},ngContentSelectors:Yn,decls:3,vars:0,consts:[[1,"arrow"],[1,"tooltip-inner"]],template:function(A,K){1&A&&(t.F$t(),t._UZ(0,"div",0),t.TgZ(1,"div",1),t.Hsn(2),t.qZA())},styles:["ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}"],encapsulation:2,changeDetection:0}),V})(),Hd=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i,ji,Eo,rs){this._elementRef=A,this._renderer=K,this._ngZone=_i,this._document=ji,this._changeDetector=Eo,this.shown=new t.vpe,this.hidden=new t.vpe,this._ngbTooltipWindowId="ngb-tooltip-"+Fc++,this._windowRef=null,this.animation=Hr.animation,this.autoClose=Hr.autoClose,this.placement=Hr.placement,this.triggers=Hr.triggers,this.container=Hr.container,this.disableTooltip=Hr.disableTooltip,this.tooltipClass=Hr.tooltipClass,this.openDelay=Hr.openDelay,this.closeDelay=Hr.closeDelay,this._popupService=new Jl(hu,Ye,vr,K,this._ngZone,Rt,rs),this._zoneSubscription=_i.onStable.subscribe(()=>{this._windowRef&&Je(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container,"bs-tooltip")})}set ngbTooltip(A){this._ngbTooltip=A,!A&&this._windowRef&&this.close()}get ngbTooltip(){return this._ngbTooltip}open(A){if(!this._windowRef&&this._ngbTooltip&&!this.disableTooltip){const{windowRef:K,transition$:Ye}=this._popupService.open(this._ngbTooltip,A,this.animation);this._windowRef=K,this._windowRef.instance.animation=this.animation,this._windowRef.instance.tooltipClass=this.tooltipClass,this._windowRef.instance.id=this._ngbTooltipWindowId,this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ngbTooltipWindowId),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._windowRef.changeDetectorRef.detectChanges(),this._windowRef.changeDetectorRef.markForCheck(),fc(this._ngZone,this._document,this.autoClose,()=>this.close(),this.hidden,[this._windowRef.location.nativeElement]),Ye.subscribe(()=>this.shown.emit())}}close(){null!=this._windowRef&&(this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby"),this._popupService.close(this.animation).subscribe(()=>{this._windowRef=null,this.hidden.emit(),this._changeDetector.markForCheck()}))}toggle(){this._windowRef?this.close():this.open()}isOpen(){return null!=this._windowRef}ngOnInit(){this._unregisterListenersFn=xi(this._renderer,this._elementRef.nativeElement,this.triggers,this.isOpen.bind(this),this.open.bind(this),this.close.bind(this),+this.openDelay,+this.closeDelay)}ngOnChanges({tooltipClass:A}){A&&this.isOpen()&&(this._windowRef.instance.tooltipClass=A.currentValue)}ngOnDestroy(){this.close(),this._unregisterListenersFn&&this._unregisterListenersFn(),this._zoneSubscription.unsubscribe()}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(t.zs3),t.Y36(t._Vd),t.Y36(t.s_b),t.Y36(Ad),t.Y36(t.R0b),t.Y36(e.K0),t.Y36(t.sBO),t.Y36(t.z2F))},V.\u0275dir=t.lG2({type:V,selectors:[["","ngbTooltip",""]],inputs:{animation:"animation",autoClose:"autoClose",placement:"placement",triggers:"triggers",container:"container",disableTooltip:"disableTooltip",tooltipClass:"tooltipClass",openDelay:"openDelay",closeDelay:"closeDelay",ngbTooltip:"ngbTooltip"},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbTooltip"],features:[t.TTD]}),V})(),ud=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({}),V})(),wd=(()=>{class V{constructor(){this.highlightClass="ngb-highlight",this.accentSensitive=!0}ngOnChanges(A){!this.accentSensitive&&!String.prototype.normalize&&(console.warn("The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser that does not implement the `String.normalize` function. You will have to include a polyfill in your application to use this feature in the current browser."),this.accentSensitive=!0);const K=Ri(this.result),Ye=Array.isArray(this.term)?this.term:[this.term],Rt=ji=>this.accentSensitive?ji:Ca(ji),vr=Ye.map(ji=>function(V){return V.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}(Rt(Ri(ji)))).filter(ji=>ji),Hr=this.accentSensitive?K:Ca(K),_i=vr.length?Hr.split(new RegExp(`(${vr.join("|")})`,"gmi")):[K];if(this.accentSensitive)this.parts=_i;else{let ji=0;this.parts=_i.map(Eo=>K.substring(ji,ji+=Eo.length))}}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-highlight"]],inputs:{highlightClass:"highlightClass",accentSensitive:"accentSensitive",result:"result",term:"term"},features:[t.TTD],decls:1,vars:1,consts:[["ngFor","",3,"ngForOf"],[3,"class",4,"ngIf","ngIfElse"],["even",""]],template:function(A,K){1&A&&t.YNc(0,ee,3,2,"ng-template",0),2&A&&t.Q6J("ngForOf",K.parts)},directives:[e.sg,e.O5],styles:[".ngb-highlight{font-weight:700}"],encapsulation:2,changeDetection:0}),V})(),If=(()=>{class V{constructor(){this.activeIdx=0,this.focusFirst=!0,this.formatter=Ri,this.selectEvent=new t.vpe,this.activeChangeEvent=new t.vpe}hasActive(){return this.activeIdx>-1&&this.activeIdx<this.results.length}getActive(){return this.results[this.activeIdx]}markActive(A){this.activeIdx=A,this._activeChanged()}next(){this.activeIdx===this.results.length-1?this.activeIdx=this.focusFirst?(this.activeIdx+1)%this.results.length:-1:this.activeIdx++,this._activeChanged()}prev(){this.activeIdx<0?this.activeIdx=this.results.length-1:0===this.activeIdx?this.activeIdx=this.focusFirst?this.results.length-1:-1:this.activeIdx--,this._activeChanged()}resetActive(){this.activeIdx=this.focusFirst?0:-1,this._activeChanged()}select(A){this.selectEvent.emit(A)}ngOnInit(){this.resetActive()}_activeChanged(){this.activeChangeEvent.emit(this.activeIdx>=0?this.id+"-"+this.activeIdx:void 0)}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275cmp=t.Xpm({type:V,selectors:[["ngb-typeahead-window"]],hostAttrs:["role","listbox"],hostVars:3,hostBindings:function(A,K){1&A&&t.NdJ("mousedown",function(Rt){return Rt.preventDefault()}),2&A&&(t.Ikx("id",K.id),t.Tol("dropdown-menu show"+(K.popupClass?" "+K.popupClass:"")))},inputs:{focusFirst:"focusFirst",formatter:"formatter",id:"id",results:"results",term:"term",resultTemplate:"resultTemplate",popupClass:"popupClass"},outputs:{selectEvent:"select",activeChangeEvent:"activeChange"},exportAs:["ngbTypeaheadWindow"],decls:3,vars:1,consts:[["rt",""],["ngFor","",3,"ngForOf"],[3,"result","term"],["type","button","role","option",1,"dropdown-item",3,"id","mouseenter","click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(A,K){1&A&&(t.YNc(0,Ve,1,2,"ng-template",null,0,t.W1O),t.YNc(2,$r,2,9,"ng-template",1)),2&A&&(t.xp6(2),t.Q6J("ngForOf",K.results))},directives:[e.sg,wd,e.tP],encapsulation:2}),V})();const Cu=new t.OlP("live announcer delay",{providedIn:"root",factory:function(){return 100}});function kc(V,pe=!1){let A=V.body.querySelector("#ngb-live");return null==A&&pe&&(A=V.createElement("div"),A.setAttribute("id","ngb-live"),A.setAttribute("aria-live","polite"),A.setAttribute("aria-atomic","true"),A.classList.add("sr-only"),V.body.appendChild(A)),A}let wc=(()=>{class V{constructor(A,K){this._document=A,this._delay=K}ngOnDestroy(){const A=kc(this._document);A&&A.parentElement.removeChild(A)}say(A){const K=kc(this._document,!0),Ye=this._delay;if(null!=K){K.textContent="";const Rt=()=>K.textContent=A;null===Ye?Rt():setTimeout(Rt,Ye)}}}return V.\u0275fac=function(A){return new(A||V)(t.LFG(e.K0),t.LFG(Cu))},V.\u0275prov=t.Yz7({factory:function(){return new V(t.LFG(e.K0),t.LFG(Cu))},token:V,providedIn:"root"}),V})(),Yc=(()=>{class V{constructor(){this.editable=!0,this.focusFirst=!0,this.showHint=!1,this.placement=["bottom-left","bottom-right","top-left","top-right"]}}return V.\u0275fac=function(A){return new(A||V)},V.\u0275prov=t.Yz7({factory:function(){return new V},token:V,providedIn:"root"}),V})(),Lf=0,Su=(()=>{class V{constructor(A,K,Ye,Rt,vr,Hr,_i,ji,Eo,rs,Uo,us){this._elementRef=A,this._renderer=Ye,this._live=ji,this._document=Eo,this._ngZone=rs,this._changeDetector=Uo,this._subscription=null,this._closed$=new ie.xQ,this._inputValueBackup=null,this._windowRef=null,this.autocomplete="off",this.placement="bottom-left",this.selectItem=new t.vpe,this.activeDescendant=null,this.popupId="ngb-typeahead-"+Lf++,this._onTouched=()=>{},this._onChange=Ks=>{},this.container=Hr.container,this.editable=Hr.editable,this.focusFirst=Hr.focusFirst,this.showHint=Hr.showHint,this.placement=Hr.placement,this._valueChanges=(0,oe.R)(A.nativeElement,"input").pipe((0,St.U)(Ks=>Ks.target.value)),this._resubscribeTypeahead=new ne.X(null),this._popupService=new Jl(If,Rt,K,Ye,this._ngZone,vr,us),this._zoneSubscription=_i.onStable.subscribe(()=>{this.isPopupOpen()&&Je(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container)})}ngOnInit(){this._subscribeToUserInput()}ngOnChanges({ngbTypeahead:A}){A&&!A.firstChange&&(this._unsubscribeFromUserInput(),this._subscribeToUserInput())}ngOnDestroy(){this._closePopup(),this._unsubscribeFromUserInput(),this._zoneSubscription.unsubscribe()}registerOnChange(A){this._onChange=A}registerOnTouched(A){this._onTouched=A}writeValue(A){this._writeInputValue(this._formatItemForInput(A)),this.showHint&&(this._inputValueBackup=A)}setDisabledState(A){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",A)}dismissPopup(){this.isPopupOpen()&&(this._resubscribeTypeahead.next(null),this._closePopup(),this.showHint&&null!==this._inputValueBackup&&this._writeInputValue(this._inputValueBackup),this._changeDetector.markForCheck())}isPopupOpen(){return null!=this._windowRef}handleBlur(){this._resubscribeTypeahead.next(null),this._onTouched()}handleKeyDown(A){if(this.isPopupOpen())switch(A.which){case Zi.ArrowDown:A.preventDefault(),this._windowRef.instance.next(),this._showHint();break;case Zi.ArrowUp:A.preventDefault(),this._windowRef.instance.prev(),this._showHint();break;case Zi.Enter:case Zi.Tab:const K=this._windowRef.instance.getActive();cs(K)&&(A.preventDefault(),A.stopPropagation(),this._selectResult(K)),this._closePopup()}}_openPopup(){if(!this.isPopupOpen()){this._inputValueBackup=this._elementRef.nativeElement.value;const{windowRef:A}=this._popupService.open();this._windowRef=A,this._windowRef.instance.id=this.popupId,this._windowRef.instance.selectEvent.subscribe(K=>this._selectResultClosePopup(K)),this._windowRef.instance.activeChangeEvent.subscribe(K=>this.activeDescendant=K),this._windowRef.instance.popupClass=this.popupClass,"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._changeDetector.markForCheck(),fc(this._ngZone,this._document,"outside",()=>this.dismissPopup(),this._closed$,[this._elementRef.nativeElement,this._windowRef.location.nativeElement])}}_closePopup(){this._popupService.close().subscribe(()=>{this._closed$.next(),this._windowRef=null,this.activeDescendant=null})}_selectResult(A){let K=!1;this.selectItem.emit({item:A,preventDefault:()=>{K=!0}}),this._resubscribeTypeahead.next(null),K||(this.writeValue(A),this._onChange(A))}_selectResultClosePopup(A){this._selectResult(A),this._closePopup()}_showHint(){var A;if(this.showHint&&(null===(A=this._windowRef)||void 0===A?void 0:A.instance.hasActive())&&null!=this._inputValueBackup){const K=this._inputValueBackup.toLowerCase(),Ye=this._formatItemForInput(this._windowRef.instance.getActive());K===Ye.substr(0,this._inputValueBackup.length).toLowerCase()?(this._writeInputValue(this._inputValueBackup+Ye.substr(this._inputValueBackup.length)),this._elementRef.nativeElement.setSelectionRange.apply(this._elementRef.nativeElement,[this._inputValueBackup.length,Ye.length])):this._writeInputValue(Ye)}}_formatItemForInput(A){return null!=A&&this.inputFormatter?this.inputFormatter(A):Ri(A)}_writeInputValue(A){this._renderer.setProperty(this._elementRef.nativeElement,"value",Ri(A))}_subscribeToUserInput(){const A=this._valueChanges.pipe((0,ae.b)(K=>{this._inputValueBackup=this.showHint?K:null,this._onChange(this.editable?K:void 0)}),this.ngbTypeahead?this.ngbTypeahead:()=>(0,Y.of)([]));this._subscription=this._resubscribeTypeahead.pipe((0,It.w)(()=>A)).subscribe(K=>{K&&0!==K.length?(this._openPopup(),this._windowRef.instance.focusFirst=this.focusFirst,this._windowRef.instance.results=K,this._windowRef.instance.term=this._elementRef.nativeElement.value,this.resultFormatter&&(this._windowRef.instance.formatter=this.resultFormatter),this.resultTemplate&&(this._windowRef.instance.resultTemplate=this.resultTemplate),this._windowRef.instance.resetActive(),this._windowRef.changeDetectorRef.detectChanges(),this._showHint()):this._closePopup();const Ye=K?K.length:0;this._live.say(0===Ye?"No results available":`${Ye} result${1===Ye?"":"s"} available`)})}_unsubscribeFromUserInput(){this._subscription&&this._subscription.unsubscribe(),this._subscription=null}}return V.\u0275fac=function(A){return new(A||V)(t.Y36(t.SBq),t.Y36(t.s_b),t.Y36(t.Qsj),t.Y36(t.zs3),t.Y36(t._Vd),t.Y36(Yc),t.Y36(t.R0b),t.Y36(wc),t.Y36(e.K0),t.Y36(t.R0b),t.Y36(t.sBO),t.Y36(t.z2F))},V.\u0275dir=t.lG2({type:V,selectors:[["input","ngbTypeahead",""]],hostAttrs:["autocapitalize","off","autocorrect","off","role","combobox","aria-multiline","false"],hostVars:7,hostBindings:function(A,K){1&A&&t.NdJ("blur",function(){return K.handleBlur()})("keydown",function(Rt){return K.handleKeyDown(Rt)}),2&A&&(t.Ikx("autocomplete",K.autocomplete),t.uIk("aria-autocomplete",K.showHint?"both":"list")("aria-activedescendant",K.activeDescendant)("aria-owns",K.isPopupOpen()?K.popupId:null)("aria-expanded",K.isPopupOpen()),t.ekj("open",K.isPopupOpen()))},inputs:{autocomplete:"autocomplete",placement:"placement",container:"container",editable:"editable",focusFirst:"focusFirst",showHint:"showHint",inputFormatter:"inputFormatter",ngbTypeahead:"ngbTypeahead",resultFormatter:"resultFormatter",resultTemplate:"resultTemplate",popupClass:"popupClass"},outputs:{selectItem:"selectItem"},exportAs:["ngbTypeahead"],features:[t._Bn([{provide:zt.JU,useExisting:(0,t.Gpc)(()=>V),multi:!0}]),t.TTD]}),V})(),fd=(()=>{class V{}return V.\u0275fac=function(A){return new(A||V)},V.\u0275mod=t.oAB({type:V}),V.\u0275inj=t.cJS({imports:[[e.ez]]}),V})()},84051:(Ge,g,o)=>{"use strict";o.d(g,{vq:()=>sn,ii:()=>qn,Ke:()=>no,nE:()=>wi,dX:()=>_r,$7:()=>mr,AR:()=>ir,xD:()=>zo,Sr:()=>Qr,Hg:()=>mt});var t=o(74788),e=o(12057),s=o(79765),a=o(22759),l=o(26215),u=o(46782),h=o(64762);const _=["*"];function m(st,pn){1&st&&t._UZ(0,"datatable-progress")}function b(st,pn){if(1&st&&t._UZ(0,"datatable-summary-row",9),2&st){const ee=t.oxw(2);t.Q6J("rowHeight",ee.summaryHeight)("offsetX",ee.offsetX)("innerWidth",ee.innerWidth)("rows",ee.rows)("columns",ee.columns)}}function C(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-body-row",13),t.NdJ("treeAction",function(){t.CHM(ee);const fn=t.oxw().$implicit;return t.oxw(2).onTreeAction(fn)})("activate",function(fn){t.CHM(ee);const Tn=t.oxw().index,$r=t.oxw(2);return t.MAs(2).onActivate(fn,$r.indexes.first+Tn)}),t.qZA()}if(2&st){const ee=t.oxw().$implicit,Ve=t.oxw(2),fn=t.MAs(2);t.Q6J("isSelected",fn.getRowSelected(ee))("innerWidth",Ve.innerWidth)("offsetX",Ve.offsetX)("columns",Ve.columns)("rowHeight",Ve.getRowHeight(ee))("row",ee)("rowIndex",Ve.getRowIndex(ee))("expanded",Ve.getRowExpanded(ee))("rowClass",Ve.rowClass)("displayCheck",Ve.displayCheck)("treeStatus",ee&&ee.treeStatus)}}function D(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-body-row",15),t.NdJ("activate",function(fn){const $r=t.CHM(ee).index;return t.oxw(4),t.MAs(2).onActivate(fn,$r)}),t.qZA()}if(2&st){const ee=pn.$implicit,Ve=t.oxw(2).$implicit,fn=t.oxw(2),Tn=t.MAs(2);t.Q6J("isSelected",Tn.getRowSelected(ee))("innerWidth",fn.innerWidth)("offsetX",fn.offsetX)("columns",fn.columns)("rowHeight",fn.getRowHeight(ee))("row",ee)("group",Ve.value)("rowIndex",fn.getRowIndex(ee))("expanded",fn.getRowExpanded(ee))("rowClass",fn.rowClass)}}function x(st,pn){if(1&st&&t.YNc(0,D,1,10,"datatable-body-row",14),2&st){const ee=t.oxw().$implicit,Ve=t.oxw(2);t.Q6J("ngForOf",ee.value)("ngForTrackBy",Ve.rowTrackingFn)}}function j(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-row-wrapper",10),t.NdJ("rowContextmenu",function(fn){return t.CHM(ee),t.oxw(2).rowContextmenu.emit(fn)}),t.YNc(1,C,1,11,"datatable-body-row",11),t.YNc(2,x,1,2,"ng-template",null,12,t.W1O),t.qZA()}if(2&st){const ee=pn.$implicit,Ve=pn.index,fn=t.MAs(3),Tn=t.oxw(2);t.Q6J("groupedRows",Tn.groupedRows)("innerWidth",Tn.innerWidth)("ngStyle",Tn.getRowsStyles(ee))("rowDetail",Tn.rowDetail)("groupHeader",Tn.groupHeader)("offsetX",Tn.offsetX)("detailRowHeight",Tn.getDetailRowHeight(ee&&ee[Ve],Ve))("row",ee)("expanded",Tn.getRowExpanded(ee))("rowIndex",Tn.getRowIndex(ee&&ee[Ve])),t.xp6(1),t.Q6J("ngIf",!Tn.groupedRows)("ngIfElse",fn)}}function H(st,pn){if(1&st&&t._UZ(0,"datatable-summary-row",16),2&st){const ee=t.oxw(2);t.Q6J("ngStyle",ee.getBottomSummaryRowStyles())("rowHeight",ee.summaryHeight)("offsetX",ee.offsetX)("innerWidth",ee.innerWidth)("rows",ee.rows)("columns",ee.columns)}}function z(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-scroller",5),t.NdJ("scroll",function(fn){return t.CHM(ee),t.oxw().onBodyScroll(fn)}),t.YNc(1,b,1,5,"datatable-summary-row",6),t.YNc(2,j,4,12,"datatable-row-wrapper",7),t.YNc(3,H,1,6,"datatable-summary-row",8),t.qZA()}if(2&st){const ee=t.oxw();t.Q6J("scrollbarV",ee.scrollbarV)("scrollbarH",ee.scrollbarH)("scrollHeight",ee.scrollHeight)("scrollWidth",null==ee.columnGroupWidths?null:ee.columnGroupWidths.total),t.xp6(1),t.Q6J("ngIf",ee.summaryRow&&"top"===ee.summaryPosition),t.xp6(1),t.Q6J("ngForOf",ee.temp)("ngForTrackBy",ee.rowTrackingFn),t.xp6(1),t.Q6J("ngIf",ee.summaryRow&&"bottom"===ee.summaryPosition)}}function U(st,pn){if(1&st&&t._UZ(0,"div",17),2&st){const ee=t.oxw();t.Q6J("innerHTML",ee.emptyMessage,t.oJD)}}function M(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-header-cell",4),t.NdJ("resize",function(fn){const $r=t.CHM(ee).$implicit;return t.oxw(2).onColumnResized(fn,$r)})("longPressStart",function(fn){return t.CHM(ee),t.oxw(2).onLongPressStart(fn)})("longPressEnd",function(fn){return t.CHM(ee),t.oxw(2).onLongPressEnd(fn)})("sort",function(fn){return t.CHM(ee),t.oxw(2).onSort(fn)})("select",function(fn){return t.CHM(ee),t.oxw(2).select.emit(fn)})("columnContextmenu",function(fn){return t.CHM(ee),t.oxw(2).columnContextmenu.emit(fn)}),t.qZA()}if(2&st){const ee=pn.$implicit,Ve=t.oxw(2);t.Q6J("resizeEnabled",ee.resizeable)("pressModel",ee)("pressEnabled",Ve.reorderable&&ee.draggable)("dragX",Ve.reorderable&&ee.draggable&&ee.dragging)("dragY",!1)("dragModel",ee)("dragEventTarget",Ve.dragEventTarget)("headerHeight",Ve.headerHeight)("isTarget",ee.isTarget)("targetMarkerTemplate",Ve.targetMarkerTemplate)("targetMarkerContext",ee.targetMarkerContext)("column",ee)("sortType",Ve.sortType)("sorts",Ve.sorts)("selectionType",Ve.selectionType)("sortAscendingIcon",Ve.sortAscendingIcon)("sortDescendingIcon",Ve.sortDescendingIcon)("sortUnsetIcon",Ve.sortUnsetIcon)("allRowsSelected",Ve.allRowsSelected)}}function I(st,pn){if(1&st&&(t.TgZ(0,"div",2),t.YNc(1,M,1,19,"datatable-header-cell",3),t.qZA()),2&st){const ee=pn.$implicit,Ve=t.oxw();t.Tol("datatable-row-"+ee.type),t.Q6J("ngStyle",Ve._styleByGroup[ee.type]),t.xp6(1),t.Q6J("ngForOf",ee.columns)("ngForTrackBy",Ve.columnTrackingFn)}}function J(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-header",4),t.NdJ("sort",function(fn){return t.CHM(ee),t.oxw().onColumnSort(fn)})("resize",function(fn){return t.CHM(ee),t.oxw().onColumnResize(fn)})("reorder",function(fn){return t.CHM(ee),t.oxw().onColumnReorder(fn)})("select",function(fn){return t.CHM(ee),t.oxw().onHeaderSelect(fn)})("columnContextmenu",function(fn){return t.CHM(ee),t.oxw().onColumnContextmenu(fn)}),t.ALo(1,"async"),t.qZA()}if(2&st){const ee=t.oxw();t.Q6J("sorts",ee.sorts)("sortType",ee.sortType)("scrollbarH",ee.scrollbarH)("innerWidth",ee._innerWidth)("offsetX",t.lcZ(1,15,ee._offsetX))("dealsWithGroup",void 0!==ee.groupedRows)("columns",ee._internalColumns)("headerHeight",ee.headerHeight)("reorderable",ee.reorderable)("targetMarkerTemplate",ee.targetMarkerTemplate)("sortAscendingIcon",ee.cssClasses.sortAscending)("sortDescendingIcon",ee.cssClasses.sortDescending)("sortUnsetIcon",ee.cssClasses.sortUnset)("allRowsSelected",ee.allRowsSelected)("selectionType",ee.selectionType)}}function Y(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-footer",5),t.NdJ("page",function(fn){return t.CHM(ee),t.oxw().onFooterPage(fn)}),t.qZA()}if(2&st){const ee=t.oxw();t.Q6J("rowCount",ee.rowCount)("pageSize",ee.pageSize)("offset",ee.offset)("footerHeight",ee.footerHeight)("footerTemplate",ee.footer)("totalMessage",ee.messages.totalMessage)("pagerLeftArrowIcon",ee.cssClasses.pagerLeftArrow)("pagerRightArrowIcon",ee.cssClasses.pagerRightArrow)("pagerPreviousIcon",ee.cssClasses.pagerPrevious)("selectedCount",ee.selected.length)("selectedMessage",!!ee.selectionType&&ee.messages.selectedMessage)("pagerNextIcon",ee.cssClasses.pagerNext)}}function ie(st,pn){}function oe(st,pn){if(1&st&&t.YNc(0,ie,0,0,"ng-template",5),2&st){const ee=t.oxw();t.Q6J("ngTemplateOutlet",ee.targetMarkerTemplate)("ngTemplateOutletContext",ee.targetMarkerContext)}}function fe(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"label",6),t.TgZ(1,"input",7),t.NdJ("change",function(){t.CHM(ee);const fn=t.oxw();return fn.select.emit(!fn.allRowsSelected)}),t.qZA(),t.qZA()}if(2&st){const ee=t.oxw();t.xp6(1),t.Q6J("checked",ee.allRowsSelected)}}function ne(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"span",8),t.TgZ(1,"span",9),t.NdJ("click",function(){return t.CHM(ee),t.oxw().onSort()}),t.qZA(),t.qZA()}if(2&st){const ee=t.oxw();t.xp6(1),t.Q6J("innerHTML",ee.name,t.oJD)}}function he(st,pn){}function ce(st,pn){if(1&st&&t.YNc(0,he,0,0,"ng-template",5),2&st){const ee=t.oxw();t.Q6J("ngTemplateOutlet",ee.column.headerTemplate)("ngTemplateOutletContext",ee.cellContext)}}function Ae(st,pn){}const Me=function(st,pn,ee,Ve,fn){return{rowCount:st,pageSize:pn,selectedCount:ee,curPage:Ve,offset:fn}};function Oe(st,pn){if(1&st&&t.YNc(0,Ae,0,0,"ng-template",4),2&st){const ee=t.oxw();t.Q6J("ngTemplateOutlet",ee.footerTemplate.template)("ngTemplateOutletContext",t.qbA(2,Me,ee.rowCount,ee.pageSize,ee.selectedCount,ee.curPage,ee.offset))}}function be(st,pn){if(1&st&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&st){const ee=t.oxw(2);t.xp6(1),t.AsE(" ",null==ee.selectedCount?null:ee.selectedCount.toLocaleString()," ",ee.selectedMessage," / ")}}function ue(st,pn){if(1&st&&(t.TgZ(0,"div",5),t.YNc(1,be,2,2,"span",1),t._uU(2),t.qZA()),2&st){const ee=t.oxw();t.xp6(1),t.Q6J("ngIf",ee.selectedMessage),t.xp6(1),t.AsE(" ",null==ee.rowCount?null:ee.rowCount.toLocaleString()," ",ee.totalMessage," ")}}function He(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-pager",6),t.NdJ("change",function(fn){return t.CHM(ee),t.oxw().page.emit(fn)}),t.qZA()}if(2&st){const ee=t.oxw();t.Q6J("pagerLeftArrowIcon",ee.pagerLeftArrowIcon)("pagerRightArrowIcon",ee.pagerRightArrowIcon)("pagerPreviousIcon",ee.pagerPreviousIcon)("pagerNextIcon",ee.pagerNextIcon)("page",ee.curPage)("size",ee.pageSize)("count",ee.rowCount)("hidden",!ee.isVisible)}}const $e=function(st){return{"selected-count":st}};function F(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"li",6),t.TgZ(1,"a",7),t.NdJ("click",function(){const Tn=t.CHM(ee).$implicit;return t.oxw().selectPage(Tn.number)}),t._uU(2),t.qZA(),t.qZA()}if(2&st){const ee=pn.$implicit,Ve=t.oxw();t.ekj("active",ee.number===Ve.page),t.uIk("aria-label","page "+ee.number),t.xp6(2),t.hij(" ",ee.text," ")}}function je(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"datatable-body-cell",3),t.NdJ("activate",function(fn){const $r=t.CHM(ee).index;return t.oxw(2).onActivate(fn,$r)})("treeAction",function(){return t.CHM(ee),t.oxw(2).onTreeAction()}),t.qZA()}if(2&st){const ee=pn.$implicit,Ve=t.oxw(2);t.Q6J("row",Ve.row)("group",Ve.group)("expanded",Ve.expanded)("isSelected",Ve.isSelected)("rowIndex",Ve.rowIndex)("column",ee)("rowHeight",Ve.rowHeight)("displayCheck",Ve.displayCheck)("treeStatus",Ve.treeStatus)}}function Et(st,pn){if(1&st&&(t.TgZ(0,"div",1),t.YNc(1,je,1,9,"datatable-body-cell",2),t.qZA()),2&st){const ee=pn.$implicit,Ve=t.oxw();t.Gre("datatable-row-",ee.type," datatable-row-group"),t.Q6J("ngStyle",Ve._groupStyles[ee.type]),t.xp6(1),t.Q6J("ngForOf",ee.columns)("ngForTrackBy",Ve.columnTrackingFn)}}function lt(st,pn){}function nn(st,pn){if(1&st&&t.YNc(0,lt,0,0,"ng-template",4),2&st){const ee=t.oxw(2);t.Q6J("ngTemplateOutlet",ee.groupHeader.template)("ngTemplateOutletContext",ee.groupContext)}}function St(st,pn){if(1&st&&(t.TgZ(0,"div",3),t.YNc(1,nn,1,2,void 0,1),t.qZA()),2&st){const ee=t.oxw();t.Q6J("ngStyle",ee.getGroupHeaderStyle()),t.xp6(1),t.Q6J("ngIf",ee.groupHeader&&ee.groupHeader.template)}}function At(st,pn){1&st&&t.Hsn(0,0,["*ngIf","(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template"])}function Qe(st,pn){}function It(st,pn){if(1&st&&t.YNc(0,Qe,0,0,"ng-template",4),2&st){const ee=t.oxw(2);t.Q6J("ngTemplateOutlet",ee.rowDetail.template)("ngTemplateOutletContext",ee.rowContext)}}function ae(st,pn){if(1&st&&(t.TgZ(0,"div",5),t.YNc(1,It,1,2,void 0,1),t.qZA()),2&st){const ee=t.oxw();t.Udp("height",ee.detailRowHeight,"px"),t.xp6(1),t.Q6J("ngIf",ee.rowDetail&&ee.rowDetail.template)}}const Ie=["cellTemplate"];function dt(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"label",4),t.TgZ(1,"input",5),t.NdJ("click",function(fn){return t.CHM(ee),t.oxw().onCheckboxChange(fn)}),t.qZA(),t.qZA()}if(2&st){const ee=t.oxw();t.xp6(1),t.Q6J("checked",ee.isSelected)}}function Jt(st,pn){1&st&&t._UZ(0,"i",11)}function zt(st,pn){1&st&&t._UZ(0,"i",12)}function ln(st,pn){1&st&&t._UZ(0,"i",13)}function ar(st,pn){if(1&st){const ee=t.EpF();t.TgZ(0,"button",7),t.NdJ("click",function(){return t.CHM(ee),t.oxw(2).onTreeAction()}),t.TgZ(1,"span"),t.YNc(2,Jt,1,0,"i",8),t.YNc(3,zt,1,0,"i",9),t.YNc(4,ln,1,0,"i",10),t.qZA(),t.qZA()}if(2&st){const ee=t.oxw(2);t.Q6J("disabled","disabled"===ee.treeStatus),t.xp6(2),t.Q6J("ngIf","loading"===ee.treeStatus),t.xp6(1),t.Q6J("ngIf","collapsed"===ee.treeStatus),t.xp6(1),t.Q6J("ngIf","expanded"===ee.treeStatus||"disabled"===ee.treeStatus)}}function Ln(st,pn){}const Rn=function(st){return{cellContext:st}};function er(st,pn){if(1&st&&t.YNc(0,Ln,0,0,"ng-template",14),2&st){const ee=t.oxw(2);t.Q6J("ngTemplateOutlet",ee.column.treeToggleTemplate)("ngTemplateOutletContext",t.VKq(2,Rn,ee.cellContext))}}function Mn(st,pn){if(1&st&&(t.ynx(0),t.YNc(1,ar,5,4,"button",6),t.YNc(2,er,1,4,void 0,2),t.BQk()),2&st){const ee=t.oxw();t.xp6(1),t.Q6J("ngIf",!ee.column.treeToggleTemplate),t.xp6(1),t.Q6J("ngIf",ee.column.treeToggleTemplate)}}function Ht(st,pn){if(1&st&&t._UZ(0,"span",15),2&st){const ee=t.oxw();t.Q6J("title",ee.sanitizedValue)("innerHTML",ee.value,t.oJD)}}function tr(st,pn){}function Yn(st,pn){if(1&st&&t.YNc(0,tr,0,0,"ng-template",14,16,t.W1O),2&st){const ee=t.oxw();t.Q6J("ngTemplateOutlet",ee.column.cellTemplate)("ngTemplateOutletContext",ee.cellContext)}}function Cn(st,pn){if(1&st&&t._UZ(0,"datatable-body-row",1),2&st){const ee=t.oxw();t.Q6J("innerWidth",ee.innerWidth)("offsetX",ee.offsetX)("columns",ee._internalColumns)("rowHeight",ee.rowHeight)("row",ee.summaryRow)("rowIndex",-1)}}let Kt=(()=>{class st{constructor(ee){this.document=ee,this.width=this.getWidth()}getWidth(){const ee=this.document.createElement("div");ee.style.visibility="hidden",ee.style.width="100px",ee.style.msOverflowStyle="scrollbar",this.document.body.appendChild(ee);const Ve=ee.offsetWidth;ee.style.overflow="scroll";const fn=this.document.createElement("div");fn.style.width="100%",ee.appendChild(fn);const Tn=fn.offsetWidth;return ee.parentNode.removeChild(ee),Ve-Tn}}return st.\u0275fac=function(ee){return new(ee||st)(t.LFG(e.K0))},st.\u0275prov=t.Yz7({token:st,factory:st.\u0275fac}),st})(),dn=(()=>{class st{getDimensions(ee){return ee.getBoundingClientRect()}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275prov=t.Yz7({token:st,factory:st.\u0275fac}),st})(),Kn=(()=>{class st{constructor(){this.columnInputChanges=new s.xQ}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275prov=t.Yz7({token:st,factory:st.\u0275fac}),st})(),qn=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-footer-template",""]]}),st})(),Sn=(()=>{class st{constructor(ee,Ve){this.element=ee,this.zone=Ve,this.isVisible=!1,this.visible=new t.vpe}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const ee=()=>{const{offsetHeight:Ve,offsetWidth:fn}=this.element.nativeElement;Ve&&fn?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>ee(),50)}))};this.timeout=setTimeout(()=>ee())}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.SBq),t.Y36(t.R0b))},st.\u0275dir=t.lG2({type:st,selectors:[["","visibilityObserver",""]],hostVars:2,hostBindings:function(ee,Ve){2&ee&&t.ekj("visible",Ve.isVisible)},outputs:{visible:"visible"}}),st})(),$n=(()=>{class st{constructor(ee){this.dragX=!0,this.dragY=!0,this.dragStart=new t.vpe,this.dragging=new t.vpe,this.dragEnd=new t.vpe,this.isDragging=!1,this.element=ee.nativeElement}ngOnChanges(ee){ee.dragEventTarget&&ee.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(ee.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(ee){!this.isDragging||(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:ee,element:this.element,model:this.dragModel})))}onMousedown(ee){if(ee.target.classList.contains("draggable")&&(this.dragX||this.dragY)){ee.preventDefault(),this.isDragging=!0;const fn={x:ee.clientX,y:ee.clientY},Tn=(0,a.R)(document,"mouseup");this.subscription=Tn.subscribe(ni=>this.onMouseup(ni));const $r=(0,a.R)(document,"mousemove").pipe((0,u.R)(Tn)).subscribe(ni=>this.move(ni,fn));this.subscription.add($r),this.dragStart.emit({event:ee,element:this.element,model:this.dragModel})}}move(ee,Ve){if(!this.isDragging)return;const Tn=ee.clientY-Ve.y;this.dragX&&(this.element.style.left=ee.clientX-Ve.x+"px"),this.dragY&&(this.element.style.top=`${Tn}px`),this.element.classList.add("dragging"),this.dragging.emit({event:ee,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.SBq))},st.\u0275dir=t.lG2({type:st,selectors:[["","draggable",""]],inputs:{dragX:"dragX",dragY:"dragY",dragEventTarget:"dragEventTarget",dragModel:"dragModel"},outputs:{dragStart:"dragStart",dragging:"dragging",dragEnd:"dragEnd"},features:[t.TTD]}),st})(),En=(()=>{class st{constructor(ee,Ve){this.renderer=Ve,this.resizeEnabled=!0,this.resize=new t.vpe,this.resizing=!1,this.element=ee.nativeElement}ngAfterViewInit(){const ee=this.renderer;this.resizeHandle=ee.createElement("span"),ee.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),ee.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.resizeHandle&&this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(ee){const Ve=ee.target.classList.contains("resize-handle"),fn=this.element.clientWidth,Tn=ee.screenX;if(Ve){ee.stopPropagation(),this.resizing=!0;const $r=(0,a.R)(document,"mouseup");this.subscription=$r.subscribe(Ri=>this.onMouseup());const ni=(0,a.R)(document,"mousemove").pipe((0,u.R)($r)).subscribe(Ri=>this.move(Ri,fn,Tn));this.subscription.add(ni)}}move(ee,Ve,fn){const $r=Ve+(ee.screenX-fn);(!this.minWidth||$r>=this.minWidth)&&(!this.maxWidth||$r<=this.maxWidth)&&(this.element.style.width=`${$r}px`)}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.SBq),t.Y36(t.Qsj))},st.\u0275dir=t.lG2({type:st,selectors:[["","resizeable",""]],hostVars:2,hostBindings:function(ee,Ve){1&ee&&t.NdJ("mousedown",function(Tn){return Ve.onMousedown(Tn)}),2&ee&&t.ekj("resizeable",Ve.resizeEnabled)},inputs:{resizeEnabled:"resizeEnabled",minWidth:"minWidth",maxWidth:"maxWidth"},outputs:{resize:"resize"}}),st})(),Fn=(()=>{class st{constructor(ee,Ve){this.document=Ve,this.reorder=new t.vpe,this.targetChanged=new t.vpe,this.differ=ee.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(ee=>{ee.dragStart.unsubscribe(),ee.dragging.unsubscribe(),ee.dragEnd.unsubscribe()})}updateSubscriptions(){const ee=this.differ.diff(this.createMapDiffs());if(ee){const Ve=({currentValue:Tn,previousValue:$r})=>{fn({previousValue:$r}),Tn&&(Tn.dragStart.subscribe(this.onDragStart.bind(this)),Tn.dragging.subscribe(this.onDragging.bind(this)),Tn.dragEnd.subscribe(this.onDragEnd.bind(this)))},fn=({previousValue:Tn})=>{Tn&&(Tn.dragStart.unsubscribe(),Tn.dragging.unsubscribe(),Tn.dragEnd.unsubscribe())};ee.forEachAddedItem(Ve),ee.forEachRemovedItem(fn)}}onDragStart(){this.positions={};let ee=0;for(const Ve of this.draggables.toArray()){const fn=Ve.element,Tn=parseInt(fn.offsetLeft.toString(),0);this.positions[Ve.dragModel.prop]={left:Tn,right:Tn+parseInt(fn.offsetWidth.toString(),0),index:ee++,element:fn}}}onDragging({model:Ve,event:fn}){const Tn=this.positions[Ve.prop],$r=this.isTarget(Ve,fn);$r?this.lastDraggingIndex!==$r.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:$r.i,initialIndex:Tn.index}),this.lastDraggingIndex=$r.i):this.lastDraggingIndex!==Tn.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:Tn.index}),this.lastDraggingIndex=Tn.index)}onDragEnd({element:ee,model:Ve,event:fn}){const Tn=this.positions[Ve.prop],$r=this.isTarget(Ve,fn);$r&&this.reorder.emit({prevIndex:Tn.index,newIndex:$r.i,model:Ve}),this.lastDraggingIndex=void 0,ee.style.left="auto"}isTarget(ee,Ve){let fn=0;const ni=this.document.elementsFromPoint(Ve.x||Ve.clientX,Ve.y||Ve.clientY);for(const Ri in this.positions){const Do=this.positions[Ri];if(ee.prop!==Ri&&ni.find(gi=>gi===Do.element))return{pos:Do,i:fn};fn++}}createMapDiffs(){return this.draggables.toArray().reduce((ee,Ve)=>(ee[Ve.dragModel.$$id]=Ve,ee),{})}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.aQg),t.Y36(e.K0))},st.\u0275dir=t.lG2({type:st,selectors:[["","orderable",""]],contentQueries:function(ee,Ve,fn){if(1&ee&&t.Suo(fn,$n,5),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve.draggables=Tn)}},outputs:{reorder:"reorder",targetChanged:"targetChanged"}}),st})(),Dn=(()=>{class st{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new t.vpe,this.longPressing=new t.vpe,this.longPressEnd=new t.vpe,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(ee){if(1!==ee.which||!this.pressEnabled||ee.target.classList.contains("resize-handle"))return;this.mouseX=ee.clientX,this.mouseY=ee.clientY,this.pressing=!0,this.isLongPressing=!1;const fn=(0,a.R)(document,"mouseup");this.subscription=fn.subscribe(Tn=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:ee,model:this.pressModel}),this.subscription.add((0,a.R)(document,"mousemove").pipe((0,u.R)(fn)).subscribe(Tn=>this.onMouseMove(Tn))),this.loop(ee)},this.duration),this.loop(ee)}onMouseMove(ee){if(this.pressing&&!this.isLongPressing){const Ve=Math.abs(ee.clientX-this.mouseX)>10,fn=Math.abs(ee.clientY-this.mouseY)>10;(Ve||fn)&&this.endPress()}}loop(ee){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:ee,model:this.pressModel}),this.loop(ee)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275dir=t.lG2({type:st,selectors:[["","long-press",""]],hostVars:4,hostBindings:function(ee,Ve){1&ee&&t.NdJ("mousedown",function(Tn){return Ve.onMouseDown(Tn)}),2&ee&&t.ekj("press",Ve.press)("longpress",Ve.isLongPress)},inputs:{pressEnabled:"pressEnabled",duration:"duration",pressModel:"pressModel"},outputs:{longPressStart:"longPressStart",longPressing:"longPressing",longPressEnd:"longPressEnd"}}),st})(),mn=(()=>{class st{constructor(ee,Ve,fn){this.ngZone=ee,this.renderer=fn,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new t.vpe,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=Ve.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const ee=this.renderer;this.parentElement=ee.parentNode(ee.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(ee){this.parentElement&&(this.parentElement.scrollTop=ee)}onScrolled(ee){const Ve=ee.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=Ve.scrollTop,this.scrollXPos=Ve.scrollLeft,this.updateOffset()})}updateOffset(){let ee;this.scrollYPos<this.prevScrollYPos?ee="down":this.scrollYPos>this.prevScrollYPos&&(ee="up"),this.scroll.emit({direction:ee,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.R0b),t.Y36(t.SBq),t.Y36(t.Qsj))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-scroller"]],hostAttrs:[1,"datatable-scroll"],hostVars:4,hostBindings:function(ee,Ve){2&ee&&t.Udp("height",Ve.scrollHeight,"px")("width",Ve.scrollWidth,"px")},inputs:{scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",scrollHeight:"scrollHeight",scrollWidth:"scrollWidth"},outputs:{scroll:"scroll"},ngContentSelectors:_,decls:1,vars:0,template:function(ee,Ve){1&ee&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),st})(),jn=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-group-header-template",""]]}),st})(),Xt=(()=>{class st{constructor(){this.rowHeight=0,this.toggle=new t.vpe}get template(){return this._templateInput||this._templateQuery}toggleExpandGroup(ee){this.toggle.emit({type:"group",value:ee})}expandAllGroups(){this.toggle.emit({type:"all",value:!0})}collapseAllGroups(){this.toggle.emit({type:"all",value:!1})}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275dir=t.lG2({type:st,selectors:[["ngx-datatable-group-header"]],contentQueries:function(ee,Ve,fn){if(1&ee&&t.Suo(fn,jn,7,t.Rgc),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve._templateQuery=Tn.first)}},inputs:{rowHeight:"rowHeight",_templateInput:["template","_templateInput"]},outputs:{toggle:"toggle"}}),st})();function ut(){return""}function mt(st){return null==st?ut:"number"==typeof st?Tt:-1!==st.indexOf(".")?et:yn}function Tt(st,pn){if(null==st)return"";if(!st||null==pn)return st;const ee=st[pn];return null==ee?"":ee}function yn(st,pn){if(null==st)return"";if(!st||!pn)return st;const ee=st[pn];return null==ee?"":ee}function et(st,pn){if(null==st)return"";if(!st||!pn)return st;let ee=st[pn];if(void 0!==ee)return ee;ee=st;const Ve=pn.split(".");if(Ve.length)for(let fn=0;fn<Ve.length;fn++)if(ee=ee[Ve[fn]],null==ee)return"";return ee}function jt(st){return st&&(pn=>mt(st)(pn,st))}function hn(st,pn,ee){if(pn&&ee){const Ve={},fn=st.length;let Tn=null;Ve[0]=new Qn;const $r=st.reduce((Ri,Do)=>{const gi=ee(Do);return-1===Ri.indexOf(gi)&&Ri.push(gi),Ri},[]);for(let Ri=0;Ri<fn;Ri++)Ve[ee(st[Ri])]=new Qn(st[Ri]);for(let Ri=0;Ri<fn;Ri++){Tn=Ve[ee(st[Ri])];let Do=0;const gi=pn(Tn.row);!!gi&&$r.indexOf(gi)>-1&&(Do=gi),Tn.parent=Ve[Do],Tn.row.level=Tn.parent.row.level+1,Tn.parent.children.push(Tn)}let ni=[];return Ve[0].flatten(function(){ni=[...ni,this.row]},!0),ni}return st}class Qn{constructor(pn=null){pn||(pn={level:-1,treeStatus:"expanded"}),this.row=pn,this.parent=null,this.children=[]}flatten(pn,ee){if("expanded"===this.row.treeStatus)for(let Ve=0,fn=this.children.length;Ve<fn;Ve++){const Tn=this.children[Ve];pn.apply(Tn,Array.prototype.slice.call(arguments,2)),ee&&Tn.flatten.apply(Tn,arguments)}}}function Ir(st){return(st=(st=(st=st.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,function(pn,ee,Ve){return ee.trim()+Ve.toUpperCase()})}function ht(st){return st.replace(/([A-Z])/g,pn=>` ${pn}`).replace(/^./,pn=>pn.toUpperCase())}function Ue(st){if(!st)return;let pn=!1;for(const ee of st)ee.$$id||(ee.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),nt(ee.prop)&&ee.name&&(ee.prop=Ir(ee.name)),ee.$$valueGetter||(ee.$$valueGetter=mt(ee.prop)),!nt(ee.prop)&&nt(ee.name)&&(ee.name=ht(String(ee.prop))),nt(ee.prop)&&nt(ee.name)&&(ee.name=""),ee.hasOwnProperty("resizeable")||(ee.resizeable=!0),ee.hasOwnProperty("sortable")||(ee.sortable=!0),ee.hasOwnProperty("draggable")||(ee.draggable=!0),ee.hasOwnProperty("canAutoResize")||(ee.canAutoResize=!0),ee.hasOwnProperty("width")||(ee.width=150),ee.hasOwnProperty("isTreeColumn")&&ee.isTreeColumn&&!pn?pn=!0:ee.isTreeColumn=!1}function nt(st){return null==st}var it=(()=>{return(st=it||(it={})).standard="standard",st.flex="flex",st.force="force",it;var st})(),Pt=(()=>{return(st=Pt||(Pt={})).single="single",st.multi="multi",st.multiClick="multiClick",st.cell="cell",st.checkbox="checkbox",Pt;var st})(),Ut=(()=>{return(st=Ut||(Ut={})).single="single",st.multi="multi",Ut;var st})(),ot=(()=>{return(st=ot||(ot={})).header="header",st.body="body",ot;var st})();let Nn=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-header-template",""]]}),st})(),sn=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-cell-template",""]]}),st})(),An=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-tree-toggle",""]]}),st})(),Bn=(()=>{class st{constructor(ee){this.columnChangesService=ee,this.isFirstChange=!0}get cellTemplate(){return this._cellTemplateInput||this._cellTemplateQuery}get headerTemplate(){return this._headerTemplateInput||this._headerTemplateQuery}get treeToggleTemplate(){return this._treeToggleTemplateInput||this._treeToggleTemplateQuery}ngOnChanges(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(Kn))},st.\u0275dir=t.lG2({type:st,selectors:[["ngx-datatable-column"]],contentQueries:function(ee,Ve,fn){if(1&ee&&(t.Suo(fn,sn,7,t.Rgc),t.Suo(fn,Nn,7,t.Rgc),t.Suo(fn,An,7,t.Rgc)),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve._cellTemplateQuery=Tn.first),t.iGM(Tn=t.CRH())&&(Ve._headerTemplateQuery=Tn.first),t.iGM(Tn=t.CRH())&&(Ve._treeToggleTemplateQuery=Tn.first)}},inputs:{name:"name",prop:"prop",frozenLeft:"frozenLeft",frozenRight:"frozenRight",flexGrow:"flexGrow",resizeable:"resizeable",comparator:"comparator",pipe:"pipe",sortable:"sortable",draggable:"draggable",canAutoResize:"canAutoResize",minWidth:"minWidth",width:"width",maxWidth:"maxWidth",checkboxable:"checkboxable",headerCheckboxable:"headerCheckboxable",headerClass:"headerClass",cellClass:"cellClass",isTreeColumn:"isTreeColumn",treeLevelIndent:"treeLevelIndent",summaryFunc:"summaryFunc",summaryTemplate:"summaryTemplate",_cellTemplateInput:["cellTemplate","_cellTemplateInput"],_headerTemplateInput:["headerTemplate","_headerTemplateInput"],_treeToggleTemplateInput:["treeToggleTemplate","_treeToggleTemplateInput"]},features:[t.TTD]}),st})(),ir=(()=>{class st{constructor(ee){this.template=ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.Rgc))},st.\u0275dir=t.lG2({type:st,selectors:[["","ngx-datatable-row-detail-template",""]]}),st})(),mr=(()=>{class st{constructor(){this.rowHeight=0,this.toggle=new t.vpe}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(ee){this.toggle.emit({type:"row",value:ee})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275dir=t.lG2({type:st,selectors:[["ngx-datatable-row-detail"]],contentQueries:function(ee,Ve,fn){if(1&ee&&t.Suo(fn,ir,7,t.Rgc),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve._templateQuery=Tn.first)}},inputs:{rowHeight:"rowHeight",_templateInput:["template","_templateInput"]},outputs:{toggle:"toggle"}}),st})(),_r=(()=>{class st{get template(){return this._templateInput||this._templateQuery}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275dir=t.lG2({type:st,selectors:[["ngx-datatable-footer"]],contentQueries:function(ee,Ve,fn){if(1&ee&&t.Suo(fn,qn,5,t.Rgc),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve._templateQuery=Tn.first)}},inputs:{footerHeight:"footerHeight",totalMessage:"totalMessage",selectedMessage:"selectedMessage",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon",_templateInput:["template","_templateInput"]}}),st})();function Nr(st){const pn={left:[],center:[],right:[]};if(st)for(const ee of st)ee.frozenLeft?pn.left.push(ee):ee.frozenRight?pn.right.push(ee):pn.center.push(ee);return pn}function br(st,pn){return{left:Jn(st.left),center:Jn(st.center),right:Jn(st.right),total:Math.floor(Jn(pn))}}function Jn(st,pn){let ee=0;if(st)for(const Ve of st)ee+=parseFloat(pn&&Ve[pn]?Ve[pn]:Ve.width);return ee}function Mr(st){const pn=[],ee=Nr(st);return pn.push({type:"left",columns:ee.left}),pn.push({type:"center",columns:ee.center}),pn.push({type:"right",columns:ee.right}),pn}class yi{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(pn){const{rows:ee,rowHeight:Ve,detailRowHeight:fn,externalVirtual:Tn,rowCount:$r,rowIndexes:ni,rowExpansions:Ri}=pn,Do="function"==typeof Ve,gi="function"==typeof fn;if(!Do&&isNaN(Ve))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${Ve}) when 'scrollbarV' is enabled.`);if(!gi&&isNaN(fn))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${fn}) when 'scrollbarV' is enabled.`);const Hi=Tn?$r:ee.length;this.treeArray=new Array(Hi);for(let Li=0;Li<Hi;++Li)this.treeArray[Li]=0;for(let Li=0;Li<Hi;++Li){const cs=ee[Li];let Os=Ve;Do&&(Os=Ve(cs));const da=Ri.has(cs);cs&&da&&(Os+=gi?fn(cs,ni.get(cs)):fn),this.update(Li,Os)}}getRowIndex(pn){return 0===pn?0:this.calcRowIndex(pn)}update(pn,ee){if(!this.treeArray.length)throw new Error(`Update at index ${pn} with value ${ee} failed:\n        Row Height cache not initialized.`);const Ve=this.treeArray.length;for(pn|=0;pn<Ve;)this.treeArray[pn]+=ee,pn|=pn+1}query(pn){if(!this.treeArray.length)throw new Error(`query at index ${pn} failed: Fenwick tree array not initialized.`);let ee=0;for(pn|=0;pn>=0;)ee+=this.treeArray[pn],pn=(pn&pn+1)-1;return ee}queryBetween(pn,ee){return this.query(ee)-this.query(pn-1)}calcRowIndex(pn){if(!this.treeArray.length)return 0;let ee=-1;const Ve=this.treeArray.length;for(let Tn=Math.pow(2,Ve.toString(2).length-1);0!==Tn;Tn>>=1){const $r=ee+Tn;$r<Ve&&pn>=this.treeArray[$r]&&(pn-=this.treeArray[$r],ee=$r)}return ee+1}}const Ii={},Mi="undefined"!=typeof document?document.createElement("div").style:void 0,Kr=function(){const st="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,pn=void 0!==st?Array.prototype.slice.call(st).join("").match(/-(moz|webkit|ms)-/):null,ee=null!==pn?pn[1]:void 0,Ve=void 0!==ee?"WebKit|Moz|MS|O".match(new RegExp("("+ee+")","i"))[1]:void 0;return Ve?{dom:Ve,lowercase:ee,css:`-${ee}-`,js:ee[0].toUpperCase()+ee.substr(1)}:void 0}();function ei(st){const pn=Ir(st);return Ii[pn]||(void 0!==Kr&&void 0!==Mi[Kr.css+st]?Ii[pn]=Kr.css+st:void 0!==Mi[st]&&(Ii[pn]=st)),Ii[pn]}const di="undefined"!=typeof window?ei("transform"):void 0,se="undefined"!=typeof window?ei("backfaceVisibility"):void 0,ct="undefined"!=typeof window?!!ei("transform"):void 0,Ke="undefined"!=typeof window?!!ei("perspective"):void 0,Xe="undefined"!=typeof window?window.navigator.userAgent:"Chrome",Vt=/Safari\//.test(Xe)&&!/Chrome\//.test(Xe);function Ct(st,pn,ee){void 0!==di&&ct?!Vt&&Ke?(st[di]=`translate3d(${pn}px, ${ee}px, 0)`,st[se]="hidden"):st[Ir(di)]=`translate(${pn}px, ${ee}px)`:(st.top=`${ee}px`,st.left=`${pn}px`)}let rt=(()=>{class st{constructor(ee){this.cd=ee,this.selected=[],this.scroll=new t.vpe,this.page=new t.vpe,this.activate=new t.vpe,this.select=new t.vpe,this.detailToggle=new t.vpe,this.rowContextmenu=new t.vpe(!1),this.treeAction=new t.vpe,this.rowHeightsCache=new yi,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new WeakMap,this.rowExpansions=[],this.getDetailRowHeight=(Ve,fn)=>{if(!this.rowDetail)return 0;const Tn=this.rowDetail.rowHeight;return"function"==typeof Tn?Tn(Ve,fn):Tn},this.rowTrackingFn=(Ve,fn)=>{const Tn=this.getRowIndex(fn);return this.trackByProp?fn[this.trackByProp]:Tn}}set pageSize(ee){this._pageSize=ee,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(ee){this._rows=ee,this.recalcLayout()}get rows(){return this._rows}set columns(ee){this._columns=ee;const Ve=Nr(ee);this.columnGroupWidths=br(Ve,ee)}get columns(){return this._columns}set offset(ee){this._offset=ee,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(ee){this._rowCount=ee,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(ee){this._bodyHeight=this.scrollbarV?ee+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:ee,value:Ve})=>{"row"===ee&&this.toggleRowExpansion(Ve),"all"===ee&&this.toggleAllRows(Ve),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:ee,value:Ve})=>{"group"===ee&&this.toggleRowExpansion(Ve),"all"===ee&&this.toggleAllRows(Ve),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(ee){this.scroller&&(this.scrollbarV&&this.virtualization&&ee?ee=this.rowHeightsCache.query(this.pageSize*ee-1):this.scrollbarV&&!this.virtualization&&(ee=0),this.scroller.setOffset(ee||0))}onBodyScroll(ee){const Ve=ee.scrollYPos,fn=ee.scrollXPos;(this.offsetY!==Ve||this.offsetX!==fn)&&this.scroll.emit({offsetY:Ve,offsetX:fn}),this.offsetY=Ve,this.offsetX=fn,this.updateIndexes(),this.updatePage(ee.direction),this.updateRows()}updatePage(ee){let Ve=this.indexes.first/this.pageSize;"up"===ee?Ve=Math.ceil(Ve):"down"===ee&&(Ve=Math.floor(Ve)),void 0!==ee&&!isNaN(Ve)&&this.page.emit({offset:Ve})}updateRows(){const{first:ee,last:Ve}=this.indexes;let fn=ee,Tn=0;const $r=[];if(this.groupedRows){let ni=3;for(1===this.groupedRows.length&&(ni=this.groupedRows[0].value.length);fn<Ve&&fn<this.groupedRows.length;){const Ri=this.groupedRows[fn];this.rowIndexes.set(Ri,fn),Ri.value&&Ri.value.forEach((Do,gi)=>{this.rowIndexes.set(Do,`${fn}-${gi}`)}),$r[Tn]=Ri,Tn++,fn++}}else for(;fn<Ve&&fn<this.rowCount;){const ni=this.rows[fn];ni&&(this.rowIndexes.set(ni,fn),$r[Tn]=ni),Tn++,fn++}this.temp=$r}getRowHeight(ee){return"function"==typeof this.rowHeight?this.rowHeight(ee):this.rowHeight}getGroupHeight(ee){let Ve=0;if(ee.value)for(let fn=0;fn<ee.value.length;fn++)Ve+=this.getRowAndDetailHeight(ee.value[fn]);return Ve}getRowAndDetailHeight(ee){let Ve=this.getRowHeight(ee);return this.getRowExpanded(ee)&&(Ve+=this.getDetailRowHeight(ee)),Ve}getRowsStyles(ee){const Ve={};if(this.groupedRows&&(Ve.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let fn=0;if(this.groupedRows){const $r=ee[ee.length-1];fn=$r?this.getRowIndex($r):0}else fn=this.getRowIndex(ee);Ct(Ve,0,this.rowHeightsCache.query(fn-1))}return Ve}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const ee={position:"absolute"};return Ct(ee,0,this.rowHeightsCache.query(this.rows.length-1)),ee}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let ee=0,Ve=0;if(this.scrollbarV)if(this.virtualization){const fn=parseInt(this.bodyHeight,0);ee=this.rowHeightsCache.getRowIndex(this.offsetY),Ve=this.rowHeightsCache.getRowIndex(fn+this.offsetY)+1}else ee=0,Ve=this.rowCount;else this.externalPaging||(ee=Math.max(this.offset*this.pageSize,0)),Ve=Math.min(ee+this.pageSize,this.rowCount);this.indexes={first:ee,last:Ve}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const ee=new Set;for(const Ve of this.rows)this.getRowExpanded(Ve)&&ee.add(Ve);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:ee})}}getAdjustedViewPortIndex(){const ee=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(ee-1)<=this.offsetY?ee-1:ee}toggleRowExpansion(ee){const Ve=this.getAdjustedViewPortIndex(),fn=this.getRowExpandedIdx(ee,this.rowExpansions),Tn=fn>-1;if(this.scrollbarV&&this.virtualization){const $r=this.getDetailRowHeight(ee)*(Tn?-1:1),ni=this.getRowIndex(ee);this.rowHeightsCache.update(ni,$r)}Tn?this.rowExpansions.splice(fn,1):this.rowExpansions.push(ee),this.detailToggle.emit({rows:[ee],currentIndex:Ve})}toggleAllRows(ee){this.rowExpansions=[];const Ve=this.getAdjustedViewPortIndex();if(ee)for(const fn of this.rows)this.rowExpansions.push(fn);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:Ve})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(ee,Ve){return Ve.$$id}stylesByGroup(ee){const Ve=this.columnGroupWidths,fn=this.offsetX,Tn={width:`${Ve[ee]}px`};if("left"===ee)Ct(Tn,fn,0);else if("right"===ee){const $r=parseInt(this.innerWidth+"",0);Ct(Tn,-1*(Ve.total-$r-fn),0)}return Tn}getRowExpanded(ee){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const Ve of this.groupedRows)this.rowExpansions.push(Ve);return this.getRowExpandedIdx(ee,this.rowExpansions)>-1}getRowExpandedIdx(ee,Ve){if(!Ve||!Ve.length)return-1;const fn=this.rowIdentity(ee);return Ve.findIndex(Tn=>this.rowIdentity(Tn)===fn)}getRowIndex(ee){return this.rowIndexes.get(ee)||0}onTreeAction(ee){this.treeAction.emit({row:ee})}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.sBO))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-body"]],viewQuery:function(ee,Ve){if(1&ee&&t.Gf(mn,5),2&ee){let fn;t.iGM(fn=t.CRH())&&(Ve.scroller=fn.first)}},hostAttrs:[1,"datatable-body"],hostVars:4,hostBindings:function(ee,Ve){2&ee&&t.Udp("width",Ve.bodyWidth)("height",Ve.bodyHeight)},inputs:{selected:"selected",pageSize:"pageSize",rows:"rows",columns:"columns",offset:"offset",rowCount:"rowCount",bodyHeight:"bodyHeight",offsetX:"offsetX",loadingIndicator:"loadingIndicator",scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",externalPaging:"externalPaging",rowHeight:"rowHeight",emptyMessage:"emptyMessage",selectionType:"selectionType",rowIdentity:"rowIdentity",rowDetail:"rowDetail",groupHeader:"groupHeader",selectCheck:"selectCheck",displayCheck:"displayCheck",trackByProp:"trackByProp",rowClass:"rowClass",groupedRows:"groupedRows",groupExpansionDefault:"groupExpansionDefault",innerWidth:"innerWidth",groupRowsBy:"groupRowsBy",virtualization:"virtualization",summaryRow:"summaryRow",summaryPosition:"summaryPosition",summaryHeight:"summaryHeight"},outputs:{scroll:"scroll",page:"page",activate:"activate",select:"select",detailToggle:"detailToggle",rowContextmenu:"rowContextmenu",treeAction:"treeAction"},decls:5,vars:9,consts:[[4,"ngIf"],[3,"selected","rows","selectCheck","selectEnabled","selectionType","rowIdentity","select","activate"],["selector",""],[3,"scrollbarV","scrollbarH","scrollHeight","scrollWidth","scroll",4,"ngIf"],["class","empty-row",3,"innerHTML",4,"ngIf"],[3,"scrollbarV","scrollbarH","scrollHeight","scrollWidth","scroll"],[3,"rowHeight","offsetX","innerWidth","rows","columns",4,"ngIf"],[3,"groupedRows","innerWidth","ngStyle","rowDetail","groupHeader","offsetX","detailRowHeight","row","expanded","rowIndex","rowContextmenu",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle","rowHeight","offsetX","innerWidth","rows","columns",4,"ngIf"],[3,"rowHeight","offsetX","innerWidth","rows","columns"],[3,"groupedRows","innerWidth","ngStyle","rowDetail","groupHeader","offsetX","detailRowHeight","row","expanded","rowIndex","rowContextmenu"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","rowIndex","expanded","rowClass","displayCheck","treeStatus","treeAction","activate",4,"ngIf","ngIfElse"],["groupedRowsTemplate",""],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","rowIndex","expanded","rowClass","displayCheck","treeStatus","treeAction","activate"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","group","rowIndex","expanded","rowClass","activate",4,"ngFor","ngForOf","ngForTrackBy"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","group","rowIndex","expanded","rowClass","activate"],[3,"ngStyle","rowHeight","offsetX","innerWidth","rows","columns"],[1,"empty-row",3,"innerHTML"]],template:function(ee,Ve){1&ee&&(t.YNc(0,m,1,0,"datatable-progress",0),t.TgZ(1,"datatable-selection",1,2),t.NdJ("select",function(Tn){return Ve.select.emit(Tn)})("activate",function(Tn){return Ve.activate.emit(Tn)}),t.YNc(3,z,4,8,"datatable-scroller",3),t.YNc(4,U,1,1,"div",4),t.qZA()),2&ee&&(t.Q6J("ngIf",Ve.loadingIndicator),t.xp6(1),t.Q6J("selected",Ve.selected)("rows",Ve.rows)("selectCheck",Ve.selectCheck)("selectEnabled",Ve.selectEnabled)("selectionType",Ve.selectionType)("rowIdentity",Ve.rowIdentity),t.xp6(2),t.Q6J("ngIf",null==Ve.rows?null:Ve.rows.length),t.xp6(1),t.Q6J("ngIf",!(null!=Ve.rows&&Ve.rows.length||Ve.loadingIndicator)))},directives:function(){return[e.O5,Jo,Ji,mn,e.sg,ds,zi,e.PC,to]},encapsulation:2,changeDetection:0}),st})(),bt=(()=>{class st{constructor(ee){this.cd=ee,this.sort=new t.vpe,this.reorder=new t.vpe,this.resize=new t.vpe,this.select=new t.vpe,this.columnContextmenu=new t.vpe(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(ee){this._innerWidth=ee,setTimeout(()=>{if(this._columns){const Ve=Nr(this._columns);this._columnGroupWidths=br(Ve,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(ee){this._headerHeight="auto"!==ee?`${ee}px`:ee}get headerHeight(){return this._headerHeight}set columns(ee){this._columns=ee;const Ve=Nr(ee);this._columnsByPin=Mr(ee),setTimeout(()=>{this._columnGroupWidths=br(Ve,ee),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(ee){this._offsetX=ee,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:ee,model:Ve}){Ve.dragging=!0,this.dragEventTarget=ee}onLongPressEnd({event:ee,model:Ve}){this.dragEventTarget=ee,setTimeout(()=>{const fn=this._columns.find(Tn=>Tn.$$id===Ve.$$id);fn&&(fn.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(ee,Ve){return Ve.type}columnTrackingFn(ee,Ve){return Ve.$$id}onColumnResized(ee,Ve){ee<=Ve.minWidth?ee=Ve.minWidth:ee>=Ve.maxWidth&&(ee=Ve.maxWidth),this.resize.emit({column:Ve,prevValue:Ve.width,newValue:ee})}onColumnReordered({prevIndex:ee,newIndex:Ve,model:fn}){const Tn=this.getColumn(Ve);Tn.isTarget=!1,Tn.targetMarkerContext=void 0,this.reorder.emit({column:fn,prevValue:ee,newValue:Ve})}onTargetChanged({prevIndex:ee,newIndex:Ve,initialIndex:fn}){if(ee||0===ee){const Tn=this.getColumn(ee);Tn.isTarget=!1,Tn.targetMarkerContext=void 0}if(Ve||0===Ve){const Tn=this.getColumn(Ve);Tn.isTarget=!0,fn!==Ve&&(Tn.targetMarkerContext={class:"targetMarker ".concat(fn>Ve?"dragFromRight":"dragFromLeft")})}}getColumn(ee){const Ve=this._columnsByPin[0].columns.length;if(ee<Ve)return this._columnsByPin[0].columns[ee];const fn=this._columnsByPin[1].columns.length;return ee<Ve+fn?this._columnsByPin[1].columns[ee-Ve]:this._columnsByPin[2].columns[ee-Ve-fn]}onSort({column:ee,prevValue:Ve,newValue:fn}){if(ee.dragging)return;const Tn=this.calcNewSorts(ee,Ve,fn);this.sort.emit({sorts:Tn,column:ee,prevValue:Ve,newValue:fn})}calcNewSorts(ee,Ve,fn){let Tn=0;this.sorts||(this.sorts=[]);const $r=this.sorts.map((ni,Ri)=>((ni=Object.assign({},ni)).prop===ee.prop&&(Tn=Ri),ni));return void 0===fn?$r.splice(Tn,1):Ve?$r[Tn].dir=fn:(this.sortType===Ut.single&&$r.splice(0,this.sorts.length),$r.push({dir:fn,prop:ee.prop})),$r}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(ee){const Ve=this._columnGroupWidths,Tn={width:`${Ve[ee]}px`};return"center"===ee?Ct(Tn,-1*this.offsetX,0):"right"===ee&&Ct(Tn,-1*(Ve.total-this.innerWidth),0),Tn}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.sBO))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-header"]],hostAttrs:[1,"datatable-header"],hostVars:4,hostBindings:function(ee,Ve){2&ee&&t.Udp("height",Ve.headerHeight)("width",Ve.headerWidth)},inputs:{innerWidth:"innerWidth",headerHeight:"headerHeight",columns:"columns",offsetX:"offsetX",sorts:"sorts",sortAscendingIcon:"sortAscendingIcon",sortDescendingIcon:"sortDescendingIcon",sortUnsetIcon:"sortUnsetIcon",scrollbarH:"scrollbarH",dealsWithGroup:"dealsWithGroup",targetMarkerTemplate:"targetMarkerTemplate",sortType:"sortType",allRowsSelected:"allRowsSelected",selectionType:"selectionType",reorderable:"reorderable"},outputs:{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"},decls:2,vars:4,consts:[["orderable","",1,"datatable-header-inner",3,"reorder","targetChanged"],[3,"class","ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle"],["resizeable","","long-press","","draggable","",3,"resizeEnabled","pressModel","pressEnabled","dragX","dragY","dragModel","dragEventTarget","headerHeight","isTarget","targetMarkerTemplate","targetMarkerContext","column","sortType","sorts","selectionType","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","resize","longPressStart","longPressEnd","sort","select","columnContextmenu",4,"ngFor","ngForOf","ngForTrackBy"],["resizeable","","long-press","","draggable","",3,"resizeEnabled","pressModel","pressEnabled","dragX","dragY","dragModel","dragEventTarget","headerHeight","isTarget","targetMarkerTemplate","targetMarkerContext","column","sortType","sorts","selectionType","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","resize","longPressStart","longPressEnd","sort","select","columnContextmenu"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.NdJ("reorder",function(Tn){return Ve.onColumnReordered(Tn)})("targetChanged",function(Tn){return Ve.onTargetChanged(Tn)}),t.YNc(1,I,2,5,"div",1),t.qZA()),2&ee&&(t.Udp("width",Ve._columnGroupWidths.total,"px"),t.xp6(1),t.Q6J("ngForOf",Ve._columnsByPin)("ngForTrackBy",Ve.trackByGroups))},directives:function(){return[Fn,e.sg,e.PC,go,En,Dn,$n]},encapsulation:2,changeDetection:0}),st})();function We(st,pn,ee){ee=ee||{};let Ve,fn,Tn,$r=null,ni=0;function Ri(){ni=!1===ee.leading?0:+new Date,$r=null,Tn=st.apply(Ve,fn)}return function(){const Do=+new Date;!ni&&!1===ee.leading&&(ni=Do);const gi=pn-(Do-ni);return Ve=this,fn=arguments,gi<=0?(clearTimeout($r),$r=null,ni=Do,Tn=st.apply(Ve,fn)):!$r&&!1!==ee.trailing&&($r=setTimeout(Ri,gi)),Tn}}function $t(st,pn){return function(Ve,fn,Tn){return{configurable:!0,enumerable:Tn.enumerable,get:function(){return Object.defineProperty(this,fn,{configurable:!0,enumerable:Tn.enumerable,value:We(Tn.value,st,pn)}),this[fn]}}}}function ai(st,pn){for(const ee of pn){const Ve=st.indexOf(ee);st.splice(Ve,1)}}function Dr(st,pn=300){let ee=0;for(const Ve of st)ee+=Ve.width||pn;return ee}var Qr=(()=>{return(st=Qr||(Qr={})).asc="asc",st.desc="desc",Qr;var st})();function fi(st,pn){if(null==st&&(st=0),null==pn&&(pn=0),st instanceof Date&&pn instanceof Date){if(st<pn)return-1;if(st>pn)return 1}else if(isNaN(parseFloat(st))||!isFinite(st)||isNaN(parseFloat(pn))||!isFinite(pn)){if(st=String(st),pn=String(pn),st.toLowerCase()<pn.toLowerCase())return-1;if(st.toLowerCase()>pn.toLowerCase())return 1}else{if(parseFloat(st)<parseFloat(pn))return-1;if(parseFloat(st)>parseFloat(pn))return 1}return 0}let wi=(()=>{class st{constructor(ee,Ve,fn,Tn,$r,ni,Ri){this.scrollbarHelper=ee,this.dimensionsHelper=Ve,this.cd=fn,this.columnChangesService=ni,this.configuration=Ri,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=it.standard,this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType=Ut.single,this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",sortUnset:"datatable-icon-sort-unset",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new t.vpe,this.activate=new t.vpe,this.select=new t.vpe,this.sort=new t.vpe,this.page=new t.vpe,this.reorder=new t.vpe,this.resize=new t.vpe,this.tableContextmenu=new t.vpe(!1),this.treeAction=new t.vpe,this.rowCount=0,this._offsetX=new l.X(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=Do=>this._groupRowsBy?Do.key:Do,this.element=Tn.nativeElement,this.rowDiffer=$r.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(ee){this._rows=ee,ee&&(this._internalRows=[...ee]),this.externalSorting||this.sortInternalRows(),this._internalRows=hn(this._internalRows,jt(this.treeFromRelation),jt(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(ee){ee&&(this._groupRowsBy=ee,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(ee){ee&&(this._internalColumns=[...ee],Ue(this._internalColumns),this.recalculateColumns()),this._columns=ee}get columns(){return this._columns}set limit(ee){this._limit=ee,this.recalculate()}get limit(){return this._limit}set count(ee){this._count=ee,this.recalculate()}get count(){return this._count}set offset(ee){this._offset=ee}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const ee=this.headerHeight;return"string"!=typeof ee||"auto"!==ee}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return this.selectionType===Pt.checkbox}get isCellSelection(){return this.selectionType===Pt.cell}get isSingleSelection(){return this.selectionType===Pt.single}get isMultiSelection(){return this.selectionType===Pt.multi}get isMultiClickSelection(){return this.selectionType===Pt.multiClick}set columnTemplates(ee){this._columnTemplates=ee,this.translateColumns(ee)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let ee=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.bodyComponent&&this.selectAllRowsOnPage){const Ve=this.bodyComponent.indexes;ee=this.selected.length===Ve.last-Ve.first}return this.selected&&this.rows&&0!==this.rows.length&&ee}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(ee=>this.translateColumns(ee)),this.listenForColumnInputChanges()}translateColumns(ee){if(ee){const Ve=ee.toArray();Ve.length&&(this._internalColumns=function(st){const pn=[];for(const ee of st){const Ve={},fn=Object.getOwnPropertyNames(ee);for(const Tn of fn)Ve[Tn]=ee[Tn];ee.headerTemplate&&(Ve.headerTemplate=ee.headerTemplate),ee.cellTemplate&&(Ve.cellTemplate=ee.cellTemplate),ee.summaryFunc&&(Ve.summaryFunc=ee.summaryFunc),ee.summaryTemplate&&(Ve.summaryTemplate=ee.summaryTemplate),pn.push(Ve)}return pn}(Ve),Ue(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(ee,Ve){const fn=new Map;return ee.forEach(ni=>{const Ri=ni[Ve];fn.has(Ri)?fn.get(Ri).push(ni):fn.set(Ri,[ni])}),Array.from(fn,ni=>((ni,Ri)=>({key:ni,value:Ri}))(ni[0],ni[1]))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=hn(this._internalRows,jt(this.treeFromRelation),jt(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns(),this.cd.markForCheck()}onWindowResize(){this.recalculate()}recalculateColumns(ee=this._internalColumns,Ve=-1,fn=this.scrollbarH){if(!ee)return;let Tn=this._innerWidth;return this.scrollbarV&&(Tn-=this.scrollbarHelper.width),this.columnMode===it.force?function(st,pn,ee,Ve,fn=300){const Tn=st.slice(ee+1,st.length).filter(Li=>!1!==Li.canAutoResize);for(const Li of Tn)Li.$$oldWidth||(Li.$$oldWidth=Li.width);let $r=0,ni=!1,Ri=Dr(st,fn),Do=pn-Ri;const gi=[];do{$r=Do/Tn.length,ni=Ri>=pn;for(const Li of Tn){if(ni&&Ve)Li.width=Li.$$oldWidth||Li.width||fn;else{const cs=(Li.width||fn)+$r;Li.minWidth&&cs<Li.minWidth?(Li.width=Li.minWidth,gi.push(Li)):Li.maxWidth&&cs>Li.maxWidth?(Li.width=Li.maxWidth,gi.push(Li)):Li.width=cs}Li.width=Math.max(0,Li.width)}Ri=Dr(st),Do=pn-Ri,ai(Tn,gi)}while(Do>1&&0!==Tn.length)}(ee,Tn,Ve,fn):this.columnMode===it.flex&&function(st,pn){const ee=function(st,pn){let ee=0;for(const Ve of st)ee+=Ve.width;return ee}(st),Ve=function(st){let pn=0;for(const ee of st)pn+=ee.flexGrow||0;return pn}(st),fn=Nr(st);ee!==pn&&function(st,pn,ee){for(const Tn in st)for(const $r of st[Tn])$r.canAutoResize?$r.width=0:(pn-=$r.width,ee-=$r.flexGrow?$r.flexGrow:0);const Ve={};let fn=pn;do{const Tn=fn/ee;fn=0;for(const $r in st)for(const ni of st[$r])if(ni.canAutoResize&&!Ve[ni.prop]){const Ri=ni.width+ni.flexGrow*Tn;void 0!==ni.minWidth&&Ri<ni.minWidth?(fn+=Ri-ni.minWidth,ni.width=ni.minWidth,Ve[ni.prop]=!0):ni.width=Ri}}while(0!==fn)}(fn,pn,Ve)}(ee,Tn),ee}recalculateDims(){const ee=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(ee.width),this.scrollbarV){let Ve=ee.height;this.headerHeight&&(Ve-=this.headerHeight),this.footerHeight&&(Ve-=this.footerHeight),this.bodyHeight=Ve}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:ee}){this.externalPaging&&!this.virtualization||(this.offset=ee,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(ee){this._offsetX.next(ee.offsetX),this.scroll.emit(ee),this.cd.detectChanges()}onFooterPage(ee){this.offset=ee.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(ee=this.rows){if(this.scrollbarV&&this.virtualization){const Ve=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(Ve,0)}return void 0!==this.limit?this.limit:ee?ee.length:0}calcRowCount(ee=this.rows){return this.externalPaging?this.count:ee?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:ee.length:0}onColumnContextmenu({event:ee,column:Ve}){this.tableContextmenu.emit({event:ee,type:ot.header,content:Ve})}onRowContextmenu({event:ee,row:Ve}){this.tableContextmenu.emit({event:ee,type:ot.body,content:Ve})}onColumnResize({column:ee,newValue:Ve}){if(void 0===ee)return;let fn;const Tn=this._internalColumns.map(($r,ni)=>(($r=Object.assign({},$r)).$$id===ee.$$id&&(fn=ni,$r.width=Ve,$r.$$oldWidth=Ve),$r));this.recalculateColumns(Tn,fn),this._internalColumns=Tn,this.resize.emit({column:ee,newValue:Ve})}onColumnReorder({column:ee,newValue:Ve,prevValue:fn}){const Tn=this._internalColumns.map($r=>Object.assign({},$r));if(this.swapColumns){const $r=Tn[Ve];Tn[Ve]=ee,Tn[fn]=$r}else if(Ve>fn){const $r=Tn[fn];for(let ni=fn;ni<Ve;ni++)Tn[ni]=Tn[ni+1];Tn[Ve]=$r}else{const $r=Tn[fn];for(let ni=fn;ni>Ve;ni--)Tn[ni]=Tn[ni-1];Tn[Ve]=$r}this._internalColumns=Tn,this.reorder.emit({column:ee,newValue:Ve,prevValue:fn})}onColumnSort(ee){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=ee.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=hn(this._internalRows,jt(this.treeFromRelation),jt(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(ee)}onHeaderSelect(ee){if(this.bodyComponent&&this.selectAllRowsOnPage){const Ve=this.bodyComponent.indexes.first,fn=this.bodyComponent.indexes.last,Tn=this.selected.length===fn-Ve;this.selected=[],Tn||this.selected.push(...this._internalRows.slice(Ve,fn))}else{const Ve=this.selected.length===this.rows.length;this.selected=[],Ve||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(ee){this.select.emit(ee)}onTreeAction(ee){const Ve=ee.row,fn=this._rows.findIndex(Tn=>Tn[this.treeToRelation]===ee.row[this.treeToRelation]);this.treeAction.emit({row:Ve,rowIndex:fn})}ngOnDestroy(){this._subscriptions.forEach(ee=>ee.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(st,pn,ee){if(!st)return[];if(!ee||!ee.length||!pn)return[...st];const Ve=new Map;st.forEach((ni,Ri)=>Ve.set(ni,Ri));const fn=[...st],Tn=pn.reduce((ni,Ri)=>(Ri.comparator&&"function"==typeof Ri.comparator&&(ni[Ri.prop]=Ri.comparator),ni),{}),$r=ee.map(ni=>{const Ri=ni.prop;return{prop:Ri,dir:ni.dir,valueGetter:mt(Ri),compareFn:Tn[Ri]||fi}});return fn.sort(function(ni,Ri){for(const Do of $r){const{prop:gi,valueGetter:Hi}=Do,Li=Hi(ni,gi),cs=Hi(Ri,gi),Os=Do.dir!==Qr.desc?Do.compareFn(Li,cs,ni,Ri,Do.dir):-Do.compareFn(Li,cs,ni,Ri,Do.dir);if(0!==Os)return Os}return Ve.has(ni)&&Ve.has(Ri)?Ve.get(ni)<Ve.get(Ri)?-1:1:0})}(this._internalRows,this._internalColumns,this.sorts)}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(Kt,4),t.Y36(dn,4),t.Y36(t.sBO),t.Y36(t.SBq),t.Y36(t.aQg),t.Y36(Kn),t.Y36("configuration",8))},st.\u0275cmp=t.Xpm({type:st,selectors:[["ngx-datatable"]],contentQueries:function(ee,Ve,fn){if(1&ee&&(t.Suo(fn,mr,5),t.Suo(fn,Xt,5),t.Suo(fn,_r,5),t.Suo(fn,Bn,4)),2&ee){let Tn;t.iGM(Tn=t.CRH())&&(Ve.rowDetail=Tn.first),t.iGM(Tn=t.CRH())&&(Ve.groupHeader=Tn.first),t.iGM(Tn=t.CRH())&&(Ve.footer=Tn.first),t.iGM(Tn=t.CRH())&&(Ve.columnTemplates=Tn)}},viewQuery:function(ee,Ve){if(1&ee&&(t.Gf(rt,5),t.Gf(bt,5)),2&ee){let fn;t.iGM(fn=t.CRH())&&(Ve.bodyComponent=fn.first),t.iGM(fn=t.CRH())&&(Ve.headerComponent=fn.first)}},hostAttrs:[1,"ngx-datatable"],hostVars:22,hostBindings:function(ee,Ve){1&ee&&t.NdJ("resize",function(){return Ve.onWindowResize()},!1,t.Jf7),2&ee&&t.ekj("fixed-header",Ve.isFixedHeader)("fixed-row",Ve.isFixedRow)("scroll-vertical",Ve.isVertScroll)("virtualized",Ve.isVirtualized)("scroll-horz",Ve.isHorScroll)("selectable",Ve.isSelectable)("checkbox-selection",Ve.isCheckboxSelection)("cell-selection",Ve.isCellSelection)("single-selection",Ve.isSingleSelection)("multi-selection",Ve.isMultiSelection)("multi-click-selection",Ve.isMultiClickSelection)},inputs:{selected:"selected",scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",rowHeight:"rowHeight",columnMode:"columnMode",headerHeight:"headerHeight",footerHeight:"footerHeight",externalPaging:"externalPaging",externalSorting:"externalSorting",loadingIndicator:"loadingIndicator",reorderable:"reorderable",swapColumns:"swapColumns",sortType:"sortType",sorts:"sorts",cssClasses:"cssClasses",messages:"messages",groupExpansionDefault:"groupExpansionDefault",selectAllRowsOnPage:"selectAllRowsOnPage",virtualization:"virtualization",summaryRow:"summaryRow",summaryHeight:"summaryHeight",summaryPosition:"summaryPosition",rowIdentity:"rowIdentity",rows:"rows",groupedRows:"groupedRows",groupRowsBy:"groupRowsBy",columns:"columns",limit:"limit",count:"count",offset:"offset",targetMarkerTemplate:"targetMarkerTemplate",selectionType:"selectionType",rowClass:"rowClass",selectCheck:"selectCheck",displayCheck:"displayCheck",trackByProp:"trackByProp",treeFromRelation:"treeFromRelation",treeToRelation:"treeToRelation"},outputs:{scroll:"scroll",activate:"activate",select:"select",sort:"sort",page:"page",reorder:"reorder",resize:"resize",tableContextmenu:"tableContextmenu",treeAction:"treeAction"},decls:5,vars:34,consts:[["visibilityObserver","",3,"visible"],[3,"sorts","sortType","scrollbarH","innerWidth","offsetX","dealsWithGroup","columns","headerHeight","reorderable","targetMarkerTemplate","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","selectionType","sort","resize","reorder","select","columnContextmenu",4,"ngIf"],[3,"groupRowsBy","groupedRows","rows","groupExpansionDefault","scrollbarV","scrollbarH","virtualization","loadingIndicator","externalPaging","rowHeight","rowCount","offset","trackByProp","columns","pageSize","offsetX","rowDetail","groupHeader","selected","innerWidth","bodyHeight","selectionType","emptyMessage","rowIdentity","rowClass","selectCheck","displayCheck","summaryRow","summaryHeight","summaryPosition","page","activate","rowContextmenu","select","scroll","treeAction"],[3,"rowCount","pageSize","offset","footerHeight","footerTemplate","totalMessage","pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","selectedCount","selectedMessage","pagerNextIcon","page",4,"ngIf"],[3,"sorts","sortType","scrollbarH","innerWidth","offsetX","dealsWithGroup","columns","headerHeight","reorderable","targetMarkerTemplate","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","selectionType","sort","resize","reorder","select","columnContextmenu"],[3,"rowCount","pageSize","offset","footerHeight","footerTemplate","totalMessage","pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","selectedCount","selectedMessage","pagerNextIcon","page"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.NdJ("visible",function(){return Ve.recalculate()}),t.YNc(1,J,2,17,"datatable-header",1),t.TgZ(2,"datatable-body",2),t.NdJ("page",function(Tn){return Ve.onBodyPage(Tn)})("activate",function(Tn){return Ve.activate.emit(Tn)})("rowContextmenu",function(Tn){return Ve.onRowContextmenu(Tn)})("select",function(Tn){return Ve.onBodySelect(Tn)})("scroll",function(Tn){return Ve.onBodyScroll(Tn)})("treeAction",function(Tn){return Ve.onTreeAction(Tn)}),t.ALo(3,"async"),t.qZA(),t.YNc(4,Y,1,12,"datatable-footer",3),t.qZA()),2&ee&&(t.xp6(1),t.Q6J("ngIf",Ve.headerHeight),t.xp6(1),t.Q6J("groupRowsBy",Ve.groupRowsBy)("groupedRows",Ve.groupedRows)("rows",Ve._internalRows)("groupExpansionDefault",Ve.groupExpansionDefault)("scrollbarV",Ve.scrollbarV)("scrollbarH",Ve.scrollbarH)("virtualization",Ve.virtualization)("loadingIndicator",Ve.loadingIndicator)("externalPaging",Ve.externalPaging)("rowHeight",Ve.rowHeight)("rowCount",Ve.rowCount)("offset",Ve.offset)("trackByProp",Ve.trackByProp)("columns",Ve._internalColumns)("pageSize",Ve.pageSize)("offsetX",t.lcZ(3,32,Ve._offsetX))("rowDetail",Ve.rowDetail)("groupHeader",Ve.groupHeader)("selected",Ve.selected)("innerWidth",Ve._innerWidth)("bodyHeight",Ve.bodyHeight)("selectionType",Ve.selectionType)("emptyMessage",Ve.messages.emptyMessage)("rowIdentity",Ve.rowIdentity)("rowClass",Ve.rowClass)("selectCheck",Ve.selectCheck)("displayCheck",Ve.displayCheck)("summaryRow",Ve.summaryRow)("summaryHeight",Ve.summaryHeight)("summaryPosition",Ve.summaryPosition),t.xp6(2),t.Q6J("ngIf",Ve.footerHeight))},directives:function(){return[Sn,e.O5,rt,bt,Fi]},pipes:function(){return[e.Ov]},styles:[".ngx-datatable{display:block;justify-content:center;overflow:hidden;position:relative;transform:translateZ(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{-webkit-overflow-scrolling:touch;overflow-x:auto}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{-o-flex-flow:row;display:flex;flex-direction:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{display:inline-block;line-height:1.625;overflow-x:hidden;vertical-align:top}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{-webkit-align-items:stretch;align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{display:inline-block;position:relative}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{cursor:pointer;display:inline-block;line-height:100%;vertical-align:middle}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{bottom:0;display:inline-block;padding:0 4px;position:absolute;right:0;top:0;visibility:hidden;width:5px}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{bottom:0;position:absolute;top:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{display:block;position:relative;z-index:10}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;overflow:auto;width:100%}.ngx-datatable .datatable-footer .datatable-footer-inner{align-items:center;display:flex;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{display:inline-block;list-style:none;margin:0;padding:0}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],encapsulation:2,changeDetection:0}),(0,h.gn)([$t(5)],st.prototype,"onWindowResize",null),st})(),go=(()=>{class st{constructor(ee){this.cd=ee,this.sort=new t.vpe,this.select=new t.vpe,this.columnContextmenu=new t.vpe(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(ee){this._allRowsSelected=ee,this.cellContext.allRowsSelected=ee}get allRowsSelected(){return this._allRowsSelected}set column(ee){this._column=ee,this.cellContext.column=ee,this.cd.markForCheck()}get column(){return this._column}set sorts(ee){this._sorts=ee,this.sortDir=this.calcSortDir(ee),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let ee="datatable-header-cell";if(this.column.sortable&&(ee+=" sortable"),this.column.resizeable&&(ee+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)ee+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const fn=this.column.headerClass({column:this.column});if("string"==typeof fn)ee+=fn;else if("object"==typeof fn){const Tn=Object.keys(fn);for(const $r of Tn)!0===fn[$r]&&(ee+=` ${$r}`)}}const Ve=this.sortDir;return Ve&&(ee+=` sort-active sort-${Ve}`),ee}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===Pt.checkbox}onContextmenu(ee){this.columnContextmenu.emit({event:ee,column:this.column})}ngOnInit(){this.sortClass=this.calcSortClass(this.sortDir)}calcSortDir(ee){if(ee&&this.column){const Ve=ee.find(fn=>fn.prop===this.column.prop);if(Ve)return Ve.dir}}onSort(){if(!this.column.sortable)return;const ee=function(st,pn){return st===Ut.single?pn===Qr.asc?Qr.desc:Qr.asc:pn?pn===Qr.asc?Qr.desc:void 0:Qr.asc}(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:ee})}calcSortClass(ee){if(this.cellContext.column.sortable)return ee===Qr.asc?`sort-btn sort-asc ${this.sortAscendingIcon}`:ee===Qr.desc?`sort-btn sort-desc ${this.sortDescendingIcon}`:`sort-btn ${this.sortUnsetIcon}`}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.sBO))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-header-cell"]],hostAttrs:[1,"datatable-header-cell"],hostVars:11,hostBindings:function(ee,Ve){1&ee&&t.NdJ("contextmenu",function(Tn){return Ve.onContextmenu(Tn)}),2&ee&&(t.uIk("title",Ve.name),t.Tol(Ve.columnCssClasses),t.Udp("min-width",Ve.minWidth,"px")("max-width",Ve.maxWidth,"px")("width",Ve.width,"px")("height",Ve.headerHeight,"px"))},inputs:{allRowsSelected:"allRowsSelected",column:"column",sorts:"sorts",sortType:"sortType",sortAscendingIcon:"sortAscendingIcon",sortDescendingIcon:"sortDescendingIcon",sortUnsetIcon:"sortUnsetIcon",isTarget:"isTarget",targetMarkerTemplate:"targetMarkerTemplate",targetMarkerContext:"targetMarkerContext",selectionType:"selectionType",headerHeight:"headerHeight"},outputs:{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"},decls:6,vars:6,consts:[[1,"datatable-header-cell-template-wrap"],[4,"ngIf"],["class","datatable-checkbox",4,"ngIf"],["class","datatable-header-cell-wrapper",4,"ngIf"],[3,"click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"datatable-checkbox"],["type","checkbox",3,"checked","change"],[1,"datatable-header-cell-wrapper"],[1,"datatable-header-cell-label","draggable",3,"innerHTML","click"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.YNc(1,oe,1,2,void 0,1),t.YNc(2,fe,2,1,"label",2),t.YNc(3,ne,2,1,"span",3),t.YNc(4,ce,1,2,void 0,1),t.TgZ(5,"span",4),t.NdJ("click",function(){return Ve.onSort()}),t.qZA(),t.qZA()),2&ee&&(t.xp6(1),t.Q6J("ngIf",Ve.isTarget),t.xp6(1),t.Q6J("ngIf",Ve.isCheckboxable),t.xp6(1),t.Q6J("ngIf",!Ve.column.headerTemplate),t.xp6(1),t.Q6J("ngIf",Ve.column.headerTemplate),t.xp6(1),t.Tol(Ve.sortClass))},directives:[e.O5,e.tP],encapsulation:2,changeDetection:0}),st})(),Fi=(()=>{class st{constructor(){this.selectedCount=0,this.page=new t.vpe}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-footer"]],hostAttrs:[1,"datatable-footer"],inputs:{selectedCount:"selectedCount",footerHeight:"footerHeight",rowCount:"rowCount",pageSize:"pageSize",offset:"offset",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon",totalMessage:"totalMessage",footerTemplate:"footerTemplate",selectedMessage:"selectedMessage"},outputs:{page:"page"},decls:4,vars:8,consts:[[1,"datatable-footer-inner",3,"ngClass"],[4,"ngIf"],["class","page-count",4,"ngIf"],[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"page-count"],[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.YNc(1,Oe,1,8,void 0,1),t.YNc(2,ue,3,3,"div",2),t.YNc(3,He,1,8,"datatable-pager",3),t.qZA()),2&ee&&(t.Udp("height",Ve.footerHeight,"px"),t.Q6J("ngClass",t.VKq(6,$e,Ve.selectedMessage)),t.xp6(1),t.Q6J("ngIf",Ve.footerTemplate),t.xp6(1),t.Q6J("ngIf",!Ve.footerTemplate),t.xp6(1),t.Q6J("ngIf",!Ve.footerTemplate))},directives:function(){return[e.mk,e.O5,e.tP,no]},encapsulation:2,changeDetection:0}),st})(),no=(()=>{class st{constructor(){this.change=new t.vpe,this._count=0,this._page=1,this._size=0}set size(ee){this._size=ee,this.pages=this.calcPages()}get size(){return this._size}set count(ee){this._count=ee,this.pages=this.calcPages()}get count(){return this._count}set page(ee){this._page=ee,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const ee=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(ee||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(ee){ee>0&&ee<=this.totalPages&&ee!==this.page&&(this.page=ee,this.change.emit({page:ee}))}calcPages(ee){const Ve=[];let fn=1,Tn=this.totalPages;ee=ee||this.page,5<this.totalPages&&(fn=ee-Math.floor(2.5),Tn=ee+Math.floor(2.5),fn<1?(fn=1,Tn=Math.min(fn+5-1,this.totalPages)):Tn>this.totalPages&&(fn=Math.max(this.totalPages-5+1,1),Tn=this.totalPages));for(let Ri=fn;Ri<=Tn;Ri++)Ve.push({number:Ri,text:Ri});return Ve}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-pager"]],hostAttrs:[1,"datatable-pager"],inputs:{size:"size",count:"count",page:"page",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon"},outputs:{change:"change"},decls:14,vars:21,consts:[[1,"pager"],["role","button","aria-label","go to first page","href","javascript:void(0)",3,"click"],["role","button","aria-label","go to previous page","href","javascript:void(0)",3,"click"],["role","button","class","pages",3,"active",4,"ngFor","ngForOf"],["role","button","aria-label","go to next page","href","javascript:void(0)",3,"click"],["role","button","aria-label","go to last page","href","javascript:void(0)",3,"click"],["role","button",1,"pages"],["href","javascript:void(0)",3,"click"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"ul",0),t.TgZ(1,"li"),t.TgZ(2,"a",1),t.NdJ("click",function(){return Ve.selectPage(1)}),t._UZ(3,"i"),t.qZA(),t.qZA(),t.TgZ(4,"li"),t.TgZ(5,"a",2),t.NdJ("click",function(){return Ve.prevPage()}),t._UZ(6,"i"),t.qZA(),t.qZA(),t.YNc(7,F,3,4,"li",3),t.TgZ(8,"li"),t.TgZ(9,"a",4),t.NdJ("click",function(){return Ve.nextPage()}),t._UZ(10,"i"),t.qZA(),t.qZA(),t.TgZ(11,"li"),t.TgZ(12,"a",5),t.NdJ("click",function(){return Ve.selectPage(Ve.totalPages)}),t._UZ(13,"i"),t.qZA(),t.qZA(),t.qZA()),2&ee&&(t.xp6(1),t.ekj("disabled",!Ve.canPrevious()),t.xp6(2),t.Tol(Ve.pagerPreviousIcon),t.xp6(1),t.ekj("disabled",!Ve.canPrevious()),t.xp6(2),t.Tol(Ve.pagerLeftArrowIcon),t.xp6(1),t.Q6J("ngForOf",Ve.pages),t.xp6(1),t.ekj("disabled",!Ve.canNext()),t.xp6(2),t.Tol(Ve.pagerRightArrowIcon),t.xp6(1),t.ekj("disabled",!Ve.canNext()),t.xp6(2),t.Tol(Ve.pagerNextIcon))},directives:[e.sg],encapsulation:2,changeDetection:0}),st})(),Ji=(()=>{class st{}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-progress"]],decls:3,vars:0,consts:[["role","progressbar",1,"progress-linear"],[1,"container"],[1,"bar"]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.TgZ(1,"div",1),t._UZ(2,"div",2),t.qZA(),t.qZA())},encapsulation:2,changeDetection:0}),st})();var qi=(()=>{return(st=qi||(qi={}))[st.up=38]="up",st[st.down=40]="down",st[st.return=13]="return",st[st.escape=27]="escape",st[st.left=37]="left",st[st.right=39]="right",qi;var st})();let to=(()=>{class st{constructor(ee,Ve,fn,Tn){this.differs=ee,this.scrollbarHelper=Ve,this.cd=fn,this.treeStatus="collapsed",this.activate=new t.vpe,this.treeAction=new t.vpe,this._groupStyles={left:{},center:{},right:{}},this._element=Tn.nativeElement,this._rowDiffer=ee.find({}).create()}set columns(ee){this._columns=ee,this.recalculateColumns(ee),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(ee){if(this._columns){const Ve=Nr(this._columns);this._columnGroupWidths=br(Ve,this._columns)}this._innerWidth=ee,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(ee){this._offsetX=ee,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let ee="datatable-body-row";if(this.isSelected&&(ee+=" active"),this.rowIndex%2!=0&&(ee+=" datatable-row-odd"),this.rowIndex%2==0&&(ee+=" datatable-row-even"),this.rowClass){const Ve=this.rowClass(this.row);if("string"==typeof Ve)ee+=` ${Ve}`;else if("object"==typeof Ve){const fn=Object.keys(Ve);for(const Tn of fn)!0===Ve[Tn]&&(ee+=` ${Tn}`)}}return ee}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(ee,Ve){return Ve.type}columnTrackingFn(ee,Ve){return Ve.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(ee){const Ve=this._columnGroupWidths,fn=this.offsetX,Tn={width:`${Ve[ee]}px`};if("left"===ee)Ct(Tn,fn,0);else if("right"===ee){const $r=parseInt(this.innerWidth+"",0);Ct(Tn,-1*(Ve.total-$r-fn+this.scrollbarHelper.width),0)}return Tn}onActivate(ee,Ve){ee.cellIndex=Ve,ee.rowElement=this._element,this.activate.emit(ee)}onKeyDown(ee){const Ve=ee.keyCode;(Ve===qi.return||Ve===qi.down||Ve===qi.up||Ve===qi.left||Ve===qi.right)&&ee.target===this._element&&(ee.preventDefault(),ee.stopPropagation(),this.activate.emit({type:"keydown",event:ee,row:this.row,rowElement:this._element}))}onMouseenter(ee){this.activate.emit({type:"mouseenter",event:ee,row:this.row,rowElement:this._element})}recalculateColumns(ee=this.columns){this._columns=ee;const Ve=Nr(this._columns);this._columnsByPin=Mr(this._columns),this._columnGroupWidths=br(Ve,this._columns)}onTreeAction(){this.treeAction.emit()}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.aQg),t.Y36(Kt,4),t.Y36(t.sBO),t.Y36(t.SBq))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-body-row"]],hostVars:6,hostBindings:function(ee,Ve){1&ee&&t.NdJ("keydown",function(Tn){return Ve.onKeyDown(Tn)})("mouseenter",function(Tn){return Ve.onMouseenter(Tn)}),2&ee&&(t.Tol(Ve.cssClass),t.Udp("width",Ve.columnsTotalWidths,"px")("height",Ve.rowHeight,"px"))},inputs:{treeStatus:"treeStatus",columns:"columns",innerWidth:"innerWidth",offsetX:"offsetX",expanded:"expanded",rowClass:"rowClass",row:"row",group:"group",isSelected:"isSelected",rowIndex:"rowIndex",displayCheck:"displayCheck",rowHeight:"rowHeight"},outputs:{activate:"activate",treeAction:"treeAction"},decls:1,vars:2,consts:[[3,"class","ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle"],["tabindex","-1",3,"row","group","expanded","isSelected","rowIndex","column","rowHeight","displayCheck","treeStatus","activate","treeAction",4,"ngFor","ngForOf","ngForTrackBy"],["tabindex","-1",3,"row","group","expanded","isSelected","rowIndex","column","rowHeight","displayCheck","treeStatus","activate","treeAction"]],template:function(ee,Ve){1&ee&&t.YNc(0,Et,2,6,"div",0),2&ee&&t.Q6J("ngForOf",Ve._columnsByPin)("ngForTrackBy",Ve.trackByGroups)},directives:function(){return[e.sg,e.PC,Go]},encapsulation:2,changeDetection:0}),st})(),zi=(()=>{class st{constructor(ee,Ve){this.cd=ee,this.differs=Ve,this.rowContextmenu=new t.vpe(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=Ve.find({}).create()}set rowIndex(ee){this._rowIndex=ee,this.rowContext.rowIndex=ee,this.groupContext.rowIndex=ee,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(ee){this._expanded=ee,this.groupContext.expanded=ee,this.rowContext.expanded=ee,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(ee){this.rowContextmenu.emit({event:ee,row:this.row})}getGroupHeaderStyle(){const ee={};return ee.transform="translate3d("+this.offsetX+"px, 0px, 0px)",ee["backface-visibility"]="hidden",ee.width=this.innerWidth,ee}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.sBO),t.Y36(t.aQg))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-row-wrapper"]],hostAttrs:[1,"datatable-row-wrapper"],hostBindings:function(ee,Ve){1&ee&&t.NdJ("contextmenu",function(Tn){return Ve.onContextmenu(Tn)})},inputs:{rowIndex:"rowIndex",expanded:"expanded",innerWidth:"innerWidth",rowDetail:"rowDetail",groupHeader:"groupHeader",offsetX:"offsetX",detailRowHeight:"detailRowHeight",row:"row",groupedRows:"groupedRows"},outputs:{rowContextmenu:"rowContextmenu"},ngContentSelectors:_,decls:3,vars:3,consts:[["class","datatable-group-header",3,"ngStyle",4,"ngIf"],[4,"ngIf"],["class","datatable-row-detail",3,"height",4,"ngIf"],[1,"datatable-group-header",3,"ngStyle"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"datatable-row-detail"]],template:function(ee,Ve){1&ee&&(t.F$t(),t.YNc(0,St,2,2,"div",0),t.YNc(1,At,1,0,"ng-content",1),t.YNc(2,ae,2,3,"div",2)),2&ee&&(t.Q6J("ngIf",Ve.groupHeader&&Ve.groupHeader.template),t.xp6(1),t.Q6J("ngIf",Ve.groupHeader&&Ve.groupHeader.template&&Ve.expanded||!Ve.groupHeader||!Ve.groupHeader.template),t.xp6(1),t.Q6J("ngIf",Ve.rowDetail&&Ve.rowDetail.template&&Ve.expanded))},directives:[e.O5,e.PC,e.tP],encapsulation:2,changeDetection:0}),st})(),Go=(()=>{class st{constructor(ee,Ve){this.cd=Ve,this.activate=new t.vpe,this.treeAction=new t.vpe,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=ee.nativeElement}set group(ee){this._group=ee,this.cellContext.group=ee,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(ee){this._rowHeight=ee,this.cellContext.rowHeight=ee,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(ee){this._isSelected=ee,this.cellContext.isSelected=ee,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(ee){this._expanded=ee,this.cellContext.expanded=ee,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(ee){this._rowIndex=ee,this.cellContext.rowIndex=ee,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(ee){this._column=ee,this.cellContext.column=ee,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(ee){this._row=ee,this.cellContext.row=ee,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(ee){this._sorts=ee,this.calcSortDir=this.calcSortDir(ee)}get sorts(){return this._sorts}set treeStatus(ee){this._treeStatus="collapsed"!==ee&&"expanded"!==ee&&"loading"!==ee&&"disabled"!==ee?"collapsed":ee,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let ee="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)ee+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const Ve=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof Ve)ee+=" "+Ve;else if("object"==typeof Ve){const fn=Object.keys(Ve);for(const Tn of fn)!0===Ve[Tn]&&(ee+=` ${Tn}`)}}return this.sortDir||(ee+=" sort-active"),this.isFocused&&(ee+=" active"),this.sortDir===Qr.asc&&(ee+=" sort-asc"),this.sortDir===Qr.desc&&(ee+=" sort-desc"),ee}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const ee=this.rowHeight;return isNaN(ee)?ee:ee+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let ee="";if(this.row&&this.column){const Ve=this.column.$$valueGetter(this.row,this.column.prop),fn=this.column.pipe;fn?ee=fn.transform(Ve):void 0!==ee&&(ee=Ve)}else ee="";this.value!==ee&&(this.value=ee,this.cellContext.value=ee,this.sanitizedValue=null!=ee?this.stripHtml(ee):ee,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(ee){this.activate.emit({type:"click",event:ee,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(ee){this.activate.emit({type:"dblclick",event:ee,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(ee){const Ve=ee.keyCode;(Ve===qi.return||Ve===qi.down||Ve===qi.up||Ve===qi.left||Ve===qi.right)&&ee.target===this._element&&(ee.preventDefault(),ee.stopPropagation(),this.activate.emit({type:"keydown",event:ee,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(ee){this.activate.emit({type:"checkbox",event:ee,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(ee){if(!ee)return;const Ve=ee.find(fn=>fn.prop===this.column.prop);return Ve?Ve.dir:void 0}stripHtml(ee){return ee.replace?ee.replace(/<\/?[^>]+(>|$)/g,""):ee}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(ee,Ve){return ee.isTreeColumn?Ve.level*(null!=ee.treeLevelIndent?ee.treeLevelIndent:50):0}}return st.\u0275fac=function(ee){return new(ee||st)(t.Y36(t.SBq),t.Y36(t.sBO))},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-body-cell"]],viewQuery:function(ee,Ve){if(1&ee&&t.Gf(Ie,7,t.s_b),2&ee){let fn;t.iGM(fn=t.CRH())&&(Ve.cellTemplate=fn.first)}},hostVars:10,hostBindings:function(ee,Ve){1&ee&&t.NdJ("focus",function(){return Ve.onFocus()})("blur",function(){return Ve.onBlur()})("click",function(Tn){return Ve.onClick(Tn)})("dblclick",function(Tn){return Ve.onDblClick(Tn)})("keydown",function(Tn){return Ve.onKeyDown(Tn)}),2&ee&&(t.Tol(Ve.columnCssClasses),t.Udp("width",Ve.width,"px")("min-width",Ve.minWidth,"px")("max-width",Ve.maxWidth,"px")("height",Ve.height))},inputs:{group:"group",rowHeight:"rowHeight",isSelected:"isSelected",expanded:"expanded",rowIndex:"rowIndex",column:"column",row:"row",sorts:"sorts",treeStatus:"treeStatus",displayCheck:"displayCheck"},outputs:{activate:"activate",treeAction:"treeAction"},decls:5,vars:6,consts:[[1,"datatable-body-cell-label"],["class","datatable-checkbox",4,"ngIf"],[4,"ngIf"],[3,"title","innerHTML",4,"ngIf"],[1,"datatable-checkbox"],["type","checkbox",3,"checked","click"],["class","datatable-tree-button",3,"disabled","click",4,"ngIf"],[1,"datatable-tree-button",3,"disabled","click"],["class","icon datatable-icon-collapse",4,"ngIf"],["class","icon datatable-icon-up",4,"ngIf"],["class","icon datatable-icon-down",4,"ngIf"],[1,"icon","datatable-icon-collapse"],[1,"icon","datatable-icon-up"],[1,"icon","datatable-icon-down"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[3,"title","innerHTML"],["cellTemplate",""]],template:function(ee,Ve){1&ee&&(t.TgZ(0,"div",0),t.YNc(1,dt,2,1,"label",1),t.YNc(2,Mn,3,2,"ng-container",2),t.YNc(3,Ht,1,2,"span",3),t.YNc(4,Yn,2,2,void 0,2),t.qZA()),2&ee&&(t.Udp("margin-left",Ve.calcLeftMargin(Ve.column,Ve.row),"px"),t.xp6(1),t.Q6J("ngIf",Ve.column.checkboxable&&(!Ve.displayCheck||Ve.displayCheck(Ve.row,Ve.column,Ve.value))),t.xp6(1),t.Q6J("ngIf",Ve.column.isTreeColumn),t.xp6(1),t.Q6J("ngIf",!Ve.column.cellTemplate),t.xp6(1),t.Q6J("ngIf",Ve.column.cellTemplate))},directives:[e.O5,e.tP],encapsulation:2,changeDetection:0}),st})();function Ro(st,pn,ee){const Ve=ee(pn,st);return Ve>-1?st.splice(Ve,1):st.push(pn),st}let Jo=(()=>{class st{constructor(){this.activate=new t.vpe,this.select=new t.vpe}selectRow(ee,Ve,fn){if(!this.selectEnabled)return;const Tn=this.selectionType===Pt.checkbox,ni=this.selectionType===Pt.multiClick;let Ri=[];Ri=this.selectionType===Pt.multi||Tn||ni?ee.shiftKey?function(st,pn,ee,Ve,fn){const Tn=ee<Ve;for(let $r=0;$r<pn.length;$r++){const ni=pn[$r],Ri=$r>=Ve&&$r<=ee,Do=$r<=Ve&&$r>=ee;let gi={start:0,end:0};gi=Tn?{start:ee,end:Ve}:{start:Ve,end:ee+1},(Tn&&Do||!Tn&&Ri)&&$r>=gi.start&&$r<=gi.end&&st.push(ni)}return st}([],this.rows,Ve,this.prevIndex,this.getRowSelectedIdx.bind(this)):Ro(ee.ctrlKey||ee.metaKey||ni||Tn?[...this.selected]:[],fn,this.getRowSelectedIdx.bind(this)):Ro([],fn,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(Ri=Ri.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...Ri),this.prevIndex=Ve,this.select.emit({selected:Ri})}onActivate(ee,Ve){const{type:fn,event:Tn,row:$r}=ee,ni=this.selectionType===Pt.checkbox;!ni&&("click"===fn||"dblclick"===fn)||ni&&"checkbox"===fn?this.selectRow(Tn,Ve,$r):"keydown"===fn&&(Tn.keyCode===qi.return?this.selectRow(Tn,Ve,$r):this.onKeyboardFocus(ee)),this.activate.emit(ee)}onKeyboardFocus(ee){const{keyCode:Ve}=ee.event;if(Ve===qi.up||Ve===qi.down||Ve===qi.right||Ve===qi.left){const Tn=this.selectionType===Pt.cell;ee.cellElement&&Tn?Tn&&this.focusCell(ee.cellElement,ee.rowElement,Ve,ee.cellIndex):this.focusRow(ee.rowElement,Ve)}}focusRow(ee,Ve){const fn=this.getPrevNextRow(ee,Ve);fn&&fn.focus()}getPrevNextRow(ee,Ve){const fn=ee.parentElement;if(fn){let Tn;if(Ve===qi.up?Tn=fn.previousElementSibling:Ve===qi.down&&(Tn=fn.nextElementSibling),Tn&&Tn.children.length)return Tn.children[0]}}focusCell(ee,Ve,fn,Tn){let $r;if(fn===qi.left)$r=ee.previousElementSibling;else if(fn===qi.right)$r=ee.nextElementSibling;else if(fn===qi.up||fn===qi.down){const ni=this.getPrevNextRow(Ve,fn);if(ni){const Ri=ni.getElementsByClassName("datatable-body-cell");Ri.length&&($r=Ri[Tn])}}$r&&$r.focus()}getRowSelected(ee){return this.getRowSelectedIdx(ee,this.selected)>-1}getRowSelectedIdx(ee,Ve){if(!Ve||!Ve.length)return-1;const fn=this.rowIdentity(ee);return Ve.findIndex(Tn=>this.rowIdentity(Tn)===fn)}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-selection"]],inputs:{rows:"rows",selected:"selected",selectEnabled:"selectEnabled",selectionType:"selectionType",rowIdentity:"rowIdentity",selectCheck:"selectCheck"},outputs:{activate:"activate",select:"select"},ngContentSelectors:_,decls:1,vars:0,template:function(ee,Ve){1&ee&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),st})();function es(st){const pn=st.filter(ee=>!!ee);return!pn.length||pn.some(ee=>"number"!=typeof ee)?null:pn.reduce((ee,Ve)=>ee+Ve)}function ua(st){return null}let ds=(()=>{class st{constructor(){this.summaryRow={}}ngOnChanges(){!this.columns||!this.rows||(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(ee=>Object.assign(Object.assign({},ee),{cellTemplate:ee.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(ee=>!ee.summaryTemplate).forEach(ee=>{const Ve=this.rows.map(Tn=>Tn[ee.prop]),fn=this.getSummaryFunction(ee);this.summaryRow[ee.prop]=ee.pipe?ee.pipe.transform(fn(Ve)):fn(Ve)})}getSummaryFunction(ee){return void 0===ee.summaryFunc?es:null===ee.summaryFunc?ua:ee.summaryFunc}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275cmp=t.Xpm({type:st,selectors:[["datatable-summary-row"]],hostAttrs:[1,"datatable-summary-row"],inputs:{rows:"rows",columns:"columns",rowHeight:"rowHeight",offsetX:"offsetX",innerWidth:"innerWidth"},features:[t.TTD],decls:1,vars:1,consts:[["tabindex","-1",3,"innerWidth","offsetX","columns","rowHeight","row","rowIndex",4,"ngIf"],["tabindex","-1",3,"innerWidth","offsetX","columns","rowHeight","row","rowIndex"]],template:function(ee,Ve){1&ee&&t.YNc(0,Cn,1,6,"datatable-body-row",0),2&ee&&t.Q6J("ngIf",Ve.summaryRow&&Ve._internalColumns)},directives:[e.O5,to],encapsulation:2}),st})(),zo=(()=>{class st{static forRoot(ee){return{ngModule:st,providers:[{provide:"configuration",useValue:ee}]}}}return st.\u0275fac=function(ee){return new(ee||st)},st.\u0275mod=t.oAB({type:st}),st.\u0275inj=t.cJS({providers:[Kt,dn,Kn],imports:[[e.ez]]}),st})();"undefined"!=typeof document&&!document.elementsFromPoint&&(document.elementsFromPoint=function(st,pn){const ee=[],Ve=[];let fn,Tn,$r;for(;(fn=document.elementFromPoint(st,pn))&&-1===ee.indexOf(fn)&&null!=fn;)ee.push(fn),Ve.push({value:fn.style.getPropertyValue("pointer-events"),priority:fn.style.getPropertyPriority("pointer-events")}),fn.style.setProperty("pointer-events","none","important");for(Tn=Ve.length;$r=Ve[--Tn];)ee[Tn].style.setProperty("pointer-events",$r.value?$r.value:"",$r.priority);return ee})},67506:Ge=>{"use strict";function g(e,s,a){e instanceof RegExp&&(e=o(e,a)),s instanceof RegExp&&(s=o(s,a));var l=t(e,s,a);return l&&{start:l[0],end:l[1],pre:a.slice(0,l[0]),body:a.slice(l[0]+e.length,l[1]),post:a.slice(l[1]+s.length)}}function o(e,s){var a=s.match(e);return a?a[0]:null}function t(e,s,a){var l,u,h,_,m,b=a.indexOf(e),C=a.indexOf(s,b+1),D=b;if(b>=0&&C>0){if(e===s)return[b,C];for(l=[],h=a.length;D>=0&&!m;)D==b?(l.push(D),b=a.indexOf(e,D+1)):1==l.length?m=[l.pop(),C]:((u=l.pop())<h&&(h=u,_=C),C=a.indexOf(s,D+1)),D=b<C&&b>=0?b:C;l.length&&(m=[h,_])}return m}Ge.exports=g,g.range=t},33512:(Ge,g,o)=>{var t=o(2665),e=o(67506);Ge.exports=function(I){return I?("{}"===I.substr(0,2)&&(I="\\{\\}"+I.substr(2)),M(function(I){return I.split("\\\\").join(s).split("\\{").join(a).split("\\}").join(l).split("\\,").join(u).split("\\.").join(h)}(I),!0).map(b)):[]};var s="\0SLASH"+Math.random()+"\0",a="\0OPEN"+Math.random()+"\0",l="\0CLOSE"+Math.random()+"\0",u="\0COMMA"+Math.random()+"\0",h="\0PERIOD"+Math.random()+"\0";function _(I){return parseInt(I,10)==I?parseInt(I,10):I.charCodeAt(0)}function b(I){return I.split(s).join("\\").split(a).join("{").split(l).join("}").split(u).join(",").split(h).join(".")}function C(I){if(!I)return[""];var J=[],Y=e("{","}",I);if(!Y)return I.split(",");var oe=Y.body,fe=Y.post,ne=Y.pre.split(",");ne[ne.length-1]+="{"+oe+"}";var he=C(fe);return fe.length&&(ne[ne.length-1]+=he.shift(),ne.push.apply(ne,he)),J.push.apply(J,ne),J}function j(I){return"{"+I+"}"}function H(I){return/^-?0\d/.test(I)}function z(I,J){return I<=J}function U(I,J){return I>=J}function M(I,J){var Y=[],ie=e("{","}",I);if(!ie||/\$$/.test(ie.pre))return[I];var ce,oe=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(ie.body),fe=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(ie.body),ne=oe||fe,he=ie.body.indexOf(",")>=0;if(!ne&&!he)return ie.post.match(/,.*\}/)?M(I=ie.pre+"{"+ie.body+l+ie.post):[I];if(ne)ce=ie.body.split(/\.\./);else if(1===(ce=C(ie.body)).length&&1===(ce=M(ce[0],!1).map(j)).length)return(Me=ie.post.length?M(ie.post,!1):[""]).map(function(dt){return ie.pre+ce[0]+dt});var Oe,Ae=ie.pre,Me=ie.post.length?M(ie.post,!1):[""];if(ne){var be=_(ce[0]),ue=_(ce[1]),He=Math.max(ce[0].length,ce[1].length),$e=3==ce.length?Math.abs(_(ce[2])):1,F=z;ue<be&&($e*=-1,F=U);var Et=ce.some(H);Oe=[];for(var lt=be;F(lt,ue);lt+=$e){var nn;if(fe)"\\"===(nn=String.fromCharCode(lt))&&(nn="");else if(nn=String(lt),Et){var St=He-nn.length;if(St>0){var At=new Array(St+1).join("0");nn=lt<0?"-"+At+nn.slice(1):At+nn}}Oe.push(nn)}}else Oe=t(ce,function(Ie){return M(Ie,!1)});for(var Qe=0;Qe<Oe.length;Qe++)for(var It=0;It<Me.length;It++){var ae=Ae+Oe[Qe]+Me[It];(!J||ne||ae)&&Y.push(ae)}return Y}},72318:Ge=>{var g=!("undefined"==typeof window||!window.document||!window.document.createElement);Ge.exports=g},6823:function(Ge,g,o){Ge.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var a={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},l=function(p,E){return p(E={exports:{}},E.exports),E.exports}(function(p){var E={};for(var N in a)a.hasOwnProperty(N)&&(E[a[N]]=N);var $=p.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Q in $)if($.hasOwnProperty(Q)){if(!("channels"in $[Q]))throw new Error("missing channels property: "+Q);if(!("labels"in $[Q]))throw new Error("missing channel labels property: "+Q);if($[Q].labels.length!==$[Q].channels)throw new Error("channel and label counts mismatch: "+Q);var de=$[Q].channels,ve=$[Q].labels;delete $[Q].channels,delete $[Q].labels,Object.defineProperty($[Q],"channels",{value:de}),Object.defineProperty($[Q],"labels",{value:ve})}function qe(De,_t){return Math.pow(De[0]-_t[0],2)+Math.pow(De[1]-_t[1],2)+Math.pow(De[2]-_t[2],2)}$.rgb.hsl=function(De){var Tr,Pi,_t=De[0]/255,Yt=De[1]/255,Zt=De[2]/255,wn=Math.min(_t,Yt,Zt),cr=Math.max(_t,Yt,Zt),sr=cr-wn;return cr===wn?Tr=0:_t===cr?Tr=(Yt-Zt)/sr:Yt===cr?Tr=2+(Zt-_t)/sr:Zt===cr&&(Tr=4+(_t-Yt)/sr),(Tr=Math.min(60*Tr,360))<0&&(Tr+=360),Pi=(wn+cr)/2,[Tr,100*(cr===wn?0:Pi<=.5?sr/(cr+wn):sr/(2-cr-wn)),100*Pi]},$.rgb.hsv=function(De){var _t,Yt,Zt,wn,cr,sr=De[0]/255,Tr=De[1]/255,Yr=De[2]/255,Pi=Math.max(sr,Tr,Yr),yo=Pi-Math.min(sr,Tr,Yr),Co=function(Xo){return(Pi-Xo)/6/yo+.5};return 0===yo?wn=cr=0:(cr=yo/Pi,_t=Co(sr),Yt=Co(Tr),Zt=Co(Yr),sr===Pi?wn=Zt-Yt:Tr===Pi?wn=1/3+_t-Zt:Yr===Pi&&(wn=2/3+Yt-_t),wn<0?wn+=1:wn>1&&(wn-=1)),[360*wn,100*cr,100*Pi]},$.rgb.hwb=function(De){var _t=De[0],Yt=De[1],Zt=De[2];return[$.rgb.hsl(De)[0],1/255*Math.min(_t,Math.min(Yt,Zt))*100,100*(Zt=1-1/255*Math.max(_t,Math.max(Yt,Zt)))]},$.rgb.cmyk=function(De){var Tr,_t=De[0]/255,Yt=De[1]/255,Zt=De[2]/255;return[100*((1-_t-(Tr=Math.min(1-_t,1-Yt,1-Zt)))/(1-Tr)||0),100*((1-Yt-Tr)/(1-Tr)||0),100*((1-Zt-Tr)/(1-Tr)||0),100*Tr]},$.rgb.keyword=function(De){var _t=E[De];if(_t)return _t;var Zt,Yt=1/0;for(var wn in a)if(a.hasOwnProperty(wn)){var sr=qe(De,a[wn]);sr<Yt&&(Yt=sr,Zt=wn)}return Zt},$.keyword.rgb=function(De){return a[De]},$.rgb.xyz=function(De){var _t=De[0]/255,Yt=De[1]/255,Zt=De[2]/255;return[100*(.4124*(_t=_t>.04045?Math.pow((_t+.055)/1.055,2.4):_t/12.92)+.3576*(Yt=Yt>.04045?Math.pow((Yt+.055)/1.055,2.4):Yt/12.92)+.1805*(Zt=Zt>.04045?Math.pow((Zt+.055)/1.055,2.4):Zt/12.92)),100*(.2126*_t+.7152*Yt+.0722*Zt),100*(.0193*_t+.1192*Yt+.9505*Zt)]},$.rgb.lab=function(De){var _t=$.rgb.xyz(De),Yt=_t[0],Zt=_t[1],wn=_t[2];return Zt/=100,wn/=108.883,Yt=(Yt/=95.047)>.008856?Math.pow(Yt,1/3):7.787*Yt+16/116,[116*(Zt=Zt>.008856?Math.pow(Zt,1/3):7.787*Zt+16/116)-16,500*(Yt-Zt),200*(Zt-(wn=wn>.008856?Math.pow(wn,1/3):7.787*wn+16/116))]},$.hsl.rgb=function(De){var wn,cr,sr,Tr,Yr,_t=De[0]/360,Yt=De[1]/100,Zt=De[2]/100;if(0===Yt)return[Yr=255*Zt,Yr,Yr];wn=2*Zt-(cr=Zt<.5?Zt*(1+Yt):Zt+Yt-Zt*Yt),Tr=[0,0,0];for(var Pi=0;Pi<3;Pi++)(sr=_t+1/3*-(Pi-1))<0&&sr++,sr>1&&sr--,Tr[Pi]=255*(Yr=6*sr<1?wn+6*(cr-wn)*sr:2*sr<1?cr:3*sr<2?wn+(cr-wn)*(2/3-sr)*6:wn);return Tr},$.hsl.hsv=function(De){var _t=De[0],Yt=De[1]/100,Zt=De[2]/100,wn=Yt,cr=Math.max(Zt,.01);return Yt*=(Zt*=2)<=1?Zt:2-Zt,wn*=cr<=1?cr:2-cr,[_t,100*(0===Zt?2*wn/(cr+wn):2*Yt/(Zt+Yt)),(Zt+Yt)/2*100]},$.hsv.rgb=function(De){var _t=De[0]/60,Yt=De[1]/100,Zt=De[2]/100,wn=Math.floor(_t)%6,cr=_t-Math.floor(_t),sr=255*Zt*(1-Yt),Tr=255*Zt*(1-Yt*cr),Yr=255*Zt*(1-Yt*(1-cr));switch(Zt*=255,wn){case 0:return[Zt,Yr,sr];case 1:return[Tr,Zt,sr];case 2:return[sr,Zt,Yr];case 3:return[sr,Tr,Zt];case 4:return[Yr,sr,Zt];case 5:return[Zt,sr,Tr]}},$.hsv.hsl=function(De){var cr,sr,Tr,_t=De[0],Yt=De[1]/100,Zt=De[2]/100,wn=Math.max(Zt,.01);return Tr=(2-Yt)*Zt,sr=Yt*wn,[_t,100*(sr=(sr/=(cr=(2-Yt)*wn)<=1?cr:2-cr)||0),100*(Tr/=2)]},$.hwb.rgb=function(De){var cr,sr,Tr,Yr,Pi,yo,Co,_t=De[0]/360,Yt=De[1]/100,Zt=De[2]/100,wn=Yt+Zt;switch(wn>1&&(Yt/=wn,Zt/=wn),Tr=6*_t-(cr=Math.floor(6*_t)),0!=(1&cr)&&(Tr=1-Tr),Yr=Yt+Tr*((sr=1-Zt)-Yt),cr){default:case 6:case 0:Pi=sr,yo=Yr,Co=Yt;break;case 1:Pi=Yr,yo=sr,Co=Yt;break;case 2:Pi=Yt,yo=sr,Co=Yr;break;case 3:Pi=Yt,yo=Yr,Co=sr;break;case 4:Pi=Yr,yo=Yt,Co=sr;break;case 5:Pi=sr,yo=Yt,Co=Yr}return[255*Pi,255*yo,255*Co]},$.cmyk.rgb=function(De){var Yt=De[1]/100,Zt=De[2]/100,wn=De[3]/100;return[255*(1-Math.min(1,De[0]/100*(1-wn)+wn)),255*(1-Math.min(1,Yt*(1-wn)+wn)),255*(1-Math.min(1,Zt*(1-wn)+wn))]},$.xyz.rgb=function(De){var wn,cr,sr,_t=De[0]/100,Yt=De[1]/100,Zt=De[2]/100;return cr=-.9689*_t+1.8758*Yt+.0415*Zt,sr=.0557*_t+-.204*Yt+1.057*Zt,wn=(wn=3.2406*_t+-1.5372*Yt+-.4986*Zt)>.0031308?1.055*Math.pow(wn,1/2.4)-.055:12.92*wn,cr=cr>.0031308?1.055*Math.pow(cr,1/2.4)-.055:12.92*cr,sr=sr>.0031308?1.055*Math.pow(sr,1/2.4)-.055:12.92*sr,[255*(wn=Math.min(Math.max(0,wn),1)),255*(cr=Math.min(Math.max(0,cr),1)),255*(sr=Math.min(Math.max(0,sr),1))]},$.xyz.lab=function(De){var _t=De[0],Yt=De[1],Zt=De[2];return Yt/=100,Zt/=108.883,_t=(_t/=95.047)>.008856?Math.pow(_t,1/3):7.787*_t+16/116,[116*(Yt=Yt>.008856?Math.pow(Yt,1/3):7.787*Yt+16/116)-16,500*(_t-Yt),200*(Yt-(Zt=Zt>.008856?Math.pow(Zt,1/3):7.787*Zt+16/116))]},$.lab.xyz=function(De){var wn,cr,sr;wn=De[1]/500+(cr=(De[0]+16)/116),sr=cr-De[2]/200;var Tr=Math.pow(cr,3),Yr=Math.pow(wn,3),Pi=Math.pow(sr,3);return cr=Tr>.008856?Tr:(cr-16/116)/7.787,wn=Yr>.008856?Yr:(wn-16/116)/7.787,sr=Pi>.008856?Pi:(sr-16/116)/7.787,[wn*=95.047,cr*=100,sr*=108.883]},$.lab.lch=function(De){var cr,_t=De[0],Yt=De[1],Zt=De[2];return(cr=360*Math.atan2(Zt,Yt)/2/Math.PI)<0&&(cr+=360),[_t,Math.sqrt(Yt*Yt+Zt*Zt),cr]},$.lch.lab=function(De){var sr,Yt=De[1];return sr=De[2]/360*2*Math.PI,[De[0],Yt*Math.cos(sr),Yt*Math.sin(sr)]},$.rgb.ansi16=function(De){var _t=De[0],Yt=De[1],Zt=De[2],wn=1 in arguments?arguments[1]:$.rgb.hsv(De)[2];if(0===(wn=Math.round(wn/50)))return 30;var cr=30+(Math.round(Zt/255)<<2|Math.round(Yt/255)<<1|Math.round(_t/255));return 2===wn&&(cr+=60),cr},$.hsv.ansi16=function(De){return $.rgb.ansi16($.hsv.rgb(De),De[2])},$.rgb.ansi256=function(De){var _t=De[0],Yt=De[1],Zt=De[2];return _t===Yt&&Yt===Zt?_t<8?16:_t>248?231:Math.round((_t-8)/247*24)+232:16+36*Math.round(_t/255*5)+6*Math.round(Yt/255*5)+Math.round(Zt/255*5)},$.ansi16.rgb=function(De){var _t=De%10;if(0===_t||7===_t)return De>50&&(_t+=3.5),[_t=_t/10.5*255,_t,_t];var Yt=.5*(1+~~(De>50));return[(1&_t)*Yt*255,(_t>>1&1)*Yt*255,(_t>>2&1)*Yt*255]},$.ansi256.rgb=function(De){if(De>=232){var _t=10*(De-232)+8;return[_t,_t,_t]}var Yt;return De-=16,[Math.floor(De/36)/5*255,Math.floor((Yt=De%36)/6)/5*255,Yt%6/5*255]},$.rgb.hex=function(De){var Yt=(((255&Math.round(De[0]))<<16)+((255&Math.round(De[1]))<<8)+(255&Math.round(De[2]))).toString(16).toUpperCase();return"000000".substring(Yt.length)+Yt},$.hex.rgb=function(De){var _t=De.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!_t)return[0,0,0];var Yt=_t[0];3===_t[0].length&&(Yt=Yt.split("").map(function(Tr){return Tr+Tr}).join(""));var Zt=parseInt(Yt,16);return[Zt>>16&255,Zt>>8&255,255&Zt]},$.rgb.hcg=function(De){var Yr,_t=De[0]/255,Yt=De[1]/255,Zt=De[2]/255,wn=Math.max(Math.max(_t,Yt),Zt),cr=Math.min(Math.min(_t,Yt),Zt),sr=wn-cr;return Yr=sr<=0?0:wn===_t?(Yt-Zt)/sr%6:wn===Yt?2+(Zt-_t)/sr:4+(_t-Yt)/sr+4,Yr/=6,[360*(Yr%=1),100*sr,100*(sr<1?cr/(1-sr):0)]},$.hsl.hcg=function(De){var Zt,_t=De[1]/100,Yt=De[2]/100,wn=0;return(Zt=Yt<.5?2*_t*Yt:2*_t*(1-Yt))<1&&(wn=(Yt-.5*Zt)/(1-Zt)),[De[0],100*Zt,100*wn]},$.hsv.hcg=function(De){var Yt=De[2]/100,Zt=De[1]/100*Yt,wn=0;return Zt<1&&(wn=(Yt-Zt)/(1-Zt)),[De[0],100*Zt,100*wn]},$.hcg.rgb=function(De){var Yt=De[1]/100,Zt=De[2]/100;if(0===Yt)return[255*Zt,255*Zt,255*Zt];var Yr,wn=[0,0,0],cr=De[0]/360%1*6,sr=cr%1,Tr=1-sr;switch(Math.floor(cr)){case 0:wn[0]=1,wn[1]=sr,wn[2]=0;break;case 1:wn[0]=Tr,wn[1]=1,wn[2]=0;break;case 2:wn[0]=0,wn[1]=1,wn[2]=sr;break;case 3:wn[0]=0,wn[1]=Tr,wn[2]=1;break;case 4:wn[0]=sr,wn[1]=0,wn[2]=1;break;default:wn[0]=1,wn[1]=0,wn[2]=Tr}return[255*(Yt*wn[0]+(Yr=(1-Yt)*Zt)),255*(Yt*wn[1]+Yr),255*(Yt*wn[2]+Yr)]},$.hcg.hsv=function(De){var _t=De[1]/100,Zt=_t+De[2]/100*(1-_t),wn=0;return Zt>0&&(wn=_t/Zt),[De[0],100*wn,100*Zt]},$.hcg.hsl=function(De){var _t=De[1]/100,Zt=De[2]/100*(1-_t)+.5*_t,wn=0;return Zt>0&&Zt<.5?wn=_t/(2*Zt):Zt>=.5&&Zt<1&&(wn=_t/(2*(1-Zt))),[De[0],100*wn,100*Zt]},$.hcg.hwb=function(De){var _t=De[1]/100,Zt=_t+De[2]/100*(1-_t);return[De[0],100*(Zt-_t),100*(1-Zt)]},$.hwb.hcg=function(De){var Zt=1-De[2]/100,wn=Zt-De[1]/100,cr=0;return wn<1&&(cr=(Zt-wn)/(1-wn)),[De[0],100*wn,100*cr]},$.apple.rgb=function(De){return[De[0]/65535*255,De[1]/65535*255,De[2]/65535*255]},$.rgb.apple=function(De){return[De[0]/255*65535,De[1]/255*65535,De[2]/255*65535]},$.gray.rgb=function(De){return[De[0]/100*255,De[0]/100*255,De[0]/100*255]},$.gray.hsl=$.gray.hsv=function(De){return[0,0,De[0]]},$.gray.hwb=function(De){return[0,100,De[0]]},$.gray.cmyk=function(De){return[0,0,0,De[0]]},$.gray.lab=function(De){return[De[0],0,0]},$.gray.hex=function(De){var _t=255&Math.round(De[0]/100*255),Zt=((_t<<16)+(_t<<8)+_t).toString(16).toUpperCase();return"000000".substring(Zt.length)+Zt},$.rgb.gray=function(De){return[(De[0]+De[1]+De[2])/3/255*100]}});function ie(p){var E=function(){for(var p={},E=Object.keys(l),N=E.length,$=0;$<N;$++)p[E[$]]={distance:-1,parent:null};return p}(),N=[p];for(E[p].distance=0;N.length;)for(var $=N.pop(),Q=Object.keys(l[$]),de=Q.length,ve=0;ve<de;ve++){var qe=Q[ve],De=E[qe];-1===De.distance&&(De.distance=E[$].distance+1,De.parent=$,N.unshift(qe))}return E}function oe(p,E){return function(N){return E(p(N))}}function fe(p,E){for(var N=[E[p].parent,p],$=l[E[p].parent][p],Q=E[p].parent;E[Q].parent;)N.unshift(E[Q].parent),$=oe(l[E[Q].parent][Q],$),Q=E[Q].parent;return $.conversion=N,$}var he={};Object.keys(l).forEach(function(p){he[p]={},Object.defineProperty(he[p],"channels",{value:l[p].channels}),Object.defineProperty(he[p],"labels",{value:l[p].labels});var E=function(p){for(var E=ie(p),N={},$=Object.keys(E),Q=$.length,de=0;de<Q;de++){var ve=$[de];null!==E[ve].parent&&(N[ve]=fe(ve,E))}return N}(p);Object.keys(E).forEach(function($){var Q=E[$];he[p][$]=function(p){var E=function(N){if(null==N)return N;arguments.length>1&&(N=Array.prototype.slice.call(arguments));var $=p(N);if("object"==typeof $)for(var Q=$.length,de=0;de<Q;de++)$[de]=Math.round($[de]);return $};return"conversion"in p&&(E.conversion=p.conversion),E}(Q),he[p][$].raw=function(p){var E=function(N){return null==N?N:(arguments.length>1&&(N=Array.prototype.slice.call(arguments)),p(N))};return"conversion"in p&&(E.conversion=p.conversion),E}(Q)})});var Oe=he,be={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},ue={getRgba:He,getHsla:$e,getRgb:function(p){var E=He(p);return E&&E.slice(0,3)},getHsl:function(p){var E=$e(p);return E&&E.slice(0,3)},getHwb:F,getAlpha:function(p){var E=He(p);return E||(E=$e(p))||(E=F(p))?E[3]:void 0},hexString:function(p,E){return E=void 0!==E&&3===p.length?E:p[3],"#"+ln(p[0])+ln(p[1])+ln(p[2])+(E>=0&&E<1?ln(Math.round(255*E)):"")},rgbString:function(p,E){return E<1||p[3]&&p[3]<1?At(p,E):"rgb("+p[0]+", "+p[1]+", "+p[2]+")"},rgbaString:At,percentString:function(p,E){return E<1||p[3]&&p[3]<1?It(p,E):"rgb("+Math.round(p[0]/255*100)+"%, "+Math.round(p[1]/255*100)+"%, "+Math.round(p[2]/255*100)+"%)"},percentaString:It,hslString:function(p,E){return E<1||p[3]&&p[3]<1?Ie(p,E):"hsl("+p[0]+", "+p[1]+"%, "+p[2]+"%)"},hslaString:Ie,hwbString:function(p,E){return void 0===E&&(E=void 0!==p[3]?p[3]:1),"hwb("+p[0]+", "+p[1]+"%, "+p[2]+"%"+(void 0!==E&&1!==E?", "+E:"")+")"},keyword:function(p){return ar[p.slice(0,3)]}};function He(p){if(p){var ve=[0,0,0],qe=1,De=p.match(/^#([a-fA-F0-9]{3,4})$/i),_t="";if(De){_t=(De=De[1])[3];for(var Yt=0;Yt<ve.length;Yt++)ve[Yt]=parseInt(De[Yt]+De[Yt],16);_t&&(qe=Math.round(parseInt(_t+_t,16)/255*100)/100)}else if(De=p.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(_t=De[2],De=De[1],Yt=0;Yt<ve.length;Yt++)ve[Yt]=parseInt(De.slice(2*Yt,2*Yt+2),16);_t&&(qe=Math.round(parseInt(_t,16)/255*100)/100)}else if(De=p.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(Yt=0;Yt<ve.length;Yt++)ve[Yt]=parseInt(De[Yt+1]);qe=parseFloat(De[4])}else if(De=p.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(Yt=0;Yt<ve.length;Yt++)ve[Yt]=Math.round(2.55*parseFloat(De[Yt+1]));qe=parseFloat(De[4])}else if(De=p.match(/(\w+)/)){if("transparent"==De[1])return[0,0,0,0];if(!(ve=be[De[1]]))return}for(Yt=0;Yt<ve.length;Yt++)ve[Yt]=zt(ve[Yt],0,255);return qe=qe||0==qe?zt(qe,0,1):1,ve[3]=qe,ve}}function $e(p){if(p){var N=p.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(N){var $=parseFloat(N[4]);return[zt(parseInt(N[1]),0,360),zt(parseFloat(N[2]),0,100),zt(parseFloat(N[3]),0,100),zt(isNaN($)?1:$,0,1)]}}}function F(p){if(p){var N=p.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(N){var $=parseFloat(N[4]);return[zt(parseInt(N[1]),0,360),zt(parseFloat(N[2]),0,100),zt(parseFloat(N[3]),0,100),zt(isNaN($)?1:$,0,1)]}}}function At(p,E){return void 0===E&&(E=void 0!==p[3]?p[3]:1),"rgba("+p[0]+", "+p[1]+", "+p[2]+", "+E+")"}function It(p,E){return"rgba("+Math.round(p[0]/255*100)+"%, "+Math.round(p[1]/255*100)+"%, "+Math.round(p[2]/255*100)+"%, "+(E||p[3]||1)+")"}function Ie(p,E){return void 0===E&&(E=void 0!==p[3]?p[3]:1),"hsla("+p[0]+", "+p[1]+"%, "+p[2]+"%, "+E+")"}function zt(p,E,N){return Math.min(Math.max(E,p),N)}function ln(p){var E=p.toString(16).toUpperCase();return E.length<2?"0"+E:E}var ar={};for(var Ln in be)ar[be[Ln]]=Ln;var Rn=function(p){return p instanceof Rn?p:this instanceof Rn?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof p?(E=ue.getRgba(p))?this.setValues("rgb",E):(E=ue.getHsla(p))?this.setValues("hsl",E):(E=ue.getHwb(p))&&this.setValues("hwb",E):"object"==typeof p&&(void 0!==(E=p).r||void 0!==E.red?this.setValues("rgb",E):void 0!==E.l||void 0!==E.lightness?this.setValues("hsl",E):void 0!==E.v||void 0!==E.value?this.setValues("hsv",E):void 0!==E.w||void 0!==E.whiteness?this.setValues("hwb",E):(void 0!==E.c||void 0!==E.cyan)&&this.setValues("cmyk",E)))):new Rn(p);var E};Rn.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var p=this.values;return 1!==p.alpha?p.hwb.concat([p.alpha]):p.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var p=this.values;return p.rgb.concat([p.alpha])},hslaArray:function(){var p=this.values;return p.hsl.concat([p.alpha])},alpha:function(p){return void 0===p?this.values.alpha:(this.setValues("alpha",p),this)},red:function(p){return this.setChannel("rgb",0,p)},green:function(p){return this.setChannel("rgb",1,p)},blue:function(p){return this.setChannel("rgb",2,p)},hue:function(p){return p&&(p=(p%=360)<0?360+p:p),this.setChannel("hsl",0,p)},saturation:function(p){return this.setChannel("hsl",1,p)},lightness:function(p){return this.setChannel("hsl",2,p)},saturationv:function(p){return this.setChannel("hsv",1,p)},whiteness:function(p){return this.setChannel("hwb",1,p)},blackness:function(p){return this.setChannel("hwb",2,p)},value:function(p){return this.setChannel("hsv",2,p)},cyan:function(p){return this.setChannel("cmyk",0,p)},magenta:function(p){return this.setChannel("cmyk",1,p)},yellow:function(p){return this.setChannel("cmyk",2,p)},black:function(p){return this.setChannel("cmyk",3,p)},hexString:function(){return ue.hexString(this.values.rgb)},rgbString:function(){return ue.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return ue.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return ue.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return ue.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return ue.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return ue.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return ue.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var p=this.values.rgb;return p[0]<<16|p[1]<<8|p[2]},luminosity:function(){for(var p=this.values.rgb,E=[],N=0;N<p.length;N++){var $=p[N]/255;E[N]=$<=.03928?$/12.92:Math.pow(($+.055)/1.055,2.4)}return.2126*E[0]+.7152*E[1]+.0722*E[2]},contrast:function(p){var E=this.luminosity(),N=p.luminosity();return E>N?(E+.05)/(N+.05):(N+.05)/(E+.05)},level:function(p){var E=this.contrast(p);return E>=7.1?"AAA":E>=4.5?"AA":""},dark:function(){var p=this.values.rgb;return(299*p[0]+587*p[1]+114*p[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var p=[],E=0;E<3;E++)p[E]=255-this.values.rgb[E];return this.setValues("rgb",p),this},lighten:function(p){var E=this.values.hsl;return E[2]+=E[2]*p,this.setValues("hsl",E),this},darken:function(p){var E=this.values.hsl;return E[2]-=E[2]*p,this.setValues("hsl",E),this},saturate:function(p){var E=this.values.hsl;return E[1]+=E[1]*p,this.setValues("hsl",E),this},desaturate:function(p){var E=this.values.hsl;return E[1]-=E[1]*p,this.setValues("hsl",E),this},whiten:function(p){var E=this.values.hwb;return E[1]+=E[1]*p,this.setValues("hwb",E),this},blacken:function(p){var E=this.values.hwb;return E[2]+=E[2]*p,this.setValues("hwb",E),this},greyscale:function(){var p=this.values.rgb,E=.3*p[0]+.59*p[1]+.11*p[2];return this.setValues("rgb",[E,E,E]),this},clearer:function(p){var E=this.values.alpha;return this.setValues("alpha",E-E*p),this},opaquer:function(p){var E=this.values.alpha;return this.setValues("alpha",E+E*p),this},rotate:function(p){var E=this.values.hsl,N=(E[0]+p)%360;return E[0]=N<0?360+N:N,this.setValues("hsl",E),this},mix:function(p,E){var N=this,$=p,Q=void 0===E?.5:E,de=2*Q-1,ve=N.alpha()-$.alpha(),qe=((de*ve==-1?de:(de+ve)/(1+de*ve))+1)/2,De=1-qe;return this.rgb(qe*N.red()+De*$.red(),qe*N.green()+De*$.green(),qe*N.blue()+De*$.blue()).alpha(N.alpha()*Q+$.alpha()*(1-Q))},toJSON:function(){return this.rgb()},clone:function(){var $,Q,p=new Rn,E=this.values,N=p.values;for(var de in E)E.hasOwnProperty(de)&&("[object Array]"===(Q={}.toString.call($=E[de]))?N[de]=$.slice(0):"[object Number]"===Q?N[de]=$:console.error("unexpected color value:",$));return p}},Rn.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Rn.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Rn.prototype.getValues=function(p){for(var E=this.values,N={},$=0;$<p.length;$++)N[p.charAt($)]=E[p][$];return 1!==E.alpha&&(N.a=E.alpha),N},Rn.prototype.setValues=function(p,E){var ve,De,N=this.values,$=this.spaces,Q=this.maxes,de=1;if(this.valid=!0,"alpha"===p)de=E;else if(E.length)N[p]=E.slice(0,p.length),de=E[p.length];else if(void 0!==E[p.charAt(0)]){for(ve=0;ve<p.length;ve++)N[p][ve]=E[p.charAt(ve)];de=E.a}else if(void 0!==E[$[p][0]]){var qe=$[p];for(ve=0;ve<p.length;ve++)N[p][ve]=E[qe[ve]];de=E.alpha}if(N.alpha=Math.max(0,Math.min(1,void 0===de?N.alpha:de)),"alpha"===p)return!1;for(ve=0;ve<p.length;ve++)De=Math.max(0,Math.min(Q[p][ve],N[p][ve])),N[p][ve]=Math.round(De);for(var _t in $)_t!==p&&(N[_t]=Oe[p][_t](N[p]));return!0},Rn.prototype.setSpace=function(p,E){var N=E[0];return void 0===N?this.getValues(p):("number"==typeof N&&(N=Array.prototype.slice.call(E)),this.setValues(p,N),this)},Rn.prototype.setChannel=function(p,E,N){var $=this.values[p];return void 0===N?$[E]:(N===$[E]||($[E]=N,this.setValues(p,$)),this)},"undefined"!=typeof window&&(window.Color=Rn);var er=Rn;function Mn(p){return-1===["__proto__","prototype","constructor"].indexOf(p)}var p,Ht={noop:function(){},uid:(p=0,function(){return p++}),isNullOrUndef:function(p){return null==p},isArray:function(p){if(Array.isArray&&Array.isArray(p))return!0;var E=Object.prototype.toString.call(p);return"[object"===E.substr(0,7)&&"Array]"===E.substr(-6)},isObject:function(p){return null!==p&&"[object Object]"===Object.prototype.toString.call(p)},isFinite:function(p){return("number"==typeof p||p instanceof Number)&&isFinite(p)},valueOrDefault:function(p,E){return void 0===p?E:p},valueAtIndexOrDefault:function(p,E,N){return Ht.valueOrDefault(Ht.isArray(p)?p[E]:p,N)},callback:function(p,E,N){if(p&&"function"==typeof p.call)return p.apply(N,E)},each:function(p,E,N,$){var Q,de,ve;if(Ht.isArray(p))if(de=p.length,$)for(Q=de-1;Q>=0;Q--)E.call(N,p[Q],Q);else for(Q=0;Q<de;Q++)E.call(N,p[Q],Q);else if(Ht.isObject(p))for(de=(ve=Object.keys(p)).length,Q=0;Q<de;Q++)E.call(N,p[ve[Q]],ve[Q])},arrayEquals:function(p,E){var N,$,Q,de;if(!p||!E||p.length!==E.length)return!1;for(N=0,$=p.length;N<$;++N)if(de=E[N],(Q=p[N])instanceof Array&&de instanceof Array){if(!Ht.arrayEquals(Q,de))return!1}else if(Q!==de)return!1;return!0},clone:function(p){if(Ht.isArray(p))return p.map(Ht.clone);if(Ht.isObject(p)){for(var E=Object.create(p),N=Object.keys(p),$=N.length,Q=0;Q<$;++Q)E[N[Q]]=Ht.clone(p[N[Q]]);return E}return p},_merger:function(p,E,N,$){if(Mn(p)){var Q=E[p],de=N[p];Ht.isObject(Q)&&Ht.isObject(de)?Ht.merge(Q,de,$):E[p]=Ht.clone(de)}},_mergerIf:function(p,E,N){if(Mn(p)){var $=E[p],Q=N[p];Ht.isObject($)&&Ht.isObject(Q)?Ht.mergeIf($,Q):E.hasOwnProperty(p)||(E[p]=Ht.clone(Q))}},merge:function(p,E,N){var de,ve,qe,De,_t,$=Ht.isArray(E)?E:[E],Q=$.length;if(!Ht.isObject(p))return p;for(de=(N=N||{}).merger||Ht._merger,ve=0;ve<Q;++ve)if(Ht.isObject(E=$[ve]))for(_t=0,De=(qe=Object.keys(E)).length;_t<De;++_t)de(qe[_t],p,E,N);return p},mergeIf:function(p,E){return Ht.merge(p,E,{merger:Ht._mergerIf})},extend:Object.assign||function(p){return Ht.merge(p,[].slice.call(arguments,1),{merger:function(E,N,$){N[E]=$[E]}})},inherits:function(p){var E=this,N=p&&p.hasOwnProperty("constructor")?p.constructor:function(){return E.apply(this,arguments)},$=function(){this.constructor=N};return $.prototype=E.prototype,N.prototype=new $,N.extend=Ht.inherits,p&&Ht.extend(N.prototype,p),N.__super__=E.prototype,N},_deprecated:function(p,E,N,$){void 0!==E&&console.warn(p+': "'+N+'" is deprecated. Please use "'+$+'" instead')}},tr=Ht;Ht.callCallback=Ht.callback,Ht.indexOf=function(p,E,N){return Array.prototype.indexOf.call(p,E,N)},Ht.getValueOrDefault=Ht.valueOrDefault,Ht.getValueAtIndexOrDefault=Ht.valueAtIndexOrDefault;var Yn={linear:function(p){return p},easeInQuad:function(p){return p*p},easeOutQuad:function(p){return-p*(p-2)},easeInOutQuad:function(p){return(p/=.5)<1?.5*p*p:-.5*(--p*(p-2)-1)},easeInCubic:function(p){return p*p*p},easeOutCubic:function(p){return(p-=1)*p*p+1},easeInOutCubic:function(p){return(p/=.5)<1?.5*p*p*p:.5*((p-=2)*p*p+2)},easeInQuart:function(p){return p*p*p*p},easeOutQuart:function(p){return-((p-=1)*p*p*p-1)},easeInOutQuart:function(p){return(p/=.5)<1?.5*p*p*p*p:-.5*((p-=2)*p*p*p-2)},easeInQuint:function(p){return p*p*p*p*p},easeOutQuint:function(p){return(p-=1)*p*p*p*p+1},easeInOutQuint:function(p){return(p/=.5)<1?.5*p*p*p*p*p:.5*((p-=2)*p*p*p*p+2)},easeInSine:function(p){return 1-Math.cos(p*(Math.PI/2))},easeOutSine:function(p){return Math.sin(p*(Math.PI/2))},easeInOutSine:function(p){return-.5*(Math.cos(Math.PI*p)-1)},easeInExpo:function(p){return 0===p?0:Math.pow(2,10*(p-1))},easeOutExpo:function(p){return 1===p?1:1-Math.pow(2,-10*p)},easeInOutExpo:function(p){return 0===p?0:1===p?1:(p/=.5)<1?.5*Math.pow(2,10*(p-1)):.5*(2-Math.pow(2,-10*--p))},easeInCirc:function(p){return p>=1?p:-(Math.sqrt(1-p*p)-1)},easeOutCirc:function(p){return Math.sqrt(1-(p-=1)*p)},easeInOutCirc:function(p){return(p/=.5)<1?-.5*(Math.sqrt(1-p*p)-1):.5*(Math.sqrt(1-(p-=2)*p)+1)},easeInElastic:function(p){var E=1.70158,N=0,$=1;return 0===p?0:1===p?1:(N||(N=.3),$<1?($=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/$),-$*Math.pow(2,10*(p-=1))*Math.sin((p-E)*(2*Math.PI)/N))},easeOutElastic:function(p){var E=1.70158,N=0,$=1;return 0===p?0:1===p?1:(N||(N=.3),$<1?($=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/$),$*Math.pow(2,-10*p)*Math.sin((p-E)*(2*Math.PI)/N)+1)},easeInOutElastic:function(p){var E=1.70158,N=0,$=1;return 0===p?0:2==(p/=.5)?1:(N||(N=.45),$<1?($=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/$),p<1?$*Math.pow(2,10*(p-=1))*Math.sin((p-E)*(2*Math.PI)/N)*-.5:$*Math.pow(2,-10*(p-=1))*Math.sin((p-E)*(2*Math.PI)/N)*.5+1)},easeInBack:function(p){var E=1.70158;return p*p*((E+1)*p-E)},easeOutBack:function(p){var E=1.70158;return(p-=1)*p*((E+1)*p+E)+1},easeInOutBack:function(p){var E=1.70158;return(p/=.5)<1?p*p*((1+(E*=1.525))*p-E)*.5:.5*((p-=2)*p*((1+(E*=1.525))*p+E)+2)},easeInBounce:function(p){return 1-Yn.easeOutBounce(1-p)},easeOutBounce:function(p){return p<1/2.75?7.5625*p*p:p<2/2.75?7.5625*(p-=1.5/2.75)*p+.75:p<2.5/2.75?7.5625*(p-=2.25/2.75)*p+.9375:7.5625*(p-=2.625/2.75)*p+.984375},easeInOutBounce:function(p){return p<.5?.5*Yn.easeInBounce(2*p):.5*Yn.easeOutBounce(2*p-1)+.5}},Cn={effects:Yn};tr.easingEffects=Yn;var Kt=Math.PI,dn=Kt/180,Kn=2*Kt,qn=Kt/2,Sn=Kt/4,$n=2*Kt/3,En={clear:function(p){p.ctx.clearRect(0,0,p.width,p.height)},roundedRect:function(p,E,N,$,Q,de){if(de){var ve=Math.min(de,Q/2,$/2),qe=E+ve,De=N+ve,_t=E+$-ve,Yt=N+Q-ve;p.moveTo(E,De),qe<_t&&De<Yt?(p.arc(qe,De,ve,-Kt,-qn),p.arc(_t,De,ve,-qn,0),p.arc(_t,Yt,ve,0,qn),p.arc(qe,Yt,ve,qn,Kt)):qe<_t?(p.moveTo(qe,N),p.arc(_t,De,ve,-qn,qn),p.arc(qe,De,ve,qn,Kt+qn)):De<Yt?(p.arc(qe,De,ve,-Kt,0),p.arc(qe,Yt,ve,0,Kt)):p.arc(qe,De,ve,-Kt,Kt),p.closePath(),p.moveTo(E,N)}else p.rect(E,N,$,Q)},drawPoint:function(p,E,N,$,Q,de){var ve,qe,De,_t,Yt,Zt=(de||0)*dn;if(E&&"object"==typeof E&&("[object HTMLImageElement]"===(ve=E.toString())||"[object HTMLCanvasElement]"===ve))return p.save(),p.translate($,Q),p.rotate(Zt),p.drawImage(E,-E.width/2,-E.height/2,E.width,E.height),void p.restore();if(!(isNaN(N)||N<=0)){switch(p.beginPath(),E){default:p.arc($,Q,N,0,Kn),p.closePath();break;case"triangle":p.moveTo($+Math.sin(Zt)*N,Q-Math.cos(Zt)*N),Zt+=$n,p.lineTo($+Math.sin(Zt)*N,Q-Math.cos(Zt)*N),Zt+=$n,p.lineTo($+Math.sin(Zt)*N,Q-Math.cos(Zt)*N),p.closePath();break;case"rectRounded":_t=N-(Yt=.516*N),qe=Math.cos(Zt+Sn)*_t,De=Math.sin(Zt+Sn)*_t,p.arc($-qe,Q-De,Yt,Zt-Kt,Zt-qn),p.arc($+De,Q-qe,Yt,Zt-qn,Zt),p.arc($+qe,Q+De,Yt,Zt,Zt+qn),p.arc($-De,Q+qe,Yt,Zt+qn,Zt+Kt),p.closePath();break;case"rect":if(!de){_t=Math.SQRT1_2*N,p.rect($-_t,Q-_t,2*_t,2*_t);break}Zt+=Sn;case"rectRot":qe=Math.cos(Zt)*N,De=Math.sin(Zt)*N,p.moveTo($-qe,Q-De),p.lineTo($+De,Q-qe),p.lineTo($+qe,Q+De),p.lineTo($-De,Q+qe),p.closePath();break;case"crossRot":Zt+=Sn;case"cross":qe=Math.cos(Zt)*N,De=Math.sin(Zt)*N,p.moveTo($-qe,Q-De),p.lineTo($+qe,Q+De),p.moveTo($+De,Q-qe),p.lineTo($-De,Q+qe);break;case"star":qe=Math.cos(Zt)*N,De=Math.sin(Zt)*N,p.moveTo($-qe,Q-De),p.lineTo($+qe,Q+De),p.moveTo($+De,Q-qe),p.lineTo($-De,Q+qe),Zt+=Sn,qe=Math.cos(Zt)*N,De=Math.sin(Zt)*N,p.moveTo($-qe,Q-De),p.lineTo($+qe,Q+De),p.moveTo($+De,Q-qe),p.lineTo($-De,Q+qe);break;case"line":qe=Math.cos(Zt)*N,De=Math.sin(Zt)*N,p.moveTo($-qe,Q-De),p.lineTo($+qe,Q+De);break;case"dash":p.moveTo($,Q),p.lineTo($+Math.cos(Zt)*N,Q+Math.sin(Zt)*N)}p.fill(),p.stroke()}},_isPointInArea:function(p,E){var N=1e-6;return p.x>E.left-N&&p.x<E.right+N&&p.y>E.top-N&&p.y<E.bottom+N},clipArea:function(p,E){p.save(),p.beginPath(),p.rect(E.left,E.top,E.right-E.left,E.bottom-E.top),p.clip()},unclipArea:function(p){p.restore()},lineTo:function(p,E,N,$){var Q=N.steppedLine;if(Q){if("middle"===Q){var de=(E.x+N.x)/2;p.lineTo(de,$?N.y:E.y),p.lineTo(de,$?E.y:N.y)}else"after"===Q&&!$||"after"!==Q&&$?p.lineTo(E.x,N.y):p.lineTo(N.x,E.y);p.lineTo(N.x,N.y)}else N.tension?p.bezierCurveTo($?E.controlPointPreviousX:E.controlPointNextX,$?E.controlPointPreviousY:E.controlPointNextY,$?N.controlPointNextX:N.controlPointPreviousX,$?N.controlPointNextY:N.controlPointPreviousY,N.x,N.y):p.lineTo(N.x,N.y)}},Fn=En;tr.clear=En.clear,tr.drawRoundedRectangle=function(p){p.beginPath(),En.roundedRect.apply(En,arguments)};var Dn={_set:function(p,E){return tr.merge(this[p]||(this[p]={}),E)}};Dn._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var mn=Dn,jn=tr.valueOrDefault;var ut={toLineHeight:function(p,E){var N=(""+p).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!N||"normal"===N[1])return 1.2*E;switch(p=+N[2],N[3]){case"px":return p;case"%":p/=100}return E*p},toPadding:function(p){var E,N,$,Q;return tr.isObject(p)?(E=+p.top||0,N=+p.right||0,$=+p.bottom||0,Q=+p.left||0):E=N=$=Q=+p||0,{top:E,right:N,bottom:$,left:Q,height:E+$,width:Q+N}},_parseFont:function(p){var E=mn.global,N=jn(p.fontSize,E.defaultFontSize),$={family:jn(p.fontFamily,E.defaultFontFamily),lineHeight:tr.options.toLineHeight(jn(p.lineHeight,E.defaultLineHeight),N),size:N,style:jn(p.fontStyle,E.defaultFontStyle),weight:null,string:""};return $.string=function(p){return!p||tr.isNullOrUndef(p.size)||tr.isNullOrUndef(p.family)?null:(p.style?p.style+" ":"")+(p.weight?p.weight+" ":"")+p.size+"px "+p.family}($),$},resolve:function(p,E,N,$){var de,ve,qe,Q=!0;for(de=0,ve=p.length;de<ve;++de)if(void 0!==(qe=p[de])&&(void 0!==E&&"function"==typeof qe&&(qe=qe(E),Q=!1),void 0!==N&&tr.isArray(qe)&&(qe=qe[N],Q=!1),void 0!==qe))return $&&!Q&&($.cacheable=!1),qe}},mt={_factorize:function(p){var $,E=[],N=Math.sqrt(p);for($=1;$<N;$++)p%$==0&&(E.push($),E.push(p/$));return N===(0|N)&&E.push(N),E.sort(function(Q,de){return Q-de}).pop(),E},log10:Math.log10||function(p){var E=Math.log(p)*Math.LOG10E,N=Math.round(E);return p===Math.pow(10,N)?N:E}},Tt=mt;tr.log10=mt.log10;var ht=tr,Ue=Fn,nt=ut,at=Tt,it={getRtlAdapter:function(p,E,N){return p?function(p,E){return{x:function(N){return p+p+E-N},setWidth:function(N){E=N},textAlign:function(N){return"center"===N?N:"right"===N?"left":"right"},xPlus:function(N,$){return N-$},leftForLtr:function(N,$){return N-$}}}(E,N):{x:function(p){return p},setWidth:function(p){},textAlign:function(p){return p},xPlus:function(p,E){return p+E},leftForLtr:function(p,E){return p}}},overrideTextDirection:function(p,E){var N,$;("ltr"===E||"rtl"===E)&&($=[(N=p.canvas.style).getPropertyValue("direction"),N.getPropertyPriority("direction")],N.setProperty("direction",E,"important"),p.prevTextDirection=$)},restoreTextDirection:function(p){var E=p.prevTextDirection;void 0!==E&&(delete p.prevTextDirection,p.canvas.style.setProperty("direction",E[0],E[1]))}};ht.easing=Cn,ht.canvas=Ue,ht.options=nt,ht.math=at,ht.rtl=it;var Ut=function(p){ht.extend(this,p),this.initialize.apply(this,arguments)};ht.extend(Ut.prototype,{_type:void 0,initialize:function(){this.hidden=!1},pivot:function(){var p=this;return p._view||(p._view=ht.extend({},p._model)),p._start={},p},transition:function(p){var E=this,N=E._model,$=E._start,Q=E._view;return N&&1!==p?(Q||(Q=E._view={}),$||($=E._start={}),function(p,E,N,$){var de,ve,qe,De,_t,Yt,Zt,wn,cr,Q=Object.keys(N);for(de=0,ve=Q.length;de<ve;++de)if(Yt=N[qe=Q[de]],E.hasOwnProperty(qe)||(E[qe]=Yt),(De=E[qe])!==Yt&&"_"!==qe[0]){if(p.hasOwnProperty(qe)||(p[qe]=De),(Zt=typeof Yt)==typeof(_t=p[qe]))if("string"===Zt){if((wn=er(_t)).valid&&(cr=er(Yt)).valid){E[qe]=cr.mix(wn,$).rgbString();continue}}else if(ht.isFinite(_t)&&ht.isFinite(Yt)){E[qe]=_t+(Yt-_t)*$;continue}E[qe]=Yt}}($,Q,N,p),E):(E._view=ht.extend({},N),E._start=null,E)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return ht.isNumber(this._model.x)&&ht.isNumber(this._model.y)}}),Ut.extend=ht.inherits;var ot=Ut,Nn=ot.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),sn=Nn;Object.defineProperty(Nn.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(Nn.prototype,"chartInstance",{get:function(){return this.chart},set:function(p){this.chart=p}}),mn._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:ht.noop,onComplete:ht.noop}});var An={animations:[],request:null,addAnimation:function(p,E,N,$){var de,ve,Q=this.animations;for(E.chart=p,E.startTime=Date.now(),E.duration=N,$||(p.animating=!0),de=0,ve=Q.length;de<ve;++de)if(Q[de].chart===p)return void(Q[de]=E);Q.push(E),1===Q.length&&this.requestAnimationFrame()},cancelAnimation:function(p){var E=ht.findIndex(this.animations,function(N){return N.chart===p});-1!==E&&(this.animations.splice(E,1),p.animating=!1)},requestAnimationFrame:function(){var p=this;null===p.request&&(p.request=ht.requestAnimFrame.call(window,function(){p.request=null,p.startDigest()}))},startDigest:function(){var p=this;p.advance(),p.animations.length>0&&p.requestAnimationFrame()},advance:function(){for(var E,N,$,Q,p=this.animations,de=0;de<p.length;)N=(E=p[de]).chart,$=E.numSteps,Q=Math.floor((Date.now()-E.startTime)/E.duration*$)+1,E.currentStep=Math.min(Q,$),ht.callback(E.render,[N,E],N),ht.callback(E.onAnimationProgress,[E],N),E.currentStep>=$?(ht.callback(E.onAnimationComplete,[E],N),N.animating=!1,p.splice(de,1)):++de}},Bn=ht.options.resolve,ir=["push","pop","shift","splice","unshift"];function _r(p,E){var N=p._chartjs;if(N){var $=N.listeners,Q=$.indexOf(E);-1!==Q&&$.splice(Q,1),!($.length>0)&&(ir.forEach(function(de){delete p[de]}),delete p._chartjs)}}var Nr=function(p,E){this.initialize(p,E)};ht.extend(Nr.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(p,E){var N=this;N.chart=p,N.index=E,N.linkScales(),N.addElements(),N._type=N.getMeta().type},updateIndex:function(p){this.index=p},linkScales:function(){var p=this,E=p.getMeta(),N=p.chart,$=N.scales,Q=p.getDataset(),de=N.options.scales;(null===E.xAxisID||!(E.xAxisID in $)||Q.xAxisID)&&(E.xAxisID=Q.xAxisID||de.xAxes[0].id),(null===E.yAxisID||!(E.yAxisID in $)||Q.yAxisID)&&(E.yAxisID=Q.yAxisID||de.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(p){return this.chart.scales[p]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&_r(this._data,this)},createMetaDataset:function(){var p=this,E=p.datasetElementType;return E&&new E({_chart:p.chart,_datasetIndex:p.index})},createMetaData:function(p){var E=this,N=E.dataElementType;return N&&new N({_chart:E.chart,_datasetIndex:E.index,_index:p})},addElements:function(){var Q,de,p=this,E=p.getMeta(),N=p.getDataset().data||[],$=E.data;for(Q=0,de=N.length;Q<de;++Q)$[Q]=$[Q]||p.createMetaData(Q);E.dataset=E.dataset||p.createMetaDataset()},addElementAndReset:function(p){var E=this.createMetaData(p);this.getMeta().data.splice(p,0,E),this.updateElement(E,p,!0)},buildOrUpdateElements:function(){var p=this,E=p.getDataset(),N=E.data||(E.data=[]);p._data!==N&&(p._data&&_r(p._data,p),N&&Object.isExtensible(N)&&function(p,E){p._chartjs?p._chartjs.listeners.push(E):(Object.defineProperty(p,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[E]}}),ir.forEach(function(N){var $="onData"+N.charAt(0).toUpperCase()+N.slice(1),Q=p[N];Object.defineProperty(p,N,{configurable:!0,enumerable:!1,value:function(){var de=Array.prototype.slice.call(arguments),ve=Q.apply(this,de);return ht.each(p._chartjs.listeners,function(qe){"function"==typeof qe[$]&&qe[$].apply(qe,de)}),ve}})}))}(N,p),p._data=N),p.resyncElements()},_configure:function(){var p=this;p._config=ht.merge(Object.create(null),[p.chart.options.datasets[p._type],p.getDataset()],{merger:function(E,N,$){"_meta"!==E&&"data"!==E&&ht._merger(E,N,$)}})},_update:function(p){var E=this;E._configure(),E._cachedDataOpts=null,E.update(p)},update:ht.noop,transition:function(p){for(var E=this.getMeta(),N=E.data||[],$=N.length,Q=0;Q<$;++Q)N[Q].transition(p);E.dataset&&E.dataset.transition(p)},draw:function(){var p=this.getMeta(),E=p.data||[],N=E.length,$=0;for(p.dataset&&p.dataset.draw();$<N;++$)E[$].draw()},getStyle:function(p){var Q,E=this,N=E.getMeta(),$=N.dataset;return E._configure(),(!1===(Q=$&&void 0===p?E._resolveDatasetElementOptions($||{}):E._resolveDataElementOptions(N.data[p=p||0]||{},p)).fill||null===Q.fill)&&(Q.backgroundColor=Q.borderColor),Q},_resolveDatasetElementOptions:function(p,E){var _t,Yt,Zt,wn,N=this,$=N.chart,Q=N._config,de=p.custom||{},ve=$.options.elements[N.datasetElementType.prototype._type]||{},qe=N._datasetElementOptions,De={},cr={chart:$,dataset:N.getDataset(),datasetIndex:N.index,hover:E};for(_t=0,Yt=qe.length;_t<Yt;++_t)Zt=qe[_t],wn=E?"hover"+Zt.charAt(0).toUpperCase()+Zt.slice(1):Zt,De[Zt]=Bn([de[wn],Q[wn],ve[wn]],cr);return De},_resolveDataElementOptions:function(p,E){var N=this,$=p&&p.custom,Q=N._cachedDataOpts;if(Q&&!$)return Q;var wn,cr,sr,Tr,de=N.chart,ve=N._config,qe=de.options.elements[N.dataElementType.prototype._type]||{},De=N._dataElementOptions,_t={},Yt={chart:de,dataIndex:E,dataset:N.getDataset(),datasetIndex:N.index},Zt={cacheable:!$};if($=$||{},ht.isArray(De))for(cr=0,sr=De.length;cr<sr;++cr)_t[Tr=De[cr]]=Bn([$[Tr],ve[Tr],qe[Tr]],Yt,E,Zt);else for(cr=0,sr=(wn=Object.keys(De)).length;cr<sr;++cr)_t[Tr=wn[cr]]=Bn([$[Tr],ve[De[Tr]],ve[Tr],qe[Tr]],Yt,E,Zt);return Zt.cacheable&&(N._cachedDataOpts=Object.freeze(_t)),_t},removeHoverStyle:function(p){ht.merge(p._model,p.$previousStyle||{}),delete p.$previousStyle},setHoverStyle:function(p){var E=this.chart.data.datasets[p._datasetIndex],N=p._index,$=p.custom||{},Q=p._model,de=ht.getHoverColor;p.$previousStyle={backgroundColor:Q.backgroundColor,borderColor:Q.borderColor,borderWidth:Q.borderWidth},Q.backgroundColor=Bn([$.hoverBackgroundColor,E.hoverBackgroundColor,de(Q.backgroundColor)],void 0,N),Q.borderColor=Bn([$.hoverBorderColor,E.hoverBorderColor,de(Q.borderColor)],void 0,N),Q.borderWidth=Bn([$.hoverBorderWidth,E.hoverBorderWidth,Q.borderWidth],void 0,N)},_removeDatasetHoverStyle:function(){var p=this.getMeta().dataset;p&&this.removeHoverStyle(p)},_setDatasetHoverStyle:function(){var N,$,Q,de,ve,qe,p=this.getMeta().dataset,E={};if(p){for(qe=p._model,ve=this._resolveDatasetElementOptions(p,!0),N=0,$=(de=Object.keys(ve)).length;N<$;++N)E[Q=de[N]]=qe[Q],qe[Q]=ve[Q];p.$previousStyle=E}},resyncElements:function(){var p=this,E=p.getMeta(),N=p.getDataset().data,$=E.data.length,Q=N.length;Q<$?E.data.splice(Q,$-Q):Q>$&&p.insertElements($,Q-$)},insertElements:function(p,E){for(var N=0;N<E;++N)this.addElementAndReset(p+N)},onDataPush:function(){var p=arguments.length;this.insertElements(this.getDataset().data.length-p,p)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(p,E){this.getMeta().data.splice(p,E),this.insertElements(p,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),Nr.extend=ht.inherits;var br=Nr,Jn=2*Math.PI;function nr(p,E){var N=E.startAngle,$=E.endAngle,Q=E.pixelMargin,de=Q/E.outerRadius,ve=E.x,qe=E.y;p.beginPath(),p.arc(ve,qe,E.outerRadius,N-de,$+de),E.innerRadius>Q?p.arc(ve,qe,E.innerRadius-Q,$+(de=Q/E.innerRadius),N-de,!0):p.arc(ve,qe,Q,$+Math.PI/2,N-Math.PI/2),p.closePath(),p.clip()}function yi(p,E,N){var $="inner"===E.borderAlign;$?(p.lineWidth=2*E.borderWidth,p.lineJoin="round"):(p.lineWidth=E.borderWidth,p.lineJoin="bevel"),N.fullCircles&&function(p,E,N,$){var de,Q=N.endAngle;for($&&(N.endAngle=N.startAngle+Jn,nr(p,N),N.endAngle=Q,N.endAngle===N.startAngle&&N.fullCircles&&(N.endAngle+=Jn,N.fullCircles--)),p.beginPath(),p.arc(N.x,N.y,N.innerRadius,N.startAngle+Jn,N.startAngle,!0),de=0;de<N.fullCircles;++de)p.stroke();for(p.beginPath(),p.arc(N.x,N.y,E.outerRadius,N.startAngle,N.startAngle+Jn),de=0;de<N.fullCircles;++de)p.stroke()}(p,E,N,$),$&&nr(p,N),p.beginPath(),p.arc(N.x,N.y,E.outerRadius,N.startAngle,N.endAngle),p.arc(N.x,N.y,N.innerRadius,N.endAngle,N.startAngle,!0),p.closePath(),p.stroke()}mn._set("global",{elements:{arc:{backgroundColor:mn.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var Ii=ot.extend({_type:"arc",inLabelRange:function(p){var E=this._view;return!!E&&Math.pow(p-E.x,2)<Math.pow(E.radius+E.hoverRadius,2)},inRange:function(p,E){var N=this._view;if(N){for(var $=ht.getAngleFromPoint(N,{x:p,y:E}),Q=$.angle,de=$.distance,ve=N.startAngle,qe=N.endAngle;qe<ve;)qe+=Jn;for(;Q>qe;)Q-=Jn;for(;Q<ve;)Q+=Jn;return Q>=ve&&Q<=qe&&de>=N.innerRadius&&de<=N.outerRadius}return!1},getCenterPoint:function(){var p=this._view,E=(p.startAngle+p.endAngle)/2,N=(p.innerRadius+p.outerRadius)/2;return{x:p.x+Math.cos(E)*N,y:p.y+Math.sin(E)*N}},getArea:function(){var p=this._view;return Math.PI*((p.endAngle-p.startAngle)/(2*Math.PI))*(Math.pow(p.outerRadius,2)-Math.pow(p.innerRadius,2))},tooltipPosition:function(){var p=this._view,E=p.startAngle+(p.endAngle-p.startAngle)/2,N=(p.outerRadius-p.innerRadius)/2+p.innerRadius;return{x:p.x+Math.cos(E)*N,y:p.y+Math.sin(E)*N}},draw:function(){var Q,p=this._chart.ctx,E=this._view,N="inner"===E.borderAlign?.33:0,$={x:E.x,y:E.y,innerRadius:E.innerRadius,outerRadius:Math.max(E.outerRadius-N,0),pixelMargin:N,startAngle:E.startAngle,endAngle:E.endAngle,fullCircles:Math.floor(E.circumference/Jn)};if(p.save(),p.fillStyle=E.backgroundColor,p.strokeStyle=E.borderColor,$.fullCircles){for($.endAngle=$.startAngle+Jn,p.beginPath(),p.arc($.x,$.y,$.outerRadius,$.startAngle,$.endAngle),p.arc($.x,$.y,$.innerRadius,$.endAngle,$.startAngle,!0),p.closePath(),Q=0;Q<$.fullCircles;++Q)p.fill();$.endAngle=$.startAngle+E.circumference%Jn}p.beginPath(),p.arc($.x,$.y,$.outerRadius,$.startAngle,$.endAngle),p.arc($.x,$.y,$.innerRadius,$.endAngle,$.startAngle,!0),p.closePath(),p.fill(),E.borderWidth&&yi(p,E,$),p.restore()}}),Mi=ht.valueOrDefault,Oi=mn.global.defaultColor;mn._set("global",{elements:{line:{tension:.4,backgroundColor:Oi,borderWidth:3,borderColor:Oi,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Kr=ot.extend({_type:"line",draw:function(){var _t,Yt,Zt,p=this,E=p._view,N=p._chart.ctx,$=E.spanGaps,Q=p._children.slice(),de=mn.global,ve=de.elements.line,qe=-1,De=p._loop;if(Q.length){if(p._loop){for(_t=0;_t<Q.length;++_t)if(Yt=ht.previousItem(Q,_t),!Q[_t]._view.skip&&Yt._view.skip){Q=Q.slice(_t).concat(Q.slice(0,_t)),De=$;break}De&&Q.push(Q[0])}for(N.save(),N.lineCap=E.borderCapStyle||ve.borderCapStyle,N.setLineDash&&N.setLineDash(E.borderDash||ve.borderDash),N.lineDashOffset=Mi(E.borderDashOffset,ve.borderDashOffset),N.lineJoin=E.borderJoinStyle||ve.borderJoinStyle,N.lineWidth=Mi(E.borderWidth,ve.borderWidth),N.strokeStyle=E.borderColor||de.defaultColor,N.beginPath(),(Zt=Q[0]._view).skip||(N.moveTo(Zt.x,Zt.y),qe=0),_t=1;_t<Q.length;++_t)Zt=Q[_t]._view,Yt=-1===qe?ht.previousItem(Q,_t):Q[qe],Zt.skip||(qe!==_t-1&&!$||-1===qe?N.moveTo(Zt.x,Zt.y):ht.canvas.lineTo(N,Yt._view,Zt),qe=_t);De&&N.closePath(),N.stroke(),N.restore()}}}),ei=ht.valueOrDefault,di=mn.global.defaultColor;function se(p){var E=this._view;return!!E&&Math.abs(p-E.x)<E.radius+E.hitRadius}mn._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:di,borderColor:di,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var Ke=ot.extend({_type:"point",inRange:function(p,E){var N=this._view;return!!N&&Math.pow(p-N.x,2)+Math.pow(E-N.y,2)<Math.pow(N.hitRadius+N.radius,2)},inLabelRange:se,inXRange:se,inYRange:function(p){var E=this._view;return!!E&&Math.abs(p-E.y)<E.radius+E.hitRadius},getCenterPoint:function(){var p=this._view;return{x:p.x,y:p.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var p=this._view;return{x:p.x,y:p.y,padding:p.radius+p.borderWidth}},draw:function(p){var E=this._view,N=this._chart.ctx,$=E.pointStyle,Q=E.rotation,de=E.radius,ve=E.x,qe=E.y,De=mn.global,_t=De.defaultColor;E.skip||(void 0===p||ht.canvas._isPointInArea(E,p))&&(N.strokeStyle=E.borderColor||_t,N.lineWidth=ei(E.borderWidth,De.elements.point.borderWidth),N.fillStyle=E.backgroundColor||_t,ht.canvas.drawPoint(N,$,de,ve,qe,Q))}}),Xe=mn.global.defaultColor;function Vt(p){return p&&void 0!==p.width}function Ct(p){var E,N,$,Q,de;return Vt(p)?(E=p.x-(de=p.width/2),N=p.x+de,$=Math.min(p.y,p.base),Q=Math.max(p.y,p.base)):(de=p.height/2,E=Math.min(p.x,p.base),N=Math.max(p.x,p.base),$=p.y-de,Q=p.y+de),{left:E,top:$,right:N,bottom:Q}}function rt(p,E,N){return p===E?N:p===N?E:p}function We(p,E,N){var de,ve,qe,De,$=p.borderWidth,Q=function(p){var E=p.borderSkipped,N={};return E&&(p.horizontal?p.base>p.x&&(E=rt(E,"left","right")):p.base<p.y&&(E=rt(E,"bottom","top")),N[E]=!0),N}(p);return ht.isObject($)?(de=+$.top||0,ve=+$.right||0,qe=+$.bottom||0,De=+$.left||0):de=ve=qe=De=+$||0,{t:Q.top||de<0?0:de>N?N:de,r:Q.right||ve<0?0:ve>E?E:ve,b:Q.bottom||qe<0?0:qe>N?N:qe,l:Q.left||De<0?0:De>E?E:De}}function or(p,E,N){var $=null===E,Q=null===N,de=!(!p||$&&Q)&&Ct(p);return de&&($||E>=de.left&&E<=de.right)&&(Q||N>=de.top&&N<=de.bottom)}mn._set("global",{elements:{rectangle:{backgroundColor:Xe,borderColor:Xe,borderSkipped:"bottom",borderWidth:0}}});var Zn=ot.extend({_type:"rectangle",draw:function(){var p=this._chart.ctx,E=this._view,N=function(p){var E=Ct(p),N=E.right-E.left,$=E.bottom-E.top,Q=We(p,N/2,$/2);return{outer:{x:E.left,y:E.top,w:N,h:$},inner:{x:E.left+Q.l,y:E.top+Q.t,w:N-Q.l-Q.r,h:$-Q.t-Q.b}}}(E),$=N.outer,Q=N.inner;p.fillStyle=E.backgroundColor,p.fillRect($.x,$.y,$.w,$.h),($.w!==Q.w||$.h!==Q.h)&&(p.save(),p.beginPath(),p.rect($.x,$.y,$.w,$.h),p.clip(),p.fillStyle=E.borderColor,p.rect(Q.x,Q.y,Q.w,Q.h),p.fill("evenodd"),p.restore())},height:function(){var p=this._view;return p.base-p.y},inRange:function(p,E){return or(this._view,p,E)},inLabelRange:function(p,E){var N=this._view;return Vt(N)?or(N,p,null):or(N,null,E)},inXRange:function(p){return or(this._view,p,null)},inYRange:function(p){return or(this._view,null,p)},getCenterPoint:function(){var E,N,p=this._view;return Vt(p)?(E=p.x,N=(p.y+p.base)/2):(E=(p.x+p.base)/2,N=p.y),{x:E,y:N}},getArea:function(){var p=this._view;return Vt(p)?p.width*Math.abs(p.y-p.base):p.height*Math.abs(p.x-p.base)},tooltipPosition:function(){var p=this._view;return{x:p.x,y:p.y}}}),Vr={},ai=Kr,Dr=Ke,Qr=Zn;Vr.Arc=Ii,Vr.Line=ai,Vr.Point=Dr,Vr.Rectangle=Qr;var rn=ht._deprecated,fi=ht.valueOrDefault;function wi(p,E,N){var qe,De,$=N.barThickness,Q=E.stackCount,de=E.pixels[p],ve=ht.isNullOrUndef($)?function(p,E){var $,Q,de,ve,N=p._length;for(de=1,ve=E.length;de<ve;++de)N=Math.min(N,Math.abs(E[de]-E[de-1]));for(de=0,ve=p.getTicks().length;de<ve;++de)Q=p.getPixelForTick(de),N=de>0?Math.min(N,Math.abs(Q-$)):N,$=Q;return N}(E.scale,E.pixels):-1;return ht.isNullOrUndef($)?(qe=ve*N.categoryPercentage,De=N.barPercentage):(qe=$*Q,De=1),{chunk:qe/Q,ratio:De,start:de-qe/2}}mn._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),mn._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Fi=br.extend({dataElementType:Vr.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var E,N,p=this;br.prototype.initialize.apply(p,arguments),(E=p.getMeta()).stack=p.getDataset().stack,E.bar=!0,N=p._getIndexScale().options,rn("bar chart",N.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),rn("bar chart",N.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),rn("bar chart",N.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),rn("bar chart",p._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),rn("bar chart",N.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(p){var $,Q,E=this,N=E.getMeta().data;for(E._ruler=E.getRuler(),$=0,Q=N.length;$<Q;++$)E.updateElement(N[$],$,p)},updateElement:function(p,E,N){var $=this,Q=$.getMeta(),de=$.getDataset(),ve=$._resolveDataElementOptions(p,E);p._xScale=$.getScaleForId(Q.xAxisID),p._yScale=$.getScaleForId(Q.yAxisID),p._datasetIndex=$.index,p._index=E,p._model={backgroundColor:ve.backgroundColor,borderColor:ve.borderColor,borderSkipped:ve.borderSkipped,borderWidth:ve.borderWidth,datasetLabel:de.label,label:$.chart.data.labels[E]},ht.isArray(de.data[E])&&(p._model.borderSkipped=null),$._updateElementGeometry(p,E,N,ve),p.pivot()},_updateElementGeometry:function(p,E,N,$){var Q=this,de=p._model,ve=Q._getValueScale(),qe=ve.getBasePixel(),De=ve.isHorizontal(),_t=Q._ruler||Q.getRuler(),Yt=Q.calculateBarValuePixels(Q.index,E,$),Zt=Q.calculateBarIndexPixels(Q.index,E,_t,$);de.horizontal=De,de.base=N?qe:Yt.base,de.x=De?N?qe:Yt.head:Zt.center,de.y=De?Zt.center:N?qe:Yt.head,de.height=De?Zt.size:void 0,de.width=De?void 0:Zt.size},_getStacks:function(p){var qe,De,N=this._getIndexScale(),$=N._getMatchingVisibleMetas(this._type),Q=N.options.stacked,de=$.length,ve=[];for(qe=0;qe<de&&(De=$[qe],(!1===Q||-1===ve.indexOf(De.stack)||void 0===Q&&void 0===De.stack)&&ve.push(De.stack),De.index!==p);++qe);return ve},getStackCount:function(){return this._getStacks().length},getStackIndex:function(p,E){var N=this._getStacks(p),$=void 0!==E?N.indexOf(E):-1;return-1===$?N.length-1:$},getRuler:function(){var $,Q,p=this,E=p._getIndexScale(),N=[];for($=0,Q=p.getMeta().data.length;$<Q;++$)N.push(E.getPixelForValue(null,$,p.index));return{pixels:N,start:E._startPixel,end:E._endPixel,stackCount:p.getStackCount(),scale:E}},calculateBarValuePixels:function(p,E,N){var Yr,Pi,yo,Co,Xo,ts,_s,$=this,Q=$.chart,de=$._getValueScale(),ve=de.isHorizontal(),qe=Q.data.datasets,De=de._getMatchingVisibleMetas($._type),_t=de._parseValue(qe[p].data[E]),Yt=N.minBarLength,Zt=de.options.stacked,wn=$.getMeta().stack,cr=void 0===_t.start?0:_t.max>=0&&_t.min>=0?_t.min:_t.max,sr=void 0===_t.start?_t.end:_t.max>=0&&_t.min>=0?_t.max-_t.min:_t.min-_t.max,Tr=De.length;if(Zt||void 0===Zt&&void 0!==wn)for(Yr=0;Yr<Tr&&(Pi=De[Yr]).index!==p;++Yr)Pi.stack===wn&&(yo=void 0===(_s=de._parseValue(qe[Pi.index].data[E])).start?_s.end:_s.min>=0&&_s.max>=0?_s.max:_s.min,(_t.min<0&&yo<0||_t.max>=0&&yo>0)&&(cr+=yo));return Co=de.getPixelForValue(cr),ts=(Xo=de.getPixelForValue(cr+sr))-Co,void 0!==Yt&&Math.abs(ts)<Yt&&(ts=Yt,Xo=sr>=0&&!ve||sr<0&&ve?Co-Yt:Co+Yt),{size:ts,base:Co,head:Xo,center:Xo+ts/2}},calculateBarIndexPixels:function(p,E,N,$){var de="flex"===$.barThickness?function(p,E,N){var De,$=E.pixels,Q=$[p],de=p>0?$[p-1]:null,ve=p<$.length-1?$[p+1]:null,qe=N.categoryPercentage;return null===de&&(de=Q-(null===ve?E.end-E.start:ve-Q)),null===ve&&(ve=Q+Q-de),De=Q-(Q-Math.min(de,ve))/2*qe,{chunk:Math.abs(ve-de)/2*qe/E.stackCount,ratio:N.barPercentage,start:De}}(E,N,$):wi(E,N,$),ve=this.getStackIndex(p,this.getMeta().stack),qe=de.start+de.chunk*ve+de.chunk/2,De=Math.min(fi($.maxBarThickness,1/0),de.chunk*de.ratio);return{base:qe-De/2,head:qe+De/2,center:qe,size:De}},draw:function(){var p=this,E=p.chart,N=p._getValueScale(),$=p.getMeta().data,Q=p.getDataset(),de=$.length,ve=0;for(ht.canvas.clipArea(E.ctx,E.chartArea);ve<de;++ve){var qe=N._parseValue(Q.data[ve]);!isNaN(qe.min)&&!isNaN(qe.max)&&$[ve].draw()}ht.canvas.unclipArea(E.ctx)},_resolveDataElementOptions:function(){var p=this,E=ht.extend({},br.prototype._resolveDataElementOptions.apply(p,arguments)),N=p._getIndexScale().options,$=p._getValueScale().options;return E.barPercentage=fi(N.barPercentage,E.barPercentage),E.barThickness=fi(N.barThickness,E.barThickness),E.categoryPercentage=fi(N.categoryPercentage,E.categoryPercentage),E.maxBarThickness=fi(N.maxBarThickness,E.maxBarThickness),E.minBarLength=fi($.minBarLength,E.minBarLength),E}}),no=ht.valueOrDefault,Ji=ht.options.resolve;mn._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(p,E){return(E.datasets[p.datasetIndex].label||"")+": ("+p.xLabel+", "+p.yLabel+", "+E.datasets[p.datasetIndex].data[p.index].r+")"}}}});var qi=br.extend({dataElementType:Vr.Point,_dataElementOptions:["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"],update:function(p){var E=this,N=E.getMeta();ht.each(N.data,function(Q,de){E.updateElement(Q,de,p)})},updateElement:function(p,E,N){var $=this,Q=$.getMeta(),de=p.custom||{},ve=$.getScaleForId(Q.xAxisID),qe=$.getScaleForId(Q.yAxisID),De=$._resolveDataElementOptions(p,E),_t=$.getDataset().data[E],Yt=$.index,Zt=N?ve.getPixelForDecimal(.5):ve.getPixelForValue("object"==typeof _t?_t:NaN,E,Yt),wn=N?qe.getBasePixel():qe.getPixelForValue(_t,E,Yt);p._xScale=ve,p._yScale=qe,p._options=De,p._datasetIndex=Yt,p._index=E,p._model={backgroundColor:De.backgroundColor,borderColor:De.borderColor,borderWidth:De.borderWidth,hitRadius:De.hitRadius,pointStyle:De.pointStyle,rotation:De.rotation,radius:N?0:De.radius,skip:de.skip||isNaN(Zt)||isNaN(wn),x:Zt,y:wn},p.pivot()},setHoverStyle:function(p){var E=p._model,N=p._options,$=ht.getHoverColor;p.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=no(N.hoverBackgroundColor,$(N.backgroundColor)),E.borderColor=no(N.hoverBorderColor,$(N.borderColor)),E.borderWidth=no(N.hoverBorderWidth,N.borderWidth),E.radius=N.radius+N.hoverRadius},_resolveDataElementOptions:function(p,E){var N=this,$=N.chart,Q=N.getDataset(),de=p.custom||{},ve=Q.data[E]||{},qe=br.prototype._resolveDataElementOptions.apply(N,arguments),De={chart:$,dataIndex:E,dataset:Q,datasetIndex:N.index};return N._cachedDataOpts===qe&&(qe=ht.extend({},qe)),qe.radius=Ji([de.radius,ve.r,N._config.radius,$.options.elements.point.radius],De,E),qe}}),to=ht.valueOrDefault,zi=Math.PI,Go=2*zi,Ro=zi/2;mn._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(p){var de,ve,qe,E=document.createElement("ul"),N=p.data,$=N.datasets,Q=N.labels;if(E.setAttribute("class",p.id+"-legend"),$.length)for(de=0,ve=$[0].data.length;de<ve;++de)(qe=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=$[0].backgroundColor[de],Q[de]&&qe.appendChild(document.createTextNode(Q[de]));return E.outerHTML},legend:{labels:{generateLabels:function(p){var E=p.data;return E.labels.length&&E.datasets.length?E.labels.map(function(N,$){var Q=p.getDatasetMeta(0),de=Q.controller.getStyle($);return{text:N,fillStyle:de.backgroundColor,strokeStyle:de.borderColor,lineWidth:de.borderWidth,hidden:isNaN(E.datasets[0].data[$])||Q.data[$].hidden,index:$}}):[]}},onClick:function(p,E){var Q,de,ve,N=E.index,$=this.chart;for(Q=0,de=($.data.datasets||[]).length;Q<de;++Q)(ve=$.getDatasetMeta(Q)).data[N]&&(ve.data[N].hidden=!ve.data[N].hidden);$.update()}},cutoutPercentage:50,rotation:-Ro,circumference:Go,tooltips:{callbacks:{title:function(){return""},label:function(p,E){var N=E.labels[p.index],$=": "+E.datasets[p.datasetIndex].data[p.index];return ht.isArray(N)?(N=N.slice())[0]+=$:N+=$,N}}}});var Bo=br.extend({dataElementType:Vr.Arc,linkScales:ht.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],getRingIndex:function(p){for(var E=0,N=0;N<p;++N)this.chart.isDatasetVisible(N)&&++E;return E},update:function(p){var Yr,Pi,E=this,N=E.chart,$=N.chartArea,Q=N.options,de=1,ve=1,qe=0,De=0,_t=E.getMeta(),Yt=_t.data,Zt=Q.cutoutPercentage/100||0,wn=Q.circumference,cr=E._getRingWeight(E.index);if(wn<Go){var yo=Q.rotation%Go,Co=(yo+=yo>=zi?-Go:yo<-zi?Go:0)+wn,Xo=Math.cos(yo),ts=Math.sin(yo),_s=Math.cos(Co),Ts=Math.sin(Co),Ms=yo<=0&&Co>=0||Co>=Go,xs=yo<=Ro&&Co>=Ro||Co>=Go+Ro,hl=yo<=-Ro&&Co>=-Ro||Co>=zi+Ro,Ga=yo===-zi||Co>=zi?-1:Math.min(Xo,Xo*Zt,_s,_s*Zt),Qa=hl?-1:Math.min(ts,ts*Zt,Ts,Ts*Zt),rl=Ms?1:Math.max(Xo,Xo*Zt,_s,_s*Zt),Gl=xs?1:Math.max(ts,ts*Zt,Ts,Ts*Zt);de=(rl-Ga)/2,ve=(Gl-Qa)/2,qe=-(rl+Ga)/2,De=-(Gl+Qa)/2}for(Yr=0,Pi=Yt.length;Yr<Pi;++Yr)Yt[Yr]._options=E._resolveDataElementOptions(Yt[Yr],Yr);for(N.borderWidth=E.getMaxBorderWidth(),N.outerRadius=Math.max(Math.min(($.right-$.left-N.borderWidth)/de,($.bottom-$.top-N.borderWidth)/ve)/2,0),N.innerRadius=Math.max(N.outerRadius*Zt,0),N.radiusLength=(N.outerRadius-N.innerRadius)/(E._getVisibleDatasetWeightTotal()||1),N.offsetX=qe*N.outerRadius,N.offsetY=De*N.outerRadius,_t.total=E.calculateTotal(),E.outerRadius=N.outerRadius-N.radiusLength*E._getRingWeightOffset(E.index),E.innerRadius=Math.max(E.outerRadius-N.radiusLength*cr,0),Yr=0,Pi=Yt.length;Yr<Pi;++Yr)E.updateElement(Yt[Yr],Yr,p)},updateElement:function(p,E,N){var $=this,Q=$.chart,de=Q.chartArea,ve=Q.options,qe=ve.animation,De=(de.left+de.right)/2,_t=(de.top+de.bottom)/2,Yt=ve.rotation,Zt=ve.rotation,wn=$.getDataset(),cr=N&&qe.animateRotate||p.hidden?0:$.calculateCircumference(wn.data[E])*(ve.circumference/Go),Yr=p._options||{};ht.extend(p,{_datasetIndex:$.index,_index:E,_model:{backgroundColor:Yr.backgroundColor,borderColor:Yr.borderColor,borderWidth:Yr.borderWidth,borderAlign:Yr.borderAlign,x:De+Q.offsetX,y:_t+Q.offsetY,startAngle:Yt,endAngle:Zt,circumference:cr,outerRadius:N&&qe.animateScale?0:$.outerRadius,innerRadius:N&&qe.animateScale?0:$.innerRadius,label:ht.valueAtIndexOrDefault(wn.label,E,Q.data.labels[E])}});var Pi=p._model;(!N||!qe.animateRotate)&&(Pi.startAngle=0===E?ve.rotation:$.getMeta().data[E-1]._model.endAngle,Pi.endAngle=Pi.startAngle+Pi.circumference),p.pivot()},calculateTotal:function(){var $,p=this.getDataset(),E=this.getMeta(),N=0;return ht.each(E.data,function(Q,de){$=p.data[de],!isNaN($)&&!Q.hidden&&(N+=Math.abs($))}),N},calculateCircumference:function(p){var E=this.getMeta().total;return E>0&&!isNaN(p)?Go*(Math.abs(p)/E):0},getMaxBorderWidth:function(p){var Q,de,ve,qe,De,_t,Yt,Zt,N=0,$=this.chart;if(!p)for(Q=0,de=$.data.datasets.length;Q<de;++Q)if($.isDatasetVisible(Q)){p=(ve=$.getDatasetMeta(Q)).data,Q!==this.index&&(De=ve.controller);break}if(!p)return 0;for(Q=0,de=p.length;Q<de;++Q)qe=p[Q],De?(De._configure(),_t=De._resolveDataElementOptions(qe,Q)):_t=qe._options,"inner"!==_t.borderAlign&&(N=(Zt=_t.hoverBorderWidth)>(N=(Yt=_t.borderWidth)>N?Yt:N)?Zt:N);return N},setHoverStyle:function(p){var E=p._model,N=p._options,$=ht.getHoverColor;p.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth},E.backgroundColor=to(N.hoverBackgroundColor,$(N.backgroundColor)),E.borderColor=to(N.hoverBorderColor,$(N.borderColor)),E.borderWidth=to(N.hoverBorderWidth,N.borderWidth)},_getRingWeightOffset:function(p){for(var E=0,N=0;N<p;++N)this.chart.isDatasetVisible(N)&&(E+=this._getRingWeight(N));return E},_getRingWeight:function(p){return Math.max(to(this.chart.data.datasets[p].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});mn._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}}),mn._set("global",{datasets:{horizontalBar:{categoryPercentage:.8,barPercentage:.9}}});var Jo=Fi.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),es=ht.valueOrDefault,ua=ht.options.resolve,ds=ht.canvas._isPointInArea;function zo(p,E){var N=p&&p.options.ticks||{},$=N.reverse,Q=void 0===N.min?E:0,de=void 0===N.max?E:0;return{start:$?de:Q,end:$?Q:de}}function oa(p,E,N){var $=N/2,Q=zo(p,$),de=zo(E,$);return{top:de.end,right:Q.end,bottom:de.start,left:Q.start}}function Er(p){var E,N,$,Q;return ht.isObject(p)?(E=p.top,N=p.right,$=p.bottom,Q=p.left):E=N=$=Q=p,{top:E,right:N,bottom:$,left:Q}}mn._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var st=br.extend({datasetElementType:Vr.Line,dataElementType:Vr.Point,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth","cubicInterpolationMode","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},update:function(p){var De,_t,E=this,N=E.getMeta(),$=N.dataset,Q=N.data||[],ve=E._config,qe=E._showLine=es(ve.showLine,E.chart.options.showLines);for(E._xScale=E.getScaleForId(N.xAxisID),E._yScale=E.getScaleForId(N.yAxisID),qe&&(void 0!==ve.tension&&void 0===ve.lineTension&&(ve.lineTension=ve.tension),$._scale=E._yScale,$._datasetIndex=E.index,$._children=Q,$._model=E._resolveDatasetElementOptions($),$.pivot()),De=0,_t=Q.length;De<_t;++De)E.updateElement(Q[De],De,p);for(qe&&0!==$._model.tension&&E.updateBezierControlPoints(),De=0,_t=Q.length;De<_t;++De)Q[De].pivot()},updateElement:function(p,E,N){var wn,cr,$=this,Q=$.getMeta(),de=p.custom||{},ve=$.getDataset(),qe=$.index,De=ve.data[E],_t=$._xScale,Yt=$._yScale,Zt=Q.dataset._model,sr=$._resolveDataElementOptions(p,E);wn=_t.getPixelForValue("object"==typeof De?De:NaN,E,qe),cr=N?Yt.getBasePixel():$.calculatePointY(De,E,qe),p._xScale=_t,p._yScale=Yt,p._options=sr,p._datasetIndex=qe,p._index=E,p._model={x:wn,y:cr,skip:de.skip||isNaN(wn)||isNaN(cr),radius:sr.radius,pointStyle:sr.pointStyle,rotation:sr.rotation,backgroundColor:sr.backgroundColor,borderColor:sr.borderColor,borderWidth:sr.borderWidth,tension:es(de.tension,Zt?Zt.tension:0),steppedLine:!!Zt&&Zt.steppedLine,hitRadius:sr.hitRadius}},_resolveDatasetElementOptions:function(p){var E=this,N=E._config,$=p.custom||{},Q=E.chart.options,de=Q.elements.line,ve=br.prototype._resolveDatasetElementOptions.apply(E,arguments);return ve.spanGaps=es(N.spanGaps,Q.spanGaps),ve.tension=es(N.lineTension,de.tension),ve.steppedLine=ua([$.steppedLine,N.steppedLine,de.stepped]),ve.clip=Er(es(N.clip,oa(E._xScale,E._yScale,ve.borderWidth))),ve},calculatePointY:function(p,E,N){var De,Yt,Zt,wn,cr,sr,Q=this.chart,de=this._yScale,ve=0,qe=0;if(de.options.stacked){for(wn=+de.getRightValue(p),sr=(cr=Q._getSortedVisibleDatasetMetas()).length,De=0;De<sr&&(Yt=cr[De]).index!==N;++De)"line"===Yt.type&&Yt.yAxisID===de.id&&((Zt=+de.getRightValue(Q.data.datasets[Yt.index].data[E]))<0?qe+=Zt||0:ve+=Zt||0);return de.getPixelForValue(wn<0?qe+wn:ve+wn)}return de.getPixelForValue(p)},updateBezierControlPoints:function(){var ve,qe,De,_t,E=this.chart,N=this.getMeta(),$=N.dataset._model,Q=E.chartArea,de=N.data||[];function Yt(Zt,wn,cr){return Math.max(Math.min(Zt,cr),wn)}if($.spanGaps&&(de=de.filter(function(Zt){return!Zt._model.skip})),"monotone"===$.cubicInterpolationMode)ht.splineCurveMonotone(de);else for(ve=0,qe=de.length;ve<qe;++ve)De=de[ve]._model,_t=ht.splineCurve(ht.previousItem(de,ve)._model,De,ht.nextItem(de,ve)._model,$.tension),De.controlPointPreviousX=_t.previous.x,De.controlPointPreviousY=_t.previous.y,De.controlPointNextX=_t.next.x,De.controlPointNextY=_t.next.y;if(E.options.elements.line.capBezierPoints)for(ve=0,qe=de.length;ve<qe;++ve)ds(De=de[ve]._model,Q)&&(ve>0&&ds(de[ve-1]._model,Q)&&(De.controlPointPreviousX=Yt(De.controlPointPreviousX,Q.left,Q.right),De.controlPointPreviousY=Yt(De.controlPointPreviousY,Q.top,Q.bottom)),ve<de.length-1&&ds(de[ve+1]._model,Q)&&(De.controlPointNextX=Yt(De.controlPointNextX,Q.left,Q.right),De.controlPointNextY=Yt(De.controlPointNextY,Q.top,Q.bottom)))},draw:function(){var De,p=this,E=p.chart,N=p.getMeta(),$=N.data||[],Q=E.chartArea,de=E.canvas,ve=0,qe=$.length;for(p._showLine&&(ht.canvas.clipArea(E.ctx,{left:!1===(De=N.dataset._model.clip).left?0:Q.left-De.left,right:!1===De.right?de.width:Q.right+De.right,top:!1===De.top?0:Q.top-De.top,bottom:!1===De.bottom?de.height:Q.bottom+De.bottom}),N.dataset.draw(),ht.canvas.unclipArea(E.ctx));ve<qe;++ve)$[ve].draw(Q)},setHoverStyle:function(p){var E=p._model,N=p._options,$=ht.getHoverColor;p.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=es(N.hoverBackgroundColor,$(N.backgroundColor)),E.borderColor=es(N.hoverBorderColor,$(N.borderColor)),E.borderWidth=es(N.hoverBorderWidth,N.borderWidth),E.radius=es(N.hoverRadius,N.radius)}}),pn=ht.options.resolve;mn._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(p){var de,ve,qe,E=document.createElement("ul"),N=p.data,$=N.datasets,Q=N.labels;if(E.setAttribute("class",p.id+"-legend"),$.length)for(de=0,ve=$[0].data.length;de<ve;++de)(qe=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=$[0].backgroundColor[de],Q[de]&&qe.appendChild(document.createTextNode(Q[de]));return E.outerHTML},legend:{labels:{generateLabels:function(p){var E=p.data;return E.labels.length&&E.datasets.length?E.labels.map(function(N,$){var Q=p.getDatasetMeta(0),de=Q.controller.getStyle($);return{text:N,fillStyle:de.backgroundColor,strokeStyle:de.borderColor,lineWidth:de.borderWidth,hidden:isNaN(E.datasets[0].data[$])||Q.data[$].hidden,index:$}}):[]}},onClick:function(p,E){var Q,de,ve,N=E.index,$=this.chart;for(Q=0,de=($.data.datasets||[]).length;Q<de;++Q)(ve=$.getDatasetMeta(Q)).data[N].hidden=!ve.data[N].hidden;$.update()}},tooltips:{callbacks:{title:function(){return""},label:function(p,E){return E.labels[p.index]+": "+p.yLabel}}}});var ee=br.extend({dataElementType:Vr.Arc,linkScales:ht.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(p){var De,_t,Yt,E=this,N=E.getDataset(),$=E.getMeta(),Q=E.chart.options.startAngle||0,de=E._starts=[],ve=E._angles=[],qe=$.data;for(E._updateRadius(),$.count=E.countVisibleElements(),De=0,_t=N.data.length;De<_t;De++)de[De]=Q,Yt=E._computeAngle(De),ve[De]=Yt,Q+=Yt;for(De=0,_t=qe.length;De<_t;++De)qe[De]._options=E._resolveDataElementOptions(qe[De],De),E.updateElement(qe[De],De,p)},_updateRadius:function(){var p=this,E=p.chart,N=E.chartArea,$=E.options,Q=Math.min(N.right-N.left,N.bottom-N.top);E.outerRadius=Math.max(Q/2,0),E.innerRadius=Math.max($.cutoutPercentage?E.outerRadius/100*$.cutoutPercentage:1,0),E.radiusLength=(E.outerRadius-E.innerRadius)/E.getVisibleDatasetCount(),p.outerRadius=E.outerRadius-E.radiusLength*p.index,p.innerRadius=p.outerRadius-E.radiusLength},updateElement:function(p,E,N){var $=this,Q=$.chart,de=$.getDataset(),ve=Q.options,qe=ve.animation,De=Q.scale,_t=Q.data.labels,Yt=De.xCenter,Zt=De.yCenter,wn=ve.startAngle,cr=p.hidden?0:De.getDistanceFromCenterForValue(de.data[E]),sr=$._starts[E],Tr=sr+(p.hidden?0:$._angles[E]),Yr=qe.animateScale?0:De.getDistanceFromCenterForValue(de.data[E]),Pi=p._options||{};ht.extend(p,{_datasetIndex:$.index,_index:E,_scale:De,_model:{backgroundColor:Pi.backgroundColor,borderColor:Pi.borderColor,borderWidth:Pi.borderWidth,borderAlign:Pi.borderAlign,x:Yt,y:Zt,innerRadius:0,outerRadius:N?Yr:cr,startAngle:N&&qe.animateRotate?wn:sr,endAngle:N&&qe.animateRotate?wn:Tr,label:ht.valueAtIndexOrDefault(_t,E,_t[E])}}),p.pivot()},countVisibleElements:function(){var p=this.getDataset(),E=this.getMeta(),N=0;return ht.each(E.data,function($,Q){!isNaN(p.data[Q])&&!$.hidden&&N++}),N},setHoverStyle:function(p){var E=p._model,N=p._options,$=ht.getHoverColor,Q=ht.valueOrDefault;p.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth},E.backgroundColor=Q(N.hoverBackgroundColor,$(N.backgroundColor)),E.borderColor=Q(N.hoverBorderColor,$(N.borderColor)),E.borderWidth=Q(N.hoverBorderWidth,N.borderWidth)},_computeAngle:function(p){var E=this,N=this.getMeta().count,$=E.getDataset(),Q=E.getMeta();return isNaN($.data[p])||Q.data[p].hidden?0:pn([E.chart.options.elements.arc.angle,2*Math.PI/N],{chart:E.chart,dataIndex:p,dataset:$,datasetIndex:E.index},p)}});mn._set("pie",ht.clone(mn.doughnut)),mn._set("pie",{cutoutPercentage:0});var Ve=Bo,fn=ht.valueOrDefault;mn._set("radar",{spanGaps:!1,scale:{type:"radialLinear"},elements:{line:{fill:"start",tension:0}}});var Tn=br.extend({datasetElementType:Vr.Line,dataElementType:Vr.Point,linkScales:ht.noop,_datasetElementOptions:["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(p){var qe,De,E=this,N=E.getMeta(),$=N.dataset,Q=N.data||[],de=E.chart.scale,ve=E._config;for(void 0!==ve.tension&&void 0===ve.lineTension&&(ve.lineTension=ve.tension),$._scale=de,$._datasetIndex=E.index,$._children=Q,$._loop=!0,$._model=E._resolveDatasetElementOptions($),$.pivot(),qe=0,De=Q.length;qe<De;++qe)E.updateElement(Q[qe],qe,p);for(E.updateBezierControlPoints(),qe=0,De=Q.length;qe<De;++qe)Q[qe].pivot()},updateElement:function(p,E,N){var $=this,Q=p.custom||{},de=$.getDataset(),ve=$.chart.scale,qe=ve.getPointPositionForValue(E,de.data[E]),De=$._resolveDataElementOptions(p,E),_t=$.getMeta().dataset._model,Yt=N?ve.xCenter:qe.x,Zt=N?ve.yCenter:qe.y;p._scale=ve,p._options=De,p._datasetIndex=$.index,p._index=E,p._model={x:Yt,y:Zt,skip:Q.skip||isNaN(Yt)||isNaN(Zt),radius:De.radius,pointStyle:De.pointStyle,rotation:De.rotation,backgroundColor:De.backgroundColor,borderColor:De.borderColor,borderWidth:De.borderWidth,tension:fn(Q.tension,_t?_t.tension:0),hitRadius:De.hitRadius}},_resolveDatasetElementOptions:function(){var p=this,E=p._config,N=p.chart.options,$=br.prototype._resolveDatasetElementOptions.apply(p,arguments);return $.spanGaps=fn(E.spanGaps,N.spanGaps),$.tension=fn(E.lineTension,N.elements.line.tension),$},updateBezierControlPoints:function(){var Q,de,ve,qe,E=this.getMeta(),N=this.chart.chartArea,$=E.data||[];function De(_t,Yt,Zt){return Math.max(Math.min(_t,Zt),Yt)}for(E.dataset._model.spanGaps&&($=$.filter(function(_t){return!_t._model.skip})),Q=0,de=$.length;Q<de;++Q)ve=$[Q]._model,qe=ht.splineCurve(ht.previousItem($,Q,!0)._model,ve,ht.nextItem($,Q,!0)._model,ve.tension),ve.controlPointPreviousX=De(qe.previous.x,N.left,N.right),ve.controlPointPreviousY=De(qe.previous.y,N.top,N.bottom),ve.controlPointNextX=De(qe.next.x,N.left,N.right),ve.controlPointNextY=De(qe.next.y,N.top,N.bottom)},setHoverStyle:function(p){var E=p._model,N=p._options,$=ht.getHoverColor;p.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=fn(N.hoverBackgroundColor,$(N.backgroundColor)),E.borderColor=fn(N.hoverBorderColor,$(N.borderColor)),E.borderWidth=fn(N.hoverBorderWidth,N.borderWidth),E.radius=fn(N.hoverRadius,N.radius)}});mn._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},tooltips:{callbacks:{title:function(){return""},label:function(p){return"("+p.xLabel+", "+p.yLabel+")"}}}}),mn._set("global",{datasets:{scatter:{showLine:!1}}});var ni={bar:Fi,bubble:qi,doughnut:Bo,horizontalBar:Jo,line:st,polarArea:ee,pie:Ve,radar:Tn,scatter:st};function Ri(p,E){return p.native?{x:p.x,y:p.y}:ht.getRelativePosition(p,E)}function Do(p,E){var $,Q,de,ve,qe,De,N=p._getSortedVisibleDatasetMetas();for(Q=0,ve=N.length;Q<ve;++Q)for(de=0,qe=($=N[Q].data).length;de<qe;++de)(De=$[de])._view.skip||E(De)}function gi(p,E){var N=[];return Do(p,function($){$.inRange(E.x,E.y)&&N.push($)}),N}function Hi(p,E,N,$){var Q=Number.POSITIVE_INFINITY,de=[];return Do(p,function(ve){if(!N||ve.inRange(E.x,E.y)){var qe=ve.getCenterPoint(),De=$(E,qe);De<Q?(de=[ve],Q=De):De===Q&&de.push(ve)}}),de}function Li(p){var E=-1!==p.indexOf("x"),N=-1!==p.indexOf("y");return function($,Q){var de=E?Math.abs($.x-Q.x):0,ve=N?Math.abs($.y-Q.y):0;return Math.sqrt(Math.pow(de,2)+Math.pow(ve,2))}}function cs(p,E,N){var $=Ri(E,p);N.axis=N.axis||"x";var Q=Li(N.axis),de=N.intersect?gi(p,$):Hi(p,$,!1,Q),ve=[];return de.length?(p._getSortedVisibleDatasetMetas().forEach(function(qe){var De=qe.data[de[0]._index];De&&!De._view.skip&&ve.push(De)}),ve):[]}var Os={modes:{single:function(p,E){var N=Ri(E,p),$=[];return Do(p,function(Q){if(Q.inRange(N.x,N.y))return $.push(Q),$}),$.slice(0,1)},label:cs,index:cs,dataset:function(p,E,N){var $=Ri(E,p);N.axis=N.axis||"xy";var Q=Li(N.axis),de=N.intersect?gi(p,$):Hi(p,$,!1,Q);return de.length>0&&(de=p.getDatasetMeta(de[0]._datasetIndex).data),de},"x-axis":function(p,E){return cs(p,E,{intersect:!1})},point:function(p,E){return gi(p,Ri(E,p))},nearest:function(p,E,N){var $=Ri(E,p);N.axis=N.axis||"xy";var Q=Li(N.axis);return Hi(p,$,N.intersect,Q)},x:function(p,E,N){var $=Ri(E,p),Q=[],de=!1;return Do(p,function(ve){ve.inXRange($.x)&&Q.push(ve),ve.inRange($.x,$.y)&&(de=!0)}),N.intersect&&!de&&(Q=[]),Q},y:function(p,E,N){var $=Ri(E,p),Q=[],de=!1;return Do(p,function(ve){ve.inYRange($.y)&&Q.push(ve),ve.inRange($.x,$.y)&&(de=!0)}),N.intersect&&!de&&(Q=[]),Q}}},da=ht.extend;function xa(p,E){return ht.where(p,function(N){return N.pos===E})}function Ra(p,E){return p.sort(function(N,$){var Q=E?$:N,de=E?N:$;return Q.weight===de.weight?Q.index-de.index:Q.weight-de.weight})}function sa(p,E,N,$){return Math.max(p[N],E[N])+Math.max(p[$],E[$])}function Fo(p,E,N){var de,ve,$=N.box,Q=p.maxPadding;if(N.size&&(p[N.pos]-=N.size),N.size=N.horizontal?$.height:$.width,p[N.pos]+=N.size,$.getPadding){var qe=$.getPadding();Q.top=Math.max(Q.top,qe.top),Q.left=Math.max(Q.left,qe.left),Q.bottom=Math.max(Q.bottom,qe.bottom),Q.right=Math.max(Q.right,qe.right)}if(de=E.outerWidth-sa(Q,p,"left","right"),ve=E.outerHeight-sa(Q,p,"top","bottom"),de!==p.w||ve!==p.h){p.w=de,p.h=ve;var De=N.horizontal?[de,p.w]:[ve,p.h];return!(De[0]===De[1]||isNaN(De[0])&&isNaN(De[1]))}}function Sa(p,E){var de,N=E.maxPadding;return de={left:0,top:0,right:0,bottom:0},(p?["left","right"]:["top","bottom"]).forEach(function(ve){de[ve]=Math.max(E[ve],N[ve])}),de}function fa(p,E,N){var Q,de,ve,qe,De,_t,$=[];for(Q=0,de=p.length;Q<de;++Q)(qe=(ve=p[Q]).box).update(ve.width||E.w,ve.height||E.h,Sa(ve.horizontal,E)),Fo(E,N,ve)&&(_t=!0,$.length&&(De=!0)),qe.fullWidth||$.push(ve);return De&&fa($,E,N)||_t}function ks(p,E,N){var ve,qe,De,_t,$=N.padding,Q=E.x,de=E.y;for(ve=0,qe=p.length;ve<qe;++ve)_t=(De=p[ve]).box,De.horizontal?(_t.left=_t.fullWidth?$.left:E.left,_t.right=_t.fullWidth?N.outerWidth-$.right:E.left+E.w,_t.top=de,_t.bottom=de+_t.height,_t.width=_t.right-_t.left,de=_t.bottom):(_t.left=Q,_t.right=Q+_t.width,_t.top=E.top,_t.bottom=E.top+E.h,_t.height=_t.bottom-_t.top,Q=_t.right);E.x=Q,E.y=de}mn._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var Ua={defaults:{},addBox:function(p,E){p.boxes||(p.boxes=[]),E.fullWidth=E.fullWidth||!1,E.position=E.position||"top",E.weight=E.weight||0,E._layers=E._layers||function(){return[{z:0,draw:function(){E.draw.apply(E,arguments)}}]},p.boxes.push(E)},removeBox:function(p,E){var N=p.boxes?p.boxes.indexOf(E):-1;-1!==N&&p.boxes.splice(N,1)},configure:function(p,E,N){for(var ve,$=["fullWidth","position","weight"],Q=$.length,de=0;de<Q;++de)N.hasOwnProperty(ve=$[de])&&(E[ve]=N[ve])},update:function(p,E,N){if(p){var Q=ht.options.toPadding((p.options.layout||{}).padding),de=E-Q.width,ve=N-Q.height,qe=function(p){var E=function(p){var N,$,Q,E=[];for(N=0,$=(p||[]).length;N<$;++N)E.push({index:N,box:Q=p[N],pos:Q.position,horizontal:Q.isHorizontal(),weight:Q.weight});return E}(p),N=Ra(xa(E,"left"),!0),$=Ra(xa(E,"right")),Q=Ra(xa(E,"top"),!0),de=Ra(xa(E,"bottom"));return{leftAndTop:N.concat(Q),rightAndBottom:$.concat(de),chartArea:xa(E,"chartArea"),vertical:N.concat($),horizontal:Q.concat(de)}}(p.boxes),De=qe.vertical,_t=qe.horizontal,Yt=Object.freeze({outerWidth:E,outerHeight:N,padding:Q,availableWidth:de,vBoxMaxWidth:de/2/De.length,hBoxMaxHeight:ve/2}),Zt=da({maxPadding:da({},Q),w:de,h:ve,x:Q.left,y:Q.top},Q);(function(p,E){var N,$,Q;for(N=0,$=p.length;N<$;++N)(Q=p[N]).width=Q.horizontal?Q.box.fullWidth&&E.availableWidth:E.vBoxMaxWidth,Q.height=Q.horizontal&&E.hBoxMaxHeight})(De.concat(_t),Yt),fa(De,Zt,Yt),fa(_t,Zt,Yt)&&fa(De,Zt,Yt),function(p){var E=p.maxPadding;function N($){var Q=Math.max(E[$]-p[$],0);return p[$]+=Q,Q}p.y+=N("top"),p.x+=N("left"),N("right"),N("bottom")}(Zt),ks(qe.leftAndTop,Zt,Yt),Zt.x+=Zt.w,Zt.y+=Zt.h,ks(qe.rightAndBottom,Zt,Yt),p.chartArea={left:Zt.left,top:Zt.top,right:Zt.left+Zt.w,bottom:Zt.top+Zt.h},ht.each(qe.chartArea,function(wn){var cr=wn.box;da(cr,p.chartArea),cr.update(Zt.w,Zt.h)})}}},Ce=function(p){return p&&p.default||p}(Object.freeze({__proto__:null,default:"/*\r\n * DOM element rendering detection\r\n * https://davidwalsh.name/detect-node-insertion\r\n */\r\n@keyframes chartjs-render-animation {\r\n\tfrom { opacity: 0.99; }\r\n\tto { opacity: 1; }\r\n}\r\n\r\n.chartjs-render-monitor {\r\n\tanimation: chartjs-render-animation 0.001s;\r\n}\r\n\r\n/*\r\n * DOM element resizing detection\r\n * https://github.com/marcj/css-element-queries\r\n */\r\n.chartjs-size-monitor,\r\n.chartjs-size-monitor-expand,\r\n.chartjs-size-monitor-shrink {\r\n\tposition: absolute;\r\n\tdirection: ltr;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\tvisibility: hidden;\r\n\tz-index: -1;\r\n}\r\n\r\n.chartjs-size-monitor-expand > div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n"})),ye="$chartjs",Ne="chartjs-",Wt=Ne+"size-monitor",Or=Ne+"render-monitor",Yo=["animationstart","webkitAnimationStart"],ms={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ss(p,E){var N=ht.getStyle(p,E),$=N&&N.match(/^(\d+)(\.\d+)?px$/);return $?Number($[1]):void 0}var Ea=!!function(){var p=!1;try{var E=Object.defineProperty({},"passive",{get:function(){p=!0}});window.addEventListener("e",null,E)}catch(N){}return p}()&&{passive:!0};function ul(p,E,N){p.addEventListener(E,N,Ea)}function Ma(p,E,N){p.removeEventListener(E,N,Ea)}function va(p,E,N,$,Q){return{type:p,chart:E,native:Q||null,x:void 0!==N?N:null,y:void 0!==$?$:null}}function Ol(p){var E=document.createElement("div");return E.className=p||"",E}function Il(p,E,N){var $=p[ye]||(p[ye]={}),Q=$.resizer=function(p){var E=1e6,N=Ol(Wt),$=Ol(Wt+"-expand"),Q=Ol(Wt+"-shrink");$.appendChild(Ol()),Q.appendChild(Ol()),N.appendChild($),N.appendChild(Q),N._reset=function(){$.scrollLeft=E,$.scrollTop=E,Q.scrollLeft=E,Q.scrollTop=E};var de=function(){N._reset(),p()};return ul($,"scroll",de.bind($,"expand")),ul(Q,"scroll",de.bind(Q,"shrink")),N}(function(p,E){var N=!1,$=[];return function(){$=Array.prototype.slice.call(arguments),E=E||this,N||(N=!0,ht.requestAnimFrame.call(window,function(){N=!1,p.apply(E,$)}))}}(function(){if($.resizer){var de=N.options.maintainAspectRatio&&p.parentNode,ve=de?de.clientWidth:0;E(va("resize",N)),de&&de.clientWidth<ve&&N.canvas&&E(va("resize",N))}}));!function(p,E){var N=p[ye]||(p[ye]={}),$=N.renderProxy=function(Q){"chartjs-render-animation"===Q.animationName&&E()};ht.each(Yo,function(Q){ul(p,Q,$)}),N.reflow=!!p.offsetParent,p.classList.add(Or)}(p,function(){if($.resizer){var de=p.parentNode;de&&de!==Q.parentNode&&de.insertBefore(Q,de.firstChild),Q._reset()}})}function Bl(p){var E=p[ye]||{},N=E.resizer;delete E.resizer,function(p){var E=p[ye]||{},N=E.renderProxy;N&&(ht.each(Yo,function($){Ma(p,$,N)}),delete E.renderProxy),p.classList.remove(Or)}(p),N&&N.parentNode&&N.parentNode.removeChild(N)}var Di={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(p){if(!this.disableCSSInjection){var E=p.getRootNode?p.getRootNode():document;!function(p,E){var N=p[ye]||(p[ye]={});if(!N.containsStyles){N.containsStyles=!0,E="/* Chart.js */\n"+E;var $=document.createElement("style");$.setAttribute("type","text/css"),$.appendChild(document.createTextNode(E)),p.appendChild($)}}(E.host?E:document.head,Ce)}},acquireContext:function(p,E){"string"==typeof p?p=document.getElementById(p):p.length&&(p=p[0]),p&&p.canvas&&(p=p.canvas);var N=p&&p.getContext&&p.getContext("2d");return N&&N.canvas===p?(this._ensureLoaded(p),function(p,E){var N=p.style,$=p.getAttribute("height"),Q=p.getAttribute("width");if(p[ye]={initial:{height:$,width:Q,style:{display:N.display,height:N.height,width:N.width}}},N.display=N.display||"block",null===Q||""===Q){var de=ss(p,"width");void 0!==de&&(p.width=de)}if(null===$||""===$)if(""===p.style.height)p.height=p.width/(E.options.aspectRatio||2);else{var ve=ss(p,"height");void 0!==de&&(p.height=ve)}}(p,E),N):null},releaseContext:function(p){var E=p.canvas;if(E[ye]){var N=E[ye].initial;["height","width"].forEach(function($){var Q=N[$];ht.isNullOrUndef(Q)?E.removeAttribute($):E.setAttribute($,Q)}),ht.each(N.style||{},function($,Q){E.style[Q]=$}),E.width=E.width,delete E[ye]}},addEventListener:function(p,E,N){var $=p.canvas;if("resize"!==E){var Q=N[ye]||(N[ye]={});ul($,E,(Q.proxies||(Q.proxies={}))[p.id+"_"+E]=function(qe){N(function(p,E){var N=ms[p.type]||p.type,$=ht.getRelativePosition(p,E);return va(N,E,$.x,$.y,p)}(qe,p))})}else Il($,N,p)},removeEventListener:function(p,E,N){var $=p.canvas;if("resize"!==E){var ve=((N[ye]||{}).proxies||{})[p.id+"_"+E];!ve||Ma($,E,ve)}else Bl($)}};ht.addEvent=ul,ht.removeEvent=Ma;var pa=ht.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Di._enabled?Di:{acquireContext:function(p){return p&&p.canvas&&(p=p.canvas),p&&p.getContext("2d")||null}});mn._set("global",{plugins:{}});var Vo={_plugins:[],_cacheId:0,register:function(p){var E=this._plugins;[].concat(p).forEach(function(N){-1===E.indexOf(N)&&E.push(N)}),this._cacheId++},unregister:function(p){var E=this._plugins;[].concat(p).forEach(function(N){var $=E.indexOf(N);-1!==$&&E.splice($,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(p,E,N){var de,ve,qe,De,_t,$=this.descriptors(p),Q=$.length;for(de=0;de<Q;++de)if("function"==typeof(_t=(qe=(ve=$[de]).plugin)[E])&&((De=[p].concat(N||[])).push(ve.options),!1===_t.apply(qe,De)))return!1;return!0},descriptors:function(p){var E=p.$plugins||(p.$plugins={});if(E.id===this._cacheId)return E.descriptors;var N=[],$=[],Q=p&&p.config||{},de=Q.options&&Q.options.plugins||{};return this._plugins.concat(Q.plugins||[]).forEach(function(ve){if(-1===N.indexOf(ve)){var De=ve.id,_t=de[De];!1!==_t&&(!0===_t&&(_t=ht.clone(mn.global.plugins[De])),N.push(ve),$.push({plugin:ve,options:_t||{}}))}}),E.descriptors=$,E.id=this._cacheId,$},_invalidate:function(p){delete p.$plugins}},ja={constructors:{},defaults:{},registerScaleType:function(p,E,N){this.constructors[p]=E,this.defaults[p]=ht.clone(N)},getScaleConstructor:function(p){return this.constructors.hasOwnProperty(p)?this.constructors[p]:void 0},getScaleDefaults:function(p){return this.defaults.hasOwnProperty(p)?ht.merge(Object.create(null),[mn.scale,this.defaults[p]]):{}},updateScaleDefaults:function(p,E){var N=this;N.defaults.hasOwnProperty(p)&&(N.defaults[p]=ht.extend(N.defaults[p],E))},addScalesToLayout:function(p){ht.each(p.scales,function(E){E.fullWidth=E.options.fullWidth,E.position=E.options.position,E.weight=E.options.weight,Ua.addBox(p,E)})}},hs=ht.valueOrDefault,ze=ht.rtl.getRtlAdapter;mn._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:ht.noop,title:function(p,E){var N="",$=E.labels,Q=$?$.length:0;if(p.length>0){var de=p[0];de.label?N=de.label:de.xLabel?N=de.xLabel:Q>0&&de.index<Q&&(N=$[de.index])}return N},afterTitle:ht.noop,beforeBody:ht.noop,beforeLabel:ht.noop,label:function(p,E){var N=E.datasets[p.datasetIndex].label||"";return N&&(N+=": "),ht.isNullOrUndef(p.value)?N+=p.yLabel:N+=p.value,N},labelColor:function(p,E){var Q=E.getDatasetMeta(p.datasetIndex).data[p.index]._view;return{borderColor:Q.borderColor,backgroundColor:Q.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:ht.noop,afterBody:ht.noop,beforeFooter:ht.noop,footer:ht.noop,afterFooter:ht.noop}}});var wt={average:function(p){if(!p.length)return!1;var E,N,$=0,Q=0,de=0;for(E=0,N=p.length;E<N;++E){var ve=p[E];if(ve&&ve.hasValue()){var qe=ve.tooltipPosition();$+=qe.x,Q+=qe.y,++de}}return{x:$/de,y:Q/de}},nearest:function(p,E){var de,ve,qe,N=E.x,$=E.y,Q=Number.POSITIVE_INFINITY;for(de=0,ve=p.length;de<ve;++de){var De=p[de];if(De&&De.hasValue()){var _t=De.getCenterPoint(),Yt=ht.distanceBetweenPoints(E,_t);Yt<Q&&(Q=Yt,qe=De)}}if(qe){var Zt=qe.tooltipPosition();N=Zt.x,$=Zt.y}return{x:N,y:$}}};function kt(p,E){return E&&(ht.isArray(E)?Array.prototype.push.apply(p,E):p.push(E)),p}function tn(p){return("string"==typeof p||p instanceof String)&&p.indexOf("\n")>-1?p.split("\n"):p}function ur(p){var E=p._xScale,N=p._yScale||p._scale,$=p._index,Q=p._datasetIndex,de=p._chart.getDatasetMeta(Q).controller,ve=de._getIndexScale(),qe=de._getValueScale();return{xLabel:E?E.getLabelForIndex($,Q):"",yLabel:N?N.getLabelForIndex($,Q):"",label:ve?""+ve.getLabelForIndex($,Q):"",value:qe?""+qe.getLabelForIndex($,Q):"",index:$,datasetIndex:Q,x:p._model.x,y:p._model.y}}function gn(p){var E=mn.global;return{xPadding:p.xPadding,yPadding:p.yPadding,xAlign:p.xAlign,yAlign:p.yAlign,rtl:p.rtl,textDirection:p.textDirection,bodyFontColor:p.bodyFontColor,_bodyFontFamily:hs(p.bodyFontFamily,E.defaultFontFamily),_bodyFontStyle:hs(p.bodyFontStyle,E.defaultFontStyle),_bodyAlign:p.bodyAlign,bodyFontSize:hs(p.bodyFontSize,E.defaultFontSize),bodySpacing:p.bodySpacing,titleFontColor:p.titleFontColor,_titleFontFamily:hs(p.titleFontFamily,E.defaultFontFamily),_titleFontStyle:hs(p.titleFontStyle,E.defaultFontStyle),titleFontSize:hs(p.titleFontSize,E.defaultFontSize),_titleAlign:p.titleAlign,titleSpacing:p.titleSpacing,titleMarginBottom:p.titleMarginBottom,footerFontColor:p.footerFontColor,_footerFontFamily:hs(p.footerFontFamily,E.defaultFontFamily),_footerFontStyle:hs(p.footerFontStyle,E.defaultFontStyle),footerFontSize:hs(p.footerFontSize,E.defaultFontSize),_footerAlign:p.footerAlign,footerSpacing:p.footerSpacing,footerMarginTop:p.footerMarginTop,caretSize:p.caretSize,cornerRadius:p.cornerRadius,backgroundColor:p.backgroundColor,opacity:0,legendColorBackground:p.multiKeyBackground,displayColors:p.displayColors,borderColor:p.borderColor,borderWidth:p.borderWidth}}function mi(p,E){return"center"===E?p.x+p.width/2:"right"===E?p.x+p.width-p.xPadding:p.x+p.xPadding}function ii(p){return kt([],tn(p))}var Ui=ot.extend({initialize:function(){this._model=gn(this._options),this._lastActive=[]},getTitle:function(){var p=this,N=p._options.callbacks,$=N.beforeTitle.apply(p,arguments),Q=N.title.apply(p,arguments),de=N.afterTitle.apply(p,arguments),ve=[];return ve=kt(ve,tn($)),ve=kt(ve,tn(Q)),kt(ve,tn(de))},getBeforeBody:function(){return ii(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(p,E){var N=this,$=N._options.callbacks,Q=[];return ht.each(p,function(de){var ve={before:[],lines:[],after:[]};kt(ve.before,tn($.beforeLabel.call(N,de,E))),kt(ve.lines,$.label.call(N,de,E)),kt(ve.after,tn($.afterLabel.call(N,de,E))),Q.push(ve)}),Q},getAfterBody:function(){return ii(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var p=this,E=p._options.callbacks,N=E.beforeFooter.apply(p,arguments),$=E.footer.apply(p,arguments),Q=E.afterFooter.apply(p,arguments),de=[];return de=kt(de,tn(N)),de=kt(de,tn($)),kt(de,tn(Q))},update:function(p){var Zt,wn,E=this,N=E._options,$=E._model,Q=E._model=gn(N),de=E._active,ve=E._data,qe={xAlign:$.xAlign,yAlign:$.yAlign},De={x:$.x,y:$.y},_t={width:$.width,height:$.height},Yt={x:$.caretX,y:$.caretY};if(de.length){Q.opacity=1;var cr=[],sr=[];Yt=wt[N.position].call(E,de,E._eventPosition);var Tr=[];for(Zt=0,wn=de.length;Zt<wn;++Zt)Tr.push(ur(de[Zt]));N.filter&&(Tr=Tr.filter(function(Yr){return N.filter(Yr,ve)})),N.itemSort&&(Tr=Tr.sort(function(Yr,Pi){return N.itemSort(Yr,Pi,ve)})),ht.each(Tr,function(Yr){cr.push(N.callbacks.labelColor.call(E,Yr,E._chart)),sr.push(N.callbacks.labelTextColor.call(E,Yr,E._chart))}),Q.title=E.getTitle(Tr,ve),Q.beforeBody=E.getBeforeBody(Tr,ve),Q.body=E.getBody(Tr,ve),Q.afterBody=E.getAfterBody(Tr,ve),Q.footer=E.getFooter(Tr,ve),Q.x=Yt.x,Q.y=Yt.y,Q.caretPadding=N.caretPadding,Q.labelColors=cr,Q.labelTextColors=sr,Q.dataPoints=Tr,De=function(p,E,N,$){var Q=p.x,de=p.y,qe=p.caretPadding,_t=N.xAlign,Yt=N.yAlign,Zt=p.caretSize+qe,wn=p.cornerRadius+qe;return"right"===_t?Q-=E.width:"center"===_t&&((Q-=E.width/2)+E.width>$.width&&(Q=$.width-E.width),Q<0&&(Q=0)),"top"===Yt?de+=Zt:de-="bottom"===Yt?E.height+Zt:E.height/2,"center"===Yt?"left"===_t?Q+=Zt:"right"===_t&&(Q-=Zt):"left"===_t?Q-=wn:"right"===_t&&(Q+=wn),{x:Q,y:de}}(Q,_t=function(p,E){var N=p._chart.ctx,$=2*E.yPadding,Q=0,de=E.body,ve=de.reduce(function(sr,Tr){return sr+Tr.before.length+Tr.lines.length+Tr.after.length},0),qe=E.title.length,De=E.footer.length,_t=E.titleFontSize,Yt=E.bodyFontSize,Zt=E.footerFontSize;$+=qe*_t,$+=qe?(qe-1)*E.titleSpacing:0,$+=qe?E.titleMarginBottom:0,$+=(ve+=E.beforeBody.length+E.afterBody.length)*Yt,$+=ve?(ve-1)*E.bodySpacing:0,$+=De?E.footerMarginTop:0,$+=De*Zt,$+=De?(De-1)*E.footerSpacing:0;var wn=0,cr=function(sr){Q=Math.max(Q,N.measureText(sr).width+wn)};return N.font=ht.fontString(_t,E._titleFontStyle,E._titleFontFamily),ht.each(E.title,cr),N.font=ht.fontString(Yt,E._bodyFontStyle,E._bodyFontFamily),ht.each(E.beforeBody.concat(E.afterBody),cr),wn=E.displayColors?Yt+2:0,ht.each(de,function(sr){ht.each(sr.before,cr),ht.each(sr.lines,cr),ht.each(sr.after,cr)}),wn=0,N.font=ht.fontString(Zt,E._footerFontStyle,E._footerFontFamily),ht.each(E.footer,cr),{width:Q+=2*E.xPadding,height:$}}(this,Q),qe=function(p,E){var N=p._model,$=p._chart,Q=p._chart.chartArea,de="center",ve="center";N.y<E.height?ve="top":N.y>$.height-E.height&&(ve="bottom");var qe,De,_t,Yt,Zt,wn=(Q.left+Q.right)/2,cr=(Q.top+Q.bottom)/2;"center"===ve?(qe=function(Tr){return Tr<=wn},De=function(Tr){return Tr>wn}):(qe=function(Tr){return Tr<=E.width/2},De=function(Tr){return Tr>=$.width-E.width/2}),_t=function(Tr){return Tr+E.width+N.caretSize+N.caretPadding>$.width},Yt=function(Tr){return Tr-E.width-N.caretSize-N.caretPadding<0},Zt=function(Tr){return Tr<=cr?"top":"bottom"},qe(N.x)?(de="left",_t(N.x)&&(de="center",ve=Zt(N.y))):De(N.x)&&(de="right",Yt(N.x)&&(de="center",ve=Zt(N.y)));var sr=p._options;return{xAlign:sr.xAlign?sr.xAlign:de,yAlign:sr.yAlign?sr.yAlign:ve}}(this,_t),E._chart)}else Q.opacity=0;return Q.xAlign=qe.xAlign,Q.yAlign=qe.yAlign,Q.x=De.x,Q.y=De.y,Q.width=_t.width,Q.height=_t.height,Q.caretX=Yt.x,Q.caretY=Yt.y,E._model=Q,p&&N.custom&&N.custom.call(E,Q),E},drawCaret:function(p,E){var N=this._chart.ctx,Q=this.getCaretPosition(p,E,this._view);N.lineTo(Q.x1,Q.y1),N.lineTo(Q.x2,Q.y2),N.lineTo(Q.x3,Q.y3)},getCaretPosition:function(p,E,N){var $,Q,de,ve,qe,De,_t=N.caretSize,Yt=N.cornerRadius,Zt=N.xAlign,wn=N.yAlign,cr=p.x,sr=p.y,Tr=E.width,Yr=E.height;if("center"===wn)qe=sr+Yr/2,"left"===Zt?(Q=($=cr)-_t,de=$,ve=qe+_t,De=qe-_t):(Q=($=cr+Tr)+_t,de=$,ve=qe-_t,De=qe+_t);else if("left"===Zt?($=(Q=cr+Yt+_t)-_t,de=Q+_t):"right"===Zt?($=(Q=cr+Tr-Yt-_t)-_t,de=Q+_t):($=(Q=N.caretX)-_t,de=Q+_t),"top"===wn)qe=(ve=sr)-_t,De=ve;else{qe=(ve=sr+Yr)+_t,De=ve;var Pi=de;de=$,$=Pi}return{x1:$,x2:Q,x3:de,y1:ve,y2:qe,y3:De}},drawTitle:function(p,E,N){var de,ve,qe,$=E.title,Q=$.length;if(Q){var De=ze(E.rtl,E.x,E.width);for(p.x=mi(E,E._titleAlign),N.textAlign=De.textAlign(E._titleAlign),N.textBaseline="middle",de=E.titleFontSize,ve=E.titleSpacing,N.fillStyle=E.titleFontColor,N.font=ht.fontString(de,E._titleFontStyle,E._titleFontFamily),qe=0;qe<Q;++qe)N.fillText($[qe],De.x(p.x),p.y+de/2),p.y+=de+ve,qe+1===Q&&(p.y+=E.titleMarginBottom-ve)}},drawBody:function(p,E,N){var wn,cr,sr,Tr,Yr,Pi,yo,Co,$=E.bodyFontSize,Q=E.bodySpacing,de=E._bodyAlign,ve=E.body,qe=E.displayColors,De=0,_t=qe?mi(E,"left"):0,Yt=ze(E.rtl,E.x,E.width),Zt=function(_s){N.fillText(_s,Yt.x(p.x+De),p.y+$/2),p.y+=$+Q},Xo=Yt.textAlign(de);for(N.textAlign=de,N.textBaseline="middle",N.font=ht.fontString($,E._bodyFontStyle,E._bodyFontFamily),p.x=mi(E,Xo),N.fillStyle=E.bodyFontColor,ht.each(E.beforeBody,Zt),De=qe&&"right"!==Xo?"center"===de?$/2+1:$+2:0,Yr=0,yo=ve.length;Yr<yo;++Yr){for(wn=ve[Yr],sr=E.labelColors[Yr],N.fillStyle=cr=E.labelTextColors[Yr],ht.each(wn.before,Zt),Pi=0,Co=(Tr=wn.lines).length;Pi<Co;++Pi){if(qe){var ts=Yt.x(_t);N.fillStyle=E.legendColorBackground,N.fillRect(Yt.leftForLtr(ts,$),p.y,$,$),N.lineWidth=1,N.strokeStyle=sr.borderColor,N.strokeRect(Yt.leftForLtr(ts,$),p.y,$,$),N.fillStyle=sr.backgroundColor,N.fillRect(Yt.leftForLtr(Yt.xPlus(ts,1),$-2),p.y+1,$-2,$-2),N.fillStyle=cr}Zt(Tr[Pi])}ht.each(wn.after,Zt)}De=0,ht.each(E.afterBody,Zt),p.y-=Q},drawFooter:function(p,E,N){var de,ve,$=E.footer,Q=$.length;if(Q){var qe=ze(E.rtl,E.x,E.width);for(p.x=mi(E,E._footerAlign),p.y+=E.footerMarginTop,N.textAlign=qe.textAlign(E._footerAlign),N.textBaseline="middle",de=E.footerFontSize,N.fillStyle=E.footerFontColor,N.font=ht.fontString(de,E._footerFontStyle,E._footerFontFamily),ve=0;ve<Q;++ve)N.fillText($[ve],qe.x(p.x),p.y+de/2),p.y+=de+E.footerSpacing}},drawBackground:function(p,E,N,$){N.fillStyle=E.backgroundColor,N.strokeStyle=E.borderColor,N.lineWidth=E.borderWidth;var Q=E.xAlign,de=E.yAlign,ve=p.x,qe=p.y,De=$.width,_t=$.height,Yt=E.cornerRadius;N.beginPath(),N.moveTo(ve+Yt,qe),"top"===de&&this.drawCaret(p,$),N.lineTo(ve+De-Yt,qe),N.quadraticCurveTo(ve+De,qe,ve+De,qe+Yt),"center"===de&&"right"===Q&&this.drawCaret(p,$),N.lineTo(ve+De,qe+_t-Yt),N.quadraticCurveTo(ve+De,qe+_t,ve+De-Yt,qe+_t),"bottom"===de&&this.drawCaret(p,$),N.lineTo(ve+Yt,qe+_t),N.quadraticCurveTo(ve,qe+_t,ve,qe+_t-Yt),"center"===de&&"left"===Q&&this.drawCaret(p,$),N.lineTo(ve,qe+Yt),N.quadraticCurveTo(ve,qe,ve+Yt,qe),N.closePath(),N.fill(),E.borderWidth>0&&N.stroke()},draw:function(){var p=this._chart.ctx,E=this._view;if(0!==E.opacity){var N={width:E.width,height:E.height},$={x:E.x,y:E.y},Q=Math.abs(E.opacity<.001)?0:E.opacity;this._options.enabled&&(E.title.length||E.beforeBody.length||E.body.length||E.afterBody.length||E.footer.length)&&(p.save(),p.globalAlpha=Q,this.drawBackground($,E,p,N),$.y+=E.yPadding,ht.rtl.overrideTextDirection(p,E.textDirection),this.drawTitle($,E,p),this.drawBody($,E,p),this.drawFooter($,E,p),ht.rtl.restoreTextDirection(p,E.textDirection),p.restore())}},handleEvent:function(p){var $,E=this,N=E._options;return E._lastActive=E._lastActive||[],"mouseout"===p.type?E._active=[]:(E._active=E._chart.getElementsAtEventForMode(p,N.mode,N),N.reverse&&E._active.reverse()),($=!ht.arrayEquals(E._active,E._lastActive))&&(E._lastActive=E._active,(N.enabled||N.custom)&&(E._eventPosition={x:p.x,y:p.y},E.update(!0),E.pivot())),$}});Ui.positioners=wt;var io=ht.valueOrDefault;function vo(){return ht.merge(Object.create(null),[].slice.call(arguments),{merger:function(p,E,N,$){if("xAxes"===p||"yAxes"===p){var de,ve,qe,Q=N[p].length;for(E[p]||(E[p]=[]),de=0;de<Q;++de)ve=io((qe=N[p][de]).type,"xAxes"===p?"category":"linear"),de>=E[p].length&&E[p].push({}),ht.merge(E[p][de],!E[p][de].type||qe.type&&qe.type!==E[p][de].type?[ja.getScaleDefaults(ve),qe]:qe)}else ht._merger(p,E,N,$)}})}function Bi(){return ht.merge(Object.create(null),[].slice.call(arguments),{merger:function(p,E,N,$){var Q=E[p]||Object.create(null),de=N[p];"scales"===p?E[p]=vo(Q,de):"scale"===p?E[p]=ht.merge(Q,[ja.getScaleDefaults(de.type),de]):ht._merger(p,E,N,$)}})}function Br(p){var E=p.options;ht.each(p.scales,function(N){Ua.removeBox(p,N)}),E=Bi(mn.global,mn[p.config.type],E),p.options=p.config.options=E,p.ensureScalesHaveIDs(),p.buildOrUpdateScales(),p.tooltip._options=E.tooltips,p.tooltip.initialize()}function G(p,E,N){var $,Q=function(de){return de.id===$};do{$=E+N++}while(ht.findIndex(p,Q)>=0);return $}function Se(p){return"top"===p||"bottom"===p}function ft(p,E){return function(N,$){return N[p]===$[p]?N[E]-$[E]:N[p]-$[p]}}mn._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ft=function(p,E){return this.construct(p,E),this};ht.extend(Ft.prototype,{construct:function(p,E){var N=this;E=function(p){var E=(p=p||Object.create(null)).data=p.data||{};return E.datasets=E.datasets||[],E.labels=E.labels||[],p.options=Bi(mn.global,mn[p.type],p.options||{}),p}(E);var $=pa.acquireContext(p,E),Q=$&&$.canvas,de=Q&&Q.height,ve=Q&&Q.width;N.id=ht.uid(),N.ctx=$,N.canvas=Q,N.config=E,N.width=ve,N.height=de,N.aspectRatio=de?ve/de:null,N.options=E.options,N._bufferedRender=!1,N._layers=[],N.chart=N,N.controller=N,Ft.instances[N.id]=N,Object.defineProperty(N,"data",{get:function(){return N.config.data},set:function(qe){N.config.data=qe}}),$&&Q?(N.initialize(),N.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var p=this;return Vo.notify(p,"beforeInit"),ht.retinaScale(p,p.options.devicePixelRatio),p.bindEvents(),p.options.responsive&&p.resize(!0),p.initToolTip(),Vo.notify(p,"afterInit"),p},clear:function(){return ht.canvas.clear(this),this},stop:function(){return An.cancelAnimation(this),this},resize:function(p){var E=this,N=E.options,$=E.canvas,Q=N.maintainAspectRatio&&E.aspectRatio||null,de=Math.max(0,Math.floor(ht.getMaximumWidth($))),ve=Math.max(0,Math.floor(Q?de/Q:ht.getMaximumHeight($)));if((E.width!==de||E.height!==ve)&&($.width=E.width=de,$.height=E.height=ve,$.style.width=de+"px",$.style.height=ve+"px",ht.retinaScale(E,N.devicePixelRatio),!p)){var qe={width:de,height:ve};Vo.notify(E,"resize",[qe]),N.onResize&&N.onResize(E,qe),E.stop(),E.update({duration:N.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var p=this.options,E=p.scales||{},N=p.scale;ht.each(E.xAxes,function($,Q){$.id||($.id=G(E.xAxes,"x-axis-",Q))}),ht.each(E.yAxes,function($,Q){$.id||($.id=G(E.yAxes,"y-axis-",Q))}),N&&(N.id=N.id||"scale")},buildOrUpdateScales:function(){var p=this,E=p.options,N=p.scales||{},$=[],Q=Object.keys(N).reduce(function(de,ve){return de[ve]=!1,de},{});E.scales&&($=$.concat((E.scales.xAxes||[]).map(function(de){return{options:de,dtype:"category",dposition:"bottom"}}),(E.scales.yAxes||[]).map(function(de){return{options:de,dtype:"linear",dposition:"left"}}))),E.scale&&$.push({options:E.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ht.each($,function(de){var ve=de.options,qe=ve.id,De=io(ve.type,de.dtype);Se(ve.position)!==Se(de.dposition)&&(ve.position=de.dposition),Q[qe]=!0;var _t=null;if(qe in N&&N[qe].type===De)(_t=N[qe]).options=ve,_t.ctx=p.ctx,_t.chart=p;else{var Yt=ja.getScaleConstructor(De);if(!Yt)return;_t=new Yt({id:qe,type:De,options:ve,ctx:p.ctx,chart:p}),N[_t.id]=_t}_t.mergeTicksOptions(),de.isDefault&&(p.scale=_t)}),ht.each(Q,function(de,ve){de||delete N[ve]}),p.scales=N,ja.addScalesToLayout(this)},buildOrUpdateControllers:function(){var $,Q,p=this,E=[],N=p.data.datasets;for($=0,Q=N.length;$<Q;$++){var de=N[$],ve=p.getDatasetMeta($),qe=de.type||p.config.type;if(ve.type&&ve.type!==qe&&(p.destroyDatasetMeta($),ve=p.getDatasetMeta($)),ve.type=qe,ve.order=de.order||0,ve.index=$,ve.controller)ve.controller.updateIndex($),ve.controller.linkScales();else{var De=ni[ve.type];if(void 0===De)throw new Error('"'+ve.type+'" is not a chart type.');ve.controller=new De(p,$),E.push(ve.controller)}}return E},resetElements:function(){var p=this;ht.each(p.data.datasets,function(E,N){p.getDatasetMeta(N).controller.reset()},p)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(p){var N,$,E=this;if((!p||"object"!=typeof p)&&(p={duration:p,lazy:arguments[1]}),Br(E),Vo._invalidate(E),!1!==Vo.notify(E,"beforeUpdate")){E.tooltip._data=E.data;var Q=E.buildOrUpdateControllers();for(N=0,$=E.data.datasets.length;N<$;N++)E.getDatasetMeta(N).controller.buildOrUpdateElements();E.updateLayout(),E.options.animation&&E.options.animation.duration&&ht.each(Q,function(de){de.reset()}),E.updateDatasets(),E.tooltip.initialize(),E.lastActive=[],Vo.notify(E,"afterUpdate"),E._layers.sort(ft("z","_idx")),E._bufferedRender?E._bufferedRequest={duration:p.duration,easing:p.easing,lazy:p.lazy}:E.render(p)}},updateLayout:function(){var p=this;!1!==Vo.notify(p,"beforeLayout")&&(Ua.update(this,this.width,this.height),p._layers=[],ht.each(p.boxes,function(E){E._configure&&E._configure(),p._layers.push.apply(p._layers,E._layers())},p),p._layers.forEach(function(E,N){E._idx=N}),Vo.notify(p,"afterScaleUpdate"),Vo.notify(p,"afterLayout"))},updateDatasets:function(){var p=this;if(!1!==Vo.notify(p,"beforeDatasetsUpdate")){for(var E=0,N=p.data.datasets.length;E<N;++E)p.updateDataset(E);Vo.notify(p,"afterDatasetsUpdate")}},updateDataset:function(p){var E=this,N=E.getDatasetMeta(p),$={meta:N,index:p};!1!==Vo.notify(E,"beforeDatasetUpdate",[$])&&(N.controller._update(),Vo.notify(E,"afterDatasetUpdate",[$]))},render:function(p){var E=this;(!p||"object"!=typeof p)&&(p={duration:p,lazy:arguments[1]});var N=E.options.animation,$=io(p.duration,N&&N.duration),Q=p.lazy;if(!1!==Vo.notify(E,"beforeRender")){var de=function(qe){Vo.notify(E,"afterRender"),ht.callback(N&&N.onComplete,[qe],E)};if(N&&$){var ve=new sn({numSteps:$/16.66,easing:p.easing||N.easing,render:function(qe,De){var Yt=De.currentStep,Zt=Yt/De.numSteps;qe.draw((0,ht.easing.effects[De.easing])(Zt),Zt,Yt)},onAnimationProgress:N.onProgress,onAnimationComplete:de});An.addAnimation(E,ve,$,Q)}else E.draw(),de(new sn({numSteps:0,chart:E}));return E}},draw:function(p){var N,$,E=this;if(E.clear(),ht.isNullOrUndef(p)&&(p=1),E.transition(p),!(E.width<=0||E.height<=0)&&!1!==Vo.notify(E,"beforeDraw",[p])){for($=E._layers,N=0;N<$.length&&$[N].z<=0;++N)$[N].draw(E.chartArea);for(E.drawDatasets(p);N<$.length;++N)$[N].draw(E.chartArea);E._drawTooltip(p),Vo.notify(E,"afterDraw",[p])}},transition:function(p){for(var E=this,N=0,$=(E.data.datasets||[]).length;N<$;++N)E.isDatasetVisible(N)&&E.getDatasetMeta(N).controller.transition(p);E.tooltip.transition(p)},_getSortedDatasetMetas:function(p){var Q,de,E=this,$=[];for(Q=0,de=(E.data.datasets||[]).length;Q<de;++Q)(!p||E.isDatasetVisible(Q))&&$.push(E.getDatasetMeta(Q));return $.sort(ft("order","index")),$},_getSortedVisibleDatasetMetas:function(){return this._getSortedDatasetMetas(!0)},drawDatasets:function(p){var N,$,E=this;if(!1!==Vo.notify(E,"beforeDatasetsDraw",[p])){for($=(N=E._getSortedVisibleDatasetMetas()).length-1;$>=0;--$)E.drawDataset(N[$],p);Vo.notify(E,"afterDatasetsDraw",[p])}},drawDataset:function(p,E){var $={meta:p,index:p.index,easingValue:E};!1!==Vo.notify(this,"beforeDatasetDraw",[$])&&(p.controller.draw(E),Vo.notify(this,"afterDatasetDraw",[$]))},_drawTooltip:function(p){var E=this,N=E.tooltip,$={tooltip:N,easingValue:p};!1!==Vo.notify(E,"beforeTooltipDraw",[$])&&(N.draw(),Vo.notify(E,"afterTooltipDraw",[$]))},getElementAtEvent:function(p){return Os.modes.single(this,p)},getElementsAtEvent:function(p){return Os.modes.label(this,p,{intersect:!0})},getElementsAtXAxis:function(p){return Os.modes["x-axis"](this,p,{intersect:!0})},getElementsAtEventForMode:function(p,E,N){var $=Os.modes[E];return"function"==typeof $?$(this,p,N):[]},getDatasetAtEvent:function(p){return Os.modes.dataset(this,p,{intersect:!0})},getDatasetMeta:function(p){var E=this,N=E.data.datasets[p];N._meta||(N._meta={});var $=N._meta[E.id];return $||($=N._meta[E.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:N.order||0,index:p}),$},getVisibleDatasetCount:function(){for(var p=0,E=0,N=this.data.datasets.length;E<N;++E)this.isDatasetVisible(E)&&p++;return p},isDatasetVisible:function(p){var E=this.getDatasetMeta(p);return"boolean"==typeof E.hidden?!E.hidden:!this.data.datasets[p].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(p){var E=this.id,N=this.data.datasets[p],$=N._meta&&N._meta[E];$&&($.controller.destroy(),delete N._meta[E])},destroy:function(){var N,$,p=this,E=p.canvas;for(p.stop(),N=0,$=p.data.datasets.length;N<$;++N)p.destroyDatasetMeta(N);E&&(p.unbindEvents(),ht.canvas.clear(p),pa.releaseContext(p.ctx),p.canvas=null,p.ctx=null),Vo.notify(p,"destroy"),delete Ft.instances[p.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var p=this;p.tooltip=new Ui({_chart:p,_chartInstance:p,_data:p.data,_options:p.options.tooltips},p)},bindEvents:function(){var p=this,E=p._listeners={},N=function(){p.eventHandler.apply(p,arguments)};ht.each(p.options.events,function($){pa.addEventListener(p,$,N),E[$]=N}),p.options.responsive&&(N=function(){p.resize()},pa.addEventListener(p,"resize",N),E.resize=N)},unbindEvents:function(){var p=this,E=p._listeners;!E||(delete p._listeners,ht.each(E,function(N,$){pa.removeEventListener(p,$,N)}))},updateHoverStyle:function(p,E,N){var Q,de,ve,$=N?"set":"remove";for(de=0,ve=p.length;de<ve;++de)(Q=p[de])&&this.getDatasetMeta(Q._datasetIndex).controller[$+"HoverStyle"](Q);"dataset"===E&&this.getDatasetMeta(p[0]._datasetIndex).controller["_"+$+"DatasetHoverStyle"]()},eventHandler:function(p){var E=this,N=E.tooltip;if(!1!==Vo.notify(E,"beforeEvent",[p])){E._bufferedRender=!0,E._bufferedRequest=null;var $=E.handleEvent(p);N&&($=N._start?N.handleEvent(p):$|N.handleEvent(p)),Vo.notify(E,"afterEvent",[p]);var Q=E._bufferedRequest;return Q?E.render(Q):$&&!E.animating&&(E.stop(),E.render({duration:E.options.hover.animationDuration,lazy:!0})),E._bufferedRender=!1,E._bufferedRequest=null,E}},handleEvent:function(p){var Q,E=this,N=E.options||{},$=N.hover;return E.lastActive=E.lastActive||[],E.active="mouseout"===p.type?[]:E.getElementsAtEventForMode(p,$.mode,$),ht.callback(N.onHover||N.hover.onHover,[p.native,E.active],E),("mouseup"===p.type||"click"===p.type)&&N.onClick&&N.onClick.call(E,p.native,E.active),E.lastActive.length&&E.updateHoverStyle(E.lastActive,$.mode,!1),E.active.length&&$.mode&&E.updateHoverStyle(E.active,$.mode,!0),Q=!ht.arrayEquals(E.active,E.lastActive),E.lastActive=E.active,Q}}),Ft.instances={};var Bt=Ft;Ft.Controller=Ft,Ft.types={},ht.configMerge=Bi,ht.scaleMerge=vo;function Xn(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function Sr(p){this.options=p||{}}ht.extend(Sr.prototype,{formats:Xn,parse:Xn,format:Xn,add:Xn,diff:Xn,startOf:Xn,endOf:Xn,_create:function(p){return p}}),Sr.override=function(p){ht.extend(Sr.prototype,p)};var Fr={_date:Sr},zr={formatters:{values:function(p){return ht.isArray(p)?p:""+p},linear:function(p,E,N){var $=N.length>3?N[2]-N[1]:N[1]-N[0];Math.abs($)>1&&p!==Math.floor(p)&&($=p-Math.floor(p));var Q=ht.log10(Math.abs($)),de="";if(0!==p)if(Math.max(Math.abs(N[0]),Math.abs(N[N.length-1]))<1e-4){var qe=ht.log10(Math.abs(p)),De=Math.floor(qe)-Math.floor(Q);De=Math.max(Math.min(De,20),0),de=p.toExponential(De)}else{var _t=-1*Math.floor(Q);_t=Math.max(Math.min(_t,20),0),de=p.toFixed(_t)}else de="0";return de},logarithmic:function(p,E,N){var $=p/Math.pow(10,Math.floor(ht.log10(p)));return 0===p?"0":1===$||2===$||5===$||0===E||E===N.length-1?p.toExponential():""}}},Un=ht.isArray,lr=ht.isNullOrUndef,dr=ht.valueOrDefault,li=ht.valueAtIndexOrDefault;function Ao(p,E,N){var _t,$=p.getTicks().length,Q=Math.min(E,$-1),de=p.getPixelForTick(Q),ve=p._startPixel,qe=p._endPixel;if(!(N&&(_t=1===$?Math.max(de-ve,qe-de):0===E?(p.getPixelForTick(1)-de)/2:(de-p.getPixelForTick(Q-1))/2,de+=Q<E?_t:-_t,de<ve-1e-6||de>qe+1e-6)))return de}function jo(p,E,N,$){var Yt,Zt,wn,cr,sr,Tr,Yr,Pi,yo,Co,Xo,ts,_s,Q=N.length,de=[],ve=[],qe=[],De=0,_t=0;for(Yt=0;Yt<Q;++Yt){if(cr=N[Yt].label,p.font=Tr=(sr=N[Yt].major?E.major:E.minor).string,Yr=$[Tr]=$[Tr]||{data:{},gc:[]},Pi=sr.lineHeight,yo=Co=0,lr(cr)||Un(cr)){if(Un(cr))for(Zt=0,wn=cr.length;Zt<wn;++Zt)!lr(Xo=cr[Zt])&&!Un(Xo)&&(yo=ht.measureText(p,Yr.data,Yr.gc,yo,Xo),Co+=Pi)}else yo=ht.measureText(p,Yr.data,Yr.gc,yo,cr),Co=Pi;de.push(yo),ve.push(Co),qe.push(Pi/2),De=Math.max(yo,De),_t=Math.max(Co,_t)}function Ts(Ms){return{width:de[Ms]||0,height:ve[Ms]||0,offset:qe[Ms]||0}}return function(p,E){ht.each(p,function(N){var de,$=N.gc,Q=$.length/2;if(Q>E){for(de=0;de<Q;++de)delete N.data[$[de]];$.splice(0,Q)}})}($,Q),ts=de.indexOf(De),_s=ve.indexOf(_t),{first:Ts(0),last:Ts(Q-1),widest:Ts(ts),highest:Ts(_s)}}function uo(p){return p.drawTicks?p.tickMarkLength:0}function eo(p){var E,N;return p.display?(E=ht.options._parseFont(p),N=ht.options.toPadding(p.padding),E.lineHeight+N.height):0}function Ho(p,E){return ht.extend(ht.options._parseFont({fontFamily:dr(E.fontFamily,p.fontFamily),fontSize:dr(E.fontSize,p.fontSize),fontStyle:dr(E.fontStyle,p.fontStyle),lineHeight:dr(E.lineHeight,p.lineHeight)}),{color:ht.options.resolve([E.fontColor,p.fontColor,mn.global.defaultFontColor])})}function Zi(p){var E=Ho(p,p.minor);return{minor:E,major:p.major.enabled?Ho(p,p.major):E}}function na(p){var N,$,Q,E=[];for($=0,Q=p.length;$<Q;++$)void 0!==(N=p[$])._index&&E.push(N);return E}function Ll(p,E,N,$){var qe,De,_t,Yt,Q=dr(N,0),de=Math.min(dr($,p.length),p.length),ve=0;for(E=Math.ceil(E),$&&(E=(qe=$-N)/Math.floor(qe/E)),Yt=Q;Yt<0;)ve++,Yt=Math.round(Q+ve*E);for(De=Math.max(Q,0);De<de;De++)_t=p[De],De===Yt?(_t._index=De,ve++,Yt=Math.round(Q+ve*E)):delete _t.label}mn._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:zr.formatters.values,minor:{},major:{}}});var Hl=ot.extend({zeroLineIndex:0,getPadding:function(){var p=this;return{left:p.paddingLeft||0,top:p.paddingTop||0,right:p.paddingRight||0,bottom:p.paddingBottom||0}},getTicks:function(){return this._ticks},_getLabels:function(){var p=this.chart.data;return this.options.labels||(this.isHorizontal()?p.xLabels:p.yLabels)||p.labels||[]},mergeTicksOptions:function(){},beforeUpdate:function(){ht.callback(this.options.beforeUpdate,[this])},update:function(p,E,N){var ve,qe,De,_t,Yt,$=this,Q=$.options.ticks,de=Q.sampleSize;if($.beforeUpdate(),$.maxWidth=p,$.maxHeight=E,$.margins=ht.extend({left:0,right:0,top:0,bottom:0},N),$._ticks=null,$.ticks=null,$._labelSizes=null,$._maxLabelLines=0,$.longestLabelWidth=0,$.longestTextCache=$.longestTextCache||{},$._gridLineItems=null,$._labelItems=null,$.beforeSetDimensions(),$.setDimensions(),$.afterSetDimensions(),$.beforeDataLimits(),$.determineDataLimits(),$.afterDataLimits(),$.beforeBuildTicks(),_t=$.buildTicks()||[],(!(_t=$.afterBuildTicks(_t)||_t)||!_t.length)&&$.ticks)for(_t=[],ve=0,qe=$.ticks.length;ve<qe;++ve)_t.push({value:$.ticks[ve],major:!1});return $._ticks=_t,De=$._convertTicksToLabels((Yt=de<_t.length)?function(p,E){for(var N=[],$=p.length/E,Q=0,de=p.length;Q<de;Q+=$)N.push(p[Math.floor(Q)]);return N}(_t,de):_t),$._configure(),$.beforeCalculateTickRotation(),$.calculateTickRotation(),$.afterCalculateTickRotation(),$.beforeFit(),$.fit(),$.afterFit(),$._ticksToDraw=Q.display&&(Q.autoSkip||"auto"===Q.source)?$._autoSkip(_t):_t,Yt&&(De=$._convertTicksToLabels($._ticksToDraw)),$.ticks=De,$.afterUpdate(),$.minSize},_configure:function(){var N,$,p=this,E=p.options.ticks.reverse;p.isHorizontal()?(N=p.left,$=p.right):(N=p.top,$=p.bottom,E=!E),p._startPixel=N,p._endPixel=$,p._reversePixels=E,p._length=$-N},afterUpdate:function(){ht.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){ht.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var p=this;p.isHorizontal()?(p.width=p.maxWidth,p.left=0,p.right=p.width):(p.height=p.maxHeight,p.top=0,p.bottom=p.height),p.paddingLeft=0,p.paddingTop=0,p.paddingRight=0,p.paddingBottom=0},afterSetDimensions:function(){ht.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){ht.callback(this.options.beforeDataLimits,[this])},determineDataLimits:ht.noop,afterDataLimits:function(){ht.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){ht.callback(this.options.beforeBuildTicks,[this])},buildTicks:ht.noop,afterBuildTicks:function(p){var E=this;return Un(p)&&p.length?ht.callback(E.options.afterBuildTicks,[E,p]):(E.ticks=ht.callback(E.options.afterBuildTicks,[E,E.ticks])||E.ticks,p)},beforeTickToLabelConversion:function(){ht.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var p=this,E=p.options.ticks;p.ticks=p.ticks.map(E.userCallback||E.callback,this)},afterTickToLabelConversion:function(){ht.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){ht.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var qe,De,_t,Yt,Zt,wn,cr,p=this,E=p.options,N=E.ticks,$=p.getTicks().length,Q=N.minRotation||0,de=N.maxRotation,ve=Q;!p._isVisible()||!N.display||Q>=de||$<=1||!p.isHorizontal()?p.labelRotation=Q:(De=(qe=p._getLabelSizes()).widest.width,_t=qe.highest.height-qe.highest.offset,Yt=Math.min(p.maxWidth,p.chart.width-De),De+6>(Zt=E.offset?p.maxWidth/$:Yt/($-1))&&(Zt=Yt/($-(E.offset?.5:1)),wn=p.maxHeight-uo(E.gridLines)-N.padding-eo(E.scaleLabel),cr=Math.sqrt(De*De+_t*_t),ve=ht.toDegrees(Math.min(Math.asin(Math.min((qe.highest.height+6)/Zt,1)),Math.asin(Math.min(wn/cr,1))-Math.asin(_t/cr))),ve=Math.max(Q,Math.min(de,ve))),p.labelRotation=ve)},afterCalculateTickRotation:function(){ht.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ht.callback(this.options.beforeFit,[this])},fit:function(){var p=this,E=p.minSize={width:0,height:0},N=p.chart,$=p.options,Q=$.ticks,de=$.scaleLabel,ve=$.gridLines,qe=p._isVisible(),De="bottom"===$.position,_t=p.isHorizontal();if(_t?E.width=p.maxWidth:qe&&(E.width=uo(ve)+eo(de)),_t?qe&&(E.height=uo(ve)+eo(de)):E.height=p.maxHeight,Q.display&&qe){var Yt=Zi(Q),Zt=p._getLabelSizes(),wn=Zt.first,cr=Zt.last,sr=Zt.widest,Tr=Zt.highest,Yr=.4*Yt.minor.lineHeight,Pi=Q.padding;if(_t){var yo=0!==p.labelRotation,Co=ht.toRadians(p.labelRotation),Xo=Math.cos(Co),ts=Math.sin(Co);E.height=Math.min(p.maxHeight,E.height+(ts*sr.width+Xo*(Tr.height-(yo?Tr.offset:0))+(yo?0:Yr))+Pi);var xs,ya,Ts=p.getPixelForTick(0)-p.left,Ms=p.right-p.getPixelForTick(p.getTicks().length-1);yo?(xs=De?Xo*wn.width+ts*wn.offset:ts*(wn.height-wn.offset),ya=De?ts*(cr.height-cr.offset):Xo*cr.width+ts*cr.offset):(xs=wn.width/2,ya=cr.width/2),p.paddingLeft=Math.max((xs-Ts)*p.width/(p.width-Ts),0)+3,p.paddingRight=Math.max((ya-Ms)*p.width/(p.width-Ms),0)+3}else E.width=Math.min(p.maxWidth,E.width+(Q.mirror?0:sr.width+Pi+Yr)),p.paddingTop=wn.height/2,p.paddingBottom=cr.height/2}p.handleMargins(),_t?(p.width=p._length=N.width-p.margins.left-p.margins.right,p.height=E.height):(p.width=E.width,p.height=p._length=N.height-p.margins.top-p.margins.bottom)},handleMargins:function(){var p=this;p.margins&&(p.margins.left=Math.max(p.paddingLeft,p.margins.left),p.margins.top=Math.max(p.paddingTop,p.margins.top),p.margins.right=Math.max(p.paddingRight,p.margins.right),p.margins.bottom=Math.max(p.paddingBottom,p.margins.bottom))},afterFit:function(){ht.callback(this.options.afterFit,[this])},isHorizontal:function(){var p=this.options.position;return"top"===p||"bottom"===p},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(p){if(lr(p))return NaN;if(("number"==typeof p||p instanceof Number)&&!isFinite(p))return NaN;if(p)if(this.isHorizontal()){if(void 0!==p.x)return this.getRightValue(p.x)}else if(void 0!==p.y)return this.getRightValue(p.y);return p},_convertTicksToLabels:function(p){var N,$,Q,E=this;for(E.ticks=p.map(function(de){return de.value}),E.beforeTickToLabelConversion(),N=E.convertTicksToLabels(p)||E.ticks,E.afterTickToLabelConversion(),$=0,Q=p.length;$<Q;++$)p[$].label=N[$];return N},_getLabelSizes:function(){var p=this,E=p._labelSizes;return E||(p._labelSizes=E=jo(p.ctx,Zi(p.options.ticks),p.getTicks(),p.longestTextCache),p.longestLabelWidth=E.widest.width),E},_parseValue:function(p){var E,N,$,Q;return Un(p)?(E=+this.getRightValue(p[0]),N=+this.getRightValue(p[1]),$=Math.min(E,N),Q=Math.max(E,N)):(E=void 0,N=p=+this.getRightValue(p),$=p,Q=p),{min:$,max:Q,start:E,end:N}},_getScaleLabel:function(p){var E=this._parseValue(p);return void 0!==E.start?"["+E.start+", "+E.end+"]":+this.getRightValue(p)},getLabelForIndex:ht.noop,getPixelForValue:ht.noop,getValueForPixel:ht.noop,getPixelForTick:function(p){var E=this,N=E.options.offset,$=E._ticks.length,Q=1/Math.max($-(N?0:1),1);return p<0||p>$-1?null:E.getPixelForDecimal(p*Q+(N?Q/2:0))},getPixelForDecimal:function(p){var E=this;return E._reversePixels&&(p=1-p),E._startPixel+p*E._length},getDecimalForPixel:function(p){var E=(p-this._startPixel)/this._length;return this._reversePixels?1-E:E},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var p=this,E=p.min,N=p.max;return p.beginAtZero?0:E<0&&N<0?N:E>0&&N>0?E:0},_autoSkip:function(p){var _t,Yt,Zt,wn,E=this,N=E.options.ticks,$=E._length,Q=N.maxTicksLimit||$/E._tickSize()+1,de=N.major.enabled?function(p){var N,$,E=[];for(N=0,$=p.length;N<$;N++)p[N].major&&E.push(N);return E}(p):[],ve=de.length,qe=de[0],De=de[ve-1];if(ve>Q)return function(p,E,N){var de,ve,$=0,Q=E[0];for(N=Math.ceil(N),de=0;de<p.length;de++)ve=p[de],de===Q?(ve._index=de,Q=E[++$*N]):delete ve.label}(p,de,ve/Q),na(p);if(Zt=function(p,E,N,$){var ve,qe,De,_t,Q=function(p){var N,$,E=p.length;if(E<2)return!1;for($=p[0],N=1;N<E;++N)if(p[N]-p[N-1]!==$)return!1;return $}(p),de=(E.length-1)/$;if(!Q)return Math.max(de,1);for(De=0,_t=(ve=ht.math._factorize(Q)).length-1;De<_t;De++)if((qe=ve[De])>de)return qe;return Math.max(de,1)}(de,p,0,Q),ve>0){for(_t=0,Yt=ve-1;_t<Yt;_t++)Ll(p,Zt,de[_t],de[_t+1]);return Ll(p,Zt,ht.isNullOrUndef(wn=ve>1?(De-qe)/(ve-1):null)?0:qe-wn,qe),Ll(p,Zt,De,ht.isNullOrUndef(wn)?p.length:De+wn),na(p)}return Ll(p,Zt),na(p)},_tickSize:function(){var p=this,E=p.options.ticks,N=ht.toRadians(p.labelRotation),$=Math.abs(Math.cos(N)),Q=Math.abs(Math.sin(N)),de=p._getLabelSizes(),ve=E.autoSkipPadding||0,qe=de?de.widest.width+ve:0,De=de?de.highest.height+ve:0;return p.isHorizontal()?De*$>qe*Q?qe/$:De/Q:De*Q<qe*$?De/$:qe/Q},_isVisible:function(){var $,Q,de,p=this,E=p.chart,N=p.options.display;if("auto"!==N)return!!N;for($=0,Q=E.data.datasets.length;$<Q;++$)if(E.isDatasetVisible($)&&((de=E.getDatasetMeta($)).xAxisID===p.id||de.yAxisID===p.id))return!0;return!1},_computeGridLineItems:function(p){var Yr,Pi,yo,Co,Xo,ts,_s,Ts,Ms,xs,ya,hl,Ga,Qa,rl,Gl,_c,E=this,N=E.chart,$=E.options,Q=$.gridLines,de=$.position,ve=Q.offsetGridLines,qe=E.isHorizontal(),De=E._ticksToDraw,_t=De.length+(ve?1:0),Yt=uo(Q),Zt=[],wn=Q.drawBorder?li(Q.lineWidth,0,0):0,cr=wn/2,sr=ht._alignPixel,Tr=function($s){return sr(N,$s,wn)};for("top"===de?(Yr=Tr(E.bottom),_s=E.bottom-Yt,Ms=Yr-cr,ya=Tr(p.top)+cr,Ga=p.bottom):"bottom"===de?(Yr=Tr(E.top),ya=p.top,Ga=Tr(p.bottom)-cr,_s=Yr+cr,Ms=E.top+Yt):"left"===de?(Yr=Tr(E.right),ts=E.right-Yt,Ts=Yr-cr,xs=Tr(p.left)+cr,hl=p.right):(Yr=Tr(E.left),xs=p.left,hl=Tr(p.right)-cr,ts=Yr+cr,Ts=E.left+Yt),Pi=0;Pi<_t;++Pi)!(lr((yo=De[Pi]||{}).label)&&Pi<De.length)&&(Pi===E.zeroLineIndex&&$.offset===ve?(Qa=Q.zeroLineWidth,rl=Q.zeroLineColor,Gl=Q.zeroLineBorderDash||[],_c=Q.zeroLineBorderDashOffset||0):(Qa=li(Q.lineWidth,Pi,1),rl=li(Q.color,Pi,"rgba(0,0,0,0.1)"),Gl=Q.borderDash||[],_c=Q.borderDashOffset||0),void 0!==(Co=Ao(E,yo._index||Pi,ve))&&(Xo=sr(N,Co,Qa),qe?ts=Ts=xs=hl=Xo:_s=Ms=ya=Ga=Xo,Zt.push({tx1:ts,ty1:_s,tx2:Ts,ty2:Ms,x1:xs,y1:ya,x2:hl,y2:Ga,width:Qa,color:rl,borderDash:Gl,borderDashOffset:_c})));return Zt.ticksLength=_t,Zt.borderValue=Yr,Zt},_computeLabelItems:function(){var wn,cr,sr,Tr,Yr,Pi,yo,Co,Xo,ts,_s,Ts,p=this,E=p.options,N=E.ticks,$=E.position,Q=N.mirror,de=p.isHorizontal(),ve=p._ticksToDraw,qe=Zi(N),De=N.padding,_t=uo(E.gridLines),Yt=-ht.toRadians(p.labelRotation),Zt=[];for("top"===$?(Pi=p.bottom-_t-De,yo=Yt?"left":"center"):"bottom"===$?(Pi=p.top+_t+De,yo=Yt?"right":"center"):"left"===$?(Yr=p.right-(Q?0:_t)-De,yo=Q?"left":"right"):(Yr=p.left+(Q?0:_t)+De,yo=Q?"right":"left"),wn=0,cr=ve.length;wn<cr;++wn)!lr(Tr=(sr=ve[wn]).label)&&(Co=p.getPixelForTick(sr._index||wn)+N.labelOffset,ts=(Xo=sr.major?qe.major:qe.minor).lineHeight,_s=Un(Tr)?Tr.length:1,de?(Yr=Co,Ts="top"===$?((Yt?1:.5)-_s)*ts:(Yt?0:.5)*ts):(Pi=Co,Ts=(1-_s)*ts/2),Zt.push({x:Yr,y:Pi,rotation:Yt,label:Tr,font:Xo,textOffset:Ts,textAlign:yo}));return Zt},_drawGrid:function(p){var E=this,N=E.options.gridLines;if(N.display){var De,_t,Yt,Zt,wn,$=E.ctx,Q=E.chart,de=ht._alignPixel,ve=N.drawBorder?li(N.lineWidth,0,0):0,qe=E._gridLineItems||(E._gridLineItems=E._computeGridLineItems(p));for(Yt=0,Zt=qe.length;Yt<Zt;++Yt)_t=(wn=qe[Yt]).color,(De=wn.width)&&_t&&($.save(),$.lineWidth=De,$.strokeStyle=_t,$.setLineDash&&($.setLineDash(wn.borderDash),$.lineDashOffset=wn.borderDashOffset),$.beginPath(),N.drawTicks&&($.moveTo(wn.tx1,wn.ty1),$.lineTo(wn.tx2,wn.ty2)),N.drawOnChartArea&&($.moveTo(wn.x1,wn.y1),$.lineTo(wn.x2,wn.y2)),$.stroke(),$.restore());if(ve){var Yr,Pi,yo,Co,cr=ve,sr=li(N.lineWidth,qe.ticksLength-1,1),Tr=qe.borderValue;E.isHorizontal()?(Yr=de(Q,E.left,cr)-cr/2,Pi=de(Q,E.right,sr)+sr/2,yo=Co=Tr):(yo=de(Q,E.top,cr)-cr/2,Co=de(Q,E.bottom,sr)+sr/2,Yr=Pi=Tr),$.lineWidth=ve,$.strokeStyle=li(N.color,0),$.beginPath(),$.moveTo(Yr,yo),$.lineTo(Pi,Co),$.stroke()}}},_drawLabels:function(){var p=this;if(p.options.ticks.display){var Q,de,ve,qe,De,_t,Yt,Zt,N=p.ctx,$=p._labelItems||(p._labelItems=p._computeLabelItems());for(Q=0,ve=$.length;Q<ve;++Q){if(_t=(De=$[Q]).font,N.save(),N.translate(De.x,De.y),N.rotate(De.rotation),N.font=_t.string,N.fillStyle=_t.color,N.textBaseline="middle",N.textAlign=De.textAlign,Zt=De.textOffset,Un(Yt=De.label))for(de=0,qe=Yt.length;de<qe;++de)N.fillText(""+Yt[de],0,Zt),Zt+=_t.lineHeight;else N.fillText(Yt,0,Zt);N.restore()}}},_drawTitle:function(){var p=this,E=p.ctx,N=p.options,$=N.scaleLabel;if($.display){var Yt,Zt,Q=dr($.fontColor,mn.global.defaultFontColor),de=ht.options._parseFont($),ve=ht.options.toPadding($.padding),qe=de.lineHeight/2,De=N.position,_t=0;if(p.isHorizontal())Yt=p.left+p.width/2,Zt="bottom"===De?p.bottom-qe-ve.bottom:p.top+qe+ve.top;else{var wn="left"===De;Yt=wn?p.left+qe+ve.top:p.right-qe-ve.top,Zt=p.top+p.height/2,_t=wn?-.5*Math.PI:.5*Math.PI}E.save(),E.translate(Yt,Zt),E.rotate(_t),E.textAlign="center",E.textBaseline="middle",E.fillStyle=Q,E.font=de.string,E.fillText($.labelString,0,0),E.restore()}},draw:function(p){var E=this;!E._isVisible()||(E._drawGrid(p),E._drawTitle(),E._drawLabels())},_layers:function(){var p=this,E=p.options,N=E.ticks&&E.ticks.z||0,$=E.gridLines&&E.gridLines.z||0;return p._isVisible()&&N!==$&&p.draw===p._draw?[{z:$,draw:function(){p._drawGrid.apply(p,arguments),p._drawTitle.apply(p,arguments)}},{z:N,draw:function(){p._drawLabels.apply(p,arguments)}}]:[{z:N,draw:function(){p.draw.apply(p,arguments)}}]},_getMatchingVisibleMetas:function(p){var E=this,N=E.isHorizontal();return E.chart._getSortedVisibleDatasetMetas().filter(function($){return(!p||$.type===p)&&(N?$.xAxisID===E.id:$.yAxisID===E.id)})}});Hl.prototype._draw=Hl.prototype.draw;var mo=Hl,As=ht.isNullOrUndef,yc=mo.extend({determineDataLimits:function(){var qe,p=this,E=p._getLabels(),N=p.options.ticks,$=N.min,Q=N.max,de=0,ve=E.length-1;void 0!==$&&(qe=E.indexOf($))>=0&&(de=qe),void 0!==Q&&(qe=E.indexOf(Q))>=0&&(ve=qe),p.minIndex=de,p.maxIndex=ve,p.min=E[de],p.max=E[ve]},buildTicks:function(){var p=this,E=p._getLabels(),N=p.minIndex,$=p.maxIndex;p.ticks=0===N&&$===E.length-1?E:E.slice(N,$+1)},getLabelForIndex:function(p,E){var N=this,$=N.chart;return $.getDatasetMeta(E).controller._getValueScaleId()===N.id?N.getRightValue($.data.datasets[E].data[p]):N._getLabels()[p]},_configure:function(){var p=this,E=p.options.offset,N=p.ticks;mo.prototype._configure.call(p),p.isHorizontal()||(p._reversePixels=!p._reversePixels),N&&(p._startValue=p.minIndex-(E?.5:0),p._valueRange=Math.max(N.length-(E?0:1),1))},getPixelForValue:function(p,E,N){var Q,de,ve,$=this;return!As(E)&&!As(N)&&(p=$.chart.data.datasets[N].data[E]),As(p)||(Q=$.isHorizontal()?p.x:p.y),(void 0!==Q||void 0!==p&&isNaN(E))&&(de=$._getLabels(),p=ht.valueOrDefault(Q,p),E=-1!==(ve=de.indexOf(p))?ve:E,isNaN(E)&&(E=p)),$.getPixelForDecimal((E-$._startValue)/$._valueRange)},getPixelForTick:function(p){var E=this.ticks;return p<0||p>E.length-1?null:this.getPixelForValue(E[p],p+this.minIndex)},getValueForPixel:function(p){var E=this,N=Math.round(E._startValue+E.getDecimalForPixel(p)*E._valueRange);return Math.min(Math.max(N,0),E.ticks.length-1)},getBasePixel:function(){return this.bottom}});yc._defaults={position:"bottom"};var bl=ht.isNullOrUndef;var kl=mo.extend({getRightValue:function(p){return"string"==typeof p?+p:mo.prototype.getRightValue.call(this,p)},handleTickRangeOptions:function(){var p=this,N=p.options.ticks;if(N.beginAtZero){var $=ht.sign(p.min),Q=ht.sign(p.max);$<0&&Q<0?p.max=0:$>0&&Q>0&&(p.min=0)}var de=void 0!==N.min||void 0!==N.suggestedMin,ve=void 0!==N.max||void 0!==N.suggestedMax;void 0!==N.min?p.min=N.min:void 0!==N.suggestedMin&&(p.min=null===p.min?N.suggestedMin:Math.min(p.min,N.suggestedMin)),void 0!==N.max?p.max=N.max:void 0!==N.suggestedMax&&(p.max=null===p.max?N.suggestedMax:Math.max(p.max,N.suggestedMax)),de!==ve&&p.min>=p.max&&(de?p.max=p.min+1:p.min=p.max-1),p.min===p.max&&(p.max++,N.beginAtZero||p.min--)},getTickLimit:function(){var Q,p=this,E=p.options.ticks,N=E.stepSize,$=E.maxTicksLimit;return N?Q=Math.ceil(p.max/N)-Math.floor(p.min/N)+1:(Q=p._computeTickLimit(),$=$||11),$&&(Q=Math.min($,Q)),Q},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:ht.noop,buildTicks:function(){var p=this,N=p.options.ticks,$=p.getTickLimit(),Q={maxTicks:$=Math.max(2,$),min:N.min,max:N.max,precision:N.precision,stepSize:ht.valueOrDefault(N.fixedStepSize,N.stepSize)},de=p.ticks=function(p,E){var cr,sr,Tr,Yr,N=[],Q=p.stepSize,de=Q||1,ve=p.maxTicks-1,qe=p.min,De=p.max,_t=p.precision,Yt=E.min,Zt=E.max,wn=ht.niceNum((Zt-Yt)/ve/de)*de;if(wn<1e-14&&bl(qe)&&bl(De))return[Yt,Zt];(Yr=Math.ceil(Zt/wn)-Math.floor(Yt/wn))>ve&&(wn=ht.niceNum(Yr*wn/ve/de)*de),Q||bl(_t)?cr=Math.pow(10,ht._decimalPlaces(wn)):(cr=Math.pow(10,_t),wn=Math.ceil(wn*cr)/cr),sr=Math.floor(Yt/wn)*wn,Tr=Math.ceil(Zt/wn)*wn,Q&&(!bl(qe)&&ht.almostWhole(qe/wn,wn/1e3)&&(sr=qe),!bl(De)&&ht.almostWhole(De/wn,wn/1e3)&&(Tr=De)),Yr=ht.almostEquals(Yr=(Tr-sr)/wn,Math.round(Yr),wn/1e3)?Math.round(Yr):Math.ceil(Yr),sr=Math.round(sr*cr)/cr,Tr=Math.round(Tr*cr)/cr,N.push(bl(qe)?sr:qe);for(var Pi=1;Pi<Yr;++Pi)N.push(Math.round((sr+Pi*wn)*cr)/cr);return N.push(bl(De)?Tr:De),N}(Q,p);p.handleDirectionalChanges(),p.max=ht.max(de),p.min=ht.min(de),N.reverse?(de.reverse(),p.start=p.max,p.end=p.min):(p.start=p.min,p.end=p.max)},convertTicksToLabels:function(){var p=this;p.ticksAsNumbers=p.ticks.slice(),p.zeroLineIndex=p.ticks.indexOf(0),mo.prototype.convertTicksToLabels.call(p)},_configure:function(){var Q,p=this,E=p.getTicks(),N=p.min,$=p.max;mo.prototype._configure.call(p),p.options.offset&&E.length&&(N-=Q=($-N)/Math.max(E.length-1,1)/2,$+=Q),p._startValue=N,p._endValue=$,p._valueRange=$-N}}),Yl={position:"left",ticks:{callback:zr.formatters.linear}};function we(p,E,N,$){var Yt,Zt,Q=p.options,ve=function(p,E,N){var $=[N.type,void 0===E&&void 0===N.stack?N.index:"",N.stack].join(".");return void 0===p[$]&&(p[$]={pos:[],neg:[]}),p[$]}(E,Q.stacked,N),qe=ve.pos,De=ve.neg,_t=$.length;for(Yt=0;Yt<_t;++Yt)Zt=p._parseValue($[Yt]),!(isNaN(Zt.min)||isNaN(Zt.max)||N.data[Yt].hidden)&&(qe[Yt]=qe[Yt]||0,De[Yt]=De[Yt]||0,Q.relativePoints?qe[Yt]=100:Zt.min<0||Zt.max<0?De[Yt]+=Zt.min:qe[Yt]+=Zt.max)}function Ot(p,E,N){var Q,de,$=N.length;for(Q=0;Q<$;++Q)de=p._parseValue(N[Q]),!(isNaN(de.min)||isNaN(de.max)||E.data[Q].hidden)&&(p.min=Math.min(p.min,de.min),p.max=Math.max(p.max,de.max))}var xe=kl.extend({determineDataLimits:function(){var De,_t,Yt,Zt,p=this,E=p.options,$=p.chart.data.datasets,Q=p._getMatchingVisibleMetas(),de=E.stacked,ve={},qe=Q.length;if(p.min=Number.POSITIVE_INFINITY,p.max=Number.NEGATIVE_INFINITY,void 0===de)for(De=0;!de&&De<qe;++De)de=void 0!==(_t=Q[De]).stack;for(De=0;De<qe;++De)Yt=$[(_t=Q[De]).index].data,de?we(p,ve,_t,Yt):Ot(p,_t,Yt);ht.each(ve,function(wn){Zt=wn.pos.concat(wn.neg),p.min=Math.min(p.min,ht.min(Zt)),p.max=Math.max(p.max,ht.max(Zt))}),p.min=ht.isFinite(p.min)&&!isNaN(p.min)?p.min:0,p.max=ht.isFinite(p.max)&&!isNaN(p.max)?p.max:1,p.handleTickRangeOptions()},_computeTickLimit:function(){var E,p=this;return p.isHorizontal()?Math.ceil(p.width/40):(E=ht.options._parseFont(p.options.ticks),Math.ceil(p.height/E.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(p,E){return this._getScaleLabel(this.chart.data.datasets[E].data[p])},getPixelForValue:function(p){var E=this;return E.getPixelForDecimal((+E.getRightValue(p)-E._startValue)/E._valueRange)},getValueForPixel:function(p){return this._startValue+this.getDecimalForPixel(p)*this._valueRange},getPixelForTick:function(p){var E=this.ticksAsNumbers;return p<0||p>E.length-1?null:this.getPixelForValue(E[p])}});xe._defaults=Yl;var Te=ht.valueOrDefault,ge=ht.math.log10;var Be={position:"left",ticks:{callback:zr.formatters.logarithmic}};function xt(p,E){return ht.isFinite(p)&&p>=0?p:E}var Dt=mo.extend({determineDataLimits:function(){var ve,qe,De,_t,Yt,Zt,p=this,E=p.options,N=p.chart,$=N.data.datasets,Q=p.isHorizontal();function de(Yr){return Q?Yr.xAxisID===p.id:Yr.yAxisID===p.id}p.min=Number.POSITIVE_INFINITY,p.max=Number.NEGATIVE_INFINITY,p.minNotZero=Number.POSITIVE_INFINITY;var wn=E.stacked;if(void 0===wn)for(ve=0;ve<$.length;ve++)if(qe=N.getDatasetMeta(ve),N.isDatasetVisible(ve)&&de(qe)&&void 0!==qe.stack){wn=!0;break}if(E.stacked||wn){var cr={};for(ve=0;ve<$.length;ve++){var sr=[(qe=N.getDatasetMeta(ve)).type,void 0===E.stacked&&void 0===qe.stack?ve:"",qe.stack].join(".");if(N.isDatasetVisible(ve)&&de(qe))for(void 0===cr[sr]&&(cr[sr]=[]),Yt=0,Zt=(_t=$[ve].data).length;Yt<Zt;Yt++){var Tr=cr[sr];De=p._parseValue(_t[Yt]),!(isNaN(De.min)||isNaN(De.max)||qe.data[Yt].hidden||De.min<0||De.max<0)&&(Tr[Yt]=Tr[Yt]||0,Tr[Yt]+=De.max)}}ht.each(cr,function(Yr){if(Yr.length>0){var Pi=ht.min(Yr),yo=ht.max(Yr);p.min=Math.min(p.min,Pi),p.max=Math.max(p.max,yo)}})}else for(ve=0;ve<$.length;ve++)if(qe=N.getDatasetMeta(ve),N.isDatasetVisible(ve)&&de(qe))for(Yt=0,Zt=(_t=$[ve].data).length;Yt<Zt;Yt++)De=p._parseValue(_t[Yt]),!(isNaN(De.min)||isNaN(De.max)||qe.data[Yt].hidden||De.min<0||De.max<0)&&(p.min=Math.min(De.min,p.min),p.max=Math.max(De.max,p.max),0!==De.min&&(p.minNotZero=Math.min(De.min,p.minNotZero)));p.min=ht.isFinite(p.min)?p.min:null,p.max=ht.isFinite(p.max)?p.max:null,p.minNotZero=ht.isFinite(p.minNotZero)?p.minNotZero:null,this.handleTickRangeOptions()},handleTickRangeOptions:function(){var p=this,E=p.options.ticks;p.min=xt(E.min,p.min),p.max=xt(E.max,p.max),p.min===p.max&&(0!==p.min&&null!==p.min?(p.min=Math.pow(10,Math.floor(ge(p.min))-1),p.max=Math.pow(10,Math.floor(ge(p.max))+1)):(p.min=1,p.max=10)),null===p.min&&(p.min=Math.pow(10,Math.floor(ge(p.max))-1)),null===p.max&&(p.max=0!==p.min?Math.pow(10,Math.floor(ge(p.min))+1):10),null===p.minNotZero&&(p.minNotZero=p.min>0?p.min:p.max<1?Math.pow(10,Math.floor(ge(p.max))):1)},buildTicks:function(){var p=this,E=p.options.ticks,N=!p.isHorizontal(),$={min:xt(E.min),max:xt(E.max)},Q=p.ticks=function(p,E){var ve,qe,N=[],$=Te(p.min,Math.pow(10,Math.floor(ge(E.min)))),Q=Math.floor(ge(E.max)),de=Math.ceil(E.max/Math.pow(10,Q));0===$?(ve=Math.floor(ge(E.minNotZero)),qe=Math.floor(E.minNotZero/Math.pow(10,ve)),N.push($),$=qe*Math.pow(10,ve)):(ve=Math.floor(ge($)),qe=Math.floor($/Math.pow(10,ve)));var De=ve<0?Math.pow(10,Math.abs(ve)):1;do{N.push($),10==++qe&&(qe=1,De=++ve>=0?1:De),$=Math.round(qe*Math.pow(10,ve)*De)/De}while(ve<Q||ve===Q&&qe<de);var _t=Te(p.max,$);return N.push(_t),N}($,p);p.max=ht.max(Q),p.min=ht.min(Q),E.reverse?(N=!N,p.start=p.max,p.end=p.min):(p.start=p.min,p.end=p.max),N&&Q.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),mo.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(p,E){return this._getScaleLabel(this.chart.data.datasets[E].data[p])},getPixelForTick:function(p){var E=this.tickValues;return p<0||p>E.length-1?null:this.getPixelForValue(E[p])},_getFirstTickValue:function(p){var E=Math.floor(ge(p));return Math.floor(p/Math.pow(10,E))*Math.pow(10,E)},_configure:function(){var p=this,E=p.min,N=0;mo.prototype._configure.call(p),0===E&&(E=p._getFirstTickValue(p.minNotZero),N=Te(p.options.ticks.fontSize,mn.global.defaultFontSize)/p._length),p._startValue=ge(E),p._valueOffset=N,p._valueRange=(ge(p.max)-ge(E))/(1-N)},getPixelForValue:function(p){var E=this,N=0;return(p=+E.getRightValue(p))>E.min&&p>0&&(N=(ge(p)-E._startValue)/E._valueRange+E._valueOffset),E.getPixelForDecimal(N)},getValueForPixel:function(p){var E=this,N=E.getDecimalForPixel(p);return 0===N&&0===E.min?0:Math.pow(10,E._startValue+(N-E._valueOffset)*E._valueRange)}});Dt._defaults=Be;var vn=ht.valueOrDefault,Gn=ht.valueAtIndexOrDefault,kn=ht.options.resolve,zn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:zr.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(p){return p}}};function jr(p){var E=p.ticks;return E.display&&p.display?vn(E.fontSize,mn.global.defaultFontSize)+2*E.backdropPaddingY:0}function kr(p,E,N){return ht.isArray(N)?{w:ht.longestText(p,p.font,N),h:N.length*E}:{w:p.measureText(N).width,h:E}}function Gr(p,E,N,$,Q){return p===$||p===Q?{start:E-N/2,end:E+N/2}:p<$||p>Q?{start:E-N,end:E}:{start:E,end:E+N}}function Ci(p){return 0===p||180===p?"center":p<180?"left":"right"}function vi(p,E,N,$){var de,ve,Q=N.y+$/2;if(ht.isArray(E))for(de=0,ve=E.length;de<ve;++de)p.fillText(E[de],N.x,Q),Q+=$;else p.fillText(E,N.x,Q)}function Ai(p,E,N){90===p||270===p?N.y-=E.h/2:(p>270||p<90)&&(N.y-=E.h)}function No(p){return ht.isNumber(p)?p:0}var wo=kl.extend({setDimensions:function(){var p=this;p.width=p.maxWidth,p.height=p.maxHeight,p.paddingTop=jr(p.options)/2,p.xCenter=Math.floor(p.width/2),p.yCenter=Math.floor((p.height-p.paddingTop)/2),p.drawingArea=Math.min(p.height-p.paddingTop,p.width)/2},determineDataLimits:function(){var p=this,E=p.chart,N=Number.POSITIVE_INFINITY,$=Number.NEGATIVE_INFINITY;ht.each(E.data.datasets,function(Q,de){if(E.isDatasetVisible(de)){var ve=E.getDatasetMeta(de);ht.each(Q.data,function(qe,De){var _t=+p.getRightValue(qe);isNaN(_t)||ve.data[De].hidden||(N=Math.min(_t,N),$=Math.max(_t,$))})}}),p.min=N===Number.POSITIVE_INFINITY?0:N,p.max=$===Number.NEGATIVE_INFINITY?0:$,p.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/jr(this.options))},convertTicksToLabels:function(){var p=this;kl.prototype.convertTicksToLabels.call(p),p.pointLabels=p.chart.data.labels.map(function(){var E=ht.callback(p.options.pointLabels.callback,arguments,p);return E||0===E?E:""})},getLabelForIndex:function(p,E){return+this.getRightValue(this.chart.data.datasets[E].data[p])},fit:function(){var p=this,E=p.options;E.display&&E.pointLabels.display?function(p){var Q,de,ve,E=ht.options._parseFont(p.options.pointLabels),N={l:0,r:p.width,t:0,b:p.height-p.paddingTop},$={};p.ctx.font=E.string,p._pointLabelSizes=[];var qe=p.chart.data.labels.length;for(Q=0;Q<qe;Q++){ve=p.getPointPosition(Q,p.drawingArea+5),de=kr(p.ctx,E.lineHeight,p.pointLabels[Q]),p._pointLabelSizes[Q]=de;var De=p.getIndexAngle(Q),_t=ht.toDegrees(De)%360,Yt=Gr(_t,ve.x,de.w,0,180),Zt=Gr(_t,ve.y,de.h,90,270);Yt.start<N.l&&(N.l=Yt.start,$.l=De),Yt.end>N.r&&(N.r=Yt.end,$.r=De),Zt.start<N.t&&(N.t=Zt.start,$.t=De),Zt.end>N.b&&(N.b=Zt.end,$.b=De)}p.setReductions(p.drawingArea,N,$)}(p):p.setCenterPoint(0,0,0,0)},setReductions:function(p,E,N){var $=this,Q=E.l/Math.sin(N.l),de=Math.max(E.r-$.width,0)/Math.sin(N.r),ve=-E.t/Math.cos(N.t),qe=-Math.max(E.b-($.height-$.paddingTop),0)/Math.cos(N.b);Q=No(Q),de=No(de),ve=No(ve),qe=No(qe),$.drawingArea=Math.min(Math.floor(p-(Q+de)/2),Math.floor(p-(ve+qe)/2)),$.setCenterPoint(Q,de,ve,qe)},setCenterPoint:function(p,E,N,$){var Q=this,qe=N+Q.drawingArea,De=Q.height-Q.paddingTop-$-Q.drawingArea;Q.xCenter=Math.floor((p+Q.drawingArea+(Q.width-E-Q.drawingArea))/2+Q.left),Q.yCenter=Math.floor((qe+De)/2+Q.top+Q.paddingTop)},getIndexAngle:function(p){var E=this.chart,de=(p*(360/E.data.labels.length)+((E.options||{}).startAngle||0))%360;return(de<0?de+360:de)*Math.PI*2/360},getDistanceFromCenterForValue:function(p){var E=this;if(ht.isNullOrUndef(p))return NaN;var N=E.drawingArea/(E.max-E.min);return E.options.ticks.reverse?(E.max-p)*N:(p-E.min)*N},getPointPosition:function(p,E){var N=this,$=N.getIndexAngle(p)-Math.PI/2;return{x:Math.cos($)*E+N.xCenter,y:Math.sin($)*E+N.yCenter}},getPointPositionForValue:function(p,E){return this.getPointPosition(p,this.getDistanceFromCenterForValue(E))},getBasePosition:function(p){var E=this,N=E.min,$=E.max;return E.getPointPositionForValue(p||0,E.beginAtZero?0:N<0&&$<0?$:N>0&&$>0?N:0)},_drawGrid:function(){var qe,De,_t,p=this,E=p.ctx,N=p.options,$=N.gridLines,Q=N.angleLines,de=vn(Q.lineWidth,$.lineWidth),ve=vn(Q.color,$.color);if(N.pointLabels.display&&function(p){var E=p.ctx,N=p.options,$=N.pointLabels,Q=jr(N),de=p.getDistanceFromCenterForValue(N.ticks.reverse?p.min:p.max),ve=ht.options._parseFont($);E.save(),E.font=ve.string,E.textBaseline="middle";for(var qe=p.chart.data.labels.length-1;qe>=0;qe--){var _t=p.getPointPosition(qe,de+(0===qe?Q/2:0)+5),Yt=Gn($.fontColor,qe,mn.global.defaultFontColor);E.fillStyle=Yt;var Zt=p.getIndexAngle(qe),wn=ht.toDegrees(Zt);E.textAlign=Ci(wn),Ai(wn,p._pointLabelSizes[qe],_t),vi(E,p.pointLabels[qe],_t,ve.lineHeight)}E.restore()}(p),$.display&&ht.each(p.ticks,function(Yt,Zt){0!==Zt&&(De=p.getDistanceFromCenterForValue(p.ticksAsNumbers[Zt]),function(p,E,N,$){var _t,Q=p.ctx,de=E.circular,ve=p.chart.data.labels.length,qe=Gn(E.color,$-1),De=Gn(E.lineWidth,$-1);if((de||ve)&&qe&&De){if(Q.save(),Q.strokeStyle=qe,Q.lineWidth=De,Q.setLineDash&&(Q.setLineDash(E.borderDash||[]),Q.lineDashOffset=E.borderDashOffset||0),Q.beginPath(),de)Q.arc(p.xCenter,p.yCenter,N,0,2*Math.PI);else{_t=p.getPointPosition(0,N),Q.moveTo(_t.x,_t.y);for(var Yt=1;Yt<ve;Yt++)_t=p.getPointPosition(Yt,N),Q.lineTo(_t.x,_t.y)}Q.closePath(),Q.stroke(),Q.restore()}}(p,$,De,Zt))}),Q.display&&de&&ve){for(E.save(),E.lineWidth=de,E.strokeStyle=ve,E.setLineDash&&(E.setLineDash(kn([Q.borderDash,$.borderDash,[]])),E.lineDashOffset=kn([Q.borderDashOffset,$.borderDashOffset,0])),qe=p.chart.data.labels.length-1;qe>=0;qe--)De=p.getDistanceFromCenterForValue(N.ticks.reverse?p.min:p.max),_t=p.getPointPosition(qe,De),E.beginPath(),E.moveTo(p.xCenter,p.yCenter),E.lineTo(_t.x,_t.y),E.stroke();E.restore()}},_drawLabels:function(){var p=this,E=p.ctx,$=p.options.ticks;if($.display){var qe,De,Q=p.getIndexAngle(0),de=ht.options._parseFont($),ve=vn($.fontColor,mn.global.defaultFontColor);E.save(),E.font=de.string,E.translate(p.xCenter,p.yCenter),E.rotate(Q),E.textAlign="center",E.textBaseline="middle",ht.each(p.ticks,function(_t,Yt){0===Yt&&!$.reverse||(qe=p.getDistanceFromCenterForValue(p.ticksAsNumbers[Yt]),$.showLabelBackdrop&&(De=E.measureText(_t).width,E.fillStyle=$.backdropColor,E.fillRect(-De/2-$.backdropPaddingX,-qe-de.size/2-$.backdropPaddingY,De+2*$.backdropPaddingX,de.size+2*$.backdropPaddingY)),E.fillStyle=ve,E.fillText(_t,0,-qe))}),E.restore()}},_drawTitle:ht.noop});wo._defaults=zn;var Oo=ht._deprecated,Ki=ht.options.resolve,Vi=ht.valueOrDefault,Wo=Number.MIN_SAFE_INTEGER||-9007199254740991,Po=Number.MAX_SAFE_INTEGER||9007199254740991,ho={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},xo=Object.keys(ho);function Ps(p,E){return p-E}function Hs(p){return ht.valueOrDefault(p.time.min,p.ticks.min)}function Pa(p){return ht.valueOrDefault(p.time.max,p.ticks.max)}function ra(p,E,N,$){var Q=function(p,E,N){for(var de,ve,qe,$=0,Q=p.length-1;$>=0&&$<=Q;){if(qe=p[de=$+Q>>1],!(ve=p[de-1]||null))return{lo:null,hi:qe};if(qe[E]<N)$=de+1;else{if(!(ve[E]>N))return{lo:ve,hi:qe};Q=de-1}}return{lo:qe,hi:null}}(p,E,N),de=Q.lo?Q.hi?Q.lo:p[p.length-2]:p[0],ve=Q.lo?Q.hi?Q.hi:p[p.length-1]:p[1],qe=ve[E]-de[E];return de[$]+(ve[$]-de[$])*(qe?(N-de[E])/qe:0)}function ns(p,E){var N=p._adapter,$=p.options.time,Q=$.parser,de=Q||$.format,ve=E;return"function"==typeof Q&&(ve=Q(ve)),ht.isFinite(ve)||(ve="string"==typeof de?N.parse(ve,de):N.parse(ve)),null!==ve?+ve:(!Q&&"function"==typeof de&&(ve=de(E),ht.isFinite(ve)||(ve=N.parse(ve))),ve)}function Aa(p,E){if(ht.isNullOrUndef(E))return null;var N=p.options.time,$=ns(p,p.getRightValue(E));return null===$||N.round&&($=+p._adapter.startOf($,N.round)),$}function zs(p,E,N,$){var de,ve,Q=xo.length;for(de=xo.indexOf(p);de<Q-1;++de)if((ve=ho[xo[de]]).common&&Math.ceil((N-E)/((ve.steps?ve.steps:Po)*ve.size))<=$)return xo[de];return xo[Q-1]}function Zs(p,E,N){var ve,qe,$=[],Q={},de=E.length;for(ve=0;ve<de;++ve)Q[qe=E[ve]]=ve,$.push({value:qe,major:!1});return 0!==de&&N?function(p,E,N,$){var qe,De,Q=p._adapter,de=+Q.startOf(E[0].value,$),ve=E[E.length-1].value;for(qe=de;qe<=ve;qe=+Q.add(qe,1,$))(De=N[qe])>=0&&(E[De].major=!0);return E}(p,$,Q,N):$}var $a=mo.extend({initialize:function(){this.mergeTicksOptions(),mo.prototype.initialize.call(this)},update:function(){var p=this,E=p.options,N=E.time||(E.time={}),$=p._adapter=new Fr._date(E.adapters.date);return Oo("time scale",N.format,"time.format","time.parser"),Oo("time scale",N.min,"time.min","ticks.min"),Oo("time scale",N.max,"time.max","ticks.max"),ht.mergeIf(N.displayFormats,$.formats()),mo.prototype.update.apply(p,arguments)},getRightValue:function(p){return p&&void 0!==p.t&&(p=p.t),mo.prototype.getRightValue.call(this,p)},determineDataLimits:function(){var Yt,Zt,wn,cr,sr,Tr,Yr,p=this,E=p.chart,N=p._adapter,$=p.options,Q=$.time.unit||"day",de=Po,ve=Wo,qe=[],De=[],_t=[],Pi=p._getLabels();for(Yt=0,wn=Pi.length;Yt<wn;++Yt)_t.push(Aa(p,Pi[Yt]));for(Yt=0,wn=(E.data.datasets||[]).length;Yt<wn;++Yt)if(E.isDatasetVisible(Yt))if(ht.isObject((sr=E.data.datasets[Yt].data)[0]))for(De[Yt]=[],Zt=0,cr=sr.length;Zt<cr;++Zt)Tr=Aa(p,sr[Zt]),qe.push(Tr),De[Yt][Zt]=Tr;else De[Yt]=_t.slice(0),Yr||(qe=qe.concat(_t),Yr=!0);else De[Yt]=[];_t.length&&(de=Math.min(de,_t[0]),ve=Math.max(ve,_t[_t.length-1])),qe.length&&(qe=wn>1?function(p){var $,Q,de,E={},N=[];for($=0,Q=p.length;$<Q;++$)E[de=p[$]]||(E[de]=!0,N.push(de));return N}(qe).sort(Ps):qe.sort(Ps),de=Math.min(de,qe[0]),ve=Math.max(ve,qe[qe.length-1])),de=Aa(p,Hs($))||de,ve=Aa(p,Pa($))||ve,de=de===Po?+N.startOf(Date.now(),Q):de,ve=ve===Wo?+N.endOf(Date.now(),Q)+1:ve,p.min=Math.min(de,ve),p.max=Math.max(de+1,ve),p._table=[],p._timestamps={data:qe,datasets:De,labels:_t}},buildTicks:function(){var Zt,wn,cr,p=this,E=p.min,N=p.max,$=p.options,Q=$.ticks,de=$.time,ve=p._timestamps,qe=[],De=p.getLabelCapacity(E),_t=Q.source,Yt=$.distribution;for(ve="data"===_t||"auto"===_t&&"series"===Yt?ve.data:"labels"===_t?ve.labels:function(p,E,N,$){var wn,Q=p._adapter,de=p.options,ve=de.time,qe=ve.unit||zs(ve.minUnit,E,N,$),De=Ki([ve.stepSize,ve.unitStepSize,1]),_t="week"===qe&&ve.isoWeekday,Yt=E,Zt=[];if(_t&&(Yt=+Q.startOf(Yt,"isoWeek",_t)),Yt=+Q.startOf(Yt,_t?"day":qe),Q.diff(N,E,qe)>1e5*De)throw E+" and "+N+" are too far apart with stepSize of "+De+" "+qe;for(wn=Yt;wn<N;wn=+Q.add(wn,De,qe))Zt.push(wn);return(wn===N||"ticks"===de.bounds)&&Zt.push(wn),Zt}(p,E,N,De),"ticks"===$.bounds&&ve.length&&(E=ve[0],N=ve[ve.length-1]),E=Aa(p,Hs($))||E,N=Aa(p,Pa($))||N,Zt=0,wn=ve.length;Zt<wn;++Zt)(cr=ve[Zt])>=E&&cr<=N&&qe.push(cr);return p.min=E,p.max=N,p._unit=de.unit||(Q.autoSkip?zs(de.minUnit,p.min,p.max,De):function(p,E,N,$,Q){var de,ve;for(de=xo.length-1;de>=xo.indexOf(N);de--)if(ho[ve=xo[de]].common&&p._adapter.diff(Q,$,ve)>=E-1)return ve;return xo[N?xo.indexOf(N):0]}(p,qe.length,de.minUnit,p.min,p.max)),p._majorUnit=Q.major.enabled&&"year"!==p._unit?function(p){for(var E=xo.indexOf(p)+1,N=xo.length;E<N;++E)if(ho[xo[E]].common)return xo[E]}(p._unit):void 0,p._table=function(p,E,N,$){if("linear"===$||!p.length)return[{time:E,pos:0},{time:N,pos:1}];var ve,qe,De,_t,Yt,Q=[],de=[E];for(ve=0,qe=p.length;ve<qe;++ve)(_t=p[ve])>E&&_t<N&&de.push(_t);for(de.push(N),ve=0,qe=de.length;ve<qe;++ve)Yt=de[ve+1],_t=de[ve],(void 0===(De=de[ve-1])||void 0===Yt||Math.round((Yt+De)/2)!==_t)&&Q.push({time:_t,pos:ve/(qe-1)});return Q}(p._timestamps.data,E,N,Yt),p._offsets=function(p,E,N,$,Q){var qe,De,de=0,ve=0;return Q.offset&&E.length&&(qe=ra(p,"time",E[0],"pos"),de=1===E.length?1-qe:(ra(p,"time",E[1],"pos")-qe)/2,De=ra(p,"time",E[E.length-1],"pos"),ve=1===E.length?De:(De-ra(p,"time",E[E.length-2],"pos"))/2),{start:de,end:ve,factor:1/(de+1+ve)}}(p._table,qe,0,0,$),Q.reverse&&qe.reverse(),Zs(p,qe,p._majorUnit)},getLabelForIndex:function(p,E){var N=this,$=N._adapter,Q=N.chart.data,de=N.options.time,ve=Q.labels&&p<Q.labels.length?Q.labels[p]:"",qe=Q.datasets[E].data[p];return ht.isObject(qe)&&(ve=N.getRightValue(qe)),de.tooltipFormat?$.format(ns(N,ve),de.tooltipFormat):"string"==typeof ve?ve:$.format(ns(N,ve),de.displayFormats.datetime)},tickFormatFunction:function(p,E,N,$){var Q=this,ve=Q.options,qe=ve.time.displayFormats,_t=Q._majorUnit,Yt=qe[_t],Zt=N[E],wn=ve.ticks,cr=_t&&Yt&&Zt&&Zt.major,sr=Q._adapter.format(p,$||(cr?Yt:qe[Q._unit])),Tr=cr?wn.major:wn.minor,Yr=Ki([Tr.callback,Tr.userCallback,wn.callback,wn.userCallback]);return Yr?Yr(sr,E,N):sr},convertTicksToLabels:function(p){var N,$,E=[];for(N=0,$=p.length;N<$;++N)E.push(this.tickFormatFunction(p[N].value,N,p));return E},getPixelForOffset:function(p){var E=this,N=E._offsets,$=ra(E._table,"time",p,"pos");return E.getPixelForDecimal((N.start+$)*N.factor)},getPixelForValue:function(p,E,N){var $=this,Q=null;if(void 0!==E&&void 0!==N&&(Q=$._timestamps.datasets[N][E]),null===Q&&(Q=Aa($,p)),null!==Q)return $.getPixelForOffset(Q)},getPixelForTick:function(p){var E=this.getTicks();return p>=0&&p<E.length?this.getPixelForOffset(E[p].value):null},getValueForPixel:function(p){var E=this,N=E._offsets,$=E.getDecimalForPixel(p)/N.factor-N.end,Q=ra(E._table,"pos",$,"time");return E._adapter._create(Q)},_getLabelSize:function(p){var E=this,N=E.options.ticks,$=E.ctx.measureText(p).width,Q=ht.toRadians(E.isHorizontal()?N.maxRotation:N.minRotation),de=Math.cos(Q),ve=Math.sin(Q),qe=Vi(N.fontSize,mn.global.defaultFontSize);return{w:$*de+qe*ve,h:$*ve+qe*de}},getLabelWidth:function(p){return this._getLabelSize(p).w},getLabelCapacity:function(p){var E=this,N=E.options.time,$=N.displayFormats,Q=$[N.unit]||$.millisecond,de=E.tickFormatFunction(p,0,Zs(E,[p],E._majorUnit),Q),ve=E._getLabelSize(de),qe=Math.floor(E.isHorizontal()?E.width/ve.w:E.height/ve.h);return E.options.offset&&qe--,qe>0?qe:1}});$a._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var Ha={category:yc,linear:xe,logarithmic:Dt,radialLinear:wo,time:$a},ol={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Fr._date.override("function"==typeof t?{_id:"moment",formats:function(){return ol},parse:function(p,E){return"string"==typeof p&&"string"==typeof E?p=t(p,E):p instanceof t||(p=t(p)),p.isValid()?p.valueOf():null},format:function(p,E){return t(p).format(E)},add:function(p,E,N){return t(p).add(E,N).valueOf()},diff:function(p,E,N){return t(p).diff(t(E),N)},startOf:function(p,E,N){return p=t(p),"isoWeek"===E?p.isoWeekday(N).valueOf():p.startOf(E).valueOf()},endOf:function(p,E){return t(p).endOf(E).valueOf()},_create:function(p){return t(p)}}:{}),mn._set("global",{plugins:{filler:{propagate:!0}}});var Us={dataset:function(p){var E=p.fill,N=p.chart,$=N.getDatasetMeta(E),de=$&&N.isDatasetVisible(E)&&$.dataset._children||[],ve=de.length||0;return ve?function(qe,De){return De<ve&&de[De]._view||null}:null},boundary:function(p){var E=p.boundary,N=E?E.x:null,$=E?E.y:null;return ht.isArray(E)?function(Q,de){return E[de]}:function(Q){return{x:null===N?Q.x:N,y:null===$?Q.y:$}}}};function sl(p,E,N){var de,$=p._model||{},Q=$.fill;if(void 0===Q&&(Q=!!$.backgroundColor),!1===Q||null===Q)return!1;if(!0===Q)return"origin";if(de=parseFloat(Q,10),isFinite(de)&&Math.floor(de)===de)return("-"===Q[0]||"+"===Q[0])&&(de=E+de),!(de===E||de<0||de>=N)&&de;switch(Q){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return Q;default:return!1}}function lc(p){return(p.el._scale||{}).getPointPositionForValue?function(p){var ve,qe,De,_t,Yt,E=p.el._scale,N=E.options,$=E.chart.data.labels.length,Q=p.fill,de=[];if(!$)return null;for(qe=N.ticks.reverse?E.min:E.max,De=E.getPointPositionForValue(0,ve=N.ticks.reverse?E.max:E.min),_t=0;_t<$;++_t)Yt="start"===Q||"end"===Q?E.getPointPositionForValue(_t,"start"===Q?ve:qe):E.getBasePosition(_t),N.gridLines.circular&&(Yt.cx=De.x,Yt.cy=De.y,Yt.angle=E.getIndexAngle(_t)-Math.PI/2),de.push(Yt);return de}(p):function(p){var de,E=p.el._model||{},N=p.el._scale||{},$=p.fill,Q=null;if(isFinite($))return null;if("start"===$?Q=void 0===E.scaleBottom?N.bottom:E.scaleBottom:"end"===$?Q=void 0===E.scaleTop?N.top:E.scaleTop:void 0!==E.scaleZero?Q=E.scaleZero:N.getBasePixel&&(Q=N.getBasePixel()),null!=Q){if(void 0!==Q.x&&void 0!==Q.y)return Q;if(ht.isFinite(Q))return{x:(de=N.isHorizontal())?Q:null,y:de?null:Q}}return null}(p)}function Va(p,E,N){var ve,Q=p[E].fill,de=[E];if(!N)return Q;for(;!1!==Q&&-1===de.indexOf(Q);){if(!isFinite(Q))return Q;if(!(ve=p[Q]))return!1;if(ve.visible)return Q;de.push(Q),Q=ve.fill}return!1}function ki(p){var E=p.fill,N="dataset";return!1===E?null:(isFinite(E)||(N="boundary"),Us[N](p))}function Oc(p){return p&&!p.skip}function pc(p,E,N,$,Q){var de,ve,qe,De;if($&&Q){for(p.moveTo(E[0].x,E[0].y),de=1;de<$;++de)ht.canvas.lineTo(p,E[de-1],E[de]);if(void 0!==N[0].angle){for(ve=N[0].cx,qe=N[0].cy,De=Math.sqrt(Math.pow(N[0].x-ve,2)+Math.pow(N[0].y-qe,2)),de=Q-1;de>0;--de)p.arc(ve,qe,De,N[de].angle,N[de-1].angle,!0);return}for(p.lineTo(N[Q-1].x,N[Q-1].y),de=Q-1;de>0;--de)ht.canvas.lineTo(p,N[de],N[de-1],!0)}}function pl(p,E,N,$,Q,de){var wn,cr,sr,Tr,Yr,Pi,yo,Co,ve=E.length,qe=$.spanGaps,De=[],_t=[],Yt=0,Zt=0;for(p.beginPath(),wn=0,cr=ve;wn<cr;++wn)Yr=N(Tr=E[sr=wn%ve]._view,sr,$),Pi=Oc(Tr),yo=Oc(Yr),de&&void 0===Co&&Pi&&(cr=ve+(Co=wn+1)),Pi&&yo?(Yt=De.push(Tr),Zt=_t.push(Yr)):Yt&&Zt&&(qe?(Pi&&De.push(Tr),yo&&_t.push(Yr)):(pc(p,De,_t,Yt,Zt),Yt=Zt=0,De=[],_t=[]));pc(p,De,_t,Yt,Zt),p.closePath(),p.fillStyle=Q,p.fill()}var _a={id:"filler",afterDatasetsUpdate:function(p,E){var de,ve,qe,De,N=(p.data.datasets||[]).length,$=E.propagate,Q=[];for(ve=0;ve<N;++ve)De=null,(qe=(de=p.getDatasetMeta(ve)).dataset)&&qe._model&&qe instanceof Vr.Line&&(De={visible:p.isDatasetVisible(ve),fill:sl(qe,ve,N),chart:p,el:qe}),de.$filler=De,Q.push(De);for(ve=0;ve<N;++ve)(De=Q[ve])&&(De.fill=Va(Q,ve,$),De.boundary=lc(De),De.mapper=ki(De))},beforeDatasetsDraw:function(p){var $,Q,de,ve,qe,De,_t,E=p._getSortedVisibleDatasetMetas(),N=p.ctx;for(Q=E.length-1;Q>=0;--Q)($=E[Q].$filler)&&$.visible&&(qe=(de=$.el)._children||[],_t=(ve=de._view).backgroundColor||mn.global.defaultColor,(De=$.mapper)&&_t&&qe.length&&(ht.canvas.clipArea(N,p.chartArea),pl(N,qe,De,ve,_t,de._loop),ht.canvas.unclipArea(N)))}},iu=ht.rtl.getRtlAdapter,cc=ht.noop,Ac=ht.valueOrDefault;function bu(p,E){return p.usePointStyle&&p.boxWidth>E?E:p.boxWidth}mn._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(p,E){var N=E.datasetIndex,$=this.chart,Q=$.getDatasetMeta(N);Q.hidden=null===Q.hidden?!$.data.datasets[N].hidden:null,$.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(p){var E=p.data.datasets,N=p.options.legend||{},$=N.labels&&N.labels.usePointStyle;return p._getSortedDatasetMetas().map(function(Q){var de=Q.controller.getStyle($?0:void 0);return{text:E[Q.index].label,fillStyle:de.backgroundColor,hidden:!p.isDatasetVisible(Q.index),lineCap:de.borderCapStyle,lineDash:de.borderDash,lineDashOffset:de.borderDashOffset,lineJoin:de.borderJoinStyle,lineWidth:de.borderWidth,strokeStyle:de.borderColor,pointStyle:de.pointStyle,rotation:de.rotation,datasetIndex:Q.index}},this)}}},legendCallback:function(p){var $,Q,de,E=document.createElement("ul"),N=p.data.datasets;for(E.setAttribute("class",p.id+"-legend"),$=0,Q=N.length;$<Q;$++)(de=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=N[$].backgroundColor,N[$].label&&de.appendChild(document.createTextNode(N[$].label));return E.outerHTML}});var ou=ot.extend({initialize:function(p){var E=this;ht.extend(E,p),E.legendHitBoxes=[],E._hoveredItem=null,E.doughnutMode=!1},beforeUpdate:cc,update:function(p,E,N){var $=this;return $.beforeUpdate(),$.maxWidth=p,$.maxHeight=E,$.margins=N,$.beforeSetDimensions(),$.setDimensions(),$.afterSetDimensions(),$.beforeBuildLabels(),$.buildLabels(),$.afterBuildLabels(),$.beforeFit(),$.fit(),$.afterFit(),$.afterUpdate(),$.minSize},afterUpdate:cc,beforeSetDimensions:cc,setDimensions:function(){var p=this;p.isHorizontal()?(p.width=p.maxWidth,p.left=0,p.right=p.width):(p.height=p.maxHeight,p.top=0,p.bottom=p.height),p.paddingLeft=0,p.paddingTop=0,p.paddingRight=0,p.paddingBottom=0,p.minSize={width:0,height:0}},afterSetDimensions:cc,beforeBuildLabels:cc,buildLabels:function(){var p=this,E=p.options.labels||{},N=ht.callback(E.generateLabels,[p.chart],p)||[];E.filter&&(N=N.filter(function($){return E.filter($,p.chart.data)})),p.options.reverse&&N.reverse(),p.legendItems=N},afterBuildLabels:cc,beforeFit:cc,fit:function(){var p=this,E=p.options,N=E.labels,$=E.display,Q=p.ctx,de=ht.options._parseFont(N),ve=de.size,qe=p.legendHitBoxes=[],De=p.minSize,_t=p.isHorizontal();if(_t?(De.width=p.maxWidth,De.height=$?10:0):(De.width=$?10:0,De.height=p.maxHeight),$){if(Q.font=de.string,_t){var Yt=p.lineWidths=[0],Zt=0;Q.textAlign="left",Q.textBaseline="middle",ht.each(p.legendItems,function(yo,Co){var ts=bu(N,ve)+ve/2+Q.measureText(yo.text).width;(0===Co||Yt[Yt.length-1]+ts+2*N.padding>De.width)&&(Zt+=ve+N.padding,Yt[Yt.length-(Co>0?0:1)]=0),qe[Co]={left:0,top:0,width:ts,height:ve},Yt[Yt.length-1]+=ts+N.padding}),De.height+=Zt}else{var wn=N.padding,cr=p.columnWidths=[],sr=p.columnHeights=[],Tr=N.padding,Yr=0,Pi=0;ht.each(p.legendItems,function(yo,Co){var ts=bu(N,ve)+ve/2+Q.measureText(yo.text).width;Co>0&&Pi+ve+2*wn>De.height&&(Tr+=Yr+N.padding,cr.push(Yr),sr.push(Pi),Yr=0,Pi=0),Yr=Math.max(Yr,ts),Pi+=ve+wn,qe[Co]={left:0,top:0,width:ts,height:ve}}),Tr+=Yr,cr.push(Yr),sr.push(Pi),De.width+=Tr}p.width=De.width,p.height=De.height}else p.width=De.width=p.height=De.height=0},afterFit:cc,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var p=this,E=p.options,N=E.labels,$=mn.global,Q=$.defaultColor,de=$.elements.line,ve=p.height,qe=p.columnHeights,De=p.width,_t=p.lineWidths;if(E.display){var Tr,Yt=iu(E.rtl,p.left,p.minSize.width),Zt=p.ctx,wn=Ac(N.fontColor,$.defaultFontColor),cr=ht.options._parseFont(N),sr=cr.size;Zt.textAlign=Yt.textAlign("left"),Zt.textBaseline="middle",Zt.lineWidth=.5,Zt.strokeStyle=wn,Zt.fillStyle=wn,Zt.font=cr.string;var Yr=bu(N,sr),Pi=p.legendHitBoxes,Xo=function(Ts,Ms){switch(E.align){case"start":return N.padding;case"end":return Ts-Ms;default:return(Ts-Ms+N.padding)/2}},ts=p.isHorizontal();Tr=ts?{x:p.left+Xo(De,_t[0]),y:p.top+N.padding,line:0}:{x:p.left+N.padding,y:p.top+Xo(ve,qe[0]),line:0},ht.rtl.overrideTextDirection(p.ctx,E.textDirection);var _s=sr+N.padding;ht.each(p.legendItems,function(Ts,Ms){var xs=Zt.measureText(Ts.text).width,ya=Yr+sr/2+xs,hl=Tr.x,Ga=Tr.y;Yt.setWidth(p.minSize.width),ts?Ms>0&&hl+ya+N.padding>p.left+p.minSize.width&&(Ga=Tr.y+=_s,Tr.line++,hl=Tr.x=p.left+Xo(De,_t[Tr.line])):Ms>0&&Ga+_s>p.top+p.minSize.height&&(hl=Tr.x=hl+p.columnWidths[Tr.line]+N.padding,Tr.line++,Ga=Tr.y=p.top+Xo(ve,qe[Tr.line]));var Qa=Yt.x(hl);(function(Ts,Ms,xs){if(!(isNaN(Yr)||Yr<=0)){Zt.save();var ya=Ac(xs.lineWidth,de.borderWidth);if(Zt.fillStyle=Ac(xs.fillStyle,Q),Zt.lineCap=Ac(xs.lineCap,de.borderCapStyle),Zt.lineDashOffset=Ac(xs.lineDashOffset,de.borderDashOffset),Zt.lineJoin=Ac(xs.lineJoin,de.borderJoinStyle),Zt.lineWidth=ya,Zt.strokeStyle=Ac(xs.strokeStyle,Q),Zt.setLineDash&&Zt.setLineDash(Ac(xs.lineDash,de.borderDash)),N&&N.usePointStyle){var hl=Yr*Math.SQRT2/2,Ga=Yt.xPlus(Ts,Yr/2);ht.canvas.drawPoint(Zt,xs.pointStyle,hl,Ga,Ms+sr/2,xs.rotation)}else Zt.fillRect(Yt.leftForLtr(Ts,Yr),Ms,Yr,sr),0!==ya&&Zt.strokeRect(Yt.leftForLtr(Ts,Yr),Ms,Yr,sr);Zt.restore()}})(Qa,Ga,Ts),Pi[Ms].left=Yt.leftForLtr(Qa,Pi[Ms].width),Pi[Ms].top=Ga,function(Ts,Ms,xs,ya){var hl=sr/2,Ga=Yt.xPlus(Ts,Yr+hl),Qa=Ms+hl;Zt.fillText(xs.text,Ga,Qa),xs.hidden&&(Zt.beginPath(),Zt.lineWidth=2,Zt.moveTo(Ga,Qa),Zt.lineTo(Yt.xPlus(Ga,ya),Qa),Zt.stroke())}(Qa,Ga,Ts,xs),ts?Tr.x+=ya+N.padding:Tr.y+=_s}),ht.rtl.restoreTextDirection(p.ctx,E.textDirection)}},_getLegendItemAt:function(p,E){var $,Q,de,N=this;if(p>=N.left&&p<=N.right&&E>=N.top&&E<=N.bottom)for(de=N.legendHitBoxes,$=0;$<de.length;++$)if(p>=(Q=de[$]).left&&p<=Q.left+Q.width&&E>=Q.top&&E<=Q.top+Q.height)return N.legendItems[$];return null},handleEvent:function(p){var Q,E=this,N=E.options,$="mouseup"===p.type?"click":p.type;if("mousemove"===$){if(!N.onHover&&!N.onLeave)return}else{if("click"!==$)return;if(!N.onClick)return}Q=E._getLegendItemAt(p.x,p.y),"click"===$?Q&&N.onClick&&N.onClick.call(E,p.native,Q):(N.onLeave&&Q!==E._hoveredItem&&(E._hoveredItem&&N.onLeave.call(E,p.native,E._hoveredItem),E._hoveredItem=Q),N.onHover&&Q&&N.onHover.call(E,p.native,Q))}});function xl(p,E){var N=new ou({ctx:p.ctx,options:E,chart:p});Ua.configure(p,N,E),Ua.addBox(p,N),p.legend=N}var Vl={id:"legend",_element:ou,beforeInit:function(p){var E=p.options.legend;E&&xl(p,E)},beforeUpdate:function(p){var E=p.options.legend,N=p.legend;E?(ht.mergeIf(E,mn.global.legend),N?(Ua.configure(p,N,E),N.options=E):xl(p,E)):N&&(Ua.removeBox(p,N),delete p.legend)},afterEvent:function(p,E){var N=p.legend;N&&N.handleEvent(E)}},el=ht.noop;mn._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var tl=ot.extend({initialize:function(p){ht.extend(this,p),this.legendHitBoxes=[]},beforeUpdate:el,update:function(p,E,N){var $=this;return $.beforeUpdate(),$.maxWidth=p,$.maxHeight=E,$.margins=N,$.beforeSetDimensions(),$.setDimensions(),$.afterSetDimensions(),$.beforeBuildLabels(),$.buildLabels(),$.afterBuildLabels(),$.beforeFit(),$.fit(),$.afterFit(),$.afterUpdate(),$.minSize},afterUpdate:el,beforeSetDimensions:el,setDimensions:function(){var p=this;p.isHorizontal()?(p.width=p.maxWidth,p.left=0,p.right=p.width):(p.height=p.maxHeight,p.top=0,p.bottom=p.height),p.paddingLeft=0,p.paddingTop=0,p.paddingRight=0,p.paddingBottom=0,p.minSize={width:0,height:0}},afterSetDimensions:el,beforeBuildLabels:el,buildLabels:el,afterBuildLabels:el,beforeFit:el,fit:function(){var de,p=this,E=p.options,N=p.minSize={},$=p.isHorizontal();E.display?(de=(ht.isArray(E.text)?E.text.length:1)*ht.options._parseFont(E).lineHeight+2*E.padding,p.width=N.width=$?p.maxWidth:de,p.height=N.height=$?de:p.maxHeight):p.width=N.width=p.height=N.height=0},afterFit:el,isHorizontal:function(){var p=this.options.position;return"top"===p||"bottom"===p},draw:function(){var p=this,E=p.ctx,N=p.options;if(N.display){var Zt,wn,cr,$=ht.options._parseFont(N),Q=$.lineHeight,de=Q/2+N.padding,ve=0,qe=p.top,De=p.left,_t=p.bottom,Yt=p.right;E.fillStyle=ht.valueOrDefault(N.fontColor,mn.global.defaultFontColor),E.font=$.string,p.isHorizontal()?(wn=De+(Yt-De)/2,cr=qe+de,Zt=Yt-De):(wn="left"===N.position?De+de:Yt-de,cr=qe+(_t-qe)/2,Zt=_t-qe,ve=Math.PI*("left"===N.position?-.5:.5)),E.save(),E.translate(wn,cr),E.rotate(ve),E.textAlign="center",E.textBaseline="middle";var sr=N.text;if(ht.isArray(sr))for(var Tr=0,Yr=0;Yr<sr.length;++Yr)E.fillText(sr[Yr],0,Tr,Zt),Tr+=Q;else E.fillText(sr,0,0,Zt);E.restore()}}});function ml(p,E){var N=new tl({ctx:p.ctx,options:E,chart:p});Ua.configure(p,N,E),Ua.addBox(p,N),p.titleBlock=N}var vl={},hc=_a,Jl=Vl,nl={id:"title",_element:tl,beforeInit:function(p){var E=p.options.title;E&&ml(p,E)},beforeUpdate:function(p){var E=p.options.title,N=p.titleBlock;E?(ht.mergeIf(E,mn.global.title),N?(Ua.configure(p,N,E),N.options=E):ml(p,E)):N&&(Ua.removeBox(p,N),delete p.titleBlock)}};for(var yl in vl.filler=hc,vl.legend=Jl,vl.title=nl,Bt.helpers=ht,function(){function p($,Q,de){var ve;return"string"==typeof $?(ve=parseInt($,10),-1!==$.indexOf("%")&&(ve=ve/100*Q.parentNode[de])):ve=$,ve}function E($){return null!=$&&"none"!==$}function N($,Q,de){var ve=document.defaultView,qe=ht._getParentNode($),De=ve.getComputedStyle($)[Q],_t=ve.getComputedStyle(qe)[Q],Yt=E(De),Zt=E(_t),wn=Number.POSITIVE_INFINITY;return Yt||Zt?Math.min(Yt?p(De,$,de):wn,Zt?p(_t,qe,de):wn):"none"}ht.where=function($,Q){if(ht.isArray($)&&Array.prototype.filter)return $.filter(Q);var de=[];return ht.each($,function(ve){Q(ve)&&de.push(ve)}),de},ht.findIndex=Array.prototype.findIndex?function($,Q,de){return $.findIndex(Q,de)}:function($,Q,de){de=void 0===de?$:de;for(var ve=0,qe=$.length;ve<qe;++ve)if(Q.call(de,$[ve],ve,$))return ve;return-1},ht.findNextWhere=function($,Q,de){ht.isNullOrUndef(de)&&(de=-1);for(var ve=de+1;ve<$.length;ve++){var qe=$[ve];if(Q(qe))return qe}},ht.findPreviousWhere=function($,Q,de){ht.isNullOrUndef(de)&&(de=$.length);for(var ve=de-1;ve>=0;ve--){var qe=$[ve];if(Q(qe))return qe}},ht.isNumber=function($){return!isNaN(parseFloat($))&&isFinite($)},ht.almostEquals=function($,Q,de){return Math.abs($-Q)<de},ht.almostWhole=function($,Q){var de=Math.round($);return de-Q<=$&&de+Q>=$},ht.max=function($){return $.reduce(function(Q,de){return isNaN(de)?Q:Math.max(Q,de)},Number.NEGATIVE_INFINITY)},ht.min=function($){return $.reduce(function(Q,de){return isNaN(de)?Q:Math.min(Q,de)},Number.POSITIVE_INFINITY)},ht.sign=Math.sign?function($){return Math.sign($)}:function($){return 0==($=+$)||isNaN($)?$:$>0?1:-1},ht.toRadians=function($){return $*(Math.PI/180)},ht.toDegrees=function($){return $*(180/Math.PI)},ht._decimalPlaces=function($){if(ht.isFinite($)){for(var Q=1,de=0;Math.round($*Q)/Q!==$;)Q*=10,de++;return de}},ht.getAngleFromPoint=function($,Q){var de=Q.x-$.x,ve=Q.y-$.y,qe=Math.sqrt(de*de+ve*ve),De=Math.atan2(ve,de);return De<-.5*Math.PI&&(De+=2*Math.PI),{angle:De,distance:qe}},ht.distanceBetweenPoints=function($,Q){return Math.sqrt(Math.pow(Q.x-$.x,2)+Math.pow(Q.y-$.y,2))},ht.aliasPixel=function($){return $%2==0?0:.5},ht._alignPixel=function($,Q,de){var ve=$.currentDevicePixelRatio,qe=de/2;return Math.round((Q-qe)*ve)/ve+qe},ht.splineCurve=function($,Q,de,ve){var qe=$.skip?Q:$,De=Q,_t=de.skip?Q:de,Yt=Math.sqrt(Math.pow(De.x-qe.x,2)+Math.pow(De.y-qe.y,2)),Zt=Math.sqrt(Math.pow(_t.x-De.x,2)+Math.pow(_t.y-De.y,2)),wn=Yt/(Yt+Zt),cr=Zt/(Yt+Zt),sr=ve*(wn=isNaN(wn)?0:wn),Tr=ve*(cr=isNaN(cr)?0:cr);return{previous:{x:De.x-sr*(_t.x-qe.x),y:De.y-sr*(_t.y-qe.y)},next:{x:De.x+Tr*(_t.x-qe.x),y:De.y+Tr*(_t.y-qe.y)}}},ht.EPSILON=Number.EPSILON||1e-14,ht.splineCurveMonotone=function($){var ve,qe,De,_t,Zt,wn,cr,sr,Tr,Q=($||[]).map(function(Yr){return{model:Yr._model,deltaK:0,mK:0}}),de=Q.length;for(ve=0;ve<de;++ve)if(!(De=Q[ve]).model.skip){if(qe=ve>0?Q[ve-1]:null,(_t=ve<de-1?Q[ve+1]:null)&&!_t.model.skip){var Yt=_t.model.x-De.model.x;De.deltaK=0!==Yt?(_t.model.y-De.model.y)/Yt:0}De.mK=!qe||qe.model.skip?De.deltaK:!_t||_t.model.skip?qe.deltaK:this.sign(qe.deltaK)!==this.sign(De.deltaK)?0:(qe.deltaK+De.deltaK)/2}for(ve=0;ve<de-1;++ve)if(_t=Q[ve+1],!(De=Q[ve]).model.skip&&!_t.model.skip){if(ht.almostEquals(De.deltaK,0,this.EPSILON)){De.mK=_t.mK=0;continue}Zt=De.mK/De.deltaK,wn=_t.mK/De.deltaK,!((sr=Math.pow(Zt,2)+Math.pow(wn,2))<=9)&&(cr=3/Math.sqrt(sr),De.mK=Zt*cr*De.deltaK,_t.mK=wn*cr*De.deltaK)}for(ve=0;ve<de;++ve)!(De=Q[ve]).model.skip&&(_t=ve<de-1?Q[ve+1]:null,(qe=ve>0?Q[ve-1]:null)&&!qe.model.skip&&(De.model.controlPointPreviousX=De.model.x-(Tr=(De.model.x-qe.model.x)/3),De.model.controlPointPreviousY=De.model.y-Tr*De.mK),_t&&!_t.model.skip&&(De.model.controlPointNextX=De.model.x+(Tr=(_t.model.x-De.model.x)/3),De.model.controlPointNextY=De.model.y+Tr*De.mK))},ht.nextItem=function($,Q,de){return de?Q>=$.length-1?$[0]:$[Q+1]:Q>=$.length-1?$[$.length-1]:$[Q+1]},ht.previousItem=function($,Q,de){return de?Q<=0?$[$.length-1]:$[Q-1]:Q<=0?$[0]:$[Q-1]},ht.niceNum=function($,Q){var de=Math.floor(ht.log10($)),ve=$/Math.pow(10,de);return(Q?ve<1.5?1:ve<3?2:ve<7?5:10:ve<=1?1:ve<=2?2:ve<=5?5:10)*Math.pow(10,de)},ht.requestAnimFrame="undefined"==typeof window?function($){$()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function($){return window.setTimeout($,1e3/60)},ht.getRelativePosition=function($,Q){var de,ve,qe=$.originalEvent||$,De=$.target||$.srcElement,_t=De.getBoundingClientRect(),Yt=qe.touches;Yt&&Yt.length>0?(de=Yt[0].clientX,ve=Yt[0].clientY):(de=qe.clientX,ve=qe.clientY);var Zt=parseFloat(ht.getStyle(De,"padding-left")),wn=parseFloat(ht.getStyle(De,"padding-top")),cr=parseFloat(ht.getStyle(De,"padding-right")),sr=parseFloat(ht.getStyle(De,"padding-bottom")),Yr=_t.bottom-_t.top-wn-sr;return{x:de=Math.round((de-_t.left-Zt)/(_t.right-_t.left-Zt-cr)*De.width/Q.currentDevicePixelRatio),y:ve=Math.round((ve-_t.top-wn)/Yr*De.height/Q.currentDevicePixelRatio)}},ht.getConstraintWidth=function($){return N($,"max-width","clientWidth")},ht.getConstraintHeight=function($){return N($,"max-height","clientHeight")},ht._calculatePadding=function($,Q,de){return(Q=ht.getStyle($,Q)).indexOf("%")>-1?de*parseInt(Q,10)/100:parseInt(Q,10)},ht._getParentNode=function($){var Q=$.parentNode;return Q&&"[object ShadowRoot]"===Q.toString()&&(Q=Q.host),Q},ht.getMaximumWidth=function($){var Q=ht._getParentNode($);if(!Q)return $.clientWidth;var de=Q.clientWidth,De=de-ht._calculatePadding(Q,"padding-left",de)-ht._calculatePadding(Q,"padding-right",de),_t=ht.getConstraintWidth($);return isNaN(_t)?De:Math.min(De,_t)},ht.getMaximumHeight=function($){var Q=ht._getParentNode($);if(!Q)return $.clientHeight;var de=Q.clientHeight,De=de-ht._calculatePadding(Q,"padding-top",de)-ht._calculatePadding(Q,"padding-bottom",de),_t=ht.getConstraintHeight($);return isNaN(_t)?De:Math.min(De,_t)},ht.getStyle=function($,Q){return $.currentStyle?$.currentStyle[Q]:document.defaultView.getComputedStyle($,null).getPropertyValue(Q)},ht.retinaScale=function($,Q){var de=$.currentDevicePixelRatio=Q||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==de){var ve=$.canvas,qe=$.height,De=$.width;ve.height=qe*de,ve.width=De*de,$.ctx.scale(de,de),!ve.style.height&&!ve.style.width&&(ve.style.height=qe+"px",ve.style.width=De+"px")}},ht.fontString=function($,Q,de){return Q+" "+$+"px "+de},ht.longestText=function($,Q,de,ve){var qe=(ve=ve||{}).data=ve.data||{},De=ve.garbageCollect=ve.garbageCollect||[];ve.font!==Q&&(qe=ve.data={},De=ve.garbageCollect=[],ve.font=Q),$.font=Q;var Zt,wn,cr,sr,Tr,_t=0,Yt=de.length;for(Zt=0;Zt<Yt;Zt++)if(null!=(sr=de[Zt])&&!0!==ht.isArray(sr))_t=ht.measureText($,qe,De,_t,sr);else if(ht.isArray(sr))for(wn=0,cr=sr.length;wn<cr;wn++)null!=(Tr=sr[wn])&&!ht.isArray(Tr)&&(_t=ht.measureText($,qe,De,_t,Tr));var Yr=De.length/2;if(Yr>de.length){for(Zt=0;Zt<Yr;Zt++)delete qe[De[Zt]];De.splice(0,Yr)}return _t},ht.measureText=function($,Q,de,ve,qe){var De=Q[qe];return De||(De=Q[qe]=$.measureText(qe).width,de.push(qe)),De>ve&&(ve=De),ve},ht.numberOfLabelLines=function($){var Q=1;return ht.each($,function(de){ht.isArray(de)&&de.length>Q&&(Q=de.length)}),Q},ht.color=er?function($){return $ instanceof CanvasGradient&&($=mn.global.defaultColor),er($)}:function($){return console.error("Color.js not found!"),$},ht.getHoverColor=function($){return $ instanceof CanvasPattern||$ instanceof CanvasGradient?$:ht.color($).saturate(.5).darken(.1).rgbString()}}(),Bt._adapters=Fr,Bt.Animation=sn,Bt.animationService=An,Bt.controllers=ni,Bt.DatasetController=br,Bt.defaults=mn,Bt.Element=ot,Bt.elements=Vr,Bt.Interaction=Os,Bt.layouts=Ua,Bt.platform=pa,Bt.plugins=Vo,Bt.Scale=mo,Bt.scaleService=ja,Bt.Ticks=zr,Bt.Tooltip=Ui,Bt.helpers.each(Ha,function(p,E){Bt.scaleService.registerScaleType(E,p,p._defaults)}),vl)vl.hasOwnProperty(yl)&&Bt.plugins.register(vl[yl]);Bt.platform.initialize();var El=Bt;return"undefined"!=typeof window&&(window.Chart=Bt),Bt.Chart=Bt,Bt.Legend=vl.legend._element,Bt.Title=vl.title._element,Bt.pluginService=Bt.plugins,Bt.PluginBase=Bt.Element.extend({}),Bt.canvasHelpers=Bt.helpers.canvas,Bt.layoutService=Bt.layouts,Bt.LinearScaleBase=kl,Bt.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(p){Bt[p]=function(E,N){return new Bt(E,Bt.helpers.merge(N||{},{type:p.charAt(0).toLowerCase()+p.slice(1)}))}}),El}(function(){try{return o(16738)}catch(s){}}())},2665:Ge=>{Ge.exports=function(o,t){for(var e=[],s=0;s<o.length;s++){var a=t(o[s],s);g(a)?e.push.apply(e,a):e.push(a)}return e};var g=Array.isArray||function(o){return"[object Array]"===Object.prototype.toString.call(o)}},97057:(Ge,g,o)=>{"use strict";o.d(g,{qY:()=>D});var e=function(J,Y,ie){this.name=J,this.version=Y,this.os=ie,this.type="browser"},s=function(J){this.version=J,this.type="node",this.name="node",this.os=process.platform},a=function(J,Y,ie,oe){this.name=J,this.version=Y,this.os=ie,this.bot=oe,this.type="bot-device"},l=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},u=function(){this.type="react-native",this.name="react-native",this.version=null,this.os=null},_=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,b=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],C=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function D(I){return I?H(I):"undefined"==typeof document&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product?new u:"undefined"!=typeof navigator?H(navigator.userAgent):"undefined"!=typeof process&&process.version?new s(process.version.slice(1)):null}function H(I){var J=function(I){return""!==I&&b.reduce(function(J,Y){var ie=Y[0];if(J)return J;var fe=Y[1].exec(I);return!!fe&&[ie,fe]},!1)}(I);if(!J)return null;var Y=J[0],ie=J[1];if("searchbot"===Y)return new l;var oe=ie[1]&&ie[1].split(/[._]/).slice(0,3);oe?oe.length<3&&(oe=function(){for(var I=0,J=0,Y=arguments.length;J<Y;J++)I+=arguments[J].length;var ie=Array(I),oe=0;for(J=0;J<Y;J++)for(var fe=arguments[J],ne=0,he=fe.length;ne<he;ne++,oe++)ie[oe]=fe[ne];return ie}(oe,function(I){for(var J=[],Y=0;Y<I;Y++)J.push("0");return J}(3-oe.length))):oe=[];var fe=oe.join("."),ne=function(I){for(var J=0,Y=C.length;J<Y;J++){var ie=C[J],oe=ie[0];if(ie[1].exec(I))return oe}return null}(I),he=_.exec(I);return he&&he[1]?new a(Y,fe,ne,he[1]):new e(Y,fe,ne)}},49457:function(Ge,g){var o,e;void 0!==(e="function"==typeof(o=function(){"use strict";function a(m,b,C){var D=new XMLHttpRequest;D.open("GET",m),D.responseType="blob",D.onload=function(){_(D.response,b,C)},D.onerror=function(){console.error("could not download file")},D.send()}function l(m){var b=new XMLHttpRequest;b.open("HEAD",m,!1);try{b.send()}catch(C){}return 200<=b.status&&299>=b.status}function u(m){try{m.dispatchEvent(new MouseEvent("click"))}catch(C){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),m.dispatchEvent(b)}}var h="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,_=h.saveAs||("object"!=typeof window||window!==h?function(){}:"download"in HTMLAnchorElement.prototype?function(m,b,C){var D=h.URL||h.webkitURL,x=document.createElement("a");x.download=b=b||m.name||"download",x.rel="noopener","string"==typeof m?(x.href=m,x.origin===location.origin?u(x):l(x.href)?a(m,b,C):u(x,x.target="_blank")):(x.href=D.createObjectURL(m),setTimeout(function(){D.revokeObjectURL(x.href)},4e4),setTimeout(function(){u(x)},0))}:"msSaveOrOpenBlob"in navigator?function(m,b,C){if(b=b||m.name||"download","string"!=typeof m)navigator.msSaveOrOpenBlob(function(m,b){return void 0===b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(m.type)?new Blob(["\ufeff",m],{type:m.type}):m}(m,C),b);else if(l(m))a(m,b,C);else{var D=document.createElement("a");D.href=m,D.target="_blank",setTimeout(function(){u(D)})}}:function(m,b,C,D){if((D=D||open("","_blank"))&&(D.document.title=D.document.body.innerText="downloading..."),"string"==typeof m)return a(m,b,C);var x="application/octet-stream"===m.type,j=/constructor/i.test(h.HTMLElement)||h.safari,H=/CriOS\/[\d]+/.test(navigator.userAgent);if((H||x&&j)&&"object"==typeof FileReader){var z=new FileReader;z.onloadend=function(){var I=z.result;I=H?I:I.replace(/^data:[^;]*;/,"data:attachment/file;"),D?D.location.href=I:location=I,D=null},z.readAsDataURL(m)}else{var U=h.URL||h.webkitURL,M=U.createObjectURL(m);D?D.location=M:location.href=M,D=null,setTimeout(function(){U.revokeObjectURL(M)},4e4)}});h.saveAs=_.saveAs=_,Ge.exports=_})?o.apply(g,[]):o)&&(Ge.exports=e)},86906:Ge=>{var e=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,h="object"==typeof global&&global&&global.Object===Object&&global,_="object"==typeof self&&self&&self.Object===Object&&self,m=h||_||Function("return this")(),C=Object.prototype.toString,D=Math.max,x=Math.min,j=function(){return m.Date.now()};function z(J){var Y=typeof J;return!!J&&("object"==Y||"function"==Y)}function I(J){if("number"==typeof J)return J;if(function(J){return"symbol"==typeof J||function(J){return!!J&&"object"==typeof J}(J)&&"[object Symbol]"==C.call(J)}(J))return NaN;if(z(J)){var Y="function"==typeof J.valueOf?J.valueOf():J;J=z(Y)?Y+"":Y}if("string"!=typeof J)return 0===J?J:+J;J=J.replace(e,"");var ie=a.test(J);return ie||l.test(J)?u(J.slice(2),ie?2:8):s.test(J)?NaN:+J}Ge.exports=function(J,Y,ie){var oe,fe,ne,he,ce,Ae,Me=0,Oe=!1,be=!1,ue=!0;if("function"!=typeof J)throw new TypeError("Expected a function");function He(Qe){var It=oe,ae=fe;return oe=fe=void 0,Me=Qe,he=J.apply(ae,It)}function $e(Qe){return Me=Qe,ce=setTimeout(Et,Y),Oe?He(Qe):he}function je(Qe){var It=Qe-Ae;return void 0===Ae||It>=Y||It<0||be&&Qe-Me>=ne}function Et(){var Qe=j();if(je(Qe))return lt(Qe);ce=setTimeout(Et,function(Qe){var Ie=Y-(Qe-Ae);return be?x(Ie,ne-(Qe-Me)):Ie}(Qe))}function lt(Qe){return ce=void 0,ue&&oe?He(Qe):(oe=fe=void 0,he)}function At(){var Qe=j(),It=je(Qe);if(oe=arguments,fe=this,Ae=Qe,It){if(void 0===ce)return $e(Ae);if(be)return ce=setTimeout(Et,Y),He(Ae)}return void 0===ce&&(ce=setTimeout(Et,Y)),he}return Y=I(Y)||0,z(ie)&&(Oe=!!ie.leading,ne=(be="maxWait"in ie)?D(I(ie.maxWait)||0,Y):ne,ue="trailing"in ie?!!ie.trailing:ue),At.cancel=function(){void 0!==ce&&clearTimeout(ce),Me=0,oe=Ae=fe=ce=void 0},At.flush=function(){return void 0===ce?he:lt(j())},At}},66941:Ge=>{var Ln,o="__lodash_hash_undefined__",a=/^\[object .+?Constructor\]$/,l="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,h=l||u||Function("return this")(),b=Array.prototype,C=Function.prototype,D=Object.prototype,x=h["__core-js_shared__"],j=(Ln=/[^.]+$/.exec(x&&x.keys&&x.keys.IE_PROTO||""))?"Symbol(src)_1."+Ln:"",H=C.toString,z=D.hasOwnProperty,U=D.toString,M=RegExp("^"+H.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),I=b.splice,J=It(h,"Map"),Y=It(Object,"create");function ie(Ln){var Rn=-1,er=Ln?Ln.length:0;for(this.clear();++Rn<er;){var Mn=Ln[Rn];this.set(Mn[0],Mn[1])}}function Ae(Ln){var Rn=-1,er=Ln?Ln.length:0;for(this.clear();++Rn<er;){var Mn=Ln[Rn];this.set(Mn[0],Mn[1])}}function $e(Ln){var Rn=-1,er=Ln?Ln.length:0;for(this.clear();++Rn<er;){var Mn=Ln[Rn];this.set(Mn[0],Mn[1])}}function St(Ln,Rn){for(var er=Ln.length;er--;)if(zt(Ln[er][0],Rn))return er;return-1}function Qe(Ln,Rn){var er=Ln.__data__;return function(Ln){var Rn=typeof Ln;return"string"==Rn||"number"==Rn||"symbol"==Rn||"boolean"==Rn?"__proto__"!==Ln:null===Ln}(Rn)?er["string"==typeof Rn?"string":"hash"]:er.map}function It(Ln,Rn){var er=function(Ln,Rn){return null==Ln?void 0:Ln[Rn]}(Ln,Rn);return function(Ln){return!(!ar(Ln)||function(Ln){return!!j&&j in Ln}(Ln))&&(function(Ln){var Rn=ar(Ln)?U.call(Ln):"";return"[object Function]"==Rn||"[object GeneratorFunction]"==Rn}(Ln)||function(Ln){var Rn=!1;if(null!=Ln&&"function"!=typeof Ln.toString)try{Rn=!!(Ln+"")}catch(er){}return Rn}(Ln)?M:a).test(function(Ln){if(null!=Ln){try{return H.call(Ln)}catch(Rn){}try{return Ln+""}catch(Rn){}}return""}(Ln))}(er)?er:void 0}function Jt(Ln,Rn){if("function"!=typeof Ln||Rn&&"function"!=typeof Rn)throw new TypeError("Expected a function");var er=function(){var Mn=arguments,Ht=Rn?Rn.apply(this,Mn):Mn[0],tr=er.cache;if(tr.has(Ht))return tr.get(Ht);var Yn=Ln.apply(this,Mn);return er.cache=tr.set(Ht,Yn),Yn};return er.cache=new(Jt.Cache||$e),er}function zt(Ln,Rn){return Ln===Rn||Ln!=Ln&&Rn!=Rn}function ar(Ln){var Rn=typeof Ln;return!!Ln&&("object"==Rn||"function"==Rn)}ie.prototype.clear=function(){this.__data__=Y?Y(null):{}},ie.prototype.delete=function(Ln){return this.has(Ln)&&delete this.__data__[Ln]},ie.prototype.get=function(Ln){var Rn=this.__data__;if(Y){var er=Rn[Ln];return er===o?void 0:er}return z.call(Rn,Ln)?Rn[Ln]:void 0},ie.prototype.has=function(Ln){var Rn=this.__data__;return Y?void 0!==Rn[Ln]:z.call(Rn,Ln)},ie.prototype.set=function(Ln,Rn){return this.__data__[Ln]=Y&&void 0===Rn?o:Rn,this},Ae.prototype.clear=function(){this.__data__=[]},Ae.prototype.delete=function(Ln){var Rn=this.__data__,er=St(Rn,Ln);return!(er<0||(er==Rn.length-1?Rn.pop():I.call(Rn,er,1),0))},Ae.prototype.get=function(Ln){var Rn=this.__data__,er=St(Rn,Ln);return er<0?void 0:Rn[er][1]},Ae.prototype.has=function(Ln){return St(this.__data__,Ln)>-1},Ae.prototype.set=function(Ln,Rn){var er=this.__data__,Mn=St(er,Ln);return Mn<0?er.push([Ln,Rn]):er[Mn][1]=Rn,this},$e.prototype.clear=function(){this.__data__={hash:new ie,map:new(J||Ae),string:new ie}},$e.prototype.delete=function(Ln){return Qe(this,Ln).delete(Ln)},$e.prototype.get=function(Ln){return Qe(this,Ln).get(Ln)},$e.prototype.has=function(Ln){return Qe(this,Ln).has(Ln)},$e.prototype.set=function(Ln,Rn){return Qe(this,Ln).set(Ln,Rn),this},Jt.Cache=$e,Ge.exports=Jt},6123:Ge=>{var g="Expected a function",e=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,h="object"==typeof global&&global&&global.Object===Object&&global,_="object"==typeof self&&self&&self.Object===Object&&self,m=h||_||Function("return this")(),C=Object.prototype.toString,D=Math.max,x=Math.min,j=function(){return m.Date.now()};function U(Y){var ie=typeof Y;return!!Y&&("object"==ie||"function"==ie)}function J(Y){if("number"==typeof Y)return Y;if(function(Y){return"symbol"==typeof Y||function(Y){return!!Y&&"object"==typeof Y}(Y)&&"[object Symbol]"==C.call(Y)}(Y))return NaN;if(U(Y)){var ie="function"==typeof Y.valueOf?Y.valueOf():Y;Y=U(ie)?ie+"":ie}if("string"!=typeof Y)return 0===Y?Y:+Y;Y=Y.replace(e,"");var oe=a.test(Y);return oe||l.test(Y)?u(Y.slice(2),oe?2:8):s.test(Y)?NaN:+Y}Ge.exports=function(Y,ie,oe){var fe=!0,ne=!0;if("function"!=typeof Y)throw new TypeError(g);return U(oe)&&(fe="leading"in oe?!!oe.leading:fe,ne="trailing"in oe?!!oe.trailing:ne),function(Y,ie,oe){var fe,ne,he,ce,Ae,Me,Oe=0,be=!1,ue=!1,He=!0;if("function"!=typeof Y)throw new TypeError(g);function $e(It){var ae=fe,Ie=ne;return fe=ne=void 0,Oe=It,ce=Y.apply(Ie,ae)}function F(It){return Oe=It,Ae=setTimeout(lt,ie),be?$e(It):ce}function Et(It){var ae=It-Me;return void 0===Me||ae>=ie||ae<0||ue&&It-Oe>=he}function lt(){var It=j();if(Et(It))return nn(It);Ae=setTimeout(lt,function(It){var dt=ie-(It-Me);return ue?x(dt,he-(It-Oe)):dt}(It))}function nn(It){return Ae=void 0,He&&fe?$e(It):(fe=ne=void 0,ce)}function Qe(){var It=j(),ae=Et(It);if(fe=arguments,ne=this,Me=It,ae){if(void 0===Ae)return F(Me);if(ue)return Ae=setTimeout(lt,ie),$e(Me)}return void 0===Ae&&(Ae=setTimeout(lt,ie)),ce}return ie=J(ie)||0,U(oe)&&(be=!!oe.leading,he=(ue="maxWait"in oe)?D(J(oe.maxWait)||0,ie):he,He="trailing"in oe?!!oe.trailing:He),Qe.cancel=function(){void 0!==Ae&&clearTimeout(Ae),Oe=0,fe=Me=ne=Ae=void 0},Qe.flush=function(){return void 0===Ae?ce:nn(j())},Qe}(Y,ie,{leading:fe,maxWait:ie,trailing:ne})}},23815:function(Ge,g,o){var t;Ge=o.nmd(Ge),function(){var e,u="Expected a function",_="__lodash_hash_undefined__",b="__lodash_placeholder__",Y=32,He=1/0,$e=9007199254740991,Et=4294967295,St=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",Y],["partialRight",64],["rearg",256]],At="[object Arguments]",Qe="[object Array]",ae="[object Boolean]",Ie="[object Date]",Jt="[object Error]",zt="[object Function]",ln="[object GeneratorFunction]",ar="[object Map]",Ln="[object Number]",er="[object Object]",Mn="[object Promise]",tr="[object RegExp]",Yn="[object Set]",Cn="[object String]",Kt="[object Symbol]",Kn="[object WeakMap]",Sn="[object ArrayBuffer]",$n="[object DataView]",En="[object Float32Array]",Fn="[object Float64Array]",Dn="[object Int8Array]",mn="[object Int16Array]",jn="[object Int32Array]",Xt="[object Uint8Array]",ut="[object Uint8ClampedArray]",mt="[object Uint16Array]",Tt="[object Uint32Array]",yn=/\b__p \+= '';/g,et=/\b(__p \+=) '' \+/g,jt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,hn=/&(?:amp|lt|gt|quot|#39);/g,Qn=/[&<>"']/g,Ir=RegExp(hn.source),ht=RegExp(Qn.source),L=/<%-([\s\S]+?)%>/g,Ue=/<%([\s\S]+?)%>/g,nt=/<%=([\s\S]+?)%>/g,at=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,it=/^\w*$/,Pt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ut=/[\\^$.*+?()[\]{}|]/g,ot=RegExp(Ut.source),Nn=/^\s+/,sn=/\s/,An=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bn=/\{\n\/\* \[wrapped with (.+)\] \*/,ir=/,? & /,mr=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,_r=/[()=,{}\[\]\/\s]/,Nr=/\\(\\)?/g,br=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Jn=/\w*$/,nr=/^[-+]0x[0-9a-f]+$/i,Mr=/^0b[01]+$/i,yi=/^\[object .+?Constructor\]$/,Ii=/^0o[0-7]+$/i,Mi=/^(?:0|[1-9]\d*)$/,Oi=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Kr=/($^)/,ei=/['\n\r\u2028\u2029\\]/g,di="\\ud800-\\udfff",Xe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Vt="\\u2700-\\u27bf",Ct="a-z\\xdf-\\xf6\\xf8-\\xff",or="A-Z\\xc0-\\xd6\\xd8-\\xde",Zn="\\ufe0e\\ufe0f",Vr="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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",ai="["+di+"]",Dr="["+Vr+"]",Qr="["+Xe+"]",rn="\\d+",fi="["+Vt+"]",Ei="["+Ct+"]",wi="[^"+di+Vr+rn+Vt+Ct+or+"]",go="\\ud83c[\\udffb-\\udfff]",no="[^"+di+"]",Ji="(?:\\ud83c[\\udde6-\\uddff]){2}",qi="[\\ud800-\\udbff][\\udc00-\\udfff]",to="["+or+"]",Go="(?:"+Ei+"|"+wi+")",Ro="(?:"+to+"|"+wi+")",Bo="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Jo="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",es="(?:"+Qr+"|"+go+")?",ua="["+Zn+"]?",Er=ua+es+"(?:\\u200d(?:"+[no,Ji,qi].join("|")+")"+ua+es+")*",st="(?:"+[fi,Ji,qi].join("|")+")"+Er,pn="(?:"+[no+Qr+"?",Qr,Ji,qi,ai].join("|")+")",ee=RegExp("['\u2019]","g"),Ve=RegExp(Qr,"g"),fn=RegExp(go+"(?="+go+")|"+pn+Er,"g"),Tn=RegExp([to+"?"+Ei+"+"+Bo+"(?="+[Dr,to,"$"].join("|")+")",Ro+"+"+Jo+"(?="+[Dr,to+Go,"$"].join("|")+")",to+"?"+Go+"+"+Bo,to+"+"+Jo,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",rn,st].join("|"),"g"),$r=RegExp("[\\u200d"+di+Xe+Zn+"]"),ni=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ri=["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"],Do=-1,gi={};gi[En]=gi[Fn]=gi[Dn]=gi[mn]=gi[jn]=gi[Xt]=gi[ut]=gi[mt]=gi[Tt]=!0,gi[At]=gi[Qe]=gi[Sn]=gi[ae]=gi[$n]=gi[Ie]=gi[Jt]=gi[zt]=gi[ar]=gi[Ln]=gi[er]=gi[tr]=gi[Yn]=gi[Cn]=gi[Kn]=!1;var Hi={};Hi[At]=Hi[Qe]=Hi[Sn]=Hi[$n]=Hi[ae]=Hi[Ie]=Hi[En]=Hi[Fn]=Hi[Dn]=Hi[mn]=Hi[jn]=Hi[ar]=Hi[Ln]=Hi[er]=Hi[tr]=Hi[Yn]=Hi[Cn]=Hi[Kt]=Hi[Xt]=Hi[ut]=Hi[mt]=Hi[Tt]=!0,Hi[Jt]=Hi[zt]=Hi[Kn]=!1;var da={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},xa=parseFloat,Ra=parseInt,Ml="object"==typeof global&&global&&global.Object===Object&&global,Dl="object"==typeof self&&self&&self.Object===Object&&self,Ca=Ml||Dl||Function("return this")(),sa=g&&!g.nodeType&&g,Fo=sa&&Ge&&!Ge.nodeType&&Ge,Ka=Fo&&Fo.exports===sa,Sa=Ka&&Ml.process,fa=function(){try{return Fo&&Fo.require&&Fo.require("util").types||Sa&&Sa.binding&&Sa.binding("util")}catch(lr){}}(),ks=fa&&fa.isArrayBuffer,Ua=fa&&fa.isDate,pt=fa&&fa.isMap,an=fa&&fa.isRegExp,Nt=fa&&fa.isSet,Ce=fa&&fa.isTypedArray;function ye(Un,lr,dr){switch(dr.length){case 0:return Un.call(lr);case 1:return Un.call(lr,dr[0]);case 2:return Un.call(lr,dr[0],dr[1]);case 3:return Un.call(lr,dr[0],dr[1],dr[2])}return Un.apply(lr,dr)}function Ne(Un,lr,dr,li){for(var Ti=-1,Ao=null==Un?0:Un.length;++Ti<Ao;){var Qo=Un[Ti];lr(li,Qo,dr(Qo),Un)}return li}function Wt(Un,lr){for(var dr=-1,li=null==Un?0:Un.length;++dr<li&&!1!==lr(Un[dr],dr,Un););return Un}function Or(Un,lr){for(var dr=null==Un?0:Un.length;dr--&&!1!==lr(Un[dr],dr,Un););return Un}function Ni(Un,lr){for(var dr=-1,li=null==Un?0:Un.length;++dr<li;)if(!lr(Un[dr],dr,Un))return!1;return!0}function Yo(Un,lr){for(var dr=-1,li=null==Un?0:Un.length,Ti=0,Ao=[];++dr<li;){var Qo=Un[dr];lr(Qo,dr,Un)&&(Ao[Ti++]=Qo)}return Ao}function ms(Un,lr){return!(null==Un||!Un.length)&&Ja(Un,lr,0)>-1}function ss(Un,lr,dr){for(var li=-1,Ti=null==Un?0:Un.length;++li<Ti;)if(dr(lr,Un[li]))return!0;return!1}function Lo(Un,lr){for(var dr=-1,li=null==Un?0:Un.length,Ti=Array(li);++dr<li;)Ti[dr]=lr(Un[dr],dr,Un);return Ti}function Zo(Un,lr){for(var dr=-1,li=lr.length,Ti=Un.length;++dr<li;)Un[Ti+dr]=lr[dr];return Un}function Ea(Un,lr,dr,li){var Ti=-1,Ao=null==Un?0:Un.length;for(li&&Ao&&(dr=Un[++Ti]);++Ti<Ao;)dr=lr(dr,Un[Ti],Ti,Un);return dr}function ul(Un,lr,dr,li){var Ti=null==Un?0:Un.length;for(li&&Ti&&(dr=Un[--Ti]);Ti--;)dr=lr(dr,Un[Ti],Ti,Un);return dr}function Ma(Un,lr){for(var dr=-1,li=null==Un?0:Un.length;++dr<li;)if(lr(Un[dr],dr,Un))return!0;return!1}var va=Na("length");function Ol(Un,lr,dr){var li;return dr(Un,function(Ti,Ao,Qo){if(lr(Ti,Ao,Qo))return li=Ao,!1}),li}function dl(Un,lr,dr,li){for(var Ti=Un.length,Ao=dr+(li?1:-1);li?Ao--:++Ao<Ti;)if(lr(Un[Ao],Ao,Un))return Ao;return-1}function Ja(Un,lr,dr){return lr==lr?function(Un,lr,dr){for(var li=dr-1,Ti=Un.length;++li<Ti;)if(Un[li]===lr)return li;return-1}(Un,lr,dr):dl(Un,Il,dr)}function il(Un,lr,dr,li){for(var Ti=dr-1,Ao=Un.length;++Ti<Ao;)if(li(Un[Ti],lr))return Ti;return-1}function Il(Un){return Un!=Un}function Bl(Un,lr){var dr=null==Un?0:Un.length;return dr?Vo(Un,lr)/dr:NaN}function Na(Un){return function(lr){return null==lr?e:lr[Un]}}function Di(Un){return function(lr){return null==Un?e:Un[lr]}}function vs(Un,lr,dr,li,Ti){return Ti(Un,function(Ao,Qo,jo){dr=li?(li=!1,Ao):lr(dr,Ao,Qo,jo)}),dr}function Vo(Un,lr){for(var dr,li=-1,Ti=Un.length;++li<Ti;){var Ao=lr(Un[li]);Ao!==e&&(dr=dr===e?Ao:dr+Ao)}return dr}function ja(Un,lr){for(var dr=-1,li=Array(Un);++dr<Un;)li[dr]=lr(dr);return li}function ze(Un){return Un&&Un.slice(0,Bt(Un)+1).replace(Nn,"")}function wt(Un){return function(lr){return Un(lr)}}function kt(Un,lr){return Lo(lr,function(dr){return Un[dr]})}function tn(Un,lr){return Un.has(lr)}function ur(Un,lr){for(var dr=-1,li=Un.length;++dr<li&&Ja(lr,Un[dr],0)>-1;);return dr}function gn(Un,lr){for(var dr=Un.length;dr--&&Ja(lr,Un[dr],0)>-1;);return dr}function xr(Un,lr){for(var dr=Un.length,li=0;dr--;)Un[dr]===lr&&++li;return li}var Zr=Di({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"}),Pr=Di({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function mi(Un){return"\\"+da[Un]}function si(Un){return $r.test(Un)}function io(Un){var lr=-1,dr=Array(Un.size);return Un.forEach(function(li,Ti){dr[++lr]=[Ti,li]}),dr}function vo(Un,lr){return function(dr){return Un(lr(dr))}}function Bi(Un,lr){for(var dr=-1,li=Un.length,Ti=0,Ao=[];++dr<li;){var Qo=Un[dr];(Qo===lr||Qo===b)&&(Un[dr]=b,Ao[Ti++]=dr)}return Ao}function hi(Un){var lr=-1,dr=Array(Un.size);return Un.forEach(function(li){dr[++lr]=li}),dr}function ft(Un){return si(Un)?function(Un){for(var lr=fn.lastIndex=0;fn.test(Un);)++lr;return lr}(Un):va(Un)}function Ft(Un){return si(Un)?function(Un){return Un.match(fn)||[]}(Un):function(Un){return Un.split("")}(Un)}function Bt(Un){for(var lr=Un.length;lr--&&sn.test(Un.charAt(lr)););return lr}var In=Di({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),zr=function Un(lr){var O,dr=(lr=null==lr?Ca:zr.defaults(Ca.Object(),lr,zr.pick(Ca,Ri))).Array,li=lr.Date,Ti=lr.Error,Ao=lr.Function,Qo=lr.Math,jo=lr.Object,uo=lr.RegExp,eo=lr.String,Ho=lr.TypeError,Zi=dr.prototype,ha=jo.prototype,fl=lr["__core-js_shared__"],Hn=Ao.prototype.toString,Es=ha.hasOwnProperty,Ll=0,Hl=(O=/[^.]+$/.exec(fl&&fl.keys&&fl.keys.IE_PROTO||""))?"Symbol(src)_1."+O:"",mo=ha.toString,As=Hn.call(jo),qc=Ca._,yc=uo("^"+Hn.call(Es).replace(Ut,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fc=Ka?lr.Buffer:e,Fl=lr.Symbol,bl=lr.Uint8Array,ql=fc?fc.allocUnsafe:e,kl=vo(jo.getPrototypeOf,jo),Yl=jo.create,ru=ha.propertyIsEnumerable,Je=Zi.splice,Fe=Fl?Fl.isConcatSpreadable:e,we=Fl?Fl.iterator:e,Ot=Fl?Fl.toStringTag:e,xe=function(){try{var O=lu(jo,"defineProperty");return O({},"",{}),O}catch(B){}}(),ke=lr.clearTimeout!==Ca.clearTimeout&&lr.clearTimeout,Te=li&&li.now!==Ca.Date.now&&li.now,ge=lr.setTimeout!==Ca.setTimeout&&lr.setTimeout,Re=Qo.ceil,Be=Qo.floor,xt=jo.getOwnPropertySymbols,Dt=fc?fc.isBuffer:e,en=lr.isFinite,vn=Zi.join,Gn=vo(jo.keys,jo),kn=Qo.max,zn=Qo.min,jr=li.now,kr=lr.parseInt,Gr=Qo.random,ci=Zi.reverse,Ci=lu(lr,"DataView"),vi=lu(lr,"Map"),Ai=lu(lr,"Promise"),fo=lu(lr,"Set"),po=lu(lr,"WeakMap"),No=lu(jo,"create"),wo=po&&new po,oo={},Oo=Mc(Ci),Ki=Mc(vi),Vi=Mc(Ai),Wo=Mc(fo),Po=Mc(po),ho=Fl?Fl.prototype:e,xo=ho?ho.valueOf:e,Ps=ho?ho.toString:e;function _n(O){if(rc(O)&&!ui(O)&&!(O instanceof lo)){if(O instanceof Oa)return O;if(Es.call(O,"__wrapped__"))return jf(O)}return new Oa(O)}var Hs=function(){function O(){}return function(B){if(!Al(B))return{};if(Yl)return Yl(B);O.prototype=B;var _e=new O;return O.prototype=e,_e}}();function Pa(){}function Oa(O,B){this.__wrapped__=O,this.__actions__=[],this.__chain__=!!B,this.__index__=0,this.__values__=e}function lo(O){this.__wrapped__=O,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Et,this.__views__=[]}function zs(O){var B=-1,_e=null==O?0:O.length;for(this.clear();++B<_e;){var gt=O[B];this.set(gt[0],gt[1])}}function Zs(O){var B=-1,_e=null==O?0:O.length;for(this.clear();++B<_e;){var gt=O[B];this.set(gt[0],gt[1])}}function Us(O){var B=-1,_e=null==O?0:O.length;for(this.clear();++B<_e;){var gt=O[B];this.set(gt[0],gt[1])}}function ki(O){var B=-1,_e=null==O?0:O.length;for(this.__data__=new Us;++B<_e;)this.add(O[B])}function pl(O){var B=this.__data__=new Zs(O);this.size=B.size}function ou(O,B){var _e=ui(O),gt=!_e&&Rr(O),un=!_e&&!gt&&_l(O),Vn=!_e&&!gt&&!un&&ih(O),gr=_e||gt||un||Vn,Lr=gr?ja(O.length,eo):[],Xr=Lr.length;for(var Qi in O)(B||Es.call(O,Qi))&&(!gr||!("length"==Qi||un&&("offset"==Qi||"parent"==Qi)||Vn&&("buffer"==Qi||"byteLength"==Qi||"byteOffset"==Qi)||mu(Qi,Xr)))&&Lr.push(Qi);return Lr}function xl(O){var B=O.length;return B?O[Od(0,B-1)]:e}function Vl(O,B){return bd(_i(O),El(B,0,O.length))}function el(O){return bd(_i(O))}function tl(O,B,_e){(_e!==e&&!Mt(O[B],_e)||_e===e&&!(B in O))&&nl(O,B,_e)}function ml(O,B,_e){var gt=O[B];(!Es.call(O,B)||!Mt(gt,_e)||_e===e&&!(B in O))&&nl(O,B,_e)}function bc(O,B){for(var _e=O.length;_e--;)if(Mt(O[_e][0],B))return _e;return-1}function vl(O,B,_e,gt){return de(O,function(un,Vn,gr){B(gt,un,_e(un),gr)}),gt}function hc(O,B){return O&&ji(B,dc(B),O)}function nl(O,B,_e){"__proto__"==B&&xe?xe(O,B,{configurable:!0,enumerable:!0,value:_e,writable:!0}):O[B]=_e}function yl(O,B){for(var _e=-1,gt=B.length,un=dr(gt),Vn=null==O;++_e<gt;)un[_e]=Vn?e:N_(O,B[_e]);return un}function El(O,B,_e){return O==O&&(_e!==e&&(O=O<=_e?O:_e),B!==e&&(O=O>=B?O:B)),O}function p(O,B,_e,gt,un,Vn){var gr,Lr=1&B,Xr=2&B,Qi=4&B;if(_e&&(gr=un?_e(O,gt,un,Vn):_e(O)),gr!==e)return gr;if(!Al(O))return O;var Xi=ui(O);if(Xi){if(gr=function(O){var B=O.length,_e=new O.constructor(B);return B&&"string"==typeof O[0]&&Es.call(O,"index")&&(_e.index=O.index,_e.input=O.input),_e}(O),!Lr)return _i(O,gr)}else{var ao=jl(O),qo=ao==zt||ao==ln;if(_l(O))return of(O,Lr);if(ao==er||ao==At||qo&&!un){if(gr=Xr||qo?{}:Pu(O),!Lr)return Xr?function(O,B){return ji(O,mc(O),B)}(O,function(O,B){return O&&ji(B,Gc(B),O)}(gr,O)):function(O,B){return ji(O,Bd(O),B)}(O,hc(gr,O))}else{if(!Hi[ao])return un?O:{};gr=function(O,B,_e){var gt=O.constructor;switch(B){case Sn:return Ff(O);case ae:case Ie:return new gt(+O);case $n:return function(O,B){var _e=B?Ff(O.buffer):O.buffer;return new O.constructor(_e,O.byteOffset,O.byteLength)}(O,_e);case En:case Fn:case Dn:case mn:case jn:case Xt:case ut:case mt:case Tt:return K(O,_e);case ar:return new gt;case Ln:case Cn:return new gt(O);case tr:return function(O){var B=new O.constructor(O.source,Jn.exec(O));return B.lastIndex=O.lastIndex,B}(O);case Yn:return new gt;case Kt:return function(O){return xo?jo(xo.call(O)):{}}(O)}}(O,ao,Lr)}}Vn||(Vn=new pl);var Ss=Vn.get(O);if(Ss)return Ss;Vn.set(O,gr),O_(O)?O.forEach(function(ta){gr.add(p(ta,B,_e,ta,O,Vn))}):$h(O)&&O.forEach(function(ta,Xa){gr.set(Xa,p(ta,B,_e,Xa,O,Vn))});var Ia=Xi?e:(Qi?Xr?lf:Ud:Xr?Gc:dc)(O);return Wt(Ia||O,function(ta,Xa){Ia&&(ta=O[Xa=ta]),ml(gr,Xa,p(ta,B,_e,Xa,O,Vn))}),gr}function N(O,B,_e){var gt=_e.length;if(null==O)return!gt;for(O=jo(O);gt--;){var un=_e[gt],gr=O[un];if(gr===e&&!(un in O)||!(0,B[un])(gr))return!1}return!0}function $(O,B,_e){if("function"!=typeof O)throw new Ho(u);return Zd(function(){O.apply(e,_e)},B)}function Q(O,B,_e,gt){var un=-1,Vn=ms,gr=!0,Lr=O.length,Xr=[],Qi=B.length;if(!Lr)return Xr;_e&&(B=Lo(B,wt(_e))),gt?(Vn=ss,gr=!1):B.length>=200&&(Vn=tn,gr=!1,B=new ki(B));e:for(;++un<Lr;){var Xi=O[un],ao=null==_e?Xi:_e(Xi);if(Xi=gt||0!==Xi?Xi:0,gr&&ao==ao){for(var qo=Qi;qo--;)if(B[qo]===ao)continue e;Xr.push(Xi)}else Vn(B,ao,gt)||Xr.push(Xi)}return Xr}_n.templateSettings={escape:L,evaluate:Ue,interpolate:nt,variable:"",imports:{_:_n}},(_n.prototype=Pa.prototype).constructor=_n,(Oa.prototype=Hs(Pa.prototype)).constructor=Oa,(lo.prototype=Hs(Pa.prototype)).constructor=lo,zs.prototype.clear=function(){this.__data__=No?No(null):{},this.size=0},zs.prototype.delete=function(O){var B=this.has(O)&&delete this.__data__[O];return this.size-=B?1:0,B},zs.prototype.get=function(O){var B=this.__data__;if(No){var _e=B[O];return _e===_?e:_e}return Es.call(B,O)?B[O]:e},zs.prototype.has=function(O){var B=this.__data__;return No?B[O]!==e:Es.call(B,O)},zs.prototype.set=function(O,B){var _e=this.__data__;return this.size+=this.has(O)?0:1,_e[O]=No&&B===e?_:B,this},Zs.prototype.clear=function(){this.__data__=[],this.size=0},Zs.prototype.delete=function(O){var B=this.__data__,_e=bc(B,O);return!(_e<0||(_e==B.length-1?B.pop():Je.call(B,_e,1),--this.size,0))},Zs.prototype.get=function(O){var B=this.__data__,_e=bc(B,O);return _e<0?e:B[_e][1]},Zs.prototype.has=function(O){return bc(this.__data__,O)>-1},Zs.prototype.set=function(O,B){var _e=this.__data__,gt=bc(_e,O);return gt<0?(++this.size,_e.push([O,B])):_e[gt][1]=B,this},Us.prototype.clear=function(){this.size=0,this.__data__={hash:new zs,map:new(vi||Zs),string:new zs}},Us.prototype.delete=function(O){var B=jd(this,O).delete(O);return this.size-=B?1:0,B},Us.prototype.get=function(O){return jd(this,O).get(O)},Us.prototype.has=function(O){return jd(this,O).has(O)},Us.prototype.set=function(O,B){var _e=jd(this,O),gt=_e.size;return _e.set(O,B),this.size+=_e.size==gt?0:1,this},ki.prototype.add=ki.prototype.push=function(O){return this.__data__.set(O,_),this},ki.prototype.has=function(O){return this.__data__.has(O)},pl.prototype.clear=function(){this.__data__=new Zs,this.size=0},pl.prototype.delete=function(O){var B=this.__data__,_e=B.delete(O);return this.size=B.size,_e},pl.prototype.get=function(O){return this.__data__.get(O)},pl.prototype.has=function(O){return this.__data__.has(O)},pl.prototype.set=function(O,B){var _e=this.__data__;if(_e instanceof Zs){var gt=_e.__data__;if(!vi||gt.length<199)return gt.push([O,B]),this.size=++_e.size,this;_e=this.__data__=new Us(gt)}return _e.set(O,B),this.size=_e.size,this};var de=Ks(sr),ve=Ks(Tr,!0);function qe(O,B){var _e=!0;return de(O,function(gt,un,Vn){return _e=!!B(gt,un,Vn)}),_e}function De(O,B,_e){for(var gt=-1,un=O.length;++gt<un;){var Vn=O[gt],gr=B(Vn);if(null!=gr&&(Lr===e?gr==gr&&!$u(gr):_e(gr,Lr)))var Lr=gr,Xr=Vn}return Xr}function Yt(O,B){var _e=[];return de(O,function(gt,un,Vn){B(gt,un,Vn)&&_e.push(gt)}),_e}function Zt(O,B,_e,gt,un){var Vn=-1,gr=O.length;for(_e||(_e=sp),un||(un=[]);++Vn<gr;){var Lr=O[Vn];B>0&&_e(Lr)?B>1?Zt(Lr,B-1,_e,gt,un):Zo(un,Lr):gt||(un[un.length]=Lr)}return un}var wn=ys(),cr=ys(!0);function sr(O,B){return O&&wn(O,B,dc)}function Tr(O,B){return O&&cr(O,B,dc)}function Yr(O,B){return Yo(B,function(_e){return tu(O[_e])})}function Pi(O,B){for(var _e=0,gt=(B=Yc(B,O)).length;null!=O&&_e<gt;)O=O[Sc(B[_e++])];return _e&&_e==gt?O:e}function yo(O,B,_e){var gt=B(O);return ui(O)?gt:Zo(gt,_e(O))}function Co(O){return null==O?O===e?"[object Undefined]":"[object Null]":Ot&&Ot in jo(O)?function(O){var B=Es.call(O,Ot),_e=O[Ot];try{O[Ot]=e;var gt=!0}catch(Vn){}var un=mo.call(O);return gt&&(B?O[Ot]=_e:delete O[Ot]),un}(O):function(O){return mo.call(O)}(O)}function Xo(O,B){return O>B}function ts(O,B){return null!=O&&Es.call(O,B)}function _s(O,B){return null!=O&&B in jo(O)}function Ms(O,B,_e){for(var gt=_e?ss:ms,un=O[0].length,Vn=O.length,gr=Vn,Lr=dr(Vn),Xr=1/0,Qi=[];gr--;){var Xi=O[gr];gr&&B&&(Xi=Lo(Xi,wt(B))),Xr=zn(Xi.length,Xr),Lr[gr]=!_e&&(B||un>=120&&Xi.length>=120)?new ki(gr&&Xi):e}Xi=O[0];var ao=-1,qo=Lr[0];e:for(;++ao<un&&Qi.length<Xr;){var Ss=Xi[ao],Js=B?B(Ss):Ss;if(Ss=_e||0!==Ss?Ss:0,!(qo?tn(qo,Js):gt(Qi,Js,_e))){for(gr=Vn;--gr;){var Ia=Lr[gr];if(!(Ia?tn(Ia,Js):gt(O[gr],Js,_e)))continue e}qo&&qo.push(Js),Qi.push(Ss)}}return Qi}function ya(O,B,_e){var gt=null==(O=hf(O,B=Yc(B,O)))?O:O[Sc(qr(B))];return null==gt?e:ye(gt,O,_e)}function hl(O){return rc(O)&&Co(O)==At}function rl(O,B,_e,gt,un){return O===B||(null==O||null==B||!rc(O)&&!rc(B)?O!=O&&B!=B:function(O,B,_e,gt,un,Vn){var gr=ui(O),Lr=ui(B),Xr=gr?Qe:jl(O),Qi=Lr?Qe:jl(B),Xi=(Xr=Xr==At?er:Xr)==er,ao=(Qi=Qi==At?er:Qi)==er,qo=Xr==Qi;if(qo&&_l(O)){if(!_l(B))return!1;gr=!0,Xi=!1}if(qo&&!Xi)return Vn||(Vn=new pl),gr||ih(O)?hd(O,B,_e,gt,un,Vn):function(O,B,_e,gt,un,Vn,gr){switch(_e){case $n:if(O.byteLength!=B.byteLength||O.byteOffset!=B.byteOffset)return!1;O=O.buffer,B=B.buffer;case Sn:return!(O.byteLength!=B.byteLength||!Vn(new bl(O),new bl(B)));case ae:case Ie:case Ln:return Mt(+O,+B);case Jt:return O.name==B.name&&O.message==B.message;case tr:case Cn:return O==B+"";case ar:var Lr=io;case Yn:if(Lr||(Lr=hi),O.size!=B.size&&!(1&gt))return!1;var Qi=gr.get(O);if(Qi)return Qi==B;gt|=2,gr.set(O,B);var Xi=hd(Lr(O),Lr(B),gt,un,Vn,gr);return gr.delete(O),Xi;case Kt:if(xo)return xo.call(O)==xo.call(B)}return!1}(O,B,Xr,_e,gt,un,Vn);if(!(1&_e)){var Ss=Xi&&Es.call(O,"__wrapped__"),Js=ao&&Es.call(B,"__wrapped__");if(Ss||Js){var Ia=Ss?O.value():O,ta=Js?B.value():B;return Vn||(Vn=new pl),un(Ia,ta,_e,gt,Vn)}}return!!qo&&(Vn||(Vn=new pl),function(O,B,_e,gt,un,Vn){var gr=1&_e,Lr=Ud(O),Xr=Lr.length;if(Xr!=Ud(B).length&&!gr)return!1;for(var ao=Xr;ao--;){var qo=Lr[ao];if(!(gr?qo in B:Es.call(B,qo)))return!1}var Ss=Vn.get(O),Js=Vn.get(B);if(Ss&&Js)return Ss==B&&Js==O;var Ia=!0;Vn.set(O,B),Vn.set(B,O);for(var ta=gr;++ao<Xr;){var Xa=O[qo=Lr[ao]],cl=B[qo];if(gt)var rd=gr?gt(cl,Xa,qo,B,O,Vn):gt(Xa,cl,qo,O,B,Vn);if(!(rd===e?Xa===cl||un(Xa,cl,_e,gt,Vn):rd)){Ia=!1;break}ta||(ta="constructor"==qo)}if(Ia&&!ta){var Uu=O.constructor,id=B.constructor;Uu!=id&&"constructor"in O&&"constructor"in B&&!("function"==typeof Uu&&Uu instanceof Uu&&"function"==typeof id&&id instanceof id)&&(Ia=!1)}return Vn.delete(O),Vn.delete(B),Ia}(O,B,_e,gt,un,Vn))}(O,B,_e,gt,rl,un))}function $s(O,B,_e,gt){var un=_e.length,Vn=un,gr=!gt;if(null==O)return!Vn;for(O=jo(O);un--;){var Lr=_e[un];if(gr&&Lr[2]?Lr[1]!==O[Lr[0]]:!(Lr[0]in O))return!1}for(;++un<Vn;){var Xr=(Lr=_e[un])[0],Qi=O[Xr],Xi=Lr[1];if(gr&&Lr[2]){if(Qi===e&&!(Xr in O))return!1}else{var ao=new pl;if(gt)var qo=gt(Qi,Xi,Xr,O,B,ao);if(!(qo===e?rl(Xi,Qi,3,gt,ao):qo))return!1}}return!0}function X(O){return!(!Al(O)||function(O){return!!Hl&&Hl in O}(O))&&(tu(O)?yc:yi).test(Mc(O))}function xn(O){return"function"==typeof O?O:null==O?vu:"object"==typeof O?ui(O)?gc(O[0],O[1]):za(O):Ug(O)}function Ar(O){if(!Ou(O))return Gn(O);var B=[];for(var _e in jo(O))Es.call(O,_e)&&"constructor"!=_e&&B.push(_e);return B}function fs(O,B){return O<B}function aa(O,B){var _e=-1,gt=Io(O)?dr(O.length):[];return de(O,function(un,Vn,gr){gt[++_e]=B(un,Vn,gr)}),gt}function za(O){var B=gu(O);return 1==B.length&&B[0][2]?pf(B[0][0],B[0][1]):function(_e){return _e===O||$s(_e,O,B)}}function gc(O,B){return md(O)&&eu(B)?pf(Sc(O),B):function(_e){var gt=N_(_e,O);return gt===e&&gt===B?P_(_e,O):rl(B,gt,3)}}function Ql(O,B,_e,gt,un){O!==B&&wn(B,function(Vn,gr){if(un||(un=new pl),Al(Vn))!function(O,B,_e,gt,un,Vn,gr){var Lr=yd(O,_e),Xr=yd(B,_e),Qi=gr.get(Xr);if(Qi)tl(O,_e,Qi);else{var Xi=Vn?Vn(Lr,Xr,_e+"",O,B,gr):e,ao=Xi===e;if(ao){var qo=ui(Xr),Ss=!qo&&_l(Xr),Js=!qo&&!Ss&&ih(Xr);Xi=Xr,qo||Ss||Js?ui(Lr)?Xi=Lr:os(Lr)?Xi=_i(Lr):Ss?(ao=!1,Xi=of(Xr,!0)):Js?(ao=!1,Xi=K(Xr,!0)):Xi=[]:S_(Xr)||Rr(Xr)?(Xi=Lr,Rr(Lr)?Xi=Um(Lr):(!Al(Lr)||tu(Lr))&&(Xi=Pu(Xr))):ao=!1}ao&&(gr.set(Xr,Xi),un(Xi,Xr,gt,Vn,gr),gr.delete(Xr)),tl(O,_e,Xi)}}(O,B,gr,_e,Ql,gt,un);else{var Lr=gt?gt(yd(O,gr),Vn,gr+"",O,B,un):e;Lr===e&&(Lr=Vn),tl(O,gr,Lr)}},Gc)}function Gu(O,B){var _e=O.length;if(_e)return mu(B+=B<0?_e:0,_e)?O[B]:e}function Sd(O,B,_e){B=B.length?Lo(B,function(Vn){return ui(Vn)?function(gr){return Pi(gr,1===Vn.length?Vn[0]:Vn)}:Vn}):[vu];var gt=-1;return B=Lo(B,wt(Rs())),function(Un,lr){var dr=Un.length;for(Un.sort(function(Vn,gr){return function(O,B,_e){for(var gt=-1,un=O.criteria,Vn=B.criteria,gr=un.length,Lr=_e.length;++gt<gr;){var Xr=Ye(un[gt],Vn[gt]);if(Xr)return gt>=Lr?Xr:Xr*("desc"==_e[gt]?-1:1)}return O.index-B.index}(Vn,gr,_e)});dr--;)Un[dr]=Un[dr].value;return Un}(aa(O,function(Vn,gr,Lr){return{criteria:Lo(B,function(Qi){return Qi(Vn)}),index:++gt,value:Vn}}))}function Md(O,B,_e){for(var gt=-1,un=B.length,Vn={};++gt<un;){var gr=B[gt],Lr=Pi(O,gr);_e(Lr,gr)&&ld(Vn,Yc(gr,O),Lr)}return Vn}function xu(O,B,_e,gt){var un=gt?il:Ja,Vn=-1,gr=B.length,Lr=O;for(O===B&&(B=_i(B)),_e&&(Lr=Lo(O,wt(_e)));++Vn<gr;)for(var Xr=0,Qi=B[Vn],Xi=_e?_e(Qi):Qi;(Xr=un(Lr,Xi,Xr,gt))>-1;)Lr!==O&&Je.call(Lr,Xr,1),Je.call(O,Xr,1);return O}function ef(O,B){for(var _e=O?B.length:0,gt=_e-1;_e--;){var un=B[_e];if(_e==gt||un!==Vn){var Vn=un;mu(un)?Je.call(O,un,1):Hd(O,un)}}return O}function Od(O,B){return O+Be(Gr()*(B-O+1))}function tf(O,B){var _e="";if(!O||B<1||B>$e)return _e;do{B%2&&(_e+=O),(B=Be(B/2))&&(O+=O)}while(B);return _e}function Is(O,B){return Uf(qu(O,B,vu),O+"")}function Ic(O){return xl(ah(O))}function Nf(O,B){var _e=ah(O);return bd(_e,El(B,0,_e.length))}function ld(O,B,_e,gt){if(!Al(O))return O;for(var un=-1,Vn=(B=Yc(B,O)).length,gr=Vn-1,Lr=O;null!=Lr&&++un<Vn;){var Xr=Sc(B[un]),Qi=_e;if("__proto__"===Xr||"constructor"===Xr||"prototype"===Xr)return O;if(un!=gr){var Xi=Lr[Xr];(Qi=gt?gt(Xi,Xr,Lr):e)===e&&(Qi=Al(Xi)?Xi:mu(B[un+1])?[]:{})}ml(Lr,Xr,Qi),Lr=Lr[Xr]}return O}var Jc=wo?function(O,B){return wo.set(O,B),O}:vu,Tu=xe?function(O,B){return xe(O,"toString",{configurable:!0,enumerable:!1,value:kg(B),writable:!0})}:vu;function nf(O){return bd(ah(O))}function Lc(O,B,_e){var gt=-1,un=O.length;B<0&&(B=-B>un?0:un+B),(_e=_e>un?un:_e)<0&&(_e+=un),un=B>_e?0:_e-B>>>0,B>>>=0;for(var Vn=dr(un);++gt<un;)Vn[gt]=O[gt+B];return Vn}function Pf(O,B){var _e;return de(O,function(gt,un,Vn){return!(_e=B(gt,un,Vn))}),!!_e}function cd(O,B,_e){var gt=0,un=null==O?gt:O.length;if("number"==typeof B&&B==B&&un<=2147483647){for(;gt<un;){var Vn=gt+un>>>1,gr=O[Vn];null!==gr&&!$u(gr)&&(_e?gr<=B:gr<B)?gt=Vn+1:un=Vn}return un}return rf(O,B,vu,_e)}function rf(O,B,_e,gt){var un=0,Vn=null==O?0:O.length;if(0===Vn)return 0;for(var gr=(B=_e(B))!=B,Lr=null===B,Xr=$u(B),Qi=B===e;un<Vn;){var Xi=Be((un+Vn)/2),ao=_e(O[Xi]),qo=ao!==e,Ss=null===ao,Js=ao==ao,Ia=$u(ao);if(gr)var ta=gt||Js;else ta=Qi?Js&&(gt||qo):Lr?Js&&qo&&(gt||!Ss):Xr?Js&&qo&&!Ss&&(gt||!Ia):!Ss&&!Ia&&(gt?ao<=B:ao<B);ta?un=Xi+1:Vn=Xi}return zn(Vn,4294967294)}function $d(O,B){for(var _e=-1,gt=O.length,un=0,Vn=[];++_e<gt;){var gr=O[_e],Lr=B?B(gr):gr;if(!_e||!Mt(Lr,Xr)){var Xr=Lr;Vn[un++]=0===gr?0:gr}}return Vn}function Ad(O){return"number"==typeof O?O:$u(O)?NaN:+O}function Fc(O){if("string"==typeof O)return O;if(ui(O))return Lo(O,Fc)+"";if($u(O))return Ps?Ps.call(O):"";var B=O+"";return"0"==B&&1/O==-He?"-0":B}function hu(O,B,_e){var gt=-1,un=ms,Vn=O.length,gr=!0,Lr=[],Xr=Lr;if(_e)gr=!1,un=ss;else if(Vn>=200){var Qi=B?null:zu(O);if(Qi)return hi(Qi);gr=!1,un=tn,Xr=new ki}else Xr=B?[]:Lr;e:for(;++gt<Vn;){var Xi=O[gt],ao=B?B(Xi):Xi;if(Xi=_e||0!==Xi?Xi:0,gr&&ao==ao){for(var qo=Xr.length;qo--;)if(Xr[qo]===ao)continue e;B&&Xr.push(ao),Lr.push(Xi)}else un(Xr,ao,_e)||(Xr!==Lr&&Xr.push(ao),Lr.push(Xi))}return Lr}function Hd(O,B){return null==(O=hf(O,B=Yc(B,O)))||delete O[Sc(qr(B))]}function ud(O,B,_e,gt){return ld(O,B,_e(Pi(O,B)),gt)}function wd(O,B,_e,gt){for(var un=O.length,Vn=gt?un:-1;(gt?Vn--:++Vn<un)&&B(O[Vn],Vn,O););return _e?Lc(O,gt?0:Vn,gt?Vn+1:un):Lc(O,gt?Vn+1:0,gt?un:Vn)}function If(O,B){var _e=O;return _e instanceof lo&&(_e=_e.value()),Ea(B,function(gt,un){return un.func.apply(un.thisArg,Zo([gt],un.args))},_e)}function Cu(O,B,_e){var gt=O.length;if(gt<2)return gt?hu(O[0]):[];for(var un=-1,Vn=dr(gt);++un<gt;)for(var gr=O[un],Lr=-1;++Lr<gt;)Lr!=un&&(Vn[un]=Q(Vn[un]||gr,O[Lr],B,_e));return hu(Zt(Vn,1),B,_e)}function dd(O,B,_e){for(var gt=-1,un=O.length,Vn=B.length,gr={};++gt<un;)_e(gr,O[gt],gt<Vn?B[gt]:e);return gr}function kc(O){return os(O)?O:[]}function wc(O){return"function"==typeof O?O:vu}function Yc(O,B){return ui(O)?O:md(O,B)?[O]:Ed(Sl(O))}var Lf=Is;function Su(O,B,_e){var gt=O.length;return _e=_e===e?gt:_e,!B&&_e>=gt?O:Lc(O,B,_e)}var fd=ke||function(O){return Ca.clearTimeout(O)};function of(O,B){if(B)return O.slice();var _e=O.length,gt=ql?ql(_e):new O.constructor(_e);return O.copy(gt),gt}function Ff(O){var B=new O.constructor(O.byteLength);return new bl(B).set(new bl(O)),B}function K(O,B){var _e=B?Ff(O.buffer):O.buffer;return new O.constructor(_e,O.byteOffset,O.length)}function Ye(O,B){if(O!==B){var _e=O!==e,gt=null===O,un=O==O,Vn=$u(O),gr=B!==e,Lr=null===B,Xr=B==B,Qi=$u(B);if(!Lr&&!Qi&&!Vn&&O>B||Vn&&gr&&Xr&&!Lr&&!Qi||gt&&gr&&Xr||!_e&&Xr||!un)return 1;if(!gt&&!Vn&&!Qi&&O<B||Qi&&_e&&un&&!gt&&!Vn||Lr&&_e&&un||!gr&&un||!Xr)return-1}return 0}function vr(O,B,_e,gt){for(var un=-1,Vn=O.length,gr=_e.length,Lr=-1,Xr=B.length,Qi=kn(Vn-gr,0),Xi=dr(Xr+Qi),ao=!gt;++Lr<Xr;)Xi[Lr]=B[Lr];for(;++un<gr;)(ao||un<Vn)&&(Xi[_e[un]]=O[un]);for(;Qi--;)Xi[Lr++]=O[un++];return Xi}function Hr(O,B,_e,gt){for(var un=-1,Vn=O.length,gr=-1,Lr=_e.length,Xr=-1,Qi=B.length,Xi=kn(Vn-Lr,0),ao=dr(Xi+Qi),qo=!gt;++un<Xi;)ao[un]=O[un];for(var Ss=un;++Xr<Qi;)ao[Ss+Xr]=B[Xr];for(;++gr<Lr;)(qo||un<Vn)&&(ao[Ss+_e[gr]]=O[un++]);return ao}function _i(O,B){var _e=-1,gt=O.length;for(B||(B=dr(gt));++_e<gt;)B[_e]=O[_e];return B}function ji(O,B,_e,gt){var un=!_e;_e||(_e={});for(var Vn=-1,gr=B.length;++Vn<gr;){var Lr=B[Vn],Xr=gt?gt(_e[Lr],O[Lr],Lr,_e,O):e;Xr===e&&(Xr=O[Lr]),un?nl(_e,Lr,Xr):ml(_e,Lr,Xr)}return _e}function Uo(O,B){return function(_e,gt){var un=ui(_e)?Ne:vl,Vn=B?B():{};return un(_e,O,Rs(gt,2),Vn)}}function us(O){return Is(function(B,_e){var gt=-1,un=_e.length,Vn=un>1?_e[un-1]:e,gr=un>2?_e[2]:e;for(Vn=O.length>3&&"function"==typeof Vn?(un--,Vn):e,gr&&Cc(_e[0],_e[1],gr)&&(Vn=un<3?e:Vn,un=1),B=jo(B);++gt<un;){var Lr=_e[gt];Lr&&O(B,Lr,gt,Vn)}return B})}function Ks(O,B){return function(_e,gt){if(null==_e)return _e;if(!Io(_e))return O(_e,gt);for(var un=_e.length,Vn=B?un:-1,gr=jo(_e);(B?Vn--:++Vn<un)&&!1!==gt(gr[Vn],Vn,gr););return _e}}function ys(O){return function(B,_e,gt){for(var un=-1,Vn=jo(B),gr=gt(B),Lr=gr.length;Lr--;){var Xr=gr[O?Lr:++un];if(!1===_e(Vn[Xr],Xr,Vn))break}return B}}function Dc(O){return function(B){var _e=si(B=Sl(B))?Ft(B):e,gt=_e?_e[0]:B.charAt(0),un=_e?Su(_e,1).join(""):B.slice(1);return gt[O]()+un}}function al(O){return function(B){return Ea(o1($_(B).replace(ee,"")),O,"")}}function su(O){return function(){var B=arguments;switch(B.length){case 0:return new O;case 1:return new O(B[0]);case 2:return new O(B[0],B[1]);case 3:return new O(B[0],B[1],B[2]);case 4:return new O(B[0],B[1],B[2],B[3]);case 5:return new O(B[0],B[1],B[2],B[3],B[4]);case 6:return new O(B[0],B[1],B[2],B[3],B[4],B[5]);case 7:return new O(B[0],B[1],B[2],B[3],B[4],B[5],B[6])}var _e=Hs(O.prototype),gt=O.apply(_e,B);return Al(gt)?gt:_e}}function Kl(O){return function(B,_e,gt){var un=jo(B);if(!Io(B)){var Vn=Rs(_e,3);B=dc(B),_e=function(Lr){return Vn(un[Lr],Lr,un)}}var gr=O(B,_e,gt);return gr>-1?un[Vn?B[gr]:gr]:e}}function Ul(O){return au(function(B){var _e=B.length,gt=_e,un=Oa.prototype.thru;for(O&&B.reverse();gt--;){var Vn=B[gt];if("function"!=typeof Vn)throw new Ho(u);if(un&&!gr&&"wrapper"==Xc(Vn))var gr=new Oa([],!0)}for(gt=gr?gt:_e;++gt<_e;){var Lr=Xc(Vn=B[gt]),Xr="wrapper"==Lr?_d(Vn):e;gr=Xr&&ff(Xr[0])&&424==Xr[1]&&!Xr[4].length&&1==Xr[9]?gr[Xc(Xr[0])].apply(gr,Xr[3]):1==Vn.length&&ff(Vn)?gr[Lr]():gr.thru(Vn)}return function(){var Qi=arguments,Xi=Qi[0];if(gr&&1==Qi.length&&ui(Xi))return gr.plant(Xi).value();for(var ao=0,qo=_e?B[ao].apply(this,Qi):Xi;++ao<_e;)qo=B[ao].call(this,qo);return qo}})}function zl(O,B,_e,gt,un,Vn,gr,Lr,Xr,Qi){var Xi=128&B,ao=1&B,qo=2&B,Ss=24&B,Js=512&B,Ia=qo?e:su(O);return function ta(){for(var Xa=arguments.length,cl=dr(Xa),rd=Xa;rd--;)cl[rd]=arguments[rd];if(Ss)var Uu=Mu(ta),id=xr(cl,Uu);if(gt&&(cl=vr(cl,gt,un,Ss)),Vn&&(cl=Hr(cl,Vn,gr,Ss)),Xa-=id,Ss&&Xa<Qi){var Rc=Bi(cl,Uu);return af(O,B,zl,ta.placeholder,_e,cl,Rc,Lr,Xr,Qi-Xa)}var od=ao?_e:this,Pd=qo?od[O]:O;return Xa=cl.length,Lr?cl=Bp(cl,Lr):Js&&Xa>1&&cl.reverse(),Xi&&Xr<Xa&&(cl.length=Xr),this&&this!==Ca&&this instanceof ta&&(Pd=Ia||su(Pd)),Pd.apply(od,cl)}}function xc(O,B){return function(_e,gt){return function(O,B,_e,gt){return sr(O,function(un,Vn,gr){B(gt,_e(un),Vn,gr)}),gt}(_e,O,B(gt),{})}}function sf(O,B){return function(_e,gt){var un;if(_e===e&&gt===e)return B;if(_e!==e&&(un=_e),gt!==e){if(un===e)return gt;"string"==typeof _e||"string"==typeof gt?(_e=Fc(_e),gt=Fc(gt)):(_e=Ad(_e),gt=Ad(gt)),un=O(_e,gt)}return un}}function Tc(O){return au(function(B){return B=Lo(B,wt(Rs())),Is(function(_e){var gt=this;return O(B,function(un){return ye(un,gt,_e)})})})}function _u(O,B){var _e=(B=B===e?" ":Fc(B)).length;if(_e<2)return _e?tf(B,O):B;var gt=tf(B,Re(O/ft(B)));return si(B)?Su(Ft(gt),0,O).join(""):gt.slice(0,O)}function pd(O){return function(B,_e,gt){return gt&&"number"!=typeof gt&&Cc(B,_e,gt)&&(_e=gt=e),B=yf(B),_e===e?(_e=B,B=0):_e=yf(_e),function(O,B,_e,gt){for(var un=-1,Vn=kn(Re((B-O)/(_e||1)),0),gr=dr(Vn);Vn--;)gr[gt?Vn:++un]=O,O+=_e;return gr}(B,_e,gt=gt===e?B<_e?1:-1:yf(gt),O)}}function Ru(O){return function(B,_e){return"string"==typeof B&&"string"==typeof _e||(B=Hu(B),_e=Hu(_e)),O(B,_e)}}function af(O,B,_e,gt,un,Vn,gr,Lr,Xr,Qi){var Xi=8&B;B|=Xi?Y:64,4&(B&=~(Xi?64:Y))||(B&=-4);var Ia=[O,B,un,Xi?Vn:e,Xi?gr:e,Xi?e:Vn,Xi?e:gr,Lr,Xr,Qi],ta=_e.apply(e,Ia);return ff(O)&&Hc(ta,Ia),ta.placeholder=gt,ap(ta,O,B)}function ec(O){var B=Qo[O];return function(_e,gt){if(_e=Hu(_e),(gt=null==gt?0:zn(ka(gt),292))&&en(_e)){var un=(Sl(_e)+"e").split("e");return+((un=(Sl(B(un[0]+"e"+(+un[1]+gt)))+"e").split("e"))[0]+"e"+(+un[1]-gt))}return B(_e)}}var zu=fo&&1/hi(new fo([,-0]))[1]==He?function(O){return new fo(O)}:Jf;function $c(O){return function(B){var _e=jl(B);return _e==ar?io(B):_e==Yn?function(Un){var lr=-1,dr=Array(Un.size);return Un.forEach(function(li){dr[++lr]=[li,li]}),dr}(B):function(Un,lr){return Lo(lr,function(dr){return[dr,Un[dr]]})}(B,O(B))}}function Qc(O,B,_e,gt,un,Vn,gr,Lr){var Xr=2&B;if(!Xr&&"function"!=typeof O)throw new Ho(u);var Qi=gt?gt.length:0;if(Qi||(B&=-97,gt=un=e),gr=gr===e?gr:kn(ka(gr),0),Lr=Lr===e?Lr:ka(Lr),Qi-=un?un.length:0,64&B){var Xi=gt,ao=un;gt=un=e}var qo=Xr?e:_d(O),Ss=[O,B,_e,gt,un,Xi,ao,Vn,gr,Lr];if(qo&&function(O,B){var _e=O[1],gt=B[1],un=_e|gt;if(!(un<131||(128==gt&&8==_e||128==gt&&256==_e&&O[7].length<=B[8]||384==gt&&B[7].length<=B[8]&&8==_e)))return O;1&gt&&(O[2]=B[2],un|=1&_e?0:4);var Lr=B[3];if(Lr){var Xr=O[3];O[3]=Xr?vr(Xr,Lr,B[4]):Lr,O[4]=Xr?Bi(O[3],b):B[4]}(Lr=B[5])&&(O[5]=(Xr=O[5])?Hr(Xr,Lr,B[6]):Lr,O[6]=Xr?Bi(O[5],b):B[6]),(Lr=B[7])&&(O[7]=Lr),128&gt&&(O[8]=null==O[8]?B[8]:zn(O[8],B[8])),null==O[9]&&(O[9]=B[9]),O[0]=B[0],O[1]=un}(Ss,qo),O=Ss[0],B=Ss[1],_e=Ss[2],gt=Ss[3],un=Ss[4],!(Lr=Ss[9]=Ss[9]===e?Xr?0:O.length:kn(Ss[9]-Qi,0))&&24&B&&(B&=-25),B&&1!=B)Js=8==B||16==B?function(O,B,_e){var gt=su(O);return function un(){for(var Vn=arguments.length,gr=dr(Vn),Lr=Vn,Xr=Mu(un);Lr--;)gr[Lr]=arguments[Lr];var Qi=Vn<3&&gr[0]!==Xr&&gr[Vn-1]!==Xr?[]:Bi(gr,Xr);return(Vn-=Qi.length)<_e?af(O,B,zl,un.placeholder,e,gr,Qi,e,e,_e-Vn):ye(this&&this!==Ca&&this instanceof un?gt:O,this,gr)}}(O,B,Lr):B!=Y&&33!=B||un.length?zl.apply(e,Ss):function(O,B,_e,gt){var un=1&B,Vn=su(O);return function gr(){for(var Lr=-1,Xr=arguments.length,Qi=-1,Xi=gt.length,ao=dr(Xi+Xr),qo=this&&this!==Ca&&this instanceof gr?Vn:O;++Qi<Xi;)ao[Qi]=gt[Qi];for(;Xr--;)ao[Qi++]=arguments[++Lr];return ye(qo,un?_e:this,ao)}}(O,B,_e,gt);else var Js=function(O,B,_e){var gt=1&B,un=su(O);return function Vn(){return(this&&this!==Ca&&this instanceof Vn?un:O).apply(gt?_e:this,arguments)}}(O,B,_e);return ap((qo?Jc:Hc)(Js,Ss),O,B)}function ip(O,B,_e,gt){return O===e||Mt(O,ha[_e])&&!Es.call(gt,_e)?B:O}function is(O,B,_e,gt,un,Vn){return Al(O)&&Al(B)&&(Vn.set(B,O),Ql(O,B,e,is,Vn),Vn.delete(B)),O}function kf(O){return S_(O)?e:O}function hd(O,B,_e,gt,un,Vn){var gr=1&_e,Lr=O.length,Xr=B.length;if(Lr!=Xr&&!(gr&&Xr>Lr))return!1;var Qi=Vn.get(O),Xi=Vn.get(B);if(Qi&&Xi)return Qi==B&&Xi==O;var ao=-1,qo=!0,Ss=2&_e?new ki:e;for(Vn.set(O,B),Vn.set(B,O);++ao<Lr;){var Js=O[ao],Ia=B[ao];if(gt)var ta=gr?gt(Ia,Js,ao,B,O,Vn):gt(Js,Ia,ao,O,B,Vn);if(ta!==e){if(ta)continue;qo=!1;break}if(Ss){if(!Ma(B,function(Xa,cl){if(!tn(Ss,cl)&&(Js===Xa||un(Js,Xa,_e,gt,Vn)))return Ss.push(cl)})){qo=!1;break}}else if(Js!==Ia&&!un(Js,Ia,_e,gt,Vn)){qo=!1;break}}return Vn.delete(O),Vn.delete(B),qo}function au(O){return Uf(qu(O,e,up),O+"")}function Ud(O){return yo(O,dc,Bd)}function lf(O){return yo(O,Gc,mc)}var _d=wo?function(O){return wo.get(O)}:Jf;function Xc(O){for(var B=O.name+"",_e=oo[B],gt=Es.call(oo,B)?_e.length:0;gt--;){var un=_e[gt],Vn=un.func;if(null==Vn||Vn==O)return un.name}return B}function Mu(O){return(Es.call(_n,"placeholder")?_n:O).placeholder}function Rs(){var O=_n.iteratee||V_;return O=O===V_?xn:O,arguments.length?O(arguments[0],arguments[1]):O}function jd(O,B){var _e=O.__data__;return function(O){var B=typeof O;return"string"==B||"number"==B||"symbol"==B||"boolean"==B?"__proto__"!==O:null===O}(B)?_e["string"==typeof B?"string":"hash"]:_e.map}function gu(O){for(var B=dc(O),_e=B.length;_e--;){var gt=B[_e],un=O[gt];B[_e]=[gt,un,eu(un)]}return B}function lu(O,B){var _e=function(Un,lr){return null==Un?e:Un[lr]}(O,B);return X(_e)?_e:e}var Bd=xt?function(O){return null==O?[]:(O=jo(O),Yo(xt(O),function(B){return ru.call(O,B)}))}:nu,mc=xt?function(O){for(var B=[];O;)Zo(B,Bd(O)),O=kl(O);return B}:nu,jl=Co;function cu(O,B,_e){for(var gt=-1,un=(B=Yc(B,O)).length,Vn=!1;++gt<un;){var gr=Sc(B[gt]);if(!(Vn=null!=O&&_e(O,gr)))break;O=O[gr]}return Vn||++gt!=un?Vn:!!(un=null==O?0:O.length)&&td(un)&&mu(gr,un)&&(ui(O)||Rr(O))}function Pu(O){return"function"!=typeof O.constructor||Ou(O)?{}:Hs(kl(O))}function sp(O){return ui(O)||Rr(O)||!!(Fe&&O&&O[Fe])}function mu(O,B){var _e=typeof O;return!!(B=null==B?$e:B)&&("number"==_e||"symbol"!=_e&&Mi.test(O))&&O>-1&&O%1==0&&O<B}function Cc(O,B,_e){if(!Al(_e))return!1;var gt=typeof B;return!!("number"==gt?Io(_e)&&mu(B,_e.length):"string"==gt&&B in _e)&&Mt(_e[B],O)}function md(O,B){if(ui(O))return!1;var _e=typeof O;return!("number"!=_e&&"symbol"!=_e&&"boolean"!=_e&&null!=O&&!$u(O))||it.test(O)||!at.test(O)||null!=B&&O in jo(B)}function ff(O){var B=Xc(O),_e=_n[B];if("function"!=typeof _e||!(B in lo.prototype))return!1;if(O===_e)return!0;var gt=_d(_e);return!!gt&&O===gt[0]}(Ci&&jl(new Ci(new ArrayBuffer(1)))!=$n||vi&&jl(new vi)!=ar||Ai&&jl(Ai.resolve())!=Mn||fo&&jl(new fo)!=Yn||po&&jl(new po)!=Kn)&&(jl=function(O){var B=Co(O),_e=B==er?O.constructor:e,gt=_e?Mc(_e):"";if(gt)switch(gt){case Oo:return $n;case Ki:return ar;case Vi:return Mn;case Wo:return Yn;case Po:return Kn}return B});var Hf=fl?tu:Ef;function Ou(O){var B=O&&O.constructor;return O===("function"==typeof B&&B.prototype||ha)}function eu(O){return O==O&&!Al(O)}function pf(O,B){return function(_e){return null!=_e&&_e[O]===B&&(B!==e||O in jo(_e))}}function qu(O,B,_e){return B=kn(B===e?O.length-1:B,0),function(){for(var gt=arguments,un=-1,Vn=kn(gt.length-B,0),gr=dr(Vn);++un<Vn;)gr[un]=gt[B+un];un=-1;for(var Lr=dr(B+1);++un<B;)Lr[un]=gt[un];return Lr[B]=_e(gr),ye(O,this,Lr)}}function hf(O,B){return B.length<2?O:Pi(O,Lc(B,0,-1))}function Bp(O,B){for(var _e=O.length,gt=zn(B.length,_e),un=_i(O);gt--;){var Vn=B[gt];O[gt]=mu(Vn,_e)?un[Vn]:e}return O}function yd(O,B){if(("constructor"!==B||"function"!=typeof O[B])&&"__proto__"!=B)return O[B]}var Hc=Zc(Jc),Zd=ge||function(O,B){return Ca.setTimeout(O,B)},Uf=Zc(Tu);function ap(O,B,_e){var gt=B+"";return Uf(O,function(O,B){var _e=B.length;if(!_e)return O;var gt=_e-1;return B[gt]=(_e>1?"& ":"")+B[gt],B=B.join(_e>2?", ":" "),O.replace(An,"{\n/* [wrapped with "+B+"] */\n")}(gt,function(O,B){return Wt(St,function(_e){var gt="_."+_e[0];B&_e[1]&&!ms(O,gt)&&O.push(gt)}),O.sort()}(function(O){var B=O.match(Bn);return B?B[1].split(ir):[]}(gt),_e)))}function Zc(O){var B=0,_e=0;return function(){var gt=jr(),un=16-(gt-_e);if(_e=gt,un>0){if(++B>=800)return arguments[0]}else B=0;return O.apply(e,arguments)}}function bd(O,B){var _e=-1,gt=O.length,un=gt-1;for(B=B===e?gt:B;++_e<B;){var Vn=Od(_e,un),gr=O[Vn];O[Vn]=O[_e],O[_e]=gr}return O.length=B,O}var B,_e,Ed=(B=fp(function(O){var B=[];return 46===O.charCodeAt(0)&&B.push(""),O.replace(Pt,function(_e,gt,un,Vn){B.push(un?Vn.replace(Nr,"$1"):gt||_e)}),B},function(gt){return 500===_e.size&&_e.clear(),gt}),_e=B.cache,B);function Sc(O){if("string"==typeof O||$u(O))return O;var B=O+"";return"0"==B&&1/O==-He?"-0":B}function Mc(O){if(null!=O){try{return Hn.call(O)}catch(B){}try{return O+""}catch(B){}}return""}function jf(O){if(O instanceof lo)return O.clone();var B=new Oa(O.__wrapped__,O.__chain__);return B.__actions__=_i(O.__actions__),B.__index__=O.__index__,B.__values__=O.__values__,B}var Bf=Is(function(O,B){return os(O)?Q(O,Zt(B,1,os,!0)):[]}),lp=Is(function(O,B){var _e=qr(B);return os(_e)&&(_e=e),os(O)?Q(O,Zt(B,1,os,!0),Rs(_e,2)):[]}),Op=Is(function(O,B){var _e=qr(B);return os(_e)&&(_e=e),os(O)?Q(O,Zt(B,1,os,!0),e,_e):[]});function Ap(O,B,_e){var gt=null==O?0:O.length;if(!gt)return-1;var un=null==_e?0:ka(_e);return un<0&&(un=kn(gt+un,0)),dl(O,Rs(B,3),un)}function Vd(O,B,_e){var gt=null==O?0:O.length;if(!gt)return-1;var un=gt-1;return _e!==e&&(un=ka(_e),un=_e<0?kn(gt+un,0):zn(un,gt-1)),dl(O,Rs(B,3),un,!0)}function up(O){return null!=O&&O.length?Zt(O,1):[]}function q(O){return O&&O.length?O[0]:e}var on=Is(function(O){var B=Lo(O,kc);return B.length&&B[0]===O[0]?Ms(B):[]}),bn=Is(function(O){var B=qr(O),_e=Lo(O,kc);return B===qr(_e)?B=e:_e.pop(),_e.length&&_e[0]===O[0]?Ms(_e,Rs(B,2)):[]}),rr=Is(function(O){var B=qr(O),_e=Lo(O,kc);return(B="function"==typeof B?B:e)&&_e.pop(),_e.length&&_e[0]===O[0]?Ms(_e,e,B):[]});function qr(O){var B=null==O?0:O.length;return B?O[B-1]:e}var so=Is(gs);function gs(O,B){return O&&O.length&&B&&B.length?xu(O,B):O}var oi=au(function(O,B){var _e=null==O?0:O.length,gt=yl(O,B);return ef(O,Lo(B,function(un){return mu(un,_e)?+un:un}).sort(Ye)),gt});function ti(O){return null==O?O:ci.call(O)}var Eh=Is(function(O){return hu(Zt(O,1,os,!0))}),l_=Is(function(O){var B=qr(O);return os(B)&&(B=e),hu(Zt(O,1,os,!0),Rs(B,2))}),c_=Is(function(O){var B=qr(O);return B="function"==typeof B?B:e,hu(Zt(O,1,os,!0),e,B)});function Gp(O){if(!O||!O.length)return[];var B=0;return O=Yo(O,function(_e){if(os(_e))return B=kn(_e.length,B),!0}),ja(B,function(_e){return Lo(O,Na(_e))})}function Ch(O,B){if(!O||!O.length)return[];var _e=Gp(O);return null==B?_e:Lo(_e,function(gt){return ye(B,e,gt)})}var f_=Is(function(O,B){return os(O)?Q(O,B):[]}),ca=Is(function(O){return Cu(Yo(O,os))}),Sh=Is(function(O){var B=qr(O);return os(B)&&(B=e),Cu(Yo(O,os),Rs(B,2))}),Mh=Is(function(O){var B=qr(O);return B="function"==typeof B?B:e,Cu(Yo(O,os),e,B)}),wp=Is(Gp),Td=Is(function(O){var B=O.length,_e=B>1?O[B-1]:e;return _e="function"==typeof _e?(O.pop(),_e):e,Ch(O,_e)});function zp(O){var B=_n(O);return B.__chain__=!0,B}function dp(O,B){return B(O)}var p_=au(function(O){var B=O.length,_e=B?O[0]:0,gt=this.__wrapped__,un=function(Vn){return yl(Vn,O)};return!(B>1||this.__actions__.length)&&gt instanceof lo&&mu(_e)?((gt=gt.slice(_e,+_e+(B?1:0))).__actions__.push({func:dp,args:[un],thisArg:e}),new Oa(gt,this.__chain__).thru(function(Vn){return B&&!Vn.length&&Vn.push(e),Vn})):this.thru(un)}),Ah=Uo(function(O,B,_e){Es.call(O,_e)?++O[_e]:nl(O,_e,1)}),v_=Kl(Ap),Fm=Kl(Vd);function Dh(O,B){return(ui(O)?Wt:de)(O,Rs(B,3))}function Jp(O,B){return(ui(O)?Or:ve)(O,Rs(B,3))}var nc=Uo(function(O,B,_e){Es.call(O,_e)?O[_e].push(B):nl(O,_e,[B])}),Cl=Is(function(O,B,_e){var gt=-1,un="function"==typeof B,Vn=Io(O)?dr(O.length):[];return de(O,function(gr){Vn[++gt]=un?ye(B,gr,_e):ya(gr,B,_e)}),Vn}),y_=Uo(function(O,B,_e){nl(O,_e,B)});function Qp(O,B){return(ui(O)?Lo:aa)(O,Rs(B,3))}var ko=Uo(function(O,B,_e){O[_e?0:1].push(B)},function(){return[[],[]]}),Nh=Is(function(O,B){if(null==O)return[];var _e=B.length;return _e>1&&Cc(O,B[0],B[1])?B=[]:_e>2&&Cc(B[0],B[1],B[2])&&(B=[B[0]]),Sd(O,Zt(B,1),[])}),Vf=Te||function(){return Ca.Date.now()};function Dp(O,B,_e){return B=_e?e:B,Qc(O,128,e,e,e,e,B=O&&null==B?O.length:B)}function Ih(O,B){var _e;if("function"!=typeof B)throw new Ho(u);return O=ka(O),function(){return--O>0&&(_e=B.apply(this,arguments)),O<=1&&(B=e),_e}}var Xu=Is(function(O,B,_e){var gt=1;if(_e.length){var un=Bi(_e,Mu(Xu));gt|=Y}return Qc(O,gt,B,_e,un)}),Kp=Is(function(O,B,_e){var gt=3;if(_e.length){var un=Bi(_e,Mu(Kp));gt|=Y}return Qc(B,gt,O,_e,un)});function xp(O,B,_e){var gt,un,Vn,gr,Lr,Xr,Qi=0,Xi=!1,ao=!1,qo=!0;if("function"!=typeof O)throw new Ho(u);function Ss(Rc){var od=gt,Pd=un;return gt=un=e,Qi=Rc,gr=O.apply(Pd,od)}function Js(Rc){return Qi=Rc,Lr=Zd(Xa,B),Xi?Ss(Rc):gr}function ta(Rc){var od=Rc-Xr;return Xr===e||od>=B||od<0||ao&&Rc-Qi>=Vn}function Xa(){var Rc=Vf();if(ta(Rc))return cl(Rc);Lr=Zd(Xa,function(Rc){var qg=B-(Rc-Xr);return ao?zn(qg,Vn-(Rc-Qi)):qg}(Rc))}function cl(Rc){return Lr=e,qo&&gt?Ss(Rc):(gt=un=e,gr)}function id(){var Rc=Vf(),od=ta(Rc);if(gt=arguments,un=this,Xr=Rc,od){if(Lr===e)return Js(Xr);if(ao)return fd(Lr),Lr=Zd(Xa,B),Ss(Xr)}return Lr===e&&(Lr=Zd(Xa,B)),gr}return B=Hu(B)||0,Al(_e)&&(Xi=!!_e.leading,Vn=(ao="maxWait"in _e)?kn(Hu(_e.maxWait)||0,B):Vn,qo="trailing"in _e?!!_e.trailing:qo),id.cancel=function(){Lr!==e&&fd(Lr),Qi=0,gt=Xr=un=Lr=e},id.flush=function(){return Lr===e?gr:cl(Vf())},id}var b_=Is(function(O,B){return $(O,1,B)}),th=Is(function(O,B,_e){return $(O,Hu(B)||0,_e)});function fp(O,B){if("function"!=typeof O||null!=B&&"function"!=typeof B)throw new Ho(u);var _e=function(){var gt=arguments,un=B?B.apply(this,gt):gt[0],Vn=_e.cache;if(Vn.has(un))return Vn.get(un);var gr=O.apply(this,gt);return _e.cache=Vn.set(un,gr)||Vn,gr};return _e.cache=new(fp.Cache||Us),_e}function Ku(O){if("function"!=typeof O)throw new Ho(u);return function(){var B=arguments;switch(B.length){case 0:return!O.call(this);case 1:return!O.call(this,B[0]);case 2:return!O.call(this,B[0],B[1]);case 3:return!O.call(this,B[0],B[1],B[2])}return!O.apply(this,B)}}fp.Cache=Us;var qd=Lf(function(O,B){var _e=(B=1==B.length&&ui(B[0])?Lo(B[0],wt(Rs())):Lo(Zt(B,1),wt(Rs()))).length;return Is(function(gt){for(var un=-1,Vn=zn(gt.length,_e);++un<Vn;)gt[un]=B[un].call(this,gt[un]);return ye(O,this,gt)})}),Jd=Is(function(O,B){var _e=Bi(B,Mu(Jd));return Qc(O,Y,e,B,_e)}),Gf=Is(function(O,B){var _e=Bi(B,Mu(Gf));return Qc(O,64,e,B,_e)}),vf=au(function(O,B){return Qc(O,256,e,e,e,B)});function Mt(O,B){return O===B||O!=O&&B!=B}var cn=Ru(Xo),pr=Ru(function(O,B){return O>=B}),Rr=hl(function(){return arguments}())?hl:function(O){return rc(O)&&Es.call(O,"callee")&&!ru.call(O,"callee")},ui=dr.isArray,To=ks?wt(ks):function(O){return rc(O)&&Co(O)==Sn};function Io(O){return null!=O&&td(O.length)&&!tu(O)}function os(O){return rc(O)&&Io(O)}var _l=Dt||Ef,qa=Ua?wt(Ua):function(O){return rc(O)&&Co(O)==Ie};function zf(O){if(!rc(O))return!1;var B=Co(O);return B==Jt||"[object DOMException]"==B||"string"==typeof O.message&&"string"==typeof O.name&&!S_(O)}function tu(O){if(!Al(O))return!1;var B=Co(O);return B==zt||B==ln||"[object AsyncFunction]"==B||"[object Proxy]"==B}function vc(O){return"number"==typeof O&&O==ka(O)}function td(O){return"number"==typeof O&&O>-1&&O%1==0&&O<=$e}function Al(O){var B=typeof O;return null!=O&&("object"==B||"function"==B)}function rc(O){return null!=O&&"object"==typeof O}var $h=pt?wt(pt):function(O){return rc(O)&&jl(O)==ar};function $m(O){return"number"==typeof O||rc(O)&&Co(O)==Ln}function S_(O){if(!rc(O)||Co(O)!=er)return!1;var B=kl(O);if(null===B)return!0;var _e=Es.call(B,"constructor")&&B.constructor;return"function"==typeof _e&&_e instanceof _e&&Hn.call(_e)==As}var M_=an?wt(an):function(O){return rc(O)&&Co(O)==tr},O_=Nt?wt(Nt):function(O){return rc(O)&&jl(O)==Yn};function Hh(O){return"string"==typeof O||!ui(O)&&rc(O)&&Co(O)==Cn}function $u(O){return"symbol"==typeof O||rc(O)&&Co(O)==Kt}var ih=Ce?wt(Ce):function(O){return rc(O)&&td(O.length)&&!!gi[Co(O)]},yv=Ru(fs),mg=Ru(function(O,B){return O<=B});function w_(O){if(!O)return[];if(Io(O))return Hh(O)?Ft(O):_i(O);if(we&&O[we])return function(Un){for(var lr,dr=[];!(lr=Un.next()).done;)dr.push(lr.value);return dr}(O[we]());var B=jl(O);return(B==ar?io:B==Yn?hi:ah)(O)}function yf(O){return O?(O=Hu(O))===He||O===-He?17976931348623157e292*(O<0?-1:1):O==O?O:0:0===O?O:0}function ka(O){var B=yf(O),_e=B%1;return B==B?_e?B-_e:B:0}function Hm(O){return O?El(ka(O),0,Et):0}function Hu(O){if("number"==typeof O)return O;if($u(O))return NaN;if(Al(O)){var B="function"==typeof O.valueOf?O.valueOf():O;O=Al(B)?B+"":B}if("string"!=typeof O)return 0===O?O:+O;O=ze(O);var _e=Mr.test(O);return _e||Ii.test(O)?Ra(O.slice(2),_e?2:8):nr.test(O)?NaN:+O}function Um(O){return ji(O,Gc(O))}function Sl(O){return null==O?"":Fc(O)}var vg=us(function(O,B){if(Ou(B)||Io(B))ji(B,dc(B),O);else for(var _e in B)Es.call(B,_e)&&ml(O,_e,B[_e])}),D_=us(function(O,B){ji(B,Gc(B),O)}),oh=us(function(O,B,_e,gt){ji(B,Gc(B),O,gt)}),yg=us(function(O,B,_e,gt){ji(B,dc(B),O,gt)}),Nl=au(yl),Pp=Is(function(O,B){O=jo(O);var _e=-1,gt=B.length,un=gt>2?B[2]:e;for(un&&Cc(B[0],B[1],un)&&(gt=1);++_e<gt;)for(var Vn=B[_e],gr=Gc(Vn),Lr=-1,Xr=gr.length;++Lr<Xr;){var Qi=gr[Lr],Xi=O[Qi];(Xi===e||Mt(Xi,ha[Qi])&&!Es.call(O,Qi))&&(O[Qi]=Vn[Qi])}return O}),Bm=Is(function(O){return O.push(e,is),ye(hp,e,O)});function N_(O,B,_e){var gt=null==O?e:Pi(O,B);return gt===e?_e:gt}function P_(O,B){return null!=O&&cu(O,B,_s)}var I_=xc(function(O,B,_e){null!=B&&"function"!=typeof B.toString&&(B=mo.call(B)),O[B]=_e},kg(vu)),Ym=xc(function(O,B,_e){null!=B&&"function"!=typeof B.toString&&(B=mo.call(B)),Es.call(O,B)?O[B].push(_e):O[B]=[_e]},Rs),Zm=Is(ya);function dc(O){return Io(O)?ou(O):Ar(O)}function Gc(O){return Io(O)?ou(O,!0):function(O){if(!Al(O))return function(O){var B=[];if(null!=O)for(var _e in jo(O))B.push(_e);return B}(O);var B=Ou(O),_e=[];for(var gt in O)"constructor"==gt&&(B||!Es.call(O,gt))||_e.push(gt);return _e}(O)}var Tg=us(function(O,B,_e){Ql(O,B,_e)}),hp=us(function(O,B,_e,gt){Ql(O,B,_e,gt)}),Gm=au(function(O,B){var _e={};if(null==O)return _e;var gt=!1;B=Lo(B,function(Vn){return Vn=Yc(Vn,O),gt||(gt=Vn.length>1),Vn}),ji(O,lf(O),_e),gt&&(_e=p(_e,7,kf));for(var un=B.length;un--;)Hd(_e,B[un]);return _e}),Wm=au(function(O,B){return null==O?{}:function(O,B){return Md(O,B,function(_e,gt){return P_(O,gt)})}(O,B)});function Bh(O,B){if(null==O)return{};var _e=Lo(lf(O),function(gt){return[gt]});return B=Rs(B),Md(O,_e,function(gt,un){return B(gt,un[0])})}var oc=$c(dc),Yh=$c(Gc);function ah(O){return null==O?[]:kt(O,dc(O))}var Og=al(function(O,B,_e){return B=B.toLowerCase(),O+(_e?k_(B):B)});function k_(O){return Ig(Sl(O).toLowerCase())}function $_(O){return(O=Sl(O))&&O.replace(Oi,Zr).replace(Ve,"")}var Ag=al(function(O,B,_e){return O+(_e?"-":"")+B.toLowerCase()}),wg=al(function(O,B,_e){return O+(_e?" ":"")+B.toLowerCase()}),Dg=Dc("toLowerCase"),Tv=al(function(O,B,_e){return O+(_e?"_":"")+B.toLowerCase()}),r1=al(function(O,B,_e){return O+(_e?" ":"")+Ig(B)}),Ov=al(function(O,B,_e){return O+(_e?" ":"")+B.toUpperCase()}),Ig=Dc("toUpperCase");function o1(O,B,_e){return O=Sl(O),(B=_e?e:B)===e?function(Un){return ni.test(Un)}(O)?function(Un){return Un.match(Tn)||[]}(O):function(Un){return Un.match(mr)||[]}(O):O.match(B)||[]}var Y_=Is(function(O,B){try{return ye(O,e,B)}catch(_e){return zf(_e)?_e:new Ti(_e)}}),Lg=au(function(O,B){return Wt(B,function(_e){_e=Sc(_e),nl(O,_e,Xu(O[_e],O))}),O});function kg(O){return function(){return O}}var Z_=Ul(),a1=Ul(!0);function vu(O){return O}function V_(O){return xn("function"==typeof O?O:p(O,1))}var u1=Is(function(O,B){return function(_e){return ya(_e,O,B)}}),d1=Is(function(O,B){return function(_e){return ya(O,_e,B)}});function G_(O,B,_e){var gt=dc(B),un=Yr(B,gt);null==_e&&(!Al(B)||!un.length&&gt.length)&&(_e=B,B=O,O=this,un=Yr(B,dc(B)));var Vn=!(Al(_e)&&"chain"in _e&&!_e.chain),gr=tu(O);return Wt(un,function(Lr){var Xr=B[Lr];O[Lr]=Xr,gr&&(O.prototype[Lr]=function(){var Qi=this.__chain__;if(Vn||Qi){var Xi=O(this.__wrapped__),ao=Xi.__actions__=_i(this.__actions__);return ao.push({func:Xr,args:arguments,thisArg:O}),Xi.__chain__=Qi,Xi}return Xr.apply(O,Zo([this.value()],arguments))})}),O}function Jf(){}var Nd=Tc(Lo),ch=Tc(Ni),f1=Tc(Ma);function Ug(O){return md(O)?Na(Sc(O)):function(O){return function(B){return Pi(B,O)}}(O)}var Qd=pd(),uh=pd(!0);function nu(){return[]}function Ef(){return!1}var Xf=sf(function(O,B){return O+B},0),Kf=ec("ceil"),Fp=sf(function(O,B){return O/B},1),kp=ec("floor"),W_=sf(function(O,B){return O*B},1),Vg=ec("round"),Gg=sf(function(O,B){return O-B},0);return _n.after=function(O,B){if("function"!=typeof B)throw new Ho(u);return O=ka(O),function(){if(--O<1)return B.apply(this,arguments)}},_n.ary=Dp,_n.assign=vg,_n.assignIn=D_,_n.assignInWith=oh,_n.assignWith=yg,_n.at=Nl,_n.before=Ih,_n.bind=Xu,_n.bindAll=Lg,_n.bindKey=Kp,_n.castArray=function(){if(!arguments.length)return[];var O=arguments[0];return ui(O)?O:[O]},_n.chain=zp,_n.chunk=function(O,B,_e){B=(_e?Cc(O,B,_e):B===e)?1:kn(ka(B),0);var gt=null==O?0:O.length;if(!gt||B<1)return[];for(var un=0,Vn=0,gr=dr(Re(gt/B));un<gt;)gr[Vn++]=Lc(O,un,un+=B);return gr},_n.compact=function(O){for(var B=-1,_e=null==O?0:O.length,gt=0,un=[];++B<_e;){var Vn=O[B];Vn&&(un[gt++]=Vn)}return un},_n.concat=function(){var O=arguments.length;if(!O)return[];for(var B=dr(O-1),_e=arguments[0],gt=O;gt--;)B[gt-1]=arguments[gt];return Zo(ui(_e)?_i(_e):[_e],Zt(B,1))},_n.cond=function(O){var B=null==O?0:O.length,_e=Rs();return O=B?Lo(O,function(gt){if("function"!=typeof gt[1])throw new Ho(u);return[_e(gt[0]),gt[1]]}):[],Is(function(gt){for(var un=-1;++un<B;){var Vn=O[un];if(ye(Vn[0],this,gt))return ye(Vn[1],this,gt)}})},_n.conforms=function(O){return function(O){var B=dc(O);return function(_e){return N(_e,O,B)}}(p(O,1))},_n.constant=kg,_n.countBy=Ah,_n.create=function(O,B){var _e=Hs(O);return null==B?_e:hc(_e,B)},_n.curry=function Lh(O,B,_e){var gt=Qc(O,8,e,e,e,e,e,B=_e?e:B);return gt.placeholder=Lh.placeholder,gt},_n.curryRight=function eh(O,B,_e){var gt=Qc(O,16,e,e,e,e,e,B=_e?e:B);return gt.placeholder=eh.placeholder,gt},_n.debounce=xp,_n.defaults=Pp,_n.defaultsDeep=Bm,_n.defer=b_,_n.delay=th,_n.difference=Bf,_n.differenceBy=lp,_n.differenceWith=Op,_n.drop=function(O,B,_e){var gt=null==O?0:O.length;return gt?Lc(O,(B=_e||B===e?1:ka(B))<0?0:B,gt):[]},_n.dropRight=function(O,B,_e){var gt=null==O?0:O.length;return gt?Lc(O,0,(B=gt-(B=_e||B===e?1:ka(B)))<0?0:B):[]},_n.dropRightWhile=function(O,B){return O&&O.length?wd(O,Rs(B,3),!0,!0):[]},_n.dropWhile=function(O,B){return O&&O.length?wd(O,Rs(B,3),!0):[]},_n.fill=function(O,B,_e,gt){var un=null==O?0:O.length;return un?(_e&&"number"!=typeof _e&&Cc(O,B,_e)&&(_e=0,gt=un),function(O,B,_e,gt){var un=O.length;for((_e=ka(_e))<0&&(_e=-_e>un?0:un+_e),(gt=gt===e||gt>un?un:ka(gt))<0&&(gt+=un),gt=_e>gt?0:Hm(gt);_e<gt;)O[_e++]=B;return O}(O,B,_e,gt)):[]},_n.filter=function(O,B){return(ui(O)?Yo:Yt)(O,Rs(B,3))},_n.flatMap=function(O,B){return Zt(Qp(O,B),1)},_n.flatMapDeep=function(O,B){return Zt(Qp(O,B),He)},_n.flatMapDepth=function(O,B,_e){return _e=_e===e?1:ka(_e),Zt(Qp(O,B),_e)},_n.flatten=up,_n.flattenDeep=function(O){return null!=O&&O.length?Zt(O,He):[]},_n.flattenDepth=function(O,B){return null!=O&&O.length?Zt(O,B=B===e?1:ka(B)):[]},_n.flip=function(O){return Qc(O,512)},_n.flow=Z_,_n.flowRight=a1,_n.fromPairs=function(O){for(var B=-1,_e=null==O?0:O.length,gt={};++B<_e;){var un=O[B];gt[un[0]]=un[1]}return gt},_n.functions=function(O){return null==O?[]:Yr(O,dc(O))},_n.functionsIn=function(O){return null==O?[]:Yr(O,Gc(O))},_n.groupBy=nc,_n.initial=function(O){return null!=O&&O.length?Lc(O,0,-1):[]},_n.intersection=on,_n.intersectionBy=bn,_n.intersectionWith=rr,_n.invert=I_,_n.invertBy=Ym,_n.invokeMap=Cl,_n.iteratee=V_,_n.keyBy=y_,_n.keys=dc,_n.keysIn=Gc,_n.map=Qp,_n.mapKeys=function(O,B){var _e={};return B=Rs(B,3),sr(O,function(gt,un,Vn){nl(_e,B(gt,un,Vn),gt)}),_e},_n.mapValues=function(O,B){var _e={};return B=Rs(B,3),sr(O,function(gt,un,Vn){nl(_e,un,B(gt,un,Vn))}),_e},_n.matches=function(O){return za(p(O,1))},_n.matchesProperty=function(O,B){return gc(O,p(B,1))},_n.memoize=fp,_n.merge=Tg,_n.mergeWith=hp,_n.method=u1,_n.methodOf=d1,_n.mixin=G_,_n.negate=Ku,_n.nthArg=function(O){return O=ka(O),Is(function(B){return Gu(B,O)})},_n.omit=Gm,_n.omitBy=function(O,B){return Bh(O,Ku(Rs(B)))},_n.once=function(O){return Ih(2,O)},_n.orderBy=function(O,B,_e,gt){return null==O?[]:(ui(B)||(B=null==B?[]:[B]),ui(_e=gt?e:_e)||(_e=null==_e?[]:[_e]),Sd(O,B,_e))},_n.over=Nd,_n.overArgs=qd,_n.overEvery=ch,_n.overSome=f1,_n.partial=Jd,_n.partialRight=Gf,_n.partition=ko,_n.pick=Wm,_n.pickBy=Bh,_n.property=Ug,_n.propertyOf=function(O){return function(B){return null==O?e:Pi(O,B)}},_n.pull=so,_n.pullAll=gs,_n.pullAllBy=function(O,B,_e){return O&&O.length&&B&&B.length?xu(O,B,Rs(_e,2)):O},_n.pullAllWith=function(O,B,_e){return O&&O.length&&B&&B.length?xu(O,B,e,_e):O},_n.pullAt=oi,_n.range=Qd,_n.rangeRight=uh,_n.rearg=vf,_n.reject=function(O,B){return(ui(O)?Yo:Yt)(O,Ku(Rs(B,3)))},_n.remove=function(O,B){var _e=[];if(!O||!O.length)return _e;var gt=-1,un=[],Vn=O.length;for(B=Rs(B,3);++gt<Vn;){var gr=O[gt];B(gr,gt,O)&&(_e.push(gr),un.push(gt))}return ef(O,un),_e},_n.rest=function(O,B){if("function"!=typeof O)throw new Ho(u);return Is(O,B=B===e?B:ka(B))},_n.reverse=ti,_n.sampleSize=function(O,B,_e){return B=(_e?Cc(O,B,_e):B===e)?1:ka(B),(ui(O)?Vl:Nf)(O,B)},_n.set=function(O,B,_e){return null==O?O:ld(O,B,_e)},_n.setWith=function(O,B,_e,gt){return gt="function"==typeof gt?gt:e,null==O?O:ld(O,B,_e,gt)},_n.shuffle=function(O){return(ui(O)?el:nf)(O)},_n.slice=function(O,B,_e){var gt=null==O?0:O.length;return gt?(_e&&"number"!=typeof _e&&Cc(O,B,_e)?(B=0,_e=gt):(B=null==B?0:ka(B),_e=_e===e?gt:ka(_e)),Lc(O,B,_e)):[]},_n.sortBy=Nh,_n.sortedUniq=function(O){return O&&O.length?$d(O):[]},_n.sortedUniqBy=function(O,B){return O&&O.length?$d(O,Rs(B,2)):[]},_n.split=function(O,B,_e){return _e&&"number"!=typeof _e&&Cc(O,B,_e)&&(B=_e=e),(_e=_e===e?Et:_e>>>0)?(O=Sl(O))&&("string"==typeof B||null!=B&&!M_(B))&&!(B=Fc(B))&&si(O)?Su(Ft(O),0,_e):O.split(B,_e):[]},_n.spread=function(O,B){if("function"!=typeof O)throw new Ho(u);return B=null==B?0:kn(ka(B),0),Is(function(_e){var gt=_e[B],un=Su(_e,0,B);return gt&&Zo(un,gt),ye(O,this,un)})},_n.tail=function(O){var B=null==O?0:O.length;return B?Lc(O,1,B):[]},_n.take=function(O,B,_e){return O&&O.length?Lc(O,0,(B=_e||B===e?1:ka(B))<0?0:B):[]},_n.takeRight=function(O,B,_e){var gt=null==O?0:O.length;return gt?Lc(O,(B=gt-(B=_e||B===e?1:ka(B)))<0?0:B,gt):[]},_n.takeRightWhile=function(O,B){return O&&O.length?wd(O,Rs(B,3),!1,!0):[]},_n.takeWhile=function(O,B){return O&&O.length?wd(O,Rs(B,3)):[]},_n.tap=function(O,B){return B(O),O},_n.throttle=function(O,B,_e){var gt=!0,un=!0;if("function"!=typeof O)throw new Ho(u);return Al(_e)&&(gt="leading"in _e?!!_e.leading:gt,un="trailing"in _e?!!_e.trailing:un),xp(O,B,{leading:gt,maxWait:B,trailing:un})},_n.thru=dp,_n.toArray=w_,_n.toPairs=oc,_n.toPairsIn=Yh,_n.toPath=function(O){return ui(O)?Lo(O,Sc):$u(O)?[O]:_i(Ed(Sl(O)))},_n.toPlainObject=Um,_n.transform=function(O,B,_e){var gt=ui(O),un=gt||_l(O)||ih(O);if(B=Rs(B,4),null==_e){var Vn=O&&O.constructor;_e=un?gt?new Vn:[]:Al(O)&&tu(Vn)?Hs(kl(O)):{}}return(un?Wt:sr)(O,function(gr,Lr,Xr){return B(_e,gr,Lr,Xr)}),_e},_n.unary=function(O){return Dp(O,1)},_n.union=Eh,_n.unionBy=l_,_n.unionWith=c_,_n.uniq=function(O){return O&&O.length?hu(O):[]},_n.uniqBy=function(O,B){return O&&O.length?hu(O,Rs(B,2)):[]},_n.uniqWith=function(O,B){return B="function"==typeof B?B:e,O&&O.length?hu(O,e,B):[]},_n.unset=function(O,B){return null==O||Hd(O,B)},_n.unzip=Gp,_n.unzipWith=Ch,_n.update=function(O,B,_e){return null==O?O:ud(O,B,wc(_e))},_n.updateWith=function(O,B,_e,gt){return gt="function"==typeof gt?gt:e,null==O?O:ud(O,B,wc(_e),gt)},_n.values=ah,_n.valuesIn=function(O){return null==O?[]:kt(O,Gc(O))},_n.without=f_,_n.words=o1,_n.wrap=function(O,B){return Jd(wc(B),O)},_n.xor=ca,_n.xorBy=Sh,_n.xorWith=Mh,_n.zip=wp,_n.zipObject=function(O,B){return dd(O||[],B||[],ml)},_n.zipObjectDeep=function(O,B){return dd(O||[],B||[],ld)},_n.zipWith=Td,_n.entries=oc,_n.entriesIn=Yh,_n.extend=D_,_n.extendWith=oh,G_(_n,_n),_n.add=Xf,_n.attempt=Y_,_n.camelCase=Og,_n.capitalize=k_,_n.ceil=Kf,_n.clamp=function(O,B,_e){return _e===e&&(_e=B,B=e),_e!==e&&(_e=(_e=Hu(_e))==_e?_e:0),B!==e&&(B=(B=Hu(B))==B?B:0),El(Hu(O),B,_e)},_n.clone=function(O){return p(O,4)},_n.cloneDeep=function(O){return p(O,5)},_n.cloneDeepWith=function(O,B){return p(O,5,B="function"==typeof B?B:e)},_n.cloneWith=function(O,B){return p(O,4,B="function"==typeof B?B:e)},_n.conformsTo=function(O,B){return null==B||N(O,B,dc(B))},_n.deburr=$_,_n.defaultTo=function(O,B){return null==O||O!=O?B:O},_n.divide=Fp,_n.endsWith=function(O,B,_e){O=Sl(O),B=Fc(B);var gt=O.length,un=_e=_e===e?gt:El(ka(_e),0,gt);return(_e-=B.length)>=0&&O.slice(_e,un)==B},_n.eq=Mt,_n.escape=function(O){return(O=Sl(O))&&ht.test(O)?O.replace(Qn,Pr):O},_n.escapeRegExp=function(O){return(O=Sl(O))&&ot.test(O)?O.replace(Ut,"\\$&"):O},_n.every=function(O,B,_e){var gt=ui(O)?Ni:qe;return _e&&Cc(O,B,_e)&&(B=e),gt(O,Rs(B,3))},_n.find=v_,_n.findIndex=Ap,_n.findKey=function(O,B){return Ol(O,Rs(B,3),sr)},_n.findLast=Fm,_n.findLastIndex=Vd,_n.findLastKey=function(O,B){return Ol(O,Rs(B,3),Tr)},_n.floor=kp,_n.forEach=Dh,_n.forEachRight=Jp,_n.forIn=function(O,B){return null==O?O:wn(O,Rs(B,3),Gc)},_n.forInRight=function(O,B){return null==O?O:cr(O,Rs(B,3),Gc)},_n.forOwn=function(O,B){return O&&sr(O,Rs(B,3))},_n.forOwnRight=function(O,B){return O&&Tr(O,Rs(B,3))},_n.get=N_,_n.gt=cn,_n.gte=pr,_n.has=function(O,B){return null!=O&&cu(O,B,ts)},_n.hasIn=P_,_n.head=q,_n.identity=vu,_n.includes=function(O,B,_e,gt){O=Io(O)?O:ah(O),_e=_e&&!gt?ka(_e):0;var un=O.length;return _e<0&&(_e=kn(un+_e,0)),Hh(O)?_e<=un&&O.indexOf(B,_e)>-1:!!un&&Ja(O,B,_e)>-1},_n.indexOf=function(O,B,_e){var gt=null==O?0:O.length;if(!gt)return-1;var un=null==_e?0:ka(_e);return un<0&&(un=kn(gt+un,0)),Ja(O,B,un)},_n.inRange=function(O,B,_e){return B=yf(B),_e===e?(_e=B,B=0):_e=yf(_e),function(O,B,_e){return O>=zn(B,_e)&&O<kn(B,_e)}(O=Hu(O),B,_e)},_n.invoke=Zm,_n.isArguments=Rr,_n.isArray=ui,_n.isArrayBuffer=To,_n.isArrayLike=Io,_n.isArrayLikeObject=os,_n.isBoolean=function(O){return!0===O||!1===O||rc(O)&&Co(O)==ae},_n.isBuffer=_l,_n.isDate=qa,_n.isElement=function(O){return rc(O)&&1===O.nodeType&&!S_(O)},_n.isEmpty=function(O){if(null==O)return!0;if(Io(O)&&(ui(O)||"string"==typeof O||"function"==typeof O.splice||_l(O)||ih(O)||Rr(O)))return!O.length;var B=jl(O);if(B==ar||B==Yn)return!O.size;if(Ou(O))return!Ar(O).length;for(var _e in O)if(Es.call(O,_e))return!1;return!0},_n.isEqual=function(O,B){return rl(O,B)},_n.isEqualWith=function(O,B,_e){var gt=(_e="function"==typeof _e?_e:e)?_e(O,B):e;return gt===e?rl(O,B,e,_e):!!gt},_n.isError=zf,_n.isFinite=function(O){return"number"==typeof O&&en(O)},_n.isFunction=tu,_n.isInteger=vc,_n.isLength=td,_n.isMap=$h,_n.isMatch=function(O,B){return O===B||$s(O,B,gu(B))},_n.isMatchWith=function(O,B,_e){return _e="function"==typeof _e?_e:e,$s(O,B,gu(B),_e)},_n.isNaN=function(O){return $m(O)&&O!=+O},_n.isNative=function(O){if(Hf(O))throw new Ti("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return X(O)},_n.isNil=function(O){return null==O},_n.isNull=function(O){return null===O},_n.isNumber=$m,_n.isObject=Al,_n.isObjectLike=rc,_n.isPlainObject=S_,_n.isRegExp=M_,_n.isSafeInteger=function(O){return vc(O)&&O>=-$e&&O<=$e},_n.isSet=O_,_n.isString=Hh,_n.isSymbol=$u,_n.isTypedArray=ih,_n.isUndefined=function(O){return O===e},_n.isWeakMap=function(O){return rc(O)&&jl(O)==Kn},_n.isWeakSet=function(O){return rc(O)&&"[object WeakSet]"==Co(O)},_n.join=function(O,B){return null==O?"":vn.call(O,B)},_n.kebabCase=Ag,_n.last=qr,_n.lastIndexOf=function(O,B,_e){var gt=null==O?0:O.length;if(!gt)return-1;var un=gt;return _e!==e&&(un=(un=ka(_e))<0?kn(gt+un,0):zn(un,gt-1)),B==B?function(Un,lr,dr){for(var li=dr+1;li--;)if(Un[li]===lr)return li;return li}(O,B,un):dl(O,Il,un,!0)},_n.lowerCase=wg,_n.lowerFirst=Dg,_n.lt=yv,_n.lte=mg,_n.max=function(O){return O&&O.length?De(O,vu,Xo):e},_n.maxBy=function(O,B){return O&&O.length?De(O,Rs(B,2),Xo):e},_n.mean=function(O){return Bl(O,vu)},_n.meanBy=function(O,B){return Bl(O,Rs(B,2))},_n.min=function(O){return O&&O.length?De(O,vu,fs):e},_n.minBy=function(O,B){return O&&O.length?De(O,Rs(B,2),fs):e},_n.stubArray=nu,_n.stubFalse=Ef,_n.stubObject=function(){return{}},_n.stubString=function(){return""},_n.stubTrue=function(){return!0},_n.multiply=W_,_n.nth=function(O,B){return O&&O.length?Gu(O,ka(B)):e},_n.noConflict=function(){return Ca._===this&&(Ca._=qc),this},_n.noop=Jf,_n.now=Vf,_n.pad=function(O,B,_e){O=Sl(O);var gt=(B=ka(B))?ft(O):0;if(!B||gt>=B)return O;var un=(B-gt)/2;return _u(Be(un),_e)+O+_u(Re(un),_e)},_n.padEnd=function(O,B,_e){O=Sl(O);var gt=(B=ka(B))?ft(O):0;return B&&gt<B?O+_u(B-gt,_e):O},_n.padStart=function(O,B,_e){O=Sl(O);var gt=(B=ka(B))?ft(O):0;return B&&gt<B?_u(B-gt,_e)+O:O},_n.parseInt=function(O,B,_e){return _e||null==B?B=0:B&&(B=+B),kr(Sl(O).replace(Nn,""),B||0)},_n.random=function(O,B,_e){if(_e&&"boolean"!=typeof _e&&Cc(O,B,_e)&&(B=_e=e),_e===e&&("boolean"==typeof B?(_e=B,B=e):"boolean"==typeof O&&(_e=O,O=e)),O===e&&B===e?(O=0,B=1):(O=yf(O),B===e?(B=O,O=0):B=yf(B)),O>B){var gt=O;O=B,B=gt}if(_e||O%1||B%1){var un=Gr();return zn(O+un*(B-O+xa("1e-"+((un+"").length-1))),B)}return Od(O,B)},_n.reduce=function(O,B,_e){var gt=ui(O)?Ea:vs,un=arguments.length<3;return gt(O,Rs(B,4),_e,un,de)},_n.reduceRight=function(O,B,_e){var gt=ui(O)?ul:vs,un=arguments.length<3;return gt(O,Rs(B,4),_e,un,ve)},_n.repeat=function(O,B,_e){return B=(_e?Cc(O,B,_e):B===e)?1:ka(B),tf(Sl(O),B)},_n.replace=function(){var O=arguments,B=Sl(O[0]);return O.length<3?B:B.replace(O[1],O[2])},_n.result=function(O,B,_e){var gt=-1,un=(B=Yc(B,O)).length;for(un||(un=1,O=e);++gt<un;){var Vn=null==O?e:O[Sc(B[gt])];Vn===e&&(gt=un,Vn=_e),O=tu(Vn)?Vn.call(O):Vn}return O},_n.round=Vg,_n.runInContext=Un,_n.sample=function(O){return(ui(O)?xl:Ic)(O)},_n.size=function(O){if(null==O)return 0;if(Io(O))return Hh(O)?ft(O):O.length;var B=jl(O);return B==ar||B==Yn?O.size:Ar(O).length},_n.snakeCase=Tv,_n.some=function(O,B,_e){var gt=ui(O)?Ma:Pf;return _e&&Cc(O,B,_e)&&(B=e),gt(O,Rs(B,3))},_n.sortedIndex=function(O,B){return cd(O,B)},_n.sortedIndexBy=function(O,B,_e){return rf(O,B,Rs(_e,2))},_n.sortedIndexOf=function(O,B){var _e=null==O?0:O.length;if(_e){var gt=cd(O,B);if(gt<_e&&Mt(O[gt],B))return gt}return-1},_n.sortedLastIndex=function(O,B){return cd(O,B,!0)},_n.sortedLastIndexBy=function(O,B,_e){return rf(O,B,Rs(_e,2),!0)},_n.sortedLastIndexOf=function(O,B){if(null!=O&&O.length){var gt=cd(O,B,!0)-1;if(Mt(O[gt],B))return gt}return-1},_n.startCase=r1,_n.startsWith=function(O,B,_e){return O=Sl(O),_e=null==_e?0:El(ka(_e),0,O.length),B=Fc(B),O.slice(_e,_e+B.length)==B},_n.subtract=Gg,_n.sum=function(O){return O&&O.length?Vo(O,vu):0},_n.sumBy=function(O,B){return O&&O.length?Vo(O,Rs(B,2)):0},_n.template=function(O,B,_e){var gt=_n.templateSettings;_e&&Cc(O,B,_e)&&(B=e),O=Sl(O),B=oh({},B,gt,ip);var Lr,Xr,un=oh({},B.imports,gt.imports,ip),Vn=dc(un),gr=kt(un,Vn),Qi=0,Xi=B.interpolate||Kr,ao="__p += '",qo=uo((B.escape||Kr).source+"|"+Xi.source+"|"+(Xi===nt?br:Kr).source+"|"+(B.evaluate||Kr).source+"|$","g"),Ss="//# sourceURL="+(Es.call(B,"sourceURL")?(B.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Do+"]")+"\n";O.replace(qo,function(ta,Xa,cl,rd,Uu,id){return cl||(cl=rd),ao+=O.slice(Qi,id).replace(ei,mi),Xa&&(Lr=!0,ao+="' +\n__e("+Xa+") +\n'"),Uu&&(Xr=!0,ao+="';\n"+Uu+";\n__p += '"),cl&&(ao+="' +\n((__t = ("+cl+")) == null ? '' : __t) +\n'"),Qi=id+ta.length,ta}),ao+="';\n";var Js=Es.call(B,"variable")&&B.variable;if(Js){if(_r.test(Js))throw new Ti("Invalid `variable` option passed into `_.template`")}else ao="with (obj) {\n"+ao+"\n}\n";ao=(Xr?ao.replace(yn,""):ao).replace(et,"$1").replace(jt,"$1;"),ao="function("+(Js||"obj")+") {\n"+(Js?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(Lr?", __e = _.escape":"")+(Xr?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+ao+"return __p\n}";var Ia=Y_(function(){return Ao(Vn,Ss+"return "+ao).apply(e,gr)});if(Ia.source=ao,zf(Ia))throw Ia;return Ia},_n.times=function(O,B){if((O=ka(O))<1||O>$e)return[];var _e=Et,gt=zn(O,Et);B=Rs(B),O-=Et;for(var un=ja(gt,B);++_e<O;)B(_e);return un},_n.toFinite=yf,_n.toInteger=ka,_n.toLength=Hm,_n.toLower=function(O){return Sl(O).toLowerCase()},_n.toNumber=Hu,_n.toSafeInteger=function(O){return O?El(ka(O),-$e,$e):0===O?O:0},_n.toString=Sl,_n.toUpper=function(O){return Sl(O).toUpperCase()},_n.trim=function(O,B,_e){if((O=Sl(O))&&(_e||B===e))return ze(O);if(!O||!(B=Fc(B)))return O;var gt=Ft(O),un=Ft(B);return Su(gt,ur(gt,un),gn(gt,un)+1).join("")},_n.trimEnd=function(O,B,_e){if((O=Sl(O))&&(_e||B===e))return O.slice(0,Bt(O)+1);if(!O||!(B=Fc(B)))return O;var gt=Ft(O);return Su(gt,0,gn(gt,Ft(B))+1).join("")},_n.trimStart=function(O,B,_e){if((O=Sl(O))&&(_e||B===e))return O.replace(Nn,"");if(!O||!(B=Fc(B)))return O;var gt=Ft(O);return Su(gt,ur(gt,Ft(B))).join("")},_n.truncate=function(O,B){var _e=30,gt="...";if(Al(B)){var un="separator"in B?B.separator:un;_e="length"in B?ka(B.length):_e,gt="omission"in B?Fc(B.omission):gt}var Vn=(O=Sl(O)).length;if(si(O)){var gr=Ft(O);Vn=gr.length}if(_e>=Vn)return O;var Lr=_e-ft(gt);if(Lr<1)return gt;var Xr=gr?Su(gr,0,Lr).join(""):O.slice(0,Lr);if(un===e)return Xr+gt;if(gr&&(Lr+=Xr.length-Lr),M_(un)){if(O.slice(Lr).search(un)){var Qi,Xi=Xr;for(un.global||(un=uo(un.source,Sl(Jn.exec(un))+"g")),un.lastIndex=0;Qi=un.exec(Xi);)var ao=Qi.index;Xr=Xr.slice(0,ao===e?Lr:ao)}}else if(O.indexOf(Fc(un),Lr)!=Lr){var qo=Xr.lastIndexOf(un);qo>-1&&(Xr=Xr.slice(0,qo))}return Xr+gt},_n.unescape=function(O){return(O=Sl(O))&&Ir.test(O)?O.replace(hn,In):O},_n.uniqueId=function(O){var B=++Ll;return Sl(O)+B},_n.upperCase=Ov,_n.upperFirst=Ig,_n.each=Dh,_n.eachRight=Jp,_n.first=q,G_(_n,function(){var O={};return sr(_n,function(B,_e){Es.call(_n.prototype,_e)||(O[_e]=B)}),O}(),{chain:!1}),_n.VERSION="4.17.21",Wt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(O){_n[O].placeholder=_n}),Wt(["drop","take"],function(O,B){lo.prototype[O]=function(_e){_e=_e===e?1:kn(ka(_e),0);var gt=this.__filtered__&&!B?new lo(this):this.clone();return gt.__filtered__?gt.__takeCount__=zn(_e,gt.__takeCount__):gt.__views__.push({size:zn(_e,Et),type:O+(gt.__dir__<0?"Right":"")}),gt},lo.prototype[O+"Right"]=function(_e){return this.reverse()[O](_e).reverse()}}),Wt(["filter","map","takeWhile"],function(O,B){var _e=B+1,gt=1==_e||3==_e;lo.prototype[O]=function(un){var Vn=this.clone();return Vn.__iteratees__.push({iteratee:Rs(un,3),type:_e}),Vn.__filtered__=Vn.__filtered__||gt,Vn}}),Wt(["head","last"],function(O,B){var _e="take"+(B?"Right":"");lo.prototype[O]=function(){return this[_e](1).value()[0]}}),Wt(["initial","tail"],function(O,B){var _e="drop"+(B?"":"Right");lo.prototype[O]=function(){return this.__filtered__?new lo(this):this[_e](1)}}),lo.prototype.compact=function(){return this.filter(vu)},lo.prototype.find=function(O){return this.filter(O).head()},lo.prototype.findLast=function(O){return this.reverse().find(O)},lo.prototype.invokeMap=Is(function(O,B){return"function"==typeof O?new lo(this):this.map(function(_e){return ya(_e,O,B)})}),lo.prototype.reject=function(O){return this.filter(Ku(Rs(O)))},lo.prototype.slice=function(O,B){O=ka(O);var _e=this;return _e.__filtered__&&(O>0||B<0)?new lo(_e):(O<0?_e=_e.takeRight(-O):O&&(_e=_e.drop(O)),B!==e&&(_e=(B=ka(B))<0?_e.dropRight(-B):_e.take(B-O)),_e)},lo.prototype.takeRightWhile=function(O){return this.reverse().takeWhile(O).reverse()},lo.prototype.toArray=function(){return this.take(Et)},sr(lo.prototype,function(O,B){var _e=/^(?:filter|find|map|reject)|While$/.test(B),gt=/^(?:head|last)$/.test(B),un=_n[gt?"take"+("last"==B?"Right":""):B],Vn=gt||/^find/.test(B);!un||(_n.prototype[B]=function(){var gr=this.__wrapped__,Lr=gt?[1]:arguments,Xr=gr instanceof lo,Qi=Lr[0],Xi=Xr||ui(gr),ao=function(Xa){var cl=un.apply(_n,Zo([Xa],Lr));return gt&&qo?cl[0]:cl};Xi&&_e&&"function"==typeof Qi&&1!=Qi.length&&(Xr=Xi=!1);var qo=this.__chain__,Ss=!!this.__actions__.length,Js=Vn&&!qo,Ia=Xr&&!Ss;if(!Vn&&Xi){gr=Ia?gr:new lo(this);var ta=O.apply(gr,Lr);return ta.__actions__.push({func:dp,args:[ao],thisArg:e}),new Oa(ta,qo)}return Js&&Ia?O.apply(this,Lr):(ta=this.thru(ao),Js?gt?ta.value()[0]:ta.value():ta)})}),Wt(["pop","push","shift","sort","splice","unshift"],function(O){var B=Zi[O],_e=/^(?:push|sort|unshift)$/.test(O)?"tap":"thru",gt=/^(?:pop|shift)$/.test(O);_n.prototype[O]=function(){var un=arguments;if(gt&&!this.__chain__){var Vn=this.value();return B.apply(ui(Vn)?Vn:[],un)}return this[_e](function(gr){return B.apply(ui(gr)?gr:[],un)})}}),sr(lo.prototype,function(O,B){var _e=_n[B];if(_e){var gt=_e.name+"";Es.call(oo,gt)||(oo[gt]=[]),oo[gt].push({name:B,func:_e})}}),oo[zl(e,2).name]=[{name:"wrapper",func:e}],lo.prototype.clone=function(){var O=new lo(this.__wrapped__);return O.__actions__=_i(this.__actions__),O.__dir__=this.__dir__,O.__filtered__=this.__filtered__,O.__iteratees__=_i(this.__iteratees__),O.__takeCount__=this.__takeCount__,O.__views__=_i(this.__views__),O},lo.prototype.reverse=function(){if(this.__filtered__){var O=new lo(this);O.__dir__=-1,O.__filtered__=!0}else(O=this.clone()).__dir__*=-1;return O},lo.prototype.value=function(){var O=this.__wrapped__.value(),B=this.__dir__,_e=ui(O),gt=B<0,un=_e?O.length:0,Vn=function(O,B,_e){for(var gt=-1,un=_e.length;++gt<un;){var Vn=_e[gt],gr=Vn.size;switch(Vn.type){case"drop":O+=gr;break;case"dropRight":B-=gr;break;case"take":B=zn(B,O+gr);break;case"takeRight":O=kn(O,B-gr)}}return{start:O,end:B}}(0,un,this.__views__),gr=Vn.start,Lr=Vn.end,Xr=Lr-gr,Qi=gt?Lr:gr-1,Xi=this.__iteratees__,ao=Xi.length,qo=0,Ss=zn(Xr,this.__takeCount__);if(!_e||!gt&&un==Xr&&Ss==Xr)return If(O,this.__actions__);var Js=[];e:for(;Xr--&&qo<Ss;){for(var Ia=-1,ta=O[Qi+=B];++Ia<ao;){var Xa=Xi[Ia],rd=Xa.type,Uu=(0,Xa.iteratee)(ta);if(2==rd)ta=Uu;else if(!Uu){if(1==rd)continue e;break e}}Js[qo++]=ta}return Js},_n.prototype.at=p_,_n.prototype.chain=function(){return zp(this)},_n.prototype.commit=function(){return new Oa(this.value(),this.__chain__)},_n.prototype.next=function(){this.__values__===e&&(this.__values__=w_(this.value()));var O=this.__index__>=this.__values__.length;return{done:O,value:O?e:this.__values__[this.__index__++]}},_n.prototype.plant=function(O){for(var B,_e=this;_e instanceof Pa;){var gt=jf(_e);gt.__index__=0,gt.__values__=e,B?un.__wrapped__=gt:B=gt;var un=gt;_e=_e.__wrapped__}return un.__wrapped__=O,B},_n.prototype.reverse=function(){var O=this.__wrapped__;if(O instanceof lo){var B=O;return this.__actions__.length&&(B=new lo(this)),(B=B.reverse()).__actions__.push({func:dp,args:[ti],thisArg:e}),new Oa(B,this.__chain__)}return this.thru(ti)},_n.prototype.toJSON=_n.prototype.valueOf=_n.prototype.value=function(){return If(this.__wrapped__,this.__actions__)},_n.prototype.first=_n.prototype.head,we&&(_n.prototype[we]=function(){return this}),_n}();Ca._=zr,(t=function(){return zr}.call(g,o,g,Ge))!==e&&(Ge.exports=t)}.call(this)},26431:function(Ge,g,o){!function(t){"use strict";t.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(s){return/^nm$/i.test(s)},meridiem:function(s,a,l){return s<12?l?"vm":"VM":l?"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\xf4re 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(s){return s+(1===s||8===s||s>=20?"ste":"de")},week:{dow:1,doy:4}})}(o(16738))},1616:function(Ge,g,o){!function(t){"use strict";var e=function(h){return 0===h?0:1===h?1:2===h?2:h%100>=3&&h%100<=10?3:h%100>=11?4:5},s={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},a=function(h){return function(_,m,b,C){var D=e(_),x=s[h][e(_)];return 2===D&&(x=x[m?0:1]),x.replace(/%d/i,_)}},l=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar-dz",{months:l,monthsShort:l,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(h){return"\u0645"===h},meridiem:function(h,_,m){return h<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},postformat:function(h){return h.replace(/,/g,"\u060c")},week:{dow:0,doy:4}})}(o(16738))},9759:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}})}(o(16738))},43160:function(Ge,g,o){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},s=function(_){return 0===_?0:1===_?1:2===_?2:_%100>=3&&_%100<=10?3:_%100>=11?4:5},a={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},l=function(_){return function(m,b,C,D){var x=s(m),j=a[_][s(m)];return 2===x&&(j=j[b?0:1]),j.replace(/%d/i,m)}},u=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar-ly",{months:u,monthsShort:u,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(_){return"\u0645"===_},meridiem:function(_,m,b){return _<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:l("s"),ss:l("s"),m:l("m"),mm:l("m"),h:l("h"),hh:l("h"),d:l("d"),dd:l("d"),M:l("M"),MM:l("M"),y:l("y"),yy:l("y")},preparse:function(_){return _.replace(/\u060c/g,",")},postformat:function(_){return _.replace(/\d/g,function(m){return e[m]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(o(16738))},62551:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}(o(16738))},79989:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},s={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};t.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:/\u0635|\u0645/,isPM:function(l){return"\u0645"===l},meridiem:function(l,u,h){return l<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(l){return l.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(u){return s[u]}).replace(/\u060c/g,",")},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}})}(o(16738))},6962:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}(o(16738))},81286:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},s={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a=function(m){return 0===m?0:1===m?1:2===m?2:m%100>=3&&m%100<=10?3:m%100>=11?4:5},l={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},u=function(m){return function(b,C,D,x){var j=a(b),H=l[m][a(b)];return 2===j&&(H=H[C?0:1]),H.replace(/%d/i,b)}},h=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar",{months:h,monthsShort:h,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(m){return"\u0645"===m},meridiem:function(m,b,C){return m<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:u("s"),ss:u("s"),m:u("m"),mm:u("m"),h:u("h"),hh:u("h"),d:u("d"),dd:u("d"),M:u("M"),MM:u("M"),y:u("y"),yy:u("y")},preparse:function(m){return m.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(b){return s[b]}).replace(/\u060c/g,",")},postformat:function(m){return m.replace(/\d/g,function(b){return e[b]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(o(16738))},15887:function(Ge,g,o){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};t.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\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".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\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(a){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(a)},meridiem:function(a,l,u){return a<4?"gec\u0259":a<12?"s\u0259h\u0259r":a<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(a){if(0===a)return a+"-\u0131nc\u0131";var l=a%10;return a+(e[l]||e[a%100-l]||e[a>=100?100:null])},week:{dow:1,doy:7}})}(o(16738))},14572:function(Ge,g,o){!function(t){"use strict";function s(l,u,h){return"m"===h?u?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===h?u?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":l+" "+function(l,u){var h=l.split("_");return u%10==1&&u%100!=11?h[0]:u%10>=2&&u%10<=4&&(u%100<10||u%100>=20)?h[1]:h[2]}({ss:u?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:u?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:u?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[h],+l)}t.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:s,mm:s,h:s,hh:s,d:"\u0434\u0437\u0435\u043d\u044c",dd:s,M:"\u043c\u0435\u0441\u044f\u0446",MM:s,y:"\u0433\u043e\u0434",yy:s},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(l){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(l)},meridiem:function(l,u,h){return l<4?"\u043d\u043e\u0447\u044b":l<12?"\u0440\u0430\u043d\u0456\u0446\u044b":l<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(l,u){switch(u){case"M":case"d":case"DDD":case"w":case"W":return l%10!=2&&l%10!=3||l%100==12||l%100==13?l+"-\u044b":l+"-\u0456";case"D":return l+"-\u0433\u0430";default:return l}},week:{dow:1,doy:7}})}(o(16738))},3276:function(Ge,g,o){!function(t){"use strict";t.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".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:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(s){var a=s%10,l=s%100;return 0===s?s+"-\u0435\u0432":0===l?s+"-\u0435\u043d":l>10&&l<20?s+"-\u0442\u0438":1===a?s+"-\u0432\u0438":2===a?s+"-\u0440\u0438":7===a||8===a?s+"-\u043c\u0438":s+"-\u0442\u0438"},week:{dow:1,doy:7}})}(o(16738))},93344:function(Ge,g,o){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_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\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(o(16738))},83990:function(Ge,g,o){!function(t){"use strict";var e={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},s={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};t.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(l){return l.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u09b0\u09be\u09a4"===u?l<4?l:l+12:"\u09ad\u09cb\u09b0"===u||"\u09b8\u0995\u09be\u09b2"===u?l:"\u09a6\u09c1\u09aa\u09c1\u09b0"===u?l>=3?l:l+12:"\u09ac\u09bf\u0995\u09be\u09b2"===u||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===u?l+12:void 0},meridiem:function(l,u,h){return l<4?"\u09b0\u09be\u09a4":l<6?"\u09ad\u09cb\u09b0":l<12?"\u09b8\u0995\u09be\u09b2":l<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":l<18?"\u09ac\u09bf\u0995\u09be\u09b2":l<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(o(16738))},58985:function(Ge,g,o){!function(t){"use strict";var e={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},s={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};t.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(l){return l.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u09b0\u09be\u09a4"===u&&l>=4||"\u09a6\u09c1\u09aa\u09c1\u09b0"===u&&l<5||"\u09ac\u09bf\u0995\u09be\u09b2"===u?l+12:l},meridiem:function(l,u,h){return l<4?"\u09b0\u09be\u09a4":l<10?"\u09b8\u0995\u09be\u09b2":l<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":l<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(o(16738))},94391:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},s={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};t.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".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:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(l){return l.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===u&&l>=4||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===u&&l<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===u?l+12:l},meridiem:function(l,u,h){return l<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":l<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":l<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":l<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}})}(o(16738))},46728:function(Ge,g,o){!function(t){"use strict";function e(H,z,U){return H+" "+function(H,z){return 2===z?function(H){var z={m:"v",b:"v",d:"z"};return void 0===z[H.charAt(0)]?H:z[H.charAt(0)]+H.substring(1)}(H):H}({mm:"munutenn",MM:"miz",dd:"devezh"}[U],H)}function a(H){return H>9?a(H%10):H}var h=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],_=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,x=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];t.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:x,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:x,monthsRegex:_,monthsShortRegex:_,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:h,longMonthsParse:h,shortMonthsParse:h,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(H){switch(a(H)){case 1:case 3:case 4:case 5:case 9:return H+" bloaz";default:return H+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(H){return H+(1===H?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(H){return"g.m."===H},meridiem:function(H,z,U){return H<12?"a.m.":"g.m."}})}(o(16738))},5536:function(Ge,g,o){!function(t){"use strict";function e(a,l,u){var h=a+" ";switch(u){case"ss":return h+(1===a?"sekunda":2===a||3===a||4===a?"sekunde":"sekundi");case"m":return l?"jedna minuta":"jedne minute";case"mm":return h+(1===a?"minuta":2===a||3===a||4===a?"minute":"minuta");case"h":return l?"jedan sat":"jednog sata";case"hh":return h+(1===a?"sat":2===a||3===a||4===a?"sata":"sati");case"dd":return h+(1===a?"dan":"dana");case"MM":return h+(1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci");case"yy":return h+(1===a?"godina":2===a||3===a||4===a?"godine":"godina")}}t.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},41043:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_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\xe7_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\xe0 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\xed %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|\xe8|a)/,ordinal:function(s,a){var l=1===s?"r":2===s?"n":3===s?"r":4===s?"t":"\xe8";return("w"===a||"W"===a)&&(l="a"),s+l},week:{dow:1,doy:4}})}(o(16738))},70420:function(Ge,g,o){!function(t){"use strict";var e="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),s="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),a=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],l=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function u(m){return m>1&&m<5&&1!=~~(m/10)}function h(m,b,C,D){var x=m+" ";switch(C){case"s":return b||D?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return b||D?x+(u(m)?"sekundy":"sekund"):x+"sekundami";case"m":return b?"minuta":D?"minutu":"minutou";case"mm":return b||D?x+(u(m)?"minuty":"minut"):x+"minutami";case"h":return b?"hodina":D?"hodinu":"hodinou";case"hh":return b||D?x+(u(m)?"hodiny":"hodin"):x+"hodinami";case"d":return b||D?"den":"dnem";case"dd":return b||D?x+(u(m)?"dny":"dn\xed"):x+"dny";case"M":return b||D?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return b||D?x+(u(m)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):x+"m\u011bs\xedci";case"y":return b||D?"rok":"rokem";case"yy":return b||D?x+(u(m)?"roky":"let"):x+"lety"}}t.defineLocale("cs",{months:e,monthsShort:s,monthsRegex:l,monthsShortRegex:l,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:h,ss:h,m:h,mm:h,h,hh:h,d:h,dd:h,M:h,MM:h,y:h,yy:h},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},33513:function(Ge,g,o){!function(t){"use strict";t.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(s){return s+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(s)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(s)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}})}(o(16738))},6771:function(Ge,g,o){!function(t){"use strict";t.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 \xf4l",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(s){var l="";return s>20?l=40===s||50===s||60===s||80===s||100===s?"fed":"ain":s>0&&(l=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][s]),s+l},week:{dow:1,doy:4}})}(o(16738))},47978:function(Ge,g,o){!function(t){"use strict";t.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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 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\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},25204:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return l?_[u][0]:_[u][1]}t.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_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:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,w:e,ww:"%d Wochen",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},2653:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return l?_[u][0]:_[u][1]}t.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,w:e,ww:"%d Wochen",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},46061:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return l?_[u][0]:_[u][1]}t.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,w:e,ww:"%d Wochen",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},85:function(Ge,g,o){!function(t){"use strict";var e=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],s=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];t.defineLocale("dv",{months:e,monthsShort:e,weekdays:s,weekdaysShort:s,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".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:/\u0789\u0786|\u0789\u078a/,isPM:function(l){return"\u0789\u078a"===l},meridiem:function(l,u,h){return l<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(l){return l.replace(/\u060c/g,",")},postformat:function(l){return l.replace(/,/g,"\u060c")},week:{dow:7,doy:12}})}(o(16738))},8579:function(Ge,g,o){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(a,l){return a?"string"==typeof l&&/D/.test(l.substring(0,l.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(a,l,u){return a>11?u?"\u03bc\u03bc":"\u039c\u039c":u?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(a){return"\u03bc"===(a+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/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:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,l){var u=this._calendarEl[a],h=l&&l.hours();return function(a){return"undefined"!=typeof Function&&a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}(u)&&(u=u.apply(l)),u.replace("{}",h%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}})}(o(16738))},25724:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:0,doy:4}})}(o(16738))},10525:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})}(o(16738))},52847:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},67216:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},39305:function(Ge,g,o){!function(t){"use strict";t.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",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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})}(o(16738))},73364:function(Ge,g,o){!function(t){"use strict";t.defineLocale("en-in",{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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:0,doy:6}})}(o(16738))},79130:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},11161:function(Ge,g,o){!function(t){"use strict";t.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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},50802:function(Ge,g,o){!function(t){"use strict";t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(s){return"p"===s.charAt(0).toLowerCase()},meridiem:function(s,a,l){return s>11?l?"p.t.m.":"P.T.M.":l?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(o(16738))},45551:function(Ge,g,o){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),s="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],l=/^(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;t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},75615:function(Ge,g,o){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),s="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],l=/^(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;t.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"})}(o(16738))},64790:function(Ge,g,o){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),s="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],l=/^(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;t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}})}(o(16738))},40328:function(Ge,g,o){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),s="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],l=/^(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;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"})}(o(16738))},96389:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[a+"sekundi",a+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[a+" minuti",a+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[a+" tunni",a+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[a+" kuu",a+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[a+" aasta",a+" aastat"]};return l?_[u][2]?_[u][2]:_[u][1]:h?_[u][0]:_[u][1]}t.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".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\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d p\xe4eva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},52961:function(Ge,g,o){!function(t){"use strict";t.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}})}(o(16738))},26151:function(Ge,g,o){!function(t){"use strict";var e={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},s={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};t.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".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:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(l){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(l)},meridiem:function(l,u,h){return l<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(l){return l.replace(/[\u06f0-\u06f9]/g,function(u){return s[u]}).replace(/\u060c/g,",")},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}})}(o(16738))},7997:function(Ge,g,o){!function(t){"use strict";var e="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),s=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",e[7],e[8],e[9]];function a(h,_,m,b){var C="";switch(m){case"s":return b?"muutaman sekunnin":"muutama sekunti";case"ss":C=b?"sekunnin":"sekuntia";break;case"m":return b?"minuutin":"minuutti";case"mm":C=b?"minuutin":"minuuttia";break;case"h":return b?"tunnin":"tunti";case"hh":C=b?"tunnin":"tuntia";break;case"d":return b?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":C=b?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return b?"kuukauden":"kuukausi";case"MM":C=b?"kuukauden":"kuukautta";break;case"y":return b?"vuoden":"vuosi";case"yy":C=b?"vuoden":"vuotta"}return function(h,_){return h<10?_?s[h]:e[h]:h}(h,b)+" "+C}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_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\xe4n\xe4\xe4n] [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\xe4\xe4st\xe4",past:"%s sitten",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}})}(o(16738))},58898:function(Ge,g,o){!function(t){"use strict";t.defineLocale("fil",{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(s){return s},week:{dow:1,doy:4}})}(o(16738))},37779:function(Ge,g,o){!function(t){"use strict";t.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_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\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_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:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},3287:function(Ge,g,o){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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(s,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return s+(1===s?"er":"e");case"w":case"W":return s+(1===s?"re":"e")}}})}(o(16738))},38867:function(Ge,g,o){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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(s,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return s+(1===s?"er":"e");case"w":case"W":return s+(1===s?"re":"e")}},week:{dow:1,doy:4}})}(o(16738))},28174:function(Ge,g,o){!function(t){"use strict";var a=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,l=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i];t.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:l,longMonthsParse:l,shortMonthsParse:l,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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(h,_){switch(_){case"D":return h+(1===h?"er":"");default:case"M":case"Q":case"DDD":case"d":return h+(1===h?"er":"e");case"w":case"W":return h+(1===h?"re":"e")}},week:{dow:1,doy:4}})}(o(16738))},50452:function(Ge,g,o){!function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),s="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(l,u){return l?/-MMM-/.test(u)?s[l.month()]:e[l.month()]:e},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:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",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(l){return l+(1===l||8===l||l>=20?"ste":"de")},week:{dow:1,doy:4}})}(o(16738))},45014:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],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\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(_){return _+(1===_?"d":_%10==2?"na":"mh")},week:{dow:1,doy:4}})}(o(16738))},74127:function(Ge,g,o){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],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\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 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\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(_){return _+(1===_?"d":_%10==2?"na":"mh")},week:{dow:1,doy:4}})}(o(16738))},72124:function(Ge,g,o){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".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()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(s){return 0===s.indexOf("un")?"n"+s:"en "+s},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},6444:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[a+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",a+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[a+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",a+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[a+" \u0935\u0930\u093e\u0902\u0928\u0940",a+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[a+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",a+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[a+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",a+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[a+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",a+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return h?_[u][0]:_[u][1]}t.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(a,l){switch(l){case"D":return a+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return a}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(a,l){return 12===a&&(a=0),"\u0930\u093e\u0924\u0940"===l?a<4?a:a+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===l?a:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===l?a>12?a:a+12:"\u0938\u093e\u0902\u091c\u0947"===l?a+12:void 0},meridiem:function(a,l,u){return a<4?"\u0930\u093e\u0924\u0940":a<12?"\u0938\u0915\u093e\u0933\u0940\u0902":a<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":a<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}})}(o(16738))},37953:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _={s:["thoddea sekondamni","thodde sekond"],ss:[a+" sekondamni",a+" sekond"],m:["eka mintan","ek minut"],mm:[a+" mintamni",a+" mintam"],h:["eka voran","ek vor"],hh:[a+" voramni",a+" voram"],d:["eka disan","ek dis"],dd:[a+" disamni",a+" dis"],M:["eka mhoinean","ek mhoino"],MM:[a+" mhoineamni",a+" mhoine"],y:["eka vorsan","ek voros"],yy:[a+" vorsamni",a+" vorsam"]};return h?_[u][0]:_[u][1]}t.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(a,l){switch(l){case"D":return a+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return a}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(a,l){return 12===a&&(a=0),"rati"===l?a<4?a:a+12:"sokallim"===l?a:"donparam"===l?a>12?a:a+12:"sanje"===l?a+12:void 0},meridiem:function(a,l,u){return a<4?"rati":a<12?"sokallim":a<16?"donparam":a<20?"sanje":"rati"}})}(o(16738))},76604:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},s={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};t.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(l){return l.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u0ab0\u0abe\u0aa4"===u?l<4?l:l+12:"\u0ab8\u0ab5\u0abe\u0ab0"===u?l:"\u0aac\u0aaa\u0acb\u0ab0"===u?l>=10?l:l+12:"\u0ab8\u0abe\u0a82\u0a9c"===u?l+12:void 0},meridiem:function(l,u,h){return l<4?"\u0ab0\u0abe\u0aa4":l<10?"\u0ab8\u0ab5\u0abe\u0ab0":l<17?"\u0aac\u0aaa\u0acb\u0ab0":l<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}})}(o(16738))},1222:function(Ge,g,o){!function(t){"use strict";t.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]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:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(s){return 2===s?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":s+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(s){return 2===s?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":s+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(s){return 2===s?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":s+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(s){return 2===s?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":s%10==0&&10!==s?s+" \u05e9\u05e0\u05d4":s+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(s){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(s)},meridiem:function(s,a,l){return s<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":s<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":s<12?l?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":s<18?l?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}})}(o(16738))},74235:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},s={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},a=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];t.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:a,longMonthsParse:a,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(h){return h.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(_){return s[_]})},postformat:function(h){return h.replace(/\d/g,function(_){return e[_]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(h,_){return 12===h&&(h=0),"\u0930\u093e\u0924"===_?h<4?h:h+12:"\u0938\u0941\u092c\u0939"===_?h:"\u0926\u094b\u092a\u0939\u0930"===_?h>=10?h:h+12:"\u0936\u093e\u092e"===_?h+12:void 0},meridiem:function(h,_,m){return h<4?"\u0930\u093e\u0924":h<10?"\u0938\u0941\u092c\u0939":h<17?"\u0926\u094b\u092a\u0939\u0930":h<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(o(16738))},622:function(Ge,g,o){!function(t){"use strict";function e(a,l,u){var h=a+" ";switch(u){case"ss":return h+(1===a?"sekunda":2===a||3===a||4===a?"sekunde":"sekundi");case"m":return l?"jedna minuta":"jedne minute";case"mm":return h+(1===a?"minuta":2===a||3===a||4===a?"minute":"minuta");case"h":return l?"jedan sat":"jednog sata";case"hh":return h+(1===a?"sat":2===a||3===a||4===a?"sata":"sati");case"dd":return h+(1===a?"dan":"dana");case"MM":return h+(1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci");case"yy":return h+(1===a?"godina":2===a||3===a||4===a?"godine":"godina")}}t.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do 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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},37735:function(Ge,g,o){!function(t){"use strict";var e="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function s(u,h,_,m){var b=u;switch(_){case"s":return m||h?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return b+(m||h)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(m||h?" perc":" perce");case"mm":return b+(m||h?" perc":" perce");case"h":return"egy"+(m||h?" \xf3ra":" \xf3r\xe1ja");case"hh":return b+(m||h?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(m||h?" nap":" napja");case"dd":return b+(m||h?" nap":" napja");case"M":return"egy"+(m||h?" h\xf3nap":" h\xf3napja");case"MM":return b+(m||h?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(m||h?" \xe9v":" \xe9ve");case"yy":return b+(m||h?" \xe9v":" \xe9ve")}return""}function a(u){return(u?"":"[m\xfalt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_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(u){return"u"===u.charAt(1).toLowerCase()},meridiem:function(u,h,_){return u<12?!0===_?"de":"DE":!0===_?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%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}})}(o(16738))},90402:function(Ge,g,o){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(s){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(s)},meridiem:function(s){return s<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":s<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":s<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(s,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===s?s+"-\u056b\u0576":s+"-\u0580\u0564";default:return s}},week:{dow:1,doy:7}})}(o(16738))},59187:function(Ge,g,o){!function(t){"use strict";t.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(s,a){return 12===s&&(s=0),"pagi"===a?s:"siang"===a?s>=11?s:s+12:"sore"===a||"malam"===a?s+12:void 0},meridiem:function(s,a,l){return s<11?"pagi":s<15?"siang":s<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:0,doy:6}})}(o(16738))},30536:function(Ge,g,o){!function(t){"use strict";function e(l){return l%100==11||l%10!=1}function s(l,u,h,_){var m=l+" ";switch(h){case"s":return u||_?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return e(l)?m+(u||_?"sek\xfandur":"sek\xfandum"):m+"sek\xfanda";case"m":return u?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return e(l)?m+(u||_?"m\xedn\xfatur":"m\xedn\xfatum"):u?m+"m\xedn\xfata":m+"m\xedn\xfatu";case"hh":return e(l)?m+(u||_?"klukkustundir":"klukkustundum"):m+"klukkustund";case"d":return u?"dagur":_?"dag":"degi";case"dd":return e(l)?u?m+"dagar":m+(_?"daga":"d\xf6gum"):u?m+"dagur":m+(_?"dag":"degi");case"M":return u?"m\xe1nu\xf0ur":_?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return e(l)?u?m+"m\xe1nu\xf0ir":m+(_?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):u?m+"m\xe1nu\xf0ur":m+(_?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return u||_?"\xe1r":"\xe1ri";case"yy":return e(l)?m+(u||_?"\xe1r":"\xe1rum"):m+(u||_?"\xe1r":"\xe1ri")}}t.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_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:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s,ss:s,m:s,mm:s,h:"klukkustund",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}})}(o(16738))},94667:function(Ge,g,o){!function(t){"use strict";t.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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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(s){return(/^[0-9].+$/.test(s)?"tra":"in")+" "+s},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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},35007:function(Ge,g,o){!function(t){"use strict";t.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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",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",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},62093:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(s,a){return"\u5143"===a[1]?1:parseInt(a[1]||s,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(s){return"\u5348\u5f8c"===s},meridiem:function(s,a,l){return s<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(s){return s.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(s){return this.week()!==s.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(s,a){switch(a){case"y":return 1===s?"\u5143\u5e74":s+"\u5e74";case"d":case"D":case"DDD":return s+"\u65e5";default:return s}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(o(16738))},80059:function(Ge,g,o){!function(t){"use strict";t.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(s,a){return 12===s&&(s=0),"enjing"===a?s:"siyang"===a?s>=11?s:s+12:"sonten"===a||"ndalu"===a?s+12:void 0},meridiem:function(s,a,l){return s<11?"enjing":s<15?"siyang":s<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}})}(o(16738))},66870:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".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:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(s){return s.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(a,l,u){return"\u10d8"===u?l+"\u10e8\u10d8":l+u+"\u10e8\u10d8"})},past:function(s){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(s)?s.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(s)?s.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):s},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(s){return 0===s?s:1===s?s+"-\u10da\u10d8":s<20||s<=100&&s%20==0||s%100==0?"\u10db\u10d4-"+s:s+"-\u10d4"},week:{dow:1,doy:7}})}(o(16738))},80880:function(Ge,g,o){!function(t){"use strict";var e={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};t.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".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:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(a){return a+(e[a]||e[a%10]||e[a>=100?100:null])},week:{dow:1,doy:7}})}(o(16738))},1083:function(Ge,g,o){!function(t){"use strict";var e={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},s={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};t.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".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:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(l){return"\u179b\u17d2\u1784\u17b6\u1785"===l},meridiem:function(l,u,h){return l<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(l){return l.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},week:{dow:1,doy:4}})}(o(16738))},68785:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},s={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};t.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".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:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(l){return l.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===u?l<4?l:l+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===u?l:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===u?l>=10?l:l+12:"\u0cb8\u0c82\u0c9c\u0cc6"===u?l+12:void 0},meridiem:function(l,u,h){return l<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":l<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":l<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":l<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(l){return l+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}})}(o(16738))},21721:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"\uc77c";case"M":return s+"\uc6d4";case"w":case"W":return s+"\uc8fc";default:return s}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(s){return"\uc624\ud6c4"===s},meridiem:function(s,a,l){return s<12?"\uc624\uc804":"\uc624\ud6c4"}})}(o(16738))},37851:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},s={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".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:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(u){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(u)},meridiem:function(u,h,_){return u<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(u){return u.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(h){return s[h]}).replace(/\u060c/g,",")},postformat:function(u){return u.replace(/\d/g,function(h){return e[h]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(o(16738))},1727:function(Ge,g,o){!function(t){"use strict";var e={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};t.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".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:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(a){return a+(e[a]||e[a%10]||e[a>=100?100:null])},week:{dow:1,doy:7}})}(o(16738))},40346:function(Ge,g,o){!function(t){"use strict";function e(h,_,m,b){var C={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 _?C[m][0]:C[m][1]}function l(h){if(h=parseInt(h,10),isNaN(h))return!1;if(h<0)return!0;if(h<10)return 4<=h&&h<=7;if(h<100){var _=h%10;return l(0===_?h/10:_)}if(h<1e4){for(;h>=10;)h/=10;return l(h)}return l(h/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_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\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_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\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(h){return l(h.substr(0,h.indexOf(" ")))?"a "+h:"an "+h},past:function(h){return l(h.substr(0,h.indexOf(" ")))?"viru "+h:"virun "+h},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d M\xe9int",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},93002:function(Ge,g,o){!function(t){"use strict";t.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".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:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(s){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===s},meridiem:function(s,a,l){return s<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(s){return"\u0e97\u0eb5\u0ec8"+s}})}(o(16738))},64035:function(Ge,g,o){!function(t){"use strict";var e={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function a(m,b,C,D){return b?u(C)[0]:D?u(C)[1]:u(C)[2]}function l(m){return m%10==0||m>10&&m<20}function u(m){return e[m].split("_")}function h(m,b,C,D){var x=m+" ";return 1===m?x+a(0,b,C[0],D):b?x+(l(m)?u(C)[1]:u(C)[0]):D?x+u(C)[1]:x+(l(m)?u(C)[1]:u(C)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_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\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".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:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(m,b,C,D){return b?"kelios sekund\u0117s":D?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:h,m:a,mm:h,h:a,hh:h,d:a,dd:h,M:a,MM:h,y:a,yy:h},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(m){return m+"-oji"},week:{dow:1,doy:4}})}(o(16738))},56927:function(Ge,g,o){!function(t){"use strict";var e={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function s(_,m,b){return b?m%10==1&&m%100!=11?_[2]:_[3]:m%10==1&&m%100!=11?_[0]:_[1]}function a(_,m,b){return _+" "+s(e[b],_,m)}function l(_,m,b){return s(e[b],_,m)}t.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_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:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(_,m){return m?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:a,m:l,mm:a,h:l,hh:a,d:l,dd:a,M:l,MM:a,y:l,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},5634:function(Ge,g,o){!function(t){"use strict";var e={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(a,l){return 1===a?l[0]:a>=2&&a<=4?l[1]:l[2]},translate:function(a,l,u){var h=e.words[u];return 1===u.length?l?h[0]:h[1]:a+" "+e.correctGrammaticalCase(a,h)}};t.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},94173:function(Ge,g,o){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_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\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".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\u0113kona ruarua",ss:"%d h\u0113kona",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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},86320:function(Ge,g,o){!function(t){"use strict";t.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".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:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(s){var a=s%10,l=s%100;return 0===s?s+"-\u0435\u0432":0===l?s+"-\u0435\u043d":l>10&&l<20?s+"-\u0442\u0438":1===a?s+"-\u0432\u0438":2===a?s+"-\u0440\u0438":7===a||8===a?s+"-\u043c\u0438":s+"-\u0442\u0438"},week:{dow:1,doy:7}})}(o(16738))},11705:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(s,a){return 12===s&&(s=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&s>=4||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?s+12:s},meridiem:function(s,a,l){return s<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":s<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":s<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":s<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}})}(o(16738))},31062:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){switch(u){case"s":return l?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return a+(l?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return a+(l?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return a+(l?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return a+(l?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return a+(l?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return a+(l?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return a}}t.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(a){return"\u04ae\u0425"===a},meridiem:function(a,l,u){return a<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(a,l){switch(l){case"d":case"D":case"DDD":return a+" \u04e9\u0434\u04e9\u0440";default:return a}}})}(o(16738))},92805:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},s={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function a(u,h,_,m){var b="";if(h)switch(_){case"s":b="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":b="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":b="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":b="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":b="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":b="%d \u0924\u093e\u0938";break;case"d":b="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":b="%d \u0926\u093f\u0935\u0938";break;case"M":b="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":b="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":b="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":b="%d \u0935\u0930\u094d\u0937\u0947"}else switch(_){case"s":b="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":b="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":b="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":b="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":b="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":b="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":b="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":b="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":b="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":b="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":b="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":b="%d \u0935\u0930\u094d\u0937\u093e\u0902"}return b.replace(/%d/i,u)}t.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(u){return u.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(h){return s[h]})},postformat:function(u){return u.replace(/\d/g,function(h){return e[h]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(u,h){return 12===u&&(u=0),"\u092a\u0939\u093e\u091f\u0947"===h||"\u0938\u0915\u093e\u0933\u0940"===h?u:"\u0926\u0941\u092a\u093e\u0930\u0940"===h||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===h||"\u0930\u093e\u0924\u094d\u0930\u0940"===h?u>=12?u:u+12:void 0},meridiem:function(u,h,_){return u>=0&&u<6?"\u092a\u0939\u093e\u091f\u0947":u<12?"\u0938\u0915\u093e\u0933\u0940":u<17?"\u0926\u0941\u092a\u093e\u0930\u0940":u<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}})}(o(16738))},59900:function(Ge,g,o){!function(t){"use strict";t.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(s,a){return 12===s&&(s=0),"pagi"===a?s:"tengahari"===a?s>=11?s:s+12:"petang"===a||"malam"===a?s+12:void 0},meridiem:function(s,a,l){return s<11?"pagi":s<15?"tengahari":s<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}})}(o(16738))},11341:function(Ge,g,o){!function(t){"use strict";t.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(s,a){return 12===s&&(s=0),"pagi"===a?s:"tengahari"===a?s>=11?s:s+12:"petang"===a||"malam"===a?s+12:void 0},meridiem:function(s,a,l){return s<11?"pagi":s<15?"tengahari":s<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}})}(o(16738))},37734:function(Ge,g,o){!function(t){"use strict";t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_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\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},19034:function(Ge,g,o){!function(t){"use strict";var e={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},s={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};t.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".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:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(l){return l.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},week:{dow:1,doy:4}})}(o(16738))},9324:function(Ge,g,o){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5r 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",w:"en uke",ww:"%d uker",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},46495:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},s={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(l){return l.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u0930\u093e\u0924\u093f"===u?l<4?l:l+12:"\u092c\u093f\u0939\u093e\u0928"===u?l:"\u0926\u093f\u0909\u0901\u0938\u094b"===u?l>=10?l:l+12:"\u0938\u093e\u0901\u091d"===u?l+12:void 0},meridiem:function(l,u,h){return l<3?"\u0930\u093e\u0924\u093f":l<12?"\u092c\u093f\u0939\u093e\u0928":l<16?"\u0926\u093f\u0909\u0901\u0938\u094b":l<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}})}(o(16738))},76272:function(Ge,g,o){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),s="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^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],l=/^(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;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(h){return h+(1===h||8===h||h>=20?"ste":"de")},week:{dow:1,doy:4}})}(o(16738))},70673:function(Ge,g,o){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),s="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^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],l=/^(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;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(h,_){return h?/-MMM-/.test(_)?s[h.month()]:e[h.month()]:e},monthsRegex:l,monthsShortRegex:l,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:a,longMonthsParse:a,shortMonthsParse:a,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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(h){return h+(1===h||8===h||h>=20?"ste":"de")},week:{dow:1,doy:4}})}(o(16738))},72486:function(Ge,g,o){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,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\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] 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",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},46219:function(Ge,g,o){!function(t){"use strict";t.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_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] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(s,a){var l=1===s?"r":2===s?"n":3===s?"r":4===s?"t":"\xe8";return("w"===a||"W"===a)&&(l="a"),s+l},week:{dow:1,doy:4}})}(o(16738))},2829:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},s={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};t.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(l){return l.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(l,u){return 12===l&&(l=0),"\u0a30\u0a3e\u0a24"===u?l<4?l:l+12:"\u0a38\u0a35\u0a47\u0a30"===u?l:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===u?l>=10?l:l+12:"\u0a38\u0a3c\u0a3e\u0a2e"===u?l+12:void 0},meridiem:function(l,u,h){return l<4?"\u0a30\u0a3e\u0a24":l<10?"\u0a38\u0a35\u0a47\u0a30":l<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":l<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}})}(o(16738))},78444:function(Ge,g,o){!function(t){"use strict";var e="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),s="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),a=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function l(_){return _%10<5&&_%10>1&&~~(_/10)%10!=1}function u(_,m,b){var C=_+" ";switch(b){case"ss":return C+(l(_)?"sekundy":"sekund");case"m":return m?"minuta":"minut\u0119";case"mm":return C+(l(_)?"minuty":"minut");case"h":return m?"godzina":"godzin\u0119";case"hh":return C+(l(_)?"godziny":"godzin");case"ww":return C+(l(_)?"tygodnie":"tygodni");case"MM":return C+(l(_)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return C+(l(_)?"lata":"lat")}}t.defineLocale("pl",{months:function(_,m){return _?/D MMMM/.test(m)?s[_.month()]:e[_.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:u,m:u,mm:u,h:u,hh:u,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:u,M:"miesi\u0105c",MM:u,y:"rok",yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},66117:function(Ge,g,o){!function(t){"use strict";t.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_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\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"})}(o(16738))},53170:function(Ge,g,o){!function(t){"use strict";t.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(o(16738))},96587:function(Ge,g,o){!function(t){"use strict";function e(a,l,u){var _=" ";return(a%100>=20||a>=100&&a%100==0)&&(_=" de "),a+_+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[u]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".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\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:e,m:"un minut",mm:e,h:"o or\u0103",hh:e,d:"o zi",dd:e,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:e,M:"o lun\u0103",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(o(16738))},39264:function(Ge,g,o){!function(t){"use strict";function s(u,h,_){return"m"===_?h?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":u+" "+function(u,h){var _=u.split("_");return h%10==1&&h%100!=11?_[0]:h%10>=2&&h%10<=4&&(h%100<10||h%100>=20)?_[1]:_[2]}({ss:h?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:h?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[_],+u)}var a=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];t.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(u){if(u.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(u){if(u.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:s,m:s,mm:s,h:"\u0447\u0430\u0441",hh:s,d:"\u0434\u0435\u043d\u044c",dd:s,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:s,M:"\u043c\u0435\u0441\u044f\u0446",MM:s,y:"\u0433\u043e\u0434",yy:s},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(u){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(u)},meridiem:function(u,h,_){return u<4?"\u043d\u043e\u0447\u0438":u<12?"\u0443\u0442\u0440\u0430":u<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(u,h){switch(h){case"M":case"d":case"DDD":return u+"-\u0439";case"D":return u+"-\u0433\u043e";case"w":case"W":return u+"-\u044f";default:return u}},week:{dow:1,doy:4}})}(o(16738))},42135:function(Ge,g,o){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],s=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:s,weekdaysShort:s,weekdaysMin:s,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(l){return"\u0634\u0627\u0645"===l},meridiem:function(l,u,h){return l<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(l){return l.replace(/\u060c/g,",")},postformat:function(l){return l.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(o(16738))},95366:function(Ge,g,o){!function(t){"use strict";t.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".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\u017ees",past:"ma\u014bit %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\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},93379:function(Ge,g,o){!function(t){"use strict";t.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".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 [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(s){return s+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(s){return"\u0db4.\u0dc0."===s||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===s},meridiem:function(s,a,l){return s>11?l?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":l?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}})}(o(16738))},46143:function(Ge,g,o){!function(t){"use strict";var e="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),s="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function a(h){return h>1&&h<5}function l(h,_,m,b){var C=h+" ";switch(m){case"s":return _||b?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return _||b?C+(a(h)?"sekundy":"sek\xfand"):C+"sekundami";case"m":return _?"min\xfata":b?"min\xfatu":"min\xfatou";case"mm":return _||b?C+(a(h)?"min\xfaty":"min\xfat"):C+"min\xfatami";case"h":return _?"hodina":b?"hodinu":"hodinou";case"hh":return _||b?C+(a(h)?"hodiny":"hod\xedn"):C+"hodinami";case"d":return _||b?"de\u0148":"d\u0148om";case"dd":return _||b?C+(a(h)?"dni":"dn\xed"):C+"d\u0148ami";case"M":return _||b?"mesiac":"mesiacom";case"MM":return _||b?C+(a(h)?"mesiace":"mesiacov"):C+"mesiacmi";case"y":return _||b?"rok":"rokom";case"yy":return _||b?C+(a(h)?"roky":"rokov"):C+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:s,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_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\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:l,ss:l,m:l,mm:l,h:l,hh:l,d:l,dd:l,M:l,MM:l,y:l,yy:l},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},196:function(Ge,g,o){!function(t){"use strict";function e(a,l,u,h){var _=a+" ";switch(u){case"s":return l||h?"nekaj sekund":"nekaj sekundami";case"ss":return _+(1===a?l?"sekundo":"sekundi":2===a?l||h?"sekundi":"sekundah":a<5?l||h?"sekunde":"sekundah":"sekund");case"m":return l?"ena minuta":"eno minuto";case"mm":return _+(1===a?l?"minuta":"minuto":2===a?l||h?"minuti":"minutama":a<5?l||h?"minute":"minutami":l||h?"minut":"minutami");case"h":return l?"ena ura":"eno uro";case"hh":return _+(1===a?l?"ura":"uro":2===a?l||h?"uri":"urama":a<5?l||h?"ure":"urami":l||h?"ur":"urami");case"d":return l||h?"en dan":"enim dnem";case"dd":return _+(1===a?l||h?"dan":"dnem":2===a?l||h?"dni":"dnevoma":l||h?"dni":"dnevi");case"M":return l||h?"en mesec":"enim mesecem";case"MM":return _+(1===a?l||h?"mesec":"mesecem":2===a?l||h?"meseca":"mesecema":a<5?l||h?"mesece":"meseci":l||h?"mesecev":"meseci");case"y":return l||h?"eno leto":"enim letom";case"yy":return _+(1===a?l||h?"leto":"letom":2===a?l||h?"leti":"letoma":a<5?l||h?"leta":"leti":l||h?"let":"leti")}}t.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_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_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\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},21082:function(Ge,g,o){!function(t){"use strict";t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(s){return"M"===s.charAt(0)},meridiem:function(s,a,l){return s<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\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},98963:function(Ge,g,o){!function(t){"use strict";var e={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(a,l){return 1===a?l[0]:a>=2&&a<=4?l[1]:l[2]},translate:function(a,l,u){var h=e.words[u];return 1===u.length?l?h[0]:h[1]:a+" "+e.correctGrammaticalCase(a,h)}};t.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"\u0434\u0430\u043d",dd:e.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:e.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},91621:function(Ge,g,o){!function(t){"use strict";var e={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(a,l){return 1===a?l[0]:a>=2&&a<=4?l[1]:l[2]},translate:function(a,l,u){var h=e.words[u];return 1===u.length?l?h[0]:h[1]:a+" "+e.correctGrammaticalCase(a,h)}};t.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. 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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(o(16738))},41404:function(Ge,g,o){!function(t){"use strict";t.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(s,a,l){return s<11?"ekuseni":s<15?"emini":s<19?"entsambama":"ebusuku"},meridiemHour:function(s,a){return 12===s&&(s=0),"ekuseni"===a?s:"emini"===a?s>=11?s:s+12:"entsambama"===a||"ebusuku"===a?0===s?0:s+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(o(16738))},55685:function(Ge,g,o){!function(t){"use strict";t.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\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".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\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra 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\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(s){var a=s%10;return s+(1==~~(s%100/10)?":e":1===a||2===a?":a":":e")},week:{dow:1,doy:4}})}(o(16738))},3872:function(Ge,g,o){!function(t){"use strict";t.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 A",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:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(o(16738))},54106:function(Ge,g,o){!function(t){"use strict";var e={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},s={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};t.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".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:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(l){return l+"\u0bb5\u0ba4\u0bc1"},preparse:function(l){return l.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(u){return s[u]})},postformat:function(l){return l.replace(/\d/g,function(u){return e[u]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(l,u,h){return l<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":l<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":l<10?" \u0b95\u0bbe\u0bb2\u0bc8":l<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":l<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":l<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(l,u){return 12===l&&(l=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===u?l<2?l:l+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===u||"\u0b95\u0bbe\u0bb2\u0bc8"===u||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===u&&l>=10?l:l+12},week:{dow:0,doy:6}})}(o(16738))},39204:function(Ge,g,o){!function(t){"use strict";t.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".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:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?s<4?s:s+12:"\u0c09\u0c26\u0c2f\u0c02"===a?s:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?s>=10?s:s+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?s+12:void 0},meridiem:function(s,a,l){return s<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":s<10?"\u0c09\u0c26\u0c2f\u0c02":s<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":s<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}})}(o(16738))},83692:function(Ge,g,o){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_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:"segundu balun",ss:"segundu %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(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},86361:function(Ge,g,o){!function(t){"use strict";var e={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};t.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".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:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(a,l){return 12===a&&(a=0),"\u0448\u0430\u0431"===l?a<4?a:a+12:"\u0441\u0443\u0431\u04b3"===l?a:"\u0440\u04ef\u0437"===l?a>=11?a:a+12:"\u0431\u0435\u0433\u043e\u04b3"===l?a+12:void 0},meridiem:function(a,l,u){return a<4?"\u0448\u0430\u0431":a<11?"\u0441\u0443\u0431\u04b3":a<16?"\u0440\u04ef\u0437":a<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(a){return a+(e[a]||e[a%10]||e[a>=100?100:null])},week:{dow:1,doy:7}})}(o(16738))},31735:function(Ge,g,o){!function(t){"use strict";t.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(s){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===s},meridiem:function(s,a,l){return s<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}(o(16738))},1568:function(Ge,g,o){!function(t){"use strict";var e={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};t.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".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\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(a,l){switch(l){case"d":case"D":case"Do":case"DD":return a;default:if(0===a)return a+"'unjy";var u=a%10;return a+(e[u]||e[a%100-u]||e[a>=100?100:null])}},week:{dow:1,doy:7}})}(o(16738))},96129:function(Ge,g,o){!function(t){"use strict";t.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(s){return s},week:{dow:1,doy:4}})}(o(16738))},13759:function(Ge,g,o){!function(t){"use strict";var e="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function l(_,m,b,C){var D=function(_){var m=Math.floor(_%1e3/100),b=Math.floor(_%100/10),C=_%10,D="";return m>0&&(D+=e[m]+"vatlh"),b>0&&(D+=(""!==D?" ":"")+e[b]+"maH"),C>0&&(D+=(""!==D?" ":"")+e[C]),""===D?"pagh":D}(_);switch(b){case"ss":return D+" lup";case"mm":return D+" tup";case"hh":return D+" rep";case"dd":return D+" jaj";case"MM":return D+" jar";case"yy":return D+" DIS"}}t.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".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\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(_){var m=_;return-1!==_.indexOf("jaj")?m.slice(0,-3)+"leS":-1!==_.indexOf("jar")?m.slice(0,-3)+"waQ":-1!==_.indexOf("DIS")?m.slice(0,-3)+"nem":m+" pIq"},past:function(_){var m=_;return-1!==_.indexOf("jaj")?m.slice(0,-3)+"Hu\u2019":-1!==_.indexOf("jar")?m.slice(0,-3)+"wen":-1!==_.indexOf("DIS")?m.slice(0,-3)+"ben":m+" ret"},s:"puS lup",ss:l,m:"wa\u2019 tup",mm:l,h:"wa\u2019 rep",hh:l,d:"wa\u2019 jaj",dd:l,M:"wa\u2019 jar",MM:l,y:"wa\u2019 DIS",yy:l},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(o(16738))},81644:function(Ge,g,o){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};t.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(a,l,u){return a<12?u?"\xf6\xf6":"\xd6\xd6":u?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(a){return"\xf6s"===a||"\xd6S"===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"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(a,l){switch(l){case"d":case"D":case"Do":case"DD":return a;default:if(0===a)return a+"'\u0131nc\u0131";var u=a%10;return a+(e[u]||e[a%100-u]||e[a>=100?100:null])}},week:{dow:1,doy:7}})}(o(16738))},90875:function(Ge,g,o){!function(t){"use strict";function s(a,l,u,h){var _={s:["viensas secunds","'iensas secunds"],ss:[a+" secunds",a+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[a+" m\xeduts",a+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[a+" \xfeoras",a+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas",a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen",a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars",a+" ars"]};return h||l?_[u][0]:_[u][1]}t.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".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(a){return"d'o"===a.toLowerCase()},meridiem:function(a,l,u){return a>11?u?"d'o":"D'O":u?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%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}})}(o(16738))},11041:function(Ge,g,o){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".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\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(o(16738))},16878:function(Ge,g,o){!function(t){"use strict";t.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".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:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}(o(16738))},74357:function(Ge,g,o){!function(t){"use strict";t.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a?s:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===a||"\u0643\u06d5\u0686"===a?s+12:s>=11?s:s+12},meridiem:function(s,a,l){var u=100*s+a;return u<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":u<900?"\u0633\u06d5\u06be\u06d5\u0631":u<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":u<1230?"\u0686\u06c8\u0634":u<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return s+"-\u06be\u06d5\u067e\u062a\u06d5";default:return s}},preparse:function(s){return s.replace(/\u060c/g,",")},postformat:function(s){return s.replace(/,/g,"\u060c")},week:{dow:1,doy:7}})}(o(16738))},74810:function(Ge,g,o){!function(t){"use strict";function s(h,_,m){return"m"===m?_?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===m?_?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":h+" "+function(h,_){var m=h.split("_");return _%10==1&&_%100!=11?m[0]:_%10>=2&&_%10<=4&&(_%100<10||_%100>=20)?m[1]:m[2]}({ss:_?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:_?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:_?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[m],+h)}function l(h){return function(){return h+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}t.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(h,_){var m={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===h?m.nominative.slice(1,7).concat(m.nominative.slice(0,1)):h?m[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(_)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(_)?"genitive":"nominative"][h.day()]:m.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:l("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:l("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:l("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:l("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return l("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return l("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:s,m:s,mm:s,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:s,d:"\u0434\u0435\u043d\u044c",dd:s,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:s,y:"\u0440\u0456\u043a",yy:s},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(h){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(h)},meridiem:function(h,_,m){return h<4?"\u043d\u043e\u0447\u0456":h<12?"\u0440\u0430\u043d\u043a\u0443":h<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(h,_){switch(_){case"M":case"d":case"DDD":case"w":case"W":return h+"-\u0439";case"D":return h+"-\u0433\u043e";default:return h}},week:{dow:1,doy:7}})}(o(16738))},86794:function(Ge,g,o){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],s=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:s,weekdaysShort:s,weekdaysMin:s,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(l){return"\u0634\u0627\u0645"===l},meridiem:function(l,u,h){return l<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(l){return l.replace(/\u060c/g,",")},postformat:function(l){return l.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(o(16738))},77959:function(Ge,g,o){!function(t){"use strict";t.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}})}(o(16738))},28966:function(Ge,g,o){!function(t){"use strict";t.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".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:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}})}(o(16738))},35386:function(Ge,g,o){!function(t){"use strict";t.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".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(s){return/^ch$/i.test(s)},meridiem:function(s,a,l){return s<12?l?"sa":"SA":l?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] 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\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(s){return s},week:{dow:1,doy:4}})}(o(16738))},23156:function(Ge,g,o){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".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~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(s){var a=s%10;return s+(1==~~(s%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})}(o(16738))},68028:function(Ge,g,o){!function(t){"use strict";t.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".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:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}})}(o(16738))},9330:function(Ge,g,o){!function(t){"use strict";t.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?s:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?s+12:s>=11?s:s+12},meridiem:function(s,a,l){var u=100*s+a;return u<600?"\u51cc\u6668":u<900?"\u65e9\u4e0a":u<1130?"\u4e0a\u5348":u<1230?"\u4e2d\u5348":u<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(s){return s.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(s){return this.week()!==s.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"\u65e5";case"M":return s+"\u6708";case"w":case"W":return s+"\u5468";default:return s}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}})}(o(16738))},89380:function(Ge,g,o){!function(t){"use strict";t.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?s:"\u4e2d\u5348"===a?s>=11?s:s+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?s+12:void 0},meridiem:function(s,a,l){var u=100*s+a;return u<600?"\u51cc\u6668":u<900?"\u65e9\u4e0a":u<1200?"\u4e0a\u5348":1200===u?"\u4e2d\u5348":u<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"\u65e5";case"M":return s+"\u6708";case"w":case"W":return s+"\u9031";default:return s}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(o(16738))},60874:function(Ge,g,o){!function(t){"use strict";t.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?s:"\u4e2d\u5348"===a?s>=11?s:s+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?s+12:void 0},meridiem:function(s,a,l){var u=100*s+a;return u<600?"\u51cc\u6668":u<900?"\u65e9\u4e0a":u<1130?"\u4e0a\u5348":u<1230?"\u4e2d\u5348":u<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"\u65e5";case"M":return s+"\u6708";case"w":case"W":return s+"\u9031";default:return s}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(o(16738))},96508:function(Ge,g,o){!function(t){"use strict";t.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(s,a){return 12===s&&(s=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?s:"\u4e2d\u5348"===a?s>=11?s:s+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?s+12:void 0},meridiem:function(s,a,l){var u=100*s+a;return u<600?"\u51cc\u6668":u<900?"\u65e9\u4e0a":u<1130?"\u4e0a\u5348":u<1230?"\u4e2d\u5348":u<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(s,a){switch(a){case"d":case"D":case"DDD":return s+"\u65e5";case"M":return s+"\u6708";case"w":case"W":return s+"\u9031";default:return s}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(o(16738))},16738:function(Ge,g,o){(Ge=o.nmd(Ge)).exports=function(){"use strict";var t,z;function e(){return t.apply(null,arguments)}function a(X){return X instanceof Array||"[object Array]"===Object.prototype.toString.call(X)}function l(X){return null!=X&&"[object Object]"===Object.prototype.toString.call(X)}function u(X,me){return Object.prototype.hasOwnProperty.call(X,me)}function h(X){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(X).length;var me;for(me in X)if(u(X,me))return!1;return!0}function _(X){return void 0===X}function m(X){return"number"==typeof X||"[object Number]"===Object.prototype.toString.call(X)}function b(X){return X instanceof Date||"[object Date]"===Object.prototype.toString.call(X)}function C(X,me){var qt,yt=[];for(qt=0;qt<X.length;++qt)yt.push(me(X[qt],qt));return yt}function D(X,me){for(var yt in me)u(me,yt)&&(X[yt]=me[yt]);return u(me,"toString")&&(X.toString=me.toString),u(me,"valueOf")&&(X.valueOf=me.valueOf),X}function x(X,me,yt,qt){return wt(X,me,yt,qt,!0).utc()}function H(X){return null==X._pf&&(X._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),X._pf}function U(X){if(null==X._isValid){var me=H(X),yt=z.call(me.parsedDateParts,function(xn){return null!=xn}),qt=!isNaN(X._d.getTime())&&me.overflow<0&&!me.empty&&!me.invalidEra&&!me.invalidMonth&&!me.invalidWeekday&&!me.weekdayMismatch&&!me.nullInput&&!me.invalidFormat&&!me.userInvalidated&&(!me.meridiem||me.meridiem&&yt);if(X._strict&&(qt=qt&&0===me.charsLeftOver&&0===me.unusedTokens.length&&void 0===me.bigHour),null!=Object.isFrozen&&Object.isFrozen(X))return qt;X._isValid=qt}return X._isValid}function M(X){var me=x(NaN);return null!=X?D(H(me),X):H(me).userInvalidated=!0,me}z=Array.prototype.some?Array.prototype.some:function(X){var qt,me=Object(this),yt=me.length>>>0;for(qt=0;qt<yt;qt++)if(qt in me&&X.call(this,me[qt],qt,me))return!0;return!1};var I=e.momentProperties=[],J=!1;function Y(X,me){var yt,qt,xn;if(_(me._isAMomentObject)||(X._isAMomentObject=me._isAMomentObject),_(me._i)||(X._i=me._i),_(me._f)||(X._f=me._f),_(me._l)||(X._l=me._l),_(me._strict)||(X._strict=me._strict),_(me._tzm)||(X._tzm=me._tzm),_(me._isUTC)||(X._isUTC=me._isUTC),_(me._offset)||(X._offset=me._offset),_(me._pf)||(X._pf=H(me)),_(me._locale)||(X._locale=me._locale),I.length>0)for(yt=0;yt<I.length;yt++)_(xn=me[qt=I[yt]])||(X[qt]=xn);return X}function ie(X){Y(this,X),this._d=new Date(null!=X._d?X._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===J&&(J=!0,e.updateOffset(this),J=!1)}function oe(X){return X instanceof ie||null!=X&&null!=X._isAMomentObject}function fe(X){!1===e.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+X)}function ne(X,me){var yt=!0;return D(function(){if(null!=e.deprecationHandler&&e.deprecationHandler(null,X),yt){var xn,Ar,xi,qt=[];for(Ar=0;Ar<arguments.length;Ar++){if(xn="","object"==typeof arguments[Ar]){for(xi in xn+="\n["+Ar+"] ",arguments[0])u(arguments[0],xi)&&(xn+=xi+": "+arguments[0][xi]+", ");xn=xn.slice(0,-2)}else xn=arguments[Ar];qt.push(xn)}fe(X+"\nArguments: "+Array.prototype.slice.call(qt).join("")+"\n"+(new Error).stack),yt=!1}return me.apply(this,arguments)},me)}var ue,he={};function ce(X,me){null!=e.deprecationHandler&&e.deprecationHandler(X,me),he[X]||(fe(me),he[X]=!0)}function Ae(X){return"undefined"!=typeof Function&&X instanceof Function||"[object Function]"===Object.prototype.toString.call(X)}function Oe(X,me){var qt,yt=D({},X);for(qt in me)u(me,qt)&&(l(X[qt])&&l(me[qt])?(yt[qt]={},D(yt[qt],X[qt]),D(yt[qt],me[qt])):null!=me[qt]?yt[qt]=me[qt]:delete yt[qt]);for(qt in X)u(X,qt)&&!u(me,qt)&&l(X[qt])&&(yt[qt]=D({},yt[qt]));return yt}function be(X){null!=X&&this.set(X)}e.suppressDeprecationWarnings=!1,e.deprecationHandler=null,ue=Object.keys?Object.keys:function(X){var me,yt=[];for(me in X)u(X,me)&&yt.push(me);return yt};function F(X,me,yt){var qt=""+Math.abs(X);return(X>=0?yt?"+":"":"-")+Math.pow(10,Math.max(0,me-qt.length)).toString().substr(1)+qt}var je=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Et=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,lt={},nn={};function St(X,me,yt,qt){var xn=qt;"string"==typeof qt&&(xn=function(){return this[qt]()}),X&&(nn[X]=xn),me&&(nn[me[0]]=function(){return F(xn.apply(this,arguments),me[1],me[2])}),yt&&(nn[yt]=function(){return this.localeData().ordinal(xn.apply(this,arguments),X)})}function At(X){return X.match(/\[[\s\S]/)?X.replace(/^\[|\]$/g,""):X.replace(/\\/g,"")}function It(X,me){return X.isValid()?(me=ae(me,X.localeData()),lt[me]=lt[me]||function(X){var yt,qt,me=X.match(je);for(yt=0,qt=me.length;yt<qt;yt++)me[yt]=nn[me[yt]]?nn[me[yt]]:At(me[yt]);return function(xn){var xi,Ar="";for(xi=0;xi<qt;xi++)Ar+=Ae(me[xi])?me[xi].call(xn,X):me[xi];return Ar}}(me),lt[me](X)):X.localeData().invalidDate()}function ae(X,me){var yt=5;function qt(xn){return me.longDateFormat(xn)||xn}for(Et.lastIndex=0;yt>=0&&Et.test(X);)X=X.replace(Et,qt),Et.lastIndex=0,yt-=1;return X}var Ht={};function tr(X,me){var yt=X.toLowerCase();Ht[yt]=Ht[yt+"s"]=Ht[me]=X}function Yn(X){return"string"==typeof X?Ht[X]||Ht[X.toLowerCase()]:void 0}function Cn(X){var yt,qt,me={};for(qt in X)u(X,qt)&&(yt=Yn(qt))&&(me[yt]=X[qt]);return me}var Kt={};function dn(X,me){Kt[X]=me}function qn(X){return X%4==0&&X%100!=0||X%400==0}function Sn(X){return X<0?Math.ceil(X)||0:Math.floor(X)}function $n(X){var me=+X,yt=0;return 0!==me&&isFinite(me)&&(yt=Sn(me)),yt}function En(X,me){return function(yt){return null!=yt?(Dn(this,X,yt),e.updateOffset(this,me),this):Fn(this,X)}}function Fn(X,me){return X.isValid()?X._d["get"+(X._isUTC?"UTC":"")+me]():NaN}function Dn(X,me,yt){X.isValid()&&!isNaN(yt)&&("FullYear"===me&&qn(X.year())&&1===X.month()&&29===X.date()?(yt=$n(yt),X._d["set"+(X._isUTC?"UTC":"")+me](yt,X.month(),di(yt,X.month()))):X._d["set"+(X._isUTC?"UTC":"")+me](yt))}var Ut,Xt=/\d/,ut=/\d\d/,mt=/\d{3}/,Tt=/\d{4}/,yn=/[+-]?\d{6}/,et=/\d\d?/,jt=/\d\d\d\d?/,hn=/\d\d\d\d\d\d?/,Qn=/\d{1,3}/,Ir=/\d{1,4}/,ht=/[+-]?\d{1,6}/,L=/\d+/,Ue=/[+-]?\d+/,nt=/Z|[+-]\d\d:?\d\d/gi,at=/Z|[+-]\d\d(?::?\d\d)?/gi,Pt=/[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;function ot(X,me,yt){Ut[X]=Ae(me)?me:function(qt,xn){return qt&&yt?yt:me}}function Nn(X,me){return u(Ut,X)?Ut[X](me._strict,me._locale):new RegExp(function(X){return An(X.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(me,yt,qt,xn,Ar){return yt||qt||xn||Ar}))}(X))}function An(X){return X.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Ut={};var Bn={};function ir(X,me){var yt,qt=me;for("string"==typeof X&&(X=[X]),m(me)&&(qt=function(xn,Ar){Ar[me]=$n(xn)}),yt=0;yt<X.length;yt++)Bn[X[yt]]=qt}function mr(X,me){ir(X,function(yt,qt,xn,Ar){xn._w=xn._w||{},me(yt,xn._w,xn,Ar)})}function _r(X,me,yt){null!=me&&u(Bn,X)&&Bn[X](me,yt._a,yt,X)}var ei;function di(X,me){if(isNaN(X)||isNaN(me))return NaN;var yt=function(X,me){return(X%me+me)%me}(me,12);return X+=(me-yt)/12,1===yt?qn(X)?29:28:31-yt%7%2}ei=Array.prototype.indexOf?Array.prototype.indexOf:function(X){var me;for(me=0;me<this.length;++me)if(this[me]===X)return me;return-1},St("M",["MM",2],"Mo",function(){return this.month()+1}),St("MMM",0,0,function(X){return this.localeData().monthsShort(this,X)}),St("MMMM",0,0,function(X){return this.localeData().months(this,X)}),tr("month","M"),dn("month",8),ot("M",et),ot("MM",et,ut),ot("MMM",function(X,me){return me.monthsShortRegex(X)}),ot("MMMM",function(X,me){return me.monthsRegex(X)}),ir(["M","MM"],function(X,me){me[1]=$n(X)-1}),ir(["MMM","MMMM"],function(X,me,yt,qt){var xn=yt._locale.monthsParse(X,qt,yt._strict);null!=xn?me[1]=xn:H(yt).invalidMonth=X});var se="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ct="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ke=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Xe=Pt,Vt=Pt;function bt(X,me,yt){var qt,xn,Ar,xi=X.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],qt=0;qt<12;++qt)Ar=x([2e3,qt]),this._shortMonthsParse[qt]=this.monthsShort(Ar,"").toLocaleLowerCase(),this._longMonthsParse[qt]=this.months(Ar,"").toLocaleLowerCase();return yt?"MMM"===me?-1!==(xn=ei.call(this._shortMonthsParse,xi))?xn:null:-1!==(xn=ei.call(this._longMonthsParse,xi))?xn:null:"MMM"===me?-1!==(xn=ei.call(this._shortMonthsParse,xi))||-1!==(xn=ei.call(this._longMonthsParse,xi))?xn:null:-1!==(xn=ei.call(this._longMonthsParse,xi))||-1!==(xn=ei.call(this._shortMonthsParse,xi))?xn:null}function $t(X,me){var yt;if(!X.isValid())return X;if("string"==typeof me)if(/^\d+$/.test(me))me=$n(me);else if(!m(me=X.localeData().monthsParse(me)))return X;return yt=Math.min(X.date(),di(X.year(),me)),X._d["set"+(X._isUTC?"UTC":"")+"Month"](me,yt),X}function or(X){return null!=X?($t(this,X),e.updateOffset(this,!0),this):Fn(this,"Month")}function ai(){function X(xi,fs){return fs.length-xi.length}var xn,Ar,me=[],yt=[],qt=[];for(xn=0;xn<12;xn++)Ar=x([2e3,xn]),me.push(this.monthsShort(Ar,"")),yt.push(this.months(Ar,"")),qt.push(this.months(Ar,"")),qt.push(this.monthsShort(Ar,""));for(me.sort(X),yt.sort(X),qt.sort(X),xn=0;xn<12;xn++)me[xn]=An(me[xn]),yt[xn]=An(yt[xn]);for(xn=0;xn<24;xn++)qt[xn]=An(qt[xn]);this._monthsRegex=new RegExp("^("+qt.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+yt.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+me.join("|")+")","i")}function Dr(X){return qn(X)?366:365}St("Y",0,0,function(){var X=this.year();return X<=9999?F(X,4):"+"+X}),St(0,["YY",2],0,function(){return this.year()%100}),St(0,["YYYY",4],0,"year"),St(0,["YYYYY",5],0,"year"),St(0,["YYYYYY",6,!0],0,"year"),tr("year","y"),dn("year",1),ot("Y",Ue),ot("YY",et,ut),ot("YYYY",Ir,Tt),ot("YYYYY",ht,yn),ot("YYYYYY",ht,yn),ir(["YYYYY","YYYYYY"],0),ir("YYYY",function(X,me){me[0]=2===X.length?e.parseTwoDigitYear(X):$n(X)}),ir("YY",function(X,me){me[0]=e.parseTwoDigitYear(X)}),ir("Y",function(X,me){me[0]=parseInt(X,10)}),e.parseTwoDigitYear=function(X){return $n(X)+($n(X)>68?1900:2e3)};var Qr=En("FullYear",!0);function fi(X,me,yt,qt,xn,Ar,xi){var fs;return X<100&&X>=0?(fs=new Date(X+400,me,yt,qt,xn,Ar,xi),isFinite(fs.getFullYear())&&fs.setFullYear(X)):fs=new Date(X,me,yt,qt,xn,Ar,xi),fs}function Ei(X){var me,yt;return X<100&&X>=0?((yt=Array.prototype.slice.call(arguments))[0]=X+400,me=new Date(Date.UTC.apply(null,yt)),isFinite(me.getUTCFullYear())&&me.setUTCFullYear(X)):me=new Date(Date.UTC.apply(null,arguments)),me}function wi(X,me,yt){var qt=7+me-yt;return-(7+Ei(X,0,qt).getUTCDay()-me)%7+qt-1}function go(X,me,yt,qt,xn){var aa,za,fs=1+7*(me-1)+(7+yt-qt)%7+wi(X,qt,xn);return fs<=0?za=Dr(aa=X-1)+fs:fs>Dr(X)?(aa=X+1,za=fs-Dr(X)):(aa=X,za=fs),{year:aa,dayOfYear:za}}function Fi(X,me,yt){var Ar,xi,qt=wi(X.year(),me,yt),xn=Math.floor((X.dayOfYear()-qt-1)/7)+1;return xn<1?Ar=xn+no(xi=X.year()-1,me,yt):xn>no(X.year(),me,yt)?(Ar=xn-no(X.year(),me,yt),xi=X.year()+1):(xi=X.year(),Ar=xn),{week:Ar,year:xi}}function no(X,me,yt){var qt=wi(X,me,yt),xn=wi(X+1,me,yt);return(Dr(X)-qt+xn)/7}St("w",["ww",2],"wo","week"),St("W",["WW",2],"Wo","isoWeek"),tr("week","w"),tr("isoWeek","W"),dn("week",5),dn("isoWeek",5),ot("w",et),ot("ww",et,ut),ot("W",et),ot("WW",et,ut),mr(["w","ww","W","WW"],function(X,me,yt,qt){me[qt.substr(0,1)]=$n(X)});function es(X,me){return X.slice(me,7).concat(X.slice(0,me))}St("d",0,"do","day"),St("dd",0,0,function(X){return this.localeData().weekdaysMin(this,X)}),St("ddd",0,0,function(X){return this.localeData().weekdaysShort(this,X)}),St("dddd",0,0,function(X){return this.localeData().weekdays(this,X)}),St("e",0,0,"weekday"),St("E",0,0,"isoWeekday"),tr("day","d"),tr("weekday","e"),tr("isoWeekday","E"),dn("day",11),dn("weekday",11),dn("isoWeekday",11),ot("d",et),ot("e",et),ot("E",et),ot("dd",function(X,me){return me.weekdaysMinRegex(X)}),ot("ddd",function(X,me){return me.weekdaysShortRegex(X)}),ot("dddd",function(X,me){return me.weekdaysRegex(X)}),mr(["dd","ddd","dddd"],function(X,me,yt,qt){var xn=yt._locale.weekdaysParse(X,qt,yt._strict);null!=xn?me.d=xn:H(yt).invalidWeekday=X}),mr(["d","e","E"],function(X,me,yt,qt){me[qt]=$n(X)});var ua="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ds="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),zo="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),oa=Pt,Er=Pt,st=Pt;function fn(X,me,yt){var qt,xn,Ar,xi=X.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],qt=0;qt<7;++qt)Ar=x([2e3,1]).day(qt),this._minWeekdaysParse[qt]=this.weekdaysMin(Ar,"").toLocaleLowerCase(),this._shortWeekdaysParse[qt]=this.weekdaysShort(Ar,"").toLocaleLowerCase(),this._weekdaysParse[qt]=this.weekdays(Ar,"").toLocaleLowerCase();return yt?"dddd"===me?-1!==(xn=ei.call(this._weekdaysParse,xi))?xn:null:"ddd"===me?-1!==(xn=ei.call(this._shortWeekdaysParse,xi))?xn:null:-1!==(xn=ei.call(this._minWeekdaysParse,xi))?xn:null:"dddd"===me?-1!==(xn=ei.call(this._weekdaysParse,xi))||-1!==(xn=ei.call(this._shortWeekdaysParse,xi))||-1!==(xn=ei.call(this._minWeekdaysParse,xi))?xn:null:"ddd"===me?-1!==(xn=ei.call(this._shortWeekdaysParse,xi))||-1!==(xn=ei.call(this._weekdaysParse,xi))||-1!==(xn=ei.call(this._minWeekdaysParse,xi))?xn:null:-1!==(xn=ei.call(this._minWeekdaysParse,xi))||-1!==(xn=ei.call(this._weekdaysParse,xi))||-1!==(xn=ei.call(this._shortWeekdaysParse,xi))?xn:null}function Li(){function X(gc,Ql){return Ql.length-gc.length}var Ar,xi,fs,aa,za,me=[],yt=[],qt=[],xn=[];for(Ar=0;Ar<7;Ar++)xi=x([2e3,1]).day(Ar),fs=An(this.weekdaysMin(xi,"")),aa=An(this.weekdaysShort(xi,"")),za=An(this.weekdays(xi,"")),me.push(fs),yt.push(aa),qt.push(za),xn.push(fs),xn.push(aa),xn.push(za);me.sort(X),yt.sort(X),qt.sort(X),xn.sort(X),this._weekdaysRegex=new RegExp("^("+xn.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+qt.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+yt.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+me.join("|")+")","i")}function cs(){return this.hours()%12||12}function da(X,me){St(X,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),me)})}function xa(X,me){return me._meridiemParse}St("H",["HH",2],0,"hour"),St("h",["hh",2],0,cs),St("k",["kk",2],0,function(){return this.hours()||24}),St("hmm",0,0,function(){return""+cs.apply(this)+F(this.minutes(),2)}),St("hmmss",0,0,function(){return""+cs.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),St("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),St("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),da("a",!0),da("A",!1),tr("hour","h"),dn("hour",13),ot("a",xa),ot("A",xa),ot("H",et),ot("h",et),ot("k",et),ot("HH",et,ut),ot("hh",et,ut),ot("kk",et,ut),ot("hmm",jt),ot("hmmss",hn),ot("Hmm",jt),ot("Hmmss",hn),ir(["H","HH"],3),ir(["k","kk"],function(X,me,yt){var qt=$n(X);me[3]=24===qt?0:qt}),ir(["a","A"],function(X,me,yt){yt._isPm=yt._locale.isPM(X),yt._meridiem=X}),ir(["h","hh"],function(X,me,yt){me[3]=$n(X),H(yt).bigHour=!0}),ir("hmm",function(X,me,yt){var qt=X.length-2;me[3]=$n(X.substr(0,qt)),me[4]=$n(X.substr(qt)),H(yt).bigHour=!0}),ir("hmmss",function(X,me,yt){var qt=X.length-4,xn=X.length-2;me[3]=$n(X.substr(0,qt)),me[4]=$n(X.substr(qt,2)),me[5]=$n(X.substr(xn)),H(yt).bigHour=!0}),ir("Hmm",function(X,me,yt){var qt=X.length-2;me[3]=$n(X.substr(0,qt)),me[4]=$n(X.substr(qt))}),ir("Hmmss",function(X,me,yt){var qt=X.length-4,xn=X.length-2;me[3]=$n(X.substr(0,qt)),me[4]=$n(X.substr(qt,2)),me[5]=$n(X.substr(xn))});var Dl=En("Hours",!0);var Sa,sa={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,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",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:se,monthsShort:ct,week:{dow:0,doy:6},weekdays:ua,weekdaysMin:zo,weekdaysShort:ds,meridiemParse:/[ap]\.?m?\.?/i},Fo={},Ka={};function fa(X,me){var yt,qt=Math.min(X.length,me.length);for(yt=0;yt<qt;yt+=1)if(X[yt]!==me[yt])return yt;return qt}function ks(X){return X&&X.toLowerCase().replace("_","-")}function pt(X){var me=null;if(void 0===Fo[X]&&Ge&&Ge.exports)try{me=Sa._abbr,o(46700)("./"+X),an(me)}catch(qt){Fo[X]=null}return Fo[X]}function an(X,me){var yt;return X&&((yt=_(me)?ye(X):Nt(X,me))?Sa=yt:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+X+" not found. Did you forget to load it?")),Sa._abbr}function Nt(X,me){if(null!==me){var yt,qt=sa;if(me.abbr=X,null!=Fo[X])ce("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."),qt=Fo[X]._config;else if(null!=me.parentLocale)if(null!=Fo[me.parentLocale])qt=Fo[me.parentLocale]._config;else{if(null==(yt=pt(me.parentLocale)))return Ka[me.parentLocale]||(Ka[me.parentLocale]=[]),Ka[me.parentLocale].push({name:X,config:me}),null;qt=yt._config}return Fo[X]=new be(Oe(qt,me)),Ka[X]&&Ka[X].forEach(function(xn){Nt(xn.name,xn.config)}),an(X),Fo[X]}return delete Fo[X],null}function ye(X){var me;if(X&&X._locale&&X._locale._abbr&&(X=X._locale._abbr),!X)return Sa;if(!a(X)){if(me=pt(X))return me;X=[X]}return function(X){for(var yt,qt,xn,Ar,me=0;me<X.length;){for(yt=(Ar=ks(X[me]).split("-")).length,qt=(qt=ks(X[me+1]))?qt.split("-"):null;yt>0;){if(xn=pt(Ar.slice(0,yt).join("-")))return xn;if(qt&&qt.length>=yt&&fa(Ar,qt)>=yt-1)break;yt--}me++}return Sa}(X)}function Wt(X){var me,yt=X._a;return yt&&-2===H(X).overflow&&(me=yt[1]<0||yt[1]>11?1:yt[2]<1||yt[2]>di(yt[0],yt[1])?2:yt[3]<0||yt[3]>24||24===yt[3]&&(0!==yt[4]||0!==yt[5]||0!==yt[6])?3:yt[4]<0||yt[4]>59?4:yt[5]<0||yt[5]>59?5:yt[6]<0||yt[6]>999?6:-1,H(X)._overflowDayOfYear&&(me<0||me>2)&&(me=2),H(X)._overflowWeeks&&-1===me&&(me=7),H(X)._overflowWeekday&&-1===me&&(me=8),H(X).overflow=me),X}var Or=/^\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)?)?$/,Ni=/^\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)?)?$/,Yo=/Z|[+-]\d\d(?::?\d\d)?/,ms=[["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}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ss=[["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/]],Lo=/^\/?Date\((-?\d+)/i,Zo=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Ea={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ul(X){var me,yt,Ar,xi,fs,aa,qt=X._i,xn=Or.exec(qt)||Ni.exec(qt);if(xn){for(H(X).iso=!0,me=0,yt=ms.length;me<yt;me++)if(ms[me][1].exec(xn[1])){xi=ms[me][0],Ar=!1!==ms[me][2];break}if(null==xi)return void(X._isValid=!1);if(xn[3]){for(me=0,yt=ss.length;me<yt;me++)if(ss[me][1].exec(xn[3])){fs=(xn[2]||" ")+ss[me][0];break}if(null==fs)return void(X._isValid=!1)}if(!Ar&&null!=fs)return void(X._isValid=!1);if(xn[4]){if(!Yo.exec(xn[4]))return void(X._isValid=!1);aa="Z"}X._f=xi+(fs||"")+(aa||""),Di(X)}else X._isValid=!1}function va(X){var me=parseInt(X,10);return me<=49?2e3+me:me<=999?1900+me:me}function dl(X){var yt,me=Zo.exec(function(X){return X.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}(X._i));if(me){if(yt=function(X,me,yt,qt,xn,Ar){var xi=[va(X),ct.indexOf(me),parseInt(yt,10),parseInt(qt,10),parseInt(xn,10)];return Ar&&xi.push(parseInt(Ar,10)),xi}(me[4],me[3],me[2],me[5],me[6],me[7]),!function(X,me,yt){return!X||ds.indexOf(X)===new Date(me[0],me[1],me[2]).getDay()||(H(yt).weekdayMismatch=!0,yt._isValid=!1,!1)}(me[1],yt,X))return;X._a=yt,X._tzm=function(X,me,yt){if(X)return Ea[X];if(me)return 0;var qt=parseInt(yt,10),xn=qt%100;return(qt-xn)/100*60+xn}(me[8],me[9],me[10]),X._d=Ei.apply(null,X._a),X._d.setUTCMinutes(X._d.getUTCMinutes()-X._tzm),H(X).rfc2822=!0}else X._isValid=!1}function il(X,me,yt){return null!=X?X:null!=me?me:yt}function Bl(X){var me,yt,xn,Ar,xi,qt=[];if(!X._d){for(xn=function(X){var me=new Date(e.now());return X._useUTC?[me.getUTCFullYear(),me.getUTCMonth(),me.getUTCDate()]:[me.getFullYear(),me.getMonth(),me.getDate()]}(X),X._w&&null==X._a[2]&&null==X._a[1]&&function(X){var me,yt,qt,xn,Ar,xi,fs,aa,za;null!=(me=X._w).GG||null!=me.W||null!=me.E?(Ar=1,xi=4,yt=il(me.GG,X._a[0],Fi(kt(),1,4).year),qt=il(me.W,1),((xn=il(me.E,1))<1||xn>7)&&(aa=!0)):(Ar=X._locale._week.dow,xi=X._locale._week.doy,za=Fi(kt(),Ar,xi),yt=il(me.gg,X._a[0],za.year),qt=il(me.w,za.week),null!=me.d?((xn=me.d)<0||xn>6)&&(aa=!0):null!=me.e?(xn=me.e+Ar,(me.e<0||me.e>6)&&(aa=!0)):xn=Ar),qt<1||qt>no(yt,Ar,xi)?H(X)._overflowWeeks=!0:null!=aa?H(X)._overflowWeekday=!0:(fs=go(yt,qt,xn,Ar,xi),X._a[0]=fs.year,X._dayOfYear=fs.dayOfYear)}(X),null!=X._dayOfYear&&(xi=il(X._a[0],xn[0]),(X._dayOfYear>Dr(xi)||0===X._dayOfYear)&&(H(X)._overflowDayOfYear=!0),yt=Ei(xi,0,X._dayOfYear),X._a[1]=yt.getUTCMonth(),X._a[2]=yt.getUTCDate()),me=0;me<3&&null==X._a[me];++me)X._a[me]=qt[me]=xn[me];for(;me<7;me++)X._a[me]=qt[me]=null==X._a[me]?2===me?1:0:X._a[me];24===X._a[3]&&0===X._a[4]&&0===X._a[5]&&0===X._a[6]&&(X._nextDay=!0,X._a[3]=0),X._d=(X._useUTC?Ei:fi).apply(null,qt),Ar=X._useUTC?X._d.getUTCDay():X._d.getDay(),null!=X._tzm&&X._d.setUTCMinutes(X._d.getUTCMinutes()-X._tzm),X._nextDay&&(X._a[3]=24),X._w&&void 0!==X._w.d&&X._w.d!==Ar&&(H(X).weekdayMismatch=!0)}}function Di(X){if(X._f!==e.ISO_8601)if(X._f!==e.RFC_2822){X._a=[],H(X).empty=!0;var yt,qt,xn,Ar,xi,za,me=""+X._i,fs=me.length,aa=0;for(xn=ae(X._f,X._locale).match(je)||[],yt=0;yt<xn.length;yt++)(qt=(me.match(Nn(Ar=xn[yt],X))||[])[0])&&((xi=me.substr(0,me.indexOf(qt))).length>0&&H(X).unusedInput.push(xi),me=me.slice(me.indexOf(qt)+qt.length),aa+=qt.length),nn[Ar]?(qt?H(X).empty=!1:H(X).unusedTokens.push(Ar),_r(Ar,qt,X)):X._strict&&!qt&&H(X).unusedTokens.push(Ar);H(X).charsLeftOver=fs-aa,me.length>0&&H(X).unusedInput.push(me),X._a[3]<=12&&!0===H(X).bigHour&&X._a[3]>0&&(H(X).bigHour=void 0),H(X).parsedDateParts=X._a.slice(0),H(X).meridiem=X._meridiem,X._a[3]=function(X,me,yt){var qt;return null==yt?me:null!=X.meridiemHour?X.meridiemHour(me,yt):(null!=X.isPM&&((qt=X.isPM(yt))&&me<12&&(me+=12),!qt&&12===me&&(me=0)),me)}(X._locale,X._a[3],X._meridiem),null!==(za=H(X).era)&&(X._a[0]=X._locale.erasConvertYear(za,X._a[0])),Bl(X),Wt(X)}else dl(X);else ul(X)}function hs(X){var me=X._i,yt=X._f;return X._locale=X._locale||ye(X._l),null===me||void 0===yt&&""===me?M({nullInput:!0}):("string"==typeof me&&(X._i=me=X._locale.preparse(me)),oe(me)?new ie(Wt(me)):(b(me)?X._d=me:a(yt)?function(X){var me,yt,qt,xn,Ar,xi,fs=!1;if(0===X._f.length)return H(X).invalidFormat=!0,void(X._d=new Date(NaN));for(xn=0;xn<X._f.length;xn++)Ar=0,xi=!1,me=Y({},X),null!=X._useUTC&&(me._useUTC=X._useUTC),me._f=X._f[xn],Di(me),U(me)&&(xi=!0),Ar+=H(me).charsLeftOver,Ar+=10*H(me).unusedTokens.length,H(me).score=Ar,fs?Ar<qt&&(qt=Ar,yt=me):(null==qt||Ar<qt||xi)&&(qt=Ar,yt=me,xi&&(fs=!0));D(X,yt||me)}(X):yt?Di(X):function(X){var me=X._i;_(me)?X._d=new Date(e.now()):b(me)?X._d=new Date(me.valueOf()):"string"==typeof me?function(X){var me=Lo.exec(X._i);null===me?(ul(X),!1===X._isValid&&(delete X._isValid,dl(X),!1===X._isValid&&(delete X._isValid,X._strict?X._isValid=!1:e.createFromInputFallback(X)))):X._d=new Date(+me[1])}(X):a(me)?(X._a=C(me.slice(0),function(yt){return parseInt(yt,10)}),Bl(X)):l(me)?function(X){if(!X._d){var me=Cn(X._i);X._a=C([me.year,me.month,void 0===me.day?me.date:me.day,me.hour,me.minute,me.second,me.millisecond],function(qt){return qt&&parseInt(qt,10)}),Bl(X)}}(X):m(me)?X._d=new Date(me):e.createFromInputFallback(X)}(X),U(X)||(X._d=null),X))}function wt(X,me,yt,qt,xn){var Ar={};return(!0===me||!1===me)&&(qt=me,me=void 0),(!0===yt||!1===yt)&&(qt=yt,yt=void 0),(l(X)&&h(X)||a(X)&&0===X.length)&&(X=void 0),Ar._isAMomentObject=!0,Ar._useUTC=Ar._isUTC=xn,Ar._l=yt,Ar._i=X,Ar._f=me,Ar._strict=qt,function(X){var me=new ie(Wt(hs(X)));return me._nextDay&&(me.add(1,"d"),me._nextDay=void 0),me}(Ar)}function kt(X,me,yt,qt){return wt(X,me,yt,qt,!1)}e.createFromInputFallback=ne("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(X){X._d=new Date(X._i+(X._useUTC?" UTC":""))}),e.ISO_8601=function(){},e.RFC_2822=function(){};var tn=ne("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var X=kt.apply(null,arguments);return this.isValid()&&X.isValid()?X<this?this:X:M()}),ur=ne("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var X=kt.apply(null,arguments);return this.isValid()&&X.isValid()?X>this?this:X:M()});function gn(X,me){var yt,qt;if(1===me.length&&a(me[0])&&(me=me[0]),!me.length)return kt();for(yt=me[0],qt=1;qt<me.length;++qt)(!me[qt].isValid()||me[qt][X](yt))&&(yt=me[qt]);return yt}var mi=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ui(X){var me=Cn(X),yt=me.year||0,qt=me.quarter||0,xn=me.month||0,Ar=me.week||me.isoWeek||0,xi=me.day||0,fs=me.hour||0,aa=me.minute||0,za=me.second||0,gc=me.millisecond||0;this._isValid=function(X){var me,qt,yt=!1;for(me in X)if(u(X,me)&&(-1===ei.call(mi,me)||null!=X[me]&&isNaN(X[me])))return!1;for(qt=0;qt<mi.length;++qt)if(X[mi[qt]]){if(yt)return!1;parseFloat(X[mi[qt]])!==$n(X[mi[qt]])&&(yt=!0)}return!0}(me),this._milliseconds=+gc+1e3*za+6e4*aa+1e3*fs*60*60,this._days=+xi+7*Ar,this._months=+xn+3*qt+12*yt,this._data={},this._locale=ye(),this._bubble()}function io(X){return X instanceof Ui}function vo(X){return X<0?-1*Math.round(-1*X):Math.round(X)}function hi(X,me){St(X,0,0,function(){var yt=this.utcOffset(),qt="+";return yt<0&&(yt=-yt,qt="-"),qt+F(~~(yt/60),2)+me+F(~~yt%60,2)})}hi("Z",":"),hi("ZZ",""),ot("Z",at),ot("ZZ",at),ir(["Z","ZZ"],function(X,me,yt){yt._useUTC=!0,yt._tzm=G(at,X)});var Br=/([\+\-]|\d\d)/gi;function G(X,me){var xn,Ar,yt=(me||"").match(X);return null===yt?null:0===(Ar=60*(xn=((yt[yt.length-1]||[])+"").match(Br)||["-",0,0])[1]+$n(xn[2]))?0:"+"===xn[0]?Ar:-Ar}function Se(X,me){var yt,qt;return me._isUTC?(yt=me.clone(),qt=(oe(X)||b(X)?X.valueOf():kt(X).valueOf())-yt.valueOf(),yt._d.setTime(yt._d.valueOf()+qt),e.updateOffset(yt,!1),yt):kt(X).local()}function ft(X){return-Math.round(X._d.getTimezoneOffset())}function dr(){return!!this.isValid()&&this._isUTC&&0===this._offset}e.updateOffset=function(){};var li=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ti=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ao(X,me){var xn,Ar,xi,yt=X,qt=null;return io(X)?yt={ms:X._milliseconds,d:X._days,M:X._months}:m(X)||!isNaN(+X)?(yt={},me?yt[me]=+X:yt.milliseconds=+X):(qt=li.exec(X))?(xn="-"===qt[1]?-1:1,yt={y:0,d:$n(qt[2])*xn,h:$n(qt[3])*xn,m:$n(qt[4])*xn,s:$n(qt[5])*xn,ms:$n(vo(1e3*qt[6]))*xn}):(qt=Ti.exec(X))?yt={y:Qo(qt[2],xn="-"===qt[1]?-1:1),M:Qo(qt[3],xn),w:Qo(qt[4],xn),d:Qo(qt[5],xn),h:Qo(qt[6],xn),m:Qo(qt[7],xn),s:Qo(qt[8],xn)}:null==yt?yt={}:"object"==typeof yt&&("from"in yt||"to"in yt)&&(xi=function(X,me){var yt;return X.isValid()&&me.isValid()?(me=Se(me,X),X.isBefore(me)?yt=jo(X,me):((yt=jo(me,X)).milliseconds=-yt.milliseconds,yt.months=-yt.months),yt):{milliseconds:0,months:0}}(kt(yt.from),kt(yt.to)),(yt={}).ms=xi.milliseconds,yt.M=xi.months),Ar=new Ui(yt),io(X)&&u(X,"_locale")&&(Ar._locale=X._locale),io(X)&&u(X,"_isValid")&&(Ar._isValid=X._isValid),Ar}function Qo(X,me){var yt=X&&parseFloat(X.replace(",","."));return(isNaN(yt)?0:yt)*me}function jo(X,me){var yt={};return yt.months=me.month()-X.month()+12*(me.year()-X.year()),X.clone().add(yt.months,"M").isAfter(me)&&--yt.months,yt.milliseconds=+me-+X.clone().add(yt.months,"M"),yt}function eo(X,me){return function(yt,qt){var Ar;return null!==qt&&!isNaN(+qt)&&(ce(me,"moment()."+me+"(period, number) is deprecated. Please use moment()."+me+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),Ar=yt,yt=qt,qt=Ar),Ho(this,Ao(yt,qt),X),this}}function Ho(X,me,yt,qt){var xn=me._milliseconds,Ar=vo(me._days),xi=vo(me._months);!X.isValid()||(qt=null==qt||qt,xi&&$t(X,Fn(X,"Month")+xi*yt),Ar&&Dn(X,"Date",Fn(X,"Date")+Ar*yt),xn&&X._d.setTime(X._d.valueOf()+xn*yt),qt&&e.updateOffset(X,Ar||xi))}Ao.fn=Ui.prototype,Ao.invalid=function(){return Ao(NaN)};var Zi=eo(1,"add"),na=eo(-1,"subtract");function ha(X){return"string"==typeof X||X instanceof String}function fl(X){return oe(X)||b(X)||ha(X)||m(X)||function(X){var me=a(X),yt=!1;return me&&(yt=0===X.filter(function(qt){return!m(qt)&&ha(X)}).length),me&&yt}(X)||function(X){var xn,me=l(X)&&!h(X),yt=!1,qt=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(xn=0;xn<qt.length;xn+=1)yt=yt||u(X,qt[xn]);return me&&yt}(X)||null==X}function Ll(X){var xn,me=l(X)&&!h(X),yt=!1,qt=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(xn=0;xn<qt.length;xn+=1)yt=yt||u(X,qt[xn]);return me&&yt}function Yl(X,me){if(X.date()<me.date())return-Yl(me,X);var yt=12*(me.year()-X.year())+(me.month()-X.month()),qt=X.clone().add(yt,"months");return-(yt+(me-qt<0?(me-qt)/(qt-X.clone().add(yt-1,"months")):(me-qt)/(X.clone().add(yt+1,"months")-qt)))||0}function ge(X){var me;return void 0===X?this._locale._abbr:(null!=(me=ye(X))&&(this._locale=me),this)}e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Re=ne("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(X){return void 0===X?this.localeData():this.locale(X)});function Be(){return this._locale}var Dt=6e4,en=60*Dt,vn=3506328*en;function Gn(X,me){return(X%me+me)%me}function kn(X,me,yt){return X<100&&X>=0?new Date(X+400,me,yt)-vn:new Date(X,me,yt).valueOf()}function zn(X,me,yt){return X<100&&X>=0?Date.UTC(X+400,me,yt)-vn:Date.UTC(X,me,yt)}function Pa(X,me){return me.erasAbbrRegex(X)}function ns(){var xn,Ar,X=[],me=[],yt=[],qt=[],xi=this.eras();for(xn=0,Ar=xi.length;xn<Ar;++xn)me.push(An(xi[xn].name)),X.push(An(xi[xn].abbr)),yt.push(An(xi[xn].narrow)),qt.push(An(xi[xn].name)),qt.push(An(xi[xn].abbr)),qt.push(An(xi[xn].narrow));this._erasRegex=new RegExp("^("+qt.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+me.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+X.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+yt.join("|")+")","i")}function Aa(X,me){St(0,[X,X.length],0,me)}function Zs(X,me,yt,qt,xn){var Ar;return null==X?Fi(this,qt,xn).year:(me>(Ar=no(X,qt,xn))&&(me=Ar),Ya.call(this,X,me,yt,qt,xn))}function Ya(X,me,yt,qt,xn){var Ar=go(X,me,yt,qt,xn),xi=Ei(Ar.year,0,Ar.dayOfYear);return this.year(xi.getUTCFullYear()),this.month(xi.getUTCMonth()),this.date(xi.getUTCDate()),this}St("N",0,0,"eraAbbr"),St("NN",0,0,"eraAbbr"),St("NNN",0,0,"eraAbbr"),St("NNNN",0,0,"eraName"),St("NNNNN",0,0,"eraNarrow"),St("y",["y",1],"yo","eraYear"),St("y",["yy",2],0,"eraYear"),St("y",["yyy",3],0,"eraYear"),St("y",["yyyy",4],0,"eraYear"),ot("N",Pa),ot("NN",Pa),ot("NNN",Pa),ot("NNNN",function(X,me){return me.erasNameRegex(X)}),ot("NNNNN",function(X,me){return me.erasNarrowRegex(X)}),ir(["N","NN","NNN","NNNN","NNNNN"],function(X,me,yt,qt){var xn=yt._locale.erasParse(X,qt,yt._strict);xn?H(yt).era=xn:H(yt).invalidEra=X}),ot("y",L),ot("yy",L),ot("yyy",L),ot("yyyy",L),ot("yo",function(X,me){return me._eraYearOrdinalRegex||L}),ir(["y","yy","yyy","yyyy"],0),ir(["yo"],function(X,me,yt,qt){var xn;yt._locale._eraYearOrdinalRegex&&(xn=X.match(yt._locale._eraYearOrdinalRegex)),me[0]=yt._locale.eraYearOrdinalParse?yt._locale.eraYearOrdinalParse(X,xn):parseInt(X,10)}),St(0,["gg",2],0,function(){return this.weekYear()%100}),St(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Aa("gggg","weekYear"),Aa("ggggg","weekYear"),Aa("GGGG","isoWeekYear"),Aa("GGGGG","isoWeekYear"),tr("weekYear","gg"),tr("isoWeekYear","GG"),dn("weekYear",1),dn("isoWeekYear",1),ot("G",Ue),ot("g",Ue),ot("GG",et,ut),ot("gg",et,ut),ot("GGGG",Ir,Tt),ot("gggg",Ir,Tt),ot("GGGGG",ht,yn),ot("ggggg",ht,yn),mr(["gggg","ggggg","GGGG","GGGGG"],function(X,me,yt,qt){me[qt.substr(0,2)]=$n(X)}),mr(["gg","GG"],function(X,me,yt,qt){me[qt]=e.parseTwoDigitYear(X)}),St("Q",0,"Qo","quarter"),tr("quarter","Q"),dn("quarter",7),ot("Q",Xt),ir("Q",function(X,me){me[1]=3*($n(X)-1)}),St("D",["DD",2],"Do","date"),tr("date","D"),dn("date",9),ot("D",et),ot("DD",et,ut),ot("Do",function(X,me){return X?me._dayOfMonthOrdinalParse||me._ordinalParse:me._dayOfMonthOrdinalParseLenient}),ir(["D","DD"],2),ir("Do",function(X,me){me[2]=$n(X.match(et)[0])});var Za=En("Date",!0);St("DDD",["DDDD",3],"DDDo","dayOfYear"),tr("dayOfYear","DDD"),dn("dayOfYear",4),ot("DDD",Qn),ot("DDDD",mt),ir(["DDD","DDDD"],function(X,me,yt){yt._dayOfYear=$n(X)}),St("m",["mm",2],0,"minute"),tr("minute","m"),dn("minute",14),ot("m",et),ot("mm",et,ut),ir(["m","mm"],4);var ol=En("Minutes",!1);St("s",["ss",2],0,"second"),tr("second","s"),dn("second",15),ot("s",et),ot("ss",et,ut),ir(["s","ss"],5);var sl,ac,Us=En("Seconds",!1);for(St("S",0,0,function(){return~~(this.millisecond()/100)}),St(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),St(0,["SSS",3],0,"millisecond"),St(0,["SSSS",4],0,function(){return 10*this.millisecond()}),St(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),St(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),St(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),St(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),St(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),tr("millisecond","ms"),dn("millisecond",16),ot("S",Qn,Xt),ot("SS",Qn,ut),ot("SSS",Qn,mt),sl="SSSS";sl.length<=9;sl+="S")ot(sl,L);function Zl(X,me){me[6]=$n(1e3*("0."+X))}for(sl="S";sl.length<=9;sl+="S")ir(sl,Zl);ac=En("Milliseconds",!1),St("z",0,0,"zoneAbbr"),St("zz",0,0,"zoneName");var ki=ie.prototype;function pl(X){return X}ki.add=Zi,ki.calendar=function(X,me){1===arguments.length&&(arguments[0]?fl(arguments[0])?(X=arguments[0],me=void 0):Ll(arguments[0])&&(me=arguments[0],X=void 0):(X=void 0,me=void 0));var yt=X||kt(),qt=Se(yt,this).startOf("day"),xn=e.calendarFormat(this,qt)||"sameElse",Ar=me&&(Ae(me[xn])?me[xn].call(this,yt):me[xn]);return this.format(Ar||this.localeData().calendar(xn,this,kt(yt)))},ki.clone=function(){return new ie(this)},ki.diff=function(X,me,yt){var qt,xn,Ar;if(!this.isValid())return NaN;if(!(qt=Se(X,this)).isValid())return NaN;switch(xn=6e4*(qt.utcOffset()-this.utcOffset()),me=Yn(me)){case"year":Ar=Yl(this,qt)/12;break;case"month":Ar=Yl(this,qt);break;case"quarter":Ar=Yl(this,qt)/3;break;case"second":Ar=(this-qt)/1e3;break;case"minute":Ar=(this-qt)/6e4;break;case"hour":Ar=(this-qt)/36e5;break;case"day":Ar=(this-qt-xn)/864e5;break;case"week":Ar=(this-qt-xn)/6048e5;break;default:Ar=this-qt}return yt?Ar:Sn(Ar)},ki.endOf=function(X){var me,yt;if(void 0===(X=Yn(X))||"millisecond"===X||!this.isValid())return this;switch(yt=this._isUTC?zn:kn,X){case"year":me=yt(this.year()+1,0,1)-1;break;case"quarter":me=yt(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":me=yt(this.year(),this.month()+1,1)-1;break;case"week":me=yt(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":me=yt(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":me=yt(this.year(),this.month(),this.date()+1)-1;break;case"hour":me=this._d.valueOf(),me+=en-Gn(me+(this._isUTC?0:this.utcOffset()*Dt),en)-1;break;case"minute":me=this._d.valueOf(),me+=Dt-Gn(me,Dt)-1;break;case"second":me=this._d.valueOf(),me+=1e3-Gn(me,1e3)-1}return this._d.setTime(me),e.updateOffset(this,!0),this},ki.format=function(X){X||(X=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var me=It(this,X);return this.localeData().postformat(me)},ki.from=function(X,me){return this.isValid()&&(oe(X)&&X.isValid()||kt(X).isValid())?Ao({to:this,from:X}).locale(this.locale()).humanize(!me):this.localeData().invalidDate()},ki.fromNow=function(X){return this.from(kt(),X)},ki.to=function(X,me){return this.isValid()&&(oe(X)&&X.isValid()||kt(X).isValid())?Ao({from:this,to:X}).locale(this.locale()).humanize(!me):this.localeData().invalidDate()},ki.toNow=function(X){return this.to(kt(),X)},ki.get=function(X){return Ae(this[X=Yn(X)])?this[X]():this},ki.invalidAt=function(){return H(this).overflow},ki.isAfter=function(X,me){var yt=oe(X)?X:kt(X);return!(!this.isValid()||!yt.isValid())&&("millisecond"===(me=Yn(me)||"millisecond")?this.valueOf()>yt.valueOf():yt.valueOf()<this.clone().startOf(me).valueOf())},ki.isBefore=function(X,me){var yt=oe(X)?X:kt(X);return!(!this.isValid()||!yt.isValid())&&("millisecond"===(me=Yn(me)||"millisecond")?this.valueOf()<yt.valueOf():this.clone().endOf(me).valueOf()<yt.valueOf())},ki.isBetween=function(X,me,yt,qt){var xn=oe(X)?X:kt(X),Ar=oe(me)?me:kt(me);return!!(this.isValid()&&xn.isValid()&&Ar.isValid())&&("("===(qt=qt||"()")[0]?this.isAfter(xn,yt):!this.isBefore(xn,yt))&&(")"===qt[1]?this.isBefore(Ar,yt):!this.isAfter(Ar,yt))},ki.isSame=function(X,me){var qt,yt=oe(X)?X:kt(X);return!(!this.isValid()||!yt.isValid())&&("millisecond"===(me=Yn(me)||"millisecond")?this.valueOf()===yt.valueOf():(qt=yt.valueOf(),this.clone().startOf(me).valueOf()<=qt&&qt<=this.clone().endOf(me).valueOf()))},ki.isSameOrAfter=function(X,me){return this.isSame(X,me)||this.isAfter(X,me)},ki.isSameOrBefore=function(X,me){return this.isSame(X,me)||this.isBefore(X,me)},ki.isValid=function(){return U(this)},ki.lang=Re,ki.locale=ge,ki.localeData=Be,ki.max=ur,ki.min=tn,ki.parsingFlags=function(){return D({},H(this))},ki.set=function(X,me){if("object"==typeof X){var qt,yt=function(X){var yt,me=[];for(yt in X)u(X,yt)&&me.push({unit:yt,priority:Kt[yt]});return me.sort(function(qt,xn){return qt.priority-xn.priority}),me}(X=Cn(X));for(qt=0;qt<yt.length;qt++)this[yt[qt].unit](X[yt[qt].unit])}else if(Ae(this[X=Yn(X)]))return this[X](me);return this},ki.startOf=function(X){var me,yt;if(void 0===(X=Yn(X))||"millisecond"===X||!this.isValid())return this;switch(yt=this._isUTC?zn:kn,X){case"year":me=yt(this.year(),0,1);break;case"quarter":me=yt(this.year(),this.month()-this.month()%3,1);break;case"month":me=yt(this.year(),this.month(),1);break;case"week":me=yt(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":me=yt(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":me=yt(this.year(),this.month(),this.date());break;case"hour":me=this._d.valueOf(),me-=Gn(me+(this._isUTC?0:this.utcOffset()*Dt),en);break;case"minute":me=this._d.valueOf(),me-=Gn(me,Dt);break;case"second":me=this._d.valueOf(),me-=Gn(me,1e3)}return this._d.setTime(me),e.updateOffset(this,!0),this},ki.subtract=na,ki.toArray=function(){var X=this;return[X.year(),X.month(),X.date(),X.hour(),X.minute(),X.second(),X.millisecond()]},ki.toObject=function(){var X=this;return{years:X.year(),months:X.month(),date:X.date(),hours:X.hours(),minutes:X.minutes(),seconds:X.seconds(),milliseconds:X.milliseconds()}},ki.toDate=function(){return new Date(this.valueOf())},ki.toISOString=function(X){if(!this.isValid())return null;var me=!0!==X,yt=me?this.clone().utc():this;return yt.year()<0||yt.year()>9999?It(yt,me?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):Ae(Date.prototype.toISOString)?me?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",It(yt,"Z")):It(yt,me?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ki.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var yt,qt,X="moment",me="";return this.isLocal()||(X=0===this.utcOffset()?"moment.utc":"moment.parseZone",me="Z"),yt="["+X+'("]',qt=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(yt+qt+"-MM-DD[T]HH:mm:ss.SSS"+me+'[")]')},"undefined"!=typeof Symbol&&null!=Symbol.for&&(ki[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),ki.toJSON=function(){return this.isValid()?this.toISOString():null},ki.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ki.unix=function(){return Math.floor(this.valueOf()/1e3)},ki.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ki.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ki.eraName=function(){var X,me,yt,qt=this.localeData().eras();for(X=0,me=qt.length;X<me;++X)if(yt=this.clone().startOf("day").valueOf(),qt[X].since<=yt&&yt<=qt[X].until||qt[X].until<=yt&&yt<=qt[X].since)return qt[X].name;return""},ki.eraNarrow=function(){var X,me,yt,qt=this.localeData().eras();for(X=0,me=qt.length;X<me;++X)if(yt=this.clone().startOf("day").valueOf(),qt[X].since<=yt&&yt<=qt[X].until||qt[X].until<=yt&&yt<=qt[X].since)return qt[X].narrow;return""},ki.eraAbbr=function(){var X,me,yt,qt=this.localeData().eras();for(X=0,me=qt.length;X<me;++X)if(yt=this.clone().startOf("day").valueOf(),qt[X].since<=yt&&yt<=qt[X].until||qt[X].until<=yt&&yt<=qt[X].since)return qt[X].abbr;return""},ki.eraYear=function(){var X,me,yt,qt,xn=this.localeData().eras();for(X=0,me=xn.length;X<me;++X)if(yt=xn[X].since<=xn[X].until?1:-1,qt=this.clone().startOf("day").valueOf(),xn[X].since<=qt&&qt<=xn[X].until||xn[X].until<=qt&&qt<=xn[X].since)return(this.year()-e(xn[X].since).year())*yt+xn[X].offset;return this.year()},ki.year=Qr,ki.isLeapYear=function(){return qn(this.year())},ki.weekYear=function(X){return Zs.call(this,X,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ki.isoWeekYear=function(X){return Zs.call(this,X,this.isoWeek(),this.isoWeekday(),1,4)},ki.quarter=ki.quarters=function(X){return null==X?Math.ceil((this.month()+1)/3):this.month(3*(X-1)+this.month()%3)},ki.month=or,ki.daysInMonth=function(){return di(this.year(),this.month())},ki.week=ki.weeks=function(X){var me=this.localeData().week(this);return null==X?me:this.add(7*(X-me),"d")},ki.isoWeek=ki.isoWeeks=function(X){var me=Fi(this,1,4).week;return null==X?me:this.add(7*(X-me),"d")},ki.weeksInYear=function(){var X=this.localeData()._week;return no(this.year(),X.dow,X.doy)},ki.weeksInWeekYear=function(){var X=this.localeData()._week;return no(this.weekYear(),X.dow,X.doy)},ki.isoWeeksInYear=function(){return no(this.year(),1,4)},ki.isoWeeksInISOWeekYear=function(){return no(this.isoWeekYear(),1,4)},ki.date=Za,ki.day=ki.days=function(X){if(!this.isValid())return null!=X?this:NaN;var me=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=X?(X=function(X,me){return"string"!=typeof X?X:isNaN(X)?"number"==typeof(X=me.weekdaysParse(X))?X:null:parseInt(X,10)}(X,this.localeData()),this.add(X-me,"d")):me},ki.weekday=function(X){if(!this.isValid())return null!=X?this:NaN;var me=(this.day()+7-this.localeData()._week.dow)%7;return null==X?me:this.add(X-me,"d")},ki.isoWeekday=function(X){if(!this.isValid())return null!=X?this:NaN;if(null!=X){var me=function(X,me){return"string"==typeof X?me.weekdaysParse(X)%7||7:isNaN(X)?null:X}(X,this.localeData());return this.day(this.day()%7?me:me-7)}return this.day()||7},ki.dayOfYear=function(X){var me=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==X?me:this.add(X-me,"d")},ki.hour=ki.hours=Dl,ki.minute=ki.minutes=ol,ki.second=ki.seconds=Us,ki.millisecond=ki.milliseconds=ac,ki.utcOffset=function(X,me,yt){var xn,qt=this._offset||0;if(!this.isValid())return null!=X?this:NaN;if(null!=X){if("string"==typeof X){if(null===(X=G(at,X)))return this}else Math.abs(X)<16&&!yt&&(X*=60);return!this._isUTC&&me&&(xn=ft(this)),this._offset=X,this._isUTC=!0,null!=xn&&this.add(xn,"m"),qt!==X&&(!me||this._changeInProgress?Ho(this,Ao(X-qt,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?qt:ft(this)},ki.utc=function(X){return this.utcOffset(0,X)},ki.local=function(X){return this._isUTC&&(this.utcOffset(0,X),this._isUTC=!1,X&&this.subtract(ft(this),"m")),this},ki.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var X=G(nt,this._i);null!=X?this.utcOffset(X):this.utcOffset(0,!0)}return this},ki.hasAlignedHourOffset=function(X){return!!this.isValid()&&(X=X?kt(X).utcOffset():0,(this.utcOffset()-X)%60==0)},ki.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ki.isLocal=function(){return!!this.isValid()&&!this._isUTC},ki.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ki.isUtc=dr,ki.isUTC=dr,ki.zoneAbbr=function(){return this._isUTC?"UTC":""},ki.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ki.dates=ne("dates accessor is deprecated. Use date instead.",Za),ki.months=ne("months accessor is deprecated. Use month instead",or),ki.years=ne("years accessor is deprecated. Use year instead",Qr),ki.zone=ne("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(X,me){return null!=X?("string"!=typeof X&&(X=-X),this.utcOffset(X,me),this):-this.utcOffset()}),ki.isDSTShifted=ne("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!_(this._isDSTShifted))return this._isDSTShifted;var me,X={};return Y(X,this),(X=hs(X))._a?(me=X._isUTC?x(X._a):kt(X._a),this._isDSTShifted=this.isValid()&&function(X,me,yt){var xi,qt=Math.min(X.length,me.length),xn=Math.abs(X.length-me.length),Ar=0;for(xi=0;xi<qt;xi++)(yt&&X[xi]!==me[xi]||!yt&&$n(X[xi])!==$n(me[xi]))&&Ar++;return Ar+xn}(X._a,me.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted});var _a=be.prototype;function iu(X,me,yt,qt){var xn=ye(),Ar=x().set(qt,me);return xn[yt](Ar,X)}function cc(X,me,yt){if(m(X)&&(me=X,X=void 0),X=X||"",null!=me)return iu(X,me,yt,"month");var qt,xn=[];for(qt=0;qt<12;qt++)xn[qt]=iu(X,qt,yt,"month");return xn}function Ac(X,me,yt,qt){"boolean"==typeof X?(m(me)&&(yt=me,me=void 0),me=me||""):(yt=me=X,X=!1,m(me)&&(yt=me,me=void 0),me=me||"");var xi,xn=ye(),Ar=X?xn._week.dow:0,fs=[];if(null!=yt)return iu(me,(yt+Ar)%7,qt,"day");for(xi=0;xi<7;xi++)fs[xi]=iu(me,(xi+Ar)%7,qt,"day");return fs}_a.calendar=function(X,me,yt){var qt=this._calendar[X]||this._calendar.sameElse;return Ae(qt)?qt.call(me,yt):qt},_a.longDateFormat=function(X){var me=this._longDateFormat[X],yt=this._longDateFormat[X.toUpperCase()];return me||!yt?me:(this._longDateFormat[X]=yt.match(je).map(function(qt){return"MMMM"===qt||"MM"===qt||"DD"===qt||"dddd"===qt?qt.slice(1):qt}).join(""),this._longDateFormat[X])},_a.invalidDate=function(){return this._invalidDate},_a.ordinal=function(X){return this._ordinal.replace("%d",X)},_a.preparse=pl,_a.postformat=pl,_a.relativeTime=function(X,me,yt,qt){var xn=this._relativeTime[yt];return Ae(xn)?xn(X,me,yt,qt):xn.replace(/%d/i,X)},_a.pastFuture=function(X,me){var yt=this._relativeTime[X>0?"future":"past"];return Ae(yt)?yt(me):yt.replace(/%s/i,me)},_a.set=function(X){var me,yt;for(yt in X)u(X,yt)&&(Ae(me=X[yt])?this[yt]=me:this["_"+yt]=me);this._config=X,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},_a.eras=function(X,me){var yt,qt,xn,Ar=this._eras||ye("en")._eras;for(yt=0,qt=Ar.length;yt<qt;++yt){switch(typeof Ar[yt].since){case"string":xn=e(Ar[yt].since).startOf("day"),Ar[yt].since=xn.valueOf()}switch(typeof Ar[yt].until){case"undefined":Ar[yt].until=1/0;break;case"string":xn=e(Ar[yt].until).startOf("day").valueOf(),Ar[yt].until=xn.valueOf()}}return Ar},_a.erasParse=function(X,me,yt){var qt,xn,xi,fs,aa,Ar=this.eras();for(X=X.toUpperCase(),qt=0,xn=Ar.length;qt<xn;++qt)if(xi=Ar[qt].name.toUpperCase(),fs=Ar[qt].abbr.toUpperCase(),aa=Ar[qt].narrow.toUpperCase(),yt)switch(me){case"N":case"NN":case"NNN":if(fs===X)return Ar[qt];break;case"NNNN":if(xi===X)return Ar[qt];break;case"NNNNN":if(aa===X)return Ar[qt]}else if([xi,fs,aa].indexOf(X)>=0)return Ar[qt]},_a.erasConvertYear=function(X,me){var yt=X.since<=X.until?1:-1;return void 0===me?e(X.since).year():e(X.since).year()+(me-X.offset)*yt},_a.erasAbbrRegex=function(X){return u(this,"_erasAbbrRegex")||ns.call(this),X?this._erasAbbrRegex:this._erasRegex},_a.erasNameRegex=function(X){return u(this,"_erasNameRegex")||ns.call(this),X?this._erasNameRegex:this._erasRegex},_a.erasNarrowRegex=function(X){return u(this,"_erasNarrowRegex")||ns.call(this),X?this._erasNarrowRegex:this._erasRegex},_a.months=function(X,me){return X?a(this._months)?this._months[X.month()]:this._months[(this._months.isFormat||Ke).test(me)?"format":"standalone"][X.month()]:a(this._months)?this._months:this._months.standalone},_a.monthsShort=function(X,me){return X?a(this._monthsShort)?this._monthsShort[X.month()]:this._monthsShort[Ke.test(me)?"format":"standalone"][X.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},_a.monthsParse=function(X,me,yt){var qt,xn,Ar;if(this._monthsParseExact)return bt.call(this,X,me,yt);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),qt=0;qt<12;qt++){if(xn=x([2e3,qt]),yt&&!this._longMonthsParse[qt]&&(this._longMonthsParse[qt]=new RegExp("^"+this.months(xn,"").replace(".","")+"$","i"),this._shortMonthsParse[qt]=new RegExp("^"+this.monthsShort(xn,"").replace(".","")+"$","i")),!yt&&!this._monthsParse[qt]&&(Ar="^"+this.months(xn,"")+"|^"+this.monthsShort(xn,""),this._monthsParse[qt]=new RegExp(Ar.replace(".",""),"i")),yt&&"MMMM"===me&&this._longMonthsParse[qt].test(X))return qt;if(yt&&"MMM"===me&&this._shortMonthsParse[qt].test(X))return qt;if(!yt&&this._monthsParse[qt].test(X))return qt}},_a.monthsRegex=function(X){return this._monthsParseExact?(u(this,"_monthsRegex")||ai.call(this),X?this._monthsStrictRegex:this._monthsRegex):(u(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&X?this._monthsStrictRegex:this._monthsRegex)},_a.monthsShortRegex=function(X){return this._monthsParseExact?(u(this,"_monthsRegex")||ai.call(this),X?this._monthsShortStrictRegex:this._monthsShortRegex):(u(this,"_monthsShortRegex")||(this._monthsShortRegex=Xe),this._monthsShortStrictRegex&&X?this._monthsShortStrictRegex:this._monthsShortRegex)},_a.week=function(X){return Fi(X,this._week.dow,this._week.doy).week},_a.firstDayOfYear=function(){return this._week.doy},_a.firstDayOfWeek=function(){return this._week.dow},_a.weekdays=function(X,me){var yt=a(this._weekdays)?this._weekdays:this._weekdays[X&&!0!==X&&this._weekdays.isFormat.test(me)?"format":"standalone"];return!0===X?es(yt,this._week.dow):X?yt[X.day()]:yt},_a.weekdaysMin=function(X){return!0===X?es(this._weekdaysMin,this._week.dow):X?this._weekdaysMin[X.day()]:this._weekdaysMin},_a.weekdaysShort=function(X){return!0===X?es(this._weekdaysShort,this._week.dow):X?this._weekdaysShort[X.day()]:this._weekdaysShort},_a.weekdaysParse=function(X,me,yt){var qt,xn,Ar;if(this._weekdaysParseExact)return fn.call(this,X,me,yt);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),qt=0;qt<7;qt++){if(xn=x([2e3,1]).day(qt),yt&&!this._fullWeekdaysParse[qt]&&(this._fullWeekdaysParse[qt]=new RegExp("^"+this.weekdays(xn,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[qt]=new RegExp("^"+this.weekdaysShort(xn,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[qt]=new RegExp("^"+this.weekdaysMin(xn,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[qt]||(Ar="^"+this.weekdays(xn,"")+"|^"+this.weekdaysShort(xn,"")+"|^"+this.weekdaysMin(xn,""),this._weekdaysParse[qt]=new RegExp(Ar.replace(".",""),"i")),yt&&"dddd"===me&&this._fullWeekdaysParse[qt].test(X))return qt;if(yt&&"ddd"===me&&this._shortWeekdaysParse[qt].test(X))return qt;if(yt&&"dd"===me&&this._minWeekdaysParse[qt].test(X))return qt;if(!yt&&this._weekdaysParse[qt].test(X))return qt}},_a.weekdaysRegex=function(X){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Li.call(this),X?this._weekdaysStrictRegex:this._weekdaysRegex):(u(this,"_weekdaysRegex")||(this._weekdaysRegex=oa),this._weekdaysStrictRegex&&X?this._weekdaysStrictRegex:this._weekdaysRegex)},_a.weekdaysShortRegex=function(X){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Li.call(this),X?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(u(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Er),this._weekdaysShortStrictRegex&&X?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},_a.weekdaysMinRegex=function(X){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Li.call(this),X?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(u(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=st),this._weekdaysMinStrictRegex&&X?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},_a.isPM=function(X){return"p"===(X+"").toLowerCase().charAt(0)},_a.meridiem=function(X,me,yt){return X>11?yt?"pm":"PM":yt?"am":"AM"},an("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(X){var me=X%10;return X+(1===$n(X%100/10)?"th":1===me?"st":2===me?"nd":3===me?"rd":"th")}}),e.lang=ne("moment.lang is deprecated. Use moment.locale instead.",an),e.langData=ne("moment.langData is deprecated. Use moment.localeData instead.",ye);var tl=Math.abs;function bc(X,me,yt,qt){var xn=Ao(me,yt);return X._milliseconds+=qt*xn._milliseconds,X._days+=qt*xn._days,X._months+=qt*xn._months,X._bubble()}function Jl(X){return X<0?Math.floor(X):Math.ceil(X)}function yl(X){return 4800*X/146097}function El(X){return 146097*X/4800}function N(X){return function(){return this.as(X)}}var $=N("ms"),Q=N("s"),de=N("m"),ve=N("h"),qe=N("d"),De=N("w"),_t=N("M"),Yt=N("Q"),Zt=N("y");function sr(X){return function(){return this.isValid()?this._data[X]:NaN}}var Tr=sr("milliseconds"),Yr=sr("seconds"),Pi=sr("minutes"),yo=sr("hours"),Co=sr("days"),Xo=sr("months"),ts=sr("years");var Ts=Math.round,Ms={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function xs(X,me,yt,qt,xn){return xn.relativeTime(me||1,!!yt,X,qt)}var rl=Math.abs;function Gl(X){return(X>0)-(X<0)||+X}function _c(){if(!this.isValid())return this.localeData().invalidDate();var qt,xn,Ar,xi,aa,za,gc,Ql,X=rl(this._milliseconds)/1e3,me=rl(this._days),yt=rl(this._months),fs=this.asSeconds();return fs?(qt=Sn(X/60),xn=Sn(qt/60),X%=60,qt%=60,Ar=Sn(yt/12),yt%=12,xi=X?X.toFixed(3).replace(/\.?0+$/,""):"",aa=fs<0?"-":"",za=Gl(this._months)!==Gl(fs)?"-":"",gc=Gl(this._days)!==Gl(fs)?"-":"",Ql=Gl(this._milliseconds)!==Gl(fs)?"-":"",aa+"P"+(Ar?za+Ar+"Y":"")+(yt?za+yt+"M":"")+(me?gc+me+"D":"")+(xn||qt||X?"T":"")+(xn?Ql+xn+"H":"")+(qt?Ql+qt+"M":"")+(X?Ql+xi+"S":"")):"P0D"}var $s=Ui.prototype;return $s.isValid=function(){return this._isValid},$s.abs=function(){var X=this._data;return this._milliseconds=tl(this._milliseconds),this._days=tl(this._days),this._months=tl(this._months),X.milliseconds=tl(X.milliseconds),X.seconds=tl(X.seconds),X.minutes=tl(X.minutes),X.hours=tl(X.hours),X.months=tl(X.months),X.years=tl(X.years),this},$s.add=function(X,me){return bc(this,X,me,1)},$s.subtract=function(X,me){return bc(this,X,me,-1)},$s.as=function(X){if(!this.isValid())return NaN;var me,yt,qt=this._milliseconds;if("month"===(X=Yn(X))||"quarter"===X||"year"===X)switch(me=this._days+qt/864e5,yt=this._months+yl(me),X){case"month":return yt;case"quarter":return yt/3;case"year":return yt/12}else switch(me=this._days+Math.round(El(this._months)),X){case"week":return me/7+qt/6048e5;case"day":return me+qt/864e5;case"hour":return 24*me+qt/36e5;case"minute":return 1440*me+qt/6e4;case"second":return 86400*me+qt/1e3;case"millisecond":return Math.floor(864e5*me)+qt;default:throw new Error("Unknown unit "+X)}},$s.asMilliseconds=$,$s.asSeconds=Q,$s.asMinutes=de,$s.asHours=ve,$s.asDays=qe,$s.asWeeks=De,$s.asMonths=_t,$s.asQuarters=Yt,$s.asYears=Zt,$s.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*$n(this._months/12):NaN},$s._bubble=function(){var xn,Ar,xi,fs,aa,X=this._milliseconds,me=this._days,yt=this._months,qt=this._data;return X>=0&&me>=0&&yt>=0||X<=0&&me<=0&&yt<=0||(X+=864e5*Jl(El(yt)+me),me=0,yt=0),qt.milliseconds=X%1e3,xn=Sn(X/1e3),qt.seconds=xn%60,Ar=Sn(xn/60),qt.minutes=Ar%60,xi=Sn(Ar/60),qt.hours=xi%24,me+=Sn(xi/24),yt+=aa=Sn(yl(me)),me-=Jl(El(aa)),fs=Sn(yt/12),yt%=12,qt.days=me,qt.months=yt,qt.years=fs,this},$s.clone=function(){return Ao(this)},$s.get=function(X){return X=Yn(X),this.isValid()?this[X+"s"]():NaN},$s.milliseconds=Tr,$s.seconds=Yr,$s.minutes=Pi,$s.hours=yo,$s.days=Co,$s.weeks=function(){return Sn(this.days()/7)},$s.months=Xo,$s.years=ts,$s.humanize=function(X,me){if(!this.isValid())return this.localeData().invalidDate();var xn,Ar,yt=!1,qt=Ms;return"object"==typeof X&&(me=X,X=!1),"boolean"==typeof X&&(yt=X),"object"==typeof me&&(qt=Object.assign({},Ms,me),null!=me.s&&null==me.ss&&(qt.ss=me.s-1)),Ar=function(X,me,yt,qt){var xn=Ao(X).abs(),Ar=Ts(xn.as("s")),xi=Ts(xn.as("m")),fs=Ts(xn.as("h")),aa=Ts(xn.as("d")),za=Ts(xn.as("M")),gc=Ts(xn.as("w")),Ql=Ts(xn.as("y")),Ec=Ar<=yt.ss&&["s",Ar]||Ar<yt.s&&["ss",Ar]||xi<=1&&["m"]||xi<yt.m&&["mm",xi]||fs<=1&&["h"]||fs<yt.h&&["hh",fs]||aa<=1&&["d"]||aa<yt.d&&["dd",aa];return null!=yt.w&&(Ec=Ec||gc<=1&&["w"]||gc<yt.w&&["ww",gc]),(Ec=Ec||za<=1&&["M"]||za<yt.M&&["MM",za]||Ql<=1&&["y"]||["yy",Ql])[2]=me,Ec[3]=+X>0,Ec[4]=qt,xs.apply(null,Ec)}(this,!yt,qt,xn=this.localeData()),yt&&(Ar=xn.pastFuture(+this,Ar)),xn.postformat(Ar)},$s.toISOString=_c,$s.toString=_c,$s.toJSON=_c,$s.locale=ge,$s.localeData=Be,$s.toIsoString=ne("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",_c),$s.lang=Re,St("X",0,0,"unix"),St("x",0,0,"valueOf"),ot("x",Ue),ot("X",/[+-]?\d+(\.\d{1,3})?/),ir("X",function(X,me,yt){yt._d=new Date(1e3*parseFloat(X))}),ir("x",function(X,me,yt){yt._d=new Date($n(X))}),e.version="2.29.1",t=kt,e.fn=ki,e.min=function(){return gn("isBefore",[].slice.call(arguments,0))},e.max=function(){return gn("isAfter",[].slice.call(arguments,0))},e.now=function(){return Date.now?Date.now():+new Date},e.utc=x,e.unix=function(X){return kt(1e3*X)},e.months=function(X,me){return cc(X,me,"months")},e.isDate=b,e.locale=an,e.invalid=M,e.duration=Ao,e.isMoment=oe,e.weekdays=function(X,me,yt){return Ac(X,me,yt,"weekdays")},e.parseZone=function(){return kt.apply(null,arguments).parseZone()},e.localeData=ye,e.isDuration=io,e.monthsShort=function(X,me){return cc(X,me,"monthsShort")},e.weekdaysMin=function(X,me,yt){return Ac(X,me,yt,"weekdaysMin")},e.defineLocale=Nt,e.updateLocale=function(X,me){if(null!=me){var yt,qt,xn=sa;null!=Fo[X]&&null!=Fo[X].parentLocale?Fo[X].set(Oe(Fo[X]._config,me)):(null!=(qt=pt(X))&&(xn=qt._config),me=Oe(xn,me),null==qt&&(me.abbr=X),(yt=new be(me)).parentLocale=Fo[X],Fo[X]=yt),an(X)}else null!=Fo[X]&&(null!=Fo[X].parentLocale?(Fo[X]=Fo[X].parentLocale,X===an()&&an(X)):null!=Fo[X]&&delete Fo[X]);return Fo[X]},e.locales=function(){return ue(Fo)},e.weekdaysShort=function(X,me,yt){return Ac(X,me,yt,"weekdaysShort")},e.normalizeUnits=Yn,e.relativeTimeRounding=function(X){return void 0===X?Ts:"function"==typeof X&&(Ts=X,!0)},e.relativeTimeThreshold=function(X,me){return void 0!==Ms[X]&&(void 0===me?Ms[X]:(Ms[X]=me,"s"===X&&(Ms.ss=me-1),!0))},e.calendarFormat=function(X,me){var yt=X.diff(me,"days",!0);return yt<-6?"sameElse":yt<-1?"lastWeek":yt<0?"lastDay":yt<1?"sameDay":yt<2?"nextDay":yt<7?"nextWeek":"sameElse"},e.prototype=ki,e.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"},e}()},11971:(Ge,g,o)=>{"use strict";o.d(g,{_:()=>u,w:()=>_});var t=o(74788),e=o(12057),s=function(m,b,C,D){var H,x=arguments.length,j=x<3?b:null===D?D=Object.getOwnPropertyDescriptor(b,C):D;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)j=Reflect.decorate(m,b,C,D);else for(var z=m.length-1;z>=0;z--)(H=m[z])&&(j=(x<3?H(j):x>3?H(b,C,j):H(b,C))||j);return x>3&&j&&Object.defineProperty(b,C,j),j},a=function(m,b){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(m,b)},l=function(m,b){return function(C,D){b(C,D,m)}},u=function(){function m(b,C,D){this._el=b,this._ngZone=C,this.platformId=D,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new t.vpe,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return m.prototype.ngOnInit=function(){!(0,e.NF)(this.platformId)||this._init()},m.prototype.ngOnDestroy=function(){!(0,e.NF)(this.platformId)||(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},m.prototype.ngOnChanges=function(b){!(0,e.NF)(this.platformId)||(b.attachOutsideOnClick||b.exclude||b.emitOnBlur)&&this._init()},m.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map(function(b){return b.trim()})),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},m.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},m.prototype._excludeCheck=function(){if(this.exclude)try{var b=Array.from(document.querySelectorAll(this.exclude));b&&(this._nodesExcluded=b)}catch(C){console.error("[ng-click-outside] Check your exclude selector syntax.",C)}},m.prototype._onClickBody=function(b){!this.clickOutsideEnabled||(this.excludeBeforeClick&&this._excludeCheck(),!this._el.nativeElement.contains(b.target)&&!this._shouldExclude(b.target)&&(this._emit(b),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},m.prototype._onWindowBlur=function(b){var C=this;setTimeout(function(){document.hidden||C._emit(b)})},m.prototype._emit=function(b){var C=this;!this.clickOutsideEnabled||this._ngZone.run(function(){return C.clickOutside.emit(b)})},m.prototype._shouldExclude=function(b){for(var C=0,D=this._nodesExcluded;C<D.length;C++)if(D[C].contains(b))return!0;return!1},m.prototype._initClickOutsideListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){b._events.forEach(function(C){return document.addEventListener(C,b._onClickBody)})})},m.prototype._removeClickOutsideListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){b._events.forEach(function(C){return document.removeEventListener(C,b._onClickBody)})})},m.prototype._initAttachOutsideOnClickListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){b._events.forEach(function(C){return b._el.nativeElement.addEventListener(C,b._initOnClickBody)})})},m.prototype._removeAttachOutsideOnClickListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){b._events.forEach(function(C){return b._el.nativeElement.removeEventListener(C,b._initOnClickBody)})})},m.prototype._initWindowBlurListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){window.addEventListener("blur",b._onWindowBlur)})},m.prototype._removeWindowBlurListener=function(){var b=this;this._ngZone.runOutsideAngular(function(){window.removeEventListener("blur",b._onWindowBlur)})},s([(0,t.IIB)(),a("design:type",Boolean)],m.prototype,"clickOutsideEnabled",void 0),s([(0,t.IIB)(),a("design:type",Boolean)],m.prototype,"attachOutsideOnClick",void 0),s([(0,t.IIB)(),a("design:type",Boolean)],m.prototype,"delayClickOutsideInit",void 0),s([(0,t.IIB)(),a("design:type",Boolean)],m.prototype,"emitOnBlur",void 0),s([(0,t.IIB)(),a("design:type",String)],m.prototype,"exclude",void 0),s([(0,t.IIB)(),a("design:type",Boolean)],m.prototype,"excludeBeforeClick",void 0),s([(0,t.IIB)(),a("design:type",String)],m.prototype,"clickOutsideEvents",void 0),s([(0,t.r_U)(),a("design:type",t.vpe)],m.prototype,"clickOutside",void 0),(m=s([l(2,(0,t.tBr)(t.Lbi)),a("design:paramtypes",[t.SBq,t.R0b,Object])],m)).\u0275fac=function(C){return new(C||m)(t.Y36(t.SBq),t.Y36(t.R0b),t.Y36(t.Lbi))},m.\u0275dir=t.lG2({type:m,selectors:[["","clickOutside",""]],inputs:{clickOutsideEnabled:"clickOutsideEnabled",attachOutsideOnClick:"attachOutsideOnClick",delayClickOutsideInit:"delayClickOutsideInit",emitOnBlur:"emitOnBlur",exclude:"exclude",excludeBeforeClick:"excludeBeforeClick",clickOutsideEvents:"clickOutsideEvents"},outputs:{clickOutside:"clickOutside"},features:[t.TTD]}),m.\u0275prov=t.Yz7({token:m,factory:function(b){return m.\u0275fac(b)}}),m}(),_=function(){function m(){}return m.\u0275fac=function(C){return new(C||m)},m.\u0275mod=t.oAB({type:m}),m.\u0275inj=t.cJS({}),m}()},7194:(Ge,g,o)=>{"use strict";o.d(g,{jh:()=>oe,m9:()=>fe});var t=o(74788),e=o(26215),s=o(57765);var _=o(6823);const m=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function C(Me,Oe){return"rgba("+Me.concat(Oe).join(",")+")"}function D(Me,Oe){return Math.floor(Math.random()*(Oe-Me+1))+Me}function H(Me){return{backgroundColor:Me.map(Oe=>C(Oe,.6)),borderColor:Me.map(()=>"#fff"),pointBackgroundColor:Me.map(Oe=>C(Oe,1)),pointBorderColor:Me.map(()=>"#fff"),pointHoverBackgroundColor:Me.map(Oe=>C(Oe,1)),pointHoverBorderColor:Me.map(Oe=>C(Oe,1))}}function U(){return[D(0,255),D(0,255),D(0,255)]}function M(Me){return m[Me]||U()}function I(Me){const Oe=new Array(Me);for(let be=0;be<Me;be++)Oe[be]=m[be]||U();return Oe}let J=(()=>{class Me{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new e.X({})}setColorschemesOptions(be){this.pColorschemesOptions=be,this.colorschemesOptions.next(be)}getColorschemesOptions(){return this.pColorschemesOptions}}return Me.\u0275fac=function(be){return new(be||Me)},Me.\u0275prov=(0,t.Yz7)({factory:function(){return new Me},token:Me,providedIn:"root"}),Me})();const ie={Default:0,Update:1,Refresh:2};ie[ie.Default]="Default",ie[ie.Update]="Update",ie[ie.Refresh]="Refresh";let oe=(()=>{class Me{constructor(be,ue){this.element=be,this.themeService=ue,this.options={},this.chartClick=new t.vpe,this.chartHover=new t.vpe,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(be){_.pluginService.register(be)}static unregisterPlugin(be){_.pluginService.unregister(be)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(be=>this.themeChanged(be)))}themeChanged(be){this.refresh()}ngDoCheck(){if(!this.chart)return;let be=ie.Default;const ue=He=>{be=He>be?He:be};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,ue(ie.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,ue(ie.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,ue(ie.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,ue(ie.Update)),this.datasets&&this.datasets.filter((He,$e)=>He.data!==this.old.datasetsDataObjects[$e]).length&&(this.old.datasetsDataObjects=this.datasets.map(He=>He.data),ue(ie.Update)),this.datasets&&this.datasets.filter((He,$e)=>He.data.length!==this.old.datasetsDataLengths[$e]).length&&(this.old.datasetsDataLengths=this.datasets.map(He=>He.data.length),ue(ie.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),ue(ie.Update)),this.colors&&this.colors.filter((He,$e)=>!this.colorsEqual(He,this.old.colors[$e])).length&&(this.old.colors=this.colors.map(He=>this.copyColor(He)),this.updateColors(),ue(ie.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,ue(ie.Update)),this.labels&&this.labels.filter((He,$e)=>!this.labelsEqual(He,this.old.labels[$e])).length&&(this.old.labels=this.labels.map(He=>this.copyLabel(He)),ue(ie.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,ue(ie.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,ue(ie.Refresh)),be){case ie.Default:break;case ie.Update:this.update();break;case ie.Refresh:this.refresh()}}copyLabel(be){return Array.isArray(be)?[...be]:be}labelsEqual(be,ue){return Array.isArray(be)===Array.isArray(ue)&&(Array.isArray(be)||be===ue)&&(!Array.isArray(be)||be.length===ue.length)&&(!Array.isArray(be)||0===be.filter((He,$e)=>He!==ue[$e]).length)}copyColor(be){return{backgroundColor:be.backgroundColor,borderWidth:be.borderWidth,borderColor:be.borderColor,borderCapStyle:be.borderCapStyle,borderDash:be.borderDash,borderDashOffset:be.borderDashOffset,borderJoinStyle:be.borderJoinStyle,pointBorderColor:be.pointBorderColor,pointBackgroundColor:be.pointBackgroundColor,pointBorderWidth:be.pointBorderWidth,pointRadius:be.pointRadius,pointHoverRadius:be.pointHoverRadius,pointHitRadius:be.pointHitRadius,pointHoverBackgroundColor:be.pointHoverBackgroundColor,pointHoverBorderColor:be.pointHoverBorderColor,pointHoverBorderWidth:be.pointHoverBorderWidth,pointStyle:be.pointStyle,hoverBackgroundColor:be.hoverBackgroundColor,hoverBorderColor:be.hoverBorderColor,hoverBorderWidth:be.hoverBorderWidth}}colorsEqual(be,ue){return!be==!ue&&(!be||be.backgroundColor===ue.backgroundColor&&be.borderWidth===ue.borderWidth&&be.borderColor===ue.borderColor&&be.borderCapStyle===ue.borderCapStyle&&be.borderDash===ue.borderDash&&be.borderDashOffset===ue.borderDashOffset&&be.borderJoinStyle===ue.borderJoinStyle&&be.pointBorderColor===ue.pointBorderColor&&be.pointBackgroundColor===ue.pointBackgroundColor&&be.pointBorderWidth===ue.pointBorderWidth&&be.pointRadius===ue.pointRadius&&be.pointHoverRadius===ue.pointHoverRadius&&be.pointHitRadius===ue.pointHitRadius&&be.pointHoverBackgroundColor===ue.pointHoverBackgroundColor&&be.pointHoverBorderColor===ue.pointHoverBorderColor&&be.pointHoverBorderWidth===ue.pointHoverBorderWidth&&be.pointStyle===ue.pointStyle&&be.hoverBackgroundColor===ue.hoverBackgroundColor&&be.hoverBorderColor===ue.hoverBorderColor&&be.hoverBorderWidth===ue.hoverBorderWidth)}updateColors(){this.datasets.forEach((be,ue)=>{this.colors&&this.colors[ue]?Object.assign(be,this.colors[ue]):Object.assign(be,function(Me,Oe,be){if("pie"===Me||"doughnut"===Me)return H(I(be));if("polarArea"===Me)return function(Me){return{backgroundColor:Me.map(Oe=>C(Oe,.6)),borderColor:Me.map(Oe=>C(Oe,1)),hoverBackgroundColor:Me.map(Oe=>C(Oe,.8)),hoverBorderColor:Me.map(Oe=>C(Oe,1))}}(I(be));if("line"===Me||"radar"===Me)return function(Me){return{backgroundColor:C(Me,.4),borderColor:C(Me,1),pointBackgroundColor:C(Me,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:C(Me,.8)}}(M(Oe));if("bar"===Me||"horizontalBar"===Me)return function(Me){return{backgroundColor:C(Me,.6),borderColor:C(Me,1),hoverBackgroundColor:C(Me,.8),hoverBorderColor:C(Me,1)}}(M(Oe));if("bubble"===Me||"scatter"===Me)return H(I(be));throw new Error(`getColors - Unsupported chart type ${Me}`)}(this.chartType,ue,be.data.length),Object.assign({},be))})}ngOnChanges(be){let ue=ie.Default;const He=$e=>{ue=$e>ue?$e:ue};switch(be.hasOwnProperty("data")&&be.data.currentValue&&(this.propagateDataToDatasets(be.data.currentValue),He(ie.Update)),be.hasOwnProperty("datasets")&&be.datasets.currentValue&&(this.propagateDatasetsToData(be.datasets.currentValue),He(ie.Update)),be.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=be.labels.currentValue),He(ie.Update)),be.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=be.legend.currentValue,this.chart.generateLegend()),He(ie.Update)),be.hasOwnProperty("options")&&He(ie.Refresh),ue){case ie.Update:this.update();break;case ie.Refresh:case ie.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(be=>be.unsubscribe())}update(be){if(this.chart)return this.chart.update(be)}hideDataset(be,ue){this.chart.getDatasetMeta(be).hidden=ue,this.chart.update()}isDatasetHidden(be){return this.chart.getDatasetMeta(be).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const be=this.getDatasets(),ue=Object.assign({},this.options);!1===this.legend&&(ue.legend={display:!1}),ue.hover=ue.hover||{},ue.hover.onHover||(ue.hover.onHover=($e,F)=>{F&&!F.length||this.chartHover.emit({event:$e,active:F})}),ue.onClick||(ue.onClick=($e,F)=>{this.chartClick.emit({event:$e,active:F})});const He=this.smartMerge(ue,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:be},plugins:this.plugins,options:He}}getChartBuilder(be){const ue=this.getChartConfiguration();return new _.Chart(be,ue)}smartMerge(be,ue,He=0){if(0===He&&(be=function(Me){return(0,s.Z)(Me,5)}(be)),Object.keys(ue).forEach(F=>{if(Array.isArray(ue[F])){const je=be[F];je&&je.forEach(Et=>{this.smartMerge(Et,ue[F][0],He+1)})}else"object"==typeof ue[F]?(F in be||(be[F]={}),this.smartMerge(be[F],ue[F],He+1)):be[F]=ue[F]}),0===He)return be}isMultiLineLabel(be){return Array.isArray(be)}joinLabel(be){return be?this.isMultiLineLabel(be)?be.join(" "):be:null}propagateDatasetsToData(be){this.data=this.datasets.map(ue=>ue.data),this.chart&&(this.chart.data.datasets=be),this.updateColors()}propagateDataToDatasets(be){this.isMultiDataSet(be)?this.datasets&&be.length===this.datasets.length?this.datasets.forEach((ue,He)=>{ue.data=be[He]}):(this.datasets=be.map((ue,He)=>({data:ue,label:this.joinLabel(this.labels[He])||`Label ${He}`})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0]||(this.datasets[0]={}),this.datasets[0].data=be,this.datasets.splice(1)):(this.datasets=[{data:be}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(be){return Array.isArray(be[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error(`ng-charts configuration error, data or datasets field are required to render chart ${this.chartType}`);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}return Me.\u0275fac=function(be){return new(be||Me)(t.Y36(t.SBq),t.Y36(J))},Me.\u0275dir=t.lG2({type:Me,selectors:[["canvas","baseChart",""]],inputs:{options:"options",data:"data",datasets:"datasets",labels:"labels",chartType:"chartType",colors:"colors",legend:"legend",plugins:"plugins"},outputs:{chartClick:"chartClick",chartHover:"chartHover"},exportAs:["base-chart"],features:[t.TTD]}),Me})(),fe=(()=>{class Me{}return Me.\u0275fac=function(be){return new(be||Me)},Me.\u0275mod=t.oAB({type:Me}),Me.\u0275inj=t.cJS({imports:[[]]}),Me})()},37496:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>s,i:()=>e});var t=o(74788);let e=(()=>{class a{transform(u,h,_){return _?h.call(_,u):h(u)}}return a.\u0275fac=function(u){return new(u||a)},a.\u0275pipe=t.Yjl({name:"pipeFunction",type:a,pure:!0}),a})(),s=(()=>{class a{}return a.\u0275fac=function(u){return new(u||a)},a.\u0275mod=t.oAB({type:a}),a.\u0275inj=t.cJS({}),a})()},91376:(Ge,g,o)=>{"use strict";o.d(g,{Rh:()=>F,_W:()=>ue});var t=o(74788),e=o(56083),s=o(79765),a=o(91211),l=o(12057);const u=["toast-component",""];function h(St,At){if(1&St){const Qe=t.EpF();t.TgZ(0,"button",5),t.NdJ("click",function(){return t.CHM(Qe),t.oxw().remove()}),t.TgZ(1,"span",6),t._uU(2,"\xd7"),t.qZA(),t.qZA()}}function _(St,At){if(1&St&&(t.ynx(0),t._uU(1),t.BQk()),2&St){const Qe=t.oxw(2);t.xp6(1),t.hij("[",Qe.duplicatesCount+1,"]")}}function m(St,At){if(1&St&&(t.TgZ(0,"div"),t._uU(1),t.YNc(2,_,2,1,"ng-container",4),t.qZA()),2&St){const Qe=t.oxw();t.Tol(Qe.options.titleClass),t.uIk("aria-label",Qe.title),t.xp6(1),t.hij(" ",Qe.title," "),t.xp6(1),t.Q6J("ngIf",Qe.duplicatesCount)}}function b(St,At){if(1&St&&t._UZ(0,"div",7),2&St){const Qe=t.oxw();t.Tol(Qe.options.messageClass),t.Q6J("innerHTML",Qe.message,t.oJD)}}function C(St,At){if(1&St&&(t.TgZ(0,"div",8),t._uU(1),t.qZA()),2&St){const Qe=t.oxw();t.Tol(Qe.options.messageClass),t.uIk("aria-label",Qe.message),t.xp6(1),t.hij(" ",Qe.message," ")}}function D(St,At){if(1&St&&(t.TgZ(0,"div"),t._UZ(1,"div",9),t.qZA()),2&St){const Qe=t.oxw();t.xp6(1),t.Udp("width",Qe.width+"%")}}function x(St,At){if(1&St){const Qe=t.EpF();t.TgZ(0,"button",5),t.NdJ("click",function(){return t.CHM(Qe),t.oxw().remove()}),t.TgZ(1,"span",6),t._uU(2,"\xd7"),t.qZA(),t.qZA()}}function j(St,At){if(1&St&&(t.ynx(0),t._uU(1),t.BQk()),2&St){const Qe=t.oxw(2);t.xp6(1),t.hij("[",Qe.duplicatesCount+1,"]")}}function H(St,At){if(1&St&&(t.TgZ(0,"div"),t._uU(1),t.YNc(2,j,2,1,"ng-container",4),t.qZA()),2&St){const Qe=t.oxw();t.Tol(Qe.options.titleClass),t.uIk("aria-label",Qe.title),t.xp6(1),t.hij(" ",Qe.title," "),t.xp6(1),t.Q6J("ngIf",Qe.duplicatesCount)}}function z(St,At){if(1&St&&t._UZ(0,"div",7),2&St){const Qe=t.oxw();t.Tol(Qe.options.messageClass),t.Q6J("innerHTML",Qe.message,t.oJD)}}function U(St,At){if(1&St&&(t.TgZ(0,"div",8),t._uU(1),t.qZA()),2&St){const Qe=t.oxw();t.Tol(Qe.options.messageClass),t.uIk("aria-label",Qe.message),t.xp6(1),t.hij(" ",Qe.message," ")}}function M(St,At){if(1&St&&(t.TgZ(0,"div"),t._UZ(1,"div",9),t.qZA()),2&St){const Qe=t.oxw();t.xp6(1),t.Udp("width",Qe.width+"%")}}class Y{constructor(At,Qe,It,ae,Ie,dt){this.toastId=At,this.config=Qe,this.message=It,this.title=ae,this.toastType=Ie,this.toastRef=dt,this._onTap=new s.xQ,this._onAction=new s.xQ,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(At){this._onAction.next(At)}onAction(){return this._onAction.asObservable()}}const ie={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,includeTitleDuplicates:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing",payload:null},oe=new t.OlP("ToastConfig");class fe{constructor(At,Qe){this.component=At,this.injector=Qe}attach(At,Qe){return this._attachedHost=At,At.attach(this,Qe)}detach(){const At=this._attachedHost;if(At)return this._attachedHost=void 0,At.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(At){this._attachedHost=At}}class he extends class{attach(At,Qe){return this._attachedPortal=At,this.attachComponentPortal(At,Qe)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(At){this._disposeFn=At}}{constructor(At,Qe,It){super(),this._hostDomElement=At,this._componentFactoryResolver=Qe,this._appRef=It}attachComponentPortal(At,Qe){const It=this._componentFactoryResolver.resolveComponentFactory(At.component);let ae;return ae=It.create(At.injector),this._appRef.attachView(ae.hostView),this.setDisposeFn(()=>{this._appRef.detachView(ae.hostView),ae.destroy()}),Qe?this._hostDomElement.insertBefore(this._getComponentRootNode(ae),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(ae)),ae}_getComponentRootNode(At){return At.hostView.rootNodes[0]}}let ce=(()=>{class St{constructor(Qe){this._document=Qe}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const Qe=this._document.createElement("div");Qe.classList.add("overlay-container"),this._document.body.appendChild(Qe),this._containerElement=Qe}}return St.\u0275fac=function(Qe){return new(Qe||St)(t.LFG(l.K0))},St.\u0275prov=t.Yz7({factory:function(){return new St(t.LFG(l.K0))},token:St,providedIn:"root"}),St})();class Ae{constructor(At){this._portalHost=At}attach(At,Qe=!0){return this._portalHost.attach(At,Qe)}detach(){return this._portalHost.detach()}}let Me=(()=>{class St{constructor(Qe,It,ae,Ie){this._overlayContainer=Qe,this._componentFactoryResolver=It,this._appRef=ae,this._document=Ie,this._paneElements=new Map}create(Qe,It){return this._createOverlayRef(this.getPaneElement(Qe,It))}getPaneElement(Qe="",It){return this._paneElements.get(It)||this._paneElements.set(It,{}),this._paneElements.get(It)[Qe]||(this._paneElements.get(It)[Qe]=this._createPaneElement(Qe,It)),this._paneElements.get(It)[Qe]}_createPaneElement(Qe,It){const ae=this._document.createElement("div");return ae.id="toast-container",ae.classList.add(Qe),ae.classList.add("toast-container"),It?It.getContainerElement().appendChild(ae):this._overlayContainer.getContainerElement().appendChild(ae),ae}_createPortalHost(Qe){return new he(Qe,this._componentFactoryResolver,this._appRef)}_createOverlayRef(Qe){return new Ae(this._createPortalHost(Qe))}}return St.\u0275fac=function(Qe){return new(Qe||St)(t.LFG(ce),t.LFG(t._Vd),t.LFG(t.z2F),t.LFG(l.K0))},St.\u0275prov=t.Yz7({factory:function(){return new St(t.LFG(ce),t.LFG(t._Vd),t.LFG(t.z2F),t.LFG(l.K0))},token:St,providedIn:"root"}),St})();class Oe{constructor(At){this._overlayRef=At,this.duplicatesCount=0,this._afterClosed=new s.xQ,this._activate=new s.xQ,this._manualClose=new s.xQ,this._resetTimeout=new s.xQ,this._countDuplicate=new s.xQ}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(At,Qe){At&&this._resetTimeout.next(),Qe&&this._countDuplicate.next(++this.duplicatesCount)}}class be{constructor(At,Qe){this._toastPackage=At,this._parentInjector=Qe}get(At,Qe,It){return At===Y?this._toastPackage:this._parentInjector.get(At,Qe,It)}}let ue=(()=>{class St{constructor(Qe,It,ae,Ie,dt){this.overlay=It,this._injector=ae,this.sanitizer=Ie,this.ngZone=dt,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign(Object.assign({},Qe.default),Qe.config),Qe.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign(Object.assign({},Qe.default.iconClasses),Qe.config.iconClasses))}show(Qe,It,ae={},Ie=""){return this._preBuildNotification(Ie,Qe,It,this.applyConfig(ae))}success(Qe,It,ae={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",Qe,It,this.applyConfig(ae))}error(Qe,It,ae={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",Qe,It,this.applyConfig(ae))}info(Qe,It,ae={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",Qe,It,this.applyConfig(ae))}warning(Qe,It,ae={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",Qe,It,this.applyConfig(ae))}clear(Qe){for(const It of this.toasts)if(void 0!==Qe){if(It.toastId===Qe)return void It.toastRef.manualClose()}else It.toastRef.manualClose()}remove(Qe){const It=this._findToast(Qe);if(!It||(It.activeToast.toastRef.close(),this.toasts.splice(It.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length))return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const ae=this.toasts[this.currentlyActive].toastRef;ae.isInactive()||(this.currentlyActive=this.currentlyActive+1,ae.activate())}return!0}findDuplicate(Qe="",It="",ae,Ie){const{includeTitleDuplicates:dt}=this.toastrConfig;for(const Jt of this.toasts){const zt=dt&&Jt.title===Qe;if((!dt||zt)&&Jt.message===It)return Jt.toastRef.onDuplicate(ae,Ie),Jt}return null}applyConfig(Qe={}){return Object.assign(Object.assign({},this.toastrConfig),Qe)}_findToast(Qe){for(let It=0;It<this.toasts.length;It++)if(this.toasts[It].toastId===Qe)return{index:It,activeToast:this.toasts[It]};return null}_preBuildNotification(Qe,It,ae,Ie){return Ie.onActivateTick?this.ngZone.run(()=>this._buildNotification(Qe,It,ae,Ie)):this._buildNotification(Qe,It,ae,Ie)}_buildNotification(Qe,It,ae,Ie){if(!Ie.toastComponent)throw new Error("toastComponent required");const dt=this.findDuplicate(ae,It,this.toastrConfig.resetTimeoutOnDuplicate&&Ie.timeOut>0,this.toastrConfig.countDuplicates);if((this.toastrConfig.includeTitleDuplicates&&ae||It)&&this.toastrConfig.preventDuplicates&&null!==dt)return dt;this.previousToastMessage=It;let Jt=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(Jt=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const zt=this.overlay.create(Ie.positionClass,this.overlayContainer);this.index=this.index+1;let ln=It;It&&Ie.enableHtml&&(ln=this.sanitizer.sanitize(t.q3G.HTML,It));const ar=new Oe(zt),Ln=new Y(this.index,Ie,ln,ae,Qe,ar),Rn=new be(Ln,this._injector),er=new fe(Ie.toastComponent,Rn),Mn=zt.attach(er,this.toastrConfig.newestOnTop);ar.componentInstance=Mn.instance;const Ht={toastId:this.index,title:ae||"",message:It||"",toastRef:ar,onShown:ar.afterActivate(),onHidden:ar.afterClosed(),onTap:Ln.onTap(),onAction:Ln.onAction(),portal:Mn};return Jt||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{Ht.toastRef.activate()})),this.toasts.push(Ht),Ht}}return St.\u0275fac=function(Qe){return new(Qe||St)(t.LFG(oe),t.LFG(Me),t.LFG(t.zs3),t.LFG(a.H7),t.LFG(t.R0b))},St.\u0275prov=t.Yz7({factory:function(){return new St(t.LFG(oe),t.LFG(Me),t.LFG(t.gxx),t.LFG(a.H7),t.LFG(t.R0b))},token:St,providedIn:"root"}),St})(),He=(()=>{class St{constructor(Qe,It,ae){this.toastrService=Qe,this.toastPackage=It,this.ngZone=ae,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=It.message,this.title=It.title,this.options=It.config,this.originalTimeout=It.config.timeOut,this.toastClasses=`${It.toastType} ${It.config.toastClass}`,this.sub=It.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=It.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=It.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=It.toastRef.countDuplicate().subscribe(Ie=>{this.duplicatesCount=Ie})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign(Object.assign({},this.state),{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const Qe=(new Date).getTime();this.width=(this.hideTime-Qe)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign(Object.assign({},this.state),{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign(Object.assign({},this.state),{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0===this.options.disableTimeOut||"extendedTimeOut"===this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state.value||(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(Qe,It){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(Qe),It)):this.timeout=setTimeout(()=>Qe(),It)}outsideInterval(Qe,It){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(Qe),It)):this.intervalId=setInterval(()=>Qe(),It)}runInsideAngular(Qe){this.ngZone?this.ngZone.run(()=>Qe()):Qe()}}return St.\u0275fac=function(Qe){return new(Qe||St)(t.Y36(ue),t.Y36(Y),t.Y36(t.R0b))},St.\u0275cmp=t.Xpm({type:St,selectors:[["","toast-component",""]],hostVars:5,hostBindings:function(Qe,It){1&Qe&&t.NdJ("click",function(){return It.tapToast()})("mouseenter",function(){return It.stickAround()})("mouseleave",function(){return It.delayedHideToast()}),2&Qe&&(t.d8E("@flyInOut",It.state),t.Tol(It.toastClasses),t.Udp("display",It.displayStyle))},attrs:u,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alertdialog","aria-live","polite",3,"innerHTML"],["role","alertdialog","aria-live","polite"],[1,"toast-progress"]],template:function(Qe,It){1&Qe&&(t.YNc(0,h,3,0,"button",0),t.YNc(1,m,3,5,"div",1),t.YNc(2,b,1,3,"div",2),t.YNc(3,C,2,4,"div",3),t.YNc(4,D,2,2,"div",4)),2&Qe&&(t.Q6J("ngIf",It.options.closeButton),t.xp6(1),t.Q6J("ngIf",It.title),t.xp6(1),t.Q6J("ngIf",It.message&&It.options.enableHtml),t.xp6(1),t.Q6J("ngIf",It.message&&!It.options.enableHtml),t.xp6(1),t.Q6J("ngIf",It.options.progressBar))},directives:[l.O5],encapsulation:2,data:{animation:[(0,e.X$)("flyInOut",[(0,e.SB)("inactive",(0,e.oB)({opacity:0})),(0,e.SB)("active",(0,e.oB)({opacity:1})),(0,e.SB)("removed",(0,e.oB)({opacity:0})),(0,e.eR)("inactive => active",(0,e.jt)("{{ easeTime }}ms {{ easing }}")),(0,e.eR)("active => removed",(0,e.jt)("{{ easeTime }}ms {{ easing }}"))])]}}),St})();const $e=Object.assign(Object.assign({},ie),{toastComponent:He});let F=(()=>{class St{static forRoot(Qe={}){return{ngModule:St,providers:[{provide:oe,useValue:{default:$e,config:Qe}}]}}}return St.\u0275fac=function(Qe){return new(Qe||St)},St.\u0275mod=t.oAB({type:St}),St.\u0275inj=t.cJS({imports:[[l.ez]]}),St})(),Et=(()=>{class St{constructor(Qe,It,ae){this.toastrService=Qe,this.toastPackage=It,this.appRef=ae,this.width=-1,this.toastClasses="",this.state="inactive",this.message=It.message,this.title=It.title,this.options=It.config,this.originalTimeout=It.config.timeOut,this.toastClasses=`${It.toastType} ${It.config.toastClass}`,this.sub=It.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=It.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=It.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=It.toastRef.countDuplicate().subscribe(Ie=>{this.duplicatesCount=Ie})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!(!0===this.options.disableTimeOut||"timeOut"===this.options.disableTimeOut)&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const Qe=(new Date).getTime();this.width=(this.hideTime-Qe)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0===this.options.disableTimeOut||"extendedTimeOut"===this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state||(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}}return St.\u0275fac=function(Qe){return new(Qe||St)(t.Y36(ue),t.Y36(Y),t.Y36(t.z2F))},St.\u0275cmp=t.Xpm({type:St,selectors:[["","toast-component",""]],hostVars:4,hostBindings:function(Qe,It){1&Qe&&t.NdJ("click",function(){return It.tapToast()})("mouseenter",function(){return It.stickAround()})("mouseleave",function(){return It.delayedHideToast()}),2&Qe&&(t.Tol(It.toastClasses),t.Udp("display",It.displayStyle))},attrs:u,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alert","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert","aria-live","polite",3,"innerHTML"],["role","alert","aria-live","polite"],[1,"toast-progress"]],template:function(Qe,It){1&Qe&&(t.YNc(0,x,3,0,"button",0),t.YNc(1,H,3,5,"div",1),t.YNc(2,z,1,3,"div",2),t.YNc(3,U,2,4,"div",3),t.YNc(4,M,2,2,"div",4)),2&Qe&&(t.Q6J("ngIf",It.options.closeButton),t.xp6(1),t.Q6J("ngIf",It.title),t.xp6(1),t.Q6J("ngIf",It.message&&It.options.enableHtml),t.xp6(1),t.Q6J("ngIf",It.message&&!It.options.enableHtml),t.xp6(1),t.Q6J("ngIf",It.options.progressBar))},directives:[l.O5],encapsulation:2}),St})();Object.assign(Object.assign({},ie),{toastComponent:Et})},26215:(Ge,g,o)=>{"use strict";o.d(g,{X:()=>s});var t=o(79765),e=o(77971);class s extends t.xQ{constructor(l){super(),this._value=l}get value(){return this.getValue()}_subscribe(l){const u=super._subscribe(l);return u&&!u.closed&&l.next(this._value),u}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new e.N;return this._value}next(l){super.next(this._value=l)}}},23098:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>l});var t=o(59193),e=o(25917),s=o(40205);class l{constructor(h,_,m){this.kind=h,this.value=_,this.error=m,this.hasValue="N"===h}observe(h){switch(this.kind){case"N":return h.next&&h.next(this.value);case"E":return h.error&&h.error(this.error);case"C":return h.complete&&h.complete()}}do(h,_,m){switch(this.kind){case"N":return h&&h(this.value);case"E":return _&&_(this.error);case"C":return m&&m()}}accept(h,_,m){return h&&"function"==typeof h.next?this.observe(h):this.do(h,_,m)}toObservable(){switch(this.kind){case"N":return(0,e.of)(this.value);case"E":return(0,s._)(this.error);case"C":return(0,t.c)()}throw new Error("unexpected notification kind value")}static createNext(h){return void 0!==h?new l("N",h):l.undefinedValueNotification}static createError(h){return new l("E",void 0,h)}static createComplete(){return l.completeNotification}}l.completeNotification=new l("C"),l.undefinedValueNotification=new l("N",void 0)},18891:(Ge,g,o)=>{"use strict";o.d(g,{y:()=>m});var t=o(77393),s=o(29181),a=o(46490),u=o(16554),h=o(34022),_=o(82494);let m=(()=>{class C{constructor(x){this._isScalar=!1,x&&(this._subscribe=x)}lift(x){const j=new C;return j.source=this,j.operator=x,j}subscribe(x,j,H){const{operator:z}=this,U=function(C,D,x){if(C){if(C instanceof t.L)return C;if(C[s.b])return C[s.b]()}return C||D||x?new t.L(C,D,x):new t.L(a.c)}(x,j,H);if(U.add(z?z.call(U,this.source):this.source||_.v.useDeprecatedSynchronousErrorHandling&&!U.syncErrorThrowable?this._subscribe(U):this._trySubscribe(U)),_.v.useDeprecatedSynchronousErrorHandling&&U.syncErrorThrowable&&(U.syncErrorThrowable=!1,U.syncErrorThrown))throw U.syncErrorValue;return U}_trySubscribe(x){try{return this._subscribe(x)}catch(j){_.v.useDeprecatedSynchronousErrorHandling&&(x.syncErrorThrown=!0,x.syncErrorValue=j),function(C){for(;C;){const{closed:D,destination:x,isStopped:j}=C;if(D||j)return!1;C=x&&x instanceof t.L?x:null}return!0}(x)?x.error(j):console.warn(j)}}forEach(x,j){return new(j=b(j))((H,z)=>{let U;U=this.subscribe(M=>{try{x(M)}catch(I){z(I),U&&U.unsubscribe()}},z,H)})}_subscribe(x){const{source:j}=this;return j&&j.subscribe(x)}[u.L](){return this}pipe(...x){return 0===x.length?this:(0,h.U)(x)(this)}toPromise(x){return new(x=b(x))((j,H)=>{let z;this.subscribe(U=>z=U,U=>H(U),()=>j(z))})}}return C.create=D=>new C(D),C})();function b(C){if(C||(C=_.v.Promise||Promise),!C)throw new Error("no Promise impl found");return C}},46490:(Ge,g,o)=>{"use strict";o.d(g,{c:()=>s});var t=o(82494),e=o(54449);const s={closed:!0,next(a){},error(a){if(t.v.useDeprecatedSynchronousErrorHandling)throw a;(0,e.z)(a)},complete(){}}},55197:(Ge,g,o)=>{"use strict";o.d(g,{L:()=>e});var t=o(77393);class e extends t.L{notifyNext(a,l,u,h,_){this.destination.next(l)}notifyError(a,l){this.destination.error(a)}notifyComplete(a){this.destination.complete()}}},80226:(Ge,g,o)=>{"use strict";o.d(g,{t:()=>D});var t=o(79765),e=o(36465),a=o(16102);const h=new class extends a.v{}(class extends e.o{constructor(H,z){super(H,z),this.scheduler=H,this.work=z}schedule(H,z=0){return z>0?super.schedule(H,z):(this.delay=z,this.state=H,this.scheduler.flush(this),this)}execute(H,z){return z>0||this.closed?super.execute(H,z):this._execute(H,z)}requestAsyncId(H,z,U=0){return null!==U&&U>0||null===U&&this.delay>0?super.requestAsyncId(H,z,U):H.flush(this)}});var _=o(75319),m=o(59746),b=o(77971),C=o(78858);class D extends t.xQ{constructor(H=Number.POSITIVE_INFINITY,z=Number.POSITIVE_INFINITY,U){super(),this.scheduler=U,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=H<1?1:H,this._windowTime=z<1?1:z,z===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(H){if(!this.isStopped){const z=this._events;z.push(H),z.length>this._bufferSize&&z.shift()}super.next(H)}nextTimeWindow(H){this.isStopped||(this._events.push(new x(this._getNow(),H)),this._trimBufferThenGetEvents()),super.next(H)}_subscribe(H){const z=this._infiniteTimeWindow,U=z?this._events:this._trimBufferThenGetEvents(),M=this.scheduler,I=U.length;let J;if(this.closed)throw new b.N;if(this.isStopped||this.hasError?J=_.w.EMPTY:(this.observers.push(H),J=new C.W(this,H)),M&&H.add(H=new m.ht(H,M)),z)for(let Y=0;Y<I&&!H.closed;Y++)H.next(U[Y]);else for(let Y=0;Y<I&&!H.closed;Y++)H.next(U[Y].value);return this.hasError?H.error(this.thrownError):this.isStopped&&H.complete(),J}_getNow(){return(this.scheduler||h).now()}_trimBufferThenGetEvents(){const H=this._getNow(),z=this._bufferSize,U=this._windowTime,M=this._events,I=M.length;let J=0;for(;J<I&&!(H-M[J].time<U);)J++;return I>z&&(J=Math.max(J,I-z)),J>0&&M.splice(0,J),M}}class x{constructor(H,z){this.time=H,this.value=z}}},79765:(Ge,g,o)=>{"use strict";o.d(g,{Yc:()=>h,xQ:()=>_});var t=o(18891),e=o(77393),s=o(75319),a=o(77971),l=o(78858),u=o(29181);class h extends e.L{constructor(C){super(C),this.destination=C}}let _=(()=>{class b extends t.y{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[u.b](){return new h(this)}lift(D){const x=new m(this,this);return x.operator=D,x}next(D){if(this.closed)throw new a.N;if(!this.isStopped){const{observers:x}=this,j=x.length,H=x.slice();for(let z=0;z<j;z++)H[z].next(D)}}error(D){if(this.closed)throw new a.N;this.hasError=!0,this.thrownError=D,this.isStopped=!0;const{observers:x}=this,j=x.length,H=x.slice();for(let z=0;z<j;z++)H[z].error(D);this.observers.length=0}complete(){if(this.closed)throw new a.N;this.isStopped=!0;const{observers:D}=this,x=D.length,j=D.slice();for(let H=0;H<x;H++)j[H].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(D){if(this.closed)throw new a.N;return super._trySubscribe(D)}_subscribe(D){if(this.closed)throw new a.N;return this.hasError?(D.error(this.thrownError),s.w.EMPTY):this.isStopped?(D.complete(),s.w.EMPTY):(this.observers.push(D),new l.W(this,D))}asObservable(){const D=new t.y;return D.source=this,D}}return b.create=(C,D)=>new m(C,D),b})();class m extends _{constructor(C,D){super(),this.destination=C,this.source=D}next(C){const{destination:D}=this;D&&D.next&&D.next(C)}error(C){const{destination:D}=this;D&&D.error&&this.destination.error(C)}complete(){const{destination:C}=this;C&&C.complete&&this.destination.complete()}_subscribe(C){const{source:D}=this;return D?this.source.subscribe(C):s.w.EMPTY}}},78858:(Ge,g,o)=>{"use strict";o.d(g,{W:()=>e});var t=o(75319);class e extends t.w{constructor(a,l){super(),this.subject=a,this.subscriber=l,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const a=this.subject,l=a.observers;if(this.subject=null,!l||0===l.length||a.isStopped||a.closed)return;const u=l.indexOf(this.subscriber);-1!==u&&l.splice(u,1)}}},77393:(Ge,g,o)=>{"use strict";o.d(g,{L:()=>h});var t=o(69105),e=o(46490),s=o(75319),a=o(29181),l=o(82494),u=o(54449);class h extends s.w{constructor(b,C,D){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=e.c;break;case 1:if(!b){this.destination=e.c;break}if("object"==typeof b){b instanceof h?(this.syncErrorThrowable=b.syncErrorThrowable,this.destination=b,b.add(this)):(this.syncErrorThrowable=!0,this.destination=new _(this,b));break}default:this.syncErrorThrowable=!0,this.destination=new _(this,b,C,D)}}[a.b](){return this}static create(b,C,D){const x=new h(b,C,D);return x.syncErrorThrowable=!1,x}next(b){this.isStopped||this._next(b)}error(b){this.isStopped||(this.isStopped=!0,this._error(b))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(b){this.destination.next(b)}_error(b){this.destination.error(b),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:b}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=b,this}}class _ extends h{constructor(b,C,D,x){super(),this._parentSubscriber=b;let j,H=this;(0,t.m)(C)?j=C:C&&(j=C.next,D=C.error,x=C.complete,C!==e.c&&(H=Object.create(C),(0,t.m)(H.unsubscribe)&&this.add(H.unsubscribe.bind(H)),H.unsubscribe=this.unsubscribe.bind(this))),this._context=H,this._next=j,this._error=D,this._complete=x}next(b){if(!this.isStopped&&this._next){const{_parentSubscriber:C}=this;l.v.useDeprecatedSynchronousErrorHandling&&C.syncErrorThrowable?this.__tryOrSetError(C,this._next,b)&&this.unsubscribe():this.__tryOrUnsub(this._next,b)}}error(b){if(!this.isStopped){const{_parentSubscriber:C}=this,{useDeprecatedSynchronousErrorHandling:D}=l.v;if(this._error)D&&C.syncErrorThrowable?(this.__tryOrSetError(C,this._error,b),this.unsubscribe()):(this.__tryOrUnsub(this._error,b),this.unsubscribe());else if(C.syncErrorThrowable)D?(C.syncErrorValue=b,C.syncErrorThrown=!0):(0,u.z)(b),this.unsubscribe();else{if(this.unsubscribe(),D)throw b;(0,u.z)(b)}}}complete(){if(!this.isStopped){const{_parentSubscriber:b}=this;if(this._complete){const C=()=>this._complete.call(this._context);l.v.useDeprecatedSynchronousErrorHandling&&b.syncErrorThrowable?(this.__tryOrSetError(b,C),this.unsubscribe()):(this.__tryOrUnsub(C),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(b,C){try{b.call(this._context,C)}catch(D){if(this.unsubscribe(),l.v.useDeprecatedSynchronousErrorHandling)throw D;(0,u.z)(D)}}__tryOrSetError(b,C,D){if(!l.v.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{C.call(this._context,D)}catch(x){return l.v.useDeprecatedSynchronousErrorHandling?(b.syncErrorValue=x,b.syncErrorThrown=!0,!0):((0,u.z)(x),!0)}return!1}_unsubscribe(){const{_parentSubscriber:b}=this;this._context=null,this._parentSubscriber=null,b.unsubscribe()}}},75319:(Ge,g,o)=>{"use strict";o.d(g,{w:()=>u});var t=o(59796),e=o(81555),s=o(69105);const l=(()=>{function _(m){return Error.call(this),this.message=m?`${m.length} errors occurred during unsubscription:\n${m.map((b,C)=>`${C+1}) ${b.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=m,this}return _.prototype=Object.create(Error.prototype),_})();class u{constructor(m){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,m&&(this._ctorUnsubscribe=!0,this._unsubscribe=m)}unsubscribe(){let m;if(this.closed)return;let{_parentOrParents:b,_ctorUnsubscribe:C,_unsubscribe:D,_subscriptions:x}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,b instanceof u)b.remove(this);else if(null!==b)for(let j=0;j<b.length;++j)b[j].remove(this);if((0,s.m)(D)){C&&(this._unsubscribe=void 0);try{D.call(this)}catch(j){m=j instanceof l?h(j.errors):[j]}}if((0,t.k)(x)){let j=-1,H=x.length;for(;++j<H;){const z=x[j];if((0,e.K)(z))try{z.unsubscribe()}catch(U){m=m||[],U instanceof l?m=m.concat(h(U.errors)):m.push(U)}}}if(m)throw new l(m)}add(m){let b=m;if(!m)return u.EMPTY;switch(typeof m){case"function":b=new u(m);case"object":if(b===this||b.closed||"function"!=typeof b.unsubscribe)return b;if(this.closed)return b.unsubscribe(),b;if(!(b instanceof u)){const x=b;b=new u,b._subscriptions=[x]}break;default:throw new Error("unrecognized teardown "+m+" added to Subscription.")}let{_parentOrParents:C}=b;if(null===C)b._parentOrParents=this;else if(C instanceof u){if(C===this)return b;b._parentOrParents=[C,this]}else{if(-1!==C.indexOf(this))return b;C.push(this)}const D=this._subscriptions;return null===D?this._subscriptions=[b]:D.push(b),b}remove(m){const b=this._subscriptions;if(b){const C=b.indexOf(m);-1!==C&&b.splice(C,1)}}}var _;function h(_){return _.reduce((m,b)=>m.concat(b instanceof l?b.errors:b),[])}u.EMPTY=((_=new u).closed=!0,_)},82494:(Ge,g,o)=>{"use strict";o.d(g,{v:()=>e});let t=!1;const e={Promise:void 0,set useDeprecatedSynchronousErrorHandling(s){if(s){const a=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+a.stack)}else t&&console.log("RxJS: Back to a better error behavior. Thank you. <3");t=s},get useDeprecatedSynchronousErrorHandling(){return t}}},85345:(Ge,g,o)=>{"use strict";o.d(g,{IY:()=>a,Ds:()=>u,ft:()=>_});var t=o(77393),e=o(18891),s=o(87444);class a extends t.L{constructor(b){super(),this.parent=b}_next(b){this.parent.notifyNext(b)}_error(b){this.parent.notifyError(b),this.unsubscribe()}_complete(){this.parent.notifyComplete(),this.unsubscribe()}}class u extends t.L{notifyNext(b){this.destination.next(b)}notifyError(b){this.destination.error(b)}notifyComplete(){this.destination.complete()}}function _(m,b){if(!b.closed)return m instanceof e.y?m.subscribe(b):(0,s.s)(m)(b)}},52441:(Ge,g,o)=>{"use strict";o.d(g,{c:()=>l,N:()=>u});var t=o(79765),e=o(18891),s=o(75319),a=o(51307);class l extends e.y{constructor(C,D){super(),this.source=C,this.subjectFactory=D,this._refCount=0,this._isComplete=!1}_subscribe(C){return this.getSubject().subscribe(C)}getSubject(){const C=this._subject;return(!C||C.isStopped)&&(this._subject=this.subjectFactory()),this._subject}connect(){let C=this._connection;return C||(this._isComplete=!1,C=this._connection=new s.w,C.add(this.source.subscribe(new h(this.getSubject(),this))),C.closed&&(this._connection=null,C=s.w.EMPTY)),C}refCount(){return(0,a.x)()(this)}}const u=(()=>{const b=l.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:b._subscribe},_isComplete:{value:b._isComplete,writable:!0},getSubject:{value:b.getSubject},connect:{value:b.connect},refCount:{value:b.refCount}}})();class h extends t.Yc{constructor(C,D){super(C),this.connectable=D}_error(C){this._unsubscribe(),super._error(C)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const C=this.connectable;if(C){this.connectable=null;const D=C._connection;C._refCount=0,C._subject=null,C._connection=null,D&&D.unsubscribe()}}}},9112:(Ge,g,o)=>{"use strict";o.d(g,{aj:()=>h});var t=o(54869),e=o(59796),s=o(55197),a=o(20509),l=o(56693);const u={};function h(...b){let C,D;return(0,t.K)(b[b.length-1])&&(D=b.pop()),"function"==typeof b[b.length-1]&&(C=b.pop()),1===b.length&&(0,e.k)(b[0])&&(b=b[0]),(0,l.n)(b,D).lift(new _(C))}class _{constructor(C){this.resultSelector=C}call(C,D){return D.subscribe(new m(C,this.resultSelector))}}class m extends s.L{constructor(C,D){super(C),this.resultSelector=D,this.active=0,this.values=[],this.observables=[]}_next(C){this.values.push(u),this.observables.push(C)}_complete(){const C=this.observables,D=C.length;if(0===D)this.destination.complete();else{this.active=D,this.toRespond=D;for(let x=0;x<D;x++)this.add((0,a.D)(this,C[x],void 0,x))}}notifyComplete(C){0==(this.active-=1)&&this.destination.complete()}notifyNext(C,D,x){const j=this.values,z=this.toRespond?j[x]===u?--this.toRespond:this.toRespond:0;j[x]=D,0===z&&(this.resultSelector?this._tryResultSelector(j):this.destination.next(j.slice()))}_tryResultSelector(C){let D;try{D=this.resultSelector.apply(this,C)}catch(x){return void this.destination.error(x)}this.destination.next(D)}}},58071:(Ge,g,o)=>{"use strict";o.d(g,{z:()=>a});var t=o(25917),e=o(63282);function a(...l){return(0,e.J)(1)((0,t.of)(...l))}},59193:(Ge,g,o)=>{"use strict";o.d(g,{E:()=>e,c:()=>s});var t=o(18891);const e=new t.y(l=>l.complete());function s(l){return l?function(l){return new t.y(u=>l.schedule(()=>u.complete()))}(l):e}},35758:(Ge,g,o)=>{"use strict";o.d(g,{D:()=>u});var t=o(18891),e=o(59796),s=o(88002),a=o(81555),l=o(94402);function u(..._){if(1===_.length){const m=_[0];if((0,e.k)(m))return h(m,null);if((0,a.K)(m)&&Object.getPrototypeOf(m)===Object.prototype){const b=Object.keys(m);return h(b.map(C=>m[C]),b)}}if("function"==typeof _[_.length-1]){const m=_.pop();return h(_=1===_.length&&(0,e.k)(_[0])?_[0]:_,null).pipe((0,s.U)(b=>m(...b)))}return h(_,null)}function h(_,m){return new t.y(b=>{const C=_.length;if(0===C)return void b.complete();const D=new Array(C);let x=0,j=0;for(let H=0;H<C;H++){const z=(0,l.D)(_[H]);let U=!1;b.add(z.subscribe({next:M=>{U||(U=!0,j++),D[H]=M},error:M=>b.error(M),complete:()=>{x++,(x===C||!U)&&(j===C&&b.next(m?m.reduce((M,I,J)=>(M[I]=D[J],M),{}):D),b.complete())}}))}})}},94402:(Ge,g,o)=>{"use strict";o.d(g,{D:()=>H});var t=o(18891),e=o(87444),s=o(75319),a=o(16554),h=o(94087),_=o(20377),C=o(44072),D=o(69489);function H(z,U){return U?function(z,U){if(null!=z){if(function(z){return z&&"function"==typeof z[a.L]}(z))return function(z,U){return new t.y(M=>{const I=new s.w;return I.add(U.schedule(()=>{const J=z[a.L]();I.add(J.subscribe({next(Y){I.add(U.schedule(()=>M.next(Y)))},error(Y){I.add(U.schedule(()=>M.error(Y)))},complete(){I.add(U.schedule(()=>M.complete()))}}))})),I})}(z,U);if((0,C.t)(z))return function(z,U){return new t.y(M=>{const I=new s.w;return I.add(U.schedule(()=>z.then(J=>{I.add(U.schedule(()=>{M.next(J),I.add(U.schedule(()=>M.complete()))}))},J=>{I.add(U.schedule(()=>M.error(J)))}))),I})}(z,U);if((0,D.z)(z))return(0,h.r)(z,U);if(function(z){return z&&"function"==typeof z[_.hZ]}(z)||"string"==typeof z)return function(z,U){if(!z)throw new Error("Iterable cannot be null");return new t.y(M=>{const I=new s.w;let J;return I.add(()=>{J&&"function"==typeof J.return&&J.return()}),I.add(U.schedule(()=>{J=z[_.hZ](),I.add(U.schedule(function(){if(M.closed)return;let Y,ie;try{const oe=J.next();Y=oe.value,ie=oe.done}catch(oe){return void M.error(oe)}ie?M.complete():(M.next(Y),this.schedule())}))})),I})}(z,U)}throw new TypeError((null!==z&&typeof z||z)+" is not observable")}(z,U):z instanceof t.y?z:new t.y((0,e.s)(z))}},56693:(Ge,g,o)=>{"use strict";o.d(g,{n:()=>a});var t=o(18891),e=o(55015),s=o(94087);function a(l,u){return u?(0,s.r)(l,u):new t.y((0,e.V)(l))}},22759:(Ge,g,o)=>{"use strict";o.d(g,{R:()=>u});var t=o(18891),e=o(59796),s=o(69105),a=o(88002);function u(C,D,x,j){return(0,s.m)(x)&&(j=x,x=void 0),j?u(C,D,x).pipe((0,a.U)(H=>(0,e.k)(H)?j(...H):j(H))):new t.y(H=>{h(C,D,function(U){H.next(arguments.length>1?Array.prototype.slice.call(arguments):U)},H,x)})}function h(C,D,x,j,H){let z;if(function(C){return C&&"function"==typeof C.addEventListener&&"function"==typeof C.removeEventListener}(C)){const U=C;C.addEventListener(D,x,H),z=()=>U.removeEventListener(D,x,H)}else if(function(C){return C&&"function"==typeof C.on&&"function"==typeof C.off}(C)){const U=C;C.on(D,x),z=()=>U.off(D,x)}else if(function(C){return C&&"function"==typeof C.addListener&&"function"==typeof C.removeListener}(C)){const U=C;C.addListener(D,x),z=()=>U.removeListener(D,x)}else{if(!C||!C.length)throw new TypeError("Invalid event target");for(let U=0,M=C.length;U<M;U++)h(C[U],D,x,j,H)}j.add(z)}},66682:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>l});var t=o(18891),e=o(54869),s=o(63282),a=o(56693);function l(...u){let h=Number.POSITIVE_INFINITY,_=null,m=u[u.length-1];return(0,e.K)(m)?(_=u.pop(),u.length>1&&"number"==typeof u[u.length-1]&&(h=u.pop())):"number"==typeof m&&(h=u.pop()),null===_&&1===u.length&&u[0]instanceof t.y?u[0]:(0,s.J)(h)((0,a.n)(u,_))}},17757:(Ge,g,o)=>{"use strict";o.d(g,{C:()=>s});var t=o(18891),e=o(98640);const s=new t.y(e.Z)},25917:(Ge,g,o)=>{"use strict";o.d(g,{of:()=>a});var t=o(54869),e=o(56693),s=o(94087);function a(...l){let u=l[l.length-1];return(0,t.K)(u)?(l.pop(),(0,s.r)(l,u)):(0,e.n)(l)}},40205:(Ge,g,o)=>{"use strict";o.d(g,{_:()=>e});var t=o(18891);function e(a,l){return new t.y(l?u=>l.schedule(s,0,{error:a,subscriber:u}):u=>u.error(a))}function s({error:a,subscriber:l}){l.error(a)}},46797:(Ge,g,o)=>{"use strict";o.d(g,{H:()=>l});var t=o(18891),e=o(33637),s=o(26561),a=o(54869);function l(h=0,_,m){let b=-1;return(0,s.k)(_)?b=Number(_)<1?1:Number(_):(0,a.K)(_)&&(m=_),(0,a.K)(m)||(m=e.P),new t.y(C=>{const D=(0,s.k)(h)?h:+h-m.now();return m.schedule(u,D,{index:0,period:b,subscriber:C})})}function u(h){const{index:_,period:m,subscriber:b}=h;if(b.next(_),!b.closed){if(-1===m)return b.complete();h.index=_+1,this.schedule(h,m)}}},5304:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>e});var t=o(85345);function e(l){return function(h){const _=new s(l),m=h.lift(_);return _.caught=m}}class s{constructor(u){this.selector=u}call(u,h){return h.subscribe(new a(u,this.selector,this.caught))}}class a extends t.Ds{constructor(u,h,_){super(u),this.selector=h,this.caught=_}error(u){if(!this.isStopped){let h;try{h=this.selector(u,this.caught)}catch(b){return void super.error(b)}this._unsubscribeAndRecycle();const _=new t.IY(this);this.add(_);const m=(0,t.ft)(h,_);m!==_&&this.add(m)}}}},94612:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>e});var t=o(19773);function e(s,a){return(0,t.zg)(s,a,1)}},95242:(Ge,g,o)=>{"use strict";o.d(g,{d:()=>e});var t=o(77393);function e(l=null){return u=>u.lift(new s(l))}class s{constructor(u){this.defaultValue=u}call(u,h){return h.subscribe(new a(u,this.defaultValue))}}class a extends t.L{constructor(u,h){super(u),this.defaultValue=h,this.isEmpty=!0}_next(u){this.isEmpty=!1,this.destination.next(u)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},71289:(Ge,g,o)=>{"use strict";o.d(g,{g:()=>l});var t=o(33637),s=o(77393),a=o(23098);function l(m,b=t.P){const D=function(m){return m instanceof Date&&!isNaN(+m)}(m)?+m-b.now():Math.abs(m);return x=>x.lift(new u(D,b))}class u{constructor(b,C){this.delay=b,this.scheduler=C}call(b,C){return C.subscribe(new h(b,this.delay,this.scheduler))}}class h extends s.L{constructor(b,C,D){super(b),this.delay=C,this.scheduler=D,this.queue=[],this.active=!1,this.errored=!1}static dispatch(b){const C=b.source,D=C.queue,x=b.scheduler,j=b.destination;for(;D.length>0&&D[0].time-x.now()<=0;)D.shift().notification.observe(j);if(D.length>0){const H=Math.max(0,D[0].time-x.now());this.schedule(b,H)}else this.unsubscribe(),C.active=!1}_schedule(b){this.active=!0,this.destination.add(b.schedule(h.dispatch,this.delay,{source:this,destination:this.destination,scheduler:b}))}scheduleNotification(b){if(!0===this.errored)return;const C=this.scheduler,D=new _(C.now()+this.delay,b);this.queue.push(D),!1===this.active&&this._schedule(C)}_next(b){this.scheduleNotification(a.P.createNext(b))}_error(b){this.errored=!0,this.queue=[],this.destination.error(b),this.unsubscribe()}_complete(){this.scheduleNotification(a.P.createComplete()),this.unsubscribe()}}class _{constructor(b,C){this.time=b,this.notification=C}}},87519:(Ge,g,o)=>{"use strict";o.d(g,{x:()=>e});var t=o(77393);function e(l,u){return h=>h.lift(new s(l,u))}class s{constructor(u,h){this.compare=u,this.keySelector=h}call(u,h){return h.subscribe(new a(u,this.compare,this.keySelector))}}class a extends t.L{constructor(u,h,_){super(u),this.keySelector=_,this.hasKey=!1,"function"==typeof h&&(this.compare=h)}compare(u,h){return u===h}_next(u){let h;try{const{keySelector:m}=this;h=m?m(u):u}catch(m){return this.destination.error(m)}let _=!1;if(this.hasKey)try{const{compare:m}=this;_=m(this.key,h)}catch(m){return this.destination.error(m)}else this.hasKey=!0;_||(this.key=h,this.destination.next(u))}}},45435:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>e});var t=o(77393);function e(l,u){return function(_){return _.lift(new s(l,u))}}class s{constructor(u,h){this.predicate=u,this.thisArg=h}call(u,h){return h.subscribe(new a(u,this.predicate,this.thisArg))}}class a extends t.L{constructor(u,h,_){super(u),this.predicate=h,this.thisArg=_,this.count=0}_next(u){let h;try{h=this.predicate.call(this.thisArg,u,this.count++)}catch(_){return void this.destination.error(_)}h&&this.destination.next(u)}}},68939:(Ge,g,o)=>{"use strict";o.d(g,{x:()=>s});var t=o(77393),e=o(75319);function s(u){return h=>h.lift(new a(u))}class a{constructor(h){this.callback=h}call(h,_){return _.subscribe(new l(h,this.callback))}}class l extends t.L{constructor(h,_){super(h),this.add(new e.w(_))}}},28049:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>h});var t=o(13410),e=o(45435),s=o(15257),a=o(95242),l=o(44635),u=o(54487);function h(_,m){const b=arguments.length>=2;return C=>C.pipe(_?(0,e.h)((D,x)=>_(D,x,C)):u.y,(0,s.q)(1),b?(0,a.d)(m):(0,l.T)(()=>new t.K))}},12627:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>h});var t=o(13410),e=o(45435),s=o(548),a=o(44635),l=o(95242),u=o(54487);function h(_,m){const b=arguments.length>=2;return C=>C.pipe(_?(0,e.h)((D,x)=>_(D,x,C)):u.y,(0,s.h)(1),b?(0,l.d)(m):(0,a.T)(()=>new t.K))}},88002:(Ge,g,o)=>{"use strict";o.d(g,{U:()=>e});var t=o(77393);function e(l,u){return function(_){if("function"!=typeof l)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return _.lift(new s(l,u))}}class s{constructor(u,h){this.project=u,this.thisArg=h}call(u,h){return h.subscribe(new a(u,this.project,this.thisArg))}}class a extends t.L{constructor(u,h,_){super(u),this.project=h,this.count=0,this.thisArg=_||this}_next(u){let h;try{h=this.project.call(this.thisArg,u,this.count++)}catch(_){return void this.destination.error(_)}this.destination.next(h)}}},96736:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>e});var t=o(77393);function e(l){return u=>u.lift(new s(l))}class s{constructor(u){this.value=u}call(u,h){return h.subscribe(new a(u,this.value))}}class a extends t.L{constructor(u,h){super(u),this.value=h}_next(u){this.destination.next(this.value)}}},63282:(Ge,g,o)=>{"use strict";o.d(g,{J:()=>s});var t=o(19773),e=o(54487);function s(a=Number.POSITIVE_INFINITY){return(0,t.zg)(e.y,a)}},19773:(Ge,g,o)=>{"use strict";o.d(g,{zg:()=>a});var t=o(88002),e=o(94402),s=o(85345);function a(_,m,b=Number.POSITIVE_INFINITY){return"function"==typeof m?C=>C.pipe(a((D,x)=>(0,e.D)(_(D,x)).pipe((0,t.U)((j,H)=>m(D,j,x,H))),b)):("number"==typeof m&&(b=m),C=>C.lift(new l(_,b)))}class l{constructor(m,b=Number.POSITIVE_INFINITY){this.project=m,this.concurrent=b}call(m,b){return b.subscribe(new u(m,this.project,this.concurrent))}}class u extends s.Ds{constructor(m,b,C=Number.POSITIVE_INFINITY){super(m),this.project=b,this.concurrent=C,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(m){this.active<this.concurrent?this._tryNext(m):this.buffer.push(m)}_tryNext(m){let b;const C=this.index++;try{b=this.project(m,C)}catch(D){return void this.destination.error(D)}this.active++,this._innerSub(b)}_innerSub(m){const b=new s.IY(this),C=this.destination;C.add(b);const D=(0,s.ft)(m,b);D!==b&&C.add(D)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(m){this.destination.next(m)}notifyComplete(){const m=this.buffer;this.active--,m.length>0?this._next(m.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},59746:(Ge,g,o)=>{"use strict";o.d(g,{QV:()=>s,ht:()=>l});var t=o(77393),e=o(23098);function s(h,_=0){return function(b){return b.lift(new a(h,_))}}class a{constructor(_,m=0){this.scheduler=_,this.delay=m}call(_,m){return m.subscribe(new l(_,this.scheduler,this.delay))}}class l extends t.L{constructor(_,m,b=0){super(_),this.scheduler=m,this.delay=b}static dispatch(_){const{notification:m,destination:b}=_;m.observe(b),this.unsubscribe()}scheduleMessage(_){this.destination.add(this.scheduler.schedule(l.dispatch,this.delay,new u(_,this.destination)))}_next(_){this.scheduleMessage(e.P.createNext(_))}_error(_){this.scheduleMessage(e.P.createError(_)),this.unsubscribe()}_complete(){this.scheduleMessage(e.P.createComplete()),this.unsubscribe()}}class u{constructor(_,m){this.notification=_,this.destination=m}}},51307:(Ge,g,o)=>{"use strict";o.d(g,{x:()=>e});var t=o(77393);function e(){return function(u){return u.lift(new s(u))}}class s{constructor(u){this.connectable=u}call(u,h){const{connectable:_}=this;_._refCount++;const m=new a(u,_),b=h.subscribe(m);return m.closed||(m.connection=_.connect()),b}}class a extends t.L{constructor(u,h){super(u),this.connectable=h}_unsubscribe(){const{connectable:u}=this;if(!u)return void(this.connection=null);this.connectable=null;const h=u._refCount;if(h<=0)return void(this.connection=null);if(u._refCount=h-1,h>1)return void(this.connection=null);const{connection:_}=this,m=u._connection;this.connection=null,m&&(!_||m===_)&&m.unsubscribe()}}},42145:(Ge,g,o)=>{"use strict";o.d(g,{R:()=>e});var t=o(77393);function e(l,u){let h=!1;return arguments.length>=2&&(h=!0),function(m){return m.lift(new s(l,u,h))}}class s{constructor(u,h,_=!1){this.accumulator=u,this.seed=h,this.hasSeed=_}call(u,h){return h.subscribe(new a(u,this.accumulator,this.seed,this.hasSeed))}}class a extends t.L{constructor(u,h,_,m){super(u),this.accumulator=h,this._seed=_,this.hasSeed=m,this.index=0}get seed(){return this._seed}set seed(u){this.hasSeed=!0,this._seed=u}_next(u){if(this.hasSeed)return this._tryNext(u);this.seed=u,this.destination.next(u)}_tryNext(u){const h=this.index++;let _;try{_=this.accumulator(this.seed,u,h)}catch(m){this.destination.error(m)}this.seed=_,this.destination.next(_)}}},18819:(Ge,g,o)=>{"use strict";o.d(g,{B:()=>h});var t=o(52441);var a=o(51307),l=o(79765);function u(){return new l.xQ}function h(){return _=>(0,a.x)()(function(_,m){return function(C){let D;D="function"==typeof _?_:function(){return _};const x=Object.create(C,t.N);return x.source=C,x.subjectFactory=D,x}}(u)(_))}},39761:(Ge,g,o)=>{"use strict";o.d(g,{O:()=>s});var t=o(58071),e=o(54869);function s(...a){const l=a[a.length-1];return(0,e.K)(l)?(a.pop(),u=>(0,t.z)(a,u,l)):u=>(0,t.z)(a,u)}},43190:(Ge,g,o)=>{"use strict";o.d(g,{w:()=>a});var t=o(88002),e=o(94402),s=o(85345);function a(h,_){return"function"==typeof _?m=>m.pipe(a((b,C)=>(0,e.D)(h(b,C)).pipe((0,t.U)((D,x)=>_(b,D,C,x))))):m=>m.lift(new l(h))}class l{constructor(_){this.project=_}call(_,m){return m.subscribe(new u(_,this.project))}}class u extends s.Ds{constructor(_,m){super(_),this.project=m,this.index=0}_next(_){let m;const b=this.index++;try{m=this.project(_,b)}catch(C){return void this.destination.error(C)}this._innerSub(m)}_innerSub(_){const m=this.innerSubscription;m&&m.unsubscribe();const b=new s.IY(this),C=this.destination;C.add(b),this.innerSubscription=(0,s.ft)(_,b),this.innerSubscription!==b&&C.add(this.innerSubscription)}_complete(){const{innerSubscription:_}=this;(!_||_.closed)&&super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=void 0}notifyComplete(){this.innerSubscription=void 0,this.isStopped&&super._complete()}notifyNext(_){this.destination.next(_)}}},15257:(Ge,g,o)=>{"use strict";o.d(g,{q:()=>a});var t=o(77393),e=o(7108),s=o(59193);function a(h){return _=>0===h?(0,s.c)():_.lift(new l(h))}class l{constructor(_){if(this.total=_,this.total<0)throw new e.W}call(_,m){return m.subscribe(new u(_,this.total))}}class u extends t.L{constructor(_,m){super(_),this.total=m,this.count=0}_next(_){const m=this.total,b=++this.count;b<=m&&(this.destination.next(_),b===m&&(this.destination.complete(),this.unsubscribe()))}}},548:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>a});var t=o(77393),e=o(7108),s=o(59193);function a(h){return function(m){return 0===h?(0,s.c)():m.lift(new l(h))}}class l{constructor(_){if(this.total=_,this.total<0)throw new e.W}call(_,m){return m.subscribe(new u(_,this.total))}}class u extends t.L{constructor(_,m){super(_),this.total=m,this.ring=new Array,this.count=0}_next(_){const m=this.ring,b=this.total,C=this.count++;m.length<b?m.push(_):m[C%b]=_}_complete(){const _=this.destination;let m=this.count;if(m>0){const b=this.count>=this.total?this.total:this.count,C=this.ring;for(let D=0;D<b;D++){const x=m++%b;_.next(C[x])}}_.complete()}}},46782:(Ge,g,o)=>{"use strict";o.d(g,{R:()=>e});var t=o(85345);function e(l){return u=>u.lift(new s(l))}class s{constructor(u){this.notifier=u}call(u,h){const _=new a(u),m=(0,t.ft)(this.notifier,new t.IY(_));return m&&!_.seenValue?(_.add(m),h.subscribe(_)):_}}class a extends t.Ds{constructor(u){super(u),this.seenValue=!1}notifyNext(){this.seenValue=!0,this.complete()}notifyComplete(){}}},68307:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>a});var t=o(77393),e=o(98640),s=o(69105);function a(h,_,m){return function(C){return C.lift(new l(h,_,m))}}class l{constructor(_,m,b){this.nextOrObserver=_,this.error=m,this.complete=b}call(_,m){return m.subscribe(new u(_,this.nextOrObserver,this.error,this.complete))}}class u extends t.L{constructor(_,m,b,C){super(_),this._tapNext=e.Z,this._tapError=e.Z,this._tapComplete=e.Z,this._tapError=b||e.Z,this._tapComplete=C||e.Z,(0,s.m)(m)?(this._context=this,this._tapNext=m):m&&(this._context=m,this._tapNext=m.next||e.Z,this._tapError=m.error||e.Z,this._tapComplete=m.complete||e.Z)}_next(_){try{this._tapNext.call(this._context,_)}catch(m){return void this.destination.error(m)}this.destination.next(_)}_error(_){try{this._tapError.call(this._context,_)}catch(m){return void this.destination.error(m)}this.destination.error(_)}_complete(){try{this._tapComplete.call(this._context)}catch(_){return void this.destination.error(_)}return this.destination.complete()}}},44635:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>s});var t=o(13410),e=o(77393);function s(h=u){return _=>_.lift(new a(h))}class a{constructor(_){this.errorFactory=_}call(_,m){return m.subscribe(new l(_,this.errorFactory))}}class l extends e.L{constructor(_,m){super(_),this.errorFactory=m,this.hasValue=!1}_next(_){this.hasValue=!0,this.destination.next(_)}_complete(){if(this.hasValue)return this.destination.complete();{let _;try{_=this.errorFactory()}catch(m){_=m}this.destination.error(_)}}}function u(){return new t.K}},94087:(Ge,g,o)=>{"use strict";o.d(g,{r:()=>s});var t=o(18891),e=o(75319);function s(a,l){return new t.y(u=>{const h=new e.w;let _=0;return h.add(l.schedule(function(){_!==a.length?(u.next(a[_++]),u.closed||h.add(this.schedule())):u.complete()})),h})}},36465:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>s});var t=o(75319);class e extends t.w{constructor(l,u){super()}schedule(l,u=0){return this}}class s extends e{constructor(l,u){super(l,u),this.scheduler=l,this.work=u,this.pending=!1}schedule(l,u=0){if(this.closed)return this;this.state=l;const h=this.id,_=this.scheduler;return null!=h&&(this.id=this.recycleAsyncId(_,h,u)),this.pending=!0,this.delay=u,this.id=this.id||this.requestAsyncId(_,this.id,u),this}requestAsyncId(l,u,h=0){return setInterval(l.flush.bind(l,this),h)}recycleAsyncId(l,u,h=0){if(null!==h&&this.delay===h&&!1===this.pending)return u;clearInterval(u)}execute(l,u){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const h=this._execute(l,u);if(h)return h;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(l,u){let _,h=!1;try{this.work(l)}catch(m){h=!0,_=!!m&&m||new Error(m)}if(h)return this.unsubscribe(),_}_unsubscribe(){const l=this.id,u=this.scheduler,h=u.actions,_=h.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==_&&h.splice(_,1),null!=l&&(this.id=this.recycleAsyncId(u,l,null)),this.delay=null}}},16102:(Ge,g,o)=>{"use strict";o.d(g,{v:()=>e});let t=(()=>{class s{constructor(l,u=s.now){this.SchedulerAction=l,this.now=u}schedule(l,u=0,h){return new this.SchedulerAction(this,l).schedule(h,u)}}return s.now=()=>Date.now(),s})();class e extends t{constructor(a,l=t.now){super(a,()=>e.delegate&&e.delegate!==this?e.delegate.now():l()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(a,l=0,u){return e.delegate&&e.delegate!==this?e.delegate.schedule(a,l,u):super.schedule(a,l,u)}flush(a){const{actions:l}=this;if(this.active)return void l.push(a);let u;this.active=!0;do{if(u=a.execute(a.state,a.delay))break}while(a=l.shift());if(this.active=!1,u){for(;a=l.shift();)a.unsubscribe();throw u}}}},33637:(Ge,g,o)=>{"use strict";o.d(g,{z:()=>s,P:()=>a});var t=o(36465);const s=new(o(16102).v)(t.o),a=s},20377:(Ge,g,o)=>{"use strict";o.d(g,{hZ:()=>e});const e="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"},16554:(Ge,g,o)=>{"use strict";o.d(g,{L:()=>t});const t="function"==typeof Symbol&&Symbol.observable||"@@observable"},29181:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>t});const t="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()},7108:(Ge,g,o)=>{"use strict";o.d(g,{W:()=>e});const e=(()=>{function s(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return s.prototype=Object.create(Error.prototype),s})()},13410:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>e});const e=(()=>{function s(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return s.prototype=Object.create(Error.prototype),s})()},77971:(Ge,g,o)=>{"use strict";o.d(g,{N:()=>e});const e=(()=>{function s(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return s.prototype=Object.create(Error.prototype),s})()},54449:(Ge,g,o)=>{"use strict";function t(e){setTimeout(()=>{throw e},0)}o.d(g,{z:()=>t})},54487:(Ge,g,o)=>{"use strict";function t(e){return e}o.d(g,{y:()=>t})},59796:(Ge,g,o)=>{"use strict";o.d(g,{k:()=>t});const t=Array.isArray||(e=>e&&"number"==typeof e.length)},69489:(Ge,g,o)=>{"use strict";o.d(g,{z:()=>t});const t=e=>e&&"number"==typeof e.length&&"function"!=typeof e},69105:(Ge,g,o)=>{"use strict";function t(e){return"function"==typeof e}o.d(g,{m:()=>t})},26561:(Ge,g,o)=>{"use strict";o.d(g,{k:()=>e});var t=o(59796);function e(s){return!(0,t.k)(s)&&s-parseFloat(s)+1>=0}},81555:(Ge,g,o)=>{"use strict";function t(e){return null!==e&&"object"==typeof e}o.d(g,{K:()=>t})},44072:(Ge,g,o)=>{"use strict";function t(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}o.d(g,{t:()=>t})},54869:(Ge,g,o)=>{"use strict";function t(e){return e&&"function"==typeof e.schedule}o.d(g,{K:()=>t})},98640:(Ge,g,o)=>{"use strict";function t(){}o.d(g,{Z:()=>t})},34022:(Ge,g,o)=>{"use strict";o.d(g,{z:()=>e,U:()=>s});var t=o(54487);function e(...a){return s(a)}function s(a){return 0===a.length?t.y:1===a.length?a[0]:function(u){return a.reduce((h,_)=>_(h),u)}}},87444:(Ge,g,o)=>{"use strict";o.d(g,{s:()=>C});var t=o(55015),e=o(54449),a=o(20377),u=o(16554),_=o(69489),m=o(44072),b=o(81555);const C=D=>{if(D&&"function"==typeof D[u.L])return(D=>x=>{const j=D[u.L]();if("function"!=typeof j.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return j.subscribe(x)})(D);if((0,_.z)(D))return(0,t.V)(D);if((0,m.t)(D))return(D=>x=>(D.then(j=>{x.closed||(x.next(j),x.complete())},j=>x.error(j)).then(null,e.z),x))(D);if(D&&"function"==typeof D[a.hZ])return(D=>x=>{const j=D[a.hZ]();for(;;){let H;try{H=j.next()}catch(z){return x.error(z),x}if(H.done){x.complete();break}if(x.next(H.value),x.closed)break}return"function"==typeof j.return&&x.add(()=>{j.return&&j.return()}),x})(D);{const j=`You provided ${(0,b.K)(D)?"an invalid object":`'${D}'`} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`;throw new TypeError(j)}}},55015:(Ge,g,o)=>{"use strict";o.d(g,{V:()=>t});const t=e=>s=>{for(let a=0,l=e.length;a<l&&!s.closed;a++)s.next(e[a]);s.complete()}},20509:(Ge,g,o)=>{"use strict";o.d(g,{D:()=>l});var t=o(77393);class e extends t.L{constructor(h,_,m){super(),this.parent=h,this.outerValue=_,this.outerIndex=m,this.index=0}_next(h){this.parent.notifyNext(this.outerValue,h,this.outerIndex,this.index++,this)}_error(h){this.parent.notifyError(h,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}var s=o(87444),a=o(18891);function l(u,h,_,m,b=new e(u,_,m)){if(!b.closed)return h instanceof a.y?h.subscribe(b):(0,s.s)(h)(b)}},34863:(Ge,g,o)=>{"use strict";o.d(g,{M:()=>Ue,t:()=>nt}),o(85443),o(4690),o(66837),o(8868),o(35704),o(21581),o(13744),o(63438),o(22603);var ae,b=o(6123),C=o.n(b),D=o(86906),x=o.n(D),j=o(66941),H=o.n(j),z=[],I="ResizeObserver loop completed with undelivered notifications.",Y=(()=>{return(at=Y||(Y={})).BORDER_BOX="border-box",at.CONTENT_BOX="content-box",at.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box",Y;var at})(),ie=function(at){return Object.freeze(at)},oe=function(it,Pt){this.inlineSize=it,this.blockSize=Pt,ie(this)},fe=function(){function at(it,Pt,Ut,ot){return this.x=it,this.y=Pt,this.width=Ut,this.height=ot,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,ie(this)}return at.prototype.toJSON=function(){var it=this;return{x:it.x,y:it.y,top:it.top,right:it.right,bottom:it.bottom,left:it.left,width:it.width,height:it.height}},at.fromRect=function(it){return new at(it.x,it.y,it.width,it.height)},at}(),ne=function(at){return at instanceof SVGElement&&"getBBox"in at},he=function(at){if(ne(at)){var it=at.getBBox();return!it.width&&!it.height}return!(at.offsetWidth||at.offsetHeight||at.getClientRects().length)},ce=function(at){var it,Pt;if(at instanceof Element)return!0;var Ut=null===(Pt=null===(it=at)||void 0===it?void 0:it.ownerDocument)||void 0===Pt?void 0:Pt.defaultView;return!!(Ut&&at instanceof Ut.Element)},Me="undefined"!=typeof window?window:{},Oe=new WeakMap,be=/auto|scroll/,ue=/^tb|vertical/,He=/msie|trident/i.test(Me.navigator&&Me.navigator.userAgent),$e=function(at){return parseFloat(at||"0")},F=function(at,it,Pt){return void 0===at&&(at=0),void 0===it&&(it=0),void 0===Pt&&(Pt=!1),new oe((Pt?it:at)||0,(Pt?at:it)||0)},je=ie({devicePixelContentBoxSize:F(),borderBoxSize:F(),contentBoxSize:F(),contentRect:new fe(0,0,0,0)}),Et=function(at,it){if(void 0===it&&(it=!1),Oe.has(at)&&!it)return Oe.get(at);if(he(at))return Oe.set(at,je),je;var Pt=getComputedStyle(at),Ut=ne(at)&&at.ownerSVGElement&&at.getBBox(),ot=!He&&"border-box"===Pt.boxSizing,Nn=ue.test(Pt.writingMode||""),sn=!Ut&&be.test(Pt.overflowY||""),An=!Ut&&be.test(Pt.overflowX||""),Bn=Ut?0:$e(Pt.paddingTop),ir=Ut?0:$e(Pt.paddingRight),mr=Ut?0:$e(Pt.paddingBottom),_r=Ut?0:$e(Pt.paddingLeft),Nr=Ut?0:$e(Pt.borderTopWidth),br=Ut?0:$e(Pt.borderRightWidth),Jn=Ut?0:$e(Pt.borderBottomWidth),Mr=_r+ir,yi=Bn+mr,Ii=(Ut?0:$e(Pt.borderLeftWidth))+br,Mi=Nr+Jn,Oi=An?at.offsetHeight-Mi-at.clientHeight:0,Kr=sn?at.offsetWidth-Ii-at.clientWidth:0,ei=ot?Mr+Ii:0,di=ot?yi+Mi:0,se=Ut?Ut.width:$e(Pt.width)-ei-Kr,ct=Ut?Ut.height:$e(Pt.height)-di-Oi,Ke=se+Mr+Kr+Ii,Xe=ct+yi+Oi+Mi,Vt=ie({devicePixelContentBoxSize:F(Math.round(se*devicePixelRatio),Math.round(ct*devicePixelRatio),Nn),borderBoxSize:F(Ke,Xe,Nn),contentBoxSize:F(se,ct,Nn),contentRect:new fe(_r,Bn,se,ct)});return Oe.set(at,Vt),Vt},lt=function(at,it,Pt){var Ut=Et(at,Pt),ot=Ut.borderBoxSize,Nn=Ut.contentBoxSize,sn=Ut.devicePixelContentBoxSize;switch(it){case Y.DEVICE_PIXEL_CONTENT_BOX:return sn;case Y.BORDER_BOX:return ot;default:return Nn}},nn=function(it){var Pt=Et(it);this.target=it,this.contentRect=Pt.contentRect,this.borderBoxSize=ie([Pt.borderBoxSize]),this.contentBoxSize=ie([Pt.contentBoxSize]),this.devicePixelContentBoxSize=ie([Pt.devicePixelContentBoxSize])},St=function(at){if(he(at))return 1/0;for(var it=0,Pt=at.parentNode;Pt;)it+=1,Pt=Pt.parentNode;return it},At=function(){var at=1/0,it=[];z.forEach(function(sn){if(0!==sn.activeTargets.length){var An=[];sn.activeTargets.forEach(function(ir){var mr=new nn(ir.target),_r=St(ir.target);An.push(mr),ir.lastReportedSize=lt(ir.target,ir.observedBox),_r<at&&(at=_r)}),it.push(function(){sn.callback.call(sn.observer,An,sn.observer)}),sn.activeTargets.splice(0,sn.activeTargets.length)}});for(var Pt=0,Ut=it;Pt<Ut.length;Pt++)(0,Ut[Pt])();return at},Qe=function(at){z.forEach(function(Pt){Pt.activeTargets.splice(0,Pt.activeTargets.length),Pt.skippedTargets.splice(0,Pt.skippedTargets.length),Pt.observationTargets.forEach(function(ot){ot.isActive()&&(St(ot.target)>at?Pt.activeTargets.push(ot):Pt.skippedTargets.push(ot))})})},Ie=[],ln=0,Rn={attributes:!0,characterData:!0,childList:!0,subtree:!0},er=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Mn=function(at){return void 0===at&&(at=0),Date.now()+at},Ht=!1,Yn=new(function(){function at(){var it=this;this.stopped=!0,this.listener=function(){return it.schedule()}}return at.prototype.run=function(it){var Pt=this;if(void 0===it&&(it=250),!Ht){Ht=!0;var Ut=Mn(it);!function(at){!function(at){if(!ae){var it=0,Pt=document.createTextNode("");new MutationObserver(function(){return Ie.splice(0).forEach(function(at){return at()})}).observe(Pt,{characterData:!0}),ae=function(){Pt.textContent=""+(it?it--:it++)}}Ie.push(at),ae()}(function(){requestAnimationFrame(at)})}(function(){var ot=!1;try{ot=function(){var at=0;for(Qe(at);z.some(function(at){return at.activeTargets.length>0});)at=At(),Qe(at);return z.some(function(at){return at.skippedTargets.length>0})&&function(){var at;"function"==typeof ErrorEvent?at=new ErrorEvent("error",{message:I}):((at=document.createEvent("Event")).initEvent("error",!1,!1),at.message=I),window.dispatchEvent(at)}(),at>0}()}finally{if(Ht=!1,it=Ut-Mn(),!ln)return;ot?Pt.run(1e3):it>0?Pt.run(it):Pt.start()}})}},at.prototype.schedule=function(){this.stop(),this.run()},at.prototype.observe=function(){var it=this,Pt=function(){return it.observer&&it.observer.observe(document.body,Rn)};document.body?Pt():Me.addEventListener("DOMContentLoaded",Pt)},at.prototype.start=function(){var it=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),er.forEach(function(Pt){return Me.addEventListener(Pt,it.listener,!0)}))},at.prototype.stop=function(){var it=this;this.stopped||(this.observer&&this.observer.disconnect(),er.forEach(function(Pt){return Me.removeEventListener(Pt,it.listener,!0)}),this.stopped=!0)},at}()),Cn=function(at){!ln&&at>0&&Yn.start(),!(ln+=at)&&Yn.stop()},dn=function(){function at(it,Pt){this.target=it,this.observedBox=Pt||Y.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return at.prototype.isActive=function(){var it=lt(this.target,this.observedBox,!0);return function(at){return!ne(at)&&!function(at){switch(at.tagName){case"INPUT":if("image"!==at.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1}(at)&&"inline"===getComputedStyle(at).display}(this.target)&&(this.lastReportedSize=it),this.lastReportedSize.inlineSize!==it.inlineSize||this.lastReportedSize.blockSize!==it.blockSize},at}(),Kn=function(it,Pt){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=it,this.callback=Pt},qn=new WeakMap,Sn=function(at,it){for(var Pt=0;Pt<at.length;Pt+=1)if(at[Pt].target===it)return Pt;return-1},$n=function(){function at(){}return at.connect=function(it,Pt){var Ut=new Kn(it,Pt);qn.set(it,Ut)},at.observe=function(it,Pt,Ut){var ot=qn.get(it),Nn=0===ot.observationTargets.length;Sn(ot.observationTargets,Pt)<0&&(Nn&&z.push(ot),ot.observationTargets.push(new dn(Pt,Ut&&Ut.box)),Cn(1),Yn.schedule())},at.unobserve=function(it,Pt){var Ut=qn.get(it),ot=Sn(Ut.observationTargets,Pt);ot>=0&&(1===Ut.observationTargets.length&&z.splice(z.indexOf(Ut),1),Ut.observationTargets.splice(ot,1),Cn(-1))},at.disconnect=function(it){var Pt=this,Ut=qn.get(it);Ut.observationTargets.slice().forEach(function(ot){return Pt.unobserve(it,ot.target)}),Ut.activeTargets.splice(0,Ut.activeTargets.length)},at}(),En=function(){function at(it){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof it)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");$n.connect(this,it)}return at.prototype.observe=function(it,Pt){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!ce(it))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");$n.observe(this,it,Pt)},at.prototype.unobserve=function(it){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!ce(it))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");$n.unobserve(this,it)},at.prototype.disconnect=function(){$n.disconnect(this)},at.toString=function(){return"function ResizeObserver () { [polyfill code] }"},at}(),Fn=o(72318),Dn=o.n(Fn);function Tt(at){return at&&at.ownerDocument&&at.ownerDocument.defaultView?at.ownerDocument.defaultView:window}function yn(at){return at&&at.ownerDocument?at.ownerDocument:document}o(35319),o(80477),o(69665),o(26954),o(66262);var et=null,jt=null;function hn(at){if(null===et){var it=yn(at);if(void 0===it)return et=0;var Pt=it.body,Ut=it.createElement("div");Ut.classList.add("simplebar-hide-scrollbar"),Pt.appendChild(Ut);var ot=Ut.getBoundingClientRect().right;Pt.removeChild(Ut),et=ot}return et}Dn()&&window.addEventListener("resize",function(){jt!==window.devicePixelRatio&&(jt=window.devicePixelRatio,et=null)});var Qn=function(){function at(Pt,Ut){var ot=this;this.onScroll=function(){var Nn=Tt(ot.el);ot.scrollXTicking||(Nn.requestAnimationFrame(ot.scrollX),ot.scrollXTicking=!0),ot.scrollYTicking||(Nn.requestAnimationFrame(ot.scrollY),ot.scrollYTicking=!0)},this.scrollX=function(){ot.axis.x.isOverflowing&&(ot.showScrollbar("x"),ot.positionScrollbar("x")),ot.scrollXTicking=!1},this.scrollY=function(){ot.axis.y.isOverflowing&&(ot.showScrollbar("y"),ot.positionScrollbar("y")),ot.scrollYTicking=!1},this.onMouseEnter=function(){ot.showScrollbar("x"),ot.showScrollbar("y")},this.onMouseMove=function(Nn){ot.mouseX=Nn.clientX,ot.mouseY=Nn.clientY,(ot.axis.x.isOverflowing||ot.axis.x.forceVisible)&&ot.onMouseMoveForAxis("x"),(ot.axis.y.isOverflowing||ot.axis.y.forceVisible)&&ot.onMouseMoveForAxis("y")},this.onMouseLeave=function(){ot.onMouseMove.cancel(),(ot.axis.x.isOverflowing||ot.axis.x.forceVisible)&&ot.onMouseLeaveForAxis("x"),(ot.axis.y.isOverflowing||ot.axis.y.forceVisible)&&ot.onMouseLeaveForAxis("y"),ot.mouseX=-1,ot.mouseY=-1},this.onWindowResize=function(){ot.scrollbarWidth=ot.getScrollbarWidth(),ot.hideNativeScrollbar()},this.hideScrollbars=function(){ot.axis.x.track.rect=ot.axis.x.track.el.getBoundingClientRect(),ot.axis.y.track.rect=ot.axis.y.track.el.getBoundingClientRect(),ot.isWithinBounds(ot.axis.y.track.rect)||(ot.axis.y.scrollbar.el.classList.remove(ot.classNames.visible),ot.axis.y.isVisible=!1),ot.isWithinBounds(ot.axis.x.track.rect)||(ot.axis.x.scrollbar.el.classList.remove(ot.classNames.visible),ot.axis.x.isVisible=!1)},this.onPointerEvent=function(Nn){var sn,An;ot.axis.x.track.rect=ot.axis.x.track.el.getBoundingClientRect(),ot.axis.y.track.rect=ot.axis.y.track.el.getBoundingClientRect(),(ot.axis.x.isOverflowing||ot.axis.x.forceVisible)&&(sn=ot.isWithinBounds(ot.axis.x.track.rect)),(ot.axis.y.isOverflowing||ot.axis.y.forceVisible)&&(An=ot.isWithinBounds(ot.axis.y.track.rect)),(sn||An)&&(Nn.preventDefault(),Nn.stopPropagation(),"mousedown"===Nn.type&&(sn&&(ot.axis.x.scrollbar.rect=ot.axis.x.scrollbar.el.getBoundingClientRect(),ot.isWithinBounds(ot.axis.x.scrollbar.rect)?ot.onDragStart(Nn,"x"):ot.onTrackClick(Nn,"x")),An&&(ot.axis.y.scrollbar.rect=ot.axis.y.scrollbar.el.getBoundingClientRect(),ot.isWithinBounds(ot.axis.y.scrollbar.rect)?ot.onDragStart(Nn,"y"):ot.onTrackClick(Nn,"y"))))},this.drag=function(Nn){var An=ot.axis[ot.draggedAxis].track,Bn=An.rect[ot.axis[ot.draggedAxis].sizeAttr],ir=ot.axis[ot.draggedAxis].scrollbar,mr=ot.contentWrapperEl[ot.axis[ot.draggedAxis].scrollSizeAttr],_r=parseInt(ot.elStyles[ot.axis[ot.draggedAxis].sizeAttr],10);Nn.preventDefault(),Nn.stopPropagation();var Jn=(("y"===ot.draggedAxis?Nn.pageY:Nn.pageX)-An.rect[ot.axis[ot.draggedAxis].offsetAttr]-ot.axis[ot.draggedAxis].dragOffset)/(Bn-ir.size)*(mr-_r);"x"===ot.draggedAxis&&(Jn=ot.isRtl&&at.getRtlHelpers().isRtlScrollbarInverted?Jn-(Bn+ir.size):Jn,Jn=ot.isRtl&&at.getRtlHelpers().isRtlScrollingInverted?-Jn:Jn),ot.contentWrapperEl[ot.axis[ot.draggedAxis].scrollOffsetAttr]=Jn},this.onEndDrag=function(Nn){var sn=yn(ot.el),An=Tt(ot.el);Nn.preventDefault(),Nn.stopPropagation(),ot.el.classList.remove(ot.classNames.dragging),sn.removeEventListener("mousemove",ot.drag,!0),sn.removeEventListener("mouseup",ot.onEndDrag,!0),ot.removePreventClickId=An.setTimeout(function(){sn.removeEventListener("click",ot.preventClick,!0),sn.removeEventListener("dblclick",ot.preventClick,!0),ot.removePreventClickId=null})},this.preventClick=function(Nn){Nn.preventDefault(),Nn.stopPropagation()},this.el=Pt,this.minScrollbarWidth=20,this.options=Object.assign({},at.defaultOptions,{},Ut),this.classNames=Object.assign({},at.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!at.instances.has(this.el)&&(this.recalculate=C()(this.recalculate.bind(this),64),this.onMouseMove=C()(this.onMouseMove.bind(this),64),this.hideScrollbars=x()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=x()(this.onWindowResize.bind(this),64,{leading:!0}),at.getRtlHelpers=H()(at.getRtlHelpers),this.init())}at.getRtlHelpers=function(){var Ut=document.createElement("div");Ut.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var ot=Ut.firstElementChild;document.body.appendChild(ot);var Nn=ot.firstElementChild;ot.scrollLeft=0;var sn=at.getOffset(ot),An=at.getOffset(Nn);ot.scrollLeft=999;var Bn=at.getOffset(Nn);return{isRtlScrollingInverted:sn.left!==An.left&&An.left-Bn.left!=0,isRtlScrollbarInverted:sn.left!==An.left}},at.getOffset=function(Ut){var ot=Ut.getBoundingClientRect(),Nn=yn(Ut),sn=Tt(Ut);return{top:ot.top+(sn.pageYOffset||Nn.documentElement.scrollTop),left:ot.left+(sn.pageXOffset||Nn.documentElement.scrollLeft)}};var it=at.prototype;return it.init=function(){at.instances.set(this.el,this),Dn()&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},it.initDOM=function(){var Ut=this;if(Array.prototype.filter.call(this.el.children,function(sn){return sn.classList.contains(Ut.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var ot=document.createElement("div"),Nn=document.createElement("div");ot.classList.add(this.classNames.track),Nn.classList.add(this.classNames.scrollbar),ot.appendChild(Nn),this.axis.x.track.el=ot.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=ot.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},it.setAccessibilityAttributes=function(){var Ut=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",Ut)},it.initListeners=function(){var Ut=this,ot=Tt(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(An){Ut.el.addEventListener(An,Ut.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(An){Ut.el.addEventListener(An,Ut.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),ot.addEventListener("resize",this.onWindowResize);var Nn=!1;this.resizeObserver=new(ot.ResizeObserver||En)(function(){!Nn||Ut.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),ot.requestAnimationFrame(function(){Nn=!0}),this.mutationObserver=new ot.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},it.recalculate=function(){var Ut=Tt(this.el);this.elStyles=Ut.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var ot=this.heightAutoObserverEl.offsetHeight<=1,Nn=this.heightAutoObserverEl.offsetWidth<=1,sn=this.contentEl.offsetWidth,An=this.contentWrapperEl.offsetWidth,Bn=this.elStyles.overflowX,ir=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var mr=this.contentEl.scrollHeight,_r=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=ot?"auto":"100%",this.placeholderEl.style.width=Nn?sn+"px":"auto",this.placeholderEl.style.height=mr+"px";var Nr=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=_r>sn,this.axis.y.isOverflowing=mr>Nr,this.axis.x.isOverflowing="hidden"!==Bn&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==ir&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var br=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&_r>An-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&mr>Nr-br,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},it.getScrollbarSize=function(Ut){if(void 0===Ut&&(Ut="y"),!this.axis[Ut].isOverflowing)return 0;var sn,Nn=this.axis[Ut].track.el[this.axis[Ut].offsetSizeAttr];return sn=Math.max(~~(Nn/this.contentEl[this.axis[Ut].scrollSizeAttr]*Nn),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(sn=Math.min(sn,this.options.scrollbarMaxSize)),sn},it.positionScrollbar=function(Ut){if(void 0===Ut&&(Ut="y"),this.axis[Ut].isOverflowing){var ot=this.contentWrapperEl[this.axis[Ut].scrollSizeAttr],Nn=this.axis[Ut].track.el[this.axis[Ut].offsetSizeAttr],sn=parseInt(this.elStyles[this.axis[Ut].sizeAttr],10),An=this.axis[Ut].scrollbar,Bn=this.contentWrapperEl[this.axis[Ut].scrollOffsetAttr],mr=~~((Bn="x"===Ut&&this.isRtl&&at.getRtlHelpers().isRtlScrollingInverted?-Bn:Bn)/(ot-sn)*(Nn-An.size));mr="x"===Ut&&this.isRtl&&at.getRtlHelpers().isRtlScrollbarInverted?mr+(Nn-An.size):mr,An.el.style.transform="x"===Ut?"translate3d("+mr+"px, 0, 0)":"translate3d(0, "+mr+"px, 0)"}},it.toggleTrackVisibility=function(Ut){void 0===Ut&&(Ut="y");var ot=this.axis[Ut].track.el,Nn=this.axis[Ut].scrollbar.el;this.axis[Ut].isOverflowing||this.axis[Ut].forceVisible?(ot.style.visibility="visible",this.contentWrapperEl.style[this.axis[Ut].overflowAttr]="scroll"):(ot.style.visibility="hidden",this.contentWrapperEl.style[this.axis[Ut].overflowAttr]="hidden"),Nn.style.display=this.axis[Ut].isOverflowing?"block":"none"},it.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},it.onMouseMoveForAxis=function(Ut){void 0===Ut&&(Ut="y"),this.axis[Ut].track.rect=this.axis[Ut].track.el.getBoundingClientRect(),this.axis[Ut].scrollbar.rect=this.axis[Ut].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[Ut].scrollbar.rect)?this.axis[Ut].scrollbar.el.classList.add(this.classNames.hover):this.axis[Ut].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[Ut].track.rect)?(this.showScrollbar(Ut),this.axis[Ut].track.el.classList.add(this.classNames.hover)):this.axis[Ut].track.el.classList.remove(this.classNames.hover)},it.onMouseLeaveForAxis=function(Ut){void 0===Ut&&(Ut="y"),this.axis[Ut].track.el.classList.remove(this.classNames.hover),this.axis[Ut].scrollbar.el.classList.remove(this.classNames.hover)},it.showScrollbar=function(Ut){void 0===Ut&&(Ut="y"),this.axis[Ut].isVisible||(this.axis[Ut].scrollbar.el.classList.add(this.classNames.visible),this.axis[Ut].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},it.onDragStart=function(Ut,ot){void 0===ot&&(ot="y");var Nn=yn(this.el),sn=Tt(this.el);this.axis[ot].dragOffset=("y"===ot?Ut.pageY:Ut.pageX)-this.axis[ot].scrollbar.rect[this.axis[ot].offsetAttr],this.draggedAxis=ot,this.el.classList.add(this.classNames.dragging),Nn.addEventListener("mousemove",this.drag,!0),Nn.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(Nn.addEventListener("click",this.preventClick,!0),Nn.addEventListener("dblclick",this.preventClick,!0)):(sn.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},it.onTrackClick=function(Ut,ot){var Nn=this;if(void 0===ot&&(ot="y"),this.options.clickOnTrack){var sn=Tt(this.el);this.axis[ot].scrollbar.rect=this.axis[ot].scrollbar.el.getBoundingClientRect();var Bn=this.axis[ot].scrollbar.rect[this.axis[ot].offsetAttr],ir=parseInt(this.elStyles[this.axis[ot].sizeAttr],10),mr=this.contentWrapperEl[this.axis[ot].scrollOffsetAttr],Nr=("y"===ot?this.mouseY-Bn:this.mouseX-Bn)<0?-1:1,br=-1===Nr?mr-ir:mr+ir;!function nr(){var Mr;if(-1===Nr)mr>br&&(Nn.contentWrapperEl.scrollTo(((Mr={})[Nn.axis[ot].offsetAttr]=mr-=Nn.options.clickOnTrackSpeed,Mr)),sn.requestAnimationFrame(nr));else if(mr<br){var yi;Nn.contentWrapperEl.scrollTo(((yi={})[Nn.axis[ot].offsetAttr]=mr+=Nn.options.clickOnTrackSpeed,yi)),sn.requestAnimationFrame(nr)}}()}},it.getContentElement=function(){return this.contentEl},it.getScrollElement=function(){return this.contentWrapperEl},it.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:hn(this.el)}catch(Ut){return hn(this.el)}},it.removeListeners=function(){var Ut=this,ot=Tt(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(Nn){Ut.el.removeEventListener(Nn,Ut.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(Nn){Ut.el.removeEventListener(Nn,Ut.onPointerEvent,{capture:!0,passive:!0})}),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),ot.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},it.unMount=function(){this.removeListeners(),at.instances.delete(this.el)},it.isWithinBounds=function(Ut){return this.mouseX>=Ut.left&&this.mouseX<=Ut.left+Ut.width&&this.mouseY>=Ut.top&&this.mouseY<=Ut.top+Ut.height},it.findChild=function(Ut,ot){var Nn=Ut.matches||Ut.webkitMatchesSelector||Ut.mozMatchesSelector||Ut.msMatchesSelector;return Array.prototype.filter.call(Ut.children,function(sn){return Nn.call(sn,ot)})[0]},at}();Qn.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},Qn.instances=new WeakMap;const Ir=Qn;var ht=o(74788);const L=["*"];let Ue=(()=>{class at{constructor(Pt){this.elRef=Pt}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new Ir(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}return at.\u0275fac=function(Pt){return new(Pt||at)(ht.Y36(ht.SBq))},at.\u0275cmp=ht.Xpm({type:at,selectors:[["ngx-simplebar"]],hostAttrs:["data-simplebar","init"],inputs:{options:"options"},ngContentSelectors:L,decls:13,vars:0,consts:[[1,"simplebar-wrapper"],[1,"simplebar-height-auto-observer-wrapper"],[1,"simplebar-height-auto-observer"],[1,"simplebar-mask"],[1,"simplebar-offset"],[1,"simplebar-content-wrapper"],[1,"simplebar-content"],[1,"simplebar-placeholder"],[1,"simplebar-track","simplebar-horizontal"],[1,"simplebar-scrollbar"],[1,"simplebar-track","simplebar-vertical"]],template:function(Pt,Ut){1&Pt&&(ht.F$t(),ht.TgZ(0,"div",0),ht.TgZ(1,"div",1),ht._UZ(2,"div",2),ht.qZA(),ht.TgZ(3,"div",3),ht.TgZ(4,"div",4),ht.TgZ(5,"div",5),ht.TgZ(6,"div",6),ht.Hsn(7),ht.qZA(),ht.qZA(),ht.qZA(),ht.qZA(),ht._UZ(8,"div",7),ht.qZA(),ht.TgZ(9,"div",8),ht._UZ(10,"div",9),ht.qZA(),ht.TgZ(11,"div",10),ht._UZ(12,"div",9),ht.qZA())},styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],encapsulation:2}),at})(),nt=(()=>{class at{}return at.\u0275fac=function(Pt){return new(Pt||at)},at.\u0275mod=ht.oAB({type:at}),at.\u0275inj=ht.cJS({imports:[[]]}),at})()},11642:Ge=>{Ge.exports=function(g){var o={};function t(e){if(o[e])return o[e].exports;var s=o[e]={i:e,l:!1,exports:{}};return g[e].call(s.exports,s,s.exports,t),s.l=!0,s.exports}return t.m=g,t.c=o,t.d=function(e,s,a){t.o(e,s)||Object.defineProperty(e,s,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,s){if(1&s&&(e=t(e)),8&s||4&s&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&s&&"string"!=typeof e)for(var l in e)t.d(a,l,function(u){return e[u]}.bind(null,l));return a},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,s){return Object.prototype.hasOwnProperty.call(e,s)},t.p="/dist",t(t.s=481)}([function(g,o,t){"use strict";g.exports=t(555)},function(g,o,t){g.exports=function(){"use strict";var e=Array.prototype.slice;function s(G,Se){Se&&(G.prototype=Object.create(Se.prototype)),G.prototype.constructor=G}function a(G){return _(G)?G:ln(G)}function l(G){return m(G)?G:ar(G)}function u(G){return b(G)?G:Ln(G)}function h(G){return _(G)&&!C(G)?G:Rn(G)}function _(G){return!(!G||!G[x])}function m(G){return!(!G||!G[j])}function b(G){return!(!G||!G[H])}function C(G){return m(G)||b(G)}function D(G){return!(!G||!G[z])}s(l,a),s(u,a),s(h,a),a.isIterable=_,a.isKeyed=m,a.isIndexed=b,a.isAssociative=C,a.isOrdered=D,a.Keyed=l,a.Indexed=u,a.Set=h;var x="@@__IMMUTABLE_ITERABLE__@@",j="@@__IMMUTABLE_KEYED__@@",H="@@__IMMUTABLE_INDEXED__@@",z="@@__IMMUTABLE_ORDERED__@@",U="delete",I=32,J=31,Y={},ie={value:!1},oe={value:!1};function fe(G){return G.value=!1,G}function ne(G){G&&(G.value=!0)}function he(){}function ce(G,Se){Se=Se||0;for(var ft=Math.max(0,G.length-Se),Ft=new Array(ft),Bt=0;Bt<ft;Bt++)Ft[Bt]=G[Bt+Se];return Ft}function Ae(G){return void 0===G.size&&(G.size=G.__iterate(Oe)),G.size}function Me(G,Se){if("number"!=typeof Se){var ft=Se>>>0;if(""+ft!==Se||4294967295===ft)return NaN;Se=ft}return Se<0?Ae(G)+Se:Se}function Oe(){return!0}function be(G,Se,ft){return(0===G||void 0!==ft&&G<=-ft)&&(void 0===Se||void 0!==ft&&Se>=ft)}function ue(G,Se){return $e(G,Se,0)}function He(G,Se){return $e(G,Se,Se)}function $e(G,Se,ft){return void 0===G?ft:G<0?Math.max(0,Se+G):void 0===Se?G:Math.min(Se,G)}var lt="function"==typeof Symbol&&Symbol.iterator,nn="@@iterator",St=lt||nn;function At(G){this.next=G}function Qe(G,Se,ft,Ft){var Bt=0===G?Se:1===G?ft:[Se,ft];return Ft?Ft.value=Bt:Ft={value:Bt,done:!1},Ft}function It(){return{value:void 0,done:!0}}function ae(G){return!!Jt(G)}function Ie(G){return G&&"function"==typeof G.next}function dt(G){var Se=Jt(G);return Se&&Se.call(G)}function Jt(G){var Se=G&&(lt&&G[lt]||G[nn]);if("function"==typeof Se)return Se}function zt(G){return G&&"number"==typeof G.length}function ln(G){return null==G?qn():_(G)?G.toSeq():function(G){var Se=Fn(G)||"object"==typeof G&&new Cn(G);if(!Se)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+G);return Se}(G)}function ar(G){return null==G?qn().toKeyedSeq():_(G)?m(G)?G.toSeq():G.fromEntrySeq():Sn(G)}function Ln(G){return null==G?qn():_(G)?m(G)?G.entrySeq():G.toIndexedSeq():$n(G)}function Rn(G){return(null==G?qn():_(G)?m(G)?G.entrySeq():G:$n(G)).toSetSeq()}At.prototype.toString=function(){return"[Iterator]"},At.KEYS=0,At.VALUES=1,At.ENTRIES=2,At.prototype.inspect=At.prototype.toSource=function(){return this.toString()},At.prototype[St]=function(){return this},s(ln,a),ln.of=function(){return ln(arguments)},ln.prototype.toSeq=function(){return this},ln.prototype.toString=function(){return this.__toString("Seq {","}")},ln.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},ln.prototype.__iterate=function(G,Se){return Dn(this,G,Se,!0)},ln.prototype.__iterator=function(G,Se){return mn(this,G,Se,!0)},s(ar,ln),ar.prototype.toKeyedSeq=function(){return this},s(Ln,ln),Ln.of=function(){return Ln(arguments)},Ln.prototype.toIndexedSeq=function(){return this},Ln.prototype.toString=function(){return this.__toString("Seq [","]")},Ln.prototype.__iterate=function(G,Se){return Dn(this,G,Se,!1)},Ln.prototype.__iterator=function(G,Se){return mn(this,G,Se,!1)},s(Rn,ln),Rn.of=function(){return Rn(arguments)},Rn.prototype.toSetSeq=function(){return this},ln.isSeq=Kn,ln.Keyed=ar,ln.Set=Rn,ln.Indexed=Ln;var er,Mn,Ht,tr="@@__IMMUTABLE_SEQ__@@";function Yn(G){this._array=G,this.size=G.length}function Cn(G){var Se=Object.keys(G);this._object=G,this._keys=Se,this.size=Se.length}function Kt(G){this._iterable=G,this.size=G.length||G.size}function dn(G){this._iterator=G,this._iteratorCache=[]}function Kn(G){return!(!G||!G[tr])}function qn(){return er||(er=new Yn([]))}function Sn(G){var Se=Array.isArray(G)?new Yn(G).fromEntrySeq():Ie(G)?new dn(G).fromEntrySeq():ae(G)?new Kt(G).fromEntrySeq():"object"==typeof G?new Cn(G):void 0;if(!Se)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+G);return Se}function $n(G){var Se=Fn(G);if(!Se)throw new TypeError("Expected Array or iterable object of values: "+G);return Se}function Fn(G){return zt(G)?new Yn(G):Ie(G)?new dn(G):ae(G)?new Kt(G):void 0}function Dn(G,Se,ft,Ft){var Bt=G._cache;if(Bt){for(var In=Bt.length-1,Xn=0;Xn<=In;Xn++){var Sr=Bt[ft?In-Xn:Xn];if(!1===Se(Sr[1],Ft?Sr[0]:Xn,G))return Xn+1}return Xn}return G.__iterateUncached(Se,ft)}function mn(G,Se,ft,Ft){var Bt=G._cache;if(Bt){var In=Bt.length-1,Xn=0;return new At(function(){var Sr=Bt[ft?In-Xn:Xn];return Xn++>In?{value:void 0,done:!0}:Qe(Se,Ft?Sr[0]:Xn-1,Sr[1])})}return G.__iteratorUncached(Se,ft)}function jn(G,Se){return Se?Xt(Se,G,"",{"":G}):ut(G)}function Xt(G,Se,ft,Ft){return Array.isArray(Se)?G.call(Ft,ft,Ln(Se).map(function(Bt,In){return Xt(G,Bt,In,Se)})):mt(Se)?G.call(Ft,ft,ar(Se).map(function(Bt,In){return Xt(G,Bt,In,Se)})):Se}function ut(G){return Array.isArray(G)?Ln(G).map(ut).toList():mt(G)?ar(G).map(ut).toMap():G}function mt(G){return G&&(G.constructor===Object||void 0===G.constructor)}function Tt(G,Se){if(G===Se||G!=G&&Se!=Se)return!0;if(!G||!Se)return!1;if("function"==typeof G.valueOf&&"function"==typeof Se.valueOf){if((G=G.valueOf())===(Se=Se.valueOf())||G!=G&&Se!=Se)return!0;if(!G||!Se)return!1}return!("function"!=typeof G.equals||"function"!=typeof Se.equals||!G.equals(Se))}function yn(G,Se){if(G===Se)return!0;if(!_(Se)||void 0!==G.size&&void 0!==Se.size&&G.size!==Se.size||void 0!==G.__hash&&void 0!==Se.__hash&&G.__hash!==Se.__hash||m(G)!==m(Se)||b(G)!==b(Se)||D(G)!==D(Se))return!1;if(0===G.size&&0===Se.size)return!0;var ft=!C(G);if(D(G)){var Ft=G.entries();return Se.every(function(pi,Fr){var zr=Ft.next().value;return zr&&Tt(zr[1],pi)&&(ft||Tt(zr[0],Fr))})&&Ft.next().done}var Bt=!1;if(void 0===G.size)if(void 0===Se.size)"function"==typeof G.cacheResult&&G.cacheResult();else{Bt=!0;var In=G;G=Se,Se=In}var Xn=!0,Sr=Se.__iterate(function(pi,Fr){if(ft?!G.has(pi):Bt?!Tt(pi,G.get(Fr,Y)):!Tt(G.get(Fr,Y),pi))return Xn=!1,!1});return Xn&&G.size===Sr}function et(G,Se){if(!(this instanceof et))return new et(G,Se);if(this._value=G,this.size=void 0===Se?1/0:Math.max(0,Se),0===this.size){if(Mn)return Mn;Mn=this}}function jt(G,Se){if(!G)throw new Error(Se)}function hn(G,Se,ft){if(!(this instanceof hn))return new hn(G,Se,ft);if(jt(0!==ft,"Cannot step a Range by 0"),G=G||0,void 0===Se&&(Se=1/0),ft=void 0===ft?1:Math.abs(ft),Se<G&&(ft=-ft),this._start=G,this._end=Se,this._step=ft,this.size=Math.max(0,Math.ceil((Se-G)/ft-1)+1),0===this.size){if(Ht)return Ht;Ht=this}}function Qn(){throw TypeError("Abstract")}function Ir(){}function ht(){}function L(){}ln.prototype[tr]=!0,s(Yn,Ln),Yn.prototype.get=function(G,Se){return this.has(G)?this._array[Me(this,G)]:Se},Yn.prototype.__iterate=function(G,Se){for(var ft=this._array,Ft=ft.length-1,Bt=0;Bt<=Ft;Bt++)if(!1===G(ft[Se?Ft-Bt:Bt],Bt,this))return Bt+1;return Bt},Yn.prototype.__iterator=function(G,Se){var ft=this._array,Ft=ft.length-1,Bt=0;return new At(function(){return Bt>Ft?{value:void 0,done:!0}:Qe(G,Bt,ft[Se?Ft-Bt++:Bt++])})},s(Cn,ar),Cn.prototype.get=function(G,Se){return void 0===Se||this.has(G)?this._object[G]:Se},Cn.prototype.has=function(G){return this._object.hasOwnProperty(G)},Cn.prototype.__iterate=function(G,Se){for(var ft=this._object,Ft=this._keys,Bt=Ft.length-1,In=0;In<=Bt;In++){var Xn=Ft[Se?Bt-In:In];if(!1===G(ft[Xn],Xn,this))return In+1}return In},Cn.prototype.__iterator=function(G,Se){var ft=this._object,Ft=this._keys,Bt=Ft.length-1,In=0;return new At(function(){var Xn=Ft[Se?Bt-In:In];return In++>Bt?{value:void 0,done:!0}:Qe(G,Xn,ft[Xn])})},Cn.prototype[z]=!0,s(Kt,Ln),Kt.prototype.__iterateUncached=function(G,Se){if(Se)return this.cacheResult().__iterate(G,Se);var ft=dt(this._iterable),Ft=0;if(Ie(ft))for(var Bt;!(Bt=ft.next()).done&&!1!==G(Bt.value,Ft++,this););return Ft},Kt.prototype.__iteratorUncached=function(G,Se){if(Se)return this.cacheResult().__iterator(G,Se);var ft=dt(this._iterable);if(!Ie(ft))return new At(It);var Ft=0;return new At(function(){var Bt=ft.next();return Bt.done?Bt:Qe(G,Ft++,Bt.value)})},s(dn,Ln),dn.prototype.__iterateUncached=function(G,Se){if(Se)return this.cacheResult().__iterate(G,Se);for(var ft,Ft=this._iterator,Bt=this._iteratorCache,In=0;In<Bt.length;)if(!1===G(Bt[In],In++,this))return In;for(;!(ft=Ft.next()).done;){var Xn=ft.value;if(Bt[In]=Xn,!1===G(Xn,In++,this))break}return In},dn.prototype.__iteratorUncached=function(G,Se){if(Se)return this.cacheResult().__iterator(G,Se);var ft=this._iterator,Ft=this._iteratorCache,Bt=0;return new At(function(){if(Bt>=Ft.length){var In=ft.next();if(In.done)return In;Ft[Bt]=In.value}return Qe(G,Bt,Ft[Bt++])})},s(et,Ln),et.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},et.prototype.get=function(G,Se){return this.has(G)?this._value:Se},et.prototype.includes=function(G){return Tt(this._value,G)},et.prototype.slice=function(G,Se){var ft=this.size;return be(G,Se,ft)?this:new et(this._value,He(Se,ft)-ue(G,ft))},et.prototype.reverse=function(){return this},et.prototype.indexOf=function(G){return Tt(this._value,G)?0:-1},et.prototype.lastIndexOf=function(G){return Tt(this._value,G)?this.size:-1},et.prototype.__iterate=function(G,Se){for(var ft=0;ft<this.size;ft++)if(!1===G(this._value,ft,this))return ft+1;return ft},et.prototype.__iterator=function(G,Se){var ft=this,Ft=0;return new At(function(){return Ft<ft.size?Qe(G,Ft++,ft._value):{value:void 0,done:!0}})},et.prototype.equals=function(G){return G instanceof et?Tt(this._value,G._value):yn(G)},s(hn,Ln),hn.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(1!==this._step?" by "+this._step:"")+" ]"},hn.prototype.get=function(G,Se){return this.has(G)?this._start+Me(this,G)*this._step:Se},hn.prototype.includes=function(G){var Se=(G-this._start)/this._step;return Se>=0&&Se<this.size&&Se===Math.floor(Se)},hn.prototype.slice=function(G,Se){return be(G,Se,this.size)?this:(G=ue(G,this.size),(Se=He(Se,this.size))<=G?new hn(0,0):new hn(this.get(G,this._end),this.get(Se,this._end),this._step))},hn.prototype.indexOf=function(G){var Se=G-this._start;if(Se%this._step==0){var ft=Se/this._step;if(ft>=0&&ft<this.size)return ft}return-1},hn.prototype.lastIndexOf=function(G){return this.indexOf(G)},hn.prototype.__iterate=function(G,Se){for(var ft=this.size-1,Ft=this._step,Bt=Se?this._start+ft*Ft:this._start,In=0;In<=ft;In++){if(!1===G(Bt,In,this))return In+1;Bt+=Se?-Ft:Ft}return In},hn.prototype.__iterator=function(G,Se){var ft=this.size-1,Ft=this._step,Bt=Se?this._start+ft*Ft:this._start,In=0;return new At(function(){var Xn=Bt;return Bt+=Se?-Ft:Ft,In>ft?{value:void 0,done:!0}:Qe(G,In++,Xn)})},hn.prototype.equals=function(G){return G instanceof hn?this._start===G._start&&this._end===G._end&&this._step===G._step:yn(this,G)},s(Qn,a),s(Ir,Qn),s(ht,Qn),s(L,Qn),Qn.Keyed=Ir,Qn.Indexed=ht,Qn.Set=L;var Ue="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(G,Se){var ft=65535&(G|=0),Ft=65535&(Se|=0);return ft*Ft+((G>>>16)*Ft+ft*(Se>>>16)<<16>>>0)|0};function nt(G){return G>>>1&1073741824|3221225471&G}function at(G){if(!1===G||null==G||"function"==typeof G.valueOf&&(!1===(G=G.valueOf())||null==G))return 0;if(!0===G)return 1;var Se=typeof G;if("number"===Se){if(G!=G||G===1/0)return 0;var ft=0|G;for(ft!==G&&(ft^=4294967295*G);G>4294967295;)ft^=G/=4294967295;return nt(ft)}if("string"===Se)return G.length>_r?function(G){var Se=Jn[G];return void 0===Se&&(Se=Pt(G),br===Nr&&(br=0,Jn={}),br++,Jn[G]=Se),Se}(G):Pt(G);if("function"==typeof G.hashCode)return G.hashCode();if("object"===Se)return function(G){var Se;if(Bn&&void 0!==(Se=An.get(G))||void 0!==(Se=G[mr])||!Nn&&(void 0!==(Se=G.propertyIsEnumerable&&G.propertyIsEnumerable[mr])||void 0!==(Se=function(G){if(G&&G.nodeType>0)switch(G.nodeType){case 1:return G.uniqueID;case 9:return G.documentElement&&G.documentElement.uniqueID}}(G))))return Se;if(Se=++ir,1073741824&ir&&(ir=0),Bn)An.set(G,Se);else{if(void 0!==ot&&!1===ot(G))throw new Error("Non-extensible objects are not allowed as keys.");if(Nn)Object.defineProperty(G,mr,{enumerable:!1,configurable:!1,writable:!1,value:Se});else if(void 0!==G.propertyIsEnumerable&&G.propertyIsEnumerable===G.constructor.prototype.propertyIsEnumerable)G.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},G.propertyIsEnumerable[mr]=Se;else{if(void 0===G.nodeType)throw new Error("Unable to set a non-enumerable property on object.");G[mr]=Se}}return Se}(G);if("function"==typeof G.toString)return Pt(G.toString());throw new Error("Value type "+Se+" cannot be hashed.")}function Pt(G){for(var Se=0,ft=0;ft<G.length;ft++)Se=31*Se+G.charCodeAt(ft)|0;return nt(Se)}var An,ot=Object.isExtensible,Nn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(G){return!1}}(),Bn="function"==typeof WeakMap;Bn&&(An=new WeakMap);var ir=0,mr="__immutablehash__";"function"==typeof Symbol&&(mr=Symbol(mr));var _r=16,Nr=255,br=0,Jn={};function nr(G){jt(G!==1/0,"Cannot perform this action with an infinite size.")}function Mr(G){return null==G?rt():yi(G)&&!D(G)?G:rt().withMutations(function(Se){var ft=l(G);nr(ft.size),ft.forEach(function(Ft,Bt){return Se.set(Bt,Ft)})})}function yi(G){return!(!G||!G[Mi])}s(Mr,Ir),Mr.of=function(){var G=e.call(arguments,0);return rt().withMutations(function(Se){for(var ft=0;ft<G.length;ft+=2){if(ft+1>=G.length)throw new Error("Missing value for key: "+G[ft]);Se.set(G[ft],G[ft+1])}})},Mr.prototype.toString=function(){return this.__toString("Map {","}")},Mr.prototype.get=function(G,Se){return this._root?this._root.get(0,void 0,G,Se):Se},Mr.prototype.set=function(G,Se){return bt(this,G,Se)},Mr.prototype.setIn=function(G,Se){return this.updateIn(G,Y,function(){return Se})},Mr.prototype.remove=function(G){return bt(this,G,Y)},Mr.prototype.deleteIn=function(G){return this.updateIn(G,function(){return Y})},Mr.prototype.update=function(G,Se,ft){return 1===arguments.length?G(this):this.updateIn([G],Se,ft)},Mr.prototype.updateIn=function(G,Se,ft){ft||(ft=Se,Se=void 0);var Ft=fi(this,ss(G),Se,ft);return Ft===Y?void 0:Ft},Mr.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):rt()},Mr.prototype.merge=function(){return ai(this,void 0,arguments)},Mr.prototype.mergeWith=function(G){return ai(this,G,e.call(arguments,1))},Mr.prototype.mergeIn=function(G){var Se=e.call(arguments,1);return this.updateIn(G,rt(),function(ft){return"function"==typeof ft.merge?ft.merge.apply(ft,Se):Se[Se.length-1]})},Mr.prototype.mergeDeep=function(){return ai(this,Dr,arguments)},Mr.prototype.mergeDeepWith=function(G){var Se=e.call(arguments,1);return ai(this,Qr(G),Se)},Mr.prototype.mergeDeepIn=function(G){var Se=e.call(arguments,1);return this.updateIn(G,rt(),function(ft){return"function"==typeof ft.mergeDeep?ft.mergeDeep.apply(ft,Se):Se[Se.length-1]})},Mr.prototype.sort=function(G){return $r(pt(this,G))},Mr.prototype.sortBy=function(G,Se){return $r(pt(this,Se,G))},Mr.prototype.withMutations=function(G){var Se=this.asMutable();return G(Se),Se.wasAltered()?Se.__ensureOwner(this.__ownerID):this},Mr.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new he)},Mr.prototype.asImmutable=function(){return this.__ensureOwner()},Mr.prototype.wasAltered=function(){return this.__altered},Mr.prototype.__iterator=function(G,Se){return new Ke(this,G,Se)},Mr.prototype.__iterate=function(G,Se){var ft=this,Ft=0;return this._root&&this._root.iterate(function(Bt){return Ft++,G(Bt[1],Bt[0],ft)},Se),Ft},Mr.prototype.__ensureOwner=function(G){return G===this.__ownerID?this:G?Ct(this.size,this._root,G,this.__hash):(this.__ownerID=G,this.__altered=!1,this)},Mr.isMap=yi;var Ii,Mi="@@__IMMUTABLE_MAP__@@",Oi=Mr.prototype;function Kr(G,Se){this.ownerID=G,this.entries=Se}function ei(G,Se,ft){this.ownerID=G,this.bitmap=Se,this.nodes=ft}function di(G,Se,ft){this.ownerID=G,this.count=Se,this.nodes=ft}function se(G,Se,ft){this.ownerID=G,this.keyHash=Se,this.entries=ft}function ct(G,Se,ft){this.ownerID=G,this.keyHash=Se,this.entry=ft}function Ke(G,Se,ft){this._type=Se,this._reverse=ft,this._stack=G._root&&Vt(G._root)}function Xe(G,Se){return Qe(G,Se[0],Se[1])}function Vt(G,Se){return{node:G,index:0,__prev:Se}}function Ct(G,Se,ft,Ft){var Bt=Object.create(Oi);return Bt.size=G,Bt._root=Se,Bt.__ownerID=ft,Bt.__hash=Ft,Bt.__altered=!1,Bt}function rt(){return Ii||(Ii=Ct(0))}function bt(G,Se,ft){var Ft,Bt;if(G._root){var In=fe(ie),Xn=fe(oe);if(Ft=We(G._root,G.__ownerID,0,void 0,Se,ft,In,Xn),!Xn.value)return G;Bt=G.size+(In.value?ft===Y?-1:1:0)}else{if(ft===Y)return G;Bt=1,Ft=new Kr(G.__ownerID,[[Se,ft]])}return G.__ownerID?(G.size=Bt,G._root=Ft,G.__hash=void 0,G.__altered=!0,G):Ft?Ct(Bt,Ft):rt()}function We(G,Se,ft,Ft,Bt,In,Xn,Sr){return G?G.update(Se,ft,Ft,Bt,In,Xn,Sr):In===Y?G:(ne(Sr),ne(Xn),new ct(Se,Ft,[Bt,In]))}function $t(G){return G.constructor===ct||G.constructor===se}function or(G,Se,ft,Ft,Bt){if(G.keyHash===Ft)return new se(Se,Ft,[G.entry,Bt]);var In,Xn=(0===ft?G.keyHash:G.keyHash>>>ft)&J,Sr=(0===ft?Ft:Ft>>>ft)&J;return new ei(Se,1<<Xn|1<<Sr,Xn===Sr?[or(G,Se,ft+5,Ft,Bt)]:(In=new ct(Se,Ft,Bt),Xn<Sr?[G,In]:[In,G]))}function ai(G,Se,ft){for(var Ft=[],Bt=0;Bt<ft.length;Bt++){var In=ft[Bt],Xn=l(In);_(In)||(Xn=Xn.map(function(Sr){return jn(Sr)})),Ft.push(Xn)}return rn(G,Se,Ft)}function Dr(G,Se,ft){return G&&G.mergeDeep&&_(Se)?G.mergeDeep(Se):Tt(G,Se)?G:Se}function Qr(G){return function(Se,ft,Ft){if(Se&&Se.mergeDeepWith&&_(ft))return Se.mergeDeepWith(G,ft);var Bt=G(Se,ft,Ft);return Tt(Se,Bt)?Se:Bt}}function rn(G,Se,ft){return 0===(ft=ft.filter(function(Ft){return 0!==Ft.size})).length?G:0!==G.size||G.__ownerID||1!==ft.length?G.withMutations(function(Ft){for(var Bt=Se?function(Xn,Sr){Ft.update(Sr,Y,function(pi){return pi===Y?Xn:Se(pi,Xn,Sr)})}:function(Xn,Sr){Ft.set(Sr,Xn)},In=0;In<ft.length;In++)ft[In].forEach(Bt)}):G.constructor(ft[0])}function fi(G,Se,ft,Ft){var Bt=G===Y,In=Se.next();if(In.done){var Xn=Bt?ft:G,Sr=Ft(Xn);return Sr===Xn?G:Sr}jt(Bt||G&&G.set,"invalid keyPath");var pi=In.value,Fr=Bt?Y:G.get(pi,Y),zr=fi(Fr,Se,ft,Ft);return zr===Fr?G:zr===Y?G.remove(pi):(Bt?rt():G).set(pi,zr)}function Ei(G){return G=(G=(858993459&(G-=G>>1&1431655765))+(G>>2&858993459))+(G>>4)&252645135,127&(G+=G>>8)+(G>>16)}function wi(G,Se,ft,Ft){var Bt=Ft?G:ce(G);return Bt[Se]=ft,Bt}Oi[Mi]=!0,Oi[U]=Oi.remove,Oi.removeIn=Oi.deleteIn,Kr.prototype.get=function(G,Se,ft,Ft){for(var Bt=this.entries,In=0,Xn=Bt.length;In<Xn;In++)if(Tt(ft,Bt[In][0]))return Bt[In][1];return Ft},Kr.prototype.update=function(G,Se,ft,Ft,Bt,In,Xn){for(var Sr=Bt===Y,pi=this.entries,Fr=0,zr=pi.length;Fr<zr&&!Tt(Ft,pi[Fr][0]);Fr++);var Un=Fr<zr;if(Un?pi[Fr][1]===Bt:Sr)return this;if(ne(Xn),(Sr||!Un)&&ne(In),!Sr||1!==pi.length){if(!Un&&!Sr&&pi.length>=no)return function(G,Se,ft,Ft){G||(G=new he);for(var Bt=new ct(G,at(ft),[ft,Ft]),In=0;In<Se.length;In++){var Xn=Se[In];Bt=Bt.update(G,0,void 0,Xn[0],Xn[1])}return Bt}(G,pi,Ft,Bt);var lr=G&&G===this.ownerID,dr=lr?pi:ce(pi);return Un?Sr?Fr===zr-1?dr.pop():dr[Fr]=dr.pop():dr[Fr]=[Ft,Bt]:dr.push([Ft,Bt]),lr?(this.entries=dr,this):new Kr(G,dr)}},ei.prototype.get=function(G,Se,ft,Ft){void 0===Se&&(Se=at(ft));var Bt=1<<((0===G?Se:Se>>>G)&J),In=this.bitmap;return 0==(In&Bt)?Ft:this.nodes[Ei(In&Bt-1)].get(G+5,Se,ft,Ft)},ei.prototype.update=function(G,Se,ft,Ft,Bt,In,Xn){void 0===ft&&(ft=at(Ft));var Sr=(0===Se?ft:ft>>>Se)&J,pi=1<<Sr,Fr=this.bitmap,zr=0!=(Fr&pi);if(!zr&&Bt===Y)return this;var Un=Ei(Fr&pi-1),lr=this.nodes,dr=zr?lr[Un]:void 0,li=We(dr,G,Se+5,ft,Ft,Bt,In,Xn);if(li===dr)return this;if(!zr&&li&&lr.length>=Ji)return function(G,Se,ft,Ft,Bt){for(var In=0,Xn=new Array(I),Sr=0;0!==ft;Sr++,ft>>>=1)Xn[Sr]=1&ft?Se[In++]:void 0;return Xn[Ft]=Bt,new di(G,In+1,Xn)}(G,lr,Fr,Sr,li);if(zr&&!li&&2===lr.length&&$t(lr[1^Un]))return lr[1^Un];if(zr&&li&&1===lr.length&&$t(li))return li;var Ti=G&&G===this.ownerID,Ao=zr?li?Fr:Fr^pi:Fr|pi,Qo=zr?li?wi(lr,Un,li,Ti):function(G,Se,ft){var Ft=G.length-1;if(ft&&Se===Ft)return G.pop(),G;for(var Bt=new Array(Ft),In=0,Xn=0;Xn<Ft;Xn++)Xn===Se&&(In=1),Bt[Xn]=G[Xn+In];return Bt}(lr,Un,Ti):function(G,Se,ft,Ft){var Bt=G.length+1;if(Ft&&Se+1===Bt)return G[Se]=ft,G;for(var In=new Array(Bt),Xn=0,Sr=0;Sr<Bt;Sr++)Sr===Se?(In[Sr]=ft,Xn=-1):In[Sr]=G[Sr+Xn];return In}(lr,Un,li,Ti);return Ti?(this.bitmap=Ao,this.nodes=Qo,this):new ei(G,Ao,Qo)},di.prototype.get=function(G,Se,ft,Ft){void 0===Se&&(Se=at(ft));var In=this.nodes[(0===G?Se:Se>>>G)&J];return In?In.get(G+5,Se,ft,Ft):Ft},di.prototype.update=function(G,Se,ft,Ft,Bt,In,Xn){void 0===ft&&(ft=at(Ft));var Sr=(0===Se?ft:ft>>>Se)&J,Fr=this.nodes,zr=Fr[Sr];if(Bt===Y&&!zr)return this;var Un=We(zr,G,Se+5,ft,Ft,Bt,In,Xn);if(Un===zr)return this;var lr=this.count;if(zr){if(!Un&&--lr<qi)return function(G,Se,ft,Ft){for(var Bt=0,In=0,Xn=new Array(ft),Sr=0,pi=1,Fr=Se.length;Sr<Fr;Sr++,pi<<=1){var zr=Se[Sr];void 0!==zr&&Sr!==Ft&&(Bt|=pi,Xn[In++]=zr)}return new ei(G,Bt,Xn)}(G,Fr,lr,Sr)}else lr++;var dr=G&&G===this.ownerID,li=wi(Fr,Sr,Un,dr);return dr?(this.count=lr,this.nodes=li,this):new di(G,lr,li)},se.prototype.get=function(G,Se,ft,Ft){for(var Bt=this.entries,In=0,Xn=Bt.length;In<Xn;In++)if(Tt(ft,Bt[In][0]))return Bt[In][1];return Ft},se.prototype.update=function(G,Se,ft,Ft,Bt,In,Xn){void 0===ft&&(ft=at(Ft));var Sr=Bt===Y;if(ft!==this.keyHash)return Sr?this:(ne(Xn),ne(In),or(this,G,Se,ft,[Ft,Bt]));for(var pi=this.entries,Fr=0,zr=pi.length;Fr<zr&&!Tt(Ft,pi[Fr][0]);Fr++);var Un=Fr<zr;if(Un?pi[Fr][1]===Bt:Sr)return this;if(ne(Xn),(Sr||!Un)&&ne(In),Sr&&2===zr)return new ct(G,this.keyHash,pi[1^Fr]);var lr=G&&G===this.ownerID,dr=lr?pi:ce(pi);return Un?Sr?Fr===zr-1?dr.pop():dr[Fr]=dr.pop():dr[Fr]=[Ft,Bt]:dr.push([Ft,Bt]),lr?(this.entries=dr,this):new se(G,this.keyHash,dr)},ct.prototype.get=function(G,Se,ft,Ft){return Tt(ft,this.entry[0])?this.entry[1]:Ft},ct.prototype.update=function(G,Se,ft,Ft,Bt,In,Xn){var Sr=Bt===Y,pi=Tt(Ft,this.entry[0]);return(pi?Bt===this.entry[1]:Sr)?this:(ne(Xn),Sr?void ne(In):pi?G&&G===this.ownerID?(this.entry[1]=Bt,this):new ct(G,this.keyHash,[Ft,Bt]):(ne(In),or(this,G,Se,at(Ft),[Ft,Bt])))},Kr.prototype.iterate=se.prototype.iterate=function(G,Se){for(var ft=this.entries,Ft=0,Bt=ft.length-1;Ft<=Bt;Ft++)if(!1===G(ft[Se?Bt-Ft:Ft]))return!1},ei.prototype.iterate=di.prototype.iterate=function(G,Se){for(var ft=this.nodes,Ft=0,Bt=ft.length-1;Ft<=Bt;Ft++){var In=ft[Se?Bt-Ft:Ft];if(In&&!1===In.iterate(G,Se))return!1}},ct.prototype.iterate=function(G,Se){return G(this.entry)},s(Ke,At),Ke.prototype.next=function(){for(var G=this._type,Se=this._stack;Se;){var ft,Ft=Se.node,Bt=Se.index++;if(Ft.entry){if(0===Bt)return Xe(G,Ft.entry)}else if(Ft.entries){if(Bt<=(ft=Ft.entries.length-1))return Xe(G,Ft.entries[this._reverse?ft-Bt:Bt])}else if(Bt<=(ft=Ft.nodes.length-1)){var In=Ft.nodes[this._reverse?ft-Bt:Bt];if(In){if(In.entry)return Xe(G,In.entry);Se=this._stack=Vt(In,Se)}continue}Se=this._stack=this._stack.__prev}return{value:void 0,done:!0}};var no=8,Ji=16,qi=8;function to(G){var Se=oa();if(null==G)return Se;if(zi(G))return G;var ft=u(G),Ft=ft.size;return 0===Ft?Se:(nr(Ft),Ft>0&&Ft<I?zo(0,Ft,5,null,new Bo(ft.toArray())):Se.withMutations(function(Bt){Bt.setSize(Ft),ft.forEach(function(In,Xn){return Bt.set(Xn,In)})}))}function zi(G){return!(!G||!G[Go])}s(to,ht),to.of=function(){return this(arguments)},to.prototype.toString=function(){return this.__toString("List [","]")},to.prototype.get=function(G,Se){if((G=Me(this,G))>=0&&G<this.size){var ft=ee(this,G+=this._origin);return ft&&ft.array[G&J]}return Se},to.prototype.set=function(G,Se){return function(G,Se,ft){if((Se=Me(G,Se))!=Se)return G;if(Se>=G.size||Se<0)return G.withMutations(function(Xn){Se<0?Ve(Xn,Se).set(0,ft):Ve(Xn,0,Se+1).set(Se,ft)});Se+=G._origin;var Ft=G._tail,Bt=G._root,In=fe(oe);return Se>=Tn(G._capacity)?Ft=st(Ft,G.__ownerID,0,Se,ft,In):Bt=st(Bt,G.__ownerID,G._level,Se,ft,In),In.value?G.__ownerID?(G._root=Bt,G._tail=Ft,G.__hash=void 0,G.__altered=!0,G):zo(G._origin,G._capacity,G._level,Bt,Ft):G}(this,G,Se)},to.prototype.remove=function(G){return this.has(G)?0===G?this.shift():G===this.size-1?this.pop():this.splice(G,1):this},to.prototype.insert=function(G,Se){return this.splice(G,0,Se)},to.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):oa()},to.prototype.push=function(){var G=arguments,Se=this.size;return this.withMutations(function(ft){Ve(ft,0,Se+G.length);for(var Ft=0;Ft<G.length;Ft++)ft.set(Se+Ft,G[Ft])})},to.prototype.pop=function(){return Ve(this,0,-1)},to.prototype.unshift=function(){var G=arguments;return this.withMutations(function(Se){Ve(Se,-G.length);for(var ft=0;ft<G.length;ft++)Se.set(ft,G[ft])})},to.prototype.shift=function(){return Ve(this,1)},to.prototype.merge=function(){return fn(this,void 0,arguments)},to.prototype.mergeWith=function(G){return fn(this,G,e.call(arguments,1))},to.prototype.mergeDeep=function(){return fn(this,Dr,arguments)},to.prototype.mergeDeepWith=function(G){var Se=e.call(arguments,1);return fn(this,Qr(G),Se)},to.prototype.setSize=function(G){return Ve(this,0,G)},to.prototype.slice=function(G,Se){var ft=this.size;return be(G,Se,ft)?this:Ve(this,ue(G,ft),He(Se,ft))},to.prototype.__iterator=function(G,Se){var ft=0,Ft=ds(this,Se);return new At(function(){var Bt=Ft();return Bt===ua?{value:void 0,done:!0}:Qe(G,ft++,Bt)})},to.prototype.__iterate=function(G,Se){for(var ft,Ft=0,Bt=ds(this,Se);(ft=Bt())!==ua&&!1!==G(ft,Ft++,this););return Ft},to.prototype.__ensureOwner=function(G){return G===this.__ownerID?this:G?zo(this._origin,this._capacity,this._level,this._root,this._tail,G,this.__hash):(this.__ownerID=G,this)},to.isList=zi;var Go="@@__IMMUTABLE_LIST__@@",Ro=to.prototype;function Bo(G,Se){this.array=G,this.ownerID=Se}Ro[Go]=!0,Ro[U]=Ro.remove,Ro.setIn=Oi.setIn,Ro.deleteIn=Ro.removeIn=Oi.removeIn,Ro.update=Oi.update,Ro.updateIn=Oi.updateIn,Ro.mergeIn=Oi.mergeIn,Ro.mergeDeepIn=Oi.mergeDeepIn,Ro.withMutations=Oi.withMutations,Ro.asMutable=Oi.asMutable,Ro.asImmutable=Oi.asImmutable,Ro.wasAltered=Oi.wasAltered,Bo.prototype.removeBefore=function(G,Se,ft){if(ft===Se?1<<Se:0===this.array.length)return this;var Ft=ft>>>Se&J;if(Ft>=this.array.length)return new Bo([],G);var Bt,In=0===Ft;if(Se>0){var Xn=this.array[Ft];if((Bt=Xn&&Xn.removeBefore(G,Se-5,ft))===Xn&&In)return this}if(In&&!Bt)return this;var Sr=pn(this,G);if(!In)for(var pi=0;pi<Ft;pi++)Sr.array[pi]=void 0;return Bt&&(Sr.array[Ft]=Bt),Sr},Bo.prototype.removeAfter=function(G,Se,ft){if(ft===(Se?1<<Se:0)||0===this.array.length)return this;var Ft,Bt=ft-1>>>Se&J;if(Bt>=this.array.length)return this;if(Se>0){var In=this.array[Bt];if((Ft=In&&In.removeAfter(G,Se-5,ft))===In&&Bt===this.array.length-1)return this}var Xn=pn(this,G);return Xn.array.splice(Bt+1),Ft&&(Xn.array[Bt]=Ft),Xn};var Jo,es,ua={};function ds(G,Se){var ft=G._origin,Ft=G._capacity,Bt=Tn(Ft),In=G._tail;return function Xn(Fr,zr,Un){return 0===zr?function(Fr,zr){var Un=zr===Bt?In&&In.array:Fr&&Fr.array,lr=zr>ft?0:ft-zr,dr=Ft-zr;return dr>I&&(dr=I),function(){if(lr===dr)return ua;var li=Se?--dr:lr++;return Un&&Un[li]}}(Fr,Un):function(Fr,zr,Un){var lr,dr=Fr&&Fr.array,li=Un>ft?0:ft-Un>>zr,Ti=1+(Ft-Un>>zr);return Ti>I&&(Ti=I),function(){for(;;){if(lr){var Ao=lr();if(Ao!==ua)return Ao;lr=null}if(li===Ti)return ua;var Qo=Se?--Ti:li++;lr=Xn(dr&&dr[Qo],zr-5,Un+(Qo<<zr))}}}(Fr,zr,Un)}(G._root,G._level,0)}function zo(G,Se,ft,Ft,Bt,In,Xn){var Sr=Object.create(Ro);return Sr.size=Se-G,Sr._origin=G,Sr._capacity=Se,Sr._level=ft,Sr._root=Ft,Sr._tail=Bt,Sr.__ownerID=In,Sr.__hash=Xn,Sr.__altered=!1,Sr}function oa(){return Jo||(Jo=zo(0,0,5))}function st(G,Se,ft,Ft,Bt,In){var Xn,Sr=Ft>>>ft&J,pi=G&&Sr<G.array.length;if(!pi&&void 0===Bt)return G;if(ft>0){var Fr=G&&G.array[Sr],zr=st(Fr,Se,ft-5,Ft,Bt,In);return zr===Fr?G:((Xn=pn(G,Se)).array[Sr]=zr,Xn)}return pi&&G.array[Sr]===Bt?G:(ne(In),Xn=pn(G,Se),void 0===Bt&&Sr===Xn.array.length-1?Xn.array.pop():Xn.array[Sr]=Bt,Xn)}function pn(G,Se){return Se&&G&&Se===G.ownerID?G:new Bo(G?G.array.slice():[],Se)}function ee(G,Se){if(Se>=Tn(G._capacity))return G._tail;if(Se<1<<G._level+5){for(var ft=G._root,Ft=G._level;ft&&Ft>0;)ft=ft.array[Se>>>Ft&J],Ft-=5;return ft}}function Ve(G,Se,ft){void 0!==Se&&(Se|=0),void 0!==ft&&(ft|=0);var Ft=G.__ownerID||new he,Bt=G._origin,In=G._capacity,Xn=Bt+Se,Sr=void 0===ft?In:ft<0?In+ft:Bt+ft;if(Xn===Bt&&Sr===In)return G;if(Xn>=Sr)return G.clear();for(var pi=G._level,Fr=G._root,zr=0;Xn+zr<0;)Fr=new Bo(Fr&&Fr.array.length?[void 0,Fr]:[],Ft),zr+=1<<(pi+=5);zr&&(Xn+=zr,Bt+=zr,Sr+=zr,In+=zr);for(var Un=Tn(In),lr=Tn(Sr);lr>=1<<pi+5;)Fr=new Bo(Fr&&Fr.array.length?[Fr]:[],Ft),pi+=5;var dr=G._tail,li=lr<Un?ee(G,Sr-1):lr>Un?new Bo([],Ft):dr;if(dr&&lr>Un&&Xn<In&&dr.array.length){for(var Ti=Fr=pn(Fr,Ft),Ao=pi;Ao>5;Ao-=5){var Qo=Un>>>Ao&J;Ti=Ti.array[Qo]=pn(Ti.array[Qo],Ft)}Ti.array[Un>>>5&J]=dr}if(Sr<In&&(li=li&&li.removeAfter(Ft,0,Sr)),Xn>=lr)Xn-=lr,Sr-=lr,pi=5,Fr=null,li=li&&li.removeBefore(Ft,0,Xn);else if(Xn>Bt||lr<Un){for(zr=0;Fr;){var jo=Xn>>>pi&J;if(jo!==lr>>>pi&J)break;jo&&(zr+=(1<<pi)*jo),pi-=5,Fr=Fr.array[jo]}Fr&&Xn>Bt&&(Fr=Fr.removeBefore(Ft,pi,Xn-zr)),Fr&&lr<Un&&(Fr=Fr.removeAfter(Ft,pi,lr-zr)),zr&&(Xn-=zr,Sr-=zr)}return G.__ownerID?(G.size=Sr-Xn,G._origin=Xn,G._capacity=Sr,G._level=pi,G._root=Fr,G._tail=li,G.__hash=void 0,G.__altered=!0,G):zo(Xn,Sr,pi,Fr,li)}function fn(G,Se,ft){for(var Ft=[],Bt=0,In=0;In<ft.length;In++){var Xn=ft[In],Sr=u(Xn);Sr.size>Bt&&(Bt=Sr.size),_(Xn)||(Sr=Sr.map(function(pi){return jn(pi)})),Ft.push(Sr)}return Bt>G.size&&(G=G.setSize(Bt)),rn(G,Se,Ft)}function Tn(G){return G<I?0:G-1>>>5<<5}function $r(G){return null==G?Do():ni(G)?G:Do().withMutations(function(Se){var ft=l(G);nr(ft.size),ft.forEach(function(Ft,Bt){return Se.set(Bt,Ft)})})}function ni(G){return yi(G)&&D(G)}function Ri(G,Se,ft,Ft){var Bt=Object.create($r.prototype);return Bt.size=G?G.size:0,Bt._map=G,Bt._list=Se,Bt.__ownerID=ft,Bt.__hash=Ft,Bt}function Do(){return es||(es=Ri(rt(),oa()))}function gi(G,Se,ft){var Ft,Bt,In=G._map,Xn=G._list,Sr=In.get(Se),pi=void 0!==Sr;if(ft===Y){if(!pi)return G;Xn.size>=I&&Xn.size>=2*In.size?(Ft=(Bt=Xn.filter(function(Fr,zr){return void 0!==Fr&&Sr!==zr})).toKeyedSeq().map(function(Fr){return Fr[0]}).flip().toMap(),G.__ownerID&&(Ft.__ownerID=Bt.__ownerID=G.__ownerID)):(Ft=In.remove(Se),Bt=Sr===Xn.size-1?Xn.pop():Xn.set(Sr,void 0))}else if(pi){if(ft===Xn.get(Sr)[1])return G;Ft=In,Bt=Xn.set(Sr,[Se,ft])}else Ft=In.set(Se,Xn.size),Bt=Xn.set(Xn.size,[Se,ft]);return G.__ownerID?(G.size=Ft.size,G._map=Ft,G._list=Bt,G.__hash=void 0,G):Ri(Ft,Bt)}function Hi(G,Se){this._iter=G,this._useKeys=Se,this.size=G.size}function Li(G){this._iter=G,this.size=G.size}function cs(G){this._iter=G,this.size=G.size}function Os(G){this._iter=G,this.size=G.size}function da(G){var Se=Ni(G);return Se._iter=G,Se.size=G.size,Se.flip=function(){return G},Se.reverse=function(){var ft=G.reverse.apply(this);return ft.flip=function(){return G.reverse()},ft},Se.has=function(ft){return G.includes(ft)},Se.includes=function(ft){return G.has(ft)},Se.cacheResult=Yo,Se.__iterateUncached=function(ft,Ft){var Bt=this;return G.__iterate(function(In,Xn){return!1!==ft(Xn,In,Bt)},Ft)},Se.__iteratorUncached=function(ft,Ft){if(2===ft){var Bt=G.__iterator(ft,Ft);return new At(function(){var In=Bt.next();if(!In.done){var Xn=In.value[0];In.value[0]=In.value[1],In.value[1]=Xn}return In})}return G.__iterator(1===ft?0:1,Ft)},Se}function xa(G,Se,ft){var Ft=Ni(G);return Ft.size=G.size,Ft.has=function(Bt){return G.has(Bt)},Ft.get=function(Bt,In){var Xn=G.get(Bt,Y);return Xn===Y?In:Se.call(ft,Xn,Bt,G)},Ft.__iterateUncached=function(Bt,In){var Xn=this;return G.__iterate(function(Sr,pi,Fr){return!1!==Bt(Se.call(ft,Sr,pi,Fr),pi,Xn)},In)},Ft.__iteratorUncached=function(Bt,In){var Xn=G.__iterator(2,In);return new At(function(){var Sr=Xn.next();if(Sr.done)return Sr;var pi=Sr.value,Fr=pi[0];return Qe(Bt,Fr,Se.call(ft,pi[1],Fr,G),Sr)})},Ft}function Ra(G,Se){var ft=Ni(G);return ft._iter=G,ft.size=G.size,ft.reverse=function(){return G},G.flip&&(ft.flip=function(){var Ft=da(G);return Ft.reverse=function(){return G.flip()},Ft}),ft.get=function(Ft,Bt){return G.get(Se?Ft:-1-Ft,Bt)},ft.has=function(Ft){return G.has(Se?Ft:-1-Ft)},ft.includes=function(Ft){return G.includes(Ft)},ft.cacheResult=Yo,ft.__iterate=function(Ft,Bt){var In=this;return G.__iterate(function(Xn,Sr){return Ft(Xn,Sr,In)},!Bt)},ft.__iterator=function(Ft,Bt){return G.__iterator(Ft,!Bt)},ft}function Ml(G,Se,ft,Ft){var Bt=Ni(G);return Ft&&(Bt.has=function(In){var Xn=G.get(In,Y);return Xn!==Y&&!!Se.call(ft,Xn,In,G)},Bt.get=function(In,Xn){var Sr=G.get(In,Y);return Sr!==Y&&Se.call(ft,Sr,In,G)?Sr:Xn}),Bt.__iterateUncached=function(In,Xn){var Sr=this,pi=0;return G.__iterate(function(Fr,zr,Un){if(Se.call(ft,Fr,zr,Un))return pi++,In(Fr,Ft?zr:pi-1,Sr)},Xn),pi},Bt.__iteratorUncached=function(In,Xn){var Sr=G.__iterator(2,Xn),pi=0;return new At(function(){for(;;){var Fr=Sr.next();if(Fr.done)return Fr;var zr=Fr.value,Un=zr[0],lr=zr[1];if(Se.call(ft,lr,Un,G))return Qe(In,Ft?Un:pi++,lr,Fr)}})},Bt}function sa(G,Se,ft,Ft){var Bt=G.size;if(void 0!==Se&&(Se|=0),void 0!==ft&&(ft===1/0?ft=Bt:ft|=0),be(Se,ft,Bt))return G;var In=ue(Se,Bt),Xn=He(ft,Bt);if(In!=In||Xn!=Xn)return sa(G.toSeq().cacheResult(),Se,ft,Ft);var Sr,pi=Xn-In;pi==pi&&(Sr=pi<0?0:pi);var Fr=Ni(G);return Fr.size=0===Sr?Sr:G.size&&Sr||void 0,!Ft&&Kn(G)&&Sr>=0&&(Fr.get=function(zr,Un){return(zr=Me(this,zr))>=0&&zr<Sr?G.get(zr+In,Un):Un}),Fr.__iterateUncached=function(zr,Un){var lr=this;if(0===Sr)return 0;if(Un)return this.cacheResult().__iterate(zr,Un);var dr=0,li=!0,Ti=0;return G.__iterate(function(Ao,Qo){if(!li||!(li=dr++<In))return Ti++,!1!==zr(Ao,Ft?Qo:Ti-1,lr)&&Ti!==Sr}),Ti},Fr.__iteratorUncached=function(zr,Un){if(0!==Sr&&Un)return this.cacheResult().__iterator(zr,Un);var lr=0!==Sr&&G.__iterator(zr,Un),dr=0,li=0;return new At(function(){for(;dr++<In;)lr.next();if(++li>Sr)return{value:void 0,done:!0};var Ti=lr.next();return Ft||1===zr?Ti:Qe(zr,li-1,0===zr?void 0:Ti.value[1],Ti)})},Fr}function Ka(G,Se,ft,Ft){var Bt=Ni(G);return Bt.__iterateUncached=function(In,Xn){var Sr=this;if(Xn)return this.cacheResult().__iterate(In,Xn);var pi=!0,Fr=0;return G.__iterate(function(zr,Un,lr){if(!pi||!(pi=Se.call(ft,zr,Un,lr)))return Fr++,In(zr,Ft?Un:Fr-1,Sr)}),Fr},Bt.__iteratorUncached=function(In,Xn){var Sr=this;if(Xn)return this.cacheResult().__iterator(In,Xn);var pi=G.__iterator(2,Xn),Fr=!0,zr=0;return new At(function(){var Un,lr,dr;do{if((Un=pi.next()).done)return Ft||1===In?Un:Qe(In,zr++,0===In?void 0:Un.value[1],Un);var li=Un.value;lr=li[0],dr=li[1],Fr&&(Fr=Se.call(ft,dr,lr,Sr))}while(Fr);return 2===In?Un:Qe(In,lr,dr,Un)})},Bt}function Sa(G,Se){var ft=m(G),Ft=[G].concat(Se).map(function(Xn){return _(Xn)?ft&&(Xn=l(Xn)):Xn=ft?Sn(Xn):$n(Array.isArray(Xn)?Xn:[Xn]),Xn}).filter(function(Xn){return 0!==Xn.size});if(0===Ft.length)return G;if(1===Ft.length){var Bt=Ft[0];if(Bt===G||ft&&m(Bt)||b(G)&&b(Bt))return Bt}var In=new Yn(Ft);return ft?In=In.toKeyedSeq():b(G)||(In=In.toSetSeq()),(In=In.flatten(!0)).size=Ft.reduce(function(Xn,Sr){if(void 0!==Xn){var pi=Sr.size;if(void 0!==pi)return Xn+pi}},0),In}function fa(G,Se,ft){var Ft=Ni(G);return Ft.__iterateUncached=function(Bt,In){var Xn=0,Sr=!1;return function pi(Fr,zr){var Un=this;Fr.__iterate(function(lr,dr){return(!Se||zr<Se)&&_(lr)?pi(lr,zr+1):!1===Bt(lr,ft?dr:Xn++,Un)&&(Sr=!0),!Sr},In)}(G,0),Xn},Ft.__iteratorUncached=function(Bt,In){var Xn=G.__iterator(Bt,In),Sr=[],pi=0;return new At(function(){for(;Xn;){var Fr=Xn.next();if(!1===Fr.done){var zr=Fr.value;if(2===Bt&&(zr=zr[1]),Se&&!(Sr.length<Se)||!_(zr))return ft?Fr:Qe(Bt,pi++,zr,Fr);Sr.push(Xn),Xn=zr.__iterator(Bt,In)}else Xn=Sr.pop()}return{value:void 0,done:!0}})},Ft}function pt(G,Se,ft){Se||(Se=ms);var Ft=m(G),Bt=0,In=G.toSeq().map(function(Xn,Sr){return[Sr,Xn,Bt++,ft?ft(Xn,Sr,G):Xn]}).toArray();return In.sort(function(Xn,Sr){return Se(Xn[3],Sr[3])||Xn[2]-Sr[2]}).forEach(Ft?function(Xn,Sr){In[Sr].length=2}:function(Xn,Sr){In[Sr]=Xn[1]}),Ft?ar(In):b(G)?Ln(In):Rn(In)}function an(G,Se,ft){if(Se||(Se=ms),ft){var Ft=G.toSeq().map(function(Bt,In){return[Bt,ft(Bt,In,G)]}).reduce(function(Bt,In){return Nt(Se,Bt[1],In[1])?In:Bt});return Ft&&Ft[0]}return G.reduce(function(Bt,In){return Nt(Se,Bt,In)?In:Bt})}function Nt(G,Se,ft){var Ft=G(ft,Se);return 0===Ft&&ft!==Se&&(null==ft||ft!=ft)||Ft>0}function Ce(G,Se,ft){var Ft=Ni(G);return Ft.size=new Yn(ft).map(function(Bt){return Bt.size}).min(),Ft.__iterate=function(Bt,In){for(var Xn,Sr=this.__iterator(1,In),pi=0;!(Xn=Sr.next()).done&&!1!==Bt(Xn.value,pi++,this););return pi},Ft.__iteratorUncached=function(Bt,In){var Xn=ft.map(function(Fr){return Fr=a(Fr),dt(In?Fr.reverse():Fr)}),Sr=0,pi=!1;return new At(function(){var Fr;return pi||(Fr=Xn.map(function(zr){return zr.next()}),pi=Fr.some(function(zr){return zr.done})),pi?{value:void 0,done:!0}:Qe(Bt,Sr++,Se.apply(null,Fr.map(function(zr){return zr.value})))})},Ft}function ye(G,Se){return Kn(G)?Se:G.constructor(Se)}function Ne(G){if(G!==Object(G))throw new TypeError("Expected [K, V] tuple: "+G)}function Wt(G){return nr(G.size),Ae(G)}function Or(G){return m(G)?l:b(G)?u:h}function Ni(G){return Object.create((m(G)?ar:b(G)?Ln:Rn).prototype)}function Yo(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):ln.prototype.cacheResult.call(this)}function ms(G,Se){return G>Se?1:G<Se?-1:0}function ss(G){var Se=dt(G);if(!Se){if(!zt(G))throw new TypeError("Expected iterable or array-like: "+G);Se=dt(a(G))}return Se}function Lo(G,Se){var ft,Ft=function(In){if(In instanceof Ft)return In;if(!(this instanceof Ft))return new Ft(In);if(!ft){ft=!0;var Xn=Object.keys(G);(function(G,Se){try{Se.forEach(va.bind(void 0,G))}catch(ft){}})(Bt,Xn),Bt.size=Xn.length,Bt._name=Se,Bt._keys=Xn,Bt._defaultValues=G}this._map=Mr(In)},Bt=Ft.prototype=Object.create(Zo);return Bt.constructor=Ft,Ft}s($r,Mr),$r.of=function(){return this(arguments)},$r.prototype.toString=function(){return this.__toString("OrderedMap {","}")},$r.prototype.get=function(G,Se){var ft=this._map.get(G);return void 0!==ft?this._list.get(ft)[1]:Se},$r.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Do()},$r.prototype.set=function(G,Se){return gi(this,G,Se)},$r.prototype.remove=function(G){return gi(this,G,Y)},$r.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},$r.prototype.__iterate=function(G,Se){var ft=this;return this._list.__iterate(function(Ft){return Ft&&G(Ft[1],Ft[0],ft)},Se)},$r.prototype.__iterator=function(G,Se){return this._list.fromEntrySeq().__iterator(G,Se)},$r.prototype.__ensureOwner=function(G){if(G===this.__ownerID)return this;var Se=this._map.__ensureOwner(G),ft=this._list.__ensureOwner(G);return G?Ri(Se,ft,G,this.__hash):(this.__ownerID=G,this._map=Se,this._list=ft,this)},$r.isOrderedMap=ni,$r.prototype[z]=!0,$r.prototype[U]=$r.prototype.remove,s(Hi,ar),Hi.prototype.get=function(G,Se){return this._iter.get(G,Se)},Hi.prototype.has=function(G){return this._iter.has(G)},Hi.prototype.valueSeq=function(){return this._iter.valueSeq()},Hi.prototype.reverse=function(){var G=this,Se=Ra(this,!0);return this._useKeys||(Se.valueSeq=function(){return G._iter.toSeq().reverse()}),Se},Hi.prototype.map=function(G,Se){var ft=this,Ft=xa(this,G,Se);return this._useKeys||(Ft.valueSeq=function(){return ft._iter.toSeq().map(G,Se)}),Ft},Hi.prototype.__iterate=function(G,Se){var ft,Ft=this;return this._iter.__iterate(this._useKeys?function(Bt,In){return G(Bt,In,Ft)}:(ft=Se?Wt(this):0,function(Bt){return G(Bt,Se?--ft:ft++,Ft)}),Se)},Hi.prototype.__iterator=function(G,Se){if(this._useKeys)return this._iter.__iterator(G,Se);var ft=this._iter.__iterator(1,Se),Ft=Se?Wt(this):0;return new At(function(){var Bt=ft.next();return Bt.done?Bt:Qe(G,Se?--Ft:Ft++,Bt.value,Bt)})},Hi.prototype[z]=!0,s(Li,Ln),Li.prototype.includes=function(G){return this._iter.includes(G)},Li.prototype.__iterate=function(G,Se){var ft=this,Ft=0;return this._iter.__iterate(function(Bt){return G(Bt,Ft++,ft)},Se)},Li.prototype.__iterator=function(G,Se){var ft=this._iter.__iterator(1,Se),Ft=0;return new At(function(){var Bt=ft.next();return Bt.done?Bt:Qe(G,Ft++,Bt.value,Bt)})},s(cs,Rn),cs.prototype.has=function(G){return this._iter.includes(G)},cs.prototype.__iterate=function(G,Se){var ft=this;return this._iter.__iterate(function(Ft){return G(Ft,Ft,ft)},Se)},cs.prototype.__iterator=function(G,Se){var ft=this._iter.__iterator(1,Se);return new At(function(){var Ft=ft.next();return Ft.done?Ft:Qe(G,Ft.value,Ft.value,Ft)})},s(Os,ar),Os.prototype.entrySeq=function(){return this._iter.toSeq()},Os.prototype.__iterate=function(G,Se){var ft=this;return this._iter.__iterate(function(Ft){if(Ft){Ne(Ft);var Bt=_(Ft);return G(Bt?Ft.get(1):Ft[1],Bt?Ft.get(0):Ft[0],ft)}},Se)},Os.prototype.__iterator=function(G,Se){var ft=this._iter.__iterator(1,Se);return new At(function(){for(;;){var Ft=ft.next();if(Ft.done)return Ft;var Bt=Ft.value;if(Bt){Ne(Bt);var In=_(Bt);return Qe(G,In?Bt.get(0):Bt[0],In?Bt.get(1):Bt[1],Ft)}}})},Li.prototype.cacheResult=Hi.prototype.cacheResult=cs.prototype.cacheResult=Os.prototype.cacheResult=Yo,s(Lo,Ir),Lo.prototype.toString=function(){return this.__toString(ul(this)+" {","}")},Lo.prototype.has=function(G){return this._defaultValues.hasOwnProperty(G)},Lo.prototype.get=function(G,Se){if(!this.has(G))return Se;var ft=this._defaultValues[G];return this._map?this._map.get(G,ft):ft},Lo.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var G=this.constructor;return G._empty||(G._empty=Ea(this,rt()))},Lo.prototype.set=function(G,Se){if(!this.has(G))throw new Error('Cannot set unknown key "'+G+'" on '+ul(this));if(this._map&&!this._map.has(G)&&Se===this._defaultValues[G])return this;var ft=this._map&&this._map.set(G,Se);return this.__ownerID||ft===this._map?this:Ea(this,ft)},Lo.prototype.remove=function(G){if(!this.has(G))return this;var Se=this._map&&this._map.remove(G);return this.__ownerID||Se===this._map?this:Ea(this,Se)},Lo.prototype.wasAltered=function(){return this._map.wasAltered()},Lo.prototype.__iterator=function(G,Se){var ft=this;return l(this._defaultValues).map(function(Ft,Bt){return ft.get(Bt)}).__iterator(G,Se)},Lo.prototype.__iterate=function(G,Se){var ft=this;return l(this._defaultValues).map(function(Ft,Bt){return ft.get(Bt)}).__iterate(G,Se)},Lo.prototype.__ensureOwner=function(G){if(G===this.__ownerID)return this;var Se=this._map&&this._map.__ensureOwner(G);return G?Ea(this,Se,G):(this.__ownerID=G,this._map=Se,this)};var Zo=Lo.prototype;function Ea(G,Se,ft){var Ft=Object.create(Object.getPrototypeOf(G));return Ft._map=Se,Ft.__ownerID=ft,Ft}function ul(G){return G._name||G.constructor.name||"Record"}function va(G,Se){Object.defineProperty(G,Se,{get:function(){return this.get(Se)},set:function(ft){jt(this.__ownerID,"Cannot set on an immutable record."),this.set(Se,ft)}})}function bs(G){return null==G?Bl():$o(G)&&!D(G)?G:Bl().withMutations(function(Se){var ft=h(G);nr(ft.size),ft.forEach(function(Ft){return Se.add(Ft)})})}function $o(G){return!(!G||!G[dl])}Zo[U]=Zo.remove,Zo.deleteIn=Zo.removeIn=Oi.removeIn,Zo.merge=Oi.merge,Zo.mergeWith=Oi.mergeWith,Zo.mergeIn=Oi.mergeIn,Zo.mergeDeep=Oi.mergeDeep,Zo.mergeDeepWith=Oi.mergeDeepWith,Zo.mergeDeepIn=Oi.mergeDeepIn,Zo.setIn=Oi.setIn,Zo.update=Oi.update,Zo.updateIn=Oi.updateIn,Zo.withMutations=Oi.withMutations,Zo.asMutable=Oi.asMutable,Zo.asImmutable=Oi.asImmutable,s(bs,L),bs.of=function(){return this(arguments)},bs.fromKeys=function(G){return this(l(G).keySeq())},bs.prototype.toString=function(){return this.__toString("Set {","}")},bs.prototype.has=function(G){return this._map.has(G)},bs.prototype.add=function(G){return il(this,this._map.set(G,!0))},bs.prototype.remove=function(G){return il(this,this._map.remove(G))},bs.prototype.clear=function(){return il(this,this._map.clear())},bs.prototype.union=function(){var G=e.call(arguments,0);return 0===(G=G.filter(function(Se){return 0!==Se.size})).length?this:0!==this.size||this.__ownerID||1!==G.length?this.withMutations(function(Se){for(var ft=0;ft<G.length;ft++)h(G[ft]).forEach(function(Ft){return Se.add(Ft)})}):this.constructor(G[0])},bs.prototype.intersect=function(){var G=e.call(arguments,0);if(0===G.length)return this;G=G.map(function(ft){return h(ft)});var Se=this;return this.withMutations(function(ft){Se.forEach(function(Ft){G.every(function(Bt){return Bt.includes(Ft)})||ft.remove(Ft)})})},bs.prototype.subtract=function(){var G=e.call(arguments,0);if(0===G.length)return this;G=G.map(function(ft){return h(ft)});var Se=this;return this.withMutations(function(ft){Se.forEach(function(Ft){G.some(function(Bt){return Bt.includes(Ft)})&&ft.remove(Ft)})})},bs.prototype.merge=function(){return this.union.apply(this,arguments)},bs.prototype.mergeWith=function(G){var Se=e.call(arguments,1);return this.union.apply(this,Se)},bs.prototype.sort=function(G){return Na(pt(this,G))},bs.prototype.sortBy=function(G,Se){return Na(pt(this,Se,G))},bs.prototype.wasAltered=function(){return this._map.wasAltered()},bs.prototype.__iterate=function(G,Se){var ft=this;return this._map.__iterate(function(Ft,Bt){return G(Bt,Bt,ft)},Se)},bs.prototype.__iterator=function(G,Se){return this._map.map(function(ft,Ft){return Ft}).__iterator(G,Se)},bs.prototype.__ensureOwner=function(G){if(G===this.__ownerID)return this;var Se=this._map.__ensureOwner(G);return G?this.__make(Se,G):(this.__ownerID=G,this._map=Se,this)},bs.isSet=$o;var Ol,dl="@@__IMMUTABLE_SET__@@",Ja=bs.prototype;function il(G,Se){return G.__ownerID?(G.size=Se.size,G._map=Se,G):Se===G._map?G:0===Se.size?G.__empty():G.__make(Se)}function Il(G,Se){var ft=Object.create(Ja);return ft.size=G?G.size:0,ft._map=G,ft.__ownerID=Se,ft}function Bl(){return Ol||(Ol=Il(rt()))}function Na(G){return null==G?ja():Di(G)?G:ja().withMutations(function(Se){var ft=h(G);nr(ft.size),ft.forEach(function(Ft){return Se.add(Ft)})})}function Di(G){return $o(G)&&D(G)}Ja[dl]=!0,Ja[U]=Ja.remove,Ja.mergeDeep=Ja.merge,Ja.mergeDeepWith=Ja.mergeWith,Ja.withMutations=Oi.withMutations,Ja.asMutable=Oi.asMutable,Ja.asImmutable=Oi.asImmutable,Ja.__empty=Bl,Ja.__make=Il,s(Na,bs),Na.of=function(){return this(arguments)},Na.fromKeys=function(G){return this(l(G).keySeq())},Na.prototype.toString=function(){return this.__toString("OrderedSet {","}")},Na.isOrderedSet=Di;var vs,pa=Na.prototype;function Vo(G,Se){var ft=Object.create(pa);return ft.size=G?G.size:0,ft._map=G,ft.__ownerID=Se,ft}function ja(){return vs||(vs=Vo(Do()))}function hs(G){return null==G?gn():ze(G)?G:gn().unshiftAll(G)}function ze(G){return!(!G||!G[kt])}pa[z]=!0,pa.__empty=ja,pa.__make=Vo,s(hs,ht),hs.of=function(){return this(arguments)},hs.prototype.toString=function(){return this.__toString("Stack [","]")},hs.prototype.get=function(G,Se){var ft=this._head;for(G=Me(this,G);ft&&G--;)ft=ft.next;return ft?ft.value:Se},hs.prototype.peek=function(){return this._head&&this._head.value},hs.prototype.push=function(){if(0===arguments.length)return this;for(var G=this.size+arguments.length,Se=this._head,ft=arguments.length-1;ft>=0;ft--)Se={value:arguments[ft],next:Se};return this.__ownerID?(this.size=G,this._head=Se,this.__hash=void 0,this.__altered=!0,this):ur(G,Se)},hs.prototype.pushAll=function(G){if(0===(G=u(G)).size)return this;nr(G.size);var Se=this.size,ft=this._head;return G.reverse().forEach(function(Ft){Se++,ft={value:Ft,next:ft}}),this.__ownerID?(this.size=Se,this._head=ft,this.__hash=void 0,this.__altered=!0,this):ur(Se,ft)},hs.prototype.pop=function(){return this.slice(1)},hs.prototype.unshift=function(){return this.push.apply(this,arguments)},hs.prototype.unshiftAll=function(G){return this.pushAll(G)},hs.prototype.shift=function(){return this.pop.apply(this,arguments)},hs.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):gn()},hs.prototype.slice=function(G,Se){if(be(G,Se,this.size))return this;var ft=ue(G,this.size);if(He(Se,this.size)!==this.size)return ht.prototype.slice.call(this,G,Se);for(var Ft=this.size-ft,Bt=this._head;ft--;)Bt=Bt.next;return this.__ownerID?(this.size=Ft,this._head=Bt,this.__hash=void 0,this.__altered=!0,this):ur(Ft,Bt)},hs.prototype.__ensureOwner=function(G){return G===this.__ownerID?this:G?ur(this.size,this._head,G,this.__hash):(this.__ownerID=G,this.__altered=!1,this)},hs.prototype.__iterate=function(G,Se){if(Se)return this.reverse().__iterate(G);for(var ft=0,Ft=this._head;Ft&&!1!==G(Ft.value,ft++,this);)Ft=Ft.next;return ft},hs.prototype.__iterator=function(G,Se){if(Se)return this.reverse().__iterator(G);var ft=0,Ft=this._head;return new At(function(){if(Ft){var Bt=Ft.value;return Ft=Ft.next,Qe(G,ft++,Bt)}return{value:void 0,done:!0}})},hs.isStack=ze;var wt,kt="@@__IMMUTABLE_STACK__@@",tn=hs.prototype;function ur(G,Se,ft,Ft){var Bt=Object.create(tn);return Bt.size=G,Bt._head=Se,Bt.__ownerID=ft,Bt.__hash=Ft,Bt.__altered=!1,Bt}function gn(){return wt||(wt=ur(0))}function xr(G,Se){var ft=function(Ft){G.prototype[Ft]=Se[Ft]};return Object.keys(Se).forEach(ft),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(Se).forEach(ft),G}tn[kt]=!0,tn.withMutations=Oi.withMutations,tn.asMutable=Oi.asMutable,tn.asImmutable=Oi.asImmutable,tn.wasAltered=Oi.wasAltered,a.Iterator=At,xr(a,{toArray:function(){nr(this.size);var G=new Array(this.size||0);return this.valueSeq().__iterate(function(Se,ft){G[ft]=Se}),G},toIndexedSeq:function(){return new Li(this)},toJS:function(){return this.toSeq().map(function(G){return G&&"function"==typeof G.toJS?G.toJS():G}).__toJS()},toJSON:function(){return this.toSeq().map(function(G){return G&&"function"==typeof G.toJSON?G.toJSON():G}).__toJS()},toKeyedSeq:function(){return new Hi(this,!0)},toMap:function(){return Mr(this.toKeyedSeq())},toObject:function(){nr(this.size);var G={};return this.__iterate(function(Se,ft){G[ft]=Se}),G},toOrderedMap:function(){return $r(this.toKeyedSeq())},toOrderedSet:function(){return Na(m(this)?this.valueSeq():this)},toSet:function(){return bs(m(this)?this.valueSeq():this)},toSetSeq:function(){return new cs(this)},toSeq:function(){return b(this)?this.toIndexedSeq():m(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return hs(m(this)?this.valueSeq():this)},toList:function(){return to(m(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(G,Se){return 0===this.size?G+Se:G+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+Se},concat:function(){return ye(this,Sa(this,e.call(arguments,0)))},includes:function(G){return this.some(function(Se){return Tt(Se,G)})},entries:function(){return this.__iterator(2)},every:function(G,Se){nr(this.size);var ft=!0;return this.__iterate(function(Ft,Bt,In){if(!G.call(Se,Ft,Bt,In))return ft=!1,!1}),ft},filter:function(G,Se){return ye(this,Ml(this,G,Se,!0))},find:function(G,Se,ft){var Ft=this.findEntry(G,Se);return Ft?Ft[1]:ft},forEach:function(G,Se){return nr(this.size),this.__iterate(Se?G.bind(Se):G)},join:function(G){nr(this.size),G=void 0!==G?""+G:",";var Se="",ft=!0;return this.__iterate(function(Ft){ft?ft=!1:Se+=G,Se+=null!=Ft?Ft.toString():""}),Se},keys:function(){return this.__iterator(0)},map:function(G,Se){return ye(this,xa(this,G,Se))},reduce:function(G,Se,ft){var Ft,Bt;return nr(this.size),arguments.length<2?Bt=!0:Ft=Se,this.__iterate(function(In,Xn,Sr){Bt?(Bt=!1,Ft=In):Ft=G.call(ft,Ft,In,Xn,Sr)}),Ft},reduceRight:function(G,Se,ft){var Ft=this.toKeyedSeq().reverse();return Ft.reduce.apply(Ft,arguments)},reverse:function(){return ye(this,Ra(this,!0))},slice:function(G,Se){return ye(this,sa(this,G,Se,!0))},some:function(G,Se){return!this.every(si(G),Se)},sort:function(G){return ye(this,pt(this,G))},values:function(){return this.__iterator(1)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(G,Se){return Ae(G?this.toSeq().filter(G,Se):this)},countBy:function(G,Se){return function(G,Se,ft){var Ft=Mr().asMutable();return G.__iterate(function(Bt,In){Ft.update(Se.call(ft,Bt,In,G),0,function(Xn){return Xn+1})}),Ft.asImmutable()}(this,G,Se)},equals:function(G){return yn(this,G)},entrySeq:function(){var G=this;if(G._cache)return new Yn(G._cache);var Se=G.toSeq().map(ii).toIndexedSeq();return Se.fromEntrySeq=function(){return G.toSeq()},Se},filterNot:function(G,Se){return this.filter(si(G),Se)},findEntry:function(G,Se,ft){var Ft=ft;return this.__iterate(function(Bt,In,Xn){if(G.call(Se,Bt,In,Xn))return Ft=[In,Bt],!1}),Ft},findKey:function(G,Se){var ft=this.findEntry(G,Se);return ft&&ft[0]},findLast:function(G,Se,ft){return this.toKeyedSeq().reverse().find(G,Se,ft)},findLastEntry:function(G,Se,ft){return this.toKeyedSeq().reverse().findEntry(G,Se,ft)},findLastKey:function(G,Se){return this.toKeyedSeq().reverse().findKey(G,Se)},first:function(){return this.find(Oe)},flatMap:function(G,Se){return ye(this,function(G,Se,ft){var Ft=Or(G);return G.toSeq().map(function(Bt,In){return Ft(Se.call(ft,Bt,In,G))}).flatten(!0)}(this,G,Se))},flatten:function(G){return ye(this,fa(this,G,!0))},fromEntrySeq:function(){return new Os(this)},get:function(G,Se){return this.find(function(ft,Ft){return Tt(Ft,G)},void 0,Se)},getIn:function(G,Se){for(var ft,Ft=this,Bt=ss(G);!(ft=Bt.next()).done;)if((Ft=Ft&&Ft.get?Ft.get(ft.value,Y):Y)===Y)return Se;return Ft},groupBy:function(G,Se){return function(G,Se,ft){var Ft=m(G),Bt=(D(G)?$r():Mr()).asMutable();G.__iterate(function(Xn,Sr){Bt.update(Se.call(ft,Xn,Sr,G),function(pi){return(pi=pi||[]).push(Ft?[Sr,Xn]:Xn),pi})});var In=Or(G);return Bt.map(function(Xn){return ye(G,In(Xn))})}(this,G,Se)},has:function(G){return this.get(G,Y)!==Y},hasIn:function(G){return this.getIn(G,Y)!==Y},isSubset:function(G){return G="function"==typeof G.includes?G:a(G),this.every(function(Se){return G.includes(Se)})},isSuperset:function(G){return(G="function"==typeof G.isSubset?G:a(G)).isSubset(this)},keyOf:function(G){return this.findKey(function(Se){return Tt(Se,G)})},keySeq:function(){return this.toSeq().map(mi).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(G){return this.toKeyedSeq().reverse().keyOf(G)},max:function(G){return an(this,G)},maxBy:function(G,Se){return an(this,Se,G)},min:function(G){return an(this,G?bi(G):vo)},minBy:function(G,Se){return an(this,Se?bi(Se):vo,G)},rest:function(){return this.slice(1)},skip:function(G){return this.slice(Math.max(0,G))},skipLast:function(G){return ye(this,this.toSeq().reverse().skip(G).reverse())},skipWhile:function(G,Se){return ye(this,Ka(this,G,Se,!0))},skipUntil:function(G,Se){return this.skipWhile(si(G),Se)},sortBy:function(G,Se){return ye(this,pt(this,Se,G))},take:function(G){return this.slice(0,Math.max(0,G))},takeLast:function(G){return ye(this,this.toSeq().reverse().take(G).reverse())},takeWhile:function(G,Se){return ye(this,function(G,Se,ft){var Ft=Ni(G);return Ft.__iterateUncached=function(Bt,In){var Xn=this;if(In)return this.cacheResult().__iterate(Bt,In);var Sr=0;return G.__iterate(function(pi,Fr,zr){return Se.call(ft,pi,Fr,zr)&&++Sr&&Bt(pi,Fr,Xn)}),Sr},Ft.__iteratorUncached=function(Bt,In){var Xn=this;if(In)return this.cacheResult().__iterator(Bt,In);var Sr=G.__iterator(2,In),pi=!0;return new At(function(){if(!pi)return{value:void 0,done:!0};var Fr=Sr.next();if(Fr.done)return Fr;var zr=Fr.value,Un=zr[0],lr=zr[1];return Se.call(ft,lr,Un,Xn)?2===Bt?Fr:Qe(Bt,Un,lr,Fr):(pi=!1,{value:void 0,done:!0})})},Ft}(this,G,Se))},takeUntil:function(G,Se){return this.takeWhile(si(G),Se)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(G){if(G.size===1/0)return 0;var Se=D(G),ft=m(G),Ft=Se?1:0;return function(G,Se){return Se=Ue(Se,3432918353),Se=Ue(Se<<15|Se>>>-15,461845907),Se=Ue(Se<<13|Se>>>-13,5),Se=Ue((Se=(Se+3864292196|0)^G)^Se>>>16,2246822507),nt((Se=Ue(Se^Se>>>13,3266489909))^Se>>>16)}(G.__iterate(ft?Se?function(Bt,In){Ft=31*Ft+Br(at(Bt),at(In))|0}:function(Bt,In){Ft=Ft+Br(at(Bt),at(In))|0}:Se?function(Bt){Ft=31*Ft+at(Bt)|0}:function(Bt){Ft=Ft+at(Bt)|0}),Ft)}(this))}});var Zr=a.prototype;Zr[x]=!0,Zr[St]=Zr.values,Zr.__toJS=Zr.toArray,Zr.__toStringMapper=Ui,Zr.inspect=Zr.toSource=function(){return this.toString()},Zr.chain=Zr.flatMap,Zr.contains=Zr.includes,xr(l,{flip:function(){return ye(this,da(this))},mapEntries:function(G,Se){var ft=this,Ft=0;return ye(this,this.toSeq().map(function(Bt,In){return G.call(Se,[In,Bt],Ft++,ft)}).fromEntrySeq())},mapKeys:function(G,Se){var ft=this;return ye(this,this.toSeq().flip().map(function(Ft,Bt){return G.call(Se,Ft,Bt,ft)}).flip())}});var Pr=l.prototype;function mi(G,Se){return Se}function ii(G,Se){return[Se,G]}function si(G){return function(){return!G.apply(this,arguments)}}function bi(G){return function(){return-G.apply(this,arguments)}}function Ui(G){return"string"==typeof G?JSON.stringify(G):String(G)}function io(){return ce(arguments)}function vo(G,Se){return G<Se?1:G>Se?-1:0}function Br(G,Se){return G^Se+2654435769+(G<<6)+(G>>2)|0}return Pr[j]=!0,Pr[St]=Zr.entries,Pr.__toJS=Zr.toObject,Pr.__toStringMapper=function(G,Se){return JSON.stringify(Se)+": "+Ui(G)},xr(u,{toKeyedSeq:function(){return new Hi(this,!1)},filter:function(G,Se){return ye(this,Ml(this,G,Se,!1))},findIndex:function(G,Se){var ft=this.findEntry(G,Se);return ft?ft[0]:-1},indexOf:function(G){var Se=this.keyOf(G);return void 0===Se?-1:Se},lastIndexOf:function(G){var Se=this.lastKeyOf(G);return void 0===Se?-1:Se},reverse:function(){return ye(this,Ra(this,!1))},slice:function(G,Se){return ye(this,sa(this,G,Se,!1))},splice:function(G,Se){var ft=arguments.length;if(Se=Math.max(0|Se,0),0===ft||2===ft&&!Se)return this;G=ue(G,G<0?this.count():this.size);var Ft=this.slice(0,G);return ye(this,1===ft?Ft:Ft.concat(ce(arguments,2),this.slice(G+Se)))},findLastIndex:function(G,Se){var ft=this.findLastEntry(G,Se);return ft?ft[0]:-1},first:function(){return this.get(0)},flatten:function(G){return ye(this,fa(this,G,!1))},get:function(G,Se){return(G=Me(this,G))<0||this.size===1/0||void 0!==this.size&&G>this.size?Se:this.find(function(ft,Ft){return Ft===G},void 0,Se)},has:function(G){return(G=Me(this,G))>=0&&(void 0!==this.size?this.size===1/0||G<this.size:-1!==this.indexOf(G))},interpose:function(G){return ye(this,function(G,Se){var ft=Ni(G);return ft.size=G.size&&2*G.size-1,ft.__iterateUncached=function(Ft,Bt){var In=this,Xn=0;return G.__iterate(function(Sr,pi){return(!Xn||!1!==Ft(Se,Xn++,In))&&!1!==Ft(Sr,Xn++,In)},Bt),Xn},ft.__iteratorUncached=function(Ft,Bt){var In,Xn=G.__iterator(1,Bt),Sr=0;return new At(function(){return(!In||Sr%2)&&(In=Xn.next()).done?In:Sr%2?Qe(Ft,Sr++,Se):Qe(Ft,Sr++,In.value,In)})},ft}(this,G))},interleave:function(){var G=[this].concat(ce(arguments)),Se=Ce(this.toSeq(),Ln.of,G),ft=Se.flatten(!0);return Se.size&&(ft.size=Se.size*G.length),ye(this,ft)},keySeq:function(){return hn(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(G,Se){return ye(this,Ka(this,G,Se,!1))},zip:function(){return ye(this,Ce(this,io,[this].concat(ce(arguments))))},zipWith:function(G){var Se=ce(arguments);return Se[0]=this,ye(this,Ce(this,G,Se))}}),u.prototype[H]=!0,u.prototype[z]=!0,xr(h,{get:function(G,Se){return this.has(G)?G:Se},includes:function(G){return this.has(G)},keySeq:function(){return this.valueSeq()}}),h.prototype.has=Zr.includes,h.prototype.contains=h.prototype.includes,xr(ar,l.prototype),xr(Ln,u.prototype),xr(Rn,h.prototype),xr(Ir,l.prototype),xr(ht,u.prototype),xr(L,h.prototype),{Iterable:a,Seq:ln,Collection:Qn,Map:Mr,OrderedMap:$r,List:to,Stack:hs,Set:bs,OrderedSet:Na,Record:Lo,Range:hn,Repeat:et,is:Tt,fromJS:jn}}()},function(g,o,t){g.exports=t(519)},function(g,o,t){var e=t(226);g.exports=function(s,a,l){return a in s?e(s,a,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[a]=l,s},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(551)},function(g,o,t){"use strict";(function(e){t.d(o,"z",function(){return mt}),t.d(o,"i",function(){return Tt}),t.d(o,"v",function(){return yn}),t.d(o,"r",function(){return et}),t.d(o,"t",function(){return jt}),t.d(o,"s",function(){return hn}),t.d(o,"p",function(){return Qn}),t.d(o,"u",function(){return Ir}),t.d(o,"x",function(){return ht}),t.d(o,"y",function(){return L}),t.d(o,"J",function(){return Ue}),t.d(o,"f",function(){return nt}),t.d(o,"n",function(){return at}),t.d(o,"h",function(){return it}),t.d(o,"D",function(){return Pt}),t.d(o,"K",function(){return ot}),t.d(o,"o",function(){return mr}),t.d(o,"C",function(){return _r}),t.d(o,"a",function(){return Nr}),t.d(o,"H",function(){return br}),t.d(o,"b",function(){return Jn}),t.d(o,"G",function(){return nr}),t.d(o,"F",function(){return Mr}),t.d(o,"E",function(){return yi}),t.d(o,"k",function(){return Ii}),t.d(o,"d",function(){return Mi}),t.d(o,"g",function(){return Oi}),t.d(o,"m",function(){return Kr}),t.d(o,"l",function(){return ei}),t.d(o,"e",function(){return di}),t.d(o,"I",function(){return se}),t.d(o,"w",function(){return ct}),t.d(o,"A",function(){return Ke}),t.d(o,"B",function(){return Xe}),t.d(o,"j",function(){return Vt}),t.d(o,"c",function(){return Ct}),t.d(o,"q",function(){return bt});var s=t(14),a=t.n(s),l=(t(13),t(19)),u=t.n(l),h=t(49),_=t.n(h),m=t(24),b=t.n(m),C=t(4),D=t.n(C),x=t(80),j=t.n(x),H=t(2),z=t.n(H),U=t(23),M=t.n(U),I=t(12),J=t.n(I),Y=t(15),ie=t.n(Y),oe=(t(37),t(30)),fe=t.n(oe),ne=t(21),he=t.n(ne),ce=t(196),Ae=t.n(ce),Me=t(20),Oe=t.n(Me),be=t(71),ue=t.n(be),He=(t(31),t(32)),$e=t.n(He),F=t(18),je=t.n(F),Et=t(56),lt=t.n(Et),nn=t(108),St=t.n(nn),At=t(105),Qe=t.n(At),It=t(1),ae=t.n(It),Ie=t(450),dt=t(451),Jt=t.n(dt),zt=t(254),ln=t.n(zt),ar=t(255),Ln=t.n(ar),Rn=t(452),er=t.n(Rn),Mn=t(317),Ht=t.n(Mn),tr=t(103),Yn=t.n(tr),Cn=t(104),Kt=t.n(Cn),dn=t(142),Kn=t(26),qn=t(454),Sn=t.n(qn),$n=t(145),En=t(126),Fn=t.n(En),Dn=t(455),mn=t.n(Dn),jn=t(70),Xt="default",ut=function(We){return ae.a.Iterable.isIterable(We)};function mt(We){return jt(We)?ut(We)?We.toJS():We:{}}function Tt(We){var $t,or;if(ut(We)||We instanceof Kn.a.File||!jt(We))return We;if(b()(We))return D()(or=ae.a.Seq(We)).call(or,Tt).toList();if(Kt()(j()(We))){var Zn,Vr=function(Cr){if(!Kt()(j()(Cr)))return Cr;var ai,Dr={},rn={},fi=_()(j()(Cr).call(Cr));try{for(fi.s();!(ai=fi.n()).done;){var wi,go,Fi,no,Ei=ai.value;Dr[Ei[0]]||rn[Ei[0]]&&rn[Ei[0]].containsMultiple?(rn[Ei[0]]||(rn[Ei[0]]={containsMultiple:!0,length:1},Dr[z()(Fi=z()(no="".concat(Ei[0])).call(no,"_**[]")).call(Fi,rn[Ei[0]].length)]=Dr[Ei[0]],delete Dr[Ei[0]]),rn[Ei[0]].length+=1,Dr[z()(wi=z()(go="".concat(Ei[0])).call(go,"_**[]")).call(wi,rn[Ei[0]].length)]=Ei[1]):Dr[Ei[0]]=Ei[1]}}catch(Ji){fi.e(Ji)}finally{fi.f()}return Dr}(We);return D()(Zn=ae.a.OrderedMap(Vr)).call(Zn,Tt)}return D()($t=ae.a.OrderedMap(We)).call($t,Tt)}function yn(We){return b()(We)?We:[We]}function et(We){return"function"==typeof We}function jt(We){return!!We&&"object"===u()(We)}function hn(We){return"function"==typeof We}function Qn(We){return b()(We)}var Ir=Ln.a;function ht(We,$t){var or;return fe()(or=ie()(We)).call(or,function(Zn,Vr){return Zn[Vr]=$t(We[Vr],Vr),Zn},{})}function L(We,$t){var or;return fe()(or=ie()(We)).call(or,function(Zn,Vr){var Cr=$t(We[Vr],Vr);return Cr&&"object"===u()(Cr)&&he()(Zn,Cr),Zn},{})}function Ue(We){return function($t){return function(or){return function(Zn){return"function"==typeof Zn?Zn(We()):or(Zn)}}}}function nt(We){var $t,or=We.keySeq();return or.contains(Xt)?Xt:Ae()($t=J()(or).call(or,function(Zn){return"2"===(Zn+"")[0]})).call($t).first()}function at(We,$t){if(!ae.a.Iterable.isIterable(We))return ae.a.List();var or=We.getIn(b()($t)?$t:[$t]);return ae.a.List.isList(or)?or:ae.a.List()}function it(We){var $t,or=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if(ue()(or).call(or,function(Zn){return null!==($t=Zn.exec(We))}),null!==$t&&$t.length>1)try{return decodeURIComponent($t[1])}catch(Zn){console.error(Zn)}return null}function Pt(We){return $t=We.replace(/\.[^./]*$/,""),ln()(Jt()($t));var $t}function Ut(We,$t,or,Zn,Vr){if(!$t)return[];var Cr=[],ai=$t.get("nullable"),Dr=$t.get("required"),Qr=$t.get("maximum"),rn=$t.get("minimum"),fi=$t.get("type"),Ei=$t.get("format"),wi=$t.get("maxLength"),go=$t.get("minLength"),Fi=$t.get("uniqueItems"),no=$t.get("maxItems"),Ji=$t.get("minItems"),qi=$t.get("pattern"),to=or||!0===Dr,zi=null!=We;if(ai&&null===We||!fi||!(to||zi&&"array"===fi||to||zi))return[];var Go="string"===fi&&We,Ro="array"===fi&&b()(We)&&We.length,Bo="array"===fi&&ae.a.List.isList(We)&&We.count(),Jo=[Go,Ro,Bo,"array"===fi&&"string"==typeof We&&We,"file"===fi&&We instanceof Kn.a.File,"boolean"===fi&&(We||!1===We),"number"===fi&&(We||0===We),"integer"===fi&&(We||0===We),"object"===fi&&"object"===u()(We)&&null!==We,"object"===fi&&"string"==typeof We&&We],es=ue()(Jo).call(Jo,function(gi){return!!gi});if(to&&!es&&!Zn)return Cr.push("Required field is not provided"),Cr;if("object"===fi&&(null===Vr||"application/json"===Vr)){var ua,ds=We;if("string"==typeof We)try{ds=JSON.parse(We)}catch(gi){return Cr.push("Parameter string value must be valid JSON"),Cr}$t&&$t.has("required")&&hn(Dr.isList)&&Dr.isList()&&M()(Dr).call(Dr,function(gi){void 0===ds[gi]&&Cr.push({propKey:gi,error:"Required property not found"})}),$t&&$t.has("properties")&&M()(ua=$t.get("properties")).call(ua,function(gi,Hi){var Li=Ut(ds[Hi],gi,!1,Zn,Vr);Cr.push.apply(Cr,a()(D()(Li).call(Li,function(cs){return{propKey:Hi,error:cs}})))})}if(qi){var zo=function(gi,Hi){if(!new RegExp(Hi).test(gi))return"Value must follow pattern "+Hi}(We,qi);zo&&Cr.push(zo)}if(Ji&&"array"===fi){var oa=function(gi,Hi){var Li;if(!gi&&Hi>=1||gi&&gi.length<Hi)return z()(Li="Array must contain at least ".concat(Hi," item")).call(Li,1===Hi?"":"s")}(We,Ji);oa&&Cr.push(oa)}if(no&&"array"===fi){var Er=function(gi,Hi){var Li;if(gi&&gi.length>Hi)return z()(Li="Array must not contain more then ".concat(Hi," item")).call(Li,1===Hi?"":"s")}(We,no);Er&&Cr.push({needRemove:!0,error:Er})}if(Fi&&"array"===fi){var st=function(gi,Hi){if(gi&&("true"===Hi||!0===Hi)){var Li=Object(It.fromJS)(gi),cs=Li.toSet();if(gi.length>cs.size){var Os=Object(It.Set)();if(M()(Li).call(Li,function(da,xa){J()(Li).call(Li,function(Ra){return hn(Ra.equals)?Ra.equals(da):Ra===da}).size>1&&(Os=Os.add(xa))}),0!==Os.size)return D()(Os).call(Os,function(da){return{index:da,error:"No duplicates allowed."}}).toArray()}}}(We,Fi);st&&Cr.push.apply(Cr,a()(st))}if(wi||0===wi){var pn=function(gi,Hi){var Li;if(gi.length>Hi)return z()(Li="Value must be no longer than ".concat(Hi," character")).call(Li,1!==Hi?"s":"")}(We,wi);pn&&Cr.push(pn)}if(go){var ee=function(gi,Hi){var Li;if(gi.length<Hi)return z()(Li="Value must be at least ".concat(Hi," character")).call(Li,1!==Hi?"s":"")}(We,go);ee&&Cr.push(ee)}if(Qr||0===Qr){var Ve=function(gi,Hi){if(gi>Hi)return"Value must be less than ".concat(Hi)}(We,Qr);Ve&&Cr.push(Ve)}if(rn||0===rn){var fn=function(gi,Hi){if(gi<Hi)return"Value must be greater than ".concat(Hi)}(We,rn);fn&&Cr.push(fn)}if("string"===fi){var Tn;if(!(Tn="date-time"===Ei?function(gi){if(isNaN(Date.parse(gi)))return"Value must be a DateTime"}(We):"uuid"===Ei?function(gi){if(gi=gi.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(gi))return"Value must be a Guid"}(We):function(gi){if(gi&&"string"!=typeof gi)return"Value must be a string"}(We)))return Cr;Cr.push(Tn)}else if("boolean"===fi){var $r=function(gi){if("true"!==gi&&"false"!==gi&&!0!==gi&&!1!==gi)return"Value must be a boolean"}(We);if(!$r)return Cr;Cr.push($r)}else if("number"===fi){var ni=function(gi){if(!/^-?\d+(\.?\d+)?$/.test(gi))return"Value must be a number"}(We);if(!ni)return Cr;Cr.push(ni)}else if("integer"===fi){var Ri=function(gi){if(!/^-?\d+$/.test(gi))return"Value must be an integer"}(We);if(!Ri)return Cr;Cr.push(Ri)}else if("array"===fi){if(!Ro&&!Bo)return Cr;We&&M()(We).call(We,function(gi,Hi){var Li=Ut(gi,$t.get("items"),!1,Zn,Vr);Cr.push.apply(Cr,a()(D()(Li).call(Li,function(cs){return{index:Hi,error:cs}})))})}else if("file"===fi){var Do=function(gi){if(gi&&!(gi instanceof Kn.a.File))return"Value must be a file"}(We);if(!Do)return Cr;Cr.push(Do)}return Cr}var ot=function(We,$t){var or=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Zn=or.isOAS3,Vr=void 0!==Zn&&Zn,Cr=or.bypassRequiredCheck,ai=void 0!==Cr&&Cr,Dr=We.get("required"),Qr=Object($n.a)(We,{isOAS3:Vr}),rn=Qr.schema,fi=Qr.parameterContentMediaType;return Ut($t,rn,Dr,ai,fi)},Nn=function(We,$t,or){if(We&&(!We.xml||!We.xml.name)){if(We.xml=We.xml||{},!We.$$ref)return We.type||We.items||We.properties||We.additionalProperties?'<?xml version="1.0" encoding="UTF-8"?>\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e':null;var Zn=We.$$ref.match(/\S*\/(\S+)$/);We.xml.name=Zn[1]}return Object(dn.memoizedCreateXMLExample)(We,$t,or)},sn=[{when:/json/,shouldStringifyTypes:["string"]}],An=["object"],Bn=function(We,$t,or,Zn){var Vr=Object(dn.memoizedSampleFromSchema)(We,$t,Zn),Cr=u()(Vr),ai=fe()(sn).call(sn,function(Dr,Qr){var rn;return Qr.when.test(or)?z()(rn=[]).call(rn,a()(Dr),a()(Qr.shouldStringifyTypes)):Dr},An);return Ht()(ai,function(Dr){return Dr===Cr})?$e()(Vr,null,2):Vr},ir=function(We,$t,or,Zn){var Vr,Cr=Bn(We,$t,or,Zn);try{"\n"===(Vr=jn.a.dump(jn.a.load(Cr),{lineWidth:-1}))[Vr.length-1]&&(Vr=Oe()(Vr).call(Vr,0,Vr.length-1))}catch(ai){return console.error(ai),"error: could not generate yaml example"}return Vr.replace(/\t/g,"  ")},mr=function(We){var $t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",or=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Zn=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return We&&hn(We.toJS)&&(We=We.toJS()),Zn&&hn(Zn.toJS)&&(Zn=Zn.toJS()),/xml/.test($t)?Nn(We,or,Zn):/(yaml|yml)/.test($t)?ir(We,or,$t,Zn):Bn(We,or,$t,Zn)},_r=function(){var We={},$t=Kn.a.location.search;if(!$t)return{};if(""!=$t){var or=$t.substr(1).split("&");for(var Zn in or)Object.prototype.hasOwnProperty.call(or,Zn)&&(Zn=or[Zn].split("="),We[decodeURIComponent(Zn[0])]=Zn[1]&&decodeURIComponent(Zn[1])||"")}return We},Nr=function(We){return(We instanceof e?We:e.from(We.toString(),"utf-8")).toString("base64")},br={operationsSorter:{alpha:function(We,$t){return We.get("path").localeCompare($t.get("path"))},method:function(We,$t){return We.get("method").localeCompare($t.get("method"))}},tagsSorter:{alpha:function(We,$t){return We.localeCompare($t)}}},Jn=function(We){var $t=[];for(var or in We){var Zn=We[or];void 0!==Zn&&""!==Zn&&$t.push([or,"=",encodeURIComponent(Zn).replace(/%20/g,"+")].join(""))}return $t.join("&")},nr=function(We,$t,or){return!!er()(or,function(Zn){return Yn()(We[Zn],$t[Zn])})};function Mr(We){return"string"!=typeof We||""===We?"":Object(Ie.sanitizeUrl)(We)}function yi(We){return!(!We||je()(We).call(We,"localhost")>=0||je()(We).call(We,"127.0.0.1")>=0||"none"===We)}function Ii(We){if(!ae.a.OrderedMap.isOrderedMap(We)||!We.size)return null;var $t=lt()(We).call(We,function(Vr,Cr){return St()(Cr).call(Cr,"2")&&ie()(Vr.get("content")||{}).length>0}),or=We.get("default")||ae.a.OrderedMap(),Zn=(or.get("content")||ae.a.OrderedMap()).keySeq().toJS().length?or:null;return $t||Zn}var Mi=function(We){return"string"==typeof We||We instanceof String?Qe()(We).call(We).replace(/\s/g,"%20"):""},Oi=function(We){return Sn()(Mi(We).replace(/%20/g,"_"))},Kr=function(We){return J()(We).call(We,function($t,or){return/^x-/.test(or)})},ei=function(We){return J()(We).call(We,function($t,or){return/^pattern|maxLength|minLength|maximum|minimum/.test(or)})};function di(We,$t){var or,Zn=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0};if("object"!==u()(We)||b()(We)||null===We||!$t)return We;var Vr=he()({},We);return M()(or=ie()(Vr)).call(or,function(Cr){Cr===$t&&Zn(Vr[Cr],Cr)?delete Vr[Cr]:Vr[Cr]=di(Vr[Cr],$t,Zn)}),Vr}function se(We){if("string"==typeof We)return We;if(We&&We.toJS&&(We=We.toJS()),"object"===u()(We)&&null!==We)try{return $e()(We,null,2)}catch($t){return String(We)}return null==We?"":We.toString()}function ct(We){return"number"==typeof We?We.toString():We}function Ke(We){var $t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},or=$t.returnAll,Zn=void 0!==or&&or,Vr=$t.allowHashes,Cr=void 0===Vr||Vr;if(!ae.a.Map.isMap(We))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");var ai,Dr,Qr,rn=We.get("name"),fi=We.get("in"),Ei=[];return We&&We.hashCode&&fi&&rn&&Cr&&Ei.push(z()(ai=z()(Dr="".concat(fi,".")).call(Dr,rn,".hash-")).call(ai,We.hashCode())),fi&&rn&&Ei.push(z()(Qr="".concat(fi,".")).call(Qr,rn)),Ei.push(rn),Zn?Ei:Ei[0]||""}function Xe(We,$t){var or,Zn=Ke(We,{returnAll:!0});return J()(or=D()(Zn).call(Zn,function(Vr){return $t[Vr]})).call(or,function(Vr){return void 0!==Vr})[0]}function Vt(){return rt(Fn()(32).toString("base64"))}function Ct(We){return rt(mn()("sha256").update(We).digest("base64"))}function rt(We){return We.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}var bt=function(We){return!We||!(!ut(We)||!We.isEmpty())}}).call(this,t(132).Buffer)},function(g,o){g.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(226);function s(a,l){for(var u=0;u<l.length;u++){var h=l[u];h.enumerable=h.enumerable||!1,h.configurable=!0,"value"in h&&(h.writable=!0),e(a,h.key,h)}}g.exports=function(a,l,u){return l&&s(a.prototype,l),u&&s(a,u),a},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(853),s=t(858);g.exports=function(a,l){if("function"!=typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");a.prototype=e(l&&l.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),l&&s(a,l)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(437),s=t(867),a=t(873),l=t(874);g.exports=function(u){var h=a();return function(){var _,m=s(u);if(h){var b=s(this).constructor;_=e(m,arguments,b)}else _=m.apply(this,arguments);return l(this,_)}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(878)()},function(g,o,t){g.exports=t(344)},function(g,o,t){var e=t(379),s=t(618),a=t(187),l=t(380);g.exports=function(u,h){return e(u)||s(u,h)||a(u,h)||l()},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(606),s=t(372),a=t(187),l=t(617);g.exports=function(u){return e(u)||s(u)||a(u)||l()},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(345)},function(g,o,t){"use strict";function e(u,h){return u===h}function s(u,h,_){if(null===h||null===_||h.length!==_.length)return!1;for(var m=h.length,b=0;b<m;b++)if(!u(h[b],_[b]))return!1;return!0}function a(u){var h=Array.isArray(u[0])?u[0]:u;if(!h.every(function(m){return"function"==typeof m})){var _=h.map(function(m){return typeof m}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+_+"]")}return h}t.d(o,"a",function(){return l});var l=function(u){for(var h=arguments.length,_=Array(h>1?h-1:0),m=1;m<h;m++)_[m-1]=arguments[m];return function(){for(var b=arguments.length,C=Array(b),D=0;D<b;D++)C[D]=arguments[D];var x=0,j=C.pop(),H=a(C),z=u.apply(void 0,[function(){return x++,j.apply(null,arguments)}].concat(_)),U=u(function(){for(var M=[],I=H.length,J=0;J<I;J++)M.push(H[J].apply(null,arguments));return z.apply(null,M)});return U.resultFunc=j,U.dependencies=H,U.recomputations=function(){return x},U.resetRecomputations=function(){return x=0},U}}(function(u){var h=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,_=null,m=null;return function(){return s(h,_,arguments)||(m=u.apply(null,arguments)),_=arguments,m}})},function(g,o,t){(function(e){var s=function(a){return a&&a.Math==Math&&a};g.exports=s("object"==typeof globalThis&&globalThis)||s("object"==typeof window&&window)||s("object"==typeof self&&self)||s("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,t(57))},function(g,o,t){g.exports=t(385)},function(g,o,t){var e=t(166),s=t(515);function a(l){return"function"==typeof e&&"symbol"==typeof s?(g.exports=a=function(u){return typeof u},g.exports.default=g.exports,g.exports.__esModule=!0):(g.exports=a=function(u){return u&&"function"==typeof e&&u.constructor===e&&u!==e.prototype?"symbol":typeof u},g.exports.default=g.exports,g.exports.__esModule=!0),a(l)}g.exports=a,g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(351)},function(g,o,t){g.exports=t(349)},function(g,o,t){"use strict";var e=t(17),s=t(93),a=t(27),l=t(41),u=t(111).f,h=t(331),_=t(34),m=t(84),b=t(85),C=t(44),D=function(x){var j=function(H,z,U){if(this instanceof j){switch(arguments.length){case 0:return new x;case 1:return new x(H);case 2:return new x(H,z)}return new x(H,z,U)}return s(x,this,arguments)};return j.prototype=x.prototype,j};g.exports=function(x,j){var H,z,U,M,I,J,Y,ie,oe=x.target,fe=x.global,ne=x.stat,he=x.proto,ce=fe?e:ne?e[oe]:(e[oe]||{}).prototype,Ae=fe?_:_[oe]||b(_,oe,{})[oe],Me=Ae.prototype;for(U in j)H=!h(fe?U:oe+(ne?".":"#")+U,x.forced)&&ce&&C(ce,U),I=Ae[U],H&&(J=x.noTargetGet?(ie=u(ce,U))&&ie.value:ce[U]),M=H&&J?J:j[U],H&&typeof I==typeof M||(Y=x.bind&&H?m(M,e):x.wrap&&H?D(M):he&&l(M)?a(M):M,(x.sham||M&&M.sham||I&&I.sham)&&b(Y,"sham",!0),b(Ae,U,Y),he&&(C(_,z=oe+"Prototype")||b(_,z,{}),b(_[z],U,M),x.real&&Me&&!Me[U]&&b(Me,U,M)))}},function(g,o,t){g.exports=t(381)},function(g,o,t){g.exports=t(352)},function(g,o,t){var e=t(420),s=t(421),a=t(800),l=t(802),u=t(807),h=t(809),_=t(814),m=t(226),b=t(3);function C(D,x){var j=e(D);if(s){var H=s(D);x&&(H=a(H).call(H,function(z){return l(D,z).enumerable})),j.push.apply(j,H)}return j}g.exports=function(D){for(var x=1;x<arguments.length;x++){var j,H=null!=arguments[x]?arguments[x]:{};if(x%2)u(j=C(Object(H),!0)).call(j,function(U){b(D,U,H[U])});else if(h)_(D,h(H));else{var z;u(z=C(Object(H))).call(z,function(U){m(D,U,l(H,U))})}}return D},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){"use strict";o.a=function(){var e={location:{},history:{},open:function(){},close:function(){},File:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var s=0,a=["File","Blob","FormData"];s<a.length;s++){var l=a[s];l in window&&(e[l]=window[l])}}catch(u){console.error(u)}return e}()},function(g,o){var t=Function.prototype,e=t.bind,s=t.call,a=e&&e.bind(s);g.exports=e?function(l){return l&&a(s,l)}:function(l){return l&&function(){return s.apply(l,arguments)}}},function(g,o,t){"use strict";var e,s=t(1),a="<<anonymous>>",l=function(){invariant(!1,"ImmutablePropTypes type checking code is stripped in production.")};l.isRequired=l;var u=function(){return l};function m(b,C){return D="Iterable."+b,x=function(j){return s.Iterable.isIterable(j)&&C(j)},function(b){function C(x,j,H,z,U,M){for(var I=arguments.length,J=Array(I>6?I-6:0),Y=6;Y<I;Y++)J[Y-6]=arguments[Y];return M=M||H,z=z||a,null!=j[H]?b.apply(void 0,[j,H,z,U,M].concat(J)):x?new Error("Required "+U+" `"+M+"` was not specified in `"+z+"`."):void 0}var D=C.bind(null,!1);return D.isRequired=C.bind(null,!0),D}(function(j,H,z,U,M){var I=j[H];if(!x(I)){var J=function(b){var C=typeof b;return Array.isArray(b)?"array":b instanceof RegExp?"object":b instanceof s.Iterable?"Immutable."+b.toSource().split(" ")[0]:C}(I);return new Error("Invalid "+U+" `"+M+"` of type `"+J+"` supplied to `"+z+"`, expected `"+D+"`.")}return null});var D,x}(e={listOf:u,mapOf:u,orderedMapOf:u,setOf:u,orderedSetOf:u,stackOf:u,iterableOf:u,recordOf:u,shape:u,contains:u,mapContains:u,orderedMapContains:u,list:l,map:l,orderedMap:l,set:l,orderedSet:l,stack:l,seq:l,record:l,iterable:l}).iterable.indexed=m("Indexed",s.Iterable.isIndexed),e.iterable.keyed=m("Keyed",s.Iterable.isKeyed),g.exports=e},function(g,o,t){var e=t(851);function s(){return g.exports=s=e||function(a){for(var l=1;l<arguments.length;l++){var u=arguments[l];for(var h in u)Object.prototype.hasOwnProperty.call(u,h)&&(a[h]=u[h])}return a},g.exports.default=g.exports,g.exports.__esModule=!0,s.apply(this,arguments)}g.exports=s,g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(546)},function(g,o,t){g.exports=t(637)},function(g,o,t){g.exports=t(527)},function(g,o){g.exports=function(t){try{return!!t()}catch(e){return!0}}},function(g,o){g.exports={}},function(g,o,t){var e=t(27);g.exports=e({}.isPrototypeOf)},function(g,o,t){"use strict";t.r(o),t.d(o,"isOAS3",function(){return _}),t.d(o,"isSwagger2",function(){return m}),t.d(o,"OAS3ComponentWrapFactory",function(){return b});var e=t(29),s=t.n(e),a=t(108),l=t.n(a),u=t(0),h=t.n(u);function _(C){var D=C.get("openapi");return"string"==typeof D&&l()(D).call(D,"3.0.")&&D.length>4}function m(C){var D=C.get("swagger");return"string"==typeof D&&l()(D).call(D,"2.0")}function b(C){return function(D,x){return function(j){return x&&x.specSelectors&&x.specSelectors.specJson?_(x.specSelectors.specJson())?h.a.createElement(C,s()({},j,x,{Ori:D})):h.a.createElement(D,j):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}}},function(g,o,t){g.exports=t(535)},function(g,o,t){var e=t(17),s=t(212),a=t(44),l=t(171),u=t(210),h=t(329),_=s("wks"),m=e.Symbol,b=m&&m.for,C=h?m:m&&m.withoutSetter||l;g.exports=function(D){if(!a(_,D)||!u&&"string"!=typeof _[D]){var x="Symbol."+D;_[D]=u&&a(m,D)?m[D]:h&&b?b(x):C(x)}return _[D]}},function(g,o,t){var e=t(242);g.exports=function(s,a,l){var u=null==s?void 0:e(s,a);return void 0===u?l:u}},function(g,o,t){g.exports=t(840)},function(g,o){g.exports=function(t){return"function"==typeof t}},function(g,o,t){var e=t(34);g.exports=function(s){return e[s+"Prototype"]}},function(g,o,t){var e=t(41);g.exports=function(s){return"object"==typeof s?null!==s:e(s)}},function(g,o,t){var e=t(27),s=t(62),a=e({}.hasOwnProperty);g.exports=Object.hasOwn||function(l,u){return a(s(l),u)}},function(g,o,t){var e=t(34),s=t(44),a=t(223),l=t(63).f;g.exports=function(u){var h=e.Symbol||(e.Symbol={});s(h,u)||l(h,u,{value:a.f(u)})}},function(g,o,t){"use strict";t.r(o),t.d(o,"UPDATE_SPEC",function(){return er}),t.d(o,"UPDATE_URL",function(){return Mn}),t.d(o,"UPDATE_JSON",function(){return Ht}),t.d(o,"UPDATE_PARAM",function(){return tr}),t.d(o,"UPDATE_EMPTY_PARAM_INCLUSION",function(){return Yn}),t.d(o,"VALIDATE_PARAMS",function(){return Cn}),t.d(o,"SET_RESPONSE",function(){return Kt}),t.d(o,"SET_REQUEST",function(){return dn}),t.d(o,"SET_MUTATED_REQUEST",function(){return Kn}),t.d(o,"LOG_REQUEST",function(){return qn}),t.d(o,"CLEAR_RESPONSE",function(){return Sn}),t.d(o,"CLEAR_REQUEST",function(){return $n}),t.d(o,"CLEAR_VALIDATE_PARAMS",function(){return En}),t.d(o,"UPDATE_OPERATION_META_VALUE",function(){return Fn}),t.d(o,"UPDATE_RESOLVED",function(){return Dn}),t.d(o,"UPDATE_RESOLVED_SUBTREE",function(){return mn}),t.d(o,"SET_SCHEME",function(){return jn}),t.d(o,"updateSpec",function(){return Xt}),t.d(o,"updateResolved",function(){return ut}),t.d(o,"updateUrl",function(){return mt}),t.d(o,"updateJsonSpec",function(){return Tt}),t.d(o,"parseToJson",function(){return yn}),t.d(o,"resolveSpec",function(){return jt}),t.d(o,"requestResolvedSubtree",function(){return Ir}),t.d(o,"changeParam",function(){return ht}),t.d(o,"changeParamByIdentity",function(){return L}),t.d(o,"updateResolvedSubtree",function(){return Ue}),t.d(o,"invalidateResolvedSubtreeCache",function(){return nt}),t.d(o,"validateParams",function(){return at}),t.d(o,"updateEmptyParamInclusion",function(){return it}),t.d(o,"clearValidateParams",function(){return Pt}),t.d(o,"changeConsumesValue",function(){return Ut}),t.d(o,"changeProducesValue",function(){return ot}),t.d(o,"setResponse",function(){return Nn}),t.d(o,"setRequest",function(){return sn}),t.d(o,"setMutatedRequest",function(){return An}),t.d(o,"logRequest",function(){return Bn}),t.d(o,"executeRequest",function(){return ir}),t.d(o,"execute",function(){return mr}),t.d(o,"clearResponse",function(){return _r}),t.d(o,"clearRequest",function(){return Nr}),t.d(o,"setScheme",function(){return br});var e=t(25),s=t.n(e),a=t(54),l=t.n(a),u=t(72),h=t.n(u),_=t(19),m=t.n(_),b=t(40),C=t.n(b),D=t(24),x=t.n(D),j=t(4),H=t.n(j),z=t(319),U=t.n(z),M=t(30),I=t.n(M),J=t(197),Y=t.n(J),ie=t(66),oe=t.n(ie),fe=t(12),ne=t.n(fe),he=t(198),ce=t.n(he),Ae=t(18),Me=t.n(Ae),Oe=t(23),be=t.n(Oe),ue=t(2),He=t.n(ue),$e=t(15),F=t.n($e),je=t(21),Et=t.n(je),lt=t(320),nn=t.n(lt),St=t(70),At=t(1),Qe=t(89),It=t.n(Qe),ae=t(141),Ie=t(457),dt=t.n(Ie),Jt=t(458),zt=t.n(Jt),ln=t(321),ar=t.n(ln),Ln=t(5),Rn=["path","method"],er="spec_update_spec",Mn="spec_update_url",Ht="spec_update_json",tr="spec_update_param",Yn="spec_update_empty_param_inclusion",Cn="spec_validate_param",Kt="spec_set_response",dn="spec_set_request",Kn="spec_set_mutated_request",qn="spec_log_request",Sn="spec_clear_response",$n="spec_clear_request",En="spec_clear_validate_param",Fn="spec_update_operation_meta_value",Dn="spec_update_resolved",mn="spec_update_resolved_subtree",jn="set_scheme";function Xt(Jn){var nr,Mr=(nr=Jn,dt()(nr)?nr:"").replace(/\t/g,"  ");if("string"==typeof Jn)return{type:er,payload:Mr}}function ut(Jn){return{type:Dn,payload:Jn}}function mt(Jn){return{type:Mn,payload:Jn}}function Tt(Jn){return{type:Ht,payload:Jn}}var yn=function(Jn){return function(nr){var Mr=nr.specActions,Ii=nr.errActions,Mi=nr.specSelectors.specStr,Oi=null;try{Jn=Jn||Mi(),Ii.clear({source:"parser"}),Oi=St.a.load(Jn)}catch(Kr){return console.error(Kr),Ii.newSpecErr({source:"parser",level:"error",message:Kr.reason,line:Kr.mark&&Kr.mark.line?Kr.mark.line+1:void 0})}return Oi&&"object"===m()(Oi)?Mr.updateJsonSpec(Oi):{}}},et=!1,jt=function(Jn,nr){return function(Mr){var yi=Mr.specActions,Ii=Mr.specSelectors,Mi=Mr.errActions,Oi=Mr.fn,Kr=Oi.fetch,ei=Oi.resolve,di=Oi.AST,se=void 0===di?{}:di,ct=Mr.getConfigs;et||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),et=!0);var Ke=ct(),Xe=Ke.modelPropertyMacro,Vt=Ke.parameterMacro,Ct=Ke.requestInterceptor,rt=Ke.responseInterceptor;void 0===Jn&&(Jn=Ii.specJson()),void 0===nr&&(nr=Ii.url());var bt=se.getLineNumberForPath?se.getLineNumberForPath:function(){},We=Ii.specStr();return ei({fetch:Kr,spec:Jn,baseDoc:nr,modelPropertyMacro:Xe,parameterMacro:Vt,requestInterceptor:Ct,responseInterceptor:rt}).then(function($t){var or=$t.spec,Zn=$t.errors;if(Mi.clear({type:"thrown"}),x()(Zn)&&Zn.length>0){var Vr=H()(Zn).call(Zn,function(Cr){return console.error(Cr),Cr.line=Cr.fullPath?bt(We,Cr.fullPath):null,Cr.path=Cr.fullPath?Cr.fullPath.join("."):null,Cr.level="error",Cr.type="thrown",Cr.source="resolver",U()(Cr,"message",{enumerable:!0,value:Cr.message}),Cr});Mi.newThrownErrBatch(Vr)}return yi.updateResolved(or)})}},hn=[],Qn=zt()(h()(C.a.mark(function Jn(){var nr,Mr,yi,Ii,Mi,Oi,Kr,ei,di,se,ct,Ke,Xe,Vt,Ct,rt,bt,We;return C.a.wrap(function($t){for(;;)switch($t.prev=$t.next){case 0:if(nr=hn.system){$t.next=4;break}return console.error("debResolveSubtrees: don't have a system to operate on, aborting."),$t.abrupt("return");case 4:if(Mr=nr.errActions,yi=nr.errSelectors,Oi=(Ii=nr.fn).fetch,ei=void 0===(Kr=Ii.AST)?{}:Kr,di=nr.specSelectors,se=nr.specActions,Mi=Ii.resolveSubtree){$t.next=8;break}return console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing."),$t.abrupt("return");case 8:return ct=ei.getLineNumberForPath?ei.getLineNumberForPath:function(){},Ke=di.specStr(),Xe=nr.getConfigs(),Vt=Xe.modelPropertyMacro,Ct=Xe.parameterMacro,rt=Xe.requestInterceptor,bt=Xe.responseInterceptor,$t.prev=11,$t.next=14,I()(hn).call(hn,function(){var or=h()(C.a.mark(function Zn(Vr,Cr){var ai,Dr,Qr,rn,fi,Ei,wi,go,Fi;return C.a.wrap(function(no){for(;;)switch(no.prev=no.next){case 0:return no.next=2,Vr;case 2:return Dr=(ai=no.sent).resultMap,Qr=ai.specWithCurrentSubtrees,no.next=7,Mi(Qr,Cr,{baseDoc:di.url(),modelPropertyMacro:Vt,parameterMacro:Ct,requestInterceptor:rt,responseInterceptor:bt});case 7:if(fi=(rn=no.sent).errors,Ei=rn.spec,yi.allErrors().size&&Mr.clearBy(function(Ji){var qi;return"thrown"!==Ji.get("type")||"resolver"!==Ji.get("source")||!Y()(qi=Ji.get("fullPath")).call(qi,function(to,zi){return to===Cr[zi]||void 0===Cr[zi]})}),x()(fi)&&fi.length>0&&(wi=H()(fi).call(fi,function(Ji){return Ji.line=Ji.fullPath?ct(Ke,Ji.fullPath):null,Ji.path=Ji.fullPath?Ji.fullPath.join("."):null,Ji.level="error",Ji.type="thrown",Ji.source="resolver",U()(Ji,"message",{enumerable:!0,value:Ji.message}),Ji}),Mr.newThrownErrBatch(wi)),!Ei||!di.isOAS3()||"components"!==Cr[0]||"securitySchemes"!==Cr[1]){no.next=15;break}return no.next=15,oe.a.all(H()(go=ne()(Fi=ce()(Ei)).call(Fi,function(Ji){return"openIdConnect"===Ji.type})).call(go,function(){var Ji=h()(C.a.mark(function qi(to){var zi,Go;return C.a.wrap(function(Ro){for(;;)switch(Ro.prev=Ro.next){case 0:return zi={url:to.openIdConnectUrl,requestInterceptor:rt,responseInterceptor:bt},Ro.prev=1,Ro.next=4,Oi(zi);case 4:(Go=Ro.sent)instanceof Error||Go.status>=400?console.error(Go.statusText+" "+zi.url):to.openIdConnectData=JSON.parse(Go.text),Ro.next=11;break;case 8:Ro.prev=8,Ro.t0=Ro.catch(1),console.error(Ro.t0);case 11:case"end":return Ro.stop()}},qi,null,[[1,8]])}));return function(qi){return Ji.apply(this,arguments)}}()));case 15:return ar()(Dr,Cr,Ei),ar()(Qr,Cr,Ei),no.abrupt("return",{resultMap:Dr,specWithCurrentSubtrees:Qr});case 18:case"end":return no.stop()}},Zn)}));return function(Zn,Vr){return or.apply(this,arguments)}}(),oe.a.resolve({resultMap:(di.specResolvedSubtree([])||Object(At.Map)()).toJS(),specWithCurrentSubtrees:di.specJson().toJS()}));case 14:We=$t.sent,delete hn.system,hn=[],$t.next=22;break;case 19:$t.prev=19,$t.t0=$t.catch(11),console.error($t.t0);case 22:se.updateResolvedSubtree([],We.resultMap);case 23:case"end":return $t.stop()}},Jn,null,[[11,19]])})),35),Ir=function(Jn){return function(nr){var Mr;Me()(Mr=H()(hn).call(hn,function(yi){return yi.join("@@")})).call(Mr,Jn.join("@@"))>-1||(hn.push(Jn),hn.system=nr,Qn())}};function ht(Jn,nr,Mr,yi,Ii){return{type:tr,payload:{path:Jn,value:yi,paramName:nr,paramIn:Mr,isXml:Ii}}}function L(Jn,nr,Mr,yi){return{type:tr,payload:{path:Jn,param:nr,value:Mr,isXml:yi}}}var Ue=function(Jn,nr){return{type:mn,payload:{path:Jn,value:nr}}},nt=function(){return{type:mn,payload:{path:[],value:Object(At.Map)()}}},at=function(Jn,nr){return{type:Cn,payload:{pathMethod:Jn,isOAS3:nr}}},it=function(Jn,nr,Mr,yi){return{type:Yn,payload:{pathMethod:Jn,paramName:nr,paramIn:Mr,includeEmptyValue:yi}}};function Pt(Jn){return{type:En,payload:{pathMethod:Jn}}}function Ut(Jn,nr){return{type:Fn,payload:{path:Jn,value:nr,key:"consumes_value"}}}function ot(Jn,nr){return{type:Fn,payload:{path:Jn,value:nr,key:"produces_value"}}}var Nn=function(Jn,nr,Mr){return{payload:{path:Jn,method:nr,res:Mr},type:Kt}},sn=function(Jn,nr,Mr){return{payload:{path:Jn,method:nr,req:Mr},type:dn}},An=function(Jn,nr,Mr){return{payload:{path:Jn,method:nr,req:Mr},type:Kn}},Bn=function(Jn){return{payload:Jn,type:qn}},ir=function(Jn){return function(nr){var Mr,yi,Ii=nr.fn,Mi=nr.specActions,Oi=nr.specSelectors,ei=nr.oas3Selectors,di=Jn.pathName,se=Jn.method,ct=Jn.operation,Ke=(0,nr.getConfigs)(),Xe=Ke.requestInterceptor,Vt=Ke.responseInterceptor,Ct=ct.toJS();if(ct&&ct.get("parameters")&&be()(Mr=ne()(yi=ct.get("parameters")).call(yi,function(Qr){return Qr&&!0===Qr.get("allowEmptyValue")})).call(Mr,function(Qr){if(Oi.parameterInclusionSettingFor([di,se],Qr.get("name"),Qr.get("in"))){Jn.parameters=Jn.parameters||{};var rn=Object(Ln.B)(Qr,Jn.parameters);(!rn||rn&&0===rn.size)&&(Jn.parameters[Qr.get("name")]="")}}),Jn.contextUrl=It()(Oi.url()).toString(),Ct&&Ct.operationId?Jn.operationId=Ct.operationId:Ct&&di&&se&&(Jn.operationId=Ii.opId(Ct,di,se)),Oi.isOAS3()){var rt,bt=He()(rt="".concat(di,":")).call(rt,se);Jn.server=ei.selectedServer(bt)||ei.selectedServer();var We=ei.serverVariables({server:Jn.server,namespace:bt}).toJS(),$t=ei.serverVariables({server:Jn.server}).toJS();Jn.serverVariables=F()(We).length?We:$t,Jn.requestContentType=ei.requestContentType(di,se),Jn.responseContentType=ei.responseContentType(di,se)||"*/*";var or,Zn=ei.requestBodyValue(di,se),Vr=ei.requestBodyInclusionSetting(di,se);Jn.requestBody=Zn&&Zn.toJS?ne()(or=H()(Zn).call(Zn,function(Qr){return At.Map.isMap(Qr)?Qr.get("value"):Qr})).call(or,function(Qr,rn){return(x()(Qr)?0!==Qr.length:!Object(Ln.q)(Qr))||Vr.get(rn)}).toJS():Zn}var Cr=Et()({},Jn);Cr=Ii.buildRequest(Cr),Mi.setRequest(Jn.pathName,Jn.method,Cr);var Qr,ai=(Qr=h()(C.a.mark(function rn(fi){var Ei,wi;return C.a.wrap(function(go){for(;;)switch(go.prev=go.next){case 0:return go.next=2,Xe.apply(void 0,[fi]);case 2:return Ei=go.sent,wi=Et()({},Ei),Mi.setMutatedRequest(Jn.pathName,Jn.method,wi),go.abrupt("return",Ei);case 6:case"end":return go.stop()}},rn)})),function(rn){return Qr.apply(this,arguments)});Jn.requestInterceptor=ai,Jn.responseInterceptor=Vt;var Dr=nn()();return Ii.execute(Jn).then(function(Qr){Qr.duration=nn()()-Dr,Mi.setResponse(Jn.pathName,Jn.method,Qr)}).catch(function(Qr){"Failed to fetch"===Qr.message&&(Qr.name="",Qr.message='**Failed to fetch.**  \n**Possible Reasons:** \n  - CORS \n  - Network Failure \n  - URL scheme must be "http" or "https" for CORS request.'),Mi.setResponse(Jn.pathName,Jn.method,{error:!0,err:Object(ae.serializeError)(Qr)})})}},mr=function(){var Jn=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},nr=Jn.path,Mr=Jn.method,yi=l()(Jn,Rn);return function(Ii){var Mi=Ii.fn.fetch,Oi=Ii.specSelectors,Kr=Ii.specActions,ei=Oi.specJsonWithResolvedSubtrees().toJS(),di=Oi.operationScheme(nr,Mr),se=Oi.contentTypeValues([nr,Mr]).toJS(),ct=se.requestContentType,Ke=se.responseContentType,Xe=/xml/i.test(ct),Vt=Oi.parameterValues([nr,Mr],Xe).toJS();return Kr.executeRequest(s()(s()({},yi),{},{fetch:Mi,spec:ei,pathName:nr,method:Mr,parameters:Vt,requestContentType:ct,scheme:di,responseContentType:Ke}))}};function _r(Jn,nr){return{type:Sn,payload:{path:Jn,method:nr}}}function Nr(Jn,nr){return{type:$n,payload:{path:Jn,method:nr}}}function br(Jn,nr,Mr){return{type:jn,payload:{scheme:Jn,path:nr,method:Mr}}}},function(g,o,t){var e;!function(){"use strict";var s={}.hasOwnProperty;function a(){for(var l=[],u=0;u<arguments.length;u++){var h=arguments[u];if(h){var _=typeof h;if("string"===_||"number"===_)l.push(h);else if(Array.isArray(h)){if(h.length){var m=a.apply(null,h);m&&l.push(m)}}else if("object"===_)if(h.toString===Object.prototype.toString)for(var b in h)s.call(h,b)&&h[b]&&l.push(b);else l.push(h.toString())}}return l.join(" ")}g.exports?(a.default=a,g.exports=a):void 0===(e=function(){return a}.apply(o,[]))||(g.exports=e)}()},function(g,o,t){var e=t(33);g.exports=!e(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(g,o,t){var e=t(166),s=t(238),a=t(237),l=t(187);g.exports=function(u,h){var _=void 0!==e&&s(u)||u["@@iterator"];if(!_){if(a(u)||(_=l(u))||h&&u&&"number"==typeof u.length){_&&(u=_);var m=0,b=function(){};return{s:b,n:function(){return m>=u.length?{done:!0}:{done:!1,value:u[m++]}},e:function(j){throw j},f:b}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var C,D=!0,x=!1;return{s:function(){_=_.call(u)},n:function(){var j=_.next();return D=j.done,j},e:function(j){x=!0,C=j},f:function(){try{D||null==_.return||_.return()}finally{if(x)throw C}}}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){var t=Function.prototype.call;g.exports=t.bind?t.bind(t):function(){return t.apply(t,arguments)}},function(g,o,t){var e=t(17),s=t(43),a=e.String,l=e.TypeError;g.exports=function(u){if(s(u))return u;throw l(a(u)+" is not an object")}},function(g,o){g.exports=Array.isArray},function(g,o){g.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(g,o,t){var e=t(421),s=t(423),a=t(820);g.exports=function(l,u){if(null==l)return{};var h,_,m=a(l,u);if(e){var b=e(l);for(_=0;_<b.length;_++)h=b[_],s(u).call(u,h)>=0||Object.prototype.propertyIsEnumerable.call(l,h)&&(m[h]=l[h])}return m},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){"use strict";t.r(o),t.d(o,"UPDATE_SELECTED_SERVER",function(){return e}),t.d(o,"UPDATE_REQUEST_BODY_VALUE",function(){return s}),t.d(o,"UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG",function(){return a}),t.d(o,"UPDATE_REQUEST_BODY_INCLUSION",function(){return l}),t.d(o,"UPDATE_ACTIVE_EXAMPLES_MEMBER",function(){return u}),t.d(o,"UPDATE_REQUEST_CONTENT_TYPE",function(){return h}),t.d(o,"UPDATE_RESPONSE_CONTENT_TYPE",function(){return _}),t.d(o,"UPDATE_SERVER_VARIABLE_VALUE",function(){return m}),t.d(o,"SET_REQUEST_BODY_VALIDATE_ERROR",function(){return b}),t.d(o,"CLEAR_REQUEST_BODY_VALIDATE_ERROR",function(){return C}),t.d(o,"CLEAR_REQUEST_BODY_VALUE",function(){return D}),t.d(o,"setSelectedServer",function(){return x}),t.d(o,"setRequestBodyValue",function(){return j}),t.d(o,"setRetainRequestBodyValueFlag",function(){return H}),t.d(o,"setRequestBodyInclusion",function(){return z}),t.d(o,"setActiveExamplesMember",function(){return U}),t.d(o,"setRequestContentType",function(){return M}),t.d(o,"setResponseContentType",function(){return I}),t.d(o,"setServerVariableValue",function(){return J}),t.d(o,"setRequestBodyValidateError",function(){return Y}),t.d(o,"clearRequestBodyValidateError",function(){return ie}),t.d(o,"initRequestBodyValidateError",function(){return oe}),t.d(o,"clearRequestBodyValue",function(){return fe});var e="oas3_set_servers",s="oas3_set_request_body_value",a="oas3_set_request_body_retain_flag",l="oas3_set_request_body_inclusion",u="oas3_set_active_examples_member",h="oas3_set_request_content_type",_="oas3_set_response_content_type",m="oas3_set_server_variable_value",b="oas3_set_request_body_validate_error",C="oas3_clear_request_body_validate_error",D="oas3_clear_request_body_value";function x(ne,he){return{type:e,payload:{selectedServerUrl:ne,namespace:he}}}function j(ne){return{type:s,payload:{value:ne.value,pathMethod:ne.pathMethod}}}var H=function(ne){return{type:a,payload:{value:ne.value,pathMethod:ne.pathMethod}}};function z(ne){return{type:l,payload:{value:ne.value,pathMethod:ne.pathMethod,name:ne.name}}}function U(ne){return{type:u,payload:{name:ne.name,pathMethod:ne.pathMethod,contextType:ne.contextType,contextName:ne.contextName}}}function M(ne){return{type:h,payload:{value:ne.value,pathMethod:ne.pathMethod}}}function I(ne){return{type:_,payload:{value:ne.value,path:ne.path,method:ne.method}}}function J(ne){return{type:m,payload:{server:ne.server,namespace:ne.namespace,key:ne.key,val:ne.val}}}var Y=function(ne){return{type:b,payload:{path:ne.path,method:ne.method,validationErrors:ne.validationErrors}}},ie=function(ne){return{type:C,payload:{path:ne.path,method:ne.method}}},oe=function(ne){var he=ne.pathMethod;return{type:C,payload:{path:he[0],method:he[1]}}},fe=function(ne){return{type:D,payload:{pathMethod:ne.pathMethod}}}},function(g,o,t){g.exports=t(647)},function(g,o){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}g.exports=t},function(g,o,t){var e=t(34),s=t(17),a=t(41),l=function(u){return a(u)?u:void 0};g.exports=function(u,h){return arguments.length<2?l(e[u])||l(s[u]):e[u]&&e[u][h]||s[u]&&s[u][h]}},function(g,o,t){"use strict";t.d(o,"b",function(){return j}),t.d(o,"e",function(){return H}),t.d(o,"c",function(){return U}),t.d(o,"a",function(){return M}),t.d(o,"d",function(){return I});var e=t(49),s=t.n(e),a=t(19),l=t.n(a),u=t(108),h=t.n(u),_=t(2),m=t.n(_),b=t(53),C=t.n(b),D=function(J){return String.prototype.toLowerCase.call(J)},x=function(J){return J.replace(/[^\w]/gi,"_")};function j(J){var Y=J.openapi;return!!Y&&h()(Y).call(Y,"3")}function H(J,Y){var ie=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",oe=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},fe=oe.v2OperationIdCompatibilityMode;if(!J||"object"!==l()(J))return null;var ne=(J.operationId||"").replace(/\s/g,"");return ne.length?x(J.operationId):z(Y,ie,{v2OperationIdCompatibilityMode:fe})}function z(J,Y){var ie,oe=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},fe=oe.v2OperationIdCompatibilityMode;if(fe){var ne,he,ce=m()(ne="".concat(Y.toLowerCase(),"_")).call(ne,J).replace(/[\s!@#$%^&*()_+=[{\]};:<>|./?,\\'""-]/g,"_");return(ce=ce||m()(he="".concat(J.substring(1),"_")).call(he,Y)).replace(/((_){2,})/g,"_").replace(/^(_)*/g,"").replace(/([_])*$/g,"")}return m()(ie="".concat(D(Y))).call(ie,x(J))}function U(J,Y){var ie;return m()(ie="".concat(D(Y),"-")).call(ie,J)}function M(J,Y){return J&&J.paths&&function(fe,ne,he){if(!fe||"object"!==l()(fe)||!fe.paths||"object"!==l()(fe.paths))return null;var ce=fe.paths;for(var Ae in ce)for(var Me in ce[Ae])if("PARAMETERS"!==Me.toUpperCase()){var Oe=ce[Ae][Me];if(Oe&&"object"===l()(Oe)){var be={spec:fe,pathName:Ae,method:Me.toUpperCase(),operation:Oe};if(ne(be))return be}}}(J,function(ie){var oe=ie.pathName,fe=ie.method,ne=ie.operation;if(!ne||"object"!==l()(ne))return!1;var he=ne.operationId;return[H(ne,oe,fe),U(oe,fe),he].some(function(ce){return ce&&ce===Y})})||null}function I(J){var Y=J.spec,ie=Y.paths,oe={};if(!ie||Y.$$normalized)return J;for(var fe in ie){var ne=ie[fe];if(C()(ne)){var he=ne.parameters,ce=function(Me){var Oe=ne[Me];if(!C()(Oe))return"continue";var be=H(Oe,fe,Me);if(be){oe[be]?oe[be].push(Oe):oe[be]=[Oe];var ue=oe[be];if(ue.length>1)ue.forEach(function(ae,Ie){var dt;ae.__originalOperationId=ae.__originalOperationId||ae.operationId,ae.operationId=m()(dt="".concat(be)).call(dt,Ie+1)});else if(void 0!==Oe.operationId){var He=ue[0];He.__originalOperationId=He.__originalOperationId||Oe.operationId,He.operationId=be}}if("parameters"!==Me){var $e=[],F={};for(var je in Y)"produces"!==je&&"consumes"!==je&&"security"!==je||(F[je]=Y[je],$e.push(F));if(he&&(F.parameters=he,$e.push(F)),$e.length){var Et,lt=s()($e);try{for(lt.s();!(Et=lt.n()).done;){var nn=Et.value;for(var St in nn)if(Oe[St]){if("parameters"===St){var At,Qe=s()(nn[St]);try{var It=function(){var ae=At.value;Oe[St].some(function(Ie){return Ie.name&&Ie.name===ae.name||Ie.$ref&&Ie.$ref===ae.$ref||Ie.$$ref&&Ie.$$ref===ae.$$ref||Ie===ae})||Oe[St].push(ae)};for(Qe.s();!(At=Qe.n()).done;)It()}catch(ae){Qe.e(ae)}finally{Qe.f()}}}else Oe[St]=nn[St]}}catch(ae){lt.e(ae)}finally{lt.f()}}}};for(var Ae in ne)ce(Ae)}}return Y.$$normalized=!0,J}},function(g,o,t){"use strict";t.r(o),t.d(o,"NEW_THROWN_ERR",function(){return s}),t.d(o,"NEW_THROWN_ERR_BATCH",function(){return a}),t.d(o,"NEW_SPEC_ERR",function(){return l}),t.d(o,"NEW_SPEC_ERR_BATCH",function(){return u}),t.d(o,"NEW_AUTH_ERR",function(){return h}),t.d(o,"CLEAR",function(){return _}),t.d(o,"CLEAR_BY",function(){return m}),t.d(o,"newThrownErr",function(){return b}),t.d(o,"newThrownErrBatch",function(){return C}),t.d(o,"newSpecErr",function(){return D}),t.d(o,"newSpecErrBatch",function(){return x}),t.d(o,"newAuthErr",function(){return j}),t.d(o,"clear",function(){return H}),t.d(o,"clearBy",function(){return z});var e=t(141),s="err_new_thrown_err",a="err_new_thrown_err_batch",l="err_new_spec_err",u="err_new_spec_err_batch",h="err_new_auth_err",_="err_clear",m="err_clear_by";function b(U){return{type:s,payload:Object(e.serializeError)(U)}}function C(U){return{type:a,payload:U}}function D(U){return{type:l,payload:U}}function x(U){return{type:u,payload:U}}function j(U){return{type:h,payload:U}}function H(){var U=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:_,payload:U}}function z(){var U=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!0};return{type:m,payload:U}}},function(g,o,t){var e=t(168),s=t(113);g.exports=function(a){return e(s(a))}},function(g,o,t){var e=t(17),s=t(113),a=e.Object;g.exports=function(l){return a(s(l))}},function(g,o,t){var e=t(17),s=t(48),a=t(330),l=t(51),u=t(169),h=e.TypeError,_=Object.defineProperty;o.f=s?_:function(m,b,C){if(l(m),b=u(b),l(C),a)try{return _(m,b,C)}catch(D){}if("get"in C||"set"in C)throw h("Accessors not supported");return"value"in C&&(m[b]=C.value),m}},function(g,o){g.exports="function"==typeof Object.create?function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:function(t,e){if(e){t.super_=e;var s=function(){};s.prototype=e.prototype,t.prototype=new s,t.prototype.constructor=t}}},function(g,o,t){var e=t(132),s=e.Buffer;function a(u,h){for(var _ in u)h[_]=u[_]}function l(u,h,_){return s(u,h,_)}s.from&&s.alloc&&s.allocUnsafe&&s.allocUnsafeSlow?g.exports=e:(a(e,o),o.Buffer=l),a(s,l),l.from=function(u,h,_){if("number"==typeof u)throw new TypeError("Argument must not be a number");return s(u,h,_)},l.alloc=function(u,h,_){if("number"!=typeof u)throw new TypeError("Argument must be a number");var m=s(u);return void 0!==h?"string"==typeof _?m.fill(h,_):m.fill(h):m.fill(0),m},l.allocUnsafe=function(u){if("number"!=typeof u)throw new TypeError("Argument must be a number");return s(u)},l.allocUnsafeSlow=function(u){if("number"!=typeof u)throw new TypeError("Argument must be a number");return e.SlowBuffer(u)}},function(g,o,t){g.exports=t(424)},function(g,o,t){var e=t(17),s=t(75),a=e.String;g.exports=function(l){if("Symbol"===s(l))throw TypeError("Cannot convert a Symbol value to a string");return a(l)}},function(g,o,t){t(77);var e=t(507),s=t(17),a=t(75),l=t(85),u=t(130),h=t(38)("toStringTag");for(var _ in e){var m=s[_],b=m&&m.prototype;b&&a(b)!==h&&l(b,h,_),u[_]=u.Array}},function(g,o,t){var e=t(355),s="object"==typeof self&&self&&self.Object===Object&&self,a=e||s||Function("return this")();g.exports=a},function(g,o,t){"use strict";function e(se){return null==se}var s={isNothing:e,isObject:function(se){return"object"==typeof se&&null!==se},toArray:function(se){return Array.isArray(se)?se:e(se)?[]:[se]},repeat:function(se,ct){var Ke,Xe="";for(Ke=0;Ke<ct;Ke+=1)Xe+=se;return Xe},isNegativeZero:function(se){return 0===se&&Number.NEGATIVE_INFINITY===1/se},extend:function(se,ct){var Ke,Xe,Vt,Ct;if(ct)for(Ke=0,Xe=(Ct=Object.keys(ct)).length;Ke<Xe;Ke+=1)se[Vt=Ct[Ke]]=ct[Vt];return se}};function a(se,ct){var Ke="",Xe=se.reason||"(unknown reason)";return se.mark?(se.mark.name&&(Ke+='in "'+se.mark.name+'" '),Ke+="("+(se.mark.line+1)+":"+(se.mark.column+1)+")",!ct&&se.mark.snippet&&(Ke+="\n\n"+se.mark.snippet),Xe+" "+Ke):Xe}function l(se,ct){Error.call(this),this.name="YAMLException",this.reason=se,this.mark=ct,this.message=a(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}(l.prototype=Object.create(Error.prototype)).constructor=l,l.prototype.toString=function(se){return this.name+": "+a(this,se)};var u=l;function h(se,ct,Ke,Xe,Vt){var Ct="",rt="",bt=Math.floor(Vt/2)-1;return Xe-ct>bt&&(ct=Xe-bt+(Ct=" ... ").length),Ke-Xe>bt&&(Ke=Xe+bt-(rt=" ...").length),{str:Ct+se.slice(ct,Ke).replace(/\t/g,"\u2192")+rt,pos:Xe-ct+Ct.length}}function _(se,ct){return s.repeat(" ",ct-se.length)+se}var b=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],C=["scalar","sequence","mapping"],D=function(se,ct){if(ct=ct||{},Object.keys(ct).forEach(function(Ke){if(-1===b.indexOf(Ke))throw new u('Unknown option "'+Ke+'" is met in definition of "'+se+'" YAML type.')}),this.options=ct,this.tag=se,this.kind=ct.kind||null,this.resolve=ct.resolve||function(){return!0},this.construct=ct.construct||function(Ke){return Ke},this.instanceOf=ct.instanceOf||null,this.predicate=ct.predicate||null,this.represent=ct.represent||null,this.representName=ct.representName||null,this.defaultStyle=ct.defaultStyle||null,this.multi=ct.multi||!1,this.styleAliases=(Xe={},null!==(Ke=ct.styleAliases||null)&&Object.keys(Ke).forEach(function(Vt){Ke[Vt].forEach(function(Ct){Xe[String(Ct)]=Vt})}),Xe),-1===C.indexOf(this.kind))throw new u('Unknown kind "'+this.kind+'" is specified for "'+se+'" YAML type.');var Ke,Xe};function x(se,ct){var Ke=[];return se[ct].forEach(function(Xe){var Vt=Ke.length;Ke.forEach(function(Ct,rt){Ct.tag===Xe.tag&&Ct.kind===Xe.kind&&Ct.multi===Xe.multi&&(Vt=rt)}),Ke[Vt]=Xe}),Ke}function j(se){return this.extend(se)}j.prototype.extend=function(se){var ct=[],Ke=[];if(se instanceof D)Ke.push(se);else if(Array.isArray(se))Ke=Ke.concat(se);else{if(!se||!Array.isArray(se.implicit)&&!Array.isArray(se.explicit))throw new u("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");se.implicit&&(ct=ct.concat(se.implicit)),se.explicit&&(Ke=Ke.concat(se.explicit))}ct.forEach(function(Vt){if(!(Vt instanceof D))throw new u("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(Vt.loadKind&&"scalar"!==Vt.loadKind)throw new u("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(Vt.multi)throw new u("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),Ke.forEach(function(Vt){if(!(Vt instanceof D))throw new u("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var Xe=Object.create(j.prototype);return Xe.implicit=(this.implicit||[]).concat(ct),Xe.explicit=(this.explicit||[]).concat(Ke),Xe.compiledImplicit=x(Xe,"implicit"),Xe.compiledExplicit=x(Xe,"explicit"),Xe.compiledTypeMap=function(){var Vt,Ct,rt={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function bt(We){We.multi?(rt.multi[We.kind].push(We),rt.multi.fallback.push(We)):rt[We.kind][We.tag]=rt.fallback[We.tag]=We}for(Vt=0,Ct=arguments.length;Vt<Ct;Vt+=1)arguments[Vt].forEach(bt);return rt}(Xe.compiledImplicit,Xe.compiledExplicit),Xe};var H=j,z=new D("tag:yaml.org,2002:str",{kind:"scalar",construct:function(se){return null!==se?se:""}}),U=new D("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(se){return null!==se?se:[]}}),M=new D("tag:yaml.org,2002:map",{kind:"mapping",construct:function(se){return null!==se?se:{}}}),I=new H({explicit:[z,U,M]}),J=new D("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(se){if(null===se)return!0;var ct=se.length;return 1===ct&&"~"===se||4===ct&&("null"===se||"Null"===se||"NULL"===se)},construct:function(){return null},predicate:function(se){return null===se},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"}),Y=new D("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(se){if(null===se)return!1;var ct=se.length;return 4===ct&&("true"===se||"True"===se||"TRUE"===se)||5===ct&&("false"===se||"False"===se||"FALSE"===se)},construct:function(se){return"true"===se||"True"===se||"TRUE"===se},predicate:function(se){return"[object Boolean]"===Object.prototype.toString.call(se)},represent:{lowercase:function(se){return se?"true":"false"},uppercase:function(se){return se?"TRUE":"FALSE"},camelcase:function(se){return se?"True":"False"}},defaultStyle:"lowercase"});function ie(se){return 48<=se&&se<=55}function oe(se){return 48<=se&&se<=57}var fe=new D("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(se){if(null===se)return!1;var ct,Ke,Xe=se.length,Vt=0,Ct=!1;if(!Xe)return!1;if("-"!==(ct=se[Vt])&&"+"!==ct||(ct=se[++Vt]),"0"===ct){if(Vt+1===Xe)return!0;if("b"===(ct=se[++Vt])){for(Vt++;Vt<Xe;Vt++)if("_"!==(ct=se[Vt])){if("0"!==ct&&"1"!==ct)return!1;Ct=!0}return Ct&&"_"!==ct}if("x"===ct){for(Vt++;Vt<Xe;Vt++)if("_"!==(ct=se[Vt])){if(!(48<=(Ke=se.charCodeAt(Vt))&&Ke<=57||65<=Ke&&Ke<=70||97<=Ke&&Ke<=102))return!1;Ct=!0}return Ct&&"_"!==ct}if("o"===ct){for(Vt++;Vt<Xe;Vt++)if("_"!==(ct=se[Vt])){if(!ie(se.charCodeAt(Vt)))return!1;Ct=!0}return Ct&&"_"!==ct}}if("_"===ct)return!1;for(;Vt<Xe;Vt++)if("_"!==(ct=se[Vt])){if(!oe(se.charCodeAt(Vt)))return!1;Ct=!0}return!(!Ct||"_"===ct)},construct:function(se){var ct,Ke=se,Xe=1;if(-1!==Ke.indexOf("_")&&(Ke=Ke.replace(/_/g,"")),"-"!==(ct=Ke[0])&&"+"!==ct||("-"===ct&&(Xe=-1),ct=(Ke=Ke.slice(1))[0]),"0"===Ke)return 0;if("0"===ct){if("b"===Ke[1])return Xe*parseInt(Ke.slice(2),2);if("x"===Ke[1])return Xe*parseInt(Ke.slice(2),16);if("o"===Ke[1])return Xe*parseInt(Ke.slice(2),8)}return Xe*parseInt(Ke,10)},predicate:function(se){return"[object Number]"===Object.prototype.toString.call(se)&&se%1==0&&!s.isNegativeZero(se)},represent:{binary:function(se){return se>=0?"0b"+se.toString(2):"-0b"+se.toString(2).slice(1)},octal:function(se){return se>=0?"0o"+se.toString(8):"-0o"+se.toString(8).slice(1)},decimal:function(se){return se.toString(10)},hexadecimal:function(se){return se>=0?"0x"+se.toString(16).toUpperCase():"-0x"+se.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ne=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),he=/^[-+]?[0-9]+e/,ce=new D("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(se){return null!==se&&!(!ne.test(se)||"_"===se[se.length-1])},construct:function(se){var ct,Ke;return Ke="-"===(ct=se.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(ct[0])>=0&&(ct=ct.slice(1)),".inf"===ct?1===Ke?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===ct?NaN:Ke*parseFloat(ct,10)},predicate:function(se){return"[object Number]"===Object.prototype.toString.call(se)&&(se%1!=0||s.isNegativeZero(se))},represent:function(se,ct){var Ke;if(isNaN(se))switch(ct){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===se)switch(ct){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===se)switch(ct){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(se))return"-0.0";return Ke=se.toString(10),he.test(Ke)?Ke.replace("e",".e"):Ke},defaultStyle:"lowercase"}),Ae=I.extend({implicit:[J,Y,fe,ce]}),Me=Ae,Oe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),be=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),ue=new D("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(se){return null!==se&&(null!==Oe.exec(se)||null!==be.exec(se))},construct:function(se){var ct,Ke,Xe,Vt,Ct,rt,bt,We,$t=0,or=null;if(null===(ct=Oe.exec(se))&&(ct=be.exec(se)),null===ct)throw new Error("Date resolve error");if(Ke=+ct[1],Xe=+ct[2]-1,Vt=+ct[3],!ct[4])return new Date(Date.UTC(Ke,Xe,Vt));if(Ct=+ct[4],rt=+ct[5],bt=+ct[6],ct[7]){for($t=ct[7].slice(0,3);$t.length<3;)$t+="0";$t=+$t}return ct[9]&&(or=6e4*(60*+ct[10]+ +(ct[11]||0)),"-"===ct[9]&&(or=-or)),We=new Date(Date.UTC(Ke,Xe,Vt,Ct,rt,bt,$t)),or&&We.setTime(We.getTime()-or),We},instanceOf:Date,represent:function(se){return se.toISOString()}}),He=new D("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(se){return"<<"===se||null===se}}),$e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",F=new D("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(se){if(null===se)return!1;var ct,Ke,Xe=0,Vt=se.length,Ct=$e;for(Ke=0;Ke<Vt;Ke++)if(!((ct=Ct.indexOf(se.charAt(Ke)))>64)){if(ct<0)return!1;Xe+=6}return Xe%8==0},construct:function(se){var ct,Ke,Xe=se.replace(/[\r\n=]/g,""),Vt=Xe.length,Ct=$e,rt=0,bt=[];for(ct=0;ct<Vt;ct++)ct%4==0&&ct&&(bt.push(rt>>16&255),bt.push(rt>>8&255),bt.push(255&rt)),rt=rt<<6|Ct.indexOf(Xe.charAt(ct));return 0==(Ke=Vt%4*6)?(bt.push(rt>>16&255),bt.push(rt>>8&255),bt.push(255&rt)):18===Ke?(bt.push(rt>>10&255),bt.push(rt>>2&255)):12===Ke&&bt.push(rt>>4&255),new Uint8Array(bt)},predicate:function(se){return"[object Uint8Array]"===Object.prototype.toString.call(se)},represent:function(se){var ct,Ke,Xe="",Vt=0,Ct=se.length,rt=$e;for(ct=0;ct<Ct;ct++)ct%3==0&&ct&&(Xe+=rt[Vt>>18&63],Xe+=rt[Vt>>12&63],Xe+=rt[Vt>>6&63],Xe+=rt[63&Vt]),Vt=(Vt<<8)+se[ct];return 0==(Ke=Ct%3)?(Xe+=rt[Vt>>18&63],Xe+=rt[Vt>>12&63],Xe+=rt[Vt>>6&63],Xe+=rt[63&Vt]):2===Ke?(Xe+=rt[Vt>>10&63],Xe+=rt[Vt>>4&63],Xe+=rt[Vt<<2&63],Xe+=rt[64]):1===Ke&&(Xe+=rt[Vt>>2&63],Xe+=rt[Vt<<4&63],Xe+=rt[64],Xe+=rt[64]),Xe}}),je=Object.prototype.hasOwnProperty,Et=Object.prototype.toString,lt=new D("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(se){if(null===se)return!0;var ct,Ke,Xe,Vt,Ct,rt=[],bt=se;for(ct=0,Ke=bt.length;ct<Ke;ct+=1){if(Ct=!1,"[object Object]"!==Et.call(Xe=bt[ct]))return!1;for(Vt in Xe)if(je.call(Xe,Vt)){if(Ct)return!1;Ct=!0}if(!Ct||-1!==rt.indexOf(Vt))return!1;rt.push(Vt)}return!0},construct:function(se){return null!==se?se:[]}}),nn=Object.prototype.toString,St=new D("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(se){if(null===se)return!0;var ct,Ke,Xe,Vt,Ct,rt=se;for(Ct=new Array(rt.length),ct=0,Ke=rt.length;ct<Ke;ct+=1){if("[object Object]"!==nn.call(Xe=rt[ct])||1!==(Vt=Object.keys(Xe)).length)return!1;Ct[ct]=[Vt[0],Xe[Vt[0]]]}return!0},construct:function(se){if(null===se)return[];var ct,Ke,Xe,Vt,Ct,rt=se;for(Ct=new Array(rt.length),ct=0,Ke=rt.length;ct<Ke;ct+=1)Xe=rt[ct],Vt=Object.keys(Xe),Ct[ct]=[Vt[0],Xe[Vt[0]]];return Ct}}),At=Object.prototype.hasOwnProperty,Qe=new D("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(se){if(null===se)return!0;var ct,Ke=se;for(ct in Ke)if(At.call(Ke,ct)&&null!==Ke[ct])return!1;return!0},construct:function(se){return null!==se?se:{}}}),It=Me.extend({implicit:[ue,He],explicit:[F,lt,St,Qe]}),ae=Object.prototype.hasOwnProperty,Ie=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,dt=/[\x85\u2028\u2029]/,Jt=/[,\[\]\{\}]/,zt=/^(?:!|!!|![a-z\-]+!)$/i,ln=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function ar(se){return Object.prototype.toString.call(se)}function Ln(se){return 10===se||13===se}function Rn(se){return 9===se||32===se}function er(se){return 9===se||32===se||10===se||13===se}function Mn(se){return 44===se||91===se||93===se||123===se||125===se}function Ht(se){var ct;return 48<=se&&se<=57?se-48:97<=(ct=32|se)&&ct<=102?ct-97+10:-1}function tr(se){return 48===se?"\0":97===se?"\x07":98===se?"\b":116===se||9===se?"\t":110===se?"\n":118===se?"\v":102===se?"\f":114===se?"\r":101===se?"\x1b":32===se?" ":34===se?'"':47===se?"/":92===se?"\\":78===se?"\x85":95===se?"\xa0":76===se?"\u2028":80===se?"\u2029":""}function Yn(se){return se<=65535?String.fromCharCode(se):String.fromCharCode(55296+(se-65536>>10),56320+(se-65536&1023))}for(var Cn=new Array(256),Kt=new Array(256),dn=0;dn<256;dn++)Cn[dn]=tr(dn)?1:0,Kt[dn]=tr(dn);function Kn(se,ct){this.input=se,this.filename=ct.filename||null,this.schema=ct.schema||It,this.onWarning=ct.onWarning||null,this.legacy=ct.legacy||!1,this.json=ct.json||!1,this.listener=ct.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=se.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function qn(se,ct){var Ke={name:se.filename,buffer:se.input.slice(0,-1),position:se.position,line:se.line,column:se.position-se.lineStart};return Ke.snippet=function(se,ct){if(ct=Object.create(ct||null),!se.buffer)return null;ct.maxLength||(ct.maxLength=79),"number"!=typeof ct.indent&&(ct.indent=1),"number"!=typeof ct.linesBefore&&(ct.linesBefore=3),"number"!=typeof ct.linesAfter&&(ct.linesAfter=2);for(var Ke,Xe=/\r?\n|\r|\0/g,Vt=[0],Ct=[],rt=-1;Ke=Xe.exec(se.buffer);)Ct.push(Ke.index),Vt.push(Ke.index+Ke[0].length),se.position<=Ke.index&&rt<0&&(rt=Vt.length-2);rt<0&&(rt=Vt.length-1);var bt,We,$t="",or=Math.min(se.line+ct.linesAfter,Ct.length).toString().length,Zn=ct.maxLength-(ct.indent+or+3);for(bt=1;bt<=ct.linesBefore&&!(rt-bt<0);bt++)We=h(se.buffer,Vt[rt-bt],Ct[rt-bt],se.position-(Vt[rt]-Vt[rt-bt]),Zn),$t=s.repeat(" ",ct.indent)+_((se.line-bt+1).toString(),or)+" | "+We.str+"\n"+$t;for(We=h(se.buffer,Vt[rt],Ct[rt],se.position,Zn),$t+=s.repeat(" ",ct.indent)+_((se.line+1).toString(),or)+" | "+We.str+"\n",$t+=s.repeat("-",ct.indent+or+3+We.pos)+"^\n",bt=1;bt<=ct.linesAfter&&!(rt+bt>=Ct.length);bt++)We=h(se.buffer,Vt[rt+bt],Ct[rt+bt],se.position-(Vt[rt]-Vt[rt+bt]),Zn),$t+=s.repeat(" ",ct.indent)+_((se.line+bt+1).toString(),or)+" | "+We.str+"\n";return $t.replace(/\n$/,"")}(Ke),new u(ct,Ke)}function Sn(se,ct){throw qn(se,ct)}function $n(se,ct){se.onWarning&&se.onWarning.call(null,qn(se,ct))}var En={YAML:function(se,ct,Ke){var Xe,Vt,Ct;null!==se.version&&Sn(se,"duplication of %YAML directive"),1!==Ke.length&&Sn(se,"YAML directive accepts exactly one argument"),null===(Xe=/^([0-9]+)\.([0-9]+)$/.exec(Ke[0]))&&Sn(se,"ill-formed argument of the YAML directive"),Vt=parseInt(Xe[1],10),Ct=parseInt(Xe[2],10),1!==Vt&&Sn(se,"unacceptable YAML version of the document"),se.version=Ke[0],se.checkLineBreaks=Ct<2,1!==Ct&&2!==Ct&&$n(se,"unsupported YAML version of the document")},TAG:function(se,ct,Ke){var Xe,Vt;2!==Ke.length&&Sn(se,"TAG directive accepts exactly two arguments"),Vt=Ke[1],zt.test(Xe=Ke[0])||Sn(se,"ill-formed tag handle (first argument) of the TAG directive"),ae.call(se.tagMap,Xe)&&Sn(se,'there is a previously declared suffix for "'+Xe+'" tag handle'),ln.test(Vt)||Sn(se,"ill-formed tag prefix (second argument) of the TAG directive");try{Vt=decodeURIComponent(Vt)}catch(Ct){Sn(se,"tag prefix is malformed: "+Vt)}se.tagMap[Xe]=Vt}};function Fn(se,ct,Ke,Xe){var Vt,Ct,rt,bt;if(ct<Ke){if(bt=se.input.slice(ct,Ke),Xe)for(Vt=0,Ct=bt.length;Vt<Ct;Vt+=1)9===(rt=bt.charCodeAt(Vt))||32<=rt&&rt<=1114111||Sn(se,"expected valid JSON character");else Ie.test(bt)&&Sn(se,"the stream contains non-printable characters");se.result+=bt}}function Dn(se,ct,Ke,Xe){var Vt,Ct,rt,bt;for(s.isObject(Ke)||Sn(se,"cannot merge mappings; the provided source object is unacceptable"),rt=0,bt=(Vt=Object.keys(Ke)).length;rt<bt;rt+=1)ae.call(ct,Ct=Vt[rt])||(ct[Ct]=Ke[Ct],Xe[Ct]=!0)}function mn(se,ct,Ke,Xe,Vt,Ct,rt,bt,We){var $t,or;if(Array.isArray(Vt))for($t=0,or=(Vt=Array.prototype.slice.call(Vt)).length;$t<or;$t+=1)Array.isArray(Vt[$t])&&Sn(se,"nested arrays are not supported inside keys"),"object"==typeof Vt&&"[object Object]"===ar(Vt[$t])&&(Vt[$t]="[object Object]");if("object"==typeof Vt&&"[object Object]"===ar(Vt)&&(Vt="[object Object]"),Vt=String(Vt),null===ct&&(ct={}),"tag:yaml.org,2002:merge"===Xe)if(Array.isArray(Ct))for($t=0,or=Ct.length;$t<or;$t+=1)Dn(se,ct,Ct[$t],Ke);else Dn(se,ct,Ct,Ke);else se.json||ae.call(Ke,Vt)||!ae.call(ct,Vt)||(se.line=rt||se.line,se.lineStart=bt||se.lineStart,se.position=We||se.position,Sn(se,"duplicated mapping key")),"__proto__"===Vt?Object.defineProperty(ct,Vt,{configurable:!0,enumerable:!0,writable:!0,value:Ct}):ct[Vt]=Ct,delete Ke[Vt];return ct}function jn(se){var ct;10===(ct=se.input.charCodeAt(se.position))?se.position++:13===ct?(se.position++,10===se.input.charCodeAt(se.position)&&se.position++):Sn(se,"a line break is expected"),se.line+=1,se.lineStart=se.position,se.firstTabInLine=-1}function Xt(se,ct,Ke){for(var Xe=0,Vt=se.input.charCodeAt(se.position);0!==Vt;){for(;Rn(Vt);)9===Vt&&-1===se.firstTabInLine&&(se.firstTabInLine=se.position),Vt=se.input.charCodeAt(++se.position);if(ct&&35===Vt)do{Vt=se.input.charCodeAt(++se.position)}while(10!==Vt&&13!==Vt&&0!==Vt);if(!Ln(Vt))break;for(jn(se),Vt=se.input.charCodeAt(se.position),Xe++,se.lineIndent=0;32===Vt;)se.lineIndent++,Vt=se.input.charCodeAt(++se.position)}return-1!==Ke&&0!==Xe&&se.lineIndent<Ke&&$n(se,"deficient indentation"),Xe}function ut(se){var ct,Ke=se.position;return!(45!==(ct=se.input.charCodeAt(Ke))&&46!==ct||ct!==se.input.charCodeAt(Ke+1)||ct!==se.input.charCodeAt(Ke+2)||(Ke+=3,0!==(ct=se.input.charCodeAt(Ke))&&!er(ct)))}function mt(se,ct){1===ct?se.result+=" ":ct>1&&(se.result+=s.repeat("\n",ct-1))}function Tt(se,ct){var Ke,Xe,Vt=se.tag,Ct=se.anchor,rt=[],bt=!1;if(-1!==se.firstTabInLine)return!1;for(null!==se.anchor&&(se.anchorMap[se.anchor]=rt),Xe=se.input.charCodeAt(se.position);0!==Xe&&(-1!==se.firstTabInLine&&(se.position=se.firstTabInLine,Sn(se,"tab characters must not be used in indentation")),45===Xe)&&er(se.input.charCodeAt(se.position+1));)if(bt=!0,se.position++,Xt(se,!0,-1)&&se.lineIndent<=ct)rt.push(null),Xe=se.input.charCodeAt(se.position);else if(Ke=se.line,jt(se,ct,3,!1,!0),rt.push(se.result),Xt(se,!0,-1),Xe=se.input.charCodeAt(se.position),(se.line===Ke||se.lineIndent>ct)&&0!==Xe)Sn(se,"bad indentation of a sequence entry");else if(se.lineIndent<ct)break;return!!bt&&(se.tag=Vt,se.anchor=Ct,se.kind="sequence",se.result=rt,!0)}function yn(se){var ct,Ke,Xe,Vt,Ct=!1,rt=!1;if(33!==(Vt=se.input.charCodeAt(se.position)))return!1;if(null!==se.tag&&Sn(se,"duplication of a tag property"),60===(Vt=se.input.charCodeAt(++se.position))?(Ct=!0,Vt=se.input.charCodeAt(++se.position)):33===Vt?(rt=!0,Ke="!!",Vt=se.input.charCodeAt(++se.position)):Ke="!",ct=se.position,Ct){do{Vt=se.input.charCodeAt(++se.position)}while(0!==Vt&&62!==Vt);se.position<se.length?(Xe=se.input.slice(ct,se.position),Vt=se.input.charCodeAt(++se.position)):Sn(se,"unexpected end of the stream within a verbatim tag")}else{for(;0!==Vt&&!er(Vt);)33===Vt&&(rt?Sn(se,"tag suffix cannot contain exclamation marks"):(Ke=se.input.slice(ct-1,se.position+1),zt.test(Ke)||Sn(se,"named tag handle cannot contain such characters"),rt=!0,ct=se.position+1)),Vt=se.input.charCodeAt(++se.position);Xe=se.input.slice(ct,se.position),Jt.test(Xe)&&Sn(se,"tag suffix cannot contain flow indicator characters")}Xe&&!ln.test(Xe)&&Sn(se,"tag name cannot contain such characters: "+Xe);try{Xe=decodeURIComponent(Xe)}catch(bt){Sn(se,"tag name is malformed: "+Xe)}return Ct?se.tag=Xe:ae.call(se.tagMap,Ke)?se.tag=se.tagMap[Ke]+Xe:"!"===Ke?se.tag="!"+Xe:"!!"===Ke?se.tag="tag:yaml.org,2002:"+Xe:Sn(se,'undeclared tag handle "'+Ke+'"'),!0}function et(se){var ct,Ke;if(38!==(Ke=se.input.charCodeAt(se.position)))return!1;for(null!==se.anchor&&Sn(se,"duplication of an anchor property"),Ke=se.input.charCodeAt(++se.position),ct=se.position;0!==Ke&&!er(Ke)&&!Mn(Ke);)Ke=se.input.charCodeAt(++se.position);return se.position===ct&&Sn(se,"name of an anchor node must contain at least one character"),se.anchor=se.input.slice(ct,se.position),!0}function jt(se,ct,Ke,Xe,Vt){var Ct,rt,bt,We,$t,or,Zn,Vr,Cr,ai=1,Dr=!1,Qr=!1;if(null!==se.listener&&se.listener("open",se),se.tag=null,se.anchor=null,se.kind=null,se.result=null,Ct=rt=bt=4===Ke||3===Ke,Xe&&Xt(se,!0,-1)&&(Dr=!0,se.lineIndent>ct?ai=1:se.lineIndent===ct?ai=0:se.lineIndent<ct&&(ai=-1)),1===ai)for(;yn(se)||et(se);)Xt(se,!0,-1)?(Dr=!0,bt=Ct,se.lineIndent>ct?ai=1:se.lineIndent===ct?ai=0:se.lineIndent<ct&&(ai=-1)):bt=!1;if(bt&&(bt=Dr||Vt),1!==ai&&4!==Ke||(Vr=1===Ke||2===Ke?ct:ct+1,Cr=se.position-se.lineStart,1===ai?bt&&(Tt(se,Cr)||function(rn,fi,Ei){var wi,go,Fi,no,Ji,qi,to,zi=rn.tag,Go=rn.anchor,Ro={},Bo=Object.create(null),Jo=null,es=null,ua=null,ds=!1,zo=!1;if(-1!==rn.firstTabInLine)return!1;for(null!==rn.anchor&&(rn.anchorMap[rn.anchor]=Ro),to=rn.input.charCodeAt(rn.position);0!==to;){if(ds||-1===rn.firstTabInLine||(rn.position=rn.firstTabInLine,Sn(rn,"tab characters must not be used in indentation")),wi=rn.input.charCodeAt(rn.position+1),Fi=rn.line,63!==to&&58!==to||!er(wi)){if(no=rn.line,Ji=rn.lineStart,qi=rn.position,!jt(rn,Ei,2,!1,!0))break;if(rn.line===Fi){for(to=rn.input.charCodeAt(rn.position);Rn(to);)to=rn.input.charCodeAt(++rn.position);if(58===to)er(to=rn.input.charCodeAt(++rn.position))||Sn(rn,"a whitespace character is expected after the key-value separator within a block mapping"),ds&&(mn(rn,Ro,Bo,Jo,es,null,no,Ji,qi),Jo=es=ua=null),zo=!0,ds=!1,go=!1,Jo=rn.tag,es=rn.result;else{if(!zo)return rn.tag=zi,rn.anchor=Go,!0;Sn(rn,"can not read an implicit mapping pair; a colon is missed")}}else{if(!zo)return rn.tag=zi,rn.anchor=Go,!0;Sn(rn,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===to?(ds&&(mn(rn,Ro,Bo,Jo,es,null,no,Ji,qi),Jo=es=ua=null),zo=!0,ds=!0,go=!0):ds?(ds=!1,go=!0):Sn(rn,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),rn.position+=1,to=wi;if((rn.line===Fi||rn.lineIndent>fi)&&(ds&&(no=rn.line,Ji=rn.lineStart,qi=rn.position),jt(rn,fi,4,!0,go)&&(ds?es=rn.result:ua=rn.result),ds||(mn(rn,Ro,Bo,Jo,es,ua,no,Ji,qi),Jo=es=ua=null),Xt(rn,!0,-1),to=rn.input.charCodeAt(rn.position)),(rn.line===Fi||rn.lineIndent>fi)&&0!==to)Sn(rn,"bad indentation of a mapping entry");else if(rn.lineIndent<fi)break}return ds&&mn(rn,Ro,Bo,Jo,es,null,no,Ji,qi),zo&&(rn.tag=zi,rn.anchor=Go,rn.kind="mapping",rn.result=Ro),zo}(se,Cr,Vr))||function(rn,fi){var Ei,wi,go,Fi,no,Ji,qi,to,zi,Go,Ro,Bo,Jo=!0,es=rn.tag,ua=rn.anchor,ds=Object.create(null);if(91===(Bo=rn.input.charCodeAt(rn.position)))no=93,to=!1,Fi=[];else{if(123!==Bo)return!1;no=125,to=!0,Fi={}}for(null!==rn.anchor&&(rn.anchorMap[rn.anchor]=Fi),Bo=rn.input.charCodeAt(++rn.position);0!==Bo;){if(Xt(rn,!0,fi),(Bo=rn.input.charCodeAt(rn.position))===no)return rn.position++,rn.tag=es,rn.anchor=ua,rn.kind=to?"mapping":"sequence",rn.result=Fi,!0;Jo?44===Bo&&Sn(rn,"expected the node content, but found ','"):Sn(rn,"missed comma between flow collection entries"),Ro=null,Ji=qi=!1,63===Bo&&er(rn.input.charCodeAt(rn.position+1))&&(Ji=qi=!0,rn.position++,Xt(rn,!0,fi)),Ei=rn.line,wi=rn.lineStart,go=rn.position,jt(rn,fi,1,!1,!0),Go=rn.tag,zi=rn.result,Xt(rn,!0,fi),Bo=rn.input.charCodeAt(rn.position),!qi&&rn.line!==Ei||58!==Bo||(Ji=!0,Bo=rn.input.charCodeAt(++rn.position),Xt(rn,!0,fi),jt(rn,fi,1,!1,!0),Ro=rn.result),to?mn(rn,Fi,ds,Go,zi,Ro,Ei,wi,go):Fi.push(Ji?mn(rn,null,ds,Go,zi,Ro,Ei,wi,go):zi),Xt(rn,!0,fi),44===(Bo=rn.input.charCodeAt(rn.position))?(Jo=!0,Bo=rn.input.charCodeAt(++rn.position)):Jo=!1}Sn(rn,"unexpected end of the stream within a flow collection")}(se,Vr)?Qr=!0:(rt&&function(rn,fi){var Ei,wi,go,Fi,no,Ji=1,qi=!1,to=!1,zi=fi,Go=0,Ro=!1;if(124===(Fi=rn.input.charCodeAt(rn.position)))wi=!1;else{if(62!==Fi)return!1;wi=!0}for(rn.kind="scalar",rn.result="";0!==Fi;)if(43===(Fi=rn.input.charCodeAt(++rn.position))||45===Fi)1===Ji?Ji=43===Fi?3:2:Sn(rn,"repeat of a chomping mode identifier");else{if(!((go=48<=(no=Fi)&&no<=57?no-48:-1)>=0))break;0===go?Sn(rn,"bad explicit indentation width of a block scalar; it cannot be less than one"):to?Sn(rn,"repeat of an indentation width identifier"):(zi=fi+go-1,to=!0)}if(Rn(Fi)){do{Fi=rn.input.charCodeAt(++rn.position)}while(Rn(Fi));if(35===Fi)do{Fi=rn.input.charCodeAt(++rn.position)}while(!Ln(Fi)&&0!==Fi)}for(;0!==Fi;){for(jn(rn),rn.lineIndent=0,Fi=rn.input.charCodeAt(rn.position);(!to||rn.lineIndent<zi)&&32===Fi;)rn.lineIndent++,Fi=rn.input.charCodeAt(++rn.position);if(!to&&rn.lineIndent>zi&&(zi=rn.lineIndent),Ln(Fi))Go++;else{if(rn.lineIndent<zi){3===Ji?rn.result+=s.repeat("\n",qi?1+Go:Go):1===Ji&&qi&&(rn.result+="\n");break}for(wi?Rn(Fi)?(Ro=!0,rn.result+=s.repeat("\n",qi?1+Go:Go)):Ro?(Ro=!1,rn.result+=s.repeat("\n",Go+1)):0===Go?qi&&(rn.result+=" "):rn.result+=s.repeat("\n",Go):rn.result+=s.repeat("\n",qi?1+Go:Go),qi=!0,to=!0,Go=0,Ei=rn.position;!Ln(Fi)&&0!==Fi;)Fi=rn.input.charCodeAt(++rn.position);Fn(rn,Ei,rn.position,!1)}}return!0}(se,Vr)||function(rn,fi){var Ei,wi,go;if(39!==(Ei=rn.input.charCodeAt(rn.position)))return!1;for(rn.kind="scalar",rn.result="",rn.position++,wi=go=rn.position;0!==(Ei=rn.input.charCodeAt(rn.position));)if(39===Ei){if(Fn(rn,wi,rn.position,!0),39!==(Ei=rn.input.charCodeAt(++rn.position)))return!0;wi=rn.position,rn.position++,go=rn.position}else Ln(Ei)?(Fn(rn,wi,go,!0),mt(rn,Xt(rn,!1,fi)),wi=go=rn.position):rn.position===rn.lineStart&&ut(rn)?Sn(rn,"unexpected end of the document within a single quoted scalar"):(rn.position++,go=rn.position);Sn(rn,"unexpected end of the stream within a single quoted scalar")}(se,Vr)||function(rn,fi){var Ei,wi,go,Fi,no,Ji,qi;if(34!==(Ji=rn.input.charCodeAt(rn.position)))return!1;for(rn.kind="scalar",rn.result="",rn.position++,Ei=wi=rn.position;0!==(Ji=rn.input.charCodeAt(rn.position));){if(34===Ji)return Fn(rn,Ei,rn.position,!0),rn.position++,!0;if(92===Ji){if(Fn(rn,Ei,rn.position,!0),Ln(Ji=rn.input.charCodeAt(++rn.position)))Xt(rn,!1,fi);else if(Ji<256&&Cn[Ji])rn.result+=Kt[Ji],rn.position++;else if((no=120===(qi=Ji)?2:117===qi?4:85===qi?8:0)>0){for(go=no,Fi=0;go>0;go--)(no=Ht(Ji=rn.input.charCodeAt(++rn.position)))>=0?Fi=(Fi<<4)+no:Sn(rn,"expected hexadecimal character");rn.result+=Yn(Fi),rn.position++}else Sn(rn,"unknown escape sequence");Ei=wi=rn.position}else Ln(Ji)?(Fn(rn,Ei,wi,!0),mt(rn,Xt(rn,!1,fi)),Ei=wi=rn.position):rn.position===rn.lineStart&&ut(rn)?Sn(rn,"unexpected end of the document within a double quoted scalar"):(rn.position++,wi=rn.position)}Sn(rn,"unexpected end of the stream within a double quoted scalar")}(se,Vr)?Qr=!0:function(rn){var fi,Ei,wi;if(42!==(wi=rn.input.charCodeAt(rn.position)))return!1;for(wi=rn.input.charCodeAt(++rn.position),fi=rn.position;0!==wi&&!er(wi)&&!Mn(wi);)wi=rn.input.charCodeAt(++rn.position);return rn.position===fi&&Sn(rn,"name of an alias node must contain at least one character"),Ei=rn.input.slice(fi,rn.position),ae.call(rn.anchorMap,Ei)||Sn(rn,'unidentified alias "'+Ei+'"'),rn.result=rn.anchorMap[Ei],Xt(rn,!0,-1),!0}(se)?(Qr=!0,null===se.tag&&null===se.anchor||Sn(se,"alias node should not have any properties")):function(rn,fi,Ei){var wi,go,Fi,no,Ji,qi,to,zi,Go=rn.kind,Ro=rn.result;if(er(zi=rn.input.charCodeAt(rn.position))||Mn(zi)||35===zi||38===zi||42===zi||33===zi||124===zi||62===zi||39===zi||34===zi||37===zi||64===zi||96===zi||(63===zi||45===zi)&&(er(wi=rn.input.charCodeAt(rn.position+1))||Ei&&Mn(wi)))return!1;for(rn.kind="scalar",rn.result="",go=Fi=rn.position,no=!1;0!==zi;){if(58===zi){if(er(wi=rn.input.charCodeAt(rn.position+1))||Ei&&Mn(wi))break}else if(35===zi){if(er(rn.input.charCodeAt(rn.position-1)))break}else{if(rn.position===rn.lineStart&&ut(rn)||Ei&&Mn(zi))break;if(Ln(zi)){if(Ji=rn.line,qi=rn.lineStart,to=rn.lineIndent,Xt(rn,!1,-1),rn.lineIndent>=fi){no=!0,zi=rn.input.charCodeAt(rn.position);continue}rn.position=Fi,rn.line=Ji,rn.lineStart=qi,rn.lineIndent=to;break}}no&&(Fn(rn,go,Fi,!1),mt(rn,rn.line-Ji),go=Fi=rn.position,no=!1),Rn(zi)||(Fi=rn.position+1),zi=rn.input.charCodeAt(++rn.position)}return Fn(rn,go,Fi,!1),!!rn.result||(rn.kind=Go,rn.result=Ro,!1)}(se,Vr,1===Ke)&&(Qr=!0,null===se.tag&&(se.tag="?")),null!==se.anchor&&(se.anchorMap[se.anchor]=se.result)):0===ai&&(Qr=bt&&Tt(se,Cr))),null===se.tag)null!==se.anchor&&(se.anchorMap[se.anchor]=se.result);else if("?"===se.tag){for(null!==se.result&&"scalar"!==se.kind&&Sn(se,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+se.kind+'"'),We=0,$t=se.implicitTypes.length;We<$t;We+=1)if((Zn=se.implicitTypes[We]).resolve(se.result)){se.result=Zn.construct(se.result),se.tag=Zn.tag,null!==se.anchor&&(se.anchorMap[se.anchor]=se.result);break}}else if("!"!==se.tag){if(ae.call(se.typeMap[se.kind||"fallback"],se.tag))Zn=se.typeMap[se.kind||"fallback"][se.tag];else for(Zn=null,We=0,$t=(or=se.typeMap.multi[se.kind||"fallback"]).length;We<$t;We+=1)if(se.tag.slice(0,or[We].tag.length)===or[We].tag){Zn=or[We];break}Zn||Sn(se,"unknown tag !<"+se.tag+">"),null!==se.result&&Zn.kind!==se.kind&&Sn(se,"unacceptable node kind for !<"+se.tag+'> tag; it should be "'+Zn.kind+'", not "'+se.kind+'"'),Zn.resolve(se.result,se.tag)?(se.result=Zn.construct(se.result,se.tag),null!==se.anchor&&(se.anchorMap[se.anchor]=se.result)):Sn(se,"cannot resolve a node with !<"+se.tag+"> explicit tag")}return null!==se.listener&&se.listener("close",se),null!==se.tag||null!==se.anchor||Qr}function hn(se){var ct,Ke,Xe,Vt,Ct=se.position,rt=!1;for(se.version=null,se.checkLineBreaks=se.legacy,se.tagMap=Object.create(null),se.anchorMap=Object.create(null);0!==(Vt=se.input.charCodeAt(se.position))&&(Xt(se,!0,-1),Vt=se.input.charCodeAt(se.position),!(se.lineIndent>0||37!==Vt));){for(rt=!0,Vt=se.input.charCodeAt(++se.position),ct=se.position;0!==Vt&&!er(Vt);)Vt=se.input.charCodeAt(++se.position);for(Xe=[],(Ke=se.input.slice(ct,se.position)).length<1&&Sn(se,"directive name must not be less than one character in length");0!==Vt;){for(;Rn(Vt);)Vt=se.input.charCodeAt(++se.position);if(35===Vt){do{Vt=se.input.charCodeAt(++se.position)}while(0!==Vt&&!Ln(Vt));break}if(Ln(Vt))break;for(ct=se.position;0!==Vt&&!er(Vt);)Vt=se.input.charCodeAt(++se.position);Xe.push(se.input.slice(ct,se.position))}0!==Vt&&jn(se),ae.call(En,Ke)?En[Ke](se,Ke,Xe):$n(se,'unknown document directive "'+Ke+'"')}Xt(se,!0,-1),0===se.lineIndent&&45===se.input.charCodeAt(se.position)&&45===se.input.charCodeAt(se.position+1)&&45===se.input.charCodeAt(se.position+2)?(se.position+=3,Xt(se,!0,-1)):rt&&Sn(se,"directives end mark is expected"),jt(se,se.lineIndent-1,4,!1,!0),Xt(se,!0,-1),se.checkLineBreaks&&dt.test(se.input.slice(Ct,se.position))&&$n(se,"non-ASCII line breaks are interpreted as content"),se.documents.push(se.result),se.position===se.lineStart&&ut(se)?46===se.input.charCodeAt(se.position)&&(se.position+=3,Xt(se,!0,-1)):se.position<se.length-1&&Sn(se,"end of the stream or a document separator is expected")}function Qn(se,ct){ct=ct||{},0!==(se=String(se)).length&&(10!==se.charCodeAt(se.length-1)&&13!==se.charCodeAt(se.length-1)&&(se+="\n"),65279===se.charCodeAt(0)&&(se=se.slice(1)));var Ke=new Kn(se,ct),Xe=se.indexOf("\0");for(-1!==Xe&&(Ke.position=Xe,Sn(Ke,"null byte is not allowed in input")),Ke.input+="\0";32===Ke.input.charCodeAt(Ke.position);)Ke.lineIndent+=1,Ke.position+=1;for(;Ke.position<Ke.length-1;)hn(Ke);return Ke.documents}var Ir={loadAll:function(se,ct,Ke){null!==ct&&"object"==typeof ct&&void 0===Ke&&(Ke=ct,ct=null);var Xe=Qn(se,Ke);if("function"!=typeof ct)return Xe;for(var Vt=0,Ct=Xe.length;Vt<Ct;Vt+=1)ct(Xe[Vt])},load:function(se,ct){var Ke=Qn(se,ct);if(0!==Ke.length){if(1===Ke.length)return Ke[0];throw new u("expected a single document in the stream, but found more")}}},ht=Object.prototype.toString,L=Object.prototype.hasOwnProperty,nt={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},at=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],it=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Pt(se){var ct,Ke,Xe;if(ct=se.toString(16).toUpperCase(),se<=255)Ke="x",Xe=2;else if(se<=65535)Ke="u",Xe=4;else{if(!(se<=4294967295))throw new u("code point within a string may not be greater than 0xFFFFFFFF");Ke="U",Xe=8}return"\\"+Ke+s.repeat("0",Xe-ct.length)+ct}function Ut(se){this.schema=se.schema||It,this.indent=Math.max(1,se.indent||2),this.noArrayIndent=se.noArrayIndent||!1,this.skipInvalid=se.skipInvalid||!1,this.flowLevel=s.isNothing(se.flowLevel)?-1:se.flowLevel,this.styleMap=function(ct,Ke){var Xe,Vt,Ct,rt,bt,We,$t;if(null===Ke)return{};for(Xe={},Ct=0,rt=(Vt=Object.keys(Ke)).length;Ct<rt;Ct+=1)bt=Vt[Ct],We=String(Ke[bt]),"!!"===bt.slice(0,2)&&(bt="tag:yaml.org,2002:"+bt.slice(2)),($t=ct.compiledTypeMap.fallback[bt])&&L.call($t.styleAliases,We)&&(We=$t.styleAliases[We]),Xe[bt]=We;return Xe}(this.schema,se.styles||null),this.sortKeys=se.sortKeys||!1,this.lineWidth=se.lineWidth||80,this.noRefs=se.noRefs||!1,this.noCompatMode=se.noCompatMode||!1,this.condenseFlow=se.condenseFlow||!1,this.quotingType='"'===se.quotingType?2:1,this.forceQuotes=se.forceQuotes||!1,this.replacer="function"==typeof se.replacer?se.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function ot(se,ct){for(var Ke,Xe=s.repeat(" ",ct),Vt=0,Ct=-1,rt="",bt=se.length;Vt<bt;)-1===(Ct=se.indexOf("\n",Vt))?(Ke=se.slice(Vt),Vt=bt):(Ke=se.slice(Vt,Ct+1),Vt=Ct+1),Ke.length&&"\n"!==Ke&&(rt+=Xe),rt+=Ke;return rt}function Nn(se,ct){return"\n"+s.repeat(" ",se.indent*ct)}function sn(se){return 32===se||9===se}function An(se){return 32<=se&&se<=126||161<=se&&se<=55295&&8232!==se&&8233!==se||57344<=se&&se<=65533&&65279!==se||65536<=se&&se<=1114111}function Bn(se){return An(se)&&65279!==se&&13!==se&&10!==se}function ir(se,ct,Ke){var Xe=Bn(se),Vt=Xe&&!sn(se);return(Ke?Xe:Xe&&44!==se&&91!==se&&93!==se&&123!==se&&125!==se)&&35!==se&&!(58===ct&&!Vt)||Bn(ct)&&!sn(ct)&&35===se||58===ct&&Vt}function mr(se,ct){var Ke,Xe=se.charCodeAt(ct);return Xe>=55296&&Xe<=56319&&ct+1<se.length&&(Ke=se.charCodeAt(ct+1))>=56320&&Ke<=57343?1024*(Xe-55296)+Ke-56320+65536:Xe}function _r(se){return/^\n* /.test(se)}function Jn(se,ct){var Ke=_r(se)?String(ct):"",Xe="\n"===se[se.length-1];return Ke+(!Xe||"\n"!==se[se.length-2]&&"\n"!==se?Xe?"":"-":"+")+"\n"}function nr(se){return"\n"===se[se.length-1]?se.slice(0,-1):se}function Mr(se,ct){if(""===se||" "===se[0])return se;for(var Ke,Xe,Vt=/ [^ ]/g,Ct=0,rt=0,bt=0,We="";Ke=Vt.exec(se);)(bt=Ke.index)-Ct>ct&&(We+="\n"+se.slice(Ct,Xe=rt>Ct?rt:bt),Ct=Xe+1),rt=bt;return We+="\n",(We+=se.length-Ct>ct&&rt>Ct?se.slice(Ct,rt)+"\n"+se.slice(rt+1):se.slice(Ct)).slice(1)}function Ii(se,ct,Ke){var Xe,Vt,Ct,rt,bt,We;for(Ct=0,rt=(Vt=Ke?se.explicitTypes:se.implicitTypes).length;Ct<rt;Ct+=1)if(((bt=Vt[Ct]).instanceOf||bt.predicate)&&(!bt.instanceOf||"object"==typeof ct&&ct instanceof bt.instanceOf)&&(!bt.predicate||bt.predicate(ct))){if(se.tag=Ke?bt.multi&&bt.representName?bt.representName(ct):bt.tag:"?",bt.represent){if(We=se.styleMap[bt.tag]||bt.defaultStyle,"[object Function]"===ht.call(bt.represent))Xe=bt.represent(ct,We);else{if(!L.call(bt.represent,We))throw new u("!<"+bt.tag+'> tag resolver accepts not "'+We+'" style');Xe=bt.represent[We](ct,We)}se.dump=Xe}return!0}return!1}function Mi(se,ct,Ke,Xe,Vt,Ct,rt){se.tag=null,se.dump=Ke,Ii(se,Ke,!1)||Ii(se,Ke,!0);var bt,We=ht.call(se.dump),$t=Xe;Xe&&(Xe=se.flowLevel<0||se.flowLevel>ct);var or,Zn,Vr="[object Object]"===We||"[object Array]"===We;if(Vr&&(Zn=-1!==(or=se.duplicates.indexOf(Ke))),(null!==se.tag&&"?"!==se.tag||Zn||2!==se.indent&&ct>0)&&(Vt=!1),Zn&&se.usedDuplicates[or])se.dump="*ref_"+or;else{if(Vr&&Zn&&!se.usedDuplicates[or]&&(se.usedDuplicates[or]=!0),"[object Object]"===We)Xe&&0!==Object.keys(se.dump).length?(function(Cr,ai,Dr,Qr){var rn,fi,Ei,wi,go,Fi,no="",Ji=Cr.tag,qi=Object.keys(Dr);if(!0===Cr.sortKeys)qi.sort();else if("function"==typeof Cr.sortKeys)qi.sort(Cr.sortKeys);else if(Cr.sortKeys)throw new u("sortKeys must be a boolean or a function");for(rn=0,fi=qi.length;rn<fi;rn+=1)Fi="",Qr&&""===no||(Fi+=Nn(Cr,ai)),wi=Dr[Ei=qi[rn]],Cr.replacer&&(wi=Cr.replacer.call(Dr,Ei,wi)),Mi(Cr,ai+1,Ei,!0,!0,!0)&&((go=null!==Cr.tag&&"?"!==Cr.tag||Cr.dump&&Cr.dump.length>1024)&&(Cr.dump&&10===Cr.dump.charCodeAt(0)?Fi+="?":Fi+="? "),Fi+=Cr.dump,go&&(Fi+=Nn(Cr,ai)),Mi(Cr,ai+1,wi,!0,go)&&(Cr.dump&&10===Cr.dump.charCodeAt(0)?Fi+=":":Fi+=": ",no+=Fi+=Cr.dump));Cr.tag=Ji,Cr.dump=no||"{}"}(se,ct,se.dump,Vt),Zn&&(se.dump="&ref_"+or+se.dump)):(function(Cr,ai,Dr){var Qr,rn,fi,Ei,wi,go="",Fi=Cr.tag,no=Object.keys(Dr);for(Qr=0,rn=no.length;Qr<rn;Qr+=1)wi="",""!==go&&(wi+=", "),Cr.condenseFlow&&(wi+='"'),Ei=Dr[fi=no[Qr]],Cr.replacer&&(Ei=Cr.replacer.call(Dr,fi,Ei)),Mi(Cr,ai,fi,!1,!1)&&(Cr.dump.length>1024&&(wi+="? "),wi+=Cr.dump+(Cr.condenseFlow?'"':"")+":"+(Cr.condenseFlow?"":" "),Mi(Cr,ai,Ei,!1,!1)&&(go+=wi+=Cr.dump));Cr.tag=Fi,Cr.dump="{"+go+"}"}(se,ct,se.dump),Zn&&(se.dump="&ref_"+or+" "+se.dump));else if("[object Array]"===We)Xe&&0!==se.dump.length?(function(se,ct,Ke,Xe){var Vt,Ct,rt,bt="",We=se.tag;for(Vt=0,Ct=Ke.length;Vt<Ct;Vt+=1)rt=Ke[Vt],se.replacer&&(rt=se.replacer.call(Ke,String(Vt),rt)),(Mi(se,ct+1,rt,!0,!0,!1,!0)||void 0===rt&&Mi(se,ct+1,null,!0,!0,!1,!0))&&(Xe&&""===bt||(bt+=Nn(se,ct)),se.dump&&10===se.dump.charCodeAt(0)?bt+="-":bt+="- ",bt+=se.dump);se.tag=We,se.dump=bt||"[]"}(se,se.noArrayIndent&&!rt&&ct>0?ct-1:ct,se.dump,Vt),Zn&&(se.dump="&ref_"+or+se.dump)):(function(Cr,ai,Dr){var Qr,rn,fi,Ei="",wi=Cr.tag;for(Qr=0,rn=Dr.length;Qr<rn;Qr+=1)fi=Dr[Qr],Cr.replacer&&(fi=Cr.replacer.call(Dr,String(Qr),fi)),(Mi(Cr,ai,fi,!1,!1)||void 0===fi&&Mi(Cr,ai,null,!1,!1))&&(""!==Ei&&(Ei+=","+(Cr.condenseFlow?"":" ")),Ei+=Cr.dump);Cr.tag=wi,Cr.dump="["+Ei+"]"}(se,ct,se.dump),Zn&&(se.dump="&ref_"+or+" "+se.dump));else{if("[object String]"!==We){if("[object Undefined]"===We||se.skipInvalid)return!1;throw new u("unacceptable kind of an object to dump "+We)}"?"!==se.tag&&function(se,ct,Ke,Xe,Vt){se.dump=function(){if(0===ct.length)return 2===se.quotingType?'""':"''";if(!se.noCompatMode&&(-1!==at.indexOf(ct)||it.test(ct)))return 2===se.quotingType?'"'+ct+'"':"'"+ct+"'";var Ct=se.indent*Math.max(1,Ke),rt=-1===se.lineWidth?-1:Math.max(Math.min(se.lineWidth,40),se.lineWidth-Ct);switch(function(se,ct,Ke,Xe,Vt,Ct,rt,bt){var We,$t,rn,or=0,Zn=null,Vr=!1,Cr=!1,ai=-1!==Xe,Dr=-1,Qr=An($t=mr(se,0))&&65279!==$t&&!sn($t)&&45!==$t&&63!==$t&&58!==$t&&44!==$t&&91!==$t&&93!==$t&&123!==$t&&125!==$t&&35!==$t&&38!==$t&&42!==$t&&33!==$t&&124!==$t&&61!==$t&&62!==$t&&39!==$t&&34!==$t&&37!==$t&&64!==$t&&96!==$t&&!sn(rn=mr(se,se.length-1))&&58!==rn;if(ct||rt)for(We=0;We<se.length;or>=65536?We+=2:We++){if(!An(or=mr(se,We)))return 5;Qr=Qr&&ir(or,Zn,bt),Zn=or}else{for(We=0;We<se.length;or>=65536?We+=2:We++){if(10===(or=mr(se,We)))Vr=!0,ai&&(Cr=Cr||We-Dr-1>Xe&&" "!==se[Dr+1],Dr=We);else if(!An(or))return 5;Qr=Qr&&ir(or,Zn,bt),Zn=or}Cr=Cr||ai&&We-Dr-1>Xe&&" "!==se[Dr+1]}return Vr||Cr?Ke>9&&_r(se)?5:rt?2===Ct?5:2:Cr?4:3:!Qr||rt||Vt(se)?2===Ct?5:2:1}(ct,Xe||se.flowLevel>-1&&Ke>=se.flowLevel,se.indent,rt,function(We){return function($t,or){var Zn,Vr;for(Zn=0,Vr=$t.implicitTypes.length;Zn<Vr;Zn+=1)if($t.implicitTypes[Zn].resolve(or))return!0;return!1}(se,We)},se.quotingType,se.forceQuotes&&!Xe,Vt)){case 1:return ct;case 2:return"'"+ct.replace(/'/g,"''")+"'";case 3:return"|"+Jn(ct,se.indent)+nr(ot(ct,Ct));case 4:return">"+Jn(ct,se.indent)+nr(ot(function(We,$t){for(var or,Zn,Dr,Vr=/(\n+)([^\n]*)/g,Cr=(Dr=We.indexOf("\n"),Vr.lastIndex=Dr=-1!==Dr?Dr:We.length,Mr(We.slice(0,Dr),$t)),ai="\n"===We[0]||" "===We[0];Zn=Vr.exec(We);){var rn=Zn[2];or=" "===rn[0],Cr+=Zn[1]+(ai||or||""===rn?"":"\n")+Mr(rn,$t),ai=or}return Cr}(ct,rt),Ct));case 5:return'"'+function(We){for(var $t,or="",Zn=0,Vr=0;Vr<We.length;Zn>=65536?Vr+=2:Vr++)Zn=mr(We,Vr),!($t=nt[Zn])&&An(Zn)?(or+=We[Vr],Zn>=65536&&(or+=We[Vr+1])):or+=$t||Pt(Zn);return or}(ct)+'"';default:throw new u("impossible error: invalid scalar style")}}()}(se,se.dump,ct,Ct,$t)}null!==se.tag&&"?"!==se.tag&&(bt=encodeURI("!"===se.tag[0]?se.tag.slice(1):se.tag).replace(/!/g,"%21"),bt="!"===se.tag[0]?"!"+bt:"tag:yaml.org,2002:"===bt.slice(0,18)?"!!"+bt.slice(18):"!<"+bt+">",se.dump=bt+" "+se.dump)}return!0}function Oi(se,ct){var Ke,Xe,Vt=[],Ct=[];for(Kr(se,Vt,Ct),Ke=0,Xe=Ct.length;Ke<Xe;Ke+=1)ct.duplicates.push(Vt[Ct[Ke]]);ct.usedDuplicates=new Array(Xe)}function Kr(se,ct,Ke){var Xe,Vt,Ct;if(null!==se&&"object"==typeof se)if(-1!==(Vt=ct.indexOf(se)))-1===Ke.indexOf(Vt)&&Ke.push(Vt);else if(ct.push(se),Array.isArray(se))for(Vt=0,Ct=se.length;Vt<Ct;Vt+=1)Kr(se[Vt],ct,Ke);else for(Vt=0,Ct=(Xe=Object.keys(se)).length;Vt<Ct;Vt+=1)Kr(se[Xe[Vt]],ct,Ke)}function ei(se,ct){return function(){throw new Error("Function yaml."+se+" is removed in js-yaml 4. Use yaml."+ct+" instead, which is now safe by default.")}}var di={Type:D,Schema:H,FAILSAFE_SCHEMA:I,JSON_SCHEMA:Ae,CORE_SCHEMA:Me,DEFAULT_SCHEMA:It,load:Ir.load,loadAll:Ir.loadAll,dump:function(se,ct){var Ke=new Ut(ct=ct||{});Ke.noRefs||Oi(se,Ke);var Xe=se;return Ke.replacer&&(Xe=Ke.replacer.call({"":Xe},"",Xe)),Mi(Ke,0,Xe,!0,!0)?Ke.dump+"\n":""},YAMLException:u,types:{binary:F,float:ce,map:M,null:J,pairs:St,set:Qe,timestamp:ue,bool:Y,int:fe,merge:He,omap:lt,seq:U,str:z},safeLoad:ei("safeLoad","load"),safeLoadAll:ei("safeLoadAll","loadAll"),safeDump:ei("safeDump","dump")};o.a=di},function(g,o,t){g.exports=t(633)},function(g,o,t){var e=t(821);function s(a,l,u,h,_,m,b){try{var C=a[m](b),D=C.value}catch(x){return void u(x)}C.done?l(D):e.resolve(D).then(h,_)}g.exports=function(a){return function(){var l=this,u=arguments;return new e(function(h,_){var m=a.apply(l,u);function b(D){s(m,h,_,b,C,"next",D)}function C(D){s(m,h,_,b,C,"throw",D)}b(void 0)})}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(17),s=t(41),a=t(170),l=e.TypeError;g.exports=function(u){if(s(u))return u;throw l(a(u)+" is not a function")}},function(g,o,t){var e=t(332);g.exports=function(s){return e(s.length)}},function(g,o,t){var e=t(17),s=t(216),a=t(41),l=t(112),u=t(38)("toStringTag"),h=e.Object,_="Arguments"==l(function(){return arguments}());g.exports=s?l:function(m){var b,C,D;return void 0===m?"Undefined":null===m?"Null":"string"==typeof(C=function(x,j){try{return x[j]}catch(H){}}(b=h(m),u))?C:_?l(b):"Object"==(D=l(b))&&a(b.callee)?"Arguments":D}},function(g,o,t){var e,s,a,l=t(337),u=t(17),h=t(27),_=t(43),m=t(85),b=t(44),C=t(213),D=t(173),x=t(150),j="Object already initialized",H=u.TypeError;if(l||C.state){var U=C.state||(C.state=new(0,u.WeakMap)),M=h(U.get),I=h(U.has),J=h(U.set);e=function(ie,oe){if(I(U,ie))throw new H(j);return oe.facade=ie,J(U,ie,oe),oe},s=function(ie){return M(U,ie)||{}},a=function(ie){return I(U,ie)}}else{var Y=D("state");x[Y]=!0,e=function(ie,oe){if(b(ie,Y))throw new H(j);return oe.facade=ie,m(ie,Y,oe),oe},s=function(ie){return b(ie,Y)?ie[Y]:{}},a=function(ie){return b(ie,Y)}}g.exports={set:e,get:s,has:a,enforce:function(ie){return a(ie)?s(ie):e(ie,{})},getterFor:function(ie){return function(oe){var fe;if(!_(oe)||(fe=s(oe)).type!==ie)throw H("Incompatible receiver, "+ie+" required");return fe}}}},function(g,o,t){"use strict";var e=t(61),s=t(224),a=t(130),l=t(76),u=t(225),h="Array Iterator",_=l.set,m=l.getterFor(h);g.exports=u(Array,"Array",function(b,C){_(this,{type:h,target:e(b),index:0,kind:C})},function(){var b=m(this),C=b.target,D=b.kind,x=b.index++;return!C||x>=C.length?(b.target=void 0,{value:void 0,done:!0}):"keys"==D?{value:x,done:!1}:"values"==D?{value:C[x],done:!1}:{value:[x,C[x]],done:!1}},"values"),a.Arguments=a.Array,s("keys"),s("values"),s("entries")},function(g,o){g.exports=function(t){return null!=t&&"object"==typeof t}},function(g,o,t){"use strict";(function(e){function s(_){return _ instanceof e||_ instanceof Date||_ instanceof RegExp}function a(_){if(_ instanceof e){var m=e.alloc?e.alloc(_.length):new e(_.length);return _.copy(m),m}if(_ instanceof Date)return new Date(_.getTime());if(_ instanceof RegExp)return new RegExp(_);throw new Error("Unexpected situation")}function l(_){var m=[];return _.forEach(function(b,C){m[C]="object"==typeof b&&null!==b?Array.isArray(b)?l(b):s(b)?a(b):h({},b):b}),m}function u(_,m){return"__proto__"===m?void 0:_[m]}var h=g.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var _,m,b=arguments[0],C=Array.prototype.slice.call(arguments,1);return C.forEach(function(D){"object"!=typeof D||null===D||Array.isArray(D)||Object.keys(D).forEach(function(x){return m=u(b,x),(_=u(D,x))===b?void 0:"object"!=typeof _||null===_?void(b[x]=_):Array.isArray(_)?void(b[x]=l(_)):s(_)?void(b[x]=a(_)):"object"!=typeof m||null===m||Array.isArray(m)?void(b[x]=h({},_)):void(b[x]=h(m,_))})}),b}}).call(this,t(132).Buffer)},function(g,o,t){g.exports=t(619)},function(g,o,t){"use strict";var e=t(946),s=t(947);function a(){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}o.parse=M,o.resolve=function(I,J){return M(I,!1,!0).resolve(J)},o.resolveObject=function(I,J){return I?M(I,!1,!0).resolveObject(J):J},o.format=function(I){return s.isString(I)&&(I=M(I)),I instanceof a?I.format():a.prototype.format.call(I)},o.Url=a;var l=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,_=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),m=["'"].concat(_),b=["%","/","?",";","#"].concat(m),C=["/","?","#"],D=/^[+a-z0-9A-Z_-]{0,63}$/,x=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,j={javascript:!0,"javascript:":!0},H={javascript:!0,"javascript:":!0},z={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},U=t(948);function M(I,J,Y){if(I&&s.isObject(I)&&I instanceof a)return I;var ie=new a;return ie.parse(I,J,Y),ie}a.prototype.parse=function(I,J,Y){if(!s.isString(I))throw new TypeError("Parameter 'url' must be a string, not "+typeof I);var ie=I.indexOf("?"),oe=-1!==ie&&ie<I.indexOf("#")?"?":"#",fe=I.split(oe);fe[0]=fe[0].replace(/\\/g,"/");var ne=I=fe.join(oe);if(ne=ne.trim(),!Y&&1===I.split("#").length){var he=h.exec(ne);if(he)return this.path=ne,this.href=ne,this.pathname=he[1],he[2]?(this.search=he[2],this.query=J?U.parse(this.search.substr(1)):this.search.substr(1)):J&&(this.search="",this.query={}),this}var ce=l.exec(ne);if(ce){var Ae=(ce=ce[0]).toLowerCase();this.protocol=Ae,ne=ne.substr(ce.length)}if(Y||ce||ne.match(/^\/\/[^@\/]+@[^@\/]+/)){var Me="//"===ne.substr(0,2);!Me||ce&&H[ce]||(ne=ne.substr(2),this.slashes=!0)}if(!H[ce]&&(Me||ce&&!z[ce])){for(var Oe,be,ue=-1,He=0;He<C.length;He++)-1!==($e=ne.indexOf(C[He]))&&(-1===ue||$e<ue)&&(ue=$e);for(-1!==(be=-1===ue?ne.lastIndexOf("@"):ne.lastIndexOf("@",ue))&&(Oe=ne.slice(0,be),ne=ne.slice(be+1),this.auth=decodeURIComponent(Oe)),ue=-1,He=0;He<b.length;He++){var $e;-1!==($e=ne.indexOf(b[He]))&&(-1===ue||$e<ue)&&(ue=$e)}-1===ue&&(ue=ne.length),this.host=ne.slice(0,ue),ne=ne.slice(ue),this.parseHost(),this.hostname=this.hostname||"";var F="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!F)for(var je=this.hostname.split(/\./),Et=(He=0,je.length);He<Et;He++){var lt=je[He];if(lt&&!lt.match(D)){for(var nn="",St=0,At=lt.length;St<At;St++)lt.charCodeAt(St)>127?nn+="x":nn+=lt[St];if(!nn.match(D)){var Qe=je.slice(0,He),It=je.slice(He+1),ae=lt.match(x);ae&&(Qe.push(ae[1]),It.unshift(ae[2])),It.length&&(ne="/"+It.join(".")+ne),this.hostname=Qe.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),F||(this.hostname=e.toASCII(this.hostname));var Ie=this.port?":"+this.port:"";this.host=(this.hostname||"")+Ie,this.href+=this.host,F&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==ne[0]&&(ne="/"+ne))}if(!j[Ae])for(He=0,Et=m.length;He<Et;He++){var Jt=m[He];if(-1!==ne.indexOf(Jt)){var zt=encodeURIComponent(Jt);zt===Jt&&(zt=escape(Jt)),ne=ne.split(Jt).join(zt)}}var ln=ne.indexOf("#");-1!==ln&&(this.hash=ne.substr(ln),ne=ne.slice(0,ln));var ar=ne.indexOf("?");return-1!==ar?(this.search=ne.substr(ar),this.query=ne.substr(ar+1),J&&(this.query=U.parse(this.query)),ne=ne.slice(0,ar)):J&&(this.search="",this.query={}),ne&&(this.pathname=ne),z[Ae]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(Ie=this.pathname||"")+(this.search||"")),this.href=this.format(),this},a.prototype.format=function(){var I=this.auth||"";I&&(I=(I=encodeURIComponent(I)).replace(/%3A/i,":"),I+="@");var J=this.protocol||"",Y=this.pathname||"",ie=this.hash||"",oe=!1,fe="";this.host?oe=I+this.host:this.hostname&&(oe=I+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(oe+=":"+this.port)),this.query&&s.isObject(this.query)&&Object.keys(this.query).length&&(fe=U.stringify(this.query));var ne=this.search||fe&&"?"+fe||"";return J&&":"!==J.substr(-1)&&(J+=":"),this.slashes||(!J||z[J])&&!1!==oe?(oe="//"+(oe||""),Y&&"/"!==Y.charAt(0)&&(Y="/"+Y)):oe||(oe=""),ie&&"#"!==ie.charAt(0)&&(ie="#"+ie),ne&&"?"!==ne.charAt(0)&&(ne="?"+ne),J+oe+(Y=Y.replace(/[?#]/g,function(he){return encodeURIComponent(he)}))+(ne=ne.replace("#","%23"))+ie},a.prototype.resolve=function(I){return this.resolveObject(M(I,!1,!0)).format()},a.prototype.resolveObject=function(I){if(s.isString(I)){var J=new a;J.parse(I,!1,!0),I=J}for(var Y=new a,ie=Object.keys(this),oe=0;oe<ie.length;oe++){var fe=ie[oe];Y[fe]=this[fe]}if(Y.hash=I.hash,""===I.href)return Y.href=Y.format(),Y;if(I.slashes&&!I.protocol){for(var ne=Object.keys(I),he=0;he<ne.length;he++){var ce=ne[he];"protocol"!==ce&&(Y[ce]=I[ce])}return z[Y.protocol]&&Y.hostname&&!Y.pathname&&(Y.path=Y.pathname="/"),Y.href=Y.format(),Y}if(I.protocol&&I.protocol!==Y.protocol){if(!z[I.protocol]){for(var Ae=Object.keys(I),Me=0;Me<Ae.length;Me++){var Oe=Ae[Me];Y[Oe]=I[Oe]}return Y.href=Y.format(),Y}if(Y.protocol=I.protocol,I.host||H[I.protocol])Y.pathname=I.pathname;else{for(var be=(I.pathname||"").split("/");be.length&&!(I.host=be.shift()););I.host||(I.host=""),I.hostname||(I.hostname=""),""!==be[0]&&be.unshift(""),be.length<2&&be.unshift(""),Y.pathname=be.join("/")}return Y.search=I.search,Y.query=I.query,Y.host=I.host||"",Y.auth=I.auth,Y.hostname=I.hostname||I.host,Y.port=I.port,(Y.pathname||Y.search)&&(Y.path=(Y.pathname||"")+(Y.search||"")),Y.slashes=Y.slashes||I.slashes,Y.href=Y.format(),Y}var $e=Y.pathname&&"/"===Y.pathname.charAt(0),F=I.host||I.pathname&&"/"===I.pathname.charAt(0),je=F||$e||Y.host&&I.pathname,Et=je,lt=Y.pathname&&Y.pathname.split("/")||[],nn=(be=I.pathname&&I.pathname.split("/")||[],Y.protocol&&!z[Y.protocol]);if(nn&&(Y.hostname="",Y.port=null,Y.host&&(""===lt[0]?lt[0]=Y.host:lt.unshift(Y.host)),Y.host="",I.protocol&&(I.hostname=null,I.port=null,I.host&&(""===be[0]?be[0]=I.host:be.unshift(I.host)),I.host=null),je=je&&(""===be[0]||""===lt[0])),F)Y.host=I.host||""===I.host?I.host:Y.host,Y.hostname=I.hostname||""===I.hostname?I.hostname:Y.hostname,Y.search=I.search,Y.query=I.query,lt=be;else if(be.length)lt||(lt=[]),lt.pop(),lt=lt.concat(be),Y.search=I.search,Y.query=I.query;else if(!s.isNullOrUndefined(I.search))return nn&&(Y.hostname=Y.host=lt.shift(),(ae=!!(Y.host&&Y.host.indexOf("@")>0)&&Y.host.split("@"))&&(Y.auth=ae.shift(),Y.host=Y.hostname=ae.shift())),Y.search=I.search,Y.query=I.query,s.isNull(Y.pathname)&&s.isNull(Y.search)||(Y.path=(Y.pathname?Y.pathname:"")+(Y.search?Y.search:"")),Y.href=Y.format(),Y;if(!lt.length)return Y.pathname=null,Y.path=Y.search?"/"+Y.search:null,Y.href=Y.format(),Y;for(var St=lt.slice(-1)[0],At=(Y.host||I.host||lt.length>1)&&("."===St||".."===St)||""===St,Qe=0,It=lt.length;It>=0;It--)"."===(St=lt[It])?lt.splice(It,1):".."===St?(lt.splice(It,1),Qe++):Qe&&(lt.splice(It,1),Qe--);if(!je&&!Et)for(;Qe--;Qe)lt.unshift("..");!je||""===lt[0]||lt[0]&&"/"===lt[0].charAt(0)||lt.unshift(""),At&&"/"!==lt.join("/").substr(-1)&&lt.push("");var ae,Ie=""===lt[0]||lt[0]&&"/"===lt[0].charAt(0);return nn&&(Y.hostname=Y.host=Ie?"":lt.length?lt.shift():"",(ae=!!(Y.host&&Y.host.indexOf("@")>0)&&Y.host.split("@"))&&(Y.auth=ae.shift(),Y.host=Y.hostname=ae.shift())),(je=je||Y.host&&lt.length)&&!Ie&&lt.unshift(""),lt.length?Y.pathname=lt.join("/"):(Y.pathname=null,Y.path=null),s.isNull(Y.pathname)&&s.isNull(Y.search)||(Y.path=(Y.pathname?Y.pathname:"")+(Y.search?Y.search:"")),Y.auth=I.auth||Y.auth,Y.slashes=Y.slashes||I.slashes,Y.href=Y.format(),Y},a.prototype.parseHost=function(){var I=this.host,J=u.exec(I);J&&(":"!==(J=J[0])&&(this.port=J.substr(1)),I=I.substr(0,I.length-J.length)),I&&(this.hostname=I)}},function(g,o,t){"use strict";t.r(o),t.d(o,"SHOW_AUTH_POPUP",function(){return D}),t.d(o,"AUTHORIZE",function(){return x}),t.d(o,"LOGOUT",function(){return j}),t.d(o,"PRE_AUTHORIZE_OAUTH2",function(){return H}),t.d(o,"AUTHORIZE_OAUTH2",function(){return z}),t.d(o,"VALIDATE",function(){return U}),t.d(o,"CONFIGURE_AUTH",function(){return M}),t.d(o,"RESTORE_AUTHORIZATION",function(){return I}),t.d(o,"showDefinitions",function(){return J}),t.d(o,"authorize",function(){return Y}),t.d(o,"authorizeWithPersistOption",function(){return ie}),t.d(o,"logout",function(){return oe}),t.d(o,"logoutWithPersistOption",function(){return fe}),t.d(o,"preAuthorizeImplicit",function(){return ne}),t.d(o,"authorizeOauth2",function(){return he}),t.d(o,"authorizeOauth2WithPersistOption",function(){return ce}),t.d(o,"authorizePassword",function(){return Ae}),t.d(o,"authorizeApplication",function(){return Me}),t.d(o,"authorizeAccessCodeWithFormParams",function(){return Oe}),t.d(o,"authorizeAccessCodeWithBasicAuthentication",function(){return be}),t.d(o,"authorizeRequest",function(){return ue}),t.d(o,"configureAuth",function(){return He}),t.d(o,"restoreAuthorization",function(){return $e}),t.d(o,"persistAuthorizationIfNeeded",function(){return F});var e=t(19),s=t.n(e),a=t(32),l=t.n(a),u=t(21),h=t.n(u),_=t(89),m=t.n(_),b=t(26),C=t(5),D="show_popup",x="authorize",j="logout",H="pre_authorize_oauth2",z="authorize_oauth2",U="validate",M="configure_auth",I="restore_authorization";function J(je){return{type:D,payload:je}}function Y(je){return{type:x,payload:je}}var ie=function(je){return function(Et){var lt=Et.authActions;lt.authorize(je),lt.persistAuthorizationIfNeeded()}};function oe(je){return{type:j,payload:je}}var fe=function(je){return function(Et){var lt=Et.authActions;lt.logout(je),lt.persistAuthorizationIfNeeded()}},ne=function(je){return function(Et){var lt=Et.authActions,nn=Et.errActions,St=je.auth,At=je.token,Qe=je.isValid,ae=St.name,Ie=St.schema.get("flow");delete b.a.swaggerUIRedirectOauth2,"accessCode"===Ie||Qe||nn.newAuthErr({authId:ae,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),At.error?nn.newAuthErr({authId:ae,source:"auth",level:"error",message:l()(At)}):lt.authorizeOauth2WithPersistOption({auth:St,token:At})}};function he(je){return{type:z,payload:je}}var ce=function(je){return function(Et){var lt=Et.authActions;lt.authorizeOauth2(je),lt.persistAuthorizationIfNeeded()}},Ae=function(je){return function(Et){var zt,ln,ar,lt=Et.authActions,nn=je.schema,St=je.name,At=je.username,Qe=je.password,It=je.passwordType,ae=je.clientId,Ie=je.clientSecret,dt={grant_type:"password",scope:je.scopes.join(" "),username:At,password:Qe},Jt={};switch(It){case"request-body":zt=dt,ar=Ie,(ln=ae)&&h()(zt,{client_id:ln}),ar&&h()(zt,{client_secret:ar});break;case"basic":Jt.Authorization="Basic "+Object(C.a)(ae+":"+Ie);break;default:console.warn("Warning: invalid passwordType ".concat(It," was passed, not including client id and secret"))}return lt.authorizeRequest({body:Object(C.b)(dt),url:nn.get("tokenUrl"),name:St,headers:Jt,query:{},auth:je})}},Me=function(je){return function(Et){var lt=Et.authActions,nn=je.schema,St=je.scopes,At=je.name,Qe=je.clientId,It=je.clientSecret,ae={Authorization:"Basic "+Object(C.a)(Qe+":"+It)},Ie={grant_type:"client_credentials",scope:St.join(" ")};return lt.authorizeRequest({body:Object(C.b)(Ie),name:At,url:nn.get("tokenUrl"),auth:je,headers:ae})}},Oe=function(je){var Et=je.auth,lt=je.redirectUrl;return function(nn){var At=Et.schema,Qe=Et.name,dt={grant_type:"authorization_code",code:Et.code,client_id:Et.clientId,client_secret:Et.clientSecret,redirect_uri:lt,code_verifier:Et.codeVerifier};return nn.authActions.authorizeRequest({body:Object(C.b)(dt),name:Qe,url:At.get("tokenUrl"),auth:Et})}},be=function(je){var Et=je.auth,lt=je.redirectUrl;return function(nn){var St=nn.authActions,At=Et.schema,Qe=Et.name,It=Et.clientId,ae=Et.clientSecret,Ie=Et.codeVerifier,dt={Authorization:"Basic "+Object(C.a)(It+":"+ae)},Jt={grant_type:"authorization_code",code:Et.code,client_id:It,redirect_uri:lt,code_verifier:Ie};return St.authorizeRequest({body:Object(C.b)(Jt),name:Qe,url:At.get("tokenUrl"),auth:Et,headers:dt})}},ue=function(je){return function(Et){var lt,nn=Et.fn,St=Et.getConfigs,At=Et.authActions,Qe=Et.errActions,It=Et.oas3Selectors,ae=Et.specSelectors,dt=je.body,Jt=je.query,zt=void 0===Jt?{}:Jt,ln=je.headers,ar=void 0===ln?{}:ln,Ln=je.name,Rn=je.url,er=je.auth,Mn=(Et.authSelectors.getConfigs()||{}).additionalQueryStringParams;if(ae.isOAS3()){var Ht=It.serverEffectiveValue(It.selectedServer());lt=m()(Rn,Ht,!0)}else lt=m()(Rn,ae.url(),!0);"object"===s()(Mn)&&(lt.query=h()({},lt.query,Mn));var tr=lt.toString(),Yn=h()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},ar);nn.fetch({url:tr,method:"post",headers:Yn,query:zt,body:dt,requestInterceptor:St().requestInterceptor,responseInterceptor:St().responseInterceptor}).then(function(Cn){var Kt=JSON.parse(Cn.data);Cn.ok?Kt&&Kt.error||Kt&&Kt.parseError?Qe.newAuthErr({authId:Ln,level:"error",source:"auth",message:l()(Kt)}):At.authorizeOauth2WithPersistOption({auth:er,token:Kt}):Qe.newAuthErr({authId:Ln,level:"error",source:"auth",message:Cn.statusText})}).catch(function(Cn){var Kt=new Error(Cn).message;if(Cn.response&&Cn.response.data){var dn=Cn.response.data;try{var Kn="string"==typeof dn?JSON.parse(dn):dn;Kn.error&&(Kt+=", error: ".concat(Kn.error)),Kn.error_description&&(Kt+=", description: ".concat(Kn.error_description))}catch(qn){}}Qe.newAuthErr({authId:Ln,level:"error",source:"auth",message:Kt})})}};function He(je){return{type:M,payload:je}}function $e(je){return{type:I,payload:je}}var F=function(){return function(je){var Et=je.authSelectors;if((0,je.getConfigs)().persistAuthorization){var lt=Et.authorized();localStorage.setItem("authorized",l()(lt.toJS()))}}}},function(g,o,t){var e=t(919);g.exports=function(s){for(var a=1;a<arguments.length;a++){var l=null!=arguments[a]?Object(arguments[a]):{},u=Object.keys(l);"function"==typeof Object.getOwnPropertySymbols&&(u=u.concat(Object.getOwnPropertySymbols(l).filter(function(h){return Object.getOwnPropertyDescriptor(l,h).enumerable}))),u.forEach(function(h){e(s,h,l[h])})}return s},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(27),s=t(73),a=e(e.bind);g.exports=function(l,u){return s(l),void 0===u?l:a?a(l,u):function(){return l.apply(u,arguments)}}},function(g,o,t){var e=t(48),s=t(63),a=t(94);g.exports=e?function(l,u,h){return s.f(l,u,a(1,h))}:function(l,u,h){return l[u]=h,l}},function(g,o,t){var e=t(27);g.exports=e([].slice)},function(g,o,t){var e=t(84),s=t(27),a=t(168),l=t(62),u=t(74),h=t(215),_=s([].push),m=function(b){var C=1==b,D=2==b,x=3==b,j=4==b,H=6==b,z=7==b,U=5==b||H;return function(M,I,J,Y){for(var ie,oe,fe=l(M),ne=a(fe),he=e(I,J),ce=u(ne),Ae=0,Me=Y||h,Oe=C?Me(M,ce):D||z?Me(M,0):void 0;ce>Ae;Ae++)if((U||Ae in ne)&&(oe=he(ie=ne[Ae],Ae,fe),b))if(C)Oe[Ae]=oe;else if(oe)switch(b){case 3:return!0;case 5:return ie;case 6:return Ae;case 2:_(Oe,ie)}else switch(b){case 4:return!1;case 7:_(Oe,ie)}return H?-1:x||j?j:Oe}};g.exports={forEach:m(0),map:m(1),filter:m(2),some:m(3),every:m(4),find:m(5),findIndex:m(6),filterReject:m(7)}},function(g,o,t){"use strict";t.r(o),t.d(o,"lastError",function(){return He}),t.d(o,"url",function(){return $e}),t.d(o,"specStr",function(){return F}),t.d(o,"specSource",function(){return je}),t.d(o,"specJson",function(){return Et}),t.d(o,"specResolved",function(){return lt}),t.d(o,"specResolvedSubtree",function(){return nn}),t.d(o,"specJsonWithResolvedSubtrees",function(){return At}),t.d(o,"spec",function(){return Qe}),t.d(o,"isOAS3",function(){return It}),t.d(o,"info",function(){return ae}),t.d(o,"externalDocs",function(){return Ie}),t.d(o,"version",function(){return dt}),t.d(o,"semver",function(){return Jt}),t.d(o,"paths",function(){return zt}),t.d(o,"operations",function(){return ln}),t.d(o,"consumes",function(){return ar}),t.d(o,"produces",function(){return Ln}),t.d(o,"security",function(){return Rn}),t.d(o,"securityDefinitions",function(){return er}),t.d(o,"findDefinition",function(){return Mn}),t.d(o,"definitions",function(){return Ht}),t.d(o,"basePath",function(){return tr}),t.d(o,"host",function(){return Yn}),t.d(o,"schemes",function(){return Cn}),t.d(o,"operationsWithRootInherited",function(){return Kt}),t.d(o,"tags",function(){return dn}),t.d(o,"tagDetails",function(){return Kn}),t.d(o,"operationsWithTags",function(){return qn}),t.d(o,"taggedOperations",function(){return Sn}),t.d(o,"responses",function(){return $n}),t.d(o,"requests",function(){return En}),t.d(o,"mutatedRequests",function(){return Fn}),t.d(o,"responseFor",function(){return Dn}),t.d(o,"requestFor",function(){return mn}),t.d(o,"mutatedRequestFor",function(){return jn}),t.d(o,"allowTryItOutFor",function(){return Xt}),t.d(o,"parameterWithMetaByIdentity",function(){return ut}),t.d(o,"parameterInclusionSettingFor",function(){return mt}),t.d(o,"parameterWithMeta",function(){return Tt}),t.d(o,"operationWithMeta",function(){return yn}),t.d(o,"getParameter",function(){return et}),t.d(o,"hasHost",function(){return jt}),t.d(o,"parameterValues",function(){return hn}),t.d(o,"parametersIncludeIn",function(){return Qn}),t.d(o,"parametersIncludeType",function(){return Ir}),t.d(o,"contentTypeValues",function(){return ht}),t.d(o,"currentProducesFor",function(){return L}),t.d(o,"producesOptionsFor",function(){return Ue}),t.d(o,"consumesOptionsFor",function(){return nt}),t.d(o,"operationScheme",function(){return at}),t.d(o,"canExecuteScheme",function(){return it}),t.d(o,"validateBeforeExecute",function(){return Pt}),t.d(o,"getOAS3RequiredRequestBodyContentType",function(){return Ut}),t.d(o,"isMediaTypeSchemaPropertiesEqual",function(){return ot});var e=t(13),s=t.n(e),a=t(14),l=t.n(a),u=t(2),h=t.n(u),_=t(20),m=t.n(_),b=t(23),C=t.n(b),D=t(18),x=t.n(D),j=t(4),H=t.n(j),z=t(12),U=t.n(z),M=t(56),I=t.n(M),J=t(30),Y=t.n(J),ie=t(196),oe=t.n(ie),fe=t(71),ne=t.n(fe),he=t(24),ce=t.n(he),Ae=t(16),Me=t(5),Oe=t(1),be=["get","put","post","delete","options","head","patch","trace"],ue=function(sn){return sn||Object(Oe.Map)()},He=Object(Ae.a)(ue,function(sn){return sn.get("lastError")}),$e=Object(Ae.a)(ue,function(sn){return sn.get("url")}),F=Object(Ae.a)(ue,function(sn){return sn.get("spec")||""}),je=Object(Ae.a)(ue,function(sn){return sn.get("specSource")||"not-editor"}),Et=Object(Ae.a)(ue,function(sn){return sn.get("json",Object(Oe.Map)())}),lt=Object(Ae.a)(ue,function(sn){return sn.get("resolved",Object(Oe.Map)())}),nn=function(sn,An){var Bn;return sn.getIn(h()(Bn=["resolvedSubtrees"]).call(Bn,l()(An)),void 0)},St=function sn(An,Bn){return Oe.Map.isMap(An)&&Oe.Map.isMap(Bn)?Bn.get("$$ref")?Bn:Object(Oe.OrderedMap)().mergeWith(sn,An,Bn):Bn},At=Object(Ae.a)(ue,function(sn){return Object(Oe.OrderedMap)().mergeWith(St,sn.get("json"),sn.get("resolvedSubtrees"))}),Qe=function(sn){return Et(sn)},It=Object(Ae.a)(Qe,function(){return!1}),ae=Object(Ae.a)(Qe,function(sn){return Nn(sn&&sn.get("info"))}),Ie=Object(Ae.a)(Qe,function(sn){return Nn(sn&&sn.get("externalDocs"))}),dt=Object(Ae.a)(ae,function(sn){return sn&&sn.get("version")}),Jt=Object(Ae.a)(dt,function(sn){var An;return m()(An=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(sn)).call(An,1)}),zt=Object(Ae.a)(At,function(sn){return sn.get("paths")}),ln=Object(Ae.a)(zt,function(sn){if(!sn||sn.size<1)return Object(Oe.List)();var An=Object(Oe.List)();return sn&&C()(sn)?(C()(sn).call(sn,function(Bn,ir){if(!Bn||!C()(Bn))return{};C()(Bn).call(Bn,function(mr,_r){var Nr;x()(be).call(be,_r)<0||(An=An.push(Object(Oe.fromJS)({path:ir,method:_r,operation:mr,id:h()(Nr="".concat(_r,"-")).call(Nr,ir)})))})}),An):Object(Oe.List)()}),ar=Object(Ae.a)(Qe,function(sn){return Object(Oe.Set)(sn.get("consumes"))}),Ln=Object(Ae.a)(Qe,function(sn){return Object(Oe.Set)(sn.get("produces"))}),Rn=Object(Ae.a)(Qe,function(sn){return sn.get("security",Object(Oe.List)())}),er=Object(Ae.a)(Qe,function(sn){return sn.get("securityDefinitions")}),Mn=function(sn,An){var Bn=sn.getIn(["resolvedSubtrees","definitions",An],null),ir=sn.getIn(["json","definitions",An],null);return Bn||ir||null},Ht=Object(Ae.a)(Qe,function(sn){var An=sn.get("definitions");return Oe.Map.isMap(An)?An:Object(Oe.Map)()}),tr=Object(Ae.a)(Qe,function(sn){return sn.get("basePath")}),Yn=Object(Ae.a)(Qe,function(sn){return sn.get("host")}),Cn=Object(Ae.a)(Qe,function(sn){return sn.get("schemes",Object(Oe.Map)())}),Kt=Object(Ae.a)(ln,ar,Ln,function(sn,An,Bn){return H()(sn).call(sn,function(ir){return ir.update("operation",function(mr){return mr?Oe.Map.isMap(mr)?mr.withMutations(function(_r){return _r.get("consumes")||_r.update("consumes",function(Nr){return Object(Oe.Set)(Nr).merge(An)}),_r.get("produces")||_r.update("produces",function(Nr){return Object(Oe.Set)(Nr).merge(Bn)}),_r}):void 0:Object(Oe.Map)()})})}),dn=Object(Ae.a)(Qe,function(sn){var An=sn.get("tags",Object(Oe.List)());return Oe.List.isList(An)?U()(An).call(An,function(Bn){return Oe.Map.isMap(Bn)}):Object(Oe.List)()}),Kn=function(sn,An){var Bn,ir=dn(sn)||Object(Oe.List)();return I()(Bn=U()(ir).call(ir,Oe.Map.isMap)).call(Bn,function(mr){return mr.get("name")===An},Object(Oe.Map)())},qn=Object(Ae.a)(Kt,dn,function(sn,An){return Y()(sn).call(sn,function(Bn,ir){var mr=Object(Oe.Set)(ir.getIn(["operation","tags"]));return mr.count()<1?Bn.update("default",Object(Oe.List)(),function(_r){return _r.push(ir)}):Y()(mr).call(mr,function(_r,Nr){return _r.update(Nr,Object(Oe.List)(),function(br){return br.push(ir)})},Bn)},Y()(An).call(An,function(Bn,ir){return Bn.set(ir.get("name"),Object(Oe.List)())},Object(Oe.OrderedMap)()))}),Sn=function(sn){return function(An){var Bn,ir=(0,An.getConfigs)(),mr=ir.tagsSorter,_r=ir.operationsSorter;return H()(Bn=qn(sn).sortBy(function(Nr,br){return br},function(Nr,br){var Jn="function"==typeof mr?mr:Me.H.tagsSorter[mr];return Jn?Jn(Nr,br):null})).call(Bn,function(Nr,br){var Jn="function"==typeof _r?_r:Me.H.operationsSorter[_r],nr=Jn?oe()(Nr).call(Nr,Jn):Nr;return Object(Oe.Map)({tagDetails:Kn(sn,br),operations:nr})})}},$n=Object(Ae.a)(ue,function(sn){return sn.get("responses",Object(Oe.Map)())}),En=Object(Ae.a)(ue,function(sn){return sn.get("requests",Object(Oe.Map)())}),Fn=Object(Ae.a)(ue,function(sn){return sn.get("mutatedRequests",Object(Oe.Map)())}),Dn=function(sn,An,Bn){return $n(sn).getIn([An,Bn],null)},mn=function(sn,An,Bn){return En(sn).getIn([An,Bn],null)},jn=function(sn,An,Bn){return Fn(sn).getIn([An,Bn],null)},Xt=function(){return!0},ut=function(sn,An,Bn){var ir,mr,_r=At(sn).getIn(h()(ir=["paths"]).call(ir,l()(An),["parameters"]),Object(Oe.OrderedMap)()),Nr=sn.getIn(h()(mr=["meta","paths"]).call(mr,l()(An),["parameters"]),Object(Oe.OrderedMap)()),br=H()(_r).call(_r,function(Jn){var nr,Mr,yi,Ii=Nr.get(h()(nr="".concat(Bn.get("in"),".")).call(nr,Bn.get("name"))),Mi=Nr.get(h()(Mr=h()(yi="".concat(Bn.get("in"),".")).call(yi,Bn.get("name"),".hash-")).call(Mr,Bn.hashCode()));return Object(Oe.OrderedMap)().merge(Jn,Ii,Mi)});return I()(br).call(br,function(Jn){return Jn.get("in")===Bn.get("in")&&Jn.get("name")===Bn.get("name")},Object(Oe.OrderedMap)())},mt=function(sn,An,Bn,ir){var mr,_r,Nr=h()(mr="".concat(ir,".")).call(mr,Bn);return sn.getIn(h()(_r=["meta","paths"]).call(_r,l()(An),["parameter_inclusions",Nr]),!1)},Tt=function(sn,An,Bn,ir){var mr,_r=At(sn).getIn(h()(mr=["paths"]).call(mr,l()(An),["parameters"]),Object(Oe.OrderedMap)()),Nr=I()(_r).call(_r,function(br){return br.get("in")===ir&&br.get("name")===Bn},Object(Oe.OrderedMap)());return ut(sn,An,Nr)},yn=function(sn,An,Bn){var ir,mr=At(sn).getIn(["paths",An,Bn],Object(Oe.OrderedMap)()),_r=sn.getIn(["meta","paths",An,Bn],Object(Oe.OrderedMap)()),Nr=H()(ir=mr.get("parameters",Object(Oe.List)())).call(ir,function(br){return ut(sn,[An,Bn],br)});return Object(Oe.OrderedMap)().merge(mr,_r).set("parameters",Nr)};function et(sn,An,Bn,ir){var mr;An=An||[];var _r=sn.getIn(h()(mr=["meta","paths"]).call(mr,l()(An),["parameters"]),Object(Oe.fromJS)([]));return I()(_r).call(_r,function(Nr){return Oe.Map.isMap(Nr)&&Nr.get("name")===Bn&&Nr.get("in")===ir})||Object(Oe.Map)()}var jt=Object(Ae.a)(Qe,function(sn){var An=sn.get("host");return"string"==typeof An&&An.length>0&&"/"!==An[0]});function hn(sn,An,Bn){var ir;An=An||[];var mr=yn.apply(void 0,h()(ir=[sn]).call(ir,l()(An))).get("parameters",Object(Oe.List)());return Y()(mr).call(mr,function(_r,Nr){var br=Bn&&"body"===Nr.get("in")?Nr.get("value_xml"):Nr.get("value");return _r.set(Object(Me.A)(Nr,{allowHashes:!1}),br)},Object(Oe.fromJS)({}))}function Qn(sn){var An=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(Oe.List.isList(sn))return ne()(sn).call(sn,function(Bn){return Oe.Map.isMap(Bn)&&Bn.get("in")===An})}function Ir(sn){var An=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(Oe.List.isList(sn))return ne()(sn).call(sn,function(Bn){return Oe.Map.isMap(Bn)&&Bn.get("type")===An})}function ht(sn,An){var Bn,ir;An=An||[];var mr=At(sn).getIn(h()(Bn=["paths"]).call(Bn,l()(An)),Object(Oe.fromJS)({})),_r=sn.getIn(h()(ir=["meta","paths"]).call(ir,l()(An)),Object(Oe.fromJS)({})),Nr=L(sn,An),br=mr.get("parameters")||new Oe.List,Jn=_r.get("consumes_value")?_r.get("consumes_value"):Ir(br,"file")?"multipart/form-data":Ir(br,"formData")?"application/x-www-form-urlencoded":void 0;return Object(Oe.fromJS)({requestContentType:Jn,responseContentType:Nr})}function L(sn,An){var Bn,ir;An=An||[];var mr=At(sn).getIn(h()(Bn=["paths"]).call(Bn,l()(An)),null);if(null!==mr){var _r=sn.getIn(h()(ir=["meta","paths"]).call(ir,l()(An),["produces_value"]),null),Nr=mr.getIn(["produces",0],null);return _r||Nr||"application/json"}}function Ue(sn,An){var Bn;An=An||[];var ir=At(sn),mr=ir.getIn(h()(Bn=["paths"]).call(Bn,l()(An)),null);if(null!==mr){var _r=An,Nr=s()(_r,1)[0],br=mr.get("produces",null),Jn=ir.getIn(["paths",Nr,"produces"],null),nr=ir.getIn(["produces"],null);return br||Jn||nr}}function nt(sn,An){var Bn;An=An||[];var ir=At(sn),mr=ir.getIn(h()(Bn=["paths"]).call(Bn,l()(An)),null);if(null!==mr){var _r=An,Nr=s()(_r,1)[0],br=mr.get("consumes",null),Jn=ir.getIn(["paths",Nr,"consumes"],null),nr=ir.getIn(["consumes"],null);return br||Jn||nr}}var at=function(sn,An,Bn){var ir=sn.get("url").match(/^([a-z][a-z0-9+\-.]*):/),mr=ce()(ir)?ir[1]:null;return sn.getIn(["scheme",An,Bn])||sn.getIn(["scheme","_defaultScheme"])||mr||""},it=function(sn,An,Bn){var ir;return x()(ir=["http","https"]).call(ir,at(sn,An,Bn))>-1},Pt=function(sn,An){var Bn;An=An||[];var ir=sn.getIn(h()(Bn=["meta","paths"]).call(Bn,l()(An),["parameters"]),Object(Oe.fromJS)([])),mr=!0;return C()(ir).call(ir,function(_r){var Nr=_r.get("errors");Nr&&Nr.count()&&(mr=!1)}),mr},Ut=function(sn,An){var Bn,ir,mr={requestBody:!1,requestContentType:{}},_r=sn.getIn(h()(Bn=["resolvedSubtrees","paths"]).call(Bn,l()(An),["requestBody"]),Object(Oe.fromJS)([]));return _r.size<1||(_r.getIn(["required"])&&(mr.requestBody=_r.getIn(["required"])),C()(ir=_r.getIn(["content"]).entrySeq()).call(ir,function(Nr){var br=Nr[0];if(Nr[1].getIn(["schema","required"])){var Jn=Nr[1].getIn(["schema","required"]).toJS();mr.requestContentType[br]=Jn}})),mr},ot=function(sn,An,Bn,ir){var mr;if((Bn||ir)&&Bn===ir)return!0;var _r=sn.getIn(h()(mr=["resolvedSubtrees","paths"]).call(mr,l()(An),["requestBody","content"]),Object(Oe.fromJS)([]));if(_r.size<2||!Bn||!ir)return!1;var Nr=_r.getIn([Bn,"schema","properties"],Object(Oe.fromJS)([])),br=_r.getIn([ir,"schema","properties"],Object(Oe.fromJS)([]));return!!Nr.equals(br)};function Nn(sn){return Oe.Map.isMap(sn)?sn:new Oe.Map}},function(g,o,t){"use strict";(function(e){var s=t(847),a=t(848),l=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,h=/^[a-zA-Z]:/,_=new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+");function m(z){return(z||"").toString().replace(_,"")}var b=[["#","hash"],["?","query"],function(z,U){return x(U.protocol)?z.replace(/\\/g,"/"):z},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d+)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],C={hash:1,query:1};function D(z){var U,M=("undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{}).location||{},I={},J=typeof(z=z||M);if("blob:"===z.protocol)I=new H(unescape(z.pathname),{});else if("string"===J)for(U in I=new H(z,{}),C)delete I[U];else if("object"===J){for(U in z)U in C||(I[U]=z[U]);void 0===I.slashes&&(I.slashes=l.test(z.href))}return I}function x(z){return"file:"===z||"ftp:"===z||"http:"===z||"https:"===z||"ws:"===z||"wss:"===z}function j(z,U){z=m(z),U=U||{};var M,I=u.exec(z),J=I[1]?I[1].toLowerCase():"",Y=!!I[2],ie=!!I[3],oe=0;return Y?ie?(M=I[2]+I[3]+I[4],oe=I[2].length+I[3].length):(M=I[2]+I[4],oe=I[2].length):ie?(M=I[3]+I[4],oe=I[3].length):M=I[4],"file:"===J?oe>=2&&(M=M.slice(2)):x(J)?M=I[4]:J?Y&&(M=M.slice(2)):oe>=2&&x(U.protocol)&&(M=I[4]),{protocol:J,slashes:Y||x(J),slashesCount:oe,rest:M}}function H(z,U,M){if(z=m(z),!(this instanceof H))return new H(z,U,M);var I,J,Y,ie,oe,fe,ne=b.slice(),he=typeof U,ce=this,Ae=0;for("object"!==he&&"string"!==he&&(M=U,U=null),M&&"function"!=typeof M&&(M=a.parse),I=!(J=j(z||"",U=D(U))).protocol&&!J.slashes,ce.slashes=J.slashes||I&&U.slashes,ce.protocol=J.protocol||U.protocol||"",z=J.rest,("file:"===J.protocol&&(2!==J.slashesCount||h.test(z))||!J.slashes&&(J.protocol||J.slashesCount<2||!x(ce.protocol)))&&(ne[3]=[/(.*)/,"pathname"]);Ae<ne.length;Ae++)"function"!=typeof(ie=ne[Ae])?(fe=ie[1],(Y=ie[0])!=Y?ce[fe]=z:"string"==typeof Y?~(oe=z.indexOf(Y))&&("number"==typeof ie[2]?(ce[fe]=z.slice(0,oe),z=z.slice(oe+ie[2])):(ce[fe]=z.slice(oe),z=z.slice(0,oe))):(oe=Y.exec(z))&&(ce[fe]=oe[1],z=z.slice(0,oe.index)),ce[fe]=ce[fe]||I&&ie[3]&&U[fe]||"",ie[4]&&(ce[fe]=ce[fe].toLowerCase())):z=ie(z,ce);M&&(ce.query=M(ce.query)),I&&U.slashes&&"/"!==ce.pathname.charAt(0)&&(""!==ce.pathname||""!==U.pathname)&&(ce.pathname=function(Me,Oe){if(""===Me)return Oe;for(var be=(Oe||"/").split("/").slice(0,-1).concat(Me.split("/")),ue=be.length,He=be[ue-1],$e=!1,F=0;ue--;)"."===be[ue]?be.splice(ue,1):".."===be[ue]?(be.splice(ue,1),F++):F&&(0===ue&&($e=!0),be.splice(ue,1),F--);return $e&&be.unshift(""),"."!==He&&".."!==He||be.push(""),be.join("/")}(ce.pathname,U.pathname)),"/"!==ce.pathname.charAt(0)&&x(ce.protocol)&&(ce.pathname="/"+ce.pathname),s(ce.port,ce.protocol)||(ce.host=ce.hostname,ce.port=""),ce.username=ce.password="",ce.auth&&(ie=ce.auth.split(":"),ce.username=ie[0]||"",ce.password=ie[1]||""),ce.origin="file:"!==ce.protocol&&x(ce.protocol)&&ce.host?ce.protocol+"//"+ce.host:"null",ce.href=ce.toString()}H.prototype={set:function(z,U,M){var I=this;switch(z){case"query":"string"==typeof U&&U.length&&(U=(M||a.parse)(U)),I[z]=U;break;case"port":I[z]=U,s(U,I.protocol)?U&&(I.host=I.hostname+":"+U):(I.host=I.hostname,I[z]="");break;case"hostname":I[z]=U,I.port&&(U+=":"+I.port),I.host=U;break;case"host":I[z]=U,/:\d+$/.test(U)?(U=U.split(":"),I.port=U.pop(),I.hostname=U.join(":")):(I.hostname=U,I.port="");break;case"protocol":I.protocol=U.toLowerCase(),I.slashes=!M;break;case"pathname":case"hash":if(U){var J="pathname"===z?"/":"#";I[z]=U.charAt(0)!==J?J+U:U}else I[z]=U;break;default:I[z]=U}for(var Y=0;Y<b.length;Y++){var ie=b[Y];ie[4]&&(I[ie[1]]=I[ie[1]].toLowerCase())}return I.origin="file:"!==I.protocol&&x(I.protocol)&&I.host?I.protocol+"//"+I.host:"null",I.href=I.toString(),I},toString:function(z){z&&"function"==typeof z||(z=a.stringify);var U,M=this,I=M.protocol;I&&":"!==I.charAt(I.length-1)&&(I+=":");var J=I+(M.slashes||x(M.protocol)?"//":"");return M.username&&(J+=M.username,M.password&&(J+=":"+M.password),J+="@"),J+=M.host+M.pathname,(U="object"==typeof M.query?z(M.query):M.query)&&(J+="?"!==U.charAt(0)?"?"+U:U),M.hash&&(J+=M.hash),J}},H.extractProtocol=j,H.location=D,H.trimLeft=m,H.qs=a,g.exports=H}).call(this,t(57))},function(g,o,t){g.exports=t(951)},function(g,o,t){"use strict";t.d(o,"b",function(){return er}),t.d(o,"a",function(){return F});var e=t(15),s=t.n(e),a=t(31),l=t.n(a),u=t(461),h=t.n(u),_=t(462),m=t.n(_),b=t(83),C=t.n(b),D=t(0),x=t.n(D),j=t(463),H=t.n(j),z={};function U(Mn){if(0===Mn.length||1===Mn.length)return Mn;var Ht,tr,Yn=Mn.join(".");return z[Yn]||(z[Yn]=0===(tr=(Ht=Mn).length)||1===tr?Ht:2===tr?[Ht[0],Ht[1],"".concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[1],".").concat(Ht[0])]:3===tr?[Ht[0],Ht[1],Ht[2],"".concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[0]),"".concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[1],".").concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[2],".").concat(Ht[1],".").concat(Ht[0])]:tr>=4?[Ht[0],Ht[1],Ht[2],Ht[3],"".concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[3]),"".concat(Ht[1],".").concat(Ht[0]),"".concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[3]),"".concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[2],".").concat(Ht[3]),"".concat(Ht[3],".").concat(Ht[0]),"".concat(Ht[3],".").concat(Ht[1]),"".concat(Ht[3],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[1],".").concat(Ht[3]),"".concat(Ht[0],".").concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[2],".").concat(Ht[3]),"".concat(Ht[0],".").concat(Ht[3],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[3],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[0],".").concat(Ht[3]),"".concat(Ht[1],".").concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[1],".").concat(Ht[2],".").concat(Ht[3]),"".concat(Ht[1],".").concat(Ht[3],".").concat(Ht[0]),"".concat(Ht[1],".").concat(Ht[3],".").concat(Ht[2]),"".concat(Ht[2],".").concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[2],".").concat(Ht[0],".").concat(Ht[3]),"".concat(Ht[2],".").concat(Ht[1],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[1],".").concat(Ht[3]),"".concat(Ht[2],".").concat(Ht[3],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[3],".").concat(Ht[1]),"".concat(Ht[3],".").concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[3],".").concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[3],".").concat(Ht[1],".").concat(Ht[0]),"".concat(Ht[3],".").concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[3],".").concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[3],".").concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[1],".").concat(Ht[2],".").concat(Ht[3]),"".concat(Ht[0],".").concat(Ht[1],".").concat(Ht[3],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[2],".").concat(Ht[1],".").concat(Ht[3]),"".concat(Ht[0],".").concat(Ht[2],".").concat(Ht[3],".").concat(Ht[1]),"".concat(Ht[0],".").concat(Ht[3],".").concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[0],".").concat(Ht[3],".").concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[1],".").concat(Ht[0],".").concat(Ht[2],".").concat(Ht[3]),"".concat(Ht[1],".").concat(Ht[0],".").concat(Ht[3],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[2],".").concat(Ht[0],".").concat(Ht[3]),"".concat(Ht[1],".").concat(Ht[2],".").concat(Ht[3],".").concat(Ht[0]),"".concat(Ht[1],".").concat(Ht[3],".").concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[1],".").concat(Ht[3],".").concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[0],".").concat(Ht[1],".").concat(Ht[3]),"".concat(Ht[2],".").concat(Ht[0],".").concat(Ht[3],".").concat(Ht[1]),"".concat(Ht[2],".").concat(Ht[1],".").concat(Ht[0],".").concat(Ht[3]),"".concat(Ht[2],".").concat(Ht[1],".").concat(Ht[3],".").concat(Ht[0]),"".concat(Ht[2],".").concat(Ht[3],".").concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[2],".").concat(Ht[3],".").concat(Ht[1],".").concat(Ht[0]),"".concat(Ht[3],".").concat(Ht[0],".").concat(Ht[1],".").concat(Ht[2]),"".concat(Ht[3],".").concat(Ht[0],".").concat(Ht[2],".").concat(Ht[1]),"".concat(Ht[3],".").concat(Ht[1],".").concat(Ht[0],".").concat(Ht[2]),"".concat(Ht[3],".").concat(Ht[1],".").concat(Ht[2],".").concat(Ht[0]),"".concat(Ht[3],".").concat(Ht[2],".").concat(Ht[0],".").concat(Ht[1]),"".concat(Ht[3],".").concat(Ht[2],".").concat(Ht[1],".").concat(Ht[0])]:void 0),z[Yn]}function M(Mn){var Ht=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},tr=arguments.length>2?arguments[2]:void 0,Yn=Mn.filter(function(Kt){return"token"!==Kt}),Cn=U(Yn);return Cn.reduce(function(Kt,dn){return C()({},Kt,tr[dn])},Ht)}function I(Mn){return Mn.join(" ")}function J(Mn){var ut,mt,Tt,Ht=Mn.node,tr=Mn.stylesheet,Yn=Mn.style,Cn=void 0===Yn?{}:Yn,Kt=Mn.useInlineStyles,dn=Mn.key,Kn=Ht.properties,Sn=Ht.tagName;if("text"===Ht.type)return Ht.value;if(Sn){var En,Fn=(ut=tr,mt=Kt,Tt=0,function(yn){return Tt+=1,yn.map(function(et,jt){return J({node:et,stylesheet:ut,useInlineStyles:mt,key:"code-segment-".concat(Tt,"-").concat(jt)})})});if(Kt){var Dn=Object.keys(tr).reduce(function(ut,mt){return mt.split(".").forEach(function(Tt){ut.includes(Tt)||ut.push(Tt)}),ut},[]),mn=Kn.className&&Kn.className.includes("token")?["token"]:[],jn=Kn.className&&mn.concat(Kn.className.filter(function(ut){return!Dn.includes(ut)}));En=C()({},Kn,{className:I(jn)||void 0,style:M(Kn.className,Object.assign({},Kn.style,Cn),tr)})}else En=C()({},Kn,{className:I(Kn.className)});var Xt=Fn(Ht.children);return x.a.createElement(Sn,H()({key:dn},En),Xt)}}var Y=/\n/g;function ie(Mn){var qn,$n,En,Ht=Mn.codeString,Yn=Mn.containerStyle,Kt=Mn.numberStyle,dn=void 0===Kt?{}:Kt,Kn=Mn.startingLineNumber;return x.a.createElement("code",{style:Object.assign({},Mn.codeStyle,void 0===Yn?{float:"left",paddingRight:"10px"}:Yn)},(qn={lines:Ht.replace(/\n$/,"").split("\n"),style:dn,startingLineNumber:Kn},$n=qn.startingLineNumber,En=qn.style,qn.lines.map(function(Fn,Dn){var mn=Dn+$n;return x.a.createElement("span",{key:"line-".concat(Dn),className:"react-syntax-highlighter-line-number",style:"function"==typeof En?En(mn):En},"".concat(mn,"\n"))})))}function oe(Mn,Ht){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(Mn),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:Ht},children:[{type:"text",value:Mn}]}}function fe(Mn,Ht,tr){var Yn,Cn={display:"inline-block",minWidth:(Yn=tr,"".concat(Yn.toString().length,".25em")),paddingRight:"1em",textAlign:"right",userSelect:"none"},Kt="function"==typeof Mn?Mn(Ht):Mn;return C()({},Cn,Kt)}function ne(Mn){var Ht=Mn.children,tr=Mn.lineNumber,Yn=Mn.lineNumberStyle,Cn=Mn.largestLineNumber,Kt=Mn.showInlineLineNumbers,dn=Mn.lineProps,Kn=void 0===dn?{}:dn,qn=Mn.className,Sn=void 0===qn?[]:qn,$n=Mn.showLineNumbers,En=Mn.wrapLongLines,Fn="function"==typeof Kn?Kn(tr):Kn;if(Fn.className=Sn,tr&&Kt){var Dn=fe(Yn,tr,Cn);Ht.unshift(oe(tr,Dn))}return En&$n&&(Fn.style=C()({},Fn.style,{display:"flex"})),{type:"element",tagName:"span",properties:Fn,children:Ht}}function he(Mn){for(var Ht=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],tr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],Yn=0;Yn<Mn.length;Yn++){var Cn=Mn[Yn];if("text"===Cn.type)tr.push(ne({children:[Cn],className:m()(new Set(Ht))}));else if(Cn.children){var Kt=Ht.concat(Cn.properties.className);tr=tr.concat(he(Cn.children,Kt))}}return tr}function ce(Mn,Ht,tr,Yn,Cn,Kt,dn,Kn,qn){var Sn,$n=he(Mn.value),En=[],Fn=-1,Dn=0;function mn(yn,et){var jt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return ne({children:yn,lineNumber:et,lineNumberStyle:Kn,largestLineNumber:dn,showInlineLineNumbers:Cn,lineProps:tr,className:jt,showLineNumbers:Yn,wrapLongLines:qn})}function jn(yn,et){if(Yn&&et&&Cn){var jt=fe(Kn,et,dn);yn.unshift(oe(et,jt))}return yn}function Xt(yn,et){var jt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return Ht||jt.length>0?mn(yn,et,jt):jn(yn,et)}for(var ut=function(){var yn=$n[Dn],et=yn.children[0].value;if(et.match(Y)){var jt=et.split("\n");jt.forEach(function(hn,Qn){var Ir=Yn&&En.length+Kt,ht={type:"text",value:"".concat(hn,"\n")};if(0===Qn){var L=Xt($n.slice(Fn+1,Dn).concat(ne({children:[ht],className:yn.properties.className})),Ir);En.push(L)}else if(Qn===jt.length-1)if($n[Dn+1]&&$n[Dn+1].children&&$n[Dn+1].children[0]){var Ue=ne({children:[{type:"text",value:"".concat(hn)}],className:yn.properties.className});$n.splice(Dn+1,0,Ue)}else{var nt=Xt([ht],Ir,yn.properties.className);En.push(nt)}else{var at=Xt([ht],Ir,yn.properties.className);En.push(at)}}),Fn=Dn}Dn++};Dn<$n.length;)ut();if(Fn!==$n.length-1){var mt=$n.slice(Fn+1,$n.length);if(mt&&mt.length){var Tt=Xt(mt,Yn&&En.length+Kt);En.push(Tt)}}return Ht?En:(Sn=[]).concat.apply(Sn,En)}function Ae(Mn){var tr=Mn.stylesheet,Yn=Mn.useInlineStyles;return Mn.rows.map(function(Cn,Kt){return J({node:Cn,stylesheet:tr,useInlineStyles:Yn,key:"code-segement".concat(Kt)})})}function Me(Mn){return Mn&&void 0!==Mn.highlightAuto}var Oe,be,ue=t(323),He=t.n(ue),$e=(Oe=He.a,be={},function(Mn){var Ht=Mn.language,tr=Mn.children,Yn=Mn.style,Cn=void 0===Yn?be:Yn,Kt=Mn.customStyle,dn=void 0===Kt?{}:Kt,Kn=Mn.codeTagProps,qn=void 0===Kn?{className:Ht?"language-".concat(Ht):void 0,style:C()({},Cn['code[class*="language-"]'],Cn['code[class*="language-'.concat(Ht,'"]')])}:Kn,Sn=Mn.useInlineStyles,$n=void 0===Sn||Sn,En=Mn.showLineNumbers,Fn=void 0!==En&&En,Dn=Mn.showInlineLineNumbers,mn=void 0===Dn||Dn,jn=Mn.startingLineNumber,Xt=void 0===jn?1:jn,ut=Mn.lineNumberContainerStyle,mt=Mn.lineNumberStyle,Tt=void 0===mt?{}:mt,yn=Mn.wrapLines,et=Mn.wrapLongLines,jt=void 0!==et&&et,hn=Mn.lineProps,Qn=void 0===hn?{}:hn,Ir=Mn.renderer,ht=Mn.PreTag,L=void 0===ht?"pre":ht,Ue=Mn.CodeTag,nt=void 0===Ue?"code":Ue,at=Mn.code,it=void 0===at?Array.isArray(tr)?tr[0]:tr:at,Pt=Mn.astGenerator,Ut=h()(Mn,["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"]);Pt=Pt||Oe;var ot=Fn?x.a.createElement(ie,{containerStyle:ut,codeStyle:qn.style||{},numberStyle:Tt,startingLineNumber:Xt,codeString:it}):null,Nn=Cn.hljs||Cn['pre[class*="language-"]']||{backgroundColor:"#fff"},sn=Me(Pt)?"hljs":"prismjs",An=Object.assign({},Ut,$n?{style:Object.assign({},Nn,dn)}:{className:Ut.className?"".concat(sn," ").concat(Ut.className):sn,style:Object.assign({},dn)});if(!Pt)return x.a.createElement(L,An,ot,x.a.createElement(nt,qn,it));(void 0===yn&&Ir||jt)&&(yn=!0),Ir=Ir||Ae;var Bn=[{type:"text",value:it}],ir=function(_r){var Ii,Nr=_r.astGenerator,br=_r.language,Jn=_r.code,nr=_r.defaultCodeValue;if(Me(Nr)){var Mr=(Ii=br,-1!==Nr.listLanguages().indexOf(Ii));return"text"===br?{value:nr,language:"text"}:Mr?Nr.highlight(br,Jn):Nr.highlightAuto(Jn)}try{return br&&"text"!==br?{value:Nr.highlight(Jn,br)}:{value:nr}}catch(yi){return{value:nr}}}({astGenerator:Pt,language:Ht,code:it,defaultCodeValue:Bn});null===ir.language&&(ir.value=Bn);var mr=ce(ir,yn,Qn,Fn,mn,Xt,ir.value.length+Xt,Tt,jt);return qn.style=jt?C()({},qn.style,{whiteSpace:"pre-wrap"}):C()({},qn.style,{whiteSpace:"pre"}),x.a.createElement(L,An,x.a.createElement(nt,qn,!mn&&ot,Ir({rows:mr,stylesheet:Cn,useInlineStyles:$n})))});$e.registerLanguage=He.a.registerLanguage;var F=$e,je=t(465),Et=t.n(je).a,lt=t(464),nn=t.n(lt).a,St=t(466),At=t.n(St).a,Qe=t(469),It=t.n(Qe).a,ae=t(467),Ie=t.n(ae).a,dt=t(468),Jt=t.n(dt).a,zt=t(470),ln=t.n(zt).a,ar={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}};F.registerLanguage("json",nn),F.registerLanguage("js",Et),F.registerLanguage("xml",At),F.registerLanguage("yaml",Ie),F.registerLanguage("http",Jt),F.registerLanguage("bash",It),F.registerLanguage("powershell",ln),F.registerLanguage("javascript",Et);var Ln={agate:ar,arta:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},monokai:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},nord:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},Rn=s()(Ln),er=function(Mn){return l()(Rn).call(Rn,Mn)?Ln[Mn]:(console.warn("Request style '".concat(Mn,"' is not available, returning default instead")),ar)}},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.File=o.Blob=o.FormData=void 0;const e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window;o.FormData=e.FormData,o.Blob=e.Blob,o.File=e.File},function(g,o){var t=Function.prototype,e=t.apply,a=t.call;g.exports="object"==typeof Reflect&&Reflect.apply||(t.bind?a.bind(e):function(){return a.apply(e,arguments)})},function(g,o){g.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(g,o,t){var e=t(58);g.exports=e("navigator","userAgent")||""},function(g,o){g.exports=!0},function(g,o){},function(g,o,t){var e,s=t(51),a=t(218),l=t(221),u=t(150),h=t(335),_=t(214),b=t(173)("IE_PROTO"),C=function(){},D=function(H){return"<script>"+H+"<\/script>"},x=function(H){H.write(D("")),H.close();var z=H.parentWindow.Object;return H=null,z},j=function(){try{e=new ActiveXObject("htmlfile")}catch(M){}var H,z;j="undefined"!=typeof document?document.domain&&e?x(e):((z=_("iframe")).style.display="none",h.appendChild(z),z.src=String("javascript:"),(H=z.contentWindow.document).open(),H.write(D("document.F=Object")),H.close(),H.F):x(e);for(var U=l.length;U--;)delete j.prototype[l[U]];return j()};u[b]=!0,g.exports=Object.create||function(H,z){var U;return null!==H?(C.prototype=s(H),U=new C,C.prototype=null,U[b]=H):U=j(),void 0===z?U:a(U,z)}},function(g,o,t){var e=t(85);g.exports=function(s,a,l,u){u&&u.enumerable?s[a]=l:e(s,a,l)}},function(g,o,t){var e=t(216),s=t(63).f,a=t(85),l=t(44),u=t(489),h=t(38)("toStringTag");g.exports=function(_,m,b,C){if(_){var D=b?_:_.prototype;l(D,h)||s(D,h,{configurable:!0,value:m}),C&&!e&&a(D,"toString",u)}}},function(g,o,t){"use strict";g.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(g,o,t){var e=t(662);g.exports=function(s){return null==s?"":e(s)}},function(g,o){g.exports=function(t,e){return t===e||t!=t&&e!=e}},function(g,o,t){var e=t(116),s=t(53);g.exports=function(a){if(!s(a))return!1;var l=e(a);return"[object Function]"==l||"[object GeneratorFunction]"==l||"[object AsyncFunction]"==l||"[object Proxy]"==l}},function(g,o,t){g.exports=t(655)},function(g,o,t){g.exports=t(374)},function(g,o,t){"use strict";function e(s){return function(a){try{return!!JSON.parse(a)}catch(l){return null}}(s)?"json":null}t.d(o,"a",function(){return e})},function(g,o,t){g.exports=t(651)},function(g,o,t){"use strict";t.r(o),t.d(o,"UPDATE_LAYOUT",function(){return s}),t.d(o,"UPDATE_FILTER",function(){return a}),t.d(o,"UPDATE_MODE",function(){return l}),t.d(o,"SHOW",function(){return u}),t.d(o,"updateLayout",function(){return h}),t.d(o,"updateFilter",function(){return _}),t.d(o,"show",function(){return m}),t.d(o,"changeMode",function(){return b});var e=t(5),s="layout_update_layout",a="layout_update_filter",l="layout_update_mode",u="layout_show";function h(C){return{type:s,payload:C}}function _(C){return{type:a,payload:C}}function m(C){var D=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return C=Object(e.v)(C),{type:u,payload:{thing:C,shown:D}}}function b(C){var D=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return C=Object(e.v)(C),{type:l,payload:{thing:C,mode:D}}}},function(g,o,t){var e=t(397),s=t(155),a=t(151),l=t(52),u=t(117),h=t(152),_=t(184),m=t(185),b=Object.prototype.hasOwnProperty;g.exports=function(C){if(null==C)return!0;if(u(C)&&(l(C)||"string"==typeof C||"function"==typeof C.splice||h(C)||m(C)||a(C)))return!C.length;var D=s(C);if("[object Map]"==D||"[object Set]"==D)return!C.size;if(_(C))return!e(C).length;for(var x in C)if(b.call(C,x))return!1;return!0}},function(g,o,t){var e=t(48),s=t(50),a=t(167),l=t(94),u=t(61),h=t(169),_=t(44),m=t(330),b=Object.getOwnPropertyDescriptor;o.f=e?b:function(C,D){if(C=u(C),D=h(D),m)try{return b(C,D)}catch(x){}if(_(C,D))return l(!s(a.f,C,D),C[D])}},function(g,o,t){var e=t(27),s=e({}.toString),a=e("".slice);g.exports=function(l){return a(s(l),8,-1)}},function(g,o,t){var e=t(17).TypeError;g.exports=function(s){if(null==s)throw e("Can't call method on "+s);return s}},function(g,o,t){"use strict";var e=t(33);g.exports=function(s,a){var l=[][s];return!!l&&e(function(){l.call(null,a||function(){throw 1},1)})}},function(g,o,t){var e=t(571),s=t(576);g.exports=function(a,l){var u=s(a,l);return e(u)?u:void 0}},function(g,o,t){var e=t(133),s=t(572),a=t(573),l=e?e.toStringTag:void 0;g.exports=function(u){return null==u?void 0===u?"[object Undefined]":"[object Null]":l&&l in Object(u)?s(u):a(u)}},function(g,o,t){var e=t(104),s=t(232);g.exports=function(a){return null!=a&&s(a.length)&&!e(a)}},function(g,o){var t,e,s=g.exports={};function a(){throw new Error("setTimeout has not been defined")}function l(){throw new Error("clearTimeout has not been defined")}function u(H){if(t===setTimeout)return setTimeout(H,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(H,0);try{return t(H,0)}catch(z){try{return t.call(null,H,0)}catch(U){return t.call(this,H,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:a}catch(H){t=a}try{e="function"==typeof clearTimeout?clearTimeout:l}catch(H){e=l}}();var h,_=[],m=!1,b=-1;function C(){m&&h&&(m=!1,h.length?_=h.concat(_):b=-1,_.length&&D())}function D(){if(!m){var H=u(C);m=!0;for(var z=_.length;z;){for(h=_,_=[];++b<z;)h&&h[b].run();b=-1,z=_.length}h=null,m=!1,function(U){if(e===clearTimeout)return clearTimeout(U);if((e===l||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(U);try{e(U)}catch(M){try{return e.call(null,U)}catch(I){return e.call(this,U)}}}(H)}}function x(H,z){this.fun=H,this.array=z}function j(){}s.nextTick=function(H){var z=new Array(arguments.length-1);if(arguments.length>1)for(var U=1;U<arguments.length;U++)z[U-1]=arguments[U];_.push(new x(H,z)),1!==_.length||m||u(D)},x.prototype.run=function(){this.fun.apply(null,this.array)},s.title="browser",s.browser=!0,s.env={},s.argv=[],s.version="",s.versions={},s.on=j,s.addListener=j,s.once=j,s.off=j,s.removeListener=j,s.removeAllListeners=j,s.emit=j,s.prependListener=j,s.prependOnceListener=j,s.listeners=function(H){return[]},s.binding=function(H){throw new Error("process.binding is not supported")},s.cwd=function(){return"/"},s.chdir=function(H){throw new Error("process.chdir is not supported")},s.umask=function(){return 0}},function(g,o,t){"use strict";var e=t(190),s=Object.keys||function(x){var j=[];for(var H in x)j.push(H);return j};g.exports=b;var a=Object.create(t(157));a.inherits=t(64);var l=t(402),u=t(246);a.inherits(b,l);for(var h=s(u.prototype),_=0;_<h.length;_++){var m=h[_];b.prototype[m]||(b.prototype[m]=u.prototype[m])}function b(x){if(!(this instanceof b))return new b(x);l.call(this,x),u.call(this,x),x&&!1===x.readable&&(this.readable=!1),x&&!1===x.writable&&(this.writable=!1),this.allowHalfOpen=!0,x&&!1===x.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",C)}function C(){this.allowHalfOpen||this._writableState.ended||e.nextTick(D,this)}function D(x){x.end()}Object.defineProperty(b.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(x){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=x,this._writableState.destroyed=x)}}),b.prototype._destroy=function(x,j){this.push(null),this.end(),e.nextTick(j,x)}},function(g,o,t){"use strict";var e=t(725)();g.exports=function(s){return s!==e&&null!==s}},function(g,o,t){"use strict";var e=t(726),s=Math.max;g.exports=function(a){return s(0,e(a))}},function(g,o,t){},function(g,o,t){"use strict";var e=t(413),s=t(740),a=t(410),l=t(408),u=t(744);(g.exports=function(h,_){var m,b,C,D,x;return arguments.length<2||"string"!=typeof h?(D=_,_=h,h=null):D=arguments[2],e(h)?(m=u.call(h,"c"),b=u.call(h,"e"),C=u.call(h,"w")):(m=C=!0,b=!1),x={value:_,configurable:m,enumerable:b,writable:C},D?a(l(D),x):x}).gs=function(h,_,m){var b,C,D,x;return"string"!=typeof h?(D=m,m=_,_=h,h=null):D=arguments[3],e(_)?s(_)?e(m)?s(m)||(D=m,m=void 0):m=void 0:(D=_,_=m=void 0):_=void 0,e(h)?(b=u.call(h,"c"),C=u.call(h,"e")):(b=!0,C=!1),x={get:_,set:m,configurable:b,enumerable:C},D?a(l(D),x):x}},function(g,o,t){var e=t(17),s=t(84),a=t(50),l=t(51),u=t(170),h=t(377),_=t(74),m=t(35),b=t(239),C=t(154),D=t(376),x=e.TypeError,j=function(z,U){this.stopped=z,this.result=U},H=j.prototype;g.exports=function(z,U,M){var I,J,Y,ie,oe,fe,ne,ce=!(!M||!M.AS_ENTRIES),Ae=!(!M||!M.IS_ITERATOR),Me=!(!M||!M.INTERRUPTED),Oe=s(U,M&&M.that),be=function(He){return I&&D(I,"normal",He),new j(!0,He)},ue=function(He){return ce?(l(He),Me?Oe(He[0],He[1],be):Oe(He[0],He[1])):Me?Oe(He,be):Oe(He)};if(Ae)I=z;else{if(!(J=C(z)))throw x(u(z)+" is not iterable");if(h(J)){for(Y=0,ie=_(z);ie>Y;Y++)if((oe=ue(z[Y]))&&m(H,oe))return oe;return new j(!1)}I=b(z,J)}for(fe=I.next;!(ne=a(fe,I)).done;){try{oe=ue(ne.value)}catch(He){D(I,"throw",He)}if("object"==typeof oe&&oe&&m(H,oe))return oe}return new j(!1)}},function(g,o,t){g.exports=t(962)},function(g,o,t){"use strict";(function(e,s){var a=65536,u=t(65).Buffer,h=e.crypto||e.msCrypto;g.exports=h&&h.getRandomValues?function(_,m){if(_>4294967295)throw new RangeError("requested too many random bytes");var b=u.allocUnsafe(_);if(_>0)if(_>a)for(var C=0;C<_;C+=a)h.getRandomValues(b.slice(C,C+a));else h.getRandomValues(b);return"function"==typeof m?s.nextTick(function(){m(null,b)}):b}:function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this,t(57),t(118))},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return m});var e=t(12),s=t.n(e),a=t(4),l=t.n(a),u=t(456),h=t.n(u),_=[t(258),t(259)];function m(b){var C,D={jsSpec:{}},x=h()(_,function(j,H){try{var z=H.transform(j,D);return s()(z).call(z,function(U){return!!U})}catch(U){return console.error("Transformer error:",U),j}},b);return l()(C=s()(x).call(x,function(j){return!!j})).call(C,function(j){return!j.get("line")&&j.get("path"),j})}},function(g,o,t){var e,s,a=t(17),l=t(95),u=a.process,h=a.Deno,_=u&&u.versions||h&&h.version,m=_&&_.v8;m&&(s=(e=m.split("."))[0]>0&&e[0]<4?1:+(e[0]+e[1])),!s&&l&&(!(e=l.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=l.match(/Chrome\/(\d+)/))&&(s=+e[1]),g.exports=s},function(g,o){var t=Math.ceil,e=Math.floor;g.exports=function(s){var a=+s;return a!=a||0===a?0:(a>0?e:t)(a)}},function(g,o){g.exports={}},function(g,o,t){"use strict";var e=t(343).charAt,s=t(67),a=t(76),l=t(225),u="String Iterator",h=a.set,_=a.getterFor(u);l(String,"String",function(m){h(this,{type:u,string:s(m),index:0})},function(){var m,b=_(this),C=b.string,D=b.index;return D>=C.length?{value:void 0,done:!0}:(m=e(C,D),b.index+=m.length,{value:m,done:!1})})},function(g,o,t){"use strict";(function(e){var s=t(530),a=t(531),l=t(346);function u(){return _.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function h(ae,Ie){if(u()<Ie)throw new RangeError("Invalid typed array length");return _.TYPED_ARRAY_SUPPORT?(ae=new Uint8Array(Ie)).__proto__=_.prototype:(null===ae&&(ae=new _(Ie)),ae.length=Ie),ae}function _(ae,Ie,dt){if(!(_.TYPED_ARRAY_SUPPORT||this instanceof _))return new _(ae,Ie,dt);if("number"==typeof ae){if("string"==typeof Ie)throw new Error("If encoding is specified then the first argument must be a string");return C(this,ae)}return m(this,ae,Ie,dt)}function m(ae,Ie,dt,Jt){if("number"==typeof Ie)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&Ie instanceof ArrayBuffer?function(zt,ln,ar,Ln){if(ar<0||ln.byteLength<ar)throw new RangeError("'offset' is out of bounds");if(ln.byteLength<ar+(Ln||0))throw new RangeError("'length' is out of bounds");return ln=void 0===ar&&void 0===Ln?new Uint8Array(ln):void 0===Ln?new Uint8Array(ln,ar):new Uint8Array(ln,ar,Ln),_.TYPED_ARRAY_SUPPORT?(zt=ln).__proto__=_.prototype:zt=D(zt,ln),zt}(ae,Ie,dt,Jt):"string"==typeof Ie?function(zt,ln,ar){if("string"==typeof ar&&""!==ar||(ar="utf8"),!_.isEncoding(ar))throw new TypeError('"encoding" must be a valid string encoding');var Ln=0|j(ln,ar),Rn=(zt=h(zt,Ln)).write(ln,ar);return Rn!==Ln&&(zt=zt.slice(0,Rn)),zt}(ae,Ie,dt):function(zt,ln){if(_.isBuffer(ln)){var ar=0|x(ln.length);return 0===(zt=h(zt,ar)).length||ln.copy(zt,0,0,ar),zt}if(ln){if("undefined"!=typeof ArrayBuffer&&ln.buffer instanceof ArrayBuffer||"length"in ln)return"number"!=typeof ln.length||(Ln=ln.length)!=Ln?h(zt,0):D(zt,ln);if("Buffer"===ln.type&&l(ln.data))return D(zt,ln.data)}var Ln;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(ae,Ie)}function b(ae){if("number"!=typeof ae)throw new TypeError('"size" argument must be a number');if(ae<0)throw new RangeError('"size" argument must not be negative')}function C(ae,Ie){if(b(Ie),ae=h(ae,Ie<0?0:0|x(Ie)),!_.TYPED_ARRAY_SUPPORT)for(var dt=0;dt<Ie;++dt)ae[dt]=0;return ae}function D(ae,Ie){var dt=Ie.length<0?0:0|x(Ie.length);ae=h(ae,dt);for(var Jt=0;Jt<dt;Jt+=1)ae[Jt]=255&Ie[Jt];return ae}function x(ae){if(ae>=u())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u().toString(16)+" bytes");return 0|ae}function j(ae,Ie){if(_.isBuffer(ae))return ae.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(ae)||ae instanceof ArrayBuffer))return ae.byteLength;"string"!=typeof ae&&(ae=""+ae);var dt=ae.length;if(0===dt)return 0;for(var Jt=!1;;)switch(Ie){case"ascii":case"latin1":case"binary":return dt;case"utf8":case"utf-8":case void 0:return At(ae).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*dt;case"hex":return dt>>>1;case"base64":return Qe(ae).length;default:if(Jt)return At(ae).length;Ie=(""+Ie).toLowerCase(),Jt=!0}}function H(ae,Ie,dt){var Jt=!1;if((void 0===Ie||Ie<0)&&(Ie=0),Ie>this.length||((void 0===dt||dt>this.length)&&(dt=this.length),dt<=0)||(dt>>>=0)<=(Ie>>>=0))return"";for(ae||(ae="utf8");;)switch(ae){case"hex":return Oe(this,Ie,dt);case"utf8":case"utf-8":return he(this,Ie,dt);case"ascii":return Ae(this,Ie,dt);case"latin1":case"binary":return Me(this,Ie,dt);case"base64":return ne(this,Ie,dt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return be(this,Ie,dt);default:if(Jt)throw new TypeError("Unknown encoding: "+ae);ae=(ae+"").toLowerCase(),Jt=!0}}function z(ae,Ie,dt){var Jt=ae[Ie];ae[Ie]=ae[dt],ae[dt]=Jt}function U(ae,Ie,dt,Jt,zt){if(0===ae.length)return-1;if("string"==typeof dt?(Jt=dt,dt=0):dt>2147483647?dt=2147483647:dt<-2147483648&&(dt=-2147483648),dt=+dt,isNaN(dt)&&(dt=zt?0:ae.length-1),dt<0&&(dt=ae.length+dt),dt>=ae.length){if(zt)return-1;dt=ae.length-1}else if(dt<0){if(!zt)return-1;dt=0}if("string"==typeof Ie&&(Ie=_.from(Ie,Jt)),_.isBuffer(Ie))return 0===Ie.length?-1:M(ae,Ie,dt,Jt,zt);if("number"==typeof Ie)return Ie&=255,_.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?zt?Uint8Array.prototype.indexOf.call(ae,Ie,dt):Uint8Array.prototype.lastIndexOf.call(ae,Ie,dt):M(ae,[Ie],dt,Jt,zt);throw new TypeError("val must be string, number or Buffer")}function M(ae,Ie,dt,Jt,zt){var ln,ar=1,Ln=ae.length,Rn=Ie.length;if(void 0!==Jt&&("ucs2"===(Jt=String(Jt).toLowerCase())||"ucs-2"===Jt||"utf16le"===Jt||"utf-16le"===Jt)){if(ae.length<2||Ie.length<2)return-1;ar=2,Ln/=2,Rn/=2,dt/=2}function er(Yn,Cn){return 1===ar?Yn[Cn]:Yn.readUInt16BE(Cn*ar)}if(zt){var Mn=-1;for(ln=dt;ln<Ln;ln++)if(er(ae,ln)===er(Ie,-1===Mn?0:ln-Mn)){if(-1===Mn&&(Mn=ln),ln-Mn+1===Rn)return Mn*ar}else-1!==Mn&&(ln-=ln-Mn),Mn=-1}else for(dt+Rn>Ln&&(dt=Ln-Rn),ln=dt;ln>=0;ln--){for(var Ht=!0,tr=0;tr<Rn;tr++)if(er(ae,ln+tr)!==er(Ie,tr)){Ht=!1;break}if(Ht)return ln}return-1}function I(ae,Ie,dt,Jt){dt=Number(dt)||0;var zt=ae.length-dt;Jt?(Jt=Number(Jt))>zt&&(Jt=zt):Jt=zt;var ln=Ie.length;if(ln%2!=0)throw new TypeError("Invalid hex string");Jt>ln/2&&(Jt=ln/2);for(var ar=0;ar<Jt;++ar){var Ln=parseInt(Ie.substr(2*ar,2),16);if(isNaN(Ln))return ar;ae[dt+ar]=Ln}return ar}function J(ae,Ie,dt,Jt){return It(At(Ie,ae.length-dt),ae,dt,Jt)}function Y(ae,Ie,dt,Jt){return It(function(zt){for(var ln=[],ar=0;ar<zt.length;++ar)ln.push(255&zt.charCodeAt(ar));return ln}(Ie),ae,dt,Jt)}function ie(ae,Ie,dt,Jt){return Y(ae,Ie,dt,Jt)}function oe(ae,Ie,dt,Jt){return It(Qe(Ie),ae,dt,Jt)}function fe(ae,Ie,dt,Jt){return It(function(zt,ln){for(var ar,Ln,er=[],Mn=0;Mn<zt.length&&!((ln-=2)<0);++Mn)Ln=(ar=zt.charCodeAt(Mn))>>8,er.push(ar%256),er.push(Ln);return er}(Ie,ae.length-dt),ae,dt,Jt)}function ne(ae,Ie,dt){return s.fromByteArray(0===Ie&&dt===ae.length?ae:ae.slice(Ie,dt))}function he(ae,Ie,dt){dt=Math.min(ae.length,dt);for(var Jt=[],zt=Ie;zt<dt;){var ln,ar,Ln,Rn,er=ae[zt],Mn=null,Ht=er>239?4:er>223?3:er>191?2:1;if(zt+Ht<=dt)switch(Ht){case 1:er<128&&(Mn=er);break;case 2:128==(192&(ln=ae[zt+1]))&&(Rn=(31&er)<<6|63&ln)>127&&(Mn=Rn);break;case 3:ar=ae[zt+2],128==(192&(ln=ae[zt+1]))&&128==(192&ar)&&(Rn=(15&er)<<12|(63&ln)<<6|63&ar)>2047&&(Rn<55296||Rn>57343)&&(Mn=Rn);break;case 4:ar=ae[zt+2],Ln=ae[zt+3],128==(192&(ln=ae[zt+1]))&&128==(192&ar)&&128==(192&Ln)&&(Rn=(15&er)<<18|(63&ln)<<12|(63&ar)<<6|63&Ln)>65535&&Rn<1114112&&(Mn=Rn)}null===Mn?(Mn=65533,Ht=1):Mn>65535&&(Jt.push((Mn-=65536)>>>10&1023|55296),Mn=56320|1023&Mn),Jt.push(Mn),zt+=Ht}return function(tr){var Yn=tr.length;if(Yn<=ce)return String.fromCharCode.apply(String,tr);for(var Cn="",Kt=0;Kt<Yn;)Cn+=String.fromCharCode.apply(String,tr.slice(Kt,Kt+=ce));return Cn}(Jt)}o.Buffer=_,o.SlowBuffer=function(ae){return+ae!=ae&&(ae=0),_.alloc(+ae)},o.INSPECT_MAX_BYTES=50,_.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var ae=new Uint8Array(1);return ae.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===ae.foo()&&"function"==typeof ae.subarray&&0===ae.subarray(1,1).byteLength}catch(Ie){return!1}}(),o.kMaxLength=u(),_.poolSize=8192,_._augment=function(ae){return ae.__proto__=_.prototype,ae},_.from=function(ae,Ie,dt){return m(null,ae,Ie,dt)},_.TYPED_ARRAY_SUPPORT&&(_.prototype.__proto__=Uint8Array.prototype,_.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&_[Symbol.species]===_&&Object.defineProperty(_,Symbol.species,{value:null,configurable:!0})),_.alloc=function(ae,Ie,dt){return ln=Ie,ar=dt,b(zt=ae),zt<=0?h(null,zt):void 0!==ln?"string"==typeof ar?h(null,zt).fill(ln,ar):h(null,zt).fill(ln):h(null,zt);var zt,ln,ar},_.allocUnsafe=function(ae){return C(null,ae)},_.allocUnsafeSlow=function(ae){return C(null,ae)},_.isBuffer=function(ae){return!(null==ae||!ae._isBuffer)},_.compare=function(ae,Ie){if(!_.isBuffer(ae)||!_.isBuffer(Ie))throw new TypeError("Arguments must be Buffers");if(ae===Ie)return 0;for(var dt=ae.length,Jt=Ie.length,zt=0,ln=Math.min(dt,Jt);zt<ln;++zt)if(ae[zt]!==Ie[zt]){dt=ae[zt],Jt=Ie[zt];break}return dt<Jt?-1:Jt<dt?1:0},_.isEncoding=function(ae){switch(String(ae).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},_.concat=function(ae,Ie){if(!l(ae))throw new TypeError('"list" argument must be an Array of Buffers');if(0===ae.length)return _.alloc(0);var dt;if(void 0===Ie)for(Ie=0,dt=0;dt<ae.length;++dt)Ie+=ae[dt].length;var Jt=_.allocUnsafe(Ie),zt=0;for(dt=0;dt<ae.length;++dt){var ln=ae[dt];if(!_.isBuffer(ln))throw new TypeError('"list" argument must be an Array of Buffers');ln.copy(Jt,zt),zt+=ln.length}return Jt},_.byteLength=j,_.prototype._isBuffer=!0,_.prototype.swap16=function(){var ae=this.length;if(ae%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Ie=0;Ie<ae;Ie+=2)z(this,Ie,Ie+1);return this},_.prototype.swap32=function(){var ae=this.length;if(ae%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var Ie=0;Ie<ae;Ie+=4)z(this,Ie,Ie+3),z(this,Ie+1,Ie+2);return this},_.prototype.swap64=function(){var ae=this.length;if(ae%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var Ie=0;Ie<ae;Ie+=8)z(this,Ie,Ie+7),z(this,Ie+1,Ie+6),z(this,Ie+2,Ie+5),z(this,Ie+3,Ie+4);return this},_.prototype.toString=function(){var ae=0|this.length;return 0===ae?"":0===arguments.length?he(this,0,ae):H.apply(this,arguments)},_.prototype.equals=function(ae){if(!_.isBuffer(ae))throw new TypeError("Argument must be a Buffer");return this===ae||0===_.compare(this,ae)},_.prototype.inspect=function(){var ae="",Ie=o.INSPECT_MAX_BYTES;return this.length>0&&(ae=this.toString("hex",0,Ie).match(/.{2}/g).join(" "),this.length>Ie&&(ae+=" ... ")),"<Buffer "+ae+">"},_.prototype.compare=function(ae,Ie,dt,Jt,zt){if(!_.isBuffer(ae))throw new TypeError("Argument must be a Buffer");if(void 0===Ie&&(Ie=0),void 0===dt&&(dt=ae?ae.length:0),void 0===Jt&&(Jt=0),void 0===zt&&(zt=this.length),Ie<0||dt>ae.length||Jt<0||zt>this.length)throw new RangeError("out of range index");if(Jt>=zt&&Ie>=dt)return 0;if(Jt>=zt)return-1;if(Ie>=dt)return 1;if(this===ae)return 0;for(var ln=(zt>>>=0)-(Jt>>>=0),ar=(dt>>>=0)-(Ie>>>=0),Ln=Math.min(ln,ar),Rn=this.slice(Jt,zt),er=ae.slice(Ie,dt),Mn=0;Mn<Ln;++Mn)if(Rn[Mn]!==er[Mn]){ln=Rn[Mn],ar=er[Mn];break}return ln<ar?-1:ar<ln?1:0},_.prototype.includes=function(ae,Ie,dt){return-1!==this.indexOf(ae,Ie,dt)},_.prototype.indexOf=function(ae,Ie,dt){return U(this,ae,Ie,dt,!0)},_.prototype.lastIndexOf=function(ae,Ie,dt){return U(this,ae,Ie,dt,!1)},_.prototype.write=function(ae,Ie,dt,Jt){if(void 0===Ie)Jt="utf8",dt=this.length,Ie=0;else if(void 0===dt&&"string"==typeof Ie)Jt=Ie,dt=this.length,Ie=0;else{if(!isFinite(Ie))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");Ie|=0,isFinite(dt)?(dt|=0,void 0===Jt&&(Jt="utf8")):(Jt=dt,dt=void 0)}var zt=this.length-Ie;if((void 0===dt||dt>zt)&&(dt=zt),ae.length>0&&(dt<0||Ie<0)||Ie>this.length)throw new RangeError("Attempt to write outside buffer bounds");Jt||(Jt="utf8");for(var ln=!1;;)switch(Jt){case"hex":return I(this,ae,Ie,dt);case"utf8":case"utf-8":return J(this,ae,Ie,dt);case"ascii":return Y(this,ae,Ie,dt);case"latin1":case"binary":return ie(this,ae,Ie,dt);case"base64":return oe(this,ae,Ie,dt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return fe(this,ae,Ie,dt);default:if(ln)throw new TypeError("Unknown encoding: "+Jt);Jt=(""+Jt).toLowerCase(),ln=!0}},_.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ce=4096;function Ae(ae,Ie,dt){var Jt="";dt=Math.min(ae.length,dt);for(var zt=Ie;zt<dt;++zt)Jt+=String.fromCharCode(127&ae[zt]);return Jt}function Me(ae,Ie,dt){var Jt="";dt=Math.min(ae.length,dt);for(var zt=Ie;zt<dt;++zt)Jt+=String.fromCharCode(ae[zt]);return Jt}function Oe(ae,Ie,dt){var Jt=ae.length;(!Ie||Ie<0)&&(Ie=0),(!dt||dt<0||dt>Jt)&&(dt=Jt);for(var zt="",ln=Ie;ln<dt;++ln)zt+=St(ae[ln]);return zt}function be(ae,Ie,dt){for(var Jt=ae.slice(Ie,dt),zt="",ln=0;ln<Jt.length;ln+=2)zt+=String.fromCharCode(Jt[ln]+256*Jt[ln+1]);return zt}function ue(ae,Ie,dt){if(ae%1!=0||ae<0)throw new RangeError("offset is not uint");if(ae+Ie>dt)throw new RangeError("Trying to access beyond buffer length")}function He(ae,Ie,dt,Jt,zt,ln){if(!_.isBuffer(ae))throw new TypeError('"buffer" argument must be a Buffer instance');if(Ie>zt||Ie<ln)throw new RangeError('"value" argument is out of bounds');if(dt+Jt>ae.length)throw new RangeError("Index out of range")}function $e(ae,Ie,dt,Jt){Ie<0&&(Ie=65535+Ie+1);for(var zt=0,ln=Math.min(ae.length-dt,2);zt<ln;++zt)ae[dt+zt]=(Ie&255<<8*(Jt?zt:1-zt))>>>8*(Jt?zt:1-zt)}function F(ae,Ie,dt,Jt){Ie<0&&(Ie=4294967295+Ie+1);for(var zt=0,ln=Math.min(ae.length-dt,4);zt<ln;++zt)ae[dt+zt]=Ie>>>8*(Jt?zt:3-zt)&255}function je(ae,Ie,dt,Jt,zt,ln){if(dt+Jt>ae.length)throw new RangeError("Index out of range");if(dt<0)throw new RangeError("Index out of range")}function Et(ae,Ie,dt,Jt,zt){return zt||je(ae,0,dt,4),a.write(ae,Ie,dt,Jt,23,4),dt+4}function lt(ae,Ie,dt,Jt,zt){return zt||je(ae,0,dt,8),a.write(ae,Ie,dt,Jt,52,8),dt+8}_.prototype.slice=function(ae,Ie){var dt,Jt=this.length;if((ae=~~ae)<0?(ae+=Jt)<0&&(ae=0):ae>Jt&&(ae=Jt),(Ie=void 0===Ie?Jt:~~Ie)<0?(Ie+=Jt)<0&&(Ie=0):Ie>Jt&&(Ie=Jt),Ie<ae&&(Ie=ae),_.TYPED_ARRAY_SUPPORT)(dt=this.subarray(ae,Ie)).__proto__=_.prototype;else{var zt=Ie-ae;dt=new _(zt,void 0);for(var ln=0;ln<zt;++ln)dt[ln]=this[ln+ae]}return dt},_.prototype.readUIntLE=function(ae,Ie,dt){ae|=0,Ie|=0,dt||ue(ae,Ie,this.length);for(var Jt=this[ae],zt=1,ln=0;++ln<Ie&&(zt*=256);)Jt+=this[ae+ln]*zt;return Jt},_.prototype.readUIntBE=function(ae,Ie,dt){ae|=0,Ie|=0,dt||ue(ae,Ie,this.length);for(var Jt=this[ae+--Ie],zt=1;Ie>0&&(zt*=256);)Jt+=this[ae+--Ie]*zt;return Jt},_.prototype.readUInt8=function(ae,Ie){return Ie||ue(ae,1,this.length),this[ae]},_.prototype.readUInt16LE=function(ae,Ie){return Ie||ue(ae,2,this.length),this[ae]|this[ae+1]<<8},_.prototype.readUInt16BE=function(ae,Ie){return Ie||ue(ae,2,this.length),this[ae]<<8|this[ae+1]},_.prototype.readUInt32LE=function(ae,Ie){return Ie||ue(ae,4,this.length),(this[ae]|this[ae+1]<<8|this[ae+2]<<16)+16777216*this[ae+3]},_.prototype.readUInt32BE=function(ae,Ie){return Ie||ue(ae,4,this.length),16777216*this[ae]+(this[ae+1]<<16|this[ae+2]<<8|this[ae+3])},_.prototype.readIntLE=function(ae,Ie,dt){ae|=0,Ie|=0,dt||ue(ae,Ie,this.length);for(var Jt=this[ae],zt=1,ln=0;++ln<Ie&&(zt*=256);)Jt+=this[ae+ln]*zt;return Jt>=(zt*=128)&&(Jt-=Math.pow(2,8*Ie)),Jt},_.prototype.readIntBE=function(ae,Ie,dt){ae|=0,Ie|=0,dt||ue(ae,Ie,this.length);for(var Jt=Ie,zt=1,ln=this[ae+--Jt];Jt>0&&(zt*=256);)ln+=this[ae+--Jt]*zt;return ln>=(zt*=128)&&(ln-=Math.pow(2,8*Ie)),ln},_.prototype.readInt8=function(ae,Ie){return Ie||ue(ae,1,this.length),128&this[ae]?-1*(255-this[ae]+1):this[ae]},_.prototype.readInt16LE=function(ae,Ie){Ie||ue(ae,2,this.length);var dt=this[ae]|this[ae+1]<<8;return 32768&dt?4294901760|dt:dt},_.prototype.readInt16BE=function(ae,Ie){Ie||ue(ae,2,this.length);var dt=this[ae+1]|this[ae]<<8;return 32768&dt?4294901760|dt:dt},_.prototype.readInt32LE=function(ae,Ie){return Ie||ue(ae,4,this.length),this[ae]|this[ae+1]<<8|this[ae+2]<<16|this[ae+3]<<24},_.prototype.readInt32BE=function(ae,Ie){return Ie||ue(ae,4,this.length),this[ae]<<24|this[ae+1]<<16|this[ae+2]<<8|this[ae+3]},_.prototype.readFloatLE=function(ae,Ie){return Ie||ue(ae,4,this.length),a.read(this,ae,!0,23,4)},_.prototype.readFloatBE=function(ae,Ie){return Ie||ue(ae,4,this.length),a.read(this,ae,!1,23,4)},_.prototype.readDoubleLE=function(ae,Ie){return Ie||ue(ae,8,this.length),a.read(this,ae,!0,52,8)},_.prototype.readDoubleBE=function(ae,Ie){return Ie||ue(ae,8,this.length),a.read(this,ae,!1,52,8)},_.prototype.writeUIntLE=function(ae,Ie,dt,Jt){ae=+ae,Ie|=0,dt|=0,Jt||He(this,ae,Ie,dt,Math.pow(2,8*dt)-1,0);var zt=1,ln=0;for(this[Ie]=255&ae;++ln<dt&&(zt*=256);)this[Ie+ln]=ae/zt&255;return Ie+dt},_.prototype.writeUIntBE=function(ae,Ie,dt,Jt){ae=+ae,Ie|=0,dt|=0,Jt||He(this,ae,Ie,dt,Math.pow(2,8*dt)-1,0);var zt=dt-1,ln=1;for(this[Ie+zt]=255&ae;--zt>=0&&(ln*=256);)this[Ie+zt]=ae/ln&255;return Ie+dt},_.prototype.writeUInt8=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,1,255,0),_.TYPED_ARRAY_SUPPORT||(ae=Math.floor(ae)),this[Ie]=255&ae,Ie+1},_.prototype.writeUInt16LE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,2,65535,0),_.TYPED_ARRAY_SUPPORT?(this[Ie]=255&ae,this[Ie+1]=ae>>>8):$e(this,ae,Ie,!0),Ie+2},_.prototype.writeUInt16BE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,2,65535,0),_.TYPED_ARRAY_SUPPORT?(this[Ie]=ae>>>8,this[Ie+1]=255&ae):$e(this,ae,Ie,!1),Ie+2},_.prototype.writeUInt32LE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,4,4294967295,0),_.TYPED_ARRAY_SUPPORT?(this[Ie+3]=ae>>>24,this[Ie+2]=ae>>>16,this[Ie+1]=ae>>>8,this[Ie]=255&ae):F(this,ae,Ie,!0),Ie+4},_.prototype.writeUInt32BE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,4,4294967295,0),_.TYPED_ARRAY_SUPPORT?(this[Ie]=ae>>>24,this[Ie+1]=ae>>>16,this[Ie+2]=ae>>>8,this[Ie+3]=255&ae):F(this,ae,Ie,!1),Ie+4},_.prototype.writeIntLE=function(ae,Ie,dt,Jt){if(ae=+ae,Ie|=0,!Jt){var zt=Math.pow(2,8*dt-1);He(this,ae,Ie,dt,zt-1,-zt)}var ln=0,ar=1,Ln=0;for(this[Ie]=255&ae;++ln<dt&&(ar*=256);)ae<0&&0===Ln&&0!==this[Ie+ln-1]&&(Ln=1),this[Ie+ln]=(ae/ar>>0)-Ln&255;return Ie+dt},_.prototype.writeIntBE=function(ae,Ie,dt,Jt){if(ae=+ae,Ie|=0,!Jt){var zt=Math.pow(2,8*dt-1);He(this,ae,Ie,dt,zt-1,-zt)}var ln=dt-1,ar=1,Ln=0;for(this[Ie+ln]=255&ae;--ln>=0&&(ar*=256);)ae<0&&0===Ln&&0!==this[Ie+ln+1]&&(Ln=1),this[Ie+ln]=(ae/ar>>0)-Ln&255;return Ie+dt},_.prototype.writeInt8=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,1,127,-128),_.TYPED_ARRAY_SUPPORT||(ae=Math.floor(ae)),ae<0&&(ae=255+ae+1),this[Ie]=255&ae,Ie+1},_.prototype.writeInt16LE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,2,32767,-32768),_.TYPED_ARRAY_SUPPORT?(this[Ie]=255&ae,this[Ie+1]=ae>>>8):$e(this,ae,Ie,!0),Ie+2},_.prototype.writeInt16BE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,2,32767,-32768),_.TYPED_ARRAY_SUPPORT?(this[Ie]=ae>>>8,this[Ie+1]=255&ae):$e(this,ae,Ie,!1),Ie+2},_.prototype.writeInt32LE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,4,2147483647,-2147483648),_.TYPED_ARRAY_SUPPORT?(this[Ie]=255&ae,this[Ie+1]=ae>>>8,this[Ie+2]=ae>>>16,this[Ie+3]=ae>>>24):F(this,ae,Ie,!0),Ie+4},_.prototype.writeInt32BE=function(ae,Ie,dt){return ae=+ae,Ie|=0,dt||He(this,ae,Ie,4,2147483647,-2147483648),ae<0&&(ae=4294967295+ae+1),_.TYPED_ARRAY_SUPPORT?(this[Ie]=ae>>>24,this[Ie+1]=ae>>>16,this[Ie+2]=ae>>>8,this[Ie+3]=255&ae):F(this,ae,Ie,!1),Ie+4},_.prototype.writeFloatLE=function(ae,Ie,dt){return Et(this,ae,Ie,!0,dt)},_.prototype.writeFloatBE=function(ae,Ie,dt){return Et(this,ae,Ie,!1,dt)},_.prototype.writeDoubleLE=function(ae,Ie,dt){return lt(this,ae,Ie,!0,dt)},_.prototype.writeDoubleBE=function(ae,Ie,dt){return lt(this,ae,Ie,!1,dt)},_.prototype.copy=function(ae,Ie,dt,Jt){if(dt||(dt=0),Jt||0===Jt||(Jt=this.length),Ie>=ae.length&&(Ie=ae.length),Ie||(Ie=0),Jt>0&&Jt<dt&&(Jt=dt),Jt===dt||0===ae.length||0===this.length)return 0;if(Ie<0)throw new RangeError("targetStart out of bounds");if(dt<0||dt>=this.length)throw new RangeError("sourceStart out of bounds");if(Jt<0)throw new RangeError("sourceEnd out of bounds");Jt>this.length&&(Jt=this.length),ae.length-Ie<Jt-dt&&(Jt=ae.length-Ie+dt);var zt,ln=Jt-dt;if(this===ae&&dt<Ie&&Ie<Jt)for(zt=ln-1;zt>=0;--zt)ae[zt+Ie]=this[zt+dt];else if(ln<1e3||!_.TYPED_ARRAY_SUPPORT)for(zt=0;zt<ln;++zt)ae[zt+Ie]=this[zt+dt];else Uint8Array.prototype.set.call(ae,this.subarray(dt,dt+ln),Ie);return ln},_.prototype.fill=function(ae,Ie,dt,Jt){if("string"==typeof ae){if("string"==typeof Ie?(Jt=Ie,Ie=0,dt=this.length):"string"==typeof dt&&(Jt=dt,dt=this.length),1===ae.length){var zt=ae.charCodeAt(0);zt<256&&(ae=zt)}if(void 0!==Jt&&"string"!=typeof Jt)throw new TypeError("encoding must be a string");if("string"==typeof Jt&&!_.isEncoding(Jt))throw new TypeError("Unknown encoding: "+Jt)}else"number"==typeof ae&&(ae&=255);if(Ie<0||this.length<Ie||this.length<dt)throw new RangeError("Out of range index");if(dt<=Ie)return this;var ln;if(Ie>>>=0,dt=void 0===dt?this.length:dt>>>0,ae||(ae=0),"number"==typeof ae)for(ln=Ie;ln<dt;++ln)this[ln]=ae;else{var ar=_.isBuffer(ae)?ae:At(new _(ae,Jt).toString()),Ln=ar.length;for(ln=0;ln<dt-Ie;++ln)this[ln+Ie]=ar[ln%Ln]}return this};var nn=/[^+\/0-9A-Za-z-_]/g;function St(ae){return ae<16?"0"+ae.toString(16):ae.toString(16)}function At(ae,Ie){var dt;Ie=Ie||1/0;for(var Jt=ae.length,zt=null,ln=[],ar=0;ar<Jt;++ar){if((dt=ae.charCodeAt(ar))>55295&&dt<57344){if(!zt){if(dt>56319){(Ie-=3)>-1&&ln.push(239,191,189);continue}if(ar+1===Jt){(Ie-=3)>-1&&ln.push(239,191,189);continue}zt=dt;continue}if(dt<56320){(Ie-=3)>-1&&ln.push(239,191,189),zt=dt;continue}dt=65536+(zt-55296<<10|dt-56320)}else zt&&(Ie-=3)>-1&&ln.push(239,191,189);if(zt=null,dt<128){if((Ie-=1)<0)break;ln.push(dt)}else if(dt<2048){if((Ie-=2)<0)break;ln.push(dt>>6|192,63&dt|128)}else if(dt<65536){if((Ie-=3)<0)break;ln.push(dt>>12|224,dt>>6&63|128,63&dt|128)}else{if(!(dt<1114112))throw new Error("Invalid code point");if((Ie-=4)<0)break;ln.push(dt>>18|240,dt>>12&63|128,dt>>6&63|128,63&dt|128)}}return ln}function Qe(ae){return s.toByteArray(function(Ie){if((Ie=(dt=Ie,dt.trim?dt.trim():dt.replace(/^\s+|\s+$/g,"")).replace(nn,"")).length<2)return"";for(var dt;Ie.length%4!=0;)Ie+="=";return Ie}(ae))}function It(ae,Ie,dt,Jt){for(var zt=0;zt<Jt&&!(zt+dt>=Ie.length||zt>=ae.length);++zt)Ie[zt+dt]=ae[zt];return zt}}).call(this,t(57))},function(g,o,t){var e=t(69).Symbol;g.exports=e},function(g,o,t){var e=t(235),s=t(229);g.exports=function(a,l,u,h){var _=!u;u||(u={});for(var m=-1,b=l.length;++m<b;){var C=l[m],D=h?h(u[C],a[C],C,u,a):void 0;void 0===D&&(D=a[C]),_?s(u,C,D):e(u,C,D)}return u}},function(g,o,t){var e=t(367),s=t(397),a=t(117);g.exports=function(l){return a(l)?e(l):s(l)}},function(g,o,t){var e=t(188);g.exports=function(s){if("string"==typeof s||e(s))return s;var a=s+"";return"0"==a&&1/s==-1/0?"-0":a}},function(g,o,t){"use strict";var e=t(120);g.exports=function(s){if(!e(s))throw new TypeError("Cannot use null or undefined");return s}},function(g,o,t){var e=t(65).Buffer;function s(a,l){this._block=e.alloc(a),this._finalSize=l,this._blockSize=a,this._len=0}s.prototype.update=function(a,l){"string"==typeof a&&(a=e.from(a,l=l||"utf8"));for(var u=this._block,h=this._blockSize,_=a.length,m=this._len,b=0;b<_;){for(var C=m%h,D=Math.min(_-b,h-C),x=0;x<D;x++)u[C+x]=a[b+x];b+=D,(m+=D)%h==0&&this._update(u)}return this._len+=_,this},s.prototype.digest=function(a){var l=this._len%this._blockSize;this._block[l]=128,this._block.fill(0,l+1),l>=this._finalSize&&(this._update(this._block),this._block.fill(0));var u=8*this._len;if(u<=4294967295)this._block.writeUInt32BE(u,this._blockSize-4);else{var h=(4294967295&u)>>>0;this._block.writeUInt32BE((u-h)/4294967296,this._blockSize-8),this._block.writeUInt32BE(h,this._blockSize-4)}this._update(this._block);var m=this._hash();return a?m.toString(a):m},s.prototype._update=function(){throw new Error("_update must be implemented by subclass")},g.exports=s},function(g,o,t){var e=t(17),s=t(35),a=e.TypeError;g.exports=function(l,u){if(s(u,l))return l;throw a("Incorrect invocation")}},function(g,o,t){var e=t(116),s=t(231),a=t(78),h=Function.prototype.toString,_=Object.prototype.hasOwnProperty,m=h.call(Object);g.exports=function(b){if(!a(b)||"[object Object]"!=e(b))return!1;var C=s(b);if(null===C)return!0;var D=_.call(C,"constructor")&&C.constructor;return"function"==typeof D&&D instanceof D&&h.call(D)==m}},function(g,o,t){"use strict";(function(e){class s extends Error{constructor(_){super(s._prepareSuperMessage(_)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,s)}static _prepareSuperMessage(_){try{return JSON.stringify(_)}catch(m){return String(_)}}}const a=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],l=Symbol(".toJSON called"),u=({from:h,seen:_,to_:m,forceEnumerable:b,maxDepth:C,depth:D})=>{const x=m||(Array.isArray(h)?[]:{});if(_.push(h),D>=C)return x;if("function"==typeof h.toJSON&&!0!==h[l])return(j=>{j[l]=!0;const H=j.toJSON();return delete j[l],H})(h);for(const[j,H]of Object.entries(h))"function"==typeof e&&e.isBuffer(H)?x[j]="[object Buffer]":"function"!=typeof H&&(H&&"object"==typeof H?_.includes(h[j])?x[j]="[Circular]":(D++,x[j]=u({from:h[j],seen:_.slice(),forceEnumerable:b,maxDepth:C,depth:D})):x[j]=H);for(const{property:j,enumerable:H}of a)"string"==typeof h[j]&&Object.defineProperty(x,j,{value:h[j],enumerable:!!b||H,configurable:!0,writable:!0});return x};g.exports={serializeError:(h,_={})=>{const{maxDepth:m=Number.POSITIVE_INFINITY}=_;return"object"==typeof h&&null!==h?u({from:h,seen:[],forceEnumerable:!0,maxDepth:m,depth:0}):"function"==typeof h?`[Function: ${h.name||"anonymous"}]`:h},deserializeError:(h,_={})=>{const{maxDepth:m=Number.POSITIVE_INFINITY}=_;if(h instanceof Error)return h;if("object"==typeof h&&null!==h&&!Array.isArray(h)){const b=new Error;return u({from:h,seen:[],to_:b,maxDepth:m,depth:0}),b}return new s(h)}}}).call(this,t(132).Buffer)},function(g,o,t){"use strict";t.r(o),t.d(o,"sampleFromSchemaGeneric",function(){return Et}),t.d(o,"inferSchema",function(){return lt}),t.d(o,"createXMLExample",function(){return nn}),t.d(o,"sampleFromSchema",function(){return St}),t.d(o,"memoizedCreateXMLExample",function(){return At}),t.d(o,"memoizedSampleFromSchema",function(){return Qe});var e=t(19),s=t.n(e),a=t(2),l=t.n(a),u=t(18),h=t.n(u),_=t(23),m=t.n(_),b=t(24),C=t.n(b),D=t(31),x=t.n(D),j=t(71),H=t.n(j),z=t(20),U=t.n(z),M=t(56),I=t.n(M),J=t(4),Y=t.n(J),ie=t(5),oe=t(453),fe=t.n(oe),ne=t(318),he=t.n(ne),ce=t(110),Ae=t.n(ce),Me={string:function(){return"string"},string_email:function(){return"user@example.com"},"string_date-time":function(){return(new Date).toISOString()},string_date:function(){return(new Date).toISOString().substring(0,10)},string_uuid:function(){return"3fa85f64-5717-4562-b3fc-2c963f66afa6"},string_hostname:function(){return"example.com"},string_ipv4:function(){return"198.51.100.42"},string_ipv6:function(){return"2001:0db8:5b96:0000:0000:426f:8e17:642a"},number:function(){return 0},number_float:function(){return 0},integer:function(){return 0},boolean:function(It){return"boolean"!=typeof It.default||It.default}},Oe=function(It){var ae,Ie=It=Object(ie.z)(It),dt=Ie.type,Jt=Ie.format,zt=Me[l()(ae="".concat(dt,"_")).call(ae,Jt)]||Me[dt];return Object(ie.s)(zt)?zt(It):"Unknown Type: "+It.type},be=function(It){return Object(ie.e)(It,"$$ref",function(ae){return"string"==typeof ae&&h()(ae).call(ae,"#")>-1})},ue=["maxProperties","minProperties"],He=["minItems","maxItems"],$e=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],F=["minLength","maxLength"],je=function It(ae,Ie){var dt,Jt,zt,ln=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},ar=function(Mn){void 0===Ie[Mn]&&void 0!==ae[Mn]&&(Ie[Mn]=ae[Mn])};if(m()(dt=l()(Jt=["example","default","enum","xml","type"]).call(Jt,ue,He,$e,F)).call(dt,function(Mn){return ar(Mn)}),void 0!==ae.required&&C()(ae.required)&&(void 0!==Ie.required&&Ie.required.length||(Ie.required=[]),m()(zt=ae.required).call(zt,function(Mn){var Ht;x()(Ht=Ie.required).call(Ht,Mn)||Ie.required.push(Mn)})),ae.properties){Ie.properties||(Ie.properties={});var Ln=Object(ie.z)(ae.properties);for(var Rn in Ln){var er;Object.prototype.hasOwnProperty.call(Ln,Rn)&&(!Ln[Rn]||!Ln[Rn].deprecated)&&(!Ln[Rn]||!Ln[Rn].readOnly||ln.includeReadOnly)&&(!Ln[Rn]||!Ln[Rn].writeOnly||ln.includeWriteOnly)&&(Ie.properties[Rn]||(Ie.properties[Rn]=Ln[Rn],!ae.required&&C()(ae.required)&&-1!==h()(er=ae.required).call(er,Rn)&&(Ie.required?Ie.required.push(Rn):Ie.required=[Rn])))}}return ae.items&&(Ie.items||(Ie.items={}),Ie.items=It(ae.items,Ie.items,ln)),Ie},Et=function It(ae){var Ie=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},dt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,Jt=arguments.length>3&&void 0!==arguments[3]&&arguments[3];ae&&Object(ie.s)(ae.toJS)&&(ae=ae.toJS());var zt=void 0!==dt||ae&&void 0!==ae.example||ae&&void 0!==ae.default,ln=!zt&&ae&&ae.oneOf&&ae.oneOf.length>0,ar=!zt&&ae&&ae.anyOf&&ae.anyOf.length>0;if(!zt&&(ln||ar)){var Ln=Object(ie.z)(ln?ae.oneOf[0]:ae.anyOf[0]);if(je(Ln,ae,Ie),!ae.xml&&Ln.xml&&(ae.xml=Ln.xml),void 0!==ae.example&&void 0!==Ln.example)zt=!0;else if(Ln.properties){ae.properties||(ae.properties={});var Rn=Object(ie.z)(Ln.properties);for(var er in Rn){var Mn;Object.prototype.hasOwnProperty.call(Rn,er)&&(!Rn[er]||!Rn[er].deprecated)&&(!Rn[er]||!Rn[er].readOnly||Ie.includeReadOnly)&&(!Rn[er]||!Rn[er].writeOnly||Ie.includeWriteOnly)&&(ae.properties[er]||(ae.properties[er]=Rn[er],!Ln.required&&C()(Ln.required)&&-1!==h()(Mn=Ln.required).call(Mn,er)&&(ae.required?ae.required.push(er):ae.required=[er])))}}}var Ht,tr={},Yn=ae||{},Cn=Yn.xml,Kt=Yn.type,dn=Yn.example,Kn=Yn.properties,qn=Yn.additionalProperties,Sn=Yn.items,$n=Ie.includeReadOnly,En=Ie.includeWriteOnly,Fn=Cn=Cn||{},Dn=Fn.name,mn=Fn.prefix,jn=Fn.namespace,Xt={};if(Jt&&(Ht=(mn?mn+":":"")+(Dn=Dn||"notagname"),jn)){var ut=mn?"xmlns:"+mn:"xmlns";tr[ut]=jn}Jt&&(Xt[Ht]=[]);var mt=function(nr){return H()(nr).call(nr,function(Mr){return Object.prototype.hasOwnProperty.call(ae,Mr)})};ae&&!Kt&&(Kn||qn||mt(ue)?Kt="object":Sn||mt(He)?Kt="array":mt($e)?(Kt="number",ae.type="number"):zt||ae.enum||(Kt="string",ae.type="string"));var Tt,yn,et=function(nr){var Mr,yi,Ii,Mi,Oi;if(null!==(null===(Mr=ae)||void 0===Mr?void 0:Mr.maxItems)&&void 0!==(null===(yi=ae)||void 0===yi?void 0:yi.maxItems)&&(nr=U()(nr).call(nr,0,null===(Oi=ae)||void 0===Oi?void 0:Oi.maxItems)),null!==(null===(Ii=ae)||void 0===Ii?void 0:Ii.minItems)&&void 0!==(null===(Mi=ae)||void 0===Mi?void 0:Mi.minItems))for(var Kr=0;nr.length<(null===(ei=ae)||void 0===ei?void 0:ei.minItems);){var ei;nr.push(nr[Kr++%nr.length])}return nr},jt=Object(ie.z)(Kn),hn=0,Qn=function(){return ae&&null!=ae.maxProperties&&hn>=ae.maxProperties},Ir=function(){if(!ae||!ae.required)return 0;var nr,Mr,yi=0;return Jt?m()(nr=ae.required).call(nr,function(Ii){return yi+=void 0===Xt[Ii]?0:1}):m()(Mr=ae.required).call(Mr,function(Ii){var Mi;return yi+=void 0===(null===(Mi=Xt[Ht])||void 0===Mi?void 0:I()(Mi).call(Mi,function(Oi){return void 0!==Oi[Ii]}))?0:1}),ae.required.length-yi},ht=function(nr){var Mr;return!(ae&&ae.required&&ae.required.length&&x()(Mr=ae.required).call(Mr,nr))},L=function(nr){return!ae||null==ae.maxProperties||!Qn()&&(!ht(nr)||ae.maxProperties-hn-Ir()>0)};if(Tt=Jt?function(nr){var Mr=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(ae&&jt[nr]){if(jt[nr].xml=jt[nr].xml||{},jt[nr].xml.attribute){var yi=C()(jt[nr].enum)?jt[nr].enum[0]:void 0,Ii=jt[nr].example,Mi=jt[nr].default;return void(tr[jt[nr].xml.name||nr]=void 0!==Ii?Ii:void 0!==Mi?Mi:void 0!==yi?yi:Oe(jt[nr]))}jt[nr].xml.name=jt[nr].xml.name||nr}else jt[nr]||!1===qn||(jt[nr]={xml:{name:nr}});var Oi,Kr=It(ae&&jt[nr]||void 0,Ie,Mr,Jt);L(nr)&&(hn++,C()(Kr)?Xt[Ht]=l()(Oi=Xt[Ht]).call(Oi,Kr):Xt[Ht].push(Kr))}:function(nr,Mr){L(nr)&&(Xt[nr]=It(jt[nr],Ie,Mr,Jt),hn++)},zt){var Ue;if(Ue=be(void 0!==dt?dt:void 0!==dn?dn:ae.default),!Jt){if("number"==typeof Ue&&"string"===Kt)return"".concat(Ue);if("string"!=typeof Ue||"string"===Kt)return Ue;try{return JSON.parse(Ue)}catch(nr){return Ue}}if(ae||(Kt=C()(Ue)?"array":s()(Ue)),"array"===Kt){if(!C()(Ue)){if("string"==typeof Ue)return Ue;Ue=[Ue]}var nt=ae?ae.items:void 0;nt&&(nt.xml=nt.xml||Cn||{},nt.xml.name=nt.xml.name||Cn.name);var at=Y()(Ue).call(Ue,function(nr){return It(nt,Ie,nr,Jt)});return at=et(at),Cn.wrapped?(Xt[Ht]=at,Ae()(tr)||Xt[Ht].push({_attr:tr})):Xt=at,Xt}if("object"===Kt){if("string"==typeof Ue)return Ue;for(var it in Ue)Object.prototype.hasOwnProperty.call(Ue,it)&&(ae&&jt[it]&&jt[it].readOnly&&!$n||ae&&jt[it]&&jt[it].writeOnly&&!En||(ae&&jt[it]&&jt[it].xml&&jt[it].xml.attribute?tr[jt[it].xml.name||it]=Ue[it]:Tt(it,Ue[it])));return Ae()(tr)||Xt[Ht].push({_attr:tr}),Xt}return Xt[Ht]=Ae()(tr)?Ue:[{_attr:tr},Ue],Xt}if("object"===Kt){for(var Pt in jt)Object.prototype.hasOwnProperty.call(jt,Pt)&&(jt[Pt]&&jt[Pt].deprecated||jt[Pt]&&jt[Pt].readOnly&&!$n||jt[Pt]&&jt[Pt].writeOnly&&!En||Tt(Pt));if(Jt&&tr&&Xt[Ht].push({_attr:tr}),Qn())return Xt;if(!0===qn)Jt?Xt[Ht].push({additionalProp:"Anything can be here"}):Xt.additionalProp1={},hn++;else if(qn){var Ut=Object(ie.z)(qn),ot=It(Ut,Ie,void 0,Jt);if(Jt&&Ut.xml&&Ut.xml.name&&"notagname"!==Ut.xml.name)Xt[Ht].push(ot);else for(var Nn=null!=ae.minProperties&&hn<ae.minProperties?ae.minProperties-hn:3,sn=1;sn<=Nn;sn++){if(Qn())return Xt;if(Jt){var An={};An["additionalProp"+sn]=ot.notagname,Xt[Ht].push(An)}else Xt["additionalProp"+sn]=ot;hn++}}return Xt}if("array"===Kt){if(!Sn)return;var Bn,ir,mr;if(Jt&&(Sn.xml=Sn.xml||(null===(ir=ae)||void 0===ir?void 0:ir.xml)||{},Sn.xml.name=Sn.xml.name||Cn.name),C()(Sn.anyOf))Bn=Y()(mr=Sn.anyOf).call(mr,function(nr){return It(je(Sn,nr,Ie),Ie,void 0,Jt)});else if(C()(Sn.oneOf)){var _r;Bn=Y()(_r=Sn.oneOf).call(_r,function(nr){return It(je(Sn,nr,Ie),Ie,void 0,Jt)})}else{if(!(!Jt||Jt&&Cn.wrapped))return It(Sn,Ie,void 0,Jt);Bn=[It(Sn,Ie,void 0,Jt)]}return Bn=et(Bn),Jt&&Cn.wrapped?(Xt[Ht]=Bn,Ae()(tr)||Xt[Ht].push({_attr:tr}),Xt):Bn}if(ae&&C()(ae.enum))yn=Object(ie.v)(ae.enum)[0];else{if(!ae)return;if("number"==typeof(yn=Oe(ae))){var Nr=ae.minimum;null!=Nr&&(ae.exclusiveMinimum&&Nr++,yn=Nr);var br=ae.maximum;null!=br&&(ae.exclusiveMaximum&&br--,yn=br)}if("string"==typeof yn&&(null!=ae.maxLength&&(yn=U()(yn).call(yn,0,ae.maxLength)),null!=ae.minLength))for(var Jn=0;yn.length<ae.minLength;)yn+=yn[Jn++%yn.length]}if("file"!==Kt)return Jt?(Xt[Ht]=Ae()(tr)?yn:[{_attr:tr},yn],Xt):yn},lt=function(It){return It.schema&&(It=It.schema),It.properties&&(It.type="object"),It},nn=function(It,ae,Ie){var dt=Et(It,ae,Ie,!0);if(dt)return"string"==typeof dt?dt:fe()(dt,{declaration:!0,indent:"\t"})},St=function(It,ae,Ie){return Et(It,ae,Ie,!1)},At=he()(nn),Qe=he()(St)},function(g,o,t){"use strict";var e=t(908).CopyToClipboard;e.CopyToClipboard=e,g.exports=e},function(g,o,t){"use strict";t.r(o),t.d(o,"UPDATE_CONFIGS",function(){return a}),t.d(o,"TOGGLE_CONFIGS",function(){return l}),t.d(o,"update",function(){return u}),t.d(o,"toggle",function(){return h}),t.d(o,"loaded",function(){return _});var e=t(3),s=t.n(e),a="configs_update",l="configs_toggle";function u(m,b){return{type:a,payload:s()({},m,b)}}function h(m){return{type:l,payload:m}}var _=function(){return function(m){var C=m.authActions;if((0,m.getConfigs)().persistAuthorization){var D=localStorage.getItem("authorized");D&&C.restoreAuthorization({authorized:JSON.parse(D)})}}}},function(g,o,t){"use strict";t.d(o,"a",function(){return m});var e=t(12),s=t.n(e),a=t(31),l=t.n(a),u=t(1),h=t.n(u),_=h.a.Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function m(b){var C=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},D=C.isOAS3;if(!h.a.Map.isMap(b))return{schema:h.a.Map(),parameterContentMediaType:null};if(!D)return"body"===b.get("in")?{schema:b.get("schema",h.a.Map()),parameterContentMediaType:null}:{schema:s()(b).call(b,function(H,z){return l()(_).call(_,z)}),parameterContentMediaType:null};if(b.get("content")){var x=b.get("content",h.a.Map({})).keySeq(),j=x.first();return{schema:b.getIn(["content",j,"schema"],h.a.Map()),parameterContentMediaType:j}}return{schema:b.get("schema",h.a.Map()),parameterContentMediaType:null}}},function(g,o,t){var e=t(112);g.exports=Array.isArray||function(s){return"Array"==e(s)}},function(g,o,t){"use strict";var e=t(169),s=t(63),a=t(94);g.exports=function(l,u,h){var _=e(u);_ in l?s.f(l,_,a(0,h)):l[_]=h}},function(g,o,t){var e=t(33),s=t(38),a=t(128),l=s("species");g.exports=function(u){return a>=51||!e(function(){var h=[];return(h.constructor={})[l]=function(){return{foo:1}},1!==h[u](Boolean).foo})}},function(g,o,t){var e=t(334),s=t(221);g.exports=Object.keys||function(a){return e(a,s)}},function(g,o){g.exports={}},function(g,o,t){var e=t(592),s=t(78),a=Object.prototype,l=a.hasOwnProperty,u=a.propertyIsEnumerable,h=e(function(){return arguments}())?e:function(_){return s(_)&&l.call(_,"callee")&&!u.call(_,"callee")};g.exports=h},function(g,o,t){(function(e){var s=t(69),a=t(594),l=o&&!o.nodeType&&o,u=l&&"object"==typeof e&&e&&!e.nodeType&&e,h=u&&u.exports===l?s.Buffer:void 0;e.exports=(h?h.isBuffer:void 0)||a}).call(this,t(183)(g))},function(g,o,t){var e=t(367),s=t(598),a=t(117);g.exports=function(l){return a(l)?e(l,!0):s(l)}},function(g,o,t){var e=t(75),s=t(211),a=t(130),l=t(38)("iterator");g.exports=function(u){if(null!=u)return s(u,l)||s(u,"@@iterator")||a[e(u)]}},function(g,o,t){var e=t(690),s=t(227),a=t(691),l=t(692),u=t(693),h=t(116),_=t(356),m="[object Map]",b="[object Promise]",C="[object Set]",D="[object WeakMap]",x="[object DataView]",j=_(e),H=_(s),z=_(a),U=_(l),M=_(u),I=h;(e&&I(new e(new ArrayBuffer(1)))!=x||s&&I(new s)!=m||a&&I(a.resolve())!=b||l&&I(new l)!=C||u&&I(new u)!=D)&&(I=function(J){var Y=h(J),ie="[object Object]"==Y?J.constructor:void 0,oe=ie?_(ie):"";if(oe)switch(oe){case j:return x;case H:return m;case z:return b;case U:return C;case M:return D}return Y}),g.exports=I},function(g,o,t){var e=t(52),s=t(243),a=t(696),l=t(102);g.exports=function(u,h){return e(u)?u:s(u,h)?[u]:a(l(u))}},function(g,o,t){(function(e){function s(a){return Object.prototype.toString.call(a)}o.isArray=function(a){return Array.isArray?Array.isArray(a):"[object Array]"===s(a)},o.isBoolean=function(a){return"boolean"==typeof a},o.isNull=function(a){return null===a},o.isNullOrUndefined=function(a){return null==a},o.isNumber=function(a){return"number"==typeof a},o.isString=function(a){return"string"==typeof a},o.isSymbol=function(a){return"symbol"==typeof a},o.isUndefined=function(a){return void 0===a},o.isRegExp=function(a){return"[object RegExp]"===s(a)},o.isObject=function(a){return"object"==typeof a&&null!==a},o.isDate=function(a){return"[object Date]"===s(a)},o.isError=function(a){return"[object Error]"===s(a)||a instanceof Error},o.isFunction=function(a){return"function"==typeof a},o.isPrimitive=function(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||void 0===a},o.isBuffer=e.isBuffer}).call(this,t(132).Buffer)},function(g,o,t){var e=t(99);g.exports=function(s,a,l){for(var u in a)l&&l.unsafe&&s[u]?s[u]=a[u]:e(s,u,a[u],l);return s}},function(g,o,t){"use strict";var e=t(73),s=function(a){var l,u;this.promise=new a(function(h,_){if(void 0!==l||void 0!==u)throw TypeError("Bad Promise constructor");l=h,u=_}),this.resolve=e(l),this.reject=e(u)};g.exports.f=function(a){return new s(a)}},function(g,o,t){"use strict";t.r(o);var e=t(0),s=t.n(e);t(11),o.default=function(a){var l=a.name;return s.a.createElement("div",{className:"fallback"},"\u{1f631} ",s.a.createElement("i",null,"Could not render ","t"===l?"this component":l,", see the console."))}},function(g,o,t){"use strict";t.r(o),t.d(o,"requestSnippetGenerator_curl_powershell",function(){return ue}),t.d(o,"requestSnippetGenerator_curl_bash",function(){return He}),t.d(o,"requestSnippetGenerator_curl_cmd",function(){return $e});var e=t(14),s=t.n(e),a=t(13),l=t.n(a),u=t(49),h=t.n(u),_=t(18),m=t.n(_),b=t(105),C=t.n(b),D=t(2),x=t.n(D),j=t(32),H=t.n(j),z=t(4),U=t.n(z),M=t(460),I=t.n(M),J=t(80),Y=t.n(J),ie=t(31),oe=t.n(ie),fe=t(26),ne=t(1),he=function(F){var je;return m()(F).call(F,"_**[]")<0?F:C()(je=F.split("_**[]")[0]).call(je)},ce=function(F){return"-d "===F||/^[_\/-]/g.test(F)?F:"'"+F.replace(/'/g,"'\\''")+"'"},Ae=function(F){return"-d "===(F=F.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?F.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(F)?F:'"'+F+'"'},Me=function(F){return"-d "===F?F:/\n/.test(F)?'@"\n'+F.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(F)?F:"'"+F.replace(/"/g,'""').replace(/'/g,"''")+"'"};function Oe(F){var je,Et=[],lt=h()(F.get("body").entrySeq());try{for(lt.s();!(je=lt.n()).done;){var nn,St,At,Qe=l()(je.value,2),ae=Qe[1],Ie=he(Qe[0]);Et.push(ae instanceof fe.a.File?x()(nn=x()(St='  "'.concat(Ie,'": {\n    "name": "')).call(St,ae.name,'"')).call(nn,ae.type?',\n    "type": "'.concat(ae.type,'"'):"","\n  }"):x()(At='  "'.concat(Ie,'": ')).call(At,H()(ae,null,2).replace(/(\r\n|\r|\n)/g,"\n  ")))}}catch(dt){lt.e(dt)}finally{lt.f()}return"{\n".concat(Et.join(",\n"),"\n}")}var be=function(F,je,Et){var lt,nn=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",St=!1,At="",Qe=function(){for(var En=arguments.length,Fn=new Array(En),Dn=0;Dn<En;Dn++)Fn[Dn]=arguments[Dn];return At+=" "+U()(Fn).call(Fn,je).join(" ")},It=function(){for(var En=arguments.length,Fn=new Array(En),Dn=0;Dn<En;Dn++)Fn[Dn]=arguments[Dn];return At+=U()(Fn).call(Fn,je).join(" ")},ae=function(){return At+=" ".concat(Et)},Ie=function(){var En,Fn=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return At+=I()(En="  ").call(En,Fn)},dt=F.get("headers");if(At+="curl"+nn,F.has("curlOptions")&&Qe.apply(void 0,s()(F.get("curlOptions"))),Qe("-X",F.get("method")),ae(),Ie(),It("".concat(F.get("url"))),dt&&dt.size){var Jt,zt,ln=h()(Y()(Jt=F.get("headers")).call(Jt));try{for(ln.s();!(zt=ln.n()).done;){var ar,Ln=zt.value;ae(),Ie();var Rn=l()(Ln,2),er=Rn[0],Mn=Rn[1];It("-H",x()(ar="".concat(er,": ")).call(ar,Mn)),St=St||/^content-type$/i.test(er)&&/^multipart\/form-data$/i.test(Mn)}}catch(En){ln.e(En)}finally{ln.f()}}if(F.get("body"))if(St&&oe()(lt=["POST","PUT","PATCH"]).call(lt,F.get("method"))){var Ht,tr=h()(F.get("body").entrySeq());try{for(tr.s();!(Ht=tr.n()).done;){var Yn,Cn,Kt,dn=l()(Ht.value,2),Kn=dn[0],qn=dn[1],Sn=he(Kn);ae(),Ie(),It("-F"),Qe(qn instanceof fe.a.File?x()(Yn=x()(Cn="".concat(Sn,"=@")).call(Cn,qn.name)).call(Yn,qn.type?";type=".concat(qn.type):""):x()(Kt="".concat(Sn,"=")).call(Kt,qn))}}catch(En){tr.e(En)}finally{tr.f()}}else{ae(),Ie(),It("-d ");var $n=F.get("body");ne.Map.isMap($n)?It(Oe(F)):("string"!=typeof $n&&($n=H()($n)),It($n))}else F.get("body")||"POST"!==F.get("method")||(ae(),Ie(),It("-d ''"));return At},ue=function(F){return be(F,Me,"`\n",".exe")},He=function(F){return be(F,ce,"\\\n")},$e=function(F){return be(F,Ae,"^\n")}},function(g,o,t){"use strict";t.r(o),t.d(o,"parseYamlConfig",function(){return s});var e=t(70),s=function(a,l){try{return e.a.load(a)}catch(u){return l&&l.errActions.newThrownErr(new Error(u)),{}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"getDefaultRequestBodyValue",function(){return I});var e=t(13),s=t.n(e),a=t(4),l=t.n(a),u=t(18),h=t.n(u),_=t(31),m=t.n(_),b=t(2),C=t.n(b),D=t(24),x=t.n(D),j=t(0),H=t.n(j),z=(t(11),t(28),t(1)),U=t(5),M=t(107),I=function(J,Y,ie){var oe=J.getIn(["content",Y]),fe=oe.get("schema").toJS(),ne=void 0!==oe.get("examples"),he=oe.get("example"),ce=ne?oe.getIn(["examples",ie,"value"]):he,Ae=Object(U.o)(fe,Y,{includeWriteOnly:!0},ce);return Object(U.I)(Ae)};o.default=function(J){var Y=J.userHasEditedBody,ie=J.requestBody,oe=J.requestBodyValue,fe=J.requestBodyInclusionSetting,ne=J.requestBodyErrors,he=J.getComponent,ce=J.getConfigs,Ae=J.specSelectors,Me=J.fn,Oe=J.contentType,be=J.isExecute,ue=J.specPath,He=J.onChange,$e=J.onChangeIncludeEmpty,F=J.activeExamplesKey,je=J.updateActiveExamplesKey,Et=J.setRetainRequestBodyValueFlag,lt=function(Sn){var $n={key:Sn,shouldDispatchInit:!1,defaultValue:!0};return"no value"===fe.get(Sn,"no value")&&($n.shouldDispatchInit=!0),$n},nn=he("Markdown",!0),St=he("modelExample"),At=he("RequestBodyEditor"),Qe=he("highlightCode"),It=he("ExamplesSelectValueRetainer"),ae=he("Example"),Ie=he("ParameterIncludeEmpty"),dt=ce().showCommonExtensions,Jt=ie&&ie.get("description")||null,zt=ie&&ie.get("content")||new z.OrderedMap;Oe=Oe||zt.keySeq().first()||"";var ln=zt.get(Oe,Object(z.OrderedMap)()),ar=ln.get("schema",Object(z.OrderedMap)()),Ln=ln.get("examples",null),Rn=null==Ln?void 0:l()(Ln).call(Ln,function(Sn,$n){var En,Fn=null===(En=Sn)||void 0===En?void 0:En.get("value",null);return Fn&&(Sn=Sn.set("value",I(ie,Oe,$n),Fn)),Sn});if(ne=z.List.isList(ne)?ne:Object(z.List)(),!ln.size)return null;var er="object"===ln.getIn(["schema","type"]),Mn="binary"===ln.getIn(["schema","format"]),Ht="base64"===ln.getIn(["schema","format"]);if("application/octet-stream"===Oe||0===h()(Oe).call(Oe,"image/")||0===h()(Oe).call(Oe,"audio/")||0===h()(Oe).call(Oe,"video/")||Mn||Ht){var tr=he("Input");return be?H.a.createElement(tr,{type:"file",onChange:function(Sn){He(Sn.target.files[0])}}):H.a.createElement("i",null,"Example values are not available for ",H.a.createElement("code",null,Oe)," media types.")}if(er&&("application/x-www-form-urlencoded"===Oe||0===h()(Oe).call(Oe,"multipart/"))&&ar.get("properties",Object(z.OrderedMap)()).size>0){var Yn,Cn=he("JsonSchemaForm"),Kt=he("ParameterExt"),dn=ar.get("properties",Object(z.OrderedMap)());return oe=z.Map.isMap(oe)?oe:Object(z.OrderedMap)(),H.a.createElement("div",{className:"table-container"},Jt&&H.a.createElement(nn,{source:Jt}),H.a.createElement("table",null,H.a.createElement("tbody",null,z.Map.isMap(dn)&&l()(Yn=dn.entrySeq()).call(Yn,function(Sn){var $n,En,Fn=s()(Sn,2),Dn=Fn[0],mn=Fn[1];if(!mn.get("readOnly")){var jn=dt?Object(U.l)(mn):null,Xt=m()($n=ar.get("required",Object(z.List)())).call($n,Dn),ut=mn.get("type"),mt=mn.get("format"),Tt=mn.get("description"),yn=oe.getIn([Dn,"value"]),et=oe.getIn([Dn,"errors"])||ne,jt=fe.get(Dn)||!1,hn=mn.has("default")||mn.has("example")||mn.hasIn(["items","example"])||mn.hasIn(["items","default"]),Qn=mn.has("enum")&&(1===mn.get("enum").size||Xt),Ir=hn||Qn,ht="";"array"!==ut||Ir||(ht=[]),("object"===ut||Ir)&&(ht=Object(U.o)(mn,!1,{includeWriteOnly:!0})),"string"!=typeof ht&&"object"===ut&&(ht=Object(U.I)(ht)),"string"==typeof ht&&"array"===ut&&(ht=JSON.parse(ht));var L="string"===ut&&("binary"===mt||"base64"===mt);return H.a.createElement("tr",{key:Dn,className:"parameters","data-property-name":Dn},H.a.createElement("td",{className:"parameters-col_name"},H.a.createElement("div",{className:Xt?"parameter__name required":"parameter__name"},Dn,Xt?H.a.createElement("span",null,"\xa0*"):null),H.a.createElement("div",{className:"parameter__type"},ut,mt&&H.a.createElement("span",{className:"prop-format"},"($",mt,")"),dt&&jn.size?l()(En=jn.entrySeq()).call(En,function(Ue){var nt,at=s()(Ue,2),it=at[0],Pt=at[1];return H.a.createElement(Kt,{key:C()(nt="".concat(it,"-")).call(nt,Pt),xKey:it,xVal:Pt})}):null),H.a.createElement("div",{className:"parameter__deprecated"},mn.get("deprecated")?"deprecated":null)),H.a.createElement("td",{className:"parameters-col_description"},H.a.createElement(nn,{source:Tt}),be?H.a.createElement("div",null,H.a.createElement(Cn,{fn:Me,dispatchInitialValue:!L,schema:mn,description:Dn,getComponent:he,value:void 0===yn?ht:yn,required:Xt,errors:et,onChange:function(Ue){He(Ue,[Dn])}}),Xt?null:H.a.createElement(Ie,{onChange:function(Ue){return $e(Dn,Ue)},isIncluded:jt,isIncludedOptions:lt(Dn),isDisabled:x()(yn)?0!==yn.length:!Object(U.q)(yn)})):null))}}))))}var Kn=I(ie,Oe,F),qn=null;return Object(M.a)(Kn)&&(qn="json"),H.a.createElement("div",null,Jt&&H.a.createElement(nn,{source:Jt}),Rn?H.a.createElement(It,{userHasEditedBody:Y,examples:Rn,currentKey:F,currentUserInputValue:oe,onSelect:function(Sn){je(Sn)},updateValue:He,defaultToFirstExample:!0,getComponent:he,setRetainRequestBodyValueFlag:Et}):null,be?H.a.createElement("div",null,H.a.createElement(At,{value:oe,errors:ne,defaultValue:Kn,onChange:He,getComponent:he})):H.a.createElement(St,{getComponent:he,getConfigs:ce,specSelectors:Ae,expandDepth:1,isExecute:be,schema:ln.get("schema"),specPath:ue.push("content",Oe),example:H.a.createElement(Qe,{className:"body-param__example",getConfigs:ce,language:qn,value:Object(U.I)(oe)||Kn}),includeWriteOnly:!0}),Rn?H.a.createElement(ae,{example:Rn.get(F),getComponent:he,getConfigs:ce}):null)}},function(g,o,t){"use strict";t.r(o),t.d(o,"setHash",function(){return e});var e=function(s){return s?history.pushState(null,null,"#".concat(s)):window.location.hash=""}},function(g,o,t){"use strict";t.r(o),t.d(o,"makeMappedContainer",function(){return Sn}),t.d(o,"render",function(){return $n}),t.d(o,"getComponent",function(){return Fn});var e=t(19),s=t.n(e),a=t(29),l=t.n(a),u=t(6),h=t.n(u),_=t(7),m=t.n(_),b=t(8),C=t.n(b),D=t(9),x=t.n(D),j=t(21),H=t.n(j),z=t(15),U=t.n(z),M=t(0),I=t.n(M),J=t(195),Y=t.n(J),ie=(t(11),I.a.createContext(null)),oe=function(Dn){Dn()},fe={notify:function(){}},he=function(){function Dn(jn,Xt){this.store=jn,this.parentSub=Xt,this.unsubscribe=null,this.listeners=fe,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var mn=Dn.prototype;return mn.addNestedSub=function(jn){return this.trySubscribe(),this.listeners.subscribe(jn)},mn.notifyNestedSubs=function(){this.listeners.notify()},mn.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},mn.isSubscribed=function(){return Boolean(this.unsubscribe)},mn.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var Dn=oe,mn=null,jn=null;return{clear:function(){mn=null,jn=null},notify:function(){Dn(function(){for(var Xt=mn;Xt;)Xt.callback(),Xt=Xt.next})},get:function(){for(var Xt=[],ut=mn;ut;)Xt.push(ut),ut=ut.next;return Xt},subscribe:function(Xt){var ut=!0,mt=jn={callback:Xt,next:null,prev:jn};return mt.prev?mt.prev.next=mt:mn=mt,function(){ut&&null!==mn&&(ut=!1,mt.next?mt.next.prev=mt.prev:jn=mt.prev,mt.prev?mt.prev.next=mt.next:mn=mt.next)}}}}())},mn.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=fe)},Dn}(),ce="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?M.useLayoutEffect:M.useEffect,Ae=function(Dn){var mn=Dn.store,jn=Dn.context,Xt=Dn.children,ut=Object(M.useMemo)(function(){var yn=new he(mn);return yn.onStateChange=yn.notifyNestedSubs,{store:mn,subscription:yn}},[mn]),mt=Object(M.useMemo)(function(){return mn.getState()},[mn]);return ce(function(){var yn=ut.subscription;return yn.trySubscribe(),mt!==mn.getState()&&yn.notifyNestedSubs(),function(){yn.tryUnsubscribe(),yn.onStateChange=null}},[ut,mt]),I.a.createElement((jn||ie).Provider,{value:ut},Xt)};function Me(){return(Me=Object.assign||function(Dn){for(var mn=1;mn<arguments.length;mn++){var jn=arguments[mn];for(var Xt in jn)Object.prototype.hasOwnProperty.call(jn,Xt)&&(Dn[Xt]=jn[Xt])}return Dn}).apply(this,arguments)}function Oe(Dn,mn){if(null==Dn)return{};var jn,Xt,ut={},mt=Object.keys(Dn);for(Xt=0;Xt<mt.length;Xt++)mn.indexOf(jn=mt[Xt])>=0||(ut[jn]=Dn[jn]);return ut}var be=t(322),ue=t.n(be),He=t(269),$e=[],F=[null,null];function je(Dn,mn){return[mn.payload,Dn[1]+1]}function Et(Dn,mn,jn){ce(function(){return Dn.apply(void 0,mn)},jn)}function lt(Dn,mn,jn,Xt,ut,mt,Tt){Dn.current=Xt,mn.current=ut,jn.current=!1,mt.current&&(mt.current=null,Tt())}function nn(Dn,mn,jn,Xt,ut,mt,Tt,yn,et,jt){if(Dn){var hn=!1,Qn=null,Ir=function(){if(!hn){var ht,L,Ue=mn.getState();try{ht=Xt(Ue,ut.current)}catch(nt){L=nt,Qn=nt}L||(Qn=null),ht===mt.current?Tt.current||et():(mt.current=ht,yn.current=ht,Tt.current=!0,jt({type:"STORE_UPDATED",payload:{error:L}}))}};return jn.onStateChange=Ir,jn.trySubscribe(),Ir(),function(){if(hn=!0,jn.tryUnsubscribe(),jn.onStateChange=null,Qn)throw Qn}}}var St=function(){return[null,0]};function Qe(Dn,mn){return Dn===mn?0!==Dn||0!==mn||1/Dn==1/mn:Dn!=Dn&&mn!=mn}function It(Dn,mn){if(Qe(Dn,mn))return!0;if("object"!=typeof Dn||null===Dn||"object"!=typeof mn||null===mn)return!1;var jn=Object.keys(Dn),Xt=Object.keys(mn);if(jn.length!==Xt.length)return!1;for(var ut=0;ut<jn.length;ut++)if(!Object.prototype.hasOwnProperty.call(mn,jn[ut])||!Qe(Dn[jn[ut]],mn[jn[ut]]))return!1;return!0}function ae(Dn){return function(mn,jn){var Xt=Dn(mn,jn);function ut(){return Xt}return ut.dependsOnOwnProps=!1,ut}}function Ie(Dn){return null!=Dn.dependsOnOwnProps?Boolean(Dn.dependsOnOwnProps):1!==Dn.length}function dt(Dn,mn){return function(jn,Xt){var ut=function(mt,Tt){return ut.dependsOnOwnProps?ut.mapToProps(mt,Tt):ut.mapToProps(mt)};return ut.dependsOnOwnProps=!0,ut.mapToProps=function(mt,Tt){ut.mapToProps=Dn,ut.dependsOnOwnProps=Ie(Dn);var yn=ut(mt,Tt);return"function"==typeof yn&&(ut.mapToProps=yn,ut.dependsOnOwnProps=Ie(yn),yn=ut(mt,Tt)),yn},ut}}var Jt=[function(Dn){return"function"==typeof Dn?dt(Dn):void 0},function(Dn){return Dn?void 0:ae(function(mn){return{dispatch:mn}})},function(Dn){return Dn&&"object"==typeof Dn?ae(function(mn){return function(jn,Xt){var ut={},mt=function(yn){var et=jn[yn];"function"==typeof et&&(ut[yn]=function(){return Xt(et.apply(void 0,arguments))})};for(var Tt in jn)mt(Tt);return ut}(Dn,mn)}):void 0}];function ln(Dn,mn,jn){return Me({},jn,Dn,mn)}var ar=[function(Dn){return"function"==typeof Dn?(mn=Dn,function(jn,Xt){var ut,mt=Xt.pure,Tt=Xt.areMergedPropsEqual,yn=!1;return function(et,jt,hn){var Qn=mn(et,jt,hn);return yn?mt&&Tt(Qn,ut)||(ut=Qn):(yn=!0,ut=Qn),ut}}):void 0;var mn},function(Dn){return Dn?void 0:function(){return ln}}];function Ln(Dn,mn,jn,Xt){return function(ut,mt){return jn(Dn(ut,mt),mn(Xt,mt),mt)}}function Rn(Dn,mn,jn,Xt,ut){var mt,Tt,yn,et,jt,hn=ut.areStatesEqual,Qn=ut.areOwnPropsEqual,Ir=ut.areStatePropsEqual,ht=!1;return function(Ue,nt){return ht?function(Ue,nt){var at,it,Pt=!Qn(nt,Tt),Ut=!hn(Ue,mt);return mt=Ue,Tt=nt,Pt&&Ut?(yn=Dn(mt,Tt),mn.dependsOnOwnProps&&(et=mn(Xt,Tt)),jt=jn(yn,et,Tt)):Pt?(Dn.dependsOnOwnProps&&(yn=Dn(mt,Tt)),mn.dependsOnOwnProps&&(et=mn(Xt,Tt)),jt=jn(yn,et,Tt)):(Ut&&(at=Dn(mt,Tt),it=!Ir(at,yn),yn=at,it&&(jt=jn(yn,et,Tt))),jt)}(Ue,nt):(yn=Dn(mt=Ue,Tt=nt),et=mn(Xt,Tt),jt=jn(yn,et,Tt),ht=!0,jt)}}function Mn(Dn,mn,jn){for(var Xt=mn.length-1;Xt>=0;Xt--){var ut=mn[Xt](Dn);if(ut)return ut}return function(mt,Tt){throw new Error("Invalid value of type "+typeof Dn+" for "+jn+" argument when connecting component "+Tt.wrappedComponentName+".")}}function Ht(Dn,mn){return Dn===mn}var mn,jn,Xt,ut,mt,Tt,yn,et,jt,hn,Qn,Yn=(Xt=void 0===(jn=(mn={}).connectHOC)?function(Dn,mn){void 0===mn&&(mn={});var Xt=mn.getDisplayName,ut=void 0===Xt?function(Pt){return"ConnectAdvanced("+Pt+")"}:Xt,mt=mn.methodName,Tt=void 0===mt?"connectAdvanced":mt,yn=mn.renderCountProp,et=void 0===yn?void 0:yn,jt=mn.shouldHandleStateChanges,hn=void 0===jt||jt,Qn=mn.storeKey,Ir=void 0===Qn?"store":Qn,ht=mn.forwardRef,L=void 0!==ht&&ht,Ue=mn.context,nt=void 0===Ue?ie:Ue,at=Oe(mn,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),it=nt;return function(Pt){var Ut=Pt.displayName||Pt.name||"Component",ot=ut(Ut),Nn=Me({},at,{getDisplayName:ut,methodName:Tt,renderCountProp:et,shouldHandleStateChanges:hn,storeKey:Ir,displayName:ot,wrappedComponentName:Ut,WrappedComponent:Pt}),sn=at.pure,An=sn?M.useMemo:function(_r){return _r()};function Bn(_r){var Nr=Object(M.useMemo)(function(){var or=_r.reactReduxForwardedRef,Zn=Oe(_r,["reactReduxForwardedRef"]);return[_r.context,or,Zn]},[_r]),br=Nr[0],Jn=Nr[1],nr=Nr[2],Mr=Object(M.useMemo)(function(){return br&&br.Consumer&&Object(He.isContextConsumer)(I.a.createElement(br.Consumer,null))?br:it},[br,it]),yi=Object(M.useContext)(Mr),Ii=Boolean(_r.store)&&Boolean(_r.store.getState)&&Boolean(_r.store.dispatch);Boolean(yi)&&Boolean(yi.store);var Mi=Ii?_r.store:yi.store,Oi=Object(M.useMemo)(function(){return Dn(Mi.dispatch,Nn)},[Mi]),Kr=Object(M.useMemo)(function(){if(!hn)return F;var or=new he(Mi,Ii?null:yi.subscription),Zn=or.notifyNestedSubs.bind(or);return[or,Zn]},[Mi,Ii,yi]),ei=Kr[0],di=Kr[1],se=Object(M.useMemo)(function(){return Ii?yi:Me({},yi,{subscription:ei})},[Ii,yi,ei]),ct=Object(M.useReducer)(je,$e,St),Ke=ct[0][0],Xe=ct[1];if(Ke&&Ke.error)throw Ke.error;var Vt=Object(M.useRef)(),Ct=Object(M.useRef)(nr),rt=Object(M.useRef)(),bt=Object(M.useRef)(!1),We=An(function(){return rt.current&&nr===Ct.current?rt.current:Oi(Mi.getState(),nr)},[Mi,Ke,nr]);Et(lt,[Ct,Vt,bt,nr,We,rt,di]),Et(nn,[hn,Mi,ei,Oi,Ct,Vt,bt,rt,di,Xe],[Mi,ei,Oi]);var $t=Object(M.useMemo)(function(){return I.a.createElement(Pt,Me({},We,{ref:Jn}))},[Jn,Pt,We]);return Object(M.useMemo)(function(){return hn?I.a.createElement(Mr.Provider,{value:se},$t):$t},[Mr,$t,se])}var ir=sn?I.a.memo(Bn):Bn;if(ir.WrappedComponent=Pt,ir.displayName=Bn.displayName=ot,L){var mr=I.a.forwardRef(function(_r,Nr){return I.a.createElement(ir,Me({},_r,{reactReduxForwardedRef:Nr}))});return mr.displayName=ot,mr.WrappedComponent=Pt,ue()(mr,Pt)}return ue()(ir,Pt)}}:jn,mt=void 0===(ut=mn.mapStateToPropsFactories)?[function(Dn){return"function"==typeof Dn?dt(Dn):void 0},function(Dn){return Dn?void 0:ae(function(){return{}})}]:ut,yn=void 0===(Tt=mn.mapDispatchToPropsFactories)?Jt:Tt,jt=void 0===(et=mn.mergePropsFactories)?ar:et,Qn=void 0===(hn=mn.selectorFactory)?function(Dn,mn){var jn=mn.initMapStateToProps,Xt=mn.initMapDispatchToProps,ut=mn.initMergeProps,mt=Oe(mn,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),Tt=jn(Dn,mt),yn=Xt(Dn,mt),et=ut(Dn,mt);return(mt.pure?Rn:Ln)(Tt,yn,et,Dn,mt)}:hn,function(Ir,ht,L,Ue){void 0===Ue&&(Ue={});var at=Ue.pure,it=void 0===at||at,Pt=Ue.areStatesEqual,Ut=void 0===Pt?Ht:Pt,ot=Ue.areOwnPropsEqual,Nn=void 0===ot?It:ot,sn=Ue.areStatePropsEqual,An=void 0===sn?It:sn,Bn=Ue.areMergedPropsEqual,ir=void 0===Bn?It:Bn,mr=Oe(Ue,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_r=Mn(Ir,mt,"mapStateToProps"),Nr=Mn(ht,yn,"mapDispatchToProps"),br=Mn(L,jt,"mergeProps");return Xt(Qn,Me({methodName:"connect",getDisplayName:function(Jn){return"Connect("+Jn+")"},shouldHandleStateChanges:Boolean(Ir),initMapStateToProps:_r,initMapDispatchToProps:Nr,initMergeProps:br,pure:it,areStatesEqual:Ut,areOwnPropsEqual:Nn,areStatePropsEqual:An,areMergedPropsEqual:ir},mr))});oe=J.unstable_batchedUpdates;var Kt=t(459),dn=t.n(Kt),Kn=function(Dn,mn,jn){var Xt=function(mt,Tt){return function(yn){C()(jt,yn);var et=x()(jt);function jt(){return h()(this,jt),et.apply(this,arguments)}return m()(jt,[{key:"render",value:function(){return I.a.createElement(Tt,l()({},mt(),this.props,this.context))}}]),jt}(M.Component)}(Dn,mn),ut=Yn(function(mt,Tt){var yn=H()({},Tt,Dn());return(mn.prototype.mapStateToProps||function(et){return{state:et}})(mt,yn)})(Xt);return jn?function(mt,Tt,yn){return function(et){C()(hn,et);var jt=x()(hn);function hn(){return h()(this,hn),jt.apply(this,arguments)}return m()(hn,[{key:"render",value:function(){var Qn=(0,mt().getComponent)("ErrorBoundary",!0);return I.a.createElement(Ae,{store:Tt},I.a.createElement(Qn,{targetName:null==yn?void 0:yn.name},I.a.createElement(yn,l()({},this.props,this.context))))}}]),hn}(M.Component)}(Dn,jn,ut):ut},qn=function(Dn,mn,jn,Xt){for(var ut in mn){var mt=mn[ut];"function"==typeof mt&&mt(jn[ut],Xt[ut],Dn())}},Sn=function(Dn,mn,jn,Xt,ut,mt){return function(Tt){C()(et,Tt);var yn=x()(et);function et(jt,hn){var Qn;return h()(this,et),Qn=yn.call(this,jt,hn),qn(Dn,mt,jt,{}),Qn}return m()(et,[{key:"UNSAFE_componentWillReceiveProps",value:function(jt){qn(Dn,mt,jt,this.props)}},{key:"render",value:function(){var jt=dn()(this.props,mt?U()(mt):[]),hn=jn(ut,"root");return I.a.createElement(hn,jt)}}]),et}(M.Component)},$n=function(Dn,mn,jn,Xt,ut){var mt=jn(Dn,mn,Xt,"App","root");Y.a.render(I.a.createElement(mt,null),ut)},En=function(Dn,mn){var jn=function(ut){return!(ut.prototype&&ut.prototype.isReactComponent)}(mn)?function(ut,mt){return function(Tt){C()(et,Tt);var yn=x()(et);function et(){return h()(this,et),yn.apply(this,arguments)}return m()(et,[{key:"render",value:function(){var jt=ut().getComponent,hn=jt("ErrorBoundary");return I.a.createElement(hn,{targetName:null==mt?void 0:mt.name,getComponent:jt},I.a.createElement(mt,this.props))}}]),et}(M.Component)}(Dn,mn):mn,Xt=jn.prototype.render;return jn.prototype.render=function(){try{for(var ut=arguments.length,mt=new Array(ut),Tt=0;Tt<ut;Tt++)mt[Tt]=arguments[Tt];return Xt.apply(this,mt)}catch(hn){var yn=Dn(),et=yn.getComponent,jt=et("Fallback");return console.error(hn),I.a.createElement(jt,{name:jn.name})}},jn},Fn=function(Dn,mn,jn,Xt,ut){var mt=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if("string"!=typeof Xt)throw new TypeError("Need a string, to fetch a component. Was given a "+s()(Xt));var Tt=jn(Xt);return Tt?ut?"root"===ut?Kn(Dn,Tt,mn()):Kn(Dn,En(Dn,Tt)):En(Dn,Tt):(mt.failSilently||Dn().log.warn("Could not find component:",Xt),null)}},function(g,o,t){g.exports=t(482)},function(g,o,t){"use strict";var e={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,a=s&&!e.call({1:2},1);o.f=a?function(l){var u=s(this,l);return!!u&&u.enumerable}:e},function(g,o,t){var e=t(17),s=t(27),a=t(33),l=t(112),u=e.Object,h=s("".split);g.exports=a(function(){return!u("z").propertyIsEnumerable(0)})?function(_){return"String"==l(_)?h(_,""):u(_)}:u},function(g,o,t){var e=t(485),s=t(209);g.exports=function(a){var l=e(a,"string");return s(l)?l:l+""}},function(g,o,t){var e=t(17).String;g.exports=function(s){try{return e(s)}catch(a){return"Object"}}},function(g,o,t){var e=t(27),s=0,a=Math.random(),l=e(1..toString);g.exports=function(u){return"Symbol("+(void 0===u?"":u)+")_"+l(++s+a,36)}},function(g,o,t){var e=t(27),s=t(33),a=t(41),l=t(75),u=t(58),h=t(217),_=function(){},m=[],b=u("Reflect","construct"),C=/^\s*(?:class|function)\b/,D=e(C.exec),x=!C.exec(_),j=function(H){if(!a(H))return!1;try{return b(_,m,H),!0}catch(z){return!1}};g.exports=!b||s(function(){var H;return j(j.call)||!j(Object)||!j(function(){H=!0})||H})?function(H){if(!a(H))return!1;switch(l(H)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return x||!!D(C,h(H))}:j},function(g,o,t){var e=t(212),s=t(171),a=e("keys");g.exports=function(l){return a[l]||(a[l]=s(l))}},function(g,o,t){var e=t(334),s=t(221).concat("length","prototype");o.f=Object.getOwnPropertyNames||function(a){return e(a,s)}},function(g,o,t){var e=t(17),s=t(44),a=t(41),l=t(62),u=t(173),h=t(342),_=u("IE_PROTO"),m=e.Object,b=m.prototype;g.exports=h?m.getPrototypeOf:function(C){var D=l(C);if(s(D,_))return D[_];var x=D.constructor;return a(x)&&D instanceof x?x.prototype:D instanceof m?b:null}},function(g,o,t){var e=t(27),s=t(51),a=t(506);g.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var l,u=!1,h={};try{(l=e(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(h,[]),u=h instanceof Array}catch(_){}return function(_,m){return s(_),a(m),u?l(_,m):_.__proto__=m,_}}():void 0)},function(g,o,t){var e=t(112),s=t(17);g.exports="process"==e(s.process)},function(g,o,t){var e=t(179),s=t(566),a=t(567),l=t(568),u=t(569),h=t(570);function _(m){var b=this.__data__=new e(m);this.size=b.size}_.prototype.clear=s,_.prototype.delete=a,_.prototype.get=l,_.prototype.has=u,_.prototype.set=h,g.exports=_},function(g,o,t){var e=t(561),s=t(562),a=t(563),l=t(564),u=t(565);function h(_){var m=-1,b=null==_?0:_.length;for(this.clear();++m<b;){var C=_[m];this.set(C[0],C[1])}}h.prototype.clear=e,h.prototype.delete=s,h.prototype.get=a,h.prototype.has=l,h.prototype.set=u,g.exports=h},function(g,o,t){var e=t(103);g.exports=function(s,a){for(var l=s.length;l--;)if(e(s[l][0],a))return l;return-1}},function(g,o,t){var e=t(115)(Object,"create");g.exports=e},function(g,o,t){var e=t(585);g.exports=function(s,a){var l=s.__data__;return e(a)?l["string"==typeof a?"string":"hash"]:l.map}},function(g,o){g.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(g,o){var t=Object.prototype;g.exports=function(e){var s=e&&e.constructor;return e===("function"==typeof s&&s.prototype||t)}},function(g,o,t){var e=t(595),s=t(233),a=t(234),l=a&&a.isTypedArray,u=l?s(l):e;g.exports=u},function(g,o){var t=/^(?:0|[1-9]\d*)$/;g.exports=function(e,s){var a=typeof e;return!!(s=null==s?9007199254740991:s)&&("number"==a||"symbol"!=a&&t.test(e))&&e>-1&&e%1==0&&e<s}},function(g,o,t){var e=t(615),s=t(373),a=t(371);g.exports=function(l,u){var h;if(l){if("string"==typeof l)return a(l,u);var _=e(h=Object.prototype.toString.call(l)).call(h,8,-1);return"Object"===_&&l.constructor&&(_=l.constructor.name),"Map"===_||"Set"===_?s(l):"Arguments"===_||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(_)?a(l,u):void 0}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(116),s=t(78);g.exports=function(a){return"symbol"==typeof a||s(a)&&"[object Symbol]"==e(a)}},function(g,o,t){var e=t(677),s=t(695),a=t(236),l=t(52),u=t(701);g.exports=function(h){return"function"==typeof h?h:null==h?a:"object"==typeof h?l(h)?s(h[0],h[1]):e(h):u(h)}},function(g,o,t){"use strict";(function(e){g.exports=void 0===e||!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?{nextTick:function(s,a,l,u){if("function"!=typeof s)throw new TypeError('"callback" argument must be a function');var h,_,m=arguments.length;switch(m){case 0:case 1:return e.nextTick(s);case 2:return e.nextTick(function(){s.call(null,a)});case 3:return e.nextTick(function(){s.call(null,a,l)});case 4:return e.nextTick(function(){s.call(null,a,l,u)});default:for(h=new Array(m-1),_=0;_<h.length;)h[_++]=arguments[_];return e.nextTick(function(){s.apply(null,h)})}}}:e}).call(this,t(118))},function(g,o,t){"use strict";g.exports=t(731)("forEach")},function(g,o,t){"use strict";g.exports=t(754)()?globalThis:t(755)},function(g,o){g.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},function(g,o,t){var e=t(22),s=t(27),a=t(150),l=t(43),u=t(44),h=t(63).f,_=t(174),m=t(336),b=t(444),C=t(171),D=t(942),x=!1,j=C("meta"),H=0,z=function(M){h(M,j,{value:{objectID:"O"+H++,weakData:{}}})},U=g.exports={enable:function(){U.enable=function(){},x=!0;var M=_.f,I=s([].splice),J={};J[j]=1,M(J).length&&(_.f=function(Y){for(var ie=M(Y),oe=0,fe=ie.length;oe<fe;oe++)if(ie[oe]===j){I(ie,oe,1);break}return ie},e({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:m.f}))},fastKey:function(M,I){if(!l(M))return"symbol"==typeof M?M:("string"==typeof M?"S":"P")+M;if(!u(M,j)){if(!b(M))return"F";if(!I)return"E";z(M)}return M[j].objectID},getWeakData:function(M,I){if(!u(M,j)){if(!b(M))return!0;if(!I)return!1;z(M)}return M[j].weakData},onFreeze:function(M){return D&&x&&b(M)&&!u(M,j)&&z(M),M}};a[j]=!0},function(g,o,t){"use strict";(function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(s){console.error(s)}})(),g.exports=t(875)},function(g,o,t){g.exports=t(626)},function(g,o,t){g.exports=t(791)},function(g,o,t){g.exports=t(841)},function(g,o,t){g.exports=t(920)},function(g,o,t){g.exports=t(934)},function(g,o,t){(function(e){!function(){"use strict";g.exports=function(s){return(s instanceof e?s:e.from(s.toString(),"binary")).toString("base64")}}()}).call(this,t(132).Buffer)},function(g,o,t){g.exports=t(956)},function(g,o,t){"use strict";t.d(o,"a",function(){return he});var e=t(19),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(10),m=t.n(_),b=t(8),C=t.n(b),D=t(9),x=t.n(D),j=t(3),H=t.n(j),z=t(15),U=t.n(z),M=t(2),I=t.n(M),J=t(0),Y=t.n(J),ie=t(89),oe=t.n(ie),fe=(t(11),t(5)),ne=t(26),he=function(Ae){C()(Oe,Ae);var Me=x()(Oe);function Oe(be,ue){var He;l()(this,Oe),He=Me.call(this,be,ue),H()(m()(He),"getDefinitionUrl",function(){return new oe.a(He.props.specSelectors.url(),ne.a.location).toString()});var $e=(0,be.getConfigs)().validatorUrl;return He.state={url:He.getDefinitionUrl(),validatorUrl:void 0===$e?"https://validator.swagger.io/validator":$e},He}return h()(Oe,[{key:"UNSAFE_componentWillReceiveProps",value:function(be){var ue=(0,be.getConfigs)().validatorUrl;this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===ue?"https://validator.swagger.io/validator":ue})}},{key:"render",value:function(){var be,ue,He=(0,this.props.getConfigs)().spec,$e=Object(fe.F)(this.state.validatorUrl);return"object"===s()(He)&&U()(He).length?null:this.state.url&&Object(fe.E)(this.state.validatorUrl)&&Object(fe.E)(this.state.url)?Y.a.createElement("span",{className:"float-right"},Y.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:I()(be="".concat($e,"/debug?url=")).call(be,encodeURIComponent(this.state.url))},Y.a.createElement(ce,{src:I()(ue="".concat($e,"?url=")).call(ue,encodeURIComponent(this.state.url)),alt:"Online validator badge"}))):null}}]),Oe}(Y.a.Component),ce=function(Ae){C()(Oe,Ae);var Me=x()(Oe);function Oe(be){var ue;return l()(this,Oe),(ue=Me.call(this,be)).state={loaded:!1,error:!1},ue}return h()(Oe,[{key:"componentDidMount",value:function(){var be=this,ue=new Image;ue.onload=function(){be.setState({loaded:!0})},ue.onerror=function(){be.setState({error:!0})},ue.src=this.props.src}},{key:"UNSAFE_componentWillReceiveProps",value:function(be){var ue=this;if(be.src!==this.props.src){var He=new Image;He.onload=function(){ue.setState({loaded:!0})},He.onerror=function(){ue.setState({error:!0})},He.src=be.src}}},{key:"render",value:function(){return this.state.error?Y.a.createElement("img",{alt:"Error"}):this.state.loaded?Y.a.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}]),Oe}(Y.a.Component)},function(g,o,t){"use strict";var e;function s(L){return(e=e||document.createElement("textarea")).innerHTML="&"+L+";",e.value}t.d(o,"a",function(){return ht});var a=Object.prototype.hasOwnProperty;function u(L){var Ue=[].slice.call(arguments,1);return Ue.forEach(function(nt){if(nt){if("object"!=typeof nt)throw new TypeError(nt+"must be object");Object.keys(nt).forEach(function(at){L[at]=nt[at]})}}),L}var h=/\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function _(L){return L.indexOf("\\")<0?L:L.replace(h,"$1")}function m(L){return!(L>=55296&&L<=57343||L>=64976&&L<=65007||65535==(65535&L)||65534==(65535&L)||L>=0&&L<=8||11===L||L>=14&&L<=31||L>=127&&L<=159||L>1114111)}function b(L){if(L>65535){var Ue=55296+((L-=65536)>>10);return String.fromCharCode(Ue,56320+(1023&L))}return String.fromCharCode(L)}var C=/&([a-z#][a-z0-9]{1,31});/gi,D=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function x(L,Ue){var nt=0,at=s(Ue);return Ue!==at?at:35===Ue.charCodeAt(0)&&D.test(Ue)&&m(nt="x"===Ue[1].toLowerCase()?parseInt(Ue.slice(2),16):parseInt(Ue.slice(1),10))?b(nt):L}function j(L){return L.indexOf("&")<0?L:L.replace(C,x)}var H=/[&<>"]/,z=/[&<>"]/g,U={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function M(L){return U[L]}function I(L){return H.test(L)?L.replace(z,M):L}var J={};function Y(L,Ue){return++Ue>=L.length-2?Ue:"paragraph_open"===L[Ue].type&&L[Ue].tight&&"inline"===L[Ue+1].type&&0===L[Ue+1].content.length&&"paragraph_close"===L[Ue+2].type&&L[Ue+2].tight?Y(L,Ue+2):Ue}J.blockquote_open=function(){return"<blockquote>\n"},J.blockquote_close=function(L,Ue){return"</blockquote>"+ie(L,Ue)},J.code=function(L,Ue){return L[Ue].block?"<pre><code>"+I(L[Ue].content)+"</code></pre>"+ie(L,Ue):"<code>"+I(L[Ue].content)+"</code>"},J.fence=function(L,Ue,nt,at,it){var Pt,Ut,ot=L[Ue],Nn="",sn=nt.langPrefix;if(ot.params){if(Ut=(Pt=ot.params.split(/\s+/g)).join(" "),function(L,Ue){return!!L&&a.call(L,Ue)}(it.rules.fence_custom,Pt[0]))return it.rules.fence_custom[Pt[0]](L,Ue,nt,at,it);Nn=' class="'+sn+I(j(_(Ut)))+'"'}return"<pre><code"+Nn+">"+(nt.highlight&&nt.highlight.apply(nt.highlight,[ot.content].concat(Pt))||I(ot.content))+"</code></pre>"+ie(L,Ue)},J.fence_custom={},J.heading_open=function(L,Ue){return"<h"+L[Ue].hLevel+">"},J.heading_close=function(L,Ue){return"</h"+L[Ue].hLevel+">\n"},J.hr=function(L,Ue,nt){return(nt.xhtmlOut?"<hr />":"<hr>")+ie(L,Ue)},J.bullet_list_open=function(){return"<ul>\n"},J.bullet_list_close=function(L,Ue){return"</ul>"+ie(L,Ue)},J.list_item_open=function(){return"<li>"},J.list_item_close=function(){return"</li>\n"},J.ordered_list_open=function(L,Ue){var nt=L[Ue];return"<ol"+(nt.order>1?' start="'+nt.order+'"':"")+">\n"},J.ordered_list_close=function(L,Ue){return"</ol>"+ie(L,Ue)},J.paragraph_open=function(L,Ue){return L[Ue].tight?"":"<p>"},J.paragraph_close=function(L,Ue){return(L[Ue].tight?"":"</p>")+(L[Ue].tight&&Ue&&"inline"===L[Ue-1].type&&!L[Ue-1].content?"":ie(L,Ue))},J.link_open=function(L,Ue,nt){var at=L[Ue].title?' title="'+I(j(L[Ue].title))+'"':"",it=nt.linkTarget?' target="'+nt.linkTarget+'"':"";return'<a href="'+I(L[Ue].href)+'"'+at+it+">"},J.link_close=function(){return"</a>"},J.image=function(L,Ue,nt){var at=' src="'+I(L[Ue].src)+'"',it=L[Ue].title?' title="'+I(j(L[Ue].title))+'"':"";return"<img"+at+' alt="'+(L[Ue].alt?I(j(_(L[Ue].alt))):"")+'"'+it+(nt.xhtmlOut?" /":"")+">"},J.table_open=function(){return"<table>\n"},J.table_close=function(){return"</table>\n"},J.thead_open=function(){return"<thead>\n"},J.thead_close=function(){return"</thead>\n"},J.tbody_open=function(){return"<tbody>\n"},J.tbody_close=function(){return"</tbody>\n"},J.tr_open=function(){return"<tr>"},J.tr_close=function(){return"</tr>\n"},J.th_open=function(L,Ue){var nt=L[Ue];return"<th"+(nt.align?' style="text-align:'+nt.align+'"':"")+">"},J.th_close=function(){return"</th>"},J.td_open=function(L,Ue){var nt=L[Ue];return"<td"+(nt.align?' style="text-align:'+nt.align+'"':"")+">"},J.td_close=function(){return"</td>"},J.strong_open=function(){return"<strong>"},J.strong_close=function(){return"</strong>"},J.em_open=function(){return"<em>"},J.em_close=function(){return"</em>"},J.del_open=function(){return"<del>"},J.del_close=function(){return"</del>"},J.ins_open=function(){return"<ins>"},J.ins_close=function(){return"</ins>"},J.mark_open=function(){return"<mark>"},J.mark_close=function(){return"</mark>"},J.sub=function(L,Ue){return"<sub>"+I(L[Ue].content)+"</sub>"},J.sup=function(L,Ue){return"<sup>"+I(L[Ue].content)+"</sup>"},J.hardbreak=function(L,Ue,nt){return nt.xhtmlOut?"<br />\n":"<br>\n"},J.softbreak=function(L,Ue,nt){return nt.breaks?nt.xhtmlOut?"<br />\n":"<br>\n":"\n"},J.text=function(L,Ue){return I(L[Ue].content)},J.htmlblock=function(L,Ue){return L[Ue].content},J.htmltag=function(L,Ue){return L[Ue].content},J.abbr_open=function(L,Ue){return'<abbr title="'+I(j(L[Ue].title))+'">'},J.abbr_close=function(){return"</abbr>"},J.footnote_ref=function(L,Ue){var nt=Number(L[Ue].id+1).toString(),at="fnref"+nt;return L[Ue].subId>0&&(at+=":"+L[Ue].subId),'<sup class="footnote-ref"><a href="#fn'+nt+'" id="'+at+'">['+nt+"]</a></sup>"},J.footnote_block_open=function(L,Ue,nt){return(nt.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'},J.footnote_block_close=function(){return"</ol>\n</section>\n"},J.footnote_open=function(L,Ue){return'<li id="fn'+Number(L[Ue].id+1).toString()+'"  class="footnote-item">'},J.footnote_close=function(){return"</li>\n"},J.footnote_anchor=function(L,Ue){var nt="fnref"+Number(L[Ue].id+1).toString();return L[Ue].subId>0&&(nt+=":"+L[Ue].subId),' <a href="#'+nt+'" class="footnote-backref">\u21a9</a>'},J.dl_open=function(){return"<dl>\n"},J.dt_open=function(){return"<dt>"},J.dd_open=function(){return"<dd>"},J.dl_close=function(){return"</dl>\n"},J.dt_close=function(){return"</dt>\n"},J.dd_close=function(){return"</dd>\n"};var ie=J.getBreak=function(L,Ue){return(Ue=Y(L,Ue))<L.length&&"list_item_close"===L[Ue].type?"":"\n"};function oe(){this.rules=u({},J),this.getBreak=J.getBreak}function fe(){this.__rules__=[],this.__cache__=null}function ne(L,Ue,nt,at,it){this.src=L,this.env=at,this.options=nt,this.parser=Ue,this.tokens=it,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent="",this.labelUnmatchedScopes=0}function he(L,Ue){var nt,at,it,Pt=-1,Ut=L.posMax,ot=L.pos,Nn=L.isInLabel;if(L.isInLabel)return-1;if(L.labelUnmatchedScopes)return L.labelUnmatchedScopes--,-1;for(L.pos=Ue+1,L.isInLabel=!0,nt=1;L.pos<Ut;){if(91===(it=L.src.charCodeAt(L.pos)))nt++;else if(93===it&&0==--nt){at=!0;break}L.parser.skipToken(L)}return at?(Pt=L.pos,L.labelUnmatchedScopes=0):L.labelUnmatchedScopes=nt-1,L.pos=ot,L.isInLabel=Nn,Pt}function ce(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn;if(42!==L.charCodeAt(0)||91!==L.charCodeAt(1)||-1===L.indexOf("]:")||(Pt=he(it=new ne(L,Ue,nt,at,[]),1))<0||58!==L.charCodeAt(Pt+1))return-1;for(ot=it.posMax,Ut=Pt+2;Ut<ot&&10!==it.src.charCodeAt(Ut);Ut++);return Nn=L.slice(2,Pt),0===(sn=L.slice(Pt+2,Ut).trim()).length?-1:(at.abbreviations||(at.abbreviations={}),void 0===at.abbreviations[":"+Nn]&&(at.abbreviations[":"+Nn]=sn),Ut)}function Ae(L){var Ue=j(L);try{Ue=decodeURI(Ue)}catch(nt){}return encodeURI(Ue)}function Me(L,Ue){var nt,at,it,Pt=Ue,Ut=L.posMax;if(60===L.src.charCodeAt(Ue)){for(Ue++;Ue<Ut;){if(10===(nt=L.src.charCodeAt(Ue)))return!1;if(62===nt)return it=Ae(_(L.src.slice(Pt+1,Ue))),!!L.parser.validateLink(it)&&(L.pos=Ue+1,L.linkContent=it,!0);92===nt&&Ue+1<Ut?Ue+=2:Ue++}return!1}for(at=0;Ue<Ut&&32!==(nt=L.src.charCodeAt(Ue))&&!(nt<32||127===nt);)if(92===nt&&Ue+1<Ut)Ue+=2;else{if(40===nt&&++at>1||41===nt&&--at<0)break;Ue++}return Pt!==Ue&&(it=_(L.src.slice(Pt,Ue)),!!L.parser.validateLink(it)&&(L.linkContent=it,L.pos=Ue,!0))}function Oe(L,Ue){var nt,at=Ue,it=L.posMax,Pt=L.src.charCodeAt(Ue);if(34!==Pt&&39!==Pt&&40!==Pt)return!1;for(Ue++,40===Pt&&(Pt=41);Ue<it;){if((nt=L.src.charCodeAt(Ue))===Pt)return L.pos=Ue+1,L.linkContent=_(L.src.slice(at+1,Ue)),!0;92===nt&&Ue+1<it?Ue+=2:Ue++}return!1}function be(L){return L.trim().replace(/\s+/g," ").toUpperCase()}function ue(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn,An,Bn,ir;if(91!==L.charCodeAt(0)||-1===L.indexOf("]:")||(Pt=he(it=new ne(L,Ue,nt,at,[]),0))<0||58!==L.charCodeAt(Pt+1))return-1;for(ot=it.posMax,Ut=Pt+2;Ut<ot&&(32===(Nn=it.src.charCodeAt(Ut))||10===Nn);Ut++);if(!Me(it,Ut))return-1;for(An=it.linkContent,sn=Ut=it.pos,Ut+=1;Ut<ot&&(32===(Nn=it.src.charCodeAt(Ut))||10===Nn);Ut++);for(Ut<ot&&sn!==Ut&&Oe(it,Ut)?(Bn=it.linkContent,Ut=it.pos):(Bn="",Ut=sn);Ut<ot&&32===it.src.charCodeAt(Ut);)Ut++;return Ut<ot&&10!==it.src.charCodeAt(Ut)?-1:(ir=be(L.slice(1,Pt)),void 0===at.references[ir]&&(at.references[ir]={title:Bn,href:An}),Ut)}oe.prototype.renderInline=function(L,Ue,nt){for(var at=this.rules,it=L.length,Pt=0,Ut="";it--;)Ut+=at[L[Pt].type](L,Pt++,Ue,nt,this);return Ut},oe.prototype.render=function(L,Ue,nt){for(var at=this.rules,it=L.length,Pt=-1,Ut="";++Pt<it;)Ut+="inline"===L[Pt].type?this.renderInline(L[Pt].children,Ue,nt):at[L[Pt].type](L,Pt,Ue,nt,this);return Ut},fe.prototype.__find__=function(L){for(var Ue=this.__rules__.length,nt=-1;Ue--;)if(this.__rules__[++nt].name===L)return nt;return-1},fe.prototype.__compile__=function(){var L=this,Ue=[""];L.__rules__.forEach(function(nt){nt.enabled&&nt.alt.forEach(function(at){Ue.indexOf(at)<0&&Ue.push(at)})}),L.__cache__={},Ue.forEach(function(nt){L.__cache__[nt]=[],L.__rules__.forEach(function(at){at.enabled&&(nt&&at.alt.indexOf(nt)<0||L.__cache__[nt].push(at.fn))})})},fe.prototype.at=function(L,Ue,nt){var at=this.__find__(L),it=nt||{};if(-1===at)throw new Error("Parser rule not found: "+L);this.__rules__[at].fn=Ue,this.__rules__[at].alt=it.alt||[],this.__cache__=null},fe.prototype.before=function(L,Ue,nt,at){var it=this.__find__(L),Pt=at||{};if(-1===it)throw new Error("Parser rule not found: "+L);this.__rules__.splice(it,0,{name:Ue,enabled:!0,fn:nt,alt:Pt.alt||[]}),this.__cache__=null},fe.prototype.after=function(L,Ue,nt,at){var it=this.__find__(L),Pt=at||{};if(-1===it)throw new Error("Parser rule not found: "+L);this.__rules__.splice(it+1,0,{name:Ue,enabled:!0,fn:nt,alt:Pt.alt||[]}),this.__cache__=null},fe.prototype.push=function(L,Ue,nt){this.__rules__.push({name:L,enabled:!0,fn:Ue,alt:(nt||{}).alt||[]}),this.__cache__=null},fe.prototype.enable=function(L,Ue){L=Array.isArray(L)?L:[L],Ue&&this.__rules__.forEach(function(nt){nt.enabled=!1}),L.forEach(function(nt){var at=this.__find__(nt);if(at<0)throw new Error("Rules manager: invalid rule name "+nt);this.__rules__[at].enabled=!0},this),this.__cache__=null},fe.prototype.disable=function(L){(L=Array.isArray(L)?L:[L]).forEach(function(Ue){var nt=this.__find__(Ue);if(nt<0)throw new Error("Rules manager: invalid rule name "+Ue);this.__rules__[nt].enabled=!1},this),this.__cache__=null},fe.prototype.getRules=function(L){return null===this.__cache__&&this.__compile__(),this.__cache__[L]||[]},ne.prototype.pushPending=function(){this.tokens.push({type:"text",content:this.pending,level:this.pendingLevel}),this.pending=""},ne.prototype.push=function(L){this.pending&&this.pushPending(),this.tokens.push(L),this.pendingLevel=this.level},ne.prototype.cacheSet=function(L,Ue){for(var nt=this.cache.length;nt<=L;nt++)this.cache.push(0);this.cache[L]=Ue},ne.prototype.cacheGet=function(L){return L<this.cache.length?this.cache[L]:0};var He=" \n()[]'\".,!?-";function $e(L){return L.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1")}var F=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,je=/\((c|tm|r|p)\)/gi,Et={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"},lt=/['"]/,nn=/['"]/g,St=/[-\s()\[\]]/;function At(L,Ue){return!(Ue<0||Ue>=L.length||St.test(L[Ue]))}function Qe(L,Ue,nt){return L.substr(0,Ue)+nt+L.substr(Ue+1)}var It=[["block",function(L){L.inlineMode?L.tokens.push({type:"inline",content:L.src.replace(/\n/g," ").trim(),level:0,lines:[0,1],children:[]}):L.block.parse(L.src,L.options,L.env,L.tokens)}],["abbr",function(L){var Ue,nt,at,it,Pt=L.tokens;if(!L.inlineMode)for(Ue=1,nt=Pt.length-1;Ue<nt;Ue++)if("paragraph_open"===Pt[Ue-1].type&&"inline"===Pt[Ue].type&&"paragraph_close"===Pt[Ue+1].type){for(at=Pt[Ue].content;at.length&&!((it=ce(at,L.inline,L.options,L.env))<0);)at=at.slice(it).trim();Pt[Ue].content=at,at.length||(Pt[Ue-1].tight=!0,Pt[Ue+1].tight=!0)}}],["references",function(L){var Ue,nt,at,it,Pt=L.tokens;if(L.env.references=L.env.references||{},!L.inlineMode)for(Ue=1,nt=Pt.length-1;Ue<nt;Ue++)if("inline"===Pt[Ue].type&&"paragraph_open"===Pt[Ue-1].type&&"paragraph_close"===Pt[Ue+1].type){for(at=Pt[Ue].content;at.length&&!((it=ue(at,L.inline,L.options,L.env))<0);)at=at.slice(it).trim();Pt[Ue].content=at,at.length||(Pt[Ue-1].tight=!0,Pt[Ue+1].tight=!0)}}],["inline",function(L){var Ue,nt,at,it=L.tokens;for(nt=0,at=it.length;nt<at;nt++)"inline"===(Ue=it[nt]).type&&L.inline.parse(Ue.content,L.options,L.env,Ue.children)}],["footnote_tail",function(L){var Ue,nt,at,it,Pt,Ut,ot,Nn,sn,An=0,Bn=!1,ir={};if(L.env.footnotes&&(L.tokens=L.tokens.filter(function(mr){return"footnote_reference_open"===mr.type?(Bn=!0,Nn=[],sn=mr.label,!1):"footnote_reference_close"===mr.type?(Bn=!1,ir[":"+sn]=Nn,!1):(Bn&&Nn.push(mr),!Bn)}),L.env.footnotes.list)){for(Ut=L.env.footnotes.list,L.tokens.push({type:"footnote_block_open",level:An++}),Ue=0,nt=Ut.length;Ue<nt;Ue++){for(L.tokens.push({type:"footnote_open",id:Ue,level:An++}),Ut[Ue].tokens?((ot=[]).push({type:"paragraph_open",tight:!1,level:An++}),ot.push({type:"inline",content:"",level:An,children:Ut[Ue].tokens}),ot.push({type:"paragraph_close",tight:!1,level:--An})):Ut[Ue].label&&(ot=ir[":"+Ut[Ue].label]),L.tokens=L.tokens.concat(ot),Pt="paragraph_close"===L.tokens[L.tokens.length-1].type?L.tokens.pop():null,it=Ut[Ue].count>0?Ut[Ue].count:1,at=0;at<it;at++)L.tokens.push({type:"footnote_anchor",id:Ue,subId:at,level:An});Pt&&L.tokens.push(Pt),L.tokens.push({type:"footnote_close",level:--An})}L.tokens.push({type:"footnote_block_close",level:--An})}}],["abbr2",function(L){var Ue,nt,at,it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr=L.tokens;if(L.env.abbreviations)for(L.env.abbrRegExp||(ir="(^|["+He.split("").map($e).join("")+"])("+Object.keys(L.env.abbreviations).map(function(_r){return _r.substr(1)}).sort(function(_r,Nr){return Nr.length-_r.length}).map($e).join("|")+")($|["+He.split("").map($e).join("")+"])",L.env.abbrRegExp=new RegExp(ir,"g")),An=L.env.abbrRegExp,nt=0,at=mr.length;nt<at;nt++)if("inline"===mr[nt].type)for(Ue=(it=mr[nt].children).length-1;Ue>=0;Ue--)if("text"===(Pt=it[Ue]).type){for(Nn=0,Ut=Pt.content,An.lastIndex=0,sn=Pt.level,ot=[];Bn=An.exec(Ut);)An.lastIndex>Nn&&ot.push({type:"text",content:Ut.slice(Nn,Bn.index+Bn[1].length),level:sn}),ot.push({type:"abbr_open",title:L.env.abbreviations[":"+Bn[2]],level:sn++}),ot.push({type:"text",content:Bn[2],level:sn}),ot.push({type:"abbr_close",level:--sn}),Nn=An.lastIndex-Bn[3].length;ot.length&&(Nn<Ut.length&&ot.push({type:"text",content:Ut.slice(Nn),level:sn}),mr[nt].children=it=[].concat(it.slice(0,Ue),ot,it.slice(Ue+1)))}}],["replacements",function(L){var Ue,nt,at,it,Pt,Ut;if(L.options.typographer)for(Pt=L.tokens.length-1;Pt>=0;Pt--)if("inline"===L.tokens[Pt].type)for(Ue=(it=L.tokens[Pt].children).length-1;Ue>=0;Ue--)"text"===(nt=it[Ue]).type&&(at=(Ut=at=nt.content).indexOf("(")<0?Ut:Ut.replace(je,function(ot,Nn){return Et[Nn.toLowerCase()]}),F.test(at)&&(at=at.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),nt.content=at)}],["smartquotes",function(L){var Ue,nt,at,it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr,_r,Nr,br,Jn;if(L.options.typographer)for(Jn=[],Nr=L.tokens.length-1;Nr>=0;Nr--)if("inline"===L.tokens[Nr].type)for(br=L.tokens[Nr].children,Jn.length=0,Ue=0;Ue<br.length;Ue++)if("text"===(nt=br[Ue]).type&&!lt.test(nt.text)){for(ot=br[Ue].level,mr=Jn.length-1;mr>=0&&!(Jn[mr].level<=ot);mr--);Jn.length=mr+1,Pt=0,Ut=(at=nt.content).length;e:for(;Pt<Ut&&(nn.lastIndex=Pt,it=nn.exec(at));)if(Nn=!At(at,it.index-1),Pt=it.index+1,_r="'"===it[0],(sn=!At(at,Pt))||Nn){if(Bn=!sn,ir=!Nn)for(mr=Jn.length-1;mr>=0&&(An=Jn[mr],!(Jn[mr].level<ot));mr--)if(An.single===_r&&Jn[mr].level===ot){An=Jn[mr],_r?(br[An.token].content=Qe(br[An.token].content,An.pos,L.options.quotes[2]),nt.content=Qe(nt.content,it.index,L.options.quotes[3])):(br[An.token].content=Qe(br[An.token].content,An.pos,L.options.quotes[0]),nt.content=Qe(nt.content,it.index,L.options.quotes[1])),Jn.length=mr;continue e}Bn?Jn.push({token:Ue,pos:it.index,single:_r,level:ot}):ir&&_r&&(nt.content=Qe(nt.content,it.index,"\u2019"))}else _r&&(nt.content=Qe(nt.content,it.index,"\u2019"))}}]];function ae(){this.options={},this.ruler=new fe;for(var L=0;L<It.length;L++)this.ruler.push(It[L][0],It[L][1])}function Ie(L,Ue,nt,at,it){var Pt,Ut,ot,Nn,sn,An,Bn;for(this.src=L,this.parser=Ue,this.options=nt,this.env=at,this.tokens=it,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType="root",this.ddIndent=-1,this.level=0,this.result="",An=0,Bn=!1,ot=Nn=An=0,sn=(Ut=this.src).length;Nn<sn;Nn++){if(Pt=Ut.charCodeAt(Nn),!Bn){if(32===Pt){An++;continue}Bn=!0}10!==Pt&&Nn!==sn-1||(10!==Pt&&Nn++,this.bMarks.push(ot),this.eMarks.push(Nn),this.tShift.push(An),Bn=!1,An=0,ot=Nn+1)}this.bMarks.push(Ut.length),this.eMarks.push(Ut.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function dt(L,Ue){var nt,at,it;return(at=L.bMarks[Ue]+L.tShift[Ue])>=(it=L.eMarks[Ue])||42!==(nt=L.src.charCodeAt(at++))&&45!==nt&&43!==nt||at<it&&32!==L.src.charCodeAt(at)?-1:at}function Jt(L,Ue){var nt,at=L.bMarks[Ue]+L.tShift[Ue],it=L.eMarks[Ue];if(at+1>=it||(nt=L.src.charCodeAt(at++))<48||nt>57)return-1;for(;;){if(at>=it)return-1;if(!((nt=L.src.charCodeAt(at++))>=48&&nt<=57)){if(41===nt||46===nt)break;return-1}}return at<it&&32!==L.src.charCodeAt(at)?-1:at}ae.prototype.process=function(L){var Ue,nt,at;for(Ue=0,nt=(at=this.ruler.getRules("")).length;Ue<nt;Ue++)at[Ue](L)},Ie.prototype.isEmpty=function(L){return this.bMarks[L]+this.tShift[L]>=this.eMarks[L]},Ie.prototype.skipEmptyLines=function(L){for(var Ue=this.lineMax;L<Ue&&!(this.bMarks[L]+this.tShift[L]<this.eMarks[L]);L++);return L},Ie.prototype.skipSpaces=function(L){for(var Ue=this.src.length;L<Ue&&32===this.src.charCodeAt(L);L++);return L},Ie.prototype.skipChars=function(L,Ue){for(var nt=this.src.length;L<nt&&this.src.charCodeAt(L)===Ue;L++);return L},Ie.prototype.skipCharsBack=function(L,Ue,nt){if(L<=nt)return L;for(;L>nt;)if(Ue!==this.src.charCodeAt(--L))return L+1;return L},Ie.prototype.getLines=function(L,Ue,nt,at){var it,Pt,ot,Nn,sn=L;if(L>=Ue)return"";if(sn+1===Ue)return Pt=this.bMarks[sn]+Math.min(this.tShift[sn],nt),this.src.slice(Pt,at?this.eMarks[sn]+1:this.eMarks[sn]);for(ot=new Array(Ue-L),it=0;sn<Ue;sn++,it++)(Nn=this.tShift[sn])>nt&&(Nn=nt),Nn<0&&(Nn=0),ot[it]=this.src.slice(Pt=this.bMarks[sn]+Nn,sn+1<Ue||at?this.eMarks[sn]+1:this.eMarks[sn]);return ot.join("")};var zt={};["article","aside","button","blockquote","body","canvas","caption","col","colgroup","dd","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","iframe","li","map","object","ol","output","p","pre","progress","script","section","style","table","tbody","td","textarea","tfoot","th","tr","thead","ul","video"].forEach(function(L){zt[L]=!0});var ln=/^<([a-zA-Z]{1,15})[\s\/>]/,ar=/^<\/([a-zA-Z]{1,15})[\s>]/;function Ln(L,Ue){var nt=L.bMarks[Ue]+L.blkIndent;return L.src.substr(nt,L.eMarks[Ue]-nt)}function Rn(L,Ue){var nt,at,it=L.bMarks[Ue]+L.tShift[Ue],Pt=L.eMarks[Ue];return it>=Pt||126!==(at=L.src.charCodeAt(it++))&&58!==at||it===(nt=L.skipSpaces(it))||nt>=Pt?-1:nt}var er=[["code",function(L,Ue,nt){var at,it;if(L.tShift[Ue]-L.blkIndent<4)return!1;for(it=at=Ue+1;at<nt;)if(L.isEmpty(at))at++;else{if(!(L.tShift[at]-L.blkIndent>=4))break;it=++at}return L.line=at,L.tokens.push({type:"code",content:L.getLines(Ue,it,4+L.blkIndent,!0),block:!0,lines:[Ue,L.line],level:L.level}),!0}],["fences",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn=!1,An=L.bMarks[Ue]+L.tShift[Ue],Bn=L.eMarks[Ue];if(An+3>Bn||126!==(it=L.src.charCodeAt(An))&&96!==it||(Nn=An,(Pt=(An=L.skipChars(An,it))-Nn)<3)||(Ut=L.src.slice(An,Bn).trim()).indexOf("`")>=0)return!1;if(at)return!0;for(ot=Ue;!(++ot>=nt||(An=Nn=L.bMarks[ot]+L.tShift[ot])<(Bn=L.eMarks[ot])&&L.tShift[ot]<L.blkIndent);)if(L.src.charCodeAt(An)===it&&!(L.tShift[ot]-L.blkIndent>=4||(An=L.skipChars(An,it))-Nn<Pt||(An=L.skipSpaces(An))<Bn)){sn=!0;break}return Pt=L.tShift[Ue],L.line=ot+(sn?1:0),L.tokens.push({type:"fence",params:Ut,content:L.getLines(Ue+1,ot,Pt,!0),lines:[Ue,L.line],level:L.level}),!0},["paragraph","blockquote","list"]],["blockquote",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr,_r,Nr=L.bMarks[Ue]+L.tShift[Ue],br=L.eMarks[Ue];if(Nr>br||62!==L.src.charCodeAt(Nr++)||L.level>=L.options.maxNesting)return!1;if(at)return!0;for(32===L.src.charCodeAt(Nr)&&Nr++,Nn=L.blkIndent,L.blkIndent=0,ot=[L.bMarks[Ue]],L.bMarks[Ue]=Nr,Pt=(Nr=Nr<br?L.skipSpaces(Nr):Nr)>=br,Ut=[L.tShift[Ue]],L.tShift[Ue]=Nr-L.bMarks[Ue],Bn=L.parser.ruler.getRules("blockquote"),it=Ue+1;it<nt&&!((Nr=L.bMarks[it]+L.tShift[it])>=(br=L.eMarks[it]));it++)if(62!==L.src.charCodeAt(Nr++)){if(Pt)break;for(_r=!1,ir=0,mr=Bn.length;ir<mr;ir++)if(Bn[ir](L,it,nt,!0)){_r=!0;break}if(_r)break;ot.push(L.bMarks[it]),Ut.push(L.tShift[it]),L.tShift[it]=-1337}else 32===L.src.charCodeAt(Nr)&&Nr++,ot.push(L.bMarks[it]),L.bMarks[it]=Nr,Pt=(Nr=Nr<br?L.skipSpaces(Nr):Nr)>=br,Ut.push(L.tShift[it]),L.tShift[it]=Nr-L.bMarks[it];for(sn=L.parentType,L.parentType="blockquote",L.tokens.push({type:"blockquote_open",lines:An=[Ue,0],level:L.level++}),L.parser.tokenize(L,Ue,it),L.tokens.push({type:"blockquote_close",level:--L.level}),L.parentType=sn,An[1]=L.line,ir=0;ir<Ut.length;ir++)L.bMarks[ir+Ue]=ot[ir],L.tShift[ir+Ue]=Ut[ir];return L.blkIndent=Nn,!0},["paragraph","blockquote","list"]],["hr",function(L,Ue,nt,at){var it,Pt,Ut,ot=L.bMarks[Ue],Nn=L.eMarks[Ue];if((ot+=L.tShift[Ue])>Nn||42!==(it=L.src.charCodeAt(ot++))&&45!==it&&95!==it)return!1;for(Pt=1;ot<Nn;){if((Ut=L.src.charCodeAt(ot++))!==it&&32!==Ut)return!1;Ut===it&&Pt++}return!(Pt<3||(at||(L.line=Ue+1,L.tokens.push({type:"hr",lines:[Ue,L.line],level:L.level})),0))},["paragraph","blockquote","list"]],["list",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr,_r,Nr,br,Jn,nr,Mr,yi,Ii,Mi,Oi,Kr,ei=!0;if((Bn=Jt(L,Ue))>=0)Nr=!0;else{if(!((Bn=dt(L,Ue))>=0))return!1;Nr=!1}if(L.level>=L.options.maxNesting)return!1;if(_r=L.src.charCodeAt(Bn-1),at)return!0;for(Jn=L.tokens.length,Nr?(An=L.bMarks[Ue]+L.tShift[Ue],mr=Number(L.src.substr(An,Bn-An-1)),L.tokens.push({type:"ordered_list_open",order:mr,lines:Mr=[Ue,0],level:L.level++})):L.tokens.push({type:"bullet_list_open",lines:Mr=[Ue,0],level:L.level++}),it=Ue,nr=!1,Ii=L.parser.ruler.getRules("list");!(!(it<nt)||((ir=(br=L.skipSpaces(Bn))>=L.eMarks[it]?1:br-Bn)>4&&(ir=1),ir<1&&(ir=1),Pt=Bn-L.bMarks[it]+ir,L.tokens.push({type:"list_item_open",lines:yi=[Ue,0],level:L.level++}),ot=L.blkIndent,Nn=L.tight,Ut=L.tShift[Ue],sn=L.parentType,L.tShift[Ue]=br-L.bMarks[Ue],L.blkIndent=Pt,L.tight=!0,L.parentType="list",L.parser.tokenize(L,Ue,nt,!0),L.tight&&!nr||(ei=!1),nr=L.line-Ue>1&&L.isEmpty(L.line-1),L.blkIndent=ot,L.tShift[Ue]=Ut,L.tight=Nn,L.parentType=sn,L.tokens.push({type:"list_item_close",level:--L.level}),it=Ue=L.line,yi[1]=it,br=L.bMarks[Ue],it>=nt)||L.isEmpty(it)||L.tShift[it]<L.blkIndent);){for(Kr=!1,Mi=0,Oi=Ii.length;Mi<Oi;Mi++)if(Ii[Mi](L,it,nt,!0)){Kr=!0;break}if(Kr)break;if(Nr){if((Bn=Jt(L,it))<0)break}else if((Bn=dt(L,it))<0)break;if(_r!==L.src.charCodeAt(Bn-1))break}return L.tokens.push({type:Nr?"ordered_list_close":"bullet_list_close",level:--L.level}),Mr[1]=it,L.line=it,ei&&function(di,se){var ct,Ke,Xe=di.level+2;for(ct=se+2,Ke=di.tokens.length-2;ct<Ke;ct++)di.tokens[ct].level===Xe&&"paragraph_open"===di.tokens[ct].type&&(di.tokens[ct+2].tight=!0,di.tokens[ct].tight=!0,ct+=2)}(L,Jn),!0},["paragraph","blockquote"]],["footnote",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn=L.bMarks[Ue]+L.tShift[Ue],An=L.eMarks[Ue];if(sn+4>An||91!==L.src.charCodeAt(sn)||94!==L.src.charCodeAt(sn+1)||L.level>=L.options.maxNesting)return!1;for(ot=sn+2;ot<An;ot++){if(32===L.src.charCodeAt(ot))return!1;if(93===L.src.charCodeAt(ot))break}return ot!==sn+2&&!(ot+1>=An||58!==L.src.charCodeAt(++ot))&&(at||(ot++,L.env.footnotes||(L.env.footnotes={}),L.env.footnotes.refs||(L.env.footnotes.refs={}),Nn=L.src.slice(sn+2,ot-2),L.env.footnotes.refs[":"+Nn]=-1,L.tokens.push({type:"footnote_reference_open",label:Nn,level:L.level++}),it=L.bMarks[Ue],Pt=L.tShift[Ue],Ut=L.parentType,L.tShift[Ue]=L.skipSpaces(ot)-ot,L.bMarks[Ue]=ot,L.blkIndent+=4,L.parentType="footnote",L.tShift[Ue]<L.blkIndent&&(L.tShift[Ue]+=L.blkIndent,L.bMarks[Ue]-=L.blkIndent),L.parser.tokenize(L,Ue,nt,!0),L.parentType=Ut,L.blkIndent-=4,L.tShift[Ue]=Pt,L.bMarks[Ue]=it,L.tokens.push({type:"footnote_reference_close",level:--L.level})),!0)},["paragraph"]],["heading",function(L,Ue,nt,at){var it,Pt,Ut,ot=L.bMarks[Ue]+L.tShift[Ue],Nn=L.eMarks[Ue];if(ot>=Nn||35!==(it=L.src.charCodeAt(ot))||ot>=Nn)return!1;for(Pt=1,it=L.src.charCodeAt(++ot);35===it&&ot<Nn&&Pt<=6;)Pt++,it=L.src.charCodeAt(++ot);return!(Pt>6||ot<Nn&&32!==it||(at||(Nn=L.skipCharsBack(Nn,32,ot),(Ut=L.skipCharsBack(Nn,35,ot))>ot&&32===L.src.charCodeAt(Ut-1)&&(Nn=Ut),L.line=Ue+1,L.tokens.push({type:"heading_open",hLevel:Pt,lines:[Ue,L.line],level:L.level}),ot<Nn&&L.tokens.push({type:"inline",content:L.src.slice(ot,Nn).trim(),level:L.level+1,lines:[Ue,L.line],children:[]}),L.tokens.push({type:"heading_close",hLevel:Pt,level:L.level})),0))},["paragraph","blockquote"]],["lheading",function(L,Ue,nt){var at,it,Pt,Ut=Ue+1;return!(Ut>=nt||L.tShift[Ut]<L.blkIndent||L.tShift[Ut]-L.blkIndent>3||(it=L.bMarks[Ut]+L.tShift[Ut])>=(Pt=L.eMarks[Ut])||45!==(at=L.src.charCodeAt(it))&&61!==at||(it=L.skipChars(it,at),(it=L.skipSpaces(it))<Pt||(it=L.bMarks[Ue]+L.tShift[Ue],L.line=Ut+1,L.tokens.push({type:"heading_open",hLevel:61===at?1:2,lines:[Ue,L.line],level:L.level}),L.tokens.push({type:"inline",content:L.src.slice(it,L.eMarks[Ue]).trim(),level:L.level+1,lines:[Ue,L.line-1],children:[]}),L.tokens.push({type:"heading_close",hLevel:61===at?1:2,level:L.level}),0)))}],["htmlblock",function(L,Ue,nt,at){var it,Pt,Ut,Bn,ot=L.bMarks[Ue],Nn=L.eMarks[Ue],sn=L.tShift[Ue];if(ot+=sn,!L.options.html||sn>3||ot+2>=Nn||60!==L.src.charCodeAt(ot))return!1;if(33===(it=L.src.charCodeAt(ot+1))||63===it){if(at)return!0}else{if(47!==it&&!((Bn=32|it)>=97&&Bn<=122))return!1;if(47===it){if(!(Pt=L.src.slice(ot,Nn).match(ar)))return!1}else if(!(Pt=L.src.slice(ot,Nn).match(ln)))return!1;if(!0!==zt[Pt[1].toLowerCase()])return!1;if(at)return!0}for(Ut=Ue+1;Ut<L.lineMax&&!L.isEmpty(Ut);)Ut++;return L.line=Ut,L.tokens.push({type:"htmlblock",level:L.level,lines:[Ue,L.line],content:L.getLines(Ue,Ut,0,!0)}),!0},["paragraph","blockquote"]],["table",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr,_r;if(Ue+2>nt||L.tShift[Nn=Ue+1]<L.blkIndent||(Ut=L.bMarks[Nn]+L.tShift[Nn])>=L.eMarks[Nn]||124!==(it=L.src.charCodeAt(Ut))&&45!==it&&58!==it||(Pt=Ln(L,Ue+1),!/^[-:| ]+$/.test(Pt))||(sn=Pt.split("|"))<=2)return!1;for(Bn=[],ot=0;ot<sn.length;ot++){if(!(ir=sn[ot].trim())){if(0===ot||ot===sn.length-1)continue;return!1}if(!/^:?-+:?$/.test(ir))return!1;58===ir.charCodeAt(ir.length-1)?Bn.push(58===ir.charCodeAt(0)?"center":"right"):58===ir.charCodeAt(0)?Bn.push("left"):Bn.push("")}if(-1===(Pt=Ln(L,Ue).trim()).indexOf("|")||(sn=Pt.replace(/^\||\|$/g,"").split("|"),Bn.length!==sn.length))return!1;if(at)return!0;for(L.tokens.push({type:"table_open",lines:mr=[Ue,0],level:L.level++}),L.tokens.push({type:"thead_open",lines:[Ue,Ue+1],level:L.level++}),L.tokens.push({type:"tr_open",lines:[Ue,Ue+1],level:L.level++}),ot=0;ot<sn.length;ot++)L.tokens.push({type:"th_open",align:Bn[ot],lines:[Ue,Ue+1],level:L.level++}),L.tokens.push({type:"inline",content:sn[ot].trim(),lines:[Ue,Ue+1],level:L.level,children:[]}),L.tokens.push({type:"th_close",level:--L.level});for(L.tokens.push({type:"tr_close",level:--L.level}),L.tokens.push({type:"thead_close",level:--L.level}),L.tokens.push({type:"tbody_open",lines:_r=[Ue+2,0],level:L.level++}),Nn=Ue+2;Nn<nt&&!(L.tShift[Nn]<L.blkIndent)&&-1!==(Pt=Ln(L,Nn).trim()).indexOf("|");Nn++){for(sn=Pt.replace(/^\||\|$/g,"").split("|"),L.tokens.push({type:"tr_open",level:L.level++}),ot=0;ot<sn.length;ot++)L.tokens.push({type:"td_open",align:Bn[ot],level:L.level++}),An=sn[ot].substring(124===sn[ot].charCodeAt(0)?1:0,124===sn[ot].charCodeAt(sn[ot].length-1)?sn[ot].length-1:sn[ot].length).trim(),L.tokens.push({type:"inline",content:An,level:L.level,children:[]}),L.tokens.push({type:"td_close",level:--L.level});L.tokens.push({type:"tr_close",level:--L.level})}return L.tokens.push({type:"tbody_close",level:--L.level}),L.tokens.push({type:"table_close",level:--L.level}),mr[1]=_r[1]=Nn,L.line=Nn,!0},["paragraph"]],["deflist",function(L,Ue,nt,at){var it,Pt,Ut,ot,Nn,sn,An,Bn,ir,mr,_r,Nr,br,Jn;if(at)return!(L.ddIndent<0)&&Rn(L,Ue)>=0;if(L.isEmpty(An=Ue+1)&&++An>nt||L.tShift[An]<L.blkIndent||(it=Rn(L,An))<0||L.level>=L.options.maxNesting)return!1;sn=L.tokens.length,L.tokens.push({type:"dl_open",lines:Nn=[Ue,0],level:L.level++}),Ut=Ue,Pt=An;e:for(;;){for(Jn=!0,br=!1,L.tokens.push({type:"dt_open",lines:[Ut,Ut],level:L.level++}),L.tokens.push({type:"inline",content:L.getLines(Ut,Ut+1,L.blkIndent,!1).trim(),level:L.level+1,lines:[Ut,Ut],children:[]}),L.tokens.push({type:"dt_close",level:--L.level});;){if(L.tokens.push({type:"dd_open",lines:ot=[An,0],level:L.level++}),Nr=L.tight,ir=L.ddIndent,Bn=L.blkIndent,_r=L.tShift[Pt],mr=L.parentType,L.blkIndent=L.ddIndent=L.tShift[Pt]+2,L.tShift[Pt]=it-L.bMarks[Pt],L.tight=!0,L.parentType="deflist",L.parser.tokenize(L,Pt,nt,!0),L.tight&&!br||(Jn=!1),br=L.line-Pt>1&&L.isEmpty(L.line-1),L.tShift[Pt]=_r,L.tight=Nr,L.parentType=mr,L.blkIndent=Bn,L.ddIndent=ir,L.tokens.push({type:"dd_close",level:--L.level}),ot[1]=An=L.line,An>=nt||L.tShift[An]<L.blkIndent)break e;if((it=Rn(L,An))<0)break;Pt=An}if(An>=nt||L.isEmpty(Ut=An)||L.tShift[Ut]<L.blkIndent||(Pt=Ut+1)>=nt||(L.isEmpty(Pt)&&Pt++,Pt>=nt)||L.tShift[Pt]<L.blkIndent||(it=Rn(L,Pt))<0)break}return L.tokens.push({type:"dl_close",level:--L.level}),Nn[1]=An,L.line=An,Jn&&function(nr,Mr){var yi,Ii,Mi=nr.level+2;for(yi=Mr+2,Ii=nr.tokens.length-2;yi<Ii;yi++)nr.tokens[yi].level===Mi&&"paragraph_open"===nr.tokens[yi].type&&(nr.tokens[yi+2].tight=!0,nr.tokens[yi].tight=!0,yi+=2)}(L,sn),!0},["paragraph"]],["paragraph",function(L,Ue){var nt,at,it,Pt,Ut,ot,Nn=Ue+1;if(Nn<(nt=L.lineMax)&&!L.isEmpty(Nn))for(ot=L.parser.ruler.getRules("paragraph");Nn<nt&&!L.isEmpty(Nn);Nn++)if(!(L.tShift[Nn]-L.blkIndent>3)){for(it=!1,Pt=0,Ut=ot.length;Pt<Ut;Pt++)if(ot[Pt](L,Nn,nt,!0)){it=!0;break}if(it)break}return at=L.getLines(Ue,Nn,L.blkIndent,!1).trim(),L.line=Nn,at.length&&(L.tokens.push({type:"paragraph_open",tight:!1,lines:[Ue,L.line],level:L.level}),L.tokens.push({type:"inline",content:at,level:L.level+1,lines:[Ue,L.line],children:[]}),L.tokens.push({type:"paragraph_close",tight:!1,level:L.level})),!0}]];function Mn(){this.ruler=new fe;for(var L=0;L<er.length;L++)this.ruler.push(er[L][0],er[L][1],{alt:(er[L][2]||[]).slice()})}Mn.prototype.tokenize=function(L,Ue,nt){for(var at,it=this.ruler.getRules(""),Pt=it.length,Ut=Ue,ot=!1;Ut<nt&&(L.line=Ut=L.skipEmptyLines(Ut),!(Ut>=nt))&&!(L.tShift[Ut]<L.blkIndent);){for(at=0;at<Pt&&!it[at](L,Ut,nt,!1);at++);if(L.tight=!ot,L.isEmpty(L.line-1)&&(ot=!0),(Ut=L.line)<nt&&L.isEmpty(Ut)){if(ot=!0,++Ut<nt&&"list"===L.parentType&&L.isEmpty(Ut))break;L.line=Ut}}};var Ht=/[\n\t]/g,tr=/\r[\n\u0085]|[\u2424\u2028\u0085]/g,Yn=/\u00a0/g;function Cn(L){switch(L){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}Mn.prototype.parse=function(L,Ue,nt,at){var it,Pt=0,Ut=0;if(!L)return[];(L=(L=L.replace(Yn," ")).replace(tr,"\n")).indexOf("\t")>=0&&(L=L.replace(Ht,function(ot,Nn){var sn;return 10===L.charCodeAt(Nn)?(Pt=Nn+1,Ut=0,ot):(sn="    ".slice((Nn-Pt-Ut)%4),Ut=Nn-Pt+1,sn)})),it=new Ie(L,this,Ue,nt,at),this.tokenize(it,it.line,it.lineMax)};for(var Kt=[],dn=0;dn<256;dn++)Kt.push(0);function Kn(L){return L>=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122}function qn(L,Ue){var nt,at,it,Pt=Ue,Ut=!0,ot=!0,Nn=L.posMax,sn=L.src.charCodeAt(Ue);for(nt=Ue>0?L.src.charCodeAt(Ue-1):-1;Pt<Nn&&L.src.charCodeAt(Pt)===sn;)Pt++;return Pt>=Nn&&(Ut=!1),(it=Pt-Ue)>=4?Ut=ot=!1:(32!==(at=Pt<Nn?L.src.charCodeAt(Pt):-1)&&10!==at||(Ut=!1),32!==nt&&10!==nt||(ot=!1),95===sn&&(Kn(nt)&&(Ut=!1),Kn(at)&&(ot=!1))),{can_open:Ut,can_close:ot,delims:it}}"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(L){Kt[L.charCodeAt(0)]=1});var Sn=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g,$n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g,En=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"],Fn=/^<([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])?)*)>/,Dn=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;function mn(L,Ue){return L=L.source,Ue=Ue||"",function nt(at,it){return at?(L=L.replace(at,it=it.source||it),nt):new RegExp(L,Ue)}}var jn=mn(/(?:unquoted|single_quoted|double_quoted)/)("unquoted",/[^"'=<>`\x00-\x20]+/)("single_quoted",/'[^']*'/)("double_quoted",/"[^"]*"/)(),Xt=mn(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/)("attr_name",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)("attr_value",jn)(),ut=mn(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/)("attribute",Xt)(),mt=mn(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)("open_tag",ut)("close_tag",/<\/[A-Za-z][A-Za-z0-9]*\s*>/)("comment",/<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/)("processing",/<[?].*?[?]>/)("declaration",/<![A-Z]+\s+[^>]*>/)("cdata",/<!\[CDATA\[[\s\S]*?\]\]>/)(),Tt=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,yn=/^&([a-z][a-z0-9]{1,31});/i,et=[["text",function(L,Ue){for(var nt=L.pos;nt<L.posMax&&!Cn(L.src.charCodeAt(nt));)nt++;return nt!==L.pos&&(Ue||(L.pending+=L.src.slice(L.pos,nt)),L.pos=nt,!0)}],["newline",function(L,Ue){var nt,at,it=L.pos;if(10!==L.src.charCodeAt(it))return!1;if(nt=L.pending.length-1,at=L.posMax,!Ue)if(nt>=0&&32===L.pending.charCodeAt(nt))if(nt>=1&&32===L.pending.charCodeAt(nt-1)){for(var Pt=nt-2;Pt>=0;Pt--)if(32!==L.pending.charCodeAt(Pt)){L.pending=L.pending.substring(0,Pt+1);break}L.push({type:"hardbreak",level:L.level})}else L.pending=L.pending.slice(0,-1),L.push({type:"softbreak",level:L.level});else L.push({type:"softbreak",level:L.level});for(it++;it<at&&32===L.src.charCodeAt(it);)it++;return L.pos=it,!0}],["escape",function(L,Ue){var nt,at=L.pos,it=L.posMax;if(92!==L.src.charCodeAt(at))return!1;if(++at<it){if((nt=L.src.charCodeAt(at))<256&&0!==Kt[nt])return Ue||(L.pending+=L.src[at]),L.pos+=2,!0;if(10===nt){for(Ue||L.push({type:"hardbreak",level:L.level}),at++;at<it&&32===L.src.charCodeAt(at);)at++;return L.pos=at,!0}}return Ue||(L.pending+="\\"),L.pos++,!0}],["backticks",function(L,Ue){var nt,at,it,Pt,Ut,ot=L.pos;if(96!==L.src.charCodeAt(ot))return!1;for(nt=ot,ot++,at=L.posMax;ot<at&&96===L.src.charCodeAt(ot);)ot++;for(it=L.src.slice(nt,ot),Pt=Ut=ot;-1!==(Pt=L.src.indexOf("`",Ut));){for(Ut=Pt+1;Ut<at&&96===L.src.charCodeAt(Ut);)Ut++;if(Ut-Pt===it.length)return Ue||L.push({type:"code",content:L.src.slice(ot,Pt).replace(/[ \n]+/g," ").trim(),block:!1,level:L.level}),L.pos=Ut,!0}return Ue||(L.pending+=it),L.pos+=it.length,!0}],["del",function(L,Ue){var nt,at,it,Pt,Ut,ot=L.posMax,Nn=L.pos;if(126!==L.src.charCodeAt(Nn)||Ue||Nn+4>=ot||126!==L.src.charCodeAt(Nn+1)||L.level>=L.options.maxNesting||(Pt=Nn>0?L.src.charCodeAt(Nn-1):-1,Ut=L.src.charCodeAt(Nn+2),126===Pt)||126===Ut||32===Ut||10===Ut)return!1;for(at=Nn+2;at<ot&&126===L.src.charCodeAt(at);)at++;if(at>Nn+3)return L.pos+=at-Nn,Ue||(L.pending+=L.src.slice(Nn,at)),!0;for(L.pos=Nn+2,it=1;L.pos+1<ot;){if(126===L.src.charCodeAt(L.pos)&&126===L.src.charCodeAt(L.pos+1)&&(Pt=L.src.charCodeAt(L.pos-1),126!==(Ut=L.pos+2<ot?L.src.charCodeAt(L.pos+2):-1)&&126!==Pt&&(32!==Pt&&10!==Pt?it--:32!==Ut&&10!==Ut&&it++,it<=0))){nt=!0;break}L.parser.skipToken(L)}return nt?(L.posMax=L.pos,L.pos=Nn+2,Ue||(L.push({type:"del_open",level:L.level++}),L.parser.tokenize(L),L.push({type:"del_close",level:--L.level})),L.pos=L.posMax+2,L.posMax=ot,!0):(L.pos=Nn,!1)}],["ins",function(L,Ue){var nt,at,it,Pt,Ut,ot=L.posMax,Nn=L.pos;if(43!==L.src.charCodeAt(Nn)||Ue||Nn+4>=ot||43!==L.src.charCodeAt(Nn+1)||L.level>=L.options.maxNesting||(Pt=Nn>0?L.src.charCodeAt(Nn-1):-1,Ut=L.src.charCodeAt(Nn+2),43===Pt)||43===Ut||32===Ut||10===Ut)return!1;for(at=Nn+2;at<ot&&43===L.src.charCodeAt(at);)at++;if(at!==Nn+2)return L.pos+=at-Nn,Ue||(L.pending+=L.src.slice(Nn,at)),!0;for(L.pos=Nn+2,it=1;L.pos+1<ot;){if(43===L.src.charCodeAt(L.pos)&&43===L.src.charCodeAt(L.pos+1)&&(Pt=L.src.charCodeAt(L.pos-1),43!==(Ut=L.pos+2<ot?L.src.charCodeAt(L.pos+2):-1)&&43!==Pt&&(32!==Pt&&10!==Pt?it--:32!==Ut&&10!==Ut&&it++,it<=0))){nt=!0;break}L.parser.skipToken(L)}return nt?(L.posMax=L.pos,L.pos=Nn+2,Ue||(L.push({type:"ins_open",level:L.level++}),L.parser.tokenize(L),L.push({type:"ins_close",level:--L.level})),L.pos=L.posMax+2,L.posMax=ot,!0):(L.pos=Nn,!1)}],["mark",function(L,Ue){var nt,at,it,Pt,Ut,ot=L.posMax,Nn=L.pos;if(61!==L.src.charCodeAt(Nn)||Ue||Nn+4>=ot||61!==L.src.charCodeAt(Nn+1)||L.level>=L.options.maxNesting||(Pt=Nn>0?L.src.charCodeAt(Nn-1):-1,Ut=L.src.charCodeAt(Nn+2),61===Pt)||61===Ut||32===Ut||10===Ut)return!1;for(at=Nn+2;at<ot&&61===L.src.charCodeAt(at);)at++;if(at!==Nn+2)return L.pos+=at-Nn,Ue||(L.pending+=L.src.slice(Nn,at)),!0;for(L.pos=Nn+2,it=1;L.pos+1<ot;){if(61===L.src.charCodeAt(L.pos)&&61===L.src.charCodeAt(L.pos+1)&&(Pt=L.src.charCodeAt(L.pos-1),61!==(Ut=L.pos+2<ot?L.src.charCodeAt(L.pos+2):-1)&&61!==Pt&&(32!==Pt&&10!==Pt?it--:32!==Ut&&10!==Ut&&it++,it<=0))){nt=!0;break}L.parser.skipToken(L)}return nt?(L.posMax=L.pos,L.pos=Nn+2,Ue||(L.push({type:"mark_open",level:L.level++}),L.parser.tokenize(L),L.push({type:"mark_close",level:--L.level})),L.pos=L.posMax+2,L.posMax=ot,!0):(L.pos=Nn,!1)}],["emphasis",function(L,Ue){var nt,at,it,Pt,Ut,ot,Nn,sn=L.posMax,An=L.pos,Bn=L.src.charCodeAt(An);if(95!==Bn&&42!==Bn||Ue)return!1;if(nt=(Nn=qn(L,An)).delims,!Nn.can_open)return L.pos+=nt,Ue||(L.pending+=L.src.slice(An,L.pos)),!0;if(L.level>=L.options.maxNesting)return!1;for(L.pos=An+nt,ot=[nt];L.pos<sn;)if(L.src.charCodeAt(L.pos)!==Bn)L.parser.skipToken(L);else{if(at=(Nn=qn(L,L.pos)).delims,Nn.can_close){for(Pt=ot.pop(),Ut=at;Pt!==Ut;){if(Ut<Pt){ot.push(Pt-Ut);break}if(Ut-=Pt,0===ot.length)break;L.pos+=Pt,Pt=ot.pop()}if(0===ot.length){nt=Pt,it=!0;break}L.pos+=at;continue}Nn.can_open&&ot.push(at),L.pos+=at}return it?(L.posMax=L.pos,L.pos=An+nt,Ue||(2!==nt&&3!==nt||L.push({type:"strong_open",level:L.level++}),1!==nt&&3!==nt||L.push({type:"em_open",level:L.level++}),L.parser.tokenize(L),1!==nt&&3!==nt||L.push({type:"em_close",level:--L.level}),2!==nt&&3!==nt||L.push({type:"strong_close",level:--L.level})),L.pos=L.posMax+nt,L.posMax=sn,!0):(L.pos=An,!1)}],["sub",function(L,Ue){var nt,at,it=L.posMax,Pt=L.pos;if(126!==L.src.charCodeAt(Pt)||Ue||Pt+2>=it||L.level>=L.options.maxNesting)return!1;for(L.pos=Pt+1;L.pos<it;){if(126===L.src.charCodeAt(L.pos)){nt=!0;break}L.parser.skipToken(L)}return nt&&Pt+1!==L.pos?(at=L.src.slice(Pt+1,L.pos)).match(/(^|[^\\])(\\\\)*\s/)?(L.pos=Pt,!1):(L.posMax=L.pos,L.pos=Pt+1,Ue||L.push({type:"sub",level:L.level,content:at.replace(Sn,"$1")}),L.pos=L.posMax+1,L.posMax=it,!0):(L.pos=Pt,!1)}],["sup",function(L,Ue){var nt,at,it=L.posMax,Pt=L.pos;if(94!==L.src.charCodeAt(Pt)||Ue||Pt+2>=it||L.level>=L.options.maxNesting)return!1;for(L.pos=Pt+1;L.pos<it;){if(94===L.src.charCodeAt(L.pos)){nt=!0;break}L.parser.skipToken(L)}return nt&&Pt+1!==L.pos?(at=L.src.slice(Pt+1,L.pos)).match(/(^|[^\\])(\\\\)*\s/)?(L.pos=Pt,!1):(L.posMax=L.pos,L.pos=Pt+1,Ue||L.push({type:"sup",level:L.level,content:at.replace($n,"$1")}),L.pos=L.posMax+1,L.posMax=it,!0):(L.pos=Pt,!1)}],["links",function(L,Ue){var nt,at,it,Pt,Ut,ot,Nn,sn,An=!1,Bn=L.pos,ir=L.posMax,mr=L.pos,_r=L.src.charCodeAt(mr);if(33===_r&&(An=!0,_r=L.src.charCodeAt(++mr)),91!==_r||L.level>=L.options.maxNesting||(nt=mr+1,(at=he(L,mr))<0))return!1;if((ot=at+1)<ir&&40===L.src.charCodeAt(ot)){for(ot++;ot<ir&&(32===(sn=L.src.charCodeAt(ot))||10===sn);ot++);if(ot>=ir)return!1;for(mr=ot,Me(L,ot)?(Pt=L.linkContent,ot=L.pos):Pt="",mr=ot;ot<ir&&(32===(sn=L.src.charCodeAt(ot))||10===sn);ot++);if(ot<ir&&mr!==ot&&Oe(L,ot))for(Ut=L.linkContent,ot=L.pos;ot<ir&&(32===(sn=L.src.charCodeAt(ot))||10===sn);ot++);else Ut="";if(ot>=ir||41!==L.src.charCodeAt(ot))return L.pos=Bn,!1;ot++}else{if(L.linkLevel>0)return!1;for(;ot<ir&&(32===(sn=L.src.charCodeAt(ot))||10===sn);ot++);if(ot<ir&&91===L.src.charCodeAt(ot)&&(mr=ot+1,(ot=he(L,ot))>=0?it=L.src.slice(mr,ot++):ot=mr-1),it||(void 0===it&&(ot=at+1),it=L.src.slice(nt,at)),!(Nn=L.env.references[be(it)]))return L.pos=Bn,!1;Pt=Nn.href,Ut=Nn.title}return Ue||(L.pos=nt,L.posMax=at,An?L.push({type:"image",src:Pt,title:Ut,alt:L.src.substr(nt,at-nt),level:L.level}):(L.push({type:"link_open",href:Pt,title:Ut,level:L.level++}),L.linkLevel++,L.parser.tokenize(L),L.linkLevel--,L.push({type:"link_close",level:--L.level}))),L.pos=ot,L.posMax=ir,!0}],["footnote_inline",function(L,Ue){var nt,at,it,Pt,Ut=L.posMax,ot=L.pos;return!(ot+2>=Ut||94!==L.src.charCodeAt(ot)||91!==L.src.charCodeAt(ot+1)||L.level>=L.options.maxNesting||(nt=ot+2,(at=he(L,ot+1))<0||(Ue||(L.env.footnotes||(L.env.footnotes={}),L.env.footnotes.list||(L.env.footnotes.list=[]),it=L.env.footnotes.list.length,L.pos=nt,L.posMax=at,L.push({type:"footnote_ref",id:it,level:L.level}),L.linkLevel++,Pt=L.tokens.length,L.parser.tokenize(L),L.env.footnotes.list[it]={tokens:L.tokens.splice(Pt)},L.linkLevel--),L.pos=at+1,L.posMax=Ut,0)))}],["footnote_ref",function(L,Ue){var nt,at,it,Pt,Ut=L.posMax,ot=L.pos;if(ot+3>Ut||!L.env.footnotes||!L.env.footnotes.refs||91!==L.src.charCodeAt(ot)||94!==L.src.charCodeAt(ot+1)||L.level>=L.options.maxNesting)return!1;for(at=ot+2;at<Ut;at++){if(32===L.src.charCodeAt(at)||10===L.src.charCodeAt(at))return!1;if(93===L.src.charCodeAt(at))break}return!(at===ot+2||at>=Ut||(at++,nt=L.src.slice(ot+2,at-1),void 0===L.env.footnotes.refs[":"+nt]||(Ue||(L.env.footnotes.list||(L.env.footnotes.list=[]),L.env.footnotes.refs[":"+nt]<0?(it=L.env.footnotes.list.length,L.env.footnotes.list[it]={label:nt,count:0},L.env.footnotes.refs[":"+nt]=it):it=L.env.footnotes.refs[":"+nt],Pt=L.env.footnotes.list[it].count,L.env.footnotes.list[it].count++,L.push({type:"footnote_ref",id:it,subId:Pt,level:L.level})),L.pos=at,L.posMax=Ut,0)))}],["autolink",function(L,Ue){var nt,at,it,Pt,Ut,ot=L.pos;return!(60!==L.src.charCodeAt(ot)||(nt=L.src.slice(ot)).indexOf(">")<0||((at=nt.match(Dn))?En.indexOf(at[1].toLowerCase())<0||(Ut=Ae(Pt=at[0].slice(1,-1)),!L.parser.validateLink(Pt)||(Ue||(L.push({type:"link_open",href:Ut,level:L.level}),L.push({type:"text",content:Pt,level:L.level+1}),L.push({type:"link_close",level:L.level})),L.pos+=at[0].length,0)):!(it=nt.match(Fn))||(Ut=Ae("mailto:"+(Pt=it[0].slice(1,-1))),!L.parser.validateLink(Ut)||(Ue||(L.push({type:"link_open",href:Ut,level:L.level}),L.push({type:"text",content:Pt,level:L.level+1}),L.push({type:"link_close",level:L.level})),L.pos+=it[0].length,0))))}],["htmltag",function(L,Ue){var nt,at,it,Ut,ot,Pt=L.pos;return!(!L.options.html||(it=L.posMax,60!==L.src.charCodeAt(Pt)||Pt+2>=it||33!==(nt=L.src.charCodeAt(Pt+1))&&63!==nt&&47!==nt&&(Ut=nt,ot=32|Ut,!(ot>=97&&ot<=122))||!(at=L.src.slice(Pt).match(mt))||(Ue||L.push({type:"htmltag",content:L.src.slice(Pt,Pt+at[0].length),level:L.level}),L.pos+=at[0].length,0)))}],["entity",function(L,Ue){var nt,at,it=L.pos,Pt=L.posMax;if(38!==L.src.charCodeAt(it))return!1;if(it+1<Pt)if(35===L.src.charCodeAt(it+1)){if(at=L.src.slice(it).match(Tt))return Ue||(nt="x"===at[1][0].toLowerCase()?parseInt(at[1].slice(1),16):parseInt(at[1],10),L.pending+=m(nt)?b(nt):b(65533)),L.pos+=at[0].length,!0}else if(at=L.src.slice(it).match(yn)){var Ut=s(at[1]);if(at[1]!==Ut)return Ue||(L.pending+=Ut),L.pos+=at[0].length,!0}return Ue||(L.pending+="&"),L.pos++,!0}]];function jt(){this.ruler=new fe;for(var L=0;L<et.length;L++)this.ruler.push(et[L][0],et[L][1]);this.validateLink=hn}function hn(L){var Ue=L.trim().toLowerCase();return-1===(Ue=j(Ue)).indexOf(":")||-1===["vbscript","javascript","file","data"].indexOf(Ue.split(":")[0])}jt.prototype.skipToken=function(L){var Ue,nt,at=this.ruler.getRules(""),it=at.length,Pt=L.pos;if((nt=L.cacheGet(Pt))>0)L.pos=nt;else{for(Ue=0;Ue<it;Ue++)if(at[Ue](L,!0))return void L.cacheSet(Pt,L.pos);L.pos++,L.cacheSet(Pt,L.pos)}},jt.prototype.tokenize=function(L){for(var Ue,nt,at=this.ruler.getRules(""),it=at.length,Pt=L.posMax;L.pos<Pt;){for(nt=0;nt<it&&!(Ue=at[nt](L,!1));nt++);if(Ue){if(L.pos>=Pt)break}else L.pending+=L.src[L.pos++]}L.pending&&L.pushPending()},jt.prototype.parse=function(L,Ue,nt,at){var it=new ne(L,this,Ue,nt,at);this.tokenize(it)};var Qn={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","replacements","smartquotes","references","abbr2","footnote_tail"]},block:{rules:["blockquote","code","fences","footnote","heading","hr","htmlblock","lheading","list","paragraph","table"]},inline:{rules:["autolink","backticks","del","emphasis","entity","escape","footnote_ref","htmltag","links","newline","text"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","abbr2"]},block:{rules:["blockquote","code","fences","heading","hr","htmlblock","lheading","list","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","htmltag","links","newline","text"]}}}};function Ir(L,Ue,nt){this.src=Ue,this.env=nt,this.options=L.options,this.tokens=[],this.inlineMode=!1,this.inline=L.inline,this.block=L.block,this.renderer=L.renderer,this.typographer=L.typographer}function ht(L,Ue){"string"!=typeof L&&(Ue=L,L="default"),Ue&&null!=Ue.linkify&&console.warn("linkify option is removed. Use linkify plugin instead:\n\nimport Remarkable from 'remarkable';\nimport linkify from 'remarkable/linkify';\nnew Remarkable().use(linkify)\n"),this.inline=new jt,this.block=new Mn,this.core=new ae,this.renderer=new oe,this.ruler=new fe,this.options={},this.configure(Qn[L]),this.set(Ue||{})}ht.prototype.set=function(L){u(this.options,L)},ht.prototype.configure=function(L){var Ue=this;if(!L)throw new Error("Wrong `remarkable` preset, check name/content");L.options&&Ue.set(L.options),L.components&&Object.keys(L.components).forEach(function(nt){L.components[nt].rules&&Ue[nt].ruler.enable(L.components[nt].rules,!0)})},ht.prototype.use=function(L,Ue){return L(this,Ue),this},ht.prototype.parse=function(L,Ue){var nt=new Ir(this,L,Ue);return this.core.process(nt),nt.tokens},ht.prototype.render=function(L,Ue){return this.renderer.render(this.parse(L,Ue=Ue||{}),this.options,Ue)},ht.prototype.parseInline=function(L,Ue){var nt=new Ir(this,L,Ue);return nt.inlineMode=!0,this.core.process(nt),nt.tokens},ht.prototype.renderInline=function(L,Ue){return this.renderer.render(this.parseInline(L,Ue=Ue||{}),this.options,Ue)}},function(g,o,t){"use strict";t.d(o,"b",function(){return jn});var e=t(0),s=t.n(e),a=(t(11),t(204));function l(Xt,ut){if(Array.prototype.indexOf)return Xt.indexOf(ut);for(var mt=0,Tt=Xt.length;mt<Tt;mt++)if(Xt[mt]===ut)return mt;return-1}function u(Xt,ut){for(var mt=Xt.length-1;mt>=0;mt--)!0===ut(Xt[mt])&&Xt.splice(mt,1)}function h(Xt){throw new Error("Unhandled case for value: '"+Xt+"'")}var _=function(){function Xt(ut){void 0===ut&&(ut={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=ut.tagName||"",this.attrs=ut.attrs||{},this.innerHTML=ut.innerHtml||ut.innerHTML||""}return Xt.prototype.setTagName=function(ut){return this.tagName=ut,this},Xt.prototype.getTagName=function(){return this.tagName||""},Xt.prototype.setAttr=function(ut,mt){return this.getAttrs()[ut]=mt,this},Xt.prototype.getAttr=function(ut){return this.getAttrs()[ut]},Xt.prototype.setAttrs=function(ut){return Object.assign(this.getAttrs(),ut),this},Xt.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},Xt.prototype.setClass=function(ut){return this.setAttr("class",ut)},Xt.prototype.addClass=function(ut){for(var mt,Tt=this.getClass(),yn=this.whitespaceRegex,et=Tt?Tt.split(yn):[],jt=ut.split(yn);mt=jt.shift();)-1===l(et,mt)&&et.push(mt);return this.getAttrs().class=et.join(" "),this},Xt.prototype.removeClass=function(ut){for(var mt,Tt=this.getClass(),yn=this.whitespaceRegex,et=Tt?Tt.split(yn):[],jt=ut.split(yn);et.length&&(mt=jt.shift());){var hn=l(et,mt);-1!==hn&&et.splice(hn,1)}return this.getAttrs().class=et.join(" "),this},Xt.prototype.getClass=function(){return this.getAttrs().class||""},Xt.prototype.hasClass=function(ut){return-1!==(" "+this.getClass()+" ").indexOf(" "+ut+" ")},Xt.prototype.setInnerHTML=function(ut){return this.innerHTML=ut,this},Xt.prototype.setInnerHtml=function(ut){return this.setInnerHTML(ut)},Xt.prototype.getInnerHTML=function(){return this.innerHTML||""},Xt.prototype.getInnerHtml=function(){return this.getInnerHTML()},Xt.prototype.toAnchorString=function(){var ut=this.getTagName(),mt=this.buildAttrsStr();return["<",ut,mt=mt?" "+mt:"",">",this.getInnerHtml(),"</",ut,">"].join("")},Xt.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var ut=this.getAttrs(),mt=[];for(var Tt in ut)ut.hasOwnProperty(Tt)&&mt.push(Tt+'="'+ut[Tt]+'"');return mt.join(" ")},Xt}(),m=function(){function Xt(ut){void 0===ut&&(ut={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=ut.newWindow||!1,this.truncate=ut.truncate||{},this.className=ut.className||""}return Xt.prototype.build=function(ut){return new _({tagName:"a",attrs:this.createAttrs(ut),innerHtml:this.processAnchorText(ut.getAnchorText())})},Xt.prototype.createAttrs=function(ut){var mt={href:ut.getAnchorHref()},Tt=this.createCssClass(ut);return Tt&&(mt.class=Tt),this.newWindow&&(mt.target="_blank",mt.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<ut.getAnchorText().length&&(mt.title=ut.getAnchorHref()),mt},Xt.prototype.createCssClass=function(ut){var mt=this.className;if(mt){for(var Tt=[mt],yn=ut.getCssClassSuffixes(),et=0,jt=yn.length;et<jt;et++)Tt.push(mt+"-"+yn[et]);return Tt.join(" ")}return""},Xt.prototype.processAnchorText=function(ut){return this.doTruncate(ut)},Xt.prototype.doTruncate=function(ut){var mt=this.truncate;if(!mt||!mt.length)return ut;var Qn,Ir,ht,L,Tt=mt.length,yn=mt.location;return"smart"===yn?function(et,jt,hn){var Qn,Ir;null==hn?(hn="&hellip;",Ir=3,Qn=8):(Ir=hn.length,Qn=hn.length);var ht=function(sn){var An="";return sn.scheme&&sn.host&&(An+=sn.scheme+"://"),sn.host&&(An+=sn.host),sn.path&&(An+="/"+sn.path),sn.query&&(An+="?"+sn.query),sn.fragment&&(An+="#"+sn.fragment),An},L=function(sn,An){var Bn=An/2,ir=Math.ceil(Bn),mr=-1*Math.floor(Bn),_r="";return mr<0&&(_r=sn.substr(mr)),sn.substr(0,ir)+hn+_r};if(et.length<=jt)return et;var An,Bn,ir,Ue=jt-Ir,nt=(An={},(ir=(Bn=et).match(/^([a-z]+):\/\//i))&&(An.scheme=ir[1],Bn=Bn.substr(ir[0].length)),(ir=Bn.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(An.host=ir[1],Bn=Bn.substr(ir[0].length)),(ir=Bn.match(/^\/(.*?)(?=(\?|#|$))/i))&&(An.path=ir[1],Bn=Bn.substr(ir[0].length)),(ir=Bn.match(/^\?(.*?)(?=(#|$))/i))&&(An.query=ir[1],Bn=Bn.substr(ir[0].length)),(ir=Bn.match(/^#(.*?)$/i))&&(An.fragment=ir[1]),An);if(nt.query){var at=nt.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);at&&(nt.query=nt.query.substr(0,at[1].length),et=ht(nt))}if(et.length<=jt||(nt.host&&(nt.host=nt.host.replace(/^www\./,""),et=ht(nt)),et.length<=jt))return et;var it="";if(nt.host&&(it+=nt.host),it.length>=Ue)return nt.host.length==jt?(nt.host.substr(0,jt-Ir)+hn).substr(0,Ue+Qn):L(it,Ue).substr(0,Ue+Qn);var Pt="";if(nt.path&&(Pt+="/"+nt.path),nt.query&&(Pt+="?"+nt.query),Pt){if((it+Pt).length>=Ue)return(it+Pt).length==jt?(it+Pt).substr(0,jt):(it+L(Pt,Ue-it.length)).substr(0,Ue+Qn);it+=Pt}if(nt.fragment){var Ut="#"+nt.fragment;if((it+Ut).length>=Ue)return(it+Ut).length==jt?(it+Ut).substr(0,jt):(it+L(Ut,Ue-it.length)).substr(0,Ue+Qn);it+=Ut}if(nt.scheme&&nt.host){var ot=nt.scheme+"://";if((it+ot).length<Ue)return(ot+it).substr(0,jt)}if(it.length<=jt)return it;var Nn="";return Ue>0&&(Nn=it.substr(-1*Math.floor(Ue/2))),(it.substr(0,Math.ceil(Ue/2))+hn+Nn).substr(0,Ue+Qn)}(ut,Tt):"middle"===yn?function(et,jt,hn){if(et.length<=jt)return et;var Qn,Ir;null==hn?(hn="&hellip;",Qn=8,Ir=3):(Qn=hn.length,Ir=hn.length);var ht=jt-Ir,L="";return ht>0&&(L=et.substr(-1*Math.floor(ht/2))),(et.substr(0,Math.ceil(ht/2))+hn+L).substr(0,ht+Qn)}(ut,Tt):(ht=void 0,(Qn=ut).length>(Ir=Tt)&&(null==ht?(ht="&hellip;",L=3):L=ht.length,Qn=Qn.substring(0,Ir-L)+ht),Qn)},Xt}(),b=function(){function Xt(ut){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=ut.tagBuilder,this.matchedText=ut.matchedText,this.offset=ut.offset}return Xt.prototype.getMatchedText=function(){return this.matchedText},Xt.prototype.setOffset=function(ut){this.offset=ut},Xt.prototype.getOffset=function(){return this.offset},Xt.prototype.getCssClassSuffixes=function(){return[this.getType()]},Xt.prototype.buildTag=function(){return this.tagBuilder.build(this)},Xt}(),C=function(Xt,ut){return(C=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(mt,Tt){mt.__proto__=Tt}||function(mt,Tt){for(var yn in Tt)Tt.hasOwnProperty(yn)&&(mt[yn]=Tt[yn])})(Xt,ut)};function D(Xt,ut){function mt(){this.constructor=Xt}C(Xt,ut),Xt.prototype=null===ut?Object.create(ut):(mt.prototype=ut.prototype,new mt)}var j,x=function(){return(x=Object.assign||function(Xt){for(var ut,mt=1,Tt=arguments.length;mt<Tt;mt++)for(var yn in ut=arguments[mt])Object.prototype.hasOwnProperty.call(ut,yn)&&(Xt[yn]=ut[yn]);return Xt}).apply(this,arguments)},H=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.email="",Tt.email=mt.email,Tt}return D(ut,Xt),ut.prototype.getType=function(){return"email"},ut.prototype.getEmail=function(){return this.email},ut.prototype.getAnchorHref=function(){return"mailto:"+this.email},ut.prototype.getAnchorText=function(){return this.email},ut}(b),z=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.serviceName="",Tt.hashtag="",Tt.serviceName=mt.serviceName,Tt.hashtag=mt.hashtag,Tt}return D(ut,Xt),ut.prototype.getType=function(){return"hashtag"},ut.prototype.getServiceName=function(){return this.serviceName},ut.prototype.getHashtag=function(){return this.hashtag},ut.prototype.getAnchorHref=function(){var mt=this.serviceName,Tt=this.hashtag;switch(mt){case"twitter":return"https://twitter.com/hashtag/"+Tt;case"facebook":return"https://www.facebook.com/hashtag/"+Tt;case"instagram":return"https://instagram.com/explore/tags/"+Tt;default:throw new Error("Unknown service name to point hashtag to: "+mt)}},ut.prototype.getAnchorText=function(){return"#"+this.hashtag},ut}(b),U=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.serviceName="twitter",Tt.mention="",Tt.mention=mt.mention,Tt.serviceName=mt.serviceName,Tt}return D(ut,Xt),ut.prototype.getType=function(){return"mention"},ut.prototype.getMention=function(){return this.mention},ut.prototype.getServiceName=function(){return this.serviceName},ut.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;default:throw new Error("Unknown service name to point mention to: "+this.serviceName)}},ut.prototype.getAnchorText=function(){return"@"+this.mention},ut.prototype.getCssClassSuffixes=function(){var mt=Xt.prototype.getCssClassSuffixes.call(this),Tt=this.getServiceName();return Tt&&mt.push(Tt),mt},ut}(b),M=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.number="",Tt.plusSign=!1,Tt.number=mt.number,Tt.plusSign=mt.plusSign,Tt}return D(ut,Xt),ut.prototype.getType=function(){return"phone"},ut.prototype.getPhoneNumber=function(){return this.number},ut.prototype.getNumber=function(){return this.getPhoneNumber()},ut.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},ut.prototype.getAnchorText=function(){return this.matchedText},ut}(b),I=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.url="",Tt.urlMatchType="scheme",Tt.protocolUrlMatch=!1,Tt.protocolRelativeMatch=!1,Tt.stripPrefix={scheme:!0,www:!0},Tt.stripTrailingSlash=!0,Tt.decodePercentEncoding=!0,Tt.schemePrefixRegex=/^(https?:\/\/)?/i,Tt.wwwPrefixRegex=/^(https?:\/\/)?(www\.)?/i,Tt.protocolRelativeRegex=/^\/\//,Tt.protocolPrepended=!1,Tt.urlMatchType=mt.urlMatchType,Tt.url=mt.url,Tt.protocolUrlMatch=mt.protocolUrlMatch,Tt.protocolRelativeMatch=mt.protocolRelativeMatch,Tt.stripPrefix=mt.stripPrefix,Tt.stripTrailingSlash=mt.stripTrailingSlash,Tt.decodePercentEncoding=mt.decodePercentEncoding,Tt}return D(ut,Xt),ut.prototype.getType=function(){return"url"},ut.prototype.getUrlMatchType=function(){return this.urlMatchType},ut.prototype.getUrl=function(){var mt=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(mt=this.url="http://"+mt,this.protocolPrepended=!0),mt},ut.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},ut.prototype.getAnchorText=function(){var mt=this.getMatchedText();return this.protocolRelativeMatch&&(mt=this.stripProtocolRelativePrefix(mt)),this.stripPrefix.scheme&&(mt=this.stripSchemePrefix(mt)),this.stripPrefix.www&&(mt=this.stripWwwPrefix(mt)),this.stripTrailingSlash&&(mt=this.removeTrailingSlash(mt)),this.decodePercentEncoding&&(mt=this.removePercentEncoding(mt)),mt},ut.prototype.stripSchemePrefix=function(mt){return mt.replace(this.schemePrefixRegex,"")},ut.prototype.stripWwwPrefix=function(mt){return mt.replace(this.wwwPrefixRegex,"$1")},ut.prototype.stripProtocolRelativePrefix=function(mt){return mt.replace(this.protocolRelativeRegex,"")},ut.prototype.removeTrailingSlash=function(mt){return"/"===mt.charAt(mt.length-1)&&(mt=mt.slice(0,-1)),mt},ut.prototype.removePercentEncoding=function(mt){var Tt=mt.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(Tt)}catch(yn){return Tt}},ut}(b),J=function(Xt){this.__jsduckDummyDocProp=null,this.tagBuilder=Xt.tagBuilder},Y=/[A-Za-z]/,ie=/[\d]/,oe=/[\D]/,fe=/\s/,ne=/['"]/,he=/[\x00-\x1F\x7F]/,ce=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,Ae=ce+/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source+/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,Me=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,Oe=Ae+Me,be=Ae+Me,ue="(?:["+Me+"]{1,3}\\.){3}["+Me+"]{1,3}",He="["+be+"](?:["+be+"\\-]{0,61}["+be+"])?",$e=function(Xt){return"(?=("+He+"))\\"+Xt},F=function(Xt){return"(?:"+$e(Xt)+"(?:\\."+$e(Xt+1)+"){0,126}|"+ue+")"},je=(new RegExp("["+be+".\\-]*["+be+"\\-]"),new RegExp("["+be+"]")),Et=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|verm\xf6gensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|verm\xf6gensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|\u043a\u0430\u0442\u043e\u043b\u0438\u043a|\u0627\u062a\u0635\u0627\u0644\u0627\u062a|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0639\u0644\u064a\u0627\u0646|\u067e\u0627\u06a9\u0633\u062a\u0627\u0646|\u0643\u0627\u062b\u0648\u0644\u064a\u0643|\u0645\u0648\u0628\u0627\u064a\u0644\u064a|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|\u043c\u043e\u0441\u043a\u0432\u0430|\u043e\u043d\u043b\u0430\u0439\u043d|\u0627\u0628\u0648\u0638\u0628\u064a|\u0627\u0631\u0627\u0645\u0643\u0648|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0641\u0644\u0633\u0637\u064a\u0646|\u0645\u0644\u064a\u0633\u064a\u0627|\u092d\u093e\u0930\u0924\u092e\u094d|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u30d5\u30a1\u30c3\u30b7\u30e7\u30f3|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|\u0627\u06cc\u0631\u0627\u0646|\u0628\u0627\u0632\u0627\u0631|\u0628\u06be\u0627\u0631\u062a|\u0633\u0648\u062f\u0627\u0646|\u0633\u0648\u0631\u064a\u0629|\u0647\u0645\u0631\u0627\u0647|\u092d\u093e\u0930\u094b\u0924|\u0938\u0902\u0917\u0920\u0928|\u09ac\u09be\u0982\u09b2\u09be|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0d2d\u0d3e\u0d30\u0d24\u0d02|\u5609\u91cc\u5927\u9152\u5e97|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|\u0434\u0435\u0442\u0438|\u0441\u0430\u0439\u0442|\u0628\u0627\u0631\u062a|\u0628\u064a\u062a\u0643|\u0680\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0634\u0628\u0643\u0629|\u0639\u0631\u0627\u0642|\u0639\u0645\u0627\u0646|\u0645\u0648\u0642\u0639|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u09ad\u09be\u09f0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b2d\u0b3e\u0b30\u0b24|\u0cad\u0cbe\u0cb0\u0ca4|\u0dbd\u0d82\u0d9a\u0dcf|\u30b0\u30fc\u30b0\u30eb|\u30af\u30e9\u30a6\u30c9|\u30dd\u30a4\u30f3\u30c8|\u5927\u4f17\u6c7d\u8f66|\u7ec4\u7ec7\u673a\u6784|\u96fb\u8a0a\u76c8\u79d1|\u9999\u683c\u91cc\u62c9|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|\u0431\u0435\u043b|\u043a\u043e\u043c|\u049b\u0430\u0437|\u043c\u043a\u0434|\u043c\u043e\u043d|\u043e\u0440\u0433|\u0440\u0443\u0441|\u0441\u0440\u0431|\u0443\u043a\u0440|\u0570\u0561\u0575|\u05e7\u05d5\u05dd|\u0639\u0631\u0628|\u0642\u0637\u0631|\u0643\u0648\u0645|\u0645\u0635\u0631|\u0915\u0949\u092e|\u0928\u0947\u091f|\u0e04\u0e2d\u0e21|\u0e44\u0e17\u0e22|\u30b9\u30c8\u30a2|\u30bb\u30fc\u30eb|\u307f\u3093\u306a|\u4e2d\u6587\u7f51|\u5929\u4e3b\u6559|\u6211\u7231\u4f60|\u65b0\u52a0\u5761|\u6de1\u9a6c\u9521|\u8bfa\u57fa\u4e9a|\u98de\u5229\u6d66|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|\u03b5\u03bb|\u0431\u0433|\u0435\u044e|\u0440\u0444|\u10d2\u10d4|\ub2f7\ub137|\ub2f7\ucef4|\uc0bc\uc131|\ud55c\uad6d|\u30b3\u30e0|\u4e16\u754c|\u4e2d\u4fe1|\u4e2d\u56fd|\u4e2d\u570b|\u4f01\u4e1a|\u4f5b\u5c71|\u4fe1\u606f|\u5065\u5eb7|\u516b\u5366|\u516c\u53f8|\u516c\u76ca|\u53f0\u6e7e|\u53f0\u7063|\u5546\u57ce|\u5546\u5e97|\u5546\u6807|\u5609\u91cc|\u5728\u7ebf|\u5927\u62ff|\u5a31\u4e50|\u5bb6\u96fb|\u5de5\u884c|\u5e7f\u4e1c|\u5fae\u535a|\u6148\u5584|\u624b\u673a|\u624b\u8868|\u62db\u8058|\u653f\u52a1|\u653f\u5e9c|\u65b0\u95fb|\u65f6\u5c1a|\u66f8\u7c4d|\u673a\u6784|\u6e38\u620f|\u6fb3\u9580|\u70b9\u770b|\u73e0\u5b9d|\u79fb\u52a8|\u7f51\u5740|\u7f51\u5e97|\u7f51\u7ad9|\u7f51\u7edc|\u8054\u901a|\u8c37\u6b4c|\u8d2d\u7269|\u901a\u8ca9|\u96c6\u56e2|\u98df\u54c1|\u9910\u5385|\u9999\u6e2f)/,lt=new RegExp("["+be+"!#$%&'*+/=?^_`{|}~-]"),nn=new RegExp("^"+Et.source+"$"),St=function(Xt){function ut(){var mt=null!==Xt&&Xt.apply(this,arguments)||this;return mt.localPartCharRegex=lt,mt.strictTldRegex=nn,mt}return D(ut,Xt),ut.prototype.parseMatches=function(mt){for(var Tt=this.tagBuilder,yn=this.localPartCharRegex,et=this.strictTldRegex,jt=[],hn=mt.length,Qn=new At,Ir={m:"a",a:"i",i:"l",l:"t",t:"o",o:":"},ht=0,L=0,Ue=Qn;ht<hn;){var nt=mt.charAt(ht);switch(L){case 0:"m"===(_r=nt)?Bn(1):yn.test(_r)&&Bn();break;case 1:it(mt.charAt(ht-1),nt);break;case 2:Pt(nt);break;case 3:Ut(nt);break;case 4:ot(nt);break;case 5:Nn(nt);break;case 6:sn(nt);break;case 7:An(nt);break;default:h(L)}ht++}var _r;return mr(),jt;function it(_r,Nr){":"===_r?yn.test(Nr)?(L=2,Ue=new At(x(x({},Ue),{hasMailtoPrefix:!0}))):ir():Ir[_r]===Nr||(yn.test(Nr)?L=2:"."===Nr?L=3:"@"===Nr?L=4:ir())}function Pt(_r){"."===_r?L=3:"@"===_r?L=4:yn.test(_r)||ir()}function Ut(_r){"."===_r||"@"===_r?ir():yn.test(_r)?L=2:ir()}function ot(_r){je.test(_r)?L=5:ir()}function Nn(_r){"."===_r?L=7:"-"===_r?L=6:je.test(_r)||mr()}function sn(_r){"-"===_r||"."===_r?mr():je.test(_r)?L=5:mr()}function An(_r){"."===_r||"-"===_r?mr():je.test(_r)?(L=5,Ue=new At(x(x({},Ue),{hasDomainDot:!0}))):mr()}function Bn(_r){void 0===_r&&(_r=2),L=_r,Ue=new At({idx:ht})}function ir(){L=0,Ue=Qn}function mr(){if(Ue.hasDomainDot){var _r=mt.slice(Ue.idx,ht);/[-.]$/.test(_r)&&(_r=_r.slice(0,-1));var Nr=Ue.hasMailtoPrefix?_r.slice("mailto:".length):_r;Jn=(Nr.split(".").pop()||"").toLowerCase(),et.test(Jn)&&jt.push(new H({tagBuilder:Tt,matchedText:_r,offset:Ue.idx,email:Nr}))}var Jn;ir()}},ut}(J),At=function(Xt){void 0===Xt&&(Xt={}),this.idx=void 0!==Xt.idx?Xt.idx:-1,this.hasMailtoPrefix=!!Xt.hasMailtoPrefix,this.hasDomainDot=!!Xt.hasDomainDot},Qe=function(){function Xt(){}return Xt.isValid=function(ut,mt){return!(mt&&!this.isValidUriScheme(mt)||this.urlMatchDoesNotHaveProtocolOrDot(ut,mt)||this.urlMatchDoesNotHaveAtLeastOneWordChar(ut,mt)&&!this.isValidIpAddress(ut)||this.containsMultipleDots(ut))},Xt.isValidIpAddress=function(ut){var mt=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==ut.match(mt)},Xt.containsMultipleDots=function(ut){var mt=ut;return this.hasFullProtocolRegex.test(ut)&&(mt=ut.split("://")[1]),mt.split("/")[0].indexOf("..")>-1},Xt.isValidUriScheme=function(ut){var mt=ut.match(this.uriSchemeRegex),Tt=mt&&mt[0].toLowerCase();return"javascript:"!==Tt&&"vbscript:"!==Tt},Xt.urlMatchDoesNotHaveProtocolOrDot=function(ut,mt){return!(!ut||mt&&this.hasFullProtocolRegex.test(mt)||-1!==ut.indexOf("."))},Xt.urlMatchDoesNotHaveAtLeastOneWordChar=function(ut,mt){return!(!ut||!mt||this.hasFullProtocolRegex.test(mt)||this.hasWordCharAfterProtocolRegex.test(ut))},Xt.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,Xt.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,Xt.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+ce+"]"),Xt.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,Xt}(),It=(j=new RegExp("[/?#](?:["+be+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^\u2713]*["+be+"\\-+&@#/%=~_()|'$*\\[\\]{}\u2713])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,F(2),")","|","(","(//)?",/(?:www\.)/.source,F(6),")","|","(","(//)?",F(10)+"\\.",Et.source,"(?![-"+Oe+"])",")",")","(?::[0-9]+)?","(?:"+j.source+")?"].join(""),"gi")),ae=new RegExp("["+be+"]"),Ie=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.stripPrefix={scheme:!0,www:!0},Tt.stripTrailingSlash=!0,Tt.decodePercentEncoding=!0,Tt.matcherRegex=It,Tt.wordCharRegExp=ae,Tt.stripPrefix=mt.stripPrefix,Tt.stripTrailingSlash=mt.stripTrailingSlash,Tt.decodePercentEncoding=mt.decodePercentEncoding,Tt}return D(ut,Xt),ut.prototype.parseMatches=function(mt){for(var Tt,yn=this.matcherRegex,et=this.stripPrefix,jt=this.stripTrailingSlash,hn=this.decodePercentEncoding,Qn=this.tagBuilder,Ir=[],ht=function(){var Ue=Tt[0],nt=Tt[1],at=Tt[4],Ut=Tt.index,ot=Tt[5]||Tt[9],Nn=mt.charAt(Ut-1);if(!Qe.isValid(Ue,nt)||Ut>0&&"@"===Nn||Ut>0&&ot&&L.wordCharRegExp.test(Nn))return"continue";if(/\?$/.test(Ue)&&(Ue=Ue.substr(0,Ue.length-1)),L.matchHasUnbalancedClosingParen(Ue))Ue=Ue.substr(0,Ue.length-1);else{var sn=L.matchHasInvalidCharAfterTld(Ue,nt);sn>-1&&(Ue=Ue.substr(0,sn))}var An=["http://","https://"].find(function(_r){return!!nt&&-1!==nt.indexOf(_r)});if(An){var Bn=Ue.indexOf(An);Ue=Ue.substr(Bn),nt=nt.substr(Bn),Ut+=Bn}Ir.push(new I({tagBuilder:Qn,matchedText:Ue,offset:Ut,urlMatchType:nt?"scheme":at?"www":"tld",url:Ue,protocolUrlMatch:!!nt,protocolRelativeMatch:!!ot,stripPrefix:et,stripTrailingSlash:jt,decodePercentEncoding:hn}))},L=this;null!==(Tt=yn.exec(mt));)ht();return Ir},ut.prototype.matchHasUnbalancedClosingParen=function(mt){var Tt,yn=mt.charAt(mt.length-1);if(")"===yn)Tt="(";else if("]"===yn)Tt="[";else{if("}"!==yn)return!1;Tt="{"}for(var et=0,jt=0,hn=mt.length-1;jt<hn;jt++){var Qn=mt.charAt(jt);Qn===Tt?et++:Qn===yn&&(et=Math.max(et-1,0))}return 0===et},ut.prototype.matchHasInvalidCharAfterTld=function(mt,Tt){if(!mt)return-1;var yn=0;Tt&&(yn=mt.indexOf(":"),mt=mt.slice(yn));var et=new RegExp("^((.?//)?[-."+be+"]*[-"+be+"]\\.[-"+be+"]+)").exec(mt);return null===et?-1:(yn+=et[1].length,mt=mt.slice(et[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(mt)?yn:-1)},ut}(J),dt=new RegExp("#[_"+be+"]{1,139}(?![_"+be+"])","g"),Jt=new RegExp("[^"+be+"]"),zt=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.serviceName="twitter",Tt.matcherRegex=dt,Tt.nonWordCharRegex=Jt,Tt.serviceName=mt.serviceName,Tt}return D(ut,Xt),ut.prototype.parseMatches=function(mt){for(var Tt,yn=this.matcherRegex,et=this.nonWordCharRegex,jt=this.serviceName,hn=this.tagBuilder,Qn=[];null!==(Tt=yn.exec(mt));){var Ir=Tt.index,ht=mt.charAt(Ir-1);if(0===Ir||et.test(ht)){var L=Tt[0],Ue=Tt[0].slice(1);Qn.push(new z({tagBuilder:hn,matchedText:L,offset:Ir,serviceName:jt,hashtag:Ue}))}}return Qn},ut}(J),ln=new RegExp(/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/.source+"|"+/(0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source,"g"),ar=function(Xt){function ut(){var mt=null!==Xt&&Xt.apply(this,arguments)||this;return mt.matcherRegex=ln,mt}return D(ut,Xt),ut.prototype.parseMatches=function(mt){for(var Tt,yn=this.matcherRegex,et=this.tagBuilder,jt=[];null!==(Tt=yn.exec(mt));){var hn=Tt[0],Qn=hn.replace(/[^0-9,;#]/g,""),Ir=!(!Tt[1]&&!Tt[2]),ht=0==Tt.index?"":mt.substr(Tt.index-1,1),L=mt.substr(Tt.index+hn.length,1),Ue=!ht.match(/\d/)&&!L.match(/\d/);this.testMatch(Tt[3])&&this.testMatch(hn)&&Ue&&jt.push(new M({tagBuilder:et,matchedText:hn,offset:Tt.index,number:Qn,plusSign:Ir}))}return jt},ut.prototype.testMatch=function(mt){return oe.test(mt)},ut}(J),Ln=new RegExp("@[_"+be+"]{1,50}(?![_"+be+"])","g"),Rn=new RegExp("@[_."+be+"]{1,30}(?![_"+be+"])","g"),er=new RegExp("@[-_."+be+"]{1,50}(?![-_"+be+"])","g"),Mn=new RegExp("[^"+be+"]"),Ht=function(Xt){function ut(mt){var Tt=Xt.call(this,mt)||this;return Tt.serviceName="twitter",Tt.matcherRegexes={twitter:Ln,instagram:Rn,soundcloud:er},Tt.nonWordCharRegex=Mn,Tt.serviceName=mt.serviceName,Tt}return D(ut,Xt),ut.prototype.parseMatches=function(mt){var Tt,yn=this.serviceName,et=this.matcherRegexes[this.serviceName],jt=this.nonWordCharRegex,hn=this.tagBuilder,Qn=[];if(!et)return Qn;for(;null!==(Tt=et.exec(mt));){var Ir=Tt.index,ht=mt.charAt(Ir-1);if(0===Ir||jt.test(ht)){var L=Tt[0].replace(/\.+$/g,""),Ue=L.slice(1);Qn.push(new U({tagBuilder:hn,matchedText:L,offset:Ir,serviceName:yn,mention:Ue}))}}return Qn},ut}(J),Yn=function(Xt){void 0===Xt&&(Xt={}),this.idx=void 0!==Xt.idx?Xt.idx:-1,this.type=Xt.type||"tag",this.name=Xt.name||"",this.isOpening=!!Xt.isOpening,this.isClosing=!!Xt.isClosing},Cn=function(){function Xt(ut){void 0===ut&&(ut={}),this.version=Xt.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(ut.urls),this.email="boolean"==typeof ut.email?ut.email:this.email,this.phone="boolean"==typeof ut.phone?ut.phone:this.phone,this.hashtag=ut.hashtag||this.hashtag,this.mention=ut.mention||this.mention,this.newWindow="boolean"==typeof ut.newWindow?ut.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(ut.stripPrefix),this.stripTrailingSlash="boolean"==typeof ut.stripTrailingSlash?ut.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof ut.decodePercentEncoding?ut.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=ut.sanitizeHtml||!1;var mt=this.mention;if(!1!==mt&&"twitter"!==mt&&"instagram"!==mt&&"soundcloud"!==mt)throw new Error("invalid `mention` cfg - see docs");var Tt=this.hashtag;if(!1!==Tt&&"twitter"!==Tt&&"facebook"!==Tt&&"instagram"!==Tt)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(ut.truncate),this.className=ut.className||this.className,this.replaceFn=ut.replaceFn||this.replaceFn,this.context=ut.context||this}return Xt.link=function(ut,mt){return new Xt(mt).link(ut)},Xt.parse=function(ut,mt){return new Xt(mt).parse(ut)},Xt.prototype.normalizeUrlsCfg=function(ut){return null==ut&&(ut=!0),"boolean"==typeof ut?{schemeMatches:ut,wwwMatches:ut,tldMatches:ut}:{schemeMatches:"boolean"!=typeof ut.schemeMatches||ut.schemeMatches,wwwMatches:"boolean"!=typeof ut.wwwMatches||ut.wwwMatches,tldMatches:"boolean"!=typeof ut.tldMatches||ut.tldMatches}},Xt.prototype.normalizeStripPrefixCfg=function(ut){return null==ut&&(ut=!0),"boolean"==typeof ut?{scheme:ut,www:ut}:{scheme:"boolean"!=typeof ut.scheme||ut.scheme,www:"boolean"!=typeof ut.www||ut.www}},Xt.prototype.normalizeTruncateCfg=function(ut){return"number"==typeof ut?{length:ut,location:"end"}:function(mt,Tt){for(var yn in Tt)Tt.hasOwnProperty(yn)&&void 0===mt[yn]&&(mt[yn]=Tt[yn]);return mt}(ut||{},{length:Number.POSITIVE_INFINITY,location:"end"})},Xt.prototype.parse=function(ut){var mt=this,Tt=["a","style","script"],yn=0,et=[];return function(Xt,ut){for(var mt,Tt=ut.onOpenTag,yn=ut.onCloseTag,et=ut.onText,jt=ut.onComment,hn=ut.onDoctype,Qn=new Yn,Ir=0,ht=Xt.length,L=0,Ue=0,nt=Qn;Ir<ht;){var at=Xt.charAt(Ir);switch(L){case 0:"<"===at&&di();break;case 1:"!"===(Ke=at)?L=13:"/"===Ke?(L=2,nt=new Yn(x(x({},nt),{isClosing:!0}))):"<"===Ke?di():Y.test(Ke)?(L=3,nt=new Yn(x(x({},nt),{isOpening:!0}))):(L=0,nt=Qn);break;case 2:ot(at);break;case 3:Ut(at);break;case 4:Nn(at);break;case 5:sn(at);break;case 6:An(at);break;case 7:Bn(at);break;case 8:ir(at);break;case 9:mr(at);break;case 10:_r(at);break;case 11:Nr(at);break;case 12:br(at);break;case 13:"--"===Xt.substr(Ir,2)?(Ir+=2,nt=new Yn(x(x({},nt),{type:"comment"})),L=14):"DOCTYPE"===Xt.substr(Ir,7).toUpperCase()?(Ir+=7,nt=new Yn(x(x({},nt),{type:"doctype"})),L=20):ei();break;case 14:nr(at);break;case 15:Mr(at);break;case 16:yi(at);break;case 17:Ii(at);break;case 18:Mi(at);break;case 19:Oi(at);break;case 20:Kr(at);break;default:h(L)}Ir++}var Ke;function Ut(Ke){fe.test(Ke)?(nt=new Yn(x(x({},nt),{name:ct()})),L=4):"<"===Ke?di():"/"===Ke?(nt=new Yn(x(x({},nt),{name:ct()})),L=12):">"===Ke?(nt=new Yn(x(x({},nt),{name:ct()})),se()):Y.test(Ke)||ie.test(Ke)||":"===Ke||ei()}function ot(Ke){">"===Ke?ei():Y.test(Ke)?L=3:ei()}function Nn(Ke){fe.test(Ke)||("/"===Ke?L=12:">"===Ke?se():"<"===Ke?di():"="===Ke||ne.test(Ke)||he.test(Ke)?ei():L=5)}function sn(Ke){fe.test(Ke)?L=6:"/"===Ke?L=12:"="===Ke?L=7:">"===Ke?se():"<"===Ke?di():ne.test(Ke)&&ei()}function An(Ke){fe.test(Ke)||("/"===Ke?L=12:"="===Ke?L=7:">"===Ke?se():"<"===Ke?di():ne.test(Ke)?ei():L=5)}function Bn(Ke){fe.test(Ke)||('"'===Ke?L=8:"'"===Ke?L=9:/[>=`]/.test(Ke)?ei():"<"===Ke?di():L=10)}function ir(Ke){'"'===Ke&&(L=11)}function mr(Ke){"'"===Ke&&(L=11)}function _r(Ke){fe.test(Ke)?L=4:">"===Ke?se():"<"===Ke&&di()}function Nr(Ke){fe.test(Ke)?L=4:"/"===Ke?L=12:">"===Ke?se():"<"===Ke?di():(L=4,Ir--)}function br(Ke){">"===Ke?(nt=new Yn(x(x({},nt),{isClosing:!0})),se()):L=4}function nr(Ke){"-"===Ke?L=15:">"===Ke?ei():L=16}function Mr(Ke){"-"===Ke?L=18:">"===Ke?ei():L=16}function yi(Ke){"-"===Ke&&(L=17)}function Ii(Ke){L="-"===Ke?18:16}function Mi(Ke){">"===Ke?se():"!"===Ke?L=19:"-"===Ke||(L=16)}function Oi(Ke){"-"===Ke?L=17:">"===Ke?se():L=16}function Kr(Ke){">"===Ke?se():"<"===Ke&&di()}function ei(){L=0,nt=Qn}function di(){L=1,nt=new Yn({idx:Ir})}function se(){var Ke=Xt.slice(Ue,nt.idx);Ke&&et(Ke,Ue),"comment"===nt.type?jt(nt.idx):"doctype"===nt.type?hn(nt.idx):(nt.isOpening&&Tt(nt.name,nt.idx),nt.isClosing&&yn(nt.name,nt.idx)),ei(),Ue=Ir+1}function ct(){return Xt.slice(nt.idx+(nt.isClosing?2:1),Ir).toLowerCase()}Ue<Ir&&(mt=Xt.slice(Ue,Ir),et(mt,Ue),Ue=Ir+1)}(ut,{onOpenTag:function(jt){Tt.indexOf(jt)>=0&&yn++},onText:function(jt,hn){if(0===yn){var Qn=function(ht,L){if(!L.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var Ue,nt=[],at=0;Ue=L.exec(ht);)nt.push(ht.substring(at,Ue.index)),nt.push(Ue[0]),at=Ue.index+Ue[0].length;return nt.push(ht.substring(at)),nt}(jt,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),Ir=hn;Qn.forEach(function(ht,L){if(L%2==0){var Ue=mt.parseText(ht,Ir);et.push.apply(et,Ue)}Ir+=ht.length})}},onCloseTag:function(jt){Tt.indexOf(jt)>=0&&(yn=Math.max(yn-1,0))},onComment:function(jt){},onDoctype:function(jt){}}),et=this.compactMatches(et),et=this.removeUnwantedMatches(et)},Xt.prototype.compactMatches=function(ut){ut.sort(function(Qn,Ir){return Qn.getOffset()-Ir.getOffset()});for(var mt=0;mt<ut.length-1;mt++){var Tt=ut[mt],yn=Tt.getOffset(),et=Tt.getMatchedText().length,jt=yn+et;if(mt+1<ut.length){if(ut[mt+1].getOffset()===yn){var hn=ut[mt+1].getMatchedText().length>et?mt:mt+1;ut.splice(hn,1);continue}ut[mt+1].getOffset()<jt&&ut.splice(mt+1,1)}}return ut},Xt.prototype.removeUnwantedMatches=function(ut){return this.hashtag||u(ut,function(mt){return"hashtag"===mt.getType()}),this.email||u(ut,function(mt){return"email"===mt.getType()}),this.phone||u(ut,function(mt){return"phone"===mt.getType()}),this.mention||u(ut,function(mt){return"mention"===mt.getType()}),this.urls.schemeMatches||u(ut,function(mt){return"url"===mt.getType()&&"scheme"===mt.getUrlMatchType()}),this.urls.wwwMatches||u(ut,function(mt){return"url"===mt.getType()&&"www"===mt.getUrlMatchType()}),this.urls.tldMatches||u(ut,function(mt){return"url"===mt.getType()&&"tld"===mt.getUrlMatchType()}),ut},Xt.prototype.parseText=function(ut,mt){void 0===mt&&(mt=0),mt=mt||0;for(var Tt=this.getMatchers(),yn=[],et=0,jt=Tt.length;et<jt;et++){for(var hn=Tt[et].parseMatches(ut),Qn=0,Ir=hn.length;Qn<Ir;Qn++)hn[Qn].setOffset(mt+hn[Qn].getOffset());yn.push.apply(yn,hn)}return yn},Xt.prototype.link=function(ut){if(!ut)return"";this.sanitizeHtml&&(ut=ut.replace(/</g,"&lt;").replace(/>/g,"&gt;"));for(var mt=this.parse(ut),Tt=[],yn=0,et=0,jt=mt.length;et<jt;et++){var hn=mt[et];Tt.push(ut.substring(yn,hn.getOffset())),Tt.push(this.createMatchReturnVal(hn)),yn=hn.getOffset()+hn.getMatchedText().length}return Tt.push(ut.substring(yn)),Tt.join("")},Xt.prototype.createMatchReturnVal=function(ut){var mt;return this.replaceFn&&(mt=this.replaceFn.call(this.context,ut)),"string"==typeof mt?mt:!1===mt?ut.getMatchedText():mt instanceof _?mt.toAnchorString():ut.buildTag().toAnchorString()},Xt.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var ut=this.getTagBuilder(),mt=[new zt({tagBuilder:ut,serviceName:this.hashtag}),new St({tagBuilder:ut}),new ar({tagBuilder:ut}),new Ht({tagBuilder:ut,serviceName:this.mention}),new Ie({tagBuilder:ut,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=mt},Xt.prototype.getTagBuilder=function(){var ut=this.tagBuilder;return ut||(ut=this.tagBuilder=new m({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),ut},Xt.version="3.14.3",Xt.AnchorTagBuilder=m,Xt.HtmlTag=_,Xt.matcher={Email:St,Hashtag:zt,Matcher:J,Mention:Ht,Phone:ar,Url:Ie},Xt.match={Email:H,Hashtag:z,Match:b,Mention:U,Phone:M,Url:I},Xt}(),Kt=/www|@|\:\/\//;function dn(Xt){return/^<\/a\s*>/i.test(Xt)}function Kn(){var Xt=[],ut=new Cn({stripPrefix:!1,url:!0,email:!0,replaceFn:function(mt){switch(mt.getType()){case"url":Xt.push({text:mt.matchedText,url:mt.getUrl()});break;case"email":Xt.push({text:mt.matchedText,url:"mailto:"+mt.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:Xt,autolinker:ut}}function qn(Xt){var ut,mt,Tt,yn,et,jt,hn,Qn,Ir,ht,L,Ue,nt,it=Xt.tokens,Pt=null;for(mt=0,Tt=it.length;mt<Tt;mt++)if("inline"===it[mt].type)for(L=0,ut=(yn=it[mt].children).length-1;ut>=0;ut--)if("link_close"!==(et=yn[ut]).type){if("htmltag"===et.type&&(/^<a[>\s]/i.test(et.content)&&L>0&&L--,dn(et.content)&&L++),!(L>0)&&"text"===et.type&&Kt.test(et.content)){if(Pt||(Ue=(Pt=Kn()).links,nt=Pt.autolinker),jt=et.content,Ue.length=0,nt.link(jt),!Ue.length)continue;for(hn=[],ht=et.level,Qn=0;Qn<Ue.length;Qn++)Xt.inline.validateLink(Ue[Qn].url)&&((Ir=jt.indexOf(Ue[Qn].text))&&hn.push({type:"text",content:jt.slice(0,Ir),level:ht}),hn.push({type:"link_open",href:Ue[Qn].url,title:"",level:ht++}),hn.push({type:"text",content:Ue[Qn].text,level:ht}),hn.push({type:"link_close",level:--ht}),jt=jt.slice(Ir+Ue[Qn].text.length));jt.length&&hn.push({type:"text",content:jt,level:ht}),it[mt].children=yn=[].concat(yn.slice(0,ut),hn,yn.slice(ut+1))}}else for(ut--;yn[ut].level!==et.level&&"link_open"!==yn[ut].type;)ut--}function Sn(Xt){Xt.core.ruler.push("linkify",qn)}var $n=t(208),En=t.n($n),Fn=t(47),Dn=t.n(Fn);function mn(Xt){var ut=Xt.source,mt=Xt.className,Tt=void 0===mt?"":mt,yn=Xt.getConfigs;if("string"!=typeof ut)return null;var et=new a.a({html:!0,typographer:!0,breaks:!0,linkTarget:"_blank"}).use(Sn);et.core.ruler.disable(["replacements","smartquotes"]);var jt=yn().useUnsafeMarkdown,hn=et.render(ut),Qn=jn(hn,{useUnsafeMarkdown:jt});return ut&&hn&&Qn?s.a.createElement("div",{className:Dn()(Tt,"markdown"),dangerouslySetInnerHTML:{__html:Qn}}):null}function jn(Xt){var ut=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},mt=ut.useUnsafeMarkdown,Tt=void 0!==mt&&mt,yn=Tt,et=Tt?[]:["style","class"];return Tt&&!jn.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),jn.hasWarnedAboutDeprecation=!0),En.a.sanitize(Xt,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:yn,FORBID_ATTR:et})}En.a.addHook&&En.a.addHook("beforeSanitizeElements",function(Xt){return Xt.href&&Xt.setAttribute("rel","noopener noreferrer"),Xt}),mn.defaultProps={getConfigs:function(){return{useUnsafeMarkdown:!1}}},o.a=mn,jn.hasWarnedAboutDeprecation=!1},function(g,o,t){"use strict";t.d(o,"a",function(){return ae});var e=t(29),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(10),m=t.n(_),b=t(8),C=t.n(b),D=t(9),x=t.n(D),j=t(3),H=t.n(j),z=t(2),U=t.n(z),M=t(18),I=t.n(M),J=t(4),Y=t.n(J),ie=t(0),oe=t.n(ie),fe=t(1);function ne(Ie){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(dt){return typeof dt}:function(dt){return dt&&"function"==typeof Symbol&&dt.constructor===Symbol&&dt!==Symbol.prototype?"symbol":typeof dt})(Ie)}function he(Ie,dt){if(!(Ie instanceof dt))throw new TypeError("Cannot call a class as a function")}function Ae(Ie,dt,Jt){return dt in Ie?Object.defineProperty(Ie,dt,{value:Jt,enumerable:!0,configurable:!0,writable:!0}):Ie[dt]=Jt,Ie}function Me(Ie,dt){var Jt=Object.keys(Ie);if(Object.getOwnPropertySymbols){var zt=Object.getOwnPropertySymbols(Ie);dt&&(zt=zt.filter(function(ln){return Object.getOwnPropertyDescriptor(Ie,ln).enumerable})),Jt.push.apply(Jt,zt)}return Jt}function Oe(Ie){for(var dt=1;dt<arguments.length;dt++){var Jt=null!=arguments[dt]?arguments[dt]:{};dt%2?Me(Jt,!0).forEach(function(zt){Ae(Ie,zt,Jt[zt])}):Object.getOwnPropertyDescriptors?Object.defineProperties(Ie,Object.getOwnPropertyDescriptors(Jt)):Me(Jt).forEach(function(zt){Object.defineProperty(Ie,zt,Object.getOwnPropertyDescriptor(Jt,zt))})}return Ie}function be(Ie){return(be=Object.setPrototypeOf?Object.getPrototypeOf:function(dt){return dt.__proto__||Object.getPrototypeOf(dt)})(Ie)}function ue(Ie,dt){return(ue=Object.setPrototypeOf||function(Jt,zt){return Jt.__proto__=zt,Jt})(Ie,dt)}function He(Ie,dt){return!dt||"object"!=typeof dt&&"function"!=typeof dt?function(Jt){if(void 0===Jt)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return Jt}(Ie):dt}var $e={};function F(Ie,dt,Jt){return null==Ie?Jt:null!==(zt=Ie)&&"object"===ne(zt)&&"function"==typeof zt.get&&"function"==typeof zt.has?Ie.has(dt)?Ie.get(dt):Jt:hasOwnProperty.call(Ie,dt)?Ie[dt]:Jt;var zt}function je(Ie,dt,Jt){for(var zt=0;zt!==dt.length;)if((Ie=F(Ie,dt[zt++],$e))===$e)return Jt;return Ie}function Et(Ie){var dt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Jt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},zt=lt(dt,Jt),ln=Ie||Object.keys(Oe({},Jt,{},dt));return ln.every(zt)}function lt(Ie,dt){return function(Jt){if("string"==typeof Jt)return Object(fe.is)(dt[Jt],Ie[Jt]);if(Array.isArray(Jt))return Object(fe.is)(je(dt,Jt),je(Ie,Jt));throw new TypeError("Invalid key: expected Array or string: "+Jt)}}var nn=function(Ie){function dt(){return he(this,dt),He(this,be(dt).apply(this,arguments))}var zt;return function(ar,Ln){if("function"!=typeof Ln&&null!==Ln)throw new TypeError("Super expression must either be null or a function");ar.prototype=Object.create(Ln&&Ln.prototype,{constructor:{value:ar,writable:!0,configurable:!0}}),Ln&&ue(ar,Ln)}(dt,Ie),(zt=[{key:"shouldComponentUpdate",value:function(ar){var Ln=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!Et(this.updateOnProps,this.props,ar,"updateOnProps")||!Et(this.updateOnStates,this.state,Ln,"updateOnStates")}}])&&function(Ie,dt){for(var Jt=0;Jt<dt.length;Jt++){var zt=dt[Jt];zt.enumerable=zt.enumerable||!1,zt.configurable=!0,"value"in zt&&(zt.writable=!0),Object.defineProperty(Ie,zt.key,zt)}}(dt.prototype,zt),dt}(oe.a.Component),St=t(28),At=t.n(St),Qe=t(11),It=t.n(Qe),ae=function(Ie){C()(Jt,Ie);var dt=x()(Jt);function Jt(){var zt,ln;l()(this,Jt);for(var ar=arguments.length,Ln=new Array(ar),Rn=0;Rn<ar;Rn++)Ln[Rn]=arguments[Rn];return ln=dt.call.apply(dt,U()(zt=[this]).call(zt,Ln)),H()(m()(ln),"getModelName",function(er){return-1!==I()(er).call(er,"#/definitions/")?er.replace(/^.*#\/definitions\//,""):-1!==I()(er).call(er,"#/components/schemas/")?er.replace(/^.*#\/components\/schemas\//,""):void 0}),H()(m()(ln),"getRefSchema",function(er){return ln.props.specSelectors.findDefinition(er)}),ln}return h()(Jt,[{key:"render",value:function(){var zt=this.props,ln=zt.getComponent,ar=zt.getConfigs,Ln=zt.specSelectors,Rn=zt.schema,er=zt.required,Mn=zt.name,Ht=zt.isRef,tr=zt.specPath,Yn=zt.displayName,Cn=zt.includeReadOnly,Kt=zt.includeWriteOnly,dn=ln("ObjectModel"),Kn=ln("ArrayModel"),qn=ln("PrimitiveModel"),Sn="object",$n=Rn&&Rn.get("$$ref");if(!Mn&&$n&&(Mn=this.getModelName($n)),!Rn&&$n&&(Rn=this.getRefSchema(Mn)),!Rn)return oe.a.createElement("span",{className:"model model-title"},oe.a.createElement("span",{className:"model-title__text"},Yn||Mn),oe.a.createElement("img",{src:t(447),height:"20px",width:"20px"}));var En=Ln.isOAS3()&&Rn.get("deprecated");switch(Ht=void 0!==Ht?Ht:!!$n,Sn=Rn&&Rn.get("type")||Sn){case"object":return oe.a.createElement(dn,s()({className:"object"},this.props,{specPath:tr,getConfigs:ar,schema:Rn,name:Mn,deprecated:En,isRef:Ht,includeReadOnly:Cn,includeWriteOnly:Kt}));case"array":return oe.a.createElement(Kn,s()({className:"array"},this.props,{getConfigs:ar,schema:Rn,name:Mn,deprecated:En,required:er,includeReadOnly:Cn,includeWriteOnly:Kt}));case"string":case"number":case"integer":case"boolean":default:return oe.a.createElement(qn,s()({},this.props,{getComponent:ln,getConfigs:ar,schema:Rn,name:Mn,deprecated:En,required:er}))}}}]),Jt}(nn);H()(ae,"propTypes",{schema:Y()(At.a).isRequired,getComponent:It.a.func.isRequired,getConfigs:It.a.func.isRequired,specSelectors:It.a.object.isRequired,name:It.a.string,displayName:It.a.string,isRef:It.a.bool,required:It.a.bool,expandDepth:It.a.number,depth:It.a.number,specPath:At.a.list.isRequired,includeReadOnly:It.a.bool,includeWriteOnly:It.a.bool})},function(g,o,t){"use strict";var e=t(923),s=t(933),a=t(252);g.exports={formats:a,parse:s,stringify:e}},function(g,o,t){g.exports=function(){"use strict";var s=Object.hasOwnProperty,a=Object.setPrototypeOf,l=Object.isFrozen,u=Object.getPrototypeOf,h=Object.getOwnPropertyDescriptor,_=Object.freeze,m=Object.seal,b=Object.create,C="undefined"!=typeof Reflect&&Reflect,D=C.apply,x=C.construct;D||(D=function(Rn,er,Mn){return Rn.apply(er,Mn)}),_||(_=function(Rn){return Rn}),m||(m=function(Rn){return Rn}),x||(x=function(Rn,er){return new(Function.prototype.bind.apply(Rn,[null].concat(function(Rn){if(Array.isArray(Rn)){for(var er=0,Mn=Array(Rn.length);er<Rn.length;er++)Mn[er]=Rn[er];return Mn}return Array.from(Rn)}(er))))});var Rn,j=fe(Array.prototype.forEach),H=fe(Array.prototype.pop),z=fe(Array.prototype.push),U=fe(String.prototype.toLowerCase),M=fe(String.prototype.match),I=fe(String.prototype.replace),J=fe(String.prototype.indexOf),Y=fe(String.prototype.trim),ie=fe(RegExp.prototype.test),oe=(Rn=TypeError,function(){for(var er=arguments.length,Mn=Array(er),Ht=0;Ht<er;Ht++)Mn[Ht]=arguments[Ht];return x(Rn,Mn)});function fe(Rn){return function(er){for(var Mn=arguments.length,Ht=Array(Mn>1?Mn-1:0),tr=1;tr<Mn;tr++)Ht[tr-1]=arguments[tr];return D(Rn,er,Ht)}}function he(Rn,er){a&&a(Rn,null);for(var Mn=er.length;Mn--;){var Ht=er[Mn];if("string"==typeof Ht){var tr=U(Ht);tr!==Ht&&(l(er)||(er[Mn]=tr),Ht=tr)}Rn[Ht]=!0}return Rn}function ce(Rn){var er=b(null),Mn=void 0;for(Mn in Rn)D(s,Rn,[Mn])&&(er[Mn]=Rn[Mn]);return er}function Ae(Rn,er){for(;null!==Rn;){var Mn=h(Rn,er);if(Mn){if(Mn.get)return fe(Mn.get);if("function"==typeof Mn.value)return fe(Mn.value)}Rn=u(Rn)}return function(tr){return console.warn("fallback value for",tr),null}}var Me=_(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Oe=_(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),be=_(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),ue=_(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),He=_(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),$e=_(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),F=_(["#text"]),je=_(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Et=_(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),lt=_(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),nn=_(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),St=m(/\{\{[\s\S]*|[\s\S]*\}\}/gm),At=m(/<%[\s\S]*|[\s\S]*%>/gm),Qe=m(/^data-[\-\w.\u00B7-\uFFFF]/),It=m(/^aria-[\-\w]+$/),ae=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ie=m(/^(?:\w+script|data):/i),dt=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(Rn){return typeof Rn}:function(Rn){return Rn&&"function"==typeof Symbol&&Rn.constructor===Symbol&&Rn!==Symbol.prototype?"symbol":typeof Rn};function zt(Rn){if(Array.isArray(Rn)){for(var er=0,Mn=Array(Rn.length);er<Rn.length;er++)Mn[er]=Rn[er];return Mn}return Array.from(Rn)}var ln=function(){return"undefined"==typeof window?null:window},ar=function(Rn,er){if("object"!==(void 0===Rn?"undefined":Jt(Rn))||"function"!=typeof Rn.createPolicy)return null;var Mn=null,Ht="data-tt-policy-suffix";er.currentScript&&er.currentScript.hasAttribute(Ht)&&(Mn=er.currentScript.getAttribute(Ht));var tr="dompurify"+(Mn?"#"+Mn:"");try{return Rn.createPolicy(tr,{createHTML:function(Yn){return Yn}})}catch(Yn){return console.warn("TrustedTypes policy "+tr+" could not be created."),null}};return function Ln(){var Rn=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ln(),er=function(Er){return Ln(Er)};if(er.version="2.3.3",er.removed=[],!Rn||!Rn.document||9!==Rn.document.nodeType)return er.isSupported=!1,er;var Mn=Rn.document,Ht=Rn.document,tr=Rn.DocumentFragment,Yn=Rn.HTMLTemplateElement,Cn=Rn.Node,Kt=Rn.Element,dn=Rn.NodeFilter,Kn=Rn.NamedNodeMap,qn=void 0===Kn?Rn.NamedNodeMap||Rn.MozNamedAttrMap:Kn,Sn=Rn.Text,$n=Rn.Comment,En=Rn.DOMParser,Fn=Rn.trustedTypes,Dn=Kt.prototype,mn=Ae(Dn,"cloneNode"),jn=Ae(Dn,"nextSibling"),Xt=Ae(Dn,"childNodes"),ut=Ae(Dn,"parentNode");if("function"==typeof Yn){var mt=Ht.createElement("template");mt.content&&mt.content.ownerDocument&&(Ht=mt.content.ownerDocument)}var Tt=ar(Fn,Mn),yn=Tt&&ei?Tt.createHTML(""):"",et=Ht,jt=et.implementation,hn=et.createNodeIterator,Qn=et.createDocumentFragment,Ir=et.getElementsByTagName,ht=Mn.importNode,L={};try{L=ce(Ht).documentMode?Ht.documentMode:{}}catch(Er){}var Ue={};er.isSupported="function"==typeof ut&&jt&&void 0!==jt.createHTMLDocument&&9!==L;var nt=St,at=At,it=Qe,Pt=It,Ut=Ie,ot=dt,Nn=ae,sn=null,An=he({},[].concat(zt(Me),zt(Oe),zt(be),zt(He),zt(F))),Bn=null,ir=he({},[].concat(zt(je),zt(Et),zt(lt),zt(nn))),mr=null,_r=null,Nr=!0,br=!0,Jn=!1,nr=!1,Mr=!1,yi=!1,Ii=!1,Mi=!1,Oi=!1,Kr=!0,ei=!1,di=!0,se=!0,ct=!1,Ke={},Xe=null,Vt=he({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ct=null,rt=he({},["audio","video","img","source","image","track"]),bt=null,We=he({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),$t="http://www.w3.org/1998/Math/MathML",or="http://www.w3.org/2000/svg",Zn="http://www.w3.org/1999/xhtml",Vr=Zn,Cr=!1,ai=void 0,Dr=["application/xhtml+xml","text/html"],Qr="text/html",rn=void 0,fi=null,Ei=Ht.createElement("form"),wi=function(Er){fi&&fi===Er||(Er&&"object"===(void 0===Er?"undefined":Jt(Er))||(Er={}),Er=ce(Er),sn="ALLOWED_TAGS"in Er?he({},Er.ALLOWED_TAGS):An,Bn="ALLOWED_ATTR"in Er?he({},Er.ALLOWED_ATTR):ir,bt="ADD_URI_SAFE_ATTR"in Er?he(ce(We),Er.ADD_URI_SAFE_ATTR):We,Ct="ADD_DATA_URI_TAGS"in Er?he(ce(rt),Er.ADD_DATA_URI_TAGS):rt,Xe="FORBID_CONTENTS"in Er?he({},Er.FORBID_CONTENTS):Vt,mr="FORBID_TAGS"in Er?he({},Er.FORBID_TAGS):{},_r="FORBID_ATTR"in Er?he({},Er.FORBID_ATTR):{},Ke="USE_PROFILES"in Er&&Er.USE_PROFILES,Nr=!1!==Er.ALLOW_ARIA_ATTR,br=!1!==Er.ALLOW_DATA_ATTR,Jn=Er.ALLOW_UNKNOWN_PROTOCOLS||!1,nr=Er.SAFE_FOR_TEMPLATES||!1,Mr=Er.WHOLE_DOCUMENT||!1,Mi=Er.RETURN_DOM||!1,Oi=Er.RETURN_DOM_FRAGMENT||!1,Kr=!1!==Er.RETURN_DOM_IMPORT,ei=Er.RETURN_TRUSTED_TYPE||!1,Ii=Er.FORCE_BODY||!1,di=!1!==Er.SANITIZE_DOM,se=!1!==Er.KEEP_CONTENT,ct=Er.IN_PLACE||!1,Nn=Er.ALLOWED_URI_REGEXP||Nn,Vr=Er.NAMESPACE||Zn,ai=ai=-1===Dr.indexOf(Er.PARSER_MEDIA_TYPE)?Qr:Er.PARSER_MEDIA_TYPE,rn="application/xhtml+xml"===ai?function(st){return st}:U,nr&&(br=!1),Oi&&(Mi=!0),Ke&&(sn=he({},[].concat(zt(F))),Bn=[],!0===Ke.html&&(he(sn,Me),he(Bn,je)),!0===Ke.svg&&(he(sn,Oe),he(Bn,Et),he(Bn,nn)),!0===Ke.svgFilters&&(he(sn,be),he(Bn,Et),he(Bn,nn)),!0===Ke.mathMl&&(he(sn,He),he(Bn,lt),he(Bn,nn))),Er.ADD_TAGS&&(sn===An&&(sn=ce(sn)),he(sn,Er.ADD_TAGS)),Er.ADD_ATTR&&(Bn===ir&&(Bn=ce(Bn)),he(Bn,Er.ADD_ATTR)),Er.ADD_URI_SAFE_ATTR&&he(bt,Er.ADD_URI_SAFE_ATTR),Er.FORBID_CONTENTS&&(Xe===Vt&&(Xe=ce(Xe)),he(Xe,Er.FORBID_CONTENTS)),se&&(sn["#text"]=!0),Mr&&he(sn,["html","head","body"]),sn.table&&(he(sn,["tbody"]),delete mr.tbody),_&&_(Er),fi=Er)},go=he({},["mi","mo","mn","ms","mtext"]),Fi=he({},["foreignobject","desc","title","annotation-xml"]),no=he({},Oe);he(no,be),he(no,ue);var Ji=he({},He);he(Ji,$e);var qi=function(Er){var st=ut(Er);st&&st.tagName||(st={namespaceURI:Zn,tagName:"template"});var pn=U(Er.tagName),ee=U(st.tagName);if(Er.namespaceURI===or)return st.namespaceURI===Zn?"svg"===pn:st.namespaceURI===$t?"svg"===pn&&("annotation-xml"===ee||go[ee]):Boolean(no[pn]);if(Er.namespaceURI===$t)return st.namespaceURI===Zn?"math"===pn:st.namespaceURI===or?"math"===pn&&Fi[ee]:Boolean(Ji[pn]);if(Er.namespaceURI===Zn){if(st.namespaceURI===or&&!Fi[ee]||st.namespaceURI===$t&&!go[ee])return!1;var Ve=he({},["title","style","font","a","script"]);return!Ji[pn]&&(Ve[pn]||!no[pn])}return!1},to=function(Er){z(er.removed,{element:Er});try{Er.parentNode.removeChild(Er)}catch(st){try{Er.outerHTML=yn}catch(pn){Er.remove()}}},zi=function(Er,st){try{z(er.removed,{attribute:st.getAttributeNode(Er),from:st})}catch(pn){z(er.removed,{attribute:null,from:st})}if(st.removeAttribute(Er),"is"===Er&&!Bn[Er])if(Mi||Oi)try{to(st)}catch(pn){}else try{st.setAttribute(Er,"")}catch(pn){}},Go=function(Er){var st=void 0,pn=void 0;if(Ii)Er="<remove></remove>"+Er;else{var ee=M(Er,/^[\r\n\t ]+/);pn=ee&&ee[0]}"application/xhtml+xml"===ai&&(Er='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Er+"</body></html>");var Ve=Tt?Tt.createHTML(Er):Er;if(Vr===Zn)try{st=(new En).parseFromString(Ve,ai)}catch(Tn){}if(!st||!st.documentElement){st=jt.createDocument(Vr,"template",null);try{st.documentElement.innerHTML=Cr?"":Ve}catch(Tn){}}var fn=st.body||st.documentElement;return Er&&pn&&fn.insertBefore(Ht.createTextNode(pn),fn.childNodes[0]||null),Vr===Zn?Ir.call(st,Mr?"html":"body")[0]:Mr?st.documentElement:fn},Ro=function(Er){return hn.call(Er.ownerDocument||Er,Er,dn.SHOW_ELEMENT|dn.SHOW_COMMENT|dn.SHOW_TEXT,null,!1)},Bo=function(Er){return!(Er instanceof Sn||Er instanceof $n||"string"==typeof Er.nodeName&&"string"==typeof Er.textContent&&"function"==typeof Er.removeChild&&Er.attributes instanceof qn&&"function"==typeof Er.removeAttribute&&"function"==typeof Er.setAttribute&&"string"==typeof Er.namespaceURI&&"function"==typeof Er.insertBefore)},Jo=function(Er){return"object"===(void 0===Cn?"undefined":Jt(Cn))?Er instanceof Cn:Er&&"object"===(void 0===Er?"undefined":Jt(Er))&&"number"==typeof Er.nodeType&&"string"==typeof Er.nodeName},es=function(Er,st,pn){Ue[Er]&&j(Ue[Er],function(ee){ee.call(er,st,pn,fi)})},ua=function(Er){var st=void 0;if(es("beforeSanitizeElements",Er,null),Bo(Er)||M(Er.nodeName,/[\u0080-\uFFFF]/))return to(Er),!0;var pn=rn(Er.nodeName);if(es("uponSanitizeElement",Er,{tagName:pn,allowedTags:sn}),!Jo(Er.firstElementChild)&&(!Jo(Er.content)||!Jo(Er.content.firstElementChild))&&ie(/<[/\w]/g,Er.innerHTML)&&ie(/<[/\w]/g,Er.textContent)||"select"===pn&&ie(/<template/i,Er.innerHTML))return to(Er),!0;if(!sn[pn]||mr[pn]){if(se&&!Xe[pn]){var ee=ut(Er)||Er.parentNode,Ve=Xt(Er)||Er.childNodes;if(Ve&&ee)for(var fn=Ve.length-1;fn>=0;--fn)ee.insertBefore(mn(Ve[fn],!0),jn(Er))}return to(Er),!0}return Er instanceof Kt&&!qi(Er)?(to(Er),!0):"noscript"!==pn&&"noembed"!==pn||!ie(/<\/no(script|embed)/i,Er.innerHTML)?(nr&&3===Er.nodeType&&(st=I(st=Er.textContent,nt," "),st=I(st,at," "),Er.textContent!==st&&(z(er.removed,{element:Er.cloneNode()}),Er.textContent=st)),es("afterSanitizeElements",Er,null),!1):(to(Er),!0)},ds=function(Er,st,pn){if(di&&("id"===st||"name"===st)&&(pn in Ht||pn in Ei))return!1;if((!br||_r[st]||!ie(it,st))&&(!Nr||!ie(Pt,st))){if(!Bn[st]||_r[st])return!1;if(!bt[st]&&!ie(Nn,I(pn,ot,""))&&("src"!==st&&"xlink:href"!==st&&"href"!==st||"script"===Er||0!==J(pn,"data:")||!Ct[Er])&&(!Jn||ie(Ut,I(pn,ot,"")))&&pn)return!1}return!0},zo=function(Er){var st=void 0,pn=void 0,ee=void 0,Ve=void 0;es("beforeSanitizeAttributes",Er,null);var fn=Er.attributes;if(fn){var Tn={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Bn};for(Ve=fn.length;Ve--;){var $r=st=fn[Ve],ni=$r.name,Ri=$r.namespaceURI;if(pn=Y(st.value),ee=rn(ni),Tn.attrName=ee,Tn.attrValue=pn,Tn.keepAttr=!0,Tn.forceKeepAttr=void 0,es("uponSanitizeAttribute",Er,Tn),pn=Tn.attrValue,!Tn.forceKeepAttr&&(zi(ni,Er),Tn.keepAttr))if(ie(/\/>/i,pn))zi(ni,Er);else{nr&&(pn=I(pn,nt," "),pn=I(pn,at," "));var Do=rn(Er.nodeName);if(ds(Do,ee,pn))try{Ri?Er.setAttributeNS(Ri,ni,pn):Er.setAttribute(ni,pn),H(er.removed)}catch(gi){}}}es("afterSanitizeAttributes",Er,null)}},oa=function Er(st){var pn=void 0,ee=Ro(st);for(es("beforeSanitizeShadowDOM",st,null);pn=ee.nextNode();)es("uponSanitizeShadowNode",pn,null),ua(pn)||(pn.content instanceof tr&&Er(pn.content),zo(pn));es("afterSanitizeShadowDOM",st,null)};return er.sanitize=function(Er,st){var pn=void 0,ee=void 0,Ve=void 0,fn=void 0,Tn=void 0;if((Cr=!Er)&&(Er="\x3c!--\x3e"),"string"!=typeof Er&&!Jo(Er)){if("function"!=typeof Er.toString)throw oe("toString is not a function");if("string"!=typeof(Er=Er.toString()))throw oe("dirty is not a string, aborting")}if(!er.isSupported){if("object"===Jt(Rn.toStaticHTML)||"function"==typeof Rn.toStaticHTML){if("string"==typeof Er)return Rn.toStaticHTML(Er);if(Jo(Er))return Rn.toStaticHTML(Er.outerHTML)}return Er}if(yi||wi(st),er.removed=[],"string"==typeof Er&&(ct=!1),!ct)if(Er instanceof Cn)1===(ee=(pn=Go("\x3c!----\x3e")).ownerDocument.importNode(Er,!0)).nodeType&&"BODY"===ee.nodeName||"HTML"===ee.nodeName?pn=ee:pn.appendChild(ee);else{if(!Mi&&!nr&&!Mr&&-1===Er.indexOf("<"))return Tt&&ei?Tt.createHTML(Er):Er;if(!(pn=Go(Er)))return Mi?null:yn}pn&&Ii&&to(pn.firstChild);for(var $r=Ro(ct?Er:pn);Ve=$r.nextNode();)3===Ve.nodeType&&Ve===fn||ua(Ve)||(Ve.content instanceof tr&&oa(Ve.content),zo(Ve),fn=Ve);if(fn=null,ct)return Er;if(Mi){if(Oi)for(Tn=Qn.call(pn.ownerDocument);pn.firstChild;)Tn.appendChild(pn.firstChild);else Tn=pn;return Kr&&(Tn=ht.call(Mn,Tn,!0)),Tn}var ni=Mr?pn.outerHTML:pn.innerHTML;return nr&&(ni=I(ni,nt," "),ni=I(ni,at," ")),Tt&&ei?Tt.createHTML(ni):ni},er.setConfig=function(Er){wi(Er),yi=!0},er.clearConfig=function(){fi=null,yi=!1},er.isValidAttribute=function(Er,st,pn){fi||wi({});var ee=rn(Er),Ve=rn(st);return ds(ee,Ve,pn)},er.addHook=function(Er,st){"function"==typeof st&&(Ue[Er]=Ue[Er]||[],z(Ue[Er],st))},er.removeHook=function(Er){Ue[Er]&&H(Ue[Er])},er.removeHooks=function(Er){Ue[Er]&&(Ue[Er]=[])},er.removeAllHooks=function(){Ue={}},er}()}()},function(g,o,t){var e=t(17),s=t(58),a=t(41),l=t(35),u=t(329),h=e.Object;g.exports=u?function(_){return"symbol"==typeof _}:function(_){var m=s("Symbol");return a(m)&&l(m.prototype,h(_))}},function(g,o,t){var e=t(128),s=t(33);g.exports=!!Object.getOwnPropertySymbols&&!s(function(){var a=Symbol();return!String(a)||!(Object(a)instanceof Symbol)||!Symbol.sham&&e&&e<41})},function(g,o,t){var e=t(73);g.exports=function(s,a){var l=s[a];return null==l?void 0:e(l)}},function(g,o,t){var e=t(96),s=t(213);(g.exports=function(a,l){return s[a]||(s[a]=void 0!==l?l:{})})("versions",[]).push({version:"3.19.1",mode:e?"pure":"global",copyright:"\xa9 2021 Denis Pushkarev (zloirock.ru)"})},function(g,o,t){var e=t(17),s=t(487),a="__core-js_shared__",l=e[a]||s(a,{});g.exports=l},function(g,o,t){var e=t(17),s=t(43),a=e.document,l=s(a)&&s(a.createElement);g.exports=function(u){return l?a.createElement(u):{}}},function(g,o,t){var e=t(488);g.exports=function(s,a){return new(e(s))(0===a?0:a)}},function(g,o,t){var e={};e[t(38)("toStringTag")]="z",g.exports="[object z]"===String(e)},function(g,o,t){var e=t(27),s=t(41),a=t(213),l=e(Function.toString);s(a.inspectSource)||(a.inspectSource=function(u){return l(u)}),g.exports=a.inspectSource},function(g,o,t){var e=t(48),s=t(63),a=t(51),l=t(61),u=t(149);g.exports=e?Object.defineProperties:function(h,_){a(h);for(var m,b=l(_),C=u(_),D=C.length,x=0;D>x;)s.f(h,m=C[x++],b[m]);return h}},function(g,o,t){var e=t(61),s=t(220),a=t(74),l=function(u){return function(h,_,m){var b,C=e(h),D=a(C),x=s(m,D);if(u&&_!=_){for(;D>x;)if((b=C[x++])!=b)return!0}else for(;D>x;x++)if((u||x in C)&&C[x]===_)return u||x||0;return!u&&-1}};g.exports={includes:l(!0),indexOf:l(!1)}},function(g,o,t){var e=t(129),s=Math.max,a=Math.min;g.exports=function(l,u){var h=e(l);return h<0?s(h+u,0):a(h,u)}},function(g,o){g.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(g,o){o.f=Object.getOwnPropertySymbols},function(g,o,t){var e=t(38);o.f=e},function(g,o){g.exports=function(){}},function(g,o,t){"use strict";var e=t(22),s=t(50),a=t(96),l=t(339),u=t(41),h=t(340),_=t(175),m=t(176),b=t(100),C=t(85),D=t(99),x=t(38),j=t(130),H=t(341),z=l.PROPER,U=l.CONFIGURABLE,M=H.IteratorPrototype,I=H.BUGGY_SAFARI_ITERATORS,J=x("iterator"),Y="keys",ie="values",oe="entries",fe=function(){return this};g.exports=function(ne,he,ce,Ae,Me,Oe,be){h(ce,he,Ae);var ue,He,$e,F=function(Qe){if(Qe===Me&&St)return St;if(!I&&Qe in lt)return lt[Qe];switch(Qe){case Y:case ie:case oe:return function(){return new ce(this,Qe)}}return function(){return new ce(this)}},je=he+" Iterator",Et=!1,lt=ne.prototype,nn=lt[J]||lt["@@iterator"]||Me&&lt[Me],St=!I&&nn||F(Me),At="Array"==he&&lt.entries||nn;if(At&&(ue=_(At.call(new ne)))!==Object.prototype&&ue.next&&(a||_(ue)===M||(m?m(ue,M):u(ue[J])||D(ue,J,fe)),b(ue,je,!0,!0),a&&(j[je]=fe)),z&&Me==ie&&nn&&nn.name!==ie&&(!a&&U?C(lt,"name",ie):(Et=!0,St=function(){return s(nn,this)})),Me)if(He={values:F(ie),keys:Oe?St:F(Y),entries:F(oe)},be)for($e in He)(I||Et||!($e in lt))&&D(lt,$e,He[$e]);else e({target:he,proto:!0,forced:I||Et},He);return a&&!be||lt[J]===St||D(lt,J,St,{name:Me}),j[he]=St,He}},function(g,o,t){g.exports=t(532)},function(g,o,t){var e=t(115)(t(69),"Map");g.exports=e},function(g,o,t){var e=t(577),s=t(584),a=t(586),l=t(587),u=t(588);function h(_){var m=-1,b=null==_?0:_.length;for(this.clear();++m<b;){var C=_[m];this.set(C[0],C[1])}}h.prototype.clear=e,h.prototype.delete=s,h.prototype.get=a,h.prototype.has=l,h.prototype.set=u,g.exports=h},function(g,o,t){var e=t(358);g.exports=function(s,a,l){"__proto__"==a&&e?e(s,a,{configurable:!0,enumerable:!0,value:l,writable:!0}):s[a]=l}},function(g,o,t){var e=t(362);g.exports=function(s){var a=new s.constructor(s.byteLength);return new e(a).set(new e(s)),a}},function(g,o,t){var e=t(365)(Object.getPrototypeOf,Object);g.exports=e},function(g,o){g.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},function(g,o){g.exports=function(t){return function(e){return t(e)}}},function(g,o,t){(function(e){var s=t(355),a=o&&!o.nodeType&&o,l=a&&"object"==typeof e&&e&&!e.nodeType&&e,u=l&&l.exports===a&&s.process,h=function(){try{return l&&l.require&&l.require("util").types||u&&u.binding&&u.binding("util")}catch(m){}}();e.exports=h}).call(this,t(183)(g))},function(g,o,t){var e=t(229),s=t(103),a=Object.prototype.hasOwnProperty;g.exports=function(l,u,h){var _=l[u];a.call(l,u)&&s(_,h)&&(void 0!==h||u in l)||e(l,u,h)}},function(g,o){g.exports=function(t){return t}},function(g,o,t){g.exports=t(607)},function(g,o,t){g.exports=t(608)},function(g,o,t){var e=t(17),s=t(50),a=t(73),l=t(51),u=t(170),h=t(154),_=e.TypeError;g.exports=function(m,b){var C=arguments.length<2?h(m):b;if(a(C))return l(s(C,m));throw _(u(m)+" is not iterable")}},function(g,o){g.exports=function(t,e){for(var s=-1,a=e.length,l=t.length;++s<a;)t[l+s]=e[s];return t}},function(g,o,t){var e=t(688),s=t(396),a=Object.prototype.propertyIsEnumerable,l=Object.getOwnPropertySymbols;g.exports=l?function(h){return null==h?[]:(h=Object(h),e(l(h),function(_){return a.call(h,_)}))}:s},function(g,o,t){var e=t(156),s=t(136);g.exports=function(a,l){for(var u=0,h=(l=e(l,a)).length;null!=a&&u<h;)a=a[s(l[u++])];return u&&u==h?a:void 0}},function(g,o,t){var e=t(52),s=t(188),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,l=/^\w*$/;g.exports=function(u,h){if(e(u))return!1;var _=typeof u;return!("number"!=_&&"symbol"!=_&&"boolean"!=_&&null!=u&&!s(u))||l.test(u)||!a.test(u)||null!=h&&u in Object(h)}},function(g,o,t){"use strict";var e,s="object"==typeof Reflect?Reflect:null,a=s&&"function"==typeof s.apply?s.apply:function(U,M,I){return Function.prototype.apply.call(U,M,I)};e=s&&"function"==typeof s.ownKeys?s.ownKeys:Object.getOwnPropertySymbols?function(U){return Object.getOwnPropertyNames(U).concat(Object.getOwnPropertySymbols(U))}:function(U){return Object.getOwnPropertyNames(U)};var l=Number.isNaN||function(U){return U!=U};function u(){u.init.call(this)}g.exports=u,g.exports.once=function(U,M){return new Promise(function(I,J){function Y(oe){U.removeListener(M,ie),J(oe)}function ie(){"function"==typeof U.removeListener&&U.removeListener("error",Y),I([].slice.call(arguments))}var oe;z(U,M,ie,{once:!0}),"error"!==M&&("function"==typeof(oe=U).on&&z(oe,"error",Y,{once:!0}))})},u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var h=10;function _(U){if("function"!=typeof U)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof U)}function m(U){return void 0===U._maxListeners?u.defaultMaxListeners:U._maxListeners}function b(U,M,I,J){var Y,ie,oe;if(_(I),void 0===(ie=U._events)?(ie=U._events=Object.create(null),U._eventsCount=0):(void 0!==ie.newListener&&(U.emit("newListener",M,I.listener?I.listener:I),ie=U._events),oe=ie[M]),void 0===oe)oe=ie[M]=I,++U._eventsCount;else if("function"==typeof oe?oe=ie[M]=J?[I,oe]:[oe,I]:J?oe.unshift(I):oe.push(I),(Y=m(U))>0&&oe.length>Y&&!oe.warned){oe.warned=!0;var ne=new Error("Possible EventEmitter memory leak detected. "+oe.length+" "+String(M)+" listeners added. Use emitter.setMaxListeners() to increase limit");ne.name="MaxListenersExceededWarning",ne.emitter=U,ne.type=M,ne.count=oe.length,console&&console.warn&&console.warn(ne)}return U}function C(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function D(U,M,I){var J={fired:!1,wrapFn:void 0,target:U,type:M,listener:I},Y=C.bind(J);return Y.listener=I,J.wrapFn=Y,Y}function x(U,M,I){var J=U._events;if(void 0===J)return[];var Y=J[M];return void 0===Y?[]:"function"==typeof Y?I?[Y.listener||Y]:[Y]:I?function(ie){for(var oe=new Array(ie.length),fe=0;fe<oe.length;++fe)oe[fe]=ie[fe].listener||ie[fe];return oe}(Y):H(Y,Y.length)}function j(U){var M=this._events;if(void 0!==M){var I=M[U];if("function"==typeof I)return 1;if(void 0!==I)return I.length}return 0}function H(U,M){for(var I=new Array(M),J=0;J<M;++J)I[J]=U[J];return I}function z(U,M,I,J){if("function"==typeof U.on)J.once?U.once(M,I):U.on(M,I);else{if("function"!=typeof U.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof U);U.addEventListener(M,function Y(ie){J.once&&U.removeEventListener(M,Y),I(ie)})}}Object.defineProperty(u,"defaultMaxListeners",{enumerable:!0,get:function(){return h},set:function(U){if("number"!=typeof U||U<0||l(U))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+U+".");h=U}}),u.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},u.prototype.setMaxListeners=function(U){if("number"!=typeof U||U<0||l(U))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+U+".");return this._maxListeners=U,this},u.prototype.getMaxListeners=function(){return m(this)},u.prototype.emit=function(U){for(var M=[],I=1;I<arguments.length;I++)M.push(arguments[I]);var J="error"===U,Y=this._events;if(void 0!==Y)J=J&&void 0===Y.error;else if(!J)return!1;if(J){var ie;if(M.length>0&&(ie=M[0]),ie instanceof Error)throw ie;var oe=new Error("Unhandled error."+(ie?" ("+ie.message+")":""));throw oe.context=ie,oe}var fe=Y[U];if(void 0===fe)return!1;if("function"==typeof fe)a(fe,this,M);else{var ne=fe.length,he=H(fe,ne);for(I=0;I<ne;++I)a(he[I],this,M)}return!0},u.prototype.on=u.prototype.addListener=function(U,M){return b(this,U,M,!1)},u.prototype.prependListener=function(U,M){return b(this,U,M,!0)},u.prototype.once=function(U,M){return _(M),this.on(U,D(this,U,M)),this},u.prototype.prependOnceListener=function(U,M){return _(M),this.prependListener(U,D(this,U,M)),this},u.prototype.off=u.prototype.removeListener=function(U,M){var I,J,Y,ie,oe;if(_(M),void 0===(J=this._events))return this;if(void 0===(I=J[U]))return this;if(I===M||I.listener===M)0==--this._eventsCount?this._events=Object.create(null):(delete J[U],J.removeListener&&this.emit("removeListener",U,I.listener||M));else if("function"!=typeof I){for(Y=-1,ie=I.length-1;ie>=0;ie--)if(I[ie]===M||I[ie].listener===M){oe=I[ie].listener,Y=ie;break}if(Y<0)return this;0===Y?I.shift():function(fe,ne){for(;ne+1<fe.length;ne++)fe[ne]=fe[ne+1];fe.pop()}(I,Y),1===I.length&&(J[U]=I[0]),void 0!==J.removeListener&&this.emit("removeListener",U,oe||M)}return this},u.prototype.removeAllListeners=function(U){var M,I,J;if(void 0===(I=this._events))return this;if(void 0===I.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==I[U]&&(0==--this._eventsCount?this._events=Object.create(null):delete I[U]),this;if(0===arguments.length){var Y,ie=Object.keys(I);for(J=0;J<ie.length;++J)"removeListener"!==(Y=ie[J])&&this.removeAllListeners(Y);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(M=I[U]))this.removeListener(U,M);else if(void 0!==M)for(J=M.length-1;J>=0;J--)this.removeListener(U,M[J]);return this},u.prototype.listeners=function(U){return x(this,U,!0)},u.prototype.rawListeners=function(U){return x(this,U,!1)},u.listenerCount=function(U,M){return"function"==typeof U.listenerCount?U.listenerCount(M):j.call(U,M)},u.prototype.listenerCount=j,u.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},function(g,o,t){(o=g.exports=t(402)).Stream=o,o.Readable=o,o.Writable=t(246),o.Duplex=t(119),o.Transform=t(407),o.PassThrough=t(720)},function(g,o,t){"use strict";(function(e,s,a){var l=t(190);function u(ne){var he=this;this.next=null,this.entry=null,this.finish=function(){!function(ce,Ae,Me){var Oe=ce.entry;for(ce.entry=null;Oe;){var be=Oe.callback;Ae.pendingcb--,be(void 0),Oe=Oe.next}Ae.corkedRequestsFree?Ae.corkedRequestsFree.next=ce:Ae.corkedRequestsFree=ce}(he,ne)}}g.exports=M;var h,_=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?s:l.nextTick;M.WritableState=U;var m=Object.create(t(157));m.inherits=t(64);var j,b={deprecate:t(719)},C=t(403),D=t(65).Buffer,x=a.Uint8Array||function(){},H=t(404);function z(){}function U(ne,he){h=h||t(119);var ce=he instanceof h;this.objectMode=!!(ne=ne||{}).objectMode,ce&&(this.objectMode=this.objectMode||!!ne.writableObjectMode);var Ae=ne.highWaterMark,Me=ne.writableHighWaterMark;this.highWaterMark=Ae||0===Ae?Ae:ce&&(Me||0===Me)?Me:this.objectMode?16:16384,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1,this.decodeStrings=!(!1===ne.decodeStrings),this.defaultEncoding=ne.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(ue){!function(He,$e){var nn,F=He._writableState,je=F.sync,Et=F.writecb;if((nn=F).writing=!1,nn.writecb=null,nn.length-=nn.writelen,nn.writelen=0,$e)!function(nn,St,At,Qe,It){--St.pendingcb,At?(l.nextTick(It,Qe),l.nextTick(fe,nn,St),nn._writableState.errorEmitted=!0,nn.emit("error",Qe)):(It(Qe),nn._writableState.errorEmitted=!0,nn.emit("error",Qe),fe(nn,St))}(He,F,je,$e,Et);else{var lt=ie(F);lt||F.corked||F.bufferProcessing||!F.bufferedRequest||Y(He,F),je?_(J,He,F,lt,Et):J(He,F,lt,Et)}}(he,ue)},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 u(this)}function M(ne){if(h=h||t(119),!(j.call(M,this)||this instanceof h))return new M(ne);this._writableState=new U(ne,this),this.writable=!0,ne&&("function"==typeof ne.write&&(this._write=ne.write),"function"==typeof ne.writev&&(this._writev=ne.writev),"function"==typeof ne.destroy&&(this._destroy=ne.destroy),"function"==typeof ne.final&&(this._final=ne.final)),C.call(this)}function I(ne,he,ce,Ae,Me,Oe,be){he.writelen=Ae,he.writecb=be,he.writing=!0,he.sync=!0,ce?ne._writev(Me,he.onwrite):ne._write(Me,Oe,he.onwrite),he.sync=!1}function J(ne,he,ce,Ae){var Me,Oe;ce||(Me=ne,0===(Oe=he).length&&Oe.needDrain&&(Oe.needDrain=!1,Me.emit("drain"))),he.pendingcb--,Ae(),fe(ne,he)}function Y(ne,he){he.bufferProcessing=!0;var ce=he.bufferedRequest;if(ne._writev&&ce&&ce.next){var Me=new Array(he.bufferedRequestCount),Oe=he.corkedRequestsFree;Oe.entry=ce;for(var be=0,ue=!0;ce;)Me[be]=ce,ce.isBuf||(ue=!1),ce=ce.next,be+=1;Me.allBuffers=ue,I(ne,he,!0,he.length,Me,"",Oe.finish),he.pendingcb++,he.lastBufferedRequest=null,Oe.next?(he.corkedRequestsFree=Oe.next,Oe.next=null):he.corkedRequestsFree=new u(he),he.bufferedRequestCount=0}else{for(;ce;){var He=ce.chunk;if(I(ne,he,!1,he.objectMode?1:He.length,He,ce.encoding,ce.callback),ce=ce.next,he.bufferedRequestCount--,he.writing)break}null===ce&&(he.lastBufferedRequest=null)}he.bufferedRequest=ce,he.bufferProcessing=!1}function ie(ne){return ne.ending&&0===ne.length&&null===ne.bufferedRequest&&!ne.finished&&!ne.writing}function oe(ne,he){ne._final(function(ce){he.pendingcb--,ce&&ne.emit("error",ce),he.prefinished=!0,ne.emit("prefinish"),fe(ne,he)})}function fe(ne,he){var Ae,Me,ce=ie(he);return ce&&(Ae=ne,(Me=he).prefinished||Me.finalCalled||("function"==typeof Ae._final?(Me.pendingcb++,Me.finalCalled=!0,l.nextTick(oe,Ae,Me)):(Me.prefinished=!0,Ae.emit("prefinish"))),0===he.pendingcb&&(he.finished=!0,ne.emit("finish"))),ce}m.inherits(M,C),U.prototype.getBuffer=function(){for(var ne=this.bufferedRequest,he=[];ne;)he.push(ne),ne=ne.next;return he},function(){try{Object.defineProperty(U.prototype,"buffer",{get:b.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(ne){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(j=Function.prototype[Symbol.hasInstance],Object.defineProperty(M,Symbol.hasInstance,{value:function(ne){return!!j.call(this,ne)||this===M&&ne&&ne._writableState instanceof U}})):j=function(ne){return ne instanceof this},M.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},M.prototype.write=function(ne,he,ce){var Ae,ue,He,$e,Me=this._writableState,Oe=!1,be=!Me.objectMode&&(D.isBuffer(Ae=ne)||Ae instanceof x);return be&&!D.isBuffer(ne)&&(ne=D.from(ne)),"function"==typeof he&&(ce=he,he=null),be?he="buffer":he||(he=Me.defaultEncoding),"function"!=typeof ce&&(ce=z),Me.ended?(ue=this,He=ce,$e=new Error("write after end"),ue.emit("error",$e),l.nextTick(He,$e)):(be||function(ue,He,$e,F){var je=!0,Et=!1;return null===$e?Et=new TypeError("May not write null values to stream"):"string"==typeof $e||void 0===$e||He.objectMode||(Et=new TypeError("Invalid non-string/buffer chunk")),Et&&(ue.emit("error",Et),l.nextTick(F,Et),je=!1),je}(this,Me,ne,ce))&&(Me.pendingcb++,Oe=function(ue,He,$e,F,je,Et){if(!$e){var lt=(It=F,(Qe=He).objectMode||!1===Qe.decodeStrings||"string"!=typeof It||(It=D.from(It,je)),It);F!==lt&&($e=!0,je="buffer",F=lt)}var Qe,It,nn=He.objectMode?1:F.length;He.length+=nn;var St=He.length<He.highWaterMark;if(St||(He.needDrain=!0),He.writing||He.corked){var At=He.lastBufferedRequest;He.lastBufferedRequest={chunk:F,encoding:je,isBuf:$e,callback:Et,next:null},At?At.next=He.lastBufferedRequest:He.bufferedRequest=He.lastBufferedRequest,He.bufferedRequestCount+=1}else I(ue,He,!1,nn,F,je,Et);return St}(this,Me,be,ne,he,ce)),Oe},M.prototype.cork=function(){this._writableState.corked++},M.prototype.uncork=function(){var ne=this._writableState;ne.corked&&(ne.corked--,ne.writing||ne.corked||ne.finished||ne.bufferProcessing||!ne.bufferedRequest||Y(this,ne))},M.prototype.setDefaultEncoding=function(ne){if("string"==typeof ne&&(ne=ne.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((ne+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+ne);return this._writableState.defaultEncoding=ne,this},Object.defineProperty(M.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),M.prototype._write=function(ne,he,ce){ce(new Error("_write() is not implemented"))},M.prototype._writev=null,M.prototype.end=function(ne,he,ce){var Oe,be,Ae=this._writableState;"function"==typeof ne?(ce=ne,ne=null,he=null):"function"==typeof he&&(ce=he,he=null),null!=ne&&this.write(ne,he),Ae.corked&&(Ae.corked=1,this.uncork()),Ae.ending||Ae.finished||(this,be=ce,(Oe=Ae).ending=!0,fe(this,Oe),be&&(Oe.finished?l.nextTick(be):this.once("finish",be)),Oe.ended=!0,this.writable=!1)},Object.defineProperty(M.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(ne){this._writableState&&(this._writableState.destroyed=ne)}}),M.prototype.destroy=H.destroy,M.prototype._undestroy=H.undestroy,M.prototype._destroy=function(ne,he){this.end(),he(ne)}}).call(this,t(118),t(405).setImmediate,t(57))},function(g,o,t){"use strict";g.exports=t(750)()?Array.from:t(751)},function(g,o,t){"use strict";var e=t(768),s=t(121),a=t(137),l=Array.prototype.indexOf,u=Object.prototype.hasOwnProperty,h=Math.abs,_=Math.floor;g.exports=function(m){var b,C,D;if(!e(m))return l.apply(this,arguments);for(C=s(a(this).length),D=arguments[1],b=D=isNaN(D)?0:D>=0?_(D):s(this.length)-_(h(D));b<C;++b)if(u.call(this,b)&&e(this[b]))return b;return-1}},function(g,o,t){"use strict";(function(e,s){var a=function(u){if("function"!=typeof u)throw new TypeError(u+" is not a function");return u},l=function(u){var h,_,m=document.createTextNode(""),b=0;return new u(function(){var C;if(h)_&&(h=_.concat(h));else{if(!_)return;h=_}if(_=h,h=null,"function"==typeof _)return C=_,_=null,void C();for(m.data=b=++b%2;_;)C=_.shift(),_.length||(_=null),C()}).observe(m,{characterData:!0}),function(C){a(C),h?"function"==typeof h?h=[h,C]:h.push(C):(h=C,m.data=b=++b%2)}};g.exports=function(){if("object"==typeof e&&e&&"function"==typeof e.nextTick)return e.nextTick;if("function"==typeof queueMicrotask)return function(u){queueMicrotask(a(u))};if("object"==typeof document&&document){if("function"==typeof MutationObserver)return l(MutationObserver);if("function"==typeof WebKitMutationObserver)return l(WebKitMutationObserver)}return"function"==typeof s?function(u){s(a(u))}:"function"==typeof setTimeout||"object"==typeof setTimeout?function(u){setTimeout(a(u),0)}:null}()}).call(this,t(118),t(405).setImmediate)},function(g,o,t){"use strict";var e,s=SyntaxError,a=Function,l=TypeError,u=function(ce){try{return a('"use strict"; return ('+ce+").constructor;")()}catch(Ae){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(ce){h=null}var _=function(){throw new l},m=h?function(){try{return _}catch(ce){try{return h(arguments,"callee").get}catch(Ae){return _}}}():_,b=t(925)(),C=Object.getPrototypeOf||function(ce){return ce.__proto__},D={},x="undefined"==typeof Uint8Array?e:C(Uint8Array),j={"%AggregateError%":"undefined"==typeof AggregateError?e:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?e:ArrayBuffer,"%ArrayIteratorPrototype%":b?C([][Symbol.iterator]()):e,"%AsyncFromSyncIteratorPrototype%":e,"%AsyncFunction%":D,"%AsyncGenerator%":D,"%AsyncGeneratorFunction%":D,"%AsyncIteratorPrototype%":D,"%Atomics%":"undefined"==typeof Atomics?e:Atomics,"%BigInt%":"undefined"==typeof BigInt?e:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?e:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?e:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?e:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?e:FinalizationRegistry,"%Function%":a,"%GeneratorFunction%":D,"%Int8Array%":"undefined"==typeof Int8Array?e:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?e:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?e:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":b?C(C([][Symbol.iterator]())):e,"%JSON%":"object"==typeof JSON?JSON:e,"%Map%":"undefined"==typeof Map?e:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&b?C((new Map)[Symbol.iterator]()):e,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?e:Promise,"%Proxy%":"undefined"==typeof Proxy?e:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?e:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?e:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&b?C((new Set)[Symbol.iterator]()):e,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?e:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":b?C(""[Symbol.iterator]()):e,"%Symbol%":b?Symbol:e,"%SyntaxError%":s,"%ThrowTypeError%":m,"%TypedArray%":x,"%TypeError%":l,"%Uint8Array%":"undefined"==typeof Uint8Array?e:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?e:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?e:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?e:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?e:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?e:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?e:WeakSet},H=function ce(Ae){var Me;if("%AsyncFunction%"===Ae)Me=u("async function () {}");else if("%GeneratorFunction%"===Ae)Me=u("function* () {}");else if("%AsyncGeneratorFunction%"===Ae)Me=u("async function* () {}");else if("%AsyncGenerator%"===Ae){var Oe=ce("%AsyncGeneratorFunction%");Oe&&(Me=Oe.prototype)}else if("%AsyncIteratorPrototype%"===Ae){var be=ce("%AsyncGenerator%");be&&(Me=C(be.prototype))}return j[Ae]=Me,Me},z={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},U=t(251),M=t(928),I=U.call(Function.call,Array.prototype.concat),J=U.call(Function.apply,Array.prototype.splice),Y=U.call(Function.call,String.prototype.replace),ie=U.call(Function.call,String.prototype.slice),oe=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,fe=/\\(\\)?/g,ne=function(ce){var Ae=ie(ce,0,1),Me=ie(ce,-1);if("%"===Ae&&"%"!==Me)throw new s("invalid intrinsic syntax, expected closing `%`");if("%"===Me&&"%"!==Ae)throw new s("invalid intrinsic syntax, expected opening `%`");var Oe=[];return Y(ce,oe,function(be,ue,He,$e){Oe[Oe.length]=He?Y($e,fe,"$1"):ue||be}),Oe},he=function(ce,Ae){var Me,Oe=ce;if(M(z,Oe)&&(Oe="%"+(Me=z[Oe])[0]+"%"),M(j,Oe)){var be=j[Oe];if(be===D&&(be=H(Oe)),void 0===be&&!Ae)throw new l("intrinsic "+ce+" exists, but is not available. Please file an issue!");return{alias:Me,name:Oe,value:be}}throw new s("intrinsic "+ce+" does not exist!")};g.exports=function(ce,Ae){if("string"!=typeof ce||0===ce.length)throw new l("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof Ae)throw new l('"allowMissing" argument must be a boolean');var Me=ne(ce),Oe=Me.length>0?Me[0]:"",be=he("%"+Oe+"%",Ae),ue=be.name,He=be.value,$e=!1,F=be.alias;F&&(Oe=F[0],J(Me,I([0,1],F)));for(var je=1,Et=!0;je<Me.length;je+=1){var lt=Me[je],nn=ie(lt,0,1),St=ie(lt,-1);if(('"'===nn||"'"===nn||"`"===nn||'"'===St||"'"===St||"`"===St)&&nn!==St)throw new s("property names with quotes must have matching quotes");if("constructor"!==lt&&Et||($e=!0),M(j,ue="%"+(Oe+="."+lt)+"%"))He=j[ue];else if(null!=He){if(!(lt in He)){if(!Ae)throw new l("base intrinsic for "+ce+" exists, but the property is not available.");return}if(h&&je+1>=Me.length){var At=h(He,lt);He=(Et=!!At)&&"get"in At&&!("originalValue"in At.get)?At.get:He[lt]}else Et=M(He,lt),He=He[lt];Et&&!$e&&(j[ue]=He)}}return He}},function(g,o,t){"use strict";var e=t(927);g.exports=Function.prototype.bind||e},function(g,o,t){"use strict";var e=String.prototype.replace,s=/%20/g,l="RFC3986";g.exports={default:l,formatters:{RFC1738:function(u){return e.call(u,s,"+")},RFC3986:function(u){return String(u)}},RFC1738:"RFC1738",RFC3986:l}},function(g,o,t){"use strict";t(77);var e=t(22),s=t(17),a=t(58),l=t(50),u=t(27),h=t(446),_=t(99),m=t(158),b=t(100),C=t(340),D=t(76),x=t(139),j=t(41),H=t(44),z=t(84),U=t(75),M=t(51),I=t(43),J=t(67),Y=t(98),ie=t(94),oe=t(239),fe=t(154),ne=t(38),he=t(382),ce=ne("iterator"),Ae="URLSearchParams",Me="URLSearchParamsIterator",Oe=D.set,be=D.getterFor(Ae),ue=D.getterFor(Me),He=a("fetch"),$e=a("Request"),F=a("Headers"),je=$e&&$e.prototype,Et=F&&F.prototype,lt=s.RegExp,nn=s.TypeError,St=s.decodeURIComponent,At=s.encodeURIComponent,Qe=u("".charAt),It=u([].join),ae=u([].push),Ie=u("".replace),dt=u([].shift),Jt=u([].splice),zt=u("".split),ln=u("".slice),ar=/\+/g,Ln=Array(4),Rn=function(jn){return Ln[jn-1]||(Ln[jn-1]=lt("((?:%[\\da-f]{2}){"+jn+"})","gi"))},er=function(jn){try{return St(jn)}catch(Xt){return jn}},Mn=function(jn){var Xt=Ie(jn,ar," "),ut=4;try{return St(Xt)}catch(mt){for(;ut;)Xt=Ie(Xt,Rn(ut--),er);return Xt}},Ht=/[!'()~]|%20/g,tr={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Yn=function(jn){return tr[jn]},Cn=function(jn){return Ie(At(jn),Ht,Yn)},Kt=function(jn,Xt){if(Xt)for(var ut,mt,Tt=zt(Xt,"&"),yn=0;yn<Tt.length;)(ut=Tt[yn++]).length&&(mt=zt(ut,"="),ae(jn,{key:Mn(dt(mt)),value:Mn(It(mt,"="))}))},dn=function(jn){this.entries.length=0,Kt(this.entries,jn)},Kn=function(jn,Xt){if(jn<Xt)throw nn("Not enough arguments")},qn=C(function(jn,Xt){Oe(this,{type:Me,iterator:oe(be(jn).entries),kind:Xt})},"Iterator",function(){var jn=ue(this),Xt=jn.kind,ut=jn.iterator.next(),mt=ut.value;return ut.done||(ut.value="keys"===Xt?mt.key:"values"===Xt?mt.value:[mt.key,mt.value]),ut}),Sn=function(){x(this,$n);var jn,Xt,ut,mt,Tt,yn,et,jt,hn,Qn=arguments.length>0?arguments[0]:void 0,Ir=this,ht=[];if(Oe(Ir,{type:Ae,entries:ht,updateURL:function(){},updateSearchParams:dn}),void 0!==Qn)if(I(Qn))if(jn=fe(Qn))for(ut=(Xt=oe(Qn,jn)).next;!(mt=l(ut,Xt)).done;){if(yn=(Tt=oe(M(mt.value))).next,(et=l(yn,Tt)).done||(jt=l(yn,Tt)).done||!l(yn,Tt).done)throw nn("Expected sequence with length 2");ae(ht,{key:J(et.value),value:J(jt.value)})}else for(hn in Qn)H(Qn,hn)&&ae(ht,{key:hn,value:J(Qn[hn])});else Kt(ht,"string"==typeof Qn?"?"===Qe(Qn,0)?ln(Qn,1):Qn:J(Qn))},$n=Sn.prototype;if(m($n,{append:function(jn,Xt){Kn(arguments.length,2);var ut=be(this);ae(ut.entries,{key:J(jn),value:J(Xt)}),ut.updateURL()},delete:function(jn){Kn(arguments.length,1);for(var Xt=be(this),ut=Xt.entries,mt=J(jn),Tt=0;Tt<ut.length;)ut[Tt].key===mt?Jt(ut,Tt,1):Tt++;Xt.updateURL()},get:function(jn){Kn(arguments.length,1);for(var Xt=be(this).entries,ut=J(jn),mt=0;mt<Xt.length;mt++)if(Xt[mt].key===ut)return Xt[mt].value;return null},getAll:function(jn){Kn(arguments.length,1);for(var Xt=be(this).entries,ut=J(jn),mt=[],Tt=0;Tt<Xt.length;Tt++)Xt[Tt].key===ut&&ae(mt,Xt[Tt].value);return mt},has:function(jn){Kn(arguments.length,1);for(var Xt=be(this).entries,ut=J(jn),mt=0;mt<Xt.length;)if(Xt[mt++].key===ut)return!0;return!1},set:function(jn,Xt){Kn(arguments.length,1);for(var ut,mt=be(this),Tt=mt.entries,yn=!1,et=J(jn),jt=J(Xt),hn=0;hn<Tt.length;hn++)(ut=Tt[hn]).key===et&&(yn?Jt(Tt,hn--,1):(yn=!0,ut.value=jt));yn||ae(Tt,{key:et,value:jt}),mt.updateURL()},sort:function(){var jn=be(this);he(jn.entries,function(Xt,ut){return Xt.key>ut.key?1:-1}),jn.updateURL()},forEach:function(jn){for(var Xt,ut=be(this).entries,mt=z(jn,arguments.length>1?arguments[1]:void 0),Tt=0;Tt<ut.length;)mt((Xt=ut[Tt++]).value,Xt.key,this)},keys:function(){return new qn(this,"keys")},values:function(){return new qn(this,"values")},entries:function(){return new qn(this,"entries")}},{enumerable:!0}),_($n,ce,$n.entries,{name:"entries"}),_($n,"toString",function(){for(var jn,Xt=be(this).entries,ut=[],mt=0;mt<Xt.length;)jn=Xt[mt++],ae(ut,Cn(jn.key)+"="+Cn(jn.value));return It(ut,"&")},{enumerable:!0}),b(Sn,Ae),e({global:!0,forced:!h},{URLSearchParams:Sn}),!h&&j(F)){var En=u(Et.has),Fn=u(Et.set),Dn=function(jn){if(I(jn)){var Xt,ut=jn.body;if(U(ut)===Ae)return Xt=jn.headers?new F(jn.headers):new F,En(Xt,"content-type")||Fn(Xt,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),Y(jn,{body:ie(0,J(ut)),headers:ie(0,Xt)})}return jn};if(j(He)&&e({global:!0,enumerable:!0,forced:!0},{fetch:function(jn){return He(jn,arguments.length>1?Dn(arguments[1]):{})}}),j($e)){var mn=function(jn){return x(this,je),new $e(jn,arguments.length>1?Dn(arguments[1]):{})};je.constructor=mn,mn.prototype=je,e({global:!0,forced:!0},{Request:mn})}}g.exports={URLSearchParams:Sn,getState:be}},function(g,o,t){var e=t(663)("toUpperCase");g.exports=e},function(g,o,t){var e=t(228);function s(a,l){if("function"!=typeof a||null!=l&&"function"!=typeof l)throw new TypeError("Expected a function");var u=function(){var h=arguments,_=l?l.apply(this,h):h[0],m=u.cache;if(m.has(_))return m.get(_);var b=a.apply(this,h);return u.cache=m.set(_,b)||m,b};return u.cache=new(s.Cache||e),u}s.Cache=e,g.exports=s},function(g,o,t){"use strict";t.r(o);var e=t(257),s=t(60),a=t(260);o.default=function(l){return{statePlugins:{err:{reducers:Object(e.default)(l),actions:s,selectors:a}}}}},function(g,o,t){"use strict";t.r(o);var e=t(3),s=t.n(e),a=t(21),l=t.n(a),u=t(4),h=t.n(u),_=t(2),m=t.n(_),b=t(12),C=t.n(b),D=t(197),x=t.n(D),j=t(60),H=t(1),z=t(127),U={line:0,level:"error",message:"Unknown error"};o.default=function(){var M;return M={},s()(M,j.NEW_THROWN_ERR,function(I,J){var Y=J.payload,ie=l()(U,Y,{type:"thrown"});return I.update("errors",function(oe){return(oe||Object(H.List)()).push(Object(H.fromJS)(ie))}).update("errors",function(oe){return Object(z.default)(oe)})}),s()(M,j.NEW_THROWN_ERR_BATCH,function(I,J){var Y=J.payload;return Y=h()(Y).call(Y,function(ie){return Object(H.fromJS)(l()(U,ie,{type:"thrown"}))}),I.update("errors",function(ie){var oe;return m()(oe=ie||Object(H.List)()).call(oe,Object(H.fromJS)(Y))}).update("errors",function(ie){return Object(z.default)(ie)})}),s()(M,j.NEW_SPEC_ERR,function(I,J){var Y=J.payload,ie=Object(H.fromJS)(Y);return ie=ie.set("type","spec"),I.update("errors",function(oe){return(oe||Object(H.List)()).push(Object(H.fromJS)(ie)).sortBy(function(fe){return fe.get("line")})}).update("errors",function(oe){return Object(z.default)(oe)})}),s()(M,j.NEW_SPEC_ERR_BATCH,function(I,J){var Y=J.payload;return Y=h()(Y).call(Y,function(ie){return Object(H.fromJS)(l()(U,ie,{type:"spec"}))}),I.update("errors",function(ie){var oe;return m()(oe=ie||Object(H.List)()).call(oe,Object(H.fromJS)(Y))}).update("errors",function(ie){return Object(z.default)(ie)})}),s()(M,j.NEW_AUTH_ERR,function(I,J){var Y=J.payload,ie=Object(H.fromJS)(l()({},Y));return ie=ie.set("type","auth"),I.update("errors",function(oe){return(oe||Object(H.List)()).push(Object(H.fromJS)(ie))}).update("errors",function(oe){return Object(z.default)(oe)})}),s()(M,j.CLEAR,function(I,J){var Y,ie=J.payload;if(!ie||!I.get("errors"))return I;var oe=C()(Y=I.get("errors")).call(Y,function(fe){var ne;return x()(ne=fe.keySeq()).call(ne,function(he){var ce=fe.get(he),Ae=ie[he];return!Ae||ce!==Ae})});return I.merge({errors:oe})}),s()(M,j.CLEAR_BY,function(I,J){var Y,ie=J.payload;if(!ie||"function"!=typeof ie)return I;var oe=C()(Y=I.get("errors")).call(Y,function(fe){return ie(fe)});return I.merge({errors:oe})}),M}},function(g,o,t){"use strict";t.r(o),t.d(o,"transform",function(){return b});var e=t(4),s=t.n(e),a=t(18),l=t.n(a),u=t(20),h=t.n(u),_=t(30),m=t.n(_);function b(C){return s()(C).call(C,function(D){var x,I,j="is not of a type(s)",H=l()(x=D.get("message")).call(x,j);if(H>-1){var z,U,M=h()(z=D.get("message")).call(z,H+j.length).split(",");return D.set("message",h()(U=D.get("message")).call(U,0,H)+(I=M,m()(I).call(I,function(J,Y,ie,oe){return ie===oe.length-1&&oe.length>1?J+"or "+Y:oe[ie+1]&&oe.length>2?J+Y+", ":oe[ie+1]?J+Y+" ":J+Y},"should be a")))}return D})}},function(g,o,t){"use strict";function e(s,a){return s}t.r(o),t.d(o,"transform",function(){return e}),t(4),t(18),t(39),t(1)},function(g,o,t){"use strict";t.r(o),t.d(o,"allErrors",function(){return a}),t.d(o,"lastError",function(){return l});var e=t(1),s=t(16),a=Object(s.a)(function(u){return u},function(u){return u.get("errors",Object(e.List)())}),l=Object(s.a)(a,function(u){return u.last()})},function(g,o,t){"use strict";t.r(o);var e=t(262),s=t(109),a=t(263),l=t(264);o.default=function(){return{statePlugins:{layout:{reducers:e.default,actions:s,selectors:a},spec:{wrapSelectors:l}}}}},function(g,o,t){"use strict";t.r(o);var e,s=t(3),a=t.n(s),l=t(2),u=t.n(l),h=t(1),_=t(109);o.default=(e={},a()(e,_.UPDATE_LAYOUT,function(m,b){return m.set("layout",b.payload)}),a()(e,_.UPDATE_FILTER,function(m,b){return m.set("filter",b.payload)}),a()(e,_.SHOW,function(m,b){var C=b.payload.shown,D=Object(h.fromJS)(b.payload.thing);return m.update("shown",Object(h.fromJS)({}),function(x){return x.set(D,C)})}),a()(e,_.UPDATE_MODE,function(m,b){var C,D=b.payload.thing,x=b.payload.mode;return m.setIn(u()(C=["modes"]).call(C,D),(x||"")+"")}),e)},function(g,o,t){"use strict";t.r(o),t.d(o,"current",function(){return m}),t.d(o,"currentFilter",function(){return b}),t.d(o,"isShown",function(){return C}),t.d(o,"whatMode",function(){return D}),t.d(o,"showSummary",function(){return x});var e=t(14),s=t.n(e),a=t(2),l=t.n(a),u=t(16),h=t(5),_=t(1),m=function(j){return j.get("layout")},b=function(j){return j.get("filter")},C=function(j,H,z){return H=Object(h.v)(H),j.get("shown",Object(_.fromJS)({})).get(Object(_.fromJS)(H),z)},D=function(j,H){var z,U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return H=Object(h.v)(H),j.getIn(l()(z=["modes"]).call(z,s()(H)),U)},x=Object(u.a)(function(j){return j},function(j){return!C(j,"editor")})},function(g,o,t){"use strict";t.r(o),t.d(o,"taggedOperations",function(){return u});var e=t(2),s=t.n(e),a=t(20),l=t.n(a),u=function(h,_){return function(m){for(var b,C=arguments.length,D=new Array(C>1?C-1:0),x=1;x<C;x++)D[x-1]=arguments[x];var j=h.apply(void 0,s()(b=[m]).call(b,D)),H=_.getSystem(),z=H.fn,U=H.layoutSelectors,M=H.getConfigs,I=M(),J=I.maxDisplayedTags,Y=U.currentFilter();return Y&&!0!==Y&&"true"!==Y&&"false"!==Y&&(j=z.opsFilter(j,Y)),J&&!isNaN(J)&&J>=0&&(j=l()(j).call(j,0,J)),j}}},function(g,o,t){"use strict";t.r(o);var e=t(266),s=t(46),a=t(88),l=t(267);o.default=function(){return{statePlugins:{spec:{wrapActions:l,reducers:e.default,actions:s,selectors:a}}}}},function(g,o,t){"use strict";t.r(o);var e,s=t(3),a=t.n(s),l=t(14),u=t.n(l),h=t(2),_=t.n(h),m=t(30),b=t.n(m),C=t(4),D=t.n(C),x=t(21),j=t.n(x),H=t(1),z=t(5),U=t(26),M=t(88),I=t(46);o.default=(e={},a()(e,I.UPDATE_SPEC,function(J,Y){return"string"==typeof Y.payload?J.set("spec",Y.payload):J}),a()(e,I.UPDATE_URL,function(J,Y){return J.set("url",Y.payload+"")}),a()(e,I.UPDATE_JSON,function(J,Y){return J.set("json",Object(z.i)(Y.payload))}),a()(e,I.UPDATE_RESOLVED,function(J,Y){return J.setIn(["resolved"],Object(z.i)(Y.payload))}),a()(e,I.UPDATE_RESOLVED_SUBTREE,function(J,Y){var ie,oe=Y.payload,fe=oe.value,ne=oe.path;return J.setIn(_()(ie=["resolvedSubtrees"]).call(ie,u()(ne)),Object(z.i)(fe))}),a()(e,I.UPDATE_PARAM,function(J,Y){var ie,oe,fe=Y.payload,ne=fe.path,he=fe.paramName,ce=fe.paramIn,Ae=fe.param,Me=fe.value,Oe=fe.isXml,be=Ae?Object(z.A)(Ae):_()(ie="".concat(ce,".")).call(ie,he),ue=Oe?"value_xml":"value";return J.setIn(_()(oe=["meta","paths"]).call(oe,u()(ne),["parameters",be,ue]),Me)}),a()(e,I.UPDATE_EMPTY_PARAM_INCLUSION,function(J,Y){var ie,oe,fe=Y.payload,ne=fe.pathMethod,he=fe.paramName,ce=fe.paramIn,Ae=fe.includeEmptyValue;if(!he||!ce)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),J;var Me=_()(ie="".concat(ce,".")).call(ie,he);return J.setIn(_()(oe=["meta","paths"]).call(oe,u()(ne),["parameter_inclusions",Me]),Ae)}),a()(e,I.VALIDATE_PARAMS,function(J,Y){var ie,oe,fe=Y.payload,ne=fe.pathMethod,he=fe.isOAS3,ce=Object(M.specJsonWithResolvedSubtrees)(J).getIn(_()(ie=["paths"]).call(ie,u()(ne))),Ae=Object(M.parameterValues)(J,ne).toJS();return J.updateIn(_()(oe=["meta","paths"]).call(oe,u()(ne),["parameters"]),Object(H.fromJS)({}),function(Me){var Oe;return b()(Oe=ce.get("parameters",Object(H.List)())).call(Oe,function(be,ue){var He=Object(z.B)(ue,Ae),$e=Object(M.parameterInclusionSettingFor)(J,ne,ue.get("name"),ue.get("in")),F=Object(z.K)(ue,He,{bypassRequiredCheck:$e,isOAS3:he});return be.setIn([Object(z.A)(ue),"errors"],Object(H.fromJS)(F))},Me)})}),a()(e,I.CLEAR_VALIDATE_PARAMS,function(J,Y){var ie,oe=Y.payload.pathMethod;return J.updateIn(_()(ie=["meta","paths"]).call(ie,u()(oe),["parameters"]),Object(H.fromJS)([]),function(fe){return D()(fe).call(fe,function(ne){return ne.set("errors",Object(H.fromJS)([]))})})}),a()(e,I.SET_RESPONSE,function(J,Y){var ie,oe=Y.payload,fe=oe.res,ne=oe.path,he=oe.method;(ie=fe.error?j()({error:!0,name:fe.err.name,message:fe.err.message,statusCode:fe.err.statusCode},fe.err.response):fe).headers=ie.headers||{};var ce=J.setIn(["responses",ne,he],Object(z.i)(ie));return U.a.Blob&&fe.data instanceof U.a.Blob&&(ce=ce.setIn(["responses",ne,he,"text"],fe.data)),ce}),a()(e,I.SET_REQUEST,function(J,Y){var ie=Y.payload,oe=ie.req;return J.setIn(["requests",ie.path,ie.method],Object(z.i)(oe))}),a()(e,I.SET_MUTATED_REQUEST,function(J,Y){var ie=Y.payload,oe=ie.req;return J.setIn(["mutatedRequests",ie.path,ie.method],Object(z.i)(oe))}),a()(e,I.UPDATE_OPERATION_META_VALUE,function(J,Y){var ie,oe,fe,ne,he,ce,Ae=Y.payload,Me=Ae.path,Oe=Ae.value,be=Ae.key,ue=_()(ie=["paths"]).call(ie,u()(Me)),He=_()(oe=["meta","paths"]).call(oe,u()(Me));return J.getIn(_()(fe=["json"]).call(fe,u()(ue)))||J.getIn(_()(ne=["resolved"]).call(ne,u()(ue)))||J.getIn(_()(he=["resolvedSubtrees"]).call(he,u()(ue)))?J.setIn(_()(ce=[]).call(ce,u()(He),[be]),Object(H.fromJS)(Oe)):J}),a()(e,I.CLEAR_RESPONSE,function(J,Y){var ie=Y.payload;return J.deleteIn(["responses",ie.path,ie.method])}),a()(e,I.CLEAR_REQUEST,function(J,Y){var ie=Y.payload;return J.deleteIn(["requests",ie.path,ie.method])}),a()(e,I.SET_SCHEME,function(J,Y){var ie=Y.payload,oe=ie.scheme,fe=ie.path,ne=ie.method;return fe&&ne?J.setIn(["scheme",fe,ne],oe):fe||ne?void 0:J.setIn(["scheme","_defaultScheme"],oe)}),e)},function(g,o,t){"use strict";t.r(o),t.d(o,"updateSpec",function(){return _}),t.d(o,"updateJsonSpec",function(){return m}),t.d(o,"executeRequest",function(){return b}),t.d(o,"validateParams",function(){return C});var e=t(15),s=t.n(e),a=t(23),l=t.n(a),u=t(39),h=t.n(u),_=function(D,x){var j=x.specActions;return function(){D.apply(void 0,arguments),j.parseToJson.apply(j,arguments)}},m=function(D,x){var j=x.specActions;return function(){for(var H=arguments.length,z=new Array(H),U=0;U<H;U++)z[U]=arguments[U];D.apply(void 0,z),j.invalidateResolvedSubtreeCache();var M=z[0],I=h()(M,["paths"])||{},J=s()(I);l()(J).call(J,function(Y){h()(I,[Y]).$ref&&j.requestResolvedSubtree(["paths",Y])}),j.requestResolvedSubtree(["components","securitySchemes"])}},b=function(D,x){var j=x.specActions;return function(H){return j.logRequest(H),D(H)}},C=function(D,x){var j=x.specSelectors;return function(H){return D(H,j.isOAS3())}}},function(g,o,t){"use strict";t.r(o);var e=t(37),s=t.n(e),a=t(165),l=t(5),u=t(270),h=t(160);o.default=function(_){var m=_.getComponents,b=_.getStore,C=_.getSystem,D=a.getComponent,x=a.render,j=a.makeMappedContainer,H=Object(l.u)(s()(D).call(D,null,C,b,m));return{rootInjects:{getComponent:H,makeMappedContainer:Object(l.u)(s()(j).call(j,null,C,b,H,m)),render:s()(x).call(x,null,C,b,D,m)},components:{ErrorBoundary:u.default,Fallback:h.default}}}},function(g,o,t){"use strict";g.exports=t(880)},function(g,o,t){"use strict";t.r(o),t.d(o,"ErrorBoundary",function(){return x});var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(8),h=t.n(u),_=t(9),m=t.n(_),b=(t(11),t(0)),C=t.n(b),D=t(160),x=function(j){h()(z,j);var H=m()(z);function z(U){var M;return s()(this,z),(M=H.call(this,U)).state={hasError:!1,error:null},M}return l()(z,[{key:"componentDidCatch",value:function(U,M){console.error(U,M)}},{key:"render",value:function(){var U=this.props,I=U.targetName,J=U.children,Y=(0,U.getComponent)("Fallback");return this.state.hasError?C.a.createElement(Y,{name:I}):J}}],[{key:"getDerivedStateFromError",value:function(U){return{hasError:!0,error:U}}}]),z}(b.Component);x.defaultProps={targetName:"this component",getComponent:function(){return D.default},children:null},o.default=x},function(g,o,t){"use strict";t.r(o);var e=t(142);o.default=function(){return{fn:e}}},function(g,o,t){"use strict";t.r(o);var e=t(161),s=t(273),a=t(274);o.default=function(){return{components:{RequestSnippets:a.RequestSnippets},fn:e,statePlugins:{requestSnippets:{selectors:s}}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"getGenerators",function(){return C}),t.d(o,"getSnippetGenerators",function(){return D}),t.d(o,"getActiveLanguage",function(){return x}),t.d(o,"getDefaultExpanded",function(){return j});var e=t(12),s=t.n(e),a=t(31),l=t.n(a),u=t(4),h=t.n(u),_=t(16),m=t(1),b=function(H){return H||Object(m.Map)()},C=Object(_.a)(b,function(H){var z=H.get("languages"),U=H.get("generators",Object(m.Map)());return!z||z.isEmpty()?U:s()(U).call(U,function(M,I){return l()(z).call(z,I)})}),D=function(H){return function(z){var U,M,I=z.fn;return s()(U=h()(M=C(H)).call(M,function(J,Y){var ie=I["requestSnippetGenerator_".concat(Y)];return"function"!=typeof ie?null:J.set("fn",ie)})).call(U,function(J){return J})}},x=Object(_.a)(b,function(H){return H.get("activeLanguage")}),j=Object(_.a)(b,function(H){return H.get("defaultExpanded")})},function(g,o,t){"use strict";t.r(o),t.d(o,"RequestSnippets",function(){return J});var e=t(13),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(4),x=t.n(D),j=t(0),H=t.n(j),z=t(143),U=(t(11),t(39)),M=t.n(U),I=t(91),J=function(Y){m()(oe,Y);var ie=C()(oe);function oe(){var fe,ne,he,ce,Ae,Me;return l()(this,oe),(Me=ie.call(this)).state={activeLanguage:null===(fe=Me.props)||void 0===fe||null===(ne=fe.requestSnippetsSelectors)||void 0===ne||null===(he=ne.getSnippetGenerators())||void 0===he?void 0:he.keySeq().first(),expanded:null===(ce=Me.props)||void 0===ce||null===(Ae=ce.requestSnippetsSelectors)||void 0===Ae?void 0:Ae.getDefaultExpanded()},Me}return h()(oe,[{key:"render",value:function(){var fe,ne,he,ce,Ae=this,Me=this.props,Oe=Me.request,be=Me.getConfigs,ue=Me.requestSnippetsSelectors.getSnippetGenerators(),He=this.state.activeLanguage||ue.keySeq().first(),$e=ue.get(He),F=$e.get("fn")(Oe),je={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},Et={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},lt=function(Qe){return Qe===He?Et:je},nn=be(),St=null!=nn&&null!==(fe=nn.syntaxHighlight)&&void 0!==fe&&fe.activated?H.a.createElement(I.a,{language:$e.get("syntax"),className:"curl microlight",onWheel:function(Qe){return this.preventYScrollingBeyondElement(Qe)},style:Object(I.b)(M()(nn,"syntaxHighlight.theme"))},F):H.a.createElement("textarea",{readOnly:!0,className:"curl",value:F}),At=void 0===this.state.expanded?null===(ne=this.props)||void 0===ne||null===(he=ne.requestSnippetsSelectors)||void 0===he?void 0:he.getDefaultExpanded():this.state.expanded;return H.a.createElement("div",null,H.a.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},H.a.createElement("h4",{style:{cursor:"pointer"},onClick:function(){return Ae.setState({expanded:!At})}},"Snippets"),H.a.createElement("button",{onClick:function(){return Ae.setState({expanded:!At})},style:{border:"none",background:"none"},title:At?"Collapse operation":"Expand operation"},H.a.createElement("svg",{className:"arrow",width:"10",height:"10"},H.a.createElement("use",{href:At?"#large-arrow-down":"#large-arrow",xlinkHref:At?"#large-arrow-down":"#large-arrow"})))),At&&H.a.createElement("div",{className:"curl-command"},H.a.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},x()(ce=ue.entrySeq()).call(ce,function(Qe){var It=s()(Qe,2),ae=It[0],Ie=It[1];return H.a.createElement("div",{style:lt(ae),className:"btn",key:ae,onClick:function(){var dt;He!==(dt=ae)&&Ae.setState({activeLanguage:dt})}},H.a.createElement("h4",{style:ae===He?{color:"white"}:{}},Ie.get("title")))})),H.a.createElement("div",{className:"copy-to-clipboard"},H.a.createElement(z.CopyToClipboard,{text:F},H.a.createElement("button",null))),H.a.createElement("div",null,St)))}}]),oe}(H.a.Component)},function(g,o,t){"use strict";t.r(o);var e=t(37),s=t.n(e);o.default=function(a){var u={debug:0,info:1,log:2,warn:3,error:4},h=function(C){return u[C]||-1},m=h(a.configs.logLevel);function b(C){for(var D,x=arguments.length,j=new Array(x>1?x-1:0),H=1;H<x;H++)j[H-1]=arguments[H];h(C)>=m&&(D=console)[C].apply(D,j)}return b.warn=s()(b).call(b,null,"warn"),b.error=s()(b).call(b,null,"error"),b.info=s()(b).call(b,null,"info"),b.debug=s()(b).call(b,null,"debug"),{rootInjects:{log:b}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"loaded",function(){return e});var e=function(s,a){return function(){s.apply(void 0,arguments);var l=a.getConfigs().withCredentials;void 0!==l&&(a.fn.fetch.withCredentials="string"==typeof l?"true"===l:!!l)}}},function(g,o,t){"use strict";t.r(o),t.d(o,"preauthorizeBasic",function(){return D}),t.d(o,"preauthorizeApiKey",function(){return x});var e=t(3),s=t.n(e),a=t(37),l=t.n(a),u=t(2),h=t.n(u),_=t(278),m=t(82),b=t(279),C=t(280);function D(j,H,z,U){var M,I=j.authActions.authorize,J=j.specSelectors,Y=J.specJson,ie=(0,J.isOAS3)()?["components","securitySchemes"]:["securityDefinitions"],oe=Y().getIn(h()(M=[]).call(M,ie,[H]));return oe?I(s()({},H,{value:{username:z,password:U},schema:oe.toJS()})):null}function x(j,H,z){var U,M=j.authActions.authorize,I=j.specSelectors,J=I.specJson,Y=(0,I.isOAS3)()?["components","securitySchemes"]:["securityDefinitions"],ie=J().getIn(h()(U=[]).call(U,Y,[H]));return ie?M(s()({},H,{value:z,schema:ie.toJS()})):null}o.default=function(){return{afterLoad:function(j){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=j.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=l()(x).call(x,null,j),this.rootInjects.preauthorizeBasic=l()(D).call(D,null,j)},statePlugins:{auth:{reducers:_.default,actions:m,selectors:b},spec:{wrapActions:C}}}}},function(g,o,t){"use strict";t.r(o);var e,s=t(3),a=t.n(s),l=t(13),u=t.n(l),h=t(23),_=t.n(h),m=t(21),b=t.n(m),C=t(1),D=t(5),x=t(82);o.default=(e={},a()(e,x.SHOW_AUTH_POPUP,function(j,H){return j.set("showDefinitions",H.payload)}),a()(e,x.AUTHORIZE,function(j,H){var z,U=H.payload,M=Object(C.fromJS)(U),I=j.get("authorized")||Object(C.Map)();return _()(z=M.entrySeq()).call(z,function(J){var Y=u()(J,2),ie=Y[0],oe=Y[1];if(!Object(D.s)(oe.getIn))return j.set("authorized",I);var fe=oe.getIn(["schema","type"]);if("apiKey"===fe||"http"===fe)I=I.set(ie,oe);else if("basic"===fe){var ne=oe.getIn(["value","username"]),he=oe.getIn(["value","password"]);I=(I=I.setIn([ie,"value"],{username:ne,header:"Basic "+Object(D.a)(ne+":"+he)})).setIn([ie,"schema"],oe.get("schema"))}}),j.set("authorized",I)}),a()(e,x.AUTHORIZE_OAUTH2,function(j,H){var z,U=H.payload,M=U.auth,I=U.token;M.token=b()({},I),z=Object(C.fromJS)(M);var J=j.get("authorized")||Object(C.Map)();return J=J.set(z.get("name"),z),j.set("authorized",J)}),a()(e,x.LOGOUT,function(j,H){var z=H.payload,U=j.get("authorized").withMutations(function(M){_()(z).call(z,function(I){M.delete(I)})});return j.set("authorized",U)}),a()(e,x.CONFIGURE_AUTH,function(j,H){return j.set("configs",H.payload)}),a()(e,x.RESTORE_AUTHORIZATION,function(j,H){var z=H.payload;return j.set("authorized",Object(C.fromJS)(z.authorized))}),e)},function(g,o,t){"use strict";t.r(o),t.d(o,"shownDefinitions",function(){return I}),t.d(o,"definitionsToAuthorize",function(){return J}),t.d(o,"getDefinitionsByNames",function(){return Y}),t.d(o,"definitionsForRequirements",function(){return ie}),t.d(o,"authorized",function(){return oe}),t.d(o,"isAuthorized",function(){return fe}),t.d(o,"getConfigs",function(){return ne});var e=t(13),s=t.n(e),a=t(23),l=t.n(a),u=t(12),h=t.n(u),_=t(71),m=t.n(_),b=t(18),C=t.n(b),D=t(4),x=t.n(D),j=t(15),H=t.n(j),z=t(16),U=t(1),M=function(he){return he},I=Object(z.a)(M,function(he){return he.get("showDefinitions")}),J=Object(z.a)(M,function(){return function(he){var ce,Ae=he.specSelectors.securityDefinitions()||Object(U.Map)({}),Me=Object(U.List)();return l()(ce=Ae.entrySeq()).call(ce,function(Oe){var be=s()(Oe,2),ue=be[0],He=be[1],$e=Object(U.Map)();$e=$e.set(ue,He),Me=Me.push($e)}),Me}}),Y=function(he,ce){return function(Ae){var Me,Oe=Ae.specSelectors;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");var be=Oe.securityDefinitions(),ue=Object(U.List)();return l()(Me=ce.valueSeq()).call(Me,function(He){var $e,F=Object(U.Map)();l()($e=He.entrySeq()).call($e,function(je){var Et,lt,nn=s()(je,2),St=nn[0],At=nn[1],Qe=be.get(St);"oauth2"===Qe.get("type")&&At.size&&(Et=Qe.get("scopes"),l()(lt=Et.keySeq()).call(lt,function(It){At.contains(It)||(Et=Et.delete(It))}),Qe=Qe.set("allowedScopes",Et)),F=F.set(St,Qe)}),ue=ue.push(F)}),ue}},ie=function(he){var ce=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object(U.List)();return function(Ae){var Me=Ae.authSelectors.definitionsToAuthorize()||Object(U.List)();return h()(Me).call(Me,function(Oe){return m()(ce).call(ce,function(be){return be.get(Oe.keySeq().first())})})}},oe=Object(z.a)(M,function(he){return he.get("authorized")||Object(U.Map)()}),fe=function(he,ce){return function(Ae){var Me,Oe=Ae.authSelectors.authorized();return U.List.isList(ce)?!!h()(Me=ce.toJS()).call(Me,function(be){var ue,He;return-1===C()(ue=x()(He=H()(be)).call(He,function($e){return!!Oe.get($e)})).call(ue,!1)}).length:null}},ne=Object(z.a)(M,function(he){return he.get("configs")})},function(g,o,t){"use strict";t.r(o),t.d(o,"execute",function(){return a});var e=t(25),s=t.n(e),a=function(l,u){var h=u.authSelectors,_=u.specSelectors;return function(m){var b=m.path,C=m.method,D=m.operation,x=m.extras,j={authorized:h.authorized()&&h.authorized().toJS(),definitions:_.securityDefinitions()&&_.securityDefinitions().toJS(),specSecurity:_.security()&&_.security().toJS()};return l(s()({path:b,method:C,operation:D,securities:j},x))}}},function(g,o,t){"use strict";t.r(o);var e=t(5);o.default=function(){return{fn:{shallowEqualKeys:e.G}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return H});var e=t(21),s=t.n(e),a=t(90),l=t.n(a),u=t(2),h=t.n(u),_=t(18),m=t.n(_),b=t(32),C=t.n(b),D=t(16),x=t(1),j=t(26);function H(z){var U=z.fn;return{statePlugins:{spec:{actions:{download:function(M){return function(I){var J=I.errActions,Y=I.specSelectors,ie=I.specActions,fe=U.fetch,ne=(0,I.getConfigs)();function he(ce){if(ce instanceof Error||ce.status>=400)return ie.updateLoadingStatus("failed"),J.newThrownErr(s()(new Error((ce.message||ce.statusText)+" "+M),{source:"fetch"})),void(!ce.status&&ce instanceof Error&&function(){try{var Ae;if("URL"in j.a?Ae=new l.a(M):(Ae=document.createElement("a")).href=M,"https:"!==Ae.protocol&&"https:"===j.a.location.protocol){var Me=s()(new Error("Possible mixed-content issue? The page was loaded over https:// but a ".concat(Ae.protocol,"// URL was specified. Check that you are not attempting to load mixed content.")),{source:"fetch"});return void J.newThrownErr(Me)}if(Ae.origin!==j.a.location.origin){var Oe,be=s()(new Error(h()(Oe="Possible cross-origin (CORS) issue? The URL origin (".concat(Ae.origin,") does not match the page (")).call(Oe,j.a.location.origin,"). Check the server returns the correct 'Access-Control-Allow-*' headers.")),{source:"fetch"});J.newThrownErr(be)}}catch(ue){return}}());ie.updateLoadingStatus("success"),ie.updateSpec(ce.text),Y.url()!==M&&ie.updateUrl(M)}M=M||Y.url(),ie.updateLoadingStatus("loading"),J.clear({source:"fetch"}),fe({url:M,loadSpec:!0,requestInterceptor:ne.requestInterceptor||function(ce){return ce},responseInterceptor:ne.responseInterceptor||function(ce){return ce},credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(he,he)}},updateLoadingStatus:function(M){var I,J=[null,"loading","failed","success","failedConfig"];return-1===m()(J).call(J,M)&&console.error(h()(I="Error: ".concat(M," is not one of ")).call(I,C()(J))),{type:"spec_update_loading_status",payload:M}}},reducers:{spec_update_loading_status:function(M,I){return"string"==typeof I.payload?M.set("loadingStatus",I.payload):M}},selectors:{loadingStatus:Object(D.a)(function(M){return M||Object(x.Map)()},function(M){return M.get("loadingStatus")||null})}}}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"downloadConfig",function(){return s}),t.d(o,"getConfigByUrl",function(){return a});var e=t(162),s=function(l){return function(u){return(0,u.fn.fetch)(l)}},a=function(l,u){return function(h){var _=h.specActions;if(l)return _.downloadConfig(l).then(m,m);function m(b){b instanceof Error||b.status>=400?(_.updateLoadingStatus("failedConfig"),_.updateLoadingStatus("failedConfig"),_.updateUrl(""),console.error(b.statusText+" "+l.url),u(null)):u(Object(e.parseYamlConfig)(b.text))}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"get",function(){return a});var e=t(24),s=t.n(e),a=function(l,u){return l.getIn(s()(u)?u:[u])}},function(g,o,t){"use strict";t.r(o);var e,s=t(3),a=t.n(s),l=t(1),u=t(144);o.default=(e={},a()(e,u.UPDATE_CONFIGS,function(h,_){return h.merge(Object(l.fromJS)(_.payload))}),a()(e,u.TOGGLE_CONFIGS,function(h,_){var m=_.payload,b=h.get(m);return h.set(m,!b)}),e)},function(g,o,t){"use strict";t.r(o);var e=t(287),s=t(288),a=t(289);o.default=function(){return[e.default,{statePlugins:{configs:{wrapActions:{loaded:function(l,u){return function(){l.apply(void 0,arguments);var h=decodeURIComponent(window.location.hash);u.layoutActions.parseDeepLinkHash(h)}}}}},wrapComponents:{operation:s.default,OperationTag:a.default}}]}},function(g,o,t){"use strict";t.r(o),t.d(o,"show",function(){return ne}),t.d(o,"scrollTo",function(){return he}),t.d(o,"parseDeepLinkHash",function(){return ce}),t.d(o,"readyToScroll",function(){return Ae}),t.d(o,"scrollToElement",function(){return Me}),t.d(o,"clearScrollTo",function(){return Oe});var e,s=t(3),a=t.n(s),l=t(13),u=t.n(l),h=t(24),_=t.n(h),m=t(2),b=t.n(m),C=t(20),D=t.n(C),x=t(4),j=t.n(x),H=t(18),z=t.n(H),U=t(164),M=t(475),I=t.n(M),J=t(5),Y=t(1),ie=t.n(Y),oe="layout_scroll_to",fe="layout_clear_scroll",ne=function(be,ue){var He=ue.getConfigs,$e=ue.layoutSelectors;return function(){for(var F=arguments.length,je=new Array(F),Et=0;Et<F;Et++)je[Et]=arguments[Et];if(be.apply(void 0,je),He().deepLinking)try{var lt=je[0],nn=je[1];lt=_()(lt)?lt:[lt];var St=$e.urlHashArrayFromIsShownKey(lt);if(!St.length)return;var At,Qe=u()(St,2),It=Qe[0],ae=Qe[1];if(!nn)return Object(U.setHash)("/");2===St.length?Object(U.setHash)(Object(J.d)(b()(At="/".concat(encodeURIComponent(It),"/")).call(At,encodeURIComponent(ae)))):1===St.length&&Object(U.setHash)(Object(J.d)("/".concat(encodeURIComponent(It))))}catch(Ie){console.error(Ie)}}},he=function(be){return{type:oe,payload:_()(be)?be:[be]}},ce=function(be){return function(ue){var He=ue.layoutActions,$e=ue.layoutSelectors;if((0,ue.getConfigs)().deepLinking&&be){var F,je=D()(be).call(be,1);"!"===je[0]&&(je=D()(je).call(je,1)),"/"===je[0]&&(je=D()(je).call(je,1));var Et=j()(F=je.split("/")).call(F,function(dt){return dt||""}),lt=$e.isShownKeyFromUrlHashArray(Et),nn=u()(lt,3),At=nn[1],Qe=void 0===At?"":At,It=nn[2],ae=void 0===It?"":It;if("operations"===nn[0]){var Ie=$e.isShownKeyFromUrlHashArray([Qe]);z()(Qe).call(Qe,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),He.show(j()(Ie).call(Ie,function(dt){return dt.replace(/_/g," ")}),!0)),He.show(Ie,!0)}(z()(Qe).call(Qe,"_")>-1||z()(ae).call(ae,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),He.show(j()(lt).call(lt,function(dt){return dt.replace(/_/g," ")}),!0)),He.show(lt,!0),He.scrollTo(lt)}}},Ae=function(be,ue){return function(He){var $e=He.layoutSelectors.getScrollToKey();ie.a.is($e,Object(Y.fromJS)(be))&&(He.layoutActions.scrollToElement(ue),He.layoutActions.clearScrollTo())}},Me=function(be,ue){return function(He){try{ue=ue||He.fn.getScrollParent(be),I.a.createScroller(ue).to(be)}catch($e){console.error($e)}}},Oe=function(){return{type:fe}};o.default={fn:{getScrollParent:function(be,ue){var He=document.documentElement,$e=getComputedStyle(be),F="absolute"===$e.position,je=ue?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===$e.position)return He;for(var Et=be;Et=Et.parentElement;)if($e=getComputedStyle(Et),(!F||"static"!==$e.position)&&je.test($e.overflow+$e.overflowY+$e.overflowX))return Et;return He}},statePlugins:{layout:{actions:{scrollToElement:Me,scrollTo:he,clearScrollTo:Oe,readyToScroll:Ae,parseDeepLinkHash:ce},selectors:{getScrollToKey:function(be){return be.get("scrollToKey")},isShownKeyFromUrlHashArray:function(be,ue){var He=u()(ue,2),$e=He[0],F=He[1];return F?["operations",$e,F]:$e?["operations-tag",$e]:[]},urlHashArrayFromIsShownKey:function(be,ue){var He=u()(ue,3),$e=He[0],F=He[1];return"operations"==$e?[F,He[2]]:"operations-tag"==$e?[F]:[]}},reducers:(e={},a()(e,oe,function(be,ue){return be.set("scrollToKey",ie.a.fromJS(ue.payload))}),a()(e,fe,function(be){return be.delete("scrollToKey")}),e),wrapActions:{show:ne}}}}},function(g,o,t){"use strict";t.r(o);var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(10),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(3),x=t.n(D),j=t(2),H=t.n(j),z=t(0),U=t.n(z);t(28),o.default=function(M,I){return function(J){m()(ie,J);var Y=C()(ie);function ie(){var oe,fe;s()(this,ie);for(var ne=arguments.length,he=new Array(ne),ce=0;ce<ne;ce++)he[ce]=arguments[ce];return fe=Y.call.apply(Y,H()(oe=[this]).call(oe,he)),x()(h()(fe),"onLoad",function(Ae){var Me=fe.props.operation,Oe=Me.toObject(),be=Oe.tag,ue=Oe.operationId,He=Me.toObject().isShownKey;I.layoutActions.readyToScroll(He=He||["operations",be,ue],Ae)}),fe}return l()(ie,[{key:"render",value:function(){return U.a.createElement("span",{ref:this.onLoad},U.a.createElement(M,this.props))}}]),ie}(U.a.Component)}},function(g,o,t){"use strict";t.r(o);var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(10),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(3),x=t.n(D),j=t(2),H=t.n(j),z=t(0),U=t.n(z);t(11),o.default=function(M,I){return function(J){m()(ie,J);var Y=C()(ie);function ie(){var oe,fe;s()(this,ie);for(var ne=arguments.length,he=new Array(ne),ce=0;ce<ne;ce++)he[ce]=arguments[ce];return fe=Y.call.apply(Y,H()(oe=[this]).call(oe,he)),x()(h()(fe),"onLoad",function(Ae){I.layoutActions.readyToScroll(["operations-tag",fe.props.tag],Ae)}),fe}return l()(ie,[{key:"render",value:function(){return U.a.createElement("span",{ref:this.onLoad},U.a.createElement(M,this.props))}}]),ie}(U.a.Component)}},function(g,o,t){"use strict";t.r(o);var e=t(291);o.default=function(){return{fn:{opsFilter:e.default}}}},function(g,o,t){"use strict";t.r(o);var e=t(12),s=t.n(e),a=t(18),l=t.n(a);o.default=function(u,h){return s()(u).call(u,function(_,m){return-1!==l()(m).call(m,h)})}},function(g,o,t){"use strict";t.r(o);var e=t(202),s=t.n(e),a=!1;o.default=function(){return{statePlugins:{spec:{wrapActions:{updateSpec:function(l){return function(){return a=!0,l.apply(void 0,arguments)}},updateJsonSpec:function(l,u){return function(){var h=u.getConfigs().onComplete;return a&&"function"==typeof h&&(s()(h,0),a=!1),l.apply(void 0,arguments)}}}}}}}},function(g,o,t){"use strict";t.r(o);var e=t(294),s=t(295),a=t(296),l=t(297),u=t(305),h=t(55),_=t(312),m=t(313);o.default=function(){return{components:l.default,wrapComponents:u.default,statePlugins:{spec:{wrapSelectors:e,selectors:a},auth:{wrapSelectors:s},oas3:{actions:h,reducers:m.default,selectors:_}}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"definitions",function(){return D}),t.d(o,"hasHost",function(){return x}),t.d(o,"securityDefinitions",function(){return j}),t.d(o,"host",function(){return H}),t.d(o,"basePath",function(){return z}),t.d(o,"consumes",function(){return U}),t.d(o,"produces",function(){return M}),t.d(o,"schemes",function(){return I}),t.d(o,"servers",function(){return J}),t.d(o,"isOAS3",function(){return Y}),t.d(o,"isSwagger2",function(){return ie});var e=t(16),s=t(88),a=t(1),l=t(36);function u(oe){return function(fe,ne){return function(){var he=ne.getSystem().specSelectors.specJson();return Object(l.isOAS3)(he)?oe.apply(void 0,arguments):fe.apply(void 0,arguments)}}}var h=function(oe){return oe||Object(a.Map)()},_=u(Object(e.a)(function(){return null})),m=Object(e.a)(h,function(oe){return oe.get("json",Object(a.Map)())}),b=Object(e.a)(h,function(oe){return oe.get("resolved",Object(a.Map)())}),C=function(oe){var fe=b(oe);return fe.count()<1&&(fe=m(oe)),fe},D=u(Object(e.a)(C,function(oe){var fe=oe.getIn(["components","schemas"]);return a.Map.isMap(fe)?fe:Object(a.Map)()})),x=u(function(oe){return C(oe).hasIn(["servers",0])}),j=u(Object(e.a)(s.specJsonWithResolvedSubtrees,function(oe){return oe.getIn(["components","securitySchemes"])||null})),H=_,z=_,U=_,M=_,I=_,J=u(Object(e.a)(C,function(oe){return oe.getIn(["servers"])||Object(a.Map)()})),Y=function(oe,fe){return function(){var ne=fe.getSystem().specSelectors.specJson();return Object(l.isOAS3)(a.Map.isMap(ne)?ne:Object(a.Map)())}},ie=function(oe,fe){return function(){var ne=fe.getSystem().specSelectors.specJson();return Object(l.isSwagger2)(a.Map.isMap(ne)?ne:Object(a.Map)())}}},function(g,o,t){"use strict";t.r(o),t.d(o,"definitionsToAuthorize",function(){return M});var U,e=t(3),s=t.n(e),a=t(13),l=t.n(a),u=t(2),h=t.n(u),_=t(23),m=t.n(_),b=t(12),C=t.n(b),D=t(30),x=t.n(D),j=t(16),H=t(1),z=t(36),M=(U=Object(j.a)(function(I){return I},function(I){return I.specSelectors.securityDefinitions()},function(I,J){var Y,ie=Object(H.List)();return J&&m()(Y=J.entrySeq()).call(Y,function(oe){var fe,ne=l()(oe,2),he=ne[0],ce=ne[1],Ae=ce.get("type");if("oauth2"===Ae&&m()(fe=ce.get("flows").entrySeq()).call(fe,function(be){var ue=l()(be,2),He=ue[0],$e=ue[1],F=Object(H.fromJS)({flow:He,authorizationUrl:$e.get("authorizationUrl"),tokenUrl:$e.get("tokenUrl"),scopes:$e.get("scopes"),type:ce.get("type"),description:ce.get("description")});ie=ie.push(new H.Map(s()({},he,C()(F).call(F,function(je){return void 0!==je}))))}),"http"!==Ae&&"apiKey"!==Ae||(ie=ie.push(new H.Map(s()({},he,ce)))),"openIdConnect"===Ae&&ce.get("openIdConnectData")){var Me=ce.get("openIdConnectData"),Oe=Me.get("grant_types_supported")||["authorization_code","implicit"];m()(Oe).call(Oe,function(be){var ue,He=Me.get("scopes_supported")&&x()(ue=Me.get("scopes_supported")).call(ue,function(F,je){return F.set(je,"")},new H.Map),$e=Object(H.fromJS)({flow:be,authorizationUrl:Me.get("authorization_endpoint"),tokenUrl:Me.get("token_endpoint"),scopes:He,type:"oauth2",openIdConnectUrl:ce.get("openIdConnectUrl")});ie=ie.push(new H.Map(s()({},he,C()($e).call($e,function(F){return void 0!==F}))))})}}),ie}),function(I,J){return function(){for(var Y=J.getSystem().specSelectors.specJson(),ie=arguments.length,oe=new Array(ie),fe=0;fe<ie;fe++)oe[fe]=arguments[fe];if(Object(z.isOAS3)(Y)){var ne,he=J.getState().getIn(["spec","resolvedSubtrees","components","securitySchemes"]);return U.apply(void 0,h()(ne=[J,he]).call(ne,oe))}return I.apply(void 0,oe)}})},function(g,o,t){"use strict";t.r(o),t.d(o,"servers",function(){return m}),t.d(o,"isSwagger2",function(){return b});var l,e=t(16),s=t(1),a=t(36),u=function(C){return C||Object(s.Map)()},h=Object(e.a)(u,function(C){return C.get("json",Object(s.Map)())}),_=Object(e.a)(u,function(C){return C.get("resolved",Object(s.Map)())}),m=(l=Object(e.a)(function(C){var D=_(C);return D.count()<1&&(D=h(C)),D},function(C){return C.getIn(["servers"])||Object(s.Map)()}),function(){return function(C){var D=C.getSystem().specSelectors.specJson();if(Object(a.isOAS3)(D)){for(var x=arguments.length,j=new Array(x>1?x-1:0),H=1;H<x;H++)j[H-1]=arguments[H];return l.apply(void 0,j)}return null}}),b=function(C,D){return function(){var x=D.getSystem().specSelectors.specJson();return Object(a.isSwagger2)(x)}}},function(g,o,t){"use strict";t.r(o);var e=t(298),s=t(163),a=t(299),l=t(300),u=t(301),h=t(302),_=t(303),m=t(304);o.default={Callbacks:e.default,HttpAuth:_.default,RequestBody:s.default,Servers:l.default,ServersContainer:u.default,RequestBodyEditor:h.default,OperationServers:m.default,operationLink:a.default}},function(g,o,t){"use strict";t.r(o);var e=t(29),s=t.n(e),a=t(13),l=t.n(a),u=t(4),h=t.n(u),_=t(0),m=t.n(_),b=(t(11),t(28),t(1));o.default=function(C){var D,x=C.callbacks,H=C.specPath,z=(0,C.getComponent)("OperationContainer",!0);if(!x)return m.a.createElement("span",null,"No callbacks");var U=h()(D=x.entrySeq()).call(D,function(M){var I,J=l()(M,2),Y=J[0],ie=J[1];return m.a.createElement("div",{key:Y},m.a.createElement("h2",null,Y),h()(I=ie.entrySeq()).call(I,function(oe){var fe,ne=l()(oe,2),he=ne[0],ce=ne[1];return"$$ref"===he?null:m.a.createElement("div",{key:he},h()(fe=ce.entrySeq()).call(fe,function(Ae){var Me=l()(Ae,2),Oe=Me[0],be=Me[1];if("$$ref"===Oe)return null;var ue=Object(b.fromJS)({operation:be});return m.a.createElement(z,s()({},C,{op:ue,key:Oe,tag:"",method:Oe,path:he,specPath:H.push(Y,he,Oe),allowTryItOut:!1}))}))}))});return m.a.createElement("div",null,U)}},function(g,o,t){"use strict";t.r(o);var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(8),h=t.n(u),_=t(9),m=t.n(_),b=t(32),C=t.n(b),D=t(4),x=t.n(D),j=t(0),H=t.n(j),z=(t(11),t(28),function(U){h()(I,U);var M=m()(I);function I(){return s()(this,I),M.apply(this,arguments)}return l()(I,[{key:"render",value:function(){var Ae,Me,J=this.props,Y=J.link,ie=J.name,oe=(0,J.getComponent)("Markdown",!0),fe=Y.get("operationId")||Y.get("operationRef"),ne=Y.get("parameters")&&Y.get("parameters").toJS(),he=Y.get("description");return H.a.createElement("div",{className:"operation-link"},H.a.createElement("div",{className:"description"},H.a.createElement("b",null,H.a.createElement("code",null,ie)),he?H.a.createElement(oe,{source:he}):null),H.a.createElement("pre",null,"Operation `",fe,"`",H.a.createElement("br",null),H.a.createElement("br",null),"Parameters ",("string"!=typeof(Ae=C()(ne,null,2))?"":x()(Me=Ae.split("\n")).call(Me,function(Oe,be){return be>0?Array(1).join(" ")+Oe:Oe}).join("\n"))||"{}",H.a.createElement("br",null)))}}]),I}(j.Component));o.default=z},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return ne});var e=t(13),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(10),m=t.n(_),b=t(8),C=t.n(b),D=t(9),x=t.n(D),j=t(3),H=t.n(j),z=t(2),U=t.n(z),M=t(56),I=t.n(M),J=t(4),Y=t.n(J),ie=t(0),oe=t.n(ie),fe=t(1),ne=(t(11),t(28),function(he){C()(Ae,he);var ce=x()(Ae);function Ae(){var Me,Oe;l()(this,Ae);for(var be=arguments.length,ue=new Array(be),He=0;He<be;He++)ue[He]=arguments[He];return Oe=ce.call.apply(ce,U()(Me=[this]).call(Me,ue)),H()(m()(Oe),"onServerChange",function($e){Oe.setServer($e.target.value)}),H()(m()(Oe),"onServerVariableValueChange",function($e){var F=Oe.props,je=F.setServerVariableValue,Et=F.currentServer,lt=$e.target.getAttribute("data-variable");"function"==typeof je&&je({server:Et,key:lt,val:$e.target.value})}),H()(m()(Oe),"setServer",function($e){(0,Oe.props.setSelectedServer)($e)}),Oe}return h()(Ae,[{key:"componentDidMount",value:function(){var Me,Oe=this.props;Oe.currentServer||this.setServer(null===(Me=Oe.servers.first())||void 0===Me?void 0:Me.get("url"))}},{key:"UNSAFE_componentWillReceiveProps",value:function(Me){var Oe=Me.servers,be=Me.setServerVariableValue,ue=Me.getServerVariable;if(this.props.currentServer!==Me.currentServer||this.props.servers!==Me.servers){var He=I()(Oe).call(Oe,function(F){return F.get("url")===Me.currentServer});if(!He)return this.setServer(Oe.first().get("url"));var $e=He.get("variables")||Object(fe.OrderedMap)();Y()($e).call($e,function(F,je){ue(Me.currentServer,je)||be({server:Me.currentServer,key:je,val:F.get("default")||""})})}}},{key:"render",value:function(){var Me,Oe,be=this,ue=this.props,He=ue.servers,$e=ue.currentServer,F=ue.getServerVariable,je=ue.getEffectiveServerValue,Et=(I()(He).call(He,function(nn){return nn.get("url")===$e})||Object(fe.OrderedMap)()).get("variables")||Object(fe.OrderedMap)(),lt=0!==Et.size;return oe.a.createElement("div",{className:"servers"},oe.a.createElement("label",{htmlFor:"servers"},oe.a.createElement("select",{onChange:this.onServerChange,value:$e},Y()(Me=He.valueSeq()).call(Me,function(nn){return oe.a.createElement("option",{value:nn.get("url"),key:nn.get("url")},nn.get("url"),nn.get("description")&&" - ".concat(nn.get("description")))}).toArray())),lt?oe.a.createElement("div",null,oe.a.createElement("div",{className:"computed-url"},"Computed URL:",oe.a.createElement("code",null,je($e))),oe.a.createElement("h4",null,"Server variables"),oe.a.createElement("table",null,oe.a.createElement("tbody",null,Y()(Oe=Et.entrySeq()).call(Oe,function(nn){var St,At=s()(nn,2),Qe=At[0],It=At[1];return oe.a.createElement("tr",{key:Qe},oe.a.createElement("td",null,Qe),oe.a.createElement("td",null,It.get("enum")?oe.a.createElement("select",{"data-variable":Qe,onChange:be.onServerVariableValueChange},Y()(St=It.get("enum")).call(St,function(ae){return oe.a.createElement("option",{selected:ae===F($e,Qe),key:ae,value:ae},ae)})):oe.a.createElement("input",{type:"text",value:F($e,Qe)||"",onChange:be.onServerVariableValueChange,"data-variable":Qe})))})))):null)}}]),Ae}(oe.a.Component))},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return D});var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(8),h=t.n(u),_=t(9),m=t.n(_),b=t(0),C=t.n(b),D=(t(11),function(x){h()(H,x);var j=m()(H);function H(){return s()(this,H),j.apply(this,arguments)}return l()(H,[{key:"render",value:function(){var z=this.props,M=z.oas3Selectors,I=z.oas3Actions,J=z.getComponent,Y=z.specSelectors.servers(),ie=J("Servers");return Y&&Y.size?C.a.createElement("div",null,C.a.createElement("span",{className:"servers-title"},"Servers"),C.a.createElement(ie,{servers:Y,currentServer:M.selectedServer(),setSelectedServer:I.setSelectedServer,setServerVariableValue:I.setServerVariableValue,getServerVariable:M.serverVariableValue,getEffectiveServerValue:M.serverEffectiveValue})):null}}]),H}(C.a.Component))},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return J});var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(10),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(3),x=t.n(D),j=t(0),H=t.n(j),z=(t(11),t(47)),U=t.n(z),M=t(5),I=Function.prototype,J=function(Y){m()(oe,Y);var ie=C()(oe);function oe(fe,ne){var he;return s()(this,oe),he=ie.call(this,fe,ne),x()(h()(he),"applyDefaultValue",function(ce){var Ae=ce||he.props,Me=Ae.onChange,Oe=Ae.defaultValue;return he.setState({value:Oe}),Me(Oe)}),x()(h()(he),"onChange",function(ce){he.props.onChange(Object(M.I)(ce))}),x()(h()(he),"onDomChange",function(ce){var Ae=ce.target.value;he.setState({value:Ae},function(){return he.onChange(Ae)})}),he.state={value:Object(M.I)(fe.value)||fe.defaultValue},fe.onChange(fe.value),he}return l()(oe,[{key:"UNSAFE_componentWillReceiveProps",value:function(fe){this.props.value!==fe.value&&fe.value!==this.state.value&&this.setState({value:Object(M.I)(fe.value)}),!fe.value&&fe.defaultValue&&this.state.value&&this.applyDefaultValue(fe)}},{key:"render",value:function(){var fe=this.props,he=fe.errors,ce=this.state.value,Ae=he.size>0,Me=(0,fe.getComponent)("TextArea");return H.a.createElement("div",{className:"body-param"},H.a.createElement(Me,{className:U()("body-param__text",{invalid:Ae}),title:he.size?he.join(", "):"",value:ce,onChange:this.onDomChange}))}}]),oe}(j.PureComponent);x()(J,"defaultProps",{onChange:I,userHasEditedBody:!1})},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return ie});var e=t(6),s=t.n(e),a=t(7),l=t.n(a),u=t(10),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(3),x=t.n(D),j=t(21),H=t.n(j),z=t(12),U=t.n(z),M=t(4),I=t.n(M),J=t(0),Y=t.n(J),ie=(t(11),function(oe){m()(ne,oe);var fe=C()(ne);function ne(he,ce){var Ae;s()(this,ne),Ae=fe.call(this,he,ce),x()(h()(Ae),"onChange",function(He){var $e=Ae.props.onChange,F=He.target,je=F.value,Et=F.name,lt=H()({},Ae.state.value);Et?lt[Et]=je:lt=je,Ae.setState({value:lt},function(){return $e(Ae.state)})});var Me=Ae.props,Oe=Me.name,be=Me.schema,ue=Ae.getValue();return Ae.state={name:Oe,schema:be,value:ue},Ae}return l()(ne,[{key:"getValue",value:function(){var he=this.props,Ae=he.authorized;return Ae&&Ae.getIn([he.name,"value"])}},{key:"render",value:function(){var he,ce,Ae=this.props,Me=Ae.schema,Oe=Ae.getComponent,be=Ae.errSelectors,ue=Ae.name,He=Oe("Input"),$e=Oe("Row"),F=Oe("Col"),je=Oe("authError"),Et=Oe("Markdown",!0),lt=Oe("JumpToPath",!0),nn=(Me.get("scheme")||"").toLowerCase(),St=this.getValue(),At=U()(he=be.allErrors()).call(he,function(ae){return ae.get("authId")===ue});if("basic"===nn){var Qe,It=St?St.get("username"):null;return Y.a.createElement("div",null,Y.a.createElement("h4",null,Y.a.createElement("code",null,ue||Me.get("name")),"\xa0 (http, Basic)",Y.a.createElement(lt,{path:["securityDefinitions",ue]})),It&&Y.a.createElement("h6",null,"Authorized"),Y.a.createElement($e,null,Y.a.createElement(Et,{source:Me.get("description")})),Y.a.createElement($e,null,Y.a.createElement("label",null,"Username:"),It?Y.a.createElement("code",null," ",It," "):Y.a.createElement(F,null,Y.a.createElement(He,{type:"text",required:"required",name:"username",onChange:this.onChange,autoFocus:!0}))),Y.a.createElement($e,null,Y.a.createElement("label",null,"Password:"),It?Y.a.createElement("code",null," ****** "):Y.a.createElement(F,null,Y.a.createElement(He,{autoComplete:"new-password",name:"password",type:"password",onChange:this.onChange}))),I()(Qe=At.valueSeq()).call(Qe,function(ae,Ie){return Y.a.createElement(je,{error:ae,key:Ie})}))}return"bearer"===nn?Y.a.createElement("div",null,Y.a.createElement("h4",null,Y.a.createElement("code",null,ue||Me.get("name")),"\xa0 (http, Bearer)",Y.a.createElement(lt,{path:["securityDefinitions",ue]})),St&&Y.a.createElement("h6",null,"Authorized"),Y.a.createElement($e,null,Y.a.createElement(Et,{source:Me.get("description")})),Y.a.createElement($e,null,Y.a.createElement("label",null,"Value:"),St?Y.a.createElement("code",null," ****** "):Y.a.createElement(F,null,Y.a.createElement(He,{type:"text",onChange:this.onChange,autoFocus:!0}))),I()(ce=At.valueSeq()).call(ce,function(ae,Ie){return Y.a.createElement(je,{error:ae,key:Ie})})):Y.a.createElement("div",null,Y.a.createElement("em",null,Y.a.createElement("b",null,ue)," HTTP authentication: unsupported scheme ","'".concat(nn,"'")))}}]),ne}(Y.a.Component))},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return J});var e=t(25),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(10),m=t.n(_),b=t(8),C=t.n(b),D=t(9),x=t.n(D),j=t(3),H=t.n(j),z=t(2),U=t.n(z),M=t(0),I=t.n(M),J=(t(11),t(28),function(Y){C()(oe,Y);var ie=x()(oe);function oe(){var fe,ne;l()(this,oe);for(var he=arguments.length,ce=new Array(he),Ae=0;Ae<he;Ae++)ce[Ae]=arguments[Ae];return ne=ie.call.apply(ie,U()(fe=[this]).call(fe,ce)),H()(m()(ne),"setSelectedServer",function(Me){var Oe,be=ne.props,ue=be.path,He=be.method;return ne.forceUpdate(),ne.props.setSelectedServer(Me,U()(Oe="".concat(ue,":")).call(Oe,He))}),H()(m()(ne),"setServerVariableValue",function(Me){var Oe,be=ne.props,ue=be.path,He=be.method;return ne.forceUpdate(),ne.props.setServerVariableValue(s()(s()({},Me),{},{namespace:U()(Oe="".concat(ue,":")).call(Oe,He)}))}),H()(m()(ne),"getSelectedServer",function(){var Me,Oe=ne.props,be=Oe.path,ue=Oe.method;return ne.props.getSelectedServer(U()(Me="".concat(be,":")).call(Me,ue))}),H()(m()(ne),"getServerVariable",function(Me,Oe){var be,ue=ne.props,He=ue.path,$e=ue.method;return ne.props.getServerVariable({namespace:U()(be="".concat(He,":")).call(be,$e),server:Me},Oe)}),H()(m()(ne),"getEffectiveServerValue",function(Me){var Oe,be=ne.props,ue=be.path,He=be.method;return ne.props.getEffectiveServerValue({server:Me,namespace:U()(Oe="".concat(ue,":")).call(Oe,He)})}),ne}return h()(oe,[{key:"render",value:function(){var fe=this.props,ne=fe.operationServers,he=fe.pathServers;if(!ne&&!he)return null;var Ae=(0,fe.getComponent)("Servers"),Me=ne||he,Oe=ne?"operation":"path";return I.a.createElement("div",{className:"opblock-section operation-servers"},I.a.createElement("div",{className:"opblock-section-header"},I.a.createElement("div",{className:"tab-header"},I.a.createElement("h4",{className:"opblock-title"},"Servers"))),I.a.createElement("div",{className:"opblock-description-wrapper"},I.a.createElement("h4",{className:"message"},"These ",Oe,"-level options override the global server options."),I.a.createElement(Ae,{servers:Me,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}]),oe}(I.a.Component))},function(g,o,t){"use strict";t.r(o);var e=t(306),s=t(307),a=t(308),l=t(309),u=t(310),h=t(311);o.default={Markdown:e.default,AuthItem:s.default,JsonSchema_string:h.default,VersionStamp:a.default,model:u.default,onlineValidatorBadge:l.default}},function(g,o,t){"use strict";t.r(o),t.d(o,"Markdown",function(){return D});var e=t(105),s=t.n(e),a=t(0),l=t.n(a),u=(t(11),t(47)),h=t.n(u),_=t(204),m=t(36),b=t(205),C=new _.a("commonmark");C.block.ruler.enable(["table"]),C.set({linkTarget:"_blank"});var D=function(x){var j=x.source,H=x.className,z=void 0===H?"":H;if("string"!=typeof j)return null;if(j){var M,I=(0,x.getConfigs)().useUnsafeMarkdown,J=C.render(j),Y=Object(b.b)(J,{useUnsafeMarkdown:I});return"string"==typeof Y&&(M=s()(Y).call(Y)),l.a.createElement("div",{dangerouslySetInnerHTML:{__html:M},className:h()(z,"renderedMarkdown")})}return null};D.defaultProps={getConfigs:function(){return{useUnsafeMarkdown:!1}}},o.default=Object(m.OAS3ComponentWrapFactory)(D)},function(g,o,t){"use strict";t.r(o);var e=t(54),s=t.n(e),a=t(0),l=t.n(a),u=t(36),h=["Ori"];o.default=Object(u.OAS3ComponentWrapFactory)(function(_){var m=_.Ori,b=s()(_,h),C=b.schema,D=b.getComponent,x=b.errSelectors,j=b.authorized,H=b.onAuthChange,z=b.name,U=D("HttpAuth");return"http"===C.get("type")?l.a.createElement(U,{key:z,schema:C,name:z,errSelectors:x,authorized:j,getComponent:D,onChange:H}):l.a.createElement(m,b)})},function(g,o,t){"use strict";t.r(o);var e=t(0),s=t.n(e),a=t(36);o.default=Object(a.OAS3ComponentWrapFactory)(function(l){return s.a.createElement("span",null,s.a.createElement(l.Ori,l),s.a.createElement("small",{className:"version-stamp"},s.a.createElement("pre",{className:"version"},"OAS3")))})},function(g,o,t){"use strict";t.r(o);var e=t(36),s=t(203);o.default=Object(e.OAS3ComponentWrapFactory)(s.a)},function(g,o,t){"use strict";t.r(o);var e=t(29),s=t.n(e),a=t(6),l=t.n(a),u=t(7),h=t.n(u),_=t(8),m=t.n(_),b=t(9),C=t.n(b),D=t(0),x=t.n(D),j=(t(11),t(36)),H=t(206),z=function(U){m()(I,U);var M=C()(I);function I(){return l()(this,I),M.apply(this,arguments)}return h()(I,[{key:"render",value:function(){var J=this.props,Y=J.getConfigs,ie=["model-box"],oe=null;return!0===J.schema.get("deprecated")&&(ie.push("deprecated"),oe=x.a.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),x.a.createElement("div",{className:ie.join(" ")},oe,x.a.createElement(H.a,s()({},this.props,{getConfigs:Y,depth:1,expandDepth:this.props.expandDepth||0})))}}]),I}(D.Component);o.default=Object(j.OAS3ComponentWrapFactory)(z)},function(g,o,t){"use strict";t.r(o);var e=t(54),s=t.n(e),a=t(0),l=t.n(a),u=t(36),h=["Ori"];o.default=Object(u.OAS3ComponentWrapFactory)(function(_){var m=_.Ori,b=s()(_,h),C=b.schema,D=b.getComponent,x=b.errors,j=b.onChange,H=C&&C.get?C.get("format"):null,z=C&&C.get?C.get("type"):null,U=D("Input");return z&&"string"===z&&H&&("binary"===H||"base64"===H)?l.a.createElement(U,{type:"file",className:x.length?"invalid":"",title:x.length?x:"",onChange:function(M){j(M.target.files[0])},disabled:m.isDisabled}):l.a.createElement(m,b)})},function(g,o,t){"use strict";t.r(o),t.d(o,"selectedServer",function(){return J}),t.d(o,"requestBodyValue",function(){return Y}),t.d(o,"shouldRetainRequestBodyValue",function(){return ie}),t.d(o,"hasUserEditedBody",function(){return oe}),t.d(o,"requestBodyInclusionSetting",function(){return fe}),t.d(o,"requestBodyErrors",function(){return ne}),t.d(o,"activeExamplesMember",function(){return he}),t.d(o,"requestContentType",function(){return ce}),t.d(o,"responseContentType",function(){return Ae}),t.d(o,"serverVariableValue",function(){return Me}),t.d(o,"serverVariables",function(){return Oe}),t.d(o,"serverEffectiveValue",function(){return be}),t.d(o,"validateBeforeExecute",function(){return ue}),t.d(o,"validateShallowRequired",function(){return He});var e=t(14),s=t.n(e),a=t(2),l=t.n(a),u=t(4),h=t.n(u),_=t(23),m=t.n(_),b=t(15),C=t.n(b),D=t(18),x=t.n(D),j=t(1),H=t(36),z=t(163),U=t(5);function M($e){return function(){for(var F=arguments.length,je=new Array(F),Et=0;Et<F;Et++)je[Et]=arguments[Et];return function(lt){var nn=lt.getSystem().specSelectors.specJson();return Object(H.isOAS3)(nn)?$e.apply(void 0,je):null}}}var I,J=M(function($e,F){return $e.getIn(F?[F,"selectedServer"]:["selectedServer"])||""}),Y=M(function($e,F,je){return $e.getIn(["requestData",F,je,"bodyValue"])||null}),ie=M(function($e,F,je){return $e.getIn(["requestData",F,je,"retainBodyValue"])||!1}),oe=function($e,F,je){return function(Et){var lt=Et.getSystem(),nn=lt.oas3Selectors,St=lt.specSelectors,At=St.specJson();if(Object(H.isOAS3)(At)){var Qe=!1,It=nn.requestContentType(F,je),ae=nn.requestBodyValue(F,je);if(j.Map.isMap(ae)&&(ae=Object(U.I)(ae.mapEntries(function(dt){return j.Map.isMap(dt[1])?[dt[0],dt[1].get("value")]:dt}).toJS())),j.List.isList(ae)&&(ae=Object(U.I)(ae)),It){var Ie=Object(z.getDefaultRequestBodyValue)(St.specResolvedSubtree(["paths",F,je,"requestBody"]),It,nn.activeExamplesMember(F,je,"requestBody","requestBody"));Qe=!!ae&&ae!==Ie}return Qe}return null}},fe=M(function($e,F,je){return $e.getIn(["requestData",F,je,"bodyInclusion"])||Object(j.Map)()}),ne=M(function($e,F,je){return $e.getIn(["requestData",F,je,"errors"])||null}),he=M(function($e,F,je,Et,lt){return $e.getIn(["examples",F,je,Et,lt,"activeExample"])||null}),ce=M(function($e,F,je){return $e.getIn(["requestData",F,je,"requestContentType"])||null}),Ae=M(function($e,F,je){return $e.getIn(["requestData",F,je,"responseContentType"])||null}),Me=M(function($e,F,je){var Et;if("string"!=typeof F){var lt=F.server,nn=F.namespace;Et=nn?[nn,"serverVariableValues",lt,je]:["serverVariableValues",lt,je]}else Et=["serverVariableValues",F,je];return $e.getIn(Et)||null}),Oe=M(function($e,F){var je;if("string"!=typeof F){var Et=F.server,lt=F.namespace;je=lt?[lt,"serverVariableValues",Et]:["serverVariableValues",Et]}else je=["serverVariableValues",F];return $e.getIn(je)||Object(j.OrderedMap)()}),be=M(function($e,F){var je,Et;if("string"!=typeof F){var nn=F.namespace;Et=F.server,je=$e.getIn(nn?[nn,"serverVariableValues",Et]:["serverVariableValues",Et])}else je=$e.getIn(["serverVariableValues",Et=F]);je=je||Object(j.OrderedMap)();var St=Et;return h()(je).call(je,function(At,Qe){St=St.replace(new RegExp("{".concat(Qe,"}"),"g"),At)}),St}),ue=(I=function($e,F){return Et=(Et=F)||[],!!$e.getIn(l()(lt=["requestData"]).call(lt,s()(Et),["bodyValue"]));var Et,lt},function(){for(var $e=arguments.length,F=new Array($e),je=0;je<$e;je++)F[je]=arguments[je];return function(Et){var lt,nn,St=Et.getSystem().specSelectors.specJson(),At=l()(lt=[]).call(lt,F)[1]||[];return!St.getIn(l()(nn=["paths"]).call(nn,s()(At),["requestBody","required"]))||I.apply(void 0,F)}}),He=function($e,F){var je,Et=F.oas3RequiredRequestBodyContentType,lt=F.oas3RequestContentType,nn=F.oas3RequestBodyValue,St=[];if(!j.Map.isMap(nn))return St;var At=[];return m()(je=C()(Et.requestContentType)).call(je,function(Qe){if(Qe===lt){var It=Et.requestContentType[Qe];m()(It).call(It,function(ae){x()(At).call(At,ae)<0&&At.push(ae)})}}),m()(At).call(At,function(Qe){nn.getIn([Qe,"value"])||St.push(Qe)}),St}},function(g,o,t){"use strict";t.r(o);var e,s=t(3),a=t.n(s),l=t(327),u=t.n(l),h=t(13),_=t.n(h),m=t(125),b=t.n(m),C=t(20),D=t.n(C),x=t(23),j=t.n(x),H=t(30),z=t.n(H),U=t(1),M=t(55);o.default=(e={},a()(e,M.UPDATE_SELECTED_SERVER,function(I,J){var Y=J.payload,oe=Y.namespace;return I.setIn(oe?[oe,"selectedServer"]:["selectedServer"],Y.selectedServerUrl)}),a()(e,M.UPDATE_REQUEST_BODY_VALUE,function(I,J){var Y=J.payload,ie=Y.value,oe=Y.pathMethod,fe=_()(oe,2),ne=fe[0],he=fe[1];if(!U.Map.isMap(ie))return I.setIn(["requestData",ne,he,"bodyValue"],ie);var ce,Ae=I.getIn(["requestData",ne,he,"bodyValue"])||Object(U.Map)();U.Map.isMap(Ae)||(Ae=Object(U.Map)());var Me=b()(ie).call(ie),Oe=u()(Me),be=D()(Oe).call(Oe,0);return j()(be).call(be,function(ue){var He=ie.getIn([ue]);Ae.has(ue)&&U.Map.isMap(He)||(ce=Ae.setIn([ue,"value"],He))}),I.setIn(["requestData",ne,he,"bodyValue"],ce)}),a()(e,M.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,function(I,J){var Y=J.payload,ie=Y.value,oe=Y.pathMethod,fe=_()(oe,2);return I.setIn(["requestData",fe[0],fe[1],"retainBodyValue"],ie)}),a()(e,M.UPDATE_REQUEST_BODY_INCLUSION,function(I,J){var Y=J.payload,ie=Y.value,oe=Y.pathMethod,fe=Y.name,ne=_()(oe,2);return I.setIn(["requestData",ne[0],ne[1],"bodyInclusion",fe],ie)}),a()(e,M.UPDATE_ACTIVE_EXAMPLES_MEMBER,function(I,J){var Y=J.payload,ie=Y.name,oe=Y.pathMethod,fe=Y.contextType,ne=Y.contextName,he=_()(oe,2);return I.setIn(["examples",he[0],he[1],fe,ne,"activeExample"],ie)}),a()(e,M.UPDATE_REQUEST_CONTENT_TYPE,function(I,J){var Y=J.payload,ie=Y.value,oe=Y.pathMethod,fe=_()(oe,2);return I.setIn(["requestData",fe[0],fe[1],"requestContentType"],ie)}),a()(e,M.UPDATE_RESPONSE_CONTENT_TYPE,function(I,J){var Y=J.payload;return I.setIn(["requestData",Y.path,Y.method,"responseContentType"],Y.value)}),a()(e,M.UPDATE_SERVER_VARIABLE_VALUE,function(I,J){var Y=J.payload,ie=Y.server,oe=Y.namespace,fe=Y.key;return I.setIn(oe?[oe,"serverVariableValues",ie,fe]:["serverVariableValues",ie,fe],Y.val)}),a()(e,M.SET_REQUEST_BODY_VALIDATE_ERROR,function(I,J){var Y=J.payload,ie=Y.path,oe=Y.method,fe=Y.validationErrors,ne=[];if(ne.push("Required field is not provided"),fe.missingBodyValue)return I.setIn(["requestData",ie,oe,"errors"],Object(U.fromJS)(ne));if(fe.missingRequiredKeys&&fe.missingRequiredKeys.length>0){var he=fe.missingRequiredKeys;return I.updateIn(["requestData",ie,oe,"bodyValue"],Object(U.fromJS)({}),function(ce){return z()(he).call(he,function(Ae,Me){return Ae.setIn([Me,"errors"],Object(U.fromJS)(ne))},ce)})}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),I}),a()(e,M.CLEAR_REQUEST_BODY_VALIDATE_ERROR,function(I,J){var Y=J.payload,ie=Y.path,oe=Y.method,fe=I.getIn(["requestData",ie,oe,"bodyValue"]);if(!U.Map.isMap(fe))return I.setIn(["requestData",ie,oe,"errors"],Object(U.fromJS)([]));var ne=b()(fe).call(fe),he=u()(ne),ce=D()(he).call(he,0);return ce?I.updateIn(["requestData",ie,oe,"bodyValue"],Object(U.fromJS)({}),function(Ae){return z()(ce).call(ce,function(Me,Oe){return Me.setIn([Oe,"errors"],Object(U.fromJS)([]))},Ae)}):I}),a()(e,M.CLEAR_REQUEST_BODY_VALUE,function(I,J){var Y=J.payload.pathMethod,ie=_()(Y,2),oe=ie[0],fe=ie[1],ne=I.getIn(["requestData",oe,fe,"bodyValue"]);return ne?U.Map.isMap(ne)?I.setIn(["requestData",oe,fe,"bodyValue"],Object(U.Map)()):I.setIn(["requestData",oe,fe,"bodyValue"],""):I}),e)},function(g,o,t){"use strict";t.r(o);var e,s=t(23),a=t.n(s),l=t(125),u=t.n(l),h=t(5),_=t(976),m={};a()(e=u()(_).call(_)).call(e,function(b){if("./index.js"!==b){var C=_(b);m[Object(h.D)(b)]=C.default?C.default:C}}),o.default=m},function(g,o,t){"use strict";t.r(o);var e={};t.r(e),t.d(e,"JsonPatchError",function(){return An}),t.d(e,"deepClone",function(){return Bn}),t.d(e,"getValueByPointer",function(){return _r}),t.d(e,"applyOperation",function(){return Nr}),t.d(e,"applyPatch",function(){return br}),t.d(e,"applyReducer",function(){return Jn}),t.d(e,"validator",function(){return nr}),t.d(e,"validate",function(){return Mr}),t.d(e,"_areEquals",function(){return yi});var s={};t.r(s),t.d(s,"unobserve",function(){return Kr}),t.d(s,"observe",function(){return ei}),t.d(s,"generate",function(){return di}),t.d(s,"compare",function(){return ct});var a={};t.r(a),t.d(a,"path",function(){return Ea}),t.d(a,"query",function(){return ul}),t.d(a,"header",function(){return va}),t.d(a,"cookie",function(){return bs});var l=t(2),u=t.n(l),h=t(72),_=t.n(h),m=t(40),b=t.n(m),C=t(49),D=t.n(C),x=t(19),j=t.n(x),H=t(13),z=t.n(H),U=t(31),M=t.n(U),I=t(80),J=t.n(I),Y=t(106),ie=t.n(Y),oe=t(32),fe=t.n(oe),ne=t(4),he=t.n(ne),ce=t(15),Ae=t.n(ce),Me=t(199),Oe=t.n(Me),be=t(12),ue=t.n(be),He=(t(442),t(207)),$e=t.n(He),F=t(70),je=t(92),Et=t(14),lt=t.n(Et),nn=t(20),St=t.n(nn),At=function(ze){return":/?#[]@!$&'()*+,;=".indexOf(ze)>-1},Qe=function(ze){return/^[a-z0-9\-._~]+$/i.test(ze)};function It(ze){var wt,kt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},tn=kt.escape,ur=arguments.length>2?arguments[2]:void 0;return"number"==typeof ze&&(ze=ze.toString()),"string"==typeof ze&&ze.length&&tn?ur?JSON.parse(ze):he()(wt=lt()(ze)).call(wt,function(gn){var xr,Zr;if(Qe(gn)||At(gn)&&"unsafe"===tn)return gn;var Pr=new TextEncoder;return he()(xr=he()(Zr=ie()(Pr.encode(gn))).call(Zr,function(mi){var ii;return St()(ii="0".concat(mi.toString(16).toUpperCase())).call(ii,-2)})).call(xr,function(mi){return"%".concat(mi)}).join("")}).join(""):ze}function ae(ze){var kt,tn,ur,gn,xr,Zr,Pr,mi,wt=ze.value;return Array.isArray(wt)?function(kt){var tn=kt.key,ur=kt.value,gn=kt.style,xr=kt.explode,Zr=kt.escape,Pr=function(bi){return It(bi,{escape:Zr})};if("simple"===gn)return he()(ur).call(ur,function(bi){return Pr(bi)}).join(",");if("label"===gn)return".".concat(he()(ur).call(ur,function(bi){return Pr(bi)}).join("."));if("matrix"===gn)return he()(ur).call(ur,function(bi){return Pr(bi)}).reduce(function(bi,Ui){var io,vo,Bi;return!bi||xr?u()(vo=u()(Bi="".concat(bi||"",";")).call(Bi,tn,"=")).call(vo,Ui):u()(io="".concat(bi,",")).call(io,Ui)},"");if("form"===gn){var mi=xr?"&".concat(tn,"="):",";return he()(ur).call(ur,function(bi){return Pr(bi)}).join(mi)}if("spaceDelimited"===gn){var ii=xr?"".concat(tn,"="):"";return he()(ur).call(ur,function(bi){return Pr(bi)}).join(" ".concat(ii))}if("pipeDelimited"===gn){var si=xr?"".concat(tn,"="):"";return he()(ur).call(ur,function(bi){return Pr(bi)}).join("|".concat(si))}}(ze):"object"===j()(wt)?(tn=(kt=ze).key,ur=kt.value,gn=kt.style,xr=kt.explode,Zr=kt.escape,Pr=function(ii){return It(ii,{escape:Zr})},mi=Ae()(ur),"simple"===gn?mi.reduce(function(ii,si){var bi,Ui,io,vo=Pr(ur[si]),Bi=xr?"=":",",hi=ii?"".concat(ii,","):"";return u()(bi=u()(Ui=u()(io="".concat(hi)).call(io,si)).call(Ui,Bi)).call(bi,vo)},""):"label"===gn?mi.reduce(function(ii,si){var bi,Ui,io,vo=Pr(ur[si]),Bi=xr?"=":".",hi=ii?"".concat(ii,"."):".";return u()(bi=u()(Ui=u()(io="".concat(hi)).call(io,si)).call(Ui,Bi)).call(bi,vo)},""):"matrix"===gn&&xr?mi.reduce(function(ii,si){var bi,Ui,io=Pr(ur[si]),vo=ii?"".concat(ii,";"):";";return u()(bi=u()(Ui="".concat(vo)).call(Ui,si,"=")).call(bi,io)},""):"matrix"===gn?mi.reduce(function(ii,si){var bi,Ui,io=Pr(ur[si]),vo=ii?"".concat(ii,","):";".concat(tn,"=");return u()(bi=u()(Ui="".concat(vo)).call(Ui,si,",")).call(bi,io)},""):"form"===gn?mi.reduce(function(ii,si){var bi,Ui,io,vo,Bi=Pr(ur[si]),hi=ii?u()(bi="".concat(ii)).call(bi,xr?"&":","):"",Br=xr?"=":",";return u()(Ui=u()(io=u()(vo="".concat(hi)).call(vo,si)).call(io,Br)).call(Ui,Bi)},""):void 0):function(kt){var tn,ur=kt.key,gn=kt.value,xr=kt.style,Zr=kt.escape,Pr=function(mi){return It(mi,{escape:Zr})};return"simple"===xr?Pr(gn):"label"===xr?".".concat(Pr(gn)):"matrix"===xr?u()(tn=";".concat(ur,"=")).call(tn,Pr(gn)):"form"===xr||"deepObject"===xr?Pr(gn):void 0}(ze)}var Ie=function(ze,wt){wt.body=ze},dt={serializeRes:Ln,mergeInQueryOrForm:qn};function Jt(ze){return zt.apply(this,arguments)}function zt(){return(zt=_()(b.a.mark(function ze(wt){var kt,ur,gn,xr,Zr=arguments;return b.a.wrap(function(Pr){for(;;)switch(Pr.prev=Pr.next){case 0:if(kt=Zr.length>1&&void 0!==Zr[1]?Zr[1]:{},"object"===j()(wt)&&(wt=(kt=wt).url),kt.headers=kt.headers||{},dt.mergeInQueryOrForm(kt),kt.headers&&Ae()(kt.headers).forEach(function(mi){var ii=kt.headers[mi];"string"==typeof ii&&(kt.headers[mi]=ii.replace(/\n+/g," "))}),!kt.requestInterceptor){Pr.next=12;break}return Pr.next=8,kt.requestInterceptor(kt);case 8:if(Pr.t0=Pr.sent,Pr.t0){Pr.next=11;break}Pr.t0=kt;case 11:kt=Pr.t0;case 12:return/multipart\/form-data/i.test(kt.headers["content-type"]||kt.headers["Content-Type"])&&kt.body instanceof je.FormData&&(delete kt.headers["content-type"],delete kt.headers["Content-Type"]),Pr.prev=14,Pr.next=17,(kt.userFetch||fetch)(kt.url,kt);case 17:return ur=Pr.sent,Pr.next=20,dt.serializeRes(ur,wt,kt);case 20:if(ur=Pr.sent,!kt.responseInterceptor){Pr.next=28;break}return Pr.next=24,kt.responseInterceptor(ur);case 24:if(Pr.t1=Pr.sent,Pr.t1){Pr.next=27;break}Pr.t1=ur;case 27:ur=Pr.t1;case 28:Pr.next=39;break;case 30:if(Pr.prev=30,Pr.t2=Pr.catch(14),ur){Pr.next=34;break}throw Pr.t2;case 34:throw(gn=new Error(ur.statusText||"response status is ".concat(ur.status))).status=ur.status,gn.statusCode=ur.status,gn.responseError=Pr.t2,gn;case 39:if(ur.ok){Pr.next=45;break}throw(xr=new Error(ur.statusText||"response status is ".concat(ur.status))).status=ur.status,xr.statusCode=ur.status,xr.response=ur,xr;case 45:return Pr.abrupt("return",ur);case 46:case"end":return Pr.stop()}},ze,null,[[14,30]])}))).apply(this,arguments)}var ln=function(){var ze=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(ze)};function ar(ze,wt){return wt&&(0===wt.indexOf("application/json")||wt.indexOf("+json")>0)?JSON.parse(ze):F.a.load(ze)}function Ln(ze,wt){var kt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},tn=kt.loadSpec,ur=void 0!==tn&&tn,gn={ok:ze.ok,url:ze.url||wt,status:ze.status,statusText:ze.statusText,headers:er(ze.headers)},xr=gn.headers["content-type"],Zr=ur||ln(xr),Pr=Zr?ze.text:ze.blob||ze.buffer;return Pr.call(ze).then(function(mi){if(gn.text=mi,gn.data=mi,Zr)try{var ii=ar(mi,xr);gn.body=ii,gn.obj=ii}catch(si){gn.parseError=si}return gn})}function Rn(ze){return M()(ze).call(ze,", ")?ze.split(", "):ze}function er(){var ze=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof J()(ze)?{}:ie()(J()(ze).call(ze)).reduce(function(wt,kt){var tn=z()(kt,2);return wt[tn[0]]=Rn(tn[1]),wt},{})}function Mn(ze,wt){return wt||"undefined"==typeof navigator||(wt=navigator),wt&&"ReactNative"===wt.product?!(!ze||"object"!==j()(ze)||"string"!=typeof ze.uri):void 0!==je.File&&ze instanceof je.File||void 0!==je.Blob&&ze instanceof je.Blob||!!ArrayBuffer.isView(ze)||null!==ze&&"object"===j()(ze)&&"function"==typeof ze.pipe}function Ht(ze,wt){return Array.isArray(ze)&&ze.some(function(kt){return Mn(kt,wt)})}var tr={form:",",spaceDelimited:"%20",pipeDelimited:"|"},Yn={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function Cn(ze,wt){var kt=arguments.length>2&&void 0!==arguments[2]&&arguments[2],tn=wt.collectionFormat,ur=wt.allowEmptyValue,gn=wt.serializationOption,xr=wt.encoding,Zr="object"!==j()(wt)||Array.isArray(wt)?wt:wt.value,Pr=kt?function(io){return io.toString()}:function(io){return encodeURIComponent(io)},mi=Pr(ze);if(void 0===Zr&&ur)return[[mi,""]];if(Mn(Zr)||Ht(Zr))return[[mi,Zr]];if(gn)return Kt(ze,Zr,kt,gn);if(xr){if([j()(xr.style),j()(xr.explode),j()(xr.allowReserved)].some(function(io){return"undefined"!==io})){var ii=xr.style,si=xr.explode,bi=xr.allowReserved;return Kt(ze,Zr,kt,{style:ii,explode:si,allowReserved:bi})}if(xr.contentType){if("application/json"===xr.contentType){var Ui="string"==typeof Zr?Zr:fe()(Zr);return[[mi,Pr(Ui)]]}return[[mi,Pr(Zr.toString())]]}return"object"!==j()(Zr)?[[mi,Pr(Zr)]]:Array.isArray(Zr)&&Zr.every(function(io){return"object"!==j()(io)})?[[mi,he()(Zr).call(Zr,Pr).join(",")]]:[[mi,Pr(fe()(Zr))]]}return"object"!==j()(Zr)?[[mi,Pr(Zr)]]:Array.isArray(Zr)?"multi"===tn?[[mi,he()(Zr).call(Zr,Pr)]]:[[mi,he()(Zr).call(Zr,Pr).join(Yn[tn||"csv"])]]:[[mi,""]]}function Kt(ze,wt,kt,tn){var ur,gn,xr,Zr=tn.style||"form",Pr=void 0===tn.explode?"form"===Zr:tn.explode,mi=!kt&&(tn&&tn.allowReserved?"unsafe":"reserved"),ii=function(bi){return It(bi,{escape:mi})},si=kt?function(bi){return bi}:function(bi){return It(bi,{escape:mi})};return"object"!==j()(wt)?[[si(ze),ii(wt)]]:Array.isArray(wt)?Pr?[[si(ze),he()(wt).call(wt,ii)]]:[[si(ze),he()(wt).call(wt,ii).join(tr[Zr])]]:"deepObject"===Zr?he()(gn=Ae()(wt)).call(gn,function(bi){var Ui;return[si(u()(Ui="".concat(ze,"[")).call(Ui,bi,"]")),ii(wt[bi])]}):Pr?he()(xr=Ae()(wt)).call(xr,function(bi){return[si(bi),ii(wt[bi])]}):[[si(ze),he()(ur=Ae()(wt)).call(ur,function(bi){var Ui;return[u()(Ui="".concat(si(bi),",")).call(Ui,ii(wt[bi]))]}).join(",")]]}function dn(ze){return Oe()(ze).reduce(function(wt,kt){var tn,ur=z()(kt,2),gn=ur[0],xr=ur[1],Zr=D()(Cn(gn,xr,!0));try{for(Zr.s();!(tn=Zr.n()).done;){var Pr=z()(tn.value,2),mi=Pr[0],ii=Pr[1];if(Array.isArray(ii)){var si,bi=D()(ii);try{for(bi.s();!(si=bi.n()).done;){var Ui=si.value;if(ArrayBuffer.isView(Ui)){var io=new je.Blob([Ui]);wt.append(mi,io)}else wt.append(mi,Ui)}}catch(Bi){bi.e(Bi)}finally{bi.f()}}else if(ArrayBuffer.isView(ii)){var vo=new je.Blob([ii]);wt.append(mi,vo)}else wt.append(mi,ii)}}catch(Bi){Zr.e(Bi)}finally{Zr.f()}return wt},new je.FormData)}function Kn(ze){var wt=Ae()(ze).reduce(function(kt,tn){var ur,gn=D()(Cn(tn,ze[tn]));try{for(gn.s();!(ur=gn.n()).done;){var xr=z()(ur.value,2);kt[xr[0]]=xr[1]}}catch(mi){gn.e(mi)}finally{gn.f()}return kt},{});return $e.a.stringify(wt,{encode:!1,indices:!1})||""}function qn(){var ze=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},wt=ze.url,kt=void 0===wt?"":wt,tn=ze.query,ur=ze.form,gn=function(){for(var hi=arguments.length,Br=new Array(hi),G=0;G<hi;G++)Br[G]=arguments[G];var Se=ue()(Br).call(Br,function(ft){return ft}).join("&");return Se?"?".concat(Se):""};if(ur){var xr=Ae()(ur).some(function(hi){var Br=ur[hi].value;return Mn(Br)||Ht(Br)}),Zr=ze.headers["content-type"]||ze.headers["Content-Type"];if(xr||/multipart\/form-data/i.test(Zr)){var Pr=dn(ze.form);Ie(Pr,ze)}else ze.body=Kn(ur);delete ze.form}if(tn){var mi=kt.split("?"),ii=z()(mi,2),si=ii[0],bi=ii[1],Ui="";if(bi){var io=$e.a.parse(bi),vo=Ae()(tn);vo.forEach(function(hi){return delete io[hi]}),Ui=$e.a.stringify(io,{encode:!0})}var Bi=gn(Ui,Kn(tn));ze.url=si+Bi,delete ze.query}return ze}var Sn,$n=t(25),En=t.n($n),Fn=t(6),Dn=t.n(Fn),mn=t(7),jn=t.n(mn),Xt=t(21),ut=t.n(Xt),mt=t(56),Tt=t.n(mt),yn=t(66),et=t.n(yn),jt=t(200),hn=t.n(jt),Qn=t(3),Ir=t.n(Qn),ht=(Sn=function(ze,wt){return(Sn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(kt,tn){kt.__proto__=tn}||function(kt,tn){for(var ur in tn)tn.hasOwnProperty(ur)&&(kt[ur]=tn[ur])})(ze,wt)},function(ze,wt){function kt(){this.constructor=ze}Sn(ze,wt),ze.prototype=null===wt?Object.create(wt):(kt.prototype=wt.prototype,new kt)}),L=Object.prototype.hasOwnProperty;function Ue(ze,wt){return L.call(ze,wt)}function nt(ze){if(Array.isArray(ze)){for(var wt=new Array(ze.length),kt=0;kt<wt.length;kt++)wt[kt]=""+kt;return wt}if(Object.keys)return Object.keys(ze);for(var tn in wt=[],ze)Ue(ze,tn)&&wt.push(tn);return wt}function at(ze){switch(typeof ze){case"object":return JSON.parse(JSON.stringify(ze));case"undefined":return null;default:return ze}}function it(ze){for(var wt,kt=0,tn=ze.length;kt<tn;){if(!((wt=ze.charCodeAt(kt))>=48&&wt<=57))return!1;kt++}return!0}function Pt(ze){return-1===ze.indexOf("/")&&-1===ze.indexOf("~")?ze:ze.replace(/~/g,"~0").replace(/\//g,"~1")}function Ut(ze){return ze.replace(/~1/g,"/").replace(/~0/g,"~")}function ot(ze){if(void 0===ze)return!0;if(ze)if(Array.isArray(ze)){for(var wt=0,kt=ze.length;wt<kt;wt++)if(ot(ze[wt]))return!0}else if("object"==typeof ze){var tn=nt(ze),ur=tn.length;for(wt=0;wt<ur;wt++)if(ot(ze[tn[wt]]))return!0}return!1}function Nn(ze,wt){var kt=[ze];for(var tn in wt){var ur="object"==typeof wt[tn]?JSON.stringify(wt[tn],null,2):wt[tn];void 0!==ur&&kt.push(tn+": "+ur)}return kt.join("\n")}var sn=function(ze){function wt(kt,tn,ur,gn,xr){var Zr=this.constructor,Pr=ze.call(this,Nn(kt,{name:tn,index:ur,operation:gn,tree:xr}))||this;return Pr.name=tn,Pr.index=ur,Pr.operation=gn,Pr.tree=xr,Object.setPrototypeOf(Pr,Zr.prototype),Pr.message=Nn(kt,{name:tn,index:ur,operation:gn,tree:xr}),Pr}return ht(wt,ze),wt}(Error),An=sn,Bn=at,ir={add:function(ze,wt,kt){return ze[wt]=this.value,{newDocument:kt}},remove:function(ze,wt,kt){var tn=ze[wt];return delete ze[wt],{newDocument:kt,removed:tn}},replace:function(ze,wt,kt){var tn=ze[wt];return ze[wt]=this.value,{newDocument:kt,removed:tn}},move:function(ze,wt,kt){var tn=_r(kt,this.path);tn&&(tn=at(tn));var ur=Nr(kt,{op:"remove",path:this.from}).removed;return Nr(kt,{op:"add",path:this.path,value:ur}),{newDocument:kt,removed:tn}},copy:function(ze,wt,kt){var tn=_r(kt,this.from);return Nr(kt,{op:"add",path:this.path,value:at(tn)}),{newDocument:kt}},test:function(ze,wt,kt){return{newDocument:kt,test:yi(ze[wt],this.value)}},_get:function(ze,wt,kt){return this.value=ze[wt],{newDocument:kt}}},mr={add:function(ze,wt,kt){return it(wt)?ze.splice(wt,0,this.value):ze[wt]=this.value,{newDocument:kt,index:wt}},remove:function(ze,wt,kt){return{newDocument:kt,removed:ze.splice(wt,1)[0]}},replace:function(ze,wt,kt){var tn=ze[wt];return ze[wt]=this.value,{newDocument:kt,removed:tn}},move:ir.move,copy:ir.copy,test:ir.test,_get:ir._get};function _r(ze,wt){if(""==wt)return ze;var kt={op:"_get",path:wt};return Nr(ze,kt),kt.value}function Nr(ze,wt,kt,tn,ur,gn){if(void 0===kt&&(kt=!1),void 0===tn&&(tn=!0),void 0===ur&&(ur=!0),void 0===gn&&(gn=0),kt&&("function"==typeof kt?kt(wt,0,ze,wt.path):nr(wt,0)),""===wt.path){var xr={newDocument:ze};if("add"===wt.op)return xr.newDocument=wt.value,xr;if("replace"===wt.op)return xr.newDocument=wt.value,xr.removed=ze,xr;if("move"===wt.op||"copy"===wt.op)return xr.newDocument=_r(ze,wt.from),"move"===wt.op&&(xr.removed=ze),xr;if("test"===wt.op){if(xr.test=yi(ze,wt.value),!1===xr.test)throw new An("Test operation failed","TEST_OPERATION_FAILED",gn,wt,ze);return xr.newDocument=ze,xr}if("remove"===wt.op)return xr.removed=ze,xr.newDocument=null,xr;if("_get"===wt.op)return wt.value=ze,xr;if(kt)throw new An("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",gn,wt,ze);return xr}tn||(ze=at(ze));var Zr=(wt.path||"").split("/"),Pr=ze,mi=1,ii=Zr.length,si=void 0,bi=void 0,Ui=void 0;for(Ui="function"==typeof kt?kt:nr;;){if(bi=Zr[mi],ur&&"__proto__"==bi)throw new TypeError("JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(kt&&void 0===si&&(void 0===Pr[bi]?si=Zr.slice(0,mi).join("/"):mi==ii-1&&(si=wt.path),void 0!==si&&Ui(wt,0,ze,si)),mi++,Array.isArray(Pr)){if("-"===bi)bi=Pr.length;else{if(kt&&!it(bi))throw new An("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",gn,wt,ze);it(bi)&&(bi=~~bi)}if(mi>=ii){if(kt&&"add"===wt.op&&bi>Pr.length)throw new An("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",gn,wt,ze);if(!1===(xr=mr[wt.op].call(wt,Pr,bi,ze)).test)throw new An("Test operation failed","TEST_OPERATION_FAILED",gn,wt,ze);return xr}}else if(bi&&-1!=bi.indexOf("~")&&(bi=Ut(bi)),mi>=ii){if(!1===(xr=ir[wt.op].call(wt,Pr,bi,ze)).test)throw new An("Test operation failed","TEST_OPERATION_FAILED",gn,wt,ze);return xr}Pr=Pr[bi]}}function br(ze,wt,kt,tn,ur){if(void 0===tn&&(tn=!0),void 0===ur&&(ur=!0),kt&&!Array.isArray(wt))throw new An("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");tn||(ze=at(ze));for(var gn=new Array(wt.length),xr=0,Zr=wt.length;xr<Zr;xr++)gn[xr]=Nr(ze,wt[xr],kt,!0,ur,xr),ze=gn[xr].newDocument;return gn.newDocument=ze,gn}function Jn(ze,wt,kt){var tn=Nr(ze,wt);if(!1===tn.test)throw new An("Test operation failed","TEST_OPERATION_FAILED",kt,wt,ze);return tn.newDocument}function nr(ze,wt,kt,tn){if("object"!=typeof ze||null===ze||Array.isArray(ze))throw new An("Operation is not an object","OPERATION_NOT_AN_OBJECT",wt,ze,kt);if(!ir[ze.op])throw new An("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",wt,ze,kt);if("string"!=typeof ze.path)throw new An("Operation `path` property is not a string","OPERATION_PATH_INVALID",wt,ze,kt);if(0!==ze.path.indexOf("/")&&ze.path.length>0)throw new An('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",wt,ze,kt);if(("move"===ze.op||"copy"===ze.op)&&"string"!=typeof ze.from)throw new An("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",wt,ze,kt);if(("add"===ze.op||"replace"===ze.op||"test"===ze.op)&&void 0===ze.value)throw new An("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",wt,ze,kt);if(("add"===ze.op||"replace"===ze.op||"test"===ze.op)&&ot(ze.value))throw new An("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",wt,ze,kt);if(kt)if("add"==ze.op){var ur=ze.path.split("/").length,gn=tn.split("/").length;if(ur!==gn+1&&ur!==gn)throw new An("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",wt,ze,kt)}else if("replace"===ze.op||"remove"===ze.op||"_get"===ze.op){if(ze.path!==tn)throw new An("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",wt,ze,kt)}else if("move"===ze.op||"copy"===ze.op){var xr=Mr([{op:"_get",path:ze.from,value:void 0}],kt);if(xr&&"OPERATION_PATH_UNRESOLVABLE"===xr.name)throw new An("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",wt,ze,kt)}}function Mr(ze,wt,kt){try{if(!Array.isArray(ze))throw new An("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(wt)br(at(wt),at(ze),kt||!0);else{kt=kt||nr;for(var tn=0;tn<ze.length;tn++)kt(ze[tn],tn,wt,void 0)}}catch(ur){if(ur instanceof An)return ur;throw ur}}function yi(ze,wt){if(ze===wt)return!0;if(ze&&wt&&"object"==typeof ze&&"object"==typeof wt){var kt,tn,ur,gn=Array.isArray(ze),xr=Array.isArray(wt);if(gn&&xr){if((tn=ze.length)!=wt.length)return!1;for(kt=tn;0!=kt--;)if(!yi(ze[kt],wt[kt]))return!1;return!0}if(gn!=xr)return!1;var Zr=Object.keys(ze);if((tn=Zr.length)!==Object.keys(wt).length)return!1;for(kt=tn;0!=kt--;)if(!wt.hasOwnProperty(Zr[kt]))return!1;for(kt=tn;0!=kt--;)if(!yi(ze[ur=Zr[kt]],wt[ur]))return!1;return!0}return ze!=ze&&wt!=wt}var Ii=new WeakMap,Mi=function(ze){this.observers=new Map,this.obj=ze},Oi=function(ze,wt){this.callback=ze,this.observer=wt};function Kr(ze,wt){wt.unobserve()}function ei(ze,wt){var kt,tn=Ii.get(ze);if(tn){var ur=tn.observers.get(wt);kt=ur&&ur.observer}else tn=new Mi(ze),Ii.set(ze,tn);if(kt)return kt;if(kt={},tn.value=at(ze),wt){kt.callback=wt,kt.next=null;var gn=function(){di(kt)},xr=function(){clearTimeout(kt.next),kt.next=setTimeout(gn)};"undefined"!=typeof window&&(window.addEventListener("mouseup",xr),window.addEventListener("keyup",xr),window.addEventListener("mousedown",xr),window.addEventListener("keydown",xr),window.addEventListener("change",xr))}return kt.patches=[],kt.object=ze,kt.unobserve=function(){di(kt),clearTimeout(kt.next),function(Zr,Pr){Zr.observers.delete(Pr.callback)}(tn,kt),"undefined"!=typeof window&&(window.removeEventListener("mouseup",xr),window.removeEventListener("keyup",xr),window.removeEventListener("mousedown",xr),window.removeEventListener("keydown",xr),window.removeEventListener("change",xr))},tn.observers.set(wt,new Oi(wt,kt)),kt}function di(ze,wt){void 0===wt&&(wt=!1);var kt=Ii.get(ze.object);se(kt.value,ze.object,ze.patches,"",wt),ze.patches.length&&br(kt.value,ze.patches);var tn=ze.patches;return tn.length>0&&(ze.patches=[],ze.callback&&ze.callback(tn)),tn}function se(ze,wt,kt,tn,ur){if(wt!==ze){"function"==typeof wt.toJSON&&(wt=wt.toJSON());for(var gn=nt(wt),xr=nt(ze),Zr=!1,Pr=xr.length-1;Pr>=0;Pr--){var mi=ze[si=xr[Pr]];if(!Ue(wt,si)||void 0===wt[si]&&void 0!==mi&&!1===Array.isArray(wt))Array.isArray(ze)===Array.isArray(wt)?(ur&&kt.push({op:"test",path:tn+"/"+Pt(si),value:at(mi)}),kt.push({op:"remove",path:tn+"/"+Pt(si)}),Zr=!0):(ur&&kt.push({op:"test",path:tn,value:ze}),kt.push({op:"replace",path:tn,value:wt}));else{var ii=wt[si];"object"==typeof mi&&null!=mi&&"object"==typeof ii&&null!=ii?se(mi,ii,kt,tn+"/"+Pt(si),ur):mi!==ii&&(ur&&kt.push({op:"test",path:tn+"/"+Pt(si),value:at(mi)}),kt.push({op:"replace",path:tn+"/"+Pt(si),value:at(ii)}))}}if(Zr||gn.length!=xr.length)for(Pr=0;Pr<gn.length;Pr++){var si;Ue(ze,si=gn[Pr])||void 0===wt[si]||kt.push({op:"add",path:tn+"/"+Pt(si),value:at(wt[si])})}}}function ct(ze,wt,kt){void 0===kt&&(kt=!1);var tn=[];return se(ze,wt,tn,"",kt),tn}Object.assign({},e,s,{JsonPatchError:sn,deepClone:at,escapePathComponent:Pt,unescapePathComponent:Ut});var Ke=t(79),Xe=t.n(Ke),Vt=t(471),Ct=t.n(Vt),rt={add:function(ze,wt){return{op:"add",path:ze,value:wt}},replace:We,remove:function(ze){return{op:"remove",path:ze}},merge:function(ze,wt){return{type:"mutation",op:"merge",path:ze,value:wt}},mergeDeep:function(ze,wt){return{type:"mutation",op:"mergeDeep",path:ze,value:wt}},context:function(ze,wt){return{type:"context",path:ze,value:wt}},getIn:function(ze,wt){return wt.reduce(function(kt,tn){return void 0!==tn&&kt?kt[tn]:kt},ze)},applyPatch:function(ze,wt,kt){if(kt=kt||{},"merge"===(wt=En()(En()({},wt),{},{path:wt.path&&bt(wt.path)})).op){var tn=go(ze,wt.path);ut()(tn,wt.value),br(ze,[We(wt.path,tn)])}else if("mergeDeep"===wt.op){var ur=go(ze,wt.path);for(var gn in wt.value){var xr=wt.value[gn],Zr=Array.isArray(xr);if(Zr){var Pr=ur[gn]||[];ur[gn]=u()(Pr).call(Pr,xr)}else if(Dr(xr)&&!Zr){var mi=En()({},ur[gn]);for(var ii in xr){if(Object.prototype.hasOwnProperty.call(mi,ii)){mi=Xe()(Ct()(mi),xr);break}ut()(mi,Ir()({},ii,xr[ii]))}ur[gn]=mi}else ur[gn]=xr}}else if("add"===wt.op&&""===wt.path&&Dr(wt.value))br(ze,Ae()(wt.value).reduce(function(vo,Bi){return vo.push({op:"add",path:"/".concat(bt(Bi)),value:wt.value[Bi]}),vo},[]));else if("replace"===wt.op&&""===wt.path){var bi=wt.value;kt.allowMetaPatches&&wt.meta&&Ei(wt)&&(Array.isArray(wt.value)||Dr(wt.value))&&(bi=En()(En()({},bi),wt.meta)),ze=bi}else if(br(ze,[wt]),kt.allowMetaPatches&&wt.meta&&Ei(wt)&&(Array.isArray(wt.value)||Dr(wt.value))){var Ui=go(ze,wt.path),io=En()(En()({},Ui),wt.meta);br(ze,[We(wt.path,io)])}return ze},parentPathMatch:function(ze,wt){if(!Array.isArray(wt))return!1;for(var kt=0,tn=wt.length;kt<tn;kt+=1)if(wt[kt]!==ze[kt])return!1;return!0},flatten:Cr,fullyNormalizeArray:function(ze){return ai(Cr(Vr(ze)))},normalizeArray:Vr,isPromise:function(ze){return Dr(ze)&&Qr(ze.then)},forEachNew:function(ze,wt){try{return $t(ze,Zn,wt)}catch(kt){return kt}},forEachNewPrimitive:function(ze,wt){try{return $t(ze,or,wt)}catch(kt){return kt}},isJsonPatch:rn,isContextPatch:function(ze){return wi(ze)&&"context"===ze.type},isPatch:wi,isMutation:fi,isAdditiveMutation:Ei,isGenerator:function(ze){return"[object GeneratorFunction]"===Object.prototype.toString.call(ze)},isFunction:Qr,isObject:Dr,isError:function(ze){return ze instanceof Error}};function bt(ze){return Array.isArray(ze)?ze.length<1?"":"/".concat(he()(ze).call(ze,function(wt){return(wt+"").replace(/~/g,"~0").replace(/\//g,"~1")}).join("/")):ze}function We(ze,wt,kt){return{op:"replace",path:ze,value:wt,meta:kt}}function $t(ze,wt,kt){var tn;return ai(Cr(he()(tn=ue()(ze).call(ze,Ei)).call(tn,function(ur){return wt(ur.value,kt,ur.path)})||[]))}function or(ze,wt,kt){return kt=kt||[],Array.isArray(ze)?he()(ze).call(ze,function(ur,gn){return or(ur,wt,u()(kt).call(kt,gn))}):Dr(ze)?he()(tn=Ae()(ze)).call(tn,function(ur){return or(ze[ur],wt,u()(kt).call(kt,ur))}):wt(ze,kt[kt.length-1],kt);var tn}function Zn(ze,wt,kt){var tn=[];if((kt=kt||[]).length>0){var ur=wt(ze,kt[kt.length-1],kt);ur&&(tn=u()(tn).call(tn,ur))}if(Array.isArray(ze)){var gn=he()(ze).call(ze,function(Pr,mi){return Zn(Pr,wt,u()(kt).call(kt,mi))});gn&&(tn=u()(tn).call(tn,gn))}else if(Dr(ze)){var xr,Zr=he()(xr=Ae()(ze)).call(xr,function(Pr){return Zn(ze[Pr],wt,u()(kt).call(kt,Pr))});Zr&&(tn=u()(tn).call(tn,Zr))}return Cr(tn)}function Vr(ze){return Array.isArray(ze)?ze:[ze]}function Cr(ze){var wt;return u()(wt=[]).apply(wt,lt()(he()(ze).call(ze,function(kt){return Array.isArray(kt)?Cr(kt):kt})))}function ai(ze){return ue()(ze).call(ze,function(wt){return void 0!==wt})}function Dr(ze){return ze&&"object"===j()(ze)}function Qr(ze){return ze&&"function"==typeof ze}function rn(ze){if(wi(ze)){var wt=ze.op;return"add"===wt||"remove"===wt||"replace"===wt}return!1}function fi(ze){return rn(ze)||wi(ze)&&"mutation"===ze.type}function Ei(ze){return fi(ze)&&("add"===ze.op||"replace"===ze.op||"merge"===ze.op||"mergeDeep"===ze.op)}function wi(ze){return ze&&"object"===j()(ze)}function go(ze,wt){try{return _r(ze,wt)}catch(kt){return console.error(kt),{}}}var Fi=t(472),no=t.n(Fi),Ji=t(324),qi=t.n(Ji),to=t(81),zi=t.n(to);function Go(ze,wt){function kt(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var tn=arguments.length,ur=new Array(tn),gn=0;gn<tn;gn++)ur[gn]=arguments[gn];this.message=ur[0],wt&&wt.apply(this,ur)}return(kt.prototype=new Error).name=ze,kt.prototype.constructor=kt,kt}var Ro=t(473),Bo=t.n(Ro),Jo=["properties"],es=["properties"],ua=["definitions","parameters","responses","securityDefinitions","components/schemas","components/responses","components/parameters","components/securitySchemes"],ds=["schema/example","items/example"];function zo(ze){var wt=ze[ze.length-1],kt=ze[ze.length-2],tn=ze.join("/");return Jo.indexOf(wt)>-1&&-1===es.indexOf(kt)||ua.indexOf(tn)>-1||ds.some(function(ur){return tn.indexOf(ur)>-1})}function oa(ze,wt){var kt,tn=ze.split("#"),ur=z()(tn,2),xr=ur[1],Zr=zi.a.resolve(ur[0]||"",wt||"");return xr?u()(kt="".concat(Zr,"#")).call(kt,xr):Zr}var Er="application/json, application/yaml",st=new RegExp("^([a-z]+://|//)","i"),pn=Go("JSONRefError",function(ze,wt,kt){this.originalError=kt,ut()(this,wt||{})}),ee={},Ve=new no.a,fn=[function(ze){return"paths"===ze[0]&&"responses"===ze[3]&&"examples"===ze[5]},function(ze){return"paths"===ze[0]&&"responses"===ze[3]&&"content"===ze[5]&&"example"===ze[7]},function(ze){return"paths"===ze[0]&&"responses"===ze[3]&&"content"===ze[5]&&"examples"===ze[7]&&"value"===ze[9]},function(ze){return"paths"===ze[0]&&"requestBody"===ze[3]&&"content"===ze[4]&&"example"===ze[6]},function(ze){return"paths"===ze[0]&&"requestBody"===ze[3]&&"content"===ze[4]&&"examples"===ze[6]&&"value"===ze[8]},function(ze){return"paths"===ze[0]&&"parameters"===ze[2]&&"example"===ze[4]},function(ze){return"paths"===ze[0]&&"parameters"===ze[3]&&"example"===ze[5]},function(ze){return"paths"===ze[0]&&"parameters"===ze[2]&&"examples"===ze[4]&&"value"===ze[6]},function(ze){return"paths"===ze[0]&&"parameters"===ze[3]&&"examples"===ze[5]&&"value"===ze[7]},function(ze){return"paths"===ze[0]&&"parameters"===ze[2]&&"content"===ze[4]&&"example"===ze[6]},function(ze){return"paths"===ze[0]&&"parameters"===ze[2]&&"content"===ze[4]&&"examples"===ze[6]&&"value"===ze[8]},function(ze){return"paths"===ze[0]&&"parameters"===ze[3]&&"content"===ze[4]&&"example"===ze[7]},function(ze){return"paths"===ze[0]&&"parameters"===ze[3]&&"content"===ze[5]&&"examples"===ze[7]&&"value"===ze[9]}],Tn={key:"$ref",plugin:function(ze,wt,kt,tn){var hi,Br,G,ur=tn.getInstance(),gn=St()(kt).call(kt,0,-1);if(!zo(gn)&&(xr=gn,!fn.some(function(hi){return hi(xr)}))){var xr,Zr=tn.getContext(kt).baseDoc;if("string"!=typeof ze)return new pn("$ref: must be a string (JSON-Ref)",{$ref:ze,baseDoc:Zr,fullPath:kt});var Pr,mi,ii,si=gi(ze),bi=si[0],Ui=si[1]||"";try{Pr=Zr||bi?Ri(bi,Zr):null}catch(hi){return Do(hi,{pointer:Ui,$ref:ze,basePath:Pr,fullPath:kt})}if(function(hi,Br,G,Se){var ft,Ft,Bt=Ve.get(Se);Bt||Ve.set(Se,Bt={});var zr,In=0===(zr=G).length?"":"/".concat(he()(zr).call(zr,xa).join("/")),Xn=u()(ft="".concat(Br||"<specmap-base>","#")).call(ft,hi),Sr=In.replace(/allOf\/\d+\/?/g,"");if(Br===Se.contextTree.get([]).baseDoc&&Ra(Sr,hi))return!0;var Fr="";return!!G.some(function(zr){var Un;return Fr=u()(Un="".concat(Fr,"/")).call(Un,xa(zr)),Bt[Fr]&&Bt[Fr].some(function(lr){return Ra(lr,Xn)||Ra(Xn,lr)})})||void(Bt[Sr]=u()(Ft=Bt[Sr]||[]).call(Ft,Xn))}(Ui,Pr,gn,tn)&&!ur.useCircularStructures){var io=oa(ze,Pr);return ze===io?null:rt.replace(kt,io)}if(null==Pr?(ii=Os(Ui),void 0===(mi=tn.get(ii))&&(mi=new pn("Could not resolve reference: ".concat(ze),{pointer:Ui,$ref:ze,baseDoc:Zr,fullPath:kt}))):mi=null!=(mi=Hi(Pr,Ui)).__value?mi.__value:mi.catch(function(hi){throw Do(hi,{pointer:Ui,$ref:ze,baseDoc:Zr,fullPath:kt})}),mi instanceof Error)return[rt.remove(kt),mi];var vo=oa(ze,Pr),Bi=rt.replace(gn,mi,{$$ref:vo});if(Pr&&Pr!==Zr)return[Bi,rt.context(gn,{baseDoc:Pr})];try{if(G=[hi=tn.state],(Br=Bi).path.reduce(function(ft,Ft){return G.push(ft[Ft]),ft[Ft]},hi),!function Se(ft){return rt.isObject(ft)&&(G.indexOf(ft)>=0||Ae()(ft).some(function(Ft){return Se(ft[Ft])}))}(Br.value)||ur.useCircularStructures)return Bi}catch(hi){return null}}}},$r=ut()(Tn,{docCache:ee,absoluteify:Ri,clearCache:function(ze){void 0!==ze?delete ee[ze]:Ae()(ee).forEach(function(wt){delete ee[wt]})},JSONRefError:pn,wrapError:Do,getDoc:Li,split:gi,extractFromDoc:Hi,fetchJSON:function(ze){return fetch(ze,{headers:{Accept:Er},loadSpec:!0}).then(function(wt){return wt.text()}).then(function(wt){return F.a.load(wt)})},extract:cs,jsonPointerToArray:Os,unescapeJsonPointerToken:da}),ni=$r;function Ri(ze,wt){if(!st.test(ze)){var kt;if(!wt)throw new pn(u()(kt="Tried to resolve a relative URL, without having a basePath. path: '".concat(ze,"' basePath: '")).call(kt,wt,"'"));return zi.a.resolve(wt,ze)}return ze}function Do(ze,wt){var kt,tn;return kt=ze&&ze.response&&ze.response.body?u()(tn="".concat(ze.response.body.code," ")).call(tn,ze.response.body.message):ze.message,new pn("Could not resolve reference: ".concat(kt),wt,ze)}function gi(ze){return(ze+"").split("#")}function Hi(ze,wt){var kt=ee[ze];if(kt&&!rt.isPromise(kt))try{var tn=cs(wt,kt);return ut()(et.a.resolve(tn),{__value:tn})}catch(ur){return et.a.reject(ur)}return Li(ze).then(function(ur){return cs(wt,ur)})}function Li(ze){var wt=ee[ze];return wt?rt.isPromise(wt)?wt:et.a.resolve(wt):(ee[ze]=$r.fetchJSON(ze).then(function(kt){return ee[ze]=kt,kt}),ee[ze])}function cs(ze,wt){var kt=Os(ze);if(kt.length<1)return wt;var tn=rt.getIn(wt,kt);if(void 0===tn)throw new pn("Could not resolve pointer: ".concat(ze," does not exist in document"),{pointer:ze});return tn}function Os(ze){var wt;if("string"!=typeof ze)throw new TypeError("Expected a string, got a ".concat(j()(ze)));return"/"===ze[0]&&(ze=ze.substr(1)),""===ze?[]:he()(wt=ze.split("/")).call(wt,da)}function da(ze){return"string"!=typeof ze?ze:new qi.a("=".concat(ze.replace(/~1/g,"/").replace(/~0/g,"~"))).get("")}function xa(ze){var wt,kt=new qi.a([["",ze.replace(/~/g,"~0").replace(/\//g,"~1")]]);return St()(wt=kt.toString()).call(wt,1)}function Ra(ze,wt){if(!(kt=wt)||"/"===kt||"#"===kt)return!0;var kt,tn=ze.charAt(wt.length),ur=St()(wt).call(wt,-1);return 0===ze.indexOf(wt)&&(!tn||"/"===tn||"#"===tn)&&"#"!==ur}var Ml=t(110),Dl=t.n(Ml),Ca={key:"allOf",plugin:function(ze,wt,kt,tn,ur){if(!ur.meta||!ur.meta.$$ref){var gn=St()(kt).call(kt,0,-1);if(!zo(gn)){if(!Array.isArray(ze)){var xr=new TypeError("allOf must be an array");return xr.fullPath=kt,xr}var Zr=!1,Pr=ur.value;if(gn.forEach(function(si){Pr&&(Pr=Pr[si])}),Pr=En()({},Pr),!Dl()(Pr)){delete Pr.allOf;var mi,ii=[];return ii.push(tn.replace(gn,{})),ze.forEach(function(si,bi){if(!tn.isObject(si)){if(Zr)return null;Zr=!0;var Ui=new TypeError("Elements in allOf must be objects");return Ui.fullPath=kt,ii.push(Ui)}ii.push(tn.mergeDeep(gn,si));var io=function(vo,Bi){var hi=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Br=hi.specmap,G=hi.getBaseUrlForNodePath,Se=void 0===G?function(In){var Xn;return Br.getContext(u()(Xn=[]).call(Xn,lt()(Bi),lt()(In))).baseDoc}:G,ft=hi.targetKeys,Ft=void 0===ft?["$ref","$$ref"]:ft,Bt=[];return Bo()(vo).forEach(function(){if(M()(Ft).call(Ft,this.key)&&"string"==typeof this.node){var In=this.path,Xn=u()(Bi).call(Bi,this.path),Sr=oa(this.node,Se(In));Bt.push(Br.replace(Xn,Sr))}}),Bt}(si,St()(kt).call(kt,0,-1),{getBaseUrlForNodePath:function(vo){var Bi;return tn.getContext(u()(Bi=[]).call(Bi,lt()(kt),[bi],lt()(vo))).baseDoc},specmap:tn});ii.push.apply(ii,lt()(io))}),ii.push(tn.mergeDeep(gn,Pr)),!Pr.$$ref&&ii.push(tn.remove(u()(mi=[]).call(mi,gn,"$$ref"))),ii}}}}},sa={key:"parameters",plugin:function(ze,wt,kt,tn){if(Array.isArray(ze)&&ze.length){var ur=ut()([],ze),gn=St()(kt).call(kt,0,-1),xr=En()({},rt.getIn(tn.spec,gn));return ze.forEach(function(Zr,Pr){try{ur[Pr].default=tn.parameterMacro(xr,Zr)}catch(ii){var mi=new Error(ii);return mi.fullPath=kt,mi}}),rt.replace(kt,ur)}return rt.replace(kt,ze)}},Fo={key:"properties",plugin:function(ze,wt,kt,tn){var ur=En()({},ze);for(var gn in ze)try{ur[gn].default=tn.modelPropertyMacro(ur[gn])}catch(Zr){var xr=new Error(Zr);return xr.fullPath=kt,xr}return rt.replace(kt,ur)}},Ka=function(){function ze(wt){Dn()(this,ze),this.root=Sa(wt||{})}return jn()(ze,[{key:"set",value:function(wt,kt){var tn=this.getParent(wt,!0);if(tn){var ur=wt[wt.length-1],gn=tn.children;gn[ur]?fa(gn[ur],kt,tn):gn[ur]=Sa(kt,tn)}else fa(this.root,kt,null)}},{key:"get",value:function(wt){if((wt=wt||[]).length<1)return this.root.value;for(var kt,tn,ur=this.root,gn=0;gn<wt.length&&(kt=ur.children)[tn=wt[gn]];gn+=1)ur=kt[tn];return ur&&ur.protoValue}},{key:"getParent",value:function(wt,kt){return!wt||wt.length<1?null:wt.length<2?this.root:St()(wt).call(wt,0,-1).reduce(function(tn,ur){if(!tn)return tn;var gn=tn.children;return!gn[ur]&&kt&&(gn[ur]=Sa(null,tn)),gn[ur]},this.root)}}]),ze}();function Sa(ze,wt){return fa({children:{}},ze,wt)}function fa(ze,wt,kt){return ze.value=wt||{},ze.protoValue=kt?En()(En()({},kt.protoValue),ze.value):ze.value,Ae()(ze.children).forEach(function(tn){var ur=ze.children[tn];ze.children[tn]=fa(ur,ur.value,ze)}),ze}var ks=function(){},Ua=function(){function ze(wt){var kt,tn,ur=this;Dn()(this,ze),ut()(this,{spec:"",debugLevel:"info",plugins:[],pluginHistory:{},errors:[],mutations:[],promisedPatches:[],state:{},patches:[],context:{},contextTree:new Ka,showDebug:!1,allPatches:[],pluginProp:"specMap",libMethods:ut()(Object.create(this),rt,{getInstance:function(){return ur}}),allowMetaPatches:!1},wt),this.get=this._get.bind(this),this.getContext=this._getContext.bind(this),this.hasRun=this._hasRun.bind(this),this.wrappedPlugins=ue()(kt=he()(tn=this.plugins).call(tn,this.wrapPlugin.bind(this))).call(kt,rt.isFunction),this.patches.push(rt.add([],this.spec)),this.patches.push(rt.context([],this.context)),this.updatePatches(this.patches)}return jn()(ze,[{key:"debug",value:function(wt){if(this.debugLevel===wt){for(var kt,tn=arguments.length,ur=new Array(tn>1?tn-1:0),gn=1;gn<tn;gn++)ur[gn-1]=arguments[gn];(kt=console).log.apply(kt,ur)}}},{key:"verbose",value:function(wt){if("verbose"===this.debugLevel){for(var kt,tn,ur=arguments.length,gn=new Array(ur>1?ur-1:0),xr=1;xr<ur;xr++)gn[xr-1]=arguments[xr];(kt=console).log.apply(kt,u()(tn=["[".concat(wt,"]   ")]).call(tn,gn))}}},{key:"wrapPlugin",value:function(wt,kt){var tn,ur,gn,xr=this.pathDiscriminator,Zr=null;return wt[this.pluginProp]?(Zr=wt,tn=wt[this.pluginProp]):rt.isFunction(wt)?tn=wt:rt.isObject(wt)&&(ur=wt,gn=function(Pr,mi){return!Array.isArray(Pr)||Pr.every(function(ii,si){return ii===mi[si]})},tn=b.a.mark(function Pr(mi,ii){var si,bi,Ui,io,vo,Bi;return b.a.wrap(function(hi){for(;;)switch(hi.prev=hi.next){case 0:Bi=function(Br,G,Se){var ft,Ft,Bt,In,Xn,Sr,pi,Fr,zr,Un,lr,dr,li;return b.a.wrap(function(Ti){for(;;)switch(Ti.prev=Ti.next){case 0:if(rt.isObject(Br)){Ti.next=6;break}if(ur.key!==G[G.length-1]){Ti.next=4;break}return Ti.next=4,ur.plugin(Br,ur.key,G,ii);case 4:Ti.next=30;break;case 6:Ft=G[ft=G.length-1],Bt=G.indexOf("properties"),In="properties"===Ft&&ft===Bt,Xn=ii.allowMetaPatches&&bi[Br.$$ref],Sr=0,pi=Ae()(Br);case 12:if(!(Sr<pi.length)){Ti.next=30;break}if(zr=Br[Fr=pi[Sr]],Un=u()(G).call(G,Fr),lr=rt.isObject(zr),dr=Br.$$ref,Xn){Ti.next=22;break}if(!lr){Ti.next=22;break}return ii.allowMetaPatches&&dr&&(bi[dr]=!0),Ti.delegateYield(Bi(zr,Un,Se),"t0",22);case 22:if(In||Fr!==ur.key){Ti.next=27;break}if(li=gn(xr,G),xr&&!li){Ti.next=27;break}return Ti.next=27,ur.plugin(zr,Fr,Un,ii,Se);case 27:Sr++,Ti.next=12;break;case 30:case"end":return Ti.stop()}},si)},si=b.a.mark(Bi),bi={},Ui=D()(ue()(mi).call(mi,rt.isAdditiveMutation)),hi.prev=4,Ui.s();case 6:if((io=Ui.n()).done){hi.next=11;break}return hi.delegateYield(Bi((vo=io.value).value,vo.path,vo),"t0",9);case 9:hi.next=6;break;case 11:hi.next=16;break;case 13:hi.prev=13,hi.t1=hi.catch(4),Ui.e(hi.t1);case 16:return hi.prev=16,Ui.f(),hi.finish(16);case 19:case"end":return hi.stop()}},Pr,null,[[4,13,16,19]])})),ut()(tn.bind(Zr),{pluginName:wt.name||kt,isGenerator:rt.isGenerator(tn)})}},{key:"nextPlugin",value:function(){var wt,kt=this;return Tt()(wt=this.wrappedPlugins).call(wt,function(tn){return kt.getMutationsForPlugin(tn).length>0})}},{key:"nextPromisedPatch",value:function(){var wt;if(this.promisedPatches.length>0)return et.a.race(he()(wt=this.promisedPatches).call(wt,function(kt){return kt.value}))}},{key:"getPluginHistory",value:function(wt){var kt=this.constructor.getPluginName(wt);return this.pluginHistory[kt]||[]}},{key:"getPluginRunCount",value:function(wt){return this.getPluginHistory(wt).length}},{key:"getPluginHistoryTip",value:function(wt){var kt=this.getPluginHistory(wt);return kt&&kt[kt.length-1]||{}}},{key:"getPluginMutationIndex",value:function(wt){var kt=this.getPluginHistoryTip(wt).mutationIndex;return"number"!=typeof kt?-1:kt}},{key:"updatePluginHistory",value:function(wt,kt){var tn=this.constructor.getPluginName(wt);this.pluginHistory[tn]=this.pluginHistory[tn]||[],this.pluginHistory[tn].push(kt)}},{key:"updatePatches",value:function(wt){var kt=this;rt.normalizeArray(wt).forEach(function(tn){if(tn instanceof Error)kt.errors.push(tn);else try{if(!rt.isObject(tn))return void kt.debug("updatePatches","Got a non-object patch",tn);if(kt.showDebug&&kt.allPatches.push(tn),rt.isPromise(tn.value))return kt.promisedPatches.push(tn),void kt.promisedPatchThen(tn);if(rt.isContextPatch(tn))return void kt.setContext(tn.path,tn.value);if(rt.isMutation(tn))return void kt.updateMutations(tn)}catch(ur){console.error(ur),kt.errors.push(ur)}})}},{key:"updateMutations",value:function(wt){"object"===j()(wt.value)&&!Array.isArray(wt.value)&&this.allowMetaPatches&&(wt.value=En()({},wt.value));var kt=rt.applyPatch(this.state,wt,{allowMetaPatches:this.allowMetaPatches});kt&&(this.mutations.push(wt),this.state=kt)}},{key:"removePromisedPatch",value:function(wt){var kt,tn=this.promisedPatches.indexOf(wt);tn<0?this.debug("Tried to remove a promisedPatch that isn't there!"):hn()(kt=this.promisedPatches).call(kt,tn,1)}},{key:"promisedPatchThen",value:function(wt){var kt=this;return wt.value=wt.value.then(function(tn){var ur=En()(En()({},wt),{},{value:tn});kt.removePromisedPatch(wt),kt.updatePatches(ur)}).catch(function(tn){kt.removePromisedPatch(wt),kt.updatePatches(tn)}),wt.value}},{key:"getMutations",value:function(wt,kt){var tn;return wt=wt||0,"number"!=typeof kt&&(kt=this.mutations.length),St()(tn=this.mutations).call(tn,wt,kt)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(wt){var kt=this.getPluginMutationIndex(wt);return this.getMutations(kt+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(wt){return rt.getIn(this.state,wt)}},{key:"_getContext",value:function(wt){return this.contextTree.get(wt)}},{key:"setContext",value:function(wt,kt){return this.contextTree.set(wt,kt)}},{key:"_hasRun",value:function(wt){return this.getPluginRunCount(this.getCurrentPlugin())>(wt||0)}},{key:"dispatch",value:function(){var wt,kt=this,tn=this,ur=this.nextPlugin();if(!ur){var gn=this.nextPromisedPatch();if(gn)return gn.then(function(){return kt.dispatch()}).catch(function(){return kt.dispatch()});var xr={spec:this.state,errors:this.errors};return this.showDebug&&(xr.patches=this.allPatches),et.a.resolve(xr)}if(tn.pluginCount=tn.pluginCount||{},tn.pluginCount[ur]=(tn.pluginCount[ur]||0)+1,tn.pluginCount[ur]>100)return et.a.resolve({spec:tn.state,errors:u()(wt=tn.errors).call(wt,new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(ur!==this.currentPlugin&&this.promisedPatches.length){var Zr,Pr=he()(Zr=this.promisedPatches).call(Zr,function(ii){return ii.value});return et.a.all(he()(Pr).call(Pr,function(ii){return ii.then(ks,ks)})).then(function(){return kt.dispatch()})}return function(){tn.currentPlugin=ur;var ii=tn.getCurrentMutations(),si=tn.mutations.length-1;try{if(ur.isGenerator){var bi,Ui=D()(ur(ii,tn.getLib()));try{for(Ui.s();!(bi=Ui.n()).done;)mi(bi.value)}catch(io){Ui.e(io)}finally{Ui.f()}}else mi(ur(ii,tn.getLib()))}catch(io){console.error(io),mi([ut()(Object.create(io),{plugin:ur})])}finally{tn.updatePluginHistory(ur,{mutationIndex:si})}return tn.dispatch()}();function mi(ii){ii&&(ii=rt.fullyNormalizeArray(ii),tn.updatePatches(ii,ur))}}}],[{key:"getPluginName",value:function(wt){return wt.pluginName}},{key:"getPatchesOfType",value:function(wt,kt){return ue()(wt).call(wt,kt)}}]),ze}(),pt={refs:ni,allOf:Ca,parameters:sa,properties:Fo},an=t(59);function Nt(ze){var wt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},kt=wt.requestInterceptor,tn=wt.responseInterceptor,ur=ze.withCredentials?"include":"same-origin";return function(gn){return ze({url:gn,loadSpec:!0,requestInterceptor:kt,responseInterceptor:tn,headers:{Accept:Er},credentials:ur}).then(function(xr){return xr.body})}}function Ce(ze){var kt=ze.spec,ur=ze.mode,gn=ze.allowMetaPatches,xr=void 0===gn||gn,Zr=ze.pathDiscriminator,Pr=ze.modelPropertyMacro,mi=ze.parameterMacro,ii=ze.requestInterceptor,si=ze.responseInterceptor,bi=ze.skipNormalization,Ui=ze.useCircularStructures,io=ze.http,vo=ze.baseDoc;return vo=vo||ze.url,io=ze.fetch||io||Jt,kt?Bi(kt):Nt(io,{requestInterceptor:ii,responseInterceptor:si})(vo).then(Bi);function Bi(hi){vo&&(pt.refs.docCache[vo]=hi),pt.refs.fetchJSON=Nt(io,{requestInterceptor:ii,responseInterceptor:si});var Br,Se,G=[pt.refs];return"function"==typeof mi&&G.push(pt.parameters),"function"==typeof Pr&&G.push(pt.properties),"strict"!==ur&&G.push(pt.allOf),(Br={spec:hi,context:{baseDoc:vo},plugins:G,allowMetaPatches:xr,pathDiscriminator:Zr,parameterMacro:mi,modelPropertyMacro:Pr,useCircularStructures:Ui},new Ua(Br).dispatch()).then(bi?(Se=_()(b.a.mark(function ft(Ft){return b.a.wrap(function(Bt){for(;;)switch(Bt.prev=Bt.next){case 0:return Bt.abrupt("return",Ft);case 1:case"end":return Bt.stop()}},ft)})),function(ft){return Se.apply(this,arguments)}):an.d)}}var ye=t(54),Ne=t.n(ye),Wt=t(39),Or=t.n(Wt),Ni=t(140),Yo=t.n(Ni),ms=t(474),ss=t.n(ms),Lo={body:function(ze){ze.req.body=ze.value},header:function(ze){var wt=ze.req,kt=ze.parameter,tn=ze.value;wt.headers=wt.headers||{},void 0!==tn&&(wt.headers[kt.name]=tn)},query:function(ze){var wt=ze.req,kt=ze.value,tn=ze.parameter;if(wt.query=wt.query||{},!1===kt&&"boolean"===tn.type&&(kt="false"),0===kt&&["number","integer"].indexOf(tn.type)>-1&&(kt="0"),kt)wt.query[tn.name]={collectionFormat:tn.collectionFormat,value:kt};else if(tn.allowEmptyValue&&void 0!==kt){var ur=tn.name;wt.query[ur]=wt.query[ur]||{},wt.query[ur].allowEmptyValue=!0}},path:function(ze){var wt=ze.req,kt=ze.value;wt.url=wt.url.split("{".concat(ze.parameter.name,"}")).join(encodeURIComponent(kt))},formData:function(ze){var wt=ze.req,kt=ze.value,tn=ze.parameter;(kt||tn.allowEmptyValue)&&(wt.form=wt.form||{},wt.form[tn.name]={value:kt,allowEmptyValue:tn.allowEmptyValue,collectionFormat:tn.collectionFormat})}};function Zo(ze,wt){return M()(wt).call(wt,"application/json")?"string"==typeof ze?ze:fe()(ze):ze.toString()}function Ea(ze){var wt=ze.req,kt=ze.value,tn=ze.parameter,ur=tn.name,gn=tn.style,xr=tn.explode,Zr=tn.content;if(Zr){var Pr=Ae()(Zr)[0];wt.url=wt.url.split("{".concat(ur,"}")).join(It(Zo(kt,Pr),{escape:!0}))}else{var mi=ae({key:tn.name,value:kt,style:gn||"simple",explode:xr||!1,escape:!0});wt.url=wt.url.split("{".concat(ur,"}")).join(mi)}}function ul(ze){var wt=ze.req,kt=ze.value,tn=ze.parameter;if(wt.query=wt.query||{},tn.content){var ur=Ae()(tn.content)[0];wt.query[tn.name]=Zo(kt,ur)}else if(!1===kt&&(kt="false"),0===kt&&(kt="0"),kt)wt.query[tn.name]={value:kt,serializationOption:{style:tn.style,explode:tn.explode,allowReserved:tn.allowReserved}};else if(tn.allowEmptyValue&&void 0!==kt){var Pr=tn.name;wt.query[Pr]=wt.query[Pr]||{},wt.query[Pr].allowEmptyValue=!0}}var Ma=["accept","authorization","content-type"];function va(ze){var wt=ze.req,kt=ze.parameter,tn=ze.value;if(wt.headers=wt.headers||{},!(Ma.indexOf(kt.name.toLowerCase())>-1))if(kt.content){var ur=Ae()(kt.content)[0];wt.headers[kt.name]=Zo(tn,ur)}else void 0!==tn&&(wt.headers[kt.name]=ae({key:kt.name,value:tn,style:kt.style||"simple",explode:void 0!==kt.explode&&kt.explode,escape:!1}))}function bs(ze){var wt=ze.req,kt=ze.parameter,tn=ze.value;wt.headers=wt.headers||{};var ur=j()(tn);if(kt.content){var gn,xr=Ae()(kt.content)[0];wt.headers.Cookie=u()(gn="".concat(kt.name,"=")).call(gn,Zo(tn,xr))}else if("undefined"!==ur){var Zr="object"===ur&&!Array.isArray(tn)&&kt.explode?"":"".concat(kt.name,"=");wt.headers.Cookie=Zr+ae({key:kt.name,value:tn,escape:!1,style:kt.style||"form",explode:void 0!==kt.explode&&kt.explode})}}var $o=t(201),Ol=t.n($o),il=["http","fetch","spec","operationId","pathName","method","parameters","securities"],Il=function(ze){return Array.isArray(ze)?ze:[]},Bl=Go("OperationNotFoundError",function(ze,wt,kt){this.originalError=kt,ut()(this,wt||{})}),Na={buildRequest:vs};function Di(ze){var wt=ze.http,kt=ze.fetch,tn=ze.spec,ur=ze.operationId,gn=ze.pathName,xr=ze.method,Zr=ze.parameters,Pr=ze.securities,mi=Ne()(ze,il),ii=wt||kt||Jt;gn&&xr&&!ur&&(ur=Object(an.c)(gn,xr));var si=Na.buildRequest(En()({spec:tn,operationId:ur,parameters:Zr,securities:Pr,http:ii},mi));return si.body&&(Yo()(si.body)||Array.isArray(si.body))&&(si.body=fe()(si.body)),ii(si)}function vs(ze){var wt,kt,tn=ze.spec,ur=ze.operationId,gn=ze.responseContentType,xr=ze.scheme,Zr=ze.requestInterceptor,Pr=ze.responseInterceptor,mi=ze.contextUrl,ii=ze.userFetch,si=ze.server,bi=ze.serverVariables,Ui=ze.http,io=ze.parameters,vo=ze.parameterBuilders,Bi=Object(an.b)(tn);vo||(vo=Bi?a:Lo);var hi={url:"",credentials:Ui&&Ui.withCredentials?"include":"same-origin",headers:{},cookies:{}};Zr&&(hi.requestInterceptor=Zr),Pr&&(hi.responseInterceptor=Pr),ii&&(hi.userFetch=ii);var Br=Object(an.a)(tn,ur);if(!Br)throw new Bl("Operation ".concat(ur," not found"));var G,Fr,zr,Un,lr,dr,li,Ao,Qo,jo,uo,eo,Se=Br.operation,ft=void 0===Se?{}:Se,Ft=Br.method,Bt=Br.pathName;if(hi.url+=(G={spec:tn,scheme:xr,contextUrl:mi,server:si,serverVariables:bi,pathName:Bt,method:Ft},Object(an.b)(G.spec)?function(Fr){var zr=Fr.spec,Un=Fr.pathName,lr=Fr.method,dr=Fr.server,li=Fr.contextUrl,Ti=Fr.serverVariables,Ao=void 0===Ti?{}:Ti,Qo=Or()(zr,["paths",Un,(lr||"").toLowerCase(),"servers"])||Or()(zr,["paths",Un,"servers"])||Or()(zr,["servers"]),jo="",uo=null;if(dr&&Qo&&Qo.length){var eo=he()(Qo).call(Qo,function(Zi){return Zi.url});eo.indexOf(dr)>-1&&(jo=dr,uo=Qo[eo.indexOf(dr)])}if(!jo&&Qo&&Qo.length){jo=Qo[0].url;var Ho=z()(Qo,1);uo=Ho[0]}return jo.indexOf("{")>-1&&function(Zi){for(var na,ha=[],fl=/{([^}]+)}/g;na=fl.exec(Zi);)ha.push(na[1]);return ha}(jo).forEach(function(Zi){if(uo.variables&&uo.variables[Zi]){var ha=Ao[Zi]||uo.variables[Zi].default,fl=new RegExp("{".concat(Zi,"}"),"g");jo=jo.replace(fl,ha)}}),function(){var Zi,na,ha=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",fl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",Hn=zi.a.parse(ha&&fl?zi.a.resolve(fl,ha):ha),Es=zi.a.parse(fl),Ll=pa(Hn.protocol)||pa(Es.protocol)||"",Hl=Hn.host||Es.host,mo=Hn.pathname||"";return"/"===(Zi=Ll&&Hl?u()(na="".concat(Ll,"://")).call(na,Hl+mo):mo)[Zi.length-1]?St()(Zi).call(Zi,0,-1):Zi}(jo,li)}(G):(lr=(Fr=G).spec,dr=Fr.scheme,Ao=zi.a.parse(void 0===(li=Fr.contextUrl)?"":li),Qo=Array.isArray(lr.schemes)?lr.schemes[0]:null,jo=dr||Qo||pa(Ao.protocol)||"http",uo=lr.host||Ao.host||"",eo=lr.basePath||"","/"===(zr=jo&&uo?u()(Un="".concat(jo,"://")).call(Un,uo+eo):eo)[zr.length-1]?St()(zr).call(zr,0,-1):zr)),!ur)return delete hi.cookies,hi;hi.url+=Bt,hi.method="".concat(Ft).toUpperCase(),io=io||{};var In=tn.paths[Bt]||{};gn&&(hi.headers.accept=gn);var Xn=function(Fr){var zr={};Fr.forEach(function(lr){zr[lr.in]||(zr[lr.in]={}),zr[lr.in][lr.name]=lr});var Un=[];return Ae()(zr).forEach(function(lr){Ae()(zr[lr]).forEach(function(dr){Un.push(zr[lr][dr])})}),Un}(u()(wt=u()(kt=[]).call(kt,Il(ft.parameters))).call(wt,Il(In.parameters)));Xn.forEach(function(Fr){var zr,Un,lr=vo[Fr.in];if("body"===Fr.in&&Fr.schema&&Fr.schema.properties&&(zr=io),void 0===(zr=Fr&&Fr.name&&io[Fr.name]))zr=Fr&&Fr.name&&io[u()(Un="".concat(Fr.in,".")).call(Un,Fr.name)];else if(function(li,Ti){return ue()(Ti).call(Ti,function(Ao){return Ao.name===li})}(Fr.name,Xn).length>1){var dr;console.warn(u()(dr="Parameter '".concat(Fr.name,"' is ambiguous because the defined spec has more than one parameter with the name: '")).call(dr,Fr.name,"' and the passed-in parameter values did not define an 'in' value."))}if(null!==zr){if(void 0!==Fr.default&&void 0===zr&&(zr=Fr.default),void 0===zr&&Fr.required&&!Fr.allowEmptyValue)throw new Error("Required parameter ".concat(Fr.name," is not provided"));if(Bi&&Fr.schema&&"object"===Fr.schema.type&&"string"==typeof zr)try{zr=JSON.parse(zr)}catch(li){throw new Error("Could not parse object parameter value string as JSON")}lr&&lr({req:hi,parameter:Fr,value:zr,operation:ft,spec:tn})}});var Sr=En()(En()({},ze),{},{operation:ft});if((hi=Bi?function(ze,wt){var vo,Bi,hi,Br,G,Se,ft,Ft,Bt,In,Xn,Sr,pi,kt=ze.operation,tn=ze.requestBody,xr=ze.attachContentTypeForEmptyPayload,Zr=ze.requestContentType;Bi=(vo={request:wt,securities:ze.securities,operation:kt,spec:ze.spec}).request,Br=void 0===(hi=vo.securities)?{}:hi,Se=void 0===(G=vo.operation)?{}:G,ft=vo.spec,Ft=En()({},Bi),Xn=Se.security||ft.security||[],Sr=(In=void 0===(Bt=Br.authorized)?{}:Bt)&&!!Ae()(In).length,pi=Or()(ft,["components","securitySchemes"])||{},Ft.headers=Ft.headers||{},Ft.query=Ft.query||{},wt=Ae()(Br).length&&Sr&&Xn&&(!Array.isArray(Se.security)||Se.security.length)?(Xn.forEach(function(Fr){Ae()(Fr).forEach(function(zr){var Un=In[zr],lr=pi[zr];if(Un){var dr=Un.value||Un,li=lr.type;if(Un)if("apiKey"===li)"query"===lr.in&&(Ft.query[lr.name]=dr),"header"===lr.in&&(Ft.headers[lr.name]=dr),"cookie"===lr.in&&(Ft.cookies[lr.name]=dr);else if("http"===li){if(/^basic$/i.test(lr.scheme)){var Ti,Ao=dr.username||"",Qo=dr.password||"",jo=Ol()(u()(Ti="".concat(Ao,":")).call(Ti,Qo));Ft.headers.Authorization="Basic ".concat(jo)}/^bearer$/i.test(lr.scheme)&&(Ft.headers.Authorization="Bearer ".concat(dr))}else if("oauth2"===li||"openIdConnect"===li){var uo,eo=Un.token||{},Ho=eo[lr["x-tokenName"]||"access_token"],Zi=eo.token_type;Zi&&"bearer"!==Zi.toLowerCase()||(Zi="Bearer"),Ft.headers.Authorization=u()(uo="".concat(Zi," ")).call(uo,Ho)}}})}),Ft):Bi;var Pr=kt.requestBody||{},mi=Ae()(Pr.content||{}),ii=Zr&&mi.indexOf(Zr)>-1;if(tn||xr){if(Zr&&ii)wt.headers["Content-Type"]=Zr;else if(!Zr){var si=mi[0];si&&(wt.headers["Content-Type"]=si,Zr=si)}}else Zr&&ii&&(wt.headers["Content-Type"]=Zr);if(!ze.responseContentType&&kt.responses){var bi,Ui=ue()(bi=Oe()(kt.responses)).call(bi,function(vo){var Bi=z()(vo,2),Br=Bi[1],G=parseInt(Bi[0],10);return G>=200&&G<300&&Yo()(Br.content)}).reduce(function(vo,Bi){var hi=z()(Bi,2)[1];return u()(vo).call(vo,Ae()(hi.content))},[]);Ui.length>0&&(wt.headers.accept=Ui.join(", "))}if(tn)if(Zr){if(mi.indexOf(Zr)>-1)if("application/x-www-form-urlencoded"===Zr||"multipart/form-data"===Zr)if("object"===j()(tn)){var io=(Pr.content[Zr]||{}).encoding||{};wt.form={},Ae()(tn).forEach(function(vo){wt.form[vo]={value:tn[vo],encoding:io[vo]||{}}})}else wt.form=tn;else wt.body=tn}else wt.body=tn;return wt}(Sr,hi):function(ze,wt){var kt,tn,Bi,hi,Br,G,Se,ft,Ft,Bt,In,Xn,Sr,Fr,zr,Un,ur=ze.spec,gn=ze.operation,Zr=ze.requestContentType,Pr=ze.responseContentType,mi=ze.attachContentTypeForEmptyPayload;if((Bi={request:wt,securities:ze.securities,operation:gn,spec:ur},hi=Bi.request,Br=Bi.securities,G=void 0===Br?{}:Br,Se=Bi.operation,ft=void 0===Se?{}:Se,Ft=Bi.spec,Bt=En()({},hi),In=G.authorized,Xn=void 0===In?{}:In,Sr=G.specSecurity,Fr=ft.security||(void 0===Sr?[]:Sr),zr=Xn&&!!Ae()(Xn).length,Un=Ft.securityDefinitions,Bt.headers=Bt.headers||{},Bt.query=Bt.query||{},wt=Ae()(G).length&&zr&&Fr&&(!Array.isArray(ft.security)||ft.security.length)?(Fr.forEach(function(lr){Ae()(lr).forEach(function(dr){var li=Xn[dr];if(li){var Ti=li.token,Ao=li.value||li,Qo=Un[dr],jo=Qo.type,eo=Ti&&Ti[Qo["x-tokenName"]||"access_token"],Ho=Ti&&Ti.token_type;if(li)if("apiKey"===jo){var Zi="query"===Qo.in?"query":"headers";Bt[Zi]=Bt[Zi]||{},Bt[Zi][Qo.name]=Ao}else if("basic"===jo)if(Ao.header)Bt.headers.authorization=Ao.header;else{var na,ha=Ao.username||"",fl=Ao.password||"";Ao.base64=Ol()(u()(na="".concat(ha,":")).call(na,fl)),Bt.headers.authorization="Basic ".concat(Ao.base64)}else if("oauth2"===jo&&eo){var Hn;Ho=Ho&&"bearer"!==Ho.toLowerCase()?Ho:"Bearer",Bt.headers.authorization=u()(Hn="".concat(Ho," ")).call(Hn,eo)}}})}),Bt):hi).body||wt.form||mi)if(Zr)wt.headers["Content-Type"]=Zr;else if(Array.isArray(gn.consumes)){var ii=z()(gn.consumes,1);wt.headers["Content-Type"]=ii[0]}else if(Array.isArray(ur.consumes)){var si=z()(ur.consumes,1);wt.headers["Content-Type"]=si[0]}else gn.parameters&&ue()(kt=gn.parameters).call(kt,function(Bi){return"file"===Bi.type}).length?wt.headers["Content-Type"]="multipart/form-data":gn.parameters&&ue()(tn=gn.parameters).call(tn,function(Bi){return"formData"===Bi.in}).length&&(wt.headers["Content-Type"]="application/x-www-form-urlencoded");else if(Zr){var bi,Ui,io=gn.parameters&&ue()(bi=gn.parameters).call(bi,function(Bi){return"body"===Bi.in}).length>0,vo=gn.parameters&&ue()(Ui=gn.parameters).call(Ui,function(Bi){return"formData"===Bi.in}).length>0;(io||vo)&&(wt.headers["Content-Type"]=Zr)}return!Pr&&Array.isArray(gn.produces)&&gn.produces.length>0&&(wt.headers.accept=gn.produces.join(", ")),wt}(Sr,hi)).cookies&&Ae()(hi.cookies).length){var pi=Ae()(hi.cookies).reduce(function(Fr,zr){return Fr+(Fr?"&":"")+ss.a.serialize(zr,hi.cookies[zr])},"");hi.headers.Cookie=pi}return hi.cookies&&delete hi.cookies,qn(hi),hi}var pa=function(ze){return ze?ze.replace(/\W/g,""):null};function Vo(ze,wt){return ja.apply(this,arguments)}function ja(){return(ja=_()(b.a.mark(function ze(wt,kt){var tn,ur,si,bi,Ui,io,vo=arguments;return b.a.wrap(function(Bi){for(;;)switch(Bi.prev=Bi.next){case 0:return ur=(tn=vo.length>2&&void 0!==vo[2]?vo[2]:{}).returnEntireTree,si={pathDiscriminator:kt,baseDoc:tn.baseDoc,requestInterceptor:tn.requestInterceptor,responseInterceptor:tn.responseInterceptor,parameterMacro:tn.parameterMacro,modelPropertyMacro:tn.modelPropertyMacro,useCircularStructures:tn.useCircularStructures},bi=Object(an.d)({spec:wt}),Ui=bi.spec,Bi.next=6,Ce(En()(En()({},si),{},{spec:Ui,allowMetaPatches:!0,skipNormalization:!0}));case 6:return io=Bi.sent,!ur&&Array.isArray(kt)&&kt.length&&(io.spec=Or()(io.spec,kt)||null),Bi.abrupt("return",io);case 9:case"end":return Bi.stop()}},ze)}))).apply(this,arguments)}var hs=t(276);o.default=function(ze){var wt,kt,tn,ur=ze.configs,gn=ze.getConfigs;return{fn:{fetch:(wt=Jt,kt=ur.preFetch,tn=ur.postFetch,tn=tn||function(xr){return xr},kt=kt||function(xr){return xr},function(xr){return"string"==typeof xr&&(xr={url:xr}),dt.mergeInQueryOrForm(xr),xr=kt(xr),tn(wt(xr))}),buildRequest:vs,execute:Di,resolve:Ce,resolveSubtree:function(xr,Zr,Pr){var mi;if(void 0===Pr){var ii=gn();Pr={modelPropertyMacro:ii.modelPropertyMacro,parameterMacro:ii.parameterMacro,requestInterceptor:ii.requestInterceptor,responseInterceptor:ii.responseInterceptor}}for(var si=arguments.length,bi=new Array(si>3?si-3:0),Ui=3;Ui<si;Ui++)bi[Ui-3]=arguments[Ui];return Vo.apply(void 0,u()(mi=[xr,Zr,Pr]).call(mi,bi))},serializeRes:Ln,opId:an.e},statePlugins:{configs:{wrapActions:hs}}}}},function(g,o,t){"use strict";t.r(o),t.d(o,"default",function(){return _});var e=t(162),s=t(144),a=t(283),l=t(284),u=t(285),h={getLocalConfig:function(){return Object(e.parseYamlConfig)('---\nurl: "https://petstore.swagger.io/v2/swagger.json"\ndom_id: "#swagger-ui"\nvalidatorUrl: "https://validator.swagger.io/validator"\n')}};function _(){return{statePlugins:{spec:{actions:a,selectors:h},configs:{reducers:u.default,actions:s,selectors:l}}}}},function(g,o,t){var e=t(393),s=t(189),a=t(710),l=t(52),u=t(370);g.exports=function(h,_,m){var b=l(h)?e:a;return m&&u(h,_,m)&&(_=void 0),b(h,s(_,3))}},function(g,o,t){"use strict";var e=t(408),s=t(409),a=t(730);g.exports=function(l){var u,h=e(arguments[1]);return h.normalizer||0!==(u=h.length=s(h.length,l.length,h.async))&&(h.primitive?!1===u?h.normalizer=t(765):u>1&&(h.normalizer=t(766)(u)):h.normalizer=!1===u?t(767)():1===u?t(771)():t(772)(u)),h.async&&t(773),h.promise&&t(774),h.dispose&&t(780),h.maxAge&&t(781),h.max&&t(784),h.refCounter&&t(786),a(l,h)}},function(g,o,t){g.exports=t(347)},function(g,o,t){g.exports=t(844)},function(g,o,t){var e=t(850);g.exports=function(s,a,l){return null==s?s:e(s,a,l)}},function(g,o,t){"use strict";var e=t(269),s={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},l={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function h(j){return e.isMemo(j)?l:u[j.$$typeof]||s}u[e.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},u[e.Memo]=l;var _=Object.defineProperty,m=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,C=Object.getOwnPropertyDescriptor,D=Object.getPrototypeOf,x=Object.prototype;g.exports=function j(H,z,U){if("string"!=typeof z){if(x){var M=D(z);M&&M!==x&&j(H,M,U)}var I=m(z);b&&(I=I.concat(b(z)));for(var J=h(H),Y=h(z),ie=0;ie<I.length;++ie){var oe=I[ie];if(!(a[oe]||U&&U[oe]||Y&&Y[oe]||J&&J[oe])){var fe=C(z,oe);try{_(H,oe,fe)}catch(ne){}}}}return H}},function(g,o,t){"use strict";var e=t(911),s=t(912);o.highlight=l,o.highlightAuto=function(_,m){var b,C,D,x,j=m||{},H=j.subset||e.listLanguages(),z=j.prefix,U=H.length,M=-1;if(null==z&&(z=a),"string"!=typeof _)throw s("Expected `string` for value, got `%s`",_);for(C={relevance:0,language:null,value:[]},b={relevance:0,language:null,value:[]};++M<U;)e.getLanguage(x=H[M])&&((D=l(x,_,m)).language=x,D.relevance>C.relevance&&(C=D),D.relevance>b.relevance&&(C=b,b=D));return C.language&&(b.secondBest=C),b},o.registerLanguage=function(_,m){e.registerLanguage(_,m)},o.listLanguages=function(){return e.listLanguages()},o.registerAlias=function(_,m){var b,C=_;for(b in m&&((C={})[_]=m),C)e.registerAliases(C[b],{languageName:b})},u.prototype.addText=function(_){var m,b,C=this.stack;""!==_&&((b=(m=C[C.length-1]).children[m.children.length-1])&&"text"===b.type?b.value+=_:m.children.push({type:"text",value:_}))},u.prototype.addKeyword=function(_,m){this.openNode(m),this.addText(_),this.closeNode()},u.prototype.addSublanguage=function(_,m){var b=this.stack,C=b[b.length-1],D=_.rootNode.children;C.children=C.children.concat(m?{type:"element",tagName:"span",properties:{className:[m]},children:D}:D)},u.prototype.openNode=function(_){var m=this.stack,D={type:"element",tagName:"span",properties:{className:[this.options.classPrefix+_]},children:[]};m[m.length-1].children.push(D),m.push(D)},u.prototype.closeNode=function(){this.stack.pop()},u.prototype.closeAllNodes=h,u.prototype.finalize=h,u.prototype.toHTML=function(){return""};var a="hljs-";function l(_,m,b){var C,D=e.configure({}),x=(b||{}).prefix;if("string"!=typeof _)throw s("Expected `string` for name, got `%s`",_);if(!e.getLanguage(_))throw s("Unknown language: `%s` is not registered",_);if("string"!=typeof m)throw s("Expected `string` for value, got `%s`",m);if(null==x&&(x=a),e.configure({__emitter:u,classPrefix:x}),C=e.highlight(m,{language:_,ignoreIllegals:!0}),e.configure(D||{}),C.errorRaised)throw C.errorRaised;return{relevance:C.relevance,language:C.language,value:C.emitter.rootNode.children}}function u(_){this.options=_,this.rootNode={children:[]},this.stack=[this.rootNode]}function h(){}},function(g,o,t){g.exports=t(944)},function(g,o,t){var e=t(102);g.exports=function(s){return e(s).toLowerCase()}},function(g,o,t){"use strict";var e=t(974).DebounceInput;e.DebounceInput=e,g.exports=e},function(g,o,t){var e=t(379),s=t(372),a=t(187),l=t(380);g.exports=function(u){return e(u)||s(u)||a(u)||l()},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(33),l=t(146),u=t(43),h=t(62),_=t(74),m=t(147),b=t(215),C=t(148),D=t(38),x=t(128),j=D("isConcatSpreadable"),H=9007199254740991,z="Maximum allowed index exceeded",U=s.TypeError,M=x>=51||!a(function(){var Y=[];return Y[j]=!1,Y.concat()[0]!==Y}),I=C("concat"),J=function(Y){if(!u(Y))return!1;var ie=Y[j];return void 0!==ie?!!ie:l(Y)};e({target:"Array",proto:!0,forced:!M||!I},{concat:function(Y){var ie,oe,fe,ne,he,ce=h(this),Ae=b(ce,0),Me=0;for(ie=-1,fe=arguments.length;ie<fe;ie++)if(J(he=-1===ie?ce:arguments[ie])){if(Me+(ne=_(he))>H)throw U(z);for(oe=0;oe<ne;oe++,Me++)oe in he&&m(Ae,Me,he[oe])}else{if(Me>=H)throw U(z);m(Ae,Me++,he)}return Ae.length=Me,Ae}})},function(g,o,t){var e=t(210);g.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(g,o,t){var e=t(48),s=t(33),a=t(214);g.exports=!e&&!s(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a})},function(g,o,t){var e=t(33),s=t(41),a=/#|\.prototype\./,l=function(b,C){var D=h[u(b)];return D==m||D!=_&&(s(C)?e(C):!!C)},u=l.normalize=function(b){return String(b).replace(a,".").toLowerCase()},h=l.data={},_=l.NATIVE="N",m=l.POLYFILL="P";g.exports=l},function(g,o,t){var e=t(129),s=Math.min;g.exports=function(a){return a>0?s(e(a),9007199254740991):0}},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(58),l=t(93),u=t(50),h=t(27),_=t(96),m=t(48),b=t(210),C=t(33),D=t(44),x=t(146),j=t(41),H=t(43),z=t(35),U=t(209),M=t(51),I=t(62),J=t(61),Y=t(169),ie=t(67),oe=t(94),fe=t(98),ne=t(149),he=t(174),ce=t(336),Ae=t(222),Me=t(111),Oe=t(63),be=t(167),ue=t(86),He=t(99),$e=t(212),F=t(173),je=t(150),Et=t(171),lt=t(38),nn=t(223),St=t(45),At=t(100),Qe=t(76),It=t(87).forEach,ae=F("hidden"),Ie="Symbol",dt=lt("toPrimitive"),Jt=Qe.set,zt=Qe.getterFor(Ie),ln=Object.prototype,ar=s.Symbol,Ln=ar&&ar.prototype,Rn=s.TypeError,er=s.QObject,Mn=a("JSON","stringify"),Ht=Me.f,tr=Oe.f,Yn=ce.f,Cn=be.f,Kt=h([].push),dn=$e("symbols"),Kn=$e("op-symbols"),qn=$e("string-to-symbol-registry"),Sn=$e("symbol-to-string-registry"),$n=$e("wks"),En=!er||!er.prototype||!er.prototype.findChild,Fn=m&&C(function(){return 7!=fe(tr({},"a",{get:function(){return tr(this,"a",{value:7}).a}})).a})?function(et,jt,hn){var Qn=Ht(ln,jt);Qn&&delete ln[jt],tr(et,jt,hn),Qn&&et!==ln&&tr(ln,jt,Qn)}:tr,Dn=function(et,jt){var hn=dn[et]=fe(Ln);return Jt(hn,{type:Ie,tag:et,description:jt}),m||(hn.description=jt),hn},mn=function(et,jt,hn){et===ln&&mn(Kn,jt,hn),M(et);var Qn=Y(jt);return M(hn),D(dn,Qn)?(hn.enumerable?(D(et,ae)&&et[ae][Qn]&&(et[ae][Qn]=!1),hn=fe(hn,{enumerable:oe(0,!1)})):(D(et,ae)||tr(et,ae,oe(1,{})),et[ae][Qn]=!0),Fn(et,Qn,hn)):tr(et,Qn,hn)},jn=function(et,jt){M(et);var hn=J(jt),Qn=ne(hn).concat(Tt(hn));return It(Qn,function(Ir){m&&!u(Xt,hn,Ir)||mn(et,Ir,hn[Ir])}),et},Xt=function(et){var jt=Y(et),hn=u(Cn,this,jt);return!(this===ln&&D(dn,jt)&&!D(Kn,jt))&&(!(hn||!D(this,jt)||!D(dn,jt)||D(this,ae)&&this[ae][jt])||hn)},ut=function(et,jt){var hn=J(et),Qn=Y(jt);if(hn!==ln||!D(dn,Qn)||D(Kn,Qn)){var Ir=Ht(hn,Qn);return!Ir||!D(dn,Qn)||D(hn,ae)&&hn[ae][Qn]||(Ir.enumerable=!0),Ir}},mt=function(et){var jt=Yn(J(et)),hn=[];return It(jt,function(Qn){D(dn,Qn)||D(je,Qn)||Kt(hn,Qn)}),hn},Tt=function(et){var jt=et===ln,hn=Yn(jt?Kn:J(et)),Qn=[];return It(hn,function(Ir){!D(dn,Ir)||jt&&!D(ln,Ir)||Kt(Qn,dn[Ir])}),Qn};if(b||(He(Ln=(ar=function(){if(z(Ln,this))throw Rn("Symbol is not a constructor");var et=arguments.length&&void 0!==arguments[0]?ie(arguments[0]):void 0,jt=Et(et),hn=function(Qn){this===ln&&u(hn,Kn,Qn),D(this,ae)&&D(this[ae],jt)&&(this[ae][jt]=!1),Fn(this,jt,oe(1,Qn))};return m&&En&&Fn(ln,jt,{configurable:!0,set:hn}),Dn(jt,et)}).prototype,"toString",function(){return zt(this).tag}),He(ar,"withoutSetter",function(et){return Dn(Et(et),et)}),be.f=Xt,Oe.f=mn,Me.f=ut,he.f=ce.f=mt,Ae.f=Tt,nn.f=function(et){return Dn(lt(et),et)},m&&(tr(Ln,"description",{configurable:!0,get:function(){return zt(this).description}}),_||He(ln,"propertyIsEnumerable",Xt,{unsafe:!0}))),e({global:!0,wrap:!0,forced:!b,sham:!b},{Symbol:ar}),It(ne($n),function(et){St(et)}),e({target:Ie,stat:!0,forced:!b},{for:function(et){var jt=ie(et);if(D(qn,jt))return qn[jt];var hn=ar(jt);return qn[jt]=hn,Sn[hn]=jt,hn},keyFor:function(et){if(!U(et))throw Rn(et+" is not a symbol");if(D(Sn,et))return Sn[et]},useSetter:function(){En=!0},useSimple:function(){En=!1}}),e({target:"Object",stat:!0,forced:!b,sham:!m},{create:function(et,jt){return void 0===jt?fe(et):jn(fe(et),jt)},defineProperty:mn,defineProperties:jn,getOwnPropertyDescriptor:ut}),e({target:"Object",stat:!0,forced:!b},{getOwnPropertyNames:mt,getOwnPropertySymbols:Tt}),e({target:"Object",stat:!0,forced:C(function(){Ae.f(1)})},{getOwnPropertySymbols:function(et){return Ae.f(I(et))}}),Mn&&e({target:"JSON",stat:!0,forced:!b||C(function(){var et=ar();return"[null]"!=Mn([et])||"{}"!=Mn({a:et})||"{}"!=Mn(Object(et))})},{stringify:function(et,jt,hn){var Qn=ue(arguments),Ir=jt;if((H(jt)||void 0!==et)&&!U(et))return x(jt)||(jt=function(ht,L){if(j(Ir)&&(L=u(Ir,this,ht,L)),!U(L))return L}),Qn[1]=jt,l(Mn,null,Qn)}}),!Ln[dt]){var yn=Ln.valueOf;He(Ln,dt,function(et){return u(yn,this)})}At(ar,Ie),je[ae]=!0},function(g,o,t){var e=t(27),s=t(44),a=t(61),l=t(219).indexOf,u=t(150),h=e([].push);g.exports=function(_,m){var b,C=a(_),D=0,x=[];for(b in C)!s(u,b)&&s(C,b)&&h(x,b);for(;m.length>D;)s(C,b=m[D++])&&(~l(x,b)||h(x,b));return x}},function(g,o,t){var e=t(58);g.exports=e("document","documentElement")},function(g,o,t){var e=t(112),s=t(61),a=t(174).f,l=t(86),u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];g.exports.f=function(h){return u&&"Window"==e(h)?function(_){try{return a(_)}catch(m){return l(u)}}(h):a(s(h))}},function(g,o,t){var e=t(17),s=t(41),a=t(217),l=e.WeakMap;g.exports=s(l)&&/native code/.test(a(l))},function(g,o,t){t(45)("iterator")},function(g,o,t){var e=t(48),s=t(44),a=Function.prototype,l=e&&Object.getOwnPropertyDescriptor,u=s(a,"name"),h=u&&"something"===function(){}.name,_=u&&(!e||e&&l(a,"name").configurable);g.exports={EXISTS:u,PROPER:h,CONFIGURABLE:_}},function(g,o,t){"use strict";var e=t(341).IteratorPrototype,s=t(98),a=t(94),l=t(100),u=t(130),h=function(){return this};g.exports=function(_,m,b){var C=m+" Iterator";return _.prototype=s(e,{next:a(1,b)}),l(_,C,!1,!0),u[C]=h,_}},function(g,o,t){"use strict";var e,s,a,l=t(33),u=t(41),h=t(98),_=t(175),m=t(99),b=t(38),C=t(96),D=b("iterator"),x=!1;[].keys&&("next"in(a=[].keys())?(s=_(_(a)))!==Object.prototype&&(e=s):x=!0),null==e||l(function(){var j={};return e[D].call(j)!==j})?e={}:C&&(e=h(e)),u(e[D])||m(e,D,function(){return this}),g.exports={IteratorPrototype:e,BUGGY_SAFARI_ITERATORS:x}},function(g,o,t){var e=t(33);g.exports=!e(function(){function s(){}return s.prototype.constructor=null,Object.getPrototypeOf(new s)!==s.prototype})},function(g,o,t){var e=t(27),s=t(129),a=t(67),l=t(113),u=e("".charAt),h=e("".charCodeAt),_=e("".slice),m=function(b){return function(C,D){var x,j,H=a(l(C)),z=s(D),U=H.length;return z<0||z>=U?b?"":void 0:(x=h(H,z))<55296||x>56319||z+1===U||(j=h(H,z+1))<56320||j>57343?b?u(H,z):x:b?_(H,z,z+2):j-56320+(x-55296<<10)+65536}};g.exports={codeAt:m(!1),charAt:m(!0)}},function(g,o,t){var e=t(522);g.exports=e},function(g,o,t){var e=t(525);g.exports=e},function(g,o){var t={}.toString;g.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},function(g,o,t){var e=t(533);g.exports=e},function(g,o,t){"use strict";var e=t(17),s=t(27),a=t(73),l=t(43),u=t(44),h=t(86),_=e.Function,m=s([].concat),b=s([].join),C={},D=function(x,j,H){if(!u(C,j)){for(var z=[],U=0;U<j;U++)z[U]="a["+U+"]";C[j]=_("C,a","return new C("+b(z,",")+")")}return C[j](x,H)};g.exports=_.bind||function(x){var j=a(this),H=j.prototype,z=h(arguments,1),U=function(){var M=m(z,h(arguments));return this instanceof U?D(j,M.length,M):j.apply(x,M)};return l(H)&&(U.prototype=H),U}},function(g,o,t){var e=t(539);g.exports=e},function(g,o,t){"use strict";var e=t(48),s=t(27),a=t(50),l=t(33),u=t(149),h=t(222),_=t(167),m=t(62),b=t(168),C=Object.assign,D=Object.defineProperty,x=s([].concat);g.exports=!C||l(function(){if(e&&1!==C({b:1},C(D({},"a",{enumerable:!0,get:function(){D(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var j={},H={},z=Symbol(),U="abcdefghijklmnopqrst";return j[z]=7,U.split("").forEach(function(M){H[M]=M}),7!=C({},j)[z]||u(C({},H)).join("")!=U})?function(j,H){for(var z=m(j),U=arguments.length,M=1,I=h.f,J=_.f;U>M;)for(var Y,ie=b(arguments[M++]),oe=I?x(u(ie),I(ie)):u(ie),fe=oe.length,ne=0;fe>ne;)Y=oe[ne++],e&&!a(J,ie,Y)||(z[Y]=ie[Y]);return z}:C},function(g,o,t){var e=t(541);g.exports=e},function(g,o,t){var e=t(544);g.exports=e},function(g,o,t){"use strict";var e=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function l(u){if(null==u)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(u)}g.exports=function(){try{if(!Object.assign)return!1;var u=new String("abc");if(u[5]="de","5"===Object.getOwnPropertyNames(u)[0])return!1;for(var h={},_=0;_<10;_++)h["_"+String.fromCharCode(_)]=_;if("0123456789"!==Object.getOwnPropertyNames(h).map(function(b){return h[b]}).join(""))return!1;var m={};return"abcdefghijklmnopqrst".split("").forEach(function(b){m[b]=b}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},m)).join("")}catch(b){return!1}}()?Object.assign:function(u,h){for(var _,m,b=l(u),C=1;C<arguments.length;C++){for(var D in _=Object(arguments[C]))s.call(_,D)&&(b[D]=_[D]);if(e){m=e(_);for(var x=0;x<m.length;x++)a.call(_,m[x])&&(b[m[x]]=_[m[x]])}}return b}},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default=function(e){return e&&"@@redux/INIT"===e.type?"initialState argument passed to createStore":"previous state received by the reducer"},g.exports=o.default},function(g,o,t){(function(e){g.exports="object"==typeof e&&e&&e.Object===Object&&e}).call(this,t(57))},function(g,o){var t=Function.prototype.toString;g.exports=function(e){if(null!=e){try{return t.call(e)}catch(s){}try{return e+""}catch(s){}}return""}},function(g,o,t){var e=t(229),s=t(103);g.exports=function(a,l,u){(void 0!==u&&!s(a[l],u)||void 0===u&&!(l in a))&&e(a,l,u)}},function(g,o,t){var e=t(115),s=function(){try{var a=e(Object,"defineProperty");return a({},"",{}),a}catch(l){}}();g.exports=s},function(g,o,t){var e=t(589)();g.exports=e},function(g,o,t){(function(e){var s=t(69),a=o&&!o.nodeType&&o,l=a&&"object"==typeof e&&e&&!e.nodeType&&e,u=l&&l.exports===a?s.Buffer:void 0,h=u?u.allocUnsafe:void 0;e.exports=function(_,m){if(m)return _.slice();var b=_.length,C=h?h(b):new _.constructor(b);return _.copy(C),C}}).call(this,t(183)(g))},function(g,o,t){var e=t(230);g.exports=function(s,a){var l=a?e(s.buffer):s.buffer;return new s.constructor(l,s.byteOffset,s.length)}},function(g,o,t){var e=t(69).Uint8Array;g.exports=e},function(g,o){g.exports=function(t,e){var s=-1,a=t.length;for(e||(e=Array(a));++s<a;)e[s]=t[s];return e}},function(g,o,t){var e=t(591),s=t(231),a=t(184);g.exports=function(l){return"function"!=typeof l.constructor||a(l)?{}:e(s(l))}},function(g,o){g.exports=function(t,e){return function(s){return t(e(s))}}},function(g,o){g.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},function(g,o,t){var e=t(597),s=t(151),a=t(52),l=t(152),u=t(186),h=t(185),_=Object.prototype.hasOwnProperty;g.exports=function(m,b){var C=a(m),D=!C&&s(m),x=!C&&!D&&l(m),j=!C&&!D&&!x&&h(m),H=C||D||x||j,z=H?e(m.length,String):[],U=z.length;for(var M in m)!b&&!_.call(m,M)||H&&("length"==M||x&&("offset"==M||"parent"==M)||j&&("buffer"==M||"byteLength"==M||"byteOffset"==M)||u(M,U))||z.push(M);return z}},function(g,o,t){var e=t(602),s=Math.max;g.exports=function(a,l,u){return l=s(void 0===l?a.length-1:l,0),function(){for(var h=arguments,_=-1,m=s(h.length-l,0),b=Array(m);++_<m;)b[_]=h[l+_];_=-1;for(var C=Array(l+1);++_<l;)C[_]=h[_];return C[l]=u(b),e(a,this,C)}}},function(g,o,t){var e=t(603),s=t(605)(e);g.exports=s},function(g,o,t){var e=t(103),s=t(117),a=t(186),l=t(53);g.exports=function(u,h,_){if(!l(_))return!1;var m=typeof h;return!!("number"==m?s(_)&&a(h,_.length):"string"==m&&h in _)&&e(_[h],u)}},function(g,o){g.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var s=0,a=new Array(e);s<e;s++)a[s]=t[s];return a},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(166),s=t(238),a=t(373);g.exports=function(l){if(void 0!==e&&null!=s(l)||null!=l["@@iterator"])return a(l)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(611)},function(g,o,t){var e=t(612);g.exports=e},function(g,o,t){"use strict";var e=t(17),s=t(84),a=t(50),l=t(62),u=t(614),h=t(377),_=t(172),m=t(74),b=t(147),C=t(239),D=t(154),x=e.Array;g.exports=function(j){var H=l(j),z=_(this),U=arguments.length,M=U>1?arguments[1]:void 0,I=void 0!==M;I&&(M=s(M,U>2?arguments[2]:void 0));var J,Y,ie,oe,fe,ne,he=D(H),ce=0;if(!he||this==x&&h(he))for(J=m(H),Y=z?new this(J):x(J);J>ce;ce++)ne=I?M(H[ce],ce):H[ce],b(Y,ce,ne);else for(fe=(oe=C(H,he)).next,Y=z?new this:[];!(ie=a(fe,oe)).done;ce++)ne=I?u(oe,M,[ie.value,ce],!0):ie.value,b(Y,ce,ne);return Y.length=ce,Y}},function(g,o,t){var e=t(50),s=t(51),a=t(211);g.exports=function(l,u,h){var _,m;s(l);try{if(!(_=a(l,"return"))){if("throw"===u)throw h;return h}_=e(_,l)}catch(b){m=!0,_=b}if("throw"===u)throw h;if(m)throw _;return s(_),h}},function(g,o,t){var e=t(38),s=t(130),a=e("iterator"),l=Array.prototype;g.exports=function(u){return void 0!==u&&(s.Array===u||l[a]===u)}},function(g,o,t){var e=t(38)("iterator"),s=!1;try{var a=0,l={next:function(){return{done:!!a++}},return:function(){s=!0}};l[e]=function(){return this},Array.from(l,function(){throw 2})}catch(u){}g.exports=function(u,h){if(!h&&!s)return!1;var _=!1;try{var m={};m[e]=function(){return{next:function(){return{done:_=!0}}}},u(m)}catch(b){}return _}},function(g,o,t){var e=t(237);g.exports=function(s){if(e(s))return s},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){t(68);var e=t(75),s=t(44),a=t(35),l=t(622),u=Array.prototype,h={DOMTokenList:!0,NodeList:!0};g.exports=function(_){var m=_.forEach;return _===u||a(u,_)&&m===u.forEach||s(h,e(_))?l:m}},function(g,o,t){var e=t(86),s=Math.floor,a=function(h,_){var m=h.length,b=s(m/2);return m<8?l(h,_):u(h,a(e(h,0,b),_),a(e(h,b),_),_)},l=function(h,_){for(var m,b,C=h.length,D=1;D<C;){for(b=D,m=h[D];b&&_(h[b-1],m)>0;)h[b]=h[--b];b!==D++&&(h[b]=m)}return h},u=function(h,_,m,b){for(var C=_.length,D=m.length,x=0,j=0;x<C||j<D;)h[x+j]=x<C&&j<D?b(_[x],m[j])<=0?_[x++]:m[j++]:x<C?_[x++]:m[j++];return h};g.exports=a},function(g,o,t){var e=t(17),s=t(643),a=e.TypeError;g.exports=function(l){if(s(l))throw a("The method doesn't accept regular expressions");return l}},function(g,o,t){var e=t(38)("match");g.exports=function(s){var a=/./;try{"/./"[s](a)}catch(l){try{return a[e]=!1,"/./"[s](a)}catch(u){}}return!1}},function(g,o,t){var e=t(644);g.exports=e},function(g,o){g.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(g,o){g.exports=function(t,e){for(var s=-1,a=null==t?0:t.length,l=Array(a);++s<a;)l[s]=e(t[s],s,t);return l}},function(g,o){g.exports=function(t,e,s){var a=-1,l=t.length;e<0&&(e=-e>l?0:l+e),(s=s>l?l:s)<0&&(s+=l),l=e>s?0:s-e>>>0,e>>>=0;for(var u=Array(l);++a<l;)u[a]=t[a+e];return u}},function(g,o){var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");g.exports=function(e){return t.test(e)}},function(g,o){g.exports=function(t,e,s,a){var l=-1,u=null==t?0:t.length;for(a&&u&&(s=t[++l]);++l<u;)s=e(s,t[l],l,t);return s}},function(g,o,t){var e=t(679),s=t(78);g.exports=function a(l,u,h,_,m){return l===u||(null==l||null==u||!s(l)&&!s(u)?l!=l&&u!=u:e(l,u,h,_,a,m))}},function(g,o,t){var e=t(680),s=t(393),a=t(683);g.exports=function(l,u,h,_,m,b){var C=1&h,D=l.length,x=u.length;if(D!=x&&!(C&&x>D))return!1;var j=b.get(l),H=b.get(u);if(j&&H)return j==u&&H==l;var z=-1,U=!0,M=2&h?new e:void 0;for(b.set(l,u),b.set(u,l);++z<D;){var I=l[z],J=u[z];if(_)var Y=C?_(J,I,z,u,l,b):_(I,J,z,l,u,b);if(void 0!==Y){if(Y)continue;U=!1;break}if(M){if(!s(u,function(ie,oe){if(!a(M,oe)&&(I===ie||m(I,ie,h,_,b)))return M.push(oe)})){U=!1;break}}else if(I!==J&&!m(I,J,h,_,b)){U=!1;break}}return b.delete(l),b.delete(u),U}},function(g,o){g.exports=function(t,e){for(var s=-1,a=null==t?0:t.length;++s<a;)if(e(t[s],s,t))return!0;return!1}},function(g,o,t){var e=t(395),s=t(241),a=t(135);g.exports=function(l){return e(l,a,s)}},function(g,o,t){var e=t(240),s=t(52);g.exports=function(a,l,u){var h=l(a);return s(a)?h:e(h,u(a))}},function(g,o){g.exports=function(){return[]}},function(g,o,t){var e=t(184),s=t(689),a=Object.prototype.hasOwnProperty;g.exports=function(l){if(!e(l))return s(l);var u=[];for(var h in Object(l))a.call(l,h)&&"constructor"!=h&&u.push(h);return u}},function(g,o,t){var e=t(53);g.exports=function(s){return s==s&&!e(s)}},function(g,o){g.exports=function(t,e){return function(s){return null!=s&&s[t]===e&&(void 0!==e||t in Object(s))}}},function(g,o,t){var e=t(708),s=t(53),a=t(188),l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,h=/^0o[0-7]+$/i,_=parseInt;g.exports=function(m){if("number"==typeof m)return m;if(a(m))return NaN;if(s(m)){var b="function"==typeof m.valueOf?m.valueOf():m;m=s(b)?b+"":b}if("string"!=typeof m)return 0===m?m:+m;m=e(m);var C=u.test(m);return C||h.test(m)?_(m.slice(2),C?2:8):l.test(m)?NaN:+m}},function(g,o,t){var e=t(711),s=t(712)(e);g.exports=s},function(g,o,t){"use strict";(function(e,s){var a=t(190);g.exports=I;var l,u=t(346);I.ReadableState=M,t(244);var h=function(F,je){return F.listeners(je).length},_=t(403),m=t(65).Buffer,b=e.Uint8Array||function(){},C=Object.create(t(157));C.inherits=t(64);var D=t(715),x=void 0;x=D&&D.debuglog?D.debuglog("stream"):function(){};var j,H=t(716),z=t(404);C.inherits(I,_);var U=["error","close","destroy","pause","resume"];function M(F,je){F=F||{};var Et=je instanceof(l=l||t(119));this.objectMode=!!F.objectMode,Et&&(this.objectMode=this.objectMode||!!F.readableObjectMode);var lt=F.highWaterMark,nn=F.readableHighWaterMark;this.highWaterMark=lt||0===lt?lt:Et&&(nn||0===nn)?nn:this.objectMode?16:16384,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new H,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=F.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,F.encoding&&(j||(j=t(406).StringDecoder),this.decoder=new j(F.encoding),this.encoding=F.encoding)}function I(F){if(l=l||t(119),!(this instanceof I))return new I(F);this._readableState=new M(F,this),this.readable=!0,F&&("function"==typeof F.read&&(this._read=F.read),"function"==typeof F.destroy&&(this._destroy=F.destroy)),_.call(this)}function J(F,je,Et,lt,nn){var St,Qe,It,ae,Ie,At=F._readableState;return null===je?(At.reading=!1,function(Qe,It){if(!It.ended){if(It.decoder){var ae=It.decoder.end();ae&&ae.length&&(It.buffer.push(ae),It.length+=It.objectMode?1:ae.length)}It.ended=!0,fe(Qe)}}(F,At)):(nn||(Qe=At,m.isBuffer(Ie=It=je)||Ie instanceof b||"string"==typeof It||void 0===It||Qe.objectMode||(ae=new TypeError("Invalid non-string/buffer chunk")),St=ae),St?F.emit("error",St):At.objectMode||je&&je.length>0?("string"==typeof je||At.objectMode||Object.getPrototypeOf(je)===m.prototype||(je=function(Qe){return m.from(Qe)}(je)),lt?At.endEmitted?F.emit("error",new Error("stream.unshift() after end event")):Y(F,At,je,!0):At.ended?F.emit("error",new Error("stream.push() after EOF")):(At.reading=!1,At.decoder&&!Et?(je=At.decoder.write(je),At.objectMode||0!==je.length?Y(F,At,je,!1):he(F,At)):Y(F,At,je,!1))):lt||(At.reading=!1)),function(Qe){return!Qe.ended&&(Qe.needReadable||Qe.length<Qe.highWaterMark||0===Qe.length)}(At)}function Y(F,je,Et,lt){je.flowing&&0===je.length&&!je.sync?(F.emit("data",Et),F.read(0)):(je.length+=je.objectMode?1:Et.length,lt?je.buffer.unshift(Et):je.buffer.push(Et),je.needReadable&&fe(F)),he(F,je)}function oe(F,je){return F<=0||0===je.length&&je.ended?0:je.objectMode?1:F!=F?je.flowing&&je.length?je.buffer.head.data.length:je.length:(F>je.highWaterMark&&(je.highWaterMark=((Et=F)>=8388608?Et=8388608:(Et--,Et|=Et>>>1,Et|=Et>>>2,Et|=Et>>>4,Et|=Et>>>8,Et|=Et>>>16,Et++),Et)),F<=je.length?F:je.ended?je.length:(je.needReadable=!0,0));var Et}function fe(F){var je=F._readableState;je.needReadable=!1,je.emittedReadable||(x("emitReadable",je.flowing),je.emittedReadable=!0,je.sync?a.nextTick(ne,F):ne(F))}function ne(F){x("emit readable"),F.emit("readable"),Oe(F)}function he(F,je){je.readingMore||(je.readingMore=!0,a.nextTick(ce,F,je))}function ce(F,je){for(var Et=je.length;!je.reading&&!je.flowing&&!je.ended&&je.length<je.highWaterMark&&(x("maybeReadMore read 0"),F.read(0),Et!==je.length);)Et=je.length;je.readingMore=!1}function Ae(F){x("readable nexttick read 0"),F.read(0)}function Me(F,je){je.reading||(x("resume read 0"),F.read(0)),je.resumeScheduled=!1,je.awaitDrain=0,F.emit("resume"),Oe(F),je.flowing&&!je.reading&&F.read(0)}function Oe(F){var je=F._readableState;for(x("flow",je.flowing);je.flowing&&null!==F.read(););}function be(F,je){return 0===je.length?null:(je.objectMode?Et=je.buffer.shift():!F||F>=je.length?(Et=je.decoder?je.buffer.join(""):1===je.buffer.length?je.buffer.head.data:je.buffer.concat(je.length),je.buffer.clear()):(St=je.decoder,(lt=F)<(nn=je.buffer).head.data.length?(At=nn.head.data.slice(0,lt),nn.head.data=nn.head.data.slice(lt)):At=lt===nn.head.data.length?nn.shift():St?function(Qe,It){var ae=It.head,Ie=1,dt=ae.data;for(Qe-=dt.length;ae=ae.next;){var Jt=ae.data,zt=Qe>Jt.length?Jt.length:Qe;if(dt+=zt===Jt.length?Jt:Jt.slice(0,Qe),0==(Qe-=zt)){zt===Jt.length?(++Ie,It.head=ae.next?ae.next:It.tail=null):(It.head=ae,ae.data=Jt.slice(zt));break}++Ie}return It.length-=Ie,dt}(lt,nn):function(Qe,It){var ae=m.allocUnsafe(Qe),Ie=It.head,dt=1;for(Ie.data.copy(ae),Qe-=Ie.data.length;Ie=Ie.next;){var Jt=Ie.data,zt=Qe>Jt.length?Jt.length:Qe;if(Jt.copy(ae,ae.length-Qe,0,zt),0==(Qe-=zt)){zt===Jt.length?(++dt,It.head=Ie.next?Ie.next:It.tail=null):(It.head=Ie,Ie.data=Jt.slice(zt));break}++dt}return It.length-=dt,ae}(lt,nn),Et=At),Et);var lt,nn,St,At,Et}function ue(F){var je=F._readableState;if(je.length>0)throw new Error('"endReadable()" called on non-empty stream');je.endEmitted||(je.ended=!0,a.nextTick(He,je,F))}function He(F,je){F.endEmitted||0!==F.length||(F.endEmitted=!0,je.readable=!1,je.emit("end"))}function $e(F,je){for(var Et=0,lt=F.length;Et<lt;Et++)if(F[Et]===je)return Et;return-1}Object.defineProperty(I.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(F){this._readableState&&(this._readableState.destroyed=F)}}),I.prototype.destroy=z.destroy,I.prototype._undestroy=z.undestroy,I.prototype._destroy=function(F,je){this.push(null),je(F)},I.prototype.push=function(F,je){var Et,lt=this._readableState;return lt.objectMode?Et=!0:"string"==typeof F&&((je=je||lt.defaultEncoding)!==lt.encoding&&(F=m.from(F,je),je=""),Et=!0),J(this,F,je,!1,Et)},I.prototype.unshift=function(F){return J(this,F,null,!0,!1)},I.prototype.isPaused=function(){return!1===this._readableState.flowing},I.prototype.setEncoding=function(F){return j||(j=t(406).StringDecoder),this._readableState.decoder=new j(F),this._readableState.encoding=F,this},I.prototype.read=function(F){x("read",F),F=parseInt(F,10);var je=this._readableState,Et=F;if(0!==F&&(je.emittedReadable=!1),0===F&&je.needReadable&&(je.length>=je.highWaterMark||je.ended))return x("read: emitReadable",je.length,je.ended),0===je.length&&je.ended?ue(this):fe(this),null;if(0===(F=oe(F,je))&&je.ended)return 0===je.length&&ue(this),null;var lt,nn=je.needReadable;return x("need readable",nn),(0===je.length||je.length-F<je.highWaterMark)&&x("length less than watermark",nn=!0),je.ended||je.reading?x("reading or ended",nn=!1):nn&&(x("do read"),je.reading=!0,je.sync=!0,0===je.length&&(je.needReadable=!0),this._read(je.highWaterMark),je.sync=!1,je.reading||(F=oe(Et,je))),null===(lt=F>0?be(F,je):null)?(je.needReadable=!0,F=0):je.length-=F,0===je.length&&(je.ended||(je.needReadable=!0),Et!==F&&je.ended&&ue(this)),null!==lt&&this.emit("data",lt),lt},I.prototype._read=function(F){this.emit("error",new Error("_read() is not implemented"))},I.prototype.pipe=function(F,je){var Et=this,lt=this._readableState;switch(lt.pipesCount){case 0:lt.pipes=F;break;case 1:lt.pipes=[lt.pipes,F];break;default:lt.pipes.push(F)}lt.pipesCount+=1,x("pipe count=%d opts=%j",lt.pipesCount,je);var nn=je&&!1===je.end||F===s.stdout||F===s.stderr?ln:At;function At(){x("onend"),F.end()}lt.endEmitted?a.nextTick(nn):Et.once("end",nn),F.on("unpipe",function St(ar,Ln){x("onunpipe"),ar===Et&&Ln&&!1===Ln.hasUnpiped&&(Ln.hasUnpiped=!0,x("cleanup"),F.removeListener("close",Jt),F.removeListener("finish",zt),F.removeListener("drain",Qe),F.removeListener("error",dt),F.removeListener("unpipe",St),Et.removeListener("end",At),Et.removeListener("end",ln),Et.removeListener("data",Ie),It=!0,!lt.awaitDrain||F._writableState&&!F._writableState.needDrain||Qe())});var ar,Qe=(ar=Et,function(){var Ln=ar._readableState;x("pipeOnDrain",Ln.awaitDrain),Ln.awaitDrain&&Ln.awaitDrain--,0===Ln.awaitDrain&&h(ar,"data")&&(Ln.flowing=!0,Oe(ar))});F.on("drain",Qe);var It=!1,ae=!1;function Ie(ar){x("ondata"),ae=!1,!1!==F.write(ar)||ae||((1===lt.pipesCount&&lt.pipes===F||lt.pipesCount>1&&-1!==$e(lt.pipes,F))&&!It&&(x("false write response, pause",Et._readableState.awaitDrain),Et._readableState.awaitDrain++,ae=!0),Et.pause())}function dt(ar){x("onerror",ar),ln(),F.removeListener("error",dt),0===h(F,"error")&&F.emit("error",ar)}function Jt(){F.removeListener("finish",zt),ln()}function zt(){x("onfinish"),F.removeListener("close",Jt),ln()}function ln(){x("unpipe"),Et.unpipe(F)}return Et.on("data",Ie),function(ar,Ln,Rn){if("function"==typeof ar.prependListener)return ar.prependListener(Ln,Rn);ar._events&&ar._events[Ln]?u(ar._events[Ln])?ar._events[Ln].unshift(Rn):ar._events[Ln]=[Rn,ar._events[Ln]]:ar.on(Ln,Rn)}(F,"error",dt),F.once("close",Jt),F.once("finish",zt),F.emit("pipe",Et),lt.flowing||(x("pipe resume"),Et.resume()),F},I.prototype.unpipe=function(F){var je=this._readableState,Et={hasUnpiped:!1};if(0===je.pipesCount)return this;if(1===je.pipesCount)return F&&F!==je.pipes||(F||(F=je.pipes),je.pipes=null,je.pipesCount=0,je.flowing=!1,F&&F.emit("unpipe",this,Et)),this;if(!F){var lt=je.pipes,nn=je.pipesCount;je.pipes=null,je.pipesCount=0,je.flowing=!1;for(var St=0;St<nn;St++)lt[St].emit("unpipe",this,Et);return this}var At=$e(je.pipes,F);return-1===At||(je.pipes.splice(At,1),je.pipesCount-=1,1===je.pipesCount&&(je.pipes=je.pipes[0]),F.emit("unpipe",this,Et)),this},I.prototype.addListener=I.prototype.on=function(F,je){var Et=_.prototype.on.call(this,F,je);if("data"===F)!1!==this._readableState.flowing&&this.resume();else if("readable"===F){var lt=this._readableState;lt.endEmitted||lt.readableListening||(lt.readableListening=lt.needReadable=!0,lt.emittedReadable=!1,lt.reading?lt.length&&fe(this):a.nextTick(Ae,this))}return Et},I.prototype.resume=function(){var Et,F=this._readableState;return F.flowing||(x("resume"),F.flowing=!0,this,(Et=F).resumeScheduled||(Et.resumeScheduled=!0,a.nextTick(Me,this,Et))),this},I.prototype.pause=function(){return x("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(x("pause"),this._readableState.flowing=!1,this.emit("pause")),this},I.prototype.wrap=function(F){var je=this,Et=this._readableState,lt=!1;for(var nn in F.on("end",function(){if(x("wrapped end"),Et.decoder&&!Et.ended){var At=Et.decoder.end();At&&At.length&&je.push(At)}je.push(null)}),F.on("data",function(At){x("wrapped data"),Et.decoder&&(At=Et.decoder.write(At)),Et.objectMode&&null==At||(Et.objectMode||At&&At.length)&&(je.push(At)||(lt=!0,F.pause()))}),F)void 0===this[nn]&&"function"==typeof F[nn]&&(this[nn]=function(At){return function(){return F[At].apply(F,arguments)}}(nn));for(var St=0;St<U.length;St++)F.on(U[St],this.emit.bind(this,U[St]));return this._read=function(At){x("wrapped _read",At),lt&&(lt=!1,F.resume())},this},Object.defineProperty(I.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),I._fromList=be}).call(this,t(57),t(118))},function(g,o,t){g.exports=t(244).EventEmitter},function(g,o,t){"use strict";var e=t(190);function s(a,l){a.emit("error",l)}g.exports={destroy:function(a,l){var u=this;return this._readableState&&this._readableState.destroyed||this._writableState&&this._writableState.destroyed?(l?l(a):!a||this._writableState&&this._writableState.errorEmitted||e.nextTick(s,this,a),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(a||null,function(m){!l&&m?(e.nextTick(s,u,m),u._writableState&&(u._writableState.errorEmitted=!0)):l&&l(m)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(g,o,t){(function(e){var s=void 0!==e&&e||"undefined"!=typeof self&&self||window,a=Function.prototype.apply;function l(u,h){this._id=u,this._clearFn=h}o.setTimeout=function(){return new l(a.call(setTimeout,s,arguments),clearTimeout)},o.setInterval=function(){return new l(a.call(setInterval,s,arguments),clearInterval)},o.clearTimeout=o.clearInterval=function(u){u&&u.close()},l.prototype.unref=l.prototype.ref=function(){},l.prototype.close=function(){this._clearFn.call(s,this._id)},o.enroll=function(u,h){clearTimeout(u._idleTimeoutId),u._idleTimeout=h},o.unenroll=function(u){clearTimeout(u._idleTimeoutId),u._idleTimeout=-1},o._unrefActive=o.active=function(u){clearTimeout(u._idleTimeoutId);var h=u._idleTimeout;h>=0&&(u._idleTimeoutId=setTimeout(function(){u._onTimeout&&u._onTimeout()},h))},t(718),o.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,o.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,t(57))},function(g,o,t){"use strict";var e=t(65).Buffer,s=e.isEncoding||function(x){switch((x=""+x)&&x.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 a(x){var j;switch(this.encoding=function(H){var z=function(U){if(!U)return"utf8";for(var M;;)switch(U){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 U;default:if(M)return;U=(""+U).toLowerCase(),M=!0}}(H);if("string"!=typeof z&&(e.isEncoding===s||!s(H)))throw new Error("Unknown encoding: "+H);return z||H}(x),this.encoding){case"utf16le":this.text=h,this.end=_,j=4;break;case"utf8":this.fillLast=u,j=4;break;case"base64":this.text=m,this.end=b,j=3;break;default:return this.write=C,void(this.end=D)}this.lastNeed=0,this.lastTotal=0,this.lastChar=e.allocUnsafe(j)}function l(x){return x<=127?0:x>>5==6?2:x>>4==14?3:x>>3==30?4:x>>6==2?-1:-2}function u(x){var j=this.lastTotal-this.lastNeed,H=function(z,U,M){if(128!=(192&U[0]))return z.lastNeed=0,"\ufffd";if(z.lastNeed>1&&U.length>1){if(128!=(192&U[1]))return z.lastNeed=1,"\ufffd";if(z.lastNeed>2&&U.length>2&&128!=(192&U[2]))return z.lastNeed=2,"\ufffd"}}(this,x);return void 0!==H?H:this.lastNeed<=x.length?(x.copy(this.lastChar,j,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(x.copy(this.lastChar,j,0,x.length),void(this.lastNeed-=x.length))}function h(x,j){if((x.length-j)%2==0){var H=x.toString("utf16le",j);if(H){var z=H.charCodeAt(H.length-1);if(z>=55296&&z<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=x[x.length-2],this.lastChar[1]=x[x.length-1],H.slice(0,-1)}return H}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=x[x.length-1],x.toString("utf16le",j,x.length-1)}function _(x){var j=x&&x.length?this.write(x):"";return this.lastNeed?j+this.lastChar.toString("utf16le",0,this.lastTotal-this.lastNeed):j}function m(x,j){var H=(x.length-j)%3;return 0===H?x.toString("base64",j):(this.lastNeed=3-H,this.lastTotal=3,1===H?this.lastChar[0]=x[x.length-1]:(this.lastChar[0]=x[x.length-2],this.lastChar[1]=x[x.length-1]),x.toString("base64",j,x.length-H))}function b(x){var j=x&&x.length?this.write(x):"";return this.lastNeed?j+this.lastChar.toString("base64",0,3-this.lastNeed):j}function C(x){return x.toString(this.encoding)}function D(x){return x&&x.length?this.write(x):""}o.StringDecoder=a,a.prototype.write=function(x){if(0===x.length)return"";var j,H;if(this.lastNeed){if(void 0===(j=this.fillLast(x)))return"";H=this.lastNeed,this.lastNeed=0}else H=0;return H<x.length?j?j+this.text(x,H):this.text(x,H):j||""},a.prototype.end=function(x){var j=x&&x.length?this.write(x):"";return this.lastNeed?j+"\ufffd":j},a.prototype.text=function(x,j){var H=function(U,M,I){var J=M.length-1;if(J<I)return 0;var Y=l(M[J]);return Y>=0?(Y>0&&(U.lastNeed=Y-1),Y):--J<I||-2===Y?0:(Y=l(M[J]))>=0?(Y>0&&(U.lastNeed=Y-2),Y):--J<I||-2===Y?0:(Y=l(M[J]))>=0?(Y>0&&(2===Y?Y=0:U.lastNeed=Y-3),Y):0}(this,x,j);if(!this.lastNeed)return x.toString("utf8",j);this.lastTotal=H;var z=x.length-(H-this.lastNeed);return x.copy(this.lastChar,0,z),x.toString("utf8",j,z)},a.prototype.fillLast=function(x){if(this.lastNeed<=x.length)return x.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);x.copy(this.lastChar,this.lastTotal-this.lastNeed,0,x.length),this.lastNeed-=x.length}},function(g,o,t){"use strict";g.exports=l;var e=t(119),s=Object.create(t(157));function a(_,m){var b=this._transformState;b.transforming=!1;var C=b.writecb;if(!C)return this.emit("error",new Error("write callback called multiple times"));b.writechunk=null,b.writecb=null,null!=m&&this.push(m),C(_);var D=this._readableState;D.reading=!1,(D.needReadable||D.length<D.highWaterMark)&&this._read(D.highWaterMark)}function l(_){if(!(this instanceof l))return new l(_);e.call(this,_),this._transformState={afterTransform:a.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,_&&("function"==typeof _.transform&&(this._transform=_.transform),"function"==typeof _.flush&&(this._flush=_.flush)),this.on("prefinish",u)}function u(){var _=this;"function"==typeof this._flush?this._flush(function(m,b){h(_,m,b)}):h(this,null,null)}function h(_,m,b){if(m)return _.emit("error",m);if(null!=b&&_.push(b),_._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(_._transformState.transforming)throw new Error("Calling transform done when still transforming");return _.push(null)}s.inherits=t(64),s.inherits(l,e),l.prototype.push=function(_,m){return this._transformState.needTransform=!1,e.prototype.push.call(this,_,m)},l.prototype._transform=function(_,m,b){throw new Error("_transform() is not implemented")},l.prototype._write=function(_,m,b){var C=this._transformState;if(C.writecb=b,C.writechunk=_,C.writeencoding=m,!C.transforming){var D=this._readableState;(C.needTransform||D.needReadable||D.length<D.highWaterMark)&&this._read(D.highWaterMark)}},l.prototype._read=function(_){var m=this._transformState;null!==m.writechunk&&m.writecb&&!m.transforming?(m.transforming=!0,this._transform(m.writechunk,m.writeencoding,m.afterTransform)):m.needTransform=!0},l.prototype._destroy=function(_,m){var b=this;e.prototype._destroy.call(this,_,function(C){m(C),b.emit("close")})}},function(g,o,t){"use strict";var e=t(120),s=Array.prototype.forEach,a=Object.create,l=function(u,h){var _;for(_ in u)h[_]=u[_]};g.exports=function(u){var h=a(null);return s.call(arguments,function(_){e(_)&&l(Object(_),h)}),h}},function(g,o,t){"use strict";var e=t(121);g.exports=function(s,a,l){var u;return isNaN(s)?(u=a)>=0?l&&u?u-1:u:1:!1!==s&&e(s)}},function(g,o,t){"use strict";g.exports=t(734)()?Object.assign:t(735)},function(g,o,t){"use strict";var e,s,a,l,u,h=t(121),_=function(m,b){return b};try{Object.defineProperty(_,"length",{configurable:!0,writable:!1,enumerable:!1,value:1})}catch(m){}1===_.length?(e={configurable:!0,writable:!1,enumerable:!1},s=Object.defineProperty,g.exports=function(m,b){return b=h(b),m.length===b?m:(e.value=b,s(m,"length",e))}):(l=t(412),u=[],a=function(m){var b,C=0;if(u[m])return u[m];for(b=[];m--;)b.push("a"+(++C).toString(36));return new Function("fn","return function ("+b.join(", ")+") { return fn.apply(this, arguments); };")},g.exports=function(m,b){var C;if(b=h(b),m.length===b)return m;C=a(b)(m);try{l(C,m)}catch(D){}return C})},function(g,o,t){"use strict";var e=t(137),s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols;g.exports=function(h,_){var m,b=Object(e(_));if(h=Object(e(h)),l(b).forEach(function(C){try{s(h,C,a(_,C))}catch(D){m=D}}),"function"==typeof u&&u(b).forEach(function(C){try{s(h,C,a(_,C))}catch(D){m=D}}),void 0!==m)throw m;return h}},function(g,o,t){"use strict";g.exports=function(e){return null!=e}},function(g,o,t){"use strict";var e=t(757);g.exports=function(s){if(!e(s))throw new TypeError(s+" is not a symbol");return s}},function(g,o,t){"use strict";var e=t(101),s=t(191),a=Function.prototype.call;g.exports=function(l,u){var h={},_=arguments[2];return e(u),s(l,function(m,b,C,D){h[b]=a.call(u,_,m,b,C,D)}),h}},function(g,o,t){"use strict";g.exports=function(e){return"function"==typeof e}},function(g,o){function t(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}g.exports=t,g.exports.default=t},function(g,o,t){var e=t(64),s=t(138),a=t(65).Buffer,l=[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],u=new Array(64);function h(){this.init(),this._w=u,s.call(this,64,56)}function _(x,j,H){return H^x&(j^H)}function m(x,j,H){return x&j|H&(x|j)}function b(x){return(x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10)}function C(x){return(x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7)}function D(x){return(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3}e(h,s),h.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},h.prototype._update=function(x){for(var j,H=this._w,z=0|this._a,U=0|this._b,M=0|this._c,I=0|this._d,J=0|this._e,Y=0|this._f,ie=0|this._g,oe=0|this._h,fe=0;fe<16;++fe)H[fe]=x.readInt32BE(4*fe);for(;fe<64;++fe)H[fe]=0|(((j=H[fe-2])>>>17|j<<15)^(j>>>19|j<<13)^j>>>10)+H[fe-7]+D(H[fe-15])+H[fe-16];for(var ne=0;ne<64;++ne){var he=oe+C(J)+_(J,Y,ie)+l[ne]+H[ne]|0,ce=b(z)+m(z,U,M)|0;oe=ie,ie=Y,Y=J,J=I+he|0,I=M,M=U,U=z,z=he+ce|0}this._a=z+this._a|0,this._b=U+this._b|0,this._c=M+this._c|0,this._d=I+this._d|0,this._e=J+this._e|0,this._f=Y+this._f|0,this._g=ie+this._g|0,this._h=oe+this._h|0},h.prototype._hash=function(){var x=a.allocUnsafe(32);return x.writeInt32BE(this._a,0),x.writeInt32BE(this._b,4),x.writeInt32BE(this._c,8),x.writeInt32BE(this._d,12),x.writeInt32BE(this._e,16),x.writeInt32BE(this._f,20),x.writeInt32BE(this._g,24),x.writeInt32BE(this._h,28),x},g.exports=h},function(g,o,t){var e=t(64),s=t(138),a=t(65).Buffer,l=[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],u=new Array(160);function h(){this.init(),this._w=u,s.call(this,128,112)}function _(U,M,I){return I^U&(M^I)}function m(U,M,I){return U&M|I&(U|M)}function b(U,M){return(U>>>28|M<<4)^(M>>>2|U<<30)^(M>>>7|U<<25)}function C(U,M){return(U>>>14|M<<18)^(U>>>18|M<<14)^(M>>>9|U<<23)}function D(U,M){return(U>>>1|M<<31)^(U>>>8|M<<24)^U>>>7}function x(U,M){return(U>>>1|M<<31)^(U>>>8|M<<24)^(U>>>7|M<<25)}function j(U,M){return(U>>>19|M<<13)^(M>>>29|U<<3)^U>>>6}function H(U,M){return(U>>>19|M<<13)^(M>>>29|U<<3)^(U>>>6|M<<26)}function z(U,M){return U>>>0<M>>>0?1:0}e(h,s),h.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},h.prototype._update=function(U){for(var M=this._w,I=0|this._ah,J=0|this._bh,Y=0|this._ch,ie=0|this._dh,oe=0|this._eh,fe=0|this._fh,ne=0|this._gh,he=0|this._hh,ce=0|this._al,Ae=0|this._bl,Me=0|this._cl,Oe=0|this._dl,be=0|this._el,ue=0|this._fl,He=0|this._gl,$e=0|this._hl,F=0;F<32;F+=2)M[F]=U.readInt32BE(4*F),M[F+1]=U.readInt32BE(4*F+4);for(;F<160;F+=2){var je=M[F-30],Et=M[F-30+1],lt=D(je,Et),nn=x(Et,je),St=j(je=M[F-4],Et=M[F-4+1]),At=H(Et,je),ae=M[F-32],Ie=M[F-32+1],dt=nn+M[F-14+1]|0,Jt=lt+M[F-14]+z(dt,nn)|0;Jt=(Jt=Jt+St+z(dt=dt+At|0,At)|0)+ae+z(dt=dt+Ie|0,Ie)|0,M[F]=Jt,M[F+1]=dt}for(var zt=0;zt<160;zt+=2){Jt=M[zt],dt=M[zt+1];var ln=m(I,J,Y),ar=m(ce,Ae,Me),Ln=b(I,ce),Rn=b(ce,I),er=C(oe,be),Mn=C(be,oe),Ht=l[zt],tr=l[zt+1],Yn=_(oe,fe,ne),Cn=_(be,ue,He),Kt=$e+Mn|0,dn=he+er+z(Kt,$e)|0;dn=(dn=(dn=dn+Yn+z(Kt=Kt+Cn|0,Cn)|0)+Ht+z(Kt=Kt+tr|0,tr)|0)+Jt+z(Kt=Kt+dt|0,dt)|0;var Kn=Rn+ar|0,qn=Ln+ln+z(Kn,Rn)|0;he=ne,$e=He,ne=fe,He=ue,fe=oe,ue=be,oe=ie+dn+z(be=Oe+Kt|0,Oe)|0,ie=Y,Oe=Me,Y=J,Me=Ae,J=I,Ae=ce,I=dn+qn+z(ce=Kt+Kn|0,Kt)|0}this._al=this._al+ce|0,this._bl=this._bl+Ae|0,this._cl=this._cl+Me|0,this._dl=this._dl+Oe|0,this._el=this._el+be|0,this._fl=this._fl+ue|0,this._gl=this._gl+He|0,this._hl=this._hl+$e|0,this._ah=this._ah+I+z(this._al,ce)|0,this._bh=this._bh+J+z(this._bl,Ae)|0,this._ch=this._ch+Y+z(this._cl,Me)|0,this._dh=this._dh+ie+z(this._dl,Oe)|0,this._eh=this._eh+oe+z(this._el,be)|0,this._fh=this._fh+fe+z(this._fl,ue)|0,this._gh=this._gh+ne+z(this._gl,He)|0,this._hh=this._hh+he+z(this._hl,$e)|0},h.prototype._hash=function(){var U=a.allocUnsafe(64);function M(I,J,Y){U.writeInt32BE(I,Y),U.writeInt32BE(J,Y+4)}return M(this._ah,this._al,0),M(this._bh,this._bl,8),M(this._ch,this._cl,16),M(this._dh,this._dl,24),M(this._eh,this._el,32),M(this._fh,this._fl,40),M(this._gh,this._gl,48),M(this._hh,this._hl,56),U},g.exports=h},function(g,o,t){g.exports=t(796)},function(g,o,t){g.exports=t(797)},function(g,o,t){var e=t(58),s=t(27),a=t(174),l=t(222),u=t(51),h=s([].concat);g.exports=e("Reflect","ownKeys")||function(_){var m=a.f(u(_)),b=l.f;return b?h(m,b(_)):m}},function(g,o,t){g.exports=t(819)},function(g,o,t){var e=t(823);t(68),g.exports=e},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(35),l=t(175),u=t(176),h=t(824),_=t(98),m=t(85),b=t(94),C=t(825),D=t(826),x=t(124),j=t(827),H=t(38),z=t(828),U=H("toStringTag"),M=s.Error,I=[].push,J=function(ie,oe){var fe,ne=arguments.length>2?arguments[2]:void 0,he=a(Y,this);u?fe=u(new M(void 0),he?l(this):Y):(fe=he?this:_(Y),m(fe,U,"Error")),m(fe,"message",j(oe,"")),z&&m(fe,"stack",C(fe.stack,1)),D(fe,ne);var ce=[];return x(ie,I,{that:ce}),m(fe,"errors",ce),fe};u?u(J,M):h(J,M);var Y=J.prototype=_(M.prototype,{constructor:b(1,J),message:b(1,""),name:b(1,"AggregateError")});e({global:!0},{AggregateError:J})},function(g,o,t){var e=t(17);g.exports=e.Promise},function(g,o,t){"use strict";var e=t(58),s=t(63),a=t(38),l=t(48),u=a("species");g.exports=function(h){var _=e(h);l&&_&&!_[u]&&(0,s.f)(_,u,{configurable:!0,get:function(){return this}})}},function(g,o,t){var e=t(51),s=t(429),a=t(38)("species");g.exports=function(l,u){var h,_=e(l).constructor;return void 0===_||null==(h=e(_)[a])?u:s(h)}},function(g,o,t){var e=t(17),s=t(172),a=t(170),l=e.TypeError;g.exports=function(u){if(s(u))return u;throw l(a(u)+" is not a constructor")}},function(g,o,t){var e,s,a,l,u=t(17),h=t(93),_=t(84),m=t(41),b=t(44),C=t(33),D=t(335),x=t(86),j=t(214),H=t(431),z=t(177),U=u.setImmediate,M=u.clearImmediate,I=u.process,J=u.Dispatch,Y=u.Function,ie=u.MessageChannel,oe=u.String,fe=0,ne={};try{e=u.location}catch(be){}var ce=function(be){if(b(ne,be)){var ue=ne[be];delete ne[be],ue()}},Ae=function(be){return function(){ce(be)}},Me=function(be){ce(be.data)},Oe=function(be){u.postMessage(oe(be),e.protocol+"//"+e.host)};U&&M||(U=function(be){var ue=x(arguments,1);return ne[++fe]=function(){h(m(be)?be:Y(be),void 0,ue)},s(fe),fe},M=function(be){delete ne[be]},z?s=function(be){I.nextTick(Ae(be))}:J&&J.now?s=function(be){J.now(Ae(be))}:ie&&!H?(l=(a=new ie).port2,a.port1.onmessage=Me,s=_(l.postMessage,l)):u.addEventListener&&m(u.postMessage)&&!u.importScripts&&e&&"file:"!==e.protocol&&!C(Oe)?(s=Oe,u.addEventListener("message",Me,!1)):s="onreadystatechange"in j("script")?function(be){D.appendChild(j("script")).onreadystatechange=function(){D.removeChild(this),ce(be)}}:function(be){setTimeout(Ae(be),0)}),g.exports={set:U,clear:M}},function(g,o,t){var e=t(95);g.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(e)},function(g,o,t){var e=t(51),s=t(43),a=t(159);g.exports=function(l,u){if(e(l),s(u)&&u.constructor===l)return u;var h=a.f(l);return(0,h.resolve)(u),h.promise}},function(g,o,t){"use strict";var e=t(22),s=t(50),a=t(73),l=t(159),u=t(193),h=t(124);e({target:"Promise",stat:!0},{allSettled:function(_){var m=this,b=l.f(m),C=b.resolve,D=b.reject,x=u(function(){var j=a(m.resolve),H=[],z=0,U=1;h(_,function(M){var I=z++,J=!1;U++,s(j,m,M).then(function(Y){J||(J=!0,H[I]={status:"fulfilled",value:Y},--U||C(H))},function(Y){J||(J=!0,H[I]={status:"rejected",reason:Y},--U||C(H))})}),--U||C(H)});return x.error&&D(x.value),b.promise}})},function(g,o,t){"use strict";var e=t(22),s=t(73),a=t(58),l=t(50),u=t(159),h=t(193),_=t(124),m="No one promise resolved";e({target:"Promise",stat:!0},{any:function(b){var C=this,D=a("AggregateError"),x=u.f(C),j=x.resolve,H=x.reject,z=h(function(){var U=s(C.resolve),M=[],I=0,J=1,Y=!1;_(b,function(ie){var oe=I++,fe=!1;J++,l(U,C,ie).then(function(ne){fe||Y||(Y=!0,j(ne))},function(ne){fe||Y||(fe=!0,M[oe]=ne,--J||H(new D(M,m)))})}),--J||H(new D(M,m))});return z.error&&H(z.value),x.promise}})},function(g,o,t){var e=t(48),s=t(27),a=t(149),l=t(61),u=s(t(167).f),h=s([].push),_=function(m){return function(b){for(var C,D=l(b),x=a(D),j=x.length,H=0,z=[];j>H;)C=x[H++],e&&!u(D,C)||h(z,m?[C,D[C]]:D[C]);return z}};g.exports={entries:_(!0),values:_(!1)}},function(g,o,t){g.exports=t(859)},function(g,o,t){g.exports=t(863)},function(g,o,t){var e=t(178),s=t(881),a=t(235),l=t(882),u=t(883),h=t(360),_=t(363),m=t(884),b=t(885),C=t(394),D=t(440),x=t(155),j=t(886),H=t(887),z=t(364),U=t(52),M=t(152),I=t(891),J=t(53),Y=t(893),ie=t(135),oe=t(153),fe="[object Arguments]",ne="[object Function]",he="[object Object]",ce={};ce[fe]=ce["[object Array]"]=ce["[object ArrayBuffer]"]=ce["[object DataView]"]=ce["[object Boolean]"]=ce["[object Date]"]=ce["[object Float32Array]"]=ce["[object Float64Array]"]=ce["[object Int8Array]"]=ce["[object Int16Array]"]=ce["[object Int32Array]"]=ce["[object Map]"]=ce["[object Number]"]=ce[he]=ce["[object RegExp]"]=ce["[object Set]"]=ce["[object String]"]=ce["[object Symbol]"]=ce["[object Uint8Array]"]=ce["[object Uint8ClampedArray]"]=ce["[object Uint16Array]"]=ce["[object Uint32Array]"]=!0,ce["[object Error]"]=ce[ne]=ce["[object WeakMap]"]=!1,g.exports=function Ae(Me,Oe,be,ue,He,$e){var F,je=1&Oe,Et=2&Oe,lt=4&Oe;if(be&&(F=He?be(Me,ue,He,$e):be(Me)),void 0!==F)return F;if(!J(Me))return Me;var nn=U(Me);if(nn){if(F=j(Me),!je)return _(Me,F)}else{var St=x(Me),At=St==ne||"[object GeneratorFunction]"==St;if(M(Me))return h(Me,je);if(St==he||St==fe||At&&!He){if(F=Et||At?{}:z(Me),!je)return Et?b(Me,u(F,Me)):m(Me,l(F,Me))}else{if(!ce[St])return He?Me:{};F=H(Me,St,je)}}$e||($e=new e);var Qe=$e.get(Me);if(Qe)return Qe;$e.set(Me,F),Y(Me)?Me.forEach(function(ae){F.add(Ae(ae,Oe,be,ae,Me,$e))}):I(Me)&&Me.forEach(function(ae,Ie){F.set(Ie,Ae(ae,Oe,be,Ie,Me,$e))});var It=nn?void 0:(lt?Et?D:C:Et?oe:ie)(Me);return s(It||Me,function(ae,Ie){It&&(ae=Me[Ie=ae]),a(F,Ie,Ae(ae,Oe,be,Ie,Me,$e))}),F}},function(g,o,t){var e=t(240),s=t(231),a=t(241),l=t(396);g.exports=Object.getOwnPropertySymbols?function(h){for(var _=[];h;)e(_,a(h)),h=s(h);return _}:l},function(g,o,t){var e=t(395),s=t(439),a=t(153);g.exports=function(l){return e(l,a,s)}},function(g,o){g.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var s=0,a=new Array(e);s<e;s++)a[s]=t[s];return a},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){var t;t="undefined"!=typeof self?self:this,function(e){var s="URLSearchParams"in t,a="Symbol"in t&&"iterator"in Symbol,l="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(ne){return!1}}(),u="FormData"in t,h="ArrayBuffer"in t;if(h)var _=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],m=ArrayBuffer.isView||function(ne){return ne&&_.indexOf(Object.prototype.toString.call(ne))>-1};function b(ne){if("string"!=typeof ne&&(ne=String(ne)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(ne))throw new TypeError("Invalid character in header field name");return ne.toLowerCase()}function C(ne){return"string"!=typeof ne&&(ne=String(ne)),ne}function D(ne){var he={next:function(){var ce=ne.shift();return{done:void 0===ce,value:ce}}};return a&&(he[Symbol.iterator]=function(){return he}),he}function x(ne){this.map={},ne instanceof x?ne.forEach(function(he,ce){this.append(ce,he)},this):Array.isArray(ne)?ne.forEach(function(he){this.append(he[0],he[1])},this):ne&&Object.getOwnPropertyNames(ne).forEach(function(he){this.append(he,ne[he])},this)}function j(ne){if(ne.bodyUsed)return Promise.reject(new TypeError("Already read"));ne.bodyUsed=!0}function H(ne){return new Promise(function(he,ce){ne.onload=function(){he(ne.result)},ne.onerror=function(){ce(ne.error)}})}function z(ne){var he=new FileReader,ce=H(he);return he.readAsArrayBuffer(ne),ce}function U(ne){if(ne.slice)return ne.slice(0);var he=new Uint8Array(ne.byteLength);return he.set(new Uint8Array(ne)),he.buffer}function M(){return this.bodyUsed=!1,this._initBody=function(ne){var he;this._bodyInit=ne,ne?"string"==typeof ne?this._bodyText=ne:l&&Blob.prototype.isPrototypeOf(ne)?this._bodyBlob=ne:u&&FormData.prototype.isPrototypeOf(ne)?this._bodyFormData=ne:s&&URLSearchParams.prototype.isPrototypeOf(ne)?this._bodyText=ne.toString():h&&l&&(he=ne)&&DataView.prototype.isPrototypeOf(he)?(this._bodyArrayBuffer=U(ne.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):h&&(ArrayBuffer.prototype.isPrototypeOf(ne)||m(ne))?this._bodyArrayBuffer=U(ne):this._bodyText=ne=Object.prototype.toString.call(ne):this._bodyText="",this.headers.get("content-type")||("string"==typeof ne?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):s&&URLSearchParams.prototype.isPrototypeOf(ne)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},l&&(this.blob=function(){var ne=j(this);if(ne)return ne;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?j(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(z)}),this.text=function(){var ne,he,ce,Ae=j(this);if(Ae)return Ae;if(this._bodyBlob)return ne=this._bodyBlob,ce=H(he=new FileReader),he.readAsText(ne),ce;if(this._bodyArrayBuffer)return Promise.resolve(function(Me){for(var Oe=new Uint8Array(Me),be=new Array(Oe.length),ue=0;ue<Oe.length;ue++)be[ue]=String.fromCharCode(Oe[ue]);return be.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},u&&(this.formData=function(){return this.text().then(Y)}),this.json=function(){return this.text().then(JSON.parse)},this}x.prototype.append=function(ne,he){ne=b(ne),he=C(he);var ce=this.map[ne];this.map[ne]=ce?ce+", "+he:he},x.prototype.delete=function(ne){delete this.map[b(ne)]},x.prototype.get=function(ne){return ne=b(ne),this.has(ne)?this.map[ne]:null},x.prototype.has=function(ne){return this.map.hasOwnProperty(b(ne))},x.prototype.set=function(ne,he){this.map[b(ne)]=C(he)},x.prototype.forEach=function(ne,he){for(var ce in this.map)this.map.hasOwnProperty(ce)&&ne.call(he,this.map[ce],ce,this)},x.prototype.keys=function(){var ne=[];return this.forEach(function(he,ce){ne.push(ce)}),D(ne)},x.prototype.values=function(){var ne=[];return this.forEach(function(he){ne.push(he)}),D(ne)},x.prototype.entries=function(){var ne=[];return this.forEach(function(he,ce){ne.push([ce,he])}),D(ne)},a&&(x.prototype[Symbol.iterator]=x.prototype.entries);var I=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function J(ne,he){var ce,Ae,Me=(he=he||{}).body;if(ne instanceof J){if(ne.bodyUsed)throw new TypeError("Already read");this.url=ne.url,this.credentials=ne.credentials,he.headers||(this.headers=new x(ne.headers)),this.method=ne.method,this.mode=ne.mode,this.signal=ne.signal,Me||null==ne._bodyInit||(Me=ne._bodyInit,ne.bodyUsed=!0)}else this.url=String(ne);if(this.credentials=he.credentials||this.credentials||"same-origin",!he.headers&&this.headers||(this.headers=new x(he.headers)),this.method=(Ae=(ce=he.method||this.method||"GET").toUpperCase(),I.indexOf(Ae)>-1?Ae:ce),this.mode=he.mode||this.mode||null,this.signal=he.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&Me)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(Me)}function Y(ne){var he=new FormData;return ne.trim().split("&").forEach(function(ce){if(ce){var Ae=ce.split("="),Me=Ae.shift().replace(/\+/g," "),Oe=Ae.join("=").replace(/\+/g," ");he.append(decodeURIComponent(Me),decodeURIComponent(Oe))}}),he}function ie(ne,he){he||(he={}),this.type="default",this.status=void 0===he.status?200:he.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in he?he.statusText:"OK",this.headers=new x(he.headers),this.url=he.url||"",this._initBody(ne)}J.prototype.clone=function(){return new J(this,{body:this._bodyInit})},M.call(J.prototype),M.call(ie.prototype),ie.prototype.clone=function(){return new ie(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new x(this.headers),url:this.url})},ie.error=function(){var ne=new ie(null,{status:0,statusText:""});return ne.type="error",ne};var oe=[301,302,303,307,308];ie.redirect=function(ne,he){if(-1===oe.indexOf(he))throw new RangeError("Invalid status code");return new ie(null,{status:he,headers:{location:ne}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(ne){e.DOMException=function(he,ce){this.message=he,this.name=ce;var Ae=Error(he);this.stack=Ae.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function fe(ne,he){return new Promise(function(ce,Ae){var Me=new J(ne,he);if(Me.signal&&Me.signal.aborted)return Ae(new e.DOMException("Aborted","AbortError"));var Oe=new XMLHttpRequest;function be(){Oe.abort()}Oe.onload=function(){var ue,He,$e={status:Oe.status,statusText:Oe.statusText,headers:(ue=Oe.getAllResponseHeaders()||"",He=new x,ue.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(je){var Et=je.split(":"),lt=Et.shift().trim();if(lt){var nn=Et.join(":").trim();He.append(lt,nn)}}),He)};$e.url="responseURL"in Oe?Oe.responseURL:$e.headers.get("X-Request-URL"),ce(new ie("response"in Oe?Oe.response:Oe.responseText,$e))},Oe.onerror=function(){Ae(new TypeError("Network request failed"))},Oe.ontimeout=function(){Ae(new TypeError("Network request failed"))},Oe.onabort=function(){Ae(new e.DOMException("Aborted","AbortError"))},Oe.open(Me.method,Me.url,!0),"include"===Me.credentials?Oe.withCredentials=!0:"omit"===Me.credentials&&(Oe.withCredentials=!1),"responseType"in Oe&&l&&(Oe.responseType="blob"),Me.headers.forEach(function(ue,He){Oe.setRequestHeader(He,ue)}),Me.signal&&(Me.signal.addEventListener("abort",be),Oe.onreadystatechange=function(){4===Oe.readyState&&Me.signal.removeEventListener("abort",be)}),Oe.send(void 0===Me._bodyInit?null:Me._bodyInit)})}fe.polyfill=!0,t.fetch||(t.fetch=fe,t.Headers=x,t.Request=J,t.Response=ie),e.Headers=x,e.Request=J,e.Response=ie,e.fetch=fe,Object.defineProperty(e,"__esModule",{value:!0})}({})},function(g,o,t){"use strict";var e=t(252),s=Object.prototype.hasOwnProperty,a=Array.isArray,l=function(){for(var h=[],_=0;_<256;++_)h.push("%"+((_<16?"0":"")+_.toString(16)).toUpperCase());return h}(),u=function(h,_){for(var m=_&&_.plainObjects?Object.create(null):{},b=0;b<h.length;++b)void 0!==h[b]&&(m[b]=h[b]);return m};g.exports={arrayToObject:u,assign:function(h,_){return Object.keys(_).reduce(function(m,b){return m[b]=_[b],m},h)},combine:function(h,_){return[].concat(h,_)},compact:function(h){for(var _=[{obj:{o:h},prop:"o"}],m=[],b=0;b<_.length;++b)for(var C=_[b],D=C.obj[C.prop],x=Object.keys(D),j=0;j<x.length;++j){var H=x[j],z=D[H];"object"==typeof z&&null!==z&&-1===m.indexOf(z)&&(_.push({obj:D,prop:H}),m.push(z))}return function(U){for(;U.length>1;){var M=U.pop(),I=M.obj[M.prop];if(a(I)){for(var J=[],Y=0;Y<I.length;++Y)void 0!==I[Y]&&J.push(I[Y]);M.obj[M.prop]=J}}}(_),h},decode:function(h,_,m){var b=h.replace(/\+/g," ");if("iso-8859-1"===m)return b.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(b)}catch(C){return b}},encode:function(h,_,m,b,C){if(0===h.length)return h;var D=h;if("symbol"==typeof h?D=Symbol.prototype.toString.call(h):"string"!=typeof h&&(D=String(h)),"iso-8859-1"===m)return escape(D).replace(/%u[0-9a-f]{4}/gi,function(z){return"%26%23"+parseInt(z.slice(2),16)+"%3B"});for(var x="",j=0;j<D.length;++j){var H=D.charCodeAt(j);45===H||46===H||95===H||126===H||H>=48&&H<=57||H>=65&&H<=90||H>=97&&H<=122||C===e.RFC1738&&(40===H||41===H)?x+=D.charAt(j):H<128?x+=l[H]:H<2048?x+=l[192|H>>6]+l[128|63&H]:H<55296||H>=57344?x+=l[224|H>>12]+l[128|H>>6&63]+l[128|63&H]:(H=65536+((1023&H)<<10|1023&D.charCodeAt(j+=1)),x+=l[240|H>>18]+l[128|H>>12&63]+l[128|H>>6&63]+l[128|63&H])}return x},isBuffer:function(h){return!(!h||"object"!=typeof h||!(h.constructor&&h.constructor.isBuffer&&h.constructor.isBuffer(h)))},isRegExp:function(h){return"[object RegExp]"===Object.prototype.toString.call(h)},maybeMap:function(h,_){if(a(h)){for(var m=[],b=0;b<h.length;b+=1)m.push(_(h[b]));return m}return _(h)},merge:function h(_,m,b){if(!m)return _;if("object"!=typeof m){if(a(_))_.push(m);else{if(!_||"object"!=typeof _)return[_,m];(b&&(b.plainObjects||b.allowPrototypes)||!s.call(Object.prototype,m))&&(_[m]=!0)}return _}if(!_||"object"!=typeof _)return[_].concat(m);var C=_;return a(_)&&!a(m)&&(C=u(_,b)),a(_)&&a(m)?(m.forEach(function(D,x){if(s.call(_,x)){var j=_[x];j&&"object"==typeof j&&D&&"object"==typeof D?_[x]=h(j,D,b):_.push(D)}else _[x]=D}),_):Object.keys(m).reduce(function(D,x){var j=m[x];return D[x]=s.call(D,x)?h(D[x],j,b):j,D},C)}}},function(g,o,t){var e=t(33),s=t(43),a=t(112),l=t(941),u=Object.isExtensible,h=e(function(){u(1)});g.exports=h||l?function(_){return!!s(_)&&(!l||"ArrayBuffer"!=a(_))&&(!u||u(_))}:u},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(194),l=t(33),u=t(85),h=t(124),_=t(139),m=t(41),b=t(43),C=t(100),D=t(63).f,x=t(87).forEach,j=t(48),H=t(76),z=H.set,U=H.getterFor;g.exports=function(M,I,J){var Y,ie=-1!==M.indexOf("Map"),oe=-1!==M.indexOf("Weak"),fe=ie?"set":"add",ne=s[M],he=ne&&ne.prototype,ce={};if(j&&m(ne)&&(oe||he.forEach&&!l(function(){(new ne).entries().next()}))){var Ae=(Y=I(function(Oe,be){z(_(Oe,Ae),{type:M,collection:new ne}),null!=be&&h(be,Oe[fe],{that:Oe,AS_ENTRIES:ie})})).prototype,Me=U(M);x(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(Oe){var be="add"==Oe||"set"==Oe;!(Oe in he)||oe&&"clear"==Oe||u(Ae,Oe,function(ue,He){var $e=Me(this).collection;if(!be&&oe&&!b(ue))return"get"==Oe&&void 0;var F=$e[Oe](0===ue?0:ue,He);return be?this:F})}),oe||D(Ae,"size",{configurable:!0,get:function(){return Me(this).collection.size}})}else Y=J.getConstructor(I,M,ie,fe),a.enable();return C(Y,M,!1,!0),ce[M]=Y,e({global:!0,forced:!0},ce),oe||J.setStrong(Y,M,ie),Y}},function(g,o,t){var e=t(33),s=t(38),a=t(96),l=s("iterator");g.exports=!e(function(){var u=new URL("b?a=1&b=2&c=3","http://a"),h=u.searchParams,_="";return u.pathname="c%20d",h.forEach(function(m,b){h.delete("b"),_+=b+m}),a&&!u.toJSON||!h.sort||"http://a/c%20d?a=1&c=3"!==u.href||"3"!==h.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!h[l]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://\u0442\u0435\u0441\u0442").host||"#%D0%B1"!==new URL("http://a#\u0431").hash||"a1c3"!==_||"x"!==new URL("http://x",void 0).host})},function(g,o){g.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwcHgiICBoZWlnaHQ9IjIwMHB4IiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJsZHMtcm9sbGluZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IGJhY2tncm91bmQtcG9zaXRpb246IGluaXRpYWwgaW5pdGlhbDsgYmFja2dyb3VuZC1yZXBlYXQ6IGluaXRpYWwgaW5pdGlhbDsiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIGZpbGw9Im5vbmUiIG5nLWF0dHItc3Ryb2tlPSJ7e2NvbmZpZy5jb2xvcn19IiBuZy1hdHRyLXN0cm9rZS13aWR0aD0ie3tjb25maWcud2lkdGh9fSIgbmctYXR0ci1yPSJ7e2NvbmZpZy5yYWRpdXN9fSIgbmctYXR0ci1zdHJva2UtZGFzaGFycmF5PSJ7e2NvbmZpZy5kYXNoYXJyYXl9fSIgc3Ryb2tlPSIjNTU1NTU1IiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgY2FsY01vZGU9ImxpbmVhciIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvY2lyY2xlPjwvc3ZnPgo="},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.combineReducers=void 0;var e,a=(e=t(556))&&e.__esModule?e:{default:e};o.combineReducers=a.default},function(g,o,t){var e=t(560),s=t(600)(function(a,l,u){e(a,l,u)});g.exports=s},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.sanitizeUrl=void 0;var e=/^([^\w]*)(javascript|data|vbscript)/im,s=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,l=[".","/"];o.sanitizeUrl=function(u){if(!u)return"about:blank";var h=u.replace(s,"").trim();if(l.indexOf(h[0])>-1)return h;var _=h.match(a);return _&&e.test(_[0])?"about:blank":h}},function(g,o,t){var e=t(661),s=t(668)(function(a,l,u){return l=l.toLowerCase(),a+(u?e(l):l)});g.exports=s},function(g,o,t){var e=t(676)(t(704));g.exports=e},function(g,o,t){(function(e){var s=t(713),a=t(714).Stream;function l(h,_,m){m=m||0;var b,C,D=(b=_,new Array(m||0).join(b||"")),x=h;if("object"==typeof h&&(x=h[C=Object.keys(h)[0]])&&x._elem)return x._elem.name=C,x._elem.icount=m,x._elem.indent=_,x._elem.indents=D,x._elem.interrupt=x,x._elem;var j,H=[],z=[];function U(M){Object.keys(M).forEach(function(I){H.push(I+'="'+s(M[I])+'"')})}switch(typeof x){case"object":if(null===x)break;x._attr&&U(x._attr),x._cdata&&z.push(("<![CDATA["+x._cdata).replace(/\]\]>/g,"]]]]><![CDATA[>")+"]]>"),x.forEach&&(j=!1,z.push(""),x.forEach(function(M){"object"==typeof M?"_attr"==Object.keys(M)[0]?U(M._attr):z.push(l(M,_,m+1)):(z.pop(),j=!0,z.push(s(M)))}),j||z.push(""));break;default:z.push(s(x))}return{name:C,interrupt:!1,attributes:H,content:z,icount:m,indents:D,indent:_}}function u(h,_,m){if("object"!=typeof _)return h(!1,_);var b=_.interrupt?1:_.content.length;function C(){for(;_.content.length;){var x=_.content.shift();if(void 0!==x){if(D(x))return;u(h,x)}}h(!1,(b>1?_.indents:"")+(_.name?"</"+_.name+">":"")+(_.indent&&!m?"\n":"")),m&&m()}function D(x){return!!x.interrupt&&(x.interrupt.append=h,x.interrupt.end=C,x.interrupt=!1,h(!0),!0)}if(h(!1,_.indents+(_.name?"<"+_.name:"")+(_.attributes.length?" "+_.attributes.join(" "):"")+(b?_.name?">":"":_.name?"/>":"")+(_.indent&&b>1?"\n":"")),!b)return h(!1,_.indent?"\n":"");D(_)||C()}g.exports=function(h,_){"object"!=typeof _&&(_={indent:_});var m,b,C=_.stream?new a:null,D="",x=!1,j=_.indent?!0===_.indent?"    ":_.indent:"",H=!0;function z(J){H?e.nextTick(J):J()}function U(J,Y){if(void 0!==Y&&(D+=Y),J&&!x&&(C=C||new a,x=!0),J&&x){var ie=D;z(function(){C.emit("data",ie)}),D=""}}function M(J,Y){u(U,l(J,j,j?1:0),Y)}function I(){if(C){var J=D;z(function(){C.emit("data",J),C.emit("end"),C.readable=!1,C.emit("close")})}}return z(function(){H=!1}),_.declaration&&(b={version:"1.0",encoding:(m=_.declaration).encoding||"UTF-8"},m.standalone&&(b.standalone=m.standalone),M({"?xml":{_attr:b}}),D=D.replace("/>","?>")),h&&h.forEach?h.forEach(function(J,Y){var ie;Y+1===h.length&&(ie=I),M(J,ie)}):M(h,I),C?(C.readable=!0,C):D},g.exports.element=g.exports.Element=function(){var h=Array.prototype.slice.call(arguments),_={_elem:l(h),push:function(m){if(!this.append)throw new Error("not assigned to a parent!");var b=this,C=this._elem.indent;u(this.append,l(m,C,this._elem.icount+(C?1:0)),function(){b.append(!0)})},close:function(m){void 0!==m&&this.push(m),this.end&&this.end()}};return _}}).call(this,t(118))},function(g,o,t){(function(e){g.exports=function(a){if(a.CSS&&a.CSS.escape)return a.CSS.escape;var l=function(u){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var h,_=String(u),m=_.length,b=-1,C="",D=_.charCodeAt(0);++b<m;)0!=(h=_.charCodeAt(b))?C+=h>=1&&h<=31||127==h||0==b&&h>=48&&h<=57||1==b&&h>=48&&h<=57&&45==D?"\\"+h.toString(16)+" ":0==b&&1==m&&45==h||!(h>=128||45==h||95==h||h>=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122)?"\\"+_.charAt(b):_.charAt(b):C+="\ufffd";return C};return a.CSS||(a.CSS={}),a.CSS.escape=l,l}(void 0!==e?e:this)}).call(this,t(57))},function(g,o,t){(o=g.exports=function(e){e=e.toLowerCase();var s=o[e];if(!s)throw new Error(e+" is not supported (we accept pull requests)");return new s}).sha=t(787),o.sha1=t(788),o.sha224=t(789),o.sha256=t(418),o.sha384=t(790),o.sha512=t(419)},function(g,o,t){var e=t(390),s=t(401),a=t(189),l=t(795),u=t(52);g.exports=function(h,_,m){var b=u(h)?e:l,C=arguments.length<3;return b(h,a(_,4),m,C,s)}},function(g,o,t){var e=t(116),s=t(52),a=t(78);g.exports=function(l){return"string"==typeof l||!s(l)&&a(l)&&"[object String]"==e(l)}},function(g,o,t){var e=t(53),s=t(849),a=t(400),l=Math.max,u=Math.min;g.exports=function(h,_,m){var b,C,D,x,j,H,z=0,U=!1,M=!1,I=!0;if("function"!=typeof h)throw new TypeError("Expected a function");function J(he){var ce=b,Ae=C;return b=C=void 0,z=he,x=h.apply(Ae,ce)}function Y(he){return z=he,j=setTimeout(oe,_),U?J(he):x}function ie(he){var ce=he-H;return void 0===H||ce>=_||ce<0||M&&he-z>=D}function oe(){var ce,Ae,he=s();if(ie(he))return fe(he);j=setTimeout(oe,(Ae=_-((ce=he)-H),M?u(Ae,D-(ce-z)):Ae))}function fe(he){return j=void 0,I&&b?J(he):(b=C=void 0,x)}function ne(){var he=s(),ce=ie(he);if(b=arguments,C=this,H=he,ce){if(void 0===j)return Y(H);if(M)return clearTimeout(j),j=setTimeout(oe,_),J(H)}return void 0===j&&(j=setTimeout(oe,_)),x}return _=a(_)||0,e(m)&&(U=!!m.leading,D=(M="maxWait"in m)?l(a(m.maxWait)||0,_):D,I="trailing"in m?!!m.trailing:I),ne.cancel=function(){void 0!==j&&clearTimeout(j),z=0,b=H=C=j=void 0},ne.flush=function(){return void 0===j?x:fe(s())},ne}},function(g,o,t){var e=t(387),s=t(438),a=t(895),l=t(156),u=t(134),h=t(898),_=t(899),m=t(440),b=_(function(C,D){var x={};if(null==C)return x;var j=!1;D=e(D,function(z){return z=l(z,C),j||(j=z.length>1),z}),u(C,m(C),x),j&&(x=s(x,7,h));for(var H=D.length;H--;)a(x,D[H]);return x});g.exports=b},function(g,o,t){g.exports=t(903)},function(g,o,t){var e=t(914);g.exports=function(s,a){if(null==s)return{};var l,u,h=e(s,a);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(u=0;u<_.length;u++)a.indexOf(l=_[u])>=0||Object.prototype.propertyIsEnumerable.call(s,l)&&(h[l]=s[l])}return h},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(915),s=t(916),a=t(917),l=t(918);g.exports=function(u){return e(u)||s(u)||a(u)||l()},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){function t(){return g.exports=t=Object.assign||function(e){for(var s=1;s<arguments.length;s++){var a=arguments[s];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e},g.exports.default=g.exports,g.exports.__esModule=!0,t.apply(this,arguments)}g.exports=t,g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(t){const e={literal:"true false null"},s=[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],a=[t.QUOTE_STRING_MODE,t.C_NUMBER_MODE],l={end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},u={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE],illegal:"\\n"},t.inherit(l,{begin:/:/})].concat(s),illegal:"\\S"},h={begin:"\\[",end:"\\]",contains:[t.inherit(l)],illegal:"\\S"};return a.push(u,h),s.forEach(function(_){a.push(_)}),{name:"JSON",contains:a,keywords:e,illegal:"\\S"}}},function(g,o){const t="[A-Za-z$_][0-9A-Za-z$_]*",e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],s=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function l(h){return u("(?=",h,")")}function u(...h){return h.map(_=>{return(m=_)?"string"==typeof m?m:m.source:null;var m}).join("")}g.exports=function(h){const _=t,C={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(ne,he)=>{const ce=ne[0].length+ne.index,Ae=ne.input[ce];"<"!==Ae?">"===Ae&&(((Me,{after:Oe})=>{const be="</"+Me[0].slice(1);return-1!==Me.input.indexOf(be,Oe)})(ne,{after:ce})||he.ignoreMatch()):he.ignoreMatch()}},D={$pattern:t,keyword:e,literal:s,built_in:a},x="\\.([0-9](_?[0-9])*)",j="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",H={className:"number",variants:[{begin:`(\\b(${j})((${x})|\\.)?|(${x}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{begin:`\\b(${j})\\b((${x})\\b|\\.)?|(${x})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},z={className:"subst",begin:"\\$\\{",end:"\\}",keywords:D,contains:[]},U={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[h.BACKSLASH_ESCAPE,z],subLanguage:"xml"}},M={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[h.BACKSLASH_ESCAPE,z],subLanguage:"css"}},I={className:"string",begin:"`",end:"`",contains:[h.BACKSLASH_ESCAPE,z]},J={className:"comment",variants:[h.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:_+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),h.C_BLOCK_COMMENT_MODE,h.C_LINE_COMMENT_MODE]},Y=[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE,U,M,I,H,h.REGEXP_MODE];z.contains=Y.concat({begin:/\{/,end:/\}/,keywords:D,contains:["self"].concat(Y)});const ie=[].concat(J,z.contains),oe=ie.concat([{begin:/\(/,end:/\)/,keywords:D,contains:["self"].concat(ie)}]),fe={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:D,contains:oe};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:D,exports:{PARAMS_CONTAINS:oe},illegal:/#(?![$_A-z])/,contains:[h.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},h.APOS_STRING_MODE,h.QUOTE_STRING_MODE,U,M,I,J,H,{begin:u(/[{,\n]\s*/,l(u(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,_+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:_+l("\\s*:"),relevance:0}]},{begin:"("+h.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[J,h.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+h.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:h.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:D,contains:oe}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:"</>"},{begin:C.begin,"on:begin":C.isTrulyOpeningTag,end:C.end}],subLanguage:"xml",contains:[{begin:C.begin,end:C.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:D,contains:["self",h.inherit(h.TITLE_MODE,{begin:_}),fe],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:h.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[fe,h.inherit(h.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},h.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[h.inherit(h.TITLE_MODE,{begin:_}),"self",fe]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[h.inherit(h.TITLE_MODE,{begin:_}),{begin:/\(\)/},fe]},{begin:/\$[(.]/}]}}},function(g,o){function t(l){return l?"string"==typeof l?l:l.source:null}function e(l){return s("(?=",l,")")}function s(...l){return l.map(u=>t(u)).join("")}function a(...l){return"("+l.map(u=>t(u)).join("|")+")"}g.exports=function(l){const u=s(/[A-Z_]/,s("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),h={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},_={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},m=l.inherit(_,{begin:/\(/,end:/\)/}),b=l.inherit(l.APOS_STRING_MODE,{className:"meta-string"}),C=l.inherit(l.QUOTE_STRING_MODE,{className:"meta-string"}),D={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[h]},{begin:/'/,end:/'/,contains:[h]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[_,C,b,m,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[_,m,C,b]}]}]},l.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},h,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[D],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[D],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:s(/</,e(s(u,a(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:u,relevance:0,starts:D}]},{className:"tag",begin:s(/<\//,e(s(u,/>/))),contains:[{className:"name",begin:u,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},function(g,o){g.exports=function(t){var e="true false yes no null",s="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},l=t.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+s},{className:"type",begin:"!<"+s+">"},{className:"type",begin:"!"+s},{className:"type",begin:"!!"+s},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},{begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},{begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},a],C=[...b];return C.pop(),C.push(l),h.contains=C,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:b}}},function(g,o){function t(...e){return e.map(s=>{return(a=s)?"string"==typeof a?a:a.source:null;var a}).join("")}g.exports=function(e){const s="HTTP/(2|1\\.[01])",a={className:"attribute",begin:t("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},l=[a,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+s+" \\d{3})",end:/$/,contains:[{className:"meta",begin:s},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:l}},{begin:"(?=^[A-Z]+ (.*?) "+s+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:s},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:l}},e.inherit(a,{relevance:0})]}}},function(g,o){function t(...e){return e.map(s=>{return(a=s)?"string"==typeof a?a:a.source:null;var a}).join("")}g.exports=function(e){const s={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:t(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const l={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},u={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},h={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,l]};l.contains.push(h);const _={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},m=e.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),b={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[m,e.SHEBANG(),b,_,e.HASH_COMMENT_MODE,u,h,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}},function(g,o){g.exports=function(t){const e={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},s={begin:"`[\\s\\S]",relevance:0},a={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},l={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[s,a,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},u={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},h=t.inherit(t.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),_={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},m={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[t.TITLE_MODE]},b={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[a]}]},C={begin:/using\s/,end:/$/,returnBegin:!0,contains:[l,u,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},D={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},x={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(e.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},t.inherit(t.TITLE_MODE,{endsParent:!0})]},j=[x,h,s,t.NUMBER_MODE,l,u,_,a,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],H={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",j,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return x.contains.unshift(H),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:e,contains:j.concat(m,b,C,D,H)}}},function(g,o,t){var e=t(438);g.exports=function(s){return e(s,5)}},function(g,o,t){g.exports=t(938)},function(g,o){var t=g.exports=function(b){return new e(b)};function e(b){this.value=b}function s(b,C,D){var x=[],j=[],H=!0;return function z(U){var M=D?a(U):U,I={},J=!0,Y={node:M,node_:U,path:[].concat(x),parent:j[j.length-1],parents:j,key:x.slice(-1)[0],isRoot:0===x.length,level:x.length,circular:null,update:function(fe,ne){Y.isRoot||(Y.parent.node[Y.key]=fe),Y.node=fe,ne&&(J=!1)},delete:function(fe){delete Y.parent.node[Y.key],fe&&(J=!1)},remove:function(fe){h(Y.parent.node)?Y.parent.node.splice(Y.key,1):delete Y.parent.node[Y.key],fe&&(J=!1)},keys:null,before:function(fe){I.before=fe},after:function(fe){I.after=fe},pre:function(fe){I.pre=fe},post:function(fe){I.post=fe},stop:function(){H=!1},block:function(){J=!1}};if(!H)return Y;function ie(){if("object"==typeof Y.node&&null!==Y.node){Y.keys&&Y.node_===Y.node||(Y.keys=l(Y.node)),Y.isLeaf=0==Y.keys.length;for(var fe=0;fe<j.length;fe++)if(j[fe].node_===U){Y.circular=j[fe];break}}else Y.isLeaf=!0,Y.keys=null;Y.notLeaf=!Y.isLeaf,Y.notRoot=!Y.isRoot}ie();var oe=C.call(Y,Y.node);return void 0!==oe&&Y.update&&Y.update(oe),I.before&&I.before.call(Y,Y.node),J&&("object"!=typeof Y.node||null===Y.node||Y.circular||(j.push(Y),ie(),_(Y.keys,function(fe,ne){x.push(fe),I.pre&&I.pre.call(Y,Y.node[fe],fe);var he=z(Y.node[fe]);D&&m.call(Y.node,fe)&&(Y.node[fe]=he.node),he.isLast=ne==Y.keys.length-1,he.isFirst=0==ne,I.post&&I.post.call(Y,he),x.pop()}),j.pop()),I.after&&I.after.call(Y,Y.node)),Y}(b).node}function a(b){if("object"==typeof b&&null!==b){var C;if(h(b))C=[];else if("[object Date]"===u(b))C=new Date(b.getTime?b.getTime():b);else if("[object RegExp]"===u(b))C=new RegExp(b);else if("[object Error]"===u(b))C={message:b.message};else if(function(j){return"[object Boolean]"===u(j)}(b))C=new Boolean(b);else if(function(j){return"[object Number]"===u(j)}(b))C=new Number(b);else if(function(j){return"[object String]"===u(j)}(b))C=new String(b);else if(Object.create&&Object.getPrototypeOf)C=Object.create(Object.getPrototypeOf(b));else if(b.constructor===Object)C={};else{var x=function(){};x.prototype=b.constructor&&b.constructor.prototype||b.__proto__||{},C=new x}return _(l(b),function(j){C[j]=b[j]}),C}return b}e.prototype.get=function(b){for(var C=this.value,D=0;D<b.length;D++){var x=b[D];if(!C||!m.call(C,x)){C=void 0;break}C=C[x]}return C},e.prototype.has=function(b){for(var C=this.value,D=0;D<b.length;D++){var x=b[D];if(!C||!m.call(C,x))return!1;C=C[x]}return!0},e.prototype.set=function(b,C){for(var D=this.value,x=0;x<b.length-1;x++){var j=b[x];m.call(D,j)||(D[j]={}),D=D[j]}return D[b[x]]=C,C},e.prototype.map=function(b){return s(this.value,b,!0)},e.prototype.forEach=function(b){return this.value=s(this.value,b,!1),this.value},e.prototype.reduce=function(b,C){var D=1===arguments.length,x=D?this.value:C;return this.forEach(function(j){this.isRoot&&D||(x=b.call(this,x,j))}),x},e.prototype.paths=function(){var b=[];return this.forEach(function(C){b.push(this.path)}),b},e.prototype.nodes=function(){var b=[];return this.forEach(function(C){b.push(this.node)}),b},e.prototype.clone=function(){var b=[],C=[];return function D(x){for(var j=0;j<b.length;j++)if(b[j]===x)return C[j];if("object"==typeof x&&null!==x){var H=a(x);return b.push(x),C.push(H),_(l(x),function(z){H[z]=D(x[z])}),b.pop(),C.pop(),H}return x}(this.value)};var l=Object.keys||function(b){var C=[];for(var D in b)C.push(D);return C};function u(b){return Object.prototype.toString.call(b)}var h=Array.isArray||function(b){return"[object Array]"===Object.prototype.toString.call(b)},_=function(b,C){if(b.forEach)return b.forEach(C);for(var D=0;D<b.length;D++)C(b[D],D,b)};_(l(e.prototype),function(b){t[b]=function(C){var D=[].slice.call(arguments,1),x=new e(C);return x[b].apply(x,D)}});var m=Object.hasOwnProperty||function(b,C){return C in b}},function(g,o,t){"use strict";o.parse=function(h,_){if("string"!=typeof h)throw new TypeError("argument str must be a string");for(var m={},b=_||{},C=h.split(a),D=b.decode||e,x=0;x<C.length;x++){var j=C[x],H=j.indexOf("=");if(!(H<0)){var z=j.substr(0,H).trim(),U=j.substr(++H,j.length).trim();'"'==U[0]&&(U=U.slice(1,-1)),null==m[z]&&(m[z]=u(U,D))}}return m},o.serialize=function(h,_,m){var b=m||{},C=b.encode||s;if("function"!=typeof C)throw new TypeError("option encode is invalid");if(!l.test(h))throw new TypeError("argument name is invalid");var D=C(_);if(D&&!l.test(D))throw new TypeError("argument val is invalid");var x=h+"="+D;if(null!=b.maxAge){var j=b.maxAge-0;if(isNaN(j)||!isFinite(j))throw new TypeError("option maxAge is invalid");x+="; Max-Age="+Math.floor(j)}if(b.domain){if(!l.test(b.domain))throw new TypeError("option domain is invalid");x+="; Domain="+b.domain}if(b.path){if(!l.test(b.path))throw new TypeError("option path is invalid");x+="; Path="+b.path}if(b.expires){if("function"!=typeof b.expires.toUTCString)throw new TypeError("option expires is invalid");x+="; Expires="+b.expires.toUTCString()}if(b.httpOnly&&(x+="; HttpOnly"),b.secure&&(x+="; Secure"),b.sameSite)switch("string"==typeof b.sameSite?b.sameSite.toLowerCase():b.sameSite){case!0:x+="; SameSite=Strict";break;case"lax":x+="; SameSite=Lax";break;case"strict":x+="; SameSite=Strict";break;case"none":x+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return x};var e=decodeURIComponent,s=encodeURIComponent,a=/; */,l=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function u(h,_){try{return _(h)}catch(m){return h}}},function(g,o,t){var e,s,a;s=[],void 0===(a="function"==typeof(e=function(){"use strict";var l=function(x){return x&&"getComputedStyle"in window&&"smooth"===window.getComputedStyle(x)["scroll-behavior"]};if("undefined"==typeof window||!("document"in window))return{};var u=function(x,j,H){var z;j=j||999,H||0===H||(H=9);var U=function(fe){z=fe},M=function(){clearTimeout(z),U(0)},I=function(fe){return Math.max(0,x.getTopOf(fe)-H)},J=function(fe,ne,he){if(M(),0===ne||ne&&ne<0||l(x.body))x.toY(fe),he&&he();else{var ce=x.getY(),Ae=Math.max(0,fe)-ce,Me=(new Date).getTime();ne=ne||Math.min(Math.abs(Ae),j),function Oe(){U(setTimeout(function(){var be=Math.min(1,((new Date).getTime()-Me)/ne),ue=Math.max(0,Math.floor(ce+Ae*(be<.5?2*be*be:be*(4-2*be)-1)));x.toY(ue),be<1&&x.getHeight()+ue<x.body.scrollHeight?Oe():(setTimeout(M,99),he&&he())},9))}()}},Y=function(fe,ne,he){J(I(fe),ne,he)};return{setup:function(fe,ne){return(0===fe||fe)&&(j=fe),(0===ne||ne)&&(H=ne),{defaultDuration:j,edgeOffset:H}},to:Y,toY:J,intoView:function(fe,ne,he){var ce=fe.getBoundingClientRect().height,Ae=x.getTopOf(fe)+ce,Me=x.getHeight(),Oe=x.getY(),be=Oe+Me;I(fe)<Oe||ce+H>Me?Y(fe,ne,he):Ae+H>be?J(Ae-Me+H,ne,he):he&&he()},center:function(fe,ne,he,ce){J(Math.max(0,x.getTopOf(fe)-x.getHeight()/2+(he||fe.getBoundingClientRect().height/2)),ne,ce)},stop:M,moving:function(){return!!z},getY:x.getY,getTopOf:x.getTopOf}},h=document.documentElement,_=function(){return window.scrollY||h.scrollTop},m=u({body:document.scrollingElement||document.body,toY:function(x){window.scrollTo(0,x)},getY:_,getHeight:function(){return window.innerHeight||h.clientHeight},getTopOf:function(x){return x.getBoundingClientRect().top+_()-h.offsetTop}});if(m.createScroller=function(x,j,H){return u({body:x,toY:function(z){x.scrollTop=z},getY:function(){return x.scrollTop},getHeight:function(){return Math.min(x.clientHeight,window.innerHeight||h.clientHeight)},getTopOf:function(z){return z.offsetTop}},j,H)},"addEventListener"in window&&!window.noZensmooth&&!l(document.body)){var b="history"in window&&"pushState"in history,C=b&&"scrollRestoration"in history;C&&(history.scrollRestoration="auto"),window.addEventListener("load",function(){C&&(setTimeout(function(){history.scrollRestoration="manual"},9),window.addEventListener("popstate",function(x){x.state&&"zenscrollY"in x.state&&m.toY(x.state.zenscrollY)},!1)),window.location.hash&&setTimeout(function(){var x=m.setup().edgeOffset;if(x){var j=document.getElementById(window.location.href.split("#")[1]);if(j){var H=Math.max(0,m.getTopOf(j)-x),z=m.getY()-H;0<=z&&z<9&&window.scrollTo(0,H)}}},9)},!1);var D=new RegExp("(^|\\s)noZensmooth(\\s|$)");window.addEventListener("click",function(x){for(var j=x.target;j&&"A"!==j.tagName;)j=j.parentNode;if(!(!j||1!==x.which||x.shiftKey||x.metaKey||x.ctrlKey||x.altKey)){if(C){var H=history.state&&"object"==typeof history.state?history.state:{};H.zenscrollY=m.getY();try{history.replaceState(H,"")}catch(Y){}}var z=j.getAttribute("href")||"";if(0===z.indexOf("#")&&!D.test(j.className)){var U=0,M=document.getElementById(z.substring(1));if("#"!==z){if(!M)return;U=m.getTopOf(M)}x.preventDefault();var I=function(){window.location=z},J=m.setup().edgeOffset;J&&(U=Math.max(0,U-J),b&&(I=function(){history.pushState({},"",z)})),m.toY(U,null,I)}}},!1)}return m}())?e.apply(o,s):e)||(g.exports=a)},function(g,o,t){g.exports=t(958)},function(g,o){g.exports=function(t,e,s,a){var l=new Blob(void 0!==a?[a,t]:[t],{type:s||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(l,e);else{var u=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(l):window.webkitURL.createObjectURL(l),h=document.createElement("a");h.style.display="none",h.href=u,h.setAttribute("download",e),void 0===h.download&&h.setAttribute("target","_blank"),document.body.appendChild(h),h.click(),setTimeout(function(){document.body.removeChild(h),window.URL.revokeObjectURL(u)},200)}}},function(g,o,t){g.exports=t(965)},function(g,o,t){g.exports=t(968)},function(g,o,t){"use strict";var e=t(973),s=function(h){return/<\/+[^>]+>/.test(h)},a=function(h){return/<[^>]+\/>/.test(h)};function l(h){return h.split(/(<\/?[^>]+>)/g).filter(function(_){return""!==_.trim()}).map(function(_){return{value:_,type:u(_)}})}function u(h){return s(h)?"ClosingTag":!/<[^>!]+>/.test(_=h)||s(_)||a(_)?a(h)?"SelfClosingTag":"Text":"OpeningTag";var _}g.exports=function(h){var _=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=_.indentor,b=_.textNodesOnSameLine,C=0,D=[];m=m||"    ";var x=l(h).map(function(j,H,z){var U=j.value,M=j.type;"ClosingTag"===M&&C--;var I=e(m,C),J=I+U;if("OpeningTag"===M&&C++,b){var Y=z[H-1],ie=z[H-2];"ClosingTag"===M&&"Text"===Y.type&&"OpeningTag"===ie.type&&(J=""+I+ie.value+Y.value+U,D.push(H-2,H-1))}return J});return D.forEach(function(j){return x[j]=null}),x.filter(function(j){return!!j}).join("\n")}},function(g,o,t){g.exports=t(977)},function(g,o,t){var e=t(483);t(508),t(509),t(510),t(511),t(512),t(513),t(514),g.exports=e},function(g,o,t){var e=t(484);t(68),g.exports=e},function(g,o,t){t(328),t(97),t(333),t(490),t(491),t(492),t(493),t(338),t(494),t(495),t(496),t(497),t(498),t(499),t(500),t(501),t(502),t(503),t(504),t(505);var e=t(34);g.exports=e.Symbol},function(g,o,t){var e=t(17),s=t(50),a=t(43),l=t(209),u=t(211),h=t(486),_=t(38),m=e.TypeError,b=_("toPrimitive");g.exports=function(C,D){if(!a(C)||l(C))return C;var x,j=u(C,b);if(j){if(void 0===D&&(D="default"),x=s(j,C,D),!a(x)||l(x))return x;throw m("Can't convert object to primitive value")}return void 0===D&&(D="number"),h(C,D)}},function(g,o,t){var e=t(17),s=t(50),a=t(41),l=t(43),u=e.TypeError;g.exports=function(h,_){var m,b;if("string"===_&&a(m=h.toString)&&!l(b=s(m,h))||a(m=h.valueOf)&&!l(b=s(m,h))||"string"!==_&&a(m=h.toString)&&!l(b=s(m,h)))return b;throw u("Can't convert object to primitive value")}},function(g,o,t){var e=t(17),s=Object.defineProperty;g.exports=function(a,l){try{s(e,a,{value:l,configurable:!0,writable:!0})}catch(u){e[a]=l}return l}},function(g,o,t){var e=t(17),s=t(146),a=t(172),l=t(43),u=t(38)("species"),h=e.Array;g.exports=function(_){var m;return s(_)&&(a(m=_.constructor)&&(m===h||s(m.prototype))||l(m)&&null===(m=m[u]))&&(m=void 0),void 0===m?h:m}},function(g,o,t){"use strict";var e=t(216),s=t(75);g.exports=e?{}.toString:function(){return"[object "+s(this)+"]"}},function(g,o,t){t(45)("asyncIterator")},function(g,o){},function(g,o,t){t(45)("hasInstance")},function(g,o,t){t(45)("isConcatSpreadable")},function(g,o,t){t(45)("match")},function(g,o,t){t(45)("matchAll")},function(g,o,t){t(45)("replace")},function(g,o,t){t(45)("search")},function(g,o,t){t(45)("species")},function(g,o,t){t(45)("split")},function(g,o,t){t(45)("toPrimitive")},function(g,o,t){t(45)("toStringTag")},function(g,o,t){t(45)("unscopables")},function(g,o,t){var e=t(17);t(100)(e.JSON,"JSON",!0)},function(g,o){},function(g,o){},function(g,o,t){var e=t(17),s=t(41),a=e.String,l=e.TypeError;g.exports=function(u){if("object"==typeof u||s(u))return u;throw l("Can't set "+a(u)+" as a prototype")}},function(g,o){g.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(g,o,t){t(45)("asyncDispose")},function(g,o,t){t(45)("dispose")},function(g,o,t){t(45)("matcher")},function(g,o,t){t(45)("metadata")},function(g,o,t){t(45)("observable")},function(g,o,t){t(45)("patternMatch")},function(g,o,t){t(45)("replaceAll")},function(g,o,t){g.exports=t(516)},function(g,o,t){var e=t(517);g.exports=e},function(g,o,t){var e=t(518);t(68),g.exports=e},function(g,o,t){t(77),t(97),t(131),t(338);var e=t(223);g.exports=e.f("iterator")},function(g,o,t){var e=t(520);g.exports=e},function(g,o,t){var e=t(35),s=t(521),a=Array.prototype;g.exports=function(l){var u=l.concat;return l===a||e(a,l)&&u===a.concat?s:u}},function(g,o,t){t(328);var e=t(42);g.exports=e("Array").concat},function(g,o,t){var e=t(35),s=t(523),a=Array.prototype;g.exports=function(l){var u=l.filter;return l===a||e(a,l)&&u===a.filter?s:u}},function(g,o,t){t(524);var e=t(42);g.exports=e("Array").filter},function(g,o,t){"use strict";var e=t(22),s=t(87).filter;e({target:"Array",proto:!0,forced:!t(148)("filter")},{filter:function(a){return s(this,a,arguments.length>1?arguments[1]:void 0)}})},function(g,o,t){t(526);var e=t(34);g.exports=e.Object.keys},function(g,o,t){var e=t(22),s=t(62),a=t(149);e({target:"Object",stat:!0,forced:t(33)(function(){a(1)})},{keys:function(l){return a(s(l))}})},function(g,o,t){var e=t(528);g.exports=e},function(g,o,t){t(529);var e=t(34),s=t(93);e.JSON||(e.JSON={stringify:JSON.stringify}),g.exports=function(a,l,u){return s(e.JSON.stringify,null,arguments)}},function(g,o,t){var e=t(22),s=t(17),a=t(58),l=t(93),u=t(27),h=t(33),_=s.Array,m=a("JSON","stringify"),b=u(/./.exec),C=u("".charAt),D=u("".charCodeAt),x=u("".replace),j=u(1..toString),H=/[\uD800-\uDFFF]/g,z=/^[\uD800-\uDBFF]$/,U=/^[\uDC00-\uDFFF]$/,M=function(J,Y,ie){var oe=C(ie,Y-1),fe=C(ie,Y+1);return b(z,J)&&!b(U,fe)||b(U,J)&&!b(z,oe)?"\\u"+j(D(J,0),16):J},I=h(function(){return'"\\udf06\\ud834"'!==m("\udf06\ud834")||'"\\udead"'!==m("\udead")});m&&e({target:"JSON",stat:!0,forced:I},{stringify:function(J,Y,ie){for(var oe=0,fe=arguments.length,ne=_(fe);oe<fe;oe++)ne[oe]=arguments[oe];var he=l(m,null,ne);return"string"==typeof he?x(he,H,M):he}})},function(g,o,t){"use strict";o.byteLength=function(b){var C=_(b),x=C[1];return 3*(C[0]+x)/4-x},o.toByteArray=function(b){var C,D,Y,x=_(b),j=x[0],H=x[1],z=new a(3*(j+(Y=H))/4-Y),U=0,M=H>0?j-4:j;for(D=0;D<M;D+=4)C=s[b.charCodeAt(D)]<<18|s[b.charCodeAt(D+1)]<<12|s[b.charCodeAt(D+2)]<<6|s[b.charCodeAt(D+3)],z[U++]=C>>16&255,z[U++]=C>>8&255,z[U++]=255&C;return 2===H&&(C=s[b.charCodeAt(D)]<<2|s[b.charCodeAt(D+1)]>>4,z[U++]=255&C),1===H&&(C=s[b.charCodeAt(D)]<<10|s[b.charCodeAt(D+1)]<<4|s[b.charCodeAt(D+2)]>>2,z[U++]=C>>8&255,z[U++]=255&C),z},o.fromByteArray=function(b){for(var C,D=b.length,x=D%3,j=[],H=16383,z=0,U=D-x;z<U;z+=H)j.push(m(b,z,z+H>U?U:z+H));return 1===x?j.push(e[(C=b[D-1])>>2]+e[C<<4&63]+"=="):2===x&&j.push(e[(C=(b[D-2]<<8)+b[D-1])>>10]+e[C>>4&63]+e[C<<2&63]+"="),j.join("")};for(var e=[],s=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,h=l.length;u<h;++u)e[u]=l[u],s[l.charCodeAt(u)]=u;function _(b){var C=b.length;if(C%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var D=b.indexOf("=");return-1===D&&(D=C),[D,D===C?0:4-D%4]}function m(b,C,D){for(var j,H=[],z=C;z<D;z+=3)H.push(e[(j=(b[z]<<16&16711680)+(b[z+1]<<8&65280)+(255&b[z+2]))>>18&63]+e[j>>12&63]+e[j>>6&63]+e[63&j]);return H.join("")}s["-".charCodeAt(0)]=62,s["_".charCodeAt(0)]=63},function(g,o){o.read=function(t,e,s,a,l){var u,h,_=8*l-a-1,m=(1<<_)-1,b=m>>1,C=-7,D=s?l-1:0,x=s?-1:1,j=t[e+D];for(D+=x,u=j&(1<<-C)-1,j>>=-C,C+=_;C>0;u=256*u+t[e+D],D+=x,C-=8);for(h=u&(1<<-C)-1,u>>=-C,C+=a;C>0;h=256*h+t[e+D],D+=x,C-=8);if(0===u)u=1-b;else{if(u===m)return h?NaN:1/0*(j?-1:1);h+=Math.pow(2,a),u-=b}return(j?-1:1)*h*Math.pow(2,u-a)},o.write=function(t,e,s,a,l,u){var h,_,m,b=8*u-l-1,C=(1<<b)-1,D=C>>1,x=23===l?Math.pow(2,-24)-Math.pow(2,-77):0,j=a?0:u-1,H=a?1:-1,z=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(_=isNaN(e)?1:0,h=C):(h=Math.floor(Math.log(e)/Math.LN2),e*(m=Math.pow(2,-h))<1&&(h--,m*=2),(e+=h+D>=1?x/m:x*Math.pow(2,1-D))*m>=2&&(h++,m/=2),h+D>=C?(_=0,h=C):h+D>=1?(_=(e*m-1)*Math.pow(2,l),h+=D):(_=e*Math.pow(2,D-1)*Math.pow(2,l),h=0));l>=8;t[s+j]=255&_,j+=H,_/=256,l-=8);for(h=h<<l|_,b+=l;b>0;t[s+j]=255&h,j+=H,h/=256,b-=8);t[s+j-H]|=128*z}},function(g,o,t){var e=t(347);g.exports=e},function(g,o,t){t(534);var e=t(34).Object,s=g.exports=function(a,l,u){return e.defineProperty(a,l,u)};e.defineProperty.sham&&(s.sham=!0)},function(g,o,t){var e=t(22),s=t(48);e({target:"Object",stat:!0,forced:!s,sham:!s},{defineProperty:t(63).f})},function(g,o,t){var e=t(536);g.exports=e},function(g,o,t){var e=t(35),s=t(537),a=Function.prototype;g.exports=function(l){var u=l.bind;return l===a||e(a,l)&&u===a.bind?s:u}},function(g,o,t){t(538);var e=t(42);g.exports=e("Function").bind},function(g,o,t){t(22)({target:"Function",proto:!0},{bind:t(348)})},function(g,o,t){t(540);var e=t(34);g.exports=e.Object.assign},function(g,o,t){var e=t(22),s=t(350);e({target:"Object",stat:!0,forced:Object.assign!==s},{assign:s})},function(g,o,t){var e=t(35),s=t(542),a=Array.prototype;g.exports=function(l){var u=l.slice;return l===a||e(a,l)&&u===a.slice?s:u}},function(g,o,t){t(543);var e=t(42);g.exports=e("Array").slice},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(146),l=t(172),u=t(43),h=t(220),_=t(74),m=t(61),b=t(147),C=t(38),D=t(148),x=t(86),j=D("slice"),H=C("species"),z=s.Array,U=Math.max;e({target:"Array",proto:!0,forced:!j},{slice:function(M,I){var J,Y,ie,oe=m(this),fe=_(oe),ne=h(M,fe),he=h(void 0===I?fe:I,fe);if(a(oe)&&((l(J=oe.constructor)&&(J===z||a(J.prototype))||u(J)&&null===(J=J[H]))&&(J=void 0),J===z||void 0===J))return x(oe,ne,he);for(Y=new(void 0===J?z:J)(U(he-ne,0)),ie=0;ne<he;ne++,ie++)ne in oe&&b(Y,ie,oe[ne]);return Y.length=ie,Y}})},function(g,o,t){t(545);var e=t(34);g.exports=e.Array.isArray},function(g,o,t){t(22)({target:"Array",stat:!0},{isArray:t(146)})},function(g,o,t){var e=t(547);g.exports=e},function(g,o,t){var e=t(35),s=t(548),a=Array.prototype;g.exports=function(l){var u=l.reduce;return l===a||e(a,l)&&u===a.reduce?s:u}},function(g,o,t){t(549);var e=t(42);g.exports=e("Array").reduce},function(g,o,t){"use strict";var e=t(22),s=t(550).left,a=t(114),l=t(128),u=t(177);e({target:"Array",proto:!0,forced:!a("reduce")||!u&&l>79&&l<83},{reduce:function(h){var _=arguments.length;return s(this,h,_,_>1?arguments[1]:void 0)}})},function(g,o,t){var e=t(17),s=t(73),a=t(62),l=t(168),u=t(74),h=e.TypeError,_=function(m){return function(b,C,D,x){s(C);var j=a(b),H=l(j),z=u(j),U=m?z-1:0,M=m?-1:1;if(D<2)for(;;){if(U in H){x=H[U],U+=M;break}if(U+=M,m?U<0:z<=U)throw h("Reduce of empty array with no initial value")}for(;m?U>=0:z>U;U+=M)U in H&&(x=C(x,H[U],U,j));return x}};g.exports={left:_(!1),right:_(!0)}},function(g,o,t){var e=t(552);g.exports=e},function(g,o,t){var e=t(35),s=t(553),a=Array.prototype;g.exports=function(l){var u=l.map;return l===a||e(a,l)&&u===a.map?s:u}},function(g,o,t){t(554);var e=t(42);g.exports=e("Array").map},function(g,o,t){"use strict";var e=t(22),s=t(87).map;e({target:"Array",proto:!0,forced:!t(148)("map")},{map:function(a){return s(this,a,arguments.length>1?arguments[1]:void 0)}})},function(g,o,t){"use strict";var e=t(353),s=60103,a=60106;o.Fragment=60107,o.StrictMode=60108,o.Profiler=60114;var l=60109,u=60110,h=60112;o.Suspense=60113;var _=60115,m=60116;if("function"==typeof Symbol&&Symbol.for){var b=Symbol.for;s=b("react.element"),a=b("react.portal"),o.Fragment=b("react.fragment"),o.StrictMode=b("react.strict_mode"),o.Profiler=b("react.profiler"),l=b("react.provider"),u=b("react.context"),h=b("react.forward_ref"),o.Suspense=b("react.suspense"),_=b("react.memo"),m=b("react.lazy")}var C="function"==typeof Symbol&&Symbol.iterator;function D(ue){for(var He="https://reactjs.org/docs/error-decoder.html?invariant="+ue,$e=1;$e<arguments.length;$e++)He+="&args[]="+encodeURIComponent(arguments[$e]);return"Minified React error #"+ue+"; visit "+He+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},j={};function H(ue,He,$e){this.props=ue,this.context=He,this.refs=j,this.updater=$e||x}function z(){}function U(ue,He,$e){this.props=ue,this.context=He,this.refs=j,this.updater=$e||x}H.prototype.isReactComponent={},H.prototype.setState=function(ue,He){if("object"!=typeof ue&&"function"!=typeof ue&&null!=ue)throw Error(D(85));this.updater.enqueueSetState(this,ue,He,"setState")},H.prototype.forceUpdate=function(ue){this.updater.enqueueForceUpdate(this,ue,"forceUpdate")},z.prototype=H.prototype;var M=U.prototype=new z;M.constructor=U,e(M,H.prototype),M.isPureReactComponent=!0;var I={current:null},J=Object.prototype.hasOwnProperty,Y={key:!0,ref:!0,__self:!0,__source:!0};function ie(ue,He,$e){var F,je={},Et=null,lt=null;if(null!=He)for(F in void 0!==He.ref&&(lt=He.ref),void 0!==He.key&&(Et=""+He.key),He)J.call(He,F)&&!Y.hasOwnProperty(F)&&(je[F]=He[F]);var nn=arguments.length-2;if(1===nn)je.children=$e;else if(1<nn){for(var St=Array(nn),At=0;At<nn;At++)St[At]=arguments[At+2];je.children=St}if(ue&&ue.defaultProps)for(F in nn=ue.defaultProps)void 0===je[F]&&(je[F]=nn[F]);return{$$typeof:s,type:ue,key:Et,ref:lt,props:je,_owner:I.current}}function oe(ue){return"object"==typeof ue&&null!==ue&&ue.$$typeof===s}var fe=/\/+/g;function ne(ue,He){return"object"==typeof ue&&null!==ue&&null!=ue.key?(F={"=":"=0",":":"=2"},"$"+(""+ue.key).replace(/[=:]/g,function(je){return F[je]})):He.toString(36);var F}function he(ue,He,$e,F,je){var Et=typeof ue;"undefined"!==Et&&"boolean"!==Et||(ue=null);var At,Qe,lt=!1;if(null===ue)lt=!0;else switch(Et){case"string":case"number":lt=!0;break;case"object":switch(ue.$$typeof){case s:case a:lt=!0}}if(lt)return je=je(lt=ue),ue=""===F?"."+ne(lt,0):F,Array.isArray(je)?($e="",null!=ue&&($e=ue.replace(fe,"$&/")+"/"),he(je,He,$e,"",function(At){return At})):null!=je&&(oe(je)&&(At=je,Qe=$e+(!je.key||lt&&lt.key===je.key?"":(""+je.key).replace(fe,"$&/")+"/")+ue,je={$$typeof:s,type:At.type,key:Qe,ref:At.ref,props:At.props,_owner:At._owner}),He.push(je)),1;if(lt=0,F=""===F?".":F+":",Array.isArray(ue))for(var nn=0;nn<ue.length;nn++){var St=F+ne(Et=ue[nn],nn);lt+=he(Et,He,$e,St,je)}else if("function"==typeof(St=function(At){return null===At||"object"!=typeof At?null:"function"==typeof(At=C&&At[C]||At["@@iterator"])?At:null}(ue)))for(ue=St.call(ue),nn=0;!(Et=ue.next()).done;)lt+=he(Et=Et.value,He,$e,St=F+ne(Et,nn++),je);else if("object"===Et)throw He=""+ue,Error(D(31,"[object Object]"===He?"object with keys {"+Object.keys(ue).join(", ")+"}":He));return lt}function ce(ue,He,$e){if(null==ue)return ue;var F=[],je=0;return he(ue,F,"","",function(Et){return He.call($e,Et,je++)}),F}function Ae(ue){if(-1===ue._status){var He=ue._result;He=He(),ue._status=0,ue._result=He,He.then(function($e){0===ue._status&&($e=$e.default,ue._status=1,ue._result=$e)},function($e){0===ue._status&&(ue._status=2,ue._result=$e)})}if(1===ue._status)return ue._result;throw ue._result}var Me={current:null};function Oe(){var ue=Me.current;if(null===ue)throw Error(D(321));return ue}var be={ReactCurrentDispatcher:Me,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:I,IsSomeRendererActing:{current:!1},assign:e};o.Children={map:ce,forEach:function(ue,He,$e){ce(ue,function(){He.apply(this,arguments)},$e)},count:function(ue){var He=0;return ce(ue,function(){He++}),He},toArray:function(ue){return ce(ue,function(He){return He})||[]},only:function(ue){if(!oe(ue))throw Error(D(143));return ue}},o.Component=H,o.PureComponent=U,o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=be,o.cloneElement=function(ue,He,$e){if(null==ue)throw Error(D(267,ue));var F=e({},ue.props),je=ue.key,Et=ue.ref,lt=ue._owner;if(null!=He){if(void 0!==He.ref&&(Et=He.ref,lt=I.current),void 0!==He.key&&(je=""+He.key),ue.type&&ue.type.defaultProps)var nn=ue.type.defaultProps;for(St in He)J.call(He,St)&&!Y.hasOwnProperty(St)&&(F[St]=void 0===He[St]&&void 0!==nn?nn[St]:He[St])}var St=arguments.length-2;if(1===St)F.children=$e;else if(1<St){nn=Array(St);for(var At=0;At<St;At++)nn[At]=arguments[At+2];F.children=nn}return{$$typeof:s,type:ue.type,key:je,ref:Et,props:F,_owner:lt}},o.createContext=function(ue,He){return void 0===He&&(He=null),(ue={$$typeof:u,_calculateChangedBits:He,_currentValue:ue,_currentValue2:ue,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:l,_context:ue},ue.Consumer=ue},o.createElement=ie,o.createFactory=function(ue){var He=ie.bind(null,ue);return He.type=ue,He},o.createRef=function(){return{current:null}},o.forwardRef=function(ue){return{$$typeof:h,render:ue}},o.isValidElement=oe,o.lazy=function(ue){return{$$typeof:m,_payload:{_status:-1,_result:ue},_init:Ae}},o.memo=function(ue,He){return{$$typeof:_,type:ue,compare:void 0===He?null:He}},o.useCallback=function(ue,He){return Oe().useCallback(ue,He)},o.useContext=function(ue,He){return Oe().useContext(ue,He)},o.useDebugValue=function(){},o.useEffect=function(ue,He){return Oe().useEffect(ue,He)},o.useImperativeHandle=function(ue,He,$e){return Oe().useImperativeHandle(ue,He,$e)},o.useLayoutEffect=function(ue,He){return Oe().useLayoutEffect(ue,He)},o.useMemo=function(ue,He){return Oe().useMemo(ue,He)},o.useReducer=function(ue,He,$e){return Oe().useReducer(ue,He,$e)},o.useRef=function(ue){return Oe().useRef(ue)},o.useState=function(ue){return Oe().useState(ue)},o.version="17.0.2"},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var e,a=(e=t(1))&&e.__esModule?e:{default:e},l=t(557);o.default=function(u){var h=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.default.Map,_=Object.keys(u);return function(){var m=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h(),b=arguments[1];return m.withMutations(function(C){_.forEach(function(D){var x=(0,u[D])(C.get(D),b);(0,l.validateNextState)(x,D,b),C.set(D,x)})})}},g.exports=o.default},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.validateNextState=o.getUnexpectedInvocationParameterMessage=o.getStateName=void 0;var e=l(t(354)),s=l(t(558)),a=l(t(559));function l(u){return u&&u.__esModule?u:{default:u}}o.getStateName=e.default,o.getUnexpectedInvocationParameterMessage=s.default,o.validateNextState=a.default},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var e=a(t(1)),s=a(t(354));function a(l){return l&&l.__esModule?l:{default:l}}o.default=function(l,u,h){var _=Object.keys(u);if(!_.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";var m=(0,s.default)(h);if(e.default.isImmutable?!e.default.isImmutable(l):!e.default.Iterable.isIterable(l))return"The "+m+' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: "'+_.join('", "')+'".';var b=l.toSeq().keySeq().toArray().filter(function(C){return!u.hasOwnProperty(C)});return b.length>0?"Unexpected "+(1===b.length?"property":"properties")+' "'+b.join('", "')+'" found in '+m+'. Expected to find one of the known reducer property names instead: "'+_.join('", "')+'". Unexpected properties will be ignored.':null},g.exports=o.default},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default=function(e,s,a){if(void 0===e)throw new Error('Reducer "'+s+'" returned undefined when handling "'+a.type+'" action. To ignore an action, you must explicitly return the previous state.')},g.exports=o.default},function(g,o,t){var e=t(178),s=t(357),a=t(359),l=t(590),u=t(53),h=t(153),_=t(366);g.exports=function m(b,C,D,x,j){b!==C&&a(C,function(H,z){if(j||(j=new e),u(H))l(b,C,z,D,m,x,j);else{var U=x?x(_(b,z),H,z+"",b,C,j):void 0;void 0===U&&(U=H),s(b,z,U)}},h)}},function(g,o){g.exports=function(){this.__data__=[],this.size=0}},function(g,o,t){var e=t(180),s=Array.prototype.splice;g.exports=function(a){var l=this.__data__,u=e(l,a);return!(u<0||(u==l.length-1?l.pop():s.call(l,u,1),--this.size,0))}},function(g,o,t){var e=t(180);g.exports=function(s){var a=this.__data__,l=e(a,s);return l<0?void 0:a[l][1]}},function(g,o,t){var e=t(180);g.exports=function(s){return e(this.__data__,s)>-1}},function(g,o,t){var e=t(180);g.exports=function(s,a){var l=this.__data__,u=e(l,s);return u<0?(++this.size,l.push([s,a])):l[u][1]=a,this}},function(g,o,t){var e=t(179);g.exports=function(){this.__data__=new e,this.size=0}},function(g,o){g.exports=function(t){var e=this.__data__,s=e.delete(t);return this.size=e.size,s}},function(g,o){g.exports=function(t){return this.__data__.get(t)}},function(g,o){g.exports=function(t){return this.__data__.has(t)}},function(g,o,t){var e=t(179),s=t(227),a=t(228);g.exports=function(l,u){var h=this.__data__;if(h instanceof e){var _=h.__data__;if(!s||_.length<199)return _.push([l,u]),this.size=++h.size,this;h=this.__data__=new a(_)}return h.set(l,u),this.size=h.size,this}},function(g,o,t){var e=t(104),s=t(574),a=t(53),l=t(356),u=/^\[object .+?Constructor\]$/,C=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");g.exports=function(D){return!(!a(D)||s(D))&&(e(D)?C:u).test(l(D))}},function(g,o,t){var e=t(133),s=Object.prototype,a=s.hasOwnProperty,l=s.toString,u=e?e.toStringTag:void 0;g.exports=function(h){var _=a.call(h,u),m=h[u];try{h[u]=void 0;var b=!0}catch(D){}var C=l.call(h);return b&&(_?h[u]=m:delete h[u]),C}},function(g,o){var t=Object.prototype.toString;g.exports=function(e){return t.call(e)}},function(g,o,t){var e,s=t(575),a=(e=/[^.]+$/.exec(s&&s.keys&&s.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";g.exports=function(l){return!!a&&a in l}},function(g,o,t){var e=t(69)["__core-js_shared__"];g.exports=e},function(g,o){g.exports=function(t,e){return null==t?void 0:t[e]}},function(g,o,t){var e=t(578),s=t(179),a=t(227);g.exports=function(){this.size=0,this.__data__={hash:new e,map:new(a||s),string:new e}}},function(g,o,t){var e=t(579),s=t(580),a=t(581),l=t(582),u=t(583);function h(_){var m=-1,b=null==_?0:_.length;for(this.clear();++m<b;){var C=_[m];this.set(C[0],C[1])}}h.prototype.clear=e,h.prototype.delete=s,h.prototype.get=a,h.prototype.has=l,h.prototype.set=u,g.exports=h},function(g,o,t){var e=t(181);g.exports=function(){this.__data__=e?e(null):{},this.size=0}},function(g,o){g.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(g,o,t){var e=t(181),s=Object.prototype.hasOwnProperty;g.exports=function(a){var l=this.__data__;if(e){var u=l[a];return"__lodash_hash_undefined__"===u?void 0:u}return s.call(l,a)?l[a]:void 0}},function(g,o,t){var e=t(181),s=Object.prototype.hasOwnProperty;g.exports=function(a){var l=this.__data__;return e?void 0!==l[a]:s.call(l,a)}},function(g,o,t){var e=t(181);g.exports=function(s,a){var l=this.__data__;return this.size+=this.has(s)?0:1,l[s]=e&&void 0===a?"__lodash_hash_undefined__":a,this}},function(g,o,t){var e=t(182);g.exports=function(s){var a=e(this,s).delete(s);return this.size-=a?1:0,a}},function(g,o){g.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(g,o,t){var e=t(182);g.exports=function(s){return e(this,s).get(s)}},function(g,o,t){var e=t(182);g.exports=function(s){return e(this,s).has(s)}},function(g,o,t){var e=t(182);g.exports=function(s,a){var l=e(this,s),u=l.size;return l.set(s,a),this.size+=l.size==u?0:1,this}},function(g,o){g.exports=function(t){return function(e,s,a){for(var l=-1,u=Object(e),h=a(e),_=h.length;_--;){var m=h[t?_:++l];if(!1===s(u[m],m,u))break}return e}}},function(g,o,t){var e=t(357),s=t(360),a=t(361),l=t(363),u=t(364),h=t(151),_=t(52),m=t(593),b=t(152),C=t(104),D=t(53),x=t(140),j=t(185),H=t(366),z=t(596);g.exports=function(U,M,I,J,Y,ie,oe){var fe=H(U,I),ne=H(M,I),he=oe.get(ne);if(he)e(U,I,he);else{var ce=ie?ie(fe,ne,I+"",U,M,oe):void 0,Ae=void 0===ce;if(Ae){var Me=_(ne),Oe=!Me&&b(ne),be=!Me&&!Oe&&j(ne);ce=ne,Me||Oe||be?_(fe)?ce=fe:m(fe)?ce=l(fe):Oe?(Ae=!1,ce=s(ne,!0)):be?(Ae=!1,ce=a(ne,!0)):ce=[]:x(ne)||h(ne)?(ce=fe,h(fe)?ce=z(fe):D(fe)&&!C(fe)||(ce=u(ne))):Ae=!1}Ae&&(oe.set(ne,ce),Y(ce,ne,J,ie,oe),oe.delete(ne)),e(U,I,ce)}}},function(g,o,t){var e=t(53),s=Object.create,a=function(){function l(){}return function(u){if(!e(u))return{};if(s)return s(u);l.prototype=u;var h=new l;return l.prototype=void 0,h}}();g.exports=a},function(g,o,t){var e=t(116),s=t(78);g.exports=function(a){return s(a)&&"[object Arguments]"==e(a)}},function(g,o,t){var e=t(117),s=t(78);g.exports=function(a){return s(a)&&e(a)}},function(g,o){g.exports=function(){return!1}},function(g,o,t){var e=t(116),s=t(232),a=t(78),l={};l["[object Float32Array]"]=l["[object Float64Array]"]=l["[object Int8Array]"]=l["[object Int16Array]"]=l["[object Int32Array]"]=l["[object Uint8Array]"]=l["[object Uint8ClampedArray]"]=l["[object Uint16Array]"]=l["[object Uint32Array]"]=!0,l["[object Arguments]"]=l["[object Array]"]=l["[object ArrayBuffer]"]=l["[object Boolean]"]=l["[object DataView]"]=l["[object Date]"]=l["[object Error]"]=l["[object Function]"]=l["[object Map]"]=l["[object Number]"]=l["[object Object]"]=l["[object RegExp]"]=l["[object Set]"]=l["[object String]"]=l["[object WeakMap]"]=!1,g.exports=function(u){return a(u)&&s(u.length)&&!!l[e(u)]}},function(g,o,t){var e=t(134),s=t(153);g.exports=function(a){return e(a,s(a))}},function(g,o){g.exports=function(t,e){for(var s=-1,a=Array(t);++s<t;)a[s]=e(s);return a}},function(g,o,t){var e=t(53),s=t(184),a=t(599),l=Object.prototype.hasOwnProperty;g.exports=function(u){if(!e(u))return a(u);var h=s(u),_=[];for(var m in u)("constructor"!=m||!h&&l.call(u,m))&&_.push(m);return _}},function(g,o){g.exports=function(t){var e=[];if(null!=t)for(var s in Object(t))e.push(s);return e}},function(g,o,t){var e=t(601),s=t(370);g.exports=function(a){return e(function(l,u){var h=-1,_=u.length,m=_>1?u[_-1]:void 0,b=_>2?u[2]:void 0;for(m=a.length>3&&"function"==typeof m?(_--,m):void 0,b&&s(u[0],u[1],b)&&(m=_<3?void 0:m,_=1),l=Object(l);++h<_;){var C=u[h];C&&a(l,C,h,m)}return l})}},function(g,o,t){var e=t(236),s=t(368),a=t(369);g.exports=function(l,u){return a(s(l,u,e),l+"")}},function(g,o){g.exports=function(t,e,s){switch(s.length){case 0:return t.call(e);case 1:return t.call(e,s[0]);case 2:return t.call(e,s[0],s[1]);case 3:return t.call(e,s[0],s[1],s[2])}return t.apply(e,s)}},function(g,o,t){var e=t(604),s=t(358),a=t(236);g.exports=s?function(u,h){return s(u,"toString",{configurable:!0,enumerable:!1,value:e(h),writable:!0})}:a},function(g,o){g.exports=function(t){return function(){return t}}},function(g,o){var t=Date.now;g.exports=function(e){var s=0,a=0;return function(){var l=t(),u=16-(l-a);if(a=l,u>0){if(++s>=800)return arguments[0]}else s=0;return e.apply(void 0,arguments)}}},function(g,o,t){var e=t(237),s=t(371);g.exports=function(a){if(e(a))return s(a)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(352);g.exports=e},function(g,o,t){var e=t(609);g.exports=e},function(g,o,t){var e=t(610);t(68),g.exports=e},function(g,o,t){t(77),t(131);var e=t(154);g.exports=e},function(g,o,t){var e=t(374);g.exports=e},function(g,o,t){t(131),t(613);var e=t(34);g.exports=e.Array.from},function(g,o,t){var e=t(22),s=t(375);e({target:"Array",stat:!0,forced:!t(378)(function(a){Array.from(a)})},{from:s})},function(g,o,t){var e=t(51),s=t(376);g.exports=function(a,l,u,h){try{return h?l(e(u)[0],u[1]):l(u)}catch(_){s(a,"throw",_)}}},function(g,o,t){g.exports=t(616)},function(g,o,t){var e=t(351);g.exports=e},function(g,o){g.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(166),s=t(238);g.exports=function(a,l){var u=null==a?null:void 0!==e&&s(a)||a["@@iterator"];if(null!=u){var h,_,m=[],b=!0,C=!1;try{for(u=u.call(a);!(b=(h=u.next()).done)&&(m.push(h.value),!l||m.length!==l);b=!0);}catch(D){C=!0,_=D}finally{try{b||null==u.return||u.return()}finally{if(C)throw _}}return m}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){t(68);var e=t(75),s=t(44),a=t(35),l=t(620),u=Array.prototype,h={DOMTokenList:!0,NodeList:!0};g.exports=function(_){var m=_.entries;return _===u||a(u,_)&&m===u.entries||s(h,e(_))?l:m}},function(g,o,t){var e=t(621);g.exports=e},function(g,o,t){t(77),t(97);var e=t(42);g.exports=e("Array").entries},function(g,o,t){var e=t(623);g.exports=e},function(g,o,t){t(624);var e=t(42);g.exports=e("Array").forEach},function(g,o,t){"use strict";var e=t(22),s=t(625);e({target:"Array",proto:!0,forced:[].forEach!=s},{forEach:s})},function(g,o,t){"use strict";var e=t(87).forEach,s=t(114)("forEach");g.exports=s?[].forEach:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}},function(g,o,t){var e=t(627);g.exports=e},function(g,o,t){var e=t(35),s=t(628),a=Array.prototype;g.exports=function(l){var u=l.sort;return l===a||e(a,l)&&u===a.sort?s:u}},function(g,o,t){t(629);var e=t(42);g.exports=e("Array").sort},function(g,o,t){"use strict";var e=t(22),s=t(27),a=t(73),l=t(62),u=t(74),h=t(67),_=t(33),m=t(382),b=t(114),C=t(630),D=t(631),x=t(128),j=t(632),H=[],z=s(H.sort),U=s(H.push),M=_(function(){H.sort(void 0)}),I=_(function(){H.sort(null)}),J=b("sort"),Y=!_(function(){if(x)return x<70;if(!(C&&C>3)){if(D)return!0;if(j)return j<603;var ie,oe,fe,ne,he="";for(ie=65;ie<76;ie++){switch(oe=String.fromCharCode(ie),ie){case 66:case 69:case 70:case 72:fe=3;break;case 68:case 71:fe=4;break;default:fe=2}for(ne=0;ne<47;ne++)H.push({k:oe+ne,v:fe})}for(H.sort(function(ce,Ae){return Ae.v-ce.v}),ne=0;ne<H.length;ne++)oe=H[ne].k.charAt(0),he.charAt(he.length-1)!==oe&&(he+=oe);return"DGBEFHACIJK"!==he}});e({target:"Array",proto:!0,forced:M||!I||!J||!Y},{sort:function(ie){void 0!==ie&&a(ie);var oe=l(this);if(Y)return void 0===ie?z(oe):z(oe,ie);var fe,ne,he=[],ce=u(oe);for(ne=0;ne<ce;ne++)ne in oe&&U(he,oe[ne]);for(m(he,function(Ae){return function(Me,Oe){return void 0===Oe?-1:void 0===Me?1:void 0!==Ae?+Ae(Me,Oe)||0:h(Me)>h(Oe)?1:-1}}(ie)),fe=he.length,ne=0;ne<fe;)oe[ne]=he[ne++];for(;ne<ce;)delete oe[ne++];return oe}})},function(g,o,t){var e=t(95).match(/firefox\/(\d+)/i);g.exports=!!e&&+e[1]},function(g,o,t){var e=t(95);g.exports=/MSIE|Trident/.test(e)},function(g,o,t){var e=t(95).match(/AppleWebKit\/(\d+)\./);g.exports=!!e&&+e[1]},function(g,o,t){var e=t(634);g.exports=e},function(g,o,t){var e=t(35),s=t(635),a=Array.prototype;g.exports=function(l){var u=l.some;return l===a||e(a,l)&&u===a.some?s:u}},function(g,o,t){t(636);var e=t(42);g.exports=e("Array").some},function(g,o,t){"use strict";var e=t(22),s=t(87).some;e({target:"Array",proto:!0,forced:!t(114)("some")},{some:function(a){return s(this,a,arguments.length>1?arguments[1]:void 0)}})},function(g,o,t){var e=t(638);g.exports=e},function(g,o,t){var e=t(35),s=t(639),a=t(641),l=Array.prototype,u=String.prototype;g.exports=function(h){var _=h.includes;return h===l||e(l,h)&&_===l.includes?s:"string"==typeof h||h===u||e(u,h)&&_===u.includes?a:_}},function(g,o,t){t(640);var e=t(42);g.exports=e("Array").includes},function(g,o,t){"use strict";var e=t(22),s=t(219).includes,a=t(224);e({target:"Array",proto:!0},{includes:function(l){return s(this,l,arguments.length>1?arguments[1]:void 0)}}),a("includes")},function(g,o,t){t(642);var e=t(42);g.exports=e("String").includes},function(g,o,t){"use strict";var e=t(22),s=t(27),a=t(383),l=t(113),u=t(67),h=t(384),_=s("".indexOf);e({target:"String",proto:!0,forced:!h("includes")},{includes:function(m){return!!~_(u(l(this)),u(a(m)),arguments.length>1?arguments[1]:void 0)}})},function(g,o,t){var e=t(43),s=t(112),a=t(38)("match");g.exports=function(l){var u;return e(l)&&(void 0!==(u=l[a])?!!u:"RegExp"==s(l))}},function(g,o,t){var e=t(35),s=t(645),a=Array.prototype;g.exports=function(l){var u=l.indexOf;return l===a||e(a,l)&&u===a.indexOf?s:u}},function(g,o,t){t(646);var e=t(42);g.exports=e("Array").indexOf},function(g,o,t){"use strict";var e=t(22),s=t(27),a=t(219).indexOf,l=t(114),u=s([].indexOf),h=!!u&&1/u([1],1,-0)<0,_=l("indexOf");e({target:"Array",proto:!0,forced:h||!_},{indexOf:function(m){var b=arguments.length>1?arguments[1]:void 0;return h?u(this,m,b)||0:a(this,m,b)}})},function(g,o,t){var e=t(648);g.exports=e},function(g,o,t){var e=t(35),s=t(649),a=Array.prototype;g.exports=function(l){var u=l.find;return l===a||e(a,l)&&u===a.find?s:u}},function(g,o,t){t(650);var e=t(42);g.exports=e("Array").find},function(g,o,t){"use strict";var e=t(22),s=t(87).find,a=t(224),l="find",u=!0;l in[]&&Array(1).find(function(){u=!1}),e({target:"Array",proto:!0,forced:u},{find:function(h){return s(this,h,arguments.length>1?arguments[1]:void 0)}}),a(l)},function(g,o,t){var e=t(652);g.exports=e},function(g,o,t){var e=t(35),s=t(653),a=String.prototype;g.exports=function(l){var u=l.startsWith;return"string"==typeof l||l===a||e(a,l)&&u===a.startsWith?s:u}},function(g,o,t){t(654);var e=t(42);g.exports=e("String").startsWith},function(g,o,t){"use strict";var e,s=t(22),a=t(27),l=t(111).f,u=t(332),h=t(67),_=t(383),m=t(113),b=t(384),C=t(96),D=a("".startsWith),x=a("".slice),j=Math.min,H=b("startsWith");s({target:"String",proto:!0,forced:!(!C&&!H&&(e=l(String.prototype,"startsWith"),e&&!e.writable)||H)},{startsWith:function(z){var U=h(m(this));_(z);var M=u(j(arguments.length>1?arguments[1]:void 0,U.length)),I=h(z);return D?D(U,I,M):x(U,M,M+I.length)===I}})},function(g,o,t){var e=t(656);g.exports=e},function(g,o,t){var e=t(35),s=t(657),a=String.prototype;g.exports=function(l){var u=l.trim;return"string"==typeof l||l===a||e(a,l)&&u===a.trim?s:u}},function(g,o,t){t(658);var e=t(42);g.exports=e("String").trim},function(g,o,t){"use strict";var e=t(22),s=t(659).trim;e({target:"String",proto:!0,forced:t(660)("trim")},{trim:function(){return s(this)}})},function(g,o,t){var e=t(27),s=t(113),a=t(67),l=t(386),u=e("".replace),h="["+l+"]",_=RegExp("^"+h+h+"*"),m=RegExp(h+h+"*$"),b=function(C){return function(D){var x=a(s(D));return 1&C&&(x=u(x,_,"")),2&C&&(x=u(x,m,"")),x}};g.exports={start:b(1),end:b(2),trim:b(3)}},function(g,o,t){var e=t(339).PROPER,s=t(33),a=t(386);g.exports=function(l){return s(function(){return!!a[l]()||"\u200b\x85\u180e"!=="\u200b\x85\u180e"[l]()||e&&a[l].name!==l})}},function(g,o,t){var e=t(102),s=t(254);g.exports=function(a){return s(e(a).toLowerCase())}},function(g,o,t){var e=t(133),s=t(387),a=t(52),l=t(188),u=e?e.prototype:void 0,h=u?u.toString:void 0;g.exports=function _(m){if("string"==typeof m)return m;if(a(m))return s(m,_)+"";if(l(m))return h?h.call(m):"";var b=m+"";return"0"==b&&1/m==-1/0?"-0":b}},function(g,o,t){var e=t(664),s=t(389),a=t(665),l=t(102);g.exports=function(u){return function(h){h=l(h);var _=s(h)?a(h):void 0,m=_?_[0]:h.charAt(0),b=_?e(_,1).join(""):h.slice(1);return m[u]()+b}}},function(g,o,t){var e=t(388);g.exports=function(s,a,l){var u=s.length;return l=void 0===l?u:l,!a&&l>=u?s:e(s,a,l)}},function(g,o,t){var e=t(666),s=t(389),a=t(667);g.exports=function(l){return s(l)?a(l):e(l)}},function(g,o){g.exports=function(t){return t.split("")}},function(g,o){var e="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",s="\\ud83c[\\udffb-\\udfff]",a="[^\\ud800-\\udfff]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",u="[\\ud800-\\udbff][\\udc00-\\udfff]",h="(?:"+e+"|"+s+")?",_="[\\ufe0e\\ufe0f]?",m=_+h+"(?:\\u200d(?:"+[a,l,u].join("|")+")"+_+h+")*",b="(?:"+[a+e+"?",e,l,u,"[\\ud800-\\udfff]"].join("|")+")",C=RegExp(s+"(?="+s+")|"+b+m,"g");g.exports=function(D){return D.match(C)||[]}},function(g,o,t){var e=t(390),s=t(669),a=t(672),l=RegExp("['\u2019]","g");g.exports=function(u){return function(h){return e(a(s(h).replace(l,"")),u,"")}}},function(g,o,t){var e=t(670),s=t(102),a=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,l=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");g.exports=function(u){return(u=s(u))&&u.replace(a,e).replace(l,"")}},function(g,o,t){var e=t(671)({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"});g.exports=e},function(g,o){g.exports=function(t){return function(e){return null==t?void 0:t[e]}}},function(g,o,t){var e=t(673),s=t(674),a=t(102),l=t(675);g.exports=function(u,h,_){return u=a(u),void 0===(h=_?void 0:h)?s(u)?l(u):e(u):u.match(h)||[]}},function(g,o){var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;g.exports=function(e){return e.match(t)||[]}},function(g,o){var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;g.exports=function(e){return t.test(e)}},function(g,o){var e="a-z\\xdf-\\xf6\\xf8-\\xff",s="A-Z\\xc0-\\xd6\\xd8-\\xde",a="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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",l="["+a+"]",u="\\d+",_="["+e+"]",m="[^\\ud800-\\udfff"+a+u+"\\u2700-\\u27bf"+e+s+"]",b="(?:\\ud83c[\\udde6-\\uddff]){2}",C="[\\ud800-\\udbff][\\udc00-\\udfff]",D="["+s+"]",x="(?:"+_+"|"+m+")",j="(?:"+D+"|"+m+")",H="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",z="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",U="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",M="[\\ufe0e\\ufe0f]?",I=M+U+"(?:\\u200d(?:"+["[^\\ud800-\\udfff]",b,C].join("|")+")"+M+U+")*",J="(?:"+["[\\u2700-\\u27bf]",b,C].join("|")+")"+I,Y=RegExp([D+"?"+_+"+"+H+"(?="+[l,D,"$"].join("|")+")",j+"+"+z+"(?="+[l,D+x,"$"].join("|")+")",D+"?"+x+"+"+H,D+"+"+z,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",u,J].join("|"),"g");g.exports=function(ie){return ie.match(Y)||[]}},function(g,o,t){var e=t(189),s=t(117),a=t(135);g.exports=function(l){return function(u,h,_){var m=Object(u);if(!s(u)){var b=e(h,3);u=a(u),h=function(D){return b(m[D],D,m)}}var C=l(u,h,_);return C>-1?m[b?u[C]:C]:void 0}}},function(g,o,t){var e=t(678),s=t(694),a=t(399);g.exports=function(l){var u=s(l);return 1==u.length&&u[0][2]?a(u[0][0],u[0][1]):function(h){return h===l||e(h,l,u)}}},function(g,o,t){var e=t(178),s=t(391);g.exports=function(a,l,u,h){var _=u.length,m=_,b=!h;if(null==a)return!m;for(a=Object(a);_--;){var C=u[_];if(b&&C[2]?C[1]!==a[C[0]]:!(C[0]in a))return!1}for(;++_<m;){var D=(C=u[_])[0],x=a[D],j=C[1];if(b&&C[2]){if(void 0===x&&!(D in a))return!1}else{var H=new e;if(h)var z=h(x,j,D,a,l,H);if(!(void 0===z?s(j,x,3,h,H):z))return!1}}return!0}},function(g,o,t){var e=t(178),s=t(392),a=t(684),l=t(687),u=t(155),h=t(52),_=t(152),m=t(185),b="[object Arguments]",C="[object Array]",D="[object Object]",x=Object.prototype.hasOwnProperty;g.exports=function(j,H,z,U,M,I){var J=h(j),Y=h(H),ie=J?C:u(j),oe=Y?C:u(H),fe=(ie=ie==b?D:ie)==D,ne=(oe=oe==b?D:oe)==D,he=ie==oe;if(he&&_(j)){if(!_(H))return!1;J=!0,fe=!1}if(he&&!fe)return I||(I=new e),J||m(j)?s(j,H,z,U,M,I):a(j,H,ie,z,U,M,I);if(!(1&z)){var ce=fe&&x.call(j,"__wrapped__"),Ae=ne&&x.call(H,"__wrapped__");if(ce||Ae){var Me=ce?j.value():j,Oe=Ae?H.value():H;return I||(I=new e),M(Me,Oe,z,U,I)}}return!!he&&(I||(I=new e),l(j,H,z,U,M,I))}},function(g,o,t){var e=t(228),s=t(681),a=t(682);function l(u){var h=-1,_=null==u?0:u.length;for(this.__data__=new e;++h<_;)this.add(u[h])}l.prototype.add=l.prototype.push=s,l.prototype.has=a,g.exports=l},function(g,o){g.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},function(g,o){g.exports=function(t){return this.__data__.has(t)}},function(g,o){g.exports=function(t,e){return t.has(e)}},function(g,o,t){var e=t(133),s=t(362),a=t(103),l=t(392),u=t(685),h=t(686),_=e?e.prototype:void 0,m=_?_.valueOf:void 0;g.exports=function(b,C,D,x,j,H,z){switch(D){case"[object DataView]":if(b.byteLength!=C.byteLength||b.byteOffset!=C.byteOffset)return!1;b=b.buffer,C=C.buffer;case"[object ArrayBuffer]":return!(b.byteLength!=C.byteLength||!H(new s(b),new s(C)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+b,+C);case"[object Error]":return b.name==C.name&&b.message==C.message;case"[object RegExp]":case"[object String]":return b==C+"";case"[object Map]":var U=u;case"[object Set]":if(U||(U=h),b.size!=C.size&&!(1&x))return!1;var I=z.get(b);if(I)return I==C;x|=2,z.set(b,C);var J=l(U(b),U(C),x,j,H,z);return z.delete(b),J;case"[object Symbol]":if(m)return m.call(b)==m.call(C)}return!1}},function(g,o){g.exports=function(t){var e=-1,s=Array(t.size);return t.forEach(function(a,l){s[++e]=[l,a]}),s}},function(g,o){g.exports=function(t){var e=-1,s=Array(t.size);return t.forEach(function(a){s[++e]=a}),s}},function(g,o,t){var e=t(394),s=Object.prototype.hasOwnProperty;g.exports=function(a,l,u,h,_,m){var b=1&u,C=e(a),D=C.length;if(D!=e(l).length&&!b)return!1;for(var x=D;x--;){var j=C[x];if(!(b?j in l:s.call(l,j)))return!1}var H=m.get(a),z=m.get(l);if(H&&z)return H==l&&z==a;var U=!0;m.set(a,l),m.set(l,a);for(var M=b;++x<D;){var I=a[j=C[x]],J=l[j];if(h)var Y=b?h(J,I,j,l,a,m):h(I,J,j,a,l,m);if(!(void 0===Y?I===J||_(I,J,u,h,m):Y)){U=!1;break}M||(M="constructor"==j)}if(U&&!M){var ie=a.constructor,oe=l.constructor;ie==oe||!("constructor"in a)||!("constructor"in l)||"function"==typeof ie&&ie instanceof ie&&"function"==typeof oe&&oe instanceof oe||(U=!1)}return m.delete(a),m.delete(l),U}},function(g,o){g.exports=function(t,e){for(var s=-1,a=null==t?0:t.length,l=0,u=[];++s<a;){var h=t[s];e(h,s,t)&&(u[l++]=h)}return u}},function(g,o,t){var e=t(365)(Object.keys,Object);g.exports=e},function(g,o,t){var e=t(115)(t(69),"DataView");g.exports=e},function(g,o,t){var e=t(115)(t(69),"Promise");g.exports=e},function(g,o,t){var e=t(115)(t(69),"Set");g.exports=e},function(g,o,t){var e=t(115)(t(69),"WeakMap");g.exports=e},function(g,o,t){var e=t(398),s=t(135);g.exports=function(a){for(var l=s(a),u=l.length;u--;){var h=l[u],_=a[h];l[u]=[h,_,e(_)]}return l}},function(g,o,t){var e=t(391),s=t(39),a=t(698),l=t(243),u=t(398),h=t(399),_=t(136);g.exports=function(m,b){return l(m)&&u(b)?h(_(m),b):function(C){var D=s(C,m);return void 0===D&&D===b?a(C,m):e(b,D,3)}}},function(g,o,t){var e=t(697),s=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,l=e(function(u){var h=[];return 46===u.charCodeAt(0)&&h.push(""),u.replace(s,function(_,m,b,C){h.push(b?C.replace(a,"$1"):m||_)}),h});g.exports=l},function(g,o,t){var e=t(255);g.exports=function(s){var a=e(s,function(u){return 500===l.size&&l.clear(),u}),l=a.cache;return a}},function(g,o,t){var e=t(699),s=t(700);g.exports=function(a,l){return null!=a&&s(a,l,e)}},function(g,o){g.exports=function(t,e){return null!=t&&e in Object(t)}},function(g,o,t){var e=t(156),s=t(151),a=t(52),l=t(186),u=t(232),h=t(136);g.exports=function(_,m,b){for(var C=-1,D=(m=e(m,_)).length,x=!1;++C<D;){var j=h(m[C]);if(!(x=null!=_&&b(_,j)))break;_=_[j]}return x||++C!=D?x:!!(D=null==_?0:_.length)&&u(D)&&l(j,D)&&(a(_)||s(_))}},function(g,o,t){var e=t(702),s=t(703),a=t(243),l=t(136);g.exports=function(u){return a(u)?e(l(u)):s(u)}},function(g,o){g.exports=function(t){return function(e){return null==e?void 0:e[t]}}},function(g,o,t){var e=t(242);g.exports=function(s){return function(a){return e(a,s)}}},function(g,o,t){var e=t(705),s=t(189),a=t(706),l=Math.max;g.exports=function(u,h,_){var m=null==u?0:u.length;if(!m)return-1;var b=null==_?0:a(_);return b<0&&(b=l(m+b,0)),e(u,s(h,3),b)}},function(g,o){g.exports=function(t,e,s,a){for(var l=t.length,u=s+(a?1:-1);a?u--:++u<l;)if(e(t[u],u,t))return u;return-1}},function(g,o,t){var e=t(707);g.exports=function(s){var a=e(s),l=a%1;return a==a?l?a-l:a:0}},function(g,o,t){var e=t(400);g.exports=function(a){return a?1/0===(a=e(a))||a===-1/0?17976931348623157e292*(a<0?-1:1):a==a?a:0:0===a?a:0}},function(g,o,t){var e=t(709),s=/^\s+/;g.exports=function(a){return a&&a.slice(0,e(a)+1).replace(s,"")}},function(g,o){var t=/\s/;g.exports=function(e){for(var s=e.length;s--&&t.test(e.charAt(s)););return s}},function(g,o,t){var e=t(401);g.exports=function(s,a){var l;return e(s,function(u,h,_){return!(l=a(u,h,_))}),!!l}},function(g,o,t){var e=t(359),s=t(135);g.exports=function(a,l){return a&&e(a,l,s)}},function(g,o,t){var e=t(117);g.exports=function(s,a){return function(l,u){if(null==l)return l;if(!e(l))return s(l,u);for(var h=l.length,_=a?h:-1,m=Object(l);(a?_--:++_<h)&&!1!==u(m[_],_,m););return l}}},function(g,o){var t={"&":"&amp;",'"':"&quot;","'":"&apos;","<":"&lt;",">":"&gt;"};g.exports=function(e){return e&&e.replace?e.replace(/([&"<>'])/g,function(s,a){return t[a]}):e}},function(g,o,t){g.exports=s;var e=t(244).EventEmitter;function s(){e.call(this)}t(64)(s,e),s.Readable=t(245),s.Writable=t(721),s.Duplex=t(722),s.Transform=t(723),s.PassThrough=t(724),s.Stream=s,s.prototype.pipe=function(a,l){var u=this;function h(j){a.writable&&!1===a.write(j)&&u.pause&&u.pause()}function _(){u.readable&&u.resume&&u.resume()}u.on("data",h),a.on("drain",_),a._isStdio||l&&!1===l.end||(u.on("end",b),u.on("close",C));var m=!1;function b(){m||(m=!0,a.end())}function C(){m||(m=!0,"function"==typeof a.destroy&&a.destroy())}function D(j){if(x(),0===e.listenerCount(this,"error"))throw j}function x(){u.removeListener("data",h),a.removeListener("drain",_),u.removeListener("end",b),u.removeListener("close",C),u.removeListener("error",D),a.removeListener("error",D),u.removeListener("end",x),u.removeListener("close",x),a.removeListener("close",x)}return u.on("error",D),a.on("error",D),u.on("end",x),u.on("close",x),a.on("close",x),a.emit("pipe",u),a}},function(g,o){},function(g,o,t){"use strict";var e=t(65).Buffer,s=t(717);g.exports=function(){function a(){(function(l,u){if(!(l instanceof u))throw new TypeError("Cannot call a class as a function")})(this,a),this.head=null,this.tail=null,this.length=0}return a.prototype.push=function(l){var u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length},a.prototype.unshift=function(l){var u={data:l,next:this.head};0===this.length&&(this.tail=u),this.head=u,++this.length},a.prototype.shift=function(){if(0!==this.length){var l=this.head.data;return this.head=1===this.length?this.tail=null:this.head.next,--this.length,l}},a.prototype.clear=function(){this.head=this.tail=null,this.length=0},a.prototype.join=function(l){if(0===this.length)return"";for(var u=this.head,h=""+u.data;u=u.next;)h+=l+u.data;return h},a.prototype.concat=function(l){if(0===this.length)return e.alloc(0);if(1===this.length)return this.head.data;for(var m=e.allocUnsafe(l>>>0),b=this.head,C=0;b;)b.data.copy(m,C),C+=b.data.length,b=b.next;return m},a}(),s&&s.inspect&&s.inspect.custom&&(g.exports.prototype[s.inspect.custom]=function(){var a=s.inspect({length:this.length});return this.constructor.name+" "+a})},function(g,o){},function(g,o,t){(function(e,s){!function(a,l){"use strict";if(!a.setImmediate){var u,h,_,m,b,C=1,D={},x=!1,j=a.document,H=Object.getPrototypeOf&&Object.getPrototypeOf(a);H=H&&H.setTimeout?H:a,"[object process]"==={}.toString.call(a.process)?u=function(M){s.nextTick(function(){U(M)})}:function(){if(a.postMessage&&!a.importScripts){var M=!0,I=a.onmessage;return a.onmessage=function(){M=!1},a.postMessage("","*"),a.onmessage=I,M}}()?(m="setImmediate$"+Math.random()+"$",b=function(M){M.source===a&&"string"==typeof M.data&&0===M.data.indexOf(m)&&U(+M.data.slice(m.length))},a.addEventListener?a.addEventListener("message",b,!1):a.attachEvent("onmessage",b),u=function(M){a.postMessage(m+M,"*")}):a.MessageChannel?((_=new MessageChannel).port1.onmessage=function(M){U(M.data)},u=function(M){_.port2.postMessage(M)}):j&&"onreadystatechange"in j.createElement("script")?(h=j.documentElement,u=function(M){var I=j.createElement("script");I.onreadystatechange=function(){U(M),I.onreadystatechange=null,h.removeChild(I),I=null},h.appendChild(I)}):u=function(M){setTimeout(U,0,M)},H.setImmediate=function(M){"function"!=typeof M&&(M=new Function(""+M));for(var I=new Array(arguments.length-1),J=0;J<I.length;J++)I[J]=arguments[J+1];var Y={callback:M,args:I};return D[C]=Y,u(C),C++},H.clearImmediate=z}function z(M){delete D[M]}function U(M){if(x)setTimeout(U,0,M);else{var I=D[M];if(I){x=!0;try{!function(J){var Y=J.callback,ie=J.args;switch(ie.length){case 0:Y();break;case 1:Y(ie[0]);break;case 2:Y(ie[0],ie[1]);break;case 3:Y(ie[0],ie[1],ie[2]);break;default:Y.apply(void 0,ie)}}(I)}finally{z(M),x=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,t(57),t(118))},function(g,o,t){(function(e){function s(a){try{if(!e.localStorage)return!1}catch(u){return!1}var l=e.localStorage[a];return null!=l&&"true"===String(l).toLowerCase()}g.exports=function(a,l){if(s("noDeprecation"))return a;var u=!1;return function(){if(!u){if(s("throwDeprecation"))throw new Error(l);s("traceDeprecation")?console.trace(l):console.warn(l),u=!0}return a.apply(this,arguments)}}}).call(this,t(57))},function(g,o,t){"use strict";g.exports=a;var e=t(407),s=Object.create(t(157));function a(l){if(!(this instanceof a))return new a(l);e.call(this,l)}s.inherits=t(64),s.inherits(a,e),a.prototype._transform=function(l,u,h){h(null,l)}},function(g,o,t){g.exports=t(246)},function(g,o,t){g.exports=t(119)},function(g,o,t){g.exports=t(245).Transform},function(g,o,t){g.exports=t(245).PassThrough},function(g,o,t){"use strict";g.exports=function(){}},function(g,o,t){"use strict";var e=t(727),s=Math.abs,a=Math.floor;g.exports=function(l){return isNaN(l)?0:0!==(l=Number(l))&&isFinite(l)?e(l)*a(s(l)):l}},function(g,o,t){"use strict";g.exports=t(728)()?Math.sign:t(729)},function(g,o,t){"use strict";g.exports=function(){var e=Math.sign;return"function"==typeof e&&1===e(10)&&-1===e(-20)}},function(g,o,t){"use strict";g.exports=function(e){return e=Number(e),isNaN(e)||0===e?e:e>0?1:-1}},function(g,o,t){"use strict";var e=t(101),s=t(191),a=t(122),l=t(732),u=t(409);g.exports=function h(_){var m,b,C;if(e(_),(m=Object(arguments[1])).async&&m.promise)throw new Error("Options 'async' and 'promise' cannot be used together");return hasOwnProperty.call(_,"__memoized__")&&!m.force?_:(b=u(m.length,_.length,m.async&&a.async),C=l(_,b,m),s(a,function(D,x){m[x]&&D(m[x],C,m)}),h.__profiler__&&h.__profiler__(C),C.updateEnv(),C.memoized)}},function(g,o,t){"use strict";var e=t(101),s=t(137),a=Function.prototype.bind,l=Function.prototype.call,u=Object.keys,h=Object.prototype.propertyIsEnumerable;g.exports=function(_,m){return function(b,C){var D,x=arguments[2],j=arguments[3];return b=Object(s(b)),e(C),D=u(b),j&&D.sort("function"==typeof j?a.call(j,b):void 0),"function"!=typeof _&&(_=D[_]),l.call(_,D,function(H,z){return h.call(b,H)?l.call(C,x,b[H],H,b,z):m})}}},function(g,o,t){"use strict";var e=t(733),s=t(411),a=t(123),l=t(747).methods,u=t(748),h=t(764),_=Function.prototype.apply,m=Function.prototype.call,b=Object.create,C=Object.defineProperties,D=l.on,x=l.emit;g.exports=function(j,H,z){var U,M,I,J,Y,ie,oe,fe,ne,he,ce,Ae,Me,Oe,be,ue=b(null);return M=!1!==H?H:isNaN(j.length)?1:j.length,z.normalizer&&(he=h(z.normalizer),I=he.get,J=he.set,Y=he.delete,ie=he.clear),null!=z.resolvers&&(be=u(z.resolvers)),Oe=I?s(function(He){var $e,F,je=arguments;if(be&&(je=be(je)),null!==($e=I(je))&&hasOwnProperty.call(ue,$e))return ce&&U.emit("get",$e,je,this),ue[$e];if(F=1===je.length?m.call(j,this,je[0]):_.call(j,this,je),null===$e){if(null!==($e=I(je)))throw e("Circular invocation","CIRCULAR_INVOCATION");$e=J(je)}else if(hasOwnProperty.call(ue,$e))throw e("Circular invocation","CIRCULAR_INVOCATION");return ue[$e]=F,Ae&&U.emit("set",$e,null,F),F},M):0===H?function(){var He;if(hasOwnProperty.call(ue,"data"))return ce&&U.emit("get","data",arguments,this),ue.data;if(He=arguments.length?_.call(j,this,arguments):m.call(j,this),hasOwnProperty.call(ue,"data"))throw e("Circular invocation","CIRCULAR_INVOCATION");return ue.data=He,Ae&&U.emit("set","data",null,He),He}:function(He){var $e,F,je=arguments;if(be&&(je=be(arguments)),F=String(je[0]),hasOwnProperty.call(ue,F))return ce&&U.emit("get",F,je,this),ue[F];if($e=1===je.length?m.call(j,this,je[0]):_.call(j,this,je),hasOwnProperty.call(ue,F))throw e("Circular invocation","CIRCULAR_INVOCATION");return ue[F]=$e,Ae&&U.emit("set",F,null,$e),$e},U={original:j,memoized:Oe,profileName:z.profileName,get:function(He){return be&&(He=be(He)),I?I(He):String(He[0])},has:function(He){return hasOwnProperty.call(ue,He)},delete:function(He){var $e;hasOwnProperty.call(ue,He)&&(Y&&Y(He),$e=ue[He],delete ue[He],Me&&U.emit("delete",He,$e))},clear:function(){var He=ue;ie&&ie(),ue=b(null),U.emit("clear",He)},on:function(He,$e){return"get"===He?ce=!0:"set"===He?Ae=!0:"delete"===He&&(Me=!0),D.call(this,He,$e)},emit:x,updateEnv:function(){j=U.original}},oe=I?s(function(He){var $e,F=arguments;be&&(F=be(F)),null!==($e=I(F))&&U.delete($e)},M):0===H?function(){return U.delete("data")}:function(He){return be&&(He=be(arguments)[0]),U.delete(He)},fe=s(function(){var He,$e=arguments;return 0===H?ue.data:(be&&($e=be($e)),He=I?I($e):String($e[0]),ue[He])}),ne=s(function(){var He,$e=arguments;return 0===H?U.has("data"):(be&&($e=be($e)),null!==(He=I?I($e):String($e[0]))&&U.has(He))}),C(Oe,{__memoized__:a(!0),delete:a(oe),clear:a(U.clear),_get:a(fe),_has:a(ne)}),U}},function(g,o,t){"use strict";var e=t(410),s=t(739),a=t(120),l=Error.captureStackTrace;g.exports=function(u){var h=new Error(u),_=arguments[1],m=arguments[2];return a(m)||s(_)&&(m=_,_=null),a(m)&&e(h,m),a(_)&&(h.code=_),l&&l(h,g.exports),h}},function(g,o,t){"use strict";g.exports=function(){var e,s=Object.assign;return"function"==typeof s&&(s(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},function(g,o,t){"use strict";var e=t(736),s=t(137),a=Math.max;g.exports=function(l,u){var h,_,m,b=a(arguments.length,2);for(l=Object(s(l)),m=function(C){try{l[C]=u[C]}catch(D){h||(h=D)}},_=1;_<b;++_)e(u=arguments[_]).forEach(m);if(void 0!==h)throw h;return l}},function(g,o,t){"use strict";g.exports=t(737)()?Object.keys:t(738)},function(g,o,t){"use strict";g.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}},function(g,o,t){"use strict";var e=t(120),s=Object.keys;g.exports=function(a){return s(e(a)?Object(a):a)}},function(g,o,t){"use strict";var e=t(120),s={function:!0,object:!0};g.exports=function(a){return e(a)&&s[typeof a]||!1}},function(g,o,t){"use strict";var e=t(741),s=/^\s*class[\s{/}]/,a=Function.prototype.toString;g.exports=function(l){return!!e(l)&&!s.test(a.call(l))}},function(g,o,t){"use strict";var e=t(742);g.exports=function(s){if("function"!=typeof s||!hasOwnProperty.call(s,"length"))return!1;try{if("number"!=typeof s.length||"function"!=typeof s.call||"function"!=typeof s.apply)return!1}catch(a){return!1}return!e(s)}},function(g,o,t){"use strict";var e=t(743);g.exports=function(s){if(!e(s))return!1;try{return!!s.constructor&&s.constructor.prototype===s}catch(a){return!1}}},function(g,o,t){"use strict";var e=t(413),s={object:!0,function:!0,undefined:!0};g.exports=function(a){return!!e(a)&&hasOwnProperty.call(s,typeof a)}},function(g,o,t){"use strict";g.exports=t(745)()?String.prototype.contains:t(746)},function(g,o,t){"use strict";var e="razdwatrzy";g.exports=function(){return"function"==typeof e.contains&&!0===e.contains("dwa")&&!1===e.contains("foo")}},function(g,o,t){"use strict";var e=String.prototype.indexOf;g.exports=function(s){return e.call(this,s,arguments[1])>-1}},function(g,o,t){"use strict";var e,s,a,l,u,h,_,m=t(123),b=t(101),C=Function.prototype.apply,D=Function.prototype.call,x=Object.create,j=Object.defineProperty,H=Object.defineProperties,z=Object.prototype.hasOwnProperty,U={configurable:!0,enumerable:!1,writable:!0};s=function(M,I){var J,Y;return b(I),Y=this,e.call(this,M,J=function(){a.call(Y,M,J),C.call(I,this,arguments)}),J.__eeOnceListener__=I,this},u={on:e=function(M,I){var J;return b(I),z.call(this,"__ee__")?J=this.__ee__:(J=U.value=x(null),j(this,"__ee__",U),U.value=null),J[M]?"object"==typeof J[M]?J[M].push(I):J[M]=[J[M],I]:J[M]=I,this},once:s,off:a=function(M,I){var J,Y,ie,oe;if(b(I),!z.call(this,"__ee__"))return this;if(!(J=this.__ee__)[M])return this;if("object"==typeof(Y=J[M]))for(oe=0;ie=Y[oe];++oe)ie!==I&&ie.__eeOnceListener__!==I||(2===Y.length?J[M]=Y[oe?0:1]:Y.splice(oe,1));else Y!==I&&Y.__eeOnceListener__!==I||delete J[M];return this},emit:l=function(M){var I,J,Y,ie,oe;if(z.call(this,"__ee__")&&(ie=this.__ee__[M]))if("object"==typeof ie){for(J=arguments.length,oe=new Array(J-1),I=1;I<J;++I)oe[I-1]=arguments[I];for(ie=ie.slice(),I=0;Y=ie[I];++I)C.call(Y,this,oe)}else switch(arguments.length){case 1:D.call(ie,this);break;case 2:D.call(ie,this,arguments[1]);break;case 3:D.call(ie,this,arguments[1],arguments[2]);break;default:for(J=arguments.length,oe=new Array(J-1),I=1;I<J;++I)oe[I-1]=arguments[I];C.call(ie,this,oe)}}},h={on:m(e),once:m(s),off:m(a),emit:m(l)},_=H({},h),g.exports=o=function(M){return null==M?x(_):H(Object(M),h)},o.methods=u},function(g,o,t){"use strict";var e,s=t(749),a=t(120),l=t(101),u=Array.prototype.slice;e=function(h){return this.map(function(_,m){return _?_(h[m]):h[m]}).concat(u.call(h,this.length))},g.exports=function(h){return(h=s(h)).forEach(function(_){a(_)&&l(_)}),e.bind(h)}},function(g,o,t){"use strict";var e=t(247),s=Array.isArray;g.exports=function(a){return s(a)?a:e(a)}},function(g,o,t){"use strict";g.exports=function(){var e,s,a=Array.from;return"function"==typeof a&&(s=a(e=["raz","dwa"]),Boolean(s&&s!==e&&"dwa"===s[1]))}},function(g,o,t){"use strict";var e=t(752).iterator,s=t(761),a=t(762),l=t(121),u=t(101),h=t(137),_=t(120),m=t(763),b=Array.isArray,C=Function.prototype.call,D={configurable:!0,enumerable:!0,writable:!0,value:null},x=Object.defineProperty;g.exports=function(j){var H,z,U,M,I,J,Y,ie,oe,fe,ne=arguments[1],he=arguments[2];if(j=Object(h(j)),_(ne)&&u(ne),this&&this!==Array&&a(this))H=this;else{if(!ne){if(s(j))return 1!==(I=j.length)?Array.apply(null,j):((M=new Array(1))[0]=j[0],M);if(b(j)){for(M=new Array(I=j.length),z=0;z<I;++z)M[z]=j[z];return M}}M=[]}if(!b(j))if(void 0!==(oe=j[e])){for(Y=u(oe).call(j),H&&(M=new H),ie=Y.next(),z=0;!ie.done;)fe=ne?C.call(ne,he,ie.value,z):ie.value,H?(D.value=fe,x(M,z,D)):M[z]=fe,ie=Y.next(),++z;I=z}else if(m(j)){for(I=j.length,H&&(M=new H),z=0,U=0;z<I;++z)fe=j[z],z+1<I&&(J=fe.charCodeAt(0))>=55296&&J<=56319&&(fe+=j[++z]),fe=ne?C.call(ne,he,fe,U):fe,H?(D.value=fe,x(M,U,D)):M[U]=fe,++U;I=U}if(void 0===I)for(I=l(j.length),H&&(M=new H(I)),z=0;z<I;++z)fe=ne?C.call(ne,he,j[z],z):j[z],H?(D.value=fe,x(M,z,D)):M[z]=fe;return H&&(D.value=null,M.length=I),M}},function(g,o,t){"use strict";g.exports=t(753)()?t(192).Symbol:t(756)},function(g,o,t){"use strict";var e=t(192),s={object:!0,symbol:!0};g.exports=function(){var a,l=e.Symbol;if("function"!=typeof l)return!1;a=l("test symbol");try{String(a)}catch(u){return!1}return!!s[typeof l.iterator]&&!!s[typeof l.toPrimitive]&&!!s[typeof l.toStringTag]}},function(g,o,t){"use strict";g.exports=function(){return"object"==typeof globalThis&&!!globalThis&&globalThis.Array===Array}},function(g,o){var t=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};g.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},function(g,o,t){"use strict";var e,s,a,l=t(123),u=t(414),h=t(192).Symbol,_=t(758),m=t(759),b=t(760),C=Object.create,D=Object.defineProperties,x=Object.defineProperty;if("function"==typeof h)try{String(h()),a=!0}catch(j){}else h=null;s=function(j){if(this instanceof s)throw new TypeError("Symbol is not a constructor");return e(j)},g.exports=e=function j(H){var z;if(this instanceof j)throw new TypeError("Symbol is not a constructor");return a?h(H):(z=C(s.prototype),H=void 0===H?"":String(H),D(z,{__description__:l("",H),__name__:l("",_(H))}))},m(e),b(e),D(s.prototype,{constructor:l(e),toString:l("",function(){return this.__name__})}),D(e.prototype,{toString:l(function(){return"Symbol ("+u(this).__description__+")"}),valueOf:l(function(){return u(this)})}),x(e.prototype,e.toPrimitive,l("",function(){var j=u(this);return"symbol"==typeof j?j:j.toString()})),x(e.prototype,e.toStringTag,l("c","Symbol")),x(s.prototype,e.toStringTag,l("c",e.prototype[e.toStringTag])),x(s.prototype,e.toPrimitive,l("c",e.prototype[e.toPrimitive]))},function(g,o,t){"use strict";g.exports=function(e){return!!e&&("symbol"==typeof e||!!e.constructor&&"Symbol"===e.constructor.name&&"Symbol"===e[e.constructor.toStringTag])}},function(g,o,t){"use strict";var e=t(123),a=Object.defineProperty,l=Object.prototype,u=(0,Object.create)(null);g.exports=function(h){for(var _,m,b=0;u[h+(b||"")];)++b;return u[h+=b||""]=!0,a(l,_="@@"+h,e.gs(null,function(C){m||(m=!0,a(this,_,e(C)),m=!1)})),_}},function(g,o,t){"use strict";var e=t(123),s=t(192).Symbol;g.exports=function(a){return Object.defineProperties(a,{hasInstance:e("",s&&s.hasInstance||a("hasInstance")),isConcatSpreadable:e("",s&&s.isConcatSpreadable||a("isConcatSpreadable")),iterator:e("",s&&s.iterator||a("iterator")),match:e("",s&&s.match||a("match")),replace:e("",s&&s.replace||a("replace")),search:e("",s&&s.search||a("search")),species:e("",s&&s.species||a("species")),split:e("",s&&s.split||a("split")),toPrimitive:e("",s&&s.toPrimitive||a("toPrimitive")),toStringTag:e("",s&&s.toStringTag||a("toStringTag")),unscopables:e("",s&&s.unscopables||a("unscopables"))})}},function(g,o,t){"use strict";var e=t(123),s=t(414),a=Object.create(null);g.exports=function(l){return Object.defineProperties(l,{for:e(function(u){return a[u]?a[u]:a[u]=l(String(u))}),keyFor:e(function(u){var h;for(h in s(u),a)if(a[h]===u)return h})})}},function(g,o,t){"use strict";var e=Object.prototype.toString,s=e.call(function(){return arguments}());g.exports=function(a){return e.call(a)===s}},function(g,o,t){"use strict";var e=Object.prototype.toString,s=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);g.exports=function(a){return"function"==typeof a&&s(e.call(a))}},function(g,o,t){"use strict";var e=Object.prototype.toString,s=e.call("");g.exports=function(a){return"string"==typeof a||a&&"object"==typeof a&&(a instanceof String||e.call(a)===s)||!1}},function(g,o,t){"use strict";var e=t(101);g.exports=function(s){var a;return"function"==typeof s?{set:s,get:s}:(a={get:e(s.get)},void 0!==s.set?(a.set=e(s.set),s.delete&&(a.delete=e(s.delete)),s.clear&&(a.clear=e(s.clear)),a):(a.set=a.get,a))}},function(g,o,t){"use strict";g.exports=function(e){var s,a,l=e.length;if(!l)return"\x02";for(s=String(e[a=0]);--l;)s+="\x01"+e[++a];return s}},function(g,o,t){"use strict";g.exports=function(e){return e?function(s){for(var a=String(s[0]),l=0,u=e;--u;)a+="\x01"+s[++l];return a}:function(){return""}}},function(g,o,t){"use strict";var e=t(248),s=Object.create;g.exports=function(){var a=0,l=[],u=s(null);return{get:function(h){var _,m=0,b=l,C=h.length;if(0===C)return b[C]||null;if(b=b[C]){for(;m<C-1;){if(-1===(_=e.call(b[0],h[m])))return null;b=b[1][_],++m}return-1===(_=e.call(b[0],h[m]))?null:b[1][_]||null}return null},set:function(h){var _,m=0,b=l,C=h.length;if(0===C)b[C]=++a;else{for(b[C]||(b[C]=[[],[]]),b=b[C];m<C-1;)-1===(_=e.call(b[0],h[m]))&&(_=b[0].push(h[m])-1,b[1].push([[],[]])),b=b[1][_],++m;-1===(_=e.call(b[0],h[m]))&&(_=b[0].push(h[m])-1),b[1][_]=++a}return u[a]=h,a},delete:function(h){var _,m=0,b=l,C=u[h],D=C.length,x=[];if(0===D)delete b[D];else if(b=b[D]){for(;m<D-1;){if(-1===(_=e.call(b[0],C[m])))return;x.push(b,_),b=b[1][_],++m}if(-1===(_=e.call(b[0],C[m])))return;for(h=b[1][_],b[0].splice(_,1),b[1].splice(_,1);!b[0].length&&x.length;)_=x.pop(),(b=x.pop())[0].splice(_,1),b[1].splice(_,1)}delete u[h]},clear:function(){l=[],u=s(null)}}}},function(g,o,t){"use strict";g.exports=t(769)()?Number.isNaN:t(770)},function(g,o,t){"use strict";g.exports=function(){var e=Number.isNaN;return"function"==typeof e&&!e({})&&e(NaN)&&!e(34)}},function(g,o,t){"use strict";g.exports=function(e){return e!=e}},function(g,o,t){"use strict";var e=t(248);g.exports=function(){var s=0,a=[],l=[];return{get:function(u){var h=e.call(a,u[0]);return-1===h?null:l[h]},set:function(u){return a.push(u[0]),l.push(++s),s},delete:function(u){var h=e.call(l,u);-1!==h&&(a.splice(h,1),l.splice(h,1))},clear:function(){a=[],l=[]}}}},function(g,o,t){"use strict";var e=t(248),s=Object.create;g.exports=function(a){var l=0,u=[[],[]],h=s(null);return{get:function(_){for(var m,b=0,C=u;b<a-1;){if(-1===(m=e.call(C[0],_[b])))return null;C=C[1][m],++b}return-1===(m=e.call(C[0],_[b]))?null:C[1][m]||null},set:function(_){for(var m,b=0,C=u;b<a-1;)-1===(m=e.call(C[0],_[b]))&&(m=C[0].push(_[b])-1,C[1].push([[],[]])),C=C[1][m],++b;return-1===(m=e.call(C[0],_[b]))&&(m=C[0].push(_[b])-1),C[1][m]=++l,h[l]=_,l},delete:function(_){for(var m,b=0,C=u,D=[],x=h[_];b<a-1;){if(-1===(m=e.call(C[0],x[b])))return;D.push(C,m),C=C[1][m],++b}if(-1!==(m=e.call(C[0],x[b]))){for(_=C[1][m],C[0].splice(m,1),C[1].splice(m,1);!C[0].length&&D.length;)m=D.pop(),(C=D.pop())[0].splice(m,1),C[1].splice(m,1);delete h[_]}},clear:function(){u=[[],[]],h=s(null)}}}},function(g,o,t){"use strict";var e=t(247),s=t(415),a=t(412),l=t(411),u=t(249),h=Array.prototype.slice,_=Function.prototype.apply,m=Object.create;t(122).async=function(b,C){var D,x,j,H=m(null),z=m(null),U=C.memoized,M=C.original;C.memoized=l(function(I){var J=arguments,Y=J[J.length-1];return"function"==typeof Y&&(D=Y,J=h.call(J,0,-1)),U.apply(x=this,j=J)},U);try{a(C.memoized,U)}catch(I){}C.on("get",function(I){var J,Y,ie;if(D){if(H[I])return"function"==typeof H[I]?H[I]=[H[I],D]:H[I].push(D),void(D=null);J=D,Y=x,ie=j,D=x=j=null,u(function(){var oe;hasOwnProperty.call(z,I)?(oe=z[I],C.emit("getasync",I,ie,Y),_.call(J,oe.context,oe.args)):(D=J,x=Y,j=ie,U.apply(Y,ie))})}}),C.original=function(){var I,J,Y,ie;return D?(I=e(arguments),Y=D,D=x=j=null,I.push(J=function oe(fe){var ne,he,ce=oe.id;if(null!=ce){if(delete oe.id,ne=H[ce],delete H[ce],ne)return he=e(arguments),C.has(ce)&&(fe?C.delete(ce):(z[ce]={context:this,args:he},C.emit("setasync",ce,"function"==typeof ne?1:ne.length))),"function"==typeof ne?ie=_.call(ne,this,he):ne.forEach(function(Ae){ie=_.call(Ae,this,he)},this),ie}else u(_.bind(oe,this,arguments))}),ie=_.call(M,this,I),J.cb=Y,D=J,ie):_.call(M,this,arguments)},C.on("set",function(I){D?(H[I]?"function"==typeof H[I]?H[I]=[H[I],D.cb]:H[I].push(D.cb):H[I]=D.cb,delete D.cb,D.id=I,D=null):C.delete(I)}),C.on("delete",function(I){var J;hasOwnProperty.call(H,I)||z[I]&&(J=z[I],delete z[I],C.emit("deleteasync",I,h.call(J.args,1)))}),C.on("clear",function(){var I=z;z=m(null),C.emit("clearasync",s(I,function(J){return h.call(J.args,1)}))})}},function(g,o,t){"use strict";var e=t(415),s=t(775),a=t(776),l=t(778),u=t(417),h=t(249),_=Object.create,m=s("then","then:finally","done","done:finally");t(122).promise=function(b,C){var D=_(null),x=_(null),j=_(null);if(!0===b)b=null;else if(b=a(b),!m[b])throw new TypeError("'"+l(b)+"' is not valid promise mode");C.on("set",function(H,z,U){var M=!1;if(!u(U))return x[H]=U,void C.emit("setasync",H,1);D[H]=1,j[H]=U;var I=function(oe){var fe=D[H];if(M)throw new Error("Memoizee error: Detected unordered then|done & finally resolution, which in turn makes proper detection of success/failure impossible (when in 'done:finally' mode)\nConsider to rely on 'then' or 'done' mode instead.");fe&&(delete D[H],x[H]=oe,C.emit("setasync",H,fe))},J=function(){M=!0,D[H]&&(delete D[H],delete j[H],C.delete(H))},Y=b;if(Y||(Y="then"),"then"===Y){var ie=function(){h(J)};"function"==typeof(U=U.then(function(oe){h(I.bind(this,oe))},ie)).finally&&U.finally(ie)}else if("done"===Y){if("function"!=typeof U.done)throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done' mode");U.done(I,J)}else if("done:finally"===Y){if("function"!=typeof U.done)throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done:finally' mode");if("function"!=typeof U.finally)throw new Error("Memoizee error: Retrieved promise does not implement 'finally' in 'done:finally' mode");U.done(I),U.finally(J)}}),C.on("get",function(H,z,U){var M;if(D[H])++D[H];else{var I=function(){C.emit("getasync",H,z,U)};u(M=j[H])?"function"==typeof M.done?M.done(I):M.then(function(){h(I)}):I()}}),C.on("delete",function(H){if(delete j[H],D[H])delete D[H];else if(hasOwnProperty.call(x,H)){var z=x[H];delete x[H],C.emit("deleteasync",H,[z])}}),C.on("clear",function(){var H=x;x=_(null),D=_(null),j=_(null),C.emit("clearasync",e(H,function(z){return[z]}))})}},function(g,o,t){"use strict";var e=Array.prototype.forEach,s=Object.create;g.exports=function(a){var l=s(null);return e.call(arguments,function(u){l[u]=!0}),l}},function(g,o,t){"use strict";var e=t(137),s=t(777);g.exports=function(a){return s(e(a))}},function(g,o,t){"use strict";var e=t(416);g.exports=function(s){try{return s&&e(s.toString)?s.toString():String(s)}catch(a){throw new TypeError("Passed argument cannot be stringifed")}}},function(g,o,t){"use strict";var e=t(779),s=/[\n\r\u2028\u2029]/g;g.exports=function(a){var l=e(a);return l.length>100&&(l=l.slice(0,99)+"\u2026"),l.replace(s,function(u){return JSON.stringify(u).slice(1,-1)})}},function(g,o,t){"use strict";var e=t(416);g.exports=function(s){try{return s&&e(s.toString)?s.toString():String(s)}catch(a){return"<Non-coercible to string value>"}}},function(g,o,t){"use strict";var e=t(101),s=t(191),a=t(122),l=Function.prototype.apply;a.dispose=function(u,h,_){var m;if(e(u),_.async&&a.async||_.promise&&a.promise)return h.on("deleteasync",m=function(b,C){l.call(u,null,C)}),void h.on("clearasync",function(b){s(b,function(C,D){m(D,C)})});h.on("delete",m=function(b,C){u(C)}),h.on("clear",function(b){s(b,function(C,D){m(D,C)})})}},function(g,o,t){"use strict";var e=t(247),s=t(191),a=t(249),l=t(417),u=t(782),h=t(122),_=Function.prototype,m=Math.max,b=Math.min,C=Object.create;h.maxAge=function(D,x,j){var H,z,U,M;(D=u(D))&&(H=C(null),x.on("set"+(z=j.async&&h.async||j.promise&&h.promise?"async":""),function(I){H[I]=setTimeout(function(){x.delete(I)},D),"function"==typeof H[I].unref&&H[I].unref(),M&&(M[I]&&"nextTick"!==M[I]&&clearTimeout(M[I]),M[I]=setTimeout(function(){delete M[I]},U),"function"==typeof M[I].unref&&M[I].unref())}),x.on("delete"+z,function(I){clearTimeout(H[I]),delete H[I],M&&("nextTick"!==M[I]&&clearTimeout(M[I]),delete M[I])}),j.preFetch&&(U=!0===j.preFetch||isNaN(j.preFetch)?.333:m(b(Number(j.preFetch),1),0))&&(M={},U=(1-U)*D,x.on("get"+z,function(I,J,Y){M[I]||(M[I]="nextTick",a(function(){var ie;"nextTick"===M[I]&&(delete M[I],x.delete(I),j.async&&(J=e(J)).push(_),ie=x.memoized.apply(Y,J),j.promise&&l(ie)&&("function"==typeof ie.done?ie.done(_,_):ie.then(_,_)))}))})),x.on("clear"+z,function(){s(H,function(I){clearTimeout(I)}),H={},M&&(s(M,function(I){"nextTick"!==I&&clearTimeout(I)}),M={})}))}},function(g,o,t){"use strict";var e=t(121),s=t(783);g.exports=function(a){if((a=e(a))>s)throw new TypeError(a+" exceeds maximum possible timeout");return a}},function(g,o,t){"use strict";g.exports=2147483647},function(g,o,t){"use strict";var e=t(121),s=t(785),a=t(122);a.max=function(l,u,h){var _,m,b;(l=e(l))&&(m=s(l),u.on("set"+(_=h.async&&a.async||h.promise&&a.promise?"async":""),b=function(C){void 0!==(C=m.hit(C))&&u.delete(C)}),u.on("get"+_,b),u.on("delete"+_,m.delete),u.on("clear"+_,m.clear))}},function(g,o,t){"use strict";var e=t(121),s=Object.create,a=Object.prototype.hasOwnProperty;g.exports=function(l){var u,h=0,_=1,m=s(null),b=s(null),C=0;return l=e(l),{hit:function(D){var x=b[D],j=++C;if(m[j]=D,b[D]=j,!x)return++h<=l?void 0:(u(D=m[_]),D);if(delete m[x],_===x)for(;!a.call(m,++_););},delete:u=function(D){var x=b[D];if(x&&(delete m[x],delete b[D],--h,_===x)){if(!h)return C=0,void(_=1);for(;!a.call(m,++_););}},clear:function(){h=0,_=1,m=s(null),b=s(null),C=0}}}},function(g,o,t){"use strict";var e=t(123),s=t(122),a=Object.create,l=Object.defineProperties;s.refCounter=function(u,h,_){var m,b;m=a(null),h.on("set"+(b=_.async&&s.async||_.promise&&s.promise?"async":""),function(C,D){m[C]=D||1}),h.on("get"+b,function(C){++m[C]}),h.on("delete"+b,function(C){delete m[C]}),h.on("clear"+b,function(){m={}}),l(h.memoized,{deleteRef:e(function(){var C=h.get(arguments);return null===C?null:m[C]?!--m[C]&&(h.delete(C),!0):null}),getRefCount:e(function(){var C=h.get(arguments);return null===C?0:m[C]?m[C]:0})})}},function(g,o,t){var e=t(64),s=t(138),a=t(65).Buffer,l=[1518500249,1859775393,-1894007588,-899497514],u=new Array(80);function h(){this.init(),this._w=u,s.call(this,64,56)}function _(b){return b<<30|b>>>2}function m(b,C,D,x){return 0===b?C&D|~C&x:2===b?C&D|C&x|D&x:C^D^x}e(h,s),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(b){for(var C,D=this._w,x=0|this._a,j=0|this._b,H=0|this._c,z=0|this._d,U=0|this._e,M=0;M<16;++M)D[M]=b.readInt32BE(4*M);for(;M<80;++M)D[M]=D[M-3]^D[M-8]^D[M-14]^D[M-16];for(var I=0;I<80;++I){var J=~~(I/20),Y=0|((C=x)<<5|C>>>27)+m(J,j,H,z)+U+D[I]+l[J];U=z,z=H,H=_(j),j=x,x=Y}this._a=x+this._a|0,this._b=j+this._b|0,this._c=H+this._c|0,this._d=z+this._d|0,this._e=U+this._e|0},h.prototype._hash=function(){var b=a.allocUnsafe(20);return b.writeInt32BE(0|this._a,0),b.writeInt32BE(0|this._b,4),b.writeInt32BE(0|this._c,8),b.writeInt32BE(0|this._d,12),b.writeInt32BE(0|this._e,16),b},g.exports=h},function(g,o,t){var e=t(64),s=t(138),a=t(65).Buffer,l=[1518500249,1859775393,-1894007588,-899497514],u=new Array(80);function h(){this.init(),this._w=u,s.call(this,64,56)}function _(C){return C<<5|C>>>27}function m(C){return C<<30|C>>>2}function b(C,D,x,j){return 0===C?D&x|~D&j:2===C?D&x|D&j|x&j:D^x^j}e(h,s),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(C){for(var D,x=this._w,j=0|this._a,H=0|this._b,z=0|this._c,U=0|this._d,M=0|this._e,I=0;I<16;++I)x[I]=C.readInt32BE(4*I);for(;I<80;++I)x[I]=(D=x[I-3]^x[I-8]^x[I-14]^x[I-16])<<1|D>>>31;for(var J=0;J<80;++J){var Y=~~(J/20),ie=_(j)+b(Y,H,z,U)+M+x[J]+l[Y]|0;M=U,U=z,z=m(H),H=j,j=ie}this._a=j+this._a|0,this._b=H+this._b|0,this._c=z+this._c|0,this._d=U+this._d|0,this._e=M+this._e|0},h.prototype._hash=function(){var C=a.allocUnsafe(20);return C.writeInt32BE(0|this._a,0),C.writeInt32BE(0|this._b,4),C.writeInt32BE(0|this._c,8),C.writeInt32BE(0|this._d,12),C.writeInt32BE(0|this._e,16),C},g.exports=h},function(g,o,t){var e=t(64),s=t(418),a=t(138),l=t(65).Buffer,u=new Array(64);function h(){this.init(),this._w=u,a.call(this,64,56)}e(h,s),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var _=l.allocUnsafe(28);return _.writeInt32BE(this._a,0),_.writeInt32BE(this._b,4),_.writeInt32BE(this._c,8),_.writeInt32BE(this._d,12),_.writeInt32BE(this._e,16),_.writeInt32BE(this._f,20),_.writeInt32BE(this._g,24),_},g.exports=h},function(g,o,t){var e=t(64),s=t(419),a=t(138),l=t(65).Buffer,u=new Array(160);function h(){this.init(),this._w=u,a.call(this,128,112)}e(h,s),h.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},h.prototype._hash=function(){var _=l.allocUnsafe(48);function m(b,C,D){_.writeInt32BE(b,D),_.writeInt32BE(C,D+4)}return m(this._ah,this._al,0),m(this._bh,this._bl,8),m(this._ch,this._cl,16),m(this._dh,this._dl,24),m(this._eh,this._el,32),m(this._fh,this._fl,40),_},g.exports=h},function(g,o,t){var e=t(792);g.exports=e},function(g,o,t){var e=t(35),s=t(793),a=Array.prototype;g.exports=function(l){var u=l.every;return l===a||e(a,l)&&u===a.every?s:u}},function(g,o,t){t(794);var e=t(42);g.exports=e("Array").every},function(g,o,t){"use strict";var e=t(22),s=t(87).every;e({target:"Array",proto:!0,forced:!t(114)("every")},{every:function(a){return s(this,a,arguments.length>1?arguments[1]:void 0)}})},function(g,o){g.exports=function(t,e,s,a,l){return l(t,function(u,h,_){s=a?(a=!1,u):e(s,u,h,_)}),s}},function(g,o,t){var e=t(345);g.exports=e},function(g,o,t){var e=t(798);g.exports=e},function(g,o,t){var e=t(799);g.exports=e},function(g,o,t){t(333);var e=t(34);g.exports=e.Object.getOwnPropertySymbols},function(g,o,t){g.exports=t(801)},function(g,o,t){var e=t(344);g.exports=e},function(g,o,t){g.exports=t(803)},function(g,o,t){var e=t(804);g.exports=e},function(g,o,t){var e=t(805);g.exports=e},function(g,o,t){t(806);var e=t(34).Object,s=g.exports=function(a,l){return e.getOwnPropertyDescriptor(a,l)};e.getOwnPropertyDescriptor.sham&&(s.sham=!0)},function(g,o,t){var e=t(22),s=t(33),a=t(61),l=t(111).f,u=t(48),h=s(function(){l(1)});e({target:"Object",stat:!0,forced:!u||h,sham:!u},{getOwnPropertyDescriptor:function(_,m){return l(a(_),m)}})},function(g,o,t){g.exports=t(808)},function(g,o,t){var e=t(381);g.exports=e},function(g,o,t){g.exports=t(810)},function(g,o,t){var e=t(811);g.exports=e},function(g,o,t){var e=t(812);g.exports=e},function(g,o,t){t(813);var e=t(34);g.exports=e.Object.getOwnPropertyDescriptors},function(g,o,t){var e=t(22),s=t(48),a=t(422),l=t(61),u=t(111),h=t(147);e({target:"Object",stat:!0,sham:!s},{getOwnPropertyDescriptors:function(_){for(var m,b,C=l(_),D=u.f,x=a(C),j={},H=0;x.length>H;)void 0!==(b=D(C,m=x[H++]))&&h(j,m,b);return j}})},function(g,o,t){g.exports=t(815)},function(g,o,t){var e=t(816);g.exports=e},function(g,o,t){var e=t(817);g.exports=e},function(g,o,t){t(818);var e=t(34).Object,s=g.exports=function(a,l){return e.defineProperties(a,l)};e.defineProperties.sham&&(s.sham=!0)},function(g,o,t){var e=t(22),s=t(48);e({target:"Object",stat:!0,forced:!s,sham:!s},{defineProperties:t(218)})},function(g,o,t){var e=t(385);g.exports=e},function(g,o,t){var e=t(420),s=t(423);g.exports=function(a,l){if(null==a)return{};var u,h,_={},m=e(a);for(h=0;h<m.length;h++)u=m[h],s(l).call(l,u)>=0||(_[u]=a[u]);return _},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(822)},function(g,o,t){var e=t(424);t(836),t(837),t(838),t(839),g.exports=e},function(g,o,t){t(425),t(77),t(97),t(829),t(433),t(434),t(835),t(131);var e=t(34);g.exports=e.Promise},function(g,o,t){var e=t(44),s=t(422),a=t(111),l=t(63);g.exports=function(u,h){for(var _=s(h),m=l.f,b=a.f,C=0;C<_.length;C++){var D=_[C];e(u,D)||m(u,D,b(h,D))}}},function(g,o,t){var e=t(27),s=t(86),a=e("".replace),l=e("".split),u=e([].join),h=String(Error("zxcasd").stack),_=/\n\s*at [^:]*:[^\n]*/,m=_.test(h),b=/@[^\n]*\n/.test(h)&&!/zxcasd/.test(h);g.exports=function(C,D){if("string"!=typeof C)return C;if(m)for(;D--;)C=a(C,_,"");else if(b)return u(s(l(C,"\n"),D),"\n");return C}},function(g,o,t){var e=t(43),s=t(85);g.exports=function(a,l){e(l)&&"cause"in l&&s(a,"cause",l.cause)}},function(g,o,t){var e=t(67);g.exports=function(s,a){return void 0===s?arguments.length<2?"":a:e(s)}},function(g,o,t){var e=t(33),s=t(94);g.exports=!e(function(){var a=Error("a");return!("stack"in a)||(Object.defineProperty(a,"stack",s(1,7)),7!==a.stack)})},function(g,o,t){"use strict";var e,s,a,l,u=t(22),h=t(96),_=t(17),m=t(58),b=t(50),C=t(426),D=t(99),x=t(158),j=t(176),H=t(100),z=t(427),U=t(73),M=t(41),I=t(43),J=t(139),Y=t(217),ie=t(124),oe=t(378),fe=t(428),ne=t(430).set,he=t(830),ce=t(432),Ae=t(833),Me=t(159),Oe=t(193),be=t(76),ue=t(331),He=t(38),$e=t(834),F=t(177),je=t(128),Et=He("species"),lt="Promise",nn=be.get,St=be.set,At=be.getterFor(lt),Qe=C&&C.prototype,It=C,ae=Qe,Ie=_.TypeError,dt=_.document,Jt=_.process,zt=Me.f,ln=zt,ar=!!(dt&&dt.createEvent&&_.dispatchEvent),Ln=M(_.PromiseRejectionEvent),Rn="unhandledrejection",er=!1,Mn=ue(lt,function(){var En=Y(It),Fn=En!==String(It);if(!Fn&&66===je||h&&!ae.finally)return!0;if(je>=51&&/native code/.test(En))return!1;var Dn=new It(function(jn){jn(1)}),mn=function(jn){jn(function(){},function(){})};return(Dn.constructor={})[Et]=mn,!(er=Dn.then(function(){})instanceof mn)||!Fn&&$e&&!Ln}),Ht=Mn||!oe(function(En){It.all(En).catch(function(){})}),tr=function(En){var Fn;return!(!I(En)||!M(Fn=En.then))&&Fn},Yn=function(En,Fn){if(!En.notified){En.notified=!0;var Dn=En.reactions;he(function(){for(var mn=En.value,jn=1==En.state,Xt=0;Dn.length>Xt;){var ut,mt,Tt,yn=Dn[Xt++],et=jn?yn.ok:yn.fail,jt=yn.resolve,hn=yn.reject,Qn=yn.domain;try{et?(jn||(2===En.rejection&&Kn(En),En.rejection=1),!0===et?ut=mn:(Qn&&Qn.enter(),ut=et(mn),Qn&&(Qn.exit(),Tt=!0)),ut===yn.promise?hn(Ie("Promise-chain cycle")):(mt=tr(ut))?b(mt,ut,jt,hn):jt(ut)):hn(mn)}catch(Ir){Qn&&!Tt&&Qn.exit(),hn(Ir)}}En.reactions=[],En.notified=!1,Fn&&!En.rejection&&Kt(En)})}},Cn=function(En,Fn,Dn){var mn,jn;ar?((mn=dt.createEvent("Event")).promise=Fn,mn.reason=Dn,mn.initEvent(En,!1,!0),_.dispatchEvent(mn)):mn={promise:Fn,reason:Dn},!Ln&&(jn=_["on"+En])?jn(mn):En===Rn&&Ae("Unhandled promise rejection",Dn)},Kt=function(En){b(ne,_,function(){var Fn,Dn=En.facade,mn=En.value;if(dn(En)&&(Fn=Oe(function(){F?Jt.emit("unhandledRejection",mn,Dn):Cn(Rn,Dn,mn)}),En.rejection=F||dn(En)?2:1,Fn.error))throw Fn.value})},dn=function(En){return 1!==En.rejection&&!En.parent},Kn=function(En){b(ne,_,function(){var Fn=En.facade;F?Jt.emit("rejectionHandled",Fn):Cn("rejectionhandled",Fn,En.value)})},qn=function(En,Fn,Dn){return function(mn){En(Fn,mn,Dn)}},Sn=function(En,Fn,Dn){En.done||(En.done=!0,Dn&&(En=Dn),En.value=Fn,En.state=2,Yn(En,!0))},$n=function(En,Fn,Dn){if(!En.done){En.done=!0,Dn&&(En=Dn);try{if(En.facade===Fn)throw Ie("Promise can't be resolved itself");var mn=tr(Fn);mn?he(function(){var jn={done:!1};try{b(mn,Fn,qn($n,jn,En),qn(Sn,jn,En))}catch(Xt){Sn(jn,Xt,En)}}):(En.value=Fn,En.state=1,Yn(En,!1))}catch(jn){Sn({done:!1},jn,En)}}};if(Mn&&(ae=(It=function(En){J(this,ae),U(En),b(e,this);var Fn=nn(this);try{En(qn($n,Fn),qn(Sn,Fn))}catch(Dn){Sn(Fn,Dn)}}).prototype,(e=function(En){St(this,{type:lt,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=x(ae,{then:function(En,Fn){var Dn=At(this),mn=Dn.reactions,jn=zt(fe(this,It));return jn.ok=!M(En)||En,jn.fail=M(Fn)&&Fn,jn.domain=F?Jt.domain:void 0,Dn.parent=!0,mn[mn.length]=jn,0!=Dn.state&&Yn(Dn,!1),jn.promise},catch:function(En){return this.then(void 0,En)}}),s=function(){var En=new e,Fn=nn(En);this.promise=En,this.resolve=qn($n,Fn),this.reject=qn(Sn,Fn)},Me.f=zt=function(En){return En===It||En===a?new s(En):ln(En)},!h&&M(C)&&Qe!==Object.prototype)){l=Qe.then,er||(D(Qe,"then",function(En,Fn){var Dn=this;return new It(function(mn,jn){b(l,Dn,mn,jn)}).then(En,Fn)},{unsafe:!0}),D(Qe,"catch",ae.catch,{unsafe:!0}));try{delete Qe.constructor}catch(En){}j&&j(Qe,ae)}u({global:!0,wrap:!0,forced:Mn},{Promise:It}),H(It,lt,!1,!0),z(lt),a=m(lt),u({target:lt,stat:!0,forced:Mn},{reject:function(En){var Fn=zt(this);return b(Fn.reject,void 0,En),Fn.promise}}),u({target:lt,stat:!0,forced:h||Mn},{resolve:function(En){return ce(h&&this===a?It:this,En)}}),u({target:lt,stat:!0,forced:Ht},{all:function(En){var Fn=this,Dn=zt(Fn),mn=Dn.resolve,jn=Dn.reject,Xt=Oe(function(){var ut=U(Fn.resolve),mt=[],Tt=0,yn=1;ie(En,function(et){var jt=Tt++,hn=!1;yn++,b(ut,Fn,et).then(function(Qn){hn||(hn=!0,mt[jt]=Qn,--yn||mn(mt))},jn)}),--yn||mn(mt)});return Xt.error&&jn(Xt.value),Dn.promise},race:function(En){var Fn=this,Dn=zt(Fn),mn=Dn.reject,jn=Oe(function(){var Xt=U(Fn.resolve);ie(En,function(ut){b(Xt,Fn,ut).then(Dn.resolve,mn)})});return jn.error&&mn(jn.value),Dn.promise}})},function(g,o,t){var e,s,a,l,u,h,_,m,b=t(17),C=t(84),D=t(111).f,x=t(430).set,j=t(431),H=t(831),z=t(832),U=t(177),M=b.MutationObserver||b.WebKitMutationObserver,I=b.document,J=b.process,Y=b.Promise,ie=D(b,"queueMicrotask"),oe=ie&&ie.value;oe||(e=function(){var fe,ne;for(U&&(fe=J.domain)&&fe.exit();s;){ne=s.fn,s=s.next;try{ne()}catch(he){throw s?l():a=void 0,he}}a=void 0,fe&&fe.enter()},j||U||z||!M||!I?!H&&Y&&Y.resolve?((_=Y.resolve(void 0)).constructor=Y,m=C(_.then,_),l=function(){m(e)}):U?l=function(){J.nextTick(e)}:(x=C(x,b),l=function(){x(e)}):(u=!0,h=I.createTextNode(""),new M(e).observe(h,{characterData:!0}),l=function(){h.data=u=!u})),g.exports=oe||function(fe){var ne={fn:fe,next:void 0};a&&(a.next=ne),s||(s=ne,l()),a=ne}},function(g,o,t){var e=t(95),s=t(17);g.exports=/ipad|iphone|ipod/i.test(e)&&void 0!==s.Pebble},function(g,o,t){var e=t(95);g.exports=/web0s(?!.*chrome)/i.test(e)},function(g,o,t){var e=t(17);g.exports=function(s,a){var l=e.console;l&&l.error&&(1==arguments.length?l.error(s):l.error(s,a))}},function(g,o){g.exports="object"==typeof window},function(g,o,t){"use strict";var e=t(22),s=t(96),a=t(426),l=t(33),u=t(58),h=t(41),_=t(428),m=t(432),b=t(99);if(e({target:"Promise",proto:!0,real:!0,forced:!!a&&l(function(){a.prototype.finally.call({then:function(){}},function(){})})},{finally:function(D){var x=_(this,u("Promise")),j=h(D);return this.then(j?function(H){return m(x,D()).then(function(){return H})}:D,j?function(H){return m(x,D()).then(function(){throw H})}:D)}}),!s&&h(a)){var C=u("Promise").prototype.finally;a.prototype.finally!==C&&b(a.prototype,"finally",C,{unsafe:!0})}},function(g,o,t){t(425)},function(g,o,t){t(433)},function(g,o,t){"use strict";var e=t(22),s=t(159),a=t(193);e({target:"Promise",stat:!0},{try:function(l){var u=s.f(this),h=a(l);return(h.error?u.reject:u.resolve)(h.value),u.promise}})},function(g,o,t){t(434)},function(g,o,t){var e=function(s){"use strict";var a,l=Object.prototype,u=l.hasOwnProperty,h="function"==typeof Symbol?Symbol:{},_=h.iterator||"@@iterator",m=h.asyncIterator||"@@asyncIterator",b=h.toStringTag||"@@toStringTag";function C($e,F,je){return Object.defineProperty($e,F,{value:je,enumerable:!0,configurable:!0,writable:!0}),$e[F]}try{C({},"")}catch($e){C=function(F,je,Et){return F[je]=Et}}function D($e,F,je,Et){var At,Qe,It,ae,nn=Object.create((F&&F.prototype instanceof I?F:I).prototype),St=new be(Et||[]);return nn._invoke=(At=$e,Qe=je,It=St,ae=j,function(Ie,dt){if(ae===z)throw new Error("Generator is already running");if(ae===U){if("throw"===Ie)throw dt;return He()}for(It.method=Ie,It.arg=dt;;){var Jt=It.delegate;if(Jt){var zt=Ae(Jt,It);if(zt){if(zt===M)continue;return zt}}if("next"===It.method)It.sent=It._sent=It.arg;else if("throw"===It.method){if(ae===j)throw ae=U,It.arg;It.dispatchException(It.arg)}else"return"===It.method&&It.abrupt("return",It.arg);ae=z;var ln=x(At,Qe,It);if("normal"===ln.type){if(ae=It.done?U:H,ln.arg===M)continue;return{value:ln.arg,done:It.done}}"throw"===ln.type&&(ae=U,It.method="throw",It.arg=ln.arg)}}),nn}function x($e,F,je){try{return{type:"normal",arg:$e.call(F,je)}}catch(Et){return{type:"throw",arg:Et}}}s.wrap=D;var j="suspendedStart",H="suspendedYield",z="executing",U="completed",M={};function I(){}function J(){}function Y(){}var ie={};C(ie,_,function(){return this});var oe=Object.getPrototypeOf,fe=oe&&oe(oe(ue([])));fe&&fe!==l&&u.call(fe,_)&&(ie=fe);var ne=Y.prototype=I.prototype=Object.create(ie);function he($e){["next","throw","return"].forEach(function(F){C($e,F,function(je){return this._invoke(F,je)})})}function ce($e,F){function je(lt,nn,St,At){var Qe=x($e[lt],$e,nn);if("throw"!==Qe.type){var It=Qe.arg,ae=It.value;return ae&&"object"==typeof ae&&u.call(ae,"__await")?F.resolve(ae.__await).then(function(Ie){je("next",Ie,St,At)},function(Ie){je("throw",Ie,St,At)}):F.resolve(ae).then(function(Ie){It.value=Ie,St(It)},function(Ie){return je("throw",Ie,St,At)})}At(Qe.arg)}var Et;this._invoke=function(lt,nn){function St(){return new F(function(At,Qe){je(lt,nn,At,Qe)})}return Et=Et?Et.then(St,St):St()}}function Ae($e,F){var je=$e.iterator[F.method];if(je===a){if(F.delegate=null,"throw"===F.method){if($e.iterator.return&&(F.method="return",F.arg=a,Ae($e,F),"throw"===F.method))return M;F.method="throw",F.arg=new TypeError("The iterator does not provide a 'throw' method")}return M}var Et=x(je,$e.iterator,F.arg);if("throw"===Et.type)return F.method="throw",F.arg=Et.arg,F.delegate=null,M;var lt=Et.arg;return lt?lt.done?(F[$e.resultName]=lt.value,F.next=$e.nextLoc,"return"!==F.method&&(F.method="next",F.arg=a),F.delegate=null,M):lt:(F.method="throw",F.arg=new TypeError("iterator result is not an object"),F.delegate=null,M)}function Me($e){var F={tryLoc:$e[0]};1 in $e&&(F.catchLoc=$e[1]),2 in $e&&(F.finallyLoc=$e[2],F.afterLoc=$e[3]),this.tryEntries.push(F)}function Oe($e){var F=$e.completion||{};F.type="normal",delete F.arg,$e.completion=F}function be($e){this.tryEntries=[{tryLoc:"root"}],$e.forEach(Me,this),this.reset(!0)}function ue($e){if($e){var F=$e[_];if(F)return F.call($e);if("function"==typeof $e.next)return $e;if(!isNaN($e.length)){var je=-1,Et=function lt(){for(;++je<$e.length;)if(u.call($e,je))return lt.value=$e[je],lt.done=!1,lt;return lt.value=a,lt.done=!0,lt};return Et.next=Et}}return{next:He}}function He(){return{value:a,done:!0}}return J.prototype=Y,C(ne,"constructor",Y),C(Y,"constructor",J),J.displayName=C(Y,b,"GeneratorFunction"),s.isGeneratorFunction=function($e){var F="function"==typeof $e&&$e.constructor;return!!F&&(F===J||"GeneratorFunction"===(F.displayName||F.name))},s.mark=function($e){return Object.setPrototypeOf?Object.setPrototypeOf($e,Y):($e.__proto__=Y,C($e,b,"GeneratorFunction")),$e.prototype=Object.create(ne),$e},s.awrap=function($e){return{__await:$e}},he(ce.prototype),C(ce.prototype,m,function(){return this}),s.AsyncIterator=ce,s.async=function($e,F,je,Et,lt){void 0===lt&&(lt=Promise);var nn=new ce(D($e,F,je,Et),lt);return s.isGeneratorFunction(F)?nn:nn.next().then(function(St){return St.done?St.value:nn.next()})},he(ne),C(ne,b,"Generator"),C(ne,_,function(){return this}),C(ne,"toString",function(){return"[object Generator]"}),s.keys=function($e){var F=[];for(var je in $e)F.push(je);return F.reverse(),function Et(){for(;F.length;){var lt=F.pop();if(lt in $e)return Et.value=lt,Et.done=!1,Et}return Et.done=!0,Et}},s.values=ue,be.prototype={constructor:be,reset:function($e){if(this.prev=0,this.next=0,this.sent=this._sent=a,this.done=!1,this.delegate=null,this.method="next",this.arg=a,this.tryEntries.forEach(Oe),!$e)for(var F in this)"t"===F.charAt(0)&&u.call(this,F)&&!isNaN(+F.slice(1))&&(this[F]=a)},stop:function(){this.done=!0;var $e=this.tryEntries[0].completion;if("throw"===$e.type)throw $e.arg;return this.rval},dispatchException:function($e){if(this.done)throw $e;var F=this;function je(Qe,It){return nn.type="throw",nn.arg=$e,F.next=Qe,It&&(F.method="next",F.arg=a),!!It}for(var Et=this.tryEntries.length-1;Et>=0;--Et){var lt=this.tryEntries[Et],nn=lt.completion;if("root"===lt.tryLoc)return je("end");if(lt.tryLoc<=this.prev){var St=u.call(lt,"catchLoc"),At=u.call(lt,"finallyLoc");if(St&&At){if(this.prev<lt.catchLoc)return je(lt.catchLoc,!0);if(this.prev<lt.finallyLoc)return je(lt.finallyLoc)}else if(St){if(this.prev<lt.catchLoc)return je(lt.catchLoc,!0)}else{if(!At)throw new Error("try statement without catch or finally");if(this.prev<lt.finallyLoc)return je(lt.finallyLoc)}}}},abrupt:function($e,F){for(var je=this.tryEntries.length-1;je>=0;--je){var Et=this.tryEntries[je];if(Et.tryLoc<=this.prev&&u.call(Et,"finallyLoc")&&this.prev<Et.finallyLoc){var lt=Et;break}}lt&&("break"===$e||"continue"===$e)&&lt.tryLoc<=F&&F<=lt.finallyLoc&&(lt=null);var nn=lt?lt.completion:{};return nn.type=$e,nn.arg=F,lt?(this.method="next",this.next=lt.finallyLoc,M):this.complete(nn)},complete:function($e,F){if("throw"===$e.type)throw $e.arg;return"break"===$e.type||"continue"===$e.type?this.next=$e.arg:"return"===$e.type?(this.rval=this.arg=$e.arg,this.method="return",this.next="end"):"normal"===$e.type&&F&&(this.next=F),M},finish:function($e){for(var F=this.tryEntries.length-1;F>=0;--F){var je=this.tryEntries[F];if(je.finallyLoc===$e)return this.complete(je.completion,je.afterLoc),Oe(je),M}},catch:function($e){for(var F=this.tryEntries.length-1;F>=0;--F){var je=this.tryEntries[F];if(je.tryLoc===$e){var Et=je.completion;if("throw"===Et.type){var lt=Et.arg;Oe(je)}return lt}}throw new Error("illegal catch attempt")},delegateYield:function($e,F,je){return this.delegate={iterator:ue($e),resultName:F,nextLoc:je},"next"===this.method&&(this.arg=a),M}},s}(g.exports);try{regeneratorRuntime=e}catch(s){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},function(g,o,t){var e=t(842);g.exports=e},function(g,o,t){t(843);var e=t(34);g.exports=e.Object.values},function(g,o,t){var e=t(22),s=t(435).values;e({target:"Object",stat:!0},{values:function(a){return s(a)}})},function(g,o,t){var e=t(845);g.exports=e},function(g,o,t){t(846);var e=t(34);g.exports=e.Date.now},function(g,o,t){var e=t(22),s=t(17),a=t(27),l=s.Date,u=a(l.prototype.getTime);e({target:"Date",stat:!0},{now:function(){return u(new l)}})},function(g,o,t){"use strict";g.exports=function(e,s){if(s=s.split(":")[0],!(e=+e))return!1;switch(s){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},function(g,o,t){"use strict";var e=Object.prototype.hasOwnProperty;function s(l){try{return decodeURIComponent(l.replace(/\+/g," "))}catch(u){return null}}function a(l){try{return encodeURIComponent(l)}catch(u){return null}}o.stringify=function(l,u){u=u||"";var h,_,m=[];for(_ in"string"!=typeof u&&(u="?"),l)if(e.call(l,_)){if((h=l[_])||null!=h&&!isNaN(h)||(h=""),_=a(_),h=a(h),null===_||null===h)continue;m.push(_+"="+h)}return m.length?u+m.join("&"):""},o.parse=function(l){for(var u,h=/([^=?#&]+)=?([^&]*)/g,_={};u=h.exec(l);){var m=s(u[1]),b=s(u[2]);null===m||null===b||m in _||(_[m]=b)}return _}},function(g,o,t){var e=t(69);g.exports=function(){return e.Date.now()}},function(g,o,t){var e=t(235),s=t(156),a=t(186),l=t(53),u=t(136);g.exports=function(h,_,m,b){if(!l(h))return h;for(var C=-1,D=(_=s(_,h)).length,x=D-1,j=h;null!=j&&++C<D;){var H=u(_[C]),z=m;if("__proto__"===H||"constructor"===H||"prototype"===H)return h;if(C!=x){var U=j[H];void 0===(z=b?b(U,H,j):void 0)&&(z=l(U)?U:a(_[C+1])?[]:{})}e(j,H,z),j=j[H]}return h}},function(g,o,t){g.exports=t(852)},function(g,o,t){var e=t(349);g.exports=e},function(g,o,t){g.exports=t(854)},function(g,o,t){var e=t(855);g.exports=e},function(g,o,t){var e=t(856);g.exports=e},function(g,o,t){t(857);var e=t(34).Object;g.exports=function(s,a){return e.create(s,a)}},function(g,o,t){t(22)({target:"Object",stat:!0,sham:!t(48)},{create:t(98)})},function(g,o,t){var e=t(436);function s(a,l){return g.exports=s=e||function(u,h){return u.__proto__=h,u},g.exports.default=g.exports,g.exports.__esModule=!0,s(a,l)}g.exports=s,g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(860);g.exports=e},function(g,o,t){var e=t(861);g.exports=e},function(g,o,t){t(862);var e=t(34);g.exports=e.Object.setPrototypeOf},function(g,o,t){t(22)({target:"Object",stat:!0},{setPrototypeOf:t(176)})},function(g,o,t){var e=t(864);g.exports=e},function(g,o,t){var e=t(865);g.exports=e},function(g,o,t){t(866);var e=t(34);g.exports=e.Reflect.construct},function(g,o,t){var e=t(22),s=t(58),a=t(93),l=t(348),u=t(429),h=t(51),_=t(43),m=t(98),b=t(33),C=s("Reflect","construct"),D=Object.prototype,x=[].push,j=b(function(){function U(){}return!(C(function(){},[],U)instanceof U)}),H=!b(function(){C(function(){})}),z=j||H;e({target:"Reflect",stat:!0,forced:z,sham:z},{construct:function(U,M){u(U),h(M);var I=arguments.length<3?U:u(arguments[2]);if(H&&!j)return C(U,M,I);if(U==I){switch(M.length){case 0:return new U;case 1:return new U(M[0]);case 2:return new U(M[0],M[1]);case 3:return new U(M[0],M[1],M[2]);case 4:return new U(M[0],M[1],M[2],M[3])}var J=[null];return a(x,J,M),new(a(l,U,J))}var Y=I.prototype,ie=m(_(Y)?Y:D),oe=a(U,ie,M);return _(oe)?oe:ie}})},function(g,o,t){var e=t(436),s=t(868);function a(l){return g.exports=a=e?s:function(u){return u.__proto__||s(u)},g.exports.default=g.exports,g.exports.__esModule=!0,a(l)}g.exports=a,g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){g.exports=t(869)},function(g,o,t){var e=t(870);g.exports=e},function(g,o,t){var e=t(871);g.exports=e},function(g,o,t){t(872);var e=t(34);g.exports=e.Object.getPrototypeOf},function(g,o,t){var e=t(22),s=t(33),a=t(62),l=t(175),u=t(342);e({target:"Object",stat:!0,forced:s(function(){l(1)}),sham:!u},{getPrototypeOf:function(h){return l(a(h))}})},function(g,o,t){var e=t(437);g.exports=function(){if("undefined"==typeof Reflect||!e||e.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(e(Boolean,[],function(){})),!0}catch(s){return!1}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(19).default,s=t(10);g.exports=function(a,l){if(l&&("object"===e(l)||"function"==typeof l))return l;if(void 0!==l)throw new TypeError("Derived constructors may only return object or undefined");return s(a)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){"use strict";var e=t(0),s=t(353),a=t(876);function l(T){for(var R="https://reactjs.org/docs/error-decoder.html?invariant="+T,q=1;q<arguments.length;q++)R+="&args[]="+encodeURIComponent(arguments[q]);return"Minified React error #"+T+"; visit "+R+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!e)throw Error(l(227));var u=new Set,h={};function _(T,R){m(T,R),m(T+"Capture",R)}function m(T,R){for(h[T]=R,T=0;T<R.length;T++)u.add(R[T])}var b=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),C=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,D=Object.prototype.hasOwnProperty,x={},j={};function H(T,R,q,Pe,tt,on,bn){this.acceptsBooleans=2===R||3===R||4===R,this.attributeName=Pe,this.attributeNamespace=tt,this.mustUseProperty=q,this.propertyName=T,this.type=R,this.sanitizeURL=on,this.removeEmptyString=bn}var z={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(T){z[T]=new H(T,0,!1,T,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(T){var R=T[0];z[R]=new H(R,1,!1,T[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(T){z[T]=new H(T,2,!1,T.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(T){z[T]=new H(T,2,!1,T,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(T){z[T]=new H(T,3,!1,T.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(T){z[T]=new H(T,3,!0,T,null,!1,!1)}),["capture","download"].forEach(function(T){z[T]=new H(T,4,!1,T,null,!1,!1)}),["cols","rows","size","span"].forEach(function(T){z[T]=new H(T,6,!1,T,null,!1,!1)}),["rowSpan","start"].forEach(function(T){z[T]=new H(T,5,!1,T.toLowerCase(),null,!1,!1)});var U=/[\-:]([a-z])/g;function M(T){return T[1].toUpperCase()}function I(T,R,q,Pe){var on,tt=z.hasOwnProperty(R)?z[R]:null;(null!==tt?0===tt.type:!Pe&&2<R.length&&("o"===R[0]||"O"===R[0])&&("n"===R[1]||"N"===R[1]))||(function(on,bn,rr,wr){if(null==bn||function(qr,co,Ko,so){if(null!==Ko&&0===Ko.type)return!1;switch(typeof co){case"function":case"symbol":return!0;case"boolean":return!so&&(null!==Ko?!Ko.acceptsBooleans:"data-"!==(qr=qr.toLowerCase().slice(0,5))&&"aria-"!==qr);default:return!1}}(on,bn,rr,wr))return!0;if(wr)return!1;if(null!==rr)switch(rr.type){case 3:return!bn;case 4:return!1===bn;case 5:return isNaN(bn);case 6:return isNaN(bn)||1>bn}return!1}(R,q,tt,Pe)&&(q=null),Pe||null===tt?(D.call(j,on=R)||!D.call(x,on)&&(C.test(on)?j[on]=!0:(x[on]=!0,0)))&&(null===q?T.removeAttribute(R):T.setAttribute(R,""+q)):tt.mustUseProperty?T[tt.propertyName]=null===q?3!==tt.type&&"":q:(R=tt.attributeName,Pe=tt.attributeNamespace,null===q?T.removeAttribute(R):(q=3===(tt=tt.type)||4===tt&&!0===q?"":""+q,Pe?T.setAttributeNS(Pe,R,q):T.setAttribute(R,q))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(T){var R=T.replace(U,M);z[R]=new H(R,1,!1,T,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(T){var R=T.replace(U,M);z[R]=new H(R,1,!1,T,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(T){var R=T.replace(U,M);z[R]=new H(R,1,!1,T,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(T){z[T]=new H(T,1,!1,T.toLowerCase(),null,!1,!1)}),z.xlinkHref=new H("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(T){z[T]=new H(T,1,!1,T.toLowerCase(),null,!0,!0)});var J=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Y=60103,ie=60106,oe=60107,fe=60108,ne=60114,he=60109,ce=60110,Ae=60112,Me=60113,Oe=60120,be=60115,ue=60116,He=60121,$e=60128,F=60129,je=60130,Et=60131;if("function"==typeof Symbol&&Symbol.for){var lt=Symbol.for;Y=lt("react.element"),ie=lt("react.portal"),oe=lt("react.fragment"),fe=lt("react.strict_mode"),ne=lt("react.profiler"),he=lt("react.provider"),ce=lt("react.context"),Ae=lt("react.forward_ref"),Me=lt("react.suspense"),Oe=lt("react.suspense_list"),be=lt("react.memo"),ue=lt("react.lazy"),He=lt("react.block"),lt("react.scope"),$e=lt("react.opaque.id"),F=lt("react.debug_trace_mode"),je=lt("react.offscreen"),Et=lt("react.legacy_hidden")}var nn,St="function"==typeof Symbol&&Symbol.iterator;function At(T){return null===T||"object"!=typeof T?null:"function"==typeof(T=St&&T[St]||T["@@iterator"])?T:null}function Qe(T){if(void 0===nn)try{throw Error()}catch(q){var R=q.stack.trim().match(/\n( *(at )?)/);nn=R&&R[1]||""}return"\n"+nn+T}var It=!1;function ae(T,R){if(!T||It)return"";It=!0;var q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(R)if(R=function(){throw Error()},Object.defineProperty(R.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(R,[])}catch(wr){var Pe=wr}Reflect.construct(T,[],R)}else{try{R.call()}catch(wr){Pe=wr}T.call(R.prototype)}else{try{throw Error()}catch(wr){Pe=wr}T()}}catch(wr){if(wr&&Pe&&"string"==typeof wr.stack){for(var tt=wr.stack.split("\n"),on=Pe.stack.split("\n"),bn=tt.length-1,rr=on.length-1;1<=bn&&0<=rr&&tt[bn]!==on[rr];)rr--;for(;1<=bn&&0<=rr;bn--,rr--)if(tt[bn]!==on[rr]){if(1!==bn||1!==rr)do{if(bn--,0>--rr||tt[bn]!==on[rr])return"\n"+tt[bn].replace(" at new "," at ")}while(1<=bn&&0<=rr);break}}}finally{It=!1,Error.prepareStackTrace=q}return(T=T?T.displayName||T.name:"")?Qe(T):""}function Ie(T){switch(T.tag){case 5:return Qe(T.type);case 16:return Qe("Lazy");case 13:return Qe("Suspense");case 19:return Qe("SuspenseList");case 0:case 2:case 15:return ae(T.type,!1);case 11:return ae(T.type.render,!1);case 22:return ae(T.type._render,!1);case 1:return ae(T.type,!0);default:return""}}function dt(T){if(null==T)return null;if("function"==typeof T)return T.displayName||T.name||null;if("string"==typeof T)return T;switch(T){case oe:return"Fragment";case ie:return"Portal";case ne:return"Profiler";case fe:return"StrictMode";case Me:return"Suspense";case Oe:return"SuspenseList"}if("object"==typeof T)switch(T.$$typeof){case ce:return(T.displayName||"Context")+".Consumer";case he:return(T._context.displayName||"Context")+".Provider";case Ae:var R=T.render;return R=R.displayName||R.name||"",T.displayName||(""!==R?"ForwardRef("+R+")":"ForwardRef");case be:return dt(T.type);case He:return dt(T._render);case ue:R=T._payload,T=T._init;try{return dt(T(R))}catch(q){}}return null}function Jt(T){switch(typeof T){case"boolean":case"number":case"object":case"string":case"undefined":return T;default:return""}}function zt(T){var R=T.type;return(T=T.nodeName)&&"input"===T.toLowerCase()&&("checkbox"===R||"radio"===R)}function ln(T){T._valueTracker||(T._valueTracker=function(R){var q=zt(R)?"checked":"value",Pe=Object.getOwnPropertyDescriptor(R.constructor.prototype,q),tt=""+R[q];if(!R.hasOwnProperty(q)&&void 0!==Pe&&"function"==typeof Pe.get&&"function"==typeof Pe.set){var on=Pe.get,bn=Pe.set;return Object.defineProperty(R,q,{configurable:!0,get:function(){return on.call(this)},set:function(rr){tt=""+rr,bn.call(this,rr)}}),Object.defineProperty(R,q,{enumerable:Pe.enumerable}),{getValue:function(){return tt},setValue:function(rr){tt=""+rr},stopTracking:function(){R._valueTracker=null,delete R[q]}}}}(T))}function ar(T){if(!T)return!1;var R=T._valueTracker;if(!R)return!0;var q=R.getValue(),Pe="";return T&&(Pe=zt(T)?T.checked?"true":"false":T.value),(T=Pe)!==q&&(R.setValue(T),!0)}function Ln(T){if(void 0===(T=T||("undefined"!=typeof document?document:void 0)))return null;try{return T.activeElement||T.body}catch(R){return T.body}}function Rn(T,R){var q=R.checked;return s({},R,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=q?q:T._wrapperState.initialChecked})}function er(T,R){var q=null==R.defaultValue?"":R.defaultValue,Pe=null!=R.checked?R.checked:R.defaultChecked;q=Jt(null!=R.value?R.value:q),T._wrapperState={initialChecked:Pe,initialValue:q,controlled:"checkbox"===R.type||"radio"===R.type?null!=R.checked:null!=R.value}}function Mn(T,R){null!=(R=R.checked)&&I(T,"checked",R,!1)}function Ht(T,R){Mn(T,R);var q=Jt(R.value),Pe=R.type;if(null!=q)"number"===Pe?(0===q&&""===T.value||T.value!=q)&&(T.value=""+q):T.value!==""+q&&(T.value=""+q);else if("submit"===Pe||"reset"===Pe)return void T.removeAttribute("value");R.hasOwnProperty("value")?Yn(T,R.type,q):R.hasOwnProperty("defaultValue")&&Yn(T,R.type,Jt(R.defaultValue)),null==R.checked&&null!=R.defaultChecked&&(T.defaultChecked=!!R.defaultChecked)}function tr(T,R,q){if(R.hasOwnProperty("value")||R.hasOwnProperty("defaultValue")){var Pe=R.type;if(("submit"===Pe||"reset"===Pe)&&null==R.value)return;R=""+T._wrapperState.initialValue,q||R===T.value||(T.value=R),T.defaultValue=R}""!==(q=T.name)&&(T.name=""),T.defaultChecked=!!T._wrapperState.initialChecked,""!==q&&(T.name=q)}function Yn(T,R,q){"number"===R&&Ln(T.ownerDocument)===T||(null==q?T.defaultValue=""+T._wrapperState.initialValue:T.defaultValue!==""+q&&(T.defaultValue=""+q))}function Cn(T,R){return T=s({children:void 0},R),Pe="",e.Children.forEach(R.children,function(tt){null!=tt&&(Pe+=tt)}),(R=Pe)&&(T.children=R),T;var Pe}function Kt(T,R,q,Pe){if(T=T.options,R){R={};for(var tt=0;tt<q.length;tt++)R["$"+q[tt]]=!0;for(q=0;q<T.length;q++)tt=R.hasOwnProperty("$"+T[q].value),T[q].selected!==tt&&(T[q].selected=tt),tt&&Pe&&(T[q].defaultSelected=!0)}else{for(q=""+Jt(q),R=null,tt=0;tt<T.length;tt++){if(T[tt].value===q)return T[tt].selected=!0,void(Pe&&(T[tt].defaultSelected=!0));null!==R||T[tt].disabled||(R=T[tt])}null!==R&&(R.selected=!0)}}function dn(T,R){if(null!=R.dangerouslySetInnerHTML)throw Error(l(91));return s({},R,{value:void 0,defaultValue:void 0,children:""+T._wrapperState.initialValue})}function Kn(T,R){var q=R.value;if(null==q){if(q=R.children,R=R.defaultValue,null!=q){if(null!=R)throw Error(l(92));if(Array.isArray(q)){if(!(1>=q.length))throw Error(l(93));q=q[0]}R=q}null==R&&(R=""),q=R}T._wrapperState={initialValue:Jt(q)}}function qn(T,R){var q=Jt(R.value),Pe=Jt(R.defaultValue);null!=q&&((q=""+q)!==T.value&&(T.value=q),null==R.defaultValue&&T.defaultValue!==q&&(T.defaultValue=q)),null!=Pe&&(T.defaultValue=""+Pe)}function Sn(T){var R=T.textContent;R===T._wrapperState.initialValue&&""!==R&&null!==R&&(T.value=R)}var $n="http://www.w3.org/1999/xhtml";function Fn(T){switch(T){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Dn(T,R){return null==T||"http://www.w3.org/1999/xhtml"===T?Fn(R):"http://www.w3.org/2000/svg"===T&&"foreignObject"===R?"http://www.w3.org/1999/xhtml":T}var mn,jn,Xt=(jn=function(T,R){if("http://www.w3.org/2000/svg"!==T.namespaceURI||"innerHTML"in T)T.innerHTML=R;else{for((mn=mn||document.createElement("div")).innerHTML="<svg>"+R.valueOf().toString()+"</svg>",R=mn.firstChild;T.firstChild;)T.removeChild(T.firstChild);for(;R.firstChild;)T.appendChild(R.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(T,R,q,Pe){MSApp.execUnsafeLocalFunction(function(){return jn(T,R)})}:jn);function ut(T,R){if(R){var q=T.firstChild;if(q&&q===T.lastChild&&3===q.nodeType)return void(q.nodeValue=R)}T.textContent=R}var mt={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Tt=["Webkit","ms","Moz","O"];function yn(T,R,q){return null==R||"boolean"==typeof R||""===R?"":q||"number"!=typeof R||0===R||mt.hasOwnProperty(T)&&mt[T]?(""+R).trim():R+"px"}function et(T,R){for(var q in T=T.style,R)if(R.hasOwnProperty(q)){var Pe=0===q.indexOf("--"),tt=yn(q,R[q],Pe);"float"===q&&(q="cssFloat"),Pe?T.setProperty(q,tt):T[q]=tt}}Object.keys(mt).forEach(function(T){Tt.forEach(function(R){R=R+T.charAt(0).toUpperCase()+T.substring(1),mt[R]=mt[T]})});var jt=s({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function hn(T,R){if(R){if(jt[T]&&(null!=R.children||null!=R.dangerouslySetInnerHTML))throw Error(l(137,T));if(null!=R.dangerouslySetInnerHTML){if(null!=R.children)throw Error(l(60));if("object"!=typeof R.dangerouslySetInnerHTML||!("__html"in R.dangerouslySetInnerHTML))throw Error(l(61))}if(null!=R.style&&"object"!=typeof R.style)throw Error(l(62))}}function Qn(T,R){if(-1===T.indexOf("-"))return"string"==typeof R.is;switch(T){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Ir(T){return(T=T.target||T.srcElement||window).correspondingUseElement&&(T=T.correspondingUseElement),3===T.nodeType?T.parentNode:T}var ht=null,L=null,Ue=null;function nt(T){if(T=Fe(T)){if("function"!=typeof ht)throw Error(l(280));var R=T.stateNode;R&&(R=Ot(R),ht(T.stateNode,T.type,R))}}function at(T){L?Ue?Ue.push(T):Ue=[T]:L=T}function it(){if(L){var T=L,R=Ue;if(Ue=L=null,nt(T),R)for(T=0;T<R.length;T++)nt(R[T])}}function Pt(T,R){return T(R)}function Ut(T,R,q,Pe,tt){return T(R,q,Pe,tt)}function ot(){}var Nn=Pt,sn=!1,An=!1;function Bn(){null===L&&null===Ue||(ot(),it())}function ir(T,R){var q=T.stateNode;if(null===q)return null;var Pe=Ot(q);if(null===Pe)return null;q=Pe[R];e:switch(R){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(Pe=!Pe.disabled)||(Pe=!("button"===(T=T.type)||"input"===T||"select"===T||"textarea"===T)),T=!Pe;break e;default:T=!1}if(T)return null;if(q&&"function"!=typeof q)throw Error(l(231,R,typeof q));return q}var mr=!1;if(b)try{var _r={};Object.defineProperty(_r,"passive",{get:function(){mr=!0}}),window.addEventListener("test",_r,_r),window.removeEventListener("test",_r,_r)}catch(T){mr=!1}function Nr(T,R,q,Pe,tt,on,bn,rr,wr){var qr=Array.prototype.slice.call(arguments,3);try{R.apply(q,qr)}catch(co){this.onError(co)}}var br=!1,Jn=null,nr=!1,Mr=null,yi={onError:function(T){br=!0,Jn=T}};function Ii(T,R,q,Pe,tt,on,bn,rr,wr){br=!1,Jn=null,Nr.apply(yi,arguments)}function Mi(T){var R=T,q=T;if(T.alternate)for(;R.return;)R=R.return;else{T=R;do{0!=(1026&(R=T).flags)&&(q=R.return),T=R.return}while(T)}return 3===R.tag?q:null}function Oi(T){if(13===T.tag){var R=T.memoizedState;if(null===R&&null!==(T=T.alternate)&&(R=T.memoizedState),null!==R)return R.dehydrated}return null}function Kr(T){if(Mi(T)!==T)throw Error(l(188))}function ei(T){if(!(T=function(q){var Pe=q.alternate;if(!Pe){if(null===(Pe=Mi(q)))throw Error(l(188));return Pe!==q?null:q}for(var tt=q,on=Pe;;){var bn=tt.return;if(null===bn)break;var rr=bn.alternate;if(null===rr){if(null!==(on=bn.return)){tt=on;continue}break}if(bn.child===rr.child){for(rr=bn.child;rr;){if(rr===tt)return Kr(bn),q;if(rr===on)return Kr(bn),Pe;rr=rr.sibling}throw Error(l(188))}if(tt.return!==on.return)tt=bn,on=rr;else{for(var wr=!1,qr=bn.child;qr;){if(qr===tt){wr=!0,tt=bn,on=rr;break}if(qr===on){wr=!0,on=bn,tt=rr;break}qr=qr.sibling}if(!wr){for(qr=rr.child;qr;){if(qr===tt){wr=!0,tt=rr,on=bn;break}if(qr===on){wr=!0,on=rr,tt=bn;break}qr=qr.sibling}if(!wr)throw Error(l(189))}}if(tt.alternate!==on)throw Error(l(190))}if(3!==tt.tag)throw Error(l(188));return tt.stateNode.current===tt?q:Pe}(T)))return null;for(var R=T;;){if(5===R.tag||6===R.tag)return R;if(R.child)R.child.return=R,R=R.child;else{if(R===T)break;for(;!R.sibling;){if(!R.return||R.return===T)return null;R=R.return}R.sibling.return=R.return,R=R.sibling}}return null}function di(T,R){for(var q=T.alternate;null!==R;){if(R===T||R===q)return!0;R=R.return}return!1}var se,ct,Ke,Xe,Vt=!1,Ct=[],rt=null,bt=null,We=null,$t=new Map,or=new Map,Zn=[],Vr="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Cr(T,R,q,Pe,tt){return{blockedOn:T,domEventName:R,eventSystemFlags:16|q,nativeEvent:tt,targetContainers:[Pe]}}function ai(T,R){switch(T){case"focusin":case"focusout":rt=null;break;case"dragenter":case"dragleave":bt=null;break;case"mouseover":case"mouseout":We=null;break;case"pointerover":case"pointerout":$t.delete(R.pointerId);break;case"gotpointercapture":case"lostpointercapture":or.delete(R.pointerId)}}function Dr(T,R,q,Pe,tt,on){return null===T||T.nativeEvent!==on?(T=Cr(R,q,Pe,tt,on),null!==R&&null!==(R=Fe(R))&&ct(R),T):(T.eventSystemFlags|=Pe,R=T.targetContainers,null!==tt&&-1===R.indexOf(tt)&&R.push(tt),T)}function Qr(T){var R=Je(T.target);if(null!==R){var q=Mi(R);if(null!==q)if(13===(R=q.tag)){if(null!==(R=Oi(q)))return T.blockedOn=R,void Xe(T.lanePriority,function(){a.unstable_runWithPriority(T.priority,function(){Ke(q)})})}else if(3===R&&q.stateNode.hydrate)return void(T.blockedOn=3===q.tag?q.stateNode.containerInfo:null)}T.blockedOn=null}function rn(T){if(null!==T.blockedOn)return!1;for(var R=T.targetContainers;0<R.length;){var q=Os(T.domEventName,T.eventSystemFlags,R[0],T.nativeEvent);if(null!==q)return null!==(R=Fe(q))&&ct(R),T.blockedOn=q,!1;R.shift()}return!0}function fi(T,R,q){rn(T)&&q.delete(R)}function Ei(){for(Vt=!1;0<Ct.length;){var T=Ct[0];if(null!==T.blockedOn){null!==(T=Fe(T.blockedOn))&&se(T);break}for(var R=T.targetContainers;0<R.length;){var q=Os(T.domEventName,T.eventSystemFlags,R[0],T.nativeEvent);if(null!==q){T.blockedOn=q;break}R.shift()}null===T.blockedOn&&Ct.shift()}null!==rt&&rn(rt)&&(rt=null),null!==bt&&rn(bt)&&(bt=null),null!==We&&rn(We)&&(We=null),$t.forEach(fi),or.forEach(fi)}function wi(T,R){T.blockedOn===R&&(T.blockedOn=null,Vt||(Vt=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Ei)))}function go(T){function R(tt){return wi(tt,T)}if(0<Ct.length){wi(Ct[0],T);for(var q=1;q<Ct.length;q++){var Pe=Ct[q];Pe.blockedOn===T&&(Pe.blockedOn=null)}}for(null!==rt&&wi(rt,T),null!==bt&&wi(bt,T),null!==We&&wi(We,T),$t.forEach(R),or.forEach(R),q=0;q<Zn.length;q++)(Pe=Zn[q]).blockedOn===T&&(Pe.blockedOn=null);for(;0<Zn.length&&null===(q=Zn[0]).blockedOn;)Qr(q),null===q.blockedOn&&Zn.shift()}function Fi(T,R){var q={};return q[T.toLowerCase()]=R.toLowerCase(),q["Webkit"+T]="webkit"+R,q["Moz"+T]="moz"+R,q}var no={animationend:Fi("Animation","AnimationEnd"),animationiteration:Fi("Animation","AnimationIteration"),animationstart:Fi("Animation","AnimationStart"),transitionend:Fi("Transition","TransitionEnd")},Ji={},qi={};function to(T){if(Ji[T])return Ji[T];if(!no[T])return T;var R,q=no[T];for(R in q)if(q.hasOwnProperty(R)&&R in qi)return Ji[T]=q[R];return T}b&&(qi=document.createElement("div").style,"AnimationEvent"in window||(delete no.animationend.animation,delete no.animationiteration.animation,delete no.animationstart.animation),"TransitionEvent"in window||delete no.transitionend.transition);var zi=to("animationend"),Go=to("animationiteration"),Ro=to("animationstart"),Bo=to("transitionend"),Jo=new Map,es=new Map,ua=["abort","abort",zi,"animationEnd",Go,"animationIteration",Ro,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Bo,"transitionEnd","waiting","waiting"];function ds(T,R){for(var q=0;q<T.length;q+=2){var Pe=T[q],tt=T[q+1];tt="on"+(tt[0].toUpperCase()+tt.slice(1)),es.set(Pe,R),Jo.set(Pe,tt),_(tt,[Pe])}}(0,a.unstable_now)();var zo=8;function oa(T){if(0!=(1&T))return zo=15,1;if(0!=(2&T))return zo=14,2;if(0!=(4&T))return zo=13,4;var R=24&T;return 0!==R?(zo=12,R):0!=(32&T)?(zo=11,32):0!=(R=192&T)?(zo=10,R):0!=(256&T)?(zo=9,256):0!=(R=3584&T)?(zo=8,R):0!=(4096&T)?(zo=7,4096):0!=(R=4186112&T)?(zo=6,R):0!=(R=62914560&T)?(zo=5,R):67108864&T?(zo=4,67108864):0!=(134217728&T)?(zo=3,134217728):0!=(R=805306368&T)?(zo=2,R):0!=(1073741824&T)?(zo=1,1073741824):(zo=8,T)}function Er(T,R){var q=T.pendingLanes;if(0===q)return zo=0;var Pe=0,tt=0,on=T.expiredLanes,bn=T.suspendedLanes,rr=T.pingedLanes;if(0!==on)Pe=on,tt=zo=15;else if(0!=(on=134217727&q)){var wr=on&~bn;0!==wr?(Pe=oa(wr),tt=zo):0!=(rr&=on)&&(Pe=oa(rr),tt=zo)}else 0!=(on=q&~bn)?(Pe=oa(on),tt=zo):0!==rr&&(Pe=oa(rr),tt=zo);if(0===Pe)return 0;if(Pe=q&((0>(Pe=31-Tn(Pe))?0:1<<Pe)<<1)-1,0!==R&&R!==Pe&&0==(R&bn)){if(oa(R),tt<=zo)return R;zo=tt}if(0!==(R=T.entangledLanes))for(T=T.entanglements,R&=Pe;0<R;)tt=1<<(q=31-Tn(R)),Pe|=T[q],R&=~tt;return Pe}function st(T){return 0!=(T=-1073741825&T.pendingLanes)?T:1073741824&T?1073741824:0}function pn(T,R){switch(T){case 15:return 1;case 14:return 2;case 12:return 0===(T=ee(24&~R))?pn(10,R):T;case 10:return 0===(T=ee(192&~R))?pn(8,R):T;case 8:return 0===(T=ee(3584&~R))&&0===(T=ee(4186112&~R))&&(T=512),T;case 2:return 0===(R=ee(805306368&~R))&&(R=268435456),R}throw Error(l(358,T))}function ee(T){return T&-T}function Ve(T){for(var R=[],q=0;31>q;q++)R.push(T);return R}function fn(T,R,q){T.pendingLanes|=R;var Pe=R-1;T.suspendedLanes&=Pe,T.pingedLanes&=Pe,(T=T.eventTimes)[R=31-Tn(R)]=q}var Tn=Math.clz32?Math.clz32:function(T){return 0===T?32:31-($r(T)/ni|0)|0},$r=Math.log,ni=Math.LN2,Ri=a.unstable_UserBlockingPriority,Do=a.unstable_runWithPriority,gi=!0;function Hi(T,R,q,Pe){sn||ot();var tt=cs,on=sn;sn=!0;try{Ut(tt,T,R,q,Pe)}finally{(sn=on)||Bn()}}function Li(T,R,q,Pe){Do(Ri,cs.bind(null,T,R,q,Pe))}function cs(T,R,q,Pe){var tt;if(gi)if((tt=0==(4&R))&&0<Ct.length&&-1<Vr.indexOf(T))T=Cr(null,T,R,q,Pe),Ct.push(T);else{var on=Os(T,R,q,Pe);if(null===on)tt&&ai(T,Pe);else{if(tt){if(-1<Vr.indexOf(T))return T=Cr(on,T,R,q,Pe),void Ct.push(T);if(function(bn,rr,wr,qr,co){switch(rr){case"focusin":return rt=Dr(rt,bn,rr,wr,qr,co),!0;case"dragenter":return bt=Dr(bt,bn,rr,wr,qr,co),!0;case"mouseover":return We=Dr(We,bn,rr,wr,qr,co),!0;case"pointerover":var Ko=co.pointerId;return $t.set(Ko,Dr($t.get(Ko)||null,bn,rr,wr,qr,co)),!0;case"gotpointercapture":return or.set(Ko=co.pointerId,Dr(or.get(Ko)||null,bn,rr,wr,qr,co)),!0}return!1}(on,T,R,q,Pe))return;ai(T,Pe)}eo(T,R,Pe,null,q)}}}function Os(T,R,q,Pe){var tt=Ir(Pe);if(null!==(tt=Je(tt))){var on=Mi(tt);if(null===on)tt=null;else{var bn=on.tag;if(13===bn){if(null!==(tt=Oi(on)))return tt;tt=null}else if(3===bn){if(on.stateNode.hydrate)return 3===on.tag?on.stateNode.containerInfo:null;tt=null}else on!==tt&&(tt=null)}}return eo(T,R,Pe,tt,q),null}var da=null,xa=null,Ra=null;function Ml(){if(Ra)return Ra;var T,R,q=xa,Pe=q.length,tt="value"in da?da.value:da.textContent,on=tt.length;for(T=0;T<Pe&&q[T]===tt[T];T++);var bn=Pe-T;for(R=1;R<=bn&&q[Pe-R]===tt[on-R];R++);return Ra=tt.slice(T,1<R?1-R:void 0)}function Dl(T){var R=T.keyCode;return"charCode"in T?0===(T=T.charCode)&&13===R&&(T=13):T=R,10===T&&(T=13),32<=T||13===T?T:0}function Ca(){return!0}function sa(){return!1}function Fo(T){function R(q,Pe,tt,on,bn){for(var rr in this._reactName=q,this._targetInst=tt,this.type=Pe,this.nativeEvent=on,this.target=bn,this.currentTarget=null,T)T.hasOwnProperty(rr)&&(this[rr]=(q=T[rr])?q(on):on[rr]);return this.isDefaultPrevented=(null!=on.defaultPrevented?on.defaultPrevented:!1===on.returnValue)?Ca:sa,this.isPropagationStopped=sa,this}return s(R.prototype,{preventDefault:function(){this.defaultPrevented=!0;var q=this.nativeEvent;q&&(q.preventDefault?q.preventDefault():"unknown"!=typeof q.returnValue&&(q.returnValue=!1),this.isDefaultPrevented=Ca)},stopPropagation:function(){var q=this.nativeEvent;q&&(q.stopPropagation?q.stopPropagation():"unknown"!=typeof q.cancelBubble&&(q.cancelBubble=!0),this.isPropagationStopped=Ca)},persist:function(){},isPersistent:Ca}),R}var Ka,Sa,fa,ks={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(T){return T.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ua=Fo(ks),pt=s({},ks,{view:0,detail:0}),an=Fo(pt),Nt=s({},pt,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Zo,button:0,buttons:0,relatedTarget:function(T){return void 0===T.relatedTarget?T.fromElement===T.srcElement?T.toElement:T.fromElement:T.relatedTarget},movementX:function(T){return"movementX"in T?T.movementX:(T!==fa&&(fa&&"mousemove"===T.type?(Ka=T.screenX-fa.screenX,Sa=T.screenY-fa.screenY):Sa=Ka=0,fa=T),Ka)},movementY:function(T){return"movementY"in T?T.movementY:Sa}}),Ce=Fo(Nt),ye=Fo(s({},Nt,{dataTransfer:0})),Ne=Fo(s({},pt,{relatedTarget:0})),Wt=Fo(s({},ks,{animationName:0,elapsedTime:0,pseudoElement:0})),Or=Fo(s({},ks,{clipboardData:function(T){return"clipboardData"in T?T.clipboardData:window.clipboardData}})),Ni=Fo(s({},ks,{data:0})),Yo={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ms={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},ss={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Lo(T){var R=this.nativeEvent;return R.getModifierState?R.getModifierState(T):!!(T=ss[T])&&!!R[T]}function Zo(){return Lo}var Ea=Fo(s({},pt,{key:function(T){if(T.key){var R=Yo[T.key]||T.key;if("Unidentified"!==R)return R}return"keypress"===T.type?13===(T=Dl(T))?"Enter":String.fromCharCode(T):"keydown"===T.type||"keyup"===T.type?ms[T.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Zo,charCode:function(T){return"keypress"===T.type?Dl(T):0},keyCode:function(T){return"keydown"===T.type||"keyup"===T.type?T.keyCode:0},which:function(T){return"keypress"===T.type?Dl(T):"keydown"===T.type||"keyup"===T.type?T.keyCode:0}})),ul=Fo(s({},Nt,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ma=Fo(s({},pt,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Zo})),va=Fo(s({},ks,{propertyName:0,elapsedTime:0,pseudoElement:0})),bs=Fo(s({},Nt,{deltaX:function(T){return"deltaX"in T?T.deltaX:"wheelDeltaX"in T?-T.wheelDeltaX:0},deltaY:function(T){return"deltaY"in T?T.deltaY:"wheelDeltaY"in T?-T.wheelDeltaY:"wheelDelta"in T?-T.wheelDelta:0},deltaZ:0,deltaMode:0})),$o=[9,13,27,32],Ol=b&&"CompositionEvent"in window,dl=null;b&&"documentMode"in document&&(dl=document.documentMode);var Ja=b&&"TextEvent"in window&&!dl,il=b&&(!Ol||dl&&8<dl&&11>=dl),Il=String.fromCharCode(32),Bl=!1;function Na(T,R){switch(T){case"keyup":return-1!==$o.indexOf(R.keyCode);case"keydown":return 229!==R.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Di(T){return"object"==typeof(T=T.detail)&&"data"in T?T.data:null}var vs=!1,pa={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vo(T){var R=T&&T.nodeName&&T.nodeName.toLowerCase();return"input"===R?!!pa[T.type]:"textarea"===R}function ja(T,R,q,Pe){at(Pe),0<(R=Zi(R,"onChange")).length&&(q=new Ua("onChange","change",null,q,Pe),T.push({event:q,listeners:R}))}var hs=null,ze=null;function wt(T){li(T,0)}function kt(T){if(ar(we(T)))return T}function tn(T,R){if("change"===T)return R}var ur=!1;if(b){var gn;if(b){var xr="oninput"in document;if(!xr){var Zr=document.createElement("div");Zr.setAttribute("oninput","return;"),xr="function"==typeof Zr.oninput}gn=xr}else gn=!1;ur=gn&&(!document.documentMode||9<document.documentMode)}function Pr(){hs&&(hs.detachEvent("onpropertychange",mi),ze=hs=null)}function mi(T){if("value"===T.propertyName&&kt(ze)){var R=[];if(ja(R,ze,T,Ir(T)),T=wt,sn)T(R);else{sn=!0;try{Pt(T,R)}finally{sn=!1,Bn()}}}}function ii(T,R,q){"focusin"===T?(Pr(),ze=q,(hs=R).attachEvent("onpropertychange",mi)):"focusout"===T&&Pr()}function si(T){if("selectionchange"===T||"keyup"===T||"keydown"===T)return kt(ze)}function bi(T,R){if("click"===T)return kt(R)}function Ui(T,R){if("input"===T||"change"===T)return kt(R)}var io="function"==typeof Object.is?Object.is:function(T,R){return T===R&&(0!==T||1/T==1/R)||T!=T&&R!=R},vo=Object.prototype.hasOwnProperty;function Bi(T,R){if(io(T,R))return!0;if("object"!=typeof T||null===T||"object"!=typeof R||null===R)return!1;var q=Object.keys(T),Pe=Object.keys(R);if(q.length!==Pe.length)return!1;for(Pe=0;Pe<q.length;Pe++)if(!vo.call(R,q[Pe])||!io(T[q[Pe]],R[q[Pe]]))return!1;return!0}function hi(T){for(;T&&T.firstChild;)T=T.firstChild;return T}function Br(T,R){var q,Pe=hi(T);for(T=0;Pe;){if(3===Pe.nodeType){if(q=T+Pe.textContent.length,T<=R&&q>=R)return{node:Pe,offset:R-T};T=q}e:{for(;Pe;){if(Pe.nextSibling){Pe=Pe.nextSibling;break e}Pe=Pe.parentNode}Pe=void 0}Pe=hi(Pe)}}function G(T,R){return!(!T||!R)&&(T===R||(!T||3!==T.nodeType)&&(R&&3===R.nodeType?G(T,R.parentNode):"contains"in T?T.contains(R):!!T.compareDocumentPosition&&!!(16&T.compareDocumentPosition(R))))}function Se(){for(var T=window,R=Ln();R instanceof T.HTMLIFrameElement;){try{var q="string"==typeof R.contentWindow.location.href}catch(Pe){q=!1}if(!q)break;R=Ln((T=R.contentWindow).document)}return R}function ft(T){var R=T&&T.nodeName&&T.nodeName.toLowerCase();return R&&("input"===R&&("text"===T.type||"search"===T.type||"tel"===T.type||"url"===T.type||"password"===T.type)||"textarea"===R||"true"===T.contentEditable)}var Ft=b&&"documentMode"in document&&11>=document.documentMode,Bt=null,In=null,Xn=null,Sr=!1;function pi(T,R,q){var Pe=q.window===q?q.document:9===q.nodeType?q:q.ownerDocument;Sr||null==Bt||Bt!==Ln(Pe)||(Pe="selectionStart"in(Pe=Bt)&&ft(Pe)?{start:Pe.selectionStart,end:Pe.selectionEnd}:{anchorNode:(Pe=(Pe.ownerDocument&&Pe.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:Pe.anchorOffset,focusNode:Pe.focusNode,focusOffset:Pe.focusOffset},Xn&&Bi(Xn,Pe)||(Xn=Pe,0<(Pe=Zi(In,"onSelect")).length&&(R=new Ua("onSelect","select",null,R,q),T.push({event:R,listeners:Pe}),R.target=Bt)))}ds("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),ds("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),ds(ua,2);for(var Fr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),zr=0;zr<Fr.length;zr++)es.set(Fr[zr],0);m("onMouseEnter",["mouseout","mouseover"]),m("onMouseLeave",["mouseout","mouseover"]),m("onPointerEnter",["pointerout","pointerover"]),m("onPointerLeave",["pointerout","pointerover"]),_("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),_("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),_("onBeforeInput",["compositionend","keypress","textInput","paste"]),_("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),_("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),_("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Un="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),lr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Un));function dr(T,R,q){var Pe=T.type||"unknown-event";T.currentTarget=q,function(tt,on,bn,rr,wr,qr,co,Ko,so){if(Ii.apply(this,arguments),br){if(!br)throw Error(l(198));var gs=Jn;br=!1,Jn=null,nr||(nr=!0,Mr=gs)}}(Pe,R,void 0,T),T.currentTarget=null}function li(T,R){R=0!=(4&R);for(var q=0;q<T.length;q++){var Pe=T[q],tt=Pe.event;Pe=Pe.listeners;e:{var on=void 0;if(R)for(var bn=Pe.length-1;0<=bn;bn--){var rr=Pe[bn],wr=rr.instance,qr=rr.currentTarget;if(rr=rr.listener,wr!==on&&tt.isPropagationStopped())break e;dr(tt,rr,qr),on=wr}else for(bn=0;bn<Pe.length;bn++){if(wr=(rr=Pe[bn]).instance,qr=rr.currentTarget,rr=rr.listener,wr!==on&&tt.isPropagationStopped())break e;dr(tt,rr,qr),on=wr}}}if(nr)throw T=Mr,nr=!1,Mr=null,T}function Ti(T,R){var q=xe(R),Pe=T+"__bubble";q.has(Pe)||(uo(R,T,2,!1),q.add(Pe))}var Ao="_reactListening"+Math.random().toString(36).slice(2);function Qo(T){T[Ao]||(T[Ao]=!0,u.forEach(function(R){lr.has(R)||jo(R,!1,T,null),jo(R,!0,T,null)}))}function jo(T,R,q,Pe){var tt=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,on=q;if("selectionchange"===T&&9!==q.nodeType&&(on=q.ownerDocument),null!==Pe&&!R&&lr.has(T)){if("scroll"!==T)return;tt|=2,on=Pe}var bn=xe(on),rr=T+"__"+(R?"capture":"bubble");bn.has(rr)||(R&&(tt|=4),uo(on,T,tt,R),bn.add(rr))}function uo(T,R,q,Pe){var tt=es.get(R);switch(void 0===tt?2:tt){case 0:tt=Hi;break;case 1:tt=Li;break;default:tt=cs}q=tt.bind(null,R,q,T),tt=void 0,!mr||"touchstart"!==R&&"touchmove"!==R&&"wheel"!==R||(tt=!0),T.addEventListener(R,q,Pe?void 0===tt||{capture:!0,passive:tt}:void 0!==tt&&{passive:tt})}function eo(T,R,q,Pe,tt){var on=Pe;if(0==(1&R)&&0==(2&R)&&null!==Pe)e:for(;;){if(null===Pe)return;var bn=Pe.tag;if(3===bn||4===bn){var rr=Pe.stateNode.containerInfo;if(rr===tt||8===rr.nodeType&&rr.parentNode===tt)break;if(4===bn)for(bn=Pe.return;null!==bn;){var wr=bn.tag;if((3===wr||4===wr)&&((wr=bn.stateNode.containerInfo)===tt||8===wr.nodeType&&wr.parentNode===tt))return;bn=bn.return}for(;null!==rr;){if(null===(bn=Je(rr)))return;if(5===(wr=bn.tag)||6===wr){Pe=on=bn;continue e}rr=rr.parentNode}}Pe=Pe.return}!function(qr,co,Ko){if(An)return qr();An=!0;try{Nn(qr,void 0,void 0)}finally{An=!1,Bn()}}(function(){var qr=on,co=Ir(q),Ko=[];e:{var so=Jo.get(T);if(void 0!==so){var gs=Ua,qs=T;switch(T){case"keypress":if(0===Dl(q))break e;case"keydown":case"keyup":gs=Ea;break;case"focusin":qs="focus",gs=Ne;break;case"focusout":qs="blur",gs=Ne;break;case"beforeblur":case"afterblur":gs=Ne;break;case"click":if(2===q.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":gs=Ce;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":gs=ye;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":gs=Ma;break;case zi:case Go:case Ro:gs=Wt;break;case Bo:gs=va;break;case"scroll":gs=an;break;case"wheel":gs=bs;break;case"copy":case"cut":case"paste":gs=Or;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":gs=ul}var Vs=0!=(4&R),oi=!Vs&&"scroll"===T,Wr=Vs?null!==so?so+"Capture":null:so;Vs=[];for(var ti,Gi=qr;null!==Gi;){var ro=(ti=Gi).stateNode;if(5===ti.tag&&null!==ro&&(ti=ro,null!==Wr&&null!=(ro=ir(Gi,Wr))&&Vs.push(Ho(Gi,ro,ti))),oi)break;Gi=Gi.return}0<Vs.length&&(so=new gs(so,qs,null,q,co),Ko.push({event:so,listeners:Vs}))}}if(0==(7&R)){if(gs="mouseout"===T||"pointerout"===T,(!(so="mouseover"===T||"pointerover"===T)||0!=(16&R)||!(qs=q.relatedTarget||q.fromElement)||!Je(qs)&&!qs[Yl])&&(gs||so)&&(so=co.window===co?co:(so=co.ownerDocument)?so.defaultView||so.parentWindow:window,gs?(gs=qr,null!==(qs=(qs=q.relatedTarget||q.toElement)?Je(qs):null)&&(qs!==(oi=Mi(qs))||5!==qs.tag&&6!==qs.tag)&&(qs=null)):(gs=null,qs=qr),gs!==qs)){if(Vs=Ce,ro="onMouseLeave",Wr="onMouseEnter",Gi="mouse","pointerout"!==T&&"pointerover"!==T||(Vs=ul,ro="onPointerLeave",Wr="onPointerEnter",Gi="pointer"),oi=null==gs?so:we(gs),ti=null==qs?so:we(qs),(so=new Vs(ro,Gi+"leave",gs,q,co)).target=oi,so.relatedTarget=ti,ro=null,Je(co)===qr&&((Vs=new Vs(Wr,Gi+"enter",qs,q,co)).target=ti,Vs.relatedTarget=oi,ro=Vs),oi=ro,gs&&qs)e:{for(Wr=qs,Gi=0,ti=Vs=gs;ti;ti=na(ti))Gi++;for(ti=0,ro=Wr;ro;ro=na(ro))ti++;for(;0<Gi-ti;)Vs=na(Vs),Gi--;for(;0<ti-Gi;)Wr=na(Wr),ti--;for(;Gi--;){if(Vs===Wr||null!==Wr&&Vs===Wr.alternate)break e;Vs=na(Vs),Wr=na(Wr)}Vs=null}else Vs=null;null!==gs&&ha(Ko,so,gs,Vs,!1),null!==qs&&null!==oi&&ha(Ko,oi,qs,Vs,!0)}if("select"===(gs=(so=qr?we(qr):window).nodeName&&so.nodeName.toLowerCase())||"input"===gs&&"file"===so.type)var ia=tn;else if(Vo(so))if(ur)ia=Ui;else{ia=si;var ps=ii}else(gs=so.nodeName)&&"input"===gs.toLowerCase()&&("checkbox"===so.type||"radio"===so.type)&&(ia=bi);switch(ia&&(ia=ia(T,qr))?ja(Ko,ia,q,co):(ps&&ps(T,so,qr),"focusout"===T&&(ps=so._wrapperState)&&ps.controlled&&"number"===so.type&&Yn(so,"number",so.value)),ps=qr?we(qr):window,T){case"focusin":(Vo(ps)||"true"===ps.contentEditable)&&(Bt=ps,In=qr,Xn=null);break;case"focusout":Xn=In=Bt=null;break;case"mousedown":Sr=!0;break;case"contextmenu":case"mouseup":case"dragend":Sr=!1,pi(Ko,q,co);break;case"selectionchange":if(Ft)break;case"keydown":case"keyup":pi(Ko,q,co)}var la;if(Ol)e:{switch(T){case"compositionstart":var Fa="onCompositionStart";break e;case"compositionend":Fa="onCompositionEnd";break e;case"compositionupdate":Fa="onCompositionUpdate";break e}Fa=void 0}else vs?Na(T,q)&&(Fa="onCompositionEnd"):"keydown"===T&&229===q.keyCode&&(Fa="onCompositionStart");Fa&&(il&&"ko"!==q.locale&&(vs||"onCompositionStart"!==Fa?"onCompositionEnd"===Fa&&vs&&(la=Ml()):(xa="value"in(da=co)?da.value:da.textContent,vs=!0)),0<(ps=Zi(qr,Fa)).length&&(Fa=new Ni(Fa,T,null,q,co),Ko.push({event:Fa,listeners:ps}),(la||null!==(la=Di(q)))&&(Fa.data=la))),(la=Ja?function(Gs,Tl){switch(Gs){case"compositionend":return Di(Tl);case"keypress":return 32!==Tl.which?null:(Bl=!0,Il);case"textInput":return(Gs=Tl.data)===Il&&Bl?null:Gs;default:return null}}(T,q):function(Gs,Tl){if(vs)return"compositionend"===Gs||!Ol&&Na(Gs,Tl)?(Gs=Ml(),Ra=xa=da=null,vs=!1,Gs):null;switch(Gs){case"paste":return null;case"keypress":if(!(Tl.ctrlKey||Tl.altKey||Tl.metaKey)||Tl.ctrlKey&&Tl.altKey){if(Tl.char&&1<Tl.char.length)return Tl.char;if(Tl.which)return String.fromCharCode(Tl.which)}return null;case"compositionend":return il&&"ko"!==Tl.locale?null:Tl.data;default:return null}}(T,q))&&0<(qr=Zi(qr,"onBeforeInput")).length&&(co=new Ni("onBeforeInput","beforeinput",null,q,co),Ko.push({event:co,listeners:qr}),co.data=la)}li(Ko,R)})}function Ho(T,R,q){return{instance:T,listener:R,currentTarget:q}}function Zi(T,R){for(var q=R+"Capture",Pe=[];null!==T;){var tt=T,on=tt.stateNode;5===tt.tag&&null!==on&&(tt=on,null!=(on=ir(T,q))&&Pe.unshift(Ho(T,on,tt)),null!=(on=ir(T,R))&&Pe.push(Ho(T,on,tt))),T=T.return}return Pe}function na(T){if(null===T)return null;do{T=T.return}while(T&&5!==T.tag);return T||null}function ha(T,R,q,Pe,tt){for(var on=R._reactName,bn=[];null!==q&&q!==Pe;){var rr=q,wr=rr.alternate,qr=rr.stateNode;if(null!==wr&&wr===Pe)break;5===rr.tag&&null!==qr&&(rr=qr,tt?null!=(wr=ir(q,on))&&bn.unshift(Ho(q,wr,rr)):tt||null!=(wr=ir(q,on))&&bn.push(Ho(q,wr,rr))),q=q.return}0!==bn.length&&T.push({event:R,listeners:bn})}function fl(){}var Hn=null,Es=null;function Ll(T,R){switch(T){case"button":case"input":case"select":case"textarea":return!!R.autoFocus}return!1}function Hl(T,R){return"textarea"===T||"option"===T||"noscript"===T||"string"==typeof R.children||"number"==typeof R.children||"object"==typeof R.dangerouslySetInnerHTML&&null!==R.dangerouslySetInnerHTML&&null!=R.dangerouslySetInnerHTML.__html}var mo="function"==typeof setTimeout?setTimeout:void 0,As="function"==typeof clearTimeout?clearTimeout:void 0;function qc(T){(1===T.nodeType||9===T.nodeType&&null!=(T=T.body))&&(T.textContent="")}function yc(T){for(;null!=T;T=T.nextSibling){var R=T.nodeType;if(1===R||3===R)break}return T}function fc(T){T=T.previousSibling;for(var R=0;T;){if(8===T.nodeType){var q=T.data;if("$"===q||"$!"===q||"$?"===q){if(0===R)return T;R--}else"/$"===q&&R++}T=T.previousSibling}return null}var Fl=0,bl=Math.random().toString(36).slice(2),ql="__reactFiber$"+bl,kl="__reactProps$"+bl,Yl="__reactContainer$"+bl,ru="__reactEvents$"+bl;function Je(T){var R=T[ql];if(R)return R;for(var q=T.parentNode;q;){if(R=q[Yl]||q[ql]){if(q=R.alternate,null!==R.child||null!==q&&null!==q.child)for(T=fc(T);null!==T;){if(q=T[ql])return q;T=fc(T)}return R}q=(T=q).parentNode}return null}function Fe(T){return!(T=T[ql]||T[Yl])||5!==T.tag&&6!==T.tag&&13!==T.tag&&3!==T.tag?null:T}function we(T){if(5===T.tag||6===T.tag)return T.stateNode;throw Error(l(33))}function Ot(T){return T[kl]||null}function xe(T){var R=T[ru];return void 0===R&&(R=T[ru]=new Set),R}var ke=[],Te=-1;function ge(T){return{current:T}}function Re(T){0>Te||(T.current=ke[Te],ke[Te]=null,Te--)}function Be(T,R){Te++,ke[Te]=T.current,T.current=R}var xt={},Dt=ge(xt),en=ge(!1),vn=xt;function Gn(T,R){var q=T.type.contextTypes;if(!q)return xt;var Pe=T.stateNode;if(Pe&&Pe.__reactInternalMemoizedUnmaskedChildContext===R)return Pe.__reactInternalMemoizedMaskedChildContext;var tt,on={};for(tt in q)on[tt]=R[tt];return Pe&&((T=T.stateNode).__reactInternalMemoizedUnmaskedChildContext=R,T.__reactInternalMemoizedMaskedChildContext=on),on}function kn(T){return null!=T.childContextTypes}function zn(){Re(en),Re(Dt)}function jr(T,R,q){if(Dt.current!==xt)throw Error(l(168));Be(Dt,R),Be(en,q)}function kr(T,R,q){var Pe=T.stateNode;if(T=R.childContextTypes,"function"!=typeof Pe.getChildContext)return q;for(var tt in Pe=Pe.getChildContext())if(!(tt in T))throw Error(l(108,dt(R)||"Unknown",tt));return s({},q,Pe)}function Gr(T){return T=(T=T.stateNode)&&T.__reactInternalMemoizedMergedChildContext||xt,vn=Dt.current,Be(Dt,T),Be(en,en.current),!0}function ci(T,R,q){var Pe=T.stateNode;if(!Pe)throw Error(l(169));q?(T=kr(T,R,vn),Pe.__reactInternalMemoizedMergedChildContext=T,Re(en),Re(Dt),Be(Dt,T)):Re(en),Be(en,q)}var Ci=null,vi=null,Ai=a.unstable_runWithPriority,fo=a.unstable_scheduleCallback,po=a.unstable_cancelCallback,No=a.unstable_shouldYield,wo=a.unstable_requestPaint,oo=a.unstable_now,Oo=a.unstable_getCurrentPriorityLevel,Ki=a.unstable_ImmediatePriority,Vi=a.unstable_UserBlockingPriority,Wo=a.unstable_NormalPriority,Po=a.unstable_LowPriority,ho=a.unstable_IdlePriority,xo={},Ps=void 0!==wo?wo:function(){},_n=null,Hs=null,Pa=!1,Oa=oo(),lo=1e4>Oa?oo:function(){return oo()-Oa};function ra(){switch(Oo()){case Ki:return 99;case Vi:return 98;case Wo:return 97;case Po:return 96;case ho:return 95;default:throw Error(l(332))}}function ns(T){switch(T){case 99:return Ki;case 98:return Vi;case 97:return Wo;case 96:return Po;case 95:return ho;default:throw Error(l(332))}}function Aa(T,R){return T=ns(T),Ai(T,R)}function zs(T,R,q){return T=ns(T),fo(T,R,q)}function La(){if(null!==Hs){var T=Hs;Hs=null,po(T)}ws()}function ws(){if(!Pa&&null!==_n){Pa=!0;var T=0;try{var R=_n;Aa(99,function(){for(;T<R.length;T++){var q=R[T];do{q=q(!0)}while(null!==q)}}),_n=null}catch(q){throw null!==_n&&(_n=_n.slice(T+1)),fo(Ki,La),q}finally{Pa=!1}}}var Ds=J.ReactCurrentBatchConfig;function Ws(T,R){if(T&&T.defaultProps){for(var q in R=s({},R),T=T.defaultProps)void 0===R[q]&&(R[q]=T[q]);return R}return R}var Ba=ge(null),Zs=null,Ya=null,$a=null;function Za(){$a=Ya=Zs=null}function Ha(T){var R=Ba.current;Re(Ba),T.type._context._currentValue=R}function ol(T,R){for(;null!==T;){var q=T.alternate;if((T.childLanes&R)===R){if(null===q||(q.childLanes&R)===R)break;q.childLanes|=R}else T.childLanes|=R,null!==q&&(q.childLanes|=R);T=T.return}}function Us(T,R){Zs=T,$a=Ya=null,null!==(T=T.dependencies)&&null!==T.firstContext&&(0!=(T.lanes&R)&&(Is=!0),T.firstContext=null)}function sl(T,R){if($a!==T&&!1!==R&&0!==R)if("number"==typeof R&&1073741823!==R||($a=T,R=1073741823),R={context:T,observedBits:R,next:null},null===Ya){if(null===Zs)throw Error(l(308));Ya=R,Zs.dependencies={lanes:0,firstContext:R,responders:null}}else Ya=Ya.next=R;return T._currentValue}var ac=!1;function Zl(T){T.updateQueue={baseState:T.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function lc(T,R){R.updateQueue===(T=T.updateQueue)&&(R.updateQueue={baseState:T.baseState,firstBaseUpdate:T.firstBaseUpdate,lastBaseUpdate:T.lastBaseUpdate,shared:T.shared,effects:T.effects})}function Va(T,R){return{eventTime:T,lane:R,tag:0,payload:null,callback:null,next:null}}function ki(T,R){if(null!==(T=T.updateQueue)){var q=(T=T.shared).pending;null===q?R.next=R:(R.next=q.next,q.next=R),T.pending=R}}function Oc(T,R){var q=T.updateQueue,Pe=T.alternate;if(null===Pe||q!==(Pe=Pe.updateQueue))null===(T=q.lastBaseUpdate)?q.firstBaseUpdate=R:T.next=R,q.lastBaseUpdate=R;else{var tt=null,on=null;if(null!==(q=q.firstBaseUpdate)){do{var bn={eventTime:q.eventTime,lane:q.lane,tag:q.tag,payload:q.payload,callback:q.callback,next:null};null===on?tt=on=bn:on=on.next=bn,q=q.next}while(null!==q);null===on?tt=on=R:on=on.next=R}else tt=on=R;T.updateQueue=q={baseState:Pe.baseState,firstBaseUpdate:tt,lastBaseUpdate:on,shared:Pe.shared,effects:Pe.effects}}}function pc(T,R,q,Pe){var tt=T.updateQueue;ac=!1;var on=tt.firstBaseUpdate,bn=tt.lastBaseUpdate,rr=tt.shared.pending;if(null!==rr){tt.shared.pending=null;var wr=rr,qr=wr.next;wr.next=null,null===bn?on=qr:bn.next=qr,bn=wr;var co=T.alternate;if(null!==co){var Ko=(co=co.updateQueue).lastBaseUpdate;Ko!==bn&&(null===Ko?co.firstBaseUpdate=qr:Ko.next=qr,co.lastBaseUpdate=wr)}}if(null!==on){for(Ko=tt.baseState,bn=0,co=qr=wr=null;;){var so=on.eventTime;if((Pe&(rr=on.lane))===rr){null!==co&&(co=co.next={eventTime:so,lane:0,tag:on.tag,payload:on.payload,callback:on.callback,next:null});e:{var gs=T,qs=on;switch(rr=R,so=q,qs.tag){case 1:if("function"==typeof(gs=qs.payload)){Ko=gs.call(so,Ko,rr);break e}Ko=gs;break e;case 3:gs.flags=-4097&gs.flags|64;case 0:if(null==(rr="function"==typeof(gs=qs.payload)?gs.call(so,Ko,rr):gs))break e;Ko=s({},Ko,rr);break e;case 2:ac=!0}}null!==on.callback&&(T.flags|=32,null===(rr=tt.effects)?tt.effects=[on]:rr.push(on))}else so={eventTime:so,lane:rr,tag:on.tag,payload:on.payload,callback:on.callback,next:null},null===co?(qr=co=so,wr=Ko):co=co.next=so,bn|=rr;if(null===(on=on.next)){if(null===(rr=tt.shared.pending))break;on=rr.next,rr.next=null,tt.lastBaseUpdate=rr,tt.shared.pending=null}}null===co&&(wr=Ko),tt.baseState=wr,tt.firstBaseUpdate=qr,tt.lastBaseUpdate=co,pd|=bn,T.lanes=bn,T.memoizedState=Ko}}function pl(T,R,q){if(T=R.effects,R.effects=null,null!==T)for(R=0;R<T.length;R++){var Pe=T[R],tt=Pe.callback;if(null!==tt){if(Pe.callback=null,Pe=q,"function"!=typeof tt)throw Error(l(191,tt));tt.call(Pe)}}}var _a=(new e.Component).refs;function iu(T,R,q,Pe){q=null==(q=q(Pe,R=T.memoizedState))?R:s({},R,q),T.memoizedState=q,0===T.lanes&&(T.updateQueue.baseState=q)}var cc={isMounted:function(T){return!!(T=T._reactInternals)&&Mi(T)===T},enqueueSetState:function(T,R,q){T=T._reactInternals;var Pe=mc(),tt=jl(T),on=Va(Pe,tt);on.payload=R,null!=q&&(on.callback=q),ki(T,on),gd(T,tt,Pe)},enqueueReplaceState:function(T,R,q){T=T._reactInternals;var Pe=mc(),tt=jl(T),on=Va(Pe,tt);on.tag=1,on.payload=R,null!=q&&(on.callback=q),ki(T,on),gd(T,tt,Pe)},enqueueForceUpdate:function(T,R){T=T._reactInternals;var q=mc(),Pe=jl(T),tt=Va(q,Pe);tt.tag=2,null!=R&&(tt.callback=R),ki(T,tt),gd(T,Pe,q)}};function Ac(T,R,q,Pe,tt,on,bn){return"function"==typeof(T=T.stateNode).shouldComponentUpdate?T.shouldComponentUpdate(Pe,on,bn):!(R.prototype&&R.prototype.isPureReactComponent&&Bi(q,Pe)&&Bi(tt,on))}function bu(T,R,q){var Pe=!1,tt=xt,on=R.contextType;return"object"==typeof on&&null!==on?on=sl(on):(tt=kn(R)?vn:Dt.current,on=(Pe=null!=(Pe=R.contextTypes))?Gn(T,tt):xt),R=new R(q,on),T.memoizedState=null!=R.state?R.state:null,R.updater=cc,T.stateNode=R,R._reactInternals=T,Pe&&((T=T.stateNode).__reactInternalMemoizedUnmaskedChildContext=tt,T.__reactInternalMemoizedMaskedChildContext=on),R}function ou(T,R,q,Pe){T=R.state,"function"==typeof R.componentWillReceiveProps&&R.componentWillReceiveProps(q,Pe),"function"==typeof R.UNSAFE_componentWillReceiveProps&&R.UNSAFE_componentWillReceiveProps(q,Pe),R.state!==T&&cc.enqueueReplaceState(R,R.state,null)}function xl(T,R,q,Pe){var tt=T.stateNode;tt.props=q,tt.state=T.memoizedState,tt.refs=_a,Zl(T);var on=R.contextType;"object"==typeof on&&null!==on?tt.context=sl(on):(on=kn(R)?vn:Dt.current,tt.context=Gn(T,on)),pc(T,q,tt,Pe),tt.state=T.memoizedState,"function"==typeof(on=R.getDerivedStateFromProps)&&(iu(T,R,on,q),tt.state=T.memoizedState),"function"==typeof R.getDerivedStateFromProps||"function"==typeof tt.getSnapshotBeforeUpdate||"function"!=typeof tt.UNSAFE_componentWillMount&&"function"!=typeof tt.componentWillMount||(R=tt.state,"function"==typeof tt.componentWillMount&&tt.componentWillMount(),"function"==typeof tt.UNSAFE_componentWillMount&&tt.UNSAFE_componentWillMount(),R!==tt.state&&cc.enqueueReplaceState(tt,tt.state,null),pc(T,q,tt,Pe),tt.state=T.memoizedState),"function"==typeof tt.componentDidMount&&(T.flags|=4)}var Vl=Array.isArray;function el(T,R,q){if(null!==(T=q.ref)&&"function"!=typeof T&&"object"!=typeof T){if(q._owner){if(q=q._owner){if(1!==q.tag)throw Error(l(309));var Pe=q.stateNode}if(!Pe)throw Error(l(147,T));var tt=""+T;return null!==R&&null!==R.ref&&"function"==typeof R.ref&&R.ref._stringRef===tt?R.ref:((R=function(on){var bn=Pe.refs;bn===_a&&(bn=Pe.refs={}),null===on?delete bn[tt]:bn[tt]=on})._stringRef=tt,R)}if("string"!=typeof T)throw Error(l(284));if(!q._owner)throw Error(l(290,T))}return T}function tl(T,R){if("textarea"!==T.type)throw Error(l(31,"[object Object]"===Object.prototype.toString.call(R)?"object with keys {"+Object.keys(R).join(", ")+"}":R))}function ml(T){function R(oi,Wr){if(T){var ti=oi.lastEffect;null!==ti?(ti.nextEffect=Wr,oi.lastEffect=Wr):oi.firstEffect=oi.lastEffect=Wr,Wr.nextEffect=null,Wr.flags=8}}function q(oi,Wr){if(!T)return null;for(;null!==Wr;)R(oi,Wr),Wr=Wr.sibling;return null}function Pe(oi,Wr){for(oi=new Map;null!==Wr;)oi.set(null!==Wr.key?Wr.key:Wr.index,Wr),Wr=Wr.sibling;return oi}function tt(oi,Wr){return(oi=Ed(oi,Wr)).index=0,oi.sibling=null,oi}function on(oi,Wr,ti){return oi.index=ti,T?null!==(ti=oi.alternate)?(ti=ti.index)<Wr?(oi.flags=2,Wr):ti:(oi.flags=2,Wr):Wr}function bn(oi){return T&&null===oi.alternate&&(oi.flags=2),oi}function rr(oi,Wr,ti,Gi){return null===Wr||6!==Wr.tag?((Wr=jf(ti,oi.mode,Gi)).return=oi,Wr):((Wr=tt(Wr,ti)).return=oi,Wr)}function wr(oi,Wr,ti,Gi){return null!==Wr&&Wr.elementType===ti.type?((Gi=tt(Wr,ti.props)).ref=el(oi,Wr,ti),Gi.return=oi,Gi):((Gi=Sc(ti.type,ti.key,ti.props,null,oi.mode,Gi)).ref=el(oi,Wr,ti),Gi.return=oi,Gi)}function qr(oi,Wr,ti,Gi){return null===Wr||4!==Wr.tag||Wr.stateNode.containerInfo!==ti.containerInfo||Wr.stateNode.implementation!==ti.implementation?((Wr=Dd(ti,oi.mode,Gi)).return=oi,Wr):((Wr=tt(Wr,ti.children||[])).return=oi,Wr)}function co(oi,Wr,ti,Gi,ro){return null===Wr||7!==Wr.tag?((Wr=Mc(ti,oi.mode,Gi,ro)).return=oi,Wr):((Wr=tt(Wr,ti)).return=oi,Wr)}function Ko(oi,Wr,ti){if("string"==typeof Wr||"number"==typeof Wr)return(Wr=jf(""+Wr,oi.mode,ti)).return=oi,Wr;if("object"==typeof Wr&&null!==Wr){switch(Wr.$$typeof){case Y:return(ti=Sc(Wr.type,Wr.key,Wr.props,null,oi.mode,ti)).ref=el(oi,null,Wr),ti.return=oi,ti;case ie:return(Wr=Dd(Wr,oi.mode,ti)).return=oi,Wr}if(Vl(Wr)||At(Wr))return(Wr=Mc(Wr,oi.mode,ti,null)).return=oi,Wr;tl(oi,Wr)}return null}function so(oi,Wr,ti,Gi){var ro=null!==Wr?Wr.key:null;if("string"==typeof ti||"number"==typeof ti)return null!==ro?null:rr(oi,Wr,""+ti,Gi);if("object"==typeof ti&&null!==ti){switch(ti.$$typeof){case Y:return ti.key===ro?ti.type===oe?co(oi,Wr,ti.props.children,Gi,ro):wr(oi,Wr,ti,Gi):null;case ie:return ti.key===ro?qr(oi,Wr,ti,Gi):null}if(Vl(ti)||At(ti))return null!==ro?null:co(oi,Wr,ti,Gi,null);tl(oi,ti)}return null}function gs(oi,Wr,ti,Gi,ro){if("string"==typeof Gi||"number"==typeof Gi)return rr(Wr,oi=oi.get(ti)||null,""+Gi,ro);if("object"==typeof Gi&&null!==Gi){switch(Gi.$$typeof){case Y:return oi=oi.get(null===Gi.key?ti:Gi.key)||null,Gi.type===oe?co(Wr,oi,Gi.props.children,ro,Gi.key):wr(Wr,oi,Gi,ro);case ie:return qr(Wr,oi=oi.get(null===Gi.key?ti:Gi.key)||null,Gi,ro)}if(Vl(Gi)||At(Gi))return co(Wr,oi=oi.get(ti)||null,Gi,ro,null);tl(Wr,Gi)}return null}return function(oi,Wr,ti,Gi){var ro="object"==typeof ti&&null!==ti&&ti.type===oe&&null===ti.key;ro&&(ti=ti.props.children);var ia="object"==typeof ti&&null!==ti;if(ia)switch(ti.$$typeof){case Y:e:{for(ia=ti.key,ro=Wr;null!==ro;){if(ro.key===ia){switch(ro.tag){case 7:if(ti.type===oe){q(oi,ro.sibling),(Wr=tt(ro,ti.props.children)).return=oi,oi=Wr;break e}break;default:if(ro.elementType===ti.type){q(oi,ro.sibling),(Wr=tt(ro,ti.props)).ref=el(oi,ro,ti),Wr.return=oi,oi=Wr;break e}}q(oi,ro);break}R(oi,ro),ro=ro.sibling}ti.type===oe?((Wr=Mc(ti.props.children,oi.mode,Gi,ti.key)).return=oi,oi=Wr):((Gi=Sc(ti.type,ti.key,ti.props,null,oi.mode,Gi)).ref=el(oi,Wr,ti),Gi.return=oi,oi=Gi)}return bn(oi);case ie:e:{for(ro=ti.key;null!==Wr;){if(Wr.key===ro){if(4===Wr.tag&&Wr.stateNode.containerInfo===ti.containerInfo&&Wr.stateNode.implementation===ti.implementation){q(oi,Wr.sibling),(Wr=tt(Wr,ti.children||[])).return=oi,oi=Wr;break e}q(oi,Wr);break}R(oi,Wr),Wr=Wr.sibling}(Wr=Dd(ti,oi.mode,Gi)).return=oi,oi=Wr}return bn(oi)}if("string"==typeof ti||"number"==typeof ti)return ti=""+ti,null!==Wr&&6===Wr.tag?(q(oi,Wr.sibling),(Wr=tt(Wr,ti)).return=oi,oi=Wr):(q(oi,Wr),(Wr=jf(ti,oi.mode,Gi)).return=oi,oi=Wr),bn(oi);if(Vl(ti))return function(oi,Wr,ti,Gi){for(var ro=null,ia=null,ps=Wr,la=Wr=0,Fa=null;null!==ps&&la<ti.length;la++){ps.index>la?(Fa=ps,ps=null):Fa=ps.sibling;var Gs=so(oi,ps,ti[la],Gi);if(null===Gs){null===ps&&(ps=Fa);break}T&&ps&&null===Gs.alternate&&R(oi,ps),Wr=on(Gs,Wr,la),null===ia?ro=Gs:ia.sibling=Gs,ia=Gs,ps=Fa}if(la===ti.length)return q(oi,ps),ro;if(null===ps){for(;la<ti.length;la++)null!==(ps=Ko(oi,ti[la],Gi))&&(Wr=on(ps,Wr,la),null===ia?ro=ps:ia.sibling=ps,ia=ps);return ro}for(ps=Pe(oi,ps);la<ti.length;la++)null!==(Fa=gs(ps,oi,la,ti[la],Gi))&&(T&&null!==Fa.alternate&&ps.delete(null===Fa.key?la:Fa.key),Wr=on(Fa,Wr,la),null===ia?ro=Fa:ia.sibling=Fa,ia=Fa);return T&&ps.forEach(function(Tl){return R(oi,Tl)}),ro}(oi,Wr,ti,Gi);if(At(ti))return function(oi,Wr,ti,Gi){var ro=At(ti);if("function"!=typeof ro)throw Error(l(150));if(null==(ti=ro.call(ti)))throw Error(l(151));for(var ia=ro=null,ps=Wr,la=Wr=0,Fa=null,Gs=ti.next();null!==ps&&!Gs.done;la++,Gs=ti.next()){ps.index>la?(Fa=ps,ps=null):Fa=ps.sibling;var Tl=so(oi,ps,Gs.value,Gi);if(null===Tl){null===ps&&(ps=Fa);break}T&&ps&&null===Tl.alternate&&R(oi,ps),Wr=on(Tl,Wr,la),null===ia?ro=Tl:ia.sibling=Tl,ia=Tl,ps=Fa}if(Gs.done)return q(oi,ps),ro;if(null===ps){for(;!Gs.done;la++,Gs=ti.next())null!==(Gs=Ko(oi,Gs.value,Gi))&&(Wr=on(Gs,Wr,la),null===ia?ro=Gs:ia.sibling=Gs,ia=Gs);return ro}for(ps=Pe(oi,ps);!Gs.done;la++,Gs=ti.next())null!==(Gs=gs(ps,oi,la,Gs.value,Gi))&&(T&&null!==Gs.alternate&&ps.delete(null===Gs.key?la:Gs.key),Wr=on(Gs,Wr,la),null===ia?ro=Gs:ia.sibling=Gs,ia=Gs);return T&&ps.forEach(function(Vp){return R(oi,Vp)}),ro}(oi,Wr,ti,Gi);if(ia&&tl(oi,ti),void 0===ti&&!ro)switch(oi.tag){case 1:case 22:case 0:case 11:case 15:throw Error(l(152,dt(oi.type)||"Component"))}return q(oi,Wr)}}var bc=ml(!0),vl=ml(!1),hc={},Jl=ge(hc),nl=ge(hc),yl=ge(hc);function El(T){if(T===hc)throw Error(l(174));return T}function p(T,R){switch(Be(yl,R),Be(nl,T),Be(Jl,hc),T=R.nodeType){case 9:case 11:R=(R=R.documentElement)?R.namespaceURI:Dn(null,"");break;default:R=Dn(R=(T=8===T?R.parentNode:R).namespaceURI||null,T=T.tagName)}Re(Jl),Be(Jl,R)}function E(){Re(Jl),Re(nl),Re(yl)}function N(T){El(yl.current);var R=El(Jl.current),q=Dn(R,T.type);R!==q&&(Be(nl,T),Be(Jl,q))}function $(T){nl.current===T&&(Re(Jl),Re(nl))}var Q=ge(0);function de(T){for(var R=T;null!==R;){if(13===R.tag){var q=R.memoizedState;if(null!==q&&(null===(q=q.dehydrated)||"$?"===q.data||"$!"===q.data))return R}else if(19===R.tag&&void 0!==R.memoizedProps.revealOrder){if(0!=(64&R.flags))return R}else if(null!==R.child){R.child.return=R,R=R.child;continue}if(R===T)break;for(;null===R.sibling;){if(null===R.return||R.return===T)return null;R=R.return}R.sibling.return=R.return,R=R.sibling}return null}var ve=null,qe=null,De=!1;function _t(T,R){var q=Zc(5,null,null,0);q.elementType="DELETED",q.type="DELETED",q.stateNode=R,q.return=T,q.flags=8,null!==T.lastEffect?(T.lastEffect.nextEffect=q,T.lastEffect=q):T.firstEffect=T.lastEffect=q}function Yt(T,R){switch(T.tag){case 5:return null!==(R=1!==R.nodeType||T.type.toLowerCase()!==R.nodeName.toLowerCase()?null:R)&&(T.stateNode=R,!0);case 6:return null!==(R=""===T.pendingProps||3!==R.nodeType?null:R)&&(T.stateNode=R,!0);case 13:default:return!1}}function Zt(T){if(De){var R=qe;if(R){var q=R;if(!Yt(T,R)){if(!(R=yc(q.nextSibling))||!Yt(T,R))return T.flags=-1025&T.flags|2,De=!1,void(ve=T);_t(ve,q)}ve=T,qe=yc(R.firstChild)}else T.flags=-1025&T.flags|2,De=!1,ve=T}}function wn(T){for(T=T.return;null!==T&&5!==T.tag&&3!==T.tag&&13!==T.tag;)T=T.return;ve=T}function cr(T){if(T!==ve)return!1;if(!De)return wn(T),De=!0,!1;var R=T.type;if(5!==T.tag||"head"!==R&&"body"!==R&&!Hl(R,T.memoizedProps))for(R=qe;R;)_t(T,R),R=yc(R.nextSibling);if(wn(T),13===T.tag){if(!(T=null!==(T=T.memoizedState)?T.dehydrated:null))throw Error(l(317));e:{for(T=T.nextSibling,R=0;T;){if(8===T.nodeType){var q=T.data;if("/$"===q){if(0===R){qe=yc(T.nextSibling);break e}R--}else"$"!==q&&"$!"!==q&&"$?"!==q||R++}T=T.nextSibling}qe=null}}else qe=ve?yc(T.stateNode.nextSibling):null;return!0}function sr(){qe=ve=null,De=!1}var Tr=[];function Yr(){for(var T=0;T<Tr.length;T++)Tr[T]._workInProgressVersionPrimary=null;Tr.length=0}var Pi=J.ReactCurrentDispatcher,yo=J.ReactCurrentBatchConfig,Co=0,Xo=null,ts=null,_s=null,Ts=!1,Ms=!1;function xs(){throw Error(l(321))}function ya(T,R){if(null===R)return!1;for(var q=0;q<R.length&&q<T.length;q++)if(!io(T[q],R[q]))return!1;return!0}function hl(T,R,q,Pe,tt,on){if(Co=on,Xo=R,R.memoizedState=null,R.updateQueue=null,R.lanes=0,Pi.current=null===T||null===T.memoizedState?ef:Od,T=q(Pe,tt),Ms){on=0;do{if(Ms=!1,!(25>on))throw Error(l(301));on+=1,_s=ts=null,R.updateQueue=null,Pi.current=Eu,T=q(Pe,tt)}while(Ms)}if(Pi.current=xu,R=null!==ts&&null!==ts.next,Co=0,_s=ts=Xo=null,Ts=!1,R)throw Error(l(300));return T}function Ga(){var T={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===_s?Xo.memoizedState=_s=T:_s=_s.next=T,_s}function Qa(){if(null===ts){var T=Xo.alternate;T=null!==T?T.memoizedState:null}else T=ts.next;var R=null===_s?Xo.memoizedState:_s.next;if(null!==R)_s=R,ts=T;else{if(null===T)throw Error(l(310));T={memoizedState:(ts=T).memoizedState,baseState:ts.baseState,baseQueue:ts.baseQueue,queue:ts.queue,next:null},null===_s?Xo.memoizedState=_s=T:_s=_s.next=T}return _s}function rl(T,R){return"function"==typeof R?R(T):R}function Gl(T){var R=Qa(),q=R.queue;if(null===q)throw Error(l(311));q.lastRenderedReducer=T;var Pe=ts,tt=Pe.baseQueue,on=q.pending;if(null!==on){if(null!==tt){var bn=tt.next;tt.next=on.next,on.next=bn}Pe.baseQueue=tt=on,q.pending=null}if(null!==tt){Pe=Pe.baseState;var rr=bn=on=null,wr=tt=tt.next;do{var qr=wr.lane;if((Co&qr)===qr)null!==rr&&(rr=rr.next={lane:0,action:wr.action,eagerReducer:wr.eagerReducer,eagerState:wr.eagerState,next:null}),Pe=wr.eagerReducer===T?wr.eagerState:T(Pe,wr.action);else{var co={lane:qr,action:wr.action,eagerReducer:wr.eagerReducer,eagerState:wr.eagerState,next:null};null===rr?(bn=rr=co,on=Pe):rr=rr.next=co,Xo.lanes|=qr,pd|=qr}wr=wr.next}while(null!==wr&&wr!==tt);null===rr?on=Pe:rr.next=bn,io(Pe,R.memoizedState)||(Is=!0),R.memoizedState=Pe,R.baseState=on,R.baseQueue=rr,q.lastRenderedState=Pe}return[R.memoizedState,q.dispatch]}function _c(T){var R=Qa(),q=R.queue;if(null===q)throw Error(l(311));q.lastRenderedReducer=T;var Pe=q.dispatch,tt=q.pending,on=R.memoizedState;if(null!==tt){q.pending=null;var bn=tt=tt.next;do{on=T(on,bn.action),bn=bn.next}while(bn!==tt);io(on,R.memoizedState)||(Is=!0),R.memoizedState=on,null===R.baseQueue&&(R.baseState=on),q.lastRenderedState=on}return[on,Pe]}function $s(T,R,q){var Pe=R._getVersion;Pe=Pe(R._source);var tt=R._workInProgressVersionPrimary;if(null!==tt?T=tt===Pe:(T=(Co&(T=T.mutableReadLanes))===T)&&(R._workInProgressVersionPrimary=Pe,Tr.push(R)),T)return q(R._source);throw Tr.push(R),Error(l(350))}function X(T,R,q,Pe){var tt=Kl;if(null===tt)throw Error(l(349));var on=R._getVersion,bn=on(R._source),rr=Pi.current,wr=rr.useState(function(){return $s(tt,R,q)}),qr=wr[1],co=wr[0];wr=_s;var Ko=T.memoizedState,so=Ko.refs,gs=so.getSnapshot,qs=Ko.source;Ko=Ko.subscribe;var Vs=Xo;return T.memoizedState={refs:so,source:R,subscribe:Pe},rr.useEffect(function(){so.getSnapshot=q,so.setSnapshot=qr;var oi=on(R._source);if(!io(bn,oi)){oi=q(R._source),io(co,oi)||(qr(oi),oi=jl(Vs),tt.mutableReadLanes|=oi&tt.pendingLanes),tt.entangledLanes|=oi=tt.mutableReadLanes;for(var Wr=tt.entanglements,ti=oi;0<ti;){var Gi=31-Tn(ti),ro=1<<Gi;Wr[Gi]|=oi,ti&=~ro}}},[q,R,Pe]),rr.useEffect(function(){return Pe(R._source,function(){var oi=so.getSnapshot,Wr=so.setSnapshot;try{Wr(oi(R._source));var ti=jl(Vs);tt.mutableReadLanes|=ti&tt.pendingLanes}catch(Gi){Wr(function(){throw Gi})}})},[R,Pe]),io(gs,q)&&io(qs,R)&&io(Ko,Pe)||((T={pending:null,dispatch:null,lastRenderedReducer:rl,lastRenderedState:co}).dispatch=qr=ad.bind(null,Xo,T),wr.queue=T,wr.baseQueue=null,co=$s(tt,R,q),wr.memoizedState=wr.baseState=co),co}function me(T,R,q){return X(Qa(),T,R,q)}function yt(T){var R=Ga();return"function"==typeof T&&(T=T()),R.memoizedState=R.baseState=T,T=(T=R.queue={pending:null,dispatch:null,lastRenderedReducer:rl,lastRenderedState:T}).dispatch=ad.bind(null,Xo,T),[R.memoizedState,T]}function qt(T,R,q,Pe){return T={tag:T,create:R,destroy:q,deps:Pe,next:null},null===(R=Xo.updateQueue)?(Xo.updateQueue=R={lastEffect:null},R.lastEffect=T.next=T):null===(q=R.lastEffect)?R.lastEffect=T.next=T:(Pe=q.next,q.next=T,T.next=Pe,R.lastEffect=T),T}function xn(T){return T={current:T},Ga().memoizedState=T}function Ar(){return Qa().memoizedState}function xi(T,R,q,Pe){var tt=Ga();Xo.flags|=T,tt.memoizedState=qt(1|R,q,void 0,void 0===Pe?null:Pe)}function fs(T,R,q,Pe){var tt=Qa();Pe=void 0===Pe?null:Pe;var on=void 0;if(null!==ts){var bn=ts.memoizedState;if(on=bn.destroy,null!==Pe&&ya(Pe,bn.deps))return void qt(R,q,on,Pe)}Xo.flags|=T,tt.memoizedState=qt(1|R,q,on,Pe)}function aa(T,R){return xi(516,4,T,R)}function za(T,R){return fs(516,4,T,R)}function gc(T,R){return fs(4,2,T,R)}function Ql(T,R){return"function"==typeof R?(T=T(),R(T),function(){R(null)}):null!=R?(T=T(),R.current=T,function(){R.current=null}):void 0}function Ec(T,R,q){return q=null!=q?q.concat([T]):null,fs(4,2,Ql.bind(null,R,T),q)}function Gu(){}function Sd(T,R){var q=Qa();R=void 0===R?null:R;var Pe=q.memoizedState;return null!==Pe&&null!==R&&ya(R,Pe[1])?Pe[0]:(q.memoizedState=[T,R],T)}function rp(T,R){var q=Qa();R=void 0===R?null:R;var Pe=q.memoizedState;return null!==Pe&&null!==R&&ya(R,Pe[1])?Pe[0]:(T=T(),q.memoizedState=[T,R],T)}function Md(T,R){var q=ra();Aa(98>q?98:q,function(){T(!0)}),Aa(97<q?97:q,function(){var Pe=yo.transition;yo.transition=1;try{T(!1),R()}finally{yo.transition=Pe}})}function ad(T,R,q){var Pe=mc(),tt=jl(T),on={lane:tt,action:q,eagerReducer:null,eagerState:null,next:null},bn=R.pending;if(null===bn?on.next=on:(on.next=bn.next,bn.next=on),R.pending=on,bn=T.alternate,T===Xo||null!==bn&&bn===Xo)Ms=Ts=!0;else{if(0===T.lanes&&(null===bn||0===bn.lanes)&&null!==(bn=R.lastRenderedReducer))try{var rr=R.lastRenderedState,wr=bn(rr,q);if(on.eagerReducer=bn,on.eagerState=wr,io(wr,rr))return}catch(qr){}gd(T,tt,Pe)}}var xu={readContext:sl,useCallback:xs,useContext:xs,useEffect:xs,useImperativeHandle:xs,useLayoutEffect:xs,useMemo:xs,useReducer:xs,useRef:xs,useState:xs,useDebugValue:xs,useDeferredValue:xs,useTransition:xs,useMutableSource:xs,useOpaqueIdentifier:xs,unstable_isNewReconciler:!1},ef={readContext:sl,useCallback:function(T,R){return Ga().memoizedState=[T,void 0===R?null:R],T},useContext:sl,useEffect:aa,useImperativeHandle:function(T,R,q){return q=null!=q?q.concat([T]):null,xi(4,2,Ql.bind(null,R,T),q)},useLayoutEffect:function(T,R){return xi(4,2,T,R)},useMemo:function(T,R){var q=Ga();return R=void 0===R?null:R,T=T(),q.memoizedState=[T,R],T},useReducer:function(T,R,q){var Pe=Ga();return R=void 0!==q?q(R):R,Pe.memoizedState=Pe.baseState=R,T=(T=Pe.queue={pending:null,dispatch:null,lastRenderedReducer:T,lastRenderedState:R}).dispatch=ad.bind(null,Xo,T),[Pe.memoizedState,T]},useRef:xn,useState:yt,useDebugValue:Gu,useDeferredValue:function(T){var R=yt(T),q=R[0],Pe=R[1];return aa(function(){var tt=yo.transition;yo.transition=1;try{Pe(T)}finally{yo.transition=tt}},[T]),q},useTransition:function(){var T=yt(!1),R=T[0];return xn(T=Md.bind(null,T[1])),[T,R]},useMutableSource:function(T,R,q){var Pe=Ga();return Pe.memoizedState={refs:{getSnapshot:R,setSnapshot:null},source:T,subscribe:q},X(Pe,T,R,q)},useOpaqueIdentifier:function(){if(De){var T=!1,R={$$typeof:$e,toString:Pe=function(){throw T||(T=!0,q("r:"+(Fl++).toString(36))),Error(l(355))},valueOf:Pe},q=yt(R)[1];return 0==(2&Xo.mode)&&(Xo.flags|=516,qt(5,function(){q("r:"+(Fl++).toString(36))},void 0,null)),R}var Pe;return yt(R="r:"+(Fl++).toString(36)),R},unstable_isNewReconciler:!1},Od={readContext:sl,useCallback:Sd,useContext:sl,useEffect:za,useImperativeHandle:Ec,useLayoutEffect:gc,useMemo:rp,useReducer:Gl,useRef:Ar,useState:function(){return Gl(rl)},useDebugValue:Gu,useDeferredValue:function(T){var R=Gl(rl),q=R[0],Pe=R[1];return za(function(){var tt=yo.transition;yo.transition=1;try{Pe(T)}finally{yo.transition=tt}},[T]),q},useTransition:function(){var T=Gl(rl)[0];return[Ar().current,T]},useMutableSource:me,useOpaqueIdentifier:function(){return Gl(rl)[0]},unstable_isNewReconciler:!1},Eu={readContext:sl,useCallback:Sd,useContext:sl,useEffect:za,useImperativeHandle:Ec,useLayoutEffect:gc,useMemo:rp,useReducer:_c,useRef:Ar,useState:function(){return _c(rl)},useDebugValue:Gu,useDeferredValue:function(T){var R=_c(rl),q=R[0],Pe=R[1];return za(function(){var tt=yo.transition;yo.transition=1;try{Pe(T)}finally{yo.transition=tt}},[T]),q},useTransition:function(){var T=_c(rl)[0];return[Ar().current,T]},useMutableSource:me,useOpaqueIdentifier:function(){return _c(rl)[0]},unstable_isNewReconciler:!1},tf=J.ReactCurrentOwner,Is=!1;function Ic(T,R,q,Pe){R.child=null===T?vl(R,null,q,Pe):bc(R,T.child,q,Pe)}function Nf(T,R,q,Pe,tt){q=q.render;var on=R.ref;return Us(R,tt),Pe=hl(T,R,q,Pe,on,tt),null===T||Is?(R.flags|=1,Ic(T,R,Pe,tt),R.child):(R.updateQueue=T.updateQueue,R.flags&=-517,T.lanes&=~tt,wc(T,R,tt))}function ld(T,R,q,Pe,tt,on){if(null===T){var bn=q.type;return"function"!=typeof bn||bd(bn)||void 0!==bn.defaultProps||null!==q.compare||void 0!==q.defaultProps?((T=Sc(q.type,null,Pe,R,R.mode,on)).ref=R.ref,T.return=R,R.child=T):(R.tag=15,R.type=bn,Jc(T,R,bn,Pe,tt,on))}return bn=T.child,0==(tt&on)&&(q=null!==(q=q.compare)?q:Bi)(tt=bn.memoizedProps,Pe)&&T.ref===R.ref?wc(T,R,on):(R.flags|=1,(T=Ed(bn,Pe)).ref=R.ref,T.return=R,R.child=T)}function Jc(T,R,q,Pe,tt,on){if(null!==T&&Bi(T.memoizedProps,Pe)&&T.ref===R.ref){if(Is=!1,0==(on&tt))return R.lanes=T.lanes,wc(T,R,on);0!=(16384&T.flags)&&(Is=!0)}return Lc(T,R,q,Pe,on)}function Tu(T,R,q){var Pe=R.pendingProps,tt=Pe.children,on=null!==T?T.memoizedState:null;if("hidden"===Pe.mode||"unstable-defer-without-hiding"===Pe.mode)if(0==(4&R.mode))R.memoizedState={baseLanes:0},mu(0,q);else{if(0==(1073741824&q))return T=null!==on?on.baseLanes|q:q,R.lanes=R.childLanes=1073741824,R.memoizedState={baseLanes:T},mu(0,T),null;R.memoizedState={baseLanes:0},mu(0,null!==on?on.baseLanes:q)}else null!==on?(Pe=on.baseLanes|q,R.memoizedState=null):Pe=q,mu(0,Pe);return Ic(T,R,tt,q),R.child}function nf(T,R){var q=R.ref;(null===T&&null!==q||null!==T&&T.ref!==q)&&(R.flags|=128)}function Lc(T,R,q,Pe,tt){var on=kn(q)?vn:Dt.current;return on=Gn(R,on),Us(R,tt),q=hl(T,R,q,Pe,on,tt),null===T||Is?(R.flags|=1,Ic(T,R,q,tt),R.child):(R.updateQueue=T.updateQueue,R.flags&=-517,T.lanes&=~tt,wc(T,R,tt))}function Pf(T,R,q,Pe,tt){if(kn(q)){var on=!0;Gr(R)}else on=!1;if(Us(R,tt),null===R.stateNode)null!==T&&(T.alternate=null,R.alternate=null,R.flags|=2),bu(R,q,Pe),xl(R,q,Pe,tt),Pe=!0;else if(null===T){var bn=R.stateNode,rr=R.memoizedProps;bn.props=rr;var wr=bn.context,qr=q.contextType;qr="object"==typeof qr&&null!==qr?sl(qr):Gn(R,qr=kn(q)?vn:Dt.current);var co=q.getDerivedStateFromProps,Ko="function"==typeof co||"function"==typeof bn.getSnapshotBeforeUpdate;Ko||"function"!=typeof bn.UNSAFE_componentWillReceiveProps&&"function"!=typeof bn.componentWillReceiveProps||(rr!==Pe||wr!==qr)&&ou(R,bn,Pe,qr),ac=!1;var so=R.memoizedState;bn.state=so,pc(R,Pe,bn,tt),wr=R.memoizedState,rr!==Pe||so!==wr||en.current||ac?("function"==typeof co&&(iu(R,q,co,Pe),wr=R.memoizedState),(rr=ac||Ac(R,q,rr,Pe,so,wr,qr))?(Ko||"function"!=typeof bn.UNSAFE_componentWillMount&&"function"!=typeof bn.componentWillMount||("function"==typeof bn.componentWillMount&&bn.componentWillMount(),"function"==typeof bn.UNSAFE_componentWillMount&&bn.UNSAFE_componentWillMount()),"function"==typeof bn.componentDidMount&&(R.flags|=4)):("function"==typeof bn.componentDidMount&&(R.flags|=4),R.memoizedProps=Pe,R.memoizedState=wr),bn.props=Pe,bn.state=wr,bn.context=qr,Pe=rr):("function"==typeof bn.componentDidMount&&(R.flags|=4),Pe=!1)}else{bn=R.stateNode,lc(T,R),rr=R.memoizedProps,qr=R.type===R.elementType?rr:Ws(R.type,rr),bn.props=qr,Ko=R.pendingProps,so=bn.context,wr="object"==typeof(wr=q.contextType)&&null!==wr?sl(wr):Gn(R,wr=kn(q)?vn:Dt.current);var gs=q.getDerivedStateFromProps;(co="function"==typeof gs||"function"==typeof bn.getSnapshotBeforeUpdate)||"function"!=typeof bn.UNSAFE_componentWillReceiveProps&&"function"!=typeof bn.componentWillReceiveProps||(rr!==Ko||so!==wr)&&ou(R,bn,Pe,wr),ac=!1,bn.state=so=R.memoizedState,pc(R,Pe,bn,tt);var qs=R.memoizedState;rr!==Ko||so!==qs||en.current||ac?("function"==typeof gs&&(iu(R,q,gs,Pe),qs=R.memoizedState),(qr=ac||Ac(R,q,qr,Pe,so,qs,wr))?(co||"function"!=typeof bn.UNSAFE_componentWillUpdate&&"function"!=typeof bn.componentWillUpdate||("function"==typeof bn.componentWillUpdate&&bn.componentWillUpdate(Pe,qs,wr),"function"==typeof bn.UNSAFE_componentWillUpdate&&bn.UNSAFE_componentWillUpdate(Pe,qs,wr)),"function"==typeof bn.componentDidUpdate&&(R.flags|=4),"function"==typeof bn.getSnapshotBeforeUpdate&&(R.flags|=256)):("function"!=typeof bn.componentDidUpdate||rr===T.memoizedProps&&so===T.memoizedState||(R.flags|=4),"function"!=typeof bn.getSnapshotBeforeUpdate||rr===T.memoizedProps&&so===T.memoizedState||(R.flags|=256),R.memoizedProps=Pe,R.memoizedState=qs),bn.props=Pe,bn.state=qs,bn.context=wr,Pe=qr):("function"!=typeof bn.componentDidUpdate||rr===T.memoizedProps&&so===T.memoizedState||(R.flags|=4),"function"!=typeof bn.getSnapshotBeforeUpdate||rr===T.memoizedProps&&so===T.memoizedState||(R.flags|=256),Pe=!1)}return cd(T,R,q,Pe,on,tt)}function cd(T,R,q,Pe,tt,on){nf(T,R);var bn=0!=(64&R.flags);if(!Pe&&!bn)return tt&&ci(R,q,!1),wc(T,R,on);Pe=R.stateNode,tf.current=R;var rr=bn&&"function"!=typeof q.getDerivedStateFromError?null:Pe.render();return R.flags|=1,null!==T&&bn?(R.child=bc(R,T.child,null,on),R.child=bc(R,null,rr,on)):Ic(T,R,rr,on),R.memoizedState=Pe.state,tt&&ci(R,q,!0),R.child}function rf(T){var R=T.stateNode;R.pendingContext?jr(0,R.pendingContext,R.pendingContext!==R.context):R.context&&jr(0,R.context,!1),p(T,R.containerInfo)}var $d,Ad,Fc,hu={dehydrated:null,retryLane:0};function Hd(T,R,q){var Pe,tt=R.pendingProps,on=Q.current,bn=!1;return(Pe=0!=(64&R.flags))||(Pe=(null===T||null!==T.memoizedState)&&0!=(2&on)),Pe?(bn=!0,R.flags&=-65):null!==T&&null===T.memoizedState||void 0===tt.fallback||!0===tt.unstable_avoidThisFallback||(on|=1),Be(Q,1&on),null===T?(void 0!==tt.fallback&&Zt(R),T=tt.children,on=tt.fallback,bn?(T=ud(R,T,on,q),R.child.memoizedState={baseLanes:q},R.memoizedState=hu,T):"number"==typeof tt.unstable_expectedLoadTime?(T=ud(R,T,on,q),R.child.memoizedState={baseLanes:q},R.memoizedState=hu,R.lanes=33554432,T):((q=Iu({mode:"visible",children:T},R.mode,q,null)).return=R,R.child=q)):bn?(tt=function(T,R,q,Pe,tt){var on=R.mode,bn=T.child;T=bn.sibling;var rr={mode:"hidden",children:q};return 0==(2&on)&&R.child!==bn?((q=R.child).childLanes=0,q.pendingProps=rr,null!==(bn=q.lastEffect)?(R.firstEffect=q.firstEffect,R.lastEffect=bn,bn.nextEffect=null):R.firstEffect=R.lastEffect=null):q=Ed(bn,rr),null!==T?Pe=Ed(T,Pe):(Pe=Mc(Pe,on,tt,null)).flags|=2,Pe.return=R,q.return=R,q.sibling=Pe,R.child=q,Pe}(T,R,tt.children,tt.fallback,q),(bn=R.child).memoizedState=null===(on=T.child.memoizedState)?{baseLanes:q}:{baseLanes:on.baseLanes|q},bn.childLanes=T.childLanes&~q,R.memoizedState=hu,tt):(q=function(T,R,q,Pe){var tt=T.child;return T=tt.sibling,q=Ed(tt,{mode:"visible",children:q}),0==(2&R.mode)&&(q.lanes=Pe),q.return=R,q.sibling=null,null!==T&&(T.nextEffect=null,T.flags=8,R.firstEffect=R.lastEffect=T),R.child=q}(T,R,tt.children,q),R.memoizedState=null,q)}function ud(T,R,q,Pe){var tt=T.mode,on=T.child;return R={mode:"hidden",children:R},0==(2&tt)&&null!==on?(on.childLanes=0,on.pendingProps=R):on=Iu(R,tt,0,null),q=Mc(q,tt,Pe,null),on.return=T,q.return=T,on.sibling=q,T.child=on,q}function Cu(T,R){T.lanes|=R;var q=T.alternate;null!==q&&(q.lanes|=R),ol(T.return,R)}function dd(T,R,q,Pe,tt,on){var bn=T.memoizedState;null===bn?T.memoizedState={isBackwards:R,rendering:null,renderingStartTime:0,last:Pe,tail:q,tailMode:tt,lastEffect:on}:(bn.isBackwards=R,bn.rendering=null,bn.renderingStartTime=0,bn.last=Pe,bn.tail=q,bn.tailMode=tt,bn.lastEffect=on)}function kc(T,R,q){var Pe=R.pendingProps,tt=Pe.revealOrder,on=Pe.tail;if(Ic(T,R,Pe.children,q),0!=(2&(Pe=Q.current)))Pe=1&Pe|2,R.flags|=64;else{if(null!==T&&0!=(64&T.flags))e:for(T=R.child;null!==T;){if(13===T.tag)null!==T.memoizedState&&Cu(T,q);else if(19===T.tag)Cu(T,q);else if(null!==T.child){T.child.return=T,T=T.child;continue}if(T===R)break e;for(;null===T.sibling;){if(null===T.return||T.return===R)break e;T=T.return}T.sibling.return=T.return,T=T.sibling}Pe&=1}if(Be(Q,Pe),0==(2&R.mode))R.memoizedState=null;else switch(tt){case"forwards":for(q=R.child,tt=null;null!==q;)null!==(T=q.alternate)&&null===de(T)&&(tt=q),q=q.sibling;null===(q=tt)?(tt=R.child,R.child=null):(tt=q.sibling,q.sibling=null),dd(R,!1,tt,q,on,R.lastEffect);break;case"backwards":for(q=null,tt=R.child,R.child=null;null!==tt;){if(null!==(T=tt.alternate)&&null===de(T)){R.child=tt;break}T=tt.sibling,tt.sibling=q,q=tt,tt=T}dd(R,!0,q,null,on,R.lastEffect);break;case"together":dd(R,!1,null,null,void 0,R.lastEffect);break;default:R.memoizedState=null}return R.child}function wc(T,R,q){if(null!==T&&(R.dependencies=T.dependencies),pd|=R.lanes,0!=(q&R.childLanes)){if(null!==T&&R.child!==T.child)throw Error(l(153));if(null!==R.child){for(q=Ed(T=R.child,T.pendingProps),R.child=q,q.return=R;null!==T.sibling;)(q=q.sibling=Ed(T=T.sibling,T.pendingProps)).return=R;q.sibling=null}return R.child}return null}function Yc(T,R){if(!De)switch(T.tailMode){case"hidden":R=T.tail;for(var q=null;null!==R;)null!==R.alternate&&(q=R),R=R.sibling;null===q?T.tail=null:q.sibling=null;break;case"collapsed":q=T.tail;for(var Pe=null;null!==q;)null!==q.alternate&&(Pe=q),q=q.sibling;null===Pe?R||null===T.tail?T.tail=null:T.tail.sibling=null:Pe.sibling=null}}function Lf(T,R,q){var Pe=R.pendingProps;switch(R.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return kn(R.type)&&zn(),null;case 3:return E(),Re(en),Re(Dt),Yr(),(Pe=R.stateNode).pendingContext&&(Pe.context=Pe.pendingContext,Pe.pendingContext=null),null!==T&&null!==T.child||(cr(R)?R.flags|=4:Pe.hydrate||(R.flags|=256)),null;case 5:$(R);var tt=El(yl.current);if(q=R.type,null!==T&&null!=R.stateNode)Ad(T,R,q,Pe),T.ref!==R.ref&&(R.flags|=128);else{if(!Pe){if(null===R.stateNode)throw Error(l(166));return null}if(T=El(Jl.current),cr(R)){q=R.type;var on=R.memoizedProps;switch((Pe=R.stateNode)[ql]=R,Pe[kl]=on,q){case"dialog":Ti("cancel",Pe),Ti("close",Pe);break;case"iframe":case"object":case"embed":Ti("load",Pe);break;case"video":case"audio":for(T=0;T<Un.length;T++)Ti(Un[T],Pe);break;case"source":Ti("error",Pe);break;case"img":case"image":case"link":Ti("error",Pe),Ti("load",Pe);break;case"details":Ti("toggle",Pe);break;case"input":er(Pe,on),Ti("invalid",Pe);break;case"select":Pe._wrapperState={wasMultiple:!!on.multiple},Ti("invalid",Pe);break;case"textarea":Kn(Pe,on),Ti("invalid",Pe)}for(var bn in hn(q,on),T=null,on)on.hasOwnProperty(bn)&&(tt=on[bn],"children"===bn?"string"==typeof tt?Pe.textContent!==tt&&(T=["children",tt]):"number"==typeof tt&&Pe.textContent!==""+tt&&(T=["children",""+tt]):h.hasOwnProperty(bn)&&null!=tt&&"onScroll"===bn&&Ti("scroll",Pe));switch(q){case"input":ln(Pe),tr(Pe,on,!0);break;case"textarea":ln(Pe),Sn(Pe);break;case"select":case"option":break;default:"function"==typeof on.onClick&&(Pe.onclick=fl)}R.updateQueue=Pe=T,null!==Pe&&(R.flags|=4)}else{switch(bn=9===tt.nodeType?tt:tt.ownerDocument,T===$n&&(T=Fn(q)),T===$n?"script"===q?((T=bn.createElement("div")).innerHTML="<script><\/script>",T=T.removeChild(T.firstChild)):"string"==typeof Pe.is?T=bn.createElement(q,{is:Pe.is}):(T=bn.createElement(q),"select"===q&&(bn=T,Pe.multiple?bn.multiple=!0:Pe.size&&(bn.size=Pe.size))):T=bn.createElementNS(T,q),T[ql]=R,T[kl]=Pe,$d(T,R),R.stateNode=T,bn=Qn(q,Pe),q){case"dialog":Ti("cancel",T),Ti("close",T),tt=Pe;break;case"iframe":case"object":case"embed":Ti("load",T),tt=Pe;break;case"video":case"audio":for(tt=0;tt<Un.length;tt++)Ti(Un[tt],T);tt=Pe;break;case"source":Ti("error",T),tt=Pe;break;case"img":case"image":case"link":Ti("error",T),Ti("load",T),tt=Pe;break;case"details":Ti("toggle",T),tt=Pe;break;case"input":er(T,Pe),tt=Rn(T,Pe),Ti("invalid",T);break;case"option":tt=Cn(T,Pe);break;case"select":T._wrapperState={wasMultiple:!!Pe.multiple},tt=s({},Pe,{value:void 0}),Ti("invalid",T);break;case"textarea":Kn(T,Pe),tt=dn(T,Pe),Ti("invalid",T);break;default:tt=Pe}hn(q,tt);var rr=tt;for(on in rr)if(rr.hasOwnProperty(on)){var wr=rr[on];"style"===on?et(T,wr):"dangerouslySetInnerHTML"===on?null!=(wr=wr?wr.__html:void 0)&&Xt(T,wr):"children"===on?"string"==typeof wr?("textarea"!==q||""!==wr)&&ut(T,wr):"number"==typeof wr&&ut(T,""+wr):"suppressContentEditableWarning"!==on&&"suppressHydrationWarning"!==on&&"autoFocus"!==on&&(h.hasOwnProperty(on)?null!=wr&&"onScroll"===on&&Ti("scroll",T):null!=wr&&I(T,on,wr,bn))}switch(q){case"input":ln(T),tr(T,Pe,!1);break;case"textarea":ln(T),Sn(T);break;case"option":null!=Pe.value&&T.setAttribute("value",""+Jt(Pe.value));break;case"select":T.multiple=!!Pe.multiple,null!=(on=Pe.value)?Kt(T,!!Pe.multiple,on,!1):null!=Pe.defaultValue&&Kt(T,!!Pe.multiple,Pe.defaultValue,!0);break;default:"function"==typeof tt.onClick&&(T.onclick=fl)}Ll(q,Pe)&&(R.flags|=4)}null!==R.ref&&(R.flags|=128)}return null;case 6:if(T&&null!=R.stateNode)Fc(0,R,T.memoizedProps,Pe);else{if("string"!=typeof Pe&&null===R.stateNode)throw Error(l(166));q=El(yl.current),El(Jl.current),cr(R)?(q=R.memoizedProps,(Pe=R.stateNode)[ql]=R,Pe.nodeValue!==q&&(R.flags|=4)):((Pe=(9===q.nodeType?q:q.ownerDocument).createTextNode(Pe))[ql]=R,R.stateNode=Pe)}return null;case 13:return Re(Q),Pe=R.memoizedState,0!=(64&R.flags)?(R.lanes=q,R):(Pe=null!==Pe,q=!1,null===T?void 0!==R.memoizedProps.fallback&&cr(R):q=null!==T.memoizedState,Pe&&!q&&0!=(2&R.mode)&&(null===T&&!0!==R.memoizedProps.unstable_avoidThisFallback||0!=(1&Q.current)?0===Tc&&(Tc=3):(0!==Tc&&3!==Tc||(Tc=4),null===Kl||0==(134217727&pd)&&0==(134217727&Ru)||Pu(Kl,zl))),(Pe||q)&&(R.flags|=4),null);case 4:return E(),null===T&&Qo(R.stateNode.containerInfo),null;case 10:return Ha(R),null;case 17:return kn(R.type)&&zn(),null;case 19:if(Re(Q),null===(Pe=R.memoizedState))return null;if(on=0!=(64&R.flags),null===(bn=Pe.rendering))if(on)Yc(Pe,!1);else{if(0!==Tc||null!==T&&0!=(64&T.flags))for(T=R.child;null!==T;){if(null!==(bn=de(T))){for(R.flags|=64,Yc(Pe,!1),null!==(on=bn.updateQueue)&&(R.updateQueue=on,R.flags|=4),null===Pe.lastEffect&&(R.firstEffect=null),R.lastEffect=Pe.lastEffect,Pe=q,q=R.child;null!==q;)T=Pe,(on=q).flags&=2,on.nextEffect=null,on.firstEffect=null,on.lastEffect=null,null===(bn=on.alternate)?(on.childLanes=0,on.lanes=T,on.child=null,on.memoizedProps=null,on.memoizedState=null,on.updateQueue=null,on.dependencies=null,on.stateNode=null):(on.childLanes=bn.childLanes,on.lanes=bn.lanes,on.child=bn.child,on.memoizedProps=bn.memoizedProps,on.memoizedState=bn.memoizedState,on.updateQueue=bn.updateQueue,on.type=bn.type,on.dependencies=null===(T=bn.dependencies)?null:{lanes:T.lanes,firstContext:T.firstContext}),q=q.sibling;return Be(Q,1&Q.current|2),R.child}T=T.sibling}null!==Pe.tail&&lo()>$c&&(R.flags|=64,on=!0,Yc(Pe,!1),R.lanes=33554432)}else{if(!on)if(null!==(T=de(bn))){if(R.flags|=64,on=!0,null!==(q=T.updateQueue)&&(R.updateQueue=q,R.flags|=4),Yc(Pe,!0),null===Pe.tail&&"hidden"===Pe.tailMode&&!bn.alternate&&!De)return null!==(R=R.lastEffect=Pe.lastEffect)&&(R.nextEffect=null),null}else 2*lo()-Pe.renderingStartTime>$c&&1073741824!==q&&(R.flags|=64,on=!0,Yc(Pe,!1),R.lanes=33554432);Pe.isBackwards?(bn.sibling=R.child,R.child=bn):(null!==(q=Pe.last)?q.sibling=bn:R.child=bn,Pe.last=bn)}return null!==Pe.tail?(Pe.rendering=q=Pe.tail,Pe.tail=q.sibling,Pe.lastEffect=R.lastEffect,Pe.renderingStartTime=lo(),q.sibling=null,R=Q.current,Be(Q,on?1&R|2:1&R),q):null;case 23:case 24:return Cc(),null!==T&&null!==T.memoizedState!=(null!==R.memoizedState)&&"unstable-defer-without-hiding"!==Pe.mode&&(R.flags|=4),null}throw Error(l(156,R.tag))}function Su(T){switch(T.tag){case 1:kn(T.type)&&zn();var R=T.flags;return 4096&R?(T.flags=-4097&R|64,T):null;case 3:if(E(),Re(en),Re(Dt),Yr(),0!=(64&(R=T.flags)))throw Error(l(285));return T.flags=-4097&R|64,T;case 5:return $(T),null;case 13:return Re(Q),4096&(R=T.flags)?(T.flags=-4097&R|64,T):null;case 19:return Re(Q),null;case 4:return E(),null;case 10:return Ha(T),null;case 23:case 24:return Cc(),null;default:return null}}function fd(T,R){try{var q="",Pe=R;do{q+=Ie(Pe),Pe=Pe.return}while(Pe);var tt=q}catch(on){tt="\nError generating stack: "+on.message+"\n"+on.stack}return{value:T,source:R,stack:tt}}function of(T,R){try{console.error(R.value)}catch(q){setTimeout(function(){throw q})}}$d=function(T,R){for(var q=R.child;null!==q;){if(5===q.tag||6===q.tag)T.appendChild(q.stateNode);else if(4!==q.tag&&null!==q.child){q.child.return=q,q=q.child;continue}if(q===R)break;for(;null===q.sibling;){if(null===q.return||q.return===R)return;q=q.return}q.sibling.return=q.return,q=q.sibling}},Ad=function(T,R,q,Pe){var tt=T.memoizedProps;if(tt!==Pe){T=R.stateNode,El(Jl.current);var on,bn=null;switch(q){case"input":tt=Rn(T,tt),Pe=Rn(T,Pe),bn=[];break;case"option":tt=Cn(T,tt),Pe=Cn(T,Pe),bn=[];break;case"select":tt=s({},tt,{value:void 0}),Pe=s({},Pe,{value:void 0}),bn=[];break;case"textarea":tt=dn(T,tt),Pe=dn(T,Pe),bn=[];break;default:"function"!=typeof tt.onClick&&"function"==typeof Pe.onClick&&(T.onclick=fl)}for(qr in hn(q,Pe),q=null,tt)if(!Pe.hasOwnProperty(qr)&&tt.hasOwnProperty(qr)&&null!=tt[qr])if("style"===qr){var rr=tt[qr];for(on in rr)rr.hasOwnProperty(on)&&(q||(q={}),q[on]="")}else"dangerouslySetInnerHTML"!==qr&&"children"!==qr&&"suppressContentEditableWarning"!==qr&&"suppressHydrationWarning"!==qr&&"autoFocus"!==qr&&(h.hasOwnProperty(qr)?bn||(bn=[]):(bn=bn||[]).push(qr,null));for(qr in Pe){var wr=Pe[qr];if(rr=null!=tt?tt[qr]:void 0,Pe.hasOwnProperty(qr)&&wr!==rr&&(null!=wr||null!=rr))if("style"===qr)if(rr){for(on in rr)!rr.hasOwnProperty(on)||wr&&wr.hasOwnProperty(on)||(q||(q={}),q[on]="");for(on in wr)wr.hasOwnProperty(on)&&rr[on]!==wr[on]&&(q||(q={}),q[on]=wr[on])}else q||(bn||(bn=[]),bn.push(qr,q)),q=wr;else"dangerouslySetInnerHTML"===qr?(rr=rr?rr.__html:void 0,null!=(wr=wr?wr.__html:void 0)&&rr!==wr&&(bn=bn||[]).push(qr,wr)):"children"===qr?"string"!=typeof wr&&"number"!=typeof wr||(bn=bn||[]).push(qr,""+wr):"suppressContentEditableWarning"!==qr&&"suppressHydrationWarning"!==qr&&(h.hasOwnProperty(qr)?(null!=wr&&"onScroll"===qr&&Ti("scroll",T),bn||rr===wr||(bn=[])):"object"==typeof wr&&null!==wr&&wr.$$typeof===$e?wr.toString():(bn=bn||[]).push(qr,wr))}q&&(bn=bn||[]).push("style",q);var qr=bn;(R.updateQueue=qr)&&(R.flags|=4)}},Fc=function(T,R,q,Pe){q!==Pe&&(R.flags|=4)};var Ff="function"==typeof WeakMap?WeakMap:Map;function V(T,R,q){(q=Va(-1,q)).tag=3,q.payload={element:null};var Pe=R.value;return q.callback=function(){kf||(kf=!0,hd=Pe),of(0,R)},q}function pe(T,R,q){(q=Va(-1,q)).tag=3;var Pe=T.type.getDerivedStateFromError;if("function"==typeof Pe){var tt=R.value;q.payload=function(){return of(0,R),Pe(tt)}}var on=T.stateNode;return null!==on&&"function"==typeof on.componentDidCatch&&(q.callback=function(){"function"!=typeof Pe&&(null===Nu?Nu=new Set([this]):Nu.add(this),of(0,R));var bn=R.stack;this.componentDidCatch(R.value,{componentStack:null!==bn?bn:""})}),q}var A="function"==typeof WeakSet?WeakSet:Set;function K(T){var R=T.ref;if(null!==R)if("function"==typeof R)try{R(null)}catch(q){Hc(T,q)}else R.current=null}function Ye(T,R){switch(R.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&R.flags&&null!==T){var q=T.memoizedProps,Pe=T.memoizedState;R=(T=R.stateNode).getSnapshotBeforeUpdate(R.elementType===R.type?q:Ws(R.type,q),Pe),T.__reactInternalSnapshotBeforeUpdate=R}return;case 3:return void(256&R.flags&&qc(R.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(l(163))}function Rt(T,R,q){switch(q.tag){case 0:case 11:case 15:case 22:if(null!==(R=null!==(R=q.updateQueue)?R.lastEffect:null)){T=R=R.next;do{if(3==(3&T.tag)){var Pe=T.create;T.destroy=Pe()}T=T.next}while(T!==R)}if(null!==(R=null!==(R=q.updateQueue)?R.lastEffect:null)){T=R=R.next;do{var tt=T;Pe=tt.next,0!=(4&(tt=tt.tag))&&0!=(1&tt)&&(hf(q,T),qu(q,T)),T=Pe}while(T!==R)}return;case 1:return T=q.stateNode,4&q.flags&&(null===R?T.componentDidMount():(Pe=q.elementType===q.type?R.memoizedProps:Ws(q.type,R.memoizedProps),T.componentDidUpdate(Pe,R.memoizedState,T.__reactInternalSnapshotBeforeUpdate))),void(null!==(R=q.updateQueue)&&pl(q,R,T));case 3:if(null!==(R=q.updateQueue)){if(T=null,null!==q.child)switch(q.child.tag){case 5:T=q.child.stateNode;break;case 1:T=q.child.stateNode}pl(q,R,T)}return;case 5:return T=q.stateNode,void(null===R&&4&q.flags&&Ll(q.type,q.memoizedProps)&&T.focus());case 6:case 4:case 12:return;case 13:return void(null===q.memoizedState&&(q=q.alternate,null!==q&&(q=q.memoizedState,null!==q&&(q=q.dehydrated,null!==q&&go(q)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(l(163))}function vr(T,R){for(var q=T;;){if(5===q.tag){var Pe=q.stateNode;if(R)"function"==typeof(Pe=Pe.style).setProperty?Pe.setProperty("display","none","important"):Pe.display="none";else{Pe=q.stateNode;var tt=q.memoizedProps.style;tt=null!=tt&&tt.hasOwnProperty("display")?tt.display:null,Pe.style.display=yn("display",tt)}}else if(6===q.tag)q.stateNode.nodeValue=R?"":q.memoizedProps;else if((23!==q.tag&&24!==q.tag||null===q.memoizedState||q===T)&&null!==q.child){q.child.return=q,q=q.child;continue}if(q===T)break;for(;null===q.sibling;){if(null===q.return||q.return===T)return;q=q.return}q.sibling.return=q.return,q=q.sibling}}function Hr(T,R){if(vi&&"function"==typeof vi.onCommitFiberUnmount)try{vi.onCommitFiberUnmount(Ci,R)}catch(on){}switch(R.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(T=R.updateQueue)&&null!==(T=T.lastEffect)){var q=T=T.next;do{var Pe=q,tt=Pe.destroy;if(Pe=Pe.tag,void 0!==tt)if(0!=(4&Pe))hf(R,q);else{Pe=R;try{tt()}catch(on){Hc(Pe,on)}}q=q.next}while(q!==T)}break;case 1:if(K(R),"function"==typeof(T=R.stateNode).componentWillUnmount)try{T.props=R.memoizedProps,T.state=R.memoizedState,T.componentWillUnmount()}catch(on){Hc(R,on)}break;case 5:K(R);break;case 4:us(T,R)}}function _i(T){T.alternate=null,T.child=null,T.dependencies=null,T.firstEffect=null,T.lastEffect=null,T.memoizedProps=null,T.memoizedState=null,T.pendingProps=null,T.return=null,T.updateQueue=null}function ji(T){return 5===T.tag||3===T.tag||4===T.tag}function Eo(T){e:{for(var R=T.return;null!==R;){if(ji(R))break e;R=R.return}throw Error(l(160))}var q=R;switch(R=q.stateNode,q.tag){case 5:var Pe=!1;break;case 3:case 4:R=R.containerInfo,Pe=!0;break;default:throw Error(l(161))}16&q.flags&&(ut(R,""),q.flags&=-17);e:t:for(q=T;;){for(;null===q.sibling;){if(null===q.return||ji(q.return)){q=null;break e}q=q.return}for(q.sibling.return=q.return,q=q.sibling;5!==q.tag&&6!==q.tag&&18!==q.tag;){if(2&q.flags||null===q.child||4===q.tag)continue t;q.child.return=q,q=q.child}if(!(2&q.flags)){q=q.stateNode;break e}}Pe?rs(T,q,R):Uo(T,q,R)}function rs(T,R,q){var Pe=T.tag,tt=5===Pe||6===Pe;if(tt)T=tt?T.stateNode:T.stateNode.instance,R?8===q.nodeType?q.parentNode.insertBefore(T,R):q.insertBefore(T,R):(8===q.nodeType?(R=q.parentNode).insertBefore(T,q):(R=q).appendChild(T),null!=(q=q._reactRootContainer)||null!==R.onclick||(R.onclick=fl));else if(4!==Pe&&null!==(T=T.child))for(rs(T,R,q),T=T.sibling;null!==T;)rs(T,R,q),T=T.sibling}function Uo(T,R,q){var Pe=T.tag,tt=5===Pe||6===Pe;if(tt)T=tt?T.stateNode:T.stateNode.instance,R?q.insertBefore(T,R):q.appendChild(T);else if(4!==Pe&&null!==(T=T.child))for(Uo(T,R,q),T=T.sibling;null!==T;)Uo(T,R,q),T=T.sibling}function us(T,R){for(var q,Pe,tt=R,on=!1;;){if(!on){on=tt.return;e:for(;;){if(null===on)throw Error(l(160));switch(q=on.stateNode,on.tag){case 5:Pe=!1;break e;case 3:case 4:q=q.containerInfo,Pe=!0;break e}on=on.return}on=!0}if(5===tt.tag||6===tt.tag){e:for(var bn=T,rr=tt,wr=rr;;)if(Hr(bn,wr),null!==wr.child&&4!==wr.tag)wr.child.return=wr,wr=wr.child;else{if(wr===rr)break e;for(;null===wr.sibling;){if(null===wr.return||wr.return===rr)break e;wr=wr.return}wr.sibling.return=wr.return,wr=wr.sibling}Pe?(rr=tt.stateNode,8===(bn=q).nodeType?bn.parentNode.removeChild(rr):bn.removeChild(rr)):q.removeChild(tt.stateNode)}else if(4===tt.tag){if(null!==tt.child){q=tt.stateNode.containerInfo,Pe=!0,tt.child.return=tt,tt=tt.child;continue}}else if(Hr(T,tt),null!==tt.child){tt.child.return=tt,tt=tt.child;continue}if(tt===R)break;for(;null===tt.sibling;){if(null===tt.return||tt.return===R)return;4===(tt=tt.return).tag&&(on=!1)}tt.sibling.return=tt.return,tt=tt.sibling}}function Ks(T,R){switch(R.tag){case 0:case 11:case 14:case 15:case 22:var q=R.updateQueue;if(null!==(q=null!==q?q.lastEffect:null)){var Pe=q=q.next;do{3==(3&Pe.tag)&&(T=Pe.destroy,Pe.destroy=void 0,void 0!==T&&T()),Pe=Pe.next}while(Pe!==q)}return;case 1:return;case 5:if(null!=(q=R.stateNode)){Pe=R.memoizedProps;var tt=null!==T?T.memoizedProps:Pe;T=R.type;var on=R.updateQueue;if(R.updateQueue=null,null!==on){for(q[kl]=Pe,"input"===T&&"radio"===Pe.type&&null!=Pe.name&&Mn(q,Pe),Qn(T,tt),R=Qn(T,Pe),tt=0;tt<on.length;tt+=2){var bn=on[tt],rr=on[tt+1];"style"===bn?et(q,rr):"dangerouslySetInnerHTML"===bn?Xt(q,rr):"children"===bn?ut(q,rr):I(q,bn,rr,R)}switch(T){case"input":Ht(q,Pe);break;case"textarea":qn(q,Pe);break;case"select":T=q._wrapperState.wasMultiple,q._wrapperState.wasMultiple=!!Pe.multiple,null!=(on=Pe.value)?Kt(q,!!Pe.multiple,on,!1):T!==!!Pe.multiple&&(null!=Pe.defaultValue?Kt(q,!!Pe.multiple,Pe.defaultValue,!0):Kt(q,!!Pe.multiple,Pe.multiple?[]:"",!1))}}}return;case 6:if(null===R.stateNode)throw Error(l(162));return void(R.stateNode.nodeValue=R.memoizedProps);case 3:return void((q=R.stateNode).hydrate&&(q.hydrate=!1,go(q.containerInfo)));case 12:return;case 13:return null!==R.memoizedState&&(zu=lo(),vr(R.child,!0)),void ys(R);case 19:return void ys(R);case 17:return;case 23:case 24:return void vr(R,null!==R.memoizedState)}throw Error(l(163))}function ys(T){var R=T.updateQueue;if(null!==R){T.updateQueue=null;var q=T.stateNode;null===q&&(q=T.stateNode=new A),R.forEach(function(Pe){var tt=Uf.bind(null,T,Pe);q.has(Pe)||(q.add(Pe),Pe.then(tt,tt))})}}function Xl(T,R){return null!==T&&(null===(T=T.memoizedState)||null!==T.dehydrated)&&null!==(R=R.memoizedState)&&null===R.dehydrated}var Dc=Math.ceil,al=J.ReactCurrentDispatcher,su=J.ReactCurrentOwner,ea=0,Kl=null,Ul=null,zl=0,xc=0,sf=ge(0),Tc=0,_u=null,uc=0,pd=0,Ru=0,af=0,ec=null,zu=0,$c=1/0;function Qc(){$c=lo()+500}var ip,is=null,kf=!1,hd=null,Nu=null,Wu=!1,au=null,Ud=90,lf=[],_d=[],Xc=null,Mu=0,Rs=null,jd=-1,gu=0,lu=0,cf=null,Bd=!1;function mc(){return 0!=(48&ea)?lo():-1!==jd?jd:jd=lo()}function jl(T){if(0==(2&(T=T.mode)))return 1;if(0==(4&T))return 99===ra()?1:2;if(0===gu&&(gu=uc),0!==Ds.transition){0!==lu&&(lu=null!==ec?ec.pendingLanes:0),T=gu;var R=4186112&~lu;return 0==(R&=-R)&&0==(R=(T=4186112&~T)&-T)&&(R=8192),R}return T=ra(),pn(0!=(4&ea)&&98===T?12:T=function(q){switch(q){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(T),gu)}function gd(T,R,q){if(50<Mu)throw Mu=0,Rs=null,Error(l(185));if(null===(T=uf(T,R)))return null;fn(T,R,q),T===Kl&&(Ru|=R,4===Tc&&Pu(T,zl));var Pe=ra();1===R?0!=(8&ea)&&0==(48&ea)?Kc(T):(cu(T,q),0===ea&&(Qc(),La())):(0==(4&ea)||98!==Pe&&99!==Pe||(null===Xc?Xc=new Set([T]):Xc.add(T)),cu(T,q)),ec=T}function uf(T,R){T.lanes|=R;var q=T.alternate;for(null!==q&&(q.lanes|=R),q=T,T=T.return;null!==T;)T.childLanes|=R,null!==(q=T.alternate)&&(q.childLanes|=R),q=T,T=T.return;return 3===q.tag?q.stateNode:null}function cu(T,R){for(var q=T.callbackNode,Pe=T.suspendedLanes,tt=T.pingedLanes,on=T.expirationTimes,bn=T.pendingLanes;0<bn;){var rr=31-Tn(bn),wr=1<<rr,qr=on[rr];-1===qr?0!=(wr&Pe)&&0==(wr&tt)||(qr=R,oa(wr),on[rr]=10<=zo?qr+250:6<=zo?qr+5e3:-1):qr<=R&&(T.expiredLanes|=wr),bn&=~wr}if(Pe=Er(T,T===Kl?zl:0),R=zo,0===Pe)null!==q&&(q!==xo&&po(q),T.callbackNode=null,T.callbackPriority=0);else{if(null!==q){if(T.callbackPriority===R)return;q!==xo&&po(q)}15===R?(q=Kc.bind(null,T),null===_n?(_n=[q],Hs=fo(Ki,ws)):_n.push(q),q=xo):q=14===R?zs(99,Kc.bind(null,T)):zs(q=function(Ko){switch(Ko){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(l(358,Ko))}}(R),df.bind(null,T)),T.callbackPriority=R,T.callbackNode=q}}function df(T){if(jd=-1,lu=gu=0,0!=(48&ea))throw Error(l(327));var R=T.callbackNode;if(tc()&&T.callbackNode!==R)return null;var q=Er(T,T===Kl?zl:0);if(0===q)return null;var Pe=q,tt=ea;ea|=16;var on=ff();for(Kl===T&&zl===Pe||(Qc(),md(T,Pe));;)try{Ou();break}catch(rr){$f(T,rr)}if(Za(),al.current=on,ea=tt,null!==Ul?Pe=0:(Kl=null,zl=0,Pe=Tc),0!=(uc&Ru))md(T,0);else if(0!==Pe){if(2===Pe&&(ea|=64,T.hydrate&&(T.hydrate=!1,qc(T.containerInfo)),0!==(q=st(T))&&(Pe=vd(T,q))),1===Pe)throw R=_u,md(T,0),Pu(T,q),cu(T,lo()),R;switch(T.finishedWork=T.current.alternate,T.finishedLanes=q,Pe){case 0:case 1:throw Error(l(345));case 2:Yd(T);break;case 3:if(Pu(T,q),(62914560&q)===q&&10<(Pe=zu+500-lo())){if(0!==Er(T,0))break;if(((tt=T.suspendedLanes)&q)!==q){mc(),T.pingedLanes|=T.suspendedLanes&tt;break}T.timeoutHandle=mo(Yd.bind(null,T),Pe);break}Yd(T);break;case 4:if(Pu(T,q),(4186112&q)===q)break;for(Pe=T.eventTimes,tt=-1;0<q;){var bn=31-Tn(q);on=1<<bn,(bn=Pe[bn])>tt&&(tt=bn),q&=~on}if(q=tt,10<(q=(120>(q=lo()-q)?120:480>q?480:1080>q?1080:1920>q?1920:3e3>q?3e3:4320>q?4320:1960*Dc(q/1960))-q)){T.timeoutHandle=mo(Yd.bind(null,T),q);break}Yd(T);break;case 5:Yd(T);break;default:throw Error(l(329))}}return cu(T,lo()),T.callbackNode===R?df.bind(null,T):null}function Pu(T,R){for(R&=~af,T.suspendedLanes|=R&=~Ru,T.pingedLanes&=~R,T=T.expirationTimes;0<R;){var q=31-Tn(R),Pe=1<<q;T[q]=-1,R&=~Pe}}function Kc(T){if(0!=(48&ea))throw Error(l(327));if(tc(),T===Kl&&0!=(T.expiredLanes&zl)){var R=zl,q=vd(T,R);0!=(uc&Ru)&&(q=vd(T,R=Er(T,R)))}else q=vd(T,R=Er(T,0));if(0!==T.tag&&2===q&&(ea|=64,T.hydrate&&(T.hydrate=!1,qc(T.containerInfo)),0!==(R=st(T))&&(q=vd(T,R))),1===q)throw q=_u,md(T,0),Pu(T,R),cu(T,lo()),q;return T.finishedWork=T.current.alternate,T.finishedLanes=R,Yd(T),cu(T,lo()),null}function op(T,R){var q=ea;ea|=1;try{return T(R)}finally{0===(ea=q)&&(Qc(),La())}}function sp(T,R){var q=ea;ea&=-2,ea|=8;try{return T(R)}finally{0===(ea=q)&&(Qc(),La())}}function mu(T,R){Be(sf,xc),xc|=R,uc|=R}function Cc(){xc=sf.current,Re(sf)}function md(T,R){T.finishedWork=null,T.finishedLanes=0;var q=T.timeoutHandle;if(-1!==q&&(T.timeoutHandle=-1,As(q)),null!==Ul)for(q=Ul.return;null!==q;){var Pe=q;switch(Pe.tag){case 1:null!=(Pe=Pe.type.childContextTypes)&&zn();break;case 3:E(),Re(en),Re(Dt),Yr();break;case 5:$(Pe);break;case 4:E();break;case 13:case 19:Re(Q);break;case 10:Ha(Pe);break;case 23:case 24:Cc()}q=q.return}Kl=T,Ul=Ed(T.current,null),zl=xc=uc=R,Tc=0,_u=null,af=Ru=pd=0}function $f(T,R){for(;;){var q=Ul;try{if(Za(),Pi.current=xu,Ts){for(var Pe=Xo.memoizedState;null!==Pe;){var tt=Pe.queue;null!==tt&&(tt.pending=null),Pe=Pe.next}Ts=!1}if(Co=0,_s=ts=Xo=null,Ms=!1,su.current=null,null===q||null===q.return){Tc=1,_u=R,Ul=null;break}e:{var on=T,bn=q.return,rr=q,wr=R;if(R=zl,rr.flags|=2048,rr.firstEffect=rr.lastEffect=null,null!==wr&&"object"==typeof wr&&"function"==typeof wr.then){var qr=wr;if(0==(2&rr.mode)){var co=rr.alternate;co?(rr.updateQueue=co.updateQueue,rr.memoizedState=co.memoizedState,rr.lanes=co.lanes):(rr.updateQueue=null,rr.memoizedState=null)}var Ko=0!=(1&Q.current),so=bn;do{var gs;if(gs=13===so.tag){var qs=so.memoizedState;if(null!==qs)gs=null!==qs.dehydrated;else{var Vs=so.memoizedProps;gs=void 0!==Vs.fallback&&(!0!==Vs.unstable_avoidThisFallback||!Ko)}}if(gs){var oi=so.updateQueue;if(null===oi){var Wr=new Set;Wr.add(qr),so.updateQueue=Wr}else oi.add(qr);if(0==(2&so.mode)){if(so.flags|=64,rr.flags|=16384,rr.flags&=-2981,1===rr.tag)if(null===rr.alternate)rr.tag=17;else{var ti=Va(-1,1);ti.tag=2,ki(rr,ti)}rr.lanes|=1;break e}wr=void 0,rr=R;var Gi=on.pingCache;if(null===Gi?(Gi=on.pingCache=new Ff,wr=new Set,Gi.set(qr,wr)):void 0===(wr=Gi.get(qr))&&(wr=new Set,Gi.set(qr,wr)),!wr.has(rr)){wr.add(rr);var ro=Zd.bind(null,on,qr,rr);qr.then(ro,ro)}so.flags|=4096,so.lanes=R;break e}so=so.return}while(null!==so);wr=Error((dt(rr.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Tc&&(Tc=2),wr=fd(wr,rr),so=bn;do{switch(so.tag){case 3:on=wr,so.flags|=4096,so.lanes|=R&=-R,Oc(so,V(0,on,R));break e;case 1:on=wr;var ps=so.stateNode;if(0==(64&so.flags)&&("function"==typeof so.type.getDerivedStateFromError||null!==ps&&"function"==typeof ps.componentDidCatch&&(null===Nu||!Nu.has(ps)))){so.flags|=4096,so.lanes|=R&=-R,Oc(so,pe(so,on,R));break e}}so=so.return}while(null!==so)}pf(q)}catch(la){R=la,Ul===q&&null!==q&&(Ul=q=q.return);continue}break}}function ff(){var T=al.current;return al.current=xu,null===T?xu:T}function vd(T,R){var q=ea;ea|=16;var Pe=ff();for(Kl===T&&zl===R||md(T,R);;)try{Hf();break}catch(tt){$f(T,tt)}if(Za(),ea=q,al.current=Pe,null!==Ul)throw Error(l(261));return Kl=null,zl=0,Tc}function Hf(){for(;null!==Ul;)eu(Ul)}function Ou(){for(;null!==Ul&&!No();)eu(Ul)}function eu(T){var R=ip(T.alternate,T,xc);T.memoizedProps=T.pendingProps,null===R?pf(T):Ul=R,su.current=null}function pf(T){var R=T;do{var q=R.alternate;if(T=R.return,0==(2048&R.flags)){if(null!==(q=Lf(q,R,xc)))return void(Ul=q);if(24!==(q=R).tag&&23!==q.tag||null===q.memoizedState||0!=(1073741824&xc)||0==(4&q.mode)){for(var Pe=0,tt=q.child;null!==tt;)Pe|=tt.lanes|tt.childLanes,tt=tt.sibling;q.childLanes=Pe}null!==T&&0==(2048&T.flags)&&(null===T.firstEffect&&(T.firstEffect=R.firstEffect),null!==R.lastEffect&&(null!==T.lastEffect&&(T.lastEffect.nextEffect=R.firstEffect),T.lastEffect=R.lastEffect),1<R.flags&&(null!==T.lastEffect?T.lastEffect.nextEffect=R:T.firstEffect=R,T.lastEffect=R))}else{if(null!==(q=Su(R)))return q.flags&=2047,void(Ul=q);null!==T&&(T.firstEffect=T.lastEffect=null,T.flags|=2048)}if(null!==(R=R.sibling))return void(Ul=R);Ul=R=T}while(null!==R);0===Tc&&(Tc=5)}function Yd(T){var R=ra();return Aa(99,Sp.bind(null,T,R)),null}function Sp(T,R){do{tc()}while(null!==au);if(0!=(48&ea))throw Error(l(327));var q=T.finishedWork;if(null===q)return null;if(T.finishedWork=null,T.finishedLanes=0,q===T.current)throw Error(l(177));T.callbackNode=null;var Pe=q.lanes|q.childLanes,tt=Pe,on=T.pendingLanes&~tt;T.pendingLanes=tt,T.suspendedLanes=0,T.pingedLanes=0,T.expiredLanes&=tt,T.mutableReadLanes&=tt,T.entangledLanes&=tt,tt=T.entanglements;for(var bn=T.eventTimes,rr=T.expirationTimes;0<on;){var wr=31-Tn(on),qr=1<<wr;tt[wr]=0,bn[wr]=-1,rr[wr]=-1,on&=~qr}if(null!==Xc&&0==(24&Pe)&&Xc.has(T)&&Xc.delete(T),T===Kl&&(Ul=Kl=null,zl=0),1<q.flags?null!==q.lastEffect?(q.lastEffect.nextEffect=q,Pe=q.firstEffect):Pe=q:Pe=q.firstEffect,null!==Pe){if(tt=ea,ea|=32,su.current=null,Hn=gi,ft(bn=Se())){if("selectionStart"in bn)rr={start:bn.selectionStart,end:bn.selectionEnd};else if((qr=(rr=(rr=bn.ownerDocument)&&rr.defaultView||window).getSelection&&rr.getSelection())&&0!==qr.rangeCount){rr=qr.anchorNode,on=qr.anchorOffset,wr=qr.focusNode,qr=qr.focusOffset;var co=0,Ko=-1,so=-1,gs=0,qs=0,Vs=bn,oi=null;t:for(;;){for(var Wr;Vs!==rr||0!==on&&3!==Vs.nodeType||(Ko=co+on),Vs!==wr||0!==qr&&3!==Vs.nodeType||(so=co+qr),3===Vs.nodeType&&(co+=Vs.nodeValue.length),null!==(Wr=Vs.firstChild);)oi=Vs,Vs=Wr;for(;;){if(Vs===bn)break t;if(oi===rr&&++gs===on&&(Ko=co),oi===wr&&++qs===qr&&(so=co),null!==(Wr=Vs.nextSibling))break;oi=(Vs=oi).parentNode}Vs=Wr}rr=-1===Ko||-1===so?null:{start:Ko,end:so}}else rr=null;rr=rr||{start:0,end:0}}else rr=null;Es={focusedElem:bn,selectionRange:rr},gi=!1,cf=null,Bd=!1,is=Pe;do{try{Mp()}catch(Gs){if(null===is)throw Error(l(330));Hc(is,Gs),is=is.nextEffect}}while(null!==is);cf=null,is=Pe;do{try{for(bn=T;null!==is;){var ti=is.flags;if(16&ti&&ut(is.stateNode,""),128&ti){var Gi=is.alternate;if(null!==Gi){var ro=Gi.ref;null!==ro&&("function"==typeof ro?ro(null):ro.current=null)}}switch(1038&ti){case 2:Eo(is),is.flags&=-3;break;case 6:Eo(is),is.flags&=-3,Ks(is.alternate,is);break;case 1024:is.flags&=-1025;break;case 1028:is.flags&=-1025,Ks(is.alternate,is);break;case 4:Ks(is.alternate,is);break;case 8:us(bn,rr=is);var ia=rr.alternate;_i(rr),null!==ia&&_i(ia)}is=is.nextEffect}}catch(Gs){if(null===is)throw Error(l(330));Hc(is,Gs),is=is.nextEffect}}while(null!==is);if(ro=Es,Gi=Se(),bn=ro.selectionRange,Gi!==(ti=ro.focusedElem)&&ti&&ti.ownerDocument&&G(ti.ownerDocument.documentElement,ti)){for((null!==bn&&ft(ti)&&(Gi=bn.start,void 0===(ro=bn.end)&&(ro=Gi),"selectionStart"in ti?(ti.selectionStart=Gi,ti.selectionEnd=Math.min(ro,ti.value.length)):(ro=(Gi=ti.ownerDocument||document)&&Gi.defaultView||window).getSelection&&(ro=ro.getSelection(),rr=ti.textContent.length,ia=Math.min(bn.start,rr),bn=void 0===bn.end?ia:Math.min(bn.end,rr),!ro.extend&&ia>bn&&(rr=bn,bn=ia,ia=rr),rr=Br(ti,ia),on=Br(ti,bn),rr&&on&&(1!==ro.rangeCount||ro.anchorNode!==rr.node||ro.anchorOffset!==rr.offset||ro.focusNode!==on.node||ro.focusOffset!==on.offset)&&((Gi=Gi.createRange()).setStart(rr.node,rr.offset),ro.removeAllRanges(),ia>bn?(ro.addRange(Gi),ro.extend(on.node,on.offset)):(Gi.setEnd(on.node,on.offset),ro.addRange(Gi))))),Gi=[],ro=ti);ro=ro.parentNode;)1===ro.nodeType&&Gi.push({element:ro,left:ro.scrollLeft,top:ro.scrollTop});for("function"==typeof ti.focus&&ti.focus(),ti=0;ti<Gi.length;ti++)(ro=Gi[ti]).element.scrollLeft=ro.left,ro.element.scrollTop=ro.top}gi=!!Hn,Es=Hn=null,T.current=q,is=Pe;do{try{for(ti=T;null!==is;){var ps=is.flags;if(36&ps&&Rt(ti,is.alternate,is),128&ps){Gi=void 0;var la=is.ref;if(null!==la){var Fa=is.stateNode;switch(is.tag){case 5:Gi=Fa;break;default:Gi=Fa}"function"==typeof la?la(Gi):la.current=Gi}}is=is.nextEffect}}catch(Gs){if(null===is)throw Error(l(330));Hc(is,Gs),is=is.nextEffect}}while(null!==is);is=null,Ps(),ea=tt}else T.current=q;if(Wu)Wu=!1,au=T,Ud=R;else for(is=Pe;null!==is;)R=is.nextEffect,is.nextEffect=null,8&is.flags&&((ps=is).sibling=null,ps.stateNode=null),is=R;if(0===(Pe=T.pendingLanes)&&(Nu=null),1===Pe?T===Rs?Mu++:(Mu=0,Rs=T):Mu=0,q=q.stateNode,vi&&"function"==typeof vi.onCommitFiberRoot)try{vi.onCommitFiberRoot(Ci,q,void 0,64==(64&q.current.flags))}catch(Gs){}if(cu(T,lo()),kf)throw kf=!1,T=hd,hd=null,T;return 0!=(8&ea)||La(),null}function Mp(){for(;null!==is;){var T=is.alternate;Bd||null===cf||(0!=(8&is.flags)?di(is,cf)&&(Bd=!0):13===is.tag&&Xl(T,is)&&di(is,cf)&&(Bd=!0));var R=is.flags;0!=(256&R)&&Ye(T,is),0==(512&R)||Wu||(Wu=!0,zs(97,function(){return tc(),null})),is=is.nextEffect}}function tc(){if(90!==Ud){var T=97<Ud?97:Ud;return Ud=90,Aa(T,Bp)}return!1}function qu(T,R){lf.push(R,T),Wu||(Wu=!0,zs(97,function(){return tc(),null}))}function hf(T,R){_d.push(R,T),Wu||(Wu=!0,zs(97,function(){return tc(),null}))}function Bp(){if(null===au)return!1;var T=au;if(au=null,0!=(48&ea))throw Error(l(331));var R=ea;ea|=32;var q=_d;_d=[];for(var Pe=0;Pe<q.length;Pe+=2){var tt=q[Pe],on=q[Pe+1],bn=tt.destroy;if(tt.destroy=void 0,"function"==typeof bn)try{bn()}catch(wr){if(null===on)throw Error(l(330));Hc(on,wr)}}for(q=lf,lf=[],Pe=0;Pe<q.length;Pe+=2){tt=q[Pe],on=q[Pe+1];try{var rr=tt.create;tt.destroy=rr()}catch(wr){if(null===on)throw Error(l(330));Hc(on,wr)}}for(rr=T.current.firstEffect;null!==rr;)T=rr.nextEffect,rr.nextEffect=null,8&rr.flags&&(rr.sibling=null,rr.stateNode=null),rr=T;return ea=R,La(),!0}function yd(T,R,q){ki(T,R=V(0,R=fd(q,R),1)),R=mc(),null!==(T=uf(T,1))&&(fn(T,1,R),cu(T,R))}function Hc(T,R){if(3===T.tag)yd(T,T,R);else for(var q=T.return;null!==q;){if(3===q.tag){yd(q,T,R);break}if(1===q.tag){var Pe=q.stateNode;if("function"==typeof q.type.getDerivedStateFromError||"function"==typeof Pe.componentDidCatch&&(null===Nu||!Nu.has(Pe))){var tt=pe(q,T=fd(R,T),1);if(ki(q,tt),tt=mc(),null!==(q=uf(q,1)))fn(q,1,tt),cu(q,tt);else if("function"==typeof Pe.componentDidCatch&&(null===Nu||!Nu.has(Pe)))try{Pe.componentDidCatch(R,T)}catch(on){}break}}q=q.return}}function Zd(T,R,q){var Pe=T.pingCache;null!==Pe&&Pe.delete(R),R=mc(),T.pingedLanes|=T.suspendedLanes&q,Kl===T&&(zl&q)===q&&(4===Tc||3===Tc&&(62914560&zl)===zl&&500>lo()-zu?md(T,0):af|=q),cu(T,R)}function Uf(T,R){var q=T.stateNode;null!==q&&q.delete(R),0==(R=0)&&(0==(2&(R=T.mode))?R=1:0==(4&R)?R=99===ra()?1:2:(0===gu&&(gu=uc),0===(R=ee(62914560&~gu))&&(R=4194304))),q=mc(),null!==(T=uf(T,R))&&(fn(T,R,q),cu(T,q))}function ap(T,R,q,Pe){this.tag=T,this.key=q,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=R,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=Pe,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Zc(T,R,q,Pe){return new ap(T,R,q,Pe)}function bd(T){return!(!(T=T.prototype)||!T.isReactComponent)}function Ed(T,R){var q=T.alternate;return null===q?((q=Zc(T.tag,R,T.key,T.mode)).elementType=T.elementType,q.type=T.type,q.stateNode=T.stateNode,q.alternate=T,T.alternate=q):(q.pendingProps=R,q.type=T.type,q.flags=0,q.nextEffect=null,q.firstEffect=null,q.lastEffect=null),q.childLanes=T.childLanes,q.lanes=T.lanes,q.child=T.child,q.memoizedProps=T.memoizedProps,q.memoizedState=T.memoizedState,q.updateQueue=T.updateQueue,q.dependencies=null===(R=T.dependencies)?null:{lanes:R.lanes,firstContext:R.firstContext},q.sibling=T.sibling,q.index=T.index,q.ref=T.ref,q}function Sc(T,R,q,Pe,tt,on){var bn=2;if(Pe=T,"function"==typeof T)bd(T)&&(bn=1);else if("string"==typeof T)bn=5;else e:switch(T){case oe:return Mc(q.children,tt,on,R);case F:bn=8,tt|=16;break;case fe:bn=8,tt|=1;break;case ne:return(T=Zc(12,q,R,8|tt)).elementType=ne,T.type=ne,T.lanes=on,T;case Me:return(T=Zc(13,q,R,tt)).type=Me,T.elementType=Me,T.lanes=on,T;case Oe:return(T=Zc(19,q,R,tt)).elementType=Oe,T.lanes=on,T;case je:return Iu(q,tt,on,R);case Et:return(T=Zc(24,q,R,tt)).elementType=Et,T.lanes=on,T;default:if("object"==typeof T&&null!==T)switch(T.$$typeof){case he:bn=10;break e;case ce:bn=9;break e;case Ae:bn=11;break e;case be:bn=14;break e;case ue:bn=16,Pe=null;break e;case He:bn=22;break e}throw Error(l(130,null==T?T:typeof T,""))}return(R=Zc(bn,q,R,tt)).elementType=T,R.type=Pe,R.lanes=on,R}function Mc(T,R,q,Pe){return(T=Zc(7,T,Pe,R)).lanes=q,T}function Iu(T,R,q,Pe){return(T=Zc(23,T,Pe,R)).elementType=je,T.lanes=q,T}function jf(T,R,q){return(T=Zc(6,T,null,R)).lanes=q,T}function Dd(T,R,q){return(R=Zc(4,null!==T.children?T.children:[],T.key,R)).lanes=q,R.stateNode={containerInfo:T.containerInfo,pendingChildren:null,implementation:T.implementation},R}function Yp(T,R,q){this.tag=R,this.containerInfo=T,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=q,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ve(0),this.expirationTimes=Ve(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ve(0),this.mutableSourceEagerHydrationData=null}function Zp(T,R,q){var Pe=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ie,key:null==Pe?null:""+Pe,children:T,containerInfo:R,implementation:q}}function Bf(T,R,q,Pe){var tt=R.current,on=mc(),bn=jl(tt);e:if(q){t:{if(Mi(q=q._reactInternals)!==q||1!==q.tag)throw Error(l(170));var rr=q;do{switch(rr.tag){case 3:rr=rr.stateNode.context;break t;case 1:if(kn(rr.type)){rr=rr.stateNode.__reactInternalMemoizedMergedChildContext;break t}}rr=rr.return}while(null!==rr);throw Error(l(171))}if(1===q.tag){var wr=q.type;if(kn(wr)){q=kr(q,wr,rr);break e}}q=rr}else q=xt;return null===R.context?R.context=q:R.pendingContext=q,(R=Va(on,bn)).payload={element:T},null!==(Pe=void 0===Pe?null:Pe)&&(R.callback=Pe),ki(tt,R),gd(tt,bn,on),bn}function lp(T){if(!(T=T.current).child)return null;switch(T.child.tag){case 5:default:return T.child.stateNode}}function Op(T,R){if(null!==(T=T.memoizedState)&&null!==T.dehydrated){var q=T.retryLane;T.retryLane=0!==q&&q<R?q:R}}function cp(T,R){Op(T,R),(T=T.alternate)&&Op(T,R)}function Yf(T,R,q){var Pe=null!=q&&null!=q.hydrationOptions&&q.hydrationOptions.mutableSources||null;if(q=new Yp(T,R,null!=q&&!0===q.hydrate),R=Zc(3,null,null,2===R?7:1===R?3:0),q.current=R,R.stateNode=q,Zl(R),T[Yl]=q.current,Qo(8===T.nodeType?T.parentNode:T),Pe)for(T=0;T<Pe.length;T++){var tt=(R=Pe[T])._getVersion;tt=tt(R._source),null==q.mutableSourceEagerHydrationData?q.mutableSourceEagerHydrationData=[R,tt]:q.mutableSourceEagerHydrationData.push(R,tt)}this._internalRoot=q}function xd(T){return!(!T||1!==T.nodeType&&9!==T.nodeType&&11!==T.nodeType&&(8!==T.nodeType||" react-mount-point-unstable "!==T.nodeValue))}function _f(T,R,q,Pe,tt){var on=q._reactRootContainer;if(on){var bn=on._internalRoot;if("function"==typeof tt){var rr=tt;tt=function(){var qr=lp(bn);rr.call(qr)}}Bf(R,bn,T,tt)}else{if(on=q._reactRootContainer=function(qr,co){if(co||(co=!(!(co=qr?9===qr.nodeType?qr.documentElement:qr.firstChild:null)||1!==co.nodeType||!co.hasAttribute("data-reactroot"))),!co)for(var Ko;Ko=qr.lastChild;)qr.removeChild(Ko);return new Yf(qr,0,co?{hydrate:!0}:void 0)}(q,Pe),bn=on._internalRoot,"function"==typeof tt){var wr=tt;tt=function(){var qr=lp(bn);wr.call(qr)}}sp(function(){Bf(R,bn,T,tt)})}return lp(bn)}function Zf(T,R){var q=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!xd(R))throw Error(l(200));return Zp(T,R,null,q)}ip=function(T,R,q){var Pe=R.lanes;if(null!==T)if(T.memoizedProps!==R.pendingProps||en.current)Is=!0;else{if(0==(q&Pe)){switch(Is=!1,R.tag){case 3:rf(R),sr();break;case 5:N(R);break;case 1:kn(R.type)&&Gr(R);break;case 4:p(R,R.stateNode.containerInfo);break;case 10:Pe=R.memoizedProps.value;var tt=R.type._context;Be(Ba,tt._currentValue),tt._currentValue=Pe;break;case 13:if(null!==R.memoizedState)return 0!=(q&R.child.childLanes)?Hd(T,R,q):(Be(Q,1&Q.current),null!==(R=wc(T,R,q))?R.sibling:null);Be(Q,1&Q.current);break;case 19:if(Pe=0!=(q&R.childLanes),0!=(64&T.flags)){if(Pe)return kc(T,R,q);R.flags|=64}if(null!==(tt=R.memoizedState)&&(tt.rendering=null,tt.tail=null,tt.lastEffect=null),Be(Q,Q.current),Pe)break;return null;case 23:case 24:return R.lanes=0,Tu(T,R,q)}return wc(T,R,q)}Is=0!=(16384&T.flags)}else Is=!1;switch(R.lanes=0,R.tag){case 2:if(Pe=R.type,null!==T&&(T.alternate=null,R.alternate=null,R.flags|=2),T=R.pendingProps,tt=Gn(R,Dt.current),Us(R,q),tt=hl(null,R,Pe,T,tt,q),R.flags|=1,"object"==typeof tt&&null!==tt&&"function"==typeof tt.render&&void 0===tt.$$typeof){if(R.tag=1,R.memoizedState=null,R.updateQueue=null,kn(Pe)){var on=!0;Gr(R)}else on=!1;R.memoizedState=null!=tt.state?tt.state:null,Zl(R);var bn=Pe.getDerivedStateFromProps;"function"==typeof bn&&iu(R,Pe,bn,T),tt.updater=cc,R.stateNode=tt,tt._reactInternals=R,xl(R,Pe,T,q),R=cd(null,R,Pe,!0,on,q)}else R.tag=0,Ic(null,R,tt,q),R=R.child;return R;case 16:tt=R.elementType;e:{switch(null!==T&&(T.alternate=null,R.alternate=null,R.flags|=2),T=R.pendingProps,tt=(on=tt._init)(tt._payload),R.type=tt,on=R.tag=function(co){if("function"==typeof co)return bd(co)?1:0;if(null!=co){if((co=co.$$typeof)===Ae)return 11;if(co===be)return 14}return 2}(tt),T=Ws(tt,T),on){case 0:R=Lc(null,R,tt,T,q);break e;case 1:R=Pf(null,R,tt,T,q);break e;case 11:R=Nf(null,R,tt,T,q);break e;case 14:R=ld(null,R,tt,Ws(tt.type,T),Pe,q);break e}throw Error(l(306,tt,""))}return R;case 0:return tt=R.pendingProps,Lc(T,R,Pe=R.type,tt=R.elementType===Pe?tt:Ws(Pe,tt),q);case 1:return tt=R.pendingProps,Pf(T,R,Pe=R.type,tt=R.elementType===Pe?tt:Ws(Pe,tt),q);case 3:if(rf(R),Pe=R.updateQueue,null===T||null===Pe)throw Error(l(282));if(Pe=R.pendingProps,tt=null!==(tt=R.memoizedState)?tt.element:null,lc(T,R),pc(R,Pe,null,q),(Pe=R.memoizedState.element)===tt)sr(),R=wc(T,R,q);else{if((on=(tt=R.stateNode).hydrate)&&(qe=yc(R.stateNode.containerInfo.firstChild),ve=R,on=De=!0),on){if(null!=(T=tt.mutableSourceEagerHydrationData))for(tt=0;tt<T.length;tt+=2)(on=T[tt])._workInProgressVersionPrimary=T[tt+1],Tr.push(on);for(q=vl(R,null,Pe,q),R.child=q;q;)q.flags=-3&q.flags|1024,q=q.sibling}else Ic(T,R,Pe,q),sr();R=R.child}return R;case 5:return N(R),null===T&&Zt(R),on=null!==T?T.memoizedProps:null,bn=(tt=R.pendingProps).children,Hl(Pe=R.type,tt)?bn=null:null!==on&&Hl(Pe,on)&&(R.flags|=16),nf(T,R),Ic(T,R,bn,q),R.child;case 6:return null===T&&Zt(R),null;case 13:return Hd(T,R,q);case 4:return p(R,R.stateNode.containerInfo),Pe=R.pendingProps,null===T?R.child=bc(R,null,Pe,q):Ic(T,R,Pe,q),R.child;case 11:return tt=R.pendingProps,Nf(T,R,Pe=R.type,tt=R.elementType===Pe?tt:Ws(Pe,tt),q);case 7:return Ic(T,R,R.pendingProps,q),R.child;case 8:case 12:return Ic(T,R,R.pendingProps.children,q),R.child;case 10:e:{Pe=R.type._context,bn=R.memoizedProps,on=(tt=R.pendingProps).value;var rr=R.type._context;if(Be(Ba,rr._currentValue),rr._currentValue=on,null!==bn)if(0==(on=io(rr=bn.value,on)?0:0|("function"==typeof Pe._calculateChangedBits?Pe._calculateChangedBits(rr,on):1073741823))){if(bn.children===tt.children&&!en.current){R=wc(T,R,q);break e}}else for(null!==(rr=R.child)&&(rr.return=R);null!==rr;){var wr=rr.dependencies;if(null!==wr){bn=rr.child;for(var qr=wr.firstContext;null!==qr;){if(qr.context===Pe&&0!=(qr.observedBits&on)){1===rr.tag&&((qr=Va(-1,q&-q)).tag=2,ki(rr,qr)),rr.lanes|=q,null!==(qr=rr.alternate)&&(qr.lanes|=q),ol(rr.return,q),wr.lanes|=q;break}qr=qr.next}}else bn=10===rr.tag&&rr.type===R.type?null:rr.child;if(null!==bn)bn.return=rr;else for(bn=rr;null!==bn;){if(bn===R){bn=null;break}if(null!==(rr=bn.sibling)){rr.return=bn.return,bn=rr;break}bn=bn.return}rr=bn}Ic(T,R,tt.children,q),R=R.child}return R;case 9:return tt=R.type,Pe=(on=R.pendingProps).children,Us(R,q),Pe=Pe(tt=sl(tt,on.unstable_observedBits)),R.flags|=1,Ic(T,R,Pe,q),R.child;case 14:return on=Ws(tt=R.type,R.pendingProps),ld(T,R,tt,on=Ws(tt.type,on),Pe,q);case 15:return Jc(T,R,R.type,R.pendingProps,Pe,q);case 17:return tt=R.pendingProps,tt=R.elementType===(Pe=R.type)?tt:Ws(Pe,tt),null!==T&&(T.alternate=null,R.alternate=null,R.flags|=2),R.tag=1,kn(Pe)?(T=!0,Gr(R)):T=!1,Us(R,q),bu(R,Pe,tt),xl(R,Pe,tt,q),cd(null,R,Pe,!0,T,q);case 19:return kc(T,R,q);case 23:case 24:return Tu(T,R,q)}throw Error(l(156,R.tag))},Yf.prototype.render=function(T){Bf(T,this._internalRoot,null,null)},Yf.prototype.unmount=function(){var T=this._internalRoot,R=T.containerInfo;Bf(null,T,null,function(){R[Yl]=null})},se=function(T){13===T.tag&&(gd(T,4,mc()),cp(T,4))},ct=function(T){13===T.tag&&(gd(T,67108864,mc()),cp(T,67108864))},Ke=function(T){if(13===T.tag){var R=mc(),q=jl(T);gd(T,q,R),cp(T,q)}},Xe=function(T,R){return R()},ht=function(T,R,q){switch(R){case"input":if(Ht(T,q),R=q.name,"radio"===q.type&&null!=R){for(q=T;q.parentNode;)q=q.parentNode;for(q=q.querySelectorAll("input[name="+JSON.stringify(""+R)+'][type="radio"]'),R=0;R<q.length;R++){var Pe=q[R];if(Pe!==T&&Pe.form===T.form){var tt=Ot(Pe);if(!tt)throw Error(l(90));ar(Pe),Ht(Pe,tt)}}}break;case"textarea":qn(T,q);break;case"select":null!=(R=q.value)&&Kt(T,!!q.multiple,R,!1)}},Pt=op,Ut=function(T,R,q,Pe,tt){var on=ea;ea|=4;try{return Aa(98,T.bind(null,R,q,Pe,tt))}finally{0===(ea=on)&&(Qc(),La())}},ot=function(){0==(49&ea)&&(function(){if(null!==Xc){var T=Xc;Xc=null,T.forEach(function(R){R.expiredLanes|=24&R.pendingLanes,cu(R,lo())})}La()}(),tc())},Nn=function(T,R){var q=ea;ea|=2;try{return T(R)}finally{0===(ea=q)&&(Qc(),La())}};var Ap={Events:[Fe,we,Ot,at,it,tc,{current:!1}]},Vd={findFiberByHostInstance:Je,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},up={bundleType:Vd.bundleType,version:Vd.version,rendererPackageName:Vd.rendererPackageName,rendererConfig:Vd.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:J.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return null===(T=ei(T))?null:T.stateNode},findFiberByHostInstance:Vd.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var gf=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!gf.isDisabled&&gf.supportsFiber)try{Ci=gf.inject(up),vi=gf}catch(T){}}o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Ap,o.createPortal=Zf,o.findDOMNode=function(T){if(null==T)return null;if(1===T.nodeType)return T;var R=T._reactInternals;if(void 0===R)throw"function"==typeof T.render?Error(l(188)):Error(l(268,Object.keys(T)));return null===(T=ei(R))?null:T.stateNode},o.flushSync=function(T,R){var q=ea;if(0!=(48&q))return T(R);ea|=1;try{if(T)return Aa(99,T.bind(null,R))}finally{ea=q,La()}},o.hydrate=function(T,R,q){if(!xd(R))throw Error(l(200));return _f(null,T,R,!0,q)},o.render=function(T,R,q){if(!xd(R))throw Error(l(200));return _f(null,T,R,!1,q)},o.unmountComponentAtNode=function(T){if(!xd(T))throw Error(l(40));return!!T._reactRootContainer&&(sp(function(){_f(null,null,T,!1,function(){T._reactRootContainer=null,T[Yl]=null})}),!0)},o.unstable_batchedUpdates=op,o.unstable_createPortal=function(T,R){return Zf(T,R,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},o.unstable_renderSubtreeIntoContainer=function(T,R,q,Pe){if(!xd(q))throw Error(l(200));if(null==T||void 0===T._reactInternals)throw Error(l(38));return _f(T,R,q,!1,Pe)},o.version="17.0.2"},function(g,o,t){"use strict";g.exports=t(877)},function(g,o,t){"use strict";var e,s,a,l;if("object"==typeof performance&&"function"==typeof performance.now){var u=performance;o.unstable_now=function(){return u.now()}}else{var h=Date,_=h.now();o.unstable_now=function(){return h.now()-_}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var m=null,b=null,C=function(){if(null!==m)try{var lt=o.unstable_now();m(!0,lt),m=null}catch(nn){throw setTimeout(C,0),nn}};e=function(lt){null!==m?setTimeout(e,0,lt):(m=lt,setTimeout(C,0))},s=function(lt,nn){b=setTimeout(lt,nn)},a=function(){clearTimeout(b)},o.unstable_shouldYield=function(){return!1},l=o.unstable_forceFrameRate=function(){}}else{var D=window.setTimeout,x=window.clearTimeout;if("undefined"!=typeof console){var j=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof j&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var H=!1,z=null,U=-1,M=5,I=0;o.unstable_shouldYield=function(){return o.unstable_now()>=I},l=function(){},o.unstable_forceFrameRate=function(lt){0>lt||125<lt?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<lt?Math.floor(1e3/lt):5};var J=new MessageChannel,Y=J.port2;J.port1.onmessage=function(){if(null!==z){var lt=o.unstable_now();I=lt+M;try{z(!0,lt)?Y.postMessage(null):(H=!1,z=null)}catch(nn){throw Y.postMessage(null),nn}}else H=!1},e=function(lt){z=lt,H||(H=!0,Y.postMessage(null))},s=function(lt,nn){U=D(function(){lt(o.unstable_now())},nn)},a=function(){x(U),U=-1}}function ie(lt,nn){var St=lt.length;lt.push(nn);e:for(;;){var At=St-1>>>1,Qe=lt[At];if(!(void 0!==Qe&&0<ne(Qe,nn)))break e;lt[At]=nn,lt[St]=Qe,St=At}}function oe(lt){return void 0===(lt=lt[0])?null:lt}function fe(lt){var nn=lt[0];if(void 0!==nn){var St=lt.pop();if(St!==nn){lt[0]=St;e:for(var At=0,Qe=lt.length;At<Qe;){var It=2*(At+1)-1,ae=lt[It],Ie=It+1,dt=lt[Ie];if(void 0!==ae&&0>ne(ae,St))void 0!==dt&&0>ne(dt,ae)?(lt[At]=dt,lt[Ie]=St,At=Ie):(lt[At]=ae,lt[It]=St,At=It);else{if(!(void 0!==dt&&0>ne(dt,St)))break e;lt[At]=dt,lt[Ie]=St,At=Ie}}}return nn}return null}function ne(lt,nn){var St=lt.sortIndex-nn.sortIndex;return 0!==St?St:lt.id-nn.id}var he=[],ce=[],Ae=1,Me=null,Oe=3,be=!1,ue=!1,He=!1;function $e(lt){for(var nn=oe(ce);null!==nn;){if(null===nn.callback)fe(ce);else{if(!(nn.startTime<=lt))break;fe(ce),nn.sortIndex=nn.expirationTime,ie(he,nn)}nn=oe(ce)}}function F(lt){if(He=!1,$e(lt),!ue)if(null!==oe(he))ue=!0,e(je);else{var nn=oe(ce);null!==nn&&s(F,nn.startTime-lt)}}function je(lt,nn){ue=!1,He&&(He=!1,a()),be=!0;var St=Oe;try{for($e(nn),Me=oe(he);null!==Me&&(!(Me.expirationTime>nn)||lt&&!o.unstable_shouldYield());){var At=Me.callback;if("function"==typeof At){Me.callback=null,Oe=Me.priorityLevel;var Qe=At(Me.expirationTime<=nn);nn=o.unstable_now(),"function"==typeof Qe?Me.callback=Qe:Me===oe(he)&&fe(he),$e(nn)}else fe(he);Me=oe(he)}if(null!==Me)var It=!0;else{var ae=oe(ce);null!==ae&&s(F,ae.startTime-nn),It=!1}return It}finally{Me=null,Oe=St,be=!1}}var Et=l;o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(lt){lt.callback=null},o.unstable_continueExecution=function(){ue||be||(ue=!0,e(je))},o.unstable_getCurrentPriorityLevel=function(){return Oe},o.unstable_getFirstCallbackNode=function(){return oe(he)},o.unstable_next=function(lt){switch(Oe){case 1:case 2:case 3:var nn=3;break;default:nn=Oe}var St=Oe;Oe=nn;try{return lt()}finally{Oe=St}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=Et,o.unstable_runWithPriority=function(lt,nn){switch(lt){case 1:case 2:case 3:case 4:case 5:break;default:lt=3}var St=Oe;Oe=lt;try{return nn()}finally{Oe=St}},o.unstable_scheduleCallback=function(lt,nn,St){var At=o.unstable_now();switch(St="object"==typeof St&&null!==St&&"number"==typeof(St=St.delay)&&0<St?At+St:At,lt){case 1:var Qe=-1;break;case 2:Qe=250;break;case 5:Qe=1073741823;break;case 4:Qe=1e4;break;default:Qe=5e3}return lt={id:Ae++,callback:nn,priorityLevel:lt,startTime:St,expirationTime:Qe=St+Qe,sortIndex:-1},St>At?(lt.sortIndex=St,ie(ce,lt),null===oe(he)&&lt===oe(ce)&&(He?a():He=!0,s(F,St-At))):(lt.sortIndex=Qe,ie(he,lt),ue||be||(ue=!0,e(je))),lt},o.unstable_wrapCallback=function(lt){var nn=Oe;return function(){var St=Oe;Oe=nn;try{return lt.apply(this,arguments)}finally{Oe=St}}}},function(g,o,t){"use strict";var e=t(879);function s(){}function a(){}a.resetWarningCache=s,g.exports=function(){function l(_,m,b,C,D,x){if(x!==e){var j=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw j.name="Invariant Violation",j}}function u(){return l}l.isRequired=l;var h={array:l,bool:l,func:l,number:l,object:l,string:l,symbol:l,any:l,arrayOf:u,element:l,elementType:l,instanceOf:u,node:l,objectOf:u,oneOf:u,oneOfType:u,shape:u,exact:u,checkPropTypes:a,resetWarningCache:s};return h.PropTypes=h,h}},function(g,o,t){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,o,t){"use strict";var e="function"==typeof Symbol&&Symbol.for,s=e?Symbol.for("react.element"):60103,a=e?Symbol.for("react.portal"):60106,l=e?Symbol.for("react.fragment"):60107,u=e?Symbol.for("react.strict_mode"):60108,h=e?Symbol.for("react.profiler"):60114,_=e?Symbol.for("react.provider"):60109,m=e?Symbol.for("react.context"):60110,b=e?Symbol.for("react.async_mode"):60111,C=e?Symbol.for("react.concurrent_mode"):60111,D=e?Symbol.for("react.forward_ref"):60112,x=e?Symbol.for("react.suspense"):60113,j=e?Symbol.for("react.suspense_list"):60120,H=e?Symbol.for("react.memo"):60115,z=e?Symbol.for("react.lazy"):60116,U=e?Symbol.for("react.block"):60121,M=e?Symbol.for("react.fundamental"):60117,I=e?Symbol.for("react.responder"):60118,J=e?Symbol.for("react.scope"):60119;function Y(oe){if("object"==typeof oe&&null!==oe){var fe=oe.$$typeof;switch(fe){case s:switch(oe=oe.type){case b:case C:case l:case h:case u:case x:return oe;default:switch(oe=oe&&oe.$$typeof){case m:case D:case z:case H:case _:return oe;default:return fe}}case a:return fe}}}function ie(oe){return Y(oe)===C}o.AsyncMode=b,o.ConcurrentMode=C,o.ContextConsumer=m,o.ContextProvider=_,o.Element=s,o.ForwardRef=D,o.Fragment=l,o.Lazy=z,o.Memo=H,o.Portal=a,o.Profiler=h,o.StrictMode=u,o.Suspense=x,o.isAsyncMode=function(oe){return ie(oe)||Y(oe)===b},o.isConcurrentMode=ie,o.isContextConsumer=function(oe){return Y(oe)===m},o.isContextProvider=function(oe){return Y(oe)===_},o.isElement=function(oe){return"object"==typeof oe&&null!==oe&&oe.$$typeof===s},o.isForwardRef=function(oe){return Y(oe)===D},o.isFragment=function(oe){return Y(oe)===l},o.isLazy=function(oe){return Y(oe)===z},o.isMemo=function(oe){return Y(oe)===H},o.isPortal=function(oe){return Y(oe)===a},o.isProfiler=function(oe){return Y(oe)===h},o.isStrictMode=function(oe){return Y(oe)===u},o.isSuspense=function(oe){return Y(oe)===x},o.isValidElementType=function(oe){return"string"==typeof oe||"function"==typeof oe||oe===l||oe===C||oe===h||oe===u||oe===x||oe===j||"object"==typeof oe&&null!==oe&&(oe.$$typeof===z||oe.$$typeof===H||oe.$$typeof===_||oe.$$typeof===m||oe.$$typeof===D||oe.$$typeof===M||oe.$$typeof===I||oe.$$typeof===J||oe.$$typeof===U)},o.typeOf=Y},function(g,o){g.exports=function(t,e){for(var s=-1,a=null==t?0:t.length;++s<a&&!1!==e(t[s],s,t););return t}},function(g,o,t){var e=t(134),s=t(135);g.exports=function(a,l){return a&&e(l,s(l),a)}},function(g,o,t){var e=t(134),s=t(153);g.exports=function(a,l){return a&&e(l,s(l),a)}},function(g,o,t){var e=t(134),s=t(241);g.exports=function(a,l){return e(a,s(a),l)}},function(g,o,t){var e=t(134),s=t(439);g.exports=function(a,l){return e(a,s(a),l)}},function(g,o){var t=Object.prototype.hasOwnProperty;g.exports=function(e){var s=e.length,a=new e.constructor(s);return s&&"string"==typeof e[0]&&t.call(e,"index")&&(a.index=e.index,a.input=e.input),a}},function(g,o,t){var e=t(230),s=t(888),a=t(889),l=t(890),u=t(361);g.exports=function(h,_,m){var b=h.constructor;switch(_){case"[object ArrayBuffer]":return e(h);case"[object Boolean]":case"[object Date]":return new b(+h);case"[object DataView]":return s(h,m);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return u(h,m);case"[object Map]":return new b;case"[object Number]":case"[object String]":return new b(h);case"[object RegExp]":return a(h);case"[object Set]":return new b;case"[object Symbol]":return l(h)}}},function(g,o,t){var e=t(230);g.exports=function(s,a){var l=a?e(s.buffer):s.buffer;return new s.constructor(l,s.byteOffset,s.byteLength)}},function(g,o){var t=/\w*$/;g.exports=function(e){var s=new e.constructor(e.source,t.exec(e));return s.lastIndex=e.lastIndex,s}},function(g,o,t){var e=t(133),s=e?e.prototype:void 0,a=s?s.valueOf:void 0;g.exports=function(l){return a?Object(a.call(l)):{}}},function(g,o,t){var e=t(892),s=t(233),a=t(234),l=a&&a.isMap,u=l?s(l):e;g.exports=u},function(g,o,t){var e=t(155),s=t(78);g.exports=function(a){return s(a)&&"[object Map]"==e(a)}},function(g,o,t){var e=t(894),s=t(233),a=t(234),l=a&&a.isSet,u=l?s(l):e;g.exports=u},function(g,o,t){var e=t(155),s=t(78);g.exports=function(a){return s(a)&&"[object Set]"==e(a)}},function(g,o,t){var e=t(156),s=t(896),a=t(897),l=t(136);g.exports=function(u,h){return h=e(h,u),null==(u=a(u,h))||delete u[l(s(h))]}},function(g,o){g.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(g,o,t){var e=t(242),s=t(388);g.exports=function(a,l){return l.length<2?a:e(a,s(l,0,-1))}},function(g,o,t){var e=t(140);g.exports=function(s){return e(s)?void 0:s}},function(g,o,t){var e=t(900),s=t(368),a=t(369);g.exports=function(l){return a(s(l,void 0,e),l+"")}},function(g,o,t){var e=t(901);g.exports=function(s){return null!=s&&s.length?e(s,1):[]}},function(g,o,t){var e=t(240),s=t(902);g.exports=function a(l,u,h,_,m){var b=-1,C=l.length;for(h||(h=s),m||(m=[]);++b<C;){var D=l[b];u>0&&h(D)?u>1?a(D,u-1,h,_,m):e(m,D):_||(m[m.length]=D)}return m}},function(g,o,t){var e=t(133),s=t(151),a=t(52),l=e?e.isConcatSpreadable:void 0;g.exports=function(u){return a(u)||s(u)||!!(l&&u&&u[l])}},function(g,o,t){var e=t(904);g.exports=e},function(g,o,t){var e=t(35),s=t(905),a=String.prototype;g.exports=function(l){var u=l.repeat;return"string"==typeof l||l===a||e(a,l)&&u===a.repeat?s:u}},function(g,o,t){t(906);var e=t(42);g.exports=e("String").repeat},function(g,o,t){t(22)({target:"String",proto:!0},{repeat:t(907)})},function(g,o,t){"use strict";var e=t(17),s=t(129),a=t(67),l=t(113),u=e.RangeError;g.exports=function(h){var _=a(l(this)),m="",b=s(h);if(b<0||b==1/0)throw u("Wrong number of repetitions");for(;b>0;(b>>>=1)&&(_+=_))1&b&&(m+=_);return m}},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.CopyToClipboard=void 0;var e=a(t(0)),s=a(t(909));function a(z){return z&&z.__esModule?z:{default:z}}function l(z){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(U){return typeof U}:function(U){return U&&"function"==typeof Symbol&&U.constructor===Symbol&&U!==Symbol.prototype?"symbol":typeof U})(z)}function u(z,U){var M=Object.keys(z);if(Object.getOwnPropertySymbols){var I=Object.getOwnPropertySymbols(z);U&&(I=I.filter(function(J){return Object.getOwnPropertyDescriptor(z,J).enumerable})),M.push.apply(M,I)}return M}function _(z,U){if(!(z instanceof U))throw new TypeError("Cannot call a class as a function")}function b(z,U){return!U||"object"!==l(U)&&"function"!=typeof U?D(z):U}function C(z){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(U){return U.__proto__||Object.getPrototypeOf(U)})(z)}function D(z){if(void 0===z)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return z}function x(z,U){return(x=Object.setPrototypeOf||function(M,I){return M.__proto__=I,M})(z,U)}function j(z,U,M){return U in z?Object.defineProperty(z,U,{value:M,enumerable:!0,configurable:!0,writable:!0}):z[U]=M,z}var H=function(z){function U(){var Y,ie;_(this,U);for(var oe=arguments.length,fe=new Array(oe),ne=0;ne<oe;ne++)fe[ne]=arguments[ne];return j(D(ie=b(this,(Y=C(U)).call.apply(Y,[this].concat(fe)))),"onClick",function(he){var ce=ie.props,Ae=ce.text,Me=ce.onCopy,be=ce.options,ue=e.default.Children.only(ce.children),He=(0,s.default)(Ae,be);Me&&Me(Ae,He),ue&&ue.props&&"function"==typeof ue.props.onClick&&ue.props.onClick(he)}),ie}var I;return function(Y,ie){if("function"!=typeof ie&&null!==ie)throw new TypeError("Super expression must either be null or a function");Y.prototype=Object.create(ie&&ie.prototype,{constructor:{value:Y,writable:!0,configurable:!0}}),ie&&x(Y,ie)}(U,z),(I=[{key:"render",value:function(){var Y=this.props,ie=Y.children,oe=function(z,U){if(null==z)return{};var M,I,J=function(ie,oe){if(null==ie)return{};var fe,ne,he={},ce=Object.keys(ie);for(ne=0;ne<ce.length;ne++)oe.indexOf(fe=ce[ne])>=0||(he[fe]=ie[fe]);return he}(z,U);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(z);for(I=0;I<Y.length;I++)U.indexOf(M=Y[I])>=0||Object.prototype.propertyIsEnumerable.call(z,M)&&(J[M]=z[M])}return J}(Y,["text","onCopy","options","children"]),fe=e.default.Children.only(ie);return e.default.cloneElement(fe,function(ne){for(var he=1;he<arguments.length;he++){var ce=null!=arguments[he]?arguments[he]:{};he%2?u(ce,!0).forEach(function(Ae){j(ne,Ae,ce[Ae])}):Object.getOwnPropertyDescriptors?Object.defineProperties(ne,Object.getOwnPropertyDescriptors(ce)):u(ce).forEach(function(Ae){Object.defineProperty(ne,Ae,Object.getOwnPropertyDescriptor(ce,Ae))})}return ne}({},oe,{onClick:this.onClick}))}}])&&function(z,U){for(var M=0;M<U.length;M++){var I=U[M];I.enumerable=I.enumerable||!1,I.configurable=!0,"value"in I&&(I.writable=!0),Object.defineProperty(z,I.key,I)}}(U.prototype,I),U}(e.default.PureComponent);o.CopyToClipboard=H,j(H,"defaultProps",{onCopy:void 0,options:void 0})},function(g,o,t){"use strict";var e=t(910),s={"text/plain":"Text","text/html":"Url",default:"Text"};g.exports=function(a,l){var u,h,_,m,b,C,H,z,D=!1;l||(l={}),u=l.debug||!1;try{if(_=e(),m=document.createRange(),b=document.getSelection(),(C=document.createElement("span")).textContent=a,C.style.all="unset",C.style.position="fixed",C.style.top=0,C.style.clip="rect(0, 0, 0, 0)",C.style.whiteSpace="pre",C.style.webkitUserSelect="text",C.style.MozUserSelect="text",C.style.msUserSelect="text",C.style.userSelect="text",C.addEventListener("copy",function(x){x.stopPropagation(),l.format&&(x.preventDefault(),void 0===x.clipboardData?(u&&console.warn("unable to use e.clipboardData"),u&&console.warn("trying IE specific stuff"),window.clipboardData.clearData(),window.clipboardData.setData(s[l.format]||s.default,a)):(x.clipboardData.clearData(),x.clipboardData.setData(l.format,a))),l.onCopy&&(x.preventDefault(),l.onCopy(x.clipboardData))}),document.body.appendChild(C),m.selectNodeContents(C),b.addRange(m),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");D=!0}catch(x){u&&console.error("unable to copy using execCommand: ",x),u&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(l.format||"text",a),l.onCopy&&l.onCopy(window.clipboardData),D=!0}catch(j){u&&console.error("unable to copy using clipboardData: ",j),u&&console.error("falling back to prompt"),H="message"in l?l.message:"Copy to clipboard: #{key}, Enter",z=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C",h=H.replace(/#{\s*key\s*}/g,z),window.prompt(h,a)}}finally{b&&("function"==typeof b.removeRange?b.removeRange(m):b.removeAllRanges()),C&&document.body.removeChild(C),_()}return D}},function(g,o){g.exports=function(){var t=document.getSelection();if(!t.rangeCount)return function(){};for(var e=document.activeElement,s=[],a=0;a<t.rangeCount;a++)s.push(t.getRangeAt(a));switch(e.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":e.blur();break;default:e=null}return t.removeAllRanges(),function(){"Caret"===t.type&&t.removeAllRanges(),t.rangeCount||s.forEach(function(l){t.addRange(l)}),e&&e.focus()}}},function(g,o){function t(Yn){return Yn instanceof Map?Yn.clear=Yn.delete=Yn.set=function(){throw new Error("map is read-only")}:Yn instanceof Set&&(Yn.add=Yn.clear=Yn.delete=function(){throw new Error("set is read-only")}),Object.freeze(Yn),Object.getOwnPropertyNames(Yn).forEach(function(Cn){var Kt=Yn[Cn];"object"!=typeof Kt||Object.isFrozen(Kt)||t(Kt)}),Yn}var e=t;e.default=t;class a{constructor(Cn){void 0===Cn.data&&(Cn.data={}),this.data=Cn.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function l(Yn){return Yn.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function u(Yn,...Cn){const Kt=Object.create(null);for(const dn in Yn)Kt[dn]=Yn[dn];return Cn.forEach(function(dn){for(const Kn in dn)Kt[Kn]=dn[Kn]}),Kt}const h=Yn=>!!Yn.kind;class _{constructor(Cn,Kt){this.buffer="",this.classPrefix=Kt.classPrefix,Cn.walk(this)}addText(Cn){this.buffer+=l(Cn)}openNode(Cn){if(!h(Cn))return;let Kt=Cn.kind;Cn.sublanguage||(Kt=`${this.classPrefix}${Kt}`),this.span(Kt)}closeNode(Cn){h(Cn)&&(this.buffer+="</span>")}value(){return this.buffer}span(Cn){this.buffer+=`<span class="${Cn}">`}}class m{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(Cn){this.top.children.push(Cn)}openNode(Cn){const Kt={kind:Cn,children:[]};this.add(Kt),this.stack.push(Kt)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(Cn){return this.constructor._walk(Cn,this.rootNode)}static _walk(Cn,Kt){return"string"==typeof Kt?Cn.addText(Kt):Kt.children&&(Cn.openNode(Kt),Kt.children.forEach(dn=>this._walk(Cn,dn)),Cn.closeNode(Kt)),Cn}static _collapse(Cn){"string"!=typeof Cn&&Cn.children&&(Cn.children.every(Kt=>"string"==typeof Kt)?Cn.children=[Cn.children.join("")]:Cn.children.forEach(Kt=>{m._collapse(Kt)}))}}class b extends m{constructor(Cn){super(),this.options=Cn}addKeyword(Cn,Kt){""!==Cn&&(this.openNode(Kt),this.addText(Cn),this.closeNode())}addText(Cn){""!==Cn&&this.add(Cn)}addSublanguage(Cn,Kt){const dn=Cn.root;dn.kind=Kt,dn.sublanguage=!0,this.add(dn)}toHTML(){return new _(this,this.options).value()}finalize(){return!0}}function C(Yn){return Yn?"string"==typeof Yn?Yn:Yn.source:null}const D=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,x="[a-zA-Z]\\w*",j="[a-zA-Z_]\\w*",H="\\b\\d+(\\.\\d+)?",z="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",U="\\b(0b[01]+)",M={begin:"\\\\[\\s\\S]",relevance:0},I={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[M]},J={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[M]},Y={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/},ie=function(Yn,Cn,Kt={}){const dn=u({className:"comment",begin:Yn,end:Cn,contains:[]},Kt);return dn.contains.push(Y),dn.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),dn},oe=ie("//","$"),fe=ie("/\\*","\\*/"),ne=ie("#","$");var $e=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:j,NUMBER_RE:H,C_NUMBER_RE:z,BINARY_NUMBER_RE:U,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(Yn={})=>{const Cn=/^#![ ]*\//;return Yn.binary&&(Yn.begin=function(...Kt){return Kt.map(dn=>C(dn)).join("")}(Cn,/.*\b/,Yn.binary,/\b.*/)),u({className:"meta",begin:Cn,end:/$/,relevance:0,"on:begin":(Kt,dn)=>{0!==Kt.index&&dn.ignoreMatch()}},Yn)},BACKSLASH_ESCAPE:M,APOS_STRING_MODE:I,QUOTE_STRING_MODE:J,PHRASAL_WORDS_MODE:Y,COMMENT:ie,C_LINE_COMMENT_MODE:oe,C_BLOCK_COMMENT_MODE:fe,HASH_COMMENT_MODE:ne,NUMBER_MODE:{className:"number",begin:H,relevance:0},C_NUMBER_MODE:{className:"number",begin:z,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:U,relevance:0},CSS_NUMBER_MODE:{className:"number",begin:H+"(%|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},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[M,{begin:/\[/,end:/\]/,relevance:0,contains:[M]}]}]},TITLE_MODE:{className:"title",begin:x,relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:j,relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(Yn){return Object.assign(Yn,{"on:begin":(Cn,Kt)=>{Kt.data._beginMatch=Cn[1]},"on:end":(Cn,Kt)=>{Kt.data._beginMatch!==Cn[1]&&Kt.ignoreMatch()}})}});function F(Yn,Cn){"."===Yn.input[Yn.index-1]&&Cn.ignoreMatch()}function je(Yn,Cn){Cn&&Yn.beginKeywords&&(Yn.begin="\\b("+Yn.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Yn.__beforeBegin=F,Yn.keywords=Yn.keywords||Yn.beginKeywords,delete Yn.beginKeywords,void 0===Yn.relevance&&(Yn.relevance=0))}function Et(Yn,Cn){Array.isArray(Yn.illegal)&&(Yn.illegal=function(...Kt){return"("+Kt.map(dn=>C(dn)).join("|")+")"}(...Yn.illegal))}function lt(Yn,Cn){if(Yn.match){if(Yn.begin||Yn.end)throw new Error("begin & end are not supported with match");Yn.begin=Yn.match,delete Yn.match}}function nn(Yn,Cn){void 0===Yn.relevance&&(Yn.relevance=1)}const St=["of","and","for","in","not","or","if","then","parent","list","value"];function At(Yn,Cn,Kt="keyword"){const dn={};return"string"==typeof Yn?Kn(Kt,Yn.split(" ")):Array.isArray(Yn)?Kn(Kt,Yn):Object.keys(Yn).forEach(function(qn){Object.assign(dn,At(Yn[qn],Cn,qn))}),dn;function Kn(qn,Sn){Cn&&(Sn=Sn.map($n=>$n.toLowerCase())),Sn.forEach(function($n){const En=$n.split("|");dn[En[0]]=[qn,Qe(En[0],En[1])]})}}function Qe(Yn,Cn){return Cn?Number(Cn):St.includes(Yn.toLowerCase())?0:1}function It(Yn,{}){function Kt(qn,Sn){return new RegExp(C(qn),"m"+(Yn.case_insensitive?"i":"")+(Sn?"g":""))}class dn{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(Sn,$n){$n.position=this.position++,this.matchIndexes[this.matchAt]=$n,this.regexes.push([$n,Sn]),this.matchAt+=new RegExp(Sn.toString()+"|").exec("").length-1+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const Sn=this.regexes.map($n=>$n[1]);this.matcherRe=Kt(function($n,En="|"){let Fn=0;return $n.map(Dn=>{Fn+=1;const mn=Fn;let jn=C(Dn),Xt="";for(;jn.length>0;){const ut=D.exec(jn);if(!ut){Xt+=jn;break}Xt+=jn.substring(0,ut.index),jn=jn.substring(ut.index+ut[0].length),"\\"===ut[0][0]&&ut[1]?Xt+="\\"+String(Number(ut[1])+mn):(Xt+=ut[0],"("===ut[0]&&Fn++)}return Xt}).map(Dn=>`(${Dn})`).join(En)}(Sn),!0),this.lastIndex=0}exec(Sn){this.matcherRe.lastIndex=this.lastIndex;const $n=this.matcherRe.exec(Sn);if(!$n)return null;const En=$n.findIndex((Dn,mn)=>mn>0&&void 0!==Dn),Fn=this.matchIndexes[En];return $n.splice(0,En),Object.assign($n,Fn)}}class Kn{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(Sn){if(this.multiRegexes[Sn])return this.multiRegexes[Sn];const $n=new dn;return this.rules.slice(Sn).forEach(([En,Fn])=>$n.addRule(En,Fn)),$n.compile(),this.multiRegexes[Sn]=$n,$n}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(Sn,$n){this.rules.push([Sn,$n]),"begin"===$n.type&&this.count++}exec(Sn){const $n=this.getMatcher(this.regexIndex);$n.lastIndex=this.lastIndex;let En=$n.exec(Sn);if(this.resumingScanAtSamePosition()&&(!En||En.index!==this.lastIndex)){const Fn=this.getMatcher(0);Fn.lastIndex=this.lastIndex+1,En=Fn.exec(Sn)}return En&&(this.regexIndex+=En.position+1,this.regexIndex===this.count&&this.considerAll()),En}}if(Yn.compilerExtensions||(Yn.compilerExtensions=[]),Yn.contains&&Yn.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.");return Yn.classNameAliases=u(Yn.classNameAliases||{}),function qn(Sn,$n){const En=Sn;if(Sn.isCompiled)return En;[lt].forEach(Dn=>Dn(Sn,$n)),Yn.compilerExtensions.forEach(Dn=>Dn(Sn,$n)),Sn.__beforeBegin=null,[je,Et,nn].forEach(Dn=>Dn(Sn,$n)),Sn.isCompiled=!0;let Fn=null;if("object"==typeof Sn.keywords&&(Fn=Sn.keywords.$pattern,delete Sn.keywords.$pattern),Sn.keywords&&(Sn.keywords=At(Sn.keywords,Yn.case_insensitive)),Sn.lexemes&&Fn)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return Fn=Fn||Sn.lexemes||/\w+/,En.keywordPatternRe=Kt(Fn,!0),$n&&(Sn.begin||(Sn.begin=/\B|\b/),En.beginRe=Kt(Sn.begin),Sn.endSameAsBegin&&(Sn.end=Sn.begin),Sn.end||Sn.endsWithParent||(Sn.end=/\B|\b/),Sn.end&&(En.endRe=Kt(Sn.end)),En.terminatorEnd=C(Sn.end)||"",Sn.endsWithParent&&$n.terminatorEnd&&(En.terminatorEnd+=(Sn.end?"|":"")+$n.terminatorEnd)),Sn.illegal&&(En.illegalRe=Kt(Sn.illegal)),Sn.contains||(Sn.contains=[]),Sn.contains=[].concat(...Sn.contains.map(function(Dn){return(mn="self"===Dn?Sn:Dn).variants&&!mn.cachedVariants&&(mn.cachedVariants=mn.variants.map(function(jn){return u(mn,{variants:null},jn)})),mn.cachedVariants?mn.cachedVariants:ae(mn)?u(mn,{starts:mn.starts?u(mn.starts):null}):Object.isFrozen(mn)?u(mn):mn;var mn})),Sn.contains.forEach(function(Dn){qn(Dn,En)}),Sn.starts&&qn(Sn.starts,$n),En.matcher=function(Dn){const mn=new Kn;return Dn.contains.forEach(jn=>mn.addRule(jn.begin,{rule:jn,type:"begin"})),Dn.terminatorEnd&&mn.addRule(Dn.terminatorEnd,{type:"end"}),Dn.illegal&&mn.addRule(Dn.illegal,{type:"illegal"}),mn}(En),En}(Yn)}function ae(Yn){return!!Yn&&(Yn.endsWithParent||ae(Yn.starts))}function Ie(Yn){const Cn={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!Yn.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,l(this.code);let Kt={};return this.autoDetect?(Kt=Yn.highlightAuto(this.code),this.detectedLanguage=Kt.language):(Kt=Yn.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),Kt.value},autoDetect(){return!this.language||(Kt=this.autodetect,Boolean(Kt||""===Kt));var Kt},ignoreIllegals:()=>!0},render(Kt){return Kt("pre",{},[Kt("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:Cn,VuePlugin:{install(Kt){Kt.component("highlightjs",Cn)}}}}const dt={"after:highlightElement":({el:Yn,result:Cn,text:Kt})=>{const dn=zt(Yn);if(!dn.length)return;const Kn=document.createElement("div");Kn.innerHTML=Cn.value,Cn.value=function(qn,Sn,$n){let En=0,Fn="";const Dn=[];function mn(){return qn.length&&Sn.length?qn[0].offset!==Sn[0].offset?qn[0].offset<Sn[0].offset?qn:Sn:"start"===Sn[0].event?qn:Sn:qn.length?qn:Sn}function jn(mt){Fn+="<"+Jt(mt)+[].map.call(mt.attributes,function(yn){return" "+yn.nodeName+'="'+l(yn.value)+'"'}).join("")+">"}function Xt(mt){Fn+="</"+Jt(mt)+">"}function ut(mt){("start"===mt.event?jn:Xt)(mt.node)}for(;qn.length||Sn.length;){let mt=mn();if(Fn+=l($n.substring(En,mt[0].offset)),En=mt[0].offset,mt===qn){Dn.reverse().forEach(Xt);do{ut(mt.splice(0,1)[0]),mt=mn()}while(mt===qn&&mt.length&&mt[0].offset===En);Dn.reverse().forEach(jn)}else"start"===mt[0].event?Dn.push(mt[0].node):Dn.pop(),ut(mt.splice(0,1)[0])}return Fn+l($n.substr(En))}(dn,zt(Kn),Kt)}};function Jt(Yn){return Yn.nodeName.toLowerCase()}function zt(Yn){const Cn=[];return function Kt(dn,Kn){for(let qn=dn.firstChild;qn;qn=qn.nextSibling)3===qn.nodeType?Kn+=qn.nodeValue.length:1===qn.nodeType&&(Cn.push({event:"start",offset:Kn,node:qn}),Kn=Kt(qn,Kn),Jt(qn).match(/br|hr|img|input/)||Cn.push({event:"stop",offset:Kn,node:qn}));return Kn}(Yn,0),Cn}const ln={},ar=Yn=>{console.error(Yn)},Ln=(Yn,...Cn)=>{console.log(`WARN: ${Yn}`,...Cn)},Rn=(Yn,Cn)=>{ln[`${Yn}/${Cn}`]||(console.log(`Deprecated as of ${Yn}. ${Cn}`),ln[`${Yn}/${Cn}`]=!0)},er=l,Mn=u,Ht=Symbol("nomatch");var tr=function(Yn){const Cn=Object.create(null),Kt=Object.create(null),dn=[];let Kn=!0;const qn=/(^(<[^>]+>|\t|)+|\n)/gm,Sn="Could not find the language '{}', did you forget to load/include a language module?",$n={disableAutodetect:!0,name:"Plain text",contains:[]};let En={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:b};function Fn(L){return En.noHighlightRe.test(L)}function Dn(L,Ue,nt,at){let it="",Pt="";"object"==typeof Ue?(it=L,nt=Ue.ignoreIllegals,Pt=Ue.language,at=void 0):(Rn("10.7.0","highlight(lang, code, ...args) has been deprecated."),Rn("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),Pt=L,it=Ue);const Ut={code:it,language:Pt};ht("before:highlight",Ut);const ot=Ut.result?Ut.result:mn(Ut.language,Ut.code,nt,at);return ot.code=Ut.code,ht("after:highlight",ot),ot}function mn(L,Ue,nt,at){function it(Kr,ei){const di=mr.case_insensitive?ei[0].toLowerCase():ei[0];return Object.prototype.hasOwnProperty.call(Kr.keywords,di)&&Kr.keywords[di]}function Pt(){null!=br.subLanguage?function(){if(""===Mr)return;let Kr=null;if("string"==typeof br.subLanguage){if(!Cn[br.subLanguage])return void nr.addText(Mr);Kr=mn(br.subLanguage,Mr,!0,Jn[br.subLanguage]),Jn[br.subLanguage]=Kr.top}else Kr=jn(Mr,br.subLanguage.length?br.subLanguage:null);br.relevance>0&&(yi+=Kr.relevance),nr.addSublanguage(Kr.emitter,Kr.language)}():function(){if(!br.keywords)return void nr.addText(Mr);let Kr=0;br.keywordPatternRe.lastIndex=0;let ei=br.keywordPatternRe.exec(Mr),di="";for(;ei;){di+=Mr.substring(Kr,ei.index);const se=it(br,ei);if(se){const[ct,Ke]=se;nr.addText(di),di="",yi+=Ke,ct.startsWith("_")?di+=ei[0]:nr.addKeyword(ei[0],mr.classNameAliases[ct]||ct)}else di+=ei[0];Kr=br.keywordPatternRe.lastIndex,ei=br.keywordPatternRe.exec(Mr)}di+=Mr.substr(Kr),nr.addText(di)}(),Mr=""}function Ut(Kr){return Kr.className&&nr.openNode(mr.classNameAliases[Kr.className]||Kr.className),br=Object.create(Kr,{parent:{value:br}}),br}function ot(Kr,ei,di){let se=function(ct,Ke){const Xe=ct&&ct.exec(Ke);return Xe&&0===Xe.index}(Kr.endRe,di);if(se){if(Kr["on:end"]){const ct=new a(Kr);Kr["on:end"](ei,ct),ct.isMatchIgnored&&(se=!1)}if(se){for(;Kr.endsParent&&Kr.parent;)Kr=Kr.parent;return Kr}}if(Kr.endsWithParent)return ot(Kr.parent,ei,di)}function Nn(Kr){return 0===br.matcher.regexIndex?(Mr+=Kr[0],1):(Oi=!0,0)}function An(Kr){const ei=Kr[0],di=Ue.substr(Kr.index),se=ot(br,Kr,di);if(!se)return Ht;const ct=br;ct.skip?Mr+=ei:(ct.returnEnd||ct.excludeEnd||(Mr+=ei),Pt(),ct.excludeEnd&&(Mr=ei));do{br.className&&nr.closeNode(),br.skip||br.subLanguage||(yi+=br.relevance),br=br.parent}while(br!==se.parent);return se.starts&&(se.endSameAsBegin&&(se.starts.endRe=se.endRe),Ut(se.starts)),ct.returnEnd?0:ei.length}let Bn={};function ir(Kr,ei){const di=ei&&ei[0];if(Mr+=Kr,null==di)return Pt(),0;if("begin"===Bn.type&&"end"===ei.type&&Bn.index===ei.index&&""===di){if(Mr+=Ue.slice(ei.index,ei.index+1),!Kn){const se=new Error("0 width match regex");throw se.languageName=L,se.badRule=Bn.rule,se}return 1}if(Bn=ei,"begin"===ei.type)return function(Kr){const ei=Kr[0],di=Kr.rule,se=new a(di),ct=[di.__beforeBegin,di["on:begin"]];for(const Ke of ct)if(Ke&&(Ke(Kr,se),se.isMatchIgnored))return Nn(ei);return di&&di.endSameAsBegin&&(di.endRe=new RegExp(ei.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),di.skip?Mr+=ei:(di.excludeBegin&&(Mr+=ei),Pt(),di.returnBegin||di.excludeBegin||(Mr=ei)),Ut(di),di.returnBegin?0:ei.length}(ei);if("illegal"===ei.type&&!nt){const se=new Error('Illegal lexeme "'+di+'" for mode "'+(br.className||"<unnamed>")+'"');throw se.mode=br,se}if("end"===ei.type){const se=An(ei);if(se!==Ht)return se}if("illegal"===ei.type&&""===di)return 1;if(Mi>1e5&&Mi>3*ei.index)throw new Error("potential infinite loop, way more iterations than matches");return Mr+=di,di.length}const mr=hn(L);if(!mr)throw ar(Sn.replace("{}",L)),new Error('Unknown language: "'+L+'"');const _r=It(mr,{plugins:dn});let Nr="",br=at||_r;const Jn={},nr=new En.__emitter(En);!function(){const Kr=[];for(let ei=br;ei!==mr;ei=ei.parent)ei.className&&Kr.unshift(ei.className);Kr.forEach(ei=>nr.openNode(ei))}();let Mr="",yi=0,Ii=0,Mi=0,Oi=!1;try{for(br.matcher.considerAll();;){Mi++,Oi?Oi=!1:br.matcher.considerAll(),br.matcher.lastIndex=Ii;const Kr=br.matcher.exec(Ue);if(!Kr)break;const ei=ir(Ue.substring(Ii,Kr.index),Kr);Ii=Kr.index+ei}return ir(Ue.substr(Ii)),nr.closeAllNodes(),nr.finalize(),Nr=nr.toHTML(),{relevance:Math.floor(yi),value:Nr,language:L,illegal:!1,emitter:nr,top:br}}catch(Kr){if(Kr.message&&Kr.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:Kr.message,context:Ue.slice(Ii-100,Ii+100),mode:Kr.mode},sofar:Nr,relevance:0,value:er(Ue),emitter:nr};if(Kn)return{illegal:!1,relevance:0,value:er(Ue),emitter:nr,language:L,top:br,errorRaised:Kr};throw Kr}}function jn(L,Ue){Ue=Ue||En.languages||Object.keys(Cn);const nt=function(Nn){const sn={relevance:0,emitter:new En.__emitter(En),value:er(Nn),illegal:!1,top:$n};return sn.emitter.addText(Nn),sn}(L),at=Ue.filter(hn).filter(Ir).map(Nn=>mn(Nn,L,!1));at.unshift(nt);const it=at.sort((Nn,sn)=>{if(Nn.relevance!==sn.relevance)return sn.relevance-Nn.relevance;if(Nn.language&&sn.language){if(hn(Nn.language).supersetOf===sn.language)return 1;if(hn(sn.language).supersetOf===Nn.language)return-1}return 0}),[Pt,Ut]=it,ot=Pt;return ot.second_best=Ut,ot}const Xt={"before:highlightElement":({el:L})=>{En.useBR&&(L.innerHTML=L.innerHTML.replace(/\n/g,"").replace(/<br[ /]*>/g,"\n"))},"after:highlightElement":({result:L})=>{En.useBR&&(L.value=L.value.replace(/\n/g,"<br>"))}},ut=/^(<[^>]+>|\t)+/gm,mt={"after:highlightElement":({result:L})=>{En.tabReplace&&(L.value=L.value.replace(ut,Ue=>Ue.replace(/\t/g,En.tabReplace)))}};function Tt(L){let Ue=null;const nt=function(Pt){let Ut=Pt.className+" ";Ut+=Pt.parentNode?Pt.parentNode.className:"";const ot=En.languageDetectRe.exec(Ut);if(ot){const Nn=hn(ot[1]);return Nn||(Ln(Sn.replace("{}",ot[1])),Ln("Falling back to no-highlight mode for this block.",Pt)),Nn?ot[1]:"no-highlight"}return Ut.split(/\s+/).find(Nn=>Fn(Nn)||hn(Nn))}(L);if(Fn(nt))return;ht("before:highlightElement",{el:L,language:nt}),Ue=L;const at=Ue.textContent,it=nt?Dn(at,{language:nt,ignoreIllegals:!0}):jn(at);ht("after:highlightElement",{el:L,result:it,text:at}),L.innerHTML=it.value,function(Pt,Ut,ot){const Nn=Ut?Kt[Ut]:ot;Pt.classList.add("hljs"),Nn&&Pt.classList.add(Nn)}(L,nt,it.language),L.result={language:it.language,re:it.relevance,relavance:it.relevance},it.second_best&&(L.second_best={language:it.second_best.language,re:it.second_best.relevance,relavance:it.second_best.relevance})}const yn=()=>{yn.called||(yn.called=!0,Rn("10.6.0","initHighlighting() is deprecated.  Use highlightAll() instead."),document.querySelectorAll("pre code").forEach(Tt))};let et=!1;function jt(){"loading"!==document.readyState?document.querySelectorAll("pre code").forEach(Tt):et=!0}function hn(L){return L=(L||"").toLowerCase(),Cn[L]||Cn[Kt[L]]}function Qn(L,{languageName:Ue}){"string"==typeof L&&(L=[L]),L.forEach(nt=>{Kt[nt.toLowerCase()]=Ue})}function Ir(L){const Ue=hn(L);return Ue&&!Ue.disableAutodetect}function ht(L,Ue){const nt=L;dn.forEach(function(at){at[nt]&&at[nt](Ue)})}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",function(){et&&jt()},!1),Object.assign(Yn,{highlight:Dn,highlightAuto:jn,highlightAll:jt,fixMarkup:function(L){return Rn("10.2.0","fixMarkup will be removed entirely in v11.0"),Rn("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),Ue=L,En.tabReplace||En.useBR?Ue.replace(qn,nt=>"\n"===nt?En.useBR?"<br>":nt:En.tabReplace?nt.replace(/\t/g,En.tabReplace):nt):Ue;var Ue},highlightElement:Tt,highlightBlock:function(L){return Rn("10.7.0","highlightBlock will be removed entirely in v12.0"),Rn("10.7.0","Please use highlightElement now."),Tt(L)},configure:function(L){L.useBR&&(Rn("10.3.0","'useBR' will be removed entirely in v11.0"),Rn("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),En=Mn(En,L)},initHighlighting:yn,initHighlightingOnLoad:function(){Rn("10.6.0","initHighlightingOnLoad() is deprecated.  Use highlightAll() instead."),et=!0},registerLanguage:function(L,Ue){let nt=null;try{nt=Ue(Yn)}catch(at){if(ar("Language definition for '{}' could not be registered.".replace("{}",L)),!Kn)throw at;ar(at),nt=$n}nt.name||(nt.name=L),Cn[L]=nt,nt.rawDefinition=Ue.bind(null,Yn),nt.aliases&&Qn(nt.aliases,{languageName:L})},unregisterLanguage:function(L){delete Cn[L];for(const Ue of Object.keys(Kt))Kt[Ue]===L&&delete Kt[Ue]},listLanguages:function(){return Object.keys(Cn)},getLanguage:hn,registerAliases:Qn,requireLanguage:function(L){Rn("10.4.0","requireLanguage will be removed entirely in v11."),Rn("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const Ue=hn(L);if(Ue)return Ue;throw new Error("The '{}' language is required, but not loaded.".replace("{}",L))},autoDetection:Ir,inherit:Mn,addPlugin:function(L){var Ue;(Ue=L)["before:highlightBlock"]&&!Ue["before:highlightElement"]&&(Ue["before:highlightElement"]=nt=>{Ue["before:highlightBlock"](Object.assign({block:nt.el},nt))}),Ue["after:highlightBlock"]&&!Ue["after:highlightElement"]&&(Ue["after:highlightElement"]=nt=>{Ue["after:highlightBlock"](Object.assign({block:nt.el},nt))}),dn.push(L)},vuePlugin:Ie(Yn).VuePlugin}),Yn.debugMode=function(){Kn=!1},Yn.safeMode=function(){Kn=!0},Yn.versionString="10.7.3";for(const L in $e)"object"==typeof $e[L]&&e($e[L]);return Object.assign(Yn,$e),Yn.addPlugin(Xt),Yn.addPlugin(dt),Yn.addPlugin(mt),Yn}({});g.exports=tr},function(g,o,t){"use strict";var e=t(913),s=a(Error);function a(l){return u.displayName=l.displayName||l.name,u;function u(h){return h&&(h=e.apply(null,arguments)),new l(h)}}g.exports=s,s.eval=a(EvalError),s.range=a(RangeError),s.reference=a(ReferenceError),s.syntax=a(SyntaxError),s.type=a(TypeError),s.uri=a(URIError),s.create=a},function(g,o,t){!function(){var e;function s(a){for(var l,u,h,_,m=1,b=[].slice.call(arguments),C=0,D=a.length,x="",j=!1,H=!1,z=function(){return b[m++]},U=function(){for(var M="";/\d/.test(a[C]);)M+=a[C++],l=a[C];return M.length>0?parseInt(M):null};C<D;++C)if(l=a[C],j)switch(j=!1,"."==l?(H=!1,l=a[++C]):"0"==l&&"."==a[C+1]?(H=!0,l=a[C+=2]):H=!0,_=U(),l){case"b":x+=parseInt(z(),10).toString(2);break;case"c":x+="string"==typeof(u=z())||u instanceof String?u:String.fromCharCode(parseInt(u,10));break;case"d":x+=parseInt(z(),10);break;case"f":h=String(parseFloat(z()).toFixed(_||6)),x+=H?h:h.replace(/^0/,"");break;case"j":x+=JSON.stringify(z());break;case"o":x+="0"+parseInt(z(),10).toString(8);break;case"s":x+=z();break;case"x":x+="0x"+parseInt(z(),10).toString(16);break;case"X":x+="0x"+parseInt(z(),10).toString(16).toUpperCase();break;default:x+=l}else"%"===l?j=!0:x+=l;return x}(e=g.exports=s).format=s,e.vsprintf=function(a,l){return s.apply(null,[a].concat(l))},"undefined"!=typeof console&&"function"==typeof console.log&&(e.printf=function(){console.log(s.apply(null,arguments))})}()},function(g,o){g.exports=function(t,e){if(null==t)return{};var s,a,l={},u=Object.keys(t);for(a=0;a<u.length;a++)e.indexOf(s=u[a])>=0||(l[s]=t[s]);return l},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(441);g.exports=function(s){if(Array.isArray(s))return e(s)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(441);g.exports=function(s,a){if(s){if("string"==typeof s)return e(s,a);var l=Object.prototype.toString.call(s).slice(8,-1);return"Object"===l&&s.constructor&&(l=s.constructor.name),"Map"===l||"Set"===l?Array.from(s):"Arguments"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?e(s,a):void 0}},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o){g.exports=function(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t},g.exports.default=g.exports,g.exports.__esModule=!0},function(g,o,t){var e=t(921);g.exports=e},function(g,o,t){t(922);var e=t(34);g.exports=e.Object.entries},function(g,o,t){var e=t(22),s=t(435).entries;e({target:"Object",stat:!0},{entries:function(a){return s(a)}})},function(g,o,t){"use strict";var e=t(924),s=t(443),a=t(252),l=Object.prototype.hasOwnProperty,u={brackets:function(j){return j+"[]"},comma:"comma",indices:function(j,H){return j+"["+H+"]"},repeat:function(j){return j}},h=Array.isArray,_=Array.prototype.push,m=function(j,H){_.apply(j,h(H)?H:[H])},b=Date.prototype.toISOString,C=a.default,D={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:s.encode,encodeValuesOnly:!1,format:C,formatter:a.formatters[C],indices:!1,serializeDate:function(j){return b.call(j)},skipNulls:!1,strictNullHandling:!1},x=function j(H,z,U,M,I,J,Y,ie,oe,fe,ne,he,ce,Ae,Me){var Oe,be=H;if(Me.has(H))throw new RangeError("Cyclic object value");if("function"==typeof Y?be=Y(z,be):be instanceof Date?be=fe(be):"comma"===U&&h(be)&&(be=s.maybeMap(be,function(St){return St instanceof Date?fe(St):St})),null===be){if(M)return J&&!ce?J(z,D.encoder,Ae,"key",ne):z;be=""}if("string"==typeof(Oe=be)||"number"==typeof Oe||"boolean"==typeof Oe||"symbol"==typeof Oe||"bigint"==typeof Oe||s.isBuffer(be))return J?[he(ce?z:J(z,D.encoder,Ae,"key",ne))+"="+he(J(be,D.encoder,Ae,"value",ne))]:[he(z)+"="+he(String(be))];var ue,He=[];if(void 0===be)return He;if("comma"===U&&h(be))ue=[{value:be.length>0?be.join(",")||null:void 0}];else if(h(Y))ue=Y;else{var $e=Object.keys(be);ue=ie?$e.sort(ie):$e}for(var F=0;F<ue.length;++F){var je=ue[F],Et="object"==typeof je&&void 0!==je.value?je.value:be[je];if(!I||null!==Et){var lt=h(be)?"function"==typeof U?U(z,je):z:z+(oe?"."+je:"["+je+"]");Me.set(H,!0);var nn=e();m(He,j(Et,lt,U,M,I,J,Y,ie,oe,fe,ne,he,ce,Ae,nn))}}return He};g.exports=function(j,H){var z,U=j,M=function(ce){if(!ce)return D;if(null!=ce.encoder&&"function"!=typeof ce.encoder)throw new TypeError("Encoder has to be a function.");var Ae=ce.charset||D.charset;if(void 0!==ce.charset&&"utf-8"!==ce.charset&&"iso-8859-1"!==ce.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var Me=a.default;if(void 0!==ce.format){if(!l.call(a.formatters,ce.format))throw new TypeError("Unknown format option provided.");Me=ce.format}var Oe=a.formatters[Me],be=D.filter;return("function"==typeof ce.filter||h(ce.filter))&&(be=ce.filter),{addQueryPrefix:"boolean"==typeof ce.addQueryPrefix?ce.addQueryPrefix:D.addQueryPrefix,allowDots:void 0===ce.allowDots?D.allowDots:!!ce.allowDots,charset:Ae,charsetSentinel:"boolean"==typeof ce.charsetSentinel?ce.charsetSentinel:D.charsetSentinel,delimiter:void 0===ce.delimiter?D.delimiter:ce.delimiter,encode:"boolean"==typeof ce.encode?ce.encode:D.encode,encoder:"function"==typeof ce.encoder?ce.encoder:D.encoder,encodeValuesOnly:"boolean"==typeof ce.encodeValuesOnly?ce.encodeValuesOnly:D.encodeValuesOnly,filter:be,format:Me,formatter:Oe,serializeDate:"function"==typeof ce.serializeDate?ce.serializeDate:D.serializeDate,skipNulls:"boolean"==typeof ce.skipNulls?ce.skipNulls:D.skipNulls,sort:"function"==typeof ce.sort?ce.sort:null,strictNullHandling:"boolean"==typeof ce.strictNullHandling?ce.strictNullHandling:D.strictNullHandling}}(H);"function"==typeof M.filter?U=(0,M.filter)("",U):h(M.filter)&&(z=M.filter);var J=[];if("object"!=typeof U||null===U)return"";var Y=u[H&&H.arrayFormat in u?H.arrayFormat:H&&"indices"in H?H.indices?"indices":"repeat":"indices"];z||(z=Object.keys(U)),M.sort&&z.sort(M.sort);for(var ie=e(),oe=0;oe<z.length;++oe){var fe=z[oe];M.skipNulls&&null===U[fe]||m(J,x(U[fe],fe,Y,M.strictNullHandling,M.skipNulls,M.encode?M.encoder:null,M.filter,M.sort,M.allowDots,M.serializeDate,M.format,M.formatter,M.encodeValuesOnly,M.charset,ie))}var ne=J.join(M.delimiter),he=!0===M.addQueryPrefix?"?":"";return M.charsetSentinel&&(he+="iso-8859-1"===M.charset?"utf8=%26%2310003%3B&":"utf8=%E2%9C%93&"),ne.length>0?he+ne:""}},function(g,o,t){"use strict";var e=t(250),s=t(929),a=t(931),l=e("%TypeError%"),u=e("%WeakMap%",!0),h=e("%Map%",!0),_=s("WeakMap.prototype.get",!0),m=s("WeakMap.prototype.set",!0),b=s("WeakMap.prototype.has",!0),C=s("Map.prototype.get",!0),D=s("Map.prototype.set",!0),x=s("Map.prototype.has",!0),j=function(H,z){for(var U,M=H;null!==(U=M.next);M=U)if(U.key===z)return M.next=U.next,U.next=H.next,H.next=U,U};g.exports=function(){var H,z,U,M={assert:function(I){if(!M.has(I))throw new l("Side channel does not contain "+a(I))},get:function(I){if(u&&I&&("object"==typeof I||"function"==typeof I)){if(H)return _(H,I)}else if(h){if(z)return C(z,I)}else if(U)return(ie=j(U,I))&&ie.value;var ie},has:function(I){if(u&&I&&("object"==typeof I||"function"==typeof I)){if(H)return b(H,I)}else if(h){if(z)return x(z,I)}else if(U)return!!j(U,I);return!1},set:function(I,J){var Y,ie,oe,fe;u&&I&&("object"==typeof I||"function"==typeof I)?(H||(H=new u),m(H,I,J)):h?(z||(z=new h),D(z,I,J)):(U||(U={key:{},next:null}),oe=J,(fe=j(Y=U,ie=I))?fe.value=oe:Y.next={key:ie,next:Y.next,value:oe})}};return M}},function(g,o,t){"use strict";var e="undefined"!=typeof Symbol&&Symbol,s=t(926);g.exports=function(){return"function"==typeof e&&"function"==typeof Symbol&&"symbol"==typeof e("foo")&&"symbol"==typeof Symbol("bar")&&s()}},function(g,o,t){"use strict";g.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},s=Symbol("test"),a=Object(s);if("string"==typeof s||"[object Symbol]"!==Object.prototype.toString.call(s)||"[object Symbol]"!==Object.prototype.toString.call(a))return!1;for(s in e[s]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length||"function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var l=Object.getOwnPropertySymbols(e);if(1!==l.length||l[0]!==s||!Object.prototype.propertyIsEnumerable.call(e,s))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var u=Object.getOwnPropertyDescriptor(e,s);if(42!==u.value||!0!==u.enumerable)return!1}return!0}},function(g,o,t){"use strict";var e="Function.prototype.bind called on incompatible ",s=Array.prototype.slice,a=Object.prototype.toString,l="[object Function]";g.exports=function(u){var h=this;if("function"!=typeof h||a.call(h)!==l)throw new TypeError(e+h);for(var _,m=s.call(arguments,1),b=function(){if(this instanceof _){var H=h.apply(this,m.concat(s.call(arguments)));return Object(H)===H?H:this}return h.apply(u,m.concat(s.call(arguments)))},C=Math.max(0,h.length-m.length),D=[],x=0;x<C;x++)D.push("$"+x);if(_=Function("binder","return function ("+D.join(",")+"){ return binder.apply(this,arguments); }")(b),h.prototype){var j=function(){};j.prototype=h.prototype,_.prototype=new j,j.prototype=null}return _}},function(g,o,t){"use strict";var e=t(251);g.exports=e.call(Function.call,Object.prototype.hasOwnProperty)},function(g,o,t){"use strict";var e=t(250),s=t(930),a=s(e("String.prototype.indexOf"));g.exports=function(l,u){var h=e(l,!!u);return"function"==typeof h&&a(l,".prototype.")>-1?s(h):h}},function(g,o,t){"use strict";var e=t(251),s=t(250),a=s("%Function.prototype.apply%"),l=s("%Function.prototype.call%"),u=s("%Reflect.apply%",!0)||e.call(l,a),h=s("%Object.getOwnPropertyDescriptor%",!0),_=s("%Object.defineProperty%",!0),m=s("%Math.max%");if(_)try{_({},"a",{value:1})}catch(C){_=null}g.exports=function(C){var D=u(e,l,arguments);if(h&&_){var x=h(D,"length");x.configurable&&_(D,"length",{value:1+m(0,C.length-(arguments.length-1))})}return D};var b=function(){return u(e,a,arguments)};_?_(g.exports,"apply",{value:b}):g.exports.apply=b},function(g,o,t){var e="function"==typeof Map&&Map.prototype,s=Object.getOwnPropertyDescriptor&&e?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,a=e&&s&&"function"==typeof s.get?s.get:null,l=e&&Map.prototype.forEach,u="function"==typeof Set&&Set.prototype,h=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,_=u&&h&&"function"==typeof h.get?h.get:null,m=u&&Set.prototype.forEach,b="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,C="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,D="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,x=Boolean.prototype.valueOf,j=Object.prototype.toString,H=Function.prototype.toString,z=String.prototype.match,U="function"==typeof BigInt?BigInt.prototype.valueOf:null,M=Object.getOwnPropertySymbols,I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,J="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Y=Object.prototype.propertyIsEnumerable,ie=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(At){return At.__proto__}:null),oe=t(932).custom,fe=oe&&Me(oe)?oe:null,ne="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function he(At,Qe,It){var ae="double"===(It.quoteStyle||Qe)?'"':"'";return ae+At+ae}function ce(At){return String(At).replace(/"/g,"&quot;")}function Ae(At){return!("[object Array]"!==ue(At)||ne&&"object"==typeof At&&ne in At)}function Me(At){if(J)return At&&"object"==typeof At&&At instanceof Symbol;if("symbol"==typeof At)return!0;if(!At||"object"!=typeof At||!I)return!1;try{return I.call(At),!0}catch(Qe){}return!1}g.exports=function At(Qe,It,ae,Ie){var dt=It||{};if(be(dt,"quoteStyle")&&"single"!==dt.quoteStyle&&"double"!==dt.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(be(dt,"maxStringLength")&&("number"==typeof dt.maxStringLength?dt.maxStringLength<0&&dt.maxStringLength!==1/0:null!==dt.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var Jt=!be(dt,"customInspect")||dt.customInspect;if("boolean"!=typeof Jt&&"symbol"!==Jt)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(be(dt,"indent")&&null!==dt.indent&&"\t"!==dt.indent&&!(parseInt(dt.indent,10)===dt.indent&&dt.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===Qe)return"undefined";if(null===Qe)return"null";if("boolean"==typeof Qe)return Qe?"true":"false";if("string"==typeof Qe)return $e(Qe,dt);if("number"==typeof Qe)return 0===Qe?1/0/Qe>0?"0":"-0":String(Qe);if("bigint"==typeof Qe)return String(Qe)+"n";var zt=void 0===dt.depth?5:dt.depth;if(void 0===ae&&(ae=0),ae>=zt&&zt>0&&"object"==typeof Qe)return Ae(Qe)?"[Array]":"[Object]";var Fn,ln=function(Fn,Dn){var mn;if("\t"===Fn.indent)mn="\t";else{if(!("number"==typeof Fn.indent&&Fn.indent>0))return null;mn=Array(Fn.indent+1).join(" ")}return{base:mn,prev:Array(Dn+1).join(mn)}}(dt,ae);if(void 0===Ie)Ie=[];else if(He(Ie,Qe)>=0)return"[Circular]";function ar(Fn,Dn,mn){if(Dn&&(Ie=Ie.slice()).push(Dn),mn){var jn={depth:dt.depth};return be(dt,"quoteStyle")&&(jn.quoteStyle=dt.quoteStyle),At(Fn,jn,ae+1,Ie)}return At(Fn,dt,ae+1,Ie)}if("function"==typeof Qe){var Ln=function(Fn){if(Fn.name)return Fn.name;var Dn=z.call(H.call(Fn),/^function\s*([\w$]+)/);return Dn?Dn[1]:null}(Qe),Rn=St(Qe,ar);return"[Function"+(Ln?": "+Ln:" (anonymous)")+"]"+(Rn.length>0?" { "+Rn.join(", ")+" }":"")}if(Me(Qe)){var er=J?String(Qe).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):I.call(Qe);return"object"!=typeof Qe||J?er:je(er)}if((Fn=Qe)&&"object"==typeof Fn&&("undefined"!=typeof HTMLElement&&Fn instanceof HTMLElement||"string"==typeof Fn.nodeName&&"function"==typeof Fn.getAttribute)){for(var Mn="<"+String(Qe.nodeName).toLowerCase(),Ht=Qe.attributes||[],tr=0;tr<Ht.length;tr++)Mn+=" "+Ht[tr].name+"="+he(ce(Ht[tr].value),"double",dt);return Mn+=">",Qe.childNodes&&Qe.childNodes.length&&(Mn+="..."),Mn+"</"+String(Qe.nodeName).toLowerCase()+">"}if(Ae(Qe)){if(0===Qe.length)return"[]";var Yn=St(Qe,ar);return ln&&!function(Fn){for(var Dn=0;Dn<Fn.length;Dn++)if(He(Fn[Dn],"\n")>=0)return!1;return!0}(Yn)?"["+nn(Yn,ln)+"]":"[ "+Yn.join(", ")+" ]"}if(function(Fn){return!("[object Error]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe)){var Cn=St(Qe,ar);return 0===Cn.length?"["+String(Qe)+"]":"{ ["+String(Qe)+"] "+Cn.join(", ")+" }"}if("object"==typeof Qe&&Jt){if(fe&&"function"==typeof Qe[fe])return Qe[fe]();if("symbol"!==Jt&&"function"==typeof Qe.inspect)return Qe.inspect()}if(function(Fn){if(!a||!Fn||"object"!=typeof Fn)return!1;try{a.call(Fn);try{_.call(Fn)}catch(Dn){return!0}return Fn instanceof Map}catch(Dn){}return!1}(Qe)){var Kt=[];return l.call(Qe,function(Fn,Dn){Kt.push(ar(Dn,Qe,!0)+" => "+ar(Fn,Qe))}),lt("Map",a.call(Qe),Kt,ln)}if(function(Fn){if(!_||!Fn||"object"!=typeof Fn)return!1;try{_.call(Fn);try{a.call(Fn)}catch(Dn){return!0}return Fn instanceof Set}catch(Dn){}return!1}(Qe)){var dn=[];return m.call(Qe,function(Fn){dn.push(ar(Fn,Qe))}),lt("Set",_.call(Qe),dn,ln)}if(function(Fn){if(!b||!Fn||"object"!=typeof Fn)return!1;try{b.call(Fn,b);try{C.call(Fn,C)}catch(Dn){return!0}return Fn instanceof WeakMap}catch(Dn){}return!1}(Qe))return Et("WeakMap");if(function(Fn){if(!C||!Fn||"object"!=typeof Fn)return!1;try{C.call(Fn,C);try{b.call(Fn,b)}catch(Dn){return!0}return Fn instanceof WeakSet}catch(Dn){}return!1}(Qe))return Et("WeakSet");if(function(Fn){if(!D||!Fn||"object"!=typeof Fn)return!1;try{return D.call(Fn),!0}catch(Dn){}return!1}(Qe))return Et("WeakRef");if(function(Fn){return!("[object Number]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe))return je(ar(Number(Qe)));if(function(Fn){if(!Fn||"object"!=typeof Fn||!U)return!1;try{return U.call(Fn),!0}catch(Dn){}return!1}(Qe))return je(ar(U.call(Qe)));if(function(Fn){return!("[object Boolean]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe))return je(x.call(Qe));if(function(Fn){return!("[object String]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe))return je(ar(String(Qe)));if(!function(Fn){return!("[object Date]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe)&&!function(Fn){return!("[object RegExp]"!==ue(Fn)||ne&&"object"==typeof Fn&&ne in Fn)}(Qe)){var Kn=St(Qe,ar),qn=ie?ie(Qe)===Object.prototype:Qe instanceof Object||Qe.constructor===Object,Sn=Qe instanceof Object?"":"null prototype",$n=!qn&&ne&&Object(Qe)===Qe&&ne in Qe?ue(Qe).slice(8,-1):Sn?"Object":"",En=(qn||"function"!=typeof Qe.constructor?"":Qe.constructor.name?Qe.constructor.name+" ":"")+($n||Sn?"["+[].concat($n||[],Sn||[]).join(": ")+"] ":"");return 0===Kn.length?En+"{}":ln?En+"{"+nn(Kn,ln)+"}":En+"{ "+Kn.join(", ")+" }"}return String(Qe)};var Oe=Object.prototype.hasOwnProperty||function(At){return At in this};function be(At,Qe){return Oe.call(At,Qe)}function ue(At){return j.call(At)}function He(At,Qe){if(At.indexOf)return At.indexOf(Qe);for(var It=0,ae=At.length;It<ae;It++)if(At[It]===Qe)return It;return-1}function $e(At,Qe){if(At.length>Qe.maxStringLength){var It=At.length-Qe.maxStringLength,ae="... "+It+" more character"+(It>1?"s":"");return $e(At.slice(0,Qe.maxStringLength),Qe)+ae}return he(At.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,F),"single",Qe)}function F(At){var Qe=At.charCodeAt(0),It={8:"b",9:"t",10:"n",12:"f",13:"r"}[Qe];return It?"\\"+It:"\\x"+(Qe<16?"0":"")+Qe.toString(16).toUpperCase()}function je(At){return"Object("+At+")"}function Et(At){return At+" { ? }"}function lt(At,Qe,It,ae){return At+" ("+Qe+") {"+(ae?nn(It,ae):It.join(", "))+"}"}function nn(At,Qe){if(0===At.length)return"";var It="\n"+Qe.prev+Qe.base;return It+At.join(","+It)+"\n"+Qe.prev}function St(At,Qe){var It=Ae(At),ae=[];if(It){ae.length=At.length;for(var Ie=0;Ie<At.length;Ie++)ae[Ie]=be(At,Ie)?Qe(At[Ie],At):""}var dt,Jt="function"==typeof M?M(At):[];if(J){dt={};for(var zt=0;zt<Jt.length;zt++)dt["$"+Jt[zt]]=Jt[zt]}for(var ln in At)be(At,ln)&&(It&&String(Number(ln))===ln&&ln<At.length||J&&dt["$"+ln]instanceof Symbol||(/[^\w$]/.test(ln)?ae.push(Qe(ln,At)+": "+Qe(At[ln],At)):ae.push(ln+": "+Qe(At[ln],At))));if("function"==typeof M)for(var ar=0;ar<Jt.length;ar++)Y.call(At,Jt[ar])&&ae.push("["+Qe(Jt[ar])+"]: "+Qe(At[Jt[ar]],At));return ae}},function(g,o){},function(g,o,t){"use strict";var e=t(443),s=Object.prototype.hasOwnProperty,a=Array.isArray,l={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:e.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(m){return m.replace(/&#(\d+);/g,function(b,C){return String.fromCharCode(parseInt(C,10))})},h=function(m,b){return m&&"string"==typeof m&&b.comma&&m.indexOf(",")>-1?m.split(","):m},_=function(m,b,C,D){if(m){var x=C.allowDots?m.replace(/\.([^.[]+)/g,"[$1]"):m,j=/(\[[^[\]]*])/g,H=C.depth>0&&/(\[[^[\]]*])/.exec(x),z=H?x.slice(0,H.index):x,U=[];if(z){if(!C.plainObjects&&s.call(Object.prototype,z)&&!C.allowPrototypes)return;U.push(z)}for(var M=0;C.depth>0&&null!==(H=j.exec(x))&&M<C.depth;){if(M+=1,!C.plainObjects&&s.call(Object.prototype,H[1].slice(1,-1))&&!C.allowPrototypes)return;U.push(H[1])}return H&&U.push("["+x.slice(H.index)+"]"),function(I,J,Y,ie){for(var oe=ie?J:h(J,Y),fe=I.length-1;fe>=0;--fe){var ne,he=I[fe];if("[]"===he&&Y.parseArrays)ne=[].concat(oe);else{ne=Y.plainObjects?Object.create(null):{};var ce="["===he.charAt(0)&&"]"===he.charAt(he.length-1)?he.slice(1,-1):he,Ae=parseInt(ce,10);Y.parseArrays||""!==ce?!isNaN(Ae)&&he!==ce&&String(Ae)===ce&&Ae>=0&&Y.parseArrays&&Ae<=Y.arrayLimit?(ne=[])[Ae]=oe:ne[ce]=oe:ne={0:oe}}oe=ne}return oe}(U,b,C,D)}};g.exports=function(m,b){var C=function(M){if(!M)return l;if(null!=M.decoder&&"function"!=typeof M.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==M.charset&&"utf-8"!==M.charset&&"iso-8859-1"!==M.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");return{allowDots:void 0===M.allowDots?l.allowDots:!!M.allowDots,allowPrototypes:"boolean"==typeof M.allowPrototypes?M.allowPrototypes:l.allowPrototypes,allowSparse:"boolean"==typeof M.allowSparse?M.allowSparse:l.allowSparse,arrayLimit:"number"==typeof M.arrayLimit?M.arrayLimit:l.arrayLimit,charset:void 0===M.charset?l.charset:M.charset,charsetSentinel:"boolean"==typeof M.charsetSentinel?M.charsetSentinel:l.charsetSentinel,comma:"boolean"==typeof M.comma?M.comma:l.comma,decoder:"function"==typeof M.decoder?M.decoder:l.decoder,delimiter:"string"==typeof M.delimiter||e.isRegExp(M.delimiter)?M.delimiter:l.delimiter,depth:"number"==typeof M.depth||!1===M.depth?+M.depth:l.depth,ignoreQueryPrefix:!0===M.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof M.interpretNumericEntities?M.interpretNumericEntities:l.interpretNumericEntities,parameterLimit:"number"==typeof M.parameterLimit?M.parameterLimit:l.parameterLimit,parseArrays:!1!==M.parseArrays,plainObjects:"boolean"==typeof M.plainObjects?M.plainObjects:l.plainObjects,strictNullHandling:"boolean"==typeof M.strictNullHandling?M.strictNullHandling:l.strictNullHandling}}(b);if(""===m||null==m)return C.plainObjects?Object.create(null):{};for(var D="string"==typeof m?function(M,I){var J,Y={},fe=(I.ignoreQueryPrefix?M.replace(/^\?/,""):M).split(I.delimiter,I.parameterLimit===1/0?void 0:I.parameterLimit),ne=-1,he=I.charset;if(I.charsetSentinel)for(J=0;J<fe.length;++J)0===fe[J].indexOf("utf8=")&&("utf8=%E2%9C%93"===fe[J]?he="utf-8":"utf8=%26%2310003%3B"===fe[J]&&(he="iso-8859-1"),ne=J,J=fe.length);for(J=0;J<fe.length;++J)if(J!==ne){var ce,Ae,Me=fe[J],Oe=Me.indexOf("]="),be=-1===Oe?Me.indexOf("="):Oe+1;-1===be?(ce=I.decoder(Me,l.decoder,he,"key"),Ae=I.strictNullHandling?null:""):(ce=I.decoder(Me.slice(0,be),l.decoder,he,"key"),Ae=e.maybeMap(h(Me.slice(be+1),I),function(ue){return I.decoder(ue,l.decoder,he,"value")})),Ae&&I.interpretNumericEntities&&"iso-8859-1"===he&&(Ae=u(Ae)),Me.indexOf("[]=")>-1&&(Ae=a(Ae)?[Ae]:Ae),Y[ce]=s.call(Y,ce)?e.combine(Y[ce],Ae):Ae}return Y}(m,C):m,x=C.plainObjects?Object.create(null):{},j=Object.keys(D),H=0;H<j.length;++H){var z=j[H],U=_(z,D[z],C,"string"==typeof m);x=e.merge(x,U,C)}return!0===C.allowSparse?x:e.compact(x)}},function(g,o,t){var e=t(935);g.exports=e},function(g,o,t){var e=t(35),s=t(936),a=Array.prototype;g.exports=function(l){var u=l.splice;return l===a||e(a,l)&&u===a.splice?s:u}},function(g,o,t){t(937);var e=t(42);g.exports=e("Array").splice},function(g,o,t){"use strict";var e=t(22),s=t(17),a=t(220),l=t(129),u=t(74),h=t(62),_=t(215),m=t(147),b=t(148)("splice"),C=s.TypeError,D=Math.max,x=Math.min,j=9007199254740991,H="Maximum allowed length exceeded";e({target:"Array",proto:!0,forced:!b},{splice:function(z,U){var M,I,J,Y,ie,oe,fe=h(this),ne=u(fe),he=a(z,ne),ce=arguments.length;if(0===ce?M=I=0:1===ce?(M=0,I=ne-he):(M=ce-2,I=x(D(l(U),0),ne-he)),ne+M-I>j)throw C(H);for(J=_(fe,I),Y=0;Y<I;Y++)(ie=he+Y)in fe&&m(J,Y,fe[ie]);if(J.length=I,M<I){for(Y=he;Y<ne-I;Y++)oe=Y+M,(ie=Y+I)in fe?fe[oe]=fe[ie]:delete fe[oe];for(Y=ne;Y>ne-I+M;Y--)delete fe[Y-1]}else if(M>I)for(Y=ne-I;Y>he;Y--)oe=Y+M-1,(ie=Y+I-1)in fe?fe[oe]=fe[ie]:delete fe[oe];for(Y=0;Y<M;Y++)fe[Y+he]=arguments[Y+2];return fe.length=ne-I+M,J}})},function(g,o,t){var e=t(939);t(68),g.exports=e},function(g,o,t){t(77),t(97),t(940);var e=t(34);g.exports=e.WeakMap},function(g,o,t){"use strict";var e,s=t(17),a=t(27),l=t(158),u=t(194),h=t(445),_=t(943),m=t(43),b=t(444),C=t(76).enforce,D=t(337),x=!s.ActiveXObject&&"ActiveXObject"in s,j=function(Y){return function(){return Y(this,arguments.length?arguments[0]:void 0)}},H=h("WeakMap",j,_);if(D&&x){e=_.getConstructor(j,"WeakMap",!0),u.enable();var z=H.prototype,U=a(z.delete),M=a(z.has),I=a(z.get),J=a(z.set);l(z,{delete:function(Y){if(m(Y)&&!b(Y)){var ie=C(this);return ie.frozen||(ie.frozen=new e),U(this,Y)||ie.frozen.delete(Y)}return U(this,Y)},has:function(Y){if(m(Y)&&!b(Y)){var ie=C(this);return ie.frozen||(ie.frozen=new e),M(this,Y)||ie.frozen.has(Y)}return M(this,Y)},get:function(Y){if(m(Y)&&!b(Y)){var ie=C(this);return ie.frozen||(ie.frozen=new e),M(this,Y)?I(this,Y):ie.frozen.get(Y)}return I(this,Y)},set:function(Y,ie){if(m(Y)&&!b(Y)){var oe=C(this);oe.frozen||(oe.frozen=new e),M(this,Y)?J(this,Y,ie):oe.frozen.set(Y,ie)}else J(this,Y,ie);return this}})}},function(g,o,t){var e=t(33);g.exports=e(function(){if("function"==typeof ArrayBuffer){var s=new ArrayBuffer(8);Object.isExtensible(s)&&Object.defineProperty(s,"a",{value:8})}})},function(g,o,t){var e=t(33);g.exports=!e(function(){return Object.isExtensible(Object.preventExtensions({}))})},function(g,o,t){"use strict";var e=t(27),s=t(158),a=t(194).getWeakData,l=t(51),u=t(43),h=t(139),_=t(124),m=t(87),b=t(44),C=t(76),D=C.set,x=C.getterFor,j=m.find,H=m.findIndex,z=e([].splice),U=0,M=function(Y){return Y.frozen||(Y.frozen=new I)},I=function(){this.entries=[]},J=function(Y,ie){return j(Y.entries,function(oe){return oe[0]===ie})};I.prototype={get:function(Y){var ie=J(this,Y);if(ie)return ie[1]},has:function(Y){return!!J(this,Y)},set:function(Y,ie){var oe=J(this,Y);oe?oe[1]=ie:this.entries.push([Y,ie])},delete:function(Y){var ie=H(this.entries,function(oe){return oe[0]===Y});return~ie&&z(this.entries,ie,1),!!~ie}},g.exports={getConstructor:function(Y,ie,oe,fe){var ne=Y(function(Me,Oe){h(Me,he),D(Me,{type:ie,id:U++,frozen:void 0}),null!=Oe&&_(Oe,Me[fe],{that:Me,AS_ENTRIES:oe})}),he=ne.prototype,ce=x(ie),Ae=function(Me,Oe,be){var ue=ce(Me),He=a(l(Oe),!0);return!0===He?M(ue).set(Oe,be):He[ue.id]=be,Me};return s(he,{delete:function(Me){var Oe=ce(this);if(!u(Me))return!1;var be=a(Me);return!0===be?M(Oe).delete(Me):be&&b(be,Oe.id)&&delete be[Oe.id]},has:function(Me){var Oe=ce(this);if(!u(Me))return!1;var be=a(Me);return!0===be?M(Oe).has(Me):be&&b(be,Oe.id)}}),s(he,oe?{get:function(Me){var Oe=ce(this);if(u(Me)){var be=a(Me);return!0===be?M(Oe).get(Me):be?be[Oe.id]:void 0}},set:function(Me,Oe){return Ae(this,Me,Oe)}}:{add:function(Me){return Ae(this,Me,!0)}}),ne}}},function(g,o,t){var e=t(945);t(68),g.exports=e},function(g,o,t){t(253);var e=t(34);g.exports=e.URLSearchParams},function(g,o,t){(function(e,s){var a;!function(l){var h,_=2147483647,m=36,b=/^xn--/,C=/[^\x20-\x7E]/,D=/[\x2E\u3002\uFF0E\uFF61]/g,x={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},j=Math.floor,H=String.fromCharCode;function z(ne){throw new RangeError(x[ne])}function U(ne,he){for(var ce=ne.length,Ae=[];ce--;)Ae[ce]=he(ne[ce]);return Ae}function M(ne,he){var ce=ne.split("@"),Ae="";return ce.length>1&&(Ae=ce[0]+"@",ne=ce[1]),Ae+U((ne=ne.replace(D,".")).split("."),he).join(".")}function I(ne){for(var he,ce,Ae=[],Me=0,Oe=ne.length;Me<Oe;)(he=ne.charCodeAt(Me++))>=55296&&he<=56319&&Me<Oe?56320==(64512&(ce=ne.charCodeAt(Me++)))?Ae.push(((1023&he)<<10)+(1023&ce)+65536):(Ae.push(he),Me--):Ae.push(he);return Ae}function J(ne){return U(ne,function(he){var ce="";return he>65535&&(ce+=H((he-=65536)>>>10&1023|55296),he=56320|1023&he),ce+H(he)}).join("")}function Y(ne,he){return ne+22+75*(ne<26)-((0!=he)<<5)}function ie(ne,he,ce){var Ae=0;for(ne=ce?j(ne/700):ne>>1,ne+=j(ne/he);ne>455;Ae+=m)ne=j(ne/35);return j(Ae+36*ne/(ne+38))}function oe(ne){var he,ce,Ae,Me,Oe,be,ue,He,$e,F,je,Et=[],lt=ne.length,nn=0,St=128,At=72;for((ce=ne.lastIndexOf("-"))<0&&(ce=0),Ae=0;Ae<ce;++Ae)ne.charCodeAt(Ae)>=128&&z("not-basic"),Et.push(ne.charCodeAt(Ae));for(Me=ce>0?ce+1:0;Me<lt;){for(Oe=nn,be=1,ue=m;Me>=lt&&z("invalid-input"),((He=(je=ne.charCodeAt(Me++))-48<10?je-22:je-65<26?je-65:je-97<26?je-97:m)>=m||He>j((_-nn)/be))&&z("overflow"),nn+=He*be,!(He<($e=ue<=At?1:ue>=At+26?26:ue-At));ue+=m)be>j(_/(F=m-$e))&&z("overflow"),be*=F;At=ie(nn-Oe,he=Et.length+1,0==Oe),j(nn/he)>_-St&&z("overflow"),St+=j(nn/he),nn%=he,Et.splice(nn++,0,St)}return J(Et)}function fe(ne){var he,ce,Ae,Me,Oe,be,ue,He,$e,F,je,Et,lt,nn,St,At=[];for(Et=(ne=I(ne)).length,he=128,ce=0,Oe=72,be=0;be<Et;++be)(je=ne[be])<128&&At.push(H(je));for(Ae=Me=At.length,Me&&At.push("-");Ae<Et;){for(ue=_,be=0;be<Et;++be)(je=ne[be])>=he&&je<ue&&(ue=je);for(ue-he>j((_-ce)/(lt=Ae+1))&&z("overflow"),ce+=(ue-he)*lt,he=ue,be=0;be<Et;++be)if((je=ne[be])<he&&++ce>_&&z("overflow"),je==he){for(He=ce,$e=m;!(He<(F=$e<=Oe?1:$e>=Oe+26?26:$e-Oe));$e+=m)At.push(H(Y(F+(St=He-F)%(nn=m-F),0))),He=j(St/nn);At.push(H(Y(He,0))),Oe=ie(ce,lt,Ae==Me),ce=0,++Ae}++ce,++he}return At.join("")}h={version:"1.4.1",ucs2:{decode:I,encode:J},decode:oe,encode:fe,toASCII:function(ne){return M(ne,function(he){return C.test(he)?"xn--"+fe(he):he})},toUnicode:function(ne){return M(ne,function(he){return b.test(he)?oe(he.slice(4).toLowerCase()):he})}},void 0===(a=function(){return h}.call(o,t,o,e))||(e.exports=a)}()}).call(this,t(183)(g),t(57))},function(g,o,t){"use strict";g.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(g,o,t){"use strict";o.decode=o.parse=t(949),o.encode=o.stringify=t(950)},function(g,o,t){"use strict";function e(a,l){return Object.prototype.hasOwnProperty.call(a,l)}g.exports=function(a,l,u,h){u=u||"=";var _={};if("string"!=typeof a||0===a.length)return _;var m=/\+/g;a=a.split(l=l||"&");var b=1e3;h&&"number"==typeof h.maxKeys&&(b=h.maxKeys);var C=a.length;b>0&&C>b&&(C=b);for(var D=0;D<C;++D){var x,j,H,z,U=a[D].replace(m,"%20"),M=U.indexOf(u);M>=0?(x=U.substr(0,M),j=U.substr(M+1)):(x=U,j=""),H=decodeURIComponent(x),z=decodeURIComponent(j),e(_,H)?s(_[H])?_[H].push(z):_[H]=[_[H],z]:_[H]=z}return _};var s=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}},function(g,o,t){"use strict";var e=function(u){switch(typeof u){case"string":return u;case"boolean":return u?"true":"false";case"number":return isFinite(u)?u:"";default:return""}};g.exports=function(u,h,_,m){return h=h||"&",_=_||"=",null===u&&(u=void 0),"object"==typeof u?a(l(u),function(b){var C=encodeURIComponent(e(b))+_;return s(u[b])?a(u[b],function(D){return C+encodeURIComponent(e(D))}).join(h):C+encodeURIComponent(e(u[b]))}).join(h):m?encodeURIComponent(e(m))+_+encodeURIComponent(e(u)):""};var s=Array.isArray||function(u){return"[object Array]"===Object.prototype.toString.call(u)};function a(u,h){if(u.map)return u.map(h);for(var _=[],m=0;m<u.length;m++)_.push(h(u[m],m));return _}var l=Object.keys||function(u){var h=[];for(var _ in u)Object.prototype.hasOwnProperty.call(u,_)&&h.push(_);return h}},function(g,o,t){var e=t(952);g.exports=e},function(g,o,t){t(953),t(955),t(253);var e=t(34);g.exports=e.URL},function(g,o,t){"use strict";t(131);var e,s=t(22),a=t(48),l=t(446),u=t(17),h=t(84),_=t(50),m=t(27),b=t(218),C=t(99),D=t(139),x=t(44),j=t(350),H=t(375),z=t(86),U=t(343).codeAt,M=t(954),I=t(67),J=t(100),Y=t(253),ie=t(76),oe=ie.set,fe=ie.getterFor("URL"),ne=Y.URLSearchParams,he=Y.getState,ce=u.URL,Ae=u.TypeError,Me=u.parseInt,Oe=Math.floor,be=Math.pow,ue=m("".charAt),He=m(/./.exec),$e=m([].join),F=m(1..toString),je=m([].pop),Et=m([].push),lt=m("".replace),nn=m([].shift),St=m("".split),At=m("".slice),Qe=m("".toLowerCase),It=m([].unshift),ae="Invalid scheme",Ie="Invalid host",dt="Invalid port",Jt=/[a-z]/i,zt=/[\d+-.a-z]/i,ln=/\d/,ar=/^0x/i,Ln=/^[0-7]+$/,Rn=/^\d+$/,er=/^[\da-f]+$/i,Mn=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Ht=/[\0\t\n\r #/:<>?@[\\\]^|]/,tr=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,Yn=/[\t\n\r]/g,Cn=function(rt,bt){var We,$t,or;if("["==ue(bt,0)){if("]"!=ue(bt,bt.length-1)||!(We=dn(At(bt,1,-1))))return Ie;rt.host=We}else if(mn(rt)){if(bt=M(bt),He(Mn,bt)||null===(We=Kt(bt)))return Ie;rt.host=We}else{if(He(Ht,bt))return Ie;for(We="",$t=H(bt),or=0;or<$t.length;or++)We+=Fn($t[or],qn);rt.host=We}},Kt=function(rt){var bt,We,$t,or,Zn,Vr,Cr,ai=St(rt,".");if(ai.length&&""==ai[ai.length-1]&&ai.length--,(bt=ai.length)>4)return rt;for(We=[],$t=0;$t<bt;$t++){if(""==(or=ai[$t]))return rt;if(Zn=10,or.length>1&&"0"==ue(or,0)&&(Zn=He(ar,or)?16:8,or=At(or,8==Zn?1:2)),""===or)Vr=0;else{if(!He(10==Zn?Rn:8==Zn?Ln:er,or))return rt;Vr=Me(or,Zn)}Et(We,Vr)}for($t=0;$t<bt;$t++)if(Vr=We[$t],$t==bt-1){if(Vr>=be(256,5-bt))return null}else if(Vr>255)return null;for(Cr=je(We),$t=0;$t<We.length;$t++)Cr+=We[$t]*be(256,3-$t);return Cr},dn=function(rt){var bt,We,$t,or,Zn,Vr,Cr,ai=[0,0,0,0,0,0,0,0],Dr=0,Qr=null,rn=0,fi=function(){return ue(rt,rn)};if(":"==fi()){if(":"!=ue(rt,1))return;rn+=2,Qr=++Dr}for(;fi();){if(8==Dr)return;if(":"!=fi()){for(bt=We=0;We<4&&He(er,fi());)bt=16*bt+Me(fi(),16),rn++,We++;if("."==fi()){if(0==We||(rn-=We,Dr>6))return;for($t=0;fi();){if(or=null,$t>0){if(!("."==fi()&&$t<4))return;rn++}if(!He(ln,fi()))return;for(;He(ln,fi());){if(Zn=Me(fi(),10),null===or)or=Zn;else{if(0==or)return;or=10*or+Zn}if(or>255)return;rn++}ai[Dr]=256*ai[Dr]+or,2!=++$t&&4!=$t||Dr++}if(4!=$t)return;break}if(":"==fi()){if(rn++,!fi())return}else if(fi())return;ai[Dr++]=bt}else{if(null!==Qr)return;rn++,Qr=++Dr}}if(null!==Qr)for(Vr=Dr-Qr,Dr=7;0!=Dr&&Vr>0;)Cr=ai[Dr],ai[Dr--]=ai[Qr+Vr-1],ai[Qr+--Vr]=Cr;else if(8!=Dr)return;return ai},Kn=function(rt){var bt,We,$t,or;if("number"==typeof rt){for(bt=[],We=0;We<4;We++)It(bt,rt%256),rt=Oe(rt/256);return $e(bt,".")}if("object"==typeof rt){for(bt="",$t=function(Zn){for(var Vr=null,Cr=1,ai=null,Dr=0,Qr=0;Qr<8;Qr++)0!==Zn[Qr]?(Dr>Cr&&(Vr=ai,Cr=Dr),ai=null,Dr=0):(null===ai&&(ai=Qr),++Dr);return Dr>Cr&&(Vr=ai,Cr=Dr),Vr}(rt),We=0;We<8;We++)or&&0===rt[We]||(or&&(or=!1),$t===We?(bt+=We?":":"::",or=!0):(bt+=F(rt[We],16),We<7&&(bt+=":")));return"["+bt+"]"}return rt},qn={},Sn=j({},qn,{" ":1,'"':1,"<":1,">":1,"`":1}),$n=j({},Sn,{"#":1,"?":1,"{":1,"}":1}),En=j({},$n,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Fn=function(rt,bt){var We=U(rt,0);return We>32&&We<127&&!x(bt,rt)?rt:encodeURIComponent(rt)},Dn={ftp:21,file:null,http:80,https:443,ws:80,wss:443},mn=function(rt){return x(Dn,rt.scheme)},jn=function(rt){return""!=rt.username||""!=rt.password},Xt=function(rt){return!rt.host||rt.cannotBeABaseURL||"file"==rt.scheme},ut=function(rt,bt){var We;return 2==rt.length&&He(Jt,ue(rt,0))&&(":"==(We=ue(rt,1))||!bt&&"|"==We)},mt=function(rt){var bt;return rt.length>1&&ut(At(rt,0,2))&&(2==rt.length||"/"===(bt=ue(rt,2))||"\\"===bt||"?"===bt||"#"===bt)},Tt=function(rt){var bt=rt.path,We=bt.length;!We||"file"==rt.scheme&&1==We&&ut(bt[0],!0)||bt.length--},yn=function(rt){return"."===rt||"%2e"===Qe(rt)},et={},jt={},hn={},Qn={},Ir={},ht={},L={},Ue={},nt={},at={},it={},Pt={},Ut={},ot={},Nn={},sn={},An={},Bn={},ir={},mr={},_r={},Nr=function(rt,bt,We,$t){var or,Zn,Vr,Cr,ai,Dr=We||et,Qr=0,rn="",fi=!1,Ei=!1,wi=!1;for(We||(rt.scheme="",rt.username="",rt.password="",rt.host=null,rt.port=null,rt.path=[],rt.query=null,rt.fragment=null,rt.cannotBeABaseURL=!1,bt=lt(bt,tr,"")),bt=lt(bt,Yn,""),or=H(bt);Qr<=or.length;){switch(Zn=or[Qr],Dr){case et:if(!Zn||!He(Jt,Zn)){if(We)return ae;Dr=hn;continue}rn+=Qe(Zn),Dr=jt;break;case jt:if(Zn&&(He(zt,Zn)||"+"==Zn||"-"==Zn||"."==Zn))rn+=Qe(Zn);else{if(":"!=Zn){if(We)return ae;rn="",Dr=hn,Qr=0;continue}if(We&&(mn(rt)!=x(Dn,rn)||"file"==rn&&(jn(rt)||null!==rt.port)||"file"==rt.scheme&&!rt.host))return;if(rt.scheme=rn,We)return void(mn(rt)&&Dn[rt.scheme]==rt.port&&(rt.port=null));rn="","file"==rt.scheme?Dr=ot:mn(rt)&&$t&&$t.scheme==rt.scheme?Dr=Qn:mn(rt)?Dr=Ue:"/"==or[Qr+1]?(Dr=Ir,Qr++):(rt.cannotBeABaseURL=!0,Et(rt.path,""),Dr=ir)}break;case hn:if(!$t||$t.cannotBeABaseURL&&"#"!=Zn)return ae;if($t.cannotBeABaseURL&&"#"==Zn){rt.scheme=$t.scheme,rt.path=z($t.path),rt.query=$t.query,rt.fragment="",rt.cannotBeABaseURL=!0,Dr=_r;break}Dr="file"==$t.scheme?ot:ht;continue;case Qn:if("/"!=Zn||"/"!=or[Qr+1]){Dr=ht;continue}Dr=nt,Qr++;break;case Ir:if("/"==Zn){Dr=at;break}Dr=Bn;continue;case ht:if(rt.scheme=$t.scheme,Zn==e)rt.username=$t.username,rt.password=$t.password,rt.host=$t.host,rt.port=$t.port,rt.path=z($t.path),rt.query=$t.query;else if("/"==Zn||"\\"==Zn&&mn(rt))Dr=L;else if("?"==Zn)rt.username=$t.username,rt.password=$t.password,rt.host=$t.host,rt.port=$t.port,rt.path=z($t.path),rt.query="",Dr=mr;else{if("#"!=Zn){rt.username=$t.username,rt.password=$t.password,rt.host=$t.host,rt.port=$t.port,rt.path=z($t.path),rt.path.length--,Dr=Bn;continue}rt.username=$t.username,rt.password=$t.password,rt.host=$t.host,rt.port=$t.port,rt.path=z($t.path),rt.query=$t.query,rt.fragment="",Dr=_r}break;case L:if(!mn(rt)||"/"!=Zn&&"\\"!=Zn){if("/"!=Zn){rt.username=$t.username,rt.password=$t.password,rt.host=$t.host,rt.port=$t.port,Dr=Bn;continue}Dr=at}else Dr=nt;break;case Ue:if(Dr=nt,"/"!=Zn||"/"!=ue(rn,Qr+1))continue;Qr++;break;case nt:if("/"!=Zn&&"\\"!=Zn){Dr=at;continue}break;case at:if("@"==Zn){fi&&(rn="%40"+rn),fi=!0,Vr=H(rn);for(var go=0;go<Vr.length;go++){var Fi=Vr[go];if(":"!=Fi||wi){var no=Fn(Fi,En);wi?rt.password+=no:rt.username+=no}else wi=!0}rn=""}else if(Zn==e||"/"==Zn||"?"==Zn||"#"==Zn||"\\"==Zn&&mn(rt)){if(fi&&""==rn)return"Invalid authority";Qr-=H(rn).length+1,rn="",Dr=it}else rn+=Zn;break;case it:case Pt:if(We&&"file"==rt.scheme){Dr=sn;continue}if(":"!=Zn||Ei){if(Zn==e||"/"==Zn||"?"==Zn||"#"==Zn||"\\"==Zn&&mn(rt)){if(mn(rt)&&""==rn)return Ie;if(We&&""==rn&&(jn(rt)||null!==rt.port))return;if(Cr=Cn(rt,rn))return Cr;if(rn="",Dr=An,We)return;continue}"["==Zn?Ei=!0:"]"==Zn&&(Ei=!1),rn+=Zn}else{if(""==rn)return Ie;if(Cr=Cn(rt,rn))return Cr;if(rn="",Dr=Ut,We==Pt)return}break;case Ut:if(!He(ln,Zn)){if(Zn==e||"/"==Zn||"?"==Zn||"#"==Zn||"\\"==Zn&&mn(rt)||We){if(""!=rn){var Ji=Me(rn,10);if(Ji>65535)return dt;rt.port=mn(rt)&&Ji===Dn[rt.scheme]?null:Ji,rn=""}if(We)return;Dr=An;continue}return dt}rn+=Zn;break;case ot:if(rt.scheme="file","/"==Zn||"\\"==Zn)Dr=Nn;else{if(!$t||"file"!=$t.scheme){Dr=Bn;continue}if(Zn==e)rt.host=$t.host,rt.path=z($t.path),rt.query=$t.query;else if("?"==Zn)rt.host=$t.host,rt.path=z($t.path),rt.query="",Dr=mr;else{if("#"!=Zn){mt($e(z(or,Qr),""))||(rt.host=$t.host,rt.path=z($t.path),Tt(rt)),Dr=Bn;continue}rt.host=$t.host,rt.path=z($t.path),rt.query=$t.query,rt.fragment="",Dr=_r}}break;case Nn:if("/"==Zn||"\\"==Zn){Dr=sn;break}$t&&"file"==$t.scheme&&!mt($e(z(or,Qr),""))&&(ut($t.path[0],!0)?Et(rt.path,$t.path[0]):rt.host=$t.host),Dr=Bn;continue;case sn:if(Zn==e||"/"==Zn||"\\"==Zn||"?"==Zn||"#"==Zn){if(!We&&ut(rn))Dr=Bn;else if(""==rn){if(rt.host="",We)return;Dr=An}else{if(Cr=Cn(rt,rn))return Cr;if("localhost"==rt.host&&(rt.host=""),We)return;rn="",Dr=An}continue}rn+=Zn;break;case An:if(mn(rt)){if(Dr=Bn,"/"!=Zn&&"\\"!=Zn)continue}else if(We||"?"!=Zn)if(We||"#"!=Zn){if(Zn!=e&&(Dr=Bn,"/"!=Zn))continue}else rt.fragment="",Dr=_r;else rt.query="",Dr=mr;break;case Bn:if(Zn==e||"/"==Zn||"\\"==Zn&&mn(rt)||!We&&("?"==Zn||"#"==Zn)){if(".."===(ai=Qe(ai=rn))||"%2e."===ai||".%2e"===ai||"%2e%2e"===ai?(Tt(rt),"/"==Zn||"\\"==Zn&&mn(rt)||Et(rt.path,"")):yn(rn)?"/"==Zn||"\\"==Zn&&mn(rt)||Et(rt.path,""):("file"==rt.scheme&&!rt.path.length&&ut(rn)&&(rt.host&&(rt.host=""),rn=ue(rn,0)+":"),Et(rt.path,rn)),rn="","file"==rt.scheme&&(Zn==e||"?"==Zn||"#"==Zn))for(;rt.path.length>1&&""===rt.path[0];)nn(rt.path);"?"==Zn?(rt.query="",Dr=mr):"#"==Zn&&(rt.fragment="",Dr=_r)}else rn+=Fn(Zn,$n);break;case ir:"?"==Zn?(rt.query="",Dr=mr):"#"==Zn?(rt.fragment="",Dr=_r):Zn!=e&&(rt.path[0]+=Fn(Zn,qn));break;case mr:We||"#"!=Zn?Zn!=e&&("'"==Zn&&mn(rt)?rt.query+="%27":rt.query+="#"==Zn?"%23":Fn(Zn,qn)):(rt.fragment="",Dr=_r);break;case _r:Zn!=e&&(rt.fragment+=Fn(Zn,Sn))}Qr++}},br=function(rt){var bt,We,$t=D(this,Jn),or=arguments.length>1?arguments[1]:void 0,Zn=I(rt),Vr=oe($t,{type:"URL"});if(void 0!==or)try{bt=fe(or)}catch(Dr){if(We=Nr(bt={},I(or)))throw Ae(We)}if(We=Nr(Vr,Zn,null,bt))throw Ae(We);var Cr=Vr.searchParams=new ne,ai=he(Cr);ai.updateSearchParams(Vr.query),ai.updateURL=function(){Vr.query=I(Cr)||null},a||($t.href=_(nr,$t),$t.origin=_(Mr,$t),$t.protocol=_(yi,$t),$t.username=_(Ii,$t),$t.password=_(Mi,$t),$t.host=_(Oi,$t),$t.hostname=_(Kr,$t),$t.port=_(ei,$t),$t.pathname=_(di,$t),$t.search=_(se,$t),$t.searchParams=_(ct,$t),$t.hash=_(Ke,$t))},Jn=br.prototype,nr=function(){var rt=fe(this),bt=rt.scheme,We=rt.username,$t=rt.password,or=rt.host,Zn=rt.port,Vr=rt.path,Cr=rt.query,ai=rt.fragment,Dr=bt+":";return null!==or?(Dr+="//",jn(rt)&&(Dr+=We+($t?":"+$t:"")+"@"),Dr+=Kn(or),null!==Zn&&(Dr+=":"+Zn)):"file"==bt&&(Dr+="//"),Dr+=rt.cannotBeABaseURL?Vr[0]:Vr.length?"/"+$e(Vr,"/"):"",null!==Cr&&(Dr+="?"+Cr),null!==ai&&(Dr+="#"+ai),Dr},Mr=function(){var rt=fe(this),bt=rt.scheme,We=rt.port;if("blob"==bt)try{return new br(bt.path[0]).origin}catch($t){return"null"}return"file"!=bt&&mn(rt)?bt+"://"+Kn(rt.host)+(null!==We?":"+We:""):"null"},yi=function(){return fe(this).scheme+":"},Ii=function(){return fe(this).username},Mi=function(){return fe(this).password},Oi=function(){var rt=fe(this),bt=rt.host,We=rt.port;return null===bt?"":null===We?Kn(bt):Kn(bt)+":"+We},Kr=function(){var rt=fe(this).host;return null===rt?"":Kn(rt)},ei=function(){var rt=fe(this).port;return null===rt?"":I(rt)},di=function(){var rt=fe(this),bt=rt.path;return rt.cannotBeABaseURL?bt[0]:bt.length?"/"+$e(bt,"/"):""},se=function(){var rt=fe(this).query;return rt?"?"+rt:""},ct=function(){return fe(this).searchParams},Ke=function(){var rt=fe(this).fragment;return rt?"#"+rt:""},Xe=function(rt,bt){return{get:rt,set:bt,configurable:!0,enumerable:!0}};if(a&&b(Jn,{href:Xe(nr,function(rt){var bt=fe(this),We=I(rt),$t=Nr(bt,We);if($t)throw Ae($t);he(bt.searchParams).updateSearchParams(bt.query)}),origin:Xe(Mr),protocol:Xe(yi,function(rt){var bt=fe(this);Nr(bt,I(rt)+":",et)}),username:Xe(Ii,function(rt){var bt=fe(this),We=H(I(rt));if(!Xt(bt)){bt.username="";for(var $t=0;$t<We.length;$t++)bt.username+=Fn(We[$t],En)}}),password:Xe(Mi,function(rt){var bt=fe(this),We=H(I(rt));if(!Xt(bt)){bt.password="";for(var $t=0;$t<We.length;$t++)bt.password+=Fn(We[$t],En)}}),host:Xe(Oi,function(rt){var bt=fe(this);bt.cannotBeABaseURL||Nr(bt,I(rt),it)}),hostname:Xe(Kr,function(rt){var bt=fe(this);bt.cannotBeABaseURL||Nr(bt,I(rt),Pt)}),port:Xe(ei,function(rt){var bt=fe(this);Xt(bt)||(""==(rt=I(rt))?bt.port=null:Nr(bt,rt,Ut))}),pathname:Xe(di,function(rt){var bt=fe(this);bt.cannotBeABaseURL||(bt.path=[],Nr(bt,I(rt),An))}),search:Xe(se,function(rt){var bt=fe(this);""==(rt=I(rt))?bt.query=null:("?"==ue(rt,0)&&(rt=At(rt,1)),bt.query="",Nr(bt,rt,mr)),he(bt.searchParams).updateSearchParams(bt.query)}),searchParams:Xe(ct),hash:Xe(Ke,function(rt){var bt=fe(this);""!=(rt=I(rt))?("#"==ue(rt,0)&&(rt=At(rt,1)),bt.fragment="",Nr(bt,rt,_r)):bt.fragment=null})}),C(Jn,"toJSON",function(){return _(nr,this)},{enumerable:!0}),C(Jn,"toString",function(){return _(nr,this)},{enumerable:!0}),ce){var Vt=ce.createObjectURL,Ct=ce.revokeObjectURL;Vt&&C(br,"createObjectURL",h(Vt,ce)),Ct&&C(br,"revokeObjectURL",h(Ct,ce))}J(br,"URL"),s({global:!0,forced:!l,sham:!a},{URL:br})},function(g,o,t){"use strict";var e=t(17),s=t(27),a=2147483647,l=/[^\0-\u007E]/,u=/[.\u3002\uFF0E\uFF61]/g,h="Overflow: input needs wider integers to process",_=e.RangeError,m=s(u.exec),b=Math.floor,C=String.fromCharCode,D=s("".charCodeAt),x=s([].join),j=s([].push),H=s("".replace),z=s("".split),U=s("".toLowerCase),M=function(Y){return Y+22+75*(Y<26)},I=function(Y,ie,oe){var fe=0;for(Y=oe?b(Y/700):Y>>1,Y+=b(Y/ie);Y>455;fe+=36)Y=b(Y/35);return b(fe+36*Y/(Y+38))},J=function(Y){var ie,oe,fe=[],ne=(Y=function(lt){for(var nn=[],St=0,At=lt.length;St<At;){var Qe=D(lt,St++);if(Qe>=55296&&Qe<=56319&&St<At){var It=D(lt,St++);56320==(64512&It)?j(nn,((1023&Qe)<<10)+(1023&It)+65536):(j(nn,Qe),St--)}else j(nn,Qe)}return nn}(Y)).length,he=128,ce=0,Ae=72;for(ie=0;ie<Y.length;ie++)(oe=Y[ie])<128&&j(fe,C(oe));var Me=fe.length,Oe=Me;for(Me&&j(fe,"-");Oe<ne;){var be=a;for(ie=0;ie<Y.length;ie++)(oe=Y[ie])>=he&&oe<be&&(be=oe);var ue=Oe+1;if(be-he>b((a-ce)/ue))throw _(h);for(ce+=(be-he)*ue,he=be,ie=0;ie<Y.length;ie++){if((oe=Y[ie])<he&&++ce>a)throw _(h);if(oe==he){for(var He=ce,$e=36;;$e+=36){var F=$e<=Ae?1:$e>=Ae+26?26:$e-Ae;if(He<F)break;var je=He-F,Et=36-F;j(fe,C(M(F+je%Et))),He=b(je/Et)}j(fe,C(M(He))),Ae=I(ce,ue,Oe==Me),ce=0,++Oe}}++ce,++he}return x(fe,"")};g.exports=function(Y){var ie,oe,fe=[],ne=z(H(U(Y),u,"."),".");for(ie=0;ie<ne.length;ie++)j(fe,m(l,oe=ne[ie])?"xn--"+J(oe):oe);return x(fe,".")}},function(g,o){},function(g,o,t){t(957);var e=t(34);g.exports=e.setTimeout},function(g,o,t){var e=t(22),s=t(17),a=t(93),l=t(41),u=t(95),h=t(86),_=/MSIE .\./.test(u),m=s.Function,b=function(C){return function(D,x){var j=arguments.length>2,H=j?h(arguments,2):void 0;return C(j?function(){a(l(D)?D:m(D),this,H)}:D,x)}};e({global:!0,bind:!0,forced:_},{setTimeout:b(s.setTimeout),setInterval:b(s.setInterval)})},function(g,o,t){var e=t(959);t(68),g.exports=e},function(g,o,t){t(77),t(960),t(97),t(131);var e=t(34);g.exports=e.Map},function(g,o,t){"use strict";t(445)("Map",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},t(961))},function(g,o,t){"use strict";var e=t(63).f,s=t(98),a=t(158),l=t(84),u=t(139),h=t(124),_=t(225),m=t(427),b=t(48),C=t(194).fastKey,D=t(76),x=D.set,j=D.getterFor;g.exports={getConstructor:function(H,z,U,M){var I=H(function(fe,ne){u(fe,J),x(fe,{type:z,index:s(null),first:void 0,last:void 0,size:0}),b||(fe.size=0),null!=ne&&h(ne,fe[M],{that:fe,AS_ENTRIES:U})}),J=I.prototype,Y=j(z),ie=function(fe,ne,he){var ce,Ae,Me=Y(fe),Oe=oe(fe,ne);return Oe?Oe.value=he:(Me.last=Oe={index:Ae=C(ne,!0),key:ne,value:he,previous:ce=Me.last,next:void 0,removed:!1},Me.first||(Me.first=Oe),ce&&(ce.next=Oe),b?Me.size++:fe.size++,"F"!==Ae&&(Me.index[Ae]=Oe)),fe},oe=function(fe,ne){var he,ce=Y(fe),Ae=C(ne);if("F"!==Ae)return ce.index[Ae];for(he=ce.first;he;he=he.next)if(he.key==ne)return he};return a(J,{clear:function(){for(var fe=Y(this),ne=fe.index,he=fe.first;he;)he.removed=!0,he.previous&&(he.previous=he.previous.next=void 0),delete ne[he.index],he=he.next;fe.first=fe.last=void 0,b?fe.size=0:this.size=0},delete:function(fe){var he=Y(this),ce=oe(this,fe);if(ce){var Ae=ce.next,Me=ce.previous;delete he.index[ce.index],ce.removed=!0,Me&&(Me.next=Ae),Ae&&(Ae.previous=Me),he.first==ce&&(he.first=Ae),he.last==ce&&(he.last=Me),b?he.size--:this.size--}return!!ce},forEach:function(fe){for(var ne,he=Y(this),ce=l(fe,arguments.length>1?arguments[1]:void 0);ne=ne?ne.next:he.first;)for(ce(ne.value,ne.key,this);ne&&ne.removed;)ne=ne.previous},has:function(fe){return!!oe(this,fe)}}),a(J,U?{get:function(fe){var ne=oe(this,fe);return ne&&ne.value},set:function(fe,ne){return ie(this,0===fe?0:fe,ne)}}:{add:function(fe){return ie(this,fe=0===fe?0:fe,fe)}}),b&&e(J,"size",{get:function(){return Y(this).size}}),I},setStrong:function(H,z,U){var M=z+" Iterator",I=j(z),J=j(M);_(H,z,function(Y,ie){x(this,{type:M,target:Y,state:I(Y),kind:ie,last:void 0})},function(){for(var Y=J(this),ie=Y.kind,oe=Y.last;oe&&oe.removed;)oe=oe.previous;return Y.target&&(Y.last=oe=oe?oe.next:Y.state.first)?"keys"==ie?{value:oe.key,done:!1}:"values"==ie?{value:oe.value,done:!1}:{value:[oe.key,oe.value],done:!1}:(Y.target=void 0,{value:void 0,done:!0})},U?"entries":"values",!U,!0),m(z)}}},function(g,o,t){t(68);var e=t(75),s=t(44),a=t(35),l=t(963),u=Array.prototype,h={DOMTokenList:!0,NodeList:!0};g.exports=function(_){var m=_.keys;return _===u||a(u,_)&&m===u.keys||s(h,e(_))?l:m}},function(g,o,t){var e=t(964);g.exports=e},function(g,o,t){t(77),t(97);var e=t(42);g.exports=e("Array").keys},function(g,o,t){t(68);var e=t(75),s=t(44),a=t(35),l=t(966),u=Array.prototype,h={DOMTokenList:!0,NodeList:!0};g.exports=function(_){var m=_.values;return _===u||a(u,_)&&m===u.values||s(h,e(_))?l:m}},function(g,o,t){var e=t(967);g.exports=e},function(g,o,t){t(77),t(97);var e=t(42);g.exports=e("Array").values},function(g,o,t){var e=t(969);g.exports=e},function(g,o,t){var e=t(35),s=t(970),a=Array.prototype;g.exports=function(l){var u=l.lastIndexOf;return l===a||e(a,l)&&u===a.lastIndexOf?s:u}},function(g,o,t){t(971);var e=t(42);g.exports=e("Array").lastIndexOf},function(g,o,t){var e=t(22),s=t(972);e({target:"Array",proto:!0,forced:s!==[].lastIndexOf},{lastIndexOf:s})},function(g,o,t){"use strict";var e=t(93),s=t(61),a=t(129),l=t(74),u=t(114),h=Math.min,_=[].lastIndexOf,m=!!_&&1/[1].lastIndexOf(1,-0)<0,b=u("lastIndexOf");g.exports=m||!b?function(D){if(m)return e(_,this,arguments)||0;var x=s(this),j=l(x),H=j-1;for(arguments.length>1&&(H=h(H,a(arguments[1]))),H<0&&(H=j+H);H>=0;H--)if(H in x&&x[H]===D)return H||0;return-1}:_},function(g,o,t){"use strict";var e,s="";g.exports=function(a,l){if("string"!=typeof a)throw new TypeError("expected a string");if(1===l)return a;if(2===l)return a+a;var u=a.length*l;if(e!==a||void 0===e)e=a,s="";else if(s.length>=u)return s.substr(0,u);for(;u>s.length&&l>1;)1&l&&(s+=a),l>>=1,a+=a;return s=(s+=a).substr(0,u)}},function(g,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.DebounceInput=void 0;var e=a(t(0)),s=a(t(975));function a(U){return U&&U.__esModule?U:{default:U}}function l(U){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(M){return typeof M}:function(M){return M&&"function"==typeof Symbol&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M})(U)}function h(U,M){var I=Object.keys(U);if(Object.getOwnPropertySymbols){var J=Object.getOwnPropertySymbols(U);M&&(J=J.filter(function(Y){return Object.getOwnPropertyDescriptor(U,Y).enumerable})),I.push.apply(I,J)}return I}function _(U){for(var M=1;M<arguments.length;M++){var I=null!=arguments[M]?arguments[M]:{};M%2?h(Object(I),!0).forEach(function(J){H(U,J,I[J])}):Object.getOwnPropertyDescriptors?Object.defineProperties(U,Object.getOwnPropertyDescriptors(I)):h(Object(I)).forEach(function(J){Object.defineProperty(U,J,Object.getOwnPropertyDescriptor(I,J))})}return U}function b(U,M){return(b=Object.setPrototypeOf||function(I,J){return I.__proto__=J,I})(U,M)}function D(U,M){return!M||"object"!==l(M)&&"function"!=typeof M?x(U):M}function x(U){if(void 0===U)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return U}function j(U){return(j=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)})(U)}function H(U,M,I){return M in U?Object.defineProperty(U,M,{value:I,enumerable:!0,configurable:!0,writable:!0}):U[M]=I,U}var z=function(U){!function(oe,fe){if("function"!=typeof fe&&null!==fe)throw new TypeError("Super expression must either be null or a function");oe.prototype=Object.create(fe&&fe.prototype,{constructor:{value:oe,writable:!0,configurable:!0}}),fe&&b(oe,fe)}(ie,U);var I,Y=function(U){var M=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(I){return!1}}();return function(){var I,J=j(U);if(M){var Y=j(this).constructor;I=Reflect.construct(J,arguments,Y)}else I=J.apply(this,arguments);return D(this,I)}}(ie);function ie(oe){var fe;return function(he,ce){if(!(he instanceof ce))throw new TypeError("Cannot call a class as a function")}(this,ie),H(x(fe=Y.call(this,oe)),"onChange",function(he){he.persist();var ce=fe.state.value,Ae=fe.props.minLength;fe.setState({value:he.target.value},function(){var Me=fe.state.value;Me.length>=Ae?fe.notify(he):ce.length>Me.length&&fe.notify(_(_({},he),{},{target:_(_({},he.target),{},{value:""})}))})}),H(x(fe),"onKeyDown",function(he){"Enter"===he.key&&fe.forceNotify(he);var ce=fe.props.onKeyDown;ce&&(he.persist(),ce(he))}),H(x(fe),"onBlur",function(he){fe.forceNotify(he);var ce=fe.props.onBlur;ce&&(he.persist(),ce(he))}),H(x(fe),"createNotifier",function(he){if(he<0)fe.notify=function(){return null};else if(0===he)fe.notify=fe.doNotify;else{var ce=(0,s.default)(function(Ae){fe.isDebouncing=!1,fe.doNotify(Ae)},he);fe.notify=function(Ae){fe.isDebouncing=!0,ce(Ae)},fe.flush=function(){return ce.flush()},fe.cancel=function(){fe.isDebouncing=!1,ce.cancel()}}}),H(x(fe),"doNotify",function(){var he=fe.props.onChange;he.apply(void 0,arguments)}),H(x(fe),"forceNotify",function(he){if(fe.isDebouncing||!(fe.props.debounceTimeout>0)){fe.cancel&&fe.cancel();var Ae=fe.state.value;fe.doNotify(Ae.length>=fe.props.minLength?he:_(_({},he),{},{target:_(_({},he.target),{},{value:Ae})}))}}),fe.isDebouncing=!1,fe.state={value:null==oe.value?"":oe.value},fe.createNotifier(fe.props.debounceTimeout),fe}return(I=[{key:"componentDidUpdate",value:function(oe){if(!this.isDebouncing){var fe=this.props,ne=fe.value,he=fe.debounceTimeout,ce=oe.debounceTimeout;void 0!==ne&&oe.value!==ne&&this.state.value!==ne&&this.setState({value:ne}),he!==ce&&this.createNotifier(he)}}},{key:"componentWillUnmount",value:function(){this.flush&&this.flush()}},{key:"render",value:function(){var oe,fe,ne=this.props,he=ne.element,ce=ne.forceNotifyByEnter,Ae=ne.forceNotifyOnBlur,Me=ne.onKeyDown,Oe=ne.onBlur,be=ne.inputRef,ue=function(U,M){if(null==U)return{};var I,J,Y=function(oe,fe){if(null==oe)return{};var ne,he,ce={},Ae=Object.keys(oe);for(he=0;he<Ae.length;he++)fe.indexOf(ne=Ae[he])>=0||(ce[ne]=oe[ne]);return ce}(U,M);if(Object.getOwnPropertySymbols){var ie=Object.getOwnPropertySymbols(U);for(J=0;J<ie.length;J++)M.indexOf(I=ie[J])>=0||Object.prototype.propertyIsEnumerable.call(U,I)&&(Y[I]=U[I])}return Y}(ne,["element","onChange","value","minLength","debounceTimeout","forceNotifyByEnter","forceNotifyOnBlur","onKeyDown","onBlur","inputRef"]),He=this.state.value;oe=ce?{onKeyDown:this.onKeyDown}:Me?{onKeyDown:Me}:{},fe=Ae?{onBlur:this.onBlur}:Oe?{onBlur:Oe}:{};var $e=be?{ref:be}:{};return e.default.createElement(he,_(_(_(_({},ue),{},{onChange:this.onChange,value:He},oe),fe),$e))}}])&&function(U,M){for(var I=0;I<M.length;I++){var J=M[I];J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J&&(J.writable=!0),Object.defineProperty(U,J.key,J)}}(ie.prototype,I),ie}(e.default.PureComponent);o.DebounceInput=z,H(z,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},function(g,o,t){(function(e){var s=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,h=parseInt,m="object"==typeof self&&self&&self.Object===Object&&self,b="object"==typeof e&&e&&e.Object===Object&&e||m||Function("return this")(),C=Object.prototype.toString,D=Math.max,x=Math.min,j=function(){return b.Date.now()};function H(U){var M=typeof U;return!!U&&("object"==M||"function"==M)}function z(U){if("number"==typeof U)return U;if("symbol"==typeof(J=U)||(Y=J)&&"object"==typeof Y&&"[object Symbol]"==C.call(J))return NaN;var J,Y;if(H(U)){var M="function"==typeof U.valueOf?U.valueOf():U;U=H(M)?M+"":M}if("string"!=typeof U)return 0===U?U:+U;U=U.replace(s,"");var I=l.test(U);return I||u.test(U)?h(U.slice(2),I?2:8):a.test(U)?NaN:+U}g.exports=function(U,M,I){var J,Y,ie,oe,fe,ne,he=0,ce=!1,Ae=!1,Me=!0;if("function"!=typeof U)throw new TypeError("Expected a function");function Oe(je){var Et=J,lt=Y;return J=Y=void 0,he=je,oe=U.apply(lt,Et)}function be(je){return he=je,fe=setTimeout(He,M),ce?Oe(je):oe}function ue(je){var Et=je-ne;return void 0===ne||Et>=M||Et<0||Ae&&je-he>=ie}function He(){var Et,lt,je=j();if(ue(je))return $e(je);fe=setTimeout(He,(lt=M-((Et=je)-ne),Ae?x(lt,ie-(Et-he)):lt))}function $e(je){return fe=void 0,Me&&J?Oe(je):(J=Y=void 0,oe)}function F(){var je=j(),Et=ue(je);if(J=arguments,Y=this,ne=je,Et){if(void 0===fe)return be(ne);if(Ae)return fe=setTimeout(He,M),Oe(ne)}return void 0===fe&&(fe=setTimeout(He,M)),oe}return M=z(M)||0,H(I)&&(ce=!!I.leading,ie=(Ae="maxWait"in I)?D(z(I.maxWait)||0,M):ie,Me="trailing"in I?!!I.trailing:Me),F.cancel=function(){void 0!==fe&&clearTimeout(fe),he=0,J=ne=Y=fe=void 0},F.flush=function(){return void 0===fe?oe:$e(j())},F}}).call(this,t(57))},function(g,o,t){var e={"./all.js":314,"./auth/actions.js":82,"./auth/index.js":277,"./auth/reducers.js":278,"./auth/selectors.js":279,"./auth/spec-wrap-actions.js":280,"./configs/actions.js":144,"./configs/helpers.js":162,"./configs/index.js":316,"./configs/reducers.js":285,"./configs/selectors.js":284,"./configs/spec-actions.js":283,"./deep-linking/helpers.js":164,"./deep-linking/index.js":286,"./deep-linking/layout.js":287,"./deep-linking/operation-tag-wrapper.jsx":289,"./deep-linking/operation-wrapper.jsx":288,"./download-url.js":282,"./err/actions.js":60,"./err/error-transformers/hook.js":127,"./err/error-transformers/transformers/not-of-type.js":258,"./err/error-transformers/transformers/parameter-oneof.js":259,"./err/index.js":256,"./err/reducers.js":257,"./err/selectors.js":260,"./filter/index.js":290,"./filter/opsFilter.js":291,"./layout/actions.js":109,"./layout/index.js":261,"./layout/reducers.js":262,"./layout/selectors.js":263,"./layout/spec-extensions/wrap-selector.js":264,"./logs/index.js":275,"./oas3/actions.js":55,"./oas3/auth-extensions/wrap-selectors.js":295,"./oas3/components/callbacks.jsx":298,"./oas3/components/http-auth.jsx":303,"./oas3/components/index.js":297,"./oas3/components/operation-link.jsx":299,"./oas3/components/operation-servers.jsx":304,"./oas3/components/request-body-editor.jsx":302,"./oas3/components/request-body.jsx":163,"./oas3/components/servers-container.jsx":301,"./oas3/components/servers.jsx":300,"./oas3/helpers.jsx":36,"./oas3/index.js":293,"./oas3/reducers.js":313,"./oas3/selectors.js":312,"./oas3/spec-extensions/selectors.js":296,"./oas3/spec-extensions/wrap-selectors.js":294,"./oas3/wrap-components/auth-item.jsx":307,"./oas3/wrap-components/index.js":305,"./oas3/wrap-components/json-schema-string.jsx":311,"./oas3/wrap-components/markdown.jsx":306,"./oas3/wrap-components/model.jsx":310,"./oas3/wrap-components/online-validator-badge.js":309,"./oas3/wrap-components/version-stamp.jsx":308,"./on-complete/index.js":292,"./request-snippets/fn.js":161,"./request-snippets/index.js":272,"./request-snippets/request-snippets.jsx":274,"./request-snippets/selectors.js":273,"./samples/fn.js":142,"./samples/index.js":271,"./spec/actions.js":46,"./spec/index.js":265,"./spec/reducers.js":266,"./spec/selectors.js":88,"./spec/wrap-actions.js":267,"./swagger-js/configs-wrap-actions.js":276,"./swagger-js/index.js":315,"./util/index.js":281,"./view/error-boundary.jsx":270,"./view/fallback.jsx":160,"./view/index.js":268,"./view/root-injects.jsx":165};function s(l){var u=a(l);return t(u)}function a(l){if(!t.o(e,l)){var u=new Error("Cannot find module '"+l+"'");throw u.code="MODULE_NOT_FOUND",u}return e[l]}s.keys=function(){return Object.keys(e)},s.resolve=a,g.exports=s,s.id=976},function(g,o,t){"use strict";t.r(o);var e={};t.r(e),t.d(e,"Container",function(){return Bl}),t.d(e,"Col",function(){return Di}),t.d(e,"Row",function(){return vs}),t.d(e,"Button",function(){return pa}),t.d(e,"TextArea",function(){return Vo}),t.d(e,"Input",function(){return ja}),t.d(e,"Select",function(){return hs}),t.d(e,"Link",function(){return ze}),t.d(e,"Collapse",function(){return kt});var s={};t.r(s),t.d(s,"JsonSchemaForm",function(){return Es}),t.d(s,"JsonSchema_string",function(){return Ll}),t.d(s,"JsonSchema_array",function(){return Hl}),t.d(s,"JsonSchemaArrayItemText",function(){return mo}),t.d(s,"JsonSchemaArrayItemFile",function(){return As}),t.d(s,"JsonSchema_boolean",function(){return qc}),t.d(s,"JsonSchema_object",function(){return fc});var a=t(19),l=t.n(a),u=t(2),h=t.n(u),_=t(12),m=t.n(_),b=t(15),C=t.n(b),D=t(32),x=t.n(D),j=t(79),H=t.n(j),z=t(3),U=t.n(z),M=t(6),I=t.n(M),J=t(7),Y=t.n(J),ie=t(37),oe=t.n(ie),fe=t(21),ne=t.n(fe),he=t(20),ce=t.n(he),Ae=t(24),Me=t.n(Ae),Oe=t(30),be=t.n(Oe),ue=t(4),He=t.n(ue),$e=t(0),F=t.n($e);function je(xe,ke,Te){return ke in xe?Object.defineProperty(xe,ke,{value:Te,enumerable:!0,configurable:!0,writable:!0}):xe[ke]=Te,xe}function Et(xe,ke){var Te=Object.keys(xe);if(Object.getOwnPropertySymbols){var ge=Object.getOwnPropertySymbols(xe);ke&&(ge=ge.filter(function(Re){return Object.getOwnPropertyDescriptor(xe,Re).enumerable})),Te.push.apply(Te,ge)}return Te}function lt(xe){for(var ke=1;ke<arguments.length;ke++){var Te=null!=arguments[ke]?arguments[ke]:{};ke%2?Et(Object(Te),!0).forEach(function(ge){je(xe,ge,Te[ge])}):Object.getOwnPropertyDescriptors?Object.defineProperties(xe,Object.getOwnPropertyDescriptors(Te)):Et(Object(Te)).forEach(function(ge){Object.defineProperty(xe,ge,Object.getOwnPropertyDescriptor(Te,ge))})}return xe}function nn(xe){return"Minified Redux error #"+xe+"; visit https://redux.js.org/Errors?code="+xe+" for the full message or use the non-minified dev environment for full errors. "}var St="function"==typeof Symbol&&Symbol.observable||"@@observable",At=function(){return Math.random().toString(36).substring(7).split("").join(".")},Qe={INIT:"@@redux/INIT"+At(),REPLACE:"@@redux/REPLACE"+At(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+At()}};function It(xe){if("object"!=typeof xe||null===xe)return!1;for(var ke=xe;null!==Object.getPrototypeOf(ke);)ke=Object.getPrototypeOf(ke);return Object.getPrototypeOf(xe)===ke}function ae(xe,ke,Te){var ge;if("function"==typeof ke&&"function"==typeof Te||"function"==typeof Te&&"function"==typeof arguments[3])throw new Error(nn(0));if("function"==typeof ke&&void 0===Te&&(Te=ke,ke=void 0),void 0!==Te){if("function"!=typeof Te)throw new Error(nn(1));return Te(ae)(xe,ke)}if("function"!=typeof xe)throw new Error(nn(2));var Re=xe,Be=ke,xt=[],Dt=xt,en=!1;function vn(){Dt===xt&&(Dt=xt.slice())}function Gn(){if(en)throw new Error(nn(3));return Be}function kn(Gr){if("function"!=typeof Gr)throw new Error(nn(4));if(en)throw new Error(nn(5));var ci=!0;return vn(),Dt.push(Gr),function(){if(ci){if(en)throw new Error(nn(6));ci=!1,vn();var Ci=Dt.indexOf(Gr);Dt.splice(Ci,1),xt=null}}}function zn(Gr){if(!It(Gr))throw new Error(nn(7));if(void 0===Gr.type)throw new Error(nn(8));if(en)throw new Error(nn(9));try{en=!0,Be=Re(Be,Gr)}finally{en=!1}for(var ci=xt=Dt,Ci=0;Ci<ci.length;Ci++)(0,ci[Ci])();return Gr}function jr(Gr){if("function"!=typeof Gr)throw new Error(nn(10));Re=Gr,zn({type:Qe.REPLACE})}function kr(){var Gr,ci=kn;return(Gr={subscribe:function(Ci){if("object"!=typeof Ci||null===Ci)throw new Error(nn(11));function vi(){Ci.next&&Ci.next(Gn())}return vi(),{unsubscribe:ci(vi)}}})[St]=function(){return this},Gr}return zn({type:Qe.INIT}),(ge={dispatch:zn,subscribe:kn,getState:Gn,replaceReducer:jr})[St]=kr,ge}function Ie(xe,ke){return function(){return ke(xe.apply(this,arguments))}}function dt(){for(var xe=arguments.length,ke=new Array(xe),Te=0;Te<xe;Te++)ke[Te]=arguments[Te];return 0===ke.length?function(ge){return ge}:1===ke.length?ke[0]:ke.reduce(function(ge,Re){return function(){return ge(Re.apply(void 0,arguments))}})}function Jt(){for(var xe=arguments.length,ke=new Array(xe),Te=0;Te<xe;Te++)ke[Te]=arguments[Te];return function(ge){return function(){var Re=ge.apply(void 0,arguments),Be=function(){throw new Error(nn(15))},xt={getState:Re.getState,dispatch:function(){return Be.apply(void 0,arguments)}},Dt=ke.map(function(en){return en(xt)});return Be=dt.apply(void 0,Dt)(Re.dispatch),lt(lt({},Re),{},{dispatch:Be})}}}var zt=t(1),ln=t.n(zt),ar=t(448),Ln=t(141),Rn=t(449),er=t.n(Rn),Mn=t(60),Ht=t(26),tr=t(5),Yn=function(xe){return xe};function Cn(xe,ke,Te){var ge=[Object(tr.J)(Te)];return ae(xe,ke,(Ht.a.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||dt)(Jt.apply(void 0,ge)))}var Kt=function(){function xe(){var ke,Te=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};I()(this,xe),H()(this,{state:{},plugins:[],pluginsOptions:{},system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},Te),this.getSystem=oe()(ke=this._getSystem).call(ke,this),this.store=$n(Yn,Object(zt.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}return Y()(xe,[{key:"getStore",value:function(){return this.store}},{key:"register",value:function(ke){var Te=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ge=dn(ke,this.getSystem(),this.pluginsOptions);qn(this.system,ge),Te&&this.buildSystem();var Re=Kn.call(this.system,ke,this.getSystem());Re&&this.buildSystem()}},{key:"buildSystem",value:function(){var ke=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],Te=this.getStore().dispatch,ge=this.getStore().getState;this.boundSystem=ne()({},this.getRootInjects(),this.getWrappedAndBoundActions(Te),this.getWrappedAndBoundSelectors(ge,this.getSystem),this.getStateThunks(ge),this.getFn(),this.getConfigs()),ke&&this.rebuildReducer()}},{key:"_getSystem",value:function(){return this.boundSystem}},{key:"getRootInjects",value:function(){var ke,Te,ge;return ne()({getSystem:this.getSystem,getStore:oe()(ke=this.getStore).call(ke,this),getComponents:oe()(Te=this.getComponents).call(Te,this),getState:this.getStore().getState,getConfigs:oe()(ge=this._getConfigs).call(ge,this),Im:ln.a,React:F.a},this.system.rootInjects||{})}},{key:"_getConfigs",value:function(){return this.system.configs}},{key:"getConfigs",value:function(){return{configs:this.system.configs}}},{key:"setConfigs",value:function(ke){this.system.configs=ke}},{key:"rebuildReducer",value:function(){var ke,Te,ge,Re;this.store.replaceReducer((Re=this.system.statePlugins,ke=Object(tr.x)(Re,function(Be){return Be.reducers}),ge=be()(Te=C()(ke)).call(Te,function(Be,xt){return Be[xt]=(Dt=ke[xt],function(){var en=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new zt.Map,vn=arguments.length>1?arguments[1]:void 0;if(!Dt)return en;var Gn=Dt[vn.type];if(Gn){var kn=Sn(Gn)(en,vn);return null===kn?en:kn}return en}),Be;var Dt},{}),C()(ge).length?Object(ar.combineReducers)(ge):Yn))}},{key:"getType",value:function(ke){var Te=ke[0].toUpperCase()+ce()(ke).call(ke,1);return Object(tr.y)(this.system.statePlugins,function(ge,Re){var Be=ge[ke];if(Be)return U()({},Re+Te,Be)})}},{key:"getSelectors",value:function(){return this.getType("selectors")}},{key:"getActions",value:function(){var ke=this.getType("actions");return Object(tr.x)(ke,function(Te){return Object(tr.y)(Te,function(ge,Re){if(Object(tr.r)(ge))return U()({},Re,ge)})})}},{key:"getWrappedAndBoundActions",value:function(ke){var Te=this,ge=this.getBoundActions(ke);return Object(tr.x)(ge,function(Re,Be){var xt=Te.system.statePlugins[ce()(Be).call(Be,0,-7)].wrapActions;return xt?Object(tr.x)(Re,function(Dt,en){var vn=xt[en];return vn?(Me()(vn)||(vn=[vn]),be()(vn).call(vn,function(Gn,kn){var zn=function(){return kn(Gn,Te.getSystem()).apply(void 0,arguments)};if(!Object(tr.r)(zn))throw new TypeError("wrapActions needs to return a function that returns a new function (ie the wrapped action)");return Sn(zn)},Dt||Function.prototype)):Dt}):Re})}},{key:"getWrappedAndBoundSelectors",value:function(ke,Te){var ge=this,Re=this.getBoundSelectors(ke,Te);return Object(tr.x)(Re,function(Be,xt){var Dt=[ce()(xt).call(xt,0,-9)],en=ge.system.statePlugins[Dt].wrapSelectors;return en?Object(tr.x)(Be,function(vn,Gn){var kn=en[Gn];return kn?(Me()(kn)||(kn=[kn]),be()(kn).call(kn,function(zn,jr){var kr=function(){for(var Gr,ci=arguments.length,Ci=new Array(ci),vi=0;vi<ci;vi++)Ci[vi]=arguments[vi];return jr(zn,ge.getSystem()).apply(void 0,h()(Gr=[ke().getIn(Dt)]).call(Gr,Ci))};if(!Object(tr.r)(kr))throw new TypeError("wrapSelector needs to return a function that returns a new function (ie the wrapped action)");return kr},vn||Function.prototype)):vn}):Be})}},{key:"getStates",value:function(ke){var Te;return be()(Te=C()(this.system.statePlugins)).call(Te,function(ge,Re){return ge[Re]=ke.get(Re),ge},{})}},{key:"getStateThunks",value:function(ke){var Te;return be()(Te=C()(this.system.statePlugins)).call(Te,function(ge,Re){return ge[Re]=function(){return ke().get(Re)},ge},{})}},{key:"getFn",value:function(){return{fn:this.system.fn}}},{key:"getComponents",value:function(ke){var Te=this,ge=this.system.components[ke];return Me()(ge)?be()(ge).call(ge,function(Re,Be){return Be(Re,Te.getSystem())}):void 0!==ke?this.system.components[ke]:this.system.components}},{key:"getBoundSelectors",value:function(ke,Te){return Object(tr.x)(this.getSelectors(),function(ge,Re){var Be=[ce()(Re).call(Re,0,-9)],xt=function(){return ke().getIn(Be)};return Object(tr.x)(ge,function(Dt){return function(){for(var en,vn=arguments.length,Gn=new Array(vn),kn=0;kn<vn;kn++)Gn[kn]=arguments[kn];var zn=Sn(Dt).apply(null,h()(en=[xt()]).call(en,Gn));return"function"==typeof zn&&(zn=Sn(zn)(Te())),zn}})})}},{key:"getBoundActions",value:function(ke){ke=ke||this.getStore().dispatch;var Te=this.getActions(),ge=function Re(Be){return"function"!=typeof Be?Object(tr.x)(Be,function(xt){return Re(xt)}):function(){var xt=null;try{xt=Be.apply(void 0,arguments)}catch(Dt){xt={type:Mn.NEW_THROWN_ERR,error:!0,payload:Object(Ln.serializeError)(Dt)}}finally{return xt}}};return Object(tr.x)(Te,function(Re){return function(Be,xt){if("function"==typeof Be)return Ie(Be,xt);if("object"!=typeof Be||null===Be)throw new Error(nn(16));var Dt={};for(var en in Be){var vn=Be[en];"function"==typeof vn&&(Dt[en]=Ie(vn,xt))}return Dt}(ge(Re),ke)})}},{key:"getMapStateToProps",value:function(){var ke=this;return function(){return ne()({},ke.getSystem())}}},{key:"getMapDispatchToProps",value:function(ke){var Te=this;return function(ge){return H()({},Te.getWrappedAndBoundActions(ge),Te.getFn(),ke)}}}]),xe}();function dn(xe,ke,Te){if(Object(tr.t)(xe)&&!Object(tr.p)(xe))return er()({},xe);if(Object(tr.s)(xe))return dn(xe(ke),ke,Te);if(Object(tr.p)(xe)){var ge,Re="chain"===Te.pluginLoadType?ke.getComponents():{};return be()(ge=He()(xe).call(xe,function(Be){return dn(Be,ke,Te)})).call(ge,qn,Re)}return{}}function Kn(xe,ke){var Te=this,ge=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Re=ge.hasLoaded,Be=Re;return Object(tr.t)(xe)&&!Object(tr.p)(xe)&&"function"==typeof xe.afterLoad&&(Be=!0,Sn(xe.afterLoad).call(this,ke)),Object(tr.s)(xe)?Kn.call(this,xe(ke),ke,{hasLoaded:Be}):Object(tr.p)(xe)?He()(xe).call(xe,function(xt){return Kn.call(Te,xt,ke,{hasLoaded:Be})}):Be}function qn(){var xe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},ke=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Object(tr.t)(xe))return{};if(!Object(tr.t)(ke))return xe;ke.wrapComponents&&(Object(tr.x)(ke.wrapComponents,function(jr,kr){var Gr=xe.components&&xe.components[kr];Gr&&Me()(Gr)?(xe.components[kr]=h()(Gr).call(Gr,[jr]),delete ke.wrapComponents[kr]):Gr&&(xe.components[kr]=[Gr,jr],delete ke.wrapComponents[kr])}),C()(ke.wrapComponents).length||delete ke.wrapComponents);var Te=xe.statePlugins;if(Object(tr.t)(Te))for(var ge in Te){var Re=Te[ge];if(Object(tr.t)(Re)){var Be=Re.wrapActions,xt=Re.wrapSelectors;if(Object(tr.t)(Be))for(var Dt in Be){var en,vn=Be[Dt];Me()(vn)||(Be[Dt]=vn=[vn]),ke&&ke.statePlugins&&ke.statePlugins[ge]&&ke.statePlugins[ge].wrapActions&&ke.statePlugins[ge].wrapActions[Dt]&&(ke.statePlugins[ge].wrapActions[Dt]=h()(en=Be[Dt]).call(en,ke.statePlugins[ge].wrapActions[Dt]))}if(Object(tr.t)(xt))for(var Gn in xt){var kn,zn=xt[Gn];Me()(zn)||(xt[Gn]=zn=[zn]),ke&&ke.statePlugins&&ke.statePlugins[ge]&&ke.statePlugins[ge].wrapSelectors&&ke.statePlugins[ge].wrapSelectors[Gn]&&(ke.statePlugins[ge].wrapSelectors[Gn]=h()(kn=xt[Gn]).call(kn,ke.statePlugins[ge].wrapSelectors[Gn]))}}}return H()(xe,ke)}function Sn(xe){var ke=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Te=ke.logErrors,ge=void 0===Te||Te;return"function"!=typeof xe?xe:function(){try{for(var Re,Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return xe.call.apply(xe,h()(Re=[this]).call(Re,xt))}catch(en){return ge&&console.error(en),null}}}function $n(xe,ke,Te){return Cn(xe,ke,Te)}var En=t(256),Fn=t(261),Dn=t(265),mn=t(268),jn=t(271),Xt=t(272),ut=t(275),mt=t(315),Tt=t(277),yn=t(281),et=t(282),jt=t(316),hn=t(286),Qn=t(290),Ir=t(292),ht=t(10),L=t.n(ht),Ue=t(8),nt=t.n(Ue),at=t(9),it=t.n(at),Pt=t(18),Ut=t.n(Pt),ot=(t(11),t(28),t(59)),Nn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"toggleShown",function(){var Dt=Be.props,en=Dt.layoutActions,vn=Dt.tag,Gn=Dt.operationId,kn=Dt.isShown,zn=Be.getResolvedSubtree();kn||void 0!==zn||Be.requestResolvedSubtree(),en.show(["operations",vn,Gn],!kn)}),U()(L()(Be),"onCancelClick",function(){Be.setState({tryItOutEnabled:!Be.state.tryItOutEnabled})}),U()(L()(Be),"onTryoutClick",function(){Be.setState({tryItOutEnabled:!Be.state.tryItOutEnabled})}),U()(L()(Be),"onExecute",function(){Be.setState({executeInProgress:!0})}),U()(L()(Be),"getResolvedSubtree",function(){var Dt=Be.props,vn=Dt.path,Gn=Dt.method,kn=Dt.specPath;return Dt.specSelectors.specResolvedSubtree(kn?kn.toJS():["paths",vn,Gn])}),U()(L()(Be),"requestResolvedSubtree",function(){var Dt=Be.props,vn=Dt.path,Gn=Dt.method,kn=Dt.specPath;return Dt.specActions.requestResolvedSubtree(kn?kn.toJS():["paths",vn,Gn])});var xt=ge.getConfigs().tryItOutEnabled;return Be.state={tryItOutEnabled:!0===xt||"true"===xt,executeInProgress:!1},Be}return Y()(Te,[{key:"mapStateToProps",value:function(ge,Re){var Be,xt=Re.op,Dt=Re.layoutSelectors,en=(0,Re.getConfigs)(),vn=en.docExpansion,Gn=en.deepLinking,kn=en.displayOperationId,zn=en.displayRequestDuration,jr=en.supportedSubmitMethods,kr=Dt.showSummary(),Gr=xt.getIn(["operation","__originalOperationId"])||xt.getIn(["operation","operationId"])||Object(ot.e)(xt.get("operation"),Re.path,Re.method)||xt.get("id"),ci=["operations",Re.tag,Gr],Ci=Gn&&"false"!==Gn,vi=Ut()(jr).call(jr,Re.method)>=0&&(void 0===Re.allowTryItOut?Re.specSelectors.allowTryItOutFor(Re.path,Re.method):Re.allowTryItOut),Ai=xt.getIn(["operation","security"])||Re.specSelectors.security();return{operationId:Gr,isDeepLinkingEnabled:Ci,showSummary:kr,displayOperationId:kn,displayRequestDuration:zn,allowTryItOut:vi,security:Ai,isAuthorized:Re.authSelectors.isAuthorized(Ai),isShown:Dt.isShown(ci,"full"===vn),jumpToKey:h()(Be="paths.".concat(Re.path,".")).call(Be,Re.method),response:Re.specSelectors.responseFor(Re.path,Re.method),request:Re.specSelectors.requestFor(Re.path,Re.method)}}},{key:"componentDidMount",value:function(){var ge=this.props.isShown,Re=this.getResolvedSubtree();ge&&void 0===Re&&this.requestResolvedSubtree()}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re=ge.response,Be=ge.isShown,xt=this.getResolvedSubtree();Re!==this.props.response&&this.setState({executeInProgress:!1}),Be&&void 0===xt&&this.requestResolvedSubtree()}},{key:"render",value:function(){var ge=this.props,Re=ge.op,Be=ge.tag,xt=ge.path,Dt=ge.method,en=ge.security,vn=ge.isAuthorized,Gn=ge.operationId,kn=ge.showSummary,zn=ge.isShown,jr=ge.jumpToKey,kr=ge.allowTryItOut,Gr=ge.response,ci=ge.request,Ci=ge.displayOperationId,vi=ge.displayRequestDuration,Ai=ge.isDeepLinkingEnabled,fo=ge.specPath,po=ge.specSelectors,No=ge.specActions,wo=ge.getComponent,oo=ge.getConfigs,Oo=ge.layoutSelectors,Ki=ge.layoutActions,Vi=ge.authActions,Wo=ge.authSelectors,Po=ge.oas3Actions,ho=ge.oas3Selectors,xo=ge.fn,Ps=wo("operation"),_n=this.getResolvedSubtree()||Object(zt.Map)(),Hs=Object(zt.fromJS)({op:_n,tag:Be,path:xt,summary:Re.getIn(["operation","summary"])||"",deprecated:_n.get("deprecated")||Re.getIn(["operation","deprecated"])||!1,method:Dt,security:en,isAuthorized:vn,operationId:Gn,originalOperationId:_n.getIn(["operation","__originalOperationId"]),showSummary:kn,isShown:zn,jumpToKey:jr,allowTryItOut:kr,request:ci,displayOperationId:Ci,displayRequestDuration:vi,isDeepLinkingEnabled:Ai,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return F.a.createElement(Ps,{operation:Hs,response:Gr,request:ci,isShown:zn,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:fo,specActions:No,specSelectors:po,oas3Actions:Po,oas3Selectors:ho,layoutActions:Ki,layoutSelectors:Oo,authActions:Vi,authSelectors:Wo,getComponent:wo,getConfigs:oo,fn:xo})}}]),Te}($e.PureComponent);U()(Nn,"defaultProps",{showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1});var sn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"getLayout",value:function(){var ge=this.props,Re=ge.getComponent,Be=ge.layoutSelectors.current();return Re(Be,!0)||function(){return F.a.createElement("h1",null,' No layout defined for "',Be,'" ')}}},{key:"render",value:function(){var ge=this.getLayout();return F.a.createElement(ge,null)}}]),Te}(F.a.Component);sn.defaultProps={};var An=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"close",function(){Re.props.authActions.showDefinitions(!1)}),Re}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.authSelectors,xt=Re.authActions,Dt=Re.getComponent,en=Re.errSelectors,vn=Re.specSelectors,Gn=Re.fn.AST,kn=void 0===Gn?{}:Gn,zn=Be.shownDefinitions(),jr=Dt("auths");return F.a.createElement("div",{className:"dialog-ux"},F.a.createElement("div",{className:"backdrop-ux"}),F.a.createElement("div",{className:"modal-ux"},F.a.createElement("div",{className:"modal-dialog-ux"},F.a.createElement("div",{className:"modal-ux-inner"},F.a.createElement("div",{className:"modal-ux-header"},F.a.createElement("h3",null,"Available authorizations"),F.a.createElement("button",{type:"button",className:"close-modal",onClick:this.close},F.a.createElement("svg",{width:"20",height:"20"},F.a.createElement("use",{href:"#close",xlinkHref:"#close"})))),F.a.createElement("div",{className:"modal-ux-content"},He()(ge=zn.valueSeq()).call(ge,function(kr,Gr){return F.a.createElement(jr,{key:Gr,AST:kn,definitions:kr,getComponent:Dt,errSelectors:en,authSelectors:Be,authActions:xt,specSelectors:vn})}))))))}}]),Te}(F.a.Component),Bn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.isAuthorized,Be=ge.showPopup,xt=ge.onClick,Dt=(0,ge.getComponent)("authorizationPopup",!0);return F.a.createElement("div",{className:"auth-wrapper"},F.a.createElement("button",{className:Re?"btn authorize locked":"btn authorize unlocked",onClick:xt},F.a.createElement("span",null,"Authorize"),F.a.createElement("svg",{width:"20",height:"20"},F.a.createElement("use",{href:Re?"#locked":"#unlocked",xlinkHref:Re?"#locked":"#unlocked"}))),Be&&F.a.createElement(Dt,null))}}]),Te}(F.a.Component),ir=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.authActions,Be=ge.authSelectors,Dt=ge.getComponent,en=ge.specSelectors.securityDefinitions(),vn=Be.definitionsToAuthorize(),Gn=Dt("authorizeBtn");return en?F.a.createElement(Gn,{onClick:function(){return Re.showDefinitions(vn)},isAuthorized:!!Be.authorized().size,showPopup:!!Be.shownDefinitions(),getComponent:Dt}):null}}]),Te}(F.a.Component),mr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onClick",function(en){en.stopPropagation();var vn=Re.props.onClick;vn&&vn()}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props.isAuthorized;return F.a.createElement("button",{className:ge?"authorization__btn locked":"authorization__btn unlocked","aria-label":ge?"authorization button locked":"authorization button unlocked",onClick:this.onClick},F.a.createElement("svg",{width:"20",height:"20"},F.a.createElement("use",{href:ge?"#locked":"#unlocked",xlinkHref:ge?"#locked":"#unlocked"})))}}]),Te}(F.a.Component),_r=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onAuthChange",function(xt){var Dt=xt.name;Be.setState(U()({},Dt,xt))}),U()(L()(Be),"submitAuth",function(xt){xt.preventDefault(),Be.props.authActions.authorizeWithPersistOption(Be.state)}),U()(L()(Be),"logoutClick",function(xt){xt.preventDefault();var Dt=Be.props,en=Dt.authActions,vn=Dt.definitions,Gn=He()(vn).call(vn,function(kn,zn){return zn}).toArray();Be.setState(be()(Gn).call(Gn,function(kn,zn){return kn[zn]="",kn},{})),en.logoutWithPersistOption(Gn)}),U()(L()(Be),"close",function(xt){xt.preventDefault(),Be.props.authActions.showDefinitions(!1)}),Be.state={},Be}return Y()(Te,[{key:"render",value:function(){var ge,Re=this,Be=this.props,xt=Be.definitions,Dt=Be.getComponent,en=Be.authSelectors,vn=Be.errSelectors,Gn=Dt("AuthItem"),kn=Dt("oauth2",!0),zn=Dt("Button"),jr=en.authorized(),kr=m()(xt).call(xt,function(Ci,vi){return!!jr.get(vi)}),Gr=m()(xt).call(xt,function(Ci){return"oauth2"!==Ci.get("type")}),ci=m()(xt).call(xt,function(Ci){return"oauth2"===Ci.get("type")});return F.a.createElement("div",{className:"auth-container"},!!Gr.size&&F.a.createElement("form",{onSubmit:this.submitAuth},He()(Gr).call(Gr,function(Ci,vi){return F.a.createElement(Gn,{key:vi,schema:Ci,name:vi,getComponent:Dt,onAuthChange:Re.onAuthChange,authorized:jr,errSelectors:vn})}).toArray(),F.a.createElement("div",{className:"auth-btn-wrapper"},Gr.size===kr.size?F.a.createElement(zn,{className:"btn modal-btn auth",onClick:this.logoutClick},"Logout"):F.a.createElement(zn,{type:"submit",className:"btn modal-btn auth authorize"},"Authorize"),F.a.createElement(zn,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close"))),ci&&ci.size?F.a.createElement("div",null,F.a.createElement("div",{className:"scope-def"},F.a.createElement("p",null,"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes."),F.a.createElement("p",null,"API requires the following scopes. Select which ones you want to grant to Swagger UI.")),He()(ge=m()(xt).call(xt,function(Ci){return"oauth2"===Ci.get("type")})).call(ge,function(Ci,vi){return F.a.createElement("div",{key:vi},F.a.createElement(kn,{authorized:jr,schema:Ci,name:vi}))}).toArray()):null)}}]),Te}(F.a.Component),Nr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.schema,xt=Re.name,Dt=Re.getComponent,en=Re.onAuthChange,vn=Re.authorized,Gn=Re.errSelectors,kn=Dt("apiKeyAuth"),zn=Dt("basicAuth"),jr=Be.get("type");switch(jr){case"apiKey":ge=F.a.createElement(kn,{key:xt,schema:Be,name:xt,errSelectors:Gn,authorized:vn,getComponent:Dt,onChange:en});break;case"basic":ge=F.a.createElement(zn,{key:xt,schema:Be,name:xt,errSelectors:Gn,authorized:vn,getComponent:Dt,onChange:en});break;default:ge=F.a.createElement("div",{key:xt},"Unknown security definition type ",jr)}return F.a.createElement("div",{key:"".concat(xt,"-jump")},ge)}}]),Te}(F.a.Component),br=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props.error,Re=ge.get("level"),Be=ge.get("message"),xt=ge.get("source");return F.a.createElement("div",{className:"errors"},F.a.createElement("b",null,xt," ",Re),F.a.createElement("span",null,Be))}}]),Te}(F.a.Component),Jn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onChange",function(Gn){var kn=Be.props.onChange,zn=Gn.target.value,jr=ne()({},Be.state,{value:zn});Be.setState(jr),kn(jr)});var xt=Be.props,Dt=xt.name,en=xt.schema,vn=Be.getValue();return Be.state={name:Dt,schema:en,value:vn},Be}return Y()(Te,[{key:"getValue",value:function(){var ge=this.props,Be=ge.authorized;return Be&&Be.getIn([ge.name,"value"])}},{key:"render",value:function(){var ge,Re,Be=this.props,xt=Be.schema,Dt=Be.getComponent,en=Be.errSelectors,vn=Be.name,Gn=Dt("Input"),kn=Dt("Row"),zn=Dt("Col"),jr=Dt("authError"),kr=Dt("Markdown",!0),Gr=Dt("JumpToPath",!0),ci=this.getValue(),Ci=m()(ge=en.allErrors()).call(ge,function(vi){return vi.get("authId")===vn});return F.a.createElement("div",null,F.a.createElement("h4",null,F.a.createElement("code",null,vn||xt.get("name")),"\xa0(apiKey)",F.a.createElement(Gr,{path:["securityDefinitions",vn]})),ci&&F.a.createElement("h6",null,"Authorized"),F.a.createElement(kn,null,F.a.createElement(kr,{source:xt.get("description")})),F.a.createElement(kn,null,F.a.createElement("p",null,"Name: ",F.a.createElement("code",null,xt.get("name")))),F.a.createElement(kn,null,F.a.createElement("p",null,"In: ",F.a.createElement("code",null,xt.get("in")))),F.a.createElement(kn,null,F.a.createElement("label",null,"Value:"),ci?F.a.createElement("code",null," ****** "):F.a.createElement(zn,null,F.a.createElement(Gn,{type:"text",onChange:this.onChange,autoFocus:!0}))),He()(Re=Ci.valueSeq()).call(Re,function(vi,Ai){return F.a.createElement(jr,{error:vi,key:Ai})}))}}]),Te}(F.a.Component),nr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onChange",function(Gn){var kn=Be.props.onChange,zn=Gn.target,Gr=Be.state.value;Gr[zn.name]=zn.value,Be.setState({value:Gr}),kn(Be.state)});var xt=Be.props,Dt=xt.schema,en=xt.name,vn=Be.getValue().username;return Be.state={name:en,schema:Dt,value:vn?{username:vn}:{}},Be}return Y()(Te,[{key:"getValue",value:function(){var ge=this.props,Re=ge.authorized;return Re&&Re.getIn([ge.name,"value"])||{}}},{key:"render",value:function(){var ge,Re,Be=this.props,xt=Be.schema,Dt=Be.getComponent,en=Be.name,vn=Be.errSelectors,Gn=Dt("Input"),kn=Dt("Row"),zn=Dt("Col"),jr=Dt("authError"),kr=Dt("JumpToPath",!0),Gr=Dt("Markdown",!0),ci=this.getValue().username,Ci=m()(ge=vn.allErrors()).call(ge,function(vi){return vi.get("authId")===en});return F.a.createElement("div",null,F.a.createElement("h4",null,"Basic authorization",F.a.createElement(kr,{path:["securityDefinitions",en]})),ci&&F.a.createElement("h6",null,"Authorized"),F.a.createElement(kn,null,F.a.createElement(Gr,{source:xt.get("description")})),F.a.createElement(kn,null,F.a.createElement("label",null,"Username:"),ci?F.a.createElement("code",null," ",ci," "):F.a.createElement(zn,null,F.a.createElement(Gn,{type:"text",required:"required",name:"username",onChange:this.onChange,autoFocus:!0}))),F.a.createElement(kn,null,F.a.createElement("label",null,"Password:"),ci?F.a.createElement("code",null," ****** "):F.a.createElement(zn,null,F.a.createElement(Gn,{autoComplete:"new-password",name:"password",type:"password",onChange:this.onChange}))),He()(Re=Ci.valueSeq()).call(Re,function(vi,Ai){return F.a.createElement(jr,{error:vi,key:Ai})}))}}]),Te}(F.a.Component);function Mr(xe){var ke=xe.example,Te=xe.showValue,ge=xe.getComponent,Re=xe.getConfigs,Be=ge("Markdown",!0),xt=ge("highlightCode");return ke?F.a.createElement("div",{className:"example"},ke.get("description")?F.a.createElement("section",{className:"example__section"},F.a.createElement("div",{className:"example__section-header"},"Example Description"),F.a.createElement("p",null,F.a.createElement(Be,{source:ke.get("description")}))):null,Te&&ke.has("value")?F.a.createElement("section",{className:"example__section"},F.a.createElement("div",{className:"example__section-header"},"Example Value"),F.a.createElement(xt,{getConfigs:Re,value:Object(tr.I)(ke.get("value"))})):null):null}var yi=t(476),Ii=t.n(yi),Mi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"_onSelect",function(en){var vn=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Gn=vn.isSyntheticChange,kn=void 0!==Gn&&Gn;"function"==typeof Re.props.onSelect&&Re.props.onSelect(en,{isSyntheticChange:kn})}),U()(L()(Re),"_onDomSelect",function(en){if("function"==typeof Re.props.onSelect){var vn=en.target.selectedOptions[0].getAttribute("value");Re._onSelect(vn,{isSyntheticChange:!1})}}),U()(L()(Re),"getCurrentExample",function(){var en=Re.props,vn=en.examples,kn=vn.get(en.currentExampleKey),zn=vn.keySeq().first(),jr=vn.get(zn);return kn||jr||Ii()({})}),Re}return Y()(Te,[{key:"componentDidMount",value:function(){var ge=this.props,Be=ge.examples;if("function"==typeof ge.onSelect){var xt=Be.first(),Dt=Be.keyOf(xt);this._onSelect(Dt,{isSyntheticChange:!0})}}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Be=ge.examples;if(Be!==this.props.examples&&!Be.has(ge.currentExampleKey)){var xt=Be.first(),Dt=Be.keyOf(xt);this._onSelect(Dt,{isSyntheticChange:!0})}}},{key:"render",value:function(){var ge=this.props,Re=ge.examples,Be=ge.currentExampleKey,xt=ge.isValueModified,Dt=ge.isModifiedValueAvailable;return F.a.createElement("div",{className:"examples-select"},ge.showLabels?F.a.createElement("span",{className:"examples-select__section-label"},"Examples: "):null,F.a.createElement("select",{className:"examples-select-element",onChange:this._onDomSelect,value:Dt&&xt?"__MODIFIED__VALUE__":Be||""},Dt?F.a.createElement("option",{value:"__MODIFIED__VALUE__"},"[Modified value]"):null,He()(Re).call(Re,function(vn,Gn){return F.a.createElement("option",{key:Gn,value:Gn},vn.get("summary")||Gn)}).valueSeq()))}}]),Te}(F.a.PureComponent);U()(Mi,"defaultProps",{examples:ln.a.Map({}),onSelect:function(){for(var xe,ke,Te=arguments.length,ge=new Array(Te),Re=0;Re<Te;Re++)ge[Re]=arguments[Re];return(xe=console).log.apply(xe,h()(ke=["DEBUG: ExamplesSelect was not given an onSelect callback"]).call(ke,ge))},currentExampleKey:null,showLabels:!0});var Oi=function(xe){return zt.List.isList(xe)?xe:Object(tr.I)(xe)},Kr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge){var Re;I()(this,Te),Re=ke.call(this,ge),U()(L()(Re),"_getStateForCurrentNamespace",function(){return(Re.state[Re.props.currentNamespace]||Object(zt.Map)()).toObject()}),U()(L()(Re),"_setStateForCurrentNamespace",function(xt){return Re._setStateForNamespace(Re.props.currentNamespace,xt)}),U()(L()(Re),"_setStateForNamespace",function(xt,Dt){var en=(Re.state[xt]||Object(zt.Map)()).mergeDeep(Dt);return Re.setState(U()({},xt,en))}),U()(L()(Re),"_isCurrentUserInputSameAsExampleValue",function(){var xt=Re.props.currentUserInputValue;return Re._getCurrentExampleValue()===xt}),U()(L()(Re),"_getValueForExample",function(xt,Dt){return Oi(((Dt||Re.props).examples||Object(zt.Map)({})).getIn([xt,"value"]))}),U()(L()(Re),"_getCurrentExampleValue",function(xt){return Re._getValueForExample((xt||Re.props).currentKey,xt||Re.props)}),U()(L()(Re),"_onExamplesSelect",function(xt){var Dt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},en=Dt.isSyntheticChange,vn=Re.props,Gn=vn.onSelect,kn=vn.updateValue,zn=vn.currentUserInputValue,jr=vn.userHasEditedBody,kr=Re._getStateForCurrentNamespace(),Gr=kr.lastUserEditedValue,ci=Re._getValueForExample(xt);if("__MODIFIED__VALUE__"===xt)return kn(Oi(Gr)),Re._setStateForCurrentNamespace({isModifiedValueSelected:!0});if("function"==typeof Gn){for(var Ci,vi=arguments.length,Ai=new Array(vi>2?vi-2:0),fo=2;fo<vi;fo++)Ai[fo-2]=arguments[fo];Gn.apply(void 0,h()(Ci=[xt,{isSyntheticChange:en}]).call(Ci,Ai))}Re._setStateForCurrentNamespace({lastDownstreamValue:ci,isModifiedValueSelected:en&&jr||!!zn&&zn!==ci}),en||"function"==typeof kn&&kn(Oi(ci))});var Be=Re._getCurrentExampleValue();return Re.state=U()({},ge.currentNamespace,Object(zt.Map)({lastUserEditedValue:Re.props.currentUserInputValue,lastDownstreamValue:Be,isModifiedValueSelected:Re.props.userHasEditedBody||Re.props.currentUserInputValue!==Be})),Re}return Y()(Te,[{key:"componentWillUnmount",value:function(){this.props.setRetainRequestBodyValueFlag(!1)}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re=ge.currentUserInputValue,Be=ge.examples,xt=ge.onSelect,Dt=ge.userHasEditedBody,en=this._getStateForCurrentNamespace(),vn=en.lastUserEditedValue,Gn=en.lastDownstreamValue,kn=this._getValueForExample(ge.currentKey,ge),zn=m()(Be).call(Be,function(jr){return jr.get("value")===Re||Object(tr.I)(jr.get("value"))===Re});zn.size?xt(zn.has(ge.currentKey)?ge.currentKey:zn.keySeq().first(),{isSyntheticChange:!0}):Re!==this.props.currentUserInputValue&&Re!==vn&&Re!==Gn&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(ge.currentNamespace,{lastUserEditedValue:ge.currentUserInputValue,isModifiedValueSelected:Dt||Re!==kn}))}},{key:"render",value:function(){var ge=this.props,Re=ge.currentUserInputValue,Be=ge.examples,xt=ge.currentKey,Dt=ge.getComponent,en=ge.userHasEditedBody,vn=this._getStateForCurrentNamespace(),Gn=vn.lastDownstreamValue,kn=vn.lastUserEditedValue,zn=vn.isModifiedValueSelected,jr=Dt("ExamplesSelect");return F.a.createElement(jr,{examples:Be,currentExampleKey:xt,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!kn&&kn!==Gn,isValueModified:void 0!==Re&&zn&&Re!==this._getCurrentExampleValue()||en})}}]),Te}(F.a.PureComponent);U()(Kr,"defaultProps",{userHasEditedBody:!1,examples:Object(zt.Map)({}),currentNamespace:"__DEFAULT__NAMESPACE__",setRetainRequestBodyValueFlag:function(){},onSelect:function(){for(var xe,ke,Te=arguments.length,ge=new Array(Te),Re=0;Re<Te;Re++)ge[Re]=arguments[Re];return(xe=console).log.apply(xe,h()(ke=["ExamplesSelectValueRetainer: no `onSelect` function was provided"]).call(ke,ge))},updateValue:function(){for(var xe,ke,Te=arguments.length,ge=new Array(Te),Re=0;Re<Te;Re++)ge[Re]=arguments[Re];return(xe=console).log.apply(xe,h()(ke=["ExamplesSelectValueRetainer: no `updateValue` function was provided"]).call(ke,ge))}});var ei=t(106),di=t.n(ei),se=t(125),ct=t.n(se),Ke=t(31),Xe=t.n(Ke),Vt=t(89),Ct=t.n(Vt),rt=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"close",function(vi){vi.preventDefault(),Be.props.authActions.showDefinitions(!1)}),U()(L()(Be),"authorize",function(){var vi=Be.props,Ai=vi.authActions,fo=vi.errActions,No=vi.authSelectors,wo=vi.oas3Selectors,oo=(0,vi.getConfigs)(),Oo=No.getConfigs();fo.clear({authId:name,type:"auth",source:"auth"}),function(Ki){var Vi=Ki.auth,Wo=Ki.authActions,Po=Ki.errActions,ho=Ki.configs,xo=Ki.authConfigs,Ps=void 0===xo?{}:xo,_n=Ki.currentServer,Hs=Vi.schema,Pa=Vi.scopes,Oa=Vi.name,lo=Vi.clientId,ra=Hs.get("flow"),ns=[];switch(ra){case"password":return void Wo.authorizePassword(Vi);case"application":return void Wo.authorizeApplication(Vi);case"accessCode":ns.push("response_type=code");break;case"implicit":ns.push("response_type=token");break;case"clientCredentials":case"client_credentials":return void Wo.authorizeApplication(Vi);case"authorizationCode":case"authorization_code":ns.push("response_type=code")}"string"==typeof lo&&ns.push("client_id="+encodeURIComponent(lo));var Aa=ho.oauth2RedirectUrl;if(void 0!==Aa){ns.push("redirect_uri="+encodeURIComponent(Aa));var zs=[];Me()(Pa)?zs=Pa:ln.a.List.isList(Pa)&&(zs=Pa.toArray()),zs.length>0&&ns.push("scope="+encodeURIComponent(zs.join(Ps.scopeSeparator||" ")));var ws=Object(tr.a)(new Date);if(ns.push("state="+encodeURIComponent(ws)),void 0!==Ps.realm&&ns.push("realm="+encodeURIComponent(Ps.realm)),("authorizationCode"===ra||"authorization_code"===ra||"accessCode"===ra)&&Ps.usePkceWithAuthorizationCodeGrant){var Ds=Object(tr.j)(),Ws=Object(tr.c)(Ds);ns.push("code_challenge="+Ws),ns.push("code_challenge_method=S256"),Vi.codeVerifier=Ds}var Ba=Ps.additionalQueryStringParams;for(var Zs in Ba){var Ya;void 0!==Ba[Zs]&&ns.push(He()(Ya=[Zs,Ba[Zs]]).call(Ya,encodeURIComponent).join("="))}var Za=Hs.get("authorizationUrl"),Ha=[_n?Ct()(Object(tr.F)(Za),_n,!0).toString():Object(tr.F)(Za),ns.join("&")].join(-1===Ut()(Za).call(Za,"?")?"?":"&");Ht.a.swaggerUIRedirectOauth2={auth:Vi,state:ws,redirectUrl:Aa,callback:"implicit"===ra?Wo.preAuthorizeImplicit:Ps.useBasicAuthenticationWithAccessCodeGrant?Wo.authorizeAccessCodeWithBasicAuthentication:Wo.authorizeAccessCodeWithFormParams,errCb:Po.newAuthErr},Ht.a.open(Ha)}else Po.newAuthErr({authId:Oa,source:"validation",level:"error",message:"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed."})}({auth:Be.state,currentServer:wo.serverEffectiveValue(wo.selectedServer()),authActions:Ai,errActions:fo,configs:oo,authConfigs:Oo})}),U()(L()(Be),"onScopeChange",function(vi){var Ai,fo,po=vi.target,No=po.checked,wo=po.dataset.value;if(No&&-1===Ut()(Ai=Be.state.scopes).call(Ai,wo)){var oo,Oo=h()(oo=Be.state.scopes).call(oo,[wo]);Be.setState({scopes:Oo})}else if(!No&&Ut()(fo=Be.state.scopes).call(fo,wo)>-1){var Ki;Be.setState({scopes:m()(Ki=Be.state.scopes).call(Ki,function(Vi){return Vi!==wo})})}}),U()(L()(Be),"onInputChange",function(vi){var Ai=vi.target,fo=Ai.dataset.name,po=Ai.value,No=U()({},fo,po);Be.setState(No)}),U()(L()(Be),"selectScopes",function(vi){var Ai;Be.setState(vi.target.dataset.all?{scopes:di()(ct()(Ai=Be.props.schema.get("allowedScopes")||Be.props.schema.get("scopes")).call(Ai))}:{scopes:[]})}),U()(L()(Be),"logout",function(vi){vi.preventDefault();var Ai=Be.props,fo=Ai.authActions,No=Ai.name;Ai.errActions.clear({authId:No,type:"auth",source:"auth"}),fo.logoutWithPersistOption([No])});var xt=Be.props,Dt=xt.name,en=xt.schema,vn=xt.authorized,Gn=xt.authSelectors,kn=vn&&vn.get(Dt),zn=Gn.getConfigs()||{},jr=kn&&kn.get("username")||"",kr=kn&&kn.get("clientId")||zn.clientId||"",Gr=kn&&kn.get("clientSecret")||zn.clientSecret||"",ci=kn&&kn.get("passwordType")||"basic",Ci=kn&&kn.get("scopes")||zn.scopes||[];return"string"==typeof Ci&&(Ci=Ci.split(zn.scopeSeparator||" ")),Be.state={appName:zn.appName,name:Dt,schema:en,scopes:Ci,clientId:kr,clientSecret:Gr,username:jr,password:"",passwordType:ci},Be}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be=this,xt=this.props,Dt=xt.schema,en=xt.getComponent,vn=xt.authSelectors,Gn=xt.errSelectors,kn=xt.name,zn=xt.specSelectors,jr=en("Input"),kr=en("Row"),Gr=en("Col"),ci=en("Button"),Ci=en("authError"),vi=en("JumpToPath",!0),Ai=en("Markdown",!0),fo=en("InitializedInput"),po=zn.isOAS3,No=po()?Dt.get("openIdConnectUrl"):null,wo="implicit",oo="password",Oo=po()?No?"authorization_code":"authorizationCode":"accessCode",Ki=po()?No?"client_credentials":"clientCredentials":"application",Vi=Dt.get("flow"),Wo=Dt.get("allowedScopes")||Dt.get("scopes"),Po=!!vn.authorized().get(kn),ho=m()(ge=Gn.allErrors()).call(ge,function(_n){return _n.get("authId")===kn}),xo=!m()(ho).call(ho,function(_n){return"validation"===_n.get("source")}).size,Ps=Dt.get("description");return F.a.createElement("div",null,F.a.createElement("h4",null,kn," (OAuth2, ",Dt.get("flow"),") ",F.a.createElement(vi,{path:["securityDefinitions",kn]})),this.state.appName?F.a.createElement("h5",null,"Application: ",this.state.appName," "):null,Ps&&F.a.createElement(Ai,{source:Dt.get("description")}),Po&&F.a.createElement("h6",null,"Authorized"),No&&F.a.createElement("p",null,"OpenID Connect URL: ",F.a.createElement("code",null,No)),(Vi===wo||Vi===Oo)&&F.a.createElement("p",null,"Authorization URL: ",F.a.createElement("code",null,Dt.get("authorizationUrl"))),(Vi===oo||Vi===Oo||Vi===Ki)&&F.a.createElement("p",null,"Token URL:",F.a.createElement("code",null," ",Dt.get("tokenUrl"))),F.a.createElement("p",{className:"flow"},"Flow: ",F.a.createElement("code",null,Dt.get("flow"))),Vi!==oo?null:F.a.createElement(kr,null,F.a.createElement(kr,null,F.a.createElement("label",{htmlFor:"oauth_username"},"username:"),Po?F.a.createElement("code",null," ",this.state.username," "):F.a.createElement(Gr,{tablet:10,desktop:10},F.a.createElement("input",{id:"oauth_username",type:"text","data-name":"username",onChange:this.onInputChange,autoFocus:!0}))),F.a.createElement(kr,null,F.a.createElement("label",{htmlFor:"oauth_password"},"password:"),Po?F.a.createElement("code",null," ****** "):F.a.createElement(Gr,{tablet:10,desktop:10},F.a.createElement("input",{id:"oauth_password",type:"password","data-name":"password",onChange:this.onInputChange}))),F.a.createElement(kr,null,F.a.createElement("label",{htmlFor:"password_type"},"Client credentials location:"),Po?F.a.createElement("code",null," ",this.state.passwordType," "):F.a.createElement(Gr,{tablet:10,desktop:10},F.a.createElement("select",{id:"password_type","data-name":"passwordType",onChange:this.onInputChange},F.a.createElement("option",{value:"basic"},"Authorization header"),F.a.createElement("option",{value:"request-body"},"Request body"))))),(Vi===Ki||Vi===wo||Vi===Oo||Vi===oo)&&(!Po||Po&&this.state.clientId)&&F.a.createElement(kr,null,F.a.createElement("label",{htmlFor:"client_id"},"client_id:"),Po?F.a.createElement("code",null," ****** "):F.a.createElement(Gr,{tablet:10,desktop:10},F.a.createElement(fo,{id:"client_id",type:"text",required:Vi===oo,initialValue:this.state.clientId,"data-name":"clientId",onChange:this.onInputChange}))),(Vi===Ki||Vi===Oo||Vi===oo)&&F.a.createElement(kr,null,F.a.createElement("label",{htmlFor:"client_secret"},"client_secret:"),Po?F.a.createElement("code",null," ****** "):F.a.createElement(Gr,{tablet:10,desktop:10},F.a.createElement(fo,{id:"client_secret",initialValue:this.state.clientSecret,type:"password","data-name":"clientSecret",onChange:this.onInputChange}))),!Po&&Wo&&Wo.size?F.a.createElement("div",{className:"scopes"},F.a.createElement("h2",null,"Scopes:",F.a.createElement("a",{onClick:this.selectScopes,"data-all":!0},"select all"),F.a.createElement("a",{onClick:this.selectScopes},"select none")),He()(Wo).call(Wo,function(_n,Hs){var Pa,Oa,lo,ra,ns;return F.a.createElement(kr,{key:Hs},F.a.createElement("div",{className:"checkbox"},F.a.createElement(jr,{"data-value":Hs,id:h()(Pa=h()(Oa="".concat(Hs,"-")).call(Oa,Vi,"-checkbox-")).call(Pa,Be.state.name),disabled:Po,checked:Xe()(lo=Be.state.scopes).call(lo,Hs),type:"checkbox",onChange:Be.onScopeChange}),F.a.createElement("label",{htmlFor:h()(ra=h()(ns="".concat(Hs,"-")).call(ns,Vi,"-checkbox-")).call(ra,Be.state.name)},F.a.createElement("span",{className:"item"}),F.a.createElement("div",{className:"text"},F.a.createElement("p",{className:"name"},Hs),F.a.createElement("p",{className:"description"},_n)))))}).toArray()):null,He()(Re=ho.valueSeq()).call(Re,function(_n,Hs){return F.a.createElement(Ci,{error:_n,key:Hs})}),F.a.createElement("div",{className:"auth-btn-wrapper"},xo&&(Po?F.a.createElement(ci,{className:"btn modal-btn auth authorize",onClick:this.logout},"Logout"):F.a.createElement(ci,{className:"btn modal-btn auth authorize",onClick:this.authorize},"Authorize")),F.a.createElement(ci,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close")))}}]),Te}(F.a.Component),bt=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onClick",function(){var en=Re.props,vn=en.specActions,Gn=en.path,kn=en.method;vn.clearResponse(Gn,kn),vn.clearRequest(Gn,kn)}),Re}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("button",{className:"btn btn-clear opblock-control__btn",onClick:this.onClick},"Clear")}}]),Te}($e.Component),We=function(xe){var ke=xe.headers;return F.a.createElement("div",null,F.a.createElement("h5",null,"Response headers"),F.a.createElement("pre",{className:"microlight"},ke))},$t=function(xe){var ke=xe.duration;return F.a.createElement("div",null,F.a.createElement("h5",null,"Request duration"),F.a.createElement("pre",{className:"microlight"},ke," ms"))},or=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"shouldComponentUpdate",value:function(ge){return this.props.response!==ge.response||this.props.path!==ge.path||this.props.method!==ge.method||this.props.displayRequestDuration!==ge.displayRequestDuration}},{key:"render",value:function(){var ge,Re=this.props,Be=Re.response,xt=Re.getComponent,Dt=Re.getConfigs,en=Re.displayRequestDuration,vn=Re.specSelectors,Gn=Re.path,kn=Re.method,zn=Dt(),kr=zn.requestSnippetsEnabled,Gr=zn.showMutatedRequest?vn.mutatedRequestFor(Gn,kn):vn.requestFor(Gn,kn),ci=Be.get("status"),Ci=Gr.get("url"),vi=Be.get("headers").toJS(),Ai=Be.get("notDocumented"),fo=Be.get("error"),po=Be.get("text"),No=Be.get("duration"),wo=C()(vi),oo=vi["content-type"]||vi["Content-Type"],Oo=xt("responseBody"),Ki=He()(wo).call(wo,function(xo){var Ps=Me()(vi[xo])?vi[xo].join():vi[xo];return F.a.createElement("span",{className:"headerline",key:xo}," ",xo,": ",Ps," ")}),Vi=0!==Ki.length,Wo=xt("Markdown",!0),Po=xt("RequestSnippets",!0),ho=xt("curl");return F.a.createElement("div",null,Gr&&(!0===kr||"true"===kr?F.a.createElement(Po,{request:Gr}):F.a.createElement(ho,{request:Gr,getConfigs:Dt})),Ci&&F.a.createElement("div",null,F.a.createElement("h4",null,"Request URL"),F.a.createElement("div",{className:"request-url"},F.a.createElement("pre",{className:"microlight"},Ci))),F.a.createElement("h4",null,"Server response"),F.a.createElement("table",{className:"responses-table live-responses-table"},F.a.createElement("thead",null,F.a.createElement("tr",{className:"responses-header"},F.a.createElement("td",{className:"col_header response-col_status"},"Code"),F.a.createElement("td",{className:"col_header response-col_description"},"Details"))),F.a.createElement("tbody",null,F.a.createElement("tr",{className:"response"},F.a.createElement("td",{className:"response-col_status"},ci,Ai?F.a.createElement("div",{className:"response-undocumented"},F.a.createElement("i",null," Undocumented ")):null),F.a.createElement("td",{className:"response-col_description"},fo?F.a.createElement(Wo,{source:h()(ge="".concat(""!==Be.get("name")?"".concat(Be.get("name"),": "):"")).call(ge,Be.get("message"))}):null,po?F.a.createElement(Oo,{content:po,contentType:oo,url:Ci,headers:vi,getConfigs:Dt,getComponent:xt}):null,Vi?F.a.createElement(We,{headers:Ki}):null,en&&No?F.a.createElement($t,{duration:No}):null)))))}}]),Te}(F.a.Component),Zn=t(203),Vr=["get","put","post","delete","options","head","patch"],Cr=h()(Vr).call(Vr,["trace"]),ai=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"renderOperationTag",function(en,vn){var Gn=Re.props,kn=Gn.specSelectors,zn=Gn.getComponent,jr=Gn.oas3Selectors,kr=Gn.layoutSelectors,Gr=Gn.layoutActions,ci=Gn.getConfigs,Ci=zn("OperationContainer",!0),vi=zn("OperationTag"),Ai=en.get("operations");return F.a.createElement(vi,{key:"operation-"+vn,tagObj:en,tag:vn,oas3Selectors:jr,layoutSelectors:kr,layoutActions:Gr,getConfigs:ci,getComponent:zn,specUrl:kn.url()},F.a.createElement("div",{className:"operation-tag-content"},He()(Ai).call(Ai,function(fo){var po,No=fo.get("path"),wo=fo.get("method"),oo=ln.a.List(["paths",No,wo]),Oo=kn.isOAS3()?Cr:Vr;return-1===Ut()(Oo).call(Oo,wo)?null:F.a.createElement(Ci,{key:h()(po="".concat(No,"-")).call(po,wo),specPath:oo,op:fo,path:No,method:wo,tag:vn})}).toArray()))}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props.specSelectors.taggedOperations();return 0===ge.size?F.a.createElement("h3",null," No operations defined in spec!"):F.a.createElement("div",null,He()(ge).call(ge,this.renderOperationTag).toArray(),ge.size<1?F.a.createElement("h3",null," No operations defined in spec! "):null)}}]),Te}(F.a.Component),Dr=t(90),Qr=t.n(Dr);function rn(xe){return xe.match(/^(?:[a-z]+:)?\/\//i)}function fi(xe,ke){return xe?rn(xe)?(Te=xe).match(/^\/\//i)?h()(ge="".concat(window.location.protocol)).call(ge,Te):Te:new Qr.a(xe,ke).href:ke;var Te,ge}function Ei(xe,ke){var Te=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},ge=Te.selectedServer,Re=void 0===ge?"":ge;if(xe){if(rn(xe))return xe;var Be=fi(Re,ke);return rn(Be)?new Qr.a(xe,Be).href:new Qr.a(xe,window.location.href).href}}function wi(xe,ke){var Te=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},ge=Te.selectedServer,Re=void 0===ge?"":ge;try{return Ei(xe,ke,{selectedServer:Re})}catch(Be){return}}var go=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.tagObj,xt=Re.tag,Dt=Re.children,en=Re.oas3Selectors,vn=Re.layoutSelectors,Gn=Re.layoutActions,zn=Re.getComponent,jr=Re.specUrl,kr=(0,Re.getConfigs)(),Gr=kr.docExpansion,ci=kr.deepLinking,Ci=ci&&"false"!==ci,vi=zn("Collapse"),Ai=zn("Markdown",!0),fo=zn("DeepLink"),po=zn("Link"),No=Be.getIn(["tagDetails","description"],null),wo=Be.getIn(["tagDetails","externalDocs","description"]),oo=Be.getIn(["tagDetails","externalDocs","url"]);ge=Object(tr.s)(en)&&Object(tr.s)(en.selectedServer)?wi(oo,jr,{selectedServer:en.selectedServer()}):oo;var Oo=["operations-tag",xt],Ki=vn.isShown(Oo,"full"===Gr||"list"===Gr);return F.a.createElement("div",{className:Ki?"opblock-tag-section is-open":"opblock-tag-section"},F.a.createElement("h3",{onClick:function(){return Gn.show(Oo,!Ki)},className:No?"opblock-tag":"opblock-tag no-desc",id:He()(Oo).call(Oo,function(Vi){return Object(tr.g)(Vi)}).join("-"),"data-tag":xt,"data-is-open":Ki},F.a.createElement(fo,{enabled:Ci,isShown:Ki,path:Object(tr.d)(xt),text:xt}),No?F.a.createElement("small",null,F.a.createElement(Ai,{source:No})):F.a.createElement("small",null),F.a.createElement("div",null,wo?F.a.createElement("small",null,wo,ge?": ":null,ge?F.a.createElement(po,{href:Object(tr.F)(ge),onClick:function(Vi){return Vi.stopPropagation()},target:"_blank"},ge):null):null),F.a.createElement("button",{"aria-expanded":Ki,className:"expand-operation",title:Ki?"Collapse operation":"Expand operation",onClick:function(){return Gn.show(Oo,!Ki)}},F.a.createElement("svg",{className:"arrow",width:"20",height:"20","aria-hidden":"true",focusable:"false"},F.a.createElement("use",{href:Ki?"#large-arrow-up":"#large-arrow-down",xlinkHref:Ki?"#large-arrow-up":"#large-arrow-down"})))),F.a.createElement(vi,{isOpened:Ki},Dt))}}]),Te}(F.a.Component);U()(go,"defaultProps",{tagObj:ln.a.fromJS({}),tag:""});var Fi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.specPath,Be=ge.response,xt=ge.request,Dt=ge.toggleShown,en=ge.onTryoutClick,vn=ge.onCancelClick,Gn=ge.onExecute,kn=ge.fn,zn=ge.getComponent,jr=ge.getConfigs,kr=ge.specActions,Gr=ge.specSelectors,ci=ge.authActions,Ci=ge.authSelectors,vi=ge.oas3Actions,Ai=ge.oas3Selectors,fo=this.props.operation,po=fo.toJS(),No=po.deprecated,wo=po.isShown,oo=po.path,Oo=po.method,Ki=po.op,Vi=po.tag,Wo=po.operationId,Po=po.allowTryItOut,ho=po.displayRequestDuration,xo=po.tryItOutEnabled,Ps=po.executeInProgress,_n=Ki.description,Hs=Ki.externalDocs,Pa=Ki.schemes,Oa=Hs?wi(Hs.url,Gr.url(),{selectedServer:Ai.selectedServer()}):"",lo=fo.getIn(["op"]),ra=lo.get("responses"),ns=Object(tr.n)(lo,["parameters"]),Aa=Gr.operationScheme(oo,Oo),zs=["operations",Vi,Wo],La=Object(tr.m)(lo),ws=zn("responses"),Ds=zn("parameters"),Ws=zn("execute"),Ba=zn("clear"),Zs=zn("Collapse"),Ya=zn("Markdown",!0),$a=zn("schemes"),Za=zn("OperationServers"),Ha=zn("OperationExt"),ol=zn("OperationSummary"),Us=zn("Link"),sl=jr().showExtensions;if(ra&&Be&&Be.size>0){var ac=!ra.get(String(Be.get("status")))&&!ra.get("default");Be=Be.set("notDocumented",ac)}var Zl=[oo,Oo];return F.a.createElement("div",{className:No?"opblock opblock-deprecated":wo?"opblock opblock-".concat(Oo," is-open"):"opblock opblock-".concat(Oo),id:Object(tr.g)(zs.join("-"))},F.a.createElement(ol,{operationProps:fo,isShown:wo,toggleShown:Dt,getComponent:zn,authActions:ci,authSelectors:Ci,specPath:Re}),F.a.createElement(Zs,{isOpened:wo},F.a.createElement("div",{className:"opblock-body"},lo&&lo.size||null===lo?null:F.a.createElement("img",{height:"32px",width:"32px",src:t(447),className:"opblock-loading-animation"}),No&&F.a.createElement("h4",{className:"opblock-title_normal"}," Warning: Deprecated"),_n&&F.a.createElement("div",{className:"opblock-description-wrapper"},F.a.createElement("div",{className:"opblock-description"},F.a.createElement(Ya,{source:_n}))),Oa?F.a.createElement("div",{className:"opblock-external-docs-wrapper"},F.a.createElement("h4",{className:"opblock-title_normal"},"Find more details"),F.a.createElement("div",{className:"opblock-external-docs"},F.a.createElement("span",{className:"opblock-external-docs__description"},F.a.createElement(Ya,{source:Hs.description})),F.a.createElement(Us,{target:"_blank",className:"opblock-external-docs__link",href:Object(tr.F)(Oa)},Oa))):null,lo&&lo.size?F.a.createElement(Ds,{parameters:ns,specPath:Re.push("parameters"),operation:lo,onChangeKey:Zl,onTryoutClick:en,onCancelClick:vn,tryItOutEnabled:xo,allowTryItOut:Po,fn:kn,getComponent:zn,specActions:kr,specSelectors:Gr,pathMethod:[oo,Oo],getConfigs:jr,oas3Actions:vi,oas3Selectors:Ai}):null,xo?F.a.createElement(Za,{getComponent:zn,path:oo,method:Oo,operationServers:lo.get("servers"),pathServers:Gr.paths().getIn([oo,"servers"]),getSelectedServer:Ai.selectedServer,setSelectedServer:vi.setSelectedServer,setServerVariableValue:vi.setServerVariableValue,getServerVariable:Ai.serverVariableValue,getEffectiveServerValue:Ai.serverEffectiveValue}):null,xo&&Po&&Pa&&Pa.size?F.a.createElement("div",{className:"opblock-schemes"},F.a.createElement($a,{schemes:Pa,path:oo,method:Oo,specActions:kr,currentScheme:Aa})):null,F.a.createElement("div",{className:xo&&Be&&Po?"btn-group":"execute-wrapper"},xo&&Po?F.a.createElement(Ws,{operation:lo,specActions:kr,specSelectors:Gr,oas3Selectors:Ai,oas3Actions:vi,path:oo,method:Oo,onExecute:Gn,disabled:Ps}):null,xo&&Be&&Po?F.a.createElement(Ba,{specActions:kr,path:oo,method:Oo}):null),Ps?F.a.createElement("div",{className:"loading-container"},F.a.createElement("div",{className:"loading"})):null,ra?F.a.createElement(ws,{responses:ra,request:xt,tryItOutResponse:Be,getComponent:zn,getConfigs:jr,specSelectors:Gr,oas3Actions:vi,oas3Selectors:Ai,specActions:kr,produces:Gr.producesOptionsFor([oo,Oo]),producesValue:Gr.currentProducesFor([oo,Oo]),specPath:Re.push("responses"),path:oo,method:Oo,displayRequestDuration:ho,fn:kn}):null,sl&&La.size?F.a.createElement(Ha,{extensions:La,getComponent:zn}):null)))}}]),Te}($e.PureComponent);U()(Fi,"defaultProps",{operation:null,response:null,request:null,specPath:Object(zt.List)(),summary:""});var no=t(102),Ji=t.n(no),qi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.isShown,xt=Re.toggleShown,Dt=Re.getComponent,en=Re.authActions,vn=Re.authSelectors,Gn=Re.operationProps,kn=Re.specPath,zn=Gn.toJS(),jr=zn.summary,kr=zn.isAuthorized,Gr=zn.method,Ci=zn.showSummary,vi=zn.path,Ai=zn.operationId,fo=zn.originalOperationId,po=zn.displayOperationId,No=zn.op.summary,wo=Gn.get("security"),oo=Dt("authorizeOperationBtn"),Oo=Dt("OperationSummaryMethod"),Ki=Dt("OperationSummaryPath"),Vi=Dt("JumpToPath",!0),Wo=wo&&!!wo.count(),Po=Wo&&1===wo.size&&wo.first().isEmpty(),ho=!Wo||Po;return F.a.createElement("div",{className:"opblock-summary opblock-summary-".concat(Gr)},F.a.createElement("button",{"aria-label":h()(ge="".concat(Gr," ")).call(ge,vi.replace(/\//g,"\u200b/")),"aria-expanded":Be,className:"opblock-summary-control",onClick:xt},F.a.createElement(Oo,{method:Gr}),F.a.createElement(Ki,{getComponent:Dt,operationProps:Gn,specPath:kn}),Ci?F.a.createElement("div",{className:"opblock-summary-description"},Ji()(No||jr)):null,po&&(fo||Ai)?F.a.createElement("span",{className:"opblock-summary-operation-id"},fo||Ai):null,F.a.createElement("svg",{className:"arrow",width:"20",height:"20","aria-hidden":"true",focusable:"false"},F.a.createElement("use",{href:Be?"#large-arrow-up":"#large-arrow-down",xlinkHref:Be?"#large-arrow-up":"#large-arrow-down"}))),ho?null:F.a.createElement(oo,{isAuthorized:kr,onClick:function(){var xo=vn.definitionsForRequirements(wo);en.showDefinitions(xo)}}),F.a.createElement(Vi,{path:kn}))}}]),Te}($e.PureComponent);U()(qi,"defaultProps",{operationProps:null,specPath:Object(zt.List)(),summary:""});var to=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("span",{className:"opblock-summary-method"},this.props.method.toUpperCase())}}]),Te}($e.PureComponent);U()(to,"defaultProps",{operationProps:null});var zi=t(200),Go=t.n(zi),Ro=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){for(var ge,Re=this.props,Be=Re.getComponent,xt=Re.operationProps.toJS(),Dt=xt.deprecated,en=xt.isShown,vn=xt.path,Gn=xt.tag,kn=xt.operationId,zn=xt.isDeepLinkingEnabled,jr=vn.split(/(?=\/)/g),kr=1;kr<jr.length;kr+=2)Go()(jr).call(jr,kr,0,F.a.createElement("wbr",{key:kr}));var Gr=Be("DeepLink");return F.a.createElement("span",{className:Dt?"opblock-summary-path__deprecated":"opblock-summary-path","data-path":vn},F.a.createElement(Gr,{enabled:zn,isShown:en,path:Object(tr.d)(h()(ge="".concat(Gn,"/")).call(ge,kn)),text:jr}))}}]),Te}($e.PureComponent),Bo=t(13),Jo=t.n(Bo),es=function(xe){var ke,Te=xe.extensions,ge=(0,xe.getComponent)("OperationExtRow");return F.a.createElement("div",{className:"opblock-section"},F.a.createElement("div",{className:"opblock-section-header"},F.a.createElement("h4",null,"Extensions")),F.a.createElement("div",{className:"table-container"},F.a.createElement("table",null,F.a.createElement("thead",null,F.a.createElement("tr",null,F.a.createElement("td",{className:"col_header"},"Field"),F.a.createElement("td",{className:"col_header"},"Value"))),F.a.createElement("tbody",null,He()(ke=Te.entrySeq()).call(ke,function(Re){var Be,xt=Jo()(Re,2),Dt=xt[0],en=xt[1];return F.a.createElement(ge,{key:h()(Be="".concat(Dt,"-")).call(Be,en),xKey:Dt,xVal:en})})))))},ua=function(xe){var ke=xe.xKey,Te=xe.xVal,ge=Te?Te.toJS?Te.toJS():Te:null;return F.a.createElement("tr",null,F.a.createElement("td",null,ke),F.a.createElement("td",null,x()(ge)))},ds=t(23),zo=t.n(ds),oa=t(47),Er=t.n(oa),st=t(91),pn=t(39),ee=t.n(pn),Ve=t(104),fn=t.n(Ve),Tn=t(477),$r=t.n(Tn),ni=t(143),Ri=function(xe){var ke=xe.value,Te=xe.fileName,ge=xe.className,Re=xe.downloadable,Be=xe.getConfigs,xt=xe.canCopy,Dt=xe.language,en=fn()(Be)?Be():null,vn=!1!==ee()(en,"syntaxHighlight")&&ee()(en,"syntaxHighlight.activated",!0),Gn=Object($e.useRef)(null);Object($e.useEffect)(function(){var zn,jr=m()(zn=di()(Gn.current.childNodes)).call(zn,function(kr){return!!kr.nodeType&&kr.classList.contains("microlight")});return zo()(jr).call(jr,function(kr){return kr.addEventListener("mousewheel",kn,{passive:!1})}),function(){zo()(jr).call(jr,function(kr){return kr.removeEventListener("mousewheel",kn)})}},[ke,ge,Dt]);var kn=function(zn){var jr=zn.target,kr=zn.deltaY,Gr=jr.scrollHeight,ci=jr.offsetHeight,Ci=jr.scrollTop;Gr>ci&&(0===Ci&&kr<0||ci+Ci>=Gr&&kr>0)&&zn.preventDefault()};return F.a.createElement("div",{className:"highlight-code",ref:Gn},Re?F.a.createElement("div",{className:"download-contents",onClick:function(){$r()(ke,Te)}},"Download"):null,xt&&F.a.createElement("div",{className:"copy-to-clipboard"},F.a.createElement(ni.CopyToClipboard,{text:ke},F.a.createElement("button",null))),vn?F.a.createElement(st.a,{language:Dt,className:Er()(ge,"microlight"),style:Object(st.b)(ee()(en,"syntaxHighlight.theme","agate"))},ke):F.a.createElement("pre",{className:Er()(ge,"microlight")},ke))};Ri.defaultProps={fileName:"response.txt"};var Do=Ri,gi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onChangeProducesWrapper",function(en){return Re.props.specActions.changeProducesValue([Re.props.path,Re.props.method],en)}),U()(L()(Re),"onResponseContentTypeChange",function(en){var kn=Re.props;en.controlsAcceptHeader&&kn.oas3Actions.setResponseContentType({value:en.value,path:kn.path,method:kn.method})}),Re}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be=this,xt=this.props,Dt=xt.responses,en=xt.tryItOutResponse,vn=xt.getComponent,Gn=xt.getConfigs,kn=xt.specSelectors,zn=xt.fn,jr=xt.producesValue,kr=xt.displayRequestDuration,Gr=xt.specPath,ci=xt.path,Ci=xt.method,vi=xt.oas3Selectors,Ai=xt.oas3Actions,fo=Object(tr.f)(Dt),po=vn("contentType"),No=vn("liveResponse"),wo=vn("response"),oo=this.props.produces&&this.props.produces.size?this.props.produces:Te.defaultProps.produces,Oo=kn.isOAS3()?Object(tr.k)(Dt):null,Ki=function(Wo){var Po=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"_";return Wo.replace(/[^\w-]/g,Po)}(h()(ge="".concat(Ci)).call(ge,ci,"_responses")),Vi="".concat(Ki,"_select");return F.a.createElement("div",{className:"responses-wrapper"},F.a.createElement("div",{className:"opblock-section-header"},F.a.createElement("h4",null,"Responses"),kn.isOAS3()?null:F.a.createElement("label",{htmlFor:Vi},F.a.createElement("span",null,"Response content type"),F.a.createElement(po,{value:jr,ariaControls:Ki,ariaLabel:"Response content type",className:"execute-content-type",contentTypes:oo,controlId:Vi,onChange:this.onChangeProducesWrapper}))),F.a.createElement("div",{className:"responses-inner"},en?F.a.createElement("div",null,F.a.createElement(No,{response:en,getComponent:vn,getConfigs:Gn,specSelectors:kn,path:this.props.path,method:this.props.method,displayRequestDuration:kr}),F.a.createElement("h4",null,"Responses")):null,F.a.createElement("table",{"aria-live":"polite",className:"responses-table",id:Ki,role:"region"},F.a.createElement("thead",null,F.a.createElement("tr",{className:"responses-header"},F.a.createElement("td",{className:"col_header response-col_status"},"Code"),F.a.createElement("td",{className:"col_header response-col_description"},"Description"),kn.isOAS3()?F.a.createElement("td",{className:"col col_header response-col_links"},"Links"):null)),F.a.createElement("tbody",null,He()(Re=Dt.entrySeq()).call(Re,function(Wo){var Po=Jo()(Wo,2),ho=Po[0],xo=Po[1],Ps=en&&en.get("status")==ho?"response_current":"";return F.a.createElement(wo,{key:ho,path:ci,method:Ci,specPath:Gr.push(ho),isDefault:fo===ho,fn:zn,className:Ps,code:ho,response:xo,specSelectors:kn,controlsAcceptHeader:xo===Oo,onContentTypeChange:Be.onResponseContentTypeChange,contentType:jr,getConfigs:Gn,activeExamplesKey:vi.activeExamplesMember(ci,Ci,"responses",ho),oas3Actions:Ai,getComponent:vn})}).toArray()))))}}]),Te}(F.a.Component);U()(gi,"defaultProps",{tryItOutResponse:null,produces:Object(zt.fromJS)(["application/json"]),displayRequestDuration:!1});var Hi=t(25),Li=t.n(Hi),cs=t(478),Os=t.n(cs),da=t(107),xa=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"_onContentTypeChange",function(xt){var Dt=Be.props,en=Dt.onContentTypeChange,vn=Dt.controlsAcceptHeader;Be.setState({responseContentType:xt}),en({value:xt,controlsAcceptHeader:vn})}),U()(L()(Be),"getTargetExamplesKey",function(){var xt=Be.props,vn=xt.activeExamplesKey,kn=xt.response.getIn(["content",Be.state.responseContentType||xt.contentType],Object(zt.Map)({})).get("examples",null).keySeq().first();return vn||kn}),Be.state={responseContentType:""},Be}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be,xt,Dt,en=this.props,vn=en.path,Gn=en.method,kn=en.code,zn=en.response,jr=en.className,kr=en.specPath,ci=en.getComponent,Ci=en.getConfigs,vi=en.specSelectors,Ai=en.contentType,fo=en.controlsAcceptHeader,po=en.oas3Actions,No=en.fn.inferSchema,wo=vi.isOAS3(),oo=Ci().showExtensions,Oo=oo?Object(tr.m)(zn):null,Ki=zn.get("headers"),Vi=zn.get("links"),Wo=ci("ResponseExtension"),Po=ci("headers"),ho=ci("highlightCode"),xo=ci("modelExample"),Ps=ci("Markdown",!0),_n=ci("operationLink"),Hs=ci("contentType"),Pa=ci("ExamplesSelect"),Oa=ci("Example"),lo=this.state.responseContentType||Ai,ra=zn.getIn(["content",lo],Object(zt.Map)({})),ns=ra.get("examples",null);if(wo){var Aa=ra.get("schema");Be=Aa?No(Aa.toJS()):null,xt=Aa?Object(zt.List)(["content",this.state.responseContentType,"schema"]):kr}else Be=zn.get("schema"),xt=zn.has("schema")?kr.push("schema"):kr;var zs,La=!1,ws={includeReadOnly:!0};if(wo){var Ds;if(zs=null===(Ds=ra.get("schema"))||void 0===Ds?void 0:Ds.toJS(),ns){var Ws=this.getTargetExamplesKey(),Ba=function($a){return $a.get("value")};void 0===(Dt=Ba(ns.get(Ws,Object(zt.Map)({}))))&&(Dt=Ba(Os()(ns).call(ns).next().value)),La=!0}else void 0!==ra.get("example")&&(Dt=ra.get("example"),La=!0)}else{zs=Be,ws=Li()(Li()({},ws),{},{includeWriteOnly:!0});var Zs=zn.getIn(["examples",lo]);Zs&&(Dt=Zs,La=!0)}var Ya=function($a,Za,Ha){if(null!=$a){var ol=null;return Object(da.a)($a)&&(ol="json"),F.a.createElement("div",null,F.a.createElement(Za,{className:"example",getConfigs:Ha,language:ol,value:Object(tr.I)($a)}))}return null}(Object(tr.o)(zs,lo,ws,La?Dt:void 0),ho,Ci);return F.a.createElement("tr",{className:"response "+(jr||""),"data-code":kn},F.a.createElement("td",{className:"response-col_status"},kn),F.a.createElement("td",{className:"response-col_description"},F.a.createElement("div",{className:"response-col_description__inner"},F.a.createElement(Ps,{source:zn.get("description")})),oo&&Oo.size?He()(ge=Oo.entrySeq()).call(ge,function($a){var Za,Ha=Jo()($a,2),ol=Ha[0],Us=Ha[1];return F.a.createElement(Wo,{key:h()(Za="".concat(ol,"-")).call(Za,Us),xKey:ol,xVal:Us})}):null,wo&&zn.get("content")?F.a.createElement("section",{className:"response-controls"},F.a.createElement("div",{className:Er()("response-control-media-type",{"response-control-media-type--accept-controller":fo})},F.a.createElement("small",{className:"response-control-media-type__title"},"Media type"),F.a.createElement(Hs,{value:this.state.responseContentType,contentTypes:zn.get("content")?zn.get("content").keySeq():Object(zt.Seq)(),onChange:this._onContentTypeChange,ariaLabel:"Media Type"}),fo?F.a.createElement("small",{className:"response-control-media-type__accept-message"},"Controls ",F.a.createElement("code",null,"Accept")," header."):null),ns?F.a.createElement("div",{className:"response-control-examples"},F.a.createElement("small",{className:"response-control-examples__title"},"Examples"),F.a.createElement(Pa,{examples:ns,currentExampleKey:this.getTargetExamplesKey(),onSelect:function($a){return po.setActiveExamplesMember({name:$a,pathMethod:[vn,Gn],contextType:"responses",contextName:kn})},showLabels:!1})):null):null,Ya||Be?F.a.createElement(xo,{specPath:xt,getComponent:ci,getConfigs:Ci,specSelectors:vi,schema:Object(tr.i)(Be),example:Ya,includeReadOnly:!0}):null,wo&&ns?F.a.createElement(Oa,{example:ns.get(this.getTargetExamplesKey(),Object(zt.Map)({})),getComponent:ci,getConfigs:Ci,omitValue:!0}):null,Ki?F.a.createElement(Po,{headers:Ki,getComponent:ci}):null),wo?F.a.createElement("td",{className:"response-col_links"},Vi?He()(Re=Vi.toSeq().entrySeq()).call(Re,function($a){var Za=Jo()($a,2),Ha=Za[0];return F.a.createElement(_n,{key:Ha,name:Ha,link:Za[1],getComponent:ci})}):F.a.createElement("i",null,"No links")):null)}}]),Te}(F.a.Component);U()(xa,"defaultProps",{response:Object(zt.fromJS)({}),onContentTypeChange:function(){}});var Ra=function(xe){return F.a.createElement("div",{className:"response__extension"},xe.xKey,": ",String(xe.xVal))},Ml=t(479),Dl=t.n(Ml),Ca=t(480),sa=t.n(Ca),Fo=t(325),Ka=t.n(Fo),Sa=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"state",{parsedContent:null}),U()(L()(Re),"updateParsedContent",function(en){var vn=Re.props.content;if(en!==vn)if(vn&&vn instanceof Blob){var Gn=new FileReader;Gn.onload=function(){Re.setState({parsedContent:Gn.result})},Gn.readAsText(vn)}else Re.setState({parsedContent:vn.toString()})}),Re}return Y()(Te,[{key:"componentDidMount",value:function(){this.updateParsedContent(null)}},{key:"componentDidUpdate",value:function(ge){this.updateParsedContent(ge.content)}},{key:"render",value:function(){var ge,Re,Be=this.props,xt=Be.content,Dt=Be.contentType,en=Be.url,vn=Be.headers,Gn=void 0===vn?{}:vn,kn=Be.getConfigs,jr=this.state.parsedContent,kr=(0,Be.getComponent)("highlightCode"),Gr="response_"+(new Date).getTime();if(en=en||"",/^application\/octet-stream/i.test(Dt)||Gn["Content-Disposition"]&&/attachment/i.test(Gn["Content-Disposition"])||Gn["content-disposition"]&&/attachment/i.test(Gn["content-disposition"])||Gn["Content-Description"]&&/File Transfer/i.test(Gn["Content-Description"])||Gn["content-description"]&&/File Transfer/i.test(Gn["content-description"]))if("Blob"in window){var ci=Dt||"text/html",Ci=xt instanceof Blob?xt:new Blob([xt],{type:ci}),vi=Qr.a.createObjectURL(Ci),Ai=[ci,en.substr(Dl()(en).call(en,"/")+1),vi].join(":"),fo=Gn["content-disposition"]||Gn["Content-Disposition"];if(void 0!==fo){var po=Object(tr.h)(fo);null!==po&&(Ai=po)}Re=F.a.createElement("div",null,F.a.createElement("a",Ht.a.navigator&&Ht.a.navigator.msSaveOrOpenBlob?{href:vi,onClick:function(){return Ht.a.navigator.msSaveOrOpenBlob(Ci,Ai)}}:{href:vi,download:Ai},"Download file"))}else Re=F.a.createElement("pre",{className:"microlight"},"Download headers detected but your browser does not support downloading binary via XHR (Blob).");else if(/json/i.test(Dt)){var No=null;Object(da.a)(xt)&&(No="json");try{ge=x()(JSON.parse(xt),null,"  ")}catch(wo){ge="can't parse JSON.  Raw result:\n\n"+xt}Re=F.a.createElement(kr,{language:No,downloadable:!0,fileName:"".concat(Gr,".json"),value:ge,getConfigs:kn,canCopy:!0})}else/xml/i.test(Dt)?(ge=sa()(xt,{textNodesOnSameLine:!0,indentor:"  "}),Re=F.a.createElement(kr,{downloadable:!0,fileName:"".concat(Gr,".xml"),value:ge,getConfigs:kn,canCopy:!0})):Re="text/html"===Ka()(Dt)||/text\/plain/.test(Dt)?F.a.createElement(kr,{downloadable:!0,fileName:"".concat(Gr,".html"),value:xt,getConfigs:kn,canCopy:!0}):"text/csv"===Ka()(Dt)||/text\/csv/.test(Dt)?F.a.createElement(kr,{downloadable:!0,fileName:"".concat(Gr,".csv"),value:xt,getConfigs:kn,canCopy:!0}):/^image\//i.test(Dt)?Xe()(Dt).call(Dt,"svg")?F.a.createElement("div",null," ",xt," "):F.a.createElement("img",{src:Qr.a.createObjectURL(xt)}):/^audio\//i.test(Dt)?F.a.createElement("pre",{className:"microlight"},F.a.createElement("audio",{controls:!0},F.a.createElement("source",{src:en,type:Dt}))):"string"==typeof xt?F.a.createElement(kr,{downloadable:!0,fileName:"".concat(Gr,".txt"),value:xt,getConfigs:kn,canCopy:!0}):xt.size>0?jr?F.a.createElement("div",null,F.a.createElement("p",{className:"i"},"Unrecognized response type; displaying content as text."),F.a.createElement(kr,{downloadable:!0,fileName:"".concat(Gr,".txt"),value:jr,getConfigs:kn,canCopy:!0})):F.a.createElement("p",{className:"i"},"Unrecognized response type; unable to display."):null;return Re?F.a.createElement("div",null,F.a.createElement("h5",null,"Response body"),Re):null}}]),Te}(F.a.PureComponent),fa=t(14),ks=t.n(fa),Ua=t(198),pt=t.n(Ua),an=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge){var Re;return I()(this,Te),Re=ke.call(this,ge),U()(L()(Re),"onChange",function(Be,xt,Dt){var en=Re.props;(0,en.specActions.changeParamByIdentity)(en.onChangeKey,Be,xt,Dt)}),U()(L()(Re),"onChangeConsumesWrapper",function(Be){var xt=Re.props;(0,xt.specActions.changeConsumesValue)(xt.onChangeKey,Be)}),U()(L()(Re),"toggleTab",function(Be){return"parameters"===Be?Re.setState({parametersVisible:!0,callbackVisible:!1}):"callbacks"===Be?Re.setState({callbackVisible:!0,parametersVisible:!1}):void 0}),U()(L()(Re),"onChangeMediaType",function(Be){var xt=Be.value,Dt=Be.pathMethod,en=Re.props,vn=en.specActions,Gn=en.oas3Selectors,kn=en.oas3Actions,zn=Gn.hasUserEditedBody.apply(Gn,ks()(Dt)),jr=Gn.shouldRetainRequestBodyValue.apply(Gn,ks()(Dt));kn.setRequestContentType({value:xt,pathMethod:Dt}),kn.initRequestBodyValidateError({pathMethod:Dt}),zn||(jr||kn.setRequestBodyValue({value:void 0,pathMethod:Dt}),vn.clearResponse.apply(vn,ks()(Dt)),vn.clearRequest.apply(vn,ks()(Dt)),vn.clearValidateParams(Dt))}),Re.state={callbackVisible:!1,parametersVisible:!0},Re}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be=this,xt=this.props,Dt=xt.onTryoutClick,en=xt.parameters,vn=xt.allowTryItOut,Gn=xt.tryItOutEnabled,kn=xt.specPath,zn=xt.fn,jr=xt.getComponent,kr=xt.getConfigs,Gr=xt.specSelectors,ci=xt.specActions,Ci=xt.pathMethod,vi=xt.oas3Actions,Ai=xt.oas3Selectors,fo=xt.operation,po=jr("parameterRow"),No=jr("TryItOutButton"),wo=jr("contentType"),oo=jr("Callbacks",!0),Oo=jr("RequestBody",!0),Ki=Gn&&vn,Vi=Gr.isOAS3(),Wo=fo.get("requestBody"),Po=be()(ge=pt()(be()(en).call(en,function(ho,xo){var Ps,_n=xo.get("in");return null!==(Ps=ho[_n])&&void 0!==Ps||(ho[_n]=[]),ho[_n].push(xo),ho},{}))).call(ge,function(ho,xo){return h()(ho).call(ho,xo)},[]);return F.a.createElement("div",{className:"opblock-section"},F.a.createElement("div",{className:"opblock-section-header"},Vi?F.a.createElement("div",{className:"tab-header"},F.a.createElement("div",{onClick:function(){return Be.toggleTab("parameters")},className:"tab-item ".concat(this.state.parametersVisible&&"active")},F.a.createElement("h4",{className:"opblock-title"},F.a.createElement("span",null,"Parameters"))),fo.get("callbacks")?F.a.createElement("div",{onClick:function(){return Be.toggleTab("callbacks")},className:"tab-item ".concat(this.state.callbackVisible&&"active")},F.a.createElement("h4",{className:"opblock-title"},F.a.createElement("span",null,"Callbacks"))):null):F.a.createElement("div",{className:"tab-header"},F.a.createElement("h4",{className:"opblock-title"},"Parameters")),vn?F.a.createElement(No,{isOAS3:Gr.isOAS3(),hasUserEditedBody:Ai.hasUserEditedBody.apply(Ai,ks()(Ci)),enabled:Gn,onCancelClick:this.props.onCancelClick,onTryoutClick:Dt,onResetClick:function(){return vi.setRequestBodyValue({value:void 0,pathMethod:Ci})}}):null),this.state.parametersVisible?F.a.createElement("div",{className:"parameters-container"},Po.length?F.a.createElement("div",{className:"table-container"},F.a.createElement("table",{className:"parameters"},F.a.createElement("thead",null,F.a.createElement("tr",null,F.a.createElement("th",{className:"col_header parameters-col_name"},"Name"),F.a.createElement("th",{className:"col_header parameters-col_description"},"Description"))),F.a.createElement("tbody",null,He()(Po).call(Po,function(ho,xo){var Ps;return F.a.createElement(po,{fn:zn,specPath:kn.push(xo.toString()),getComponent:jr,getConfigs:kr,rawParam:ho,param:Gr.parameterWithMetaByIdentity(Ci,ho),key:h()(Ps="".concat(ho.get("in"),".")).call(Ps,ho.get("name")),onChange:Be.onChange,onChangeConsumes:Be.onChangeConsumesWrapper,specSelectors:Gr,specActions:ci,oas3Actions:vi,oas3Selectors:Ai,pathMethod:Ci,isExecute:Ki})})))):F.a.createElement("div",{className:"opblock-description-wrapper"},F.a.createElement("p",null,"No parameters"))):null,this.state.callbackVisible?F.a.createElement("div",{className:"callbacks-container opblock-description-wrapper"},F.a.createElement(oo,{callbacks:Object(zt.Map)(fo.get("callbacks")),specPath:ce()(kn).call(kn,0,-1).push("callbacks")})):null,Vi&&Wo&&this.state.parametersVisible&&F.a.createElement("div",{className:"opblock-section opblock-section-request-body"},F.a.createElement("div",{className:"opblock-section-header"},F.a.createElement("h4",{className:"opblock-title parameter__name ".concat(Wo.get("required")&&"required")},"Request body"),F.a.createElement("label",null,F.a.createElement(wo,{value:Ai.requestContentType.apply(Ai,ks()(Ci)),contentTypes:Wo.get("content",Object(zt.List)()).keySeq(),onChange:function(ho){Be.onChangeMediaType({value:ho,pathMethod:Ci})},className:"body-param-content-type",ariaLabel:"Request content type"}))),F.a.createElement("div",{className:"opblock-description-wrapper"},F.a.createElement(Oo,{setRetainRequestBodyValueFlag:function(ho){return vi.setRetainRequestBodyValueFlag({value:ho,pathMethod:Ci})},userHasEditedBody:Ai.hasUserEditedBody.apply(Ai,ks()(Ci)),specPath:ce()(kn).call(kn,0,-1).push("requestBody"),requestBody:Wo,requestBodyValue:Ai.requestBodyValue.apply(Ai,ks()(Ci)),requestBodyInclusionSetting:Ai.requestBodyInclusionSetting.apply(Ai,ks()(Ci)),requestBodyErrors:Ai.requestBodyErrors.apply(Ai,ks()(Ci)),isExecute:Ki,getConfigs:kr,activeExamplesKey:Ai.activeExamplesMember.apply(Ai,h()(Re=ks()(Ci)).call(Re,["requestBody","requestBody"])),updateActiveExamplesKey:function(ho){Be.props.oas3Actions.setActiveExamplesMember({name:ho,pathMethod:Be.props.pathMethod,contextType:"requestBody",contextName:"requestBody"})},onChange:function(ho,xo){if(xo){var Ps=Ai.requestBodyValue.apply(Ai,ks()(Ci)),_n=zt.Map.isMap(Ps)?Ps:Object(zt.Map)();return vi.setRequestBodyValue({pathMethod:Ci,value:_n.setIn(xo,ho)})}vi.setRequestBodyValue({value:ho,pathMethod:Ci})},onChangeIncludeEmpty:function(ho,xo){vi.setRequestBodyInclusion({pathMethod:Ci,value:xo,name:ho})},contentType:Ai.requestContentType.apply(Ai,ks()(Ci))}))))}}]),Te}($e.Component);U()(an,"defaultProps",{onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]});var Nt=function(xe){return F.a.createElement("div",{className:"parameter__extension"},xe.xKey,": ",String(xe.xVal))},ye=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onCheckboxChange",function(en){(0,Re.props.onChange)(en.target.checked)}),Re}return Y()(Te,[{key:"componentDidMount",value:function(){var ge=this.props,Re=ge.isIncludedOptions;Re.shouldDispatchInit&&(0,ge.onChange)(Re.defaultValue)}},{key:"render",value:function(){var ge=this.props,Re=ge.isIncluded,Be=ge.isDisabled;return F.a.createElement("div",null,F.a.createElement("label",{className:Er()("parameter__empty_value_toggle",{disabled:Be})},F.a.createElement("input",{type:"checkbox",disabled:Be,checked:!Be&&Re,onChange:this.onCheckboxChange}),"Send empty value"))}}]),Te}($e.Component);U()(ye,"defaultProps",{onChange:function(){},isIncludedOptions:{}});var Ne=t(145),Wt=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onChangeWrapper",function(xt){var Dt=arguments.length>1&&void 0!==arguments[1]&&arguments[1],en=Be.props,vn=en.onChange,Gn=en.rawParam;return vn(Gn,""===xt||xt&&0===xt.size?null:xt,Dt)}),U()(L()(Be),"_onExampleSelect",function(xt){Be.props.oas3Actions.setActiveExamplesMember({name:xt,pathMethod:Be.props.pathMethod,contextType:"parameters",contextName:Be.getParamKey()})}),U()(L()(Be),"onChangeIncludeEmpty",function(xt){var Dt=Be.props,en=Dt.specActions,vn=Dt.param,Gn=Dt.pathMethod,kn=vn.get("name"),zn=vn.get("in");return en.updateEmptyParamInclusion(Gn,kn,zn,xt)}),U()(L()(Be),"setDefaultValue",function(){var xt=Be.props,Dt=xt.specSelectors,en=xt.pathMethod,Gn=xt.oas3Selectors,kn=Dt.parameterWithMetaByIdentity(en,xt.rawParam)||Object(zt.Map)(),zn=Object(Ne.a)(kn,{isOAS3:Dt.isOAS3()}).schema,jr=kn.get("content",Object(zt.Map)()).keySeq().first(),kr=zn?Object(tr.o)(zn.toJS(),jr,{includeWriteOnly:!0}):null;if(kn&&void 0===kn.get("value")&&"body"!==kn.get("in")){var Gr;if(Dt.isSwagger2())Gr=void 0!==kn.get("x-example")?kn.get("x-example"):void 0!==kn.getIn(["schema","example"])?kn.getIn(["schema","example"]):zn&&zn.getIn(["default"]);else if(Dt.isOAS3()){var ci,Ci=Gn.activeExamplesMember.apply(Gn,h()(ci=ks()(en)).call(ci,["parameters",Be.getParamKey()]));Gr=void 0!==kn.getIn(["examples",Ci,"value"])?kn.getIn(["examples",Ci,"value"]):void 0!==kn.getIn(["content",jr,"example"])?kn.getIn(["content",jr,"example"]):void 0!==kn.get("example")?kn.get("example"):void 0!==(zn&&zn.get("example"))?zn&&zn.get("example"):void 0!==(zn&&zn.get("default"))?zn&&zn.get("default"):kn.get("default")}void 0===Gr||zt.List.isList(Gr)||(Gr=Object(tr.I)(Gr)),void 0!==Gr?Be.onChangeWrapper(Gr):zn&&"object"===zn.get("type")&&kr&&!kn.get("examples")&&Be.onChangeWrapper(zt.List.isList(kr)?kr:Object(tr.I)(kr))}}),Be.setDefaultValue(),Be}return Y()(Te,[{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re,Be=ge.specSelectors,xt=ge.pathMethod,Dt=ge.rawParam,en=Be.isOAS3(),vn=Be.parameterWithMetaByIdentity(xt,Dt)||new zt.Map;if(vn=vn.isEmpty()?Dt:vn,en){var Gn=Object(Ne.a)(vn,{isOAS3:en}).schema;Re=Gn?Gn.get("enum"):void 0}else Re=vn?vn.get("enum"):void 0;var kn,zn=vn?vn.get("value"):void 0;void 0!==zn?kn=zn:Dt.get("required")&&Re&&Re.size&&(kn=Re.first()),void 0!==kn&&kn!==zn&&this.onChangeWrapper(Object(tr.w)(kn)),this.setDefaultValue()}},{key:"getParamKey",value:function(){var ge,Re=this.props.param;return Re?h()(ge="".concat(Re.get("name"),"-")).call(ge,Re.get("in")):null}},{key:"render",value:function(){var ge,Re,Be,xt,Dt=this.props,en=Dt.param,vn=Dt.rawParam,Gn=Dt.getComponent,kn=Dt.getConfigs,zn=Dt.isExecute,jr=Dt.fn,kr=Dt.onChangeConsumes,Gr=Dt.specSelectors,ci=Dt.pathMethod,Ci=Dt.specPath,vi=Dt.oas3Selectors,Ai=Gr.isOAS3(),fo=kn(),po=fo.showExtensions,No=fo.showCommonExtensions;if(en||(en=vn),!vn)return null;var wo,oo,Oo,Ki,Vi=Gn("JsonSchemaForm"),Wo=Gn("ParamBody"),Po=en.get("in"),ho="body"!==Po?null:F.a.createElement(Wo,{getComponent:Gn,getConfigs:kn,fn:jr,param:en,consumes:Gr.consumesOptionsFor(ci),consumesValue:Gr.contentTypeValues(ci).get("requestContentType"),onChange:this.onChangeWrapper,onChangeConsumes:kr,isExecute:zn,specSelectors:Gr,pathMethod:ci}),xo=Gn("modelExample"),Ps=Gn("Markdown",!0),_n=Gn("ParameterExt"),Hs=Gn("ParameterIncludeEmpty"),Pa=Gn("ExamplesSelectValueRetainer"),Oa=Gn("Example"),lo=Object(Ne.a)(en,{isOAS3:Ai}).schema,ra=Gr.parameterWithMetaByIdentity(ci,vn)||Object(zt.Map)(),ns=lo?lo.get("format"):null,Aa=lo?lo.get("type"):null,zs=lo?lo.getIn(["items","type"]):null,La="formData"===Po,ws="FormData"in Ht.a,Ds=en.get("required"),Ws=ra?ra.get("value"):"",Ba=No?Object(tr.l)(lo):null,Zs=po?Object(tr.m)(en):null,Ya=!1;return void 0!==en&&lo&&(wo=lo.get("items")),void 0!==wo?(oo=wo.get("enum"),Oo=wo.get("default")):lo&&(oo=lo.get("enum")),oo&&oo.size&&oo.size>0&&(Ya=!0),void 0!==en&&(lo&&(Oo=lo.get("default")),void 0===Oo&&(Oo=en.get("default")),void 0===(Ki=en.get("example"))&&(Ki=en.get("x-example"))),F.a.createElement("tr",{"data-param-name":en.get("name"),"data-param-in":en.get("in")},F.a.createElement("td",{className:"parameters-col_name"},F.a.createElement("div",{className:Ds?"parameter__name required":"parameter__name"},en.get("name"),Ds?F.a.createElement("span",null,"\xa0*"):null),F.a.createElement("div",{className:"parameter__type"},Aa,zs&&"[".concat(zs,"]"),ns&&F.a.createElement("span",{className:"prop-format"},"($",ns,")")),F.a.createElement("div",{className:"parameter__deprecated"},Ai&&en.get("deprecated")?"deprecated":null),F.a.createElement("div",{className:"parameter__in"},"(",en.get("in"),")"),No&&Ba.size?He()(ge=Ba.entrySeq()).call(ge,function($a){var Za,Ha=Jo()($a,2),ol=Ha[0],Us=Ha[1];return F.a.createElement(_n,{key:h()(Za="".concat(ol,"-")).call(Za,Us),xKey:ol,xVal:Us})}):null,po&&Zs.size?He()(Re=Zs.entrySeq()).call(Re,function($a){var Za,Ha=Jo()($a,2),ol=Ha[0],Us=Ha[1];return F.a.createElement(_n,{key:h()(Za="".concat(ol,"-")).call(Za,Us),xKey:ol,xVal:Us})}):null),F.a.createElement("td",{className:"parameters-col_description"},en.get("description")?F.a.createElement(Ps,{source:en.get("description")}):null,!ho&&zn||!Ya?null:F.a.createElement(Ps,{className:"parameter__enum",source:"<i>Available values</i> : "+He()(oo).call(oo,function($a){return $a}).toArray().join(", ")}),!ho&&zn||void 0===Oo?null:F.a.createElement(Ps,{className:"parameter__default",source:"<i>Default value</i> : "+Oo}),!ho&&zn||void 0===Ki?null:F.a.createElement(Ps,{source:"<i>Example</i> : "+Ki}),La&&!ws&&F.a.createElement("div",null,"Error: your browser does not support FormData"),Ai&&en.get("examples")?F.a.createElement("section",{className:"parameter-controls"},F.a.createElement(Pa,{examples:en.get("examples"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:Gn,defaultToFirstExample:!0,currentKey:vi.activeExamplesMember.apply(vi,h()(Be=ks()(ci)).call(Be,["parameters",this.getParamKey()])),currentUserInputValue:Ws})):null,ho?null:F.a.createElement(Vi,{fn:jr,getComponent:Gn,value:Ws,required:Ds,disabled:!zn,description:en.get("name"),onChange:this.onChangeWrapper,errors:ra.get("errors"),schema:lo}),ho&&lo?F.a.createElement(xo,{getComponent:Gn,specPath:Ci.push("schema"),getConfigs:kn,isExecute:zn,specSelectors:Gr,schema:lo,example:ho,includeWriteOnly:!0}):null,!ho&&zn&&en.get("allowEmptyValue")?F.a.createElement(Hs,{onChange:this.onChangeIncludeEmpty,isIncluded:Gr.parameterInclusionSettingFor(ci,en.get("name"),en.get("in")),isDisabled:!Object(tr.q)(Ws)}):null,Ai&&en.get("examples")?F.a.createElement(Oa,{example:en.getIn(["examples",vi.activeExamplesMember.apply(vi,h()(xt=ks()(ci)).call(xt,["parameters",this.getParamKey()]))]),getComponent:Gn,getConfigs:kn}):null))}}]),Te}($e.Component),Or=t(202),Ni=t.n(Or),Yo=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"handleValidateParameters",function(){var en=Re.props,vn=en.specSelectors,kn=en.path,zn=en.method;return en.specActions.validateParams([kn,zn]),vn.validateBeforeExecute([kn,zn])}),U()(L()(Re),"handleValidateRequestBody",function(){var en=Re.props,vn=en.path,Gn=en.method,kn=en.specSelectors,zn=en.oas3Selectors,jr=en.oas3Actions,kr={missingBodyValue:!1,missingRequiredKeys:[]};jr.clearRequestBodyValidateError({path:vn,method:Gn});var Gr=kn.getOAS3RequiredRequestBodyContentType([vn,Gn]),ci=zn.requestBodyValue(vn,Gn),Ci=zn.validateBeforeExecute([vn,Gn]),vi=zn.requestContentType(vn,Gn);if(!Ci)return kr.missingBodyValue=!0,jr.setRequestBodyValidateError({path:vn,method:Gn,validationErrors:kr}),!1;if(!Gr)return!0;var Ai=zn.validateShallowRequired({oas3RequiredRequestBodyContentType:Gr,oas3RequestContentType:vi,oas3RequestBodyValue:ci});return!Ai||Ai.length<1||(zo()(Ai).call(Ai,function(fo){kr.missingRequiredKeys.push(fo)}),jr.setRequestBodyValidateError({path:vn,method:Gn,validationErrors:kr}),!1)}),U()(L()(Re),"handleValidationResultPass",function(){var en=Re.props,vn=en.specActions,Gn=en.operation,kn=en.path,zn=en.method;Re.props.onExecute&&Re.props.onExecute(),vn.execute({operation:Gn,path:kn,method:zn})}),U()(L()(Re),"handleValidationResultFail",function(){var en=Re.props,vn=en.specActions,Gn=en.path,kn=en.method;vn.clearValidateParams([Gn,kn]),Ni()(function(){vn.validateParams([Gn,kn])},40)}),U()(L()(Re),"handleValidationResult",function(en){en?Re.handleValidationResultPass():Re.handleValidationResultFail()}),U()(L()(Re),"onClick",function(){var en=Re.handleValidateParameters(),vn=Re.handleValidateRequestBody();Re.handleValidationResult(en&&vn)}),U()(L()(Re),"onChangeProducesWrapper",function(en){return Re.props.specActions.changeProducesValue([Re.props.path,Re.props.method],en)}),Re}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("button",{className:"btn execute opblock-control__btn",onClick:this.onClick,disabled:this.props.disabled},"Execute")}}]),Te}($e.Component),ms=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.headers,xt=Re.getComponent,Dt=xt("Property"),en=xt("Markdown",!0);return Be&&Be.size?F.a.createElement("div",{className:"headers-wrapper"},F.a.createElement("h4",{className:"headers__title"},"Headers:"),F.a.createElement("table",{className:"headers"},F.a.createElement("thead",null,F.a.createElement("tr",{className:"header-row"},F.a.createElement("th",{className:"header-col"},"Name"),F.a.createElement("th",{className:"header-col"},"Description"),F.a.createElement("th",{className:"header-col"},"Type"))),F.a.createElement("tbody",null,He()(ge=Be.entrySeq()).call(ge,function(vn){var Gn=Jo()(vn,2),kn=Gn[0],zn=Gn[1];if(!ln.a.Map.isMap(zn))return null;var jr=zn.get("description"),kr=zn.getIn(["schema"])?zn.getIn(["schema","type"]):zn.getIn(["type"]),Gr=zn.getIn(["schema","example"]);return F.a.createElement("tr",{key:kn},F.a.createElement("td",{className:"header-col"},kn),F.a.createElement("td",{className:"header-col"},jr?F.a.createElement(en,{source:jr}):null),F.a.createElement("td",{className:"header-col"},kr," ",Gr?F.a.createElement(Dt,{propKey:"Example",propVal:Gr,propClass:"header-example"}):null))}).toArray()))):null}}]),Te}(F.a.Component),ss=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.editorActions,Be=ge.errSelectors,xt=ge.layoutSelectors,Dt=ge.layoutActions,en=(0,ge.getComponent)("Collapse");if(Re&&Re.jumpToLine)var vn=Re.jumpToLine;var Gn=Be.allErrors(),kn=m()(Gn).call(Gn,function(kr){return"thrown"===kr.get("type")||"error"===kr.get("level")});if(!kn||kn.count()<1)return null;var zn=xt.isShown(["errorPane"],!0),jr=kn.sortBy(function(kr){return kr.get("line")});return F.a.createElement("pre",{className:"errors-wrapper"},F.a.createElement("hgroup",{className:"error"},F.a.createElement("h4",{className:"errors__title"},"Errors"),F.a.createElement("button",{className:"btn errors__clear-btn",onClick:function(){return Dt.show(["errorPane"],!zn)}},zn?"Hide":"Show")),F.a.createElement(en,{isOpened:zn,animated:!0},F.a.createElement("div",{className:"errors"},He()(jr).call(jr,function(kr,Gr){var ci=kr.get("type");return"thrown"===ci||"auth"===ci?F.a.createElement(Lo,{key:Gr,error:kr.get("error")||kr,jumpToLine:vn}):"spec"===ci?F.a.createElement(Zo,{key:Gr,error:kr,jumpToLine:vn}):void 0}))))}}]),Te}(F.a.Component),Lo=function(xe){var ke=xe.error,Te=xe.jumpToLine;if(!ke)return null;var ge=ke.get("line");return F.a.createElement("div",{className:"error-wrapper"},ke?F.a.createElement("div",null,F.a.createElement("h4",null,ke.get("source")&&ke.get("level")?Ea(ke.get("source"))+" "+ke.get("level"):"",ke.get("path")?F.a.createElement("small",null," at ",ke.get("path")):null),F.a.createElement("span",{className:"message thrown"},ke.get("message")),F.a.createElement("div",{className:"error-line"},ge&&Te?F.a.createElement("a",{onClick:oe()(Te).call(Te,null,ge)},"Jump to line ",ge):null)):null)},Zo=function(xe){var ke=xe.error,Te=xe.jumpToLine,ge=null;return ke.get("path")?ge=zt.List.isList(ke.get("path"))?F.a.createElement("small",null,"at ",ke.get("path").join(".")):F.a.createElement("small",null,"at ",ke.get("path")):ke.get("line")&&!Te&&(ge=F.a.createElement("small",null,"on line ",ke.get("line"))),F.a.createElement("div",{className:"error-wrapper"},ke?F.a.createElement("div",null,F.a.createElement("h4",null,Ea(ke.get("source"))+" "+ke.get("level"),"\xa0",ge),F.a.createElement("span",{className:"message"},ke.get("message")),F.a.createElement("div",{className:"error-line"},Te?F.a.createElement("a",{onClick:oe()(Te).call(Te,null,ke.get("line"))},"Jump to line ",ke.get("line")):null)):null)};function Ea(xe){var ke;return He()(ke=(xe||"").split(" ")).call(ke,function(Te){return Te[0].toUpperCase()+ce()(Te).call(Te,1)}).join(" ")}Lo.defaultProps={jumpToLine:null};var ul=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onChangeWrapper",function(en){return Re.props.onChange(en.target.value)}),Re}return Y()(Te,[{key:"componentDidMount",value:function(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re;ge.contentTypes&&ge.contentTypes.size&&(Xe()(Re=ge.contentTypes).call(Re,ge.value)||ge.onChange(ge.contentTypes.first()))}},{key:"render",value:function(){var ge=this.props,Dt=ge.contentTypes;return Dt&&Dt.size?F.a.createElement("div",{className:"content-type-wrapper "+(ge.className||"")},F.a.createElement("select",{"aria-controls":ge.ariaControls,"aria-label":ge.ariaLabel,className:"content-type",id:ge.controlId,onChange:this.onChangeWrapper,value:ge.value||""},He()(Dt).call(Dt,function(Gn){return F.a.createElement("option",{key:Gn,value:Gn},Gn)}).toArray())):null}}]),Te}(F.a.Component);U()(ul,"defaultProps",{onChange:function(){},value:null,contentTypes:Object(zt.fromJS)(["application/json"])});var Ma=t(29),va=t.n(Ma),bs=t(54),$o=t.n(bs),Ol=t(105),dl=t.n(Ol),Ja=["fullscreen","full"],il=["hide","keepContents","mobile","tablet","desktop","large"];function Il(){for(var xe,ke=arguments.length,Te=new Array(ke),ge=0;ge<ke;ge++)Te[ge]=arguments[ge];return dl()(xe=m()(Te).call(Te,function(Re){return!!Re}).join(" ")).call(xe)}var Bl=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.fullscreen,Be=ge.full,xt=$o()(ge,Ja);if(Re)return F.a.createElement("section",xt);var Dt="swagger-container"+(Be?"-full":"");return F.a.createElement("section",va()({},xt,{className:Il(xt.className,Dt)}))}}]),Te}(F.a.Component),Na={mobile:"",tablet:"-tablet",desktop:"-desktop",large:"-hd"},Di=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.hide,xt=Re.keepContents,Dt=$o()(Re,il);if(Be&&!xt)return F.a.createElement("span",null);var en=[];for(var vn in Na)if(Object.prototype.hasOwnProperty.call(Na,vn)){var Gn=Na[vn];if(vn in this.props){var kn=this.props[vn];if(kn<1){en.push("none"+Gn);continue}en.push("block"+Gn),en.push("col-"+kn+Gn)}}Be&&en.push("hidden");var zn=Il.apply(void 0,h()(ge=[Dt.className]).call(ge,en));return F.a.createElement("section",va()({},Dt,{className:zn}))}}]),Te}(F.a.Component),vs=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("div",va()({},this.props,{className:Il(this.props.className,"wrapper")}))}}]),Te}(F.a.Component),pa=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("button",va()({},this.props,{className:Il(this.props.className,"button")}))}}]),Te}(F.a.Component);U()(pa,"defaultProps",{className:""});var Vo=function(xe){return F.a.createElement("textarea",xe)},ja=function(xe){return F.a.createElement("input",xe)},hs=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onChange",function(Dt){var en,vn,Gn=Be.props,kn=Gn.onChange,zn=Gn.multiple,jr=ce()([]).call(Dt.target.options);en=zn?He()(vn=m()(jr).call(jr,function(kr){return kr.selected})).call(vn,function(kr){return kr.value}):Dt.target.value,Be.setState({value:en}),kn&&kn(en)}),Be.state={value:ge.value?ge.value:ge.multiple?[""]:""},Be}return Y()(Te,[{key:"UNSAFE_componentWillReceiveProps",value:function(ge){ge.value!==this.props.value&&this.setState({value:ge.value})}},{key:"render",value:function(){var ge,Re,Be=this.props,xt=Be.allowedValues,Dt=Be.multiple,en=Be.allowEmptyValue,vn=Be.disabled,Gn=(null===(ge=this.state.value)||void 0===ge||null===(Re=ge.toJS)||void 0===Re?void 0:Re.call(ge))||this.state.value;return F.a.createElement("select",{className:this.props.className,multiple:Dt,value:Gn,onChange:this.onChange,disabled:vn},en?F.a.createElement("option",{value:""},"--"):null,He()(xt).call(xt,function(kn,zn){return F.a.createElement("option",{key:zn,value:String(kn)},String(kn))}))}}]),Te}(F.a.Component);U()(hs,"defaultProps",{multiple:!1,allowEmptyValue:!0});var ze=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("a",va()({},this.props,{rel:"noopener noreferrer",className:Il(this.props.className,"link")}))}}]),Te}(F.a.Component),wt=function(xe){return F.a.createElement("div",{className:"no-margin"}," ",xe.children," ")},kt=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"renderNotAnimated",value:function(){return this.props.isOpened?F.a.createElement(wt,null,this.props.children):F.a.createElement("noscript",null)}},{key:"render",value:function(){var ge=this.props,xt=ge.children;return ge.animated?F.a.createElement(wt,null,xt=ge.isOpened?xt:null):this.renderNotAnimated()}}]),Te}(F.a.Component);U()(kt,"defaultProps",{isOpened:!1,animated:!1});var tn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re,Be;I()(this,Te);for(var xt=arguments.length,Dt=new Array(xt),en=0;en<xt;en++)Dt[en]=arguments[en];return(Be=ke.call.apply(ke,h()(ge=[this]).call(ge,Dt))).setTagShown=oe()(Re=Be._setTagShown).call(Re,L()(Be)),Be}return Y()(Te,[{key:"_setTagShown",value:function(ge,Re){this.props.layoutActions.show(ge,Re)}},{key:"showOp",value:function(ge,Re){this.props.layoutActions.show(ge,Re)}},{key:"render",value:function(){var ge=this.props,Be=ge.layoutSelectors,xt=ge.layoutActions,Dt=ge.getComponent,en=ge.specSelectors.taggedOperations(),vn=Dt("Collapse");return F.a.createElement("div",null,F.a.createElement("h4",{className:"overview-title"},"Overview"),He()(en).call(en,function(Gn,kn){var zn=Gn.get("operations"),jr=["overview-tags",kn],kr=Be.isShown(jr,!0);return F.a.createElement("div",{key:"overview-"+kn},F.a.createElement("h4",{onClick:function(){return xt.show(jr,!kr)},className:"link overview-tag"}," ",kr?"-":"+",kn),F.a.createElement(vn,{isOpened:kr,animated:!0},He()(zn).call(zn,function(Gr){var ci=Gr.toObject(),Ci=ci.path,vi=ci.method,Ai=ci.id,fo="operations",po=Ai,No=Be.isShown([fo,po]);return F.a.createElement(ur,{key:Ai,path:Ci,method:vi,id:Ci+"-"+vi,shown:No,showOpId:po,showOpIdPrefix:fo,href:"#operation-".concat(po),onClick:xt.show})}).toArray()))}).toArray(),en.size<1&&F.a.createElement("h3",null," No operations defined in spec! "))}}]),Te}(F.a.Component),ur=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge){var Re,Be;return I()(this,Te),(Be=ke.call(this,ge)).onClick=oe()(Re=Be._onClick).call(Re,L()(Be)),Be}return Y()(Te,[{key:"_onClick",value:function(){var ge=this.props;(0,ge.onClick)([ge.showOpIdPrefix,ge.showOpId],!ge.shown)}},{key:"render",value:function(){var ge=this.props,Re=ge.id,Be=ge.method;return F.a.createElement(ze,{href:ge.href,onClick:this.onClick,className:"block opblock-link ".concat(ge.shown?"shown":"")},F.a.createElement("div",null,F.a.createElement("small",{className:"bold-label-".concat(Be)},Be.toUpperCase()),F.a.createElement("span",{className:"bold-label"},Re)))}}]),Te}(F.a.Component),gn=["value","defaultValue","initialValue"],xr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"componentDidMount",value:function(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}},{key:"render",value:function(){var ge=this,Re=this.props,Be=$o()(Re,gn);return F.a.createElement("input",va()({},Be,{ref:function(xt){return ge.inputRef=xt}}))}}]),Te}(F.a.Component),Zr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props;return F.a.createElement("pre",{className:"base-url"},"[ Base URL: ",ge.host,ge.basePath," ]")}}]),Te}(F.a.Component),Pr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.data,Be=ge.getComponent,xt=ge.selectedServer,Dt=ge.url,en=Re.get("name")||"the developer",vn=wi(Re.get("url"),Dt,{selectedServer:xt}),Gn=Re.get("email"),kn=Be("Link");return F.a.createElement("div",{className:"info__contact"},vn&&F.a.createElement("div",null,F.a.createElement(kn,{href:Object(tr.F)(vn),target:"_blank"},en," - Website")),Gn&&F.a.createElement(kn,{href:Object(tr.F)("mailto:".concat(Gn))},vn?"Send email to ".concat(en):"Contact ".concat(en)))}}]),Te}(F.a.Component),mi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.license,xt=ge.selectedServer,Dt=ge.url,en=(0,ge.getComponent)("Link"),vn=Re.get("name")||"License",Gn=wi(Re.get("url"),Dt,{selectedServer:xt});return F.a.createElement("div",{className:"info__license"},Gn?F.a.createElement(en,{target:"_blank",href:Object(tr.F)(Gn)},vn):F.a.createElement("span",null,vn))}}]),Te}(F.a.Component),ii=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.url,Be=(0,ge.getComponent)("Link");return F.a.createElement(Be,{target:"_blank",href:Object(tr.F)(Re)},F.a.createElement("span",{className:"url"}," ",Re))}}]),Te}(F.a.PureComponent),si=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.info,Be=ge.url,xt=ge.host,Dt=ge.basePath,en=ge.getComponent,vn=ge.externalDocs,Gn=ge.selectedServer,kn=ge.url,zn=Re.get("version"),jr=Re.get("description"),kr=Re.get("title"),Gr=wi(Re.get("termsOfService"),kn,{selectedServer:Gn}),ci=Re.get("contact"),Ci=Re.get("license"),vi=wi(vn&&vn.get("url"),kn,{selectedServer:Gn}),Ai=vn&&vn.get("description"),fo=en("Markdown",!0),po=en("Link"),No=en("VersionStamp"),wo=en("InfoUrl"),oo=en("InfoBasePath");return F.a.createElement("div",{className:"info"},F.a.createElement("hgroup",{className:"main"},F.a.createElement("h2",{className:"title"},kr,zn&&F.a.createElement(No,{version:zn})),xt||Dt?F.a.createElement(oo,{host:xt,basePath:Dt}):null,Be&&F.a.createElement(wo,{getComponent:en,url:Be})),F.a.createElement("div",{className:"description"},F.a.createElement(fo,{source:jr})),Gr&&F.a.createElement("div",{className:"info__tos"},F.a.createElement(po,{target:"_blank",href:Object(tr.F)(Gr)},"Terms of service")),ci&&ci.size?F.a.createElement(Pr,{getComponent:en,data:ci,selectedServer:Gn,url:Be}):null,Ci&&Ci.size?F.a.createElement(mi,{getComponent:en,license:Ci,selectedServer:Gn,url:Be}):null,vi?F.a.createElement(po,{className:"info__extdocs",target:"_blank",href:Object(tr.F)(vi)},Ai||vi):null)}}]),Te}(F.a.Component),bi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.specSelectors,Be=ge.getComponent,xt=ge.oas3Selectors,Dt=Re.info(),en=Re.url(),vn=Re.basePath(),Gn=Re.host(),kn=Re.externalDocs(),zn=xt.selectedServer(),jr=Be("info");return F.a.createElement("div",null,Dt&&Dt.count()?F.a.createElement(jr,{info:Dt,url:en,host:Gn,basePath:vn,externalDocs:kn,getComponent:Be,selectedServer:zn}):null)}}]),Te}(F.a.Component),Ui=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return null}}]),Te}(F.a.Component),io=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){return F.a.createElement("div",{className:"footer"})}}]),Te}(F.a.Component),vo=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onFilterChange",function(en){Re.props.layoutActions.updateFilter(en.target.value)}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.specSelectors,Be=ge.layoutSelectors,xt=(0,ge.getComponent)("Col"),Dt="loading"===Re.loadingStatus(),en="failed"===Re.loadingStatus(),vn=Be.currentFilter(),Gn=["operation-filter-input"];return en&&Gn.push("failed"),Dt&&Gn.push("loading"),F.a.createElement("div",null,null===vn||!1===vn||"false"===vn?null:F.a.createElement("div",{className:"filter-container"},F.a.createElement(xt,{className:"filter wrapper",mobile:12},F.a.createElement("input",{className:Gn.join(" "),placeholder:"Filter by tag",type:"text",onChange:this.onFilterChange,value:!0===vn||"true"===vn?"":vn,disabled:Dt}))))}}]),Te}(F.a.Component),Bi=Function.prototype,hi=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"updateValues",function(xt){var Dt=xt.param,en=xt.isExecute,vn=xt.consumesValue,Gn=void 0===vn?"":vn,kn=/xml/i.test(Gn),zn=/json/i.test(Gn),jr=Dt.get(kn?"value_xml":"value");if(void 0!==jr){var kr=!jr&&zn?"{}":jr;Be.setState({value:kr}),Be.onChange(kr,{isXml:kn,isEditBox:en})}else kn?Be.onChange(Be.sample("xml"),{isXml:kn,isEditBox:en}):Be.onChange(Be.sample(),{isEditBox:en})}),U()(L()(Be),"sample",function(xt){var Dt=Be.props,vn=(0,Dt.fn.inferSchema)(Dt.param.toJS());return Object(tr.o)(vn,xt,{includeWriteOnly:!0})}),U()(L()(Be),"onChange",function(xt,Dt){var vn=Dt.isXml;Be.setState({value:xt,isEditBox:Dt.isEditBox}),Be._onChange(xt,vn)}),U()(L()(Be),"_onChange",function(xt,Dt){(Be.props.onChange||Bi)(xt,Dt)}),U()(L()(Be),"handleOnChange",function(xt){var en=/xml/i.test(Be.props.consumesValue);Be.onChange(xt.target.value,{isXml:en,isEditBox:Be.state.isEditBox})}),U()(L()(Be),"toggleIsEditBox",function(){return Be.setState(function(xt){return{isEditBox:!xt.isEditBox}})}),Be.state={isEditBox:!1,value:""},Be}return Y()(Te,[{key:"componentDidMount",value:function(){this.updateValues.call(this,this.props)}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){this.updateValues.call(this,ge)}},{key:"render",value:function(){var ge=this.props,Re=ge.onChangeConsumes,Be=ge.param,xt=ge.isExecute,Dt=ge.specSelectors,en=ge.pathMethod,vn=ge.getConfigs,Gn=ge.getComponent,kn=Gn("Button"),zn=Gn("TextArea"),jr=Gn("highlightCode"),kr=Gn("contentType"),Gr=(Dt?Dt.parameterWithMetaByIdentity(en,Be):Be).get("errors",Object(zt.List)()),ci=Dt.contentTypeValues(en).get("requestContentType"),Ci=this.props.consumes&&this.props.consumes.size?this.props.consumes:Te.defaultProp.consumes,vi=this.state,Ai=vi.value,fo=vi.isEditBox,po=null;return Object(da.a)(Ai)&&(po="json"),F.a.createElement("div",{className:"body-param","data-param-name":Be.get("name"),"data-param-in":Be.get("in")},fo&&xt?F.a.createElement(zn,{className:"body-param__text"+(Gr.count()?" invalid":""),value:Ai,onChange:this.handleOnChange}):Ai&&F.a.createElement(jr,{className:"body-param__example",language:po,getConfigs:vn,value:Ai}),F.a.createElement("div",{className:"body-param-options"},xt?F.a.createElement("div",{className:"body-param-edit"},F.a.createElement(kn,{className:fo?"btn cancel body-param__example-edit":"btn edit body-param__example-edit",onClick:this.toggleIsEditBox},fo?"Cancel":"Edit")):null,F.a.createElement("label",{htmlFor:""},F.a.createElement("span",null,"Parameter content type"),F.a.createElement(kr,{value:ci,contentTypes:Ci,onChange:Re,className:"body-param-content-type",ariaLabel:"Parameter content type"}))))}}]),Te}($e.PureComponent);U()(hi,"defaultProp",{consumes:Object(zt.fromJS)(["application/json"]),param:Object(zt.fromJS)({}),onChange:Bi,onChangeConsumes:Bi});var Br=t(161),G=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.request,Be=ge.getConfigs,xt=Object(Br.requestSnippetGenerator_curl_bash)(Re),Dt=Be(),en=ee()(Dt,"syntaxHighlight.activated")?F.a.createElement(st.a,{language:"bash",className:"curl microlight",onWheel:this.preventYScrollingBeyondElement,style:Object(st.b)(ee()(Dt,"syntaxHighlight.theme"))},xt):F.a.createElement("textarea",{readOnly:!0,className:"curl",value:xt});return F.a.createElement("div",{className:"curl-command"},F.a.createElement("h4",null,"Curl"),F.a.createElement("div",{className:"copy-to-clipboard"},F.a.createElement(ni.CopyToClipboard,{text:xt},F.a.createElement("button",null))),F.a.createElement("div",null,en))}}]),Te}(F.a.Component),Se=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onChange",function(en){Re.setScheme(en.target.value)}),U()(L()(Re),"setScheme",function(en){var vn=Re.props;vn.specActions.setScheme(en,vn.path,vn.method)}),Re}return Y()(Te,[{key:"UNSAFE_componentWillMount",value:function(){this.setScheme(this.props.schemes.first())}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re;this.props.currentScheme&&Xe()(Re=ge.schemes).call(Re,this.props.currentScheme)||this.setScheme(ge.schemes.first())}},{key:"render",value:function(){var ge,Re=this.props,Be=Re.schemes,xt=Re.currentScheme;return F.a.createElement("label",{htmlFor:"schemes"},F.a.createElement("span",{className:"schemes-title"},"Schemes"),F.a.createElement("select",{onChange:this.onChange,value:xt},He()(ge=Be.valueSeq()).call(ge,function(Dt){return F.a.createElement("option",{value:Dt,key:Dt},Dt)}).toArray()))}}]),Te}(F.a.Component),ft=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.specActions,Be=ge.specSelectors,xt=ge.getComponent,Dt=Be.operationScheme(),en=Be.schemes(),vn=xt("schemes");return en&&en.size?F.a.createElement(vn,{currentScheme:Dt,schemes:en,specActions:Re}):null}}]),Te}(F.a.Component),Ft=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"toggleCollapsed",function(){Be.props.onToggle&&Be.props.onToggle(Be.props.modelName,!Be.state.expanded),Be.setState({expanded:!Be.state.expanded})}),U()(L()(Be),"onLoad",function(vn){if(vn&&Be.props.layoutSelectors){var Gn=Be.props.layoutSelectors.getScrollToKey();ln.a.is(Gn,Be.props.specPath)&&Be.toggleCollapsed(),Be.props.layoutActions.readyToScroll(Be.props.specPath,vn.parentElement)}});var xt=Be.props;return Be.state={expanded:xt.expanded,collapsedContent:xt.collapsedContent||Te.defaultProps.collapsedContent},Be}return Y()(Te,[{key:"componentDidMount",value:function(){var ge=this.props,Be=ge.expanded;ge.hideSelfOnExpand&&Be&&this.props.onToggle(ge.modelName,Be)}},{key:"UNSAFE_componentWillReceiveProps",value:function(ge){this.props.expanded!==ge.expanded&&this.setState({expanded:ge.expanded})}},{key:"render",value:function(){var ge=this.props,Re=ge.title,Be=ge.classes;return this.state.expanded&&this.props.hideSelfOnExpand?F.a.createElement("span",{className:Be||""},this.props.children):F.a.createElement("span",{className:Be||"",ref:this.onLoad},F.a.createElement("button",{"aria-expanded":this.state.expanded,className:"model-box-control",onClick:this.toggleCollapsed},Re&&F.a.createElement("span",{className:"pointer"},Re),F.a.createElement("span",{className:"model-toggle"+(this.state.expanded?"":" collapsed")}),!this.state.expanded&&F.a.createElement("span",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}]),Te}($e.Component);U()(Ft,"defaultProps",{collapsedContent:"{...}",expanded:!1,title:null,onToggle:function(){},hideSelfOnExpand:!1,specPath:ln.a.List([])});var Bt=t(126),In=t.n(Bt),Xn=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"activeTab",function(kn){Be.setState({activeTab:kn.target.dataset.name})});var xt=Be.props,en=xt.isExecute,vn=(0,xt.getConfigs)().defaultModelRendering,Gn=vn;return"example"!==vn&&"model"!==vn&&(Gn="example"),en&&(Gn="example"),Be.state={activeTab:Gn},Be}return Y()(Te,[{key:"UNSAFE_componentWillReceiveProps",value:function(ge){ge.isExecute&&!this.props.isExecute&&this.props.example&&this.setState({activeTab:"example"})}},{key:"render",value:function(){var ge=this.props,Re=ge.getComponent,Be=ge.specSelectors,xt=ge.schema,Dt=ge.example,en=ge.isExecute,vn=ge.getConfigs,Gn=ge.specPath,kn=ge.includeReadOnly,zn=ge.includeWriteOnly,jr=vn().defaultModelExpandDepth,kr=Re("ModelWrapper"),Gr=Re("highlightCode"),ci=In()(5).toString("base64"),Ci=In()(5).toString("base64"),vi=In()(5).toString("base64"),Ai=In()(5).toString("base64"),fo=Be.isOAS3();return F.a.createElement("div",{className:"model-example"},F.a.createElement("ul",{className:"tab",role:"tablist"},F.a.createElement("li",{className:Er()("tabitem",{active:"example"===this.state.activeTab}),role:"presentation"},F.a.createElement("button",{"aria-controls":Ci,"aria-selected":"example"===this.state.activeTab,className:"tablinks","data-name":"example",id:ci,onClick:this.activeTab,role:"tab"},en?"Edit Value":"Example Value")),xt&&F.a.createElement("li",{className:Er()("tabitem",{active:"model"===this.state.activeTab}),role:"presentation"},F.a.createElement("button",{"aria-controls":Ai,"aria-selected":"model"===this.state.activeTab,className:Er()("tablinks",{inactive:en}),"data-name":"model",id:vi,onClick:this.activeTab,role:"tab"},fo?"Schema":"Model"))),"example"===this.state.activeTab&&F.a.createElement("div",{"aria-hidden":"example"!==this.state.activeTab,"aria-labelledby":ci,"data-name":"examplePanel",id:Ci,role:"tabpanel",tabIndex:"0"},Dt||F.a.createElement(Gr,{value:"(no example available)",getConfigs:vn})),"model"===this.state.activeTab&&F.a.createElement("div",{"aria-hidden":"example"===this.state.activeTab,"aria-labelledby":vi,"data-name":"modelPanel",id:Ai,role:"tabpanel",tabIndex:"0"},F.a.createElement(kr,{schema:xt,getComponent:Re,getConfigs:vn,specSelectors:Be,expandDepth:jr,specPath:Gn,includeReadOnly:kn,includeWriteOnly:zn})))}}]),Te}(F.a.Component),Sr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onToggle",function(en,vn){Re.props.layoutActions&&Re.props.layoutActions.show(Re.props.fullPath,vn)}),Re}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,xt=Re.getConfigs,Dt=(0,Re.getComponent)("Model");return this.props.layoutSelectors&&(ge=this.props.layoutSelectors.isShown(this.props.fullPath)),F.a.createElement("div",{className:"model-box"},F.a.createElement(Dt,va()({},this.props,{getConfigs:xt,expanded:ge,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}]),Te}($e.Component),pi=t(206),Fr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"getSchemaBasePath",function(){return Re.props.specSelectors.isOAS3()?["components","schemas"]:["definitions"]}),U()(L()(Re),"getCollapsedContent",function(){return" "}),U()(L()(Re),"handleToggle",function(en,vn){var Gn,kn;Re.props.layoutActions.show(h()(Gn=[]).call(Gn,ks()(Re.getSchemaBasePath()),[en]),vn),vn&&Re.props.specActions.requestResolvedSubtree(h()(kn=[]).call(kn,ks()(Re.getSchemaBasePath()),[en]))}),U()(L()(Re),"onLoadModels",function(en){en&&Re.props.layoutActions.readyToScroll(Re.getSchemaBasePath(),en)}),U()(L()(Re),"onLoadModel",function(en){if(en){var vn,Gn=en.getAttribute("data-name");Re.props.layoutActions.readyToScroll(h()(vn=[]).call(vn,ks()(Re.getSchemaBasePath()),[Gn]),en)}}),Re}return Y()(Te,[{key:"render",value:function(){var ge,Re=this,Be=this.props,xt=Be.specSelectors,Dt=Be.getComponent,en=Be.layoutSelectors,vn=Be.layoutActions,Gn=Be.getConfigs,kn=xt.definitions(),zn=Gn(),jr=zn.docExpansion,kr=zn.defaultModelsExpandDepth;if(!kn.size||kr<0)return null;var Gr=this.getSchemaBasePath(),ci=en.isShown(Gr,kr>0&&"none"!==jr),Ci=xt.isOAS3(),vi=Dt("ModelWrapper"),Ai=Dt("Collapse"),fo=Dt("ModelCollapse"),po=Dt("JumpToPath",!0);return F.a.createElement("section",{className:ci?"models is-open":"models",ref:this.onLoadModels},F.a.createElement("h4",null,F.a.createElement("button",{"aria-expanded":ci,className:"models-control",onClick:function(){return vn.show(Gr,!ci)}},F.a.createElement("span",null,Ci?"Schemas":"Models"),F.a.createElement("svg",{width:"20",height:"20","aria-hidden":"true",focusable:"false"},F.a.createElement("use",{xlinkHref:ci?"#large-arrow-up":"#large-arrow-down"})))),F.a.createElement(Ai,{isOpened:ci},He()(ge=kn.entrySeq()).call(ge,function(No){var wo,oo=Jo()(No,1)[0],Oo=h()(wo=[]).call(wo,ks()(Gr),[oo]),Ki=ln.a.List(Oo),Vi=xt.specResolvedSubtree(Oo),Wo=xt.specJson().getIn(Oo),Po=zt.Map.isMap(Vi)?Vi:ln.a.Map(),ho=zt.Map.isMap(Wo)?Wo:ln.a.Map(),xo=Po.get("title")||ho.get("title")||oo,Ps=en.isShown(Oo,!1);Ps&&0===Po.size&&ho.size>0&&Re.props.specActions.requestResolvedSubtree(Oo);var _n=F.a.createElement(vi,{name:oo,expandDepth:kr,schema:Po||ln.a.Map(),displayName:xo,fullPath:Oo,specPath:Ki,getComponent:Dt,specSelectors:xt,getConfigs:Gn,layoutSelectors:en,layoutActions:vn,includeReadOnly:!0,includeWriteOnly:!0}),Hs=F.a.createElement("span",{className:"model-box"},F.a.createElement("span",{className:"model model-title"},xo));return F.a.createElement("div",{id:"model-".concat(oo),className:"model-container",key:"models-section-".concat(oo),"data-name":oo,ref:Re.onLoadModel},F.a.createElement("span",{className:"models-jump-to-path"},F.a.createElement(po,{specPath:Ki})),F.a.createElement(fo,{classes:"model-box",collapsedContent:Re.getCollapsedContent(oo),onToggle:Re.handleToggle,title:Hs,displayName:xo,modelName:oo,specPath:Ki,layoutSelectors:en,layoutActions:vn,hideSelfOnExpand:!0,expanded:kr>0&&Ps},_n))}).toArray()))}}]),Te}($e.Component),zr=function(xe){var ke=xe.value,Te=(0,xe.getComponent)("ModelCollapse"),ge=F.a.createElement("span",null,"Array [ ",ke.count()," ]");return F.a.createElement("span",{className:"prop-enum"},"Enum:",F.a.createElement("br",null),F.a.createElement(Te,{collapsedContent:ge},"[ ",ke.join(", ")," ]"))},Un=["schema","name","displayName","isRef","getComponent","getConfigs","depth","onToggle","expanded","specPath"],lr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be,xt,Dt=this.props,en=Dt.schema,vn=Dt.name,Gn=Dt.displayName,kn=Dt.isRef,zn=Dt.getComponent,jr=Dt.getConfigs,kr=Dt.depth,Gr=Dt.onToggle,ci=Dt.expanded,Ci=Dt.specPath,vi=$o()(Dt,Un),Ai=vi.specSelectors,fo=vi.expandDepth,po=vi.includeReadOnly,No=vi.includeWriteOnly,wo=Ai.isOAS3;if(!en)return null;var oo=jr().showExtensions,Oo=en.get("description"),Ki=en.get("properties"),Vi=en.get("additionalProperties"),Wo=en.get("title")||Gn||vn,Po=en.get("required"),ho=m()(en).call(en,function(ws,Ds){var Ws;return-1!==Ut()(Ws=["maxProperties","minProperties","nullable","example"]).call(Ws,Ds)}),xo=en.get("deprecated"),Ps=zn("JumpToPath",!0),_n=zn("Markdown",!0),Hs=zn("Model"),Pa=zn("ModelCollapse"),Oa=zn("Property"),lo=function(){return F.a.createElement("span",{className:"model-jump-to-path"},F.a.createElement(Ps,{specPath:Ci}))},ra=F.a.createElement("span",null,F.a.createElement("span",null,"{"),"...",F.a.createElement("span",null,"}"),kn?F.a.createElement(lo,null):""),ns=Ai.isOAS3()?en.get("anyOf"):null,Aa=Ai.isOAS3()?en.get("oneOf"):null,zs=Ai.isOAS3()?en.get("not"):null,La=Wo&&F.a.createElement("span",{className:"model-title"},kn&&en.get("$$ref")&&F.a.createElement("span",{className:"model-hint"},en.get("$$ref")),F.a.createElement("span",{className:"model-title__text"},Wo));return F.a.createElement("span",{className:"model"},F.a.createElement(Pa,{modelName:vn,title:La,onToggle:Gr,expanded:!!ci||kr<=fo,collapsedContent:ra},F.a.createElement("span",{className:"brace-open object"},"{"),kn?F.a.createElement(lo,null):null,F.a.createElement("span",{className:"inner-object"},F.a.createElement("table",{className:"model"},F.a.createElement("tbody",null,Oo?F.a.createElement("tr",{className:"description"},F.a.createElement("td",null,"description:"),F.a.createElement("td",null,F.a.createElement(_n,{source:Oo}))):null,xo?F.a.createElement("tr",{className:"property"},F.a.createElement("td",null,"deprecated:"),F.a.createElement("td",null,"true")):null,Ki&&Ki.size?He()(ge=m()(Re=Ki.entrySeq()).call(Re,function(ws){var Ds=Jo()(ws,2)[1];return(!Ds.get("readOnly")||po)&&(!Ds.get("writeOnly")||No)})).call(ge,function(ws){var Ds,Ws,Ba=Jo()(ws,2),Zs=Ba[0],Ya=Ba[1],$a=wo()&&Ya.get("deprecated"),Za=zt.List.isList(Po)&&Po.contains(Zs),Ha=["property-row"];return $a&&Ha.push("deprecated"),Za&&Ha.push("required"),F.a.createElement("tr",{key:Zs,className:Ha.join(" ")},F.a.createElement("td",null,Zs,Za&&F.a.createElement("span",{className:"star"},"*")),F.a.createElement("td",null,F.a.createElement(Hs,va()({key:h()(Ds=h()(Ws="object-".concat(vn,"-")).call(Ws,Zs,"_")).call(Ds,Ya)},vi,{required:Za,getComponent:zn,specPath:Ci.push("properties",Zs),getConfigs:jr,schema:Ya,depth:kr+1}))))}).toArray():null,oo?F.a.createElement("tr",null,F.a.createElement("td",null,"\xa0")):null,oo?He()(Be=en.entrySeq()).call(Be,function(ws){var Ds=Jo()(ws,2),Ws=Ds[0],Ba=Ds[1];if("x-"===ce()(Ws).call(Ws,0,2)){var Zs=Ba?Ba.toJS?Ba.toJS():Ba:null;return F.a.createElement("tr",{key:Ws,className:"extension"},F.a.createElement("td",null,Ws),F.a.createElement("td",null,x()(Zs)))}}).toArray():null,Vi&&Vi.size?F.a.createElement("tr",null,F.a.createElement("td",null,"< * >:"),F.a.createElement("td",null,F.a.createElement(Hs,va()({},vi,{required:!1,getComponent:zn,specPath:Ci.push("additionalProperties"),getConfigs:jr,schema:Vi,depth:kr+1})))):null,ns?F.a.createElement("tr",null,F.a.createElement("td",null,"anyOf ->"),F.a.createElement("td",null,He()(ns).call(ns,function(ws,Ds){return F.a.createElement("div",{key:Ds},F.a.createElement(Hs,va()({},vi,{required:!1,getComponent:zn,specPath:Ci.push("anyOf",Ds),getConfigs:jr,schema:ws,depth:kr+1})))}))):null,Aa?F.a.createElement("tr",null,F.a.createElement("td",null,"oneOf ->"),F.a.createElement("td",null,He()(Aa).call(Aa,function(ws,Ds){return F.a.createElement("div",{key:Ds},F.a.createElement(Hs,va()({},vi,{required:!1,getComponent:zn,specPath:Ci.push("oneOf",Ds),getConfigs:jr,schema:ws,depth:kr+1})))}))):null,zs?F.a.createElement("tr",null,F.a.createElement("td",null,"not ->"),F.a.createElement("td",null,F.a.createElement("div",null,F.a.createElement(Hs,va()({},vi,{required:!1,getComponent:zn,specPath:Ci.push("not"),getConfigs:jr,schema:zs,depth:kr+1}))))):null))),F.a.createElement("span",{className:"brace-close"},"}")),ho.size?He()(xt=ho.entrySeq()).call(xt,function(ws){var Ds,Ws=Jo()(ws,2),Ba=Ws[0],Zs=Ws[1];return F.a.createElement(Oa,{key:h()(Ds="".concat(Ba,"-")).call(Ds,Zs),propKey:Ba,propVal:Zs,propClass:"property"})}):null)}}]),Te}($e.Component),dr=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re=this.props,Be=Re.getComponent,xt=Re.getConfigs,Dt=Re.schema,en=Re.depth,vn=Re.expandDepth,Gn=Re.name,kn=Re.displayName,zn=Re.specPath,jr=Dt.get("description"),kr=Dt.get("items"),Gr=Dt.get("title")||kn||Gn,ci=m()(Dt).call(Dt,function(No,wo){var oo;return-1===Ut()(oo=["type","items","description","$$ref"]).call(oo,wo)}),Ci=Be("Markdown",!0),vi=Be("ModelCollapse"),Ai=Be("Model"),fo=Be("Property"),po=Gr&&F.a.createElement("span",{className:"model-title"},F.a.createElement("span",{className:"model-title__text"},Gr));return F.a.createElement("span",{className:"model"},F.a.createElement(vi,{title:po,expanded:en<=vn,collapsedContent:"[...]"},"[",ci.size?He()(ge=ci.entrySeq()).call(ge,function(No){var wo,oo=Jo()(No,2),Oo=oo[0],Ki=oo[1];return F.a.createElement(fo,{key:h()(wo="".concat(Oo,"-")).call(wo,Ki),propKey:Oo,propVal:Ki,propClass:"property"})}):null,jr?F.a.createElement(Ci,{source:jr}):ci.size?F.a.createElement("div",{className:"markdown"}):null,F.a.createElement("span",null,F.a.createElement(Ai,va()({},this.props,{getConfigs:xt,specPath:zn.push("items"),name:null,schema:kr,required:!1,depth:en+1}))),"]"))}}]),Te}($e.Component),li="property primitive",Ti=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge,Re,Be,xt=this.props,Dt=xt.schema,en=xt.getComponent,Gn=xt.name,kn=xt.displayName,zn=xt.depth,jr=(0,xt.getConfigs)().showExtensions;if(!Dt||!Dt.get)return F.a.createElement("div",null);var kr=Dt.get("type"),Gr=Dt.get("format"),ci=Dt.get("xml"),Ci=Dt.get("enum"),vi=Dt.get("title")||kn||Gn,Ai=Dt.get("description"),fo=Object(tr.m)(Dt),po=m()(Dt).call(Dt,function(Oo,Ki){var Vi;return-1===Ut()(Vi=["enum","type","format","description","$$ref"]).call(Vi,Ki)}).filterNot(function(Oo,Ki){return fo.has(Ki)}),No=en("Markdown",!0),wo=en("EnumModel"),oo=en("Property");return F.a.createElement("span",{className:"model"},F.a.createElement("span",{className:"prop"},Gn&&F.a.createElement("span",{className:"".concat(1===zn&&"model-title"," prop-name")},vi),F.a.createElement("span",{className:"prop-type"},kr),Gr&&F.a.createElement("span",{className:"prop-format"},"($",Gr,")"),po.size?He()(ge=po.entrySeq()).call(ge,function(Oo){var Ki,Vi=Jo()(Oo,2),Wo=Vi[0],Po=Vi[1];return F.a.createElement(oo,{key:h()(Ki="".concat(Wo,"-")).call(Ki,Po),propKey:Wo,propVal:Po,propClass:li})}):null,jr&&fo.size?He()(Re=fo.entrySeq()).call(Re,function(Oo){var Ki,Vi=Jo()(Oo,2),Wo=Vi[0],Po=Vi[1];return F.a.createElement(oo,{key:h()(Ki="".concat(Wo,"-")).call(Ki,Po),propKey:Wo,propVal:Po,propClass:li})}):null,Ai?F.a.createElement(No,{source:Ai}):null,ci&&ci.size?F.a.createElement("span",null,F.a.createElement("br",null),F.a.createElement("span",{className:li},"xml:"),He()(Be=ci.entrySeq()).call(Be,function(Oo){var Ki,Vi=Jo()(Oo,2),Wo=Vi[0],Po=Vi[1];return F.a.createElement("span",{key:h()(Ki="".concat(Wo,"-")).call(Ki,Po),className:li},F.a.createElement("br",null),"\xa0\xa0\xa0",Wo,": ",String(Po))}).toArray()):null,Ci&&F.a.createElement(wo,{value:Ci,getComponent:en})))}}]),Te}($e.Component),Ao=function(xe){var ke=xe.propKey,Te=xe.propVal;return F.a.createElement("span",{className:xe.propClass},F.a.createElement("br",null),ke,": ",String(Te))},Qo=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.onTryoutClick,xt=ge.onResetClick,vn=ge.isOAS3&&ge.hasUserEditedBody;return F.a.createElement("div",{className:vn?"try-out btn-group":"try-out"},ge.enabled?F.a.createElement("button",{className:"btn try-out__btn cancel",onClick:ge.onCancelClick},"Cancel"):F.a.createElement("button",{className:"btn try-out__btn",onClick:Re},"Try it out "),vn&&F.a.createElement("button",{className:"btn try-out__btn reset",onClick:xt},"Reset"))}}]),Te}(F.a.Component);U()(Qo,"defaultProps",{onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1});var jo=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Be=ge.isSwagger2,xt=ge.isOAS3,Dt=ge.alsoShow;return ge.bypass?F.a.createElement("div",null,this.props.children):Be&&xt?F.a.createElement("div",{className:"version-pragma"},Dt,F.a.createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},F.a.createElement("div",null,F.a.createElement("h3",null,"Unable to render this definition"),F.a.createElement("p",null,F.a.createElement("code",null,"swagger")," and ",F.a.createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),F.a.createElement("p",null,"Supported version fields are ",F.a.createElement("code",null,"swagger: ",'"2.0"')," and those that match ",F.a.createElement("code",null,"openapi: 3.0.n")," (for example, ",F.a.createElement("code",null,"openapi: 3.0.0"),").")))):Be||xt?F.a.createElement("div",null,this.props.children):F.a.createElement("div",{className:"version-pragma"},Dt,F.a.createElement("div",{className:"version-pragma__message version-pragma__message--missing"},F.a.createElement("div",null,F.a.createElement("h3",null,"Unable to render this definition"),F.a.createElement("p",null,"The provided definition does not specify a valid version field."),F.a.createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",F.a.createElement("code",null,"swagger: ",'"2.0"')," and those that match ",F.a.createElement("code",null,"openapi: 3.0.n")," (for example, ",F.a.createElement("code",null,"openapi: 3.0.0"),")."))))}}]),Te}(F.a.PureComponent);U()(jo,"defaultProps",{alsoShow:null,children:null,bypass:!1});var uo=function(xe){return F.a.createElement("small",null,F.a.createElement("pre",{className:"version"}," ",xe.version," "))},eo=function(xe){var ke=xe.enabled,ge=xe.text;return F.a.createElement("a",{className:"nostyle",onClick:ke?function(Re){return Re.preventDefault()}:null,href:ke?"#/".concat(xe.path):null},F.a.createElement("span",null,ge))},Ho=function(){return F.a.createElement("div",null,F.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",className:"svg-assets"},F.a.createElement("defs",null,F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"unlocked"},F.a.createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"})),F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"locked"},F.a.createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"})),F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"close"},F.a.createElement("path",{d:"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"})),F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow"},F.a.createElement("path",{d:"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"})),F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-down"},F.a.createElement("path",{d:"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"})),F.a.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-up"},F.a.createElement("path",{d:"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z"})),F.a.createElement("symbol",{viewBox:"0 0 24 24",id:"jump-to"},F.a.createElement("path",{d:"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"})),F.a.createElement("symbol",{viewBox:"0 0 24 24",id:"expand"},F.a.createElement("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"})))))},Zi=t(205),na=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.errSelectors,Be=ge.specSelectors,xt=ge.getComponent,Dt=xt("SvgAssets"),en=xt("InfoContainer",!0),vn=xt("VersionPragmaFilter"),Gn=xt("operations",!0),kn=xt("Models",!0),zn=xt("Row"),jr=xt("Col"),kr=xt("errors",!0),Gr=xt("ServersContainer",!0),ci=xt("SchemesContainer",!0),Ci=xt("AuthorizeBtnContainer",!0),vi=xt("FilterContainer",!0),Ai=xt("ErrorBoundary",!0),fo=Be.isSwagger2(),po=Be.isOAS3(),No=!Be.specStr(),wo=Be.loadingStatus(),oo=null;if("loading"===wo&&(oo=F.a.createElement("div",{className:"info"},F.a.createElement("div",{className:"loading-container"},F.a.createElement("div",{className:"loading"})))),"failed"===wo&&(oo=F.a.createElement("div",{className:"info"},F.a.createElement("div",{className:"loading-container"},F.a.createElement("h4",{className:"title"},"Failed to load API definition."),F.a.createElement(kr,null)))),"failedConfig"===wo){var Oo=Re.lastError(),Ki=Oo?Oo.get("message"):"";oo=F.a.createElement("div",{className:"info failed-config"},F.a.createElement("div",{className:"loading-container"},F.a.createElement("h4",{className:"title"},"Failed to load remote configuration."),F.a.createElement("p",null,Ki)))}if(!oo&&No&&(oo=F.a.createElement("h4",null,"No API definition provided.")),oo)return F.a.createElement("div",{className:"swagger-ui"},F.a.createElement("div",{className:"loading-container"},oo));var Vi=Be.servers(),Wo=Be.schemes(),Po=Vi&&Vi.size,ho=Wo&&Wo.size,xo=!!Be.securityDefinitions();return F.a.createElement("div",{className:"swagger-ui"},F.a.createElement(Ai,{targetName:"BaseLayout"},F.a.createElement(Dt,null),F.a.createElement(vn,{isSwagger2:fo,isOAS3:po,alsoShow:F.a.createElement(kr,null)},F.a.createElement(kr,null),F.a.createElement(zn,{className:"information-container"},F.a.createElement(jr,{mobile:12},F.a.createElement(en,null))),Po||ho||xo?F.a.createElement("div",{className:"scheme-container"},F.a.createElement(jr,{className:"schemes wrapper",mobile:12},Po?F.a.createElement(Gr,null):null,ho?F.a.createElement(ci,null):null,xo?F.a.createElement(Ci,null):null)):null,F.a.createElement(vi,null),F.a.createElement(zn,null,F.a.createElement(jr,{mobile:12,desktop:12},F.a.createElement(Gn,null))),F.a.createElement(zn,null,F.a.createElement(jr,{mobile:12,desktop:12},F.a.createElement(kn,null))))))}}]),Te}(F.a.Component),ha=t(326),fl=t.n(ha),Hn={value:"",onChange:function(){},schema:{},keyName:"",required:!1,errors:Object(zt.List)()},Es=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){return I()(this,Te),ke.apply(this,arguments)}return Y()(Te,[{key:"componentDidMount",value:function(){var ge=this.props,Re=ge.dispatchInitialValue,xt=ge.onChange;Re?xt(ge.value):!1===Re&&xt("")}},{key:"render",value:function(){var ge,Re=this.props,Be=Re.schema,xt=Re.errors,Dt=Re.value,en=Re.onChange,vn=Re.getComponent,Gn=Re.fn,kn=Re.disabled,zn=Be&&Be.get?Be.get("format"):null,jr=Be&&Be.get?Be.get("type"):null,Gr=jr?vn(zn?h()(ge="JsonSchema_".concat(jr,"_")).call(ge,zn):"JsonSchema_".concat(jr),!1,{failSilently:!0}):vn("JsonSchema_string");return Gr||(Gr=vn("JsonSchema_string")),F.a.createElement(Gr,va()({},this.props,{errors:xt,fn:Gn,getComponent:vn,value:Dt,onChange:en,schema:Be,disabled:kn}))}}]),Te}($e.Component);U()(Es,"defaultProps",Hn);var Ll=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onChange",function(en){var vn=Re.props.schema&&"file"===Re.props.schema.get("type")?en.target.files[0]:en.target.value;Re.props.onChange(vn,Re.props.keyName)}),U()(L()(Re),"onEnumChange",function(en){return Re.props.onChange(en)}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.getComponent,Be=ge.value,xt=ge.schema,Dt=ge.errors,en=ge.required,vn=ge.description,Gn=ge.disabled,kn=xt&&xt.get?xt.get("enum"):null,zn=xt&&xt.get?xt.get("format"):null,jr=xt&&xt.get?xt.get("type"):null,kr=xt&&xt.get?xt.get("in"):null;if(Be||(Be=""),Dt=Dt.toJS?Dt.toJS():[],kn){var Gr=Re("Select");return F.a.createElement(Gr,{className:Dt.length?"invalid":"",title:Dt.length?Dt:"",allowedValues:kn,value:Be,allowEmptyValue:!en,disabled:Gn,onChange:this.onEnumChange})}var ci=Gn||kr&&"formData"===kr&&!("FormData"in window),Ci=Re("Input");return jr&&"file"===jr?F.a.createElement(Ci,{type:"file",className:Dt.length?"invalid":"",title:Dt.length?Dt:"",onChange:this.onChange,disabled:ci}):F.a.createElement(fl.a,{type:zn&&"password"===zn?"password":"text",className:Dt.length?"invalid":"",title:Dt.length?Dt:"",value:Be,minLength:0,debounceTimeout:350,placeholder:vn,onChange:this.onChange,disabled:ci})}}]),Te}($e.Component);U()(Ll,"defaultProps",Hn);var Hl=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(ge,Re){var Be;return I()(this,Te),Be=ke.call(this,ge,Re),U()(L()(Be),"onChange",function(){Be.props.onChange(Be.state.value)}),U()(L()(Be),"onItemChange",function(xt,Dt){Be.setState(function(en){return{value:en.value.set(Dt,xt)}},Be.onChange)}),U()(L()(Be),"removeItem",function(xt){Be.setState(function(Dt){return{value:Dt.value.delete(xt)}},Be.onChange)}),U()(L()(Be),"addItem",function(){var xt=Fl(Be.state.value);Be.setState(function(){return{value:xt.push(Object(tr.o)(Be.state.schema.get("items"),!1,{includeWriteOnly:!0}))}},Be.onChange)}),U()(L()(Be),"onEnumChange",function(xt){Be.setState(function(){return{value:xt}},Be.onChange)}),Be.state={value:Fl(ge.value),schema:ge.schema},Be}return Y()(Te,[{key:"UNSAFE_componentWillReceiveProps",value:function(ge){var Re=Fl(ge.value);Re!==this.state.value&&this.setState({value:Re}),ge.schema!==this.state.schema&&this.setState({schema:ge.schema})}},{key:"render",value:function(){var ge,Re=this,Be=this.props,xt=Be.getComponent,Dt=Be.required,en=Be.schema,vn=Be.errors,Gn=Be.fn,kn=Be.disabled;vn=vn.toJS?vn.toJS():Me()(vn)?vn:[];var zn,jr,kr=m()(vn).call(vn,function(Ki){return"string"==typeof Ki}),Gr=He()(ge=m()(vn).call(vn,function(Ki){return void 0!==Ki.needRemove})).call(ge,function(Ki){return Ki.error}),ci=this.state.value,Ci=!!(ci&&ci.count&&ci.count()>0),vi=en.getIn(["items","enum"]),Ai=en.getIn(["items","type"]),fo=en.getIn(["items","format"]),po=en.get("items"),No=!1,wo="file"===Ai||"string"===Ai&&"binary"===fo;if(Ai&&fo?zn=xt(h()(jr="JsonSchema_".concat(Ai,"_")).call(jr,fo)):"boolean"!==Ai&&"array"!==Ai&&"object"!==Ai||(zn=xt("JsonSchema_".concat(Ai))),zn||wo||(No=!0),vi){var oo=xt("Select");return F.a.createElement(oo,{className:vn.length?"invalid":"",title:vn.length?vn:"",multiple:!0,value:ci,disabled:kn,allowedValues:vi,allowEmptyValue:!Dt,onChange:this.onEnumChange})}var Oo=xt("Button");return F.a.createElement("div",{className:"json-schema-array"},Ci?He()(ci).call(ci,function(Ki,Vi){var Wo,Po=Object(zt.fromJS)(ks()(He()(Wo=m()(vn).call(vn,function(ho){return ho.index===Vi})).call(Wo,function(ho){return ho.error})));return F.a.createElement("div",{key:Vi,className:"json-schema-form-item"},wo?F.a.createElement(As,{value:Ki,onChange:function(ho){return Re.onItemChange(ho,Vi)},disabled:kn,errors:Po,getComponent:xt}):No?F.a.createElement(mo,{value:Ki,onChange:function(ho){return Re.onItemChange(ho,Vi)},disabled:kn,errors:Po}):F.a.createElement(zn,va()({},Re.props,{value:Ki,onChange:function(ho){return Re.onItemChange(ho,Vi)},disabled:kn,errors:Po,schema:po,getComponent:xt,fn:Gn})),kn?null:F.a.createElement(Oo,{className:"btn btn-sm json-schema-form-item-remove ".concat(Gr.length?"invalid":null),title:Gr.length?Gr:"",onClick:function(){return Re.removeItem(Vi)}}," - "))}):null,kn?null:F.a.createElement(Oo,{className:"btn btn-sm json-schema-form-item-add ".concat(kr.length?"invalid":null),title:kr.length?kr:"",onClick:this.addItem},"Add ",Ai?"".concat(Ai," "):"","item"))}}]),Te}($e.PureComponent);U()(Hl,"defaultProps",Hn);var mo=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onChange",function(en){Re.props.onChange(en.target.value,Re.props.keyName)}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.value,Be=ge.errors,xt=ge.description,Dt=ge.disabled;return Re||(Re=""),Be=Be.toJS?Be.toJS():[],F.a.createElement(fl.a,{type:"text",className:Be.length?"invalid":"",title:Be.length?Be:"",value:Re,minLength:0,debounceTimeout:350,placeholder:xt,onChange:this.onChange,disabled:Dt})}}]),Te}($e.Component);U()(mo,"defaultProps",Hn);var As=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onFileChange",function(en){Re.props.onChange(en.target.files[0],Re.props.keyName)}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Be=ge.errors,xt=ge.disabled,Dt=(0,ge.getComponent)("Input"),en=xt||!("FormData"in window);return F.a.createElement(Dt,{type:"file",className:Be.length?"invalid":"",title:Be.length?Be:"",onChange:this.onFileChange,disabled:en})}}]),Te}($e.Component);U()(As,"defaultProps",Hn);var qc=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge,Re;I()(this,Te);for(var Be=arguments.length,xt=new Array(Be),Dt=0;Dt<Be;Dt++)xt[Dt]=arguments[Dt];return Re=ke.call.apply(ke,h()(ge=[this]).call(ge,xt)),U()(L()(Re),"onEnumChange",function(en){return Re.props.onChange(en)}),Re}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Re=ge.getComponent,Be=ge.value,xt=ge.errors,Dt=ge.schema,en=ge.required,vn=ge.disabled;xt=xt.toJS?xt.toJS():[];var Gn=Dt&&Dt.get?Dt.get("enum"):null,kn=!Gn||!en,zn=!Gn&&Object(zt.fromJS)(["true","false"]),jr=Re("Select");return F.a.createElement(jr,{className:xt.length?"invalid":"",title:xt.length?xt:"",value:String(Be),disabled:vn,allowedValues:Gn||zn,allowEmptyValue:kn,onChange:this.onEnumChange})}}]),Te}($e.Component);U()(qc,"defaultProps",Hn);var yc=function(xe){return He()(xe).call(xe,function(ke){var Te,Re="string"==typeof ke?ke:"string"==typeof ke.error?ke.error:null;if(!(void 0!==ke.propKey?ke.propKey:ke.index)&&Re)return Re;for(var Be=ke.error,xt="/".concat(ke.propKey);"object"===l()(Be);){var Dt=void 0!==Be.propKey?Be.propKey:Be.index;if(void 0===Dt||(xt+="/".concat(Dt),!Be.error))break;Be=Be.error}return h()(Te="".concat(xt,": ")).call(Te,Be)})},fc=function(xe){nt()(Te,xe);var ke=it()(Te);function Te(){var ge;return I()(this,Te),ge=ke.call(this),U()(L()(ge),"onChange",function(Re){ge.props.onChange(Re)}),U()(L()(ge),"handleOnChange",function(Re){ge.onChange(Re.target.value)}),ge}return Y()(Te,[{key:"render",value:function(){var ge=this.props,Be=ge.value,xt=ge.errors,Dt=ge.disabled,en=(0,ge.getComponent)("TextArea");return xt=xt.toJS?xt.toJS():Me()(xt)?xt:[],F.a.createElement("div",null,F.a.createElement(en,{className:Er()({invalid:xt.length}),title:xt.length?yc(xt).join(", "):"",value:Object(tr.I)(Be),disabled:Dt,onChange:this.handleOnChange}))}}]),Te}($e.PureComponent);function Fl(xe){return zt.List.isList(xe)?xe:Me()(xe)?Object(zt.fromJS)(xe):Object(zt.List)()}U()(fc,"defaultProps",Hn);var bl=function(){return[jt.default,yn.default,ut.default,mn.default,Dn.default,En.default,Fn.default,jn.default,{components:{App:sn,authorizationPopup:An,authorizeBtn:Bn,AuthorizeBtnContainer:ir,authorizeOperationBtn:mr,auths:_r,AuthItem:Nr,authError:br,oauth2:rt,apiKeyAuth:Jn,basicAuth:nr,clear:bt,liveResponse:or,InitializedInput:xr,info:si,InfoContainer:bi,JumpToPath:Ui,onlineValidatorBadge:Zn.a,operations:ai,operation:Fi,OperationSummary:qi,OperationSummaryMethod:to,OperationSummaryPath:Ro,highlightCode:Do,responses:gi,response:xa,ResponseExtension:Ra,responseBody:Sa,parameters:an,parameterRow:Wt,execute:Yo,headers:ms,errors:ss,contentType:ul,overview:tn,footer:io,FilterContainer:vo,ParamBody:hi,curl:G,schemes:Se,SchemesContainer:ft,modelExample:Xn,ModelWrapper:Sr,ModelCollapse:Ft,Model:pi.a,Models:Fr,EnumModel:zr,ObjectModel:lr,ArrayModel:dr,PrimitiveModel:Ti,Property:Ao,TryItOutButton:Qo,Markdown:Zi.a,BaseLayout:na,VersionPragmaFilter:jo,VersionStamp:uo,OperationExt:es,OperationExtRow:ua,ParameterExt:Nt,ParameterIncludeEmpty:ye,OperationTag:go,OperationContainer:Nn,DeepLink:eo,InfoUrl:ii,InfoBasePath:Zr,SvgAssets:Ho,Example:Mr,ExamplesSelect:Mi,ExamplesSelectValueRetainer:Kr}},{components:e},mt.default,{components:s},Tt.default,et.default,hn.default,Qn.default,Ir.default,Xt.default]},ql=t(293);function kl(){return[bl,ql.default]}var Yl=t(314);function Ot(xe){var ke;Ht.a.versions=Ht.a.versions||{},Ht.a.versions.swaggerUi={version:"4.1.3",gitRevision:"g01a3e55",gitDirty:!0,buildTimestamp:"Fri, 10 Dec 2021 13:01:43 GMT"};var Te={dom_id:null,domNode:null,spec:{},url:"",urls:null,layout:"BaseLayout",docExpansion:"list",maxDisplayedTags:null,filter:null,validatorUrl:"https://validator.swagger.io/validator",oauth2RedirectUrl:h()(ke="".concat(window.location.protocol,"//")).call(ke,window.location.host,"/oauth2-redirect.html"),persistAuthorization:!1,configs:{},custom:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:function(zn){return zn},responseInterceptor:function(zn){return zn},showMutatedRequest:!0,defaultModelRendering:"example",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:void 0,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:"cURL (bash)",syntax:"bash"},curl_powershell:{title:"cURL (PowerShell)",syntax:"powershell"},curl_cmd:{title:"cURL (CMD)",syntax:"bash"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:["get","put","post","delete","options","head","patch","trace"],queryConfigEnabled:!1,presets:[kl],plugins:[],pluginsOptions:{pluginLoadType:"legacy"},initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:"agate"}},ge=xe.queryConfigEnabled?Object(tr.C)():{},Re=xe.domNode;delete xe.domNode;var Be=H()({},Te,xe,ge),xt={system:{configs:Be.configs},plugins:Be.presets,pluginsOptions:Be.pluginsOptions,state:H()({layout:{layout:Be.layout,filter:m()(Be)},spec:{spec:"",url:Be.url},requestSnippets:Be.requestSnippets},Be.initialState)};if(Be.initialState)for(var Dt in Be.initialState)Object.prototype.hasOwnProperty.call(Be.initialState,Dt)&&void 0===Be.initialState[Dt]&&delete xt.state[Dt];var en=new Kt(xt);en.register([Be.plugins,function(){return{fn:Be.fn,components:Be.components,state:Be.state}}]);var vn=en.getSystem(),Gn=function(zn){var jr=vn.specSelectors.getLocalConfig?vn.specSelectors.getLocalConfig():{},kr=H()({},jr,Be,zn||{},ge);if(Re&&(kr.domNode=Re),en.setConfigs(kr),vn.configsActions.loaded(),null!==zn&&(!ge.url&&"object"===l()(kr.spec)&&C()(kr.spec).length?(vn.specActions.updateUrl(""),vn.specActions.updateLoadingStatus("success"),vn.specActions.updateSpec(x()(kr.spec))):vn.specActions.download&&kr.url&&!kr.urls&&(vn.specActions.updateUrl(kr.url),vn.specActions.download(kr.url))),kr.domNode)vn.render(kr.domNode,"App");else if(kr.dom_id){var Gr=document.querySelector(kr.dom_id);vn.render(Gr,"App")}else null===kr.dom_id||null===kr.domNode||console.error("Skipped rendering: no `dom_id` or `domNode` was specified");return vn},kn=ge.config||Be.configUrl;return kn&&vn.specActions&&vn.specActions.getConfigByUrl?(vn.specActions.getConfigByUrl({url:kn,loadRemoteConfig:!0,requestInterceptor:Be.requestInterceptor,responseInterceptor:Be.responseInterceptor},Gn),vn):Gn()}Ot.presets={apis:kl},Ot.plugins=Yl.default,o.default=Ot}]).default},66265:(Ge,g,o)=>{"use strict";o.d(g,{B:()=>l});var t=o(12057),e=o(6283),s=o(44466),a=o(74788);let l=(()=>{class u{}return u.\u0275fac=function(_){return new(_||u)},u.\u0275mod=a.oAB({type:u}),u.\u0275inj=a.cJS({imports:[[t.ez,s.m,e.Bz]]}),u})()},98056:(Ge,g,o)=>{"use strict";o.d(g,{p:()=>z});var t=o(64762),e=o(58497),s=o(25917),a=o(19773),l=o(93523),u=o(74788);let h=class{constructor(M){this.http=M,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get(M,I){return this.http.get(`${this.url}/${M}/${I}`).pipe((0,a.zg)(J=>(0,s.of)(J.counters)))}};h.\u0275fac=function(M){return new(M||h)(u.LFG(e.eN))},h.\u0275prov=u.Yz7({token:h,factory:h.\u0275fac,providedIn:"root"}),h=(0,t.gn)([l.o,(0,t.w6)("design:paramtypes",[e.eN])],h);var _=o(12057),m=o(64337),b=o(34501),C=o(66369);const D=["valueTpl"];function x(U,M){if(1&U&&(u._uU(0),u.ALo(1,"dimless")),2&U){const I=M.row;u.AsE(" ",u.lcZ(1,2,I.value)," ",I.unit," ")}}function j(U,M){if(1&U){const I=u.EpF();u.TgZ(0,"cd-table",2),u.NdJ("fetchData",function(Y){return u.CHM(I),u.oxw().getCounters(Y)}),u.YNc(1,x,2,4,"ng-template",null,3,u.W1O),u.qZA()}if(2&U){const I=u.oxw();u.Q6J("data",I.counters)("columns",I.columns)("autoSave",!1)}}function H(U,M){1&U&&(u.TgZ(0,"cd-alert-panel",4),u.SDv(1,5),u.qZA())}let z=(()=>{class U{constructor(I){this.performanceCounterService=I,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:1},{name:"Description",prop:"description",flexGrow:1},{name:"Value",prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(I){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(J=>{this.counters=J},J=>{404===J.status?(J.preventDefault(),this.counters=null):I.error()})}}return U.\u0275fac=function(I){return new(I||U)(u.Y36(h))},U.\u0275cmp=u.Xpm({type:U,selectors:[["cd-table-performance-counter"]],viewQuery:function(I,J){if(1&I&&u.Gf(D,5),2&I){let Y;u.iGM(Y=u.CRH())&&(J.valueTpl=Y.first)}},inputs:{serviceType:"serviceType",serviceId:"serviceId"},decls:3,vars:2,consts:function(){let M;return M="Performance counters not available",[["columnMode","flex",3,"data","columns","autoSave","fetchData",4,"ngIf","ngIfElse"],["warning",""],["columnMode","flex",3,"data","columns","autoSave","fetchData"],["valueTpl",""],["type","warning"],M]},template:function(I,J){if(1&I&&(u.YNc(0,j,3,3,"cd-table",0),u.YNc(1,H,2,0,"ng-template",null,1,u.W1O)),2&I){const Y=u.MAs(2);u.Q6J("ngIf",J.counters)("ngIfElse",Y)}},directives:[_.O5,m.a,b.G],pipes:[C.n],styles:[""]}),U})()},370:(Ge,g,o)=>{"use strict";o.d(g,{t:()=>h});var t=o(12057),e=o(38549),s=o(37496),a=o(2149),l=o(44466),u=o(74788);let h=(()=>{class _{}return _.\u0275fac=function(b){return new(b||_)},_.\u0275mod=u.oAB({type:_}),_.\u0275inj=u.cJS({imports:[[t.ez,a.t,l.m,e.Oz,s.b]]}),_})()},49671:(Ge,g,o)=>{"use strict";o.d(g,{j:()=>u});var t=o(23815),e=o.n(t),s=o(370);class a{constructor(_){if(this.type=_,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return a.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case a.CATEGORY_CLEAN:this.states=["active","clean"];break;case a.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case a.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}a.CATEGORY_CLEAN="clean",a.CATEGORY_WORKING="working",a.CATEGORY_WARNING="warning",a.CATEGORY_UNKNOWN="unknown",a.VALID_CATEGORIES=[a.CATEGORY_CLEAN,a.CATEGORY_WORKING,a.CATEGORY_WARNING,a.CATEGORY_UNKNOWN];var l=o(74788);let u=(()=>{class h{constructor(){this.categories=this.createCategories()}getAllTypes(){return a.VALID_CATEGORIES}getTypeByStates(m){const b=this.getPgStatesFromText(m);if(0===b.length)return a.CATEGORY_UNKNOWN;const C=e().zipObject(a.VALID_CATEGORIES,a.VALID_CATEGORIES.map(x=>e().intersection(this.categories[x].states,b).length));if(C[a.CATEGORY_WARNING]>0)return a.CATEGORY_WARNING;const D=C[a.CATEGORY_WORKING];return b.length>C[a.CATEGORY_CLEAN]+D?a.CATEGORY_UNKNOWN:D?a.CATEGORY_WORKING:a.CATEGORY_CLEAN}createCategories(){return e().zipObject(a.VALID_CATEGORIES,a.VALID_CATEGORIES.map(m=>new a(m)))}getPgStatesFromText(m){const b=m.replace(/[^a-z_]+/g," ").trim().split(" ");return e().uniq(b)}}return h.\u0275fac=function(m){return new(m||h)},h.\u0275prov=l.Yz7({token:h,factory:h.\u0275fac,providedIn:s.t}),h})()},49552:(Ge,g,o)=>{"use strict";o.r(g),o.d(g,{AuthModule:()=>Ke,RoutedAuthModule:()=>Vt});var t=o(12057),e=o(24751),s=o(6283),a=o(38549),l=o(37496),u=o(79512),h=o(44466),_=o(23815),m=o.n(_),b=o(35758),C=o(18001),D=o(93614),x=o(95463),j=o(77205),H=o(97161),z=(()=>((z||(z={})).editing="editing",z))();class U{}var M=o(74788),I=o(25917),J=o(19773),Y=o(58497);let ie=(()=>{class Ct{constructor(bt){this.http=bt}list(){return this.http.get("api/role")}delete(bt){return this.http.delete(`api/role/${bt}`)}get(bt){return this.http.get(`api/role/${bt}`)}create(bt){return this.http.post("api/role",bt)}clone(bt,We){return this.http.post(`api/role/${bt}/clone`,{new_name:We})}update(bt){return this.http.put(`api/role/${bt.name}`,bt)}exists(bt){return this.list().pipe((0,J.zg)(We=>{const $t=We.some(or=>or.name===bt);return(0,I.of)($t)}))}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.LFG(Y.eN))},Ct.\u0275prov=M.Yz7({token:Ct,factory:Ct.\u0275fac,providedIn:"root"}),Ct})(),oe=(()=>{class Ct{constructor(bt){this.http=bt}list(){return this.http.get("ui-api/scope")}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.LFG(Y.eN))},Ct.\u0275prov=M.Yz7({token:Ct,factory:Ct.\u0275fac,providedIn:"root"}),Ct})();var fe=o(63622),ne=o(41582),he=o(56310),ce=o(87925),Ae=o(94276),Me=o(82945),Oe=o(64337),be=o(30839),ue=o(10545);const He=["headerPermissionCheckboxTpl"],$e=["cellScopeCheckboxTpl"],F=["cellPermissionCheckboxTpl"];function je(Ct,rt){1&Ct&&(M.TgZ(0,"span",25),M.SDv(1,26),M.qZA())}function Et(Ct,rt){1&Ct&&(M.TgZ(0,"span",25),M.SDv(1,27),M.qZA())}const lt=function(Ct){return{required:Ct}};function nn(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",4),M.TgZ(1,"form",5,6),M.TgZ(3,"div",7),M.TgZ(4,"div",8),M.SDv(5,9),M.ALo(6,"titlecase"),M.ALo(7,"upperFirst"),M.qZA(),M.TgZ(8,"div",10),M.TgZ(9,"div",11),M.TgZ(10,"label",12),M.SDv(11,13),M.qZA(),M.TgZ(12,"div",14),M._UZ(13,"input",15),M.YNc(14,je,2,0,"span",16),M.YNc(15,Et,2,0,"span",16),M.qZA(),M.qZA(),M.TgZ(16,"div",11),M.TgZ(17,"label",17),M.SDv(18,18),M.qZA(),M.TgZ(19,"div",14),M._UZ(20,"input",19),M.qZA(),M.qZA(),M.TgZ(21,"div",11),M.TgZ(22,"label",20),M.SDv(23,21),M.qZA(),M.TgZ(24,"div",14),M._UZ(25,"cd-table",22),M.qZA(),M.qZA(),M.qZA(),M.TgZ(26,"div",23),M.TgZ(27,"cd-form-button-panel",24),M.NdJ("submitActionEvent",function(){return M.CHM(bt),M.oxw().submit()}),M.ALo(28,"titlecase"),M.ALo(29,"upperFirst"),M.qZA(),M.qZA(),M.qZA(),M.qZA(),M.qZA()}if(2&Ct){const bt=M.MAs(2),We=M.oxw();M.xp6(1),M.Q6J("formGroup",We.roleForm),M.xp6(6),M.pQV(M.lcZ(6,15,We.action))(M.lcZ(7,17,We.resource)),M.QtT(5),M.xp6(3),M.Q6J("ngClass",M.VKq(23,lt,We.mode!==We.roleFormMode.editing)),M.xp6(4),M.Q6J("ngIf",We.roleForm.showError("name",bt,"required")),M.xp6(1),M.Q6J("ngIf",We.roleForm.showError("name",bt,"notUnique")),M.xp6(10),M.Q6J("data",We.scopes_permissions)("columns",We.columns)("toolHeader",!1)("autoReload",!1)("autoSave",!1)("footer",!1)("limit",0),M.xp6(2),M.Q6J("form",We.roleForm)("submitText",M.lcZ(28,19,We.action)+" "+M.lcZ(29,21,We.resource))}}function St(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",28),M.TgZ(1,"input",29),M.NdJ("change",function($t){const or=M.CHM(bt),Zn=or.row,Vr=or.column;return M.oxw().onClickCellCheckbox(Zn.scope,Vr.prop,$t)}),M.qZA(),M.TgZ(2,"label",30),M._uU(3),M.qZA(),M.qZA()}if(2&Ct){const bt=rt.row,We=rt.value,$t=M.oxw();M.xp6(1),M.MGl("id","scope_",bt.scope,""),M.Q6J("checked",$t.isRowChecked(bt.scope)),M.xp6(1),M.MGl("for","scope_",bt.scope,""),M.xp6(1),M.Oqu(We)}}function At(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",28),M.TgZ(1,"input",31),M.NdJ("change",function($t){const or=M.CHM(bt),Zn=or.row,Vr=or.column;return M.oxw().onClickCellCheckbox(Zn.scope,Vr.prop,$t)}),M.qZA(),M._UZ(2,"label",32),M.qZA()}if(2&Ct){const bt=rt.column,We=rt.row,$t=rt.value;M.xp6(1),M.Q6J("checked",$t)("id",We.scope+"-"+bt.prop),M.xp6(1),M.Q6J("for",We.scope+"-"+bt.prop)}}function Qe(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",28),M.TgZ(1,"input",29),M.NdJ("change",function($t){const Zn=M.CHM(bt).column;return M.oxw().onClickHeaderCheckbox(Zn.prop,$t)}),M.qZA(),M.TgZ(2,"label",33),M._uU(3),M.qZA(),M.qZA()}if(2&Ct){const bt=rt.column,We=M.oxw();M.xp6(1),M.MGl("id","header_",bt.prop,""),M.Q6J("checked",We.isHeaderChecked(bt.prop)),M.xp6(1),M.MGl("for","header_",bt.prop,""),M.xp6(1),M.Oqu(bt.name)}}let It=(()=>{class Ct extends D.E{constructor(bt,We,$t,or,Zn,Vr){super(),this.route=bt,this.router=We,this.roleService=$t,this.scopeService=or,this.notificationService=Zn,this.actionLabels=Vr,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=z,this.resource="role",this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new x.d({name:new e.NI("",{validators:[e.kI.required],asyncValidators:[j.h.unique(this.roleService.exists,this.roleService)]}),description:new e.NI(""),scopes_permissions:new e.NI({})})}ngOnInit(){this.columns=[{prop:"scope",name:"All",flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:"Read",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:"Create",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:"Update",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:"Delete",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(bt=>{this.scopes=bt,this.roleForm.get("scopes_permissions").setValue({}),this.loadingReady()})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(bt=>{const We=[];We.push(this.scopeService.list()),We.push(this.roleService.get(bt.name)),(0,b.D)(We).subscribe($t=>{this.scopes=$t[0],["name","description","scopes_permissions"].forEach(or=>this.roleForm.get(or).setValue($t[1][or])),this.loadingReady()})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(bt=>{const We=[];m().each(this.scopes,$t=>{const or={read:!1,create:!1,update:!1,delete:!1};or.scope=$t,$t in bt&&m().each(bt[$t],Zn=>{or[Zn]=!0}),We.push(or)}),this.scopes_permissions=We})}isRowChecked(bt){const We=m().find(this.scopes_permissions,$t=>$t.scope===bt);return!m().isUndefined(We)&&We.read&&We.create&&We.update&&We.delete}isHeaderChecked(bt){let We=[bt];return"scope"===bt&&(We=["read","create","update","delete"]),We.every($t=>this.scopes_permissions.every(or=>or[$t]))}onClickCellCheckbox(bt,We,$t=null){const or=m().cloneDeep(this.roleForm.getValue("scopes_permissions"));let Zn=[We];"scope"===We&&(Zn=["read","create","update","delete"]),bt in or||(or[bt]=[]),$t&&$t.target.checked||!m().isEqual(Zn.sort(),m().intersection(or[bt],Zn).sort())?or[bt]=m().union(or[bt],Zn):(or[bt]=m().difference(or[bt],Zn),m().isEmpty(or[bt])&&m().unset(or,bt)),this.roleForm.get("scopes_permissions").setValue(or)}onClickHeaderCheckbox(bt,We){const $t=m().cloneDeep(this.roleForm.getValue("scopes_permissions"));let or=[bt];"scope"===bt&&(or=["read","create","update","delete"]),m().each(or,Zn=>{m().each(this.scopes,Vr=>{We.target.checked?$t[Vr]=m().union($t[Vr],[Zn]):($t[Vr]=m().difference($t[Vr],[Zn]),m().isEmpty($t[Vr])&&m().unset($t,Vr))})}),this.roleForm.get("scopes_permissions").setValue($t)}getRequest(){const bt=new U;return["name","description","scopes_permissions"].forEach(We=>bt[We]=this.roleForm.get(We).value),bt}createAction(){const bt=this.getRequest();this.roleService.create(bt).subscribe(()=>{this.notificationService.show(C.k.success,"Created role '" + bt.name + "'"),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const bt=this.getRequest();this.roleService.update(bt).subscribe(()=>{this.notificationService.show(C.k.success,"Updated role '" + bt.name + "'"),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.Y36(s.gz),M.Y36(s.F0),M.Y36(ie),M.Y36(oe),M.Y36(H.g),M.Y36(u.p4))},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-role-form"]],viewQuery:function(bt,We){if(1&bt&&(M.Gf(He,7),M.Gf($e,7),M.Gf(F,7)),2&bt){let $t;M.iGM($t=M.CRH())&&(We.headerPermissionCheckboxTpl=$t.first),M.iGM($t=M.CRH())&&(We.cellScopeCheckboxTpl=$t.first),M.iGM($t=M.CRH())&&(We.cellPermissionCheckboxTpl=$t.first)}},features:[M.qOj],decls:7,vars:1,consts:function(){let rt,bt,We,$t,or,Zn,Vr,Cr;return rt="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",bt="Name",We="Name...",$t="Description",or="Description...",Zn="Permissions",Vr="This field is required.",Cr="The chosen name is already in use.",[["class","cd-col-form",4,"cdFormLoading"],["cellScopeCheckboxTpl",""],["cellPermissionCheckboxTpl",""],["headerPermissionCheckboxTpl",""],[1,"cd-col-form"],["name","roleForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],rt,[1,"card-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label",3,"ngClass"],bt,[1,"cd-col-form-input"],["type","text","placeholder",We,"id","name","name","name","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","description",1,"cd-col-form-label"],$t,["type","text","placeholder",or,"id","description","name","description","formControlName","description",1,"form-control"],[1,"cd-col-form-label"],Zn,["columnMode","flex",3,"data","columns","toolHeader","autoReload","autoSave","footer","limit"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],Vr,Cr,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","checked","change"],[1,"datatable-permissions-scope-cell-label","custom-control-label",3,"for"],["type","checkbox",1,"custom-control-input",3,"checked","id","change"],[1,"custom-control-label",3,"for"],[1,"datatable-permissions-header-cell-label","custom-control-label",3,"for"]]},template:function(bt,We){1&bt&&(M.YNc(0,nn,30,25,"div",0),M.YNc(1,St,4,4,"ng-template",null,1,M.W1O),M.YNc(3,At,3,3,"ng-template",null,2,M.W1O),M.YNc(5,Qe,4,4,"ng-template",null,3,M.W1O)),2&bt&&M.Q6J("cdFormLoading",We.loading)},directives:[fe.y,e._Y,e.JL,e.sg,ne.V,he.P,t.mk,ce.o,e.Fj,Ae.b,e.JJ,e.u,Me.U,t.O5,Oe.a,be.p],pipes:[t.rS,ue.m],styles:[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:bold}"]}),Ct})();var ae=o(68136),Ie=o(30982),dt=o(65683),Jt=o(99466),zt=o(65862),ln=o(68774),ar=o(41039),Ln=o(51847),Rn=o(74937),er=o(63285);let Mn=(()=>{class Ct{constructor(bt){this.router=bt}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.Y36(s.F0))},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-user-tabs"]],decls:8,vars:1,consts:function(){let rt,bt;return rt="Users",bt="Roles",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/user-management/users"],["ngbNavLink",""],rt,["ngbNavItem","/user-management/roles"],bt]},template:function(bt,We){1&bt&&(M.TgZ(0,"ul",0,1),M.NdJ("navChange",function(or){return We.router.navigate([or.nextId])}),M.TgZ(2,"li",2),M.TgZ(3,"a",3),M.SDv(4,4),M.qZA(),M.qZA(),M.TgZ(5,"li",5),M.TgZ(6,"a",3),M.SDv(7,6),M.qZA(),M.qZA(),M.qZA()),2&bt&&M.Q6J("activeId",We.router.url)},directives:[a.Pz,a.nv,a.Vx],styles:[""]}),Ct})();var Ht=o(94928);function tr(Ct,rt){if(1&Ct&&(M.ynx(0),M._UZ(1,"cd-table",1),M.BQk()),2&Ct){const bt=M.oxw();M.xp6(1),M.Q6J("data",bt.scopes_permissions)("columns",bt.columns)("toolHeader",!1)("autoReload",!1)("autoSave",!1)("footer",!1)("limit",0)}}let Yn=(()=>{class Ct{constructor(){this.scopes_permissions=[]}ngOnInit(){this.columns=[{prop:"scope",name:"Scope",flexGrow:2},{prop:"read",name:"Read",flexGrow:1,cellClass:"text-center",cellTransformation:Jt.e.checkIcon},{prop:"create",name:"Create",flexGrow:1,cellClass:"text-center",cellTransformation:Jt.e.checkIcon},{prop:"update",name:"Update",flexGrow:1,cellClass:"text-center",cellTransformation:Jt.e.checkIcon},{prop:"delete",name:"Delete",flexGrow:1,cellClass:"text-center",cellTransformation:Jt.e.checkIcon}]}ngOnChanges(){if(this.selection){this.selectedItem=this.selection;const bt=[];m().each(this.scopes,We=>{const $t={read:!1,create:!1,update:!1,delete:!1};$t.scope=We,We in this.selectedItem.scopes_permissions&&m().each(this.selectedItem.scopes_permissions[We],or=>{$t[or]=!0}),bt.push($t)}),this.scopes_permissions=bt}}}return Ct.\u0275fac=function(bt){return new(bt||Ct)},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-role-details"]],inputs:{selection:"selection",scopes:"scopes"},features:[M.TTD],decls:1,vars:1,consts:[[4,"ngIf"],["columnMode","flex",3,"data","columns","toolHeader","autoReload","autoSave","footer","limit"]],template:function(bt,We){1&bt&&M.YNc(0,tr,2,7,"ng-container",0),2&bt&&M.Q6J("ngIf",We.selection)},directives:[t.O5,Oe.a],styles:[".fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#ced4da}"]}),Ct})(),Kt=(()=>{class Ct extends ae.o{constructor(bt,We,$t,or,Zn,Vr,Cr,ai){super(),this.roleService=bt,this.scopeService=We,this.emptyPipe=$t,this.authStorageService=or,this.modalService=Zn,this.notificationService=Vr,this.urlBuilder=Cr,this.actionLabels=ai,this.selection=new ln.r,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:zt.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:zt.P.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:zt.P.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:zt.P.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:3},{name:"Description",prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:"System Role",prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:Jt.e.checkIcon}]}getRoles(){(0,b.D)([this.roleService.list(),this.scopeService.list()]).subscribe(bt=>{this.roles=bt[0],this.scopes=bt[1]})}updateSelection(bt){this.selection=bt}deleteRole(bt){this.roleService.delete(bt).subscribe(()=>{this.getRoles(),this.modalRef.close(),this.notificationService.show(C.k.success,"Deleted role '" + bt + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}deleteRoleModal(){const bt=this.selection.first().name;this.modalRef=this.modalService.show(Ie.M,{itemDescription:"Role",itemNames:[bt],submitAction:()=>this.deleteRole(bt)})}cloneRole(){const bt=this.selection.first().name;this.modalRef=this.modalService.show(dt.X,{fields:[{type:"text",name:"newName",value:`${bt}_clone`,label:"New name",required:!0}],titleText:"Clone Role",submitButtonText:"Clone Role",onSubmit:We=>{this.roleService.clone(bt,We.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(C.k.success,"Cloned role '" + We.newName + "' from '" + bt + "'")})}})}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.Y36(ie),M.Y36(oe),M.Y36(ar.W),M.Y36(Rn.j),M.Y36(er.Z),M.Y36(H.g),M.Y36(Ln.F),M.Y36(u.p4))},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-role-list"]],features:[M._Bn([{provide:Ln.F,useValue:new Ln.F("user-management/roles")}]),M.qOj],decls:4,vars:8,consts:[["columnMode","flex","identifier","name","selectionType","single",3,"data","columns","hasDetails","setExpandedRow","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection","scopes"]],template:function(bt,We){1&bt&&(M._UZ(0,"cd-user-tabs"),M.TgZ(1,"cd-table",0),M.NdJ("setExpandedRow",function(or){return We.setExpandedRow(or)})("fetchData",function(){return We.getRoles()})("updateSelection",function(or){return We.updateSelection(or)}),M._UZ(2,"cd-table-actions",1),M._UZ(3,"cd-role-details",2),M.qZA()),2&bt&&(M.xp6(1),M.Q6J("data",We.roles)("columns",We.columns)("hasDetails",!0),M.xp6(1),M.Q6J("permission",We.permission)("selection",We.selection)("tableActions",We.tableActions),M.xp6(1),M.Q6J("selection",We.expandedRow)("scopes",We.scopes))},directives:[Mn,Oe.a,Ht.K,Yn],styles:[""]}),Ct})();var dn=o(16738),Kn=o.n(dn),qn=o(39219),Sn=o(9837),$n=o(36169),En=o(7022),Fn=o(51907),Dn=o(33888),mn=(()=>((mn||(mn={})).editing="editing",mn))();class jn{}var Xt=o(32057),ut=o(62862),mt=o(4416),Tt=o(18372),yn=o(60192),et=o(52266);const jt=["removeSelfUserReadUpdatePermissionTpl"];function hn(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,29),M.qZA())}function Qn(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,30),M.qZA())}function Ir(Ct,rt){if(1&Ct&&M._UZ(0,"cd-helper",40),2&Ct){const bt=M.oxw(3);M.s9C("html",bt.passwordPolicyHelpText)}}function ht(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,41),M.qZA())}function L(Ct,rt){if(1&Ct&&(M.TgZ(0,"span",28),M._uU(1),M.qZA()),2&Ct){const bt=M.oxw(3);M.xp6(1),M.hij(" ",bt.passwordValuation," ")}}function Ue(Ct,rt){if(1&Ct&&(M.TgZ(0,"div",10),M.TgZ(1,"label",31),M.ynx(2),M.SDv(3,32),M.BQk(),M.YNc(4,Ir,1,1,"cd-helper",33),M.qZA(),M.TgZ(5,"div",13),M.TgZ(6,"div",34),M._UZ(7,"input",35),M.TgZ(8,"span",36),M._UZ(9,"button",37),M.qZA(),M.qZA(),M.TgZ(10,"div",38),M._UZ(11,"div",39),M.qZA(),M.YNc(12,ht,2,0,"span",15),M.YNc(13,L,2,1,"span",15),M.qZA(),M.qZA()),2&Ct){M.oxw();const bt=M.MAs(2),We=M.oxw();M.xp6(4),M.Q6J("ngIf",We.passwordPolicyHelpText.length>0),M.xp6(7),M.Tol(We.passwordStrengthLevelClass),M.s9C("title",We.passwordValuation),M.xp6(1),M.Q6J("ngIf",We.userForm.showError("password",bt,"required")),M.xp6(1),M.Q6J("ngIf",We.userForm.showError("password",bt,"passwordPolicy"))}}function nt(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,46),M.qZA())}function at(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,47),M.qZA())}function it(Ct,rt){if(1&Ct&&(M.TgZ(0,"div",10),M.TgZ(1,"label",42),M.SDv(2,43),M.qZA(),M.TgZ(3,"div",13),M.TgZ(4,"div",34),M._UZ(5,"input",44),M.TgZ(6,"span",36),M._UZ(7,"button",45),M.qZA(),M.YNc(8,nt,2,0,"span",15),M.qZA(),M.YNc(9,at,2,0,"span",15),M.qZA(),M.qZA()),2&Ct){M.oxw();const bt=M.MAs(2),We=M.oxw();M.xp6(8),M.Q6J("ngIf",We.userForm.showError("confirmpassword",bt,"match")),M.xp6(1),M.Q6J("ngIf",We.userForm.showError("confirmpassword",bt,"required"))}}function Pt(Ct,rt){1&Ct&&(M.TgZ(0,"cd-helper",54),M.TgZ(1,"p"),M._uU(2," The Dashboard setting defining the expiration interval of passwords is currently set to "),M.TgZ(3,"strong"),M._uU(4,"0"),M.qZA(),M._uU(5,". This means if a date is set, the user password will only expire once. "),M.qZA(),M.TgZ(6,"p"),M._uU(7," Consider configuring the Dashboard setting "),M.TgZ(8,"a",55),M._uU(9,"USER_PWD_EXPIRATION_SPAN"),M.qZA(),M._uU(10," in order to let passwords expire periodically. "),M.qZA(),M.qZA())}function Ut(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,56),M.qZA())}const ot=function(Ct){return{required:Ct}};function Nn(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",10),M.TgZ(1,"label",48),M.ynx(2),M.SDv(3,49),M.BQk(),M.YNc(4,Pt,11,0,"cd-helper",50),M.qZA(),M.TgZ(5,"div",13),M.TgZ(6,"div",34),M.TgZ(7,"input",51,52),M.NdJ("click",function(){return M.CHM(bt),M.MAs(8).open()})("keypress",function(){return M.CHM(bt),M.MAs(8).close()}),M.qZA(),M.TgZ(9,"span",36),M.TgZ(10,"button",53),M.NdJ("click",function(){return M.CHM(bt),M.oxw(2).clearExpirationDate()}),M._UZ(11,"i"),M.qZA(),M.qZA(),M.YNc(12,Ut,2,0,"span",15),M.qZA(),M.qZA(),M.qZA()}if(2&Ct){M.oxw();const bt=M.MAs(2),We=M.oxw(),$t=M.MAs(4);M.xp6(1),M.Q6J("ngClass",M.VKq(7,ot,We.pwdExpirationSettings.pwdExpirationSpan>0)),M.xp6(3),M.Q6J("ngIf",0==We.pwdExpirationSettings.pwdExpirationSpan),M.xp6(3),M.Q6J("ngbPopover",$t),M.xp6(4),M.Gre("icon-prepend ",We.icons.destroy,""),M.xp6(1),M.Q6J("ngIf",We.userForm.showError("pwdExpirationDate",bt,"required"))}}function sn(Ct,rt){1&Ct&&(M.TgZ(0,"span",28),M.SDv(1,57),M.qZA())}function An(Ct,rt){if(1&Ct&&(M.TgZ(0,"span",58),M._UZ(1,"cd-select-badges",59),M.qZA()),2&Ct){const bt=M.oxw(2);M.xp6(1),M.Q6J("data",bt.userForm.controls.roles.value)("options",bt.allRoles)("messages",bt.messages)}}function Bn(Ct,rt){1&Ct&&(M.TgZ(0,"div",10),M.TgZ(1,"div",60),M.TgZ(2,"div",61),M._UZ(3,"input",62),M.TgZ(4,"label",63),M.SDv(5,64),M.qZA(),M.qZA(),M.qZA(),M.qZA())}function ir(Ct,rt){1&Ct&&(M.TgZ(0,"div",10),M.TgZ(1,"div",60),M.TgZ(2,"div",61),M._UZ(3,"input",65),M.TgZ(4,"label",66),M.SDv(5,67),M.qZA(),M.qZA(),M.qZA(),M.qZA())}function mr(Ct,rt){if(1&Ct){const bt=M.EpF();M.TgZ(0,"div",3),M.TgZ(1,"form",4,5),M.TgZ(3,"div",6),M.TgZ(4,"div",7),M.SDv(5,8),M.ALo(6,"titlecase"),M.ALo(7,"upperFirst"),M.qZA(),M.TgZ(8,"div",9),M.TgZ(9,"div",10),M.TgZ(10,"label",11),M.SDv(11,12),M.qZA(),M.TgZ(12,"div",13),M._UZ(13,"input",14),M.YNc(14,hn,2,0,"span",15),M.YNc(15,Qn,2,0,"span",15),M.qZA(),M.qZA(),M.YNc(16,Ue,14,7,"div",16),M.YNc(17,it,10,2,"div",16),M.YNc(18,Nn,13,9,"div",16),M.TgZ(19,"div",10),M.TgZ(20,"label",17),M.SDv(21,18),M.qZA(),M.TgZ(22,"div",13),M._UZ(23,"input",19),M.qZA(),M.qZA(),M.TgZ(24,"div",10),M.TgZ(25,"label",20),M.SDv(26,21),M.qZA(),M.TgZ(27,"div",13),M._UZ(28,"input",22),M.YNc(29,sn,2,0,"span",15),M.qZA(),M.qZA(),M.TgZ(30,"div",10),M.TgZ(31,"label",23),M.SDv(32,24),M.qZA(),M.TgZ(33,"div",13),M.YNc(34,An,2,3,"span",25),M.qZA(),M.qZA(),M.YNc(35,Bn,6,0,"div",16),M.YNc(36,ir,6,0,"div",16),M.qZA(),M.TgZ(37,"div",26),M.TgZ(38,"cd-form-button-panel",27),M.NdJ("submitActionEvent",function(){return M.CHM(bt),M.oxw().submit()}),M.ALo(39,"titlecase"),M.ALo(40,"upperFirst"),M.qZA(),M.qZA(),M.qZA(),M.qZA(),M.qZA()}if(2&Ct){const bt=M.MAs(2),We=M.oxw();M.xp6(1),M.Q6J("formGroup",We.userForm),M.xp6(6),M.pQV(M.lcZ(6,15,We.action))(M.lcZ(7,17,We.resource)),M.QtT(5),M.xp6(3),M.Q6J("ngClass",M.VKq(23,ot,We.mode!==We.userFormMode.editing)),M.xp6(4),M.Q6J("ngIf",We.userForm.showError("username",bt,"required")),M.xp6(1),M.Q6J("ngIf",We.userForm.showError("username",bt,"notUnique")),M.xp6(1),M.Q6J("ngIf",!We.authStorageService.isSSO()),M.xp6(1),M.Q6J("ngIf",!We.authStorageService.isSSO()),M.xp6(1),M.Q6J("ngIf",!We.authStorageService.isSSO()),M.xp6(11),M.Q6J("ngIf",We.userForm.showError("email",bt,"email")),M.xp6(5),M.Q6J("ngIf",We.allRoles),M.xp6(1),M.Q6J("ngIf",!We.isCurrentUser()),M.xp6(1),M.Q6J("ngIf",!We.isCurrentUser()&&!We.authStorageService.isSSO()),M.xp6(2),M.Q6J("form",We.userForm)("submitText",M.lcZ(39,19,We.action)+" "+M.lcZ(40,21,We.resource))}}function _r(Ct,rt){1&Ct&&(M.TgZ(0,"p"),M.TgZ(1,"strong"),M.SDv(2,68),M.qZA(),M.qZA(),M._UZ(3,"br"),M.TgZ(4,"p"),M.SDv(5,69),M.qZA(),M.ynx(6),M.SDv(7,70),M.BQk())}function Nr(Ct,rt){if(1&Ct&&M._UZ(0,"cd-date-time-picker",71),2&Ct){const bt=M.oxw();M.Q6J("control",bt.userForm.get("pwdExpirationDate"))("hasTime",!1)}}let br=(()=>{class Ct extends D.E{constructor(bt,We,$t,or,Zn,Vr,Cr,ai,Dr,Qr,rn,fi){super(),this.authService=bt,this.authStorageService=We,this.route=$t,this.router=or,this.modalService=Zn,this.roleService=Vr,this.userService=Cr,this.notificationService=ai,this.actionLabels=Dr,this.passwordPolicyService=Qr,this.formBuilder=rn,this.settingsService=fi,this.userFormMode=mn,this.messages=new En.a({empty:"There are no roles."}),this.passwordPolicyHelpText="",this.icons=zt.P,this.pwdExpirationFormat="YYYY-MM-DD",this.resource="user",this.createForm(),this.messages=new En.a({empty:"There are no roles."})}createForm(){this.passwordPolicyService.getHelpText().subscribe(bt=>{this.passwordPolicyHelpText=bt}),this.userForm=this.formBuilder.group({username:["",[e.kI.required],[j.h.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[j.h.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(bt,We,$t)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(We),this.passwordValuation=m().defaultTo($t,"")})]],confirmpassword:[""],pwdExpirationDate:[void 0],email:["",[j.h.email]],roles:[[]],enabled:[!0,[e.kI.required]],pwdUpdateRequired:[!0]},{validators:[j.h.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE;const bt=[this.roleService.list(),this.settingsService.getStandardSettings()];(0,b.D)(bt).subscribe(We=>{if(this.allRoles=m().map(We[0],$t=>($t.enabled=!0,$t)),this.pwdExpirationSettings=new Fn.G(We[1]),this.mode===this.userFormMode.editing)this.initEdit();else{if(this.pwdExpirationSettings.pwdExpirationSpan>0){const $t=this.userForm.get("pwdExpirationDate"),or=Kn()();or.add(this.pwdExpirationSettings.pwdExpirationSpan,"day"),$t.setValue(or.format(this.pwdExpirationFormat)),$t.setValidators([e.kI.required])}this.loadingReady()}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(bt=>{this.userService.get(bt.username).subscribe($t=>{this.response=m().cloneDeep($t),this.setResponse($t),this.loadingReady()})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(bt){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach($t=>this.userForm.get($t).setValue(bt[$t]));const We=bt.pwdExpirationDate;We&&this.userForm.get("pwdExpirationDate").setValue(Kn()(1e3*We).format(this.pwdExpirationFormat))}getRequest(){const bt=new jn;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach($t=>bt[$t]=this.userForm.get($t).value);const We=this.userForm.get("pwdExpirationDate").value;if(We){const $t=Kn()(We,this.pwdExpirationFormat);(this.mode!==this.userFormMode.editing||this.response.pwdExpirationDate!==$t.unix())&&$t.set({hour:23,minute:59,second:59}),bt.pwdExpirationDate=$t.unix()}return bt}createAction(){const bt=this.getRequest();this.userService.create(bt).subscribe(()=>{this.notificationService.show(C.k.success,"Created user '" + bt.username + "'"),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const bt={titleText:"Update user",buttonText:"Continue",bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.close(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show($n.Y,bt)}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!m().isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(bt=[]){for(const We of this.allRoles)if(-1!==bt.indexOf(We.name)&&We.scopes_permissions.user){const $t=We.scopes_permissions.user;return["read","update"].every(or=>-1!==$t.indexOf(or))}return!1}doEditAction(){const bt=this.getRequest();this.userService.update(bt).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(C.k.info,"You were automatically logged out because your roles have been changed.")}):(this.notificationService.show(C.k.success,"Updated user '" + bt.username + "'"),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.Y36(qn.e),M.Y36(Rn.j),M.Y36(s.gz),M.Y36(s.F0),M.Y36(er.Z),M.Y36(ie),M.Y36(Xt.K),M.Y36(H.g),M.Y36(u.p4),M.Y36(Dn.q),M.Y36(ut.O),M.Y36(Sn.g))},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-user-form"]],viewQuery:function(bt,We){if(1&bt&&M.Gf(jt,7),2&bt){let $t;M.iGM($t=M.CRH())&&(We.removeSelfUserReadUpdatePermissionTpl=$t.first)}},features:[M.qOj],decls:5,vars:1,consts:function(){let rt,bt,We,$t,or,Zn,Vr,Cr,ai,Dr,Qr,rn,fi,Ei,wi,go,Fi,no,Ji,qi,to;return rt="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",bt="Username",We="Full name",$t="Email",or="Roles",Zn="This field is required.",Vr="The username already exists.",Cr="Password",ai="This field is required.",Dr="Confirm password",Qr="Password confirmation doesn't match the password.",rn="This field is required.",fi="Password expiration date",Ei="Password expiration date...",wi="This field is required.",go="Invalid email.",Fi="Enabled",no="User must change password at next logon",Ji="You are about to remove \"user read / update\" permissions from your own user.",qi="If you continue, you will no longer be able to add or remove roles from any user.",to="Are you sure you want to continue?",[["class","cd-col-form",4,"cdFormLoading"],["removeSelfUserReadUpdatePermissionTpl",""],["popContent",""],[1,"cd-col-form"],["name","userForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],rt,[1,"card-body"],[1,"form-group","row"],["for","username",1,"cd-col-form-label",3,"ngClass"],bt,[1,"cd-col-form-input"],["type","text","placeholder","Username...","id","username","name","username","formControlName","username","autocomplete","off","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],["for","name",1,"cd-col-form-label"],We,["type","text","placeholder","Full name...","id","name","name","name","formControlName","name",1,"form-control"],["for","email",1,"cd-col-form-label"],$t,["type","email","placeholder","Email...","id","email","name","email","formControlName","email",1,"form-control"],[1,"cd-col-form-label"],or,["class","no-border full-height",4,"ngIf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],Zn,Vr,["for","password",1,"cd-col-form-label"],Cr,["class","text-pre-wrap",3,"html",4,"ngIf"],[1,"input-group"],["type","password","placeholder","Password...","id","password","name","password","autocomplete","new-password","formControlName","password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-light"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],[1,"text-pre-wrap",3,"html"],ai,["for","confirmpassword",1,"cd-col-form-label"],Dr,["type","password","placeholder","Confirm password...","id","confirmpassword","name","confirmpassword","autocomplete","new-password","formControlName","confirmpassword",1,"form-control"],["type","button","cdPasswordButton","confirmpassword",1,"btn","btn-light"],Qr,rn,["for","pwdExpirationDate",1,"cd-col-form-label",3,"ngClass"],fi,["class","text-pre-wrap",4,"ngIf"],["placeholder",Ei,"id","pwdExpirationDate","name","pwdExpirationDate","formControlName","pwdExpirationDate","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["p","ngbPopover"],["type","button",1,"btn","btn-light",3,"click"],[1,"text-pre-wrap"],["routerLink","/mgr-modules/edit/dashboard",1,"alert-link"],wi,go,[1,"no-border","full-height"],[3,"data","options","messages"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","enabled","name","enabled","formControlName","enabled",1,"custom-control-input"],["for","enabled",1,"custom-control-label"],Fi,["type","checkbox","id","pwdUpdateRequired","name","pwdUpdateRequired","formControlName","pwdUpdateRequired",1,"custom-control-input"],["for","pwdUpdateRequired",1,"custom-control-label"],no,Ji,qi,to,[3,"control","hasTime"]]},template:function(bt,We){1&bt&&(M.YNc(0,mr,41,25,"div",0),M.YNc(1,_r,8,0,"ng-template",null,1,M.W1O),M.YNc(3,Nr,1,2,"ng-template",null,2,M.W1O)),2&bt&&M.Q6J("cdFormLoading",We.loading)},directives:[fe.y,e._Y,e.JL,e.sg,ne.V,he.P,t.mk,ce.o,e.Fj,Ae.b,e.JJ,e.u,Me.U,t.O5,be.p,mt.C,Tt.S,a.o8,s.yS,yn.m,e.Wl,et.J],pipes:[t.rS,ue.m],styles:[""]}),Ct})();var Jn=o(96102),nr=o(94088);const Mr=["userRolesTpl"],yi=["warningTpl"],Ii=["durationTpl"];function Mi(Ct,rt){if(1&Ct&&(M.TgZ(0,"span"),M._uU(1),M.qZA()),2&Ct){const bt=rt.$implicit,We=rt.last;M.xp6(1),M.AsE(" ",bt,"",We?"":", "," ")}}function Oi(Ct,rt){1&Ct&&M.YNc(0,Mi,2,2,"span",5),2&Ct&&M.Q6J("ngForOf",rt.value)}function Kr(Ct,rt){if(1&Ct&&(M.TgZ(0,"div",6),M.TgZ(1,"div",7),M._uU(2),M.qZA(),M.qZA()),2&Ct){const bt=rt.value,We=rt.row,$t=M.oxw();M.ekj("border-danger",We.remainingDays<$t.expirationDangerAlert)("border-warning",We.remainingDays<$t.expirationWarningAlert&&We.remainingDays>=$t.expirationDangerAlert),M.xp6(2),M.hij(" ",bt," ")}}function ei(Ct,rt){if(1&Ct&&M._UZ(0,"i",10),2&Ct){const bt=M.oxw().row,We=M.oxw();M.Tol(We.icons.warning),M.ekj("icon-danger-color",bt.remainingDays<We.expirationDangerAlert)("icon-warning-color",bt.remainingDays<We.expirationWarningAlert&&bt.remainingDays>=We.expirationDangerAlert)}}function di(Ct,rt){if(1&Ct&&(M.YNc(0,ei,1,7,"i",8),M.TgZ(1,"span",9),M.ALo(2,"cdDate"),M._uU(3),M.ALo(4,"duration"),M.qZA()),2&Ct){const bt=rt.value,We=rt.row,$t=M.oxw();M.Q6J("ngIf",We.remainingDays<$t.expirationWarningAlert),M.xp6(1),M.s9C("title",M.lcZ(2,3,bt)),M.xp6(2),M.Oqu(M.lcZ(4,5,We.remainingTimeWithoutSeconds/1e3))}}let ct=(()=>{class Ct{constructor(bt,We,$t,or,Zn,Vr,Cr,ai){this.userService=bt,this.emptyPipe=We,this.modalService=$t,this.notificationService=or,this.authStorageService=Zn,this.urlBuilder=Vr,this.settingsService=Cr,this.actionLabels=ai,this.selection=new ln.r,this.icons=zt.P,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:zt.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:zt.P.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:zt.P.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Username",prop:"username",flexGrow:1,cellTemplate:this.warningTpl},{name:"Name",prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:"Email",prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:"Roles",prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:"Enabled",prop:"enabled",flexGrow:1,cellTransformation:Jt.e.checkIcon},{name:"Password expires",prop:"pwdExpirationDate",flexGrow:1,cellTemplate:this.durationTpl}],this.settingsService.getValues(["USER_PWD_EXPIRATION_WARNING_1","USER_PWD_EXPIRATION_WARNING_2"]).subscribe(We=>{this.expirationWarningAlert=We.USER_PWD_EXPIRATION_WARNING_1,this.expirationDangerAlert=We.USER_PWD_EXPIRATION_WARNING_2})}getUsers(){this.userService.list().subscribe(bt=>{bt.forEach(We=>{We.remainingTimeWithoutSeconds=0,We.pwdExpirationDate&&We.pwdExpirationDate>0&&(We.pwdExpirationDate=1e3*We.pwdExpirationDate,We.remainingTimeWithoutSeconds=this.getRemainingTimeWithoutSeconds(We.pwdExpirationDate),We.remainingDays=this.getRemainingDays(We.pwdExpirationDate))}),this.users=bt})}updateSelection(bt){this.selection=bt}deleteUser(bt){this.userService.delete(bt).subscribe(()=>{this.getUsers(),this.modalRef.close(),this.notificationService.show(C.k.success,"Deleted user '" + bt + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}deleteUserModal(){const bt=this.authStorageService.getUsername(),We=this.selection.first().username;bt!==We?this.modalRef=this.modalService.show(Ie.M,{itemDescription:"User",itemNames:[We],submitAction:()=>this.deleteUser(We)}):this.notificationService.show(C.k.error,"Failed to delete user '" + We + "'","You are currently logged in as '" + We + "'.")}getWarningIconClass(bt){return null===bt||this.expirationWarningAlert>10?"":this.getRemainingDays(bt)<=this.expirationDangerAlert?"icon-danger-color":"icon-warning-color"}getWarningClass(bt){return null===bt||this.expirationWarningAlert>10?"":this.getRemainingDays(bt)<=this.expirationDangerAlert?"border-danger":"border-warning"}getRemainingDays(bt){if(void 0!==bt&&null!=bt)return bt<0?0:Math.max(0,Math.floor(this.getRemainingTime(bt)/864e5))}getRemainingTimeWithoutSeconds(bt){const We=this.getRemainingTime(bt);return 60*Math.floor(We/6e4)*1e3}getRemainingTime(bt){return bt-Date.now()}}return Ct.\u0275fac=function(bt){return new(bt||Ct)(M.Y36(Xt.K),M.Y36(ar.W),M.Y36(er.Z),M.Y36(H.g),M.Y36(Rn.j),M.Y36(Ln.F),M.Y36(Sn.g),M.Y36(u.p4))},Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["cd-user-list"]],viewQuery:function(bt,We){if(1&bt&&(M.Gf(Mr,7),M.Gf(yi,7),M.Gf(Ii,7)),2&bt){let $t;M.iGM($t=M.CRH())&&(We.userRolesTpl=$t.first),M.iGM($t=M.CRH())&&(We.warningTpl=$t.first),M.iGM($t=M.CRH())&&(We.durationTpl=$t.first)}},features:[M._Bn([{provide:Ln.F,useValue:new Ln.F("user-management/users")}])],decls:9,vars:5,consts:function(){let rt;return rt="User's password is about to expire",[["columnMode","flex","identifier","username","selectionType","single",3,"data","columns","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["userRolesTpl",""],["warningTpl",""],["durationTpl",""],[4,"ngFor","ngForOf"],[1,"border-margin"],[1,"warning-content"],["title",rt,3,"icon-danger-color","icon-warning-color","class",4,"ngIf"],[3,"title"],["title",rt]]},template:function(bt,We){1&bt&&(M._UZ(0,"cd-user-tabs"),M.TgZ(1,"cd-table",0),M.NdJ("fetchData",function(){return We.getUsers()})("updateSelection",function(or){return We.updateSelection(or)}),M._UZ(2,"cd-table-actions",1),M.qZA(),M.YNc(3,Oi,1,1,"ng-template",null,2,M.W1O),M.YNc(5,Kr,3,5,"ng-template",null,3,M.W1O),M.YNc(7,di,5,7,"ng-template",null,4,M.W1O)),2&bt&&(M.xp6(1),M.Q6J("data",We.users)("columns",We.columns),M.xp6(1),M.Q6J("permission",We.permission)("selection",We.selection)("tableActions",We.tableActions))},directives:[Mn,Oe.a,Ht.K,t.sg,t.O5],pipes:[Jn.N,nr.u],styles:[".border-margin[_ngcontent-%COMP%]{border-left:3px solid transparent;height:calc(100% + 10px);margin-bottom:-5px;margin-left:-5px;margin-top:-5px}.warning-content[_ngcontent-%COMP%]{height:100%;padding-bottom:5px;padding-left:5px;padding-top:5px}"]}),Ct})(),Ke=(()=>{class Ct{}return Ct.\u0275fac=function(bt){return new(bt||Ct)},Ct.\u0275mod=M.oAB({type:Ct}),Ct.\u0275inj=M.cJS({imports:[[t.ez,e.u5,e.UX,h.m,a.Oz,a.dT,l.b,s.Bz]]}),Ct})();const Xe=[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:{breadcrumbs:"Users"},children:[{path:"",component:ct},{path:u.MQ.CREATE,component:br,data:{breadcrumbs:u.Qn.CREATE}},{path:`${u.MQ.EDIT}/:username`,component:br,data:{breadcrumbs:u.Qn.EDIT}}]},{path:"roles",data:{breadcrumbs:"Roles"},children:[{path:"",component:Kt},{path:u.MQ.CREATE,component:It,data:{breadcrumbs:u.Qn.CREATE}},{path:`${u.MQ.EDIT}/:name`,component:It,data:{breadcrumbs:u.Qn.EDIT}}]}];let Vt=(()=>{class Ct{}return Ct.\u0275fac=function(bt){return new(bt||Ct)},Ct.\u0275mod=M.oAB({type:Ct}),Ct.\u0275inj=M.cJS({imports:[[Ke,s.Bz.forChild(Xe)]]}),Ct})()},26504:(Ge,g,o)=>{"use strict";o.d(g,{s9:()=>e,_2:()=>s,mM:()=>l});var t=o(65862);class e extends Error{}class s extends e{constructor(){super(...arguments),this.header="Page Not Found",this.message="Sorry, we couldn\u2019t find what you were looking for.\n  The page you requested may have been changed or moved.",this.icon=t.P.warning}}class l extends e{constructor(){super(...arguments),this.header="User Denied",this.message="Sorry, the user does not exist in Ceph.\n  You'll be logged out from the Identity Provider when you retry logging in.",this.icon=t.P.warning}}},76189:(Ge,g,o)=>{"use strict";o.d(g,{S:()=>t});class t{getVersionHeaderValue(s,a){return`application/vnd.ceph.api.v${s}.${a}+json`}}},39219:(Ge,g,o)=>{"use strict";o.d(g,{e:()=>_});var t=o(23815),s=o(68307),a=o(74788),l=o(74937),u=o(58497),h=o(6283);let _=(()=>{class m{constructor(C,D,x,j){this.authStorageService=C,this.http=D,this.router=x,this.route=j}check(C){return this.http.post("api/auth/check",{token:C})}login(C){return this.http.post("api/auth",C).pipe((0,s.b)(D=>{this.authStorageService.set(D.username,D.permissions,D.sso,D.pwdExpirationDate,D.pwdUpdateRequired)}))}logout(C=null){return this.http.post("api/auth/logout",null).subscribe(D=>{this.authStorageService.remove();const x=t.get(this.route.snapshot.queryParams,"returnUrl","/login");this.router.navigate([x],{skipLocationChange:!0}),C&&C(),window.location.replace(D.redirect_url)})}}return m.\u0275fac=function(C){return new(C||m)(a.LFG(l.j),a.LFG(u.eN),a.LFG(h.F0),a.LFG(h.gz))},m.\u0275prov=a.Yz7({token:m,factory:m.\u0275fac,providedIn:"root"}),m})()},64724:(Ge,g,o)=>{"use strict";o.d(g,{e:()=>s});var t=o(74788),e=o(58497);let s=(()=>{class a{constructor(u){this.http=u}findValue(u,h){if(u.value)return u.value.find(_=>_.section===h)}getValue(u,h){let _=this.findValue(u,h);if(!_){const m=h.indexOf(".");-1!==m&&(_=this.findValue(u,h.substring(0,m)))}return _||(_=this.findValue(u,"global")),_?_.value:u.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(u){return this.http.get(`api/cluster_conf/${u}`)}filter(u){return this.http.get(`api/cluster_conf/filter?names=${u.join(",")}`)}create(u){return this.http.post("api/cluster_conf/",u)}delete(u,h){return this.http.delete(`api/cluster_conf/${u}?section=${h}`)}bulkCreate(u){return this.http.put("api/cluster_conf/",u)}}return a.\u0275fac=function(u){return new(u||a)(t.LFG(e.eN))},a.\u0275prov=t.Yz7({token:a,factory:a.\u0275fac,providedIn:"root"}),a})()},83608:(Ge,g,o)=>{"use strict";o.d(g,{H:()=>s});var t=o(74788),e=o(58497);let s=(()=>{class a{constructor(u){this.http=u,this.apiPath="api/crush_rule",this.formTooltips={root:"The name of the node under which data should be placed.",failure_domain:"The type of CRUSH nodes across which we should separate replicas.",device_class:"The device class data should be placed on."}}create(u){return this.http.post(this.apiPath,u,{observe:"response"})}delete(u){return this.http.delete(`${this.apiPath}/${u}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return a.\u0275fac=function(u){return new(u||a)(t.LFG(e.eN))},a.\u0275prov=t.Yz7({token:a,factory:a.\u0275fac,providedIn:"root"}),a})()},80842:(Ge,g,o)=>{"use strict";o.d(g,{q:()=>h});var t=o(64762),e=o(58497),s=o(88002),a=o(93523),l=o(34089),u=o(74788);let h=class{constructor(m,b){this.http=m,this.rbdConfigurationService=b,this.apiPath="api/pool"}create(m){return this.http.post(this.apiPath,m,{observe:"response"})}update(m){let b;return m.hasOwnProperty("srcpool")?(b=m.srcpool,delete m.srcpool):(b=m.pool,delete m.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(b)}`,m,{observe:"response"})}delete(m){return this.http.delete(`${this.apiPath}/${m}`,{observe:"response"})}get(m){return this.http.get(`${this.apiPath}/${m}`)}getList(){return this.http.get(`${this.apiPath}?stats=true`)}getConfiguration(m){return this.http.get(`${this.apiPath}/${m}/configuration`).pipe((0,s.U)(b=>b.map(C=>Object.assign(C,this.rbdConfigurationService.getOptionByName(C.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(m=[]){const b=m.join(",");return this.http.get(`${this.apiPath}?attrs=${b}`).toPromise().then(C=>C)}};h.\u0275fac=function(m){return new(m||h)(u.LFG(e.eN),u.LFG(l.n))},h.\u0275prov=u.Yz7({token:h,factory:h.\u0275fac,providedIn:"root"}),h=(0,t.gn)([a.o,(0,t.w6)("design:paramtypes",[e.eN,l.n])],h)},95152:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>D});var t=o(64762),e=o(58497),s=o(23815),a=o.n(s),l=o(25917),u=o(96736),h=o(5304),_=o(76189),m=o(20523),b=o(93523),C=o(74788);let D=class extends _.S{constructor(j,H){super(),this.http=j,this.rgwDaemonService=H,this.url="api/rgw/bucket"}list(j=!1,H=""){return this.rgwDaemonService.request(z=>(z=z.append("stats",j.toString()),H&&(z=z.append("uid",H)),this.http.get(this.url,{headers:{Accept:this.getVersionHeaderValue(1,1)},params:z})))}get(j){return this.rgwDaemonService.request(H=>this.http.get(`${this.url}/${j}`,{params:H}))}create(j,H,z,U,M,I,J){return this.rgwDaemonService.request(Y=>this.http.post(this.url,null,{params:new e.LE({fromObject:{bucket:j,uid:H,zonegroup:z,placement_target:U,lock_enabled:String(M),lock_mode:I,lock_retention_period_days:J,daemon_name:Y.get("daemon_name")}})}))}update(j,H,z,U,M,I,J,Y,ie){return this.rgwDaemonService.request(oe=>(oe=(oe=(oe=(oe=(oe=(oe=(oe=(oe=oe.append("bucket_id",H)).append("uid",z)).append("versioning_state",U)).append("mfa_delete",M)).append("mfa_token_serial",I)).append("mfa_token_pin",J)).append("lock_mode",Y)).append("lock_retention_period_days",ie),this.http.put(`${this.url}/${j}`,null,{params:oe})))}delete(j,H=!0){return this.rgwDaemonService.request(z=>(z=z.append("purge_objects",H?"true":"false"),this.http.delete(`${this.url}/${j}`,{params:z})))}exists(j){return this.get(j).pipe((0,u.h)(!0),(0,h.K)(H=>(a().isFunction(H.preventDefault)&&H.preventDefault(),(0,l.of)(!1))))}getLockDays(j){return j.lock_retention_period_years>0?Math.floor(365.242*j.lock_retention_period_years):j.lock_retention_period_days||0}};D.\u0275fac=function(j){return new(j||D)(C.LFG(e.eN),C.LFG(m.b))},D.\u0275prov=C.Yz7({token:D,factory:D.\u0275fac,providedIn:"root"}),D=(0,t.gn)([b.o,(0,t.w6)("design:paramtypes",[e.eN,m.b])],D)},20523:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>x});var t=o(64762),e=o(58497),s=o(23815),a=o.n(s),l=o(26215),u=o(40205),h=o(25917),_=o(68307),m=o(19773),b=o(15257),C=o(93523),D=o(74788);let x=class{constructor(H){this.http=H,this.url="api/rgw/daemon",this.daemons=new l.X([]),this.daemons$=this.daemons.asObservable(),this.selectedDaemon=new l.X(null),this.selectedDaemon$=this.selectedDaemon.asObservable()}list(){return this.http.get(this.url).pipe((0,_.b)(H=>{this.daemons.next(H);const z=this.selectedDaemon.getValue();(a().isEmpty(z)||void 0===a().find(H,{id:z.id}))&&this.selectDefaultDaemon(H)}))}get(H){return this.http.get(`${this.url}/${H}`)}selectDaemon(H){this.selectedDaemon.next(H)}selectDefaultDaemon(H){if(0===H.length)return null;for(const z of H)if(z.default)return this.selectDaemon(z),z;return this.selectDaemon(H[0]),H[0]}request(H){return this.selectedDaemon.pipe((0,m.zg)(z=>a().isEmpty(z)?this.list().pipe((0,m.zg)(U=>a().isEmpty(U)?(0,u._)("No RGW daemons found!"):this.selectedDaemon$)):(0,h.of)(z)),(0,b.q)(1),(0,m.zg)(z=>{let U=new e.LE;return U=U.append("daemon_name",z.id),H(U)}))}};x.\u0275fac=function(H){return new(H||x)(D.LFG(e.eN))},x.\u0275prov=D.Yz7({token:x,factory:x.\u0275fac,providedIn:"root"}),x=(0,t.gn)([C.o,(0,t.w6)("design:paramtypes",[e.eN])],x)},33394:(Ge,g,o)=>{"use strict";o.d(g,{I:()=>_});var t=o(64762),e=o(58497),s=o(19773),a=o(88002),l=o(20523),u=o(93523),h=o(74788);let _=class{constructor(b,C){this.http=b,this.rgwDaemonService=C,this.url="api/rgw/site"}get(b){return this.rgwDaemonService.request(C=>(b&&(C=C.append("query",b)),this.http.get(this.url,{params:C})))}isDefaultRealm(){return this.get("default-realm").pipe((0,s.zg)(b=>this.rgwDaemonService.selectedDaemon$.pipe((0,a.U)(C=>C.realm_name===b))))}};_.\u0275fac=function(b){return new(b||_)(h.LFG(e.eN),h.LFG(l.b))},_.\u0275prov=h.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_=(0,t.gn)([u.o,(0,t.w6)("design:paramtypes",[e.eN,l.b])],_)},9837:(Ge,g,o)=>{"use strict";o.d(g,{g:()=>h});var t=o(23815),e=o.n(t),s=o(88002),a=o(74788),l=o(58497);let h=(()=>{class _{constructor(b){this.http=b,this.settings={}}getValues(b){return e().isArray(b)&&(b=b.join(",")),this.http.get(`api/settings?names=${b}`).pipe((0,s.U)(C=>{const D={};return e().forEach(C,x=>{e().set(D,x.name,x.value)}),D}))}ifSettingConfigured(b,C,D){const x=this.settings[b];void 0===x?this.http.get(b).subscribe(j=>{this.settings[b]=this.getSettingsValue(j),this.ifSettingConfigured(b,C,D)},j=>{401!==j.status&&(this.settings[b]="")}):""!==x?C(x):D&&D()}disableSetting(b){this.settings[b]=""}getSettingsValue(b){return b.value||b.instance||""}validateGrafanaDashboardUrl(b){return this.http.get(`api/grafana/validation/${b}`)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return _.\u0275fac=function(b){return new(b||_)(a.LFG(l.eN))},_.\u0275prov=a.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},32057:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>u});var t=o(25917),e=o(96736),s=o(5304),a=o(74788),l=o(58497);let u=(()=>{class h{constructor(m){this.http=m}list(){return this.http.get("api/user")}delete(m){return this.http.delete(`api/user/${m}`)}get(m){return this.http.get(`api/user/${m}`)}create(m){return this.http.post("api/user",m)}update(m){return this.http.put(`api/user/${m.username}`,m)}changePassword(m,b,C){return this.http.post(`api/user/${m}/change_password`,{old_password:b,new_password:C})}validateUserName(m){return this.get(m).pipe((0,e.h)(!0),(0,s.K)(b=>(b.preventDefault(),(0,t.of)(!1))))}validatePassword(m,b=null,C=null){return this.http.post("api/user/validate_password",{password:m,username:b,old_password:C})}}return h.\u0275fac=function(m){return new(m||h)(a.LFG(l.eN))},h.\u0275prov=a.Yz7({token:h,factory:h.\u0275fac,providedIn:"root"}),h})()},51295:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>s});var t=o(23815),e=o.n(t);class s{static updateChanged(l,u){let h=!1;return Object.keys(u).forEach(_=>{const m=u[_];e().isEqual(m,l[_])||(l[_]=m,h=!0)}),h}static cdVersionHeader(l,u){return`application/vnd.ceph.api.v${l}.${u}+json`}}},99475:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>t});class t{propertyValue(s){return getComputedStyle(document.body).getPropertyValue(`--${s}`)}}},68136:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>e});var t=o(71225);class e{constructor(a){this.ngZone=a}setExpandedRow(a){this.expandedRow=a}setTableRefreshTimeout(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.tableStatus=new t.c("warning","The user list data might be stale. If needed, you can manually reload it.")})},1e4)})}}},69158:(Ge,g,o)=>{"use strict";o.d(g,{E:()=>s});var t=o(91801),e=o(71225);class s extends e.c{constructor(l=t.T.ValueOk,u=""){switch(super(),l){case t.T.ValueOk:this.type="light",this.msg="";break;case t.T.ValueNone:this.type="info",this.msg=(u?"Retrieving data for " + u + ".":"Retrieving data.")+" "+"Please wait...";break;case t.T.ValueStale:this.type="warning",this.msg=u?"Displaying previously cached data for " + u + ".":"Displaying previously cached data.";break;case t.T.ValueException:this.type="danger",this.msg=(u?"Could not load data for " + u + ".":"Could not load data.")+" "+"Please check the cluster health."}}}},71225:(Ge,g,o)=>{"use strict";o.d(g,{c:()=>t});class t{constructor(s="light",a=""){this.type=s,this.msg=a}}},34501:(Ge,g,o)=>{"use strict";o.d(g,{G:()=>z});var t=o(74788),e=o(65862),s=o(38549),a=o(12057);const l=function(U){return[U]};function u(U,M){if(1&U&&(t.TgZ(0,"td",8),t._UZ(1,"i",9),t.qZA()),2&U){const I=t.oxw(2);t.xp6(1),t.MT6("alert-",I.bootstrapClass," ",I.typeIcon,""),t.Q6J("ngClass",t.VKq(5,l,I.icons.large3x))}}function h(U,M){if(1&U&&(t.TgZ(0,"td",10),t._uU(1),t.qZA()),2&U){const I=t.oxw(2);t.xp6(1),t.Oqu(I.title)}}function _(U,M){1&U&&t.GkF(0)}function m(U,M){if(1&U&&(t.ynx(0),t.TgZ(1,"tr"),t.YNc(2,u,2,7,"td",4),t.YNc(3,h,2,1,"td",5),t.qZA(),t.TgZ(4,"tr"),t.TgZ(5,"td",6),t.YNc(6,_,1,0,"ng-container",7),t.qZA(),t.qZA(),t.BQk()),2&U){const I=t.oxw(),J=t.MAs(6);t.xp6(2),t.Q6J("ngIf",I.showIcon),t.xp6(1),t.Q6J("ngIf",I.showTitle),t.xp6(3),t.Q6J("ngTemplateOutlet",J)}}function b(U,M){if(1&U&&(t.TgZ(0,"td",12),t._UZ(1,"i",13),t.qZA()),2&U){const I=t.oxw(2);t.xp6(1),t.MT6("alert-",I.bootstrapClass," ",I.typeIcon,"")}}function C(U,M){if(1&U&&(t.TgZ(0,"td",10),t._uU(1),t.qZA()),2&U){const I=t.oxw(2);t.xp6(1),t.Oqu(I.title)}}function D(U,M){1&U&&t.GkF(0)}function x(U,M){if(1&U&&(t.TgZ(0,"tr"),t.YNc(1,b,2,4,"td",11),t.YNc(2,C,2,1,"td",5),t.TgZ(3,"td",6),t.YNc(4,D,1,0,"ng-container",7),t.qZA(),t.qZA()),2&U){const I=t.oxw(),J=t.MAs(6);t.xp6(1),t.Q6J("ngIf",I.showIcon),t.xp6(1),t.Q6J("ngIf",I.showTitle),t.xp6(2),t.Q6J("ngTemplateOutlet",J)}}function j(U,M){1&U&&t.Hsn(0)}const H=["*"];let z=(()=>{class U{constructor(){this.title="",this.bootstrapClass="",this.size="normal",this.showIcon=!0,this.showTitle=!0,this.dismissible=!1,this.dismissed=new t.vpe,this.icons=e.P}ngOnInit(){switch(this.type){case"warning":this.title=this.title||"Warning",this.typeIcon=this.typeIcon||e.P.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||"Error",this.typeIcon=this.typeIcon||e.P.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||"Information",this.typeIcon=this.typeIcon||e.P.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||"Success",this.typeIcon=this.typeIcon||e.P.check,this.bootstrapClass=this.bootstrapClass||"success";break;case"danger":this.title=this.title||"Danger",this.typeIcon=this.typeIcon||e.P.warning,this.bootstrapClass=this.bootstrapClass||"danger"}}onClose(){this.dismissed.emit()}}return U.\u0275fac=function(I){return new(I||U)},U.\u0275cmp=t.Xpm({type:U,selectors:[["cd-alert-panel"]],inputs:{title:"title",bootstrapClass:"bootstrapClass",type:"type",typeIcon:"typeIcon",size:"size",showIcon:"showIcon",showTitle:"showTitle",dismissible:"dismissible"},outputs:{dismissed:"dismissed"},ngContentSelectors:H,decls:7,vars:4,consts:[[3,"type","dismissible","closed"],[4,"ngIf","ngIfElse"],["slim",""],["content",""],["rowspan","2","class","alert-panel-icon",4,"ngIf"],["class","alert-panel-title",4,"ngIf"],[1,"alert-panel-text"],[4,"ngTemplateOutlet"],["rowspan","2",1,"alert-panel-icon"],["aria-hidden","true",3,"ngClass"],[1,"alert-panel-title"],["class","alert-panel-icon",4,"ngIf"],[1,"alert-panel-icon"],["aria-hidden","true"]],template:function(I,J){if(1&I&&(t.F$t(),t.TgZ(0,"ngb-alert",0),t.NdJ("closed",function(){return J.onClose()}),t.TgZ(1,"table"),t.YNc(2,m,7,3,"ng-container",1),t.YNc(3,x,5,3,"ng-template",null,2,t.W1O),t.qZA(),t.qZA(),t.YNc(5,j,1,0,"ng-template",null,3,t.W1O)),2&I){const Y=t.MAs(4);t.s9C("type",J.bootstrapClass),t.Q6J("dismissible",J.dismissible),t.xp6(2),t.Q6J("ngIf","normal"===J.size)("ngIfElse",Y)}},directives:[s.xm,a.O5,a.tP,a.mk],styles:[".alert-panel-icon[_ngcontent-%COMP%]{padding-right:.5em;vertical-align:top}.alert-panel-title[_ngcontent-%COMP%]{font-weight:bold}.alert[_ngcontent-%COMP%]{margin-bottom:0}"]}),U})()},13472:(Ge,g,o)=>{"use strict";o.d(g,{W:()=>l});var t=o(74788),e=o(79512),s=o(12057),a=o(87925);let l=(()=>{class u{constructor(_,m){this.location=_,this.actionLabels=m,this.backAction=new t.vpe,this.name=this.actionLabels.CANCEL}back(){0===this.backAction.observers.length?this.location.back():this.backAction.emit()}}return u.\u0275fac=function(_){return new(_||u)(t.Y36(s.Ye),t.Y36(e.p4))},u.\u0275cmp=t.Xpm({type:u,selectors:[["cd-back-button"]],inputs:{name:"name"},outputs:{backAction:"backAction"},decls:2,vars:1,consts:[["type","button",1,"btn","btn-light","tc_backButton",3,"click"]],template:function(_,m){1&_&&(t.TgZ(0,"button",0),t.NdJ("click",function(){return m.back()}),t._uU(1),t.qZA()),2&_&&(t.xp6(1),t.hij(" ",m.name,"\n"))},directives:[a.o],styles:[""]}),u})()},15626:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>C});var t=o(12057),e=o(24751),s=o(6283),a=o(38549),l=o(11971),u=o(7194),h=o(34863),_=o(35540),m=o(85953),b=o(74788);let C=(()=>{class D{}return D.\u0275fac=function(j){return new(j||D)},D.\u0275mod=b.oAB({type:D}),D.\u0275inj=b.cJS({providers:[],imports:[[t.ez,e.u5,e.UX,a._A,a.dT,a.ZQ,a.HK,u.m9,e.UX,m.D,_.o,a.XC,l.w,h.t,s.Bz,a.M,a.UL]]}),D})()},36169:(Ge,g,o)=>{"use strict";o.d(g,{Y:()=>C});var t=o(24751),e=o(74788),s=o(38549),a=o(60312),l=o(12057),u=o(41582),h=o(30839);function _(D,x){1&D&&(e.TgZ(0,"span",11),e._UZ(1,"i",12),e.qZA())}function m(D,x){1&D&&e.GkF(0)}function b(D,x){if(1&D&&(e.TgZ(0,"p"),e._uU(1),e.qZA()),2&D){const j=e.oxw();e.xp6(1),e.hij(" ",j.description," ")}}let C=(()=>{class D{constructor(j){this.activeModal=j,this.warning=!1,this.showSubmit=!0,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new t.cw({})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onCancel&&this.canceled&&this.onCancel()}cancel(){this.canceled=!0,this.activeModal.close()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}return D.\u0275fac=function(j){return new(j||D)(e.Y36(s.Kz))},D.\u0275cmp=e.Xpm({type:D,selectors:[["cd-confirmation-modal"]],decls:12,vars:9,consts:[[3,"hide"],[1,"modal-title"],["class","text-warning",4,"ngIf"],[1,"modal-content"],["name","confirmationForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent","backActionEvent"],[1,"text-warning"],[1,"fa","fa-exclamation-triangle","fa-1x"]],template:function(j,H){1&j&&(e.TgZ(0,"cd-modal",0),e.NdJ("hide",function(){return H.cancel()}),e.ynx(1,1),e.YNc(2,_,2,0,"span",2),e._uU(3),e.BQk(),e.ynx(4,3),e.TgZ(5,"form",4,5),e.TgZ(7,"div",6),e.YNc(8,m,1,0,"ng-container",7),e.YNc(9,b,2,1,"p",8),e.qZA(),e.TgZ(10,"div",9),e.TgZ(11,"cd-form-button-panel",10),e.NdJ("submitActionEvent",function(){return H.onSubmit(H.confirmationForm.value)})("backActionEvent",function(){return H.boundCancel()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&j&&(e.xp6(2),e.Q6J("ngIf",H.warning),e.xp6(1),e.Oqu(H.titleText),e.xp6(2),e.Q6J("formGroup",H.confirmationForm),e.xp6(3),e.Q6J("ngTemplateOutlet",H.bodyTpl)("ngTemplateOutletContext",H.bodyContext),e.xp6(1),e.Q6J("ngIf",H.description),e.xp6(2),e.Q6J("form",H.confirmationForm)("submitText",H.buttonText)("showSubmit",H.showSubmit))},directives:[a.z,l.O5,t._Y,t.JL,t.sg,u.V,l.tP,h.p],styles:[""]}),D})()},58039:(Ge,g,o)=>{"use strict";o.d(g,{s:()=>_});var t=o(97057),e=o(65862),s=o(74788),a=o(91376),l=o(87925),u=o(12057);const h=function(m){return[m]};let _=(()=>{class m{constructor(C){this.toastr=C,this.byId=!0,this.icons=e.P}getText(){return document.getElementById(this.source).value}onClick(){try{const C=(0,t.qY)(),D=this.byId?this.getText():this.source,x=()=>{this.toastr.success("Copied text to the clipboard successfully.")};["firefox","ie","ios","safari"].includes(C.name)?navigator.clipboard.writeText(D).then(()=>x()):navigator.permissions.query({name:"clipboard-write"}).then(j=>{("granted"===j.state||"prompt"===j.state)&&navigator.clipboard.writeText(D).then(()=>x())})}catch(C){this.toastr.error("Failed to copy text to the clipboard.")}}}return m.\u0275fac=function(C){return new(C||m)(s.Y36(a._W))},m.\u0275cmp=s.Xpm({type:m,selectors:[["cd-copy-2-clipboard-button"]],hostBindings:function(C,D){1&C&&s.NdJ("click",function(){return D.onClick()})},inputs:{source:"source",byId:"byId"},decls:2,vars:3,consts:function(){let b;return b="Copy to Clipboard",[["type","button","title",b,1,"btn","btn-light",3,"click"],[3,"ngClass"]]},template:function(C,D){1&C&&(s.TgZ(0,"button",0),s.NdJ("click",function(){return D.onClick()}),s._UZ(1,"i",1),s.qZA()),2&C&&(s.xp6(1),s.Q6J("ngClass",s.VKq(1,h,D.icons.clipboard)))},directives:[l.o,u.mk],styles:[""]}),m})()},30982:(Ge,g,o)=>{"use strict";o.d(g,{M:()=>fe});var t=o(24751),e=o(95463),s=o(39749),a=o(74788),l=o(38549),u=o(60312),h=o(12057),_=o(41582),m=o(56310),b=o(87925),C=o(94276),D=o(82945),x=o(30839);function j(ne,he){1&ne&&a.GkF(0)}function H(ne,he){1&ne&&a.GkF(0)}function z(ne,he){if(1&ne&&(a.TgZ(0,"p"),a.tHW(1,21),a.ALo(2,"lowercase"),a._UZ(3,"strong"),a.N_p(),a.qZA()),2&ne){const ce=a.oxw(2);a.xp6(3),a.pQV(a.lcZ(2,2,ce.actionDescription))(ce.itemNames[0]),a.QtT(1)}}function U(ne,he){if(1&ne&&(a.TgZ(0,"li"),a.TgZ(1,"strong"),a._uU(2),a.qZA(),a.qZA()),2&ne){const ce=he.$implicit;a.xp6(2),a.Oqu(ce)}}function M(ne,he){if(1&ne&&(a.TgZ(0,"p"),a.SDv(1,22),a.ALo(2,"lowercase"),a.qZA(),a.TgZ(3,"ul"),a.YNc(4,U,3,1,"li",23),a.qZA()),2&ne){const ce=a.oxw(2);a.xp6(2),a.pQV(a.lcZ(2,2,ce.actionDescription)),a.QtT(1),a.xp6(2),a.Q6J("ngForOf",ce.itemNames)}}function I(ne,he){if(1&ne&&(a.TgZ(0,"span"),a.YNc(1,z,4,4,"p",10),a.YNc(2,M,5,4,"ng-template",null,20,a.W1O),a.qZA()),2&ne){const ce=a.MAs(3),Ae=a.oxw();a.xp6(1),a.Q6J("ngIf",1===Ae.itemNames.length)("ngIfElse",ce)}}function J(ne,he){if(1&ne&&(a.TgZ(0,"p"),a.SDv(1,24),a.ALo(2,"lowercase"),a.qZA()),2&ne){const ce=a.oxw();a.xp6(2),a.pQV(a.lcZ(2,2,ce.actionDescription))(ce.itemDescription),a.QtT(1)}}function Y(ne,he){1&ne&&a.GkF(0)}function ie(ne,he){if(1&ne&&(a._uU(0),a.ALo(1,"titlecase")),2&ne){const ce=a.oxw();a.AsE(" ",a.lcZ(1,2,ce.actionDescription)," ",ce.itemDescription,"\n")}}const oe=function(ne){return{form:ne}};let fe=(()=>{class ne{constructor(ce){this.activeModal=ce,this.actionDescription="delete"}ngOnInit(){const ce={confirmation:new t.NI(!1,[t.kI.requiredTrue])};if(this.childFormGroup&&(ce.child=this.childFormGroup),this.deletionForm=new e.d(ce),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe({error:this.stopLoadingSpinner.bind(this),complete:this.hideModal.bind(this)}):this.submitAction()}hideModal(){this.activeModal.close()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}return ne.\u0275fac=function(ce){return new(ce||ne)(a.Y36(l.Kz))},ne.\u0275cmp=a.Xpm({type:ne,selectors:[["cd-deletion-modal"]],viewQuery:function(ce,Ae){if(1&ce&&a.Gf(s.w,7),2&ce){let Me;a.iGM(Me=a.CRH())&&(Ae.submitButton=Me.first)}},decls:24,vars:15,consts:function(){let he,ce,Ae,Me;return he="Yes, I am sure.",ce="Are you sure that you want to " + "\ufffd0\ufffd" + " " + "\ufffd#3\ufffd" + "" + "\ufffd1\ufffd" + "" + "\ufffd/#3\ufffd" + "?",Ae="Are you sure that you want to " + "\ufffd0\ufffd" + " the selected items?",Me="Are you sure that you want to " + "\ufffd0\ufffd" + " the selected " + "\ufffd1\ufffd" + "?",[[3,"modalRef"],["modal",""],[1,"modal-title"],[4,"ngTemplateOutlet"],[1,"modal-content"],["name","deletionForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"question"],[4,"ngIf","ngIfElse"],["noNames",""],[1,"form-group"],[1,"custom-control","custom-checkbox"],["type","checkbox","name","confirmation","id","confirmation","formControlName","confirmation","autofocus","",1,"custom-control-input"],["for","confirmation",1,"custom-control-label"],he,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["deletionHeading",""],["manyNames",""],ce,Ae,[4,"ngFor","ngForOf"],Me]},template:function(ce,Ae){if(1&ce&&(a.TgZ(0,"cd-modal",0,1),a.ynx(2,2),a.YNc(3,j,1,0,"ng-container",3),a.BQk(),a.ynx(4,4),a.TgZ(5,"form",5,6),a.TgZ(7,"div",7),a.YNc(8,H,1,0,"ng-container",8),a.TgZ(9,"div",9),a.YNc(10,I,4,2,"span",10),a.YNc(11,J,3,4,"ng-template",null,11,a.W1O),a.YNc(13,Y,1,0,"ng-container",8),a.TgZ(14,"div",12),a.TgZ(15,"div",13),a._UZ(16,"input",14),a.TgZ(17,"label",15),a.SDv(18,16),a.qZA(),a.qZA(),a.qZA(),a.qZA(),a.qZA(),a.TgZ(19,"div",17),a.TgZ(20,"cd-form-button-panel",18),a.NdJ("submitActionEvent",function(){return Ae.callSubmitAction()}),a.ALo(21,"titlecase"),a.qZA(),a.qZA(),a.qZA(),a.BQk(),a.qZA(),a.YNc(22,ie,2,4,"ng-template",null,19,a.W1O)),2&ce){const Me=a.MAs(12),Oe=a.MAs(23);a.Q6J("modalRef",Ae.activeModal),a.xp6(3),a.Q6J("ngTemplateOutlet",Oe),a.xp6(2),a.Q6J("formGroup",Ae.deletionForm),a.xp6(3),a.Q6J("ngTemplateOutlet",Ae.bodyTemplate)("ngTemplateOutletContext",Ae.bodyContext),a.xp6(2),a.Q6J("ngIf",Ae.itemNames)("ngIfElse",Me),a.xp6(3),a.Q6J("ngTemplateOutlet",Ae.childFormGroupTemplate)("ngTemplateOutletContext",a.VKq(13,oe,Ae.deletionForm)),a.xp6(7),a.Q6J("form",Ae.deletionForm)("submitText",a.lcZ(21,11,Ae.actionDescription)+" "+Ae.itemDescription)}},directives:[u.z,h.tP,t._Y,t.JL,t.sg,_.V,h.O5,m.P,b.o,t.Wl,C.b,t.JJ,t.u,D.U,x.p,h.sg],pipes:[h.rS,h.i8],styles:[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:bold}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]}),ne})()},52266:(Ge,g,o)=>{"use strict";o.d(g,{J:()=>_});var t=o(16738),e=o.n(t),s=o(74788),a=o(38549),l=o(24751),u=o(12057);function h(m,b){if(1&m){const C=s.EpF();s.TgZ(0,"div",0),s.TgZ(1,"ngb-timepicker",4),s.NdJ("ngModelChange",function(x){return s.CHM(C),s.oxw().time=x})("ngModelChange",function(){return s.CHM(C),s.oxw().onModelChange()}),s.qZA(),s.qZA()}if(2&m){const C=s.oxw();s.xp6(1),s.Q6J("seconds",C.hasSeconds)("ngModel",C.time)}}let _=(()=>{class m{constructor(C){this.calendar=C,this.hasSeconds=!0,this.hasTime=!0}ngOnInit(){var C;this.minDate=this.calendar.getToday(),this.format=this.hasTime?this.hasSeconds?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm":"YYYY-MM-DD";let D=e()(null===(C=this.control)||void 0===C?void 0:C.value,this.format);(!D.isValid()||D.isBefore(e()()))&&(D=e()()),this.date={year:D.year(),month:D.month()+1,day:D.date()},this.time={hour:D.hour(),minute:D.minute(),second:D.second()},this.onModelChange()}onModelChange(){if(this.date){const C=Object.assign({},this.date,this.time);C.month--,setTimeout(()=>{this.control.setValue(e()(C).format(this.format))})}else setTimeout(()=>{this.control.setValue("")})}}return m.\u0275fac=function(C){return new(C||m)(s.Y36(a.vL))},m.\u0275cmp=s.Xpm({type:m,selectors:[["cd-date-time-picker"]],inputs:{control:"control",hasSeconds:"hasSeconds",hasTime:"hasTime"},decls:4,vars:3,consts:[[1,"d-flex","justify-content-center"],[3,"ngModel","minDate","ngModelChange"],["dp",""],["class","d-flex justify-content-center",4,"ngIf"],[3,"seconds","ngModel","ngModelChange"]],template:function(C,D){1&C&&(s.TgZ(0,"div",0),s.TgZ(1,"ngb-datepicker",1,2),s.NdJ("ngModelChange",function(j){return D.date=j})("ngModelChange",function(){return D.onModelChange()}),s.qZA(),s.qZA(),s.YNc(3,h,2,2,"div",3)),2&C&&(s.xp6(1),s.Q6J("ngModel",D.date)("minDate",D.minDate),s.xp6(2),s.Q6J("ngIf",D.hasTime))},directives:[a.VL,l.JJ,l.On,u.O5,a.Pm],styles:[""]}),m})()},30490:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>s});var t=o(72625),e=o(74788);let s=(()=>{class a{constructor(u){this.docService=u,this.docText="documentation"}ngOnInit(){this.noSubscribe?this.docUrl=this.docService.urlGenerator(this.section):this.docService.subscribeOnce(this.section,u=>{this.docUrl=u})}}return a.\u0275fac=function(u){return new(u||a)(e.Y36(t.R))},a.\u0275cmp=e.Xpm({type:a,selectors:[["cd-doc"]],inputs:{section:"section",docText:"docText",noSubscribe:"noSubscribe"},decls:2,vars:2,consts:[["target","_blank",3,"href"]],template:function(u,h){1&u&&(e.TgZ(0,"a",0),e._uU(1),e.qZA()),2&u&&(e.s9C("href",h.docUrl,e.LSH),e.xp6(1),e.Oqu(h.docText))},styles:[""]}),a})()},30839:(Ge,g,o)=>{"use strict";o.d(g,{p:()=>_});var t=o(74788),e=o(79512),s=o(39749),a=o(12057),l=o(63285),u=o(13472);function h(m,b){if(1&m){const C=t.EpF();t.TgZ(0,"cd-submit-button",2),t.NdJ("submitAction",function(){return t.CHM(C),t.oxw().submitAction()}),t._uU(1),t.qZA()}if(2&m){const C=t.oxw();t.Q6J("disabled",C.disabled)("form",C.form),t.xp6(1),t.Oqu(C.submitText)}}let _=(()=>{class m{constructor(C,D,x){this.location=C,this.actionLabels=D,this.modalService=x,this.submitActionEvent=new t.vpe,this.backActionEvent=new t.vpe,this.showSubmit=!0,this.wrappingClass="",this.btnClass="",this.submitText=this.actionLabels.CREATE,this.cancelText=this.actionLabels.CANCEL,this.disabled=!1}submitAction(){this.submitActionEvent.emit()}backAction(){0===this.backActionEvent.observers.length?this.modalService.hasOpenModals()?this.modalService.dismissAll():this.location.back():this.backActionEvent.emit()}}return m.\u0275fac=function(C){return new(C||m)(t.Y36(a.Ye),t.Y36(e.p4),t.Y36(l.Z))},m.\u0275cmp=t.Xpm({type:m,selectors:[["cd-form-button-panel"]],viewQuery:function(C,D){if(1&C&&t.Gf(s.w,5),2&C){let x;t.iGM(x=t.CRH())&&(D.submitButton=x.first)}},inputs:{form:"form",showSubmit:"showSubmit",wrappingClass:"wrappingClass",btnClass:"btnClass",submitText:"submitText",cancelText:"cancelText",disabled:"disabled"},outputs:{submitActionEvent:"submitActionEvent",backActionEvent:"backActionEvent"},decls:3,vars:4,consts:[[1,"m-2",3,"name","backAction"],["data-cy","submitBtn",3,"disabled","form","submitAction",4,"ngIf"],["data-cy","submitBtn",3,"disabled","form","submitAction"]],template:function(C,D){1&C&&(t.TgZ(0,"div"),t.TgZ(1,"cd-back-button",0),t.NdJ("backAction",function(){return D.backAction()}),t.qZA(),t.YNc(2,h,2,3,"cd-submit-button",1),t.qZA()),2&C&&(t.Tol(D.wrappingClass),t.xp6(1),t.Q6J("name",D.cancelText),t.xp6(1),t.Q6J("ngIf",D.showSubmit))},directives:[u.W,a.O5,s.w],styles:[""]}),m})()},65683:(Ge,g,o)=>{"use strict";o.d(g,{X:()=>be});var t=o(24751),e=o(23815),s=o.n(e),a=o(47557),l=o(28211),u=o(74788),h=o(38549),_=o(62862),m=o(60312),b=o(12057),C=o(41582),D=o(30839),x=o(87925),j=o(94276),H=o(17932),z=o(60192);function U(ue,He){if(1&ue&&(u.ynx(0,10),u._uU(1),u.BQk()),2&ue){const $e=u.oxw();u.xp6(1),u.hij(" ",$e.titleText," ")}}function M(ue,He){if(1&ue&&(u.TgZ(0,"p"),u._uU(1),u.qZA()),2&ue){const $e=u.oxw();u.xp6(1),u.Oqu($e.message)}}const I=function(ue){return{required:ue}};function J(ue,He){if(1&ue&&(u.TgZ(0,"label",18),u._uU(1),u.qZA()),2&ue){const $e=u.oxw().$implicit;u.Q6J("ngClass",u.VKq(3,I,!0===(null==$e?null:$e.required)))("for",$e.name),u.xp6(1),u.hij(" ",$e.label," ")}}function Y(ue,He){if(1&ue&&u._UZ(0,"input",19),2&ue){const $e=u.oxw().$implicit;u.Q6J("type",$e.type)("id",$e.name)("name",$e.name)("formControlName",$e.name)}}function ie(ue,He){if(1&ue&&u._UZ(0,"input",20),2&ue){const $e=u.oxw().$implicit;u.Q6J("id",$e.name)("name",$e.name)("formControlName",$e.name)}}function oe(ue,He){if(1&ue&&(u.TgZ(0,"option",24),u._uU(1),u.qZA()),2&ue){const $e=u.oxw(2).$implicit;u.Q6J("ngValue",null),u.xp6(1),u.hij(" ",null==$e||null==$e.typeConfig?null:$e.typeConfig.placeholder," ")}}function fe(ue,He){if(1&ue&&(u.TgZ(0,"option",25),u._uU(1),u.qZA()),2&ue){const $e=He.$implicit;u.Q6J("value",$e.value),u.xp6(1),u.hij(" ",$e.text," ")}}function ne(ue,He){if(1&ue&&(u.TgZ(0,"select",21),u.YNc(1,oe,2,2,"option",22),u.YNc(2,fe,2,2,"option",23),u.qZA()),2&ue){const $e=u.oxw().$implicit;u.Q6J("id",$e.name)("formControlName",$e.name),u.xp6(1),u.Q6J("ngIf",null==$e||null==$e.typeConfig?null:$e.typeConfig.placeholder),u.xp6(1),u.Q6J("ngForOf",null==$e||null==$e.typeConfig?null:$e.typeConfig.options)}}function he(ue,He){if(1&ue&&u._UZ(0,"cd-select-badges",26),2&ue){const $e=u.oxw().$implicit;u.Q6J("id",$e.name)("data",$e.value)("customBadges",null==$e||null==$e.typeConfig?null:$e.typeConfig.customBadges)("options",null==$e||null==$e.typeConfig?null:$e.typeConfig.options)("messages",null==$e||null==$e.typeConfig?null:$e.typeConfig.messages)}}function ce(ue,He){if(1&ue&&(u.TgZ(0,"span",27),u._uU(1),u.qZA()),2&ue){const $e=u.oxw().$implicit,F=u.oxw();u.xp6(1),u.hij(" ",F.getError($e)," ")}}const Ae=function(ue,He){return{"cd-col-form-input":ue,"col-sm-12":He}},Me=function(){return["text","number"]};function Oe(ue,He){if(1&ue&&(u.ynx(0),u.TgZ(1,"div"),u.YNc(2,J,2,5,"label",11),u.TgZ(3,"div",12),u.YNc(4,Y,1,4,"input",13),u.YNc(5,ie,1,3,"input",14),u.YNc(6,ne,3,4,"select",15),u.YNc(7,he,1,5,"cd-select-badges",16),u.YNc(8,ce,2,1,"span",17),u.qZA(),u.qZA(),u.BQk()),2&ue){const $e=He.$implicit,F=u.oxw(),je=u.MAs(4);u.xp6(1),u.Gre("form-group row cd-",$e.name,"-form-group"),u.xp6(1),u.Q6J("ngIf",$e.label),u.xp6(1),u.Q6J("ngClass",u.WLB(10,Ae,$e.label,!$e.label)),u.xp6(1),u.Q6J("ngIf",u.DdM(13,Me).includes($e.type)),u.xp6(1),u.Q6J("ngIf","binary"===$e.type),u.xp6(1),u.Q6J("ngIf","select"===$e.type),u.xp6(1),u.Q6J("ngIf","select-badges"===$e.type),u.xp6(1),u.Q6J("ngIf",F.formGroup.showError($e.name,je))}}let be=(()=>{class ue{constructor($e,F,je,Et){this.activeModal=$e,this.formBuilder=F,this.formatter=je,this.dimlessBinaryPipe=Et}ngOnInit(){this.createForm()}createForm(){const $e={};this.fields.forEach(F=>{$e[F.name]=this.createFormControl(F)}),this.formGroup=this.formBuilder.group($e)}createFormControl($e){let F=[];return s().isBoolean($e.required)&&$e.required&&F.push(t.kI.required),$e.validators&&(F=F.concat($e.validators)),new t.NI(s().defaultTo("binary"===$e.type?this.dimlessBinaryPipe.transform($e.value):$e.value,null),{validators:F})}getError($e){const F=this.formGroup.get($e.name).errors;return Object.keys(F).map(Et=>this.getErrorMessage(Et,F[Et],$e.errors)).join("<br>")}getErrorMessage($e,F,je){if(je){const Et=je[$e];if(Et)return Et}return["binaryMin","binaryMax"].includes($e)?F():"required"===$e?"This field is required.":"An error occurred."}onSubmitForm($e){this.fields.filter(je=>"binary"===je.type).map(je=>je.name).forEach(je=>{const Et=$e[je];Et&&($e[je]=this.formatter.toBytes(Et))}),this.activeModal.close(),s().isFunction(this.onSubmit)&&this.onSubmit($e)}}return ue.\u0275fac=function($e){return new($e||ue)(u.Y36(h.Kz),u.Y36(_.O),u.Y36(l.H),u.Y36(a.$))},ue.\u0275cmp=u.Xpm({type:ue,selectors:[["cd-form-modal"]],decls:10,vars:7,consts:[[3,"modalRef"],["class","modal-title",4,"ngIf"],[1,"modal-content"],["novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"modal-title"],["class","cd-col-form-label",3,"ngClass","for",4,"ngIf"],[3,"ngClass"],["class","form-control",3,"type","id","name","formControlName",4,"ngIf"],["type","text","class","form-control","cdDimlessBinary","",3,"id","name","formControlName",4,"ngIf"],["class","form-control",3,"id","formControlName",4,"ngIf"],[3,"id","data","customBadges","options","messages",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-label",3,"ngClass","for"],[1,"form-control",3,"type","id","name","formControlName"],["type","text","cdDimlessBinary","",1,"form-control",3,"id","name","formControlName"],[1,"form-control",3,"id","formControlName"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],[3,"value"],[3,"id","data","customBadges","options","messages"],[1,"invalid-feedback"]],template:function($e,F){1&$e&&(u.TgZ(0,"cd-modal",0),u.YNc(1,U,2,1,"ng-container",1),u.ynx(2,2),u.TgZ(3,"form",3,4),u.TgZ(5,"div",5),u.YNc(6,M,2,1,"p",6),u.YNc(7,Oe,9,14,"ng-container",7),u.qZA(),u.TgZ(8,"div",8),u.TgZ(9,"cd-form-button-panel",9),u.NdJ("submitActionEvent",function(){return F.onSubmitForm(F.formGroup.value)}),u.qZA(),u.qZA(),u.qZA(),u.BQk(),u.qZA()),2&$e&&(u.Q6J("modalRef",F.activeModal),u.xp6(1),u.Q6J("ngIf",F.titleText),u.xp6(2),u.Q6J("formGroup",F.formGroup),u.xp6(3),u.Q6J("ngIf",F.message),u.xp6(1),u.Q6J("ngForOf",F.fields),u.xp6(2),u.Q6J("form",F.formGroup)("submitText",F.submitButtonText))},directives:[m.z,b.O5,t._Y,t.JL,t.sg,C.V,b.sg,D.p,b.mk,x.o,t.Fj,j.b,t.JJ,t.u,H.Q,t.EJ,t.YN,t.Kr,z.m],styles:[""]}),ue})()},76317:(Ge,g,o)=>{"use strict";o.d(g,{F:()=>U});var t=o(9837),e=o(65862),s=o(74788),a=o(91211),l=o(12057),u=o(8958),h=o(34501),_=o(30490),m=o(87925),b=o(24751);function C(M,I){1&M&&(s.TgZ(0,"cd-loading-panel"),s.SDv(1,2),s.qZA())}function D(M,I){1&M&&(s.TgZ(0,"cd-alert-panel",3),s.tHW(1,4),s._UZ(2,"cd-doc",5),s.N_p(),s.qZA())}function x(M,I){1&M&&(s.TgZ(0,"cd-alert-panel",3),s.tHW(1,6),s._UZ(2,"cd-doc",5),s.N_p(),s.qZA())}function j(M,I){if(1&M&&(s.TgZ(0,"option",19),s._uU(1),s.qZA()),2&M){const J=I.$implicit;s.Q6J("ngValue",J.value),s.xp6(1),s.hij("",J.name," ")}}const H=function(M){return[M]};function z(M,I){if(1&M){const J=s.EpF();s.ynx(0),s.TgZ(1,"div",7),s.TgZ(2,"div",8),s.TgZ(3,"div",9),s.TgZ(4,"label",10),s.SDv(5,11),s.qZA(),s.TgZ(6,"select",12),s.NdJ("ngModelChange",function(ie){return s.CHM(J),s.oxw().time=ie})("ngModelChange",function(ie){return s.CHM(J),s.oxw().onTimepickerChange(ie)}),s.YNc(7,j,2,2,"option",13),s.qZA(),s.TgZ(8,"button",14),s.NdJ("click",function(){return s.CHM(J),s.oxw().reset()}),s._UZ(9,"i",15),s.qZA(),s.qZA(),s.qZA(),s.qZA(),s.TgZ(10,"div",7),s.TgZ(11,"div",8),s.TgZ(12,"div",16),s._UZ(13,"iframe",17,18),s.qZA(),s.qZA(),s.qZA(),s.BQk()}if(2&M){const J=s.oxw();s.xp6(6),s.Q6J("ngModel",J.time),s.xp6(1),s.Q6J("ngForOf",J.grafanaTimes),s.xp6(2),s.Q6J("ngClass",s.VKq(5,H,J.icons.undo)),s.xp6(4),s.Q6J("src",J.grafanaSrc,s.uOi)("ngClass",J.panelStyle)}}let U=(()=>{class M{constructor(J,Y){this.sanitizer=J,this.settingsService=Y,this.grafanaExist=!1,this.mode="&kiosk",this.datasource="Dashboard1",this.loading=!0,this.styles={},this.dashboardExist=!0,this.icons=e.P,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:"Last 5 minutes",value:"from=now-5m&to=now"},{name:"Last 15 minutes",value:"from=now-15m&to=now"},{name:"Last 30 minutes",value:"from=now-30m&to=now"},{name:"Last 1 hour (Default)",value:"from=now-1h&to=now"},{name:"Last 3 hours",value:"from=now-3h&to=now"},{name:"Last 6 hours",value:"from=now-6h&to=now"},{name:"Last 12 hours",value:"from=now-12h&to=now"},{name:"Last 24 hours",value:"from=now-24h&to=now"},{name:"Yesterday",value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:"Today so far",value:"from=now%2Fd&to=now"},{name:"Day before yesterday",value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:"Last 2 days",value:"from=now-2d&to=now"},{name:"This day last week",value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:"Previous week",value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:"This week so far",value:"from=now%2Fw&to=now"},{name:"Last 7 days",value:"from=now-7d&to=now"},{name:"Previous month",value:"from=now-1M%2FM&to=now-1M%2FM"},{name:"This month so far",value:"from=now%2FM&to=now"},{name:"Last 30 days",value:"from=now-30d&to=now"},{name:"Last 90 days",value:"from=now-90d&to=now"},{name:"Last 6 months",value:"from=now-6M&to=now"},{name:"Last 1 year",value:"from=now-1y&to=now"},{name:"Previous year",value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:"This year so far",value:"from=now%2Fy&to=now"},{name:"Last 2 years",value:"from=now-2y&to=now"},{name:"Last 5 years",value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three",four:"grafana_four"},this.settingsService.ifSettingConfigured("api/grafana/url",J=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=J+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(J=>this.dashboardExist=200===J),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+`&refresh=2s&var-datasource=${this.datasource}`+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}return M.\u0275fac=function(J){return new(J||M)(s.Y36(a.H7),s.Y36(t.g))},M.\u0275cmp=s.Xpm({type:M,selectors:[["cd-grafana"]],inputs:{grafanaPath:"grafanaPath",grafanaStyle:"grafanaStyle",uid:"uid"},features:[s.TTD],decls:4,vars:4,consts:function(){let I,J,Y,ie,oe;return I="Loading panel data...",J="Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to configure and enable the monitoring functionality.",Y="Grafana Dashboard doesn't exist. Please refer to " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to add dashboards to Grafana.",ie="Grafana Time Picker",oe="Reset Settings",[[4,"ngIf"],["type","info",4,"ngIf"],I,["type","info"],J,["section","grafana"],Y,[1,"row"],[1,"col"],[1,"form-inline","timepicker"],["for","timepicker",1,"ml-1","my-1"],ie,["id","timepicker","name","timepicker",1,"custom-select","my-1","mx-3",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],["title",oe,1,"btn","btn-light","my-1",3,"click"],[3,"ngClass"],[1,"grafana-container"],["id","iframe","frameborder","0","scrolling","no",1,"grafana",3,"src","ngClass"],["iframe",""],[3,"ngValue"]]},template:function(J,Y){1&J&&(s.YNc(0,C,2,0,"cd-loading-panel",0),s.YNc(1,D,3,0,"cd-alert-panel",1),s.YNc(2,x,3,0,"cd-alert-panel",1),s.YNc(3,z,15,7,"ng-container",0)),2&J&&(s.Q6J("ngIf",Y.loading&&Y.grafanaExist),s.xp6(1),s.Q6J("ngIf",!Y.grafanaExist),s.xp6(1),s.Q6J("ngIf",!Y.dashboardExist),s.xp6(1),s.Q6J("ngIf",Y.grafanaExist&&Y.dashboardExist))},directives:[l.O5,u.b,h.G,_.K,m.o,b.EJ,b.JJ,b.On,l.sg,l.mk,b.YN,b.Kr],styles:[".grafana[_ngcontent-%COMP%]{height:600px;width:100%;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.grafana_four[_ngcontent-%COMP%]{height:1160px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{left:auto;right:20px;top:20px}"]}),M})()},18372:(Ge,g,o)=>{"use strict";o.d(g,{S:()=>_});var t=o(65862),e=o(74788),s=o(12057),a=o(38549);function l(m,b){if(1&m&&(e._UZ(0,"div",2),e.Hsn(1)),2&m){const C=e.oxw();e.Tol(C.class),e.Q6J("innerHtml",C.html,e.oJD)}}const u=function(m){return[m]},h=["*"];let _=(()=>{class m{constructor(){this.icons=t.P}}return m.\u0275fac=function(C){return new(C||m)},m.\u0275cmp=e.Xpm({type:m,selectors:[["cd-helper"]],inputs:{class:"class",html:"html"},ngContentSelectors:h,decls:3,vars:4,consts:[["popoverTpl",""],["aria-hidden","true",3,"ngClass","ngbPopover","click"],[3,"innerHtml"]],template:function(C,D){if(1&C&&(e.F$t(),e.YNc(0,l,2,3,"ng-template",null,0,e.W1O),e.TgZ(2,"i",1),e.NdJ("click",function(j){return j.preventDefault()}),e.qZA()),2&C){const x=e.MAs(1);e.xp6(2),e.Q6J("ngClass",e.VKq(2,u,D.icons.questionCircle))("ngbPopover",x)}},directives:[s.mk,a.o8],styles:["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]}),m})()},8958:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>h});var t=o(65862),e=o(74788),s=o(38549),a=o(12057);const l=function(_,m){return[_,m]},u=["*"];let h=(()=>{class _{constructor(){this.icons=t.P}}return _.\u0275fac=function(b){return new(b||_)},_.\u0275cmp=e.Xpm({type:_,selectors:[["cd-loading-panel"]],ngContentSelectors:u,decls:4,vars:5,consts:[["type","info",3,"dismissible"],["aria-hidden","true",1,"mr-2",3,"ngClass"]],template:function(b,C){1&b&&(e.F$t(),e.TgZ(0,"ngb-alert",0),e.TgZ(1,"strong"),e._UZ(2,"i",1),e.qZA(),e.Hsn(3),e.qZA()),2&b&&(e.Q6J("dismissible",!1),e.xp6(2),e.Q6J("ngClass",e.WLB(2,l,C.icons.spinner,C.icons.spin)))},directives:[s.xm,a.mk],styles:[""]}),_})()},60312:(Ge,g,o)=>{"use strict";o.d(g,{z:()=>h});var t=o(74788),e=o(6283),s=o(12057),a=o(87925);const l=[[["",8,"modal-title"]],[["",8,"modal-content"]]],u=[".modal-title",".modal-content"];let h=(()=>{class _{constructor(b){this.router=b,this.hide=new t.vpe}close(){var b;this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):null===(b=this.modalRef)||void 0===b||b.close(),this.hide.emit()}}return _.\u0275fac=function(b){return new(b||_)(t.Y36(e.F0))},_.\u0275cmp=t.Xpm({type:_,selectors:[["cd-modal"]],inputs:{modalRef:"modalRef",pageURL:"pageURL"},outputs:{hide:"hide"},ngContentSelectors:u,decls:10,vars:2,consts:[[3,"ngClass"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title","float-left"],["type","button","aria-label","Close",1,"close","float-right",3,"click"],["aria-hidden","true"]],template:function(b,C){1&b&&(t.F$t(l),t.TgZ(0,"div",0),t.TgZ(1,"div",0),t.TgZ(2,"div",1),t.TgZ(3,"div",2),t.TgZ(4,"h4",3),t.Hsn(5),t.qZA(),t.TgZ(6,"button",4),t.NdJ("click",function(){return C.close()}),t.TgZ(7,"span",5),t._uU(8,"\xd7"),t.qZA(),t.qZA(),t.qZA(),t.Hsn(9,1),t.qZA(),t.qZA(),t.qZA()),2&b&&(t.Q6J("ngClass",C.pageURL?"modal":""),t.xp6(1),t.Q6J("ngClass",C.pageURL?"modal-dialog":""))},directives:[s.mk,a.o],styles:[".modal-header[_ngcontent-%COMP%]{background-color:#e9ecef;border-bottom:1px solid #ced4da;border-radius:5px 5px 0 0}  cd-modal .modal-footer{background-color:#e9ecef;border-bottom:1px solid #ced4da;border-radius:0 0 5px 5px}  cd-modal .modal-body{max-height:70vh;overflow-x:hidden;overflow-y:auto}button.close[_ngcontent-%COMP%]{outline:none}"]}),_})()},60192:(Ge,g,o)=>{"use strict";o.d(g,{m:()=>m});var t=o(74788),e=o(65862),s=o(7022),a=o(39092),l=o(12057);const u=["cdSelect"],h=function(b){return[b]};function _(b,C){if(1&b){const D=t.EpF();t.TgZ(0,"span"),t.TgZ(1,"span",4),t.TgZ(2,"span",5),t._uU(3),t.qZA(),t.TgZ(4,"a",6),t.NdJ("click",function(){const H=t.CHM(D).$implicit;return t.oxw(),t.MAs(1).removeItem(H)}),t._UZ(5,"i",7),t.qZA(),t.qZA(),t.qZA()}if(2&b){const D=C.$implicit,x=t.oxw();t.xp6(3),t.Oqu(D),t.xp6(2),t.Q6J("ngClass",t.VKq(2,h,x.icons.destroy))}}let m=(()=>{class b{constructor(){this.data=[],this.options=[],this.messages=new s.a({}),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new t.vpe,this.icons=e.P}}return b.\u0275fac=function(D){return new(D||b)},b.\u0275cmp=t.Xpm({type:b,selectors:[["cd-select-badges"]],viewQuery:function(D,x){if(1&D&&t.Gf(u,7),2&D){let j;t.iGM(j=t.CRH())&&(x.cdSelect=j.first)}},inputs:{data:"data",options:"options",messages:"messages",selectionLimit:"selectionLimit",customBadges:"customBadges",customBadgeValidators:"customBadgeValidators"},outputs:{selection:"selection"},decls:4,vars:10,consts:[["elemClass","mr-2 select-menu-edit",3,"data","options","messages","selectionLimit","customBadges","customBadgeValidators","selection"],["cdSelect",""],[3,"ngClass"],[4,"ngFor","ngForOf"],[1,"badge","badge-dark","mr-2"],[1,"mr-2"],[1,"badge-remove",3,"click"],["aria-hidden","true",3,"ngClass"]],template:function(D,x){1&D&&(t.TgZ(0,"cd-select",0,1),t.NdJ("selection",function(H){return x.selection.emit(H)}),t._UZ(2,"i",2),t.qZA(),t.YNc(3,_,6,4,"span",3)),2&D&&(t.Q6J("data",x.data)("options",x.options)("messages",x.messages)("selectionLimit",x.selectionLimit)("customBadges",x.customBadges)("customBadgeValidators",x.customBadgeValidators),t.xp6(2),t.Q6J("ngClass",t.VKq(8,h,x.icons.edit)),t.xp6(1),t.Q6J("ngForOf",x.data))},directives:[a.H,l.mk,l.sg],styles:[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]}),b})()},7022:(Ge,g,o)=>{"use strict";o.d(g,{a:()=>s});var t=o(23815),e=o.n(t);class s{constructor(l){this.customValidations={},this.empty="No items selected.",this.selectionLimit={tooltip:"Deselect item to select again",text:"Selection limit reached"},this.filter="Filter tags",this.add="Add badge",this.noOptions="There are no items available.",e().merge(this,l)}}},14745:(Ge,g,o)=>{"use strict";o.d(g,{$:()=>t});class t{constructor(s,a,l,u=!0){this.selected=s,this.name=a,this.description=l,this.enabled=u}}},39092:(Ge,g,o)=>{"use strict";o.d(g,{H:()=>Me});var t=o(74788),e=o(24751),s=o(23815),a=o.n(s),l=o(65862),u=o(95463),h=o(7022),_=o(14745),m=o(12057),b=o(41582),C=o(87925),D=o(94276),x=o(38549);function j(Oe,be){if(1&Oe&&(t.TgZ(0,"span",12),t._uU(1),t.qZA()),2&Oe){const ue=t.oxw().$implicit,He=t.oxw(2);t.xp6(1),t.hij(" ",He.messages.customValidations[ue]," ")}}function H(Oe,be){if(1&Oe&&(t.ynx(0),t.YNc(1,j,2,1,"span",11),t.BQk()),2&Oe){const ue=be.$implicit;t.oxw();const He=t.MAs(1),$e=t.oxw();t.xp6(1),t.Q6J("ngIf",$e.form.showError("filter",He)&&$e.filter.hasError(ue))}}const z=function(Oe){return[Oe]};function U(Oe,be){if(1&Oe&&t._UZ(0,"i",18),2&Oe){const ue=t.oxw(3);t.Q6J("ngClass",t.VKq(1,z,ue.icons.check))}}function M(Oe,be){if(1&Oe&&(t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"small",19),t._uU(3),t.qZA(),t.BQk()),2&Oe){const ue=t.oxw().$implicit;t.xp6(3),t.hij(" ",ue.description,"\xa0 ")}}const I=function(Oe){return{"help-block disabled":Oe}};function J(Oe,be){if(1&Oe){const ue=t.EpF();t.TgZ(0,"div",13),t.NdJ("click",function(){const F=t.CHM(ue).$implicit;return t.oxw(2).triggerSelection(F)}),t.TgZ(1,"div",14),t.YNc(2,U,1,3,"i",15),t._uU(3," \xa0 "),t.qZA(),t.TgZ(4,"div",16),t._uU(5),t.YNc(6,M,4,1,"ng-container",17),t.qZA(),t.qZA()}if(2&Oe){const ue=be.$implicit,He=t.oxw(2);t.Q6J("ngClass",t.VKq(4,I,!(He.data.length!==He.selectionLimit&&ue.enabled||ue.selected))),t.xp6(2),t.Q6J("ngIf",ue.selected),t.xp6(3),t.hij(" ",ue.name," "),t.xp6(1),t.Q6J("ngIf",ue.description)}}function Y(Oe,be){if(1&Oe){const ue=t.EpF();t.TgZ(0,"div",20),t.NdJ("click",function(){return t.CHM(ue),t.oxw(2).addCustomOption()}),t.TgZ(1,"div",14),t._UZ(2,"i",18),t._uU(3," \xa0 "),t.qZA(),t.TgZ(4,"div",16),t._uU(5),t.qZA(),t.qZA()}if(2&Oe){const ue=t.oxw(2);t.xp6(2),t.Q6J("ngClass",t.VKq(3,z,ue.icons.tag)),t.xp6(3),t.AsE(" ",ue.messages.add," '",ue.filter.value,"' ")}}function ie(Oe,be){if(1&Oe&&(t.TgZ(0,"span",23),t._uU(1),t.qZA()),2&Oe){const ue=t.oxw(3);t.Q6J("ngbTooltip",ue.messages.selectionLimit.tooltip),t.xp6(1),t.hij(" ",ue.messages.selectionLimit.text," ")}}function oe(Oe,be){if(1&Oe&&(t.TgZ(0,"div",21),t.YNc(1,ie,2,2,"span",22),t.qZA()),2&Oe){const ue=t.oxw(2);t.xp6(1),t.Q6J("ngIf",ue.data.length===ue.selectionLimit)}}function fe(Oe,be){if(1&Oe){const ue=t.EpF();t.TgZ(0,"form",4,5),t.TgZ(2,"div"),t.TgZ(3,"input",6),t.NdJ("keyup",function($e){t.CHM(ue);const F=t.oxw();return 13==$e.keyCode?F.selectOption():F.updateFilter()}),t.qZA(),t.YNc(4,H,2,1,"ng-container",7),t.qZA(),t.qZA(),t.YNc(5,J,7,6,"div",8),t.YNc(6,Y,6,5,"div",9),t.YNc(7,oe,2,1,"div",10)}if(2&Oe){const ue=t.oxw();t.Q6J("formGroup",ue.form),t.xp6(3),t.Q6J("placeholder",ue.messages.filter),t.xp6(1),t.Q6J("ngForOf",ue.Object.keys(ue.messages.customValidations)),t.xp6(1),t.Q6J("ngForOf",ue.filteredOptions),t.xp6(1),t.Q6J("ngIf",ue.isCreatable()),t.xp6(1),t.Q6J("ngIf",ue.data.length===ue.selectionLimit)}}function ne(Oe,be){if(1&Oe&&(t.TgZ(0,"a",24),t.Hsn(1),t.qZA()),2&Oe){const ue=t.oxw(),He=t.MAs(1);t.Q6J("ngClass",ue.elemClass)("ngbPopover",He)}}function he(Oe,be){if(1&Oe&&(t.TgZ(0,"span",25),t._uU(1),t.qZA()),2&Oe){const ue=t.oxw();t.xp6(1),t.hij(" ",ue.messages.empty,"\n")}}function ce(Oe,be){if(1&Oe&&(t.TgZ(0,"span",25),t._uU(1),t.qZA()),2&Oe){const ue=t.oxw();t.xp6(1),t.hij(" ",ue.messages.noOptions,"\n")}}const Ae=["*"];let Me=(()=>{class Oe{constructor(){this.data=[],this.options=[],this.messages=new h.a({}),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new t.vpe,this.Object=Object,this.filteredOptions=[],this.icons=l.P}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=a().sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new e.NI("",{validators:this.customBadgeValidators}),this.form=new u.d({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const ue=this.options.map($e=>$e.name);this.data.filter($e=>-1===ue.indexOf($e)).forEach($e=>this.addOption($e)),this.forceOptionsToReflectData()}addOption(ue){this.options.push(new _.$(!1,ue,"")),this.options=a().sortBy(this.options,["name"]),this.triggerSelection(this.options.find(He=>He.name===ue))}triggerSelection(ue){!ue||this.selectionLimit&&!ue.selected&&this.data.length>=this.selectionLimit||(ue.selected=!ue.selected,this.updateOptions(),this.selection.emit({option:ue}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(ue=>{ue.selected&&this.data.push(ue.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(ue=>ue.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(ue=>{-1!==this.data.indexOf(ue.name)&&(ue.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){!this.isCreatable()||(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(ue=>ue.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(ue){this.triggerSelection(this.options.find(He=>He.name===ue&&He.selected))}}return Oe.\u0275fac=function(ue){return new(ue||Oe)},Oe.\u0275cmp=t.Xpm({type:Oe,selectors:[["cd-select"]],inputs:{elemClass:"elemClass",data:"data",options:"options",messages:"messages",selectionLimit:"selectionLimit",customBadges:"customBadges",customBadgeValidators:"customBadgeValidators"},outputs:{selection:"selection"},features:[t.TTD],ngContentSelectors:Ae,decls:5,vars:3,consts:[["popTemplate",""],["class","select-menu-edit float-left","data-testid","select-menu-edit",3,"ngClass","ngbPopover",4,"ngIf"],["class","form-text text-muted float-left",4,"ngIf"],["class","form-text text-muted  float-left",4,"ngIf"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],["type","text","formControlName","filter",1,"form-control","text-center",3,"placeholder","keyup"],[4,"ngFor","ngForOf"],["class","select-menu-item",3,"ngClass","click",4,"ngFor","ngForOf"],["class","select-menu-item",3,"click",4,"ngIf"],["class","is-invalid",4,"ngIf"],["class","invalid-feedback text-center d-block",4,"ngIf"],[1,"invalid-feedback","text-center","d-block"],[1,"select-menu-item",3,"ngClass","click"],[1,"select-menu-item-icon"],["aria-hidden","true",3,"ngClass",4,"ngIf"],[1,"select-menu-item-content"],[4,"ngIf"],["aria-hidden","true",3,"ngClass"],[1,"form-text","text-muted"],[1,"select-menu-item",3,"click"],[1,"is-invalid"],["class","form-text text-muted text-center text-warning",3,"ngbTooltip",4,"ngIf"],[1,"form-text","text-muted","text-center","text-warning",3,"ngbTooltip"],["data-testid","select-menu-edit",1,"select-menu-edit","float-left",3,"ngClass","ngbPopover"],[1,"form-text","text-muted","float-left"]],template:function(ue,He){1&ue&&(t.F$t(),t.YNc(0,fe,8,6,"ng-template",null,0,t.W1O),t.YNc(2,ne,2,2,"a",1),t.YNc(3,he,2,1,"span",2),t.YNc(4,ce,2,1,"span",3)),2&ue&&(t.xp6(2),t.Q6J("ngIf",He.customBadges||He.options.length>0),t.xp6(1),t.Q6J("ngIf",0===He.data.length&&!(!He.customBadges&&0===He.options.length)),t.xp6(1),t.Q6J("ngIf",!He.customBadges&&0===He.options.length))},directives:[m.O5,e._Y,e.JL,e.sg,b.V,C.o,e.Fj,D.b,e.JJ,e.u,m.sg,m.mk,x._L,x.o8],styles:[".select-menu-item[_ngcontent-%COMP%]{border-bottom:1px solid rgba(0,0,0,.09);cursor:pointer;display:block;font-size:1rem}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#e9ecef}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}.select-menu-item-content[_ngcontent-%COMP%]   .form-text[_ngcontent-%COMP%]{display:flex}"]}),Oe})()},76446:(Ge,g,o)=>{"use strict";o.d(g,{l:()=>_});var t=o(87311),e=o(47557),s=o(74788),a=o(12057),l=o(7194);const u=["sparkCanvas"],h=["sparkTooltip"];let _=(()=>{class m{constructor(C){this.dimlessBinaryPipe=C,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:D=>this.isBinary?this.dimlessBinaryPipe.transform(D.yLabel):D.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const x=new t.h(this.chartCanvasRef,this.chartTooltipRef,(j,H)=>H+j.caretX+"px",j=>j.caretY-j.height-j.yPadding-5+"px");x.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=j=>{x.customTooltips(j)}}ngOnChanges(C){this.datasets[0].data=C.data.currentValue,this.labels=[...Array(C.data.currentValue.length)]}}return m.\u0275fac=function(C){return new(C||m)(s.Y36(e.$))},m.\u0275cmp=s.Xpm({type:m,selectors:[["cd-sparkline"]],viewQuery:function(C,D){if(1&C&&(s.Gf(u,7),s.Gf(h,7)),2&C){let x;s.iGM(x=s.CRH())&&(D.chartCanvasRef=x.first),s.iGM(x=s.CRH())&&(D.chartTooltipRef=x.first)}},inputs:{data:"data",style:"style",isBinary:"isBinary"},features:[s.TTD],decls:6,vars:6,consts:[[1,"chart-container",3,"ngStyle"],["baseChart","",3,"labels","datasets","options","colors","chartType"],["sparkCanvas",""],[1,"chartjs-tooltip"],["sparkTooltip",""]],template:function(C,D){1&C&&(s.TgZ(0,"div",0),s._UZ(1,"canvas",1,2),s.TgZ(3,"div",3,4),s._UZ(5,"table"),s.qZA(),s.qZA()),2&C&&(s.Q6J("ngStyle",D.style),s.xp6(1),s.Q6J("labels",D.labels)("datasets",D.datasets)("options",D.options)("colors",D.colors)("chartType","line"))},directives:[a.PC,l.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{position:static!important}']}),m})()},39749:(Ge,g,o)=>{"use strict";o.d(g,{w:()=>C});var t=o(74788),e=o(24751),s=o(23815),a=o.n(s),l=o(65862),u=o(87925),h=o(12057);const _=function(D,x){return[D,x]};function m(D,x){if(1&D&&(t.TgZ(0,"span"),t._UZ(1,"i",2),t.qZA()),2&D){const j=t.oxw();t.xp6(1),t.Q6J("ngClass",t.WLB(1,_,j.icons.spinner,j.icons.spin))}}const b=["*"];let C=(()=>{class D{constructor(j){this.elRef=j,this.type="submit",this.disabled=!1,this.submitAction=new t.vpe,this.loading=!1,this.icons=l.P}ngOnInit(){this.form.statusChanges.subscribe(()=>{a().has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,a().unset(this.form.errors,"cdSubmitButton"),this.form instanceof e.TO&&this.form.updateValueAndValidity())})}submit(j){this.focusButton(),this.form instanceof e.sg&&this.form.onSubmit(j),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const j=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");j&&j.focus()}}return D.\u0275fac=function(j){return new(j||D)(t.Y36(t.SBq))},D.\u0275cmp=t.Xpm({type:D,selectors:[["cd-submit-button"]],inputs:{form:"form",type:"type",disabled:"disabled",btnClass:"btnClass"},outputs:{submitAction:"submitAction"},ngContentSelectors:b,decls:3,vars:4,consts:[[1,"btn","btn-accent","tc_submitButton",3,"type","ngClass","disabled","click"],[4,"ngIf"],[3,"ngClass"]],template:function(j,H){1&j&&(t.F$t(),t.TgZ(0,"button",0),t.NdJ("click",function(U){return H.submit(U)}),t.Hsn(1),t.YNc(2,m,2,4,"span",1),t.qZA()),2&j&&(t.Q6J("type",H.type)("ngClass",H.btnClass)("disabled",H.loading||H.disabled),t.xp6(2),t.Q6J("ngIf",H.loading))},directives:[u.o,h.mk,h.O5],styles:[""]}),D})()},60251:(Ge,g,o)=>{"use strict";o.d(g,{O:()=>m});var t=o(74788),e=o(38549),s=o(12057),a=o(47557),l=o(66369);function u(b,C){if(1&b&&(t.TgZ(0,"tr"),t.TgZ(1,"td",4),t._uU(2,"Free:\xa0"),t.qZA(),t.TgZ(3,"td",7),t.TgZ(4,"strong"),t._uU(5),t.ALo(6,"dimlessBinary"),t.ALo(7,"dimless"),t.qZA(),t.qZA(),t.qZA()),2&b){const D=t.oxw(2);t.xp6(5),t.Oqu(D.isBinary?t.lcZ(6,1,D.total-D.used):t.lcZ(7,3,D.total-D.used))}}function h(b,C){if(1&b&&(t.TgZ(0,"table"),t.TgZ(1,"tr"),t.TgZ(2,"td",4),t._uU(3,"Used:\xa0"),t.qZA(),t.TgZ(4,"td",5),t.TgZ(5,"strong"),t._uU(6),t.ALo(7,"dimlessBinary"),t.ALo(8,"dimless"),t.qZA(),t.qZA(),t.qZA(),t.YNc(9,u,8,5,"tr",6),t.qZA()),2&b){const D=t.oxw();t.xp6(6),t.hij(" ",D.isBinary?t.lcZ(7,2,D.used):t.lcZ(8,4,D.used),""),t.xp6(3),t.Q6J("ngIf",D.calculatePerc)}}const _=function(b,C){return{"bg-warning":b,"bg-danger":C}};let m=(()=>{class b{constructor(){this.isBinary=!0,this.decimals=0,this.calculatePerc=!0}ngOnChanges(){this.calculatePerc?(this.usedPercentage=this.total>0?this.used/this.total*100:0,this.freePercentage=100-this.usedPercentage):this.used?(this.used=this.used.slice(0,-1),this.usedPercentage=Number(this.used),this.freePercentage=100-this.usedPercentage):this.usedPercentage=0}}return b.\u0275fac=function(D){return new(D||b)},b.\u0275cmp=t.Xpm({type:b,selectors:[["cd-usage-bar"]],inputs:{total:"total",used:"used",warningThreshold:"warningThreshold",errorThreshold:"errorThreshold",isBinary:"isBinary",decimals:"decimals",calculatePerc:"calculatePerc"},features:[t.TTD],decls:8,vars:13,consts:[["usageTooltipTpl",""],["data-placement","left",1,"progress",3,"ngbTooltip"],["role","progressbar",1,"progress-bar","bg-info",3,"ngClass"],["role","progressbar",1,"progress-bar","bg-freespace"],[1,"text-left"],[1,"text-right"],[4,"ngIf"],[1,"'text-right"]],template:function(D,x){if(1&D&&(t.YNc(0,h,10,6,"ng-template",null,0,t.W1O),t.TgZ(2,"div",1),t.TgZ(3,"div",2),t.TgZ(4,"span"),t._uU(5),t.ALo(6,"number"),t.qZA(),t.qZA(),t._UZ(7,"div",3),t.qZA()),2&D){const j=t.MAs(1);t.xp6(2),t.Q6J("ngbTooltip",j),t.xp6(1),t.Udp("width",x.usedPercentage+"%"),t.Q6J("ngClass",t.WLB(10,_,x.usedPercentage/100>=x.warningThreshold,x.usedPercentage/100>=x.errorThreshold)),t.xp6(2),t.hij("",t.xi3(6,7,x.usedPercentage,"1.0-"+x.decimals),"%"),t.xp6(2),t.Udp("width",x.freePercentage+"%")}},directives:[e._L,s.mk,s.O5],pipes:[s.JJ,a.$,l.n],styles:[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-warning[_ngcontent-%COMP%]{background-color:#ffc200!important}.bg-danger[_ngcontent-%COMP%]{background-color:#ef5c55!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#ced4da!important}.progress[_ngcontent-%COMP%]{height:20px;margin-bottom:0;position:relative}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:#000;display:block;font-weight:normal;position:absolute;width:100%}"]}),b})()},79512:(Ge,g,o)=>{"use strict";o.d(g,{$x:()=>s,MQ:()=>a,Qn:()=>l,p4:()=>u,aX:()=>h});var t=o(92340),e=o(74788);class s{}s.organization="ceph",s.projectName="Ceph Dashboard",s.license="Free software (LGPL 2.1).",s.copyright="Copyright(c) "+t.N.year+" Ceph contributors.",s.cephLogo="assets/Ceph_Logo.svg";var a=(()=>{return(_=a||(a={})).CREATE="create",_.EDIT="edit",_.UPDATE="update",_.REMOVE="remove",_.DELETE="delete",_.ADD="add",_.COPY="copy",_.CLONE="clone",_.RECREATE="recreate",_.EXPIRE="expire",_.RESTART="Restart",a;var _})(),l=(()=>{return(_=l||(l={})).CREATE="Create",_.DELETE="Delete",_.ADD="Add",_.REMOVE="Remove",_.EDIT="Edit",_.CANCEL="Cancel",_.COPY="Copy",_.CLONE="Clone",_.UPDATE="Update",_.EVICT="Evict",_.SHOW="Show",_.RECREATE="Recreate",_.EXPIRE="Expire",_.START="Start",_.STOP="Stop",_.REDEPLOY="Redeploy",_.RESTART="Restart",l;var _})();let u=(()=>{class _{constructor(){this.CREATE="Create",this.DELETE="Delete",this.ADD="Add",this.SET="Set",this.SUBMIT="Submit",this.REMOVE="Remove",this.UNSET="Unset",this.EDIT="Edit",this.UPDATE="Update",this.CANCEL="Cancel",this.PREVIEW="Preview",this.MOVE="Move",this.NEXT="Next",this.BACK="Back",this.CLONE="Clone",this.COPY="Copy",this.DEEP_SCRUB="Deep Scrub",this.DESTROY="Destroy",this.EVICT="Evict",this.FLATTEN="Flatten",this.MARK_DOWN="Mark Down",this.MARK_IN="Mark In",this.MARK_LOST="Mark Lost",this.MARK_OUT="Mark Out",this.PROTECT="Protect",this.PURGE="Purge",this.RENAME="Rename",this.RESTORE="Restore",this.REWEIGHT="Reweight",this.ROLLBACK="Rollback",this.SCRUB="Scrub",this.SHOW="Show",this.TRASH="Move to Trash",this.UNPROTECT="Unprotect",this.CHANGE="Change",this.FLAGS="Flags",this.ENTER_MAINTENANCE="Enter Maintenance",this.EXIT_MAINTENANCE="Exit Maintenance",this.START_DRAIN="Start Drain",this.STOP_DRAIN="Stop Drain",this.RECREATE="Recreate",this.EXPIRE="Expire",this.START="Start",this.STOP="Stop",this.REDEPLOY="Redeploy",this.RESTART="Restart"}}return _.\u0275fac=function(b){return new(b||_)},_.\u0275prov=e.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})(),h=(()=>{class _{constructor(){this.CREATED="Created",this.DELETED="Deleted",this.ADDED="Added",this.REMOVED="Removed",this.EDITED="Edited",this.CANCELED="Canceled",this.PREVIEWED="Previewed",this.MOVED="Moved",this.CLONED="Cloned",this.COPIED="Copied",this.DEEP_SCRUBBED="Deep Scrubbed",this.DESTROYED="Destroyed",this.FLATTENED="Flattened",this.MARKED_DOWN="Marked Down",this.MARKED_IN="Marked In",this.MARKED_LOST="Marked Lost",this.MARKED_OUT="Marked Out",this.PROTECTED="Protected",this.PURGED="Purged",this.RENAMED="Renamed",this.RESTORED="Restored",this.REWEIGHTED="Reweighted",this.ROLLED_BACK="Rolled back",this.SCRUBBED="Scrubbed",this.SHOWED="Showed",this.TRASHED="Moved to Trash",this.UNPROTECTED="Unprotected",this.CHANGE="Change",this.RECREATED="Recreated",this.EXPIRED="Expired",this.START="Start",this.STOP="Stop",this.REDEPLOY="Redeploy",this.RESTART="Restart"}}return _.\u0275fac=function(b){return new(b||_)},_.\u0275prov=e.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},2149:(Ge,g,o)=>{"use strict";o.d(g,{t:()=>b});var t=o(12057),e=o(24751),s=o(6283),a=o(38549),l=o(84051),u=o(37496),h=o(15626),_=o(85953),m=o(74788);let b=(()=>{class C{}return C.\u0275fac=function(x){return new(x||C)},C.\u0275mod=m.oAB({type:C}),C.\u0275inj=m.cJS({imports:[[t.ez,l.xD,u.b,e.u5,a.XC,a.HK,_.D,h.K,s.Bz],l.xD]}),C})()},94928:(Ge,g,o)=>{"use strict";o.d(g,{K:()=>z});var t=o(23815),e=o.n(t),s=o(65862),a=o(74788),l=o(12057),u=o(6283),h=o(38549);const _=function(U){return{disabled:U}},m=function(U){return[U]};function b(U,M){if(1&U){const I=a.EpF();a.ynx(0),a.TgZ(1,"button",3),a.NdJ("click",function(){a.CHM(I);const Y=a.oxw();return Y.useClickAction(Y.currentAction)}),a._UZ(2,"i",4),a.TgZ(3,"span"),a._uU(4),a.qZA(),a.qZA(),a.BQk()}if(2&U){const I=a.oxw();a.xp6(1),a.Gre("btn btn-",I.btnColor,""),a.s9C("title",I.useDisableDesc(I.currentAction)),a.Q6J("ngClass",a.VKq(9,_,I.disableSelectionAction(I.currentAction)))("routerLink",I.useRouterLink(I.currentAction))("preserveFragment",I.currentAction.preserveFragment?"":null),a.xp6(1),a.Q6J("ngClass",a.VKq(11,m,I.currentAction.icon)),a.xp6(2),a.Oqu(I.currentAction.name)}}function C(U,M){if(1&U&&(a.ynx(0),a._uU(1),a.BQk()),2&U){const I=a.oxw(2);a.xp6(1),a.hij("",I.dropDownOnly," ")}}function D(U,M){1&U&&a._UZ(0,"span",10)}const x=function(U){return[U,"action-icon"]};function j(U,M){if(1&U){const I=a.EpF();a.ynx(0),a.TgZ(1,"button",11),a.NdJ("click",function(){const ie=a.CHM(I).$implicit;return a.oxw(2).useClickAction(ie)}),a._UZ(2,"i",4),a.TgZ(3,"span"),a._uU(4),a.qZA(),a.qZA(),a.BQk()}if(2&U){const I=M.$implicit,J=a.oxw(2);a.xp6(1),a.Tol(J.toClassName(I)),a.s9C("title",J.useDisableDesc(I)),a.Q6J("routerLink",J.useRouterLink(I))("preserveFragment",I.preserveFragment?"":null)("disabled",J.disableSelectionAction(I)),a.xp6(1),a.Q6J("ngClass",a.VKq(9,x,I.icon)),a.xp6(2),a.Oqu(I.name)}}function H(U,M){if(1&U&&(a.TgZ(0,"div",5),a.TgZ(1,"button",6),a.YNc(2,C,2,1,"ng-container",1),a.YNc(3,D,1,0,"span",7),a.qZA(),a.TgZ(4,"div",8),a.YNc(5,j,5,11,"ng-container",9),a.qZA(),a.qZA()),2&U){const I=a.oxw();a.xp6(1),a.Gre("btn btn-",I.btnColor," dropdown-toggle-split"),a.xp6(1),a.Q6J("ngIf",I.dropDownOnly),a.xp6(1),a.Q6J("ngIf",!I.dropDownOnly),a.xp6(2),a.Q6J("ngForOf",I.dropDownActions)}}let z=(()=>{class U{constructor(){this.btnColor="accent",this.dropDownActions=[],this.icons=s.P}ngOnInit(){this.removeActionsWithNoPermissions(),this.onSelectionChange()}ngOnChanges(I){I.selection&&this.onSelectionChange()}onSelectionChange(){this.updateDropDownActions(),this.updateCurrentAction()}toClassName(I){return I.name.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const I=Object.keys(this.permission).filter(J=>this.permission[J]);this.tableActions=this.tableActions.filter(J=>I.includes(J.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(I=>I.visible?I.visible(this.selection):I)}updateCurrentAction(){if(this.dropDownOnly)return void(this.currentAction=void 0);let I=this.dropDownActions.find(J=>this.showableAction(J));!I&&this.dropDownActions.length>0&&(I=this.dropDownActions[0]),this.currentAction=I}showableAction(I){const J=I.canBePrimary,Y=this.selection.hasSingleSelection,ie="create"===I.permission?!Y:Y;return J&&J(this.selection)||!J&&ie}useRouterLink(I){if(I.routerLink&&!this.disableSelectionAction(I))return e().isString(I.routerLink)?I.routerLink:I.routerLink()}disableSelectionAction(I){const J=I.disable;if(J)return Boolean(J(this.selection));const Y=I.permission,ie=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(Y)&&(!ie||ie.cdExecuting))}useClickAction(I){return!this.disableSelectionAction(I)&&I.click&&I.click()}useDisableDesc(I){if(I.disable){const J=I.disable(this.selection);return e().isString(J)?J:void 0}}}return U.\u0275fac=function(I){return new(I||U)},U.\u0275cmp=a.Xpm({type:U,selectors:[["cd-table-actions"]],inputs:{permission:"permission",selection:"selection",tableActions:"tableActions",btnColor:"btnColor",dropDownOnly:"dropDownOnly"},features:[a.TTD],decls:3,vars:2,consts:[[1,"btn-group"],[4,"ngIf"],["class","btn-group","ngbDropdown","","role","group","aria-label","Button group with nested dropdown",4,"ngIf"],["type","button","data-testid","table-action-button",3,"title","ngClass","routerLink","preserveFragment","click"],[3,"ngClass"],["ngbDropdown","","role","group","aria-label","Button group with nested dropdown",1,"btn-group"],["ngbDropdownToggle",""],["class","sr-only",4,"ngIf"],["ngbDropdownMenu","",1,"dropdown-menu"],[4,"ngFor","ngForOf"],[1,"sr-only"],["ngbDropdownItem","",3,"title","routerLink","preserveFragment","disabled","click"]],template:function(I,J){1&I&&(a.TgZ(0,"div",0),a.YNc(1,b,5,13,"ng-container",1),a.YNc(2,H,6,6,"div",2),a.qZA()),2&I&&(a.xp6(1),a.Q6J("ngIf",J.currentAction),a.xp6(1),a.Q6J("ngIf",J.dropDownActions.length>1))},directives:[l.O5,l.mk,u.rH,h.jt,h.iD,h.Vi,l.sg,h.TH],styles:["button.disabled[_ngcontent-%COMP%]{cursor:default!important;pointer-events:auto}.action-icon[_ngcontent-%COMP%]{padding-right:1.5rem}"]}),U})()},61350:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>h});var t=o(74788),e=o(23815),s=o.n(e),a=o(99466),l=o(64337),u=o(96102);let h=(()=>{class _{constructor(b){this.datePipe=b,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new t.vpe}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:a.e.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=a.e.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let b=this.makePairs(this.data);this.hideKeys&&(b=b.filter(C=>!this.hideKeys.includes(C.key))),this.tableData=b}makePairs(b){let C=[];if(b){if(s().isArray(b))C=this.makePairsFromArray(b);else{if(!s().isObject(b))throw new Error("Wrong data format");C=this.makePairsFromObject(b)}return C=C.map(D=>(D.value=this.convertValue(D.value),D)).filter(D=>null!==D.value),s().sortBy(this.renderObjects?this.insertFlattenObjects(C):C,"key")}}makePairsFromArray(b){let C=[];const D=b[0];if(s().isArray(D)){if(2!==D.length)throw new Error(`Array contains too many elements (${D.length}). Needs to be of type [string, any][]`);C=b.map(x=>({key:x[0],value:x[1]}))}else s().isObject(D)&&(C=s().has(D,"key")&&s().has(D,"value")?[...b]:b.reduce((x,j)=>x.concat(this.makePairsFromObject(j)),C));return C}makePairsFromObject(b){return Object.keys(b).map(C=>({key:C,value:b[C]}))}insertFlattenObjects(b){return s().flattenDeep(b.map(C=>{const D=C.value,x=s().isObject(D);return!x||s().isEmpty(D)?(x&&(C.value=""),C):this.splitItemIntoItems(C)}))}splitItemIntoItems(b){return this.makePairs(b.value).map(C=>(this.appendParentKey&&(C.key=b.key+" "+C.key),C))}convertValue(b){if(s().isArray(b)){if(s().isEmpty(b)&&this.hideEmpty)return null;b=b.map(C=>s().isObject(C)?JSON.stringify(C):C).join(", ")}else if(s().isObject(b)){if(this.hideEmpty&&s().isEmpty(b)||!this.renderObjects)return null}else if(s().isString(b)){if(""===b&&this.hideEmpty)return null;this.isDate(b)&&(b=this.datePipe.transform(b)||b)}return b}isDate(b){const C="[ -:.TZ]",D="\\d{2}"+C;return b.match(new RegExp("^\\d{4}"+C+D+D+D+D+D+"\\d*Z?$"))}}return _.\u0275fac=function(b){return new(b||_)(t.Y36(u.N))},_.\u0275cmp=t.Xpm({type:_,selectors:[["cd-table-key-value"]],viewQuery:function(b,C){if(1&b&&t.Gf(l.a,7),2&b){let D;t.iGM(D=t.CRH())&&(C.table=D.first)}},inputs:{data:"data",autoReload:"autoReload",renderObjects:"renderObjects",appendParentKey:"appendParentKey",hideEmpty:"hideEmpty",hideKeys:"hideKeys",customCss:"customCss"},outputs:{fetchData:"fetchData"},features:[t.TTD],decls:2,vars:9,consts:[["columnMode","flex",3,"data","columns","toolHeader","autoReload","customCss","autoSave","header","footer","limit"],["table",""]],template:function(b,C){1&b&&t._UZ(0,"cd-table",0,1),2&b&&t.Q6J("data",C.tableData)("columns",C.columns)("toolHeader",!1)("autoReload",C.autoReload)("customCss",C.customCss)("autoSave",!1)("header",!1)("footer",!1)("limit",0)},directives:[l.a],styles:[""]}),_})()},64337:(Ge,g,o)=>{"use strict";o.d(g,{a:()=>mt});var t=o(74788),e=o(84051),s=o(23815),a=o.n(s),l=o(46797),u=o(18891),h=o(71225),_=o(99466),m=o(65862);class b{constructor(yn){this.errorConfig={resetData:!0,displayError:!0},this.error=yn}}var C=o(68774),D=o(12057),x=o(38549),j=o(24751),H=o(76446),z=o(6283),U=o(70442),M=o(66369),I=o(37496),J=o(47187),Y=o(78877),ie=o(52821);const oe=["tableCellBoldTpl"],fe=["sparklineTpl"],ne=["routerLinkTpl"],he=["checkIconTpl"],ce=["perSecondTpl"],Ae=["executingTpl"],Me=["classAddingTpl"],Oe=["badgeTpl"],be=["mapTpl"],ue=["truncateTpl"],He=["rowDetailsTpl"];function $e(Tt,yn){1&Tt&&(t.TgZ(0,"div",20),t.TgZ(1,"div",21),t.Hsn(2),t.qZA(),t.qZA())}function F(Tt,yn){if(1&Tt){const et=t.EpF();t.ynx(0),t.TgZ(1,"button",36),t.NdJ("click",function(){const Qn=t.CHM(et).$implicit;return t.oxw(3).onSelectFilter(Qn),!1}),t._uU(2),t.qZA(),t.BQk()}if(2&Tt){const et=yn.$implicit;t.xp6(2),t.Oqu(et.column.name)}}const je=function(Tt){return[Tt]};function Et(Tt,yn){if(1&Tt&&t._UZ(0,"i",28),2&Tt){const et=t.oxw(4);t.Q6J("ngClass",t.VKq(1,je,et.icons.check))}}function lt(Tt,yn){if(1&Tt){const et=t.EpF();t.ynx(0),t.TgZ(1,"button",36),t.NdJ("click",function(){const Qn=t.CHM(et).$implicit,Ir=t.oxw(3);return Ir.onChangeFilter(Ir.selectedFilter,Qn),!1}),t._uU(2),t.YNc(3,Et,1,3,"i",37),t.qZA(),t.BQk()}if(2&Tt){const et=yn.$implicit,jt=t.oxw(3);t.xp6(2),t.hij(" ",et.formatted," "),t.xp6(1),t.Q6J("ngIf",void 0!==jt.selectedFilter.value&&jt.selectedFilter.value.raw===et.raw)}}const nn=function(Tt,yn){return[Tt,yn]};function St(Tt,yn){if(1&Tt&&(t.TgZ(0,"div",32),t.TgZ(1,"div",33),t.TgZ(2,"button",34),t._UZ(3,"i",28),t._uU(4),t.qZA(),t.TgZ(5,"div",29),t.YNc(6,F,3,1,"ng-container",30),t.qZA(),t.qZA(),t.TgZ(7,"div",35),t.TgZ(8,"button",34),t._uU(9),t.qZA(),t.TgZ(10,"div",29),t.YNc(11,lt,4,2,"ng-container",30),t.qZA(),t.qZA(),t.qZA()),2&Tt){const et=t.oxw(2);t.xp6(3),t.Q6J("ngClass",t.WLB(7,nn,et.icons.large,et.icons.filter)),t.xp6(1),t.hij(" ",et.selectedFilter.column.name," "),t.xp6(2),t.Q6J("ngForOf",et.columnFilters),t.xp6(2),t.ekj("disabled",0===et.selectedFilter.options.length),t.xp6(1),t.hij(" ",et.selectedFilter.value?et.selectedFilter.value.formatted:"Any"," "),t.xp6(2),t.Q6J("ngForOf",et.selectedFilter.options)}}function At(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"div",38),t.TgZ(1,"span",39),t.TgZ(2,"span",40),t._UZ(3,"i",28),t.qZA(),t.qZA(),t.TgZ(4,"input",41),t.NdJ("ngModelChange",function(hn){return t.CHM(et),t.oxw(2).search=hn})("keyup",function(){return t.CHM(et),t.oxw(2).updateFilter()}),t.qZA(),t.TgZ(5,"div",42),t.TgZ(6,"button",43),t.NdJ("click",function(){return t.CHM(et),t.oxw(2).onClearSearch()}),t._UZ(7,"i"),t.qZA(),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw(2);t.xp6(3),t.Q6J("ngClass",t.VKq(5,je,et.icons.search)),t.xp6(1),t.Q6J("ngModel",et.search),t.xp6(3),t.Gre("icon-prepend ",et.icons.destroy,"")}}function Qe(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"div",44),t.TgZ(1,"input",45),t.NdJ("click",function(hn){return t.CHM(et),t.oxw(2).setLimit(hn)})("keyup",function(hn){return t.CHM(et),t.oxw(2).setLimit(hn)})("blur",function(hn){return t.CHM(et),t.oxw(2).setLimit(hn)}),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw(2);t.xp6(1),t.Q6J("value",et.userConfig.limit)}}function It(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"button",36),t.NdJ("click",function(){t.CHM(et);const hn=t.oxw().$implicit;return t.oxw(2).toggleColumn(hn),!1}),t.TgZ(1,"div",47),t._UZ(2,"input",48),t.TgZ(3,"label",49),t._uU(4),t.qZA(),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw().$implicit;t.xp6(2),t.Q6J("name",et.prop)("id",et.prop)("checked",!et.isHidden),t.xp6(1),t.Q6J("for",et.prop),t.xp6(1),t.Oqu(et.name)}}function ae(Tt,yn){if(1&Tt&&(t.ynx(0),t.YNc(1,It,5,5,"button",46),t.BQk()),2&Tt){const et=yn.$implicit;t.xp6(1),t.Q6J("ngIf",""!==et.name)}}function Ie(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"div",50),t.TgZ(1,"button",51),t.NdJ("click",function(){return t.CHM(et),t.oxw(2).refreshBtn()}),t._UZ(2,"i",28),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw(2);t.xp6(1),t.Tol("btn btn-"+et.status.type),t.Q6J("ngbTooltip",et.status.msg),t.xp6(1),t.ekj("fa-spin",et.updating||et.loadingIndicator),t.Q6J("ngClass",t.WLB(6,nn,et.icons.large,et.icons.refresh))}}function dt(Tt,yn){if(1&Tt&&(t.TgZ(0,"div",20),t.TgZ(1,"div",21),t.Hsn(2,1),t.qZA(),t.YNc(3,St,12,10,"div",22),t.YNc(4,At,8,7,"div",23),t.YNc(5,Qe,2,1,"div",24),t.TgZ(6,"div",25),t.TgZ(7,"div",26),t.TgZ(8,"button",27),t._UZ(9,"i",28),t.qZA(),t.TgZ(10,"div",29),t.YNc(11,ae,2,1,"ng-container",30),t.qZA(),t.qZA(),t.qZA(),t.YNc(12,Ie,3,9,"div",31),t.qZA()),2&Tt){const et=t.oxw();t.xp6(3),t.Q6J("ngIf",0!==et.columnFilters.length),t.xp6(1),t.Q6J("ngIf",et.searchField),t.xp6(1),t.Q6J("ngIf",et.limit),t.xp6(4),t.Q6J("ngClass",t.WLB(6,nn,et.icons.large,et.icons.table)),t.xp6(2),t.Q6J("ngForOf",et.columns),t.xp6(1),t.Q6J("ngIf",et.fetchData.observers.length>0)}}function Jt(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"span",56),t.TgZ(1,"span",57),t._uU(2),t.qZA(),t.TgZ(3,"a",58),t.NdJ("click",function(){t.CHM(et);const hn=t.oxw().$implicit;return t.oxw(2).onChangeFilter(hn),!1}),t._UZ(4,"i",59),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw().$implicit,jt=t.oxw(2);t.xp6(2),t.AsE("",et.column.name,": ",et.value.formatted,""),t.xp6(2),t.Q6J("ngClass",t.VKq(3,je,jt.icons.destroy))}}function zt(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t.YNc(1,Jt,5,5,"span",55),t.qZA()),2&Tt){const et=yn.$implicit;t.xp6(1),t.Q6J("ngIf",et.value)}}function ln(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"div",20),t.TgZ(1,"div",52),t.YNc(2,zt,2,1,"span",30),t.TgZ(3,"a",53),t.NdJ("click",function(){return t.CHM(et),t.oxw().onClearFilters(),!1}),t.ynx(4),t.SDv(5,54),t.BQk(),t.qZA(),t.qZA(),t.qZA()}if(2&Tt){const et=t.oxw();t.xp6(2),t.Q6J("ngForOf",et.columnFilters)}}function ar(Tt,yn){1&Tt&&t.Hsn(0,2)}function Ln(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t._uU(1),t.ynx(2),t.SDv(3,64),t.BQk(),t._uU(4," / "),t.qZA()),2&Tt){const et=t.oxw().selectedCount;t.xp6(1),t.hij(" ",et," ")}}function Rn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t._uU(1),t.ynx(2),t.SDv(3,65),t.BQk(),t._uU(4," / "),t.qZA()),2&Tt){const et=t.oxw().rowCount;t.xp6(1),t.hij(" ",et," ")}}function er(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"div",60),t.YNc(1,Ln,5,1,"span",61),t.YNc(2,Rn,5,1,"span",61),t.TgZ(3,"span"),t._uU(4),t.ynx(5),t.SDv(6,62),t.BQk(),t.qZA(),t.qZA(),t.TgZ(7,"datatable-pager",63),t.NdJ("change",function(hn){return t.CHM(et),t.oxw(),t.MAs(5).onFooterPage(hn)}),t.qZA()}if(2&Tt){const et=yn.rowCount,jt=yn.pageSize,hn=yn.curPage,Qn=t.oxw();t.xp6(1),t.Q6J("ngIf",Qn.selectionType),t.xp6(1),t.Q6J("ngIf",et!=(null==Qn.data?null:Qn.data.length)),t.xp6(2),t.hij(" ",(null==Qn.data?null:Qn.data.length)||0," "),t.xp6(3),t.Q6J("pagerLeftArrowIcon",Qn.paginationClasses.pagerLeftArrow)("pagerRightArrowIcon",Qn.paginationClasses.pagerRightArrow)("pagerPreviousIcon",Qn.paginationClasses.pagerPrevious)("pagerNextIcon",Qn.paginationClasses.pagerNext)("page",hn)("size",jt)("count",et)("hidden",!(et/jt>1))}}function Mn(Tt,yn){if(1&Tt&&(t.TgZ(0,"strong"),t._uU(1),t.qZA()),2&Tt){const et=yn.value;t.xp6(1),t.Oqu(et)}}function Ht(Tt,yn){if(1&Tt&&t._UZ(0,"cd-sparkline",66),2&Tt){const et=yn.row;t.Q6J("data",yn.value)("isBinary",et.cdIsBinary)}}function tr(Tt,yn){if(1&Tt&&(t.TgZ(0,"a",67),t._uU(1),t.qZA()),2&Tt){const et=yn.row,jt=yn.value;t.Q6J("routerLink",t.VKq(3,je,et.cdLink))("queryParams",et.cdParams),t.xp6(1),t.Oqu(jt)}}function Yn(Tt,yn){if(1&Tt&&(t._UZ(0,"i",68),t.ALo(1,"boolean")),2&Tt){const et=yn.value,jt=t.oxw();t.Q6J("ngClass",t.VKq(4,je,jt.icons.check))("hidden",!t.lcZ(1,2,et))}}function Cn(Tt,yn){1&Tt&&(t._uU(0),t.ALo(1,"dimless")),2&Tt&&t.hij(" ",t.lcZ(1,1,yn.value)," /s\n")}function Kt(Tt,yn){if(1&Tt&&t._UZ(0,"i",28),2&Tt){const et=t.oxw(2);t.Q6J("ngClass",t.WLB(1,nn,et.icons.spinner,et.icons.spin))}}function dn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span",28),t._uU(1),t.qZA()),2&Tt){const et=t.oxw(),jt=et.column,hn=et.row;t.Q6J("ngClass",null!=jt&&null!=jt.customTemplateConfig&&jt.customTemplateConfig.executingClass?jt.customTemplateConfig.executingClass:"text-muted italic"),t.xp6(1),t.hij("(",hn.cdExecuting,")")}}function Kn(Tt,yn){if(1&Tt&&(t.YNc(0,Kt,1,4,"i",37),t.TgZ(1,"span",28),t._uU(2),t.qZA(),t.YNc(3,dn,2,2,"span",37)),2&Tt){const et=yn.column,jt=yn.row,hn=yn.value;t.Q6J("ngIf",jt.cdExecuting),t.xp6(1),t.Q6J("ngClass",null==et||null==et.customTemplateConfig?null:et.customTemplateConfig.valueClass),t.xp6(1),t.hij(" ",hn," "),t.xp6(1),t.Q6J("ngIf",jt.cdExecuting)}}function qn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t.ALo(1,"pipeFunction"),t._uU(2),t.qZA()),2&Tt){const et=yn.value,jt=t.oxw();t.Tol(t.Dn7(1,4,et,jt.useCustomClass,jt)),t.xp6(2),t.Oqu(et)}}function Sn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span",70),t._uU(1),t.qZA()),2&Tt){const et=t.oxw().$implicit,jt=t.oxw().column;t.Q6J("ngClass",null!=jt&&null!=jt.customTemplateConfig&&jt.customTemplateConfig.map&&null!=jt&&null!=jt.customTemplateConfig&&null!=jt.customTemplateConfig.map[et]&&jt.customTemplateConfig.map[et].class?jt.customTemplateConfig.map[et].class:null!=jt&&null!=jt.customTemplateConfig&&jt.customTemplateConfig.class?jt.customTemplateConfig.class:"badge-primary"),t.xp6(1),t.hij(" ",null!=jt&&null!=jt.customTemplateConfig&&jt.customTemplateConfig.map&&null!=jt&&null!=jt.customTemplateConfig&&null!=jt.customTemplateConfig.map[et]&&jt.customTemplateConfig.map[et].value?jt.customTemplateConfig.map[et].value:null!=jt&&null!=jt.customTemplateConfig&&jt.customTemplateConfig.prefix?jt.customTemplateConfig.prefix+et:et," ")}}function $n(Tt,yn){1&Tt&&(t.TgZ(0,"span"),t._uU(1,"\xa0"),t.qZA())}function En(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t.YNc(1,Sn,2,2,"span",69),t.YNc(2,$n,2,0,"span",61),t.qZA()),2&Tt){const et=yn.$implicit,jt=yn.last,hn=t.oxw().column;t.xp6(1),t.Q6J("ngIf",null!=hn&&null!=hn.customTemplateConfig&&hn.customTemplateConfig.map&&null!=hn&&null!=hn.customTemplateConfig&&null!=hn.customTemplateConfig.map[et]&&hn.customTemplateConfig.map[et].value?hn.customTemplateConfig.map[et].value:null!=hn&&null!=hn.customTemplateConfig&&hn.customTemplateConfig.prefix?hn.customTemplateConfig.prefix+et:et),t.xp6(1),t.Q6J("ngIf",!jt)}}function Fn(Tt,yn){1&Tt&&(t.YNc(0,En,3,2,"span",30),t.ALo(1,"array")),2&Tt&&t.Q6J("ngForOf",t.lcZ(1,1,yn.value))}function Dn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span"),t._uU(1),t.ALo(2,"map"),t.qZA()),2&Tt){const et=yn.column,jt=yn.value;t.xp6(1),t.Oqu(t.xi3(2,1,jt,null==et?null:et.customTemplateConfig))}}function mn(Tt,yn){if(1&Tt&&(t.TgZ(0,"span",71),t._uU(1),t.ALo(2,"truncate"),t.qZA()),2&Tt){const et=yn.column,jt=yn.value;t.Q6J("title",jt),t.xp6(1),t.Oqu(t.Dn7(2,2,jt,null==et||null==et.customTemplateConfig?null:et.customTemplateConfig.length,null==et||null==et.customTemplateConfig?null:et.customTemplateConfig.omission))}}function jn(Tt,yn){if(1&Tt){const et=t.EpF();t.TgZ(0,"a",72),t.NdJ("click",function(hn){const Qn=t.CHM(et),Ir=Qn.row,ht=Qn.expanded;return t.oxw().toggleExpandRow(Ir,ht,hn)}),t.qZA()}if(2&Tt){const et=yn.expanded;t.ekj("expand-collapse-icon-right",!et)("expand-collapse-icon-down",et)}}const Xt=[[["",8,"only-table-actions"]],[["",8,"table-actions"]],[["","cdTableDetail",""]]],ut=[".only-table-actions",".table-actions","[cdTableDetail]"];let mt=(()=>{class Tt{constructor(et,jt){this.ngZone=et,this.cdRef=jt,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.status=new h.c,this.fetchData=new t.vpe,this.updateSelection=new t.vpe,this.setExpandedRow=new t.vpe,this.columnFiltersChanged=new t.vpe,this.selection=new C.r,this.expanded=void 0,this.icons=m.P,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.paginationClasses={pagerLeftArrow:m.P.leftArrowDouble,pagerRightArrow:m.P.rightArrowDouble,pagerPrevious:m.P.leftArrow,pagerNext:m.P.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return a().some(this.columnFilters,et=>void 0!==et.value)}static prepareSearch(et){return(et=et.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(et=et.replace(/['"][^'"]+['"]/g,jt=>jt.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),et.split(" ").filter(jt=>jt)}ngOnInit(){if(this.localColumns=a().clone(this.columns),this.table.element.addEventListener("mouseenter",et=>et.stopPropagation()),this._addTemplates(),!this.sorts){const et=-1!==a().findIndex(this.localColumns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(et?this.identifier:this.localColumns[0].prop+""),!et&&!this.forceIdentifier&&(this.identifier=this.localColumns[0].prop+"")}this.initUserConfig(),this.localColumns.forEach(et=>{et.cellTransformation&&(et.cellTemplate=this.cellTemplates[et.cellTransformation]),et.flexGrow||(et.flexGrow=et.prop+""===this.identifier?1:2),et.resizeable||(et.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.updateSelection.emit(new C.r),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),a().isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=(0,l.H)(0,this.autoReload).subscribe(()=>{this.ngZone.run(()=>this.reloadData())})}):this.autoReload?this.useData():this.reloadData(),"single"===this.selectionType&&(this.table.selectCheck=this.singleSelectCheck.bind(this))}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.localColumns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.userConfig.columns.forEach(et=>{for(let jt=0;jt<this.localColumns.length;jt++)this.localColumns[jt].prop===et.prop&&(this.localColumns[jt].isHidden=et.isHidden)}):this.updateUserColumns()}_calculateUniqueTableName(et){const jt=hn=>{if(!a().isString(hn))return 0;let Qn=0;for(let Ir=0;Ir<hn.length;Ir++)Qn+=hn.charCodeAt(Ir)*Ir;return Qn};return et.reduce((hn,Qn,Ir)=>(jt(Qn.prop)+jt(Qn.name))*(Ir+1)+hn,0).toString()}_loadUserConfig(){const et=this.localStorage.getItem(this.tableName);et&&(this.userConfig=JSON.parse(et))}_initUserConfigAutoSave(){const et=new u.y(this._initUserConfigProxy.bind(this));this.saveSubscriber=et.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(et){this.userConfig=new Proxy(this.userConfig,{set:(jt,hn,Qn)=>(jt[hn]=Qn,et.next(jt),!0)})}_saveUserConfig(et){this.localStorage.setItem(this.tableName,JSON.stringify(et))}updateUserColumns(){this.userConfig.columns=this.localColumns.map(et=>({prop:et.prop,name:et.name,isHidden:!!et.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.localColumns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.localColumns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.localColumns.filter(et=>!et.isHidden)}initColumnFilters(){let et=a().filter(this.localColumns,{filterable:!0});et=[...et,...this.extraFilterableColumns],this.columnFilters=et.map(jt=>({column:jt,options:[],value:jt.filterInitValue?this.createColumnFilterOption(jt.filterInitValue,jt.pipe):void 0})),this.selectedFilter=a().first(this.columnFilters)}createColumnFilterOption(et,jt){return{raw:a().toString(et),formatted:jt?jt.transform(et):a().toString(et)}}updateColumnFilterOptions(){this.columnFilters.forEach(et=>{let jt=[];if(a().isUndefined(et.column.filterOptions)){const Qn=a().filter(a().map(this.data,et.column.prop),Ir=>a().isString(Ir)&&""!==Ir||a().isBoolean(Ir)||a().isFinite(Ir)||a().isDate(Ir));jt=a().sortedUniq(Qn.sort())}else jt=et.column.filterOptions;const hn=jt.map(Qn=>this.createColumnFilterOption(Qn,et.column.pipe));et.value&&a().isUndefined(a().find(hn,{raw:et.value.raw}))&&(et.value=void 0),et.options=hn})}onSelectFilter(et){this.selectedFilter=et}onChangeFilter(et,jt){et.value=a().isEqual(et.value,jt)?void 0:jt,this.updateFilter()}doColumnFiltering(){const et=[];let jt=[...this.data],hn=[];return this.columnFilters.forEach(Qn=>{if(void 0===Qn.value)return;et.push({name:Qn.column.name,prop:Qn.column.prop,value:Qn.value});const Ir=a().partition(jt,ht=>{const Ue=(0,e.Hg)(Qn.column.prop)(ht,Qn.column.prop);return a().isUndefined(Qn.column.filterPredicate)?`${Ue}`===Qn.value.raw:Qn.column.filterPredicate(ht,Qn.value.raw)});jt=Ir[0],hn=[...hn,...Ir[1]]}),this.columnFiltersChanged.emit({filters:et,data:jt,dataOut:hn}),a().forEach(this.selection.selected,Qn=>{void 0===a().find(jt,{[this.identifier]:Qn[this.identifier]})&&(this.selection=new C.r,this.onSelect(this.selection))}),jt}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),a().get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl}useCustomClass(et){if(!this.customCss)throw new Error("Custom classes are not set!");const jt=Object.keys(this.customCss),hn=Object.values(this.customCss).map((Qn,Ir)=>(a().isFunction(Qn)&&Qn(et)||Qn===et)&&jt[Ir]).filter(Qn=>Qn).join(" ");return a().isEmpty(hn)?void 0:hn}ngOnChanges(et){et.data&&et.data.currentValue&&this.useData()}setLimit(et){const jt=parseInt(et.target.value,10);jt>0&&(this.userConfig.limit=jt)}reloadData(){if(!this.updating){this.status=new h.c;const et=new b(()=>{et.errorConfig.displayError&&(this.status=new h.c("danger","Failed to load data.")),et.errorConfig.resetData&&(this.data=[]),this.useData()});this.fetchData.emit(et),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}rowIdentity(){return et=>{const jt=et[this.identifier];if(a().isUndefined(jt))throw new Error(`Wrong identifier "${this.identifier}" -> "${jt}"`);return jt}}useData(){!this.data||(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const et=new Set;this.selection.selected.forEach(hn=>{for(const Qn of this.data)hn[this.identifier]===Qn[this.identifier]&&et.add(Qn)});const jt=Array.from(et.values());"onChange"===this.updateSelectionOnRefresh&&a().isEqual(this.selection.selected,jt)||(this.selection.selected=jt,this.onSelect(this.selection))}updateExpanded(){if(a().isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const et=this.expanded[this.identifier],jt=a().find(this.data,hn=>et===hn[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&a().isEqual(this.expanded,jt)||(this.expanded=jt,this.setExpandedRow.emit(jt))}onSelect(et){a().has(et,"selected")&&(this.selection.selected=et.selected),this.updateSelection.emit(a().clone(this.selection))}singleSelectCheck(et){return-1===this.selection.selected.indexOf(et)}toggleColumn(et){const jt=et.prop,hn=!et.isHidden;hn&&1===this.tableColumns.length?et.isHidden=!0:(a().find(this.localColumns,Qn=>Qn.prop===jt).isHidden=hn,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const et=this.userConfig.sorts[0].prop;a().find(this.tableColumns,jt=>jt.prop===et)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(et){return[{prop:et,dir:e.Sr.asc}]}changeSorting({sorts:et}){this.userConfig.sorts=et}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(et=>{et.value=void 0}),this.selectedFilter=a().first(this.columnFilters),this.updateFilter()}updateFilter(){let et=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&et){const jt=this.localColumns.filter(hn=>hn.cellTransformation!==_.e.sparkline);et=this.subSearch(et,Tt.prepareSearch(this.search),jt),this.table.offset=0}this.rows=et}subSearch(et,jt,hn){if(0===jt.length||0===et.length)return et;const Qn=jt.pop().replace(/\+/g," ").split(":"),Ir=[...hn];return 2===Qn.length&&(hn=Ir.filter(ht=>-1!==ht.name.toLowerCase().indexOf(Qn[0]))),et=this.basicDataSearch(a().last(Qn),et,hn),this.subSearch(et,jt,Ir)}basicDataSearch(et,jt,hn){return 0===et.length?jt:jt.filter(Qn=>hn.filter(Ir=>{let ht=a().get(Qn,Ir.prop);if(a().isUndefined(Ir.pipe)||(ht=Ir.pipe.transform(ht)),a().isUndefined(ht)||a().isNull(ht))return!1;if(a().isArray(ht)?ht=ht.join(" "):(a().isNumber(ht)||a().isBoolean(ht))&&(ht=ht.toString()),a().isObjectLike(ht)){if(!this.searchableObjects)return!1;ht=JSON.stringify(ht)}return-1!==ht.toLowerCase().indexOf(et)}).length>0)}getRowClass(){return()=>({clickable:!a().isUndefined(this.selectionType)})}toggleExpandRow(et,jt,hn){hn.stopPropagation(),jt?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=et,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(et)),this.table.rowDetail.toggleExpandRow(et)}}return Tt.\u0275fac=function(et){return new(et||Tt)(t.Y36(t.R0b),t.Y36(t.sBO))},Tt.\u0275cmp=t.Xpm({type:Tt,selectors:[["cd-table"]],viewQuery:function(et,jt){if(1&et&&(t.Gf(e.nE,7),t.Gf(oe,7),t.Gf(fe,7),t.Gf(ne,7),t.Gf(he,7),t.Gf(ce,7),t.Gf(Ae,7),t.Gf(Me,7),t.Gf(Oe,7),t.Gf(be,7),t.Gf(ue,7),t.Gf(He,7)),2&et){let hn;t.iGM(hn=t.CRH())&&(jt.table=hn.first),t.iGM(hn=t.CRH())&&(jt.tableCellBoldTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.sparklineTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.routerLinkTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.checkIconTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.perSecondTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.executingTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.classAddingTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.badgeTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.mapTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.truncateTpl=hn.first),t.iGM(hn=t.CRH())&&(jt.rowDetailsTpl=hn.first)}},inputs:{data:"data",columns:"columns",sorts:"sorts",columnMode:"columnMode",onlyActionHeader:"onlyActionHeader",toolHeader:"toolHeader",searchField:"searchField",header:"header",footer:"footer",limit:"limit",hasDetails:"hasDetails",autoReload:"autoReload",identifier:"identifier",forceIdentifier:"forceIdentifier",selectionType:"selectionType",updateSelectionOnRefresh:"updateSelectionOnRefresh",updateExpandedOnRefresh:"updateExpandedOnRefresh",autoSave:"autoSave",searchableObjects:"searchableObjects",customCss:"customCss",extraFilterableColumns:"extraFilterableColumns",status:"status"},outputs:{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow",columnFiltersChanged:"columnFiltersChanged"},features:[t.TTD],ngContentSelectors:ut,decls:33,vars:17,consts:function(){let yn,et,jt,hn,Qn;return yn="Clear filters",et="total",jt="selected",hn="found",Qn="Expand/Collapse Row",[[1,"dataTables_wrapper"],["class","dataTables_header clearfix",4,"ngIf"],[1,"bootstrap","cd-datatable",3,"cssClasses","selectionType","selected","sorts","columns","columnMode","rows","rowClass","headerHeight","footerHeight","limit","loadingIndicator","rowIdentity","rowHeight","select","sort"],["table",""],["rowHeight","auto"],["detailRow",""],["ngx-datatable-row-detail-template",""],["ngx-datatable-footer-template",""],["tableCellBoldTpl",""],["sparklineTpl",""],["routerLinkTpl",""],["checkIconTpl",""],["perSecondTpl",""],["executingTpl",""],["classAddingTpl",""],["badgeTpl",""],["mapTpl",""],["truncateTpl",""],["ngx-datatable-cell-template",""],["rowDetailsTpl",""],[1,"dataTables_header","clearfix"],[1,"cd-datatable-actions"],["class","btn-group widget-toolbar",4,"ngIf"],["class","input-group search",4,"ngIf"],["class","input-group dataTables_paginate",4,"ngIf"],[1,"widget-toolbar"],["ngbDropdown","","autoClose","outside",1,"tc_menuitem"],["ngbDropdownToggle","",1,"btn","btn-light","tc_columnBtn"],[3,"ngClass"],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["class","widget-toolbar tc_refreshBtn",4,"ngIf"],[1,"btn-group","widget-toolbar"],["ngbDropdown","","placement","bottom-right",1,"tc_filter_name"],["ngbDropdownToggle","",1,"btn","btn-light"],["ngbDropdown","","placement","bottom-right",1,"tc_filter_option"],["ngbDropdownItem","",3,"click"],[3,"ngClass",4,"ngIf"],[1,"input-group","search"],[1,"input-group-prepend"],[1,"input-group-text"],["type","text",1,"form-control",3,"ngModel","ngModelChange","keyup"],[1,"input-group-append"],["type","button",1,"btn","btn-light",3,"click"],[1,"input-group","dataTables_paginate"],["type","number","min","1","max","9999",1,"form-control",3,"value","click","keyup","blur"],["ngbDropdownItem","",3,"click",4,"ngIf"],[1,"custom-control","custom-checkbox","py-0"],["type","checkbox",1,"custom-control-input",3,"name","id","checked"],[1,"custom-control-label",3,"for"],[1,"widget-toolbar","tc_refreshBtn"],["type","button",3,"ngbTooltip","click"],[1,"filter-chips"],["href","",1,"tc_clearSelections",3,"click"],yn,["class","badge badge-info mr-2",4,"ngIf"],[1,"badge","badge-info","mr-2"],[1,"mr-2"],[1,"badge-remove",3,"click"],["aria-hidden","true",3,"ngClass"],[1,"page-count"],[4,"ngIf"],et,[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change"],jt,hn,[3,"data","isBinary"],[3,"routerLink","queryParams"],[3,"ngClass","hidden"],["class","badge",3,"ngClass",4,"ngIf"],[1,"badge",3,"ngClass"],["data-toggle","tooltip",3,"title"],["href","javascript:void(0)","title",Qn,1,"expand-collapse-icon","tc_expand-collapse",3,"click"]]},template:function(et,jt){1&et&&(t.F$t(Xt),t.TgZ(0,"div",0),t.YNc(1,$e,3,0,"div",1),t.YNc(2,dt,13,9,"div",1),t.YNc(3,ln,6,1,"div",1),t.TgZ(4,"ngx-datatable",2,3),t.NdJ("select",function(Qn){return jt.onSelect(Qn)})("sort",function(Qn){return jt.changeSorting(Qn)}),t.TgZ(6,"ngx-datatable-row-detail",4,5),t.YNc(8,ar,1,0,"ng-template",6),t.qZA(),t.TgZ(9,"ngx-datatable-footer"),t.YNc(10,er,8,11,"ng-template",7),t.qZA(),t.qZA(),t.qZA(),t.YNc(11,Mn,2,1,"ng-template",null,8,t.W1O),t.YNc(13,Ht,1,2,"ng-template",null,9,t.W1O),t.YNc(15,tr,2,5,"ng-template",null,10,t.W1O),t.YNc(17,Yn,2,6,"ng-template",null,11,t.W1O),t.YNc(19,Cn,2,3,"ng-template",null,12,t.W1O),t.YNc(21,Kn,4,4,"ng-template",null,13,t.W1O),t.YNc(23,qn,3,8,"ng-template",null,14,t.W1O),t.YNc(25,Fn,2,3,"ng-template",null,15,t.W1O),t.YNc(27,Dn,3,4,"ng-template",null,16,t.W1O),t.YNc(29,mn,3,6,"ng-template",null,17,t.W1O),t.YNc(31,jn,1,4,"ng-template",18,19,t.W1O)),2&et&&(t.xp6(1),t.Q6J("ngIf",jt.onlyActionHeader),t.xp6(1),t.Q6J("ngIf",jt.toolHeader),t.xp6(1),t.Q6J("ngIf",jt.toolHeader&&jt.columnFiltered),t.xp6(1),t.Q6J("cssClasses",jt.paginationClasses)("selectionType",jt.selectionType)("selected",jt.selection.selected)("sorts",jt.userConfig.sorts)("columns",jt.tableColumns)("columnMode",jt.columnMode)("rows",jt.rows)("rowClass",jt.getRowClass())("headerHeight",jt.header?"auto":0)("footerHeight",jt.footer?"auto":0)("limit",jt.userConfig.limit>0?jt.userConfig.limit:void 0)("loadingIndicator",jt.loadingIndicator)("rowIdentity",jt.rowIdentity())("rowHeight","auto"))},directives:[D.O5,e.nE,e.$7,e.AR,e.dX,e.ii,e.vq,x.jt,x.iD,D.mk,x.Vi,D.sg,x.TH,j.Fj,j.JJ,j.On,x._L,e.Ke,H.l,z.yS],pipes:[U.i,M.n,I.i,J.I,Y.b,ie.W],styles:['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px;max-width:99.9%}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);display:inline-block;height:30px;margin-left:5px;padding-left:5px;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);float:right;padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f8f9fa;border:1px solid #ced4da;border-bottom:0;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);float:right;max-width:250px;padding-left:8px;padding-right:8px;width:40%}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{min-width:85px;padding-right:8px;width:8%}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]   .badge-remove[_ngcontent-%COMP%]{color:#fff}  cd-table .cd-datatable{border:1px solid #ced4da;margin-bottom:0;max-width:none!important}  cd-table .cd-datatable .progress-linear{display:block;height:5px;margin:0;padding:0;position:relative;width:100%}  cd-table .cd-datatable .progress-linear .container{background-color:#2b99a8}  cd-table .cd-datatable .progress-linear .container .bar{background-color:#2b99a8;height:100%;left:0;overflow:hidden;position:absolute;width:100%}  cd-table .cd-datatable .progress-linear .container .bar:before{animation:progress-loading 3s linear infinite;background-color:#2b99a8;content:"";display:block;height:100%;left:-200px;position:absolute;width:200px}  cd-table .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f8f9fa;background-image:linear-gradient(to bottom,#f8f9fa 0,#e9ecef 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa",endColorstr="#ffededed",GradientType=0)}  cd-table .cd-datatable .datatable-header .sort-asc,   cd-table .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  cd-table .cd-datatable .datatable-header .datatable-header-cell{border:0;border-bottom:1px solid #ced4da;border-left:1px solid #ced4da;padding:5px;font-weight:bold;text-align:left}  cd-table .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" \\f0dc"}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" \\f160"}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" \\f161"}  cd-table .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:0}  cd-table .cd-datatable .datatable-body{margin-bottom:-6px}  cd-table .cd-datatable .datatable-body .empty-row{background-color:#c8ecf1;font-style:italic;font-weight:bold;padding-bottom:5px;padding-top:5px;text-align:center}  cd-table .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#c8ecf1;transition-duration:.3s;transition-property:background;transition-timing-function:linear}  cd-table .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  cd-table .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f8f9fa}  cd-table .cd-datatable .datatable-body .datatable-body-row.active,   cd-table .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#9fdee6}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{border:0;border-bottom:1px solid #ced4da;border-left:1px solid #ced4da;padding:5px}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:0}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  cd-table .cd-datatable .datatable-body .datatable-row-detail{border-bottom:2px solid #ced4da;overflow-y:visible!important;padding:20px}  cd-table .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  cd-table .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  cd-table .cd-datatable .datatable-body .expand-collapse-icon-right:before{color:#212529;font-family:"ForkAwesome",sans-serif;font-size:1rem;line-height:1;content:"\\f105"}  cd-table .cd-datatable .datatable-body .expand-collapse-icon-down:before{color:#212529;font-family:"ForkAwesome",sans-serif;font-size:1rem;line-height:1;content:"\\f107"}  cd-table .cd-datatable .datatable-footer .selected-count,   cd-table .cd-datatable .datatable-footer .page-count{font-style:italic;min-height:2rem;padding-left:.3rem;padding-top:.3rem}  cd-table .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{0%{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}'],changeDetection:0}),Tt})()},93523:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>s,G:()=>a});var t=o(23815),e=o.n(t);function s(...h){switch(h.length){case 1:return l.apply(void 0,h);case 3:return u.apply(void 0,h);default:throw new Error}}function a(h,_,m){const b=`__ignore_${_}`;Array.isArray(h[b])?h[b].push(m):h[b]=[m]}function l(h){for(const _ of Object.getOwnPropertyNames(h.prototype)){const m=Object.getOwnPropertyDescriptor(h.prototype,_);!(m.value instanceof Function)||"constructor"===_||(u(h.prototype,_,m),Object.defineProperty(h.prototype,_,m))}}function u(h,_,m){void 0===m&&(m=Object.getOwnPropertyDescriptor(h,_));const b=m.value;m.value=function(){const C=`__ignore_${_}`,D=h[C]||[],x=[];for(let H=0;H<arguments.length;H++)x[H]=e().isString(arguments[H])&&-1===D.indexOf(H)?encodeURIComponent(arguments[H]):arguments[H];return b.apply(this,x)}}},82945:(Ge,g,o)=>{"use strict";o.d(g,{U:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{constructor(h){this.elementRef=h,this.focus=!0}ngAfterViewInit(){const h=this.elementRef.nativeElement;this.focus&&e().isFunction(h.focus)&&h.focus()}set autofocus(h){e().isBoolean(h)?this.focus=h:e().isFunction(h)&&(this.focus=h())}}return l.\u0275fac=function(h){return new(h||l)(s.Y36(s.SBq))},l.\u0275dir=s.lG2({type:l,selectors:[["","autofocus",""]],inputs:{autofocus:"autofocus"}}),l})()},17932:(Ge,g,o)=>{"use strict";o.d(g,{Q:()=>h});var t=o(74788),e=o(23815),s=o.n(e),a=o(47557),l=o(28211),u=o(24751);let h=(()=>{class _{constructor(b,C,D,x){this.elementRef=b,this.control=C,this.dimlessBinaryPipe=D,this.formatter=x,this.ngModelChange=new t.vpe,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(b){/^[\d.]+$/.test(b)&&(b+=this.defaultUnit||"m");const C=this.formatter.toBytes(b),D=this.round(C);this.el.value=this.dimlessBinaryPipe.transform(D),null!==C?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(b){if(null!==b&&0!==b){if(!s().isUndefined(this.minBytes)&&b<this.minBytes)return this.minBytes;if(!s().isUndefined(this.maxBytes)&&b>this.maxBytes)return this.maxBytes;if(!s().isUndefined(this.roundPower)){const C=Math.round(Math.log(b)/Math.log(this.roundPower));return Math.pow(this.roundPower,C)}}return b}onBlur(b){this.setValue(b)}}return _.\u0275fac=function(b){return new(b||_)(t.Y36(t.SBq),t.Y36(u.a5),t.Y36(a.$),t.Y36(l.H))},_.\u0275dir=t.lG2({type:_,selectors:[["","cdDimlessBinary",""]],hostBindings:function(b,C){1&b&&t.NdJ("blur",function(x){return C.onBlur(x.target.value)})},inputs:{minBytes:"minBytes",maxBytes:"maxBytes",roundPower:"roundPower",defaultUnit:"defaultUnit"},outputs:{ngModelChange:"ngModelChange"}}),_})()},35540:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>e});var t=o(74788);let e=(()=>{class s{}return s.\u0275fac=function(l){return new(l||s)},s.\u0275mod=t.oAB({type:s}),s.\u0275inj=t.cJS({imports:[[]]}),s})()},87925:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>a});var t=o(74788),e=o(84333),s=o(74937);let a=(()=>{class l{constructor(h,_,m){this.formScope=h,this.authStorageService=_,this.elementRef=m}ngAfterViewInit(){var h,_,m;this.permissions=this.authStorageService.getPermissions();const b=null===(h=this.formScope)||void 0===h?void 0:h.cdFormScope;b&&!(null===(m=null===(_=this.permissions)||void 0===_?void 0:_[b])||void 0===m?void 0:m.update)&&(this.elementRef.nativeElement.disabled=!0)}}return l.\u0275fac=function(h){return new(h||l)(t.Y36(e.T,8),t.Y36(s.j),t.Y36(t.SBq))},l.\u0275dir=t.lG2({type:l,selectors:[["input",3,"cdNoFormInputDisable",""],["select",3,"cdNoFormInputDisable",""],["button",3,"cdNoFormInputDisable",""],["","cdFormInputDisable",""]]}),l})()},63622:(Ge,g,o)=>{"use strict";o.d(g,{y:()=>l});var t=o(34501),e=o(8958),s=o(93614),a=o(74788);let l=(()=>{class u{constructor(_,m,b){this.templateRef=_,this.viewContainer=m,this.componentFactoryResolver=b}set cdFormLoading(_){let m,b;switch(this.viewContainer.clear(),_){case s.Q.Loading:m=this.componentFactoryResolver.resolveComponentFactory(e.b),b=this.resolveNgContent("Loading form data..."),this.viewContainer.createComponent(m,null,null,b);break;case s.Q.Ready:this.viewContainer.createEmbeddedView(this.templateRef);break;case s.Q.Error:m=this.componentFactoryResolver.resolveComponentFactory(t.G),b=this.resolveNgContent("Form data could not be loaded."),this.viewContainer.createComponent(m,null,null,b).instance.type="error"}}resolveNgContent(_){return[[document.createTextNode(_)]]}}return u.\u0275fac=function(_){return new(_||u)(a.Y36(a.Rgc),a.Y36(a.s_b),a.Y36(a._Vd))},u.\u0275dir=a.lG2({type:u,selectors:[["","cdFormLoading",""]],inputs:{cdFormLoading:"cdFormLoading"}}),u})()},84333:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>e});var t=o(74788);let e=(()=>{class s{}return s.\u0275fac=function(l){return new(l||s)},s.\u0275dir=t.lG2({type:s,selectors:[["","cdFormScope",""]],inputs:{cdFormScope:"cdFormScope"}}),s})()},94276:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>a});var t=o(74788),e=o(24751);let a=(()=>{class l{constructor(h){this.parent=h}get validClass(){return!!this.control&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return function(l,u){return[...u.path,l]}(this.formControlName,this.parent)}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}}return l.\u0275fac=function(h){return new(h||l)(t.Y36(e.gN,13))},l.\u0275dir=t.lG2({type:l,selectors:[["",8,"form-control"],["",8,"form-check-input"],["",8,"custom-control-input"]],hostVars:4,hostBindings:function(h,_){2&h&&t.ekj("is-valid",_.validClass)("is-invalid",_.invalidClass)},inputs:{formControlName:"formControlName",formControl:"formControl"}}),l})()},56310:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>s});var t=o(24751),e=o(74788);let s=(()=>{class a{constructor(u){this.elRef=u,this.validationDisabled=!1}get hasErrors(){return this.formControlNames.some(u=>!u.valid&&u.dirty&&u.touched)&&!this.validationDisabled}get hasSuccess(){return!this.formControlNames.some(u=>!u.valid)&&this.formControlNames.some(u=>u.dirty&&u.touched)&&!this.validationDisabled}get label(){const u=this.elRef.nativeElement.querySelector("label");return u&&u.textContent?u.textContent.trim():"This field"}get isDirtyAndTouched(){return this.formControlNames.some(u=>u.dirty&&u.touched)}}return a.\u0275fac=function(u){return new(u||a)(e.Y36(e.SBq))},a.\u0275dir=e.lG2({type:a,selectors:[["",8,"form-group"]],contentQueries:function(u,h,_){if(1&u&&e.Suo(_,t.u,4),2&u){let m;e.iGM(m=e.CRH())&&(h.formControlNames=m)}},hostVars:4,hostBindings:function(u,h){2&u&&e.ekj("has-error",h.hasErrors)("has-success",h.hasSuccess)},inputs:{validationDisabled:"validationDisabled"}}),a})()},41582:(Ge,g,o)=>{"use strict";o.d(g,{V:()=>s});var t=o(74788),e=o(24751);let s=(()=>{class a{constructor(){this.validSubmit=new t.vpe}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(u){u instanceof e.cw?Object.keys(u.controls).forEach(h=>this.markAsTouchedAndDirty(u.controls[h])):u instanceof e.Oe?u.controls.forEach(h=>this.markAsTouchedAndDirty(h)):u instanceof e.NI&&u.enabled&&(u.markAsDirty(),u.markAsTouched(),u.updateValueAndValidity())}}return a.\u0275fac=function(u){return new(u||a)},a.\u0275dir=t.lG2({type:a,selectors:[["","formGroup",""]],hostBindings:function(u,h){1&u&&t.NdJ("submit",function(){return h.onSubmit()})},inputs:{formGroup:"formGroup"},outputs:{validSubmit:"validSubmit"}}),a})()},4416:(Ge,g,o)=>{"use strict";o.d(g,{C:()=>e});var t=o(74788);let e=(()=>{class s{constructor(l,u){this.elementRef=l,this.renderer=u}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const l=this.getInputElement();l&&"text"===l.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const l=this.getInputElement();l.type="password"===l.type?"text":"password",this.update()}}return s.\u0275fac=function(l){return new(l||s)(t.Y36(t.SBq),t.Y36(t.Qsj))},s.\u0275dir=t.lG2({type:s,selectors:[["","cdPasswordButton",""]],hostBindings:function(l,u){1&l&&t.NdJ("click",function(){return u.onClick()})},inputs:{cdPasswordButton:"cdPasswordButton"}}),s})()},59376:(Ge,g,o)=>{"use strict";o.d(g,{m:()=>s});var t=o(74788),e=o(38549);let s=(()=>{class a{constructor(u){this.nav=u,this.localStorage=window.localStorage}ngOnInit(){const u=this.localStorage.getItem(`tabset_${this.cdStatefulTab}`);u&&this.nav.select(u)}onNavChange(u){this.cdStatefulTab&&u.nextId&&this.localStorage.setItem(`tabset_${this.cdStatefulTab}`,u.nextId)}}return a.\u0275fac=function(u){return new(u||a)(t.Y36(e.Pz,9))},a.\u0275dir=t.lG2({type:a,selectors:[["","cdStatefulTab",""]],hostBindings:function(u,h){1&u&&t.NdJ("navChange",function(m){return h.onNavChange(m)})},inputs:{cdStatefulTab:"cdStatefulTab"}}),a})()},99466:(Ge,g,o)=>{"use strict";o.d(g,{e:()=>t});var t=(()=>{return(e=t||(t={})).bold="bold",e.sparkline="sparkline",e.perSecond="perSecond",e.checkIcon="checkIcon",e.routerLink="routerLink",e.executing="executing",e.classAdding="classAdding",e.badge="badge",e.map="map",e.truncate="truncate",t;var e})()},65862:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>t});var t=(()=>{return(e=t||(t={})).add="fa fa-plus",e.addCircle="fa fa-plus-circle",e.minusCircle="fa fa-minus-circle",e.edit="fa fa-pencil",e.destroy="fa fa-times",e.destroyCircle="fa fa-times-circle",e.exchange="fa fa-exchange",e.copy="fa fa-copy",e.clipboard="fa fa-clipboard",e.flatten="fa fa-chain-broken",e.trash="fa fa-trash-o",e.lock="fa fa-lock",e.unlock="fa fa-unlock",e.clone="fa fa-clone",e.undo="fa fa-undo",e.search="fa fa-search",e.start="fa fa-play",e.stop="fa fa-stop",e.analyse="fa fa-stethoscope",e.deepCheck="fa fa-cog",e.reweight="fa fa-balance-scale",e.left="fa fa-arrow-left",e.right="fa fa-arrow-right",e.down="fa fa-arrow-down",e.erase="fa fa-eraser",e.user="fa fa-user",e.users="fa fa-users",e.share="fa fa-share-alt",e.key="fa fa-key-modern",e.warning="fa fa-exclamation-triangle",e.info="fa fa-info",e.infoCircle="fa fa-info-circle",e.questionCircle="fa fa-question-circle-o",e.check="fa fa-check",e.show="fa fa-eye",e.paragraph="fa fa-paragraph",e.terminal="fa fa-terminal",e.magic="fa fa-magic",e.hourglass="fa fa-hourglass-o",e.filledHourglass="fa fa-hourglass",e.table="fa fa-table",e.spinner="fa fa-spinner",e.refresh="fa fa-refresh",e.bullseye="fa fa-bullseye",e.disk="fa fa-hdd-o",e.server="fa fa-server",e.filter="fa fa-filter",e.lineChart="fa fa-line-chart",e.signOut="fa fa-sign-out",e.health="fa fa-heartbeat",e.circle="fa fa-circle",e.bell="fa fa-bell",e.tag="fa fa-tag",e.leftArrow="fa fa-angle-left",e.rightArrow="fa fa-angle-right",e.leftArrowDouble="fa fa-angle-double-left",e.rightArrowDouble="fa fa-angle-double-right",e.flag="fa fa-flag",e.clearFilters="fa fa-window-close",e.download="fa fa-download",e.upload="fa fa-upload",e.close="fa fa-times",e.json="fa fa-file-code-o",e.text="fa fa-file-text",e.wrench="fa fa-wrench",e.enter="fa fa-sign-in",e.exit="fa fa-sign-out",e.restart="fa fa-history",e.deploy="fa fa-cube",e.large="fa fa-lg",e.large2x="fa fa-2x",e.large3x="fa fa-3x",e.stack="fa fa-stack",e.stack1x="fa fa-stack-1x",e.stack2x="fa fa-stack-2x",e.pulse="fa fa-pulse",e.spin="fa fa-spin",e.inverse="fa fa-inverse",t;var e})()},18001:(Ge,g,o)=>{"use strict";o.d(g,{k:()=>t});var t=(()=>{return(e=t||(t={}))[e.error=0]="error",e[e.info=1]="info",e[e.success=2]="success",t;var e})()},91801:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>t});var t=(()=>{return(e=t||(t={}))[e.ValueOk=0]="ValueOk",e[e.ValueStale=1]="ValueStale",e[e.ValueNone=2]="ValueNone",e[e.ValueException=3]="ValueException",t;var e})()},62862:(Ge,g,o)=>{"use strict";o.d(g,{O:()=>a});var t=o(24751),e=o(95463),s=o(74788);let a=(()=>{class l extends t.qu{group(h,_=null){const m=super.group(h,_);return new e.d(m.controls,m.validator,m.asyncValidator)}}return l.\u0275fac=function(){let u;return function(_){return(u||(u=s.n5z(l)))(_||l)}}(),l.\u0275prov=s.Yz7({token:l,factory:l.\u0275fac,providedIn:"root"}),l})()},95463:(Ge,g,o)=>{"use strict";o.d(g,{d:()=>e});var t=o(24751);class e extends t.cw{constructor(a,l,u){super(a,l,u),this.controls=a}get(a){const l=this._get(a);if(!l)throw new Error(`Control '${a}' could not be found!`);return l}_get(a){return super.get(a)||Object.values(this.controls).filter(l=>l.get).map(l=>l instanceof e?l._get(a):l.get(a)).find(l=>Boolean(l))}getValue(a){return this.get(a).value}silentSet(a,l){this.get(a).setValue(l,{emitEvent:!1})}showError(a,l,u){const h=this.get(a);return(l.submitted||h.dirty)&&(u?h.hasError(u):h.invalid)}}},93614:(Ge,g,o)=>{"use strict";o.d(g,{Q:()=>t,E:()=>e});var t=(()=>{return(s=t||(t={}))[s.Loading=0]="Loading",s[s.Ready=1]="Ready",s[s.Error=2]="Error",s[s.None=3]="None",t;var s})();class e{constructor(){this.loading=t.Loading}loadingStart(){this.loading=t.Loading}loadingReady(){this.loading=t.Ready}loadingError(){this.loading=t.Error}loadingNone(){this.loading=t.None}}},77205:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>x,P:()=>D});var t=o(24751),e=o(23815),s=o.n(e),a=o(25917),l=o(46797),u=o(43190);function h(j,H){return H?(0,u.w)(()=>j,H):(0,u.w)(()=>j)}var _=o(88002),m=o(15257),b=o(47557),C=o(28211);function D(j){return null==j||0===j.length}class x{static email(H){return D(H.value)?null:t.kI.email(H)}static ip(H=0){const z=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,U=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return t.kI.pattern(4===H?z:6===H?U:new RegExp(z.source+"|"+U.source))}static number(H=!0){return t.kI.pattern(H?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(H=!0){return t.kI.pattern(H?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static sslCert(){return t.kI.pattern(/^-----BEGIN CERTIFICATE-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END CERTIFICATE-----[\n\r\f]*$/)}static sslPrivKey(){return t.kI.pattern(/^-----BEGIN RSA PRIVATE KEY-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END RSA PRIVATE KEY-----[\n\r\f]*$/)}static pemCert(){return t.kI.pattern(/^-----BEGIN .+-----$.+^-----END .+-----$/ms)}static requiredIf(H,z){let U=!1;return M=>(!U&&M.parent&&(Object.keys(H).forEach(J=>{M.parent.get(J).valueChanges.subscribe(()=>{M.updateValueAndValidity({emitEvent:!1})})}),U=!0),Object.keys(H).every(J=>{if(!M.parent)return!1;const Y=M.parent.get(J).value,ie=H[J];if(s().isObjectLike(ie)){let oe=!1;switch(ie.op){case"empty":oe=s().isEmpty(Y);break;case"!empty":oe=!s().isEmpty(Y);break;case"equal":oe=Y===ie.arg1;break;case"!equal":oe=Y!==ie.arg1;break;case"minLength":s().isString(Y)&&(oe=Y.length>=ie.arg1)}return oe}return Y===ie})&&(s().isFunction(z)?z.call(z,M.value):D(M.value))?{required:!0}:null)}static composeIf(H,z){let U=!1;return M=>(!U&&M.parent&&(Object.keys(H).forEach(I=>{M.parent.get(I).valueChanges.subscribe(()=>{M.updateValueAndValidity({emitEvent:!1})})}),U=!0),Object.keys(H).every(I=>M.parent&&M.parent.get(I).value===H[I])?t.kI.compose(z)(M):null)}static custom(H,z){return U=>{const M=z.call(this,U.value);return M?{[H]:M}:null}}static validateIf(H,z,U,M=[],I=[]){U=U.concat(M),H.setValidators(J=>z.call(this)?t.kI.compose(U)(J):M.length>0?t.kI.compose(M)(J):null),I.forEach(J=>{J.valueChanges.subscribe(()=>{H.updateValueAndValidity({emitEvent:!1})})})}static match(H,z){return U=>{const M=U.get(H),I=U.get(z);if(!M||!I)return null;if(M.value!==I.value)I.setErrors({match:!0});else if(I.hasError("match")){const Y=I.errors;s().unset(Y,"match"),I.setErrors(s().isEmpty(s().keys(Y))?null:Y)}return null}}static unique(H,z=null,U,M=!1){let I;return J=>J.pristine||D(J.value)?(0,a.of)(null):(I=J.value,s().isFunction(U)&&null!==U()&&""!==U()&&(I=M?`${J.value}$${U()}`:`${U()}$${J.value}`),(0,l.H)().pipe(h(H.call(z,I)),(0,_.U)(Y=>Y?{notUnique:!0}:null),(0,m.q)(1)))}static uuid(H=!1){const z=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return U=>U.pristine&&U.untouched||!H&&!U.value||z.test(U.value)?null:{invalidUuid:"This is not a valid UUID"}}static binaryMin(H){return z=>{const U=new C.H,M=(new C.H).toBytes(z.value);if(H<=M)return null;const I=new b.$(U).transform(H);return{binaryMin:()=>"Size has to be at least " + I + " or more"}}}static binaryMax(H){return z=>{const U=new C.H,M=U.toBytes(z.value);if(H>=M)return null;const I=new b.$(U).transform(H);return{binaryMax:()=>"Size has to be at most " + I + " or less"}}}static passwordPolicy(H,z,U){return M=>{if(M.pristine||""===M.value)return s().isFunction(U)&&U(!0,0),(0,a.of)(null);let I;return s().isFunction(z)&&(I=z()),(0,l.H)(500).pipe(h(s().invoke(H,"validatePassword",M.value,I)),(0,_.U)(J=>(s().isFunction(U)&&U(J.valid,J.credits,J.valuation),J.valid?null:{passwordPolicy:!0})),(0,m.q)(1))}}static bucketName(){return H=>{if(H.pristine||!H.value)return(0,a.of)({required:!0});const z=[];let U;return z.push(()=>{const J=H.value;let Y=!0;return(/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(J)||/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i.test(J))&&(U="ipAddress",Y=!1),Y}),z.push(M=>s().inRange(M.length,3,64)?!!/^[0-9a-z.-]+$/.test(H.value)||(U="bucketNameInvalid",!1):(U="shouldBeInRange",!1)),z.push(M=>{const I=s().split(M,".");return s().every(I,J=>J!==s().toLower(J)||J.includes("_")?(U="containsUpperCase",!1):/^[0-9a-z-]+$/.test(J)?s().every([0,J.length-1],Y=>(U="lowerCaseOrNumber",/[a-z]/.test(J[Y])||s().isInteger(s().parseInt(J[Y])))):(U="onlyLowerCaseAndNumbers",!1))}),s().every(z,M=>M(H.value))?(0,a.of)(null):(0,a.of)((()=>{switch(U){case"onlyLowerCaseAndNumbers":return{onlyLowerCaseAndNumbers:!0};case"shouldBeInRange":return{shouldBeInRange:!0};case"ipAddress":return{ipAddress:!0};case"containsUpperCase":return{containsUpperCase:!0};case"lowerCaseOrNumber":return{lowerCaseOrNumber:!0};default:return{bucketNameInvalid:!0}}})())}}static bucketExistence(H,z){return U=>U.pristine||!U.value?(0,a.of)({required:!0}):z.exists(U.value).pipe((0,_.U)(M=>M===H?null:{bucketNameNotAllowed:!0}))}}},61355:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>s,e:()=>a});var t=o(65862),e=o(18001);class s{constructor(u=e.k.info,h,_,m,b="Ceph"){this.type=u,this.title=h,this.message=_,this.options=m,this.application=b,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class a extends s{constructor(u=new s){super(u.type,u.title,u.message,u.options,u.application),this.config=u,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[t.P.warning,t.P.info,t.P.check],this.borderClasses=["border-danger","border-info","border-success"],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.borderClass=this.borderClasses[this.type],this.isFinishedTask=u.isFinishedTask}}},51907:(Ge,g,o)=>{"use strict";o.d(g,{G:()=>t});class t{constructor(s){this.pwdExpirationSpan=0,this.pwdExpirationSpan=s.user_pwd_expiration_span,this.pwdExpirationWarning1=s.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=s.user_pwd_expiration_warning_2}}},68774:(Ge,g,o)=>{"use strict";o.d(g,{r:()=>t});class t{constructor(s){this._selected=[],s&&(this._selected=s),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(s){this._selected=s,this.update()}get selected(){return this._selected}add(s){this._selected.push(s),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},87311:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>t});class t{constructor(s,a,l,u){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=s.nativeElement,this.getStyleLeft=l,this.getStyleTop=u,this.tooltipEl=a.nativeElement}customTooltips(s){if(0===s.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(s.yAlign?s.yAlign:"no-transform"),s.body){const u=s.title||[],h=s.body.map(b=>b.lines);let _="<thead>";u.forEach(b=>{_+="<tr><th>"+this.getTitle(b)+"</th></tr>"}),_+="</thead><tbody>",h.forEach((b,C)=>{const D=s.labelColors[C];let x="background:"+(this.customColors.backgroundColor||D.backgroundColor);x+="; border-color:"+(this.customColors.borderColor||D.borderColor),x+="; border-width: 2px",_+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+x+'"></span>'+this.getBody(b)+"</td></tr>"}),_+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=_}const a=this.chartEl.offsetTop,l=this.chartEl.offsetLeft;if(this.checkOffset){const u=s.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),s.caretX-u<0?this.tooltipEl.classList.add("transform-left"):s.caretX+u>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(s,l),this.tooltipEl.style.top=this.getStyleTop(s,a),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=s._fontFamily,this.tooltipEl.style.fontSize=s.fontSize,this.tooltipEl.style.fontStyle=s._fontStyle,this.tooltipEl.style.padding=s.yPadding+"px "+s.xPadding+"px"}getBody(s){return s}getTitle(s){return s}}},30633:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>t,r:()=>e});var t=(()=>{return(s=t||(t={}))[s.global=0]="global",s[s.pool=1]="pool",s[s.image=2]="image",t;var s})(),e=(()=>{return(s=e||(e={}))[s.bps=0]="bps",s[s.iops=1]="iops",s[s.milliseconds=2]="milliseconds",e;var s})()},60737:(Ge,g,o)=>{"use strict";o.d(g,{o:()=>e});var t=o(29075);class e extends t.i{}},76111:(Ge,g,o)=>{"use strict";o.d(g,{R:()=>e});var t=o(29075);class e extends t.i{}},19358:(Ge,g,o)=>{"use strict";o.d(g,{N:()=>t});class t{constructor(s,a,l){this.poolName=s,this.namespace=a,this.imageName=l}static fromString(s){const a=s.split("/");return new this(a[0],a.length>=3?a[1]:null,a.length>=3?a[2]:a[1])}getNameSpace(){return this.namespace?`${this.namespace}/`:""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},29075:(Ge,g,o)=>{"use strict";o.d(g,{i:()=>t});class t{constructor(s,a){this.name=s,this.metadata=a}}},47187:(Ge,g,o)=>{"use strict";o.d(g,{I:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h,_=!1){let m=h;return(!e().isArray(h)||e().isArray(h)&&_)&&(m=[h]),m}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"array",type:l,pure:!0}),l})()},68962:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>e});var t=o(74788);let e=(()=>{class s{transform(l,u="Yes",h="No"){return Boolean(l)?u:h}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"booleanText",type:s,pure:!0}),s})()},70442:(Ge,g,o)=>{"use strict";o.d(g,{i:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){let u=!1;switch(l){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":u=!0}return u}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"boolean",type:s,pure:!0}),s})()},96102:(Ge,g,o)=>{"use strict";o.d(g,{N:()=>s});var t=o(74788),e=o(12057);let s=(()=>{class a{constructor(u){this.datePipe=u}transform(u){return null===u||""===u?"":this.datePipe.transform(u,"shortDate")+" "+this.datePipe.transform(u,"mediumTime")}}return a.\u0275fac=function(u){return new(u||a)(t.Y36(e.uU,16))},a.\u0275pipe=t.Yjl({name:"cdDate",type:a,pure:!0}),a})()},24310:(Ge,g,o)=>{"use strict";o.d(g,{t:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){const u=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(l);return u?"dev"===u[2]?"master":u[1]:l}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"cephReleaseName",type:s,pure:!0}),s})()},58111:(Ge,g,o)=>{"use strict";o.d(g,{F:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){const u=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(l);return u?u[1]:l}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"cephShortVersion",type:s,pure:!0}),s})()},20044:(Ge,g,o)=>{"use strict";o.d(g,{O:()=>s});var t=o(28211),e=o(74788);let s=(()=>{class a{constructor(u){this.formatter=u}transform(u){return this.formatter.format_number(u,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}return a.\u0275fac=function(u){return new(u||a)(e.Y36(t.H,16))},a.\u0275pipe=e.Yjl({name:"dimlessBinaryPerSecond",type:a,pure:!0}),a})()},47557:(Ge,g,o)=>{"use strict";o.d(g,{$:()=>s});var t=o(28211),e=o(74788);let s=(()=>{class a{constructor(u){this.formatter=u}transform(u){return this.formatter.format_number(u,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}return a.\u0275fac=function(u){return new(u||a)(e.Y36(t.H,16))},a.\u0275pipe=e.Yjl({name:"dimlessBinary",type:a,pure:!0}),a})()},66369:(Ge,g,o)=>{"use strict";o.d(g,{n:()=>s});var t=o(28211),e=o(74788);let s=(()=>{class a{constructor(u){this.formatter=u}transform(u){return this.formatter.format_number(u,1e3,["","k","M","G","T","P","E","Z","Y"])}}return a.\u0275fac=function(u){return new(u||a)(e.Y36(t.H,16))},a.\u0275pipe=e.Yjl({name:"dimless",type:a,pure:!0}),a})()},94088:(Ge,g,o)=>{"use strict";o.d(g,{u:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){if(null===l||l<=0)return"";const u=[[`${Math.floor(l/31536e3)}`,"years"],[`${Math.floor(l%31536e3/86400)}`,"days"],[`${Math.floor(l%86400/3600)}`,"hours"],[`${Math.floor(l%3600/60)}`,"minutes"],[`${Math.floor(l%60)}`,"seconds"]];let h="";for(let _=0,m=u.length;_<m;_++)"0"!==u[_][0]&&(h+=" "+u[_][0]+" "+("1"===u[_][0]?u[_][1].substr(0,u[_][1].length-1):u[_][1]));return h.trim()||"1 second"}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"duration",type:s,pure:!1}),s})()},41039:(Ge,g,o)=>{"use strict";o.d(g,{W:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h){return e().isUndefined(h)||e().isNull(h)?"-":e().isNaN(h)?"N/A":h}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"empty",type:l,pure:!0}),l})()},21766:(Ge,g,o)=>{"use strict";o.d(g,{A:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){return`${l} IOPS`}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"iops",type:s,pure:!0}),s})()},88820:(Ge,g,o)=>{"use strict";o.d(g,{V:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){switch(l){case"user:rbd":return"user:rbd (tcmu-runner)";default:return l}}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"iscsiBackstore",type:s,pure:!0}),s})()},86969:(Ge,g,o)=>{"use strict";o.d(g,{A:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){return l.join(", ")}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"join",type:s,pure:!0}),s})()},42746:(Ge,g,o)=>{"use strict";o.d(g,{e:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){return"[DBG]"===l?"debug":"[INF]"===l?"info":"[WRN]"===l?"warn":"[ERR]"===l?"err":""}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"logPriority",type:s,pure:!0}),s})()},78877:(Ge,g,o)=>{"use strict";o.d(g,{b:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h,_){return e().isPlainObject(_)?e().get(_,h,h):h}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"map",type:l,pure:!0}),l})()},48537:(Ge,g,o)=>{"use strict";o.d(g,{J:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){return`${l} ms`}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"milliseconds",type:s,pure:!0}),s})()},55657:(Ge,g,o)=>{"use strict";o.d(g,{g:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h,_){return""===h?e().defaultTo(_,"n/a"):h}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"notAvailable",type:l,pure:!0}),l})()},36569:(Ge,g,o)=>{"use strict";o.d(g,{f:()=>e});var t=o(74788);let e=(()=>{class s{transform(l){const u=parseInt(l,10);return isNaN(u)?l:l+(1===Math.floor(u/10)?"th":u%10==1?"st":u%10==2?"nd":u%10==3?"rd":"th")}}return s.\u0275fac=function(l){return new(l||s)},s.\u0275pipe=t.Yjl({name:"ordinal",type:s,pure:!0}),s})()},85953:(Ge,g,o)=>{"use strict";o.d(g,{D:()=>ce});var t=o(12057),e=o(47187),s=o(68962),a=o(70442),l=o(96102),u=o(24310),h=o(58111),_=o(20044),m=o(47557),b=o(66369),C=o(94088),D=o(41039),x=o(74788);let j=(()=>{class Ae{transform(Oe){return encodeURIComponent(Oe)}}return Ae.\u0275fac=function(Oe){return new(Oe||Ae)},Ae.\u0275pipe=x.Yjl({name:"encodeUri",type:Ae,pure:!0}),Ae})();var H=o(21766),z=o(88820),U=o(86969),M=o(42746),I=o(78877),J=o(48537),Y=o(55657),ie=o(36569),oe=o(90068),fe=o(60793),ne=o(52821),he=o(10545);let ce=(()=>{class Ae{}return Ae.\u0275fac=function(Oe){return new(Oe||Ae)},Ae.\u0275mod=x.oAB({type:Ae}),Ae.\u0275inj=x.cJS({providers:[e.I,a.i,s.T,t.uU,h.F,u.t,m.$,_.O,b.n,oe.h,z.V,U.A,M.e,l.N,D.W,j,ie.f,H.A,J.J,Y.g,he.m,C.u,I.b,ne.W,fe.A],imports:[[t.ez]]}),Ae})()},90068:(Ge,g,o)=>{"use strict";o.d(g,{h:()=>u});var t=o(23815),e=o.n(t),s=o(16738),a=o.n(s),l=o(74788);a().updateLocale("en",{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",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}});let u=(()=>{class h{transform(m,b=!0){let C;if(C=e().isNumber(m)?a().unix(m):a()(m),!C.isValid())return"";let D=C.fromNow();return b&&(D=e().upperFirst(D)),D}}return h.\u0275fac=function(m){return new(m||h)},h.\u0275pipe=l.Yjl({name:"relativeDate",type:h,pure:!1}),h})()},60793:(Ge,g,o)=>{"use strict";o.d(g,{A:()=>s});var t=o(74788),e=o(91211);let s=(()=>{class a{constructor(u){this.domSanitizer=u}transform(u){return this.domSanitizer.sanitize(t.q3G.HTML,u)}}return a.\u0275fac=function(u){return new(u||a)(t.Y36(e.H7,16))},a.\u0275pipe=t.Yjl({name:"sanitizeHtml",type:a,pure:!0}),a})()},52821:(Ge,g,o)=>{"use strict";o.d(g,{W:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h,_,m){return e().isString(h)?(m=e().defaultTo(m,""),e().truncate(h,{length:_,omission:m})):h}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"truncate",type:l,pure:!0}),l})()},10545:(Ge,g,o)=>{"use strict";o.d(g,{m:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{transform(h){return e().upperFirst(h)}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275pipe=s.Yjl({name:"upperFirst",type:l,pure:!0}),l})()},45510:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>a});var t=o(74788),e=o(6283),s=o(74937);let a=(()=>{class l{constructor(h,_){this.router=h,this.authStorageService=_}canActivate(h,_){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"],{queryParams:{returnUrl:_.url}}),!1)}canActivateChild(h,_){return this.canActivate(h,_)}}return l.\u0275fac=function(h){return new(h||l)(t.LFG(e.F0),t.LFG(s.j))},l.\u0275prov=t.Yz7({token:l,factory:l.\u0275fac,providedIn:"root"}),l})()},74937:(Ge,g,o)=>{"use strict";o.d(g,{j:()=>l});var t=o(26215);class e{constructor(h=[]){["read","create","update","delete"].forEach(_=>this[_]=h.includes(_))}}class s{constructor(h){this.hosts=new e(h.hosts),this.configOpt=new e(h["config-opt"]),this.pool=new e(h.pool),this.osd=new e(h.osd),this.monitor=new e(h.monitor),this.rbdImage=new e(h["rbd-image"]),this.iscsi=new e(h.iscsi),this.rbdMirroring=new e(h["rbd-mirroring"]),this.rgw=new e(h.rgw),this.cephfs=new e(h.cephfs),this.manager=new e(h.manager),this.log=new e(h.log),this.user=new e(h.user),this.grafana=new e(h.grafana),this.prometheus=new e(h.prometheus),this.nfs=new e(h["nfs-ganesha"])}}var a=o(74788);let l=(()=>{class u{constructor(){this.isPwdDisplayedSource=new t.X(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(_,m={},b=!1,C=null,D=!1){localStorage.setItem("dashboard_username",_),localStorage.setItem("dashboard_permissions",JSON.stringify(new s(m))),localStorage.setItem("user_pwd_expiration_date",String(C)),localStorage.setItem("user_pwd_update_required",String(D)),localStorage.setItem("sso",String(b))}remove(){localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new s({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return u.\u0275fac=function(_){return new(_||u)},u.\u0275prov=a.Yz7({token:u,factory:u.\u0275fac,providedIn:"root"}),u})()},72625:(Ge,g,o)=>{"use strict";o.d(g,{R:()=>_});var t=o(26215),e=o(45435),s=o(88002),a=o(28049),l=o(74255),u=o(74788),h=o(24310);let _=(()=>{class m{constructor(C,D){this.summaryservice=C,this.cephReleaseNamePipe=D,this.releaseDataSource=new t.X(null),this.releaseData$=this.releaseDataSource.asObservable(),this.summaryservice.subscribeOnce(x=>{const j=this.cephReleaseNamePipe.transform(x.version);this.releaseDataSource.next(j)})}urlGenerator(C,D="master"){const j=`https://docs.ceph.com/en/${"master"===D?"latest":D}/`,H="https://ceph.io/";return{iscsi:`${j}mgr/dashboard/#enabling-iscsi-management`,prometheus:`${j}mgr/dashboard/#enabling-prometheus-alerting`,"nfs-ganesha":`${j}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`,"rgw-nfs":`${j}radosgw/nfs`,rgw:`${j}mgr/dashboard/#enabling-the-object-gateway-management-frontend`,dashboard:`${j}mgr/dashboard`,grafana:`${j}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`,orch:`${j}mgr/orchestrator`,pgs:`${H}pgcalc`,help:`${H}help/`,security:`${H}security/`,trademarks:`${H}legal-page/trademarks/`,"dashboard-landing-page-status":`${j}mgr/dashboard/#dashboard-landing-page-status`,"dashboard-landing-page-performance":`${j}mgr/dashboard/#dashboard-landing-page-performance`,"dashboard-landing-page-capacity":`${j}mgr/dashboard/#dashboard-landing-page-capacity`}[C]}subscribeOnce(C,D,x){return this.releaseData$.pipe((0,e.h)(j=>!!j),(0,s.U)(j=>this.urlGenerator(C,j)),(0,a.P)()).subscribe(D,x)}}return m.\u0275fac=function(C){return new(C||m)(u.LFG(l.J),u.LFG(h.t))},m.\u0275prov=u.Yz7({token:m,factory:m.\u0275fac,providedIn:"root"}),m})()},4222:(Ge,g,o)=>{"use strict";o.d(g,{T:()=>l});var t=o(88002),e=o(26504),s=o(74788),a=o(89154);let l=(()=>{class u{constructor(_){this.featureToggles=_}canActivate(_){return this.featureToggles.get().pipe((0,t.U)(m=>{if(!1===m[_.routeConfig.path])throw new e._2;return!0}))}canActivateChild(_){return this.canActivate(_.parent)}}return u.\u0275fac=function(_){return new(_||u)(s.LFG(a.l))},u.\u0275prov=s.Yz7({token:u,factory:u.\u0275fac,providedIn:"root"}),u})()},89154:(Ge,g,o)=>{"use strict";o.d(g,{l:()=>l});var t=o(74788),e=o(58497),s=o(55358);let l=(()=>{class u{constructor(_,m){this.http=_,this.timerService=m,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return u.\u0275fac=function(_){return new(_||u)(t.LFG(e.eN),t.LFG(s.f))},u.\u0275prov=t.Yz7({token:u,factory:u.\u0275fac,providedIn:"root"}),u})()},28211:(Ge,g,o)=>{"use strict";o.d(g,{H:()=>a});var t=o(23815),e=o.n(t),s=o(74788);let a=(()=>{class l{format_number(h,_,m,b=1){if(e().isString(h)&&(h=Number(h)),!e().isNumber(h))return"-";let C=h<1?0:Math.floor(Math.log(h)/Math.log(_));C=C>=m.length?m.length-1:C;let D=e().round(h/Math.pow(_,C),b).toString();return""===D?"-":(""!==m[C]&&(D=`${D} ${m[C]}`),D)}toBytes(h,_=null){const b=["b","k","m","g","t","p","e","z","y"],C=RegExp("^(\\d+(.\\d+)?) ?(["+b.join("")+"]?(b|ib|B/s)?)?$","i").exec(h);if(null===C)return _;let D=parseFloat(C[1]);return e().isString(C[3])&&(D*=Math.pow(1024,b.indexOf(C[3].toLowerCase()[0]))),Math.round(D)}toMilliseconds(h){const m=/^\s*(\d+)\s*(ms)?\s*$/i.exec(h);return null!==m?+m[1]:0}toIops(h){const m=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(h);return null!==m?+m[1]:0}}return l.\u0275fac=function(h){return new(h||l)},l.\u0275prov=s.Yz7({token:l,factory:l.\u0275fac,providedIn:"root"}),l})()},63285:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=o(74788),e=o(38549);let s=(()=>{class a{constructor(u){this.modal=u}show(u,h,_){const m=this.modal.open(u,_);return h&&Object.assign(m.componentInstance,h),m}dismissAll(){this.modal.dismissAll()}hasOpenModals(){return this.modal.hasOpenModals()}}return a.\u0275fac=function(u){return new(u||a)(t.LFG(e.FF))},a.\u0275prov=t.Yz7({token:a,factory:a.\u0275fac,providedIn:"root"}),a})()},97161:(Ge,g,o)=>{"use strict";o.d(g,{g:()=>C});var t=o(23815),e=o.n(t),s=o(26215),a=o(79765),l=o(18001),u=o(61355),h=o(74788),_=o(91376),m=o(68879),b=o(96102);let C=(()=>{class D{constructor(j,H,z){this.toastr=j,this.taskMessageService=H,this.cdDatePipe=z,this.hideToasties=!1,this.dataSource=new s.X([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new a.xQ,this.queued=[],this.KEY="cdNotifications";const U=localStorage.getItem(this.KEY);let M=[];e().isString(U)&&(M=JSON.parse(U,(I,J)=>e().isPlainObject(J)?e().assign(new u.e,J):J)),this.dataSource.next(M)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(j){const H=this.dataSource.getValue();H.splice(j,1),this.dataSource.next(H),localStorage.setItem(this.KEY,JSON.stringify(H))}save(j){const H=this.dataSource.getValue();for(H.push(j),H.sort((z,U)=>z.timestamp>U.timestamp?-1:1);H.length>10;)H.pop();this.dataSource.next(H),localStorage.setItem(this.KEY,JSON.stringify(H))}show(j,H,z,U,M){return window.setTimeout(()=>{let I;I=e().isFunction(j)?j():e().isObject(j)?j:new u.T(j,H,z,U,M),this.queueToShow(I)},10)}queueToShow(j){this.cancel(this.queuedTimeoutId),this.queued.find(H=>e().isEqual(H,j))||this.queued.push(j),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(j=>{const H=new u.e(j);H.isFinishedTask||this.save(H),this.showToasty(H)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(j=>{const H=j[0];return j.length>1&&(H.message="<ul>"+j.map(z=>`<li>${z.message}</li>`).join("")+"</ul>"),H})}queueShiftByTitle(){const j={};let H;for(;H=this.queued.shift();)j[H.title]||(j[H.title]=[]),j[H.title].push(H);return j}showToasty(j){this.hideToasties||this.toastr[["error","info","success"][j.type]]((j.message?j.message+"<br>":"")+this.renderTimeAndApplicationHtml(j),j.title,j.options)}renderTimeAndApplicationHtml(j){return`<small class="date">${this.cdDatePipe.transform(j.timestamp)}</small><i class="float-right custom-icon ${j.applicationClass}" title="${j.application}"></i>`}notifyTask(j,H=!0){const z=this.finishedTaskToNotification(j,H);return z.isFinishedTask=!0,this.show(z)}finishedTaskToNotification(j,H=!0){let z;return z=j.success&&H?new u.T(l.k.success,this.taskMessageService.getSuccessTitle(j)):new u.T(l.k.error,this.taskMessageService.getErrorTitle(j),this.taskMessageService.getErrorMessage(j)),z.isFinishedTask=!0,z}cancel(j){window.clearTimeout(j)}suspendToasties(j){this.hideToasties=j}toggleSidebar(j=!1){this.sidebarSubject.next(j)}}return D.\u0275fac=function(j){return new(j||D)(h.LFG(_._W),h.LFG(m.p),h.LFG(b.N))},D.\u0275prov=h.Yz7({token:D,factory:D.\u0275fac,providedIn:"root"}),D})()},33888:(Ge,g,o)=>{"use strict";o.d(g,{q:()=>h});var t=o(23815),e=o.n(t),s=o(88002),a=o(9837);class l{constructor(m){this.pwdPolicyEnabled=m.pwd_policy_enabled,this.pwdPolicyMinLength=m.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=m.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=m.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=m.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=m.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=m.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=m.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=m.pwd_policy_check_complexity_enabled}}var u=o(74788);let h=(()=>{class _{constructor(b){this.settingsService=b}getHelpText(){return this.settingsService.getStandardSettings().pipe((0,s.U)(b=>{const C=new l(b);let D=[];if(C.pwdPolicyEnabled){D.push("Required rules for passwords:");const x={pwdPolicyCheckLengthEnabled:"Must contain at least " + C.pwdPolicyMinLength + " characters",pwdPolicyCheckOldpwdEnabled:"Must not be the same as the previous one",pwdPolicyCheckUsernameEnabled:"Cannot contain the username",pwdPolicyCheckExclusionListEnabled:"Cannot contain any configured keyword",pwdPolicyCheckRepetitiveCharsEnabled:"Cannot contain any repetitive characters e.g. \"aaa\"",pwdPolicyCheckSequentialCharsEnabled:"Cannot contain any sequential characters e.g. \"abc\"",pwdPolicyCheckComplexityEnabled:"Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)"};D=D.concat(e().keys(x).filter(j=>e().get(C,j)).map(j=>"- "+e().get(x,j)))}return D.join("\n")}))}mapCreditsToCssClass(b){let C="very-strong";return b<10?C="too-weak":b<15?C="weak":b<20?C="ok":b<25&&(C="strong"),C}}return _.\u0275fac=function(b){return new(b||_)(u.LFG(a.g))},_.\u0275prov=u.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},34089:(Ge,g,o)=>{"use strict";o.d(g,{n:()=>s});var t=o(30633),e=o(74788);let s=(()=>{class a{constructor(){this.sections=[{heading:"Quality of Service",class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:"BPS Limit",description:"The desired limit of IO bytes per second.",type:t.r.bps},{name:"rbd_qos_iops_limit",displayName:"IOPS Limit",description:"The desired limit of IO operations per second.",type:t.r.iops},{name:"rbd_qos_read_bps_limit",displayName:"Read BPS Limit",description:"The desired limit of read bytes per second.",type:t.r.bps},{name:"rbd_qos_read_iops_limit",displayName:"Read IOPS Limit",description:"The desired limit of read operations per second.",type:t.r.iops},{name:"rbd_qos_write_bps_limit",displayName:"Write BPS Limit",description:"The desired limit of write bytes per second.",type:t.r.bps},{name:"rbd_qos_write_iops_limit",displayName:"Write IOPS Limit",description:"The desired limit of write operations per second.",type:t.r.iops},{name:"rbd_qos_bps_burst",displayName:"BPS Burst",description:"The desired burst limit of IO bytes.",type:t.r.bps},{name:"rbd_qos_iops_burst",displayName:"IOPS Burst",description:"The desired burst limit of IO operations.",type:t.r.iops},{name:"rbd_qos_read_bps_burst",displayName:"Read BPS Burst",description:"The desired burst limit of read bytes.",type:t.r.bps},{name:"rbd_qos_read_iops_burst",displayName:"Read IOPS Burst",description:"The desired burst limit of read operations.",type:t.r.iops},{name:"rbd_qos_write_bps_burst",displayName:"Write BPS Burst",description:"The desired burst limit of write bytes.",type:t.r.bps},{name:"rbd_qos_write_iops_burst",displayName:"Write IOPS Burst",description:"The desired burst limit of write operations.",type:t.r.iops}]}]}static getOptionsFromSections(u){return u.map(h=>h.options).reduce((h,_)=>h.concat(_))}filterConfigOptionsByName(u){return a.getOptionsFromSections(this.sections).filter(h=>h.name===u)}getOptionValueByName(u,h,_=""){const m=this.filterConfigOptionsByName(u);return 1===m.length?m.pop()[h]:_}getWritableSections(){return this.sections.map(u=>(u.options=u.options.filter(h=>!h.readOnly),u))}getOptionFields(){return a.getOptionsFromSections(this.sections)}getWritableOptionFields(){return a.getOptionsFromSections(this.getWritableSections())}getOptionByName(u){return this.filterConfigOptionsByName(u).pop()}getDisplayName(u){return this.getOptionValueByName(u,"displayName")}getDescription(u){return this.getOptionValueByName(u,"description")}}return a.\u0275fac=function(u){return new(u||a)},a.\u0275prov=e.Yz7({token:a,factory:a.\u0275fac,providedIn:"root"}),a})()},74255:(Ge,g,o)=>{"use strict";o.d(g,{J:()=>m});var t=o(23815),e=o.n(t),s=o(26215),a=o(45435),l=o(28049),u=o(74788),h=o(58497),_=o(55358);let m=(()=>{class b{constructor(D,x){this.http=D,this.timerService=x,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new s.X(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return D=>{this.summaryDataSource.next(D)}}subscribeOnce(D,x){return this.summaryData$.pipe((0,a.h)(j=>!!j),(0,l.P)()).subscribe(D,x)}subscribe(D,x){return this.summaryData$.pipe((0,a.h)(j=>!!j)).subscribe(D,x)}addRunningTask(D){const x=this.summaryDataSource.getValue();!x||(e().isArray(x.executing_tasks)?x.executing_tasks.find(H=>H.name===D.name&&e().isEqual(H.metadata,D.metadata))||x.executing_tasks.push(D):x.executing_tasks=[D],this.summaryDataSource.next(x))}}return b.\u0275fac=function(D){return new(D||b)(u.LFG(h.eN),u.LFG(_.f))},b.\u0275prov=u.Yz7({token:b,factory:b.\u0275fac,providedIn:"root"}),b})()},38047:(Ge,g,o)=>{"use strict";o.d(g,{j:()=>a});var t=o(74255),e=o(74788),s=o(68879);let a=(()=>{class l{constructor(h,_){this.taskMessageService=h,this.summaryService=_}init(h,_,m,b,C,D,x){this.getUpdate=h,this.preProcessing=_,this.setList=m,this.onFetchError=b,this.taskFilter=C,this.itemFilter=D,this.builders=x||{},this.summaryDataSubscription=this.summaryService.subscribe(j=>{this.summary=j,this.fetch()},this.onFetchError)}fetch(){this.getUpdate().subscribe(h=>{this.updateData(h,this.summary.executing_tasks.filter(this.taskFilter))},this.onFetchError)}updateData(h,_){const m=this.preProcessing?this.preProcessing(h):h;this.addMissing(m,_),m.forEach(b=>{const C=_.filter(D=>this.itemFilter(b,D));b.cdExecuting=this.getTaskAction(C)}),this.setList(m)}addMissing(h,_){const m=this.builders.default;_.forEach(b=>{const C=h.find(x=>this.itemFilter(x,b)),D=this.builders[b.name];!C&&(D||m)&&h.push(D?D(b.metadata):m(b.metadata))})}getTaskAction(h){if(0!==h.length)return h.map(_=>{const m=_.progress?` ${_.progress}%`:"";return this.taskMessageService.getRunningText(_)+"..."+m}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}return l.\u0275fac=function(h){return new(h||l)(e.LFG(s.p),e.LFG(t.J))},l.\u0275prov=e.Yz7({token:l,factory:l.\u0275fac}),l})()},71099:(Ge,g,o)=>{"use strict";o.d(g,{k:()=>l});var t=o(23815),e=o.n(t),s=o(74788);class a{constructor(h,_,m){this.name=h,this.metadata=_,this.onTaskFinished=m}}let l=(()=>{class u{constructor(){this.subscriptions=[]}init(_){return _.subscribe(m=>{const b=m.executing_tasks,C=m.finished_tasks,D=[];for(const x of this.subscriptions){const j=this._getTask(x,C),H=this._getTask(x,b);null!==j&&null===H&&x.onTaskFinished(j),null!==H&&D.push(x),this.subscriptions=D}})}subscribe(_,m,b){this.subscriptions.push(new a(_,m,b))}_getTask(_,m){for(const b of m)if(b.name===_.name&&e().isEqual(b.metadata,_.metadata))return b;return null}}return u.\u0275fac=function(_){return new(_||u)},u.\u0275prov=s.Yz7({token:u,factory:u.\u0275fac,providedIn:"root"}),u})()},68879:(Ge,g,o)=>{"use strict";o.d(g,{p:()=>u});var t=(()=>{return(h=t||(t={})).auth="Login",h.cephfs="CephFS",h.rbd="RBD",h.pool="Pool",h.osd="OSD",h.role="Role",h.user="User",t;var h})(),e=o(19358),s=o(74788);class a{constructor(_,m,b){this.running=_,this.failure=m,this.success=b}}class l{constructor(_,m,b){this.operation=_,this.involves=m,this.errors=b||(()=>({}))}failure(_){return "Failed to " + this.operation.failure + " " + this.involves(_) + ""}running(_){return`${this.operation.running} ${this.involves(_)}`}success(_){return`${this.operation.success} ${this.involves(_)}`}}let u=(()=>{class h{constructor(){this.defaultMessage=this.newTaskMessage(new a("Executing","execute","Executed"),m=>m&&(t[m.component]||m.component)||"unknown task",()=>({})),this.commonOperations={create:new a("Creating","create","Created"),update:new a("Updating","update","Updated"),delete:new a("Deleting","delete","Deleted"),add:new a("Adding","add","Added"),remove:new a("Removing","remove","Removed"),import:new a("Importing","import","Imported")},this.rbd={default:m=>"RBD '" + m.image_spec + "'",create:m=>{const b=new e.N(m.pool_name,m.namespace,m.image_name).toString();return "RBD '" + b + "'"},child:m=>{const b=new e.N(m.child_pool_name,m.child_namespace,m.child_image_name).toString();return "RBD '" + b + "'"},destination:m=>{const b=new e.N(m.dest_pool_name,m.dest_namespace,m.dest_image_name).toString();return "RBD '" + b + "'"},snapshot:m=>"RBD snapshot '" + m.image_spec + "@" + m.snapshot_name + "'"},this.rbd_mirroring={site_name:()=>"mirroring site name",bootstrap:()=>"bootstrap token",pool:m=>"mirror mode for pool '" + m.pool_name + "'",pool_peer:m=>"mirror peer for pool '" + m.pool_name + "'"},this.grafana={update_dashboards:()=>"all dashboards"},this.messages={"host/add":this.newTaskMessage(this.commonOperations.add,m=>this.host(m)),"host/remove":this.newTaskMessage(this.commonOperations.remove,m=>this.host(m)),"host/identify_device":this.newTaskMessage(new a("Identifying","identify","Identified"),m=>"device '" + m.device + "' on host '" + m.hostname + "'"),"osd/create":this.newTaskMessage(this.commonOperations.create,m=>"OSDs (DriveGroups: " + m.tracking_id + ")"),"osd/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.osd(m)),"pool/create":this.newTaskMessage(this.commonOperations.create,m=>this.pool(m),m=>({17:"Name is already used by " + this.pool(m) + "."})),"pool/edit":this.newTaskMessage(this.commonOperations.update,m=>this.pool(m),m=>({17:"Name is already used by " + this.pool(m) + "."})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.pool(m)),"ecp/create":this.newTaskMessage(this.commonOperations.create,m=>this.ecp(m),m=>({17:"Name is already used by " + this.ecp(m) + "."})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.ecp(m)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,m=>this.crushRule(m),m=>({17:"Name is already used by " + this.crushRule(m) + "."})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.crushRule(m)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,m=>({17:"Name is already used by " + this.rbd.create(m) + "."})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,m=>({17:"Name is already used by " + this.rbd.default(m) + "."})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,m=>({16:"" + this.rbd.default(m) + " is busy.",39:"" + this.rbd.default(m) + " contains snapshots."})),"rbd/clone":this.newTaskMessage(new a("Cloning","clone","Cloned"),this.rbd.child,m=>({17:"Name is already used by " + this.rbd.child(m) + ".",22:"Snapshot of " + this.rbd.child(m) + " must be protected."})),"rbd/copy":this.newTaskMessage(new a("Copying","copy","Copied"),this.rbd.destination,m=>({17:"Name is already used by " + this.rbd.destination(m) + "."})),"rbd/flatten":this.newTaskMessage(new a("Flattening","flatten","Flattened"),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,m=>({17:"Name is already used by " + this.rbd.snapshot(m) + "."})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,m=>({16:"Cannot unprotect " + this.rbd.snapshot(m) + " because it contains child images."})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,m=>({16:"Cannot delete " + this.rbd.snapshot(m) + " because it's protected."})),"rbd/snap/rollback":this.newTaskMessage(new a("Rolling back","rollback","Rolled back"),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new a("Moving","move","Moved"),m=>"image '" + m.image_spec + "' to trash",()=>({2:"Could not find image."})),"rbd/trash/restore":this.newTaskMessage(new a("Restoring","restore","Restored"),m=>"image '" + m.image_id_spec + "' into '" + m.new_image_name + "'",m=>({17:"Image name '" + m.new_image_name + "' is already in use."})),"rbd/trash/remove":this.newTaskMessage(new a("Deleting","delete","Deleted"),m=>"image '" + m.image_id_spec + "'"),"rbd/trash/purge":this.newTaskMessage(new a("Purging","purge","Purged"),m=>{let b="all pools";return m.pool_name&&(b=`'${m.pool_name}'`),"images from " + b + ""}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:"Cannot disable mirroring because it contains a peer."})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,m=>this.iscsiTarget(m)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,m=>this.iscsiTarget(m)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.iscsiTarget(m)),"nfs/create":this.newTaskMessage(this.commonOperations.create,m=>this.nfs(m)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,m=>this.nfs(m)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.nfs(m)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"service/create":this.newTaskMessage(this.commonOperations.create,m=>this.service(m)),"service/edit":this.newTaskMessage(this.commonOperations.update,m=>this.service(m)),"service/delete":this.newTaskMessage(this.commonOperations.delete,m=>this.service(m))}}newTaskMessage(m,b,C){return new l(m,b,C)}host(m){return "host '" + m.hostname + "'"}osd(m){return "OSD '" + m.svc_id + "'"}pool(m){return "pool '" + m.pool_name + "'"}ecp(m){return "erasure code profile '" + m.name + "'"}crushRule(m){return "crush rule '" + m.name + "'"}iscsiTarget(m){return "target '" + m.target_iqn + "'"}nfs(m){return "NFS '" + m.cluster_id + ":" + (m.export_id ? m.export_id : m.path) + "'"}service(m){return "Service '" + m.service_name + "'"}_getTaskTitle(m){return m.name&&m.name.startsWith("progress/")?this.newTaskMessage(new a(m.name.replace("progress/",""),"",m.name.replace("progress/","")),b=>""):this.messages[m.name]||this.defaultMessage}getSuccessTitle(m){return this._getTaskTitle(m).success(m.metadata)}getErrorMessage(m){return this._getTaskTitle(m).errors(m.metadata)[m.exception.code]||m.exception.detail}getErrorTitle(m){return this._getTaskTitle(m).failure(m.metadata)}getRunningTitle(m){return this._getTaskTitle(m).running(m.metadata)}getRunningText(m){return this._getTaskTitle(m).operation.running}}return h.\u0275fac=function(m){return new(m||h)},h.\u0275prov=s.Yz7({token:h,factory:h.\u0275fac,providedIn:"root"}),h})()},32337:(Ge,g,o)=>{"use strict";o.d(g,{P:()=>b});var t=o(18891),e=o(18001),s=o(61355),a=o(60737),l=o(97161),u=o(74255),h=o(71099),_=o(74788),m=o(68879);let b=(()=>{class C{constructor(x,j,H,z){this.notificationService=x,this.summaryService=j,this.taskMessageService=H,this.taskManagerService=z}wrapTaskAroundCall({task:x,call:j}){return new t.y(H=>{j.subscribe(z=>{202===z.status?this._handleExecutingTasks(x):(this.summaryService.refresh(),x.success=!0,this.notificationService.notifyTask(x))},z=>{x.success=!1,x.exception=z.error,H.error(z)},()=>{H.complete()})})}_handleExecutingTasks(x){const j=new s.T(e.k.info,this.taskMessageService.getRunningTitle(x));j.isFinishedTask=!0,this.notificationService.show(j);const H=new a.o(x.name,x.metadata);this.summaryService.addRunningTask(H),this.taskManagerService.subscribe(H.name,H.metadata,z=>{this.notificationService.notifyTask(z)})}}return C.\u0275fac=function(x){return new(x||C)(_.LFG(l.g),_.LFG(u.J),_.LFG(m.p),_.LFG(h.k))},C.\u0275prov=_.Yz7({token:C,factory:C.\u0275fac,providedIn:"root"}),C})()},55358:(Ge,g,o)=>{"use strict";o.d(g,{f:()=>x});var t=o(46797),e=o(80226);var l=o(59746),u=o(43190),h=o(74788),_=o(33637);class m{constructor(H){this.zone=H,this.scheduler=_.z}now(){return this.scheduler.now()}}let b=(()=>{class j extends m{constructor(z){super(z)}schedule(...z){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,z))}}return j.\u0275fac=function(z){return new(z||j)(h.LFG(h.R0b))},j.\u0275prov=h.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})(),C=(()=>{class j extends m{constructor(z){super(z)}schedule(...z){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,z))}}return j.\u0275fac=function(z){return new(z||j)(h.LFG(h.R0b))},j.\u0275prov=h.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})(),D=(()=>{class j{constructor(z,U){this.leave=z,this.enter=U}}return j.\u0275fac=function(z){return new(z||j)(h.LFG(b),h.LFG(C))},j.\u0275prov=h.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})(),x=(()=>{class j{constructor(z){this.ngZone=z,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(z,U=this.DEFAULT_REFRESH_INTERVAL,M=this.DEFAULT_DUE_TIME){return(0,t.H)(M,U,this.ngZone.leave).pipe((0,l.QV)(this.ngZone.enter),(0,u.w)(z),function(j,H,z){let U;return U=j&&"object"==typeof j?j:{bufferSize:j,windowTime:H,refCount:!1,scheduler:z},M=>M.lift(function({bufferSize:j=Number.POSITIVE_INFINITY,windowTime:H=Number.POSITIVE_INFINITY,refCount:z,scheduler:U}){let M,J,I=0,Y=!1,ie=!1;return function(fe){let ne;I++,!M||Y?(Y=!1,M=new e.t(j,H,U),ne=M.subscribe(this),J=fe.subscribe({next(he){M.next(he)},error(he){Y=!0,M.error(he)},complete(){ie=!0,J=void 0,M.complete()}})):ne=M.subscribe(this),this.add(()=>{I--,ne.unsubscribe(),J&&!ie&&z&&0===I&&(J.unsubscribe(),J=void 0,M=void 0)})}}(U))}({refCount:!0,bufferSize:1}))}}return j.\u0275fac=function(z){return new(z||j)(h.LFG(D))},j.\u0275prov=h.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})()},51847:(Ge,g,o)=>{"use strict";o.d(g,{F:()=>s});var t=o(12057),e=o(79512);class s{constructor(l){this.base=l}static concatURLSegments(l){return l.reduce(t.Ye.joinWithSlash)}static buildURL(l,...u){return s.concatURLSegments([...l?["/"]:[],...u])}getURL(l,u=!0,...h){return s.buildURL(u,this.base,l,...h)}getCreate(l=!0){return this.getURL(e.MQ.CREATE,l)}getCreateFrom(l,u=!0){return this.getURL(e.MQ.CREATE,u,l)}getDelete(l=!0){return this.getURL(e.MQ.DELETE,l)}getEdit(l,u=!0){return this.getURL(e.MQ.EDIT,u,l)}getUpdate(l,u=!0){return this.getURL(e.MQ.UPDATE,u,l)}getAdd(l=!0){return this.getURL(e.MQ.ADD,l)}getRemove(l=!0){return this.getURL(e.MQ.REMOVE,l)}getRecreate(l,u=!0){return this.getURL(e.MQ.RECREATE,u,l)}}},44466:(Ge,g,o)=>{"use strict";o.d(g,{m:()=>C});var t=o(12057),e=o(99475),s=o(15626),a=o(2149),l=o(35540),u=o(85953),h=o(45510),_=o(74937),m=o(28211),b=o(74788);let C=(()=>{class D{}return D.\u0275fac=function(j){return new(j||D)},D.\u0275mod=b.oAB({type:D}),D.\u0275inj=b.cJS({providers:[_.j,h.P,m.H,e.P],imports:[[t.ez,u.D,s.K,a.t,l.o],s.K,u.D,a.t,l.o]}),D})()},92340:(Ge,g,o)=>{"use strict";o.d(g,{N:()=>t});const t={default_lang:"en-US",production:!0,year:"2022"}},88665:(Ge,g,o)=>{"use strict";var t=o(91211),e=o(74788),s=o(12057),a=o(58497),l=o(56083);function u(){return"undefined"!=typeof window&&void 0!==window.document}function h(){return"undefined"!=typeof process&&"[object process]"==={}.toString.call(process)}function _(f){switch(f.length){case 0:return new l.ZN;case 1:return f[0];default:return new l.ZE(f)}}function m(f,y,n,d,w={},re={}){const Ze=[],Lt=[];let Gt=-1,On=null;if(d.forEach(fr=>{const hr=fr.offset,Jr=hr==Gt,$i=Jr&&On||{};Object.keys(fr).forEach(bo=>{let _o=bo,Yi=fr[bo];if("offset"!==bo)switch(_o=y.normalizePropertyName(_o,Ze),Yi){case l.k1:Yi=w[bo];break;case l.l3:Yi=re[bo];break;default:Yi=y.normalizeStyleValue(bo,_o,Yi,Ze)}$i[_o]=Yi}),Jr||Lt.push($i),On=$i,Gt=hr}),Ze.length){const fr="\n - ";throw new Error(`Unable to animate due to the following errors:${fr}${Ze.join(fr)}`)}return Lt}function b(f,y,n,d){switch(y){case"start":f.onStart(()=>d(n&&C(n,"start",f)));break;case"done":f.onDone(()=>d(n&&C(n,"done",f)));break;case"destroy":f.onDestroy(()=>d(n&&C(n,"destroy",f)))}}function C(f,y,n){const d=n.totalTime,re=D(f.element,f.triggerName,f.fromState,f.toState,y||f.phaseName,null==d?f.totalTime:d,!!n.disabled),Ze=f._data;return null!=Ze&&(re._data=Ze),re}function D(f,y,n,d,w="",re=0,Ze){return{element:f,triggerName:y,fromState:n,toState:d,phaseName:w,totalTime:re,disabled:!!Ze}}function x(f,y,n){let d;return f instanceof Map?(d=f.get(y),d||f.set(y,d=n)):(d=f[y],d||(d=f[y]=n)),d}function j(f){const y=f.indexOf(":");return[f.substring(1,y),f.substr(y+1)]}let H=(f,y)=>!1,U=(f,y)=>!1,I=(f,y,n)=>[];const Y=h();(Y||"undefined"!=typeof Element)&&(H=u()?(f,y)=>{for(;y&&y!==document.documentElement;){if(y===f)return!0;y=y.parentNode||y.host}return!1}:(f,y)=>f.contains(y),U=(()=>{if(Y||Element.prototype.matches)return(f,y)=>f.matches(y);{const f=Element.prototype,y=f.matchesSelector||f.mozMatchesSelector||f.msMatchesSelector||f.oMatchesSelector||f.webkitMatchesSelector;return y?(n,d)=>y.apply(n,[d]):U}})(),I=(f,y,n)=>{let d=[];if(n){const w=f.querySelectorAll(y);for(let re=0;re<w.length;re++)d.push(w[re])}else{const w=f.querySelector(y);w&&d.push(w)}return d});let oe=null,fe=!1;function ne(f){oe||(oe=("undefined"!=typeof document?document.body:null)||{},fe=!!oe.style&&"WebkitAppearance"in oe.style);let y=!0;return oe.style&&!function(f){return"ebkit"==f.substring(1,6)}(f)&&(y=f in oe.style,!y&&fe&&(y="Webkit"+f.charAt(0).toUpperCase()+f.substr(1)in oe.style)),y}const ce=U,Ae=H,Me=I;function Oe(f){const y={};return Object.keys(f).forEach(n=>{const d=n.replace(/([a-z])([A-Z])/g,"$1-$2");y[d]=f[n]}),y}let be=(()=>{class f{validateStyleProperty(n){return ne(n)}matchesElement(n,d){return ce(n,d)}containsElement(n,d){return Ae(n,d)}query(n,d,w){return Me(n,d,w)}computeStyle(n,d,w){return w||""}animate(n,d,w,re,Ze,Lt=[],Gt){return new l.ZN(w,re)}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})(),ue=(()=>{class f{}return f.NOOP=new be,f})();const je="ng-enter",Et="ng-leave",St="ng-trigger",At=".ng-trigger",Qe="ng-animating",It=".ng-animating";function ae(f){if("number"==typeof f)return f;const y=f.match(/^(-?[\.\d]+)(m?s)/);return!y||y.length<2?0:Ie(parseFloat(y[1]),y[2])}function Ie(f,y){switch(y){case"s":return 1e3*f;default:return f}}function dt(f,y,n){return f.hasOwnProperty("duration")?f:function(f,y,n){let w,re=0,Ze="";if("string"==typeof f){const Lt=f.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===Lt)return y.push(`The provided timing value "${f}" is invalid.`),{duration:0,delay:0,easing:""};w=Ie(parseFloat(Lt[1]),Lt[2]);const Gt=Lt[3];null!=Gt&&(re=Ie(parseFloat(Gt),Lt[4]));const On=Lt[5];On&&(Ze=On)}else w=f;if(!n){let Lt=!1,Gt=y.length;w<0&&(y.push("Duration values below 0 are not allowed for this animation step."),Lt=!0),re<0&&(y.push("Delay values below 0 are not allowed for this animation step."),Lt=!0),Lt&&y.splice(Gt,0,`The provided timing value "${f}" is invalid.`)}return{duration:w,delay:re,easing:Ze}}(f,y,n)}function zt(f,y={}){return Object.keys(f).forEach(n=>{y[n]=f[n]}),y}function ar(f,y,n={}){if(y)for(let d in f)n[d]=f[d];else zt(f,n);return n}function Ln(f,y,n){return n?y+":"+n+";":""}function Rn(f){let y="";for(let n=0;n<f.style.length;n++){const d=f.style.item(n);y+=Ln(0,d,f.style.getPropertyValue(d))}for(const n in f.style)f.style.hasOwnProperty(n)&&!n.startsWith("_")&&(y+=Ln(0,Sn(n),f.style[n]));f.setAttribute("style",y)}function er(f,y,n){f.style&&(Object.keys(y).forEach(d=>{const w=qn(d);n&&!n.hasOwnProperty(d)&&(n[d]=f.style[w]),f.style[w]=y[d]}),h()&&Rn(f))}function Mn(f,y){f.style&&(Object.keys(y).forEach(n=>{const d=qn(n);f.style[d]=""}),h()&&Rn(f))}function Ht(f){return Array.isArray(f)?1==f.length?f[0]:(0,l.vP)(f):f}const Yn=new RegExp("{{\\s*(.+?)\\s*}}","g");function Cn(f){let y=[];if("string"==typeof f){let n;for(;n=Yn.exec(f);)y.push(n[1]);Yn.lastIndex=0}return y}function Kt(f,y,n){const d=f.toString(),w=d.replace(Yn,(re,Ze)=>{let Lt=y[Ze];return y.hasOwnProperty(Ze)||(n.push(`Please provide a value for the animation param ${Ze}`),Lt=""),Lt.toString()});return w==d?f:w}function dn(f){const y=[];let n=f.next();for(;!n.done;)y.push(n.value),n=f.next();return y}const Kn=/-+([a-z0-9])/g;function qn(f){return f.replace(Kn,(...y)=>y[1].toUpperCase())}function Sn(f){return f.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function $n(f,y){return 0===f||0===y}function En(f,y,n){const d=Object.keys(n);if(d.length&&y.length){let re=y[0],Ze=[];if(d.forEach(Lt=>{re.hasOwnProperty(Lt)||Ze.push(Lt),re[Lt]=n[Lt]}),Ze.length)for(var w=1;w<y.length;w++){let Lt=y[w];Ze.forEach(function(Gt){Lt[Gt]=Dn(f,Gt)})}}return y}function Fn(f,y,n){switch(y.type){case 7:return f.visitTrigger(y,n);case 0:return f.visitState(y,n);case 1:return f.visitTransition(y,n);case 2:return f.visitSequence(y,n);case 3:return f.visitGroup(y,n);case 4:return f.visitAnimate(y,n);case 5:return f.visitKeyframes(y,n);case 6:return f.visitStyle(y,n);case 8:return f.visitReference(y,n);case 9:return f.visitAnimateChild(y,n);case 10:return f.visitAnimateRef(y,n);case 11:return f.visitQuery(y,n);case 12:return f.visitStagger(y,n);default:throw new Error(`Unable to resolve animation metadata node #${y.type}`)}}function Dn(f,y){return window.getComputedStyle(f)[y]}function jn(f,y){const n=[];return"string"==typeof f?f.split(/\s*,\s*/).forEach(d=>function(f,y,n){if(":"==f[0]){const Gt=function(f,y){switch(f){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(n,d)=>parseFloat(d)>parseFloat(n);case":decrement":return(n,d)=>parseFloat(d)<parseFloat(n);default:return y.push(`The transition alias value "${f}" is not supported`),"* => *"}}(f,n);if("function"==typeof Gt)return void y.push(Gt);f=Gt}const d=f.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==d||d.length<4)return n.push(`The provided transition expression "${f}" is not supported`),y;const w=d[1],re=d[2],Ze=d[3];y.push(yn(w,Ze));"<"==re[0]&&!("*"==w&&"*"==Ze)&&y.push(yn(Ze,w))}(d,n,y)):n.push(f),n}const mt=new Set(["true","1"]),Tt=new Set(["false","0"]);function yn(f,y){const n=mt.has(f)||Tt.has(f),d=mt.has(y)||Tt.has(y);return(w,re)=>{let Ze="*"==f||f==w,Lt="*"==y||y==re;return!Ze&&n&&"boolean"==typeof w&&(Ze=w?mt.has(f):Tt.has(f)),!Lt&&d&&"boolean"==typeof re&&(Lt=re?mt.has(y):Tt.has(y)),Ze&&Lt}}const jt=new RegExp("s*:selfs*,?","g");function hn(f,y,n){return new Ir(f).build(y,n)}class Ir{constructor(y){this._driver=y}build(y,n){const d=new Ue(n);return this._resetContextStyleTimingState(d),Fn(this,Ht(y),d)}_resetContextStyleTimingState(y){y.currentQuerySelector="",y.collectedStyles={},y.collectedStyles[""]={},y.currentTime=0}visitTrigger(y,n){let d=n.queryCount=0,w=n.depCount=0;const re=[],Ze=[];return"@"==y.name.charAt(0)&&n.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),y.definitions.forEach(Lt=>{if(this._resetContextStyleTimingState(n),0==Lt.type){const Gt=Lt,On=Gt.name;On.toString().split(/\s*,\s*/).forEach(fr=>{Gt.name=fr,re.push(this.visitState(Gt,n))}),Gt.name=On}else if(1==Lt.type){const Gt=this.visitTransition(Lt,n);d+=Gt.queryCount,w+=Gt.depCount,Ze.push(Gt)}else n.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:y.name,states:re,transitions:Ze,queryCount:d,depCount:w,options:null}}visitState(y,n){const d=this.visitStyle(y.styles,n),w=y.options&&y.options.params||null;if(d.containsDynamicStyles){const re=new Set,Ze=w||{};if(d.styles.forEach(Lt=>{if(at(Lt)){const Gt=Lt;Object.keys(Gt).forEach(On=>{Cn(Gt[On]).forEach(fr=>{Ze.hasOwnProperty(fr)||re.add(fr)})})}}),re.size){const Lt=dn(re.values());n.errors.push(`state("${y.name}", ...) must define default values for all the following style substitutions: ${Lt.join(", ")}`)}}return{type:0,name:y.name,style:d,options:w?{params:w}:null}}visitTransition(y,n){n.queryCount=0,n.depCount=0;const d=Fn(this,Ht(y.animation),n);return{type:1,matchers:jn(y.expr,n.errors),animation:d,queryCount:n.queryCount,depCount:n.depCount,options:Pt(y.options)}}visitSequence(y,n){return{type:2,steps:y.steps.map(d=>Fn(this,d,n)),options:Pt(y.options)}}visitGroup(y,n){const d=n.currentTime;let w=0;const re=y.steps.map(Ze=>{n.currentTime=d;const Lt=Fn(this,Ze,n);return w=Math.max(w,n.currentTime),Lt});return n.currentTime=w,{type:3,steps:re,options:Pt(y.options)}}visitAnimate(y,n){const d=function(f,y){let n=null;if(f.hasOwnProperty("duration"))n=f;else if("number"==typeof f)return Ut(dt(f,y).duration,0,"");const d=f;if(d.split(/\s+/).some(re=>"{"==re.charAt(0)&&"{"==re.charAt(1))){const re=Ut(0,0,"");return re.dynamic=!0,re.strValue=d,re}return n=n||dt(d,y),Ut(n.duration,n.delay,n.easing)}(y.timings,n.errors);n.currentAnimateTimings=d;let w,re=y.styles?y.styles:(0,l.oB)({});if(5==re.type)w=this.visitKeyframes(re,n);else{let Ze=y.styles,Lt=!1;if(!Ze){Lt=!0;const On={};d.easing&&(On.easing=d.easing),Ze=(0,l.oB)(On)}n.currentTime+=d.duration+d.delay;const Gt=this.visitStyle(Ze,n);Gt.isEmptyStep=Lt,w=Gt}return n.currentAnimateTimings=null,{type:4,timings:d,style:w,options:null}}visitStyle(y,n){const d=this._makeStyleAst(y,n);return this._validateStyleAst(d,n),d}_makeStyleAst(y,n){const d=[];Array.isArray(y.styles)?y.styles.forEach(Ze=>{"string"==typeof Ze?Ze==l.l3?d.push(Ze):n.errors.push(`The provided style string value ${Ze} is not allowed.`):d.push(Ze)}):d.push(y.styles);let w=!1,re=null;return d.forEach(Ze=>{if(at(Ze)){const Lt=Ze,Gt=Lt.easing;if(Gt&&(re=Gt,delete Lt.easing),!w)for(let On in Lt)if(Lt[On].toString().indexOf("{{")>=0){w=!0;break}}}),{type:6,styles:d,easing:re,offset:y.offset,containsDynamicStyles:w,options:null}}_validateStyleAst(y,n){const d=n.currentAnimateTimings;let w=n.currentTime,re=n.currentTime;d&&re>0&&(re-=d.duration+d.delay),y.styles.forEach(Ze=>{"string"!=typeof Ze&&Object.keys(Ze).forEach(Lt=>{if(!this._driver.validateStyleProperty(Lt))return void n.errors.push(`The provided animation property "${Lt}" is not a supported CSS property for animations`);const Gt=n.collectedStyles[n.currentQuerySelector],On=Gt[Lt];let fr=!0;On&&(re!=w&&re>=On.startTime&&w<=On.endTime&&(n.errors.push(`The CSS property "${Lt}" that exists between the times of "${On.startTime}ms" and "${On.endTime}ms" is also being animated in a parallel animation between the times of "${re}ms" and "${w}ms"`),fr=!1),re=On.startTime),fr&&(Gt[Lt]={startTime:re,endTime:w}),n.options&&function(f,y,n){const d=y.params||{},w=Cn(f);w.length&&w.forEach(re=>{d.hasOwnProperty(re)||n.push(`Unable to resolve the local animation param ${re} in the given list of values`)})}(Ze[Lt],n.options,n.errors)})})}visitKeyframes(y,n){const d={type:5,styles:[],options:null};if(!n.currentAnimateTimings)return n.errors.push("keyframes() must be placed inside of a call to animate()"),d;let re=0;const Ze=[];let Lt=!1,Gt=!1,On=0;const fr=y.steps.map(Xs=>{const ls=this._makeStyleAst(Xs,n);let js=null!=ls.offset?ls.offset:function(f){if("string"==typeof f)return null;let y=null;if(Array.isArray(f))f.forEach(n=>{if(at(n)&&n.hasOwnProperty("offset")){const d=n;y=parseFloat(d.offset),delete d.offset}});else if(at(f)&&f.hasOwnProperty("offset")){const n=f;y=parseFloat(n.offset),delete n.offset}return y}(ls.styles),ga=0;return null!=js&&(re++,ga=ls.offset=js),Gt=Gt||ga<0||ga>1,Lt=Lt||ga<On,On=ga,Ze.push(ga),ls});Gt&&n.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),Lt&&n.errors.push("Please ensure that all keyframe offsets are in order");const hr=y.steps.length;let Jr=0;re>0&&re<hr?n.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==re&&(Jr=1/(hr-1));const $i=hr-1,bo=n.currentTime,_o=n.currentAnimateTimings,Yi=_o.duration;return fr.forEach((Xs,ls)=>{const js=Jr>0?ls==$i?1:Jr*ls:Ze[ls],ga=js*Yi;n.currentTime=bo+_o.delay+ga,_o.duration=ga,this._validateStyleAst(Xs,n),Xs.offset=js,d.styles.push(Xs)}),d}visitReference(y,n){return{type:8,animation:Fn(this,Ht(y.animation),n),options:Pt(y.options)}}visitAnimateChild(y,n){return n.depCount++,{type:9,options:Pt(y.options)}}visitAnimateRef(y,n){return{type:10,animation:this.visitReference(y.animation,n),options:Pt(y.options)}}visitQuery(y,n){const d=n.currentQuerySelector,w=y.options||{};n.queryCount++,n.currentQuery=y;const[re,Ze]=function(f){const y=!!f.split(/\s*,\s*/).find(n=>":self"==n);return y&&(f=f.replace(jt,"")),[f=f.replace(/@\*/g,At).replace(/@\w+/g,n=>At+"-"+n.substr(1)).replace(/:animating/g,It),y]}(y.selector);n.currentQuerySelector=d.length?d+" "+re:re,x(n.collectedStyles,n.currentQuerySelector,{});const Lt=Fn(this,Ht(y.animation),n);return n.currentQuery=null,n.currentQuerySelector=d,{type:11,selector:re,limit:w.limit||0,optional:!!w.optional,includeSelf:Ze,animation:Lt,originalSelector:y.selector,options:Pt(y.options)}}visitStagger(y,n){n.currentQuery||n.errors.push("stagger() can only be used inside of query()");const d="full"===y.timings?{duration:0,delay:0,easing:"full"}:dt(y.timings,n.errors,!0);return{type:12,animation:Fn(this,Ht(y.animation),n),timings:d,options:null}}}class Ue{constructor(y){this.errors=y,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function at(f){return!Array.isArray(f)&&"object"==typeof f}function Pt(f){return f?(f=zt(f)).params&&(f.params=function(f){return f?zt(f):null}(f.params)):f={},f}function Ut(f,y,n){return{duration:f,delay:y,easing:n}}function ot(f,y,n,d,w,re,Ze=null,Lt=!1){return{type:1,element:f,keyframes:y,preStyleProps:n,postStyleProps:d,duration:w,delay:re,totalTime:w+re,easing:Ze,subTimeline:Lt}}class Nn{constructor(){this._map=new Map}consume(y){let n=this._map.get(y);return n?this._map.delete(y):n=[],n}append(y,n){let d=this._map.get(y);d||this._map.set(y,d=[]),d.push(...n)}has(y){return this._map.has(y)}clear(){this._map.clear()}}const Bn=new RegExp(":enter","g"),mr=new RegExp(":leave","g");function _r(f,y,n,d,w,re={},Ze={},Lt,Gt,On=[]){return(new Nr).buildKeyframes(f,y,n,d,w,re,Ze,Lt,Gt,On)}class Nr{buildKeyframes(y,n,d,w,re,Ze,Lt,Gt,On,fr=[]){On=On||new Nn;const hr=new Jn(y,n,On,w,re,fr,[]);hr.options=Gt,hr.currentTimeline.setStyles([Ze],null,hr.errors,Gt),Fn(this,d,hr);const Jr=hr.timelines.filter($i=>$i.containsAnimation());if(Jr.length&&Object.keys(Lt).length){const $i=Jr[Jr.length-1];$i.allowOnlyTimelineStyles()||$i.setStyles([Lt],null,hr.errors,Gt)}return Jr.length?Jr.map($i=>$i.buildKeyframes()):[ot(n,[],[],[],0,0,"",!1)]}visitTrigger(y,n){}visitState(y,n){}visitTransition(y,n){}visitAnimateChild(y,n){const d=n.subInstructions.consume(n.element);if(d){const w=n.createSubContext(y.options),re=n.currentTimeline.currentTime,Ze=this._visitSubInstructions(d,w,w.options);re!=Ze&&n.transformIntoNewTimeline(Ze)}n.previousNode=y}visitAnimateRef(y,n){const d=n.createSubContext(y.options);d.transformIntoNewTimeline(),this.visitReference(y.animation,d),n.transformIntoNewTimeline(d.currentTimeline.currentTime),n.previousNode=y}_visitSubInstructions(y,n,d){let re=n.currentTimeline.currentTime;const Ze=null!=d.duration?ae(d.duration):null,Lt=null!=d.delay?ae(d.delay):null;return 0!==Ze&&y.forEach(Gt=>{const On=n.appendInstructionToTimeline(Gt,Ze,Lt);re=Math.max(re,On.duration+On.delay)}),re}visitReference(y,n){n.updateOptions(y.options,!0),Fn(this,y.animation,n),n.previousNode=y}visitSequence(y,n){const d=n.subContextCount;let w=n;const re=y.options;if(re&&(re.params||re.delay)&&(w=n.createSubContext(re),w.transformIntoNewTimeline(),null!=re.delay)){6==w.previousNode.type&&(w.currentTimeline.snapshotCurrentStyles(),w.previousNode=br);const Ze=ae(re.delay);w.delayNextStep(Ze)}y.steps.length&&(y.steps.forEach(Ze=>Fn(this,Ze,w)),w.currentTimeline.applyStylesToKeyframe(),w.subContextCount>d&&w.transformIntoNewTimeline()),n.previousNode=y}visitGroup(y,n){const d=[];let w=n.currentTimeline.currentTime;const re=y.options&&y.options.delay?ae(y.options.delay):0;y.steps.forEach(Ze=>{const Lt=n.createSubContext(y.options);re&&Lt.delayNextStep(re),Fn(this,Ze,Lt),w=Math.max(w,Lt.currentTimeline.currentTime),d.push(Lt.currentTimeline)}),d.forEach(Ze=>n.currentTimeline.mergeTimelineCollectedStyles(Ze)),n.transformIntoNewTimeline(w),n.previousNode=y}_visitTiming(y,n){if(y.dynamic){const d=y.strValue;return dt(n.params?Kt(d,n.params,n.errors):d,n.errors)}return{duration:y.duration,delay:y.delay,easing:y.easing}}visitAnimate(y,n){const d=n.currentAnimateTimings=this._visitTiming(y.timings,n),w=n.currentTimeline;d.delay&&(n.incrementTime(d.delay),w.snapshotCurrentStyles());const re=y.style;5==re.type?this.visitKeyframes(re,n):(n.incrementTime(d.duration),this.visitStyle(re,n),w.applyStylesToKeyframe()),n.currentAnimateTimings=null,n.previousNode=y}visitStyle(y,n){const d=n.currentTimeline,w=n.currentAnimateTimings;!w&&d.getCurrentStyleProperties().length&&d.forwardFrame();const re=w&&w.easing||y.easing;y.isEmptyStep?d.applyEmptyStep(re):d.setStyles(y.styles,re,n.errors,n.options),n.previousNode=y}visitKeyframes(y,n){const d=n.currentAnimateTimings,w=n.currentTimeline.duration,re=d.duration,Lt=n.createSubContext().currentTimeline;Lt.easing=d.easing,y.styles.forEach(Gt=>{Lt.forwardTime((Gt.offset||0)*re),Lt.setStyles(Gt.styles,Gt.easing,n.errors,n.options),Lt.applyStylesToKeyframe()}),n.currentTimeline.mergeTimelineCollectedStyles(Lt),n.transformIntoNewTimeline(w+re),n.previousNode=y}visitQuery(y,n){const d=n.currentTimeline.currentTime,w=y.options||{},re=w.delay?ae(w.delay):0;re&&(6===n.previousNode.type||0==d&&n.currentTimeline.getCurrentStyleProperties().length)&&(n.currentTimeline.snapshotCurrentStyles(),n.previousNode=br);let Ze=d;const Lt=n.invokeQuery(y.selector,y.originalSelector,y.limit,y.includeSelf,!!w.optional,n.errors);n.currentQueryTotal=Lt.length;let Gt=null;Lt.forEach((On,fr)=>{n.currentQueryIndex=fr;const hr=n.createSubContext(y.options,On);re&&hr.delayNextStep(re),On===n.element&&(Gt=hr.currentTimeline),Fn(this,y.animation,hr),hr.currentTimeline.applyStylesToKeyframe(),Ze=Math.max(Ze,hr.currentTimeline.currentTime)}),n.currentQueryIndex=0,n.currentQueryTotal=0,n.transformIntoNewTimeline(Ze),Gt&&(n.currentTimeline.mergeTimelineCollectedStyles(Gt),n.currentTimeline.snapshotCurrentStyles()),n.previousNode=y}visitStagger(y,n){const d=n.parentContext,w=n.currentTimeline,re=y.timings,Ze=Math.abs(re.duration),Lt=Ze*(n.currentQueryTotal-1);let Gt=Ze*n.currentQueryIndex;switch(re.duration<0?"reverse":re.easing){case"reverse":Gt=Lt-Gt;break;case"full":Gt=d.currentStaggerTime}const fr=n.currentTimeline;Gt&&fr.delayNextStep(Gt);const hr=fr.currentTime;Fn(this,y.animation,n),n.previousNode=y,d.currentStaggerTime=w.currentTime-hr+(w.startTime-d.currentTimeline.startTime)}}const br={};class Jn{constructor(y,n,d,w,re,Ze,Lt,Gt){this._driver=y,this.element=n,this.subInstructions=d,this._enterClassName=w,this._leaveClassName=re,this.errors=Ze,this.timelines=Lt,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=br,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=Gt||new nr(this._driver,n,0),Lt.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(y,n){if(!y)return;const d=y;let w=this.options;null!=d.duration&&(w.duration=ae(d.duration)),null!=d.delay&&(w.delay=ae(d.delay));const re=d.params;if(re){let Ze=w.params;Ze||(Ze=this.options.params={}),Object.keys(re).forEach(Lt=>{(!n||!Ze.hasOwnProperty(Lt))&&(Ze[Lt]=Kt(re[Lt],Ze,this.errors))})}}_copyOptions(){const y={};if(this.options){const n=this.options.params;if(n){const d=y.params={};Object.keys(n).forEach(w=>{d[w]=n[w]})}}return y}createSubContext(y=null,n,d){const w=n||this.element,re=new Jn(this._driver,w,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(w,d||0));return re.previousNode=this.previousNode,re.currentAnimateTimings=this.currentAnimateTimings,re.options=this._copyOptions(),re.updateOptions(y),re.currentQueryIndex=this.currentQueryIndex,re.currentQueryTotal=this.currentQueryTotal,re.parentContext=this,this.subContextCount++,re}transformIntoNewTimeline(y){return this.previousNode=br,this.currentTimeline=this.currentTimeline.fork(this.element,y),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(y,n,d){const w={duration:null!=n?n:y.duration,delay:this.currentTimeline.currentTime+(null!=d?d:0)+y.delay,easing:""},re=new Mr(this._driver,y.element,y.keyframes,y.preStyleProps,y.postStyleProps,w,y.stretchStartingKeyframe);return this.timelines.push(re),w}incrementTime(y){this.currentTimeline.forwardTime(this.currentTimeline.duration+y)}delayNextStep(y){y>0&&this.currentTimeline.delayNextStep(y)}invokeQuery(y,n,d,w,re,Ze){let Lt=[];if(w&&Lt.push(this.element),y.length>0){y=(y=y.replace(Bn,"."+this._enterClassName)).replace(mr,"."+this._leaveClassName);let On=this._driver.query(this.element,y,1!=d);0!==d&&(On=d<0?On.slice(On.length+d,On.length):On.slice(0,d)),Lt.push(...On)}return!re&&0==Lt.length&&Ze.push(`\`query("${n}")\` returned zero elements. (Use \`query("${n}", { optional: true })\` if you wish to allow this.)`),Lt}}class nr{constructor(y,n,d,w){this._driver=y,this.element=n,this.startTime=d,this._elementTimelineStylesLookup=w,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(n),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(n,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(y){const n=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||n?(this.forwardTime(this.currentTime+y),n&&this.snapshotCurrentStyles()):this.startTime+=y}fork(y,n){return this.applyStylesToKeyframe(),new nr(this._driver,y,n||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(y){this.applyStylesToKeyframe(),this.duration=y,this._loadKeyframe()}_updateStyle(y,n){this._localTimelineStyles[y]=n,this._globalTimelineStyles[y]=n,this._styleSummary[y]={time:this.currentTime,value:n}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(y){y&&(this._previousKeyframe.easing=y),Object.keys(this._globalTimelineStyles).forEach(n=>{this._backFill[n]=this._globalTimelineStyles[n]||l.l3,this._currentKeyframe[n]=l.l3}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(y,n,d,w){n&&(this._previousKeyframe.easing=n);const re=w&&w.params||{},Ze=function(f,y){const n={};let d;return f.forEach(w=>{"*"===w?(d=d||Object.keys(y),d.forEach(re=>{n[re]=l.l3})):ar(w,!1,n)}),n}(y,this._globalTimelineStyles);Object.keys(Ze).forEach(Lt=>{const Gt=Kt(Ze[Lt],re,d);this._pendingStyles[Lt]=Gt,this._localTimelineStyles.hasOwnProperty(Lt)||(this._backFill[Lt]=this._globalTimelineStyles.hasOwnProperty(Lt)?this._globalTimelineStyles[Lt]:l.l3),this._updateStyle(Lt,Gt)})}applyStylesToKeyframe(){const y=this._pendingStyles,n=Object.keys(y);0!=n.length&&(this._pendingStyles={},n.forEach(d=>{this._currentKeyframe[d]=y[d]}),Object.keys(this._localTimelineStyles).forEach(d=>{this._currentKeyframe.hasOwnProperty(d)||(this._currentKeyframe[d]=this._localTimelineStyles[d])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(y=>{const n=this._localTimelineStyles[y];this._pendingStyles[y]=n,this._updateStyle(y,n)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const y=[];for(let n in this._currentKeyframe)y.push(n);return y}mergeTimelineCollectedStyles(y){Object.keys(y._styleSummary).forEach(n=>{const d=this._styleSummary[n],w=y._styleSummary[n];(!d||w.time>d.time)&&this._updateStyle(n,w.value)})}buildKeyframes(){this.applyStylesToKeyframe();const y=new Set,n=new Set,d=1===this._keyframes.size&&0===this.duration;let w=[];this._keyframes.forEach((Lt,Gt)=>{const On=ar(Lt,!0);Object.keys(On).forEach(fr=>{const hr=On[fr];hr==l.k1?y.add(fr):hr==l.l3&&n.add(fr)}),d||(On.offset=Gt/this.duration),w.push(On)});const re=y.size?dn(y.values()):[],Ze=n.size?dn(n.values()):[];if(d){const Lt=w[0],Gt=zt(Lt);Lt.offset=0,Gt.offset=1,w=[Lt,Gt]}return ot(this.element,w,re,Ze,this.duration,this.startTime,this.easing,!1)}}class Mr extends nr{constructor(y,n,d,w,re,Ze,Lt=!1){super(y,n,Ze.delay),this.keyframes=d,this.preStyleProps=w,this.postStyleProps=re,this._stretchStartingKeyframe=Lt,this.timings={duration:Ze.duration,delay:Ze.delay,easing:Ze.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let y=this.keyframes,{delay:n,duration:d,easing:w}=this.timings;if(this._stretchStartingKeyframe&&n){const re=[],Ze=d+n,Lt=n/Ze,Gt=ar(y[0],!1);Gt.offset=0,re.push(Gt);const On=ar(y[0],!1);On.offset=yi(Lt),re.push(On);const fr=y.length-1;for(let hr=1;hr<=fr;hr++){let Jr=ar(y[hr],!1);Jr.offset=yi((n+Jr.offset*d)/Ze),re.push(Jr)}d=Ze,n=0,w="",y=re}return ot(this.element,y,this.preStyleProps,this.postStyleProps,d,n,w,!0)}}function yi(f,y=3){const n=Math.pow(10,y-1);return Math.round(f*n)/n}class Oi{}class ei extends Oi{normalizePropertyName(y,n){return qn(y)}normalizeStyleValue(y,n,d,w){let re="";const Ze=d.toString().trim();if(se[n]&&0!==d&&"0"!==d)if("number"==typeof d)re="px";else{const Lt=d.match(/^[+-]?[\d\.]+([a-z]*)$/);Lt&&0==Lt[1].length&&w.push(`Please provide a CSS unit value for ${y}:${d}`)}return Ze+re}}const se=(()=>function(f){const y={};return f.forEach(n=>y[n]=!0),y}("width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(",")))();function Ke(f,y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr){return{type:0,element:f,triggerName:y,isRemovalTransition:w,fromState:n,fromStyles:re,toState:d,toStyles:Ze,timelines:Lt,queriedElements:Gt,preStyleProps:On,postStyleProps:fr,totalTime:hr,errors:Jr}}const Xe={};class Vt{constructor(y,n,d){this._triggerName=y,this.ast=n,this._stateStyles=d}match(y,n,d,w){return function(f,y,n,d,w){return f.some(re=>re(y,n,d,w))}(this.ast.matchers,y,n,d,w)}buildStyles(y,n,d){const w=this._stateStyles["*"],re=this._stateStyles[y],Ze=w?w.buildStyles(n,d):{};return re?re.buildStyles(n,d):Ze}build(y,n,d,w,re,Ze,Lt,Gt,On,fr){const hr=[],Jr=this.ast.options&&this.ast.options.params||Xe,bo=this.buildStyles(d,Lt&&Lt.params||Xe,hr),_o=Gt&&Gt.params||Xe,Yi=this.buildStyles(w,_o,hr),Xs=new Set,ls=new Map,js=new Map,ga="void"===w,wl={params:Object.assign(Object.assign({},Jr),_o)},wa=fr?[]:_r(y,n,this.ast.animation,re,Ze,bo,Yi,wl,On,hr);let Wl=0;if(wa.forEach(Ls=>{Wl=Math.max(Ls.duration+Ls.delay,Wl)}),hr.length)return Ke(n,this._triggerName,d,w,ga,bo,Yi,[],[],ls,js,Wl,hr);wa.forEach(Ls=>{const yu=Ls.element,wf=x(ls,yu,{});Ls.preStyleProps.forEach(Bu=>wf[Bu]=!0);const ju=x(js,yu,{});Ls.postStyleProps.forEach(Bu=>ju[Bu]=!0),yu!==n&&Xs.add(yu)});const zc=dn(Xs.values());return Ke(n,this._triggerName,d,w,ga,bo,Yi,wa,zc,ls,js,Wl)}}class rt{constructor(y,n,d){this.styles=y,this.defaultParams=n,this.normalizer=d}buildStyles(y,n){const d={},w=zt(this.defaultParams);return Object.keys(y).forEach(re=>{const Ze=y[re];null!=Ze&&(w[re]=Ze)}),this.styles.styles.forEach(re=>{if("string"!=typeof re){const Ze=re;Object.keys(Ze).forEach(Lt=>{let Gt=Ze[Lt];Gt.length>1&&(Gt=Kt(Gt,w,n));const On=this.normalizer.normalizePropertyName(Lt,n);Gt=this.normalizer.normalizeStyleValue(Lt,On,Gt,n),d[On]=Gt})}}),d}}class We{constructor(y,n,d){this.name=y,this.ast=n,this._normalizer=d,this.transitionFactories=[],this.states={},n.states.forEach(w=>{this.states[w.name]=new rt(w.style,w.options&&w.options.params||{},d)}),or(this.states,"true","1"),or(this.states,"false","0"),n.transitions.forEach(w=>{this.transitionFactories.push(new Vt(y,w,this.states))}),this.fallbackTransition=function(f,y,n){return new Vt(f,{type:1,animation:{type:2,steps:[],options:null},matchers:[(Ze,Lt)=>!0],options:null,queryCount:0,depCount:0},y)}(y,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(y,n,d,w){return this.transitionFactories.find(Ze=>Ze.match(y,n,d,w))||null}matchStyles(y,n,d){return this.fallbackTransition.buildStyles(y,n,d)}}function or(f,y,n){f.hasOwnProperty(y)?f.hasOwnProperty(n)||(f[n]=f[y]):f.hasOwnProperty(n)&&(f[y]=f[n])}const Zn=new Nn;class Vr{constructor(y,n,d){this.bodyNode=y,this._driver=n,this._normalizer=d,this._animations={},this._playersById={},this.players=[]}register(y,n){const d=[],w=hn(this._driver,n,d);if(d.length)throw new Error(`Unable to build the animation due to the following errors: ${d.join("\n")}`);this._animations[y]=w}_buildPlayer(y,n,d){const w=y.element,re=m(0,this._normalizer,0,y.keyframes,n,d);return this._driver.animate(w,re,y.duration,y.delay,y.easing,[],!0)}create(y,n,d={}){const w=[],re=this._animations[y];let Ze;const Lt=new Map;if(re?(Ze=_r(this._driver,n,re,je,Et,{},{},d,Zn,w),Ze.forEach(fr=>{const hr=x(Lt,fr.element,{});fr.postStyleProps.forEach(Jr=>hr[Jr]=null)})):(w.push("The requested animation doesn't exist or has already been destroyed"),Ze=[]),w.length)throw new Error(`Unable to create the animation due to the following errors: ${w.join("\n")}`);Lt.forEach((fr,hr)=>{Object.keys(fr).forEach(Jr=>{fr[Jr]=this._driver.computeStyle(hr,Jr,l.l3)})});const On=_(Ze.map(fr=>{const hr=Lt.get(fr.element);return this._buildPlayer(fr,{},hr)}));return this._playersById[y]=On,On.onDestroy(()=>this.destroy(y)),this.players.push(On),On}destroy(y){const n=this._getPlayer(y);n.destroy(),delete this._playersById[y];const d=this.players.indexOf(n);d>=0&&this.players.splice(d,1)}_getPlayer(y){const n=this._playersById[y];if(!n)throw new Error(`Unable to find the timeline player referenced by ${y}`);return n}listen(y,n,d,w){const re=D(n,"","","");return b(this._getPlayer(y),d,re,w),()=>{}}command(y,n,d,w){if("register"==d)return void this.register(y,w[0]);if("create"==d)return void this.create(y,n,w[0]||{});const re=this._getPlayer(y);switch(d){case"play":re.play();break;case"pause":re.pause();break;case"reset":re.reset();break;case"restart":re.restart();break;case"finish":re.finish();break;case"init":re.init();break;case"setPosition":re.setPosition(parseFloat(w[0]));break;case"destroy":this.destroy(y)}}}const Cr="ng-animate-queued",Dr="ng-animate-disabled",Qr=".ng-animate-disabled",Ei=[],wi={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},go={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Fi="__ng_removed";class no{constructor(y,n=""){this.namespaceId=n;const d=y&&y.hasOwnProperty("value");if(this.value=null!=(f=d?y.value:y)?f:null,d){const re=zt(y);delete re.value,this.options=re}else this.options={};var f;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(y){const n=y.params;if(n){const d=this.options.params;Object.keys(n).forEach(w=>{null==d[w]&&(d[w]=n[w])})}}}const Ji="void",qi=new no(Ji);class to{constructor(y,n,d){this.id=y,this.hostElement=n,this._engine=d,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+y,st(n,this._hostClassName)}listen(y,n,d,w){if(!this._triggers.hasOwnProperty(n))throw new Error(`Unable to listen on the animation trigger event "${d}" because the animation trigger "${n}" doesn't exist!`);if(null==d||0==d.length)throw new Error(`Unable to listen on the animation trigger "${n}" because the provided event is undefined!`);if("start"!=(f=d)&&"done"!=f)throw new Error(`The provided animation trigger event "${d}" for the animation trigger "${n}" is not supported!`);var f;const re=x(this._elementListeners,y,[]),Ze={name:n,phase:d,callback:w};re.push(Ze);const Lt=x(this._engine.statesByElement,y,{});return Lt.hasOwnProperty(n)||(st(y,St),st(y,St+"-"+n),Lt[n]=qi),()=>{this._engine.afterFlush(()=>{const Gt=re.indexOf(Ze);Gt>=0&&re.splice(Gt,1),this._triggers[n]||delete Lt[n]})}}register(y,n){return!this._triggers[y]&&(this._triggers[y]=n,!0)}_getTrigger(y){const n=this._triggers[y];if(!n)throw new Error(`The provided animation trigger "${y}" has not been registered!`);return n}trigger(y,n,d,w=!0){const re=this._getTrigger(n),Ze=new Go(this.id,n,y);let Lt=this._engine.statesByElement.get(y);Lt||(st(y,St),st(y,St+"-"+n),this._engine.statesByElement.set(y,Lt={}));let Gt=Lt[n];const On=new no(d,this.id);if(!(d&&d.hasOwnProperty("value"))&&Gt&&On.absorbOptions(Gt.options),Lt[n]=On,Gt||(Gt=qi),On.value!==Ji&&Gt.value===On.value){if(!function(f,y){const n=Object.keys(f),d=Object.keys(y);if(n.length!=d.length)return!1;for(let w=0;w<n.length;w++){const re=n[w];if(!y.hasOwnProperty(re)||f[re]!==y[re])return!1}return!0}(Gt.params,On.params)){const _o=[],Yi=re.matchStyles(Gt.value,Gt.params,_o),Xs=re.matchStyles(On.value,On.params,_o);_o.length?this._engine.reportError(_o):this._engine.afterFlush(()=>{Mn(y,Yi),er(y,Xs)})}return}const Jr=x(this._engine.playersByElement,y,[]);Jr.forEach(_o=>{_o.namespaceId==this.id&&_o.triggerName==n&&_o.queued&&_o.destroy()});let $i=re.matchTransition(Gt.value,On.value,y,On.params),bo=!1;if(!$i){if(!w)return;$i=re.fallbackTransition,bo=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:y,triggerName:n,transition:$i,fromState:Gt,toState:On,player:Ze,isFallbackTransition:bo}),bo||(st(y,Cr),Ze.onStart(()=>{pn(y,Cr)})),Ze.onDone(()=>{let _o=this.players.indexOf(Ze);_o>=0&&this.players.splice(_o,1);const Yi=this._engine.playersByElement.get(y);if(Yi){let Xs=Yi.indexOf(Ze);Xs>=0&&Yi.splice(Xs,1)}}),this.players.push(Ze),Jr.push(Ze),Ze}deregister(y){delete this._triggers[y],this._engine.statesByElement.forEach((n,d)=>{delete n[y]}),this._elementListeners.forEach((n,d)=>{this._elementListeners.set(d,n.filter(w=>w.name!=y))})}clearElementCache(y){this._engine.statesByElement.delete(y),this._elementListeners.delete(y);const n=this._engine.playersByElement.get(y);n&&(n.forEach(d=>d.destroy()),this._engine.playersByElement.delete(y))}_signalRemovalForInnerTriggers(y,n){const d=this._engine.driver.query(y,At,!0);d.forEach(w=>{if(w[Fi])return;const re=this._engine.fetchNamespacesByElement(w);re.size?re.forEach(Ze=>Ze.triggerLeaveAnimation(w,n,!1,!0)):this.clearElementCache(w)}),this._engine.afterFlushAnimationsDone(()=>d.forEach(w=>this.clearElementCache(w)))}triggerLeaveAnimation(y,n,d,w){const re=this._engine.statesByElement.get(y);if(re){const Ze=[];if(Object.keys(re).forEach(Lt=>{if(this._triggers[Lt]){const Gt=this.trigger(y,Lt,Ji,w);Gt&&Ze.push(Gt)}}),Ze.length)return this._engine.markElementAsRemoved(this.id,y,!0,n),d&&_(Ze).onDone(()=>this._engine.processLeaveNode(y)),!0}return!1}prepareLeaveAnimationListeners(y){const n=this._elementListeners.get(y),d=this._engine.statesByElement.get(y);if(n&&d){const w=new Set;n.forEach(re=>{const Ze=re.name;if(w.has(Ze))return;w.add(Ze);const Gt=this._triggers[Ze].fallbackTransition,On=d[Ze]||qi,fr=new no(Ji),hr=new Go(this.id,Ze,y);this._engine.totalQueuedPlayers++,this._queue.push({element:y,triggerName:Ze,transition:Gt,fromState:On,toState:fr,player:hr,isFallbackTransition:!0})})}}removeNode(y,n){const d=this._engine;if(y.childElementCount&&this._signalRemovalForInnerTriggers(y,n),this.triggerLeaveAnimation(y,n,!0))return;let w=!1;if(d.totalAnimations){const re=d.players.length?d.playersByQueriedElement.get(y):[];if(re&&re.length)w=!0;else{let Ze=y;for(;Ze=Ze.parentNode;)if(d.statesByElement.get(Ze)){w=!0;break}}}if(this.prepareLeaveAnimationListeners(y),w)d.markElementAsRemoved(this.id,y,!1,n);else{const re=y[Fi];(!re||re===wi)&&(d.afterFlush(()=>this.clearElementCache(y)),d.destroyInnerAnimations(y),d._onRemovalComplete(y,n))}}insertNode(y,n){st(y,this._hostClassName)}drainQueuedTransitions(y){const n=[];return this._queue.forEach(d=>{const w=d.player;if(w.destroyed)return;const re=d.element,Ze=this._elementListeners.get(re);Ze&&Ze.forEach(Lt=>{if(Lt.name==d.triggerName){const Gt=D(re,d.triggerName,d.fromState.value,d.toState.value);Gt._data=y,b(d.player,Lt.phase,Gt,Lt.callback)}}),w.markedForDestroy?this._engine.afterFlush(()=>{w.destroy()}):n.push(d)}),this._queue=[],n.sort((d,w)=>{const re=d.transition.ast.depCount,Ze=w.transition.ast.depCount;return 0==re||0==Ze?re-Ze:this._engine.driver.containsElement(d.element,w.element)?1:-1})}destroy(y){this.players.forEach(n=>n.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,y)}elementContainsData(y){let n=!1;return this._elementListeners.has(y)&&(n=!0),n=!!this._queue.find(d=>d.element===y)||n,n}}class zi{constructor(y,n,d){this.bodyNode=y,this.driver=n,this._normalizer=d,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(w,re)=>{}}_onRemovalComplete(y,n){this.onRemovalComplete(y,n)}get queuedPlayers(){const y=[];return this._namespaceList.forEach(n=>{n.players.forEach(d=>{d.queued&&y.push(d)})}),y}createNamespace(y,n){const d=new to(y,n,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,n)?this._balanceNamespaceList(d,n):(this.newHostElements.set(n,d),this.collectEnterElement(n)),this._namespaceLookup[y]=d}_balanceNamespaceList(y,n){const d=this._namespaceList.length-1;if(d>=0){let w=!1;for(let re=d;re>=0;re--)if(this.driver.containsElement(this._namespaceList[re].hostElement,n)){this._namespaceList.splice(re+1,0,y),w=!0;break}w||this._namespaceList.splice(0,0,y)}else this._namespaceList.push(y);return this.namespacesByHostElement.set(n,y),y}register(y,n){let d=this._namespaceLookup[y];return d||(d=this.createNamespace(y,n)),d}registerTrigger(y,n,d){let w=this._namespaceLookup[y];w&&w.register(n,d)&&this.totalAnimations++}destroy(y,n){if(!y)return;const d=this._fetchNamespace(y);this.afterFlush(()=>{this.namespacesByHostElement.delete(d.hostElement),delete this._namespaceLookup[y];const w=this._namespaceList.indexOf(d);w>=0&&this._namespaceList.splice(w,1)}),this.afterFlushAnimationsDone(()=>d.destroy(n))}_fetchNamespace(y){return this._namespaceLookup[y]}fetchNamespacesByElement(y){const n=new Set,d=this.statesByElement.get(y);if(d){const w=Object.keys(d);for(let re=0;re<w.length;re++){const Ze=d[w[re]].namespaceId;if(Ze){const Lt=this._fetchNamespace(Ze);Lt&&n.add(Lt)}}}return n}trigger(y,n,d,w){if(Jo(n)){const re=this._fetchNamespace(y);if(re)return re.trigger(n,d,w),!0}return!1}insertNode(y,n,d,w){if(!Jo(n))return;const re=n[Fi];if(re&&re.setForRemoval){re.setForRemoval=!1,re.setForMove=!0;const Ze=this.collectedLeaveElements.indexOf(n);Ze>=0&&this.collectedLeaveElements.splice(Ze,1)}if(y){const Ze=this._fetchNamespace(y);Ze&&Ze.insertNode(n,d)}w&&this.collectEnterElement(n)}collectEnterElement(y){this.collectedEnterElements.push(y)}markElementAsDisabled(y,n){n?this.disabledNodes.has(y)||(this.disabledNodes.add(y),st(y,Dr)):this.disabledNodes.has(y)&&(this.disabledNodes.delete(y),pn(y,Dr))}removeNode(y,n,d,w){if(Jo(n)){const re=y?this._fetchNamespace(y):null;if(re?re.removeNode(n,w):this.markElementAsRemoved(y,n,!1,w),d){const Ze=this.namespacesByHostElement.get(n);Ze&&Ze.id!==y&&Ze.removeNode(n,w)}}else this._onRemovalComplete(n,w)}markElementAsRemoved(y,n,d,w){this.collectedLeaveElements.push(n),n[Fi]={namespaceId:y,setForRemoval:w,hasAnimation:d,removedBeforeQueried:!1}}listen(y,n,d,w,re){return Jo(n)?this._fetchNamespace(y).listen(n,d,w,re):()=>{}}_buildInstruction(y,n,d,w,re){return y.transition.build(this.driver,y.element,y.fromState.value,y.toState.value,d,w,y.fromState.options,y.toState.options,n,re)}destroyInnerAnimations(y){let n=this.driver.query(y,At,!0);n.forEach(d=>this.destroyActiveAnimationsForElement(d)),0!=this.playersByQueriedElement.size&&(n=this.driver.query(y,It,!0),n.forEach(d=>this.finishActiveQueriedAnimationOnElement(d)))}destroyActiveAnimationsForElement(y){const n=this.playersByElement.get(y);n&&n.forEach(d=>{d.queued?d.markedForDestroy=!0:d.destroy()})}finishActiveQueriedAnimationOnElement(y){const n=this.playersByQueriedElement.get(y);n&&n.forEach(d=>d.finish())}whenRenderingDone(){return new Promise(y=>{if(this.players.length)return _(this.players).onDone(()=>y());y()})}processLeaveNode(y){const n=y[Fi];if(n&&n.setForRemoval){if(y[Fi]=wi,n.namespaceId){this.destroyInnerAnimations(y);const d=this._fetchNamespace(n.namespaceId);d&&d.clearElementCache(y)}this._onRemovalComplete(y,n.setForRemoval)}this.driver.matchesElement(y,Qr)&&this.markElementAsDisabled(y,!1),this.driver.query(y,Qr,!0).forEach(d=>{this.markElementAsDisabled(d,!1)})}flush(y=-1){let n=[];if(this.newHostElements.size&&(this.newHostElements.forEach((d,w)=>this._balanceNamespaceList(d,w)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let d=0;d<this.collectedEnterElements.length;d++)st(this.collectedEnterElements[d],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const d=[];try{n=this._flushAnimations(d,y)}finally{for(let w=0;w<d.length;w++)d[w]()}}else for(let d=0;d<this.collectedLeaveElements.length;d++)this.processLeaveNode(this.collectedLeaveElements[d]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(d=>d()),this._flushFns=[],this._whenQuietFns.length){const d=this._whenQuietFns;this._whenQuietFns=[],n.length?_(n).onDone(()=>{d.forEach(w=>w())}):d.forEach(w=>w())}}reportError(y){throw new Error(`Unable to process animations due to the following failed trigger transitions\n ${y.join("\n")}`)}_flushAnimations(y,n){const d=new Nn,w=[],re=new Map,Ze=[],Lt=new Map,Gt=new Map,On=new Map,fr=new Set;this.disabledNodes.forEach(as=>{fr.add(as);const Cs=this.driver.query(as,".ng-animate-queued",!0);for(let Bs=0;Bs<Cs.length;Bs++)fr.add(Cs[Bs])});const hr=this.bodyNode,Jr=Array.from(this.statesByElement.keys()),$i=zo(Jr,this.collectedEnterElements),bo=new Map;let _o=0;$i.forEach((as,Cs)=>{const Bs=je+_o++;bo.set(Cs,Bs),as.forEach(Da=>st(Da,Bs))});const Yi=[],Xs=new Set,ls=new Set;for(let as=0;as<this.collectedLeaveElements.length;as++){const Cs=this.collectedLeaveElements[as],Bs=Cs[Fi];Bs&&Bs.setForRemoval&&(Yi.push(Cs),Xs.add(Cs),Bs.hasAnimation?this.driver.query(Cs,".ng-star-inserted",!0).forEach(Da=>Xs.add(Da)):ls.add(Cs))}const js=new Map,ga=zo(Jr,Array.from(Xs));ga.forEach((as,Cs)=>{const Bs=Et+_o++;js.set(Cs,Bs),as.forEach(Da=>st(Da,Bs))}),y.push(()=>{$i.forEach((as,Cs)=>{const Bs=bo.get(Cs);as.forEach(Da=>pn(Da,Bs))}),ga.forEach((as,Cs)=>{const Bs=js.get(Cs);as.forEach(Da=>pn(Da,Bs))}),Yi.forEach(as=>{this.processLeaveNode(as)})});const wl=[],wa=[];for(let as=this._namespaceList.length-1;as>=0;as--)this._namespaceList[as].drainQueuedTransitions(n).forEach(Bs=>{const Da=Bs.player,sc=Bs.element;if(wl.push(Da),this.collectedEnterElements.length){const pu=sc[Fi];if(pu&&pu.setForMove)return void Da.destroy()}const fu=!hr||!this.driver.containsElement(hr,sc),Pc=js.get(sc),Wc=bo.get(sc),Pl=this._buildInstruction(Bs,d,Wc,Pc,fu);if(Pl.errors&&Pl.errors.length)wa.push(Pl);else{if(fu)return Da.onStart(()=>Mn(sc,Pl.fromStyles)),Da.onDestroy(()=>er(sc,Pl.toStyles)),void w.push(Da);if(Bs.isFallbackTransition)return Da.onStart(()=>Mn(sc,Pl.fromStyles)),Da.onDestroy(()=>er(sc,Pl.toStyles)),void w.push(Da);Pl.timelines.forEach(pu=>pu.stretchStartingKeyframe=!0),d.append(sc,Pl.timelines),Ze.push({instruction:Pl,player:Da,element:sc}),Pl.queriedElements.forEach(pu=>x(Lt,pu,[]).push(Da)),Pl.preStyleProps.forEach((pu,Cd)=>{const Ld=Object.keys(pu);if(Ld.length){let Yu=Gt.get(Cd);Yu||Gt.set(Cd,Yu=new Set),Ld.forEach(Ys=>Yu.add(Ys))}}),Pl.postStyleProps.forEach((pu,Cd)=>{const Ld=Object.keys(pu);let Yu=On.get(Cd);Yu||On.set(Cd,Yu=new Set),Ld.forEach(Ys=>Yu.add(Ys))})}});if(wa.length){const as=[];wa.forEach(Cs=>{as.push(`@${Cs.triggerName} has failed due to:\n`),Cs.errors.forEach(Bs=>as.push(`- ${Bs}\n`))}),wl.forEach(Cs=>Cs.destroy()),this.reportError(as)}const Wl=new Map,zc=new Map;Ze.forEach(as=>{const Cs=as.element;d.has(Cs)&&(zc.set(Cs,Cs),this._beforeAnimationBuild(as.player.namespaceId,as.instruction,Wl))}),w.forEach(as=>{const Cs=as.element;this._getPreviousPlayers(Cs,!1,as.namespaceId,as.triggerName,null).forEach(Da=>{x(Wl,Cs,[]).push(Da),Da.destroy()})});const Ls=Yi.filter(as=>$r(as,Gt,On)),yu=new Map;ds(yu,this.driver,ls,On,l.l3).forEach(as=>{$r(as,Gt,On)&&Ls.push(as)});const ju=new Map;$i.forEach((as,Cs)=>{ds(ju,this.driver,new Set(as),Gt,l.k1)}),Ls.forEach(as=>{const Cs=yu.get(as),Bs=ju.get(as);yu.set(as,Object.assign(Object.assign({},Cs),Bs))});const Bu=[],Df=[],xf={};Ze.forEach(as=>{const{element:Cs,player:Bs,instruction:Da}=as;if(d.has(Cs)){if(fr.has(Cs))return Bs.onDestroy(()=>er(Cs,Da.toStyles)),Bs.disabled=!0,Bs.overrideTotalTime(Da.totalTime),void w.push(Bs);let sc=xf;if(zc.size>1){let Pc=Cs;const Wc=[];for(;Pc=Pc.parentNode;){const Pl=zc.get(Pc);if(Pl){sc=Pl;break}Wc.push(Pc)}Wc.forEach(Pl=>zc.set(Pl,sc))}const fu=this._buildAnimation(Bs.namespaceId,Da,Wl,re,ju,yu);if(Bs.setRealPlayer(fu),sc===xf)Bu.push(Bs);else{const Pc=this.playersByElement.get(sc);Pc&&Pc.length&&(Bs.parentPlayer=_(Pc)),w.push(Bs)}}else Mn(Cs,Da.fromStyles),Bs.onDestroy(()=>er(Cs,Da.toStyles)),Df.push(Bs),fr.has(Cs)&&w.push(Bs)}),Df.forEach(as=>{const Cs=re.get(as.element);if(Cs&&Cs.length){const Bs=_(Cs);as.setRealPlayer(Bs)}}),w.forEach(as=>{as.parentPlayer?as.syncPlayerEvents(as.parentPlayer):as.destroy()});for(let as=0;as<Yi.length;as++){const Cs=Yi[as],Bs=Cs[Fi];if(pn(Cs,Et),Bs&&Bs.hasAnimation)continue;let Da=[];if(Lt.size){let fu=Lt.get(Cs);fu&&fu.length&&Da.push(...fu);let Pc=this.driver.query(Cs,It,!0);for(let Wc=0;Wc<Pc.length;Wc++){let Pl=Lt.get(Pc[Wc]);Pl&&Pl.length&&Da.push(...Pl)}}const sc=Da.filter(fu=>!fu.destroyed);sc.length?ee(this,Cs,sc):this.processLeaveNode(Cs)}return Yi.length=0,Bu.forEach(as=>{this.players.push(as),as.onDone(()=>{as.destroy();const Cs=this.players.indexOf(as);this.players.splice(Cs,1)}),as.play()}),Bu}elementContainsData(y,n){let d=!1;const w=n[Fi];return w&&w.setForRemoval&&(d=!0),this.playersByElement.has(n)&&(d=!0),this.playersByQueriedElement.has(n)&&(d=!0),this.statesByElement.has(n)&&(d=!0),this._fetchNamespace(y).elementContainsData(n)||d}afterFlush(y){this._flushFns.push(y)}afterFlushAnimationsDone(y){this._whenQuietFns.push(y)}_getPreviousPlayers(y,n,d,w,re){let Ze=[];if(n){const Lt=this.playersByQueriedElement.get(y);Lt&&(Ze=Lt)}else{const Lt=this.playersByElement.get(y);if(Lt){const Gt=!re||re==Ji;Lt.forEach(On=>{On.queued||!Gt&&On.triggerName!=w||Ze.push(On)})}}return(d||w)&&(Ze=Ze.filter(Lt=>!(d&&d!=Lt.namespaceId||w&&w!=Lt.triggerName))),Ze}_beforeAnimationBuild(y,n,d){const re=n.element,Ze=n.isRemovalTransition?void 0:y,Lt=n.isRemovalTransition?void 0:n.triggerName;for(const Gt of n.timelines){const On=Gt.element,fr=On!==re,hr=x(d,On,[]);this._getPreviousPlayers(On,fr,Ze,Lt,n.toState).forEach($i=>{const bo=$i.getRealPlayer();bo.beforeDestroy&&bo.beforeDestroy(),$i.destroy(),hr.push($i)})}Mn(re,n.fromStyles)}_buildAnimation(y,n,d,w,re,Ze){const Lt=n.triggerName,Gt=n.element,On=[],fr=new Set,hr=new Set,Jr=n.timelines.map(bo=>{const _o=bo.element;fr.add(_o);const Yi=_o[Fi];if(Yi&&Yi.removedBeforeQueried)return new l.ZN(bo.duration,bo.delay);const Xs=_o!==Gt,ls=function(f){const y=[];return fn(f,y),y}((d.get(_o)||Ei).map(Wl=>Wl.getRealPlayer())).filter(Wl=>!!Wl.element&&Wl.element===_o),js=re.get(_o),ga=Ze.get(_o),wl=m(0,this._normalizer,0,bo.keyframes,js,ga),wa=this._buildPlayer(bo,wl,ls);if(bo.subTimeline&&w&&hr.add(_o),Xs){const Wl=new Go(y,Lt,_o);Wl.setRealPlayer(wa),On.push(Wl)}return wa});On.forEach(bo=>{x(this.playersByQueriedElement,bo.element,[]).push(bo),bo.onDone(()=>function(f,y,n){let d;if(f instanceof Map){if(d=f.get(y),d){if(d.length){const w=d.indexOf(n);d.splice(w,1)}0==d.length&&f.delete(y)}}else if(d=f[y],d){if(d.length){const w=d.indexOf(n);d.splice(w,1)}0==d.length&&delete f[y]}return d}(this.playersByQueriedElement,bo.element,bo))}),fr.forEach(bo=>st(bo,Qe));const $i=_(Jr);return $i.onDestroy(()=>{fr.forEach(bo=>pn(bo,Qe)),er(Gt,n.toStyles)}),hr.forEach(bo=>{x(w,bo,[]).push($i)}),$i}_buildPlayer(y,n,d){return n.length>0?this.driver.animate(y.element,n,y.duration,y.delay,y.easing,d):new l.ZN(y.duration,y.delay)}}class Go{constructor(y,n,d){this.namespaceId=y,this.triggerName=n,this.element=d,this._player=new l.ZN,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(y){this._containsRealPlayer||(this._player=y,Object.keys(this._queuedCallbacks).forEach(n=>{this._queuedCallbacks[n].forEach(d=>b(y,n,void 0,d))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(y.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(y){this.totalTime=y}syncPlayerEvents(y){const n=this._player;n.triggerCallback&&y.onStart(()=>n.triggerCallback("start")),y.onDone(()=>this.finish()),y.onDestroy(()=>this.destroy())}_queueEvent(y,n){x(this._queuedCallbacks,y,[]).push(n)}onDone(y){this.queued&&this._queueEvent("done",y),this._player.onDone(y)}onStart(y){this.queued&&this._queueEvent("start",y),this._player.onStart(y)}onDestroy(y){this.queued&&this._queueEvent("destroy",y),this._player.onDestroy(y)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(y){this.queued||this._player.setPosition(y)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(y){const n=this._player;n.triggerCallback&&n.triggerCallback(y)}}function Jo(f){return f&&1===f.nodeType}function ua(f,y){const n=f.style.display;return f.style.display=null!=y?y:"none",n}function ds(f,y,n,d,w){const re=[];n.forEach(Gt=>re.push(ua(Gt)));const Ze=[];d.forEach((Gt,On)=>{const fr={};Gt.forEach(hr=>{const Jr=fr[hr]=y.computeStyle(On,hr,w);(!Jr||0==Jr.length)&&(On[Fi]=go,Ze.push(On))}),f.set(On,fr)});let Lt=0;return n.forEach(Gt=>ua(Gt,re[Lt++])),Ze}function zo(f,y){const n=new Map;if(f.forEach(Lt=>n.set(Lt,[])),0==y.length)return n;const w=new Set(y),re=new Map;function Ze(Lt){if(!Lt)return 1;let Gt=re.get(Lt);if(Gt)return Gt;const On=Lt.parentNode;return Gt=n.has(On)?On:w.has(On)?1:Ze(On),re.set(Lt,Gt),Gt}return y.forEach(Lt=>{const Gt=Ze(Lt);1!==Gt&&n.get(Gt).push(Lt)}),n}const oa="$$classes";function st(f,y){if(f.classList)f.classList.add(y);else{let n=f[oa];n||(n=f[oa]={}),n[y]=!0}}function pn(f,y){if(f.classList)f.classList.remove(y);else{let n=f[oa];n&&delete n[y]}}function ee(f,y,n){_(n).onDone(()=>f.processLeaveNode(y))}function fn(f,y){for(let n=0;n<f.length;n++){const d=f[n];d instanceof l.ZE?fn(d.players,y):y.push(d)}}function $r(f,y,n){const d=n.get(f);if(!d)return!1;let w=y.get(f);return w?d.forEach(re=>w.add(re)):y.set(f,d),n.delete(f),!0}class ni{constructor(y,n,d){this.bodyNode=y,this._driver=n,this._normalizer=d,this._triggerCache={},this.onRemovalComplete=(w,re)=>{},this._transitionEngine=new zi(y,n,d),this._timelineEngine=new Vr(y,n,d),this._transitionEngine.onRemovalComplete=(w,re)=>this.onRemovalComplete(w,re)}registerTrigger(y,n,d,w,re){const Ze=y+"-"+w;let Lt=this._triggerCache[Ze];if(!Lt){const Gt=[],On=hn(this._driver,re,Gt);if(Gt.length)throw new Error(`The animation trigger "${w}" has failed to build due to the following errors:\n - ${Gt.join("\n - ")}`);Lt=function(f,y,n){return new We(f,y,n)}(w,On,this._normalizer),this._triggerCache[Ze]=Lt}this._transitionEngine.registerTrigger(n,w,Lt)}register(y,n){this._transitionEngine.register(y,n)}destroy(y,n){this._transitionEngine.destroy(y,n)}onInsert(y,n,d,w){this._transitionEngine.insertNode(y,n,d,w)}onRemove(y,n,d,w){this._transitionEngine.removeNode(y,n,w||!1,d)}disableAnimations(y,n){this._transitionEngine.markElementAsDisabled(y,n)}process(y,n,d,w){if("@"==d.charAt(0)){const[re,Ze]=j(d);this._timelineEngine.command(re,n,Ze,w)}else this._transitionEngine.trigger(y,n,d,w)}listen(y,n,d,w,re){if("@"==d.charAt(0)){const[Ze,Lt]=j(d);return this._timelineEngine.listen(Ze,n,Lt,re)}return this._transitionEngine.listen(y,n,d,w,re)}flush(y=-1){this._transitionEngine.flush(y)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function Ri(f,y){let n=null,d=null;return Array.isArray(y)&&y.length?(n=gi(y[0]),y.length>1&&(d=gi(y[y.length-1]))):y&&(n=gi(y)),n||d?new Do(f,n,d):null}let Do=(()=>{class f{constructor(n,d,w){this._element=n,this._startStyles=d,this._endStyles=w,this._state=0;let re=f.initialStylesByElement.get(n);re||f.initialStylesByElement.set(n,re={}),this._initialStyles=re}start(){this._state<1&&(this._startStyles&&er(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(er(this._element,this._initialStyles),this._endStyles&&(er(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(f.initialStylesByElement.delete(this._element),this._startStyles&&(Mn(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Mn(this._element,this._endStyles),this._endStyles=null),er(this._element,this._initialStyles),this._state=3)}}return f.initialStylesByElement=new WeakMap,f})();function gi(f){let y=null;const n=Object.keys(f);for(let d=0;d<n.length;d++){const w=n[d];Hi(w)&&(y=y||{},y[w]=f[w])}return y}function Hi(f){return"display"===f||"position"===f}const cs="animation",Os="animationend";class xa{constructor(y,n,d,w,re,Ze,Lt){this._element=y,this._name=n,this._duration=d,this._delay=w,this._easing=re,this._fillMode=Ze,this._onDoneFn=Lt,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=Gt=>this._handleCallback(Gt)}apply(){(function(f,y){const n=Sa(f,"").trim();let d=0;n.length&&(function(f,y){let n=0;for(let d=0;d<f.length;d++)","===f.charAt(d)&&n++;return n}(n)+1,y=`${n}, ${y}`),Ka(f,"",y)})(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),Fo(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){Ra(this._element,this._name,"paused")}resume(){Ra(this._element,this._name,"running")}setPosition(y){const n=Ca(this._element,this._name);this._position=y*this._duration,Ka(this._element,"Delay",`-${this._position}ms`,n)}getPosition(){return this._position}_handleCallback(y){const n=y._ngTestManualTimestamp||Date.now(),d=1e3*parseFloat(y.elapsedTime.toFixed(3));y.animationName==this._name&&Math.max(n-this._startTime,0)>=this._delay&&d>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),Fo(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(f,y){const d=Sa(f,"").split(","),w=sa(d,y);w>=0&&(d.splice(w,1),Ka(f,"",d.join(",")))}(this._element,this._name))}}function Ra(f,y,n){Ka(f,"PlayState",n,Ca(f,y))}function Ca(f,y){const n=Sa(f,"");return n.indexOf(",")>0?sa(n.split(","),y):sa([n],y)}function sa(f,y){for(let n=0;n<f.length;n++)if(f[n].indexOf(y)>=0)return n;return-1}function Fo(f,y,n){n?f.removeEventListener(Os,y):f.addEventListener(Os,y)}function Ka(f,y,n,d){const w=cs+y;if(null!=d){const re=f.style[w];if(re.length){const Ze=re.split(",");Ze[d]=n,n=Ze.join(",")}}f.style[w]=n}function Sa(f,y){return f.style[cs+y]||""}class pt{constructor(y,n,d,w,re,Ze,Lt,Gt){this.element=y,this.keyframes=n,this.animationName=d,this._duration=w,this._delay=re,this._finalStyles=Lt,this._specialStyles=Gt,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this.currentSnapshot={},this._state=0,this.easing=Ze||"linear",this.totalTime=w+re,this._buildStyler()}onStart(y){this._onStartFns.push(y)}onDone(y){this._onDoneFns.push(y)}onDestroy(y){this._onDestroyFns.push(y)}destroy(){this.init(),!(this._state>=4)&&(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(y=>y()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(y=>y()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(y=>y()),this._onStartFns=[]}finish(){this.init(),!(this._state>=3)&&(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(y){this._styler.setPosition(y)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._state=0,this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new xa(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(y){const n="start"==y?this._onStartFns:this._onDoneFns;n.forEach(d=>d()),n.length=0}beforeDestroy(){this.init();const y={};if(this.hasStarted()){const n=this._state>=3;Object.keys(this._finalStyles).forEach(d=>{"offset"!=d&&(y[d]=n?this._finalStyles[d]:Dn(this.element,d))})}this.currentSnapshot=y}}class an extends l.ZN{constructor(y,n){super(),this.element=y,this._startingStyles={},this.__initialized=!1,this._styles=Oe(n)}init(){this.__initialized||!this._startingStyles||(this.__initialized=!0,Object.keys(this._styles).forEach(y=>{this._startingStyles[y]=this.element.style[y]}),super.init())}play(){!this._startingStyles||(this.init(),Object.keys(this._styles).forEach(y=>this.element.style.setProperty(y,this._styles[y])),super.play())}destroy(){!this._startingStyles||(Object.keys(this._startingStyles).forEach(y=>{const n=this._startingStyles[y];n?this.element.style.setProperty(y,n):this.element.style.removeProperty(y)}),this._startingStyles=null,super.destroy())}}class ye{constructor(){this._count=0}validateStyleProperty(y){return ne(y)}matchesElement(y,n){return ce(y,n)}containsElement(y,n){return Ae(y,n)}query(y,n,d){return Me(y,n,d)}computeStyle(y,n,d){return window.getComputedStyle(y)[n]}buildKeyframeElement(y,n,d){d=d.map(Lt=>Oe(Lt));let w=`@keyframes ${n} {\n`,re="";d.forEach(Lt=>{re=" ";const Gt=parseFloat(Lt.offset);w+=`${re}${100*Gt}% {\n`,re+=" ",Object.keys(Lt).forEach(On=>{const fr=Lt[On];switch(On){case"offset":return;case"easing":return void(fr&&(w+=`${re}animation-timing-function: ${fr};\n`));default:return void(w+=`${re}${On}: ${fr};\n`)}}),w+=`${re}}\n`}),w+="}\n";const Ze=document.createElement("style");return Ze.textContent=w,Ze}animate(y,n,d,w,re,Ze=[],Lt){const Gt=Ze.filter(Yi=>Yi instanceof pt),On={};$n(d,w)&&Gt.forEach(Yi=>{let Xs=Yi.currentSnapshot;Object.keys(Xs).forEach(ls=>On[ls]=Xs[ls])});const fr=function(f){let y={};return f&&(Array.isArray(f)?f:[f]).forEach(d=>{Object.keys(d).forEach(w=>{"offset"==w||"easing"==w||(y[w]=d[w])})}),y}(n=En(y,n,On));if(0==d)return new an(y,fr);const hr="gen_css_kf_"+this._count++,Jr=this.buildKeyframeElement(y,hr,n);(function(f){var y;const n=null===(y=f.getRootNode)||void 0===y?void 0:y.call(f);return"undefined"!=typeof ShadowRoot&&n instanceof ShadowRoot?n:document.head})(y).appendChild(Jr);const bo=Ri(y,n),_o=new pt(y,n,hr,d,w,re,fr,bo);return _o.onDestroy(()=>{var f;(f=Jr).parentNode.removeChild(f)}),_o}}class ms{constructor(y,n,d,w){this.element=y,this.keyframes=n,this.options=d,this._specialStyles=w,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=d.duration,this._delay=d.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(y=>y()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const y=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,y,this.options),this._finalKeyframe=y.length?y[y.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(y,n,d){return y.animate(n,d)}onStart(y){this._onStartFns.push(y)}onDone(y){this._onDoneFns.push(y)}onDestroy(y){this._onDestroyFns.push(y)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(y=>y()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(y=>y()),this._onDestroyFns=[])}setPosition(y){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=y*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const y={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(n=>{"offset"!=n&&(y[n]=this._finished?this._finalKeyframe[n]:Dn(this.element,n))}),this.currentSnapshot=y}triggerCallback(y){const n="start"==y?this._onStartFns:this._onDoneFns;n.forEach(d=>d()),n.length=0}}class ss{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(Zo().toString()),this._cssKeyframesDriver=new ye}validateStyleProperty(y){return ne(y)}matchesElement(y,n){return ce(y,n)}containsElement(y,n){return Ae(y,n)}query(y,n,d){return Me(y,n,d)}computeStyle(y,n,d){return window.getComputedStyle(y)[n]}overrideWebAnimationsSupport(y){this._isNativeImpl=y}animate(y,n,d,w,re,Ze=[],Lt){if(!Lt&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(y,n,d,w,re,Ze);const fr={duration:d,delay:w,fill:0==w?"both":"forwards"};re&&(fr.easing=re);const hr={},Jr=Ze.filter(bo=>bo instanceof ms);$n(d,w)&&Jr.forEach(bo=>{let _o=bo.currentSnapshot;Object.keys(_o).forEach(Yi=>hr[Yi]=_o[Yi])});const $i=Ri(y,n=En(y,n=n.map(bo=>ar(bo,!1)),hr));return new ms(y,n,fr,$i)}}function Zo(){return u()&&Element.prototype.animate||{}}let Ea=(()=>{class f extends l._j{constructor(n,d){super(),this._nextAnimationId=0,this._renderer=n.createRenderer(d.body,{id:"0",encapsulation:e.ifc.None,styles:[],data:{animation:[]}})}build(n){const d=this._nextAnimationId.toString();this._nextAnimationId++;const w=Array.isArray(n)?(0,l.vP)(n):n;return va(this._renderer,null,d,"register",[w]),new ul(d,this._renderer)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(e.FYo),e.LFG(s.K0))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})();class ul extends l.LC{constructor(y,n){super(),this._id=y,this._renderer=n}create(y,n){return new Ma(this._id,y,n||{},this._renderer)}}class Ma{constructor(y,n,d,w){this.id=y,this.element=n,this._renderer=w,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",d)}_listen(y,n){return this._renderer.listen(this.element,`@@${this.id}:${y}`,n)}_command(y,...n){return va(this._renderer,this.element,this.id,y,n)}onDone(y){this._listen("done",y)}onStart(y){this._listen("start",y)}onDestroy(y){this._listen("destroy",y)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(y){this._command("setPosition",y)}getPosition(){var y,n;return null!==(n=null===(y=this._renderer.engine.players[+this.id])||void 0===y?void 0:y.getPosition())&&void 0!==n?n:0}}function va(f,y,n,d,w){return f.setProperty(y,`@@${n}:${d}`,w)}const $o="@.disabled";let Ol=(()=>{class f{constructor(n,d,w){this.delegate=n,this.engine=d,this._zone=w,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),d.onRemovalComplete=(re,Ze)=>{Ze&&Ze.parentNode(re)&&Ze.removeChild(re.parentNode,re)}}createRenderer(n,d){const re=this.delegate.createRenderer(n,d);if(!(n&&d&&d.data&&d.data.animation)){let fr=this._rendererCache.get(re);return fr||(fr=new dl("",re,this.engine),this._rendererCache.set(re,fr)),fr}const Ze=d.id,Lt=d.id+"-"+this._currentId;this._currentId++,this.engine.register(Lt,n);const Gt=fr=>{Array.isArray(fr)?fr.forEach(Gt):this.engine.registerTrigger(Ze,Lt,n,fr.name,fr)};return d.data.animation.forEach(Gt),new Ja(this,Lt,re,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(n,d,w){n>=0&&n<this._microtaskId?this._zone.run(()=>d(w)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(re=>{const[Ze,Lt]=re;Ze(Lt)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([d,w]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(e.FYo),e.LFG(ni),e.LFG(e.R0b))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})();class dl{constructor(y,n,d){this.namespaceId=y,this.delegate=n,this.engine=d,this.destroyNode=this.delegate.destroyNode?w=>n.destroyNode(w):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(y,n){return this.delegate.createElement(y,n)}createComment(y){return this.delegate.createComment(y)}createText(y){return this.delegate.createText(y)}appendChild(y,n){this.delegate.appendChild(y,n),this.engine.onInsert(this.namespaceId,n,y,!1)}insertBefore(y,n,d,w=!0){this.delegate.insertBefore(y,n,d),this.engine.onInsert(this.namespaceId,n,y,w)}removeChild(y,n,d){this.engine.onRemove(this.namespaceId,n,this.delegate,d)}selectRootElement(y,n){return this.delegate.selectRootElement(y,n)}parentNode(y){return this.delegate.parentNode(y)}nextSibling(y){return this.delegate.nextSibling(y)}setAttribute(y,n,d,w){this.delegate.setAttribute(y,n,d,w)}removeAttribute(y,n,d){this.delegate.removeAttribute(y,n,d)}addClass(y,n){this.delegate.addClass(y,n)}removeClass(y,n){this.delegate.removeClass(y,n)}setStyle(y,n,d,w){this.delegate.setStyle(y,n,d,w)}removeStyle(y,n,d){this.delegate.removeStyle(y,n,d)}setProperty(y,n,d){"@"==n.charAt(0)&&n==$o?this.disableAnimations(y,!!d):this.delegate.setProperty(y,n,d)}setValue(y,n){this.delegate.setValue(y,n)}listen(y,n,d){return this.delegate.listen(y,n,d)}disableAnimations(y,n){this.engine.disableAnimations(y,n)}}class Ja extends dl{constructor(y,n,d,w){super(n,d,w),this.factory=y,this.namespaceId=n}setProperty(y,n,d){"@"==n.charAt(0)?"."==n.charAt(1)&&n==$o?this.disableAnimations(y,d=void 0===d||!!d):this.engine.process(this.namespaceId,y,n.substr(1),d):this.delegate.setProperty(y,n,d)}listen(y,n,d){if("@"==n.charAt(0)){const w=function(f){switch(f){case"body":return document.body;case"document":return document;case"window":return window;default:return f}}(y);let re=n.substr(1),Ze="";return"@"!=re.charAt(0)&&([re,Ze]=function(f){const y=f.indexOf(".");return[f.substring(0,y),f.substr(y+1)]}(re)),this.engine.listen(this.namespaceId,w,re,Ze,Lt=>{this.factory.scheduleListenerCallback(Lt._data||-1,d,Lt)})}return this.delegate.listen(y,n,d)}}let Bl=(()=>{class f extends ni{constructor(n,d,w){super(n.body,d,w)}ngOnDestroy(){this.flush()}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(s.K0),e.LFG(ue),e.LFG(Oi))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})();const pa=new e.OlP("AnimationModuleType"),Vo=[{provide:l._j,useClass:Ea},{provide:Oi,useFactory:function(){return new ei}},{provide:ni,useClass:Bl},{provide:e.FYo,useFactory:function(f,y,n){return new Ol(f,y,n)},deps:[t.se,ni,e.R0b]}],ja=[{provide:ue,useFactory:function(){return"function"==typeof Zo()?new ss:new ye}},{provide:pa,useValue:"BrowserAnimations"},...Vo],hs=[{provide:ue,useClass:be},{provide:pa,useValue:"NoopAnimations"},...Vo];let ze=(()=>{class f{static withConfig(n){return{ngModule:f,providers:n.disableAnimations?hs:ja}}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({providers:ja,imports:[t.b2]}),f})();var kt=o(91376),tn=o(6283),ur=o(23815),gn=o.n(ur),xr=o(64762),Zr=o(93523);let Pr=class{constructor(y){this.http=y,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(`${this.baseURL}`)}lsDir(y,n){let d=`${this.baseUiURL}/${y}/ls_dir?depth=2`;return n&&(d+=`&path=${encodeURIComponent(n)}`),this.http.get(d)}getCephfs(y){return this.http.get(`${this.baseURL}/${y}`)}getTabs(y){return this.http.get(`ui-api/cephfs/${y}/tabs`)}getClients(y){return this.http.get(`${this.baseURL}/${y}/clients`)}evictClient(y,n){return this.http.delete(`${this.baseURL}/${y}/client/${n}`)}getMdsCounters(y){return this.http.get(`${this.baseURL}/${y}/mds_counters`)}mkSnapshot(y,n,d){let w=new a.LE;return w=w.append("path",n),gn().isUndefined(d)||(w=w.append("name",d)),this.http.post(`${this.baseURL}/${y}/snapshot`,null,{params:w})}rmSnapshot(y,n,d){let w=new a.LE;return w=w.append("path",n),w=w.append("name",d),this.http.delete(`${this.baseURL}/${y}/snapshot`,{params:w})}quota(y,n,d){let w=new a.LE;return w=w.append("path",n),this.http.put(`${this.baseURL}/${y}/quota`,d,{observe:"response",params:w})}};Pr.\u0275fac=function(y){return new(y||Pr)(e.LFG(a.eN))},Pr.\u0275prov=e.Yz7({token:Pr,factory:Pr.\u0275fac,providedIn:"root"}),Pr=(0,xr.gn)([Zr.o,(0,xr.w6)("design:paramtypes",[a.eN])],Pr);var mi=o(68136),ii=o(99466),si=o(68774),bi=o(96102),Ui=o(64337),io=o(46797),vo=o(69158),Bi=o(91801),hi=o(74937),Br=o(38549),G=o(59376),Se=o(47557),ft=o(66369),Ft=o(61350),Bt=o(16738),In=o.n(Bt),Xn=o(87311),Sr=o(7194);const pi=["chartCanvas"],Fr=["chartTooltip"];let zr=(()=>{class f{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(n,d)=>{let w=0;if(n.length>0){const re=n[0];w=d.datasets[re.datasetIndex].data[re.index].x}return w.toString()}}}},chartType:"line"}}ngOnInit(){gn().isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){gn().isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const n=new Xn.h(this.chartCanvas,this.chartTooltip,w=>w.caretX+"px",w=>w.caretY-w.height-23+"px");n.getTitle=w=>In()(w,"x").format("LTS"),n.checkOffset=!0;const d={title:{text:this.mdsCounter.name},tooltips:{custom:w=>n.customTooltips(w)}};gn().merge(this.chart,{options:d})}updateChart(){const n=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];gn().merge(this.chart,{datasets:n}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(n){const d=[];return gn().each(n,w=>{d.push({x:1e3*w[0],y:w[1]})}),d.shift(),d}deltaTimeSeries(n){let d,w=n[0];const re=[];for(d=1;d<n.length;d++){const Ze=n[d];re.push({x:1e3*Ze[0],y:Ze[1]-w[1]}),w=Ze}return re}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-chart"]],viewQuery:function(n,d){if(1&n&&(e.Gf(pi,7),e.Gf(Fr,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.chartCanvas=w.first),e.iGM(w=e.CRH())&&(d.chartTooltip=w.first)}},inputs:{mdsCounter:"mdsCounter"},features:[e.TTD],decls:6,vars:3,consts:[[1,"chart-container"],["baseChart","",3,"datasets","options","chartType"],["chartCanvas",""],[1,"chartjs-tooltip"],["chartTooltip",""]],template:function(n,d){1&n&&(e.TgZ(0,"div",0),e._UZ(1,"canvas",1,2),e.TgZ(3,"div",3,4),e._UZ(5,"table"),e.qZA(),e.qZA()),2&n&&(e.xp6(1),e.Q6J("datasets",d.chart.datasets)("options",d.chart.options)("chartType",d.chart.chartType))},directives:[Sr.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{height:500px;margin-bottom:20px;position:relative;width:100%}']}),f})();var Un=o(60251);const lr=["poolUsageTpl"],dr=["activityTmpl"];function li(f,y){if(1&f&&(e.TgZ(0,"div",0),e.TgZ(1,"div",11),e._UZ(2,"cd-cephfs-chart",12),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.Q6J("mdsCounter",n)}}function Ti(f,y){if(1&f&&e._UZ(0,"cd-usage-bar",13),2&f){const n=y.row;e.Q6J("total",n.size)("used",n.used)}}function Ao(f,y){1&f&&(e._uU(0),e.ALo(1,"dimless")),2&f&&e.AsE(" ","standby-replay"===y.row.state?"Evts":"Reqs",": ",e.lcZ(1,2,y.value)," /s\n")}let Qo=(()=>{class f{constructor(n,d){this.dimlessBinary=n,this.dimless=d,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:"Standby daemons",value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:"Rank"},{prop:"state",name:"State"},{prop:"mds",name:"Daemon"},{prop:"activity",name:"Activity",cellTemplate:this.activityTmpl},{prop:"dns",name:"Dentries",pipe:this.dimless},{prop:"inos",name:"Inodes",pipe:this.dimless},{prop:"dirs",name:"Dirs",pipe:this.dimless},{prop:"caps",name:"Caps",pipe:this.dimless}],pools:[{prop:"pool",name:"Pool"},{prop:"type",name:"Type"},{prop:"size",name:"Size",pipe:this.dimlessBinary},{name:"Usage",cellTemplate:this.poolUsageTpl,comparator:(n,d,w,re)=>{const Ze=w.used/w.avail,Lt=re.used/re.avail;return Ze===Lt?0:Ze>Lt?1:-1}}]}}trackByFn(n,d){return d.name}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Se.$),e.Y36(ft.n))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-detail"]],viewQuery:function(n,d){if(1&n&&(e.Gf(lr,7),e.Gf(dr,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.poolUsageTpl=w.first),e.iGM(w=e.CRH())&&(d.activityTmpl=w.first)}},inputs:{data:"data"},features:[e.TTD],decls:19,vars:9,consts:function(){let y,n,d,w;return y="Ranks",n="Standbys",d="Pools",w="MDS performance counters",[[1,"row"],[1,"col-sm-6"],y,[3,"data","columns","toolHeader"],n,[3,"data"],d,w,["class","row",4,"ngFor","ngForOf","ngForTrackBy"],["poolUsageTpl",""],["activityTmpl",""],[1,"col-md-12"],[3,"mdsCounter"],[3,"total","used"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"legend"),e.SDv(3,2),e.qZA(),e._UZ(4,"cd-table",3),e.TgZ(5,"legend"),e.SDv(6,4),e.qZA(),e._UZ(7,"cd-table-key-value",5),e.qZA(),e.TgZ(8,"div",1),e.TgZ(9,"legend"),e.SDv(10,6),e.qZA(),e._UZ(11,"cd-table",3),e.qZA(),e.qZA(),e.TgZ(12,"legend"),e.SDv(13,7),e.qZA(),e.YNc(14,li,3,1,"div",8),e.YNc(15,Ti,1,2,"ng-template",null,9,e.W1O),e.YNc(17,Ao,2,4,"ng-template",null,10,e.W1O)),2&n&&(e.xp6(4),e.Q6J("data",d.data.ranks)("columns",d.columns.ranks)("toolHeader",!1),e.xp6(3),e.Q6J("data",d.standbys),e.xp6(4),e.Q6J("data",d.data.pools)("columns",d.columns.pools)("toolHeader",!1),e.xp6(3),e.Q6J("ngForOf",d.objectValues(d.data.mdsCounters))("ngForTrackBy",d.trackByFn))},directives:[Ui.a,Ft.b,s.sg,zr,Un.O],pipes:[ft.n],styles:[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]}),f})();var jo=o(30982),uo=o(79512),eo=o(65862),Ho=o(18001),Zi=o(97161),na=o(63285),ha=o(94928);let fl=(()=>{class f{constructor(n,d,w,re,Ze){this.cephfsService=n,this.modalService=d,this.notificationService=w,this.authStorageService=re,this.actionLabels=Ze,this.triggerApiUpdate=new e.vpe,this.selection=new si.r,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:eo.P.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:"id"},{prop:"type",name:"type"},{prop:"state",name:"state"},{prop:"version",name:"version"},{prop:"hostname",name:"Host"},{prop:"root",name:"root"}]}updateSelection(n){this.selection=n}evictClient(n){this.cephfsService.evictClient(this.id,n).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.close(),this.notificationService.show(Ho.k.success,"Evicted client '" + n + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}evictClientModal(){const n=this.selection.first().id;this.modalRef=this.modalService.show(jo.M,{itemDescription:"client",itemNames:[n],actionDescription:"evict",submitAction:()=>this.evictClient(n)})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Pr),e.Y36(na.Z),e.Y36(Zi.g),e.Y36(hi.j),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-clients"]],inputs:{id:"id",clients:"clients"},outputs:{triggerApiUpdate:"triggerApiUpdate"},decls:2,vars:7,consts:[["selectionType","single",3,"data","columns","status","autoReload","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"]],template:function(n,d){1&n&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return d.triggerApiUpdate.emit()})("updateSelection",function(re){return d.updateSelection(re)}),e._UZ(1,"cd-table-actions",1),e.qZA()),2&n&&(e.Q6J("data",d.clients.data)("columns",d.columns)("status",d.clients.status)("autoReload",-1),e.xp6(1),e.Q6J("permission",d.permission)("selection",d.selection)("tableActions",d.tableActions))},directives:[Ui.a,ha.K],styles:[""]}),f})();var Hn=o(24751),Es=o(19723),Ll=o(36169),Hl=o(65683),mo=o(77205),As=o(87925);const qc=["origin"],yc=function(f,y){return[f,y]};function fc(f,y){if(1&f&&e._UZ(0,"i",5),2&f){const n=e.oxw(2);e.Q6J("ngClass",e.WLB(1,yc,n.icons.spinner,n.icons.spin))}}function Fl(f,y){if(1&f&&(e.TgZ(0,"tree-root",10),e.YNc(1,fc,1,4,"ng-template",null,11,e.W1O),e.qZA()),2&f){const n=e.oxw();e.Q6J("nodes",n.nodes)("options",n.treeOptions)}}function bl(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"legend"),e.SDv(2,17),e.qZA(),e.TgZ(3,"cd-table",18),e.NdJ("updateSelection",function(w){return e.CHM(n),e.oxw(2).quota.updateSelection(w)}),e._UZ(4,"cd-table-actions",19),e.qZA(),e.BQk()}if(2&f){const n=e.oxw(2);e.xp6(3),e.Q6J("data",n.settings)("columns",n.quota.columns)("limit",0)("footer",!1)("onlyActionHeader",!0)("forceIdentifier",!0)("toolHeader",!1),e.xp6(1),e.Q6J("permission",n.permission)("selection",n.quota.selection)("tableActions",n.quota.tableActions)}}function ql(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",12),e.TgZ(1,"div",2),e.TgZ(2,"div",3),e._uU(3),e.qZA(),e.TgZ(4,"div",6),e.YNc(5,bl,5,10,"ng-container",13),e.TgZ(6,"legend"),e.SDv(7,14),e.qZA(),e.TgZ(8,"cd-table",15),e.NdJ("updateSelection",function(w){return e.CHM(n),e.oxw().snapshot.updateSelection(w)}),e._UZ(9,"cd-table-actions",16),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(3),e.hij(" ",n.selectedDir.path," "),e.xp6(2),e.Q6J("ngIf","/"!==n.selectedDir.path),e.xp6(3),e.Q6J("data",n.selectedDir.snapshots)("columns",n.snapshot.columns),e.xp6(1),e.Q6J("permission",n.permission)("selection",n.snapshot.selection)("tableActions",n.snapshot.tableActions)}}function kl(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"span",20),e.NdJ("click",function(){const re=e.CHM(n).value;return e.oxw().selectOrigin(re)}),e._uU(1),e.qZA()}if(2&f){const n=y.value;e.xp6(1),e.Oqu(n)}}let ru=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt){this.authStorageService=n,this.modalService=d,this.cephfsService=w,this.cdDatePipe=re,this.actionLabels=Ze,this.notificationService=Lt,this.dimlessBinaryPipe=Gt,this.icons=eo.P,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:On=>this.updateDirectory(On.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(n,d,w){Es.iM.TOGGLE_EXPANDED(n,d,w),this.selectNode(d)}selectNode(n){Es.iM.TOGGLE_ACTIVE(void 0,n,void 0),this.selectedDir=this.getDirectory(n),"/"!==n.id&&this.setSettings(n)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:"Name",flexGrow:1},{prop:"row.value",name:"Value",sortable:!1,flexGrow:1},{prop:"row.originPath",name:"Origin",sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new si.r,updateSelection:n=>{this.quota.selection=n},tableActions:[{name:this.actionLabels.SET,icon:eo.P.edit,permission:"update",visible:n=>!n.hasSelection||n.first()&&0===n.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:eo.P.edit,permission:"update",visible:n=>n.first()&&n.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:eo.P.destroy,permission:"update",disable:n=>!n.hasSelection||n.first()&&0===n.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:"Name",flexGrow:1},{prop:"path",name:"Path",isHidden:!0,flexGrow:2},{prop:"created",name:"Created",flexGrow:1,pipe:this.cdDatePipe}],selection:new si.r,updateSelection:n=>{this.snapshot.selection=n},tableActions:[{name:this.actionLabels.CREATE,icon:eo.P.add,permission:"create",canBePrimary:n=>!n.hasSelection,click:()=>this.createSnapshot(),disable:()=>this.disableCreateSnapshot()},{name:this.actionLabels.DELETE,icon:eo.P.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:n=>n.hasSelection,disable:n=>!n.hasSelection}]}}disableCreateSnapshot(){const n=this.selectedDir.path.split("/").slice(1);return n.length>=4&&"volumes"===n[0]&&"Cannot create snapshots for files/folders in the subvolume " + n[2] + ""}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(n){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(n)){if(!0===this.loading[n])return}else this.requestedPaths.push(n);return new Promise(d=>{this.setLoadingIndicator(n,!0),this.cephfsService.lsDir(this.id,n).subscribe(w=>{this.updateTreeStructure(w),this.updateQuotaTable(),this.updateTree(),d(this.getChildren(n)),this.setLoadingIndicator(n,!1)})})}setLoadingIndicator(n,d){this.loading[n]=d,this.unsetLoadingIndicator()}getSubDirectories(n,d=this.dirs){return d.filter(w=>w.parent===n)}getChildren(n){const d=this.getSubTree(n);return gn().sortBy(this.getSubDirectories(n),"path").map(w=>this.createNode(w,d))}createNode(n,d){return this.nodeIds[n.path]=n,d||this.getSubTree(n.parent),{name:n.name,id:n.path,hasChildren:this.getSubDirectories(n.path,d).length>0}}getSubTree(n){return this.dirs.filter(d=>d.parent&&d.parent.startsWith(n))}setSettings(n){const d=(w,re)=>w?re?re(w):w:"";this.settings=[this.getQuota(n,"max_files",d),this.getQuota(n,"max_bytes",w=>d(w,re=>this.dimlessBinaryPipe.transform(re)))]}getQuota(n,d,w){const re=n.id;n=this.getOrigin(n,d);const Ze=this.getDirectory(n),Lt=Ze.quotas[d];let Gt=Lt,On=Ze.path;if(n.id===re)if("/"===n.parent.id)Gt=0;else{const fr=this.getDirectory(this.getOrigin(n.parent,d));Gt=fr.quotas[d],On=fr.path}return{row:{name:"max_bytes"===d?"Max size":"Max files",value:w(Lt),originPath:Lt?Ze.path:""},quotaKey:d,dirValue:this.nodeIds[re].quotas[d],nextTreeMaximum:{value:Gt,path:Gt?On:""}}}getOrigin(n,d){if(n.parent&&"/"!==n.parent.id){const w=this.getQuotaFromTree(n,d),re=this.getOrigin(n.parent,d),Ze=this.getQuotaFromTree(re,d);return 0===w||0!==Ze&&Ze<w?re:n}return n}getQuotaFromTree(n,d){return this.getDirectory(n).quotas[d]}getDirectory(n){return this.nodeIds[n.id]}selectOrigin(n){this.selectNode(this.getNode(n))}getNode(n){return this.treeComponent.treeModel.getNodeById(n)}updateQuotaModal(){const n=this.selectedDir.path,d=this.quota.selection.first(),w=d.nextTreeMaximum,re=d.quotaKey,Ze=d.dirValue;this.modalService.show(Hl.X,{titleText:this.getModalQuotaTitle(0===Ze?this.actionLabels.SET:this.actionLabels.UPDATE,n),message:w.value?"The inherited " + this.getQuotaValueFromPathMsg(w.value, w.path) + " is the maximum value to be used.":void 0,fields:[this.getQuotaFormField(d.row.name,re,Ze,w.value)],submitButtonText:"Save",onSubmit:Lt=>this.updateQuota(Lt)})}getModalQuotaTitle(n,d){return "" + n + " CephFS " + this.getQuotaName() + " quota for '" + d + "'"}getQuotaName(){return this.isBytesQuotaSelected()?"size":"files"}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(n,d){return n=this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(n):n,"" + this.getQuotaName() + " quota " + n + " from '" + d + "'"}getQuotaFormField(n,d,w,re){const Ze="max_bytes"===d,Lt=[Ze?mo.h.binaryMin(0):Hn.kI.min(0)];re&&Lt.push(Ze?mo.h.binaryMax(re):Hn.kI.max(re));const Gt={type:Ze?"binary":"number",label:n,name:d,value:w,validators:Lt,required:!0};return Ze||(Gt.errors={min:"Value has to be at least 0 or more",max:"Value has to be at most " + re + " or less"}),Gt}updateQuota(n,d){const w=this.selectedDir.path,re=this.quota.selection.first().quotaKey,Ze=0===this.selectedDir.quotas[re]?this.actionLabels.SET:0===n[re]?this.actionLabels.UNSET:"Updated";this.cephfsService.quota(this.id,w,n).subscribe(()=>{d&&d(),this.notificationService.show(Ho.k.success,this.getModalQuotaTitle(Ze,w)),this.forceDirRefresh()})}unsetQuotaModal(){const n=this.selectedDir.path,d=this.quota.selection.first(),w=d.quotaKey,re=d.nextTreeMaximum,Ze=d.dirValue,Lt=this.getQuotaValueFromPathMsg(re.value,re.path),Gt=re.value>0?re.value>Ze?"in order to inherit " + Lt + "":"which isn't used because of the inheritance of " + Lt + "":"in order to have no quota on the directory";this.modalRef=this.modalService.show(Ll.Y,{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,n),buttonText:this.actionLabels.UNSET,description:"" + this.actionLabels.UNSET + " " + this.getQuotaValueFromPathMsg(Ze, n) + " " + Gt + ".",onSubmit:()=>this.updateQuota({[w]:0},()=>this.modalRef.close())})}createSnapshot(){const n=this.selectedDir.path;this.modalService.show(Hl.X,{titleText:"Create Snapshot",message:"Please enter the name of the snapshot.",fields:[{type:"text",name:"name",value:`${In()().toISOString(!0)}`,required:!0}],submitButtonText:"Create Snapshot",onSubmit:d=>{this.cephfsService.mkSnapshot(this.id,n,d.name).subscribe(w=>{this.notificationService.show(Ho.k.success,"Created snapshot '" + w + "' for '" + n + "'"),this.forceDirRefresh()})}})}forceDirRefresh(n){if(!n){const w=this.selectedDir;if(!w)throw new Error("This function can only be called without path if an selection was made");n=w.parent?w.parent:w.path}this.getNode(n).loadNodeChildren()}updateTreeStructure(n){const d=(re,Ze)=>{const Lt=re.filter(On=>On.parent===Ze),Gt=Lt.map(On=>On.path);return{children:Lt,paths:Gt}};gn().uniq(n.map(re=>re.parent).sort()).forEach(re=>{const Ze=d(n,re),Lt=d(this.dirs,re);Lt.children.forEach(Gt=>{Ze.paths.includes(Gt.path)||this.removeOldDirectory(Gt)}),Ze.children.forEach(Gt=>{Lt.paths.includes(Gt.path)?this.updateExistingDirectory(Lt.children,Gt):this.addNewDirectory(Gt)})})}removeOldDirectory(n){const d=n.path;gn().remove(this.dirs,w=>w.path===d),delete this.nodeIds[d],this.updateDirectoriesParentNode(n)}updateDirectoriesParentNode(n){const d=n.parent;if(!d)return;const w=this.getNode(d);if(!w)return;const re=this.getChildren(d);w.data.children=re,w.data.hasChildren=re.length>0,this.treeComponent.treeModel.update()}addNewDirectory(n){this.dirs.push(n),this.nodeIds[n.path]=n,this.updateDirectoriesParentNode(n)}updateExistingDirectory(n,d){const w=n.find(re=>re.path===d.path);Object.assign(w,d)}updateQuotaTable(){const n=this.selectedDir?this.getNode(this.selectedDir.path):void 0;n&&"/"!==n.id&&this.setSettings(n)}updateTree(n=!1){this.loadingIndicator&&!n||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(jo.M,{itemDescription:"CephFs Snapshot",itemNames:this.snapshot.selection.selected.map(n=>n.name),submitAction:()=>this.deleteSnapshot()})}deleteSnapshot(){const n=this.selectedDir.path;this.snapshot.selection.selected.forEach(d=>{const w=d.name;this.cephfsService.rmSnapshot(this.id,n,w).subscribe(()=>{this.notificationService.show(Ho.k.success,"Deleted snapshot '" + w + "' for '" + n + "'")})}),this.modalRef.close(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(d=>this.forceDirRefresh(d));const n=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(n)},3e3)}unsetLoadingIndicator(){!this.loadingIndicator||(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(d=>d))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(na.Z),e.Y36(Pr),e.Y36(bi.N),e.Y36(uo.p4),e.Y36(Zi.g),e.Y36(Se.$))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-directories"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Es.qr,5),e.Gf(qc,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.treeComponent=w.first),e.iGM(w=e.CRH())&&(d.originTmpl=w.first)}},inputs:{id:"id"},features:[e.TTD],decls:11,vars:10,consts:function(){let y,n;return y="Snapshots",n="Quotas",[[1,"row"],[1,"col-sm-4","pr-0"],[1,"card"],[1,"card-header"],["type","button",1,"btn","btn-light","pull-right",3,"click"],[3,"ngClass"],[1,"card-body"],[3,"nodes","options",4,"ngIf"],["class","col-sm-8 metadata",4,"ngIf"],["origin",""],[3,"nodes","options"],["loadingTemplate",""],[1,"col-sm-8","metadata"],[4,"ngIf"],y,["identifier","name","forceIdentifier","true","selectionType","multiClick",3,"data","columns","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],n,["selectionType","single","identifier","quotaKey",3,"data","columns","limit","footer","onlyActionHeader","forceIdentifier","toolHeader","updateSelection"],[1,"only-table-actions",3,"permission","selection","tableActions"],[1,"quota-origin",3,"click"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.TgZ(4,"button",4),e.NdJ("click",function(){return d.refreshAllDirectories()}),e._UZ(5,"i",5),e.qZA(),e.qZA(),e.TgZ(6,"div",6),e.YNc(7,Fl,3,2,"tree-root",7),e.qZA(),e.qZA(),e.qZA(),e.YNc(8,ql,10,7,"div",8),e.qZA(),e.YNc(9,kl,2,1,"ng-template",null,9,e.W1O)),2&n&&(e.xp6(4),e.ekj("disabled",d.loadingIndicator),e.xp6(1),e.ekj("fa-spin",d.loadingIndicator),e.Q6J("ngClass",e.WLB(7,yc,d.icons.large,d.icons.refresh)),e.xp6(2),e.Q6J("ngIf",d.nodes),e.xp6(1),e.Q6J("ngIf",d.selectedDir))},directives:[As.o,s.mk,s.O5,Es.qr,Ui.a,ha.K],styles:["cd-cephfs-directories tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer}.quota-origin[_ngcontent-%COMP%]:hover{color:#212529}"]}),f})();var Je=o(76317);function Fe(f,y){if(1&f&&e._UZ(0,"cd-cephfs-detail",15),2&f){const n=e.oxw(2);e.Q6J("data",n.details)}}function we(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-cephfs-clients",16),e.NdJ("triggerApiUpdate",function(){return e.CHM(n),e.oxw(2).refresh()}),e.qZA()}if(2&f){const n=e.oxw(2);e.Q6J("id",n.id)("clients",n.clients)}}function Ot(f,y){if(1&f&&e._UZ(0,"cd-cephfs-directories",17),2&f){const n=e.oxw(2);e.Q6J("id",n.id)}}function xe(f,y){if(1&f&&e._UZ(0,"cd-grafana",18),2&f){const n=e.oxw(2);e.Q6J("grafanaPath","mds-performance?var-mds_servers=mds."+n.grafanaId)}}function ke(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"ul",1,2),e.NdJ("navChange",function(){return e.CHM(n),e.oxw().softRefresh()}),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,Fe,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.ynx(9),e.SDv(10,8),e.BQk(),e.TgZ(11,"span",9),e._uU(12),e.qZA(),e.qZA(),e.YNc(13,we,1,2,"ng-template",6),e.qZA(),e.TgZ(14,"li",10),e.TgZ(15,"a",4),e.SDv(16,11),e.qZA(),e.YNc(17,Ot,1,1,"ng-template",6),e.qZA(),e.TgZ(18,"li",12),e.TgZ(19,"a",4),e.SDv(20,13),e.qZA(),e.YNc(21,xe,1,1,"ng-template",6),e.qZA(),e.qZA(),e._UZ(22,"div",14),e.BQk()}if(2&f){const n=e.MAs(2),d=e.oxw();e.xp6(12),e.Oqu(d.clients.data.length),e.xp6(10),e.Q6J("ngbNavOutlet",n)}}let Te=(()=>{class f{constructor(n,d,w){this.ngZone=n,this.authStorageService=d,this.cephfsService=w,this.clients={data:[],status:new vo.E(Bi.T.ValueNone)},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(n,d){this.id=n;const w=gn().first(Object.values(d));this.grafanaId=w&&w.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:new vo.E(Bi.T.ValueNone)},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=(0,io.H)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(n=>{this.data=n,this.softRefresh()},()=>{this.clients.status=new vo.E(Bi.T.ValueException)})}softRefresh(){const n=gn().cloneDeep(this.data);this.clients=n.clients,this.clients.status=new vo.E(this.clients.status),this.details={standbys:n.standbys,pools:n.pools,ranks:n.ranks,mdsCounters:n.mds_counters,name:n.name}}ngOnDestroy(){this.unsubscribeInterval()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(e.R0b),e.Y36(hi.j),e.Y36(Pr))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-tabs"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let y,n,d,w;return y="Details",n="Clients",d="Directories",w="Performance Details",[[4,"ngIf"],["ngbNav","","cdStatefulTab","cephfs-tabs",1,"nav-tabs",3,"navChange"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","clients"],n,[1,"badge","badge-pill","badge-tab","ml-1"],["ngbNavItem","directories"],d,["ngbNavItem","performance-details"],w,[3,"ngbNavOutlet"],[3,"data"],[3,"id","clients","triggerApiUpdate"],[3,"id"],["uid","tbO9LAiZz","grafanaStyle","one",3,"grafanaPath"]]},template:function(n,d){1&n&&e.YNc(0,ke,23,2,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,Qo,fl,ru,Je.F],styles:[""]}),f})(),ge=(()=>{class f extends mi.o{constructor(n,d){super(),this.cephfsService=n,this.cdDatePipe=d,this.filesystems=[],this.selection=new si.r}ngOnInit(){this.columns=[{name:"Name",prop:"mdsmap.fs_name",flexGrow:2},{name:"Created",prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:"Enabled",prop:"mdsmap.enabled",flexGrow:1,cellTransformation:ii.e.checkIcon}]}loadFilesystems(n){this.cephfsService.list().subscribe(d=>{this.filesystems=d},()=>{n.error()})}updateSelection(n){this.selection=n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Pr),e.Y36(bi.N))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-cephfs-list"]],features:[e.qOj],decls:2,vars:4,consts:[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","fetchData","setExpandedRow","updateSelection"],["cdTableDetail","",3,"selection"]],template:function(n,d){1&n&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(re){return d.loadFilesystems(re)})("setExpandedRow",function(re){return d.setExpandedRow(re)})("updateSelection",function(re){return d.updateSelection(re)}),e._UZ(1,"cd-cephfs-tabs",1),e.qZA()),2&n&&(e.Q6J("data",d.filesystems)("columns",d.columns)("hasDetails",!0),e.xp6(1),e.Q6J("selection",d.expandedRow))},directives:[Ui.a,Te],styles:[""]}),f})(),Re=(()=>{class f{static getType(n){const d=gn().find(this.knownTypes,w=>w.name===n);if(void 0!==d)return d;throw new Error('Found unknown type "'+n+'" for config option.')}static getTypeValidators(n){const d=f.getType(n.type);if("bool"===d.name||"str"===d.name)return;const w={validators:[],patternHelpText:d.patternHelpText};return d.isNumberType?(n.max&&""!==n.max&&(w.max=n.max,w.validators.push(Hn.kI.max(n.max))),n.min&&""!==n.min?(w.min=n.min,w.validators.push(Hn.kI.min(n.min))):"defaultMin"in d&&(w.min=d.defaultMin,w.validators.push(Hn.kI.min(d.defaultMin))),w.validators.push("float"===n.type?mo.h.decimalNumber():mo.h.number(d.allowsNegative))):"addr"===n.type?w.validators=[mo.h.ip()]:"uuid"===n.type&&(w.validators=[mo.h.uuid()]),w}static getTypeStep(n,d){if(["uint","int","size","secs"].includes(n))return 1;if("float"===n){if(null!==d&&-1!==d.toString().indexOf(".")){const Ze=d.toString().split(".");return Math.pow(10,-Ze[1].length)}return.1}}}return f.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],f})();var Be=o(93614),xt=o(95463);class Dt{constructor(){this.value=[]}}var en=o(64724),vn=o(63622),Gn=o(41582),kn=o(56310),zn=o(94276),jr=o(30839);function kr(f,y){1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,20),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"textarea",21),e._uU(5,"            "),e.qZA(),e.qZA(),e.qZA())}function Gr(f,y){1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,22),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"textarea",23),e._uU(5,"            "),e.qZA(),e.qZA(),e.qZA())}function ci(f,y){1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,24),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",25),e.qZA(),e.qZA())}function Ci(f,y){1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,26),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",27),e.qZA(),e.qZA())}function vi(f,y){if(1&f&&(e.TgZ(0,"span",30),e.TgZ(1,"span",31),e._uU(2),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.Oqu(n)}}function Ai(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,28),e.qZA(),e.TgZ(3,"div",11),e.YNc(4,vi,3,1,"span",29),e.qZA(),e.qZA()),2&f){const n=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",n.configForm.getValue("services"))}}function fo(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",32),e._uU(2),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"select",33),e.TgZ(5,"option",34),e.SDv(6,35),e.qZA(),e.TgZ(7,"option",34),e.SDv(8,36),e.qZA(),e.TgZ(9,"option",34),e.SDv(10,37),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.Q6J("for",n),e.xp6(1),e.hij("",n," "),e.xp6(2),e.Q6J("formControlName",n),e.xp6(1),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngValue",!0),e.xp6(2),e.Q6J("ngValue",!1)}}function po(f,y){if(1&f&&(e.TgZ(0,"span",40),e._uU(1),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.hij(" ",n.patternHelpText," ")}}function No(f,y){if(1&f&&(e.TgZ(0,"span",40),e._uU(1),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.hij(" ",n.patternHelpText," ")}}function wo(f,y){if(1&f&&(e.TgZ(0,"span",40),e.SDv(1,41),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.pQV(n.maxValue),e.QtT(1)}}function oo(f,y){if(1&f&&(e.TgZ(0,"span",40),e.SDv(1,42),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.pQV(n.minValue),e.QtT(1)}}function Oo(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",32),e._uU(2),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",38),e.YNc(5,po,2,1,"span",39),e.YNc(6,No,2,1,"span",39),e.YNc(7,wo,2,1,"span",39),e.YNc(8,oo,2,1,"span",39),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit;e.oxw();const d=e.MAs(2),w=e.oxw();e.xp6(1),e.Q6J("for",n),e.xp6(1),e.hij("",n," "),e.xp6(2),e.Q6J("type",w.inputType)("id",n)("placeholder",w.humanReadableType)("formControlName",n)("step",w.getStep(w.type,w.configForm.getValue(n))),e.xp6(1),e.Q6J("ngIf",w.configForm.showError(n,d,"pattern")),e.xp6(1),e.Q6J("ngIf",w.configForm.showError(n,d,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",w.configForm.showError(n,d,"max")),e.xp6(1),e.Q6J("ngIf",w.configForm.showError(n,d,"min"))}}function Ki(f,y){if(1&f&&(e.ynx(0),e.YNc(1,fo,11,6,"div",13),e.YNc(2,Oo,9,11,"div",13),e.BQk()),2&f){const n=e.oxw(2);e.xp6(1),e.Q6J("ngIf","bool"===n.type),e.xp6(1),e.Q6J("ngIf","bool"!==n.type)}}function Vi(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.ynx(5,6),e._uU(6,"Edit"),e.BQk(),e._uU(7),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.qZA(),e.qZA(),e.YNc(14,kr,6,0,"div",13),e.YNc(15,Gr,6,0,"div",13),e.YNc(16,ci,5,0,"div",13),e.YNc(17,Ci,5,0,"div",13),e.YNc(18,Ai,5,1,"div",13),e.TgZ(19,"div",14),e.TgZ(20,"h3",15),e.SDv(21,16),e.qZA(),e.YNc(22,Ki,3,2,"ng-container",17),e.qZA(),e.qZA(),e.TgZ(23,"div",18),e.TgZ(24,"cd-form-button-panel",19),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw().submit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("formGroup",n.configForm),e.xp6(6),e.hij(" ",n.configForm.getValue("name")," "),e.xp6(7),e.Q6J("ngIf",n.configForm.getValue("desc")),e.xp6(1),e.Q6J("ngIf",n.configForm.getValue("long_desc")),e.xp6(1),e.Q6J("ngIf",""!==n.configForm.getValue("default")),e.xp6(1),e.Q6J("ngIf",""!==n.configForm.getValue("daemon_default")),e.xp6(1),e.Q6J("ngIf",n.configForm.getValue("services").length>0),e.xp6(4),e.Q6J("ngForOf",n.availSections),e.xp6(2),e.Q6J("form",n.configForm)("submitText",n.actionLabels.UPDATE)}}let Wo=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze){super(),this.actionLabels=n,this.route=d,this.router=w,this.configService=re,this.notificationService=Ze,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const n={name:new Hn.NI({value:null}),desc:new Hn.NI({value:null}),long_desc:new Hn.NI({value:null}),values:new Hn.cw({}),default:new Hn.NI({value:null}),daemon_default:new Hn.NI({value:null}),services:new Hn.NI([])};this.availSections.forEach(d=>{n.values.addControl(d,new Hn.NI(null))}),this.configForm=new xt.d(n)}ngOnInit(){this.route.params.subscribe(n=>{this.configService.get(n.name).subscribe(w=>{this.setResponse(w),this.loadingReady()})})}getValidators(n){const d=Re.getTypeValidators(n);if(d)return this.patternHelpText=d.patternHelpText,"max"in d&&""!==d.max&&(this.maxValue=d.max),"min"in d&&""!==d.min&&(this.minValue=d.min),d.validators}getStep(n,d){return Re.getTypeStep(n,d)}setResponse(n){this.response=n;const d=this.getValidators(n);this.configForm.get("name").setValue(n.name),this.configForm.get("desc").setValue(n.desc),this.configForm.get("long_desc").setValue(n.long_desc),this.configForm.get("default").setValue(n.default),this.configForm.get("daemon_default").setValue(n.daemon_default),this.configForm.get("services").setValue(n.services),this.response.value&&this.response.value.forEach(re=>{let Ze=null;Ze="true"===re.value||"false"!==re.value&&re.value,this.configForm.get("values").get(re.section).setValue(Ze)}),this.availSections.forEach(re=>{this.configForm.get("values").get(re).setValidators(d)});const w=Re.getType(n.type);this.type=w.name,this.inputType=w.inputType,this.humanReadableType=w.humanReadable}createRequest(){const n=[];if(this.availSections.forEach(d=>{const w=this.configForm.getValue(d);null!==w&&""!==w&&n.push({section:d,value:w})}),!gn().isEqual(this.response.value,n)){const d=new Dt;return d.name=this.configForm.getValue("name"),d.value=n,d}return null}submit(){const n=this.createRequest();n&&this.configService.create(n).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated config option " + n.name + ""),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(tn.gz),e.Y36(tn.F0),e.Y36(en.e),e.Y36(Zi.g))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-configuration-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr;return y="Name",n="Values",d="Description",w="Long description",re="Default",Ze="Daemon default",Lt="Services",Gt="-- Default --",On="true",fr="false",hr="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",Jr="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","configForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],["i18",""],[1,"card-body"],[1,"form-group","row"],[1,"cd-col-form-label"],y,[1,"cd-col-form-input"],["type","text","id","name","formControlName","name","readonly","",1,"form-control"],["class","form-group row",4,"ngIf"],["formGroupName","values"],[1,"cd-header"],n,[4,"ngFor","ngForOf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],d,["id","desc","formControlName","desc","readonly","",1,"form-control","resize-vertical"],w,["id","long_desc","formControlName","long_desc","readonly","",1,"form-control","resize-vertical"],re,["type","text","id","default","formControlName","default","readonly","",1,"form-control"],Ze,["type","text","id","daemon_default","formControlName","daemon_default","readonly","",1,"form-control"],Lt,["class","form-component-badge",4,"ngFor","ngForOf"],[1,"form-component-badge"],[1,"badge","badge-dark"],[1,"cd-col-form-label",3,"for"],["id","pool","name","pool",1,"form-control",3,"formControlName"],[3,"ngValue"],Gt,On,fr,[1,"form-control",3,"type","id","placeholder","formControlName","step"],["class","invalid-feedback",4,"ngIf"],[1,"invalid-feedback"],hr,Jr]},template:function(n,d){1&n&&e.YNc(0,Vi,25,10,"div",0),2&n&&e.Q6J("cdFormLoading",d.loading)},directives:[vn.y,Hn._Y,Hn.JL,Gn.V,Hn.sg,kn.P,As.o,Hn.Fj,zn.b,Hn.JJ,Hn.u,s.O5,Hn.x0,s.sg,jr.p,Hn.EJ,Hn.YN,Hn.Kr],styles:[".form-component-badge[_ngcontent-%COMP%]{display:block;height:34px}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]}),f})();var Po=o(68962);function ho(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e._UZ(2,"br"),e.qZA()),2&f){const n=y.$implicit,d=y.last;e.xp6(1),e.lnq(" ",n.section,": ",n.value,"",d?"":",","")}}function xo(f,y){if(1&f&&(e.TgZ(0,"span"),e.TgZ(1,"span",23),e.TgZ(2,"span",24),e._uU(3),e.ALo(4,"uppercase"),e.qZA(),e.qZA(),e.qZA()),2&f){const n=y.$implicit,d=e.oxw(2);e.xp6(1),e.s9C("title",d.flags[n]),e.xp6(2),e.Oqu(e.lcZ(4,2,n))}}function Ps(f,y){if(1&f&&(e.TgZ(0,"span"),e.TgZ(1,"span",24),e._uU(2),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.Oqu(n)}}function _n(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"table",1),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",2),e.SDv(5,3),e.qZA(),e.TgZ(6,"td",4),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",5),e.SDv(10,6),e.qZA(),e.TgZ(11,"td"),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",5),e.SDv(15,7),e.qZA(),e.TgZ(16,"td"),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",5),e.SDv(20,8),e.qZA(),e.TgZ(21,"td"),e.YNc(22,ho,3,3,"span",9),e.qZA(),e.qZA(),e.TgZ(23,"tr"),e.TgZ(24,"td",5),e.SDv(25,10),e.qZA(),e.TgZ(26,"td"),e._uU(27),e.qZA(),e.qZA(),e.TgZ(28,"tr"),e.TgZ(29,"td",5),e.SDv(30,11),e.qZA(),e.TgZ(31,"td"),e._uU(32),e.qZA(),e.qZA(),e.TgZ(33,"tr"),e.TgZ(34,"td",5),e.SDv(35,12),e.qZA(),e.TgZ(36,"td"),e._uU(37),e.qZA(),e.qZA(),e.TgZ(38,"tr"),e.TgZ(39,"td",5),e.SDv(40,13),e.qZA(),e.TgZ(41,"td"),e._uU(42),e.qZA(),e.qZA(),e.TgZ(43,"tr"),e.TgZ(44,"td",5),e.SDv(45,14),e.qZA(),e.TgZ(46,"td"),e._uU(47),e.qZA(),e.qZA(),e.TgZ(48,"tr"),e.TgZ(49,"td",5),e.SDv(50,15),e.qZA(),e.TgZ(51,"td"),e.YNc(52,xo,5,4,"span",9),e.qZA(),e.qZA(),e.TgZ(53,"tr"),e.TgZ(54,"td",5),e.SDv(55,16),e.qZA(),e.TgZ(56,"td"),e.YNc(57,Ps,3,1,"span",9),e.qZA(),e.qZA(),e.TgZ(58,"tr"),e.TgZ(59,"td",5),e.SDv(60,17),e.qZA(),e.TgZ(61,"td"),e._uU(62),e.qZA(),e.qZA(),e.TgZ(63,"tr"),e.TgZ(64,"td",5),e.SDv(65,18),e.qZA(),e.TgZ(66,"td"),e._uU(67),e.qZA(),e.qZA(),e.TgZ(68,"tr"),e.TgZ(69,"td",5),e.SDv(70,19),e.qZA(),e.TgZ(71,"td"),e._uU(72),e.ALo(73,"booleanText"),e.qZA(),e.qZA(),e.TgZ(74,"tr"),e.TgZ(75,"td",5),e.SDv(76,20),e.qZA(),e.TgZ(77,"td"),e._uU(78),e.qZA(),e.qZA(),e.TgZ(79,"tr"),e.TgZ(80,"td",5),e.SDv(81,21),e.qZA(),e.TgZ(82,"td"),e._uU(83),e.qZA(),e.qZA(),e.TgZ(84,"tr"),e.TgZ(85,"td",5),e.SDv(86,22),e.qZA(),e.TgZ(87,"td"),e._uU(88),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw();e.xp6(7),e.Oqu(n.selection.name),e.xp6(5),e.Oqu(n.selection.desc),e.xp6(5),e.Oqu(n.selection.long_desc),e.xp6(5),e.Q6J("ngForOf",n.selection.value),e.xp6(5),e.Oqu(n.selection.default),e.xp6(5),e.Oqu(n.selection.daemon_default),e.xp6(5),e.Oqu(n.selection.type),e.xp6(5),e.Oqu(n.selection.min),e.xp6(5),e.Oqu(n.selection.max),e.xp6(5),e.Q6J("ngForOf",n.selection.flags),e.xp6(5),e.Q6J("ngForOf",n.selection.services),e.xp6(5),e.Oqu(n.selection.source),e.xp6(5),e.Oqu(n.selection.level),e.xp6(5),e.Oqu(e.lcZ(73,17,n.selection.can_update_at_runtime)),e.xp6(6),e.Oqu(n.selection.tags),e.xp6(5),e.Oqu(n.selection.enum_values),e.xp6(5),e.Oqu(n.selection.see_also)}}let Hs=(()=>{class f{constructor(){this.flags={runtime:"The value can be updated at runtime.",no_mon_update:"Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line.",startup:"Option takes effect only during daemon startup.",cluster_create:"Option only affects cluster creation.",create:"Option only affects daemon creation."}}ngOnChanges(){this.selection&&(this.selection.services=gn().split(this.selection.services,","))}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-configuration-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs;return y="Name",n="Description",d="Long description",w="Current values",re="Default",Ze="Daemon default",Lt="Type",Gt="Min",On="Max",fr="Flags",hr="Services",Jr="Source",$i="Level",bo="Can be updated at runtime (editable)",_o="Tags",Yi="Enum values",Xs="See also",[[4,"ngIf"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],y,[1,"w-75"],[1,"bold"],n,d,w,[4,"ngFor","ngForOf"],re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,[3,"title"],[1,"badge","badge-dark","mr-2"]]},template:function(n,d){1&n&&e.YNc(0,_n,89,19,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,s.sg],pipes:[Po.T,s.gd],styles:[""]}),f})();const Pa=["confValTpl"],Oa=["confFlagTpl"];function lo(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e._UZ(2,"br"),e.qZA()),2&f){const n=y.$implicit,d=y.last;e.xp6(1),e.lnq(" ",n.section,": ",n.value,"",d?"":",","")}}function ra(f,y){if(1&f&&(e.TgZ(0,"span"),e.YNc(1,lo,3,3,"span",5),e.qZA()),2&f){const n=e.oxw().value;e.xp6(1),e.Q6J("ngForOf",n)}}function ns(f,y){1&f&&e.YNc(0,ra,2,1,"span",4),2&f&&e.Q6J("ngIf",y.value)}let Aa=(()=>{class f extends mi.o{constructor(n,d,w){super(),this.authStorageService=n,this.configurationService=d,this.actionLabels=w,this.data=[],this.icons=eo.P,this.selection=new si.r,this.filters=[{name:"Level",prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(Lt,Gt)=>{let On;var hr;return(hr=On||(On={}))[hr.basic=0]="basic",hr[hr.advanced=1]="advanced",hr[hr.dev=2]="dev",On[Lt.level]<=On[Gt]}},{name:"Service",prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(Lt,Gt)=>Lt.services.includes(Gt)},{name:"Source",prop:"source",filterOptions:["mon"],filterPredicate:(Lt,Gt)=>!!Lt.hasOwnProperty("source")&&Lt.source.includes(Gt)},{name:"Modified",prop:"modified",filterOptions:["yes","no"],filterPredicate:(Lt,Gt)=>!!("yes"===Gt&&Lt.hasOwnProperty("value")||"no"===Gt&&!Lt.hasOwnProperty("value"))}],this.permission=this.authStorageService.getPermissions().configOpt;const re=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().name)}`;this.tableActions=[{permission:"update",icon:eo.P.edit,routerLink:()=>`/configuration/edit/${re()}`,name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:"Name"},{prop:"desc",name:"Description",cellClass:"wrap"},{prop:"value",name:"Current value",cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:"Default",cellClass:"wrap"},{prop:"can_update_at_runtime",name:"Editable",cellTransformation:ii.e.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(n){this.selection=n}getConfigurationList(n){this.configurationService.getConfigData().subscribe(d=>{this.data=d},()=>{n.error()})}isEditable(n){return 1===n.selected.length&&n.selected[0].can_update_at_runtime}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(en.e),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-configuration"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Pa,7),e.Gf(Oa,5)),2&n){let w;e.iGM(w=e.CRH())&&(d.confValTpl=w.first),e.iGM(w=e.CRH())&&(d.confFlagTpl=w.first)}},features:[e.qOj],decls:5,vars:8,consts:[["selectionType","single",3,"data","columns","extraFilterableColumns","hasDetails","fetchData","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["confValTpl",""],[4,"ngIf"],[4,"ngFor","ngForOf"]],template:function(n,d){1&n&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(re){return d.getConfigurationList(re)})("setExpandedRow",function(re){return d.setExpandedRow(re)})("updateSelection",function(re){return d.updateSelection(re)}),e._UZ(1,"cd-table-actions",1),e._UZ(2,"cd-configuration-details",2),e.qZA(),e.YNc(3,ns,1,1,"ng-template",null,3,e.W1O)),2&n&&(e.Q6J("data",d.data)("columns",d.columns)("extraFilterableColumns",d.filters)("hasDetails",!0),e.xp6(1),e.Q6J("permission",d.permission)("selection",d.selection)("tableActions",d.tableActions),e.xp6(1),e.Q6J("selection",d.expandedRow))},directives:[Ui.a,ha.K,Hs,s.O5,s.sg],styles:[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  cd-configuration datatable-body-cell.wrap{word-break:break-all}"]}),f})();var zs=o(35758),La=o(68939),ws=o(25917),Ds=o(88002),Ws=o(42145),Ba=o(548),Zs=o(95242),Ya=o(34022);function Za(f,y,n){return 0===n?[y]:(f.push(y),f)}function Ha(){return function(f,y){return arguments.length>=2?function(d){return(0,Ya.z)((0,Ws.R)(f,y),(0,Ba.h)(1),(0,Zs.d)(y))(d)}:function(d){return(0,Ya.z)((0,Ws.R)((w,re,Ze)=>f(w,re,Ze+1)),(0,Ba.h)(1))(d)}}(Za,[])}var ol=o(19773),Us=o(76189),sl=o(51295);let ac=(()=>{class f{calculateAdditionalData(n){if(!n.life_expectancy_min||!n.life_expectancy_max)return n.state="unknown",n;const d=Gt=>!!Number.parseFloat(Gt),w=(Gt,On)=>Gt&&On&&d(Gt)&&d(On)?In().duration(In()(Gt).diff(In()(On))).asWeeks():null,re=In().duration(In()(In().now()).diff(In()(n.life_expectancy_stamp))).asWeeks(),Ze=w(n.life_expectancy_max,n.life_expectancy_stamp),Lt=w(n.life_expectancy_min,n.life_expectancy_stamp);return n.state=re>1?"stale":null!==Ze&&Ze<=2?"bad":null!==Lt&&Lt<=4?"warning":"good",n.life_expectancy_weeks={max:null!==Ze?Math.round(Ze):null,min:null!==Lt?Math.round(Lt):null},n}readable(n){return n.readableDaemons=n.daemons.join(" "),n}prepareDevice(n){return this.readable(this.calculateAdditionalData(n))}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Zl=(()=>{class f extends Us.S{constructor(n,d){super(),this.http=n,this.deviceService=d,this.baseURL="api/host",this.baseUIURL="ui-api/host",this.predefinedLabels=["mon","mgr","osd","mds","rgw","nfs","iscsi","rbd","grafana"]}list(n){return this.http.get(this.baseURL,{headers:{Accept:"application/vnd.ceph.api.v1.1+json"},params:{facts:n}})}create(n,d,w,re){return this.http.post(this.baseURL,{hostname:n,addr:d,labels:w,status:re},{observe:"response",headers:{Accept:sl.T.cdVersionHeader("0","1")}})}delete(n){return this.http.delete(`${this.baseURL}/${n}`,{observe:"response"})}getDevices(n){return this.http.get(`${this.baseURL}/${n}/devices`).pipe((0,Ds.U)(d=>d.map(w=>this.deviceService.prepareDevice(w))))}getSmartData(n){return this.http.get(`${this.baseURL}/${n}/smart`)}getDaemons(n){return this.http.get(`${this.baseURL}/${n}/daemons`)}getLabels(){return this.http.get(`${this.baseUIURL}/labels`)}update(n,d=!1,w=[],re=!1,Ze=!1,Lt=!1){return this.http.put(`${this.baseURL}/${n}`,{update_labels:d,labels:w,maintenance:re,force:Ze,drain:Lt},{headers:{Accept:this.getVersionHeaderValue(0,1)}})}identifyDevice(n,d,w){return this.http.post(`${this.baseURL}/${n}/identify_device`,{device:d,duration:w})}getInventoryParams(n){let d=new a.LE;return n&&(d=d.append("refresh",gn().toString(n))),d}getInventory(n,d){const w=this.getInventoryParams(d);return this.http.get(`${this.baseURL}/${n}/inventory`,{params:w})}inventoryList(n){const d=this.getInventoryParams(n);return this.http.get(`${this.baseUIURL}/inventory`,{params:d})}inventoryDeviceList(n,d){let w;return w=n?this.getInventory(n,d).pipe(Ha()):this.inventoryList(d),w.pipe((0,ol.zg)(re=>{const Ze=gn().flatMap(re,Lt=>Lt.devices.map(Gt=>(Gt.hostname=Lt.name,Gt.uid=Gt.device_id?`${Gt.device_id}-${Gt.hostname}-${Gt.path}`:`${Gt.hostname}-${Gt.path}`,Gt)));return(0,ws.of)(Ze)}))}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN),e.LFG(ac))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),lc=(()=>{class f{constructor(n,d){this.http=n,this.deviceService=d,this.path="api/osd",this.osdDevices=[],this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:"-- Select the priority --",values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:"Low",values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:"Default",values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:"High",values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(n){const d={method:"drive_groups",data:n,tracking_id:gn().join(gn().map(n,"service_id"),", ")};return this.http.post(this.path,d,{observe:"response"})}getList(){return this.http.get(`${this.path}`)}getOsdSettings(){return this.http.get(`${this.path}/settings`,{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}getDetails(n){return this.http.get(`${this.path}/${n}`)}getSmartData(n){return this.http.get(`${this.path}/${n}/smart`)}scrub(n,d){return this.http.post(`${this.path}/${n}/scrub?deep=${d}`,null)}getFlags(){return this.http.get(`${this.path}/flags`)}updateFlags(n){return this.http.put(`${this.path}/flags`,{flags:n})}updateIndividualFlags(n,d){return this.http.put(`${this.path}/flags/individual`,{flags:n,ids:d})}markOut(n){return this.http.put(`${this.path}/${n}/mark`,{action:"out"})}markIn(n){return this.http.put(`${this.path}/${n}/mark`,{action:"in"})}markDown(n){return this.http.put(`${this.path}/${n}/mark`,{action:"down"})}reweight(n,d){return this.http.post(`${this.path}/${n}/reweight`,{weight:d})}update(n,d){return this.http.put(`${this.path}/${n}`,{device_class:d})}markLost(n){return this.http.put(`${this.path}/${n}/mark`,{action:"lost"})}purge(n){return this.http.post(`${this.path}/${n}/purge`,null)}destroy(n){return this.http.post(`${this.path}/${n}/destroy`,null)}delete(n,d,w){return this.http.delete(`${this.path}/${n}`,{observe:"response",params:{preserve_id:d?"true":"false",force:w?"true":"false"}})}safeToDestroy(n){return this.http.get(`${this.path}/safe_to_destroy?ids=${n}`)}safeToDelete(n){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${n}`)}getDevices(n){return this.http.get(`${this.path}/${n}/devices`).pipe((0,Ds.U)(d=>d.map(w=>this.deviceService.prepareDevice(w))))}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN),e.LFG(ac))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var Va=o(76111),ki=o(32337),Oc=o(26215);const pc=[{stepIndex:1,isComplete:!1}];let pl=(()=>{class f{constructor(){this.currentStep$=new Oc.X(null),this.steps$=new Oc.X(pc),this.currentStep$.next(this.steps$.value[0])}setTotalSteps(n){const d=[];for(let w=1;w<=n;w++)d.push({stepIndex:w,isComplete:!1});this.steps$=new Oc.X(d)}setCurrentStep(n){this.currentStep$.next(n)}getCurrentStep(){return this.currentStep$.asObservable()}getSteps(){return this.steps$.asObservable()}moveToNextStep(){this.currentStep$.next(this.steps$.value[this.currentStep$.value.stepIndex])}moveToPreviousStep(){this.currentStep$.next(this.steps$.value[this.currentStep$.value.stepIndex-1-1])}isLastStep(){return this.currentStep$.value.stepIndex===this.steps$.value.length}isFirstStep(){var n;return(null===(n=this.currentStep$.value)||void 0===n?void 0:n.stepIndex)-1==0}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var _a=o(28211);class iu{constructor(){this.reset(),this.formatterService=new _a.H,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:y=>"hdd"===y.toLowerCase()},"sys_api.size":{name:"size",formatter:y=>this.formatterService.format_number(y,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:`dashboard-${gn().now()}`}}setName(y){this.spec.service_id=y}setHostPattern(y){this.spec.host_pattern=y}setDeviceSelection(y,n){const d=`${y}_devices`;this.spec[d]={},n.forEach(w=>{const re=this.deviceSelectionAttrs[w.prop];re&&(this.spec[d][re.name]=re.formatter?re.formatter(w.value.raw):w.value.raw)})}clearDeviceSelection(y){delete this.spec[`${y}_devices`]}setSlots(y,n){const d=`${y}_slots`;0===n?delete this.spec[d]:this.spec[d]=n}setFeature(y,n){n?this.spec[y]=!0:delete this.spec[y]}}let cc=(()=>{class f{constructor(n){this.http=n,this.baseURL="api/cluster"}getStatus(){return this.http.get(`${this.baseURL}`,{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}updateStatus(n){return this.http.put(`${this.baseURL}`,{status:n},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const Ac=function(f){return{active:f}};function bu(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"ul",4),e.TgZ(1,"li",5),e.TgZ(2,"a",6),e.NdJ("click",function(){const re=e.CHM(n).$implicit;return e.oxw().onStepClick(re)}),e.TgZ(3,"span",7),e.SDv(4,8),e.qZA(),e.TgZ(5,"span"),e.SDv(6,9),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=y.$implicit,d=y.index,w=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(4,Ac,w.currentStep.stepIndex===n.stepIndex)),e.xp6(1),e.Q6J("ngClass",e.VKq(6,Ac,w.currentStep.stepIndex===n.stepIndex)),e.xp6(1),e.pQV(n.stepIndex),e.QtT(4),e.xp6(2),e.pQV(w.stepsTitle[d]),e.QtT(6)}}let ou=(()=>{class f{constructor(n){this.stepsService=n}ngOnInit(){this.stepsService.setTotalSteps(this.stepsTitle.length),this.steps=this.stepsService.getSteps(),this.currentStepSub=this.stepsService.getCurrentStep().subscribe(n=>{this.currentStep=n})}onStepClick(n){this.stepsService.setCurrentStep(n)}ngOnDestroy(){this.currentStepSub.unsubscribe()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(pl))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-wizard"]],inputs:{stepsTitle:"stepsTitle"},decls:5,vars:3,consts:function(){let y,n;return y="" + "\ufffd0\ufffd" + "",n="" + "\ufffd0\ufffd" + "",[[1,"card-body"],[1,"row","m-7"],[1,"col"],["class","nav nav-pills flex-column",4,"ngFor","ngForOf"],[1,"nav","nav-pills","flex-column"],[1,"nav-item"],[1,"nav-link",3,"ngClass","click"],[1,"circle-step",3,"ngClass"],y,n]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"nav",2),e.YNc(3,bu,7,8,"ul",3),e.ALo(4,"async"),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(3),e.Q6J("ngForOf",e.lcZ(4,1,d.steps)))},directives:[s.sg,s.mk],pipes:[s.Ov],styles:[".card-body[_ngcontent-%COMP%]{padding-left:0}span.circle-step[_ngcontent-%COMP%]{background:#adb5bd;border-radius:.8em;color:#fff;display:inline-block;font-weight:bold;line-height:1.6em;margin-right:5px;text-align:center;width:1.6em}span.circle-step.active[_ngcontent-%COMP%]{background-color:#2b99a8}.nav-pills[_ngcontent-%COMP%]   .nav-link[_ngcontent-%COMP%]{background-color:#fff;color:#343a40}.nav-pills[_ngcontent-%COMP%]   .nav-link.active[_ngcontent-%COMP%]{color:#2b99a8}"]}),f})();var xl=o(13472),Vl=o(75319);let el=(()=>{class f{constructor(n){this.http=n,this.url="api/orchestrator",this.disableMessages={noOrchestrator:"The feature is disabled because Orchestrator is not available.",missingFeature:"The Orchestrator backend doesn't support this feature."}}status(){return this.http.get(`${this.url}/status`)}hasFeature(n,d){return gn().every(d,w=>gn().get(n.features,`${w}.available`))}getTableActionDisableDesc(n,d){return!!n&&(n.available?!this.hasFeature(n,d)&&this.disableMessages.missingFeature:this.disableMessages.noOrchestrator)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var tl=o(7022),ml=(()=>{return(f=ml||(ml={})).HOST_LIST="get_hosts",f.HOST_ADD="add_host",f.HOST_REMOVE="remove_host",f.HOST_LABEL_ADD="add_host_label",f.HOST_LABEL_REMOVE="remove_host_label",f.HOST_MAINTENANCE_ENTER="enter_host_maintenance",f.HOST_MAINTENANCE_EXIT="exit_host_maintenance",f.HOST_FACTS="get_facts",f.HOST_DRAIN="drain_host",f.SERVICE_LIST="describe_service",f.SERVICE_CREATE="apply",f.SERVICE_EDIT="apply",f.SERVICE_DELETE="remove_service",f.SERVICE_RELOAD="service_action",f.DAEMON_LIST="list_daemons",f.OSD_GET_REMOVE_STATUS="remove_osds_status",f.OSD_CREATE="apply_drivegroups",f.OSD_DELETE="remove_osds",f.DEVICE_LIST="get_inventory",f.DEVICE_BLINK_LIGHT="blink_device_light",ml;var f})(),bc=o(41039),vl=o(51847),hc=o(33512),Jl=o.n(hc),nl=o(60312),yl=o(18372),El=o(82945),p=o(60192),E=o(10545);function N(f,y){1&f&&(e.TgZ(0,"span",29),e.SDv(1,30),e.qZA())}function $(f,y){1&f&&(e.TgZ(0,"span",29),e.SDv(1,31),e.qZA())}function Q(f,y){1&f&&(e.TgZ(0,"span",29),e.SDv(1,35),e.qZA())}function de(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",32),e.SDv(2,33),e.qZA(),e.TgZ(3,"div",15),e._UZ(4,"input",34),e.YNc(5,Q,2,0,"span",17),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(5),e.Q6J("ngIf",d.hostForm.showError("addr",n,"pattern"))}}function ve(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",5,6),e.TgZ(3,"div",7),e.TgZ(4,"div",8),e.TgZ(5,"label",9),e.ynx(6),e.SDv(7,10),e.BQk(),e.TgZ(8,"cd-helper"),e.TgZ(9,"p"),e.SDv(10,11),e.qZA(),e.TgZ(11,"ul"),e.TgZ(12,"li"),e.tHW(13,12),e._UZ(14,"samp"),e.N_p(),e.qZA(),e.TgZ(15,"li"),e.tHW(16,13),e._UZ(17,"samp"),e.N_p(),e.qZA(),e.TgZ(18,"li"),e.tHW(19,14),e._UZ(20,"samp"),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(21,"div",15),e.TgZ(22,"input",16),e.NdJ("keyup",function(){return e.CHM(n),e.oxw().checkHostNameValue()}),e.qZA(),e.YNc(23,N,2,0,"span",17),e.YNc(24,$,2,0,"span",17),e.qZA(),e.qZA(),e.YNc(25,de,6,1,"div",18),e.TgZ(26,"div",8),e.TgZ(27,"label",19),e.SDv(28,20),e.qZA(),e.TgZ(29,"div",15),e._UZ(30,"cd-select-badges",21),e.qZA(),e.qZA(),e.TgZ(31,"div",8),e.TgZ(32,"div",22),e.TgZ(33,"div",23),e._UZ(34,"input",24),e.TgZ(35,"label",25),e.SDv(36,26),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(37,"div",27),e.TgZ(38,"cd-form-button-panel",28),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw().submit()}),e.ALo(39,"titlecase"),e.ALo(40,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(2),d=e.oxw();e.xp6(1),e.Q6J("formGroup",d.hostForm),e.xp6(22),e.Q6J("ngIf",d.hostForm.showError("hostname",n,"required")),e.xp6(1),e.Q6J("ngIf",d.hostForm.showError("hostname",n,"uniqueName")),e.xp6(1),e.Q6J("ngIf",!d.hostPattern),e.xp6(5),e.Q6J("data",d.hostForm.controls.labels.value)("options",d.labelsOption)("customBadges",!0)("messages",d.messages),e.xp6(8),e.Q6J("form",d.hostForm)("submitText",e.lcZ(39,10,d.action)+" "+e.lcZ(40,12,d.resource))}}let qe=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze){super(),this.router=n,this.actionLabels=d,this.hostService=w,this.taskWrapper=re,this.activeModal=Ze,this.hostnameArray=[],this.hostPattern=!1,this.labelsOption=[],this.messages=new tl.a({empty:"There are no labels.",filter:"Filter or add labels",add:"Add label"}),this.resource="host",this.action=this.actionLabels.ADD}ngOnInit(){this.router.url.includes("hosts")&&(this.pageURL="hosts"),this.createForm(),this.hostService.list("false").subscribe(n=>{this.hostnames=n.map(d=>d.hostname),this.loadingReady()}),this.hostService.getLabels().subscribe(n=>{const d=new Set(n.concat(this.hostService.predefinedLabels));this.labelsOption=Array.from(d).map(w=>({enabled:!0,name:w,selected:!1,description:null}))})}checkHostNameValue(){this.hostPattern=!!this.hostForm.get("hostname").value.match(/[()\[\]{},]/g)}createForm(){this.hostForm=new xt.d({hostname:new Hn.NI("",{validators:[Hn.kI.required,mo.h.custom("uniqueName",n=>this.hostnames&&-1!==this.hostnames.indexOf(n))]}),addr:new Hn.NI("",{validators:[mo.h.ip()]}),labels:new Hn.NI([]),maintenance:new Hn.NI({value:!1,disabled:"hosts"!==this.pageURL})})}isCommaSeparatedPattern(n){return n.includes(",")}isRangeTypePattern(n){return n.includes("[")&&n.includes("]")&&!n.match(/(?![^(]*\)),/g)}replaceBraces(n){return n.replace(/(\d)\s*-\s*(\d)/g,"$1..$2").replace(/\(/g,"{").replace(/\)/g,"}").replace(/\[/g,"{").replace(/]/g,"}")}checkHostNamePattern(n){if(this.isRangeTypePattern(n)){const d=this.replaceBraces(n);this.hostnameArray=Jl()(d)}else if(this.isCommaSeparatedPattern(n)){let d=[];d=n.split(","),d.forEach(w=>{if(this.isRangeTypePattern(w)){const re=this.replaceBraces(w);this.hostnameArray=this.hostnameArray.concat(Jl()(re))}else this.hostnameArray.push(w)})}else this.hostnameArray.push(n)}submit(){const n=this.hostForm.get("hostname").value;this.checkHostNamePattern(n),this.addr=this.hostForm.get("addr").value,this.status=this.hostForm.get("maintenance").value?"maintenance":"",this.allLabels=this.hostForm.get("labels").value,"hosts"!==this.pageURL&&!this.allLabels.includes("_no_schedule")&&this.allLabels.push("_no_schedule"),this.hostnameArray.forEach(d=>{this.taskWrapper.wrapTaskAroundCall({task:new Va.R("host/"+uo.MQ.ADD,{hostname:d}),call:this.hostService.create(d,this.addr,this.allLabels,this.status)}).subscribe({error:()=>{this.hostForm.setErrors({cdSubmitButton:!0})},complete:()=>{"hosts"===this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):this.activeModal.close()}})})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0),e.Y36(uo.p4),e.Y36(Zl),e.Y36(ki.P),e.Y36(Br.Kz))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-host-form"]],features:[e.qOj],decls:7,vars:9,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Hostname",d="To add multiple hosts at once, you can enter:",w="a comma-separated list of hostnames " + "\ufffd#14\ufffd" + "(e.g.: example-01,example-02,example-03)" + "\ufffd/#14\ufffd" + ",",re="a range expression " + "\ufffd#17\ufffd" + "(e.g.: example-[01-03].ceph)" + "\ufffd/#17\ufffd" + ",",Ze="a comma separated range expression " + "\ufffd#20\ufffd" + "(e.g.: example-[01-05].lab.com,example2-[1-4].lab.com,example3-[001-006].lab.com)" + "\ufffd/#20\ufffd" + "",Lt="Labels",Gt="Maintenance Mode",On="This field is required.",fr="The chosen hostname is already in use.",hr="Network address",Jr="The value is not a valid IP address.",[[3,"pageURL","modalRef"],[1,"modal-title"],y,[1,"modal-content"],[4,"cdFormLoading"],["name","hostForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","hostname",1,"cd-col-form-label","required"],n,d,w,re,Ze,[1,"cd-col-form-input"],["type","text","placeholder","mon-123","id","hostname","name","hostname","formControlName","hostname","autofocus","",1,"form-control",3,"keyup"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],["for","labels",1,"cd-col-form-label"],Lt,["id","labels",3,"data","options","customBadges","messages"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","maintenance","type","checkbox","formControlName","maintenance",1,"custom-control-input"],["for","maintenance",1,"custom-control-label"],Gt,[1,"modal-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],On,fr,["for","addr",1,"cd-col-form-label"],hr,["type","text","placeholder","192.168.0.1","id","addr","name","addr","formControlName","addr",1,"form-control"],Jr]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.qZA(),e.ynx(5,3),e.YNc(6,ve,41,14,"div",4),e.BQk(),e.qZA()),2&n&&(e.Q6J("pageURL",d.pageURL)("modalRef",d.activeModal),e.xp6(4),e.pQV(e.lcZ(3,5,d.action))(e.lcZ(4,7,d.resource)),e.QtT(2),e.xp6(2),e.Q6J("cdFormLoading",d.loading))},directives:[nl.z,vn.y,Hn._Y,Hn.JL,Gn.V,Hn.sg,kn.P,yl.S,As.o,Hn.Fj,zn.b,Hn.JJ,Hn.u,El.U,s.O5,p.m,Hn.Wl,jr.p],pipes:[s.rS,E.m],styles:[""]}),f})();var De=o(34501);const _t=["deviceLocation"],Yt=["lifeExpectancy"],Zt=["lifeExpectancyTimestamp"];function wn(f,y){if(1&f&&e._UZ(0,"cd-table",5),2&f){const n=e.oxw();e.Q6J("data",n.devices)("columns",n.columns)}}function cr(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",6),e.SDv(1,7),e.qZA())}function sr(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.Oqu(n.dev)}}function Tr(f,y){1&f&&e.YNc(0,sr,2,1,"span",8),2&f&&e.Q6J("ngForOf",y.value)}function Yr(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&f){const n=e.oxw().value,d=e.oxw();e.xp6(1),e.hij("> ",e.xi3(2,1,n.min,d.translationMapping),"")}}function Pi(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&f){const n=e.oxw().value,d=e.oxw();e.xp6(1),e.hij("< ",e.xi3(2,1,n.max,d.translationMapping),"")}}function yo(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&f){const n=e.oxw().value,d=e.oxw();e.xp6(1),e.AsE("",n.min," to ",e.xi3(2,2,n.max,d.translationMapping),"")}}function Co(f,y){if(1&f&&(e.YNc(0,Yr,3,4,"span",9),e.YNc(1,Pi,3,4,"span",9),e.YNc(2,yo,3,5,"span",9)),2&f){const n=y.value;e.Q6J("ngIf",n.min&&!n.max),e.xp6(1),e.Q6J("ngIf",n.max&&!n.min),e.xp6(1),e.Q6J("ngIf",n.max&&n.min)}}function Xo(f,y){1&f&&e._uU(0),2&f&&e.hij(" ",y.value,"\n")}let ts=(()=>{class f{constructor(n,d,w){this.hostService=n,this.datePipe=d,this.osdService=w,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){this.columns=[{prop:"devid",name:"Device ID",minWidth:200},{prop:"state",name:"State of Health",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{map:{good:{value:"Good",class:"badge-success"},warning:{value:"Warning",class:"badge-warning"},bad:{value:"Bad",class:"badge-danger"},stale:{value:"Stale",class:"badge-info"},unknown:{value:"Unknown",class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:"Life Expectancy",cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:"Prediction Creation Date",cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:"Device Name",cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:"Daemons"}]}ngOnChanges(){const n=d=>this.devices=d;this.hostname?this.hostService.getDevices(this.hostname).subscribe(n):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(n)}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Zl),e.Y36(s.uU),e.Y36(lc))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-device-list"]],viewQuery:function(n,d){if(1&n&&(e.Gf(_t,7),e.Gf(Yt,7),e.Gf(Zt,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.locationTemplate=w.first),e.iGM(w=e.CRH())&&(d.lifeExpectancyTemplate=w.first),e.iGM(w=e.CRH())&&(d.lifeExpectancyTimestampTemplate=w.first)}},inputs:{hostname:"hostname",osdId:"osdId"},features:[e.TTD],decls:8,vars:2,consts:function(){let y;return y="Neither hostname nor OSD ID given",[[3,"data","columns",4,"ngIf"],["type","warning",4,"ngIf"],["deviceLocation",""],["lifeExpectancy",""],["lifeExpectancyTimestamp",""],[3,"data","columns"],["type","warning"],y,[4,"ngFor","ngForOf"],[4,"ngIf"]]},template:function(n,d){1&n&&(e.YNc(0,wn,1,2,"cd-table",0),e.YNc(1,cr,2,0,"cd-alert-panel",1),e.YNc(2,Tr,1,1,"ng-template",null,2,e.W1O),e.YNc(4,Co,3,3,"ng-template",null,3,e.W1O),e.YNc(6,Xo,1,1,"ng-template",null,4,e.W1O)),2&n&&(e.Q6J("ngIf",d.hostname||null!==d.osdId),e.xp6(1),e.Q6J("ngIf",""===d.hostname&&null===d.osdId))},directives:[s.O5,Ui.a,De.G,s.sg],pipes:[s.Gx],styles:[""]}),f})();var _s=o(30490);function Ts(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",2),e.SDv(1,3),e.qZA())}function Ms(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,4),e._UZ(2,"cd-doc",5),e.N_p(),e.qZA())}let xs=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-orchestrator-doc-panel"]],inputs:{missingFeatures:"missingFeatures"},decls:3,vars:2,consts:function(){let y,n;return y="The feature is not supported in the current Orchestrator.",n="Orchestrator is not available. Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to configure and enable the functionality.",[["type","info",4,"ngIf","ngIfElse"],["elseBlock",""],["type","info"],y,n,["section","orch"]]},template:function(n,d){if(1&n&&(e.YNc(0,Ts,2,0,"cd-alert-panel",0),e.YNc(1,Ms,3,0,"ng-template",null,1,e.W1O)),2&n){const w=e.MAs(2);e.Q6J("ngIf",d.missingFeatures)("ngIfElse",w)}},directives:[s.O5,De.G,_s.K],styles:[""]}),f})(),ya=(()=>{class f{constructor(n,d,w,re,Ze,Lt){this.authStorageService=n,this.dimlessBinary=d,this.modalService=w,this.notificationService=re,this.orchService=Ze,this.hostService=Lt,this.devices=[],this.showAvailDeviceOnly=!1,this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new e.vpe,this.fetchInventory=new e.vpe,this.icons=eo.P,this.columns=[],this.selection=new si.r,this.orchStatus=void 0,this.actionOrchFeatures={identify:[ml.DEVICE_BLINK_LIGHT]}}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:eo.P.show,click:()=>this.identifyDevice(),name:"Identify",disable:d=>this.getDisable("identify",d),canBePrimary:d=>!d.hasSingleSelection,visible:()=>gn().isString(this.selectionType)}];const n=[{name:"Hostname",prop:"hostname",flexGrow:1},{name:"Device path",prop:"path",flexGrow:1},{name:"Type",prop:"human_readable_type",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:"Available",prop:"available",flexGrow:1,cellClass:"text-center",cellTransformation:ii.e.checkIcon},{name:"Vendor",prop:"sys_api.vendor",flexGrow:1},{name:"Model",prop:"sys_api.model",flexGrow:1},{name:"Size",prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:"OSDs",prop:"osd_ids",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=n.filter(d=>!this.hiddenColumns.includes(d.prop)),gn().forEach(this.filterColumns,d=>{const w=gn().find(this.columns,{prop:d});w&&(w.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}getDevices(){this.showAvailDeviceOnly?this.hostService.inventoryDeviceList().subscribe(n=>{this.devices=gn().filter(n,"available"),this.devices=[...this.devices]},()=>{this.devices=[]}):this.devices=[...this.devices]}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(n){this.filterChange.emit(n)}getDisable(n,d){return!d.hasSingleSelection||this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[n])}updateSelection(n){this.selection=n}identifyDevice(){const n=this.selection.first(),d=n.hostname,w=n.path||n.device_id;this.modalService.show(Hl.X,{titleText:"Identify device " + w + "",message:"Please enter the duration how long to blink the LED.",fields:[{type:"select",name:"duration",value:300,required:!0,typeConfig:{options:[{text:"1 minute",value:60},{text:"2 minutes",value:120},{text:"5 minutes",value:300},{text:"10 minutes",value:600},{text:"15 minutes",value:900}]}}],submitButtonText:"Execute",onSubmit:re=>{this.hostService.identifyDevice(d,w,re.duration).subscribe(()=>{this.notificationService.show(Ho.k.success,"Identifying '" + w + "' started on host '" + d + "'")})}})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Se.$),e.Y36(na.Z),e.Y36(Zi.g),e.Y36(el),e.Y36(Zl))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-inventory-devices"]],viewQuery:function(n,d){if(1&n&&e.Gf(Ui.a,7),2&n){let w;e.iGM(w=e.CRH())&&(d.table=w.first)}},inputs:{devices:"devices",showAvailDeviceOnly:"showAvailDeviceOnly",hiddenColumns:"hiddenColumns",filterColumns:"filterColumns",selectionType:"selectionType",orchStatus:"orchStatus"},outputs:{filterChange:"filterChange",fetchInventory:"fetchInventory"},decls:2,vars:8,consts:[["identifier","uid","columnMode","flex",3,"data","columns","forceIdentifier","selectionType","searchField","fetchData","updateSelection","columnFiltersChanged"],[1,"table-actions",3,"permission","selection","tableActions"]],template:function(n,d){1&n&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return d.getDevices()})("updateSelection",function(re){return d.updateSelection(re)})("columnFiltersChanged",function(re){return d.onColumnFiltersChanged(re)}),e._UZ(1,"cd-table-actions",1),e.qZA()),2&n&&(e.Q6J("data",d.devices)("columns",d.columns)("forceIdentifier",!0)("selectionType",d.selectionType)("searchField",!1),e.xp6(1),e.Q6J("permission",d.permission)("selection",d.selection)("tableActions",d.tableActions))},directives:[Ui.a,ha.K],styles:[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]}),f})();function hl(f,y){1&f&&e._UZ(0,"cd-orchestrator-doc-panel")}const Ga=function(){return[]},Qa=function(){return["hostname"]};function rl(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"legend"),e.SDv(2,1),e.qZA(),e.TgZ(3,"div",2),e.TgZ(4,"div",3),e.TgZ(5,"cd-inventory-devices",4),e.NdJ("fetchInventory",function(){return e.CHM(n),e.oxw().refresh()}),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&f){const n=e.oxw();e.xp6(5),e.Q6J("devices",n.devices)("hiddenColumns",void 0===n.hostname?e.DdM(3,Ga):e.DdM(4,Qa))("orchStatus",n.orchStatus)}}let Gl=(()=>{class f{constructor(n,d,w){this.orchService=n,this.hostService=d,this.ngZone=w,this.reloadInterval=5e3,this.firstRefresh=!0,this.icons=eo.P,this.showDocPanel=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(n=>{this.orchStatus=n,this.showDocPanel=!n.available,n.available&&this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=(0,io.H)(this.reloadInterval,this.reloadInterval).subscribe(()=>{this.ngZone.run(()=>{this.getInventory(!1)})})})})}ngOnDestroy(){var n;null===(n=this.reloadSubscriber)||void 0===n||n.unsubscribe()}ngOnChanges(){var n;(null===(n=this.orchStatus)||void 0===n?void 0:n.available)&&(this.devices=[],this.getInventory(!1))}getInventory(n){""!==this.hostname&&this.hostService.inventoryDeviceList(this.hostname,n).subscribe(d=>{this.devices=d},()=>{this.devices=[]})}refresh(){this.getInventory(!this.firstRefresh),this.firstRefresh=!1}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(el),e.Y36(Zl),e.Y36(e.R0b))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-inventory"]],inputs:{hostname:"hostname"},features:[e.TTD],decls:2,vars:2,consts:function(){let y;return y="Physical Disks",[[4,"ngIf"],y,[1,"row"],[1,"col-md-12"],["selectionType","single",3,"devices","hiddenColumns","orchStatus","fetchInventory"]]},template:function(n,d){1&n&&(e.YNc(0,hl,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,rl,6,5,"ng-container",0)),2&n&&(e.Q6J("ngIf",d.showDocPanel),e.xp6(1),e.Q6J("ngIf",null==d.orchStatus?null:d.orchStatus.available))},directives:[s.O5,xs,ya],styles:[""]}),f})();var _c=o(15257);let $s=class{constructor(y){this.http=y,this.url="api/daemon"}action(y,n){return this.http.put(`${this.url}/${y}`,{action:n,container_image:null},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"},observe:"response"})}};$s.\u0275fac=function(y){return new(y||$s)(e.LFG(a.eN))},$s.\u0275prov=e.Yz7({token:$s,factory:$s.\u0275fac,providedIn:"root"}),$s=(0,xr.gn)([Zr.o,(0,xr.w6)("design:paramtypes",[a.eN])],$s);var X=o(90068);let me=(()=>{class f{constructor(n){this.http=n,this.url="api/service"}list(n){const d=n?{params:(new a.LE).set("service_name",n)}:{};return this.http.get(this.url,d)}getDaemons(n){return this.http.get(`${this.url}/${n}/daemons`)}create(n){return this.http.post(this.url,{service_name:n.service_id?`${n.service_type}.${n.service_id}`:n.service_type,service_spec:n},{observe:"response"})}delete(n){return this.http.delete(`${this.url}/${n}`,{observe:"response"})}getKnownTypes(){return this.http.get(`${this.url}/known_types`)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var yt=o(37496);const qt=["statusTpl"],xn=["listTpl"],Ar=["cpuTpl"],xi=["daemonsTable"];function fs(f,y){1&f&&e._UZ(0,"cd-orchestrator-doc-panel")}function aa(f,y){1&f&&e.GkF(0)}function za(f,y){if(1&f&&(e.TgZ(0,"div"),e.YNc(1,aa,1,0,"ng-container",7),e.qZA()),2&f){e.oxw();const n=e.MAs(9);e.xp6(1),e.Q6J("ngTemplateOutlet",n)}}function gc(f,y){1&f&&e.GkF(0)}function Ql(f,y){if(1&f&&e.YNc(0,gc,1,0,"ng-container",7),2&f){e.oxw(2);const n=e.MAs(9);e.Q6J("ngTemplateOutlet",n)}}function Ec(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",18,19),e.NdJ("fetchData",function(w){return e.CHM(n),e.oxw(3).getServices(w)}),e.qZA()}if(2&f){const n=e.oxw(3);e.Q6J("data",n.services)("columns",n.serviceColumns)}}function Gu(f,y){if(1&f&&e.YNc(0,Ec,2,2,"cd-table",17),2&f){const n=e.oxw(2);e.Q6J("ngIf",n.hasOrchestrator)}}function Sd(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",8,9),e.TgZ(3,"li",10),e.TgZ(4,"a",11),e.SDv(5,12),e.qZA(),e.YNc(6,Ql,1,1,"ng-template",13),e.qZA(),e.TgZ(7,"li",14),e.TgZ(8,"a",11),e.SDv(9,15),e.qZA(),e.YNc(10,Gu,1,1,"ng-template",13),e.qZA(),e.qZA(),e._UZ(11,"div",16),e.BQk()),2&f){const n=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",n)}}function rp(f,y){if(1&f&&(e.TgZ(0,"span",20),e.ALo(1,"pipeFunction"),e._uU(2),e.qZA()),2&f){const n=y.row,d=e.oxw();e.Q6J("ngClass",e.xi3(1,2,n,d.getStatusClass)),e.xp6(2),e.hij(" ",n.status_desc," ")}}const Md=function(f){return[f]};function ad(f,y){if(1&f&&(e.TgZ(0,"span"),e._UZ(1,"i",27),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,Md,n.icons.infoCircle))}}function xu(f,y){if(1&f&&(e.TgZ(0,"span"),e._UZ(1,"i",27),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,Md,n.icons.warning))}}function ef(f,y){if(1&f&&(e.TgZ(0,"li",25),e.TgZ(1,"b"),e._uU(2),e.ALo(3,"relativeDate"),e.qZA(),e.TgZ(4,"span",26),e._uU(5),e.qZA(),e._UZ(6,"br"),e.YNc(7,ad,2,3,"span",0),e.YNc(8,xu,2,3,"span",0),e._uU(9),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.hij("",e.lcZ(3,5,n.created)," - "),e.xp6(3),e.Oqu(n.subject),e.xp6(2),e.Q6J("ngIf","INFO"===n.level),e.xp6(1),e.Q6J("ngIf","ERROR"===n.level),e.xp6(1),e.hij(" ",n.message," ")}}function Od(f,y){if(1&f&&(e.TgZ(0,"ul",23),e.YNc(1,ef,10,7,"li",24),e.qZA()),2&f){const n=e.oxw().value,d=e.oxw();e.xp6(1),e.Q6J("ngForOf",n)("ngForTrackBy",d.trackByFn)}}function Eu(f,y){1&f&&(e.TgZ(0,"div",25),e.TgZ(1,"span"),e._uU(2,"No data available"),e.qZA(),e.qZA())}function tf(f,y){if(1&f&&e.YNc(0,Eu,3,0,"div",28),2&f){const n=e.oxw().value;e.Q6J("ngIf",0===(null==n?null:n.length))}}function Is(f,y){if(1&f&&(e.YNc(0,Od,2,2,"ul",21),e.YNc(1,tf,1,1,"ng-template",null,22,e.W1O)),2&f){const n=y.value,d=e.MAs(2);e.Q6J("ngIf",null==n?null:n.length)("ngIfElse",d)}}function Ic(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",30,31),e.NdJ("fetchData",function(w){return e.CHM(n),e.oxw(2).getDaemons(w)})("updateSelection",function(w){return e.CHM(n),e.oxw(2).updateSelection(w)}),e._UZ(2,"cd-table-actions",32),e.qZA()}if(2&f){const n=e.oxw(2);e.Q6J("data",n.daemons)("columns",n.columns),e.xp6(2),e.Q6J("selection",n.selection)("permission",n.permissions.hosts)("tableActions",n.tableActions)}}function Nf(f,y){if(1&f&&e.YNc(0,Ic,3,5,"cd-table",29),2&f){const n=e.oxw();e.Q6J("ngIf",n.hasOrchestrator)}}function ld(f,y){if(1&f&&e._UZ(0,"cd-usage-bar",33),2&f){const n=y.row,d=e.oxw();e.Q6J("total",d.total)("calculatePerc",!1)("used",n.cpu_percentage)("isBinary",!1)("warningThreshold",d.warningThreshold)("errorThreshold",d.errorThreshold)}}let Jc=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt,On,fr){this.hostService=n,this.cephServiceService=d,this.orchService=w,this.relativeDatePipe=re,this.dimlessBinary=Ze,this.actionLabels=Lt,this.authStorageService=Gt,this.daemonService=On,this.notificationService=fr,this.hiddenColumns=[],this.total=100,this.warningThreshold=.8,this.errorThreshold=.9,this.icons=eo.P,this.daemons=[],this.services=[],this.columns=[],this.serviceColumns=[],this.selection=new si.r,this.hasOrchestrator=!1,this.showDocPanel=!1}ngOnInit(){this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"update",icon:eo.P.start,click:()=>this.daemonAction("start"),name:this.actionLabels.START,disable:()=>this.actionDisabled("start")},{permission:"update",icon:eo.P.stop,click:()=>this.daemonAction("stop"),name:this.actionLabels.STOP,disable:()=>this.actionDisabled("stop")},{permission:"update",icon:eo.P.restart,click:()=>this.daemonAction("restart"),name:this.actionLabels.RESTART,disable:()=>this.actionDisabled("restart")},{permission:"update",icon:eo.P.deploy,click:()=>this.daemonAction("redeploy"),name:this.actionLabels.REDEPLOY,disable:()=>this.actionDisabled("redeploy")}],this.columns=[{name:"Hostname",prop:"hostname",flexGrow:2,filterable:!0},{name:"Daemon name",prop:"daemon_name",flexGrow:1,filterable:!0},{name:"Version",prop:"version",flexGrow:1,filterable:!0},{name:"Status",prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:"Last Refreshed",prop:"last_refresh",pipe:this.relativeDatePipe,flexGrow:1},{name:"CPU Usage",prop:"cpu_percentage",flexGrow:1,cellTemplate:this.cpuTpl},{name:"Memory Usage",prop:"memory_usage",flexGrow:1,pipe:this.dimlessBinary,cellClass:"text-right"},{name:"Daemon Events",prop:"events",flexGrow:2,cellTemplate:this.listTpl}],this.serviceColumns=[{name:"Service Name",prop:"service_name",flexGrow:2,filterable:!0},{name:"Service Type",prop:"service_type",flexGrow:1,filterable:!0},{name:"Service Events",prop:"events",flexGrow:5,cellTemplate:this.listTpl}],this.orchService.status().subscribe(n=>{this.hasOrchestrator=n.available,this.showDocPanel=!n.available}),this.columns=this.columns.filter(n=>!this.hiddenColumns.includes(n.prop))}ngOnChanges(){gn().isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(n=>{this.daemonsTable=n.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe(),this.serviceSub&&this.serviceSub.unsubscribe()}getStatusClass(n){return gn().get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},n.status,"badge-dark")}getDaemons(n){let d;if(this.hostname)d=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);d=this.cephServiceService.getDaemons(this.serviceName)}d.subscribe(w=>{this.daemons=w,this.sortDaemonEvents()},()=>{this.daemons=[],n.error()})}sortDaemonEvents(){this.daemons.forEach(n=>{var d;null===(d=n.events)||void 0===d||d.sort((w,re)=>new Date(re.created).getTime()-new Date(w.created).getTime())})}getServices(n){this.serviceSub=this.cephServiceService.list(this.serviceName).subscribe(d=>{this.services=d},()=>{this.services=[],n.error()})}trackByFn(n,d){return d.created}updateSelection(n){this.selection=n}daemonAction(n){var d;this.daemonService.action(null===(d=this.selection.first())||void 0===d?void 0:d.daemon_name,n).pipe((0,_c.q)(1)).subscribe({next:w=>{this.notificationService.show(Ho.k.success,`Daemon ${n} scheduled`,w.body.toString())},error:w=>{this.notificationService.show(Ho.k.error,"Daemon action failed",w.body.toString())}})}actionDisabled(n){var d;if(null===(d=this.selection)||void 0===d?void 0:d.hasSelection){const w=this.selection.selected[0];if("mon"===w.daemon_type||"mgr"===w.daemon_type)return!0;switch(n){case"start":if("running"===w.status_desc)return!0;break;case"stop":if("stopped"===w.status_desc)return!0}return!1}return!0}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Zl),e.Y36(me),e.Y36(el),e.Y36(X.h),e.Y36(Se.$),e.Y36(uo.p4),e.Y36(hi.j),e.Y36($s),e.Y36(Zi.g))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-service-daemon-list"]],viewQuery:function(n,d){if(1&n&&(e.Gf(qt,7),e.Gf(xn,7),e.Gf(Ar,7),e.Gf(xi,5)),2&n){let w;e.iGM(w=e.CRH())&&(d.statusTpl=w.first),e.iGM(w=e.CRH())&&(d.listTpl=w.first),e.iGM(w=e.CRH())&&(d.cpuTpl=w.first),e.iGM(w=e.CRH())&&(d.daemonsTableTpls=w)}},inputs:{serviceName:"serviceName",hostname:"hostname",hiddenColumns:"hiddenColumns",flag:"flag"},features:[e.TTD],decls:12,vars:3,consts:function(){let y,n;return y="Details",n="Service Events",[[4,"ngIf"],[4,"ngIf","ngIfElse"],["serviceDetailsTpl",""],["statusTpl",""],["listTpl",""],["serviceDaemonDetailsTpl",""],["cpuTpl",""],[4,"ngTemplateOutlet"],["ngbNav","","cdStatefulTab","service-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","service_events"],n,[3,"ngbNavOutlet"],["columnMode","flex",3,"data","columns","fetchData",4,"ngIf"],["columnMode","flex",3,"data","columns","fetchData"],["serviceTable",""],[1,"badge",3,"ngClass"],["class","list-group list-group-flush",4,"ngIf","ngIfElse"],["noEventsAvailable",""],[1,"list-group","list-group-flush"],["class","list-group-item",4,"ngFor","ngForOf","ngForTrackBy"],[1,"list-group-item"],[1,"badge","badge-info"],["aria-hidden","true",3,"ngClass"],["class","list-group-item",4,"ngIf"],["selectionType","single","columnMode","flex","identifier","daemon_name",3,"data","columns","fetchData","updateSelection",4,"ngIf"],["selectionType","single","columnMode","flex","identifier","daemon_name",3,"data","columns","fetchData","updateSelection"],["daemonsTable",""],["id","service-daemon-list-actions",1,"table-actions",3,"selection","permission","tableActions"],[3,"total","calculatePerc","used","isBinary","warningThreshold","errorThreshold"]]},template:function(n,d){if(1&n&&(e.YNc(0,fs,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,za,2,1,"div",1),e.YNc(2,Sd,12,1,"ng-template",null,2,e.W1O),e.YNc(4,rp,3,5,"ng-template",null,3,e.W1O),e.YNc(6,Is,3,2,"ng-template",null,4,e.W1O),e.YNc(8,Nf,1,1,"ng-template",null,5,e.W1O),e.YNc(10,ld,1,6,"ng-template",null,6,e.W1O)),2&n){const w=e.MAs(3);e.Q6J("ngIf",d.showDocPanel),e.xp6(1),e.Q6J("ngIf","hostDetails"===d.flag)("ngIfElse",w)}},directives:[s.O5,xs,s.tP,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,Ui.a,s.mk,s.sg,ha.K,Un.O],pipes:[yt.i,X.h],styles:[".fa-info-circle[_ngcontent-%COMP%]{color:#2b99a8}.fa-exclamation-triangle[_ngcontent-%COMP%]{color:#ef5c55}.list-group-item[_ngcontent-%COMP%]{background-color:transparent;border-width:0}"]}),f})();var Tu=o(8958);const nf=["innerNav"];function Lc(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",5),e.SDv(1,6),e.qZA())}function Pf(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",7),e.SDv(1,8),e.qZA())}function cd(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",10),e.SDv(1,11),e.qZA())}function rf(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",20),e._uU(2),e.qZA(),e.BQk()),2&f){const n=e.oxw(2).$implicit;e.xp6(2),e.Oqu(n.value.userMessage)}}function $d(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",23),e.SDv(1,24),e.qZA())}function Ad(f,y){1&f&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",26),e.SDv(2,27),e.qZA(),e.BQk())}function Fc(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",28),e.SDv(1,29),e.qZA())}function hu(f,y){if(1&f&&(e.YNc(0,Ad,3,0,"ng-container",0),e.YNc(1,Fc,2,0,"ng-template",null,25,e.W1O)),2&f){const n=e.MAs(2),d=e.oxw(3).$implicit;e.Q6J("ngIf",d.value.info.smart_status.passed)("ngIfElse",n)}}function Hd(f,y){if(1&f&&(e.YNc(0,$d,2,0,"cd-alert-panel",21),e.ALo(1,"pipeFunction"),e.YNc(2,hu,3,2,"ng-template",null,22,e.W1O)),2&f){const n=e.MAs(3),d=e.oxw(2).$implicit,w=e.oxw(4);e.Q6J("ngIf",e.xi3(1,2,null==d.value.info?null:d.value.info.smart_status,w.isEmpty))("ngIfElse",n)}}function ud(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",36),2&f){const n=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",n.value.info)}}function wd(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",37),e.SDv(1,38),e.qZA())}function If(f,y){if(1&f&&(e.YNc(0,ud,1,2,"cd-table-key-value",34),e.ALo(1,"pipeFunction"),e.YNc(2,wd,2,0,"cd-alert-panel",35),e.ALo(3,"pipeFunction")),2&f){const n=e.oxw(3).$implicit,d=e.oxw(4);e.Q6J("ngIf",!e.xi3(1,2,n.value.info,d.isEmpty)),e.xp6(2),e.Q6J("ngIf",e.xi3(3,5,n.value.info,d.isEmpty))}}function Cu(f,y){if(1&f&&e._UZ(0,"cd-table",42),2&f){const n=e.oxw(4).$implicit,d=e.oxw(4);e.Q6J("data",n.value.smart.attributes.table)("columns",d.smartDataColumns)}}function dd(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",43),2&f){const n=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",n.value.smart)}}function kc(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",43),2&f){const n=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",n.value.smart.nvmeData)}}function wc(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",44),e.SDv(1,45),e.qZA())}function Yc(f,y){if(1&f&&(e.YNc(0,Cu,1,2,"cd-table",39),e.YNc(1,dd,1,2,"cd-table-key-value",40),e.YNc(2,kc,1,2,"cd-table-key-value",40),e.YNc(3,wc,2,0,"cd-alert-panel",41)),2&f){const n=e.oxw(3).$implicit;e.Q6J("ngIf",null==n.value.smart?null:n.value.smart.attributes),e.xp6(1),e.Q6J("ngIf",null==n.value.smart?null:n.value.smart.scsi_error_counter_log),e.xp6(1),e.Q6J("ngIf",null==n.value.smart?null:n.value.smart.nvmeData),e.xp6(1),e.Q6J("ngIf",!(null!=n.value.smart&&n.value.smart.attributes||null!=n.value.smart&&n.value.smart.nvmeData||null!=n.value.smart&&n.value.smart.scsi_error_counter_log))}}function Lf(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",12,30),e.TgZ(3,"li",31),e.TgZ(4,"a",17),e.SDv(5,32),e.qZA(),e.YNc(6,If,4,8,"ng-template",18),e.qZA(),e.TgZ(7,"li",31),e.TgZ(8,"a",17),e.SDv(9,33),e.qZA(),e.YNc(10,Yc,4,4,"ng-template",18),e.qZA(),e.qZA(),e._UZ(11,"div",15),e.BQk()),2&f){const n=e.MAs(2);e.xp6(3),e.Q6J("ngbNavItem",1),e.xp6(4),e.Q6J("ngbNavItem",2),e.xp6(4),e.Q6J("ngbNavOutlet",n)}}function Su(f,y){if(1&f&&(e.YNc(0,rf,3,1,"ng-container",0),e.YNc(1,Hd,4,5,"ng-template",null,19,e.W1O),e.YNc(3,Lf,12,3,"ng-container",4),e.ALo(4,"pipeFunction"),e.ALo(5,"pipeFunction")),2&f){const n=e.MAs(2),d=e.oxw().$implicit,w=e.oxw(4);e.Q6J("ngIf",d.value.error)("ngIfElse",n),e.xp6(3),e.Q6J("ngIf",!e.xi3(4,3,d.value.info,w.isEmpty)||!e.xi3(5,6,d.value.smart,w.isEmpty))}}function fd(f,y){if(1&f&&(e.TgZ(0,"li",16),e.TgZ(1,"a",17),e._uU(2),e.qZA(),e.YNc(3,Su,6,9,"ng-template",18),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.AsE("",n.value.device," (",n.value.identifier,")")}}function of(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",12,13),e.YNc(3,fd,4,2,"li",14),e.ALo(4,"keyvalue"),e.qZA(),e._UZ(5,"div",15),e.BQk()),2&f){const n=e.MAs(2),d=e.oxw(3);e.xp6(3),e.Q6J("ngForOf",e.lcZ(4,2,d.data)),e.xp6(2),e.Q6J("ngbNavOutlet",n)}}function Ff(f,y){if(1&f&&(e.ynx(0),e.YNc(1,cd,2,0,"cd-alert-panel",9),e.ALo(2,"pipeFunction"),e.YNc(3,of,6,4,"ng-container",4),e.ALo(4,"pipeFunction"),e.BQk()),2&f){const n=e.oxw(2);e.xp6(1),e.Q6J("ngIf",e.xi3(2,2,n.data,n.isEmpty)),e.xp6(2),e.Q6J("ngIf",!e.xi3(4,5,n.data,n.isEmpty))}}function V(f,y){if(1&f&&(e.ynx(0),e.YNc(1,Lc,2,0,"cd-alert-panel",2),e.YNc(2,Pf,2,0,"cd-alert-panel",3),e.YNc(3,Ff,5,8,"ng-container",4),e.BQk()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngIf",n.error),e.xp6(1),e.Q6J("ngIf",n.incompatible),e.xp6(1),e.Q6J("ngIf",!n.error&&!n.incompatible)}}function pe(f,y){1&f&&(e.TgZ(0,"cd-loading-panel"),e.SDv(1,46),e.qZA())}let A=(()=>{class f{constructor(n,d){this.osdService=n,this.hostService=d,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={},this.isEmpty=gn().isEmpty}isSmartError(n){return void 0!==gn().get(n,"error")}isNvmeSmartData(n){return"nvme"===gn().get(n,"device.protocol","").toLowerCase()}isAtaSmartData(n){return"ata"===gn().get(n,"device.protocol","").toLowerCase()}isIscsiSmartData(n){return"scsi"===gn().get(n,"device.protocol","").toLowerCase()}fetchData(n){const d={};gn().each(n,(w,re)=>{if(this.isSmartError(w)){let Ze="";Ze=-22===w.smartctl_error_code?"Smartctl has received an unknown argument (error code " + w.smartctl_error_code + "). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code " + w.smartctl_error_code + " occurred.",d[re]={error:w.error,smartctl_error_code:w.smartctl_error_code,smartctl_output:w.smartctl_output,userMessage:Ze,device:w.dev,identifier:w.nvme_vendor}}else 1!==w.json_format_version[0]?this.incompatible=!0:this.isAtaSmartData(w)?d[re]=this.extractAtaData(w):this.isIscsiSmartData(w)?d[re]=this.extractIscsiData(w):this.isNvmeSmartData(w)&&(d[re]=this.extractNvmeData(w))}),this.data=d,this.loading=!1}extractNvmeData(n){return{info:gn().omitBy(n,(w,re)=>["nvme_smart_health_information_log"].includes(re)),smart:{nvmeData:n.nvme_smart_health_information_log},device:n.device.name,identifier:n.serial_number}}extractIscsiData(n){const d=gn().omitBy(n,(w,re)=>["scsi_error_counter_log","scsi_grown_defect_list"].includes(re));return{info:d,smart:{scsi_error_counter_log:n.scsi_error_counter_log,scsi_grown_defect_list:n.scsi_grown_defect_list},device:d.device.name,identifier:d.serial_number}}extractAtaData(n){const d=gn().omitBy(n,(w,re)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(re));return{info:d,smart:{attributes:n.ata_smart_attributes,data:n.ata_smart_data},device:d.device.name,identifier:d.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe({next:this.fetchData.bind(this),error:n=>{n.preventDefault(),this.error=n,this.loading=!1}}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe({next:this.fetchData.bind(this),error:n=>{n.preventDefault(),this.error=n,this.loading=!1}})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:"ID"},{prop:"name",name:"Name"},{prop:"raw.value",name:"Raw"},{prop:"thresh",name:"Threshold"},{prop:"value",name:"Value"},{prop:"when_failed",name:"When Failed"},{prop:"worst",name:"Worst"}],this.scsiSmartDataColumns=[{prop:"correction_algorithm_invocations",name:"Correction Algorithm Invocations"},{prop:"errors_corrected_by_eccdelayed",name:"Errors Corrected by ECC (Delayed)"},{prop:"errors_corrected_by_eccfast",name:"Errors Corrected by ECC (Fast)"},{prop:"errors_corrected_by_rereads_rewrites",name:"Errors Corrected by Rereads/Rewrites"},{prop:"gigabytes_processed",name:"Gigabyes Processed"},{prop:"total_errors_corrected",name:"Total Errors Corrected"},{prop:"total_uncorrected_errors",name:"Total Errors Uncorrected"}]}ngOnChanges(n){this.data={},n.osdId?this.osdId=n.osdId.currentValue:n.hostname&&(this.hostname=n.hostname.currentValue),this.updateData()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(lc),e.Y36(Zl))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-smart-list"]],viewQuery:function(n,d){if(1&n&&e.Gf(nf,5),2&n){let w;e.iGM(w=e.CRH())&&(d.nav=w.first)}},inputs:{osdId:"osdId",hostname:"hostname"},features:[e.TTD],decls:3,vars:2,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo;return y="Failed to retrieve SMART data.",n="The data received has the JSON format version 2.x and is currently incompatible with the dashboard.",d="No SMART data available.",w="SMART overall-health self-assessment test result",re="unknown",Ze="SMART overall-health self-assessment test result",Lt="passed",Gt="SMART overall-health self-assessment test result",On="failed",fr="Device Information",hr="SMART",Jr="No device information available for this device.",$i="No SMART data available for this device.",bo="SMART data is loading.",[[4,"ngIf","ngIfElse"],["isLoading",""],["type","error",4,"ngIf"],["type","warning",4,"ngIf"],[4,"ngIf"],["type","error"],y,["type","warning"],n,["type","info",4,"ngIf"],["type","info"],d,["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","",4,"ngFor","ngForOf"],[3,"ngbNavOutlet"],["ngbNavItem",""],["ngbNavLink",""],["ngbNavContent",""],["noError",""],["id","alert-error","type","warning"],["id","alert-self-test-unknown","size","slim","type","warning","title",w,4,"ngIf","ngIfElse"],["hasSmartStatus",""],["id","alert-self-test-unknown","size","slim","type","warning","title",w],re,["selfTestFailed",""],["id","alert-self-test-passed","size","slim","type","info","title",Ze],Lt,["id","alert-self-test-failed","size","slim","type","warning","title",Gt],On,["innerNav","ngbNav"],[3,"ngbNavItem"],fr,hr,[3,"renderObjects","data",4,"ngIf"],["id","alert-device-info-unavailable","type","info",4,"ngIf"],[3,"renderObjects","data"],["id","alert-device-info-unavailable","type","info"],Jr,["updateSelectionOnRefresh","never",3,"data","columns",4,"ngIf"],["updateSelectionOnRefresh","never",3,"renderObjects","data",4,"ngIf"],["id","alert-device-smart-data-unavailable","type","info",4,"ngIf"],["updateSelectionOnRefresh","never",3,"data","columns"],["updateSelectionOnRefresh","never",3,"renderObjects","data"],["id","alert-device-smart-data-unavailable","type","info"],$i,bo]},template:function(n,d){if(1&n&&(e.YNc(0,V,4,3,"ng-container",0),e.YNc(1,pe,2,0,"ng-template",null,1,e.W1O)),2&n){const w=e.MAs(2);e.Q6J("ngIf",!d.loading)("ngIfElse",w)}},directives:[s.O5,De.G,Br.Pz,s.sg,Br.tO,Br.nv,Br.Vx,Br.uN,Ft.b,Ui.a,Tu.b],pipes:[yt.i,s.Nd],styles:[""]}),f})();function K(f,y){if(1&f&&e._UZ(0,"cd-device-list",14),2&f){const n=e.oxw(2);e.Q6J("hostname",n.selection.hostname)}}function Ye(f,y){if(1&f&&e._UZ(0,"cd-inventory",14),2&f){const n=e.oxw(3);e.Q6J("hostname",n.selectedHostname)}}function Rt(f,y){1&f&&(e.TgZ(0,"li",15),e.TgZ(1,"a",5),e.SDv(2,16),e.qZA(),e.YNc(3,Ye,1,1,"ng-template",7),e.qZA())}const vr=function(){return["hostname"]};function Hr(f,y){if(1&f&&e._UZ(0,"cd-service-daemon-list",19),2&f){const n=e.oxw(3);e.Q6J("hostname",n.selectedHostname)("hiddenColumns",e.DdM(2,vr))}}function _i(f,y){1&f&&(e.TgZ(0,"li",17),e.TgZ(1,"a",5),e.SDv(2,18),e.qZA(),e.YNc(3,Hr,1,3,"ng-template",7),e.qZA())}function ji(f,y){if(1&f&&e._UZ(0,"cd-grafana",22),2&f){const n=e.oxw(3);e.Q6J("grafanaPath","host-details?var-ceph_hosts="+n.selectedHostname)}}function Eo(f,y){1&f&&(e.TgZ(0,"li",20),e.TgZ(1,"a",5),e.SDv(2,21),e.qZA(),e.YNc(3,ji,1,1,"ng-template",7),e.qZA())}function rs(f,y){if(1&f&&e._UZ(0,"cd-smart-list",14),2&f){const n=e.oxw(3);e.Q6J("hostname",n.selectedHostname)}}function Uo(f,y){if(1&f&&e.YNc(0,rs,1,1,"cd-smart-list",23),2&f){const n=e.oxw(2),d=e.MAs(2);e.Q6J("ngIf",n.selectedHostname)("ngIfElse",d)}}function us(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",2,3),e.TgZ(3,"li",4),e.TgZ(4,"a",5),e.SDv(5,6),e.qZA(),e.YNc(6,K,1,1,"ng-template",7),e.qZA(),e.YNc(7,Rt,4,0,"li",8),e.YNc(8,_i,4,0,"li",9),e.YNc(9,Eo,4,0,"li",10),e.TgZ(10,"li",11),e.TgZ(11,"a",5),e.SDv(12,12),e.qZA(),e.YNc(13,Uo,1,2,"ng-template",7),e.qZA(),e.qZA(),e._UZ(14,"div",13),e.BQk()),2&f){const n=e.MAs(2),d=e.oxw();e.xp6(7),e.Q6J("ngIf",d.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",d.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",d.permissions.grafana.read),e.xp6(5),e.Q6J("ngbNavOutlet",n)}}function Ks(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",24),e.SDv(1,25),e.qZA())}let ys=(()=>{class f{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-host-details"]],inputs:{permissions:"permissions",selection:"selection"},decls:3,vars:1,consts:function(){let y,n,d,w,re,Ze;return y="Devices",n="Device health",d="Physical Disks",w="Daemons",re="Performance Details",Ze="No hostname found.",[[4,"ngIf"],["noHostname",""],["ngbNav","","cdStatefulTab","host-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","devices"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","inventory",4,"ngIf"],["ngbNavItem","daemons",4,"ngIf"],["ngbNavItem","performance-details",4,"ngIf"],["ngbNavItem","device-health"],n,[3,"ngbNavOutlet"],[3,"hostname"],["ngbNavItem","inventory"],d,["ngbNavItem","daemons"],w,["flag","hostDetails",3,"hostname","hiddenColumns"],["ngbNavItem","performance-details"],re,["uid","rtOg0AiWz","grafanaStyle","four",3,"grafanaPath"],[3,"hostname",4,"ngIf","ngIfElse"],["type","error"],Ze]},template:function(n,d){1&n&&(e.YNc(0,us,15,4,"ng-container",0),e.YNc(1,Ks,2,0,"ng-template",null,1,e.W1O)),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,ts,Gl,Jc,Je.F,A,De.G],styles:[""]}),f})();const Xl=["servicesTpl"],Dc=["maintenanceConfirmTpl"],al=["orchTmpl"],su=["flashTmpl"];function ea(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",13,14),e.NdJ("fetchData",function(w){return e.CHM(n),e.oxw().getHosts(w)})("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e.TgZ(2,"div",15),e._UZ(3,"cd-table-actions",16),e.qZA(),e._UZ(4,"cd-host-details",17),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("data",n.hosts)("columns",n.columns)("hasDetails",n.hasTableDetails)("toolHeader",!n.hideToolHeader),e.xp6(3),e.Q6J("permission",n.permissions.hosts)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("permissions",n.permissions)("selection",n.expandedRow)}}function Kl(f,y){1&f&&e._UZ(0,"cd-grafana",19),2&f&&e.Q6J("grafanaPath","host-overview?")}function Ul(f,y){1&f&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,18),e.qZA(),e.YNc(3,Kl,1,1,"ng-template",5),e.qZA())}function zl(f,y){1&f&&(e.ynx(0),e._uU(1,"\xa0"),e.BQk())}function xc(f,y){if(1&f&&(e.TgZ(0,"span"),e.TgZ(1,"span",21),e._uU(2),e.qZA(),e.YNc(3,zl,2,0,"ng-container",22),e.qZA()),2&f){const n=y.$implicit,d=y.last;e.xp6(2),e.Oqu(n),e.xp6(1),e.Q6J("ngIf",!d)}}function sf(f,y){1&f&&e.YNc(0,xc,4,2,"span",20),2&f&&e.Q6J("ngForOf",y.value)}function Tc(f,y){if(1&f&&(e.TgZ(0,"ul"),e.TgZ(1,"li"),e.SDv(2,23),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(2),e.pQV(n),e.QtT(2)}}function _u(f,y){if(1&f&&(e.TgZ(0,"div"),e.YNc(1,Tc,3,1,"ul",22),e.qZA()),2&f){const n=y.last,d=e.oxw(2);e.xp6(1),e.Q6J("ngIf",!n||"1"==d.errorMessage.length)}}function uc(f,y){1&f&&(e.ynx(0),e.SDv(1,24),e.BQk())}function pd(f,y){if(1&f&&(e.YNc(0,_u,2,1,"div",20),e.YNc(1,uc,2,0,"ng-container",22)),2&f){const n=e.oxw();e.Q6J("ngForOf",n.errorMessage),e.xp6(1),e.Q6J("ngIf",n.showSubmit)}}function Ru(f,y){1&f&&(e.TgZ(0,"span",25),e.SDv(1,26),e.qZA())}function af(f,y){1&f&&(e.TgZ(0,"span",27),e.SDv(1,28),e.qZA())}let zu=(()=>{class f extends mi.o{constructor(n,d,w,re,Ze,Lt,Gt,On,fr,hr){super(),this.authStorageService=n,this.dimlessBinary=d,this.emptyPipe=w,this.hostService=re,this.actionLabels=Ze,this.modalService=Lt,this.taskWrapper=Gt,this.router=On,this.notificationService=fr,this.orchService=hr,this.sub=new Vl.w,this.hiddenColumns=[],this.hideTitle=!1,this.hideSubmitBtn=!1,this.hasTableDetails=!0,this.hideToolHeader=!1,this.showGeneralActionsOnly=!1,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new si.r,this.isExecuting=!1,this.icons=eo.P,this.messages={nonOrchHost:"The feature is disabled because the selected host is not managed by Orchestrator."},this.actionOrchFeatures={add:[ml.HOST_ADD],edit:[ml.HOST_LABEL_ADD,ml.HOST_LABEL_REMOVE],remove:[ml.HOST_REMOVE],maintenance:[ml.HOST_MAINTENANCE_ENTER,ml.HOST_MAINTENANCE_EXIT],drain:[ml.HOST_DRAIN]},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.ADD,permission:"create",icon:eo.P.add,click:()=>this.router.url.includes("/hosts")?this.router.navigate(["hosts",{outlets:{modal:[uo.MQ.ADD]}}]):this.bsModalRef=this.modalService.show(qe),disable:Jr=>this.getDisable("add",Jr)},{name:this.actionLabels.EDIT,permission:"update",icon:eo.P.edit,click:()=>this.editAction(),disable:Jr=>this.getDisable("edit",Jr)},{name:this.actionLabels.START_DRAIN,permission:"update",icon:eo.P.exit,click:()=>this.hostDrain(),disable:Jr=>this.getDisable("drain",Jr)||!this.enableDrainBtn,visible:()=>!this.showGeneralActionsOnly&&this.enableDrainBtn},{name:this.actionLabels.STOP_DRAIN,permission:"update",icon:eo.P.exit,click:()=>this.hostDrain(!0),disable:Jr=>this.getDisable("drain",Jr)||this.enableDrainBtn,visible:()=>!this.showGeneralActionsOnly&&!this.enableDrainBtn},{name:this.actionLabels.REMOVE,permission:"delete",icon:eo.P.destroy,click:()=>this.deleteAction(),disable:Jr=>this.getDisable("remove",Jr)},{name:this.actionLabels.ENTER_MAINTENANCE,permission:"update",icon:eo.P.enter,click:()=>this.hostMaintenance(),disable:Jr=>this.getDisable("maintenance",Jr)||this.isExecuting||this.enableMaintenanceBtn,visible:()=>!this.showGeneralActionsOnly&&!this.enableMaintenanceBtn},{name:this.actionLabels.EXIT_MAINTENANCE,permission:"update",icon:eo.P.exit,click:()=>this.hostMaintenance(),disable:Jr=>this.getDisable("maintenance",Jr)||this.isExecuting||!this.enableMaintenanceBtn,visible:()=>!this.showGeneralActionsOnly&&this.enableMaintenanceBtn}]}ngOnInit(){this.columns=[{name:"Hostname",prop:"hostname",flexGrow:1},{name:"Service Instances",prop:"service_instances",flexGrow:1,cellTemplate:this.servicesTpl},{name:"Labels",prop:"labels",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{class:"badge-dark"}},{name:"Status",prop:"status",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{map:{maintenance:{class:"badge-warning"}}}},{name:"Model",prop:"model",flexGrow:1},{name:"CPUs",prop:"cpu_count",flexGrow:.3},{name:"Cores",prop:"cpu_cores",flexGrow:.3},{name:"Total Memory",prop:"memory_total_bytes",pipe:this.dimlessBinary,flexGrow:.4},{name:"Raw Capacity",prop:"raw_capacity",pipe:this.dimlessBinary,flexGrow:.5},{name:"HDDs",prop:"hdd_count",flexGrow:.3},{name:"Flash",prop:"flash_count",headerTemplate:this.flashTmpl,flexGrow:.3},{name:"NICs",prop:"nic_count",flexGrow:.3}],this.columns=this.columns.filter(n=>!this.hiddenColumns.includes(n.prop))}ngOnDestroy(){this.sub.unsubscribe()}updateSelection(n){this.selection=n,this.enableMaintenanceBtn=!1,this.enableDrainBtn=!1,this.selection.hasSelection&&("maintenance"===this.selection.first().status&&(this.enableMaintenanceBtn=!0),this.selection.first().labels.includes("_no_schedule")||(this.enableDrainBtn=!0))}editAction(){this.hostService.getLabels().subscribe(n=>{const d=this.selection.first(),w=new Set(n.concat(this.hostService.predefinedLabels)),re=Array.from(w).map(Ze=>({enabled:!0,name:Ze}));this.modalService.show(Hl.X,{titleText:"Edit Host: " + d.hostname + "",fields:[{type:"select-badges",name:"labels",value:d.labels,label:"Labels",typeConfig:{customBadges:!0,options:re,messages:new tl.a({empty:"There are no labels.",filter:"Filter or add labels",add:"Add label"})}}],submitButtonText:"Edit Host",onSubmit:Ze=>{this.hostService.update(d.hostname,!0,Ze.labels).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated Host \"" + d.hostname + "\""),this.table.refreshBtn()})}})})}hostMaintenance(){this.isExecuting=!0;const n=this.selection.first();"maintenance"!==n.status?this.hostService.update(n.hostname,!1,[],!0).subscribe(()=>{this.isExecuting=!1,this.notificationService.show(Ho.k.success,"\"" + n.hostname + "\" moved to maintenance"),this.table.refreshBtn()},d=>{if(this.isExecuting=!1,this.errorMessage=d.error.detail.split(/\n/),d.preventDefault(),!d.error.detail.includes("WARNING")||d.error.detail.includes("It is NOT safe to stop")||d.error.detail.includes("ALERT")||d.error.detail.includes("unsafe to stop"))this.notificationService.show(Ho.k.error,"\"" + n.hostname + "\" cannot be put into maintenance","" + d.error.detail + "");else{const w={titleText:"Warning",buttonText:"Continue",warning:!0,bodyTpl:this.maintenanceConfirmTpl,showSubmit:!0,onSubmit:()=>{this.hostService.update(n.hostname,!1,[],!0,!0).subscribe(()=>{this.modalRef.close()},()=>this.modalRef.close())}};this.modalRef=this.modalService.show(Ll.Y,w)}}):this.hostService.update(n.hostname,!1,[],!0).subscribe(()=>{this.isExecuting=!1,this.notificationService.show(Ho.k.success,"\"" + n.hostname + "\" has exited maintenance"),this.table.refreshBtn()})}hostDrain(n=!1){const d=this.selection.first();if(n){const w=d.labels.indexOf("_no_schedule",0);d.labels.splice(w,1),this.hostService.update(d.hostname,!0,d.labels).subscribe(()=>{this.notificationService.show(Ho.k.info,"\"" + d.hostname + "\" stopped draining"),this.table.refreshBtn()})}else this.hostService.update(d.hostname,!1,[],!1,!1,!0).subscribe(()=>{this.notificationService.show(Ho.k.info,"\"" + d.hostname + "\" started draining"),this.table.refreshBtn()})}getDisable(n,d){if("remove"===n||"edit"===n||"maintenance"===n||"drain"===n){if(!(null==d?void 0:d.hasSingleSelection))return!0;if(!gn().every(d.selected,"sources.orchestrator"))return this.messages.nonOrchHost}return this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[n])}deleteAction(){const n=this.selection.first().hostname;this.modalRef=this.modalService.show(jo.M,{itemDescription:"Host",itemNames:[n],actionDescription:"remove",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new Va.R("host/remove",{hostname:n}),call:this.hostService.delete(n)})})}checkHostsFactsAvailable(){const n=this.orchStatus.features;return!gn().isEmpty(n)&&!!n.get_facts.available}transformHostsData(){if(this.checkHostsFactsAvailable())gn().forEach(this.hosts,n=>{n.memory_total_bytes=this.emptyPipe.transform(1024*n.memory_total_kb),n.raw_capacity=this.emptyPipe.transform(n.hdd_capacity_bytes+n.flash_capacity_bytes)});else for(let n=4;n<this.columns.length;n++)this.columns[n].cellTemplate=this.orchTmpl}getHosts(n){this.isLoadingHosts||(this.isLoadingHosts=!0,this.sub=this.orchService.status().pipe((0,ol.zg)(d=>{this.orchStatus=d;const w=this.checkHostsFactsAvailable();return this.hostService.list(`${w}`)}),(0,Ds.U)(d=>d.map(w=>{const re={};return w.service_instances=new Set,w.services.forEach(Ze=>{re[Ze.type]=(re[Ze.type]||0)+1}),w.services.map(Ze=>{w.service_instances.add(`${Ze.type}: ${re[Ze.type]}`)}),w}))).subscribe(d=>{this.hosts=d,this.transformHostsData(),this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,n.error()}))}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Se.$),e.Y36(bc.W),e.Y36(Zl),e.Y36(uo.p4),e.Y36(na.Z),e.Y36(ki.P),e.Y36(tn.F0),e.Y36(Zi.g),e.Y36(el))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-hosts"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Ui.a,5),e.Gf(Xl,7),e.Gf(Dc,7),e.Gf(al,7),e.Gf(su,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.table=w.first),e.iGM(w=e.CRH())&&(d.servicesTpl=w.first),e.iGM(w=e.CRH())&&(d.maintenanceConfirmTpl=w.first),e.iGM(w=e.CRH())&&(d.orchTmpl=w.first),e.iGM(w=e.CRH())&&(d.flashTmpl=w.first)}},inputs:{hiddenColumns:"hiddenColumns",hideTitle:"hideTitle",hideSubmitBtn:"hideSubmitBtn",hasTableDetails:"hasTableDetails",hideToolHeader:"hideToolHeader",showGeneralActionsOnly:"showGeneralActionsOnly"},features:[e._Bn([{provide:vl.F,useValue:new vl.F("hosts")}]),e.qOj],decls:17,vars:2,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="Hosts List",n="Overall Performance",d="" + "\ufffd0\ufffd" + "",w="Are you sure you want to continue?",re="Data will be available only if Orchestrator is available.",Ze="N/A",Lt="SSD, NVMEs",Gt="Flash",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["servicesTpl",""],["maintenanceConfirmTpl",""],["orchTmpl",""],["flashTmpl",""],["name","modal"],["columnMode","flex","selectionType","single",3,"data","columns","hasDetails","toolHeader","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],["id","host-actions",1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"permissions","selection"],n,["uid","y0KGL0iZz","grafanaStyle","two",3,"grafanaPath"],[4,"ngFor","ngForOf"],[1,"badge","badge-background-primary"],[4,"ngIf"],d,w,["ngbTooltip",re],Ze,["ngbTooltip",Lt],Gt]},template:function(n,d){if(1&n&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,ea,5,9,"ng-template",5),e.qZA(),e.YNc(6,Ul,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,sf,1,1,"ng-template",null,8,e.W1O),e.YNc(10,pd,2,2,"ng-template",null,9,e.W1O),e.YNc(12,Ru,2,0,"ng-template",null,10,e.W1O),e.YNc(14,af,2,0,"ng-template",null,11,e.W1O),e._UZ(16,"router-outlet",12)),2&n){const w=e.MAs(1);e.xp6(6),e.Q6J("ngIf",d.permissions.grafana.read),e.xp6(1),e.Q6J("ngbNavOutlet",w)}},directives:[Br.Pz,Br.nv,Br.Vx,Br.uN,s.O5,Br.tO,tn.lC,Ui.a,ha.K,ys,Je.F,s.sg,Br._L],styles:[""]}),f})();var $c=o(62862);let Qc=(()=>{class f{constructor(n,d,w,re,Ze){this.activeModal=n,this.actionLabels=d,this.formBuilder=w,this.osdService=re,this.taskWrapper=Ze,this.driveGroups=[],this.submitAction=new e.vpe,this.action=d.CREATE,this.createForm()}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){this.taskWrapper.wrapTaskAroundCall({task:new Va.R("osd/"+uo.MQ.CREATE,{tracking_id:gn().join(gn().map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe({error:()=>{this.formGroup.setErrors({cdSubmitButton:!0})},complete:()=>{this.submitAction.emit(),this.activeModal.close()}})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36($c.O),e.Y36(lc),e.Y36(ki.P))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-creation-preview-modal"]],inputs:{driveGroups:"driveGroups"},outputs:{submitAction:"submitAction"},decls:15,vars:9,consts:function(){let y,n;return y="OSD creation preview",n="DriveGroups",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],n,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"]]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"h4"),e.SDv(8,7),e.qZA(),e.TgZ(9,"pre"),e._uU(10),e.ALo(11,"json"),e.qZA(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.ALo(14,"titlecase"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(4),e.Q6J("formGroup",d.formGroup),e.xp6(6),e.Oqu(e.lcZ(11,5,d.driveGroups)),e.xp6(3),e.Q6J("form",d.formGroup)("submitText",e.lcZ(14,7,d.action)))},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,jr.p],pipes:[s.Ts,s.rS],styles:[""]}),f})();const ip=["inventoryDevices"];function is(f,y){if(1&f&&(e.TgZ(0,"span",16),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.hij(" ",n," ")}}function kf(f,y){if(1&f&&(e.TgZ(0,"cd-alert-panel",13),e.ynx(1),e.SDv(2,14),e.BQk(),e.YNc(3,is,2,1,"span",15),e.qZA()),2&f){const n=e.oxw();e.Q6J("showTitle",!1),e.xp6(3),e.Q6J("ngForOf",n.requiredFilters)}}function hd(f,y){if(1&f&&(e.TgZ(0,"div"),e.TgZ(1,"p",17),e.TgZ(2,"span"),e.SDv(3,18),e.ALo(4,"dimlessBinary"),e.qZA(),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(4),e.pQV(n.filteredDevices.length)(e.lcZ(4,2,n.capacity)),e.QtT(3)}}const Nu=function(){return["available","osd_ids"]};let Wu=(()=>{class f{constructor(n,d,w,re){this.formBuilder=n,this.activeModal=d,this.actionLabels=w,this.wizardStepService=re,this.submitAction=new e.vpe,this.icons=eo.P,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=w.ADD,this.createForm()}ngAfterViewInit(){const n=gn().filter(this.inventoryDevices.columns,d=>this.filterColumns.includes(d.prop)&&"hostname"!==d.prop);setTimeout(()=>{this.requiredFilters=gn().map(n,"name")},0)}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(n){if(this.capacity=0,this.canSubmit=!1,gn().isEmpty(n.filters))this.filteredDevices=[],this.event=void 0;else{const d=n.filters.filter(w=>"hostname"!==w.prop);this.canSubmit=!gn().isEmpty(d),this.filteredDevices=n.data,this.capacity=gn().sumBy(this.filteredDevices,"sys_api.size"),this.event=n}}onSubmit(){this.submitAction.emit(this.event),this.activeModal.close()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36($c.O),e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(pl))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-devices-selection-modal"]],viewQuery:function(n,d){if(1&n&&e.Gf(ip,5),2&n){let w;e.iGM(w=e.CRH())&&(d.inventoryDevices=w.first)}},outputs:{submitAction:"submitAction"},decls:14,vars:15,consts:function(){let y,n,d;return y="" + "\ufffd0\ufffd" + " devices",n="At least one of these filters must be applied in order to proceed:",d="Number of devices: " + "\ufffd0\ufffd" + ". Raw capacity: " + "\ufffd1\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],["type","warning","size","slim",3,"showTitle",4,"ngIf"],[3,"devices","filterColumns","showAvailDeviceOnly","hiddenColumns","filterChange"],["inventoryDevices",""],[4,"ngIf"],[1,"modal-footer"],[3,"form","disabled","submitText","submitActionEvent"],["type","warning","size","slim",3,"showTitle"],n,["class","badge badge-dark ml-2",4,"ngFor","ngForOf"],[1,"badge","badge-dark","ml-2"],[1,"text-center"],d]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,kf,4,2,"cd-alert-panel",7),e.TgZ(8,"cd-inventory-devices",8,9),e.NdJ("filterChange",function(re){return d.onFilterChange(re)}),e.qZA(),e.YNc(10,hd,5,4,"div",10),e.qZA(),e.TgZ(11,"div",11),e.TgZ(12,"cd-form-button-panel",12),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.ALo(13,"titlecase"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(2),e.pQV(d.deviceType),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.formGroup),e.xp6(3),e.Q6J("ngIf",!d.canSubmit),e.xp6(1),e.Q6J("devices",d.devices)("filterColumns",d.filterColumns)("showAvailDeviceOnly",!0)("hiddenColumns",e.DdM(14,Nu)),e.xp6(2),e.Q6J("ngIf",d.canSubmit),e.xp6(2),e.Q6J("form",d.formGroup)("disabled",!d.canSubmit||0===d.filteredDevices.length)("submitText",e.lcZ(13,12,d.action)))},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,s.O5,ya,jr.p,De.G,s.sg],pipes:[s.rS,Se.$],styles:[""]}),f})();function au(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,7),e.qZA())}function Ud(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,8),e.qZA())}function lf(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,9),e.qZA())}const _d=function(f){return[f]};function Xc(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"button",10),e.NdJ("click",function(){return e.CHM(n),e.oxw().showSelectionModal()}),e._UZ(2,"i",11),e.ynx(3),e.SDv(4,12),e.BQk(),e.qZA(),e.BQk()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("title",n.addButtonTooltip)("disabled",0===n.availDevices.length||!n.canSelect||n.expansionCanSelect),e.xp6(1),e.Q6J("ngClass",e.VKq(3,_d,n.icons.add))}}function Mu(f,y){if(1&f&&(e.TgZ(0,"span"),e.TgZ(1,"span",19),e._uU(2),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(2),e.AsE("",n.name,": ",n.value.formatted,"")}}function Rs(f,y){if(1&f&&(e.TgZ(0,"div",20),e.TgZ(1,"span"),e.SDv(2,21),e.ALo(3,"dimlessBinary"),e.qZA(),e.qZA()),2&f){const n=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(3,1,n.capacity)),e.QtT(2)}}const jd=function(){return["available","osd_ids"]},gu=function(){return[]};function lu(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",13),e.YNc(1,Mu,3,2,"span",14),e.TgZ(2,"a",15),e.NdJ("click",function(){return e.CHM(n),e.oxw().clearDevices(),!1}),e._UZ(3,"i",11),e.ynx(4),e.SDv(5,16),e.BQk(),e.qZA(),e.qZA(),e.TgZ(6,"div"),e._UZ(7,"cd-inventory-devices",17),e.qZA(),e.YNc(8,Rs,4,3,"div",18)}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngForOf",n.appliedFilters),e.xp6(2),e.Q6J("ngClass",e.VKq(6,_d,n.icons.clearFilters)),e.xp6(4),e.Q6J("devices",n.devices)("hiddenColumns",e.DdM(8,jd))("filterColumns",e.DdM(9,gu)),e.xp6(1),e.Q6J("ngIf","data"===n.type)}}let cf=(()=>{class f{constructor(n,d,w){this.modalService=n,this.osdService=d,this.router=w,this.selected=new e.vpe,this.cleared=new e.vpe,this.icons=eo.P,this.devices=[],this.capacity=0,this.appliedFilters=new Array,this.expansionCanSelect=!1,this.tooltips={noAvailDevices:"No available devices",addPrimaryFirst:"Please add primary devices first",addByFilters:"Add devices by using filters"},this.isOsdPage=this.router.url.includes("/osd")}ngOnInit(){var n,d,w;this.isOsdPage||(this.devices=(null===(n=this.osdService)||void 0===n?void 0:n.osdDevices[this.type])?this.osdService.osdDevices[this.type]:[],this.capacity=gn().sumBy(this.devices,"sys_api.size"),this.expansionCanSelect=!!(null===(d=this.osdService)||void 0===d?void 0:d.osdDevices)&&(null===(w=this.osdService)||void 0===w?void 0:w.osdDevices.disableSelect)),this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let n=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(n=["hostname",...n]),this.modalService.show(Wu,{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:n},{size:"xl"}).componentInstance.submitAction.subscribe(re=>{this.devices=re.data,this.capacity=gn().sumBy(this.devices,"sys_api.size"),this.appliedFilters=re.filters;const Ze=gn().assign({type:this.type},re);this.isOsdPage||(this.osdService.osdDevices[this.type]=this.devices,this.osdService.osdDevices.disableSelect=this.canSelect||this.devices.length===this.availDevices.length,this.osdService.osdDevices[this.type].capacity=this.capacity),this.selected.emit(Ze)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){this.isOsdPage||(this.expansionCanSelect=!1,this.osdService.osdDevices.disableSelect=!1,this.osdService.osdDevices=[]);const n={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(n)}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(na.Z),e.Y36(lc),e.Y36(tn.F0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-devices-selection-groups"]],inputs:{type:"type",name:"name",hostname:"hostname",availDevices:"availDevices",canSelect:"canSelect"},outputs:{selected:"selected",cleared:"cleared"},features:[e.TTD],decls:12,vars:6,consts:function(){let y,n,d,w,re,Ze,Lt;return y="" + "\ufffd0\ufffd" + " devices",n="The primary storage devices. These devices contain all OSD data.",d="Write-Ahead-Log devices. These devices are used for BlueStore\u2019s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.",w="DB devices can be used for storing BlueStore\u2019s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).",re="Add",Ze="Clear",Lt="Raw capacity: " + "\ufffd0\ufffd" + "",[[1,"form-group","row"],["for","createDeleteButton",1,"cd-col-form-label"],y,[4,"ngIf"],[1,"cd-col-form-input"],[4,"ngIf","ngIfElse"],["blockClearDevices",""],n,d,w,["type","button","data-toggle","tooltip",1,"btn","btn-light",3,"title","disabled","click"],[3,"ngClass"],re,[1,"pb-2","my-2","border-bottom"],[4,"ngFor","ngForOf"],["href","",1,"tc_clearSelections",3,"click"],Ze,[3,"devices","hiddenColumns","filterColumns"],["class","float-right",4,"ngIf"],[1,"badge","badge-dark","mr-2"],[1,"float-right"],Lt]},template:function(n,d){if(1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e.ynx(2),e.SDv(3,2),e.BQk(),e.TgZ(4,"cd-helper"),e.YNc(5,au,2,0,"span",3),e.YNc(6,Ud,2,0,"span",3),e.YNc(7,lf,2,0,"span",3),e.qZA(),e.qZA(),e.TgZ(8,"div",4),e.YNc(9,Xc,5,5,"ng-container",5),e.YNc(10,lu,9,10,"ng-template",null,6,e.W1O),e.qZA(),e.qZA()),2&n){const w=e.MAs(11);e.xp6(3),e.pQV(d.name),e.QtT(3),e.xp6(2),e.Q6J("ngIf","data"===d.type),e.xp6(1),e.Q6J("ngIf","wal"===d.type),e.xp6(1),e.Q6J("ngIf","db"===d.type),e.xp6(2),e.Q6J("ngIf",0===d.devices.length)("ngIfElse",w)}},directives:[kn.P,yl.S,s.O5,As.o,s.mk,s.sg,ya],pipes:[Se.$],styles:[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]}),f})();const Bd=["dataDeviceSelectionGroups"],mc=["walDeviceSelectionGroups"],jl=["dbDeviceSelectionGroups"],gd=["previewButtonPanel"];function uf(f,y){1&f&&e._UZ(0,"cd-orchestrator-doc-panel")}function cu(f,y){if(1&f&&(e.TgZ(0,"div",23),e.SDv(1,24),e.ALo(2,"titlecase"),e.ALo(3,"upperFirst"),e.qZA()),2&f){const n=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(2,2,n.action))(e.lcZ(3,4,n.resource)),e.QtT(1)}}function df(f,y){1&f&&(e.TgZ(0,"span",32),e.SDv(1,33),e.qZA())}function Pu(f,y){if(1&f&&(e.TgZ(0,"div",25),e.TgZ(1,"label",26),e.ynx(2),e.SDv(3,27),e.BQk(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,28),e.qZA(),e._UZ(7,"br"),e.TgZ(8,"span"),e.SDv(9,29),e.qZA(),e.qZA(),e.qZA(),e.TgZ(10,"div",20),e._UZ(11,"input",30),e.YNc(12,df,2,0,"span",31),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(12),e.Q6J("ngIf",d.form.showError("walSlots",n,"min"))}}function Kc(f,y){1&f&&(e.TgZ(0,"span",32),e.SDv(1,39),e.qZA())}function op(f,y){if(1&f&&(e.TgZ(0,"div",25),e.TgZ(1,"label",34),e.ynx(2),e.SDv(3,35),e.BQk(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,36),e.qZA(),e._UZ(7,"br"),e.TgZ(8,"span"),e.SDv(9,37),e.qZA(),e.qZA(),e.qZA(),e.TgZ(10,"div",20),e._UZ(11,"input",38),e.YNc(12,Kc,2,0,"span",31),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(12),e.Q6J("ngIf",d.form.showError("dbSlots",n,"min"))}}function sp(f,y){if(1&f&&(e.TgZ(0,"div",40),e._UZ(1,"input",41),e.TgZ(2,"label",42),e._uU(3),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.s9C("id",n.key),e.s9C("name",n.key),e.s9C("formControlName",n.key),e.xp6(1),e.s9C("for",n.key),e.xp6(1),e.Oqu(n.desc)}}function mu(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",43),e.TgZ(1,"cd-form-button-panel",44,45),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw(2).submit()}),e.qZA(),e.qZA()}if(2&f){e.oxw();const n=e.MAs(8),d=e.oxw();e.xp6(1),e.Q6J("form",d.form)("disabled",0===n.devices.length)("submitText",d.actionLabels.PREVIEW)}}function Cc(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",2),e.TgZ(1,"form",3,4),e.TgZ(3,"div",5),e.YNc(4,cu,4,6,"div",6),e.TgZ(5,"div",7),e.TgZ(6,"fieldset"),e.TgZ(7,"cd-osd-devices-selection-groups",8,9),e.NdJ("selected",function(w){return e.CHM(n),e.oxw().onDevicesSelected(w)})("cleared",function(w){return e.CHM(n),e.oxw().onDevicesCleared(w)}),e.qZA(),e.qZA(),e.TgZ(9,"fieldset"),e.TgZ(10,"legend"),e.SDv(11,10),e.qZA(),e.TgZ(12,"cd-osd-devices-selection-groups",11,12),e.NdJ("selected",function(w){return e.CHM(n),e.oxw().onDevicesSelected(w)})("cleared",function(w){return e.CHM(n),e.oxw().onDevicesCleared(w)}),e.qZA(),e.YNc(14,Pu,13,1,"div",13),e.TgZ(15,"cd-osd-devices-selection-groups",14,15),e.NdJ("selected",function(w){return e.CHM(n),e.oxw().onDevicesSelected(w)})("cleared",function(w){return e.CHM(n),e.oxw().onDevicesCleared(w)}),e.qZA(),e.YNc(17,op,13,1,"div",13),e.qZA(),e.TgZ(18,"fieldset"),e.TgZ(19,"legend"),e.SDv(20,16),e.qZA(),e.TgZ(21,"div",17),e.TgZ(22,"label",18),e.SDv(23,19),e.qZA(),e.TgZ(24,"div",20),e.YNc(25,sp,4,5,"div",21),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(26,mu,3,3,"div",22),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(8),d=e.MAs(13),w=e.MAs(16),re=e.oxw();e.xp6(1),e.Q6J("formGroup",re.form),e.xp6(3),e.Q6J("ngIf",!re.hideTitle),e.xp6(3),e.Q6J("availDevices",re.availDevices)("canSelect",0!==re.availDevices.length),e.xp6(5),e.Q6J("availDevices",re.availDevices)("canSelect",0!==n.devices.length),e.xp6(2),e.Q6J("ngIf",0!==d.devices.length),e.xp6(1),e.Q6J("availDevices",re.availDevices)("canSelect",0!==n.devices.length),e.xp6(2),e.Q6J("ngIf",0!==w.devices.length),e.xp6(8),e.Q6J("ngForOf",re.featureList),e.xp6(1),e.Q6J("ngIf",!re.hideSubmitBtn)}}let md=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze,Lt,Gt){super(),this.actionLabels=n,this.authStorageService=d,this.orchService=w,this.hostService=re,this.router=Ze,this.modalService=Lt,this.wizardStepService=Gt,this.hideTitle=!1,this.hideSubmitBtn=!1,this.emitDriveGroup=new e.vpe,this.icons=eo.P,this.columns=[],this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new iu,this.featureList=[],this.hasOrchestrator=!0,this.resource="OSDs",this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:"Encryption"}},this.featureList=gn().map(this.features,(On,fr)=>Object.assign(On,{key:fr})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(n=>{this.hasOrchestrator=n.available,n.available?this.getDataDevices():this.loadingNone()}),this.form.get("walSlots").valueChanges.subscribe(n=>this.setSlots("wal",n)),this.form.get("dbSlots").valueChanges.subscribe(n=>this.setSlots("db",n)),gn().each(this.features,n=>{this.form.get("features").get(n.key).valueChanges.subscribe(d=>this.featureFormUpdate(n.key,d))})}createForm(){this.form=new xt.d({walSlots:new Hn.NI(0),dbSlots:new Hn.NI(0),features:new xt.d(this.featureList.reduce((n,d)=>(n[d.key]=new Hn.NI({value:!1,disabled:!0}),n),{}))})}getDataDevices(){this.hostService.inventoryDeviceList().subscribe(n=>{this.allDevices=gn().filter(n,"available"),this.availDevices=[...this.allDevices],this.loadingReady()},()=>{this.allDevices=[],this.availDevices=[],this.loadingError()})}setSlots(n,d){"number"==typeof d&&d>=0&&this.driveGroup.setSlots(n,d)}featureFormUpdate(n,d){this.driveGroup.setFeature(n,d)}enableFeatures(){this.featureList.forEach(n=>{this.form.get(n.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(n=>{const d=this.form.get(n.key);d.disable({emitEvent:!1}),d.setValue(!1,{emitEvent:!1})})}onDevicesSelected(n){if(this.availDevices=n.dataOut,"data"===n.type){const d=gn().find(n.filters,{prop:"hostname"});d?(this.hostname=d.value.raw,this.availDevices=n.dataOut.filter(w=>w.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(n.type,n.filters),this.emitDriveGroup.emit(this.driveGroup)}onDevicesCleared(n){"data"===n.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...n.clearedDevices],this.driveGroup.clearDeviceSelection(n.type),this.form.get(`${n.type}Slots`).setValue(0,{emitEvent:!1}))}submit(){const n=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${n}-${gn().now()}`),this.modalService.show(Qc,{driveGroups:[this.driveGroup.spec]}).componentInstance.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButtonPanel.submitButton.loading=!1}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(hi.j),e.Y36(el),e.Y36(Zl),e.Y36(tn.F0),e.Y36(na.Z),e.Y36(pl))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-form"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Bd,5),e.Gf(mc,5),e.Gf(jl,5),e.Gf(gd,5)),2&n){let w;e.iGM(w=e.CRH())&&(d.dataDeviceSelectionGroups=w.first),e.iGM(w=e.CRH())&&(d.walDeviceSelectionGroups=w.first),e.iGM(w=e.CRH())&&(d.dbDeviceSelectionGroups=w.first),e.iGM(w=e.CRH())&&(d.previewButtonPanel=w.first)}},inputs:{hideTitle:"hideTitle",hideSubmitBtn:"hideSubmitBtn"},outputs:{emitDriveGroup:"emitDriveGroup"},features:[e.qOj],decls:2,vars:2,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr;return y="Shared devices",n="Configuration",d="Features",w="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",re="WAL slots",Ze="How many OSDs per WAL device.",Lt="Specify 0 to let Orchestrator backend decide it.",Gt="Value should be greater than or equal to 0",On="DB slots",fr="How many OSDs per DB device.",hr="Specify 0 to let Orchestrator backend decide it.",Jr="Value should be greater than or equal to 0",[[4,"ngIf"],["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],["class","card-header",4,"ngIf"],[1,"card-body"],["name","Primary","type","data",3,"availDevices","canSelect","selected","cleared"],["dataDeviceSelectionGroups",""],y,["name","WAL","type","wal",3,"availDevices","canSelect","selected","cleared"],["walDeviceSelectionGroups",""],["class","form-group row",4,"ngIf"],["name","DB","type","db",3,"availDevices","canSelect","selected","cleared"],["dbDeviceSelectionGroups",""],n,["formGroupName","features",1,"form-group","row"],["for","features",1,"cd-col-form-label"],d,[1,"cd-col-form-input"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],["class","card-footer",4,"ngIf"],[1,"card-header"],w,[1,"form-group","row"],["for","walSlots",1,"cd-col-form-label"],re,Ze,Lt,["id","walSlots","name","walSlots","type","number","min","0","formControlName","walSlots",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"invalid-feedback"],Gt,["for","dbSlots",1,"cd-col-form-label"],On,fr,hr,["id","dbSlots","name","dbSlots","type","number","min","0","formControlName","dbSlots",1,"form-control"],Jr,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName"],[1,"custom-control-label",3,"for"],[1,"card-footer"],["wrappingClass","text-right",3,"form","disabled","submitText","submitActionEvent"],["previewButtonPanel",""]]},template:function(n,d){1&n&&(e.YNc(0,uf,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,Cc,27,12,"div",1)),2&n&&(e.Q6J("ngIf",!d.hasOrchestrator),e.xp6(1),e.Q6J("cdFormLoading",d.loading))},directives:[s.O5,vn.y,xs,Hn._Y,Hn.JL,Gn.V,Hn.sg,cf,kn.P,Hn.x0,s.sg,yl.S,As.o,Hn.qQ,Hn.wV,Hn.Fj,zn.b,Hn.JJ,Hn.u,Hn.Wl,jr.p],pipes:[s.rS,E.m],styles:[""]}),f})();var $f=o(71289);let ff=(()=>{class f{transform(n){if(gn().isUndefined(n))return "no spec";if(gn().get(n,"unmanaged",!1))return "unmanaged";const d=[],w=gn().get(n,"placement.hosts"),re=gn().get(n,"placement.count"),Ze=gn().get(n,"placement.label"),Lt=gn().get(n,"placement.host_pattern");return gn().isArray(w)&&d.push(...w),gn().isNumber(re)&&d.push("count:" + re + ""),gn().isString(Ze)&&d.push("label:" + Ze + ""),gn().isString(Lt)&&d.push(Lt),d.join(";")}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"placement",type:f,pure:!0}),f})();var vd=o(79765),Hf=o(66682),Ou=o(77393),eu=o(33637);function pf(f,y=eu.P){return n=>n.lift(new Yd(f,y))}class Yd{constructor(y,n){this.dueTime=y,this.scheduler=n}call(y,n){return n.subscribe(new Sp(y,this.dueTime,this.scheduler))}}class Sp extends Ou.L{constructor(y,n,d){super(y),this.dueTime=n,this.scheduler=d,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(y){this.clearDebounce(),this.lastValue=y,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(Mp,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:y}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(y)}}clearDebounce(){const y=this.debouncedSubscription;null!==y&&(this.remove(y),y.unsubscribe(),this.debouncedSubscription=null)}}function Mp(f){f.debouncedNext()}var tc=o(87519),qu=o(45435),hf=o(80842),Bp=o(14745),yd=o(4416),Hc=o(58039);function Zd(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.hij(" ",n," ")}}function Uf(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,23),e.qZA())}function ap(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,28),e.qZA()),2&f&&e.Q6J("ngValue",null)}function Zc(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,29),e.qZA()),2&f&&e.Q6J("ngValue",null)}function bd(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,30),e.qZA()),2&f&&e.Q6J("ngValue",null)}function Ed(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.service_name),e.xp6(1),e.Oqu(n.service_name)}}function Sc(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,31),e.qZA())}const Mc=function(){return["ingress"]},Iu=function(f){return{required:f}};function jf(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",24),e.SDv(2,25),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",26),e.NdJ("change",function(){return e.CHM(n),e.oxw().prePopulateId()}),e.YNc(5,ap,2,1,"option",27),e.YNc(6,Zc,2,1,"option",27),e.YNc(7,bd,2,1,"option",27),e.YNc(8,Ed,2,2,"option",14),e.qZA(),e.YNc(9,Sc,2,0,"span",15),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(7,Iu,e.DdM(6,Mc).includes(n.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",null===n.services),e.xp6(1),e.Q6J("ngIf",null!==n.services&&0===n.services.length),e.xp6(1),e.Q6J("ngIf",null!==n.services&&n.services.length>0),e.xp6(1),e.Q6J("ngForOf",n.services),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("backend_service",d,"required"))}}function Dd(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,35),e.qZA())}function Yp(f,y){1&f&&(e.TgZ(0,"span",22),e.tHW(1,36),e._UZ(2,"strong"),e.N_p(),e.qZA())}const Zp=function(){return["mds","rgw","nfs","iscsi","ingress"]};function Bf(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",32),e.SDv(2,33),e.qZA(),e.TgZ(3,"div",10),e._UZ(4,"input",34),e.YNc(5,Dd,2,0,"span",15),e.YNc(6,Yp,3,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(4,Iu,e.DdM(3,Zp).includes(n.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",n.serviceForm.showError("service_id",d,"required")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("service_id",d,"rgwPattern"))}}function lp(f,y){1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"div",37),e.TgZ(2,"div",38),e._UZ(3,"input",39),e.TgZ(4,"label",40),e.SDv(5,41),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function Op(f,y){1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",42),e.SDv(2,43),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",44),e.TgZ(5,"option",45),e.SDv(6,46),e.qZA(),e.TgZ(7,"option",47),e.SDv(8,48),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function cp(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,52),e.qZA())}function Yf(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",49),e.SDv(2,50),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"input",51),e.NdJ("focus",function(w){return e.CHM(n),e.oxw().labelFocus.next(w.target.value)})("click",function(w){return e.CHM(n),e.oxw().labelClick.next(w.target.value)}),e.qZA(),e.YNc(5,cp,2,0,"span",15),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(4),e.Q6J("ngbTypeahead",n.searchLabels),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("label",d,"required"))}}function xd(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",53),e.SDv(2,54),e.qZA(),e.TgZ(3,"div",10),e._UZ(4,"cd-select-badges",55),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(4),e.Q6J("data",n.serviceForm.controls.hosts.value)("options",n.hosts.options)("messages",n.hosts.messages)}}function _f(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,60),e.qZA())}function Zf(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,61),e.qZA())}function Ap(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",56),e.TgZ(2,"span"),e.SDv(3,57),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,58),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e._UZ(7,"input",59),e.YNc(8,_f,2,0,"span",15),e.YNc(9,Zf,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(8),e.Q6J("ngIf",n.serviceForm.showError("count",d,"min")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("count",d,"pattern"))}}function Vd(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,65),e.qZA())}function up(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,66),e.qZA())}function gf(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,67),e.qZA())}function T(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",62),e.SDv(3,63),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",64),e.YNc(6,Vd,2,0,"span",15),e.YNc(7,up,2,0,"span",15),e.YNc(8,gf,2,0,"span",15),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",n.serviceForm.showError("rgw_frontend_port",d,"pattern")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("rgw_frontend_port",d,"min")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("rgw_frontend_port",d,"max"))}}function R(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,89),e.qZA()),2&f&&e.Q6J("ngValue",null)}function q(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,90),e.qZA()),2&f&&e.Q6J("ngValue",null)}function Pe(f,y){1&f&&(e.TgZ(0,"option",12),e.SDv(1,91),e.qZA()),2&f&&e.Q6J("ngValue",null)}function tt(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.pool_name),e.xp6(1),e.Oqu(n.pool_name)}}function on(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,92),e.qZA())}function bn(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,93),e.qZA())}function rr(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,94),e.qZA())}function wr(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,95),e.qZA())}function qr(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,96),e.qZA())}function co(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,97),e.qZA())}const Ko=function(){return["iscsi"]};function so(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",68),e.SDv(3,69),e.qZA(),e.TgZ(4,"div",10),e.TgZ(5,"select",70),e.YNc(6,R,2,1,"option",27),e.YNc(7,q,2,1,"option",27),e.YNc(8,Pe,2,1,"option",27),e.YNc(9,tt,2,2,"option",14),e.qZA(),e.YNc(10,on,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(11,"div",7),e.TgZ(12,"label",71),e.TgZ(13,"span"),e.SDv(14,72),e.qZA(),e.TgZ(15,"cd-helper"),e.TgZ(16,"span"),e.SDv(17,73),e.qZA(),e._UZ(18,"br"),e.TgZ(19,"span"),e.tHW(20,74),e._UZ(21,"b"),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(22,"div",10),e._UZ(23,"input",75),e.qZA(),e.qZA(),e.TgZ(24,"div",7),e.TgZ(25,"label",76),e.SDv(26,77),e.qZA(),e.TgZ(27,"div",10),e._UZ(28,"input",78),e.YNc(29,bn,2,0,"span",15),e.YNc(30,rr,2,0,"span",15),e.YNc(31,wr,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(32,"div",7),e.TgZ(33,"label",79),e.SDv(34,80),e.qZA(),e.TgZ(35,"div",10),e._UZ(36,"input",81),e.YNc(37,qr,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(38,"div",7),e.TgZ(39,"label",82),e.SDv(40,83),e.qZA(),e.TgZ(41,"div",10),e.TgZ(42,"div",84),e._UZ(43,"input",85),e.TgZ(44,"span",86),e._UZ(45,"button",87),e._UZ(46,"cd-copy-2-clipboard-button",88),e.qZA(),e.YNc(47,co,2,0,"span",15),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",null===n.pools),e.xp6(1),e.Q6J("ngIf",n.pools&&0===n.pools.length),e.xp6(1),e.Q6J("ngIf",n.pools&&n.pools.length>0),e.xp6(1),e.Q6J("ngForOf",n.pools),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("pool",d,"required")),e.xp6(19),e.Q6J("ngIf",n.serviceForm.showError("api_port",d,"pattern")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("api_port",d,"min")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("api_port",d,"max")),e.xp6(2),e.Q6J("ngClass",e.VKq(13,Iu,e.DdM(12,Ko).includes(n.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",n.serviceForm.showError("api_user",d,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(16,Iu,e.DdM(15,Ko).includes(n.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",n.serviceForm.showError("api_password",d,"required"))}}function gs(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,114),e.qZA())}function qs(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,115),e.qZA())}function Vs(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,116),e.qZA())}function oi(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,117),e.qZA())}function Wr(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,118),e.qZA())}function ti(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,119),e.qZA())}function Gi(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,120),e.qZA())}function ro(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,121),e.qZA())}function ia(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,122),e.qZA())}function ps(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",98),e.TgZ(3,"span"),e.SDv(4,99),e.qZA(),e.TgZ(5,"cd-helper"),e.TgZ(6,"span"),e.SDv(7,100),e.qZA(),e.qZA(),e.qZA(),e.TgZ(8,"div",10),e._UZ(9,"input",101),e.YNc(10,gs,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(11,"div",7),e.TgZ(12,"label",102),e.TgZ(13,"span"),e.SDv(14,103),e.qZA(),e.TgZ(15,"cd-helper"),e.TgZ(16,"span"),e.SDv(17,104),e.qZA(),e.qZA(),e.qZA(),e.TgZ(18,"div",10),e._UZ(19,"input",105),e.YNc(20,qs,2,0,"span",15),e.YNc(21,Vs,2,0,"span",15),e.YNc(22,oi,2,0,"span",15),e.YNc(23,Wr,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(24,"div",7),e.TgZ(25,"label",106),e.TgZ(26,"span"),e.SDv(27,107),e.qZA(),e.TgZ(28,"cd-helper"),e.TgZ(29,"span"),e.SDv(30,108),e.qZA(),e.qZA(),e.qZA(),e.TgZ(31,"div",10),e._UZ(32,"input",109),e.YNc(33,ti,2,0,"span",15),e.YNc(34,Gi,2,0,"span",15),e.YNc(35,ro,2,0,"span",15),e.YNc(36,ia,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(37,"div",7),e.TgZ(38,"label",110),e.TgZ(39,"span"),e.SDv(40,111),e.qZA(),e.TgZ(41,"cd-helper"),e.TgZ(42,"span"),e.SDv(43,112),e.qZA(),e.qZA(),e.qZA(),e.TgZ(44,"div",10),e._UZ(45,"input",113),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(2),e.Q6J("ngClass",e.VKq(13,Iu,e.DdM(12,Mc).includes(n.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",n.serviceForm.showError("virtual_ip",d,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(16,Iu,e.DdM(15,Mc).includes(n.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",n.serviceForm.showError("frontend_port",d,"pattern")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("frontend_port",d,"min")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("frontend_port",d,"max")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("frontend_port",d,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(19,Iu,e.DdM(18,Mc).includes(n.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",n.serviceForm.showError("monitor_port",d,"pattern")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("monitor_port",d,"min")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("monitor_port",d,"max")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("monitor_port",d,"required"))}}function la(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.Oqu(n)}}function Fa(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,132),e.qZA())}function Gs(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,133),e.qZA())}function Tl(f,y){1&f&&(e.TgZ(0,"span",22),e.tHW(1,134),e._UZ(2,"strong"),e.N_p(),e.qZA())}function Vp(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,139),e.qZA())}function bh(f,y){1&f&&(e.TgZ(0,"span",22),e.tHW(1,140),e._UZ(2,"strong"),e.N_p(),e.qZA())}function o_(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",135),e.TgZ(2,"span"),e.SDv(3,136),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,137),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",10),e._UZ(8,"input",138),e.YNc(9,Vp,2,0,"span",15),e.YNc(10,bh,3,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(9),e.Q6J("ngIf",n.serviceForm.showError("engine_id",d,"required")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("engine_id",d,"snmpEngineIdPattern"))}}function s_(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.hij(" ",n," ")}}function Lu(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,145),e.qZA())}const a_=function(){return["SHA","MD5"]};function Eh(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",141),e.SDv(2,142),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",143),e.TgZ(5,"option",12),e.SDv(6,144),e.qZA(),e.YNc(7,s_,2,2,"option",14),e.qZA(),e.YNc(8,Lu,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(5),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(3,a_)),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("auth_protocol",d,"required"))}}function l_(f,y){if(1&f&&(e.TgZ(0,"option",21),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.hij(" ",n," ")}}const c_=function(){return["DES","AES"]};function u_(f,y){1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",146),e.SDv(2,147),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",148),e.TgZ(5,"option",12),e.SDv(6,149),e.qZA(),e.YNc(7,l_,2,2,"option",14),e.qZA(),e.qZA(),e.qZA()),2&f&&(e.xp6(5),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(2,c_)))}function d_(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,153),e.qZA())}function Th(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",150),e.TgZ(2,"span"),e.SDv(3,151),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",152),e.YNc(6,d_,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",n.serviceForm.showError("snmp_community",d,"required"))}}function Gp(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,157),e.qZA())}function Ch(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",154),e.TgZ(2,"span"),e.SDv(3,155),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",156),e.YNc(6,Gp,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",n.serviceForm.showError("snmp_v3_auth_username",d,"required"))}}function f_(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,161),e.qZA())}function ca(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",158),e.TgZ(2,"span"),e.SDv(3,159),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",160),e.YNc(6,f_,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",n.serviceForm.showError("snmp_v3_auth_password",d,"required"))}}function Sh(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,165),e.qZA())}function Mh(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",162),e.TgZ(2,"span"),e.SDv(3,163),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",164),e.YNc(6,Sh,2,0,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(6),e.Q6J("ngIf",n.serviceForm.showError("snmp_v3_priv_password",d,"required"))}}const wp=function(){return["V2c","V3"]};function Ju(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",123),e.SDv(3,124),e.qZA(),e.TgZ(4,"div",10),e.TgZ(5,"select",125),e.NdJ("change",function(){return e.CHM(n),e.oxw().clearValidations()}),e.TgZ(6,"option",12),e.SDv(7,126),e.qZA(),e.YNc(8,la,2,2,"option",14),e.qZA(),e.YNc(9,Fa,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(10,"div",7),e.TgZ(11,"label",127),e.TgZ(12,"span"),e.SDv(13,128),e.qZA(),e.TgZ(14,"cd-helper"),e.TgZ(15,"span"),e.SDv(16,129),e.qZA(),e.qZA(),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",130),e.YNc(19,Gs,2,0,"span",15),e.YNc(20,Tl,3,0,"span",15),e.qZA(),e.qZA(),e.YNc(21,o_,11,2,"div",16),e.YNc(22,Eh,9,4,"div",16),e.YNc(23,u_,8,3,"div",16),e.TgZ(24,"fieldset"),e.TgZ(25,"legend"),e.SDv(26,131),e.qZA(),e.YNc(27,Th,7,1,"div",16),e.YNc(28,Ch,7,1,"div",16),e.YNc(29,ca,7,1,"div",16),e.YNc(30,Mh,7,1,"div",16),e.qZA(),e.BQk()}if(2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(12,wp)),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("snmp_version",d,"required")),e.xp6(10),e.Q6J("ngIf",n.serviceForm.showError("snmp_destination",d,"required")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("snmp_destination",d,"snmpDestinationPattern")),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value),e.xp6(4),e.Q6J("ngIf","V2c"===n.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===n.serviceForm.controls.snmp_version.value&&null!=n.serviceForm.controls.privacy_protocol.value)}}function mf(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,174),e.qZA())}function Td(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,175),e.qZA())}function zp(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",169),e.TgZ(2,"span"),e.SDv(3,170),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,171),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e.TgZ(7,"textarea",172),e._uU(8,"              "),e.qZA(),e.TgZ(9,"input",173),e.NdJ("change",function(w){return e.CHM(n),e.oxw(2).fileUpload(w.target.files,"ssl_cert")}),e.qZA(),e.YNc(10,mf,2,0,"span",15),e.YNc(11,Td,2,0,"span",15),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(10),e.Q6J("ngIf",n.serviceForm.showError("ssl_cert",d,"required")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("ssl_cert",d,"pattern"))}}function Gd(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,180),e.qZA())}function dp(f,y){1&f&&(e.TgZ(0,"span",22),e.SDv(1,181),e.qZA())}function p_(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",176),e.TgZ(2,"span"),e.SDv(3,177),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,178),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e.TgZ(7,"textarea",179),e._uU(8,"              "),e.qZA(),e.TgZ(9,"input",173),e.NdJ("change",function(w){return e.CHM(n),e.oxw(2).fileUpload(w.target.files,"ssl_key")}),e.qZA(),e.YNc(10,Gd,2,0,"span",15),e.YNc(11,dp,2,0,"span",15),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(2),d=e.MAs(7);e.xp6(10),e.Q6J("ngIf",n.serviceForm.showError("ssl_key",d,"required")),e.xp6(1),e.Q6J("ngIf",n.serviceForm.showError("ssl_key",d,"pattern"))}}const Oh=function(){return["rgw","ingress"]};function Lm(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"div",37),e.TgZ(3,"div",38),e._UZ(4,"input",166),e.TgZ(5,"label",167),e.SDv(6,168),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(7,zp,12,2,"div",16),e.YNc(8,p_,12,2,"div",16),e.BQk()),2&f){const n=e.oxw();e.xp6(7),e.Q6J("ngIf",n.serviceForm.controls.ssl.value),e.xp6(1),e.Q6J("ngIf",n.serviceForm.controls.ssl.value&&!e.DdM(2,Oh).includes(n.serviceForm.controls.service_type.value))}}const h_=function(){return["rgw","iscsi","ingress"]};let __=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze,Lt,Gt,On,fr){super(),this.actionLabels=n,this.cephServiceService=d,this.formBuilder=w,this.hostService=re,this.poolService=Ze,this.router=Lt,this.taskWrapperService=Gt,this.route=On,this.activeModal=fr,this.RGW_SVC_ID_PATTERN=/^([^.]+)(\.([^.]+)\.([^.]+))?$/,this.SNMP_DESTINATION_PATTERN=/^[^\:]+:[0-9]/,this.SNMP_ENGINE_ID_PATTERN=/^[0-9A-Fa-f]{10,64}/g,this.hiddenServices=[],this.editing=!1,this.serviceTypes=[],this.labelClick=new vd.xQ,this.labelFocus=new vd.xQ,this.services=[],this.searchLabels=hr=>(0,Hf.T)(hr.pipe(pf(200),(0,tc.x)()),this.labelFocus,this.labelClick.pipe((0,qu.h)(()=>!this.typeahead.isPopupOpen()))).pipe((0,Ds.U)(Jr=>this.labels.filter($i=>$i.toLowerCase().indexOf(Jr.toLowerCase())>-1).slice(0,10))),this.resource="service",this.hosts={options:[],messages:new tl.a({empty:"There are no hosts.",filter:"Filter hosts"})},this.createForm()}createForm(){this.serviceForm=this.formBuilder.group({service_type:[null,[Hn.kI.required]],service_id:[null,[mo.h.requiredIf({service_type:"mds"}),mo.h.requiredIf({service_type:"nfs"}),mo.h.requiredIf({service_type:"iscsi"}),mo.h.requiredIf({service_type:"ingress"}),mo.h.composeIf({service_type:"rgw"},[Hn.kI.required,mo.h.custom("rgwPattern",n=>!gn().isEmpty(n)&&!this.RGW_SVC_ID_PATTERN.test(n))])]],placement:["hosts"],label:[null,[mo.h.requiredIf({placement:"label",unmanaged:!1})]],hosts:[[]],count:[null,[mo.h.number(!1)]],unmanaged:[!1],pool:[null,[mo.h.requiredIf({service_type:"iscsi",unmanaged:!1})]],rgw_frontend_port:[null,[mo.h.number(!1)]],trusted_ip_list:[null],api_port:[null,[mo.h.number(!1)]],api_user:[null,[mo.h.requiredIf({service_type:"iscsi",unmanaged:!1})]],api_password:[null,[mo.h.requiredIf({service_type:"iscsi",unmanaged:!1})]],backend_service:[null,[mo.h.requiredIf({service_type:"ingress",unmanaged:!1})]],virtual_ip:[null,[mo.h.requiredIf({service_type:"ingress",unmanaged:!1})]],frontend_port:[null,[mo.h.number(!1)]],monitor_port:[null,[mo.h.number(!1)]],virtual_interface_networks:[null],ssl:[!1],ssl_cert:["",[mo.h.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[Hn.kI.required,mo.h.pemCert()]),mo.h.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[Hn.kI.required,mo.h.sslCert()]),mo.h.composeIf({service_type:"ingress",unmanaged:!1,ssl:!0},[Hn.kI.required,mo.h.pemCert()])]],ssl_key:["",[mo.h.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[Hn.kI.required,mo.h.sslPrivKey()])]],snmp_version:[null,[mo.h.requiredIf({service_type:"snmp-gateway"})]],snmp_destination:[null,{validators:[mo.h.requiredIf({service_type:"snmp-gateway"}),mo.h.custom("snmpDestinationPattern",n=>!gn().isEmpty(n)&&!this.SNMP_DESTINATION_PATTERN.test(n))]}],engine_id:[null,[mo.h.requiredIf({service_type:"snmp-gateway"}),mo.h.custom("snmpEngineIdPattern",n=>!gn().isEmpty(n)&&!this.SNMP_ENGINE_ID_PATTERN.test(n))]],auth_protocol:["SHA",[mo.h.requiredIf({service_type:"snmp-gateway"})]],privacy_protocol:[null],snmp_community:[null,[mo.h.requiredIf({snmp_version:"V2c"})]],snmp_v3_auth_username:[null,[mo.h.requiredIf({service_type:"snmp-gateway"})]],snmp_v3_auth_password:[null,[mo.h.requiredIf({service_type:"snmp-gateway"})]],snmp_v3_priv_password:[null,[mo.h.requiredIf({privacy_protocol:{op:"!empty"}})]]})}ngOnInit(){this.action=this.actionLabels.CREATE,this.router.url.includes("services/(modal:create")?this.pageURL="services":this.router.url.includes("services/(modal:edit")&&(this.editing=!0,this.pageURL="services",this.route.params.subscribe(n=>{this.serviceName=n.name,this.serviceType=n.type})),this.cephServiceService.getKnownTypes().subscribe(n=>{this.hiddenServices.push("osd","container"),this.serviceTypes=gn().difference(n,this.hiddenServices).sort()}),this.hostService.list("false").subscribe(n=>{const d=[];gn().forEach(n,w=>{if(gn().get(w,"sources.orchestrator",!1)){const re=new Bp.$(!1,gn().get(w,"hostname"),"");d.push(re)}}),this.hosts.options=[...d]}),this.hostService.getLabels().subscribe(n=>{this.labels=n}),this.poolService.getList().subscribe(n=>{this.pools=n}),this.cephServiceService.list().subscribe(n=>{this.services=n.filter(d=>"rgw"===d.service_type)}),this.editing&&(this.action=this.actionLabels.EDIT,this.disableForEditing(this.serviceType),this.cephServiceService.list(this.serviceName).subscribe(n=>{var d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o;if(["service_type","service_id","unmanaged"].forEach(Xs=>{this.serviceForm.get(Xs).setValue(n[0][Xs])}),!n[0].unmanaged){const Xs=Object.keys(n[0].placement)[0];let ls;ls=["hosts","label"].indexOf(Xs)>=0?Xs:"hosts",this.serviceForm.get("placement").setValue(ls),this.serviceForm.get("count").setValue(n[0].placement.count),(null===(d=n[0])||void 0===d?void 0:d.placement[ls])&&this.serviceForm.get(ls).setValue(null===(w=n[0])||void 0===w?void 0:w.placement[ls])}switch(this.serviceType){case"iscsi":["pool","api_password","api_user","trusted_ip_list","api_port"].forEach(ga=>{this.serviceForm.get(ga).setValue(n[0].spec[ga])}),this.serviceForm.get("ssl").setValue(null===(re=n[0].spec)||void 0===re?void 0:re.api_secure),(null===(Ze=n[0].spec)||void 0===Ze?void 0:Ze.api_secure)&&(this.serviceForm.get("ssl_cert").setValue(null===(Lt=n[0].spec)||void 0===Lt?void 0:Lt.ssl_cert),this.serviceForm.get("ssl_key").setValue(null===(Gt=n[0].spec)||void 0===Gt?void 0:Gt.ssl_key));break;case"rgw":this.serviceForm.get("rgw_frontend_port").setValue(null===(On=n[0].spec)||void 0===On?void 0:On.rgw_frontend_port),this.serviceForm.get("ssl").setValue(null===(fr=n[0].spec)||void 0===fr?void 0:fr.ssl),(null===(hr=n[0].spec)||void 0===hr?void 0:hr.ssl)&&this.serviceForm.get("ssl_cert").setValue(null===(Jr=n[0].spec)||void 0===Jr?void 0:Jr.rgw_frontend_ssl_certificate);break;case"ingress":["backend_service","virtual_ip","frontend_port","monitor_port","virtual_interface_networks","ssl"].forEach(ga=>{this.serviceForm.get(ga).setValue(n[0].spec[ga])}),(null===($i=n[0].spec)||void 0===$i?void 0:$i.ssl)&&(this.serviceForm.get("ssl_cert").setValue(null===(bo=n[0].spec)||void 0===bo?void 0:bo.ssl_cert),this.serviceForm.get("ssl_key").setValue(null===(_o=n[0].spec)||void 0===_o?void 0:_o.ssl_key));break;case"snmp-gateway":["snmp_version","snmp_destination"].forEach(ga=>{this.serviceForm.get(ga).setValue(n[0].spec[ga])}),"V3"===this.serviceForm.getValue("snmp_version")?["engine_id","auth_protocol","privacy_protocol","snmp_v3_auth_username","snmp_v3_auth_password","snmp_v3_priv_password"].forEach(wl=>{null!==wl&&("snmp_v3_auth_username"===wl||"snmp_v3_auth_password"===wl||"snmp_v3_priv_password"===wl?this.serviceForm.get(wl).setValue(n[0].spec.credentials[wl]):this.serviceForm.get(wl).setValue(n[0].spec[wl]))}):this.serviceForm.get("snmp_community").setValue(n[0].spec.credentials.snmp_community)}}))}disableForEditing(n){switch(["service_type","service_id"].forEach(w=>{this.serviceForm.get(w).disable()}),n){case"ingress":this.serviceForm.get("backend_service").disable()}}fileUpload(n,d){const w=n[0],re=new FileReader;re.addEventListener("load",Ze=>{const Lt=this.serviceForm.get(d);Lt.setValue(Ze.target.result),Lt.markAsDirty(),Lt.markAsTouched(),Lt.updateValueAndValidity()}),re.readAsText(w,"utf8")}prePopulateId(){const n=this.serviceForm.get("service_id"),d=this.serviceForm.getValue("backend_service");n.reset({value:d,disabled:!0})}onSubmit(){var n,d,w,re,Ze;const Lt=this,Gt=this.serviceForm.getRawValue(),On=Gt.service_type;let fr=`service/${uo.MQ.CREATE}`;this.editing&&(fr=`service/${uo.MQ.EDIT}`);const hr={service_type:On,placement:{},unmanaged:Gt.unmanaged};let Jr;if("rgw"===On){const _o=Gt.service_id.match(this.RGW_SVC_ID_PATTERN);Jr=_o[1],_o[3]&&(hr.rgw_realm=_o[3],hr.rgw_zone=_o[4])}else Jr=Gt.service_id;const $i=Jr;let bo=On;if(gn().isString($i)&&!gn().isEmpty($i)&&(bo=`${On}.${$i}`,hr.service_id=$i),!Gt.unmanaged){switch(Gt.placement){case"hosts":Gt.hosts.length>0&&(hr.placement.hosts=Gt.hosts);break;case"label":hr.placement.label=Gt.label}switch(gn().isNumber(Gt.count)&&Gt.count>0&&(hr.placement.count=Gt.count),On){case"rgw":gn().isNumber(Gt.rgw_frontend_port)&&Gt.rgw_frontend_port>0&&(hr.rgw_frontend_port=Gt.rgw_frontend_port),hr.ssl=Gt.ssl,Gt.ssl&&(hr.rgw_frontend_ssl_certificate=null===(n=Gt.ssl_cert)||void 0===n?void 0:n.trim());break;case"iscsi":hr.pool=Gt.pool,gn().isString(Gt.trusted_ip_list)&&!gn().isEmpty(Gt.trusted_ip_list)&&(hr.trusted_ip_list=Gt.trusted_ip_list.trim()),gn().isNumber(Gt.api_port)&&Gt.api_port>0&&(hr.api_port=Gt.api_port),hr.api_user=Gt.api_user,hr.api_password=Gt.api_password,hr.api_secure=Gt.ssl,Gt.ssl&&(hr.ssl_cert=null===(d=Gt.ssl_cert)||void 0===d?void 0:d.trim(),hr.ssl_key=null===(w=Gt.ssl_key)||void 0===w?void 0:w.trim());break;case"ingress":hr.backend_service=Gt.backend_service,hr.service_id=Gt.backend_service,gn().isString(Gt.virtual_ip)&&!gn().isEmpty(Gt.virtual_ip)&&(hr.virtual_ip=Gt.virtual_ip.trim()),gn().isNumber(Gt.frontend_port)&&Gt.frontend_port>0&&(hr.frontend_port=Gt.frontend_port),gn().isNumber(Gt.monitor_port)&&Gt.monitor_port>0&&(hr.monitor_port=Gt.monitor_port),hr.ssl=Gt.ssl,Gt.ssl&&(hr.ssl_cert=null===(re=Gt.ssl_cert)||void 0===re?void 0:re.trim(),hr.ssl_key=null===(Ze=Gt.ssl_key)||void 0===Ze?void 0:Ze.trim()),hr.virtual_interface_networks=Gt.virtual_interface_networks;break;case"snmp-gateway":hr.credentials={},hr.snmp_version=Gt.snmp_version,hr.snmp_destination=Gt.snmp_destination,"V3"===Gt.snmp_version?(hr.engine_id=Gt.engine_id,hr.auth_protocol=Gt.auth_protocol,hr.credentials.snmp_v3_auth_username=Gt.snmp_v3_auth_username,hr.credentials.snmp_v3_auth_password=Gt.snmp_v3_auth_password,null!==Gt.privacy_protocol&&(hr.privacy_protocol=Gt.privacy_protocol,hr.credentials.snmp_v3_priv_password=Gt.snmp_v3_priv_password)):hr.credentials.snmp_community=Gt.snmp_community}}this.taskWrapperService.wrapTaskAroundCall({task:new Va.R(fr,{service_name:bo}),call:this.cephServiceService.create(hr)}).subscribe({error(){Lt.serviceForm.setErrors({cdSubmitButton:!0})},complete:()=>{"services"===this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):this.activeModal.close()}})}clearValidations(){const n=this.serviceForm.getValue("snmp_version"),d=this.serviceForm.getValue("privacy_protocol");"V3"===n?this.serviceForm.get("snmp_community").clearValidators():(this.serviceForm.get("engine_id").clearValidators(),this.serviceForm.get("auth_protocol").clearValidators(),this.serviceForm.get("privacy_protocol").clearValidators(),this.serviceForm.get("snmp_v3_auth_username").clearValidators(),this.serviceForm.get("snmp_v3_auth_password").clearValidators()),null===d&&this.serviceForm.get("snmp_v3_priv_password").clearValidators()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(me),e.Y36($c.O),e.Y36(Zl),e.Y36(hf.q),e.Y36(tn.F0),e.Y36(ki.P),e.Y36(tn.gz),e.Y36(Br.Kz))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-service-form"]],viewQuery:function(n,d){if(1&n&&e.Gf(Br.dR,5),2&n){let w;e.iGM(w=e.CRH())&&(d.typeahead=w.first)}},inputs:{hiddenServices:"hiddenServices",editing:"editing",serviceName:"serviceName",serviceType:"serviceType"},features:[e.qOj],decls:35,vars:31,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls,js,ga,wl,wa,Wl,zc,Ls,yu,wf,ju,Bu,Df,xf,as,Cs,Bs,Da,sc,fu,Pc,Wc,Pl,vp,pu,Cd,Ld,Yu,Ys,sg,yp,ag,lg,n_,bp,Sm,r_,cg,ug,dg,Ns,Py,X1,Iy,Ly,wT,DT,xT,Mm,Fy,ky,$y,Hy,Uy,jy,K1,Om,By,mh,wu,ev,Kd,Am,Yy,tv,nv,rv,Zy,Vy,Gy,iv,zy,RT,Wy,qy,vh,NT;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Type",d="-- Select a service type --",w="This field is required.",re="Backend Service",Ze="Loading...",Lt="-- No service available --",Gt="-- Select an existing RGW service --",On="This field is required.",fr="Id",hr="This field is required.",Jr="The value does not match the pattern " + "\ufffd#2\ufffd" + "<service_id>[.<realm_name>.<zone_name>]" + "\ufffd/#2\ufffd" + ".",$i="Unmanaged",bo="Placement",_o="Hosts",Yi="Label",Xs="Label",ls="This field is required.",js="Hosts",ga="Count",wl="Only that number of daemons will be created.",wa="The value must be at least 1.",Wl="The entered value needs to be a number.",zc="Port",Ls="The entered value needs to be a number.",yu="The value must be at least 1.",wf="The value cannot exceed 65535.",ju="Pool",Bu="Trusted IPs",Df="Comma separated list of IP addresses.",xf="Please add the " + "\ufffd#21\ufffd" + "Ceph Manager" + "\ufffd/#21\ufffd" + " IP addresses here, otherwise the iSCSI gateways can't be reached.",as="Port",Cs="User",Bs="Password",Da="Loading...",sc="-- No pools available --",fu="-- Select a pool --",Pc="This field is required.",Wc="The entered value needs to be a number.",Pl="The value must be at least 1.",vp="The value cannot exceed 65535.",pu="This field is required.",Cd="This field is required.",Ld="Virtual IP",Yu="The virtual IP address and subnet (in CIDR notation) where the ingress service will be available.",Ys="Frontend Port",sg="The port used to access the ingress service.",yp="Monitor Port",ag="The port used by haproxy for load balancer status.",lg="CIDR Networks",n_="A list of networks to identify which network interface to use for the virtual IP address.",bp="This field is required.",Sm="The entered value needs to be a number.",r_="The value must be at least 1.",cg="The value cannot exceed 65535.",ug="This field is required.",dg="The entered value needs to be a number.",Ns="The value must be at least 1.",Py="The value cannot exceed 65535.",X1="This field is required.",Iy="Version",Ly="-- Select SNMP version --",wT="Destination",DT="Must be of the format hostname:port.",xT="Credentials",Mm="This field is required.",Fy="This field is required.",ky="The value does not match the pattern: " + "\ufffd#2\ufffd" + "hostname:port" + "\ufffd/#2\ufffd" + "",$y="Engine Id",Hy="Unique identifier for the device (in hex).",Uy="This field is required.",jy="The value does not match the pattern: " + "\ufffd#2\ufffd" + "Must be in hexadecimal and length must be multiple of 2 with min value = 10 amd max value = 64." + "\ufffd/#2\ufffd" + "",K1="Auth Protocol",Om="-- Select auth protocol --",By="This field is required.",mh="Privacy Protocol",wu="-- Select privacy protocol --",ev="SNMP Community",Kd="This field is required.",Am="Username",Yy="This field is required.",tv="Password",nv="This field is required.",rv="Encryption",Zy="This field is required.",Vy="SSL",Gy="Certificate",iv="The SSL certificate in PEM format.",zy="This field is required.",RT="Invalid SSL certificate.",Wy="Private key",qy="The SSL private key in PEM format.",vh="This field is required.",NT="Invalid SSL private key.",[[3,"pageURL","modalRef"],[1,"modal-title"],y,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","service_type",1,"cd-col-form-label","required"],n,[1,"cd-col-form-input"],["id","service_type","name","service_type","formControlName","service_type",1,"form-control"],[3,"ngValue"],d,[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],[1,"text-right"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],w,["for","backend_service",1,"cd-col-form-label",3,"ngClass"],re,["id","backend_service","name","backend_service","formControlName","backend_service",1,"form-control",3,"change"],[3,"ngValue",4,"ngIf"],Ze,Lt,Gt,On,["for","service_id",1,"cd-col-form-label",3,"ngClass"],fr,["id","service_id","type","text","formControlName","service_id",1,"form-control"],hr,Jr,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","unmanaged","type","checkbox","formControlName","unmanaged",1,"custom-control-input"],["for","unmanaged",1,"custom-control-label"],$i,["for","placement",1,"cd-col-form-label"],bo,["id","placement","formControlName","placement",1,"form-control"],["value","hosts"],_o,["value","label"],Yi,["for","label",1,"cd-col-form-label"],Xs,["id","label","type","text","formControlName","label",1,"form-control",3,"ngbTypeahead","focus","click"],ls,["for","hosts",1,"cd-col-form-label"],js,["id","hosts",3,"data","options","messages"],["for","count",1,"cd-col-form-label"],ga,wl,["id","count","type","number","formControlName","count","min","1",1,"form-control"],wa,Wl,["for","rgw_frontend_port",1,"cd-col-form-label"],zc,["id","rgw_frontend_port","type","number","formControlName","rgw_frontend_port","min","1","max","65535",1,"form-control"],Ls,yu,wf,["for","pool",1,"cd-col-form-label","required"],ju,["id","pool","name","pool","formControlName","pool",1,"form-control"],["for","trusted_ip_list",1,"cd-col-form-label"],Bu,Df,xf,["id","trusted_ip_list","type","text","formControlName","trusted_ip_list",1,"form-control"],["for","api_port",1,"cd-col-form-label"],as,["id","api_port","type","number","formControlName","api_port","min","1","max","65535",1,"form-control"],["for","api_user",1,"cd-col-form-label",3,"ngClass"],Cs,["id","api_user","type","text","formControlName","api_user",1,"form-control"],["for","api_password",1,"cd-col-form-label",3,"ngClass"],Bs,[1,"input-group"],["id","api_password","type","password","autocomplete","new-password","formControlName","api_password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","api_password",1,"btn","btn-light"],["source","api_password"],Da,sc,fu,Pc,Wc,Pl,vp,pu,Cd,["for","virtual_ip",1,"cd-col-form-label",3,"ngClass"],Ld,Yu,["id","virtual_ip","type","text","formControlName","virtual_ip",1,"form-control"],["for","frontend_port",1,"cd-col-form-label",3,"ngClass"],Ys,sg,["id","frontend_port","type","number","formControlName","frontend_port","min","1","max","65535",1,"form-control"],["for","monitor_port",1,"cd-col-form-label",3,"ngClass"],yp,ag,["id","monitor_port","type","number","formControlName","monitor_port","min","1","max","65535",1,"form-control"],["for","virtual_interface_networks",1,"cd-col-form-label"],lg,n_,["id","virtual_interface_networks","type","text","formControlName","virtual_interface_networks",1,"form-control"],bp,Sm,r_,cg,ug,dg,Ns,Py,X1,["for","snmp_version",1,"cd-col-form-label","required"],Iy,["id","snmp_version","name","snmp_version","formControlName","snmp_version",1,"form-control",3,"change"],Ly,["for","snmp_destination",1,"cd-col-form-label","required"],wT,DT,["id","snmp_destination","type","text","formControlName","snmp_destination",1,"form-control"],xT,Mm,Fy,ky,["for","engine_id",1,"cd-col-form-label","required"],$y,Hy,["id","engine_id","type","text","formControlName","engine_id",1,"form-control"],Uy,jy,["for","auth_protocol",1,"cd-col-form-label","required"],K1,["id","auth_protocol","name","auth_protocol","formControlName","auth_protocol",1,"form-control"],Om,By,["for","privacy_protocol",1,"cd-col-form-label"],mh,["id","privacy_protocol","name","privacy_protocol","formControlName","privacy_protocol",1,"form-control"],wu,["for","snmp_community",1,"cd-col-form-label","required"],ev,["id","snmp_community","type","text","formControlName","snmp_community",1,"form-control"],Kd,["for","snmp_v3_auth_username",1,"cd-col-form-label","required"],Am,["id","snmp_v3_auth_username","type","text","formControlName","snmp_v3_auth_username",1,"form-control"],Yy,["for","snmp_v3_auth_password",1,"cd-col-form-label","required"],tv,["id","snmp_v3_auth_password","type","password","formControlName","snmp_v3_auth_password",1,"form-control"],nv,["for","snmp_v3_priv_password",1,"cd-col-form-label","required"],rv,["id","snmp_v3_priv_password","type","password","formControlName","snmp_v3_priv_password",1,"form-control"],Zy,["id","ssl","type","checkbox","formControlName","ssl",1,"custom-control-input"],["for","ssl",1,"custom-control-label"],Vy,["for","ssl_cert",1,"cd-col-form-label"],Gy,iv,["id","ssl_cert","formControlName","ssl_cert","rows","5",1,"form-control","resize-vertical","text-monospace","text-pre"],["type","file",3,"change"],zy,RT,["for","ssl_key",1,"cd-col-form-label"],Wy,qy,["id","ssl_key","formControlName","ssl_key","rows","5",1,"form-control","resize-vertical","text-monospace","text-pre"],vh,NT]},template:function(n,d){if(1&n&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.qZA(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.TgZ(13,"select",11),e.TgZ(14,"option",12),e.SDv(15,13),e.qZA(),e.YNc(16,Zd,2,2,"option",14),e.qZA(),e.YNc(17,Uf,2,0,"span",15),e.qZA(),e.qZA(),e.YNc(18,jf,10,9,"div",16),e.YNc(19,Bf,7,6,"div",16),e.YNc(20,lp,6,0,"div",16),e.YNc(21,Op,9,0,"div",16),e.YNc(22,Yf,6,2,"div",16),e.YNc(23,xd,5,3,"div",16),e.YNc(24,Ap,10,2,"div",16),e.YNc(25,T,9,3,"ng-container",17),e.YNc(26,so,48,18,"ng-container",17),e.YNc(27,ps,46,21,"ng-container",17),e.YNc(28,Ju,31,13,"ng-container",17),e.YNc(29,Lm,9,3,"ng-container",17),e.qZA(),e.TgZ(30,"div",18),e.TgZ(31,"div",19),e.TgZ(32,"cd-form-button-panel",20),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.ALo(33,"titlecase"),e.ALo(34,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n){const w=e.MAs(7);e.Q6J("pageURL",d.pageURL)("modalRef",d.activeModal),e.xp6(4),e.pQV(e.lcZ(3,22,d.action))(e.lcZ(4,24,d.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.serviceForm),e.xp6(8),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",d.serviceTypes),e.xp6(1),e.Q6J("ngIf",d.serviceForm.showError("service_type",w,"required")),e.xp6(1),e.Q6J("ngIf","ingress"===d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","snmp-gateway"!==d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","snmp-gateway"!==d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"label"===d.serviceForm.controls.placement.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"hosts"===d.serviceForm.controls.placement.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"rgw"===d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"iscsi"===d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"ingress"===d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&"snmp-gateway"===d.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!d.serviceForm.controls.unmanaged.value&&e.DdM(30,h_).includes(d.serviceForm.controls.service_type.value)),e.xp6(3),e.Q6J("form",d.serviceForm)("submitText",e.lcZ(33,26,d.action)+" "+e.lcZ(34,28,d.resource))}},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,kn.P,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.u,Hn.YN,Hn.Kr,s.sg,s.O5,jr.p,s.mk,Hn.Fj,Hn.Wl,Br.dR,p.m,yl.S,Hn.wV,Hn.qQ,Hn.Fd,yd.C,Hc.s],pipes:[s.rS,E.m],styles:[""]}),f})();function zd(f,y){if(1&f&&(e.ynx(0),e._UZ(1,"cd-service-daemon-list",1),e.BQk()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("serviceName",n.selection.service_name)}}let Wp=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-service-details"]],inputs:{permissions:"permissions",selection:"selection"},decls:1,vars:1,consts:[[4,"ngIf"],[3,"serviceName"]],template:function(n,d){1&n&&e.YNc(0,zd,2,1,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Jc],styles:[""]}),f})();function qp(f,y){1&f&&e._UZ(0,"cd-orchestrator-doc-panel")}function Ah(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"cd-table",2),e.NdJ("fetchData",function(w){return e.CHM(n),e.oxw().getServices(w)})("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e._UZ(2,"cd-table-actions",3),e._UZ(3,"cd-service-details",4),e.qZA(),e.BQk()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("data",n.services)("columns",n.columns)("autoReload",5e3)("hasDetails",n.hasDetails),e.xp6(1),e.Q6J("permission",n.permissions.hosts)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("permissions",n.permissions)("selection",n.expandedRow)}}const g_="services";let m_=(()=>{class f extends mi.o{constructor(n,d,w,re,Ze,Lt,Gt,On){super(),this.actionLabels=n,this.authStorageService=d,this.modalService=w,this.orchService=re,this.cephServiceService=Ze,this.relativeDatePipe=Lt,this.taskWrapperService=Gt,this.router=On,this.hiddenColumns=[],this.hiddenServices=[],this.hasDetails=!0,this.routedModal=!0,this.showDocPanel=!1,this.actionOrchFeatures={create:[ml.SERVICE_CREATE],update:[ml.SERVICE_EDIT],delete:[ml.SERVICE_DELETE]},this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new si.r,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:eo.P.add,click:()=>this.openModal(),name:this.actionLabels.CREATE,canBePrimary:fr=>!fr.hasSelection,disable:fr=>this.getDisable("create",fr)},{permission:"update",icon:eo.P.edit,click:()=>this.openModal(!0),name:this.actionLabels.EDIT,disable:fr=>this.getDisable("update",fr)},{permission:"delete",icon:eo.P.destroy,click:()=>this.deleteAction(),name:this.actionLabels.DELETE,disable:fr=>this.getDisable("delete",fr)}]}openModal(n=!1){var d,w,re;if(this.routedModal)this.router.navigate(n?[g_,{outlets:{modal:[uo.MQ.EDIT,this.selection.first().service_type,this.selection.first().service_name]}}]:[g_,{outlets:{modal:[uo.MQ.CREATE]}}]);else{let Ze={};Ze=n?{serviceName:null===(d=this.selection.first())||void 0===d?void 0:d.service_name,serviceType:null===(re=null===(w=this.selection)||void 0===w?void 0:w.first())||void 0===re?void 0:re.service_type,hiddenServices:this.hiddenServices,editing:n}:{hiddenServices:this.hiddenServices,editing:n},this.bsModalRef=this.modalService.show(__,Ze,{size:"lg"})}}ngOnInit(){const n=[{name:"Service",prop:"service_name",flexGrow:1},{name:"Placement",prop:"",pipe:new ff,flexGrow:2},{name:"Running",prop:"status.running",flexGrow:1},{name:"Size",prop:"status.size",flexGrow:1},{name:"Last Refreshed",prop:"status.last_refresh",pipe:this.relativeDatePipe,flexGrow:1}];this.columns=n.filter(d=>!this.hiddenColumns.includes(d.prop)),this.orchService.status().subscribe(d=>{this.orchStatus=d,this.showDocPanel=!d.available})}ngOnChanges(){var n;(null===(n=this.orchStatus)||void 0===n?void 0:n.available)&&(this.services=[],this.table.reloadData())}getDisable(n,d){var w;return"delete"===n&&!(null==d?void 0:d.hasSingleSelection)||"update"===n&&["osd","container"].indexOf(null===(w=this.selection.first())||void 0===w?void 0:w.service_type)>=0||this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[n])}getServices(n){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(d=>{this.services=d,this.services=this.services.filter(w=>!this.hiddenServices.includes(w.service_name)),this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],n.error()}))}updateSelection(n){this.selection=n}deleteAction(){const n=this.selection.first();this.modalService.show(jo.M,{itemDescription:"Service",itemNames:[n.service_name],actionDescription:"delete",submitActionObservable:()=>this.taskWrapperService.wrapTaskAroundCall({task:new Va.R(`service/${uo.MQ.DELETE}`,{service_name:n.service_name}),call:this.cephServiceService.delete(n.service_name)}).pipe((0,$f.g)(5e3))})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(hi.j),e.Y36(na.Z),e.Y36(el),e.Y36(me),e.Y36(X.h),e.Y36(ki.P),e.Y36(tn.F0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-services"]],viewQuery:function(n,d){if(1&n&&e.Gf(Ui.a,7),2&n){let w;e.iGM(w=e.CRH())&&(d.table=w.first)}},inputs:{hostname:"hostname",hiddenColumns:"hiddenColumns",hiddenServices:"hiddenServices",hasDetails:"hasDetails",routedModal:"routedModal"},features:[e._Bn([{provide:vl.F,useValue:new vl.F(g_)}]),e.qOj,e.TTD],decls:3,vars:2,consts:[[4,"ngIf"],["name","modal"],["identifier","service_name","forceIdentifier","true","columnMode","flex","selectionType","single",3,"data","columns","autoReload","hasDetails","fetchData","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"permissions","selection"]],template:function(n,d){1&n&&(e.YNc(0,qp,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,Ah,4,9,"ng-container",0),e._UZ(2,"router-outlet",1)),2&n&&(e.Q6J("ngIf",d.showDocPanel),e.xp6(1),e.Q6J("ngIf",null==d.orchStatus?null:d.orchStatus.available))},directives:[s.O5,tn.lC,xs,Ui.a,ha.K,Wp],styles:[""]}),f})();const v_=function(){return["services","status"]};let Fm=(()=>{class f{constructor(n,d,w,re,Ze){this.wizardStepsService=n,this.cephServiceService=d,this.dimlessBinary=w,this.hostService=re,this.osdService=Ze,this.hosts=[],this.totalCapacity=0,this.services=[],this.totalCPUs=0,this.totalMemory=0}ngOnInit(){var n,d,w;let re=0,Ze=0,Lt=0,Gt=0,On=0,fr=0;this.hostService.list("true").subscribe(hr=>{this.hosts=hr,this.hostsCount=this.hosts.length,gn().forEach(this.hosts,Jr=>{this.totalCPUs=this.totalCPUs+Jr.cpu_count,this.totalMemory=this.totalMemory+1024*Jr.memory_total_kb}),this.totalMemory=this.dimlessBinary.transform(this.totalMemory)}),this.osdService.osdDevices.data&&(re=null===(n=this.osdService.osdDevices.data)||void 0===n?void 0:n.length,Ze=this.osdService.osdDevices.data.capacity),this.osdService.osdDevices.wal&&(Lt=null===(d=this.osdService.osdDevices.wal)||void 0===d?void 0:d.length,Gt=this.osdService.osdDevices.wal.capacity),this.osdService.osdDevices.db&&(On=null===(w=this.osdService.osdDevices.db)||void 0===w?void 0:w.length,fr=this.osdService.osdDevices.db.capacity),this.totalDevices=re+Lt+On,this.osdService.osdDevices.totalDevices=this.totalDevices,this.totalCapacity=Ze+Gt+fr}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(pl),e.Y36(me),e.Y36(Se.$),e.Y36(Zl),e.Y36(lc))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-create-cluster-review"]],decls:43,vars:14,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="Cluster Resources",n="Hosts",d="Storage Capacity",w="Number of devices",re="Raw capacity",Ze="CPUs",Lt="Memory",Gt="Host Details",[[1,"row"],[1,"col-lg-3"],[1,"cd-header"],y,[1,"table","table-striped"],[1,"bold"],n,d,w,re,[1,"pt-5"],Ze,Lt,[1,"col-lg-9"],Gt,[3,"hiddenColumns","hideToolHeader","hideTitle","hideSubmitBtn","hasTableDetails","showGeneralActionsOnly"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"fieldset"),e.TgZ(3,"legend",2),e.SDv(4,3),e.qZA(),e.TgZ(5,"table",4),e.TgZ(6,"tr"),e.TgZ(7,"td",5),e.SDv(8,6),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td"),e.TgZ(13,"dl"),e.TgZ(14,"dt"),e.TgZ(15,"p"),e.SDv(16,7),e.qZA(),e.qZA(),e.TgZ(17,"dd"),e.TgZ(18,"p"),e.SDv(19,8),e.qZA(),e.qZA(),e.TgZ(20,"dd"),e.TgZ(21,"p"),e.SDv(22,9),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(23,"td",10),e.TgZ(24,"p"),e._uU(25),e.qZA(),e.TgZ(26,"p"),e._uU(27),e.ALo(28,"dimlessBinary"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(29,"tr"),e.TgZ(30,"td",5),e.SDv(31,11),e.qZA(),e.TgZ(32,"td"),e._uU(33),e.qZA(),e.qZA(),e.TgZ(34,"tr"),e.TgZ(35,"td",5),e.SDv(36,12),e.qZA(),e.TgZ(37,"td"),e._uU(38),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(39,"div",13),e.TgZ(40,"legend",2),e.SDv(41,14),e.qZA(),e._UZ(42,"cd-hosts",15),e.qZA(),e.qZA()),2&n&&(e.xp6(10),e.Oqu(d.hostsCount),e.xp6(15),e.Oqu(d.totalDevices),e.xp6(2),e.hij(" ",e.lcZ(28,11,d.totalCapacity),""),e.xp6(6),e.Oqu(d.totalCPUs),e.xp6(5),e.Oqu(d.totalMemory),e.xp6(4),e.Q6J("hiddenColumns",e.DdM(13,v_))("hideToolHeader",!0)("hideTitle",!0)("hideSubmitBtn",!0)("hasTableDetails",!1)("showGeneralActionsOnly",!0))},directives:[zu],pipes:[Se.$],styles:["cd-hosts[_ngcontent-%COMP%]     .nav{display:none}"]}),f})();const hg=["skipConfirmTpl"];function Fu(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",3),e.TgZ(1,"div",4),e.TgZ(2,"div",5),e._UZ(3,"img",6),e.TgZ(4,"h3",7),e.SDv(5,8),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"h4",10),e.SDv(8,11),e.qZA(),e.TgZ(9,"div",12),e.TgZ(10,"button",13),e.NdJ("click",function(){return e.CHM(n),e.oxw().createCluster()}),e.SDv(11,14),e.qZA(),e.TgZ(12,"button",15),e.NdJ("click",function(){return e.CHM(n),e.oxw().skipClusterCreation()}),e.SDv(13,16),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(3),e.Q6J("src",n.projectConstants.cephLogo,e.LSH),e.xp6(2),e.pQV(n.projectConstants.projectName),e.QtT(5)}}const wh=function(){return["services"]};function Dh(f,y){1&f&&(e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,31),e.qZA(),e._UZ(3,"br"),e._UZ(4,"cd-hosts",32),e.qZA()),2&f&&(e.xp6(4),e.Q6J("hiddenColumns",e.DdM(5,wh))("hideTitle",!0)("hideSubmitBtn",!0)("hasTableDetails",!1)("showGeneralActionsOnly",!0))}function Jp(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,33),e.qZA(),e._UZ(3,"br"),e.TgZ(4,"div",34),e.TgZ(5,"cd-osd-form",35),e.NdJ("emitDriveGroup",function(w){return e.CHM(n),e.oxw(2).getDriveGroup(w)}),e.qZA(),e.qZA(),e.qZA()}2&f&&(e.xp6(5),e.Q6J("hideTitle",!0)("hideSubmitBtn",!0))}const nc=function(){return["mon","mgr","crash","agent"]},uu=function(){return["status.running","status.size","status.last_refresh"]};function Cl(f,y){1&f&&(e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,36),e.qZA(),e._UZ(3,"br"),e._UZ(4,"cd-services",37),e.qZA()),2&f&&(e.xp6(4),e.Q6J("hasDetails",!1)("hiddenServices",e.DdM(4,nc))("hiddenColumns",e.DdM(5,uu))("routedModal",!1))}function y_(f,y){1&f&&(e.TgZ(0,"div",29),e._UZ(1,"cd-create-cluster-review"),e.qZA())}function Qp(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",17),e.TgZ(1,"div",18),e.SDv(2,19),e.qZA(),e.TgZ(3,"div",20),e._UZ(4,"cd-wizard",21),e.TgZ(5,"div",22),e.ynx(6,23),e.YNc(7,Dh,5,6,"div",24),e.YNc(8,Jp,6,2,"div",24),e.YNc(9,Cl,5,6,"div",24),e.YNc(10,y_,2,0,"div",24),e.BQk(),e.qZA(),e.qZA(),e.TgZ(11,"div",25),e.TgZ(12,"button",26),e.NdJ("click",function(){return e.CHM(n),e.oxw().onNextStep()}),e.SDv(13,27),e.qZA(),e.TgZ(14,"cd-back-button",28),e.NdJ("backAction",function(){return e.CHM(n),e.oxw().onPreviousStep()}),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(4),e.Q6J("stepsTitle",n.stepTitles),e.xp6(2),e.Q6J("ngSwitch",null==n.currentStep?null:n.currentStep.stepIndex),e.xp6(1),e.Q6J("ngSwitchCase","1"),e.xp6(1),e.Q6J("ngSwitchCase","2"),e.xp6(1),e.Q6J("ngSwitchCase","3"),e.xp6(1),e.Q6J("ngSwitchCase","4"),e.xp6(3),e.pQV(n.showSubmitButtonLabel()),e.QtT(13),e.xp6(1),e.Q6J("name",n.showCancelButtonLabel())}}function ll(f,y){1&f&&(e.TgZ(0,"span"),e.tHW(1,38),e._UZ(2,"strong"),e.N_p(),e.qZA(),e.TgZ(3,"div",39),e.SDv(4,40),e.qZA())}let ko=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt,On,fr,hr){this.authStorageService=n,this.wizardStepsService=d,this.router=w,this.hostService=re,this.notificationService=Ze,this.actionLabels=Lt,this.clusterService=Gt,this.modalService=On,this.taskWrapper=fr,this.osdService=hr,this.projectConstants=uo.$x,this.stepTitles=["Add Hosts","Create OSDs","Create Services","Review"],this.startClusterCreation=!1,this.observables=[],this.driveGroup=new iu,this.driveGroups=[],this.submitAction=new e.vpe,this.permissions=this.authStorageService.getPermissions(),this.currentStepSub=this.wizardStepsService.getCurrentStep().subscribe(Jr=>{this.currentStep=Jr}),this.currentStep.stepIndex=1}createCluster(){this.startClusterCreation=!0}skipClusterCreation(){const n={titleText:"Warning",buttonText:"Continue",warning:!0,bodyTpl:this.skipConfirmTpl,showSubmit:!0,onSubmit:()=>{this.clusterService.updateStatus("POST_INSTALLED").subscribe({error:()=>this.modalRef.close(),complete:()=>{this.notificationService.show(Ho.k.info,"Cluster expansion skipped by user"),this.router.navigate(["/dashboard"]),this.modalRef.close()}})}};this.modalRef=this.modalService.show(Ll.Y,n)}onSubmit(){if(this.hostService.list("false").subscribe(n=>{n.forEach(d=>{const w=d.labels.indexOf("_no_schedule",0);w>-1&&(d.labels.splice(w,1),this.observables.push(this.hostService.update(d.hostname,!0,d.labels)))}),(0,zs.D)(this.observables).pipe((0,La.x)(()=>this.clusterService.updateStatus("POST_INSTALLED").subscribe(()=>{this.notificationService.show(Ho.k.success,"Cluster expansion was successful"),this.router.navigate(["/dashboard"])}))).subscribe({error:d=>d.preventDefault()})}),this.driveGroup){const n=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${n}-${gn().now()}`),this.driveGroups.push(this.driveGroup.spec)}this.osdService.osdDevices.totalDevices>0&&this.taskWrapper.wrapTaskAroundCall({task:new Va.R("osd/"+uo.MQ.CREATE,{tracking_id:gn().join(gn().map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe({error:n=>n.preventDefault(),complete:()=>{this.submitAction.emit(),this.osdService.osdDevices=[]}})}getDriveGroup(n){this.driveGroup=n}onNextStep(){this.wizardStepsService.isLastStep()?this.onSubmit():(this.wizardStepsService.getCurrentStep().subscribe(n=>{this.currentStep=n}),this.wizardStepsService.moveToNextStep())}onPreviousStep(){this.wizardStepsService.isFirstStep()?this.router.navigate(["/dashboard"]):this.wizardStepsService.moveToPreviousStep()}showSubmitButtonLabel(){return this.wizardStepsService.isLastStep()?"Expand Cluster":this.actionLabels.NEXT}showCancelButtonLabel(){return this.wizardStepsService.isFirstStep()?this.actionLabels.CANCEL:this.actionLabels.BACK}ngOnDestroy(){this.currentStepSub.unsubscribe()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(pl),e.Y36(tn.F0),e.Y36(Zl),e.Y36(Zi.g),e.Y36(uo.p4),e.Y36(cc),e.Y36(na.Z),e.Y36(ki.P),e.Y36(lc))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-create-cluster"]],viewQuery:function(n,d){if(1&n&&e.Gf(hg,7),2&n){let w;e.iGM(w=e.CRH())&&(d.skipConfirmTpl=w.first)}},outputs:{submitAction:"submitAction"},decls:4,vars:2,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr;return y="Welcome to " + "\ufffd0\ufffd" + "",n="Please expand your cluster first",d="Expand Cluster",w="Skip",re="Expand Cluster",Ze="" + "\ufffd0\ufffd" + "",Lt="Add Hosts",Gt="Create OSDs",On="Create Services",fr="You are about to skip the cluster expansion process. You\u2019ll need to " + "\ufffd#2\ufffd" + "navigate through the menu to add hosts and services." + "\ufffd/#2\ufffd" + "",hr="Are you sure you want to continue?",[["class","container h-75",4,"ngIf"],["class","card",4,"ngIf"],["skipConfirmTpl",""],[1,"container","h-75"],[1,"row","h-100","justify-content-center","align-items-center"],[1,"blank-page"],["alt","Ceph",1,"img-fluid","mx-auto","d-block",3,"src"],[1,"text-center","m-2"],y,[1,"m-4"],[1,"text-center"],n,[1,"offset-md-2"],["name","expand-cluster",1,"btn","btn-accent","m-2",3,"click"],d,["name","skip-cluster-creation",1,"btn","btn-light",3,"click"],w,[1,"card"],[1,"card-header"],re,[1,"container-fluid"],[3,"stepsTitle"],[1,"card-body","vertical-line"],[3,"ngSwitch"],["class","ml-5",4,"ngSwitchCase"],[1,"card-footer"],["aria-label","Next",1,"btn","btn-accent","m-2","float-right",3,"click"],Ze,["aria-label","Close",1,"m-2","float-right",3,"name","backAction"],[1,"ml-5"],[1,"title"],Lt,[3,"hiddenColumns","hideTitle","hideSubmitBtn","hasTableDetails","showGeneralActionsOnly"],Gt,[1,"alignForm"],[3,"hideTitle","hideSubmitBtn","emitDriveGroup"],On,[3,"hasDetails","hiddenServices","hiddenColumns","routedModal"],fr,[1,"mt-4"],hr]},template:function(n,d){1&n&&(e.YNc(0,Fu,14,2,"div",0),e.YNc(1,Qp,15,8,"div",1),e.YNc(2,ll,5,0,"ng-template",null,2,e.W1O)),2&n&&(e.Q6J("ngIf",!d.startClusterCreation),e.xp6(1),e.Q6J("ngIf",d.startClusterCreation))},directives:[s.O5,As.o,ou,s.RF,s.n9,xl.W,zu,md,m_,Fm],styles:[".container-fluid[_ngcontent-%COMP%]{align-items:flex-start;display:flex;padding-left:0;width:100%}.card-body[_ngcontent-%COMP%]{max-width:85%}.vertical-line[_ngcontent-%COMP%]{border-left:1px solid #ced4da}cd-wizard[_ngcontent-%COMP%]{width:15%}cd-hosts[_ngcontent-%COMP%]     .nav{display:none}.alignForm[_ngcontent-%COMP%]{margin-left:-1%}"]}),f})();var Wa=o(83608),Xp=o(55358);const Wd=["tree"],Uc=function(f,y,n){return[f,y,n]};function xh(f,y){if(1&f&&e._UZ(0,"i",12),2&f){const n=e.oxw();e.Q6J("ngClass",e.kEZ(1,Uc,n.icons.large,n.icons.spinner,n.icons.spin))}}const Qu=function(){return["in","up"]},Au=function(){return["down","out","destroyed"]},Rh=function(f,y){return{"badge-success":f,"badge-danger":y}};function Nh(f,y){if(1&f&&(e.TgZ(0,"span",15),e._uU(1),e.qZA()),2&f){const n=e.oxw().$implicit;e.Q6J("ngClass",e.WLB(4,Rh,e.DdM(2,Qu).includes(n.data.status),e.DdM(3,Au).includes(n.data.status))),e.xp6(1),e.hij(" ",n.data.status," ")}}const Vf=function(f){return{"type-osd":f}};function Ph(f,y){if(1&f&&(e.YNc(0,Nh,2,7,"span",13),e.TgZ(1,"span"),e._uU(2,"\xa0"),e.qZA(),e._UZ(3,"span",14)),2&f){const n=y.$implicit;e.Q6J("ngIf",n.data.status),e.xp6(3),e.Q6J("ngClass",e.VKq(3,Vf,"osd"===n.data.type))("innerHTML",n.data.name,e.oJD)}}function Dp(f,y){if(1&f&&(e.TgZ(0,"div",16),e.TgZ(1,"legend"),e._uU(2),e.qZA(),e._UZ(3,"cd-table-key-value",17),e.qZA()),2&f){const n=e.oxw();e.xp6(2),e.Oqu(n.metadataTitle),e.xp6(1),e.Q6J("data",n.metadata)}}let Ih=(()=>{class f{constructor(n,d){this.crushRuleService=n,this.timerService=d,this.sub=new Vl.w,this.icons=eo.P,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,nodeHeight:22,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.sub=this.timerService.get(()=>this.crushRuleService.getInfo(),5e3).subscribe(n=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(n)})}ngOnDestroy(){this.sub.unsubscribe()}abstractTreeData(n){const d=n.nodes||[],w=n.roots||[],re={};if(0===d.length)return[{name:"No nodes!"}];const Ze=[];return d.reverse().forEach(Gt=>{w.includes(Gt.id)&&Ze.push(Gt.id),re[Gt.id]=this.generateTreeLeaf(Gt,re)}),Ze.map(Gt=>re[Gt])}generateTreeLeaf(n,d){const w=n.id;this.metadataKeyMap[w]=n;const Lt=[],Gt={name:n.name+" ("+n.type+")",status:n.status,cdId:w,type:n.type};return n.children&&(n.children.sort().forEach(On=>{Lt.push(d[On])}),Gt.children=Lt),Gt}onNodeSelected(n,d){if(Es.iM.ACTIVATE(n,d,!0),void 0!==d.data.cdId){const w=this.metadataKeyMap[d.data.cdId],{name:re,type:Ze}=w,Gt=(0,xr._T)(w,["name","type","status"]);this.metadata=Gt,this.metadataTitle=re+" ("+Ze+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Wa.H),e.Y36(Xp.f))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-crushmap"]],viewQuery:function(n,d){if(1&n&&e.Gf(Wd,5),2&n){let w;e.iGM(w=e.CRH())&&(d.tree=w.first)}},decls:14,vars:4,consts:function(){let y;return y="CRUSH map viewer",[[1,"row"],[1,"col-sm-12","col-lg-12"],[1,"card"],[1,"card-header"],y,[1,"card-body"],[1,"col-sm-6","col-lg-6","tree-container"],[3,"ngClass",4,"ngIf"],[3,"nodes","options","updateData"],["tree",""],["treeNodeTemplate",""],["class","col-sm-6 col-lg-6 metadata",4,"ngIf"],[3,"ngClass"],["class","badge",3,"ngClass",4,"ngIf"],[1,"node-name",3,"ngClass","innerHTML"],[1,"badge",3,"ngClass"],[1,"col-sm-6","col-lg-6","metadata"],[3,"data"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.SDv(4,4),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"div",0),e.TgZ(7,"div",6),e.YNc(8,xh,1,5,"i",7),e.TgZ(9,"tree-root",8,9),e.NdJ("updateData",function(){return d.onUpdateData()}),e.YNc(11,Ph,4,5,"ng-template",null,10,e.W1O),e.qZA(),e.qZA(),e.YNc(13,Dp,4,2,"div",11),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(8),e.Q6J("ngIf",d.loadingIndicator),e.xp6(1),e.Q6J("nodes",d.nodes)("options",d.treeOptions),e.xp6(4),e.Q6J("ngIf",d.metadata))},directives:[s.O5,Es.qr,s.mk,Ft.b],styles:[".tree-container[_ngcontent-%COMP%]{height:calc(100vh - 200px)}"]}),f})(),Xu=(()=>{class f{constructor(n){this.http=n}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(n){return this.http.get(`api/grafana/validation/${n}`)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var Kp=o(49457);let Lh=(()=>{class f{download(n,d){(0,Kp.saveAs)(new Blob([n]),d)}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const eh=function(f){return[f]};function xp(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"button",5),e.NdJ("click",function(){return e.CHM(n),e.oxw().download("json")}),e._UZ(1,"i",2),e.TgZ(2,"span"),e._uU(3,"JSON"),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,eh,n.icons.json))}}function b_(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"button",5),e.NdJ("click",function(){return e.CHM(n),e.oxw().download()}),e._UZ(1,"i",2),e.TgZ(2,"span"),e._uU(3,"Text"),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,eh,n.icons.text))}}let th=(()=>{class f{constructor(n){this.textToDownloadService=n,this.title="Download",this.icons=eo.P}download(n){this.fileName=`${this.fileName}_${(new Date).toLocaleDateString()}`,"json"===n?this.textToDownloadService.download(JSON.stringify(this.objectItem,null,2),`${this.fileName}.json`):this.textToDownloadService.download(this.textItem,`${this.fileName}.txt`)}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Lh))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-download-button"]],inputs:{objectItem:"objectItem",textItem:"textItem",fileName:"fileName",title:"title"},decls:6,vars:6,consts:[["ngbDropdown","","placement","bottom-right"],["type","button","ngbDropdownToggle","",1,"btn","btn-light","dropdown-toggle-split",3,"title"],[3,"ngClass"],["ngbDropdownMenu",""],["ngbDropdownItem","",3,"click",4,"ngIf"],["ngbDropdownItem","",3,"click"]],template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"button",1),e._UZ(2,"i",2),e.qZA(),e.TgZ(3,"div",3),e.YNc(4,xp,4,3,"button",4),e.YNc(5,b_,4,3,"button",4),e.qZA(),e.qZA()),2&n&&(e.xp6(1),e.Q6J("title",d.title),e.xp6(1),e.Q6J("ngClass",e.VKq(4,eh,d.icons.download)),e.xp6(2),e.Q6J("ngIf",d.objectItem),e.xp6(1),e.Q6J("ngIf",d.textItem))},directives:[Br.jt,As.o,Br.iD,s.mk,Br.Vi,s.O5,Br.TH],styles:[""]}),f})();var E_=o(42746);let fp=(()=>{class f{transform(n,d){if(!d)return n;d=this.escapeRegExp(d);const w=new RegExp(d,"gi");return n.match(w)?n.replace(w,"<mark>$&</mark>"):n}escapeRegExp(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"searchHighlight",type:f,pure:!0}),f})();function Ku(f,y){1&f&&e.GkF(0)}function ku(f,y){if(1&f&&(e.TgZ(0,"div",19),e._UZ(1,"cd-download-button",20),e._UZ(2,"cd-copy-2-clipboard-button",21),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.Q6J("objectItem",n.clog)("textItem",n.clogText),e.xp6(1),e.Q6J("source",n.clogText)("byId",!1)}}function qd(f,y){if(1&f&&(e.TgZ(0,"p"),e.TgZ(1,"span",22),e._uU(2),e.ALo(3,"cdDate"),e.qZA(),e.TgZ(4,"span"),e.ALo(5,"logPriority"),e._uU(6),e.qZA(),e._UZ(7,"span",23),e.ALo(8,"searchHighlight"),e.qZA()),2&f){const n=y.$implicit,d=e.oxw(4);e.xp6(2),e.Oqu(e.lcZ(3,6,n.stamp)),e.xp6(2),e.Gre("priority ",e.lcZ(5,8,n.priority),""),e.xp6(2),e.Oqu(n.priority),e.xp6(1),e.Q6J("innerHTML",e.xi3(8,10,n.message,d.search),e.oJD)}}function Jd(f,y){1&f&&e.GkF(0)}function Gf(f,y){if(1&f&&(e.TgZ(0,"div",14),e.YNc(1,ku,3,4,"div",15),e.TgZ(2,"div",16),e.YNc(3,qd,9,13,"p",17),e.YNc(4,Jd,1,0,"ng-container",18),e.qZA(),e.qZA()),2&f){const n=e.oxw(3),d=e.MAs(4);e.xp6(1),e.Q6J("ngIf",n.clog.length),e.xp6(2),e.Q6J("ngForOf",n.clog),e.xp6(1),e.Q6J("ngIf",0!=n.clog.length)("ngIfElse",d)}}function vf(f,y){if(1&f&&e.YNc(0,Gf,5,4,"div",13),2&f){const n=e.oxw(2);e.Q6J("ngIf",n.clog)}}function Fh(f,y){if(1&f&&(e.TgZ(0,"div",19),e._UZ(1,"cd-download-button",24),e._UZ(2,"cd-copy-2-clipboard-button",21),e.qZA()),2&f){const n=e.oxw(4);e.xp6(1),e.Q6J("objectItem",n.audit_log)("textItem",n.auditLogText),e.xp6(1),e.Q6J("source",n.auditLogText)("byId",!1)}}function nh(f,y){if(1&f&&(e.TgZ(0,"p"),e.TgZ(1,"span",22),e._uU(2),e.ALo(3,"cdDate"),e.qZA(),e.TgZ(4,"span"),e.ALo(5,"logPriority"),e._uU(6),e.qZA(),e._UZ(7,"span",23),e.ALo(8,"searchHighlight"),e.qZA()),2&f){const n=y.$implicit,d=e.oxw(4);e.xp6(2),e.Oqu(e.lcZ(3,6,n.stamp)),e.xp6(2),e.Gre("priority ",e.lcZ(5,8,n.priority),""),e.xp6(2),e.Oqu(n.priority),e.xp6(1),e.Q6J("innerHTML",e.xi3(8,10,n.message,d.search),e.oJD)}}function T_(f,y){1&f&&e.GkF(0)}function rh(f,y){if(1&f&&(e.TgZ(0,"div",14),e.YNc(1,Fh,3,4,"div",15),e.TgZ(2,"div",16),e.YNc(3,nh,9,13,"p",17),e.YNc(4,T_,1,0,"ng-container",18),e.qZA(),e.qZA()),2&f){const n=e.oxw(3),d=e.MAs(4);e.xp6(1),e.Q6J("ngIf",n.audit_log.length),e.xp6(2),e.Q6J("ngForOf",n.audit_log),e.xp6(1),e.Q6J("ngIf",0!=n.audit_log.length)("ngIfElse",d)}}function Rp(f,y){if(1&f&&e.YNc(0,rh,5,4,"div",13),2&f){const n=e.oxw(2);e.Q6J("ngIf",n.audit_log)}}function kh(f,y){if(1&f&&(e.TgZ(0,"div"),e.YNc(1,Ku,1,0,"ng-container",3),e.TgZ(2,"ul",4,5),e.TgZ(4,"li",6),e.TgZ(5,"a",7),e.SDv(6,8),e.qZA(),e.YNc(7,vf,1,1,"ng-template",9),e.qZA(),e.TgZ(8,"li",10),e.TgZ(9,"a",7),e.SDv(10,11),e.qZA(),e.YNc(11,Rp,1,1,"ng-template",9),e.qZA(),e.qZA(),e._UZ(12,"div",12),e.qZA()),2&f){const n=e.MAs(3);e.oxw();const d=e.MAs(2);e.xp6(1),e.Q6J("ngTemplateOutlet",d),e.xp6(11),e.Q6J("ngbNavOutlet",n)}}function Np(f,y){if(1&f&&(e.TgZ(0,"option",46),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.value),e.xp6(1),e.Oqu(n.name)}}const P=function(f){return[f]};function W(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",25),e.TgZ(1,"div",26),e.TgZ(2,"label",27),e.SDv(3,28),e.qZA(),e.TgZ(4,"select",29),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().priority=w})("ngModelChange",function(){return e.CHM(n),e.oxw().filterLogs()}),e.YNc(5,Np,2,2,"option",30),e.qZA(),e.qZA(),e.TgZ(6,"div",26),e.TgZ(7,"label",31),e.SDv(8,32),e.qZA(),e.TgZ(9,"div",33),e.TgZ(10,"div",34),e.TgZ(11,"span",35),e._UZ(12,"i",36),e.qZA(),e.qZA(),e.TgZ(13,"input",37),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().search=w})("keyup",function(){return e.CHM(n),e.oxw().filterLogs()}),e.qZA(),e.TgZ(14,"div",38),e.TgZ(15,"button",39),e.NdJ("click",function(){return e.CHM(n),e.oxw().clearSearchKey()}),e._UZ(16,"i"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(17,"div",26),e.TgZ(18,"label",40),e.SDv(19,41),e.qZA(),e.TgZ(20,"div",33),e.TgZ(21,"input",42,43),e.NdJ("click",function(){return e.CHM(n),e.MAs(22).open()})("ngModelChange",function(w){return e.CHM(n),e.oxw().selectedDate=w})("ngModelChange",function(){return e.CHM(n),e.oxw().filterLogs()}),e.qZA(),e.TgZ(23,"span",38),e.TgZ(24,"button",39),e.NdJ("click",function(){return e.CHM(n),e.oxw().clearDate()}),e._UZ(25,"i"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(26,"div",26),e.TgZ(27,"label"),e.SDv(28,44),e.qZA(),e.TgZ(29,"ngb-timepicker",45),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().startTime=w})("ngModelChange",function(){return e.CHM(n),e.oxw().filterLogs()}),e.qZA(),e.TgZ(30,"span"),e._uU(31,"\xa0\u2014\xa0"),e.qZA(),e.TgZ(32,"ngb-timepicker",45),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().endTime=w})("ngModelChange",function(){return e.CHM(n),e.oxw().filterLogs()}),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(4),e.Q6J("ngModel",n.priority),e.xp6(1),e.Q6J("ngForOf",n.priorities),e.xp6(7),e.Q6J("ngClass",e.VKq(16,P,n.icons.search)),e.xp6(1),e.Q6J("ngModel",n.search),e.xp6(3),e.Gre("icon-prepend ",n.icons.destroy,""),e.xp6(5),e.Q6J("maxDate",n.maxDate)("ngModel",n.selectedDate),e.xp6(4),e.Gre("icon-prepend ",n.icons.destroy,""),e.xp6(4),e.Q6J("spinners",!1)("ngModel",n.startTime),e.xp6(3),e.Q6J("spinners",!1)("ngModel",n.endTime)}}function Z(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"span"),e.SDv(1,47),e.qZA(),e.TgZ(2,"span"),e._uU(3,"\xa0"),e.qZA(),e.TgZ(4,"a",48),e.NdJ("click",function(){return e.CHM(n),e.oxw().resetFilter()}),e.SDv(5,49),e.qZA()}}let Ee=(()=>{class f{constructor(n,d,w){this.logsService=n,this.datePipe=d,this.ngZone=w,this.icons=eo.P,this.priorities=[{name:"Debug",value:"[DBG]"},{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime={hour:0,minute:0},this.endTime={hour:23,minute:59},this.maxDate={year:(new Date).getFullYear(),month:(new Date).getMonth()+1,day:(new Date).getDate()}}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getInfo(){this.logsService.getLogs().subscribe(n=>{this.contentData=n,this.clogText=this.logToText(this.contentData.clog),this.auditLogText=this.logToText(this.contentData.audit_log),this.filterLogs()})}abstractFilters(){var n,d,w,re,Ze,Lt,Gt,On;const fr=this.priority,hr=this.search.toLowerCase();let Jr;if(this.selectedDate){const js=this.selectedDate.month,ga=this.selectedDate.day;Jr=`${this.selectedDate.year}-${js<=9?`0${js}`:`${js}`}-${ga<=9?`0${ga}`:`${ga}`}`}else Jr="";return{priority:fr,key:hr,yearMonthDay:Jr,sTime:60*(null!==(d=null===(n=this.startTime)||void 0===n?void 0:n.hour)&&void 0!==d?d:0)+(null!==(re=null===(w=this.startTime)||void 0===w?void 0:w.minute)&&void 0!==re?re:0),eTime:60*(null!==(Lt=null===(Ze=this.endTime)||void 0===Ze?void 0:Ze.hour)&&void 0!==Lt?Lt:23)+(null!==(On=null===(Gt=this.endTime)||void 0===Gt?void 0:Gt.minute)&&void 0!==On?On:59)}}filterExecutor(n,d){return n.filter(w=>{const re=this.datePipe.transform(w.stamp,"mediumTime"),Ze=parseInt(re.split(":")[0],10),Lt=parseInt(re.split(":")[1],10);let Gt,On,fr;return Gt="All"===d.priority?w.priority:d.priority,On=d.yearMonthDay?d.yearMonthDay:w.stamp,fr=60*Ze+Lt,w.priority===Gt&&-1!==w.message.toLowerCase().indexOf(d.key)&&-1!==w.stamp.indexOf(On)&&fr>=d.sTime&&fr<=d.eTime})}filterLogs(){const n=this.abstractFilters();this.clog=this.filterExecutor(this.contentData.clog,n),this.audit_log=this.filterExecutor(this.contentData.audit_log,n)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}resetFilter(){return this.priority="All",this.search="",this.selectedDate=null,this.startTime={hour:0,minute:0},this.endTime={hour:23,minute:59},this.filterLogs(),!1}logToText(n){let d="";for(const w of Object.keys(n))d=d+this.datePipe.transform(n[w].stamp,"medium")+"\t"+n[w].priority+"\t"+n[w].message+"\n";return d}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Xu),e.Y36(s.uU),e.Y36(e.R0b))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-logs"]],decls:5,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="Cluster Logs",n="Audit Logs",d="Priority:",w="Keyword:",re="Date:",Ze="Time range:",Lt="No log entries found. Please try to select different filter options.",Gt="Reset filter.",[[4,"ngIf"],["logFiltersTpl",""],["noEntriesTpl",""],[4,"ngTemplateOutlet"],["ngbNav","","cdStatefulTab","logs",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","cluster-logs"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","audit-logs"],n,[3,"ngbNavOutlet"],["class","card bg-light mb-3",4,"ngIf"],[1,"card","bg-light","mb-3"],["class","btn-group","role","group",4,"ngIf"],[1,"card-body"],[4,"ngFor","ngForOf"],[4,"ngIf","ngIfElse"],["role","group",1,"btn-group"],["fileName","cluster_log",3,"objectItem","textItem"],[3,"source","byId"],[1,"timestamp"],[1,"message",3,"innerHTML"],["fileName","audit_log",3,"objectItem","textItem"],[1,"form-inline"],[1,"form-group"],["for","logs-priority"],d,["id","logs-priority",1,"form-control",3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],["for","logs-keyword"],w,[1,"input-group"],[1,"input-group-prepend"],[1,"input-group-text"],[3,"ngClass"],["id","logs-keyword","type","text",1,"form-control",3,"ngModel","ngModelChange","keyup"],[1,"input-group-append"],["type","button",1,"btn","btn-light",3,"click"],["for","logs-date"],re,["id","logs-date","placeholder","YYYY-MM-DD","ngbDatepicker","",1,"form-control",3,"maxDate","ngModel","click","ngModelChange"],["d","ngbDatepicker"],Ze,[3,"spinners","ngModel","ngModelChange"],[3,"value"],Lt,["href","#",3,"click"],Gt]},template:function(n,d){1&n&&(e.YNc(0,kh,13,2,"div",0),e.YNc(1,W,33,18,"ng-template",null,1,e.W1O),e.YNc(3,Z,6,0,"ng-template",null,2,e.W1O)),2&n&&e.Q6J("ngIf",d.contentData)},directives:[s.O5,s.tP,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,s.sg,th,Hc.s,kn.P,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.On,s.mk,Hn.Fj,Br.J4,Br.Pm,Hn.YN,Hn.Kr],pipes:[bi.N,E_.e,fp],styles:["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   .btn-group[_ngcontent-%COMP%]{margin-top:-45px;position:absolute;right:0}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{flex-shrink:0;font-weight:bold}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#ef5c55}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}.card[_ngcontent-%COMP%]   .debug[_ngcontent-%COMP%]{color:#495057}  cd-logs ngb-timepicker input.ngb-tp-input{width:3.5rem!important}"]}),f})(),Mt=(()=>{class f{constructor(n){this.http=n,this.url="api/mgr/module"}list(){return this.http.get(`${this.url}`)}getConfig(n){return this.http.get(`${this.url}/${n}`)}updateConfig(n,d){return this.http.put(`${this.url}/${n}`,{config:d})}enable(n){return this.http.post(`${this.url}/${n}/enable`,null)}disable(n){return this.http.post(`${this.url}/${n}/disable`,null)}getOptions(n){return this.http.get(`${this.url}/${n}/options`)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function cn(f,y){if(1&f&&(e.TgZ(0,"cd-helper"),e._uU(1),e.ALo(2,"upperFirst"),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.hij(" ",e.lcZ(2,1,n.value.long_desc||n.value.desc)," ")}}function pr(f,y){if(1&f&&(e.TgZ(0,"div",15),e.TgZ(1,"div",16),e._UZ(2,"input",17),e._UZ(3,"label",18),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(2),e.s9C("id",n.value.name),e.s9C("formControlName",n.value.name),e.xp6(1),e.s9C("for",n.value.name)}}function Rr(f,y){if(1&f&&e._UZ(0,"input",22),2&f){const n=e.oxw(2).$implicit;e.s9C("id",n.value.name),e.s9C("formControlName",n.value.name)}}function ui(f,y){if(1&f&&(e.TgZ(0,"option",25),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("ngValue",n),e.xp6(1),e.hij(" ",n," ")}}function To(f,y){if(1&f&&(e.TgZ(0,"select",23),e.YNc(1,ui,2,2,"option",24),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.s9C("id",n.value.name),e.s9C("formControlName",n.value.name),e.xp6(1),e.Q6J("ngForOf",n.value.enum_allowed)}}function Io(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,27),e.qZA())}function os(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,28),e.qZA())}function Ta(f,y){if(1&f&&(e.TgZ(0,"div",15),e.YNc(1,Rr,1,2,"input",19),e.YNc(2,To,2,3,"select",20),e.YNc(3,Io,2,0,"span",21),e.YNc(4,os,2,0,"span",21),e.qZA()),2&f){const n=e.oxw().$implicit;e.oxw();const d=e.MAs(2),w=e.oxw();e.xp6(1),e.Q6J("ngIf",0===n.value.enum_allowed.length),e.xp6(1),e.Q6J("ngIf",n.value.enum_allowed.length>0),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"pattern"))}}function _l(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,30),e.qZA())}function qa(f,y){if(1&f&&(e.TgZ(0,"span",26),e.SDv(1,31),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.pQV(n.value.max),e.QtT(1)}}function Rl(f,y){if(1&f&&(e.TgZ(0,"span",26),e.SDv(1,32),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.pQV(n.value.min),e.QtT(1)}}function Vc(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,33),e.qZA())}function jc(f,y){if(1&f&&(e.TgZ(0,"div",15),e._UZ(1,"input",29),e.YNc(2,_l,2,0,"span",21),e.YNc(3,qa,2,1,"span",21),e.YNc(4,Rl,2,1,"span",21),e.YNc(5,Vc,2,0,"span",21),e.qZA()),2&f){const n=e.oxw().$implicit;e.oxw();const d=e.MAs(2),w=e.oxw();e.xp6(1),e.s9C("id",n.value.name),e.s9C("formControlName",n.value.name),e.s9C("min",n.value.min),e.s9C("max",n.value.max),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"required")),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"max")),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"min")),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"pattern"))}}function ed(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,35),e.qZA())}function zf(f,y){1&f&&(e.TgZ(0,"span",26),e.SDv(1,36),e.qZA())}function Wf(f,y){if(1&f&&(e.TgZ(0,"div",15),e._UZ(1,"input",34),e.YNc(2,ed,2,0,"span",21),e.YNc(3,zf,2,0,"span",21),e.qZA()),2&f){const n=e.oxw().$implicit;e.oxw();const d=e.MAs(2),w=e.oxw();e.xp6(1),e.s9C("id",n.value.name),e.s9C("formControlName",n.value.name),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"required")),e.xp6(1),e.Q6J("ngIf",w.mgrModuleForm.showError(n.value.name,d,"pattern"))}}const tu=function(){return["addr","str","uuid"]},vc=function(){return["uint","int","size","secs"]};function td(f,y){if(1&f&&(e.TgZ(0,"div",11),e.TgZ(1,"label",12),e._uU(2),e.YNc(3,cn,3,3,"cd-helper",13),e.qZA(),e.YNc(4,pr,4,3,"div",14),e.YNc(5,Ta,5,4,"div",14),e.YNc(6,jc,6,8,"div",14),e.YNc(7,Wf,4,4,"div",14),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.s9C("for",n.value.name),e.xp6(1),e.hij(" ",n.value.name," "),e.xp6(1),e.Q6J("ngIf",n.value.long_desc||n.value.desc),e.xp6(1),e.Q6J("ngIf","bool"===n.value.type),e.xp6(1),e.Q6J("ngIf",e.DdM(7,tu).includes(n.value.type)),e.xp6(1),e.Q6J("ngIf",e.DdM(8,vc).includes(n.value.type)),e.xp6(1),e.Q6J("ngIf","float"===n.value.type)}}function Al(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.qZA(),e.TgZ(6,"div",7),e.YNc(7,td,8,9,"div",8),e.ALo(8,"keyvalue"),e.qZA(),e.TgZ(9,"div",9),e.TgZ(10,"cd-form-button-panel",10),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw().onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.xp6(1),e.Q6J("formGroup",n.mgrModuleForm),e.xp6(6),e.Q6J("ngForOf",e.lcZ(8,4,n.moduleOptions)),e.xp6(3),e.Q6J("form",n.mgrModuleForm)("submitText",n.actionLabels.UPDATE)}}let rc=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze,Lt){super(),this.actionLabels=n,this.route=d,this.router=w,this.formBuilder=re,this.mgrModuleService=Ze,this.notificationService=Lt,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(n=>{this.moduleName=decodeURIComponent(n.name);const d=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];(0,zs.D)(d).subscribe(w=>{this.moduleOptions=w[0],this.createForm(),this.mgrModuleForm.setValue(w[1]),this.loadingReady()},w=>{this.loadingError()})})}getValidators(n){const d=[];switch(n.type){case"addr":d.push(mo.h.ip());break;case"uint":case"int":case"size":case"secs":d.push(Hn.kI.required);break;case"str":gn().isNumber(n.min)&&d.push(Hn.kI.minLength(n.min)),gn().isNumber(n.max)&&d.push(Hn.kI.maxLength(n.max));break;case"float":d.push(Hn.kI.required),d.push(mo.h.decimalNumber());break;case"uuid":d.push(mo.h.uuid())}return d}createForm(){const n={};gn().forEach(this.moduleOptions,d=>{n[d.name]=[d.default_value,this.getValidators(d)]}),this.mgrModuleForm=this.formBuilder.group(n)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const n={};gn().forEach(this.moduleOptions,d=>{const w=this.mgrModuleForm.get(d.name);w.dirty&&w.valid&&(n[d.name]=w.value)}),this.mgrModuleService.updateConfig(this.moduleName,n).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated options for module '" + this.moduleName + "'."),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(tn.gz),e.Y36(tn.F0),e.Y36($c.O),e.Y36(Mt),e.Y36(Zi.g))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-mgr-module-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On;return y="Edit Manager module",n="The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",d="The entered value needs to be a valid IP address.",w="This field is required.",re="The entered value is too high! It must be lower or equal to " + "\ufffd0\ufffd" + ".",Ze="The entered value is too low! It must be greater or equal to " + "\ufffd0\ufffd" + ".",Lt="The entered value needs to be a number.",Gt="This field is required.",On="The entered value needs to be a number or decimal.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","mgrModuleForm","novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],y,[1,"card-body"],["class","form-group row",4,"ngFor","ngForOf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"form-group","row"],[1,"cd-col-form-label",3,"for"],[4,"ngIf"],["class","cd-col-form-input",4,"ngIf"],[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","formControlName"],[1,"custom-control-label",3,"for"],["class","form-control","type","text",3,"id","formControlName",4,"ngIf"],["class","form-control",3,"id","formControlName",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["type","text",1,"form-control",3,"id","formControlName"],[1,"form-control",3,"id","formControlName"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],[1,"invalid-feedback"],n,d,["type","number",1,"form-control",3,"id","formControlName","min","max"],w,re,Ze,Lt,["type","number",1,"form-control",3,"id","formControlName"],Gt,On]},template:function(n,d){1&n&&e.YNc(0,Al,11,6,"div",0),2&n&&e.Q6J("cdFormLoading",d.loading)},directives:[vn.y,Hn._Y,Hn.JL,Hn.sg,Gn.V,s.sg,jr.p,kn.P,s.O5,yl.S,As.o,Hn.Wl,zn.b,Hn.JJ,Hn.u,Hn.Fj,Hn.EJ,Hn.YN,Hn.Kr,Hn.wV,Hn.qQ,Hn.Fd],pipes:[s.Nd,E.m],styles:[""]}),f})();function ic(f,y,n,d){var Ze,w=arguments.length,re=w<3?y:null===d?d=Object.getOwnPropertyDescriptor(y,n):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)re=Reflect.decorate(f,y,n,d);else for(var Lt=f.length-1;Lt>=0;Lt--)(Ze=f[Lt])&&(re=(w<3?Ze(re):w>3?Ze(y,n,re):Ze(y,n))||re);return w>3&&re&&Object.defineProperty(y,n,re),re}var Hu=o(80226);const Um=["*"],jm=["templateOutlet"];function Sl(f,y){if(1&f&&(e.TgZ(0,"div",6),e._uU(1),e.qZA()),2&f){const n=e.oxw(2);e.xp6(1),e.hij(" ",n.message||n.defaultMessage," ")}}function vg(f,y){if(1&f&&(e.TgZ(0,"div",3),e._UZ(1,"div",4),e.YNc(2,Sl,2,1,"div",5),e.qZA()),2&f){const n=e.oxw();e.xp6(2),e.Q6J("ngIf",n.message||n.defaultMessage)}}function D_(f,y){}function oh(f,y){1&f&&e.YNc(0,D_,0,0,"ng-template",null,7,e.W1O)}const yg=function(f){return{active:f}};let Nl=(()=>{class f{}return f.START="start",f.STOP="stop",f.UPDATE="update",f.RESET="reset",f.RESET_GLOBAL="reset_global",f.UNSUBSCRIBE="unsubscribe",f})();const qf="block-ui-main";let Pp=(()=>{let f=class{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new Hu.t(1),this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(n={}){this.blockUISettings=Object.assign(Object.assign({},this.blockUISettings),n)}decorate(n=qf){const d={name:n,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,Nl.START,n),update:this.dispatch(this.blockUISubject,Nl.UPDATE,n),stop:this.dispatch(this.blockUISubject,Nl.STOP,n),reset:this.dispatch(this.blockUISubject,Nl.RESET,n),resetGlobal:this.dispatch(this.blockUISubject,Nl.RESET_GLOBAL,n),unsubscribe:this.dispatch(this.blockUISubject,Nl.UNSUBSCRIBE,n)};return this.blockUIInstances[n]=this.blockUIInstances[n]||d,d}observe(){return this.blockUIObservable}clearInstance(n){this.dispatch(this.blockUISubject,Nl.RESET,n)}blockUIMiddleware({action:n,name:d}){let w=null;switch(n){case Nl.START:w=!0;break;case Nl.STOP:case Nl.RESET:w=!1}null!==w&&(this.blockUIInstances[d].isActive=w)}dispatch(n,d,w=qf){return re=>{n.next({name:w,action:d,message:re})}}};return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:function(y){return f.\u0275fac(y)}}),f})(),Bm=(()=>{let f=class{constructor(n){this.blockUI=n}ngOnInit(){this.name=this.name||qf,this.template=this.template||this.blockUI.blockUISettings.template}};return f.\u0275fac=function(n){return new(n||f)(e.Y36(Pp))},f.\u0275cmp=e.Xpm({type:f,selectors:[["block-ui"]],inputs:{name:"name",template:"template",message:"message",delayStart:"delayStart",delayStop:"delayStop"},ngContentSelectors:Um,decls:2,vars:5,consts:[[3,"name","message","template","delayStart","delayStop"]],template:function(n,d){1&n&&(e.F$t(),e.Hsn(0),e._UZ(1,"block-ui-content",0)),2&n&&(e.xp6(1),e.Q6J("name",d.name)("message",d.message)("template",d.template)("delayStart",d.delayStart)("delayStop",d.delayStop))},directives:function(){return[x_]},encapsulation:2}),ic([(0,e.IIB)()],f.prototype,"name",void 0),ic([(0,e.IIB)()],f.prototype,"message",void 0),ic([(0,e.IIB)()],f.prototype,"delayStart",void 0),ic([(0,e.IIB)()],f.prototype,"delayStop",void 0),ic([(0,e.IIB)()],f.prototype,"template",void 0),f})(),x_=(()=>{let f=class{constructor(n,d,w){this.blockUI=n,this.resolver=d,this.changeDetectionRef=w,this.name=qf,this.defaultBlockState={startTimeouts:[],stopTimeouts:[],updateTimeouts:[],blockCount:0,startCallCount:0,stopCallCount:0},this.state=Object.assign({},this.defaultBlockState)}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof e.Rgc)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const n=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(n),this.updateBlockTemplate(this.message)}}catch(n){console.error("ng-block-ui:",n)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(n){return n.subscribe(d=>this.onDispatchedEvent(d))}onDispatchedEvent(n){switch(n.action){case Nl.START:this.onStart(n);break;case Nl.STOP:this.onStop(n);break;case Nl.UPDATE:this.onUpdate(n);break;case Nl.RESET:this.onReset(n);break;case Nl.RESET_GLOBAL:this.resetState();break;case Nl.UNSUBSCRIBE:this.onStop(n),this.onUnsubscribe(n.name)}}onStart({name:n,message:d}){if(n===this.name){const w=this.delayStart||this.settings.delayStart||0;this.state.startCallCount+=1;const re=setTimeout(()=>{this.state.blockCount+=1,this.showBlock(d),this.updateInstanceBlockCount()},w);this.state.startTimeouts.push(re)}}onStop({name:n}){if(n===this.name){const d=this.state.stopCallCount+1;if(this.state.startCallCount-d>=0){const w=this.delayStop||this.settings.delayStop||0;this.state.stopCallCount=d;const re=setTimeout(()=>{this.state.blockCount-=1,this.updateInstanceBlockCount(),this.detectChanges()},w);this.state.stopTimeouts.push(re)}}}onUpdate({name:n,message:d}){if(n===this.name){const w=this.delayStart||this.settings.delayStart||0;clearTimeout(this.state.updateTimeouts[0]);const re=setTimeout(()=>{this.updateMessage(d)},w);this.state.updateTimeouts.push(re)}}onReset({name:n}){n===this.name&&this.resetState()}updateMessage(n){this.showBlock(n)}showBlock(n){this.message=n||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}updateBlockTemplate(n){this.templateCompRef&&this.templateCompRef instanceof e.UuU&&(this.templateCompRef.instance.message=n)}resetState(){[...this.state.startTimeouts,...this.state.stopTimeouts,...this.state.updateTimeouts].forEach(clearTimeout),this.state=Object.assign({},this.defaultBlockState),this.updateInstanceBlockCount(),this.detectChanges()}onUnsubscribe(n){this.blockUISubscription&&n===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){if(this.blockUI.blockUIInstances[this.name]){const{blockCount:n}=this.state;this.blockUI.blockUIInstances[this.name].blockCount=n}}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.resetState(),this.onUnsubscribe(this.name),this.blockUI.clearInstance(this.name)}};return f.\u0275fac=function(n){return new(n||f)(e.Y36(Pp),e.Y36(e._Vd),e.Y36(e.sBO))},f.\u0275cmp=e.Xpm({type:f,selectors:[["block-ui-content"]],viewQuery:function(n,d){if(1&n&&e.Gf(jm,5,e.s_b),2&n){let w;e.iGM(w=e.CRH())&&(d.templateOutlet=w.first)}},inputs:{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:["message","defaultMessage"],templateCmp:["template","templateCmp"]},decls:3,vars:9,consts:[[3,"ngClass"],["class","block-ui-spinner",4,"ngIf"],[4,"ngIf"],[1,"block-ui-spinner"],[1,"loader"],["class","message",4,"ngIf"],[1,"message"],["templateOutlet",""]],template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.YNc(1,vg,3,1,"div",1),e.YNc(2,oh,2,0,void 0,2),e.qZA()),2&n&&(e.MT6("block-ui-wrapper ",d.name," ",d.className,""),e.Q6J("ngClass",e.VKq(7,yg,d.state.blockCount>0)),e.xp6(1),e.Q6J("ngIf",!d.templateCmp),e.xp6(1),e.Q6J("ngIf",d.templateCmp))},directives:[s.mk,s.O5],styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],encapsulation:2}),ic([(0,e.IIB)()],f.prototype,"name",void 0),ic([(0,e.IIB)()],f.prototype,"delayStart",void 0),ic([(0,e.IIB)()],f.prototype,"delayStop",void 0),ic([(0,e.IIB)("message")],f.prototype,"defaultMessage",void 0),ic([(0,e.IIB)("template")],f.prototype,"templateCmp",void 0),ic([(0,e.i9L)("templateOutlet",{read:e.s_b})],f.prototype,"templateOutlet",void 0),f})(),Ip=(()=>{let f=class{constructor(n){this.blockUIInstance=n,this.globalDispatch=this.blockUIInstance.decorate()}start(n,d){this.dispatch(n,Nl.START,d)}stop(n){this.dispatch(n,Nl.STOP)}reset(n){this.dispatch(n,Nl.RESET)}resetGlobal(){this.globalDispatch.resetGlobal()}update(n,d){this.dispatch(n,Nl.UPDATE,d)}unsubscribe(n){this.dispatch(n,Nl.UNSUBSCRIBE)}isActive(n=null){const d=n?this.toArray(n):null,w=this.blockUIInstance.blockUIInstances;return Object.keys(w).some(re=>d?d.indexOf(w[re].name)>=0&&w[re].isActive:w[re].isActive)}dispatch(n=[],d,w){this.toArray(n).forEach(Ze=>this.blockUIInstance.decorate(Ze)[d](w))}toArray(n=[]){return"string"==typeof n?[n]:n}};return f.\u0275fac=function(n){return new(n||f)(e.LFG(Pp))},f.\u0275prov=e.Yz7({token:f,factory:function(y){return f.\u0275fac(y)}}),f})();var bg;const Lp=new Pp,R_=new e.OlP("BlockUIModuleSettings");function N_(f){return Lp.updateSettings(f),Lp}let pp=bg=class{static forRoot(y={}){return{ngModule:bg,providers:[{provide:R_,useValue:y},{provide:Pp,useFactory:N_,deps:[R_]},Ip]}}};pp.\u0275fac=function(y){return new(y||pp)},pp.\u0275mod=e.oAB({type:pp}),pp.\u0275inj=e.cJS({imports:[[s.ez]]});let P_=1;function Ym(f,y){if(1&f&&(e.ynx(0),e._UZ(1,"cd-table-key-value",1),e.BQk()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("data",n.module_config)}}let Zm=(()=>{class f{constructor(n){this.mgrModuleService=n}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(n=>{this.module_config=n})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Mt))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-mgr-module-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:[[4,"ngIf"],[3,"data"]],template:function(n,d){1&n&&e.YNc(0,Ym,2,1,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Ft.b],styles:[""]}),f})();class dc extends mi.o{constructor(y,n,d){super(),this.authStorageService=y,this.mgrModuleService=n,this.notificationService=d,this.columns=[],this.modules=[],this.selection=new si.r,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:"Name",prop:"name",flexGrow:1},{name:"Enabled",prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:ii.e.checkIcon},{name:"Always-On",prop:"always_on",flexGrow:1,cellClass:"text-center",cellTransformation:ii.e.checkIcon}];const w=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:"Edit",permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>`/mgr-modules/edit/${w()}`,icon:eo.P.edit},{name:"Enable",permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:eo.P.start},{name:"Disable",permission:"update",click:()=>this.updateModuleState(),disable:()=>this.getTableActionDisabledDesc(),icon:eo.P.stop}]}getModuleList(y){this.mgrModuleService.list().subscribe(n=>{this.modules=n},()=>{y.error()})}updateSelection(y){this.selection=y}isTableActionDisabled(y){if(!this.selection.hasSelection)return!0;const n=this.selection.first();if("dashboard"===n.name||n.always_on)return!0;switch(y){case"enabled":return n.enabled;case"disabled":return!n.enabled}}getTableActionDisabledDesc(){var y;return(null===(y=this.selection.first())||void 0===y?void 0:y.always_on)?"This Manager module is always on.":this.isTableActionDisabled("disabled")}updateModuleState(){if(!this.selection.hasSelection)return;let y;const n=()=>{(0,io.H)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{n()})})},d=this.selection.first();y=d.enabled?this.mgrModuleService.disable(d.name):this.mgrModuleService.enable(d.name),y.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start("Reconnecting, please wait ..."),n()})}}dc.\u0275fac=function(y){return new(y||dc)(e.Y36(hi.j),e.Y36(Mt),e.Y36(Zi.g))},dc.\u0275cmp=e.Xpm({type:dc,selectors:[["cd-mgr-module-list"]],viewQuery:function(y,n){if(1&y&&e.Gf(Ui.a,7),2&y){let d;e.iGM(d=e.CRH())&&(n.table=d.first)}},features:[e.qOj],decls:4,vars:8,consts:[["columnMode","flex","selectionType","single","identifier","module",3,"autoReload","data","columns","hasDetails","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"]],template:function(y,n){1&y&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(w){return n.setExpandedRow(w)})("updateSelection",function(w){return n.updateSelection(w)})("fetchData",function(w){return n.getModuleList(w)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-mgr-module-details",3),e.qZA()),2&y&&(e.Q6J("autoReload",!1)("data",n.modules)("columns",n.columns)("hasDetails",!0),e.xp6(2),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("selection",n.expandedRow))},directives:[Ui.a,ha.K,Zm],styles:[""]}),(0,xr.gn)([function(f,y={}){return y.scopeToInstance?function(n,d){const w=`_${d}-block-ui`;Object.defineProperty(n,d,{get:function(){if(this[w])return this[w];const re=`${f}-${P_++}`;return this[w]=Lp.decorate(re),this[w]},set:function(re){this[w]=re}})}:function(n,d){n[d]=Lp.decorate(f)}}(),(0,xr.w6)("design:type",Object)],dc.prototype,"blockUI",void 0);let Gc=(()=>{class f{constructor(n){this.http=n}getMonitor(){return this.http.get("api/monitor")}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function Eg(f,y){if(1&f&&(e.TgZ(0,"table",11),e.TgZ(1,"tr"),e.TgZ(2,"td",12),e.SDv(3,13),e.qZA(),e.TgZ(4,"td"),e._uU(5),e.qZA(),e.qZA(),e.TgZ(6,"tr"),e.TgZ(7,"td",12),e.SDv(8,14),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.ALo(11,"relativeDate"),e.qZA(),e.qZA(),e.TgZ(12,"tr"),e.TgZ(13,"td",12),e.SDv(14,15),e.qZA(),e.TgZ(15,"td"),e._uU(16),e.qZA(),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",12),e.SDv(19,16),e.qZA(),e.TgZ(20,"td"),e._uU(21),e.qZA(),e.qZA(),e.TgZ(22,"tr"),e.TgZ(23,"td",12),e.SDv(24,17),e.qZA(),e.TgZ(25,"td"),e._uU(26),e.qZA(),e.qZA(),e.TgZ(27,"tr"),e.TgZ(28,"td",12),e.SDv(29,18),e.qZA(),e.TgZ(30,"td"),e._uU(31),e.qZA(),e.qZA(),e.TgZ(32,"tr"),e.TgZ(33,"td",12),e.SDv(34,19),e.qZA(),e.TgZ(35,"td"),e._uU(36),e.qZA(),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(5),e.Oqu(n.mon_status.monmap.fsid),e.xp6(5),e.Oqu(e.lcZ(11,7,n.mon_status.monmap.modified)),e.xp6(6),e.Oqu(n.mon_status.monmap.epoch),e.xp6(5),e.Oqu(n.mon_status.features.quorum_con),e.xp6(5),e.Oqu(n.mon_status.features.quorum_mon),e.xp6(5),e.Oqu(n.mon_status.features.required_con),e.xp6(5),e.Oqu(n.mon_status.features.required_mon)}}let Vm=(()=>{class f{constructor(n){this.monitorService=n,this.inQuorum={columns:[{prop:"name",name:"Name",cellTransformation:ii.e.routerLink},{prop:"rank",name:"Rank"},{prop:"public_addr",name:"Public Address"},{prop:"cdOpenSessions",name:"Open Sessions",cellTransformation:ii.e.sparkline,comparator:(d,w)=>{const re=gn().last(d),Ze=gn().last(w);return re&&Ze&&re!==Ze?re>Ze?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:"Name",cellTransformation:ii.e.routerLink},{prop:"rank",name:"Rank"},{prop:"public_addr",name:"Public Address"}]}}refresh(){this.monitorService.getMonitor().subscribe(n=>{n.in_quorum.map(d=>(d.cdOpenSessions=d.stats.num_sessions.map(w=>w[1]),d.cdLink="/perf_counters/mon/"+d.name,d.cdParams={fromLink:"/monitor"},d)),n.out_quorum.map(d=>(d.cdLink="/perf_counters/mon/"+d.name,d.cdParams={fromLink:"/monitor"},d)),this.inQuorum.data=[...n.in_quorum],this.notInQuorum.data=[...n.out_quorum],this.mon_status=n.mon_status})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Gc))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-monitor"]],decls:13,vars:5,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr;return y="Status",n="In Quorum",d="Not In Quorum",w="Cluster ID",re="monmap modified",Ze="monmap epoch",Lt="quorum con",Gt="quorum mon",On="required con",fr="required mon",[[1,"row"],[1,"col-lg-4"],[1,"cd-header"],y,["class","table table-striped",4,"ngIf"],[1,"col-lg-8"],[1,"in-quorum","cd-header"],n,[3,"data","columns"],d,[3,"data","columns","fetchData"],[1,"table","table-striped"],[1,"bold"],w,re,Ze,Lt,Gt,On,fr]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"fieldset"),e.TgZ(3,"legend",2),e.SDv(4,3),e.qZA(),e.YNc(5,Eg,37,9,"table",4),e.qZA(),e.qZA(),e.TgZ(6,"div",5),e.TgZ(7,"legend",6),e.SDv(8,7),e.qZA(),e._UZ(9,"cd-table",8),e.TgZ(10,"legend",6),e.SDv(11,9),e.qZA(),e.TgZ(12,"cd-table",10),e.NdJ("fetchData",function(){return d.refresh()}),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(5),e.Q6J("ngIf",d.mon_status),e.xp6(4),e.Q6J("data",d.inQuorum.data)("columns",d.inQuorum.columns),e.xp6(3),e.Q6J("data",d.notInQuorum.data)("columns",d.notInQuorum.columns))},directives:[s.O5,Ui.a],pipes:[X.h],styles:[""]}),f})();class Tg{}function hp(f,y){if(1&f&&(e.TgZ(0,"span",18),e.SDv(1,19),e.qZA()),2&f){const n=e.oxw(2);e.Q6J("ngbTooltip",n.clusterWideTooltip)}}function Gm(f,y){1&f&&e._UZ(0,"hr",20)}function zm(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",12),e.TgZ(1,"input",13),e.NdJ("change",function(){const re=e.CHM(n).$implicit;return e.oxw().changeValue(re)}),e.qZA(),e.TgZ(2,"label",14),e.TgZ(3,"strong"),e._uU(4),e.qZA(),e.YNc(5,hp,2,1,"span",15),e._UZ(6,"br"),e.TgZ(7,"span",16),e._uU(8),e.qZA(),e.qZA(),e.YNc(9,Gm,1,0,"hr",17),e.qZA()}if(2&f){const n=y.$implicit,d=y.last;e.xp6(1),e.Q6J("checked",n.value)("indeterminate",n.indeterminate)("name",n.code)("id",n.code),e.xp6(1),e.Q6J("for",n.code),e.xp6(2),e.Oqu(n.name),e.xp6(1),e.Q6J("ngIf",n.clusterWide),e.xp6(3),e.Oqu(n.description),e.xp6(1),e.Q6J("ngIf",!d)}}let Wm=(()=>{class f{constructor(n,d,w,re,Ze){this.activeModal=n,this.actionLabels=d,this.authStorageService=w,this.osdService=re,this.notificationService=Ze,this.initialSelection=[],this.osdFlagsForm=new Hn.cw({}),this.flags=[{code:"noup",name:"No Up",description:"OSDs are not allowed to start",value:!1,clusterWide:!1,indeterminate:!1},{code:"nodown",name:"No Down",description:"OSD failure reports are being ignored, such that the monitors will not mark OSDs down",value:!1,clusterWide:!1,indeterminate:!1},{code:"noin",name:"No In",description:"OSDs that were previously marked out will not be marked back in when they start",value:!1,clusterWide:!1,indeterminate:!1},{code:"noout",name:"No Out",description:"OSDs will not automatically be marked out after the configured interval",value:!1,clusterWide:!1,indeterminate:!1}],this.clusterWideTooltip="The flag has been enabled for the entire cluster.",this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const n=this.selected.length;this.osdService.getFlags().subscribe(d=>{const w=this.getActivatedIndivFlags();this.flags.forEach(re=>{const Ze=w[re.code];d.includes(re.code)&&(re.clusterWide=!0),Ze===n?re.value=!0:Ze>0&&(re.indeterminate=!0)}),this.initialSelection=gn().cloneDeep(this.flags)})}getActivatedIndivFlags(){const n={};return this.flags.forEach(d=>{n[d.code]=0}),[].concat(...this.selected.map(d=>d.state)).map(d=>{Object.keys(n).includes(d)&&(n[d]=n[d]+1)}),n}changeValue(n){n.value=!n.value,n.indeterminate=!1}resetSelection(){this.flags=gn().cloneDeep(this.initialSelection)}submitAction(){const n={};this.flags.forEach(w=>{n[w.code]=w.indeterminate?null:w.value});const d=this.selected.map(w=>w.osd);this.osdService.updateIndividualFlags(n,d).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated OSD Flags"),this.activeModal.close()},()=>{this.activeModal.close()})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(hi.j),e.Y36(lc),e.Y36(Zi.g))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-flags-indiv-modal"]],decls:12,vars:6,consts:function(){let y,n,d;return y="Individual OSD Flags",n="Restore previous selection",d="Cluster-wide",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["name","osdFlagsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"modal-footer"],["type","button",1,"btn","btn-light",3,"click"],n,[3,"form","showSubmit","submitText","submitActionEvent"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"checked","indeterminate","name","id","change"],["ng-class","['tc_' + key]",1,"custom-control-label",3,"for"],["class","badge badge-hdd ml-2",3,"ngbTooltip",4,"ngIf"],[1,"form-text","text-muted"],["class","m-1",4,"ngIf"],[1,"badge","badge-hdd","ml-2",3,"ngbTooltip"],d,[1,"m-1"]]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,zm,10,9,"div",7),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"button",9),e.NdJ("click",function(){return d.resetSelection()}),e.SDv(10,10),e.qZA(),e.TgZ(11,"cd-form-button-panel",11),e.NdJ("submitActionEvent",function(){return d.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(4),e.Q6J("formGroup",d.osdFlagsForm),e.xp6(3),e.Q6J("ngForOf",d.flags),e.xp6(4),e.Q6J("form",d.osdFlagsForm)("showSubmit",d.permissions.osd.update)("submitText",d.actionLabels.UPDATE))},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,s.sg,As.o,jr.p,zn.b,s.O5,Br._L],styles:[""]}),f})();var Bh=o(84333);function bv(f,y){1&f&&e._UZ(0,"hr",15)}function qm(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",10),e.TgZ(1,"input",11),e.NdJ("change",function(){const re=e.CHM(n).$implicit;return re.value=!re.value}),e.qZA(),e.TgZ(2,"label",12),e.TgZ(3,"strong"),e._uU(4),e.qZA(),e._UZ(5,"br"),e.TgZ(6,"span",13),e._uU(7),e.qZA(),e.qZA(),e.YNc(8,bv,1,0,"hr",14),e.qZA()}if(2&f){const n=y.$implicit,d=y.last;e.xp6(1),e.Q6J("checked",n.value)("name",n.code)("id",n.code)("disabled",n.disabled),e.xp6(1),e.Q6J("for",n.code),e.xp6(2),e.Oqu(n.name),e.xp6(3),e.Oqu(n.description),e.xp6(1),e.Q6J("ngIf",!d)}}let Cg=(()=>{class f{constructor(n,d,w,re,Ze){this.activeModal=n,this.actionLabels=d,this.authStorageService=w,this.osdService=re,this.notificationService=Ze,this.osdFlagsForm=new Hn.cw({}),this.allFlags={noin:{code:"noin",name:"No In",value:!1,description:"OSDs that were previously marked out will not be marked back in when they start"},noout:{code:"noout",name:"No Out",value:!1,description:"OSDs will not automatically be marked out after the configured interval"},noup:{code:"noup",name:"No Up",value:!1,description:"OSDs are not allowed to start"},nodown:{code:"nodown",name:"No Down",value:!1,description:"OSD failure reports are being ignored, such that the monitors will not mark OSDs down"},pause:{code:"pause",name:"Pause",value:!1,description:"Pauses reads and writes"},noscrub:{code:"noscrub",name:"No Scrub",value:!1,description:"Scrubbing is disabled"},"nodeep-scrub":{code:"nodeep-scrub",name:"No Deep Scrub",value:!1,description:"Deep Scrubbing is disabled"},nobackfill:{code:"nobackfill",name:"No Backfill",value:!1,description:"Backfilling of PGs is suspended"},norebalance:{code:"norebalance",name:"No Rebalance",value:!1,description:"OSD will choose not to backfill unless PG is also degraded"},norecover:{code:"norecover",name:"No Recover",value:!1,description:"Recovery of PGs is suspended"},sortbitwise:{code:"sortbitwise",name:"Bitwise Sort",value:!1,description:"Use bitwise sort",disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:"Purged Snapdirs",value:!1,description:"OSDs have converted snapsets",disabled:!0},recovery_deletes:{code:"recovery_deletes",name:"Recovery Deletes",value:!1,description:"Deletes performed during recovery instead of peering",disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:"PG Log Hard Limit",value:!1,description:"Puts a hard limit on pg log length",disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(n=>{n.forEach(d=>{this.allFlags[d]?this.allFlags[d].value=!0:this.unknownFlags.push(d)}),this.flags=gn().toArray(this.allFlags)})}submitAction(){const n=this.flags.filter(d=>d.value).map(d=>d.code).concat(this.unknownFlags);this.osdService.updateFlags(n).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated OSD Flags"),this.activeModal.close()},()=>{this.activeModal.close()})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(hi.j),e.Y36(lc),e.Y36(Zi.g))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-flags-modal"]],decls:10,vars:6,consts:function(){let y;return y="Cluster-wide OSD Flags",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["name","osdFlagsForm","novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"checked","name","id","disabled","change"],["ng-class","['tc_' + key]",1,"custom-control-label",3,"for"],[1,"form-text","text-muted"],["class","m-1",4,"ngIf"],[1,"m-1"]]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,qm,9,8,"div",7),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return d.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(4),e.Q6J("formGroup",d.osdFlagsForm),e.xp6(3),e.Q6J("ngForOf",d.flags),e.xp6(2),e.Q6J("form",d.osdFlagsForm)("showSubmit",d.permissions.osd.update)("submitText",d.actionLabels.UPDATE))},directives:[nl.z,Hn._Y,Hn.JL,Bh.T,Gn.V,Hn.sg,s.sg,jr.p,As.o,zn.b,s.O5],styles:[""]}),f})();function oc(f,y){if(1&f&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",n.long_desc,"")}}function Yh(f,y){if(1&f&&(e.TgZ(0,"div",4),e.TgZ(1,"label",5),e.TgZ(2,"b"),e._uU(3),e.qZA(),e._UZ(4,"br"),e.TgZ(5,"span",6),e._uU(6),e.YNc(7,oc,2,1,"cd-helper",7),e.qZA(),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e._UZ(10,"input",10),e._UZ(11,"label",11),e.qZA(),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.Q6J("for",n.name),e.xp6(2),e.Oqu(n.text),e.xp6(3),e.hij(" ",n.desc," "),e.xp6(1),e.Q6J("ngIf",n.long_desc),e.xp6(3),e.Q6J("id",n.name)("formControlName",n.name),e.xp6(1),e.Q6J("for",n.name)}}function Ev(f,y){if(1&f&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",n.long_desc,"")}}const bf=function(f){return[f]};function L_(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",16),e.TgZ(1,"button",17),e.NdJ("click",function(){e.CHM(n);const w=e.oxw(2).$implicit;return e.oxw().resetValue(w.name)}),e._UZ(2,"i",18),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(2),e.Q6J("ngClass",e.VKq(1,bf,n.icons.erase))}}function F_(f,y){if(1&f&&(e.TgZ(0,"span",19),e._uU(1),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",n.additionalTypeInfo.patternHelpText,"")}}function ah(f,y){if(1&f&&(e.TgZ(0,"span",19),e._uU(1),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",n.additionalTypeInfo.patternHelpText,"")}}function Jm(f,y){if(1&f&&(e.TgZ(0,"span",19),e.SDv(1,20),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.pQV(n.maxValue),e.QtT(1)}}function Qm(f,y){if(1&f&&(e.TgZ(0,"span",19),e.SDv(1,21),e.qZA()),2&f){const n=e.oxw(2).$implicit;e.xp6(1),e.pQV(n.minValue),e.QtT(1)}}function Sg(f,y){if(1&f&&(e.TgZ(0,"div",4),e.TgZ(1,"label",5),e._uU(2),e._UZ(3,"br"),e.TgZ(4,"span",6),e._uU(5),e.YNc(6,Ev,2,1,"cd-helper",7),e.qZA(),e.qZA(),e.TgZ(7,"div",8),e.TgZ(8,"div",12),e._UZ(9,"input",13),e.YNc(10,L_,3,3,"div",14),e.qZA(),e.YNc(11,F_,2,1,"span",15),e.YNc(12,ah,2,1,"span",15),e.YNc(13,Jm,2,1,"span",15),e.YNc(14,Qm,2,1,"span",15),e.qZA(),e.qZA()),2&f){const n=e.oxw().$implicit,d=e.oxw();e.xp6(1),e.Q6J("for",n.name),e.xp6(1),e.hij("",n.text," "),e.xp6(3),e.hij(" ",n.desc," "),e.xp6(1),e.Q6J("ngIf",n.long_desc),e.xp6(3),e.Q6J("type",n.additionalTypeInfo.inputType)("id",n.name)("placeholder",n.additionalTypeInfo.humanReadable)("formControlName",n.name)("step",d.getStep(n.type,d.optionsForm.getValue(n.name))),e.xp6(1),e.Q6J("ngIf",d.optionsFormShowReset),e.xp6(1),e.Q6J("ngIf",d.optionsForm.showError(n.name,d.optionsFormDir,"pattern")),e.xp6(1),e.Q6J("ngIf",d.optionsForm.showError(n.name,d.optionsFormDir,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",d.optionsForm.showError(n.name,d.optionsFormDir,"max")),e.xp6(1),e.Q6J("ngIf",d.optionsForm.showError(n.name,d.optionsFormDir,"min"))}}function Mg(f,y){1&f&&e._UZ(0,"hr",22)}function Og(f,y){if(1&f&&(e.TgZ(0,"div"),e.YNc(1,Yh,12,7,"div",2),e.YNc(2,Sg,15,14,"div",2),e.YNc(3,Mg,1,0,"hr",3),e.qZA()),2&f){const n=y.$implicit,d=y.last;e.xp6(1),e.Q6J("ngIf","bool"===n.type),e.xp6(1),e.Q6J("ngIf","bool"!==n.type),e.xp6(1),e.Q6J("ngIf",!d)}}let k_=(()=>{class f{constructor(n){this.configService=n,this.optionNames=[],this.optionsForm=new xt.d({}),this.optionsFormDir=new Hn.F([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=eo.P,this.options=[],this.optionsFormGroup=new xt.d({})}static optionNameToText(n){const d=["mon","mgr","osd","mds","client"];return n.split("_").filter((w,re)=>0!==re||!d.includes(w)).map(w=>w.charAt(0).toUpperCase()+w.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(n=>{this.optionsFormGroup.addControl(n,new Hn.NI(null))})}getStep(n,d){return Re.getTypeStep(n,d)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(n=>{this.options=n.map(d=>{const w=this.optionsForm.get(d.name),re=Re.getTypeValidators(d);return d.additionalTypeInfo=Re.getType(d.type),d.text=f.optionNameToText(d.name),d.value=gn().find(d.value,Ze=>"osd"===Ze.section),d.value&&w.setValue("bool"===d.additionalTypeInfo.name?"true"===d.value.value:d.value.value),re&&(d.patternHelpText=re.patternHelpText,"max"in re&&""!==re.max&&(d.maxValue=re.max),"min"in re&&""!==re.min&&(d.minValue=re.min),w.setValidators(re.validators)),d})})}saveValues(){const n={};return this.optionNames.forEach(d=>{const w=this.optionsForm.getValue(d);null!==w&&""!==w&&(n[d]={section:"osd",value:w})}),this.configService.bulkCreate({options:n})}resetValue(n){this.configService.delete(n,"osd").subscribe(()=>{this.optionsForm.get(n).reset()})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(en.e))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-config-option"]],inputs:{optionNames:"optionNames",optionsForm:"optionsForm",optionsFormDir:"optionsFormDir",optionsFormGroupName:"optionsFormGroupName",optionsFormShowReset:"optionsFormShowReset"},decls:2,vars:2,consts:function(){let y,n,d;return y="Remove the custom configuration value. The default configuration will be inherited and used instead.",n="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",d="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[[3,"formGroup"],[4,"ngFor","ngForOf"],["class","form-group row pt-2",4,"ngIf"],["class","my-2",4,"ngIf"],[1,"form-group","row","pt-2"],[1,"cd-col-form-label",3,"for"],[1,"text-muted"],[4,"ngIf"],[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","formControlName"],[1,"custom-control-label",3,"for"],[1,"input-group"],[1,"form-control",3,"type","id","placeholder","formControlName","step"],["class","input-group-append",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"input-group-append"],["type","button","data-toggle","button","title",y,1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],[1,"invalid-feedback"],n,d,[1,"my-2"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.YNc(1,Og,4,3,"div",1),e.qZA()),2&n&&(e.Q6J("formGroup",d.optionsFormGroup),e.xp6(1),e.Q6J("ngForOf",d.options))},directives:[Hn.JL,Hn.sg,Gn.V,s.sg,s.O5,kn.P,As.o,Hn.Wl,zn.b,Hn.JJ,Hn.u,yl.S,Hn.Fj,s.mk],styles:[".custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]}),f})(),$_=(()=>{class f{}return f.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],f.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],f})();const Xm=["basicOptionsValues"],lh=["advancedOptionsValues"];function H_(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"a",15),e.NdJ("click",function(){return e.CHM(n),e.oxw().advancedEnabled=!0}),e.SDv(1,16),e.qZA()}}function Ag(f,y){if(1&f&&(e.TgZ(0,"div"),e.TgZ(1,"h3",17),e.SDv(2,18),e.qZA(),e._UZ(3,"cd-config-option",7,19),e.qZA()),2&f){const n=e.oxw(),d=e.MAs(7);e.xp6(3),e.Q6J("optionNames",n.advancedOptions)("optionsForm",n.osdPgScrubForm)("optionsFormDir",d)("optionsFormGroupName","advancedFormGroup")}}let wg=(()=>{class f{constructor(n,d,w,re){this.activeModal=n,this.authStorageService=d,this.notificationService=w,this.actionLabels=re,this.basicOptions=$_.basicOptions,this.advancedOptions=$_.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new xt.d({}),this.resource="PG scrub options",this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const n=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&n.push(this.advancedOptionsValues.saveValues()),(0,zs.D)(n).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated PG scrub options"),this.activeModal.close()},()=>{this.activeModal.close()})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(hi.j),e.Y36(Zi.g),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-pg-scrub-modal"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Xm,7),e.Gf(lh,5)),2&n){let w;e.iGM(w=e.CRH())&&(d.basicOptionsValues=w.first),e.iGM(w=e.CRH())&&(d.advancedOptionsValues=w.first)}},decls:19,vars:21,consts:function(){let y,n,d;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Advanced...",d="Advanced configuration options",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],[3,"optionNames","optionsForm","optionsFormDir","optionsFormGroupName"],["basicOptionsValues",""],[1,"row"],[1,"col-sm-12"],["class","pull-right margin-right-md",3,"click",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"pull-right","margin-right-md",3,"click"],n,[1,"page-header"],d,["advancedOptionsValues",""]]},template:function(n,d){if(1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e._UZ(9,"cd-config-option",7,8),e.TgZ(11,"div",9),e.TgZ(12,"div",10),e.YNc(13,H_,2,0,"a",11),e.qZA(),e.qZA(),e.YNc(14,Ag,5,4,"div",12),e.qZA(),e.TgZ(15,"div",13),e.TgZ(16,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return d.submitAction()}),e.ALo(17,"titlecase"),e.ALo(18,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n){const w=e.MAs(7);e.Q6J("modalRef",d.activeModal),e.xp6(4),e.pQV(e.lcZ(3,13,d.action))(e.lcZ(4,15,d.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.osdPgScrubForm),e.xp6(3),e.Q6J("optionNames",d.basicOptions)("optionsForm",d.osdPgScrubForm)("optionsFormDir",w)("optionsFormGroupName","basicFormGroup"),e.xp6(4),e.Q6J("ngIf",!d.advancedEnabled),e.xp6(1),e.Q6J("ngIf",d.advancedEnabled),e.xp6(2),e.Q6J("form",d.osdPgScrubForm)("showSubmit",d.permissions.configOpt.update)("submitText",e.lcZ(17,17,d.action)+" "+e.lcZ(18,19,d.resource))}},directives:[nl.z,Hn._Y,Hn.JL,Bh.T,Gn.V,Hn.sg,k_,s.O5,jr.p],pipes:[s.rS,E.m],styles:[""]}),f})();function Dg(f,y){if(1&f&&(e.TgZ(0,"option",22),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.name),e.xp6(1),e.hij(" ",n.text," ")}}function xg(f,y){1&f&&(e.TgZ(0,"span",23),e.SDv(1,24),e.qZA())}function Km(f,y){if(1&f&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.Oqu(n.value.desc)}}function e1(f,y){1&f&&(e.TgZ(0,"span",23),e.SDv(1,29),e.qZA())}function t1(f,y){if(1&f&&(e.TgZ(0,"span",23),e.SDv(1,30),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.pQV(n.value.patternHelpText),e.QtT(1)}}function n1(f,y){if(1&f&&(e.TgZ(0,"span",23),e.SDv(1,31),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.pQV(n.value.maxValue),e.QtT(1)}}function Rg(f,y){if(1&f&&(e.TgZ(0,"span",23),e.SDv(1,32),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.pQV(n.value.minValue),e.QtT(1)}}const Tv=function(f){return{required:f}};function Ng(f,y){if(1&f&&(e.TgZ(0,"div",7),e.TgZ(1,"label",25),e.TgZ(2,"span",26),e._uU(3),e.qZA(),e.YNc(4,Km,2,1,"cd-helper",27),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",28),e.YNc(7,e1,2,0,"span",13),e.YNc(8,t1,2,1,"span",13),e.YNc(9,n1,2,1,"span",13),e.YNc(10,Rg,2,1,"span",13),e.qZA(),e.qZA()),2&f){const n=y.$implicit,d=e.oxw(),w=e.MAs(5);e.xp6(1),e.Q6J("for",n.key),e.xp6(1),e.Q6J("ngClass",e.VKq(11,Tv,d.osdRecvSpeedForm.getValue("customizePriority"))),e.xp6(1),e.hij(" ",n.value.text," "),e.xp6(1),e.Q6J("ngIf",n.value.desc),e.xp6(2),e.Q6J("id",n.key)("formControlName",n.key)("readonly",!d.osdRecvSpeedForm.getValue("customizePriority")),e.xp6(1),e.Q6J("ngIf",d.osdRecvSpeedForm.getValue("customizePriority")&&d.osdRecvSpeedForm.showError(n.key,w,"required")),e.xp6(1),e.Q6J("ngIf",d.osdRecvSpeedForm.getValue("customizePriority")&&d.osdRecvSpeedForm.showError(n.key,w,"pattern")),e.xp6(1),e.Q6J("ngIf",d.osdRecvSpeedForm.getValue("customizePriority")&&d.osdRecvSpeedForm.showError(n.key,w,"max")),e.xp6(1),e.Q6J("ngIf",d.osdRecvSpeedForm.getValue("customizePriority")&&d.osdRecvSpeedForm.showError(n.key,w,"min"))}}let r1=(()=>{class f{constructor(n,d,w,re,Ze,Lt){this.activeModal=n,this.actionLabels=d,this.authStorageService=w,this.configService=re,this.notificationService=Ze,this.osdService=Lt,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new xt.d({priority:new Hn.NI(null,{validators:[Hn.kI.required]}),customizePriority:new Hn.NI(!1)}),this.priorityAttrs={osd_max_backfills:{text:"Max Backfills",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:"Recovery Max Active",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:"Recovery Max Single Start",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:"Recovery Sleep",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(Gt=>{this.osdRecvSpeedForm.addControl(Gt,new Hn.NI(null,{validators:[Hn.kI.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(n=>{const d=this.getCurrentValues(n);this.detectPriority(d.values,w=>{this.setPriority(w)}),this.setDescription(d.configOptions),this.setValidators(d.configOptions)})}detectPriority(n,d){const w=gn().find(this.priorities,re=>gn().isEqual(re.values,n));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),w?d(w):4===Object.entries(n).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),d(Object({name:"custom",text:"Custom",values:n}))):d(this.priorities[0])}getCurrentValues(n){const d={values:{},configOptions:[]};return n.forEach(w=>{d.configOptions.push(w),"value"in w?w.value.forEach(re=>{"osd"===re.section&&(d.values[w.name]=Number(re.value))}):"default"in w&&null!==w.default&&(d.values[w.name]=Number(w.default))}),d}setDescription(n){n.forEach(d=>{""!==d.desc&&(this.priorityAttrs[d.name].desc=d.desc)})}setPriority(n){const d=gn().find(this.priorities,w=>"custom"===w.name);"custom"===n.name?d||this.priorities.push(n):d&&this.priorities.splice(this.priorities.indexOf(d),1),this.osdRecvSpeedForm.controls.priority.setValue(n.name),Object.entries(n.values).forEach(([w,re])=>{this.osdRecvSpeedForm.controls[w].setValue(re)})}setValidators(n){n.forEach(d=>{const w=Re.getTypeValidators(d);w?(w.validators.push(Hn.kI.required),"max"in w&&""!==w.max&&(this.priorityAttrs[d.name].maxValue=w.max),"min"in w&&""!==w.min&&(this.priorityAttrs[d.name].minValue=w.min),this.priorityAttrs[d.name].patternHelpText=w.patternHelpText,this.osdRecvSpeedForm.controls[d.name].setValidators(w.validators)):this.osdRecvSpeedForm.controls[d.name].setValidators(Hn.kI.required)})}onCustomizePriorityChange(){const n={};if(Object.keys(this.priorityAttrs).forEach(d=>{n[d]=this.osdRecvSpeedForm.getValue(d)}),this.osdRecvSpeedForm.getValue("customizePriority")){const d={name:"custom",text:"Custom",values:n};this.setPriority(d)}else this.detectPriority(n,d=>{this.setPriority(d)})}onPriorityChange(n){const d=gn().find(this.priorities,w=>w.name===n)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(d)}submitAction(){const n={};Object.keys(this.priorityAttrs).forEach(d=>{n[d]={section:"osd",value:this.osdRecvSpeedForm.getValue(d)}}),this.configService.bulkCreate({options:n}).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated OSD recovery speed priority '" + this.osdRecvSpeedForm.getValue("priority") + "'"),this.activeModal.close()},()=>{this.activeModal.close()})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(hi.j),e.Y36(en.e),e.Y36(Zi.g),e.Y36(lc))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-recv-speed-modal"]],decls:24,vars:10,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="OSD Recovery Priority",n="Priority",d="Customize priority values",w="This field is required.",re="This field is required!",Ze="" + "\ufffd0\ufffd" + "",Lt="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",Gt="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","priority",1,"cd-col-form-label","required"],n,[1,"cd-col-form-input"],["formControlName","priority","id","priority",1,"form-control",3,"change"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["formControlName","customizePriority","id","customizePriority","name","customizePriority","type","checkbox",1,"custom-control-input",3,"change"],["for","customizePriority",1,"custom-control-label"],d,["class","form-group row",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],w,[1,"cd-col-form-label",3,"for"],[3,"ngClass"],[4,"ngIf"],["type","number",1,"form-control",3,"id","formControlName","readonly"],re,Ze,Lt,Gt]},template:function(n,d){if(1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.TgZ(11,"select",11),e.NdJ("change",function(re){return d.onPriorityChange(re.target.value)}),e.YNc(12,Dg,2,2,"option",12),e.qZA(),e.YNc(13,xg,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"div",14),e.TgZ(16,"div",15),e.TgZ(17,"input",16),e.NdJ("change",function(){return d.onCustomizePriorityChange()}),e.qZA(),e.TgZ(18,"label",17),e.SDv(19,18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(20,Ng,11,13,"div",19),e.ALo(21,"keyvalue"),e.qZA(),e.TgZ(22,"div",20),e.TgZ(23,"cd-form-button-panel",21),e.NdJ("submitActionEvent",function(){return d.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n){const w=e.MAs(5);e.Q6J("modalRef",d.activeModal),e.xp6(4),e.Q6J("formGroup",d.osdRecvSpeedForm),e.xp6(8),e.Q6J("ngForOf",d.priorities),e.xp6(1),e.Q6J("ngIf",d.osdRecvSpeedForm.showError("priority",w,"required")),e.xp6(7),e.Q6J("ngForOf",e.lcZ(21,8,d.priorityAttrs)),e.xp6(3),e.Q6J("form",d.osdRecvSpeedForm)("submitText",d.actionLabels.UPDATE)("showSubmit",d.permissions.configOpt.update)}},directives:[nl.z,Hn._Y,Hn.JL,Bh.T,Gn.V,Hn.sg,kn.P,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.u,s.sg,s.O5,Hn.Wl,jr.p,Hn.YN,Hn.Kr,s.mk,Hn.wV,Hn.Fj,yl.S],pipes:[s.Nd],styles:[""]}),f})();function i1(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,15),e.qZA())}function Cv(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,16),e.qZA())}function Sv(f,y){if(1&f&&(e.TgZ(0,"span",13),e.YNc(1,i1,2,0,"span",14),e.YNc(2,Cv,2,0,"span",14),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngIf",null==n.weight.errors?null:n.weight.errors.required),e.xp6(1),e.Q6J("ngIf",(null==n.weight.errors?null:n.weight.errors.max)||(null==n.weight.errors?null:n.weight.errors.min))}}let U_=(()=>{class f{constructor(n,d,w,re){this.actionLabels=n,this.activeModal=d,this.osdService=w,this.fb=re,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[Hn.kI.required])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.activeModal.close())}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(Br.Kz),e.Y36(lc),e.Y36($c.O))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-reweight-modal"]],decls:14,vars:7,consts:function(){let y,n,d;return y="Reweight OSD: " + "\ufffd0\ufffd" + "",n="This field is required.",d="The value needs to be between 0 and 1.",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],[3,"formGroup"],[1,"modal-body"],[1,"row"],["for","weight",1,"cd-col-form-label"],[1,"cd-col-form-input"],["id","weight","type","number","step","0.1","formControlName","weight","min","0","max","1",1,"form-control",3,"value"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],[4,"ngIf"],n,d]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4),e.TgZ(5,"div",5),e.TgZ(6,"div",6),e.TgZ(7,"label",7),e._uU(8,"Weight"),e.qZA(),e.TgZ(9,"div",8),e._UZ(10,"input",9),e.YNc(11,Sv,3,2,"span",10),e.qZA(),e.qZA(),e.qZA(),e.TgZ(12,"div",11),e.TgZ(13,"cd-form-button-panel",12),e.NdJ("submitActionEvent",function(){return d.reweight()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(2),e.pQV(d.osdId),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.reweightForm),e.xp6(6),e.Q6J("value",d.currentWeight),e.xp6(1),e.Q6J("ngIf",d.weight.errors),e.xp6(2),e.Q6J("form",d.reweightForm)("submitText",d.actionLabels.REWEIGHT))},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,As.o,Hn.wV,Hn.qQ,Hn.Fd,Hn.Fj,zn.b,Hn.JJ,Hn.u,s.O5,jr.p],styles:[""]}),f})();var j_=o(86969);let Pg=(()=>{class f{constructor(n,d,w,re,Ze){this.activeModal=n,this.actionLabels=d,this.osdService=w,this.notificationService=re,this.joinPipe=Ze,this.selected=[]}ngOnInit(){this.scrubForm=new Hn.cw({})}scrub(){(0,zs.D)(this.selected.map(n=>this.osdService.scrub(n,this.deep))).subscribe(()=>{this.notificationService.show(Ho.k.success,"" + (this.deep ? "Deep scrub" : "Scrub") + " was initialized in the following OSD(s): " + this.joinPipe.transform(this.selected) + ""),this.activeModal.close()},()=>this.activeModal.close())}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(lc),e.Y36(Zi.g),e.Y36(j_.A))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-scrub-modal"]],decls:13,vars:9,consts:function(){let y,n,d,w;return y="{VAR_SELECT, select, true {Deep } other {}}",y=e.Zx4(y,{VAR_SELECT:"\ufffd0\ufffd"}),n="OSDs " + y + "Scrub",d="{VAR_SELECT, select, true {deep } other {}}",d=e.Zx4(d,{VAR_SELECT:"\ufffd0\ufffd"}),w="You are about to apply a " + d + "scrub to the OSD(s): " + "\ufffd#9\ufffd" + "" + "\ufffd1\ufffd" + "" + "\ufffd/#9\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],n,[1,"modal-content"],["name","scrubForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],w,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"]]},template:function(n,d){1&n&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"strong"),e.ALo(10,"join"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return d.scrub()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n&&(e.Q6J("modalRef",d.activeModal),e.xp6(2),e.pQV(d.deep),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.scrubForm),e.xp6(6),e.pQV(d.deep)(e.lcZ(10,7,d.selected)),e.QtT(8),e.xp6(2),e.Q6J("form",d.scrubForm)("submitText",d.actionLabels.UPDATE))},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,jr.p],pipes:[j_.A],styles:[""]}),f})();var B_=o(98056);function Mv(f,y){if(1&f&&e._UZ(0,"cd-device-list",17),2&f){const n=e.oxw(2);e.Q6J("osdId",null==n.osd?null:n.osd.id)}}function Rd(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",18),2&f){const n=e.oxw(2);e.Q6J("data",null==n.osd||null==n.osd.details?null:n.osd.details.osd_map)}}function Ov(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table-key-value",21),e.NdJ("fetchData",function(){return e.CHM(n),e.oxw(3).refresh()}),e.qZA()}if(2&f){const n=e.oxw(3);e.Q6J("data",null==n.osd||null==n.osd.details?null:n.osd.details.osd_metadata)}}function Ig(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",22),e.SDv(1,23),e.qZA())}function o1(f,y){if(1&f&&(e.YNc(0,Ov,1,1,"cd-table-key-value",19),e.YNc(1,Ig,2,0,"ng-template",null,20,e.W1O)),2&f){const n=e.MAs(2),d=e.oxw(2);e.Q6J("ngIf",null==d.osd||null==d.osd.details?null:d.osd.details.osd_metadata)("ngIfElse",n)}}function Y_(f,y){if(1&f&&e._UZ(0,"cd-smart-list",17),2&f){const n=e.oxw(2);e.Q6J("osdId",null==n.osd?null:n.osd.id)}}function Lg(f,y){if(1&f&&e._UZ(0,"cd-table-performance-counter",25),2&f){const n=e.oxw(3);e.Q6J("serviceId",null==n.osd?null:n.osd.id)}}function Fg(f,y){if(1&f&&e.YNc(0,Lg,1,1,"cd-table-performance-counter",24),2&f){const n=e.oxw(2);e.Q6J("ngIf",null==n.osd?null:n.osd.details)}}function s1(f,y){if(1&f&&e._UZ(0,"cd-grafana",28),2&f){const n=e.oxw(3);e.Q6J("grafanaPath","osd-device-details?var-osd=osd."+n.osd.id)}}function kg(f,y){1&f&&(e.TgZ(0,"li",26),e.TgZ(1,"a",4),e.SDv(2,27),e.qZA(),e.YNc(3,s1,1,1,"ng-template",6),e.qZA())}function $g(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,Mv,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,Rd,1,1,"ng-template",6),e.qZA(),e.TgZ(11,"li",9),e.TgZ(12,"a",4),e.SDv(13,10),e.qZA(),e.YNc(14,o1,3,2,"ng-template",6),e.qZA(),e.TgZ(15,"li",11),e.TgZ(16,"a",4),e.SDv(17,12),e.qZA(),e.YNc(18,Y_,1,1,"ng-template",6),e.qZA(),e.TgZ(19,"li",13),e.TgZ(20,"a",4),e.SDv(21,14),e.qZA(),e.YNc(22,Fg,1,1,"ng-template",6),e.qZA(),e.YNc(23,kg,4,0,"li",15),e.qZA(),e._UZ(24,"div",16),e.BQk()),2&f){const n=e.MAs(2),d=e.oxw();e.xp6(23),e.Q6J("ngIf",d.grafanaPermission.read),e.xp6(1),e.Q6J("ngbNavOutlet",n)}}let Z_=(()=>{class f{constructor(n,d){this.osdService=n,this.authStorageService=d,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){var n,d,w;(null===(n=this.osd)||void 0===n?void 0:n.id)!==(null===(d=this.selection)||void 0===d?void 0:d.id)&&(this.osd=this.selection),gn().isNumber(null===(w=this.osd)||void 0===w?void 0:w.id)&&this.refresh()}refresh(){this.osdService.getDetails(this.osd.id).subscribe(n=>{this.osd.details=n})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(lc),e.Y36(hi.j))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt;return y="Devices",n="Attributes (OSD map)",d="Metadata",w="Device health",re="Performance counter",Ze="Metadata not available",Lt="Performance Details",[[4,"ngIf"],["ngbNav","","id","tabset-osd-details","cdStatefulTab","osd-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","devices"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","attributes"],n,["ngbNavItem","metadata"],d,["ngbNavItem","device-health"],w,["ngbNavItem","performance-counter"],re,["ngbNavItem","performance-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"osdId"],[3,"data"],[3,"data","fetchData",4,"ngIf","ngIfElse"],["noMetaData",""],[3,"data","fetchData"],["type","warning"],Ze,["serviceType","osd",3,"serviceId",4,"ngIf"],["serviceType","osd",3,"serviceId"],["ngbNavItem","performance-details"],Lt,["uid","CrAHE0iZz","grafanaStyle","three",3,"grafanaPath"]]},template:function(n,d){1&n&&e.YNc(0,$g,25,2,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,ts,Ft.b,De.G,A,B_.p,Je.F],styles:[""]}),f})();const a1=["osdUsageTpl"],vu=["markOsdConfirmationTpl"],V_=["criticalConfirmationTpl"],l1=["reweightBodyTpl"],c1=["safeToDestroyBodyTpl"],u1=["deleteOsdExtraTpl"],d1=["flagsTpl"],G_=function(){return{read:!0}};function Zh(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",13),e.NdJ("fetchData",function(){return e.CHM(n),e.oxw().getOsdList()})("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e.TgZ(1,"div",14),e._UZ(2,"cd-table-actions",15),e._UZ(3,"cd-table-actions",16),e.qZA(),e._UZ(4,"cd-osd-details",17),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("data",n.osds)("columns",n.columns)("hasDetails",!0)("updateSelectionOnRefresh","never"),e.xp6(2),e.Q6J("permission",n.permissions.osd)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("permission",e.DdM(11,G_))("selection",n.selection)("tableActions",n.clusterWideActions),e.xp6(1),e.Q6J("selection",n.expandedRow)}}function Jf(f,y){1&f&&e._UZ(0,"cd-grafana",19),2&f&&e.Q6J("grafanaPath","osd-overview?")}function Hg(f,y){1&f&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,18),e.qZA(),e.YNc(3,Jf,1,1,"ng-template",5),e.qZA())}function Nd(f,y){if(1&f&&(e.ynx(0),e.tHW(1,20),e._UZ(2,"strong"),e.ALo(3,"join"),e._UZ(4,"strong"),e.N_p(),e.BQk()),2&f){const n=y.markActionDescription,d=y.osdIds;e.xp6(4),e.pQV(e.lcZ(3,2,d))(n),e.QtT(1)}}function ch(f,y){if(1&f&&(e.TgZ(0,"div",23),e.TgZ(1,"cd-alert-panel",24),e.SDv(2,25),e.qZA(),e.qZA()),2&f){const n=e.oxw(),d=n.actionDescription,w=n.message,re=e.oxw();e.xp6(2),e.pQV(re.selection.hasSingleSelection)(d)(w),e.QtT(2)}}function f1(f,y){if(1&f&&(e.YNc(0,ch,3,3,"div",21),e.ynx(1),e.tHW(2,22),e._UZ(3,"strong"),e.ALo(4,"join"),e._UZ(5,"strong"),e.N_p(),e.BQk()),2&f){const d=y.actionDescription,w=y.osdIds;e.Q6J("ngIf",!y.safeToPerform),e.xp6(5),e.pQV(e.lcZ(4,3,w))(d),e.QtT(2)}}function Ug(f,y){if(1&f&&(e.TgZ(0,"span",28),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.Oqu(n)}}function z_(f,y){if(1&f&&(e.TgZ(0,"span",29),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.Oqu(n)}}function Qd(f,y){if(1&f&&(e.YNc(0,Ug,2,1,"span",26),e.YNc(1,z_,2,1,"span",27)),2&f){const n=y.row;e.Q6J("ngForOf",n.cdClusterFlags),e.xp6(1),e.Q6J("ngForOf",n.cdIndivFlags)}}function uh(f,y){if(1&f&&e._UZ(0,"cd-usage-bar",30),2&f){const n=y.row,d=e.oxw();e.Q6J("total",n.stats.stat_bytes)("used",n.stats.stat_bytes_used)("warningThreshold",d.osdSettings.nearfull_ratio)("errorThreshold",d.osdSettings.full_ratio)}}function nu(f,y){1&f&&(e.ynx(0,31),e.ynx(1,32),e.TgZ(2,"div",33),e.TgZ(3,"div",34),e._UZ(4,"input",35),e.TgZ(5,"label",36),e.SDv(6,37),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.BQk()),2&f&&e.Q6J("formGroup",y.form)}let Vh=(()=>{class f extends mi.o{constructor(n,d,w,re,Ze,Lt,Gt,On,fr,hr){super(),this.authStorageService=n,this.osdService=d,this.dimlessBinaryPipe=w,this.modalService=re,this.urlBuilder=Ze,this.router=Lt,this.taskWrapper=Gt,this.actionLabels=On,this.notificationService=fr,this.orchService=hr,this.icons=eo.P,this.osdSettings=new Tg,this.selection=new si.r,this.osds=[],this.disabledFlags=["sortbitwise","purged_snapdirs","recovery_deletes","pglog_hardlimit"],this.indivFlagNames=["noup","nodown","noin","noout"],this.actionOrchFeatures={create:[ml.OSD_CREATE],delete:[ml.OSD_DELETE]},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:eo.P.add,click:()=>this.router.navigate([this.urlBuilder.getCreate()]),disable:Jr=>this.getDisable("create",Jr),canBePrimary:Jr=>!Jr.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:eo.P.edit,click:()=>this.editAction()},{name:this.actionLabels.FLAGS,permission:"update",icon:eo.P.flag,click:()=>this.configureFlagsIndivAction(),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.SCRUB,permission:"update",icon:eo.P.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:Jr=>Jr.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:eo.P.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:eo.P.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal("out",this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:eo.P.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal("in",this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:eo.P.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal("down",this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:eo.P.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal("Mark","OSD lost","marked lost",Jr=>this.osdService.safeToDestroy(JSON.stringify(Jr)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:eo.P.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal("Purge","OSD","purged",Jr=>this.osdService.safeToDestroy(JSON.stringify(Jr)),"is_safe_to_destroy",Jr=>(this.selection=new si.r,this.osdService.purge(Jr))),disable:()=>this.isNotSelectedOrInState("up"),icon:eo.P.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal("destroy","OSD","destroyed",Jr=>this.osdService.safeToDestroy(JSON.stringify(Jr)),"is_safe_to_destroy",Jr=>(this.selection=new si.r,this.osdService.destroy(Jr))),disable:()=>this.isNotSelectedOrInState("up"),icon:eo.P.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>this.delete(),disable:Jr=>this.getDisable("delete",Jr),icon:eo.P.destroy}]}static collectStates(n){const d=[n.in?"in":"out"];return n.up?d.push("up"):n.state.includes("destroyed")?d.push("destroyed"):d.push("down"),d}ngOnInit(){this.clusterWideActions=[{name:"Flags",icon:eo.P.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:"Recovery Priority",icon:eo.P.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:"PG scrub",icon:eo.P.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"id",name:"ID",flexGrow:1,cellTransformation:ii.e.executing,customTemplateConfig:{valueClass:"bold"}},{prop:"host.name",name:"Host"},{prop:"collectedStates",name:"Status",flexGrow:1,cellTransformation:ii.e.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:"Device class",flexGrow:1.2,cellTransformation:ii.e.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:"PGs",flexGrow:1},{prop:"stats.stat_bytes",name:"Size",flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"state",name:"Flags",cellTemplate:this.flagsTpl},{prop:"stats.usage",name:"Usage",cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:"Read bytes",cellTransformation:ii.e.sparkline},{prop:"stats_history.in_bytes",name:"Write bytes",cellTransformation:ii.e.sparkline},{prop:"stats.op_r",name:"Read ops",cellTransformation:ii.e.perSecond},{prop:"stats.op_w",name:"Write ops",cellTransformation:ii.e.perSecond}],this.orchService.status().subscribe(n=>this.orchStatus=n),this.osdService.getOsdSettings().pipe((0,_c.q)(1)).subscribe(n=>{this.osdSettings=n})}getDisable(n,d){if("delete"===n){if(!d.hasSelection)return!0;if(gn().some(this.getSelectedOsds(),re=>{const Ze=gn().get(re,"operational_status");return"deleting"===Ze||"unmanaged"===Ze}))return!0}return this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[n])}getSelectedOsdIds(){const n=this.osds.map(d=>d.id);return this.selection.selected.map(d=>d.id).filter(d=>n.includes(d)).sort()}getSelectedOsds(){return this.osds.filter(n=>!gn().isUndefined(n)&&this.getSelectedOsdIds().includes(n.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(n){this.selection=n}isNotSelectedOrInState(n){const d=this.getSelectedOsds();if(0===d.length)return!0;switch(n){case"in":return d.some(w=>1===w.in);case"out":return d.some(w=>1!==w.in);case"down":return d.some(w=>1!==w.up);case"up":return d.some(w=>1===w.up)}}getOsdList(){const n=[this.osdService.getList(),this.osdService.getFlags()];(0,zs.D)(n).subscribe(d=>{this.osds=d[0].map(w=>{w.collectedStates=f.collectStates(w),w.stats_history.out_bytes=w.stats_history.op_out_bytes.map(Ze=>Ze[1]),w.stats_history.in_bytes=w.stats_history.op_in_bytes.map(Ze=>Ze[1]),w.stats.usage=w.stats.stat_bytes_used/w.stats.stat_bytes,w.cdIsBinary=!0,w.cdIndivFlags=w.state.filter(Ze=>this.indivFlagNames.includes(Ze)),w.cdClusterFlags=d[1].filter(Ze=>!this.disabledFlags.includes(Ze));const re=gn().get(w,"operational_status","unmanaged");return"unmanaged"!==re&&"working"!==re&&(w.cdExecuting=re),w})})}editAction(){const n=gn().filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(Hl.X,{titleText:"Edit OSD: " + n.id + "",fields:[{type:"text",name:"deviceClass",value:n.tree.device_class,label:"Device class",required:!0}],submitButtonText:"Edit OSD",onSubmit:d=>{this.osdService.update(n.id,d.deviceClass).subscribe(()=>{this.notificationService.show(Ho.k.success,"Updated OSD '" + n.id + "'"),this.getOsdList()})}})}scrubAction(n){if(!this.hasOsdSelected)return;const d={selected:this.getSelectedOsdIds(),deep:n};this.bsModalRef=this.modalService.show(Pg,d)}configureFlagsAction(){this.bsModalRef=this.modalService.show(Cg)}configureFlagsIndivAction(){const n={selected:this.getSelectedOsds()};this.bsModalRef=this.modalService.show(Wm,n)}showConfirmationModal(n,d){const w=this.getSelectedOsdIds();this.bsModalRef=this.modalService.show(Ll.Y,{titleText:"Mark OSD " + n + "",buttonText:"Mark " + n + "",bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:n,osdIds:w},onSubmit:()=>{(0,zs.D)(this.getSelectedOsdIds().map(re=>d.call(this.osdService,re))).subscribe(()=>this.bsModalRef.close())}})}reweight(){const n=this.osds.filter(d=>d.id===this.selection.first().id).pop();this.bsModalRef=this.modalService.show(U_,{currentWeight:n.weight,osdId:n.id})}delete(){const n=new xt.d({preserve:new Hn.NI(!1)});this.showCriticalConfirmationModal("delete","OSD","deleted",d=>this.osdService.safeToDelete(JSON.stringify(d)),"is_safe_to_delete",d=>(this.selection=new si.r,this.taskWrapper.wrapTaskAroundCall({task:new Va.R("osd/"+uo.MQ.DELETE,{svc_id:d}),call:this.osdService.delete(d,n.value.preserve,!0)})),!0,n,this.deleteOsdExtraTpl)}showCriticalConfirmationModal(n,d,w,re,Ze,Lt,Gt=!1,On,fr){re(this.getSelectedOsdIds()).subscribe(hr=>{const Jr=this.modalService.show(jo.M,{actionDescription:n,itemDescription:d,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:hr[Ze],message:hr.message,actionDescription:w,osdIds:this.getSelectedOsdIds()},childFormGroup:On,childFormGroupTemplate:fr,submitAction:()=>{const $i=(0,zs.D)(this.getSelectedOsdIds().map(bo=>Lt.call(this.osdService,bo)));Gt?$i.subscribe({error:()=>{this.getOsdList(),Jr.close()},complete:()=>Jr.close()}):$i.subscribe(()=>{this.getOsdList(),Jr.close()},()=>Jr.close())}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(r1)}configurePgScrubAction(){this.bsModalRef=this.modalService.show(wg,void 0,{size:"lg"})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(lc),e.Y36(Se.$),e.Y36(na.Z),e.Y36(vl.F),e.Y36(tn.F0),e.Y36(ki.P),e.Y36(uo.p4),e.Y36(Zi.g),e.Y36(el))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-osd-list"]],viewQuery:function(n,d){if(1&n&&(e.Gf(a1,7),e.Gf(vu,7),e.Gf(V_,7),e.Gf(l1,5),e.Gf(c1,5),e.Gf(u1,5),e.Gf(d1,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.osdUsageTpl=w.first),e.iGM(w=e.CRH())&&(d.markOsdConfirmationTpl=w.first),e.iGM(w=e.CRH())&&(d.criticalConfirmationTpl=w.first),e.iGM(w=e.CRH())&&(d.reweightBodyTpl=w.first),e.iGM(w=e.CRH())&&(d.safeToDestroyBodyTpl=w.first),e.iGM(w=e.CRH())&&(d.deleteOsdExtraTpl=w.first),e.iGM(w=e.CRH())&&(d.flagsTpl=w.first)}},features:[e._Bn([{provide:vl.F,useValue:new vl.F("osd")}]),e.qOj],decls:18,vars:2,consts:function(){let y,n,d,w,re,Ze,Lt;return y="OSDs List",n="Overall Performance",d="" + "[\ufffd#2\ufffd|\ufffd#4\ufffd]" + "OSD(s) " + "\ufffd0\ufffd" + "" + "[\ufffd/#2\ufffd|\ufffd/#4\ufffd]" + " will be marked " + "[\ufffd#2\ufffd|\ufffd#4\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#2\ufffd|\ufffd/#4\ufffd]" + " if you proceed.",d=e.Zx4(d),w="" + "[\ufffd#3\ufffd|\ufffd#5\ufffd]" + "OSD " + "\ufffd0\ufffd" + "" + "[\ufffd/#3\ufffd|\ufffd/#5\ufffd]" + " will be " + "[\ufffd#3\ufffd|\ufffd#5\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#3\ufffd|\ufffd/#5\ufffd]" + " if you proceed.",w=e.Zx4(w),re="{VAR_SELECT, select, true {OSD is} other {OSDs are}}",re=e.Zx4(re,{VAR_SELECT:"\ufffd0\ufffd"}),Ze="The " + re + " not safe to be " + "\ufffd1\ufffd" + "! " + "\ufffd2\ufffd" + "",Lt="Preserve OSD ID(s) for replacement.",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["markOsdConfirmationTpl",""],["criticalConfirmationTpl",""],["flagsTpl",""],["osdUsageTpl",""],["deleteOsdExtraTpl",""],["selectionType","multiClick",3,"data","columns","hasDetails","updateSelectionOnRefresh","fetchData","setExpandedRow","updateSelection"],[1,"table-actions","btn-toolbar"],["id","osd-actions",1,"btn-group",3,"permission","selection","tableActions"],["dropDownOnly","Cluster-wide configuration","btnColor","light","id","cluster-wide-actions",1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],n,["uid","lo02I1Aiz","grafanaStyle","four",3,"grafanaPath"],d,["class","danger",4,"ngIf"],w,[1,"danger"],["type","warning"],Ze,["class","badge badge-hdd mr-1",4,"ngFor","ngForOf"],["class","badge badge-info mr-1",4,"ngFor","ngForOf"],[1,"badge","badge-hdd","mr-1"],[1,"badge","badge-info","mr-1"],[3,"total","used","warningThreshold","errorThreshold"],[3,"formGroup"],["formGroupName","child"],[1,"form-group"],[1,"custom-control","custom-checkbox"],["type","checkbox","name","preserve","id","preserve","formControlName","preserve",1,"custom-control-input"],["for","preserve",1,"custom-control-label"],Lt]},template:function(n,d){if(1&n&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,Zh,5,12,"ng-template",5),e.qZA(),e.YNc(6,Hg,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,Nd,5,4,"ng-template",null,8,e.W1O),e.YNc(10,f1,6,5,"ng-template",null,9,e.W1O),e.YNc(12,Qd,2,2,"ng-template",null,10,e.W1O),e.YNc(14,uh,1,4,"ng-template",null,11,e.W1O),e.YNc(16,nu,7,1,"ng-template",null,12,e.W1O)),2&n){const w=e.MAs(1);e.xp6(6),e.Q6J("ngIf",d.permissions.grafana.read),e.xp6(1),e.Q6J("ngbNavOutlet",w)}},directives:[Br.Pz,Br.nv,Br.Vx,Br.uN,s.O5,Br.tO,Ui.a,ha.K,Z_,Je.F,De.G,s.sg,Un.O,Gn.V,Hn.JL,Hn.sg,Hn.x0,kn.P,As.o,Hn.Wl,zn.b,Hn.JJ,Hn.u],pipes:[j_.A],styles:[""]}),f})();var nd=o(9837);let Tf=(()=>{class f{constructor(n,d){this.http=n,this.settingsService=d,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(n,d){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,n,d)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(n,d){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,n,d)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(n={}){return this.http.get(this.baseURL,{params:n})}getSilences(n={}){return this.http.get(`${this.baseURL}/silences`,{params:n})}getRules(n="all"){return this.http.get(`${this.baseURL}/rules`).pipe((0,Ds.U)(d=>(["alerting","rewrites"].includes(n)&&d.groups.map(w=>{w.rules=w.rules.filter(re=>re.type===n)}),d)))}setSilence(n){return this.http.post(`${this.baseURL}/silence`,n,{observe:"response"})}expireSilence(n){return this.http.delete(`${this.baseURL}/silence/${n}`,{observe:"response"})}getNotifications(n){return this.http.get(`${this.baseURL}/notifications?from=${n&&n.id?n.id:"last"}`)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN),e.LFG(nd.g))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var Qf=o(61355);let _p=(()=>{class f{constructor(n){this.notificationService=n}sendNotifications(n){n.forEach(d=>this.notificationService.show(d))}convertToCustomAlerts(n){return gn().uniqWith(n.map(d=>({status:gn().isObject(d.status)?d.status.state:this.getPrometheusNotificationStatus(d),name:d.labels.alertname,url:d.generatorURL,description:d.annotations.description,fingerprint:gn().isObject(d.status)&&d.fingerprint})),gn().isEqual)}getPrometheusNotificationStatus(n){const d=n.status;return"firing"===d?"active":d}convertAlertToNotification(n){return new Qf.T(this.formatType(n.status),`${n.name} (${n.status})`,this.appendSourceLink(n,n.description),void 0,"Prometheus")}formatType(n){return Ho.k[gn().findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},w=>w.includes(n))]}appendSourceLink(n,d){return`${d} <a href="${n.url}" target="_blank"><i class="${eo.P.lineChart}"></i></a>`}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(Zi.g))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Cf=(()=>{class f{constructor(n,d){this.alertFormatter=n,this.prometheusService=d,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(n=>this.handleAlerts(n),n=>{[404,504].includes(n.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(n=>{this.rules=n.groups.reduce((d,w)=>d.concat(w.rules.map(re=>(re.group=w.name,re))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(n){this.canAlertsBeNotified&&this.notifyOnAlertChanges(n,this.alerts),this.activeAlerts=gn().reduce(this.alerts,(d,w)=>"active"===w.status.state?++d:d,0),this.alerts=n,this.canAlertsBeNotified=!0}notifyOnAlertChanges(n,d){const w=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(n),this.alertFormatter.convertToCustomAlerts(d)),Ze=gn().filter(w,Lt=>"suppressed"!==Lt.status).map(Lt=>this.alertFormatter.convertAlertToNotification(Lt));this.alertFormatter.sendNotifications(Ze)}getChangedAlerts(n,d){return gn().differenceWith(n,d,gn().isEqual).concat(this.getVanishedAlerts(n,d))}getVanishedAlerts(n,d){return gn().differenceWith(d,n,(w,re)=>w.fingerprint===re.fingerprint).map(w=>(w.status="resolved",w))}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(_p),e.LFG(Tf))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Xf=(()=>{class f extends mi.o{constructor(n){super(),this.prometheusService=n,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1}ngOnInit(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Tf))},f.\u0275dir=e.lG2({type:f,features:[e.qOj]}),f})(),Kf=(()=>{class f{constructor(n){this.router=n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-prometheus-tabs"]],decls:11,vars:1,consts:function(){let y,n,d;return y="Active Alerts",n="Alerts",d="Silences",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/monitoring/active-alerts"],["ngbNavLink",""],y,["ngbNavItem","/monitoring/alerts"],n,["ngbNavItem","/monitoring/silences"],d]},template:function(n,d){1&n&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(re){return d.router.navigate([re.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"li",5),e.TgZ(6,"a",3),e.SDv(7,6),e.qZA(),e.qZA(),e.TgZ(8,"li",7),e.TgZ(9,"a",3),e.SDv(10,8),e.qZA(),e.qZA(),e.qZA()),2&n&&e.Q6J("activeId",d.router.url)},directives:[Br.Pz,Br.nv,Br.Vx],styles:[""]}),f})();const Fp=["externalLinkTpl"];function kp(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",3),e.tHW(1,4),e._UZ(2,"cd-doc",5),e.N_p(),e.qZA())}function $p(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",9),2&f){const n=e.oxw(2);e.Q6J("renderObjects",!0)("hideEmpty",!0)("appendParentKey",!1)("data",n.expandedRow)("customCss",n.customCss)("autoReload",!1)}}function Hp(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",6),e.NdJ("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e._UZ(1,"cd-table-actions",7),e.YNc(2,$p,1,6,"cd-table-key-value",8),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("data",n.prometheusAlertService.alerts)("columns",n.columns)("forceIdentifier",!0)("customCss",n.customCss)("hasDetails",!0),e.xp6(1),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("ngIf",n.expandedRow)}}const jg=function(f){return[f]};function Bg(f,y){if(1&f&&(e.TgZ(0,"a",10),e._UZ(1,"i",11),e._uU(2," Source"),e.qZA()),2&f){const n=y.value,d=e.oxw();e.Q6J("href",n,e.LSH),e.xp6(1),e.Q6J("ngClass",e.VKq(2,jg,d.icons.lineChart))}}let Zg=(()=>{class f extends Xf{constructor(n,d,w,re,Ze){super(Ze),this.authStorageService=n,this.prometheusAlertService=d,this.urlBuilder=w,this.cdDatePipe=re,this.selection=new si.r,this.icons=eo.P,this.customCss={"badge badge-danger":"active","badge badge-warning":"unprocessed","badge badge-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:Lt=>Lt.hasSingleSelection,disable:Lt=>!Lt.hasSingleSelection||Lt.first().cdExecuting,icon:eo.P.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:"Create Silence"}]}ngOnInit(){super.ngOnInit(),this.columns=[{name:"Name",prop:"labels.alertname",flexGrow:2},{name:"Job",prop:"labels.job",flexGrow:2},{name:"Severity",prop:"labels.severity"},{name:"State",prop:"status.state",cellTransformation:ii.e.classAdding},{name:"Started",prop:"startsAt",pipe:this.cdDatePipe},{name:"URL",prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(n){this.selection=n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Cf),e.Y36(vl.F),e.Y36(bi.N),e.Y36(Tf))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-active-alert-list"]],viewQuery:function(n,d){if(1&n&&e.Gf(Fp,7),2&n){let w;e.iGM(w=e.CRH())&&(d.externalLinkTpl=w.first)}},features:[e._Bn([{provide:vl.F,useValue:new vl.F("silences")}]),e.qOj],decls:5,vars:2,consts:function(){let y;return y="To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],["identifier","fingerprint","selectionType","single",3,"data","columns","forceIdentifier","customCss","hasDetails","setExpandedRow","updateSelection",4,"ngIf"],["externalLinkTpl",""],["type","info"],y,["section","prometheus"],["identifier","fingerprint","selectionType","single",3,"data","columns","forceIdentifier","customCss","hasDetails","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload",4,"ngIf"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload"],["target","_blank",3,"href"],[3,"ngClass"]]},template:function(n,d){1&n&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,kp,3,0,"cd-alert-panel",0),e.YNc(2,Hp,3,9,"cd-table",1),e.YNc(3,Bg,3,4,"ng-template",null,2,e.W1O)),2&n&&(e.xp6(1),e.Q6J("ngIf",!d.isAlertmanagerConfigured),e.xp6(1),e.Q6J("ngIf",d.isAlertmanagerConfigured))},directives:[Kf,s.O5,De.G,_s.K,Ui.a,ha.K,Ft.b,s.mk],styles:[""]}),f})();var W_=o(94088);function Vg(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,3),e._UZ(2,"cd-doc",4),e.N_p(),e.qZA())}function Gg(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",7),2&f){const n=e.oxw(2);e.Q6J("data",n.expandedRow)("renderObjects",!0)("hideKeys",n.hideKeys)}}function zg(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",5),e.NdJ("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e.YNc(1,Gg,1,3,"cd-table-key-value",6),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("data",n.prometheusAlertService.rules)("columns",n.columns)("selectionType","single")("hasDetails",!0),e.xp6(1),e.Q6J("ngIf",n.expandedRow)}}let Wg=(()=>{class f extends Xf{constructor(n,d){super(d),this.prometheusAlertService=n,this.hideKeys=["alerts","type"]}ngOnInit(){super.ngOnInit(),this.columns=[{prop:"name",name:"Name"},{prop:"labels.severity",name:"Severity"},{prop:"group",name:"Group"},{prop:"duration",name:"Duration",pipe:new W_.u},{prop:"query",name:"Query",isHidden:!0},{prop:"annotations.description",name:"Description"}]}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Cf),e.Y36(Tf))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-rules-list"]],features:[e.qOj],decls:3,vars:2,consts:function(){let y;return y="To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],[3,"data","columns","selectionType","hasDetails","setExpandedRow","updateSelection",4,"ngIf"],["type","info"],y,["section","prometheus"],[3,"data","columns","selectionType","hasDetails","setExpandedRow","updateSelection"],["cdTableDetail","",3,"data","renderObjects","hideKeys",4,"ngIf"],["cdTableDetail","",3,"data","renderObjects","hideKeys"]]},template:function(n,d){1&n&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,Vg,3,0,"cd-alert-panel",0),e.YNc(2,zg,2,5,"cd-table",1)),2&n&&(e.xp6(1),e.Q6J("ngIf",!d.isPrometheusConfigured),e.xp6(1),e.Q6J("ngIf",d.isPrometheusConfigured))},directives:[Kf,s.O5,De.G,_s.K,Ui.a,Ft.b],styles:[""]}),f})();var O=o(26504);let B=(()=>{class f{constructor(){this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(n,d){return this.multiMatch([n],d)}multiMatch(n,d){if(!n.some(w=>w.isRegex))return n.forEach(w=>{d=this.getMatchedRules(w,d)}),this.describeMatch(d)}getMatchedRules(n,d){const w=this.getAttributePath(n.name);return d.filter(re=>gn().get(re,w)===n.value)}describeMatch(n){let d=0;return n.forEach(w=>d+=w.alerts.length),{status:this.getMatchText(n.length,d),cssClass:d?"has-success":"has-warning"}}getAttributePath(n){return this.valueAttributePath[n]}getMatchText(n,d){const w={noRule:"Your matcher seems to match no currently defined rule or active alert.",noAlerts:"no active alerts",alert:"1 active alert",alerts:"" + d + " active alerts",rule:"Matches 1 rule",rules:"Matches " + n + " rules"};return n?"" + (n > 1 ? w.rules : w.rule) + " with " + (d ? d > 1 ? w.alerts : w.alert : w.noAlerts) + ".":w.noRule}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),_e=(()=>{class f{calculateDuration(n,d){const w=+n,re=+d,Ze=this.getDuration(Math.abs(w-re));return w>re?"-"+Ze:Ze}getDuration(n){const d=new Date(n),w=d.getUTCHours(),re=d.getUTCMinutes(),Lt=(Gt,On)=>Gt&&Gt+On;return[Lt(Math.floor(n/864e5),"d"),Lt(w,"h"),Lt(re,"m")].filter(Gt=>Gt).join(" ")}calculateDate(n,d,w){const re=+n;if(gn().isNaN(re))return;const Ze=this.getDurationMs(d)*(w?-1:1);return new Date(re+Ze)}getDurationMs(n){return 6e4*(60*(24*this.getNumbersFromString(n,"d")+this.getNumbersFromString(n,"h"))+this.getNumbersFromString(n,"m"))}getNumbersFromString(n,d){const w=n.match(new RegExp(`[0-9 ]+${d}`,"i"));return w?parseInt(w[0],10):0}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function gt(f,y){if(1&f&&(e.TgZ(0,"option",27),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.hij(" ",n," ")}}function un(f,y){1&f&&(e.TgZ(0,"span",28),e.SDv(1,29),e.qZA())}function Vn(f,y){1&f&&(e.TgZ(0,"span",28),e.SDv(1,30),e.qZA())}function gr(f,y){if(1&f&&(e.TgZ(0,"div",31),e.TgZ(1,"span"),e._uU(2),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.Gre("cd-col-form-offset ",n.matcherMatch.cssClass,""),e.xp6(1),e.Gre("text-muted ",n.matcherMatch.cssClass,""),e.xp6(1),e.hij(" ",n.matcherMatch.status," ")}}let Lr=(()=>{class f{constructor(n,d,w,re){this.formBuilder=n,this.silenceMatcher=d,this.activeModal=w,this.actionLabels=re,this.submitAction=new e.vpe,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.valueClick=new vd.xQ,this.valueFocus=new vd.xQ,this.search=Ze=>(0,Hf.T)(Ze.pipe(pf(200),(0,tc.x)()),this.valueFocus,this.valueClick.pipe((0,qu.h)(()=>!this.typeahead.isPopupOpen()))).pipe((0,Ds.U)(Lt=>(""===Lt?this.possibleValues:this.possibleValues.filter(Gt=>Gt.toLowerCase().indexOf(Lt.toLowerCase())>-1)).slice(0,10))),this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[Hn.kI.required]],value:[{value:"",disabled:!0},[Hn.kI.required]],isRegex:new Hn.NI(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(n=>{null!==n?(this.setPossibleValues(n),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(n=>{const d=this.form.value;d.value=n,this.matcherMatch=this.silenceMatcher.singleMatch(d,this.rules)})}setPossibleValues(n){this.possibleValues=gn().sortedUniq(this.rules.map(d=>gn().get(d,this.silenceMatcher.getAttributePath(n))).filter(d=>d))}getMode(){return this.editMode?this.actionLabels.EDIT:this.actionLabels.ADD}preFillControls(n){this.form.setValue(n)}onSubmit(){this.submitAction.emit(this.form.value),this.activeModal.close()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36($c.O),e.Y36(B),e.Y36(Br.Kz),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-silence-matcher-modal"]],viewQuery:function(n,d){if(1&n&&e.Gf(Br.dR,7),2&n){let w;e.iGM(w=e.CRH())&&(d.typeahead=w.first)}},outputs:{submitAction:"submitAction"},decls:31,vars:11,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="{VAR_SELECT, select, true {Edit} other {Add}}",y=e.Zx4(y,{VAR_SELECT:"\ufffd0\ufffd"}),n="" + y + " Matcher",d="Name",w="-- Select an attribute to match against --",re="Value",Ze="Use regular expression",Lt="This field is required!",Gt="This field is required!",[[3,"modalRef"],[1,"modal-title"],n,[1,"modal-content"],["novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],d,[1,"cd-col-form-input"],["id","name","formControlName","name","name","name",1,"form-control"],[3,"ngValue"],w,[3,"value",4,"ngFor","ngForOf"],["class","help-block",4,"ngIf"],["for","value",1,"cd-col-form-label","required"],re,["id","value","container","body","type","text","formControlName","value",1,"form-control",3,"ngbTypeahead","focus","click"],["id","match-state",3,"class",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","isRegex","name","is-regex","id","is-regex",1,"custom-control-input"],["for","is-regex",1,"custom-control-label"],Ze,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"help-block"],Lt,Gt,["id","match-state"]]},template:function(n,d){if(1&n&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.TgZ(11,"select",11),e.TgZ(12,"option",12),e.SDv(13,13),e.qZA(),e.YNc(14,gt,2,2,"option",14),e.qZA(),e.YNc(15,un,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(16,"div",7),e.TgZ(17,"label",16),e.SDv(18,17),e.qZA(),e.TgZ(19,"div",10),e.TgZ(20,"input",18),e.NdJ("focus",function(re){return d.valueFocus.next(re.target.value)})("click",function(re){return d.valueClick.next(re.target.value)}),e.qZA(),e.YNc(21,Vn,2,0,"span",15),e.qZA(),e.YNc(22,gr,3,7,"div",19),e.qZA(),e.TgZ(23,"div",7),e.TgZ(24,"div",20),e.TgZ(25,"div",21),e._UZ(26,"input",22),e.TgZ(27,"label",23),e.SDv(28,24),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(29,"div",25),e.TgZ(30,"cd-form-button-panel",26),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&n){const w=e.MAs(5);e.Q6J("modalRef",d.activeModal),e.xp6(2),e.pQV(d.editMode),e.QtT(2),e.xp6(2),e.Q6J("formGroup",d.form),e.xp6(8),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",d.nameAttributes),e.xp6(1),e.Q6J("ngIf",d.form.showError("name",w,"required")),e.xp6(5),e.Q6J("ngbTypeahead",d.search),e.xp6(1),e.Q6J("ngIf",d.form.showError("value",w,"required")),e.xp6(1),e.Q6J("ngIf",d.form.getValue("value")&&!d.form.getValue("isRegex")&&d.matcherMatch),e.xp6(8),e.Q6J("form",d.form)("submitText",d.getMode())}},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,kn.P,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.u,Hn.YN,Hn.Kr,s.sg,s.O5,Hn.Fj,Br.dR,Hn.Wl,jr.p],styles:[""]}),f})();var Xr=o(52266);function Qi(f,y){if(1&f&&(e.ynx(0),e._UZ(1,"input",53),e.BQk()),2&f){const n=e.oxw().$implicit,d=e.oxw(),w=d.index,re=d.matcher;e.xp6(1),e.hYB("id","matcher-",n.attribute,"-",w,""),e.Q6J("value",re[n.attribute])}}function Xi(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",47),e.TgZ(2,"div",54),e._UZ(3,"input",55),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw().$implicit,d=e.oxw(),w=d.index,re=d.matcher;e.xp6(3),e.hYB("id","matcher-",n.attribute,"-",w,""),e.Q6J("checked",re[n.attribute])}}const ao=function(f){return[f]};function qo(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",51),e.TgZ(2,"span",52),e._UZ(3,"i",38),e.qZA(),e.qZA(),e.YNc(4,Qi,2,3,"ng-container",7),e.YNc(5,Xi,4,3,"ng-container",7),e.BQk()),2&f){const n=y.$implicit;e.xp6(2),e.Q6J("ngbTooltip",n.tooltip),e.xp6(1),e.Q6J("ngClass",e.VKq(4,ao,n.icon)),e.xp6(1),e.Q6J("ngIf","isRegex"!==n.attribute),e.xp6(1),e.Q6J("ngIf","isRegex"===n.attribute)}}function Ss(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",46),e.YNc(1,qo,6,6,"ng-container",34),e.TgZ(2,"span",47),e.TgZ(3,"button",48),e.NdJ("click",function(){const re=e.CHM(n).index;return e.oxw().showMatcherModal(re)}),e._UZ(4,"i",38),e.qZA(),e.TgZ(5,"button",49),e.NdJ("click",function(){const re=e.CHM(n).index;return e.oxw().deleteMatcher(re)}),e._UZ(6,"i",38),e.qZA(),e.qZA(),e.qZA(),e._UZ(7,"span",50)}if(2&f){const n=y.index,d=e.oxw();e.xp6(1),e.Q6J("ngForOf",d.matcherConfig),e.xp6(2),e.MGl("id","matcher-edit-",n,""),e.xp6(1),e.Q6J("ngClass",e.VKq(5,ao,d.icons.edit)),e.xp6(1),e.MGl("id","matcher-delete-",n,""),e.xp6(1),e.Q6J("ngClass",e.VKq(7,ao,d.icons.trash))}}function Js(f,y){1&f&&(e.TgZ(0,"cd-helper"),e.SDv(1,56),e.qZA())}function Ia(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,58),e.qZA())}function ta(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,59),e.qZA())}function Xa(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,60),e.qZA())}function cl(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,61),e.qZA())}function rd(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,62),e.qZA())}const Uu=function(f,y){return{"text-warning":f,"text-danger":y}};function id(f,y){if(1&f&&(e.TgZ(0,"h5",38),e.TgZ(1,"strong"),e.SDv(2,63),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(4);e.Q6J("ngClass",e.WLB(1,Uu,!n.submitted,n.submitted))}}function Rc(f,y){1&f&&e.GkF(0)}const od=function(f,y){return{index:f,matcher:y}};function Pd(f,y){if(1&f&&(e.TgZ(0,"span"),e.YNc(1,Rc,1,0,"ng-container",64),e.qZA()),2&f){const n=y.$implicit,d=y.index;e.oxw();const w=e.MAs(1);e.xp6(1),e.Q6J("ngTemplateOutlet",w)("ngTemplateOutletContext",e.WLB(2,od,d,n))}}function qg(f,y){if(1&f&&(e.TgZ(0,"div",65),e.TgZ(1,"span"),e._uU(2),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.Gre("cd-col-form-offset ",n.matcherMatch.cssClass,""),e.xp6(1),e.Gre("text-muted ",n.matcherMatch.cssClass,""),e.xp6(1),e.hij(" ",n.matcherMatch.status," ")}}function yC(f,y){if(1&f&&e._UZ(0,"cd-date-time-picker",66),2&f){const n=e.oxw();e.Q6J("control",n.form.get("startsAt"))("hasSeconds",!1)}}function bC(f,y){if(1&f&&e._UZ(0,"cd-date-time-picker",66),2&f){const n=e.oxw();e.Q6J("control",n.form.get("endsAt"))("hasSeconds",!1)}}const EC=function(f){return{"btn-warning":f}};let Jg=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr){this.router=n,this.authStorageService=d,this.formBuilder=w,this.prometheusService=re,this.notificationService=Ze,this.route=Lt,this.timeDiff=Gt,this.modalService=On,this.silenceMatcher=fr,this.actionLabels=hr,this.succeededLabels=Jr,this.icons=eo.P,this.recreate=!1,this.edit=!1,this.resource="silence",this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:"Attribute name",icon:this.icons.paragraph,attribute:"name"},{tooltip:"Value",icon:this.icons.terminal,attribute:"value"},{tooltip:"Regular expression",icon:this.icons.magic,attribute:"isRegex"}],this.datetimeFormat="YYYY-MM-DD HH:mm",this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silences/edit"),this.recreate=this.router.url.startsWith("/monitoring/silences/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){if(this.permission=this.authStorageService.getPermissions().prometheus,!this.permission.read||!(this.edit?this.permission.update:this.permission.create))throw new O._2}createForm(){const n=mo.h.custom("format",d=>!(""===d||In()(d,this.datetimeFormat).isValid()));this.form=this.formBuilder.group({startsAt:["",[Hn.kI.required,n]],duration:["2h",[Hn.kI.min(1)]],endsAt:["",[Hn.kI.required,n]],createdBy:[this.authStorageService.getUsername(),[Hn.kI.required]],comment:[null,[Hn.kI.required]]},{validators:mo.h.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const n=In()().format(this.datetimeFormat);this.form.silentSet("startsAt",n),this.updateDate(),this.subscribeDateChanges()}updateDate(n){const d=In()(this.form.getValue(n?"endsAt":"startsAt"),this.datetimeFormat).toDate(),w=this.timeDiff.calculateDate(d,this.form.getValue("duration"),n);if(w){const re=In()(w).format(this.datetimeFormat);this.form.silentSet(n?"startsAt":"endsAt",re)}}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(n){const d=In()(this.form.getValue("startsAt"),this.datetimeFormat),w=In()(this.form.getValue("endsAt"),this.datetimeFormat);d.isBefore(w)?this.updateDuration():this.updateDate(n)}updateDuration(){const n=In()(this.form.getValue("startsAt"),this.datetimeFormat).toDate(),d=In()(this.form.getValue("endsAt"),this.datetimeFormat).toDate();this.form.silentSet("duration",this.timeDiff.calculateDuration(n,d))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(n=>{this.rules=n.groups.reduce((d,w)=>gn().concat(d,w.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(Ho.k.info,"Please add your Prometheus host to the dashboard configuration and refresh the page",void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(n=>{!n.id||(this.edit||this.recreate?this.prometheusService.getSilences().subscribe(d=>{const w=gn().find(d,["id",n.id]);gn().isUndefined(w)||this.fillFormWithSilence(w)}):this.prometheusService.getAlerts().subscribe(d=>{const w=gn().find(d,["fingerprint",n.id]);gn().isUndefined(w)||this.fillFormByAlert(w)}))})}fillFormWithSilence(n){this.id=n.id,this.edit&&(["startsAt","endsAt"].forEach(d=>this.form.silentSet(d,In()(n[d]).format(this.datetimeFormat))),this.updateDuration()),["createdBy","comment"].forEach(d=>this.form.silentSet(d,n[d])),this.matchers=n.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(n){const d=n.labels;Object.keys(d).forEach(w=>this.setMatcher({name:w,value:d[w],isRegex:!1}))}setMatcher(n,d){gn().isNumber(d)?this.matchers[d]=n:this.matchers.push(n),this.validateMatchers()}showMatcherModal(n){const w=this.modalService.show(Lr).componentInstance;w.rules=this.rules,gn().isNumber(n)&&(w.editMode=!0,w.preFillControls(this.matchers[n])),w.submitAction.subscribe(re=>{this.setMatcher(re,n)})}deleteMatcher(n){this.matchers.splice(n,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(n=>{this.router.navigate(["/monitoring/silences"]),this.notificationService.show(Ho.k.success,this.getNotificationTile(n.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const n=this.form.value;return delete n.duration,n.startsAt=In()(n.startsAt,this.datetimeFormat).toISOString(),n.endsAt=In()(n.endsAt,this.datetimeFormat).toISOString(),n.matchers=this.matchers,this.edit&&(n.id=this.id),n}getNotificationTile(n){let d;return d=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${d} ${this.resource} ${n}`}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0),e.Y36(hi.j),e.Y36($c.O),e.Y36(Tf),e.Y36(Zi.g),e.Y36(tn.gz),e.Y36(_e),e.Y36(na.Z),e.Y36(B),e.Y36(uo.p4),e.Y36(uo.aX))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-prometheus-form"]],decls:71,vars:30,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Creator",d="Comment",w="Start time",re="If the start time lies in the past the creation time will be used",Ze="Duration",Lt="End time",Gt="Matchers",On="Add matcher",fr="Edit",hr="Delete",Jr="Editing a silence will expire the old silence and recreate it as a new silence",$i="This field is required!",bo="This field is required!",_o="This field is required!",Yi="This field is required!",Xs="This field is required!",ls="A silence requires at least one matcher",[["matcherTpl",""],[1,"cd-col-form"],["name","form","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],y,[4,"ngIf"],[1,"card-body"],[1,"form-group","row"],["for","created-by",1,"cd-col-form-label","required"],n,[1,"cd-col-form-input"],["formControlName","createdBy","id","created-by","name","created-by","type","text",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","comment",1,"cd-col-form-label","required"],d,["formControlName","comment","id","comment","name","comment","type","text",1,"form-control"],["for","starts-at",1,"cd-col-form-label"],[1,"required"],w,re,["formControlName","startsAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["ps","ngbPopover"],["for","duration",1,"cd-col-form-label","required"],Ze,["formControlName","duration","id","duration","name","duration","type","text",1,"form-control"],["for","ends-at",1,"cd-col-form-label","required"],Lt,["formControlName","endsAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["pe","ngbPopover"],Gt,[1,"cd-col-form-offset"],[3,"ngClass",4,"ngIf"],[4,"ngFor","ngForOf"],[1,"row"],[1,"col-12"],["type","button","id","add-matcher",1,"btn","btn-light","float-right","my-3",3,"ngClass","click"],[3,"ngClass"],On,["id","match-state",3,"class",4,"ngIf"],[1,"card-footer"],[1,"text-right"],[3,"form","submitText","submitActionEvent"],["popStart",""],["popEnd",""],[1,"input-group","my-2"],[1,"input-group-append"],["type","button","ngbTooltip",fr,1,"btn","btn-light",3,"id","click"],["type","button","ngbTooltip",hr,1,"btn","btn-light",3,"id","click"],[1,"help-block"],[1,"input-group-prepend"],[1,"input-group-text",3,"ngbTooltip"],["type","text","disabled","","readonly","",1,"form-control",3,"id","value"],[1,"input-group-text"],["type","checkbox","disabled","","readonly","",3,"id","checked"],Jr,[1,"invalid-feedback"],$i,bo,_o,Yi,Xs,ls,[4,"ngTemplateOutlet","ngTemplateOutletContext"],["id","match-state"],[3,"control","hasSeconds"]]},template:function(n,d){if(1&n){const w=e.EpF();e.YNc(0,Ss,8,9,"ng-template",null,0,e.W1O),e.TgZ(2,"div",1),e.TgZ(3,"form",2,3),e.TgZ(5,"div",4),e.TgZ(6,"div",5),e.TgZ(7,"span"),e.SDv(8,6),e.ALo(9,"titlecase"),e.ALo(10,"upperFirst"),e.qZA(),e.YNc(11,Js,2,0,"cd-helper",7),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"div",9),e.TgZ(14,"label",10),e.SDv(15,11),e.qZA(),e.TgZ(16,"div",12),e._UZ(17,"input",13),e.YNc(18,Ia,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(19,"div",9),e.TgZ(20,"label",15),e.SDv(21,16),e.qZA(),e.TgZ(22,"div",12),e.TgZ(23,"textarea",17),e._uU(24,"            "),e.qZA(),e.YNc(25,ta,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(26,"div",9),e.TgZ(27,"label",18),e.TgZ(28,"span",19),e.SDv(29,20),e.qZA(),e.TgZ(30,"cd-helper"),e.SDv(31,21),e.qZA(),e.qZA(),e.TgZ(32,"div",12),e.TgZ(33,"input",22,23),e.NdJ("click",function(){return e.CHM(w),e.MAs(34).open()})("keypress",function(){return e.CHM(w),e.MAs(34).close()}),e.qZA(),e.YNc(35,Xa,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(36,"div",9),e.TgZ(37,"label",24),e.SDv(38,25),e.qZA(),e.TgZ(39,"div",12),e._UZ(40,"input",26),e.YNc(41,cl,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(42,"div",9),e.TgZ(43,"label",27),e.SDv(44,28),e.qZA(),e.TgZ(45,"div",12),e.TgZ(46,"input",29,30),e.NdJ("click",function(){return e.CHM(w),e.MAs(47).open()})("keypress",function(){return e.CHM(w),e.MAs(47).close()}),e.qZA(),e.YNc(48,rd,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(49,"fieldset"),e.TgZ(50,"legend",19),e.SDv(51,31),e.qZA(),e.TgZ(52,"div",32),e.YNc(53,id,3,4,"h5",33),e.YNc(54,Pd,2,5,"span",34),e.TgZ(55,"div",35),e.TgZ(56,"div",36),e.TgZ(57,"button",37),e.NdJ("click",function(){return d.showMatcherModal()}),e._UZ(58,"i",38),e.ynx(59),e.SDv(60,39),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(61,qg,3,7,"div",40),e.qZA(),e.qZA(),e.TgZ(62,"div",41),e.TgZ(63,"div",42),e.TgZ(64,"cd-form-button-panel",43),e.NdJ("submitActionEvent",function(){return d.submit()}),e.ALo(65,"titlecase"),e.ALo(66,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(67,yC,1,2,"ng-template",null,44,e.W1O),e.YNc(69,bC,1,2,"ng-template",null,45,e.W1O)}if(2&n){const w=e.MAs(4),re=e.MAs(68),Ze=e.MAs(70);e.xp6(3),e.Q6J("formGroup",d.form),e.xp6(7),e.pQV(e.lcZ(9,18,d.action))(e.lcZ(10,20,d.resource)),e.QtT(8),e.xp6(1),e.Q6J("ngIf",d.edit),e.xp6(7),e.Q6J("ngIf",d.form.showError("createdBy",w,"required")),e.xp6(7),e.Q6J("ngIf",d.form.showError("comment",w,"required")),e.xp6(8),e.Q6J("ngbPopover",re),e.xp6(2),e.Q6J("ngIf",d.form.showError("startsAt",w,"required")),e.xp6(6),e.Q6J("ngIf",d.form.showError("duration",w,"required")),e.xp6(5),e.Q6J("ngbPopover",Ze),e.xp6(2),e.Q6J("ngIf",d.form.showError("endsAt",w,"required")),e.xp6(5),e.Q6J("ngIf",0===d.matchers.length),e.xp6(1),e.Q6J("ngForOf",d.matchers),e.xp6(3),e.Q6J("ngClass",e.VKq(26,EC,w.submitted&&0===d.matchers.length)),e.xp6(1),e.Q6J("ngClass",e.VKq(28,ao,d.icons.add)),e.xp6(3),e.Q6J("ngIf",d.matchers.length&&d.matcherMatch),e.xp6(3),e.Q6J("form",d.form)("submitText",e.lcZ(65,22,d.action)+" "+e.lcZ(66,24,d.resource))}},directives:[Hn._Y,Hn.JL,Gn.V,Hn.sg,s.O5,kn.P,As.o,Hn.Fj,zn.b,Hn.JJ,Hn.u,yl.S,Br.o8,s.sg,s.mk,jr.p,Br._L,s.tP,Xr.J],pipes:[s.rS,E.m],styles:["textarea[_ngcontent-%COMP%]{resize:vertical}"]}),f})();var Av=o(84051),wv=o(18891);function db(f,y){1&f&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,3),e._UZ(2,"cd-doc",4),e.N_p(),e.qZA())}function Gh(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",8),2&f){const n=e.oxw(2);e.Q6J("renderObjects",!0)("hideEmpty",!0)("appendParentKey",!1)("data",n.expandedRow)("customCss",n.customCss)("autoReload",!1)}}function fb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-table",5),e.NdJ("setExpandedRow",function(w){return e.CHM(n),e.oxw().setExpandedRow(w)})("fetchData",function(){return e.CHM(n),e.oxw().refresh()})("updateSelection",function(w){return e.CHM(n),e.oxw().updateSelection(w)}),e._UZ(1,"cd-table-actions",6),e.YNc(2,Gh,1,6,"cd-table-key-value",7),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("data",n.silences)("columns",n.columns)("forceIdentifier",!0)("customCss",n.customCss)("sorts",n.sorts)("hasDetails",!0),e.xp6(1),e.Q6J("permission",n.permission)("selection",n.selection)("tableActions",n.tableActions),e.xp6(1),e.Q6J("ngIf",n.expandedRow)}}let pb=(()=>{class f extends Xf{constructor(n,d,w,re,Ze,Lt,Gt,On){super(On),this.authStorageService=n,this.cdDatePipe=d,this.modalService=w,this.notificationService=re,this.urlBuilder=Ze,this.actionLabels=Lt,this.succeededLabels=Gt,this.silences=[],this.selection=new si.r,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:Av.Sr.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const fr=hr=>hr.first()&&hr.first().status&&"expired"===hr.first().status.state;this.tableActions=[{permission:"create",icon:eo.P.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:hr=>!hr.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:hr=>hr.hasSingleSelection&&fr(hr),disable:hr=>!hr.hasSingleSelection||hr.first().cdExecuting||hr.first().cdExecuting&&fr(hr)||!fr(hr),icon:eo.P.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),name:this.actionLabels.RECREATE},{permission:"update",icon:eo.P.edit,canBePrimary:hr=>hr.hasSingleSelection&&!fr(hr),disable:hr=>!hr.hasSingleSelection||hr.first().cdExecuting||hr.first().cdExecuting&&!fr(hr)||fr(hr),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),name:this.actionLabels.EDIT},{permission:"delete",icon:eo.P.trash,canBePrimary:hr=>hr.hasSingleSelection&&!fr(hr),disable:hr=>!hr.hasSingleSelection||hr.first().cdExecuting||fr(hr),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:"ID",prop:"id",flexGrow:3},{name:"Created by",prop:"createdBy",flexGrow:2},{name:"Started",prop:"startsAt",pipe:this.cdDatePipe},{name:"Updated",prop:"updatedAt",pipe:this.cdDatePipe},{name:"Ends",prop:"endsAt",pipe:this.cdDatePipe},{name:"Status",prop:"status.state",cellTransformation:ii.e.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(n=>{this.silences=n},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(n){this.selection=n}expireSilence(){const n=this.selection.first().id,d="Silence",w="Prometheus";this.modalRef=this.modalService.show(jo.M,{itemDescription:d,itemNames:[n],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new wv.y(re=>{this.prometheusService.expireSilence(n).subscribe(()=>{this.notificationService.show(Ho.k.success,`${this.succeededLabels.EXPIRED} ${d} ${n}`,void 0,void 0,w)},Ze=>{Ze.application=w,re.error(Ze)},()=>{re.complete(),this.refresh()})})})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(bi.N),e.Y36(na.Z),e.Y36(Zi.g),e.Y36(vl.F),e.Y36(uo.p4),e.Y36(uo.aX),e.Y36(Tf))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-silences-list"]],features:[e._Bn([{provide:vl.F,useValue:new vl.F("monitoring/silences")}]),e.qOj],decls:3,vars:2,consts:function(){let y;return y="To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],["selectionType","single",3,"data","columns","forceIdentifier","customCss","sorts","hasDetails","setExpandedRow","fetchData","updateSelection",4,"ngIf"],["type","info"],y,["section","prometheus"],["selectionType","single",3,"data","columns","forceIdentifier","customCss","sorts","hasDetails","setExpandedRow","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload",4,"ngIf"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload"]]},template:function(n,d){1&n&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,db,3,0,"cd-alert-panel",0),e.YNc(2,fb,3,10,"cd-table",1)),2&n&&(e.xp6(1),e.Q6J("ngIf",!d.isAlertmanagerConfigured),e.xp6(1),e.Q6J("ngIf",d.isAlertmanagerConfigured))},directives:[Kf,s.O5,De.G,_s.K,Ui.a,ha.K,Ft.b],styles:[""]}),f})(),xv=(()=>{class f{constructor(n){this.http=n,this.url="api/telemetry"}getReport(){return this.http.get(`${this.url}/report`)}enable(n=!0){const d={enable:n};return n&&(d.license_name="sharing-1-0"),this.http.put(`${this.url}`,d)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),zh=(()=>{class f{constructor(){this.visible=!1,this.update=new e.vpe}setVisibility(n){this.visible=n,this.update.emit(n)}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function hb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div"),e._uU(1," The plugin is already "),e.TgZ(2,"b"),e._uU(3,"enabled"),e.qZA(),e._uU(4,". Click "),e.TgZ(5,"b"),e._uU(6,"Deactivate"),e.qZA(),e._uU(7," to disable it.\xa0 "),e.TgZ(8,"button",66),e.NdJ("click",function(){return e.CHM(n),e.oxw(3).disableModule("The Telemetry module has been disabled successfully.")}),e.SDv(9,67),e.qZA(),e.qZA()}}function Rv(f,y){1&f&&(e.ynx(0),e.TgZ(1,"legend"),e.ynx(2),e.SDv(3,68),e.BQk(),e.TgZ(4,"cd-helper"),e.SDv(5,69),e.qZA(),e.qZA(),e.TgZ(6,"div",15),e.TgZ(7,"label",70),e.SDv(8,71),e.qZA(),e.TgZ(9,"div",24),e._UZ(10,"input",72),e.qZA(),e.qZA(),e.TgZ(11,"div",15),e.TgZ(12,"label",73),e.SDv(13,74),e.qZA(),e.TgZ(14,"div",24),e._UZ(15,"input",75),e.qZA(),e.qZA(),e.TgZ(16,"div",15),e.TgZ(17,"label",76),e.SDv(18,77),e.qZA(),e.TgZ(19,"div",24),e._UZ(20,"input",78),e.qZA(),e.qZA(),e.BQk())}function _b(f,y){1&f&&(e.TgZ(0,"span",79),e.SDv(1,80),e.qZA())}function gb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",4,5),e.TgZ(3,"div",6),e.TgZ(4,"div",7),e.SDv(5,8),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"p"),e.tHW(8,10),e._UZ(9,"br"),e._UZ(10,"a",11),e._UZ(11,"br"),e._UZ(12,"br"),e._UZ(13,"b"),e.N_p(),e.qZA(),e.YNc(14,hb,10,0,"div",12),e.TgZ(15,"legend"),e.SDv(16,13),e.qZA(),e.TgZ(17,"p"),e.SDv(18,14),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"label",16),e.ynx(21),e.SDv(22,17),e.BQk(),e.TgZ(23,"cd-helper"),e.ynx(24),e.SDv(25,18),e.BQk(),e.TgZ(26,"ul"),e.TgZ(27,"li"),e.SDv(28,19),e.qZA(),e.TgZ(29,"li"),e.SDv(30,20),e.qZA(),e.TgZ(31,"li"),e.SDv(32,21),e.qZA(),e.TgZ(33,"li"),e.SDv(34,22),e.qZA(),e.TgZ(35,"li"),e.SDv(36,23),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(37,"div",24),e.TgZ(38,"div",25),e._UZ(39,"input",26),e._UZ(40,"label",27),e.qZA(),e.qZA(),e.qZA(),e.TgZ(41,"div",15),e.TgZ(42,"label",28),e.ynx(43),e.SDv(44,29),e.BQk(),e.TgZ(45,"cd-helper"),e.ynx(46),e.SDv(47,30),e.BQk(),e.TgZ(48,"ul"),e.TgZ(49,"li"),e.SDv(50,31),e.qZA(),e.TgZ(51,"li"),e.SDv(52,32),e.qZA(),e.TgZ(53,"li"),e.SDv(54,33),e.qZA(),e.TgZ(55,"li"),e.SDv(56,34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(57,"div",24),e.TgZ(58,"div",25),e._UZ(59,"input",35),e._UZ(60,"label",36),e.qZA(),e.qZA(),e.qZA(),e.TgZ(61,"div",15),e.TgZ(62,"label",37),e.ynx(63),e.SDv(64,38),e.BQk(),e._UZ(65,"cd-helper",39),e.qZA(),e.TgZ(66,"div",24),e.TgZ(67,"div",25),e._UZ(68,"input",40),e._UZ(69,"label",41),e.qZA(),e.qZA(),e.qZA(),e.TgZ(70,"div",15),e.TgZ(71,"label",42),e.ynx(72),e.SDv(73,43),e.BQk(),e.TgZ(74,"cd-helper"),e.ynx(75),e.SDv(76,44),e.BQk(),e.TgZ(77,"ul"),e.TgZ(78,"li"),e._uU(79,"Cluster description"),e.qZA(),e.TgZ(80,"li"),e._uU(81,"Contact email address"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(82,"div",24),e.TgZ(83,"div",25),e.TgZ(84,"input",45),e.NdJ("click",function(){return e.CHM(n),e.oxw(2).toggleIdent()}),e.qZA(),e._UZ(85,"label",46),e.qZA(),e.qZA(),e.qZA(),e.TgZ(86,"div",15),e.TgZ(87,"label",47),e.ynx(88),e.SDv(89,48),e.BQk(),e.TgZ(90,"cd-helper"),e.ynx(91),e.SDv(92,49),e.BQk(),e.qZA(),e.qZA(),e.TgZ(93,"div",24),e.TgZ(94,"div",25),e._UZ(95,"input",50),e._UZ(96,"label",51),e.qZA(),e.qZA(),e.qZA(),e.YNc(97,Rv,21,0,"ng-container",12),e.TgZ(98,"legend"),e.SDv(99,52),e.qZA(),e.TgZ(100,"div",15),e.TgZ(101,"label",53),e.ynx(102),e.SDv(103,54),e.BQk(),e.TgZ(104,"cd-helper"),e.SDv(105,55),e.qZA(),e.qZA(),e.TgZ(106,"div",24),e._UZ(107,"input",56),e.YNc(108,_b,2,0,"span",57),e.qZA(),e.qZA(),e.TgZ(109,"div",15),e.TgZ(110,"label",58),e.ynx(111),e.SDv(112,59),e.BQk(),e.TgZ(113,"cd-helper"),e.TgZ(114,"p"),e.SDv(115,60),e.qZA(),e.TgZ(116,"p"),e.SDv(117,61),e.qZA(),e.qZA(),e.qZA(),e.TgZ(118,"div",24),e._UZ(119,"input",62),e.qZA(),e.qZA(),e._UZ(120,"br"),e.TgZ(121,"p"),e.tHW(122,63),e._UZ(123,"b"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(124,"div",64),e.TgZ(125,"div",65),e.TgZ(126,"button",66),e.NdJ("click",function(){return e.CHM(n),e.oxw(2).next()}),e.ynx(127),e._uU(128),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(2),d=e.oxw(2);e.xp6(1),e.Q6J("formGroup",d.configForm),e.xp6(4),e.pQV(d.step),e.QtT(5),e.xp6(8),e.pQV(d.sendToUrl)(d.sendToDeviceUrl),e.QtT(8),e.xp6(1),e.Q6J("ngIf",d.moduleEnabled),e.xp6(83),e.Q6J("ngIf",d.showContactInfo),e.xp6(11),e.Q6J("ngIf",d.configForm.showError("interval",n,"min")),e.xp6(20),e.Oqu(d.actionLabels.NEXT)}}function mb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",81,82),e.TgZ(3,"div",6),e.TgZ(4,"div",7),e.SDv(5,83),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"div",15),e.TgZ(8,"label",84),e.tHW(9,85),e._UZ(10,"cd-helper",86),e.N_p(),e.qZA(),e.TgZ(11,"div",24),e._UZ(12,"input",87),e.qZA(),e.qZA(),e.TgZ(13,"div",15),e.TgZ(14,"label",88),e.tHW(15,89),e.TgZ(16,"cd-helper",90),e._UZ(17,"em"),e.qZA(),e.N_p(),e.qZA(),e.TgZ(18,"div",24),e._UZ(19,"textarea",91),e.qZA(),e.qZA(),e.TgZ(20,"div",15),e.TgZ(21,"div",92),e.TgZ(22,"div",93),e._UZ(23,"cd-download-button",94),e._UZ(24,"cd-copy-2-clipboard-button",95),e.qZA(),e.qZA(),e.qZA(),e.TgZ(25,"div",15),e.TgZ(26,"div",92),e.TgZ(27,"div",25),e._UZ(28,"input",96),e.TgZ(29,"label",97),e.tHW(30,98),e._UZ(31,"a",99),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(32,"div",64),e.TgZ(33,"div",65),e.TgZ(34,"cd-form-button-panel",100),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw(2).onSubmit()})("backActionEvent",function(){return e.CHM(n),e.oxw(2).back()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(2);e.xp6(1),e.Q6J("formGroup",n.previewForm),e.xp6(4),e.pQV(n.step),e.QtT(5),e.xp6(18),e.Q6J("objectItem",n.report),e.xp6(11),e.Q6J("form",n.previewForm)("submitText",n.actionLabels.UPDATE)("cancelText",n.actionLabels.BACK)}}function vb(f,y){if(1&f&&(e.TgZ(0,"div",1),e.ynx(1,2),e.YNc(2,gb,129,8,"div",3),e.YNc(3,mb,35,6,"div",3),e.BQk(),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngSwitch",n.step),e.xp6(1),e.Q6J("ngSwitchCase",1),e.xp6(1),e.Q6J("ngSwitchCase",2)}}let yb=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze,Lt,Gt){super(),this.actionLabels=n,this.formBuilder=d,this.mgrModuleService=w,this.notificationService=re,this.router=Ze,this.telemetryService=Lt,this.telemetryNotificationService=Gt,this.licenseAgrmt=!1,this.options={},this.newConfig={},this.configResp={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","channel_perf","interval","proxy","contact","description","organization"],this.contactInfofields=["contact","description","organization"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){const n=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];(0,zs.D)(n).subscribe(d=>{const w=d[1];this.moduleEnabled=w.enabled,this.sendToUrl=w.url,this.sendToDeviceUrl=w.device_url,this.showContactInfo=w.channel_ident,this.options=gn().pick(d[0],this.requiredFields),this.configResp=gn().pick(w,this.requiredFields),this.createConfigForm(),this.configForm.setValue(this.configResp),this.loadingReady()},d=>{this.loadingError()})}createConfigForm(){const n={};gn().forEach(Object.values(this.options),d=>{n[d.name]=[d.default_value,this.getValidators(d)]}),this.configForm=this.formBuilder.group(n)}replacer(n,d){if(("ranges"===n||"values"===n)&&Array.isArray(d)){const w=[];for(let re=0;re<d.length;re++)w.push(JSON.stringify(d[re]));return w}return d}replacerTest(n){return JSON.stringify(n,this.replacer,2)}formatReport(){let n={};n=JSON.parse(JSON.stringify(this.report));const d=["perf_counters","stats_per_pool","stats_per_pg","io_rate","osd_perf_histograms","mempool","heap_stats","rocksdb_stats"];for(let w=0;w<d.length;w++){const re=d[w];re in n.report&&delete n.report[re]}return JSON.stringify(n,null,2)}formatReportTest(n){let d={};d=JSON.parse(JSON.stringify(n));const w=["perf_counters","stats_per_pool","stats_per_pg","io_rate","osd_perf_histograms","mempool","heap_stats","rocksdb_stats"];for(let re=0;re<w.length;re++){const Ze=w[re];Ze in d&&delete d[Ze]}return JSON.stringify(d,null,2)}createPreviewForm(){const n={report:this.formatReport(),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,Hn.kI.requiredTrue]};this.previewForm=this.formBuilder.group(n)}getValidators(n){const d=[];switch(n.type){case"int":d.push(Hn.kI.required);break;case"str":gn().isNumber(n.min)&&d.push(Hn.kI.minLength(n.min)),gn().isNumber(n.max)&&d.push(Hn.kI.maxLength(n.max))}return d}updateReportFromConfig(n={}){const d=this.report.report.channels_available,w=[];for(const re of d)n[`channel_${re}`]&&w.push(re);this.report.report.channels=w;for(const re of this.contactInfofields)this.report.report[re]=n[re]}getReport(){this.loadingStart(),this.telemetryService.getReport().subscribe(n=>{this.report=n,this.reportId=n.report.report_id,this.updateReportFromConfig(this.newConfig),this.createPreviewForm(),this.loadingReady(),this.step++},n=>{this.loadingError()})}toggleIdent(){this.showContactInfo=!this.showContactInfo}buildReport(){this.newConfig={};for(const n of Object.values(this.options)){const d=this.configForm.get(n.name);if(!d.valid)return void this.configForm.setErrors({cdSubmitButton:!0});this.newConfig[n.name]=d.value}if(!this.newConfig.channel_ident)for(const n of this.contactInfofields)this.newConfig[n]="";this.getReport()}disableModule(n=null,d=null){this.telemetryService.enable(!1).subscribe(()=>{this.telemetryNotificationService.setVisibility(!0),n&&this.notificationService.show(Ho.k.success,n),d?d():this.router.navigate([""])})}next(){this.buildReport()}back(){this.step--}getChangedConfig(){const n={};return gn().forEach(this.requiredFields,d=>{gn().isEqual(this.configResp[d],this.newConfig[d])||(n[d]=this.newConfig[d])}),n}onSubmit(){const n=this.getChangedConfig(),d=[this.telemetryService.enable(),this.mgrModuleService.updateConfig("telemetry",n)];(0,zs.D)(d).subscribe(()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(Ho.k.success,"The Telemetry module has been configured and activated successfully.")},()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(Ho.k.error,"An Error occurred while updating the Telemetry module configuration.             Please Try again"),this.previewForm.setErrors({cdSubmitButton:!0})},()=>{this.newConfig={},this.router.navigate([""])})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36($c.O),e.Y36(Mt),e.Y36(Zi.g),e.Y36(tn.F0),e.Y36(xv),e.Y36(zh))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-telemetry"]],features:[e.qOj],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls,js,ga,wl,wa,Wl,zc,Ls,yu,wf,ju,Bu,Df,xf,as,Cs,Bs,Da,sc,fu,Pc,Wc,Pl,vp,pu,Cd,Ld,Yu;return y="Step " + "\ufffd0\ufffd" + " of 2: Telemetry report configuration",n="The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing." + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + " This data is visualized on " + "\ufffd#10\ufffd" + "public dashboards" + "\ufffd/#10\ufffd" + " that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends." + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + "" + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + " The data being reported does " + "\ufffd#13\ufffd" + "not" + "\ufffd/#13\ufffd" + " contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to " + "\ufffd0\ufffd" + " and " + "\ufffd1\ufffd" + " (device report).",n=e.Zx4(n),d="Channels",w="The telemetry report is broken down into several \"channels\", each with a different type of information that can be configured below.",re="Basic",Ze="Includes basic information about the cluster:",Lt="Capacity of the cluster",Gt="Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons",On="Software version currently being used",fr="Number and types of RADOS pools and CephFS file systems",hr="Names of configuration options that have been changed from their default (but not their values)",Jr="Crash",$i="Includes information about daemon crashes:",bo="Type of daemon",_o="Version of the daemon",Yi="Operating system (OS distribution, kernel version)",Xs="Stack trace identifying where in the Ceph code the crash occurred",ls="Device",js="Includes information about device metrics like anonymized SMART metrics.",ga="Ident",wl="Includes user-provided identifying information about the cluster:",wa="Perf",Wl="Includes various performance metrics of a cluster.",zc="Advanced Settings",Ls="Interval",yu="The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours.",wf="Proxy",ju="If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080",Bu="You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080",Df="" + "\ufffd#123\ufffd" + "Note:" + "\ufffd/#123\ufffd" + " By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data.",xf="Deactivate",as="Contact Information",Cs="Submitting any contact information is completely optional and disabled by default.",Bs="Contact",Da="Description",sc="My first Ceph cluster",fu="Organization",Pc="Organization name",Wc="The entered value is too low! It must be greater or equal to 8.",Pl="Step " + "\ufffd0\ufffd" + " of 2: Telemetry report preview",vp="A randomized UUID to identify a particular cluster over the course of several telemetry reports.",pu="Report ID " + "\ufffd#10\ufffd" + "" + "\ufffd/#10\ufffd" + "",Cd="The actual telemetry data that will be submitted.",Ld="Report preview " + "\ufffd#16\ufffd" + "" + "\ufffd#17\ufffd" + "Note: Please select 'Download' to view the full report, including metrics from the perf channel." + "\ufffd/#17\ufffd" + "" + "\ufffd/#16\ufffd" + "",Yu="I agree to my telemetry data being submitted under the " + "\ufffd#31\ufffd" + "Community Data License Agreement - Sharing - Version 1.0" + "\ufffd/#31\ufffd" + "",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],[3,"ngSwitch"],[4,"ngSwitchCase"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],y,[1,"card-body"],n,["href","https://telemetry-public.ceph.com/"],[4,"ngIf"],d,w,[1,"form-group","row"],["for","channel_basic",1,"cd-col-form-label"],re,Ze,Lt,Gt,On,fr,hr,[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","channel_basic","formControlName","channel_basic",1,"custom-control-input"],["for","channel_basic",1,"custom-control-label"],["for","channel_crash",1,"cd-col-form-label"],Jr,$i,bo,_o,Yi,Xs,["type","checkbox","id","channel_crash","formControlName","channel_crash",1,"custom-control-input"],["for","channel_crash",1,"custom-control-label"],["for","channel_device",1,"cd-col-form-label"],ls,["html",js],["type","checkbox","id","channel_device","formControlName","channel_device",1,"custom-control-input"],["for","channel_device",1,"custom-control-label"],["for","channel_ident",1,"cd-col-form-label"],ga,wl,["type","checkbox","id","channel_ident","formControlName","channel_ident",1,"custom-control-input",3,"click"],["for","channel_ident",1,"custom-control-label"],["for","channel_perf",1,"cd-col-form-label"],wa,Wl,["type","checkbox","id","channel_perf","formControlName","channel_perf",1,"custom-control-input"],["for","channel_perf",1,"custom-control-label"],zc,["for","interval",1,"cd-col-form-label"],Ls,yu,["id","interval","type","number","formControlName","interval","min","8",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","proxy",1,"cd-col-form-label"],wf,ju,Bu,["id","proxy","type","text","formControlName","proxy","placeholder","https://10.0.0.1:8080",1,"form-control"],Df,[1,"card-footer"],[1,"button-group","text-right"],["type","button",1,"btn","btn-light",3,"click"],xf,as,Cs,["for","contact",1,"cd-col-form-label"],Bs,["id","contact","type","text","formControlName","contact","placeholder","Example User <user@example.com>",1,"form-control"],["for","description",1,"cd-col-form-label"],Da,["id","description","type","text","formControlName","description","placeholder",sc,1,"form-control"],["for","organization",1,"cd-col-form-label"],fu,["id","organization","type","text","formControlName","organization","placeholder",Pc,1,"form-control"],[1,"invalid-feedback"],Wc,["name","previewForm","novalidate","",3,"formGroup"],["frm","ngForm"],Pl,["for","reportId",1,"cd-col-form-label"],pu,["html",vp],["type","text","id","reportId","formControlName","reportId","readonly","",1,"form-control"],["for","report",1,"cd-col-form-label"],Ld,["html",Cd],["id","report","formControlName","report","rows","15","readonly","",1,"form-control"],[1,"cd-col-form-offset"],["role","group",1,"btn-group"],["fileName","telemetry_report",3,"objectItem"],["source","report"],["type","checkbox","id","licenseAgrmt","name","licenseAgrmt","formControlName","licenseAgrmt",1,"custom-control-input"],["for","licenseAgrmt",1,"custom-control-label"],Yu,["href","https://cdla.io/sharing-1-0/"],[3,"form","submitText","cancelText","submitActionEvent","backActionEvent"]]},template:function(n,d){1&n&&e.YNc(0,vb,4,3,"div",0),2&n&&e.Q6J("cdFormLoading",d.loading)},directives:[vn.y,s.RF,s.n9,Hn._Y,Hn.JL,Gn.V,Hn.sg,s.O5,kn.P,yl.S,As.o,Hn.Wl,zn.b,Hn.JJ,Hn.u,Hn.wV,Hn.qQ,Hn.Fj,th,Hc.s,jr.p],styles:[""]}),f})();var Nv=o(26561);function Pv(f){const{subscriber:y,counter:n,period:d}=f;y.next(n),this.schedule({subscriber:y,counter:n+1,period:d},d)}let p1=(()=>{class f{constructor(n){this.ngZone=n,this.intervalDataSource=new Oc.X(null),this.intervalData$=this.intervalDataSource.asObservable();const d=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(d)}setRefreshInterval(n){this.intervalTime=n,sessionStorage.setItem("dashboard_interval",n.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(f=0,y=eu.P){return(!(0,Nv.k)(f)||f<0)&&(f=0),(!y||"function"!=typeof y.schedule)&&(y=eu.P),new wv.y(n=>(n.add(y.schedule(Pv,f,{subscriber:n,counter:0,period:f})),n))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(e.R0b))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function h1(f,y){if(1&f&&(e.TgZ(0,"option",8),e._uU(1),e.qZA()),2&f){const n=y.$implicit,d=e.oxw();e.Q6J("value",d.intervalList[n]),e.xp6(1),e.Oqu(n)}}let TC=(()=>{class f{constructor(n){this.refreshIntervalService=n,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(n){this.refreshIntervalService.setRefreshInterval(n)}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(p1))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-refresh-selector"]],decls:8,vars:2,consts:function(){let y;return y="Refresh",[[1,"container-fluid"],[1,"row"],[1,"col","d-flex","justify-content-end"],[1,"form-inline"],["for","refreshInterval",1,"col-form-label","my-0","mx-2"],y,["id","refreshInterval","name","refreshInterval",1,"form-control",3,"ngModel","change","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"form",3),e.TgZ(4,"label",4),e.SDv(5,5),e.qZA(),e.TgZ(6,"select",6),e.NdJ("change",function(re){return d.changeRefreshInterval(re.target.value)})("ngModelChange",function(re){return d.selectedInterval=re}),e.YNc(7,h1,2,2,"option",7),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(6),e.Q6J("ngModel",d.selectedInterval),e.xp6(1),e.Q6J("ngForOf",d.intervalKeys))},directives:[Hn._Y,Hn.JL,Hn.F,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.On,s.sg,Hn.YN,Hn.Kr],styles:[""]}),f})();var _1=o(49671);let Eb=(()=>{class f{constructor(n){this.http=n}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var Iv=o(89154),gp=o(99475);function Tb(f,y){if(1&f&&(e.TgZ(0,"div",6),e.tHW(1,7),e.ALo(2,"lowercase"),e._UZ(3,"cd-doc",8),e.ALo(4,"lowercase"),e.N_p(),e.qZA()),2&f){const n=e.oxw();e.xp6(3),e.MGl("section","dashboard-landing-page-",e.lcZ(4,4,n.groupTitle),""),e.xp6(1),e.pQV(e.lcZ(2,2,n.groupTitle)),e.QtT(1)}}const g1=function(f,y){return[f,y]},m1=["*"];let Cb=(()=>{class f{constructor(){this.icons=eo.P}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-info-group"]],inputs:{groupTitle:"groupTitle"},ngContentSelectors:m1,decls:11,vars:6,consts:function(){let y,n;return y="here",n="For an overview of " + "\ufffd0\ufffd" + " widgets click " + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + "",[[1,"row"],["triggers","",1,"info-group-title",3,"ngbPopover"],["popInfo","ngbPopover"],["type","button",1,"popover-icon","btn","btn-link","p-0",3,"click"],[3,"ngClass"],["popInfoTemplate",""],[1,"text-center"],n,["docText",y,3,"section"]]},template:function(n,d){if(1&n){const w=e.EpF();e.F$t(),e.TgZ(0,"div",0),e.TgZ(1,"div",1,2),e.TgZ(3,"span"),e._uU(4),e.qZA(),e.TgZ(5,"button",3),e.NdJ("click",function(){return e.CHM(w),e.MAs(2).toggle()}),e._UZ(6,"i",4),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",0),e.Hsn(8),e.qZA(),e.YNc(9,Tb,5,6,"ng-template",null,5,e.W1O)}if(2&n){const w=e.MAs(10);e.xp6(1),e.Q6J("ngbPopover",w),e.xp6(3),e.Oqu(d.groupTitle),e.xp6(2),e.Q6J("ngClass",e.WLB(3,g1,d.icons.infoCircle,d.icons.large))}},directives:[Br.o8,As.o,s.mk,_s.K],pipes:[s.i8],styles:[".info-group-title[_ngcontent-%COMP%]{font-size:1.75rem;margin:0 0 .5vw .5vw}.popover-icon[_ngcontent-%COMP%]:focus{box-shadow:none}"]}),f})();function v1(f,y){if(1&f&&(e.TgZ(0,"a",6),e._uU(1),e.qZA()),2&f){const n=e.oxw();e.Q6J("routerLink",n.link),e.xp6(1),e.Oqu(n.cardTitle)}}function y1(f,y){if(1&f&&e._uU(0),2&f){const n=e.oxw();e.hij(" ",n.cardTitle," ")}}const Lv=["*"];let CC=(()=>{class f{constructor(){this.cardClass=""}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-info-card"]],inputs:{cardTitle:"cardTitle",link:"link",cardClass:"cardClass",contentClass:"contentClass"},ngContentSelectors:Lv,decls:8,vars:4,consts:[[1,"card","shadow-sm",3,"ngClass"],[1,"card-body","d-flex","align-items-center","justify-content-center"],[1,"card-title","m-4"],[3,"routerLink",4,"ngIf","ngIfElse"],["noLinkTitle",""],[1,"card-text","text-center",3,"ngClass"],[3,"routerLink"]],template:function(n,d){if(1&n&&(e.F$t(),e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"h4",2),e.YNc(3,v1,2,2,"a",3),e.YNc(4,y1,1,1,"ng-template",null,4,e.W1O),e.qZA(),e.TgZ(6,"div",5),e.Hsn(7),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(5);e.Q6J("ngClass",d.cardClass),e.xp6(3),e.Q6J("ngIf",d.link)("ngIfElse",w),e.xp6(3),e.Q6J("ngClass",d.contentClass)}},directives:[s.mk,s.O5,tn.yS],styles:[".card[_ngcontent-%COMP%]{font-size:12px;border:.5px solid #dee2e6;border-radius:3px;height:100%}@media screen and (min-width: 320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px) / 1728))}}@media screen and (min-width: 2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{left:-.6rem;position:absolute;top:-.3rem}.no-center[_ngcontent-%COMP%]{left:unset;position:unset;top:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:bold}"]}),f})();var Sb=o(6823);const b1=["chartCanvas"],E1=["chartTooltip"];let Fv=(()=>{class f{constructor(n,d,w){this.dimlessBinary=n,this.dimless=d,this.cssHelper=w,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new e.vpe,this.chartConfig={chartType:"doughnut",dataset:[{label:null,borderWidth:0}],colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-green"),this.cssHelper.propertyValue("chart-color-yellow"),this.cssHelper.propertyValue("chart-color-orange"),this.cssHelper.propertyValue("chart-color-red"),this.cssHelper.propertyValue("chart-color-blue")]}],options:{cutoutPercentage:90,events:["click","mouseout","touchstart"],legend:{display:!0,position:"right",labels:{boxWidth:10,usePointStyle:!1}},plugins:{center_text:!0},tooltips:{enabled:!0,displayColors:!1,backgroundColor:this.cssHelper.propertyValue("chart-color-tooltip-background"),cornerRadius:0,bodyFontSize:14,bodyFontStyle:"600",position:"nearest",xPadding:12,yPadding:12,callbacks:{label:(re,Ze)=>{let Lt=Ze.labels[re.index];return Lt.includes("%")||(Lt=`${Lt} (${Ze.datasets[re.datasetIndex].data[re.index]}%)`),Lt}}},title:{display:!1}}},this.doughnutChartPlugins=[{id:"center_text",beforeDraw(re){const Ze=new gp.P,Lt="Helvetica Neue, Helvetica, Arial, sans-serif";Sb.defaults.global.defaultFontFamily=Lt;const Gt=re.ctx;if(!re.options.plugins.center_text||!re.data.datasets[0].label)return;Gt.save();const On=re.data.datasets[0].label.split("\n"),fr=(re.chartArea.left+re.chartArea.right)/2,hr=(re.chartArea.top+re.chartArea.bottom)/2;Gt.textAlign="center",Gt.textBaseline="middle",Gt.font=`24px ${Lt}`,Gt.fillStyle=Ze.propertyValue("chart-color-center-text"),Gt.fillText(On[0],fr,hr-10),On.length>1&&(Gt.font=`14px ${Lt}`,Gt.fillStyle=Ze.propertyValue("chart-color-center-text-description"),Gt.fillText(On[1],fr,hr+10)),Gt.restore()}}]}ngOnInit(){new Xn.h(this.chartCanvasRef,this.chartTooltipRef,(re,Ze)=>Ze+re.caretX+"px",(re,Ze)=>Ze+re.caretY-re.height-10+"px").getBody=re=>this.getChartTooltipBody(re),gn().merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.setChartSliceBorderWidth()}getChartTooltipBody(n){const d=n[0].split(": ");return this.showLabelAsTooltip?d[0]:(d[1]=this.isBytesData?this.dimlessBinary.transform(d[1]):this.dimless.transform(d[1]),d.join(": "))}setChartSliceBorderWidth(){let n=0;gn().forEach(this.chartConfig.dataset[0].data,function(d){d>0&&(n+=1)}),this.chartConfig.dataset[0].borderWidth=n>1?1:0}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Se.$),e.Y36(ft.n),e.Y36(gp.P))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-health-pie"]],viewQuery:function(n,d){if(1&n&&(e.Gf(b1,7),e.Gf(E1,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.chartCanvasRef=w.first),e.iGM(w=e.CRH())&&(d.chartTooltipRef=w.first)}},inputs:{data:"data",config:"config",isBytesData:"isBytesData",tooltipFn:"tooltipFn",showLabelAsTooltip:"showLabelAsTooltip"},outputs:{prepareFn:"prepareFn"},features:[e.TTD],decls:6,vars:6,consts:[[1,"chart-container"],["baseChart","",1,"chart-canvas",3,"datasets","chartType","options","labels","colors","plugins"],["chartCanvas",""],[1,"chartjs-tooltip"],["chartTooltip",""]],template:function(n,d){1&n&&(e.TgZ(0,"div",0),e._UZ(1,"canvas",1,2),e.TgZ(3,"div",3,4),e._UZ(5,"table"),e.qZA(),e.qZA()),2&n&&(e.xp6(1),e.Q6J("datasets",d.chartConfig.dataset)("chartType",d.chartConfig.chartType)("options",d.chartConfig.options)("labels",d.chartConfig.labels)("colors",d.chartConfig.colors)("plugins",d.doughnutChartPlugins))},directives:[Sr.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{height:100%;margin-left:auto;margin-right:auto;position:unset;width:100%}.chart-canvas[_ngcontent-%COMP%]{height:100%;margin-left:auto;margin-right:auto;max-height:100%;max-width:100%;position:unset;width:100%}']}),f})(),kv=(()=>{class f{transform(n){if(!n)return"";let d=0,w=0,re=0,Ze=0;gn().each(n.osds,fr=>{fr.in&&d++,fr.up&&w++,fr.state.includes("nearfull")&&re++,fr.state.includes("full")&&Ze++});const Lt=[{content:`${n.osds.length} ${"total"}`,class:""}];Lt.push({content:"",class:"card-text-line-break"}),Lt.push({content:`${w} ${"up"}, ${d} ${"in"}`,class:""});const Gt=n.osds.length-w,On=n.osds.length-d;if(Gt>0||On>0){Lt.push({content:"",class:"card-text-line-break"});const fr=Gt>0?`${Gt} ${"down"}`:"",Jr=On>0?`${On} ${"out"}`:"";Lt.push({content:`${fr}${Gt>0&&On>0?", ":""}${Jr}`,class:"card-text-error"})}return re>0&&Lt.push({content:"",class:"card-text-line-break"},{content:`${re} ${"near full"}`,class:"card-text-error"},{content:"",class:"card-text-line-break"}),Ze>0&&Lt.push({content:`${Ze} ${"full"}`,class:"card-text-error"}),Lt}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"osdSummary",type:f,pure:!0}),f})(),T1=(()=>{class f{transform(n){if(!n)return"";let d="",w="",re=0,Ze=0,Lt=0;gn().each(n.standbys,()=>{re+=1}),n.standbys&&!n.filesystems?(d=`${re} ${"up"}`,w="no filesystems"):0===n.filesystems.length?d="no filesystems":(gn().each(n.filesystems,_o=>{gn().each(_o.mdsmap.info,Yi=>{"up:standby-replay"===Yi.state?Lt+=1:Ze+=1})}),d=`${Ze} ${"active"}`,w=`${re+Lt} ${"standby"}`);const Gt=n.standbys.map(_o=>_o.name).join(", "),On=Gt?`${"standby daemons"}: ${Gt}`:"",fr=n.filesystems?n.filesystems.length:0,Jr=Object.values(fr>0?n.filesystems[0].mdsmap.info:{}).map(_o=>_o.name).join(", ");let $i=Jr?`${"active daemon"}: ${Jr}`:"";!Ze&&fr>0&&($i=`${Lt} ${"standbyReplay"}`);const bo=[{content:d,class:"popover-info",titleText:$i}];return w&&(bo.push({content:"",class:"card-text-line-break",titleText:""}),bo.push({content:w,class:"popover-info",titleText:On})),bo}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"mdsSummary",type:f,pure:!0}),f})();var Up=(()=>{return(f=Up||(Up={})).HEALTH_ERR="health-color-error",f.HEALTH_WARN="health-color-warning",f.HEALTH_OK="health-color-healthy",Up;var f})();let Qg=(()=>{class f{constructor(n){this.cssHelper=n}transform(n){return Object.keys(Up).includes(n)?{color:this.cssHelper.propertyValue(Up[n])}:null}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(gp.P,16))},f.\u0275pipe=e.Yjl({name:"healthColor",type:f,pure:!0}),f})(),C1=(()=>{class f{transform(n){return n?"" + n.monmap.mons.length.toString() + " (quorum " + n.quorum.join(", ") + ")":""}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"monSummary",type:f,pure:!0}),f})(),$v=(()=>{class f{transform(n){if(!n)return"";let d="n/a";const w=gn().isUndefined(n.active_name)?"":`${"active daemon"}: ${n.active_name}`;w.length>0&&(d="1");const re=n.standbys.map(On=>On.name).join(", "),Ze=re?`${"standby daemons"}: ${re}`:"",Lt=n.standbys.length,Gt=[{content:`${d} ${"active"}`,class:"popover-info",titleText:w}];return Gt.push({content:"",class:"card-text-line-break",titleText:""}),Gt.push({content:`${Lt} ${"standby"}`,class:"popover-info",titleText:Ze}),Gt}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275pipe=e.Yjl({name:"mgrSummary",type:f,pure:!0}),f})();function Mb(f,y){1&f&&e.GkF(0)}function Hv(f,y){if(1&f&&(e.TgZ(0,"li"),e.TgZ(1,"span",22),e.ALo(2,"healthColor"),e._uU(3),e.qZA(),e._uU(4),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.Q6J("ngStyle",e.lcZ(2,3,n.severity)),e.xp6(2),e.Oqu(n.type),e.xp6(1),e.hij(": ",n.summary.message," ")}}function Uv(f,y){if(1&f&&(e.YNc(0,Mb,1,0,"ng-container",20),e.TgZ(1,"ul"),e.YNc(2,Hv,5,5,"li",21),e.qZA()),2&f){e.oxw(4);const n=e.MAs(5),d=e.oxw();e.Q6J("ngTemplateOutlet",n),e.xp6(2),e.Q6J("ngForOf",d.healthData.health.checks)}}function S1(f,y){1&f&&e._UZ(0,"i",23)}function jv(f,y){if(1&f&&(e.ynx(0),e.YNc(1,Uv,3,2,"ng-template",null,17,e.W1O),e.TgZ(3,"div",18),e.ALo(4,"healthColor"),e._uU(5),e.YNc(6,S1,1,0,"i",19),e.qZA(),e.BQk()),2&f){const n=e.MAs(2),d=e.oxw(4);e.xp6(3),e.Q6J("ngStyle",e.lcZ(4,4,d.healthData.health.status))("ngbPopover",n),e.xp6(2),e.hij(" ",d.healthData.health.status," "),e.xp6(1),e.Q6J("ngIf","HEALTH_OK"!=(null==d.healthData.health?null:d.healthData.health.status))}}function Ob(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",22),e.ALo(2,"healthColor"),e._uU(3),e.qZA(),e.BQk()),2&f){const n=e.oxw(4);e.xp6(1),e.Q6J("ngStyle",e.lcZ(2,2,n.healthData.health.status)),e.xp6(2),e.hij(" ",n.healthData.health.status," ")}}function Bv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",15),e.YNc(1,jv,7,6,"ng-container",16),e.YNc(2,Ob,4,4,"ng-container",16),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("ngIf",(null==n.healthData.health||null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0),e.xp6(1),e.Q6J("ngIf",!(null!=n.healthData.health&&null!=n.healthData.health.checks&&n.healthData.health.checks.length))}}function Yv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",24),e._uU(1),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",n.healthData.hosts," total ")}}function M1(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",25),e._uU(1),e.ALo(2,"monSummary"),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,n.healthData.mon_status)," ")}}function Xg(f,y){if(1&f&&(e.TgZ(0,"span",28),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("ngClass",n.class),e.xp6(1),e.hij(" ",n.content," ")}}function O1(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",26),e.YNc(1,Xg,2,2,"span",27),e.qZA()),2&f){const n=y.ngIf;e.xp6(1),e.Q6J("ngForOf",n)}}function Zv(f,y){if(1&f&&(e.TgZ(0,"span",31),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("ngClass",n.class)("title",null!=n.titleText?n.titleText:""),e.xp6(1),e.hij(" ",n.content," ")}}function Vv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",29),e.YNc(1,Zv,2,3,"span",30),e.ALo(2,"mgrSummary"),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("ngForOf",e.lcZ(2,1,n.healthData.mgr_map))}}function Gv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",32),e._uU(1),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",n.healthData.rgw," total ")}}function zv(f,y){if(1&f&&(e.TgZ(0,"span",31),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("ngClass",n.class)("title",null!=n.titleText?n.titleText:""),e.xp6(1),e.hij(" ",n.content," ")}}function Wv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",33),e.YNc(1,zv,2,3,"span",30),e.qZA()),2&f){const n=y.ngIf;e.Q6J("contentClass",(n.length>1?"text-area-size-2":"")+" content-highlight"),e.xp6(1),e.Q6J("ngForOf",n)}}const qv=function(f){return{"card-text-error":f}};function Jv(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",34),e._uU(1),e._UZ(2,"span",35),e._uU(3),e.TgZ(4,"span",28),e._uU(5),e.qZA(),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",n.healthData.iscsi_daemons.up+n.healthData.iscsi_daemons.down," total "),e.xp6(2),e.hij(" ",n.healthData.iscsi_daemons.up," up, "),e.xp6(1),e.Q6J("ngClass",e.VKq(4,qv,n.healthData.iscsi_daemons.down>0)),e.xp6(1),e.hij("",n.healthData.iscsi_daemons.down," down")}}function SC(f,y){if(1&f&&(e.TgZ(0,"cd-info-group",6),e.YNc(1,Bv,3,2,"cd-info-card",7),e.YNc(2,Yv,2,1,"cd-info-card",8),e.YNc(3,M1,3,3,"cd-info-card",9),e.YNc(4,O1,2,1,"cd-info-card",10),e.ALo(5,"osdSummary"),e.YNc(6,Vv,3,3,"cd-info-card",11),e.YNc(7,Gv,2,1,"cd-info-card",12),e.YNc(8,Wv,2,2,"cd-info-card",13),e.ALo(9,"mdsSummary"),e.YNc(10,Jv,6,6,"cd-info-card",14),e.qZA()),2&f){const n=e.oxw().ngIf,d=e.oxw();e.xp6(1),e.Q6J("ngIf",null==d.healthData.health?null:d.healthData.health.status),e.xp6(1),e.Q6J("ngIf",null!=d.healthData.hosts),e.xp6(1),e.Q6J("ngIf",d.healthData.mon_status),e.xp6(1),e.Q6J("ngIf",e.lcZ(5,8,d.healthData.osd_map)),e.xp6(2),e.Q6J("ngIf",d.healthData.mgr_map),e.xp6(1),e.Q6J("ngIf",n.rgw&&null!=d.healthData.rgw),e.xp6(1),e.Q6J("ngIf",e.lcZ(9,10,n.cephfs&&d.healthData.fs_map)),e.xp6(2),e.Q6J("ngIf",n.iscsi&&null!=d.healthData.iscsi_daemons)}}function Ab(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-info-card",42),e.TgZ(1,"cd-health-pie",43),e.NdJ("prepareFn",function(w){return e.CHM(n),e.oxw(3).prepareRawUsage(w[0],w[1])}),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("data",n.healthData)("config",n.rawCapacityChartConfig)("isBytesData",!0)}}function wb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-info-card",44),e.TgZ(1,"cd-health-pie",45),e.NdJ("prepareFn",function(w){return e.CHM(n),e.oxw(3).prepareObjects(w[0],w[1])}),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("data",n.healthData)}}function Qv(f,y){1&f&&e.GkF(0)}function Db(f,y){if(1&f&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.AsE(" ",n.key,": ",n.value," ")}}function du(f,y){if(1&f&&(e.YNc(0,Qv,1,0,"ng-container",20),e.TgZ(1,"ul"),e.YNc(2,Db,2,2,"li",21),e.ALo(3,"keyvalue"),e.qZA()),2&f){e.oxw(3);const n=e.MAs(5),d=e.oxw();e.Q6J("ngTemplateOutlet",n),e.xp6(2),e.Q6J("ngForOf",e.lcZ(3,2,d.healthData.pg_info.statuses))}}function Xv(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-info-card",46),e.YNc(1,du,4,4,"ng-template",null,47,e.W1O),e.TgZ(3,"div",48),e.TgZ(4,"div",49),e.TgZ(5,"cd-health-pie",50),e.NdJ("prepareFn",function(w){return e.CHM(n),e.oxw(3).preparePgStatus(w[0],w[1])}),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(2),d=e.oxw(3);e.xp6(4),e.Q6J("ngbPopover",n),e.xp6(1),e.Q6J("data",d.healthData)("config",d.pgStatusChartConfig)}}function xb(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",51),e._uU(1),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",n.healthData.pools.length," ")}}function Rb(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",52),e._uU(1),e.ALo(2,"dimless"),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,n.healthData.pg_info.pgs_per_osd)," ")}}function Kv(f,y){if(1&f&&(e.TgZ(0,"cd-info-group",36),e.YNc(1,Ab,2,3,"cd-info-card",37),e.YNc(2,wb,2,1,"cd-info-card",38),e.YNc(3,Xv,6,3,"cd-info-card",39),e.YNc(4,xb,2,1,"cd-info-card",40),e.YNc(5,Rb,3,3,"cd-info-card",41),e.qZA()),2&f){const n=e.oxw(2);e.xp6(1),e.Q6J("ngIf",n.healthData.df),e.xp6(1),e.Q6J("ngIf",null!=(null==n.healthData.pg_info||null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),e.xp6(1),e.Q6J("ngIf",n.healthData.pg_info),e.xp6(1),e.Q6J("ngIf",n.healthData.pools),e.xp6(1),e.Q6J("ngIf",n.healthData.pg_info)}}function Nb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-info-card",58),e.TgZ(1,"cd-health-pie",50),e.NdJ("prepareFn",function(w){return e.CHM(n),e.oxw(3).prepareReadWriteRatio(w[0],w[1])}),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("data",n.healthData)("config",n.clientStatsConfig)}}function e0(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-info-card",59),e.TgZ(1,"cd-health-pie",50),e.NdJ("prepareFn",function(w){return e.CHM(n),e.oxw(3).prepareClientThroughput(w[0],w[1])}),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.Q6J("data",n.healthData)("config",n.clientStatsConfig)}}function t0(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",60),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,n.healthData.client_perf.recovering_bytes_per_sec)+"/s"," ")}}function Wh(f,y){if(1&f&&(e.TgZ(0,"cd-info-card",61),e._uU(1),e.qZA()),2&f){const n=e.oxw(3);e.xp6(1),e.hij(" ",n.healthData.scrub_status," ")}}function Pb(f,y){if(1&f&&(e.TgZ(0,"cd-info-group",53),e.YNc(1,Nb,2,2,"cd-info-card",54),e.YNc(2,e0,2,2,"cd-info-card",55),e.YNc(3,t0,3,3,"cd-info-card",56),e.YNc(4,Wh,2,1,"cd-info-card",57),e.qZA()),2&f){const n=e.oxw(2);e.xp6(1),e.Q6J("ngIf",n.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",n.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",n.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",n.healthData.scrub_status)}}const Ib=function(f){return[f]};function n0(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"p",62),e.tHW(2,63),e._UZ(3,"i",28),e._UZ(4,"a",64),e.N_p(),e.qZA(),e.BQk()),2&f){const n=e.oxw(3);e.xp6(3),e.Q6J("ngClass",e.VKq(1,Ib,n.icons.infoCircle))}}function Lb(f,y){if(1&f&&e.YNc(0,n0,5,3,"ng-container",16),2&f){const n=e.oxw(2);e.Q6J("ngIf",n.permissions.log.read)}}function r0(f,y){if(1&f&&(e.TgZ(0,"div",1),e.YNc(1,SC,11,12,"cd-info-group",2),e.YNc(2,Kv,6,5,"cd-info-group",3),e.YNc(3,Pb,5,4,"cd-info-group",4),e.YNc(4,Lb,1,1,"ng-template",null,5,e.W1O),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngIf",(null==n.healthData.health?null:n.healthData.health.status)||n.healthData.mon_status||n.healthData.osd_map||n.healthData.mgr_map||null!=n.healthData.hosts||null!=n.healthData.rgw||n.healthData.fs_map||null!=n.healthData.iscsi_daemons),e.xp6(1),e.Q6J("ngIf",n.healthData.pools||n.healthData.df||n.healthData.pg_info),e.xp6(1),e.Q6J("ngIf",n.healthData.client_perf||n.healthData.scrub_status)}}let MC=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt,On,fr){this.healthService=n,this.osdService=d,this.authStorageService=w,this.pgCategoryService=re,this.featureToggles=Ze,this.refreshIntervalService=Lt,this.dimlessBinary=Gt,this.dimless=On,this.cssHelper=fr,this.osdSettings=new Tg,this.interval=new Vl.w,this.icons=eo.P,this.clientStatsConfig={colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-cyan"),this.cssHelper.propertyValue("chart-color-purple")]}]},this.rawCapacityChartConfig={colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-blue"),this.cssHelper.propertyValue("chart-color-gray")]}]},this.pgStatusChartConfig={options:{events:[""]}},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()}),this.osdService.getOsdSettings().pipe((0,_c.q)(1)).subscribe(n=>{this.osdSettings=n})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(n=>{this.healthData=n})}prepareReadWriteRatio(n){const d=[],w=[],re=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;d.push(`${"Reads"}: ${this.dimless.transform(this.healthData.client_perf.read_op_per_sec)} ${"/s"}`),w.push(this.calcPercentage(this.healthData.client_perf.read_op_per_sec,re)),d.push(`${"Writes"}: ${this.dimless.transform(this.healthData.client_perf.write_op_per_sec)} ${"/s"}`),w.push(this.calcPercentage(this.healthData.client_perf.write_op_per_sec,re)),n.labels=d,n.dataset[0].data=w,n.dataset[0].label=`${this.dimless.transform(re)}\n${"IOPS"}`}prepareClientThroughput(n){const d=[],w=[],re=this.healthData.client_perf.read_bytes_sec+this.healthData.client_perf.write_bytes_sec;d.push(`${"Reads"}: ${this.dimlessBinary.transform(this.healthData.client_perf.read_bytes_sec)}${"/s"}`),w.push(this.calcPercentage(this.healthData.client_perf.read_bytes_sec,re)),d.push(`${"Writes"}: ${this.dimlessBinary.transform(this.healthData.client_perf.write_bytes_sec)}${"/s"}`),w.push(this.calcPercentage(this.healthData.client_perf.write_bytes_sec,re)),n.labels=d,n.dataset[0].data=w,n.dataset[0].label=`${this.dimlessBinary.transform(re).replace(" ","\n")}${"/s"}`}prepareRawUsage(n,d){const w=this.calcPercentage(d.df.stats.total_bytes-d.df.stats.total_used_raw_bytes,d.df.stats.total_bytes),re=this.calcPercentage(d.df.stats.total_used_raw_bytes,d.df.stats.total_bytes);this.color=re/100>=this.osdSettings.nearfull_ratio?"chart-color-red":re/100>=this.osdSettings.full_ratio?"chart-color-yellow":"chart-color-blue",this.rawCapacityChartConfig.colors[0].backgroundColor[0]=this.cssHelper.propertyValue(this.color),n.dataset[0].data=[re,w],n.labels=[`${"Used"}: ${this.dimlessBinary.transform(d.df.stats.total_used_raw_bytes)}`,`${"Avail."}: ${this.dimlessBinary.transform(d.df.stats.total_bytes-d.df.stats.total_used_raw_bytes)}`],n.dataset[0].label=`${re}%\nof ${this.dimlessBinary.transform(d.df.stats.total_bytes)}`}preparePgStatus(n,d){const w={};let re=0;gn().forEach(d.pg_info.statuses,(Ze,Lt)=>{const Gt=this.pgCategoryService.getTypeByStates(Lt);gn().isUndefined(w[Gt])&&(w[Gt]=0),w[Gt]+=Ze,re+=Ze});for(const Ze of this.pgCategoryService.getAllTypes())gn().isUndefined(w[Ze])&&(w[Ze]=0);n.dataset[0].data=this.pgCategoryService.getAllTypes().map(Ze=>this.calcPercentage(w[Ze],re)),n.labels=[`${"Clean"}: ${this.dimless.transform(w.clean)}`,`${"Working"}: ${this.dimless.transform(w.working)}`,`${"Warning"}: ${this.dimless.transform(w.warning)}`,`${"Unknown"}: ${this.dimless.transform(w.unknown)}`],n.dataset[0].label=`${re}\n${"PGs"}`}prepareObjects(n,d){const w=d.pg_info.object_stats.num_object_copies,Ze=this.calcPercentage(w-d.pg_info.object_stats.num_objects_misplaced-d.pg_info.object_stats.num_objects_degraded-d.pg_info.object_stats.num_objects_unfound,w),Lt=this.calcPercentage(d.pg_info.object_stats.num_objects_misplaced,w),Gt=this.calcPercentage(d.pg_info.object_stats.num_objects_degraded,w),On=this.calcPercentage(d.pg_info.object_stats.num_objects_unfound,w);n.labels=[`${"Healthy"}: ${Ze}%`,`${"Misplaced"}: ${Lt}%`,`${"Degraded"}: ${Gt}%`,`${"Unfound"}: ${On}%`],n.dataset[0].data=[Ze,Lt,Gt,On],n.dataset[0].label=`${this.dimless.transform(d.pg_info.object_stats.num_objects)}\n${"objects"}`}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(n,d){return gn().isNumber(n)&&gn().isNumber(d)&&0!==d?Math.ceil(n/d*100*100)/100:0}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Eb),e.Y36(lc),e.Y36(hi.j),e.Y36(_1.j),e.Y36(Iv.l),e.Y36(p1),e.Y36(Se.$),e.Y36(ft.n),e.Y36(gp.P))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-health"]],decls:2,vars:3,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls,js,ga,wl;return y="Status",n="Capacity",d="Performance",w="Cluster Status",re="Hosts",Ze="Monitors",Lt="OSDs",Gt="Managers",On="Object Gateways",fr="Metadata Servers",hr="iSCSI Gateways",Jr="Raw Capacity",$i="Objects",bo="PG Status",_o="Pools",Yi="PGs per OSD",Xs="Client Read/Write",ls="Client Throughput",js="Recovery Throughput",ga="Scrubbing",wl="" + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + " See " + "\ufffd#4\ufffd" + "Logs" + "\ufffd/#4\ufffd" + " for more details.",[["class","container-fluid",4,"ngIf"],[1,"container-fluid"],["groupTitle",y,4,"ngIf"],["groupTitle",n,4,"ngIf"],["groupTitle",d,4,"ngIf"],["logsLink",""],["groupTitle",y],["cardTitle",w,"class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",re,"link","/hosts","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Ze,"link","/monitor","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Lt,"link","/osd","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Gt,"class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",On,"link","/rgw/daemon","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",fr,"class","cd-status-card",3,"contentClass",4,"ngIf"],["cardTitle",hr,"link","/block/iscsi","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",w,"contentClass","content-highlight",1,"cd-status-card"],[4,"ngIf"],["healthChecks",""],["popoverClass","info-card-popover-cluster-status",1,"info-card-content-clickable",3,"ngStyle","ngbPopover"],["class","fa fa-exclamation-triangle",4,"ngIf"],[4,"ngTemplateOutlet"],[4,"ngFor","ngForOf"],[3,"ngStyle"],[1,"fa","fa-exclamation-triangle"],["cardTitle",re,"link","/hosts","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",Ze,"link","/monitor","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",Lt,"link","/osd","contentClass","content-highlight",1,"cd-status-card"],[3,"ngClass",4,"ngFor","ngForOf"],[3,"ngClass"],["cardTitle",Gt,"contentClass","content-highlight",1,"cd-status-card"],[3,"ngClass","title",4,"ngFor","ngForOf"],[3,"ngClass","title"],["cardTitle",On,"link","/rgw/daemon","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",fr,1,"cd-status-card",3,"contentClass"],["cardTitle",hr,"link","/block/iscsi","contentClass","content-highlight",1,"cd-status-card"],[1,"card-text-line-break"],["groupTitle",n],["cardTitle",Jr,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",$i,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",bo,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",_o,"link","/pool","class","cd-capacity-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Yi,"class","cd-capacity-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Jr,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],[3,"data","config","isBytesData","prepareFn"],["cardTitle",$i,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],[3,"data","prepareFn"],["cardTitle",bo,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],["pgStatus",""],[1,"pg-status-popover-wrapper"],[3,"ngbPopover"],[3,"data","config","prepareFn"],["cardTitle",_o,"link","/pool","contentClass","content-highlight",1,"cd-capacity-card"],["cardTitle",Yi,"contentClass","content-highlight",1,"cd-capacity-card"],["groupTitle",d],["cardTitle",Xs,"class","cd-performance-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",ls,"class","cd-performance-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",js,"class","cd-performance-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",ga,"class","cd-performance-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Xs,"contentClass","content-chart",1,"cd-performance-card","cd-chart-card"],["cardTitle",ls,"contentClass","content-chart",1,"cd-performance-card","cd-chart-card"],["cardTitle",js,"contentClass","content-highlight",1,"cd-performance-card"],["cardTitle",ga,"contentClass","content-highlight",1,"cd-performance-card"],[1,"logs-link"],wl,["routerLink","/logs"]]},template:function(n,d){1&n&&(e.YNc(0,r0,6,3,"div",0),e.ALo(1,"async")),2&n&&e.Q6J("ngIf",e.lcZ(1,1,d.healthData&&d.enabledFeature$))},directives:[s.O5,Cb,CC,s.PC,Br.o8,s.tP,s.sg,s.mk,Fv,tn.yS],pipes:[s.Ov,kv,T1,Qg,C1,$v,s.Nd,ft.n,Se.$],styles:['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  cd-health .pg-status-popover-wrapper{position:relative}  cd-health .pg-status-popover-wrapper .popover{max-height:20vh;max-width:unset!important;min-width:unset!important;position:absolute;width:116%}  cd-health .pg-status-popover-wrapper .popover .popover-body{font-size:1rem;max-height:19vh;max-width:100%}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{color:#c9190b;display:inline}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']}),f})();function A1(f,y){1&f&&e._UZ(0,"cd-health")}function w1(f,y){}function ep(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,A1,1,0,"ng-template",6),e.qZA(),e.TgZ(7,"li",3),e.TgZ(8,"a",4),e.SDv(9,7),e.qZA(),e.YNc(10,w1,0,0,"ng-template",6),e.qZA(),e.qZA(),e._UZ(11,"div",8),e.BQk()),2&f){const n=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",n)}}function Fb(f,y){1&f&&e._UZ(0,"cd-health")}let i0=(()=>{class f{constructor(){this.hasGrafana=!1}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-dashboard"]],decls:4,vars:2,consts:function(){let y,n;return y="Health",n="Statistics",[[4,"ngIf"],["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],y,["ngbNavContent",""],n,[3,"ngbNavOutlet"]]},template:function(n,d){1&n&&(e.TgZ(0,"div"),e._UZ(1,"cd-refresh-selector"),e.YNc(2,ep,12,1,"ng-container",0),e.YNc(3,Fb,1,0,"cd-health",0),e.qZA()),2&n&&(e.xp6(2),e.Q6J("ngIf",d.hasGrafana),e.xp6(1),e.Q6J("ngIf",!d.hasGrafana))},directives:[TC,s.O5,Br.Pz,Br.nv,Br.Vx,Br.uN,Br.tO,MC],styles:["div[_ngcontent-%COMP%]{padding-top:20px}"]}),f})();var sd=o(5304),Sf=o(95152),Mf=o(33394),D1=o(40205);let Kg=(()=>{class f extends Us.S{constructor(n){super(),this.http=n,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:"Allows all operations"},{value:"RO",help:"Allows only operations that do not modify the server"},{value:"NONE",help:"Allows no access at all"}],this.nfsFsal=[{value:"CEPH",descr:"CephFS",disabled:!1},{value:"RGW",descr:"Object Gateway",disabled:!1}],this.nfsSquash=["no_root_squash","root_id_squash","root_squash","all_squash"]}list(){return this.http.get(`${this.apiPath}/export`)}get(n,d){return this.http.get(`${this.apiPath}/export/${n}/${d}`)}create(n){return this.http.post(`${this.apiPath}/export`,n,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}update(n,d,w){return this.http.put(`${this.apiPath}/export/${n}/${d}`,w,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}delete(n,d){return this.http.delete(`${this.apiPath}/export/${n}/${d}`,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}listClusters(){return this.http.get(`${this.apiPath}/cluster`,{headers:{Accept:this.getVersionHeaderValue(0,1)}})}lsDir(n,d){return n?this.http.get(`${this.uiApiPath}/lsdir/${n}?root_dir=${d}`):(0,D1._)("Please specify a filesystem volume.")}fsals(){return this.http.get(`${this.uiApiPath}/fsals`)}filesystems(){return this.http.get(`${this.uiApiPath}/cephfs/filesystems`)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var kb=o(36569);const $b=["squashHelper"];function Hb(f,y){1&f&&(e.TgZ(0,"span",14),e.TgZ(1,"span",15),e.SDv(2,16),e.qZA(),e.qZA())}function Ub(f,y){1&f&&(e.TgZ(0,"span"),e.SDv(1,37),e.qZA())}function x1(f,y){1&f&&(e.TgZ(0,"span"),e.ynx(1),e.SDv(2,38),e.BQk(),e._UZ(3,"br"),e.ynx(4),e.SDv(5,39),e.BQk(),e._uU(6," 192.168.0.10, 192.168.1.0/8 "),e.qZA())}function q_(f,y){if(1&f&&(e.TgZ(0,"option",40),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.value),e.xp6(1),e.Oqu(n.value)}}function jb(f,y){if(1&f&&(e.TgZ(0,"span",15),e._uU(1),e.qZA()),2&f){const n=e.oxw().index,d=e.oxw();e.xp6(1),e.hij(" ",d.getAccessTypeHelp(n)," ")}}function o0(f,y){1&f&&e.GkF(0)}function Bb(f,y){if(1&f&&(e.TgZ(0,"option",40),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.Oqu(n)}}function s0(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"div",17),e.TgZ(2,"div",18),e._uU(3),e.ALo(4,"ordinal"),e.TgZ(5,"span",19),e.NdJ("click",function(){const re=e.CHM(n).index;return e.oxw().removeClient(re)}),e._uU(6,"\xd7"),e.qZA(),e.qZA(),e.TgZ(7,"div",20),e.TgZ(8,"div",0),e.TgZ(9,"label",21),e.SDv(10,22),e.qZA(),e.TgZ(11,"div",23),e._UZ(12,"input",24),e.TgZ(13,"span",25),e.YNc(14,Ub,2,0,"span",26),e.YNc(15,x1,7,0,"span",26),e.qZA(),e.qZA(),e.qZA(),e.TgZ(16,"div",0),e.TgZ(17,"label",27),e.SDv(18,28),e.qZA(),e.TgZ(19,"div",23),e.TgZ(20,"select",29),e.TgZ(21,"option",30),e._uU(22),e.qZA(),e.YNc(23,q_,2,2,"option",31),e.qZA(),e.YNc(24,jb,2,1,"span",32),e.qZA(),e.qZA(),e.TgZ(25,"div",0),e.TgZ(26,"label",33),e.TgZ(27,"span"),e.SDv(28,34),e.qZA(),e.YNc(29,o0,1,0,"ng-container",35),e.qZA(),e.TgZ(30,"div",23),e.TgZ(31,"select",36),e.TgZ(32,"option",30),e._uU(33),e.qZA(),e.YNc(34,Bb,2,2,"option",31),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=y.$implicit,d=y.index,w=e.oxw(),re=e.MAs(4);e.xp6(1),e.Q6J("formGroup",n),e.xp6(2),e.hij(" ",e.lcZ(4,10,d+1)," "),e.xp6(11),e.Q6J("ngIf",w.showError(d,"addresses",re,"required")),e.xp6(1),e.Q6J("ngIf",w.showError(d,"addresses",re,"pattern")),e.xp6(7),e.Oqu(w.getNoAccessTypeDescr()),e.xp6(1),e.Q6J("ngForOf",w.nfsAccessType),e.xp6(1),e.Q6J("ngIf",w.getValue(d,"access_type")),e.xp6(5),e.Q6J("ngTemplateOutlet",w.squashHelperTpl),e.xp6(4),e.Oqu(w.getNoSquashDescr()),e.xp6(1),e.Q6J("ngForOf",w.nfsSquash)}}const a0=function(f){return[f]};let em=(()=>{class f{constructor(n){this.nfsService=n,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=eo.P}ngOnInit(){gn().forEach(this.clients,n=>{this.addClient().patchValue(n)}),this.clientsFormArray=this.form.get("clients")}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${"(inherited from global config)"}`:"-- Select the access type --"}getAccessTypeHelp(n){const d=this.nfsAccessType.find(w=>this.getValue(n,"access_type")===w.value);return gn().isObjectLike(d)?d.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${"inherited from global config"})`:"-- Select what kind of user id squashing is performed --"}addClient(){this.clientsFormArray=this.form.get("clients");const n="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",w=new xt.d({addresses:new Hn.NI("",{validators:[Hn.kI.required,Hn.kI.pattern(`${n}([ ,]{1,2}${n})*`)]}),access_type:new Hn.NI(""),squash:new Hn.NI("")});return this.clientsFormArray.push(w),w}removeClient(n){this.clientsFormArray=this.form.get("clients"),this.clientsFormArray.removeAt(n)}showError(n,d,w,re){return this.form.controls.clients.controls[n].showError(d,w,re)}getValue(n,d){return this.clientsFormArray=this.form.get("clients"),this.clientsFormArray.at(n).getValue(d)}trackByFn(n){return n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Kg))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-nfs-form-client"]],contentQueries:function(n,d,w){if(1&n&&e.Suo(w,$b,7),2&n){let re;e.iGM(re=e.CRH())&&(d.squashHelperTpl=re.first)}},inputs:{form:"form",clients:"clients"},decls:15,vars:7,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On;return y="Clients",n="Add clients",d="Any client can access",w="Addresses",re="Access Type",Ze="Squash",Lt="This field is required.",Gt="Must contain one or more comma-separated values",On="For example:",[[1,"form-group","row"],[1,"cd-col-form-label"],y,[1,"cd-col-form-input",3,"formGroup"],["formDir","ngForm"],["class","no-border text-muted",4,"ngIf"],["formArrayName","clients"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"row"],[1,"col-12"],[1,"float-right"],["name","add_client",1,"btn","btn-light",3,"click"],[3,"ngClass"],n,[1,"no-border","text-muted"],[1,"form-text","text-muted"],d,[1,"card",3,"formGroup"],[1,"card-header"],["name","remove_client","ngbTooltip","Remove",1,"float-right","clickable",3,"click"],[1,"card-body"],["for","addresses",1,"cd-col-form-label","required"],w,[1,"cd-col-form-input"],["type","text","name","addresses","id","addresses","formControlName","addresses","placeholder","192.168.0.10, 192.168.1.0/8",1,"form-control"],[1,"invalid-feedback"],[4,"ngIf"],["for","access_type",1,"cd-col-form-label"],re,["name","access_type","id","access_type","formControlName","access_type",1,"form-control"],["value",""],[3,"value",4,"ngFor","ngForOf"],["class","form-text text-muted",4,"ngIf"],["for","squash",1,"cd-col-form-label"],Ze,[4,"ngTemplateOutlet"],["name","squash","id","squash","formControlName","squash",1,"form-control"],Lt,Gt,On,[3,"value"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e.SDv(2,2),e.qZA(),e.TgZ(3,"div",3,4),e.YNc(5,Hb,3,0,"span",5),e.ynx(6,6),e.YNc(7,s0,35,12,"div",7),e.BQk(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"div",10),e.TgZ(11,"button",11),e.NdJ("click",function(){return d.addClient()}),e._UZ(12,"i",12),e.ynx(13),e.SDv(14,13),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(3),e.Q6J("formGroup",d.form),e.xp6(2),e.Q6J("ngIf",0===d.form.get("clients").value.length),e.xp6(2),e.Q6J("ngForOf",d.clientsFormArray.controls)("ngForTrackBy",d.trackByFn),e.xp6(5),e.Q6J("ngClass",e.VKq(5,a0,d.icons.add)))},directives:[kn.P,Hn.JL,Hn.sg,Gn.V,s.O5,Hn.CE,s.sg,As.o,s.mk,Br._L,Hn.Fj,zn.b,Hn.JJ,Hn.u,Hn.EJ,Hn.YN,Hn.Kr,s.tP],pipes:[kb.f],styles:[""]}),f})();const Yb=["nfsClients"];function l0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,53),e.qZA())}function c0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,54),e.qZA())}function R1(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,55),e.qZA())}function tm(f,y){if(1&f&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.cluster_id),e.xp6(1),e.Oqu(n.cluster_id)}}const N1=function(){return["create"]},P1=function(f){return{modal:f}},u0=function(f){return{outlets:f}},d0=function(f){return["/services",f]};function f0(f,y){1&f&&(e.TgZ(0,"span",57),e.tHW(1,58),e._UZ(2,"a",59),e.N_p(),e.qZA()),2&f&&(e.xp6(2),e.Q6J("routerLink",e.VKq(6,d0,e.VKq(4,u0,e.VKq(2,P1,e.DdM(1,N1))))))}function p0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,60),e.qZA())}function h0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,61),e.qZA())}function _0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,62),e.qZA())}function g0(f,y){if(1&f&&(e.TgZ(0,"option",63),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.value)("disabled",n.disabled),e.xp6(1),e.Oqu(n.descr)}}function m0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,64),e.qZA())}function Zb(f,y){if(1&f&&(e.TgZ(0,"span",57),e.SDv(1,65),e.qZA()),2&f){const n=e.oxw(2);e.xp6(1),e.pQV(n.fsalAvailabilityError),e.QtT(1)}}function v0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,69),e.qZA())}function Vb(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,70),e.qZA())}function Gb(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,71),e.qZA())}function zb(f,y){if(1&f&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.name),e.xp6(1),e.Oqu(n.name)}}function Wb(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,72),e.qZA())}function qb(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",66),e.SDv(2,67),e.qZA(),e.TgZ(3,"div",13),e.TgZ(4,"select",68),e.NdJ("change",function(){return e.CHM(n),e.oxw(2).pathChangeHandler()}),e.YNc(5,v0,2,0,"option",15),e.YNc(6,Vb,2,0,"option",15),e.YNc(7,Gb,2,0,"option",15),e.YNc(8,zb,2,2,"option",16),e.qZA(),e.YNc(9,Wb,2,0,"span",17),e.qZA(),e.qZA()}if(2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(5),e.Q6J("ngIf",null===d.allFsNames),e.xp6(1),e.Q6J("ngIf",null!==d.allFsNames&&0===d.allFsNames.length),e.xp6(1),e.Q6J("ngIf",null!==d.allFsNames&&d.allFsNames.length>0),e.xp6(1),e.Q6J("ngForOf",d.allFsNames),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("fs_name",n,"required"))}}function Jb(f,y){1&f&&e._UZ(0,"input",79)}function Qb(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,80),e.qZA())}const Xb=function(f){return{required:f}};function Kb(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",73),e.SDv(2,74),e.qZA(),e.TgZ(3,"div",13),e.TgZ(4,"div",26),e._UZ(5,"input",75),e.TgZ(6,"label",76),e.SDv(7,77),e.qZA(),e.qZA(),e._UZ(8,"br"),e.YNc(9,Jb,1,0,"input",78),e.YNc(10,Qb,2,0,"span",17),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(3,Xb,d.nfsForm.getValue("security_label"))),e.xp6(8),e.Q6J("ngIf",d.nfsForm.getValue("security_label")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("sec_label_xattr",n,"required"))}}function eE(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,85),e.qZA())}function tE(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,86),e.qZA())}function nE(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,87),e.qZA())}function rE(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",81),e.TgZ(2,"span",10),e.SDv(3,82),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"p"),e.SDv(6,83),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",13),e.TgZ(8,"input",84),e.NdJ("selectItem",function(){return e.CHM(n),e.oxw(2).pathChangeHandler()})("blur",function(){return e.CHM(n),e.oxw(2).pathChangeHandler()}),e.qZA(),e.YNc(9,eE,2,0,"span",17),e.YNc(10,tE,2,0,"span",17),e.YNc(11,nE,2,0,"span",17),e.qZA(),e.qZA()}if(2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(8),e.Q6J("ngbTypeahead",d.pathDataSource),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("path",n,"required")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("path",n,"pattern")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("path",n,"pathNameNotAllowed"))}}function iE(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,90),e.qZA())}function y0(f,y){1&f&&(e.TgZ(0,"span",57),e.tHW(1,91),e._UZ(2,"a",92),e.N_p(),e.qZA())}function b0(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",81),e.TgZ(2,"span",10),e.SDv(3,88),e.qZA(),e.qZA(),e.TgZ(4,"div",13),e._UZ(5,"input",89),e.YNc(6,iE,2,0,"span",17),e.YNc(7,y0,3,0,"span",17),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(5),e.Q6J("ngbTypeahead",d.bucketDataSource),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("path",n,"required")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("path",n,"bucketNameNotAllowed"))}}function E0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,93),e.qZA())}function T0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,99),e.qZA())}function C0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,100),e.qZA())}function S0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,101),e.qZA())}function M0(f,y){if(1&f&&(e.TgZ(0,"div",8),e.TgZ(1,"label",94),e.TgZ(2,"span",10),e.SDv(3,95),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"p"),e.tHW(6,96),e._UZ(7,"strong"),e._UZ(8,"strong"),e.N_p(),e.qZA(),e.TgZ(9,"p"),e.SDv(10,97),e.qZA(),e.qZA(),e.qZA(),e.TgZ(11,"div",13),e._UZ(12,"input",98),e.YNc(13,T0,2,0,"span",17),e.YNc(14,C0,2,0,"span",17),e.YNc(15,S0,2,0,"span",17),e.qZA(),e.qZA()),2&f){e.oxw();const n=e.MAs(2),d=e.oxw();e.xp6(13),e.Q6J("ngIf",d.nfsForm.showError("pseudo",n,"required")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("pseudo",n,"pseudoAlreadyExists")),e.xp6(1),e.Q6J("ngIf",d.nfsForm.showError("pseudo",n,"pattern"))}}function O0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,102),e.qZA())}function A0(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,103),e.qZA())}function I1(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,104),e.qZA())}function L1(f,y){if(1&f&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n.value),e.xp6(1),e.Oqu(n.value)}}function dh(f,y){if(1&f&&(e.TgZ(0,"span",105),e._uU(1),e.qZA()),2&f){const n=e.oxw(2);e.xp6(1),e.hij(" ",n.getAccessTypeHelp(n.nfsForm.getValue("access_type"))," ")}}function oE(f,y){1&f&&(e.TgZ(0,"span",106),e.tHW(1,107),e._UZ(2,"cd-doc",108),e.N_p(),e.qZA())}function sE(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,109),e.qZA())}function qh(f,y){1&f&&e.GkF(0)}function OC(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,110),e.qZA())}function F1(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,111),e.qZA())}function AC(f,y){1&f&&(e.TgZ(0,"option",52),e.SDv(1,112),e.qZA())}function w0(f,y){if(1&f&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.Oqu(n)}}function D0(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,113),e.qZA())}function wC(f,y){1&f&&(e.TgZ(0,"span",57),e.SDv(1,114),e.qZA())}function Qs(f,y){1&f&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"ul",115),e.TgZ(2,"li"),e.TgZ(3,"span",116),e._uU(4,"no_root_squash: "),e.qZA(),e.TgZ(5,"span"),e.SDv(6,117),e.qZA(),e.qZA(),e.TgZ(7,"li"),e.TgZ(8,"span",116),e._uU(9,"root_id_squash: "),e.qZA(),e.TgZ(10,"span"),e.SDv(11,118),e.qZA(),e.qZA(),e.TgZ(12,"li"),e.TgZ(13,"span",116),e._uU(14,"root_squash: "),e.qZA(),e.TgZ(15,"span"),e.SDv(16,119),e.qZA(),e.qZA(),e.TgZ(17,"li"),e.TgZ(18,"span",116),e._uU(19,"all_squash: "),e.qZA(),e.TgZ(20,"span"),e.SDv(21,120),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function aE(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.TgZ(11,"span",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"cd-helper"),e.TgZ(14,"p"),e.SDv(15,12),e.qZA(),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"select",14),e.YNc(18,l0,2,0,"option",15),e.YNc(19,c0,2,0,"option",15),e.YNc(20,R1,2,0,"option",15),e.YNc(21,tm,2,2,"option",16),e.qZA(),e.YNc(22,f0,3,8,"span",17),e.qZA(),e.qZA(),e.TgZ(23,"div",18),e.TgZ(24,"div",8),e.TgZ(25,"label",19),e.SDv(26,20),e.qZA(),e.TgZ(27,"div",13),e.TgZ(28,"select",21),e.NdJ("change",function(){return e.CHM(n),e.oxw().fsalChangeHandler()}),e.YNc(29,p0,2,0,"option",15),e.YNc(30,h0,2,0,"option",15),e.YNc(31,_0,2,0,"option",15),e.YNc(32,g0,2,3,"option",22),e.qZA(),e.YNc(33,m0,2,0,"span",17),e.YNc(34,Zb,2,1,"span",17),e.qZA(),e.qZA(),e.YNc(35,qb,10,5,"div",23),e.qZA(),e.YNc(36,Kb,11,5,"div",23),e.YNc(37,rE,12,4,"div",23),e.YNc(38,b0,8,3,"div",23),e.TgZ(39,"div",8),e.TgZ(40,"label",24),e.SDv(41,25),e.qZA(),e.TgZ(42,"div",13),e.TgZ(43,"div",26),e._UZ(44,"input",27),e.TgZ(45,"label",28),e.SDv(46,29),e.qZA(),e.qZA(),e.YNc(47,E0,2,0,"span",17),e.qZA(),e.qZA(),e.YNc(48,M0,16,3,"div",23),e.TgZ(49,"div",8),e.TgZ(50,"label",30),e.SDv(51,31),e.qZA(),e.TgZ(52,"div",13),e.TgZ(53,"select",32),e.NdJ("change",function(){return e.CHM(n),e.oxw().accessTypeChangeHandler()}),e.YNc(54,O0,2,0,"option",15),e.YNc(55,A0,2,0,"option",15),e.YNc(56,I1,2,0,"option",15),e.YNc(57,L1,2,2,"option",16),e.qZA(),e.YNc(58,dh,2,1,"span",33),e.YNc(59,oE,3,0,"span",34),e.YNc(60,sE,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(61,"div",8),e.TgZ(62,"label",35),e.TgZ(63,"span",10),e.SDv(64,36),e.qZA(),e.YNc(65,qh,1,0,"ng-container",37),e.qZA(),e.TgZ(66,"div",13),e.TgZ(67,"select",38),e.YNc(68,OC,2,0,"option",15),e.YNc(69,F1,2,0,"option",15),e.YNc(70,AC,2,0,"option",15),e.YNc(71,w0,2,2,"option",16),e.qZA(),e.YNc(72,D0,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(73,"div",8),e.TgZ(74,"label",39),e.SDv(75,40),e.qZA(),e.TgZ(76,"div",13),e.TgZ(77,"div",26),e._UZ(78,"input",41),e.TgZ(79,"label",42),e.SDv(80,43),e.qZA(),e.qZA(),e.TgZ(81,"div",26),e._UZ(82,"input",44),e.TgZ(83,"label",45),e.SDv(84,46),e.qZA(),e.qZA(),e.YNc(85,wC,2,0,"span",17),e._UZ(86,"hr"),e.qZA(),e.qZA(),e.TgZ(87,"cd-nfs-form-client",47,48),e.YNc(89,Qs,22,0,"ng-template",null,49,e.W1O),e.qZA(),e.qZA(),e.TgZ(91,"div",50),e.TgZ(92,"cd-form-button-panel",51),e.NdJ("submitActionEvent",function(){return e.CHM(n),e.oxw().submitAction()}),e.ALo(93,"titlecase"),e.ALo(94,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(2),d=e.MAs(90),w=e.oxw();e.xp6(1),e.Q6J("formGroup",w.nfsForm),e.xp6(6),e.pQV(e.lcZ(6,38,w.action))(e.lcZ(7,40,w.resource)),e.QtT(5),e.xp6(11),e.Q6J("ngIf",null===w.allClusters),e.xp6(1),e.Q6J("ngIf",null!==w.allClusters&&0===w.allClusters.length),e.xp6(1),e.Q6J("ngIf",null!==w.allClusters&&w.allClusters.length>0),e.xp6(1),e.Q6J("ngForOf",w.allClusters),e.xp6(1),e.Q6J("ngIf",w.nfsForm.showError("cluster_id",n,"required")||0===(null==w.allClusters?null:w.allClusters.length)),e.xp6(7),e.Q6J("ngIf",null===w.allFsals),e.xp6(1),e.Q6J("ngIf",null!==w.allFsals&&0===w.allFsals.length),e.xp6(1),e.Q6J("ngIf",null!==w.allFsals&&w.allFsals.length>0),e.xp6(1),e.Q6J("ngForOf",w.allFsals),e.xp6(1),e.Q6J("ngIf",w.nfsForm.showError("name",n,"required")),e.xp6(1),e.Q6J("ngIf",w.fsalAvailabilityError),e.xp6(1),e.Q6J("ngIf","CEPH"===w.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","CEPH"===w.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","CEPH"===w.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","RGW"===w.nfsForm.getValue("name")),e.xp6(9),e.Q6J("ngIf",w.nfsForm.showError("protocolNfsv4",n,"required")),e.xp6(1),e.Q6J("ngIf",w.nfsForm.getValue("protocolNfsv4")),e.xp6(6),e.Q6J("ngIf",null===w.nfsAccessType),e.xp6(1),e.Q6J("ngIf",null!==w.nfsAccessType&&0===w.nfsAccessType.length),e.xp6(1),e.Q6J("ngIf",null!==w.nfsAccessType&&w.nfsAccessType.length>0),e.xp6(1),e.Q6J("ngForOf",w.nfsAccessType),e.xp6(1),e.Q6J("ngIf",w.nfsForm.getValue("access_type")),e.xp6(1),e.Q6J("ngIf","RW"===w.nfsForm.getValue("access_type")&&"RGW"===w.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf",w.nfsForm.showError("access_type",n,"required")),e.xp6(5),e.Q6J("ngTemplateOutlet",d),e.xp6(3),e.Q6J("ngIf",null===w.nfsSquash),e.xp6(1),e.Q6J("ngIf",null!==w.nfsSquash&&0===w.nfsSquash.length),e.xp6(1),e.Q6J("ngIf",null!==w.nfsSquash&&w.nfsSquash.length>0),e.xp6(1),e.Q6J("ngForOf",w.nfsSquash),e.xp6(1),e.Q6J("ngIf",w.nfsForm.showError("squash",n,"required")),e.xp6(13),e.Q6J("ngIf",w.nfsForm.showError("transportUDP",n,"required")||w.nfsForm.showError("transportTCP",n,"required")),e.xp6(2),e.Q6J("form",w.nfsForm)("clients",w.clients),e.xp6(5),e.Q6J("form",w.nfsForm)("submitText",e.lcZ(93,42,w.action)+" "+e.lcZ(94,44,w.resource))}}let x0=(()=>{class f extends Be.E{constructor(n,d,w,re,Ze,Lt,Gt,On,fr,hr){super(),this.authStorageService=n,this.nfsService=d,this.route=w,this.router=re,this.rgwBucketService=Ze,this.rgwSiteService=Lt,this.formBuilder=Gt,this.taskWrapper=On,this.cdRef=fr,this.actionLabels=hr,this.clients=[],this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.allClusters=null,this.icons=eo.P,this.allFsals=[],this.allFsNames=null,this.fsalAvailabilityError=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.pathDataSource=Jr=>Jr.pipe(pf(200),(0,tc.x)(),(0,ol.zg)($i=>this.getPathTypeahead($i)),(0,Ds.U)($i=>$i)),this.bucketDataSource=Jr=>Jr.pipe(pf(200),(0,tc.x)(),(0,ol.zg)($i=>this.getBucketTypeahead($i))),this.permission=this.authStorageService.getPermissions().pool,this.resource="NFS export",this.createForm()}ngOnInit(){const n=[this.nfsService.listClusters(),this.nfsService.fsals(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(d=>{this.cluster_id=decodeURIComponent(d.cluster_id),this.export_id=decodeURIComponent(d.export_id),n.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(n)}),this.nfsForm.get("cluster_id").disable()):(this.action=this.actionLabels.CREATE,this.getData(n))}getData(n){(0,zs.D)(n).subscribe(d=>{this.resolveClusters(d[0]),this.resolveFsals(d[1]),this.resolveFilesystems(d[2]),d[3]&&this.resolveModel(d[3]),this.loadingReady()})}createForm(){this.nfsForm=new xt.d({cluster_id:new Hn.NI("",{validators:[Hn.kI.required]}),fsal:new xt.d({name:new Hn.NI("",{validators:[Hn.kI.required]}),fs_name:new Hn.NI("",{validators:[mo.h.requiredIf({name:"CEPH"})]})}),path:new Hn.NI("/"),protocolNfsv4:new Hn.NI(!0),pseudo:new Hn.NI("",{validators:[mo.h.requiredIf({protocolNfsv4:!0}),Hn.kI.pattern("^/[^><|&()]*$")]}),access_type:new Hn.NI("RW",{validators:[Hn.kI.required]}),squash:new Hn.NI(this.nfsSquash[0],{validators:[Hn.kI.required]}),transportUDP:new Hn.NI(!0,{validators:[mo.h.requiredIf({transportTCP:!1},n=>!n)]}),transportTCP:new Hn.NI(!0,{validators:[mo.h.requiredIf({transportUDP:!1},n=>!n)]}),clients:this.formBuilder.array([]),security_label:new Hn.NI(!1),sec_label_xattr:new Hn.NI("security.selinux",mo.h.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(n){"CEPH"===n.fsal.name&&(n.sec_label_xattr=n.fsal.sec_label_xattr),n.protocolNfsv4=-1!==n.protocols.indexOf(4),delete n.protocols,n.transportTCP=-1!==n.transports.indexOf("TCP"),n.transportUDP=-1!==n.transports.indexOf("UDP"),delete n.transports,n.clients.forEach(d=>{let w="";d.addresses.forEach(re=>{w+=re+", "}),w.length>=2&&(w=w.substring(0,w.length-2)),d.addresses=w}),this.nfsForm.patchValue(n),this.setPathValidation(),this.clients=n.clients}resolveClusters(n){this.allClusters=[];for(const d of n)this.allClusters.push({cluster_id:d});!this.isEdit&&this.allClusters.length>0&&this.nfsForm.get("cluster_id").setValue(this.allClusters[0].cluster_id)}resolveFsals(n){n.forEach(d=>{const w=this.nfsService.nfsFsal.find(re=>d===re.value);gn().isObjectLike(w)&&this.allFsals.push(w)}),!this.isEdit&&this.allFsals.length>0&&this.nfsForm.patchValue({fsal:{name:this.allFsals[0].value}})}resolveFilesystems(n){this.allFsNames=n,!this.isEdit&&n.length>0&&this.nfsForm.patchValue({fsal:{fs_name:n[0].name}})}fsalChangeHandler(){this.setPathValidation();const n=this.nfsForm.getValue("name");("RGW"===n?this.rgwSiteService.get("realms").pipe((0,ol.zg)(w=>0===w.length?(0,ws.of)(!0):this.rgwSiteService.isDefaultRealm().pipe((0,ol.zg)(re=>{if(!re)throw new Error("Selected realm is not the default.");return(0,ws.of)(!0)})))):this.nfsService.filesystems()).subscribe({next:()=>{this.setFsalAvailability(n,!0),this.isEdit||this.nfsForm.patchValue({path:"RGW"===n?"":"/",pseudo:this.generatePseudo(),access_type:this.updateAccessType()}),this.cdRef.detectChanges()},error:w=>{this.setFsalAvailability(n,!1,w),this.nfsForm.get("name").setValue("")}})}setFsalAvailability(n,d,w=""){this.allFsals=this.allFsals.map(re=>(re.value===n&&(re.disabled=!d,this.fsalAvailabilityError=re.disabled?"" + re.descr + " backend is not available. " + w + "":null),re))}accessTypeChangeHandler(){const n=this.nfsForm.getValue("name"),d=this.nfsForm.getValue("access_type");this.defaultAccessType[n]=d}setPathValidation(){const n=this.nfsForm.get("path");n.setValidators([Hn.kI.required]),"RGW"===this.nfsForm.getValue("name")?n.setAsyncValidators([mo.h.bucketExistence(!0,this.rgwBucketService)]):n.setAsyncValidators([this.pathExistence(!0)]),this.isEdit&&n.markAsDirty()}getAccessTypeHelp(n){const d=this.nfsAccessType.find(w=>{if(n===w.value)return w});return gn().isObjectLike(d)?d.help:""}getId(){return gn().isString(this.nfsForm.getValue("cluster_id"))&&gn().isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(n){if(!gn().isString(n)||"/"===n)return(0,ws.of)([]);const d=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(d,n).pipe((0,Ds.U)(w=>w.paths.filter(re=>re.toLowerCase().includes(n)).slice(0,15)),(0,sd.K)(()=>(0,ws.of)(["Error while retrieving paths."])))}pathChangeHandler(){this.isEdit||this.nfsForm.patchValue({pseudo:this.generatePseudo()})}getBucketTypeahead(n){return gn().isString(n)&&"/"!==n&&""!==n?this.rgwBucketService.list().pipe((0,Ds.U)(d=>d.filter(w=>w.toLowerCase().includes(n)).slice(0,15)),(0,sd.K)(()=>(0,ws.of)(["Error while retrieving bucket names."]))):(0,ws.of)([])}generatePseudo(){let n=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(n=void 0,"CEPH"===this.nfsForm.getValue("fsal")&&(n="/cephfs",gn().isString(this.nfsForm.getValue("path"))&&(n+=this.nfsForm.getValue("path")))),n}updateAccessType(){const n=this.nfsForm.getValue("name");let d=this.defaultAccessType[n];return d||(d="RW"),d}submitAction(){let n;const d=this.buildRequest();n=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new Va.R("nfs/edit",{cluster_id:this.cluster_id,export_id:gn().parseInt(this.export_id)}),call:this.nfsService.update(this.cluster_id,gn().parseInt(this.export_id),d)}:{task:new Va.R("nfs/create",{path:d.path,fsal:d.fsal,cluster_id:d.cluster_id}),call:this.nfsService.create(d)}),n.subscribe({error:w=>this.setFormErrors(w),complete:()=>this.router.navigate(["/nfs"])})}setFormErrors(n){n.error.detail&&n.error.detail.toString().includes(`Pseudo ${this.nfsForm.getValue("pseudo")} is already in use`)&&this.nfsForm.get("pseudo").setErrors({pseudoAlreadyExists:!0}),this.nfsForm.setErrors({cdSubmitButton:!0})}buildRequest(){const n=gn().cloneDeep(this.nfsForm.value);return this.isEdit&&(n.export_id=gn().parseInt(this.export_id)),"RGW"===n.fsal.name&&delete n.fsal.fs_name,n.protocols=[],n.protocolNfsv4?n.protocols.push(4):n.pseudo=null,delete n.protocolNfsv4,n.transports=[],n.transportTCP&&n.transports.push("TCP"),delete n.transportTCP,n.transportUDP&&n.transports.push("UDP"),delete n.transportUDP,n.clients.forEach(d=>{d.addresses=gn().isString(d.addresses)?gn()(d.addresses).split(/[ ,]+/).uniq().filter(w=>""!==w).value():[],d.squash||(d.squash=n.squash),d.access_type||(d.access_type=n.access_type)}),n.fsal.sec_label_xattr=!1===n.security_label||"RGW"===n.fsal.name?null:n.sec_label_xattr,delete n.sec_label_xattr,n}pathExistence(n){return d=>{if(d.pristine||!d.value)return(0,ws.of)({required:!0});const w=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(w,d.value).pipe((0,Ds.U)(re=>re.paths.includes(d.value)===n?null:{pathNameNotAllowed:!0}),(0,sd.K)(()=>(0,ws.of)({pathNameNotAllowed:!0})))}}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Kg),e.Y36(tn.gz),e.Y36(tn.F0),e.Y36(Sf.o),e.Y36(Mf.I),e.Y36($c.O),e.Y36(ki.P),e.Y36(e.sBO),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-nfs-form"]],viewQuery:function(n,d){if(1&n&&e.Gf(Yb,7),2&n){let w;e.iGM(w=e.CRH())&&(d.nfsClients=w.first)}},features:[e.qOj],decls:1,vars:1,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls,js,ga,wl,wa,Wl,zc,Ls,yu,wf,ju,Bu,Df,xf,as,Cs,Bs,Da,sc,fu,Pc,Wc,Pl,vp,pu,Cd,Ld,Yu,Ys,sg,yp,ag,lg,n_,bp,Sm,r_,cg,ug,dg;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Cluster",d="This is the ID of an NFS Service.",w="Storage Backend",re="NFS Protocol",Ze="NFSv4",Lt="Access Type",Gt="Squash",On="Transport Protocol",fr="UDP",hr="TCP",Jr="Loading...",$i="-- No cluster available --",bo="-- Select the cluster --",_o="This field is required. To create a new NFS cluster, " + "\ufffd#2\ufffd" + "add a new NFS Service" + "\ufffd/#2\ufffd" + ".",Yi="Loading...",Xs="-- No data pools available --",ls="-- Select the storage backend --",js="This field is required.",ga="" + "\ufffd0\ufffd" + "",wl="Volume",wa="Loading...",Wl="-- No CephFS filesystem available --",zc="-- Select the CephFS filesystem --",Ls="This field is required.",yu="Security Label",wf="Enable security label",ju="This field is required.",Bu="CephFS Path",Df="A path in a CephFS file system.",xf="This field is required.",as="Path need to start with a '/' and can be followed by a word",Cs="The path does not exist in the selected volume.",Bs="Bucket",Da="This field is required.",sc="The bucket does not exist or is not in the default realm (if multiple realms are configured). To continue, " + "\ufffd#2\ufffd" + "create a new bucket" + "\ufffd/#2\ufffd" + ".",fu="This field is required.",Pc="Pseudo",Wc="The position that this " + "[\ufffd#7\ufffd|\ufffd#8\ufffd]" + "NFS v4" + "[\ufffd/#7\ufffd|\ufffd/#8\ufffd]" + " export occupies in the " + "[\ufffd#7\ufffd|\ufffd#8\ufffd]" + "Pseudo FS" + "[\ufffd/#7\ufffd|\ufffd/#8\ufffd]" + " (it must be unique).",Wc=e.Zx4(Wc),Pl="By using different Pseudo options, the same Path may be exported multiple times.",vp="This field is required.",pu="The pseudo is already in use by another export.",Cd="Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or ).",Ld="Loading...",Yu="-- No access type available --",Ys="-- Select the access type --",sg="The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " for details before enabling write access.",yp="This field is required.",ag="Loading...",lg="-- No squash available --",n_="--Select what kind of user id squashing is performed --",bp="This field is required.",Sm="This field is required.",r_="No user id squashing is performed.",cg="uid 0 and gid 0 are squashed to the Anonymous_Uid and Anonymous_Gid gid 0 in alt_groups lists is also squashed.",ug="uid 0 and gid of any value are squashed to the Anonymous_Uid and Anonymous_Gid alt_groups lists is discarded.",dg="All users are squashed.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","nfsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],y,[1,"card-body"],[1,"form-group","row"],["for","cluster_id",1,"cd-col-form-label"],[1,"required"],n,d,[1,"cd-col-form-input"],["formControlName","cluster_id","name","cluster_id","id","cluster_id",1,"form-control"],["value","",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["formGroupName","fsal"],["for","name",1,"cd-col-form-label","required"],w,["formControlName","name","name","name","id","name",1,"form-control",3,"change"],[3,"value","disabled",4,"ngFor","ngForOf"],["class","form-group row",4,"ngIf"],["for","protocols",1,"cd-col-form-label","required"],re,[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","protocolNfsv4","name","protocolNfsv4","id","protocolNfsv4","disabled","",1,"custom-control-input"],["for","protocolNfsv4",1,"custom-control-label"],Ze,["for","access_type",1,"cd-col-form-label","required"],Lt,["formControlName","access_type","name","access_type","id","access_type",1,"form-control",3,"change"],["class","form-text text-muted",4,"ngIf"],["class","form-text text-warning",4,"ngIf"],["for","squash",1,"cd-col-form-label"],Gt,[4,"ngTemplateOutlet"],["name","squash","formControlName","squash","id","squash",1,"form-control"],["for","transports",1,"cd-col-form-label","required"],On,["type","checkbox","formControlName","transportUDP","name","transportUDP","id","transportUDP",1,"custom-control-input"],["for","transportUDP",1,"custom-control-label"],fr,["type","checkbox","formControlName","transportTCP","name","transportTCP","id","transportTCP",1,"custom-control-input"],["for","transportTCP",1,"custom-control-label"],hr,[3,"form","clients"],["nfsClients",""],["squashHelper",""],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["value",""],Jr,$i,bo,[3,"value"],[1,"invalid-feedback"],_o,[1,"btn-link",3,"routerLink"],Yi,Xs,ls,[3,"value","disabled"],js,ga,["for","fs_name",1,"cd-col-form-label","required"],wl,["formControlName","fs_name","name","fs_name","id","fs_name",1,"form-control",3,"change"],wa,Wl,zc,Ls,["for","security_label",1,"cd-col-form-label",3,"ngClass"],yu,["type","checkbox","formControlName","security_label","name","security_label","id","security_label",1,"custom-control-input"],["for","security_label",1,"custom-control-label"],wf,["type","text","class","form-control","name","sec_label_xattr","id","sec_label_xattr","formControlName","sec_label_xattr",4,"ngIf"],["type","text","name","sec_label_xattr","id","sec_label_xattr","formControlName","sec_label_xattr",1,"form-control"],ju,["for","path",1,"cd-col-form-label"],Bu,Df,["type","text","name","path","id","path","data-testid","fs_path","formControlName","path",1,"form-control",3,"ngbTypeahead","selectItem","blur"],xf,as,Cs,Bs,["type","text","name","path","id","path","data-testid","rgw_path","formControlName","path",1,"form-control",3,"ngbTypeahead"],Da,sc,["routerLink","/rgw/bucket/create",1,"btn-link"],fu,["for","pseudo",1,"cd-col-form-label"],Pc,Wc,Pl,["type","text","name","pseudo","id","pseudo","formControlName","pseudo",1,"form-control"],vp,pu,Cd,Ld,Yu,Ys,[1,"form-text","text-muted"],[1,"form-text","text-warning"],sg,["section","rgw-nfs"],yp,ag,lg,n_,bp,Sm,[1,"squash-helper"],[1,"squash-helper-item-value"],r_,cg,ug,dg]},template:function(n,d){1&n&&e.YNc(0,aE,95,46,"div",0),2&n&&e.Q6J("cdFormLoading",d.loading)},directives:[vn.y,Hn._Y,Hn.JL,Hn.sg,Gn.V,kn.P,yl.S,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.u,s.O5,s.sg,Hn.x0,Hn.Wl,s.tP,em,jr.p,Hn.YN,Hn.Kr,tn.yS,s.mk,Hn.Fj,Br.dR,_s.K],pipes:[s.rS,E.m],styles:[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}.squash-helper[_ngcontent-%COMP%]{padding-left:1rem}.squash-helper-item-value[_ngcontent-%COMP%]{font-weight:bold}"]}),f})();var R0=o(38047);function nm(f,y){if(1&f&&e._UZ(0,"cd-table-key-value",10),2&f){const n=e.oxw(2);e.Q6J("data",n.data)}}function lE(f,y){if(1&f&&e._UZ(0,"cd-table",11,12),2&f){const n=e.oxw(2);e.Q6J("data",n.clients)("columns",n.clientsColumns)}}function rm(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,nm,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,lE,2,2,"ng-template",6),e.qZA(),e.qZA(),e._UZ(11,"div",9),e.BQk()),2&f){const n=e.MAs(2),d=e.oxw();e.xp6(9),e.pQV(d.clients.length),e.QtT(9),e.xp6(2),e.Q6J("ngbNavOutlet",n)}}let im=(()=>{class f{constructor(){this.clients=[],this.clientsColumns=[{name:"Addresses",prop:"addresses",flexGrow:2},{name:"Access Type",prop:"access_type",flexGrow:1},{name:"Squash",prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data["Cluster"]=this.selectedItem.cluster_id,this.data["NFS Protocol"]=this.selectedItem.protocols.map(n=>"NFSv"+n),this.data["Pseudo"]=this.selectedItem.pseudo,this.data["Access Type"]=this.selectedItem.access_type,this.data["Squash"]=this.selectedItem.squash,this.data["Transport"]=this.selectedItem.transports,this.data["Path"]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data["Storage Backend"]="CephFS",this.data["CephFS User"]=this.selectedItem.fsal.user_id,this.data["CephFS Filesystem"]=this.selectedItem.fsal.fs_name,this.data["Security Label"]=this.selectedItem.fsal.sec_label_xattr):(this.data["Storage Backend"]="Object Gateway",this.data["Object Gateway User"]=this.selectedItem.fsal.user_id))}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-nfs-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let y,n;return y="Details",n="Clients (" + "\ufffd0\ufffd" + ")",[[4,"ngIf"],["ngbNav","","cdStatefulTab","nfs-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],y,["ngbNavContent",""],["ngbNavItem","clients"],n,[3,"ngbNavOutlet"],[3,"data"],["columnMode","flex","identifier","addresses","forceIdentifier","true","selectionType","",3,"data","columns"],["table",""]]},template:function(n,d){1&n&&e.YNc(0,rm,12,2,"ng-container",0),2&n&&e.Q6J("ngIf",d.selection)},directives:[s.O5,Br.Pz,G.m,Br.nv,Br.Vx,Br.uN,Br.tO,Ft.b,Ui.a],styles:[""]}),f})();const Bc=["nfsState"],DC=["nfsFsal"],N0=["table"];function k1(f,y){1&f&&(e.ynx(0),e.SDv(1,7),e.BQk())}function cE(f,y){1&f&&(e.ynx(0),e.SDv(1,8),e.BQk())}function P0(f,y){if(1&f&&(e.YNc(0,k1,2,0,"ng-container",6),e.YNc(1,cE,2,0,"ng-container",6)),2&f){const n=y.value;e.Q6J("ngIf","CEPH"===n.name),e.xp6(1),e.Q6J("ngIf","RGW"===n.name)}}let I0=(()=>{class f extends mi.o{constructor(n,d,w,re,Ze,Lt){super(),this.authStorageService=n,this.modalService=d,this.nfsService=w,this.taskListService=re,this.taskWrapper=Ze,this.actionLabels=Lt,this.selection=new si.r,this.isDefaultCluster=!1,this.builders={"nfs/create":Jr=>({path:Jr.path,cluster_id:Jr.cluster_id,fsal:Jr.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const Gt=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:eo.P.add,routerLink:()=>"/nfs/create",canBePrimary:Jr=>!Jr.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:eo.P.edit,routerLink:()=>`/nfs/edit/${Gt()}`,name:this.actionLabels.EDIT},{permission:"delete",icon:eo.P.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Path",prop:"path",flexGrow:2,cellTransformation:ii.e.executing},{name:"Pseudo",prop:"pseudo",flexGrow:2},{name:"Cluster",prop:"cluster_id",flexGrow:2},{name:"Storage Backend",prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:"Access Type",prop:"access_type",flexGrow:2}],this.taskListService.init(()=>this.nfsService.list(),n=>this.prepareResponse(n),n=>this.exports=n,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(n){let d=[];return n.forEach(w=>{w.id=`${w.cluster_id}:${w.export_id}`,w.state="LOADING",d=d.concat(w)}),d}onFetchError(){this.table.reset(),this.viewCacheStatus={status:Bi.T.ValueException}}itemFilter(n,d){return n.cluster_id===d.metadata.cluster_id&&n.export_id===d.metadata.export_id}taskFilter(n){return["nfs/create","nfs/delete","nfs/edit"].includes(n.name)}updateSelection(n){this.selection=n}deleteNfsModal(){const n=this.selection.first().cluster_id,d=this.selection.first().export_id;this.modalRef=this.modalService.show(jo.M,{itemDescription:"NFS export",itemNames:[`${n}:${d}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new Va.R("nfs/delete",{cluster_id:n,export_id:d}),call:this.nfsService.delete(n,d)})})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(na.Z),e.Y36(Kg),e.Y36(R0.j),e.Y36(ki.P),e.Y36(uo.p4))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-nfs-list"]],viewQuery:function(n,d){if(1&n&&(e.Gf(Bc,5),e.Gf(DC,7),e.Gf(N0,7)),2&n){let w;e.iGM(w=e.CRH())&&(d.nfsState=w.first),e.iGM(w=e.CRH())&&(d.nfsFsal=w.first),e.iGM(w=e.CRH())&&(d.table=w.first)}},features:[e._Bn([R0.j]),e.qOj],decls:7,vars:7,consts:function(){let y,n;return y="CephFS",n="Object Gateway",[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["nfsFsal",""],[4,"ngIf"],y,n]},template:function(n,d){1&n&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(re){return d.setExpandedRow(re)})("updateSelection",function(re){return d.updateSelection(re)}),e.TgZ(2,"div",2),e._UZ(3,"cd-table-actions",3),e.qZA(),e._UZ(4,"cd-nfs-details",4),e.qZA(),e.YNc(5,P0,2,2,"ng-template",null,5,e.W1O)),2&n&&(e.Q6J("data",d.exports)("columns",d.columns)("hasDetails",!0),e.xp6(3),e.Q6J("permission",d.permission)("selection",d.selection)("tableActions",d.tableActions),e.xp6(1),e.Q6J("selection",d.expandedRow))},directives:[Ui.a,ha.K,im,s.O5],styles:[""]}),f})(),L0=(()=>{class f{constructor(n){this.route=n,this.route.queryParams.subscribe(d=>{this.fromLink=d.fromLink||f.defaultFromLink}),this.route.params.subscribe(d=>{this.serviceId=decodeURIComponent(d.id),this.serviceType=d.type})}}return f.defaultFromLink="/hosts",f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.gz))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-performance-counter"]],decls:3,vars:4,consts:[[3,"serviceType","serviceId"]],template:function(n,d){1&n&&(e.TgZ(0,"legend"),e._uU(1),e.qZA(),e._UZ(2,"cd-table-performance-counter",0)),2&n&&(e.xp6(1),e.AsE("",d.serviceType,".",d.serviceId,""),e.xp6(1),e.Q6J("serviceType",d.serviceType)("serviceId",d.serviceId))},directives:[B_.p],styles:[""]}),f})();var om=o(39219),F0=o(33888),$1=o(32057);function uE(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function J_(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function dE(f,y){if(1&f&&e._UZ(0,"cd-helper",33),2&f){const n=e.oxw();e.s9C("html",n.passwordPolicyHelpText)}}function fE(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,34),e.qZA())}function pE(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,35),e.qZA())}function sm(f,y){if(1&f&&(e.TgZ(0,"span",30),e._uU(1),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.hij(" ",n.passwordValuation," ")}}function k0(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function $0(f,y){1&f&&(e.TgZ(0,"span",30),e.SDv(1,37),e.qZA())}let H1=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt){this.actionLabels=n,this.notificationService=d,this.userService=w,this.authStorageService=re,this.formBuilder=Ze,this.router=Lt,this.passwordPolicyService=Gt,this.passwordPolicyHelpText="",this.icons=eo.P,this.action=this.actionLabels.CHANGE,this.resource="password",this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(n=>{this.passwordPolicyHelpText=n}),this.userForm=this.formBuilder.group({oldpassword:[null,[Hn.kI.required,mo.h.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[Hn.kI.required,mo.h.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[mo.h.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(n,d,w)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(d),this.passwordValuation=gn().defaultTo(w,"")})]],confirmnewpassword:[null,[Hn.kI.required]]},{validators:[mo.h.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const n=this.authStorageService.getUsername(),d=this.userForm.getValue("oldpassword"),w=this.userForm.getValue("newpassword");this.userService.changePassword(n,d,w).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(Ho.k.success,"Updated user password\""),this.router.navigate(["/login"])}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(Zi.g),e.Y36($1.K),e.Y36(hi.j),e.Y36($c.O),e.Y36(tn.F0),e.Y36(F0.q))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-user-password-form"]],decls:48,vars:25,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr;return y="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",n="Old password",d="New password",w="Confirm new password",re="This field is required.",Ze="The old and new passwords must be different.",Lt="This field is required.",Gt="The old and new passwords must be different.",On="This field is required.",fr="Password confirmation doesn't match the new password.",[[1,"cd-col-form"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],y,[1,"card-body"],[1,"form-group","row"],["for","oldpassword",1,"cd-col-form-label","required"],n,[1,"cd-col-form-input"],[1,"input-group"],["type","password","placeholder","Old password...","id","oldpassword","formControlName","oldpassword","autocomplete","new-password","autofocus","",1,"form-control"],[1,"input-group-append"],["cdPasswordButton","oldpassword",1,"btn","btn-light"],["class","invalid-feedback",4,"ngIf"],["for","newpassword",1,"cd-col-form-label"],[1,"required"],d,["class","text-pre-wrap",3,"html",4,"ngIf"],["type","password","placeholder","Password...","id","newpassword","autocomplete","new-password","formControlName","newpassword",1,"form-control"],["type","button","cdPasswordButton","newpassword",1,"btn","btn-light"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],["for","confirmnewpassword",1,"cd-col-form-label","required"],w,["type","password","autocomplete","new-password","placeholder","Confirm new password...","id","confirmnewpassword","formControlName","confirmnewpassword",1,"form-control"],["cdPasswordButton","confirmnewpassword",1,"btn","btn-light"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],re,Ze,[1,"text-pre-wrap",3,"html"],Lt,Gt,On,fr]},template:function(n,d){if(1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"form",1,2),e.TgZ(3,"div",3),e.TgZ(4,"div",4),e.SDv(5,5),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.TgZ(13,"div",11),e._UZ(14,"input",12),e.TgZ(15,"span",13),e._UZ(16,"button",14),e.qZA(),e.qZA(),e.YNc(17,uE,2,0,"span",15),e.YNc(18,J_,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(19,"div",7),e.TgZ(20,"label",16),e.TgZ(21,"span",17),e.SDv(22,18),e.qZA(),e.YNc(23,dE,1,1,"cd-helper",19),e.qZA(),e.TgZ(24,"div",10),e.TgZ(25,"div",11),e._UZ(26,"input",20),e.TgZ(27,"span",13),e._UZ(28,"button",21),e.qZA(),e.qZA(),e.TgZ(29,"div",22),e._UZ(30,"div",23),e.qZA(),e.YNc(31,fE,2,0,"span",15),e.YNc(32,pE,2,0,"span",15),e.YNc(33,sm,2,1,"span",15),e.qZA(),e.qZA(),e.TgZ(34,"div",7),e.TgZ(35,"label",24),e.SDv(36,25),e.qZA(),e.TgZ(37,"div",10),e.TgZ(38,"div",11),e._UZ(39,"input",26),e.TgZ(40,"span",13),e._UZ(41,"button",27),e.qZA(),e.qZA(),e.YNc(42,k0,2,0,"span",15),e.YNc(43,$0,2,0,"span",15),e.qZA(),e.qZA(),e.qZA(),e.TgZ(44,"div",28),e.TgZ(45,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.ALo(46,"titlecase"),e.ALo(47,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(2);e.xp6(1),e.Q6J("formGroup",d.userForm),e.xp6(6),e.pQV(e.lcZ(6,17,d.action))(e.lcZ(7,19,d.resource)),e.QtT(5),e.xp6(10),e.Q6J("ngIf",d.userForm.showError("oldpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("oldpassword",w,"notmatch")),e.xp6(5),e.Q6J("ngIf",d.passwordPolicyHelpText.length>0),e.xp6(7),e.Tol(d.passwordStrengthLevelClass),e.s9C("title",d.passwordValuation),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"notmatch")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"passwordPolicy")),e.xp6(9),e.Q6J("ngIf",d.userForm.showError("confirmnewpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("confirmnewpassword",w,"match")),e.xp6(2),e.Q6J("form",d.userForm)("submitText",e.lcZ(46,21,d.action)+" "+e.lcZ(47,23,d.resource))}},directives:[Hn._Y,Hn.JL,Hn.sg,Gn.V,kn.P,As.o,Hn.Fj,zn.b,Hn.JJ,Hn.u,El.U,yd.C,s.O5,jr.p,yl.S],pipes:[s.rS,E.m],styles:[""]}),f})();function hE(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,18),e.qZA())}function Q_(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,19),e.qZA())}function X_(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,20),e.qZA())}function _E(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,21),e.qZA())}function gE(f,y){if(1&f&&(e.TgZ(0,"span",17),e._uU(1),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.hij(" ",n.passwordValuation," ")}}function mE(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,22),e.qZA())}function H0(f,y){1&f&&(e.TgZ(0,"span",17),e.SDv(1,23),e.qZA())}let U0=(()=>{class f extends H1{constructor(n,d,w,re,Ze,Lt,Gt,On){super(n,d,w,re,Ze,Lt,Gt),this.actionLabels=n,this.notificationService=d,this.userService=w,this.authStorageService=re,this.formBuilder=Ze,this.router=Lt,this.passwordPolicyService=Gt,this.authService=On}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(uo.p4),e.Y36(Zi.g),e.Y36($1.K),e.Y36(hi.j),e.Y36($c.O),e.Y36(tn.F0),e.Y36(F0.q),e.Y36(om.e))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-login-password-form"]],features:[e.qOj],decls:34,vars:19,consts:function(){let y,n,d,w,re,Ze,Lt,Gt;return y="Please set a new password.",n="You will be redirected to the login page afterwards.",d="This field is required.",w="The old and new passwords must be different.",re="This field is required.",Ze="The old and new passwords must be different.",Lt="This field is required.",Gt="Password confirmation doesn't match the new password.",[y,n,["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"form-group","has-feedback"],[1,"input-group"],["type","password","placeholder","Old password...","id","oldpassword","formControlName","oldpassword","autocomplete","new-password","autofocus","",1,"form-control"],[1,"input-group-append"],["cdPasswordButton","oldpassword",1,"btn","btn-outline-light","btn-password"],["class","invalid-feedback",4,"ngIf"],["type","password","placeholder","New password...","id","newpassword","autocomplete","new-password","formControlName","newpassword",1,"form-control"],["type","button","cdPasswordButton","newpassword",1,"btn","btn-outline-light","btn-password"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],["type","password","autocomplete","new-password","placeholder","Confirm new password...","id","confirmnewpassword","formControlName","confirmnewpassword",1,"form-control"],["cdPasswordButton","confirmnewpassword",1,"btn","btn-outline-light","btn-password"],["wrappingClass","text-right",3,"form","disabled","submitText","submitActionEvent","backActionEvent"],[1,"invalid-feedback"],d,w,re,Ze,Lt,Gt]},template:function(n,d){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"h2"),e.SDv(2,0),e.qZA(),e.TgZ(3,"h4"),e.SDv(4,1),e.qZA(),e.TgZ(5,"form",2,3),e.TgZ(7,"div",4),e.TgZ(8,"div",5),e._UZ(9,"input",6),e.TgZ(10,"span",7),e._UZ(11,"button",8),e.qZA(),e.qZA(),e.YNc(12,hE,2,0,"span",9),e.YNc(13,Q_,2,0,"span",9),e.qZA(),e.TgZ(14,"div",4),e.TgZ(15,"div",5),e._UZ(16,"input",10),e.TgZ(17,"span",7),e._UZ(18,"button",11),e.qZA(),e.qZA(),e.TgZ(19,"div",12),e._UZ(20,"div",13),e.qZA(),e.YNc(21,X_,2,0,"span",9),e.YNc(22,_E,2,0,"span",9),e.YNc(23,gE,2,1,"span",9),e.qZA(),e.TgZ(24,"div",4),e.TgZ(25,"div",5),e._UZ(26,"input",14),e.TgZ(27,"span",7),e._UZ(28,"button",15),e.qZA(),e.qZA(),e.YNc(29,mE,2,0,"span",9),e.YNc(30,H0,2,0,"span",9),e.qZA(),e.TgZ(31,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return d.onSubmit()})("backActionEvent",function(){return d.onCancel()}),e.ALo(32,"titlecase"),e.ALo(33,"upperFirst"),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(6);e.xp6(5),e.Q6J("formGroup",d.userForm),e.xp6(7),e.Q6J("ngIf",d.userForm.showError("oldpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("oldpassword",w,"notmatch")),e.xp6(7),e.Tol(d.passwordStrengthLevelClass),e.s9C("title",d.passwordValuation),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"notmatch")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("newpassword",w,"passwordPolicy")),e.xp6(6),e.Q6J("ngIf",d.userForm.showError("confirmnewpassword",w,"required")),e.xp6(1),e.Q6J("ngIf",d.userForm.showError("confirmnewpassword",w,"match")),e.xp6(1),e.Q6J("form",d.userForm)("disabled",d.userForm.invalid)("submitText",e.lcZ(32,15,d.action)+" "+e.lcZ(33,17,d.resource))}},directives:[Hn._Y,Hn.JL,Hn.sg,Gn.V,kn.P,As.o,Hn.Fj,zn.b,Hn.JJ,Hn.u,El.U,yd.C,s.O5,jr.p],pipes:[s.rS,E.m],styles:["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .form-group{background-color:#2e373d;border-left:4px solid #fff}  cd-login-password-form .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{background-color:#2e373d;border:0;box-shadow:none;color:#f8f9fa;filter:none;outline:none}  cd-login-password-form .form-control::placeholder{color:#6c757d}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}@keyframes autofill{to{background-color:#2e373d;color:#f8f9fa}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-fill-mode:both;animation-name:autofill;border-radius:0;box-shadow:0 0 0 1000px #2e373d inset;-webkit-text-fill-color:#f8f9fa;-webkit-transition-property:none;transition-property:none}.invalid-feedback[_ngcontent-%COMP%]{padding-left:9px}.is-invalid.cd-form-control[_ngcontent-%COMP%]{border-color:transparent}"]}),f})();class j0{}function vE(f,y){1&f&&(e.TgZ(0,"div",20),e.SDv(1,21),e.qZA())}function B0(f,y){1&f&&(e.TgZ(0,"div",20),e.SDv(1,22),e.qZA())}function yE(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.NdJ("ngSubmit",function(){return e.CHM(n),e.oxw().login()}),e.TgZ(3,"div",4),e.TgZ(4,"label",5),e.SDv(5,6),e.qZA(),e.TgZ(6,"input",7,8),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().model.username=w}),e.qZA(),e.YNc(8,vE,2,0,"div",9),e.qZA(),e.TgZ(9,"div",10),e.TgZ(10,"div",11),e.TgZ(11,"div",12),e.TgZ(12,"label",13),e.SDv(13,14),e.qZA(),e.TgZ(14,"input",15,16),e.NdJ("ngModelChange",function(w){return e.CHM(n),e.oxw().model.password=w}),e.qZA(),e.YNc(16,B0,2,0,"div",9),e.qZA(),e.TgZ(17,"span",17),e._UZ(18,"button",18),e.qZA(),e.qZA(),e.qZA(),e._UZ(19,"input",19),e.qZA(),e.qZA()}if(2&f){const n=e.MAs(2),d=e.MAs(7),w=e.MAs(15),re=e.oxw();e.xp6(6),e.Q6J("ngModel",re.model.username),e.uIk("aria-invalid",d.invalid),e.xp6(2),e.Q6J("ngIf",(n.submitted||d.dirty)&&d.invalid),e.xp6(6),e.Q6J("ngModel",re.model.password),e.uIk("aria-invalid",w.invalid),e.xp6(2),e.Q6J("ngIf",(n.submitted||w.dirty)&&w.invalid),e.xp6(3),e.Q6J("disabled",n.invalid)}}let bE=(()=>{class f{constructor(n,d,w,re,Ze){this.authService=n,this.authStorageService=d,this.modalService=w,this.route=re,this.router=Ze,this.model=new j0,this.isLoginActive=!1,this.postInstalled=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{this.modalService.dismissAll();let n=null;if(-1!==window.location.hash.indexOf("access_token=")){n=window.location.hash.split("access_token=")[1];const d=window.location.toString();window.history.replaceState({},document.title,d.split("?")[0])}this.authService.check(n).subscribe(d=>{d.login_url?(this.postInstalled="POST_INSTALLED"===d.cluster_status,"#/login"===d.login_url?this.isLoginActive=!0:window.location.replace(d.login_url)):(this.authStorageService.set(d.username,d.permissions,d.sso,d.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{const n=this.postInstalled?"/":"/expand-cluster";let d=gn().get(this.route.snapshot.queryParams,"returnUrl",n);!this.postInstalled&&"/dashboard"===this.route.snapshot.queryParams.returnUrl&&(d="/expand-cluster"),this.router.navigate([d])})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(om.e),e.Y36(hi.j),e.Y36(na.Z),e.Y36(tn.gz),e.Y36(tn.F0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-login"]],decls:1,vars:1,consts:function(){let y,n,d,w,re;return y="Username",n="Password",d="Log in",w="Username is required",re="Password is required",[["class","container",4,"ngIf"],[1,"container"],["name","loginForm","novalidate","",3,"ngSubmit"],["loginForm","ngForm"],[1,"form-group","has-feedback","d-flex","flex-column","py-3"],["for","username",1,"placeholder","pl-4"],y,["id","username","name","username","type","text","aria-labelledby","username","required","","autofocus","",1,"form-control","pl-4",3,"ngModel","ngModelChange"],["username","ngModel"],["class","invalid-feedback pl-4",4,"ngIf"],["id","password-div",1,"form-group","has-feedback"],[1,"input-group","d-flex","flex-nowrap"],[1,"d-flex","flex-column","flex-grow-1","py-3"],["for","password",1,"placeholder","pl-4"],n,["id","password","name","password","type","password","aria-labelledby","password","required","",1,"form-control","pl-4",3,"ngModel","ngModelChange"],["password","ngModel"],[1,"form-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-outline-light","btn-password","h-100","px-4"],["type","submit","value",d,1,"btn","btn-accent","px-5","py-2",3,"disabled"],[1,"invalid-feedback","pl-4"],w,re]},template:function(n,d){1&n&&e.YNc(0,yE,20,7,"div",0),2&n&&e.Q6J("ngIf",d.isLoginActive)},directives:[s.O5,Hn._Y,Hn.JL,Hn.F,kn.P,As.o,Hn.Fj,zn.b,Hn.Q7,El.U,Hn.JJ,Hn.On,yd.C],styles:["cd-login .form-group{background-color:#2e373d;border-left:4px solid #fff;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{background-color:#2e373d;border:0;box-shadow:none;color:#f8f9fa;filter:none;outline:none}  cd-login .placeholder{color:#6c757d}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{background-color:#2e373d;color:#f8f9fa}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-fill-mode:both;animation-name:autofill;border-radius:0;box-shadow:0 0 0 1000px #2e373d inset;-webkit-text-fill-color:#f8f9fa;-webkit-transition-property:none;transition-property:none}"]}),f})();var EE=o(72625);function xC(f,y){if(1&f&&(e.TgZ(0,"div"),e._UZ(1,"i",8),e._UZ(2,"br"),e._UZ(3,"br"),e._UZ(4,"br"),e.TgZ(5,"h3"),e.TgZ(6,"b"),e._uU(7),e.qZA(),e.qZA(),e._UZ(8,"br"),e.TgZ(9,"h4"),e._uU(10),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Tol(n.icon),e.xp6(6),e.Oqu(n.header),e.xp6(3),e.Oqu(n.message)}}function RC(f,y){1&f&&(e._UZ(0,"i",9),e._UZ(1,"br"),e._UZ(2,"br"),e._UZ(3,"br"),e.TgZ(4,"h3"),e.tHW(5,10),e._UZ(6,"b"),e.N_p(),e.qZA(),e._UZ(7,"br"),e.TgZ(8,"h4"),e.SDv(9,11),e.qZA())}function NC(f,y){if(1&f&&(e.TgZ(0,"div"),e.TgZ(1,"h4"),e.tHW(2,12),e._UZ(3,"a",13),e.N_p(),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(3),e.s9C("href",n.docUrl,e.LSH),e.pQV(n.section_info),e.QtT(2)}}let Y0=(()=>{class f{constructor(n,d){this.router=n,this.docService=d}ngOnInit(){this.fetchData(),this.routerSubscription=this.router.events.pipe((0,qu.h)(n=>n instanceof tn.m2)).subscribe(()=>{this.fetchData()})}unloadHandler(n){n.returnValue=!1}fetchData(){try{this.router.onSameUrlNavigation="reload",this.message=history.state.message,this.header=history.state.header,this.section=history.state.section,this.section_info=history.state.section_info,this.icon=history.state.icon,this.source=history.state.source,this.docUrl=this.docService.urlGenerator(this.section)}catch(n){this.router.navigate(["/error"])}}ngOnDestroy(){this.routerSubscription&&this.routerSubscription.unsubscribe()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0),e.Y36(EE.R))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-error"]],hostBindings:function(n,d){1&n&&e.NdJ("beforeunload",function(re){return d.unloadHandler(re)},!1,e.Jf7)},decls:16,vars:4,consts:function(){let y,n,d,w;return y="Go To Dashboard",n="" + "\ufffd#6\ufffd" + "Page not Found" + "\ufffd/#6\ufffd" + "",d="Sorry, we couldn\u2019t find what you were looking for. The page you requested may have been changed or moved.",w="Please consult the " + "\ufffd#3\ufffd" + "documentation" + "\ufffd/#3\ufffd" + " on how to configure and enable the " + "\ufffd0\ufffd" + " management functionality.",[["target","_blank"],[1,"dashboard","row"],[1,"text-center","content"],[4,"ngIf","ngIfElse"],["elseBlock",""],[4,"ngIf"],[1,"btn","btn-primary",3,"routerLink"],y,["aria-hidden","true"],["aria-hidden","true",1,"fa","fa-exclamation-triangle"],n,d,w,[3,"href"]]},template:function(n,d){if(1&n&&(e.TgZ(0,"head"),e.TgZ(1,"title"),e._uU(2,"Error Page"),e.qZA(),e._UZ(3,"base",0),e.qZA(),e.TgZ(4,"div",1),e.TgZ(5,"div",2),e._UZ(6,"br"),e.YNc(7,xC,11,5,"div",3),e.YNc(8,RC,10,0,"ng-template",null,4,e.W1O),e.YNc(10,NC,4,2,"div",5),e._UZ(11,"br"),e._UZ(12,"br"),e.TgZ(13,"div"),e.TgZ(14,"button",6),e.SDv(15,7),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(9);e.xp6(7),e.Q6J("ngIf",d.header&&d.message)("ngIfElse",w),e.xp6(3),e.Q6J("ngIf",d.section),e.xp6(4),e.Q6J("routerLink","/dashboard")}},directives:[s.O5,As.o,tn.rH],styles:["h4[_ngcontent-%COMP%]{color:#495057}i[_ngcontent-%COMP%]{font-size:6em;margin-top:120px}.text-center[_ngcontent-%COMP%]{background-color:#e9ecef}.dashboard[_ngcontent-%COMP%]{background-color:#e9ecef;height:100%;position:relative}.content[_ngcontent-%COMP%]{left:50%;position:absolute;top:40%;transform:translate(-50%,-50%);width:100%}.row[_ngcontent-%COMP%]{display:block;margin-left:-29px;margin-right:-29px;padding-top:10em}.fa-exclamation-triangle[_ngcontent-%COMP%]{color:#ef5c55}.fa-lock[_ngcontent-%COMP%]{color:#ef5c55}.fa-wrench[_ngcontent-%COMP%]{color:#2b99a8}"]}),f})(),am=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-blank-layout"]],decls:1,vars:0,template:function(n,d){1&n&&e._UZ(0,"router-outlet")},directives:[tn.lC],styles:[""]}),f})();var Z0=o(92340);let TE=(()=>{class f{constructor(n,d){this.http=n,this.localeId=d}getLocale(){return this.localeId||Z0.N.default_lang}setLocale(n){document.cookie=`cd-lang=${n}`}getLanguages(){return this.http.get("ui-api/langs")}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN),e.LFG(e.soG))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var Jh=(()=>{return(f=Jh||(Jh={})).cs="\u010ce\u0161tina",f.de="Deutsch",f["en-US"]="English",f.es="Espa\xf1ol",f.fr="Fran\xe7ais",f.id="Bahasa Indonesia",f.it="Italiano",f.ja="\u65e5\u672c\u8a9e",f.ko="\ud55c\uad6d\uc5b4",f.pl="Polski",f.pt="Portugu\xeas (brasileiro)",f["zh-Hans"]="\u4e2d\u6587 (\u7b80\u4f53)",f["zh-Hant"]="\u4e2d\u6587 (\u7e41\u9ad4\uff09",Jh;var f})();function K_(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"button",4),e.NdJ("click",function(){const re=e.CHM(n).$implicit;return e.oxw().changeLanguage(re.key)}),e._uU(2),e.qZA(),e.BQk()}if(2&f){const n=y.$implicit;e.xp6(2),e.hij(" ",n.value," ")}}let V0=(()=>{class f{constructor(n){this.languageService=n,this.allLanguages=Jh,this.supportedLanguages={}}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.languageService.getLanguages().subscribe(n=>{this.supportedLanguages=gn().pick(Jh,n)})}reloadWindow(){window.location.reload()}changeLanguage(n){this.languageService.setLocale(n),this.reloadWindow()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(TE))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-language-selector"]],decls:6,vars:4,consts:function(){let y;return y="Select a Language",[["ngbDropdown","","display","dynamic","placement","bottom-right"],["ngbDropdownToggle","","title",y],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["ngbDropdownItem","",3,"click"]]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._uU(2),e.qZA(),e.TgZ(3,"div",2),e.YNc(4,K_,3,1,"ng-container",3),e.ALo(5,"keyvalue"),e.qZA(),e.qZA()),2&n&&(e.xp6(2),e.hij(" ",d.allLanguages[d.selectedLanguage]," "),e.xp6(2),e.Q6J("ngForOf",e.lcZ(5,2,d.supportedLanguages)))},directives:[Br.jt,Br.iD,Br.Vi,s.sg,As.o,Br.TH],pipes:[s.Nd],styles:[""]}),f})(),CE=(()=>{class f{constructor(n){this.http=n,this.baseUiURL="ui-api/login/custom_banner"}getBannerText(){return this.http.get(this.baseUiURL)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function SE(f,y){if(1&f&&(e.TgZ(0,"p",1),e._uU(1),e.qZA()),2&f){const n=y.ngIf;e.xp6(1),e.Oqu(n)}}let ME=(()=>{class f{constructor(n){this.customLoginBannerService=n}ngOnInit(){this.bannerText$=this.customLoginBannerService.getBannerText()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(CE))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-custom-login-banner"]],decls:2,vars:3,consts:[["class","login-text",4,"ngIf"],[1,"login-text"]],template:function(n,d){1&n&&(e.YNc(0,SE,2,1,"p",0),e.ALo(1,"async")),2&n&&e.Q6J("ngIf",e.lcZ(1,1,d.bannerText$))},directives:[s.O5],pipes:[s.Ov],styles:[".login-text[_ngcontent-%COMP%]{font-weight:bold;margin:0;padding:12px 20% 12px 12px}"]}),f})();function OE(f,y){if(1&f&&(e.TgZ(0,"li",11),e.TgZ(1,"cd-doc",12),e.DtL(2,13),e.qZA(),e.qZA()),2&f){const n=y.$implicit;e.xp6(1),e.pQV(n.text),e.QtT(2),e.s9C("section",n.section)}}let G0=(()=>{class f{constructor(){this.docItems=[{section:"help",text:"Help"},{section:"security",text:"Security"},{section:"trademarks",text:"Trademarks"}]}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-login-layout"]],decls:16,vars:1,consts:function(){let y;return y="" + "\ufffd0\ufffd" + "",[[1,"login","full-height"],[1,"navbar","p-4"],[1,"navbar-brand"],[1,"form-inline"],[1,"container"],[1,"row","full-height"],[1,"col-sm-12","col-md-6","d-sm-block","login-form"],[1,"col-sm-12","col-md-6","d-sm-block","branding-info"],["src","assets/Ceph_Ceph_Logo_with_text_white.svg","alt","Ceph",1,"img-fluid","pb-3"],[1,"list-inline"],["class","list-inline-item p-3",4,"ngFor","ngForOf"],[1,"list-inline-item","p-3"],["noSubscribe","true",3,"section",6,"docText"],["docText",y]]},template:function(n,d){1&n&&(e.TgZ(0,"main",0),e.TgZ(1,"header"),e.TgZ(2,"nav",1),e._UZ(3,"a",2),e.TgZ(4,"div",3),e._UZ(5,"cd-language-selector"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(6,"section"),e.TgZ(7,"div",4),e.TgZ(8,"div",5),e.TgZ(9,"div",6),e._UZ(10,"router-outlet"),e.qZA(),e.TgZ(11,"div",7),e._UZ(12,"img",8),e.TgZ(13,"ul",9),e.YNc(14,OE,3,2,"li",10),e.qZA(),e._UZ(15,"cd-custom-login-banner"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(14),e.Q6J("ngForOf",d.docItems))},directives:[Br.M2,V0,tn.lC,s.sg,ME,_s.K],styles:["cd-login-layout .login{background-color:#374249;background-image:url(ceph_background.e82dd79127290ddbe8cb.gif);background-position:right bottom;background-repeat:no-repeat;color:#f8f9fa}  cd-login-layout .login header{position:absolute;width:100vw}  cd-login-layout .login header .navbar .dropdown-menu{margin-top:.2rem}  cd-login-layout .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  cd-login-layout .login section{display:inline-flex;min-height:100vh;width:100vw}  cd-login-layout .login .list-inline{margin-bottom:0;margin-left:20%}  cd-login-layout .login a{color:#fff}  cd-login-layout .login a:hover{color:#adb5bd}@media screen and (min-width: 576px){  cd-login-layout .login .login-form,   cd-login-layout .login .branding-info{padding-top:30vh}}@media screen and (max-width: calc(768px - 1px)){  cd-login-layout .login .login-form{padding-top:10vh}  cd-login-layout .login .branding-info{padding-top:0}}"]}),f})();var Qh=o(74255);let z0=(()=>{class f{constructor(n,d,w){this.document=n,this.summaryService=d,this.cssHelper=w}init(){var n;this.url=null===(n=this.document.getElementById("cdFavicon"))||void 0===n?void 0:n.getAttribute("href"),this.sub=this.summaryService.subscribe(d=>{this.changeIcon(d.health_status)})}changeIcon(n){if(n===this.oldStatus)return;this.oldStatus=n;const d=this.document.getElementById("cdFavicon"),Ze=this.document.createElement("canvas");Ze.width=16,Ze.height=16;const Lt=Ze.getContext("2d"),Gt=this.document.createElement("img");Gt.src=this.url,Gt.onload=()=>{Lt.drawImage(Gt,0,0,16,16),Object.keys(Up).includes(n)&&(Lt.save(),Lt.globalCompositeOperation="destination-out",Lt.beginPath(),Lt.arc(Ze.width-4,4,6,0,2*Math.PI),Lt.fill(),Lt.restore(),Lt.beginPath(),Lt.arc(Ze.width-4,4,4,0,2*Math.PI),Lt.fillStyle=this.cssHelper.propertyValue(Up[n]),Lt.fill()),d.setAttribute("href",Ze.toDataURL("image/png"))}}ngOnDestroy(){var n;this.changeIcon(),null===(n=this.sub)||void 0===n||n.unsubscribe()}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(s.K0),e.LFG(Qh.J),e.LFG(gp.P))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})();var Xh=o(71099),W0=o(59193),q0=o(68307);class U1{constructor(y,n){this.count=y,this.source=n}call(y,n){return n.subscribe(new wE(y,this.count,this.source))}}class wE extends Ou.L{constructor(y,n,d){super(y),this.count=n,this.source=d}complete(){if(!this.isStopped){const{source:y,count:n}=this;if(0===n)return super.complete();n>-1&&(this.count=n-1),y.subscribe(this._unsubscribeAndRecycle())}}}let J0=(()=>{class f{constructor(n){this.http=n,this.url="ui-api/motd"}get(){return this.http.get(this.url)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Q0=(()=>{class f{constructor(n){this.motdService=n,this.motdSource=new Oc.X(null),this.localStorageKey="dashboard_motd_hidden",this.motd$=this.motdSource.asObservable(),this.subscription=(0,ws.of)(!0).pipe((0,ol.zg)(()=>this.motdService.get()),(0,sd.K)(d=>(ur.isFunction(d.preventDefault)&&d.preventDefault(),W0.E)),(0,q0.b)(d=>this.processResponse(d)),(0,$f.g)(6e4),function(f=-1){return y=>0===f?(0,W0.c)():y.lift(new U1(f<0?-1:f-1,y))}()).subscribe()}ngOnDestroy(){this.subscription.unsubscribe()}hide(){const n=this.motdSource.getValue();if(n){const d=`${n.severity}:${n.md5}`;switch(n.severity){case"info":localStorage.setItem(this.localStorageKey,d),sessionStorage.removeItem(this.localStorageKey);break;case"warning":sessionStorage.setItem(this.localStorageKey,d),localStorage.removeItem(this.localStorageKey)}}this.motdSource.next(null)}processResponse(n){const d=sessionStorage.getItem(this.localStorageKey)||localStorage.getItem(this.localStorageKey);let w=ur.isNull(d);if(!w&&n){const[re,Ze]=d.split(":");(re!==n.severity||Ze!==n.md5)&&(w=!0,sessionStorage.removeItem(this.localStorageKey),localStorage.removeItem(this.localStorageKey))}w&&this.motdSource.next(n)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(J0))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var j1=o(51907);function DE(f,y){1&f&&(e.TgZ(0,"div"),e.tHW(1,3),e._UZ(2,"strong"),e._UZ(3,"a",4),e.N_p(),e.qZA())}function X0(f,y){if(1&f&&(e.TgZ(0,"div"),e.tHW(1,5),e._UZ(2,"strong"),e._UZ(3,"a",4),e.N_p(),e.qZA()),2&f){const n=e.oxw(2);e.xp6(3),e.pQV(n.expirationDays),e.QtT(1)}}function K0(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(n),e.oxw().onDismissed()}),e.YNc(1,DE,4,0,"div",2),e.YNc(2,X0,4,1,"div",2),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("type",n.alertType)("showTitle",!1)("dismissible","danger"!==n.alertType),e.xp6(1),e.Q6J("ngIf",0===n.expirationDays),e.xp6(1),e.Q6J("ngIf",n.expirationDays>0)}}let xE=(()=>{class f{constructor(n,d){this.settingsService=n,this.authStorageService=d,this.displayNotification=!1}ngOnInit(){this.settingsService.getStandardSettings().subscribe(n=>{this.pwdExpirationSettings=new j1.G(n);const d=this.authStorageService.getPwdExpirationDate();d&&(this.expirationDays=this.getExpirationDays(d),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.displayNotification=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning1,this.authStorageService.isPwdDisplayedSource.next(this.displayNotification))})}ngOnDestroy(){this.authStorageService.isPwdDisplayedSource.next(!1)}getExpirationDays(n){const d=new Date,w=new Date(1e3*n);return Math.floor((w.valueOf()-d.valueOf())/864e5)}onDismissed(){this.authStorageService.isPwdDisplayedSource.next(!1),this.displayNotification=!1}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(nd.g),e.Y36(hi.j))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-pwd-expiration-notification"]],decls:1,vars:1,consts:function(){let y,n;return y="Your password will expire in " + "\ufffd#2\ufffd" + "less than 1" + "\ufffd/#2\ufffd" + " day. Click " + "\ufffd#3\ufffd" + "here" + "\ufffd/#3\ufffd" + " to change it now.",n="Your password will expire in " + "\ufffd#2\ufffd" + "" + "\ufffd0\ufffd" + "" + "\ufffd/#2\ufffd" + " day(s). Click " + "\ufffd#3\ufffd" + "here" + "\ufffd/#3\ufffd" + " to change it now.",[["class","no-margin-bottom","size","slim",3,"type","showTitle","dismissible","dismissed",4,"ngIf"],["size","slim",1,"no-margin-bottom",3,"type","showTitle","dismissible","dismissed"],[4,"ngIf"],y,["routerLink","/user-profile/edit",1,"alert-link"],n]},template:function(n,d){1&n&&e.YNc(0,K0,3,5,"cd-alert-panel",0),2&n&&e.Q6J("ngIf",d.displayNotification)},directives:[s.O5,De.G,tn.yS],styles:[".no-margin-bottom[_ngcontent-%COMP%]{margin-bottom:0}"]}),f})();function RE(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(n),e.oxw().onDismissed()}),e.TgZ(1,"div"),e.tHW(2,2),e._UZ(3,"a",3),e._UZ(4,"a",4),e.N_p(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("showTitle",!1)("type",n.notificationSeverity)("dismissible","danger"!==n.notificationSeverity)}}let NE=(()=>{class f{constructor(n,d,w,re){this.mgrModuleService=n,this.authStorageService=d,this.notificationService=w,this.telemetryNotificationService=re,this.displayNotification=!1,this.notificationSeverity="warning"}ngOnInit(){if(this.telemetryNotificationService.update.subscribe(n=>{this.displayNotification=n}),!this.isNotificationHidden()){const n=this.authStorageService.getPermissions().configOpt;gn().every(Object.values(n))&&this.mgrModuleService.getConfig("telemetry").subscribe(d=>{d.enabled||this.telemetryNotificationService.setVisibility(!0)})}}ngOnDestroy(){this.telemetryNotificationService.setVisibility(!1)}isNotificationHidden(){return"true"===localStorage.getItem("telemetry_notification_hidden")}onDismissed(){this.telemetryNotificationService.setVisibility(!1),localStorage.setItem("telemetry_notification_hidden","true"),this.notificationService.show(Ho.k.success,"Telemetry activation reminder muted","You can activate the module on the Telemetry configuration page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time.")}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Mt),e.Y36(hi.j),e.Y36(Zi.g),e.Y36(zh))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-telemetry-notification"]],decls:1,vars:1,consts:function(){let y;return y="The Ceph community needs your help to continue improving: please " + "\ufffd#3\ufffd" + "Activate" + "[\ufffd/#3\ufffd|\ufffd/#4\ufffd]" + " the " + "\ufffd#4\ufffd" + "Telemetry" + "[\ufffd/#3\ufffd|\ufffd/#4\ufffd]" + " module.",y=e.Zx4(y),[["class","no-margin-bottom","size","slim",3,"showTitle","type","dismissible","dismissed",4,"ngIf"],["size","slim",1,"no-margin-bottom",3,"showTitle","type","dismissible","dismissed"],y,["routerLink","/telemetry",1,"btn","activate-button","alert-link","activate-text"],["href","https://docs.ceph.com/en/latest/mgr/telemetry/"]]},template:function(n,d){1&n&&e.YNc(0,RE,5,3,"cd-alert-panel",0),2&n&&e.Q6J("ngIf",d.displayNotification)},directives:[s.O5,De.G,tn.yS],styles:[".no-margin-bottom[_ngcontent-%COMP%]{margin-bottom:0}.activate-button[_ngcontent-%COMP%]{background-color:#fcecba;border:#495057 solid .5px;border-radius:10%;padding:.1rem .4rem}.activate-text[_ngcontent-%COMP%]{color:#495057;font-weight:bold}"]}),f})();var B1=o(60793);function PE(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(n),e.oxw().onDismissed()}),e._UZ(1,"span",2),e.ALo(2,"sanitizeHtml"),e.qZA()}if(2&f){const n=e.oxw();e.Q6J("showTitle",!1)("type",n.motd.severity)("dismissible","danger"!==n.motd.severity),e.xp6(1),e.Q6J("innerHTML",e.lcZ(2,4,n.motd.message),e.oJD)}}let ey=(()=>{class f{constructor(n){this.motdNotificationService=n,this.motd=void 0}ngOnInit(){this.subscription=this.motdNotificationService.motd$.subscribe(n=>{this.motd=n})}ngOnDestroy(){this.subscription.unsubscribe()}onDismissed(){this.motdNotificationService.hide()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Q0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-motd"]],decls:1,vars:1,consts:[["size","slim",3,"showTitle","type","dismissible","dismissed",4,"ngIf"],["size","slim",3,"showTitle","type","dismissible","dismissed"],[3,"innerHTML"]],template:function(n,d){1&n&&e.YNc(0,PE,3,6,"cd-alert-panel",0),2&n&&e.Q6J("ngIf",d.motd)},directives:[s.O5,De.G],pipes:[B1.A],styles:[""]}),f})();class LE{constructor(y){if(this._maxConcurrency=y,this._queue=[],y<=0)throw new Error("semaphore must be initialized to a positive value");this._value=y}acquire(){const y=this.isLocked(),n=new Promise(d=>this._queue.push(d));return y||this._dispatch(),n}runExclusive(y){return function(f,y,n,d){return new(n||(n=Promise))(function(re,Ze){function Lt(fr){try{On(d.next(fr))}catch(hr){Ze(hr)}}function Gt(fr){try{On(d.throw(fr))}catch(hr){Ze(hr)}}function On(fr){fr.done?re(fr.value):function(re){return re instanceof n?re:new n(function(Ze){Ze(re)})}(fr.value).then(Lt,Gt)}On((d=d.apply(f,y||[])).next())})}(this,void 0,void 0,function*(){const[n,d]=yield this.acquire();try{return yield y(n)}finally{d()}})}isLocked(){return this._value<=0}release(){if(this._maxConcurrency>1)throw new Error("this method is unavailabel on semaphores with concurrency > 1; use the scoped release returned by acquire instead");this._currentReleaser&&(this._currentReleaser(),this._currentReleaser=void 0)}_dispatch(){const y=this._queue.shift();if(!y)return;let n=!1;this._currentReleaser=()=>{n||(n=!0,this._value++,this._dispatch())},y([this._value--,this._currentReleaser])}}class kE{constructor(){this._semaphore=new LE(1)}acquire(){return f=this,y=void 0,d=function*(){const[,y]=yield this._semaphore.acquire();return y},new((n=void 0)||(n=Promise))(function(re,Ze){function Lt(fr){try{On(d.next(fr))}catch(hr){Ze(hr)}}function Gt(fr){try{On(d.throw(fr))}catch(hr){Ze(hr)}}function On(fr){fr.done?re(fr.value):function(re){return re instanceof n?re:new n(function(Ze){Ze(re)})}(fr.value).then(Lt,Gt)}On((d=d.apply(f,y||[])).next())});var f,y,n,d}runExclusive(y){return this._semaphore.runExclusive(()=>y())}isLocked(){return this._semaphore.isLocked()}release(){this._semaphore.release()}}let $E=(()=>{class f{constructor(n,d){this.alertFormatter=n,this.prometheusService=d,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(gn().last(this.notifications)).subscribe(n=>this.handleNotifications(n),()=>this.backendFailure=!0)}handleNotifications(n){0!==n.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(gn().flatten(n.map(d=>this.formatNotification(d)))),this.notifications=this.notifications.concat(n))}formatNotification(n){return this.alertFormatter.convertToCustomAlerts(n.alerts).map(d=>this.alertFormatter.convertAlertToNotification(d))}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(_p),e.LFG(Tf))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var HE=o(68879),Y1=o(11971),eg=o(34863);const lm=function(f,y){return[f,y]},ny=function(f,y,n,d){return[f,y,n,d]};function Z1(f,y){if(1&f&&(e.TgZ(0,"div"),e.TgZ(1,"div",12),e.TgZ(2,"div",13),e.TgZ(3,"div",14),e.TgZ(4,"span",15),e._UZ(5,"i",7),e._UZ(6,"i",7),e.qZA(),e.qZA(),e.TgZ(7,"div",16),e.TgZ(8,"div",17),e.TgZ(9,"h6",18),e._uU(10),e.qZA(),e.TgZ(11,"div",19),e._UZ(12,"ngb-progressbar",20),e.qZA(),e.TgZ(13,"p",21),e.TgZ(14,"small",22),e._uU(15),e.ALo(16,"cdDate"),e.qZA(),e.TgZ(17,"span",23),e._uU(18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e._UZ(19,"hr"),e.qZA()),2&f){const n=y.$implicit,d=e.oxw(2);e.xp6(4),e.Q6J("ngClass",e.WLB(11,lm,d.icons.stack,d.icons.large2x)),e.xp6(1),e.Q6J("ngClass",e.WLB(14,lm,d.icons.stack2x,d.icons.circle)),e.xp6(1),e.Q6J("ngClass",e.l5B(17,ny,d.icons.stack1x,d.icons.spinner,d.icons.spin,d.icons.inverse)),e.xp6(4),e.Oqu(n.description),e.xp6(2),e.Q6J("value",null==n?null:n.progress)("striped",!0)("animated",!0),e.xp6(3),e.hij(" ",e.lcZ(16,9,n.begin_time)," "),e.xp6(3),e.hij(" ",n.progress||0," % ")}}function ry(f,y){if(1&f&&e.YNc(0,Z1,20,22,"div",11),2&f){const n=e.oxw();e.Q6J("ngForOf",n.executingTasks)("ngForTrackBy",n.trackByFn)}}function iy(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"small"),e.ynx(2),e.SDv(3,35),e.BQk(),e._uU(4),e.ALo(5,"duration"),e.qZA(),e._UZ(6,"br"),e.BQk()),2&f){const n=e.oxw().$implicit;e.xp6(4),e.hij(" ",e.lcZ(5,1,n.duration)," ")}}const oy=function(f,y,n){return[f,y,n]},tg=function(f){return[f]};function V1(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"div",29),e.TgZ(2,"div",13),e.TgZ(3,"div",14),e.TgZ(4,"span",7),e._UZ(5,"i",7),e._UZ(6,"i",7),e.qZA(),e.qZA(),e.TgZ(7,"div",30),e.TgZ(8,"div",17),e.TgZ(9,"button",31),e.NdJ("click",function(w){const Ze=e.CHM(n).index;return e.oxw(3).remove(Ze),w.stopPropagation()}),e._UZ(10,"i",7),e.qZA(),e.TgZ(11,"h6",18),e._uU(12),e.qZA(),e._UZ(13,"p",32),e.TgZ(14,"p",21),e.YNc(15,iy,7,3,"ng-container",24),e.TgZ(16,"small",33),e.ALo(17,"cdDate"),e._uU(18),e.ALo(19,"relativeDate"),e.qZA(),e._UZ(20,"i",34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e._UZ(21,"hr"),e.qZA()}if(2&f){const n=y.$implicit,d=e.oxw(3);e.Q6J("ngClass",n.borderClass),e.xp6(4),e.Q6J("ngClass",e.kEZ(16,oy,d.icons.stack,d.icons.large2x,n.textClass)),e.xp6(1),e.Q6J("ngClass",e.WLB(20,lm,d.icons.circle,d.icons.stack2x)),e.xp6(1),e.Q6J("ngClass",e.kEZ(23,oy,d.icons.stack1x,d.icons.inverse,n.iconClass)),e.xp6(4),e.Q6J("ngClass",e.VKq(27,tg,d.icons.trash)),e.xp6(2),e.Oqu(n.title),e.xp6(1),e.Q6J("innerHtml",n.message,e.oJD),e.xp6(2),e.Q6J("ngIf",n.duration),e.xp6(1),e.Q6J("title",e.lcZ(17,12,n.timestamp)),e.xp6(2),e.Oqu(e.lcZ(19,14,n.timestamp)),e.xp6(2),e.Q6J("ngClass",e.VKq(29,tg,n.applicationClass))("title",n.application)}}function sy(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"button",25),e.NdJ("click",function(w){return e.CHM(n),e.oxw(2).removeAll(),w.stopPropagation()}),e._UZ(2,"i",26),e._uU(3," \xa0 "),e.ynx(4),e.SDv(5,27),e.BQk(),e.qZA(),e._UZ(6,"hr"),e.YNc(7,V1,22,31,"div",28),e.BQk()}if(2&f){const n=e.oxw(2);e.xp6(2),e.Q6J("ngClass",e.VKq(2,tg,n.icons.trash)),e.xp6(5),e.Q6J("ngForOf",n.notifications)}}function G1(f,y){if(1&f&&e.YNc(0,sy,8,4,"ng-container",24),2&f){const n=e.oxw();e.Q6J("ngIf",n.notifications.length>0)}}function UE(f,y){1&f&&(e.TgZ(0,"div"),e.TgZ(1,"div",36),e.SDv(2,37),e.qZA(),e.qZA())}function jE(f,y){if(1&f&&e.YNc(0,UE,3,0,"div",24),2&f){const n=e.oxw();e.Q6J("ngIf",0===n.notifications.length&&0===n.executingTasks.length)}}function z1(f,y){1&f&&e.GkF(0)}function BE(f,y){1&f&&e.GkF(0)}function ay(f,y){1&f&&e.GkF(0)}let ly=(()=>{class f{constructor(n,d,w,re,Ze,Lt,Gt,On){this.notificationService=n,this.summaryService=d,this.taskMessageService=w,this.prometheusNotificationService=re,this.authStorageService=Ze,this.prometheusAlertService=Lt,this.ngZone=Gt,this.cdRef=On,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new Vl.w,this.icons=eo.P,this.last_task="",this.mutex=new kE,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const n=this.authStorageService.getPermissions();n.prometheus.read&&n.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(d=>{this.notifications=gn().orderBy(d,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(d=>{this.isSidebarOpened=!d&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(d=>{this._handleTasks(d.executing_tasks),this.mutex.acquire().then(w=>{gn().filter(d.finished_tasks,re=>!this.last_task||In()(re.end_time).isAfter(this.last_task)).forEach(re=>{const Ze=this.notificationService.finishedTaskToNotification(re,re.success),Lt=new Qf.e(Ze);Lt.timestamp=re.end_time,Lt.duration=re.duration,(!this.last_task||In()(re.end_time).isAfter(this.last_task))&&(this.last_task=re.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(Lt)}),this.cdRef.detectChanges(),w()})}))}_handleTasks(n){for(const d of n)d.description=this.taskMessageService.getRunningTitle(d);this.executingTasks=n}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(n){this.notificationService.remove(n)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(n){return n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Zi.g),e.Y36(Qh.J),e.Y36(HE.p),e.Y36($E),e.Y36(hi.j),e.Y36(Cf),e.Y36(e.R0b),e.Y36(e.sBO))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-notifications-sidebar"]],hostVars:2,hostBindings:function(n,d){2&n&&e.ekj("active",d.isSidebarOpened)},decls:18,vars:6,consts:function(){let y,n,d,w,re;return y="Tasks and Notifications",n="Clear notifications",d="Remove notification",w="Duration:",re="There are no notifications.",[["tasksTpl",""],["notificationsTpl",""],["emptyTpl",""],[1,"card",3,"clickOutsideEnabled","clickOutside"],[1,"card-header"],y,["tabindex","-1","type","button",1,"close","float-right",3,"click"],[3,"ngClass"],[3,"options"],[1,"card-body"],[4,"ngTemplateOutlet"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"card","tc_task","border-0"],[1,"row","no-gutters"],[1,"col-md-2","text-center"],[1,"text-info",3,"ngClass"],[1,"col-md-9"],[1,"card-body","p-1"],[1,"card-title","bold"],[1,"mb-1"],["type","info",3,"value","striped","animated"],[1,"card-text","text-muted"],[1,"date","float-left"],[1,"float-right"],[4,"ngIf"],["type","button",1,"btn","btn-light","btn-block",3,"click"],["aria-hidden","true",3,"ngClass"],n,[3,"ngClass",4,"ngFor","ngForOf"],[1,"card","tc_notification","border-0"],[1,"col-md-10"],["title",d,1,"btn","btn-link","float-right","mt-0","pt-0",3,"click"],[1,"card-text",3,"innerHtml"],[1,"date",3,"title"],[1,"float-right","custom-icon",3,"ngClass","title"],w,[1,"message","text-center"],re]},template:function(n,d){if(1&n&&(e.YNc(0,ry,1,2,"ng-template",null,0,e.W1O),e.YNc(2,G1,1,1,"ng-template",null,1,e.W1O),e.YNc(4,jE,1,1,"ng-template",null,2,e.W1O),e.TgZ(6,"div",3),e.NdJ("clickOutside",function(){return d.closeSidebar()}),e.TgZ(7,"div",4),e.ynx(8),e.SDv(9,5),e.BQk(),e.TgZ(10,"button",6),e.NdJ("click",function(){return d.closeSidebar()}),e.TgZ(11,"span"),e._UZ(12,"i",7),e.qZA(),e.qZA(),e.qZA(),e.TgZ(13,"ngx-simplebar",8),e.TgZ(14,"div",9),e.YNc(15,z1,1,0,"ng-container",10),e.YNc(16,BE,1,0,"ng-container",10),e.YNc(17,ay,1,0,"ng-container",10),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(1),re=e.MAs(3),Ze=e.MAs(5);e.xp6(6),e.Q6J("clickOutsideEnabled",d.isSidebarOpened),e.xp6(6),e.Q6J("ngClass",d.icons.close),e.xp6(1),e.Q6J("options",d.simplebar),e.xp6(2),e.Q6J("ngTemplateOutlet",w),e.xp6(1),e.Q6J("ngTemplateOutlet",re),e.xp6(1),e.Q6J("ngTemplateOutlet",Ze)}},directives:[Y1._,As.o,s.mk,eg.M,s.tP,s.sg,Br.Ly,s.O5],pipes:[bi.N,X.h,W_.u],styles:["[_nghost-%COMP%]{bottom:10px;max-width:90vw;position:fixed;right:-350px;top:53px;transition:all .6s;width:350px;z-index:9}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}.card-body[_ngcontent-%COMP%]{padding-left:0;padding-right:5px;padding-top:3px}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{background-color:#e9ecef;color:#6c757d;font-size:1rem;padding:5px 12px}.btn-block[_ngcontent-%COMP%]{width:98%}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0;padding-bottom:1rem;padding-top:1rem}hr[_ngcontent-%COMP%]{margin-bottom:2px;margin-top:2px}.card-text[_ngcontent-%COMP%]{margin-right:15px}"],changeDetection:0}),f})();function cy(f,y){1&f&&e._UZ(0,"span",5)}const uy=function(f){return{running:f}},dy=function(f){return[f]};let IC=(()=>{class f{constructor(n,d){this.notificationService=n,this.summaryService=d,this.icons=eo.P,this.hasRunningTasks=!1,this.hasNotifications=!1,this.subs=new Vl.w}ngOnInit(){this.subs.add(this.summaryService.subscribe(n=>{this.hasRunningTasks=n.executing_tasks.length>0})),this.subs.add(this.notificationService.data$.subscribe(n=>{this.hasNotifications=n.length>0}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Zi.g),e.Y36(Qh.J))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-notifications"]],decls:5,vars:7,consts:function(){let y,n;return y="Tasks and Notifications",n="Tasks and Notifications",[["title",y,3,"ngClass","click"],[3,"ngClass"],["class","dot",4,"ngIf"],[1,"d-md-none"],n,[1,"dot"]]},template:function(n,d){1&n&&(e.TgZ(0,"a",0),e.NdJ("click",function(){return d.toggleSidebar()}),e._UZ(1,"i",1),e.YNc(2,cy,1,0,"span",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA()),2&n&&(e.Q6J("ngClass",e.VKq(3,uy,d.hasRunningTasks)),e.xp6(1),e.Q6J("ngClass",e.VKq(5,dy,d.icons.bell)),e.xp6(1),e.Q6J("ngIf",d.hasNotifications))},directives:[s.mk,s.O5],styles:[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}a[_ngcontent-%COMP%]   .dot[_ngcontent-%COMP%]{background-color:#2b99a8;border:2px solid #374249;border-radius:50%;height:11px;position:absolute;right:17px;top:10px;width:10px}a[_ngcontent-%COMP%]:hover   .dot[_ngcontent-%COMP%]{background-color:#fff;border-color:#2b99a8}"]}),f})(),YE=(()=>{class f{constructor(n){this.http=n,this.baseUIURL="api/feedback"}isKeyExist(){return this.http.get("ui-api/feedback/api_key/exist")}createIssue(n,d,w,re,Ze){return this.http.post("api/feedback",{project:n,tracker:d,subject:w,description:re,api_key:Ze},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function Kh(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"cd-alert-panel",30),e.tHW(1,31),e.TgZ(2,"a",32),e.NdJ("click",function(){return e.CHM(n),e.oxw().redirect()}),e.qZA(),e.N_p(),e.qZA()}}function LC(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,37),e.qZA())}function W1(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,38),e.qZA())}function cm(f,y){if(1&f&&(e.TgZ(0,"div",9),e.TgZ(1,"label",33),e.SDv(2,34),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",35),e.YNc(5,LC,2,0,"span",17),e.YNc(6,W1,2,0,"span",17),e.qZA(),e.qZA()),2&f){const n=e.oxw(),d=e.MAs(5);e.xp6(5),e.Q6J("ngIf",n.feedbackForm.showError("api_key",d,"required")),e.xp6(1),e.Q6J("ngIf",n.feedbackForm.showError("api_key",d,"invalidApiKey"))}}function ZE(f,y){if(1&f&&(e.TgZ(0,"option",39),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.Oqu(n)}}function e_(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,40),e.qZA())}function VE(f,y){if(1&f&&(e.TgZ(0,"option",39),e._uU(1),e.qZA()),2&f){const n=y.$implicit;e.Q6J("value",n),e.xp6(1),e.Oqu(n)}}function FC(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,41),e.qZA())}function GE(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,42),e.qZA())}function tp(f,y){1&f&&(e.TgZ(0,"span",36),e.SDv(1,43),e.qZA())}let fy=(()=>{class f{constructor(n,d,w,re,Ze,Lt){this.feedbackService=n,this.activeModal=d,this.actionLabels=w,this.secondaryModal=re,this.notificationService=Ze,this.router=Lt,this.title="Feedback",this.project=["dashboard","block","objects","file_system","ceph_manager","orchestrator","ceph_volume","core_ceph"],this.tracker=["bug","feature"],this.isAPIKeySet=!1,this.isFeedbackEnabled=!0}ngOnInit(){this.createForm(),this.keySub=this.feedbackService.isKeyExist().subscribe({next:n=>{this.isAPIKeySet=n,this.isAPIKeySet&&this.feedbackForm.get("api_key").clearValidators()},error:()=>{this.isFeedbackEnabled=!1,this.feedbackForm.disable()}})}createForm(){this.feedbackForm=new xt.d({project:new Hn.NI("",Hn.kI.required),tracker:new Hn.NI("",Hn.kI.required),subject:new Hn.NI("",Hn.kI.required),description:new Hn.NI("",Hn.kI.required),api_key:new Hn.NI("",Hn.kI.required)})}ngOnDestroy(){this.keySub.unsubscribe()}onSubmit(){this.feedbackService.createIssue(this.feedbackForm.controls.project.value,this.feedbackForm.controls.tracker.value,this.feedbackForm.controls.subject.value,this.feedbackForm.controls.description.value,this.feedbackForm.controls.api_key.value).subscribe({next:n=>{this.notificationService.show(Ho.k.success,"Issue successfully created on Ceph Issue tracker",`Go to the tracker: <a href="https://tracker.ceph.com/issues/${n.message.issue.id}" target="_blank"> ${n.message.issue.id} </a>`)},error:()=>{this.feedbackForm.get("api_key").setErrors({invalidApiKey:!0}),this.feedbackForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}redirect(){this.activeModal.close(),this.router.navigate(["/mgr-modules"])}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(YE),e.Y36(Br.Kz),e.Y36(uo.p4),e.Y36(Br.FF),e.Y36(Zi.g),e.Y36(tn.F0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-feedback"]],decls:42,vars:12,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o;return y="Report an issue",n="Project name",d="-- Select a project --",w="Tracker",re="-- Select a tracker --",Ze="Subject",Lt="Description",Gt="Feedback module is not enabled. Please enable it from " + "\ufffd#2\ufffd" + "Cluster-> Manager Modules." + "\ufffd/#2\ufffd" + "",On="Ceph Tracker API Key",fr="Ceph Tracker API key is required.",hr="Ceph Tracker API key is invalid.",Jr="Project name is required.",$i="Tracker name is required.",bo="Subject is required.",_o="Description is required.",[[3,"modalRef"],[1,"modal-title"],y,[1,"modal-content"],["name","feedbackForm",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],["type","error",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","project",1,"cd-col-form-label","required"],n,[1,"cd-col-form-input"],["id","project","formControlName","project",1,"form-control"],["ngValue",""],d,[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["for","tracker",1,"cd-col-form-label","required"],w,["id","tracker","formControlName","tracker",1,"form-control"],re,["for","subject",1,"cd-col-form-label","required"],Ze,["id","subject","type","text","formControlName","subject","placeholder","Add issue title",1,"form-control"],["for","description",1,"cd-col-form-label","required"],Lt,["id","description","type","text","formControlName","description","placeholder","Add issue description",1,"form-control"],[1,"modal-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["type","error"],Gt,[3,"click"],["for","api_key",1,"cd-col-form-label","required"],On,["id","api_key","type","password","formControlName","api_key","placeholder","Add Ceph tracker API key",1,"form-control"],[1,"invalid-feedback"],fr,hr,[3,"value"],Jr,$i,bo,_o]},template:function(n,d){if(1&n&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"div",1),e.SDv(2,2),e.qZA(),e.TgZ(3,"div",3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,Kh,3,0,"cd-alert-panel",7),e.YNc(8,cm,7,2,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"label",10),e.SDv(11,11),e.qZA(),e.TgZ(12,"div",12),e.TgZ(13,"select",13),e.TgZ(14,"option",14),e.SDv(15,15),e.qZA(),e.YNc(16,ZE,2,2,"option",16),e.qZA(),e.YNc(17,e_,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(18,"div",9),e.TgZ(19,"label",18),e.SDv(20,19),e.qZA(),e.TgZ(21,"div",12),e.TgZ(22,"select",20),e.TgZ(23,"option",14),e.SDv(24,21),e.qZA(),e.YNc(25,VE,2,2,"option",16),e.qZA(),e.YNc(26,FC,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(27,"div",9),e.TgZ(28,"label",22),e.SDv(29,23),e.qZA(),e.TgZ(30,"div",12),e._UZ(31,"input",24),e.YNc(32,GE,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(33,"div",9),e.TgZ(34,"label",25),e.SDv(35,26),e.qZA(),e.TgZ(36,"div",12),e.TgZ(37,"textarea",27),e._uU(38,"            "),e.qZA(),e.YNc(39,tp,2,0,"span",17),e.qZA(),e.qZA(),e.qZA(),e.TgZ(40,"div",28),e.TgZ(41,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return d.onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const w=e.MAs(5);e.Q6J("modalRef",d.activeModal),e.xp6(4),e.Q6J("formGroup",d.feedbackForm),e.xp6(3),e.Q6J("ngIf",!d.isFeedbackEnabled),e.xp6(1),e.Q6J("ngIf",!d.isAPIKeySet),e.xp6(8),e.Q6J("ngForOf",d.project),e.xp6(1),e.Q6J("ngIf",d.feedbackForm.showError("project",w,"required")),e.xp6(8),e.Q6J("ngForOf",d.tracker),e.xp6(1),e.Q6J("ngIf",d.feedbackForm.showError("tracker",w,"required")),e.xp6(6),e.Q6J("ngIf",d.feedbackForm.showError("subject",w,"required")),e.xp6(7),e.Q6J("ngIf",d.feedbackForm.showError("description",w,"required")),e.xp6(2),e.Q6J("form",d.feedbackForm)("submitText",d.actionLabels.SUBMIT)}},directives:[nl.z,Hn._Y,Hn.JL,Gn.V,Hn.sg,s.O5,kn.P,As.o,Hn.EJ,zn.b,Hn.JJ,Hn.u,Hn.YN,Hn.Kr,s.sg,Hn.Fj,jr.p,De.G],styles:[""]}),f})();var kC=o(97057);let um=(()=>{class f{constructor(n,d,w,re){this.activeModal=n,this.summaryService=d,this.userService=w,this.authStorageService=re,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.projectConstants=uo.$x,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(n=>{const d=n.version.replace("ceph version ","").split(" ");this.hostAddr=n.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=d[0],this.versionHash=d[1],this.versionName=d.slice(2,d.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const n={};n.user=localStorage.getItem("dashboard_username"),n.role="user",this.userPermission.read&&this.userService.get(n.user).subscribe(w=>{n.role=w.roles});const d=(0,kC.qY)();return n.browserName=d&&d.name?d.name:"Not detected",n.browserVersion=d&&d.version?d.version:"Not detected",n.browserOS=d&&d.os?d.os:"Not detected",n}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.Kz),e.Y36(Qh.J),e.Y36($1.K),e.Y36(hi.j))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-about"]],decls:46,vars:13,consts:[[1,"about-container"],[1,"modal-header"],["type","button","aria-label","Close",1,"close","float-right",3,"click"],["aria-hidden","true"],[1,"modal-body"],["src","assets/Ceph_Ceph_Logo_with_text_red_white.svg",1,"ceph-logo",3,"alt"],[1,"product-versions"],[1,"modal-footer"],[1,"text-left"]],template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"button",2),e.NdJ("click",function(){return d.activeModal.close()}),e.TgZ(3,"span",3),e._uU(4,"\xd7"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(5,"div",4),e._UZ(6,"img",5),e.TgZ(7,"h3"),e.TgZ(8,"strong"),e._uU(9),e.qZA(),e.qZA(),e.TgZ(10,"div",6),e.TgZ(11,"strong"),e._uU(12,"Version"),e.qZA(),e._UZ(13,"br"),e._uU(14),e._UZ(15,"br"),e._uU(16),e.qZA(),e._UZ(17,"br"),e.TgZ(18,"dl"),e.TgZ(19,"dt"),e._uU(20,"Ceph Manager"),e.qZA(),e.TgZ(21,"dd"),e._uU(22),e.qZA(),e.TgZ(23,"dt"),e._uU(24,"User"),e.qZA(),e.TgZ(25,"dd"),e._uU(26),e.qZA(),e.TgZ(27,"dt"),e._uU(28,"User Role"),e.qZA(),e.TgZ(29,"dd"),e._uU(30),e.qZA(),e.TgZ(31,"dt"),e._uU(32,"Browser"),e.qZA(),e.TgZ(33,"dd"),e._uU(34),e.qZA(),e.TgZ(35,"dt"),e._uU(36,"Browser Version"),e.qZA(),e.TgZ(37,"dd"),e._uU(38),e.qZA(),e.TgZ(39,"dt"),e._uU(40,"Browser OS"),e.qZA(),e.TgZ(41,"dd"),e._uU(42),e.qZA(),e.qZA(),e.qZA(),e.TgZ(43,"div",7),e.TgZ(44,"div",8),e._uU(45),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(6),e.s9C("alt",d.projectConstants.organization),e.xp6(3),e.Oqu(d.projectConstants.projectName),e.xp6(5),e.AsE(" ",d.versionNumber," ",d.versionHash," "),e.xp6(2),e.hij(" ",d.versionName," "),e.xp6(6),e.Oqu(d.hostAddr),e.xp6(4),e.Oqu(d.modalVariables.user),e.xp6(4),e.Oqu(d.modalVariables.role),e.xp6(4),e.Oqu(d.modalVariables.browserName),e.xp6(4),e.Oqu(d.modalVariables.browserVersion),e.xp6(4),e.Oqu(d.modalVariables.browserOS),e.xp6(3),e.AsE(" ",d.projectConstants.copyright," ",d.projectConstants.license," "))},directives:[As.o],styles:[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.e82dd79127290ddbe8cb.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:0}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{margin-bottom:30px;width:25%}.modal-footer[_ngcontent-%COMP%]{border-top:0;display:block;padding:15px 80px 35px}"]}),f})();const zE=function(f){return[f]},WE=function(f){return{disabled:f}};let $C=(()=>{class f{constructor(n,d){this.modalService=n,this.docService=d,this.icons=eo.P}ngOnInit(){this.docService.subscribeOnce("dashboard",n=>{this.docsUrl=n})}openAboutModal(){this.modalRef=this.modalService.show(um,null,{size:"lg"})}openFeedbackModal(){this.bsModalRef=this.modalService.show(fy,null,{size:"lg"})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(na.Z),e.Y36(EE.R))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-dashboard-help"]],decls:14,vars:7,consts:function(){let y,n,d,w,re,Ze;return y="Help",n="Help",d="documentation",w="API",re="About",Ze="Report an issue...",[["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",y],[3,"ngClass"],[1,"d-md-none"],n,["ngbDropdownMenu",""],["ngbDropdownItem","","target","_blank",1,"text-capitalize",3,"ngClass","href"],d,["ngbDropdownItem","","routerLink","/api-docs","target","_blank"],w,["ngbDropdownItem","",3,"click"],re,Ze]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._UZ(2,"i",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"a",6),e.SDv(7,7),e.qZA(),e.TgZ(8,"a",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"button",10),e.NdJ("click",function(){return d.openAboutModal()}),e.SDv(11,11),e.qZA(),e.TgZ(12,"button",10),e.NdJ("click",function(){return d.openFeedbackModal()}),e.SDv(13,12),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(2),e.Q6J("ngClass",e.VKq(3,zE,d.icons.questionCircle)),e.xp6(4),e.s9C("href",d.docsUrl,e.LSH),e.Q6J("ngClass",e.VKq(5,WE,!d.docsUrl)))},directives:[Br.jt,Br.iD,s.mk,Br.Vi,Br.TH,tn.yS,As.o],styles:[""]}),f})();function qE(f,y){1&f&&(e.TgZ(0,"button",9),e.SDv(1,10),e.qZA())}function JE(f,y){1&f&&(e.TgZ(0,"button",11),e.SDv(1,12),e.qZA())}const QE=function(f){return[f]};function q1(f,y){if(1&f&&(e.TgZ(0,"div",1),e.TgZ(1,"a",2),e._UZ(2,"i",3),e.TgZ(3,"span",4),e.SDv(4,5),e.qZA(),e.qZA(),e.TgZ(5,"div",6),e.YNc(6,qE,2,0,"button",7),e.YNc(7,JE,2,0,"button",8),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(3,QE,n.icons.deepCheck)),e.xp6(4),e.Q6J("ngIf",n.userPermission.read),e.xp6(1),e.Q6J("ngIf",n.configOptPermission.read)}}let py=(()=>{class f{constructor(n){this.authStorageService=n,this.icons=eo.P;const d=this.authStorageService.getPermissions();this.userPermission=d.user,this.configOptPermission=d.configOpt}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-administration"]],decls:1,vars:1,consts:function(){let y,n,d,w;return y="Dashboard Settings",n="Dashboard Settings",d="User management",w="Telemetry configuration",[["ngbDropdown","","placement","bottom-right",4,"ngIf"],["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",y,1,"dropdown-toggle"],[3,"ngClass"],[1,"d-md-none"],n,["ngbDropdownMenu",""],["ngbDropdownItem","","routerLink","/user-management",4,"ngIf"],["ngbDropdownItem","","routerLink","/telemetry",4,"ngIf"],["ngbDropdownItem","","routerLink","/user-management"],d,["ngbDropdownItem","","routerLink","/telemetry"],w]},template:function(n,d){1&n&&e.YNc(0,q1,8,5,"div",0),2&n&&e.Q6J("ngIf",d.userPermission.read)},directives:[s.O5,Br.jt,Br.iD,s.mk,Br.Vi,As.o,Br.TH,tn.rH],styles:[""]}),f})();const dm=function(f){return[f]};function hy(f,y){if(1&f&&(e.TgZ(0,"button",12),e._UZ(1,"i",2),e.TgZ(2,"span"),e.SDv(3,13),e.qZA(),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,dm,n.icons.lock))}}let XE=(()=>{class f{constructor(n,d){this.authStorageService=n,this.authService=d,this.icons=eo.P}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(om.e))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-identity"]],decls:15,vars:8,consts:function(){let y,n,d,w,re;return y="Logged in user",n="Logged in user",d="Signed in as " + "\ufffd#8\ufffd" + "" + "\ufffd0\ufffd" + "" + "\ufffd/#8\ufffd" + "",w="Sign out",re="Change password",[["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",y],[3,"ngClass"],[1,"d-md-none"],n,["ngbDropdownMenu",""],["ngbDropdownItem","","disabled",""],d,[1,"dropdown-divider"],["ngbDropdownItem","","routerLink","/user-profile/edit",4,"ngIf"],["ngbDropdownItem","",3,"click"],w,["ngbDropdownItem","","routerLink","/user-profile/edit"],re]},template:function(n,d){1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._UZ(2,"i",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"button",6),e.tHW(7,7),e._UZ(8,"strong"),e.N_p(),e.qZA(),e._UZ(9,"li",8),e.YNc(10,hy,4,3,"button",9),e.TgZ(11,"button",10),e.NdJ("click",function(){return d.logout()}),e._UZ(12,"i",2),e.TgZ(13,"span"),e.SDv(14,11),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(2),e.Q6J("ngClass",e.VKq(4,dm,d.icons.user)),e.xp6(6),e.pQV(d.username),e.QtT(7),e.xp6(2),e.Q6J("ngIf",!d.sso),e.xp6(2),e.Q6J("ngClass",e.VKq(6,dm,d.icons.signOut)))},directives:[Br.jt,Br.iD,s.mk,Br.Vi,As.o,Br.TH,s.O5,tn.rH],styles:[""]}),f})();function HC(f,y){1&f&&e.GkF(0)}function KE(f,y){1&f&&e.GkF(0)}function eT(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"li",22),e._UZ(1,"cd-language-selector",23),e.qZA(),e.TgZ(2,"li",22),e.TgZ(3,"cd-notifications",24),e.NdJ("click",function(){return e.CHM(n),e.oxw().toggleRightSidebar()}),e.qZA(),e.qZA(),e.TgZ(4,"li",22),e._UZ(5,"cd-dashboard-help",23),e.qZA(),e.TgZ(6,"li",22),e._UZ(7,"cd-administration",23),e.qZA(),e.TgZ(8,"li",22),e._UZ(9,"cd-identity",23),e.qZA()}}function tT(f,y){1&f&&(e.TgZ(0,"li",50),e.TgZ(1,"a",51),e.SDv(2,52),e.qZA(),e.qZA())}function _y(f,y){1&f&&(e.TgZ(0,"li",53),e.TgZ(1,"a",54),e.SDv(2,55),e.qZA(),e.qZA())}function gy(f,y){1&f&&(e.TgZ(0,"li",56),e.TgZ(1,"a",57),e.SDv(2,58),e.qZA(),e.qZA())}function my(f,y){1&f&&(e.TgZ(0,"li",59),e.TgZ(1,"a",60),e.SDv(2,61),e.qZA(),e.qZA())}function nT(f,y){1&f&&(e.TgZ(0,"li",62),e.TgZ(1,"a",63),e.SDv(2,64),e.qZA(),e.qZA())}function rT(f,y){1&f&&(e.TgZ(0,"li",65),e.TgZ(1,"a",66),e.SDv(2,67),e.qZA(),e.qZA())}function vy(f,y){1&f&&(e.TgZ(0,"li",68),e.TgZ(1,"a",69),e.SDv(2,70),e.qZA(),e.qZA())}function fm(f,y){1&f&&(e.TgZ(0,"li",71),e.TgZ(1,"a",72),e.SDv(2,73),e.qZA(),e.qZA())}function iT(f,y){1&f&&(e.TgZ(0,"li",74),e.TgZ(1,"a",75),e.SDv(2,76),e.qZA(),e.qZA())}function yy(f,y){if(1&f&&(e.TgZ(0,"small",81),e._uU(1),e.qZA()),2&f){const n=e.oxw(5);e.xp6(1),e.Oqu(n.prometheusAlertService.activeAlerts)}}function pm(f,y){if(1&f&&(e.TgZ(0,"li",77),e.TgZ(1,"a",78),e.ynx(2),e.SDv(3,79),e.BQk(),e.YNc(4,yy,2,1,"small",80),e.qZA(),e.qZA()),2&f){const n=e.oxw(4);e.xp6(4),e.Q6J("ngIf",n.prometheusAlertService.activeAlerts>0)}}function hm(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"li",36),e.TgZ(1,"a",37),e.NdJ("click",function(){return e.CHM(n),e.oxw(3).toggleSubMenu("cluster")}),e.ynx(2),e.SDv(3,38),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.YNc(5,tT,3,0,"li",40),e.YNc(6,_y,3,0,"li",41),e.YNc(7,gy,3,0,"li",42),e.YNc(8,my,3,0,"li",43),e.YNc(9,nT,3,0,"li",44),e.YNc(10,rT,3,0,"li",45),e.YNc(11,vy,3,0,"li",46),e.YNc(12,fm,3,0,"li",47),e.YNc(13,iT,3,0,"li",48),e.YNc(14,pm,5,1,"li",49),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.uIk("aria-expanded","cluster"==n.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","cluster"!==n.displayedSubMenu),e.xp6(1),e.Q6J("ngIf",n.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",n.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",n.permissions.monitor.read),e.xp6(1),e.Q6J("ngIf",n.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",n.permissions.osd.read),e.xp6(1),e.Q6J("ngIf",n.permissions.configOpt.read),e.xp6(1),e.Q6J("ngIf",n.permissions.osd.read),e.xp6(1),e.Q6J("ngIf",n.permissions.configOpt.read),e.xp6(1),e.Q6J("ngIf",n.permissions.log.read),e.xp6(1),e.Q6J("ngIf",n.permissions.prometheus.read)}}function ng(f,y){1&f&&(e.TgZ(0,"li",82),e.TgZ(1,"a",83),e.SDv(2,84),e.qZA(),e.qZA())}function oT(f,y){1&f&&(e.TgZ(0,"li",91),e.TgZ(1,"a",92),e.SDv(2,93),e.qZA(),e.qZA())}function sT(f,y){if(1&f&&(e.TgZ(0,"small",98),e._uU(1),e.qZA()),2&f){const n=e.oxw(5);e.xp6(1),e.Oqu(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)}}function UC(f,y){if(1&f&&(e.TgZ(0,"small",81),e._uU(1),e.qZA()),2&f){const n=e.oxw(5);e.xp6(1),e.Oqu(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)}}function aT(f,y){if(1&f&&(e.TgZ(0,"li",94),e.TgZ(1,"a",95),e.ynx(2),e.SDv(3,96),e.BQk(),e.YNc(4,sT,2,1,"small",97),e.YNc(5,UC,2,1,"small",80),e.qZA(),e.qZA()),2&f){const n=e.oxw(4);e.xp6(4),e.Q6J("ngIf",0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),e.xp6(1),e.Q6J("ngIf",0!==(null==n.summaryData||null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))}}function lT(f,y){1&f&&(e.TgZ(0,"li",99),e.TgZ(1,"a",100),e.SDv(2,101),e.qZA(),e.qZA())}function cT(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"li",85),e.TgZ(1,"a",86),e.NdJ("click",function(){return e.CHM(n),e.oxw(3).toggleSubMenu("block")}),e.ynx(2),e.SDv(3,87),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.YNc(5,oT,3,0,"li",88),e.YNc(6,aT,6,2,"li",89),e.YNc(7,lT,3,0,"li",90),e.qZA(),e.qZA()}if(2&f){const n=e.oxw().ngIf,d=e.oxw(2);e.xp6(1),e.Q6J("ngStyle",d.blockHealthColor()),e.uIk("aria-expanded","block"==d.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","block"!==d.displayedSubMenu),e.xp6(1),e.Q6J("ngIf",d.permissions.rbdImage.read&&n.rbd),e.xp6(1),e.Q6J("ngIf",d.permissions.rbdMirroring.read&&n.mirroring),e.xp6(1),e.Q6J("ngIf",d.permissions.iscsi.read&&n.iscsi)}}function uT(f,y){1&f&&(e.TgZ(0,"li",102),e.TgZ(1,"a",103),e.SDv(2,104),e.qZA(),e.qZA())}function dT(f,y){1&f&&(e.TgZ(0,"li",105),e.TgZ(1,"a",106),e.SDv(2,107),e.qZA(),e.qZA())}function fT(f,y){if(1&f){const n=e.EpF();e.TgZ(0,"li",108),e.TgZ(1,"a",37),e.NdJ("click",function(){return e.CHM(n),e.oxw(3).toggleSubMenu("rgw")}),e.ynx(2),e.SDv(3,109),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.TgZ(5,"li",110),e.TgZ(6,"a",111),e.SDv(7,112),e.qZA(),e.qZA(),e.TgZ(8,"li",113),e.TgZ(9,"a",114),e.SDv(10,115),e.qZA(),e.qZA(),e.TgZ(11,"li",116),e.TgZ(12,"a",117),e.SDv(13,118),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&f){const n=e.oxw(3);e.xp6(1),e.uIk("aria-expanded","rgw"==n.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","rgw"!==n.displayedSubMenu)}}const pT=function(f){return[f]};function hT(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"li",26),e.TgZ(2,"a",27),e.TgZ(3,"span"),e.SDv(4,28),e.qZA(),e._uU(5,"\xa0 "),e._UZ(6,"i",29),e.ALo(7,"healthColor"),e.qZA(),e.qZA(),e.YNc(8,hm,15,12,"li",30),e.YNc(9,ng,3,0,"li",31),e.YNc(10,cT,8,6,"li",32),e.YNc(11,uT,3,0,"li",33),e.YNc(12,dT,3,0,"li",34),e.YNc(13,fT,14,2,"li",35),e.BQk()),2&f){const n=y.ngIf,d=e.oxw(2);e.xp6(6),e.Q6J("ngClass",e.VKq(10,pT,d.icons.health))("ngStyle",e.lcZ(7,8,null==d.summaryData?null:d.summaryData.health_status)),e.xp6(2),e.Q6J("ngIf",d.permissions.hosts.read||d.permissions.monitor.read||d.permissions.osd.read||d.permissions.configOpt.read||d.permissions.log.read||d.permissions.prometheus.read),e.xp6(1),e.Q6J("ngIf",d.permissions.pool.read),e.xp6(1),e.Q6J("ngIf",(d.permissions.rbdImage.read||d.permissions.rbdMirroring.read||d.permissions.iscsi.read)&&(n.rbd||n.mirroring||n.iscsi)),e.xp6(1),e.Q6J("ngIf",d.permissions.nfs.read&&n.nfs),e.xp6(1),e.Q6J("ngIf",d.permissions.cephfs.read&&n.cephfs),e.xp6(1),e.Q6J("ngIf",d.permissions.rgw.read&&n.rgw)}}function _T(f,y){if(1&f&&(e.YNc(0,hT,14,12,"ng-container",25),e.ALo(1,"async")),2&f){const n=e.oxw();e.Q6J("ngIf",e.lcZ(1,1,n.enabledFeature$))}}const jC=function(f){return{show:f}},by=function(f){return{active:f}},rg=["*"];let gT=(()=>{class f{constructor(n,d,w,re,Ze,Lt){this.authStorageService=n,this.summaryService=d,this.featureToggles=w,this.telemetryNotificationService=re,this.prometheusAlertService=Ze,this.motdNotificationService=Lt,this.notifications=[],this.icons=eo.P,this.rightSidebarOpen=!1,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new Vl.w,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}get class(){return"top-notification-"+this.notifications.length}ngOnInit(){this.subs.add(this.summaryService.subscribe(n=>{this.summaryData=n})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(n=>{this.showTopNotification("isPwdDisplayed",n)})),this.subs.add(this.telemetryNotificationService.update.subscribe(n=>{this.showTopNotification("telemetryNotificationEnabled",n)})),this.subs.add(this.motdNotificationService.motd$.subscribe(n=>{this.showTopNotification("motdNotificationEnabled",ur.isPlainObject(n))}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(n){this.displayedSubMenu=this.displayedSubMenu===n?"":n}toggleRightSidebar(){this.rightSidebarOpen=!this.rightSidebarOpen}showTopNotification(n,d){if(d)this.notifications.includes(n)||this.notifications.push(n);else{const w=this.notifications.indexOf(n);w>=0&&this.notifications.splice(w,1)}}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Qh.J),e.Y36(Iv.l),e.Y36(zh),e.Y36(Cf),e.Y36(Q0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-navigation"]],hostVars:2,hostBindings:function(n,d){2&n&&e.Tol(d.class)},ngContentSelectors:rg,decls:30,vars:12,consts:function(){let y,n,d,w,re,Ze,Lt,Gt,On,fr,hr,Jr,$i,bo,_o,Yi,Xs,ls,js,ga,wl,wa,Wl,zc;return y="Toggle navigation",n="Dashboard",d="Cluster",w="Hosts",re="Physical Disks",Ze="Monitors",Lt="Services",Gt="OSDs",On="Configuration",fr="CRUSH map",hr="Manager Modules",Jr="Logs",$i="Monitoring",bo="Pools",_o="Block",Yi="Images",Xs="Mirroring",ls="iSCSI",js="NFS",ga="File Systems",wl="Object Gateway",wa="Daemons",Wl="Users",zc="Buckets",[[1,"cd-navbar-main"],[1,"cd-navbar-top"],[1,"navbar","navbar-expand-md","navbar-dark","cd-navbar-brand"],["aria-label","toggle sidebar visibility",1,"btn","btn-link","py-0",3,"click"],["aria-hidden","true",1,"fa","fa-bars","fa-2x"],["href","#",1,"navbar-brand","ml-2"],["src","assets/Ceph_Ceph_Logo_with_text_white.svg","alt","Ceph"],["type","button",1,"navbar-toggler",3,"click"],[1,"sr-only"],y,[1,""],[1,"fa","fa-navicon","fa-lg"],[1,"collapse","navbar-collapse",3,"ngClass"],[1,"nav","navbar-nav","cd-navbar-utility","my-2","my-md-0"],[4,"ngTemplateOutlet"],[1,"wrapper"],["id","sidebar",3,"ngClass"],[3,"options"],[1,"list-unstyled","components","cd-navbar-primary"],["id","content",3,"ngClass"],["cd_utilities",""],["cd_menu",""],[1,"nav-item"],[1,"cd-navbar"],[1,"cd-navbar",3,"click"],[4,"ngIf"],["routerLinkActive","active",1,"nav-item","tc_menuitem_dashboard"],["routerLink","/dashboard",1,"nav-link"],n,[3,"ngClass","ngStyle"],["routerLinkActive","active","class","nav-item tc_menuitem_cluster",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_pool",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_block",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_nfs",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_cephfs",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_rgw",4,"ngIf"],["routerLinkActive","active",1,"nav-item","tc_menuitem_cluster"],["aria-controls","collapseBasic",1,"nav-link","dropdown-toggle",3,"click"],d,[1,"list-unstyled",3,"ngbCollapse"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_hosts",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_inventory",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_monitor",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_services",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_osds",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_configuration",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_crush",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_modules",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_log",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_monitoring",4,"ngIf"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_hosts"],["routerLink","/hosts"],w,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_inventory"],["routerLink","/inventory"],re,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_monitor"],["routerLink","/monitor/"],Ze,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_services"],["routerLink","/services/"],Lt,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_osds"],["routerLink","/osd"],Gt,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_configuration"],["routerLink","/configuration"],On,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_crush"],["routerLink","/crush-map"],fr,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_modules"],["routerLink","/mgr-modules"],hr,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_log"],["routerLink","/logs"],Jr,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_monitoring"],["routerLink","/monitoring"],$i,["class","badge badge-danger",4,"ngIf"],[1,"badge","badge-danger"],["routerLinkActive","active",1,"nav-item","tc_menuitem_pool"],["routerLink","/pool",1,"nav-link"],bo,["routerLinkActive","active",1,"nav-item","tc_menuitem_block"],["aria-controls","collapseBasic",1,"nav-link","dropdown-toggle",3,"ngStyle","click"],_o,["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_images",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_mirroring",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_iscsi",4,"ngIf"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_images"],["routerLink","/block/rbd"],Yi,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_mirroring"],["routerLink","/block/mirroring"],Xs,["class","badge badge-warning",4,"ngIf"],[1,"badge","badge-warning"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_iscsi"],["routerLink","/block/iscsi"],ls,["routerLinkActive","active",1,"nav-item","tc_menuitem_nfs"],["routerLink","/nfs",1,"nav-link"],js,["routerLinkActive","active",1,"nav-item","tc_menuitem_cephfs"],["routerLink","/cephfs",1,"nav-link"],ga,["routerLinkActive","active",1,"nav-item","tc_menuitem_rgw"],wl,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_daemons"],["routerLink","/rgw/daemon"],wa,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_users"],["routerLink","/rgw/user"],Wl,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_buckets"],["routerLink","/rgw/bucket"],zc]},template:function(n,d){if(1&n&&(e.F$t(),e.TgZ(0,"div",0),e._UZ(1,"cd-pwd-expiration-notification"),e._UZ(2,"cd-telemetry-notification"),e._UZ(3,"cd-motd"),e._UZ(4,"cd-notifications-sidebar"),e.TgZ(5,"div",1),e.TgZ(6,"nav",2),e.TgZ(7,"button",3),e.NdJ("click",function(){return d.showMenuSidebar=!d.showMenuSidebar}),e._UZ(8,"i",4),e.qZA(),e.TgZ(9,"a",5),e._UZ(10,"img",6),e.qZA(),e.TgZ(11,"button",7),e.NdJ("click",function(){return d.toggleRightSidebar()}),e.TgZ(12,"span",8),e.SDv(13,9),e.qZA(),e.TgZ(14,"span",10),e._UZ(15,"i",11),e.qZA(),e.qZA(),e.TgZ(16,"div",12),e.TgZ(17,"ul",13),e.YNc(18,HC,1,0,"ng-container",14),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"nav",16),e.TgZ(21,"ngx-simplebar",17),e.TgZ(22,"ul",18),e.YNc(23,KE,1,0,"ng-container",14),e.qZA(),e.qZA(),e.qZA(),e.TgZ(24,"div",19),e.Hsn(25),e.qZA(),e.qZA(),e.YNc(26,eT,10,0,"ng-template",null,20,e.W1O),e.YNc(28,_T,2,3,"ng-template",null,21,e.W1O),e.qZA()),2&n){const w=e.MAs(27),re=e.MAs(29);e.xp6(16),e.Q6J("ngClass",e.VKq(6,jC,d.rightSidebarOpen)),e.xp6(2),e.Q6J("ngTemplateOutlet",w),e.xp6(2),e.Q6J("ngClass",e.VKq(8,by,!d.showMenuSidebar)),e.xp6(1),e.Q6J("options",d.simplebar),e.xp6(2),e.Q6J("ngTemplateOutlet",re),e.xp6(1),e.Q6J("ngClass",e.VKq(10,by,!d.showMenuSidebar))}},directives:[xE,NE,ey,ly,Br.M2,As.o,s.mk,s.tP,eg.M,V0,IC,$C,py,XE,s.O5,tn.Od,tn.yS,s.PC,Br._D],pipes:[s.Ov,Qg],styles:['@charset "UTF-8";.cd-navbar-main[_ngcontent-%COMP%]{display:flex;flex:1;flex-direction:column;height:100%}  cd-navigation .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand,   cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#e9ecef;height:auto;padding:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#e9ecef}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{background-color:#2b99a8;color:#e9ecef}  cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{background-color:transparent;border-color:transparent;color:#e9ecef}  cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown]>a,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   cd-navigation .cd-navbar-top .navbar-nav>li>a{color:#e9ecef;display:block;line-height:1;padding:13.5px 18px!important;position:relative;text-decoration:none}  cd-navigation .cd-navbar-top .navbar-nav .nav-link,   cd-navigation .cd-navbar-top .navbar-nav .nav-link:hover{color:#e9ecef}  cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown]>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown].open>a,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li:hover{background-color:#2b99a8}  cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>[ngbDropdown]>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>[ngbDropdown]>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>a:hover{background-color:transparent;border-color:transparent;color:#e9ecef}@media (min-width: 768px){  cd-navigation .cd-navbar-top .cd-navbar-utility{border-bottom:0;font-size:1.1rem;position:absolute;right:0;top:0}}@media (max-width: calc(768px - 1px)){  cd-navigation .cd-navbar-top .navbar-nav{margin:0}  cd-navigation .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu{background-color:#2b99a8;border:0;padding-bottom:0;padding-top:0}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{color:#e9ecef;padding:5px 15px 5px 35px}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  cd-navigation .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{background-color:#2b99a8!important;border:0!important;color:#e9ecef!important}.wrapper[_ngcontent-%COMP%]{display:flex;height:100%;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{background:#374249;bottom:0;color:#fff;height:auto;left:0;overflow-y:auto;position:relative;transition:all .3s;width:200px;z-index:999}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{margin:0;padding:20px 0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:#fff;display:block;font-size:1.1em;padding:10px 10px 10px 27px;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{background:#2b99a8;color:#fff}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]:after{border:0;content:"\\f054";font-family:"ForkAwesome";font-size:1rem;position:absolute;right:20px;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]:after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{background:#4d5c66;font-size:.9em!important;padding-left:40px!important}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:none}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{bottom:0;position:relative;right:0;transition:all .3s;width:calc(100% - 200px)}#content.active[_ngcontent-%COMP%]{width:100vw}']}),f})();var mT=o(17757),vT=o(20523);function _m(f,y){if(1&f){const n=e.EpF();e.ynx(0),e.TgZ(1,"button",8),e.NdJ("click",function(){const re=e.CHM(n).$implicit;return e.oxw(3).onDaemonSelection(re)}),e._uU(2),e.qZA(),e.BQk()}if(2&f){const n=y.$implicit;e.xp6(2),e.AsE(" ",n.id," ( ",n.zonegroup_name," ) ")}}function fh(f,y){if(1&f&&(e.ynx(0),e.TgZ(1,"div",1),e.TgZ(2,"span",2),e.SDv(3,3),e.qZA(),e.TgZ(4,"div",4),e.TgZ(5,"button",5),e._uU(6),e.qZA(),e.TgZ(7,"div",6),e.YNc(8,_m,3,2,"ng-container",7),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&f){const n=e.oxw().ngIf;e.xp6(6),e.AsE(" ",n.selectedDaemon.id," ( ",n.selectedDaemon.zonegroup_name," ) "),e.xp6(2),e.Q6J("ngForOf",n.daemons)}}function Ey(f,y){if(1&f&&(e.ynx(0),e.YNc(1,fh,9,3,"ng-container",0),e.BQk()),2&f){const n=y.ngIf,d=e.oxw();e.xp6(1),e.Q6J("ngIf",n.ftMap&&n.ftMap.rgw&&d.permissions.rgw.read&&d.isRgwRoute&&n.daemons.length>1)}}const yT=function(f,y,n){return{ftMap:f,daemons:y,selectedDaemon:n}};let BC=(()=>{class f{constructor(n,d,w,re,Ze){this.authStorageService=n,this.featureToggles=d,this.router=w,this.timerService=re,this.rgwDaemonService=Ze,this.REFRESH_INTERVAL=5e3,this.subs=new Vl.w,this.rgwUrlPrefix="/rgw",this.isRgwRoute=document.location.href.includes(this.rgwUrlPrefix)}ngOnInit(){this.permissions=this.authStorageService.getPermissions(),this.featureToggleMap$=this.featureToggles.get(),this.subs.add(this.router.events.pipe((0,qu.h)(n=>n instanceof tn.m2)).subscribe(()=>this.isRgwRoute=this.router.url.startsWith(this.rgwUrlPrefix))),this.subs.add(this.timerService.get(()=>this.isRgwRoute?this.rgwDaemonService.list():mT.C,this.REFRESH_INTERVAL).subscribe())}ngOnDestroy(){this.subs.unsubscribe()}onDaemonSelection(n){this.rgwDaemonService.selectDaemon(n),this.reloadData()}reloadData(){const n=this.router.url;this.router.navigateByUrl(this.rgwUrlPrefix,{skipLocationChange:!0}).finally(()=>{this.router.navigate([n])})}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(hi.j),e.Y36(Iv.l),e.Y36(tn.F0),e.Y36(Xp.f),e.Y36(vT.b))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-context"]],decls:4,vars:11,consts:function(){let y,n;return y="Selected Object Gateway:",n="Select Object Gateway",[[4,"ngIf"],[1,"cd-context-bar","pt-3","pb-3"],[1,"mr-1"],y,["ngbDropdown","","placement","bottom-left",1,"d-inline-block","ml-2"],["ngbDropdownToggle","","title",n,1,"btn","btn-outline-info","ctx-bar-selected-rgw-daemon"],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["ngbDropdownItem","",1,"ctx-bar-available-rgw-daemon",3,"click"]]},template:function(n,d){1&n&&(e.YNc(0,Ey,2,1,"ng-container",0),e.ALo(1,"async"),e.ALo(2,"async"),e.ALo(3,"async")),2&n&&e.Q6J("ngIf",e.kEZ(7,yT,e.lcZ(1,1,d.featureToggleMap$),e.lcZ(2,3,d.rgwDaemonService.daemons$),e.lcZ(3,5,d.rgwDaemonService.selectedDaemon$)))},directives:[s.O5,Br.jt,As.o,Br.iD,Br.Vi,s.sg,Br.TH],pipes:[s.Ov],styles:[".cd-context-bar[_ngcontent-%COMP%]{border-bottom:1px solid #dee2e6}"]}),f})();var bT=o(58071),gm=o(94402),J1=o(85345);class Ty{constructor(y,n){this.keySelector=y,this.flushes=n}call(y,n){return n.subscribe(new Cy(y,this.keySelector,this.flushes))}}class Cy extends J1.Ds{constructor(y,n,d){super(y),this.keySelector=n,this.values=new Set,d&&this.add((0,J1.ft)(d,new J1.IY(this)))}notifyNext(){this.values.clear()}notifyError(y){this._error(y)}_next(y){this.keySelector?this._useKeySelector(y):this._finalizeNext(y,y)}_useKeySelector(y){let n;const{destination:d}=this;try{n=this.keySelector(y)}catch(w){return void d.error(w)}this._finalizeNext(n,y)}_finalizeNext(y,n){const{values:d}=this;d.has(y)||(d.add(y),this.destination.next(n))}}var mm=o(28049);class ig{resolve(y){const n=y.routeConfig.data,d=null===n.path?null:this.getFullPath(y);return(0,ws.of)([{text:"string"==typeof n.breadcrumbs?n.breadcrumbs:n.breadcrumbs.text||n.text||d,path:d}])}getFullPath(y){return y.pathFromRoot.reduce((re,Ze)=>re+Ze.url.reduce((re,Ze)=>re+"/"+Ze.path,""),"")}}function Sy(f,y){if(1&f&&(e.TgZ(0,"a",6),e._uU(1),e.qZA()),2&f){const n=e.oxw().$implicit;e.Q6J("routerLink",n.path),e.xp6(1),e.Oqu(n.text)}}function TT(f,y){if(1&f&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&f){const n=e.oxw().$implicit;e.xp6(1),e.Oqu(n.text)}}const CT=function(f){return{active:f}};function My(f,y){if(1&f&&(e.TgZ(0,"li",3),e.YNc(1,Sy,2,2,"a",4),e.YNc(2,TT,2,1,"span",5),e.qZA()),2&f){const n=y.$implicit,d=y.last,w=e.oxw(2);e.Q6J("ngClass",e.VKq(3,CT,d&&w.finished)),e.xp6(1),e.Q6J("ngIf",!d&&null!==n.path),e.xp6(1),e.Q6J("ngIf",d||null===n.path)}}function ST(f,y){if(1&f&&(e.TgZ(0,"ol",1),e.YNc(1,My,3,5,"li",2),e.qZA()),2&f){const n=e.oxw();e.xp6(1),e.Q6J("ngForOf",n.crumbs)}}let Oy=(()=>{class f{constructor(n,d){this.router=n,this.injector=d,this.crumbs=[],this.finished=!1,this.defaultResolver=new ig,this.subscription=this.router.events.pipe((0,qu.h)(w=>w instanceof tn.OD)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe((0,qu.h)(w=>w instanceof tn.m2)).subscribe(()=>{this._resolveCrumbs(n.routerState.snapshot.root).pipe((0,ol.zg)(re=>re),function(f,y){return n=>n.lift(new Ty(f,undefined))}(re=>re.text),Ha(),(0,ol.zg)(re=>{const Ze=this.postProcess(re);return this.wrapIntoObservable(Ze).pipe((0,mm.P)())})).subscribe(re=>{this.finished=!0,this.crumbs=re})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(n){let d;const w=n.routeConfig&&n.routeConfig.data;if(w&&w.breadcrumbs){let re;re=w.breadcrumbs.prototype instanceof ig?this.injector.get(w.breadcrumbs):this.defaultResolver;const Ze=re.resolve(n);d=this.wrapIntoObservable(Ze).pipe((0,mm.P)())}else d=(0,ws.of)([]);return n.firstChild&&(d=(0,bT.z)(d,this._resolveCrumbs(n.firstChild))),d}postProcess(n){const d=[];return n.forEach(w=>{const re=w.text.split("/");if(re.length>1){w.text=re[re.length-1];for(let Ze=0;Ze<re.length-1;Ze++)d.push({text:re[Ze],path:null})}d.push(w)}),d}isPromise(n){return n&&"function"==typeof n.then}wrapIntoObservable(n){return n instanceof wv.y?n:this.isPromise(n)?(0,gm.D)(Promise.resolve(n)):(0,ws.of)(n)}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0),e.Y36(e.zs3))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-breadcrumbs"]],decls:1,vars:1,consts:[["class","breadcrumb",4,"ngIf"],[1,"breadcrumb"],["class","breadcrumb-item",3,"ngClass",4,"ngFor","ngForOf"],[1,"breadcrumb-item",3,"ngClass"],["preserveFragment","",3,"routerLink",4,"ngIf"],[4,"ngIf"],["preserveFragment","",3,"routerLink"]],template:function(n,d){1&n&&e.YNc(0,ST,2,1,"ol",0),2&n&&e.Q6J("ngIf",d.crumbs.length)},directives:[s.O5,s.sg,s.mk,tn.yS],styles:['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{background-color:transparent;border-radius:0;margin-top:8px;padding:8px 0}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{content:"\\f101";font-family:"ForkAwesome";padding:0 5px 0 7px}']}),f})();const vm=function(f){return{dashboard:f}};let ym=(()=>{class f{constructor(n,d,w,re){this.router=n,this.summaryService=d,this.taskManagerService=w,this.faviconService=re,this.subs=new Vl.w}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService)),this.faviconService.init()}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(tn.F0),e.Y36(Qh.J),e.Y36(Xh.k),e.Y36(z0))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-workbench-layout"]],features:[e._Bn([z0])],decls:6,vars:3,consts:[[1,"container-fluid","h-100",3,"ngClass"]],template:function(n,d){1&n&&(e.TgZ(0,"block-ui"),e.TgZ(1,"cd-navigation"),e.TgZ(2,"div",0),e._UZ(3,"cd-context"),e._UZ(4,"cd-breadcrumbs"),e._UZ(5,"router-outlet"),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(2),e.Q6J("ngClass",e.VKq(1,vm,d.isDashboardPage())))},directives:[Bm,gT,s.mk,BC,Oy,tn.lC],styles:[".dashboard[_ngcontent-%COMP%]{background-color:#e9ecef;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto;position:absolute}"]}),f})();var YC=o(11642),og=o.n(YC);let $l=(()=>{class f{ngOnInit(){og()({url:window.location.origin+"/docs/openapi.json",dom_id:"#swagger-ui",layout:"BaseLayout"})}}return f.\u0275fac=function(n){return new(n||f)},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-api-docs"]],decls:1,vars:0,consts:[["id","swagger-ui",1,"apiDocs"]],template:function(n,d){1&n&&e._UZ(0,"div",0)},styles:[".apiDocs[_ngcontent-%COMP%]{background:#f8f9fa;font-size:18px!important;margin-top:-48px!important}"]}),f})();var mp=o(45510);let ph=(()=>{class f{constructor(n,d){this.router=n,this.authStorageService=d}canActivate(n,d){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"],{queryParams:{returnUrl:d.url}}),1))}canActivateChild(n,d){return this.canActivate(n,d)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(tn.F0),e.LFG(hi.j))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();var hh=o(4222);let bm=(()=>{class f{constructor(n,d,w){this.http=n,this.router=d,this.mgrModuleService=w}canActivate(n){return this.doCheck(n)}canActivateChild(n){return this.doCheck(n)}doCheck(n){if(n.url.length>0&&f.ALLOWLIST.includes(n.url[0].path))return(0,ws.of)(!0);const d=n.data.moduleStatusGuardConfig;let w=!1;return d.backend&&this.mgrModuleService.getConfig("orchestrator").subscribe(re=>{w=d.backend===re.orchestrator},()=>(this.router.navigate([d.redirectTo]),(0,ws.of)(!1))),this.http.get(`api/${d.apiPath}/status`).pipe((0,Ds.U)(re=>(!re.available&&!w&&this.router.navigate([d.redirectTo||""],{state:{header:d.header,message:re.message,section:d.section,section_info:d.section_info,icon:eo.P.wrench}}),re.available)),(0,sd.K)(()=>(this.router.navigate([d.redirectTo]),(0,ws.of)(!1))))}}return f.ALLOWLIST=["501"],f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN),e.LFG(tn.F0),e.LFG(Mt))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),ba=(()=>{class f{constructor(n){this.authStorageService=n}canActivate(){if(!this.authStorageService.isSSO())return!0;throw new O.mM}canActivateChild(){return this.canActivate()}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(hi.j))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Id=(()=>{class f extends ig{resolve(n){const d=[],w=n.queryParams.fromLink||null;let re="";switch(w){case"/monitor":re="Monitors";break;case"/hosts":re="Hosts"}return d.push({text:"Cluster",path:null}),d.push({text:re,path:w}),d.push({text:"Performance Counters",path:""}),d}}return f.\u0275fac=function(){let y;return function(d){return(y||(y=e.n5z(f)))(d||f)}}(),f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})(),Em=(()=>{class f extends ig{resolve(n){const d=n.params.name;return[{text:`${gn().startCase(d)}/Edit`,path:d}]}}return f.\u0275fac=function(){let y;return function(d){return(y||(y=e.n5z(f)))(d||f)}}(),f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})();const _h=[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"api-docs",component:$l},{path:"",component:ym,canActivate:[mp.P,ph],canActivateChild:[mp.P,ph],children:[{path:"dashboard",component:i0},{path:"error",component:Y0},{path:"expand-cluster",component:ko,canActivate:[bm],data:{moduleStatusGuardConfig:{apiPath:"orchestrator",redirectTo:"dashboard",backend:"cephadm"},breadcrumbs:"Expand Cluster"}},{path:"hosts",component:zu,data:{breadcrumbs:"Cluster/Hosts"},children:[{path:uo.MQ.ADD,component:qe,outlet:"modal"}]},{path:"monitor",component:Vm,data:{breadcrumbs:"Cluster/Monitors"}},{path:"services",component:m_,canActivate:[bm],data:{moduleStatusGuardConfig:{apiPath:"orchestrator",redirectTo:"error",section:"orch",section_info:"Orchestrator",header:"Orchestrator is not available"},breadcrumbs:"Cluster/Services"},children:[{path:uo.MQ.CREATE,component:__,outlet:"modal"},{path:`${uo.MQ.EDIT}/:type/:name`,component:__,outlet:"modal"}]},{path:"inventory",canActivate:[bm],component:Gl,data:{moduleStatusGuardConfig:{apiPath:"orchestrator",redirectTo:"error",section:"orch",section_info:"Orchestrator",header:"Orchestrator is not available"},breadcrumbs:"Cluster/Physical Disks"}},{path:"osd",data:{breadcrumbs:"Cluster/OSDs"},children:[{path:"",component:Vh},{path:uo.MQ.CREATE,component:md,data:{breadcrumbs:uo.Qn.CREATE}}]},{path:"configuration",data:{breadcrumbs:"Cluster/Configuration"},children:[{path:"",component:Aa},{path:"edit/:name",component:Wo,data:{breadcrumbs:uo.Qn.EDIT}}]},{path:"crush-map",component:Ih,data:{breadcrumbs:"Cluster/CRUSH map"}},{path:"logs",component:Ee,data:{breadcrumbs:"Cluster/Logs"}},{path:"telemetry",component:yb,data:{breadcrumbs:"Telemetry configuration"}},{path:"monitoring",data:{breadcrumbs:"Cluster/Monitoring"},children:[{path:"",redirectTo:"active-alerts",pathMatch:"full"},{path:"active-alerts",data:{breadcrumbs:"Active Alerts"},component:Zg},{path:"alerts",data:{breadcrumbs:"Alerts"},component:Wg},{path:"silences",data:{breadcrumbs:"Silences"},children:[{path:"",component:pb},{path:uo.MQ.CREATE,component:Jg,data:{breadcrumbs:`${uo.Qn.CREATE} Silence`}},{path:`${uo.MQ.CREATE}/:id`,component:Jg,data:{breadcrumbs:uo.Qn.CREATE}},{path:`${uo.MQ.EDIT}/:id`,component:Jg,data:{breadcrumbs:uo.Qn.EDIT}},{path:`${uo.MQ.RECREATE}/:id`,component:Jg,data:{breadcrumbs:uo.Qn.RECREATE}}]}]},{path:"perf_counters/:type/:id",component:L0,data:{breadcrumbs:Id}},{path:"mgr-modules",data:{breadcrumbs:"Cluster/Manager Modules"},children:[{path:"",component:dc},{path:"edit/:name",component:rc,data:{breadcrumbs:Em}}]},{path:"pool",data:{breadcrumbs:"Pools"},loadChildren:()=>Promise.all([o.e(330),o.e(585)]).then(o.bind(o,24585)).then(f=>f.RoutedPoolModule)},{path:"block",data:{breadcrumbs:!0,text:"Block",path:null},loadChildren:()=>o.e(330).then(o.bind(o,91330)).then(f=>f.RoutedBlockModule)},{path:"cephfs",component:ge,canActivate:[hh.T],data:{breadcrumbs:"File Systems"}},{path:"rgw",canActivateChild:[hh.T,bm],data:{moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"error",section:"rgw",section_info:"Object Gateway",header:"The Object Gateway Service is not configured"},breadcrumbs:!0,text:"Object Gateway",path:null},loadChildren:()=>o.e(281).then(o.bind(o,59281)).then(f=>f.RoutedRgwModule)},{path:"user-management",data:{breadcrumbs:"User management",path:null},loadChildren:()=>Promise.resolve().then(o.bind(o,49552)).then(f=>f.RoutedAuthModule)},{path:"user-profile",data:{breadcrumbs:"User profile",path:null},children:[{path:uo.MQ.EDIT,component:H1,canActivate:[ba],data:{breadcrumbs:uo.Qn.EDIT}}]},{path:"nfs",canActivateChild:[hh.T,bm],data:{moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"error",section:"nfs-ganesha",section_info:"NFS GANESHA",header:"NFS-Ganesha is not configured"},breadcrumbs:"NFS"},children:[{path:"",component:I0},{path:uo.MQ.CREATE,component:x0,data:{breadcrumbs:uo.Qn.CREATE}},{path:`${uo.MQ.EDIT}/:cluster_id/:export_id`,component:x0,data:{breadcrumbs:uo.Qn.EDIT}}]}]},{path:"",component:G0,children:[{path:"login",component:bE},{path:"login-change-password",component:U0,canActivate:[ba]}]},{path:"",component:am,children:[{path:"**",redirectTo:"/error"}]}];let Q1=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({providers:[Em,Id],imports:[[tn.Bz.forRoot(_h,{useHash:!0,preloadingStrategy:tn.wm,relativeLinkResolution:"legacy"})],tn.Bz]}),f})(),Ay=(()=>{class f{constructor(n,d){n.autoClose="outside",n.container="body",n.placement="bottom",d.container="body"}}return f.\u0275fac=function(n){return new(n||f)(e.Y36(Br.AX),e.Y36(Br.xI))},f.\u0275cmp=e.Xpm({type:f,selectors:[["cd-root"]],decls:1,vars:0,template:function(n,d){1&n&&e._UZ(0,"router-outlet")},directives:[tn.lC],styles:[""]}),f})();var Of=o(44466);let ZC=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[s.ez,Of.m,Q1,Sr.m9,Es.xc,Br.Oz]]}),f})();var wy=o(66265),Dy=o(370);let Xd=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[Q1,s.ez,Hn.UX,Of.m,Br.Oz]]}),f})(),Nc=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({providers:[Br.Kz],imports:[[s.ez,wy.B,Br.Oz,Of.m,tn.Bz,Hn.u5,Hn.UX,Br.HK,Xd,Br.ZS,Br.UL,Es.xc,Dy.t,Br.M,Br.dT,Br.XC,yt.b]]}),f})(),Af=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[Dy.t,s.ez,Br.Oz,Of.m,Sr.m9,tn.Bz,Br.dT,Hn.u5,Hn.UX]]}),f})(),xy=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[Hn.UX,tn.Bz,Of.m,Br.Oz,s.ez,Br.ZS,Br.HK]]}),f})(),MT=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[s.ez,Nc,Af,wy.B,ZC,xy,Of.m]]}),f})();var Ry=o(49552);let Tm=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[s.ez,Ry.AuthModule,Br.lQ,Br.XC,Q1,Of.m,eg.t,tn.Bz]]}),f})(),t_=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f}),f.\u0275inj=e.cJS({imports:[[pp.forRoot(),s.ez,Tm,Br.XC,tn.Bz,Of.m],Tm]}),f})(),OT=(()=>{class f{constructor(n,d,w){this.router=n,this.authStorageService=d,this.notificationService=w}intercept(n,d){const w=n.headers.get("Accept");let re;return re=w&&w.startsWith("application/vnd.ceph.api.v")?n.clone():n.clone({setHeaders:{Accept:sl.T.cdVersionHeader("1","0")}}),d.handle(re).pipe((0,sd.K)(Ze=>{if(Ze instanceof a.UA){let Lt;switch(Ze.status){case 400:const Gt=new Va.R,On=Ze.error.task;gn().isPlainObject(On)?(On.metadata.component=On.metadata.component||Ze.error.component,Gt.name=On.name,Gt.metadata=On.metadata):Gt.metadata=Ze.error,Gt.success=!1,Gt.exception=Ze.error,Lt=this.notificationService.notifyTask(Gt);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["error"],{state:{message:"Sorry, you don\u2019t have permission to view this page or resource.",header:"Access Denied",icon:"fa fa-lock",source:"forbidden"}});break;default:Lt=this.prepareNotification(Ze)}Ze.preventDefault=()=>{this.notificationService.cancel(Lt)},Ze.ignoreStatusCode=function(Gt){this.status===Gt&&this.preventDefault()}}return(0,D1._)(Ze)}))}prepareNotification(n){return this.notificationService.show(()=>{let d="";return gn().isPlainObject(n.error)&&gn().isString(n.error.detail)?d=n.error.detail:gn().isString(n.error)?d=n.error:gn().isString(n.message)&&(d=n.message),new Qf.T(Ho.k.error,`${n.status} - ${n.statusText}`,d,void 0,n.application)})}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(tn.F0),e.LFG(hi.j),e.LFG(Zi.g))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),gh=(()=>{class f{constructor(n){this.http=n}jsError(n,d,w){return this.http.post("ui-api/logging/js-error",{url:n,message:d,stack:w})}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(a.eN))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),AT=(()=>{class f{constructor(n,d){this.injector=n,this.router=d}handleError(n){const d=this.injector.get(gh),w=window.location.href;if(d.jsError(w,n&&n.message,n&&n.stack).subscribe(),!(n.rejection instanceof O.s9))throw n;setTimeout(()=>this.router.navigate(["error"],{state:{message:n.rejection.message,header:n.rejection.header,icon:n.rejection.icon}}),50)}}return f.\u0275fac=function(n){return new(n||f)(e.LFG(e.zs3),e.LFG(tn.F0))},f.\u0275prov=e.Yz7({token:f,factory:f.\u0275fac}),f})(),Ny=(()=>{class f{}return f.\u0275fac=function(n){return new(n||f)},f.\u0275mod=e.oAB({type:f,bootstrap:[Ay]}),f.\u0275inj=e.cJS({providers:[{provide:e.qLn,useClass:AT},{provide:a.TP,useClass:OT,multi:!0},{provide:s.mr,useValue:"/"+(window.location.pathname.split("/",1)[1]||"")}],imports:[[a.JF,t.b2,ze,kt.Rh.forRoot({positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}),Q1,t_,Of.m,MT],Of.m]}),f})();Z0.N.production&&(0,e.G48)(),t.q6().bootstrapModule(Ny).then(f=>{if((0,e.X6Q)()){const n=f.injector.get(e.z2F).components[0];(0,t.HJ)(n)}}).catch(f=>console.log(f))},77340:(Ge,g,o)=>{var t=o(31864),e=o(25591),s=o(60802),a=t.TypeError;Ge.exports=function(l){if(e(l))return l;throw a(s(l)+" is not a function")}},95143:(Ge,g,o)=>{var t=o(31864),e=o(25591),s=t.String,a=t.TypeError;Ge.exports=function(l){if("object"==typeof l||e(l))return l;throw a("Can't set "+s(l)+" as a prototype")}},24094:(Ge,g,o)=>{var t=o(84563),e=o(38724),s=o(52975),a=t("unscopables"),l=Array.prototype;null==l[a]&&s.f(l,a,{configurable:!0,value:e(null)}),Ge.exports=function(u){l[a][u]=!0}},27678:(Ge,g,o)=>{"use strict";var t=o(64487).charAt;Ge.exports=function(e,s,a){return s+(a?t(e,s).length:1)}},86063:(Ge,g,o)=>{var t=o(31864),e=o(93290),s=t.TypeError;Ge.exports=function(a,l){if(e(l,a))return a;throw s("Incorrect invocation")}},21099:(Ge,g,o)=>{var t=o(31864),e=o(60726),s=t.String,a=t.TypeError;Ge.exports=function(l){if(e(l))return l;throw a(s(l)+" is not an object")}},93241:(Ge,g,o)=>{var t=o(8597);Ge.exports=t(function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})},17462:(Ge,g,o)=>{"use strict";var t=o(94115).forEach,s=o(47051)("forEach");Ge.exports=s?[].forEach:function(l){return t(this,l,arguments.length>1?arguments[1]:void 0)}},70452:(Ge,g,o)=>{var t=o(8643),e=o(20222),s=o(24196),a=function(l){return function(u,h,_){var D,m=t(u),b=s(m),C=e(_,b);if(l&&h!=h){for(;b>C;)if((D=m[C++])!=D)return!0}else for(;b>C;C++)if((l||C in m)&&m[C]===h)return l||C||0;return!l&&-1}};Ge.exports={includes:a(!0),indexOf:a(!1)}},94115:(Ge,g,o)=>{var t=o(29727),e=o(47964),s=o(56169),a=o(16174),l=o(24196),u=o(62889),h=e([].push),_=function(m){var b=1==m,C=2==m,D=3==m,x=4==m,j=6==m,H=7==m,z=5==m||j;return function(U,M,I,J){for(var Ae,Me,Y=a(U),ie=s(Y),oe=t(M,I),fe=l(ie),ne=0,he=J||u,ce=b?he(U,fe):C||H?he(U,0):void 0;fe>ne;ne++)if((z||ne in ie)&&(Me=oe(Ae=ie[ne],ne,Y),m))if(b)ce[ne]=Me;else if(Me)switch(m){case 3:return!0;case 5:return Ae;case 6:return ne;case 2:h(ce,Ae)}else switch(m){case 4:return!1;case 7:h(ce,Ae)}return j?-1:D||x?x:ce}};Ge.exports={forEach:_(0),map:_(1),filter:_(2),some:_(3),every:_(4),find:_(5),findIndex:_(6),filterReject:_(7)}},37394:(Ge,g,o)=>{var t=o(8597),e=o(84563),s=o(17189),a=e("species");Ge.exports=function(l){return s>=51||!t(function(){var u=[];return(u.constructor={})[a]=function(){return{foo:1}},1!==u[l](Boolean).foo})}},47051:(Ge,g,o)=>{"use strict";var t=o(8597);Ge.exports=function(e,s){var a=[][e];return!!a&&t(function(){a.call(null,s||function(){throw 1},1)})}},14716:(Ge,g,o)=>{var t=o(31864),e=o(77340),s=o(16174),a=o(56169),l=o(24196),u=t.TypeError,h=function(_){return function(m,b,C,D){e(b);var x=s(m),j=a(x),H=l(x),z=_?H-1:0,U=_?-1:1;if(C<2)for(;;){if(z in j){D=j[z],z+=U;break}if(z+=U,_?z<0:H<=z)throw u("Reduce of empty array with no initial value")}for(;_?z>=0:H>z;z+=U)z in j&&(D=b(D,j[z],z,x));return D}};Ge.exports={left:h(!1),right:h(!0)}},32342:(Ge,g,o)=>{var t=o(31864),e=o(20222),s=o(24196),a=o(45347),l=t.Array,u=Math.max;Ge.exports=function(h,_,m){for(var b=s(h),C=e(_,b),D=e(void 0===m?b:m,b),x=l(u(D-C,0)),j=0;C<D;C++,j++)a(x,j,h[C]);return x.length=j,x}},71497:(Ge,g,o)=>{var t=o(31864),e=o(47883),s=o(57995),a=o(60726),u=o(84563)("species"),h=t.Array;Ge.exports=function(_){var m;return e(_)&&(s(m=_.constructor)&&(m===h||e(m.prototype))||a(m)&&null===(m=m[u]))&&(m=void 0),void 0===m?h:m}},62889:(Ge,g,o)=>{var t=o(71497);Ge.exports=function(e,s){return new(t(e))(0===s?0:s)}},56297:(Ge,g,o)=>{var e=o(84563)("iterator"),s=!1;try{var a=0,l={next:function(){return{done:!!a++}},return:function(){s=!0}};l[e]=function(){return this},Array.from(l,function(){throw 2})}catch(u){}Ge.exports=function(u,h){if(!h&&!s)return!1;var _=!1;try{var m={};m[e]=function(){return{next:function(){return{done:_=!0}}}},u(m)}catch(b){}return _}},96644:(Ge,g,o)=>{var t=o(47964),e=t({}.toString),s=t("".slice);Ge.exports=function(a){return s(e(a),8,-1)}},99420:(Ge,g,o)=>{var t=o(31864),e=o(72900),s=o(25591),a=o(96644),u=o(84563)("toStringTag"),h=t.Object,_="Arguments"==a(function(){return arguments}());Ge.exports=e?a:function(b){var C,D,x;return void 0===b?"Undefined":null===b?"Null":"string"==typeof(D=function(b,C){try{return b[C]}catch(D){}}(C=h(b),u))?D:_?a(C):"Object"==(x=a(C))&&s(C.callee)?"Arguments":x}},96491:(Ge,g,o)=>{"use strict";var t=o(47964),e=o(78715),s=o(64238).getWeakData,a=o(21099),l=o(60726),u=o(86063),h=o(53284),_=o(94115),m=o(62445),b=o(52493),C=b.set,D=b.getterFor,x=_.find,j=_.findIndex,H=t([].splice),z=0,U=function(J){return J.frozen||(J.frozen=new M)},M=function(){this.entries=[]},I=function(J,Y){return x(J.entries,function(ie){return ie[0]===Y})};M.prototype={get:function(J){var Y=I(this,J);if(Y)return Y[1]},has:function(J){return!!I(this,J)},set:function(J,Y){var ie=I(this,J);ie?ie[1]=Y:this.entries.push([J,Y])},delete:function(J){var Y=j(this.entries,function(ie){return ie[0]===J});return~Y&&H(this.entries,Y,1),!!~Y}},Ge.exports={getConstructor:function(J,Y,ie,oe){var fe=J(function(Ae,Me){u(Ae,ne),C(Ae,{type:Y,id:z++,frozen:void 0}),null!=Me&&h(Me,Ae[oe],{that:Ae,AS_ENTRIES:ie})}),ne=fe.prototype,he=D(Y),ce=function(Ae,Me,Oe){var be=he(Ae),ue=s(a(Me),!0);return!0===ue?U(be).set(Me,Oe):ue[be.id]=Oe,Ae};return e(ne,{delete:function(Ae){var Me=he(this);if(!l(Ae))return!1;var Oe=s(Ae);return!0===Oe?U(Me).delete(Ae):Oe&&m(Oe,Me.id)&&delete Oe[Me.id]},has:function(Me){var Oe=he(this);if(!l(Me))return!1;var be=s(Me);return!0===be?U(Oe).has(Me):be&&m(be,Oe.id)}}),e(ne,ie?{get:function(Me){var Oe=he(this);if(l(Me)){var be=s(Me);return!0===be?U(Oe).get(Me):be?be[Oe.id]:void 0}},set:function(Me,Oe){return ce(this,Me,Oe)}}:{add:function(Me){return ce(this,Me,!0)}}),fe}}},41603:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(31864),s=o(47964),a=o(87215),l=o(87763),u=o(64238),h=o(53284),_=o(86063),m=o(25591),b=o(60726),C=o(8597),D=o(56297),x=o(58242),j=o(38267);Ge.exports=function(H,z,U){var M=-1!==H.indexOf("Map"),I=-1!==H.indexOf("Weak"),J=M?"set":"add",Y=e[H],ie=Y&&Y.prototype,oe=Y,fe={},ne=function(ue){var He=s(ie[ue]);l(ie,ue,"add"==ue?function(F){return He(this,0===F?0:F),this}:"delete"==ue?function($e){return!(I&&!b($e))&&He(this,0===$e?0:$e)}:"get"==ue?function(F){return I&&!b(F)?void 0:He(this,0===F?0:F)}:"has"==ue?function(F){return!(I&&!b(F))&&He(this,0===F?0:F)}:function(F,je){return He(this,0===F?0:F,je),this})};if(a(H,!m(Y)||!(I||ie.forEach&&!C(function(){(new Y).entries().next()}))))oe=U.getConstructor(z,H,M,J),u.enable();else if(a(H,!0)){var ce=new oe,Ae=ce[J](I?{}:-0,1)!=ce,Me=C(function(){ce.has(1)}),Oe=D(function(ue){new Y(ue)}),be=!I&&C(function(){for(var ue=new Y,He=5;He--;)ue[J](He,He);return!ue.has(-0)});Oe||((oe=z(function(ue,He){_(ue,ie);var $e=j(new Y,ue,oe);return null!=He&&h(He,$e[J],{that:$e,AS_ENTRIES:M}),$e})).prototype=ie,ie.constructor=oe),(Me||be)&&(ne("delete"),ne("has"),M&&ne("get")),(be||Ae)&&ne(J),I&&ie.clear&&delete ie.clear}return fe[H]=oe,t({global:!0,forced:oe!=Y},fe),x(oe,H),I||U.setStrong(oe,H,M),oe}},30009:(Ge,g,o)=>{var t=o(62445),e=o(99376),s=o(93099),a=o(52975);Ge.exports=function(l,u,h){for(var _=e(u),m=a.f,b=s.f,C=0;C<_.length;C++){var D=_[C];!t(l,D)&&(!h||!t(h,D))&&m(l,D,b(u,D))}}},51335:(Ge,g,o)=>{var t=o(8597);Ge.exports=!t(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},17453:(Ge,g,o)=>{"use strict";var t=o(92053).IteratorPrototype,e=o(38724),s=o(53203),a=o(58242),l=o(72339),u=function(){return this};Ge.exports=function(h,_,m,b){var C=_+" Iterator";return h.prototype=e(t,{next:s(+!b,m)}),a(h,C,!1,!0),l[C]=u,h}},815:(Ge,g,o)=>{var t=o(47012),e=o(52975),s=o(53203);Ge.exports=t?function(a,l,u){return e.f(a,l,s(1,u))}:function(a,l,u){return a[l]=u,a}},53203:Ge=>{Ge.exports=function(g,o){return{enumerable:!(1&g),configurable:!(2&g),writable:!(4&g),value:o}}},45347:(Ge,g,o)=>{"use strict";var t=o(16582),e=o(52975),s=o(53203);Ge.exports=function(a,l,u){var h=t(l);h in a?e.f(a,h,s(0,u)):a[h]=u}},66038:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(757),s=o(97515),a=o(20538),l=o(25591),u=o(17453),h=o(3963),_=o(91464),m=o(58242),b=o(815),C=o(87763),D=o(84563),x=o(72339),j=o(92053),H=a.PROPER,z=a.CONFIGURABLE,U=j.IteratorPrototype,M=j.BUGGY_SAFARI_ITERATORS,I=D("iterator"),J="keys",Y="values",ie="entries",oe=function(){return this};Ge.exports=function(fe,ne,he,ce,Ae,Me,Oe){u(he,ne,ce);var lt,nn,St,be=function(At){if(At===Ae&&je)return je;if(!M&&At in $e)return $e[At];switch(At){case J:case Y:case ie:return function(){return new he(this,At)}}return function(){return new he(this)}},ue=ne+" Iterator",He=!1,$e=fe.prototype,F=$e[I]||$e["@@iterator"]||Ae&&$e[Ae],je=!M&&F||be(Ae),Et="Array"==ne&&$e.entries||F;if(Et&&(lt=h(Et.call(new fe)))!==Object.prototype&&lt.next&&(!s&&h(lt)!==U&&(_?_(lt,U):l(lt[I])||C(lt,I,oe)),m(lt,ue,!0,!0),s&&(x[ue]=oe)),H&&Ae==Y&&F&&F.name!==Y&&(!s&&z?b($e,"name",Y):(He=!0,je=function(){return e(F,this)})),Ae)if(nn={values:be(Y),keys:Me?je:be(J),entries:be(ie)},Oe)for(St in nn)(M||He||!(St in $e))&&C($e,St,nn[St]);else t({target:ne,proto:!0,forced:M||He},nn);return(!s||Oe)&&$e[I]!==je&&C($e,I,je,{name:Ae}),x[ne]=je,nn}},47012:(Ge,g,o)=>{var t=o(8597);Ge.exports=!t(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},85815:(Ge,g,o)=>{var t=o(31864),e=o(60726),s=t.document,a=e(s)&&e(s.createElement);Ge.exports=function(l){return a?s.createElement(l):{}}},26877:Ge=>{Ge.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},20713:(Ge,g,o)=>{var e=o(85815)("span").classList,s=e&&e.constructor&&e.constructor.prototype;Ge.exports=s===Object.prototype?void 0:s},32002:(Ge,g,o)=>{var t=o(96644),e=o(31864);Ge.exports="process"==t(e.process)},73792:(Ge,g,o)=>{var t=o(73626);Ge.exports=t("navigator","userAgent")||""},17189:(Ge,g,o)=>{var h,_,t=o(31864),e=o(73792),s=t.process,a=t.Deno,l=s&&s.versions||a&&a.version,u=l&&l.v8;u&&(_=(h=u.split("."))[0]>0&&h[0]<4?1:+(h[0]+h[1])),!_&&e&&(!(h=e.match(/Edge\/(\d+)/))||h[1]>=74)&&(h=e.match(/Chrome\/(\d+)/))&&(_=+h[1]),Ge.exports=_},71001:Ge=>{Ge.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},51163:(Ge,g,o)=>{var t=o(31864),e=o(93099).f,s=o(815),a=o(87763),l=o(22341),u=o(30009),h=o(87215);Ge.exports=function(_,m){var j,H,z,U,M,b=_.target,C=_.global,D=_.stat;if(j=C?t:D?t[b]||l(b,{}):(t[b]||{}).prototype)for(H in m){if(U=m[H],z=_.noTargetGet?(M=e(j,H))&&M.value:j[H],!h(C?H:b+(D?".":"#")+H,_.forced)&&void 0!==z){if(typeof U==typeof z)continue;u(U,z)}(_.sham||z&&z.sham)&&s(U,"sham",!0),a(j,H,U,_)}}},8597:Ge=>{Ge.exports=function(g){try{return!!g()}catch(o){return!0}}},9357:(Ge,g,o)=>{"use strict";o(69665);var t=o(47964),e=o(87763),s=o(93084),a=o(8597),l=o(84563),u=o(815),h=l("species"),_=RegExp.prototype;Ge.exports=function(m,b,C,D){var x=l(m),j=!a(function(){var M={};return M[x]=function(){return 7},7!=""[m](M)}),H=j&&!a(function(){var M=!1,I=/a/;return"split"===m&&((I={}).constructor={},I.constructor[h]=function(){return I},I.flags="",I[x]=/./[x]),I.exec=function(){return M=!0,null},I[x](""),!M});if(!j||!H||C){var z=t(/./[x]),U=b(x,""[m],function(M,I,J,Y,ie){var oe=t(M),fe=I.exec;return fe===s||fe===_.exec?j&&!ie?{done:!0,value:z(I,J,Y)}:{done:!0,value:oe(J,I,Y)}:{done:!1}});e(String.prototype,m,U[0]),e(_,x,U[1])}D&&u(_[x],"sham",!0)}},39352:(Ge,g,o)=>{var t=o(8597);Ge.exports=!t(function(){return Object.isExtensible(Object.preventExtensions({}))})},32328:Ge=>{var g=Function.prototype,o=g.apply,e=g.call;Ge.exports="object"==typeof Reflect&&Reflect.apply||(g.bind?e.bind(o):function(){return e.apply(o,arguments)})},29727:(Ge,g,o)=>{var t=o(47964),e=o(77340),s=t(t.bind);Ge.exports=function(a,l){return e(a),void 0===l?a:s?s(a,l):function(){return a.apply(l,arguments)}}},757:Ge=>{var g=Function.prototype.call;Ge.exports=g.bind?g.bind(g):function(){return g.apply(g,arguments)}},20538:(Ge,g,o)=>{var t=o(47012),e=o(62445),s=Function.prototype,a=t&&Object.getOwnPropertyDescriptor,l=e(s,"name"),u=l&&"something"===function(){}.name,h=l&&(!t||t&&a(s,"name").configurable);Ge.exports={EXISTS:l,PROPER:u,CONFIGURABLE:h}},47964:Ge=>{var g=Function.prototype,o=g.bind,t=g.call,e=o&&o.bind(t,t);Ge.exports=o?function(s){return s&&e(s)}:function(s){return s&&function(){return t.apply(s,arguments)}}},73626:(Ge,g,o)=>{var t=o(31864),e=o(25591),s=function(a){return e(a)?a:void 0};Ge.exports=function(a,l){return arguments.length<2?s(t[a]):t[a]&&t[a][l]}},63076:(Ge,g,o)=>{var t=o(99420),e=o(35642),s=o(72339),l=o(84563)("iterator");Ge.exports=function(u){if(null!=u)return e(u,l)||e(u,"@@iterator")||s[t(u)]}},36414:(Ge,g,o)=>{var t=o(31864),e=o(757),s=o(77340),a=o(21099),l=o(60802),u=o(63076),h=t.TypeError;Ge.exports=function(_,m){var b=arguments.length<2?u(_):m;if(s(b))return a(e(b,_));throw h(l(_)+" is not iterable")}},35642:(Ge,g,o)=>{var t=o(77340);Ge.exports=function(e,s){var a=e[s];return null==a?void 0:t(a)}},16162:(Ge,g,o)=>{var t=o(47964),e=o(16174),s=Math.floor,a=t("".charAt),l=t("".replace),u=t("".slice),h=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,_=/\$([$&'`]|\d{1,2})/g;Ge.exports=function(m,b,C,D,x,j){var H=C+m.length,z=D.length,U=_;return void 0!==x&&(x=e(x),U=h),l(j,U,function(M,I){var J;switch(a(I,0)){case"$":return"$";case"&":return m;case"`":return u(b,0,C);case"'":return u(b,H);case"<":J=x[u(I,1,-1)];break;default:var Y=+I;if(0===Y)return M;if(Y>z){var ie=s(Y/10);return 0===ie?M:ie<=z?void 0===D[ie-1]?a(I,1):D[ie-1]+a(I,1):M}J=D[Y-1]}return void 0===J?"":J})}},31864:Ge=>{var g=function(o){return o&&o.Math==Math&&o};Ge.exports=g("object"==typeof globalThis&&globalThis)||g("object"==typeof window&&window)||g("object"==typeof self&&self)||g("object"==typeof global&&global)||function(){return this}()||Function("return this")()},62445:(Ge,g,o)=>{var t=o(47964),e=o(16174),s=t({}.hasOwnProperty);Ge.exports=Object.hasOwn||function(l,u){return s(e(l),u)}},3536:Ge=>{Ge.exports={}},67538:(Ge,g,o)=>{var t=o(73626);Ge.exports=t("document","documentElement")},27091:(Ge,g,o)=>{var t=o(47012),e=o(8597),s=o(85815);Ge.exports=!t&&!e(function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a})},56169:(Ge,g,o)=>{var t=o(31864),e=o(47964),s=o(8597),a=o(96644),l=t.Object,u=e("".split);Ge.exports=s(function(){return!l("z").propertyIsEnumerable(0)})?function(h){return"String"==a(h)?u(h,""):l(h)}:l},38267:(Ge,g,o)=>{var t=o(25591),e=o(60726),s=o(91464);Ge.exports=function(a,l,u){var h,_;return s&&t(h=l.constructor)&&h!==u&&e(_=h.prototype)&&_!==u.prototype&&s(a,_),a}},87720:(Ge,g,o)=>{var t=o(47964),e=o(25591),s=o(59941),a=t(Function.toString);e(s.inspectSource)||(s.inspectSource=function(l){return a(l)}),Ge.exports=s.inspectSource},64238:(Ge,g,o)=>{var t=o(51163),e=o(47964),s=o(3536),a=o(60726),l=o(62445),u=o(52975).f,h=o(94564),_=o(7388),m=o(67117),b=o(94295),C=o(39352),D=!1,x=b("meta"),j=0,H=function(Y){u(Y,x,{value:{objectID:"O"+j++,weakData:{}}})},J=Ge.exports={enable:function(){J.enable=function(){},D=!0;var Y=h.f,ie=e([].splice),oe={};oe[x]=1,Y(oe).length&&(h.f=function(fe){for(var ne=Y(fe),he=0,ce=ne.length;he<ce;he++)if(ne[he]===x){ie(ne,he,1);break}return ne},t({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:_.f}))},fastKey:function(Y,ie){if(!a(Y))return"symbol"==typeof Y?Y:("string"==typeof Y?"S":"P")+Y;if(!l(Y,x)){if(!m(Y))return"F";if(!ie)return"E";H(Y)}return Y[x].objectID},getWeakData:function(Y,ie){if(!l(Y,x)){if(!m(Y))return!0;if(!ie)return!1;H(Y)}return Y[x].weakData},onFreeze:function(Y){return C&&D&&m(Y)&&!l(Y,x)&&H(Y),Y}};s[x]=!0},52493:(Ge,g,o)=>{var x,j,H,t=o(51635),e=o(31864),s=o(47964),a=o(60726),l=o(815),u=o(62445),h=o(59941),_=o(42650),m=o(3536),b="Object already initialized",C=e.TypeError;if(t||h.state){var M=h.state||(h.state=new(0,e.WeakMap)),I=s(M.get),J=s(M.has),Y=s(M.set);x=function(oe,fe){if(J(M,oe))throw new C(b);return fe.facade=oe,Y(M,oe,fe),fe},j=function(oe){return I(M,oe)||{}},H=function(oe){return J(M,oe)}}else{var ie=_("state");m[ie]=!0,x=function(oe,fe){if(u(oe,ie))throw new C(b);return fe.facade=oe,l(oe,ie,fe),fe},j=function(oe){return u(oe,ie)?oe[ie]:{}},H=function(oe){return u(oe,ie)}}Ge.exports={set:x,get:j,has:H,enforce:function(oe){return H(oe)?j(oe):x(oe,{})},getterFor:function(oe){return function(fe){var ne;if(!a(fe)||(ne=j(fe)).type!==oe)throw C("Incompatible receiver, "+oe+" required");return ne}}}},81643:(Ge,g,o)=>{var t=o(84563),e=o(72339),s=t("iterator"),a=Array.prototype;Ge.exports=function(l){return void 0!==l&&(e.Array===l||a[s]===l)}},47883:(Ge,g,o)=>{var t=o(96644);Ge.exports=Array.isArray||function(s){return"Array"==t(s)}},25591:Ge=>{Ge.exports=function(g){return"function"==typeof g}},57995:(Ge,g,o)=>{var t=o(47964),e=o(8597),s=o(25591),a=o(99420),l=o(73626),u=o(87720),h=function(){},_=[],m=l("Reflect","construct"),b=/^\s*(?:class|function)\b/,C=t(b.exec),D=!b.exec(h),x=function(z){if(!s(z))return!1;try{return m(h,_,z),!0}catch(U){return!1}},j=function(z){if(!s(z))return!1;switch(a(z)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return D||!!C(b,u(z))}catch(U){return!0}};j.sham=!0,Ge.exports=!m||e(function(){var H;return x(x.call)||!x(Object)||!x(function(){H=!0})||H})?j:x},87215:(Ge,g,o)=>{var t=o(8597),e=o(25591),s=/#|\.prototype\./,a=function(m,b){var C=u[l(m)];return C==_||C!=h&&(e(b)?t(b):!!b)},l=a.normalize=function(m){return String(m).replace(s,".").toLowerCase()},u=a.data={},h=a.NATIVE="N",_=a.POLYFILL="P";Ge.exports=a},60726:(Ge,g,o)=>{var t=o(25591);Ge.exports=function(e){return"object"==typeof e?null!==e:t(e)}},97515:Ge=>{Ge.exports=!1},26186:(Ge,g,o)=>{var t=o(31864),e=o(73626),s=o(25591),a=o(93290),l=o(24431),u=t.Object;Ge.exports=l?function(h){return"symbol"==typeof h}:function(h){var _=e("Symbol");return s(_)&&a(_.prototype,u(h))}},53284:(Ge,g,o)=>{var t=o(31864),e=o(29727),s=o(757),a=o(21099),l=o(60802),u=o(81643),h=o(24196),_=o(93290),m=o(36414),b=o(63076),C=o(87883),D=t.TypeError,x=function(H,z){this.stopped=H,this.result=z},j=x.prototype;Ge.exports=function(H,z,U){var oe,fe,ne,he,ce,Ae,Me,I=!(!U||!U.AS_ENTRIES),J=!(!U||!U.IS_ITERATOR),Y=!(!U||!U.INTERRUPTED),ie=e(z,U&&U.that),Oe=function(ue){return oe&&C(oe,"normal",ue),new x(!0,ue)},be=function(ue){return I?(a(ue),Y?ie(ue[0],ue[1],Oe):ie(ue[0],ue[1])):Y?ie(ue,Oe):ie(ue)};if(J)oe=H;else{if(!(fe=b(H)))throw D(l(H)+" is not iterable");if(u(fe)){for(ne=0,he=h(H);he>ne;ne++)if((ce=be(H[ne]))&&_(j,ce))return ce;return new x(!1)}oe=m(H,fe)}for(Ae=oe.next;!(Me=s(Ae,oe)).done;){try{ce=be(Me.value)}catch(ue){C(oe,"throw",ue)}if("object"==typeof ce&&ce&&_(j,ce))return ce}return new x(!1)}},87883:(Ge,g,o)=>{var t=o(757),e=o(21099),s=o(35642);Ge.exports=function(a,l,u){var h,_;e(a);try{if(!(h=s(a,"return"))){if("throw"===l)throw u;return u}h=t(h,a)}catch(m){_=!0,h=m}if("throw"===l)throw u;if(_)throw h;return e(h),u}},92053:(Ge,g,o)=>{"use strict";var b,C,D,t=o(8597),e=o(25591),s=o(38724),a=o(3963),l=o(87763),u=o(84563),h=o(97515),_=u("iterator"),m=!1;[].keys&&("next"in(D=[].keys())?(C=a(a(D)))!==Object.prototype&&(b=C):m=!0),null==b||t(function(){var j={};return b[_].call(j)!==j})?b={}:h&&(b=s(b)),e(b[_])||l(b,_,function(){return this}),Ge.exports={IteratorPrototype:b,BUGGY_SAFARI_ITERATORS:m}},72339:Ge=>{Ge.exports={}},24196:(Ge,g,o)=>{var t=o(15902);Ge.exports=function(e){return t(e.length)}},77040:(Ge,g,o)=>{var t=o(17189),e=o(8597);Ge.exports=!!Object.getOwnPropertySymbols&&!e(function(){var s=Symbol();return!String(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&t&&t<41})},51635:(Ge,g,o)=>{var t=o(31864),e=o(25591),s=o(87720),a=t.WeakMap;Ge.exports=e(a)&&/native code/.test(s(a))},43656:(Ge,g,o)=>{var t=o(31864),e=o(8597),s=o(47964),a=o(73574),l=o(51664).trim,u=o(48004),h=t.parseInt,_=t.Symbol,m=_&&_.iterator,b=/^[+-]?0x/i,C=s(b.exec),D=8!==h(u+"08")||22!==h(u+"0x16")||m&&!e(function(){h(Object(m))});Ge.exports=D?function(j,H){var z=l(a(j));return h(z,H>>>0||(C(b,z)?16:10))}:h},51746:(Ge,g,o)=>{"use strict";var t=o(47012),e=o(47964),s=o(757),a=o(8597),l=o(68032),u=o(77593),h=o(5600),_=o(16174),m=o(56169),b=Object.assign,C=Object.defineProperty,D=e([].concat);Ge.exports=!b||a(function(){if(t&&1!==b({b:1},b(C({},"a",{enumerable:!0,get:function(){C(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var x={},j={},H=Symbol(),z="abcdefghijklmnopqrst";return x[H]=7,z.split("").forEach(function(U){j[U]=U}),7!=b({},x)[H]||l(b({},j)).join("")!=z})?function(j,H){for(var z=_(j),U=arguments.length,M=1,I=u.f,J=h.f;U>M;)for(var ne,Y=m(arguments[M++]),ie=I?D(l(Y),I(Y)):l(Y),oe=ie.length,fe=0;oe>fe;)ne=ie[fe++],(!t||s(J,Y,ne))&&(z[ne]=Y[ne]);return z}:b},38724:(Ge,g,o)=>{var U,t=o(21099),e=o(10988),s=o(71001),a=o(3536),l=o(67538),u=o(85815),h=o(42650),b="prototype",C="script",D=h("IE_PROTO"),x=function(){},j=function(I){return"<"+C+">"+I+"</"+C+">"},H=function(I){I.write(j("")),I.close();var J=I.parentWindow.Object;return I=null,J},M=function(){try{U=new ActiveXObject("htmlfile")}catch(J){}M="undefined"!=typeof document?document.domain&&U?H(U):function(){var Y,I=u("iframe");return I.style.display="none",l.appendChild(I),I.src=String("javascript:"),(Y=I.contentWindow.document).open(),Y.write(j("document.F=Object")),Y.close(),Y.F}():H(U);for(var I=s.length;I--;)delete M[b][s[I]];return M()};a[D]=!0,Ge.exports=Object.create||function(J,Y){var ie;return null!==J?(x[b]=t(J),ie=new x,x[b]=null,ie[D]=J):ie=M(),void 0===Y?ie:e.f(ie,Y)}},10988:(Ge,g,o)=>{var t=o(47012),e=o(52339),s=o(52975),a=o(21099),l=o(8643),u=o(68032);g.f=t&&!e?Object.defineProperties:function(_,m){a(_);for(var j,b=l(m),C=u(m),D=C.length,x=0;D>x;)s.f(_,j=C[x++],b[j]);return _}},52975:(Ge,g,o)=>{var t=o(31864),e=o(47012),s=o(27091),a=o(52339),l=o(21099),u=o(16582),h=t.TypeError,_=Object.defineProperty,m=Object.getOwnPropertyDescriptor,b="enumerable",C="configurable",D="writable";g.f=e?a?function(j,H,z){if(l(j),H=u(H),l(z),"function"==typeof j&&"prototype"===H&&"value"in z&&D in z&&!z[D]){var U=m(j,H);U&&U[D]&&(j[H]=z.value,z={configurable:C in z?z[C]:U[C],enumerable:b in z?z[b]:U[b],writable:!1})}return _(j,H,z)}:_:function(j,H,z){if(l(j),H=u(H),l(z),s)try{return _(j,H,z)}catch(U){}if("get"in z||"set"in z)throw h("Accessors not supported");return"value"in z&&(j[H]=z.value),j}},93099:(Ge,g,o)=>{var t=o(47012),e=o(757),s=o(5600),a=o(53203),l=o(8643),u=o(16582),h=o(62445),_=o(27091),m=Object.getOwnPropertyDescriptor;g.f=t?m:function(C,D){if(C=l(C),D=u(D),_)try{return m(C,D)}catch(x){}if(h(C,D))return a(!e(s.f,C,D),C[D])}},7388:(Ge,g,o)=>{var t=o(96644),e=o(8643),s=o(94564).f,a=o(32342),l="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];Ge.exports.f=function(_){return l&&"Window"==t(_)?function(h){try{return s(h)}catch(_){return a(l)}}(_):s(e(_))}},94564:(Ge,g,o)=>{var t=o(77759),s=o(71001).concat("length","prototype");g.f=Object.getOwnPropertyNames||function(l){return t(l,s)}},77593:(Ge,g)=>{g.f=Object.getOwnPropertySymbols},3963:(Ge,g,o)=>{var t=o(31864),e=o(62445),s=o(25591),a=o(16174),l=o(42650),u=o(51335),h=l("IE_PROTO"),_=t.Object,m=_.prototype;Ge.exports=u?_.getPrototypeOf:function(b){var C=a(b);if(e(C,h))return C[h];var D=C.constructor;return s(D)&&C instanceof D?D.prototype:C instanceof _?m:null}},67117:(Ge,g,o)=>{var t=o(8597),e=o(60726),s=o(96644),a=o(93241),l=Object.isExtensible,u=t(function(){l(1)});Ge.exports=u||a?function(_){return!(!e(_)||a&&"ArrayBuffer"==s(_))&&(!l||l(_))}:l},93290:(Ge,g,o)=>{var t=o(47964);Ge.exports=t({}.isPrototypeOf)},77759:(Ge,g,o)=>{var t=o(47964),e=o(62445),s=o(8643),a=o(70452).indexOf,l=o(3536),u=t([].push);Ge.exports=function(h,_){var D,m=s(h),b=0,C=[];for(D in m)!e(l,D)&&e(m,D)&&u(C,D);for(;_.length>b;)e(m,D=_[b++])&&(~a(C,D)||u(C,D));return C}},68032:(Ge,g,o)=>{var t=o(77759),e=o(71001);Ge.exports=Object.keys||function(a){return t(a,e)}},5600:(Ge,g)=>{"use strict";var o={}.propertyIsEnumerable,t=Object.getOwnPropertyDescriptor,e=t&&!o.call({1:2},1);g.f=e?function(a){var l=t(this,a);return!!l&&l.enumerable}:o},91464:(Ge,g,o)=>{var t=o(47964),e=o(21099),s=o(95143);Ge.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var u,a=!1,l={};try{(u=t(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(l,[]),a=l instanceof Array}catch(h){}return function(_,m){return e(_),s(m),a?u(_,m):_.__proto__=m,_}}():void 0)},83119:(Ge,g,o)=>{"use strict";var t=o(72900),e=o(99420);Ge.exports=t?{}.toString:function(){return"[object "+e(this)+"]"}},48297:(Ge,g,o)=>{var t=o(31864),e=o(757),s=o(25591),a=o(60726),l=t.TypeError;Ge.exports=function(u,h){var _,m;if("string"===h&&s(_=u.toString)&&!a(m=e(_,u))||s(_=u.valueOf)&&!a(m=e(_,u))||"string"!==h&&s(_=u.toString)&&!a(m=e(_,u)))return m;throw l("Can't convert object to primitive value")}},99376:(Ge,g,o)=>{var t=o(73626),e=o(47964),s=o(94564),a=o(77593),l=o(21099),u=e([].concat);Ge.exports=t("Reflect","ownKeys")||function(_){var m=s.f(l(_)),b=a.f;return b?u(m,b(_)):m}},78715:(Ge,g,o)=>{var t=o(87763);Ge.exports=function(e,s,a){for(var l in s)t(e,l,s[l],a);return e}},87763:(Ge,g,o)=>{var t=o(31864),e=o(25591),s=o(62445),a=o(815),l=o(22341),u=o(87720),h=o(52493),_=o(20538).CONFIGURABLE,m=h.get,b=h.enforce,C=String(String).split("String");(Ge.exports=function(D,x,j,H){var J,z=!!H&&!!H.unsafe,U=!!H&&!!H.enumerable,M=!!H&&!!H.noTargetGet,I=H&&void 0!==H.name?H.name:x;e(j)&&("Symbol("===String(I).slice(0,7)&&(I="["+String(I).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!s(j,"name")||_&&j.name!==I)&&a(j,"name",I),(J=b(j)).source||(J.source=C.join("string"==typeof I?I:""))),D!==t?(z?!M&&D[x]&&(U=!0):delete D[x],U?D[x]=j:a(D,x,j)):U?D[x]=j:l(x,j)})(Function.prototype,"toString",function(){return e(this)&&m(this).source||u(this)})},53793:(Ge,g,o)=>{var t=o(31864),e=o(757),s=o(21099),a=o(25591),l=o(96644),u=o(93084),h=t.TypeError;Ge.exports=function(_,m){var b=_.exec;if(a(b)){var C=e(b,_,m);return null!==C&&s(C),C}if("RegExp"===l(_))return e(u,_,m);throw h("RegExp#exec called on incompatible receiver")}},93084:(Ge,g,o)=>{"use strict";var ie,oe,t=o(757),e=o(47964),s=o(73574),a=o(41891),l=o(29895),u=o(77719),h=o(38724),_=o(52493).get,m=o(38126),b=o(31053),C=u("native-string-replace",String.prototype.replace),D=RegExp.prototype.exec,x=D,j=e("".charAt),H=e("".indexOf),z=e("".replace),U=e("".slice),M=(oe=/b*/g,t(D,ie=/a/,"a"),t(D,oe,"a"),0!==ie.lastIndex||0!==oe.lastIndex),I=l.BROKEN_CARET,J=void 0!==/()??/.exec("")[1];(M||J||I||m||b)&&(x=function(oe){var Ae,Me,Oe,be,ue,He,$e,fe=this,ne=_(fe),he=s(oe),ce=ne.raw;if(ce)return ce.lastIndex=fe.lastIndex,Ae=t(x,ce,he),fe.lastIndex=ce.lastIndex,Ae;var F=ne.groups,je=I&&fe.sticky,Et=t(a,fe),lt=fe.source,nn=0,St=he;if(je&&(Et=z(Et,"y",""),-1===H(Et,"g")&&(Et+="g"),St=U(he,fe.lastIndex),fe.lastIndex>0&&(!fe.multiline||fe.multiline&&"\n"!==j(he,fe.lastIndex-1))&&(lt="(?: "+lt+")",St=" "+St,nn++),Me=new RegExp("^(?:"+lt+")",Et)),J&&(Me=new RegExp("^"+lt+"$(?!\\s)",Et)),M&&(Oe=fe.lastIndex),be=t(D,je?Me:fe,St),je?be?(be.input=U(be.input,nn),be[0]=U(be[0],nn),be.index=fe.lastIndex,fe.lastIndex+=be[0].length):fe.lastIndex=0:M&&be&&(fe.lastIndex=fe.global?be.index+be[0].length:Oe),J&&be&&be.length>1&&t(C,be[0],Me,function(){for(ue=1;ue<arguments.length-2;ue++)void 0===arguments[ue]&&(be[ue]=void 0)}),be&&F)for(be.groups=He=h(null),ue=0;ue<F.length;ue++)He[($e=F[ue])[0]]=be[$e[1]];return be}),Ge.exports=x},41891:(Ge,g,o)=>{"use strict";var t=o(21099);Ge.exports=function(){var e=t(this),s="";return e.global&&(s+="g"),e.ignoreCase&&(s+="i"),e.multiline&&(s+="m"),e.dotAll&&(s+="s"),e.unicode&&(s+="u"),e.sticky&&(s+="y"),s}},29895:(Ge,g,o)=>{var t=o(8597),s=o(31864).RegExp,a=t(function(){var h=s("a","y");return h.lastIndex=2,null!=h.exec("abcd")}),l=a||t(function(){return!s("a","y").sticky}),u=a||t(function(){var h=s("^r","gy");return h.lastIndex=2,null!=h.exec("str")});Ge.exports={BROKEN_CARET:u,MISSED_STICKY:l,UNSUPPORTED_Y:a}},38126:(Ge,g,o)=>{var t=o(8597),s=o(31864).RegExp;Ge.exports=t(function(){var a=s(".","s");return!(a.dotAll&&a.exec("\n")&&"s"===a.flags)})},31053:(Ge,g,o)=>{var t=o(8597),s=o(31864).RegExp;Ge.exports=t(function(){var a=s("(?<a>b)","g");return"b"!==a.exec("b").groups.a||"bc"!=="b".replace(a,"$<a>c")})},95025:(Ge,g,o)=>{var e=o(31864).TypeError;Ge.exports=function(s){if(null==s)throw e("Can't call method on "+s);return s}},22341:(Ge,g,o)=>{var t=o(31864),e=Object.defineProperty;Ge.exports=function(s,a){try{e(t,s,{value:a,configurable:!0,writable:!0})}catch(l){t[s]=a}return a}},58242:(Ge,g,o)=>{var t=o(52975).f,e=o(62445),a=o(84563)("toStringTag");Ge.exports=function(l,u,h){l&&!h&&(l=l.prototype),l&&!e(l,a)&&t(l,a,{configurable:!0,value:u})}},42650:(Ge,g,o)=>{var t=o(77719),e=o(94295),s=t("keys");Ge.exports=function(a){return s[a]||(s[a]=e(a))}},59941:(Ge,g,o)=>{var t=o(31864),e=o(22341),s="__core-js_shared__",a=t[s]||e(s,{});Ge.exports=a},77719:(Ge,g,o)=>{var t=o(97515),e=o(59941);(Ge.exports=function(s,a){return e[s]||(e[s]=void 0!==a?a:{})})("versions",[]).push({version:"3.20.2",mode:t?"pure":"global",copyright:"\xa9 2022 Denis Pushkarev (zloirock.ru)"})},64487:(Ge,g,o)=>{var t=o(47964),e=o(22157),s=o(73574),a=o(95025),l=t("".charAt),u=t("".charCodeAt),h=t("".slice),_=function(m){return function(b,C){var H,z,D=s(a(b)),x=e(C),j=D.length;return x<0||x>=j?m?"":void 0:(H=u(D,x))<55296||H>56319||x+1===j||(z=u(D,x+1))<56320||z>57343?m?l(D,x):H:m?h(D,x,x+2):z-56320+(H-55296<<10)+65536}};Ge.exports={codeAt:_(!1),charAt:_(!0)}},51664:(Ge,g,o)=>{var t=o(47964),e=o(95025),s=o(73574),a=o(48004),l=t("".replace),u="["+a+"]",h=RegExp("^"+u+u+"*"),_=RegExp(u+u+"*$"),m=function(b){return function(C){var D=s(e(C));return 1&b&&(D=l(D,h,"")),2&b&&(D=l(D,_,"")),D}};Ge.exports={start:m(1),end:m(2),trim:m(3)}},20222:(Ge,g,o)=>{var t=o(22157),e=Math.max,s=Math.min;Ge.exports=function(a,l){var u=t(a);return u<0?e(u+l,0):s(u,l)}},8643:(Ge,g,o)=>{var t=o(56169),e=o(95025);Ge.exports=function(s){return t(e(s))}},22157:Ge=>{var g=Math.ceil,o=Math.floor;Ge.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?o:g)(e)}},15902:(Ge,g,o)=>{var t=o(22157),e=Math.min;Ge.exports=function(s){return s>0?e(t(s),9007199254740991):0}},16174:(Ge,g,o)=>{var t=o(31864),e=o(95025),s=t.Object;Ge.exports=function(a){return s(e(a))}},28495:(Ge,g,o)=>{var t=o(31864),e=o(757),s=o(60726),a=o(26186),l=o(35642),u=o(48297),h=o(84563),_=t.TypeError,m=h("toPrimitive");Ge.exports=function(b,C){if(!s(b)||a(b))return b;var x,D=l(b,m);if(D){if(void 0===C&&(C="default"),x=e(D,b,C),!s(x)||a(x))return x;throw _("Can't convert object to primitive value")}return void 0===C&&(C="number"),u(b,C)}},16582:(Ge,g,o)=>{var t=o(28495),e=o(26186);Ge.exports=function(s){var a=t(s,"string");return e(a)?a:a+""}},72900:(Ge,g,o)=>{var s={};s[o(84563)("toStringTag")]="z",Ge.exports="[object z]"===String(s)},73574:(Ge,g,o)=>{var t=o(31864),e=o(99420),s=t.String;Ge.exports=function(a){if("Symbol"===e(a))throw TypeError("Cannot convert a Symbol value to a string");return s(a)}},60802:(Ge,g,o)=>{var e=o(31864).String;Ge.exports=function(s){try{return e(s)}catch(a){return"Object"}}},94295:(Ge,g,o)=>{var t=o(47964),e=0,s=Math.random(),a=t(1..toString);Ge.exports=function(l){return"Symbol("+(void 0===l?"":l)+")_"+a(++e+s,36)}},24431:(Ge,g,o)=>{var t=o(77040);Ge.exports=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},52339:(Ge,g,o)=>{var t=o(47012),e=o(8597);Ge.exports=t&&e(function(){return 42!=Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},84563:(Ge,g,o)=>{var t=o(31864),e=o(77719),s=o(62445),a=o(94295),l=o(77040),u=o(24431),h=e("wks"),_=t.Symbol,m=_&&_.for,b=u?_:_&&_.withoutSetter||a;Ge.exports=function(C){if(!s(h,C)||!l&&"string"!=typeof h[C]){var D="Symbol."+C;h[C]=l&&s(_,C)?_[C]:u&&m?m(D):b(D)}return h[C]}},48004:Ge=>{Ge.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},85443:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(94115).filter;t({target:"Array",proto:!0,forced:!o(37394)("filter")},{filter:function(u){return e(this,u,arguments.length>1?arguments[1]:void 0)}})},4690:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(17462);t({target:"Array",proto:!0,forced:[].forEach!=e},{forEach:e})},66837:(Ge,g,o)=>{"use strict";var t=o(8643),e=o(24094),s=o(72339),a=o(52493),l=o(52975).f,u=o(66038),h=o(97515),_=o(47012),m="Array Iterator",b=a.set,C=a.getterFor(m);Ge.exports=u(Array,"Array",function(x,j){b(this,{type:m,target:t(x),index:0,kind:j})},function(){var x=C(this),j=x.target,H=x.kind,z=x.index++;return!j||z>=j.length?(x.target=void 0,{value:void 0,done:!0}):"keys"==H?{value:z,done:!1}:"values"==H?{value:j[z],done:!1}:{value:[z,j[z]],done:!1}},"values");var D=s.Arguments=s.Array;if(e("keys"),e("values"),e("entries"),!h&&_&&"values"!==D.name)try{l(D,"name",{value:"values"})}catch(x){}},35319:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(14716).left,s=o(47051),a=o(17189),l=o(32002);t({target:"Array",proto:!0,forced:!s("reduce")||!l&&a>79&&a<83},{reduce:function(m){var b=arguments.length;return e(this,m,b,b>1?arguments[1]:void 0)}})},80477:(Ge,g,o)=>{var t=o(47012),e=o(20538).EXISTS,s=o(47964),a=o(52975).f,l=Function.prototype,u=s(l.toString),h=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,_=s(h.exec);t&&!e&&a(l,"name",{configurable:!0,get:function(){try{return _(h,u(this))[1]}catch(b){return""}}})},8868:(Ge,g,o)=>{var t=o(51163),e=o(51746);t({target:"Object",stat:!0,forced:Object.assign!==e},{assign:e})},35704:(Ge,g,o)=>{var t=o(72900),e=o(87763),s=o(83119);t||e(Object.prototype,"toString",s,{unsafe:!0})},21581:(Ge,g,o)=>{var t=o(51163),e=o(43656);t({global:!0,forced:parseInt!=e},{parseInt:e})},69665:(Ge,g,o)=>{"use strict";var t=o(51163),e=o(93084);t({target:"RegExp",proto:!0,forced:/./.exec!==e},{exec:e})},13744:(Ge,g,o)=>{"use strict";var t=o(64487).charAt,e=o(73574),s=o(52493),a=o(66038),l="String Iterator",u=s.set,h=s.getterFor(l);a(String,"String",function(_){u(this,{type:l,string:e(_),index:0})},function(){var D,m=h(this),b=m.string,C=m.index;return C>=b.length?{value:void 0,done:!0}:(D=t(b,C),m.index+=D.length,{value:D,done:!1})})},26954:(Ge,g,o)=>{"use strict";var t=o(757),e=o(9357),s=o(21099),a=o(15902),l=o(73574),u=o(95025),h=o(35642),_=o(27678),m=o(53793);e("match",function(b,C,D){return[function(j){var H=u(this),z=null==j?void 0:h(j,b);return z?t(z,j,H):new RegExp(j)[b](l(H))},function(x){var j=s(this),H=l(x),z=D(C,j,H);if(z.done)return z.value;if(!j.global)return m(j,H);var U=j.unicode;j.lastIndex=0;for(var J,M=[],I=0;null!==(J=m(j,H));){var Y=l(J[0]);M[I]=Y,""===Y&&(j.lastIndex=_(H,a(j.lastIndex),U)),I++}return 0===I?null:M}]})},66262:(Ge,g,o)=>{"use strict";var t=o(32328),e=o(757),s=o(47964),a=o(9357),l=o(8597),u=o(21099),h=o(25591),_=o(22157),m=o(15902),b=o(73574),C=o(95025),D=o(27678),x=o(35642),j=o(16162),H=o(53793),U=o(84563)("replace"),M=Math.max,I=Math.min,J=s([].concat),Y=s([].push),ie=s("".indexOf),oe=s("".slice),fe=function(Ae){return void 0===Ae?Ae:String(Ae)},ne="$0"==="a".replace(/./,"$0"),he=!!/./[U]&&""===/./[U]("a","$0");a("replace",function(Ae,Me,Oe){var be=he?"$":"$0";return[function(He,$e){var F=C(this),je=null==He?void 0:x(He,U);return je?e(je,He,F,$e):e(Me,b(F),He,$e)},function(ue,He){var $e=u(this),F=b(ue);if("string"==typeof He&&-1===ie(He,be)&&-1===ie(He,"$<")){var je=Oe(Me,$e,F,He);if(je.done)return je.value}var Et=h(He);Et||(He=b(He));var lt=$e.global;if(lt){var nn=$e.unicode;$e.lastIndex=0}for(var St=[];;){var At=H($e,F);if(null===At||(Y(St,At),!lt))break;""===b(At[0])&&($e.lastIndex=D(F,m($e.lastIndex),nn))}for(var It="",ae=0,Ie=0;Ie<St.length;Ie++){for(var dt=b((At=St[Ie])[0]),Jt=M(I(_(At.index),F.length),0),zt=[],ln=1;ln<At.length;ln++)Y(zt,fe(At[ln]));var ar=At.groups;if(Et){var Ln=J([dt],zt,Jt,F);void 0!==ar&&Y(Ln,ar);var Rn=b(t(He,void 0,Ln))}else Rn=j(dt,F,Jt,zt,ar,He);Jt>=ae&&(It+=oe(F,ae,Jt)+Rn,ae=Jt+dt.length)}return It+oe(F,ae)}]},!!l(function(){var Ae=/./;return Ae.exec=function(){var Me=[];return Me.groups={a:"7"},Me},"7"!=="".replace(Ae,"$<a>")})||!ne||he)},63438:(Ge,g,o)=>{"use strict";var D,t=o(31864),e=o(47964),s=o(78715),a=o(64238),l=o(41603),u=o(96491),h=o(60726),_=o(67117),m=o(52493).enforce,b=o(51635),C=!t.ActiveXObject&&"ActiveXObject"in t,x=function(J){return function(){return J(this,arguments.length?arguments[0]:void 0)}},j=l("WeakMap",x,u);if(b&&C){D=u.getConstructor(x,"WeakMap",!0),a.enable();var H=j.prototype,z=e(H.delete),U=e(H.has),M=e(H.get),I=e(H.set);s(H,{delete:function(J){if(h(J)&&!_(J)){var Y=m(this);return Y.frozen||(Y.frozen=new D),z(this,J)||Y.frozen.delete(J)}return z(this,J)},has:function(Y){if(h(Y)&&!_(Y)){var ie=m(this);return ie.frozen||(ie.frozen=new D),U(this,Y)||ie.frozen.has(Y)}return U(this,Y)},get:function(Y){if(h(Y)&&!_(Y)){var ie=m(this);return ie.frozen||(ie.frozen=new D),U(this,Y)?M(this,Y):ie.frozen.get(Y)}return M(this,Y)},set:function(Y,ie){if(h(Y)&&!_(Y)){var oe=m(this);oe.frozen||(oe.frozen=new D),U(this,Y)?I(this,Y,ie):oe.frozen.set(Y,ie)}else I(this,Y,ie);return this}})}},22603:(Ge,g,o)=>{var t=o(31864),e=o(26877),s=o(20713),a=o(66837),l=o(815),u=o(84563),h=u("iterator"),_=u("toStringTag"),m=a.values,b=function(D,x){if(D){if(D[h]!==m)try{l(D,h,m)}catch(H){D[h]=m}if(D[_]||l(D,_,x),e[x])for(var j in a)if(D[j]!==a[j])try{l(D,j,a[j])}catch(H){D[j]=a[j]}}};for(var C in e)b(t[C]&&t[C].prototype,C);b(s,"DOMTokenList")},64762:(Ge,g,o)=>{"use strict";function a(ce,Ae){var Me={};for(var Oe in ce)Object.prototype.hasOwnProperty.call(ce,Oe)&&Ae.indexOf(Oe)<0&&(Me[Oe]=ce[Oe]);if(null!=ce&&"function"==typeof Object.getOwnPropertySymbols){var be=0;for(Oe=Object.getOwnPropertySymbols(ce);be<Oe.length;be++)Ae.indexOf(Oe[be])<0&&Object.prototype.propertyIsEnumerable.call(ce,Oe[be])&&(Me[Oe[be]]=ce[Oe[be]])}return Me}function l(ce,Ae,Me,Oe){var He,be=arguments.length,ue=be<3?Ae:null===Oe?Oe=Object.getOwnPropertyDescriptor(Ae,Me):Oe;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)ue=Reflect.decorate(ce,Ae,Me,Oe);else for(var $e=ce.length-1;$e>=0;$e--)(He=ce[$e])&&(ue=(be<3?He(ue):be>3?He(Ae,Me,ue):He(Ae,Me))||ue);return be>3&&ue&&Object.defineProperty(Ae,Me,ue),ue}function u(ce,Ae){return function(Me,Oe){Ae(Me,Oe,ce)}}function h(ce,Ae){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(ce,Ae)}o.d(g,{_T:()=>a,gn:()=>l,fM:()=>u,w6:()=>h})},46700:(Ge,g,o)=>{var t={"./af":26431,"./af.js":26431,"./ar":81286,"./ar-dz":1616,"./ar-dz.js":1616,"./ar-kw":9759,"./ar-kw.js":9759,"./ar-ly":43160,"./ar-ly.js":43160,"./ar-ma":62551,"./ar-ma.js":62551,"./ar-sa":79989,"./ar-sa.js":79989,"./ar-tn":6962,"./ar-tn.js":6962,"./ar.js":81286,"./az":15887,"./az.js":15887,"./be":14572,"./be.js":14572,"./bg":3276,"./bg.js":3276,"./bm":93344,"./bm.js":93344,"./bn":58985,"./bn-bd":83990,"./bn-bd.js":83990,"./bn.js":58985,"./bo":94391,"./bo.js":94391,"./br":46728,"./br.js":46728,"./bs":5536,"./bs.js":5536,"./ca":41043,"./ca.js":41043,"./cs":70420,"./cs.js":70420,"./cv":33513,"./cv.js":33513,"./cy":6771,"./cy.js":6771,"./da":47978,"./da.js":47978,"./de":46061,"./de-at":25204,"./de-at.js":25204,"./de-ch":2653,"./de-ch.js":2653,"./de.js":46061,"./dv":85,"./dv.js":85,"./el":8579,"./el.js":8579,"./en-au":25724,"./en-au.js":25724,"./en-ca":10525,"./en-ca.js":10525,"./en-gb":52847,"./en-gb.js":52847,"./en-ie":67216,"./en-ie.js":67216,"./en-il":39305,"./en-il.js":39305,"./en-in":73364,"./en-in.js":73364,"./en-nz":79130,"./en-nz.js":79130,"./en-sg":11161,"./en-sg.js":11161,"./eo":50802,"./eo.js":50802,"./es":40328,"./es-do":45551,"./es-do.js":45551,"./es-mx":75615,"./es-mx.js":75615,"./es-us":64790,"./es-us.js":64790,"./es.js":40328,"./et":96389,"./et.js":96389,"./eu":52961,"./eu.js":52961,"./fa":26151,"./fa.js":26151,"./fi":7997,"./fi.js":7997,"./fil":58898,"./fil.js":58898,"./fo":37779,"./fo.js":37779,"./fr":28174,"./fr-ca":3287,"./fr-ca.js":3287,"./fr-ch":38867,"./fr-ch.js":38867,"./fr.js":28174,"./fy":50452,"./fy.js":50452,"./ga":45014,"./ga.js":45014,"./gd":74127,"./gd.js":74127,"./gl":72124,"./gl.js":72124,"./gom-deva":6444,"./gom-deva.js":6444,"./gom-latn":37953,"./gom-latn.js":37953,"./gu":76604,"./gu.js":76604,"./he":1222,"./he.js":1222,"./hi":74235,"./hi.js":74235,"./hr":622,"./hr.js":622,"./hu":37735,"./hu.js":37735,"./hy-am":90402,"./hy-am.js":90402,"./id":59187,"./id.js":59187,"./is":30536,"./is.js":30536,"./it":35007,"./it-ch":94667,"./it-ch.js":94667,"./it.js":35007,"./ja":62093,"./ja.js":62093,"./jv":80059,"./jv.js":80059,"./ka":66870,"./ka.js":66870,"./kk":80880,"./kk.js":80880,"./km":1083,"./km.js":1083,"./kn":68785,"./kn.js":68785,"./ko":21721,"./ko.js":21721,"./ku":37851,"./ku.js":37851,"./ky":1727,"./ky.js":1727,"./lb":40346,"./lb.js":40346,"./lo":93002,"./lo.js":93002,"./lt":64035,"./lt.js":64035,"./lv":56927,"./lv.js":56927,"./me":5634,"./me.js":5634,"./mi":94173,"./mi.js":94173,"./mk":86320,"./mk.js":86320,"./ml":11705,"./ml.js":11705,"./mn":31062,"./mn.js":31062,"./mr":92805,"./mr.js":92805,"./ms":11341,"./ms-my":59900,"./ms-my.js":59900,"./ms.js":11341,"./mt":37734,"./mt.js":37734,"./my":19034,"./my.js":19034,"./nb":9324,"./nb.js":9324,"./ne":46495,"./ne.js":46495,"./nl":70673,"./nl-be":76272,"./nl-be.js":76272,"./nl.js":70673,"./nn":72486,"./nn.js":72486,"./oc-lnc":46219,"./oc-lnc.js":46219,"./pa-in":2829,"./pa-in.js":2829,"./pl":78444,"./pl.js":78444,"./pt":53170,"./pt-br":66117,"./pt-br.js":66117,"./pt.js":53170,"./ro":96587,"./ro.js":96587,"./ru":39264,"./ru.js":39264,"./sd":42135,"./sd.js":42135,"./se":95366,"./se.js":95366,"./si":93379,"./si.js":93379,"./sk":46143,"./sk.js":46143,"./sl":196,"./sl.js":196,"./sq":21082,"./sq.js":21082,"./sr":91621,"./sr-cyrl":98963,"./sr-cyrl.js":98963,"./sr.js":91621,"./ss":41404,"./ss.js":41404,"./sv":55685,"./sv.js":55685,"./sw":3872,"./sw.js":3872,"./ta":54106,"./ta.js":54106,"./te":39204,"./te.js":39204,"./tet":83692,"./tet.js":83692,"./tg":86361,"./tg.js":86361,"./th":31735,"./th.js":31735,"./tk":1568,"./tk.js":1568,"./tl-ph":96129,"./tl-ph.js":96129,"./tlh":13759,"./tlh.js":13759,"./tr":81644,"./tr.js":81644,"./tzl":90875,"./tzl.js":90875,"./tzm":16878,"./tzm-latn":11041,"./tzm-latn.js":11041,"./tzm.js":16878,"./ug-cn":74357,"./ug-cn.js":74357,"./uk":74810,"./uk.js":74810,"./ur":86794,"./ur.js":86794,"./uz":28966,"./uz-latn":77959,"./uz-latn.js":77959,"./uz.js":28966,"./vi":35386,"./vi.js":35386,"./x-pseudo":23156,"./x-pseudo.js":23156,"./yo":68028,"./yo.js":68028,"./zh-cn":9330,"./zh-cn.js":9330,"./zh-hk":89380,"./zh-hk.js":89380,"./zh-mo":60874,"./zh-mo.js":60874,"./zh-tw":96508,"./zh-tw.js":96508};function e(a){var l=s(a);return o(l)}function s(a){if(!o.o(t,a)){var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}return t[a]}e.keys=function(){return Object.keys(t)},e.resolve=s,Ge.exports=e,e.id=46700},64291:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>U});var s=o(66224);const l=function(M,I){for(var J=M.length;J--;)if((0,s.Z)(M[J][0],I))return J;return-1};var h=Array.prototype.splice;function z(M){var I=-1,J=null==M?0:M.length;for(this.clear();++I<J;){var Y=M[I];this.set(Y[0],Y[1])}}z.prototype.clear=function(){this.__data__=[],this.size=0},z.prototype.delete=function(M){var I=this.__data__,J=l(I,M);return!(J<0||(J==I.length-1?I.pop():h.call(I,J,1),--this.size,0))},z.prototype.get=function(M){var I=this.__data__,J=l(I,M);return J<0?void 0:I[J][1]},z.prototype.has=function(M){return l(this.__data__,M)>-1},z.prototype.set=function(M,I){var J=this.__data__,Y=l(J,M);return Y<0?(++this.size,J.push([M,I])):J[Y][1]=I,this};const U=z},54673:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var t=o(30214),e=o(40309);const a=(0,t.Z)(e.Z,"Map")},79489:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>nn});const s=(0,o(30214).Z)(Object,"create");var b=Object.prototype.hasOwnProperty;var j=Object.prototype.hasOwnProperty;function J(St){var At=-1,Qe=null==St?0:St.length;for(this.clear();++At<Qe;){var It=St[At];this.set(It[0],It[1])}}J.prototype.clear=function(){this.__data__=s?s(null):{},this.size=0},J.prototype.delete=function(St){var At=this.has(St)&&delete this.__data__[St];return this.size-=At?1:0,At},J.prototype.get=function(St){var At=this.__data__;if(s){var Qe=At[St];return"__lodash_hash_undefined__"===Qe?void 0:Qe}return b.call(At,St)?At[St]:void 0},J.prototype.has=function(St){var At=this.__data__;return s?void 0!==At[St]:j.call(At,St)},J.prototype.set=function(St,At){var Qe=this.__data__;return this.size+=this.has(St)?0:1,Qe[St]=s&&void 0===At?"__lodash_hash_undefined__":At,this};const Y=J;var ie=o(64291),oe=o(54673);const Me=function(St,At){var Qe=St.__data__;return function(St){var At=typeof St;return"string"==At||"number"==At||"symbol"==At||"boolean"==At?"__proto__"!==St:null===St}(At)?Qe["string"==typeof At?"string":"hash"]:Qe.map};function lt(St){var At=-1,Qe=null==St?0:St.length;for(this.clear();++At<Qe;){var It=St[At];this.set(It[0],It[1])}}lt.prototype.clear=function(){this.size=0,this.__data__={hash:new Y,map:new(oe.Z||ie.Z),string:new Y}},lt.prototype.delete=function(St){var At=Me(this,St).delete(St);return this.size-=At?1:0,At},lt.prototype.get=function(St){return Me(this,St).get(St)},lt.prototype.has=function(St){return Me(this,St).has(St)},lt.prototype.set=function(St,At){var Qe=Me(this,St),It=Qe.size;return Qe.set(St,At),this.size+=Qe.size==It?0:1,this};const nn=lt},7475:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>z});var t=o(64291);var b=o(54673),C=o(79489);function H(U){var M=this.__data__=new t.Z(U);this.size=M.size}H.prototype.clear=function(){this.__data__=new t.Z,this.size=0},H.prototype.delete=function(U){var M=this.__data__,I=M.delete(U);return this.size=M.size,I},H.prototype.get=function(U){return this.__data__.get(U)},H.prototype.has=function(U){return this.__data__.has(U)},H.prototype.set=function(U,M){var I=this.__data__;if(I instanceof t.Z){var J=I.__data__;if(!b.Z||J.length<199)return J.push([U,M]),this.size=++I.size,this;I=this.__data__=new C.Z(J)}return I.set(U,M),this.size=I.size,this};const z=H},35770:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});const s=o(40309).Z.Symbol},83345:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});const s=o(40309).Z.Uint8Array},39434:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>C});var s=o(2172),a=o(34654),l=o(12434),u=o(28078),h=o(99436),m=Object.prototype.hasOwnProperty;const C=function(D,x){var j=(0,a.Z)(D),H=!j&&(0,s.Z)(D),z=!j&&!H&&(0,l.Z)(D),U=!j&&!H&&!z&&(0,h.Z)(D),M=j||H||z||U,I=M?function(D,x){for(var j=-1,H=Array(D);++j<D;)H[j]=x(j);return H}(D.length,String):[],J=I.length;for(var Y in D)(x||m.call(D,Y))&&(!M||!("length"==Y||z&&("offset"==Y||"parent"==Y)||U&&("buffer"==Y||"byteLength"==Y||"byteOffset"==Y)||(0,u.Z)(Y,J)))&&I.push(Y);return I}},57052:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s,a){for(var l=-1,u=a.length,h=s.length;++l<u;)s[h+l]=a[l];return s}},15427:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>u});var t=o(2951),e=o(66224),a=Object.prototype.hasOwnProperty;const u=function(h,_,m){var b=h[_];(!a.call(h,_)||!(0,e.Z)(b,m)||void 0===m&&!(_ in h))&&(0,t.Z)(h,_,m)}},2951:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=o(99567);const s=function(a,l,u){"__proto__"==l&&t.Z?(0,t.Z)(a,l,{configurable:!0,enumerable:!0,value:u,writable:!0}):a[l]=u}},57765:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>Ke});var t=o(7475);var a=o(15427),l=o(57640),u=o(6251);var m=o(76212);var D=o(27672),x=o(36889),j=o(99913);var U=o(74202);var J=o(22018),Y=o(23359),ie=o(81901),fe=Object.prototype.hasOwnProperty;var ce=o(80609);var Oe=/\w*$/;var He=o(35770),$e=He.Z?He.Z.prototype:void 0,F=$e?$e.valueOf:void 0;var lt=o(1044);const Kt=function(Xe,Vt,Ct){var rt=Xe.constructor;switch(Vt){case"[object ArrayBuffer]":return(0,ce.Z)(Xe);case"[object Boolean]":case"[object Date]":return new rt(+Xe);case"[object DataView]":return function(Xe,Vt){var Ct=Vt?(0,ce.Z)(Xe.buffer):Xe.buffer;return new Xe.constructor(Ct,Xe.byteOffset,Xe.byteLength)}(Xe,Ct);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,lt.Z)(Xe,Ct);case"[object Map]":return new rt;case"[object Number]":case"[object String]":return new rt(Xe);case"[object RegExp]":return function(Xe){var Vt=new Xe.constructor(Xe.source,Oe.exec(Xe));return Vt.lastIndex=Xe.lastIndex,Vt}(Xe);case"[object Set]":return new rt;case"[object Symbol]":return function(Xe){return F?Object(F.call(Xe)):{}}(Xe)}};var dn=o(22595),Kn=o(34654),qn=o(12434),Sn=o(6539);var Dn=o(21162),mn=o(48514),jn=mn.Z&&mn.Z.isMap;const ut=jn?(0,Dn.Z)(jn):function(Xe){return(0,Sn.Z)(Xe)&&"[object Map]"==(0,ie.Z)(Xe)};var mt=o(4214);var jt=mn.Z&&mn.Z.isSet;const Qn=jt?(0,Dn.Z)(jt):function(Xe){return(0,Sn.Z)(Xe)&&"[object Set]"==(0,ie.Z)(Xe)};var Ue="[object Arguments]",Ut="[object Function]",An="[object Object]",se={};se[Ue]=se["[object Array]"]=se["[object ArrayBuffer]"]=se["[object DataView]"]=se["[object Boolean]"]=se["[object Date]"]=se["[object Float32Array]"]=se["[object Float64Array]"]=se["[object Int8Array]"]=se["[object Int16Array]"]=se["[object Int32Array]"]=se["[object Map]"]=se["[object Number]"]=se[An]=se["[object RegExp]"]=se["[object Set]"]=se["[object String]"]=se["[object Symbol]"]=se["[object Uint8Array]"]=se["[object Uint8ClampedArray]"]=se["[object Uint16Array]"]=se["[object Uint32Array]"]=!0,se["[object Error]"]=se[Ut]=se["[object WeakMap]"]=!1;const Ke=function ct(Xe,Vt,Ct,rt,bt,We){var $t,or=1&Vt,Zn=2&Vt,Vr=4&Vt;if(Ct&&($t=bt?Ct(Xe,rt,bt,We):Ct(Xe)),void 0!==$t)return $t;if(!(0,mt.Z)(Xe))return Xe;var Cr=(0,Kn.Z)(Xe);if(Cr){if($t=function(Xe){var Vt=Xe.length,Ct=new Xe.constructor(Vt);return Vt&&"string"==typeof Xe[0]&&fe.call(Xe,"index")&&(Ct.index=Xe.index,Ct.input=Xe.input),Ct}(Xe),!or)return(0,x.Z)(Xe,$t)}else{var ai=(0,ie.Z)(Xe),Dr=ai==Ut||"[object GeneratorFunction]"==ai;if((0,qn.Z)(Xe))return(0,D.Z)(Xe,or);if(ai==An||ai==Ue||Dr&&!bt){if($t=Zn||Dr?{}:(0,dn.Z)(Xe),!or)return Zn?function(Xe,Vt){return(0,l.Z)(Xe,(0,U.Z)(Xe),Vt)}(Xe,function(Xe,Vt){return Xe&&(0,l.Z)(Vt,(0,m.Z)(Vt),Xe)}($t,Xe)):function(Xe,Vt){return(0,l.Z)(Xe,(0,j.Z)(Xe),Vt)}(Xe,function(Xe,Vt){return Xe&&(0,l.Z)(Vt,(0,u.Z)(Vt),Xe)}($t,Xe))}else{if(!se[ai])return bt?Xe:{};$t=Kt(Xe,ai,or)}}We||(We=new t.Z);var Qr=We.get(Xe);if(Qr)return Qr;We.set(Xe,$t),Qn(Xe)?Xe.forEach(function(Ei){$t.add(ct(Ei,Vt,Ct,Ei,Xe,We))}):ut(Xe)&&Xe.forEach(function(Ei,wi){$t.set(wi,ct(Ei,Vt,Ct,wi,Xe,We))});var fi=Cr?void 0:(Vr?Zn?Y.Z:J.Z:Zn?m.Z:u.Z)(Xe);return function(Xe,Vt){for(var Ct=-1,rt=null==Xe?0:Xe.length;++Ct<rt&&!1!==Vt(Xe[Ct],Ct,Xe););}(fi||Xe,function(Ei,wi){fi&&(Ei=Xe[wi=Ei]),(0,a.Z)($t,wi,ct(Ei,Vt,Ct,wi,Xe,We))}),$t}},49137:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var t=o(57052),e=o(34654);const a=function(l,u,h){var _=u(l);return(0,e.Z)(l)?_:(0,t.Z)(_,h(l))}},46382:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>z});var t=o(35770),e=Object.prototype,s=e.hasOwnProperty,a=e.toString,l=t.Z?t.Z.toStringTag:void 0;var m=Object.prototype.toString;var j=t.Z?t.Z.toStringTag:void 0;const z=function(U){return null==U?void 0===U?"[object Undefined]":"[object Null]":j&&j in Object(U)?function(U){var M=s.call(U,l),I=U[l];try{U[l]=void 0;var J=!0}catch(ie){}var Y=a.call(U);return J&&(M?U[l]=I:delete U[l]),Y}(U):function(U){return m.call(U)}(U)}},21162:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s){return function(a){return s(a)}}},80609:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=o(83345);const s=function(a){var l=new a.constructor(a.byteLength);return new t.Z(l).set(new t.Z(a)),l}},27672:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>_});var t=o(40309),e="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=e&&"object"==typeof module&&module&&!module.nodeType&&module,l=s&&s.exports===e?t.Z.Buffer:void 0,u=l?l.allocUnsafe:void 0;const _=function(m,b){if(b)return m.slice();var C=m.length,D=u?u(C):new m.constructor(C);return m.copy(D),D}},1044:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=o(80609);const s=function(a,l){var u=l?(0,t.Z)(a.buffer):a.buffer;return new a.constructor(u,a.byteOffset,a.length)}},36889:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s,a){var l=-1,u=s.length;for(a||(a=Array(u));++l<u;)a[l]=s[l];return a}},57640:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var t=o(15427),e=o(2951);const a=function(l,u,h,_){var m=!h;h||(h={});for(var b=-1,C=u.length;++b<C;){var D=u[b],x=_?_(h[D],l[D],D,h,l):void 0;void 0===x&&(x=l[D]),m?(0,e.Z)(h,D,x):(0,t.Z)(h,D,x)}return h}},99567:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=o(30214);const s=function(){try{var a=(0,t.Z)(Object,"defineProperty");return a({},"",{}),a}catch(l){}}()},7746:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e="object"==typeof global&&global&&global.Object===Object&&global},22018:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>l});var t=o(49137),e=o(99913),s=o(6251);const l=function(u){return(0,t.Z)(u,s.Z,e.Z)}},23359:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>l});var t=o(49137),e=o(74202),s=o(76212);const l=function(u){return(0,t.Z)(u,s.Z,e.Z)}},30214:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>ie});var oe,t=o(58209),s=o(40309).Z["__core-js_shared__"],l=(oe=/[^.]+$/.exec(s&&s.keys&&s.keys.IE_PROTO||""))?"Symbol(src)_1."+oe:"";var _=o(4214),m=o(22035),C=/^\[object .+?Constructor\]$/,z=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const M=function(oe){return!(!(0,_.Z)(oe)||function(oe){return!!l&&l in oe}(oe))&&((0,t.Z)(oe)?z:C).test((0,m.Z)(oe))},ie=function(oe,fe){var ne=function(oe,fe){return null==oe?void 0:oe[fe]}(oe,fe);return M(ne)?ne:void 0}},11595:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});const s=(0,o(24184).Z)(Object.getPrototypeOf,Object)},99913:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>_});var s=o(38387),l=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;const _=u?function(m){return null==m?[]:(m=Object(m),function(m,b){for(var C=-1,D=null==m?0:m.length,x=0,j=[];++C<D;){var H=m[C];b(H,C,m)&&(j[x++]=H)}return j}(u(m),function(b){return l.call(m,b)}))}:s.Z},74202:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>h});var t=o(57052),e=o(11595),s=o(99913),a=o(38387);const h=Object.getOwnPropertySymbols?function(_){for(var m=[];_;)(0,t.Z)(m,(0,s.Z)(_)),_=(0,e.Z)(_);return m}:a.Z},81901:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>he});var t=o(30214),e=o(40309);const a=(0,t.Z)(e.Z,"DataView");var l=o(54673);const h=(0,t.Z)(e.Z,"Promise"),m=(0,t.Z)(e.Z,"Set"),C=(0,t.Z)(e.Z,"WeakMap");var D=o(46382),x=o(22035),j="[object Map]",z="[object Promise]",U="[object Set]",M="[object WeakMap]",I="[object DataView]",J=(0,x.Z)(a),Y=(0,x.Z)(l.Z),ie=(0,x.Z)(h),oe=(0,x.Z)(m),fe=(0,x.Z)(C),ne=D.Z;(a&&ne(new a(new ArrayBuffer(1)))!=I||l.Z&&ne(new l.Z)!=j||h&&ne(h.resolve())!=z||m&&ne(new m)!=U||C&&ne(new C)!=M)&&(ne=function(ce){var Ae=(0,D.Z)(ce),Me="[object Object]"==Ae?ce.constructor:void 0,Oe=Me?(0,x.Z)(Me):"";if(Oe)switch(Oe){case J:return I;case Y:return j;case ie:return z;case oe:return U;case fe:return M}return Ae});const he=ne},22595:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>_});var t=o(4214),e=Object.create;const a=function(){function m(){}return function(b){if(!(0,t.Z)(b))return{};if(e)return e(b);m.prototype=b;var C=new m;return m.prototype=void 0,C}}();var l=o(11595),u=o(31550);const _=function(m){return"function"!=typeof m.constructor||(0,u.Z)(m)?{}:a((0,l.Z)(m))}},28078:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var e=/^(?:0|[1-9]\d*)$/;const a=function(l,u){var h=typeof l;return!!(u=null==u?9007199254740991:u)&&("number"==h||"symbol"!=h&&e.test(l))&&l>-1&&l%1==0&&l<u}},31550:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});var t=Object.prototype;const s=function(a){var l=a&&a.constructor;return a===("function"==typeof l&&l.prototype||t)}},48514:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>h});var t=o(7746),e="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=e&&"object"==typeof module&&module&&!module.nodeType&&module,l=s&&s.exports===e&&t.Z.process;const h=function(){try{return s&&s.require&&s.require("util").types||l&&l.binding&&l.binding("util")}catch(m){}}()},24184:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s,a){return function(l){return s(a(l))}}},40309:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var t=o(7746),e="object"==typeof self&&self&&self.Object===Object&&self;const a=t.Z||e||Function("return this")()},22035:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var e=Function.prototype.toString;const a=function(l){if(null!=l){try{return e.call(l)}catch(u){}try{return l+""}catch(u){}}return""}},66224:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s,a){return s===a||s!=s&&a!=a}},2172:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>b});var t=o(46382),e=o(6539);const l=function(C){return(0,e.Z)(C)&&"[object Arguments]"==(0,t.Z)(C)};var u=Object.prototype,h=u.hasOwnProperty,_=u.propertyIsEnumerable;const b=l(function(){return arguments}())?l:function(C){return(0,e.Z)(C)&&h.call(C,"callee")&&!_.call(C,"callee")}},34654:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=Array.isArray},18402:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>a});var t=o(58209),e=o(19238);const a=function(l){return null!=l&&(0,e.Z)(l.length)&&!(0,t.Z)(l)}},12434:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>b});var t=o(40309),a="object"==typeof exports&&exports&&!exports.nodeType&&exports,l=a&&"object"==typeof module&&module&&!module.nodeType&&module,h=l&&l.exports===a?t.Z.Buffer:void 0;const b=(h?h.isBuffer:void 0)||function(){return!1}},58209:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>_});var t=o(46382),e=o(4214);const _=function(m){if(!(0,e.Z)(m))return!1;var b=(0,t.Z)(m);return"[object Function]"==b||"[object GeneratorFunction]"==b||"[object AsyncFunction]"==b||"[object Proxy]"==b}},19238:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>s});const s=function(a){return"number"==typeof a&&a>-1&&a%1==0&&a<=9007199254740991}},4214:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s){var a=typeof s;return null!=s&&("object"==a||"function"==a)}},6539:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(s){return null!=s&&"object"==typeof s}},99436:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>F});var t=o(46382),e=o(19238),s=o(6539),Ae={};Ae["[object Float32Array]"]=Ae["[object Float64Array]"]=Ae["[object Int8Array]"]=Ae["[object Int16Array]"]=Ae["[object Int32Array]"]=Ae["[object Uint8Array]"]=Ae["[object Uint8ClampedArray]"]=Ae["[object Uint16Array]"]=Ae["[object Uint32Array]"]=!0,Ae["[object Arguments]"]=Ae["[object Array]"]=Ae["[object ArrayBuffer]"]=Ae["[object Boolean]"]=Ae["[object DataView]"]=Ae["[object Date]"]=Ae["[object Error]"]=Ae["[object Function]"]=Ae["[object Map]"]=Ae["[object Number]"]=Ae["[object Object]"]=Ae["[object RegExp]"]=Ae["[object Set]"]=Ae["[object String]"]=Ae["[object WeakMap]"]=!1;var be=o(21162),ue=o(48514),He=ue.Z&&ue.Z.isTypedArray;const F=He?(0,be.Z)(He):function(je){return(0,s.Z)(je)&&(0,e.Z)(je.length)&&!!Ae[(0,t.Z)(je)]}},6251:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>D});var t=o(39434),e=o(31550);const l=(0,o(24184).Z)(Object.keys,Object);var h=Object.prototype.hasOwnProperty;var b=o(18402);const D=function(x){return(0,b.Z)(x)?(0,t.Z)(x):function(x){if(!(0,e.Z)(x))return l(x);var j=[];for(var H in Object(x))h.call(x,H)&&"constructor"!=H&&j.push(H);return j}(x)}},76212:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>D});var t=o(39434),e=o(4214),s=o(31550);var h=Object.prototype.hasOwnProperty;const m=function(x){if(!(0,e.Z)(x))return function(x){var j=[];if(null!=x)for(var H in Object(x))j.push(H);return j}(x);var j=(0,s.Z)(x),H=[];for(var z in x)"constructor"==z&&(j||!h.call(x,z))||H.push(z);return H};var b=o(18402);const D=function(x){return(0,b.Z)(x)?(0,t.Z)(x,!0):m(x)}},38387:(Ge,g,o)=>{"use strict";o.d(g,{Z:()=>e});const e=function(){return[]}}},Ge=>{Ge(Ge.s=88665)}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.86799889c70942fa9a19.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.86799889c70942fa9a19.js
new file mode 100644 (file)
index 0000000..de8588b
--- /dev/null
@@ -0,0 +1,3 @@
+var $localize=Object.assign(void 0===$localize?{}:$localize,{locale:"en-US"});
+"use strict";(function(global){global.ng=global.ng||{};global.ng.common=global.ng.common||{};global.ng.common.locales=global.ng.common.locales||{};const u=undefined;function plural(n){const i=Math.floor(Math.abs(n)),v=n.toString().replace(/^[^.]*\.?/,"").length;if(i===1&&v===0)return 1;return 5}global.ng.common.locales["en-us-posix"]=["en-US-POSIX",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","\xD7","0/00","INF","NaN",":"],["0.######","0%","\xA4\xA00.00","0.000000E+000"],"USD","$","US Dollar",{},"ltr",plural,[[["mi","n","in the morning","in the afternoon","in the evening","at night"],["midnight","noon","in the morning","in the afternoon","in the evening","at night"],u],[["midnight","noon","morning","afternoon","evening","night"],u,u],["00:00","12:00",["06:00","12:00"],["12:00","18:00"],["18:00","21:00"],["21:00","06:00"]]]]})(typeof globalThis!=="undefined"&&globalThis||typeof global!=="undefined"&&global||typeof window!=="undefined"&&window);;
+var Sm=Math.pow;(self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[]).push([[179],{98255:v=>{function S(i){return Promise.resolve().then(()=>{var r=new Error("Cannot find module '"+i+"'");throw r.code="MODULE_NOT_FOUND",r})}S.keys=()=>[],S.resolve=S,S.id=98255,v.exports=S},56083:(v,S,i)=>{"use strict";i.d(S,{l3:()=>p,_j:()=>r,LC:()=>u,ZN:()=>$,jt:()=>e,vP:()=>y,SB:()=>M,oB:()=>T,eR:()=>F,X$:()=>f,ZE:()=>se,k1:()=>ve});class r{}class u{}const p="*";function f(oe,he){return{type:7,name:oe,definitions:he,options:{}}}function e(oe,he=null){return{type:4,styles:he,timings:oe}}function y(oe,he=null){return{type:2,steps:oe,options:he}}function T(oe){return{type:6,styles:oe,offset:null}}function M(oe,he,me){return{type:0,name:oe,styles:he,options:me}}function F(oe,he,me=null){return{type:1,expr:oe,animation:he,options:me}}function ae(oe){Promise.resolve(null).then(oe)}class ${constructor(he=0,me=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=he+me}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(he=>he()),this._onDoneFns=[])}onStart(he){this._onStartFns.push(he)}onDone(he){this._onDoneFns.push(he)}onDestroy(he){this._onDestroyFns.push(he)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){ae(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(he=>he()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(he=>he()),this._onDestroyFns=[])}reset(){this._started=!1}setPosition(he){this._position=this.totalTime?he*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(he){const me="start"==he?this._onStartFns:this._onDoneFns;me.forEach(Oe=>Oe()),me.length=0}}class se{constructor(he){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=he;let me=0,Oe=0,ce=0;const dt=this.players.length;0==dt?ae(()=>this._onFinish()):this.players.forEach(ze=>{ze.onDone(()=>{++me==dt&&this._onFinish()}),ze.onDestroy(()=>{++Oe==dt&&this._onDestroy()}),ze.onStart(()=>{++ce==dt&&this._onStart()})}),this.totalTime=this.players.reduce((ze,Ye)=>Math.max(ze,Ye.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(he=>he()),this._onDoneFns=[])}init(){this.players.forEach(he=>he.init())}onStart(he){this._onStartFns.push(he)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(he=>he()),this._onStartFns=[])}onDone(he){this._onDoneFns.push(he)}onDestroy(he){this._onDestroyFns.push(he)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(he=>he.play())}pause(){this.players.forEach(he=>he.pause())}restart(){this.players.forEach(he=>he.restart())}finish(){this._onFinish(),this.players.forEach(he=>he.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(he=>he.destroy()),this._onDestroyFns.forEach(he=>he()),this._onDestroyFns=[])}reset(){this.players.forEach(he=>he.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(he){const me=he*this.totalTime;this.players.forEach(Oe=>{const ce=Oe.totalTime?Math.min(1,me/Oe.totalTime):1;Oe.setPosition(ce)})}getPosition(){const he=this.players.reduce((me,Oe)=>null===me||Oe.totalTime>me.totalTime?Oe:me,null);return null!=he?he.getPosition():0}beforeDestroy(){this.players.forEach(he=>{he.beforeDestroy&&he.beforeDestroy()})}triggerCallback(he){const me="start"==he?this._onStartFns:this._onDoneFns;me.forEach(Oe=>Oe()),me.length=0}}const ve="!"},12057:(v,S,i)=>{"use strict";i.d(S,{mr:()=>se,Ov:()=>Qs,ez:()=>To,K0:()=>y,uU:()=>Co,JJ:()=>sn,x:()=>je,Do:()=>oe,Gx:()=>ro,Ts:()=>on,Nd:()=>$e,V_:()=>R,Ye:()=>he,S$:()=>ae,i8:()=>Fo,mk:()=>pr,sg:()=>br,O5:()=>Do,PC:()=>yl,RF:()=>qo,n9:()=>ra,ED:()=>Ia,tP:()=>fo,b0:()=>ve,Zx:()=>ei,lw:()=>T,rS:()=>ks,Tn:()=>Ie,gd:()=>ms,EM:()=>$s,JF:()=>jl,p6:()=>hi,Mn:()=>$t,ol:()=>en,UT:()=>Gt,NF:()=>yc,w_:()=>_,bD:()=>Ea,q:()=>p,Mx:()=>Ct,HT:()=>e});var r=i(74788);let u=null;function p(){return u}function e(rt){u||(u=rt)}class _{}const y=new r.OlP("DocumentToken");let T=(()=>{class rt{historyGo(ct){throw new Error("Not implemented")}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275prov=(0,r.Yz7)({factory:M,token:rt,providedIn:"platform"}),rt})();function M(){return(0,r.LFG)(F)}const R=new r.OlP("Location Initialized");let F=(()=>{class rt extends T{constructor(ct){super(),this._doc=ct,this._init()}_init(){this.location=window.location,this._history=window.history}getBaseHrefFromDOM(){return p().getBaseHref(this._doc)}onPopState(ct){const Te=p().getGlobalEventTarget(this._doc,"window");return Te.addEventListener("popstate",ct,!1),()=>Te.removeEventListener("popstate",ct)}onHashChange(ct){const Te=p().getGlobalEventTarget(this._doc,"window");return Te.addEventListener("hashchange",ct,!1),()=>Te.removeEventListener("hashchange",ct)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(ct){this.location.pathname=ct}pushState(ct,Te,Me){Z()?this._history.pushState(ct,Te,Me):this.location.hash=Me}replaceState(ct,Te,Me){Z()?this._history.replaceState(ct,Te,Me):this.location.hash=Me}forward(){this._history.forward()}back(){this._history.back()}historyGo(ct=0){this._history.go(ct)}getState(){return this._history.state}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.LFG(y))},rt.\u0275prov=(0,r.Yz7)({factory:J,token:rt,providedIn:"platform"}),rt})();function Z(){return!!window.history.pushState}function J(){return new F((0,r.LFG)(y))}function Q(rt,Nt){if(0==rt.length)return Nt;if(0==Nt.length)return rt;let ct=0;return rt.endsWith("/")&&ct++,Nt.startsWith("/")&&ct++,2==ct?rt+Nt.substring(1):1==ct?rt+Nt:rt+"/"+Nt}function ee(rt){const Nt=rt.match(/#|\?|$/),ct=Nt&&Nt.index||rt.length;return rt.slice(0,ct-("/"===rt[ct-1]?1:0))+rt.slice(ct)}function ue(rt){return rt&&"?"!==rt[0]?"?"+rt:rt}let ae=(()=>{class rt{historyGo(ct){throw new Error("Not implemented")}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275prov=(0,r.Yz7)({factory:$,token:rt,providedIn:"root"}),rt})();function $(rt){const Nt=(0,r.LFG)(y).location;return new ve((0,r.LFG)(T),Nt&&Nt.origin||"")}const se=new r.OlP("appBaseHref");let ve=(()=>{class rt extends ae{constructor(ct,Te){if(super(),this._platformLocation=ct,this._removeListenerFns=[],null==Te&&(Te=this._platformLocation.getBaseHrefFromDOM()),null==Te)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=Te}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(ct){this._removeListenerFns.push(this._platformLocation.onPopState(ct),this._platformLocation.onHashChange(ct))}getBaseHref(){return this._baseHref}prepareExternalUrl(ct){return Q(this._baseHref,ct)}path(ct=!1){const Te=this._platformLocation.pathname+ue(this._platformLocation.search),Me=this._platformLocation.hash;return Me&&ct?`${Te}${Me}`:Te}pushState(ct,Te,Me,De){const Tt=this.prepareExternalUrl(Me+ue(De));this._platformLocation.pushState(ct,Te,Tt)}replaceState(ct,Te,Me,De){const Tt=this.prepareExternalUrl(Me+ue(De));this._platformLocation.replaceState(ct,Te,Tt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}historyGo(ct=0){var Te,Me;null===(Me=(Te=this._platformLocation).historyGo)||void 0===Me||Me.call(Te,ct)}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.LFG(T),r.LFG(se,8))},rt.\u0275prov=r.Yz7({token:rt,factory:rt.\u0275fac}),rt})(),oe=(()=>{class rt extends ae{constructor(ct,Te){super(),this._platformLocation=ct,this._baseHref="",this._removeListenerFns=[],null!=Te&&(this._baseHref=Te)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(ct){this._removeListenerFns.push(this._platformLocation.onPopState(ct),this._platformLocation.onHashChange(ct))}getBaseHref(){return this._baseHref}path(ct=!1){let Te=this._platformLocation.hash;return null==Te&&(Te="#"),Te.length>0?Te.substring(1):Te}prepareExternalUrl(ct){const Te=Q(this._baseHref,ct);return Te.length>0?"#"+Te:Te}pushState(ct,Te,Me,De){let Tt=this.prepareExternalUrl(Me+ue(De));0==Tt.length&&(Tt=this._platformLocation.pathname),this._platformLocation.pushState(ct,Te,Tt)}replaceState(ct,Te,Me,De){let Tt=this.prepareExternalUrl(Me+ue(De));0==Tt.length&&(Tt=this._platformLocation.pathname),this._platformLocation.replaceState(ct,Te,Tt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}historyGo(ct=0){var Te,Me;null===(Me=(Te=this._platformLocation).historyGo)||void 0===Me||Me.call(Te,ct)}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.LFG(T),r.LFG(se,8))},rt.\u0275prov=r.Yz7({token:rt,factory:rt.\u0275fac}),rt})(),he=(()=>{class rt{constructor(ct,Te){this._subject=new r.vpe,this._urlChangeListeners=[],this._platformStrategy=ct;const Me=this._platformStrategy.getBaseHref();this._platformLocation=Te,this._baseHref=ee(ce(Me)),this._platformStrategy.onPopState(De=>{this._subject.emit({url:this.path(!0),pop:!0,state:De.state,type:De.type})})}path(ct=!1){return this.normalize(this._platformStrategy.path(ct))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(ct,Te=""){return this.path()==this.normalize(ct+ue(Te))}normalize(ct){return rt.stripTrailingSlash(function(rt,Nt){return rt&&Nt.startsWith(rt)?Nt.substring(rt.length):Nt}(this._baseHref,ce(ct)))}prepareExternalUrl(ct){return ct&&"/"!==ct[0]&&(ct="/"+ct),this._platformStrategy.prepareExternalUrl(ct)}go(ct,Te="",Me=null){this._platformStrategy.pushState(Me,"",ct,Te),this._notifyUrlChangeListeners(this.prepareExternalUrl(ct+ue(Te)),Me)}replaceState(ct,Te="",Me=null){this._platformStrategy.replaceState(Me,"",ct,Te),this._notifyUrlChangeListeners(this.prepareExternalUrl(ct+ue(Te)),Me)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}historyGo(ct=0){var Te,Me;null===(Me=(Te=this._platformStrategy).historyGo)||void 0===Me||Me.call(Te,ct)}onUrlChange(ct){this._urlChangeListeners.push(ct),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(Te=>{this._notifyUrlChangeListeners(Te.url,Te.state)}))}_notifyUrlChangeListeners(ct="",Te){this._urlChangeListeners.forEach(Me=>Me(ct,Te))}subscribe(ct,Te,Me){return this._subject.subscribe({next:ct,error:Te,complete:Me})}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.LFG(ae),r.LFG(T))},rt.normalizeQueryParams=ue,rt.joinWithSlash=Q,rt.stripTrailingSlash=ee,rt.\u0275prov=(0,r.Yz7)({factory:me,token:rt,providedIn:"root"}),rt})();function me(){return new he((0,r.LFG)(ae),(0,r.LFG)(T))}function ce(rt){return rt.replace(/\/index.html$/,"")}var ze=(()=>((ze=ze||{})[ze.Decimal=0]="Decimal",ze[ze.Percent=1]="Percent",ze[ze.Currency=2]="Currency",ze[ze.Scientific=3]="Scientific",ze))(),Ye=(()=>((Ye=Ye||{})[Ye.Zero=0]="Zero",Ye[Ye.One=1]="One",Ye[Ye.Two=2]="Two",Ye[Ye.Few=3]="Few",Ye[Ye.Many=4]="Many",Ye[Ye.Other=5]="Other",Ye))(),je=(()=>((je=je||{})[je.Format=0]="Format",je[je.Standalone=1]="Standalone",je))(),Ie=(()=>((Ie=Ie||{})[Ie.Narrow=0]="Narrow",Ie[Ie.Abbreviated=1]="Abbreviated",Ie[Ie.Wide=2]="Wide",Ie[Ie.Short=3]="Short",Ie))(),Ve=(()=>((Ve=Ve||{})[Ve.Short=0]="Short",Ve[Ve.Medium=1]="Medium",Ve[Ve.Long=2]="Long",Ve[Ve.Full=3]="Full",Ve))(),He=(()=>((He=He||{})[He.Decimal=0]="Decimal",He[He.Group=1]="Group",He[He.List=2]="List",He[He.PercentSign=3]="PercentSign",He[He.PlusSign=4]="PlusSign",He[He.MinusSign=5]="MinusSign",He[He.Exponential=6]="Exponential",He[He.SuperscriptingExponent=7]="SuperscriptingExponent",He[He.PerMille=8]="PerMille",He[He.Infinity=9]="Infinity",He[He.NaN=10]="NaN",He[He.TimeSeparator=11]="TimeSeparator",He[He.CurrencyDecimal=12]="CurrencyDecimal",He[He.CurrencyGroup=13]="CurrencyGroup",He))();function en(rt,Nt,ct){const Te=(0,r.cg1)(rt),De=di([Te[r.wAp.DayPeriodsFormat],Te[r.wAp.DayPeriodsStandalone]],Nt);return di(De,ct)}function $t(rt,Nt,ct){const Te=(0,r.cg1)(rt),De=di([Te[r.wAp.DaysFormat],Te[r.wAp.DaysStandalone]],Nt);return di(De,ct)}function Gt(rt,Nt,ct){const Te=(0,r.cg1)(rt),De=di([Te[r.wAp.MonthsFormat],Te[r.wAp.MonthsStandalone]],Nt);return di(De,ct)}function Yt(rt,Nt){return di((0,r.cg1)(rt)[r.wAp.DateFormat],Nt)}function Dt(rt,Nt){return di((0,r.cg1)(rt)[r.wAp.TimeFormat],Nt)}function zt(rt,Nt){return di((0,r.cg1)(rt)[r.wAp.DateTimeFormat],Nt)}function Yn(rt,Nt){const ct=(0,r.cg1)(rt),Te=ct[r.wAp.NumberSymbols][Nt];if(void 0===Te){if(Nt===He.CurrencyDecimal)return ct[r.wAp.NumberSymbols][He.Decimal];if(Nt===He.CurrencyGroup)return ct[r.wAp.NumberSymbols][He.Group]}return Te}function Hr(rt,Nt){return(0,r.cg1)(rt)[r.wAp.NumberFormats][Nt]}const Kr=r.kL8;function In(rt){if(!rt[r.wAp.ExtraData])throw new Error(`Missing extra locale data for the locale "${rt[r.wAp.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function di(rt,Nt){for(let ct=Nt;ct>-1;ct--)if(void 0!==rt[ct])return rt[ct];throw new Error("Locale data API: locale data undefined")}function $i(rt){const[Nt,ct]=rt.split(":");return{hours:+Nt,minutes:+ct}}const Wt=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Jn={},ir=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;var Lr=(()=>((Lr=Lr||{})[Lr.Short=0]="Short",Lr[Lr.ShortGMT=1]="ShortGMT",Lr[Lr.Long=2]="Long",Lr[Lr.Extended=3]="Extended",Lr))(),Vn=(()=>((Vn=Vn||{})[Vn.FullYear=0]="FullYear",Vn[Vn.Month=1]="Month",Vn[Vn.Date=2]="Date",Vn[Vn.Hours=3]="Hours",Vn[Vn.Minutes=4]="Minutes",Vn[Vn.Seconds=5]="Seconds",Vn[Vn.FractionalSeconds=6]="FractionalSeconds",Vn[Vn.Day=7]="Day",Vn))(),zr=(()=>((zr=zr||{})[zr.DayPeriods=0]="DayPeriods",zr[zr.Days=1]="Days",zr[zr.Months=2]="Months",zr[zr.Eras=3]="Eras",zr))();function hi(rt,Nt,ct,Te){let Me=function(rt){if(po(rt))return rt;if("number"==typeof rt&&!isNaN(rt))return new Date(rt);if("string"==typeof rt){if(rt=rt.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(rt)){const[Me,De=1,Tt=1]=rt.split("-").map(dr=>+dr);return Ai(Me,De-1,Tt)}const ct=parseFloat(rt);if(!isNaN(rt-ct))return new Date(ct);let Te;if(Te=rt.match(Wt))return function(rt){const Nt=new Date(0);let ct=0,Te=0;const Me=rt[8]?Nt.setUTCFullYear:Nt.setFullYear,De=rt[8]?Nt.setUTCHours:Nt.setHours;rt[9]&&(ct=Number(rt[9]+rt[10]),Te=Number(rt[9]+rt[11])),Me.call(Nt,Number(rt[1]),Number(rt[2])-1,Number(rt[3]));const Tt=Number(rt[4]||0)-ct,dr=Number(rt[5]||0)-Te,Qi=Number(rt[6]||0),Jo=Math.floor(1e3*parseFloat("0."+(rt[7]||0)));return De.call(Nt,Tt,dr,Qi,Jo),Nt}(Te)}const Nt=new Date(rt);if(!po(Nt))throw new Error(`Unable to convert "${rt}" into a date`);return Nt}(rt);Nt=Tr(ct,Nt)||Nt;let dr,Tt=[];for(;Nt;){if(dr=ir.exec(Nt),!dr){Tt.push(Nt);break}{Tt=Tt.concat(dr.slice(1));const Es=Tt.pop();if(!Es)break;Nt=Es}}let Qi=Me.getTimezoneOffset();Te&&(Qi=Wn(Te,Qi),Me=function(rt,Nt,ct){const Me=rt.getTimezoneOffset();return function(rt,Nt){return(rt=new Date(rt.getTime())).setMinutes(rt.getMinutes()+Nt),rt}(rt,-1*(Wn(Nt,Me)-Me))}(Me,Te));let Jo="";return Tt.forEach(Es=>{const vs=function(rt){if(xt[rt])return xt[rt];let Nt;switch(rt){case"G":case"GG":case"GGG":Nt=zn(zr.Eras,Ie.Abbreviated);break;case"GGGG":Nt=zn(zr.Eras,Ie.Wide);break;case"GGGGG":Nt=zn(zr.Eras,Ie.Narrow);break;case"y":Nt=mr(Vn.FullYear,1,0,!1,!0);break;case"yy":Nt=mr(Vn.FullYear,2,0,!0,!0);break;case"yyy":Nt=mr(Vn.FullYear,3,0,!1,!0);break;case"yyyy":Nt=mr(Vn.FullYear,4,0,!1,!0);break;case"Y":Nt=jt(1);break;case"YY":Nt=jt(2,!0);break;case"YYY":Nt=jt(3);break;case"YYYY":Nt=jt(4);break;case"M":case"L":Nt=mr(Vn.Month,1,1);break;case"MM":case"LL":Nt=mr(Vn.Month,2,1);break;case"MMM":Nt=zn(zr.Months,Ie.Abbreviated);break;case"MMMM":Nt=zn(zr.Months,Ie.Wide);break;case"MMMMM":Nt=zn(zr.Months,Ie.Narrow);break;case"LLL":Nt=zn(zr.Months,Ie.Abbreviated,je.Standalone);break;case"LLLL":Nt=zn(zr.Months,Ie.Wide,je.Standalone);break;case"LLLLL":Nt=zn(zr.Months,Ie.Narrow,je.Standalone);break;case"w":Nt=Dr(1);break;case"ww":Nt=Dr(2);break;case"W":Nt=Dr(1,!0);break;case"d":Nt=mr(Vn.Date,1);break;case"dd":Nt=mr(Vn.Date,2);break;case"c":case"cc":Nt=mr(Vn.Day,1);break;case"ccc":Nt=zn(zr.Days,Ie.Abbreviated,je.Standalone);break;case"cccc":Nt=zn(zr.Days,Ie.Wide,je.Standalone);break;case"ccccc":Nt=zn(zr.Days,Ie.Narrow,je.Standalone);break;case"cccccc":Nt=zn(zr.Days,Ie.Short,je.Standalone);break;case"E":case"EE":case"EEE":Nt=zn(zr.Days,Ie.Abbreviated);break;case"EEEE":Nt=zn(zr.Days,Ie.Wide);break;case"EEEEE":Nt=zn(zr.Days,Ie.Narrow);break;case"EEEEEE":Nt=zn(zr.Days,Ie.Short);break;case"a":case"aa":case"aaa":Nt=zn(zr.DayPeriods,Ie.Abbreviated);break;case"aaaa":Nt=zn(zr.DayPeriods,Ie.Wide);break;case"aaaaa":Nt=zn(zr.DayPeriods,Ie.Narrow);break;case"b":case"bb":case"bbb":Nt=zn(zr.DayPeriods,Ie.Abbreviated,je.Standalone,!0);break;case"bbbb":Nt=zn(zr.DayPeriods,Ie.Wide,je.Standalone,!0);break;case"bbbbb":Nt=zn(zr.DayPeriods,Ie.Narrow,je.Standalone,!0);break;case"B":case"BB":case"BBB":Nt=zn(zr.DayPeriods,Ie.Abbreviated,je.Format,!0);break;case"BBBB":Nt=zn(zr.DayPeriods,Ie.Wide,je.Format,!0);break;case"BBBBB":Nt=zn(zr.DayPeriods,Ie.Narrow,je.Format,!0);break;case"h":Nt=mr(Vn.Hours,1,-12);break;case"hh":Nt=mr(Vn.Hours,2,-12);break;case"H":Nt=mr(Vn.Hours,1);break;case"HH":Nt=mr(Vn.Hours,2);break;case"m":Nt=mr(Vn.Minutes,1);break;case"mm":Nt=mr(Vn.Minutes,2);break;case"s":Nt=mr(Vn.Seconds,1);break;case"ss":Nt=mr(Vn.Seconds,2);break;case"S":Nt=mr(Vn.FractionalSeconds,1);break;case"SS":Nt=mr(Vn.FractionalSeconds,2);break;case"SSS":Nt=mr(Vn.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":Nt=si(Lr.Short);break;case"ZZZZZ":Nt=si(Lr.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":Nt=si(Lr.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":Nt=si(Lr.Long);break;default:return null}return xt[rt]=Nt,Nt}(Es);Jo+=vs?vs(Me,ct,Qi):"''"===Es?"'":Es.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),Jo}function Ai(rt,Nt,ct){const Te=new Date(0);return Te.setFullYear(rt,Nt,ct),Te.setHours(0,0,0),Te}function Tr(rt,Nt){const ct=function(rt){return(0,r.cg1)(rt)[r.wAp.LocaleId]}(rt);if(Jn[ct]=Jn[ct]||{},Jn[ct][Nt])return Jn[ct][Nt];let Te="";switch(Nt){case"shortDate":Te=Yt(rt,Ve.Short);break;case"mediumDate":Te=Yt(rt,Ve.Medium);break;case"longDate":Te=Yt(rt,Ve.Long);break;case"fullDate":Te=Yt(rt,Ve.Full);break;case"shortTime":Te=Dt(rt,Ve.Short);break;case"mediumTime":Te=Dt(rt,Ve.Medium);break;case"longTime":Te=Dt(rt,Ve.Long);break;case"fullTime":Te=Dt(rt,Ve.Full);break;case"short":const Me=Tr(rt,"shortTime"),De=Tr(rt,"shortDate");Te=Nr(zt(rt,Ve.Short),[Me,De]);break;case"medium":const Tt=Tr(rt,"mediumTime"),dr=Tr(rt,"mediumDate");Te=Nr(zt(rt,Ve.Medium),[Tt,dr]);break;case"long":const Qi=Tr(rt,"longTime"),Jo=Tr(rt,"longDate");Te=Nr(zt(rt,Ve.Long),[Qi,Jo]);break;case"full":const Es=Tr(rt,"fullTime"),vs=Tr(rt,"fullDate");Te=Nr(zt(rt,Ve.Full),[Es,vs])}return Te&&(Jn[ct][Nt]=Te),Te}function Nr(rt,Nt){return Nt&&(rt=rt.replace(/\{([^}]+)}/g,function(ct,Te){return null!=Nt&&Te in Nt?Nt[Te]:ct})),rt}function gn(rt,Nt,ct="-",Te,Me){let De="";(rt<0||Me&&rt<=0)&&(Me?rt=1-rt:(rt=-rt,De=ct));let Tt=String(rt);for(;Tt.length<Nt;)Tt="0"+Tt;return Te&&(Tt=Tt.substr(Tt.length-Nt)),De+Tt}function mr(rt,Nt,ct=0,Te=!1,Me=!1){return function(De,Tt){let dr=function(rt,Nt){switch(rt){case Vn.FullYear:return Nt.getFullYear();case Vn.Month:return Nt.getMonth();case Vn.Date:return Nt.getDate();case Vn.Hours:return Nt.getHours();case Vn.Minutes:return Nt.getMinutes();case Vn.Seconds:return Nt.getSeconds();case Vn.FractionalSeconds:return Nt.getMilliseconds();case Vn.Day:return Nt.getDay();default:throw new Error(`Unknown DateType value "${rt}".`)}}(rt,De);if((ct>0||dr>-ct)&&(dr+=ct),rt===Vn.Hours)0===dr&&-12===ct&&(dr=12);else if(rt===Vn.FractionalSeconds)return function(rt,Nt){return gn(rt,3).substr(0,Nt)}(dr,Nt);const Qi=Yn(Tt,He.MinusSign);return gn(dr,Nt,Qi,Te,Me)}}function zn(rt,Nt,ct=je.Format,Te=!1){return function(Me,De){return function(rt,Nt,ct,Te,Me,De){switch(ct){case zr.Months:return Gt(Nt,Me,Te)[rt.getMonth()];case zr.Days:return $t(Nt,Me,Te)[rt.getDay()];case zr.DayPeriods:const Tt=rt.getHours(),dr=rt.getMinutes();if(De){const Jo=function(rt){const Nt=(0,r.cg1)(rt);return In(Nt),(Nt[r.wAp.ExtraData][2]||[]).map(Te=>"string"==typeof Te?$i(Te):[$i(Te[0]),$i(Te[1])])}(Nt),Es=function(rt,Nt,ct){const Te=(0,r.cg1)(rt);In(Te);const De=di([Te[r.wAp.ExtraData][0],Te[r.wAp.ExtraData][1]],Nt)||[];return di(De,ct)||[]}(Nt,Me,Te),vs=Jo.findIndex(Ms=>{if(Array.isArray(Ms)){const[Ma,uu]=Ms,Wa=Tt>=Ma.hours&&dr>=Ma.minutes,Pl=Tt<uu.hours||Tt===uu.hours&&dr<uu.minutes;if(Ma.hours<uu.hours){if(Wa&&Pl)return!0}else if(Wa||Pl)return!0}else if(Ms.hours===Tt&&Ms.minutes===dr)return!0;return!1});if(-1!==vs)return Es[vs]}return en(Nt,Me,Te)[Tt<12?0:1];case zr.Eras:return function(rt,Nt){return di((0,r.cg1)(rt)[r.wAp.Eras],Nt)}(Nt,Te)[rt.getFullYear()<=0?0:1];default:throw new Error(`unexpected translation type ${ct}`)}}(Me,De,rt,Nt,ct,Te)}}function si(rt){return function(Nt,ct,Te){const Me=-1*Te,De=Yn(ct,He.MinusSign),Tt=Me>0?Math.floor(Me/60):Math.ceil(Me/60);switch(rt){case Lr.Short:return(Me>=0?"+":"")+gn(Tt,2,De)+gn(Math.abs(Me%60),2,De);case Lr.ShortGMT:return"GMT"+(Me>=0?"+":"")+gn(Tt,1,De);case Lr.Long:return"GMT"+(Me>=0?"+":"")+gn(Tt,2,De)+":"+gn(Math.abs(Me%60),2,De);case Lr.Extended:return 0===Te?"Z":(Me>=0?"+":"")+gn(Tt,2,De)+":"+gn(Math.abs(Me%60),2,De);default:throw new Error(`Unknown zone width "${rt}"`)}}}function Ze(rt){return Ai(rt.getFullYear(),rt.getMonth(),rt.getDate()+(4-rt.getDay()))}function Dr(rt,Nt=!1){return function(ct,Te){let Me;if(Nt){const De=new Date(ct.getFullYear(),ct.getMonth(),1).getDay()-1,Tt=ct.getDate();Me=1+Math.floor((Tt+De)/7)}else{const De=Ze(ct),Tt=function(rt){const Nt=Ai(rt,0,1).getDay();return Ai(rt,0,1+(Nt<=4?4:11)-Nt)}(De.getFullYear()),dr=De.getTime()-Tt.getTime();Me=1+Math.round(dr/6048e5)}return gn(Me,rt,Yn(Te,He.MinusSign))}}function jt(rt,Nt=!1){return function(ct,Te){return gn(Ze(ct).getFullYear(),rt,Yn(Te,He.MinusSign),Nt)}}const xt={};function Wn(rt,Nt){rt=rt.replace(/:/g,"");const ct=Date.parse("Jan 01, 1970 00:00:00 "+rt)/6e4;return isNaN(ct)?Nt:ct}function po(rt){return rt instanceof Date&&!isNaN(rt.valueOf())}const yo=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function cr(rt,Nt,ct,Te,Me,De,Tt=!1){let dr="",Qi=!1;if(isFinite(rt)){let Jo=function(rt){let Te,Me,De,Tt,dr,Nt=Math.abs(rt)+"",ct=0;for((Me=Nt.indexOf("."))>-1&&(Nt=Nt.replace(".","")),(De=Nt.search(/e/i))>0?(Me<0&&(Me=De),Me+=+Nt.slice(De+1),Nt=Nt.substring(0,De)):Me<0&&(Me=Nt.length),De=0;"0"===Nt.charAt(De);De++);if(De===(dr=Nt.length))Te=[0],Me=1;else{for(dr--;"0"===Nt.charAt(dr);)dr--;for(Me-=De,Te=[],Tt=0;De<=dr;De++,Tt++)Te[Tt]=Number(Nt.charAt(De))}return Me>22&&(Te=Te.splice(0,21),ct=Me-1,Me=1),{digits:Te,exponent:ct,integerLen:Me}}(rt);Tt&&(Jo=function(rt){if(0===rt.digits[0])return rt;const Nt=rt.digits.length-rt.integerLen;return rt.exponent?rt.exponent+=2:(0===Nt?rt.digits.push(0,0):1===Nt&&rt.digits.push(0),rt.integerLen+=2),rt}(Jo));let Es=Nt.minInt,vs=Nt.minFrac,Ms=Nt.maxFrac;if(De){const Ol=De.match(yo);if(null===Ol)throw new Error(`${De} is not a valid digit info`);const Ts=Ol[1],Nc=Ol[3],Ec=Ol[5];null!=Ts&&(Es=Li(Ts)),null!=Nc&&(vs=Li(Nc)),null!=Ec?Ms=Li(Ec):null!=Nc&&vs>Ms&&(Ms=vs)}!function(rt,Nt,ct){if(Nt>ct)throw new Error(`The minimum number of digits after fraction (${Nt}) is higher than the maximum (${ct}).`);let Te=rt.digits,Me=Te.length-rt.integerLen;const De=Math.min(Math.max(Nt,Me),ct);let Tt=De+rt.integerLen,dr=Te[Tt];if(Tt>0){Te.splice(Math.max(rt.integerLen,Tt));for(let vs=Tt;vs<Te.length;vs++)Te[vs]=0}else{Me=Math.max(0,Me),rt.integerLen=1,Te.length=Math.max(1,Tt=De+1),Te[0]=0;for(let vs=1;vs<Tt;vs++)Te[vs]=0}if(dr>=5)if(Tt-1<0){for(let vs=0;vs>Tt;vs--)Te.unshift(0),rt.integerLen++;Te.unshift(1),rt.integerLen++}else Te[Tt-1]++;for(;Me<Math.max(0,De);Me++)Te.push(0);let Qi=0!==De;const Jo=Nt+rt.integerLen,Es=Te.reduceRight(function(vs,Ms,Ma,uu){return uu[Ma]=(Ms+=vs)<10?Ms:Ms-10,Qi&&(0===uu[Ma]&&Ma>=Jo?uu.pop():Qi=!1),Ms>=10?1:0},0);Es&&(Te.unshift(Es),rt.integerLen++)}(Jo,vs,Ms);let Ma=Jo.digits,uu=Jo.integerLen;const Wa=Jo.exponent;let Pl=[];for(Qi=Ma.every(Ol=>!Ol);uu<Es;uu++)Ma.unshift(0);for(;uu<0;uu++)Ma.unshift(0);uu>0?Pl=Ma.splice(uu,Ma.length):(Pl=Ma,Ma=[0]);const ec=[];for(Ma.length>=Nt.lgSize&&ec.unshift(Ma.splice(-Nt.lgSize,Ma.length).join(""));Ma.length>Nt.gSize;)ec.unshift(Ma.splice(-Nt.gSize,Ma.length).join(""));Ma.length&&ec.unshift(Ma.join("")),dr=ec.join(Yn(ct,Te)),Pl.length&&(dr+=Yn(ct,Me)+Pl.join("")),Wa&&(dr+=Yn(ct,He.Exponential)+"+"+Wa)}else dr=Yn(ct,He.Infinity);return dr=rt<0&&!Qi?Nt.negPre+dr+Nt.negSuf:Nt.posPre+dr+Nt.posSuf,dr}function ho(rt,Nt="-"){const ct={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},Te=rt.split(";"),Me=Te[0],De=Te[1],Tt=-1!==Me.indexOf(".")?Me.split("."):[Me.substring(0,Me.lastIndexOf("0")+1),Me.substring(Me.lastIndexOf("0")+1)],dr=Tt[0],Qi=Tt[1]||"";ct.posPre=dr.substr(0,dr.indexOf("#"));for(let Es=0;Es<Qi.length;Es++){const vs=Qi.charAt(Es);"0"===vs?ct.minFrac=ct.maxFrac=Es+1:"#"===vs?ct.maxFrac=Es+1:ct.posSuf+=vs}const Jo=dr.split(",");if(ct.gSize=Jo[1]?Jo[1].length:0,ct.lgSize=Jo[2]||Jo[1]?(Jo[2]||Jo[1]).length:0,De){const Es=Me.length-ct.posPre.length-ct.posSuf.length,vs=De.indexOf("#");ct.negPre=De.substr(0,vs).replace(/'/g,""),ct.negSuf=De.substr(vs+Es).replace(/'/g,"")}else ct.negPre=Nt+ct.posPre,ct.negSuf=ct.posSuf;return ct}function Li(rt){const Nt=parseInt(rt);if(isNaN(Nt))throw new Error("Invalid integer literal when parsing "+rt);return Nt}class ar{}let Ht=(()=>{class rt extends ar{constructor(ct){super(),this.locale=ct}getPluralCategory(ct,Te){switch(Kr(Te||this.locale)(ct)){case Ye.Zero:return"zero";case Ye.One:return"one";case Ye.Two:return"two";case Ye.Few:return"few";case Ye.Many:return"many";default:return"other"}}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.LFG(r.soG))},rt.\u0275prov=r.Yz7({token:rt,factory:rt.\u0275fac}),rt})();function Ct(rt,Nt){Nt=encodeURIComponent(Nt);for(const ct of rt.split(";")){const Te=ct.indexOf("="),[Me,De]=-1==Te?[ct,""]:[ct.slice(0,Te),ct.slice(Te+1)];if(Me.trim()===Nt)return decodeURIComponent(De)}return null}let pr=(()=>{class rt{constructor(ct,Te,Me,De){this._iterableDiffers=ct,this._keyValueDiffers=Te,this._ngEl=Me,this._renderer=De,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(ct){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof ct?ct.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(ct){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof ct?ct.split(/\s+/):ct,this._rawClass&&((0,r.sIi)(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const ct=this._iterableDiffer.diff(this._rawClass);ct&&this._applyIterableChanges(ct)}else if(this._keyValueDiffer){const ct=this._keyValueDiffer.diff(this._rawClass);ct&&this._applyKeyValueChanges(ct)}}_applyKeyValueChanges(ct){ct.forEachAddedItem(Te=>this._toggleClass(Te.key,Te.currentValue)),ct.forEachChangedItem(Te=>this._toggleClass(Te.key,Te.currentValue)),ct.forEachRemovedItem(Te=>{Te.previousValue&&this._toggleClass(Te.key,!1)})}_applyIterableChanges(ct){ct.forEachAddedItem(Te=>{if("string"!=typeof Te.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${(0,r.AaK)(Te.item)}`);this._toggleClass(Te.item,!0)}),ct.forEachRemovedItem(Te=>this._toggleClass(Te.item,!1))}_applyClasses(ct){ct&&(Array.isArray(ct)||ct instanceof Set?ct.forEach(Te=>this._toggleClass(Te,!0)):Object.keys(ct).forEach(Te=>this._toggleClass(Te,!!ct[Te])))}_removeClasses(ct){ct&&(Array.isArray(ct)||ct instanceof Set?ct.forEach(Te=>this._toggleClass(Te,!1)):Object.keys(ct).forEach(Te=>this._toggleClass(Te,!1)))}_toggleClass(ct,Te){(ct=ct.trim())&&ct.split(/\s+/g).forEach(Me=>{Te?this._renderer.addClass(this._ngEl.nativeElement,Me):this._renderer.removeClass(this._ngEl.nativeElement,Me)})}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.ZZ4),r.Y36(r.aQg),r.Y36(r.SBq),r.Y36(r.Qsj))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),rt})();class Cn{constructor(Nt,ct,Te,Me){this.$implicit=Nt,this.ngForOf=ct,this.index=Te,this.count=Me}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let br=(()=>{class rt{constructor(ct,Te,Me){this._viewContainer=ct,this._template=Te,this._differs=Me,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(ct){this._ngForOf=ct,this._ngForOfDirty=!0}set ngForTrackBy(ct){this._trackByFn=ct}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(ct){ct&&(this._template=ct)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const ct=this._ngForOf;if(!this._differ&&ct)try{this._differ=this._differs.find(ct).create(this.ngForTrackBy)}catch(Te){throw new Error(`Cannot find a differ supporting object '${ct}' of type '${function(rt){return rt.name||typeof rt}(ct)}'. NgFor only supports binding to Iterables such as Arrays.`)}}if(this._differ){const ct=this._differ.diff(this._ngForOf);ct&&this._applyChanges(ct)}}_applyChanges(ct){const Te=[];ct.forEachOperation((Me,De,Tt)=>{if(null==Me.previousIndex){const dr=this._viewContainer.createEmbeddedView(this._template,new Cn(null,this._ngForOf,-1,-1),null===Tt?void 0:Tt),Qi=new zi(Me,dr);Te.push(Qi)}else if(null==Tt)this._viewContainer.remove(null===De?void 0:De);else if(null!==De){const dr=this._viewContainer.get(De);this._viewContainer.move(dr,Tt);const Qi=new zi(Me,dr);Te.push(Qi)}});for(let Me=0;Me<Te.length;Me++)this._perViewChange(Te[Me].view,Te[Me].record);for(let Me=0,De=this._viewContainer.length;Me<De;Me++){const Tt=this._viewContainer.get(Me);Tt.context.index=Me,Tt.context.count=De,Tt.context.ngForOf=this._ngForOf}ct.forEachIdentityChange(Me=>{this._viewContainer.get(Me.currentIndex).context.$implicit=Me.item})}_perViewChange(ct,Te){ct.context.$implicit=Te.item}static ngTemplateContextGuard(ct,Te){return!0}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.s_b),r.Y36(r.Rgc),r.Y36(r.ZZ4))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}}),rt})();class zi{constructor(Nt,ct){this.record=Nt,this.view=ct}}let Do=(()=>{class rt{constructor(ct,Te){this._viewContainer=ct,this._context=new Js,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=Te}set ngIf(ct){this._context.$implicit=this._context.ngIf=ct,this._updateView()}set ngIfThen(ct){_s("ngIfThen",ct),this._thenTemplateRef=ct,this._thenViewRef=null,this._updateView()}set ngIfElse(ct){_s("ngIfElse",ct),this._elseTemplateRef=ct,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(ct,Te){return!0}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.s_b),r.Y36(r.Rgc))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}}),rt})();class Js{constructor(){this.$implicit=null,this.ngIf=null}}function _s(rt,Nt){if(Nt&&!Nt.createEmbeddedView)throw new Error(`${rt} must be a TemplateRef, but received '${(0,r.AaK)(Nt)}'.`)}class bs{constructor(Nt,ct){this._viewContainerRef=Nt,this._templateRef=ct,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(Nt){Nt&&!this._created?this.create():!Nt&&this._created&&this.destroy()}}let qo=(()=>{class rt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(ct){this._ngSwitch=ct,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(ct){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(ct)}_matchCase(ct){const Te=ct==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||Te,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),Te}_updateDefaultCases(ct){if(this._defaultViews&&ct!==this._defaultUsed){this._defaultUsed=ct;for(let Te=0;Te<this._defaultViews.length;Te++)this._defaultViews[Te].enforceState(ct)}}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"}}),rt})(),ra=(()=>{class rt{constructor(ct,Te,Me){this.ngSwitch=Me,Me._addCase(),this._view=new bs(ct,Te)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.s_b),r.Y36(r.Rgc),r.Y36(qo,9))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"}}),rt})(),Ia=(()=>{class rt{constructor(ct,Te,Me){Me._addDefault(new bs(ct,Te))}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.s_b),r.Y36(r.Rgc),r.Y36(qo,9))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngSwitchDefault",""]]}),rt})(),yl=(()=>{class rt{constructor(ct,Te,Me){this._ngEl=ct,this._differs=Te,this._renderer=Me,this._ngStyle=null,this._differ=null}set ngStyle(ct){this._ngStyle=ct,!this._differ&&ct&&(this._differ=this._differs.find(ct).create())}ngDoCheck(){if(this._differ){const ct=this._differ.diff(this._ngStyle);ct&&this._applyChanges(ct)}}_setStyle(ct,Te){const[Me,De]=ct.split(".");null!=(Te=null!=Te&&De?`${Te}${De}`:Te)?this._renderer.setStyle(this._ngEl.nativeElement,Me,Te):this._renderer.removeStyle(this._ngEl.nativeElement,Me)}_applyChanges(ct){ct.forEachRemovedItem(Te=>this._setStyle(Te.key,null)),ct.forEachAddedItem(Te=>this._setStyle(Te.key,Te.currentValue)),ct.forEachChangedItem(Te=>this._setStyle(Te.key,Te.currentValue))}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.SBq),r.Y36(r.aQg),r.Y36(r.Qsj))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"}}),rt})(),fo=(()=>{class rt{constructor(ct){this._viewContainerRef=ct,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(ct){if(ct.ngTemplateOutlet){const Te=this._viewContainerRef;this._viewRef&&Te.remove(Te.indexOf(this._viewRef)),this._viewRef=this.ngTemplateOutlet?Te.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext):null}else this._viewRef&&ct.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.s_b))},rt.\u0275dir=r.lG2({type:rt,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet"},features:[r.TTD]}),rt})();function Ao(rt,Nt){return Error(`InvalidPipeArgument: '${Nt}' for pipe '${(0,r.AaK)(rt)}'`)}class ls{createSubscription(Nt,ct){return Nt.subscribe({next:ct,error:Te=>{throw Te}})}dispose(Nt){Nt.unsubscribe()}onDestroy(Nt){Nt.unsubscribe()}}class gs{createSubscription(Nt,ct){return Nt.then(ct,Te=>{throw Te})}dispose(Nt){}onDestroy(Nt){}}const Ra=new gs,pl=new ls;let Qs=(()=>{class rt{constructor(ct){this._ref=ct,this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(ct){return this._obj?ct!==this._obj?(this._dispose(),this.transform(ct)):this._latestValue:(ct&&this._subscribe(ct),this._latestValue)}_subscribe(ct){this._obj=ct,this._strategy=this._selectStrategy(ct),this._subscription=this._strategy.createSubscription(ct,Te=>this._updateLatestValue(ct,Te))}_selectStrategy(ct){if((0,r.QGY)(ct))return Ra;if((0,r.F4k)(ct))return pl;throw Ao(rt,ct)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(ct,Te){ct===this._obj&&(this._latestValue=Te,this._ref.markForCheck())}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.sBO,16))},rt.\u0275pipe=r.Yjl({name:"async",type:rt,pure:!1}),rt})(),Fo=(()=>{class rt{transform(ct){if(null==ct)return null;if("string"!=typeof ct)throw Ao(rt,ct);return ct.toLowerCase()}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275pipe=r.Yjl({name:"lowercase",type:rt,pure:!0}),rt})();const Eo=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g;let ks=(()=>{class rt{transform(ct){if(null==ct)return null;if("string"!=typeof ct)throw Ao(rt,ct);return ct.replace(Eo,Te=>Te[0].toUpperCase()+Te.substr(1).toLowerCase())}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275pipe=r.Yjl({name:"titlecase",type:rt,pure:!0}),rt})(),ms=(()=>{class rt{transform(ct){if(null==ct)return null;if("string"!=typeof ct)throw Ao(rt,ct);return ct.toUpperCase()}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275pipe=r.Yjl({name:"uppercase",type:rt,pure:!0}),rt})(),Co=(()=>{class rt{constructor(ct){this.locale=ct}transform(ct,Te="mediumDate",Me,De){if(null==ct||""===ct||ct!=ct)return null;try{return hi(ct,Te,De||this.locale,Me)}catch(Tt){throw Ao(rt,Tt.message)}}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.soG,16))},rt.\u0275pipe=r.Yjl({name:"date",type:rt,pure:!0}),rt})();const kr=/#/g;let ro=(()=>{class rt{constructor(ct){this._localization=ct}transform(ct,Te,Me){if(null==ct)return"";if("object"!=typeof Te||null===Te)throw Ao(rt,Te);return Te[function(rt,Nt,ct,Te){let Me=`=${rt}`;if(Nt.indexOf(Me)>-1||(Me=ct.getPluralCategory(rt,Te),Nt.indexOf(Me)>-1))return Me;if(Nt.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${rt}"`)}(ct,Object.keys(Te),this._localization,Me)].replace(kr,ct.toString())}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(ar,16))},rt.\u0275pipe=r.Yjl({name:"i18nPlural",type:rt,pure:!0}),rt})(),on=(()=>{class rt{transform(ct){return JSON.stringify(ct,null,2)}}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275pipe=r.Yjl({name:"json",type:rt,pure:!1}),rt})(),$e=(()=>{class rt{constructor(ct){this.differs=ct,this.keyValues=[],this.compareFn=Pt}transform(ct,Te=Pt){if(!ct||!(ct instanceof Map)&&"object"!=typeof ct)return null;this.differ||(this.differ=this.differs.find(ct).create());const Me=this.differ.diff(ct),De=Te!==this.compareFn;return Me&&(this.keyValues=[],Me.forEachItem(Tt=>{this.keyValues.push(function(rt,Nt){return{key:rt,value:Nt}}(Tt.key,Tt.currentValue))})),(Me||De)&&(this.keyValues.sort(Te),this.compareFn=Te),this.keyValues}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.aQg,16))},rt.\u0275pipe=r.Yjl({name:"keyvalue",type:rt,pure:!1}),rt})();function Pt(rt,Nt){const ct=rt.key,Te=Nt.key;if(ct===Te)return 0;if(void 0===ct)return 1;if(void 0===Te)return-1;if(null===ct)return 1;if(null===Te)return-1;if("string"==typeof ct&&"string"==typeof Te)return ct<Te?-1:1;if("number"==typeof ct&&"number"==typeof Te)return ct-Te;if("boolean"==typeof ct&&"boolean"==typeof Te)return ct<Te?-1:1;const Me=String(ct),De=String(Te);return Me==De?0:Me<De?-1:1}let sn=(()=>{class rt{constructor(ct){this._locale=ct}transform(ct,Te,Me){if(!Oi(ct))return null;Me=Me||this._locale;try{return function(rt,Nt,ct){return cr(rt,ho(Hr(Nt,ze.Decimal),Yn(Nt,He.MinusSign)),Nt,He.Group,He.Decimal,ct)}(os(ct),Me,Te)}catch(De){throw Ao(rt,De.message)}}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.soG,16))},rt.\u0275pipe=r.Yjl({name:"number",type:rt,pure:!0}),rt})(),ei=(()=>{class rt{constructor(ct){this._locale=ct}transform(ct,Te,Me){if(!Oi(ct))return null;Me=Me||this._locale;try{return function(rt,Nt,ct){return cr(rt,ho(Hr(Nt,ze.Percent),Yn(Nt,He.MinusSign)),Nt,He.Group,He.Decimal,ct,!0).replace(new RegExp("%","g"),Yn(Nt,He.PercentSign))}(os(ct),Me,Te)}catch(De){throw Ao(rt,De.message)}}}return rt.\u0275fac=function(ct){return new(ct||rt)(r.Y36(r.soG,16))},rt.\u0275pipe=r.Yjl({name:"percent",type:rt,pure:!0}),rt})();function Oi(rt){return!(null==rt||""===rt||rt!=rt)}function os(rt){if("string"==typeof rt&&!isNaN(Number(rt)-parseFloat(rt)))return Number(rt);if("number"!=typeof rt)throw new Error(`${rt} is not a number`);return rt}let To=(()=>{class rt{}return rt.\u0275fac=function(ct){return new(ct||rt)},rt.\u0275mod=r.oAB({type:rt}),rt.\u0275inj=r.cJS({providers:[{provide:ar,useClass:Ht}]}),rt})();const Ea="browser";function yc(rt){return rt===Ea}let $s=(()=>{class rt{}return rt.\u0275prov=(0,r.Yz7)({token:rt,providedIn:"root",factory:()=>new dc((0,r.LFG)(y),window)}),rt})();class dc{constructor(Nt,ct){this.document=Nt,this.window=ct,this.offset=()=>[0,0]}setOffset(Nt){this.offset=Array.isArray(Nt)?()=>Nt:Nt}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(Nt){this.supportsScrolling()&&this.window.scrollTo(Nt[0],Nt[1])}scrollToAnchor(Nt){if(!this.supportsScrolling())return;const ct=function(rt,Nt){const ct=rt.getElementById(Nt)||rt.getElementsByName(Nt)[0];if(ct)return ct;if("function"==typeof rt.createTreeWalker&&rt.body&&(rt.body.createShadowRoot||rt.body.attachShadow)){const Te=rt.createTreeWalker(rt.body,NodeFilter.SHOW_ELEMENT);let Me=Te.currentNode;for(;Me;){const De=Me.shadowRoot;if(De){const Tt=De.getElementById(Nt)||De.querySelector(`[name="${Nt}"]`);if(Tt)return Tt}Me=Te.nextNode()}}return null}(this.document,Nt);ct&&(this.scrollToElement(ct),this.attemptFocus(ct))}setHistoryScrollRestoration(Nt){if(this.supportScrollRestoration()){const ct=this.window.history;ct&&ct.scrollRestoration&&(ct.scrollRestoration=Nt)}}scrollToElement(Nt){const ct=Nt.getBoundingClientRect(),Te=ct.left+this.window.pageXOffset,Me=ct.top+this.window.pageYOffset,De=this.offset();this.window.scrollTo(Te-De[0],Me-De[1])}attemptFocus(Nt){return Nt.focus(),this.document.activeElement===Nt}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const Nt=ou(this.window.history)||ou(Object.getPrototypeOf(this.window.history));return!(!Nt||!Nt.writable&&!Nt.set)}catch(Nt){return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch(Nt){return!1}}}function ou(rt){return Object.getOwnPropertyDescriptor(rt,"scrollRestoration")}class jl{}},58497:(v,S,i)=>{"use strict";i.d(S,{TP:()=>st,eN:()=>He,JF:()=>di,UA:()=>Ie,LE:()=>ae});var r=i(12057),u=i(74788),p=i(25917),f=i(18891),e=i(94612),_=i(45435),y=i(88002);class T{}class M{}class R{constructor(On){this.normalizedNames=new Map,this.lazyUpdate=null,On?this.lazyInit="string"==typeof On?()=>{this.headers=new Map,On.split("\n").forEach(Wt=>{const Jn=Wt.indexOf(":");if(Jn>0){const ir=Wt.slice(0,Jn),Lr=ir.toLowerCase(),Vn=Wt.slice(Jn+1).trim();this.maybeSetNormalizedName(ir,Lr),this.headers.has(Lr)?this.headers.get(Lr).push(Vn):this.headers.set(Lr,[Vn])}})}:()=>{this.headers=new Map,Object.keys(On).forEach(Wt=>{let Jn=On[Wt];const ir=Wt.toLowerCase();"string"==typeof Jn&&(Jn=[Jn]),Jn.length>0&&(this.headers.set(ir,Jn),this.maybeSetNormalizedName(Wt,ir))})}:this.headers=new Map}has(On){return this.init(),this.headers.has(On.toLowerCase())}get(On){this.init();const Wt=this.headers.get(On.toLowerCase());return Wt&&Wt.length>0?Wt[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(On){return this.init(),this.headers.get(On.toLowerCase())||null}append(On,Wt){return this.clone({name:On,value:Wt,op:"a"})}set(On,Wt){return this.clone({name:On,value:Wt,op:"s"})}delete(On,Wt){return this.clone({name:On,value:Wt,op:"d"})}maybeSetNormalizedName(On,Wt){this.normalizedNames.has(Wt)||this.normalizedNames.set(Wt,On)}init(){this.lazyInit&&(this.lazyInit instanceof R?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(On=>this.applyUpdate(On)),this.lazyUpdate=null))}copyFrom(On){On.init(),Array.from(On.headers.keys()).forEach(Wt=>{this.headers.set(Wt,On.headers.get(Wt)),this.normalizedNames.set(Wt,On.normalizedNames.get(Wt))})}clone(On){const Wt=new R;return Wt.lazyInit=this.lazyInit&&this.lazyInit instanceof R?this.lazyInit:this,Wt.lazyUpdate=(this.lazyUpdate||[]).concat([On]),Wt}applyUpdate(On){const Wt=On.name.toLowerCase();switch(On.op){case"a":case"s":let Jn=On.value;if("string"==typeof Jn&&(Jn=[Jn]),0===Jn.length)return;this.maybeSetNormalizedName(On.name,Wt);const ir=("a"===On.op?this.headers.get(Wt):void 0)||[];ir.push(...Jn),this.headers.set(Wt,ir);break;case"d":const Lr=On.value;if(Lr){let Vn=this.headers.get(Wt);if(!Vn)return;Vn=Vn.filter(zr=>-1===Lr.indexOf(zr)),0===Vn.length?(this.headers.delete(Wt),this.normalizedNames.delete(Wt)):this.headers.set(Wt,Vn)}else this.headers.delete(Wt),this.normalizedNames.delete(Wt)}}forEach(On){this.init(),Array.from(this.normalizedNames.keys()).forEach(Wt=>On(this.normalizedNames.get(Wt),this.headers.get(Wt)))}}class F{encodeKey(On){return ee(On)}encodeValue(On){return ee(On)}decodeKey(On){return decodeURIComponent(On)}decodeValue(On){return decodeURIComponent(On)}}const J=/%(\d[a-f0-9])/gi,Q={40:"@","3A":":",24:"$","2C":",","3B":";","2B":"+","3D":"=","3F":"?","2F":"/"};function ee(Br){return encodeURIComponent(Br).replace(J,(On,Wt)=>{var Jn;return null!==(Jn=Q[Wt])&&void 0!==Jn?Jn:On})}function ue(Br){return`${Br}`}class ae{constructor(On={}){if(this.updates=null,this.cloneFrom=null,this.encoder=On.encoder||new F,On.fromString){if(On.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(Br,On){const Wt=new Map;return Br.length>0&&Br.replace(/^\?/,"").split("&").forEach(ir=>{const Lr=ir.indexOf("="),[Vn,zr]=-1==Lr?[On.decodeKey(ir),""]:[On.decodeKey(ir.slice(0,Lr)),On.decodeValue(ir.slice(Lr+1))],hi=Wt.get(Vn)||[];hi.push(zr),Wt.set(Vn,hi)}),Wt}(On.fromString,this.encoder)}else On.fromObject?(this.map=new Map,Object.keys(On.fromObject).forEach(Wt=>{const Jn=On.fromObject[Wt];this.map.set(Wt,Array.isArray(Jn)?Jn:[Jn])})):this.map=null}has(On){return this.init(),this.map.has(On)}get(On){this.init();const Wt=this.map.get(On);return Wt?Wt[0]:null}getAll(On){return this.init(),this.map.get(On)||null}keys(){return this.init(),Array.from(this.map.keys())}append(On,Wt){return this.clone({param:On,value:Wt,op:"a"})}appendAll(On){const Wt=[];return Object.keys(On).forEach(Jn=>{const ir=On[Jn];Array.isArray(ir)?ir.forEach(Lr=>{Wt.push({param:Jn,value:Lr,op:"a"})}):Wt.push({param:Jn,value:ir,op:"a"})}),this.clone(Wt)}set(On,Wt){return this.clone({param:On,value:Wt,op:"s"})}delete(On,Wt){return this.clone({param:On,value:Wt,op:"d"})}toString(){return this.init(),this.keys().map(On=>{const Wt=this.encoder.encodeKey(On);return this.map.get(On).map(Jn=>Wt+"="+this.encoder.encodeValue(Jn)).join("&")}).filter(On=>""!==On).join("&")}clone(On){const Wt=new ae({encoder:this.encoder});return Wt.cloneFrom=this.cloneFrom||this,Wt.updates=(this.updates||[]).concat(On),Wt}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(On=>this.map.set(On,this.cloneFrom.map.get(On))),this.updates.forEach(On=>{switch(On.op){case"a":case"s":const Wt=("a"===On.op?this.map.get(On.param):void 0)||[];Wt.push(ue(On.value)),this.map.set(On.param,Wt);break;case"d":if(void 0===On.value){this.map.delete(On.param);break}{let Jn=this.map.get(On.param)||[];const ir=Jn.indexOf(ue(On.value));-1!==ir&&Jn.splice(ir,1),Jn.length>0?this.map.set(On.param,Jn):this.map.delete(On.param)}}}),this.cloneFrom=this.updates=null)}}class se{constructor(){this.map=new Map}set(On,Wt){return this.map.set(On,Wt),this}get(On){return this.map.has(On)||this.map.set(On,On.defaultValue()),this.map.get(On)}delete(On){return this.map.delete(On),this}keys(){return this.map.keys()}}function oe(Br){return"undefined"!=typeof ArrayBuffer&&Br instanceof ArrayBuffer}function he(Br){return"undefined"!=typeof Blob&&Br instanceof Blob}function me(Br){return"undefined"!=typeof FormData&&Br instanceof FormData}class ce{constructor(On,Wt,Jn,ir){let Lr;if(this.url=Wt,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=On.toUpperCase(),function(Br){switch(Br){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||ir?(this.body=void 0!==Jn?Jn:null,Lr=ir):Lr=Jn,Lr&&(this.reportProgress=!!Lr.reportProgress,this.withCredentials=!!Lr.withCredentials,Lr.responseType&&(this.responseType=Lr.responseType),Lr.headers&&(this.headers=Lr.headers),Lr.context&&(this.context=Lr.context),Lr.params&&(this.params=Lr.params)),this.headers||(this.headers=new R),this.context||(this.context=new se),this.params){const Vn=this.params.toString();if(0===Vn.length)this.urlWithParams=Wt;else{const zr=Wt.indexOf("?");this.urlWithParams=Wt+(-1===zr?"?":zr<Wt.length-1?"&":"")+Vn}}else this.params=new ae,this.urlWithParams=Wt}serializeBody(){return null===this.body?null:oe(this.body)||he(this.body)||me(this.body)||"undefined"!=typeof URLSearchParams&&this.body instanceof URLSearchParams||"string"==typeof this.body?this.body:this.body instanceof ae?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body||me(this.body)?null:he(this.body)?this.body.type||null:oe(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof ae?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||"boolean"==typeof this.body?"application/json":null}clone(On={}){var Wt;const Jn=On.method||this.method,ir=On.url||this.url,Lr=On.responseType||this.responseType,Vn=void 0!==On.body?On.body:this.body,zr=void 0!==On.withCredentials?On.withCredentials:this.withCredentials,hi=void 0!==On.reportProgress?On.reportProgress:this.reportProgress;let Ai=On.headers||this.headers,Tr=On.params||this.params;const Nr=null!==(Wt=On.context)&&void 0!==Wt?Wt:this.context;return void 0!==On.setHeaders&&(Ai=Object.keys(On.setHeaders).reduce((gn,En)=>gn.set(En,On.setHeaders[En]),Ai)),On.setParams&&(Tr=Object.keys(On.setParams).reduce((gn,En)=>gn.set(En,On.setParams[En]),Tr)),new ce(Jn,ir,Vn,{params:Tr,headers:Ai,context:Nr,reportProgress:hi,responseType:Lr,withCredentials:zr})}}var dt=(()=>((dt=dt||{})[dt.Sent=0]="Sent",dt[dt.UploadProgress=1]="UploadProgress",dt[dt.ResponseHeader=2]="ResponseHeader",dt[dt.DownloadProgress=3]="DownloadProgress",dt[dt.Response=4]="Response",dt[dt.User=5]="User",dt))();class ze{constructor(On,Wt=200,Jn="OK"){this.headers=On.headers||new R,this.status=void 0!==On.status?On.status:Wt,this.statusText=On.statusText||Jn,this.url=On.url||null,this.ok=this.status>=200&&this.status<300}}class Ye extends ze{constructor(On={}){super(On),this.type=dt.ResponseHeader}clone(On={}){return new Ye({headers:On.headers||this.headers,status:void 0!==On.status?On.status:this.status,statusText:On.statusText||this.statusText,url:On.url||this.url||void 0})}}class je extends ze{constructor(On={}){super(On),this.type=dt.Response,this.body=void 0!==On.body?On.body:null}clone(On={}){return new je({body:void 0!==On.body?On.body:this.body,headers:On.headers||this.headers,status:void 0!==On.status?On.status:this.status,statusText:On.statusText||this.statusText,url:On.url||this.url||void 0})}}class Ie extends ze{constructor(On){super(On,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${On.url||"(unknown url)"}`:`Http failure response for ${On.url||"(unknown url)"}: ${On.status} ${On.statusText}`,this.error=On.error||null}}function Ve(Br,On){return{body:On,headers:Br.headers,context:Br.context,observe:Br.observe,params:Br.params,reportProgress:Br.reportProgress,responseType:Br.responseType,withCredentials:Br.withCredentials}}let He=(()=>{class Br{constructor(Wt){this.handler=Wt}request(Wt,Jn,ir={}){let Lr;if(Wt instanceof ce)Lr=Wt;else{let hi,Ai;hi=ir.headers instanceof R?ir.headers:new R(ir.headers),ir.params&&(Ai=ir.params instanceof ae?ir.params:new ae({fromObject:ir.params})),Lr=new ce(Wt,Jn,void 0!==ir.body?ir.body:null,{headers:hi,context:ir.context,params:Ai,reportProgress:ir.reportProgress,responseType:ir.responseType||"json",withCredentials:ir.withCredentials})}const Vn=(0,p.of)(Lr).pipe((0,e.b)(hi=>this.handler.handle(hi)));if(Wt instanceof ce||"events"===ir.observe)return Vn;const zr=Vn.pipe((0,_.h)(hi=>hi instanceof je));switch(ir.observe||"body"){case"body":switch(Lr.responseType){case"arraybuffer":return zr.pipe((0,y.U)(hi=>{if(null!==hi.body&&!(hi.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return hi.body}));case"blob":return zr.pipe((0,y.U)(hi=>{if(null!==hi.body&&!(hi.body instanceof Blob))throw new Error("Response is not a Blob.");return hi.body}));case"text":return zr.pipe((0,y.U)(hi=>{if(null!==hi.body&&"string"!=typeof hi.body)throw new Error("Response is not a string.");return hi.body}));case"json":default:return zr.pipe((0,y.U)(hi=>hi.body))}case"response":return zr;default:throw new Error(`Unreachable: unhandled observe type ${ir.observe}}`)}}delete(Wt,Jn={}){return this.request("DELETE",Wt,Jn)}get(Wt,Jn={}){return this.request("GET",Wt,Jn)}head(Wt,Jn={}){return this.request("HEAD",Wt,Jn)}jsonp(Wt,Jn){return this.request("JSONP",Wt,{params:(new ae).append(Jn,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(Wt,Jn={}){return this.request("OPTIONS",Wt,Jn)}patch(Wt,Jn,ir={}){return this.request("PATCH",Wt,Ve(ir,Jn))}post(Wt,Jn,ir={}){return this.request("POST",Wt,Ve(ir,Jn))}put(Wt,Jn,ir={}){return this.request("PUT",Wt,Ve(ir,Jn))}}return Br.\u0275fac=function(Wt){return new(Wt||Br)(u.LFG(T))},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})();class Zt{constructor(On,Wt){this.next=On,this.interceptor=Wt}handle(On){return this.interceptor.intercept(On,this.next)}}const st=new u.OlP("HTTP_INTERCEPTORS");let en=(()=>{class Br{intercept(Wt,Jn){return Jn.handle(Wt)}}return Br.\u0275fac=function(Wt){return new(Wt||Br)},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})();const zt=/^\)\]\}',?\n/;let Hr=(()=>{class Br{constructor(Wt){this.xhrFactory=Wt}handle(Wt){if("JSONP"===Wt.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new f.y(Jn=>{const ir=this.xhrFactory.build();if(ir.open(Wt.method,Wt.urlWithParams),Wt.withCredentials&&(ir.withCredentials=!0),Wt.headers.forEach((En,mr)=>ir.setRequestHeader(En,mr.join(","))),Wt.headers.has("Accept")||ir.setRequestHeader("Accept","application/json, text/plain, */*"),!Wt.headers.has("Content-Type")){const En=Wt.detectContentTypeHeader();null!==En&&ir.setRequestHeader("Content-Type",En)}if(Wt.responseType){const En=Wt.responseType.toLowerCase();ir.responseType="json"!==En?En:"text"}const Lr=Wt.serializeBody();let Vn=null;const zr=()=>{if(null!==Vn)return Vn;const En=1223===ir.status?204:ir.status,mr=ir.statusText||"OK",Xt=new R(ir.getAllResponseHeaders()),zn=function(Br){return"responseURL"in Br&&Br.responseURL?Br.responseURL:/^X-Request-URL:/m.test(Br.getAllResponseHeaders())?Br.getResponseHeader("X-Request-URL"):null}(ir)||Wt.url;return Vn=new Ye({headers:Xt,status:En,statusText:mr,url:zn}),Vn},hi=()=>{let{headers:En,status:mr,statusText:Xt,url:zn}=zr(),vr=null;204!==mr&&(vr=void 0===ir.response?ir.responseText:ir.response),0===mr&&(mr=vr?200:0);let si=mr>=200&&mr<300;if("json"===Wt.responseType&&"string"==typeof vr){const Ii=vr;vr=vr.replace(zt,"");try{vr=""!==vr?JSON.parse(vr):null}catch(no){vr=Ii,si&&(si=!1,vr={error:no,text:vr})}}si?(Jn.next(new je({body:vr,headers:En,status:mr,statusText:Xt,url:zn||void 0})),Jn.complete()):Jn.error(new Ie({error:vr,headers:En,status:mr,statusText:Xt,url:zn||void 0}))},Ai=En=>{const{url:mr}=zr(),Xt=new Ie({error:En,status:ir.status||0,statusText:ir.statusText||"Unknown Error",url:mr||void 0});Jn.error(Xt)};let Tr=!1;const Nr=En=>{Tr||(Jn.next(zr()),Tr=!0);let mr={type:dt.DownloadProgress,loaded:En.loaded};En.lengthComputable&&(mr.total=En.total),"text"===Wt.responseType&&!!ir.responseText&&(mr.partialText=ir.responseText),Jn.next(mr)},gn=En=>{let mr={type:dt.UploadProgress,loaded:En.loaded};En.lengthComputable&&(mr.total=En.total),Jn.next(mr)};return ir.addEventListener("load",hi),ir.addEventListener("error",Ai),ir.addEventListener("timeout",Ai),ir.addEventListener("abort",Ai),Wt.reportProgress&&(ir.addEventListener("progress",Nr),null!==Lr&&ir.upload&&ir.upload.addEventListener("progress",gn)),ir.send(Lr),Jn.next({type:dt.Sent}),()=>{ir.removeEventListener("error",Ai),ir.removeEventListener("abort",Ai),ir.removeEventListener("load",hi),ir.removeEventListener("timeout",Ai),Wt.reportProgress&&(ir.removeEventListener("progress",Nr),null!==Lr&&ir.upload&&ir.upload.removeEventListener("progress",gn)),ir.readyState!==ir.DONE&&ir.abort()}})}}return Br.\u0275fac=function(Wt){return new(Wt||Br)(u.LFG(r.JF))},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})();const ci=new u.OlP("XSRF_COOKIE_NAME"),Ir=new u.OlP("XSRF_HEADER_NAME");class wr{}let Qr=(()=>{class Br{constructor(Wt,Jn,ir){this.doc=Wt,this.platform=Jn,this.cookieName=ir,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const Wt=this.doc.cookie||"";return Wt!==this.lastCookieString&&(this.parseCount++,this.lastToken=(0,r.Mx)(Wt,this.cookieName),this.lastCookieString=Wt),this.lastToken}}return Br.\u0275fac=function(Wt){return new(Wt||Br)(u.LFG(r.K0),u.LFG(u.Lbi),u.LFG(ci))},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})(),Kr=(()=>{class Br{constructor(Wt,Jn){this.tokenService=Wt,this.headerName=Jn}intercept(Wt,Jn){const ir=Wt.url.toLowerCase();if("GET"===Wt.method||"HEAD"===Wt.method||ir.startsWith("http://")||ir.startsWith("https://"))return Jn.handle(Wt);const Lr=this.tokenService.getToken();return null!==Lr&&!Wt.headers.has(this.headerName)&&(Wt=Wt.clone({headers:Wt.headers.set(this.headerName,Lr)})),Jn.handle(Wt)}}return Br.\u0275fac=function(Wt){return new(Wt||Br)(u.LFG(wr),u.LFG(Ir))},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})(),In=(()=>{class Br{constructor(Wt,Jn){this.backend=Wt,this.injector=Jn,this.chain=null}handle(Wt){if(null===this.chain){const Jn=this.injector.get(st,[]);this.chain=Jn.reduceRight((ir,Lr)=>new Zt(ir,Lr),this.backend)}return this.chain.handle(Wt)}}return Br.\u0275fac=function(Wt){return new(Wt||Br)(u.LFG(M),u.LFG(u.zs3))},Br.\u0275prov=u.Yz7({token:Br,factory:Br.\u0275fac}),Br})(),Ur=(()=>{class Br{static disable(){return{ngModule:Br,providers:[{provide:Kr,useClass:en}]}}static withOptions(Wt={}){return{ngModule:Br,providers:[Wt.cookieName?{provide:ci,useValue:Wt.cookieName}:[],Wt.headerName?{provide:Ir,useValue:Wt.headerName}:[]]}}}return Br.\u0275fac=function(Wt){return new(Wt||Br)},Br.\u0275mod=u.oAB({type:Br}),Br.\u0275inj=u.cJS({providers:[Kr,{provide:st,useExisting:Kr,multi:!0},{provide:wr,useClass:Qr},{provide:ci,useValue:"XSRF-TOKEN"},{provide:Ir,useValue:"X-XSRF-TOKEN"}]}),Br})(),di=(()=>{class Br{}return Br.\u0275fac=function(Wt){return new(Wt||Br)},Br.\u0275mod=u.oAB({type:Br}),Br.\u0275inj=u.cJS({providers:[He,{provide:T,useClass:In},Hr,{provide:M,useExisting:Hr}],imports:[[Ur.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]]}),Br})()},74788:(v,S,i)=>{"use strict";i.d(S,{deG:()=>yd,tb:()=>MT,AFp:()=>D2,ip1:()=>TT,CZH:()=>Gv,hGG:()=>e3,z2F:()=>m0,sBO:()=>$w,Sil:()=>da,_Vd:()=>kv,UuU:()=>Ew,EJc:()=>OT,SBq:()=>sg,qLn:()=>Zf,vpe:()=>ug,gxx:()=>Gg,tBr:()=>ga,XFs:()=>Ur,OlP:()=>Xl,zs3:()=>Gu,IIB:()=>A2,ZZ4:()=>Ny,aQg:()=>Py,soG:()=>Qy,YKP:()=>vM,v3s:()=>W2,h0i:()=>Wm,PXZ:()=>RD,R0b:()=>Np,FiY:()=>sa,r_U:()=>pD,Lbi:()=>CT,g9A:()=>p0,Qsj:()=>Cw,FYo:()=>Ry,JOm:()=>Bd,Tiy:()=>YE,q3G:()=>zs,tp0:()=>ol,EAV:()=>UD,Rgc:()=>j1,dDg:()=>RT,DyG:()=>kf,GfV:()=>cM,i9L:()=>dp,s_b:()=>Fy,ifc:()=>Vn,eFA:()=>tb,G48:()=>AD,Gpc:()=>F,X6Q:()=>qy,_c5:()=>WD,VLi:()=>MD,c2e:()=>Jy,zSh:()=>Hm,wAp:()=>Za,vHH:()=>ee,EiD:()=>ts,mCW:()=>vf,qzn:()=>Uf,JVY:()=>Ed,pB0:()=>Oh,eBb:()=>qp,L6k:()=>Ah,LAX:()=>eh,cg1:()=>ME,Tjo:()=>GD,kL8:()=>wC,yhl:()=>Kp,dqk:()=>Nr,sIi:()=>Zm,CqO:()=>cE,QGY:()=>$1,F4k:()=>Rv,RDi:()=>el,AaK:()=>T,z3N:()=>kd,qOj:()=>D1,TTD:()=>To,_Bn:()=>HE,xp6:()=>La,uIk:()=>I1,Tol:()=>oC,Gre:()=>gC,MT6:()=>mC,DjV:()=>vC,ekj:()=>mE,Suo:()=>la,Xpm:()=>jt,lG2:()=>po,Yz7:()=>Dt,cJS:()=>Yn,oAB:()=>wn,Yjl:()=>yo,Y36:()=>k1,_UZ:()=>kS,GkF:()=>HS,BQk:()=>uE,ynx:()=>lE,qZA:()=>aE,TgZ:()=>sE,EpF:()=>US,n5z:()=>Ff,Ikx:()=>SE,SDv:()=>qC,QtT:()=>tM,DtL:()=>eM,N_p:()=>xy,pQV:()=>IE,Zx4:()=>nM,tHW:()=>PE,LFG:()=>Rn,$8M:()=>Tl,NdJ:()=>dE,CRH:()=>l2,oxw:()=>jS,ALo:()=>r2,lcZ:()=>i2,xi3:()=>Dg,Dn7:()=>o2,Hsn:()=>VS,F$t:()=>GS,Q6J:()=>iE,s9C:()=>pE,MGl:()=>by,hYB:()=>hE,DdM:()=>i0,VKq:()=>sT,WLB:()=>XM,kEZ:()=>KM,l5B:()=>qM,qbA:()=>e2,iGM:()=>Su,MAs:()=>Ke,pYS:()=>jf,Jf7:()=>Lh,CHM:()=>Aa,oJD:()=>_c,uOi:()=>Hd,LSH:()=>wu,kYT:()=>nr,Udp:()=>gE,d8E:()=>CE,YNc:()=>H,W1O:()=>Gy,_uU:()=>Ty,Oqu:()=>bE,hij:()=>Sy,AsE:()=>EE,lnq:()=>TE,Gf:()=>a2});var r=i(79765),u=i(75319),p=i(18891),f=i(66682),e=i(18819);function _(a){for(let l in a)if(a[l]===_)return l;throw Error("Could not find renamed property on target object.")}function y(a,l){for(const d in l)l.hasOwnProperty(d)&&!a.hasOwnProperty(d)&&(a[d]=l[d])}function T(a){if("string"==typeof a)return a;if(Array.isArray(a))return"["+a.map(T).join(", ")+"]";if(null==a)return""+a;if(a.overriddenName)return`${a.overriddenName}`;if(a.name)return`${a.name}`;const l=a.toString();if(null==l)return""+l;const d=l.indexOf("\n");return-1===d?l:l.substring(0,d)}function M(a,l){return null==a||""===a?null===l?"":l:null==l||""===l?a:a+" "+l}const R=_({__forward_ref__:_});function F(a){return a.__forward_ref__=F,a.toString=function(){return T(this())},a}function Z(a){return J(a)?a():a}function J(a){return"function"==typeof a&&a.hasOwnProperty(R)&&a.__forward_ref__===F}class ee extends Error{constructor(l,d){super(function(a,l){return`${a?`NG0${a}: `:""}${l}`}(l,d)),this.code=l}}function $(a){return"string"==typeof a?a:null==a?"":String(a)}function se(a){return"function"==typeof a?a.name||a.toString():"object"==typeof a&&null!=a&&"function"==typeof a.type?a.type.name||a.type.toString():$(a)}function me(a,l){const d=l?` in ${l}`:"";throw new ee("201",`No provider for ${se(a)} found${d}`)}function Ut(a,l,d,m){throw new Error(`ASSERTION ERROR: ${a}`+(null==m?"":` [Expected=> ${d} ${m} ${l} <=Actual]`))}function Dt(a){return{token:a.token,providedIn:a.providedIn||null,factory:a.factory,value:void 0}}function Yn(a){return{providers:a.providers||[],imports:a.imports||[]}}function Hr(a){return ci(a,Kr)||ci(a,Hn)}function ci(a,l){return a.hasOwnProperty(l)?a[l]:null}function Qr(a){return a&&(a.hasOwnProperty(In)||a.hasOwnProperty(Zr))?a[In]:null}const Kr=_({\u0275prov:_}),In=_({\u0275inj:_}),Hn=_({ngInjectableDef:_}),Zr=_({ngInjectorDef:_});var Ur=(()=>((Ur=Ur||{})[Ur.Default=0]="Default",Ur[Ur.Host=1]="Host",Ur[Ur.Self=2]="Self",Ur[Ur.SkipSelf=4]="SkipSelf",Ur[Ur.Optional=8]="Optional",Ur))();let di;function Hi(a){const l=di;return di=a,l}function Br(a,l,d){const m=Hr(a);return m&&"root"==m.providedIn?void 0===m.value?m.value=m.factory():m.value:d&Ur.Optional?null:void 0!==l?l:void me(T(a),"Injector")}function Wt(a){return{toString:a}.toString()}var Jn=(()=>((Jn=Jn||{})[Jn.OnPush=0]="OnPush",Jn[Jn.Default=1]="Default",Jn))(),Vn=(()=>((Vn=Vn||{})[Vn.Emulated=0]="Emulated",Vn[Vn.None=2]="None",Vn[Vn.ShadowDom=3]="ShadowDom",Vn))();const zr="undefined"!=typeof globalThis&&globalThis,hi="undefined"!=typeof window&&window,Ai="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,Nr=zr||"undefined"!=typeof global&&global||hi||Ai,mr={},Xt=[],zn=_({\u0275cmp:_}),vr=_({\u0275dir:_}),si=_({\u0275pipe:_}),Ii=_({\u0275mod:_}),no=_({\u0275loc:_}),so=_({\u0275fac:_}),Ze=_({__NG_ELEMENT_ID__:_});let Dr=0;function jt(a){return Wt(()=>{const d={},m={type:a.type,providersResolver:null,decls:a.decls,vars:a.vars,factory:null,template:a.template||null,consts:a.consts||null,ngContentSelectors:a.ngContentSelectors,hostBindings:a.hostBindings||null,hostVars:a.hostVars||0,hostAttrs:a.hostAttrs||null,contentQueries:a.contentQueries||null,declaredInputs:d,inputs:null,outputs:null,exportAs:a.exportAs||null,onPush:a.changeDetection===Jn.OnPush,directiveDefs:null,pipeDefs:null,selectors:a.selectors||Xt,viewQuery:a.viewQuery||null,features:a.features||null,data:a.data||{},encapsulation:a.encapsulation||Vn.Emulated,id:"c",styles:a.styles||Xt,_:null,setInput:null,schemas:a.schemas||null,tView:null},A=a.directives,L=a.features,te=a.pipes;return m.id+=Dr++,m.inputs=Gi(a.inputs,d),m.outputs=Gi(a.outputs),L&&L.forEach(le=>le(m)),m.directiveDefs=A?()=>("function"==typeof A?A():A).map(mn):null,m.pipeDefs=te?()=>("function"==typeof te?te():te).map(Wn):null,m})}function mn(a){return Mo(a)||function(a){return a[vr]||null}(a)}function Wn(a){return function(a){return a[si]||null}(a)}const kn={};function wn(a){return Wt(()=>{const l={type:a.type,bootstrap:a.bootstrap||Xt,declarations:a.declarations||Xt,imports:a.imports||Xt,exports:a.exports||Xt,transitiveCompileScopes:null,schemas:a.schemas||null,id:a.id||null};return null!=a.id&&(kn[a.id]=a.type),l})}function nr(a,l){return Wt(()=>{const d=zo(a,!0);d.declarations=l.declarations||Xt,d.imports=l.imports||Xt,d.exports=l.exports||Xt})}function Gi(a,l){if(null==a)return mr;const d={};for(const m in a)if(a.hasOwnProperty(m)){let A=a[m],L=A;Array.isArray(A)&&(L=A[1],A=A[0]),d[A]=m,l&&(l[A]=L)}return d}const po=jt;function yo(a){return{type:a.type,name:a.name,factory:null,pure:!1!==a.pure,onDestroy:a.type.prototype.ngOnDestroy||null}}function Mo(a){return a[zn]||null}function zo(a,l){const d=a[Ii]||null;if(!d&&!0===l)throw new Error(`Type ${T(a)} does not have '\u0275mod' property.`);return d}function pa(a){return Array.isArray(a)&&"object"==typeof a[1]}function Bs(a){return Array.isArray(a)&&!0===a[1]}function Yl(a){return 0!=(8&a.flags)}function yl(a){return 2==(2&a.flags)}function fo(a){return 1==(1&a.flags)}function Da(a){return null!==a.template}function Ao(a){return 0!=(512&a[2])}function Ro(a,l){return a.hasOwnProperty(so)?a[so]:null}class Uo{constructor(l,d,m){this.previousValue=l,this.currentValue=d,this.firstChange=m}isFirstChange(){return this.firstChange}}function To(){return Ea}function Ea(a){return a.type.prototype.ngOnChanges&&(a.setInput=qu),al}function al(){const a=yc(this),l=null==a?void 0:a.current;if(l){const d=a.previous;if(d===mr)a.previous=l;else for(let m in l)d[m]=l[m];a.current=null,this.ngOnChanges(l)}}function qu(a,l,d,m){const A=yc(a)||function(a,l){return a[Ru]=l}(a,{previous:mr,current:null}),L=A.current||(A.current={}),te=A.previous,le=this.declaredInputs[d],Ne=te[le];L[le]=new Uo(Ne&&Ne.currentValue,l,te===mr),a[m]=l}To.ngInherit=!0;const Ru="__ngSimpleChanges__";function yc(a){return a[Ru]||null}let ou;function el(a){ou=a}function Cu(){return void 0!==ou?ou:"undefined"!=typeof document?document:void 0}function rt(a){return!!a.listen}const ct={createRenderer:(a,l)=>Cu()};function Me(a){for(;Array.isArray(a);)a=a[0];return a}function dr(a,l){return Me(l[a])}function Qi(a,l){return Me(l[a.index])}function Es(a,l){return a.data[l]}function vs(a,l){return a[l]}function Ms(a,l){const d=l[a];return pa(d)?d:d[0]}function Ma(a){return 4==(4&a[2])}function uu(a){return 128==(128&a[2])}function Pl(a,l){return null==l?null:a[l]}function ec(a){a[18]=0}function Ol(a,l){a[5]+=l;let d=a,m=a[3];for(;null!==m&&(1===l&&1===d[5]||-1===l&&0===d[5]);)m[5]+=l,d=m,m=m[3]}const Ts={lFrame:Or(null),bindingsEnabled:!0,isInCheckNoChangesMode:!1};function Ic(){return Ts.bindingsEnabled}function Fi(){return Ts.lFrame.lView}function ua(){return Ts.lFrame.tView}function Aa(a){return Ts.lFrame.contextLView=a,a[8]}function As(){let a=ku();for(;null!==a&&64===a.type;)a=a.parent;return a}function ku(){return Ts.lFrame.currentTNode}function bl(){const a=Ts.lFrame,l=a.currentTNode;return a.isParent?l:l.parent}function Au(a,l){const d=Ts.lFrame;d.currentTNode=a,d.isParent=l}function bu(){return Ts.lFrame.isParent}function cu(){Ts.lFrame.isParent=!1}function Hu(){return Ts.isInCheckNoChangesMode}function Yo(a){Ts.isInCheckNoChangesMode=a}function du(){const a=Ts.lFrame;let l=a.bindingRootIndex;return-1===l&&(l=a.bindingRootIndex=a.tView.bindingStartIndex),l}function Ar(){return Ts.lFrame.bindingIndex}function _u(){return Ts.lFrame.bindingIndex++}function fa(a){const l=Ts.lFrame,d=l.bindingIndex;return l.bindingIndex=l.bindingIndex+a,d}function Ja(a){Ts.lFrame.inI18n=a}function hl(a,l){const d=Ts.lFrame;d.bindingIndex=d.bindingRootIndex=a,Hs(l)}function Hs(a){Ts.lFrame.currentDirectiveIndex=a}function V(a){const l=Ts.lFrame.currentDirectiveIndex;return-1===l?null:a[l]}function Ae(){return Ts.lFrame.currentQueryIndex}function ot(a){Ts.lFrame.currentQueryIndex=a}function _t(a){const l=a[1];return 2===l.type?l.declTNode:1===l.type?a[6]:null}function lt(a,l,d){if(d&Ur.SkipSelf){let A=l,L=a;for(;!(A=A.parent,null!==A||d&Ur.Host||(A=_t(L),null===A||(L=L[15],10&A.type))););if(null===A)return!1;l=A,a=L}const m=Ts.lFrame=yn();return m.currentTNode=l,m.lView=a,!0}function un(a){const l=yn(),d=a[1];Ts.lFrame=l,l.currentTNode=d.firstChild,l.lView=a,l.tView=d,l.contextLView=a,l.bindingIndex=d.bindingStartIndex,l.inI18n=!1}function yn(){const a=Ts.lFrame,l=null===a?null:a.child;return null===l?Or(a):l}function Or(a){const l={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:a,child:null,inI18n:!1};return null!==a&&(a.child=l),l}function Vr(){const a=Ts.lFrame;return Ts.lFrame=a.parent,a.currentTNode=null,a.lView=null,a}const _i=Vr;function oi(){const a=Vr();a.isParent=!0,a.tView=null,a.selectedIndex=-1,a.contextLView=null,a.elementDepthCount=0,a.currentDirectiveIndex=-1,a.currentNamespace=null,a.bindingRootIndex=-1,a.bindingIndex=-1,a.currentQueryIndex=0}function Ln(){return Ts.lFrame.selectedIndex}function Mr(a){Ts.lFrame.selectedIndex=a}function gr(){const a=Ts.lFrame;return Es(a.tView,a.selectedIndex)}function Lc(a,l){for(let d=l.directiveStart,m=l.directiveEnd;d<m;d++){const L=a.data[d].type.prototype,{ngAfterContentInit:te,ngAfterContentChecked:le,ngAfterViewInit:Ne,ngAfterViewChecked:qe,ngOnDestroy:Mt}=L;te&&(a.contentHooks||(a.contentHooks=[])).push(-d,te),le&&((a.contentHooks||(a.contentHooks=[])).push(d,le),(a.contentCheckHooks||(a.contentCheckHooks=[])).push(d,le)),Ne&&(a.viewHooks||(a.viewHooks=[])).push(-d,Ne),qe&&((a.viewHooks||(a.viewHooks=[])).push(d,qe),(a.viewCheckHooks||(a.viewCheckHooks=[])).push(d,qe)),null!=Mt&&(a.destroyHooks||(a.destroyHooks=[])).push(d,Mt)}}function zl(a,l,d){_a(a,l,3,d)}function ki(a,l,d,m){(3&a[2])===d&&_a(a,l,d,m)}function No(a,l){let d=a[2];(3&d)===l&&(d&=2047,d+=1,a[2]=d)}function _a(a,l,d,m){const L=null!=m?m:-1,te=l.length-1;let le=0;for(let Ne=void 0!==m?65535&a[18]:0;Ne<te;Ne++)if("number"==typeof l[Ne+1]){if(le=l[Ne],null!=m&&le>=m)break}else l[Ne]<0&&(a[18]+=65536),(le<L||-1==L)&&(ll(a,d,l,Ne),a[18]=(4294901760&a[18])+Ne+2),Ne++}function ll(a,l,d,m){const A=d[m]<0,L=d[m+1],le=a[A?-d[m]:d[m]];if(A){if(a[2]>>11<a[18]>>16&&(3&a[2])===l){a[2]+=2048;try{L.call(le)}finally{}}}else try{L.call(le)}finally{}}class Xs{constructor(l,d,m){this.factory=l,this.resolving=!1,this.canSeeViewProviders=d,this.injectImpl=m}}function nc(a,l,d){const m=rt(a);let A=0;for(;A<d.length;){const L=d[A];if("number"==typeof L){if(0!==L)break;A++;const te=d[A++],le=d[A++],Ne=d[A++];m?a.setAttribute(l,le,Ne,te):l.setAttributeNS(te,le,Ne)}else{const te=L,le=d[++A];ul(te)?m&&a.setProperty(l,te,le):m?a.setAttribute(l,te,le):l.setAttribute(te,le),A++}}return A}function df(a){return 3===a||4===a||6===a}function ul(a){return 64===a.charCodeAt(0)}function zd(a,l){if(null!==l&&0!==l.length)if(null===a||0===a.length)a=l.slice();else{let d=-1;for(let m=0;m<l.length;m++){const A=l[m];"number"==typeof A?d=A:0===d||Wd(a,d,A,null,-1===d||2===d?l[++m]:null)}}return a}function Wd(a,l,d,m,A){let L=0,te=a.length;if(-1===l)te=-1;else for(;L<a.length;){const le=a[L++];if("number"==typeof le){if(le===l){te=-1;break}if(le>l){te=L-1;break}}}for(;L<a.length;){const le=a[L];if("number"==typeof le)break;if(le===d){if(null===m)return void(null!==A&&(a[L+1]=A));if(m===a[L+1])return void(a[L+2]=A)}L++,null!==m&&L++,null!==A&&L++}-1!==te&&(a.splice(te,0,l),L=te+1),a.splice(L++,0,d),null!==m&&a.splice(L++,0,m),null!==A&&a.splice(L++,0,A)}function Be(a){return-1!==a}function Pe(a){return 32767&a}function it(a,l){let d=function(a){return a>>16}(a),m=l;for(;d>0;)m=m[15],d--;return m}let yt=!0;function qt(a){const l=yt;return yt=a,l}let Go=0;function ss(a,l){const d=Us(a,l);if(-1!==d)return d;const m=l[1];m.firstCreatePass&&(a.injectorIndex=l.length,Oa(m.data,a),Oa(l,null),Oa(m.blueprint,null));const A=fc(a,l),L=a.injectorIndex;if(Be(A)){const te=Pe(A),le=it(A,l),Ne=le[1].data;for(let qe=0;qe<8;qe++)l[L+qe]=le[te+qe]|Ne[te+qe]}return l[L+8]=A,L}function Oa(a,l){a.push(0,0,0,0,0,0,0,0,l)}function Us(a,l){return-1===a.injectorIndex||a.parent&&a.parent.injectorIndex===a.injectorIndex||null===l[a.injectorIndex+8]?-1:a.injectorIndex}function fc(a,l){if(a.parent&&-1!==a.parent.injectorIndex)return a.parent.injectorIndex;let d=0,m=null,A=l;for(;null!==A;){const L=A[1],te=L.type;if(m=2===te?L.declTNode:1===te?A[6]:null,null===m)return-1;if(d++,A=A[15],-1!==m.injectorIndex)return m.injectorIndex|d<<16}return-1}function va(a,l,d){!function(a,l,d){let m;"string"==typeof d?m=d.charCodeAt(0)||0:d.hasOwnProperty(Ze)&&(m=d[Ze]),null==m&&(m=d[Ze]=Go++);const A=255&m;l.data[a+(A>>5)]|=1<<A}(a,l,d)}function tl(a,l,d){if(d&Ur.Optional)return a;me(l,"NodeInjector")}function $a(a,l,d,m){if(d&Ur.Optional&&void 0===m&&(m=null),0==(d&(Ur.Self|Ur.Host))){const A=a[9],L=Hi(void 0);try{return A?A.get(l,m,d&Ur.Optional):Br(l,m,d&Ur.Optional)}finally{Hi(L)}}return tl(m,l,d)}function Ha(a,l,d,m=Ur.Default,A){if(null!==a){const L=function(a){if("string"==typeof a)return a.charCodeAt(0)||0;const l=a.hasOwnProperty(Ze)?a[Ze]:void 0;return"number"==typeof l?l>=0?255&l:Of:l}(d);if("function"==typeof L){if(!lt(l,a,m))return m&Ur.Host?tl(A,d,m):$a(l,d,m,A);try{const te=L(m);if(null!=te||m&Ur.Optional)return te;me(d)}finally{_i()}}else if("number"==typeof L){let te=null,le=Us(a,l),Ne=-1,qe=m&Ur.Host?l[16][6]:null;for((-1===le||m&Ur.SkipSelf)&&(Ne=-1===le?fc(a,l):l[le+8],-1!==Ne&&Qd(m,!1)?(te=l[1],le=Pe(Ne),l=it(Ne,l)):le=-1);-1!==le;){const Mt=l[1];if(Sc(L,le,Mt.data)){const an=Dd(le,l,d,te,m,qe);if(an!==nl)return an}Ne=l[le+8],-1!==Ne&&Qd(m,l[1].data[le+8]===qe)&&Sc(L,le,l)?(te=Mt,le=Pe(Ne),l=it(Ne,l)):le=-1}}}return $a(l,d,m,A)}const nl={};function Of(){return new Gc(As(),Fi())}function Dd(a,l,d,m,A,L){const te=l[1],le=te.data[a+8],Mt=Jd(le,te,d,null==m?yl(le)&&yt:m!=te&&0!=(3&le.type),A&Ur.Host&&L===le);return null!==Mt?Tc(l,te,Mt,le):nl}function Jd(a,l,d,m,A){const L=a.providerIndexes,te=l.data,le=1048575&L,Ne=a.directiveStart,Mt=L>>20,_n=A?le+Mt:a.directiveEnd;for(let or=m?le:le+Mt;or<_n;or++){const Rr=te[or];if(or<Ne&&d===Rr||or>=Ne&&Rr.type===d)return or}if(A){const or=te[Ne];if(or&&Da(or)&&or.type===d)return Ne}return null}function Tc(a,l,d,m){let A=a[d];const L=l.data;if(function(a){return a instanceof Xs}(A)){const te=A;te.resolving&&function(a,l){throw new ee("200",`Circular dependency in DI detected for ${a}`)}(se(L[d]));const le=qt(te.canSeeViewProviders);te.resolving=!0;const Ne=te.injectImpl?Hi(te.injectImpl):null;lt(a,m,Ur.Default);try{A=a[d]=te.factory(void 0,L,a,m),l.firstCreatePass&&d>=m.directiveStart&&function(a,l,d){const{ngOnChanges:m,ngOnInit:A,ngDoCheck:L}=l.type.prototype;if(m){const te=Ea(l);(d.preOrderHooks||(d.preOrderHooks=[])).push(a,te),(d.preOrderCheckHooks||(d.preOrderCheckHooks=[])).push(a,te)}A&&(d.preOrderHooks||(d.preOrderHooks=[])).push(0-a,A),L&&((d.preOrderHooks||(d.preOrderHooks=[])).push(a,L),(d.preOrderCheckHooks||(d.preOrderCheckHooks=[])).push(a,L))}(d,L[d],l)}finally{null!==Ne&&Hi(Ne),qt(le),te.resolving=!1,_i()}}return A}function Sc(a,l,d){return!!(d[l+(a>>5)]&1<<a)}function Qd(a,l){return!(a&Ur.Self||a&Ur.Host&&l)}class Gc{constructor(l,d){this._tNode=l,this._lView=d}get(l,d,m){return Ha(this._tNode,this._lView,l,m,d)}}function Ff(a){return Wt(()=>{const l=a.prototype.constructor,d=l[so]||zu(l),m=Object.prototype;let A=Object.getPrototypeOf(a.prototype).constructor;for(;A&&A!==m;){const L=A[so]||zu(A);if(L&&L!==d)return L;A=Object.getPrototypeOf(A)}return L=>new L})}function zu(a){return J(a)?()=>{const l=zu(Z(a));return l&&l()}:Ro(a)}function Tl(a){return function(a,l){if("class"===l)return a.classes;if("style"===l)return a.styles;const d=a.attrs;if(d){const m=d.length;let A=0;for(;A<m;){const L=d[A];if(df(L))break;if(0===L)A+=2;else if("number"==typeof L)for(A++;A<m&&"string"==typeof d[A];)A++;else{if(L===l)return d[A+1];A+=2}}}return null}(As(),a)}const kl="__parameters__",Nu="__prop__metadata__";function Wu(a){return function(...d){if(a){const m=a(...d);for(const A in m)this[A]=m[A]}}}function tn(a,l,d){return Wt(()=>{const m=Wu(l);function A(...L){if(this instanceof A)return m.apply(this,L),this;const te=new A(...L);return le.annotation=te,le;function le(Ne,qe,Mt){const an=Ne.hasOwnProperty(kl)?Ne[kl]:Object.defineProperty(Ne,kl,{value:[]})[kl];for(;an.length<=Mt;)an.push(null);return(an[Mt]=an[Mt]||[]).push(te),Ne}}return d&&(A.prototype=Object.create(d.prototype)),A.prototype.ngMetadataName=a,A.annotationCls=A,A})}function Mc(a,l,d,m){return Wt(()=>{const A=Wu(l);function L(...te){if(this instanceof L)return A.apply(this,te),this;const le=new L(...te);return function(qe,Mt){const an=qe.constructor,_n=an.hasOwnProperty(Nu)?an[Nu]:Object.defineProperty(an,Nu,{value:{}})[Nu];_n[Mt]=_n.hasOwnProperty(Mt)&&_n[Mt]||[],_n[Mt].unshift(le),m&&m(qe,Mt,...te)}}return d&&(L.prototype=Object.create(d.prototype)),L.prototype.ngMetadataName=a,L.annotationCls=L,L})}class Xl{constructor(l,d){this._desc=l,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof d?this.__NG_ELEMENT_ID__=d:void 0!==d&&(this.\u0275prov=Dt({token:this,providedIn:d.providedIn||"root",factory:d.factory}))}toString(){return`InjectionToken ${this._desc}`}}const yd=new Xl("AnalyzeForEntryComponents");class Vc{}const dp=Mc("ViewChild",(a,l)=>Object.assign({selector:a,first:!0,isViewQuery:!0,descendants:!0},l),Vc),kf=Function;function wc(a,l){void 0===l&&(l=a);for(let d=0;d<a.length;d++){let m=a[d];Array.isArray(m)?(l===a&&(l=a.slice(0,d)),wc(m,l)):l!==a&&l.push(m)}return l}function ql(a,l){a.forEach(d=>Array.isArray(d)?ql(d,l):l(d))}function Ji(a,l,d){l>=a.length?a.push(d):a.splice(l,0,d)}function cl(a,l){return l>=a.length-1?a.pop():a.splice(l,1)[0]}function Ll(a,l){const d=[];for(let m=0;m<a;m++)d.push(l);return d}function Wl(a,l,d){let m=rc(a,l);return m>=0?a[1|m]=d:(m=~m,function(a,l,d,m){let A=a.length;if(A==l)a.push(d,m);else if(1===A)a.push(m,a[0]),a[0]=d;else{for(A--,a.push(a[A-1],a[A]);A>l;)a[A]=a[A-2],A--;a[l]=d,a[l+1]=m}}(a,m,l,d)),m}function Pd(a,l){const d=rc(a,l);if(d>=0)return a[1|d]}function rc(a,l){return function(a,l,d){let m=0,A=a.length>>d;for(;A!==m;){const L=m+(A-m>>1),te=a[L<<d];if(l===te)return L<<d;te>l?A=L:m=L+1}return~(A<<d)}(a,l,1)}const N={},k="__NG_DI_FLAG__",K="ngTempTokenPath",be=/\n/gm,we="__source",gt=_({provide:String,useValue:_});let vt;function Jt(a){const l=vt;return vt=a,l}function Pn(a,l=Ur.Default){if(void 0===vt)throw new Error("inject() must be called from an injection context");return null===vt?Br(a,void 0,l):vt.get(a,l&Ur.Optional?null:void 0,l)}function Rn(a,l=Ur.Default){return(di||Pn)(Z(a),l)}function Ni(a){const l=[];for(let d=0;d<a.length;d++){const m=Z(a[d]);if(Array.isArray(m)){if(0===m.length)throw new Error("Arguments array must have arguments.");let A,L=Ur.Default;for(let te=0;te<m.length;te++){const le=m[te],Ne=$o(le);"number"==typeof Ne?-1===Ne?A=le.token:L|=Ne:A=le}l.push(Rn(A,L))}else l.push(Rn(m))}return l}function Vo(a,l){return a[k]=l,a.prototype[k]=l,a}function $o(a){return a[k]}function Vs(a,l,d,m){const A=a[K];throw l[we]&&A.unshift(l[we]),a.message=function(a,l,d,m=null){a=a&&"\n"===a.charAt(0)&&"\u0275"==a.charAt(1)?a.substr(2):a;let A=T(l);if(Array.isArray(l))A=l.map(T).join(" -> ");else if("object"==typeof l){let L=[];for(let te in l)if(l.hasOwnProperty(te)){let le=l[te];L.push(te+":"+("string"==typeof le?JSON.stringify(le):T(le)))}A=`{${L.join(", ")}}`}return`${d}${m?"("+m+")":""}[${A}]: ${a.replace(be,"\n  ")}`}("\n"+a.message,A,d,m),a.ngTokenPath=A,a[K]=null,a}const ga=Vo(tn("Inject",a=>({token:a})),-1),sa=Vo(tn("Optional"),8),ol=Vo(tn("SkipSelf"),4);let ia,$p;function Jl(a){var l;return(null===(l=function(){if(void 0===ia&&(ia=null,Nr.trustedTypes))try{ia=Nr.trustedTypes.createPolicy("angular",{createHTML:a=>a,createScript:a=>a,createScriptURL:a=>a})}catch(a){}return ia}())||void 0===l?void 0:l.createHTML(a))||a}function Hp(){if(void 0===$p&&($p=null,Nr.trustedTypes))try{$p=Nr.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:a=>a,createScript:a=>a,createScriptURL:a=>a})}catch(a){}return $p}function mf(a){var l;return(null===(l=Hp())||void 0===l?void 0:l.createHTML(a))||a}function dd(a){var l;return(null===(l=Hp())||void 0===l?void 0:l.createScriptURL(a))||a}class Fd{constructor(l){this.changingThisBreaksApplicationSecurity=l}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see https://g.co/ng/security#xss)`}}class fp extends Fd{getTypeName(){return"HTML"}}class fl extends Fd{getTypeName(){return"Style"}}class Kh extends Fd{getTypeName(){return"Script"}}class F_ extends Fd{getTypeName(){return"URL"}}class Hf extends Fd{getTypeName(){return"ResourceURL"}}function kd(a){return a instanceof Fd?a.changingThisBreaksApplicationSecurity:a}function Uf(a,l){const d=Kp(a);if(null!=d&&d!==l){if("ResourceURL"===d&&"URL"===l)return!0;throw new Error(`Required a safe ${l}, got a ${d} (see https://g.co/ng/security#xss)`)}return d===l}function Kp(a){return a instanceof Fd&&a.getTypeName()||null}function Ed(a){return new fp(a)}function Ah(a){return new fl(a)}function qp(a){return new Kh(a)}function eh(a){return new F_(a)}function Oh(a){return new Hf(a)}function th(a){const l=new xf(a);return function(){try{return!!(new window.DOMParser).parseFromString(Jl(""),"text/html")}catch(a){return!1}}()?new Td(l):l}class Td{constructor(l){this.inertDocumentHelper=l}getInertBodyElement(l){l="<body><remove></remove>"+l;try{const d=(new window.DOMParser).parseFromString(Jl(l),"text/html").body;return null===d?this.inertDocumentHelper.getInertBodyElement(l):(d.removeChild(d.firstChild),d)}catch(d){return null}}}class xf{constructor(l){if(this.defaultDoc=l,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const d=this.inertDocument.createElement("html");this.inertDocument.appendChild(d);const m=this.inertDocument.createElement("body");d.appendChild(m)}}getInertBodyElement(l){const d=this.inertDocument.createElement("template");if("content"in d)return d.innerHTML=Jl(l),d;const m=this.inertDocument.createElement("body");return m.innerHTML=Jl(l),this.defaultDoc.documentMode&&this.stripCustomNsAttrs(m),m}stripCustomNsAttrs(l){const d=l.attributes;for(let A=d.length-1;0<A;A--){const te=d.item(A).name;("xmlns:ns1"===te||0===te.indexOf("ns1:"))&&l.removeAttribute(te)}let m=l.firstChild;for(;m;)m.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(m),m=m.nextSibling}}const Up=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi,xh=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function vf(a){return(a=String(a)).match(Up)||a.match(xh)?a:"unsafe:"+a}function Dh(a){return(a=String(a)).split(",").map(l=>vf(l.trim())).join(", ")}function $d(a){const l={};for(const d of a.split(","))l[d]=!0;return l}function pp(...a){const l={};for(const d of a)for(const m in d)d.hasOwnProperty(m)&&(l[m]=!0);return l}const Bf=$d("area,br,col,hr,img,wbr"),Kd=$d("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),oc=$d("rp,rt"),Y=pp(Bf,pp(Kd,$d("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),pp(oc,$d("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),pp(oc,Kd)),fe=$d("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),w=$d("srcset"),ut=pp(fe,w,$d("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),$d("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),Xn=$d("script,style,template");class Fr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(l){let d=l.firstChild,m=!0;for(;d;)if(d.nodeType===Node.ELEMENT_NODE?m=this.startElement(d):d.nodeType===Node.TEXT_NODE?this.chars(d.nodeValue):this.sanitizedSomething=!0,m&&d.firstChild)d=d.firstChild;else for(;d;){d.nodeType===Node.ELEMENT_NODE&&this.endElement(d);let A=this.checkClobberedElement(d,d.nextSibling);if(A){d=A;break}d=this.checkClobberedElement(d,d.parentNode)}return this.buf.join("")}startElement(l){const d=l.nodeName.toLowerCase();if(!Y.hasOwnProperty(d))return this.sanitizedSomething=!0,!Xn.hasOwnProperty(d);this.buf.push("<"),this.buf.push(d);const m=l.attributes;for(let A=0;A<m.length;A++){const L=m.item(A),te=L.name,le=te.toLowerCase();if(!ut.hasOwnProperty(le)){this.sanitizedSomething=!0;continue}let Ne=L.value;fe[le]&&(Ne=vf(Ne)),w[le]&&(Ne=Dh(Ne)),this.buf.push(" ",te,'="',Po(Ne),'"')}return this.buf.push(">"),!0}endElement(l){const d=l.nodeName.toLowerCase();Y.hasOwnProperty(d)&&!Bf.hasOwnProperty(d)&&(this.buf.push("</"),this.buf.push(d),this.buf.push(">"))}chars(l){this.buf.push(Po(l))}checkClobberedElement(l,d){if(d&&(l.compareDocumentPosition(d)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${l.outerHTML}`);return d}}const gi=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Wi=/([^\#-~ |!])/g;function Po(a){return a.replace(/&/g,"&amp;").replace(gi,function(l){return"&#"+(1024*(l.charCodeAt(0)-55296)+(l.charCodeAt(1)-56320)+65536)+";"}).replace(Wi,function(l){return"&#"+l.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let Ns;function ts(a,l){let d=null;try{Ns=Ns||th(a);let m=l?String(l):"";d=Ns.getInertBodyElement(m);let A=5,L=m;do{if(0===A)throw new Error("Failed to sanitize html because the input is unstable");A--,m=L,L=d.innerHTML,d=Ns.getInertBodyElement(m)}while(m!==L);return Jl((new Fr).sanitizeChildren(Is(d)||d))}finally{if(d){const m=Is(d)||d;for(;m.firstChild;)m.removeChild(m.firstChild)}}}function Is(a){return"content"in a&&function(a){return a.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===a.nodeName}(a)?a.content:null}var zs=(()=>((zs=zs||{})[zs.NONE=0]="NONE",zs[zs.HTML=1]="HTML",zs[zs.STYLE=2]="STYLE",zs[zs.SCRIPT=3]="SCRIPT",zs[zs.URL=4]="URL",zs[zs.RESOURCE_URL=5]="RESOURCE_URL",zs))();function _c(a){const l=_p();return l?mf(l.sanitize(zs.HTML,a)||""):Uf(a,"HTML")?mf(kd(a)):ts(Cu(),$(a))}function wu(a){const l=_p();return l?l.sanitize(zs.URL,a)||"":Uf(a,"URL")?kd(a):vf($(a))}function Hd(a){const l=_p();if(l)return dd(l.sanitize(zs.RESOURCE_URL,a)||"");if(Uf(a,"ResourceURL"))return dd(kd(a));throw new Error("unsafe value used in a resource URL context (see https://g.co/ng/security#xss)")}function _p(){const a=Fi();return a&&a[12]}const B_="__ngContext__";function Jc(a,l){a[B_]=l}function t_(a){const l=function(a){return a[B_]||null}(a);return l?Array.isArray(l)?l:l.lView:null}function Yu(a){return a.ngOriginalError}function Bp(a,...l){a.error(...l)}class Zf{constructor(){this._console=console}handleError(l){const d=this._findOriginalError(l),m=this._findContext(l),A=(a=l)&&a.ngErrorLogger||Bp;var a;A(this._console,"ERROR",l),d&&A(this._console,"ORIGINAL ERROR",d),m&&A(this._console,"ERROR CONTEXT",m)}_findContext(l){return l?l.ngDebugContext||this._findContext(Yu(l)):null}_findOriginalError(l){let d=l&&Yu(l);for(;d&&Yu(d);)d=Yu(d);return d||null}}const Z_=/^>|^->|<!--|-->|--!>|<!-$/g,j_=/(<|>)/;const Ih=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(Nr))();function Lh(a){return a.ownerDocument.defaultView}function jf(a){return a.ownerDocument.body}function yf(a){return a instanceof Function?a():a}var Bd=(()=>((Bd=Bd||{})[Bd.Important=1]="Important",Bd[Bd.DashCase=2]="DashCase",Bd))();let fd;function bf(a,l){return fd(a,l)}function sd(a){const l=a[3];return Bs(l)?l[3]:l}function tp(a){return ch(a[13])}function V_(a){return ch(a[4])}function ch(a){for(;null!==a&&!Bs(a);)a=a[4];return a}function Uc(a,l,d,m,A){if(null!=m){let L,te=!1;Bs(m)?L=m:pa(m)&&(te=!0,m=m[0]);const le=Me(m);0===a&&null!==d?null==A?$g(l,d,le):ph(l,d,le,A||null,!0):1===a&&null!==d?ph(l,d,le,A||null,!0):2===a?p_(l,le,te):3===a&&l.destroyNode(le),null!=L&&function(a,l,d,m,A){const L=d[7];L!==Me(d)&&Uc(l,a,m,L,A);for(let le=10;le<d.length;le++){const Ne=d[le];Hh(Ne[1],Ne,a,l,m,L)}}(l,a,L,d,A)}}function Rf(a,l){return rt(a)?a.createText(l):a.createTextNode(l)}function dh(a,l,d){rt(a)?a.setValue(l,d):l.textContent=d}function vg(a,l){return a.createComment(function(a){return a.replace(Z_,l=>l.replace(j_,"\u200b$1\u200b"))}(l))}function Fh(a,l,d){return rt(a)?a.createElement(l,d):null===d?a.createElement(l):a.createElementNS(d,l)}function Fg(a,l){const d=a[9],m=d.indexOf(l),A=l[3];1024&l[2]&&(l[2]&=-1025,Ol(A,-1)),d.splice(m,1)}function yg(a,l){if(a.length<=10)return;const d=10+l,m=a[d];if(m){const A=m[17];null!==A&&A!==a&&Fg(A,m),l>0&&(a[d-1][4]=m[4]);const L=cl(a,10+l);!function(a,l){Hh(a,l,l[11],2,null,null),l[0]=null,l[6]=null}(m[1],m);const te=L[19];null!==te&&te.detachView(L[1]),m[3]=null,m[4]=null,m[2]&=-129}return m}function bp(a,l){if(!(256&l[2])){const d=l[11];rt(d)&&d.destroyNode&&Hh(a,l,d,3,null,null),function(a){let l=a[13];if(!l)return bg(a[1],a);for(;l;){let d=null;if(pa(l))d=l[13];else{const m=l[10];m&&(d=m)}if(!d){for(;l&&!l[4]&&l!==a;)pa(l)&&bg(l[1],l),l=l[3];null===l&&(l=a),pa(l)&&bg(l[1],l),d=l&&l[4]}l=d}}(l)}}function bg(a,l){if(!(256&l[2])){l[2]&=-129,l[2]|=256,function(a,l){let d;if(null!=a&&null!=(d=a.destroyHooks))for(let m=0;m<d.length;m+=2){const A=l[d[m]];if(!(A instanceof Xs)){const L=d[m+1];if(Array.isArray(L))for(let te=0;te<L.length;te+=2){const le=A[L[te]],Ne=L[te+1];try{Ne.call(le)}finally{}}else try{L.call(A)}finally{}}}}(a,l),function(a,l){const d=a.cleanup,m=l[7];let A=-1;if(null!==d)for(let L=0;L<d.length-1;L+=2)if("string"==typeof d[L]){const te=d[L+1],le="function"==typeof te?te(l):Me(l[te]),Ne=m[A=d[L+2]],qe=d[L+3];"boolean"==typeof qe?le.removeEventListener(d[L],Ne,qe):qe>=0?m[A=qe]():m[A=-qe].unsubscribe(),L+=2}else{const te=m[A=d[L+1]];d[L].call(te)}if(null!==m){for(let L=A+1;L<m.length;L++)m[L]();l[7]=null}}(a,l),1===l[1].type&&rt(l[11])&&l[11].destroy();const d=l[17];if(null!==d&&Bs(l[3])){d!==l[3]&&Fg(d,l);const m=l[19];null!==m&&m.detachView(a)}}}function z_(a,l,d){return Ep(a,l.parent,d)}function Ep(a,l,d){let m=l;for(;null!==m&&40&m.type;)m=(l=m).parent;if(null===m)return d[0];if(2&m.flags){const A=a.data[m.directiveStart].encapsulation;if(A===Vn.None||A===Vn.Emulated)return null}return Qi(m,d)}function ph(a,l,d,m,A){rt(a)?a.insertBefore(l,d,m,A):l.insertBefore(d,m,A)}function $g(a,l,d){rt(a)?a.appendChild(l,d):l.appendChild(d)}function W_(a,l,d,m,A){null!==m?ph(a,l,d,m,A):$g(a,l,d)}function Yd(a,l){return rt(a)?a.parentNode(l):l.parentNode}function Hg(a,l,d){return f_(a,l,d)}function Tp(a,l,d){return 40&a.type?Qi(a,d):null}let Qc,f_=Tp;function J_(a,l){f_=a,Qc=l}function kh(a,l,d,m){const A=z_(a,m,l),L=l[11],le=Hg(m.parent||l[6],m,l);if(null!=A)if(Array.isArray(d))for(let Ne=0;Ne<d.length;Ne++)W_(L,A,d[Ne],le,!1);else W_(L,A,d,le,!1);void 0!==Qc&&Qc(L,m,l,d,A)}function $h(a,l){if(null!==l){const d=l.type;if(3&d)return Qi(l,a);if(4&d)return Cg(-1,a[l.index]);if(8&d){const m=l.child;if(null!==m)return $h(a,m);{const A=a[l.index];return Bs(A)?Cg(-1,A):Me(A)}}if(32&d)return bf(l,a)()||Me(a[l.index]);{const m=Sg(a,l);return null!==m?Array.isArray(m)?m[0]:$h(sd(a[16]),m):$h(a,l.next)}}return null}function Sg(a,l){return null!==l?a[16][6].projection[l.projection]:null}function Cg(a,l){const d=10+a+1;if(d<l.length){const m=l[d],A=m[1].firstChild;if(null!==A)return $h(m,A)}return l[7]}function p_(a,l,d){const m=Yd(a,l);m&&function(a,l,d,m){rt(a)?a.removeChild(l,d,m):l.removeChild(d)}(a,m,l,d)}function h_(a,l,d,m,A,L,te){for(;null!=d;){const le=m[d.index],Ne=d.type;if(te&&0===l&&(le&&Jc(Me(le),m),d.flags|=4),64!=(64&d.flags))if(8&Ne)h_(a,l,d.child,m,A,L,!1),Uc(l,a,A,le,L);else if(32&Ne){const qe=bf(d,m);let Mt;for(;Mt=qe();)Uc(l,a,A,Mt,L);Uc(l,a,A,le,L)}else 16&Ne?Zp(a,l,m,d,A,L):Uc(l,a,A,le,L);d=te?d.projectionNext:d.next}}function Hh(a,l,d,m,A,L){h_(d,m,a.firstChild,l,A,L,!1)}function Zp(a,l,d,m,A,L){const te=d[16],Ne=te[6].projection[m.projection];if(Array.isArray(Ne))for(let qe=0;qe<Ne.length;qe++)Uc(l,a,A,Ne[qe],L);else h_(a,l,Ne,te[3],A,L,!0)}function Ug(a,l,d){rt(a)?a.setAttribute(l,"style",d):l.style.cssText=d}function Uh(a,l,d){rt(a)?""===d?a.removeAttribute(l,"class"):a.setAttribute(l,"class",d):l.className=d}function Ag(a,l,d){let m=a.length;for(;;){const A=a.indexOf(l,d);if(-1===A)return A;if(0===A||a.charCodeAt(A-1)<=32){const L=l.length;if(A+L===m||a.charCodeAt(A+L)<=32)return A}d=A+1}}const Bh="ng-template";function Om(a,l,d){let m=0;for(;m<a.length;){let A=a[m++];if(d&&"class"===A){if(A=a[m],-1!==Ag(A.toLowerCase(),l,0))return!0}else if(1===A){for(;m<a.length&&"string"==typeof(A=a[m++]);)if(A.toLowerCase()===l)return!0;return!1}}return!1}function m_(a){return 4===a.type&&a.value!==Bh}function b(a,l,d){return l===(4!==a.type||d?a.value:Bh)}function x(a,l,d){let m=4;const A=a.attrs||[],L=function(a){for(let l=0;l<a.length;l++)if(df(a[l]))return l;return a.length}(A);let te=!1;for(let le=0;le<l.length;le++){const Ne=l[le];if("number"!=typeof Ne){if(!te)if(4&m){if(m=2|1&m,""!==Ne&&!b(a,Ne,d)||""===Ne&&1===l.length){if(G(m))return!1;te=!0}}else{const qe=8&m?Ne:l[++le];if(8&m&&null!==a.attrs){if(!Om(a.attrs,qe,d)){if(G(m))return!1;te=!0}continue}const an=Se(8&m?"class":Ne,A,m_(a),d);if(-1===an){if(G(m))return!1;te=!0;continue}if(""!==qe){let _n;_n=an>L?"":A[an+1].toLowerCase();const or=8&m?_n:null;if(or&&-1!==Ag(or,qe,0)||2&m&&qe!==_n){if(G(m))return!1;te=!0}}}}else{if(!te&&!G(m)&&!G(Ne))return!1;if(te&&G(Ne))continue;te=!1,m=Ne|1&m}}return G(m)||te}function G(a){return 0==(1&a)}function Se(a,l,d,m){if(null===l)return-1;let A=0;if(m||!d){let L=!1;for(;A<l.length;){const te=l[A];if(te===a)return A;if(3===te||6===te)L=!0;else{if(1===te||2===te){let le=l[++A];for(;"string"==typeof le;)le=l[++A];continue}if(4===te)break;if(0===te){A+=4;continue}}A+=L?1:2}return-1}return function(a,l){let d=a.indexOf(4);if(d>-1)for(d++;d<a.length;){const m=a[d];if("number"==typeof m)return-1;if(m===l)return d;d++}return-1}(l,a)}function We(a,l,d=!1){for(let m=0;m<l.length;m++)if(x(a,l[m],d))return!0;return!1}function Er(a,l){e:for(let d=0;d<l.length;d++){const m=l[d];if(a.length===m.length){for(let A=0;A<a.length;A++)if(a[A]!==m[A])continue e;return!0}}return!1}function Ei(a,l){return a?":not("+l.trim()+")":l}function fs(a){let l=a[0],d=1,m=2,A="",L=!1;for(;d<a.length;){let te=a[d];if("string"==typeof te)if(2&m){const le=a[++d];A+="["+te+(le.length>0?'="'+le+'"':"")+"]"}else 8&m?A+="."+te:4&m&&(A+=" "+te);else""!==A&&!G(te)&&(l+=Ei(L,A),A=""),m=te,L=L||!G(m);d++}return""!==A&&(l+=Ei(L,A)),l}const _o={};function La(a){Sa(ua(),Fi(),Ln()+a,Hu())}function Sa(a,l,d,m){if(!m)if(3==(3&l[2])){const L=a.preOrderCheckHooks;null!==L&&zl(l,L,d)}else{const L=a.preOrderHooks;null!==L&&ki(l,L,0,d)}Mr(d)}function ti(a,l){return a<<17|l<<2}function Sr(a){return a>>17&32767}function ao(a){return 2|a}function ba(a){return(131068&a)>>2}function Os(a,l){return-131069&a|l<<2}function Dl(a){return 1|a}function gv(a,l){const d=a.contentQueries;if(null!==d)for(let m=0;m<d.length;m+=2){const A=d[m],L=d[m+1];if(-1!==L){const te=a.data[L];ot(A),te.contentQueries(2,l[L],L)}}}function Mp(a,l,d,m,A,L,te,le,Ne,qe){const Mt=l.blueprint.slice();return Mt[0]=A,Mt[2]=140|m,ec(Mt),Mt[3]=Mt[15]=a,Mt[8]=d,Mt[10]=te||a&&a[10],Mt[11]=le||a&&a[11],Mt[12]=Ne||a&&a[12]||null,Mt[9]=qe||a&&a[9]||null,Mt[6]=L,Mt[16]=2==l.type?a[16]:Mt,Mt}function rp(a,l,d,m,A){let L=a.data[l];if(null===L)L=jh(a,l,d,m,A),Ts.lFrame.inI18n&&(L.flags|=64);else if(64&L.type){L.type=d,L.value=m,L.attrs=A;const te=bl();L.injectorIndex=null===te?-1:te.injectorIndex}return Au(L,!0),L}function jh(a,l,d,m,A){const L=ku(),te=bu(),Ne=a.data[l]=function(a,l,d,m,A,L){return{type:d,index:m,insertBeforeIndex:null,injectorIndex:l?l.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,propertyBindings:null,flags:0,providerIndexes:0,value:A,attrs:L,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tViews:null,next:null,projectionNext:null,child:null,parent:l,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,te?L:L&&L.parent,d,l,m,A);return null===a.firstChild&&(a.firstChild=Ne),null!==L&&(te?null==L.child&&null!==Ne.parent&&(L.child=Ne):null===L.next&&(L.next=Ne)),Ne}function Gp(a,l,d,m){if(0===d)return-1;const A=l.length;for(let L=0;L<d;L++)l.push(m),a.blueprint.push(m),a.data.push(null);return A}function X_(a,l,d){un(l);try{const m=a.viewQuery;null!==m&&zf(1,m,d);const A=a.template;null!==A&&Lm(a,l,A,1,d),a.firstCreatePass&&(a.firstCreatePass=!1),a.staticContentQueries&&gv(a,l),a.staticViewQueries&&zf(2,a.viewQuery,d);const L=a.components;null!==L&&function(a,l){for(let d=0;d<l.length;d++)km(a,l[d])}(l,L)}catch(m){throw a.firstCreatePass&&(a.incompleteFirstPass=!0,a.firstCreatePass=!1),m}finally{l[2]&=-5,oi()}}function v_(a,l,d,m){const A=l[2];if(256==(256&A))return;un(l);const L=Hu();try{ec(l),function(a){Ts.lFrame.bindingIndex=a}(a.bindingStartIndex),null!==d&&Lm(a,l,d,2,m);const te=3==(3&A);if(!L)if(te){const qe=a.preOrderCheckHooks;null!==qe&&zl(l,qe,null)}else{const qe=a.preOrderHooks;null!==qe&&ki(l,qe,0,null),No(l,0)}if(function(a){for(let l=tp(a);null!==l;l=V_(l)){if(!l[2])continue;const d=l[9];for(let m=0;m<d.length;m++){const A=d[m],L=A[3];0==(1024&A[2])&&Ol(L,1),A[2]|=1024}}}(l),function(a){for(let l=tp(a);null!==l;l=V_(l))for(let d=10;d<l.length;d++){const m=l[d],A=m[1];uu(m)&&v_(A,m,A.template,m[8])}}(l),null!==a.contentQueries&&gv(a,l),!L)if(te){const qe=a.contentCheckHooks;null!==qe&&zl(l,qe)}else{const qe=a.contentHooks;null!==qe&&ki(l,qe,1),No(l,1)}!function(a,l){const d=a.hostBindingOpCodes;if(null!==d)try{for(let m=0;m<d.length;m++){const A=d[m];if(A<0)Mr(~A);else{const L=A,te=d[++m],le=d[++m];hl(te,L),le(2,l[L])}}}finally{Mr(-1)}}(a,l);const le=a.components;null!==le&&function(a,l){for(let d=0;d<l.length;d++)bv(a,l[d])}(l,le);const Ne=a.viewQuery;if(null!==Ne&&zf(2,Ne,m),!L)if(te){const qe=a.viewCheckHooks;null!==qe&&zl(l,qe)}else{const qe=a.viewHooks;null!==qe&&ki(l,qe,2),No(l,2)}!0===a.firstUpdatePass&&(a.firstUpdatePass=!1),L||(l[2]&=-73),1024&l[2]&&(l[2]&=-1025,Ol(l[3],-1))}finally{oi()}}function Im(a,l,d,m){const A=l[10],L=!Hu(),te=Ma(l);try{L&&!te&&A.begin&&A.begin(),te&&X_(a,l,m),v_(a,l,d,m)}finally{L&&!te&&A.end&&A.end()}}function Lm(a,l,d,m,A){const L=Ln(),te=2&m;try{Mr(-1),te&&l.length>20&&Sa(a,l,20,Hu()),d(m,A)}finally{Mr(L)}}function m1(a,l,d){if(Yl(l)){const A=l.directiveEnd;for(let L=l.directiveStart;L<A;L++){const te=a.data[L];te.contentQueries&&te.contentQueries(1,d[L],L)}}}function Fm(a,l,d){!Ic()||(function(a,l,d,m){const A=d.directiveStart,L=d.directiveEnd;a.firstCreatePass||ss(d,l),Jc(m,l);const te=d.initialInputs;for(let le=A;le<L;le++){const Ne=a.data[le],qe=Da(Ne);qe&&Ab(l,d,Ne);const Mt=Tc(l,a,le,d);Jc(Mt,l),null!==te&&Ob(0,le-A,Mt,Ne,0,te),qe&&(Ms(d.index,l)[8]=Mt)}}(a,l,d,Qi(d,l)),128==(128&d.flags)&&function(a,l,d){const m=d.directiveStart,A=d.directiveEnd,te=d.index,le=Ts.lFrame.currentDirectiveIndex;try{Mr(te);for(let Ne=m;Ne<A;Ne++){const qe=a.data[Ne],Mt=l[Ne];Hs(Ne),(null!==qe.hostBindings||0!==qe.hostVars||null!==qe.hostAttrs)&&Xc(qe,Mt)}}finally{Mr(-1),Hs(le)}}(a,l,d))}function Zg(a,l,d=Qi){const m=l.localNames;if(null!==m){let A=l.index+1;for(let L=0;L<m.length;L+=2){const te=m[L+1],le=-1===te?d(l,a):a[te];a[A++]=le}}}function mv(a){const l=a.tView;return null===l||l.incompleteFirstPass?a.tView=jg(1,null,a.template,a.decls,a.vars,a.directiveDefs,a.pipeDefs,a.viewQuery,a.schemas,a.consts):l}function jg(a,l,d,m,A,L,te,le,Ne,qe){const Mt=20+m,an=Mt+A,_n=function(a,l){const d=[];for(let m=0;m<l;m++)d.push(m<a?null:_o);return d}(Mt,an),or="function"==typeof qe?qe():qe;return _n[1]={type:a,blueprint:_n,template:d,queries:null,viewQuery:le,declTNode:l,data:_n.slice().fill(null,Mt),bindingStartIndex:Mt,expandoStartIndex:an,hostBindingOpCodes:null,firstCreatePass:!0,firstUpdatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof L?L():L,pipeRegistry:"function"==typeof te?te():te,firstChild:null,schemas:Ne,consts:or,incompleteFirstPass:!1}}function at(a,l,d,m){const A=ju(l);null===d?A.push(m):(A.push(d),a.firstCreatePass&&$m(a).push(m,A.length-1))}function Gn(a,l,d){for(let m in a)if(a.hasOwnProperty(m)){const A=a[m];(d=null===d?{}:d).hasOwnProperty(m)?d[m].push(l,A):d[m]=[l,A]}return d}function Io(a,l,d,m,A,L,te,le){const Ne=Qi(l,d);let Mt,qe=l.inputs;!le&&null!=qe&&(Mt=qe[m])?(Rb(a,d,Mt,m,A),yl(l)&&function(a,l){const d=Ms(l,a);16&d[2]||(d[2]|=64)}(d,l.index)):3&l.type&&(m=function(a){return"class"===a?"className":"for"===a?"htmlFor":"formaction"===a?"formAction":"innerHtml"===a?"innerHTML":"readonly"===a?"readOnly":"tabindex"===a?"tabIndex":a}(m),A=null!=te?te(A,l.value||"",m):A,rt(L)?L.setProperty(Ne,m,A):ul(m)||(Ne.setProperty?Ne.setProperty(m,A):Ne[m]=A))}function Bc(a,l,d,m){let A=!1;if(Ic()){const L=function(a,l,d){const m=a.directiveRegistry;let A=null;if(m)for(let L=0;L<m.length;L++){const te=m[L];We(d,te.selectors,!1)&&(A||(A=[]),va(ss(d,l),a,te.type),Da(te)?(Zu(a,d),A.unshift(te)):A.push(te))}return A}(a,l,d),te=null===m?null:{"":-1};if(null!==L){A=!0,F0(d,a.data.length,L.length);for(let Mt=0;Mt<L.length;Mt++){const an=L[Mt];an.providersResolver&&an.providersResolver(an)}let le=!1,Ne=!1,qe=Gp(a,l,L.length,null);for(let Mt=0;Mt<L.length;Mt++){const an=L[Mt];d.mergedAttrs=zd(d.mergedAttrs,an.hostAttrs),k0(a,d,l,qe,an),L0(qe,an,te),null!==an.contentQueries&&(d.flags|=8),(null!==an.hostBindings||null!==an.hostAttrs||0!==an.hostVars)&&(d.flags|=128);const _n=an.type.prototype;!le&&(_n.ngOnChanges||_n.ngOnInit||_n.ngDoCheck)&&((a.preOrderHooks||(a.preOrderHooks=[])).push(d.index),le=!0),!Ne&&(_n.ngOnChanges||_n.ngDoCheck)&&((a.preOrderCheckHooks||(a.preOrderCheckHooks=[])).push(d.index),Ne=!0),qe++}!function(a,l){const m=l.directiveEnd,A=a.data,L=l.attrs,te=[];let le=null,Ne=null;for(let qe=l.directiveStart;qe<m;qe++){const Mt=A[qe],an=Mt.inputs,_n=null===L||m_(l)?null:$0(an,L);te.push(_n),le=Gn(an,qe,le),Ne=Gn(Mt.outputs,qe,Ne)}null!==le&&(le.hasOwnProperty("class")&&(l.flags|=16),le.hasOwnProperty("style")&&(l.flags|=32)),l.initialInputs=te,l.inputs=le,l.outputs=Ne}(a,d)}te&&function(a,l,d){if(l){const m=a.localNames=[];for(let A=0;A<l.length;A+=2){const L=d[l[A+1]];if(null==L)throw new ee("301",`Export of name '${l[A+1]}' not found!`);m.push(l[A],L)}}}(d,m,te)}return d.mergedAttrs=zd(d.mergedAttrs,d.attrs),A}function Ap(a,l,d,m,A,L){const te=L.hostBindings;if(te){let le=a.hostBindingOpCodes;null===le&&(le=a.hostBindingOpCodes=[]);const Ne=~l.index;(function(a){let l=a.length;for(;l>0;){const d=a[--l];if("number"==typeof d&&d<0)return d}return 0})(le)!=Ne&&le.push(Ne),le.push(m,A,te)}}function Xc(a,l){null!==a.hostBindings&&a.hostBindings(1,l)}function Zu(a,l){l.flags|=2,(a.components||(a.components=[])).push(l.index)}function L0(a,l,d){if(d){if(l.exportAs)for(let m=0;m<l.exportAs.length;m++)d[l.exportAs[m]]=a;Da(l)&&(d[""]=a)}}function F0(a,l,d){a.flags|=1,a.directiveStart=l,a.directiveEnd=l+d,a.providerIndexes=l}function k0(a,l,d,m,A){a.data[m]=A;const L=A.factory||(A.factory=Ro(A.type)),te=new Xs(L,Da(A),null);a.blueprint[m]=te,d[m]=te,Ap(a,l,0,m,Gp(a,d,A.hostVars,_o),A)}function Ab(a,l,d){const m=Qi(l,a),A=mv(d),L=a[10],te=y1(a,Mp(a,A,null,d.onPush?64:16,m,l,L,L.createRenderer(m,d),null,null));a[l.index]=te}function v1(a,l,d,m,A,L,te){if(null==L)rt(a)?a.removeAttribute(l,A,d):l.removeAttribute(A);else{const le=null==te?$(L):te(L,m||"",A);rt(a)?a.setAttribute(l,A,le,d):d?l.setAttributeNS(d,A,le):l.setAttribute(A,le)}}function Ob(a,l,d,m,A,L){const te=L[l];if(null!==te){const le=m.setInput;for(let Ne=0;Ne<te.length;){const qe=te[Ne++],Mt=te[Ne++],an=te[Ne++];null!==le?m.setInput(d,an,qe,Mt):d[Mt]=an}}}function $0(a,l){let d=null,m=0;for(;m<l.length;){const A=l[m];if(0!==A)if(5!==A){if("number"==typeof A)break;a.hasOwnProperty(A)&&(null===d&&(d=[]),d.push(A,a[A],l[m+1])),m+=2}else m+=2;else m+=4}return d}function yv(a,l,d,m){return new Array(a,!0,!1,l,null,0,m,d,null,null)}function bv(a,l){const d=Ms(l,a);if(uu(d)){const m=d[1];80&d[2]?v_(m,d,m.template,d[8]):d[5]>0&&Ef(d)}}function Ef(a){for(let m=tp(a);null!==m;m=V_(m))for(let A=10;A<m.length;A++){const L=m[A];if(1024&L[2]){const te=L[1];v_(te,L,te.template,L[8])}else L[5]>0&&Ef(L)}const d=a[1].components;if(null!==d)for(let m=0;m<d.length;m++){const A=Ms(d[m],a);uu(A)&&A[5]>0&&Ef(A)}}function km(a,l){const d=Ms(l,a),m=d[1];(function(a,l){for(let d=l.length;d<a.blueprint.length;d++)l.push(a.blueprint[d])})(m,d),X_(m,d,d[8])}function y1(a,l){return a[13]?a[14][4]=l:a[13]=l,a[14]=l,l}function tf(a){for(;a;){a[2]|=64;const l=sd(a);if(Ao(a)&&!l)return a;a=l}return null}function b1(a,l,d){const m=l[10];m.begin&&m.begin();try{v_(a,l,a.template,d)}catch(A){throw Ev(l,A),A}finally{m.end&&m.end()}}function y_(a){!function(a){for(let l=0;l<a.components.length;l++){const d=a.components[l],m=t_(d),A=m[1];Im(A,m,A.template,d)}}(a[8])}function zf(a,l,d){ot(0),l(a,d)}const bS=(()=>Promise.resolve(null))();function ju(a){return a[7]||(a[7]=[])}function $m(a){return a.cleanup||(a.cleanup=[])}function Ev(a,l){const d=a[9],m=d?d.get(Zf,null):null;m&&m.handleError(l)}function Rb(a,l,d,m,A){for(let L=0;L<d.length;){const te=d[L++],le=d[L++],Ne=l[te],qe=a.data[te];null!==qe.setInput?qe.setInput(Ne,A,m,le):Ne[le]=A}}function eg(a,l,d){const m=dr(l,a);dh(a[11],m,d)}function E1(a,l,d){let m=d?a.styles:null,A=d?a.classes:null,L=0;if(null!==l)for(let te=0;te<l.length;te++){const le=l[te];"number"==typeof le?L=le:1==L?A=M(A,le):2==L&&(m=M(m,le+": "+l[++te]+";"))}d?a.styles=m:a.stylesWithoutHost=m,d?a.classes=A:a.classesWithoutHost=A}const Gg=new Xl("INJECTOR",-1);class Z0{get(l,d=N){if(d===N){const m=new Error(`NullInjectorError: No provider for ${T(l)}!`);throw m.name="NullInjectorError",m}return d}}const Hm=new Xl("Set Injector scope."),Um={},Nb={};let T1;function j0(){return void 0===T1&&(T1=new Z0),T1}function ad(a,l=null,d=null,m){return new wg(a,d,l||j0(),m)}class wg{constructor(l,d,m,A=null){this.parent=m,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const L=[];d&&ql(d,le=>this.processProvider(le,l,d)),ql([l],le=>this.processInjectorType(le,[],L)),this.records.set(Gg,Md(void 0,this));const te=this.records.get(Hm);this.scope=null!=te?te.value:null,this.source=A||("object"==typeof l?null:T(l))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(l=>l.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(l,d=N,m=Ur.Default){this.assertNotDestroyed();const A=Jt(this),L=Hi(void 0);try{if(!(m&Ur.SkipSelf)){let le=this.records.get(l);if(void 0===le){const Ne=("function"==typeof(a=l)||"object"==typeof a&&a instanceof Xl)&&Hr(l);le=Ne&&this.injectableDefInScope(Ne)?Md(tg(l),Um):null,this.records.set(l,le)}if(null!=le)return this.hydrate(l,le)}return(m&Ur.Self?j0():this.parent).get(l,d=m&Ur.Optional&&d===N?null:d)}catch(te){if("NullInjectorError"===te.name){if((te[K]=te[K]||[]).unshift(T(l)),A)throw te;return Vs(te,l,"R3InjectorError",this.source)}throw te}finally{Hi(L),Jt(A)}var a}_resolveInjectorDefTypes(){this.injectorDefTypes.forEach(l=>this.get(l))}toString(){const l=[];return this.records.forEach((m,A)=>l.push(T(A))),`R3Injector[${l.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(l,d,m){if(!(l=Z(l)))return!1;let A=Qr(l);const L=null==A&&l.ngModule||void 0,te=void 0===L?l:L,le=-1!==m.indexOf(te);if(void 0!==L&&(A=Qr(L)),null==A)return!1;if(null!=A.imports&&!le){let Mt;m.push(te);try{ql(A.imports,an=>{this.processInjectorType(an,d,m)&&(void 0===Mt&&(Mt=[]),Mt.push(an))})}finally{}if(void 0!==Mt)for(let an=0;an<Mt.length;an++){const{ngModule:_n,providers:or}=Mt[an];ql(or,Rr=>this.processProvider(Rr,_n,or||Xt))}}this.injectorDefTypes.add(te);const Ne=Ro(te)||(()=>new te);this.records.set(te,Md(Ne,Um));const qe=A.providers;if(null!=qe&&!le){const Mt=l;ql(qe,an=>this.processProvider(an,Mt,qe))}return void 0!==L&&void 0!==l.providers}processProvider(l,d,m){let A=Vh(l=Z(l))?l:Z(l&&l.provide);const L=C1(a=l)?Md(void 0,a.useValue):Md(nf(a),Um);var a;if(Vh(l)||!0!==l.multi)this.records.get(A);else{let te=this.records.get(A);te||(te=Md(void 0,Um,!0),te.factory=()=>Ni(te.multi),this.records.set(A,te)),A=l,te.multi.push(l)}this.records.set(A,L)}hydrate(l,d){return d.value===Um&&(d.value=Nb,d.value=d.factory()),"object"==typeof d.value&&d.value&&null!==(a=d.value)&&"object"==typeof a&&"function"==typeof a.ngOnDestroy&&this.onDestroy.add(d.value),d.value;var a}injectableDefInScope(l){if(!l.providedIn)return!1;const d=Z(l.providedIn);return"string"==typeof d?"any"===d||d===this.scope:this.injectorDefTypes.has(d)}}function tg(a){const l=Hr(a),d=null!==l?l.factory:Ro(a);if(null!==d)return d;if(a instanceof Xl)throw new Error(`Token ${T(a)} is missing a \u0275prov definition.`);if(a instanceof Function)return function(a){const l=a.length;if(l>0){const m=Ll(l,"?");throw new Error(`Can't resolve all parameters for ${T(a)}: (${m.join(", ")}).`)}const d=function(a){const l=a&&(a[Kr]||a[Hn]);if(l){const d=function(a){if(a.hasOwnProperty("name"))return a.name;const l=(""+a).match(/^function\s*([^\s(]+)/);return null===l?"":l[1]}(a);return console.warn(`DEPRECATED: DI is instantiating a token "${d}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${d}" class.`),l}return null}(a);return null!==d?()=>d.factory(a):()=>new a}(a);throw new Error("unreachable")}function nf(a,l,d){let m;if(Vh(a)){const A=Z(a);return Ro(A)||tg(A)}if(C1(a))m=()=>Z(a.useValue);else if(function(a){return!(!a||!a.useFactory)}(a))m=()=>a.useFactory(...Ni(a.deps||[]));else if(function(a){return!(!a||!a.useExisting)}(a))m=()=>Rn(Z(a.useExisting));else{const A=Z(a&&(a.useClass||a.provide));if(!function(a){return!!a.deps}(a))return Ro(A)||tg(A);m=()=>new A(...Ni(a.deps))}return m}function Md(a,l,d=!1){return{factory:a,value:l,multi:d?[]:void 0}}function C1(a){return null!==a&&"object"==typeof a&&gt in a}function Vh(a){return"function"==typeof a}const W0=function(a,l,d){return function(a,l=null,d=null,m){const A=ad(a,l,d,m);return A._resolveInjectorDefTypes(),A}({name:d},l,a,d)};let Gu=(()=>{class a{static create(d,m){return Array.isArray(d)?W0(d,m,""):W0(d.providers,d.parent,d.name||"")}}return a.THROW_IF_NOT_FOUND=N,a.NULL=new Z0,a.\u0275prov=Dt({token:a,providedIn:"any",factory:()=>Rn(Gg)}),a.__NG_ELEMENT_ID__=-1,a})();function Wb(a,l){Lc(t_(a)[1],As())}function D1(a){let l=function(a){return Object.getPrototypeOf(a.prototype).constructor}(a.type),d=!0;const m=[a];for(;l;){let A;if(Da(a))A=l.\u0275cmp||l.\u0275dir;else{if(l.\u0275cmp)throw new Error("Directives cannot inherit Components");A=l.\u0275dir}if(A){if(d){m.push(A);const te=a;te.inputs=Nf(a.inputs),te.declaredInputs=Nf(a.declaredInputs),te.outputs=Nf(a.outputs);const le=A.hostBindings;le&&Qb(a,le);const Ne=A.viewQuery,qe=A.contentQueries;if(Ne&&R1(a,Ne),qe&&Jb(a,qe),y(a.inputs,A.inputs),y(a.declaredInputs,A.declaredInputs),y(a.outputs,A.outputs),Da(A)&&A.data.animation){const Mt=a.data;Mt.animation=(Mt.animation||[]).concat(A.data.animation)}}const L=A.features;if(L)for(let te=0;te<L.length;te++){const le=L[te];le&&le.ngInherit&&le(a),le===D1&&(d=!1)}}l=Object.getPrototypeOf(l)}!function(a){let l=0,d=null;for(let m=a.length-1;m>=0;m--){const A=a[m];A.hostVars=l+=A.hostVars,A.hostAttrs=zd(A.hostAttrs,d=zd(d,A.hostAttrs))}}(m)}function Nf(a){return a===mr?{}:a===Xt?[]:a}function R1(a,l){const d=a.viewQuery;a.viewQuery=d?(m,A)=>{l(m,A),d(m,A)}:l}function Jb(a,l){const d=a.contentQueries;a.contentQueries=d?(m,A,L)=>{l(m,A,L),d(m,A,L)}:l}function Qb(a,l){const d=a.hostBindings;a.hostBindings=d?(m,A)=>{l(m,A),d(m,A)}:l}let Av=null;function ng(){if(!Av){const a=Nr.Symbol;if(a&&a.iterator)Av=a.iterator;else{const l=Object.getOwnPropertyNames(Map.prototype);for(let d=0;d<l.length;++d){const m=l[d];"entries"!==m&&"size"!==m&&Map.prototype[m]===Map.prototype.entries&&(Av=m)}}}return Av}class _h{constructor(l){this.wrapped=l}static wrap(l){return new _h(l)}static unwrap(l){return _h.isWrapped(l)?l.wrapped:l}static isWrapped(l){return l instanceof _h}}function Zm(a){return!!P1(a)&&(Array.isArray(a)||!(a instanceof Map)&&ng()in a)}function P1(a){return null!==a&&("function"==typeof a||"object"==typeof a)}function zh(a,l,d){return a[l]=d}function jm(a,l){return a[l]}function rf(a,l,d){return!Object.is(a[l],d)&&(a[l]=d,!0)}function E_(a,l,d,m){const A=rf(a,l,d);return rf(a,l+1,m)||A}function Ov(a,l,d,m,A){const L=E_(a,l,d,m);return rf(a,l+2,A)||L}function Vp(a,l,d,m,A,L){const te=E_(a,l,d,m);return E_(a,l+2,A,L)||te}function I1(a,l,d,m){const A=Fi();return rf(A,_u(),l)&&(ua(),function(a,l,d,m,A,L){const te=Qi(a,l);v1(l[11],te,L,a.value,d,m,A)}(gr(),A,a,l,d,m)),I1}function Wg(a,l,d,m){return rf(a,_u(),d)?l+$(d)+m:_o}function Jg(a,l,d,m,A,L){const le=E_(a,Ar(),d,A);return fa(2),le?l+$(d)+m+$(A)+L:_o}function H(a,l,d,m,A,L,te,le){const Ne=Fi(),qe=ua(),Mt=a+20,an=qe.firstCreatePass?function(a,l,d,m,A,L,te,le,Ne){const qe=l.consts,Mt=rp(l,a,4,te||null,Pl(qe,le));Bc(l,d,Mt,Pl(qe,Ne)),Lc(l,Mt);const an=Mt.tViews=jg(2,Mt,m,A,L,l.directiveRegistry,l.pipeRegistry,null,l.schemas,qe);return null!==l.queries&&(l.queries.template(l,Mt),an.queries=l.queries.embeddedTView(Mt)),Mt}(Mt,qe,Ne,l,d,m,A,L,te):qe.data[Mt];Au(an,!1);const _n=Ne[11].createComment("");kh(qe,Ne,_n,an),Jc(_n,Ne),y1(Ne,Ne[Mt]=yv(_n,Ne,_n,an)),fo(an)&&Fm(qe,Ne,an),null!=te&&Zg(Ne,an,le)}function Ke(a){return vs(Ts.lFrame.contextLView,20+a)}function k1(a,l=Ur.Default){const d=Fi();return null===d?Rn(a,l):Ha(As(),d,Z(a),l)}function iE(a,l,d){const m=Fi();return rf(m,_u(),l)&&Io(ua(),gr(),m,a,l,m[11],d,!1),iE}function oE(a,l,d,m,A){const te=A?"class":"style";Rb(a,d,l.inputs[te],te,m)}function sE(a,l,d,m){const A=Fi(),L=ua(),te=20+a,le=A[11],Ne=A[te]=Fh(le,l,Ts.lFrame.currentNamespace),qe=L.firstCreatePass?function(a,l,d,m,A,L,te){const le=l.consts,qe=rp(l,a,2,A,Pl(le,L));return Bc(l,d,qe,Pl(le,te)),null!==qe.attrs&&E1(qe,qe.attrs,!1),null!==qe.mergedAttrs&&E1(qe,qe.mergedAttrs,!0),null!==l.queries&&l.queries.elementStart(l,qe),qe}(te,L,A,0,l,d,m):L.data[te];Au(qe,!0);const Mt=qe.mergedAttrs;null!==Mt&&nc(le,Ne,Mt);const an=qe.classes;null!==an&&Uh(le,Ne,an);const _n=qe.styles;null!==_n&&Ug(le,Ne,_n),64!=(64&qe.flags)&&kh(L,A,Ne,qe),0===Ts.lFrame.elementDepthCount&&Jc(Ne,A),Ts.lFrame.elementDepthCount++,fo(qe)&&(Fm(L,A,qe),m1(L,qe,A)),null!==m&&Zg(A,qe)}function aE(){let a=As();bu()?cu():(a=a.parent,Au(a,!1));const l=a;Ts.lFrame.elementDepthCount--;const d=ua();d.firstCreatePass&&(Lc(d,a),Yl(a)&&d.queries.elementEnd(a)),null!=l.classesWithoutHost&&function(a){return 0!=(16&a.flags)}(l)&&oE(d,l,Fi(),l.classesWithoutHost,!0),null!=l.stylesWithoutHost&&function(a){return 0!=(32&a.flags)}(l)&&oE(d,l,Fi(),l.stylesWithoutHost,!1)}function kS(a,l,d,m){sE(a,l,d,m),aE()}function lE(a,l,d){const m=Fi(),A=ua(),L=a+20,te=A.firstCreatePass?function(a,l,d,m,A){const L=l.consts,te=Pl(L,m),le=rp(l,a,8,"ng-container",te);return null!==te&&E1(le,te,!0),Bc(l,d,le,Pl(L,A)),null!==l.queries&&l.queries.elementStart(l,le),le}(L,A,m,l,d):A.data[L];Au(te,!0);const le=m[L]=m[11].createComment("");kh(A,m,le,te),Jc(le,m),fo(te)&&(Fm(A,m,te),m1(A,te,m)),null!=d&&Zg(m,te)}function uE(){let a=As();const l=ua();bu()?cu():(a=a.parent,Au(a,!1)),l.firstCreatePass&&(Lc(l,a),Yl(a)&&l.queries.elementEnd(a))}function HS(a,l,d){lE(a,l,d),uE()}function US(){return Fi()}function $1(a){return!!a&&"function"==typeof a.then}function Rv(a){return!!a&&"function"==typeof a.subscribe}const cE=Rv;function dE(a,l,d,m){const A=Fi(),L=ua(),te=As();return function(a,l,d,m,A,L,te,le){const Ne=fo(m),Mt=a.firstCreatePass&&$m(a),an=l[8],_n=ju(l);let or=!0;if(3&m.type||le){const ni=Qi(m,l),Oo=le?le(ni):ni,Xi=_n.length,oa=le?Va=>le(Me(Va[m.index])):m.index;if(rt(d)){let Va=null;if(!le&&Ne&&(Va=function(a,l,d,m){const A=a.cleanup;if(null!=A)for(let L=0;L<A.length-1;L+=2){const te=A[L];if(te===d&&A[L+1]===m){const le=l[7],Ne=A[L+2];return le.length>Ne?le[Ne]:null}"string"==typeof te&&(L+=2)}return null}(a,l,A,m.index)),null!==Va)(Va.__ngLastListenerFn__||Va).__ngNextListenerFn__=L,Va.__ngLastListenerFn__=L,or=!1;else{L=fE(m,l,an,L,!1);const pu=d.listen(Oo,A,L);_n.push(L,pu),Mt&&Mt.push(A,oa,Xi,Xi+1)}}else L=fE(m,l,an,L,!0),Oo.addEventListener(A,L,te),_n.push(L),Mt&&Mt.push(A,oa,Xi,te)}else L=fE(m,l,an,L,!1);const Rr=m.outputs;let bi;if(or&&null!==Rr&&(bi=Rr[A])){const ni=bi.length;if(ni)for(let Oo=0;Oo<ni;Oo+=2){const Mf=l[bi[Oo]][bi[Oo+1]].subscribe(L),Qh=_n.length;_n.push(L,Mf),Mt&&Mt.push(A,m.index,Qh,-(Qh+1))}}}(L,A,A[11],te,a,l,!!d,m),dE}function ZS(a,l,d,m){try{return!1!==d(m)}catch(A){return Ev(a,A),!1}}function fE(a,l,d,m,A){return function L(te){if(te===Function)return m;const le=2&a.flags?Ms(a.index,l):l;0==(32&l[2])&&tf(le);let Ne=ZS(l,0,m,te),qe=L.__ngNextListenerFn__;for(;qe;)Ne=ZS(l,0,qe,te)&&Ne,qe=qe.__ngNextListenerFn__;return A&&!1===Ne&&(te.preventDefault(),te.returnValue=!1),Ne}}function jS(a=1){return function(a){return(Ts.lFrame.contextLView=function(a,l){for(;a>0;)l=l[15],a--;return l}(a,Ts.lFrame.contextLView))[8]}(a)}function eO(a,l){let d=null;const m=function(a){const l=a.attrs;if(null!=l){const d=l.indexOf(5);if(0==(1&d))return l[d+1]}return null}(a);for(let A=0;A<l.length;A++){const L=l[A];if("*"!==L){if(null===m?We(a,L,!0):Er(m,L))return A}else d=A}return d}function GS(a){const l=Fi()[16][6];if(!l.projection){const m=l.projection=Ll(a?a.length:1,null),A=m.slice();let L=l.child;for(;null!==L;){const te=a?eO(L,a):0;null!==te&&(A[te]?A[te].projectionNext=L:m[te]=L,A[te]=L),L=L.next}}}function VS(a,l=0,d){const m=Fi(),A=ua(),L=rp(A,20+a,16,null,d||null);null===L.projection&&(L.projection=l),cu(),64!=(64&L.flags)&&function(a,l,d){Zp(l[11],0,l,d,z_(a,d,l),Hg(d.parent||l[6],d,l))}(A,m,L)}function pE(a,l,d){return by(a,"",l,"",d),pE}function by(a,l,d,m,A){const L=Fi(),te=Wg(L,l,d,m);return te!==_o&&Io(ua(),gr(),L,a,te,L[11],A,!1),by}function hE(a,l,d,m,A,L,te){const le=Fi(),Ne=Jg(le,l,d,m,A,L);return Ne!==_o&&Io(ua(),gr(),le,a,Ne,le[11],te,!1),hE}function KS(a,l,d,m,A){const L=a[d+1],te=null===l;let le=m?Sr(L):ba(L),Ne=!1;for(;0!==le&&(!1===Ne||te);){const Mt=a[le+1];rO(a[le],l)&&(Ne=!0,a[le+1]=m?Dl(Mt):ao(Mt)),le=m?Sr(Mt):ba(Mt)}Ne&&(a[d+1]=m?ao(L):Dl(L))}function rO(a,l){return null===a||null==l||(Array.isArray(a)?a[1]:a)===l||!(!Array.isArray(a)||"string"!=typeof l)&&rc(a,l)>=0}const Tf={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function qS(a){return a.substring(Tf.key,Tf.keyEnd)}function eC(a,l){const d=Tf.textEnd;return d===l?-1:(l=Tf.keyEnd=function(a,l,d){for(;l<d&&a.charCodeAt(l)>32;)l++;return l}(a,Tf.key=l,d),Nv(a,l,d))}function Nv(a,l,d){for(;l<d&&a.charCodeAt(l)<=32;)l++;return l}function gE(a,l,d){return T_(a,l,d,!1),gE}function mE(a,l){return T_(a,l,null,!0),mE}function oC(a){S_(Wl,og,a,!0)}function og(a,l){for(let d=function(a){return function(a){Tf.key=0,Tf.keyEnd=0,Tf.value=0,Tf.valueEnd=0,Tf.textEnd=a.length}(a),eC(a,Nv(a,0,Tf.textEnd))}(l);d>=0;d=eC(l,d))Wl(a,qS(l),!0)}function T_(a,l,d,m){const A=Fi(),L=ua(),te=fa(2);L.firstUpdatePass&&aC(L,a,te,m),l!==_o&&rf(A,te,l)&&uC(L,L.data[Ln()],A,A[11],a,A[te+1]=function(a,l){return null==a||("string"==typeof l?a+=l:"object"==typeof a&&(a=T(kd(a)))),a}(l,d),m,te)}function S_(a,l,d,m){const A=ua(),L=fa(2);A.firstUpdatePass&&aC(A,null,L,m);const te=Fi();if(d!==_o&&rf(te,L,d)){const le=A.data[Ln()];if(yE(le,m)&&!sC(A,L)){let Ne=m?le.classesWithoutHost:le.stylesWithoutHost;null!==Ne&&(d=M(Ne,d||"")),oE(A,le,te,d,m)}else!function(a,l,d,m,A,L,te,le){A===_o&&(A=Xt);let Ne=0,qe=0,Mt=0<A.length?A[0]:null,an=0<L.length?L[0]:null;for(;null!==Mt||null!==an;){const _n=Ne<A.length?A[Ne+1]:void 0,or=qe<L.length?L[qe+1]:void 0;let bi,Rr=null;Mt===an?(Ne+=2,qe+=2,_n!==or&&(Rr=an,bi=or)):null===an||null!==Mt&&Mt<an?(Ne+=2,Rr=Mt):(qe+=2,Rr=an,bi=or),null!==Rr&&uC(a,l,d,m,Rr,bi,te,le),Mt=Ne<A.length?A[Ne]:null,an=qe<L.length?L[qe]:null}}(A,le,te,te[11],te[L+1],te[L+1]=function(a,l,d){if(null==d||""===d)return Xt;const m=[],A=kd(d);if(Array.isArray(A))for(let L=0;L<A.length;L++)a(m,A[L],!0);else if("object"==typeof A)for(const L in A)A.hasOwnProperty(L)&&a(m,L,A[L]);else"string"==typeof A&&l(m,A);return m}(a,l,d),m,L)}}function sC(a,l){return l>=a.expandoStartIndex}function aC(a,l,d,m){const A=a.data;if(null===A[d+1]){const L=A[Ln()],te=sC(a,d);yE(L,m)&&null===l&&!te&&(l=!1),l=function(a,l,d,m){const A=V(a);let L=m?l.residualClasses:l.residualStyles;if(null===A)0===(m?l.classBindings:l.styleBindings)&&(d=H1(d=vE(null,a,l,d,m),l.attrs,m),L=null);else{const te=l.directiveStylingLast;if(-1===te||a[te]!==A)if(d=vE(A,a,l,d,m),null===L){let Ne=function(a,l,d){const m=d?l.classBindings:l.styleBindings;if(0!==ba(m))return a[Sr(m)]}(a,l,m);void 0!==Ne&&Array.isArray(Ne)&&(Ne=vE(null,a,l,Ne[1],m),Ne=H1(Ne,l.attrs,m),function(a,l,d,m){a[Sr(d?l.classBindings:l.styleBindings)]=m}(a,l,m,Ne))}else L=function(a,l,d){let m;const A=l.directiveEnd;for(let L=1+l.directiveStylingLast;L<A;L++)m=H1(m,a[L].hostAttrs,d);return H1(m,l.attrs,d)}(a,l,m)}return void 0!==L&&(m?l.residualClasses=L:l.residualStyles=L),d}(A,L,l,m),function(a,l,d,m,A,L){let te=L?l.classBindings:l.styleBindings,le=Sr(te),Ne=ba(te);a[m]=d;let Mt,qe=!1;if(Array.isArray(d)){const an=d;Mt=an[1],(null===Mt||rc(an,Mt)>0)&&(qe=!0)}else Mt=d;if(A)if(0!==Ne){const _n=Sr(a[le+1]);a[m+1]=ti(_n,le),0!==_n&&(a[_n+1]=Os(a[_n+1],m)),a[le+1]=function(a,l){return 131071&a|l<<17}(a[le+1],m)}else a[m+1]=ti(le,0),0!==le&&(a[le+1]=Os(a[le+1],m)),le=m;else a[m+1]=ti(Ne,0),0===le?le=m:a[Ne+1]=Os(a[Ne+1],m),Ne=m;qe&&(a[m+1]=ao(a[m+1])),KS(a,Mt,m,!0),KS(a,Mt,m,!1),function(a,l,d,m,A){const L=A?a.residualClasses:a.residualStyles;null!=L&&"string"==typeof l&&rc(L,l)>=0&&(d[m+1]=Dl(d[m+1]))}(l,Mt,a,m,L),te=ti(le,Ne),L?l.classBindings=te:l.styleBindings=te}(A,L,l,d,te,m)}}function vE(a,l,d,m,A){let L=null;const te=d.directiveEnd;let le=d.directiveStylingLast;for(-1===le?le=d.directiveStart:le++;le<te&&(L=l[le],m=H1(m,L.hostAttrs,A),L!==a);)le++;return null!==a&&(d.directiveStylingLast=le),m}function H1(a,l,d){const m=d?1:2;let A=-1;if(null!==l)for(let L=0;L<l.length;L++){const te=l[L];"number"==typeof te?A=te:A===m&&(Array.isArray(a)||(a=void 0===a?[]:["",a]),Wl(a,te,!!d||l[++L]))}return void 0===a?null:a}function uC(a,l,d,m,A,L,te,le){if(!(3&l.type))return;const Ne=a.data,qe=Ne[le+1];Ey(function(a){return 1==(1&a)}(qe)?Pv(Ne,l,d,A,ba(qe),te):void 0)||(Ey(L)||function(a){return 2==(2&a)}(qe)&&(L=Pv(Ne,null,d,A,le,te)),function(a,l,d,m,A){const L=rt(a);if(l)A?L?a.addClass(d,m):d.classList.add(m):L?a.removeClass(d,m):d.classList.remove(m);else{let te=-1===m.indexOf("-")?void 0:Bd.DashCase;if(null==A)L?a.removeStyle(d,m,te):d.style.removeProperty(m);else{const le="string"==typeof A&&A.endsWith("!important");le&&(A=A.slice(0,-10),te|=Bd.Important),L?a.setStyle(d,m,A,te):d.style.setProperty(m,A,le?"important":"")}}}(m,te,dr(Ln(),d),A,L))}function Pv(a,l,d,m,A,L){const te=null===l;let le;for(;A>0;){const Ne=a[A],qe=Array.isArray(Ne),Mt=qe?Ne[1]:Ne,an=null===Mt;let _n=d[A+1];_n===_o&&(_n=an?Xt:void 0);let or=an?Pd(_n,m):Mt===m?_n:void 0;if(qe&&!Ey(or)&&(or=Pd(Ne,m)),Ey(or)&&(le=or,te))return le;const Rr=a[A+1];A=te?Sr(Rr):ba(Rr)}if(null!==l){let Ne=L?l.residualClasses:l.residualStyles;null!=Ne&&(le=Pd(Ne,m))}return le}function Ey(a){return void 0!==a}function yE(a,l){return 0!=(a.flags&(l?16:32))}function Ty(a,l=""){const d=Fi(),m=ua(),A=a+20,L=m.firstCreatePass?rp(m,A,1,l,null):m.data[A],te=d[A]=Rf(d[11],l);kh(m,d,te,L),Au(L,!1)}function bE(a){return Sy("",a,""),bE}function Sy(a,l,d){const m=Fi(),A=Wg(m,a,l,d);return A!==_o&&eg(m,Ln(),A),Sy}function EE(a,l,d,m,A){const L=Fi(),te=Jg(L,a,l,d,m,A);return te!==_o&&eg(L,Ln(),te),EE}function TE(a,l,d,m,A,L,te){const le=Fi(),Ne=function(a,l,d,m,A,L,te,le){const qe=Ov(a,Ar(),d,A,te);return fa(3),qe?l+$(d)+m+$(A)+L+$(te)+le:_o}(le,a,l,d,m,A,L,te);return Ne!==_o&&eg(le,Ln(),Ne),TE}function gC(a,l,d){S_(Wl,og,Wg(Fi(),a,l,d),!0)}function mC(a,l,d,m,A){S_(Wl,og,Jg(Fi(),a,l,d,m,A),!0)}function vC(a,l,d,m,A,L,te,le,Ne){S_(Wl,og,function(a,l,d,m,A,L,te,le,Ne,qe){const an=Vp(a,Ar(),d,A,te,Ne);return fa(4),an?l+$(d)+m+$(A)+L+$(te)+le+$(Ne)+qe:_o}(Fi(),a,l,d,m,A,L,te,le,Ne),!0)}function SE(a,l,d){const m=Fi();return rf(m,_u(),l)&&Io(ua(),gr(),m,a,l,m[11],d,!0),SE}function CE(a,l,d){const m=Fi();if(rf(m,_u(),l)){const L=ua(),te=gr();Io(L,te,m,a,l,function(a,l,d){return(null===a||Da(a))&&(d=function(a){for(;Array.isArray(a);){if("object"==typeof a[1])return a;a=a[0]}return null}(d[l.index])),d[11]}(V(L.data),te,m),d,!0)}return CE}const Gm=void 0;var IO=["en",[["a","p"],["AM","PM"],Gm],[["AM","PM"],Gm,Gm],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Gm,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Gm,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Gm,"{1} 'at' {0}",Gm],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function(a){const l=Math.floor(Math.abs(a)),d=a.toString().replace(/^[^.]*\.?/,"").length;return 1===l&&0===d?1:5}];let Iv={};function ME(a){const l=function(a){return a.toLowerCase().replace(/_/g,"-")}(a);let d=xC(l);if(d)return d;const m=l.split("-")[0];if(d=xC(m),d)return d;if("en"===m)return IO;throw new Error(`Missing locale data for the locale "${a}".`)}function wC(a){return ME(a)[Za.PluralCase]}function xC(a){return a in Iv||(Iv[a]=Nr.ng&&Nr.ng.common&&Nr.ng.common.locales&&Nr.ng.common.locales[a]),Iv[a]}var Za=(()=>((Za=Za||{})[Za.LocaleId=0]="LocaleId",Za[Za.DayPeriodsFormat=1]="DayPeriodsFormat",Za[Za.DayPeriodsStandalone=2]="DayPeriodsStandalone",Za[Za.DaysFormat=3]="DaysFormat",Za[Za.DaysStandalone=4]="DaysStandalone",Za[Za.MonthsFormat=5]="MonthsFormat",Za[Za.MonthsStandalone=6]="MonthsStandalone",Za[Za.Eras=7]="Eras",Za[Za.FirstDayOfWeek=8]="FirstDayOfWeek",Za[Za.WeekendRange=9]="WeekendRange",Za[Za.DateFormat=10]="DateFormat",Za[Za.TimeFormat=11]="TimeFormat",Za[Za.DateTimeFormat=12]="DateTimeFormat",Za[Za.NumberSymbols=13]="NumberSymbols",Za[Za.NumberFormats=14]="NumberFormats",Za[Za.CurrencyCode=15]="CurrencyCode",Za[Za.CurrencySymbol=16]="CurrencySymbol",Za[Za.CurrencyName=17]="CurrencyName",Za[Za.Currencies=18]="Currencies",Za[Za.Directionality=19]="Directionality",Za[Za.PluralCase=20]="PluralCase",Za[Za.ExtraData=21]="ExtraData",Za))();const FO=["zero","one","two","few","many"],Cy="en-US",My={marker:"element"},Ay={marker:"ICU"};var Ad=(()=>((Ad=Ad||{})[Ad.SHIFT=2]="SHIFT",Ad[Ad.APPEND_EAGERLY=1]="APPEND_EAGERLY",Ad[Ad.COMMENT=2]="COMMENT",Ad))();let DC=Cy;function AE(a){(function(a,l){null==a&&Ut(l,a,null,"!=")})(a,"Expected localeId to be defined"),"string"==typeof a&&(DC=a.toLowerCase().replace(/_/g,"-"))}function RC(a,l,d){const m=l.insertBeforeIndex,A=Array.isArray(m)?m[0]:m;return null===A?Tp(a,0,d):Me(d[A])}function NC(a,l,d,m,A){const L=l.insertBeforeIndex;if(Array.isArray(L)){let te=m,le=null;if(3&l.type||(le=te,te=A),null!==te&&0==(2&l.flags))for(let Ne=1;Ne<L.length;Ne++)ph(a,te,d[L[Ne]],le,!1)}}function OE(a,l){if(a.push(l),a.length>1)for(let d=a.length-2;d>=0;d--){const m=a[d];wE(m)||UO(m,l)&&null===BO(m)&&YO(m,l.index)}}function wE(a){return!(64&a.type)}function UO(a,l){return wE(l)||a.index>l.index}function BO(a){const l=a.insertBeforeIndex;return Array.isArray(l)?l[0]:l}function YO(a,l){const d=a.insertBeforeIndex;Array.isArray(d)?d[0]=l:(J_(RC,NC),a.insertBeforeIndex=l)}function U1(a,l){const d=a.data[l];return null===d||"string"==typeof d?null:d.hasOwnProperty("currentCaseLViewIndex")?d:d.value}function GO(a,l,d){const m=jh(a,d,64,null,null);return OE(l,m),m}function Oy(a,l){const d=l[a.currentCaseLViewIndex];return null===d?d:d<0?~d:d}function PC(a){return a>>>17}function IC(a){return(131070&a)>>>1}let Vm=0,Lv=0;function FC(a,l,d,m){const A=d[11];let te,L=null;for(let le=0;le<l.length;le++){const Ne=l[le];if("string"==typeof Ne){const qe=l[++le];null===d[qe]&&(d[qe]=Rf(A,Ne))}else if("number"==typeof Ne)switch(1&Ne){case 0:const qe=PC(Ne);let Mt,an;if(null===L&&(L=qe,te=Yd(A,m)),qe===L?(Mt=m,an=te):(Mt=null,an=Me(d[qe])),null!==an){const bi=IC(Ne);ph(A,an,d[bi],Mt,!1);const Oo=U1(a,bi);if(null!==Oo&&"object"==typeof Oo){const Xi=Oy(Oo,d);null!==Xi&&FC(a,Oo.create[Xi],d,d[Oo.anchorIdx])}}break;case 1:const or=l[++le],Rr=l[++le];v1(A,dr(Ne>>>1,d),null,null,or,Rr,null);break;default:throw new Error(`Unable to determine the type of mutate operation for "${Ne}"`)}else switch(Ne){case Ay:const qe=l[++le],Mt=l[++le];null===d[Mt]&&Jc(d[Mt]=vg(A,qe),d);break;case My:const an=l[++le],_n=l[++le];null===d[_n]&&Jc(d[_n]=Fh(A,an,null),d)}}}function kC(a,l,d,m,A){for(let L=0;L<d.length;L++){const te=d[L],le=d[++L];if(te&A){let Ne="";for(let qe=L+1;qe<=L+le;qe++){const Mt=d[qe];if("string"==typeof Mt)Ne+=Mt;else if("number"==typeof Mt)if(Mt<0)Ne+=$(l[m-Mt]);else{const an=Mt>>>2;switch(3&Mt){case 1:const _n=d[++qe],or=d[++qe],Rr=a.data[an];"string"==typeof Rr?v1(l[11],l[an],null,Rr,_n,Ne,or):Io(a,Rr,l,_n,Ne,l[11],or,!1);break;case 0:const bi=l[an];null!==bi&&dh(l[11],bi,Ne);break;case 2:JO(a,U1(a,an),l,Ne);break;case 3:$C(a,U1(a,an),m,l)}}}}else{const Ne=d[L+1];if(Ne>0&&3==(3&Ne)){const Mt=U1(a,Ne>>>2);l[Mt.currentCaseLViewIndex]<0&&$C(a,Mt,m,l)}}L+=le}}function $C(a,l,d,m){let A=m[l.currentCaseLViewIndex];if(null!==A){let L=Vm;A<0&&(A=m[l.currentCaseLViewIndex]=~A,L=-1),kC(a,m,l.update[A],d,L)}}function JO(a,l,d,m){const A=function(a,l){let d=a.cases.indexOf(l);if(-1===d)switch(a.type){case 1:{const m=function(a,l){const d=wC(l)(parseInt(a,10)),m=FO[d];return void 0!==m?m:"other"}(l,DC);d=a.cases.indexOf(m),-1===d&&"other"!==m&&(d=a.cases.indexOf("other"));break}case 0:d=a.cases.indexOf("other")}return-1===d?null:d}(l,m);if(Oy(l,d)!==A&&(HC(a,l,d),d[l.currentCaseLViewIndex]=null===A?null:~A,null!==A)){const te=d[l.anchorIdx];te&&FC(a,l.create[A],d,te)}}function HC(a,l,d){let m=Oy(l,d);if(null!==m){const A=l.remove[m];for(let L=0;L<A.length;L++){const te=A[L];if(te>0){const le=dr(te,d);null!==le&&p_(d[11],le)}else HC(a,U1(a,~te),d)}}}function UC(){const a=[];let d,m,l=-1;function L(le,Ne){l=0;const qe=Oy(le,Ne);m=null!==qe?le.remove[qe]:Xt}function te(){if(l<m.length){const le=m[l++];return le>0?d[le]:(a.push(l,m),L(d[1].data[~le],d),te())}return 0===a.length?null:(m=a.pop(),l=a.pop(),te())}return function(le,Ne){for(d=Ne;a.length;)a.pop();return L(le.value,Ne),te}}const wy=/\ufffd(\d+):?\d*\ufffd/gi,XO=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,KO=/\ufffd(\d+)\ufffd/,YC=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,qO=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,ew=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,tw=/\uE500/g;function jC(a,l,d,m,A,L,te){const le=Gp(a,m,1,null);let Ne=le<<Ad.SHIFT,qe=bl();l===qe&&(qe=null),null===qe&&(Ne|=Ad.APPEND_EAGERLY),te&&(Ne|=Ad.COMMENT,function(a){void 0===fd&&(fd=a())}(UC)),A.push(Ne,null===L?"":L);const Mt=jh(a,le,te?32:1,null===L?"":L,null);OE(d,Mt);const an=Mt.index;return Au(Mt,!1),null!==qe&&l!==qe&&function(a,l){let d=a.insertBeforeIndex;null===d?(J_(RC,NC),d=a.insertBeforeIndex=[null,l]):(function(a,l,d){a!=l&&Ut(d,a,l,"==")}(Array.isArray(d),!0,"Expecting array here"),d.push(l))}(qe,an),Mt}function rw(a,l,d,m,A,L,te){const le=te.match(wy),Ne=jC(a,l,d,L,m,le?null:te,!1);le&&Fv(A,te,Ne.index,null,0,null)}function Fv(a,l,d,m,A,L){const te=a.length,le=te+1;a.push(null,null);const Ne=te+2,qe=l.split(wy);let Mt=0;for(let an=0;an<qe.length;an++){const _n=qe[an];if(1&an){const or=A+parseInt(_n,10);a.push(-1-or),Mt|=GC(or)}else""!==_n&&a.push(_n)}return a.push(d<<2|(m?1:0)),m&&a.push(m,L),a[te]=Mt,a[le]=a.length-Ne,Mt}function ow(a){let l=0;for(let d=0;d<a.length;d++){const m=a[d];"number"==typeof m&&m<0&&l++}return l}function GC(a){return 1<<Math.min(a,31)}function VC(a){let l,L,d="",m=0,A=!1;for(;null!==(l=qO.exec(a));)A?l[0]===`\ufffd/*${L}\ufffd`&&(m=l.index,A=!1):(d+=a.substring(m,l.index+l[0].length),L=l[1],A=!0);return d+=a.substr(m),d}function zC(a,l,d,m,A,L){let te=0;const le={type:A.type,currentCaseLViewIndex:Gp(a,l,1,null),anchorIdx:L,cases:[],create:[],remove:[],update:[]};(function(a,l,d){a.push(GC(l.mainBinding),2,-1-l.mainBinding,d<<2|2)})(d,A,L),function(a,l,d){const m=a.data[l];null===m?a.data[l]=d:m.value=d}(a,L,le);const Ne=A.values;for(let qe=0;qe<Ne.length;qe++){const Mt=Ne[qe],an=[];for(let _n=0;_n<Mt.length;_n++){const or=Mt[_n];if("string"!=typeof or){const Rr=an.push(or)-1;Mt[_n]=`\x3c!--\ufffd${Rr}\ufffd--\x3e`}}te=Y1(a,le,l,d,m,A.cases[qe],Mt.join(""),an)|te}te&&function(a,l,d){a.push(l,1,d<<2|3)}(d,te,L)}function WC(a){const l=[],d=[];let m=1,A=0;const L=DE(a=a.replace(YC,function(te,le,Ne){return m="select"===Ne?0:1,A=parseInt(le.substr(1),10),""}));for(let te=0;te<L.length;){let le=L[te++].trim();1===m&&(le=le.replace(/\s*(?:=)?(\w+)\s*/,"$1")),le.length&&l.push(le);const Ne=DE(L[te++]);l.length>d.length&&d.push(Ne)}return{type:m,mainBinding:A,cases:l,values:d}}function DE(a){if(!a)return[];let l=0;const d=[],m=[],A=/[{}]/g;let L;for(A.lastIndex=0;L=A.exec(a);){const le=L.index;if("}"==L[0]){if(d.pop(),0==d.length){const Ne=a.substring(l,le);YC.test(Ne)?m.push(WC(Ne)):m.push(Ne),l=le+1}}else{if(0==d.length){const Ne=a.substring(l,le);m.push(Ne),l=le+1}d.push("{")}}const te=a.substring(l);return m.push(te),m}function Y1(a,l,d,m,A,L,te,le){const Ne=[],qe=[],Mt=[];l.cases.push(L),l.create.push(Ne),l.remove.push(qe),l.update.push(Mt);const _n=th(Cu()).getInertBodyElement(te),or=Is(_n)||_n;return or?JC(a,l,d,m,Ne,qe,Mt,or,A,le,0):0}function JC(a,l,d,m,A,L,te,le,Ne,qe,Mt){let an=0,_n=le.firstChild;for(;_n;){const or=Gp(a,d,1,null);switch(_n.nodeType){case Node.ELEMENT_NODE:const Rr=_n,bi=Rr.tagName.toLowerCase();if(Y.hasOwnProperty(bi)){NE(A,My,bi,Ne,or),a.data[or]=bi;const oa=Rr.attributes;for(let Va=0;Va<oa.length;Va++){const pu=oa.item(Va),Mf=pu.name.toLowerCase();pu.value.match(wy)?ut.hasOwnProperty(Mf)&&Fv(te,pu.value,or,pu.name,0,fe[Mf]?vf:w[Mf]?Dh:null):dw(A,or,pu)}an=JC(a,l,d,m,A,L,te,_n,or,qe,Mt+1)|an,RE(L,or,Mt)}break;case Node.TEXT_NODE:const ni=_n.textContent||"",Oo=ni.match(wy);NE(A,null,Oo?"":ni,Ne,or),RE(L,or,Mt),Oo&&(an=Fv(te,ni,or,null,0,null)|an);break;case Node.COMMENT_NODE:const Xi=KO.exec(_n.textContent||"");if(Xi){const Va=qe[parseInt(Xi[1],10)];NE(A,Ay,"",Ne,or),zC(a,d,m,Ne,Va,or),lw(L,or,Mt)}}_n=_n.nextSibling}return an}function RE(a,l,d){0===d&&a.push(l)}function lw(a,l,d){0===d&&(a.push(~l),a.push(l))}function NE(a,l,d,m,A){null!==l&&a.push(l),a.push(d,A,function(a,l,d){return 0|l<<17|d<<1}(0,m,A))}function dw(a,l,d){a.push(l<<1|1,d.name,d.value)}const QC=/\[(\ufffd.+?\ufffd?)\]/,fw=/\[(\ufffd.+?\ufffd?)\]|(\ufffd\/?\*\d+:\d+\ufffd)/g,XC=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,pw=/{([A-Z0-9_]+)}/g,hw=/\ufffdI18N_EXP_(ICU(_\d+)?)\ufffd/g,KC=/\/\*/,_w=/\d+\:(\d+)/;function PE(a,l,d=-1){const m=ua(),A=Fi(),L=20+a,te=Pl(m.consts,l),le=bl();m.firstCreatePass&&function(a,l,d,m,A,L){const te=bl(),le=[],Ne=[],qe=[[]],Mt=function(a){return a.replace(tw," ")}(A=function(a,l){if(function(a){return-1===a}(l))return VC(a);{const d=a.indexOf(`:${l}\ufffd`)+2+l.toString().length,m=a.search(new RegExp(`\ufffd\\/\\*\\d+:${l}\ufffd`));return VC(a.substring(d,m))}}(A,L)).split(ew);for(let an=0;an<Mt.length;an++){let _n=Mt[an];if(0==(1&an)){const or=DE(_n);for(let Rr=0;Rr<or.length;Rr++){let bi=or[Rr];if(0==(1&Rr)){const ni=bi;""!==ni&&rw(a,te,qe[0],le,Ne,d,ni)}else{const ni=bi;if("object"!=typeof ni)throw new Error(`Unable to parse ICU expression in "${A}" message.`);zC(a,d,Ne,l,ni,jC(a,te,qe[0],d,le,"",!0).index)}}}else{const or=47===_n.charCodeAt(0),bi=(_n.charCodeAt(or?1:0),20+Number.parseInt(_n.substring(or?2:1)));if(or)qe.shift(),Au(bl(),!1);else{const ni=GO(a,qe[0],bi);qe.unshift([]),Au(ni,!0)}}}a.data[m]={create:le,update:Ne}}(m,null===le?0:le.index,A,L,te,d);const Ne=m.data[L],Mt=Ep(m,le===A[6]?null:le,A);(function(a,l,d,m){const A=a[11];for(let L=0;L<l.length;L++){const te=l[L++],le=l[L],Ne=(te&Ad.COMMENT)===Ad.COMMENT,qe=(te&Ad.APPEND_EAGERLY)===Ad.APPEND_EAGERLY,Mt=te>>>Ad.SHIFT;let an=a[Mt];null===an&&(an=a[Mt]=Ne?A.createComment(le):Rf(A,le)),qe&&null!==d&&ph(A,d,an,m,!1)}})(A,Ne.create,Mt,le&&8&le.type?A[le.index]:null),Ja(!0)}function xy(){Ja(!1)}function qC(a,l,d){PE(a,l,d),xy()}function eM(a,l){const d=ua();!function(a,l,d){const A=As().index,L=[];if(a.firstCreatePass&&null===a.data[l]){for(let te=0;te<d.length;te+=2){const le=d[te],Ne=d[te+1];if(""!==Ne){if(XO.test(Ne))throw new Error(`ICU expressions are not supported in attributes. Message: "${Ne}".`);Fv(L,Ne,A,le,ow(L),null)}}a.data[l]=L}}(d,a+20,Pl(d.consts,l))}function IE(a){return function(a){a&&(Vm|=1<<Math.min(Lv,31)),Lv++}(rf(Fi(),_u(),a)),IE}function tM(a){!function(a,l,d){if(Lv>0){const m=a.data[d];kC(a,l,Array.isArray(m)?m:m.update,Ar()-Lv-1,Vm)}Vm=0,Lv=0}(ua(),Fi(),a+20)}function nM(a,l={}){return function(a,l={}){let d=a;if(QC.test(a)){const m={},A=[0];d=d.replace(fw,(L,te,le)=>{const Ne=te||le,qe=m[Ne]||[];if(qe.length||(Ne.split("|").forEach(bi=>{const ni=bi.match(_w),Oo=ni?parseInt(ni[1],10):0,Xi=KC.test(bi);qe.push([Oo,Xi,bi])}),m[Ne]=qe),!qe.length)throw new Error(`i18n postprocess: unmatched placeholder - ${Ne}`);const Mt=A[A.length-1];let an=0;for(let bi=0;bi<qe.length;bi++)if(qe[bi][0]===Mt){an=bi;break}const[_n,or,Rr]=qe[an];return or?A.pop():Mt!==_n&&A.push(_n),qe.splice(an,1),Rr})}return Object.keys(l).length&&(d=d.replace(XC,(m,A,L,te,le,Ne)=>l.hasOwnProperty(L)?`${A}${l[L]}${Ne}`:m),d=d.replace(pw,(m,A)=>l.hasOwnProperty(A)?l[A]:m),d=d.replace(hw,(m,A)=>{if(l.hasOwnProperty(A)){const L=l[A];if(!L.length)throw new Error(`i18n postprocess: unmatched ICU - ${m} with key: ${A}`);return L.shift()}return m})),d}(a,l)}function LE(a,l,d,m,A){if(a=Z(a),Array.isArray(a))for(let L=0;L<a.length;L++)LE(a[L],l,d,m,A);else{const L=ua(),te=Fi();let le=Vh(a)?a:Z(a.provide),Ne=nf(a);const qe=As(),Mt=1048575&qe.providerIndexes,an=qe.directiveStart,_n=qe.providerIndexes>>20;if(Vh(a)||!a.multi){const or=new Xs(Ne,A,k1),Rr=kE(le,l,A?Mt:Mt+_n,an);-1===Rr?(va(ss(qe,te),L,le),FE(L,a,l.length),l.push(le),qe.directiveStart++,qe.directiveEnd++,A&&(qe.providerIndexes+=1048576),d.push(or),te.push(or)):(d[Rr]=or,te[Rr]=or)}else{const or=kE(le,l,Mt+_n,an),Rr=kE(le,l,Mt,Mt+_n),bi=or>=0&&d[or],ni=Rr>=0&&d[Rr];if(A&&!ni||!A&&!bi){va(ss(qe,te),L,le);const Oo=function(a,l,d,m,A){const L=new Xs(a,d,k1);return L.multi=[],L.index=l,L.componentProviders=0,rM(L,A,m&&!d),L}(A?yw:vw,d.length,A,m,Ne);!A&&ni&&(d[Rr].providerFactory=Oo),FE(L,a,l.length,0),l.push(le),qe.directiveStart++,qe.directiveEnd++,A&&(qe.providerIndexes+=1048576),d.push(Oo),te.push(Oo)}else FE(L,a,or>-1?or:Rr,rM(d[A?Rr:or],Ne,!A&&m));!A&&m&&ni&&d[Rr].componentProviders++}}}function FE(a,l,d,m){const A=Vh(l);if(A||function(a){return!!a.useClass}(l)){const te=(l.useClass||l).prototype.ngOnDestroy;if(te){const le=a.destroyHooks||(a.destroyHooks=[]);if(!A&&l.multi){const Ne=le.indexOf(d);-1===Ne?le.push(d,[m,te]):le[Ne+1].push(m,te)}else le.push(d,te)}}}function rM(a,l,d){return d&&a.componentProviders++,a.multi.push(l)-1}function kE(a,l,d,m){for(let A=d;A<m;A++)if(l[A]===a)return A;return-1}function vw(a,l,d,m){return $E(this.multi,[])}function yw(a,l,d,m){const A=this.multi;let L;if(this.providerFactory){const te=this.providerFactory.componentProviders,le=Tc(d,d[1],this.providerFactory.index,m);L=le.slice(0,te),$E(A,L);for(let Ne=te;Ne<le.length;Ne++)L.push(le[Ne])}else L=[],$E(A,L);return L}function $E(a,l){for(let d=0;d<a.length;d++)l.push((0,a[d])());return l}function HE(a,l=[]){return d=>{d.providersResolver=(m,A)=>function(a,l,d){const m=ua();if(m.firstCreatePass){const A=Da(a);LE(d,m.data,m.blueprint,A,!0),LE(l,m.data,m.blueprint,A,!1)}}(m,A?A(a):a,l)}}class Ew{}class iM{}const sM="ngComponent";class UE{resolveComponentFactory(l){throw function(a){const l=Error(`No component factory found for ${T(a)}. Did you add it to @NgModule.entryComponents?`);return l[sM]=a,l}(l)}}let kv=(()=>{class a{}return a.NULL=new UE,a})();function Dy(...a){}function im(a,l){return new sg(Qi(a,l))}const Sw=function(){return im(As(),Fi())};let sg=(()=>{class a{constructor(d){this.nativeElement=d}}return a.__NG_ELEMENT_ID__=Sw,a})();function uM(a){return a instanceof sg?a.nativeElement:a}class Ry{}let Cw=(()=>{class a{}return a.__NG_ELEMENT_ID__=()=>Aw(),a})();const Aw=function(){const a=Fi(),d=Ms(As().index,a);return function(a){return a[11]}(pa(d)?d:a)};let YE=(()=>{class a{}return a.\u0275prov=Dt({token:a,providedIn:"root",factory:()=>null}),a})();class cM{constructor(l){this.full=l,this.major=l.split(".")[0],this.minor=l.split(".")[1],this.patch=l.split(".").slice(2).join(".")}}const dM=new cM("12.2.13");class fM{constructor(){}supports(l){return Zm(l)}create(l){return new Dw(l)}}const xw=(a,l)=>l;class Dw{constructor(l){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=l||xw}forEachItem(l){let d;for(d=this._itHead;null!==d;d=d._next)l(d)}forEachOperation(l){let d=this._itHead,m=this._removalsHead,A=0,L=null;for(;d||m;){const te=!m||d&&d.currentIndex<hM(m,A,L)?d:m,le=hM(te,A,L),Ne=te.currentIndex;if(te===m)A--,m=m._nextRemoved;else if(d=d._next,null==te.previousIndex)A++;else{L||(L=[]);const qe=le-A,Mt=Ne-A;if(qe!=Mt){for(let _n=0;_n<qe;_n++){const or=_n<L.length?L[_n]:L[_n]=0,Rr=or+_n;Mt<=Rr&&Rr<qe&&(L[_n]=or+1)}L[te.previousIndex]=Mt-qe}}le!==Ne&&l(te,le,Ne)}}forEachPreviousItem(l){let d;for(d=this._previousItHead;null!==d;d=d._nextPrevious)l(d)}forEachAddedItem(l){let d;for(d=this._additionsHead;null!==d;d=d._nextAdded)l(d)}forEachMovedItem(l){let d;for(d=this._movesHead;null!==d;d=d._nextMoved)l(d)}forEachRemovedItem(l){let d;for(d=this._removalsHead;null!==d;d=d._nextRemoved)l(d)}forEachIdentityChange(l){let d;for(d=this._identityChangesHead;null!==d;d=d._nextIdentityChange)l(d)}diff(l){if(null==l&&(l=[]),!Zm(l))throw new Error(`Error trying to diff '${T(l)}'. Only arrays and iterables are allowed`);return this.check(l)?this:null}onDestroy(){}check(l){this._reset();let A,L,te,d=this._itHead,m=!1;if(Array.isArray(l)){this.length=l.length;for(let le=0;le<this.length;le++)L=l[le],te=this._trackByFn(le,L),null!==d&&Object.is(d.trackById,te)?(m&&(d=this._verifyReinsertion(d,L,te,le)),Object.is(d.item,L)||this._addIdentityChange(d,L)):(d=this._mismatch(d,L,te,le),m=!0),d=d._next}else A=0,function(a,l){if(Array.isArray(a))for(let d=0;d<a.length;d++)l(a[d]);else{const d=a[ng()]();let m;for(;!(m=d.next()).done;)l(m.value)}}(l,le=>{te=this._trackByFn(A,le),null!==d&&Object.is(d.trackById,te)?(m&&(d=this._verifyReinsertion(d,le,te,A)),Object.is(d.item,le)||this._addIdentityChange(d,le)):(d=this._mismatch(d,le,te,A),m=!0),d=d._next,A++}),this.length=A;return this._truncate(d),this.collection=l,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let l;for(l=this._previousItHead=this._itHead;null!==l;l=l._next)l._nextPrevious=l._next;for(l=this._additionsHead;null!==l;l=l._nextAdded)l.previousIndex=l.currentIndex;for(this._additionsHead=this._additionsTail=null,l=this._movesHead;null!==l;l=l._nextMoved)l.previousIndex=l.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(l,d,m,A){let L;return null===l?L=this._itTail:(L=l._prev,this._remove(l)),null!==(l=null===this._unlinkedRecords?null:this._unlinkedRecords.get(m,null))?(Object.is(l.item,d)||this._addIdentityChange(l,d),this._reinsertAfter(l,L,A)):null!==(l=null===this._linkedRecords?null:this._linkedRecords.get(m,A))?(Object.is(l.item,d)||this._addIdentityChange(l,d),this._moveAfter(l,L,A)):l=this._addAfter(new Rw(d,m),L,A),l}_verifyReinsertion(l,d,m,A){let L=null===this._unlinkedRecords?null:this._unlinkedRecords.get(m,null);return null!==L?l=this._reinsertAfter(L,l._prev,A):l.currentIndex!=A&&(l.currentIndex=A,this._addToMoves(l,A)),l}_truncate(l){for(;null!==l;){const d=l._next;this._addToRemovals(this._unlink(l)),l=d}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(l,d,m){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(l);const A=l._prevRemoved,L=l._nextRemoved;return null===A?this._removalsHead=L:A._nextRemoved=L,null===L?this._removalsTail=A:L._prevRemoved=A,this._insertAfter(l,d,m),this._addToMoves(l,m),l}_moveAfter(l,d,m){return this._unlink(l),this._insertAfter(l,d,m),this._addToMoves(l,m),l}_addAfter(l,d,m){return this._insertAfter(l,d,m),this._additionsTail=null===this._additionsTail?this._additionsHead=l:this._additionsTail._nextAdded=l,l}_insertAfter(l,d,m){const A=null===d?this._itHead:d._next;return l._next=A,l._prev=d,null===A?this._itTail=l:A._prev=l,null===d?this._itHead=l:d._next=l,null===this._linkedRecords&&(this._linkedRecords=new pM),this._linkedRecords.put(l),l.currentIndex=m,l}_remove(l){return this._addToRemovals(this._unlink(l))}_unlink(l){null!==this._linkedRecords&&this._linkedRecords.remove(l);const d=l._prev,m=l._next;return null===d?this._itHead=m:d._next=m,null===m?this._itTail=d:m._prev=d,l}_addToMoves(l,d){return l.previousIndex===d||(this._movesTail=null===this._movesTail?this._movesHead=l:this._movesTail._nextMoved=l),l}_addToRemovals(l){return null===this._unlinkedRecords&&(this._unlinkedRecords=new pM),this._unlinkedRecords.put(l),l.currentIndex=null,l._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=l,l._prevRemoved=null):(l._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=l),l}_addIdentityChange(l,d){return l.item=d,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=l:this._identityChangesTail._nextIdentityChange=l,l}}class Rw{constructor(l,d){this.item=l,this.trackById=d,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class Nw{constructor(){this._head=null,this._tail=null}add(l){null===this._head?(this._head=this._tail=l,l._nextDup=null,l._prevDup=null):(this._tail._nextDup=l,l._prevDup=this._tail,l._nextDup=null,this._tail=l)}get(l,d){let m;for(m=this._head;null!==m;m=m._nextDup)if((null===d||d<=m.currentIndex)&&Object.is(m.trackById,l))return m;return null}remove(l){const d=l._prevDup,m=l._nextDup;return null===d?this._head=m:d._nextDup=m,null===m?this._tail=d:m._prevDup=d,null===this._head}}class pM{constructor(){this.map=new Map}put(l){const d=l.trackById;let m=this.map.get(d);m||(m=new Nw,this.map.set(d,m)),m.add(l)}get(l,d){const A=this.map.get(l);return A?A.get(l,d):null}remove(l){const d=l.trackById;return this.map.get(d).remove(l)&&this.map.delete(d),l}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function hM(a,l,d){const m=a.previousIndex;if(null===m)return m;let A=0;return d&&m<d.length&&(A=d[m]),m+l+A}class _M{constructor(){}supports(l){return l instanceof Map||P1(l)}create(){return new Pw}}class Pw{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(l){let d;for(d=this._mapHead;null!==d;d=d._next)l(d)}forEachPreviousItem(l){let d;for(d=this._previousMapHead;null!==d;d=d._nextPrevious)l(d)}forEachChangedItem(l){let d;for(d=this._changesHead;null!==d;d=d._nextChanged)l(d)}forEachAddedItem(l){let d;for(d=this._additionsHead;null!==d;d=d._nextAdded)l(d)}forEachRemovedItem(l){let d;for(d=this._removalsHead;null!==d;d=d._nextRemoved)l(d)}diff(l){if(l){if(!(l instanceof Map||P1(l)))throw new Error(`Error trying to diff '${T(l)}'. Only maps and objects are allowed`)}else l=new Map;return this.check(l)?this:null}onDestroy(){}check(l){this._reset();let d=this._mapHead;if(this._appendAfter=null,this._forEach(l,(m,A)=>{if(d&&d.key===A)this._maybeAddToChanges(d,m),this._appendAfter=d,d=d._next;else{const L=this._getOrCreateRecordForKey(A,m);d=this._insertBeforeOrAppend(d,L)}}),d){d._prev&&(d._prev._next=null),this._removalsHead=d;for(let m=d;null!==m;m=m._nextRemoved)m===this._mapHead&&(this._mapHead=null),this._records.delete(m.key),m._nextRemoved=m._next,m.previousValue=m.currentValue,m.currentValue=null,m._prev=null,m._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(l,d){if(l){const m=l._prev;return d._next=l,d._prev=m,l._prev=d,m&&(m._next=d),l===this._mapHead&&(this._mapHead=d),this._appendAfter=l,l}return this._appendAfter?(this._appendAfter._next=d,d._prev=this._appendAfter):this._mapHead=d,this._appendAfter=d,null}_getOrCreateRecordForKey(l,d){if(this._records.has(l)){const A=this._records.get(l);this._maybeAddToChanges(A,d);const L=A._prev,te=A._next;return L&&(L._next=te),te&&(te._prev=L),A._next=null,A._prev=null,A}const m=new Iw(l);return this._records.set(l,m),m.currentValue=d,this._addToAdditions(m),m}_reset(){if(this.isDirty){let l;for(this._previousMapHead=this._mapHead,l=this._previousMapHead;null!==l;l=l._next)l._nextPrevious=l._next;for(l=this._changesHead;null!==l;l=l._nextChanged)l.previousValue=l.currentValue;for(l=this._additionsHead;null!=l;l=l._nextAdded)l.previousValue=l.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(l,d){Object.is(d,l.currentValue)||(l.previousValue=l.currentValue,l.currentValue=d,this._addToChanges(l))}_addToAdditions(l){null===this._additionsHead?this._additionsHead=this._additionsTail=l:(this._additionsTail._nextAdded=l,this._additionsTail=l)}_addToChanges(l){null===this._changesHead?this._changesHead=this._changesTail=l:(this._changesTail._nextChanged=l,this._changesTail=l)}_forEach(l,d){l instanceof Map?l.forEach(d):Object.keys(l).forEach(m=>d(l[m],m))}}class Iw{constructor(l){this.key=l,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function gM(){return new Ny([new fM])}let Ny=(()=>{class a{constructor(d){this.factories=d}static create(d,m){if(null!=m){const A=m.factories.slice();d=d.concat(A)}return new a(d)}static extend(d){return{provide:a,useFactory:m=>a.create(d,m||gM()),deps:[[a,new ol,new sa]]}}find(d){const m=this.factories.find(A=>A.supports(d));if(null!=m)return m;throw new Error(`Cannot find a differ supporting object '${d}' of type '${function(a){return a.name||typeof a}(d)}'`)}}return a.\u0275prov=Dt({token:a,providedIn:"root",factory:gM}),a})();function mM(){return new Py([new _M])}let Py=(()=>{class a{constructor(d){this.factories=d}static create(d,m){if(m){const A=m.factories.slice();d=d.concat(A)}return new a(d)}static extend(d){return{provide:a,useFactory:m=>a.create(d,m||mM()),deps:[[a,new ol,new sa]]}}find(d){const m=this.factories.find(A=>A.supports(d));if(m)return m;throw new Error(`Cannot find a differ supporting object '${d}'`)}}return a.\u0275prov=Dt({token:a,providedIn:"root",factory:mM}),a})();function Iy(a,l,d,m,A=!1){for(;null!==d;){const L=l[d.index];if(null!==L&&m.push(Me(L)),Bs(L))for(let le=10;le<L.length;le++){const Ne=L[le],qe=Ne[1].firstChild;null!==qe&&Iy(Ne[1],Ne,qe,m)}const te=d.type;if(8&te)Iy(a,l,d.child,m);else if(32&te){const le=bf(d,l);let Ne;for(;Ne=le();)m.push(Ne)}else if(16&te){const le=Sg(l,d);if(Array.isArray(le))m.push(...le);else{const Ne=sd(l[16]);Iy(Ne[1],Ne,le,m,!0)}}d=A?d.projectionNext:d.next}return m}class Z1{constructor(l,d){this._lView=l,this._cdRefInjectingView=d,this._appRef=null,this._attachedToViewContainer=!1}get rootNodes(){const l=this._lView,d=l[1];return Iy(d,l,d.firstChild,[])}get context(){return this._lView[8]}set context(l){this._lView[8]=l}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){const l=this._lView[3];if(Bs(l)){const d=l[8],m=d?d.indexOf(this):-1;m>-1&&(yg(l,m),cl(d,m))}this._attachedToViewContainer=!1}bp(this._lView[1],this._lView)}onDestroy(l){at(this._lView[1],this._lView,null,l)}markForCheck(){tf(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){b1(this._lView[1],this._lView,this.context)}checkNoChanges(){!function(a,l,d){Yo(!0);try{b1(a,l,d)}finally{Yo(!1)}}(this._lView[1],this._lView,this.context)}attachToViewContainerRef(){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._attachedToViewContainer=!0}detachFromAppRef(){var l;this._appRef=null,Hh(this._lView[1],l=this._lView,l[11],2,null,null)}attachToAppRef(l){if(this._attachedToViewContainer)throw new Error("This view is already attached to a ViewContainer!");this._appRef=l}}class Fw extends Z1{constructor(l){super(l),this._view=l}detectChanges(){y_(this._view)}checkNoChanges(){!function(a){Yo(!0);try{y_(a)}finally{Yo(!1)}}(this._view)}get context(){return null}}const kw=function(a){return function(a,l,d){if(yl(a)&&!d){const m=Ms(a.index,l);return new Z1(m,m)}return 47&a.type?new Z1(l[16],l):null}(As(),Fi(),16==(16&a))};let $w=(()=>{class a{}return a.__NG_ELEMENT_ID__=kw,a})();const Bw=[new _M],Zw=new Ny([new fM]),jw=new Py(Bw),Vw=function(){return Ly(As(),Fi())};let j1=(()=>{class a{}return a.__NG_ELEMENT_ID__=Vw,a})();const zw=j1,Ww=class extends zw{constructor(l,d,m){super(),this._declarationLView=l,this._declarationTContainer=d,this.elementRef=m}createEmbeddedView(l){const d=this._declarationTContainer.tViews,m=Mp(this._declarationLView,d,l,16,null,d.declTNode,null,null,null,null);m[17]=this._declarationLView[this._declarationTContainer.index];const L=this._declarationLView[19];return null!==L&&(m[19]=L.createEmbeddedView(d)),X_(d,m,l),new Z1(m)}};function Ly(a,l){return 4&a.type?new Ww(l,a,im(a,l)):null}class Wm{}class vM{}const Xw=function(){return EM(As(),Fi())};let Fy=(()=>{class a{}return a.__NG_ELEMENT_ID__=Xw,a})();const qw=Fy,yM=class extends qw{constructor(l,d,m){super(),this._lContainer=l,this._hostTNode=d,this._hostLView=m}get element(){return im(this._hostTNode,this._hostLView)}get injector(){return new Gc(this._hostTNode,this._hostLView)}get parentInjector(){const l=fc(this._hostTNode,this._hostLView);if(Be(l)){const d=it(l,this._hostLView),m=Pe(l);return new Gc(d[1].data[m+8],d)}return new Gc(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(l){const d=bM(this._lContainer);return null!==d&&d[l]||null}get length(){return this._lContainer.length-10}createEmbeddedView(l,d,m){const A=l.createEmbeddedView(d||{});return this.insert(A,m),A}createComponent(l,d,m,A,L){const te=m||this.parentInjector;if(!L&&null==l.ngModule&&te){const Ne=te.get(Wm,null);Ne&&(L=Ne)}const le=l.create(te,A,void 0,L);return this.insert(le.hostView,d),le}insert(l,d){const m=l._lView,A=m[1];if(Bs(m[3])){const Mt=this.indexOf(l);if(-1!==Mt)this.detach(Mt);else{const an=m[3],_n=new yM(an,an[6],an[3]);_n.detach(_n.indexOf(l))}}const L=this._adjustIndex(d),te=this._lContainer;!function(a,l,d,m){const A=10+m,L=d.length;m>0&&(d[A-1][4]=l),m<L-10?(l[4]=d[A],Ji(d,10+m,l)):(d.push(l),l[4]=null),l[3]=d;const te=l[17];null!==te&&d!==te&&function(a,l){const d=a[9];l[16]!==l[3][3][16]&&(a[2]=!0),null===d?a[9]=[l]:d.push(l)}(te,l);const le=l[19];null!==le&&le.insertView(a),l[2]|=128}(A,m,te,L);const le=Cg(L,te),Ne=m[11],qe=Yd(Ne,te[7]);return null!==qe&&function(a,l,d,m,A,L){m[0]=A,m[6]=l,Hh(a,m,d,1,A,L)}(A,te[6],Ne,m,qe,le),l.attachToViewContainerRef(),Ji(jE(te),L,l),l}move(l,d){return this.insert(l,d)}indexOf(l){const d=bM(this._lContainer);return null!==d?d.indexOf(l):-1}remove(l){const d=this._adjustIndex(l,-1),m=yg(this._lContainer,d);m&&(cl(jE(this._lContainer),d),bp(m[1],m))}detach(l){const d=this._adjustIndex(l,-1),m=yg(this._lContainer,d);return m&&null!=cl(jE(this._lContainer),d)?new Z1(m):null}_adjustIndex(l,d=0){return null==l?this.length+d:l}};function bM(a){return a[8]}function jE(a){return a[8]||(a[8]=[])}function EM(a,l){let d;const m=l[a.index];if(Bs(m))d=m;else{let A;if(8&a.type)A=Me(m);else{const L=l[11];A=L.createComment("");const te=Qi(a,l);ph(L,Yd(L,te),A,function(a,l){return rt(a)?a.nextSibling(l):l.nextSibling}(L,te),!1)}l[a.index]=d=yv(m,l,A,a),y1(l,d)}return new yM(d,a,l)}const Bv={};class WM extends kv{constructor(l){super(),this.ngModule=l}resolveComponentFactory(l){const d=Mo(l);return new QM(d,this.ngModule)}}function JM(a){const l=[];for(let d in a)a.hasOwnProperty(d)&&l.push({propName:a[d],templateName:d});return l}const Nx=new Xl("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>Ih});class QM extends iM{constructor(l,d){super(),this.componentDef=l,this.ngModule=d,this.componentType=l.type,this.selector=l.selectors.map(fs).join(","),this.ngContentSelectors=l.ngContentSelectors?l.ngContentSelectors:[],this.isBoundToModule=!!d}get inputs(){return JM(this.componentDef.inputs)}get outputs(){return JM(this.componentDef.outputs)}create(l,d,m,A){const L=(A=A||this.ngModule)?function(a,l){return{get:(d,m,A)=>{const L=a.get(d,Bv,A);return L!==Bv||m===Bv?L:l.get(d,m,A)}}}(l,A.injector):l,te=L.get(Ry,ct),le=L.get(YE,null),Ne=te.createRenderer(null,this.componentDef),qe=this.componentDef.selectors[0][0]||"div",Mt=m?function(a,l,d){if(rt(a))return a.selectRootElement(l,d===Vn.ShadowDom);let m="string"==typeof l?a.querySelector(l):l;return m.textContent="",m}(Ne,m,this.componentDef.encapsulation):Fh(te.createRenderer(null,this.componentDef),qe,function(a){const l=a.toLowerCase();return"svg"===l?"http://www.w3.org/2000/svg":"math"===l?"http://www.w3.org/1998/MathML/":null}(qe)),an=this.componentDef.onPush?576:528,_n=function(a,l){return{components:[],scheduler:a||Ih,clean:bS,playerHandler:l||null,flags:0}}(),or=jg(0,null,null,1,0,null,null,null,null,null),Rr=Mp(null,or,_n,an,null,null,te,Ne,le,L);let bi,ni;un(Rr);try{const Oo=function(a,l,d,m,A,L){const te=d[1];d[20]=a;const Ne=rp(te,20,2,"#host",null),qe=Ne.mergedAttrs=l.hostAttrs;null!==qe&&(E1(Ne,qe,!0),null!==a&&(nc(A,a,qe),null!==Ne.classes&&Uh(A,a,Ne.classes),null!==Ne.styles&&Ug(A,a,Ne.styles)));const Mt=m.createRenderer(a,l),an=Mp(d,mv(l),null,l.onPush?64:16,d[20],Ne,m,Mt,L||null,null);return te.firstCreatePass&&(va(ss(Ne,d),te,l.type),Zu(te,Ne),F0(Ne,d.length,1)),y1(d,an),d[20]=an}(Mt,this.componentDef,Rr,te,Ne);if(Mt)if(m)nc(Ne,Mt,["ng-version",dM.full]);else{const{attrs:Xi,classes:oa}=function(a){const l=[],d=[];let m=1,A=2;for(;m<a.length;){let L=a[m];if("string"==typeof L)2===A?""!==L&&l.push(L,a[++m]):8===A&&d.push(L);else{if(!G(A))break;A=L}m++}return{attrs:l,classes:d}}(this.componentDef.selectors[0]);Xi&&nc(Ne,Mt,Xi),oa&&oa.length>0&&Uh(Ne,Mt,oa.join(" "))}if(ni=Es(or,20),void 0!==d){const Xi=ni.projection=[];for(let oa=0;oa<this.ngContentSelectors.length;oa++){const Va=d[oa];Xi.push(null!=Va?Array.from(Va):null)}}bi=function(a,l,d,m,A){const L=d[1],te=function(a,l,d){const m=As();a.firstCreatePass&&(d.providersResolver&&d.providersResolver(d),k0(a,m,l,Gp(a,l,1,null),d));const A=Tc(l,a,m.directiveStart,m);Jc(A,l);const L=Qi(m,l);return L&&Jc(L,l),A}(L,d,l);if(m.components.push(te),a[8]=te,A&&A.forEach(Ne=>Ne(te,l)),l.contentQueries){const Ne=As();l.contentQueries(1,te,Ne.directiveStart)}const le=As();return!L.firstCreatePass||null===l.hostBindings&&null===l.hostAttrs||(Mr(le.index),Ap(d[1],le,0,le.directiveStart,le.directiveEnd,l),Xc(l,te)),te}(Oo,this.componentDef,Rr,_n,[Wb]),X_(or,Rr,null)}finally{oi()}return new Lx(this.componentType,bi,im(ni,Rr),Rr,ni)}}class Lx extends Ew{constructor(l,d,m,A,L){super(),this.location=m,this._rootLView=A,this._tNode=L,this.instance=d,this.hostView=this.changeDetectorRef=new Fw(A),this.componentType=l}get injector(){return new Gc(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(l){this.hostView.onDestroy(l)}}const lm=new Map;class Hx extends Wm{constructor(l,d){super(),this._parent=d,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[],this.componentFactoryResolver=new WM(this);const m=zo(l),A=l[no]||null;A&&AE(A),this._bootstrapComponents=yf(m.bootstrap),this._r3Injector=ad(l,d,[{provide:Wm,useValue:this},{provide:kv,useValue:this.componentFactoryResolver}],T(l)),this._r3Injector._resolveInjectorDefTypes(),this.instance=this.get(l)}get(l,d=Gu.THROW_IF_NOT_FOUND,m=Ur.Default){return l===Gu||l===Wm||l===Gg?this:this._r3Injector.get(l,d,m)}destroy(){const l=this._r3Injector;!l.destroyed&&l.destroy(),this.destroyCbs.forEach(d=>d()),this.destroyCbs=null}onDestroy(l){this.destroyCbs.push(l)}}class r0 extends vM{constructor(l){super(),this.moduleType=l,null!==zo(l)&&function(a){const l=new Set;!function d(m){const A=zo(m,!0),L=A.id;null!==L&&(function(a,l,d){if(l&&l!==d)throw new Error(`Duplicate module registered for ${a} - ${T(l)} vs ${T(l.name)}`)}(L,lm.get(L),m),lm.set(L,m));const te=yf(A.imports);for(const le of te)l.has(le)||(l.add(le),d(le))}(a)}(l)}create(l){return new Hx(this.moduleType,l)}}function i0(a,l,d){const m=du()+a,A=Fi();return A[m]===_o?zh(A,m,d?l.call(d):l()):jm(A,m)}function sT(a,l,d,m){return t2(Fi(),du(),a,l,d,m)}function XM(a,l,d,m,A){return n2(Fi(),du(),a,l,d,m,A)}function KM(a,l,d,m,A,L){return aT(Fi(),du(),a,l,d,m,A,L)}function qM(a,l,d,m,A,L,te){return function(a,l,d,m,A,L,te,le,Ne){const qe=l+d;return Vp(a,qe,A,L,te,le)?zh(a,qe+4,Ne?m.call(Ne,A,L,te,le):m(A,L,te,le)):o0(a,qe+4)}(Fi(),du(),a,l,d,m,A,L,te)}function e2(a,l,d,m,A,L,te,le){const Ne=du()+a,qe=Fi(),Mt=Vp(qe,Ne,d,m,A,L);return rf(qe,Ne+4,te)||Mt?zh(qe,Ne+5,le?l.call(le,d,m,A,L,te):l(d,m,A,L,te)):jm(qe,Ne+5)}function o0(a,l){const d=a[l];return d===_o?void 0:d}function t2(a,l,d,m,A,L){const te=l+d;return rf(a,te,A)?zh(a,te+1,L?m.call(L,A):m(A)):o0(a,te+1)}function n2(a,l,d,m,A,L,te){const le=l+d;return E_(a,le,A,L)?zh(a,le+2,te?m.call(te,A,L):m(A,L)):o0(a,le+2)}function aT(a,l,d,m,A,L,te,le){const Ne=l+d;return Ov(a,Ne,A,L,te)?zh(a,Ne+3,le?m.call(le,A,L,te):m(A,L,te)):o0(a,Ne+3)}function r2(a,l){const d=ua();let m;const A=a+20;d.firstCreatePass?(m=function(a,l){if(l)for(let d=l.length-1;d>=0;d--){const m=l[d];if(a===m.name)return m}throw new ee("302",`The pipe '${a}' could not be found!`)}(l,d.pipeRegistry),d.data[A]=m,m.onDestroy&&(d.destroyHooks||(d.destroyHooks=[])).push(A,m.onDestroy)):m=d.data[A];const L=m.factory||(m.factory=Ro(m.type)),te=Hi(k1);try{const le=qt(!1),Ne=L();return qt(le),function(a,l,d,m){d>=a.data.length&&(a.data[d]=null,a.blueprint[d]=null),l[d]=m}(d,Fi(),A,Ne),Ne}finally{Hi(te)}}function i2(a,l,d){const m=a+20,A=Fi(),L=vs(A,m);return l0(A,a0(A,m)?t2(A,du(),l,L.transform,d,L):L.transform(d))}function Dg(a,l,d,m){const A=a+20,L=Fi(),te=vs(L,A);return l0(L,a0(L,A)?n2(L,du(),l,te.transform,d,m,te):te.transform(d,m))}function o2(a,l,d,m,A){const L=a+20,te=Fi(),le=vs(te,L);return l0(te,a0(te,L)?aT(te,du(),l,le.transform,d,m,A,le):le.transform(d,m,A))}function a0(a,l){return a[1].data[l].pure}function l0(a,l){return _h.isWrapped(l)&&(l=_h.unwrap(l),a[Ar()]=_o),l}function uT(a){return l=>{setTimeout(a,void 0,l)}}const ug=class extends r.xQ{constructor(l=!1){super(),this.__isAsync=l}emit(l){super.next(l)}subscribe(l,d,m){var A,L,te;let le=l,Ne=d||(()=>null),qe=m;if(l&&"object"==typeof l){const an=l;le=null===(A=an.next)||void 0===A?void 0:A.bind(an),Ne=null===(L=an.error)||void 0===L?void 0:L.bind(an),qe=null===(te=an.complete)||void 0===te?void 0:te.bind(an)}this.__isAsync&&(Ne=uT(Ne),le&&(le=uT(le)),qe&&(qe=uT(qe)));const Mt=super.subscribe({next:le,error:Ne,complete:qe});return l instanceof u.w&&l.add(Mt),Mt}};function cm(){return this._results[ng()]()}class jy{constructor(l=!1){this._emitDistinctChangesOnly=l,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const d=ng(),m=jy.prototype;m[d]||(m[d]=cm)}get changes(){return this._changes||(this._changes=new ug)}get(l){return this._results[l]}map(l){return this._results.map(l)}filter(l){return this._results.filter(l)}find(l){return this._results.find(l)}reduce(l,d){return this._results.reduce(l,d)}forEach(l){this._results.forEach(l)}some(l){return this._results.some(l)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(l,d){const m=this;m.dirty=!1;const A=wc(l);(this._changesDetected=!function(a,l,d){if(a.length!==l.length)return!1;for(let m=0;m<a.length;m++){let A=a[m],L=l[m];if(d&&(A=d(A),L=d(L)),L!==A)return!1}return!0}(m._results,A,d))&&(m._results=A,m.length=A.length,m.last=A[this.length-1],m.first=A[0])}notifyOnChanges(){this._changes&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}Symbol;class cT{constructor(l){this.queryList=l,this.matches=null}clone(){return new cT(this.queryList)}setDirty(){this.queryList.setDirty()}}class dm{constructor(l=[]){this.queries=l}createEmbeddedView(l){const d=l.queries;if(null!==d){const m=null!==l.contentQueries?l.contentQueries[0]:d.length,A=[];for(let L=0;L<m;L++){const te=d.getByIndex(L);A.push(this.queries[te.indexInDeclarationView].clone())}return new dm(A)}return null}insertView(l){this.dirtyQueriesWithMatches(l)}detachView(l){this.dirtyQueriesWithMatches(l)}dirtyQueriesWithMatches(l){for(let d=0;d<this.queries.length;d++)null!==d2(l,d).matches&&this.queries[d].setDirty()}}class s2{constructor(l,d,m=null){this.predicate=l,this.flags=d,this.read=m}}class u0{constructor(l=[]){this.queries=l}elementStart(l,d){for(let m=0;m<this.queries.length;m++)this.queries[m].elementStart(l,d)}elementEnd(l){for(let d=0;d<this.queries.length;d++)this.queries[d].elementEnd(l)}embeddedTView(l){let d=null;for(let m=0;m<this.length;m++){const A=null!==d?d.length:0,L=this.getByIndex(m).embeddedTView(l,A);L&&(L.indexInDeclarationView=m,null!==d?d.push(L):d=[L])}return null!==d?new u0(d):null}template(l,d){for(let m=0;m<this.queries.length;m++)this.queries[m].template(l,d)}getByIndex(l){return this.queries[l]}get length(){return this.queries.length}track(l){this.queries.push(l)}}class dT{constructor(l,d=-1){this.metadata=l,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=d}elementStart(l,d){this.isApplyingToNode(d)&&this.matchTNode(l,d)}elementEnd(l){this._declarationNodeIndex===l.index&&(this._appliesToNextNode=!1)}template(l,d){this.elementStart(l,d)}embeddedTView(l,d){return this.isApplyingToNode(l)?(this.crossesNgTemplate=!0,this.addMatch(-l.index,d),new dT(this.metadata)):null}isApplyingToNode(l){if(this._appliesToNextNode&&1!=(1&this.metadata.flags)){const d=this._declarationNodeIndex;let m=l.parent;for(;null!==m&&8&m.type&&m.index!==d;)m=m.parent;return d===(null!==m?m.index:-1)}return this._appliesToNextNode}matchTNode(l,d){const m=this.metadata.predicate;if(Array.isArray(m))for(let A=0;A<m.length;A++){const L=m[A];this.matchTNodeWithReadOption(l,d,fT(d,L)),this.matchTNodeWithReadOption(l,d,Jd(d,l,L,!1,!1))}else m===j1?4&d.type&&this.matchTNodeWithReadOption(l,d,-1):this.matchTNodeWithReadOption(l,d,Jd(d,l,m,!1,!1))}matchTNodeWithReadOption(l,d,m){if(null!==m){const A=this.metadata.read;if(null!==A)if(A===sg||A===Fy||A===j1&&4&d.type)this.addMatch(d.index,-2);else{const L=Jd(d,l,A,!1,!1);null!==L&&this.addMatch(d.index,L)}else this.addMatch(d.index,m)}}addMatch(l,d){null===this.matches?this.matches=[l,d]:this.matches.push(l,d)}}function fT(a,l){const d=a.localNames;if(null!==d)for(let m=0;m<d.length;m+=2)if(d[m]===l)return d[m+1];return null}function c0(a,l,d,m){return-1===d?function(a,l){return 11&a.type?im(a,l):4&a.type?Ly(a,l):null}(l,a):-2===d?function(a,l,d){return d===sg?im(l,a):d===j1?Ly(l,a):d===Fy?EM(l,a):void 0}(a,l,m):Tc(a,a[1],d,l)}function Lu(a,l,d,m){const A=l[19].queries[m];if(null===A.matches){const L=a.data,te=d.matches,le=[];for(let Ne=0;Ne<te.length;Ne+=2){const qe=te[Ne];le.push(qe<0?null:c0(l,L[qe],te[Ne+1],d.metadata.read))}A.matches=le}return A.matches}function pT(a,l,d,m){const A=a.queries.getByIndex(d),L=A.matches;if(null!==L){const te=Lu(a,l,A,d);for(let le=0;le<L.length;le+=2){const Ne=L[le];if(Ne>0)m.push(te[le/2]);else{const qe=L[le+1],Mt=l[-Ne];for(let an=10;an<Mt.length;an++){const _n=Mt[an];_n[17]===_n[3]&&pT(_n[1],_n,qe,m)}if(null!==Mt[9]){const an=Mt[9];for(let _n=0;_n<an.length;_n++){const or=an[_n];pT(or[1],or,qe,m)}}}}}return m}function Su(a){const l=Fi(),d=ua(),m=Ae();ot(m+1);const A=d2(d,m);if(a.dirty&&Ma(l)===(2==(2&A.metadata.flags))){if(null===A.matches)a.reset([]);else{const L=A.crossesNgTemplate?pT(d,l,m,[]):Lu(d,l,A,m);a.reset(L,uM),a.notifyOnChanges()}return!0}return!1}function a2(a,l,d){const m=ua();m.firstCreatePass&&(zp(m,new s2(a,l,d),-1),2==(2&l)&&(m.staticViewQueries=!0)),c2(m,Fi(),l)}function la(a,l,d,m){const A=ua();if(A.firstCreatePass){const L=As();zp(A,new s2(l,d,m),L.index),function(a,l){const d=a.contentQueries||(a.contentQueries=[]);l!==(d.length?d[d.length-1]:-1)&&d.push(a.queries.length-1,l)}(A,a),2==(2&d)&&(A.staticContentQueries=!0)}c2(A,Fi(),d)}function l2(){return a=Fi(),l=Ae(),a[19].queries[l].queryList;var a,l}function c2(a,l,d){const m=new jy(4==(4&d));at(a,l,m,m.destroy),null===l[19]&&(l[19]=new dm),l[19].queries.push(new cT(m))}function zp(a,l,d){null===a.queries&&(a.queries=new u0),a.queries.track(new dT(l,d))}function d2(a,l){return a.queries.getByIndex(l)}function Gy(a,l){return Ly(a,l)}const A2=Mc("Input",a=>({bindingPropertyName:a})),pD=Mc("Output",a=>({bindingPropertyName:a})),TT=new Xl("Application Initializer");let Gv=(()=>{class a{constructor(d){this.appInits=d,this.resolve=Dy,this.reject=Dy,this.initialized=!1,this.done=!1,this.donePromise=new Promise((m,A)=>{this.resolve=m,this.reject=A})}runInitializers(){if(this.initialized)return;const d=[],m=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let A=0;A<this.appInits.length;A++){const L=this.appInits[A]();if($1(L))d.push(L);else if(cE(L)){const te=new Promise((le,Ne)=>{L.subscribe({complete:le,error:Ne})});d.push(te)}}Promise.all(d).then(()=>{m()}).catch(A=>{this.reject(A)}),0===d.length&&m(),this.initialized=!0}}return a.\u0275fac=function(d){return new(d||a)(Rn(TT,8))},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();const D2=new Xl("AppId"),ST={provide:D2,useFactory:function(){return`${cg()}${cg()}${cg()}`},deps:[]};function cg(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const p0=new Xl("Platform Initializer"),CT=new Xl("Platform ID"),MT=new Xl("appBootstrapListener");let Jy=(()=>{class a{log(d){console.log(d)}warn(d){console.warn(d)}}return a.\u0275fac=function(d){return new(d||a)},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();const Qy=new Xl("LocaleId"),OT=new Xl("DefaultCurrencyCode");class dg{constructor(l,d){this.ngModuleFactory=l,this.componentFactories=d}}const fm=function(a){return new r0(a)},ED=fm,P2=function(a){return Promise.resolve(fm(a))},wT=function(a){const l=fm(a),m=yf(zo(a).declarations).reduce((A,L)=>{const te=Mo(L);return te&&A.push(new QM(te)),A},[]);return new dg(l,m)},I2=wT,L2=function(a){return Promise.resolve(wT(a))};let da=(()=>{class a{constructor(){this.compileModuleSync=ED,this.compileModuleAsync=P2,this.compileModuleAndAllComponentsSync=I2,this.compileModuleAndAllComponentsAsync=L2}clearCache(){}clearCacheFor(d){}getModuleId(d){}}return a.\u0275fac=function(d){return new(d||a)},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();const pm=(()=>Promise.resolve(0))();function Ky(a){"undefined"==typeof Zone?pm.then(()=>{a&&a.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",a)}class Np{constructor({enableLongStackTrace:l=!1,shouldCoalesceEventChangeDetection:d=!1,shouldCoalesceRunChangeDetection:m=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ug(!1),this.onMicrotaskEmpty=new ug(!1),this.onStable=new ug(!1),this.onError=new ug(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");Zone.assertZonePatched();const A=this;A._nesting=0,A._outer=A._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(A._inner=A._inner.fork(new Zone.TaskTrackingZoneSpec)),l&&Zone.longStackTraceZoneSpec&&(A._inner=A._inner.fork(Zone.longStackTraceZoneSpec)),A.shouldCoalesceEventChangeDetection=!m&&d,A.shouldCoalesceRunChangeDetection=m,A.lastRequestAnimationFrameId=-1,A.nativeRequestAnimationFrame=function(){let a=Nr.requestAnimationFrame,l=Nr.cancelAnimationFrame;if("undefined"!=typeof Zone&&a&&l){const d=a[Zone.__symbol__("OriginalDelegate")];d&&(a=d);const m=l[Zone.__symbol__("OriginalDelegate")];m&&(l=m)}return{nativeRequestAnimationFrame:a,nativeCancelAnimationFrame:l}}().nativeRequestAnimationFrame,function(a){const l=()=>{!function(a){a.isCheckStableRunning||-1!==a.lastRequestAnimationFrameId||(a.lastRequestAnimationFrameId=a.nativeRequestAnimationFrame.call(Nr,()=>{a.fakeTopEventTask||(a.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{a.lastRequestAnimationFrameId=-1,DT(a),a.isCheckStableRunning=!0,Wv(a),a.isCheckStableRunning=!1},void 0,()=>{},()=>{})),a.fakeTopEventTask.invoke()}),DT(a))}(a)};a._inner=a._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(d,m,A,L,te,le)=>{try{return k2(a),d.invokeTask(A,L,te,le)}finally{(a.shouldCoalesceEventChangeDetection&&"eventTask"===L.type||a.shouldCoalesceRunChangeDetection)&&l(),$2(a)}},onInvoke:(d,m,A,L,te,le,Ne)=>{try{return k2(a),d.invoke(A,L,te,le,Ne)}finally{a.shouldCoalesceRunChangeDetection&&l(),$2(a)}},onHasTask:(d,m,A,L)=>{d.hasTask(A,L),m===A&&("microTask"==L.change?(a._hasPendingMicrotasks=L.microTask,DT(a),Wv(a)):"macroTask"==L.change&&(a.hasPendingMacrotasks=L.macroTask))},onHandleError:(d,m,A,L)=>(d.handleError(A,L),a.runOutsideAngular(()=>a.onError.emit(L)),!1)})}(A)}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Np.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(Np.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(l,d,m){return this._inner.run(l,d,m)}runTask(l,d,m,A){const L=this._inner,te=L.scheduleEventTask("NgZoneEvent: "+A,l,of,Dy,Dy);try{return L.runTask(te,d,m)}finally{L.cancelTask(te)}}runGuarded(l,d,m){return this._inner.runGuarded(l,d,m)}runOutsideAngular(l){return this._outer.run(l)}}const of={};function Wv(a){if(0==a._nesting&&!a.hasPendingMicrotasks&&!a.isStable)try{a._nesting++,a.onMicrotaskEmpty.emit(null)}finally{if(a._nesting--,!a.hasPendingMicrotasks)try{a.runOutsideAngular(()=>a.onStable.emit(null))}finally{a.isStable=!0}}}function DT(a){a.hasPendingMicrotasks=!!(a._hasPendingMicrotasks||(a.shouldCoalesceEventChangeDetection||a.shouldCoalesceRunChangeDetection)&&-1!==a.lastRequestAnimationFrameId)}function k2(a){a._nesting++,a.isStable&&(a.isStable=!1,a.onUnstable.emit(null))}function $2(a){a._nesting--,Wv(a)}class SD{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ug,this.onMicrotaskEmpty=new ug,this.onStable=new ug,this.onError=new ug}run(l,d,m){return l.apply(d,m)}runGuarded(l,d,m){return l.apply(d,m)}runOutsideAngular(l){return l()}runTask(l,d,m,A){return l.apply(d,m)}}let RT=(()=>{class a{constructor(d){this._ngZone=d,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),d.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Np.assertNotInAngularZone(),Ky(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Ky(()=>{for(;0!==this._callbacks.length;){let d=this._callbacks.pop();clearTimeout(d.timeoutId),d.doneCb(this._didWork)}this._didWork=!1});else{let d=this.getPendingTasks();this._callbacks=this._callbacks.filter(m=>!m.updateCb||!m.updateCb(d)||(clearTimeout(m.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(d=>({source:d.source,creationLocation:d.creationLocation,data:d.data})):[]}addCallback(d,m,A){let L=-1;m&&m>0&&(L=setTimeout(()=>{this._callbacks=this._callbacks.filter(te=>te.timeoutId!==L),d(this._didWork,this.getPendingTasks())},m)),this._callbacks.push({doneCb:d,timeoutId:L,updateCb:A})}whenStable(d,m,A){if(A&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(d,m,A),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(d,m,A){return[]}}return a.\u0275fac=function(d){return new(d||a)(Rn(Np))},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})(),H2=(()=>{class a{constructor(){this._applications=new Map,NT.addToWindow(this)}registerApplication(d,m){this._applications.set(d,m)}unregisterApplication(d){this._applications.delete(d)}unregisterAllApplications(){this._applications.clear()}getTestability(d){return this._applications.get(d)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(d,m=!0){return NT.findTestabilityInTree(this,d,m)}}return a.\u0275fac=function(d){return new(d||a)},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();class CD{addToWindow(l){}findTestabilityInTree(l,d,m){return null}}function MD(a){NT=a}let NT=new CD,Km=!0,U2=!1;function qy(){return U2=!0,Km}function AD(){if(U2)throw new Error("Cannot enable prod mode after platform setup.");Km=!1}let O_;const Z2=new Xl("AllowMultipleToken");class RD{constructor(l,d){this.name=l,this.token=d}}function tb(a,l,d=[]){const m=`Platform: ${l}`,A=new Xl(m);return(L=[])=>{let te=j2();if(!te||te.injector.get(Z2,!1))if(a)a(d.concat(L).concat({provide:A,useValue:!0}));else{const le=d.concat(L).concat({provide:A,useValue:!0},{provide:Hm,useValue:"platform"});!function(a){if(O_&&!O_.destroyed&&!O_.injector.get(Z2,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");O_=a.get(G2);const l=a.get(p0,null);l&&l.forEach(d=>d())}(Gu.create({providers:le,name:m}))}return function(a){const l=j2();if(!l)throw new Error("No platform exists!");if(!l.injector.get(a,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return l}(A)}}function j2(){return O_&&!O_.destroyed?O_:null}let G2=(()=>{class a{constructor(d){this._injector=d,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(d,m){const le=function(a,l){let d;return d="noop"===a?new SD:("zone.js"===a?void 0:a)||new Np({enableLongStackTrace:qy(),shouldCoalesceEventChangeDetection:!!(null==l?void 0:l.ngZoneEventCoalescing),shouldCoalesceRunChangeDetection:!!(null==l?void 0:l.ngZoneRunCoalescing)}),d}(m?m.ngZone:void 0,{ngZoneEventCoalescing:m&&m.ngZoneEventCoalescing||!1,ngZoneRunCoalescing:m&&m.ngZoneRunCoalescing||!1}),Ne=[{provide:Np,useValue:le}];return le.run(()=>{const qe=Gu.create({providers:Ne,parent:this.injector,name:d.moduleType.name}),Mt=d.create(qe),an=Mt.injector.get(Zf,null);if(!an)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return le.runOutsideAngular(()=>{const _n=le.onError.subscribe({next:or=>{an.handleError(or)}});Mt.onDestroy(()=>{IT(this._modules,Mt),_n.unsubscribe()})}),function(a,l,d){try{const m=d();return $1(m)?m.catch(A=>{throw l.runOutsideAngular(()=>a.handleError(A)),A}):m}catch(m){throw l.runOutsideAngular(()=>a.handleError(m)),m}}(an,le,()=>{const _n=Mt.injector.get(Gv);return _n.runInitializers(),_n.donePromise.then(()=>(AE(Mt.injector.get(Qy,Cy)||Cy),this._moduleDoBootstrap(Mt),Mt))})})}bootstrapModule(d,m=[]){const A=g0({},m);return function(a,l,d){const m=new r0(d);return Promise.resolve(m)}(0,0,d).then(L=>this.bootstrapModuleFactory(L,A))}_moduleDoBootstrap(d){const m=d.injector.get(m0);if(d._bootstrapComponents.length>0)d._bootstrapComponents.forEach(A=>m.bootstrap(A));else{if(!d.instance.ngDoBootstrap)throw new Error(`The module ${T(d.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);d.instance.ngDoBootstrap(m)}this._modules.push(d)}onDestroy(d){this._destroyListeners.push(d)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(d=>d.destroy()),this._destroyListeners.forEach(d=>d()),this._destroyed=!0}get destroyed(){return this._destroyed}}return a.\u0275fac=function(d){return new(d||a)(Rn(Gu))},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();function g0(a,l){return Array.isArray(l)?l.reduce(g0,a):Object.assign(Object.assign({},a),l)}let m0=(()=>{class a{constructor(d,m,A,L,te){this._zone=d,this._injector=m,this._exceptionHandler=A,this._componentFactoryResolver=L,this._initStatus=te,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const le=new p.y(qe=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{qe.next(this._stable),qe.complete()})}),Ne=new p.y(qe=>{let Mt;this._zone.runOutsideAngular(()=>{Mt=this._zone.onStable.subscribe(()=>{Np.assertNotInAngularZone(),Ky(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,qe.next(!0))})})});const an=this._zone.onUnstable.subscribe(()=>{Np.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{qe.next(!1)}))});return()=>{Mt.unsubscribe(),an.unsubscribe()}});this.isStable=(0,f.T)(le,Ne.pipe((0,e.B)()))}bootstrap(d,m){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let A;A=d instanceof iM?d:this._componentFactoryResolver.resolveComponentFactory(d),this.componentTypes.push(A.componentType);const L=function(a){return a.isBoundToModule}(A)?void 0:this._injector.get(Wm),le=A.create(Gu.NULL,[],m||A.selector,L),Ne=le.location.nativeElement,qe=le.injector.get(RT,null),Mt=qe&&le.injector.get(H2);return qe&&Mt&&Mt.registerApplication(Ne,qe),le.onDestroy(()=>{this.detachView(le.hostView),IT(this.components,le),Mt&&Mt.unregisterApplication(Ne)}),this._loadComponent(le),le}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;for(let d of this._views)d.detectChanges()}catch(d){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(d))}finally{this._runningTick=!1}}attachView(d){const m=d;this._views.push(m),m.attachToAppRef(this)}detachView(d){const m=d;IT(this._views,m),m.detachFromAppRef()}_loadComponent(d){this.attachView(d.hostView),this.tick(),this.components.push(d),this._injector.get(MT,[]).concat(this._bootstrapListeners).forEach(A=>A(d))}ngOnDestroy(){this._views.slice().forEach(d=>d.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}get viewCount(){return this._views.length}}return a.\u0275fac=function(d){return new(d||a)(Rn(Np),Rn(Gu),Rn(Zf),Rn(kv),Rn(Gv))},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();function IT(a,l){const d=a.indexOf(l);d>-1&&a.splice(d,1)}class W2{}class $D{}const HD={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};let UD=(()=>{class a{constructor(d,m){this._compiler=d,this._config=m||HD}load(d){return this.loadAndCompile(d)}loadAndCompile(d){let[m,A]=d.split("#");return void 0===A&&(A="default"),i(98255)(m).then(L=>L[A]).then(L=>Q2(L,m,A)).then(L=>this._compiler.compileModuleAsync(L))}loadFactory(d){let[m,A]=d.split("#"),L="NgFactory";return void 0===A&&(A="default",L=""),i(98255)(this._config.factoryPathPrefix+m+this._config.factoryPathSuffix).then(te=>te[A+L]).then(te=>Q2(te,m,A))}}return a.\u0275fac=function(d){return new(d||a)(Rn(da),Rn($D,8))},a.\u0275prov=Dt({token:a,factory:a.\u0275fac}),a})();function Q2(a,l,d){if(!a)throw new Error(`Cannot find '${d}' in '${l}'`);return a}const GD=function(a){return null},WD=tb(null,"core",[{provide:CT,useValue:"unknown"},{provide:G2,deps:[Gu]},{provide:H2,deps:[]},{provide:Jy,deps:[]}]),KD=[{provide:m0,useClass:m0,deps:[Np,Gu,Zf,kv,Gv]},{provide:Nx,deps:[Np],useFactory:function(a){let l=[];return a.onStable.subscribe(()=>{for(;l.length;)l.pop()()}),function(d){l.push(d)}}},{provide:Gv,useClass:Gv,deps:[[new sa,TT]]},{provide:da,useClass:da,deps:[]},ST,{provide:Ny,useFactory:function(){return Zw},deps:[]},{provide:Py,useFactory:function(){return jw},deps:[]},{provide:Qy,useFactory:function(a){return AE(a=a||"undefined"!=typeof $localize&&$localize.locale||Cy),a},deps:[[new ga(Qy),new sa,new ol]]},{provide:OT,useValue:"USD"}];let e3=(()=>{class a{constructor(d){}}return a.\u0275fac=function(d){return new(d||a)(Rn(m0))},a.\u0275mod=wn({type:a}),a.\u0275inj=Yn({providers:KD}),a})()},24751:(v,S,i)=>{"use strict";i.d(S,{TO:()=>ai,Wl:()=>R,gN:()=>wr,Fj:()=>Q,Oe:()=>yr,CE:()=>gs,qu:()=>Nt,NI:()=>Zn,u:()=>Qs,cw:()=>cr,sg:()=>fo,x0:()=>Ao,u5:()=>Cu,Fd:()=>fi,qQ:()=>os,Cf:()=>ae,JU:()=>T,a5:()=>Qr,JJ:()=>Zr,JL:()=>Ur,F:()=>Ti,On:()=>Cn,YN:()=>Co,wV:()=>Wo,_:()=>qo,UX:()=>jl,Q7:()=>To,EJ:()=>ms,kI:()=>ve,_Y:()=>br,Kr:()=>$e});var r=i(74788),u=i(12057),p=i(94402),f=i(35758),e=i(88002);let _=(()=>{class Te{constructor(De,Tt){this._renderer=De,this._elementRef=Tt,this.onChange=dr=>{},this.onTouched=()=>{}}setProperty(De,Tt){this._renderer.setProperty(this._elementRef.nativeElement,De,Tt)}registerOnTouched(De){this.onTouched=De}registerOnChange(De){this.onChange=De}setDisabledState(De){this.setProperty("disabled",De)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(r.Qsj),r.Y36(r.SBq))},Te.\u0275dir=r.lG2({type:Te}),Te})(),y=(()=>{class Te extends _{}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,features:[r.qOj]}),Te})();const T=new r.OlP("NgValueAccessor"),M={provide:T,useExisting:(0,r.Gpc)(()=>R),multi:!0};let R=(()=>{class Te extends y{writeValue(De){this.setProperty("checked",De)}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("change",function(Qi){return Tt.onChange(Qi.target.checked)})("blur",function(){return Tt.onTouched()})},features:[r._Bn([M]),r.qOj]}),Te})();const F={provide:T,useExisting:(0,r.Gpc)(()=>Q),multi:!0},J=new r.OlP("CompositionEventMode");let Q=(()=>{class Te extends _{constructor(De,Tt,dr){super(De,Tt),this._compositionMode=dr,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const Te=(0,u.q)()?(0,u.q)().getUserAgent():"";return/android (\d+)/.test(Te.toLowerCase())}())}writeValue(De){this.setProperty("value",null==De?"":De)}_handleInput(De){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(De)}_compositionStart(){this._composing=!0}_compositionEnd(De){this._composing=!1,this._compositionMode&&this.onChange(De)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(r.Qsj),r.Y36(r.SBq),r.Y36(J,8))},Te.\u0275dir=r.lG2({type:Te,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("input",function(Qi){return Tt._handleInput(Qi.target.value)})("blur",function(){return Tt.onTouched()})("compositionstart",function(){return Tt._compositionStart()})("compositionend",function(Qi){return Tt._compositionEnd(Qi.target.value)})},features:[r._Bn([F]),r.qOj]}),Te})();function ee(Te){return null==Te||0===Te.length}function ue(Te){return null!=Te&&"number"==typeof Te.length}const ae=new r.OlP("NgValidators"),$=new r.OlP("NgAsyncValidators"),se=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[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])?)*$/;class ve{static min(Me){return oe(Me)}static max(Me){return he(Me)}static required(Me){return me(Me)}static requiredTrue(Me){return!0===Me.value?null:{required:!0}}static email(Me){return ee((Te=Me).value)||se.test(Te.value)?null:{email:!0};var Te}static minLength(Me){return Te=Me,Me=>ee(Me.value)||!ue(Me.value)?null:Me.value.length<Te?{minlength:{requiredLength:Te,actualLength:Me.value.length}}:null;var Te}static maxLength(Me){return Te=Me,Me=>ue(Me.value)&&Me.value.length>Te?{maxlength:{requiredLength:Te,actualLength:Me.value.length}}:null;var Te}static pattern(Me){return function(Te){if(!Te)return je;let Me,De;return"string"==typeof Te?(De="","^"!==Te.charAt(0)&&(De+="^"),De+=Te,"$"!==Te.charAt(Te.length-1)&&(De+="$"),Me=new RegExp(De)):(De=Te.toString(),Me=Te),Tt=>{if(ee(Tt.value))return null;const dr=Tt.value;return Me.test(dr)?null:{pattern:{requiredPattern:De,actualValue:dr}}}}(Me)}static nullValidator(Me){return null}static compose(Me){return $t(Me)}static composeAsync(Me){return Ut(Me)}}function oe(Te){return Me=>{if(ee(Me.value)||ee(Te))return null;const De=parseFloat(Me.value);return!isNaN(De)&&De<Te?{min:{min:Te,actual:Me.value}}:null}}function he(Te){return Me=>{if(ee(Me.value)||ee(Te))return null;const De=parseFloat(Me.value);return!isNaN(De)&&De>Te?{max:{max:Te,actual:Me.value}}:null}}function me(Te){return ee(Te.value)?{required:!0}:null}function je(Te){return null}function Ie(Te){return null!=Te}function Ve(Te){const Me=(0,r.QGY)(Te)?(0,p.D)(Te):Te;return(0,r.CqO)(Me),Me}function He(Te){let Me={};return Te.forEach(De=>{Me=null!=De?Object.assign(Object.assign({},Me),De):Me}),0===Object.keys(Me).length?null:Me}function Zt(Te,Me){return Me.map(De=>De(Te))}function en(Te){return Te.map(Me=>function(Te){return!Te.validate}(Me)?Me:De=>Me.validate(De))}function $t(Te){if(!Te)return null;const Me=Te.filter(Ie);return 0==Me.length?null:function(De){return He(Zt(De,Me))}}function Gt(Te){return null!=Te?$t(en(Te)):null}function Ut(Te){if(!Te)return null;const Me=Te.filter(Ie);return 0==Me.length?null:function(De){const Tt=Zt(De,Me).map(Ve);return(0,f.D)(Tt).pipe((0,e.U)(He))}}function Bt(Te){return null!=Te?Ut(en(Te)):null}function mt(Te,Me){return null===Te?[Me]:Array.isArray(Te)?[...Te,Me]:[Te,Me]}function Yt(Te){return Te._rawValidators}function Dt(Te){return Te._rawAsyncValidators}function zt(Te){return Te?Array.isArray(Te)?Te:[Te]:[]}function Yn(Te,Me){return Array.isArray(Te)?Te.includes(Me):Te===Me}function Hr(Te,Me){const De=zt(Me);return zt(Te).forEach(dr=>{Yn(De,dr)||De.push(dr)}),De}function ci(Te,Me){return zt(Me).filter(De=>!Yn(Te,De))}let Ir=(()=>{class Te{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(De){this._rawValidators=De||[],this._composedValidatorFn=Gt(this._rawValidators)}_setAsyncValidators(De){this._rawAsyncValidators=De||[],this._composedAsyncValidatorFn=Bt(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(De){this._onDestroyCallbacks.push(De)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(De=>De()),this._onDestroyCallbacks=[]}reset(De){this.control&&this.control.reset(De)}hasError(De,Tt){return!!this.control&&this.control.hasError(De,Tt)}getError(De,Tt){return this.control?this.control.getError(De,Tt):null}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275dir=r.lG2({type:Te}),Te})(),wr=(()=>{class Te extends Ir{get formDirective(){return null}get path(){return null}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,features:[r.qOj]}),Te})();class Qr extends Ir{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class Kr{constructor(Me){this._cd=Me}is(Me){var De,Tt,dr;return"submitted"===Me?!!(null===(De=this._cd)||void 0===De?void 0:De.submitted):!!(null===(dr=null===(Tt=this._cd)||void 0===Tt?void 0:Tt.control)||void 0===dr?void 0:dr[Me])}}let Zr=(()=>{class Te extends Kr{constructor(De){super(De)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(Qr,2))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(De,Tt){2&De&&r.ekj("ng-untouched",Tt.is("untouched"))("ng-touched",Tt.is("touched"))("ng-pristine",Tt.is("pristine"))("ng-dirty",Tt.is("dirty"))("ng-valid",Tt.is("valid"))("ng-invalid",Tt.is("invalid"))("ng-pending",Tt.is("pending"))},features:[r.qOj]}),Te})(),Ur=(()=>{class Te extends Kr{constructor(De){super(De)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(wr,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(De,Tt){2&De&&r.ekj("ng-untouched",Tt.is("untouched"))("ng-touched",Tt.is("touched"))("ng-pristine",Tt.is("pristine"))("ng-dirty",Tt.is("dirty"))("ng-valid",Tt.is("valid"))("ng-invalid",Tt.is("invalid"))("ng-pending",Tt.is("pending"))("ng-submitted",Tt.is("submitted"))},features:[r.qOj]}),Te})();function Ai(Te,Me){return[...Me.path,Te]}function Tr(Te,Me){mr(Te,Me),Me.valueAccessor.writeValue(Te.value),function(Te,Me){Me.valueAccessor.registerOnChange(De=>{Te._pendingValue=De,Te._pendingChange=!0,Te._pendingDirty=!0,"change"===Te.updateOn&&si(Te,Me)})}(Te,Me),function(Te,Me){const De=(Tt,dr)=>{Me.valueAccessor.writeValue(Tt),dr&&Me.viewToModelUpdate(Tt)};Te.registerOnChange(De),Me._registerOnDestroy(()=>{Te._unregisterOnChange(De)})}(Te,Me),function(Te,Me){Me.valueAccessor.registerOnTouched(()=>{Te._pendingTouched=!0,"blur"===Te.updateOn&&Te._pendingChange&&si(Te,Me),"submit"!==Te.updateOn&&Te.markAsTouched()})}(Te,Me),function(Te,Me){if(Me.valueAccessor.setDisabledState){const De=Tt=>{Me.valueAccessor.setDisabledState(Tt)};Te.registerOnDisabledChange(De),Me._registerOnDestroy(()=>{Te._unregisterOnDisabledChange(De)})}}(Te,Me)}function Nr(Te,Me,De=!0){const Tt=()=>{};Me.valueAccessor&&(Me.valueAccessor.registerOnChange(Tt),Me.valueAccessor.registerOnTouched(Tt)),Xt(Te,Me),Te&&(Me._invokeOnDestroyCallbacks(),Te._registerOnCollectionChange(()=>{}))}function gn(Te,Me){Te.forEach(De=>{De.registerOnValidatorChange&&De.registerOnValidatorChange(Me)})}function mr(Te,Me){const De=Yt(Te);null!==Me.validator?Te.setValidators(mt(De,Me.validator)):"function"==typeof De&&Te.setValidators([De]);const Tt=Dt(Te);null!==Me.asyncValidator?Te.setAsyncValidators(mt(Tt,Me.asyncValidator)):"function"==typeof Tt&&Te.setAsyncValidators([Tt]);const dr=()=>Te.updateValueAndValidity();gn(Me._rawValidators,dr),gn(Me._rawAsyncValidators,dr)}function Xt(Te,Me){let De=!1;if(null!==Te){if(null!==Me.validator){const dr=Yt(Te);if(Array.isArray(dr)&&dr.length>0){const Qi=dr.filter(Jo=>Jo!==Me.validator);Qi.length!==dr.length&&(De=!0,Te.setValidators(Qi))}}if(null!==Me.asyncValidator){const dr=Dt(Te);if(Array.isArray(dr)&&dr.length>0){const Qi=dr.filter(Jo=>Jo!==Me.asyncValidator);Qi.length!==dr.length&&(De=!0,Te.setAsyncValidators(Qi))}}}const Tt=()=>{};return gn(Me._rawValidators,Tt),gn(Me._rawAsyncValidators,Tt),De}function si(Te,Me){Te._pendingDirty&&Te.markAsDirty(),Te.setValue(Te._pendingValue,{emitModelToViewChange:!1}),Me.viewToModelUpdate(Te._pendingValue),Te._pendingChange=!1}function no(Te,Me){mr(Te,Me)}function jt(Te,Me){if(!Te.hasOwnProperty("model"))return!1;const De=Te.model;return!!De.isFirstChange()||!Object.is(Me,De.currentValue)}function mn(Te,Me){Te._syncPendingControls(),Me.forEach(De=>{const Tt=De.control;"submit"===Tt.updateOn&&Tt._pendingChange&&(De.viewToModelUpdate(Tt._pendingValue),Tt._pendingChange=!1)})}function Wn(Te,Me){if(!Me)return null;let De,Tt,dr;return Array.isArray(Me),Me.forEach(Qi=>{Qi.constructor===Q?De=Qi:function(Te){return Object.getPrototypeOf(Te.constructor)===y}(Qi)?Tt=Qi:dr=Qi}),dr||Tt||De||null}function kn(Te,Me){const De=Te.indexOf(Me);De>-1&&Te.splice(De,1)}const nr="VALID",Gi="INVALID",po="PENDING",yo="DISABLED";function Vi(Te){return(Si(Te)?Te.validators:Te)||null}function cs(Te){return Array.isArray(Te)?Gt(Te):Te||null}function zo(Te,Me){return(Si(Me)?Me.asyncValidators:Te)||null}function So(Te){return Array.isArray(Te)?Bt(Te):Te||null}function Si(Te){return null!=Te&&!Array.isArray(Te)&&"object"==typeof Te}class ai{constructor(Me,De){this._hasOwnPendingAsyncValidator=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=Me,this._rawAsyncValidators=De,this._composedValidatorFn=cs(this._rawValidators),this._composedAsyncValidatorFn=So(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(Me){this._rawValidators=this._composedValidatorFn=Me}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(Me){this._rawAsyncValidators=this._composedAsyncValidatorFn=Me}get parent(){return this._parent}get valid(){return this.status===nr}get invalid(){return this.status===Gi}get pending(){return this.status==po}get disabled(){return this.status===yo}get enabled(){return this.status!==yo}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(Me){this._rawValidators=Me,this._composedValidatorFn=cs(Me)}setAsyncValidators(Me){this._rawAsyncValidators=Me,this._composedAsyncValidatorFn=So(Me)}addValidators(Me){this.setValidators(Hr(Me,this._rawValidators))}addAsyncValidators(Me){this.setAsyncValidators(Hr(Me,this._rawAsyncValidators))}removeValidators(Me){this.setValidators(ci(Me,this._rawValidators))}removeAsyncValidators(Me){this.setAsyncValidators(ci(Me,this._rawAsyncValidators))}hasValidator(Me){return Yn(this._rawValidators,Me)}hasAsyncValidator(Me){return Yn(this._rawAsyncValidators,Me)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(Me={}){this.touched=!0,this._parent&&!Me.onlySelf&&this._parent.markAsTouched(Me)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(Me=>Me.markAllAsTouched())}markAsUntouched(Me={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(De=>{De.markAsUntouched({onlySelf:!0})}),this._parent&&!Me.onlySelf&&this._parent._updateTouched(Me)}markAsDirty(Me={}){this.pristine=!1,this._parent&&!Me.onlySelf&&this._parent.markAsDirty(Me)}markAsPristine(Me={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(De=>{De.markAsPristine({onlySelf:!0})}),this._parent&&!Me.onlySelf&&this._parent._updatePristine(Me)}markAsPending(Me={}){this.status=po,!1!==Me.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!Me.onlySelf&&this._parent.markAsPending(Me)}disable(Me={}){const De=this._parentMarkedDirty(Me.onlySelf);this.status=yo,this.errors=null,this._forEachChild(Tt=>{Tt.disable(Object.assign(Object.assign({},Me),{onlySelf:!0}))}),this._updateValue(),!1!==Me.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},Me),{skipPristineCheck:De})),this._onDisabledChange.forEach(Tt=>Tt(!0))}enable(Me={}){const De=this._parentMarkedDirty(Me.onlySelf);this.status=nr,this._forEachChild(Tt=>{Tt.enable(Object.assign(Object.assign({},Me),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:Me.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},Me),{skipPristineCheck:De})),this._onDisabledChange.forEach(Tt=>Tt(!1))}_updateAncestors(Me){this._parent&&!Me.onlySelf&&(this._parent.updateValueAndValidity(Me),Me.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(Me){this._parent=Me}updateValueAndValidity(Me={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===nr||this.status===po)&&this._runAsyncValidator(Me.emitEvent)),!1!==Me.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!Me.onlySelf&&this._parent.updateValueAndValidity(Me)}_updateTreeValidity(Me={emitEvent:!0}){this._forEachChild(De=>De._updateTreeValidity(Me)),this.updateValueAndValidity({onlySelf:!0,emitEvent:Me.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?yo:nr}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(Me){if(this.asyncValidator){this.status=po,this._hasOwnPendingAsyncValidator=!0;const De=Ve(this.asyncValidator(this));this._asyncValidationSubscription=De.subscribe(Tt=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(Tt,{emitEvent:Me})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(Me,De={}){this.errors=Me,this._updateControlsErrors(!1!==De.emitEvent)}get(Me){return function(Te,Me,De){if(null==Me||(Array.isArray(Me)||(Me=Me.split(".")),Array.isArray(Me)&&0===Me.length))return null;let Tt=Te;return Me.forEach(dr=>{Tt=Tt instanceof cr?Tt.controls.hasOwnProperty(dr)?Tt.controls[dr]:null:Tt instanceof yr&&Tt.at(dr)||null}),Tt}(this,Me)}getError(Me,De){const Tt=De?this.get(De):this;return Tt&&Tt.errors?Tt.errors[Me]:null}hasError(Me,De){return!!this.getError(Me,De)}get root(){let Me=this;for(;Me._parent;)Me=Me._parent;return Me}_updateControlsErrors(Me){this.status=this._calculateStatus(),Me&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(Me)}_initObservables(){this.valueChanges=new r.vpe,this.statusChanges=new r.vpe}_calculateStatus(){return this._allControlsDisabled()?yo:this.errors?Gi:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(po)?po:this._anyControlsHaveStatus(Gi)?Gi:nr}_anyControlsHaveStatus(Me){return this._anyControls(De=>De.status===Me)}_anyControlsDirty(){return this._anyControls(Me=>Me.dirty)}_anyControlsTouched(){return this._anyControls(Me=>Me.touched)}_updatePristine(Me={}){this.pristine=!this._anyControlsDirty(),this._parent&&!Me.onlySelf&&this._parent._updatePristine(Me)}_updateTouched(Me={}){this.touched=this._anyControlsTouched(),this._parent&&!Me.onlySelf&&this._parent._updateTouched(Me)}_isBoxedValue(Me){return"object"==typeof Me&&null!==Me&&2===Object.keys(Me).length&&"value"in Me&&"disabled"in Me}_registerOnCollectionChange(Me){this._onCollectionChange=Me}_setUpdateStrategy(Me){Si(Me)&&null!=Me.updateOn&&(this._updateOn=Me.updateOn)}_parentMarkedDirty(Me){return!Me&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}}class Zn extends ai{constructor(Me=null,De,Tt){super(Vi(De),zo(Tt,De)),this._onChange=[],this._applyFormState(Me),this._setUpdateStrategy(De),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}setValue(Me,De={}){this.value=this._pendingValue=Me,this._onChange.length&&!1!==De.emitModelToViewChange&&this._onChange.forEach(Tt=>Tt(this.value,!1!==De.emitViewToModelChange)),this.updateValueAndValidity(De)}patchValue(Me,De={}){this.setValue(Me,De)}reset(Me=null,De={}){this._applyFormState(Me),this.markAsPristine(De),this.markAsUntouched(De),this.setValue(this.value,De),this._pendingChange=!1}_updateValue(){}_anyControls(Me){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(Me){this._onChange.push(Me)}_unregisterOnChange(Me){kn(this._onChange,Me)}registerOnDisabledChange(Me){this._onDisabledChange.push(Me)}_unregisterOnDisabledChange(Me){kn(this._onDisabledChange,Me)}_forEachChild(Me){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(Me){this._isBoxedValue(Me)?(this.value=this._pendingValue=Me.value,Me.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=Me}}class cr extends ai{constructor(Me,De,Tt){super(Vi(De),zo(Tt,De)),this.controls=Me,this._initObservables(),this._setUpdateStrategy(De),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(Me,De){return this.controls[Me]?this.controls[Me]:(this.controls[Me]=De,De.setParent(this),De._registerOnCollectionChange(this._onCollectionChange),De)}addControl(Me,De,Tt={}){this.registerControl(Me,De),this.updateValueAndValidity({emitEvent:Tt.emitEvent}),this._onCollectionChange()}removeControl(Me,De={}){this.controls[Me]&&this.controls[Me]._registerOnCollectionChange(()=>{}),delete this.controls[Me],this.updateValueAndValidity({emitEvent:De.emitEvent}),this._onCollectionChange()}setControl(Me,De,Tt={}){this.controls[Me]&&this.controls[Me]._registerOnCollectionChange(()=>{}),delete this.controls[Me],De&&this.registerControl(Me,De),this.updateValueAndValidity({emitEvent:Tt.emitEvent}),this._onCollectionChange()}contains(Me){return this.controls.hasOwnProperty(Me)&&this.controls[Me].enabled}setValue(Me,De={}){this._checkAllValuesPresent(Me),Object.keys(Me).forEach(Tt=>{this._throwIfControlMissing(Tt),this.controls[Tt].setValue(Me[Tt],{onlySelf:!0,emitEvent:De.emitEvent})}),this.updateValueAndValidity(De)}patchValue(Me,De={}){null!=Me&&(Object.keys(Me).forEach(Tt=>{this.controls[Tt]&&this.controls[Tt].patchValue(Me[Tt],{onlySelf:!0,emitEvent:De.emitEvent})}),this.updateValueAndValidity(De))}reset(Me={},De={}){this._forEachChild((Tt,dr)=>{Tt.reset(Me[dr],{onlySelf:!0,emitEvent:De.emitEvent})}),this._updatePristine(De),this._updateTouched(De),this.updateValueAndValidity(De)}getRawValue(){return this._reduceChildren({},(Me,De,Tt)=>(Me[Tt]=De instanceof Zn?De.value:De.getRawValue(),Me))}_syncPendingControls(){let Me=this._reduceChildren(!1,(De,Tt)=>!!Tt._syncPendingControls()||De);return Me&&this.updateValueAndValidity({onlySelf:!0}),Me}_throwIfControlMissing(Me){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet. If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[Me])throw new Error(`Cannot find form control with name: ${Me}.`)}_forEachChild(Me){Object.keys(this.controls).forEach(De=>{const Tt=this.controls[De];Tt&&Me(Tt,De)})}_setUpControls(){this._forEachChild(Me=>{Me.setParent(this),Me._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(Me){for(const De of Object.keys(this.controls)){const Tt=this.controls[De];if(this.contains(De)&&Me(Tt))return!0}return!1}_reduceValue(){return this._reduceChildren({},(Me,De,Tt)=>((De.enabled||this.disabled)&&(Me[Tt]=De.value),Me))}_reduceChildren(Me,De){let Tt=Me;return this._forEachChild((dr,Qi)=>{Tt=De(Tt,dr,Qi)}),Tt}_allControlsDisabled(){for(const Me of Object.keys(this.controls))if(this.controls[Me].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(Me){this._forEachChild((De,Tt)=>{if(void 0===Me[Tt])throw new Error(`Must supply a value for form control with name: '${Tt}'.`)})}}class yr extends ai{constructor(Me,De,Tt){super(Vi(De),zo(Tt,De)),this.controls=Me,this._initObservables(),this._setUpdateStrategy(De),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(Me){return this.controls[Me]}push(Me,De={}){this.controls.push(Me),this._registerControl(Me),this.updateValueAndValidity({emitEvent:De.emitEvent}),this._onCollectionChange()}insert(Me,De,Tt={}){this.controls.splice(Me,0,De),this._registerControl(De),this.updateValueAndValidity({emitEvent:Tt.emitEvent})}removeAt(Me,De={}){this.controls[Me]&&this.controls[Me]._registerOnCollectionChange(()=>{}),this.controls.splice(Me,1),this.updateValueAndValidity({emitEvent:De.emitEvent})}setControl(Me,De,Tt={}){this.controls[Me]&&this.controls[Me]._registerOnCollectionChange(()=>{}),this.controls.splice(Me,1),De&&(this.controls.splice(Me,0,De),this._registerControl(De)),this.updateValueAndValidity({emitEvent:Tt.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(Me,De={}){this._checkAllValuesPresent(Me),Me.forEach((Tt,dr)=>{this._throwIfControlMissing(dr),this.at(dr).setValue(Tt,{onlySelf:!0,emitEvent:De.emitEvent})}),this.updateValueAndValidity(De)}patchValue(Me,De={}){null!=Me&&(Me.forEach((Tt,dr)=>{this.at(dr)&&this.at(dr).patchValue(Tt,{onlySelf:!0,emitEvent:De.emitEvent})}),this.updateValueAndValidity(De))}reset(Me=[],De={}){this._forEachChild((Tt,dr)=>{Tt.reset(Me[dr],{onlySelf:!0,emitEvent:De.emitEvent})}),this._updatePristine(De),this._updateTouched(De),this.updateValueAndValidity(De)}getRawValue(){return this.controls.map(Me=>Me instanceof Zn?Me.value:Me.getRawValue())}clear(Me={}){this.controls.length<1||(this._forEachChild(De=>De._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:Me.emitEvent}))}_syncPendingControls(){let Me=this.controls.reduce((De,Tt)=>!!Tt._syncPendingControls()||De,!1);return Me&&this.updateValueAndValidity({onlySelf:!0}),Me}_throwIfControlMissing(Me){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet. If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(Me))throw new Error(`Cannot find form control at index ${Me}`)}_forEachChild(Me){this.controls.forEach((De,Tt)=>{Me(De,Tt)})}_updateValue(){this.value=this.controls.filter(Me=>Me.enabled||this.disabled).map(Me=>Me.value)}_anyControls(Me){return this.controls.some(De=>De.enabled&&Me(De))}_setUpControls(){this._forEachChild(Me=>this._registerControl(Me))}_checkAllValuesPresent(Me){this._forEachChild((De,Tt)=>{if(void 0===Me[Tt])throw new Error(`Must supply a value for form control at index: ${Tt}.`)})}_allControlsDisabled(){for(const Me of this.controls)if(Me.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(Me){Me.setParent(this),Me._registerOnCollectionChange(this._onCollectionChange)}}const rr={provide:wr,useExisting:(0,r.Gpc)(()=>Ti)},ho=(()=>Promise.resolve(null))();let Ti=(()=>{class Te extends wr{constructor(De,Tt){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new r.vpe,this.form=new cr({},Gt(De),Bt(Tt))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(De){ho.then(()=>{const Tt=this._findContainer(De.path);De.control=Tt.registerControl(De.name,De.control),Tr(De.control,De),De.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(De)})}getControl(De){return this.form.get(De.path)}removeControl(De){ho.then(()=>{const Tt=this._findContainer(De.path);Tt&&Tt.removeControl(De.name),kn(this._directives,De)})}addFormGroup(De){ho.then(()=>{const Tt=this._findContainer(De.path),dr=new cr({});no(dr,De),Tt.registerControl(De.name,dr),dr.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(De){ho.then(()=>{const Tt=this._findContainer(De.path);Tt&&Tt.removeControl(De.name)})}getFormGroup(De){return this.form.get(De.path)}updateModel(De,Tt){ho.then(()=>{this.form.get(De.path).setValue(Tt)})}setValue(De){this.control.setValue(De)}onSubmit(De){return this.submitted=!0,mn(this.form,this._directives),this.ngSubmit.emit(De),!1}onReset(){this.resetForm()}resetForm(De){this.form.reset(De),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(De){return De.pop(),De.length?this.form.get(De):this.form}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(ae,10),r.Y36($,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("submit",function(Qi){return Tt.onSubmit(Qi)})("reset",function(){return Tt.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[r._Bn([rr]),r.qOj]}),Te})(),Bo=(()=>{class Te extends wr{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return Ai(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,features:[r.qOj]}),Te})();const Ct={provide:Qr,useExisting:(0,r.Gpc)(()=>Cn)},nn=(()=>Promise.resolve(null))();let Cn=(()=>{class Te extends Qr{constructor(De,Tt,dr,Qi){super(),this.control=new Zn,this._registered=!1,this.update=new r.vpe,this._parent=De,this._setValidators(Tt),this._setAsyncValidators(dr),this.valueAccessor=Wn(0,Qi)}ngOnChanges(De){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in De&&this._updateDisabled(De),jt(De,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?Ai(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(De){this.viewModel=De,this.update.emit(De)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Tr(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(De){nn.then(()=>{this.control.setValue(De,{emitViewToModelChange:!1})})}_updateDisabled(De){const Tt=De.isDisabled.currentValue,dr=""===Tt||Tt&&"false"!==Tt;nn.then(()=>{dr&&!this.control.disabled?this.control.disable():!dr&&this.control.disabled&&this.control.enable()})}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(wr,9),r.Y36(ae,10),r.Y36($,10),r.Y36(T,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[r._Bn([Ct]),r.qOj,r.TTD]}),Te})(),br=(()=>{class Te{}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275dir=r.lG2({type:Te,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),Te})();const zi={provide:T,useExisting:(0,r.Gpc)(()=>Wo),multi:!0};let Wo=(()=>{class Te extends y{writeValue(De){this.setProperty("value",null==De?"":De)}registerOnChange(De){this.onChange=Tt=>{De(""==Tt?null:parseFloat(Tt))}}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("input",function(Qi){return Tt.onChange(Qi.target.value)})("blur",function(){return Tt.onTouched()})},features:[r._Bn([zi]),r.qOj]}),Te})();const Do={provide:T,useExisting:(0,r.Gpc)(()=>qo),multi:!0};let _s=(()=>{class Te{}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275mod=r.oAB({type:Te}),Te.\u0275inj=r.cJS({}),Te})(),bs=(()=>{class Te{constructor(){this._accessors=[]}add(De,Tt){this._accessors.push([De,Tt])}remove(De){for(let Tt=this._accessors.length-1;Tt>=0;--Tt)if(this._accessors[Tt][1]===De)return void this._accessors.splice(Tt,1)}select(De){this._accessors.forEach(Tt=>{this._isSameGroup(Tt,De)&&Tt[1]!==De&&Tt[1].fireUncheck(De.value)})}_isSameGroup(De,Tt){return!!De[0].control&&De[0]._parent===Tt._control._parent&&De[1].name===Tt.name}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275prov=(0,r.Yz7)({factory:function(){return new Te},token:Te,providedIn:_s}),Te})(),qo=(()=>{class Te extends y{constructor(De,Tt,dr,Qi){super(De,Tt),this._registry=dr,this._injector=Qi,this.onChange=()=>{}}ngOnInit(){this._control=this._injector.get(Qr),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(De){this._state=De===this.value,this.setProperty("checked",this._state)}registerOnChange(De){this._fn=De,this.onChange=()=>{De(this.value),this._registry.select(this)}}fireUncheck(De){this.writeValue(De)}_checkName(){!this.name&&this.formControlName&&(this.name=this.formControlName)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(r.Qsj),r.Y36(r.SBq),r.Y36(bs),r.Y36(r.zs3))},Te.\u0275dir=r.lG2({type:Te,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("change",function(){return Tt.onChange()})("blur",function(){return Tt.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},features:[r._Bn([Do]),r.qOj]}),Te})();const pa=new r.OlP("NgModelWithFormControlWarning"),yl={provide:wr,useExisting:(0,r.Gpc)(()=>fo)};let fo=(()=>{class Te extends wr{constructor(De,Tt){super(),this.validators=De,this.asyncValidators=Tt,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new r.vpe,this._setValidators(De),this._setAsyncValidators(Tt)}ngOnChanges(De){this._checkFormPresent(),De.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Xt(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(De){const Tt=this.form.get(De.path);return Tr(Tt,De),Tt.updateValueAndValidity({emitEvent:!1}),this.directives.push(De),Tt}getControl(De){return this.form.get(De.path)}removeControl(De){Nr(De.control||null,De,!1),kn(this.directives,De)}addFormGroup(De){this._setUpFormContainer(De)}removeFormGroup(De){this._cleanUpFormContainer(De)}getFormGroup(De){return this.form.get(De.path)}addFormArray(De){this._setUpFormContainer(De)}removeFormArray(De){this._cleanUpFormContainer(De)}getFormArray(De){return this.form.get(De.path)}updateModel(De,Tt){this.form.get(De.path).setValue(Tt)}onSubmit(De){return this.submitted=!0,mn(this.form,this.directives),this.ngSubmit.emit(De),!1}onReset(){this.resetForm()}resetForm(De){this.form.reset(De),this.submitted=!1}_updateDomValue(){this.directives.forEach(De=>{const Tt=De.control,dr=this.form.get(De.path);Tt!==dr&&(Nr(Tt||null,De),dr instanceof Zn&&(Tr(dr,De),De.control=dr))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(De){const Tt=this.form.get(De.path);no(Tt,De),Tt.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(De){if(this.form){const Tt=this.form.get(De.path);Tt&&function(Te,Me){return Xt(Te,Me)}(Tt,De)&&Tt.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){mr(this.form,this),this._oldForm&&Xt(this._oldForm,this)}_checkFormPresent(){}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(ae,10),r.Y36($,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formGroup",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("submit",function(Qi){return Tt.onSubmit(Qi)})("reset",function(){return Tt.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[r._Bn([yl]),r.qOj,r.TTD]}),Te})();const Da={provide:wr,useExisting:(0,r.Gpc)(()=>Ao)};let Ao=(()=>{class Te extends Bo{constructor(De,Tt,dr){super(),this._parent=De,this._setValidators(Tt),this._setAsyncValidators(dr)}_checkParentType(){Ra(this._parent)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(wr,13),r.Y36(ae,10),r.Y36($,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formGroupName",""]],inputs:{name:["formGroupName","name"]},features:[r._Bn([Da]),r.qOj]}),Te})();const ls={provide:wr,useExisting:(0,r.Gpc)(()=>gs)};let gs=(()=>{class Te extends wr{constructor(De,Tt,dr){super(),this._parent=De,this._setValidators(Tt),this._setAsyncValidators(dr)}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return Ai(null==this.name?this.name:this.name.toString(),this._parent)}_checkParentType(){Ra(this._parent)}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(wr,13),r.Y36(ae,10),r.Y36($,10))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formArrayName",""]],inputs:{name:["formArrayName","name"]},features:[r._Bn([ls]),r.qOj]}),Te})();function Ra(Te){return!(Te instanceof Ao||Te instanceof fo||Te instanceof gs)}const pl={provide:Qr,useExisting:(0,r.Gpc)(()=>Qs)};let Qs=(()=>{class Te extends Qr{constructor(De,Tt,dr,Qi,Jo){super(),this._ngModelWarningConfig=Jo,this._added=!1,this.update=new r.vpe,this._ngModelWarningSent=!1,this._parent=De,this._setValidators(Tt),this._setAsyncValidators(dr),this.valueAccessor=Wn(0,Qi)}set isDisabled(De){}ngOnChanges(De){this._added||this._setUpControl(),jt(De,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(De){this.viewModel=De,this.update.emit(De)}get path(){return Ai(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(wr,13),r.Y36(ae,10),r.Y36($,10),r.Y36(T,10),r.Y36(pa,8))},Te.\u0275dir=r.lG2({type:Te,selectors:[["","formControlName",""]],inputs:{isDisabled:["disabled","isDisabled"],name:["formControlName","name"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},features:[r._Bn([pl]),r.qOj,r.TTD]}),Te._ngModelWarningSentOnce=!1,Te})();const Fo={provide:T,useExisting:(0,r.Gpc)(()=>ms),multi:!0};function Eo(Te,Me){return null==Te?`${Me}`:(Me&&"object"==typeof Me&&(Me="Object"),`${Te}: ${Me}`.slice(0,50))}let ms=(()=>{class Te extends y{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(De){this._compareWith=De}writeValue(De){this.value=De;const Tt=this._getOptionId(De);null==Tt&&this.setProperty("selectedIndex",-1);const dr=Eo(Tt,De);this.setProperty("value",dr)}registerOnChange(De){this.onChange=Tt=>{this.value=this._getOptionValue(Tt),De(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(De){for(const Tt of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(Tt),De))return Tt;return null}_getOptionValue(De){const Tt=function(Te){return Te.split(":")[0]}(De);return this._optionMap.has(Tt)?this._optionMap.get(Tt):De}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("change",function(Qi){return Tt.onChange(Qi.target.value)})("blur",function(){return Tt.onTouched()})},inputs:{compareWith:"compareWith"},features:[r._Bn([Fo]),r.qOj]}),Te})(),Co=(()=>{class Te{constructor(De,Tt,dr){this._element=De,this._renderer=Tt,this._select=dr,this._select&&(this.id=this._select._registerOption())}set ngValue(De){null!=this._select&&(this._select._optionMap.set(this.id,De),this._setElementValue(Eo(this.id,De)),this._select.writeValue(this._select.value))}set value(De){this._setElementValue(De),this._select&&this._select.writeValue(this._select.value)}_setElementValue(De){this._renderer.setProperty(this._element.nativeElement,"value",De)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(ms,9))},Te.\u0275dir=r.lG2({type:Te,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),Te})();const kr={provide:T,useExisting:(0,r.Gpc)(()=>ne),multi:!0};function ro(Te,Me){return null==Te?`${Me}`:("string"==typeof Me&&(Me=`'${Me}'`),Me&&"object"==typeof Me&&(Me="Object"),`${Te}: ${Me}`.slice(0,50))}let ne=(()=>{class Te extends y{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(De){this._compareWith=De}writeValue(De){let Tt;if(this.value=De,Array.isArray(De)){const dr=De.map(Qi=>this._getOptionId(Qi));Tt=(Qi,Jo)=>{Qi._setSelected(dr.indexOf(Jo.toString())>-1)}}else Tt=(dr,Qi)=>{dr._setSelected(!1)};this._optionMap.forEach(Tt)}registerOnChange(De){this.onChange=Tt=>{const dr=[];if(void 0!==Tt.selectedOptions){const Qi=Tt.selectedOptions;for(let Jo=0;Jo<Qi.length;Jo++){const Es=Qi.item(Jo),vs=this._getOptionValue(Es.value);dr.push(vs)}}else{const Qi=Tt.options;for(let Jo=0;Jo<Qi.length;Jo++){const Es=Qi.item(Jo);if(Es.selected){const vs=this._getOptionValue(Es.value);dr.push(vs)}}}this.value=dr,De(dr)}}_registerOption(De){const Tt=(this._idCounter++).toString();return this._optionMap.set(Tt,De),Tt}_getOptionId(De){for(const Tt of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(Tt)._value,De))return Tt;return null}_getOptionValue(De){const Tt=function(Te){return Te.split(":")[0]}(De);return this._optionMap.has(Tt)?this._optionMap.get(Tt)._value:De}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(De,Tt){1&De&&r.NdJ("change",function(Qi){return Tt.onChange(Qi.target)})("blur",function(){return Tt.onTouched()})},inputs:{compareWith:"compareWith"},features:[r._Bn([kr]),r.qOj]}),Te})(),$e=(()=>{class Te{constructor(De,Tt,dr){this._element=De,this._renderer=Tt,this._select=dr,this._select&&(this.id=this._select._registerOption(this))}set ngValue(De){null!=this._select&&(this._value=De,this._setElementValue(ro(this.id,De)),this._select.writeValue(this._select.value))}set value(De){this._select?(this._value=De,this._setElementValue(ro(this.id,De)),this._select.writeValue(this._select.value)):this._setElementValue(De)}_setElementValue(De){this._renderer.setProperty(this._element.nativeElement,"value",De)}_setSelected(De){this._renderer.setProperty(this._element.nativeElement,"selected",De)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return Te.\u0275fac=function(De){return new(De||Te)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(ne,9))},Te.\u0275dir=r.lG2({type:Te,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),Te})(),sn=(()=>{class Te{constructor(){this._validator=je}handleChanges(De){if(this.inputName in De){const Tt=this.normalizeInput(De[this.inputName].currentValue);this._validator=this.createValidator(Tt),this._onChange&&this._onChange()}}validate(De){return this._validator(De)}registerOnValidatorChange(De){this._onChange=De}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275dir=r.lG2({type:Te}),Te})();const ei={provide:ae,useExisting:(0,r.Gpc)(()=>fi),multi:!0};let fi=(()=>{class Te extends sn{constructor(){super(...arguments),this.inputName="max",this.normalizeInput=De=>parseFloat(De),this.createValidator=De=>he(De)}ngOnChanges(De){this.handleChanges(De)}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(De,Tt){if(2&De){let dr;r.uIk("max",null!==(dr=Tt.max)&&void 0!==dr?dr:null)}},inputs:{max:"max"},features:[r._Bn([ei]),r.qOj,r.TTD]}),Te})();const Oi={provide:ae,useExisting:(0,r.Gpc)(()=>os),multi:!0};let os=(()=>{class Te extends sn{constructor(){super(...arguments),this.inputName="min",this.normalizeInput=De=>parseFloat(De),this.createValidator=De=>oe(De)}ngOnChanges(De){this.handleChanges(De)}}return Te.\u0275fac=function(){let Me;return function(Tt){return(Me||(Me=r.n5z(Te)))(Tt||Te)}}(),Te.\u0275dir=r.lG2({type:Te,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(De,Tt){if(2&De){let dr;r.uIk("min",null!==(dr=Tt.min)&&void 0!==dr?dr:null)}},inputs:{min:"min"},features:[r._Bn([Oi]),r.qOj,r.TTD]}),Te})();const Ro={provide:ae,useExisting:(0,r.Gpc)(()=>To),multi:!0};let To=(()=>{class Te{constructor(){this._required=!1}get required(){return this._required}set required(De){this._required=null!=De&&!1!==De&&"false"!=`${De}`,this._onChange&&this._onChange()}validate(De){return this.required?me(De):null}registerOnValidatorChange(De){this._onChange=De}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275dir=r.lG2({type:Te,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(De,Tt){2&De&&r.uIk("required",Tt.required?"":null)},inputs:{required:"required"},features:[r._Bn([Ro])]}),Te})(),el=(()=>{class Te{}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275mod=r.oAB({type:Te}),Te.\u0275inj=r.cJS({imports:[[_s]]}),Te})(),Cu=(()=>{class Te{}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275mod=r.oAB({type:Te}),Te.\u0275inj=r.cJS({imports:[el]}),Te})(),jl=(()=>{class Te{static withConfig(De){return{ngModule:Te,providers:[{provide:pa,useValue:De.warnOnNgModelWithFormControl}]}}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275mod=r.oAB({type:Te}),Te.\u0275inj=r.cJS({imports:[el]}),Te})(),Nt=(()=>{class Te{group(De,Tt=null){const dr=this._reduceControls(De);let Es,Qi=null,Jo=null;return null!=Tt&&(function(Te){return void 0!==Te.asyncValidators||void 0!==Te.validators||void 0!==Te.updateOn}(Tt)?(Qi=null!=Tt.validators?Tt.validators:null,Jo=null!=Tt.asyncValidators?Tt.asyncValidators:null,Es=null!=Tt.updateOn?Tt.updateOn:void 0):(Qi=null!=Tt.validator?Tt.validator:null,Jo=null!=Tt.asyncValidator?Tt.asyncValidator:null)),new cr(dr,{asyncValidators:Jo,updateOn:Es,validators:Qi})}control(De,Tt,dr){return new Zn(De,Tt,dr)}array(De,Tt,dr){const Qi=De.map(Jo=>this._createControl(Jo));return new yr(Qi,Tt,dr)}_reduceControls(De){const Tt={};return Object.keys(De).forEach(dr=>{Tt[dr]=this._createControl(De[dr])}),Tt}_createControl(De){return De instanceof Zn||De instanceof cr||De instanceof yr?De:Array.isArray(De)?this.control(De[0],De.length>1?De[1]:null,De.length>2?De[2]:null):this.control(De)}}return Te.\u0275fac=function(De){return new(De||Te)},Te.\u0275prov=(0,r.Yz7)({factory:function(){return new Te},token:Te,providedIn:jl}),Te})()},91211:(v,S,i)=>{"use strict";i.d(S,{b2:()=>wn,H7:()=>zn,HJ:()=>ai,q6:()=>Wn,se:()=>ci});var r=i(12057),u=i(74788);class p extends r.w_{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class f extends p{static makeCurrent(){(0,r.HT)(new f)}onAndCancel(ln,Ht,cn){return ln.addEventListener(Ht,cn,!1),()=>{ln.removeEventListener(Ht,cn,!1)}}dispatchEvent(ln,Ht){ln.dispatchEvent(Ht)}remove(ln){ln.parentNode&&ln.parentNode.removeChild(ln)}createElement(ln,Ht){return(Ht=Ht||this.getDefaultDocument()).createElement(ln)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(ln){return ln.nodeType===Node.ELEMENT_NODE}isShadowRoot(ln){return ln instanceof DocumentFragment}getGlobalEventTarget(ln,Ht){return"window"===Ht?window:"document"===Ht?ln:"body"===Ht?ln.body:null}getBaseHref(ln){const Ht=(e=e||document.querySelector("base"),e?e.getAttribute("href"):null);return null==Ht?null:function(ar){y=y||document.createElement("a"),y.setAttribute("href",ar);const ln=y.pathname;return"/"===ln.charAt(0)?ln:`/${ln}`}(Ht)}resetBaseElement(){e=null}getUserAgent(){return window.navigator.userAgent}getCookie(ln){return(0,r.Mx)(document.cookie,ln)}}let y,e=null;const M=new u.OlP("TRANSITION_ID"),F=[{provide:u.ip1,useFactory:function(ar,ln,Ht){return()=>{Ht.get(u.CZH).donePromise.then(()=>{const cn=(0,r.q)(),Ct=ln.querySelectorAll(`style[ng-transition="${ar}"]`);for(let pr=0;pr<Ct.length;pr++)cn.remove(Ct[pr])})}},deps:[M,r.K0,u.zs3],multi:!0}];class Z{static init(){(0,u.VLi)(new Z)}addToWindow(ln){u.dqk.getAngularTestability=(cn,Ct=!0)=>{const pr=ln.findTestabilityInTree(cn,Ct);if(null==pr)throw new Error("Could not find testability for element.");return pr},u.dqk.getAllAngularTestabilities=()=>ln.getAllTestabilities(),u.dqk.getAllAngularRootElements=()=>ln.getAllRootElements(),u.dqk.frameworkStabilizers||(u.dqk.frameworkStabilizers=[]),u.dqk.frameworkStabilizers.push(cn=>{const Ct=u.dqk.getAllAngularTestabilities();let pr=Ct.length,nn=!1;const Cn=function(br){nn=nn||br,pr--,0==pr&&cn(nn)};Ct.forEach(function(br){br.whenStable(Cn)})})}findTestabilityInTree(ln,Ht,cn){if(null==Ht)return null;const Ct=ln.getTestability(Ht);return null!=Ct?Ct:cn?(0,r.q)().isShadowRoot(Ht)?this.findTestabilityInTree(ln,Ht.host,!0):this.findTestabilityInTree(ln,Ht.parentElement,!0):null}}let J=(()=>{class ar{build(){return new XMLHttpRequest}}return ar.\u0275fac=function(Ht){return new(Ht||ar)},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})();const je=new u.OlP("EventManagerPlugins");let Ie=(()=>{class ar{constructor(Ht,cn){this._zone=cn,this._eventNameToPlugin=new Map,Ht.forEach(Ct=>Ct.manager=this),this._plugins=Ht.slice().reverse()}addEventListener(Ht,cn,Ct){return this._findPluginFor(cn).addEventListener(Ht,cn,Ct)}addGlobalEventListener(Ht,cn,Ct){return this._findPluginFor(cn).addGlobalEventListener(Ht,cn,Ct)}getZone(){return this._zone}_findPluginFor(Ht){const cn=this._eventNameToPlugin.get(Ht);if(cn)return cn;const Ct=this._plugins;for(let pr=0;pr<Ct.length;pr++){const nn=Ct[pr];if(nn.supports(Ht))return this._eventNameToPlugin.set(Ht,nn),nn}throw new Error(`No event manager plugin found for event ${Ht}`)}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(je),u.LFG(u.R0b))},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})();class Ve{constructor(ln){this._doc=ln}addGlobalEventListener(ln,Ht,cn){const Ct=(0,r.q)().getGlobalEventTarget(this._doc,ln);if(!Ct)throw new Error(`Unsupported event target ${Ct} for event ${Ht}`);return this.addEventListener(Ct,Ht,cn)}}let He=(()=>{class ar{constructor(){this._stylesSet=new Set}addStyles(Ht){const cn=new Set;Ht.forEach(Ct=>{this._stylesSet.has(Ct)||(this._stylesSet.add(Ct),cn.add(Ct))}),this.onStylesAdded(cn)}onStylesAdded(Ht){}getAllStyles(){return Array.from(this._stylesSet)}}return ar.\u0275fac=function(Ht){return new(Ht||ar)},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})(),Zt=(()=>{class ar extends He{constructor(Ht){super(),this._doc=Ht,this._hostNodes=new Map,this._hostNodes.set(Ht.head,[])}_addStylesToHost(Ht,cn,Ct){Ht.forEach(pr=>{const nn=this._doc.createElement("style");nn.textContent=pr,Ct.push(cn.appendChild(nn))})}addHost(Ht){const cn=[];this._addStylesToHost(this._stylesSet,Ht,cn),this._hostNodes.set(Ht,cn)}removeHost(Ht){const cn=this._hostNodes.get(Ht);cn&&cn.forEach(st),this._hostNodes.delete(Ht)}onStylesAdded(Ht){this._hostNodes.forEach((cn,Ct)=>{this._addStylesToHost(Ht,Ct,cn)})}ngOnDestroy(){this._hostNodes.forEach(Ht=>Ht.forEach(st))}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(r.K0))},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})();function st(ar){(0,r.q)().remove(ar)}const en={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},$t=/%COMP%/g;function zt(ar,ln,Ht){for(let cn=0;cn<ln.length;cn++){let Ct=ln[cn];Array.isArray(Ct)?zt(ar,Ct,Ht):(Ct=Ct.replace($t,ar),Ht.push(Ct))}return Ht}function Yn(ar){return ln=>{if("__ngUnwrap__"===ln)return ar;!1===ar(ln)&&(ln.preventDefault(),ln.returnValue=!1)}}let ci=(()=>{class ar{constructor(Ht,cn,Ct){this.eventManager=Ht,this.sharedStylesHost=cn,this.appId=Ct,this.rendererByCompId=new Map,this.defaultRenderer=new Ir(Ht)}createRenderer(Ht,cn){if(!Ht||!cn)return this.defaultRenderer;switch(cn.encapsulation){case u.ifc.Emulated:{let Ct=this.rendererByCompId.get(cn.id);return Ct||(Ct=new In(this.eventManager,this.sharedStylesHost,cn,this.appId),this.rendererByCompId.set(cn.id,Ct)),Ct.applyToHost(Ht),Ct}case 1:case u.ifc.ShadowDom:return new Hn(this.eventManager,this.sharedStylesHost,Ht,cn);default:if(!this.rendererByCompId.has(cn.id)){const Ct=zt(cn.id,cn.styles,[]);this.sharedStylesHost.addStyles(Ct),this.rendererByCompId.set(cn.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(Ie),u.LFG(Zt),u.LFG(u.AFp))},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})();class Ir{constructor(ln){this.eventManager=ln,this.data=Object.create(null)}destroy(){}createElement(ln,Ht){return Ht?document.createElementNS(en[Ht]||Ht,ln):document.createElement(ln)}createComment(ln){return document.createComment(ln)}createText(ln){return document.createTextNode(ln)}appendChild(ln,Ht){ln.appendChild(Ht)}insertBefore(ln,Ht,cn){ln&&ln.insertBefore(Ht,cn)}removeChild(ln,Ht){ln&&ln.removeChild(Ht)}selectRootElement(ln,Ht){let cn="string"==typeof ln?document.querySelector(ln):ln;if(!cn)throw new Error(`The selector "${ln}" did not match any elements`);return Ht||(cn.textContent=""),cn}parentNode(ln){return ln.parentNode}nextSibling(ln){return ln.nextSibling}setAttribute(ln,Ht,cn,Ct){if(Ct){Ht=Ct+":"+Ht;const pr=en[Ct];pr?ln.setAttributeNS(pr,Ht,cn):ln.setAttribute(Ht,cn)}else ln.setAttribute(Ht,cn)}removeAttribute(ln,Ht,cn){if(cn){const Ct=en[cn];Ct?ln.removeAttributeNS(Ct,Ht):ln.removeAttribute(`${cn}:${Ht}`)}else ln.removeAttribute(Ht)}addClass(ln,Ht){ln.classList.add(Ht)}removeClass(ln,Ht){ln.classList.remove(Ht)}setStyle(ln,Ht,cn,Ct){Ct&(u.JOm.DashCase|u.JOm.Important)?ln.style.setProperty(Ht,cn,Ct&u.JOm.Important?"important":""):ln.style[Ht]=cn}removeStyle(ln,Ht,cn){cn&u.JOm.DashCase?ln.style.removeProperty(Ht):ln.style[Ht]=""}setProperty(ln,Ht,cn){ln[Ht]=cn}setValue(ln,Ht){ln.nodeValue=Ht}listen(ln,Ht,cn){return"string"==typeof ln?this.eventManager.addGlobalEventListener(ln,Ht,Yn(cn)):this.eventManager.addEventListener(ln,Ht,Yn(cn))}}class In extends Ir{constructor(ln,Ht,cn,Ct){super(ln),this.component=cn;const pr=zt(Ct+"-"+cn.id,cn.styles,[]);Ht.addStyles(pr),this.contentAttr="_ngcontent-%COMP%".replace($t,Ct+"-"+cn.id),this.hostAttr="_nghost-%COMP%".replace($t,Ct+"-"+cn.id)}applyToHost(ln){super.setAttribute(ln,this.hostAttr,"")}createElement(ln,Ht){const cn=super.createElement(ln,Ht);return super.setAttribute(cn,this.contentAttr,""),cn}}class Hn extends Ir{constructor(ln,Ht,cn,Ct){super(ln),this.sharedStylesHost=Ht,this.hostEl=cn,this.shadowRoot=cn.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const pr=zt(Ct.id,Ct.styles,[]);for(let nn=0;nn<pr.length;nn++){const Cn=document.createElement("style");Cn.textContent=pr[nn],this.shadowRoot.appendChild(Cn)}}nodeOrShadowRoot(ln){return ln===this.hostEl?this.shadowRoot:ln}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(ln,Ht){return super.appendChild(this.nodeOrShadowRoot(ln),Ht)}insertBefore(ln,Ht,cn){return super.insertBefore(this.nodeOrShadowRoot(ln),Ht,cn)}removeChild(ln,Ht){return super.removeChild(this.nodeOrShadowRoot(ln),Ht)}parentNode(ln){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(ln)))}}let Zr=(()=>{class ar extends Ve{constructor(Ht){super(Ht)}supports(Ht){return!0}addEventListener(Ht,cn,Ct){return Ht.addEventListener(cn,Ct,!1),()=>this.removeEventListener(Ht,cn,Ct)}removeEventListener(Ht,cn,Ct){return Ht.removeEventListener(cn,Ct)}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(r.K0))},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})();const Lr=["alt","control","meta","shift"],zr={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},hi={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"},En={alt:ar=>ar.altKey,control:ar=>ar.ctrlKey,meta:ar=>ar.metaKey,shift:ar=>ar.shiftKey};let mr=(()=>{class ar extends Ve{constructor(Ht){super(Ht)}supports(Ht){return null!=ar.parseEventName(Ht)}addEventListener(Ht,cn,Ct){const pr=ar.parseEventName(cn),nn=ar.eventCallback(pr.fullKey,Ct,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,r.q)().onAndCancel(Ht,pr.domEventName,nn))}static parseEventName(Ht){const cn=Ht.toLowerCase().split("."),Ct=cn.shift();if(0===cn.length||"keydown"!==Ct&&"keyup"!==Ct)return null;const pr=ar._normalizeKey(cn.pop());let nn="";if(Lr.forEach(br=>{const zi=cn.indexOf(br);zi>-1&&(cn.splice(zi,1),nn+=br+".")}),nn+=pr,0!=cn.length||0===pr.length)return null;const Cn={};return Cn.domEventName=Ct,Cn.fullKey=nn,Cn}static getEventFullKey(Ht){let cn="",Ct=function(ar){let ln=ar.key;if(null==ln){if(ln=ar.keyIdentifier,null==ln)return"Unidentified";ln.startsWith("U+")&&(ln=String.fromCharCode(parseInt(ln.substring(2),16)),3===ar.location&&hi.hasOwnProperty(ln)&&(ln=hi[ln]))}return zr[ln]||ln}(Ht);return Ct=Ct.toLowerCase()," "===Ct?Ct="space":"."===Ct&&(Ct="dot"),Lr.forEach(pr=>{pr!=Ct&&En[pr](Ht)&&(cn+=pr+".")}),cn+=Ct,cn}static eventCallback(Ht,cn,Ct){return pr=>{ar.getEventFullKey(pr)===Ht&&Ct.runGuarded(()=>cn(pr))}}static _normalizeKey(Ht){switch(Ht){case"esc":return"escape";default:return Ht}}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(r.K0))},ar.\u0275prov=u.Yz7({token:ar,factory:ar.\u0275fac}),ar})(),zn=(()=>{class ar{}return ar.\u0275fac=function(Ht){return new(Ht||ar)},ar.\u0275prov=(0,u.Yz7)({factory:function(){return(0,u.LFG)(si)},token:ar,providedIn:"root"}),ar})(),si=(()=>{class ar extends zn{constructor(Ht){super(),this._doc=Ht}sanitize(Ht,cn){if(null==cn)return null;switch(Ht){case u.q3G.NONE:return cn;case u.q3G.HTML:return(0,u.qzn)(cn,"HTML")?(0,u.z3N)(cn):(0,u.EiD)(this._doc,String(cn)).toString();case u.q3G.STYLE:return(0,u.qzn)(cn,"Style")?(0,u.z3N)(cn):cn;case u.q3G.SCRIPT:if((0,u.qzn)(cn,"Script"))return(0,u.z3N)(cn);throw new Error("unsafe value used in a script context");case u.q3G.URL:return(0,u.yhl)(cn),(0,u.qzn)(cn,"URL")?(0,u.z3N)(cn):(0,u.mCW)(String(cn));case u.q3G.RESOURCE_URL:if((0,u.qzn)(cn,"ResourceURL"))return(0,u.z3N)(cn);throw new Error("unsafe value used in a resource URL context (see https://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${Ht} (see https://g.co/ng/security#xss)`)}}bypassSecurityTrustHtml(Ht){return(0,u.JVY)(Ht)}bypassSecurityTrustStyle(Ht){return(0,u.L6k)(Ht)}bypassSecurityTrustScript(Ht){return(0,u.eBb)(Ht)}bypassSecurityTrustUrl(Ht){return(0,u.LAX)(Ht)}bypassSecurityTrustResourceUrl(Ht){return(0,u.pB0)(Ht)}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(r.K0))},ar.\u0275prov=(0,u.Yz7)({factory:function(){return function(ar){return new si(ar.get(r.K0))}((0,u.LFG)(u.gxx))},token:ar,providedIn:"root"}),ar})();const Wn=(0,u.eFA)(u._c5,"browser",[{provide:u.Lbi,useValue:r.bD},{provide:u.g9A,useValue:function(){f.makeCurrent(),Z.init()},multi:!0},{provide:r.K0,useFactory:function(){return(0,u.RDi)(document),document},deps:[]}]),kn=[[],{provide:u.zSh,useValue:"root"},{provide:u.qLn,useFactory:function(){return new u.qLn},deps:[]},{provide:je,useClass:Zr,multi:!0,deps:[r.K0,u.R0b,u.Lbi]},{provide:je,useClass:mr,multi:!0,deps:[r.K0]},[],{provide:ci,useClass:ci,deps:[Ie,Zt,u.AFp]},{provide:u.FYo,useExisting:ci},{provide:He,useExisting:Zt},{provide:Zt,useClass:Zt,deps:[r.K0]},{provide:u.dDg,useClass:u.dDg,deps:[u.R0b]},{provide:Ie,useClass:Ie,deps:[je,u.R0b]},{provide:r.JF,useClass:J,deps:[]},[]];let wn=(()=>{class ar{constructor(Ht){if(Ht)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(Ht){return{ngModule:ar,providers:[{provide:u.AFp,useValue:Ht.appId},{provide:M,useExisting:u.AFp},F]}}}return ar.\u0275fac=function(Ht){return new(Ht||ar)(u.LFG(ar,12))},ar.\u0275mod=u.oAB({type:ar}),ar.\u0275inj=u.cJS({providers:kn,imports:[r.ez,u.hGG]}),ar})();const Vi="undefined"!=typeof window&&window||{};class cs{constructor(ln,Ht){this.msPerTick=ln,this.numTicks=Ht}}class zo{constructor(ln){this.appRef=ln.injector.get(u.z2F)}timeChangeDetection(ln){const Ht=ln&&ln.record,cn="Change Detection",Ct=null!=Vi.console.profile;Ht&&Ct&&Vi.console.profile(cn);const pr=So();let nn=0;for(;nn<5||So()-pr<500;)this.appRef.tick(),nn++;const Cn=So();Ht&&Ct&&Vi.console.profileEnd(cn);const br=(Cn-pr)/nn;return Vi.console.log(`ran ${nn} change detection cycles`),Vi.console.log(`${br.toFixed(2)} ms per check`),new cs(br,nn)}}function So(){return Vi.performance&&Vi.performance.now?Vi.performance.now():(new Date).getTime()}function ai(ar){return function(ar,ln){"undefined"!=typeof COMPILED&&COMPILED||((u.dqk.ng=u.dqk.ng||{})[ar]=ln)}("profiler",new zo(ar)),ar}},6283:(v,S,i)=>{"use strict";i.d(S,{gz:()=>xo,m2:()=>He,OD:()=>Ve,wm:()=>El,F0:()=>Vr,rH:()=>ko,Od:()=>Mr,yS:()=>Ho,Bz:()=>Xs,lC:()=>co});var r=i(12057),u=i(74788),p=i(18891),f=i(94402),e=i(59193);function _(Be){return new p.y(Pe=>{let Ce;try{Ce=Be()}catch(yt){return void Pe.error(yt)}return(Ce?(0,f.D)(Ce):(0,e.c)()).subscribe(Pe)})}var y=i(25917),T=i(26215),M=i(9112),R=i(13410),F=i(58071),Z=i(52441),J=i(79765),Q=i(88002),ee=i(43190),ue=i(15257),ae=i(39761),$=i(42145),se=i(45435),ve=i(5304),oe=i(94612),he=i(12627),me=i(28049),Oe=i(19773),ce=i(68307),dt=i(548),ze=i(51307),Ye=i(68939),je=i(63282);class Ie{constructor(Pe,Ce){this.id=Pe,this.url=Ce}}class Ve extends Ie{constructor(Pe,Ce,it="imperative",yt=null){super(Pe,Ce),this.navigationTrigger=it,this.restoredState=yt}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class He extends Ie{constructor(Pe,Ce,it){super(Pe,Ce),this.urlAfterRedirects=it}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Zt extends Ie{constructor(Pe,Ce,it){super(Pe,Ce),this.reason=it}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class st extends Ie{constructor(Pe,Ce,it){super(Pe,Ce),this.error=it}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class en extends Ie{constructor(Pe,Ce,it,yt){super(Pe,Ce),this.urlAfterRedirects=it,this.state=yt}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class $t extends Ie{constructor(Pe,Ce,it,yt){super(Pe,Ce),this.urlAfterRedirects=it,this.state=yt}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Gt extends Ie{constructor(Pe,Ce,it,yt,qt){super(Pe,Ce),this.urlAfterRedirects=it,this.state=yt,this.shouldActivate=qt}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Ut extends Ie{constructor(Pe,Ce,it,yt){super(Pe,Ce),this.urlAfterRedirects=it,this.state=yt}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Bt extends Ie{constructor(Pe,Ce,it,yt){super(Pe,Ce),this.urlAfterRedirects=it,this.state=yt}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class mt{constructor(Pe){this.route=Pe}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Yt{constructor(Pe){this.route=Pe}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Dt{constructor(Pe){this.snapshot=Pe}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class zt{constructor(Pe){this.snapshot=Pe}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Yn{constructor(Pe){this.snapshot=Pe}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Hr{constructor(Pe){this.snapshot=Pe}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ci{constructor(Pe,Ce,it){this.routerEvent=Pe,this.position=Ce,this.anchor=it}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}const Ir="primary";class wr{constructor(Pe){this.params=Pe||{}}has(Pe){return Object.prototype.hasOwnProperty.call(this.params,Pe)}get(Pe){if(this.has(Pe)){const Ce=this.params[Pe];return Array.isArray(Ce)?Ce[0]:Ce}return null}getAll(Pe){if(this.has(Pe)){const Ce=this.params[Pe];return Array.isArray(Ce)?Ce:[Ce]}return[]}get keys(){return Object.keys(this.params)}}function Qr(Be){return new wr(Be)}const Kr="ngNavigationCancelingError";function In(Be){const Pe=Error("NavigationCancelingError: "+Be);return Pe[Kr]=!0,Pe}function Zr(Be,Pe,Ce){const it=Ce.path.split("/");if(it.length>Be.length||"full"===Ce.pathMatch&&(Pe.hasChildren()||it.length<Be.length))return null;const yt={};for(let qt=0;qt<it.length;qt++){const Un=it[qt],qn=Be[qt];if(Un.startsWith(":"))yt[Un.substring(1)]=qn;else if(Un!==qn.path)return null}return{consumed:Be.slice(0,it.length),posParams:yt}}function di(Be,Pe){const Ce=Be?Object.keys(Be):void 0,it=Pe?Object.keys(Pe):void 0;if(!Ce||!it||Ce.length!=it.length)return!1;let yt;for(let qt=0;qt<Ce.length;qt++)if(yt=Ce[qt],!$i(Be[yt],Pe[yt]))return!1;return!0}function $i(Be,Pe){if(Array.isArray(Be)&&Array.isArray(Pe)){if(Be.length!==Pe.length)return!1;const Ce=[...Be].sort(),it=[...Pe].sort();return Ce.every((yt,qt)=>it[qt]===yt)}return Be===Pe}function Hi(Be){return Array.prototype.concat.apply([],Be)}function Br(Be){return Be.length>0?Be[Be.length-1]:null}function Wt(Be,Pe){for(const Ce in Be)Be.hasOwnProperty(Ce)&&Pe(Be[Ce],Ce)}function Jn(Be){return(0,u.CqO)(Be)?Be:(0,u.QGY)(Be)?(0,f.D)(Promise.resolve(Be)):(0,y.of)(Be)}const Lr={exact:function Ai(Be,Pe,Ce){if(!si(Be.segments,Pe.segments)||!En(Be.segments,Pe.segments,Ce)||Be.numberOfChildren!==Pe.numberOfChildren)return!1;for(const it in Pe.children)if(!Be.children[it]||!Ai(Be.children[it],Pe.children[it],Ce))return!1;return!0},subset:Nr},Vn={exact:function(Be,Pe){return di(Be,Pe)},subset:function(Be,Pe){return Object.keys(Pe).length<=Object.keys(Be).length&&Object.keys(Pe).every(Ce=>$i(Be[Ce],Pe[Ce]))},ignored:()=>!0};function zr(Be,Pe,Ce){return Lr[Ce.paths](Be.root,Pe.root,Ce.matrixParams)&&Vn[Ce.queryParams](Be.queryParams,Pe.queryParams)&&!("exact"===Ce.fragment&&Be.fragment!==Pe.fragment)}function Nr(Be,Pe,Ce){return gn(Be,Pe,Pe.segments,Ce)}function gn(Be,Pe,Ce,it){if(Be.segments.length>Ce.length){const yt=Be.segments.slice(0,Ce.length);return!(!si(yt,Ce)||Pe.hasChildren()||!En(yt,Ce,it))}if(Be.segments.length===Ce.length){if(!si(Be.segments,Ce)||!En(Be.segments,Ce,it))return!1;for(const yt in Pe.children)if(!Be.children[yt]||!Nr(Be.children[yt],Pe.children[yt],it))return!1;return!0}{const yt=Ce.slice(0,Be.segments.length),qt=Ce.slice(Be.segments.length);return!!(si(Be.segments,yt)&&En(Be.segments,yt,it)&&Be.children[Ir])&&gn(Be.children[Ir],Pe,qt,it)}}function En(Be,Pe,Ce){return Pe.every((it,yt)=>Vn[Ce](Be[yt].parameters,it.parameters))}class mr{constructor(Pe,Ce,it){this.root=Pe,this.queryParams=Ce,this.fragment=it}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Qr(this.queryParams)),this._queryParamMap}toString(){return Ze.serialize(this)}}class Xt{constructor(Pe,Ce){this.segments=Pe,this.children=Ce,this.parent=null,Wt(Ce,(it,yt)=>it.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Dr(this)}}class zn{constructor(Pe,Ce){this.path=Pe,this.parameters=Ce}get parameterMap(){return this._parameterMap||(this._parameterMap=Qr(this.parameters)),this._parameterMap}toString(){return Gi(this)}}function si(Be,Pe){return Be.length===Pe.length&&Be.every((Ce,it)=>Ce.path===Pe[it].path)}class no{}class so{parse(Pe){const Ce=new ai(Pe);return new mr(Ce.parseRootSegment(),Ce.parseQueryParams(),Ce.parseFragment())}serialize(Pe){var Be;return`${`/${jt(Pe.root,!0)}`}${function(Be){const Pe=Object.keys(Be).map(Ce=>{const it=Be[Ce];return Array.isArray(it)?it.map(yt=>`${mn(Ce)}=${mn(yt)}`).join("&"):`${mn(Ce)}=${mn(it)}`}).filter(Ce=>!!Ce);return Pe.length?`?${Pe.join("&")}`:""}(Pe.queryParams)}${"string"==typeof Pe.fragment?`#${Be=Pe.fragment,encodeURI(Be)}`:""}`}}const Ze=new so;function Dr(Be){return Be.segments.map(Pe=>Gi(Pe)).join("/")}function jt(Be,Pe){if(!Be.hasChildren())return Dr(Be);if(Pe){const Ce=Be.children[Ir]?jt(Be.children[Ir],!1):"",it=[];return Wt(Be.children,(yt,qt)=>{qt!==Ir&&it.push(`${qt}:${jt(yt,!1)}`)}),it.length>0?`${Ce}(${it.join("//")})`:Ce}{const Ce=function(Be,Pe){let Ce=[];return Wt(Be.children,(it,yt)=>{yt===Ir&&(Ce=Ce.concat(Pe(it,yt)))}),Wt(Be.children,(it,yt)=>{yt!==Ir&&(Ce=Ce.concat(Pe(it,yt)))}),Ce}(Be,(it,yt)=>yt===Ir?[jt(Be.children[Ir],!1)]:[`${yt}:${jt(it,!1)}`]);return 1===Object.keys(Be.children).length&&null!=Be.children[Ir]?`${Dr(Be)}/${Ce[0]}`:`${Dr(Be)}/(${Ce.join("//")})`}}function xt(Be){return encodeURIComponent(Be).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function mn(Be){return xt(Be).replace(/%3B/gi,";")}function kn(Be){return xt(Be).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function wn(Be){return decodeURIComponent(Be)}function nr(Be){return wn(Be.replace(/\+/g,"%20"))}function Gi(Be){return`${kn(Be.path)}${function(Be){return Object.keys(Be).map(Pe=>`;${kn(Pe)}=${kn(Be[Pe])}`).join("")}(Be.parameters)}`}const Mo=/^[^\/()?;=#]+/;function Vi(Be){const Pe=Be.match(Mo);return Pe?Pe[0]:""}const cs=/^[^=?&#]+/,So=/^[^?&#]+/;class ai{constructor(Pe){this.url=Pe,this.remaining=Pe}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Xt([],{}):new Xt([],this.parseChildren())}parseQueryParams(){const Pe={};if(this.consumeOptional("?"))do{this.parseQueryParam(Pe)}while(this.consumeOptional("&"));return Pe}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const Pe=[];for(this.peekStartsWith("(")||Pe.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),Pe.push(this.parseSegment());let Ce={};this.peekStartsWith("/(")&&(this.capture("/"),Ce=this.parseParens(!0));let it={};return this.peekStartsWith("(")&&(it=this.parseParens(!1)),(Pe.length>0||Object.keys(Ce).length>0)&&(it[Ir]=new Xt(Pe,Ce)),it}parseSegment(){const Pe=Vi(this.remaining);if(""===Pe&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(Pe),new zn(wn(Pe),this.parseMatrixParams())}parseMatrixParams(){const Pe={};for(;this.consumeOptional(";");)this.parseParam(Pe);return Pe}parseParam(Pe){const Ce=Vi(this.remaining);if(!Ce)return;this.capture(Ce);let it="";if(this.consumeOptional("=")){const yt=Vi(this.remaining);yt&&(it=yt,this.capture(it))}Pe[wn(Ce)]=wn(it)}parseQueryParam(Pe){const Ce=function(Be){const Pe=Be.match(cs);return Pe?Pe[0]:""}(this.remaining);if(!Ce)return;this.capture(Ce);let it="";if(this.consumeOptional("=")){const Un=function(Be){const Pe=Be.match(So);return Pe?Pe[0]:""}(this.remaining);Un&&(it=Un,this.capture(it))}const yt=nr(Ce),qt=nr(it);if(Pe.hasOwnProperty(yt)){let Un=Pe[yt];Array.isArray(Un)||(Un=[Un],Pe[yt]=Un),Un.push(qt)}else Pe[yt]=qt}parseParens(Pe){const Ce={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const it=Vi(this.remaining),yt=this.remaining[it.length];if("/"!==yt&&")"!==yt&&";"!==yt)throw new Error(`Cannot parse url '${this.url}'`);let qt;it.indexOf(":")>-1?(qt=it.substr(0,it.indexOf(":")),this.capture(qt),this.capture(":")):Pe&&(qt=Ir);const Un=this.parseChildren();Ce[qt]=1===Object.keys(Un).length?Un[Ir]:new Xt([],Un),this.consumeOptional("//")}return Ce}peekStartsWith(Pe){return this.remaining.startsWith(Pe)}consumeOptional(Pe){return!!this.peekStartsWith(Pe)&&(this.remaining=this.remaining.substring(Pe.length),!0)}capture(Pe){if(!this.consumeOptional(Pe))throw new Error(`Expected "${Pe}".`)}}class Zn{constructor(Pe){this._root=Pe}get root(){return this._root.value}parent(Pe){const Ce=this.pathFromRoot(Pe);return Ce.length>1?Ce[Ce.length-2]:null}children(Pe){const Ce=cr(Pe,this._root);return Ce?Ce.children.map(it=>it.value):[]}firstChild(Pe){const Ce=cr(Pe,this._root);return Ce&&Ce.children.length>0?Ce.children[0].value:null}siblings(Pe){const Ce=yr(Pe,this._root);return Ce.length<2?[]:Ce[Ce.length-2].children.map(yt=>yt.value).filter(yt=>yt!==Pe)}pathFromRoot(Pe){return yr(Pe,this._root).map(Ce=>Ce.value)}}function cr(Be,Pe){if(Be===Pe.value)return Pe;for(const Ce of Pe.children){const it=cr(Be,Ce);if(it)return it}return null}function yr(Be,Pe){if(Be===Pe.value)return[Pe];for(const Ce of Pe.children){const it=yr(Be,Ce);if(it.length)return it.unshift(Pe),it}return[]}class rr{constructor(Pe,Ce){this.value=Pe,this.children=Ce}toString(){return`TreeNode(${this.value})`}}function ri(Be){const Pe={};return Be&&Be.children.forEach(Ce=>Pe[Ce.value.outlet]=Ce),Pe}class ho extends Zn{constructor(Pe,Ce){super(Pe),this.snapshot=Ce,cn(this,Pe)}toString(){return this.snapshot.toString()}}function Ti(Be,Pe){const Ce=function(Be,Pe){const Un=new ln([],{},{},"",{},Ir,Pe,null,Be.root,-1,{});return new Ht("",new rr(Un,[]))}(Be,Pe),it=new T.X([new zn("",{})]),yt=new T.X({}),qt=new T.X({}),Un=new T.X({}),qn=new T.X(""),yi=new xo(it,yt,Un,qn,qt,Ir,Pe,Ce.root);return yi.snapshot=Ce.root,new ho(new rr(yi,[]),Ce)}class xo{constructor(Pe,Ce,it,yt,qt,Un,qn,yi){this.url=Pe,this.params=Ce,this.queryParams=it,this.fragment=yt,this.data=qt,this.outlet=Un,this.component=qn,this._futureSnapshot=yi}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,Q.U)(Pe=>Qr(Pe)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,Q.U)(Pe=>Qr(Pe)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Li(Be,Pe="emptyOnly"){const Ce=Be.pathFromRoot;let it=0;if("always"!==Pe)for(it=Ce.length-1;it>=1;){const yt=Ce[it],qt=Ce[it-1];if(yt.routeConfig&&""===yt.routeConfig.path)it--;else{if(qt.component)break;it--}}return function(Be){return Be.reduce((Pe,Ce)=>({params:Object.assign(Object.assign({},Pe.params),Ce.params),data:Object.assign(Object.assign({},Pe.data),Ce.data),resolve:Object.assign(Object.assign({},Pe.resolve),Ce._resolvedData)}),{params:{},data:{},resolve:{}})}(Ce.slice(it))}class ln{constructor(Pe,Ce,it,yt,qt,Un,qn,yi,Go,ka,ss){this.url=Pe,this.params=Ce,this.queryParams=it,this.fragment=yt,this.data=qt,this.outlet=Un,this.component=qn,this.routeConfig=yi,this._urlSegment=Go,this._lastPathIndex=ka,this._resolve=ss}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=Qr(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Qr(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(it=>it.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Ht extends Zn{constructor(Pe,Ce){super(Ce),this.url=Pe,cn(this,Ce)}toString(){return Ct(this._root)}}function cn(Be,Pe){Pe.value._routerState=Be,Pe.children.forEach(Ce=>cn(Be,Ce))}function Ct(Be){const Pe=Be.children.length>0?` { ${Be.children.map(Ct).join(", ")} } `:"";return`${Be.value}${Pe}`}function pr(Be){if(Be.snapshot){const Pe=Be.snapshot,Ce=Be._futureSnapshot;Be.snapshot=Ce,di(Pe.queryParams,Ce.queryParams)||Be.queryParams.next(Ce.queryParams),Pe.fragment!==Ce.fragment&&Be.fragment.next(Ce.fragment),di(Pe.params,Ce.params)||Be.params.next(Ce.params),function(Be,Pe){if(Be.length!==Pe.length)return!1;for(let Ce=0;Ce<Be.length;++Ce)if(!di(Be[Ce],Pe[Ce]))return!1;return!0}(Pe.url,Ce.url)||Be.url.next(Ce.url),di(Pe.data,Ce.data)||Be.data.next(Ce.data)}else Be.snapshot=Be._futureSnapshot,Be.data.next(Be._futureSnapshot.data)}function nn(Be,Pe){return di(Be.params,Pe.params)&&function(Be,Pe){return si(Be,Pe)&&Be.every((Ce,it)=>di(Ce.parameters,Pe[it].parameters))}(Be.url,Pe.url)&&!(!Be.parent!=!Pe.parent)&&(!Be.parent||nn(Be.parent,Pe.parent))}function br(Be,Pe,Ce){if(Ce&&Be.shouldReuseRoute(Pe.value,Ce.value.snapshot)){const it=Ce.value;it._futureSnapshot=Pe.value;const yt=function(Be,Pe,Ce){return Pe.children.map(it=>{for(const yt of Ce.children)if(Be.shouldReuseRoute(it.value,yt.value.snapshot))return br(Be,it,yt);return br(Be,it)})}(Be,Pe,Ce);return new rr(it,yt)}{if(Be.shouldAttach(Pe.value)){const qt=Be.retrieve(Pe.value);if(null!==qt){const Un=qt.route;return zi(Pe,Un),Un}}const it=function(Be){return new xo(new T.X(Be.url),new T.X(Be.params),new T.X(Be.queryParams),new T.X(Be.fragment),new T.X(Be.data),Be.outlet,Be.component,Be)}(Pe.value),yt=Pe.children.map(qt=>br(Be,qt));return new rr(it,yt)}}function zi(Be,Pe){if(Be.value.routeConfig!==Pe.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(Be.children.length!==Pe.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");Pe.value._futureSnapshot=Be.value;for(let Ce=0;Ce<Be.children.length;++Ce)zi(Be.children[Ce],Pe.children[Ce])}function _s(Be){return"object"==typeof Be&&null!=Be&&!Be.outlets&&!Be.segmentPath}function bs(Be){return"object"==typeof Be&&null!=Be&&Be.outlets}function qo(Be,Pe,Ce,it,yt){let qt={};return it&&Wt(it,(Un,qn)=>{qt[qn]=Array.isArray(Un)?Un.map(yi=>`${yi}`):`${Un}`}),new mr(Ce.root===Be?Pe:ra(Ce.root,Be,Pe),qt,yt)}function ra(Be,Pe,Ce){const it={};return Wt(Be.children,(yt,qt)=>{it[qt]=yt===Pe?Ce:ra(yt,Pe,Ce)}),new Xt(Be.segments,it)}class Ia{constructor(Pe,Ce,it){if(this.isAbsolute=Pe,this.numberOfDoubleDots=Ce,this.commands=it,Pe&&it.length>0&&_s(it[0]))throw new Error("Root segment cannot have matrix parameters");const yt=it.find(bs);if(yt&&yt!==Br(it))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Bs{constructor(Pe,Ce,it){this.segmentGroup=Pe,this.processChildren=Ce,this.index=it}}function Da(Be,Pe,Ce){if(Be||(Be=new Xt([],{})),0===Be.segments.length&&Be.hasChildren())return Ao(Be,Pe,Ce);const it=function(Be,Pe,Ce){let it=0,yt=Pe;const qt={match:!1,pathIndex:0,commandIndex:0};for(;yt<Be.segments.length;){if(it>=Ce.length)return qt;const Un=Be.segments[yt],qn=Ce[it];if(bs(qn))break;const yi=`${qn}`,Go=it<Ce.length-1?Ce[it+1]:null;if(yt>0&&void 0===yi)break;if(yi&&Go&&"object"==typeof Go&&void 0===Go.outlets){if(!Qs(yi,Go,Un))return qt;it+=2}else{if(!Qs(yi,{},Un))return qt;it++}yt++}return{match:!0,pathIndex:yt,commandIndex:it}}(Be,Pe,Ce),yt=Ce.slice(it.commandIndex);if(it.match&&it.pathIndex<Be.segments.length){const qt=new Xt(Be.segments.slice(0,it.pathIndex),{});return qt.children[Ir]=new Xt(Be.segments.slice(it.pathIndex),Be.children),Ao(qt,0,yt)}return it.match&&0===yt.length?new Xt(Be.segments,{}):it.match&&!Be.hasChildren()?gs(Be,Pe,Ce):it.match?Ao(Be,0,yt):gs(Be,Pe,Ce)}function Ao(Be,Pe,Ce){if(0===Ce.length)return new Xt(Be.segments,{});{const it=function(Be){return bs(Be[0])?Be[0].outlets:{[Ir]:Be}}(Ce),yt={};return Wt(it,(qt,Un)=>{"string"==typeof qt&&(qt=[qt]),null!==qt&&(yt[Un]=Da(Be.children[Un],Pe,qt))}),Wt(Be.children,(qt,Un)=>{void 0===it[Un]&&(yt[Un]=qt)}),new Xt(Be.segments,yt)}}function gs(Be,Pe,Ce){const it=Be.segments.slice(0,Pe);let yt=0;for(;yt<Ce.length;){const qt=Ce[yt];if(bs(qt)){const yi=Ra(qt.outlets);return new Xt(it,yi)}if(0===yt&&_s(Ce[0])){it.push(new zn(Be.segments[Pe].path,pl(Ce[0]))),yt++;continue}const Un=bs(qt)?qt.outlets[Ir]:`${qt}`,qn=yt<Ce.length-1?Ce[yt+1]:null;Un&&qn&&_s(qn)?(it.push(new zn(Un,pl(qn))),yt+=2):(it.push(new zn(Un,{})),yt++)}return new Xt(it,{})}function Ra(Be){const Pe={};return Wt(Be,(Ce,it)=>{"string"==typeof Ce&&(Ce=[Ce]),null!==Ce&&(Pe[it]=gs(new Xt([],{}),0,Ce))}),Pe}function pl(Be){const Pe={};return Wt(Be,(Ce,it)=>Pe[it]=`${Ce}`),Pe}function Qs(Be,Pe,Ce){return Be==Ce.path&&di(Pe,Ce.parameters)}class Eo{constructor(Pe,Ce,it,yt){this.routeReuseStrategy=Pe,this.futureState=Ce,this.currState=it,this.forwardEvent=yt}activate(Pe){const Ce=this.futureState._root,it=this.currState?this.currState._root:null;this.deactivateChildRoutes(Ce,it,Pe),pr(this.futureState.root),this.activateChildRoutes(Ce,it,Pe)}deactivateChildRoutes(Pe,Ce,it){const yt=ri(Ce);Pe.children.forEach(qt=>{const Un=qt.value.outlet;this.deactivateRoutes(qt,yt[Un],it),delete yt[Un]}),Wt(yt,(qt,Un)=>{this.deactivateRouteAndItsChildren(qt,it)})}deactivateRoutes(Pe,Ce,it){const yt=Pe.value,qt=Ce?Ce.value:null;if(yt===qt)if(yt.component){const Un=it.getContext(yt.outlet);Un&&this.deactivateChildRoutes(Pe,Ce,Un.children)}else this.deactivateChildRoutes(Pe,Ce,it);else qt&&this.deactivateRouteAndItsChildren(Ce,it)}deactivateRouteAndItsChildren(Pe,Ce){this.routeReuseStrategy.shouldDetach(Pe.value.snapshot)?this.detachAndStoreRouteSubtree(Pe,Ce):this.deactivateRouteAndOutlet(Pe,Ce)}detachAndStoreRouteSubtree(Pe,Ce){const it=Ce.getContext(Pe.value.outlet);if(it&&it.outlet){const yt=it.outlet.detach(),qt=it.children.onOutletDeactivated();this.routeReuseStrategy.store(Pe.value.snapshot,{componentRef:yt,route:Pe,contexts:qt})}}deactivateRouteAndOutlet(Pe,Ce){const it=Ce.getContext(Pe.value.outlet),yt=it&&Pe.value.component?it.children:Ce,qt=ri(Pe);for(const Un of Object.keys(qt))this.deactivateRouteAndItsChildren(qt[Un],yt);it&&it.outlet&&(it.outlet.deactivate(),it.children.onOutletDeactivated(),it.attachRef=null,it.resolver=null,it.route=null)}activateChildRoutes(Pe,Ce,it){const yt=ri(Ce);Pe.children.forEach(qt=>{this.activateRoutes(qt,yt[qt.value.outlet],it),this.forwardEvent(new Hr(qt.value.snapshot))}),Pe.children.length&&this.forwardEvent(new zt(Pe.value.snapshot))}activateRoutes(Pe,Ce,it){const yt=Pe.value,qt=Ce?Ce.value:null;if(pr(yt),yt===qt)if(yt.component){const Un=it.getOrCreateContext(yt.outlet);this.activateChildRoutes(Pe,Ce,Un.children)}else this.activateChildRoutes(Pe,Ce,it);else if(yt.component){const Un=it.getOrCreateContext(yt.outlet);if(this.routeReuseStrategy.shouldAttach(yt.snapshot)){const qn=this.routeReuseStrategy.retrieve(yt.snapshot);this.routeReuseStrategy.store(yt.snapshot,null),Un.children.onOutletReAttached(qn.contexts),Un.attachRef=qn.componentRef,Un.route=qn.route.value,Un.outlet&&Un.outlet.attach(qn.componentRef,qn.route.value),ks(qn.route)}else{const qn=function(Be){for(let Pe=Be.parent;Pe;Pe=Pe.parent){const Ce=Pe.routeConfig;if(Ce&&Ce._loadedConfig)return Ce._loadedConfig;if(Ce&&Ce.component)return null}return null}(yt.snapshot),yi=qn?qn.module.componentFactoryResolver:null;Un.attachRef=null,Un.route=yt,Un.resolver=yi,Un.outlet&&Un.outlet.activateWith(yt,yi),this.activateChildRoutes(Pe,null,Un.children)}}else this.activateChildRoutes(Pe,null,it)}}function ks(Be){pr(Be.value),Be.children.forEach(ks)}class Co{constructor(Pe,Ce){this.routes=Pe,this.module=Ce}}function kr(Be){return"function"==typeof Be}function tt(Be){return Be instanceof mr}const sn=Symbol("INITIAL_VALUE");function ei(){return(0,ee.w)(Be=>(0,M.aj)(Be.map(Pe=>Pe.pipe((0,ue.q)(1),(0,ae.O)(sn)))).pipe((0,$.R)((Pe,Ce)=>{let it=!1;return Ce.reduce((yt,qt,Un)=>yt!==sn?yt:(qt===sn&&(it=!0),it||!1!==qt&&Un!==Ce.length-1&&!tt(qt)?yt:qt),Pe)},sn),(0,se.h)(Pe=>Pe!==sn),(0,Q.U)(Pe=>tt(Pe)?Pe:!0===Pe),(0,ue.q)(1)))}let fi=(()=>{class Be{}return Be.\u0275fac=function(Ce){return new(Ce||Be)},Be.\u0275cmp=u.Xpm({type:Be,selectors:[["ng-component"]],decls:1,vars:0,template:function(Ce,it){1&Ce&&u._UZ(0,"router-outlet")},directives:function(){return[co]},encapsulation:2}),Be})();function Oi(Be,Pe=""){for(let Ce=0;Ce<Be.length;Ce++){const it=Be[Ce];os(it,Ro(Pe,it))}}function os(Be,Pe){Be.children&&Oi(Be.children,Pe)}function Ro(Be,Pe){return Pe?Be||Pe.path?Be&&!Pe.path?`${Be}/`:!Be&&Pe.path?Pe.path:`${Be}/${Pe.path}`:"":Be}function Uo(Be){const Pe=Be.children&&Be.children.map(Uo),Ce=Pe?Object.assign(Object.assign({},Be),{children:Pe}):Object.assign({},Be);return!Ce.component&&(Pe||Ce.loadChildren)&&Ce.outlet&&Ce.outlet!==Ir&&(Ce.component=fi),Ce}function To(Be){return Be.outlet||Ir}function Ea(Be,Pe){const Ce=Be.filter(it=>To(it)===Pe);return Ce.push(...Be.filter(it=>To(it)!==Pe)),Ce}const al={matched:!1,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};function qu(Be,Pe,Ce){var it;if(""===Pe.path)return"full"===Pe.pathMatch&&(Be.hasChildren()||Ce.length>0)?Object.assign({},al):{matched:!0,consumedSegments:[],lastChild:0,parameters:{},positionalParamSegments:{}};const qt=(Pe.matcher||Zr)(Ce,Be,Pe);if(!qt)return Object.assign({},al);const Un={};Wt(qt.posParams,(yi,Go)=>{Un[Go]=yi.path});const qn=qt.consumed.length>0?Object.assign(Object.assign({},Un),qt.consumed[qt.consumed.length-1].parameters):Un;return{matched:!0,consumedSegments:qt.consumed,lastChild:qt.consumed.length,parameters:qn,positionalParamSegments:null!==(it=qt.posParams)&&void 0!==it?it:{}}}function Ru(Be,Pe,Ce,it,yt="corrected"){if(Ce.length>0&&function(Be,Pe,Ce){return Ce.some(it=>Zl(Be,Pe,it)&&To(it)!==Ir)}(Be,Ce,it)){const Un=new Xt(Pe,function(Be,Pe,Ce,it){const yt={};yt[Ir]=it,it._sourceSegment=Be,it._segmentIndexShift=Pe.length;for(const qt of Ce)if(""===qt.path&&To(qt)!==Ir){const Un=new Xt([],{});Un._sourceSegment=Be,Un._segmentIndexShift=Pe.length,yt[To(qt)]=Un}return yt}(Be,Pe,it,new Xt(Ce,Be.children)));return Un._sourceSegment=Be,Un._segmentIndexShift=Pe.length,{segmentGroup:Un,slicedSegments:[]}}if(0===Ce.length&&function(Be,Pe,Ce){return Ce.some(it=>Zl(Be,Pe,it))}(Be,Ce,it)){const Un=new Xt(Be.segments,function(Be,Pe,Ce,it,yt,qt){const Un={};for(const qn of it)if(Zl(Be,Ce,qn)&&!yt[To(qn)]){const yi=new Xt([],{});yi._sourceSegment=Be,yi._segmentIndexShift="legacy"===qt?Be.segments.length:Pe.length,Un[To(qn)]=yi}return Object.assign(Object.assign({},yt),Un)}(Be,Pe,Ce,it,Be.children,yt));return Un._sourceSegment=Be,Un._segmentIndexShift=Pe.length,{segmentGroup:Un,slicedSegments:Ce}}const qt=new Xt(Be.segments,Be.children);return qt._sourceSegment=Be,qt._segmentIndexShift=Pe.length,{segmentGroup:qt,slicedSegments:Ce}}function Zl(Be,Pe,Ce){return(!(Be.hasChildren()||Pe.length>0)||"full"!==Ce.pathMatch)&&""===Ce.path}function $s(Be,Pe,Ce,it){return!!(To(Be)===it||it!==Ir&&Zl(Pe,Ce,Be))&&("**"===Be.path||qu(Pe,Be,Ce).matched)}function dc(Be,Pe,Ce){return 0===Pe.length&&!Be.children[Ce]}class ou{constructor(Pe){this.segmentGroup=Pe||null}}class el{constructor(Pe){this.urlTree=Pe}}function Cu(Be){return new p.y(Pe=>Pe.error(new ou(Be)))}function jl(Be){return new p.y(Pe=>Pe.error(new el(Be)))}function rt(Be){return new p.y(Pe=>Pe.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${Be}'`)))}class Te{constructor(Pe,Ce,it,yt,qt){this.configLoader=Ce,this.urlSerializer=it,this.urlTree=yt,this.config=qt,this.allowRedirects=!0,this.ngModule=Pe.get(u.h0i)}apply(){const Pe=Ru(this.urlTree.root,[],[],this.config).segmentGroup,Ce=new Xt(Pe.segments,Pe.children);return this.expandSegmentGroup(this.ngModule,this.config,Ce,Ir).pipe((0,Q.U)(qt=>this.createUrlTree(De(qt),this.urlTree.queryParams,this.urlTree.fragment))).pipe((0,ve.K)(qt=>{if(qt instanceof el)return this.allowRedirects=!1,this.match(qt.urlTree);throw qt instanceof ou?this.noMatchError(qt):qt}))}match(Pe){return this.expandSegmentGroup(this.ngModule,this.config,Pe.root,Ir).pipe((0,Q.U)(yt=>this.createUrlTree(De(yt),Pe.queryParams,Pe.fragment))).pipe((0,ve.K)(yt=>{throw yt instanceof ou?this.noMatchError(yt):yt}))}noMatchError(Pe){return new Error(`Cannot match any routes. URL Segment: '${Pe.segmentGroup}'`)}createUrlTree(Pe,Ce,it){const yt=Pe.segments.length>0?new Xt([],{[Ir]:Pe}):Pe;return new mr(yt,Ce,it)}expandSegmentGroup(Pe,Ce,it,yt){return 0===it.segments.length&&it.hasChildren()?this.expandChildren(Pe,Ce,it).pipe((0,Q.U)(qt=>new Xt([],qt))):this.expandSegment(Pe,it,Ce,it.segments,yt,!0)}expandChildren(Pe,Ce,it){const yt=[];for(const qt of Object.keys(it.children))"primary"===qt?yt.unshift(qt):yt.push(qt);return(0,f.D)(yt).pipe((0,oe.b)(qt=>{const Un=it.children[qt],qn=Ea(Ce,qt);return this.expandSegmentGroup(Pe,qn,Un,qt).pipe((0,Q.U)(yi=>({segment:yi,outlet:qt})))}),(0,$.R)((qt,Un)=>(qt[Un.outlet]=Un.segment,qt),{}),(0,he.Z)())}expandSegment(Pe,Ce,it,yt,qt,Un){return(0,f.D)(it).pipe((0,oe.b)(qn=>this.expandSegmentAgainstRoute(Pe,Ce,it,qn,yt,qt,Un).pipe((0,ve.K)(Go=>{if(Go instanceof ou)return(0,y.of)(null);throw Go}))),(0,me.P)(qn=>!!qn),(0,ve.K)((qn,yi)=>{if(qn instanceof R.K||"EmptyError"===qn.name){if(dc(Ce,yt,qt))return(0,y.of)(new Xt([],{}));throw new ou(Ce)}throw qn}))}expandSegmentAgainstRoute(Pe,Ce,it,yt,qt,Un,qn){return $s(yt,Ce,qt,Un)?void 0===yt.redirectTo?this.matchSegmentAgainstRoute(Pe,Ce,yt,qt,Un):qn&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(Pe,Ce,it,yt,qt,Un):Cu(Ce):Cu(Ce)}expandSegmentAgainstRouteUsingRedirect(Pe,Ce,it,yt,qt,Un){return"**"===yt.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(Pe,it,yt,Un):this.expandRegularSegmentAgainstRouteUsingRedirect(Pe,Ce,it,yt,qt,Un)}expandWildCardWithParamsAgainstRouteUsingRedirect(Pe,Ce,it,yt){const qt=this.applyRedirectCommands([],it.redirectTo,{});return it.redirectTo.startsWith("/")?jl(qt):this.lineralizeSegments(it,qt).pipe((0,Oe.zg)(Un=>{const qn=new Xt(Un,{});return this.expandSegment(Pe,qn,Ce,Un,yt,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(Pe,Ce,it,yt,qt,Un){const{matched:qn,consumedSegments:yi,lastChild:Go,positionalParamSegments:ka}=qu(Ce,yt,qt);if(!qn)return Cu(Ce);const ss=this.applyRedirectCommands(yi,yt.redirectTo,ka);return yt.redirectTo.startsWith("/")?jl(ss):this.lineralizeSegments(yt,ss).pipe((0,Oe.zg)(Oa=>this.expandSegment(Pe,Ce,it,Oa.concat(qt.slice(Go)),Un,!1)))}matchSegmentAgainstRoute(Pe,Ce,it,yt,qt){if("**"===it.path)return it.loadChildren?(it._loadedConfig?(0,y.of)(it._loadedConfig):this.configLoader.load(Pe.injector,it)).pipe((0,Q.U)(Oa=>(it._loadedConfig=Oa,new Xt(yt,{})))):(0,y.of)(new Xt(yt,{}));const{matched:Un,consumedSegments:qn,lastChild:yi}=qu(Ce,it,yt);if(!Un)return Cu(Ce);const Go=yt.slice(yi);return this.getChildConfig(Pe,it,yt).pipe((0,Oe.zg)(ss=>{const Oa=ss.module,Us=ss.routes,{segmentGroup:fc,slicedSegments:va}=Ru(Ce,qn,Go,Us),wl=new Xt(fc.segments,fc.children);if(0===va.length&&wl.hasChildren())return this.expandChildren(Oa,Us,wl).pipe((0,Q.U)(nl=>new Xt(qn,nl)));if(0===Us.length&&0===va.length)return(0,y.of)(new Xt(qn,{}));const tl=To(it)===qt;return this.expandSegment(Oa,wl,Us,va,tl?Ir:qt,!0).pipe((0,Q.U)(Ha=>new Xt(qn.concat(Ha.segments),Ha.children)))}))}getChildConfig(Pe,Ce,it){return Ce.children?(0,y.of)(new Co(Ce.children,Pe)):Ce.loadChildren?void 0!==Ce._loadedConfig?(0,y.of)(Ce._loadedConfig):this.runCanLoadGuards(Pe.injector,Ce,it).pipe((0,Oe.zg)(yt=>{return yt?this.configLoader.load(Pe.injector,Ce).pipe((0,Q.U)(qt=>(Ce._loadedConfig=qt,qt))):(Be=Ce,new p.y(Pe=>Pe.error(In(`Cannot load children because the guard of the route "path: '${Be.path}'" returned false`))));var Be})):(0,y.of)(new Co([],Pe))}runCanLoadGuards(Pe,Ce,it){const yt=Ce.canLoad;if(!yt||0===yt.length)return(0,y.of)(!0);const qt=yt.map(Un=>{const qn=Pe.get(Un);let yi;if((Be=qn)&&kr(Be.canLoad))yi=qn.canLoad(Ce,it);else{if(!kr(qn))throw new Error("Invalid CanLoad guard");yi=qn(Ce,it)}var Be;return Jn(yi)});return(0,y.of)(qt).pipe(ei(),(0,ce.b)(Un=>{if(!tt(Un))return;const qn=In(`Redirecting to "${this.urlSerializer.serialize(Un)}"`);throw qn.url=Un,qn}),(0,Q.U)(Un=>!0===Un))}lineralizeSegments(Pe,Ce){let it=[],yt=Ce.root;for(;;){if(it=it.concat(yt.segments),0===yt.numberOfChildren)return(0,y.of)(it);if(yt.numberOfChildren>1||!yt.children[Ir])return rt(Pe.redirectTo);yt=yt.children[Ir]}}applyRedirectCommands(Pe,Ce,it){return this.applyRedirectCreatreUrlTree(Ce,this.urlSerializer.parse(Ce),Pe,it)}applyRedirectCreatreUrlTree(Pe,Ce,it,yt){const qt=this.createSegmentGroup(Pe,Ce.root,it,yt);return new mr(qt,this.createQueryParams(Ce.queryParams,this.urlTree.queryParams),Ce.fragment)}createQueryParams(Pe,Ce){const it={};return Wt(Pe,(yt,qt)=>{if("string"==typeof yt&&yt.startsWith(":")){const qn=yt.substring(1);it[qt]=Ce[qn]}else it[qt]=yt}),it}createSegmentGroup(Pe,Ce,it,yt){const qt=this.createSegments(Pe,Ce.segments,it,yt);let Un={};return Wt(Ce.children,(qn,yi)=>{Un[yi]=this.createSegmentGroup(Pe,qn,it,yt)}),new Xt(qt,Un)}createSegments(Pe,Ce,it,yt){return Ce.map(qt=>qt.path.startsWith(":")?this.findPosParam(Pe,qt,yt):this.findOrReturn(qt,it))}findPosParam(Pe,Ce,it){const yt=it[Ce.path.substring(1)];if(!yt)throw new Error(`Cannot redirect to '${Pe}'. Cannot find '${Ce.path}'.`);return yt}findOrReturn(Pe,Ce){let it=0;for(const yt of Ce){if(yt.path===Pe.path)return Ce.splice(it),yt;it++}return Pe}}function De(Be){const Pe={};for(const it of Object.keys(Be.children)){const qt=De(Be.children[it]);(qt.segments.length>0||qt.hasChildren())&&(Pe[it]=qt)}return function(Be){if(1===Be.numberOfChildren&&Be.children[Ir]){const Pe=Be.children[Ir];return new Xt(Be.segments.concat(Pe.segments),Pe.children)}return Be}(new Xt(Be.segments,Pe))}class dr{constructor(Pe){this.path=Pe,this.route=this.path[this.path.length-1]}}class Qi{constructor(Pe,Ce){this.component=Pe,this.route=Ce}}function Jo(Be,Pe,Ce){const it=Be._root;return Ma(it,Pe?Pe._root:null,Ce,[it.value])}function vs(Be,Pe,Ce){const it=function(Be){if(!Be)return null;for(let Pe=Be.parent;Pe;Pe=Pe.parent){const Ce=Pe.routeConfig;if(Ce&&Ce._loadedConfig)return Ce._loadedConfig}return null}(Pe);return(it?it.module.injector:Ce).get(Be)}function Ma(Be,Pe,Ce,it,yt={canDeactivateChecks:[],canActivateChecks:[]}){const qt=ri(Pe);return Be.children.forEach(Un=>{(function(Be,Pe,Ce,it,yt={canDeactivateChecks:[],canActivateChecks:[]}){const qt=Be.value,Un=Pe?Pe.value:null,qn=Ce?Ce.getContext(Be.value.outlet):null;if(Un&&qt.routeConfig===Un.routeConfig){const yi=function(Be,Pe,Ce){if("function"==typeof Ce)return Ce(Be,Pe);switch(Ce){case"pathParamsChange":return!si(Be.url,Pe.url);case"pathParamsOrQueryParamsChange":return!si(Be.url,Pe.url)||!di(Be.queryParams,Pe.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!nn(Be,Pe)||!di(Be.queryParams,Pe.queryParams);case"paramsChange":default:return!nn(Be,Pe)}}(Un,qt,qt.routeConfig.runGuardsAndResolvers);yi?yt.canActivateChecks.push(new dr(it)):(qt.data=Un.data,qt._resolvedData=Un._resolvedData),Ma(Be,Pe,qt.component?qn?qn.children:null:Ce,it,yt),yi&&qn&&qn.outlet&&qn.outlet.isActivated&&yt.canDeactivateChecks.push(new Qi(qn.outlet.component,Un))}else Un&&Pl(Pe,qn,yt),yt.canActivateChecks.push(new dr(it)),Ma(Be,null,qt.component?qn?qn.children:null:Ce,it,yt)})(Un,qt[Un.value.outlet],Ce,it.concat([Un.value]),yt),delete qt[Un.value.outlet]}),Wt(qt,(Un,qn)=>Pl(Un,Ce.getContext(qn),yt)),yt}function Pl(Be,Pe,Ce){const it=ri(Be),yt=Be.value;Wt(it,(qt,Un)=>{Pl(qt,yt.component?Pe?Pe.children.getContext(Un):null:Pe,Ce)}),Ce.canDeactivateChecks.push(new Qi(yt.component&&Pe&&Pe.outlet&&Pe.outlet.isActivated?Pe.outlet.component:null,yt))}class md{}function tc(Be){return new p.y(Pe=>Pe.error(Be))}class ua{constructor(Pe,Ce,it,yt,qt,Un){this.rootComponentType=Pe,this.config=Ce,this.urlTree=it,this.url=yt,this.paramsInheritanceStrategy=qt,this.relativeLinkResolution=Un}recognize(){const Pe=Ru(this.urlTree.root,[],[],this.config.filter(Un=>void 0===Un.redirectTo),this.relativeLinkResolution).segmentGroup,Ce=this.processSegmentGroup(this.config,Pe,Ir);if(null===Ce)return null;const it=new ln([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},Ir,this.rootComponentType,null,this.urlTree.root,-1,{}),yt=new rr(it,Ce),qt=new Ht(this.url,yt);return this.inheritParamsAndData(qt._root),qt}inheritParamsAndData(Pe){const Ce=Pe.value,it=Li(Ce,this.paramsInheritanceStrategy);Ce.params=Object.freeze(it.params),Ce.data=Object.freeze(it.data),Pe.children.forEach(yt=>this.inheritParamsAndData(yt))}processSegmentGroup(Pe,Ce,it){return 0===Ce.segments.length&&Ce.hasChildren()?this.processChildren(Pe,Ce):this.processSegment(Pe,Ce,Ce.segments,it)}processChildren(Pe,Ce){const it=[];for(const qt of Object.keys(Ce.children)){const Un=Ce.children[qt],qn=Ea(Pe,qt),yi=this.processSegmentGroup(qn,Un,qt);if(null===yi)return null;it.push(...yi)}const yt=bl(it);return yt.sort((Pe,Ce)=>Pe.value.outlet===Ir?-1:Ce.value.outlet===Ir?1:Pe.value.outlet.localeCompare(Ce.value.outlet)),yt}processSegment(Pe,Ce,it,yt){for(const qt of Pe){const Un=this.processSegmentAgainstRoute(qt,Ce,it,yt);if(null!==Un)return Un}return dc(Ce,it,yt)?[]:null}processSegmentAgainstRoute(Pe,Ce,it,yt){if(Pe.redirectTo||!$s(Pe,Ce,it,yt))return null;let qt,Un=[],qn=[];if("**"===Pe.path){const Us=it.length>0?Br(it).parameters:{};qt=new ln(it,Us,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Gs(Pe),To(Pe),Pe.component,Pe,bu(Ce),cu(Ce)+it.length,$u(Pe))}else{const Us=qu(Ce,Pe,it);if(!Us.matched)return null;Un=Us.consumedSegments,qn=it.slice(Us.lastChild),qt=new ln(Un,Us.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Gs(Pe),To(Pe),Pe.component,Pe,bu(Ce),cu(Ce)+Un.length,$u(Pe))}const yi=(Be=Pe).children?Be.children:Be.loadChildren?Be._loadedConfig.routes:[],{segmentGroup:Go,slicedSegments:ka}=Ru(Ce,Un,qn,yi.filter(Us=>void 0===Us.redirectTo),this.relativeLinkResolution);var Be;if(0===ka.length&&Go.hasChildren()){const Us=this.processChildren(yi,Go);return null===Us?null:[new rr(qt,Us)]}if(0===yi.length&&0===ka.length)return[new rr(qt,[])];const ss=To(Pe)===yt,Oa=this.processSegment(yi,Go,ka,ss?Ir:yt);return null===Oa?null:[new rr(qt,Oa)]}}function ku(Be){const Pe=Be.value.routeConfig;return Pe&&""===Pe.path&&void 0===Pe.redirectTo}function bl(Be){const Pe=[],Ce=new Set;for(const it of Be){if(!ku(it)){Pe.push(it);continue}const yt=Pe.find(qt=>it.value.routeConfig===qt.value.routeConfig);void 0!==yt?(yt.children.push(...it.children),Ce.add(yt)):Pe.push(it)}for(const it of Ce){const yt=bl(it.children);Pe.push(new rr(it.value,yt))}return Pe.filter(it=>!Ce.has(it))}function bu(Be){let Pe=Be;for(;Pe._sourceSegment;)Pe=Pe._sourceSegment;return Pe}function cu(Be){let Pe=Be,Ce=Pe._segmentIndexShift?Pe._segmentIndexShift:0;for(;Pe._sourceSegment;)Pe=Pe._sourceSegment,Ce+=Pe._segmentIndexShift?Pe._segmentIndexShift:0;return Ce-1}function Gs(Be){return Be.data||{}}function $u(Be){return Be.resolve||{}}function _u(Be){return(0,ee.w)(Pe=>{const Ce=Be(Pe);return Ce?(0,f.D)(Ce).pipe((0,Q.U)(()=>Pe)):(0,y.of)(Pe)})}class Ja extends class{shouldDetach(Pe){return!1}store(Pe,Ce){}shouldAttach(Pe){return!1}retrieve(Pe){return null}shouldReuseRoute(Pe,Ce){return Pe.routeConfig===Ce.routeConfig}}{}const hl=new u.OlP("ROUTES");class Vl{constructor(Pe,Ce,it,yt){this.loader=Pe,this.compiler=Ce,this.onLoadStartListener=it,this.onLoadEndListener=yt}load(Pe,Ce){if(Ce._loader$)return Ce._loader$;this.onLoadStartListener&&this.onLoadStartListener(Ce);const yt=this.loadModuleFactory(Ce.loadChildren).pipe((0,Q.U)(qt=>{this.onLoadEndListener&&this.onLoadEndListener(Ce);const Un=qt.create(Pe);return new Co(Hi(Un.injector.get(hl,void 0,u.XFs.Self|u.XFs.Optional)).map(Uo),Un)}),(0,ve.K)(qt=>{throw Ce._loader$=void 0,qt}));return Ce._loader$=new Z.c(yt,()=>new J.xQ).pipe((0,ze.x)()),Ce._loader$}loadModuleFactory(Pe){return"string"==typeof Pe?(0,f.D)(this.loader.load(Pe)):Jn(Pe()).pipe((0,Oe.zg)(Ce=>Ce instanceof u.YKP?(0,y.of)(Ce):(0,f.D)(this.compiler.compileModuleAsync(Ce))))}}class Hs{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new V,this.attachRef=null}}class V{constructor(){this.contexts=new Map}onChildOutletCreated(Pe,Ce){const it=this.getOrCreateContext(Pe);it.outlet=Ce,this.contexts.set(Pe,it)}onChildOutletDestroyed(Pe){const Ce=this.getContext(Pe);Ce&&(Ce.outlet=null,Ce.attachRef=null)}onOutletDeactivated(){const Pe=this.contexts;return this.contexts=new Map,Pe}onOutletReAttached(Pe){this.contexts=Pe}getOrCreateContext(Pe){let Ce=this.getContext(Pe);return Ce||(Ce=new Hs,this.contexts.set(Pe,Ce)),Ce}getContext(Pe){return this.contexts.get(Pe)||null}}class ot{shouldProcessUrl(Pe){return!0}extract(Pe){return Pe}merge(Pe,Ce){return Pe}}function _t(Be){throw Be}function lt(Be,Pe,Ce){return Pe.parse("/")}function un(Be,Pe){return(0,y.of)(null)}const yn={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Or={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Vr=(()=>{class Be{constructor(Ce,it,yt,qt,Un,qn,yi,Go){this.rootComponentType=Ce,this.urlSerializer=it,this.rootContexts=yt,this.location=qt,this.config=Go,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.disposed=!1,this.lastLocationChangeInfo=null,this.navigationId=0,this.currentPageId=0,this.isNgZoneEnabled=!1,this.events=new J.xQ,this.errorHandler=_t,this.malformedUriErrorHandler=lt,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:un,afterPreactivation:un},this.urlHandlingStrategy=new ot,this.routeReuseStrategy=new Ja,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="corrected",this.canceledNavigationResolution="replace",this.ngModule=Un.get(u.h0i),this.console=Un.get(u.c2e);const Oa=Un.get(u.R0b);this.isNgZoneEnabled=Oa instanceof u.R0b&&u.R0b.isInAngularZone(),this.resetConfig(Go),this.currentUrlTree=new mr(new Xt([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Vl(qn,yi,Us=>this.triggerEvent(new mt(Us)),Us=>this.triggerEvent(new Yt(Us))),this.routerState=Ti(this.currentUrlTree,this.rootComponentType),this.transitions=new T.X({id:0,targetPageId:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}get browserPageId(){var Ce;return null===(Ce=this.location.getState())||void 0===Ce?void 0:Ce.\u0275routerPageId}setupNavigations(Ce){const it=this.events;return Ce.pipe((0,se.h)(yt=>0!==yt.id),(0,Q.U)(yt=>Object.assign(Object.assign({},yt),{extractedUrl:this.urlHandlingStrategy.extract(yt.rawUrl)})),(0,ee.w)(yt=>{let qt=!1,Un=!1;return(0,y.of)(yt).pipe((0,ce.b)(qn=>{this.currentNavigation={id:qn.id,initialUrl:qn.currentRawUrl,extractedUrl:qn.extractedUrl,trigger:qn.source,extras:qn.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign(Object.assign({},this.lastSuccessfulNavigation),{previousNavigation:null}):null}}),(0,ee.w)(qn=>{const yi=this.browserUrlTree.toString(),Go=!this.navigated||qn.extractedUrl.toString()!==yi||yi!==this.currentUrlTree.toString();if(("reload"===this.onSameUrlNavigation||Go)&&this.urlHandlingStrategy.shouldProcessUrl(qn.rawUrl))return oi(qn.source)&&(this.browserUrlTree=qn.extractedUrl),(0,y.of)(qn).pipe((0,ee.w)(ss=>{const Oa=this.transitions.getValue();return it.next(new Ve(ss.id,this.serializeUrl(ss.extractedUrl),ss.source,ss.restoredState)),Oa!==this.transitions.getValue()?e.E:Promise.resolve(ss)}),function(Be,Pe,Ce,it){return(0,ee.w)(yt=>function(Be,Pe,Ce,it,yt){return new Te(Be,Pe,Ce,it,yt).apply()}(Be,Pe,Ce,yt.extractedUrl,it).pipe((0,Q.U)(qt=>Object.assign(Object.assign({},yt),{urlAfterRedirects:qt}))))}(this.ngModule.injector,this.configLoader,this.urlSerializer,this.config),(0,ce.b)(ss=>{this.currentNavigation=Object.assign(Object.assign({},this.currentNavigation),{finalUrl:ss.urlAfterRedirects})}),function(Be,Pe,Ce,it,yt){return(0,Oe.zg)(qt=>function(Be,Pe,Ce,it,yt="emptyOnly",qt="legacy"){try{const Un=new ua(Be,Pe,Ce,it,yt,qt).recognize();return null===Un?tc(new md):(0,y.of)(Un)}catch(Un){return tc(Un)}}(Be,Pe,qt.urlAfterRedirects,Ce(qt.urlAfterRedirects),it,yt).pipe((0,Q.U)(Un=>Object.assign(Object.assign({},qt),{targetSnapshot:Un}))))}(this.rootComponentType,this.config,ss=>this.serializeUrl(ss),this.paramsInheritanceStrategy,this.relativeLinkResolution),(0,ce.b)(ss=>{"eager"===this.urlUpdateStrategy&&(ss.extras.skipLocationChange||this.setBrowserUrl(ss.urlAfterRedirects,ss),this.browserUrlTree=ss.urlAfterRedirects);const Oa=new en(ss.id,this.serializeUrl(ss.extractedUrl),this.serializeUrl(ss.urlAfterRedirects),ss.targetSnapshot);it.next(Oa)}));if(Go&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:Oa,extractedUrl:Us,source:fc,restoredState:va,extras:wl}=qn,tl=new Ve(Oa,this.serializeUrl(Us),fc,va);it.next(tl);const $a=Ti(Us,this.rootComponentType).snapshot;return(0,y.of)(Object.assign(Object.assign({},qn),{targetSnapshot:$a,urlAfterRedirects:Us,extras:Object.assign(Object.assign({},wl),{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=qn.rawUrl,this.browserUrlTree=qn.urlAfterRedirects,qn.resolve(null),e.E}),_u(qn=>{const{targetSnapshot:yi,id:Go,extractedUrl:ka,rawUrl:ss,extras:{skipLocationChange:Oa,replaceUrl:Us}}=qn;return this.hooks.beforePreactivation(yi,{navigationId:Go,appliedUrlTree:ka,rawUrlTree:ss,skipLocationChange:!!Oa,replaceUrl:!!Us})}),(0,ce.b)(qn=>{const yi=new $t(qn.id,this.serializeUrl(qn.extractedUrl),this.serializeUrl(qn.urlAfterRedirects),qn.targetSnapshot);this.triggerEvent(yi)}),(0,Q.U)(qn=>Object.assign(Object.assign({},qn),{guards:Jo(qn.targetSnapshot,qn.currentSnapshot,this.rootContexts)})),function(Be,Pe){return(0,Oe.zg)(Ce=>{const{targetSnapshot:it,currentSnapshot:yt,guards:{canActivateChecks:qt,canDeactivateChecks:Un}}=Ce;return 0===Un.length&&0===qt.length?(0,y.of)(Object.assign(Object.assign({},Ce),{guardsResult:!0})):function(Be,Pe,Ce,it){return(0,f.D)(Be).pipe((0,Oe.zg)(yt=>function(Be,Pe,Ce,it,yt){const qt=Pe&&Pe.routeConfig?Pe.routeConfig.canDeactivate:null;if(!qt||0===qt.length)return(0,y.of)(!0);const Un=qt.map(qn=>{const yi=vs(qn,Pe,yt);let Go;if(function(Be){return Be&&kr(Be.canDeactivate)}(yi))Go=Jn(yi.canDeactivate(Be,Pe,Ce,it));else{if(!kr(yi))throw new Error("Invalid CanDeactivate guard");Go=Jn(yi(Be,Pe,Ce,it))}return Go.pipe((0,me.P)())});return(0,y.of)(Un).pipe(ei())}(yt.component,yt.route,Ce,Pe,it)),(0,me.P)(yt=>!0!==yt,!0))}(Un,it,yt,Be).pipe((0,Oe.zg)(qn=>qn&&function(Be){return"boolean"==typeof Be}(qn)?function(Be,Pe,Ce,it){return(0,f.D)(Pe).pipe((0,oe.b)(yt=>(0,F.z)(function(Be,Pe){return null!==Be&&Pe&&Pe(new Dt(Be)),(0,y.of)(!0)}(yt.route.parent,it),function(Be,Pe){return null!==Be&&Pe&&Pe(new Yn(Be)),(0,y.of)(!0)}(yt.route,it),function(Be,Pe,Ce){const it=Pe[Pe.length-1],qt=Pe.slice(0,Pe.length-1).reverse().map(Un=>function(Be){const Pe=Be.routeConfig?Be.routeConfig.canActivateChild:null;return Pe&&0!==Pe.length?{node:Be,guards:Pe}:null}(Un)).filter(Un=>null!==Un).map(Un=>_(()=>{const qn=Un.guards.map(yi=>{const Go=vs(yi,Un.node,Ce);let ka;if(function(Be){return Be&&kr(Be.canActivateChild)}(Go))ka=Jn(Go.canActivateChild(it,Be));else{if(!kr(Go))throw new Error("Invalid CanActivateChild guard");ka=Jn(Go(it,Be))}return ka.pipe((0,me.P)())});return(0,y.of)(qn).pipe(ei())}));return(0,y.of)(qt).pipe(ei())}(Be,yt.path,Ce),function(Be,Pe,Ce){const it=Pe.routeConfig?Pe.routeConfig.canActivate:null;if(!it||0===it.length)return(0,y.of)(!0);const yt=it.map(qt=>_(()=>{const Un=vs(qt,Pe,Ce);let qn;if(function(Be){return Be&&kr(Be.canActivate)}(Un))qn=Jn(Un.canActivate(Pe,Be));else{if(!kr(Un))throw new Error("Invalid CanActivate guard");qn=Jn(Un(Pe,Be))}return qn.pipe((0,me.P)())}));return(0,y.of)(yt).pipe(ei())}(Be,yt.route,Ce))),(0,me.P)(yt=>!0!==yt,!0))}(it,qt,Be,Pe):(0,y.of)(qn)),(0,Q.U)(qn=>Object.assign(Object.assign({},Ce),{guardsResult:qn})))})}(this.ngModule.injector,qn=>this.triggerEvent(qn)),(0,ce.b)(qn=>{if(tt(qn.guardsResult)){const Go=In(`Redirecting to "${this.serializeUrl(qn.guardsResult)}"`);throw Go.url=qn.guardsResult,Go}const yi=new Gt(qn.id,this.serializeUrl(qn.extractedUrl),this.serializeUrl(qn.urlAfterRedirects),qn.targetSnapshot,!!qn.guardsResult);this.triggerEvent(yi)}),(0,se.h)(qn=>!!qn.guardsResult||(this.restoreHistory(qn),this.cancelNavigationTransition(qn,""),!1)),_u(qn=>{if(qn.guards.canActivateChecks.length)return(0,y.of)(qn).pipe((0,ce.b)(yi=>{const Go=new Ut(yi.id,this.serializeUrl(yi.extractedUrl),this.serializeUrl(yi.urlAfterRedirects),yi.targetSnapshot);this.triggerEvent(Go)}),(0,ee.w)(yi=>{let Go=!1;return(0,y.of)(yi).pipe(function(Be,Pe){return(0,Oe.zg)(Ce=>{const{targetSnapshot:it,guards:{canActivateChecks:yt}}=Ce;if(!yt.length)return(0,y.of)(Ce);let qt=0;return(0,f.D)(yt).pipe((0,oe.b)(Un=>function(Be,Pe,Ce,it){return function(Be,Pe,Ce,it){const yt=Object.keys(Be);if(0===yt.length)return(0,y.of)({});const qt={};return(0,f.D)(yt).pipe((0,Oe.zg)(Un=>function(Be,Pe,Ce,it){const yt=vs(Be,Pe,it);return Jn(yt.resolve?yt.resolve(Pe,Ce):yt(Pe,Ce))}(Be[Un],Pe,Ce,it).pipe((0,ce.b)(qn=>{qt[Un]=qn}))),(0,dt.h)(1),(0,Oe.zg)(()=>Object.keys(qt).length===yt.length?(0,y.of)(qt):e.E))}(Be._resolve,Be,Pe,it).pipe((0,Q.U)(qt=>(Be._resolvedData=qt,Be.data=Object.assign(Object.assign({},Be.data),Li(Be,Ce).resolve),null)))}(Un.route,it,Be,Pe)),(0,ce.b)(()=>qt++),(0,dt.h)(1),(0,Oe.zg)(Un=>qt===yt.length?(0,y.of)(Ce):e.E))})}(this.paramsInheritanceStrategy,this.ngModule.injector),(0,ce.b)({next:()=>Go=!0,complete:()=>{Go||(this.restoreHistory(yi),this.cancelNavigationTransition(yi,"At least one route resolver didn't emit any value."))}}))}),(0,ce.b)(yi=>{const Go=new Bt(yi.id,this.serializeUrl(yi.extractedUrl),this.serializeUrl(yi.urlAfterRedirects),yi.targetSnapshot);this.triggerEvent(Go)}))}),_u(qn=>{const{targetSnapshot:yi,id:Go,extractedUrl:ka,rawUrl:ss,extras:{skipLocationChange:Oa,replaceUrl:Us}}=qn;return this.hooks.afterPreactivation(yi,{navigationId:Go,appliedUrlTree:ka,rawUrlTree:ss,skipLocationChange:!!Oa,replaceUrl:!!Us})}),(0,Q.U)(qn=>{const yi=function(Be,Pe,Ce){const it=br(Be,Pe._root,Ce?Ce._root:void 0);return new ho(it,Pe)}(this.routeReuseStrategy,qn.targetSnapshot,qn.currentRouterState);return Object.assign(Object.assign({},qn),{targetRouterState:yi})}),(0,ce.b)(qn=>{this.currentUrlTree=qn.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(qn.urlAfterRedirects,qn.rawUrl),this.routerState=qn.targetRouterState,"deferred"===this.urlUpdateStrategy&&(qn.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,qn),this.browserUrlTree=qn.urlAfterRedirects)}),((Be,Pe,Ce)=>(0,Q.U)(it=>(new Eo(Pe,it.targetRouterState,it.currentRouterState,Ce).activate(Be),it)))(this.rootContexts,this.routeReuseStrategy,qn=>this.triggerEvent(qn)),(0,ce.b)({next(){qt=!0},complete(){qt=!0}}),(0,Ye.x)(()=>{var qn;if(!qt&&!Un){const yi=`Navigation ID ${yt.id} is not equal to the current navigation id ${this.navigationId}`;"replace"===this.canceledNavigationResolution?(this.restoreHistory(yt),this.cancelNavigationTransition(yt,yi)):this.cancelNavigationTransition(yt,yi)}(null===(qn=this.currentNavigation)||void 0===qn?void 0:qn.id)===yt.id&&(this.currentNavigation=null)}),(0,ve.K)(qn=>{if(Un=!0,function(Be){return Be&&Be[Kr]}(qn)){const yi=tt(qn.url);yi||(this.navigated=!0,this.restoreHistory(yt,!0));const Go=new Zt(yt.id,this.serializeUrl(yt.extractedUrl),qn.message);it.next(Go),yi?setTimeout(()=>{const ka=this.urlHandlingStrategy.merge(qn.url,this.rawUrlTree),ss={skipLocationChange:yt.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||oi(yt.source)};this.scheduleNavigation(ka,"imperative",null,ss,{resolve:yt.resolve,reject:yt.reject,promise:yt.promise})},0):yt.resolve(!1)}else{this.restoreHistory(yt,!0);const yi=new st(yt.id,this.serializeUrl(yt.extractedUrl),qn);it.next(yi);try{yt.resolve(this.errorHandler(qn))}catch(Go){yt.reject(Go)}}return e.E}))}))}resetRootComponentType(Ce){this.rootComponentType=Ce,this.routerState.root.component=this.rootComponentType}getTransition(){const Ce=this.transitions.value;return Ce.urlAfterRedirects=this.browserUrlTree,Ce}setTransition(Ce){this.transitions.next(Object.assign(Object.assign({},this.getTransition()),Ce))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(Ce=>{const it=this.extractLocationChangeInfoFromEvent(Ce);this.shouldScheduleNavigation(this.lastLocationChangeInfo,it)&&setTimeout(()=>{const{source:yt,state:qt,urlTree:Un}=it,qn={replaceUrl:!0};if(qt){const yi=Object.assign({},qt);delete yi.navigationId,delete yi.\u0275routerPageId,0!==Object.keys(yi).length&&(qn.state=yi)}this.scheduleNavigation(Un,yt,qt,qn)},0),this.lastLocationChangeInfo=it}))}extractLocationChangeInfoFromEvent(Ce){var it;return{source:"popstate"===Ce.type?"popstate":"hashchange",urlTree:this.parseUrl(Ce.url),state:(null===(it=Ce.state)||void 0===it?void 0:it.navigationId)?Ce.state:null,transitionId:this.getTransition().id}}shouldScheduleNavigation(Ce,it){if(!Ce)return!0;const yt=it.urlTree.toString()===Ce.urlTree.toString();return it.transitionId!==Ce.transitionId||!yt||!("hashchange"===it.source&&"popstate"===Ce.source||"popstate"===it.source&&"hashchange"===Ce.source)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(Ce){this.events.next(Ce)}resetConfig(Ce){Oi(Ce),this.config=Ce.map(Uo),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.transitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(Ce,it={}){const{relativeTo:yt,queryParams:qt,fragment:Un,queryParamsHandling:qn,preserveFragment:yi}=it,Go=yt||this.routerState.root,ka=yi?this.currentUrlTree.fragment:Un;let ss=null;switch(qn){case"merge":ss=Object.assign(Object.assign({},this.currentUrlTree.queryParams),qt);break;case"preserve":ss=this.currentUrlTree.queryParams;break;default:ss=qt||null}return null!==ss&&(ss=this.removeEmptyProps(ss)),function(Be,Pe,Ce,it,yt){if(0===Ce.length)return qo(Pe.root,Pe.root,Pe,it,yt);const qt=function(Be){if("string"==typeof Be[0]&&1===Be.length&&"/"===Be[0])return new Ia(!0,0,Be);let Pe=0,Ce=!1;const it=Be.reduce((yt,qt,Un)=>{if("object"==typeof qt&&null!=qt){if(qt.outlets){const qn={};return Wt(qt.outlets,(yi,Go)=>{qn[Go]="string"==typeof yi?yi.split("/"):yi}),[...yt,{outlets:qn}]}if(qt.segmentPath)return[...yt,qt.segmentPath]}return"string"!=typeof qt?[...yt,qt]:0===Un?(qt.split("/").forEach((qn,yi)=>{0==yi&&"."===qn||(0==yi&&""===qn?Ce=!0:".."===qn?Pe++:""!=qn&&yt.push(qn))}),yt):[...yt,qt]},[]);return new Ia(Ce,Pe,it)}(Ce);if(qt.toRoot())return qo(Pe.root,new Xt([],{}),Pe,it,yt);const Un=function(Be,Pe,Ce){if(Be.isAbsolute)return new Bs(Pe.root,!0,0);if(-1===Ce.snapshot._lastPathIndex){const qt=Ce.snapshot._urlSegment;return new Bs(qt,qt===Pe.root,0)}const it=_s(Be.commands[0])?0:1;return function(Be,Pe,Ce){let it=Be,yt=Pe,qt=Ce;for(;qt>yt;){if(qt-=yt,it=it.parent,!it)throw new Error("Invalid number of '../'");yt=it.segments.length}return new Bs(it,!1,yt-qt)}(Ce.snapshot._urlSegment,Ce.snapshot._lastPathIndex+it,Be.numberOfDoubleDots)}(qt,Pe,Be),qn=Un.processChildren?Ao(Un.segmentGroup,Un.index,qt.commands):Da(Un.segmentGroup,Un.index,qt.commands);return qo(Un.segmentGroup,qn,Pe,it,yt)}(Go,this.currentUrlTree,Ce,ss,null!=ka?ka:null)}navigateByUrl(Ce,it={skipLocationChange:!1}){const yt=tt(Ce)?Ce:this.parseUrl(Ce),qt=this.urlHandlingStrategy.merge(yt,this.rawUrlTree);return this.scheduleNavigation(qt,"imperative",null,it)}navigate(Ce,it={skipLocationChange:!1}){return function(Be){for(let Pe=0;Pe<Be.length;Pe++){const Ce=Be[Pe];if(null==Ce)throw new Error(`The requested path contains ${Ce} segment at index ${Pe}`)}}(Ce),this.navigateByUrl(this.createUrlTree(Ce,it),it)}serializeUrl(Ce){return this.urlSerializer.serialize(Ce)}parseUrl(Ce){let it;try{it=this.urlSerializer.parse(Ce)}catch(yt){it=this.malformedUriErrorHandler(yt,this.urlSerializer,Ce)}return it}isActive(Ce,it){let yt;if(yt=!0===it?Object.assign({},yn):!1===it?Object.assign({},Or):it,tt(Ce))return zr(this.currentUrlTree,Ce,yt);const qt=this.parseUrl(Ce);return zr(this.currentUrlTree,qt,yt)}removeEmptyProps(Ce){return Object.keys(Ce).reduce((it,yt)=>{const qt=Ce[yt];return null!=qt&&(it[yt]=qt),it},{})}processNavigations(){this.navigations.subscribe(Ce=>{this.navigated=!0,this.lastSuccessfulId=Ce.id,this.currentPageId=Ce.targetPageId,this.events.next(new He(Ce.id,this.serializeUrl(Ce.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,Ce.resolve(!0)},Ce=>{this.console.warn(`Unhandled Navigation Error: ${Ce}`)})}scheduleNavigation(Ce,it,yt,qt,Un){var qn,yi;if(this.disposed)return Promise.resolve(!1);const Go=this.getTransition(),ka=oi(it)&&Go&&!oi(Go.source),Us=(this.lastSuccessfulId===Go.id||this.currentNavigation?Go.rawUrl:Go.urlAfterRedirects).toString()===Ce.toString();if(ka&&Us)return Promise.resolve(!0);let fc,va,wl;Un?(fc=Un.resolve,va=Un.reject,wl=Un.promise):wl=new Promise((Ha,nl)=>{fc=Ha,va=nl});const tl=++this.navigationId;let $a;return"computed"===this.canceledNavigationResolution?(0===this.currentPageId&&(yt=this.location.getState()),$a=yt&&yt.\u0275routerPageId?yt.\u0275routerPageId:qt.replaceUrl||qt.skipLocationChange?null!==(qn=this.browserPageId)&&void 0!==qn?qn:0:(null!==(yi=this.browserPageId)&&void 0!==yi?yi:0)+1):$a=0,this.setTransition({id:tl,targetPageId:$a,source:it,restoredState:yt,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:Ce,extras:qt,resolve:fc,reject:va,promise:wl,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),wl.catch(Ha=>Promise.reject(Ha))}setBrowserUrl(Ce,it){const yt=this.urlSerializer.serialize(Ce),qt=Object.assign(Object.assign({},it.extras.state),this.generateNgRouterState(it.id,it.targetPageId));this.location.isCurrentPathEqualTo(yt)||it.extras.replaceUrl?this.location.replaceState(yt,"",qt):this.location.go(yt,"",qt)}restoreHistory(Ce,it=!1){var yt,qt;if("computed"===this.canceledNavigationResolution){const Un=this.currentPageId-Ce.targetPageId;"popstate"!==Ce.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(yt=this.currentNavigation)||void 0===yt?void 0:yt.finalUrl)||0===Un?this.currentUrlTree===(null===(qt=this.currentNavigation)||void 0===qt?void 0:qt.finalUrl)&&0===Un&&(this.resetState(Ce),this.browserUrlTree=Ce.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(Un)}else"replace"===this.canceledNavigationResolution&&(it&&this.resetState(Ce),this.resetUrlToCurrentUrlTree())}resetState(Ce){this.routerState=Ce.currentRouterState,this.currentUrlTree=Ce.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,Ce.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}cancelNavigationTransition(Ce,it){const yt=new Zt(Ce.id,this.serializeUrl(Ce.extractedUrl),it);this.triggerEvent(yt),Ce.resolve(!1)}generateNgRouterState(Ce,it){return"computed"===this.canceledNavigationResolution?{navigationId:Ce,\u0275routerPageId:it}:{navigationId:Ce}}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.LFG(u.DyG),u.LFG(no),u.LFG(V),u.LFG(r.Ye),u.LFG(u.zs3),u.LFG(u.v3s),u.LFG(u.Sil),u.LFG(void 0))},Be.\u0275prov=u.Yz7({token:Be,factory:Be.\u0275fac}),Be})();function oi(Be){return"imperative"!==Be}let ko=(()=>{class Be{constructor(Ce,it,yt,qt,Un){this.router=Ce,this.route=it,this.commands=[],this.onChanges=new J.xQ,null==yt&&qt.setAttribute(Un.nativeElement,"tabindex","0")}ngOnChanges(Ce){this.onChanges.next(this)}set routerLink(Ce){this.commands=null!=Ce?Array.isArray(Ce)?Ce:[Ce]:[]}onClick(){const Ce={skipLocationChange:Ln(this.skipLocationChange),replaceUrl:Ln(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,Ce),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:Ln(this.preserveFragment)})}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.Y36(Vr),u.Y36(xo),u.$8M("tabindex"),u.Y36(u.Qsj),u.Y36(u.SBq))},Be.\u0275dir=u.lG2({type:Be,selectors:[["","routerLink","",5,"a",5,"area"]],hostBindings:function(Ce,it){1&Ce&&u.NdJ("click",function(){return it.onClick()})},inputs:{routerLink:"routerLink",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",state:"state",relativeTo:"relativeTo"},features:[u.TTD]}),Be})(),Ho=(()=>{class Be{constructor(Ce,it,yt){this.router=Ce,this.route=it,this.locationStrategy=yt,this.commands=[],this.onChanges=new J.xQ,this.subscription=Ce.events.subscribe(qt=>{qt instanceof He&&this.updateTargetUrlAndHref()})}set routerLink(Ce){this.commands=null!=Ce?Array.isArray(Ce)?Ce:[Ce]:[]}ngOnChanges(Ce){this.updateTargetUrlAndHref(),this.onChanges.next(this)}ngOnDestroy(){this.subscription.unsubscribe()}onClick(Ce,it,yt,qt,Un){if(0!==Ce||it||yt||qt||Un||"string"==typeof this.target&&"_self"!=this.target)return!0;const qn={skipLocationChange:Ln(this.skipLocationChange),replaceUrl:Ln(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,qn),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:Ln(this.preserveFragment)})}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.Y36(Vr),u.Y36(xo),u.Y36(r.S$))},Be.\u0275dir=u.lG2({type:Be,selectors:[["a","routerLink",""],["area","routerLink",""]],hostVars:2,hostBindings:function(Ce,it){1&Ce&&u.NdJ("click",function(qt){return it.onClick(qt.button,qt.ctrlKey,qt.shiftKey,qt.altKey,qt.metaKey)}),2&Ce&&(u.Ikx("href",it.href,u.LSH),u.uIk("target",it.target))},inputs:{routerLink:"routerLink",target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",state:"state",relativeTo:"relativeTo"},features:[u.TTD]}),Be})();function Ln(Be){return""===Be||!!Be}let Mr=(()=>{class Be{constructor(Ce,it,yt,qt,Un,qn){this.router=Ce,this.element=it,this.renderer=yt,this.cdr=qt,this.link=Un,this.linkWithHref=qn,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.routerEventsSubscription=Ce.events.subscribe(yi=>{yi instanceof He&&this.update()})}ngAfterContentInit(){(0,y.of)(this.links.changes,this.linksWithHrefs.changes,(0,y.of)(null)).pipe((0,je.J)()).subscribe(Ce=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){var Ce;null===(Ce=this.linkInputChangesSubscription)||void 0===Ce||Ce.unsubscribe();const it=[...this.links.toArray(),...this.linksWithHrefs.toArray(),this.link,this.linkWithHref].filter(yt=>!!yt).map(yt=>yt.onChanges);this.linkInputChangesSubscription=(0,f.D)(it).pipe((0,je.J)()).subscribe(yt=>{this.isActive!==this.isLinkActive(this.router)(yt)&&this.update()})}set routerLinkActive(Ce){const it=Array.isArray(Ce)?Ce:Ce.split(" ");this.classes=it.filter(yt=>!!yt)}ngOnChanges(Ce){this.update()}ngOnDestroy(){var Ce;this.routerEventsSubscription.unsubscribe(),null===(Ce=this.linkInputChangesSubscription)||void 0===Ce||Ce.unsubscribe()}update(){!this.links||!this.linksWithHrefs||!this.router.navigated||Promise.resolve().then(()=>{const Ce=this.hasActiveLinks();this.isActive!==Ce&&(this.isActive=Ce,this.cdr.markForCheck(),this.classes.forEach(it=>{Ce?this.renderer.addClass(this.element.nativeElement,it):this.renderer.removeClass(this.element.nativeElement,it)}))})}isLinkActive(Ce){const it=function(Be){return!!Be.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return yt=>Ce.isActive(yt.urlTree,it)}hasActiveLinks(){const Ce=this.isLinkActive(this.router);return this.link&&Ce(this.link)||this.linkWithHref&&Ce(this.linkWithHref)||this.links.some(Ce)||this.linksWithHrefs.some(Ce)}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.Y36(Vr),u.Y36(u.SBq),u.Y36(u.Qsj),u.Y36(u.sBO),u.Y36(ko,8),u.Y36(Ho,8))},Be.\u0275dir=u.lG2({type:Be,selectors:[["","routerLinkActive",""]],contentQueries:function(Ce,it,yt){if(1&Ce&&(u.Suo(yt,ko,5),u.Suo(yt,Ho,5)),2&Ce){let qt;u.iGM(qt=u.CRH())&&(it.links=qt),u.iGM(qt=u.CRH())&&(it.linksWithHrefs=qt)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",routerLinkActive:"routerLinkActive"},exportAs:["routerLinkActive"],features:[u.TTD]}),Be})(),co=(()=>{class Be{constructor(Ce,it,yt,qt,Un){this.parentContexts=Ce,this.location=it,this.resolver=yt,this.changeDetector=Un,this.activated=null,this._activatedRoute=null,this.activateEvents=new u.vpe,this.deactivateEvents=new u.vpe,this.name=qt||Ir,Ce.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const Ce=this.parentContexts.getContext(this.name);Ce&&Ce.route&&(Ce.attachRef?this.attach(Ce.attachRef,Ce.route):this.activateWith(Ce.route,Ce.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const Ce=this.activated;return this.activated=null,this._activatedRoute=null,Ce}attach(Ce,it){this.activated=Ce,this._activatedRoute=it,this.location.insert(Ce.hostView)}deactivate(){if(this.activated){const Ce=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(Ce)}}activateWith(Ce,it){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=Ce;const Un=(it=it||this.resolver).resolveComponentFactory(Ce._futureSnapshot.routeConfig.component),qn=this.parentContexts.getOrCreateContext(this.name).children,yi=new Ss(Ce,qn,this.location.injector);this.activated=this.location.createComponent(Un,this.location.length,yi),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.Y36(V),u.Y36(u.s_b),u.Y36(u._Vd),u.$8M("name"),u.Y36(u.sBO))},Be.\u0275dir=u.lG2({type:Be,selectors:[["router-outlet"]],outputs:{activateEvents:"activate",deactivateEvents:"deactivate"},exportAs:["outlet"]}),Be})();class Ss{constructor(Pe,Ce,it){this.route=Pe,this.childContexts=Ce,this.parent=it}get(Pe,Ce){return Pe===xo?this.route:Pe===V?this.childContexts:this.parent.get(Pe,Ce)}}class Na{}class El{preload(Pe,Ce){return Ce().pipe((0,ve.K)(()=>(0,y.of)(null)))}}class Ks{preload(Pe,Ce){return(0,y.of)(null)}}let td=(()=>{class Be{constructor(Ce,it,yt,qt,Un){this.router=Ce,this.injector=qt,this.preloadingStrategy=Un,this.loader=new Vl(it,yt,Go=>Ce.triggerEvent(new mt(Go)),Go=>Ce.triggerEvent(new Yt(Go)))}setUpPreloading(){this.subscription=this.router.events.pipe((0,se.h)(Ce=>Ce instanceof He),(0,oe.b)(()=>this.preload())).subscribe(()=>{})}preload(){const Ce=this.injector.get(u.h0i);return this.processRoutes(Ce,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(Ce,it){const yt=[];for(const qt of it)if(qt.loadChildren&&!qt.canLoad&&qt._loadedConfig){const Un=qt._loadedConfig;yt.push(this.processRoutes(Un.module,Un.routes))}else qt.loadChildren&&!qt.canLoad?yt.push(this.preloadConfig(Ce,qt)):qt.children&&yt.push(this.processRoutes(Ce,qt.children));return(0,f.D)(yt).pipe((0,je.J)(),(0,Q.U)(qt=>{}))}preloadConfig(Ce,it){return this.preloadingStrategy.preload(it,()=>(it._loadedConfig?(0,y.of)(it._loadedConfig):this.loader.load(Ce.injector,it)).pipe((0,Oe.zg)(qt=>(it._loadedConfig=qt,this.processRoutes(qt.module,qt.routes)))))}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.LFG(Vr),u.LFG(u.v3s),u.LFG(u.Sil),u.LFG(u.zs3),u.LFG(Na))},Be.\u0275prov=u.Yz7({token:Be,factory:Be.\u0275fac}),Be})(),Lc=(()=>{class Be{constructor(Ce,it,yt={}){this.router=Ce,this.viewportScroller=it,this.options=yt,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},yt.scrollPositionRestoration=yt.scrollPositionRestoration||"disabled",yt.anchorScrolling=yt.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(Ce=>{Ce instanceof Ve?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=Ce.navigationTrigger,this.restoredId=Ce.restoredState?Ce.restoredState.navigationId:0):Ce instanceof He&&(this.lastId=Ce.id,this.scheduleScrollEvent(Ce,this.router.parseUrl(Ce.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(Ce=>{Ce instanceof ci&&(Ce.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(Ce.position):Ce.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(Ce.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(Ce,it){this.router.triggerEvent(new ci(Ce,"popstate"===this.lastSource?this.store[this.restoredId]:null,it))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.LFG(Vr),u.LFG(r.EM),u.LFG(void 0))},Be.\u0275prov=u.Yz7({token:Be,factory:Be.\u0275fac}),Be})();const ki=new u.OlP("ROUTER_CONFIGURATION"),No=new u.OlP("ROUTER_FORROOT_GUARD"),ll=[r.Ye,{provide:no,useClass:so},{provide:Vr,useFactory:function(Be,Pe,Ce,it,yt,qt,Un,qn={},yi,Go){const ka=new Vr(null,Be,Pe,Ce,it,yt,qt,Hi(Un));return yi&&(ka.urlHandlingStrategy=yi),Go&&(ka.routeReuseStrategy=Go),function(Be,Pe){Be.errorHandler&&(Pe.errorHandler=Be.errorHandler),Be.malformedUriErrorHandler&&(Pe.malformedUriErrorHandler=Be.malformedUriErrorHandler),Be.onSameUrlNavigation&&(Pe.onSameUrlNavigation=Be.onSameUrlNavigation),Be.paramsInheritanceStrategy&&(Pe.paramsInheritanceStrategy=Be.paramsInheritanceStrategy),Be.relativeLinkResolution&&(Pe.relativeLinkResolution=Be.relativeLinkResolution),Be.urlUpdateStrategy&&(Pe.urlUpdateStrategy=Be.urlUpdateStrategy)}(qn,ka),qn.enableTracing&&ka.events.subscribe(ss=>{var Oa,Us;null===(Oa=console.group)||void 0===Oa||Oa.call(console,`Router Event: ${ss.constructor.name}`),console.log(ss.toString()),console.log(ss),null===(Us=console.groupEnd)||void 0===Us||Us.call(console)}),ka},deps:[no,V,r.Ye,u.zs3,u.v3s,u.Sil,hl,ki,[class{},new u.FiY],[class{},new u.FiY]]},V,{provide:xo,useFactory:function(Be){return Be.routerState.root},deps:[Vr]},{provide:u.v3s,useClass:u.EAV},td,Ks,El,{provide:ki,useValue:{enableTracing:!1}}];function Ul(){return new u.PXZ("Router",Vr)}let Xs=(()=>{class Be{constructor(Ce,it){}static forRoot(Ce,it){return{ngModule:Be,providers:[ll,nd(Ce),{provide:No,useFactory:Il,deps:[[Vr,new u.FiY,new u.tp0]]},{provide:ki,useValue:it||{}},{provide:r.S$,useFactory:vn,deps:[r.lw,[new u.tBr(r.mr),new u.FiY],ki]},{provide:Lc,useFactory:vd,deps:[Vr,r.EM,ki]},{provide:Na,useExisting:it&&it.preloadingStrategy?it.preloadingStrategy:Ks},{provide:u.PXZ,multi:!0,useFactory:Ul},[jc,{provide:u.ip1,multi:!0,useFactory:nc,deps:[jc]},{provide:ul,useFactory:df,deps:[jc]},{provide:u.tb,multi:!0,useExisting:ul}]]}}static forChild(Ce){return{ngModule:Be,providers:[nd(Ce)]}}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.LFG(No,8),u.LFG(Vr,8))},Be.\u0275mod=u.oAB({type:Be}),Be.\u0275inj=u.cJS({}),Be})();function vd(Be,Pe,Ce){return Ce.scrollOffset&&Pe.setOffset(Ce.scrollOffset),new Lc(Be,Pe,Ce)}function vn(Be,Pe,Ce={}){return Ce.useHash?new r.Do(Be,Pe):new r.b0(Be,Pe)}function Il(Be){return"guarded"}function nd(Be){return[{provide:u.deG,multi:!0,useValue:Be},{provide:hl,multi:!0,useValue:Be}]}let jc=(()=>{class Be{constructor(Ce){this.injector=Ce,this.initNavigation=!1,this.destroyed=!1,this.resultOfPreactivationDone=new J.xQ}appInitializer(){return this.injector.get(r.V_,Promise.resolve(null)).then(()=>{if(this.destroyed)return Promise.resolve(!0);let it=null;const yt=new Promise(qn=>it=qn),qt=this.injector.get(Vr),Un=this.injector.get(ki);return"disabled"===Un.initialNavigation?(qt.setUpLocationChangeListener(),it(!0)):"enabled"===Un.initialNavigation||"enabledBlocking"===Un.initialNavigation?(qt.hooks.afterPreactivation=()=>this.initNavigation?(0,y.of)(null):(this.initNavigation=!0,it(!0),this.resultOfPreactivationDone),qt.initialNavigation()):it(!0),yt})}bootstrapListener(Ce){const it=this.injector.get(ki),yt=this.injector.get(td),qt=this.injector.get(Lc),Un=this.injector.get(Vr),qn=this.injector.get(u.z2F);Ce===qn.components[0]&&(("enabledNonBlocking"===it.initialNavigation||void 0===it.initialNavigation)&&Un.initialNavigation(),yt.setUpPreloading(),qt.init(),Un.resetRootComponentType(qn.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}ngOnDestroy(){this.destroyed=!0}}return Be.\u0275fac=function(Ce){return new(Ce||Be)(u.LFG(u.zs3))},Be.\u0275prov=u.Yz7({token:Be,factory:Be.\u0275fac}),Be})();function nc(Be){return Be.appInitializer.bind(Be)}function df(Be){return Be.bootstrapListener.bind(Be)}const ul=new u.OlP("Router Initializer")},43155:(v,S)=>{"use strict";S.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,u=/&#(\w+)(^\w|;)?/g,p=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,f=/^([^:]+):/gm,e=[".","/"];S.N=function(M){var R=function(M){return M.replace(u,function(R,F){return String.fromCharCode(F)})}(M||"").replace(p,"").trim();if(!R)return"about:blank";if(function(M){return e.indexOf(M[0])>-1}(R))return R;var F=R.match(f);return F&&r.test(F[0])?"about:blank":R}},19723:(v,S,i)=>{"use strict";i.d(S,{iM:()=>np,qr:()=>Nm,xc:()=>jg});var r=i(74788),u=i(12057),p=function(I,z){return(p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(B,Ee){B.__proto__=Ee}||function(B,Ee){for(var at in Ee)Ee.hasOwnProperty(at)&&(B[at]=Ee[at])})(I,z)};function f(I,z){function B(){this.constructor=I}p(I,z),I.prototype=null===z?Object.create(z):(B.prototype=z.prototype,new B)}var e=function(){return(e=Object.assign||function(z){for(var B,Ee=1,at=arguments.length;Ee<at;Ee++)for(var Ft in B=arguments[Ee])Object.prototype.hasOwnProperty.call(B,Ft)&&(z[Ft]=B[Ft]);return z}).apply(this,arguments)};function _(I,z){var B="function"==typeof Symbol&&I[Symbol.iterator];if(!B)return I;var at,Gn,Ee=B.call(I),Ft=[];try{for(;(void 0===z||z-- >0)&&!(at=Ee.next()).done;)Ft.push(at.value)}catch(hr){Gn={error:hr}}finally{try{at&&!at.done&&(B=Ee.return)&&B.call(Ee)}finally{if(Gn)throw Gn.error}}return Ft}function y(){for(var I=[],z=0;z<arguments.length;z++)I=I.concat(_(arguments[z]));return I}var M=[];Object.freeze(M);var R={};Object.freeze(R);var F={};function Z(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:F}function J(){return++Ct.mobxGuid}function Q(I){throw ee(!1,I),"X"}function ee(I,z){if(!I)throw new Error("[mobx] "+(z||"An invariant failed, however the error is obfuscated because this is an production build."))}function $(I){var z=!1;return function(){if(!z)return z=!0,I.apply(this,arguments)}}var se=function(){};function oe(I){return null!==I&&"object"==typeof I}function he(I){if(null===I||"object"!=typeof I)return!1;var z=Object.getPrototypeOf(I);return z===Object.prototype||null===z}function ce(I,z,B){Object.defineProperty(I,z,{enumerable:!1,writable:!0,configurable:!0,value:B})}function dt(I,z,B){Object.defineProperty(I,z,{enumerable:!1,writable:!1,configurable:!0,value:B})}function je(I,z){var B="isMobX"+I;return z.prototype[B]=!0,function(Ee){return oe(Ee)&&!0===Ee[B]}}function He(I){return void 0!==Z().Map&&I instanceof Z().Map}function Zt(I){return I instanceof Set}function st(I){for(var z=[];;){var B=I.next();if(B.done)break;z.push(B.value)}return z}function en(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function $t(I){return null===I?null:"object"==typeof I?""+I:I}function Gt(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function Ut(I,z){dt(I,Gt(),z)}function Bt(I){return I[Gt()]=Yt,I}function mt(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function Yt(){return this}var Dt=function(){function I(z){void 0===z&&(z="Atom@"+J()),this.name=z,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=Ii.NOT_TRACKING}return I.prototype.onBecomeUnobserved=function(){},I.prototype.onBecomeObserved=function(){},I.prototype.reportObserved=function(){return qo(this)},I.prototype.reportChanged=function(){_s(),function(I){if(I.lowestObserverState!==Ii.STALE){I.lowestObserverState=Ii.STALE;for(var z=I.observers,B=z.length;B--;){var Ee=z[B];Ee.dependenciesState===Ii.UP_TO_DATE&&(Ee.isTracing!==no.NONE&&Bs(Ee,I),Ee.onBecomeStale()),Ee.dependenciesState=Ii.STALE}}}(this),bs()},I.prototype.toString=function(){return this.name},I}(),zt=je("Atom",Dt);function Hr(I,z){return I===z}var Qr={identity:Hr,structural:function(I,z){return El(I,z)},default:function(I,z){return function(I,z){return"number"==typeof I&&"number"==typeof z&&isNaN(I)&&isNaN(z)}(I,z)||Hr(I,z)},shallow:function(I,z){return El(I,z,1)}},Kr={},In={};function Hn(I,z){var B=z?Kr:In;return B[I]||(B[I]={configurable:!0,enumerable:z,get:function(){return Zr(this),this[I]},set:function(Ee){Zr(this),this[I]=Ee}})}function Zr(I){if(!0!==I.__mobxDidRunLazyInitializers){var z=I.__mobxDecorators;if(z)for(var B in ce(I,"__mobxDidRunLazyInitializers",!0),z){var Ee=z[B];Ee.propertyCreator(I,Ee.prop,Ee.descriptor,Ee.decoratorTarget,Ee.decoratorArguments)}}}function Ur(I,z){return function(){var Ee,at=function(Gn,hr,li,Io){return!0===Io?(z(Gn,hr,li,Gn,Ee),null):(Object.prototype.hasOwnProperty.call(Gn,"__mobxDecorators")||ce(Gn,"__mobxDecorators",e({},Gn.__mobxDecorators)),Gn.__mobxDecorators[hr]={prop:hr,propertyCreator:z,descriptor:li,decoratorTarget:Gn,decoratorArguments:Ee},Hn(hr,I))};return di(arguments)?(Ee=M,at.apply(null,arguments)):(Ee=Array.prototype.slice.call(arguments),at)}}function di(I){return(2===I.length||3===I.length)&&"string"==typeof I[1]||4===I.length&&!0===I[3]}function $i(I,z,B){return De(I)?I:Array.isArray(I)?mr.array(I,{name:B}):he(I)?mr.object(I,void 0,{name:B}):He(I)?mr.map(I,{name:B}):Zt(I)?mr.set(I,{name:B}):I}function Br(I){return I}function Wt(I){var z=Ur(!0,function(Ee,at,Ft,Gn,hr){!function(I,z,B,Ee){var at=lt(I);if(Fi(at)){var Ft=Aa(at,{object:I,name:z,type:"add",newValue:B});if(!Ft)return;B=Ft.newValue}B=(at.values[z]=new Ti(B,Ee,at.name+"."+z,!1)).value,Object.defineProperty(I,z,function(I){return Or[I]||(Or[I]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,I)},set:function(z){this.$mobx.write(this,I,z)}})}(z)),at.keys&&at.keys.push(z),function(I,z,B,Ee){var at=As(I),Ft=Qs(),Gn=at||Ft?{type:"add",object:z,name:B,newValue:Ee}:null;Ft&&Eo(e({},Gn,{name:I.name,key:B})),at&&bl(I,Gn),Ft&&ms()}(at,I,z,B)}(Ee,at,Ft?Ft.initializer?Ft.initializer.call(Ee):Ft.value:void 0,I)}),B=("undefined"!=typeof process&&process,z);return B.enhancer=I,B}var Jn={deep:!0,name:void 0,defaultDecorator:void 0};function Vn(I){return null==I?Jn:"string"==typeof I?{name:I,deep:!0}:I}function zr(I){return I.defaultDecorator?I.defaultDecorator.enhancer:!1===I.deep?Br:$i}Object.freeze(Jn),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var hi=Wt($i),Ai=Wt(function(I,z,B){return null==I||Mr(I)||Gl(I)||Hs(I)||ot(I)?I:Array.isArray(I)?mr.array(I,{name:B,deep:!1}):he(I)?mr.object(I,void 0,{name:B,deep:!1}):He(I)?mr.map(I,{name:B,deep:!1}):Zt(I)?mr.set(I,{name:B,deep:!1}):Q(!1)}),Tr=Wt(Br),Nr=Wt(function(I,z,B){return El(I,z)?z:I}),En={box:function(I,z){arguments.length>2&&Xt("box");var B=Vn(z);return new Ti(I,zr(B),B.name,!0,B.equals)},shallowBox:function(I,z){return arguments.length>2&&Xt("shallowBox"),mr.box(I,{name:z,deep:!1})},array:function(I,z){arguments.length>2&&Xt("array");var B=Vn(z);return new Yo(I,zr(B),B.name)},shallowArray:function(I,z){return arguments.length>2&&Xt("shallowArray"),mr.array(I,{name:z,deep:!1})},map:function(I,z){arguments.length>2&&Xt("map");var B=Vn(z);return new hl(I,zr(B),B.name)},shallowMap:function(I,z){return arguments.length>2&&Xt("shallowMap"),mr.map(I,{name:z,deep:!1})},set:function(I,z){arguments.length>2&&Xt("set");var B=Vn(z);return new Ae(I,zr(B),B.name)},object:function(I,z,B){"string"==typeof arguments[1]&&Xt("object");var Ee=Vn(B);return yc({},I,z,Ee)},shallowObject:function(I,z){return"string"==typeof arguments[1]&&Xt("shallowObject"),mr.object(I,{},{name:z,deep:!1})},ref:Tr,shallow:Ai,deep:hi,struct:Nr},mr=function(I,z,B){if("string"==typeof arguments[1])return hi.apply(null,arguments);if(De(I))return I;var Ee=he(I)?mr.object(I,z,B):Array.isArray(I)?mr.array(I,z):He(I)?mr.map(I,z):Zt(I)?mr.set(I,z):I;if(Ee!==I)return Ee;Q(!1)};function Xt(I){Q("Expected one or two arguments to observable."+I+". Did you accidentally try to use observable."+I+" as decorator?")}Object.keys(En).forEach(function(I){return mr[I]=En[I]});var zn=Ur(!1,function(I,z,B,Ee,at){!function(I,z,B){var Ee=lt(I);B.name=Ee.name+"."+z,B.context=I,Ee.values[z]=new xo(B),Object.defineProperty(I,z,function(I){return Vr[I]||(Vr[I]={configurable:Ct.computedConfigurable,enumerable:!1,get:function(){return oi(this).read(this,I)},set:function(z){oi(this).write(this,I,z)}})}(z))}(I,z,e({get:B.get,set:B.set},at[0]||{}))}),vr=zn({equals:Qr.structural}),si=function(z,B,Ee){if("string"==typeof B||null!==z&&"object"==typeof z&&1===arguments.length)return zn.apply(null,arguments);var at="object"==typeof B?B:{};return at.get=z,at.set="function"==typeof B?B:at.set,at.name=at.name||z.name||"",new xo(at)};si.struct=vr;var Ii=(()=>{return(I=Ii||(Ii={}))[I.NOT_TRACKING=-1]="NOT_TRACKING",I[I.UP_TO_DATE=0]="UP_TO_DATE",I[I.POSSIBLY_STALE=1]="POSSIBLY_STALE",I[I.STALE=2]="STALE",Ii;var I})(),no=(()=>{return(I=no||(no={}))[I.NONE=0]="NONE",I[I.LOG=1]="LOG",I[I.BREAK=2]="BREAK",no;var I})(),so=function(z){this.cause=z};function Ze(I){return I instanceof so}function Dr(I){switch(I.dependenciesState){case Ii.UP_TO_DATE:return!1;case Ii.NOT_TRACKING:case Ii.STALE:return!0;case Ii.POSSIBLY_STALE:for(var z=po(),B=I.observing,Ee=B.length,at=0;at<Ee;at++){var Ft=B[at];if(Li(Ft)){if(Ct.disableErrorBoundaries)Ft.get();else try{Ft.get()}catch(Gn){return yo(z),!0}if(I.dependenciesState===Ii.STALE)return yo(z),!0}}return cs(I),yo(z),!1}}function xt(I){var z=I.observers.length>0;Ct.computationDepth>0&&z&&Q(!1),!Ct.allowStateChanges&&(z||"strict"===Ct.enforceActions)&&Q(!1)}function Wn(I,z,B){var Ee=Mo(!0);cs(I),I.newObserving=new Array(I.observing.length+100),I.unboundDepsCount=0,I.runId=++Ct.runId;var Ft,at=Ct.trackingDerivation;if(Ct.trackingDerivation=I,!0===Ct.disableErrorBoundaries)Ft=z.call(B);else try{Ft=z.call(B)}catch(Gn){Ft=new so(Gn)}return Ct.trackingDerivation=at,function(I){for(var z=I.observing,B=I.observing=I.newObserving,Ee=Ii.UP_TO_DATE,at=0,Ft=I.unboundDepsCount,Gn=0;Gn<Ft;Gn++)0===(hr=B[Gn]).diffValue&&(hr.diffValue=1,at!==Gn&&(B[at]=hr),at++),hr.dependenciesState>Ee&&(Ee=hr.dependenciesState);for(B.length=at,I.newObserving=null,Ft=z.length;Ft--;)0===(hr=z[Ft]).diffValue&&Do(hr,I),hr.diffValue=0;for(;at--;){var hr;1===(hr=B[at]).diffValue&&(hr.diffValue=0,Wo(hr,I))}Ee!==Ii.UP_TO_DATE&&(I.dependenciesState=Ee,I.onBecomeStale())}(I),Vi(Ee),Ft}function nr(I){var z=I.observing;I.observing=[];for(var B=z.length;B--;)Do(z[B],I);I.dependenciesState=Ii.NOT_TRACKING}function Gi(I){var z=po(),B=I();return yo(z),B}function po(){var I=Ct.trackingDerivation;return Ct.trackingDerivation=null,I}function yo(I){Ct.trackingDerivation=I}function Mo(I){var z=Ct.allowStateReads;return Ct.allowStateReads=I,z}function Vi(I){Ct.allowStateReads=I}function cs(I){if(I.dependenciesState!==Ii.UP_TO_DATE){I.dependenciesState=Ii.UP_TO_DATE;for(var z=I.observing,B=z.length;B--;)z[B].lowestObserverState=Ii.UP_TO_DATE}}var zo=0,So=1;function Si(I,z){var B=function(){return ai(I,z,this,arguments)};return B.isMobxAction=!0,B}function ai(I,z,B,Ee){var at=function(I,z,B){var Ee=Qs()&&!!I,at=0;if(Ee){at=Date.now();var Ft=B&&B.length||0,Gn=new Array(Ft);if(Ft>0)for(var hr=0;hr<Ft;hr++)Gn[hr]=B[hr];Eo({type:"action",name:I,object:z,arguments:Gn})}var li=po();_s();var ws={prevDerivation:li,prevAllowStateChanges:rr(!0),prevAllowStateReads:Mo(!0),notifySpy:Ee,startTime:at,actionId:So++,parentActionId:zo};return zo=ws.actionId,ws}(I,B,Ee);try{return z.apply(B,Ee)}catch(Ft){throw at.error=Ft,Ft}finally{!function(I){zo!==I.actionId&&Q("invalid action stack. did you forget to finish an action?"),zo=I.parentActionId,void 0!==I.error&&(Ct.suppressReactionErrors=!0),ri(I.prevAllowStateChanges),Vi(I.prevAllowStateReads),bs(),yo(I.prevDerivation),I.notifySpy&&ms({time:Date.now()-I.startTime}),Ct.suppressReactionErrors=!1}(at)}}function rr(I){var z=Ct.allowStateChanges;return Ct.allowStateChanges=I,z}function ri(I){Ct.allowStateChanges=I}var Ti=function(I){function z(B,Ee,at,Ft,Gn){void 0===at&&(at="ObservableValue@"+J()),void 0===Ft&&(Ft=!0),void 0===Gn&&(Gn=Qr.default);var hr=I.call(this,at)||this;return hr.enhancer=Ee,hr.name=at,hr.equals=Gn,hr.hasUnreportedChange=!1,hr.value=Ee(B,void 0,at),Ft&&Qs()&&Fo({type:"create",name:hr.name,newValue:""+hr.value}),hr}return f(z,I),z.prototype.dehanceValue=function(B){return void 0!==this.dehancer?this.dehancer(B):B},z.prototype.set=function(B){var Ee=this.value;if((B=this.prepareNewValue(B))!==Ct.UNCHANGED){var at=Qs();at&&Eo({type:"update",name:this.name,newValue:B,oldValue:Ee}),this.setNewValue(B),at&&ms()}},z.prototype.prepareNewValue=function(B){if(xt(this),Fi(this)){var Ee=Aa(this,{object:this,type:"update",newValue:B});if(!Ee)return Ct.UNCHANGED;B=Ee.newValue}return B=this.enhancer(B,this.value,this.name),this.equals(this.value,B)?Ct.UNCHANGED:B},z.prototype.setNewValue=function(B){var Ee=this.value;this.value=B,this.reportChanged(),As(this)&&bl(this,{type:"update",object:this,newValue:B,oldValue:Ee})},z.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},z.prototype.intercept=function(B){return ua(this,B)},z.prototype.observe=function(B,Ee){return Ee&&B({object:this,type:"update",newValue:this.value,oldValue:void 0}),ku(this,B)},z.prototype.toJSON=function(){return this.get()},z.prototype.toString=function(){return this.name+"["+this.value+"]"},z.prototype.valueOf=function(){return $t(this.get())},z}(Dt);Ti.prototype[en()]=Ti.prototype.valueOf,je("ObservableValue",Ti);var xo=function(){function I(z){this.dependenciesState=Ii.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=Ii.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+J(),this.value=new so(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=no.NONE,this.derivation=z.get,this.name=z.name||"ComputedValue@"+J(),z.set&&(this.setter=Si(this.name+"-setter",z.set)),this.equals=z.equals||(z.compareStructural||z.struct?Qr.structural:Qr.default),this.scope=z.context,this.requiresReaction=!!z.requiresReaction,this.keepAlive=!!z.keepAlive}return I.prototype.onBecomeStale=function(){!function(I){if(I.lowestObserverState===Ii.UP_TO_DATE){I.lowestObserverState=Ii.POSSIBLY_STALE;for(var z=I.observers,B=z.length;B--;){var Ee=z[B];Ee.dependenciesState===Ii.UP_TO_DATE&&(Ee.dependenciesState=Ii.POSSIBLY_STALE,Ee.isTracing!==no.NONE&&Bs(Ee,I),Ee.onBecomeStale())}}}(this)},I.prototype.onBecomeUnobserved=function(){},I.prototype.onBecomeObserved=function(){},I.prototype.get=function(){this.isComputing&&Q("Cycle detected in computation "+this.name+": "+this.derivation),0!==Ct.inBatch||0!==this.observers.length||this.keepAlive?(qo(this),Dr(this)&&this.trackAndCompute()&&function(I){if(I.lowestObserverState!==Ii.STALE){I.lowestObserverState=Ii.STALE;for(var z=I.observers,B=z.length;B--;){var Ee=z[B];Ee.dependenciesState===Ii.POSSIBLY_STALE?Ee.dependenciesState=Ii.STALE:Ee.dependenciesState===Ii.UP_TO_DATE&&(I.lowestObserverState=Ii.UP_TO_DATE)}}}(this)):Dr(this)&&(this.warnAboutUntrackedRead(),_s(),this.value=this.computeValue(!1),bs());var z=this.value;if(Ze(z))throw z.cause;return z},I.prototype.peek=function(){var z=this.computeValue(!1);if(Ze(z))throw z.cause;return z},I.prototype.set=function(z){if(this.setter){ee(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,z)}finally{this.isRunningSetter=!1}}else ee(!1,!1)},I.prototype.trackAndCompute=function(){Qs()&&Fo({object:this.scope,type:"compute",name:this.name});var z=this.value,B=this.dependenciesState===Ii.NOT_TRACKING,Ee=this.computeValue(!0),at=B||Ze(z)||Ze(Ee)||!this.equals(z,Ee);return at&&(this.value=Ee),at},I.prototype.computeValue=function(z){var B;if(this.isComputing=!0,Ct.computationDepth++,z)B=Wn(this,this.derivation,this.scope);else if(!0===Ct.disableErrorBoundaries)B=this.derivation.call(this.scope);else try{B=this.derivation.call(this.scope)}catch(Ee){B=new so(Ee)}return Ct.computationDepth--,this.isComputing=!1,B},I.prototype.suspend=function(){this.keepAlive||(nr(this),this.value=void 0)},I.prototype.observe=function(z,B){var Ee=this,at=!0,Ft=void 0;return ei(function(){var Gn=Ee.get();if(!at||B){var hr=po();z({type:"update",object:Ee,newValue:Gn,oldValue:Ft}),yo(hr)}at=!1,Ft=Gn})},I.prototype.warnAboutUntrackedRead=function(){},I.prototype.toJSON=function(){return this.get()},I.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},I.prototype.valueOf=function(){return $t(this.get())},I}();xo.prototype[en()]=xo.prototype.valueOf;var I,Li=je("ComputedValue",xo),ln=function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1},Ht=!0,Ct=((I=Z()).__mobxInstanceCount>0&&!I.__mobxGlobals&&(Ht=!1),I.__mobxGlobals&&I.__mobxGlobals.version!==(new ln).version&&(Ht=!1),Ht?I.__mobxGlobals?(I.__mobxInstanceCount+=1,I.__mobxGlobals.UNCHANGED||(I.__mobxGlobals.UNCHANGED={}),I.__mobxGlobals):(I.__mobxInstanceCount=1,I.__mobxGlobals=new ln):(setTimeout(function(){Q("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")},1),new ln));function Wo(I,z){var B=I.observers.length;B&&(I.observersIndexes[z.__mapid]=B),I.observers[B]=z,I.lowestObserverState>z.dependenciesState&&(I.lowestObserverState=z.dependenciesState)}function Do(I,z){if(1===I.observers.length)I.observers.length=0,Js(I);else{var B=I.observers,Ee=I.observersIndexes,at=B.pop();if(at!==z){var Ft=Ee[z.__mapid]||0;Ft?Ee[at.__mapid]=Ft:delete Ee[at.__mapid],B[Ft]=at}delete Ee[z.__mapid]}}function Js(I){!1===I.isPendingUnobservation&&(I.isPendingUnobservation=!0,Ct.pendingUnobservations.push(I))}function _s(){Ct.inBatch++}function bs(){if(0==--Ct.inBatch){ls();for(var I=Ct.pendingUnobservations,z=0;z<I.length;z++){var B=I[z];B.isPendingUnobservation=!1,0===B.observers.length&&(B.isBeingObserved&&(B.isBeingObserved=!1,B.onBecomeUnobserved()),B instanceof xo&&B.suspend())}Ct.pendingUnobservations=[]}}function qo(I){var z=Ct.trackingDerivation;return null!==z?(z.runId!==I.lastAccessedBy&&(I.lastAccessedBy=z.runId,z.newObserving[z.unboundDepsCount++]=I,I.isBeingObserved||(I.isBeingObserved=!0,I.onBecomeObserved())),!0):(0===I.observers.length&&Ct.inBatch>0&&Js(I),!1)}function Bs(I,z){if(console.log("[mobx.trace] '"+I.name+"' is invalidated due to a change in: '"+z.name+"'"),I.isTracing===no.BREAK){var B=[];Yl(function(I,z){return ed(gr(I,void 0))}(I),B,1),new Function("debugger;\n/*\nTracing '"+I.name+"'\n\nYou are entering this break point because derivation '"+I.name+"' is being traced and '"+z.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(I instanceof xo?I.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+B.join("\n")+"\n*/\n    ")()}}function Yl(I,z,B){z.length>=1e3?z.push("(and many more)"):(z.push(""+new Array(B).join("\t")+I.name),I.dependencies&&I.dependencies.forEach(function(Ee){return Yl(Ee,z,B+1)}))}var yl=function(){function I(z,B,Ee,at){void 0===z&&(z="Reaction@"+J()),void 0===at&&(at=!1),this.name=z,this.onInvalidate=B,this.errorHandler=Ee,this.requiresObservable=at,this.observing=[],this.newObserving=[],this.dependenciesState=Ii.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+J(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=no.NONE}return I.prototype.onBecomeStale=function(){this.schedule()},I.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,Ct.pendingReactions.push(this),ls())},I.prototype.isScheduled=function(){return this._isScheduled},I.prototype.runReaction=function(){if(!this.isDisposed){if(_s(),this._isScheduled=!1,Dr(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Qs()&&Fo({name:this.name,type:"scheduled-reaction"})}catch(z){this.reportExceptionInDerivation(z)}}bs()}},I.prototype.track=function(z){_s();var Ee,B=Qs();B&&(Ee=Date.now(),Eo({name:this.name,type:"reaction"})),this._isRunning=!0;var at=Wn(this,z,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&nr(this),Ze(at)&&this.reportExceptionInDerivation(at.cause),B&&ms({time:Date.now()-Ee}),bs()},I.prototype.reportExceptionInDerivation=function(z){var B=this;if(this.errorHandler)this.errorHandler(z,this);else{if(Ct.disableErrorBoundaries)throw z;var Ee="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";Ct.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(Ee,z),Qs()&&Fo({type:"error",name:this.name,message:Ee,error:""+z}),Ct.globalReactionErrorHandlers.forEach(function(at){return at(z,B)})}},I.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(_s(),nr(this),bs()))},I.prototype.getDisposer=function(){var z=this.dispose.bind(this);return z.$mobx=this,z},I.prototype.toString=function(){return"Reaction["+this.name+"]"},I.prototype.trace=function(z){void 0===z&&(z=!1),function(){for(var I=[],z=0;z<arguments.length;z++)I[z]=arguments[z];var B=!1;"boolean"==typeof I[I.length-1]&&(B=I.pop());var Ee=Pc(I);if(!Ee)return Q(!1);Ee.isTracing===no.NONE&&console.log("[mobx.trace] '"+Ee.name+"' tracing enabled"),Ee.isTracing=B?no.BREAK:no.LOG}(this,z)},I}();function ls(){Ct.inBatch>0||Ct.isRunningReactions||function(I){I()}(gs)}function gs(){Ct.isRunningReactions=!0;for(var I=Ct.pendingReactions,z=0;I.length>0;){100==++z&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+I[0]),I.splice(0));for(var B=I.splice(0),Ee=0,at=B.length;Ee<at;Ee++)B[Ee].runReaction()}Ct.isRunningReactions=!1}var Ra=je("Reaction",yl);function Qs(){return!!Ct.spyListeners.length}function Fo(I){if(Ct.spyListeners.length)for(var z=Ct.spyListeners,B=0,Ee=z.length;B<Ee;B++)z[B](I)}function Eo(I){Fo(e({},I,{spyReportStart:!0}))}var ks={spyReportEnd:!0};function ms(I){Fo(I?e({},I,{spyReportEnd:!0}):ks)}function kr(){Q(!1)}function ro(I){return function(z,B,Ee){if(Ee){if(Ee.value)return{value:Si(I,Ee.value),enumerable:!1,configurable:!0,writable:!0};var at=Ee.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return Si(I,at.call(this))}}}return tt(I).apply(this,arguments)}}function tt(I){return function(z,B,Ee){Object.defineProperty(z,B,{configurable:!0,enumerable:!1,get:function(){},set:function(at){ce(this,B,ne(I,at))}})}}var ne=function(z,B,Ee,at){return 1===arguments.length&&"function"==typeof z?Si(z.name||"<unnamed action>",z):2===arguments.length&&"function"==typeof B?Si(z,B):1===arguments.length&&"string"==typeof z?ro(z):!0!==at?ro(B).apply(null,arguments):void(z[B]=Si(z.name||B,Ee.value))};function sn(I,z,B){ce(I,z,Si(z,B.bind(I)))}function ei(I,z){void 0===z&&(z=R);var at,B=z&&z.name||I.name||"Autorun@"+J();if(z.scheduler||z.delay){var Ft=Oi(z),Gn=!1;at=new yl(B,function(){Gn||(Gn=!0,Ft(function(){Gn=!1,at.isDisposed||at.track(hr)}))},z.onError,z.requiresObservable)}else at=new yl(B,function(){this.track(hr)},z.onError,z.requiresObservable);function hr(){I(at)}return at.schedule(),at.getDisposer()}ne.bound=function(I,z,B,Ee){return!0===Ee?(sn(I,z,B.value),null):B?{configurable:!0,enumerable:!1,get:function(){return sn(this,z,B.value||B.initializer.call(this)),this[z]},set:kr}:{enumerable:!1,configurable:!0,set:function(at){sn(this,z,at)},get:function(){}}};var fi=function(I){return I()};function Oi(I){return I.scheduler?I.scheduler:I.delay?function(z){return setTimeout(z,I.delay)}:fi}function os(I,z,B){void 0===B&&(B=R),"boolean"==typeof B&&(B={fireImmediately:B});var Io,Ee=B.name||"Reaction@"+J(),at=ne(Ee,B.onError?function(I,z){return function(){try{return z.apply(this,arguments)}catch(B){I.call(this,B)}}}(B.onError,z):z),Ft=!B.scheduler&&!B.delay,Gn=Oi(B),hr=!0,li=!1,Qo=B.compareStructural?Qr.structural:B.equals||Qr.default,ws=new yl(Ee,function(){hr||Ft?Rl():li||(li=!0,Gn(Rl))},B.onError,B.requiresObservable);function Rl(){if(li=!1,!ws.isDisposed){var Tu=!1;ws.track(function(){var tu=I(ws);Tu=hr||!Qo(Io,tu),Io=tu}),hr&&B.fireImmediately&&at(Io,ws),!hr&&!0===Tu&&at(Io,ws),hr&&(hr=!1)}}return ws.schedule(),ws.getDisposer()}function To(I,z,B){return Ea("onBecomeUnobserved",I,z,B)}function Ea(I,z,B,Ee){var at="function"==typeof Ee?gr(z,B):gr(z),Ft="function"==typeof Ee?Ee:B,Gn=at[I];return"function"!=typeof Gn?Q(!1):(at[I]=function(){Gn.call(this),Ft.call(this)},function(){at[I]=Gn})}function yc(I,z,B,Ee){var Ft=(Ee=Vn(Ee)).defaultDecorator||(!1===Ee.deep?Tr:hi);Zr(I),lt(I,Ee.name,Ft.enhancer),_s();try{for(var at in z){var Gn=Object.getOwnPropertyDescriptor(z,at),li=(B&&at in B?B[at]:Gn.get?zn:Ft)(I,at,Gn,!0);li&&Object.defineProperty(I,at,li)}}finally{bs()}return I}function ed(I){var z={name:I.name};return I.observing&&I.observing.length>0&&(z.dependencies=function(I){var z=[];return I.forEach(function(B){-1===z.indexOf(B)&&z.push(B)}),z}(I.observing).map(ed)),z}function Me(I,z){if(null==I)return!1;if(void 0!==z){if(Mr(I)){var B=I.$mobx;return B.values&&!!B.values[z]}return!1}return Mr(I)||!!I.$mobx||zt(I)||Ra(I)||Li(I)}function De(I){return 1!==arguments.length&&Q(!1),Me(I)}function Pc(I){switch(I.length){case 0:return Ct.trackingDerivation;case 1:return gr(I[0]);case 2:return gr(I[0],I[1])}}function Mu(I,z){void 0===z&&(z=void 0),_s();try{return I.apply(z)}finally{bs()}}function Fi(I){return void 0!==I.interceptors&&I.interceptors.length>0}function ua(I,z){var B=I.interceptors||(I.interceptors=[]);return B.push(z),$(function(){var Ee=B.indexOf(z);-1!==Ee&&B.splice(Ee,1)})}function Aa(I,z){var B=po();try{var Ee=I.interceptors;if(Ee)for(var at=0,Ft=Ee.length;at<Ft&&(ee(!(z=Ee[at](z))||z.type,"Intercept handlers should return nothing or a change object"),z);at++);return z}finally{yo(B)}}function As(I){return void 0!==I.changeListeners&&I.changeListeners.length>0}function ku(I,z){var B=I.changeListeners||(I.changeListeners=[]);return B.push(z),$(function(){var Ee=B.indexOf(z);-1!==Ee&&B.splice(Ee,1)})}function bl(I,z){var B=po(),Ee=I.changeListeners;if(Ee){for(var at=0,Ft=(Ee=Ee.slice()).length;at<Ft;at++)Ee[at](z);yo(B)}}var bu=function(){var I=!1,z={};return Object.defineProperty(z,"0",{set:function(){I=!0}}),Object.create(z)[0]=1,!1===I}(),cu=0,Gs=function(){};(function(I,z){void 0!==Object.setPrototypeOf?Object.setPrototypeOf(I.prototype,z):void 0!==I.prototype.__proto__?I.prototype.__proto__=z:I.prototype=z})(Gs,Array.prototype),Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach(function(I){Object.defineProperty(Gs.prototype,I,{configurable:!0,writable:!0,value:Array.prototype[I]})});var Hu=function(){function I(z,B,Ee,at){this.array=Ee,this.owned=at,this.values=[],this.lastKnownLength=0,this.atom=new Dt(z||"ObservableArray@"+J()),this.enhancer=function(Ft,Gn){return B(Ft,Gn,z+"[..]")}}return I.prototype.dehanceValue=function(z){return void 0!==this.dehancer?this.dehancer(z):z},I.prototype.dehanceValues=function(z){return void 0!==this.dehancer&&z.length>0?z.map(this.dehancer):z},I.prototype.intercept=function(z){return ua(this,z)},I.prototype.observe=function(z,B){return void 0===B&&(B=!1),B&&z({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ku(this,z)},I.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},I.prototype.setArrayLength=function(z){if("number"!=typeof z||z<0)throw new Error("[mobx.array] Out of range: "+z);var B=this.values.length;if(z!==B)if(z>B){for(var Ee=new Array(z-B),at=0;at<z-B;at++)Ee[at]=void 0;this.spliceWithArray(B,0,Ee)}else this.spliceWithArray(z,B-z)},I.prototype.updateArrayLength=function(z,B){if(z!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=B,B>0&&z+B+1>cu&&_u(z+B+1)},I.prototype.spliceWithArray=function(z,B,Ee){var at=this;xt(this.atom);var Ft=this.values.length;if(void 0===z?z=0:z>Ft?z=Ft:z<0&&(z=Math.max(0,Ft+z)),B=1===arguments.length?Ft-z:null==B?0:Math.max(0,Math.min(B,Ft-z)),void 0===Ee&&(Ee=M),Fi(this)){var Gn=Aa(this,{object:this.array,type:"splice",index:z,removedCount:B,added:Ee});if(!Gn)return M;B=Gn.removedCount,Ee=Gn.added}var hr=(Ee=0===Ee.length?Ee:Ee.map(function(Io){return at.enhancer(Io,void 0)})).length-B;this.updateArrayLength(Ft,hr);var li=this.spliceItemsIntoValues(z,B,Ee);return(0!==B||0!==Ee.length)&&this.notifyArraySplice(z,Ee,li),this.dehanceValues(li)},I.prototype.spliceItemsIntoValues=function(z,B,Ee){var at;if(Ee.length<1e4)return(at=this.values).splice.apply(at,y([z,B],Ee));var Ft=this.values.slice(z,z+B);return this.values=this.values.slice(0,z).concat(Ee,this.values.slice(z+B)),Ft},I.prototype.notifyArrayChildUpdate=function(z,B,Ee){var at=!this.owned&&Qs(),Ft=As(this),Gn=Ft||at?{object:this.array,type:"update",index:z,newValue:B,oldValue:Ee}:null;at&&Eo(e({},Gn,{name:this.atom.name})),this.atom.reportChanged(),Ft&&bl(this,Gn),at&&ms()},I.prototype.notifyArraySplice=function(z,B,Ee){var at=!this.owned&&Qs(),Ft=As(this),Gn=Ft||at?{object:this.array,type:"splice",index:z,removed:Ee,added:B,removedCount:Ee.length,addedCount:B.length}:null;at&&Eo(e({},Gn,{name:this.atom.name})),this.atom.reportChanged(),Ft&&bl(this,Gn),at&&ms()},I}(),Yo=function(I){function z(B,Ee,at,Ft){void 0===at&&(at="ObservableArray@"+J()),void 0===Ft&&(Ft=!1);var Gn=I.call(this)||this,hr=new Hu(at,Ee,Gn,Ft);if(dt(Gn,"$mobx",hr),B&&B.length){var li=rr(!0);Gn.spliceWithArray(0,0,B),ri(li)}return bu&&Object.defineProperty(hr.array,"0",du),Gn}return f(z,I),z.prototype.intercept=function(B){return this.$mobx.intercept(B)},z.prototype.observe=function(B,Ee){return void 0===Ee&&(Ee=!1),this.$mobx.observe(B,Ee)},z.prototype.clear=function(){return this.splice(0)},z.prototype.concat=function(){for(var B=[],Ee=0;Ee<arguments.length;Ee++)B[Ee]=arguments[Ee];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),B.map(function(at){return Gl(at)?at.peek():at}))},z.prototype.replace=function(B){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,B)},z.prototype.toJS=function(){return this.slice()},z.prototype.toJSON=function(){return this.toJS()},z.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},z.prototype.find=function(B,Ee,at){void 0===at&&(at=0);var Ft=this.findIndex.apply(this,arguments);return-1===Ft?void 0:this.get(Ft)},z.prototype.findIndex=function(B,Ee,at){void 0===at&&(at=0);for(var Ft=this.peek(),Gn=Ft.length,hr=at;hr<Gn;hr++)if(B.call(Ee,Ft[hr],hr,this))return hr;return-1},z.prototype.splice=function(B,Ee){for(var at=[],Ft=2;Ft<arguments.length;Ft++)at[Ft-2]=arguments[Ft];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(B);case 2:return this.$mobx.spliceWithArray(B,Ee)}return this.$mobx.spliceWithArray(B,Ee,at)},z.prototype.spliceWithArray=function(B,Ee,at){return this.$mobx.spliceWithArray(B,Ee,at)},z.prototype.push=function(){for(var B=[],Ee=0;Ee<arguments.length;Ee++)B[Ee]=arguments[Ee];var at=this.$mobx;return at.spliceWithArray(at.values.length,0,B),at.values.length},z.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},z.prototype.shift=function(){return this.splice(0,1)[0]},z.prototype.unshift=function(){for(var B=[],Ee=0;Ee<arguments.length;Ee++)B[Ee]=arguments[Ee];var at=this.$mobx;return at.spliceWithArray(0,0,B),at.values.length},z.prototype.reverse=function(){var B=this.slice();return B.reverse.apply(B,arguments)},z.prototype.sort=function(B){var Ee=this.slice();return Ee.sort.apply(Ee,arguments)},z.prototype.remove=function(B){var Ee=this.$mobx.dehanceValues(this.$mobx.values).indexOf(B);return Ee>-1&&(this.splice(Ee,1),!0)},z.prototype.move=function(B,Ee){function at(hr){if(hr<0)throw new Error("[mobx.array] Index out of bounds: "+hr+" is negative");var li=this.$mobx.values.length;if(hr>=li)throw new Error("[mobx.array] Index out of bounds: "+hr+" is not smaller than "+li)}if(at.call(this,B),at.call(this,Ee),B!==Ee){var Gn,Ft=this.$mobx.values;Gn=B<Ee?y(Ft.slice(0,B),Ft.slice(B+1,Ee+1),[Ft[B]],Ft.slice(Ee+1)):y(Ft.slice(0,Ee),[Ft[B]],Ft.slice(Ee,B),Ft.slice(B+1)),this.replace(Gn)}},z.prototype.get=function(B){var Ee=this.$mobx;if(Ee){if(B<Ee.values.length)return Ee.atom.reportObserved(),Ee.dehanceValue(Ee.values[B]);console.warn("[mobx.array] Attempt to read an array index ("+B+") that is out of bounds ("+Ee.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},z.prototype.set=function(B,Ee){var at=this.$mobx,Ft=at.values;if(B<Ft.length){xt(at.atom);var Gn=Ft[B];if(Fi(at)){var hr=Aa(at,{type:"update",object:this,index:B,newValue:Ee});if(!hr)return;Ee=hr.newValue}(Ee=at.enhancer(Ee,Gn))!==Gn&&(Ft[B]=Ee,at.notifyArrayChildUpdate(B,Ee,Gn))}else{if(B!==Ft.length)throw new Error("[mobx.array] Index out of bounds, "+B+" is larger than "+Ft.length);at.spliceWithArray(B,0,[Ee])}},z}(Gs);Ut(Yo.prototype,function(){this.$mobx.atom.reportObserved();var I=this,z=0;return Bt({next:function(){return z<I.length?{value:I[z++],done:!1}:{done:!0,value:void 0}}})}),Object.defineProperty(Yo.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(I){this.$mobx.setArrayLength(I)}}),ce(Yo.prototype,mt(),"Array"),["every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","slice","some","toString","toLocaleString"].forEach(function(I){var z=Array.prototype[I];ee("function"==typeof z,"Base function not defined on Array prototype: '"+I+"'"),ce(Yo.prototype,I,function(){return z.apply(this.peek(),arguments)})}),function(I,z){for(var B=0;B<z.length;B++)ce(I,z[B],I[z[B]])}(Yo.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var du=Ar(0);function Ar(I){return{enumerable:!1,configurable:!1,get:function(){return this.get(I)},set:function(z){this.set(I,z)}}}function ha(I){Object.defineProperty(Yo.prototype,""+I,Ar(I))}function _u(I){for(var z=cu;z<I;z++)ha(z);cu=I}_u(1e3);var fa=je("ObservableArrayAdministration",Hu);function Gl(I){return oe(I)&&fa(I.$mobx)}var Ja={},hl=function(){function I(z,B,Ee){if(void 0===B&&(B=$i),void 0===Ee&&(Ee="ObservableMap@"+J()),this.enhancer=B,this.name=Ee,this.$mobx=Ja,this._keys=new Yo(void 0,Br,this.name+".keys()",!0),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(z)}return I.prototype._has=function(z){return this._data.has(z)},I.prototype.has=function(z){var B=this;if(!Ct.trackingDerivation)return this._has(z);var Ee=this._hasMap.get(z);if(!Ee){var at=Ee=new Ti(this._has(z),Br,this.name+"."+Vl(z)+"?",!1);this._hasMap.set(z,at),To(at,function(){return B._hasMap.delete(z)})}return Ee.get()},I.prototype.set=function(z,B){var Ee=this._has(z);if(Fi(this)){var at=Aa(this,{type:Ee?"update":"add",object:this,newValue:B,name:z});if(!at)return this;B=at.newValue}return Ee?this._updateValue(z,B):this._addValue(z,B),this},I.prototype.delete=function(z){var B=this;if(Fi(this)&&!(Ee=Aa(this,{type:"delete",object:this,name:z})))return!1;if(this._has(z)){var at=Qs(),Ft=As(this),Ee=Ft||at?{type:"delete",object:this,oldValue:this._data.get(z).value,name:z}:null;return at&&Eo(e({},Ee,{name:this.name,key:z})),Mu(function(){B._keys.remove(z),B._updateHasMapEntry(z,!1),B._data.get(z).setNewValue(void 0),B._data.delete(z)}),Ft&&bl(this,Ee),at&&ms(),!0}return!1},I.prototype._updateHasMapEntry=function(z,B){var Ee=this._hasMap.get(z);Ee&&Ee.setNewValue(B)},I.prototype._updateValue=function(z,B){var Ee=this._data.get(z);if((B=Ee.prepareNewValue(B))!==Ct.UNCHANGED){var at=Qs(),Ft=As(this),Gn=Ft||at?{type:"update",object:this,oldValue:Ee.value,name:z,newValue:B}:null;at&&Eo(e({},Gn,{name:this.name,key:z})),Ee.setNewValue(B),Ft&&bl(this,Gn),at&&ms()}},I.prototype._addValue=function(z,B){var Ee=this;Mu(function(){var hr=new Ti(B,Ee.enhancer,Ee.name+"."+Vl(z),!1);Ee._data.set(z,hr),B=hr.value,Ee._updateHasMapEntry(z,!0),Ee._keys.push(z)});var at=Qs(),Ft=As(this),Gn=Ft||at?{type:"add",object:this,name:z,newValue:B}:null;at&&Eo(e({},Gn,{name:this.name,key:z})),Ft&&bl(this,Gn),at&&ms()},I.prototype.get=function(z){return this.has(z)?this.dehanceValue(this._data.get(z).get()):this.dehanceValue(void 0)},I.prototype.dehanceValue=function(z){return void 0!==this.dehancer?this.dehancer(z):z},I.prototype.keys=function(){return this._keys[Gt()]()},I.prototype.values=function(){var z=this,B=0;return Bt({next:function(){return B<z._keys.length?{value:z.get(z._keys[B++]),done:!1}:{value:void 0,done:!0}}})},I.prototype.entries=function(){var z=this,B=0;return Bt({next:function(){if(B<z._keys.length){var Ee=z._keys[B++];return{value:[Ee,z.get(Ee)],done:!1}}return{done:!0}}})},I.prototype.forEach=function(z,B){var Ee=this;this._keys.forEach(function(at){return z.call(B,Ee.get(at),at,Ee)})},I.prototype.merge=function(z){var B=this;return Hs(z)&&(z=z.toJS()),Mu(function(){he(z)?Object.keys(z).forEach(function(Ee){return B.set(Ee,z[Ee])}):Array.isArray(z)?z.forEach(function(Ee){var at=_(Ee,2);return B.set(at[0],at[1])}):He(z)?z.constructor!==Map?Q("Cannot initialize from classes that inherit from Map: "+z.constructor.name):z.forEach(function(Ee,at){return B.set(at,Ee)}):null!=z&&Q("Cannot initialize map from "+z)}),this},I.prototype.clear=function(){var z=this;Mu(function(){Gi(function(){z._keys.slice().forEach(function(B){return z.delete(B)})})})},I.prototype.replace=function(z){var B=this;return Mu(function(){for(var Ee=function(I){return He(I)||Hs(I)?I:Array.isArray(I)?new Map(I):he(I)?new Map(Object.entries(I)):Q("Cannot convert to map from '"+I+"'")}(z),at=B._keys,Ft=Array.from(Ee.keys()),Gn=!1,hr=0;hr<at.length;hr++){var li=at[hr];at.length===Ft.length&&li!==Ft[hr]&&(Gn=!0),Ee.has(li)||(Gn=!0,B.delete(li))}Ee.forEach(function(Io,Qo){B._data.has(Qo)||(Gn=!0),B.set(Qo,Io)}),Gn&&B._keys.replace(Ft)}),this},Object.defineProperty(I.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),I.prototype.toPOJO=function(){var z=this,B={};return this._keys.forEach(function(Ee){return B["symbol"==typeof Ee?Ee:Vl(Ee)]=z.get(Ee)}),B},I.prototype.toJS=function(){var z=this,B=new Map;return this._keys.forEach(function(Ee){return B.set(Ee,z.get(Ee))}),B},I.prototype.toJSON=function(){return this.toPOJO()},I.prototype.toString=function(){var z=this;return this.name+"[{ "+this._keys.map(function(B){return Vl(B)+": "+z.get(B)}).join(", ")+" }]"},I.prototype.observe=function(z,B){return ku(this,z)},I.prototype.intercept=function(z){return ua(this,z)},I}();function Vl(I){return I&&I.toString?I.toString():new String(I).toString()}Ut(hl.prototype,function(){return this.entries()}),dt(hl.prototype,mt(),"Map");var Hs=je("ObservableMap",hl),V={},Ae=function(){function I(z,B,Ee){if(void 0===B&&(B=$i),void 0===Ee&&(Ee="ObservableSet@"+J()),this.name=Ee,this.$mobx=V,this._data=new Set,this._atom=function(I,z,B){void 0===z&&(z=se),void 0===B&&(B=se);var Ee=new Dt(I);return function(I,z,B){Ea("onBecomeObserved",I,z,void 0)}(Ee,z),To(Ee,B),Ee}(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(at,Ft){return B(at,Ft,Ee)},z&&this.replace(z)}return I.prototype.dehanceValue=function(z){return void 0!==this.dehancer?this.dehancer(z):z},I.prototype.clear=function(){var z=this;Mu(function(){Gi(function(){z._data.forEach(function(B){z.delete(B)})})})},I.prototype.forEach=function(z,B){var Ee=this;this._data.forEach(function(at){z.call(B,at,at,Ee)})},Object.defineProperty(I.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),I.prototype.add=function(z){var B=this;if(xt(this._atom),Fi(this)&&!(Ee=Aa(this,{type:"add",object:this,newValue:z})))return this;if(!this.has(z)){Mu(function(){B._data.add(B.enhancer(z,void 0)),B._atom.reportChanged()});var at=Qs(),Ft=As(this),Ee=Ft||at?{type:"add",object:this,newValue:z}:null;Ft&&bl(this,Ee)}return this},I.prototype.delete=function(z){var B=this;if(Fi(this)&&!(Ee=Aa(this,{type:"delete",object:this,oldValue:z})))return!1;if(this.has(z)){var at=Qs(),Ft=As(this),Ee=Ft||at?{type:"delete",object:this,oldValue:z}:null;return Mu(function(){B._atom.reportChanged(),B._data.delete(z)}),Ft&&bl(this,Ee),!0}return!1},I.prototype.has=function(z){return this._atom.reportObserved(),this._data.has(this.dehanceValue(z))},I.prototype.entries=function(){var z=0,B=st(this.keys()),Ee=st(this.values());return Bt({next:function(){var at=z;return z+=1,at<Ee.length?{value:[B[at],Ee[at]],done:!1}:{done:!0}}})},I.prototype.keys=function(){return this.values()},I.prototype.values=function(){this._atom.reportObserved();var Ee,z=this,B=0;return void 0!==this._data.values?Ee=st(this._data.values()):(Ee=[],this._data.forEach(function(at){return Ee.push(at)})),Bt({next:function(){return B<Ee.length?{value:z.dehanceValue(Ee[B++]),done:!1}:{done:!0}}})},I.prototype.replace=function(z){var B=this;return ot(z)&&(z=z.toJS()),Mu(function(){Array.isArray(z)||Zt(z)?(B.clear(),z.forEach(function(Ee){return B.add(Ee)})):null!=z&&Q("Cannot initialize set from "+z)}),this},I.prototype.observe=function(z,B){return ku(this,z)},I.prototype.intercept=function(z){return ua(this,z)},I.prototype.toJS=function(){return new Set(this)},I.prototype.toString=function(){return this.name+"[ "+st(this.keys()).join(", ")+" ]"},I}();Ut(Ae.prototype,function(){return this.values()}),dt(Ae.prototype,mt(),"Set");var ot=je("ObservableSet",Ae),_t=function(){function I(z,B,Ee){this.target=z,this.name=B,this.defaultEnhancer=Ee,this.values={}}return I.prototype.read=function(z,B){if(this.target===z||(this.illegalAccess(z,B),this.values[B]))return this.values[B].get()},I.prototype.write=function(z,B,Ee){var at=this.target;at!==z&&this.illegalAccess(z,B);var Ft=this.values[B];if(Ft instanceof xo)Ft.set(Ee);else{if(Fi(this)){if(!(Gn=Aa(this,{type:"update",object:at,name:B,newValue:Ee})))return;Ee=Gn.newValue}if((Ee=Ft.prepareNewValue(Ee))!==Ct.UNCHANGED){var hr=As(this),li=Qs(),Gn=hr||li?{type:"update",object:at,oldValue:Ft.value,name:B,newValue:Ee}:null;li&&Eo(e({},Gn,{name:this.name,key:B})),Ft.setNewValue(Ee),hr&&bl(this,Gn),li&&ms()}}},I.prototype.remove=function(z){if(this.values[z]){var B=this.target;if(Fi(this)&&!(Ee=Aa(this,{object:B,name:z,type:"remove"})))return;try{_s();var at=As(this),Ft=Qs(),Gn=this.values[z].get();this.keys&&this.keys.remove(z),delete this.values[z],delete this.target[z];var Ee=at||Ft?{type:"remove",object:B,oldValue:Gn,name:z}:null;Ft&&Eo(e({},Ee,{name:this.name,key:z})),at&&bl(this,Ee),Ft&&ms()}finally{bs()}}},I.prototype.illegalAccess=function(z,B){console.warn("Property '"+B+"' of '"+z+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},I.prototype.observe=function(z,B){return ku(this,z)},I.prototype.intercept=function(z){return ua(this,z)},I.prototype.getKeys=function(){var z=this;return void 0===this.keys&&(this.keys=new Yo(Object.keys(this.values).filter(function(B){return z.values[B]instanceof Ti}),Br,"keys("+this.name+")",!0)),this.keys.slice()},I}();function lt(I,z,B){void 0===z&&(z=""),void 0===B&&(B=$i);var Ee=I.$mobx;return Ee||(he(I)||(z=(I.constructor.name||"ObservableObject")+"@"+J()),z||(z="ObservableObject@"+J()),dt(I,"$mobx",Ee=new _t(I,z,B)),Ee)}var Or=Object.create(null),Vr=Object.create(null);function oi(I){return I.$mobx||(Zr(I),I.$mobx)}var Ln=je("ObservableObjectAdministration",_t);function Mr(I){return!!oe(I)&&(Zr(I),Ln(I.$mobx))}function gr(I,z){if("object"==typeof I&&null!==I){if(Gl(I))return void 0!==z&&Q(!1),I.$mobx.atom;if(ot(I))return I.$mobx;if(Hs(I)){var B=I;return void 0===z?gr(B._keys):((Ee=B._data.get(z)||B._hasMap.get(z))||Q(!1),Ee)}var Ee;if(Zr(I),Mr(I))return z?((Ee=I.$mobx.values[z])||Q(!1),Ee):Q(!1);if(zt(I)||Li(I)||Ra(I))return I}else if("function"==typeof I&&Ra(I.$mobx))return I.$mobx;return Q(!1)}function co(I,z){return I||Q("Expecting some object"),void 0!==z?co(gr(I,z)):zt(I)||Li(I)||Ra(I)||Hs(I)||ot(I)?I:(Zr(I),I.$mobx?I.$mobx:void Q(!1))}var Na=Object.prototype.toString;function El(I,z,B){return void 0===B&&(B=-1),Ks(I,z,B)}function Ks(I,z,B,Ee,at){if(I===z)return 0!==I||1/I==1/z;if(null==I||null==z)return!1;if(I!=I)return z!=z;var Ft=typeof I;if("function"!==Ft&&"object"!==Ft&&"object"!=typeof z)return!1;I=td(I),z=td(z);var Gn=Na.call(I);if(Gn!==Na.call(z))return!1;switch(Gn){case"[object RegExp]":case"[object String]":return""+I==""+z;case"[object Number]":return+I!=+I?+z!=+z:0==+I?1/+I==1/z:+I==+z;case"[object Date]":case"[object Boolean]":return+I==+z;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(I)===Symbol.valueOf.call(z)}var hr="[object Array]"===Gn;if(!hr){if("object"!=typeof I||"object"!=typeof z)return!1;var li=I.constructor,Io=z.constructor;if(li!==Io&&!("function"==typeof li&&li instanceof li&&"function"==typeof Io&&Io instanceof Io)&&"constructor"in I&&"constructor"in z)return!1}if(0===B)return!1;B<0&&(B=-1),at=at||[];for(var Qo=(Ee=Ee||[]).length;Qo--;)if(Ee[Qo]===I)return at[Qo]===z;if(Ee.push(I),at.push(z),hr){if((Qo=I.length)!==z.length)return!1;for(;Qo--;)if(!Ks(I[Qo],z[Qo],B-1,Ee,at))return!1}else{var ws=Object.keys(I),Rl=void 0;if(Qo=ws.length,Object.keys(z).length!==Qo)return!1;for(;Qo--;)if(!Lc(z,Rl=ws[Qo])||!Ks(I[Rl],z[Rl],B-1,Ee,at))return!1}return Ee.pop(),at.pop(),!0}function td(I){return Gl(I)?I.peek():He(I)||Hs(I)||Zt(I)||ot(I)?st(I.entries()):I}function Lc(I,z){return Object.prototype.hasOwnProperty.call(I,z)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(I){return Ct.spyListeners.push(I),$(function(){Ct.spyListeners=Ct.spyListeners.filter(function(z){return z!==I})})},extras:{getDebugName:function(I,z){return(void 0!==z?gr(I,z):Mr(I)||Hs(I)||ot(I)?co(I):gr(I)).name}},$mobx:"$mobx"});const ll=function(I,z,B){switch(B.length){case 0:return I.call(z);case 1:return I.call(z,B[0]);case 2:return I.call(z,B[0],B[1]);case 3:return I.call(z,B[0],B[1],B[2])}return I.apply(z,B)},Xs=function(I){return I};var vd=Math.max;const Il=function(I,z,B){return z=vd(void 0===z?I.length-1:z,0),function(){for(var Ee=arguments,at=-1,Ft=vd(Ee.length-z,0),Gn=Array(Ft);++at<Ft;)Gn[at]=Ee[z+at];at=-1;for(var hr=Array(z+1);++at<z;)hr[at]=Ee[at];return hr[z]=B(Gn),ll(I,this,hr)}},Vd=function(I){return function(){return I}};var ds=i(99567),ul=Date.now;const Pe=function(I){var z=0,B=0;return function(){var Ee=ul(),at=16-(Ee-B);if(B=Ee,at>0){if(++z>=800)return arguments[0]}else z=0;return I.apply(void 0,arguments)}}(ds.Z?function(I,z){return(0,ds.Z)(I,"toString",{configurable:!0,enumerable:!1,value:Vd(z),writable:!0})}:Xs),it=function(I,z){return Pe(Il(I,z,Xs),I+"")};var yt=i(7475),qt=i(2951),Un=i(66224);const yi=function(I,z,B){(void 0!==B&&!(0,Un.Z)(I[z],B)||void 0===B&&!(z in I))&&(0,qt.Z)(I,z,B)},Oa=function(z,B,Ee){for(var at=-1,Ft=Object(z),Gn=Ee(z),hr=Gn.length;hr--;){var li=Gn[++at];if(!1===B(Ft[li],li,Ft))break}return z};var Us=i(27672),fc=i(1044),va=i(36889),wl=i(22595),tl=i(2172),$a=i(34654),Ha=i(18402),nl=i(6539);var Jd=i(12434),Tc=i(58209),Vu=i(4214),Sc=i(46382),Qd=i(11595),Tl=Function.prototype.toString,xl=Object.prototype.hasOwnProperty,kl=Tl.call(Object);const Qa=function(I){if(!(0,nl.Z)(I)||"[object Object]"!=(0,Sc.Z)(I))return!1;var z=(0,Qd.Z)(I);if(null===z)return!0;var B=xl.call(z,"constructor")&&z.constructor;return"function"==typeof B&&B instanceof B&&Tl.call(B)==kl};var Wu=i(99436);const Mc=function(I,z){if(("constructor"!==z||"function"!=typeof I[z])&&"__proto__"!=z)return I[z]};var Ou=i(57640),Pu=i(76212);const yd=function(I,z,B,Ee,at,Ft,Gn){var hr=Mc(I,B),li=Mc(z,B),Io=Gn.get(li);if(Io)yi(I,B,Io);else{var Qo=Ft?Ft(hr,li,B+"",I,z,Gn):void 0,ws=void 0===Qo;if(ws){var Rl=(0,$a.Z)(li),Tu=!Rl&&(0,Jd.Z)(li),tu=!Rl&&!Tu&&(0,Wu.Z)(li);Qo=li,Rl||Tu||tu?(0,$a.Z)(hr)?Qo=hr:function(I){return(0,nl.Z)(I)&&(0,Ha.Z)(I)}(hr)?Qo=(0,va.Z)(hr):Tu?(ws=!1,Qo=(0,Us.Z)(li,!0)):tu?(ws=!1,Qo=(0,fc.Z)(li,!0)):Qo=[]:Qa(li)||(0,tl.Z)(li)?(Qo=hr,(0,tl.Z)(hr)?Qo=function(I){return(0,Ou.Z)(I,(0,Pu.Z)(I))}(hr):(!(0,Vu.Z)(hr)||(0,Tc.Z)(hr))&&(Qo=(0,wl.Z)(li))):ws=!1}ws&&(Gn.set(li,Qo),at(Qo,li,Ee,Ft,Gn),Gn.delete(li)),yi(I,B,Qo)}},Vc=function Ac(I,z,B,Ee,at){I!==z&&Oa(z,function(Ft,Gn){if(at||(at=new yt.Z),(0,Vu.Z)(Ft))yd(I,z,Gn,B,Ac,Ee,at);else{var hr=Ee?Ee(Mc(I,Gn),Ft,Gn+"",I,z,at):void 0;void 0===hr&&(hr=Ft),yi(I,Gn,hr)}},Pu.Z)},Oc=function pf(I,z,B,Ee,at,Ft){return(0,Vu.Z)(I)&&(0,Vu.Z)(z)&&(Ft.set(z,I),Vc(I,z,void 0,pf,Ft),Ft.delete(z)),I};var hf=i(28078);const su=function(I,z,B){if(!(0,Vu.Z)(B))return!1;var Ee=typeof z;return!!("number"==Ee?(0,Ha.Z)(B)&&(0,hf.Z)(z,B.length):"string"==Ee&&z in B)&&(0,Un.Z)(B[z],I)},_f=function(I){return it(function(z,B){var Ee=-1,at=B.length,Ft=at>1?B[at-1]:void 0,Gn=at>2?B[2]:void 0;for(Ft=I.length>3&&"function"==typeof Ft?(at--,Ft):void 0,Gn&&su(B[0],B[1],Gn)&&(Ft=at<3?void 0:Ft,at=1),z=Object(z);++Ee<at;){var hr=B[Ee];hr&&I(z,hr,Ee,Ft)}return z})}(function(I,z,B,Ee){Vc(I,z,B,Ee)}),Kl=it(function(I){return I.push(void 0,Oc),ll(_f,void 0,I)}),Xf=function(I){return"symbol"==typeof I||(0,nl.Z)(I)&&"[object Symbol]"==(0,Sc.Z)(I)};var Rd=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wc=/^\w*$/;const Ji=function(I,z){if((0,$a.Z)(I))return!1;var B=typeof I;return!("number"!=B&&"symbol"!=B&&"boolean"!=B&&null!=I&&!Xf(I))||wc.test(I)||!Rd.test(I)||null!=z&&I in Object(z)};var cl=i(79489);function Nd(I,z){if("function"!=typeof I||null!=z&&"function"!=typeof z)throw new TypeError("Expected a function");var B=function(){var Ee=arguments,at=z?z.apply(this,Ee):Ee[0],Ft=B.cache;if(Ft.has(at))return Ft.get(at);var Gn=I.apply(this,Ee);return B.cache=Ft.set(at,Gn)||Ft,Gn};return B.cache=new(Nd.Cache||cl.Z),B}Nd.Cache=cl.Z;var wf=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Wl=/\\(\\)?/g;const rc=(z=Nd(function(I){var z=[];return 46===I.charCodeAt(0)&&z.push(""),I.replace(wf,function(B,Ee,at,Ft){z.push(at?Ft.replace(Wl,"$1"):Ee||B)}),z},function(Ee){return 500===B.size&&B.clear(),Ee}),B=z.cache,z);var z,B,hc=i(35770);const Cc=function(I,z){for(var B=-1,Ee=null==I?0:I.length,at=Array(Ee);++B<Ee;)at[B]=z(I[B],B,I);return at};var fu=hc.Z?hc.Z.prototype:void 0,Id=fu?fu.toString:void 0;const kc=function Sl(I){if("string"==typeof I)return I;if((0,$a.Z)(I))return Cc(I,Sl)+"";if(Xf(I))return Id?Id.call(I):"";var z=I+"";return"0"==z&&1/I==-1/0?"-0":z},h=function(I){return null==I?"":kc(I)},N=function(I,z){return(0,$a.Z)(I)?I:Ji(I,z)?[I]:rc(h(I))},de=function(I){if("string"==typeof I||Xf(I))return I;var z=I+"";return"0"==z&&1/I==-1/0?"-0":z},Ue=function(I,z){for(var B=0,Ee=(z=N(z,I)).length;null!=I&&B<Ee;)I=I[de(z[B++])];return B&&B==Ee?I:void 0},Xe=function(I,z,B){var Ee=null==I?void 0:Ue(I,z);return void 0===Ee?B:Ee};var gt=i(57765);const Jt=function(I){var z=null==I?0:I.length;return z?I[z-1]:void 0},jr=function(I,z){return z.length<2?I:Ue(I,function(I,z,B){var Ee=-1,at=I.length;z<0&&(z=-z>at?0:at+z),(B=B>at?at:B)<0&&(B+=at),at=z>B?0:B-z>>>0,z>>>=0;for(var Ft=Array(at);++Ee<at;)Ft[Ee]=I[Ee+z];return Ft}(z,0,-1))},Vo=function(I,z){return z=N(z,I),null==(I=jr(I,z))||delete I[de(Jt(z))]},Vs=function(I){return Qa(I)?void 0:I};var qs=i(57052),dl=hc.Z?hc.Z.isConcatSpreadable:void 0;const sa=function(I){return(0,$a.Z)(I)||(0,tl.Z)(I)||!!(dl&&I&&I[dl])},ol=function Pa(I,z,B,Ee,at){var Ft=-1,Gn=I.length;for(B||(B=sa),at||(at=[]);++Ft<Gn;){var hr=I[Ft];z>0&&B(hr)?z>1?Pa(hr,z-1,B,Ee,at):(0,qs.Z)(at,hr):Ee||(at[at.length]=hr)}return at},wa=function(I){return null!=I&&I.length?ol(I,1):[]},mu=function(I){return Pe(Il(I,void 0,wa),I+"")};var xc=i(23359);const ye=mu(function(I,z){var B={};if(null==I)return B;var Ee=!1;z=Cc(z,function(Ft){return Ft=N(Ft,I),Ee||(Ee=Ft.length>1),Ft}),(0,Ou.Z)(I,(0,xc.Z)(I),B),Ee&&(B=(0,gt.Z)(B,7,Vs));for(var at=z.length;at--;)Vo(B,z[at]);return B}),vi=function(I,z){for(var B=-1,Ee=null==I?0:I.length;++B<Ee;)if(z(I[B],B,I))return!0;return!1};function Wc(I){var z=-1,B=null==I?0:I.length;for(this.__data__=new cl.Z;++z<B;)this.add(I[z])}Wc.prototype.add=Wc.prototype.push=function(I){return this.__data__.set(I,"__lodash_hash_undefined__"),this},Wc.prototype.has=function(I){return this.__data__.has(I)};const Kf=Wc,$p=function(I,z){return I.has(z)},dd=function(I,z,B,Ee,at,Ft){var Gn=1&B,hr=I.length,li=z.length;if(hr!=li&&!(Gn&&li>hr))return!1;var Io=Ft.get(I),Qo=Ft.get(z);if(Io&&Qo)return Io==z&&Qo==I;var ws=-1,Rl=!0,Tu=2&B?new Kf:void 0;for(Ft.set(I,z),Ft.set(z,I);++ws<hr;){var tu=I[ws],Qu=z[ws];if(Ee)var Zd=Gn?Ee(Qu,tu,ws,z,I,Ft):Ee(tu,Qu,ws,I,z,Ft);if(void 0!==Zd){if(Zd)continue;Rl=!1;break}if(Tu){if(!vi(z,function(Bc,Ap){if(!$p(Tu,Ap)&&(tu===Bc||at(tu,Bc,B,Ee,Ft)))return Tu.push(Ap)})){Rl=!1;break}}else if(tu!==Qu&&!at(tu,Qu,B,Ee,Ft)){Rl=!1;break}}return Ft.delete(I),Ft.delete(z),Rl};var Fd=i(83345);const fl=function(I){var z=-1,B=Array(I.size);return I.forEach(function(Ee,at){B[++z]=[at,Ee]}),B},F_=function(I){var z=-1,B=Array(I.size);return I.forEach(function(Ee){B[++z]=Ee}),B};var Up=hc.Z?hc.Z.prototype:void 0,nh=Up?Up.valueOf:void 0;var Dh=i(22018),Bf=Object.prototype.hasOwnProperty;var rh=i(81901),qh="[object Arguments]",Y="[object Array]",fe="[object Object]",q=Object.prototype.hasOwnProperty;const ut=function(I,z,B,Ee,at,Ft){var Gn=(0,$a.Z)(I),hr=(0,$a.Z)(z),li=Gn?Y:(0,rh.Z)(I),Io=hr?Y:(0,rh.Z)(z),Qo=(li=li==qh?fe:li)==fe,ws=(Io=Io==qh?fe:Io)==fe,Rl=li==Io;if(Rl&&(0,Jd.Z)(I)){if(!(0,Jd.Z)(z))return!1;Gn=!0,Qo=!1}if(Rl&&!Qo)return Ft||(Ft=new yt.Z),Gn||(0,Wu.Z)(I)?dd(I,z,B,Ee,at,Ft):function(I,z,B,Ee,at,Ft,Gn){switch(B){case"[object DataView]":if(I.byteLength!=z.byteLength||I.byteOffset!=z.byteOffset)return!1;I=I.buffer,z=z.buffer;case"[object ArrayBuffer]":return!(I.byteLength!=z.byteLength||!Ft(new Fd.Z(I),new Fd.Z(z)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,Un.Z)(+I,+z);case"[object Error]":return I.name==z.name&&I.message==z.message;case"[object RegExp]":case"[object String]":return I==z+"";case"[object Map]":var hr=fl;case"[object Set]":if(hr||(hr=F_),I.size!=z.size&&!(1&Ee))return!1;var Io=Gn.get(I);if(Io)return Io==z;Ee|=2,Gn.set(I,z);var Qo=dd(hr(I),hr(z),Ee,at,Ft,Gn);return Gn.delete(I),Qo;case"[object Symbol]":if(nh)return nh.call(I)==nh.call(z)}return!1}(I,z,li,B,Ee,at,Ft);if(!(1&B)){var Tu=Qo&&q.call(I,"__wrapped__"),tu=ws&&q.call(z,"__wrapped__");if(Tu||tu){var Qu=Tu?I.value():I,Zd=tu?z.value():z;return Ft||(Ft=new yt.Z),at(Qu,Zd,B,Ee,Ft)}}return!!Rl&&(Ft||(Ft=new yt.Z),function(I,z,B,Ee,at,Ft){var Gn=1&B,hr=(0,Dh.Z)(I),li=hr.length;if(li!=(0,Dh.Z)(z).length&&!Gn)return!1;for(var ws=li;ws--;){var Rl=hr[ws];if(!(Gn?Rl in z:Bf.call(z,Rl)))return!1}var Tu=Ft.get(I),tu=Ft.get(z);if(Tu&&tu)return Tu==z&&tu==I;var Qu=!0;Ft.set(I,z),Ft.set(z,I);for(var Zd=Gn;++ws<li;){var Bc=I[Rl=hr[ws]],Ap=z[Rl];if(Ee)var K_=Gn?Ee(Ap,Bc,Rl,z,I,Ft):Ee(Bc,Ap,Rl,I,z,Ft);if(!(void 0===K_?Bc===Ap||at(Bc,Ap,B,Ee,Ft):K_)){Qu=!1;break}Zd||(Zd="constructor"==Rl)}if(Qu&&!Zd){var q_=I.constructor,ef=z.constructor;q_!=ef&&"constructor"in I&&"constructor"in z&&!("function"==typeof q_&&q_ instanceof q_&&"function"==typeof ef&&ef instanceof ef)&&(Qu=!1)}return Ft.delete(I),Ft.delete(z),Qu}(I,z,B,Ee,at,Ft))},Fr=function Xn(I,z,B,Ee,at){return I===z||(null==I||null==z||!(0,nl.Z)(I)&&!(0,nl.Z)(z)?I!=I&&z!=z:ut(I,z,B,Ee,Xn,at))},Is=function(I){return I==I&&!(0,Vu.Z)(I)};var ya=i(6251);const wu=function(I,z){return function(B){return null!=B&&B[I]===z&&(void 0!==z||I in Object(B))}},$_=function(I){var z=function(I){for(var z=(0,ya.Z)(I),B=z.length;B--;){var Ee=z[B],at=I[Ee];z[B]=[Ee,at,Is(at)]}return z}(I);return 1==z.length&&z[0][2]?wu(z[0][0],z[0][1]):function(B){return B===I||function(I,z,B,Ee){var at=B.length,Ft=at,Gn=!Ee;if(null==I)return!Ft;for(I=Object(I);at--;){var hr=B[at];if(Gn&&hr[2]?hr[1]!==I[hr[0]]:!(hr[0]in I))return!1}for(;++at<Ft;){var li=(hr=B[at])[0],Io=I[li],Qo=hr[1];if(Gn&&hr[2]){if(void 0===Io&&!(li in I))return!1}else{var ws=new yt.Z;if(Ee)var Rl=Ee(Io,Qo,li,I,z,ws);if(!(void 0===Rl?Fr(Qo,Io,3,Ee,ws):Rl))return!1}}return!0}(B,I,z)}},oh=function(I,z){return null!=I&&z in Object(I)};var hp=i(19238);const _p=function(I,z){return null!=I&&function(I,z,B){for(var Ee=-1,at=(z=N(z,I)).length,Ft=!1;++Ee<at;){var Gn=de(z[Ee]);if(!(Ft=null!=I&&B(I,Gn)))break;I=I[Gn]}return Ft||++Ee!=at?Ft:!!(at=null==I?0:I.length)&&(0,hp.Z)(at)&&(0,hf.Z)(Gn,at)&&((0,$a.Z)(I)||(0,tl.Z)(I))}(I,z,oh)},sh=function(I){return Ji(I)?function(I){return function(z){return null==z?void 0:z[I]}}(de(I)):function(I){return function(z){return Ue(z,I)}}(I)},id=function(I){return"function"==typeof I?I:null==I?Xs:"object"==typeof I?(0,$a.Z)(I)?function(I,z){return Ji(I)&&Is(z)?wu(de(I),z):function(B){var Ee=Xe(B,I);return void 0===Ee&&Ee===z?_p(B,I):Fr(z,Ee,3)}}(I[0],I[1]):$_(I):sh(I)},Ta=function(B,Ee){if(null==B)return B;if(!(0,Ha.Z)(B))return function(I,z){return I&&Oa(I,z,ya.Z)}(B,Ee);for(var at=B.length,Ft=-1,Gn=Object(B);++Ft<at&&!1!==Ee(Gn[Ft],Ft,Gn););return B},Ju=function(I,z){var B;return Ta(I,function(Ee,at,Ft){return!(B=z(Ee,at,Ft))}),!!B},Yu=function(I,z){for(var B=-1,Ee=null==I?0:I.length;++B<Ee;)if(!z(I[B],B,I))return!1;return!0},Bp=function(I,z){var B=!0;return Ta(I,function(Ee,at,Ft){return B=!!z(Ee,at,Ft)}),B},Z_=function(I){return I&&I.length?I[0]:void 0},Nh=function(I){for(var z=-1,B=null==I?0:I.length,Ee=0,at=[];++z<B;){var Ft=I[z];Ft&&(at[Ee++]=Ft)}return at},G_=function(I,z,B,Ee){for(var at=I.length,Ft=B+(Ee?1:-1);Ee?Ft--:++Ft<at;)if(z(I[Ft],Ft,I))return Ft;return-1};var od=/\s/;var Ih=/^\s+/;const mg=function(I){return I&&I.slice(0,function(I){for(var z=I.length;z--&&od.test(I.charAt(z)););return z}(I)+1).replace(Ih,"")};var Ud=/^[-+]0x[0-9a-f]+$/i,yf=/^0b[01]+$/i,a_=/^0o[0-7]+$/i,vp=parseInt;const yp=function(I){if("number"==typeof I)return I;if(Xf(I))return NaN;if((0,Vu.Z)(I)){var z="function"==typeof I.valueOf?I.valueOf():I;I=(0,Vu.Z)(z)?z+"":z}if("string"!=typeof I)return 0===I?I:+I;I=mg(I);var B=yf.test(I);return B||a_.test(I)?vp(I.slice(2),B?2:8):Ud.test(I)?NaN:+I},sd=function(I){var z=function(I){return I?1/0===(I=yp(I))||-1/0===I?17976931348623157e292*(I<0?-1:1):I==I?I:0:0===I?I:0}(I),B=z%1;return z==z?B?z-B:z:0};var uh=Math.max;const ch=function(z,B,Ee){var at=Object(z);if(!(0,Ha.Z)(z)){var Ft=id(B);z=(0,ya.Z)(z),B=function(hr){return Ft(at[hr],hr,at)}}var Gn=function(I,z,B){var Ee=null==I?0:I.length;if(!Ee)return-1;var at=null==B?0:sd(B);return at<0&&(at=uh(Ee+at,0)),G_(I,id(z),at)}(z,B,Ee);return Gn>-1?at[Ft?z[Gn]:Gn]:void 0},Rf=function(I){return"string"==typeof I||!(0,$a.Z)(I)&&(0,nl.Z)(I)&&"[object String]"==(0,Sc.Z)(I)};var dh=i(40309);const Fh=function(){return dh.Z.Date.now()};var Cm=Math.max,Mm=Math.min;const yg=function(I,z,B){var Ee=!0,at=!0;if("function"!=typeof I)throw new TypeError("Expected a function");return(0,Vu.Z)(B)&&(Ee="leading"in B?!!B.leading:Ee,at="trailing"in B?!!B.trailing:at),function(I,z,B){var Ee,at,Ft,Gn,hr,li,Io=0,Qo=!1,ws=!1,Rl=!0;if("function"!=typeof I)throw new TypeError("Expected a function");function Tu(Xc){var Op=Ee,Zu=at;return Ee=at=void 0,Io=Xc,Gn=I.apply(Zu,Op)}function tu(Xc){return Io=Xc,hr=setTimeout(Bc,z),Qo?Tu(Xc):Gn}function Zd(Xc){var Op=Xc-li;return void 0===li||Op>=z||Op<0||ws&&Xc-Io>=Ft}function Bc(){var Xc=Fh();if(Zd(Xc))return Ap(Xc);hr=setTimeout(Bc,function(Xc){var Rc=z-(Xc-li);return ws?Mm(Rc,Ft-(Xc-Io)):Rc}(Xc))}function Ap(Xc){return hr=void 0,Rl&&Ee?Tu(Xc):(Ee=at=void 0,Gn)}function ef(){var Xc=Fh(),Op=Zd(Xc);if(Ee=arguments,at=this,li=Xc,Op){if(void 0===hr)return tu(li);if(ws)return clearTimeout(hr),hr=setTimeout(Bc,z),Tu(li)}return void 0===hr&&(hr=setTimeout(Bc,z)),Gn}return z=yp(z)||0,(0,Vu.Z)(B)&&(Qo=!!B.leading,Ft=(ws="maxWait"in B)?Cm(yp(B.maxWait)||0,z):Ft,Rl="trailing"in B?!!B.trailing:Rl),ef.cancel=function(){void 0!==hr&&clearTimeout(hr),Io=0,Ee=li=at=hr=void 0},ef.flush=function(){return void 0===hr?Gn:Ap(Fh())},ef}(I,z,{leading:Ee,maxWait:z,trailing:at})},bg=function(I){return I!=I},Am=function(I){return null==I?[]:function(I,z){return Cc(z,function(B){return I[B]})}(I,(0,ya.Z)(I))};var Yd=Math.max;const Hg=function(I,z,B,Ee){I=(0,Ha.Z)(I)?I:Am(I),B=B&&!Ee?sd(B):0;var at=I.length;return B<0&&(B=Yd(at+B,0)),Rf(I)?B<=at&&I.indexOf(z,B)>-1:!!at&&function(I,z,B){return z==z?function(I,z,B){for(var Ee=B-1,at=I.length;++Ee<at;)if(I[Ee]===z)return Ee;return-1}(I,z,B):G_(I,bg,B)}(I,z,B)>-1};var Tp=i(15427);const Qc=function(I,z,B,Ee){if(!(0,Vu.Z)(I))return I;for(var at=-1,Ft=(z=N(z,I)).length,Gn=Ft-1,hr=I;null!=hr&&++at<Ft;){var li=de(z[at]),Io=B;if("__proto__"===li||"constructor"===li||"prototype"===li)return I;if(at!=Gn){var Qo=hr[li];void 0===(Io=Ee?Ee(Qo,li,hr):void 0)&&(Io=(0,Vu.Z)(Qo)?Qo:(0,hf.Z)(z[at+1])?[]:{})}(0,Tp.Z)(hr,li,Io),hr=hr[li]}return I},Sg=function(I,z){return function(I,z,B){for(var Ee=-1,at=z.length,Ft={};++Ee<at;){var Gn=z[Ee],hr=Ue(I,Gn);B(hr,Gn)&&Qc(Ft,N(Gn,I),hr)}return Ft}(I,z,function(B,Ee){return _p(I,Ee)})},p_=mu(function(I,z){return null==I?{}:Sg(I,z)});function h_(I,z){1&I&&(r.TgZ(0,"span"),r._uU(1,"loading..."),r.qZA())}const Hh=function(I){return{$implicit:I}};function __(I,z){if(1&I&&(r.ynx(0),r.TgZ(1,"div"),r.Hsn(2),r.qZA(),r.BQk()),2&I){const B=r.oxw();r.xp6(1),r.Udp("height",B.getTotalHeight())}}const Zp=function(){return{dontDetach:!0}},Mg=["*"],g_=["loadingTemplate"],Ug=["treeNodeTemplate"],Uh=["treeNodeWrapperTemplate"],Ag=["treeNodeFullTemplate"],ov=["viewport"],Bh=function(I,z,B,Ee){return{loadingTemplate:I,treeNodeTemplate:z,treeNodeWrapperTemplate:B,treeNodeFullTemplate:Ee}};function Om(I,z){if(1&I&&r._UZ(0,"tree-node-collection",4),2&I){const B=r.oxw();r.Q6J("nodes",B.treeModel.roots)("treeModel",B.treeModel)("templates",r.l5B(3,Bh,B.loadingTemplate,B.treeNodeTemplate,B.treeNodeWrapperTemplate,B.treeNodeFullTemplate))}}function m_(I,z){if(1&I&&r._UZ(0,"tree-node-drop-slot",5),2&I){const B=r.oxw();r.Q6J("dropIndex",0)("node",B.treeModel.virtualRoot)}}function b(I,z){if(1&I&&r._UZ(0,"tree-node-drop-slot",6),2&I){const B=r.oxw(3);r.Q6J("dropIndex",B.node.index)("node",B.node.parent)}}function x(I,z){if(1&I&&(r.TgZ(0,"div"),r.YNc(1,b,1,2,"tree-node-drop-slot",3),r._UZ(2,"tree-node-wrapper",4),r._UZ(3,"tree-node-children",5),r._UZ(4,"tree-node-drop-slot",6),r.qZA()),2&I){const B=r.oxw(2);r.Tol(B.node.getClass()),r.ekj("tree-node",!0)("tree-node-expanded",B.node.isExpanded&&B.node.hasChildren)("tree-node-collapsed",B.node.isCollapsed&&B.node.hasChildren)("tree-node-leaf",B.node.isLeaf)("tree-node-active",B.node.isActive)("tree-node-focused",B.node.isFocused),r.xp6(1),r.Q6J("ngIf",0===B.index),r.xp6(1),r.Q6J("node",B.node)("index",B.index)("templates",B.templates),r.xp6(1),r.Q6J("node",B.node)("templates",B.templates),r.xp6(1),r.Q6J("dropIndex",B.node.index+1)("node",B.node.parent)}}const G=function(I,z,B,Ee){return{$implicit:I,node:z,index:B,templates:Ee}};function Se(I,z){if(1&I&&(r.ynx(0),r.YNc(1,x,5,22,"div",1),r.GkF(2,2),r.BQk()),2&I){const B=r.oxw();r.xp6(1),r.Q6J("ngIf",!B.templates.treeNodeFullTemplate),r.xp6(1),r.Q6J("ngTemplateOutlet",B.templates.treeNodeFullTemplate)("ngTemplateOutletContext",r.l5B(3,G,B.node,B.node,B.index,B.templates))}}function We(I,z){if(1&I&&(r.TgZ(0,"span"),r._uU(1),r.qZA()),2&I){const B=r.oxw();r.xp6(1),r.Oqu(B.node.displayField)}}const Rt=function(I,z,B){return{$implicit:I,node:z,index:B}};function rn(I,z){if(1&I){const B=r.EpF();r.TgZ(0,"span",3),r.NdJ("click",function(at){return r.CHM(B),r.oxw(2).node.mouseAction("expanderClick",at)}),r._UZ(1,"span",4),r.qZA()}if(2&I){const B=r.oxw(2);r.ekj("toggle-children-wrapper-expanded",B.node.isExpanded)("toggle-children-wrapper-collapsed",B.node.isCollapsed)}}function xn(I,z){1&I&&r._UZ(0,"span",5)}function Er(I,z){if(1&I&&(r.ynx(0),r.YNc(1,rn,2,4,"span",1),r.YNc(2,xn,1,0,"span",2),r.BQk()),2&I){const B=r.oxw();r.xp6(1),r.Q6J("ngIf",B.node.hasChildren),r.xp6(1),r.Q6J("ngIf",!B.node.hasChildren)}}function Ei(I,z){if(1&I&&r._UZ(0,"tree-node-collection",4),2&I){const B=r.oxw(3);r.Q6J("nodes",B.node.children)("templates",B.templates)("treeModel",B.node.treeModel)}}function fs(I,z){if(1&I&&r._UZ(0,"tree-loading-component",5),2&I){const B=r.oxw(3);r.Udp("padding-left",B.node.getNodePadding()),r.Q6J("template",B.templates.loadingTemplate)("node",B.node)}}function Ua(I,z){if(1&I&&(r.TgZ(0,"div"),r.YNc(1,Ei,1,3,"tree-node-collection",2),r.YNc(2,fs,1,4,"tree-loading-component",3),r.qZA()),2&I){const B=r.oxw(2);r.ekj("tree-children",!0)("tree-children-no-padding",B.node.options.levelPadding),r.xp6(1),r.Q6J("ngIf",B.node.children),r.xp6(1),r.Q6J("ngIf",!B.node.children)}}function mo(I,z){if(1&I&&(r.ynx(0),r.YNc(1,Ua,3,6,"div",1),r.BQk()),2&I){const B=r.oxw();r.xp6(1),r.Q6J("treeAnimateOpen",B.node.isExpanded)("treeAnimateOpenSpeed",B.node.options.animateSpeed)("treeAnimateOpenAcceleration",B.node.options.animateAcceleration)("treeAnimateOpenEnabled",B.node.options.animateExpand)}}function _o(I,z){if(1&I&&r._UZ(0,"tree-node",2),2&I){const B=z.$implicit,Ee=z.index,at=r.oxw(2);r.Q6J("node",B)("index",Ee)("templates",at.templates)}}function La(I,z){if(1&I&&(r.ynx(0),r.TgZ(1,"div"),r.YNc(2,_o,1,3,"tree-node",1),r.qZA(),r.BQk()),2&I){const B=r.oxw();r.xp6(1),r.Udp("margin-top",B.marginTop),r.xp6(1),r.Q6J("ngForOf",B.viewportNodes)("ngForTrackBy",B.trackNode)}}function Sa(I,z){if(1&I&&r._UZ(0,"tree-node-checkbox",4),2&I){const B=r.oxw(2);r.Q6J("node",B.node)}}function ti(I,z){if(1&I){const B=r.EpF();r.TgZ(0,"div",2),r.YNc(1,Sa,1,1,"tree-node-checkbox",3),r._UZ(2,"tree-node-expander",4),r.TgZ(3,"div",5),r.NdJ("click",function(at){return r.CHM(B),r.oxw().node.mouseAction("click",at)})("dblclick",function(at){return r.CHM(B),r.oxw().node.mouseAction("dblClick",at)})("mouseover",function(at){return r.CHM(B),r.oxw().node.mouseAction("mouseOver",at)})("mouseout",function(at){return r.CHM(B),r.oxw().node.mouseAction("mouseOut",at)})("contextmenu",function(at){return r.CHM(B),r.oxw().node.mouseAction("contextMenu",at)})("treeDrop",function(at){return r.CHM(B),r.oxw().node.onDrop(at)})("treeDropDragOver",function(at){return r.CHM(B),r.oxw().node.mouseAction("dragOver",at)})("treeDropDragLeave",function(at){return r.CHM(B),r.oxw().node.mouseAction("dragLeave",at)})("treeDropDragEnter",function(at){return r.CHM(B),r.oxw().node.mouseAction("dragEnter",at)}),r._UZ(4,"tree-node-content",6),r.qZA(),r.qZA()}if(2&I){const B=r.oxw();r.Udp("padding-left",B.node.getNodePadding()),r.xp6(1),r.Q6J("ngIf",B.node.options.useCheckbox),r.xp6(1),r.Q6J("node",B.node),r.xp6(1),r.ekj("node-content-wrapper-active",B.node.isActive)("node-content-wrapper-focused",B.node.isFocused),r.Q6J("treeAllowDrop",B.node.allowDrop)("allowDragoverStyling",B.node.allowDragoverStyling())("treeDrag",B.node)("treeDragEnabled",B.node.allowDrag()),r.xp6(1),r.Q6J("node",B.node)("index",B.index)("template",B.templates.treeNodeTemplate)}}function Sr(I,z){if(1&I){const B=r.EpF();r.ynx(0),r.TgZ(1,"input",1),r.NdJ("click",function(at){return r.CHM(B),r.oxw().node.mouseAction("checkboxClick",at)}),r.qZA(),r.BQk()}if(2&I){const B=r.oxw();r.xp6(1),r.Q6J("checked",B.node.isSelected)("indeterminate",B.node.isPartiallySelected)}}let Wr=(()=>{class I{constructor(B,Ee){this.templateRef=B,this.viewContainer=Ee,this.templateBindings={}}ngOnInit(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)}shouldDetach(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach}autoDetect(B){this.dispose=ei(()=>B.detectChanges())}ngOnDestroy(){this.dispose&&this.dispose()}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(r.Rgc),r.Y36(r.s_b))},I.\u0275dir=r.lG2({type:I,selectors:[["","treeMobxAutorun",""]],inputs:{treeMobxAutorun:"treeMobxAutorun"}}),I})();const np={TOGGLE_ACTIVE:(I,z,B)=>z&&z.toggleActivated(),TOGGLE_ACTIVE_MULTI:(I,z,B)=>z&&z.toggleActivated(!0),TOGGLE_SELECTED:(I,z,B)=>z&&z.toggleSelected(),ACTIVATE:(I,z,B)=>z.setIsActive(!0),DEACTIVATE:(I,z,B)=>z.setIsActive(!1),SELECT:(I,z,B)=>z.setIsSelected(!0),DESELECT:(I,z,B)=>z.setIsSelected(!1),FOCUS:(I,z,B)=>z.focus(),TOGGLE_EXPANDED:(I,z,B)=>z.hasChildren&&z.toggleExpanded(),EXPAND:(I,z,B)=>z.expand(),COLLAPSE:(I,z,B)=>z.collapse(),DRILL_DOWN:(I,z,B)=>I.focusDrillDown(),DRILL_UP:(I,z,B)=>I.focusDrillUp(),NEXT_NODE:(I,z,B)=>I.focusNextNode(),PREVIOUS_NODE:(I,z,B)=>I.focusPreviousNode(),MOVE_NODE:(I,z,B,{from:Ee,to:at})=>{B.ctrlKey?I.copyNode(Ee,at):I.moveNode(Ee,at)}},lv={mouse:{click:np.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:np.TOGGLE_EXPANDED,checkboxClick:np.TOGGLE_SELECTED,drop:np.MOVE_NODE},keys:{39:np.DRILL_DOWN,37:np.DRILL_UP,40:np.NEXT_NODE,38:np.PREVIOUS_NODE,32:np.TOGGLE_ACTIVE,13:np.TOGGLE_ACTIVE}};class Dm{constructor(z={}){this.options=z,this.actionMapping=Kl({},this.options.actionMapping,lv),z.rtl&&(this.actionMapping.keys[39]=Xe(z,["actionMapping","keys",39])||np.DRILL_UP,this.actionMapping.keys[37]=Xe(z,["actionMapping","keys",37])||np.DRILL_DOWN)}get hasChildrenField(){return this.options.hasChildrenField||"hasChildren"}get childrenField(){return this.options.childrenField||"children"}get displayField(){return this.options.displayField||"name"}get idField(){return this.options.idField||"id"}get isExpandedField(){return this.options.isExpandedField||"isExpanded"}get getChildren(){return this.options.getChildren}get levelPadding(){return this.options.levelPadding||0}get useVirtualScroll(){return this.options.useVirtualScroll}get animateExpand(){return this.options.animateExpand}get animateSpeed(){return this.options.animateSpeed||1}get animateAcceleration(){return this.options.animateAcceleration||1.2}get scrollOnActivate(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate}get rtl(){return!!this.options.rtl}get rootId(){return this.options.rootId}get useCheckbox(){return this.options.useCheckbox}get useTriState(){return void 0===this.options.useTriState||this.options.useTriState}get scrollContainer(){return this.options.scrollContainer}get allowDragoverStyling(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling}getNodeClone(z){return this.options.getNodeClone?this.options.getNodeClone(z):ye(Object.assign({},z.data),["id"])}allowDrop(z,B,Ee){return this.options.allowDrop instanceof Function?this.options.allowDrop(z,B,Ee):void 0===this.options.allowDrop||this.options.allowDrop}allowDrag(z){return this.options.allowDrag instanceof Function?this.options.allowDrag(z):this.options.allowDrag}nodeClass(z){return this.options.nodeClass?this.options.nodeClass(z):""}nodeHeight(z){if(z.data.virtual)return 0;let B=this.options.nodeHeight||22;return"function"==typeof B&&(B=B(z)),B+(0===z.index?2:1)*this.dropSlotHeight}get dropSlotHeight(){return function(I){return"number"==typeof I||(0,nl.Z)(I)&&"[object Number]"==(0,Sc.Z)(I)}(this.options.dropSlotHeight)?this.options.dropSlotHeight:2}}const mc={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"};var qd=function(I,z,B,Ee){var Gn,at=arguments.length,Ft=at<3?z:null===Ee?Ee=Object.getOwnPropertyDescriptor(z,B):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)Ft=Reflect.decorate(I,z,B,Ee);else for(var hr=I.length-1;hr>=0;hr--)(Gn=I[hr])&&(Ft=(at<3?Gn(Ft):at>3?Gn(z,B,Ft):Gn(z,B))||Ft);return at>3&&Ft&&Object.defineProperty(z,B,Ft),Ft},Iu=function(I,z){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(I,z)};let p1=(()=>{class I{constructor(B,Ee,at,Ft){this.data=B,this.parent=Ee,this.treeModel=at,this.position=0,this.allowDrop=(Gn,hr)=>this.options.allowDrop(Gn,{parent:this,index:0},hr),this.allowDragoverStyling=()=>this.options.allowDragoverStyling,null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=Ft,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}get isHidden(){return this.treeModel.isHidden(this)}get isExpanded(){return this.treeModel.isExpanded(this)}get isActive(){return this.treeModel.isActive(this)}get isFocused(){return this.treeModel.isNodeFocused(this)}get isSelected(){return this.isSelectable()?this.treeModel.isSelected(this):function(I,z,B){var Ee=(0,$a.Z)(I)?vi:Ju;return B&&su(I,z,B)&&(z=void 0),Ee(I,id(z))}(this.children,B=>B.isSelected)}get isAllSelected(){return this.isSelectable()?this.treeModel.isSelected(this):function(I,z,B){var Ee=(0,$a.Z)(I)?Yu:Bp;return B&&su(I,z,B)&&(z=void 0),Ee(I,id(z))}(this.children,B=>B.isAllSelected)}get isPartiallySelected(){return this.isSelected&&!this.isAllSelected}get level(){return this.parent?this.parent.level+1:0}get path(){return this.parent?[...this.parent.path,this.id]:[]}get elementRef(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"}get originalNode(){return this._originalNode}get hasChildren(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)}get isCollapsed(){return!this.isExpanded}get isLeaf(){return!this.hasChildren}get isRoot(){return this.parent.data.virtual}get realParent(){return this.isRoot?null:this.parent}get options(){return this.treeModel.options}fireEvent(B){this.treeModel.fireEvent(B)}get displayField(){return this.getField("display")}get id(){return this.getField("id")}set id(B){this.setField("id",B)}getField(B){return this.data[this.options[`${B}Field`]]}setField(B,Ee){this.data[this.options[`${B}Field`]]=Ee}_findAdjacentSibling(B,Ee=!1){const at=this._getParentsChildren(Ee),Ft=at.indexOf(this);return at.length>Ft+B?at[Ft+B]:null}findNextSibling(B=!1){return this._findAdjacentSibling(1,B)}findPreviousSibling(B=!1){return this._findAdjacentSibling(-1,B)}getVisibleChildren(){return this.visibleChildren}get visibleChildren(){return(this.children||[]).filter(B=>!B.isHidden)}getFirstChild(B=!1){return Z_((B?this.visibleChildren:this.children)||[])}getLastChild(B=!1){return Jt((B?this.visibleChildren:this.children)||[])}findNextNode(B=!0,Ee=!1){return B&&this.isExpanded&&this.getFirstChild(Ee)||this.findNextSibling(Ee)||this.parent&&this.parent.findNextNode(!1,Ee)}findPreviousNode(B=!1){let Ee=this.findPreviousSibling(B);return Ee?Ee._getLastOpenDescendant(B):this.realParent}_getLastOpenDescendant(B=!1){const Ee=this.getLastChild(B);return this.isCollapsed||!Ee?this:Ee._getLastOpenDescendant(B)}_getParentsChildren(B=!1){return this.parent&&(B?this.parent.getVisibleChildren():this.parent.children)||[]}getIndexInParent(B=!1){return this._getParentsChildren(B).indexOf(this)}isDescendantOf(B){return this===B||this.parent&&this.parent.isDescendantOf(B)}getNodePadding(){return this.options.levelPadding*(this.level-1)+"px"}getClass(){return[this.options.nodeClass(this),`tree-node-level-${this.level}`].join(" ")}onDrop(B){this.mouseAction("drop",B.event,{from:B.element,to:{parent:this,index:0,dropOnNode:!0}})}allowDrag(){return this.options.allowDrag(this)}loadNodeChildren(){return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then(B=>{B&&(this.setField("children",B),this._initChildren(),this.options.useTriState&&this.treeModel.isSelected(this)&&this.setIsSelected(!0),this.children.forEach(Ee=>{Ee.getField("isExpanded")&&Ee.hasChildren&&Ee.expand()}))}).then(()=>{this.fireEvent({eventName:mc.loadNodeChildren,node:this})}):Promise.resolve()}expand(){return this.isExpanded||this.toggleExpanded(),this}collapse(){return this.isExpanded&&this.toggleExpanded(),this}doForAll(B){Promise.resolve(B(this)).then(()=>{this.children&&this.children.forEach(Ee=>Ee.doForAll(B))})}expandAll(){this.doForAll(B=>B.expand())}collapseAll(){this.doForAll(B=>B.collapse())}ensureVisible(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this}toggleExpanded(){return this.setIsExpanded(!this.isExpanded),this}setIsExpanded(B){return this.hasChildren&&this.treeModel.setExpandedNode(this,B),this}autoLoadChildren(){this.handler=os(()=>this.isExpanded,B=>{!this.children&&this.hasChildren&&B&&this.loadNodeChildren()},{fireImmediately:!0})}dispose(){this.children&&this.children.forEach(B=>B.dispose()),this.handler&&this.handler(),this.parent=null,this.children=null}setIsActive(B,Ee=!1){return this.treeModel.setActiveNode(this,B,Ee),B&&this.focus(this.options.scrollOnActivate),this}isSelectable(){return this.isLeaf||!this.children||!this.options.useTriState}setIsSelected(B){return this.isSelectable()?this.treeModel.setSelectedNode(this,B):this.visibleChildren.forEach(Ee=>Ee.setIsSelected(B)),this}toggleSelected(){return this.setIsSelected(!this.isSelected),this}toggleActivated(B=!1){return this.setIsActive(!this.isActive,B),this}setActiveAndVisible(B=!1){return this.setIsActive(!0,B).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this}scrollIntoView(B=!1){this.treeModel.virtualScroll.scrollIntoView(this,B)}focus(B=!0){let Ee=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),B&&this.scrollIntoView(),Ee&&this.fireEvent({eventName:mc.blur,node:Ee}),this.fireEvent({eventName:mc.focus,node:this}),this}blur(){let B=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),B&&this.fireEvent({eventName:mc.blur,node:this}),this}setIsHidden(B){this.treeModel.setIsHidden(this,B)}hide(){this.setIsHidden(!0)}show(){this.setIsHidden(!1)}mouseAction(B,Ee,at=null){this.treeModel.setFocus(!0);const Gn=this.options.actionMapping.mouse[B];Gn&&Gn(this.treeModel,this,Ee,at)}getSelfHeight(){return this.options.nodeHeight(this)}_initChildren(){this.children=this.getField("children").map((B,Ee)=>new I(B,this,this.treeModel,Ee))}}return qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isHidden",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isExpanded",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isActive",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isFocused",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isSelected",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isAllSelected",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"isPartiallySelected",null),qd([mr,Iu("design:type",Array)],I.prototype,"children",void 0),qd([mr,Iu("design:type",Number)],I.prototype,"index",void 0),qd([mr,Iu("design:type",Object)],I.prototype,"position",void 0),qd([mr,Iu("design:type",Number)],I.prototype,"height",void 0),qd([si,Iu("design:type",Number),Iu("design:paramtypes",[])],I.prototype,"level",null),qd([si,Iu("design:type",Array),Iu("design:paramtypes",[])],I.prototype,"path",null),qd([si,Iu("design:type",Object),Iu("design:paramtypes",[])],I.prototype,"visibleChildren",null),qd([ne,Iu("design:type",Function),Iu("design:paramtypes",[Object]),Iu("design:returntype",void 0)],I.prototype,"setIsSelected",null),qd([ne,Iu("design:type",Function),Iu("design:paramtypes",[]),Iu("design:returntype",void 0)],I.prototype,"_initChildren",null),I})();var vu=function(I,z,B,Ee){var Gn,at=arguments.length,Ft=at<3?z:null===Ee?Ee=Object.getOwnPropertyDescriptor(z,B):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)Ft=Reflect.decorate(I,z,B,Ee);else for(var hr=I.length-1;hr>=0;hr--)(Gn=I[hr])&&(Ft=(at<3?Gn(Ft):at>3?Gn(z,B,Ft):Gn(z,B))||Ft);return at>3&&Ft&&Object.defineProperty(z,B,Ft),Ft},es=function(I,z){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(I,z)};let eu=(()=>{class I{constructor(){this.options=new Dm,this.eventNames=Object.keys(mc),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}fireEvent(B){B.treeModel=this,this.events[B.eventName].emit(B),this.events.event.emit(B)}subscribe(B,Ee){const at=this.events[B].subscribe(Ee);this.subscriptions.push(at)}getFocusedNode(){return this.focusedNode}getActiveNode(){return this.activeNodes[0]}getActiveNodes(){return this.activeNodes}getVisibleRoots(){return this.virtualRoot.visibleChildren}getFirstRoot(B=!1){return Z_(B?this.getVisibleRoots():this.roots)}getLastRoot(B=!1){return Jt(B?this.getVisibleRoots():this.roots)}get isFocused(){return I.focusedTree===this}isNodeFocused(B){return this.focusedNode===B}isEmptyTree(){return this.roots&&0===this.roots.length}get focusedNode(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null}get expandedNodes(){const B=Object.keys(this.expandedNodeIds).filter(Ee=>this.expandedNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return Nh(B)}get activeNodes(){const B=Object.keys(this.activeNodeIds).filter(Ee=>this.activeNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return Nh(B)}get hiddenNodes(){const B=Object.keys(this.hiddenNodeIds).filter(Ee=>this.hiddenNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return Nh(B)}get selectedLeafNodes(){const B=Object.keys(this.selectedLeafNodeIds).filter(Ee=>this.selectedLeafNodeIds[Ee]).map(Ee=>this.getNodeById(Ee));return Nh(B)}getNodeByPath(B,Ee=null){if(!B)return null;if(Ee=Ee||this.virtualRoot,0===B.length)return Ee;if(!Ee.children)return null;const at=B.shift(),Ft=ch(Ee.children,{id:at});return Ft?this.getNodeByPath(B,Ft):null}getNodeById(B){const Ee=B.toString();return this.getNodeBy(at=>at.id.toString()===Ee)}getNodeBy(B,Ee=null){if(!(Ee=Ee||this.virtualRoot).children)return null;const at=ch(Ee.children,B);if(at)return at;for(let Ft of Ee.children){const Gn=this.getNodeBy(B,Ft);if(Gn)return Gn}}isExpanded(B){return this.expandedNodeIds[B.id]}isHidden(B){return this.hiddenNodeIds[B.id]}isActive(B){return this.activeNodeIds[B.id]}isSelected(B){return this.selectedLeafNodeIds[B.id]}ngOnDestroy(){this.dispose(),this.unsubscribeAll()}dispose(){this.virtualRoot&&this.virtualRoot.dispose()}unsubscribeAll(){this.subscriptions.forEach(B=>B.unsubscribe()),this.subscriptions=[]}setData({nodes:B,options:Ee=null,events:at=null}){Ee&&(this.options=new Dm(Ee)),at&&(this.events=at),B&&(this.nodes=B),this.update()}update(){let B={id:this.options.rootId,virtual:!0,[this.options.childrenField]:this.nodes};this.dispose(),this.virtualRoot=new p1(B,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:mc.updateData})}setFocusedNode(B){this.focusedNodeId=B?B.id:null}setFocus(B){I.focusedTree=B?this:null}doForAll(B){this.roots.forEach(Ee=>Ee.doForAll(B))}focusNextNode(){let B=this.getFocusedNode(),Ee=B?B.findNextNode(!0,!0):this.getFirstRoot(!0);Ee&&Ee.focus()}focusPreviousNode(){let B=this.getFocusedNode(),Ee=B?B.findPreviousNode(!0):this.getLastRoot(!0);Ee&&Ee.focus()}focusDrillDown(){let B=this.getFocusedNode();if(B&&B.isCollapsed&&B.hasChildren)B.toggleExpanded();else{let Ee=B?B.getFirstChild(!0):this.getFirstRoot(!0);Ee&&Ee.focus()}}focusDrillUp(){let B=this.getFocusedNode();if(B)if(B.isExpanded)B.toggleExpanded();else{let Ee=B.realParent;Ee&&Ee.focus()}}setActiveNode(B,Ee,at=!1){at?this._setActiveNodeMulti(B,Ee):this._setActiveNodeSingle(B,Ee),Ee?(B.focus(this.options.scrollOnActivate),this.fireEvent({eventName:mc.activate,node:B}),this.fireEvent({eventName:mc.nodeActivate,node:B})):(this.fireEvent({eventName:mc.deactivate,node:B}),this.fireEvent({eventName:mc.nodeDeactivate,node:B}))}setSelectedNode(B,Ee){this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,{[B.id]:Ee}),Ee?(B.focus(),this.fireEvent({eventName:mc.select,node:B})):this.fireEvent({eventName:mc.deselect,node:B})}setExpandedNode(B,Ee){this.expandedNodeIds=Object.assign({},this.expandedNodeIds,{[B.id]:Ee}),this.fireEvent({eventName:mc.toggleExpanded,node:B,isExpanded:Ee})}expandAll(){this.roots.forEach(B=>B.expandAll())}collapseAll(){this.roots.forEach(B=>B.collapseAll())}setIsHidden(B,Ee){this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,{[B.id]:Ee})}setHiddenNodeIds(B){this.hiddenNodeIds=B.reduce((Ee,at)=>Object.assign(Ee,{[at]:!0}),{})}performKeyAction(B,Ee){const at=this.options.actionMapping.keys[Ee.keyCode];return!!at&&(Ee.preventDefault(),at(this,B,Ee),!0)}filterNodes(B,Ee=!0){let at;if(!B)return this.clearFilter();if(Rf(B))at=Gn=>-1!==Gn.displayField.toLowerCase().indexOf(B.toLowerCase());else{if(!(0,Tc.Z)(B))return console.error("Don't know what to do with filter",B),void console.error("Should be either a string or function");at=B}const Ft={};this.roots.forEach(Gn=>this._filterNode(Ft,Gn,at,Ee)),this.hiddenNodeIds=Ft,this.fireEvent({eventName:mc.changeFilter})}clearFilter(){this.hiddenNodeIds={},this.fireEvent({eventName:mc.changeFilter})}moveNode(B,Ee){const at=B.getIndexInParent(),Ft=B.parent;if(!this.canMoveNode(B,Ee,at))return;const Gn=Ft.getField("children");Ee.parent.getField("children")||Ee.parent.setField("children",[]);const hr=Ee.parent.getField("children"),li=Gn.splice(at,1)[0];let Io=Ft===Ee.parent&&Ee.index>at?Ee.index-1:Ee.index;hr.splice(Io,0,li),Ft.treeModel.update(),Ee.parent.treeModel!==Ft.treeModel&&Ee.parent.treeModel.update(),this.fireEvent({eventName:mc.moveNode,node:li,to:{parent:Ee.parent.data,index:Io},from:{parent:Ft.data,index:at}})}copyNode(B,Ee){const at=B.getIndexInParent();if(!this.canMoveNode(B,Ee,at))return;Ee.parent.getField("children")||Ee.parent.setField("children",[]);const Ft=Ee.parent.getField("children"),Gn=this.options.getNodeClone(B);Ft.splice(Ee.index,0,Gn),B.treeModel.update(),Ee.parent.treeModel!==B.treeModel&&Ee.parent.treeModel.update(),this.fireEvent({eventName:mc.copyNode,node:Gn,to:{parent:Ee.parent.data,index:Ee.index}})}getState(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}}setState(B){!B||Object.assign(this,{expandedNodeIds:B.expandedNodeIds||{},selectedLeafNodeIds:B.selectedLeafNodeIds||{},activeNodeIds:B.activeNodeIds||{},hiddenNodeIds:B.hiddenNodeIds||{},focusedNodeId:B.focusedNodeId})}subscribeToState(B){ei(()=>B(this.getState()))}canMoveNode(B,Ee,at){return at||B.getIndexInParent(),(B.parent!==Ee.parent||at!==Ee.index)&&!Ee.parent.isDescendantOf(B)}calculateExpandedNodes(){this._calculateExpandedNodes()}_filterNode(B,Ee,at,Ft){let Gn=at(Ee);return Ee.children&&Ee.children.forEach(hr=>{this._filterNode(B,hr,at,Ft)&&(Gn=!0)}),Gn||(B[Ee.id]=!0),Ft&&Gn&&Ee.ensureVisible(),Gn}_calculateExpandedNodes(B=null){(B=B||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,{[B.id]:!0})),B.children&&B.children.forEach(Ee=>this._calculateExpandedNodes(Ee))}_setActiveNodeSingle(B,Ee){this.activeNodes.filter(at=>at!==B).forEach(at=>{this.fireEvent({eventName:mc.deactivate,node:at}),this.fireEvent({eventName:mc.nodeDeactivate,node:at})}),this.activeNodeIds=Ee?{[B.id]:!0}:{}}_setActiveNodeMulti(B,Ee){this.activeNodeIds=Object.assign({},this.activeNodeIds,{[B.id]:Ee})}}return I.\u0275fac=function(B){return new(B||I)},I.\u0275prov=r.Yz7({token:I,factory:I.\u0275fac}),I.focusedTree=null,I})();vu([mr,es("design:type",Array)],eu.prototype,"roots",void 0),vu([mr,es("design:type",Object)],eu.prototype,"expandedNodeIds",void 0),vu([mr,es("design:type",Object)],eu.prototype,"selectedLeafNodeIds",void 0),vu([mr,es("design:type",Object)],eu.prototype,"activeNodeIds",void 0),vu([mr,es("design:type",Object)],eu.prototype,"hiddenNodeIds",void 0),vu([mr,es("design:type",Object)],eu.prototype,"focusedNodeId",void 0),vu([mr,es("design:type",p1)],eu.prototype,"virtualRoot",void 0),vu([si,es("design:type",Object),es("design:paramtypes",[])],eu.prototype,"focusedNode",null),vu([si,es("design:type",Object),es("design:paramtypes",[])],eu.prototype,"expandedNodes",null),vu([si,es("design:type",Object),es("design:paramtypes",[])],eu.prototype,"activeNodes",null),vu([si,es("design:type",Object),es("design:paramtypes",[])],eu.prototype,"hiddenNodes",null),vu([si,es("design:type",Object),es("design:paramtypes",[])],eu.prototype,"selectedLeafNodes",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"setData",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"update",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"setFocusedNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"setFocus",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"doForAll",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"focusNextNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"focusPreviousNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"focusDrillDown",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"focusDrillUp",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object,Object]),es("design:returntype",void 0)],eu.prototype,"setActiveNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"setSelectedNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"setExpandedNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"expandAll",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"collapseAll",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"setIsHidden",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"setHiddenNodeIds",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"filterNodes",null),vu([ne,es("design:type",Function),es("design:paramtypes",[]),es("design:returntype",void 0)],eu.prototype,"clearFilter",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"moveNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object,Object]),es("design:returntype",void 0)],eu.prototype,"copyNode",null),vu([ne,es("design:type",Function),es("design:paramtypes",[Object]),es("design:returntype",void 0)],eu.prototype,"setState",null);let cv=(()=>{class I{constructor(){this._draggedElement=null}set(B){this._draggedElement=B}get(){return this._draggedElement}isDragging(){return!!this.get()}}return I.\u0275fac=function(B){return new(B||I)},I.\u0275prov=(0,r.Yz7)({factory:function(){return new I},token:I,providedIn:"root"}),I})();var Zh=function(I,z,B,Ee){var Gn,at=arguments.length,Ft=at<3?z:null===Ee?Ee=Object.getOwnPropertyDescriptor(z,B):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)Ft=Reflect.decorate(I,z,B,Ee);else for(var hr=I.length-1;hr>=0;hr--)(Gn=I[hr])&&(Ft=(at<3?Gn(Ft):at>3?Gn(z,B,Ft):Gn(z,B))||Ft);return at>3&&Ft&&Object.defineProperty(z,B,Ft),Ft},Cd=function(I,z){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(I,z)};let Vf=(()=>{class I{constructor(B){this.treeModel=B,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,B.virtualScroll=this,this._dispose=[ei(()=>this.fixScroll())]}get y(){return 150*this.yBlocks}get totalHeight(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0}fireEvent(B){this.treeModel.fireEvent(B)}init(){const B=this.recalcPositions.bind(this);B(),this._dispose=[...this._dispose,os(()=>this.treeModel.roots,B),os(()=>this.treeModel.expandedNodeIds,B),os(()=>this.treeModel.hiddenNodeIds,B)],this.treeModel.subscribe(mc.loadNodeChildren,B)}isEnabled(){return this.treeModel.options.useVirtualScroll}_setYBlocks(B){this.yBlocks=B}recalcPositions(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)}_getPositionAfter(B,Ee){let at=Ee;return B.forEach(Ft=>{Ft.position=at,at=this._getPositionAfterNode(Ft,at)}),at}_getPositionAfterNode(B,Ee){let at=B.getSelfHeight()+Ee;return B.children&&B.isExpanded&&(at=this._getPositionAfter(B.visibleChildren,at)),B.height=at-Ee,at}clear(){this._dispose.forEach(B=>B())}setViewport(B){Object.assign(this,{viewport:B,x:B.scrollLeft,yBlocks:Math.round(B.scrollTop/150),viewportHeight:B.getBoundingClientRect?B.getBoundingClientRect().height:0})}scrollIntoView(B,Ee,at=!0){if(B.options.scrollContainer){const Ft=B.options.scrollContainer,Gn=Ft.getBoundingClientRect().height,hr=Ft.getBoundingClientRect().top,li=this.viewport.getBoundingClientRect().top+B.position-hr;(Ee||li<Ft.scrollTop||li+B.getSelfHeight()>Ft.scrollTop+Gn)&&(Ft.scrollTop=at?li-Gn/2:li)}else(Ee||B.position<this.y||B.position+B.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=at?B.position-this.viewportHeight/2:B.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))}getViewportNodes(B){if(!B)return[];const Ee=B.filter(Io=>!Io.isHidden);if(!this.isEnabled())return Ee;if(!this.viewportHeight||!Ee.length)return[];const at=fv(Ee,Io=>Io.position+500>this.y||Io.position+Io.height>this.y),Ft=fv(Ee,Io=>Io.position-500>this.y+this.viewportHeight,at),Gn=[];if(Ft-at>(1e3+this.viewportHeight)/Ee[0].treeModel.options.options.nodeHeight)return[];for(let Io=at;Io<=Ft;Io++)Gn.push(Ee[Io]);return Gn}fixScroll(){const B=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>B&&this._setYBlocks(B/150)}}return I.\u0275fac=function(B){return new(B||I)(r.LFG(eu))},I.\u0275prov=r.Yz7({token:I,factory:I.\u0275fac}),I})();function fv(I,z,B=0){let Ee=B,at=I.length-1;for(;Ee!==at;){let Ft=Math.floor((Ee+at)/2);z(I[Ft])?at=Ft:Ee=Ee===Ft?at:Ft}return Ee}Zh([mr,Cd("design:type",Object)],Vf.prototype,"yBlocks",void 0),Zh([mr,Cd("design:type",Object)],Vf.prototype,"x",void 0),Zh([mr,Cd("design:type",Object)],Vf.prototype,"viewportHeight",void 0),Zh([si,Cd("design:type",Object),Cd("design:paramtypes",[])],Vf.prototype,"y",null),Zh([si,Cd("design:type",Object),Cd("design:paramtypes",[])],Vf.prototype,"totalHeight",null),Zh([ne,Cd("design:type",Function),Cd("design:paramtypes",[Object]),Cd("design:returntype",void 0)],Vf.prototype,"_setYBlocks",null),Zh([ne,Cd("design:type",Function),Cd("design:paramtypes",[]),Cd("design:returntype",void 0)],Vf.prototype,"recalcPositions",null),Zh([ne,Cd("design:type",Function),Cd("design:paramtypes",[Object]),Cd("design:returntype",void 0)],Vf.prototype,"setViewport",null),Zh([ne,Cd("design:type",Function),Cd("design:paramtypes",[Object,Object,Object]),Cd("design:returntype",void 0)],Vf.prototype,"scrollIntoView",null);let pv=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-loading-component"]],inputs:{template:"template",node:"node"},decls:2,vars:5,consts:[[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(B,Ee){1&B&&(r.YNc(0,h_,2,0,"span",0),r.GkF(1,1)),2&B&&(r.Q6J("ngIf",!Ee.template),r.xp6(1),r.Q6J("ngTemplateOutlet",Ee.template)("ngTemplateOutletContext",r.VKq(3,Hh,Ee.node)))},directives:[u.O5,u.tP],encapsulation:2}),I})(),Q_=(()=>{class I{constructor(B,Ee,at){this.elementRef=B,this.ngZone=Ee,this.virtualScroll=at,this.setViewport=yg(()=>{this.virtualScroll.setViewport(this.elementRef.nativeElement)},17),this.scrollEventHandler=this.setViewport.bind(this)}ngOnInit(){this.virtualScroll.init()}ngAfterViewInit(){setTimeout(()=>{this.setViewport(),this.virtualScroll.fireEvent({eventName:mc.initialized})});let B=this.elementRef.nativeElement;this.ngZone.runOutsideAngular(()=>{B.addEventListener("scroll",this.scrollEventHandler)})}ngOnDestroy(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)}getTotalHeight(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(r.SBq),r.Y36(r.R0b),r.Y36(Vf))},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-viewport"]],features:[r._Bn([Vf])],ngContentSelectors:Mg,decls:1,vars:2,consts:[[4,"treeMobxAutorun"]],template:function(B,Ee){1&B&&(r.F$t(),r.YNc(0,__,3,2,"ng-container",0)),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:[Wr],encapsulation:2}),I})(),Nm=(()=>{class I{constructor(B,Ee){this.treeModel=B,this.treeDraggedElement=Ee,B.eventNames.forEach(at=>this[at]=new r.vpe),B.subscribeToState(at=>this.stateChange.emit(at))}set nodes(B){}set options(B){}set focused(B){this.treeModel.setFocus(B)}set state(B){this.treeModel.setState(B)}onKeydown(B){if(!this.treeModel.isFocused||Hg(["input","textarea"],document.activeElement.tagName.toLowerCase()))return;const Ee=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(Ee,B)}onMousedown(B){(function Ee(at,Ft){return!at||at.localName!==Ft&&Ee(at.parentElement,Ft)})(B.target,"tree-root")&&this.treeModel.setFocus(!1)}ngOnChanges(B){(B.options||B.nodes)&&this.treeModel.setData({options:B.options&&B.options.currentValue,nodes:B.nodes&&B.nodes.currentValue,events:p_(this,this.treeModel.eventNames)})}sizeChanged(){this.viewportComponent.setViewport()}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(eu),r.Y36(cv))},I.\u0275cmp=r.Xpm({type:I,selectors:[["Tree"],["tree-root"]],contentQueries:function(B,Ee,at){if(1&B&&(r.Suo(at,g_,5),r.Suo(at,Ug,5),r.Suo(at,Uh,5),r.Suo(at,Ag,5)),2&B){let Ft;r.iGM(Ft=r.CRH())&&(Ee.loadingTemplate=Ft.first),r.iGM(Ft=r.CRH())&&(Ee.treeNodeTemplate=Ft.first),r.iGM(Ft=r.CRH())&&(Ee.treeNodeWrapperTemplate=Ft.first),r.iGM(Ft=r.CRH())&&(Ee.treeNodeFullTemplate=Ft.first)}},viewQuery:function(B,Ee){if(1&B&&r.Gf(ov,5),2&B){let at;r.iGM(at=r.CRH())&&(Ee.viewportComponent=at.first)}},hostBindings:function(B,Ee){1&B&&r.NdJ("keydown",function(Ft){return Ee.onKeydown(Ft)},!1,r.pYS)("mousedown",function(Ft){return Ee.onMousedown(Ft)},!1,r.pYS)},inputs:{nodes:"nodes",options:"options",focused:"focused",state:"state"},outputs:{toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",updateData:"updateData",initialized:"initialized",moveNode:"moveNode",copyNode:"copyNode",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",event:"event",stateChange:"stateChange"},features:[r._Bn([eu]),r.TTD],decls:5,vars:6,consts:[["viewport",""],[1,"angular-tree-component"],[3,"nodes","treeModel","templates",4,"ngIf"],["class","empty-tree-drop-slot",3,"dropIndex","node",4,"ngIf"],[3,"nodes","treeModel","templates"],[1,"empty-tree-drop-slot",3,"dropIndex","node"]],template:function(B,Ee){1&B&&(r.TgZ(0,"tree-viewport",null,0),r.TgZ(2,"div",1),r.YNc(3,Om,1,8,"tree-node-collection",2),r.YNc(4,m_,1,2,"tree-node-drop-slot",3),r.qZA(),r.qZA()),2&B&&(r.xp6(2),r.ekj("node-dragging",Ee.treeDraggedElement.isDragging())("angular-tree-component-rtl",Ee.treeModel.options.rtl),r.xp6(1),r.Q6J("ngIf",Ee.treeModel.roots),r.xp6(1),r.Q6J("ngIf",Ee.treeModel.isEmptyTree()))},directives:function(){return[Q_,u.O5,jh,Cp]},encapsulation:2}),I})(),Bg=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["TreeNode"],["tree-node"]],inputs:{node:"node",index:"index",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"class","tree-node","tree-node-expanded","tree-node-collapsed","tree-node-leaf","tree-node-active","tree-node-focused",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[3,"dropIndex","node",4,"ngIf"],[3,"node","index","templates"],[3,"node","templates"],[3,"dropIndex","node"]],template:function(B,Ee){1&B&&r.YNc(0,Se,3,8,"ng-container",0),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:function(){return[Wr,u.O5,u.tP,Gp,_v,Cp]},encapsulation:2}),I})(),hv=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-content"]],inputs:{node:"node",index:"index",template:"template"},decls:2,vars:7,consts:[[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(B,Ee){1&B&&(r.YNc(0,We,2,1,"span",0),r.GkF(1,1)),2&B&&(r.Q6J("ngIf",!Ee.template),r.xp6(1),r.Q6J("ngTemplateOutlet",Ee.template)("ngTemplateOutletContext",r.kEZ(3,Rt,Ee.node,Ee.node,Ee.index)))},directives:[u.O5,u.tP],encapsulation:2}),I})(),Cp=(()=>{class I{onDrop(B){this.node.mouseAction("drop",B.event,{from:B.element,to:{parent:this.node,index:this.dropIndex}})}allowDrop(B,Ee){return this.node.options.allowDrop(B,{parent:this.node,index:this.dropIndex},Ee)}}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["TreeNodeDropSlot"],["tree-node-drop-slot"]],inputs:{node:"node",dropIndex:"dropIndex"},decls:1,vars:2,consts:[[1,"node-drop-slot",3,"treeAllowDrop","allowDragoverStyling","treeDrop"]],template:function(B,Ee){1&B&&(r.TgZ(0,"div",0),r.NdJ("treeDrop",function(Ft){return Ee.onDrop(Ft)}),r.qZA()),2&B&&r.Q6J("treeAllowDrop",Ee.allowDrop.bind(Ee))("allowDragoverStyling",!0)},directives:function(){return[Lm]},encapsulation:2}),I})(),Pm=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-expander"]],inputs:{node:"node"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],["class","toggle-children-wrapper",3,"toggle-children-wrapper-expanded","toggle-children-wrapper-collapsed","click",4,"ngIf"],["class","toggle-children-placeholder",4,"ngIf"],[1,"toggle-children-wrapper",3,"click"],[1,"toggle-children"],[1,"toggle-children-placeholder"]],template:function(B,Ee){1&B&&r.YNc(0,Er,3,2,"ng-container",0),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:[Wr,u.O5],encapsulation:2}),I})(),_v=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-children"]],inputs:{node:"node",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"tree-children","tree-children-no-padding",4,"treeAnimateOpen","treeAnimateOpenSpeed","treeAnimateOpenAcceleration","treeAnimateOpenEnabled"],[3,"nodes","templates","treeModel",4,"ngIf"],["class","tree-node-loading",3,"padding-left","template","node",4,"ngIf"],[3,"nodes","templates","treeModel"],[1,"tree-node-loading",3,"template","node"]],template:function(B,Ee){1&B&&r.YNc(0,mo,2,4,"ng-container",0),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:function(){return[Wr,mv,u.O5,jh,pv]},encapsulation:2}),I})();const Yg=Object.assign(function(...I){return ne(...I)},ne),gv=Object.assign(function(...I){return si(...I)},si),Og=Object.assign(function(...I){return mr(...I)},mr);var Mp=function(I,z,B,Ee){var Gn,at=arguments.length,Ft=at<3?z:null===Ee?Ee=Object.getOwnPropertyDescriptor(z,B):Ee;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)Ft=Reflect.decorate(I,z,B,Ee);else for(var hr=I.length-1;hr>=0;hr--)(Gn=I[hr])&&(Ft=(at<3?Gn(Ft):at>3?Gn(z,B,Ft):Gn(z,B))||Ft);return at>3&&Ft&&Object.defineProperty(z,B,Ft),Ft},rp=function(I,z){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(I,z)};let jh=(()=>{class I{constructor(){this._dispose=[]}get nodes(){return this._nodes}set nodes(B){this.setNodes(B)}get marginTop(){const B=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(B&&B.parent?B.position-B.parent.position-B.parent.getSelfHeight():0)+"px"}setNodes(B){this._nodes=B}ngOnInit(){this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[os(()=>this.virtualScroll.getViewportNodes(this.nodes).map(B=>B.index),B=>{this.viewportNodes=B.map(Ee=>this.nodes[Ee])},{compareStructural:!0,fireImmediately:!0}),os(()=>this.nodes,B=>{this.viewportNodes=this.virtualScroll.getViewportNodes(B)})]}ngOnDestroy(){this._dispose.forEach(B=>B())}trackNode(B,Ee){return Ee.id}}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-collection"]],inputs:{nodes:"nodes",treeModel:"treeModel",templates:"templates"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],[3,"node","index","templates",4,"ngFor","ngForOf","ngForTrackBy"],[3,"node","index","templates"]],template:function(B,Ee){1&B&&r.YNc(0,La,3,4,"ng-container",0),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:[Wr,u.sg,Bg],encapsulation:2}),I})();Mp([Og,rp("design:type",Object)],jh.prototype,"_nodes",void 0),Mp([Og,rp("design:type",Array)],jh.prototype,"viewportNodes",void 0),Mp([gv,rp("design:type",String),rp("design:paramtypes",[])],jh.prototype,"marginTop",null),Mp([Yg,rp("design:type",Function),rp("design:paramtypes",[Object]),rp("design:returntype",void 0)],jh.prototype,"setNodes",null);let Gp=(()=>{class I{constructor(){}}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-wrapper"]],inputs:{node:"node",index:"index",templates:"templates"},decls:2,vars:8,consts:[["class","node-wrapper",3,"padding-left",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"node-wrapper"],[3,"node",4,"ngIf"],[3,"node"],[1,"node-content-wrapper",3,"treeAllowDrop","allowDragoverStyling","treeDrag","treeDragEnabled","click","dblclick","mouseover","mouseout","contextmenu","treeDrop","treeDropDragOver","treeDropDragLeave","treeDropDragEnter"],[3,"node","index","template"]],template:function(B,Ee){1&B&&(r.YNc(0,ti,5,15,"div",0),r.GkF(1,1)),2&B&&(r.Q6J("ngIf",!Ee.templates.treeNodeWrapperTemplate),r.xp6(1),r.Q6J("ngTemplateOutlet",Ee.templates.treeNodeWrapperTemplate)("ngTemplateOutletContext",r.l5B(3,G,Ee.node,Ee.node,Ee.index,Ee.templates)))},directives:function(){return[u.O5,u.tP,Pm,Fm,Lm,hv,X_]},encapsulation:2}),I})(),X_=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275cmp=r.Xpm({type:I,selectors:[["tree-node-checkbox"]],inputs:{node:"node"},decls:1,vars:2,consts:[[4,"treeMobxAutorun"],["type","checkbox",1,"tree-node-checkbox",3,"checked","indeterminate","click"]],template:function(B,Ee){1&B&&r.YNc(0,Sr,2,2,"ng-container",0),2&B&&r.Q6J("treeMobxAutorun",r.DdM(1,Zp))},directives:[Wr],encapsulation:2}),I})();const v_="is-dragging-over",Im="is-dragging-over-disabled";let Lm=(()=>{class I{constructor(B,Ee,at,Ft){this.el=B,this.renderer=Ee,this.treeDraggedElement=at,this.ngZone=Ft,this.allowDragoverStyling=!0,this.onDropCallback=new r.vpe,this.onDragOverCallback=new r.vpe,this.onDragLeaveCallback=new r.vpe,this.onDragEnterCallback=new r.vpe,this._allowDrop=(Gn,hr)=>!0,this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}set treeAllowDrop(B){this._allowDrop=B instanceof Function?B:(Ee,at)=>B}allowDrop(B){return this._allowDrop(this.treeDraggedElement.get(),B)}ngAfterViewInit(){let B=this.el.nativeElement;this.ngZone.runOutsideAngular(()=>{B.addEventListener("dragover",this.dragOverEventHandler),B.addEventListener("dragenter",this.dragEnterEventHandler),B.addEventListener("dragleave",this.dragLeaveEventHandler)})}ngOnDestroy(){let B=this.el.nativeElement;B.removeEventListener("dragover",this.dragOverEventHandler),B.removeEventListener("dragenter",this.dragEnterEventHandler),B.removeEventListener("dragleave",this.dragLeaveEventHandler)}onDragOver(B){if(!this.allowDrop(B))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:B,element:this.treeDraggedElement.get()}),B.preventDefault(),this.allowDragoverStyling&&this.addClass()}onDragEnter(B){!this.allowDrop(B)||(B.preventDefault(),this.onDragEnterCallback.emit({event:B,element:this.treeDraggedElement.get()}))}onDragLeave(B){if(!this.allowDrop(B))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:B,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()}onDrop(B){!this.allowDrop(B)||(B.preventDefault(),this.onDropCallback.emit({event:B,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))}addClass(){this.renderer.addClass(this.el.nativeElement,v_)}removeClass(){this.renderer.removeClass(this.el.nativeElement,v_)}addDisabledClass(){this.renderer.addClass(this.el.nativeElement,Im)}removeDisabledClass(){this.renderer.removeClass(this.el.nativeElement,Im)}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(cv),r.Y36(r.R0b))},I.\u0275dir=r.lG2({type:I,selectors:[["","treeDrop",""]],hostBindings:function(B,Ee){1&B&&r.NdJ("drop",function(Ft){return Ee.onDrop(Ft)})},inputs:{allowDragoverStyling:"allowDragoverStyling",treeAllowDrop:"treeAllowDrop"},outputs:{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}}),I})(),Fm=(()=>{class I{constructor(B,Ee,at,Ft){this.el=B,this.renderer=Ee,this.treeDraggedElement=at,this.ngZone=Ft,this.dragEventHandler=this.onDrag.bind(this)}ngAfterViewInit(){let B=this.el.nativeElement;this.ngZone.runOutsideAngular(()=>{B.addEventListener("drag",this.dragEventHandler)})}ngDoCheck(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")}ngOnDestroy(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)}onDragStart(B){B.dataTransfer.setData("text",B.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",B)}onDrag(B){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",B)}onDragEnd(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(cv),r.Y36(r.R0b))},I.\u0275dir=r.lG2({type:I,selectors:[["","treeDrag",""]],hostBindings:function(B,Ee){1&B&&r.NdJ("dragstart",function(Ft){return Ee.onDragStart(Ft)})("dragend",function(){return Ee.onDragEnd()})},inputs:{draggedElement:["treeDrag","draggedElement"],treeDragEnabled:"treeDragEnabled"}}),I})(),mv=(()=>{class I{constructor(B,Ee,at){this.renderer=B,this.templateRef=Ee,this.viewContainerRef=at}set isOpen(B){B?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!B}_show(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])}_hide(){this.viewContainerRef.clear(),this.innerElement=null}_animateOpen(){let B=this.animateSpeed,Ee=this.animateAcceleration,at=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout(()=>{const Ft=setInterval(()=>{if(!this._isOpen||!this.innerElement)return clearInterval(Ft);at+=B;const Gn=Math.round(at);this.renderer.setStyle(this.innerElement,"max-height",`${Gn}px`);const hr=this.innerElement.getBoundingClientRect?this.innerElement.getBoundingClientRect().height:0;B*=Ee,Ee*=1.005,hr<Gn&&(this.renderer.setStyle(this.innerElement,"max-height",null),clearInterval(Ft))},17)})}_animateClose(){if(!this.innerElement)return;let B=this.animateSpeed,Ee=this.animateAcceleration,at=this.innerElement.getBoundingClientRect().height;const Ft=setInterval(()=>{if(this._isOpen||!this.innerElement)return clearInterval(Ft);at-=B,this.renderer.setStyle(this.innerElement,"max-height",`${at}px`),B*=Ee,Ee*=1.005,at<=0&&(this.viewContainerRef.clear(),this.innerElement=null,clearInterval(Ft))},17)}}return I.\u0275fac=function(B){return new(B||I)(r.Y36(r.Qsj),r.Y36(r.Rgc),r.Y36(r.s_b))},I.\u0275dir=r.lG2({type:I,selectors:[["","treeAnimateOpen",""]],inputs:{isOpen:["treeAnimateOpen","isOpen"],animateSpeed:["treeAnimateOpenSpeed","animateSpeed"],animateAcceleration:["treeAnimateOpenAcceleration","animateAcceleration"],isEnabled:["treeAnimateOpenEnabled","isEnabled"]}}),I})(),jg=(()=>{class I{}return I.\u0275fac=function(B){return new(B||I)},I.\u0275mod=r.oAB({type:I}),I.\u0275inj=r.cJS({providers:[],imports:[[u.ez]]}),I})()},38549:(v,S,i)=>{"use strict";i.d(S,{Kz:()=>E,xm:()=>Pl,_A:()=>ec,vL:()=>Vl,_D:()=>ha,lQ:()=>_u,VL:()=>zl,M:()=>Bu,jt:()=>hc,TH:()=>wf,Vi:()=>Wl,XC:()=>Cc,iD:()=>rc,J4:()=>qt,FF:()=>be,Pz:()=>Rn,uN:()=>Jt,nv:()=>Pn,Vx:()=>sr,Oz:()=>qs,tO:()=>$o,M2:()=>Xd,o8:()=>ia,AX:()=>vi,dT:()=>_l,Ly:()=>Wc,ZQ:()=>Kf,Pm:()=>kd,UL:()=>Uf,_L:()=>wh,xI:()=>th,HK:()=>Up,dR:()=>oc,ZS:()=>rh});var r=i(74788),u=i(12057),p=i(59796),f=i(56693),e=i(55197),_=i(20509);function y(...Y){if(1===Y.length){if(!(0,p.k)(Y[0]))return Y[0];Y=Y[0]}return(0,f.n)(Y,void 0).lift(new T)}class T{call(fe,w){return w.subscribe(new M(fe))}}class M extends e.L{constructor(fe){super(fe),this.hasFirst=!1,this.observables=[],this.subscriptions=[]}_next(fe){this.observables.push(fe)}_complete(){const fe=this.observables,w=fe.length;if(0===w)this.destination.complete();else{for(let q=0;q<w&&!this.hasFirst;q++){const ut=(0,_.D)(this,fe[q],void 0,q);this.subscriptions&&this.subscriptions.push(ut),this.add(ut)}this.observables=null}}notifyNext(fe,w,q){if(!this.hasFirst){this.hasFirst=!0;for(let Fe=0;Fe<this.subscriptions.length;Fe++)if(Fe!==q){let ut=this.subscriptions[Fe];ut.unsubscribe(),this.remove(ut)}this.subscriptions=null}this.destination.next(w)}}var R=i(77393),F=i(20377),Z=i(85345);function J(...Y){const fe=Y[Y.length-1];return"function"==typeof fe&&Y.pop(),(0,f.n)(Y,void 0).lift(new Q(fe))}class Q{constructor(fe){this.resultSelector=fe}call(fe,w){return w.subscribe(new ee(fe,this.resultSelector))}}class ee extends R.L{constructor(fe,w,q=Object.create(null)){super(fe),this.resultSelector=w,this.iterators=[],this.active=0,this.resultSelector="function"==typeof w?w:void 0}_next(fe){const w=this.iterators;(0,p.k)(fe)?w.push(new ae(fe)):w.push("function"==typeof fe[F.hZ]?new ue(fe[F.hZ]()):new $(this.destination,this,fe))}_complete(){const fe=this.iterators,w=fe.length;if(this.unsubscribe(),0!==w){this.active=w;for(let q=0;q<w;q++){let Fe=fe[q];Fe.stillUnsubscribed?this.destination.add(Fe.subscribe()):this.active--}}else this.destination.complete()}notifyInactive(){this.active--,0===this.active&&this.destination.complete()}checkIterators(){const fe=this.iterators,w=fe.length,q=this.destination;for(let Xn=0;Xn<w;Xn++){let Fr=fe[Xn];if("function"==typeof Fr.hasValue&&!Fr.hasValue())return}let Fe=!1;const ut=[];for(let Xn=0;Xn<w;Xn++){let Fr=fe[Xn],gi=Fr.next();if(Fr.hasCompleted()&&(Fe=!0),gi.done)return void q.complete();ut.push(gi.value)}this.resultSelector?this._tryresultSelector(ut):q.next(ut),Fe&&q.complete()}_tryresultSelector(fe){let w;try{w=this.resultSelector.apply(this,fe)}catch(q){return void this.destination.error(q)}this.destination.next(w)}}class ue{constructor(fe){this.iterator=fe,this.nextResult=fe.next()}hasValue(){return!0}next(){const fe=this.nextResult;return this.nextResult=this.iterator.next(),fe}hasCompleted(){const fe=this.nextResult;return Boolean(fe&&fe.done)}}class ae{constructor(fe){this.array=fe,this.index=0,this.length=0,this.length=fe.length}[F.hZ](){return this}next(fe){const w=this.index++;return w<this.length?{value:this.array[w],done:!1}:{value:null,done:!0}}hasValue(){return this.array.length>this.index}hasCompleted(){return this.array.length===this.index}}class $ extends Z.Ds{constructor(fe,w,q){super(fe),this.parent=w,this.observable=q,this.stillUnsubscribed=!0,this.buffer=[],this.isComplete=!1}[F.hZ](){return this}next(){const fe=this.buffer;return 0===fe.length&&this.isComplete?{value:null,done:!0}:{value:fe.shift(),done:!1}}hasValue(){return this.buffer.length>0}hasCompleted(){return 0===this.buffer.length&&this.isComplete}notifyComplete(){this.buffer.length>0?(this.isComplete=!0,this.parent.notifyInactive()):this.destination.complete()}notifyNext(fe){this.buffer.push(fe),this.parent.checkIterators()}subscribe(){return(0,Z.ft)(this.observable,new Z.IY(this))}}var se=i(18891),ve=i(59193),oe=i(25917),he=i(79765),me=i(22759),Oe=i(46797),ce=i(26215),Ye=(i(9112),i(17757),i(66682)),je=i(58071);function Ve(...Y){return fe=>{let w;return"function"==typeof Y[Y.length-1]&&(w=Y.pop()),fe.lift(new He(Y,w))}}class He{constructor(fe,w){this.observables=fe,this.project=w}call(fe,w){return w.subscribe(new Zt(fe,this.observables,this.project))}}class Zt extends e.L{constructor(fe,w,q){super(fe),this.observables=w,this.project=q,this.toRespond=[];const Fe=w.length;this.values=new Array(Fe);for(let ut=0;ut<Fe;ut++)this.toRespond.push(ut);for(let ut=0;ut<Fe;ut++)this.add((0,_.D)(this,w[ut],void 0,ut))}notifyNext(fe,w,q){this.values[q]=w;const Fe=this.toRespond;if(Fe.length>0){const ut=Fe.indexOf(q);-1!==ut&&Fe.splice(ut,1)}}notifyComplete(){}_next(fe){if(0===this.toRespond.length){const w=[fe,...this.values];this.project?this._tryProject(w):this.destination.next(w)}}_tryProject(fe){let w;try{w=this.project.apply(this,fe)}catch(q){return void this.destination.error(q)}this.destination.next(w)}}class en{constructor(fe){this.total=fe}call(fe,w){return w.subscribe(new $t(fe,this.total))}}class $t extends R.L{constructor(fe,w){super(fe),this.total=w,this.count=0}_next(fe){++this.count>this.total&&this.destination.next(fe)}}var Gt=i(46782),Ut=i(45435),Bt=i(15257),mt=i(88002),Yt=i(39761),Dt=i(87519),zt=i(43190),Yn=i(68307),Hr=i(71289),ci=i(19773),Ir=i(18819),wr=i(24751);function $i(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",1),r.NdJ("click",function(){return r.CHM(w),r.oxw().close()}),r.TgZ(1,"span",2),r._uU(2,"\xd7"),r.qZA(),r.qZA()}}const Hi=["*"],Lr=["defaultDayTemplate"],Vn=["content"];function zr(Y,fe){if(1&Y&&r._UZ(0,"div",7),2&Y){const q=fe.currentMonth,Fe=fe.selected,ut=fe.disabled,Xn=fe.focused;r.Q6J("date",fe.date)("currentMonth",q)("selected",Fe)("disabled",ut)("focused",Xn)}}function hi(Y,fe){if(1&Y&&(r.TgZ(0,"div",12),r._uU(1),r.qZA()),2&Y){const w=r.oxw().$implicit,q=r.oxw(2);r.xp6(1),r.hij(" ",q.i18n.getMonthLabel(w.firstDate)," ")}}function Ai(Y,fe){if(1&Y&&(r.TgZ(0,"div",9),r.YNc(1,hi,2,1,"div",10),r._UZ(2,"ngb-datepicker-month",11),r.qZA()),2&Y){const w=fe.$implicit,q=r.oxw(2);r.xp6(1),r.Q6J("ngIf","none"===q.navigation||q.displayMonths>1&&"select"===q.navigation),r.xp6(1),r.Q6J("month",w.firstDate)}}function Tr(Y,fe){if(1&Y&&r.YNc(0,Ai,3,2,"div",8),2&Y){const w=r.oxw();r.Q6J("ngForOf",w.model.months)}}function Nr(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"ngb-datepicker-navigation",13),r.NdJ("navigate",function(Fe){return r.CHM(w),r.oxw().onNavigateEvent(Fe)})("select",function(Fe){return r.CHM(w),r.oxw().onNavigateDateSelect(Fe)}),r.qZA()}if(2&Y){const w=r.oxw();r.Q6J("date",w.model.firstDate)("months",w.model.months)("disabled",w.model.disabled)("showSelect","select"===w.model.navigation)("prevDisabled",w.model.prevDisabled)("nextDisabled",w.model.nextDisabled)("selectBoxes",w.model.selectBoxes)}}function gn(Y,fe){}function En(Y,fe){}function mr(Y,fe){if(1&Y&&(r.TgZ(0,"div",5),r._uU(1),r.qZA()),2&Y){const w=r.oxw(2);r.xp6(1),r.Oqu(w.i18n.getWeekLabel())}}function Xt(Y,fe){if(1&Y&&(r.TgZ(0,"div",6),r._uU(1),r.qZA()),2&Y){const w=fe.$implicit;r.xp6(1),r.Oqu(w)}}function zn(Y,fe){if(1&Y&&(r.TgZ(0,"div",2),r.YNc(1,mr,2,1,"div",3),r.YNc(2,Xt,2,1,"div",4),r.qZA()),2&Y){const w=r.oxw();r.xp6(1),r.Q6J("ngIf",w.datepicker.showWeekNumbers),r.xp6(1),r.Q6J("ngForOf",w.viewModel.weekdays)}}function vr(Y,fe){if(1&Y&&(r.TgZ(0,"div",11),r._uU(1),r.qZA()),2&Y){const w=r.oxw(2).$implicit,q=r.oxw();r.xp6(1),r.Oqu(q.i18n.getWeekNumerals(w.number))}}function si(Y,fe){}function Ii(Y,fe){if(1&Y&&r.YNc(0,si,0,0,"ng-template",14),2&Y){const w=r.oxw().$implicit,q=r.oxw(3);r.Q6J("ngTemplateOutlet",q.datepicker.dayTemplate)("ngTemplateOutletContext",w.context)}}function no(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"div",12),r.NdJ("click",function(Fe){const Xn=r.CHM(w).$implicit;return r.oxw(3).doSelect(Xn),Fe.preventDefault()}),r.YNc(1,Ii,1,2,"ng-template",13),r.qZA()}if(2&Y){const w=fe.$implicit;r.ekj("disabled",w.context.disabled)("hidden",w.hidden)("ngb-dp-today",w.context.today),r.Q6J("tabindex",w.tabindex),r.uIk("aria-label",w.ariaLabel),r.xp6(1),r.Q6J("ngIf",!w.hidden)}}function so(Y,fe){if(1&Y&&(r.TgZ(0,"div",8),r.YNc(1,vr,2,1,"div",9),r.YNc(2,no,2,9,"div",10),r.qZA()),2&Y){const w=r.oxw().$implicit,q=r.oxw();r.xp6(1),r.Q6J("ngIf",q.datepicker.showWeekNumbers),r.xp6(1),r.Q6J("ngForOf",w.days)}}function Ze(Y,fe){1&Y&&r.YNc(0,so,3,2,"div",7),2&Y&&r.Q6J("ngIf",!fe.$implicit.collapsed)}function Dr(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"ngb-datepicker-navigation-select",7),r.NdJ("select",function(Fe){return r.CHM(w),r.oxw().select.emit(Fe)}),r.qZA()}if(2&Y){const w=r.oxw();r.Q6J("date",w.date)("disabled",w.disabled)("months",w.selectBoxes.months)("years",w.selectBoxes.years)}}function jt(Y,fe){1&Y&&r._UZ(0,"div",0)}function xt(Y,fe){1&Y&&r._UZ(0,"div",0)}function mn(Y,fe){if(1&Y&&(r.YNc(0,jt,1,0,"div",9),r.TgZ(1,"div",10),r._uU(2),r.qZA(),r.YNc(3,xt,1,0,"div",9)),2&Y){const w=fe.$implicit,q=fe.index,Fe=r.oxw(2);r.Q6J("ngIf",q>0),r.xp6(2),r.hij(" ",Fe.i18n.getMonthLabel(w.firstDate)," "),r.xp6(1),r.Q6J("ngIf",q!==Fe.months.length-1)}}function Wn(Y,fe){if(1&Y&&r.YNc(0,mn,4,3,"ng-template",8),2&Y){const w=r.oxw();r.Q6J("ngForOf",w.months)}}const kn=["ngbDatepickerDayView",""],wn=["month"],nr=["year"];function Gi(Y,fe){if(1&Y&&(r.TgZ(0,"option",5),r._uU(1),r.qZA()),2&Y){const w=fe.$implicit,q=r.oxw();r.Q6J("value",w),r.uIk("aria-label",q.i18n.getMonthFullName(w,null==q.date?null:q.date.year)),r.xp6(1),r.Oqu(q.i18n.getMonthShortName(w,null==q.date?null:q.date.year))}}function po(Y,fe){if(1&Y&&(r.TgZ(0,"option",5),r._uU(1),r.qZA()),2&Y){const w=fe.$implicit,q=r.oxw();r.Q6J("value",w),r.xp6(1),r.Oqu(q.i18n.getYearNumerals(w))}}const yo=["dialog"],Mo=["ngbNavOutlet",""];function Vi(Y,fe){}const cs=function(Y){return{$implicit:Y}};function zo(Y,fe){if(1&Y&&(r.TgZ(0,"div",2),r.YNc(1,Vi,0,0,"ng-template",3),r.qZA()),2&Y){const w=r.oxw().$implicit,q=r.oxw();r.Q6J("item",w)("nav",q.nav)("role",q.paneRole),r.xp6(1),r.Q6J("ngTemplateOutlet",(null==w.contentTpl?null:w.contentTpl.templateRef)||null)("ngTemplateOutletContext",r.VKq(5,cs,w.active||q.isPanelTransitioning(w)))}}function So(Y,fe){if(1&Y&&r.YNc(0,zo,2,7,"div",1),2&Y){const w=fe.$implicit,q=r.oxw();r.Q6J("ngIf",w.isPanelInDom()||q.isPanelTransitioning(w))}}function qo(Y,fe){if(1&Y&&r._uU(0),2&Y){const w=r.oxw(2);r.Oqu(w.title)}}function ra(Y,fe){}function Ia(Y,fe){if(1&Y&&(r.TgZ(0,"h3",3),r.YNc(1,qo,1,1,"ng-template",null,4,r.W1O),r.YNc(3,ra,0,0,"ng-template",5),r.qZA()),2&Y){const w=r.MAs(2),q=r.oxw();r.xp6(3),r.Q6J("ngTemplateOutlet",q.isTitleTemplate()?q.title:w)("ngTemplateOutletContext",q.context)}}function pa(Y,fe){if(1&Y&&(r.TgZ(0,"span"),r.SDv(1,2),r.ALo(2,"percent"),r.qZA()),2&Y){const w=r.oxw();r.xp6(2),r.pQV(r.lcZ(2,1,w.getValue()/w.max)),r.QtT(1)}}function fo(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw();return Fe.changeHour(Fe.hourStep)}),r._UZ(1,"span",12),r.TgZ(2,"span",13),r.SDv(3,14),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw();r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function Da(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw();return Fe.changeHour(-Fe.hourStep)}),r._UZ(1,"span",15),r.TgZ(2,"span",13),r.SDv(3,16),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw();r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function Ao(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw();return Fe.changeMinute(Fe.minuteStep)}),r._UZ(1,"span",12),r.TgZ(2,"span",13),r.SDv(3,17),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw();r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function ls(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw();return Fe.changeMinute(-Fe.minuteStep)}),r._UZ(1,"span",15),r.TgZ(2,"span",13),r.SDv(3,18),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw();r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function gs(Y,fe){1&Y&&(r.TgZ(0,"div",5),r._uU(1,":"),r.qZA())}function Ra(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw(2);return Fe.changeSecond(Fe.secondStep)}),r._UZ(1,"span",12),r.TgZ(2,"span",13),r.SDv(3,21),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw(2);r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function pl(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",11),r.NdJ("click",function(){r.CHM(w);const Fe=r.oxw(2);return Fe.changeSecond(-Fe.secondStep)}),r._UZ(1,"span",15),r.TgZ(2,"span",13),r.SDv(3,22),r.qZA(),r.qZA()}if(2&Y){const w=r.oxw(2);r.ekj("btn-sm",w.isSmallSize)("btn-lg",w.isLargeSize)("disabled",w.disabled),r.Q6J("disabled",w.disabled)}}function Qs(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"div",19),r.YNc(1,Ra,4,7,"button",3),r.TgZ(2,"input",20),r.NdJ("change",function(Fe){return r.CHM(w),r.oxw().updateSecond(Fe.target.value)})("blur",function(){return r.CHM(w),r.oxw().handleBlur()})("input",function(Fe){return r.CHM(w),r.oxw().formatInput(Fe.target)})("keydown.ArrowUp",function(Fe){r.CHM(w);const ut=r.oxw();return ut.changeSecond(ut.secondStep),Fe.preventDefault()})("keydown.ArrowDown",function(Fe){r.CHM(w);const ut=r.oxw();return ut.changeSecond(-ut.secondStep),Fe.preventDefault()}),r.qZA(),r.YNc(3,pl,4,7,"button",3),r.qZA()}if(2&Y){const w=r.oxw();r.xp6(1),r.Q6J("ngIf",w.spinners),r.xp6(1),r.ekj("form-control-sm",w.isSmallSize)("form-control-lg",w.isLargeSize),r.Q6J("value",w.formatMinSec(null==w.model?null:w.model.second))("readOnly",w.readonlyInputs)("disabled",w.disabled),r.xp6(1),r.Q6J("ngIf",w.spinners)}}function Fo(Y,fe){1&Y&&r._UZ(0,"div",5)}function Eo(Y,fe){if(1&Y&&(r.ynx(0),r.SDv(1,27),r.BQk()),2&Y){const w=r.oxw(2);r.xp6(1),r.pQV(w.i18n.getAfternoonPeriod()),r.QtT(1)}}function ks(Y,fe){if(1&Y&&r.SDv(0,28),2&Y){const w=r.oxw(2);r.pQV(w.i18n.getMorningPeriod()),r.QtT(0)}}function ms(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"div",23),r.TgZ(1,"button",24),r.NdJ("click",function(){return r.CHM(w),r.oxw().toggleMeridian()}),r.YNc(2,Eo,2,1,"ng-container",25),r.YNc(3,ks,1,1,"ng-template",null,26,r.W1O),r.qZA(),r.qZA()}if(2&Y){const w=r.MAs(4),q=r.oxw();r.xp6(1),r.ekj("btn-sm",q.isSmallSize)("btn-lg",q.isLargeSize)("disabled",q.disabled),r.Q6J("disabled",q.disabled),r.xp6(1),r.Q6J("ngIf",q.model&&q.model.hour>=12)("ngIfElse",w)}}function tt(Y,fe){if(1&Y&&(r.TgZ(0,"span"),r._uU(1),r.qZA()),2&Y){const w=r.oxw().$implicit,q=r.oxw();r.Tol(q.highlightClass),r.xp6(1),r.Oqu(w)}}function on(Y,fe){if(1&Y&&r._uU(0),2&Y){const w=r.oxw().$implicit;r.Oqu(w)}}function ne(Y,fe){if(1&Y&&(r.YNc(0,tt,2,3,"span",1),r.YNc(1,on,1,1,"ng-template",null,2,r.W1O)),2&Y){const w=fe.odd,q=r.MAs(2);r.Q6J("ngIf",w)("ngIfElse",q)}}function $e(Y,fe){if(1&Y&&r._UZ(0,"ngb-highlight",2),2&Y){const q=fe.term;r.Q6J("result",(0,fe.formatter)(fe.result))("term",q)}}function Pt(Y,fe){}const sn=function(Y,fe,w){return{result:Y,term:fe,formatter:w}};function ei(Y,fe){if(1&Y){const w=r.EpF();r.TgZ(0,"button",3),r.NdJ("mouseenter",function(){const ut=r.CHM(w).index;return r.oxw().markActive(ut)})("click",function(){const ut=r.CHM(w).$implicit;return r.oxw().select(ut)}),r.YNc(1,Pt,0,0,"ng-template",4),r.qZA()}if(2&Y){const w=fe.$implicit,q=fe.index,Fe=r.oxw(),ut=r.MAs(1);r.ekj("active",q===Fe.activeIdx),r.Q6J("id",Fe.id+"-"+q),r.xp6(1),r.Q6J("ngTemplateOutlet",Fe.resultTemplate||ut)("ngTemplateOutletContext",r.kEZ(5,sn,w,Fe.term,Fe.formatter))}}function fi(Y){return parseInt(`${Y}`,10)}function Oi(Y){return null!=Y?`${Y}`:""}function Ro(Y){return"string"==typeof Y}function Uo(Y){return!isNaN(fi(Y))}function To(Y){return"number"==typeof Y&&isFinite(Y)&&Math.floor(Y)===Y}function Ea(Y){return null!=Y}function al(Y){return Uo(Y)?`0${Y}`.slice(-2):""}function Ru(Y,fe){return Y&&Y.className&&Y.className.split&&Y.className.split(/\s+/).indexOf(fe)>=0}function bc(Y){return(Y||document.body).getBoundingClientRect()}function Hl(Y){return Y.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}"undefined"!=typeof Element&&!Element.prototype.closest&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest=function(Y){let fe=this;if(!document.documentElement.contains(fe))return null;do{if(fe.matches(Y))return fe;fe=fe.parentElement||fe.parentNode}while(null!==fe&&1===fe.nodeType);return null});const Zl={animation:!0,transitionTimerDelayMs:5};let $s=(()=>{class Y{constructor(){this.animation=Zl.animation}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})();const el=()=>{},{transitionTimerDelayMs:jl}=Zl,rt=new Map,Nt=(Y,fe,w,q)=>{let Fe=q.context||{};const ut=rt.get(fe);if(ut)switch(q.runningTransition){case"continue":return ve.E;case"stop":Y.run(()=>ut.transition$.complete()),Fe=Object.assign(ut.context,Fe),rt.delete(fe)}const Xn=w(fe,q.animation,Fe)||el;if(!q.animation||"none"===window.getComputedStyle(fe).transitionProperty)return Y.run(()=>Xn()),(0,oe.of)(void 0).pipe(function(Y){return fe=>new se.y(w=>fe.subscribe(Xn=>Y.run(()=>w.next(Xn)),Xn=>Y.run(()=>w.error(Xn)),()=>Y.run(()=>w.complete())))}(Y));const Fr=new he.xQ,gi=new he.xQ,Wi=Fr.pipe(function(...Y){return fe=>(0,je.z)(fe,(0,oe.of)(...Y))}(!0));rt.set(fe,{transition$:Fr,complete:()=>{gi.next(),gi.complete()},context:Fe});const Po=function(Y){const{transitionDelay:fe,transitionDuration:w}=window.getComputedStyle(Y);return 1e3*(parseFloat(fe)+parseFloat(w))}(fe);return Y.runOutsideAngular(()=>{const Ns=(0,me.R)(fe,"transitionend").pipe((0,Gt.R)(Wi),(0,Ut.h)(({target:Is})=>Is===fe));y((0,Oe.H)(Po+jl).pipe((0,Gt.R)(Wi)),Ns,gi).pipe((0,Gt.R)(Wi)).subscribe(()=>{rt.delete(fe),Y.run(()=>{Xn(),Fr.next(),Fr.complete()})})}),Fr.asObservable()},Me=(Y,fe,w)=>{let{direction:q,maxHeight:Fe}=w;const{classList:ut}=Y;function Xn(){ut.add("collapse"),"show"===q?ut.add("show"):ut.remove("show")}if(fe)return Fe||(Fe=function(Y){if("undefined"==typeof navigator)return"0px";const{classList:fe}=Y,w=fe.contains("show");w||fe.add("show"),Y.style.height="";const q=Y.getBoundingClientRect().height+"px";return w||fe.remove("show"),q}(Y),w.maxHeight=Fe,Y.style.height="show"!==q?Fe:"0px",ut.remove("collapse"),ut.remove("collapsing"),ut.remove("show"),bc(Y),ut.add("collapsing")),Y.style.height="show"===q?Fe:"0px",()=>{Xn(),ut.remove("collapsing"),Y.style.height=""};Xn()};let uu=(()=>{class Y{constructor(w){this._ngbConfig=w,this.dismissible=!0,this.type="warning"}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})();const Wa=({classList:Y})=>{Y.remove("show")};let Pl=(()=>{class Y{constructor(w,q,Fe,ut){this._renderer=q,this._element=Fe,this._zone=ut,this.closed=new r.vpe,this.dismissible=w.dismissible,this.type=w.type,this.animation=w.animation}close(){const w=Nt(this._zone,this._element.nativeElement,Wa,{animation:this.animation,runningTransition:"continue"});return w.subscribe(()=>this.closed.emit()),w}ngOnChanges(w){const q=w.type;q&&!q.firstChange&&(this._renderer.removeClass(this._element.nativeElement,`alert-${q.previousValue}`),this._renderer.addClass(this._element.nativeElement,`alert-${q.currentValue}`))}ngOnInit(){this._renderer.addClass(this._element.nativeElement,`alert-${this.type}`)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(uu),r.Y36(r.Qsj),r.Y36(r.SBq),r.Y36(r.R0b))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-alert"]],hostAttrs:["role","alert",1,"alert","show"],hostVars:4,hostBindings:function(w,q){2&w&&r.ekj("fade",q.animation)("alert-dismissible",q.dismissible)},inputs:{dismissible:"dismissible",type:"type",animation:"animation"},outputs:{closed:"closed"},exportAs:["ngbAlert"],features:[r.TTD],ngContentSelectors:Hi,decls:2,vars:1,consts:function(){let fe;return fe="Close",[["type","button","class","close","aria-label",fe,3,"click",4,"ngIf"],["type","button","aria-label",fe,1,"close",3,"click"],["aria-hidden","true"]]},template:function(w,q){1&w&&(r.F$t(),r.Hsn(0),r.YNc(1,$i,3,0,"button",0)),2&w&&(r.xp6(1),r.Q6J("ngIf",q.dismissible))},directives:[u.O5],styles:["ngb-alert{display:block}"],encapsulation:2,changeDetection:0}),Y})(),ec=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})(),Ar=(()=>{class Y{constructor(w){this._ngbConfig=w}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})(),ha=(()=>{class Y{constructor(w,q,Fe){this._element=w,this._zone=Fe,this.collapsed=!1,this.ngbCollapseChange=new r.vpe,this.shown=new r.vpe,this.hidden=new r.vpe,this.animation=q.animation}ngOnInit(){this._runTransition(this.collapsed,!1)}ngOnChanges({collapsed:w}){w.firstChange||this._runTransitionWithEvents(this.collapsed,this.animation)}toggle(w=this.collapsed){this.collapsed=!w,this.ngbCollapseChange.next(this.collapsed),this._runTransitionWithEvents(this.collapsed,this.animation)}_runTransition(w,q){return Nt(this._zone,this._element.nativeElement,Me,{animation:q,runningTransition:"stop",context:{direction:w?"hide":"show"}})}_runTransitionWithEvents(w,q){this._runTransition(w,q).subscribe(()=>{w?this.hidden.emit():this.shown.emit()})}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq),r.Y36(Ar),r.Y36(r.R0b))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbCollapse",""]],inputs:{collapsed:["ngbCollapse","collapsed"],animation:"animation"},outputs:{ngbCollapseChange:"ngbCollapseChange",shown:"shown",hidden:"hidden"},exportAs:["ngbCollapse"],features:[r.TTD]}),Y})(),_u=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({}),Y})();class fa{constructor(fe,w,q){this.year=To(fe)?fe:null,this.month=To(w)?w:null,this.day=To(q)?q:null}static from(fe){return fe instanceof fa?fe:fe?new fa(fe.year,fe.month,fe.day):null}equals(fe){return null!=fe&&this.year===fe.year&&this.month===fe.month&&this.day===fe.day}before(fe){return!!fe&&(this.year===fe.year?this.month===fe.month?this.day!==fe.day&&this.day<fe.day:this.month<fe.month:this.year<fe.year)}after(fe){return!!fe&&(this.year===fe.year?this.month===fe.month?this.day!==fe.day&&this.day>fe.day:this.month>fe.month:this.year>fe.year)}}function Gl(Y){return new fa(Y.getFullYear(),Y.getMonth()+1,Y.getDate())}function Ja(Y){const fe=new Date(Y.year,Y.month-1,Y.day,12);return isNaN(fe.getTime())||fe.setFullYear(Y.year),fe}function hl(){return new Hs}let Vl=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:hl,token:Y,providedIn:"root"}),Y})(),Hs=(()=>{class Y extends Vl{getDaysPerWeek(){return 7}getMonths(){return[1,2,3,4,5,6,7,8,9,10,11,12]}getWeeksPerMonth(){return 6}getNext(w,q="d",Fe=1){let ut=Ja(w),Xn=!0,Fr=ut.getMonth();switch(q){case"y":ut.setFullYear(ut.getFullYear()+Fe);break;case"m":Fr+=Fe,ut.setMonth(Fr),Fr%=12,Fr<0&&(Fr+=12);break;case"d":ut.setDate(ut.getDate()+Fe),Xn=!1;break;default:return w}return Xn&&ut.getMonth()!==Fr&&ut.setDate(0),Gl(ut)}getPrev(w,q="d",Fe=1){return this.getNext(w,q,-Fe)}getWeekday(w){let Fe=Ja(w).getDay();return 0===Fe?7:Fe}getWeekNumber(w,q){7===q&&(q=0);const Xn=Ja(w[(11-q)%7]);Xn.setDate(Xn.getDate()+4-(Xn.getDay()||7));const Fr=Xn.getTime();return Xn.setMonth(0),Xn.setDate(1),Math.floor(Math.round((Fr-Xn.getTime())/864e5)/7)+1}getToday(){return Gl(new Date)}isValid(w){if(!(w&&To(w.year)&&To(w.month)&&To(w.day)&&0!==w.year))return!1;const q=Ja(w);return!isNaN(q.getTime())&&q.getFullYear()===w.year&&q.getMonth()+1===w.month&&q.getDate()===w.day}}return Y.\u0275fac=function(){let fe;return function(q){return(fe||(fe=r.n5z(Y)))(q||Y)}}(),Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})();function V(Y,fe){return!function(Y,fe){return!Y&&!fe||!!Y&&!!fe&&Y.equals(fe)}(Y,fe)}function Ae(Y,fe){return!(!Y&&!fe||Y&&fe&&Y.year===fe.year&&Y.month===fe.month)}function lt(Y,fe,w){return Y&&fe&&Y.before(fe)?fe:Y&&w&&Y.after(w)?w:Y||null}function un(Y,fe){const{minDate:w,maxDate:q,disabled:Fe,markDisabled:ut}=fe;return!(null==Y||Fe||ut&&ut(Y,{year:Y.year,month:Y.month})||w&&Y.before(w)||q&&Y.after(q))}let Mr=(()=>{class Y{getMonthLabel(w){return`${this.getMonthFullName(w.month,w.year)} ${this.getYearNumerals(w.year)}`}getDayNumerals(w){return`${w.day}`}getWeekNumerals(w){return`${w}`}getYearNumerals(w){return`${w}`}getWeekLabel(){return""}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return function(Y){return new gr(Y)}(r.LFG(r.soG))},token:Y,providedIn:"root"}),Y})(),gr=(()=>{class Y extends Mr{constructor(w){super(),this._locale=w,this._monthsShort=(0,u.UT)(w,u.x.Standalone,u.Tn.Abbreviated),this._monthsFull=(0,u.UT)(w,u.x.Standalone,u.Tn.Wide)}getWeekdayLabel(w,q){const Fe=(0,u.Mn)(this._locale,u.x.Standalone,void 0===q?u.Tn.Short:q);return Fe.map((Xn,Fr)=>Fe[(Fr+1)%7])[w-1]||""}getMonthShortName(w){return this._monthsShort[w-1]||""}getMonthFullName(w){return this._monthsFull[w-1]||""}getDayAriaLabel(w){const q=new Date(w.year,w.month-1,w.day);return(0,u.p6)(q,"fullDate",this._locale)}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(r.soG))},Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})(),co=(()=>{class Y{constructor(w,q){this._calendar=w,this._i18n=q,this._VALIDATORS={dayTemplateData:Fe=>{if(this._state.dayTemplateData!==Fe)return{dayTemplateData:Fe}},displayMonths:Fe=>{if(To(Fe=fi(Fe))&&Fe>0&&this._state.displayMonths!==Fe)return{displayMonths:Fe}},disabled:Fe=>{if(this._state.disabled!==Fe)return{disabled:Fe}},firstDayOfWeek:Fe=>{if(To(Fe=fi(Fe))&&Fe>=0&&this._state.firstDayOfWeek!==Fe)return{firstDayOfWeek:Fe}},focusVisible:Fe=>{if(this._state.focusVisible!==Fe&&!this._state.disabled)return{focusVisible:Fe}},markDisabled:Fe=>{if(this._state.markDisabled!==Fe)return{markDisabled:Fe}},maxDate:Fe=>{const ut=this.toValidDate(Fe,null);if(V(this._state.maxDate,ut))return{maxDate:ut}},minDate:Fe=>{const ut=this.toValidDate(Fe,null);if(V(this._state.minDate,ut))return{minDate:ut}},navigation:Fe=>{if(this._state.navigation!==Fe)return{navigation:Fe}},outsideDays:Fe=>{if(this._state.outsideDays!==Fe)return{outsideDays:Fe}},weekdays:Fe=>{const ut=!0===Fe||!1===Fe?u.Tn.Short:Fe,Xn=!0!==Fe&&!1!==Fe||Fe;if(this._state.weekdayWidth!==ut||this._state.weekdaysVisible!==Xn)return{weekdayWidth:ut,weekdaysVisible:Xn}}},this._model$=new he.xQ,this._dateSelect$=new he.xQ,this._state={dayTemplateData:null,markDisabled:null,maxDate:null,minDate:null,disabled:!1,displayMonths:1,firstDate:null,firstDayOfWeek:1,lastDate:null,focusDate:null,focusVisible:!1,months:[],navigation:"select",outsideDays:"visible",prevDisabled:!1,nextDisabled:!1,selectedDate:null,selectBoxes:{years:[],months:[]},weekdayWidth:u.Tn.Short,weekdaysVisible:!0}}get model$(){return this._model$.pipe((0,Ut.h)(w=>w.months.length>0))}get dateSelect$(){return this._dateSelect$.pipe((0,Ut.h)(w=>null!==w))}set(w){let q=Object.keys(w).map(Fe=>this._VALIDATORS[Fe](w[Fe])).reduce((Fe,ut)=>Object.assign(Object.assign({},Fe),ut),{});Object.keys(q).length>0&&this._nextState(q)}focus(w){const q=this.toValidDate(w,null);null!=q&&!this._state.disabled&&V(this._state.focusDate,q)&&this._nextState({focusDate:w})}focusSelect(){un(this._state.focusDate,this._state)&&this.select(this._state.focusDate,{emitEvent:!0})}open(w){const q=this.toValidDate(w,this._calendar.getToday());null!=q&&!this._state.disabled&&(!this._state.firstDate||Ae(this._state.firstDate,q))&&this._nextState({firstDate:q})}select(w,q={}){const Fe=this.toValidDate(w,null);null!=Fe&&!this._state.disabled&&(V(this._state.selectedDate,Fe)&&this._nextState({selectedDate:Fe}),q.emitEvent&&un(Fe,this._state)&&this._dateSelect$.next(Fe))}toValidDate(w,q){const Fe=fa.from(w);return void 0===q&&(q=this._calendar.getToday()),this._calendar.isValid(Fe)?Fe:q}getMonth(w){for(let q of this._state.months)if(w.month===q.number&&w.year===q.year)return q;throw new Error(`month ${w.month} of year ${w.year} not found`)}_nextState(w){const q=this._updateState(w);this._patchContexts(q),this._state=q,this._model$.next(this._state)}_patchContexts(w){const{months:q,displayMonths:Fe,selectedDate:ut,focusDate:Xn,focusVisible:Fr,disabled:gi,outsideDays:Wi}=w;w.months.forEach(Po=>{Po.weeks.forEach(Ns=>{Ns.days.forEach(ts=>{Xn&&(ts.context.focused=Xn.equals(ts.date)&&Fr),ts.tabindex=!gi&&Xn&&ts.date.equals(Xn)&&Xn.month===Po.number?0:-1,!0===gi&&(ts.context.disabled=!0),void 0!==ut&&(ts.context.selected=null!==ut&&ut.equals(ts.date)),Po.number!==ts.date.month&&(ts.hidden="hidden"===Wi||"collapsed"===Wi||Fe>1&&ts.date.after(q[0].firstDate)&&ts.date.before(q[Fe-1].lastDate))})})})}_updateState(w){const q=Object.assign({},this._state,w);let Fe=q.firstDate;if(("minDate"in w||"maxDate"in w)&&(function(Y,fe){if(fe&&Y&&fe.before(Y))throw new Error(`'maxDate' ${fe} should be greater than 'minDate' ${Y}`)}(q.minDate,q.maxDate),q.focusDate=lt(q.focusDate,q.minDate,q.maxDate),q.firstDate=lt(q.firstDate,q.minDate,q.maxDate),Fe=q.focusDate),"disabled"in w&&(q.focusVisible=!1),"selectedDate"in w&&0===this._state.months.length&&(Fe=q.selectedDate),"focusVisible"in w||"focusDate"in w&&(q.focusDate=lt(q.focusDate,q.minDate,q.maxDate),Fe=q.focusDate,0!==q.months.length&&q.focusDate&&!q.focusDate.before(q.firstDate)&&!q.focusDate.after(q.lastDate)))return q;if("firstDate"in w&&(q.firstDate=lt(q.firstDate,q.minDate,q.maxDate),Fe=q.firstDate),Fe){const Xn=function(Y,fe,w,q,Fe){const{displayMonths:ut,months:Xn}=w,Fr=Xn.splice(0,Xn.length);return Array.from({length:ut},(Wi,Po)=>{const Ns=Object.assign(Y.getNext(fe,"m",Po),{day:1});if(Xn[Po]=null,!Fe){const ts=Fr.findIndex(Is=>Is.firstDate.equals(Ns));-1!==ts&&(Xn[Po]=Fr.splice(ts,1)[0])}return Ns}).forEach((Wi,Po)=>{null===Xn[Po]&&(Xn[Po]=function(Y,fe,w,q,Fe={}){const{dayTemplateData:ut,minDate:Xn,maxDate:Fr,firstDayOfWeek:gi,markDisabled:Wi,outsideDays:Po,weekdayWidth:Ns,weekdaysVisible:ts}=w,Is=Y.getToday();Fe.firstDate=null,Fe.lastDate=null,Fe.number=fe.month,Fe.year=fe.year,Fe.weeks=Fe.weeks||[],Fe.weekdays=Fe.weekdays||[],fe=function(Y,fe,w){const q=Y.getDaysPerWeek(),Fe=new fa(fe.year,fe.month,1),ut=Y.getWeekday(Fe)%q;return Y.getPrev(Fe,"d",(q+ut-w)%q)}(Y,fe,gi),ts||(Fe.weekdays.length=0);for(let ya=0;ya<Y.getWeeksPerMonth();ya++){let zs=Fe.weeks[ya];zs||(zs=Fe.weeks[ya]={number:0,days:[],collapsed:!0});const _c=zs.days;for(let rd=0;rd<Y.getDaysPerWeek();rd++){0===ya&&ts&&(Fe.weekdays[rd]=q.getWeekdayLabel(Y.getWeekday(fe),Ns));const wu=new fa(fe.year,fe.month,fe.day),Hd=Y.getNext(wu),$_=q.getDayAriaLabel(wu);let ih=!!(Xn&&wu.before(Xn)||Fr&&wu.after(Fr));!ih&&Wi&&(ih=Wi(wu,{month:Fe.number,year:Fe.year}));let oh=wu.equals(Is),hp=ut?ut(wu,{month:Fe.number,year:Fe.year}):void 0;null===Fe.firstDate&&wu.month===Fe.number&&(Fe.firstDate=wu),wu.month===Fe.number&&Hd.month!==Fe.number&&(Fe.lastDate=wu);let Yf=_c[rd];Yf||(Yf=_c[rd]={}),Yf.date=wu,Yf.context=Object.assign(Yf.context||{},{$implicit:wu,date:wu,data:hp,currentMonth:Fe.number,currentYear:Fe.year,disabled:ih,focused:!1,selected:!1,today:oh}),Yf.tabindex=-1,Yf.ariaLabel=$_,Yf.hidden=!1,fe=Hd}zs.number=Y.getWeekNumber(_c.map(rd=>rd.date),gi),zs.collapsed="collapsed"===Po&&_c[0].date.month!==Fe.number&&_c[_c.length-1].date.month!==Fe.number}return Fe}(Y,Wi,w,q,Fr.shift()||{}))}),Xn}(this._calendar,Fe,q,this._i18n,"dayTemplateData"in w||"firstDayOfWeek"in w||"markDisabled"in w||"minDate"in w||"maxDate"in w||"disabled"in w||"outsideDays"in w||"weekdaysVisible"in w);q.months=Xn,q.firstDate=Xn[0].firstDate,q.lastDate=Xn[Xn.length-1].lastDate,"selectedDate"in w&&!un(q.selectedDate,q)&&(q.selectedDate=null),"firstDate"in w&&(!q.focusDate||q.focusDate.before(q.firstDate)||q.focusDate.after(q.lastDate))&&(q.focusDate=Fe);const Fr=!this._state.firstDate||this._state.firstDate.year!==q.firstDate.year,gi=!this._state.firstDate||this._state.firstDate.month!==q.firstDate.month;"select"===q.navigation?(("minDate"in w||"maxDate"in w||0===q.selectBoxes.years.length||Fr)&&(q.selectBoxes.years=function(Y,fe,w){if(!Y)return[];const q=fe?Math.max(fe.year,Y.year-500):Y.year-10,ut=(w?Math.min(w.year,Y.year+500):Y.year+10)-q+1,Xn=Array(ut);for(let Fr=0;Fr<ut;Fr++)Xn[Fr]=q+Fr;return Xn}(q.firstDate,q.minDate,q.maxDate)),("minDate"in w||"maxDate"in w||0===q.selectBoxes.months.length||Fr)&&(q.selectBoxes.months=function(Y,fe,w,q){if(!fe)return[];let Fe=Y.getMonths(fe.year);if(w&&fe.year===w.year){const ut=Fe.findIndex(Xn=>Xn===w.month);Fe=Fe.slice(ut)}if(q&&fe.year===q.year){const ut=Fe.findIndex(Xn=>Xn===q.month);Fe=Fe.slice(0,ut+1)}return Fe}(this._calendar,q.firstDate,q.minDate,q.maxDate))):q.selectBoxes={years:[],months:[]},("arrows"===q.navigation||"select"===q.navigation)&&(gi||Fr||"minDate"in w||"maxDate"in w||"disabled"in w)&&(q.prevDisabled=q.disabled||function(Y,fe,w){const q=Object.assign(Y.getPrev(fe,"m"),{day:1});return null!=w&&(q.year===w.year&&q.month<w.month||q.year<w.year&&1===w.month)}(this._calendar,q.firstDate,q.minDate),q.nextDisabled=q.disabled||function(Y,fe,w){const q=Object.assign(Y.getNext(fe,"m"),{day:1});return null!=w&&q.after(w)}(this._calendar,q.lastDate,q.maxDate))}return q}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(Vl),r.LFG(Mr))},Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})();var Ss=(()=>{return(Y=Ss||(Ss={}))[Y.PREV=0]="PREV",Y[Y.NEXT=1]="NEXT",Ss;var Y})();let Na=(()=>{class Y{constructor(){this.displayMonths=1,this.firstDayOfWeek=1,this.navigation="select",this.outsideDays="visible",this.showWeekNumbers=!1,this.weekdays=u.Tn.Short}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})();function El(){return new td}let Ks=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:El,token:Y,providedIn:"root"}),Y})(),td=(()=>{class Y extends Ks{fromModel(w){return w&&To(w.year)&&To(w.month)&&To(w.day)?{year:w.year,month:w.month,day:w.day}:null}toModel(w){return w&&To(w.year)&&To(w.month)&&To(w.day)?{year:w.year,month:w.month,day:w.day}:null}}return Y.\u0275fac=function(){let fe;return function(q){return(fe||(fe=r.n5z(Y)))(q||Y)}}(),Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})(),Lc=(()=>{class Y{constructor(w){this.templateRef=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.Rgc))},Y.\u0275dir=r.lG2({type:Y,selectors:[["ng-template","ngbDatepickerContent",""]]}),Y})(),zl=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi,Wi){this._service=w,this._calendar=q,this.i18n=Fe,this._elementRef=Fr,this._ngbDateAdapter=gi,this._ngZone=Wi,this._controlValue=null,this._destroyed$=new he.xQ,this._publicState={},this.navigate=new r.vpe,this.dateSelect=new r.vpe,this.onChange=Po=>{},this.onTouched=()=>{},["dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","showWeekNumbers","startDate","weekdays"].forEach(Po=>this[Po]=ut[Po]),w.dateSelect$.pipe((0,Gt.R)(this._destroyed$)).subscribe(Po=>{this.dateSelect.emit(Po)}),w.model$.pipe((0,Gt.R)(this._destroyed$)).subscribe(Po=>{const Ns=Po.firstDate,ts=this.model?this.model.firstDate:null;this._publicState={maxDate:Po.maxDate,minDate:Po.minDate,firstDate:Po.firstDate,lastDate:Po.lastDate,focusedDate:Po.focusDate,months:Po.months.map(rd=>rd.firstDate)};let Is=!1;if(!Ns.equals(ts)&&(this.navigate.emit({current:ts?{year:ts.year,month:ts.month}:null,next:{year:Ns.year,month:Ns.month},preventDefault:()=>Is=!0}),Is&&null!==ts))return void this._service.open(ts);const ya=Po.selectedDate,zs=Po.focusDate,_c=this.model?this.model.focusDate:null;this.model=Po,V(ya,this._controlValue)&&(this._controlValue=ya,this.onTouched(),this.onChange(this._ngbDateAdapter.toModel(ya))),V(zs,_c)&&_c&&Po.focusVisible&&this.focus(),Xn.markForCheck()})}get state(){return this._publicState}get calendar(){return this._calendar}focusDate(w){this._service.focus(fa.from(w))}focusSelect(){this._service.focusSelect()}focus(){this._ngZone.onStable.asObservable().pipe((0,Bt.q)(1)).subscribe(()=>{const w=this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex="0"]');w&&w.focus()})}navigateTo(w){this._service.open(fa.from(w?w.day?w:Object.assign(Object.assign({},w),{day:1}):null))}ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{const w=(0,me.R)(this._contentEl.nativeElement,"focusin"),q=(0,me.R)(this._contentEl.nativeElement,"focusout"),{nativeElement:Fe}=this._elementRef;(0,Ye.T)(w,q).pipe((0,Ut.h)(({target:ut,relatedTarget:Xn})=>!(Ru(ut,"ngb-dp-day")&&Ru(Xn,"ngb-dp-day")&&Fe.contains(ut)&&Fe.contains(Xn))),(0,Gt.R)(this._destroyed$)).subscribe(({type:ut})=>this._ngZone.run(()=>this._service.set({focusVisible:"focusin"===ut})))})}ngOnDestroy(){this._destroyed$.next()}ngOnInit(){if(void 0===this.model){const w={};["dayTemplateData","displayMonths","markDisabled","firstDayOfWeek","navigation","minDate","maxDate","outsideDays","weekdays"].forEach(q=>w[q]=this[q]),this._service.set(w),this.navigateTo(this.startDate)}this.dayTemplate||(this.dayTemplate=this._defaultDayTemplate)}ngOnChanges(w){const q={};if(["dayTemplateData","displayMonths","markDisabled","firstDayOfWeek","navigation","minDate","maxDate","outsideDays","weekdays"].filter(Fe=>Fe in w).forEach(Fe=>q[Fe]=this[Fe]),this._service.set(q),"startDate"in w){const{currentValue:Fe,previousValue:ut}=w.startDate;Ae(ut,Fe)&&this.navigateTo(this.startDate)}}onDateSelect(w){this._service.focus(w),this._service.select(w,{emitEvent:!0})}onNavigateDateSelect(w){this._service.open(w)}onNavigateEvent(w){switch(w){case Ss.PREV:this._service.open(this._calendar.getPrev(this.model.firstDate,"m",1));break;case Ss.NEXT:this._service.open(this._calendar.getNext(this.model.firstDate,"m",1))}}registerOnChange(w){this.onChange=w}registerOnTouched(w){this.onTouched=w}setDisabledState(w){this._service.set({disabled:w})}writeValue(w){this._controlValue=fa.from(this._ngbDateAdapter.fromModel(w)),this._service.select(this._controlValue)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(co),r.Y36(Vl),r.Y36(Mr),r.Y36(Na),r.Y36(r.sBO),r.Y36(r.SBq),r.Y36(Ks),r.Y36(r.R0b))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-datepicker"]],contentQueries:function(w,q,Fe){if(1&w&&r.Suo(Fe,Lc,7),2&w){let ut;r.iGM(ut=r.CRH())&&(q.contentTemplate=ut.first)}},viewQuery:function(w,q){if(1&w&&(r.Gf(Lr,7),r.Gf(Vn,7)),2&w){let Fe;r.iGM(Fe=r.CRH())&&(q._defaultDayTemplate=Fe.first),r.iGM(Fe=r.CRH())&&(q._contentEl=Fe.first)}},inputs:{dayTemplate:"dayTemplate",dayTemplateData:"dayTemplateData",displayMonths:"displayMonths",firstDayOfWeek:"firstDayOfWeek",footerTemplate:"footerTemplate",markDisabled:"markDisabled",maxDate:"maxDate",minDate:"minDate",navigation:"navigation",outsideDays:"outsideDays",showWeekNumbers:"showWeekNumbers",startDate:"startDate",weekdays:"weekdays"},outputs:{navigate:"navigate",dateSelect:"dateSelect"},exportAs:["ngbDatepicker"],features:[r._Bn([{provide:wr.JU,useExisting:(0,r.Gpc)(()=>Y),multi:!0},co]),r.TTD],decls:10,vars:5,consts:[["defaultDayTemplate",""],["defaultContentTemplate",""],[1,"ngb-dp-header"],[3,"date","months","disabled","showSelect","prevDisabled","nextDisabled","selectBoxes","navigate","select",4,"ngIf"],[1,"ngb-dp-content"],["content",""],[3,"ngTemplateOutlet"],["ngbDatepickerDayView","",3,"date","currentMonth","selected","disabled","focused"],["class","ngb-dp-month",4,"ngFor","ngForOf"],[1,"ngb-dp-month"],["class","ngb-dp-month-name",4,"ngIf"],[3,"month"],[1,"ngb-dp-month-name"],[3,"date","months","disabled","showSelect","prevDisabled","nextDisabled","selectBoxes","navigate","select"]],template:function(w,q){if(1&w&&(r.YNc(0,zr,1,5,"ng-template",null,0,r.W1O),r.YNc(2,Tr,1,1,"ng-template",null,1,r.W1O),r.TgZ(4,"div",2),r.YNc(5,Nr,1,7,"ngb-datepicker-navigation",3),r.qZA(),r.TgZ(6,"div",4,5),r.YNc(8,gn,0,0,"ng-template",6),r.qZA(),r.YNc(9,En,0,0,"ng-template",6)),2&w){const Fe=r.MAs(3);r.xp6(5),r.Q6J("ngIf","none"!==q.navigation),r.xp6(1),r.ekj("ngb-dp-months",!q.contentTemplate),r.xp6(2),r.Q6J("ngTemplateOutlet",(null==q.contentTemplate?null:q.contentTemplate.templateRef)||Fe),r.xp6(1),r.Q6J("ngTemplateOutlet",q.footerTemplate)}},directives:function(){return[u.O5,u.tP,Un,u.sg,_a,ll]},styles:["ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}"],encapsulation:2,changeDetection:0}),Y})();var ki=(()=>{return(Y=ki||(ki={}))[Y.Tab=9]="Tab",Y[Y.Enter=13]="Enter",Y[Y.Escape=27]="Escape",Y[Y.Space=32]="Space",Y[Y.PageUp=33]="PageUp",Y[Y.PageDown=34]="PageDown",Y[Y.End=35]="End",Y[Y.Home=36]="Home",Y[Y.ArrowLeft=37]="ArrowLeft",Y[Y.ArrowUp=38]="ArrowUp",Y[Y.ArrowRight=39]="ArrowRight",Y[Y.ArrowDown=40]="ArrowDown",ki;var Y})();let No=(()=>{class Y{processKey(w,q){const{state:Fe,calendar:ut}=q;switch(w.which){case ki.PageUp:q.focusDate(ut.getPrev(Fe.focusedDate,w.shiftKey?"y":"m",1));break;case ki.PageDown:q.focusDate(ut.getNext(Fe.focusedDate,w.shiftKey?"y":"m",1));break;case ki.End:q.focusDate(w.shiftKey?Fe.maxDate:Fe.lastDate);break;case ki.Home:q.focusDate(w.shiftKey?Fe.minDate:Fe.firstDate);break;case ki.ArrowLeft:q.focusDate(ut.getPrev(Fe.focusedDate,"d",1));break;case ki.ArrowUp:q.focusDate(ut.getPrev(Fe.focusedDate,"d",ut.getDaysPerWeek()));break;case ki.ArrowRight:q.focusDate(ut.getNext(Fe.focusedDate,"d",1));break;case ki.ArrowDown:q.focusDate(ut.getNext(Fe.focusedDate,"d",ut.getDaysPerWeek()));break;case ki.Enter:case ki.Space:q.focusSelect();break;default:return}w.preventDefault(),w.stopPropagation()}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})(),_a=(()=>{class Y{constructor(w,q,Fe,ut){this.i18n=w,this.datepicker=q,this._keyboardService=Fe,this._service=ut}set month(w){this.viewModel=this._service.getMonth(w)}onKeyDown(w){this._keyboardService.processKey(w,this.datepicker)}doSelect(w){!w.context.disabled&&!w.hidden&&this.datepicker.onDateSelect(w.date)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Mr),r.Y36(zl),r.Y36(No),r.Y36(co))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-datepicker-month"]],hostAttrs:["role","grid"],hostBindings:function(w,q){1&w&&r.NdJ("keydown",function(ut){return q.onKeyDown(ut)})},inputs:{month:"month"},decls:2,vars:2,consts:[["class","ngb-dp-week ngb-dp-weekdays","role","row",4,"ngIf"],["ngFor","",3,"ngForOf"],["role","row",1,"ngb-dp-week","ngb-dp-weekdays"],["class","ngb-dp-weekday ngb-dp-showweek small",4,"ngIf"],["class","ngb-dp-weekday small","role","columnheader",4,"ngFor","ngForOf"],[1,"ngb-dp-weekday","ngb-dp-showweek","small"],["role","columnheader",1,"ngb-dp-weekday","small"],["class","ngb-dp-week","role","row",4,"ngIf"],["role","row",1,"ngb-dp-week"],["class","ngb-dp-week-number small text-muted",4,"ngIf"],["class","ngb-dp-day","role","gridcell",3,"disabled","tabindex","hidden","ngb-dp-today","click",4,"ngFor","ngForOf"],[1,"ngb-dp-week-number","small","text-muted"],["role","gridcell",1,"ngb-dp-day",3,"tabindex","click"],[3,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(w,q){1&w&&(r.YNc(0,zn,3,2,"div",0),r.YNc(1,Ze,1,1,"ng-template",1)),2&w&&(r.Q6J("ngIf",q.viewModel.weekdays.length>0),r.xp6(1),r.Q6J("ngForOf",q.viewModel.weeks))},directives:[u.O5,u.sg,u.tP],styles:['ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex="0"]{z-index:1}'],encapsulation:2}),Y})(),ll=(()=>{class Y{constructor(w){this.i18n=w,this.navigation=Ss,this.months=[],this.navigate=new r.vpe,this.select=new r.vpe}onClickPrev(w){w.currentTarget.focus(),this.navigate.emit(this.navigation.PREV)}onClickNext(w){w.currentTarget.focus(),this.navigate.emit(this.navigation.NEXT)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Mr))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-datepicker-navigation"]],inputs:{months:"months",date:"date",disabled:"disabled",showSelect:"showSelect",prevDisabled:"prevDisabled",nextDisabled:"nextDisabled",selectBoxes:"selectBoxes"},outputs:{navigate:"navigate",select:"select"},decls:8,vars:4,consts:function(){let fe,w,q,Fe;return fe="Previous month",w="Previous month",q="Next month",Fe="Next month",[[1,"ngb-dp-arrow"],["type","button","aria-label",fe,"title",w,1,"btn","btn-link","ngb-dp-arrow-btn",3,"disabled","click"],[1,"ngb-dp-navigation-chevron"],["class","ngb-dp-navigation-select",3,"date","disabled","months","years","select",4,"ngIf"],[4,"ngIf"],[1,"ngb-dp-arrow","right"],["type","button","aria-label",q,"title",Fe,1,"btn","btn-link","ngb-dp-arrow-btn",3,"disabled","click"],[1,"ngb-dp-navigation-select",3,"date","disabled","months","years","select"],["ngFor","",3,"ngForOf"],["class","ngb-dp-arrow",4,"ngIf"],[1,"ngb-dp-month-name"]]},template:function(w,q){1&w&&(r.TgZ(0,"div",0),r.TgZ(1,"button",1),r.NdJ("click",function(ut){return q.onClickPrev(ut)}),r._UZ(2,"span",2),r.qZA(),r.qZA(),r.YNc(3,Dr,1,4,"ngb-datepicker-navigation-select",3),r.YNc(4,Wn,1,1,void 0,4),r.TgZ(5,"div",5),r.TgZ(6,"button",6),r.NdJ("click",function(ut){return q.onClickNext(ut)}),r._UZ(7,"span",2),r.qZA(),r.qZA()),2&w&&(r.xp6(1),r.Q6J("disabled",q.prevDisabled),r.xp6(2),r.Q6J("ngIf",q.showSelect),r.xp6(1),r.Q6J("ngIf",!q.showSelect),r.xp6(2),r.Q6J("disabled",q.nextDisabled))},directives:function(){return[u.O5,qn,u.sg]},styles:["ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}"],encapsulation:2,changeDetection:0}),Y})();const Ul=(Y,fe)=>!!fe&&fe.some(w=>w.contains(Y)),vd=(Y,fe)=>!fe||null!=function(Y,fe){return fe&&void 0!==Y.closest?Y.closest(fe):null}(Y,fe),nd="undefined"!=typeof navigator&&!!navigator.userAgent&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2||/Android/.test(navigator.userAgent));function ca(Y,fe,w,q,Fe,ut,Xn,Fr){w&&Y.runOutsideAngular((Y=>nd?()=>setTimeout(()=>Y(),100):Y)(()=>{const Wi=(0,me.R)(fe,"keydown").pipe((0,Gt.R)(Fe),(0,Ut.h)(ts=>ts.which===ki.Escape),(0,Yn.b)(ts=>ts.preventDefault())),Po=(0,me.R)(fe,"mousedown").pipe((0,mt.U)(ts=>{const Is=ts.target;return 2!==ts.button&&!Ul(Is,Xn)&&("inside"===w?Ul(Is,ut)&&vd(Is,Fr):"outside"===w?!Ul(Is,ut):vd(Is,Fr)||!Ul(Is,ut))}),(0,Gt.R)(Fe)),Ns=(0,me.R)(fe,"mouseup").pipe(Ve(Po),(0,Ut.h)(([ts,Is])=>Is),(0,Hr.g)(0),(0,Gt.R)(Fe));y([Wi.pipe((0,mt.U)(ts=>0)),Ns.pipe((0,mt.U)(ts=>1))]).subscribe(ts=>Y.run(()=>q(ts)))}))}const jc=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(", ");function nc(Y){const fe=Array.from(Y.querySelectorAll(jc)).filter(w=>-1!==w.tabIndex);return[fe[0],fe[fe.length-1]]}const df=(Y,fe,w,q=!1)=>{Y.runOutsideAngular(()=>{const Fe=(0,me.R)(fe,"focusin").pipe((0,Gt.R)(w),(0,mt.U)(ut=>ut.target));(0,me.R)(fe,"keydown").pipe((0,Gt.R)(w),(0,Ut.h)(ut=>ut.which===ki.Tab),Ve(Fe)).subscribe(([ut,Xn])=>{const[Fr,gi]=nc(fe);(Xn===Fr||Xn===fe)&&ut.shiftKey&&(gi.focus(),ut.preventDefault()),Xn===gi&&!ut.shiftKey&&(Fr.focus(),ut.preventDefault())}),q&&(0,me.R)(fe,"click").pipe((0,Gt.R)(w),Ve(Fe),(0,mt.U)(ut=>ut[1])).subscribe(ut=>ut.focus())})},zd=/\s+/,Wd=new class{getAllStyles(fe){return window.getComputedStyle(fe)}getStyle(fe,w){return this.getAllStyles(fe)[w]}isStaticPositioned(fe){return"static"===(this.getStyle(fe,"position")||"static")}offsetParent(fe){let w=fe.offsetParent||document.documentElement;for(;w&&w!==document.documentElement&&this.isStaticPositioned(w);)w=w.offsetParent;return w||document.documentElement}position(fe,w=!0){let q,Fe={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(fe,"position"))q=fe.getBoundingClientRect(),q={top:q.top,bottom:q.bottom,left:q.left,right:q.right,height:q.height,width:q.width};else{const ut=this.offsetParent(fe);q=this.offset(fe,!1),ut!==document.documentElement&&(Fe=this.offset(ut,!1)),Fe.top+=ut.clientTop,Fe.left+=ut.clientLeft}return q.top-=Fe.top,q.bottom-=Fe.top,q.left-=Fe.left,q.right-=Fe.left,w&&(q.top=Math.round(q.top),q.bottom=Math.round(q.bottom),q.left=Math.round(q.left),q.right=Math.round(q.right)),q}offset(fe,w=!0){const q=fe.getBoundingClientRect(),Fe_top=window.pageYOffset-document.documentElement.clientTop,Fe_left=window.pageXOffset-document.documentElement.clientLeft;let ut={height:q.height||fe.offsetHeight,width:q.width||fe.offsetWidth,top:q.top+Fe_top,bottom:q.bottom+Fe_top,left:q.left+Fe_left,right:q.right+Fe_left};return w&&(ut.height=Math.round(ut.height),ut.width=Math.round(ut.width),ut.top=Math.round(ut.top),ut.bottom=Math.round(ut.bottom),ut.left=Math.round(ut.left),ut.right=Math.round(ut.right)),ut}positionElements(fe,w,q,Fe){const[ut="top",Xn="center"]=q.split("-"),Fr=Fe?this.offset(fe,!1):this.position(fe,!1),gi=this.getAllStyles(w),Wi=parseFloat(gi.marginTop),Po=parseFloat(gi.marginBottom),Ns=parseFloat(gi.marginLeft),ts=parseFloat(gi.marginRight);let Is=0,ya=0;switch(ut){case"top":Is=Fr.top-(w.offsetHeight+Wi+Po);break;case"bottom":Is=Fr.top+Fr.height;break;case"left":ya=Fr.left-(w.offsetWidth+Ns+ts);break;case"right":ya=Fr.left+Fr.width}switch(Xn){case"top":Is=Fr.top;break;case"bottom":Is=Fr.top+Fr.height-w.offsetHeight;break;case"left":ya=Fr.left;break;case"right":ya=Fr.left+Fr.width-w.offsetWidth;break;case"center":"top"===ut||"bottom"===ut?ya=Fr.left+Fr.width/2-w.offsetWidth/2:Is=Fr.top+Fr.height/2-w.offsetHeight/2}w.style.transform=`translate(${Math.round(ya)}px, ${Math.round(Is)}px)`;const zs=w.getBoundingClientRect(),_c=document.documentElement,rd=window.innerHeight||_c.clientHeight,wu=window.innerWidth||_c.clientWidth;return zs.left>=0&&zs.top>=0&&zs.right<=wu&&zs.bottom<=rd}};function Be(Y,fe,w,q,Fe){let ut=Array.isArray(w)?w:w.split(zd);const Xn=["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right","left-top","left-bottom","right-top","right-bottom"],Fr=fe.classList,gi=Is=>{const[ya,zs]=Is.split("-"),_c=[];return Fe&&(_c.push(`${Fe}-${ya}`),zs&&_c.push(`${Fe}-${ya}-${zs}`),_c.forEach(rd=>{Fr.add(rd)})),_c};Fe&&Xn.forEach(Is=>{Fr.remove(`${Fe}-${Is}`)});let Wi=ut.findIndex(Is=>"auto"===Is);Wi>=0&&Xn.forEach(function(Is){null==ut.find(ya=>-1!==ya.search("^"+Is))&&ut.splice(Wi++,1,Is)});const Po=fe.style;Po.position="absolute",Po.top="0",Po.left="0",Po["will-change"]="transform";let Ns=null,ts=!1;for(Ns of ut){let Is=gi(Ns);if(Wd.positionElements(Y,fe,Ns,q)){ts=!0;break}Fe&&Is.forEach(ya=>{Fr.remove(ya)})}return ts||(Ns=ut[0],gi(Ns),Wd.positionElements(Y,fe,Ns,q)),Ns}function Pe(){return new it}let Ce=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:Pe,token:Y,providedIn:"root"}),Y})(),it=(()=>{class Y extends Ce{parse(w){if(null!=w){const q=w.trim().split("-");if(1===q.length&&Uo(q[0]))return{year:fi(q[0]),month:null,day:null};if(2===q.length&&Uo(q[0])&&Uo(q[1]))return{year:fi(q[0]),month:fi(q[1]),day:null};if(3===q.length&&Uo(q[0])&&Uo(q[1])&&Uo(q[2]))return{year:fi(q[0]),month:fi(q[1]),day:fi(q[2])}}return null}format(w){return w?`${w.year}-${Uo(w.month)?al(w.month):""}-${Uo(w.day)?al(w.day):""}`:""}}return Y.\u0275fac=function(){let fe;return function(q){return(fe||(fe=r.n5z(Y)))(q||Y)}}(),Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})(),yt=(()=>{class Y extends Na{constructor(){super(...arguments),this.autoClose=!0,this.placement=["bottom-left","bottom-right","top-left","top-right"],this.restoreFocus=!0}}return Y.\u0275fac=function(){let fe;return function(q){return(fe||(fe=r.n5z(Y)))(q||Y)}}(),Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})(),qt=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi,Wi,Po,Ns,ts){this._parserFormatter=w,this._elRef=q,this._vcRef=Fe,this._renderer=ut,this._cfr=Xn,this._ngZone=Fr,this._calendar=gi,this._dateAdapter=Wi,this._document=Po,this._changeDetector=Ns,this._cRef=null,this._disabled=!1,this._elWithFocus=null,this._model=null,this.dateSelect=new r.vpe,this.navigate=new r.vpe,this.closed=new r.vpe,this._onChange=Is=>{},this._onTouched=()=>{},this._validatorChange=()=>{},["autoClose","container","positionTarget","placement"].forEach(Is=>this[Is]=ts[Is]),this._zoneSubscription=Fr.onStable.subscribe(()=>this._updatePopupPosition())}get disabled(){return this._disabled}set disabled(w){this._disabled=""===w||w&&"false"!==w,this.isOpen()&&this._cRef.instance.setDisabledState(this._disabled)}registerOnChange(w){this._onChange=w}registerOnTouched(w){this._onTouched=w}registerOnValidatorChange(w){this._validatorChange=w}setDisabledState(w){this.disabled=w}validate(w){const{value:q}=w;if(null!=q){const Fe=this._fromDateStruct(this._dateAdapter.fromModel(q));if(!Fe)return{ngbDate:{invalid:q}};if(this.minDate&&Fe.before(fa.from(this.minDate)))return{ngbDate:{minDate:{minDate:this.minDate,actual:q}}};if(this.maxDate&&Fe.after(fa.from(this.maxDate)))return{ngbDate:{maxDate:{maxDate:this.maxDate,actual:q}}}}return null}writeValue(w){this._model=this._fromDateStruct(this._dateAdapter.fromModel(w)),this._writeModelValue(this._model)}manualDateChange(w,q=!1){const Fe=w!==this._inputValue;Fe&&(this._inputValue=w,this._model=this._fromDateStruct(this._parserFormatter.parse(w))),(Fe||!q)&&this._onChange(this._model?this._dateAdapter.toModel(this._model):""===w?null:w),q&&this._model&&this._writeModelValue(this._model)}isOpen(){return!!this._cRef}open(){if(!this.isOpen()){const w=this._cfr.resolveComponentFactory(zl);this._cRef=this._vcRef.createComponent(w),this._applyPopupStyling(this._cRef.location.nativeElement),this._applyDatepickerInputs(this._cRef.instance),this._subscribeForDatepickerOutputs(this._cRef.instance),this._cRef.instance.ngOnInit(),this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model)),this._cRef.instance.registerOnChange(q=>{this.writeValue(q),this._onChange(q),this._onTouched()}),this._cRef.changeDetectorRef.detectChanges(),this._cRef.instance.setDisabledState(this.disabled),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement),this._elWithFocus=this._document.activeElement,df(this._ngZone,this._cRef.location.nativeElement,this.closed,!0),this._cRef.instance.focus(),ca(this._ngZone,this._document,this.autoClose,()=>this.close(),this.closed,[],[this._elRef.nativeElement,this._cRef.location.nativeElement])}}close(){if(this.isOpen()){this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView)),this._cRef=null,this.closed.emit(),this._changeDetector.markForCheck();let w=this._elWithFocus;Ro(this.restoreFocus)?w=this._document.querySelector(this.restoreFocus):void 0!==this.restoreFocus&&(w=this.restoreFocus),w&&w.focus?w.focus():this._document.body.focus()}}toggle(){this.isOpen()?this.close():this.open()}navigateTo(w){this.isOpen()&&this._cRef.instance.navigateTo(w)}onBlur(){this._onTouched()}onFocus(){this._elWithFocus=this._elRef.nativeElement}ngOnChanges(w){if((w.minDate||w.maxDate)&&(this._validatorChange(),this.isOpen()&&(w.minDate&&(this._cRef.instance.minDate=this.minDate),w.maxDate&&(this._cRef.instance.maxDate=this.maxDate),this._cRef.instance.ngOnChanges(w))),w.datepickerClass){const{currentValue:q,previousValue:Fe}=w.datepickerClass;this._applyPopupClass(q,Fe)}}ngOnDestroy(){this.close(),this._zoneSubscription.unsubscribe()}_applyDatepickerInputs(w){["dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","showNavigation","showWeekNumbers","weekdays"].forEach(q=>{void 0!==this[q]&&(w[q]=this[q])}),w.startDate=this.startDate||this._model}_applyPopupClass(w,q){var Fe;const ut=null===(Fe=this._cRef)||void 0===Fe?void 0:Fe.location.nativeElement;ut&&(w&&this._renderer.addClass(ut,w),q&&this._renderer.removeClass(ut,q))}_applyPopupStyling(w){this._renderer.addClass(w,"dropdown-menu"),this._renderer.addClass(w,"show"),"body"===this.container&&this._renderer.addClass(w,"ngb-dp-body"),this._applyPopupClass(this.datepickerClass)}_subscribeForDatepickerOutputs(w){w.navigate.subscribe(q=>this.navigate.emit(q)),w.dateSelect.subscribe(q=>{this.dateSelect.emit(q),(!0===this.autoClose||"inside"===this.autoClose)&&this.close()})}_writeModelValue(w){const q=this._parserFormatter.format(w);this._inputValue=q,this._renderer.setProperty(this._elRef.nativeElement,"value",q),this.isOpen()&&(this._cRef.instance.writeValue(this._dateAdapter.toModel(w)),this._onTouched())}_fromDateStruct(w){const q=w?new fa(w.year,w.month,w.day):null;return this._calendar.isValid(q)?q:null}_updatePopupPosition(){if(!this._cRef)return;let w;if(w=Ro(this.positionTarget)?this._document.querySelector(this.positionTarget):this.positionTarget instanceof HTMLElement?this.positionTarget:this._elRef.nativeElement,this.positionTarget&&!w)throw new Error("ngbDatepicker could not find element declared in [positionTarget] to position against.");Be(w,this._cRef.location.nativeElement,this.placement,"body"===this.container)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Ce),r.Y36(r.SBq),r.Y36(r.s_b),r.Y36(r.Qsj),r.Y36(r._Vd),r.Y36(r.R0b),r.Y36(Vl),r.Y36(Ks),r.Y36(u.K0),r.Y36(r.sBO),r.Y36(yt))},Y.\u0275dir=r.lG2({type:Y,selectors:[["input","ngbDatepicker",""]],hostVars:1,hostBindings:function(w,q){1&w&&r.NdJ("input",function(ut){return q.manualDateChange(ut.target.value)})("change",function(ut){return q.manualDateChange(ut.target.value,!0)})("focus",function(){return q.onFocus()})("blur",function(){return q.onBlur()}),2&w&&r.Ikx("disabled",q.disabled)},inputs:{disabled:"disabled",autoClose:"autoClose",datepickerClass:"datepickerClass",dayTemplate:"dayTemplate",dayTemplateData:"dayTemplateData",displayMonths:"displayMonths",firstDayOfWeek:"firstDayOfWeek",footerTemplate:"footerTemplate",markDisabled:"markDisabled",minDate:"minDate",maxDate:"maxDate",navigation:"navigation",outsideDays:"outsideDays",placement:"placement",restoreFocus:"restoreFocus",showWeekNumbers:"showWeekNumbers",startDate:"startDate",container:"container",positionTarget:"positionTarget",weekdays:"weekdays"},outputs:{dateSelect:"dateSelect",navigate:"navigate",closed:"closed"},exportAs:["ngbDatepicker"],features:[r._Bn([{provide:wr.JU,useExisting:(0,r.Gpc)(()=>Y),multi:!0},{provide:wr.Cf,useExisting:(0,r.Gpc)(()=>Y),multi:!0},{provide:Na,useExisting:yt}]),r.TTD]}),Y})(),Un=(()=>{class Y{constructor(w){this.i18n=w}isMuted(){return!this.selected&&(this.date.month!==this.currentMonth||this.disabled)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Mr))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["","ngbDatepickerDayView",""]],hostAttrs:[1,"btn-light"],hostVars:10,hostBindings:function(w,q){2&w&&r.ekj("bg-primary",q.selected)("text-white",q.selected)("text-muted",q.isMuted())("outside",q.isMuted())("active",q.focused)},inputs:{currentMonth:"currentMonth",date:"date",disabled:"disabled",focused:"focused",selected:"selected"},attrs:kn,decls:1,vars:1,template:function(w,q){1&w&&r._uU(0),2&w&&r.Oqu(q.i18n.getDayNumerals(q.date))},styles:["[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}"],encapsulation:2,changeDetection:0}),Y})(),qn=(()=>{class Y{constructor(w,q){this.i18n=w,this._renderer=q,this.select=new r.vpe,this._month=-1,this._year=-1}changeMonth(w){this.select.emit(new fa(this.date.year,fi(w),1))}changeYear(w){this.select.emit(new fa(fi(w),this.date.month,1))}ngAfterViewChecked(){this.date&&(this.date.month!==this._month&&(this._month=this.date.month,this._renderer.setProperty(this.monthSelect.nativeElement,"value",this._month)),this.date.year!==this._year&&(this._year=this.date.year,this._renderer.setProperty(this.yearSelect.nativeElement,"value",this._year)))}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Mr),r.Y36(r.Qsj))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-datepicker-navigation-select"]],viewQuery:function(w,q){if(1&w&&(r.Gf(wn,7,r.SBq),r.Gf(nr,7,r.SBq)),2&w){let Fe;r.iGM(Fe=r.CRH())&&(q.monthSelect=Fe.first),r.iGM(Fe=r.CRH())&&(q.yearSelect=Fe.first)}},inputs:{date:"date",disabled:"disabled",months:"months",years:"years"},outputs:{select:"select"},decls:6,vars:4,consts:function(){let fe,w,q,Fe;return fe="Select month",w="Select month",q="Select year",Fe="Select year",[["aria-label",fe,"title",w,1,"custom-select",3,"disabled","change"],["month",""],[3,"value",4,"ngFor","ngForOf"],["aria-label",q,"title",Fe,1,"custom-select",3,"disabled","change"],["year",""],[3,"value"]]},template:function(w,q){1&w&&(r.TgZ(0,"select",0,1),r.NdJ("change",function(ut){return q.changeMonth(ut.target.value)}),r.YNc(2,Gi,2,3,"option",2),r.qZA(),r.TgZ(3,"select",3,4),r.NdJ("change",function(ut){return q.changeYear(ut.target.value)}),r.YNc(5,po,2,2,"option",2),r.qZA()),2&w&&(r.Q6J("disabled",q.disabled),r.xp6(2),r.Q6J("ngForOf",q.months),r.xp6(1),r.Q6J("disabled",q.disabled),r.xp6(2),r.Q6J("ngForOf",q.years))},directives:[u.sg,wr.YN,wr.Kr],styles:["ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}"],encapsulation:2,changeDetection:0}),Y})();new Date(1882,10,12),new Date(2174,10,25);let Bu=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez,wr.u5]]}),Y})(),pc=(()=>{class Y{constructor(){this.autoClose=!0,this.placement=["bottom-left","bottom-right","top-left","top-right"]}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})(),Xd=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275dir=r.lG2({type:Y,selectors:[["",8,"navbar"]]}),Y})(),wf=(()=>{class Y{constructor(w){this.elementRef=w,this._disabled=!1}set disabled(w){this._disabled=""===w||!0===w}get disabled(){return this._disabled}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbDropdownItem",""]],hostAttrs:[1,"dropdown-item"],hostVars:2,hostBindings:function(w,q){2&w&&r.ekj("disabled",q.disabled)},inputs:{disabled:"disabled"}}),Y})(),Wl=(()=>{class Y{constructor(w,q){this.dropdown=w,this.placement="bottom",this.isOpen=!1,this.nativeElement=q.nativeElement}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36((0,r.Gpc)(()=>hc)),r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbDropdownMenu",""]],contentQueries:function(w,q,Fe){if(1&w&&r.Suo(Fe,wf,4),2&w){let ut;r.iGM(ut=r.CRH())&&(q.menuItems=ut)}},hostVars:5,hostBindings:function(w,q){1&w&&r.NdJ("keydown.ArrowUp",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.ArrowDown",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Home",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.End",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Enter",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Space",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Tab",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Shift.Tab",function(ut){return q.dropdown.onKeyDown(ut)}),2&w&&(r.uIk("x-placement",q.placement),r.ekj("dropdown-menu",!0)("show",q.dropdown.isOpen()))}}),Y})(),Pd=(()=>{class Y{constructor(w,q){this.dropdown=w,this.nativeElement=q.nativeElement}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36((0,r.Gpc)(()=>hc)),r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbDropdownAnchor",""]],hostAttrs:[1,"dropdown-toggle"],hostVars:1,hostBindings:function(w,q){2&w&&r.uIk("aria-expanded",q.dropdown.isOpen())}}),Y})(),rc=(()=>{class Y extends Pd{constructor(w,q){super(w,q)}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36((0,r.Gpc)(()=>hc)),r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbDropdownToggle",""]],hostAttrs:[1,"dropdown-toggle"],hostVars:1,hostBindings:function(w,q){1&w&&r.NdJ("click",function(){return q.dropdown.toggle()})("keydown.ArrowUp",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.ArrowDown",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Home",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.End",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Tab",function(ut){return q.dropdown.onKeyDown(ut)})("keydown.Shift.Tab",function(ut){return q.dropdown.onKeyDown(ut)}),2&w&&r.uIk("aria-expanded",q.dropdown.isOpen())},features:[r._Bn([{provide:Pd,useExisting:(0,r.Gpc)(()=>Y)}]),r.qOj]}),Y})(),hc=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi){this._changeDetector=w,this._document=Fe,this._ngZone=ut,this._elementRef=Xn,this._renderer=Fr,this._closed$=new he.xQ,this._bodyContainer=null,this._open=!1,this.openChange=new r.vpe,this.placement=q.placement,this.container=q.container,this.autoClose=q.autoClose,this.display=gi?"static":"dynamic",this._zoneSubscription=ut.onStable.subscribe(()=>{this._positionMenu()})}ngAfterContentInit(){this._ngZone.onStable.pipe((0,Bt.q)(1)).subscribe(()=>{this._applyPlacementClasses(),this._open&&this._setCloseHandlers()})}ngOnChanges(w){if(w.container&&this._open&&this._applyContainer(this.container),w.placement&&!w.placement.isFirstChange&&this._applyPlacementClasses(),w.dropdownClass){const{currentValue:q,previousValue:Fe}=w.dropdownClass;this._applyCustomDropdownClass(q,Fe)}}isOpen(){return this._open}open(){this._open||(this._open=!0,this._applyContainer(this.container),this.openChange.emit(!0),this._setCloseHandlers(),this._anchor&&this._anchor.nativeElement.focus())}_setCloseHandlers(){ca(this._ngZone,this._document,this.autoClose,w=>{this.close(),0===w&&this._anchor.nativeElement.focus()},this._closed$,this._menu?[this._menu.nativeElement]:[],this._anchor?[this._anchor.nativeElement]:[],".dropdown-item,.dropdown-divider")}close(){this._open&&(this._open=!1,this._resetContainer(),this._closed$.next(),this.openChange.emit(!1),this._changeDetector.markForCheck())}toggle(){this.isOpen()?this.close():this.open()}ngOnDestroy(){this._resetContainer(),this._closed$.next(),this._zoneSubscription.unsubscribe()}onKeyDown(w){const q=w.which,Fe=this._getMenuElements();let ut=-1,Xn=null;const Fr=this._isEventFromToggle(w);if(!Fr&&Fe.length&&Fe.forEach((gi,Wi)=>{gi.contains(w.target)&&(Xn=gi),gi===this._document.activeElement&&(ut=Wi)}),q!==ki.Space&&q!==ki.Enter){if(q!==ki.Tab){if(Fr||Xn){if(this.open(),Fe.length){switch(q){case ki.ArrowDown:ut=Math.min(ut+1,Fe.length-1);break;case ki.ArrowUp:if(this._isDropup()&&-1===ut){ut=Fe.length-1;break}ut=Math.max(ut-1,0);break;case ki.Home:ut=0;break;case ki.End:ut=Fe.length-1}Fe[ut].focus()}w.preventDefault()}}else if(w.target&&this.isOpen()&&this.autoClose){if(this._anchor.nativeElement===w.target)return void("body"!==this.container||w.shiftKey?w.shiftKey&&this.close():(this._renderer.setAttribute(this._menu.nativeElement,"tabindex","0"),this._menu.nativeElement.focus(),this._renderer.removeAttribute(this._menu.nativeElement,"tabindex")));if("body"===this.container){const gi=this._menu.nativeElement.querySelectorAll(jc);w.shiftKey&&w.target===gi[0]?(this._anchor.nativeElement.focus(),w.preventDefault()):!w.shiftKey&&w.target===gi[gi.length-1]&&(this._anchor.nativeElement.focus(),this.close())}else(0,me.R)(w.target,"focusout").pipe((0,Bt.q)(1)).subscribe(({relatedTarget:gi})=>{this._elementRef.nativeElement.contains(gi)||this.close()})}}else Xn&&(!0===this.autoClose||"inside"===this.autoClose)&&(0,me.R)(Xn,"click").pipe((0,Bt.q)(1)).subscribe(()=>this.close())}_isDropup(){return this._elementRef.nativeElement.classList.contains("dropup")}_isEventFromToggle(w){return this._anchor.nativeElement.contains(w.target)}_getMenuElements(){const w=this._menu;return null==w?[]:w.menuItems.filter(q=>!q.disabled).map(q=>q.elementRef.nativeElement)}_positionMenu(){const w=this._menu;this.isOpen()&&w&&this._applyPlacementClasses("dynamic"===this.display?Be(this._anchor.nativeElement,this._bodyContainer||this._menu.nativeElement,this.placement,"body"===this.container):this._getFirstPlacement(this.placement))}_getFirstPlacement(w){return Array.isArray(w)?w[0]:w.split(" ")[0]}_resetContainer(){const w=this._renderer;if(this._menu){const Fe=this._menu.nativeElement;w.appendChild(this._elementRef.nativeElement,Fe),w.removeStyle(Fe,"position"),w.removeStyle(Fe,"transform")}this._bodyContainer&&(w.removeChild(this._document.body,this._bodyContainer),this._bodyContainer=null)}_applyContainer(w=null){if(this._resetContainer(),"body"===w){const q=this._renderer,Fe=this._menu.nativeElement,ut=this._bodyContainer=this._bodyContainer||q.createElement("div");q.setStyle(ut,"position","absolute"),q.setStyle(Fe,"position","static"),q.setStyle(ut,"z-index","1050"),q.appendChild(ut,Fe),q.appendChild(this._document.body,ut)}this._applyCustomDropdownClass(this.dropdownClass)}_applyCustomDropdownClass(w,q){const Fe="body"===this.container?this._bodyContainer:this._elementRef.nativeElement;Fe&&(q&&this._renderer.removeClass(Fe,q),w&&this._renderer.addClass(Fe,w))}_applyPlacementClasses(w){const q=this._menu;if(q){w||(w=this._getFirstPlacement(this.placement));const Fe=this._renderer,ut=this._elementRef.nativeElement;Fe.removeClass(ut,"dropup"),Fe.removeClass(ut,"dropdown"),q.placement="static"===this.display?null:w;const Xn=-1!==w.search("^top")?"dropup":"dropdown";Fe.addClass(ut,Xn);const Fr=this._bodyContainer;Fr&&(Fe.removeClass(Fr,"dropup"),Fe.removeClass(Fr,"dropdown"),Fe.addClass(Fr,Xn))}}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.sBO),r.Y36(pc),r.Y36(u.K0),r.Y36(r.R0b),r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(Xd,8))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbDropdown",""]],contentQueries:function(w,q,Fe){if(1&w&&(r.Suo(Fe,Wl,5),r.Suo(Fe,Pd,5)),2&w){let ut;r.iGM(ut=r.CRH())&&(q._menu=ut.first),r.iGM(ut=r.CRH())&&(q._anchor=ut.first)}},hostVars:2,hostBindings:function(w,q){2&w&&r.ekj("show",q.isOpen())},inputs:{_open:["open","_open"],placement:"placement",container:"container",autoClose:"autoClose",display:"display",dropdownClass:"dropdownClass"},outputs:{openChange:"openChange"},exportAs:["ngbDropdown"],features:[r.TTD]}),Y})(),Cc=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({}),Y})(),Fc=(()=>{class Y{constructor(w){this._ngbConfig=w,this.backdrop=!0,this.keyboard=!0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})();class fu{constructor(fe,w,q){this.nodes=fe,this.viewRef=w,this.componentRef=q}}class Id{constructor(fe,w,q,Fe,ut,Xn,Fr){this._type=fe,this._injector=w,this._viewContainerRef=q,this._renderer=Fe,this._ngZone=ut,this._componentFactoryResolver=Xn,this._applicationRef=Fr,this._windowRef=null,this._contentRef=null}open(fe,w,q=!1){this._windowRef||(this._contentRef=this._getContentRef(fe,w),this._windowRef=this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type),this._viewContainerRef.length,this._injector,this._contentRef.nodes));const{nativeElement:Fe}=this._windowRef.location,ut=this._ngZone.onStable.pipe((0,Bt.q)(1),(0,ci.zg)(()=>Nt(this._ngZone,Fe,({classList:Xn})=>Xn.add("show"),{animation:q,runningTransition:"continue"})));return{windowRef:this._windowRef,transition$:ut}}close(fe=!1){return this._windowRef?Nt(this._ngZone,this._windowRef.location.nativeElement,({classList:w})=>w.remove("show"),{animation:fe,runningTransition:"stop"}).pipe((0,Yn.b)(()=>{var w;this._windowRef&&(this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView)),this._windowRef=null),(null===(w=this._contentRef)||void 0===w?void 0:w.viewRef)&&(this._applicationRef.detachView(this._contentRef.viewRef),this._contentRef.viewRef.destroy(),this._contentRef=null)})):(0,oe.of)(void 0)}_getContentRef(fe,w){if(fe){if(fe instanceof r.Rgc){const q=fe.createEmbeddedView(w);return this._applicationRef.attachView(q),new fu([q.rootNodes],q)}return new fu([[this._renderer.createText(`${fe}`)]])}return new fu([])}}const Sl=()=>{};let $c=(()=>{class Y{constructor(w){this._document=w}compensate(){const w=this._getWidth();return this._isPresent(w)?this._adjustBody(w):Sl}_adjustBody(w){const q=this._document.body,Fe=q.style.paddingRight,ut=parseFloat(window.getComputedStyle(q)["padding-right"]);return q.style["padding-right"]=`${ut+w}px`,()=>q.style["padding-right"]=Fe}_isPresent(w){const q=this._document.body.getBoundingClientRect();return window.innerWidth-(q.left+q.right)>=w-.1*w}_getWidth(){const w=this._document.createElement("div");w.className="modal-scrollbar-measure";const q=this._document.body;q.appendChild(w);const Fe=w.getBoundingClientRect().width-w.clientWidth;return q.removeChild(w),Fe}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(u.K0))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG(u.K0))},token:Y,providedIn:"root"}),Y})(),h=(()=>{class Y{constructor(w,q){this._el=w,this._zone=q}ngOnInit(){this._zone.onStable.asObservable().pipe((0,Bt.q)(1)).subscribe(()=>{Nt(this._zone,this._el.nativeElement,(w,q)=>{q&&bc(w),w.classList.add("show")},{animation:this.animation,runningTransition:"continue"})})}hide(){return Nt(this._zone,this._el.nativeElement,({classList:w})=>w.remove("show"),{animation:this.animation,runningTransition:"stop"})}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq),r.Y36(r.R0b))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-modal-backdrop"]],hostAttrs:[2,"z-index","1050"],hostVars:6,hostBindings:function(w,q){2&w&&(r.Tol("modal-backdrop"+(q.backdropClass?" "+q.backdropClass:"")),r.ekj("show",!q.animation)("fade",q.animation))},inputs:{animation:"animation",backdropClass:"backdropClass"},decls:0,vars:0,template:function(w,q){},encapsulation:2}),Y})();class E{close(fe){}dismiss(fe){}}class N{constructor(fe,w,q,Fe){this._windowCmptRef=fe,this._contentRef=w,this._backdropCmptRef=q,this._beforeDismiss=Fe,this._closed=new he.xQ,this._dismissed=new he.xQ,this._hidden=new he.xQ,fe.instance.dismissEvent.subscribe(ut=>{this.dismiss(ut)}),this.result=new Promise((ut,Xn)=>{this._resolve=ut,this._reject=Xn}),this.result.then(null,()=>{})}get componentInstance(){if(this._contentRef&&this._contentRef.componentRef)return this._contentRef.componentRef.instance}get closed(){return this._closed.asObservable().pipe((0,Gt.R)(this._hidden))}get dismissed(){return this._dismissed.asObservable().pipe((0,Gt.R)(this._hidden))}get hidden(){return this._hidden.asObservable()}get shown(){return this._windowCmptRef.instance.shown.asObservable()}close(fe){this._windowCmptRef&&(this._closed.next(fe),this._resolve(fe),this._removeModalElements())}_dismiss(fe){this._dismissed.next(fe),this._reject(fe),this._removeModalElements()}dismiss(fe){if(this._windowCmptRef)if(this._beforeDismiss){const w=this._beforeDismiss();w&&w.then?w.then(q=>{!1!==q&&this._dismiss(fe)},()=>{}):!1!==w&&this._dismiss(fe)}else this._dismiss(fe)}_removeModalElements(){const fe=this._windowCmptRef.instance.hide(),w=this._backdropCmptRef?this._backdropCmptRef.instance.hide():(0,oe.of)(void 0);fe.subscribe(()=>{const{nativeElement:q}=this._windowCmptRef.location;q.parentNode.removeChild(q),this._windowCmptRef.destroy(),this._contentRef&&this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._windowCmptRef=null,this._contentRef=null}),w.subscribe(()=>{if(this._backdropCmptRef){const{nativeElement:q}=this._backdropCmptRef.location;q.parentNode.removeChild(q),this._backdropCmptRef.destroy(),this._backdropCmptRef=null}}),J(fe,w).subscribe(()=>{this._hidden.next(),this._hidden.complete()})}}var k=(()=>{return(Y=k||(k={}))[Y.BACKDROP_CLICK=0]="BACKDROP_CLICK",Y[Y.ESC=1]="ESC",k;var Y})();let K=(()=>{class Y{constructor(w,q,Fe){this._document=w,this._elRef=q,this._zone=Fe,this._closed$=new he.xQ,this._elWithFocus=null,this.backdrop=!0,this.keyboard=!0,this.dismissEvent=new r.vpe,this.shown=new he.xQ,this.hidden=new he.xQ}dismiss(w){this.dismissEvent.emit(w)}ngOnInit(){this._elWithFocus=this._document.activeElement,this._zone.onStable.asObservable().pipe((0,Bt.q)(1)).subscribe(()=>{this._show()})}ngOnDestroy(){this._disableEventHandling()}hide(){const{nativeElement:w}=this._elRef,q={animation:this.animation,runningTransition:"stop"},Xn=J(Nt(this._zone,w,()=>w.classList.remove("show"),q),Nt(this._zone,this._dialogEl.nativeElement,()=>{},q));return Xn.subscribe(()=>{this.hidden.next(),this.hidden.complete()}),this._disableEventHandling(),this._restoreFocus(),Xn}_show(){const w={animation:this.animation,runningTransition:"continue"};J(Nt(this._zone,this._elRef.nativeElement,(ut,Xn)=>{Xn&&bc(ut),ut.classList.add("show")},w),Nt(this._zone,this._dialogEl.nativeElement,()=>{},w)).subscribe(()=>{this.shown.next(),this.shown.complete()}),this._enableEventHandling(),this._setFocus()}_enableEventHandling(){const{nativeElement:w}=this._elRef;this._zone.runOutsideAngular(()=>{(0,me.R)(w,"keydown").pipe((0,Gt.R)(this._closed$),(0,Ut.h)(Fe=>Fe.which===ki.Escape)).subscribe(Fe=>{this.keyboard?requestAnimationFrame(()=>{Fe.defaultPrevented||this._zone.run(()=>this.dismiss(k.ESC))}):"static"===this.backdrop&&this._bumpBackdrop()});let q=!1;(0,me.R)(this._dialogEl.nativeElement,"mousedown").pipe((0,Gt.R)(this._closed$),(0,Yn.b)(()=>q=!1),(0,zt.w)(()=>(0,me.R)(w,"mouseup").pipe((0,Gt.R)(this._closed$),(0,Bt.q)(1))),(0,Ut.h)(({target:Fe})=>w===Fe)).subscribe(()=>{q=!0}),(0,me.R)(w,"click").pipe((0,Gt.R)(this._closed$)).subscribe(({target:Fe})=>{w===Fe&&("static"===this.backdrop?this._bumpBackdrop():!0===this.backdrop&&!q&&this._zone.run(()=>this.dismiss(k.BACKDROP_CLICK))),q=!1})})}_disableEventHandling(){this._closed$.next()}_setFocus(){const{nativeElement:w}=this._elRef;if(!w.contains(document.activeElement)){const q=w.querySelector("[ngbAutofocus]"),Fe=nc(w)[0];(q||Fe||w).focus()}}_restoreFocus(){const w=this._document.body,q=this._elWithFocus;let Fe;Fe=q&&q.focus&&w.contains(q)?q:w,this._zone.runOutsideAngular(()=>{setTimeout(()=>Fe.focus()),this._elWithFocus=null})}_bumpBackdrop(){"static"===this.backdrop&&Nt(this._zone,this._elRef.nativeElement,({classList:w})=>(w.add("modal-static"),()=>w.remove("modal-static")),{animation:this.animation,runningTransition:"continue"})}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(u.K0),r.Y36(r.SBq),r.Y36(r.R0b))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-modal-window"]],viewQuery:function(w,q){if(1&w&&r.Gf(yo,7),2&w){let Fe;r.iGM(Fe=r.CRH())&&(q._dialogEl=Fe.first)}},hostAttrs:["role","dialog","tabindex","-1"],hostVars:7,hostBindings:function(w,q){2&w&&(r.uIk("aria-modal",!0)("aria-labelledby",q.ariaLabelledBy)("aria-describedby",q.ariaDescribedBy),r.Tol("modal d-block"+(q.windowClass?" "+q.windowClass:"")),r.ekj("fade",q.animation))},inputs:{backdrop:"backdrop",keyboard:"keyboard",animation:"animation",ariaLabelledBy:"ariaLabelledBy",ariaDescribedBy:"ariaDescribedBy",centered:"centered",scrollable:"scrollable",size:"size",windowClass:"windowClass",modalDialogClass:"modalDialogClass"},outputs:{dismissEvent:"dismiss"},ngContentSelectors:Hi,decls:4,vars:2,consts:[["role","document"],["dialog",""],[1,"modal-content"]],template:function(w,q){1&w&&(r.F$t(),r.TgZ(0,"div",0,1),r.TgZ(2,"div",2),r.Hsn(3),r.qZA(),r.qZA()),2&w&&r.Tol("modal-dialog"+(q.size?" modal-"+q.size:"")+(q.centered?" modal-dialog-centered":"")+(q.scrollable?" modal-dialog-scrollable":"")+(q.modalDialogClass?" "+q.modalDialogClass:""))},styles:["ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}"],encapsulation:2}),Y})(),de=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr){this._applicationRef=w,this._injector=q,this._document=Fe,this._scrollBar=ut,this._rendererFactory=Xn,this._ngZone=Fr,this._activeWindowCmptHasChanged=new he.xQ,this._ariaHiddenValues=new Map,this._backdropAttributes=["animation","backdropClass"],this._modalRefs=[],this._windowAttributes=["animation","ariaLabelledBy","ariaDescribedBy","backdrop","centered","keyboard","scrollable","size","windowClass","modalDialogClass"],this._windowCmpts=[],this._activeInstances=new r.vpe,this._activeWindowCmptHasChanged.subscribe(()=>{if(this._windowCmpts.length){const gi=this._windowCmpts[this._windowCmpts.length-1];df(this._ngZone,gi.location.nativeElement,this._activeWindowCmptHasChanged),this._revertAriaHidden(),this._setAriaHidden(gi.location.nativeElement)}})}open(w,q,Fe,ut){const Xn=ut.container instanceof HTMLElement?ut.container:Ea(ut.container)?this._document.querySelector(ut.container):this._document.body,Fr=this._rendererFactory.createRenderer(null,null),gi=this._scrollBar.compensate(),Wi=()=>{this._modalRefs.length||(Fr.removeClass(this._document.body,"modal-open"),this._revertAriaHidden())};if(!Xn)throw new Error(`The specified modal container "${ut.container||"body"}" was not found in the DOM.`);const Po=new E,Ns=this._getContentRef(w,ut.injector||q,Fe,Po,ut);let ts=!1!==ut.backdrop?this._attachBackdrop(w,Xn):void 0,Is=this._attachWindowComponent(w,Xn,Ns),ya=new N(Is,Ns,ts,ut.beforeDismiss);return this._registerModalRef(ya),this._registerWindowCmpt(Is),ya.result.then(gi,gi),ya.result.then(Wi,Wi),Po.close=zs=>{ya.close(zs)},Po.dismiss=zs=>{ya.dismiss(zs)},this._applyWindowOptions(Is.instance,ut),1===this._modalRefs.length&&Fr.addClass(this._document.body,"modal-open"),ts&&ts.instance&&(this._applyBackdropOptions(ts.instance,ut),ts.changeDetectorRef.detectChanges()),Is.changeDetectorRef.detectChanges(),ya}get activeInstances(){return this._activeInstances}dismissAll(w){this._modalRefs.forEach(q=>q.dismiss(w))}hasOpenModals(){return this._modalRefs.length>0}_attachBackdrop(w,q){let ut=w.resolveComponentFactory(h).create(this._injector);return this._applicationRef.attachView(ut.hostView),q.appendChild(ut.location.nativeElement),ut}_attachWindowComponent(w,q,Fe){let Xn=w.resolveComponentFactory(K).create(this._injector,Fe.nodes);return this._applicationRef.attachView(Xn.hostView),q.appendChild(Xn.location.nativeElement),Xn}_applyWindowOptions(w,q){this._windowAttributes.forEach(Fe=>{Ea(q[Fe])&&(w[Fe]=q[Fe])})}_applyBackdropOptions(w,q){this._backdropAttributes.forEach(Fe=>{Ea(q[Fe])&&(w[Fe]=q[Fe])})}_getContentRef(w,q,Fe,ut,Xn){return Fe?Fe instanceof r.Rgc?this._createFromTemplateRef(Fe,ut):Ro(Fe)?this._createFromString(Fe):this._createFromComponent(w,q,Fe,ut,Xn):new fu([])}_createFromTemplateRef(w,q){const ut=w.createEmbeddedView({$implicit:q,close(Xn){q.close(Xn)},dismiss(Xn){q.dismiss(Xn)}});return this._applicationRef.attachView(ut),new fu([ut.rootNodes],ut)}_createFromString(w){const q=this._document.createTextNode(`${w}`);return new fu([[q]])}_createFromComponent(w,q,Fe,ut,Xn){const Fr=w.resolveComponentFactory(Fe),gi=r.zs3.create({providers:[{provide:E,useValue:ut}],parent:q}),Wi=Fr.create(gi),Po=Wi.location.nativeElement;return Xn.scrollable&&Po.classList.add("component-host-scrollable"),this._applicationRef.attachView(Wi.hostView),new fu([[Po]],Wi.hostView,Wi)}_setAriaHidden(w){const q=w.parentElement;q&&w!==this._document.body&&(Array.from(q.children).forEach(Fe=>{Fe!==w&&"SCRIPT"!==Fe.nodeName&&(this._ariaHiddenValues.set(Fe,Fe.getAttribute("aria-hidden")),Fe.setAttribute("aria-hidden","true"))}),this._setAriaHidden(q))}_revertAriaHidden(){this._ariaHiddenValues.forEach((w,q)=>{w?q.setAttribute("aria-hidden",w):q.removeAttribute("aria-hidden")}),this._ariaHiddenValues.clear()}_registerModalRef(w){const q=()=>{const Fe=this._modalRefs.indexOf(w);Fe>-1&&(this._modalRefs.splice(Fe,1),this._activeInstances.emit(this._modalRefs))};this._modalRefs.push(w),this._activeInstances.emit(this._modalRefs),w.result.then(q,q)}_registerWindowCmpt(w){this._windowCmpts.push(w),this._activeWindowCmptHasChanged.next(),w.onDestroy(()=>{const q=this._windowCmpts.indexOf(w);q>-1&&(this._windowCmpts.splice(q,1),this._activeWindowCmptHasChanged.next())})}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(r.z2F),r.LFG(r.zs3),r.LFG(u.K0),r.LFG($c),r.LFG(r.FYo),r.LFG(r.R0b))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG(r.z2F),r.LFG(r.gxx),r.LFG(u.K0),r.LFG($c),r.LFG(r.FYo),r.LFG(r.R0b))},token:Y,providedIn:"root"}),Y})(),be=(()=>{class Y{constructor(w,q,Fe,ut){this._moduleCFR=w,this._injector=q,this._modalStack=Fe,this._config=ut}open(w,q={}){const Fe=Object.assign(Object.assign(Object.assign({},this._config),{animation:this._config.animation}),q);return this._modalStack.open(this._moduleCFR,this._injector,w,Fe)}get activeInstances(){return this._modalStack.activeInstances}dismissAll(w){this._modalStack.dismissAll(w)}hasOpenModals(){return this._modalStack.hasOpenModals()}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(r._Vd),r.LFG(r.zs3),r.LFG(de),r.LFG(Fc))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG(r._Vd),r.LFG(r.gxx),r.LFG(de),r.LFG(Fc))},token:Y,providedIn:"root"}),Y})(),we=(()=>{class Y{constructor(w){this._ngbConfig=w,this.destroyOnHide=!0,this.orientation="horizontal",this.roles="tablist",this.keyboard=!1}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})();const Xe=Y=>Ea(Y)&&""!==Y;let vt=0,Jt=(()=>{class Y{constructor(w){this.templateRef=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.Rgc))},Y.\u0275dir=r.lG2({type:Y,selectors:[["ng-template","ngbNavContent",""]]}),Y})(),Pn=(()=>{class Y{constructor(w,q){this.elementRef=q,this.disabled=!1,this.shown=new r.vpe,this.hidden=new r.vpe,this._nav=w}ngAfterContentChecked(){this.contentTpl=this.contentTpls.first}ngOnInit(){Ea(this.domId)||(this.domId="ngb-nav-"+vt++)}get active(){return this._nav.activeId===this.id}get id(){return Xe(this._id)?this._id:this.domId}get panelDomId(){return`${this.domId}-panel`}isPanelInDom(){return(Ea(this.destroyOnHide)?!this.destroyOnHide:!this._nav.destroyOnHide)||this.active}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36((0,r.Gpc)(()=>Rn)),r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbNavItem",""]],contentQueries:function(w,q,Fe){if(1&w&&r.Suo(Fe,Jt,4),2&w){let ut;r.iGM(ut=r.CRH())&&(q.contentTpls=ut)}},hostVars:2,hostBindings:function(w,q){2&w&&r.ekj("nav-item",!0)},inputs:{disabled:"disabled",domId:"domId",destroyOnHide:"destroyOnHide",_id:["ngbNavItem","_id"]},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbNavItem"]}),Y})(),Rn=(()=>{class Y{constructor(w,q,Fe,ut){this.role=w,this._cd=Fe,this._document=ut,this.activeIdChange=new r.vpe,this.shown=new r.vpe,this.hidden=new r.vpe,this.destroy$=new he.xQ,this.navItemChange$=new he.xQ,this.navChange=new r.vpe,this.animation=q.animation,this.destroyOnHide=q.destroyOnHide,this.orientation=q.orientation,this.roles=q.roles,this.keyboard=q.keyboard}click(w){w.disabled||this._updateActiveId(w.id)}onKeyDown(w){if("tablist"!==this.roles||!this.keyboard)return;const q=w.which,Fe=this.links.filter(Fr=>!Fr.navItem.disabled),{length:ut}=Fe;let Xn=-1;if(Fe.forEach((Fr,gi)=>{Fr.elRef.nativeElement===this._document.activeElement&&(Xn=gi)}),ut){switch(q){case ki.ArrowLeft:if("vertical"===this.orientation)return;Xn=(Xn-1+ut)%ut;break;case ki.ArrowRight:if("vertical"===this.orientation)return;Xn=(Xn+1)%ut;break;case ki.ArrowDown:if("horizontal"===this.orientation)return;Xn=(Xn+1)%ut;break;case ki.ArrowUp:if("horizontal"===this.orientation)return;Xn=(Xn-1+ut)%ut;break;case ki.Home:Xn=0;break;case ki.End:Xn=ut-1}"changeWithArrows"===this.keyboard&&this.select(Fe[Xn].navItem.id),Fe[Xn].elRef.nativeElement.focus(),w.preventDefault()}}select(w){this._updateActiveId(w,!1)}ngAfterContentInit(){if(!Ea(this.activeId)){const w=this.items.first?this.items.first.id:null;Xe(w)&&(this._updateActiveId(w,!1),this._cd.detectChanges())}this.items.changes.pipe((0,Gt.R)(this.destroy$)).subscribe(()=>this._notifyItemChanged(this.activeId))}ngOnChanges({activeId:w}){w&&!w.firstChange&&this._notifyItemChanged(w.currentValue)}ngOnDestroy(){this.destroy$.next()}_updateActiveId(w,q=!0){if(this.activeId!==w){let Fe=!1;q&&this.navChange.emit({activeId:this.activeId,nextId:w,preventDefault:()=>{Fe=!0}}),Fe||(this.activeId=w,this.activeIdChange.emit(w),this._notifyItemChanged(w))}}_notifyItemChanged(w){this.navItemChange$.next(this._getItemById(w))}_getItemById(w){return this.items&&this.items.find(q=>q.id===w)||null}}return Y.\u0275fac=function(w){return new(w||Y)(r.$8M("role"),r.Y36(we),r.Y36(r.sBO),r.Y36(u.K0))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbNav",""]],contentQueries:function(w,q,Fe){if(1&w&&(r.Suo(Fe,Pn,4),r.Suo(Fe,sr,5)),2&w){let ut;r.iGM(ut=r.CRH())&&(q.items=ut),r.iGM(ut=r.CRH())&&(q.links=ut)}},hostVars:6,hostBindings:function(w,q){1&w&&r.NdJ("keydown.arrowLeft",function(ut){return q.onKeyDown(ut)})("keydown.arrowRight",function(ut){return q.onKeyDown(ut)})("keydown.arrowDown",function(ut){return q.onKeyDown(ut)})("keydown.arrowUp",function(ut){return q.onKeyDown(ut)})("keydown.Home",function(ut){return q.onKeyDown(ut)})("keydown.End",function(ut){return q.onKeyDown(ut)}),2&w&&(r.uIk("aria-orientation","vertical"===q.orientation&&"tablist"===q.roles?"vertical":void 0)("role",q.role?q.role:q.roles?"tablist":void 0),r.ekj("nav",!0)("flex-column","vertical"===q.orientation))},inputs:{animation:"animation",destroyOnHide:"destroyOnHide",orientation:"orientation",roles:"roles",keyboard:"keyboard",activeId:"activeId"},outputs:{activeIdChange:"activeIdChange",shown:"shown",hidden:"hidden",navChange:"navChange"},exportAs:["ngbNav"],features:[r.TTD]}),Y})(),sr=(()=>{class Y{constructor(w,q,Fe,ut){this.role=w,this.navItem=q,this.nav=Fe,this.elRef=ut}hasNavItemClass(){return this.navItem.elementRef.nativeElement.nodeType===Node.COMMENT_NODE}}return Y.\u0275fac=function(w){return new(w||Y)(r.$8M("role"),r.Y36(Pn),r.Y36(Rn),r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["a","ngbNavLink",""]],hostAttrs:["href",""],hostVars:14,hostBindings:function(w,q){1&w&&r.NdJ("click",function(ut){return q.nav.click(q.navItem),ut.preventDefault()}),2&w&&(r.Ikx("id",q.navItem.domId),r.uIk("role",q.role?q.role:q.nav.roles?"tab":void 0)("tabindex",q.navItem.disabled?-1:void 0)("aria-controls",q.navItem.isPanelInDom()?q.navItem.panelDomId:null)("aria-selected",q.navItem.active)("aria-disabled",q.navItem.disabled),r.ekj("nav-link",!0)("nav-item",q.hasNavItemClass())("active",q.navItem.active)("disabled",q.navItem.disabled))}}),Y})();const jr=({classList:Y})=>(Y.remove("show"),()=>Y.remove("active")),Ni=(Y,fe)=>{fe&&bc(Y),Y.classList.add("show")};let Vo=(()=>{class Y{constructor(w){this.elRef=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbNavPane",""]],hostAttrs:[1,"tab-pane"],hostVars:5,hostBindings:function(w,q){2&w&&(r.Ikx("id",q.item.panelDomId),r.uIk("role",q.role?q.role:q.nav.roles?"tabpanel":void 0)("aria-labelledby",q.item.domId),r.ekj("fade",q.nav.animation))},inputs:{item:"item",nav:"nav",role:"role"}}),Y})(),$o=(()=>{class Y{constructor(w,q){this._cd=w,this._ngZone=q,this._activePane=null}isPanelTransitioning(w){var q;return(null===(q=this._activePane)||void 0===q?void 0:q.item)===w}ngAfterViewInit(){var w;this._updateActivePane(),this.nav.navItemChange$.pipe((0,Gt.R)(this.nav.destroy$),(0,Yt.O)((null===(w=this._activePane)||void 0===w?void 0:w.item)||null),(0,Dt.x)(),fe=>fe.lift(new en(1))).subscribe(q=>{const Fe={animation:this.nav.animation,runningTransition:"stop"};this._cd.detectChanges(),this._activePane?Nt(this._ngZone,this._activePane.elRef.nativeElement,jr,Fe).subscribe(()=>{var ut;const Xn=null===(ut=this._activePane)||void 0===ut?void 0:ut.item;this._activePane=this._getPaneForItem(q),this._cd.markForCheck(),this._activePane&&(this._activePane.elRef.nativeElement.classList.add("active"),Nt(this._ngZone,this._activePane.elRef.nativeElement,Ni,Fe).subscribe(()=>{q&&(q.shown.emit(),this.nav.shown.emit(q.id))})),Xn&&(Xn.hidden.emit(),this.nav.hidden.emit(Xn.id))}):this._updateActivePane()})}_updateActivePane(){var w,q;this._activePane=this._getActivePane(),null===(w=this._activePane)||void 0===w||w.elRef.nativeElement.classList.add("show"),null===(q=this._activePane)||void 0===q||q.elRef.nativeElement.classList.add("active")}_getPaneForItem(w){return this._panes&&this._panes.find(q=>q.item===w)||null}_getActivePane(){return this._panes&&this._panes.find(w=>w.item.active)||null}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.sBO),r.Y36(r.R0b))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["","ngbNavOutlet",""]],viewQuery:function(w,q){if(1&w&&r.Gf(Vo,5),2&w){let Fe;r.iGM(Fe=r.CRH())&&(q._panes=Fe)}},hostVars:2,hostBindings:function(w,q){2&w&&r.ekj("tab-content",!0)},inputs:{paneRole:"paneRole",nav:["ngbNavOutlet","nav"]},attrs:Mo,decls:1,vars:1,consts:[["ngFor","",3,"ngForOf"],["ngbNavPane","",3,"item","nav","role",4,"ngIf"],["ngbNavPane","",3,"item","nav","role"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(w,q){1&w&&r.YNc(0,So,1,1,"ng-template",0),2&w&&r.Q6J("ngForOf",q.nav.items)},directives:[u.sg,u.O5,Vo,u.tP],encapsulation:2,changeDetection:0}),Y})(),qs=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})();class gf{constructor(fe,w){this.open=fe,this.close=w,w||(this.close=fe)}isManual(){return"manual"===this.open||"manual"===this.close}}const Ga={hover:["mouseenter","mouseleave"],focus:["focusin","focusout"]},nt=Y=>Y>0?(0,Hr.g)(Y):fe=>fe;function fr(Y,fe,w,q,Fe,ut,Xn=0,Fr=0){const gi=function(Y,fe=Ga){const w=(Y||"").trim();if(0===w.length)return[];const q=w.split(/\s+/).map(ut=>ut.split(":")).map(ut=>{let Xn=fe[ut[0]]||ut;return new gf(Xn[0],Xn[1])}),Fe=q.filter(ut=>ut.isManual());if(Fe.length>1)throw"Triggers parse error: only one manual trigger is allowed";if(1===Fe.length&&q.length>1)throw"Triggers parse error: manual trigger can't be mixed with other triggers";return q}(w);if(1===gi.length&&gi[0].isManual())return()=>{};const Wi=function(Y,fe,w,q){return new se.y(Fe=>{const ut=[],Xn=()=>Fe.next(!0),Fr=()=>Fe.next(!1),gi=()=>Fe.next(!q());return w.forEach(Wi=>{Wi.open===Wi.close?ut.push(Y.listen(fe,Wi.open,gi)):ut.push(Y.listen(fe,Wi.open,Xn),Y.listen(fe,Wi.close,Fr))}),()=>{ut.forEach(Wi=>Wi())}})}(Y,fe,gi,q).pipe(function(Y,fe,w){return q=>{let Fe=null;const ut=q.pipe((0,mt.U)(gi=>({open:gi})),(0,Ut.h)(gi=>{const Wi=w();return Wi===gi.open||Fe&&Fe.open!==Wi?(Fe&&Fe.open!==gi.open&&(Fe=null),!1):(Fe=gi,!0)}),(0,Ir.B)()),Xn=ut.pipe((0,Ut.h)(gi=>gi.open),nt(Y)),Fr=ut.pipe((0,Ut.h)(gi=>!gi.open),nt(fe));return(0,Ye.T)(Xn,Fr).pipe((0,Ut.h)(gi=>gi===Fe&&(Fe=null,gi.open!==w())),(0,mt.U)(gi=>gi.open))}}(Xn,Fr,q)).subscribe(Po=>Po?Fe():ut());return()=>Wi.unsubscribe()}let vi=(()=>{class Y{constructor(w){this._ngbConfig=w,this.autoClose=!0,this.placement="auto",this.triggers="click",this.disablePopover=!1,this.openDelay=0,this.closeDelay=0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})(),ps=0,xa=(()=>{class Y{isTitleTemplate(){return this.title instanceof r.Rgc}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-popover-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(w,q){2&w&&(r.Ikx("id",q.id),r.Tol("popover"+(q.popoverClass?" "+q.popoverClass:"")),r.ekj("fade",q.animation))},inputs:{animation:"animation",title:"title",id:"id",popoverClass:"popoverClass",context:"context"},ngContentSelectors:Hi,decls:4,vars:1,consts:[[1,"arrow"],["class","popover-header",4,"ngIf"],[1,"popover-body"],[1,"popover-header"],["simpleTitle",""],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(w,q){1&w&&(r.F$t(),r._UZ(0,"div",0),r.YNc(1,Ia,4,2,"h3",1),r.TgZ(2,"div",2),r.Hsn(3),r.qZA()),2&w&&(r.xp6(1),r.Q6J("ngIf",q.title))},directives:[u.O5,u.tP],styles:["ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}"],encapsulation:2,changeDetection:0}),Y})(),ia=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi,Wi,Po,Ns){this._elementRef=w,this._renderer=q,this._ngZone=gi,this._document=Wi,this._changeDetector=Po,this.shown=new r.vpe,this.hidden=new r.vpe,this._ngbPopoverWindowId="ngb-popover-"+ps++,this._windowRef=null,this.animation=Fr.animation,this.autoClose=Fr.autoClose,this.placement=Fr.placement,this.triggers=Fr.triggers,this.container=Fr.container,this.disablePopover=Fr.disablePopover,this.popoverClass=Fr.popoverClass,this.openDelay=Fr.openDelay,this.closeDelay=Fr.closeDelay,this._popupService=new Id(xa,Fe,Xn,q,this._ngZone,ut,Ns),this._zoneSubscription=gi.onStable.subscribe(()=>{this._windowRef&&Be(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container,"bs-popover")})}_isDisabled(){return!(!this.disablePopover&&(this.ngbPopover||this.popoverTitle))}open(w){if(!this._windowRef&&!this._isDisabled()){const{windowRef:q,transition$:Fe}=this._popupService.open(this.ngbPopover,w,this.animation);this._windowRef=q,this._windowRef.instance.animation=this.animation,this._windowRef.instance.title=this.popoverTitle,this._windowRef.instance.context=w,this._windowRef.instance.popoverClass=this.popoverClass,this._windowRef.instance.id=this._ngbPopoverWindowId,this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ngbPopoverWindowId),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._windowRef.changeDetectorRef.detectChanges(),this._windowRef.changeDetectorRef.markForCheck(),ca(this._ngZone,this._document,this.autoClose,()=>this.close(),this.hidden,[this._windowRef.location.nativeElement]),Fe.subscribe(()=>this.shown.emit())}}close(){this._windowRef&&(this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby"),this._popupService.close(this.animation).subscribe(()=>{this._windowRef=null,this.hidden.emit(),this._changeDetector.markForCheck()}))}toggle(){this._windowRef?this.close():this.open()}isOpen(){return null!=this._windowRef}ngOnInit(){this._unregisterListenersFn=fr(this._renderer,this._elementRef.nativeElement,this.triggers,this.isOpen.bind(this),this.open.bind(this),this.close.bind(this),+this.openDelay,+this.closeDelay)}ngOnChanges({ngbPopover:w,popoverTitle:q,disablePopover:Fe,popoverClass:ut}){ut&&this.isOpen()&&(this._windowRef.instance.popoverClass=ut.currentValue),(w||q||Fe)&&this._isDisabled()&&this.close()}ngOnDestroy(){this.close(),this._unregisterListenersFn&&this._unregisterListenersFn(),this._zoneSubscription.unsubscribe()}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(r.zs3),r.Y36(r._Vd),r.Y36(r.s_b),r.Y36(vi),r.Y36(r.R0b),r.Y36(u.K0),r.Y36(r.sBO),r.Y36(r.z2F))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbPopover",""]],inputs:{animation:"animation",autoClose:"autoClose",placement:"placement",triggers:"triggers",container:"container",disablePopover:"disablePopover",popoverClass:"popoverClass",openDelay:"openDelay",closeDelay:"closeDelay",ngbPopover:"ngbPopover",popoverTitle:"popoverTitle"},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbPopover"],features:[r.TTD]}),Y})(),_l=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})(),Jl=(()=>{class Y{constructor(){this.max=100,this.animated=!1,this.striped=!1,this.showValue=!1}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})(),Wc=(()=>{class Y{constructor(w){this.value=0,this.max=w.max,this.animated=w.animated,this.striped=w.striped,this.textType=w.textType,this.type=w.type,this.showValue=w.showValue,this.height=w.height}set max(w){this._max=!Uo(w)||w<=0?100:w}get max(){return this._max}getValue(){return function(Y,fe,w=0){return Math.max(Math.min(Y,fe),w)}(this.value,this.max)}getPercentValue(){return 100*this.getValue()/this.max}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(Jl))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-progressbar"]],hostAttrs:[1,"progress"],hostVars:2,hostBindings:function(w,q){2&w&&r.Udp("height",q.height)},inputs:{value:"value",max:"max",animated:"animated",striped:"striped",textType:"textType",type:"type",showValue:"showValue",height:"height"},ngContentSelectors:Hi,decls:3,vars:11,consts:function(){let fe;return fe="" + "\ufffd0\ufffd" + "",[["role","progressbar","aria-valuemin","0"],[4,"ngIf"],fe]},template:function(w,q){1&w&&(r.F$t(),r.TgZ(0,"div",0),r.YNc(1,pa,3,3,"span",1),r.Hsn(2),r.qZA()),2&w&&(r.DjV("progress-bar",q.type?" bg-"+q.type:"","",q.textType?" text-"+q.textType:"","\n    ",q.animated?" progress-bar-animated":"","",q.striped?" progress-bar-striped":"",""),r.Udp("width",q.getPercentValue(),"%"),r.uIk("aria-valuenow",q.getValue())("aria-valuemax",q.max),r.xp6(1),r.Q6J("ngIf",q.showValue))},directives:[u.O5],pipes:[u.Zx],encapsulation:2,changeDetection:0}),Y})(),Kf=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})();class mf{constructor(fe,w,q){this.hour=fi(fe),this.minute=fi(w),this.second=fi(q)}changeHour(fe=1){this.updateHour((isNaN(this.hour)?0:this.hour)+fe)}updateHour(fe){this.hour=Uo(fe)?(fe<0?24+fe:fe)%24:NaN}changeMinute(fe=1){this.updateMinute((isNaN(this.minute)?0:this.minute)+fe)}updateMinute(fe){Uo(fe)?(this.minute=fe%60<0?60+fe%60:fe%60,this.changeHour(Math.floor(fe/60))):this.minute=NaN}changeSecond(fe=1){this.updateSecond((isNaN(this.second)?0:this.second)+fe)}updateSecond(fe){Uo(fe)?(this.second=fe<0?60+fe%60:fe%60,this.changeMinute(Math.floor(fe/60))):this.second=NaN}isValid(fe=!0){return Uo(this.hour)&&Uo(this.minute)&&(!fe||Uo(this.second))}toString(){return`${this.hour||0}:${this.minute||0}:${this.second||0}`}}let $f=(()=>{class Y{constructor(){this.meridian=!1,this.spinners=!0,this.seconds=!1,this.hourStep=1,this.minuteStep=1,this.secondStep=1,this.disabled=!1,this.readonlyInputs=!1,this.size="medium"}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})();function dd(){return new fp}let Fd=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:dd,token:Y,providedIn:"root"}),Y})(),fp=(()=>{class Y extends Fd{fromModel(w){return w&&To(w.hour)&&To(w.minute)?{hour:w.hour,minute:w.minute,second:To(w.second)?w.second:null}:null}toModel(w){return w&&To(w.hour)&&To(w.minute)?{hour:w.hour,minute:w.minute,second:To(w.second)?w.second:null}:null}}return Y.\u0275fac=function(){let fe;return function(q){return(fe||(fe=r.n5z(Y)))(q||Y)}}(),Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})(),Kh=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return function(Y){return new F_(Y)}(r.LFG(r.soG))},token:Y,providedIn:"root"}),Y})(),F_=(()=>{class Y extends Kh{constructor(w){super(),this._periods=(0,u.ol)(w,u.x.Standalone,u.Tn.Narrow)}getMorningPeriod(){return this._periods[0]}getAfternoonPeriod(){return this._periods[1]}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(r.soG))},Y.\u0275prov=r.Yz7({token:Y,factory:Y.\u0275fac}),Y})();const Hf=/[^0-9]/g;let kd=(()=>{class Y{constructor(w,q,Fe,ut){this._config=w,this._ngbTimeAdapter=q,this._cd=Fe,this.i18n=ut,this.onChange=Xn=>{},this.onTouched=()=>{},this.meridian=w.meridian,this.spinners=w.spinners,this.seconds=w.seconds,this.hourStep=w.hourStep,this.minuteStep=w.minuteStep,this.secondStep=w.secondStep,this.disabled=w.disabled,this.readonlyInputs=w.readonlyInputs,this.size=w.size}set hourStep(w){this._hourStep=To(w)?w:this._config.hourStep}get hourStep(){return this._hourStep}set minuteStep(w){this._minuteStep=To(w)?w:this._config.minuteStep}get minuteStep(){return this._minuteStep}set secondStep(w){this._secondStep=To(w)?w:this._config.secondStep}get secondStep(){return this._secondStep}writeValue(w){const q=this._ngbTimeAdapter.fromModel(w);this.model=q?new mf(q.hour,q.minute,q.second):new mf,!this.seconds&&(!q||!Uo(q.second))&&(this.model.second=0),this._cd.markForCheck()}registerOnChange(w){this.onChange=w}registerOnTouched(w){this.onTouched=w}setDisabledState(w){this.disabled=w}changeHour(w){this.model.changeHour(w),this.propagateModelChange()}changeMinute(w){this.model.changeMinute(w),this.propagateModelChange()}changeSecond(w){this.model.changeSecond(w),this.propagateModelChange()}updateHour(w){const q=this.model.hour>=12,Fe=fi(w);this.model.updateHour(this.meridian&&(q&&Fe<12||!q&&12===Fe)?Fe+12:Fe),this.propagateModelChange()}updateMinute(w){this.model.updateMinute(fi(w)),this.propagateModelChange()}updateSecond(w){this.model.updateSecond(fi(w)),this.propagateModelChange()}toggleMeridian(){this.meridian&&this.changeHour(12)}formatInput(w){w.value=w.value.replace(Hf,"")}formatHour(w){return Uo(w)?al(this.meridian?w%12==0?12:w%12:w%24):al(NaN)}formatMinSec(w){return al(Uo(w)?w:NaN)}handleBlur(){this.onTouched()}get isSmallSize(){return"small"===this.size}get isLargeSize(){return"large"===this.size}ngOnChanges(w){w.seconds&&!this.seconds&&this.model&&!Uo(this.model.second)&&(this.model.second=0,this.propagateModelChange(!1))}propagateModelChange(w=!0){w&&this.onTouched(),this.model.isValid(this.seconds)?this.onChange(this._ngbTimeAdapter.toModel({hour:this.model.hour,minute:this.model.minute,second:this.model.second})):this.onChange(this._ngbTimeAdapter.toModel(null))}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36($f),r.Y36(Fd),r.Y36(r.sBO),r.Y36(Kh))},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-timepicker"]],inputs:{meridian:"meridian",spinners:"spinners",seconds:"seconds",hourStep:"hourStep",minuteStep:"minuteStep",secondStep:"secondStep",readonlyInputs:"readonlyInputs",size:"size"},features:[r._Bn([{provide:wr.JU,useExisting:(0,r.Gpc)(()=>Y),multi:!0}]),r.TTD],decls:16,vars:25,consts:function(){let fe,w,q,Fe,ut,Xn,Fr,gi,Wi,Po,Ns,ts,Is,ya;return fe="HH",w="Hours",q="MM",Fe="Minutes",ut="Increment hours",Xn="Decrement hours",Fr="Increment minutes",gi="Decrement minutes",Wi="SS",Po="Seconds",Ns="Increment seconds",ts="Decrement seconds",Is="" + "\ufffd0\ufffd" + "",ya="" + "\ufffd0\ufffd" + "",[[3,"disabled"],[1,"ngb-tp"],[1,"ngb-tp-input-container","ngb-tp-hour"],["tabindex","-1","type","button","class","btn btn-link",3,"btn-sm","btn-lg","disabled","click",4,"ngIf"],["type","text","maxlength","2","inputmode","numeric","placeholder",fe,"aria-label",w,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],[1,"ngb-tp-spacer"],[1,"ngb-tp-input-container","ngb-tp-minute"],["type","text","maxlength","2","inputmode","numeric","placeholder",q,"aria-label",Fe,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],["class","ngb-tp-spacer",4,"ngIf"],["class","ngb-tp-input-container ngb-tp-second",4,"ngIf"],["class","ngb-tp-meridian",4,"ngIf"],["tabindex","-1","type","button",1,"btn","btn-link",3,"disabled","click"],[1,"chevron","ngb-tp-chevron"],[1,"sr-only"],ut,[1,"chevron","ngb-tp-chevron","bottom"],Xn,Fr,gi,[1,"ngb-tp-input-container","ngb-tp-second"],["type","text","maxlength","2","inputmode","numeric","placeholder",Wi,"aria-label",Po,1,"ngb-tp-input","form-control",3,"value","readOnly","disabled","change","blur","input","keydown.ArrowUp","keydown.ArrowDown"],Ns,ts,[1,"ngb-tp-meridian"],["type","button",1,"btn","btn-outline-primary",3,"disabled","click"],[4,"ngIf","ngIfElse"],["am",""],Is,ya]},template:function(w,q){1&w&&(r.TgZ(0,"fieldset",0),r.TgZ(1,"div",1),r.TgZ(2,"div",2),r.YNc(3,fo,4,7,"button",3),r.TgZ(4,"input",4),r.NdJ("change",function(ut){return q.updateHour(ut.target.value)})("blur",function(){return q.handleBlur()})("input",function(ut){return q.formatInput(ut.target)})("keydown.ArrowUp",function(ut){return q.changeHour(q.hourStep),ut.preventDefault()})("keydown.ArrowDown",function(ut){return q.changeHour(-q.hourStep),ut.preventDefault()}),r.qZA(),r.YNc(5,Da,4,7,"button",3),r.qZA(),r.TgZ(6,"div",5),r._uU(7,":"),r.qZA(),r.TgZ(8,"div",6),r.YNc(9,Ao,4,7,"button",3),r.TgZ(10,"input",7),r.NdJ("change",function(ut){return q.updateMinute(ut.target.value)})("blur",function(){return q.handleBlur()})("input",function(ut){return q.formatInput(ut.target)})("keydown.ArrowUp",function(ut){return q.changeMinute(q.minuteStep),ut.preventDefault()})("keydown.ArrowDown",function(ut){return q.changeMinute(-q.minuteStep),ut.preventDefault()}),r.qZA(),r.YNc(11,ls,4,7,"button",3),r.qZA(),r.YNc(12,gs,2,0,"div",8),r.YNc(13,Qs,4,9,"div",9),r.YNc(14,Fo,1,0,"div",8),r.YNc(15,ms,5,9,"div",10),r.qZA(),r.qZA()),2&w&&(r.ekj("disabled",q.disabled),r.Q6J("disabled",q.disabled),r.xp6(3),r.Q6J("ngIf",q.spinners),r.xp6(1),r.ekj("form-control-sm",q.isSmallSize)("form-control-lg",q.isLargeSize),r.Q6J("value",q.formatHour(null==q.model?null:q.model.hour))("readOnly",q.readonlyInputs)("disabled",q.disabled),r.xp6(1),r.Q6J("ngIf",q.spinners),r.xp6(4),r.Q6J("ngIf",q.spinners),r.xp6(1),r.ekj("form-control-sm",q.isSmallSize)("form-control-lg",q.isLargeSize),r.Q6J("value",q.formatMinSec(null==q.model?null:q.model.minute))("readOnly",q.readonlyInputs)("disabled",q.disabled),r.xp6(1),r.Q6J("ngIf",q.spinners),r.xp6(1),r.Q6J("ngIf",q.seconds),r.xp6(1),r.Q6J("ngIf",q.seconds),r.xp6(1),r.Q6J("ngIf",q.meridian),r.xp6(1),r.Q6J("ngIf",q.meridian))},directives:[u.O5],styles:['ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:"";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}'],encapsulation:2}),Y})(),Uf=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})(),th=(()=>{class Y{constructor(w){this._ngbConfig=w,this.autoClose=!0,this.placement="auto",this.triggers="hover focus",this.disableTooltip=!1,this.openDelay=0,this.closeDelay=0}get animation(){return void 0===this._animation?this._ngbConfig.animation:this._animation}set animation(w){this._animation=w}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG($s))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG($s))},token:Y,providedIn:"root"}),Y})(),Td=0,xf=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-tooltip-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(w,q){2&w&&(r.Ikx("id",q.id),r.Tol("tooltip"+(q.tooltipClass?" "+q.tooltipClass:"")),r.ekj("fade",q.animation))},inputs:{animation:"animation",id:"id",tooltipClass:"tooltipClass"},ngContentSelectors:Hi,decls:3,vars:0,consts:[[1,"arrow"],[1,"tooltip-inner"]],template:function(w,q){1&w&&(r.F$t(),r._UZ(0,"div",0),r.TgZ(1,"div",1),r.Hsn(2),r.qZA())},styles:["ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}"],encapsulation:2,changeDetection:0}),Y})(),wh=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi,Wi,Po,Ns){this._elementRef=w,this._renderer=q,this._ngZone=gi,this._document=Wi,this._changeDetector=Po,this.shown=new r.vpe,this.hidden=new r.vpe,this._ngbTooltipWindowId="ngb-tooltip-"+Td++,this._windowRef=null,this.animation=Fr.animation,this.autoClose=Fr.autoClose,this.placement=Fr.placement,this.triggers=Fr.triggers,this.container=Fr.container,this.disableTooltip=Fr.disableTooltip,this.tooltipClass=Fr.tooltipClass,this.openDelay=Fr.openDelay,this.closeDelay=Fr.closeDelay,this._popupService=new Id(xf,Fe,Xn,q,this._ngZone,ut,Ns),this._zoneSubscription=gi.onStable.subscribe(()=>{this._windowRef&&Be(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container,"bs-tooltip")})}set ngbTooltip(w){this._ngbTooltip=w,!w&&this._windowRef&&this.close()}get ngbTooltip(){return this._ngbTooltip}open(w){if(!this._windowRef&&this._ngbTooltip&&!this.disableTooltip){const{windowRef:q,transition$:Fe}=this._popupService.open(this._ngbTooltip,w,this.animation);this._windowRef=q,this._windowRef.instance.animation=this.animation,this._windowRef.instance.tooltipClass=this.tooltipClass,this._windowRef.instance.id=this._ngbTooltipWindowId,this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ngbTooltipWindowId),"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._windowRef.changeDetectorRef.detectChanges(),this._windowRef.changeDetectorRef.markForCheck(),ca(this._ngZone,this._document,this.autoClose,()=>this.close(),this.hidden,[this._windowRef.location.nativeElement]),Fe.subscribe(()=>this.shown.emit())}}close(){null!=this._windowRef&&(this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby"),this._popupService.close(this.animation).subscribe(()=>{this._windowRef=null,this.hidden.emit(),this._changeDetector.markForCheck()}))}toggle(){this._windowRef?this.close():this.open()}isOpen(){return null!=this._windowRef}ngOnInit(){this._unregisterListenersFn=fr(this._renderer,this._elementRef.nativeElement,this.triggers,this.isOpen.bind(this),this.open.bind(this),this.close.bind(this),+this.openDelay,+this.closeDelay)}ngOnChanges({tooltipClass:w}){w&&this.isOpen()&&(this._windowRef.instance.tooltipClass=w.currentValue)}ngOnDestroy(){this.close(),this._unregisterListenersFn&&this._unregisterListenersFn(),this._zoneSubscription.unsubscribe()}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq),r.Y36(r.Qsj),r.Y36(r.zs3),r.Y36(r._Vd),r.Y36(r.s_b),r.Y36(th),r.Y36(r.R0b),r.Y36(u.K0),r.Y36(r.sBO),r.Y36(r.z2F))},Y.\u0275dir=r.lG2({type:Y,selectors:[["","ngbTooltip",""]],inputs:{animation:"animation",autoClose:"autoClose",placement:"placement",triggers:"triggers",container:"container",disableTooltip:"disableTooltip",tooltipClass:"tooltipClass",openDelay:"openDelay",closeDelay:"closeDelay",ngbTooltip:"ngbTooltip"},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbTooltip"],features:[r.TTD]}),Y})(),Up=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({}),Y})(),nh=(()=>{class Y{constructor(){this.highlightClass="ngb-highlight",this.accentSensitive=!0}ngOnChanges(w){!this.accentSensitive&&!String.prototype.normalize&&(console.warn("The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser that does not implement the `String.normalize` function. You will have to include a polyfill in your application to use this feature in the current browser."),this.accentSensitive=!0);const q=Oi(this.result),Fe=Array.isArray(this.term)?this.term:[this.term],ut=Wi=>this.accentSensitive?Wi:Hl(Wi),Xn=Fe.map(Wi=>function(Y){return Y.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}(ut(Oi(Wi)))).filter(Wi=>Wi),Fr=this.accentSensitive?q:Hl(q),gi=Xn.length?Fr.split(new RegExp(`(${Xn.join("|")})`,"gmi")):[q];if(this.accentSensitive)this.parts=gi;else{let Wi=0;this.parts=gi.map(Po=>q.substring(Wi,Wi+=Po.length))}}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-highlight"]],inputs:{highlightClass:"highlightClass",accentSensitive:"accentSensitive",result:"result",term:"term"},features:[r.TTD],decls:1,vars:1,consts:[["ngFor","",3,"ngForOf"],[3,"class",4,"ngIf","ngIfElse"],["even",""]],template:function(w,q){1&w&&r.YNc(0,ne,3,2,"ng-template",0),2&w&&r.Q6J("ngForOf",q.parts)},directives:[u.sg,u.O5],styles:[".ngb-highlight{font-weight:700}"],encapsulation:2,changeDetection:0}),Y})(),xh=(()=>{class Y{constructor(){this.activeIdx=0,this.focusFirst=!0,this.formatter=Oi,this.selectEvent=new r.vpe,this.activeChangeEvent=new r.vpe}hasActive(){return this.activeIdx>-1&&this.activeIdx<this.results.length}getActive(){return this.results[this.activeIdx]}markActive(w){this.activeIdx=w,this._activeChanged()}next(){this.activeIdx===this.results.length-1?this.activeIdx=this.focusFirst?(this.activeIdx+1)%this.results.length:-1:this.activeIdx++,this._activeChanged()}prev(){this.activeIdx<0?this.activeIdx=this.results.length-1:0===this.activeIdx?this.activeIdx=this.focusFirst?this.results.length-1:-1:this.activeIdx--,this._activeChanged()}resetActive(){this.activeIdx=this.focusFirst?0:-1,this._activeChanged()}select(w){this.selectEvent.emit(w)}ngOnInit(){this.resetActive()}_activeChanged(){this.activeChangeEvent.emit(this.activeIdx>=0?this.id+"-"+this.activeIdx:void 0)}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275cmp=r.Xpm({type:Y,selectors:[["ngb-typeahead-window"]],hostAttrs:["role","listbox"],hostVars:3,hostBindings:function(w,q){1&w&&r.NdJ("mousedown",function(ut){return ut.preventDefault()}),2&w&&(r.Ikx("id",q.id),r.Tol("dropdown-menu show"+(q.popupClass?" "+q.popupClass:"")))},inputs:{focusFirst:"focusFirst",formatter:"formatter",id:"id",results:"results",term:"term",resultTemplate:"resultTemplate",popupClass:"popupClass"},outputs:{selectEvent:"select",activeChangeEvent:"activeChange"},exportAs:["ngbTypeaheadWindow"],decls:3,vars:1,consts:[["rt",""],["ngFor","",3,"ngForOf"],[3,"result","term"],["type","button","role","option",1,"dropdown-item",3,"id","mouseenter","click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(w,q){1&w&&(r.YNc(0,$e,1,2,"ng-template",null,0,r.W1O),r.YNc(2,ei,2,9,"ng-template",1)),2&w&&(r.xp6(2),r.Q6J("ngForOf",q.results))},directives:[u.sg,nh,u.tP],encapsulation:2}),Y})();const vf=new r.OlP("live announcer delay",{providedIn:"root",factory:function(){return 100}});function $d(Y,fe=!1){let w=Y.body.querySelector("#ngb-live");return null==w&&fe&&(w=Y.createElement("div"),w.setAttribute("id","ngb-live"),w.setAttribute("aria-live","polite"),w.setAttribute("aria-atomic","true"),w.classList.add("sr-only"),Y.body.appendChild(w)),w}let pp=(()=>{class Y{constructor(w,q){this._document=w,this._delay=q}ngOnDestroy(){const w=$d(this._document);w&&w.parentElement.removeChild(w)}say(w){const q=$d(this._document,!0),Fe=this._delay;if(null!=q){q.textContent="";const ut=()=>q.textContent=w;null===Fe?ut():setTimeout(ut,Fe)}}}return Y.\u0275fac=function(w){return new(w||Y)(r.LFG(u.K0),r.LFG(vf))},Y.\u0275prov=r.Yz7({factory:function(){return new Y(r.LFG(u.K0),r.LFG(vf))},token:Y,providedIn:"root"}),Y})(),Bf=(()=>{class Y{constructor(){this.editable=!0,this.focusFirst=!0,this.showHint=!1,this.placement=["bottom-left","bottom-right","top-left","top-right"]}}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275prov=r.Yz7({factory:function(){return new Y},token:Y,providedIn:"root"}),Y})(),Kd=0,oc=(()=>{class Y{constructor(w,q,Fe,ut,Xn,Fr,gi,Wi,Po,Ns,ts,Is){this._elementRef=w,this._renderer=Fe,this._live=Wi,this._document=Po,this._ngZone=Ns,this._changeDetector=ts,this._subscription=null,this._closed$=new he.xQ,this._inputValueBackup=null,this._windowRef=null,this.autocomplete="off",this.placement="bottom-left",this.selectItem=new r.vpe,this.activeDescendant=null,this.popupId="ngb-typeahead-"+Kd++,this._onTouched=()=>{},this._onChange=ya=>{},this.container=Fr.container,this.editable=Fr.editable,this.focusFirst=Fr.focusFirst,this.showHint=Fr.showHint,this.placement=Fr.placement,this._valueChanges=(0,me.R)(w.nativeElement,"input").pipe((0,mt.U)(ya=>ya.target.value)),this._resubscribeTypeahead=new ce.X(null),this._popupService=new Id(xh,ut,q,Fe,this._ngZone,Xn,Is),this._zoneSubscription=gi.onStable.subscribe(()=>{this.isPopupOpen()&&Be(this._elementRef.nativeElement,this._windowRef.location.nativeElement,this.placement,"body"===this.container)})}ngOnInit(){this._subscribeToUserInput()}ngOnChanges({ngbTypeahead:w}){w&&!w.firstChange&&(this._unsubscribeFromUserInput(),this._subscribeToUserInput())}ngOnDestroy(){this._closePopup(),this._unsubscribeFromUserInput(),this._zoneSubscription.unsubscribe()}registerOnChange(w){this._onChange=w}registerOnTouched(w){this._onTouched=w}writeValue(w){this._writeInputValue(this._formatItemForInput(w)),this.showHint&&(this._inputValueBackup=w)}setDisabledState(w){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",w)}dismissPopup(){this.isPopupOpen()&&(this._resubscribeTypeahead.next(null),this._closePopup(),this.showHint&&null!==this._inputValueBackup&&this._writeInputValue(this._inputValueBackup),this._changeDetector.markForCheck())}isPopupOpen(){return null!=this._windowRef}handleBlur(){this._resubscribeTypeahead.next(null),this._onTouched()}handleKeyDown(w){if(this.isPopupOpen())switch(w.which){case ki.ArrowDown:w.preventDefault(),this._windowRef.instance.next(),this._showHint();break;case ki.ArrowUp:w.preventDefault(),this._windowRef.instance.prev(),this._showHint();break;case ki.Enter:case ki.Tab:const q=this._windowRef.instance.getActive();Ea(q)&&(w.preventDefault(),w.stopPropagation(),this._selectResult(q)),this._closePopup()}}_openPopup(){if(!this.isPopupOpen()){this._inputValueBackup=this._elementRef.nativeElement.value;const{windowRef:w}=this._popupService.open();this._windowRef=w,this._windowRef.instance.id=this.popupId,this._windowRef.instance.selectEvent.subscribe(q=>this._selectResultClosePopup(q)),this._windowRef.instance.activeChangeEvent.subscribe(q=>this.activeDescendant=q),this._windowRef.instance.popupClass=this.popupClass,"body"===this.container&&this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement),this._changeDetector.markForCheck(),ca(this._ngZone,this._document,"outside",()=>this.dismissPopup(),this._closed$,[this._elementRef.nativeElement,this._windowRef.location.nativeElement])}}_closePopup(){this._popupService.close().subscribe(()=>{this._closed$.next(),this._windowRef=null,this.activeDescendant=null})}_selectResult(w){let q=!1;this.selectItem.emit({item:w,preventDefault:()=>{q=!0}}),this._resubscribeTypeahead.next(null),q||(this.writeValue(w),this._onChange(w))}_selectResultClosePopup(w){this._selectResult(w),this._closePopup()}_showHint(){var w;if(this.showHint&&(null===(w=this._windowRef)||void 0===w?void 0:w.instance.hasActive())&&null!=this._inputValueBackup){const q=this._inputValueBackup.toLowerCase(),Fe=this._formatItemForInput(this._windowRef.instance.getActive());q===Fe.substr(0,this._inputValueBackup.length).toLowerCase()?(this._writeInputValue(this._inputValueBackup+Fe.substr(this._inputValueBackup.length)),this._elementRef.nativeElement.setSelectionRange.apply(this._elementRef.nativeElement,[this._inputValueBackup.length,Fe.length])):this._writeInputValue(Fe)}}_formatItemForInput(w){return null!=w&&this.inputFormatter?this.inputFormatter(w):Oi(w)}_writeInputValue(w){this._renderer.setProperty(this._elementRef.nativeElement,"value",Oi(w))}_subscribeToUserInput(){const w=this._valueChanges.pipe((0,Yn.b)(q=>{this._inputValueBackup=this.showHint?q:null,this._onChange(this.editable?q:void 0)}),this.ngbTypeahead?this.ngbTypeahead:()=>(0,oe.of)([]));this._subscription=this._resubscribeTypeahead.pipe((0,zt.w)(()=>w)).subscribe(q=>{q&&0!==q.length?(this._openPopup(),this._windowRef.instance.focusFirst=this.focusFirst,this._windowRef.instance.results=q,this._windowRef.instance.term=this._elementRef.nativeElement.value,this.resultFormatter&&(this._windowRef.instance.formatter=this.resultFormatter),this.resultTemplate&&(this._windowRef.instance.resultTemplate=this.resultTemplate),this._windowRef.instance.resetActive(),this._windowRef.changeDetectorRef.detectChanges(),this._showHint()):this._closePopup();const Fe=q?q.length:0;this._live.say(0===Fe?"No results available":`${Fe} result${1===Fe?"":"s"} available`)})}_unsubscribeFromUserInput(){this._subscription&&this._subscription.unsubscribe(),this._subscription=null}}return Y.\u0275fac=function(w){return new(w||Y)(r.Y36(r.SBq),r.Y36(r.s_b),r.Y36(r.Qsj),r.Y36(r.zs3),r.Y36(r._Vd),r.Y36(Bf),r.Y36(r.R0b),r.Y36(pp),r.Y36(u.K0),r.Y36(r.R0b),r.Y36(r.sBO),r.Y36(r.z2F))},Y.\u0275dir=r.lG2({type:Y,selectors:[["input","ngbTypeahead",""]],hostAttrs:["autocapitalize","off","autocorrect","off","role","combobox","aria-multiline","false"],hostVars:7,hostBindings:function(w,q){1&w&&r.NdJ("blur",function(){return q.handleBlur()})("keydown",function(ut){return q.handleKeyDown(ut)}),2&w&&(r.Ikx("autocomplete",q.autocomplete),r.uIk("aria-autocomplete",q.showHint?"both":"list")("aria-activedescendant",q.activeDescendant)("aria-owns",q.isPopupOpen()?q.popupId:null)("aria-expanded",q.isPopupOpen()),r.ekj("open",q.isPopupOpen()))},inputs:{autocomplete:"autocomplete",placement:"placement",container:"container",editable:"editable",focusFirst:"focusFirst",showHint:"showHint",inputFormatter:"inputFormatter",ngbTypeahead:"ngbTypeahead",resultFormatter:"resultFormatter",resultTemplate:"resultTemplate",popupClass:"popupClass"},outputs:{selectItem:"selectItem"},exportAs:["ngbTypeahead"],features:[r._Bn([{provide:wr.JU,useExisting:(0,r.Gpc)(()=>Y),multi:!0}]),r.TTD]}),Y})(),rh=(()=>{class Y{}return Y.\u0275fac=function(w){return new(w||Y)},Y.\u0275mod=r.oAB({type:Y}),Y.\u0275inj=r.cJS({imports:[[u.ez]]}),Y})()},84051:(v,S,i)=>{"use strict";i.d(S,{vq:()=>po,ii:()=>ir,Ke:()=>fo,nE:()=>Bs,dX:()=>zo,$7:()=>cs,AR:()=>Vi,xD:()=>Co,Sr:()=>qo,Hg:()=>mr});var r=i(74788),u=i(12057),p=i(79765),f=i(22759),e=i(26215),_=i(46782),y=i(64762);const T=["*"];function M(tt,on){1&tt&&r._UZ(0,"datatable-progress")}function R(tt,on){if(1&tt&&r._UZ(0,"datatable-summary-row",9),2&tt){const ne=r.oxw(2);r.Q6J("rowHeight",ne.summaryHeight)("offsetX",ne.offsetX)("innerWidth",ne.innerWidth)("rows",ne.rows)("columns",ne.columns)}}function F(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-body-row",13),r.NdJ("treeAction",function(){r.CHM(ne);const Pt=r.oxw().$implicit;return r.oxw(2).onTreeAction(Pt)})("activate",function(Pt){r.CHM(ne);const sn=r.oxw().index,ei=r.oxw(2);return r.MAs(2).onActivate(Pt,ei.indexes.first+sn)}),r.qZA()}if(2&tt){const ne=r.oxw().$implicit,$e=r.oxw(2),Pt=r.MAs(2);r.Q6J("isSelected",Pt.getRowSelected(ne))("innerWidth",$e.innerWidth)("offsetX",$e.offsetX)("columns",$e.columns)("rowHeight",$e.getRowHeight(ne))("row",ne)("rowIndex",$e.getRowIndex(ne))("expanded",$e.getRowExpanded(ne))("rowClass",$e.rowClass)("displayCheck",$e.displayCheck)("treeStatus",ne&&ne.treeStatus)}}function Z(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-body-row",15),r.NdJ("activate",function(Pt){const ei=r.CHM(ne).index;return r.oxw(4),r.MAs(2).onActivate(Pt,ei)}),r.qZA()}if(2&tt){const ne=on.$implicit,$e=r.oxw(2).$implicit,Pt=r.oxw(2),sn=r.MAs(2);r.Q6J("isSelected",sn.getRowSelected(ne))("innerWidth",Pt.innerWidth)("offsetX",Pt.offsetX)("columns",Pt.columns)("rowHeight",Pt.getRowHeight(ne))("row",ne)("group",$e.value)("rowIndex",Pt.getRowIndex(ne))("expanded",Pt.getRowExpanded(ne))("rowClass",Pt.rowClass)}}function J(tt,on){if(1&tt&&r.YNc(0,Z,1,10,"datatable-body-row",14),2&tt){const ne=r.oxw().$implicit,$e=r.oxw(2);r.Q6J("ngForOf",ne.value)("ngForTrackBy",$e.rowTrackingFn)}}function Q(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-row-wrapper",10),r.NdJ("rowContextmenu",function(Pt){return r.CHM(ne),r.oxw(2).rowContextmenu.emit(Pt)}),r.YNc(1,F,1,11,"datatable-body-row",11),r.YNc(2,J,1,2,"ng-template",null,12,r.W1O),r.qZA()}if(2&tt){const ne=on.$implicit,$e=on.index,Pt=r.MAs(3),sn=r.oxw(2);r.Q6J("groupedRows",sn.groupedRows)("innerWidth",sn.innerWidth)("ngStyle",sn.getRowsStyles(ne))("rowDetail",sn.rowDetail)("groupHeader",sn.groupHeader)("offsetX",sn.offsetX)("detailRowHeight",sn.getDetailRowHeight(ne&&ne[$e],$e))("row",ne)("expanded",sn.getRowExpanded(ne))("rowIndex",sn.getRowIndex(ne&&ne[$e])),r.xp6(1),r.Q6J("ngIf",!sn.groupedRows)("ngIfElse",Pt)}}function ee(tt,on){if(1&tt&&r._UZ(0,"datatable-summary-row",16),2&tt){const ne=r.oxw(2);r.Q6J("ngStyle",ne.getBottomSummaryRowStyles())("rowHeight",ne.summaryHeight)("offsetX",ne.offsetX)("innerWidth",ne.innerWidth)("rows",ne.rows)("columns",ne.columns)}}function ue(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-scroller",5),r.NdJ("scroll",function(Pt){return r.CHM(ne),r.oxw().onBodyScroll(Pt)}),r.YNc(1,R,1,5,"datatable-summary-row",6),r.YNc(2,Q,4,12,"datatable-row-wrapper",7),r.YNc(3,ee,1,6,"datatable-summary-row",8),r.qZA()}if(2&tt){const ne=r.oxw();r.Q6J("scrollbarV",ne.scrollbarV)("scrollbarH",ne.scrollbarH)("scrollHeight",ne.scrollHeight)("scrollWidth",null==ne.columnGroupWidths?null:ne.columnGroupWidths.total),r.xp6(1),r.Q6J("ngIf",ne.summaryRow&&"top"===ne.summaryPosition),r.xp6(1),r.Q6J("ngForOf",ne.temp)("ngForTrackBy",ne.rowTrackingFn),r.xp6(1),r.Q6J("ngIf",ne.summaryRow&&"bottom"===ne.summaryPosition)}}function ae(tt,on){if(1&tt&&r._UZ(0,"div",17),2&tt){const ne=r.oxw();r.Q6J("innerHTML",ne.emptyMessage,r.oJD)}}function $(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-header-cell",4),r.NdJ("resize",function(Pt){const ei=r.CHM(ne).$implicit;return r.oxw(2).onColumnResized(Pt,ei)})("longPressStart",function(Pt){return r.CHM(ne),r.oxw(2).onLongPressStart(Pt)})("longPressEnd",function(Pt){return r.CHM(ne),r.oxw(2).onLongPressEnd(Pt)})("sort",function(Pt){return r.CHM(ne),r.oxw(2).onSort(Pt)})("select",function(Pt){return r.CHM(ne),r.oxw(2).select.emit(Pt)})("columnContextmenu",function(Pt){return r.CHM(ne),r.oxw(2).columnContextmenu.emit(Pt)}),r.qZA()}if(2&tt){const ne=on.$implicit,$e=r.oxw(2);r.Q6J("resizeEnabled",ne.resizeable)("pressModel",ne)("pressEnabled",$e.reorderable&&ne.draggable)("dragX",$e.reorderable&&ne.draggable&&ne.dragging)("dragY",!1)("dragModel",ne)("dragEventTarget",$e.dragEventTarget)("headerHeight",$e.headerHeight)("isTarget",ne.isTarget)("targetMarkerTemplate",$e.targetMarkerTemplate)("targetMarkerContext",ne.targetMarkerContext)("column",ne)("sortType",$e.sortType)("sorts",$e.sorts)("selectionType",$e.selectionType)("sortAscendingIcon",$e.sortAscendingIcon)("sortDescendingIcon",$e.sortDescendingIcon)("sortUnsetIcon",$e.sortUnsetIcon)("allRowsSelected",$e.allRowsSelected)}}function se(tt,on){if(1&tt&&(r.TgZ(0,"div",2),r.YNc(1,$,1,19,"datatable-header-cell",3),r.qZA()),2&tt){const ne=on.$implicit,$e=r.oxw();r.Tol("datatable-row-"+ne.type),r.Q6J("ngStyle",$e._styleByGroup[ne.type]),r.xp6(1),r.Q6J("ngForOf",ne.columns)("ngForTrackBy",$e.columnTrackingFn)}}function ve(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-header",4),r.NdJ("sort",function(Pt){return r.CHM(ne),r.oxw().onColumnSort(Pt)})("resize",function(Pt){return r.CHM(ne),r.oxw().onColumnResize(Pt)})("reorder",function(Pt){return r.CHM(ne),r.oxw().onColumnReorder(Pt)})("select",function(Pt){return r.CHM(ne),r.oxw().onHeaderSelect(Pt)})("columnContextmenu",function(Pt){return r.CHM(ne),r.oxw().onColumnContextmenu(Pt)}),r.ALo(1,"async"),r.qZA()}if(2&tt){const ne=r.oxw();r.Q6J("sorts",ne.sorts)("sortType",ne.sortType)("scrollbarH",ne.scrollbarH)("innerWidth",ne._innerWidth)("offsetX",r.lcZ(1,15,ne._offsetX))("dealsWithGroup",void 0!==ne.groupedRows)("columns",ne._internalColumns)("headerHeight",ne.headerHeight)("reorderable",ne.reorderable)("targetMarkerTemplate",ne.targetMarkerTemplate)("sortAscendingIcon",ne.cssClasses.sortAscending)("sortDescendingIcon",ne.cssClasses.sortDescending)("sortUnsetIcon",ne.cssClasses.sortUnset)("allRowsSelected",ne.allRowsSelected)("selectionType",ne.selectionType)}}function oe(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-footer",5),r.NdJ("page",function(Pt){return r.CHM(ne),r.oxw().onFooterPage(Pt)}),r.qZA()}if(2&tt){const ne=r.oxw();r.Q6J("rowCount",ne.rowCount)("pageSize",ne.pageSize)("offset",ne.offset)("footerHeight",ne.footerHeight)("footerTemplate",ne.footer)("totalMessage",ne.messages.totalMessage)("pagerLeftArrowIcon",ne.cssClasses.pagerLeftArrow)("pagerRightArrowIcon",ne.cssClasses.pagerRightArrow)("pagerPreviousIcon",ne.cssClasses.pagerPrevious)("selectedCount",ne.selected.length)("selectedMessage",!!ne.selectionType&&ne.messages.selectedMessage)("pagerNextIcon",ne.cssClasses.pagerNext)}}function he(tt,on){}function me(tt,on){if(1&tt&&r.YNc(0,he,0,0,"ng-template",5),2&tt){const ne=r.oxw();r.Q6J("ngTemplateOutlet",ne.targetMarkerTemplate)("ngTemplateOutletContext",ne.targetMarkerContext)}}function Oe(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"label",6),r.TgZ(1,"input",7),r.NdJ("change",function(){r.CHM(ne);const Pt=r.oxw();return Pt.select.emit(!Pt.allRowsSelected)}),r.qZA(),r.qZA()}if(2&tt){const ne=r.oxw();r.xp6(1),r.Q6J("checked",ne.allRowsSelected)}}function ce(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"span",8),r.TgZ(1,"span",9),r.NdJ("click",function(){return r.CHM(ne),r.oxw().onSort()}),r.qZA(),r.qZA()}if(2&tt){const ne=r.oxw();r.xp6(1),r.Q6J("innerHTML",ne.name,r.oJD)}}function dt(tt,on){}function ze(tt,on){if(1&tt&&r.YNc(0,dt,0,0,"ng-template",5),2&tt){const ne=r.oxw();r.Q6J("ngTemplateOutlet",ne.column.headerTemplate)("ngTemplateOutletContext",ne.cellContext)}}function Ye(tt,on){}const je=function(tt,on,ne,$e,Pt){return{rowCount:tt,pageSize:on,selectedCount:ne,curPage:$e,offset:Pt}};function Ie(tt,on){if(1&tt&&r.YNc(0,Ye,0,0,"ng-template",4),2&tt){const ne=r.oxw();r.Q6J("ngTemplateOutlet",ne.footerTemplate.template)("ngTemplateOutletContext",r.qbA(2,je,ne.rowCount,ne.pageSize,ne.selectedCount,ne.curPage,ne.offset))}}function Ve(tt,on){if(1&tt&&(r.TgZ(0,"span"),r._uU(1),r.qZA()),2&tt){const ne=r.oxw(2);r.xp6(1),r.AsE(" ",null==ne.selectedCount?null:ne.selectedCount.toLocaleString()," ",ne.selectedMessage," / ")}}function He(tt,on){if(1&tt&&(r.TgZ(0,"div",5),r.YNc(1,Ve,2,2,"span",1),r._uU(2),r.qZA()),2&tt){const ne=r.oxw();r.xp6(1),r.Q6J("ngIf",ne.selectedMessage),r.xp6(1),r.AsE(" ",null==ne.rowCount?null:ne.rowCount.toLocaleString()," ",ne.totalMessage," ")}}function Zt(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-pager",6),r.NdJ("change",function(Pt){return r.CHM(ne),r.oxw().page.emit(Pt)}),r.qZA()}if(2&tt){const ne=r.oxw();r.Q6J("pagerLeftArrowIcon",ne.pagerLeftArrowIcon)("pagerRightArrowIcon",ne.pagerRightArrowIcon)("pagerPreviousIcon",ne.pagerPreviousIcon)("pagerNextIcon",ne.pagerNextIcon)("page",ne.curPage)("size",ne.pageSize)("count",ne.rowCount)("hidden",!ne.isVisible)}}const st=function(tt){return{"selected-count":tt}};function en(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"li",6),r.TgZ(1,"a",7),r.NdJ("click",function(){const sn=r.CHM(ne).$implicit;return r.oxw().selectPage(sn.number)}),r._uU(2),r.qZA(),r.qZA()}if(2&tt){const ne=on.$implicit,$e=r.oxw();r.ekj("active",ne.number===$e.page),r.uIk("aria-label","page "+ne.number),r.xp6(2),r.hij(" ",ne.text," ")}}function $t(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"datatable-body-cell",3),r.NdJ("activate",function(Pt){const ei=r.CHM(ne).index;return r.oxw(2).onActivate(Pt,ei)})("treeAction",function(){return r.CHM(ne),r.oxw(2).onTreeAction()}),r.qZA()}if(2&tt){const ne=on.$implicit,$e=r.oxw(2);r.Q6J("row",$e.row)("group",$e.group)("expanded",$e.expanded)("isSelected",$e.isSelected)("rowIndex",$e.rowIndex)("column",ne)("rowHeight",$e.rowHeight)("displayCheck",$e.displayCheck)("treeStatus",$e.treeStatus)}}function Gt(tt,on){if(1&tt&&(r.TgZ(0,"div",1),r.YNc(1,$t,1,9,"datatable-body-cell",2),r.qZA()),2&tt){const ne=on.$implicit,$e=r.oxw();r.Gre("datatable-row-",ne.type," datatable-row-group"),r.Q6J("ngStyle",$e._groupStyles[ne.type]),r.xp6(1),r.Q6J("ngForOf",ne.columns)("ngForTrackBy",$e.columnTrackingFn)}}function Ut(tt,on){}function Bt(tt,on){if(1&tt&&r.YNc(0,Ut,0,0,"ng-template",4),2&tt){const ne=r.oxw(2);r.Q6J("ngTemplateOutlet",ne.groupHeader.template)("ngTemplateOutletContext",ne.groupContext)}}function mt(tt,on){if(1&tt&&(r.TgZ(0,"div",3),r.YNc(1,Bt,1,2,void 0,1),r.qZA()),2&tt){const ne=r.oxw();r.Q6J("ngStyle",ne.getGroupHeaderStyle()),r.xp6(1),r.Q6J("ngIf",ne.groupHeader&&ne.groupHeader.template)}}function Yt(tt,on){1&tt&&r.Hsn(0,0,["*ngIf","(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template"])}function Dt(tt,on){}function zt(tt,on){if(1&tt&&r.YNc(0,Dt,0,0,"ng-template",4),2&tt){const ne=r.oxw(2);r.Q6J("ngTemplateOutlet",ne.rowDetail.template)("ngTemplateOutletContext",ne.rowContext)}}function Yn(tt,on){if(1&tt&&(r.TgZ(0,"div",5),r.YNc(1,zt,1,2,void 0,1),r.qZA()),2&tt){const ne=r.oxw();r.Udp("height",ne.detailRowHeight,"px"),r.xp6(1),r.Q6J("ngIf",ne.rowDetail&&ne.rowDetail.template)}}const Hr=["cellTemplate"];function ci(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"label",4),r.TgZ(1,"input",5),r.NdJ("click",function(Pt){return r.CHM(ne),r.oxw().onCheckboxChange(Pt)}),r.qZA(),r.qZA()}if(2&tt){const ne=r.oxw();r.xp6(1),r.Q6J("checked",ne.isSelected)}}function Ir(tt,on){1&tt&&r._UZ(0,"i",11)}function wr(tt,on){1&tt&&r._UZ(0,"i",12)}function Qr(tt,on){1&tt&&r._UZ(0,"i",13)}function Kr(tt,on){if(1&tt){const ne=r.EpF();r.TgZ(0,"button",7),r.NdJ("click",function(){return r.CHM(ne),r.oxw(2).onTreeAction()}),r.TgZ(1,"span"),r.YNc(2,Ir,1,0,"i",8),r.YNc(3,wr,1,0,"i",9),r.YNc(4,Qr,1,0,"i",10),r.qZA(),r.qZA()}if(2&tt){const ne=r.oxw(2);r.Q6J("disabled","disabled"===ne.treeStatus),r.xp6(2),r.Q6J("ngIf","loading"===ne.treeStatus),r.xp6(1),r.Q6J("ngIf","collapsed"===ne.treeStatus),r.xp6(1),r.Q6J("ngIf","expanded"===ne.treeStatus||"disabled"===ne.treeStatus)}}function In(tt,on){}const Hn=function(tt){return{cellContext:tt}};function Zr(tt,on){if(1&tt&&r.YNc(0,In,0,0,"ng-template",14),2&tt){const ne=r.oxw(2);r.Q6J("ngTemplateOutlet",ne.column.treeToggleTemplate)("ngTemplateOutletContext",r.VKq(2,Hn,ne.cellContext))}}function Ur(tt,on){if(1&tt&&(r.ynx(0),r.YNc(1,Kr,5,4,"button",6),r.YNc(2,Zr,1,4,void 0,2),r.BQk()),2&tt){const ne=r.oxw();r.xp6(1),r.Q6J("ngIf",!ne.column.treeToggleTemplate),r.xp6(1),r.Q6J("ngIf",ne.column.treeToggleTemplate)}}function di(tt,on){if(1&tt&&r._UZ(0,"span",15),2&tt){const ne=r.oxw();r.Q6J("title",ne.sanitizedValue)("innerHTML",ne.value,r.oJD)}}function $i(tt,on){}function Hi(tt,on){if(1&tt&&r.YNc(0,$i,0,0,"ng-template",14,16,r.W1O),2&tt){const ne=r.oxw();r.Q6J("ngTemplateOutlet",ne.column.cellTemplate)("ngTemplateOutletContext",ne.cellContext)}}function Br(tt,on){if(1&tt&&r._UZ(0,"datatable-body-row",1),2&tt){const ne=r.oxw();r.Q6J("innerWidth",ne.innerWidth)("offsetX",ne.offsetX)("columns",ne._internalColumns)("rowHeight",ne.rowHeight)("row",ne.summaryRow)("rowIndex",-1)}}let On=(()=>{class tt{constructor(ne){this.document=ne,this.width=this.getWidth()}getWidth(){const ne=this.document.createElement("div");ne.style.visibility="hidden",ne.style.width="100px",ne.style.msOverflowStyle="scrollbar",this.document.body.appendChild(ne);const $e=ne.offsetWidth;ne.style.overflow="scroll";const Pt=this.document.createElement("div");Pt.style.width="100%",ne.appendChild(Pt);const sn=Pt.offsetWidth;return ne.parentNode.removeChild(ne),$e-sn}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.LFG(u.K0))},tt.\u0275prov=r.Yz7({token:tt,factory:tt.\u0275fac}),tt})(),Wt=(()=>{class tt{getDimensions(ne){return ne.getBoundingClientRect()}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275prov=r.Yz7({token:tt,factory:tt.\u0275fac}),tt})(),Jn=(()=>{class tt{constructor(){this.columnInputChanges=new p.xQ}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275prov=r.Yz7({token:tt,factory:tt.\u0275fac}),tt})(),ir=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-footer-template",""]]}),tt})(),Lr=(()=>{class tt{constructor(ne,$e){this.element=ne,this.zone=$e,this.isVisible=!1,this.visible=new r.vpe}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const ne=()=>{const{offsetHeight:$e,offsetWidth:Pt}=this.element.nativeElement;$e&&Pt?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>ne(),50)}))};this.timeout=setTimeout(()=>ne())}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.SBq),r.Y36(r.R0b))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","visibilityObserver",""]],hostVars:2,hostBindings:function(ne,$e){2&ne&&r.ekj("visible",$e.isVisible)},outputs:{visible:"visible"}}),tt})(),Vn=(()=>{class tt{constructor(ne){this.dragX=!0,this.dragY=!0,this.dragStart=new r.vpe,this.dragging=new r.vpe,this.dragEnd=new r.vpe,this.isDragging=!1,this.element=ne.nativeElement}ngOnChanges(ne){ne.dragEventTarget&&ne.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(ne.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(ne){!this.isDragging||(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:ne,element:this.element,model:this.dragModel})))}onMousedown(ne){if(ne.target.classList.contains("draggable")&&(this.dragX||this.dragY)){ne.preventDefault(),this.isDragging=!0;const Pt={x:ne.clientX,y:ne.clientY},sn=(0,f.R)(document,"mouseup");this.subscription=sn.subscribe(fi=>this.onMouseup(fi));const ei=(0,f.R)(document,"mousemove").pipe((0,_.R)(sn)).subscribe(fi=>this.move(fi,Pt));this.subscription.add(ei),this.dragStart.emit({event:ne,element:this.element,model:this.dragModel})}}move(ne,$e){if(!this.isDragging)return;const sn=ne.clientY-$e.y;this.dragX&&(this.element.style.left=ne.clientX-$e.x+"px"),this.dragY&&(this.element.style.top=`${sn}px`),this.element.classList.add("dragging"),this.dragging.emit({event:ne,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.SBq))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","draggable",""]],inputs:{dragX:"dragX",dragY:"dragY",dragEventTarget:"dragEventTarget",dragModel:"dragModel"},outputs:{dragStart:"dragStart",dragging:"dragging",dragEnd:"dragEnd"},features:[r.TTD]}),tt})(),zr=(()=>{class tt{constructor(ne,$e){this.renderer=$e,this.resizeEnabled=!0,this.resize=new r.vpe,this.resizing=!1,this.element=ne.nativeElement}ngAfterViewInit(){const ne=this.renderer;this.resizeHandle=ne.createElement("span"),ne.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),ne.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.resizeHandle&&this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(ne){const $e=ne.target.classList.contains("resize-handle"),Pt=this.element.clientWidth,sn=ne.screenX;if($e){ne.stopPropagation(),this.resizing=!0;const ei=(0,f.R)(document,"mouseup");this.subscription=ei.subscribe(Oi=>this.onMouseup());const fi=(0,f.R)(document,"mousemove").pipe((0,_.R)(ei)).subscribe(Oi=>this.move(Oi,Pt,sn));this.subscription.add(fi)}}move(ne,$e,Pt){const ei=$e+(ne.screenX-Pt);(!this.minWidth||ei>=this.minWidth)&&(!this.maxWidth||ei<=this.maxWidth)&&(this.element.style.width=`${ei}px`)}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.SBq),r.Y36(r.Qsj))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","resizeable",""]],hostVars:2,hostBindings:function(ne,$e){1&ne&&r.NdJ("mousedown",function(sn){return $e.onMousedown(sn)}),2&ne&&r.ekj("resizeable",$e.resizeEnabled)},inputs:{resizeEnabled:"resizeEnabled",minWidth:"minWidth",maxWidth:"maxWidth"},outputs:{resize:"resize"}}),tt})(),hi=(()=>{class tt{constructor(ne,$e){this.document=$e,this.reorder=new r.vpe,this.targetChanged=new r.vpe,this.differ=ne.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(ne=>{ne.dragStart.unsubscribe(),ne.dragging.unsubscribe(),ne.dragEnd.unsubscribe()})}updateSubscriptions(){const ne=this.differ.diff(this.createMapDiffs());if(ne){const $e=({currentValue:sn,previousValue:ei})=>{Pt({previousValue:ei}),sn&&(sn.dragStart.subscribe(this.onDragStart.bind(this)),sn.dragging.subscribe(this.onDragging.bind(this)),sn.dragEnd.subscribe(this.onDragEnd.bind(this)))},Pt=({previousValue:sn})=>{sn&&(sn.dragStart.unsubscribe(),sn.dragging.unsubscribe(),sn.dragEnd.unsubscribe())};ne.forEachAddedItem($e),ne.forEachRemovedItem(Pt)}}onDragStart(){this.positions={};let ne=0;for(const $e of this.draggables.toArray()){const Pt=$e.element,sn=parseInt(Pt.offsetLeft.toString(),0);this.positions[$e.dragModel.prop]={left:sn,right:sn+parseInt(Pt.offsetWidth.toString(),0),index:ne++,element:Pt}}}onDragging({model:$e,event:Pt}){const sn=this.positions[$e.prop],ei=this.isTarget($e,Pt);ei?this.lastDraggingIndex!==ei.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:ei.i,initialIndex:sn.index}),this.lastDraggingIndex=ei.i):this.lastDraggingIndex!==sn.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:sn.index}),this.lastDraggingIndex=sn.index)}onDragEnd({element:ne,model:$e,event:Pt}){const sn=this.positions[$e.prop],ei=this.isTarget($e,Pt);ei&&this.reorder.emit({prevIndex:sn.index,newIndex:ei.i,model:$e}),this.lastDraggingIndex=void 0,ne.style.left="auto"}isTarget(ne,$e){let Pt=0;const fi=this.document.elementsFromPoint($e.x||$e.clientX,$e.y||$e.clientY);for(const Oi in this.positions){const os=this.positions[Oi];if(ne.prop!==Oi&&fi.find(Ro=>Ro===os.element))return{pos:os,i:Pt};Pt++}}createMapDiffs(){return this.draggables.toArray().reduce((ne,$e)=>(ne[$e.dragModel.$$id]=$e,ne),{})}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.aQg),r.Y36(u.K0))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","orderable",""]],contentQueries:function(ne,$e,Pt){if(1&ne&&r.Suo(Pt,Vn,5),2&ne){let sn;r.iGM(sn=r.CRH())&&($e.draggables=sn)}},outputs:{reorder:"reorder",targetChanged:"targetChanged"}}),tt})(),Ai=(()=>{class tt{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new r.vpe,this.longPressing=new r.vpe,this.longPressEnd=new r.vpe,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(ne){if(1!==ne.which||!this.pressEnabled||ne.target.classList.contains("resize-handle"))return;this.mouseX=ne.clientX,this.mouseY=ne.clientY,this.pressing=!0,this.isLongPressing=!1;const Pt=(0,f.R)(document,"mouseup");this.subscription=Pt.subscribe(sn=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:ne,model:this.pressModel}),this.subscription.add((0,f.R)(document,"mousemove").pipe((0,_.R)(Pt)).subscribe(sn=>this.onMouseMove(sn))),this.loop(ne)},this.duration),this.loop(ne)}onMouseMove(ne){if(this.pressing&&!this.isLongPressing){const $e=Math.abs(ne.clientX-this.mouseX)>10,Pt=Math.abs(ne.clientY-this.mouseY)>10;($e||Pt)&&this.endPress()}}loop(ne){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:ne,model:this.pressModel}),this.loop(ne)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275dir=r.lG2({type:tt,selectors:[["","long-press",""]],hostVars:4,hostBindings:function(ne,$e){1&ne&&r.NdJ("mousedown",function(sn){return $e.onMouseDown(sn)}),2&ne&&r.ekj("press",$e.press)("longpress",$e.isLongPress)},inputs:{pressEnabled:"pressEnabled",duration:"duration",pressModel:"pressModel"},outputs:{longPressStart:"longPressStart",longPressing:"longPressing",longPressEnd:"longPressEnd"}}),tt})(),Tr=(()=>{class tt{constructor(ne,$e,Pt){this.ngZone=ne,this.renderer=Pt,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new r.vpe,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=$e.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const ne=this.renderer;this.parentElement=ne.parentNode(ne.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(ne){this.parentElement&&(this.parentElement.scrollTop=ne)}onScrolled(ne){const $e=ne.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=$e.scrollTop,this.scrollXPos=$e.scrollLeft,this.updateOffset()})}updateOffset(){let ne;this.scrollYPos<this.prevScrollYPos?ne="down":this.scrollYPos>this.prevScrollYPos&&(ne="up"),this.scroll.emit({direction:ne,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.R0b),r.Y36(r.SBq),r.Y36(r.Qsj))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-scroller"]],hostAttrs:[1,"datatable-scroll"],hostVars:4,hostBindings:function(ne,$e){2&ne&&r.Udp("height",$e.scrollHeight,"px")("width",$e.scrollWidth,"px")},inputs:{scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",scrollHeight:"scrollHeight",scrollWidth:"scrollWidth"},outputs:{scroll:"scroll"},ngContentSelectors:T,decls:1,vars:0,template:function(ne,$e){1&ne&&(r.F$t(),r.Hsn(0))},encapsulation:2,changeDetection:0}),tt})(),Nr=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-group-header-template",""]]}),tt})(),gn=(()=>{class tt{constructor(){this.rowHeight=0,this.toggle=new r.vpe}get template(){return this._templateInput||this._templateQuery}toggleExpandGroup(ne){this.toggle.emit({type:"group",value:ne})}expandAllGroups(){this.toggle.emit({type:"all",value:!0})}collapseAllGroups(){this.toggle.emit({type:"all",value:!1})}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275dir=r.lG2({type:tt,selectors:[["ngx-datatable-group-header"]],contentQueries:function(ne,$e,Pt){if(1&ne&&r.Suo(Pt,Nr,7,r.Rgc),2&ne){let sn;r.iGM(sn=r.CRH())&&($e._templateQuery=sn.first)}},inputs:{rowHeight:"rowHeight",_templateInput:["template","_templateInput"]},outputs:{toggle:"toggle"}}),tt})();function En(){return""}function mr(tt){return null==tt?En:"number"==typeof tt?Xt:-1!==tt.indexOf(".")?vr:zn}function Xt(tt,on){if(null==tt)return"";if(!tt||null==on)return tt;const ne=tt[on];return null==ne?"":ne}function zn(tt,on){if(null==tt)return"";if(!tt||!on)return tt;const ne=tt[on];return null==ne?"":ne}function vr(tt,on){if(null==tt)return"";if(!tt||!on)return tt;let ne=tt[on];if(void 0!==ne)return ne;ne=tt;const $e=on.split(".");if($e.length)for(let Pt=0;Pt<$e.length;Pt++)if(ne=ne[$e[Pt]],null==ne)return"";return ne}function si(tt){return tt&&(on=>mr(tt)(on,tt))}function Ii(tt,on,ne){if(on&&ne){const $e={},Pt=tt.length;let sn=null;$e[0]=new no;const ei=tt.reduce((Oi,os)=>{const Ro=ne(os);return-1===Oi.indexOf(Ro)&&Oi.push(Ro),Oi},[]);for(let Oi=0;Oi<Pt;Oi++)$e[ne(tt[Oi])]=new no(tt[Oi]);for(let Oi=0;Oi<Pt;Oi++){sn=$e[ne(tt[Oi])];let os=0;const Ro=on(sn.row);!!Ro&&ei.indexOf(Ro)>-1&&(os=Ro),sn.parent=$e[os],sn.row.level=sn.parent.row.level+1,sn.parent.children.push(sn)}let fi=[];return $e[0].flatten(function(){fi=[...fi,this.row]},!0),fi}return tt}class no{constructor(on=null){on||(on={level:-1,treeStatus:"expanded"}),this.row=on,this.parent=null,this.children=[]}flatten(on,ne){if("expanded"===this.row.treeStatus)for(let $e=0,Pt=this.children.length;$e<Pt;$e++){const sn=this.children[$e];on.apply(sn,Array.prototype.slice.call(arguments,2)),ne&&sn.flatten.apply(sn,arguments)}}}function so(tt){return(tt=(tt=(tt=tt.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,function(on,ne,$e){return ne.trim()+$e.toUpperCase()})}function Ze(tt){return tt.replace(/([A-Z])/g,on=>` ${on}`).replace(/^./,on=>on.toUpperCase())}function jt(tt){if(!tt)return;let on=!1;for(const ne of tt)ne.$$id||(ne.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),xt(ne.prop)&&ne.name&&(ne.prop=so(ne.name)),ne.$$valueGetter||(ne.$$valueGetter=mr(ne.prop)),!xt(ne.prop)&&xt(ne.name)&&(ne.name=Ze(String(ne.prop))),xt(ne.prop)&&xt(ne.name)&&(ne.name=""),ne.hasOwnProperty("resizeable")||(ne.resizeable=!0),ne.hasOwnProperty("sortable")||(ne.sortable=!0),ne.hasOwnProperty("draggable")||(ne.draggable=!0),ne.hasOwnProperty("canAutoResize")||(ne.canAutoResize=!0),ne.hasOwnProperty("width")||(ne.width=150),ne.hasOwnProperty("isTreeColumn")&&ne.isTreeColumn&&!on?on=!0:ne.isTreeColumn=!1}function xt(tt){return null==tt}var Wn=(()=>{return(tt=Wn||(Wn={})).standard="standard",tt.flex="flex",tt.force="force",Wn;var tt})(),kn=(()=>{return(tt=kn||(kn={})).single="single",tt.multi="multi",tt.multiClick="multiClick",tt.cell="cell",tt.checkbox="checkbox",kn;var tt})(),wn=(()=>{return(tt=wn||(wn={})).single="single",tt.multi="multi",wn;var tt})(),nr=(()=>{return(tt=nr||(nr={})).header="header",tt.body="body",nr;var tt})();let Gi=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-header-template",""]]}),tt})(),po=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-cell-template",""]]}),tt})(),yo=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-tree-toggle",""]]}),tt})(),Mo=(()=>{class tt{constructor(ne){this.columnChangesService=ne,this.isFirstChange=!0}get cellTemplate(){return this._cellTemplateInput||this._cellTemplateQuery}get headerTemplate(){return this._headerTemplateInput||this._headerTemplateQuery}get treeToggleTemplate(){return this._treeToggleTemplateInput||this._treeToggleTemplateQuery}ngOnChanges(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(Jn))},tt.\u0275dir=r.lG2({type:tt,selectors:[["ngx-datatable-column"]],contentQueries:function(ne,$e,Pt){if(1&ne&&(r.Suo(Pt,po,7,r.Rgc),r.Suo(Pt,Gi,7,r.Rgc),r.Suo(Pt,yo,7,r.Rgc)),2&ne){let sn;r.iGM(sn=r.CRH())&&($e._cellTemplateQuery=sn.first),r.iGM(sn=r.CRH())&&($e._headerTemplateQuery=sn.first),r.iGM(sn=r.CRH())&&($e._treeToggleTemplateQuery=sn.first)}},inputs:{name:"name",prop:"prop",frozenLeft:"frozenLeft",frozenRight:"frozenRight",flexGrow:"flexGrow",resizeable:"resizeable",comparator:"comparator",pipe:"pipe",sortable:"sortable",draggable:"draggable",canAutoResize:"canAutoResize",minWidth:"minWidth",width:"width",maxWidth:"maxWidth",checkboxable:"checkboxable",headerCheckboxable:"headerCheckboxable",headerClass:"headerClass",cellClass:"cellClass",isTreeColumn:"isTreeColumn",treeLevelIndent:"treeLevelIndent",summaryFunc:"summaryFunc",summaryTemplate:"summaryTemplate",_cellTemplateInput:["cellTemplate","_cellTemplateInput"],_headerTemplateInput:["headerTemplate","_headerTemplateInput"],_treeToggleTemplateInput:["treeToggleTemplate","_treeToggleTemplateInput"]},features:[r.TTD]}),tt})(),Vi=(()=>{class tt{constructor(ne){this.template=ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.Rgc))},tt.\u0275dir=r.lG2({type:tt,selectors:[["","ngx-datatable-row-detail-template",""]]}),tt})(),cs=(()=>{class tt{constructor(){this.rowHeight=0,this.toggle=new r.vpe}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(ne){this.toggle.emit({type:"row",value:ne})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275dir=r.lG2({type:tt,selectors:[["ngx-datatable-row-detail"]],contentQueries:function(ne,$e,Pt){if(1&ne&&r.Suo(Pt,Vi,7,r.Rgc),2&ne){let sn;r.iGM(sn=r.CRH())&&($e._templateQuery=sn.first)}},inputs:{rowHeight:"rowHeight",_templateInput:["template","_templateInput"]},outputs:{toggle:"toggle"}}),tt})(),zo=(()=>{class tt{get template(){return this._templateInput||this._templateQuery}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275dir=r.lG2({type:tt,selectors:[["ngx-datatable-footer"]],contentQueries:function(ne,$e,Pt){if(1&ne&&r.Suo(Pt,ir,5,r.Rgc),2&ne){let sn;r.iGM(sn=r.CRH())&&($e._templateQuery=sn.first)}},inputs:{footerHeight:"footerHeight",totalMessage:"totalMessage",selectedMessage:"selectedMessage",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon",_templateInput:["template","_templateInput"]}}),tt})();function So(tt){const on={left:[],center:[],right:[]};if(tt)for(const ne of tt)ne.frozenLeft?on.left.push(ne):ne.frozenRight?on.right.push(ne):on.center.push(ne);return on}function Si(tt,on){return{left:ai(tt.left),center:ai(tt.center),right:ai(tt.right),total:Math.floor(ai(on))}}function ai(tt,on){let ne=0;if(tt)for(const $e of tt)ne+=parseFloat(on&&$e[on]?$e[on]:$e.width);return ne}function cr(tt){const on=[],ne=So(tt);return on.push({type:"left",columns:ne.left}),on.push({type:"center",columns:ne.center}),on.push({type:"right",columns:ne.right}),on}class yr{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(on){const{rows:ne,rowHeight:$e,detailRowHeight:Pt,externalVirtual:sn,rowCount:ei,rowIndexes:fi,rowExpansions:Oi}=on,os="function"==typeof $e,Ro="function"==typeof Pt;if(!os&&isNaN($e))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${$e}) when 'scrollbarV' is enabled.`);if(!Ro&&isNaN(Pt))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${Pt}) when 'scrollbarV' is enabled.`);const Uo=sn?ei:ne.length;this.treeArray=new Array(Uo);for(let To=0;To<Uo;++To)this.treeArray[To]=0;for(let To=0;To<Uo;++To){const Ea=ne[To];let al=$e;os&&(al=$e(Ea));const qu=Oi.has(Ea);Ea&&qu&&(al+=Ro?Pt(Ea,fi.get(Ea)):Pt),this.update(To,al)}}getRowIndex(on){return 0===on?0:this.calcRowIndex(on)}update(on,ne){if(!this.treeArray.length)throw new Error(`Update at index ${on} with value ${ne} failed:\n        Row Height cache not initialized.`);const $e=this.treeArray.length;for(on|=0;on<$e;)this.treeArray[on]+=ne,on|=on+1}query(on){if(!this.treeArray.length)throw new Error(`query at index ${on} failed: Fenwick tree array not initialized.`);let ne=0;for(on|=0;on>=0;)ne+=this.treeArray[on],on=(on&on+1)-1;return ne}queryBetween(on,ne){return this.query(ne)-this.query(on-1)}calcRowIndex(on){if(!this.treeArray.length)return 0;let ne=-1;const $e=this.treeArray.length;for(let sn=Math.pow(2,$e.toString(2).length-1);0!==sn;sn>>=1){const ei=ne+sn;ei<$e&&on>=this.treeArray[ei]&&(on-=this.treeArray[ei],ne=ei)}return ne+1}}const rr={},ri="undefined"!=typeof document?document.createElement("div").style:void 0,Ti=function(){const tt="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,on=void 0!==tt?Array.prototype.slice.call(tt).join("").match(/-(moz|webkit|ms)-/):null,ne=null!==on?on[1]:void 0,$e=void 0!==ne?"WebKit|Moz|MS|O".match(new RegExp("("+ne+")","i"))[1]:void 0;return $e?{dom:$e,lowercase:ne,css:`-${ne}-`,js:ne[0].toUpperCase()+ne.substr(1)}:void 0}();function Bo(tt){const on=so(tt);return rr[on]||(void 0!==Ti&&void 0!==ri[Ti.css+tt]?rr[on]=Ti.css+tt:void 0!==ri[tt]&&(rr[on]=tt)),rr[on]}const xo="undefined"!=typeof window?Bo("transform"):void 0,Li="undefined"!=typeof window?Bo("backfaceVisibility"):void 0,ar="undefined"!=typeof window?!!Bo("transform"):void 0,ln="undefined"!=typeof window?!!Bo("perspective"):void 0,Ht="undefined"!=typeof window?window.navigator.userAgent:"Chrome",cn=/Safari\//.test(Ht)&&!/Chrome\//.test(Ht);function Ct(tt,on,ne){void 0!==xo&&ar?!cn&&ln?(tt[xo]=`translate3d(${on}px, ${ne}px, 0)`,tt[Li]="hidden"):tt[so(xo)]=`translate(${on}px, ${ne}px)`:(tt.top=`${ne}px`,tt.left=`${on}px`)}let pr=(()=>{class tt{constructor(ne){this.cd=ne,this.selected=[],this.scroll=new r.vpe,this.page=new r.vpe,this.activate=new r.vpe,this.select=new r.vpe,this.detailToggle=new r.vpe,this.rowContextmenu=new r.vpe(!1),this.treeAction=new r.vpe,this.rowHeightsCache=new yr,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new WeakMap,this.rowExpansions=[],this.getDetailRowHeight=($e,Pt)=>{if(!this.rowDetail)return 0;const sn=this.rowDetail.rowHeight;return"function"==typeof sn?sn($e,Pt):sn},this.rowTrackingFn=($e,Pt)=>{const sn=this.getRowIndex(Pt);return this.trackByProp?Pt[this.trackByProp]:sn}}set pageSize(ne){this._pageSize=ne,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(ne){this._rows=ne,this.recalcLayout()}get rows(){return this._rows}set columns(ne){this._columns=ne;const $e=So(ne);this.columnGroupWidths=Si($e,ne)}get columns(){return this._columns}set offset(ne){this._offset=ne,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(ne){this._rowCount=ne,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(ne){this._bodyHeight=this.scrollbarV?ne+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:ne,value:$e})=>{"row"===ne&&this.toggleRowExpansion($e),"all"===ne&&this.toggleAllRows($e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:ne,value:$e})=>{"group"===ne&&this.toggleRowExpansion($e),"all"===ne&&this.toggleAllRows($e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(ne){this.scroller&&(this.scrollbarV&&this.virtualization&&ne?ne=this.rowHeightsCache.query(this.pageSize*ne-1):this.scrollbarV&&!this.virtualization&&(ne=0),this.scroller.setOffset(ne||0))}onBodyScroll(ne){const $e=ne.scrollYPos,Pt=ne.scrollXPos;(this.offsetY!==$e||this.offsetX!==Pt)&&this.scroll.emit({offsetY:$e,offsetX:Pt}),this.offsetY=$e,this.offsetX=Pt,this.updateIndexes(),this.updatePage(ne.direction),this.updateRows()}updatePage(ne){let $e=this.indexes.first/this.pageSize;"up"===ne?$e=Math.ceil($e):"down"===ne&&($e=Math.floor($e)),void 0!==ne&&!isNaN($e)&&this.page.emit({offset:$e})}updateRows(){const{first:ne,last:$e}=this.indexes;let Pt=ne,sn=0;const ei=[];if(this.groupedRows){let fi=3;for(1===this.groupedRows.length&&(fi=this.groupedRows[0].value.length);Pt<$e&&Pt<this.groupedRows.length;){const Oi=this.groupedRows[Pt];this.rowIndexes.set(Oi,Pt),Oi.value&&Oi.value.forEach((os,Ro)=>{this.rowIndexes.set(os,`${Pt}-${Ro}`)}),ei[sn]=Oi,sn++,Pt++}}else for(;Pt<$e&&Pt<this.rowCount;){const fi=this.rows[Pt];fi&&(this.rowIndexes.set(fi,Pt),ei[sn]=fi),sn++,Pt++}this.temp=ei}getRowHeight(ne){return"function"==typeof this.rowHeight?this.rowHeight(ne):this.rowHeight}getGroupHeight(ne){let $e=0;if(ne.value)for(let Pt=0;Pt<ne.value.length;Pt++)$e+=this.getRowAndDetailHeight(ne.value[Pt]);return $e}getRowAndDetailHeight(ne){let $e=this.getRowHeight(ne);return this.getRowExpanded(ne)&&($e+=this.getDetailRowHeight(ne)),$e}getRowsStyles(ne){const $e={};if(this.groupedRows&&($e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let Pt=0;if(this.groupedRows){const ei=ne[ne.length-1];Pt=ei?this.getRowIndex(ei):0}else Pt=this.getRowIndex(ne);Ct($e,0,this.rowHeightsCache.query(Pt-1))}return $e}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const ne={position:"absolute"};return Ct(ne,0,this.rowHeightsCache.query(this.rows.length-1)),ne}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let ne=0,$e=0;if(this.scrollbarV)if(this.virtualization){const Pt=parseInt(this.bodyHeight,0);ne=this.rowHeightsCache.getRowIndex(this.offsetY),$e=this.rowHeightsCache.getRowIndex(Pt+this.offsetY)+1}else ne=0,$e=this.rowCount;else this.externalPaging||(ne=Math.max(this.offset*this.pageSize,0)),$e=Math.min(ne+this.pageSize,this.rowCount);this.indexes={first:ne,last:$e}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const ne=new Set;for(const $e of this.rows)this.getRowExpanded($e)&&ne.add($e);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:ne})}}getAdjustedViewPortIndex(){const ne=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(ne-1)<=this.offsetY?ne-1:ne}toggleRowExpansion(ne){const $e=this.getAdjustedViewPortIndex(),Pt=this.getRowExpandedIdx(ne,this.rowExpansions),sn=Pt>-1;if(this.scrollbarV&&this.virtualization){const ei=this.getDetailRowHeight(ne)*(sn?-1:1),fi=this.getRowIndex(ne);this.rowHeightsCache.update(fi,ei)}sn?this.rowExpansions.splice(Pt,1):this.rowExpansions.push(ne),this.detailToggle.emit({rows:[ne],currentIndex:$e})}toggleAllRows(ne){this.rowExpansions=[];const $e=this.getAdjustedViewPortIndex();if(ne)for(const Pt of this.rows)this.rowExpansions.push(Pt);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:$e})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(ne,$e){return $e.$$id}stylesByGroup(ne){const $e=this.columnGroupWidths,Pt=this.offsetX,sn={width:`${$e[ne]}px`};if("left"===ne)Ct(sn,Pt,0);else if("right"===ne){const ei=parseInt(this.innerWidth+"",0);Ct(sn,-1*($e.total-ei-Pt),0)}return sn}getRowExpanded(ne){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const $e of this.groupedRows)this.rowExpansions.push($e);return this.getRowExpandedIdx(ne,this.rowExpansions)>-1}getRowExpandedIdx(ne,$e){if(!$e||!$e.length)return-1;const Pt=this.rowIdentity(ne);return $e.findIndex(sn=>this.rowIdentity(sn)===Pt)}getRowIndex(ne){return this.rowIndexes.get(ne)||0}onTreeAction(ne){this.treeAction.emit({row:ne})}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.sBO))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-body"]],viewQuery:function(ne,$e){if(1&ne&&r.Gf(Tr,5),2&ne){let Pt;r.iGM(Pt=r.CRH())&&($e.scroller=Pt.first)}},hostAttrs:[1,"datatable-body"],hostVars:4,hostBindings:function(ne,$e){2&ne&&r.Udp("width",$e.bodyWidth)("height",$e.bodyHeight)},inputs:{selected:"selected",pageSize:"pageSize",rows:"rows",columns:"columns",offset:"offset",rowCount:"rowCount",bodyHeight:"bodyHeight",offsetX:"offsetX",loadingIndicator:"loadingIndicator",scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",externalPaging:"externalPaging",rowHeight:"rowHeight",emptyMessage:"emptyMessage",selectionType:"selectionType",rowIdentity:"rowIdentity",rowDetail:"rowDetail",groupHeader:"groupHeader",selectCheck:"selectCheck",displayCheck:"displayCheck",trackByProp:"trackByProp",rowClass:"rowClass",groupedRows:"groupedRows",groupExpansionDefault:"groupExpansionDefault",innerWidth:"innerWidth",groupRowsBy:"groupRowsBy",virtualization:"virtualization",summaryRow:"summaryRow",summaryPosition:"summaryPosition",summaryHeight:"summaryHeight"},outputs:{scroll:"scroll",page:"page",activate:"activate",select:"select",detailToggle:"detailToggle",rowContextmenu:"rowContextmenu",treeAction:"treeAction"},decls:5,vars:9,consts:[[4,"ngIf"],[3,"selected","rows","selectCheck","selectEnabled","selectionType","rowIdentity","select","activate"],["selector",""],[3,"scrollbarV","scrollbarH","scrollHeight","scrollWidth","scroll",4,"ngIf"],["class","empty-row",3,"innerHTML",4,"ngIf"],[3,"scrollbarV","scrollbarH","scrollHeight","scrollWidth","scroll"],[3,"rowHeight","offsetX","innerWidth","rows","columns",4,"ngIf"],[3,"groupedRows","innerWidth","ngStyle","rowDetail","groupHeader","offsetX","detailRowHeight","row","expanded","rowIndex","rowContextmenu",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle","rowHeight","offsetX","innerWidth","rows","columns",4,"ngIf"],[3,"rowHeight","offsetX","innerWidth","rows","columns"],[3,"groupedRows","innerWidth","ngStyle","rowDetail","groupHeader","offsetX","detailRowHeight","row","expanded","rowIndex","rowContextmenu"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","rowIndex","expanded","rowClass","displayCheck","treeStatus","treeAction","activate",4,"ngIf","ngIfElse"],["groupedRowsTemplate",""],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","rowIndex","expanded","rowClass","displayCheck","treeStatus","treeAction","activate"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","group","rowIndex","expanded","rowClass","activate",4,"ngFor","ngForOf","ngForTrackBy"],["tabindex","-1",3,"isSelected","innerWidth","offsetX","columns","rowHeight","row","group","rowIndex","expanded","rowClass","activate"],[3,"ngStyle","rowHeight","offsetX","innerWidth","rows","columns"],[1,"empty-row",3,"innerHTML"]],template:function(ne,$e){1&ne&&(r.YNc(0,M,1,0,"datatable-progress",0),r.TgZ(1,"datatable-selection",1,2),r.NdJ("select",function(sn){return $e.select.emit(sn)})("activate",function(sn){return $e.activate.emit(sn)}),r.YNc(3,ue,4,8,"datatable-scroller",3),r.YNc(4,ae,1,1,"div",4),r.qZA()),2&ne&&(r.Q6J("ngIf",$e.loadingIndicator),r.xp6(1),r.Q6J("selected",$e.selected)("rows",$e.rows)("selectCheck",$e.selectCheck)("selectEnabled",$e.selectEnabled)("selectionType",$e.selectionType)("rowIdentity",$e.rowIdentity),r.xp6(2),r.Q6J("ngIf",null==$e.rows?null:$e.rows.length),r.xp6(1),r.Q6J("ngIf",!(null!=$e.rows&&$e.rows.length||$e.loadingIndicator)))},directives:function(){return[u.O5,Fo,Da,Tr,u.sg,ms,gs,u.PC,ls]},encapsulation:2,changeDetection:0}),tt})(),nn=(()=>{class tt{constructor(ne){this.cd=ne,this.sort=new r.vpe,this.reorder=new r.vpe,this.resize=new r.vpe,this.select=new r.vpe,this.columnContextmenu=new r.vpe(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(ne){this._innerWidth=ne,setTimeout(()=>{if(this._columns){const $e=So(this._columns);this._columnGroupWidths=Si($e,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(ne){this._headerHeight="auto"!==ne?`${ne}px`:ne}get headerHeight(){return this._headerHeight}set columns(ne){this._columns=ne;const $e=So(ne);this._columnsByPin=cr(ne),setTimeout(()=>{this._columnGroupWidths=Si($e,ne),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(ne){this._offsetX=ne,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:ne,model:$e}){$e.dragging=!0,this.dragEventTarget=ne}onLongPressEnd({event:ne,model:$e}){this.dragEventTarget=ne,setTimeout(()=>{const Pt=this._columns.find(sn=>sn.$$id===$e.$$id);Pt&&(Pt.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(ne,$e){return $e.type}columnTrackingFn(ne,$e){return $e.$$id}onColumnResized(ne,$e){ne<=$e.minWidth?ne=$e.minWidth:ne>=$e.maxWidth&&(ne=$e.maxWidth),this.resize.emit({column:$e,prevValue:$e.width,newValue:ne})}onColumnReordered({prevIndex:ne,newIndex:$e,model:Pt}){const sn=this.getColumn($e);sn.isTarget=!1,sn.targetMarkerContext=void 0,this.reorder.emit({column:Pt,prevValue:ne,newValue:$e})}onTargetChanged({prevIndex:ne,newIndex:$e,initialIndex:Pt}){if(ne||0===ne){const sn=this.getColumn(ne);sn.isTarget=!1,sn.targetMarkerContext=void 0}if($e||0===$e){const sn=this.getColumn($e);sn.isTarget=!0,Pt!==$e&&(sn.targetMarkerContext={class:"targetMarker ".concat(Pt>$e?"dragFromRight":"dragFromLeft")})}}getColumn(ne){const $e=this._columnsByPin[0].columns.length;if(ne<$e)return this._columnsByPin[0].columns[ne];const Pt=this._columnsByPin[1].columns.length;return ne<$e+Pt?this._columnsByPin[1].columns[ne-$e]:this._columnsByPin[2].columns[ne-$e-Pt]}onSort({column:ne,prevValue:$e,newValue:Pt}){if(ne.dragging)return;const sn=this.calcNewSorts(ne,$e,Pt);this.sort.emit({sorts:sn,column:ne,prevValue:$e,newValue:Pt})}calcNewSorts(ne,$e,Pt){let sn=0;this.sorts||(this.sorts=[]);const ei=this.sorts.map((fi,Oi)=>((fi=Object.assign({},fi)).prop===ne.prop&&(sn=Oi),fi));return void 0===Pt?ei.splice(sn,1):$e?ei[sn].dir=Pt:(this.sortType===wn.single&&ei.splice(0,this.sorts.length),ei.push({dir:Pt,prop:ne.prop})),ei}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(ne){const $e=this._columnGroupWidths,sn={width:`${$e[ne]}px`};return"center"===ne?Ct(sn,-1*this.offsetX,0):"right"===ne&&Ct(sn,-1*($e.total-this.innerWidth),0),sn}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.sBO))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-header"]],hostAttrs:[1,"datatable-header"],hostVars:4,hostBindings:function(ne,$e){2&ne&&r.Udp("height",$e.headerHeight)("width",$e.headerWidth)},inputs:{innerWidth:"innerWidth",headerHeight:"headerHeight",columns:"columns",offsetX:"offsetX",sorts:"sorts",sortAscendingIcon:"sortAscendingIcon",sortDescendingIcon:"sortDescendingIcon",sortUnsetIcon:"sortUnsetIcon",scrollbarH:"scrollbarH",dealsWithGroup:"dealsWithGroup",targetMarkerTemplate:"targetMarkerTemplate",sortType:"sortType",allRowsSelected:"allRowsSelected",selectionType:"selectionType",reorderable:"reorderable"},outputs:{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"},decls:2,vars:4,consts:[["orderable","",1,"datatable-header-inner",3,"reorder","targetChanged"],[3,"class","ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle"],["resizeable","","long-press","","draggable","",3,"resizeEnabled","pressModel","pressEnabled","dragX","dragY","dragModel","dragEventTarget","headerHeight","isTarget","targetMarkerTemplate","targetMarkerContext","column","sortType","sorts","selectionType","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","resize","longPressStart","longPressEnd","sort","select","columnContextmenu",4,"ngFor","ngForOf","ngForTrackBy"],["resizeable","","long-press","","draggable","",3,"resizeEnabled","pressModel","pressEnabled","dragX","dragY","dragModel","dragEventTarget","headerHeight","isTarget","targetMarkerTemplate","targetMarkerContext","column","sortType","sorts","selectionType","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","resize","longPressStart","longPressEnd","sort","select","columnContextmenu"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.NdJ("reorder",function(sn){return $e.onColumnReordered(sn)})("targetChanged",function(sn){return $e.onTargetChanged(sn)}),r.YNc(1,se,2,5,"div",1),r.qZA()),2&ne&&(r.Udp("width",$e._columnGroupWidths.total,"px"),r.xp6(1),r.Q6J("ngForOf",$e._columnsByPin)("ngForTrackBy",$e.trackByGroups))},directives:function(){return[hi,u.sg,u.PC,Yl,zr,Ai,Vn]},encapsulation:2,changeDetection:0}),tt})();function Cn(tt,on,ne){ne=ne||{};let $e,Pt,sn,ei=null,fi=0;function Oi(){fi=!1===ne.leading?0:+new Date,ei=null,sn=tt.apply($e,Pt)}return function(){const os=+new Date;!fi&&!1===ne.leading&&(fi=os);const Ro=on-(os-fi);return $e=this,Pt=arguments,Ro<=0?(clearTimeout(ei),ei=null,fi=os,sn=tt.apply($e,Pt)):!ei&&!1!==ne.trailing&&(ei=setTimeout(Oi,Ro)),sn}}function br(tt,on){return function($e,Pt,sn){return{configurable:!0,enumerable:sn.enumerable,get:function(){return Object.defineProperty(this,Pt,{configurable:!0,enumerable:sn.enumerable,value:Cn(sn.value,tt,on)}),this[Pt]}}}}function _s(tt,on){for(const ne of on){const $e=tt.indexOf(ne);tt.splice($e,1)}}function bs(tt,on=300){let ne=0;for(const $e of tt)ne+=$e.width||on;return ne}var qo=(()=>{return(tt=qo||(qo={})).asc="asc",tt.desc="desc",qo;var tt})();function Ia(tt,on){if(null==tt&&(tt=0),null==on&&(on=0),tt instanceof Date&&on instanceof Date){if(tt<on)return-1;if(tt>on)return 1}else if(isNaN(parseFloat(tt))||!isFinite(tt)||isNaN(parseFloat(on))||!isFinite(on)){if(tt=String(tt),on=String(on),tt.toLowerCase()<on.toLowerCase())return-1;if(tt.toLowerCase()>on.toLowerCase())return 1}else{if(parseFloat(tt)<parseFloat(on))return-1;if(parseFloat(tt)>parseFloat(on))return 1}return 0}let Bs=(()=>{class tt{constructor(ne,$e,Pt,sn,ei,fi,Oi){this.scrollbarHelper=ne,this.dimensionsHelper=$e,this.cd=Pt,this.columnChangesService=fi,this.configuration=Oi,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=Wn.standard,this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType=wn.single,this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",sortUnset:"datatable-icon-sort-unset",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new r.vpe,this.activate=new r.vpe,this.select=new r.vpe,this.sort=new r.vpe,this.page=new r.vpe,this.reorder=new r.vpe,this.resize=new r.vpe,this.tableContextmenu=new r.vpe(!1),this.treeAction=new r.vpe,this.rowCount=0,this._offsetX=new e.X(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=os=>this._groupRowsBy?os.key:os,this.element=sn.nativeElement,this.rowDiffer=ei.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(ne){this._rows=ne,ne&&(this._internalRows=[...ne]),this.externalSorting||this.sortInternalRows(),this._internalRows=Ii(this._internalRows,si(this.treeFromRelation),si(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(ne){ne&&(this._groupRowsBy=ne,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(ne){ne&&(this._internalColumns=[...ne],jt(this._internalColumns),this.recalculateColumns()),this._columns=ne}get columns(){return this._columns}set limit(ne){this._limit=ne,this.recalculate()}get limit(){return this._limit}set count(ne){this._count=ne,this.recalculate()}get count(){return this._count}set offset(ne){this._offset=ne}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const ne=this.headerHeight;return"string"!=typeof ne||"auto"!==ne}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return this.selectionType===kn.checkbox}get isCellSelection(){return this.selectionType===kn.cell}get isSingleSelection(){return this.selectionType===kn.single}get isMultiSelection(){return this.selectionType===kn.multi}get isMultiClickSelection(){return this.selectionType===kn.multiClick}set columnTemplates(ne){this._columnTemplates=ne,this.translateColumns(ne)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let ne=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.bodyComponent&&this.selectAllRowsOnPage){const $e=this.bodyComponent.indexes;ne=this.selected.length===$e.last-$e.first}return this.selected&&this.rows&&0!==this.rows.length&&ne}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(ne=>this.translateColumns(ne)),this.listenForColumnInputChanges()}translateColumns(ne){if(ne){const $e=ne.toArray();$e.length&&(this._internalColumns=function(tt){const on=[];for(const ne of tt){const $e={},Pt=Object.getOwnPropertyNames(ne);for(const sn of Pt)$e[sn]=ne[sn];ne.headerTemplate&&($e.headerTemplate=ne.headerTemplate),ne.cellTemplate&&($e.cellTemplate=ne.cellTemplate),ne.summaryFunc&&($e.summaryFunc=ne.summaryFunc),ne.summaryTemplate&&($e.summaryTemplate=ne.summaryTemplate),on.push($e)}return on}($e),jt(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(ne,$e){const Pt=new Map;return ne.forEach(fi=>{const Oi=fi[$e];Pt.has(Oi)?Pt.get(Oi).push(fi):Pt.set(Oi,[fi])}),Array.from(Pt,fi=>((fi,Oi)=>({key:fi,value:Oi}))(fi[0],fi[1]))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=Ii(this._internalRows,si(this.treeFromRelation),si(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns(),this.cd.markForCheck()}onWindowResize(){this.recalculate()}recalculateColumns(ne=this._internalColumns,$e=-1,Pt=this.scrollbarH){if(!ne)return;let sn=this._innerWidth;return this.scrollbarV&&(sn-=this.scrollbarHelper.width),this.columnMode===Wn.force?function(tt,on,ne,$e,Pt=300){const sn=tt.slice(ne+1,tt.length).filter(To=>!1!==To.canAutoResize);for(const To of sn)To.$$oldWidth||(To.$$oldWidth=To.width);let ei=0,fi=!1,Oi=bs(tt,Pt),os=on-Oi;const Ro=[];do{ei=os/sn.length,fi=Oi>=on;for(const To of sn){if(fi&&$e)To.width=To.$$oldWidth||To.width||Pt;else{const Ea=(To.width||Pt)+ei;To.minWidth&&Ea<To.minWidth?(To.width=To.minWidth,Ro.push(To)):To.maxWidth&&Ea>To.maxWidth?(To.width=To.maxWidth,Ro.push(To)):To.width=Ea}To.width=Math.max(0,To.width)}Oi=bs(tt),os=on-Oi,_s(sn,Ro)}while(os>1&&0!==sn.length)}(ne,sn,$e,Pt):this.columnMode===Wn.flex&&function(tt,on){const ne=function(tt,on){let ne=0;for(const $e of tt)ne+=$e.width;return ne}(tt),$e=function(tt){let on=0;for(const ne of tt)on+=ne.flexGrow||0;return on}(tt),Pt=So(tt);ne!==on&&function(tt,on,ne){for(const sn in tt)for(const ei of tt[sn])ei.canAutoResize?ei.width=0:(on-=ei.width,ne-=ei.flexGrow?ei.flexGrow:0);const $e={};let Pt=on;do{const sn=Pt/ne;Pt=0;for(const ei in tt)for(const fi of tt[ei])if(fi.canAutoResize&&!$e[fi.prop]){const Oi=fi.width+fi.flexGrow*sn;void 0!==fi.minWidth&&Oi<fi.minWidth?(Pt+=Oi-fi.minWidth,fi.width=fi.minWidth,$e[fi.prop]=!0):fi.width=Oi}}while(0!==Pt)}(Pt,on,$e)}(ne,sn),ne}recalculateDims(){const ne=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(ne.width),this.scrollbarV){let $e=ne.height;this.headerHeight&&($e-=this.headerHeight),this.footerHeight&&($e-=this.footerHeight),this.bodyHeight=$e}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:ne}){this.externalPaging&&!this.virtualization||(this.offset=ne,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(ne){this._offsetX.next(ne.offsetX),this.scroll.emit(ne),this.cd.detectChanges()}onFooterPage(ne){this.offset=ne.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(ne=this.rows){if(this.scrollbarV&&this.virtualization){const $e=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max($e,0)}return void 0!==this.limit?this.limit:ne?ne.length:0}calcRowCount(ne=this.rows){return this.externalPaging?this.count:ne?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:ne.length:0}onColumnContextmenu({event:ne,column:$e}){this.tableContextmenu.emit({event:ne,type:nr.header,content:$e})}onRowContextmenu({event:ne,row:$e}){this.tableContextmenu.emit({event:ne,type:nr.body,content:$e})}onColumnResize({column:ne,newValue:$e}){if(void 0===ne)return;let Pt;const sn=this._internalColumns.map((ei,fi)=>((ei=Object.assign({},ei)).$$id===ne.$$id&&(Pt=fi,ei.width=$e,ei.$$oldWidth=$e),ei));this.recalculateColumns(sn,Pt),this._internalColumns=sn,this.resize.emit({column:ne,newValue:$e})}onColumnReorder({column:ne,newValue:$e,prevValue:Pt}){const sn=this._internalColumns.map(ei=>Object.assign({},ei));if(this.swapColumns){const ei=sn[$e];sn[$e]=ne,sn[Pt]=ei}else if($e>Pt){const ei=sn[Pt];for(let fi=Pt;fi<$e;fi++)sn[fi]=sn[fi+1];sn[$e]=ei}else{const ei=sn[Pt];for(let fi=Pt;fi>$e;fi--)sn[fi]=sn[fi-1];sn[$e]=ei}this._internalColumns=sn,this.reorder.emit({column:ne,newValue:$e,prevValue:Pt})}onColumnSort(ne){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=ne.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=Ii(this._internalRows,si(this.treeFromRelation),si(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(ne)}onHeaderSelect(ne){if(this.bodyComponent&&this.selectAllRowsOnPage){const $e=this.bodyComponent.indexes.first,Pt=this.bodyComponent.indexes.last,sn=this.selected.length===Pt-$e;this.selected=[],sn||this.selected.push(...this._internalRows.slice($e,Pt))}else{const $e=this.selected.length===this.rows.length;this.selected=[],$e||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(ne){this.select.emit(ne)}onTreeAction(ne){const $e=ne.row,Pt=this._rows.findIndex(sn=>sn[this.treeToRelation]===ne.row[this.treeToRelation]);this.treeAction.emit({row:$e,rowIndex:Pt})}ngOnDestroy(){this._subscriptions.forEach(ne=>ne.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(tt,on,ne){if(!tt)return[];if(!ne||!ne.length||!on)return[...tt];const $e=new Map;tt.forEach((fi,Oi)=>$e.set(fi,Oi));const Pt=[...tt],sn=on.reduce((fi,Oi)=>(Oi.comparator&&"function"==typeof Oi.comparator&&(fi[Oi.prop]=Oi.comparator),fi),{}),ei=ne.map(fi=>{const Oi=fi.prop;return{prop:Oi,dir:fi.dir,valueGetter:mr(Oi),compareFn:sn[Oi]||Ia}});return Pt.sort(function(fi,Oi){for(const os of ei){const{prop:Ro,valueGetter:Uo}=os,To=Uo(fi,Ro),Ea=Uo(Oi,Ro),al=os.dir!==qo.desc?os.compareFn(To,Ea,fi,Oi,os.dir):-os.compareFn(To,Ea,fi,Oi,os.dir);if(0!==al)return al}return $e.has(fi)&&$e.has(Oi)?$e.get(fi)<$e.get(Oi)?-1:1:0})}(this._internalRows,this._internalColumns,this.sorts)}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(On,4),r.Y36(Wt,4),r.Y36(r.sBO),r.Y36(r.SBq),r.Y36(r.aQg),r.Y36(Jn),r.Y36("configuration",8))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["ngx-datatable"]],contentQueries:function(ne,$e,Pt){if(1&ne&&(r.Suo(Pt,cs,5),r.Suo(Pt,gn,5),r.Suo(Pt,zo,5),r.Suo(Pt,Mo,4)),2&ne){let sn;r.iGM(sn=r.CRH())&&($e.rowDetail=sn.first),r.iGM(sn=r.CRH())&&($e.groupHeader=sn.first),r.iGM(sn=r.CRH())&&($e.footer=sn.first),r.iGM(sn=r.CRH())&&($e.columnTemplates=sn)}},viewQuery:function(ne,$e){if(1&ne&&(r.Gf(pr,5),r.Gf(nn,5)),2&ne){let Pt;r.iGM(Pt=r.CRH())&&($e.bodyComponent=Pt.first),r.iGM(Pt=r.CRH())&&($e.headerComponent=Pt.first)}},hostAttrs:[1,"ngx-datatable"],hostVars:22,hostBindings:function(ne,$e){1&ne&&r.NdJ("resize",function(){return $e.onWindowResize()},!1,r.Jf7),2&ne&&r.ekj("fixed-header",$e.isFixedHeader)("fixed-row",$e.isFixedRow)("scroll-vertical",$e.isVertScroll)("virtualized",$e.isVirtualized)("scroll-horz",$e.isHorScroll)("selectable",$e.isSelectable)("checkbox-selection",$e.isCheckboxSelection)("cell-selection",$e.isCellSelection)("single-selection",$e.isSingleSelection)("multi-selection",$e.isMultiSelection)("multi-click-selection",$e.isMultiClickSelection)},inputs:{selected:"selected",scrollbarV:"scrollbarV",scrollbarH:"scrollbarH",rowHeight:"rowHeight",columnMode:"columnMode",headerHeight:"headerHeight",footerHeight:"footerHeight",externalPaging:"externalPaging",externalSorting:"externalSorting",loadingIndicator:"loadingIndicator",reorderable:"reorderable",swapColumns:"swapColumns",sortType:"sortType",sorts:"sorts",cssClasses:"cssClasses",messages:"messages",groupExpansionDefault:"groupExpansionDefault",selectAllRowsOnPage:"selectAllRowsOnPage",virtualization:"virtualization",summaryRow:"summaryRow",summaryHeight:"summaryHeight",summaryPosition:"summaryPosition",rowIdentity:"rowIdentity",rows:"rows",groupedRows:"groupedRows",groupRowsBy:"groupRowsBy",columns:"columns",limit:"limit",count:"count",offset:"offset",targetMarkerTemplate:"targetMarkerTemplate",selectionType:"selectionType",rowClass:"rowClass",selectCheck:"selectCheck",displayCheck:"displayCheck",trackByProp:"trackByProp",treeFromRelation:"treeFromRelation",treeToRelation:"treeToRelation"},outputs:{scroll:"scroll",activate:"activate",select:"select",sort:"sort",page:"page",reorder:"reorder",resize:"resize",tableContextmenu:"tableContextmenu",treeAction:"treeAction"},decls:5,vars:34,consts:[["visibilityObserver","",3,"visible"],[3,"sorts","sortType","scrollbarH","innerWidth","offsetX","dealsWithGroup","columns","headerHeight","reorderable","targetMarkerTemplate","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","selectionType","sort","resize","reorder","select","columnContextmenu",4,"ngIf"],[3,"groupRowsBy","groupedRows","rows","groupExpansionDefault","scrollbarV","scrollbarH","virtualization","loadingIndicator","externalPaging","rowHeight","rowCount","offset","trackByProp","columns","pageSize","offsetX","rowDetail","groupHeader","selected","innerWidth","bodyHeight","selectionType","emptyMessage","rowIdentity","rowClass","selectCheck","displayCheck","summaryRow","summaryHeight","summaryPosition","page","activate","rowContextmenu","select","scroll","treeAction"],[3,"rowCount","pageSize","offset","footerHeight","footerTemplate","totalMessage","pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","selectedCount","selectedMessage","pagerNextIcon","page",4,"ngIf"],[3,"sorts","sortType","scrollbarH","innerWidth","offsetX","dealsWithGroup","columns","headerHeight","reorderable","targetMarkerTemplate","sortAscendingIcon","sortDescendingIcon","sortUnsetIcon","allRowsSelected","selectionType","sort","resize","reorder","select","columnContextmenu"],[3,"rowCount","pageSize","offset","footerHeight","footerTemplate","totalMessage","pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","selectedCount","selectedMessage","pagerNextIcon","page"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.NdJ("visible",function(){return $e.recalculate()}),r.YNc(1,ve,2,17,"datatable-header",1),r.TgZ(2,"datatable-body",2),r.NdJ("page",function(sn){return $e.onBodyPage(sn)})("activate",function(sn){return $e.activate.emit(sn)})("rowContextmenu",function(sn){return $e.onRowContextmenu(sn)})("select",function(sn){return $e.onBodySelect(sn)})("scroll",function(sn){return $e.onBodyScroll(sn)})("treeAction",function(sn){return $e.onTreeAction(sn)}),r.ALo(3,"async"),r.qZA(),r.YNc(4,oe,1,12,"datatable-footer",3),r.qZA()),2&ne&&(r.xp6(1),r.Q6J("ngIf",$e.headerHeight),r.xp6(1),r.Q6J("groupRowsBy",$e.groupRowsBy)("groupedRows",$e.groupedRows)("rows",$e._internalRows)("groupExpansionDefault",$e.groupExpansionDefault)("scrollbarV",$e.scrollbarV)("scrollbarH",$e.scrollbarH)("virtualization",$e.virtualization)("loadingIndicator",$e.loadingIndicator)("externalPaging",$e.externalPaging)("rowHeight",$e.rowHeight)("rowCount",$e.rowCount)("offset",$e.offset)("trackByProp",$e.trackByProp)("columns",$e._internalColumns)("pageSize",$e.pageSize)("offsetX",r.lcZ(3,32,$e._offsetX))("rowDetail",$e.rowDetail)("groupHeader",$e.groupHeader)("selected",$e.selected)("innerWidth",$e._innerWidth)("bodyHeight",$e.bodyHeight)("selectionType",$e.selectionType)("emptyMessage",$e.messages.emptyMessage)("rowIdentity",$e.rowIdentity)("rowClass",$e.rowClass)("selectCheck",$e.selectCheck)("displayCheck",$e.displayCheck)("summaryRow",$e.summaryRow)("summaryHeight",$e.summaryHeight)("summaryPosition",$e.summaryPosition),r.xp6(2),r.Q6J("ngIf",$e.footerHeight))},directives:function(){return[Lr,u.O5,pr,nn,yl]},pipes:function(){return[u.Ov]},styles:[".ngx-datatable{display:block;justify-content:center;overflow:hidden;position:relative;transform:translateZ(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{-webkit-overflow-scrolling:touch;overflow-x:auto}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{-o-flex-flow:row;display:flex;flex-direction:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{display:inline-block;line-height:1.625;overflow-x:hidden;vertical-align:top}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{-webkit-align-items:stretch;align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{display:inline-block;position:relative}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{cursor:pointer;display:inline-block;line-height:100%;vertical-align:middle}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{bottom:0;display:inline-block;padding:0 4px;position:absolute;right:0;top:0;visibility:hidden;width:5px}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{bottom:0;position:absolute;top:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{display:block;position:relative;z-index:10}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;overflow:auto;width:100%}.ngx-datatable .datatable-footer .datatable-footer-inner{align-items:center;display:flex;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{display:inline-block;list-style:none;margin:0;padding:0}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],encapsulation:2,changeDetection:0}),(0,y.gn)([br(5)],tt.prototype,"onWindowResize",null),tt})(),Yl=(()=>{class tt{constructor(ne){this.cd=ne,this.sort=new r.vpe,this.select=new r.vpe,this.columnContextmenu=new r.vpe(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(ne){this._allRowsSelected=ne,this.cellContext.allRowsSelected=ne}get allRowsSelected(){return this._allRowsSelected}set column(ne){this._column=ne,this.cellContext.column=ne,this.cd.markForCheck()}get column(){return this._column}set sorts(ne){this._sorts=ne,this.sortDir=this.calcSortDir(ne),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let ne="datatable-header-cell";if(this.column.sortable&&(ne+=" sortable"),this.column.resizeable&&(ne+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)ne+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const Pt=this.column.headerClass({column:this.column});if("string"==typeof Pt)ne+=Pt;else if("object"==typeof Pt){const sn=Object.keys(Pt);for(const ei of sn)!0===Pt[ei]&&(ne+=` ${ei}`)}}const $e=this.sortDir;return $e&&(ne+=` sort-active sort-${$e}`),ne}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===kn.checkbox}onContextmenu(ne){this.columnContextmenu.emit({event:ne,column:this.column})}ngOnInit(){this.sortClass=this.calcSortClass(this.sortDir)}calcSortDir(ne){if(ne&&this.column){const $e=ne.find(Pt=>Pt.prop===this.column.prop);if($e)return $e.dir}}onSort(){if(!this.column.sortable)return;const ne=function(tt,on){return tt===wn.single?on===qo.asc?qo.desc:qo.asc:on?on===qo.asc?qo.desc:void 0:qo.asc}(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:ne})}calcSortClass(ne){if(this.cellContext.column.sortable)return ne===qo.asc?`sort-btn sort-asc ${this.sortAscendingIcon}`:ne===qo.desc?`sort-btn sort-desc ${this.sortDescendingIcon}`:`sort-btn ${this.sortUnsetIcon}`}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.sBO))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-header-cell"]],hostAttrs:[1,"datatable-header-cell"],hostVars:11,hostBindings:function(ne,$e){1&ne&&r.NdJ("contextmenu",function(sn){return $e.onContextmenu(sn)}),2&ne&&(r.uIk("title",$e.name),r.Tol($e.columnCssClasses),r.Udp("min-width",$e.minWidth,"px")("max-width",$e.maxWidth,"px")("width",$e.width,"px")("height",$e.headerHeight,"px"))},inputs:{allRowsSelected:"allRowsSelected",column:"column",sorts:"sorts",sortType:"sortType",sortAscendingIcon:"sortAscendingIcon",sortDescendingIcon:"sortDescendingIcon",sortUnsetIcon:"sortUnsetIcon",isTarget:"isTarget",targetMarkerTemplate:"targetMarkerTemplate",targetMarkerContext:"targetMarkerContext",selectionType:"selectionType",headerHeight:"headerHeight"},outputs:{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"},decls:6,vars:6,consts:[[1,"datatable-header-cell-template-wrap"],[4,"ngIf"],["class","datatable-checkbox",4,"ngIf"],["class","datatable-header-cell-wrapper",4,"ngIf"],[3,"click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"datatable-checkbox"],["type","checkbox",3,"checked","change"],[1,"datatable-header-cell-wrapper"],[1,"datatable-header-cell-label","draggable",3,"innerHTML","click"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.YNc(1,me,1,2,void 0,1),r.YNc(2,Oe,2,1,"label",2),r.YNc(3,ce,2,1,"span",3),r.YNc(4,ze,1,2,void 0,1),r.TgZ(5,"span",4),r.NdJ("click",function(){return $e.onSort()}),r.qZA(),r.qZA()),2&ne&&(r.xp6(1),r.Q6J("ngIf",$e.isTarget),r.xp6(1),r.Q6J("ngIf",$e.isCheckboxable),r.xp6(1),r.Q6J("ngIf",!$e.column.headerTemplate),r.xp6(1),r.Q6J("ngIf",$e.column.headerTemplate),r.xp6(1),r.Tol($e.sortClass))},directives:[u.O5,u.tP],encapsulation:2,changeDetection:0}),tt})(),yl=(()=>{class tt{constructor(){this.selectedCount=0,this.page=new r.vpe}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-footer"]],hostAttrs:[1,"datatable-footer"],inputs:{selectedCount:"selectedCount",footerHeight:"footerHeight",rowCount:"rowCount",pageSize:"pageSize",offset:"offset",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon",totalMessage:"totalMessage",footerTemplate:"footerTemplate",selectedMessage:"selectedMessage"},outputs:{page:"page"},decls:4,vars:8,consts:[[1,"datatable-footer-inner",3,"ngClass"],[4,"ngIf"],["class","page-count",4,"ngIf"],[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"page-count"],[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.YNc(1,Ie,1,8,void 0,1),r.YNc(2,He,3,3,"div",2),r.YNc(3,Zt,1,8,"datatable-pager",3),r.qZA()),2&ne&&(r.Udp("height",$e.footerHeight,"px"),r.Q6J("ngClass",r.VKq(6,st,$e.selectedMessage)),r.xp6(1),r.Q6J("ngIf",$e.footerTemplate),r.xp6(1),r.Q6J("ngIf",!$e.footerTemplate),r.xp6(1),r.Q6J("ngIf",!$e.footerTemplate))},directives:function(){return[u.mk,u.O5,u.tP,fo]},encapsulation:2,changeDetection:0}),tt})(),fo=(()=>{class tt{constructor(){this.change=new r.vpe,this._count=0,this._page=1,this._size=0}set size(ne){this._size=ne,this.pages=this.calcPages()}get size(){return this._size}set count(ne){this._count=ne,this.pages=this.calcPages()}get count(){return this._count}set page(ne){this._page=ne,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const ne=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(ne||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(ne){ne>0&&ne<=this.totalPages&&ne!==this.page&&(this.page=ne,this.change.emit({page:ne}))}calcPages(ne){const $e=[];let Pt=1,sn=this.totalPages;ne=ne||this.page,5<this.totalPages&&(Pt=ne-Math.floor(2.5),sn=ne+Math.floor(2.5),Pt<1?(Pt=1,sn=Math.min(Pt+5-1,this.totalPages)):sn>this.totalPages&&(Pt=Math.max(this.totalPages-5+1,1),sn=this.totalPages));for(let Oi=Pt;Oi<=sn;Oi++)$e.push({number:Oi,text:Oi});return $e}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-pager"]],hostAttrs:[1,"datatable-pager"],inputs:{size:"size",count:"count",page:"page",pagerLeftArrowIcon:"pagerLeftArrowIcon",pagerRightArrowIcon:"pagerRightArrowIcon",pagerPreviousIcon:"pagerPreviousIcon",pagerNextIcon:"pagerNextIcon"},outputs:{change:"change"},decls:14,vars:21,consts:[[1,"pager"],["role","button","aria-label","go to first page","href","javascript:void(0)",3,"click"],["role","button","aria-label","go to previous page","href","javascript:void(0)",3,"click"],["role","button","class","pages",3,"active",4,"ngFor","ngForOf"],["role","button","aria-label","go to next page","href","javascript:void(0)",3,"click"],["role","button","aria-label","go to last page","href","javascript:void(0)",3,"click"],["role","button",1,"pages"],["href","javascript:void(0)",3,"click"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"ul",0),r.TgZ(1,"li"),r.TgZ(2,"a",1),r.NdJ("click",function(){return $e.selectPage(1)}),r._UZ(3,"i"),r.qZA(),r.qZA(),r.TgZ(4,"li"),r.TgZ(5,"a",2),r.NdJ("click",function(){return $e.prevPage()}),r._UZ(6,"i"),r.qZA(),r.qZA(),r.YNc(7,en,3,4,"li",3),r.TgZ(8,"li"),r.TgZ(9,"a",4),r.NdJ("click",function(){return $e.nextPage()}),r._UZ(10,"i"),r.qZA(),r.qZA(),r.TgZ(11,"li"),r.TgZ(12,"a",5),r.NdJ("click",function(){return $e.selectPage($e.totalPages)}),r._UZ(13,"i"),r.qZA(),r.qZA(),r.qZA()),2&ne&&(r.xp6(1),r.ekj("disabled",!$e.canPrevious()),r.xp6(2),r.Tol($e.pagerPreviousIcon),r.xp6(1),r.ekj("disabled",!$e.canPrevious()),r.xp6(2),r.Tol($e.pagerLeftArrowIcon),r.xp6(1),r.Q6J("ngForOf",$e.pages),r.xp6(1),r.ekj("disabled",!$e.canNext()),r.xp6(2),r.Tol($e.pagerRightArrowIcon),r.xp6(1),r.ekj("disabled",!$e.canNext()),r.xp6(2),r.Tol($e.pagerNextIcon))},directives:[u.sg],encapsulation:2,changeDetection:0}),tt})(),Da=(()=>{class tt{}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-progress"]],decls:3,vars:0,consts:[["role","progressbar",1,"progress-linear"],[1,"container"],[1,"bar"]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.TgZ(1,"div",1),r._UZ(2,"div",2),r.qZA(),r.qZA())},encapsulation:2,changeDetection:0}),tt})();var Ao=(()=>{return(tt=Ao||(Ao={}))[tt.up=38]="up",tt[tt.down=40]="down",tt[tt.return=13]="return",tt[tt.escape=27]="escape",tt[tt.left=37]="left",tt[tt.right=39]="right",Ao;var tt})();let ls=(()=>{class tt{constructor(ne,$e,Pt,sn){this.differs=ne,this.scrollbarHelper=$e,this.cd=Pt,this.treeStatus="collapsed",this.activate=new r.vpe,this.treeAction=new r.vpe,this._groupStyles={left:{},center:{},right:{}},this._element=sn.nativeElement,this._rowDiffer=ne.find({}).create()}set columns(ne){this._columns=ne,this.recalculateColumns(ne),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(ne){if(this._columns){const $e=So(this._columns);this._columnGroupWidths=Si($e,this._columns)}this._innerWidth=ne,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(ne){this._offsetX=ne,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let ne="datatable-body-row";if(this.isSelected&&(ne+=" active"),this.rowIndex%2!=0&&(ne+=" datatable-row-odd"),this.rowIndex%2==0&&(ne+=" datatable-row-even"),this.rowClass){const $e=this.rowClass(this.row);if("string"==typeof $e)ne+=` ${$e}`;else if("object"==typeof $e){const Pt=Object.keys($e);for(const sn of Pt)!0===$e[sn]&&(ne+=` ${sn}`)}}return ne}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(ne,$e){return $e.type}columnTrackingFn(ne,$e){return $e.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(ne){const $e=this._columnGroupWidths,Pt=this.offsetX,sn={width:`${$e[ne]}px`};if("left"===ne)Ct(sn,Pt,0);else if("right"===ne){const ei=parseInt(this.innerWidth+"",0);Ct(sn,-1*($e.total-ei-Pt+this.scrollbarHelper.width),0)}return sn}onActivate(ne,$e){ne.cellIndex=$e,ne.rowElement=this._element,this.activate.emit(ne)}onKeyDown(ne){const $e=ne.keyCode;($e===Ao.return||$e===Ao.down||$e===Ao.up||$e===Ao.left||$e===Ao.right)&&ne.target===this._element&&(ne.preventDefault(),ne.stopPropagation(),this.activate.emit({type:"keydown",event:ne,row:this.row,rowElement:this._element}))}onMouseenter(ne){this.activate.emit({type:"mouseenter",event:ne,row:this.row,rowElement:this._element})}recalculateColumns(ne=this.columns){this._columns=ne;const $e=So(this._columns);this._columnsByPin=cr(this._columns),this._columnGroupWidths=Si($e,this._columns)}onTreeAction(){this.treeAction.emit()}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.aQg),r.Y36(On,4),r.Y36(r.sBO),r.Y36(r.SBq))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-body-row"]],hostVars:6,hostBindings:function(ne,$e){1&ne&&r.NdJ("keydown",function(sn){return $e.onKeyDown(sn)})("mouseenter",function(sn){return $e.onMouseenter(sn)}),2&ne&&(r.Tol($e.cssClass),r.Udp("width",$e.columnsTotalWidths,"px")("height",$e.rowHeight,"px"))},inputs:{treeStatus:"treeStatus",columns:"columns",innerWidth:"innerWidth",offsetX:"offsetX",expanded:"expanded",rowClass:"rowClass",row:"row",group:"group",isSelected:"isSelected",rowIndex:"rowIndex",displayCheck:"displayCheck",rowHeight:"rowHeight"},outputs:{activate:"activate",treeAction:"treeAction"},decls:1,vars:2,consts:[[3,"class","ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],[3,"ngStyle"],["tabindex","-1",3,"row","group","expanded","isSelected","rowIndex","column","rowHeight","displayCheck","treeStatus","activate","treeAction",4,"ngFor","ngForOf","ngForTrackBy"],["tabindex","-1",3,"row","group","expanded","isSelected","rowIndex","column","rowHeight","displayCheck","treeStatus","activate","treeAction"]],template:function(ne,$e){1&ne&&r.YNc(0,Gt,2,6,"div",0),2&ne&&r.Q6J("ngForOf",$e._columnsByPin)("ngForTrackBy",$e.trackByGroups)},directives:function(){return[u.sg,u.PC,Ra]},encapsulation:2,changeDetection:0}),tt})(),gs=(()=>{class tt{constructor(ne,$e){this.cd=ne,this.differs=$e,this.rowContextmenu=new r.vpe(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=$e.find({}).create()}set rowIndex(ne){this._rowIndex=ne,this.rowContext.rowIndex=ne,this.groupContext.rowIndex=ne,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(ne){this._expanded=ne,this.groupContext.expanded=ne,this.rowContext.expanded=ne,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(ne){this.rowContextmenu.emit({event:ne,row:this.row})}getGroupHeaderStyle(){const ne={};return ne.transform="translate3d("+this.offsetX+"px, 0px, 0px)",ne["backface-visibility"]="hidden",ne.width=this.innerWidth,ne}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.sBO),r.Y36(r.aQg))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-row-wrapper"]],hostAttrs:[1,"datatable-row-wrapper"],hostBindings:function(ne,$e){1&ne&&r.NdJ("contextmenu",function(sn){return $e.onContextmenu(sn)})},inputs:{rowIndex:"rowIndex",expanded:"expanded",innerWidth:"innerWidth",rowDetail:"rowDetail",groupHeader:"groupHeader",offsetX:"offsetX",detailRowHeight:"detailRowHeight",row:"row",groupedRows:"groupedRows"},outputs:{rowContextmenu:"rowContextmenu"},ngContentSelectors:T,decls:3,vars:3,consts:[["class","datatable-group-header",3,"ngStyle",4,"ngIf"],[4,"ngIf"],["class","datatable-row-detail",3,"height",4,"ngIf"],[1,"datatable-group-header",3,"ngStyle"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"datatable-row-detail"]],template:function(ne,$e){1&ne&&(r.F$t(),r.YNc(0,mt,2,2,"div",0),r.YNc(1,Yt,1,0,"ng-content",1),r.YNc(2,Yn,2,3,"div",2)),2&ne&&(r.Q6J("ngIf",$e.groupHeader&&$e.groupHeader.template),r.xp6(1),r.Q6J("ngIf",$e.groupHeader&&$e.groupHeader.template&&$e.expanded||!$e.groupHeader||!$e.groupHeader.template),r.xp6(1),r.Q6J("ngIf",$e.rowDetail&&$e.rowDetail.template&&$e.expanded))},directives:[u.O5,u.PC,u.tP],encapsulation:2,changeDetection:0}),tt})(),Ra=(()=>{class tt{constructor(ne,$e){this.cd=$e,this.activate=new r.vpe,this.treeAction=new r.vpe,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=ne.nativeElement}set group(ne){this._group=ne,this.cellContext.group=ne,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(ne){this._rowHeight=ne,this.cellContext.rowHeight=ne,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(ne){this._isSelected=ne,this.cellContext.isSelected=ne,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(ne){this._expanded=ne,this.cellContext.expanded=ne,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(ne){this._rowIndex=ne,this.cellContext.rowIndex=ne,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(ne){this._column=ne,this.cellContext.column=ne,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(ne){this._row=ne,this.cellContext.row=ne,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(ne){this._sorts=ne,this.calcSortDir=this.calcSortDir(ne)}get sorts(){return this._sorts}set treeStatus(ne){this._treeStatus="collapsed"!==ne&&"expanded"!==ne&&"loading"!==ne&&"disabled"!==ne?"collapsed":ne,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let ne="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)ne+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const $e=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof $e)ne+=" "+$e;else if("object"==typeof $e){const Pt=Object.keys($e);for(const sn of Pt)!0===$e[sn]&&(ne+=` ${sn}`)}}return this.sortDir||(ne+=" sort-active"),this.isFocused&&(ne+=" active"),this.sortDir===qo.asc&&(ne+=" sort-asc"),this.sortDir===qo.desc&&(ne+=" sort-desc"),ne}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const ne=this.rowHeight;return isNaN(ne)?ne:ne+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let ne="";if(this.row&&this.column){const $e=this.column.$$valueGetter(this.row,this.column.prop),Pt=this.column.pipe;Pt?ne=Pt.transform($e):void 0!==ne&&(ne=$e)}else ne="";this.value!==ne&&(this.value=ne,this.cellContext.value=ne,this.sanitizedValue=null!=ne?this.stripHtml(ne):ne,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(ne){this.activate.emit({type:"click",event:ne,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(ne){this.activate.emit({type:"dblclick",event:ne,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(ne){const $e=ne.keyCode;($e===Ao.return||$e===Ao.down||$e===Ao.up||$e===Ao.left||$e===Ao.right)&&ne.target===this._element&&(ne.preventDefault(),ne.stopPropagation(),this.activate.emit({type:"keydown",event:ne,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(ne){this.activate.emit({type:"checkbox",event:ne,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(ne){if(!ne)return;const $e=ne.find(Pt=>Pt.prop===this.column.prop);return $e?$e.dir:void 0}stripHtml(ne){return ne.replace?ne.replace(/<\/?[^>]+(>|$)/g,""):ne}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(ne,$e){return ne.isTreeColumn?$e.level*(null!=ne.treeLevelIndent?ne.treeLevelIndent:50):0}}return tt.\u0275fac=function(ne){return new(ne||tt)(r.Y36(r.SBq),r.Y36(r.sBO))},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-body-cell"]],viewQuery:function(ne,$e){if(1&ne&&r.Gf(Hr,7,r.s_b),2&ne){let Pt;r.iGM(Pt=r.CRH())&&($e.cellTemplate=Pt.first)}},hostVars:10,hostBindings:function(ne,$e){1&ne&&r.NdJ("focus",function(){return $e.onFocus()})("blur",function(){return $e.onBlur()})("click",function(sn){return $e.onClick(sn)})("dblclick",function(sn){return $e.onDblClick(sn)})("keydown",function(sn){return $e.onKeyDown(sn)}),2&ne&&(r.Tol($e.columnCssClasses),r.Udp("width",$e.width,"px")("min-width",$e.minWidth,"px")("max-width",$e.maxWidth,"px")("height",$e.height))},inputs:{group:"group",rowHeight:"rowHeight",isSelected:"isSelected",expanded:"expanded",rowIndex:"rowIndex",column:"column",row:"row",sorts:"sorts",treeStatus:"treeStatus",displayCheck:"displayCheck"},outputs:{activate:"activate",treeAction:"treeAction"},decls:5,vars:6,consts:[[1,"datatable-body-cell-label"],["class","datatable-checkbox",4,"ngIf"],[4,"ngIf"],[3,"title","innerHTML",4,"ngIf"],[1,"datatable-checkbox"],["type","checkbox",3,"checked","click"],["class","datatable-tree-button",3,"disabled","click",4,"ngIf"],[1,"datatable-tree-button",3,"disabled","click"],["class","icon datatable-icon-collapse",4,"ngIf"],["class","icon datatable-icon-up",4,"ngIf"],["class","icon datatable-icon-down",4,"ngIf"],[1,"icon","datatable-icon-collapse"],[1,"icon","datatable-icon-up"],[1,"icon","datatable-icon-down"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[3,"title","innerHTML"],["cellTemplate",""]],template:function(ne,$e){1&ne&&(r.TgZ(0,"div",0),r.YNc(1,ci,2,1,"label",1),r.YNc(2,Ur,3,2,"ng-container",2),r.YNc(3,di,1,2,"span",3),r.YNc(4,Hi,2,2,void 0,2),r.qZA()),2&ne&&(r.Udp("margin-left",$e.calcLeftMargin($e.column,$e.row),"px"),r.xp6(1),r.Q6J("ngIf",$e.column.checkboxable&&(!$e.displayCheck||$e.displayCheck($e.row,$e.column,$e.value))),r.xp6(1),r.Q6J("ngIf",$e.column.isTreeColumn),r.xp6(1),r.Q6J("ngIf",!$e.column.cellTemplate),r.xp6(1),r.Q6J("ngIf",$e.column.cellTemplate))},directives:[u.O5,u.tP],encapsulation:2,changeDetection:0}),tt})();function pl(tt,on,ne){const $e=ne(on,tt);return $e>-1?tt.splice($e,1):tt.push(on),tt}let Fo=(()=>{class tt{constructor(){this.activate=new r.vpe,this.select=new r.vpe}selectRow(ne,$e,Pt){if(!this.selectEnabled)return;const sn=this.selectionType===kn.checkbox,fi=this.selectionType===kn.multiClick;let Oi=[];Oi=this.selectionType===kn.multi||sn||fi?ne.shiftKey?function(tt,on,ne,$e,Pt){const sn=ne<$e;for(let ei=0;ei<on.length;ei++){const fi=on[ei],Oi=ei>=$e&&ei<=ne,os=ei<=$e&&ei>=ne;let Ro={start:0,end:0};Ro=sn?{start:ne,end:$e}:{start:$e,end:ne+1},(sn&&os||!sn&&Oi)&&ei>=Ro.start&&ei<=Ro.end&&tt.push(fi)}return tt}([],this.rows,$e,this.prevIndex,this.getRowSelectedIdx.bind(this)):pl(ne.ctrlKey||ne.metaKey||fi||sn?[...this.selected]:[],Pt,this.getRowSelectedIdx.bind(this)):pl([],Pt,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(Oi=Oi.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...Oi),this.prevIndex=$e,this.select.emit({selected:Oi})}onActivate(ne,$e){const{type:Pt,event:sn,row:ei}=ne,fi=this.selectionType===kn.checkbox;!fi&&("click"===Pt||"dblclick"===Pt)||fi&&"checkbox"===Pt?this.selectRow(sn,$e,ei):"keydown"===Pt&&(sn.keyCode===Ao.return?this.selectRow(sn,$e,ei):this.onKeyboardFocus(ne)),this.activate.emit(ne)}onKeyboardFocus(ne){const{keyCode:$e}=ne.event;if($e===Ao.up||$e===Ao.down||$e===Ao.right||$e===Ao.left){const sn=this.selectionType===kn.cell;ne.cellElement&&sn?sn&&this.focusCell(ne.cellElement,ne.rowElement,$e,ne.cellIndex):this.focusRow(ne.rowElement,$e)}}focusRow(ne,$e){const Pt=this.getPrevNextRow(ne,$e);Pt&&Pt.focus()}getPrevNextRow(ne,$e){const Pt=ne.parentElement;if(Pt){let sn;if($e===Ao.up?sn=Pt.previousElementSibling:$e===Ao.down&&(sn=Pt.nextElementSibling),sn&&sn.children.length)return sn.children[0]}}focusCell(ne,$e,Pt,sn){let ei;if(Pt===Ao.left)ei=ne.previousElementSibling;else if(Pt===Ao.right)ei=ne.nextElementSibling;else if(Pt===Ao.up||Pt===Ao.down){const fi=this.getPrevNextRow($e,Pt);if(fi){const Oi=fi.getElementsByClassName("datatable-body-cell");Oi.length&&(ei=Oi[sn])}}ei&&ei.focus()}getRowSelected(ne){return this.getRowSelectedIdx(ne,this.selected)>-1}getRowSelectedIdx(ne,$e){if(!$e||!$e.length)return-1;const Pt=this.rowIdentity(ne);return $e.findIndex(sn=>this.rowIdentity(sn)===Pt)}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-selection"]],inputs:{rows:"rows",selected:"selected",selectEnabled:"selectEnabled",selectionType:"selectionType",rowIdentity:"rowIdentity",selectCheck:"selectCheck"},outputs:{activate:"activate",select:"select"},ngContentSelectors:T,decls:1,vars:0,template:function(ne,$e){1&ne&&(r.F$t(),r.Hsn(0))},encapsulation:2,changeDetection:0}),tt})();function Eo(tt){const on=tt.filter(ne=>!!ne);return!on.length||on.some(ne=>"number"!=typeof ne)?null:on.reduce((ne,$e)=>ne+$e)}function ks(tt){return null}let ms=(()=>{class tt{constructor(){this.summaryRow={}}ngOnChanges(){!this.columns||!this.rows||(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(ne=>Object.assign(Object.assign({},ne),{cellTemplate:ne.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(ne=>!ne.summaryTemplate).forEach(ne=>{const $e=this.rows.map(sn=>sn[ne.prop]),Pt=this.getSummaryFunction(ne);this.summaryRow[ne.prop]=ne.pipe?ne.pipe.transform(Pt($e)):Pt($e)})}getSummaryFunction(ne){return void 0===ne.summaryFunc?Eo:null===ne.summaryFunc?ks:ne.summaryFunc}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275cmp=r.Xpm({type:tt,selectors:[["datatable-summary-row"]],hostAttrs:[1,"datatable-summary-row"],inputs:{rows:"rows",columns:"columns",rowHeight:"rowHeight",offsetX:"offsetX",innerWidth:"innerWidth"},features:[r.TTD],decls:1,vars:1,consts:[["tabindex","-1",3,"innerWidth","offsetX","columns","rowHeight","row","rowIndex",4,"ngIf"],["tabindex","-1",3,"innerWidth","offsetX","columns","rowHeight","row","rowIndex"]],template:function(ne,$e){1&ne&&r.YNc(0,Br,1,6,"datatable-body-row",0),2&ne&&r.Q6J("ngIf",$e.summaryRow&&$e._internalColumns)},directives:[u.O5,ls],encapsulation:2}),tt})(),Co=(()=>{class tt{static forRoot(ne){return{ngModule:tt,providers:[{provide:"configuration",useValue:ne}]}}}return tt.\u0275fac=function(ne){return new(ne||tt)},tt.\u0275mod=r.oAB({type:tt}),tt.\u0275inj=r.cJS({providers:[On,Wt,Jn],imports:[[u.ez]]}),tt})();"undefined"!=typeof document&&!document.elementsFromPoint&&(document.elementsFromPoint=function(tt,on){const ne=[],$e=[];let Pt,sn,ei;for(;(Pt=document.elementFromPoint(tt,on))&&-1===ne.indexOf(Pt)&&null!=Pt;)ne.push(Pt),$e.push({value:Pt.style.getPropertyValue("pointer-events"),priority:Pt.style.getPropertyPriority("pointer-events")}),Pt.style.setProperty("pointer-events","none","important");for(sn=$e.length;ei=$e[--sn];)ne[sn].style.setProperty("pointer-events",ei.value?ei.value:"",ei.priority);return ne})},67506:v=>{"use strict";function S(u,p,f){u instanceof RegExp&&(u=i(u,f)),p instanceof RegExp&&(p=i(p,f));var e=r(u,p,f);return e&&{start:e[0],end:e[1],pre:f.slice(0,e[0]),body:f.slice(e[0]+u.length,e[1]),post:f.slice(e[1]+p.length)}}function i(u,p){var f=p.match(u);return f?f[0]:null}function r(u,p,f){var e,_,y,T,M,R=f.indexOf(u),F=f.indexOf(p,R+1),Z=R;if(R>=0&&F>0){if(u===p)return[R,F];for(e=[],y=f.length;Z>=0&&!M;)Z==R?(e.push(Z),R=f.indexOf(u,Z+1)):1==e.length?M=[e.pop(),F]:((_=e.pop())<y&&(y=_,T=F),F=f.indexOf(p,Z+1)),Z=R<F&&R>=0?R:F;e.length&&(M=[y,T])}return M}v.exports=S,S.range=r},96434:(v,S)=>{"use strict";S.byteLength=function(J){var Q=_(J),ue=Q[1];return 3*(Q[0]+ue)/4-ue},S.toByteArray=function(J){var Q,oe,ee=_(J),ue=ee[0],ae=ee[1],$=new u(function(J,Q,ee){return 3*(Q+ee)/4-ee}(0,ue,ae)),se=0,ve=ae>0?ue-4:ue;for(oe=0;oe<ve;oe+=4)Q=r[J.charCodeAt(oe)]<<18|r[J.charCodeAt(oe+1)]<<12|r[J.charCodeAt(oe+2)]<<6|r[J.charCodeAt(oe+3)],$[se++]=Q>>16&255,$[se++]=Q>>8&255,$[se++]=255&Q;return 2===ae&&(Q=r[J.charCodeAt(oe)]<<2|r[J.charCodeAt(oe+1)]>>4,$[se++]=255&Q),1===ae&&(Q=r[J.charCodeAt(oe)]<<10|r[J.charCodeAt(oe+1)]<<4|r[J.charCodeAt(oe+2)]>>2,$[se++]=Q>>8&255,$[se++]=255&Q),$},S.fromByteArray=function(J){for(var Q,ee=J.length,ue=ee%3,ae=[],$=16383,se=0,ve=ee-ue;se<ve;se+=$)ae.push(F(J,se,se+$>ve?ve:se+$));return 1===ue?ae.push(i[(Q=J[ee-1])>>2]+i[Q<<4&63]+"=="):2===ue&&ae.push(i[(Q=(J[ee-2]<<8)+J[ee-1])>>10]+i[Q>>4&63]+i[Q<<2&63]+"="),ae.join("")};for(var i=[],r=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,e=p.length;f<e;++f)i[f]=p[f],r[p.charCodeAt(f)]=f;function _(J){var Q=J.length;if(Q%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var ee=J.indexOf("=");return-1===ee&&(ee=Q),[ee,ee===Q?0:4-ee%4]}function R(J){return i[J>>18&63]+i[J>>12&63]+i[J>>6&63]+i[63&J]}function F(J,Q,ee){for(var ae=[],$=Q;$<ee;$+=3)ae.push(R((J[$]<<16&16711680)+(J[$+1]<<8&65280)+(255&J[$+2])));return ae.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},33512:(v,S,i)=>{var r=i(2665),u=i(67506);v.exports=function(se){return se?("{}"===se.substr(0,2)&&(se="\\{\\}"+se.substr(2)),$(function(se){return se.split("\\\\").join(p).split("\\{").join(f).split("\\}").join(e).split("\\,").join(_).split("\\.").join(y)}(se),!0).map(R)):[]};var p="\0SLASH"+Math.random()+"\0",f="\0OPEN"+Math.random()+"\0",e="\0CLOSE"+Math.random()+"\0",_="\0COMMA"+Math.random()+"\0",y="\0PERIOD"+Math.random()+"\0";function T(se){return parseInt(se,10)==se?parseInt(se,10):se.charCodeAt(0)}function R(se){return se.split(p).join("\\").split(f).join("{").split(e).join("}").split(_).join(",").split(y).join(".")}function F(se){if(!se)return[""];var ve=[],oe=u("{","}",se);if(!oe)return se.split(",");var me=oe.body,Oe=oe.post,ce=oe.pre.split(",");ce[ce.length-1]+="{"+me+"}";var dt=F(Oe);return Oe.length&&(ce[ce.length-1]+=dt.shift(),ce.push.apply(ce,dt)),ve.push.apply(ve,ce),ve}function Q(se){return"{"+se+"}"}function ee(se){return/^-?0\d/.test(se)}function ue(se,ve){return se<=ve}function ae(se,ve){return se>=ve}function $(se,ve){var oe=[],he=u("{","}",se);if(!he||/\$$/.test(he.pre))return[se];var ze,me=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(he.body),Oe=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(he.body),ce=me||Oe,dt=he.body.indexOf(",")>=0;if(!ce&&!dt)return he.post.match(/,.*\}/)?$(se=he.pre+"{"+he.body+e+he.post):[se];if(ce)ze=he.body.split(/\.\./);else if(1===(ze=F(he.body)).length&&1===(ze=$(ze[0],!1).map(Q)).length)return(je=he.post.length?$(he.post,!1):[""]).map(function(ci){return he.pre+ze[0]+ci});var Ie,Ye=he.pre,je=he.post.length?$(he.post,!1):[""];if(ce){var Ve=T(ze[0]),He=T(ze[1]),Zt=Math.max(ze[0].length,ze[1].length),st=3==ze.length?Math.abs(T(ze[2])):1,en=ue;He<Ve&&(st*=-1,en=ae);var Gt=ze.some(ee);Ie=[];for(var Ut=Ve;en(Ut,He);Ut+=st){var Bt;if(Oe)"\\"===(Bt=String.fromCharCode(Ut))&&(Bt="");else if(Bt=String(Ut),Gt){var mt=Zt-Bt.length;if(mt>0){var Yt=new Array(mt+1).join("0");Bt=Ut<0?"-"+Yt+Bt.slice(1):Yt+Bt}}Ie.push(Bt)}}else Ie=r(ze,function(Hr){return $(Hr,!1)});for(var Dt=0;Dt<Ie.length;Dt++)for(var zt=0;zt<je.length;zt++){var Yn=Ye+Ie[Dt]+je[zt];(!ve||ce||Yn)&&oe.push(Yn)}return oe}},19568:(v,S,i)=>{"use strict";var r=i(18540),u=i(60044),p=u(r("String.prototype.indexOf"));v.exports=function(e,_){var y=r(e,!!_);return"function"==typeof y&&p(e,".prototype.")>-1?u(y):y}},60044:(v,S,i)=>{"use strict";var r=i(75396),u=i(18540),p=u("%Function.prototype.apply%"),f=u("%Function.prototype.call%"),e=u("%Reflect.apply%",!0)||r.call(f,p),_=u("%Object.getOwnPropertyDescriptor%",!0),y=u("%Object.defineProperty%",!0),T=u("%Math.max%");if(y)try{y({},"a",{value:1})}catch(R){y=null}v.exports=function(F){var Z=e(r,f,arguments);if(_&&y){var J=_(Z,"length");J.configurable&&y(Z,"length",{value:1+T(0,F.length-(arguments.length-1))})}return Z};var M=function(){return e(r,p,arguments)};y?y(v.exports,"apply",{value:M}):v.exports.apply=M},72318:v=>{var S=!("undefined"==typeof window||!window.document||!window.document.createElement);v.exports=S},6823:function(v,S,i){v.exports=function(r){"use strict";r=r&&r.hasOwnProperty("default")?r.default:r;var f={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},e=function(h,E){return h(E={exports:{}},E.exports),E.exports}(function(h){var E={};for(var N in f)f.hasOwnProperty(N)&&(E[f[N]]=N);var k=h.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var K in k)if(k.hasOwnProperty(K)){if(!("channels"in k[K]))throw new Error("missing channels property: "+K);if(!("labels"in k[K]))throw new Error("missing channel labels property: "+K);if(k[K].labels.length!==k[K].channels)throw new Error("channel and label counts mismatch: "+K);var de=k[K].channels,be=k[K].labels;delete k[K].channels,delete k[K].labels,Object.defineProperty(k[K],"channels",{value:de}),Object.defineProperty(k[K],"labels",{value:be})}function Ue(we,Xe){return Math.pow(we[0]-Xe[0],2)+Math.pow(we[1]-Xe[1],2)+Math.pow(we[2]-Xe[2],2)}k.rgb.hsl=function(we){var sr,Ni,Xe=we[0]/255,gt=we[1]/255,vt=we[2]/255,Jt=Math.min(Xe,gt,vt),Pn=Math.max(Xe,gt,vt),Rn=Pn-Jt;return Pn===Jt?sr=0:Xe===Pn?sr=(gt-vt)/Rn:gt===Pn?sr=2+(vt-Xe)/Rn:vt===Pn&&(sr=4+(Xe-gt)/Rn),(sr=Math.min(60*sr,360))<0&&(sr+=360),Ni=(Jt+Pn)/2,[sr,100*(Pn===Jt?0:Ni<=.5?Rn/(Pn+Jt):Rn/(2-Pn-Jt)),100*Ni]},k.rgb.hsv=function(we){var Xe,gt,vt,Jt,Pn,Rn=we[0]/255,sr=we[1]/255,jr=we[2]/255,Ni=Math.max(Rn,sr,jr),Vo=Ni-Math.min(Rn,sr,jr),$o=function(Vs){return(Ni-Vs)/6/Vo+.5};return 0===Vo?Jt=Pn=0:(Pn=Vo/Ni,Xe=$o(Rn),gt=$o(sr),vt=$o(jr),Rn===Ni?Jt=vt-gt:sr===Ni?Jt=1/3+Xe-vt:jr===Ni&&(Jt=2/3+gt-Xe),Jt<0?Jt+=1:Jt>1&&(Jt-=1)),[360*Jt,100*Pn,100*Ni]},k.rgb.hwb=function(we){var Xe=we[0],gt=we[1],vt=we[2];return[k.rgb.hsl(we)[0],1/255*Math.min(Xe,Math.min(gt,vt))*100,100*(vt=1-1/255*Math.max(Xe,Math.max(gt,vt)))]},k.rgb.cmyk=function(we){var sr,Xe=we[0]/255,gt=we[1]/255,vt=we[2]/255;return[100*((1-Xe-(sr=Math.min(1-Xe,1-gt,1-vt)))/(1-sr)||0),100*((1-gt-sr)/(1-sr)||0),100*((1-vt-sr)/(1-sr)||0),100*sr]},k.rgb.keyword=function(we){var Xe=E[we];if(Xe)return Xe;var vt,gt=1/0;for(var Jt in f)if(f.hasOwnProperty(Jt)){var Rn=Ue(we,f[Jt]);Rn<gt&&(gt=Rn,vt=Jt)}return vt},k.keyword.rgb=function(we){return f[we]},k.rgb.xyz=function(we){var Xe=we[0]/255,gt=we[1]/255,vt=we[2]/255;return[100*(.4124*(Xe=Xe>.04045?Math.pow((Xe+.055)/1.055,2.4):Xe/12.92)+.3576*(gt=gt>.04045?Math.pow((gt+.055)/1.055,2.4):gt/12.92)+.1805*(vt=vt>.04045?Math.pow((vt+.055)/1.055,2.4):vt/12.92)),100*(.2126*Xe+.7152*gt+.0722*vt),100*(.0193*Xe+.1192*gt+.9505*vt)]},k.rgb.lab=function(we){var Xe=k.rgb.xyz(we),gt=Xe[0],vt=Xe[1],Jt=Xe[2];return vt/=100,Jt/=108.883,gt=(gt/=95.047)>.008856?Math.pow(gt,1/3):7.787*gt+16/116,[116*(vt=vt>.008856?Math.pow(vt,1/3):7.787*vt+16/116)-16,500*(gt-vt),200*(vt-(Jt=Jt>.008856?Math.pow(Jt,1/3):7.787*Jt+16/116))]},k.hsl.rgb=function(we){var Jt,Pn,Rn,sr,jr,Xe=we[0]/360,gt=we[1]/100,vt=we[2]/100;if(0===gt)return[jr=255*vt,jr,jr];Jt=2*vt-(Pn=vt<.5?vt*(1+gt):vt+gt-vt*gt),sr=[0,0,0];for(var Ni=0;Ni<3;Ni++)(Rn=Xe+1/3*-(Ni-1))<0&&Rn++,Rn>1&&Rn--,sr[Ni]=255*(jr=6*Rn<1?Jt+6*(Pn-Jt)*Rn:2*Rn<1?Pn:3*Rn<2?Jt+(Pn-Jt)*(2/3-Rn)*6:Jt);return sr},k.hsl.hsv=function(we){var Xe=we[0],gt=we[1]/100,vt=we[2]/100,Jt=gt,Pn=Math.max(vt,.01);return gt*=(vt*=2)<=1?vt:2-vt,Jt*=Pn<=1?Pn:2-Pn,[Xe,100*(0===vt?2*Jt/(Pn+Jt):2*gt/(vt+gt)),(vt+gt)/2*100]},k.hsv.rgb=function(we){var Xe=we[0]/60,gt=we[1]/100,vt=we[2]/100,Jt=Math.floor(Xe)%6,Pn=Xe-Math.floor(Xe),Rn=255*vt*(1-gt),sr=255*vt*(1-gt*Pn),jr=255*vt*(1-gt*(1-Pn));switch(vt*=255,Jt){case 0:return[vt,jr,Rn];case 1:return[sr,vt,Rn];case 2:return[Rn,vt,jr];case 3:return[Rn,sr,vt];case 4:return[jr,Rn,vt];case 5:return[vt,Rn,sr]}},k.hsv.hsl=function(we){var Pn,Rn,sr,Xe=we[0],gt=we[1]/100,vt=we[2]/100,Jt=Math.max(vt,.01);return sr=(2-gt)*vt,Rn=gt*Jt,[Xe,100*(Rn=(Rn/=(Pn=(2-gt)*Jt)<=1?Pn:2-Pn)||0),100*(sr/=2)]},k.hwb.rgb=function(we){var Pn,Rn,sr,jr,Ni,Vo,$o,Xe=we[0]/360,gt=we[1]/100,vt=we[2]/100,Jt=gt+vt;switch(Jt>1&&(gt/=Jt,vt/=Jt),sr=6*Xe-(Pn=Math.floor(6*Xe)),0!=(1&Pn)&&(sr=1-sr),jr=gt+sr*((Rn=1-vt)-gt),Pn){default:case 6:case 0:Ni=Rn,Vo=jr,$o=gt;break;case 1:Ni=jr,Vo=Rn,$o=gt;break;case 2:Ni=gt,Vo=Rn,$o=jr;break;case 3:Ni=gt,Vo=jr,$o=Rn;break;case 4:Ni=jr,Vo=gt,$o=Rn;break;case 5:Ni=Rn,Vo=gt,$o=jr}return[255*Ni,255*Vo,255*$o]},k.cmyk.rgb=function(we){var gt=we[1]/100,vt=we[2]/100,Jt=we[3]/100;return[255*(1-Math.min(1,we[0]/100*(1-Jt)+Jt)),255*(1-Math.min(1,gt*(1-Jt)+Jt)),255*(1-Math.min(1,vt*(1-Jt)+Jt))]},k.xyz.rgb=function(we){var Jt,Pn,Rn,Xe=we[0]/100,gt=we[1]/100,vt=we[2]/100;return Pn=-.9689*Xe+1.8758*gt+.0415*vt,Rn=.0557*Xe+-.204*gt+1.057*vt,Jt=(Jt=3.2406*Xe+-1.5372*gt+-.4986*vt)>.0031308?1.055*Math.pow(Jt,1/2.4)-.055:12.92*Jt,Pn=Pn>.0031308?1.055*Math.pow(Pn,1/2.4)-.055:12.92*Pn,Rn=Rn>.0031308?1.055*Math.pow(Rn,1/2.4)-.055:12.92*Rn,[255*(Jt=Math.min(Math.max(0,Jt),1)),255*(Pn=Math.min(Math.max(0,Pn),1)),255*(Rn=Math.min(Math.max(0,Rn),1))]},k.xyz.lab=function(we){var Xe=we[0],gt=we[1],vt=we[2];return gt/=100,vt/=108.883,Xe=(Xe/=95.047)>.008856?Math.pow(Xe,1/3):7.787*Xe+16/116,[116*(gt=gt>.008856?Math.pow(gt,1/3):7.787*gt+16/116)-16,500*(Xe-gt),200*(gt-(vt=vt>.008856?Math.pow(vt,1/3):7.787*vt+16/116))]},k.lab.xyz=function(we){var Jt,Pn,Rn;Jt=we[1]/500+(Pn=(we[0]+16)/116),Rn=Pn-we[2]/200;var sr=Math.pow(Pn,3),jr=Math.pow(Jt,3),Ni=Math.pow(Rn,3);return Pn=sr>.008856?sr:(Pn-16/116)/7.787,Jt=jr>.008856?jr:(Jt-16/116)/7.787,Rn=Ni>.008856?Ni:(Rn-16/116)/7.787,[Jt*=95.047,Pn*=100,Rn*=108.883]},k.lab.lch=function(we){var Pn,Xe=we[0],gt=we[1],vt=we[2];return(Pn=360*Math.atan2(vt,gt)/2/Math.PI)<0&&(Pn+=360),[Xe,Math.sqrt(gt*gt+vt*vt),Pn]},k.lch.lab=function(we){var Rn,gt=we[1];return Rn=we[2]/360*2*Math.PI,[we[0],gt*Math.cos(Rn),gt*Math.sin(Rn)]},k.rgb.ansi16=function(we){var Xe=we[0],gt=we[1],vt=we[2],Jt=1 in arguments?arguments[1]:k.rgb.hsv(we)[2];if(0===(Jt=Math.round(Jt/50)))return 30;var Pn=30+(Math.round(vt/255)<<2|Math.round(gt/255)<<1|Math.round(Xe/255));return 2===Jt&&(Pn+=60),Pn},k.hsv.ansi16=function(we){return k.rgb.ansi16(k.hsv.rgb(we),we[2])},k.rgb.ansi256=function(we){var Xe=we[0],gt=we[1],vt=we[2];return Xe===gt&&gt===vt?Xe<8?16:Xe>248?231:Math.round((Xe-8)/247*24)+232:16+36*Math.round(Xe/255*5)+6*Math.round(gt/255*5)+Math.round(vt/255*5)},k.ansi16.rgb=function(we){var Xe=we%10;if(0===Xe||7===Xe)return we>50&&(Xe+=3.5),[Xe=Xe/10.5*255,Xe,Xe];var gt=.5*(1+~~(we>50));return[(1&Xe)*gt*255,(Xe>>1&1)*gt*255,(Xe>>2&1)*gt*255]},k.ansi256.rgb=function(we){if(we>=232){var Xe=10*(we-232)+8;return[Xe,Xe,Xe]}var gt;return we-=16,[Math.floor(we/36)/5*255,Math.floor((gt=we%36)/6)/5*255,gt%6/5*255]},k.rgb.hex=function(we){var gt=(((255&Math.round(we[0]))<<16)+((255&Math.round(we[1]))<<8)+(255&Math.round(we[2]))).toString(16).toUpperCase();return"000000".substring(gt.length)+gt},k.hex.rgb=function(we){var Xe=we.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!Xe)return[0,0,0];var gt=Xe[0];3===Xe[0].length&&(gt=gt.split("").map(function(sr){return sr+sr}).join(""));var vt=parseInt(gt,16);return[vt>>16&255,vt>>8&255,255&vt]},k.rgb.hcg=function(we){var jr,Xe=we[0]/255,gt=we[1]/255,vt=we[2]/255,Jt=Math.max(Math.max(Xe,gt),vt),Pn=Math.min(Math.min(Xe,gt),vt),Rn=Jt-Pn;return jr=Rn<=0?0:Jt===Xe?(gt-vt)/Rn%6:Jt===gt?2+(vt-Xe)/Rn:4+(Xe-gt)/Rn+4,jr/=6,[360*(jr%=1),100*Rn,100*(Rn<1?Pn/(1-Rn):0)]},k.hsl.hcg=function(we){var vt,Xe=we[1]/100,gt=we[2]/100,Jt=0;return(vt=gt<.5?2*Xe*gt:2*Xe*(1-gt))<1&&(Jt=(gt-.5*vt)/(1-vt)),[we[0],100*vt,100*Jt]},k.hsv.hcg=function(we){var gt=we[2]/100,vt=we[1]/100*gt,Jt=0;return vt<1&&(Jt=(gt-vt)/(1-vt)),[we[0],100*vt,100*Jt]},k.hcg.rgb=function(we){var gt=we[1]/100,vt=we[2]/100;if(0===gt)return[255*vt,255*vt,255*vt];var jr,Jt=[0,0,0],Pn=we[0]/360%1*6,Rn=Pn%1,sr=1-Rn;switch(Math.floor(Pn)){case 0:Jt[0]=1,Jt[1]=Rn,Jt[2]=0;break;case 1:Jt[0]=sr,Jt[1]=1,Jt[2]=0;break;case 2:Jt[0]=0,Jt[1]=1,Jt[2]=Rn;break;case 3:Jt[0]=0,Jt[1]=sr,Jt[2]=1;break;case 4:Jt[0]=Rn,Jt[1]=0,Jt[2]=1;break;default:Jt[0]=1,Jt[1]=0,Jt[2]=sr}return[255*(gt*Jt[0]+(jr=(1-gt)*vt)),255*(gt*Jt[1]+jr),255*(gt*Jt[2]+jr)]},k.hcg.hsv=function(we){var Xe=we[1]/100,vt=Xe+we[2]/100*(1-Xe),Jt=0;return vt>0&&(Jt=Xe/vt),[we[0],100*Jt,100*vt]},k.hcg.hsl=function(we){var Xe=we[1]/100,vt=we[2]/100*(1-Xe)+.5*Xe,Jt=0;return vt>0&&vt<.5?Jt=Xe/(2*vt):vt>=.5&&vt<1&&(Jt=Xe/(2*(1-vt))),[we[0],100*Jt,100*vt]},k.hcg.hwb=function(we){var Xe=we[1]/100,vt=Xe+we[2]/100*(1-Xe);return[we[0],100*(vt-Xe),100*(1-vt)]},k.hwb.hcg=function(we){var vt=1-we[2]/100,Jt=vt-we[1]/100,Pn=0;return Jt<1&&(Pn=(vt-Jt)/(1-Jt)),[we[0],100*Jt,100*Pn]},k.apple.rgb=function(we){return[we[0]/65535*255,we[1]/65535*255,we[2]/65535*255]},k.rgb.apple=function(we){return[we[0]/255*65535,we[1]/255*65535,we[2]/255*65535]},k.gray.rgb=function(we){return[we[0]/100*255,we[0]/100*255,we[0]/100*255]},k.gray.hsl=k.gray.hsv=function(we){return[0,0,we[0]]},k.gray.hwb=function(we){return[0,100,we[0]]},k.gray.cmyk=function(we){return[0,0,0,we[0]]},k.gray.lab=function(we){return[we[0],0,0]},k.gray.hex=function(we){var Xe=255&Math.round(we[0]/100*255),vt=((Xe<<16)+(Xe<<8)+Xe).toString(16).toUpperCase();return"000000".substring(vt.length)+vt},k.rgb.gray=function(we){return[(we[0]+we[1]+we[2])/3/255*100]}});function he(h){var E=function(){for(var h={},E=Object.keys(e),N=E.length,k=0;k<N;k++)h[E[k]]={distance:-1,parent:null};return h}(),N=[h];for(E[h].distance=0;N.length;)for(var k=N.pop(),K=Object.keys(e[k]),de=K.length,be=0;be<de;be++){var Ue=K[be],we=E[Ue];-1===we.distance&&(we.distance=E[k].distance+1,we.parent=k,N.unshift(Ue))}return E}function me(h,E){return function(N){return E(h(N))}}function Oe(h,E){for(var N=[E[h].parent,h],k=e[E[h].parent][h],K=E[h].parent;E[K].parent;)N.unshift(E[K].parent),k=me(e[E[K].parent][K],k),K=E[K].parent;return k.conversion=N,k}var dt={};Object.keys(e).forEach(function(h){dt[h]={},Object.defineProperty(dt[h],"channels",{value:e[h].channels}),Object.defineProperty(dt[h],"labels",{value:e[h].labels});var E=function(h){for(var E=he(h),N={},k=Object.keys(E),K=k.length,de=0;de<K;de++){var be=k[de];null!==E[be].parent&&(N[be]=Oe(be,E))}return N}(h);Object.keys(E).forEach(function(k){var K=E[k];dt[h][k]=function(h){var E=function(N){if(null==N)return N;arguments.length>1&&(N=Array.prototype.slice.call(arguments));var k=h(N);if("object"==typeof k)for(var K=k.length,de=0;de<K;de++)k[de]=Math.round(k[de]);return k};return"conversion"in h&&(E.conversion=h.conversion),E}(K),dt[h][k].raw=function(h){var E=function(N){return null==N?N:(arguments.length>1&&(N=Array.prototype.slice.call(arguments)),h(N))};return"conversion"in h&&(E.conversion=h.conversion),E}(K)})});var Ie=dt,Ve={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},He={getRgba:Zt,getHsla:st,getRgb:function(h){var E=Zt(h);return E&&E.slice(0,3)},getHsl:function(h){var E=st(h);return E&&E.slice(0,3)},getHwb:en,getAlpha:function(h){var E=Zt(h);return E||(E=st(h))||(E=en(h))?E[3]:void 0},hexString:function(h,E){return E=void 0!==E&&3===h.length?E:h[3],"#"+Qr(h[0])+Qr(h[1])+Qr(h[2])+(E>=0&&E<1?Qr(Math.round(255*E)):"")},rgbString:function(h,E){return E<1||h[3]&&h[3]<1?Yt(h,E):"rgb("+h[0]+", "+h[1]+", "+h[2]+")"},rgbaString:Yt,percentString:function(h,E){return E<1||h[3]&&h[3]<1?zt(h,E):"rgb("+Math.round(h[0]/255*100)+"%, "+Math.round(h[1]/255*100)+"%, "+Math.round(h[2]/255*100)+"%)"},percentaString:zt,hslString:function(h,E){return E<1||h[3]&&h[3]<1?Hr(h,E):"hsl("+h[0]+", "+h[1]+"%, "+h[2]+"%)"},hslaString:Hr,hwbString:function(h,E){return void 0===E&&(E=void 0!==h[3]?h[3]:1),"hwb("+h[0]+", "+h[1]+"%, "+h[2]+"%"+(void 0!==E&&1!==E?", "+E:"")+")"},keyword:function(h){return Kr[h.slice(0,3)]}};function Zt(h){if(h){var be=[0,0,0],Ue=1,we=h.match(/^#([a-fA-F0-9]{3,4})$/i),Xe="";if(we){Xe=(we=we[1])[3];for(var gt=0;gt<be.length;gt++)be[gt]=parseInt(we[gt]+we[gt],16);Xe&&(Ue=Math.round(parseInt(Xe+Xe,16)/255*100)/100)}else if(we=h.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(Xe=we[2],we=we[1],gt=0;gt<be.length;gt++)be[gt]=parseInt(we.slice(2*gt,2*gt+2),16);Xe&&(Ue=Math.round(parseInt(Xe,16)/255*100)/100)}else if(we=h.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(gt=0;gt<be.length;gt++)be[gt]=parseInt(we[gt+1]);Ue=parseFloat(we[4])}else if(we=h.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(gt=0;gt<be.length;gt++)be[gt]=Math.round(2.55*parseFloat(we[gt+1]));Ue=parseFloat(we[4])}else if(we=h.match(/(\w+)/)){if("transparent"==we[1])return[0,0,0,0];if(!(be=Ve[we[1]]))return}for(gt=0;gt<be.length;gt++)be[gt]=wr(be[gt],0,255);return Ue=Ue||0==Ue?wr(Ue,0,1):1,be[3]=Ue,be}}function st(h){if(h){var N=h.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(N){var k=parseFloat(N[4]);return[wr(parseInt(N[1]),0,360),wr(parseFloat(N[2]),0,100),wr(parseFloat(N[3]),0,100),wr(isNaN(k)?1:k,0,1)]}}}function en(h){if(h){var N=h.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(N){var k=parseFloat(N[4]);return[wr(parseInt(N[1]),0,360),wr(parseFloat(N[2]),0,100),wr(parseFloat(N[3]),0,100),wr(isNaN(k)?1:k,0,1)]}}}function Yt(h,E){return void 0===E&&(E=void 0!==h[3]?h[3]:1),"rgba("+h[0]+", "+h[1]+", "+h[2]+", "+E+")"}function zt(h,E){return"rgba("+Math.round(h[0]/255*100)+"%, "+Math.round(h[1]/255*100)+"%, "+Math.round(h[2]/255*100)+"%, "+(E||h[3]||1)+")"}function Hr(h,E){return void 0===E&&(E=void 0!==h[3]?h[3]:1),"hsla("+h[0]+", "+h[1]+"%, "+h[2]+"%, "+E+")"}function wr(h,E,N){return Math.min(Math.max(E,h),N)}function Qr(h){var E=h.toString(16).toUpperCase();return E.length<2?"0"+E:E}var Kr={};for(var In in Ve)Kr[Ve[In]]=In;var Hn=function(h){return h instanceof Hn?h:this instanceof Hn?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof h?(E=He.getRgba(h))?this.setValues("rgb",E):(E=He.getHsla(h))?this.setValues("hsl",E):(E=He.getHwb(h))&&this.setValues("hwb",E):"object"==typeof h&&(void 0!==(E=h).r||void 0!==E.red?this.setValues("rgb",E):void 0!==E.l||void 0!==E.lightness?this.setValues("hsl",E):void 0!==E.v||void 0!==E.value?this.setValues("hsv",E):void 0!==E.w||void 0!==E.whiteness?this.setValues("hwb",E):(void 0!==E.c||void 0!==E.cyan)&&this.setValues("cmyk",E)))):new Hn(h);var E};Hn.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var h=this.values;return 1!==h.alpha?h.hwb.concat([h.alpha]):h.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var h=this.values;return h.rgb.concat([h.alpha])},hslaArray:function(){var h=this.values;return h.hsl.concat([h.alpha])},alpha:function(h){return void 0===h?this.values.alpha:(this.setValues("alpha",h),this)},red:function(h){return this.setChannel("rgb",0,h)},green:function(h){return this.setChannel("rgb",1,h)},blue:function(h){return this.setChannel("rgb",2,h)},hue:function(h){return h&&(h=(h%=360)<0?360+h:h),this.setChannel("hsl",0,h)},saturation:function(h){return this.setChannel("hsl",1,h)},lightness:function(h){return this.setChannel("hsl",2,h)},saturationv:function(h){return this.setChannel("hsv",1,h)},whiteness:function(h){return this.setChannel("hwb",1,h)},blackness:function(h){return this.setChannel("hwb",2,h)},value:function(h){return this.setChannel("hsv",2,h)},cyan:function(h){return this.setChannel("cmyk",0,h)},magenta:function(h){return this.setChannel("cmyk",1,h)},yellow:function(h){return this.setChannel("cmyk",2,h)},black:function(h){return this.setChannel("cmyk",3,h)},hexString:function(){return He.hexString(this.values.rgb)},rgbString:function(){return He.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return He.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return He.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return He.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return He.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return He.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return He.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var h=this.values.rgb;return h[0]<<16|h[1]<<8|h[2]},luminosity:function(){for(var h=this.values.rgb,E=[],N=0;N<h.length;N++){var k=h[N]/255;E[N]=k<=.03928?k/12.92:Math.pow((k+.055)/1.055,2.4)}return.2126*E[0]+.7152*E[1]+.0722*E[2]},contrast:function(h){var E=this.luminosity(),N=h.luminosity();return E>N?(E+.05)/(N+.05):(N+.05)/(E+.05)},level:function(h){var E=this.contrast(h);return E>=7.1?"AAA":E>=4.5?"AA":""},dark:function(){var h=this.values.rgb;return(299*h[0]+587*h[1]+114*h[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var h=[],E=0;E<3;E++)h[E]=255-this.values.rgb[E];return this.setValues("rgb",h),this},lighten:function(h){var E=this.values.hsl;return E[2]+=E[2]*h,this.setValues("hsl",E),this},darken:function(h){var E=this.values.hsl;return E[2]-=E[2]*h,this.setValues("hsl",E),this},saturate:function(h){var E=this.values.hsl;return E[1]+=E[1]*h,this.setValues("hsl",E),this},desaturate:function(h){var E=this.values.hsl;return E[1]-=E[1]*h,this.setValues("hsl",E),this},whiten:function(h){var E=this.values.hwb;return E[1]+=E[1]*h,this.setValues("hwb",E),this},blacken:function(h){var E=this.values.hwb;return E[2]+=E[2]*h,this.setValues("hwb",E),this},greyscale:function(){var h=this.values.rgb,E=.3*h[0]+.59*h[1]+.11*h[2];return this.setValues("rgb",[E,E,E]),this},clearer:function(h){var E=this.values.alpha;return this.setValues("alpha",E-E*h),this},opaquer:function(h){var E=this.values.alpha;return this.setValues("alpha",E+E*h),this},rotate:function(h){var E=this.values.hsl,N=(E[0]+h)%360;return E[0]=N<0?360+N:N,this.setValues("hsl",E),this},mix:function(h,E){var N=this,k=h,K=void 0===E?.5:E,de=2*K-1,be=N.alpha()-k.alpha(),Ue=((de*be==-1?de:(de+be)/(1+de*be))+1)/2,we=1-Ue;return this.rgb(Ue*N.red()+we*k.red(),Ue*N.green()+we*k.green(),Ue*N.blue()+we*k.blue()).alpha(N.alpha()*K+k.alpha()*(1-K))},toJSON:function(){return this.rgb()},clone:function(){var k,K,h=new Hn,E=this.values,N=h.values;for(var de in E)E.hasOwnProperty(de)&&("[object Array]"===(K={}.toString.call(k=E[de]))?N[de]=k.slice(0):"[object Number]"===K?N[de]=k:console.error("unexpected color value:",k));return h}},Hn.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Hn.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Hn.prototype.getValues=function(h){for(var E=this.values,N={},k=0;k<h.length;k++)N[h.charAt(k)]=E[h][k];return 1!==E.alpha&&(N.a=E.alpha),N},Hn.prototype.setValues=function(h,E){var be,we,N=this.values,k=this.spaces,K=this.maxes,de=1;if(this.valid=!0,"alpha"===h)de=E;else if(E.length)N[h]=E.slice(0,h.length),de=E[h.length];else if(void 0!==E[h.charAt(0)]){for(be=0;be<h.length;be++)N[h][be]=E[h.charAt(be)];de=E.a}else if(void 0!==E[k[h][0]]){var Ue=k[h];for(be=0;be<h.length;be++)N[h][be]=E[Ue[be]];de=E.alpha}if(N.alpha=Math.max(0,Math.min(1,void 0===de?N.alpha:de)),"alpha"===h)return!1;for(be=0;be<h.length;be++)we=Math.max(0,Math.min(K[h][be],N[h][be])),N[h][be]=Math.round(we);for(var Xe in k)Xe!==h&&(N[Xe]=Ie[h][Xe](N[h]));return!0},Hn.prototype.setSpace=function(h,E){var N=E[0];return void 0===N?this.getValues(h):("number"==typeof N&&(N=Array.prototype.slice.call(E)),this.setValues(h,N),this)},Hn.prototype.setChannel=function(h,E,N){var k=this.values[h];return void 0===N?k[E]:(N===k[E]||(k[E]=N,this.setValues(h,k)),this)},"undefined"!=typeof window&&(window.Color=Hn);var Zr=Hn;function Ur(h){return-1===["__proto__","prototype","constructor"].indexOf(h)}var h,di={noop:function(){},uid:(h=0,function(){return h++}),isNullOrUndef:function(h){return null==h},isArray:function(h){if(Array.isArray&&Array.isArray(h))return!0;var E=Object.prototype.toString.call(h);return"[object"===E.substr(0,7)&&"Array]"===E.substr(-6)},isObject:function(h){return null!==h&&"[object Object]"===Object.prototype.toString.call(h)},isFinite:function(h){return("number"==typeof h||h instanceof Number)&&isFinite(h)},valueOrDefault:function(h,E){return void 0===h?E:h},valueAtIndexOrDefault:function(h,E,N){return di.valueOrDefault(di.isArray(h)?h[E]:h,N)},callback:function(h,E,N){if(h&&"function"==typeof h.call)return h.apply(N,E)},each:function(h,E,N,k){var K,de,be;if(di.isArray(h))if(de=h.length,k)for(K=de-1;K>=0;K--)E.call(N,h[K],K);else for(K=0;K<de;K++)E.call(N,h[K],K);else if(di.isObject(h))for(de=(be=Object.keys(h)).length,K=0;K<de;K++)E.call(N,h[be[K]],be[K])},arrayEquals:function(h,E){var N,k,K,de;if(!h||!E||h.length!==E.length)return!1;for(N=0,k=h.length;N<k;++N)if(de=E[N],(K=h[N])instanceof Array&&de instanceof Array){if(!di.arrayEquals(K,de))return!1}else if(K!==de)return!1;return!0},clone:function(h){if(di.isArray(h))return h.map(di.clone);if(di.isObject(h)){for(var E=Object.create(h),N=Object.keys(h),k=N.length,K=0;K<k;++K)E[N[K]]=di.clone(h[N[K]]);return E}return h},_merger:function(h,E,N,k){if(Ur(h)){var K=E[h],de=N[h];di.isObject(K)&&di.isObject(de)?di.merge(K,de,k):E[h]=di.clone(de)}},_mergerIf:function(h,E,N){if(Ur(h)){var k=E[h],K=N[h];di.isObject(k)&&di.isObject(K)?di.mergeIf(k,K):E.hasOwnProperty(h)||(E[h]=di.clone(K))}},merge:function(h,E,N){var de,be,Ue,we,Xe,k=di.isArray(E)?E:[E],K=k.length;if(!di.isObject(h))return h;for(de=(N=N||{}).merger||di._merger,be=0;be<K;++be)if(di.isObject(E=k[be]))for(Xe=0,we=(Ue=Object.keys(E)).length;Xe<we;++Xe)de(Ue[Xe],h,E,N);return h},mergeIf:function(h,E){return di.merge(h,E,{merger:di._mergerIf})},extend:Object.assign||function(h){return di.merge(h,[].slice.call(arguments,1),{merger:function(E,N,k){N[E]=k[E]}})},inherits:function(h){var E=this,N=h&&h.hasOwnProperty("constructor")?h.constructor:function(){return E.apply(this,arguments)},k=function(){this.constructor=N};return k.prototype=E.prototype,N.prototype=new k,N.extend=di.inherits,h&&di.extend(N.prototype,h),N.__super__=E.prototype,N},_deprecated:function(h,E,N,k){void 0!==E&&console.warn(h+': "'+N+'" is deprecated. Please use "'+k+'" instead')}},$i=di;di.callCallback=di.callback,di.indexOf=function(h,E,N){return Array.prototype.indexOf.call(h,E,N)},di.getValueOrDefault=di.valueOrDefault,di.getValueAtIndexOrDefault=di.valueAtIndexOrDefault;var Hi={linear:function(h){return h},easeInQuad:function(h){return h*h},easeOutQuad:function(h){return-h*(h-2)},easeInOutQuad:function(h){return(h/=.5)<1?.5*h*h:-.5*(--h*(h-2)-1)},easeInCubic:function(h){return h*h*h},easeOutCubic:function(h){return(h-=1)*h*h+1},easeInOutCubic:function(h){return(h/=.5)<1?.5*h*h*h:.5*((h-=2)*h*h+2)},easeInQuart:function(h){return h*h*h*h},easeOutQuart:function(h){return-((h-=1)*h*h*h-1)},easeInOutQuart:function(h){return(h/=.5)<1?.5*h*h*h*h:-.5*((h-=2)*h*h*h-2)},easeInQuint:function(h){return h*h*h*h*h},easeOutQuint:function(h){return(h-=1)*h*h*h*h+1},easeInOutQuint:function(h){return(h/=.5)<1?.5*h*h*h*h*h:.5*((h-=2)*h*h*h*h+2)},easeInSine:function(h){return 1-Math.cos(h*(Math.PI/2))},easeOutSine:function(h){return Math.sin(h*(Math.PI/2))},easeInOutSine:function(h){return-.5*(Math.cos(Math.PI*h)-1)},easeInExpo:function(h){return 0===h?0:Math.pow(2,10*(h-1))},easeOutExpo:function(h){return 1===h?1:1-Math.pow(2,-10*h)},easeInOutExpo:function(h){return 0===h?0:1===h?1:(h/=.5)<1?.5*Math.pow(2,10*(h-1)):.5*(2-Math.pow(2,-10*--h))},easeInCirc:function(h){return h>=1?h:-(Math.sqrt(1-h*h)-1)},easeOutCirc:function(h){return Math.sqrt(1-(h-=1)*h)},easeInOutCirc:function(h){return(h/=.5)<1?-.5*(Math.sqrt(1-h*h)-1):.5*(Math.sqrt(1-(h-=2)*h)+1)},easeInElastic:function(h){var E=1.70158,N=0,k=1;return 0===h?0:1===h?1:(N||(N=.3),k<1?(k=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/k),-k*Math.pow(2,10*(h-=1))*Math.sin((h-E)*(2*Math.PI)/N))},easeOutElastic:function(h){var E=1.70158,N=0,k=1;return 0===h?0:1===h?1:(N||(N=.3),k<1?(k=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/k),k*Math.pow(2,-10*h)*Math.sin((h-E)*(2*Math.PI)/N)+1)},easeInOutElastic:function(h){var E=1.70158,N=0,k=1;return 0===h?0:2==(h/=.5)?1:(N||(N=.45),k<1?(k=1,E=N/4):E=N/(2*Math.PI)*Math.asin(1/k),h<1?k*Math.pow(2,10*(h-=1))*Math.sin((h-E)*(2*Math.PI)/N)*-.5:k*Math.pow(2,-10*(h-=1))*Math.sin((h-E)*(2*Math.PI)/N)*.5+1)},easeInBack:function(h){var E=1.70158;return h*h*((E+1)*h-E)},easeOutBack:function(h){var E=1.70158;return(h-=1)*h*((E+1)*h+E)+1},easeInOutBack:function(h){var E=1.70158;return(h/=.5)<1?h*h*((1+(E*=1.525))*h-E)*.5:.5*((h-=2)*h*((1+(E*=1.525))*h+E)+2)},easeInBounce:function(h){return 1-Hi.easeOutBounce(1-h)},easeOutBounce:function(h){return h<1/2.75?7.5625*h*h:h<2/2.75?7.5625*(h-=1.5/2.75)*h+.75:h<2.5/2.75?7.5625*(h-=2.25/2.75)*h+.9375:7.5625*(h-=2.625/2.75)*h+.984375},easeInOutBounce:function(h){return h<.5?.5*Hi.easeInBounce(2*h):.5*Hi.easeOutBounce(2*h-1)+.5}},Br={effects:Hi};$i.easingEffects=Hi;var On=Math.PI,Wt=On/180,Jn=2*On,ir=On/2,Lr=On/4,Vn=2*On/3,zr={clear:function(h){h.ctx.clearRect(0,0,h.width,h.height)},roundedRect:function(h,E,N,k,K,de){if(de){var be=Math.min(de,K/2,k/2),Ue=E+be,we=N+be,Xe=E+k-be,gt=N+K-be;h.moveTo(E,we),Ue<Xe&&we<gt?(h.arc(Ue,we,be,-On,-ir),h.arc(Xe,we,be,-ir,0),h.arc(Xe,gt,be,0,ir),h.arc(Ue,gt,be,ir,On)):Ue<Xe?(h.moveTo(Ue,N),h.arc(Xe,we,be,-ir,ir),h.arc(Ue,we,be,ir,On+ir)):we<gt?(h.arc(Ue,we,be,-On,0),h.arc(Ue,gt,be,0,On)):h.arc(Ue,we,be,-On,On),h.closePath(),h.moveTo(E,N)}else h.rect(E,N,k,K)},drawPoint:function(h,E,N,k,K,de){var be,Ue,we,Xe,gt,vt=(de||0)*Wt;if(E&&"object"==typeof E&&("[object HTMLImageElement]"===(be=E.toString())||"[object HTMLCanvasElement]"===be))return h.save(),h.translate(k,K),h.rotate(vt),h.drawImage(E,-E.width/2,-E.height/2,E.width,E.height),void h.restore();if(!(isNaN(N)||N<=0)){switch(h.beginPath(),E){default:h.arc(k,K,N,0,Jn),h.closePath();break;case"triangle":h.moveTo(k+Math.sin(vt)*N,K-Math.cos(vt)*N),vt+=Vn,h.lineTo(k+Math.sin(vt)*N,K-Math.cos(vt)*N),vt+=Vn,h.lineTo(k+Math.sin(vt)*N,K-Math.cos(vt)*N),h.closePath();break;case"rectRounded":Xe=N-(gt=.516*N),Ue=Math.cos(vt+Lr)*Xe,we=Math.sin(vt+Lr)*Xe,h.arc(k-Ue,K-we,gt,vt-On,vt-ir),h.arc(k+we,K-Ue,gt,vt-ir,vt),h.arc(k+Ue,K+we,gt,vt,vt+ir),h.arc(k-we,K+Ue,gt,vt+ir,vt+On),h.closePath();break;case"rect":if(!de){Xe=Math.SQRT1_2*N,h.rect(k-Xe,K-Xe,2*Xe,2*Xe);break}vt+=Lr;case"rectRot":Ue=Math.cos(vt)*N,we=Math.sin(vt)*N,h.moveTo(k-Ue,K-we),h.lineTo(k+we,K-Ue),h.lineTo(k+Ue,K+we),h.lineTo(k-we,K+Ue),h.closePath();break;case"crossRot":vt+=Lr;case"cross":Ue=Math.cos(vt)*N,we=Math.sin(vt)*N,h.moveTo(k-Ue,K-we),h.lineTo(k+Ue,K+we),h.moveTo(k+we,K-Ue),h.lineTo(k-we,K+Ue);break;case"star":Ue=Math.cos(vt)*N,we=Math.sin(vt)*N,h.moveTo(k-Ue,K-we),h.lineTo(k+Ue,K+we),h.moveTo(k+we,K-Ue),h.lineTo(k-we,K+Ue),vt+=Lr,Ue=Math.cos(vt)*N,we=Math.sin(vt)*N,h.moveTo(k-Ue,K-we),h.lineTo(k+Ue,K+we),h.moveTo(k+we,K-Ue),h.lineTo(k-we,K+Ue);break;case"line":Ue=Math.cos(vt)*N,we=Math.sin(vt)*N,h.moveTo(k-Ue,K-we),h.lineTo(k+Ue,K+we);break;case"dash":h.moveTo(k,K),h.lineTo(k+Math.cos(vt)*N,K+Math.sin(vt)*N)}h.fill(),h.stroke()}},_isPointInArea:function(h,E){var N=1e-6;return h.x>E.left-N&&h.x<E.right+N&&h.y>E.top-N&&h.y<E.bottom+N},clipArea:function(h,E){h.save(),h.beginPath(),h.rect(E.left,E.top,E.right-E.left,E.bottom-E.top),h.clip()},unclipArea:function(h){h.restore()},lineTo:function(h,E,N,k){var K=N.steppedLine;if(K){if("middle"===K){var de=(E.x+N.x)/2;h.lineTo(de,k?N.y:E.y),h.lineTo(de,k?E.y:N.y)}else"after"===K&&!k||"after"!==K&&k?h.lineTo(E.x,N.y):h.lineTo(N.x,E.y);h.lineTo(N.x,N.y)}else N.tension?h.bezierCurveTo(k?E.controlPointPreviousX:E.controlPointNextX,k?E.controlPointPreviousY:E.controlPointNextY,k?N.controlPointNextX:N.controlPointPreviousX,k?N.controlPointNextY:N.controlPointPreviousY,N.x,N.y):h.lineTo(N.x,N.y)}},hi=zr;$i.clear=zr.clear,$i.drawRoundedRectangle=function(h){h.beginPath(),zr.roundedRect.apply(zr,arguments)};var Ai={_set:function(h,E){return $i.merge(this[h]||(this[h]={}),E)}};Ai._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var Tr=Ai,Nr=$i.valueOrDefault;var En={toLineHeight:function(h,E){var N=(""+h).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!N||"normal"===N[1])return 1.2*E;switch(h=+N[2],N[3]){case"px":return h;case"%":h/=100}return E*h},toPadding:function(h){var E,N,k,K;return $i.isObject(h)?(E=+h.top||0,N=+h.right||0,k=+h.bottom||0,K=+h.left||0):E=N=k=K=+h||0,{top:E,right:N,bottom:k,left:K,height:E+k,width:K+N}},_parseFont:function(h){var E=Tr.global,N=Nr(h.fontSize,E.defaultFontSize),k={family:Nr(h.fontFamily,E.defaultFontFamily),lineHeight:$i.options.toLineHeight(Nr(h.lineHeight,E.defaultLineHeight),N),size:N,style:Nr(h.fontStyle,E.defaultFontStyle),weight:null,string:""};return k.string=function(h){return!h||$i.isNullOrUndef(h.size)||$i.isNullOrUndef(h.family)?null:(h.style?h.style+" ":"")+(h.weight?h.weight+" ":"")+h.size+"px "+h.family}(k),k},resolve:function(h,E,N,k){var de,be,Ue,K=!0;for(de=0,be=h.length;de<be;++de)if(void 0!==(Ue=h[de])&&(void 0!==E&&"function"==typeof Ue&&(Ue=Ue(E),K=!1),void 0!==N&&$i.isArray(Ue)&&(Ue=Ue[N],K=!1),void 0!==Ue))return k&&!K&&(k.cacheable=!1),Ue}},mr={_factorize:function(h){var k,E=[],N=Math.sqrt(h);for(k=1;k<N;k++)h%k==0&&(E.push(k),E.push(h/k));return N===(0|N)&&E.push(N),E.sort(function(K,de){return K-de}).pop(),E},log10:Math.log10||function(h){var E=Math.log(h)*Math.LOG10E,N=Math.round(E);return h===Math.pow(10,N)?N:E}},Xt=mr;$i.log10=mr.log10;var Ze=$i,jt=hi,xt=En,mn=Xt,Wn={getRtlAdapter:function(h,E,N){return h?function(h,E){return{x:function(N){return h+h+E-N},setWidth:function(N){E=N},textAlign:function(N){return"center"===N?N:"right"===N?"left":"right"},xPlus:function(N,k){return N-k},leftForLtr:function(N,k){return N-k}}}(E,N):{x:function(h){return h},setWidth:function(h){},textAlign:function(h){return h},xPlus:function(h,E){return h+E},leftForLtr:function(h,E){return h}}},overrideTextDirection:function(h,E){var N,k;("ltr"===E||"rtl"===E)&&(k=[(N=h.canvas.style).getPropertyValue("direction"),N.getPropertyPriority("direction")],N.setProperty("direction",E,"important"),h.prevTextDirection=k)},restoreTextDirection:function(h){var E=h.prevTextDirection;void 0!==E&&(delete h.prevTextDirection,h.canvas.style.setProperty("direction",E[0],E[1]))}};Ze.easing=Br,Ze.canvas=jt,Ze.options=xt,Ze.math=mn,Ze.rtl=Wn;var wn=function(h){Ze.extend(this,h),this.initialize.apply(this,arguments)};Ze.extend(wn.prototype,{_type:void 0,initialize:function(){this.hidden=!1},pivot:function(){var h=this;return h._view||(h._view=Ze.extend({},h._model)),h._start={},h},transition:function(h){var E=this,N=E._model,k=E._start,K=E._view;return N&&1!==h?(K||(K=E._view={}),k||(k=E._start={}),function(h,E,N,k){var de,be,Ue,we,Xe,gt,vt,Jt,Pn,K=Object.keys(N);for(de=0,be=K.length;de<be;++de)if(gt=N[Ue=K[de]],E.hasOwnProperty(Ue)||(E[Ue]=gt),(we=E[Ue])!==gt&&"_"!==Ue[0]){if(h.hasOwnProperty(Ue)||(h[Ue]=we),(vt=typeof gt)==typeof(Xe=h[Ue]))if("string"===vt){if((Jt=Zr(Xe)).valid&&(Pn=Zr(gt)).valid){E[Ue]=Pn.mix(Jt,k).rgbString();continue}}else if(Ze.isFinite(Xe)&&Ze.isFinite(gt)){E[Ue]=Xe+(gt-Xe)*k;continue}E[Ue]=gt}}(k,K,N,h),E):(E._view=Ze.extend({},N),E._start=null,E)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return Ze.isNumber(this._model.x)&&Ze.isNumber(this._model.y)}}),wn.extend=Ze.inherits;var nr=wn,Gi=nr.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),po=Gi;Object.defineProperty(Gi.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(Gi.prototype,"chartInstance",{get:function(){return this.chart},set:function(h){this.chart=h}}),Tr._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:Ze.noop,onComplete:Ze.noop}});var yo={animations:[],request:null,addAnimation:function(h,E,N,k){var de,be,K=this.animations;for(E.chart=h,E.startTime=Date.now(),E.duration=N,k||(h.animating=!0),de=0,be=K.length;de<be;++de)if(K[de].chart===h)return void(K[de]=E);K.push(E),1===K.length&&this.requestAnimationFrame()},cancelAnimation:function(h){var E=Ze.findIndex(this.animations,function(N){return N.chart===h});-1!==E&&(this.animations.splice(E,1),h.animating=!1)},requestAnimationFrame:function(){var h=this;null===h.request&&(h.request=Ze.requestAnimFrame.call(window,function(){h.request=null,h.startDigest()}))},startDigest:function(){var h=this;h.advance(),h.animations.length>0&&h.requestAnimationFrame()},advance:function(){for(var E,N,k,K,h=this.animations,de=0;de<h.length;)N=(E=h[de]).chart,k=E.numSteps,K=Math.floor((Date.now()-E.startTime)/E.duration*k)+1,E.currentStep=Math.min(K,k),Ze.callback(E.render,[N,E],N),Ze.callback(E.onAnimationProgress,[E],N),E.currentStep>=k?(Ze.callback(E.onAnimationComplete,[E],N),N.animating=!1,h.splice(de,1)):++de}},Mo=Ze.options.resolve,Vi=["push","pop","shift","splice","unshift"];function zo(h,E){var N=h._chartjs;if(N){var k=N.listeners,K=k.indexOf(E);-1!==K&&k.splice(K,1),!(k.length>0)&&(Vi.forEach(function(de){delete h[de]}),delete h._chartjs)}}var So=function(h,E){this.initialize(h,E)};Ze.extend(So.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(h,E){var N=this;N.chart=h,N.index=E,N.linkScales(),N.addElements(),N._type=N.getMeta().type},updateIndex:function(h){this.index=h},linkScales:function(){var h=this,E=h.getMeta(),N=h.chart,k=N.scales,K=h.getDataset(),de=N.options.scales;(null===E.xAxisID||!(E.xAxisID in k)||K.xAxisID)&&(E.xAxisID=K.xAxisID||de.xAxes[0].id),(null===E.yAxisID||!(E.yAxisID in k)||K.yAxisID)&&(E.yAxisID=K.yAxisID||de.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(h){return this.chart.scales[h]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&zo(this._data,this)},createMetaDataset:function(){var h=this,E=h.datasetElementType;return E&&new E({_chart:h.chart,_datasetIndex:h.index})},createMetaData:function(h){var E=this,N=E.dataElementType;return N&&new N({_chart:E.chart,_datasetIndex:E.index,_index:h})},addElements:function(){var K,de,h=this,E=h.getMeta(),N=h.getDataset().data||[],k=E.data;for(K=0,de=N.length;K<de;++K)k[K]=k[K]||h.createMetaData(K);E.dataset=E.dataset||h.createMetaDataset()},addElementAndReset:function(h){var E=this.createMetaData(h);this.getMeta().data.splice(h,0,E),this.updateElement(E,h,!0)},buildOrUpdateElements:function(){var h=this,E=h.getDataset(),N=E.data||(E.data=[]);h._data!==N&&(h._data&&zo(h._data,h),N&&Object.isExtensible(N)&&function(h,E){h._chartjs?h._chartjs.listeners.push(E):(Object.defineProperty(h,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[E]}}),Vi.forEach(function(N){var k="onData"+N.charAt(0).toUpperCase()+N.slice(1),K=h[N];Object.defineProperty(h,N,{configurable:!0,enumerable:!1,value:function(){var de=Array.prototype.slice.call(arguments),be=K.apply(this,de);return Ze.each(h._chartjs.listeners,function(Ue){"function"==typeof Ue[k]&&Ue[k].apply(Ue,de)}),be}})}))}(N,h),h._data=N),h.resyncElements()},_configure:function(){var h=this;h._config=Ze.merge(Object.create(null),[h.chart.options.datasets[h._type],h.getDataset()],{merger:function(E,N,k){"_meta"!==E&&"data"!==E&&Ze._merger(E,N,k)}})},_update:function(h){var E=this;E._configure(),E._cachedDataOpts=null,E.update(h)},update:Ze.noop,transition:function(h){for(var E=this.getMeta(),N=E.data||[],k=N.length,K=0;K<k;++K)N[K].transition(h);E.dataset&&E.dataset.transition(h)},draw:function(){var h=this.getMeta(),E=h.data||[],N=E.length,k=0;for(h.dataset&&h.dataset.draw();k<N;++k)E[k].draw()},getStyle:function(h){var K,E=this,N=E.getMeta(),k=N.dataset;return E._configure(),(!1===(K=k&&void 0===h?E._resolveDatasetElementOptions(k||{}):E._resolveDataElementOptions(N.data[h=h||0]||{},h)).fill||null===K.fill)&&(K.backgroundColor=K.borderColor),K},_resolveDatasetElementOptions:function(h,E){var Xe,gt,vt,Jt,N=this,k=N.chart,K=N._config,de=h.custom||{},be=k.options.elements[N.datasetElementType.prototype._type]||{},Ue=N._datasetElementOptions,we={},Pn={chart:k,dataset:N.getDataset(),datasetIndex:N.index,hover:E};for(Xe=0,gt=Ue.length;Xe<gt;++Xe)vt=Ue[Xe],Jt=E?"hover"+vt.charAt(0).toUpperCase()+vt.slice(1):vt,we[vt]=Mo([de[Jt],K[Jt],be[Jt]],Pn);return we},_resolveDataElementOptions:function(h,E){var N=this,k=h&&h.custom,K=N._cachedDataOpts;if(K&&!k)return K;var Jt,Pn,Rn,sr,de=N.chart,be=N._config,Ue=de.options.elements[N.dataElementType.prototype._type]||{},we=N._dataElementOptions,Xe={},gt={chart:de,dataIndex:E,dataset:N.getDataset(),datasetIndex:N.index},vt={cacheable:!k};if(k=k||{},Ze.isArray(we))for(Pn=0,Rn=we.length;Pn<Rn;++Pn)Xe[sr=we[Pn]]=Mo([k[sr],be[sr],Ue[sr]],gt,E,vt);else for(Pn=0,Rn=(Jt=Object.keys(we)).length;Pn<Rn;++Pn)Xe[sr=Jt[Pn]]=Mo([k[sr],be[we[sr]],be[sr],Ue[sr]],gt,E,vt);return vt.cacheable&&(N._cachedDataOpts=Object.freeze(Xe)),Xe},removeHoverStyle:function(h){Ze.merge(h._model,h.$previousStyle||{}),delete h.$previousStyle},setHoverStyle:function(h){var E=this.chart.data.datasets[h._datasetIndex],N=h._index,k=h.custom||{},K=h._model,de=Ze.getHoverColor;h.$previousStyle={backgroundColor:K.backgroundColor,borderColor:K.borderColor,borderWidth:K.borderWidth},K.backgroundColor=Mo([k.hoverBackgroundColor,E.hoverBackgroundColor,de(K.backgroundColor)],void 0,N),K.borderColor=Mo([k.hoverBorderColor,E.hoverBorderColor,de(K.borderColor)],void 0,N),K.borderWidth=Mo([k.hoverBorderWidth,E.hoverBorderWidth,K.borderWidth],void 0,N)},_removeDatasetHoverStyle:function(){var h=this.getMeta().dataset;h&&this.removeHoverStyle(h)},_setDatasetHoverStyle:function(){var N,k,K,de,be,Ue,h=this.getMeta().dataset,E={};if(h){for(Ue=h._model,be=this._resolveDatasetElementOptions(h,!0),N=0,k=(de=Object.keys(be)).length;N<k;++N)E[K=de[N]]=Ue[K],Ue[K]=be[K];h.$previousStyle=E}},resyncElements:function(){var h=this,E=h.getMeta(),N=h.getDataset().data,k=E.data.length,K=N.length;K<k?E.data.splice(K,k-K):K>k&&h.insertElements(k,K-k)},insertElements:function(h,E){for(var N=0;N<E;++N)this.addElementAndReset(h+N)},onDataPush:function(){var h=arguments.length;this.insertElements(this.getDataset().data.length-h,h)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(h,E){this.getMeta().data.splice(h,E),this.insertElements(h,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),So.extend=Ze.inherits;var Si=So,ai=2*Math.PI;function Zn(h,E){var N=E.startAngle,k=E.endAngle,K=E.pixelMargin,de=K/E.outerRadius,be=E.x,Ue=E.y;h.beginPath(),h.arc(be,Ue,E.outerRadius,N-de,k+de),E.innerRadius>K?h.arc(be,Ue,E.innerRadius-K,k+(de=K/E.innerRadius),N-de,!0):h.arc(be,Ue,K,k+Math.PI/2,N-Math.PI/2),h.closePath(),h.clip()}function yr(h,E,N){var k="inner"===E.borderAlign;k?(h.lineWidth=2*E.borderWidth,h.lineJoin="round"):(h.lineWidth=E.borderWidth,h.lineJoin="bevel"),N.fullCircles&&function(h,E,N,k){var de,K=N.endAngle;for(k&&(N.endAngle=N.startAngle+ai,Zn(h,N),N.endAngle=K,N.endAngle===N.startAngle&&N.fullCircles&&(N.endAngle+=ai,N.fullCircles--)),h.beginPath(),h.arc(N.x,N.y,N.innerRadius,N.startAngle+ai,N.startAngle,!0),de=0;de<N.fullCircles;++de)h.stroke();for(h.beginPath(),h.arc(N.x,N.y,E.outerRadius,N.startAngle,N.startAngle+ai),de=0;de<N.fullCircles;++de)h.stroke()}(h,E,N,k),k&&Zn(h,N),h.beginPath(),h.arc(N.x,N.y,E.outerRadius,N.startAngle,N.endAngle),h.arc(N.x,N.y,N.innerRadius,N.endAngle,N.startAngle,!0),h.closePath(),h.stroke()}Tr._set("global",{elements:{arc:{backgroundColor:Tr.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var rr=nr.extend({_type:"arc",inLabelRange:function(h){var E=this._view;return!!E&&Math.pow(h-E.x,2)<Math.pow(E.radius+E.hoverRadius,2)},inRange:function(h,E){var N=this._view;if(N){for(var k=Ze.getAngleFromPoint(N,{x:h,y:E}),K=k.angle,de=k.distance,be=N.startAngle,Ue=N.endAngle;Ue<be;)Ue+=ai;for(;K>Ue;)K-=ai;for(;K<be;)K+=ai;return K>=be&&K<=Ue&&de>=N.innerRadius&&de<=N.outerRadius}return!1},getCenterPoint:function(){var h=this._view,E=(h.startAngle+h.endAngle)/2,N=(h.innerRadius+h.outerRadius)/2;return{x:h.x+Math.cos(E)*N,y:h.y+Math.sin(E)*N}},getArea:function(){var h=this._view;return Math.PI*((h.endAngle-h.startAngle)/(2*Math.PI))*(Math.pow(h.outerRadius,2)-Math.pow(h.innerRadius,2))},tooltipPosition:function(){var h=this._view,E=h.startAngle+(h.endAngle-h.startAngle)/2,N=(h.outerRadius-h.innerRadius)/2+h.innerRadius;return{x:h.x+Math.cos(E)*N,y:h.y+Math.sin(E)*N}},draw:function(){var K,h=this._chart.ctx,E=this._view,N="inner"===E.borderAlign?.33:0,k={x:E.x,y:E.y,innerRadius:E.innerRadius,outerRadius:Math.max(E.outerRadius-N,0),pixelMargin:N,startAngle:E.startAngle,endAngle:E.endAngle,fullCircles:Math.floor(E.circumference/ai)};if(h.save(),h.fillStyle=E.backgroundColor,h.strokeStyle=E.borderColor,k.fullCircles){for(k.endAngle=k.startAngle+ai,h.beginPath(),h.arc(k.x,k.y,k.outerRadius,k.startAngle,k.endAngle),h.arc(k.x,k.y,k.innerRadius,k.endAngle,k.startAngle,!0),h.closePath(),K=0;K<k.fullCircles;++K)h.fill();k.endAngle=k.startAngle+E.circumference%ai}h.beginPath(),h.arc(k.x,k.y,k.outerRadius,k.startAngle,k.endAngle),h.arc(k.x,k.y,k.innerRadius,k.endAngle,k.startAngle,!0),h.closePath(),h.fill(),E.borderWidth&&yr(h,E,k),h.restore()}}),ri=Ze.valueOrDefault,ho=Tr.global.defaultColor;Tr._set("global",{elements:{line:{tension:.4,backgroundColor:ho,borderWidth:3,borderColor:ho,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Ti=nr.extend({_type:"line",draw:function(){var Xe,gt,vt,h=this,E=h._view,N=h._chart.ctx,k=E.spanGaps,K=h._children.slice(),de=Tr.global,be=de.elements.line,Ue=-1,we=h._loop;if(K.length){if(h._loop){for(Xe=0;Xe<K.length;++Xe)if(gt=Ze.previousItem(K,Xe),!K[Xe]._view.skip&&gt._view.skip){K=K.slice(Xe).concat(K.slice(0,Xe)),we=k;break}we&&K.push(K[0])}for(N.save(),N.lineCap=E.borderCapStyle||be.borderCapStyle,N.setLineDash&&N.setLineDash(E.borderDash||be.borderDash),N.lineDashOffset=ri(E.borderDashOffset,be.borderDashOffset),N.lineJoin=E.borderJoinStyle||be.borderJoinStyle,N.lineWidth=ri(E.borderWidth,be.borderWidth),N.strokeStyle=E.borderColor||de.defaultColor,N.beginPath(),(vt=K[0]._view).skip||(N.moveTo(vt.x,vt.y),Ue=0),Xe=1;Xe<K.length;++Xe)vt=K[Xe]._view,gt=-1===Ue?Ze.previousItem(K,Xe):K[Ue],vt.skip||(Ue!==Xe-1&&!k||-1===Ue?N.moveTo(vt.x,vt.y):Ze.canvas.lineTo(N,gt._view,vt),Ue=Xe);we&&N.closePath(),N.stroke(),N.restore()}}}),Bo=Ze.valueOrDefault,xo=Tr.global.defaultColor;function Li(h){var E=this._view;return!!E&&Math.abs(h-E.x)<E.radius+E.hitRadius}Tr._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:xo,borderColor:xo,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var ln=nr.extend({_type:"point",inRange:function(h,E){var N=this._view;return!!N&&Math.pow(h-N.x,2)+Math.pow(E-N.y,2)<Math.pow(N.hitRadius+N.radius,2)},inLabelRange:Li,inXRange:Li,inYRange:function(h){var E=this._view;return!!E&&Math.abs(h-E.y)<E.radius+E.hitRadius},getCenterPoint:function(){var h=this._view;return{x:h.x,y:h.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var h=this._view;return{x:h.x,y:h.y,padding:h.radius+h.borderWidth}},draw:function(h){var E=this._view,N=this._chart.ctx,k=E.pointStyle,K=E.rotation,de=E.radius,be=E.x,Ue=E.y,we=Tr.global,Xe=we.defaultColor;E.skip||(void 0===h||Ze.canvas._isPointInArea(E,h))&&(N.strokeStyle=E.borderColor||Xe,N.lineWidth=Bo(E.borderWidth,we.elements.point.borderWidth),N.fillStyle=E.backgroundColor||Xe,Ze.canvas.drawPoint(N,k,de,be,Ue,K))}}),Ht=Tr.global.defaultColor;function cn(h){return h&&void 0!==h.width}function Ct(h){var E,N,k,K,de;return cn(h)?(E=h.x-(de=h.width/2),N=h.x+de,k=Math.min(h.y,h.base),K=Math.max(h.y,h.base)):(de=h.height/2,E=Math.min(h.x,h.base),N=Math.max(h.x,h.base),k=h.y-de,K=h.y+de),{left:E,top:k,right:N,bottom:K}}function pr(h,E,N){return h===E?N:h===N?E:h}function Cn(h,E,N){var de,be,Ue,we,k=h.borderWidth,K=function(h){var E=h.borderSkipped,N={};return E&&(h.horizontal?h.base>h.x&&(E=pr(E,"left","right")):h.base<h.y&&(E=pr(E,"bottom","top")),N[E]=!0),N}(h);return Ze.isObject(k)?(de=+k.top||0,be=+k.right||0,Ue=+k.bottom||0,we=+k.left||0):de=be=Ue=we=+k||0,{t:K.top||de<0?0:de>N?N:de,r:K.right||be<0?0:be>E?E:be,b:K.bottom||Ue<0?0:Ue>N?N:Ue,l:K.left||we<0?0:we>E?E:we}}function zi(h,E,N){var k=null===E,K=null===N,de=!(!h||k&&K)&&Ct(h);return de&&(k||E>=de.left&&E<=de.right)&&(K||N>=de.top&&N<=de.bottom)}Tr._set("global",{elements:{rectangle:{backgroundColor:Ht,borderColor:Ht,borderSkipped:"bottom",borderWidth:0}}});var Wo=nr.extend({_type:"rectangle",draw:function(){var h=this._chart.ctx,E=this._view,N=function(h){var E=Ct(h),N=E.right-E.left,k=E.bottom-E.top,K=Cn(h,N/2,k/2);return{outer:{x:E.left,y:E.top,w:N,h:k},inner:{x:E.left+K.l,y:E.top+K.t,w:N-K.l-K.r,h:k-K.t-K.b}}}(E),k=N.outer,K=N.inner;h.fillStyle=E.backgroundColor,h.fillRect(k.x,k.y,k.w,k.h),(k.w!==K.w||k.h!==K.h)&&(h.save(),h.beginPath(),h.rect(k.x,k.y,k.w,k.h),h.clip(),h.fillStyle=E.borderColor,h.rect(K.x,K.y,K.w,K.h),h.fill("evenodd"),h.restore())},height:function(){var h=this._view;return h.base-h.y},inRange:function(h,E){return zi(this._view,h,E)},inLabelRange:function(h,E){var N=this._view;return cn(N)?zi(N,h,null):zi(N,null,E)},inXRange:function(h){return zi(this._view,h,null)},inYRange:function(h){return zi(this._view,null,h)},getCenterPoint:function(){var E,N,h=this._view;return cn(h)?(E=h.x,N=(h.y+h.base)/2):(E=(h.x+h.base)/2,N=h.y),{x:E,y:N}},getArea:function(){var h=this._view;return cn(h)?h.width*Math.abs(h.y-h.base):h.height*Math.abs(h.x-h.base)},tooltipPosition:function(){var h=this._view;return{x:h.x,y:h.y}}}),Do={},_s=Ti,bs=ln,qo=Wo;Do.Arc=rr,Do.Line=_s,Do.Point=bs,Do.Rectangle=qo;var ra=Ze._deprecated,Ia=Ze.valueOrDefault;function Bs(h,E,N){var Ue,we,k=N.barThickness,K=E.stackCount,de=E.pixels[h],be=Ze.isNullOrUndef(k)?function(h,E){var k,K,de,be,N=h._length;for(de=1,be=E.length;de<be;++de)N=Math.min(N,Math.abs(E[de]-E[de-1]));for(de=0,be=h.getTicks().length;de<be;++de)K=h.getPixelForTick(de),N=de>0?Math.min(N,Math.abs(K-k)):N,k=K;return N}(E.scale,E.pixels):-1;return Ze.isNullOrUndef(k)?(Ue=be*N.categoryPercentage,we=N.barPercentage):(Ue=k*K,we=1),{chunk:Ue/K,ratio:we,start:de-Ue/2}}Tr._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),Tr._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var yl=Si.extend({dataElementType:Do.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var E,N,h=this;Si.prototype.initialize.apply(h,arguments),(E=h.getMeta()).stack=h.getDataset().stack,E.bar=!0,N=h._getIndexScale().options,ra("bar chart",N.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),ra("bar chart",N.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),ra("bar chart",N.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),ra("bar chart",h._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),ra("bar chart",N.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(h){var k,K,E=this,N=E.getMeta().data;for(E._ruler=E.getRuler(),k=0,K=N.length;k<K;++k)E.updateElement(N[k],k,h)},updateElement:function(h,E,N){var k=this,K=k.getMeta(),de=k.getDataset(),be=k._resolveDataElementOptions(h,E);h._xScale=k.getScaleForId(K.xAxisID),h._yScale=k.getScaleForId(K.yAxisID),h._datasetIndex=k.index,h._index=E,h._model={backgroundColor:be.backgroundColor,borderColor:be.borderColor,borderSkipped:be.borderSkipped,borderWidth:be.borderWidth,datasetLabel:de.label,label:k.chart.data.labels[E]},Ze.isArray(de.data[E])&&(h._model.borderSkipped=null),k._updateElementGeometry(h,E,N,be),h.pivot()},_updateElementGeometry:function(h,E,N,k){var K=this,de=h._model,be=K._getValueScale(),Ue=be.getBasePixel(),we=be.isHorizontal(),Xe=K._ruler||K.getRuler(),gt=K.calculateBarValuePixels(K.index,E,k),vt=K.calculateBarIndexPixels(K.index,E,Xe,k);de.horizontal=we,de.base=N?Ue:gt.base,de.x=we?N?Ue:gt.head:vt.center,de.y=we?vt.center:N?Ue:gt.head,de.height=we?vt.size:void 0,de.width=we?void 0:vt.size},_getStacks:function(h){var Ue,we,N=this._getIndexScale(),k=N._getMatchingVisibleMetas(this._type),K=N.options.stacked,de=k.length,be=[];for(Ue=0;Ue<de&&(we=k[Ue],(!1===K||-1===be.indexOf(we.stack)||void 0===K&&void 0===we.stack)&&be.push(we.stack),we.index!==h);++Ue);return be},getStackCount:function(){return this._getStacks().length},getStackIndex:function(h,E){var N=this._getStacks(h),k=void 0!==E?N.indexOf(E):-1;return-1===k?N.length-1:k},getRuler:function(){var k,K,h=this,E=h._getIndexScale(),N=[];for(k=0,K=h.getMeta().data.length;k<K;++k)N.push(E.getPixelForValue(null,k,h.index));return{pixels:N,start:E._startPixel,end:E._endPixel,stackCount:h.getStackCount(),scale:E}},calculateBarValuePixels:function(h,E,N){var jr,Ni,Vo,$o,Vs,qs,dl,k=this,K=k.chart,de=k._getValueScale(),be=de.isHorizontal(),Ue=K.data.datasets,we=de._getMatchingVisibleMetas(k._type),Xe=de._parseValue(Ue[h].data[E]),gt=N.minBarLength,vt=de.options.stacked,Jt=k.getMeta().stack,Pn=void 0===Xe.start?0:Xe.max>=0&&Xe.min>=0?Xe.min:Xe.max,Rn=void 0===Xe.start?Xe.end:Xe.max>=0&&Xe.min>=0?Xe.max-Xe.min:Xe.min-Xe.max,sr=we.length;if(vt||void 0===vt&&void 0!==Jt)for(jr=0;jr<sr&&(Ni=we[jr]).index!==h;++jr)Ni.stack===Jt&&(Vo=void 0===(dl=de._parseValue(Ue[Ni.index].data[E])).start?dl.end:dl.min>=0&&dl.max>=0?dl.max:dl.min,(Xe.min<0&&Vo<0||Xe.max>=0&&Vo>0)&&(Pn+=Vo));return $o=de.getPixelForValue(Pn),qs=(Vs=de.getPixelForValue(Pn+Rn))-$o,void 0!==gt&&Math.abs(qs)<gt&&(qs=gt,Vs=Rn>=0&&!be||Rn<0&&be?$o-gt:$o+gt),{size:qs,base:$o,head:Vs,center:Vs+qs/2}},calculateBarIndexPixels:function(h,E,N,k){var de="flex"===k.barThickness?function(h,E,N){var we,k=E.pixels,K=k[h],de=h>0?k[h-1]:null,be=h<k.length-1?k[h+1]:null,Ue=N.categoryPercentage;return null===de&&(de=K-(null===be?E.end-E.start:be-K)),null===be&&(be=K+K-de),we=K-(K-Math.min(de,be))/2*Ue,{chunk:Math.abs(be-de)/2*Ue/E.stackCount,ratio:N.barPercentage,start:we}}(E,N,k):Bs(E,N,k),be=this.getStackIndex(h,this.getMeta().stack),Ue=de.start+de.chunk*be+de.chunk/2,we=Math.min(Ia(k.maxBarThickness,1/0),de.chunk*de.ratio);return{base:Ue-we/2,head:Ue+we/2,center:Ue,size:we}},draw:function(){var h=this,E=h.chart,N=h._getValueScale(),k=h.getMeta().data,K=h.getDataset(),de=k.length,be=0;for(Ze.canvas.clipArea(E.ctx,E.chartArea);be<de;++be){var Ue=N._parseValue(K.data[be]);!isNaN(Ue.min)&&!isNaN(Ue.max)&&k[be].draw()}Ze.canvas.unclipArea(E.ctx)},_resolveDataElementOptions:function(){var h=this,E=Ze.extend({},Si.prototype._resolveDataElementOptions.apply(h,arguments)),N=h._getIndexScale().options,k=h._getValueScale().options;return E.barPercentage=Ia(N.barPercentage,E.barPercentage),E.barThickness=Ia(N.barThickness,E.barThickness),E.categoryPercentage=Ia(N.categoryPercentage,E.categoryPercentage),E.maxBarThickness=Ia(N.maxBarThickness,E.maxBarThickness),E.minBarLength=Ia(k.minBarLength,E.minBarLength),E}}),fo=Ze.valueOrDefault,Da=Ze.options.resolve;Tr._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(h,E){return(E.datasets[h.datasetIndex].label||"")+": ("+h.xLabel+", "+h.yLabel+", "+E.datasets[h.datasetIndex].data[h.index].r+")"}}}});var Ao=Si.extend({dataElementType:Do.Point,_dataElementOptions:["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"],update:function(h){var E=this,N=E.getMeta();Ze.each(N.data,function(K,de){E.updateElement(K,de,h)})},updateElement:function(h,E,N){var k=this,K=k.getMeta(),de=h.custom||{},be=k.getScaleForId(K.xAxisID),Ue=k.getScaleForId(K.yAxisID),we=k._resolveDataElementOptions(h,E),Xe=k.getDataset().data[E],gt=k.index,vt=N?be.getPixelForDecimal(.5):be.getPixelForValue("object"==typeof Xe?Xe:NaN,E,gt),Jt=N?Ue.getBasePixel():Ue.getPixelForValue(Xe,E,gt);h._xScale=be,h._yScale=Ue,h._options=we,h._datasetIndex=gt,h._index=E,h._model={backgroundColor:we.backgroundColor,borderColor:we.borderColor,borderWidth:we.borderWidth,hitRadius:we.hitRadius,pointStyle:we.pointStyle,rotation:we.rotation,radius:N?0:we.radius,skip:de.skip||isNaN(vt)||isNaN(Jt),x:vt,y:Jt},h.pivot()},setHoverStyle:function(h){var E=h._model,N=h._options,k=Ze.getHoverColor;h.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=fo(N.hoverBackgroundColor,k(N.backgroundColor)),E.borderColor=fo(N.hoverBorderColor,k(N.borderColor)),E.borderWidth=fo(N.hoverBorderWidth,N.borderWidth),E.radius=N.radius+N.hoverRadius},_resolveDataElementOptions:function(h,E){var N=this,k=N.chart,K=N.getDataset(),de=h.custom||{},be=K.data[E]||{},Ue=Si.prototype._resolveDataElementOptions.apply(N,arguments),we={chart:k,dataIndex:E,dataset:K,datasetIndex:N.index};return N._cachedDataOpts===Ue&&(Ue=Ze.extend({},Ue)),Ue.radius=Da([de.radius,be.r,N._config.radius,k.options.elements.point.radius],we,E),Ue}}),ls=Ze.valueOrDefault,gs=Math.PI,Ra=2*gs,pl=gs/2;Tr._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(h){var de,be,Ue,E=document.createElement("ul"),N=h.data,k=N.datasets,K=N.labels;if(E.setAttribute("class",h.id+"-legend"),k.length)for(de=0,be=k[0].data.length;de<be;++de)(Ue=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=k[0].backgroundColor[de],K[de]&&Ue.appendChild(document.createTextNode(K[de]));return E.outerHTML},legend:{labels:{generateLabels:function(h){var E=h.data;return E.labels.length&&E.datasets.length?E.labels.map(function(N,k){var K=h.getDatasetMeta(0),de=K.controller.getStyle(k);return{text:N,fillStyle:de.backgroundColor,strokeStyle:de.borderColor,lineWidth:de.borderWidth,hidden:isNaN(E.datasets[0].data[k])||K.data[k].hidden,index:k}}):[]}},onClick:function(h,E){var K,de,be,N=E.index,k=this.chart;for(K=0,de=(k.data.datasets||[]).length;K<de;++K)(be=k.getDatasetMeta(K)).data[N]&&(be.data[N].hidden=!be.data[N].hidden);k.update()}},cutoutPercentage:50,rotation:-pl,circumference:Ra,tooltips:{callbacks:{title:function(){return""},label:function(h,E){var N=E.labels[h.index],k=": "+E.datasets[h.datasetIndex].data[h.index];return Ze.isArray(N)?(N=N.slice())[0]+=k:N+=k,N}}}});var Qs=Si.extend({dataElementType:Do.Arc,linkScales:Ze.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],getRingIndex:function(h){for(var E=0,N=0;N<h;++N)this.chart.isDatasetVisible(N)&&++E;return E},update:function(h){var jr,Ni,E=this,N=E.chart,k=N.chartArea,K=N.options,de=1,be=1,Ue=0,we=0,Xe=E.getMeta(),gt=Xe.data,vt=K.cutoutPercentage/100||0,Jt=K.circumference,Pn=E._getRingWeight(E.index);if(Jt<Ra){var Vo=K.rotation%Ra,$o=(Vo+=Vo>=gs?-Ra:Vo<-gs?Ra:0)+Jt,Vs=Math.cos(Vo),qs=Math.sin(Vo),dl=Math.cos($o),ga=Math.sin($o),sa=Vo<=0&&$o>=0||$o>=Ra,Pa=Vo<=pl&&$o>=pl||$o>=Ra+pl,Eu=Vo<=-pl&&$o>=-pl||$o>=gs+pl,wa=Vo===-gs||$o>=gs?-1:Math.min(Vs,Vs*vt,dl,dl*vt),au=Eu?-1:Math.min(qs,qs*vt,ga,ga*vt),mu=sa?1:Math.max(Vs,Vs*vt,dl,dl*vt),xc=Pa?1:Math.max(qs,qs*vt,ga,ga*vt);de=(mu-wa)/2,be=(xc-au)/2,Ue=-(mu+wa)/2,we=-(xc+au)/2}for(jr=0,Ni=gt.length;jr<Ni;++jr)gt[jr]._options=E._resolveDataElementOptions(gt[jr],jr);for(N.borderWidth=E.getMaxBorderWidth(),N.outerRadius=Math.max(Math.min((k.right-k.left-N.borderWidth)/de,(k.bottom-k.top-N.borderWidth)/be)/2,0),N.innerRadius=Math.max(N.outerRadius*vt,0),N.radiusLength=(N.outerRadius-N.innerRadius)/(E._getVisibleDatasetWeightTotal()||1),N.offsetX=Ue*N.outerRadius,N.offsetY=we*N.outerRadius,Xe.total=E.calculateTotal(),E.outerRadius=N.outerRadius-N.radiusLength*E._getRingWeightOffset(E.index),E.innerRadius=Math.max(E.outerRadius-N.radiusLength*Pn,0),jr=0,Ni=gt.length;jr<Ni;++jr)E.updateElement(gt[jr],jr,h)},updateElement:function(h,E,N){var k=this,K=k.chart,de=K.chartArea,be=K.options,Ue=be.animation,we=(de.left+de.right)/2,Xe=(de.top+de.bottom)/2,gt=be.rotation,vt=be.rotation,Jt=k.getDataset(),Pn=N&&Ue.animateRotate||h.hidden?0:k.calculateCircumference(Jt.data[E])*(be.circumference/Ra),jr=h._options||{};Ze.extend(h,{_datasetIndex:k.index,_index:E,_model:{backgroundColor:jr.backgroundColor,borderColor:jr.borderColor,borderWidth:jr.borderWidth,borderAlign:jr.borderAlign,x:we+K.offsetX,y:Xe+K.offsetY,startAngle:gt,endAngle:vt,circumference:Pn,outerRadius:N&&Ue.animateScale?0:k.outerRadius,innerRadius:N&&Ue.animateScale?0:k.innerRadius,label:Ze.valueAtIndexOrDefault(Jt.label,E,K.data.labels[E])}});var Ni=h._model;(!N||!Ue.animateRotate)&&(Ni.startAngle=0===E?be.rotation:k.getMeta().data[E-1]._model.endAngle,Ni.endAngle=Ni.startAngle+Ni.circumference),h.pivot()},calculateTotal:function(){var k,h=this.getDataset(),E=this.getMeta(),N=0;return Ze.each(E.data,function(K,de){k=h.data[de],!isNaN(k)&&!K.hidden&&(N+=Math.abs(k))}),N},calculateCircumference:function(h){var E=this.getMeta().total;return E>0&&!isNaN(h)?Ra*(Math.abs(h)/E):0},getMaxBorderWidth:function(h){var K,de,be,Ue,we,Xe,gt,vt,N=0,k=this.chart;if(!h)for(K=0,de=k.data.datasets.length;K<de;++K)if(k.isDatasetVisible(K)){h=(be=k.getDatasetMeta(K)).data,K!==this.index&&(we=be.controller);break}if(!h)return 0;for(K=0,de=h.length;K<de;++K)Ue=h[K],we?(we._configure(),Xe=we._resolveDataElementOptions(Ue,K)):Xe=Ue._options,"inner"!==Xe.borderAlign&&(N=(vt=Xe.hoverBorderWidth)>(N=(gt=Xe.borderWidth)>N?gt:N)?vt:N);return N},setHoverStyle:function(h){var E=h._model,N=h._options,k=Ze.getHoverColor;h.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth},E.backgroundColor=ls(N.hoverBackgroundColor,k(N.backgroundColor)),E.borderColor=ls(N.hoverBorderColor,k(N.borderColor)),E.borderWidth=ls(N.hoverBorderWidth,N.borderWidth)},_getRingWeightOffset:function(h){for(var E=0,N=0;N<h;++N)this.chart.isDatasetVisible(N)&&(E+=this._getRingWeight(N));return E},_getRingWeight:function(h){return Math.max(ls(this.chart.data.datasets[h].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});Tr._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}}),Tr._set("global",{datasets:{horizontalBar:{categoryPercentage:.8,barPercentage:.9}}});var Fo=yl.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Eo=Ze.valueOrDefault,ks=Ze.options.resolve,ms=Ze.canvas._isPointInArea;function Co(h,E){var N=h&&h.options.ticks||{},k=N.reverse,K=void 0===N.min?E:0,de=void 0===N.max?E:0;return{start:k?de:K,end:k?K:de}}function kr(h,E,N){var k=N/2,K=Co(h,k),de=Co(E,k);return{top:de.end,right:K.end,bottom:de.start,left:K.start}}function ro(h){var E,N,k,K;return Ze.isObject(h)?(E=h.top,N=h.right,k=h.bottom,K=h.left):E=N=k=K=h,{top:E,right:N,bottom:k,left:K}}Tr._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var tt=Si.extend({datasetElementType:Do.Line,dataElementType:Do.Point,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth","cubicInterpolationMode","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},update:function(h){var we,Xe,E=this,N=E.getMeta(),k=N.dataset,K=N.data||[],be=E._config,Ue=E._showLine=Eo(be.showLine,E.chart.options.showLines);for(E._xScale=E.getScaleForId(N.xAxisID),E._yScale=E.getScaleForId(N.yAxisID),Ue&&(void 0!==be.tension&&void 0===be.lineTension&&(be.lineTension=be.tension),k._scale=E._yScale,k._datasetIndex=E.index,k._children=K,k._model=E._resolveDatasetElementOptions(k),k.pivot()),we=0,Xe=K.length;we<Xe;++we)E.updateElement(K[we],we,h);for(Ue&&0!==k._model.tension&&E.updateBezierControlPoints(),we=0,Xe=K.length;we<Xe;++we)K[we].pivot()},updateElement:function(h,E,N){var Jt,Pn,k=this,K=k.getMeta(),de=h.custom||{},be=k.getDataset(),Ue=k.index,we=be.data[E],Xe=k._xScale,gt=k._yScale,vt=K.dataset._model,Rn=k._resolveDataElementOptions(h,E);Jt=Xe.getPixelForValue("object"==typeof we?we:NaN,E,Ue),Pn=N?gt.getBasePixel():k.calculatePointY(we,E,Ue),h._xScale=Xe,h._yScale=gt,h._options=Rn,h._datasetIndex=Ue,h._index=E,h._model={x:Jt,y:Pn,skip:de.skip||isNaN(Jt)||isNaN(Pn),radius:Rn.radius,pointStyle:Rn.pointStyle,rotation:Rn.rotation,backgroundColor:Rn.backgroundColor,borderColor:Rn.borderColor,borderWidth:Rn.borderWidth,tension:Eo(de.tension,vt?vt.tension:0),steppedLine:!!vt&&vt.steppedLine,hitRadius:Rn.hitRadius}},_resolveDatasetElementOptions:function(h){var E=this,N=E._config,k=h.custom||{},K=E.chart.options,de=K.elements.line,be=Si.prototype._resolveDatasetElementOptions.apply(E,arguments);return be.spanGaps=Eo(N.spanGaps,K.spanGaps),be.tension=Eo(N.lineTension,de.tension),be.steppedLine=ks([k.steppedLine,N.steppedLine,de.stepped]),be.clip=ro(Eo(N.clip,kr(E._xScale,E._yScale,be.borderWidth))),be},calculatePointY:function(h,E,N){var we,gt,vt,Jt,Pn,Rn,K=this.chart,de=this._yScale,be=0,Ue=0;if(de.options.stacked){for(Jt=+de.getRightValue(h),Rn=(Pn=K._getSortedVisibleDatasetMetas()).length,we=0;we<Rn&&(gt=Pn[we]).index!==N;++we)"line"===gt.type&&gt.yAxisID===de.id&&((vt=+de.getRightValue(K.data.datasets[gt.index].data[E]))<0?Ue+=vt||0:be+=vt||0);return de.getPixelForValue(Jt<0?Ue+Jt:be+Jt)}return de.getPixelForValue(h)},updateBezierControlPoints:function(){var be,Ue,we,Xe,E=this.chart,N=this.getMeta(),k=N.dataset._model,K=E.chartArea,de=N.data||[];function gt(vt,Jt,Pn){return Math.max(Math.min(vt,Pn),Jt)}if(k.spanGaps&&(de=de.filter(function(vt){return!vt._model.skip})),"monotone"===k.cubicInterpolationMode)Ze.splineCurveMonotone(de);else for(be=0,Ue=de.length;be<Ue;++be)we=de[be]._model,Xe=Ze.splineCurve(Ze.previousItem(de,be)._model,we,Ze.nextItem(de,be)._model,k.tension),we.controlPointPreviousX=Xe.previous.x,we.controlPointPreviousY=Xe.previous.y,we.controlPointNextX=Xe.next.x,we.controlPointNextY=Xe.next.y;if(E.options.elements.line.capBezierPoints)for(be=0,Ue=de.length;be<Ue;++be)ms(we=de[be]._model,K)&&(be>0&&ms(de[be-1]._model,K)&&(we.controlPointPreviousX=gt(we.controlPointPreviousX,K.left,K.right),we.controlPointPreviousY=gt(we.controlPointPreviousY,K.top,K.bottom)),be<de.length-1&&ms(de[be+1]._model,K)&&(we.controlPointNextX=gt(we.controlPointNextX,K.left,K.right),we.controlPointNextY=gt(we.controlPointNextY,K.top,K.bottom)))},draw:function(){var we,h=this,E=h.chart,N=h.getMeta(),k=N.data||[],K=E.chartArea,de=E.canvas,be=0,Ue=k.length;for(h._showLine&&(Ze.canvas.clipArea(E.ctx,{left:!1===(we=N.dataset._model.clip).left?0:K.left-we.left,right:!1===we.right?de.width:K.right+we.right,top:!1===we.top?0:K.top-we.top,bottom:!1===we.bottom?de.height:K.bottom+we.bottom}),N.dataset.draw(),Ze.canvas.unclipArea(E.ctx));be<Ue;++be)k[be].draw(K)},setHoverStyle:function(h){var E=h._model,N=h._options,k=Ze.getHoverColor;h.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=Eo(N.hoverBackgroundColor,k(N.backgroundColor)),E.borderColor=Eo(N.hoverBorderColor,k(N.borderColor)),E.borderWidth=Eo(N.hoverBorderWidth,N.borderWidth),E.radius=Eo(N.hoverRadius,N.radius)}}),on=Ze.options.resolve;Tr._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(h){var de,be,Ue,E=document.createElement("ul"),N=h.data,k=N.datasets,K=N.labels;if(E.setAttribute("class",h.id+"-legend"),k.length)for(de=0,be=k[0].data.length;de<be;++de)(Ue=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=k[0].backgroundColor[de],K[de]&&Ue.appendChild(document.createTextNode(K[de]));return E.outerHTML},legend:{labels:{generateLabels:function(h){var E=h.data;return E.labels.length&&E.datasets.length?E.labels.map(function(N,k){var K=h.getDatasetMeta(0),de=K.controller.getStyle(k);return{text:N,fillStyle:de.backgroundColor,strokeStyle:de.borderColor,lineWidth:de.borderWidth,hidden:isNaN(E.datasets[0].data[k])||K.data[k].hidden,index:k}}):[]}},onClick:function(h,E){var K,de,be,N=E.index,k=this.chart;for(K=0,de=(k.data.datasets||[]).length;K<de;++K)(be=k.getDatasetMeta(K)).data[N].hidden=!be.data[N].hidden;k.update()}},tooltips:{callbacks:{title:function(){return""},label:function(h,E){return E.labels[h.index]+": "+h.yLabel}}}});var ne=Si.extend({dataElementType:Do.Arc,linkScales:Ze.noop,_dataElementOptions:["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"],_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(h){var we,Xe,gt,E=this,N=E.getDataset(),k=E.getMeta(),K=E.chart.options.startAngle||0,de=E._starts=[],be=E._angles=[],Ue=k.data;for(E._updateRadius(),k.count=E.countVisibleElements(),we=0,Xe=N.data.length;we<Xe;we++)de[we]=K,gt=E._computeAngle(we),be[we]=gt,K+=gt;for(we=0,Xe=Ue.length;we<Xe;++we)Ue[we]._options=E._resolveDataElementOptions(Ue[we],we),E.updateElement(Ue[we],we,h)},_updateRadius:function(){var h=this,E=h.chart,N=E.chartArea,k=E.options,K=Math.min(N.right-N.left,N.bottom-N.top);E.outerRadius=Math.max(K/2,0),E.innerRadius=Math.max(k.cutoutPercentage?E.outerRadius/100*k.cutoutPercentage:1,0),E.radiusLength=(E.outerRadius-E.innerRadius)/E.getVisibleDatasetCount(),h.outerRadius=E.outerRadius-E.radiusLength*h.index,h.innerRadius=h.outerRadius-E.radiusLength},updateElement:function(h,E,N){var k=this,K=k.chart,de=k.getDataset(),be=K.options,Ue=be.animation,we=K.scale,Xe=K.data.labels,gt=we.xCenter,vt=we.yCenter,Jt=be.startAngle,Pn=h.hidden?0:we.getDistanceFromCenterForValue(de.data[E]),Rn=k._starts[E],sr=Rn+(h.hidden?0:k._angles[E]),jr=Ue.animateScale?0:we.getDistanceFromCenterForValue(de.data[E]),Ni=h._options||{};Ze.extend(h,{_datasetIndex:k.index,_index:E,_scale:we,_model:{backgroundColor:Ni.backgroundColor,borderColor:Ni.borderColor,borderWidth:Ni.borderWidth,borderAlign:Ni.borderAlign,x:gt,y:vt,innerRadius:0,outerRadius:N?jr:Pn,startAngle:N&&Ue.animateRotate?Jt:Rn,endAngle:N&&Ue.animateRotate?Jt:sr,label:Ze.valueAtIndexOrDefault(Xe,E,Xe[E])}}),h.pivot()},countVisibleElements:function(){var h=this.getDataset(),E=this.getMeta(),N=0;return Ze.each(E.data,function(k,K){!isNaN(h.data[K])&&!k.hidden&&N++}),N},setHoverStyle:function(h){var E=h._model,N=h._options,k=Ze.getHoverColor,K=Ze.valueOrDefault;h.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth},E.backgroundColor=K(N.hoverBackgroundColor,k(N.backgroundColor)),E.borderColor=K(N.hoverBorderColor,k(N.borderColor)),E.borderWidth=K(N.hoverBorderWidth,N.borderWidth)},_computeAngle:function(h){var E=this,N=this.getMeta().count,k=E.getDataset(),K=E.getMeta();return isNaN(k.data[h])||K.data[h].hidden?0:on([E.chart.options.elements.arc.angle,2*Math.PI/N],{chart:E.chart,dataIndex:h,dataset:k,datasetIndex:E.index},h)}});Tr._set("pie",Ze.clone(Tr.doughnut)),Tr._set("pie",{cutoutPercentage:0});var $e=Qs,Pt=Ze.valueOrDefault;Tr._set("radar",{spanGaps:!1,scale:{type:"radialLinear"},elements:{line:{fill:"start",tension:0}}});var sn=Si.extend({datasetElementType:Do.Line,dataElementType:Do.Point,linkScales:Ze.noop,_datasetElementOptions:["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"],_dataElementOptions:{backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},_getIndexScaleId:function(){return this.chart.scale.id},_getValueScaleId:function(){return this.chart.scale.id},update:function(h){var Ue,we,E=this,N=E.getMeta(),k=N.dataset,K=N.data||[],de=E.chart.scale,be=E._config;for(void 0!==be.tension&&void 0===be.lineTension&&(be.lineTension=be.tension),k._scale=de,k._datasetIndex=E.index,k._children=K,k._loop=!0,k._model=E._resolveDatasetElementOptions(k),k.pivot(),Ue=0,we=K.length;Ue<we;++Ue)E.updateElement(K[Ue],Ue,h);for(E.updateBezierControlPoints(),Ue=0,we=K.length;Ue<we;++Ue)K[Ue].pivot()},updateElement:function(h,E,N){var k=this,K=h.custom||{},de=k.getDataset(),be=k.chart.scale,Ue=be.getPointPositionForValue(E,de.data[E]),we=k._resolveDataElementOptions(h,E),Xe=k.getMeta().dataset._model,gt=N?be.xCenter:Ue.x,vt=N?be.yCenter:Ue.y;h._scale=be,h._options=we,h._datasetIndex=k.index,h._index=E,h._model={x:gt,y:vt,skip:K.skip||isNaN(gt)||isNaN(vt),radius:we.radius,pointStyle:we.pointStyle,rotation:we.rotation,backgroundColor:we.backgroundColor,borderColor:we.borderColor,borderWidth:we.borderWidth,tension:Pt(K.tension,Xe?Xe.tension:0),hitRadius:we.hitRadius}},_resolveDatasetElementOptions:function(){var h=this,E=h._config,N=h.chart.options,k=Si.prototype._resolveDatasetElementOptions.apply(h,arguments);return k.spanGaps=Pt(E.spanGaps,N.spanGaps),k.tension=Pt(E.lineTension,N.elements.line.tension),k},updateBezierControlPoints:function(){var K,de,be,Ue,E=this.getMeta(),N=this.chart.chartArea,k=E.data||[];function we(Xe,gt,vt){return Math.max(Math.min(Xe,vt),gt)}for(E.dataset._model.spanGaps&&(k=k.filter(function(Xe){return!Xe._model.skip})),K=0,de=k.length;K<de;++K)be=k[K]._model,Ue=Ze.splineCurve(Ze.previousItem(k,K,!0)._model,be,Ze.nextItem(k,K,!0)._model,be.tension),be.controlPointPreviousX=we(Ue.previous.x,N.left,N.right),be.controlPointPreviousY=we(Ue.previous.y,N.top,N.bottom),be.controlPointNextX=we(Ue.next.x,N.left,N.right),be.controlPointNextY=we(Ue.next.y,N.top,N.bottom)},setHoverStyle:function(h){var E=h._model,N=h._options,k=Ze.getHoverColor;h.$previousStyle={backgroundColor:E.backgroundColor,borderColor:E.borderColor,borderWidth:E.borderWidth,radius:E.radius},E.backgroundColor=Pt(N.hoverBackgroundColor,k(N.backgroundColor)),E.borderColor=Pt(N.hoverBorderColor,k(N.borderColor)),E.borderWidth=Pt(N.hoverBorderWidth,N.borderWidth),E.radius=Pt(N.hoverRadius,N.radius)}});Tr._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},tooltips:{callbacks:{title:function(){return""},label:function(h){return"("+h.xLabel+", "+h.yLabel+")"}}}}),Tr._set("global",{datasets:{scatter:{showLine:!1}}});var fi={bar:yl,bubble:Ao,doughnut:Qs,horizontalBar:Fo,line:tt,polarArea:ne,pie:$e,radar:sn,scatter:tt};function Oi(h,E){return h.native?{x:h.x,y:h.y}:Ze.getRelativePosition(h,E)}function os(h,E){var k,K,de,be,Ue,we,N=h._getSortedVisibleDatasetMetas();for(K=0,be=N.length;K<be;++K)for(de=0,Ue=(k=N[K].data).length;de<Ue;++de)(we=k[de])._view.skip||E(we)}function Ro(h,E){var N=[];return os(h,function(k){k.inRange(E.x,E.y)&&N.push(k)}),N}function Uo(h,E,N,k){var K=Number.POSITIVE_INFINITY,de=[];return os(h,function(be){if(!N||be.inRange(E.x,E.y)){var Ue=be.getCenterPoint(),we=k(E,Ue);we<K?(de=[be],K=we):we===K&&de.push(be)}}),de}function To(h){var E=-1!==h.indexOf("x"),N=-1!==h.indexOf("y");return function(k,K){var de=E?Math.abs(k.x-K.x):0,be=N?Math.abs(k.y-K.y):0;return Math.sqrt(Math.pow(de,2)+Math.pow(be,2))}}function Ea(h,E,N){var k=Oi(E,h);N.axis=N.axis||"x";var K=To(N.axis),de=N.intersect?Ro(h,k):Uo(h,k,!1,K),be=[];return de.length?(h._getSortedVisibleDatasetMetas().forEach(function(Ue){var we=Ue.data[de[0]._index];we&&!we._view.skip&&be.push(we)}),be):[]}var al={modes:{single:function(h,E){var N=Oi(E,h),k=[];return os(h,function(K){if(K.inRange(N.x,N.y))return k.push(K),k}),k.slice(0,1)},label:Ea,index:Ea,dataset:function(h,E,N){var k=Oi(E,h);N.axis=N.axis||"xy";var K=To(N.axis),de=N.intersect?Ro(h,k):Uo(h,k,!1,K);return de.length>0&&(de=h.getDatasetMeta(de[0]._datasetIndex).data),de},"x-axis":function(h,E){return Ea(h,E,{intersect:!1})},point:function(h,E){return Ro(h,Oi(E,h))},nearest:function(h,E,N){var k=Oi(E,h);N.axis=N.axis||"xy";var K=To(N.axis);return Uo(h,k,N.intersect,K)},x:function(h,E,N){var k=Oi(E,h),K=[],de=!1;return os(h,function(be){be.inXRange(k.x)&&K.push(be),be.inRange(k.x,k.y)&&(de=!0)}),N.intersect&&!de&&(K=[]),K},y:function(h,E,N){var k=Oi(E,h),K=[],de=!1;return os(h,function(be){be.inYRange(k.y)&&K.push(be),be.inRange(k.x,k.y)&&(de=!0)}),N.intersect&&!de&&(K=[]),K}}},qu=Ze.extend;function Ru(h,E){return Ze.where(h,function(N){return N.pos===E})}function yc(h,E){return h.sort(function(N,k){var K=E?k:N,de=E?N:k;return K.weight===de.weight?K.index-de.index:K.weight-de.weight})}function Zl(h,E,N,k){return Math.max(h[N],E[N])+Math.max(h[k],E[k])}function $s(h,E,N){var de,be,k=N.box,K=h.maxPadding;if(N.size&&(h[N.pos]-=N.size),N.size=N.horizontal?k.height:k.width,h[N.pos]+=N.size,k.getPadding){var Ue=k.getPadding();K.top=Math.max(K.top,Ue.top),K.left=Math.max(K.left,Ue.left),K.bottom=Math.max(K.bottom,Ue.bottom),K.right=Math.max(K.right,Ue.right)}if(de=E.outerWidth-Zl(K,h,"left","right"),be=E.outerHeight-Zl(K,h,"top","bottom"),de!==h.w||be!==h.h){h.w=de,h.h=be;var we=N.horizontal?[de,h.w]:[be,h.h];return!(we[0]===we[1]||isNaN(we[0])&&isNaN(we[1]))}}function ou(h,E){var de,N=E.maxPadding;return de={left:0,top:0,right:0,bottom:0},(h?["left","right"]:["top","bottom"]).forEach(function(be){de[be]=Math.max(E[be],N[be])}),de}function el(h,E,N){var K,de,be,Ue,we,Xe,k=[];for(K=0,de=h.length;K<de;++K)(Ue=(be=h[K]).box).update(be.width||E.w,be.height||E.h,ou(be.horizontal,E)),$s(E,N,be)&&(Xe=!0,k.length&&(we=!0)),Ue.fullWidth||k.push(be);return we&&el(k,E,N)||Xe}function Cu(h,E,N){var be,Ue,we,Xe,k=N.padding,K=E.x,de=E.y;for(be=0,Ue=h.length;be<Ue;++be)Xe=(we=h[be]).box,we.horizontal?(Xe.left=Xe.fullWidth?k.left:E.left,Xe.right=Xe.fullWidth?N.outerWidth-k.right:E.left+E.w,Xe.top=de,Xe.bottom=de+Xe.height,Xe.width=Xe.right-Xe.left,de=Xe.bottom):(Xe.left=K,Xe.right=K+Xe.width,Xe.top=E.top,Xe.bottom=E.top+E.h,Xe.height=Xe.bottom-Xe.top,K=Xe.right);E.x=K,E.y=de}Tr._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var jl={defaults:{},addBox:function(h,E){h.boxes||(h.boxes=[]),E.fullWidth=E.fullWidth||!1,E.position=E.position||"top",E.weight=E.weight||0,E._layers=E._layers||function(){return[{z:0,draw:function(){E.draw.apply(E,arguments)}}]},h.boxes.push(E)},removeBox:function(h,E){var N=h.boxes?h.boxes.indexOf(E):-1;-1!==N&&h.boxes.splice(N,1)},configure:function(h,E,N){for(var be,k=["fullWidth","position","weight"],K=k.length,de=0;de<K;++de)N.hasOwnProperty(be=k[de])&&(E[be]=N[be])},update:function(h,E,N){if(h){var K=Ze.options.toPadding((h.options.layout||{}).padding),de=E-K.width,be=N-K.height,Ue=function(h){var E=function(h){var N,k,K,E=[];for(N=0,k=(h||[]).length;N<k;++N)E.push({index:N,box:K=h[N],pos:K.position,horizontal:K.isHorizontal(),weight:K.weight});return E}(h),N=yc(Ru(E,"left"),!0),k=yc(Ru(E,"right")),K=yc(Ru(E,"top"),!0),de=yc(Ru(E,"bottom"));return{leftAndTop:N.concat(K),rightAndBottom:k.concat(de),chartArea:Ru(E,"chartArea"),vertical:N.concat(k),horizontal:K.concat(de)}}(h.boxes),we=Ue.vertical,Xe=Ue.horizontal,gt=Object.freeze({outerWidth:E,outerHeight:N,padding:K,availableWidth:de,vBoxMaxWidth:de/2/we.length,hBoxMaxHeight:be/2}),vt=qu({maxPadding:qu({},K),w:de,h:be,x:K.left,y:K.top},K);(function(h,E){var N,k,K;for(N=0,k=h.length;N<k;++N)(K=h[N]).width=K.horizontal?K.box.fullWidth&&E.availableWidth:E.vBoxMaxWidth,K.height=K.horizontal&&E.hBoxMaxHeight})(we.concat(Xe),gt),el(we,vt,gt),el(Xe,vt,gt)&&el(we,vt,gt),function(h){var E=h.maxPadding;function N(k){var K=Math.max(E[k]-h[k],0);return h[k]+=K,K}h.y+=N("top"),h.x+=N("left"),N("right"),N("bottom")}(vt),Cu(Ue.leftAndTop,vt,gt),vt.x+=vt.w,vt.y+=vt.h,Cu(Ue.rightAndBottom,vt,gt),h.chartArea={left:vt.left,top:vt.top,right:vt.left+vt.w,bottom:vt.top+vt.h},Ze.each(Ue.chartArea,function(Jt){var Pn=Jt.box;qu(Pn,h.chartArea),Pn.update(vt.w,vt.h)})}}},Te=function(h){return h&&h.default||h}(Object.freeze({__proto__:null,default:"/*\r\n * DOM element rendering detection\r\n * https://davidwalsh.name/detect-node-insertion\r\n */\r\n@keyframes chartjs-render-animation {\r\n\tfrom { opacity: 0.99; }\r\n\tto { opacity: 1; }\r\n}\r\n\r\n.chartjs-render-monitor {\r\n\tanimation: chartjs-render-animation 0.001s;\r\n}\r\n\r\n/*\r\n * DOM element resizing detection\r\n * https://github.com/marcj/css-element-queries\r\n */\r\n.chartjs-size-monitor,\r\n.chartjs-size-monitor-expand,\r\n.chartjs-size-monitor-shrink {\r\n\tposition: absolute;\r\n\tdirection: ltr;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\tvisibility: hidden;\r\n\tz-index: -1;\r\n}\r\n\r\n.chartjs-size-monitor-expand > div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n"})),Me="$chartjs",De="chartjs-",Tt=De+"size-monitor",dr=De+"render-monitor",Jo=["animationstart","webkitAnimationStart"],Es={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function vs(h,E){var N=Ze.getStyle(h,E),k=N&&N.match(/^(\d+)(\.\d+)?px$/);return k?Number(k[1]):void 0}var uu=!!function(){var h=!1;try{var E=Object.defineProperty({},"passive",{get:function(){h=!0}});window.addEventListener("e",null,E)}catch(N){}return h}()&&{passive:!0};function Wa(h,E,N){h.addEventListener(E,N,uu)}function Pl(h,E,N){h.removeEventListener(E,N,uu)}function ec(h,E,N,k,K){return{type:h,chart:E,native:K||null,x:void 0!==N?N:null,y:void 0!==k?k:null}}function Nc(h){var E=document.createElement("div");return E.className=h||"",E}function Ic(h,E,N){var k=h[Me]||(h[Me]={}),K=k.resizer=function(h){var E=1e6,N=Nc(Tt),k=Nc(Tt+"-expand"),K=Nc(Tt+"-shrink");k.appendChild(Nc()),K.appendChild(Nc()),N.appendChild(k),N.appendChild(K),N._reset=function(){k.scrollLeft=E,k.scrollTop=E,K.scrollLeft=E,K.scrollTop=E};var de=function(){N._reset(),h()};return Wa(k,"scroll",de.bind(k,"expand")),Wa(K,"scroll",de.bind(K,"shrink")),N}(function(h,E){var N=!1,k=[];return function(){k=Array.prototype.slice.call(arguments),E=E||this,N||(N=!0,Ze.requestAnimFrame.call(window,function(){N=!1,h.apply(E,k)}))}}(function(){if(k.resizer){var de=N.options.maintainAspectRatio&&h.parentNode,be=de?de.clientWidth:0;E(ec("resize",N)),de&&de.clientWidth<be&&N.canvas&&E(ec("resize",N))}}));!function(h,E){var N=h[Me]||(h[Me]={}),k=N.renderProxy=function(K){"chartjs-render-animation"===K.animationName&&E()};Ze.each(Jo,function(K){Wa(h,K,k)}),N.reflow=!!h.offsetParent,h.classList.add(dr)}(h,function(){if(k.resizer){var de=h.parentNode;de&&de!==K.parentNode&&de.insertBefore(K,de.firstChild),K._reset()}})}function md(h){var E=h[Me]||{},N=E.resizer;delete E.resizer,function(h){var E=h[Me]||{},N=E.renderProxy;N&&(Ze.each(Jo,function(k){Pl(h,k,N)}),delete E.renderProxy),h.classList.remove(dr)}(h),N&&N.parentNode&&N.parentNode.removeChild(N)}var Fi={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(h){if(!this.disableCSSInjection){var E=h.getRootNode?h.getRootNode():document;!function(h,E){var N=h[Me]||(h[Me]={});if(!N.containsStyles){N.containsStyles=!0,E="/* Chart.js */\n"+E;var k=document.createElement("style");k.setAttribute("type","text/css"),k.appendChild(document.createTextNode(E)),h.appendChild(k)}}(E.host?E:document.head,Te)}},acquireContext:function(h,E){"string"==typeof h?h=document.getElementById(h):h.length&&(h=h[0]),h&&h.canvas&&(h=h.canvas);var N=h&&h.getContext&&h.getContext("2d");return N&&N.canvas===h?(this._ensureLoaded(h),function(h,E){var N=h.style,k=h.getAttribute("height"),K=h.getAttribute("width");if(h[Me]={initial:{height:k,width:K,style:{display:N.display,height:N.height,width:N.width}}},N.display=N.display||"block",null===K||""===K){var de=vs(h,"width");void 0!==de&&(h.width=de)}if(null===k||""===k)if(""===h.style.height)h.height=h.width/(E.options.aspectRatio||2);else{var be=vs(h,"height");void 0!==de&&(h.height=be)}}(h,E),N):null},releaseContext:function(h){var E=h.canvas;if(E[Me]){var N=E[Me].initial;["height","width"].forEach(function(k){var K=N[k];Ze.isNullOrUndef(K)?E.removeAttribute(k):E.setAttribute(k,K)}),Ze.each(N.style||{},function(k,K){E.style[K]=k}),E.width=E.width,delete E[Me]}},addEventListener:function(h,E,N){var k=h.canvas;if("resize"!==E){var K=N[Me]||(N[Me]={});Wa(k,E,(K.proxies||(K.proxies={}))[h.id+"_"+E]=function(Ue){N(function(h,E){var N=Es[h.type]||h.type,k=Ze.getRelativePosition(h,E);return ec(N,E,k.x,k.y,h)}(Ue,h))})}else Ic(k,N,h)},removeEventListener:function(h,E,N){var k=h.canvas;if("resize"!==E){var be=((N[Me]||{}).proxies||{})[h.id+"_"+E];!be||Pl(k,E,be)}else md(k)}};Ze.addEvent=Wa,Ze.removeEvent=Pl;var Aa=Ze.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Fi._enabled?Fi:{acquireContext:function(h){return h&&h.canvas&&(h=h.canvas),h&&h.getContext("2d")||null}});Tr._set("global",{plugins:{}});var As={_plugins:[],_cacheId:0,register:function(h){var E=this._plugins;[].concat(h).forEach(function(N){-1===E.indexOf(N)&&E.push(N)}),this._cacheId++},unregister:function(h){var E=this._plugins;[].concat(h).forEach(function(N){var k=E.indexOf(N);-1!==k&&E.splice(k,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(h,E,N){var de,be,Ue,we,Xe,k=this.descriptors(h),K=k.length;for(de=0;de<K;++de)if("function"==typeof(Xe=(Ue=(be=k[de]).plugin)[E])&&((we=[h].concat(N||[])).push(be.options),!1===Xe.apply(Ue,we)))return!1;return!0},descriptors:function(h){var E=h.$plugins||(h.$plugins={});if(E.id===this._cacheId)return E.descriptors;var N=[],k=[],K=h&&h.config||{},de=K.options&&K.options.plugins||{};return this._plugins.concat(K.plugins||[]).forEach(function(be){if(-1===N.indexOf(be)){var we=be.id,Xe=de[we];!1!==Xe&&(!0===Xe&&(Xe=Ze.clone(Tr.global.plugins[we])),N.push(be),k.push({plugin:be,options:Xe||{}}))}}),E.descriptors=k,E.id=this._cacheId,k},_invalidate:function(h){delete h.$plugins}},ku={constructors:{},defaults:{},registerScaleType:function(h,E,N){this.constructors[h]=E,this.defaults[h]=Ze.clone(N)},getScaleConstructor:function(h){return this.constructors.hasOwnProperty(h)?this.constructors[h]:void 0},getScaleDefaults:function(h){return this.defaults.hasOwnProperty(h)?Ze.merge(Object.create(null),[Tr.scale,this.defaults[h]]):{}},updateScaleDefaults:function(h,E){var N=this;N.defaults.hasOwnProperty(h)&&(N.defaults[h]=Ze.extend(N.defaults[h],E))},addScalesToLayout:function(h){Ze.each(h.scales,function(E){E.fullWidth=E.options.fullWidth,E.position=E.options.position,E.weight=E.options.weight,jl.addBox(h,E)})}},bl=Ze.valueOrDefault,Au=Ze.rtl.getRtlAdapter;Tr._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:Ze.noop,title:function(h,E){var N="",k=E.labels,K=k?k.length:0;if(h.length>0){var de=h[0];de.label?N=de.label:de.xLabel?N=de.xLabel:K>0&&de.index<K&&(N=k[de.index])}return N},afterTitle:Ze.noop,beforeBody:Ze.noop,beforeLabel:Ze.noop,label:function(h,E){var N=E.datasets[h.datasetIndex].label||"";return N&&(N+=": "),Ze.isNullOrUndef(h.value)?N+=h.yLabel:N+=h.value,N},labelColor:function(h,E){var K=E.getDatasetMeta(h.datasetIndex).data[h.index]._view;return{borderColor:K.borderColor,backgroundColor:K.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:Ze.noop,afterBody:Ze.noop,beforeFooter:Ze.noop,footer:Ze.noop,afterFooter:Ze.noop}}});var bu={average:function(h){if(!h.length)return!1;var E,N,k=0,K=0,de=0;for(E=0,N=h.length;E<N;++E){var be=h[E];if(be&&be.hasValue()){var Ue=be.tooltipPosition();k+=Ue.x,K+=Ue.y,++de}}return{x:k/de,y:K/de}},nearest:function(h,E){var de,be,Ue,N=E.x,k=E.y,K=Number.POSITIVE_INFINITY;for(de=0,be=h.length;de<be;++de){var we=h[de];if(we&&we.hasValue()){var Xe=we.getCenterPoint(),gt=Ze.distanceBetweenPoints(E,Xe);gt<K&&(K=gt,Ue=we)}}if(Ue){var vt=Ue.tooltipPosition();N=vt.x,k=vt.y}return{x:N,y:k}}};function cu(h,E){return E&&(Ze.isArray(E)?Array.prototype.push.apply(h,E):h.push(E)),h}function Gs(h){return("string"==typeof h||h instanceof String)&&h.indexOf("\n")>-1?h.split("\n"):h}function $u(h){var E=h._xScale,N=h._yScale||h._scale,k=h._index,K=h._datasetIndex,de=h._chart.getDatasetMeta(K).controller,be=de._getIndexScale(),Ue=de._getValueScale();return{xLabel:E?E.getLabelForIndex(k,K):"",yLabel:N?N.getLabelForIndex(k,K):"",label:be?""+be.getLabelForIndex(k,K):"",value:Ue?""+Ue.getLabelForIndex(k,K):"",index:k,datasetIndex:K,x:h._model.x,y:h._model.y}}function Hu(h){var E=Tr.global;return{xPadding:h.xPadding,yPadding:h.yPadding,xAlign:h.xAlign,yAlign:h.yAlign,rtl:h.rtl,textDirection:h.textDirection,bodyFontColor:h.bodyFontColor,_bodyFontFamily:bl(h.bodyFontFamily,E.defaultFontFamily),_bodyFontStyle:bl(h.bodyFontStyle,E.defaultFontStyle),_bodyAlign:h.bodyAlign,bodyFontSize:bl(h.bodyFontSize,E.defaultFontSize),bodySpacing:h.bodySpacing,titleFontColor:h.titleFontColor,_titleFontFamily:bl(h.titleFontFamily,E.defaultFontFamily),_titleFontStyle:bl(h.titleFontStyle,E.defaultFontStyle),titleFontSize:bl(h.titleFontSize,E.defaultFontSize),_titleAlign:h.titleAlign,titleSpacing:h.titleSpacing,titleMarginBottom:h.titleMarginBottom,footerFontColor:h.footerFontColor,_footerFontFamily:bl(h.footerFontFamily,E.defaultFontFamily),_footerFontStyle:bl(h.footerFontStyle,E.defaultFontStyle),footerFontSize:bl(h.footerFontSize,E.defaultFontSize),_footerAlign:h.footerAlign,footerSpacing:h.footerSpacing,footerMarginTop:h.footerMarginTop,caretSize:h.caretSize,cornerRadius:h.cornerRadius,backgroundColor:h.backgroundColor,opacity:0,legendColorBackground:h.multiKeyBackground,displayColors:h.displayColors,borderColor:h.borderColor,borderWidth:h.borderWidth}}function ha(h,E){return"center"===E?h.x+h.width/2:"right"===E?h.x+h.width-h.xPadding:h.x+h.xPadding}function _u(h){return cu([],Gs(h))}var Ja=nr.extend({initialize:function(){this._model=Hu(this._options),this._lastActive=[]},getTitle:function(){var h=this,N=h._options.callbacks,k=N.beforeTitle.apply(h,arguments),K=N.title.apply(h,arguments),de=N.afterTitle.apply(h,arguments),be=[];return be=cu(be,Gs(k)),be=cu(be,Gs(K)),cu(be,Gs(de))},getBeforeBody:function(){return _u(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(h,E){var N=this,k=N._options.callbacks,K=[];return Ze.each(h,function(de){var be={before:[],lines:[],after:[]};cu(be.before,Gs(k.beforeLabel.call(N,de,E))),cu(be.lines,k.label.call(N,de,E)),cu(be.after,Gs(k.afterLabel.call(N,de,E))),K.push(be)}),K},getAfterBody:function(){return _u(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var h=this,E=h._options.callbacks,N=E.beforeFooter.apply(h,arguments),k=E.footer.apply(h,arguments),K=E.afterFooter.apply(h,arguments),de=[];return de=cu(de,Gs(N)),de=cu(de,Gs(k)),cu(de,Gs(K))},update:function(h){var vt,Jt,E=this,N=E._options,k=E._model,K=E._model=Hu(N),de=E._active,be=E._data,Ue={xAlign:k.xAlign,yAlign:k.yAlign},we={x:k.x,y:k.y},Xe={width:k.width,height:k.height},gt={x:k.caretX,y:k.caretY};if(de.length){K.opacity=1;var Pn=[],Rn=[];gt=bu[N.position].call(E,de,E._eventPosition);var sr=[];for(vt=0,Jt=de.length;vt<Jt;++vt)sr.push($u(de[vt]));N.filter&&(sr=sr.filter(function(jr){return N.filter(jr,be)})),N.itemSort&&(sr=sr.sort(function(jr,Ni){return N.itemSort(jr,Ni,be)})),Ze.each(sr,function(jr){Pn.push(N.callbacks.labelColor.call(E,jr,E._chart)),Rn.push(N.callbacks.labelTextColor.call(E,jr,E._chart))}),K.title=E.getTitle(sr,be),K.beforeBody=E.getBeforeBody(sr,be),K.body=E.getBody(sr,be),K.afterBody=E.getAfterBody(sr,be),K.footer=E.getFooter(sr,be),K.x=gt.x,K.y=gt.y,K.caretPadding=N.caretPadding,K.labelColors=Pn,K.labelTextColors=Rn,K.dataPoints=sr,we=function(h,E,N,k){var K=h.x,de=h.y,Ue=h.caretPadding,Xe=N.xAlign,gt=N.yAlign,vt=h.caretSize+Ue,Jt=h.cornerRadius+Ue;return"right"===Xe?K-=E.width:"center"===Xe&&((K-=E.width/2)+E.width>k.width&&(K=k.width-E.width),K<0&&(K=0)),"top"===gt?de+=vt:de-="bottom"===gt?E.height+vt:E.height/2,"center"===gt?"left"===Xe?K+=vt:"right"===Xe&&(K-=vt):"left"===Xe?K-=Jt:"right"===Xe&&(K+=Jt),{x:K,y:de}}(K,Xe=function(h,E){var N=h._chart.ctx,k=2*E.yPadding,K=0,de=E.body,be=de.reduce(function(Rn,sr){return Rn+sr.before.length+sr.lines.length+sr.after.length},0),Ue=E.title.length,we=E.footer.length,Xe=E.titleFontSize,gt=E.bodyFontSize,vt=E.footerFontSize;k+=Ue*Xe,k+=Ue?(Ue-1)*E.titleSpacing:0,k+=Ue?E.titleMarginBottom:0,k+=(be+=E.beforeBody.length+E.afterBody.length)*gt,k+=be?(be-1)*E.bodySpacing:0,k+=we?E.footerMarginTop:0,k+=we*vt,k+=we?(we-1)*E.footerSpacing:0;var Jt=0,Pn=function(Rn){K=Math.max(K,N.measureText(Rn).width+Jt)};return N.font=Ze.fontString(Xe,E._titleFontStyle,E._titleFontFamily),Ze.each(E.title,Pn),N.font=Ze.fontString(gt,E._bodyFontStyle,E._bodyFontFamily),Ze.each(E.beforeBody.concat(E.afterBody),Pn),Jt=E.displayColors?gt+2:0,Ze.each(de,function(Rn){Ze.each(Rn.before,Pn),Ze.each(Rn.lines,Pn),Ze.each(Rn.after,Pn)}),Jt=0,N.font=Ze.fontString(vt,E._footerFontStyle,E._footerFontFamily),Ze.each(E.footer,Pn),{width:K+=2*E.xPadding,height:k}}(this,K),Ue=function(h,E){var N=h._model,k=h._chart,K=h._chart.chartArea,de="center",be="center";N.y<E.height?be="top":N.y>k.height-E.height&&(be="bottom");var Ue,we,Xe,gt,vt,Jt=(K.left+K.right)/2,Pn=(K.top+K.bottom)/2;"center"===be?(Ue=function(sr){return sr<=Jt},we=function(sr){return sr>Jt}):(Ue=function(sr){return sr<=E.width/2},we=function(sr){return sr>=k.width-E.width/2}),Xe=function(sr){return sr+E.width+N.caretSize+N.caretPadding>k.width},gt=function(sr){return sr-E.width-N.caretSize-N.caretPadding<0},vt=function(sr){return sr<=Pn?"top":"bottom"},Ue(N.x)?(de="left",Xe(N.x)&&(de="center",be=vt(N.y))):we(N.x)&&(de="right",gt(N.x)&&(de="center",be=vt(N.y)));var Rn=h._options;return{xAlign:Rn.xAlign?Rn.xAlign:de,yAlign:Rn.yAlign?Rn.yAlign:be}}(this,Xe),E._chart)}else K.opacity=0;return K.xAlign=Ue.xAlign,K.yAlign=Ue.yAlign,K.x=we.x,K.y=we.y,K.width=Xe.width,K.height=Xe.height,K.caretX=gt.x,K.caretY=gt.y,E._model=K,h&&N.custom&&N.custom.call(E,K),E},drawCaret:function(h,E){var N=this._chart.ctx,K=this.getCaretPosition(h,E,this._view);N.lineTo(K.x1,K.y1),N.lineTo(K.x2,K.y2),N.lineTo(K.x3,K.y3)},getCaretPosition:function(h,E,N){var k,K,de,be,Ue,we,Xe=N.caretSize,gt=N.cornerRadius,vt=N.xAlign,Jt=N.yAlign,Pn=h.x,Rn=h.y,sr=E.width,jr=E.height;if("center"===Jt)Ue=Rn+jr/2,"left"===vt?(K=(k=Pn)-Xe,de=k,be=Ue+Xe,we=Ue-Xe):(K=(k=Pn+sr)+Xe,de=k,be=Ue-Xe,we=Ue+Xe);else if("left"===vt?(k=(K=Pn+gt+Xe)-Xe,de=K+Xe):"right"===vt?(k=(K=Pn+sr-gt-Xe)-Xe,de=K+Xe):(k=(K=N.caretX)-Xe,de=K+Xe),"top"===Jt)Ue=(be=Rn)-Xe,we=be;else{Ue=(be=Rn+jr)+Xe,we=be;var Ni=de;de=k,k=Ni}return{x1:k,x2:K,x3:de,y1:be,y2:Ue,y3:we}},drawTitle:function(h,E,N){var de,be,Ue,k=E.title,K=k.length;if(K){var we=Au(E.rtl,E.x,E.width);for(h.x=ha(E,E._titleAlign),N.textAlign=we.textAlign(E._titleAlign),N.textBaseline="middle",de=E.titleFontSize,be=E.titleSpacing,N.fillStyle=E.titleFontColor,N.font=Ze.fontString(de,E._titleFontStyle,E._titleFontFamily),Ue=0;Ue<K;++Ue)N.fillText(k[Ue],we.x(h.x),h.y+de/2),h.y+=de+be,Ue+1===K&&(h.y+=E.titleMarginBottom-be)}},drawBody:function(h,E,N){var Jt,Pn,Rn,sr,jr,Ni,Vo,$o,k=E.bodyFontSize,K=E.bodySpacing,de=E._bodyAlign,be=E.body,Ue=E.displayColors,we=0,Xe=Ue?ha(E,"left"):0,gt=Au(E.rtl,E.x,E.width),vt=function(dl){N.fillText(dl,gt.x(h.x+we),h.y+k/2),h.y+=k+K},Vs=gt.textAlign(de);for(N.textAlign=de,N.textBaseline="middle",N.font=Ze.fontString(k,E._bodyFontStyle,E._bodyFontFamily),h.x=ha(E,Vs),N.fillStyle=E.bodyFontColor,Ze.each(E.beforeBody,vt),we=Ue&&"right"!==Vs?"center"===de?k/2+1:k+2:0,jr=0,Vo=be.length;jr<Vo;++jr){for(Jt=be[jr],Rn=E.labelColors[jr],N.fillStyle=Pn=E.labelTextColors[jr],Ze.each(Jt.before,vt),Ni=0,$o=(sr=Jt.lines).length;Ni<$o;++Ni){if(Ue){var qs=gt.x(Xe);N.fillStyle=E.legendColorBackground,N.fillRect(gt.leftForLtr(qs,k),h.y,k,k),N.lineWidth=1,N.strokeStyle=Rn.borderColor,N.strokeRect(gt.leftForLtr(qs,k),h.y,k,k),N.fillStyle=Rn.backgroundColor,N.fillRect(gt.leftForLtr(gt.xPlus(qs,1),k-2),h.y+1,k-2,k-2),N.fillStyle=Pn}vt(sr[Ni])}Ze.each(Jt.after,vt)}we=0,Ze.each(E.afterBody,vt),h.y-=K},drawFooter:function(h,E,N){var de,be,k=E.footer,K=k.length;if(K){var Ue=Au(E.rtl,E.x,E.width);for(h.x=ha(E,E._footerAlign),h.y+=E.footerMarginTop,N.textAlign=Ue.textAlign(E._footerAlign),N.textBaseline="middle",de=E.footerFontSize,N.fillStyle=E.footerFontColor,N.font=Ze.fontString(de,E._footerFontStyle,E._footerFontFamily),be=0;be<K;++be)N.fillText(k[be],Ue.x(h.x),h.y+de/2),h.y+=de+E.footerSpacing}},drawBackground:function(h,E,N,k){N.fillStyle=E.backgroundColor,N.strokeStyle=E.borderColor,N.lineWidth=E.borderWidth;var K=E.xAlign,de=E.yAlign,be=h.x,Ue=h.y,we=k.width,Xe=k.height,gt=E.cornerRadius;N.beginPath(),N.moveTo(be+gt,Ue),"top"===de&&this.drawCaret(h,k),N.lineTo(be+we-gt,Ue),N.quadraticCurveTo(be+we,Ue,be+we,Ue+gt),"center"===de&&"right"===K&&this.drawCaret(h,k),N.lineTo(be+we,Ue+Xe-gt),N.quadraticCurveTo(be+we,Ue+Xe,be+we-gt,Ue+Xe),"bottom"===de&&this.drawCaret(h,k),N.lineTo(be+gt,Ue+Xe),N.quadraticCurveTo(be,Ue+Xe,be,Ue+Xe-gt),"center"===de&&"left"===K&&this.drawCaret(h,k),N.lineTo(be,Ue+gt),N.quadraticCurveTo(be,Ue,be+gt,Ue),N.closePath(),N.fill(),E.borderWidth>0&&N.stroke()},draw:function(){var h=this._chart.ctx,E=this._view;if(0!==E.opacity){var N={width:E.width,height:E.height},k={x:E.x,y:E.y},K=Math.abs(E.opacity<.001)?0:E.opacity;this._options.enabled&&(E.title.length||E.beforeBody.length||E.body.length||E.afterBody.length||E.footer.length)&&(h.save(),h.globalAlpha=K,this.drawBackground(k,E,h,N),k.y+=E.yPadding,Ze.rtl.overrideTextDirection(h,E.textDirection),this.drawTitle(k,E,h),this.drawBody(k,E,h),this.drawFooter(k,E,h),Ze.rtl.restoreTextDirection(h,E.textDirection),h.restore())}},handleEvent:function(h){var k,E=this,N=E._options;return E._lastActive=E._lastActive||[],"mouseout"===h.type?E._active=[]:(E._active=E._chart.getElementsAtEventForMode(h,N.mode,N),N.reverse&&E._active.reverse()),(k=!Ze.arrayEquals(E._active,E._lastActive))&&(E._lastActive=E._active,(N.enabled||N.custom)&&(E._eventPosition={x:h.x,y:h.y},E.update(!0),E.pivot())),k}});Ja.positioners=bu;var hl=Ze.valueOrDefault;function Vl(){return Ze.merge(Object.create(null),[].slice.call(arguments),{merger:function(h,E,N,k){if("xAxes"===h||"yAxes"===h){var de,be,Ue,K=N[h].length;for(E[h]||(E[h]=[]),de=0;de<K;++de)be=hl((Ue=N[h][de]).type,"xAxes"===h?"category":"linear"),de>=E[h].length&&E[h].push({}),Ze.merge(E[h][de],!E[h][de].type||Ue.type&&Ue.type!==E[h][de].type?[ku.getScaleDefaults(be),Ue]:Ue)}else Ze._merger(h,E,N,k)}})}function Hs(){return Ze.merge(Object.create(null),[].slice.call(arguments),{merger:function(h,E,N,k){var K=E[h]||Object.create(null),de=N[h];"scales"===h?E[h]=Vl(K,de):"scale"===h?E[h]=Ze.merge(K,[ku.getScaleDefaults(de.type),de]):Ze._merger(h,E,N,k)}})}function Ae(h){var E=h.options;Ze.each(h.scales,function(N){jl.removeBox(h,N)}),E=Hs(Tr.global,Tr[h.config.type],E),h.options=h.config.options=E,h.ensureScalesHaveIDs(),h.buildOrUpdateScales(),h.tooltip._options=E.tooltips,h.tooltip.initialize()}function ot(h,E,N){var k,K=function(de){return de.id===k};do{k=E+N++}while(Ze.findIndex(h,K)>=0);return k}function _t(h){return"top"===h||"bottom"===h}function lt(h,E){return function(N,k){return N[h]===k[h]?N[E]-k[E]:N[h]-k[h]}}Tr._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var un=function(h,E){return this.construct(h,E),this};Ze.extend(un.prototype,{construct:function(h,E){var N=this;E=function(h){var E=(h=h||Object.create(null)).data=h.data||{};return E.datasets=E.datasets||[],E.labels=E.labels||[],h.options=Hs(Tr.global,Tr[h.type],h.options||{}),h}(E);var k=Aa.acquireContext(h,E),K=k&&k.canvas,de=K&&K.height,be=K&&K.width;N.id=Ze.uid(),N.ctx=k,N.canvas=K,N.config=E,N.width=be,N.height=de,N.aspectRatio=de?be/de:null,N.options=E.options,N._bufferedRender=!1,N._layers=[],N.chart=N,N.controller=N,un.instances[N.id]=N,Object.defineProperty(N,"data",{get:function(){return N.config.data},set:function(Ue){N.config.data=Ue}}),k&&K?(N.initialize(),N.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var h=this;return As.notify(h,"beforeInit"),Ze.retinaScale(h,h.options.devicePixelRatio),h.bindEvents(),h.options.responsive&&h.resize(!0),h.initToolTip(),As.notify(h,"afterInit"),h},clear:function(){return Ze.canvas.clear(this),this},stop:function(){return yo.cancelAnimation(this),this},resize:function(h){var E=this,N=E.options,k=E.canvas,K=N.maintainAspectRatio&&E.aspectRatio||null,de=Math.max(0,Math.floor(Ze.getMaximumWidth(k))),be=Math.max(0,Math.floor(K?de/K:Ze.getMaximumHeight(k)));if((E.width!==de||E.height!==be)&&(k.width=E.width=de,k.height=E.height=be,k.style.width=de+"px",k.style.height=be+"px",Ze.retinaScale(E,N.devicePixelRatio),!h)){var Ue={width:de,height:be};As.notify(E,"resize",[Ue]),N.onResize&&N.onResize(E,Ue),E.stop(),E.update({duration:N.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var h=this.options,E=h.scales||{},N=h.scale;Ze.each(E.xAxes,function(k,K){k.id||(k.id=ot(E.xAxes,"x-axis-",K))}),Ze.each(E.yAxes,function(k,K){k.id||(k.id=ot(E.yAxes,"y-axis-",K))}),N&&(N.id=N.id||"scale")},buildOrUpdateScales:function(){var h=this,E=h.options,N=h.scales||{},k=[],K=Object.keys(N).reduce(function(de,be){return de[be]=!1,de},{});E.scales&&(k=k.concat((E.scales.xAxes||[]).map(function(de){return{options:de,dtype:"category",dposition:"bottom"}}),(E.scales.yAxes||[]).map(function(de){return{options:de,dtype:"linear",dposition:"left"}}))),E.scale&&k.push({options:E.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),Ze.each(k,function(de){var be=de.options,Ue=be.id,we=hl(be.type,de.dtype);_t(be.position)!==_t(de.dposition)&&(be.position=de.dposition),K[Ue]=!0;var Xe=null;if(Ue in N&&N[Ue].type===we)(Xe=N[Ue]).options=be,Xe.ctx=h.ctx,Xe.chart=h;else{var gt=ku.getScaleConstructor(we);if(!gt)return;Xe=new gt({id:Ue,type:we,options:be,ctx:h.ctx,chart:h}),N[Xe.id]=Xe}Xe.mergeTicksOptions(),de.isDefault&&(h.scale=Xe)}),Ze.each(K,function(de,be){de||delete N[be]}),h.scales=N,ku.addScalesToLayout(this)},buildOrUpdateControllers:function(){var k,K,h=this,E=[],N=h.data.datasets;for(k=0,K=N.length;k<K;k++){var de=N[k],be=h.getDatasetMeta(k),Ue=de.type||h.config.type;if(be.type&&be.type!==Ue&&(h.destroyDatasetMeta(k),be=h.getDatasetMeta(k)),be.type=Ue,be.order=de.order||0,be.index=k,be.controller)be.controller.updateIndex(k),be.controller.linkScales();else{var we=fi[be.type];if(void 0===we)throw new Error('"'+be.type+'" is not a chart type.');be.controller=new we(h,k),E.push(be.controller)}}return E},resetElements:function(){var h=this;Ze.each(h.data.datasets,function(E,N){h.getDatasetMeta(N).controller.reset()},h)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(h){var N,k,E=this;if((!h||"object"!=typeof h)&&(h={duration:h,lazy:arguments[1]}),Ae(E),As._invalidate(E),!1!==As.notify(E,"beforeUpdate")){E.tooltip._data=E.data;var K=E.buildOrUpdateControllers();for(N=0,k=E.data.datasets.length;N<k;N++)E.getDatasetMeta(N).controller.buildOrUpdateElements();E.updateLayout(),E.options.animation&&E.options.animation.duration&&Ze.each(K,function(de){de.reset()}),E.updateDatasets(),E.tooltip.initialize(),E.lastActive=[],As.notify(E,"afterUpdate"),E._layers.sort(lt("z","_idx")),E._bufferedRender?E._bufferedRequest={duration:h.duration,easing:h.easing,lazy:h.lazy}:E.render(h)}},updateLayout:function(){var h=this;!1!==As.notify(h,"beforeLayout")&&(jl.update(this,this.width,this.height),h._layers=[],Ze.each(h.boxes,function(E){E._configure&&E._configure(),h._layers.push.apply(h._layers,E._layers())},h),h._layers.forEach(function(E,N){E._idx=N}),As.notify(h,"afterScaleUpdate"),As.notify(h,"afterLayout"))},updateDatasets:function(){var h=this;if(!1!==As.notify(h,"beforeDatasetsUpdate")){for(var E=0,N=h.data.datasets.length;E<N;++E)h.updateDataset(E);As.notify(h,"afterDatasetsUpdate")}},updateDataset:function(h){var E=this,N=E.getDatasetMeta(h),k={meta:N,index:h};!1!==As.notify(E,"beforeDatasetUpdate",[k])&&(N.controller._update(),As.notify(E,"afterDatasetUpdate",[k]))},render:function(h){var E=this;(!h||"object"!=typeof h)&&(h={duration:h,lazy:arguments[1]});var N=E.options.animation,k=hl(h.duration,N&&N.duration),K=h.lazy;if(!1!==As.notify(E,"beforeRender")){var de=function(Ue){As.notify(E,"afterRender"),Ze.callback(N&&N.onComplete,[Ue],E)};if(N&&k){var be=new po({numSteps:k/16.66,easing:h.easing||N.easing,render:function(Ue,we){var gt=we.currentStep,vt=gt/we.numSteps;Ue.draw((0,Ze.easing.effects[we.easing])(vt),vt,gt)},onAnimationProgress:N.onProgress,onAnimationComplete:de});yo.addAnimation(E,be,k,K)}else E.draw(),de(new po({numSteps:0,chart:E}));return E}},draw:function(h){var N,k,E=this;if(E.clear(),Ze.isNullOrUndef(h)&&(h=1),E.transition(h),!(E.width<=0||E.height<=0)&&!1!==As.notify(E,"beforeDraw",[h])){for(k=E._layers,N=0;N<k.length&&k[N].z<=0;++N)k[N].draw(E.chartArea);for(E.drawDatasets(h);N<k.length;++N)k[N].draw(E.chartArea);E._drawTooltip(h),As.notify(E,"afterDraw",[h])}},transition:function(h){for(var E=this,N=0,k=(E.data.datasets||[]).length;N<k;++N)E.isDatasetVisible(N)&&E.getDatasetMeta(N).controller.transition(h);E.tooltip.transition(h)},_getSortedDatasetMetas:function(h){var K,de,E=this,k=[];for(K=0,de=(E.data.datasets||[]).length;K<de;++K)(!h||E.isDatasetVisible(K))&&k.push(E.getDatasetMeta(K));return k.sort(lt("order","index")),k},_getSortedVisibleDatasetMetas:function(){return this._getSortedDatasetMetas(!0)},drawDatasets:function(h){var N,k,E=this;if(!1!==As.notify(E,"beforeDatasetsDraw",[h])){for(k=(N=E._getSortedVisibleDatasetMetas()).length-1;k>=0;--k)E.drawDataset(N[k],h);As.notify(E,"afterDatasetsDraw",[h])}},drawDataset:function(h,E){var k={meta:h,index:h.index,easingValue:E};!1!==As.notify(this,"beforeDatasetDraw",[k])&&(h.controller.draw(E),As.notify(this,"afterDatasetDraw",[k]))},_drawTooltip:function(h){var E=this,N=E.tooltip,k={tooltip:N,easingValue:h};!1!==As.notify(E,"beforeTooltipDraw",[k])&&(N.draw(),As.notify(E,"afterTooltipDraw",[k]))},getElementAtEvent:function(h){return al.modes.single(this,h)},getElementsAtEvent:function(h){return al.modes.label(this,h,{intersect:!0})},getElementsAtXAxis:function(h){return al.modes["x-axis"](this,h,{intersect:!0})},getElementsAtEventForMode:function(h,E,N){var k=al.modes[E];return"function"==typeof k?k(this,h,N):[]},getDatasetAtEvent:function(h){return al.modes.dataset(this,h,{intersect:!0})},getDatasetMeta:function(h){var E=this,N=E.data.datasets[h];N._meta||(N._meta={});var k=N._meta[E.id];return k||(k=N._meta[E.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:N.order||0,index:h}),k},getVisibleDatasetCount:function(){for(var h=0,E=0,N=this.data.datasets.length;E<N;++E)this.isDatasetVisible(E)&&h++;return h},isDatasetVisible:function(h){var E=this.getDatasetMeta(h);return"boolean"==typeof E.hidden?!E.hidden:!this.data.datasets[h].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(h){var E=this.id,N=this.data.datasets[h],k=N._meta&&N._meta[E];k&&(k.controller.destroy(),delete N._meta[E])},destroy:function(){var N,k,h=this,E=h.canvas;for(h.stop(),N=0,k=h.data.datasets.length;N<k;++N)h.destroyDatasetMeta(N);E&&(h.unbindEvents(),Ze.canvas.clear(h),Aa.releaseContext(h.ctx),h.canvas=null,h.ctx=null),As.notify(h,"destroy"),delete un.instances[h.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var h=this;h.tooltip=new Ja({_chart:h,_chartInstance:h,_data:h.data,_options:h.options.tooltips},h)},bindEvents:function(){var h=this,E=h._listeners={},N=function(){h.eventHandler.apply(h,arguments)};Ze.each(h.options.events,function(k){Aa.addEventListener(h,k,N),E[k]=N}),h.options.responsive&&(N=function(){h.resize()},Aa.addEventListener(h,"resize",N),E.resize=N)},unbindEvents:function(){var h=this,E=h._listeners;!E||(delete h._listeners,Ze.each(E,function(N,k){Aa.removeEventListener(h,k,N)}))},updateHoverStyle:function(h,E,N){var K,de,be,k=N?"set":"remove";for(de=0,be=h.length;de<be;++de)(K=h[de])&&this.getDatasetMeta(K._datasetIndex).controller[k+"HoverStyle"](K);"dataset"===E&&this.getDatasetMeta(h[0]._datasetIndex).controller["_"+k+"DatasetHoverStyle"]()},eventHandler:function(h){var E=this,N=E.tooltip;if(!1!==As.notify(E,"beforeEvent",[h])){E._bufferedRender=!0,E._bufferedRequest=null;var k=E.handleEvent(h);N&&(k=N._start?N.handleEvent(h):k|N.handleEvent(h)),As.notify(E,"afterEvent",[h]);var K=E._bufferedRequest;return K?E.render(K):k&&!E.animating&&(E.stop(),E.render({duration:E.options.hover.animationDuration,lazy:!0})),E._bufferedRender=!1,E._bufferedRequest=null,E}},handleEvent:function(h){var K,E=this,N=E.options||{},k=N.hover;return E.lastActive=E.lastActive||[],E.active="mouseout"===h.type?[]:E.getElementsAtEventForMode(h,k.mode,k),Ze.callback(N.onHover||N.hover.onHover,[h.native,E.active],E),("mouseup"===h.type||"click"===h.type)&&N.onClick&&N.onClick.call(E,h.native,E.active),E.lastActive.length&&E.updateHoverStyle(E.lastActive,k.mode,!1),E.active.length&&k.mode&&E.updateHoverStyle(E.active,k.mode,!0),K=!Ze.arrayEquals(E.active,E.lastActive),E.lastActive=E.active,K}}),un.instances={};var yn=un;un.Controller=un,un.types={},Ze.configMerge=Hs,Ze.scaleMerge=Vl;function Vr(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function _i(h){this.options=h||{}}Ze.extend(_i.prototype,{formats:Vr,parse:Vr,format:Vr,add:Vr,diff:Vr,startOf:Vr,endOf:Vr,_create:function(h){return h}}),_i.override=function(h){Ze.extend(_i.prototype,h)};var ko={_date:_i},Ho={formatters:{values:function(h){return Ze.isArray(h)?h:""+h},linear:function(h,E,N){var k=N.length>3?N[2]-N[1]:N[1]-N[0];Math.abs(k)>1&&h!==Math.floor(h)&&(k=h-Math.floor(h));var K=Ze.log10(Math.abs(k)),de="";if(0!==h)if(Math.max(Math.abs(N[0]),Math.abs(N[N.length-1]))<1e-4){var Ue=Ze.log10(Math.abs(h)),we=Math.floor(Ue)-Math.floor(K);we=Math.max(Math.min(we,20),0),de=h.toExponential(we)}else{var Xe=-1*Math.floor(K);Xe=Math.max(Math.min(Xe,20),0),de=h.toFixed(Xe)}else de="0";return de},logarithmic:function(h,E,N){var k=h/Math.pow(10,Math.floor(Ze.log10(h)));return 0===h?"0":1===k||2===k||5===k||0===E||E===N.length-1?h.toExponential():""}}},Ln=Ze.isArray,Mr=Ze.isNullOrUndef,gr=Ze.valueOrDefault,co=Ze.valueAtIndexOrDefault;function Na(h,E,N){var Xe,k=h.getTicks().length,K=Math.min(E,k-1),de=h.getPixelForTick(K),be=h._startPixel,Ue=h._endPixel;if(!(N&&(Xe=1===k?Math.max(de-be,Ue-de):0===E?(h.getPixelForTick(1)-de)/2:(de-h.getPixelForTick(K-1))/2,de+=K<E?Xe:-Xe,de<be-1e-6||de>Ue+1e-6)))return de}function Ks(h,E,N,k){var gt,vt,Jt,Pn,Rn,sr,jr,Ni,Vo,$o,Vs,qs,dl,K=N.length,de=[],be=[],Ue=[],we=0,Xe=0;for(gt=0;gt<K;++gt){if(Pn=N[gt].label,h.font=sr=(Rn=N[gt].major?E.major:E.minor).string,jr=k[sr]=k[sr]||{data:{},gc:[]},Ni=Rn.lineHeight,Vo=$o=0,Mr(Pn)||Ln(Pn)){if(Ln(Pn))for(vt=0,Jt=Pn.length;vt<Jt;++vt)!Mr(Vs=Pn[vt])&&!Ln(Vs)&&(Vo=Ze.measureText(h,jr.data,jr.gc,Vo,Vs),$o+=Ni)}else Vo=Ze.measureText(h,jr.data,jr.gc,Vo,Pn),$o=Ni;de.push(Vo),be.push($o),Ue.push(Ni/2),we=Math.max(Vo,we),Xe=Math.max($o,Xe)}function ga(sa){return{width:de[sa]||0,height:be[sa]||0,offset:Ue[sa]||0}}return function(h,E){Ze.each(h,function(N){var de,k=N.gc,K=k.length/2;if(K>E){for(de=0;de<K;++de)delete N.data[k[de]];k.splice(0,K)}})}(k,K),qs=de.indexOf(we),dl=be.indexOf(Xe),{first:ga(0),last:ga(K-1),widest:ga(qs),highest:ga(dl)}}function td(h){return h.drawTicks?h.tickMarkLength:0}function Lc(h){var E,N;return h.display?(E=Ze.options._parseFont(h),N=Ze.options.toPadding(h.padding),E.lineHeight+N.height):0}function zl(h,E){return Ze.extend(Ze.options._parseFont({fontFamily:gr(E.fontFamily,h.fontFamily),fontSize:gr(E.fontSize,h.fontSize),fontStyle:gr(E.fontStyle,h.fontStyle),lineHeight:gr(E.lineHeight,h.lineHeight)}),{color:Ze.options.resolve([E.fontColor,h.fontColor,Tr.global.defaultFontColor])})}function ki(h){var E=zl(h,h.minor);return{minor:E,major:h.major.enabled?zl(h,h.major):E}}function No(h){var N,k,K,E=[];for(k=0,K=h.length;k<K;++k)void 0!==(N=h[k])._index&&E.push(N);return E}function vd(h,E,N,k){var Ue,we,Xe,gt,K=gr(N,0),de=Math.min(gr(k,h.length),h.length),be=0;for(E=Math.ceil(E),k&&(E=(Ue=k-N)/Math.floor(Ue/E)),gt=K;gt<0;)be++,gt=Math.round(K+be*E);for(we=Math.max(K,0);we<de;we++)Xe=h[we],we===gt?(Xe._index=we,be++,gt=Math.round(K+be*E)):delete Xe.label}Tr._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:Ho.formatters.values,minor:{},major:{}}});var vn=nr.extend({zeroLineIndex:0,getPadding:function(){var h=this;return{left:h.paddingLeft||0,top:h.paddingTop||0,right:h.paddingRight||0,bottom:h.paddingBottom||0}},getTicks:function(){return this._ticks},_getLabels:function(){var h=this.chart.data;return this.options.labels||(this.isHorizontal()?h.xLabels:h.yLabels)||h.labels||[]},mergeTicksOptions:function(){},beforeUpdate:function(){Ze.callback(this.options.beforeUpdate,[this])},update:function(h,E,N){var be,Ue,we,Xe,gt,k=this,K=k.options.ticks,de=K.sampleSize;if(k.beforeUpdate(),k.maxWidth=h,k.maxHeight=E,k.margins=Ze.extend({left:0,right:0,top:0,bottom:0},N),k._ticks=null,k.ticks=null,k._labelSizes=null,k._maxLabelLines=0,k.longestLabelWidth=0,k.longestTextCache=k.longestTextCache||{},k._gridLineItems=null,k._labelItems=null,k.beforeSetDimensions(),k.setDimensions(),k.afterSetDimensions(),k.beforeDataLimits(),k.determineDataLimits(),k.afterDataLimits(),k.beforeBuildTicks(),Xe=k.buildTicks()||[],(!(Xe=k.afterBuildTicks(Xe)||Xe)||!Xe.length)&&k.ticks)for(Xe=[],be=0,Ue=k.ticks.length;be<Ue;++be)Xe.push({value:k.ticks[be],major:!1});return k._ticks=Xe,we=k._convertTicksToLabels((gt=de<Xe.length)?function(h,E){for(var N=[],k=h.length/E,K=0,de=h.length;K<de;K+=k)N.push(h[Math.floor(K)]);return N}(Xe,de):Xe),k._configure(),k.beforeCalculateTickRotation(),k.calculateTickRotation(),k.afterCalculateTickRotation(),k.beforeFit(),k.fit(),k.afterFit(),k._ticksToDraw=K.display&&(K.autoSkip||"auto"===K.source)?k._autoSkip(Xe):Xe,gt&&(we=k._convertTicksToLabels(k._ticksToDraw)),k.ticks=we,k.afterUpdate(),k.minSize},_configure:function(){var N,k,h=this,E=h.options.ticks.reverse;h.isHorizontal()?(N=h.left,k=h.right):(N=h.top,k=h.bottom,E=!E),h._startPixel=N,h._endPixel=k,h._reversePixels=E,h._length=k-N},afterUpdate:function(){Ze.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){Ze.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var h=this;h.isHorizontal()?(h.width=h.maxWidth,h.left=0,h.right=h.width):(h.height=h.maxHeight,h.top=0,h.bottom=h.height),h.paddingLeft=0,h.paddingTop=0,h.paddingRight=0,h.paddingBottom=0},afterSetDimensions:function(){Ze.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){Ze.callback(this.options.beforeDataLimits,[this])},determineDataLimits:Ze.noop,afterDataLimits:function(){Ze.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){Ze.callback(this.options.beforeBuildTicks,[this])},buildTicks:Ze.noop,afterBuildTicks:function(h){var E=this;return Ln(h)&&h.length?Ze.callback(E.options.afterBuildTicks,[E,h]):(E.ticks=Ze.callback(E.options.afterBuildTicks,[E,E.ticks])||E.ticks,h)},beforeTickToLabelConversion:function(){Ze.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var h=this,E=h.options.ticks;h.ticks=h.ticks.map(E.userCallback||E.callback,this)},afterTickToLabelConversion:function(){Ze.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){Ze.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var Ue,we,Xe,gt,vt,Jt,Pn,h=this,E=h.options,N=E.ticks,k=h.getTicks().length,K=N.minRotation||0,de=N.maxRotation,be=K;!h._isVisible()||!N.display||K>=de||k<=1||!h.isHorizontal()?h.labelRotation=K:(we=(Ue=h._getLabelSizes()).widest.width,Xe=Ue.highest.height-Ue.highest.offset,gt=Math.min(h.maxWidth,h.chart.width-we),we+6>(vt=E.offset?h.maxWidth/k:gt/(k-1))&&(vt=gt/(k-(E.offset?.5:1)),Jt=h.maxHeight-td(E.gridLines)-N.padding-Lc(E.scaleLabel),Pn=Math.sqrt(we*we+Xe*Xe),be=Ze.toDegrees(Math.min(Math.asin(Math.min((Ue.highest.height+6)/vt,1)),Math.asin(Math.min(Jt/Pn,1))-Math.asin(Xe/Pn))),be=Math.max(K,Math.min(de,be))),h.labelRotation=be)},afterCalculateTickRotation:function(){Ze.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){Ze.callback(this.options.beforeFit,[this])},fit:function(){var h=this,E=h.minSize={width:0,height:0},N=h.chart,k=h.options,K=k.ticks,de=k.scaleLabel,be=k.gridLines,Ue=h._isVisible(),we="bottom"===k.position,Xe=h.isHorizontal();if(Xe?E.width=h.maxWidth:Ue&&(E.width=td(be)+Lc(de)),Xe?Ue&&(E.height=td(be)+Lc(de)):E.height=h.maxHeight,K.display&&Ue){var gt=ki(K),vt=h._getLabelSizes(),Jt=vt.first,Pn=vt.last,Rn=vt.widest,sr=vt.highest,jr=.4*gt.minor.lineHeight,Ni=K.padding;if(Xe){var Vo=0!==h.labelRotation,$o=Ze.toRadians(h.labelRotation),Vs=Math.cos($o),qs=Math.sin($o);E.height=Math.min(h.maxHeight,E.height+(qs*Rn.width+Vs*(sr.height-(Vo?sr.offset:0))+(Vo?0:jr))+Ni);var Pa,ol,ga=h.getPixelForTick(0)-h.left,sa=h.right-h.getPixelForTick(h.getTicks().length-1);Vo?(Pa=we?Vs*Jt.width+qs*Jt.offset:qs*(Jt.height-Jt.offset),ol=we?qs*(Pn.height-Pn.offset):Vs*Pn.width+qs*Pn.offset):(Pa=Jt.width/2,ol=Pn.width/2),h.paddingLeft=Math.max((Pa-ga)*h.width/(h.width-ga),0)+3,h.paddingRight=Math.max((ol-sa)*h.width/(h.width-sa),0)+3}else E.width=Math.min(h.maxWidth,E.width+(K.mirror?0:Rn.width+Ni+jr)),h.paddingTop=Jt.height/2,h.paddingBottom=Pn.height/2}h.handleMargins(),Xe?(h.width=h._length=N.width-h.margins.left-h.margins.right,h.height=E.height):(h.width=E.width,h.height=h._length=N.height-h.margins.top-h.margins.bottom)},handleMargins:function(){var h=this;h.margins&&(h.margins.left=Math.max(h.paddingLeft,h.margins.left),h.margins.top=Math.max(h.paddingTop,h.margins.top),h.margins.right=Math.max(h.paddingRight,h.margins.right),h.margins.bottom=Math.max(h.paddingBottom,h.margins.bottom))},afterFit:function(){Ze.callback(this.options.afterFit,[this])},isHorizontal:function(){var h=this.options.position;return"top"===h||"bottom"===h},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(h){if(Mr(h))return NaN;if(("number"==typeof h||h instanceof Number)&&!isFinite(h))return NaN;if(h)if(this.isHorizontal()){if(void 0!==h.x)return this.getRightValue(h.x)}else if(void 0!==h.y)return this.getRightValue(h.y);return h},_convertTicksToLabels:function(h){var N,k,K,E=this;for(E.ticks=h.map(function(de){return de.value}),E.beforeTickToLabelConversion(),N=E.convertTicksToLabels(h)||E.ticks,E.afterTickToLabelConversion(),k=0,K=h.length;k<K;++k)h[k].label=N[k];return N},_getLabelSizes:function(){var h=this,E=h._labelSizes;return E||(h._labelSizes=E=Ks(h.ctx,ki(h.options.ticks),h.getTicks(),h.longestTextCache),h.longestLabelWidth=E.widest.width),E},_parseValue:function(h){var E,N,k,K;return Ln(h)?(E=+this.getRightValue(h[0]),N=+this.getRightValue(h[1]),k=Math.min(E,N),K=Math.max(E,N)):(E=void 0,N=h=+this.getRightValue(h),k=h,K=h),{min:k,max:K,start:E,end:N}},_getScaleLabel:function(h){var E=this._parseValue(h);return void 0!==E.start?"["+E.start+", "+E.end+"]":+this.getRightValue(h)},getLabelForIndex:Ze.noop,getPixelForValue:Ze.noop,getValueForPixel:Ze.noop,getPixelForTick:function(h){var E=this,N=E.options.offset,k=E._ticks.length,K=1/Math.max(k-(N?0:1),1);return h<0||h>k-1?null:E.getPixelForDecimal(h*K+(N?K/2:0))},getPixelForDecimal:function(h){var E=this;return E._reversePixels&&(h=1-h),E._startPixel+h*E._length},getDecimalForPixel:function(h){var E=(h-this._startPixel)/this._length;return this._reversePixels?1-E:E},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var h=this,E=h.min,N=h.max;return h.beginAtZero?0:E<0&&N<0?N:E>0&&N>0?E:0},_autoSkip:function(h){var Xe,gt,vt,Jt,E=this,N=E.options.ticks,k=E._length,K=N.maxTicksLimit||k/E._tickSize()+1,de=N.major.enabled?function(h){var N,k,E=[];for(N=0,k=h.length;N<k;N++)h[N].major&&E.push(N);return E}(h):[],be=de.length,Ue=de[0],we=de[be-1];if(be>K)return function(h,E,N){var de,be,k=0,K=E[0];for(N=Math.ceil(N),de=0;de<h.length;de++)be=h[de],de===K?(be._index=de,K=E[++k*N]):delete be.label}(h,de,be/K),No(h);if(vt=function(h,E,N,k){var be,Ue,we,Xe,K=function(h){var N,k,E=h.length;if(E<2)return!1;for(k=h[0],N=1;N<E;++N)if(h[N]-h[N-1]!==k)return!1;return k}(h),de=(E.length-1)/k;if(!K)return Math.max(de,1);for(we=0,Xe=(be=Ze.math._factorize(K)).length-1;we<Xe;we++)if((Ue=be[we])>de)return Ue;return Math.max(de,1)}(de,h,0,K),be>0){for(Xe=0,gt=be-1;Xe<gt;Xe++)vd(h,vt,de[Xe],de[Xe+1]);return vd(h,vt,Ze.isNullOrUndef(Jt=be>1?(we-Ue)/(be-1):null)?0:Ue-Jt,Ue),vd(h,vt,we,Ze.isNullOrUndef(Jt)?h.length:we+Jt),No(h)}return vd(h,vt),No(h)},_tickSize:function(){var h=this,E=h.options.ticks,N=Ze.toRadians(h.labelRotation),k=Math.abs(Math.cos(N)),K=Math.abs(Math.sin(N)),de=h._getLabelSizes(),be=E.autoSkipPadding||0,Ue=de?de.widest.width+be:0,we=de?de.highest.height+be:0;return h.isHorizontal()?we*k>Ue*K?Ue/k:we/K:we*K<Ue*k?we/k:Ue/K},_isVisible:function(){var k,K,de,h=this,E=h.chart,N=h.options.display;if("auto"!==N)return!!N;for(k=0,K=E.data.datasets.length;k<K;++k)if(E.isDatasetVisible(k)&&((de=E.getDatasetMeta(k)).xAxisID===h.id||de.yAxisID===h.id))return!0;return!1},_computeGridLineItems:function(h){var jr,Ni,Vo,$o,Vs,qs,dl,ga,sa,Pa,ol,Eu,wa,au,mu,xc,ic,E=this,N=E.chart,k=E.options,K=k.gridLines,de=k.position,be=K.offsetGridLines,Ue=E.isHorizontal(),we=E._ticksToDraw,Xe=we.length+(be?1:0),gt=td(K),vt=[],Jt=K.drawBorder?co(K.lineWidth,0,0):0,Pn=Jt/2,Rn=Ze._alignPixel,sr=function(gf){return Rn(N,gf,Jt)};for("top"===de?(jr=sr(E.bottom),dl=E.bottom-gt,sa=jr-Pn,ol=sr(h.top)+Pn,wa=h.bottom):"bottom"===de?(jr=sr(E.top),ol=h.top,wa=sr(h.bottom)-Pn,dl=jr+Pn,sa=E.top+gt):"left"===de?(jr=sr(E.right),qs=E.right-gt,ga=jr-Pn,Pa=sr(h.left)+Pn,Eu=h.right):(jr=sr(E.left),Pa=h.left,Eu=sr(h.right)-Pn,qs=jr+Pn,ga=E.left+gt),Ni=0;Ni<Xe;++Ni)!(Mr((Vo=we[Ni]||{}).label)&&Ni<we.length)&&(Ni===E.zeroLineIndex&&k.offset===be?(au=K.zeroLineWidth,mu=K.zeroLineColor,xc=K.zeroLineBorderDash||[],ic=K.zeroLineBorderDashOffset||0):(au=co(K.lineWidth,Ni,1),mu=co(K.color,Ni,"rgba(0,0,0,0.1)"),xc=K.borderDash||[],ic=K.borderDashOffset||0),void 0!==($o=Na(E,Vo._index||Ni,be))&&(Vs=Rn(N,$o,au),Ue?qs=ga=Pa=Eu=Vs:dl=sa=ol=wa=Vs,vt.push({tx1:qs,ty1:dl,tx2:ga,ty2:sa,x1:Pa,y1:ol,x2:Eu,y2:wa,width:au,color:mu,borderDash:xc,borderDashOffset:ic})));return vt.ticksLength=Xe,vt.borderValue=jr,vt},_computeLabelItems:function(){var Jt,Pn,Rn,sr,jr,Ni,Vo,$o,Vs,qs,dl,ga,h=this,E=h.options,N=E.ticks,k=E.position,K=N.mirror,de=h.isHorizontal(),be=h._ticksToDraw,Ue=ki(N),we=N.padding,Xe=td(E.gridLines),gt=-Ze.toRadians(h.labelRotation),vt=[];for("top"===k?(Ni=h.bottom-Xe-we,Vo=gt?"left":"center"):"bottom"===k?(Ni=h.top+Xe+we,Vo=gt?"right":"center"):"left"===k?(jr=h.right-(K?0:Xe)-we,Vo=K?"left":"right"):(jr=h.left+(K?0:Xe)+we,Vo=K?"right":"left"),Jt=0,Pn=be.length;Jt<Pn;++Jt)!Mr(sr=(Rn=be[Jt]).label)&&($o=h.getPixelForTick(Rn._index||Jt)+N.labelOffset,qs=(Vs=Rn.major?Ue.major:Ue.minor).lineHeight,dl=Ln(sr)?sr.length:1,de?(jr=$o,ga="top"===k?((gt?1:.5)-dl)*qs:(gt?0:.5)*qs):(Ni=$o,ga=(1-dl)*qs/2),vt.push({x:jr,y:Ni,rotation:gt,label:sr,font:Vs,textOffset:ga,textAlign:Vo}));return vt},_drawGrid:function(h){var E=this,N=E.options.gridLines;if(N.display){var we,Xe,gt,vt,Jt,k=E.ctx,K=E.chart,de=Ze._alignPixel,be=N.drawBorder?co(N.lineWidth,0,0):0,Ue=E._gridLineItems||(E._gridLineItems=E._computeGridLineItems(h));for(gt=0,vt=Ue.length;gt<vt;++gt)Xe=(Jt=Ue[gt]).color,(we=Jt.width)&&Xe&&(k.save(),k.lineWidth=we,k.strokeStyle=Xe,k.setLineDash&&(k.setLineDash(Jt.borderDash),k.lineDashOffset=Jt.borderDashOffset),k.beginPath(),N.drawTicks&&(k.moveTo(Jt.tx1,Jt.ty1),k.lineTo(Jt.tx2,Jt.ty2)),N.drawOnChartArea&&(k.moveTo(Jt.x1,Jt.y1),k.lineTo(Jt.x2,Jt.y2)),k.stroke(),k.restore());if(be){var jr,Ni,Vo,$o,Pn=be,Rn=co(N.lineWidth,Ue.ticksLength-1,1),sr=Ue.borderValue;E.isHorizontal()?(jr=de(K,E.left,Pn)-Pn/2,Ni=de(K,E.right,Rn)+Rn/2,Vo=$o=sr):(Vo=de(K,E.top,Pn)-Pn/2,$o=de(K,E.bottom,Rn)+Rn/2,jr=Ni=sr),k.lineWidth=be,k.strokeStyle=co(N.color,0),k.beginPath(),k.moveTo(jr,Vo),k.lineTo(Ni,$o),k.stroke()}}},_drawLabels:function(){var h=this;if(h.options.ticks.display){var K,de,be,Ue,we,Xe,gt,vt,N=h.ctx,k=h._labelItems||(h._labelItems=h._computeLabelItems());for(K=0,be=k.length;K<be;++K){if(Xe=(we=k[K]).font,N.save(),N.translate(we.x,we.y),N.rotate(we.rotation),N.font=Xe.string,N.fillStyle=Xe.color,N.textBaseline="middle",N.textAlign=we.textAlign,vt=we.textOffset,Ln(gt=we.label))for(de=0,Ue=gt.length;de<Ue;++de)N.fillText(""+gt[de],0,vt),vt+=Xe.lineHeight;else N.fillText(gt,0,vt);N.restore()}}},_drawTitle:function(){var h=this,E=h.ctx,N=h.options,k=N.scaleLabel;if(k.display){var gt,vt,K=gr(k.fontColor,Tr.global.defaultFontColor),de=Ze.options._parseFont(k),be=Ze.options.toPadding(k.padding),Ue=de.lineHeight/2,we=N.position,Xe=0;if(h.isHorizontal())gt=h.left+h.width/2,vt="bottom"===we?h.bottom-Ue-be.bottom:h.top+Ue+be.top;else{var Jt="left"===we;gt=Jt?h.left+Ue+be.top:h.right-Ue-be.top,vt=h.top+h.height/2,Xe=Jt?-.5*Math.PI:.5*Math.PI}E.save(),E.translate(gt,vt),E.rotate(Xe),E.textAlign="center",E.textBaseline="middle",E.fillStyle=K,E.font=de.string,E.fillText(k.labelString,0,0),E.restore()}},draw:function(h){var E=this;!E._isVisible()||(E._drawGrid(h),E._drawTitle(),E._drawLabels())},_layers:function(){var h=this,E=h.options,N=E.ticks&&E.ticks.z||0,k=E.gridLines&&E.gridLines.z||0;return h._isVisible()&&N!==k&&h.draw===h._draw?[{z:k,draw:function(){h._drawGrid.apply(h,arguments),h._drawTitle.apply(h,arguments)}},{z:N,draw:function(){h._drawLabels.apply(h,arguments)}}]:[{z:N,draw:function(){h.draw.apply(h,arguments)}}]},_getMatchingVisibleMetas:function(h){var E=this,N=E.isHorizontal();return E.chart._getSortedVisibleDatasetMetas().filter(function(k){return(!h||k.type===h)&&(N?k.xAxisID===E.id:k.yAxisID===E.id)})}});vn.prototype._draw=vn.prototype.draw;var Il=vn,nd=Ze.isNullOrUndef,ds=Il.extend({determineDataLimits:function(){var Ue,h=this,E=h._getLabels(),N=h.options.ticks,k=N.min,K=N.max,de=0,be=E.length-1;void 0!==k&&(Ue=E.indexOf(k))>=0&&(de=Ue),void 0!==K&&(Ue=E.indexOf(K))>=0&&(be=Ue),h.minIndex=de,h.maxIndex=be,h.min=E[de],h.max=E[be]},buildTicks:function(){var h=this,E=h._getLabels(),N=h.minIndex,k=h.maxIndex;h.ticks=0===N&&k===E.length-1?E:E.slice(N,k+1)},getLabelForIndex:function(h,E){var N=this,k=N.chart;return k.getDatasetMeta(E).controller._getValueScaleId()===N.id?N.getRightValue(k.data.datasets[E].data[h]):N._getLabels()[h]},_configure:function(){var h=this,E=h.options.offset,N=h.ticks;Il.prototype._configure.call(h),h.isHorizontal()||(h._reversePixels=!h._reversePixels),N&&(h._startValue=h.minIndex-(E?.5:0),h._valueRange=Math.max(N.length-(E?0:1),1))},getPixelForValue:function(h,E,N){var K,de,be,k=this;return!nd(E)&&!nd(N)&&(h=k.chart.data.datasets[N].data[E]),nd(h)||(K=k.isHorizontal()?h.x:h.y),(void 0!==K||void 0!==h&&isNaN(E))&&(de=k._getLabels(),h=Ze.valueOrDefault(K,h),E=-1!==(be=de.indexOf(h))?be:E,isNaN(E)&&(E=h)),k.getPixelForDecimal((E-k._startValue)/k._valueRange)},getPixelForTick:function(h){var E=this.ticks;return h<0||h>E.length-1?null:this.getPixelForValue(E[h],h+this.minIndex)},getValueForPixel:function(h){var E=this,N=Math.round(E._startValue+E.getDecimalForPixel(h)*E._valueRange);return Math.min(Math.max(N,0),E.ticks.length-1)},getBasePixel:function(){return this.bottom}});ds._defaults={position:"bottom"};var nc=Ze.isNullOrUndef;var ul=Il.extend({getRightValue:function(h){return"string"==typeof h?+h:Il.prototype.getRightValue.call(this,h)},handleTickRangeOptions:function(){var h=this,N=h.options.ticks;if(N.beginAtZero){var k=Ze.sign(h.min),K=Ze.sign(h.max);k<0&&K<0?h.max=0:k>0&&K>0&&(h.min=0)}var de=void 0!==N.min||void 0!==N.suggestedMin,be=void 0!==N.max||void 0!==N.suggestedMax;void 0!==N.min?h.min=N.min:void 0!==N.suggestedMin&&(h.min=null===h.min?N.suggestedMin:Math.min(h.min,N.suggestedMin)),void 0!==N.max?h.max=N.max:void 0!==N.suggestedMax&&(h.max=null===h.max?N.suggestedMax:Math.max(h.max,N.suggestedMax)),de!==be&&h.min>=h.max&&(de?h.max=h.min+1:h.min=h.max-1),h.min===h.max&&(h.max++,N.beginAtZero||h.min--)},getTickLimit:function(){var K,h=this,E=h.options.ticks,N=E.stepSize,k=E.maxTicksLimit;return N?K=Math.ceil(h.max/N)-Math.floor(h.min/N)+1:(K=h._computeTickLimit(),k=k||11),k&&(K=Math.min(k,K)),K},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Ze.noop,buildTicks:function(){var h=this,N=h.options.ticks,k=h.getTickLimit(),K={maxTicks:k=Math.max(2,k),min:N.min,max:N.max,precision:N.precision,stepSize:Ze.valueOrDefault(N.fixedStepSize,N.stepSize)},de=h.ticks=function(h,E){var Pn,Rn,sr,jr,N=[],K=h.stepSize,de=K||1,be=h.maxTicks-1,Ue=h.min,we=h.max,Xe=h.precision,gt=E.min,vt=E.max,Jt=Ze.niceNum((vt-gt)/be/de)*de;if(Jt<1e-14&&nc(Ue)&&nc(we))return[gt,vt];(jr=Math.ceil(vt/Jt)-Math.floor(gt/Jt))>be&&(Jt=Ze.niceNum(jr*Jt/be/de)*de),K||nc(Xe)?Pn=Math.pow(10,Ze._decimalPlaces(Jt)):(Pn=Math.pow(10,Xe),Jt=Math.ceil(Jt*Pn)/Pn),Rn=Math.floor(gt/Jt)*Jt,sr=Math.ceil(vt/Jt)*Jt,K&&(!nc(Ue)&&Ze.almostWhole(Ue/Jt,Jt/1e3)&&(Rn=Ue),!nc(we)&&Ze.almostWhole(we/Jt,Jt/1e3)&&(sr=we)),jr=Ze.almostEquals(jr=(sr-Rn)/Jt,Math.round(jr),Jt/1e3)?Math.round(jr):Math.ceil(jr),Rn=Math.round(Rn*Pn)/Pn,sr=Math.round(sr*Pn)/Pn,N.push(nc(Ue)?Rn:Ue);for(var Ni=1;Ni<jr;++Ni)N.push(Math.round((Rn+Ni*Jt)*Pn)/Pn);return N.push(nc(we)?sr:we),N}(K,h);h.handleDirectionalChanges(),h.max=Ze.max(de),h.min=Ze.min(de),N.reverse?(de.reverse(),h.start=h.max,h.end=h.min):(h.start=h.min,h.end=h.max)},convertTicksToLabels:function(){var h=this;h.ticksAsNumbers=h.ticks.slice(),h.zeroLineIndex=h.ticks.indexOf(0),Il.prototype.convertTicksToLabels.call(h)},_configure:function(){var K,h=this,E=h.getTicks(),N=h.min,k=h.max;Il.prototype._configure.call(h),h.options.offset&&E.length&&(N-=K=(k-N)/Math.max(E.length-1,1)/2,k+=K),h._startValue=N,h._endValue=k,h._valueRange=k-N}}),zd={position:"left",ticks:{callback:Ho.formatters.linear}};function Ce(h,E,N,k){var gt,vt,K=h.options,be=function(h,E,N){var k=[N.type,void 0===E&&void 0===N.stack?N.index:"",N.stack].join(".");return void 0===h[k]&&(h[k]={pos:[],neg:[]}),h[k]}(E,K.stacked,N),Ue=be.pos,we=be.neg,Xe=k.length;for(gt=0;gt<Xe;++gt)vt=h._parseValue(k[gt]),!(isNaN(vt.min)||isNaN(vt.max)||N.data[gt].hidden)&&(Ue[gt]=Ue[gt]||0,we[gt]=we[gt]||0,K.relativePoints?Ue[gt]=100:vt.min<0||vt.max<0?we[gt]+=vt.min:Ue[gt]+=vt.max)}function it(h,E,N){var K,de,k=N.length;for(K=0;K<k;++K)de=h._parseValue(N[K]),!(isNaN(de.min)||isNaN(de.max)||E.data[K].hidden)&&(h.min=Math.min(h.min,de.min),h.max=Math.max(h.max,de.max))}var yt=ul.extend({determineDataLimits:function(){var we,Xe,gt,vt,h=this,E=h.options,k=h.chart.data.datasets,K=h._getMatchingVisibleMetas(),de=E.stacked,be={},Ue=K.length;if(h.min=Number.POSITIVE_INFINITY,h.max=Number.NEGATIVE_INFINITY,void 0===de)for(we=0;!de&&we<Ue;++we)de=void 0!==(Xe=K[we]).stack;for(we=0;we<Ue;++we)gt=k[(Xe=K[we]).index].data,de?Ce(h,be,Xe,gt):it(h,Xe,gt);Ze.each(be,function(Jt){vt=Jt.pos.concat(Jt.neg),h.min=Math.min(h.min,Ze.min(vt)),h.max=Math.max(h.max,Ze.max(vt))}),h.min=Ze.isFinite(h.min)&&!isNaN(h.min)?h.min:0,h.max=Ze.isFinite(h.max)&&!isNaN(h.max)?h.max:1,h.handleTickRangeOptions()},_computeTickLimit:function(){var E,h=this;return h.isHorizontal()?Math.ceil(h.width/40):(E=Ze.options._parseFont(h.options.ticks),Math.ceil(h.height/E.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(h,E){return this._getScaleLabel(this.chart.data.datasets[E].data[h])},getPixelForValue:function(h){var E=this;return E.getPixelForDecimal((+E.getRightValue(h)-E._startValue)/E._valueRange)},getValueForPixel:function(h){return this._startValue+this.getDecimalForPixel(h)*this._valueRange},getPixelForTick:function(h){var E=this.ticksAsNumbers;return h<0||h>E.length-1?null:this.getPixelForValue(E[h])}});yt._defaults=zd;var Un=Ze.valueOrDefault,qn=Ze.math.log10;var Go={position:"left",ticks:{callback:Ho.formatters.logarithmic}};function ka(h,E){return Ze.isFinite(h)&&h>=0?h:E}var ss=Il.extend({determineDataLimits:function(){var be,Ue,we,Xe,gt,vt,h=this,E=h.options,N=h.chart,k=N.data.datasets,K=h.isHorizontal();function de(jr){return K?jr.xAxisID===h.id:jr.yAxisID===h.id}h.min=Number.POSITIVE_INFINITY,h.max=Number.NEGATIVE_INFINITY,h.minNotZero=Number.POSITIVE_INFINITY;var Jt=E.stacked;if(void 0===Jt)for(be=0;be<k.length;be++)if(Ue=N.getDatasetMeta(be),N.isDatasetVisible(be)&&de(Ue)&&void 0!==Ue.stack){Jt=!0;break}if(E.stacked||Jt){var Pn={};for(be=0;be<k.length;be++){var Rn=[(Ue=N.getDatasetMeta(be)).type,void 0===E.stacked&&void 0===Ue.stack?be:"",Ue.stack].join(".");if(N.isDatasetVisible(be)&&de(Ue))for(void 0===Pn[Rn]&&(Pn[Rn]=[]),gt=0,vt=(Xe=k[be].data).length;gt<vt;gt++){var sr=Pn[Rn];we=h._parseValue(Xe[gt]),!(isNaN(we.min)||isNaN(we.max)||Ue.data[gt].hidden||we.min<0||we.max<0)&&(sr[gt]=sr[gt]||0,sr[gt]+=we.max)}}Ze.each(Pn,function(jr){if(jr.length>0){var Ni=Ze.min(jr),Vo=Ze.max(jr);h.min=Math.min(h.min,Ni),h.max=Math.max(h.max,Vo)}})}else for(be=0;be<k.length;be++)if(Ue=N.getDatasetMeta(be),N.isDatasetVisible(be)&&de(Ue))for(gt=0,vt=(Xe=k[be].data).length;gt<vt;gt++)we=h._parseValue(Xe[gt]),!(isNaN(we.min)||isNaN(we.max)||Ue.data[gt].hidden||we.min<0||we.max<0)&&(h.min=Math.min(we.min,h.min),h.max=Math.max(we.max,h.max),0!==we.min&&(h.minNotZero=Math.min(we.min,h.minNotZero)));h.min=Ze.isFinite(h.min)?h.min:null,h.max=Ze.isFinite(h.max)?h.max:null,h.minNotZero=Ze.isFinite(h.minNotZero)?h.minNotZero:null,this.handleTickRangeOptions()},handleTickRangeOptions:function(){var h=this,E=h.options.ticks;h.min=ka(E.min,h.min),h.max=ka(E.max,h.max),h.min===h.max&&(0!==h.min&&null!==h.min?(h.min=Math.pow(10,Math.floor(qn(h.min))-1),h.max=Math.pow(10,Math.floor(qn(h.max))+1)):(h.min=1,h.max=10)),null===h.min&&(h.min=Math.pow(10,Math.floor(qn(h.max))-1)),null===h.max&&(h.max=0!==h.min?Math.pow(10,Math.floor(qn(h.min))+1):10),null===h.minNotZero&&(h.minNotZero=h.min>0?h.min:h.max<1?Math.pow(10,Math.floor(qn(h.max))):1)},buildTicks:function(){var h=this,E=h.options.ticks,N=!h.isHorizontal(),k={min:ka(E.min),max:ka(E.max)},K=h.ticks=function(h,E){var be,Ue,N=[],k=Un(h.min,Math.pow(10,Math.floor(qn(E.min)))),K=Math.floor(qn(E.max)),de=Math.ceil(E.max/Math.pow(10,K));0===k?(be=Math.floor(qn(E.minNotZero)),Ue=Math.floor(E.minNotZero/Math.pow(10,be)),N.push(k),k=Ue*Math.pow(10,be)):(be=Math.floor(qn(k)),Ue=Math.floor(k/Math.pow(10,be)));var we=be<0?Math.pow(10,Math.abs(be)):1;do{N.push(k),10==++Ue&&(Ue=1,we=++be>=0?1:we),k=Math.round(Ue*Math.pow(10,be)*we)/we}while(be<K||be===K&&Ue<de);var Xe=Un(h.max,k);return N.push(Xe),N}(k,h);h.max=Ze.max(K),h.min=Ze.min(K),E.reverse?(N=!N,h.start=h.max,h.end=h.min):(h.start=h.min,h.end=h.max),N&&K.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),Il.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(h,E){return this._getScaleLabel(this.chart.data.datasets[E].data[h])},getPixelForTick:function(h){var E=this.tickValues;return h<0||h>E.length-1?null:this.getPixelForValue(E[h])},_getFirstTickValue:function(h){var E=Math.floor(qn(h));return Math.floor(h/Math.pow(10,E))*Math.pow(10,E)},_configure:function(){var h=this,E=h.min,N=0;Il.prototype._configure.call(h),0===E&&(E=h._getFirstTickValue(h.minNotZero),N=Un(h.options.ticks.fontSize,Tr.global.defaultFontSize)/h._length),h._startValue=qn(E),h._valueOffset=N,h._valueRange=(qn(h.max)-qn(E))/(1-N)},getPixelForValue:function(h){var E=this,N=0;return(h=+E.getRightValue(h))>E.min&&h>0&&(N=(qn(h)-E._startValue)/E._valueRange+E._valueOffset),E.getPixelForDecimal(N)},getValueForPixel:function(h){var E=this,N=E.getDecimalForPixel(h);return 0===N&&0===E.min?0:Math.pow(10,E._startValue+(N-E._valueOffset)*E._valueRange)}});ss._defaults=Go;var Us=Ze.valueOrDefault,fc=Ze.valueAtIndexOrDefault,va=Ze.options.resolve,wl={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Ho.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(h){return h}}};function tl(h){var E=h.ticks;return E.display&&h.display?Us(E.fontSize,Tr.global.defaultFontSize)+2*E.backdropPaddingY:0}function $a(h,E,N){return Ze.isArray(N)?{w:Ze.longestText(h,h.font,N),h:N.length*E}:{w:h.measureText(N).width,h:E}}function Ha(h,E,N,k,K){return h===k||h===K?{start:E-N/2,end:E+N/2}:h<k||h>K?{start:E-N,end:E}:{start:E,end:E+N}}function Of(h){return 0===h||180===h?"center":h<180?"left":"right"}function Dd(h,E,N,k){var de,be,K=N.y+k/2;if(Ze.isArray(E))for(de=0,be=E.length;de<be;++de)h.fillText(E[de],N.x,K),K+=k;else h.fillText(E,N.x,K)}function Jd(h,E,N){90===h||270===h?N.y-=E.h/2:(h>270||h<90)&&(N.y-=E.h)}function Sc(h){return Ze.isNumber(h)?h:0}var Qd=ul.extend({setDimensions:function(){var h=this;h.width=h.maxWidth,h.height=h.maxHeight,h.paddingTop=tl(h.options)/2,h.xCenter=Math.floor(h.width/2),h.yCenter=Math.floor((h.height-h.paddingTop)/2),h.drawingArea=Math.min(h.height-h.paddingTop,h.width)/2},determineDataLimits:function(){var h=this,E=h.chart,N=Number.POSITIVE_INFINITY,k=Number.NEGATIVE_INFINITY;Ze.each(E.data.datasets,function(K,de){if(E.isDatasetVisible(de)){var be=E.getDatasetMeta(de);Ze.each(K.data,function(Ue,we){var Xe=+h.getRightValue(Ue);isNaN(Xe)||be.data[we].hidden||(N=Math.min(Xe,N),k=Math.max(Xe,k))})}}),h.min=N===Number.POSITIVE_INFINITY?0:N,h.max=k===Number.NEGATIVE_INFINITY?0:k,h.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/tl(this.options))},convertTicksToLabels:function(){var h=this;ul.prototype.convertTicksToLabels.call(h),h.pointLabels=h.chart.data.labels.map(function(){var E=Ze.callback(h.options.pointLabels.callback,arguments,h);return E||0===E?E:""})},getLabelForIndex:function(h,E){return+this.getRightValue(this.chart.data.datasets[E].data[h])},fit:function(){var h=this,E=h.options;E.display&&E.pointLabels.display?function(h){var K,de,be,E=Ze.options._parseFont(h.options.pointLabels),N={l:0,r:h.width,t:0,b:h.height-h.paddingTop},k={};h.ctx.font=E.string,h._pointLabelSizes=[];var Ue=h.chart.data.labels.length;for(K=0;K<Ue;K++){be=h.getPointPosition(K,h.drawingArea+5),de=$a(h.ctx,E.lineHeight,h.pointLabels[K]),h._pointLabelSizes[K]=de;var we=h.getIndexAngle(K),Xe=Ze.toDegrees(we)%360,gt=Ha(Xe,be.x,de.w,0,180),vt=Ha(Xe,be.y,de.h,90,270);gt.start<N.l&&(N.l=gt.start,k.l=we),gt.end>N.r&&(N.r=gt.end,k.r=we),vt.start<N.t&&(N.t=vt.start,k.t=we),vt.end>N.b&&(N.b=vt.end,k.b=we)}h.setReductions(h.drawingArea,N,k)}(h):h.setCenterPoint(0,0,0,0)},setReductions:function(h,E,N){var k=this,K=E.l/Math.sin(N.l),de=Math.max(E.r-k.width,0)/Math.sin(N.r),be=-E.t/Math.cos(N.t),Ue=-Math.max(E.b-(k.height-k.paddingTop),0)/Math.cos(N.b);K=Sc(K),de=Sc(de),be=Sc(be),Ue=Sc(Ue),k.drawingArea=Math.min(Math.floor(h-(K+de)/2),Math.floor(h-(be+Ue)/2)),k.setCenterPoint(K,de,be,Ue)},setCenterPoint:function(h,E,N,k){var K=this,Ue=N+K.drawingArea,we=K.height-K.paddingTop-k-K.drawingArea;K.xCenter=Math.floor((h+K.drawingArea+(K.width-E-K.drawingArea))/2+K.left),K.yCenter=Math.floor((Ue+we)/2+K.top+K.paddingTop)},getIndexAngle:function(h){var E=this.chart,de=(h*(360/E.data.labels.length)+((E.options||{}).startAngle||0))%360;return(de<0?de+360:de)*Math.PI*2/360},getDistanceFromCenterForValue:function(h){var E=this;if(Ze.isNullOrUndef(h))return NaN;var N=E.drawingArea/(E.max-E.min);return E.options.ticks.reverse?(E.max-h)*N:(h-E.min)*N},getPointPosition:function(h,E){var N=this,k=N.getIndexAngle(h)-Math.PI/2;return{x:Math.cos(k)*E+N.xCenter,y:Math.sin(k)*E+N.yCenter}},getPointPositionForValue:function(h,E){return this.getPointPosition(h,this.getDistanceFromCenterForValue(E))},getBasePosition:function(h){var E=this,N=E.min,k=E.max;return E.getPointPositionForValue(h||0,E.beginAtZero?0:N<0&&k<0?k:N>0&&k>0?N:0)},_drawGrid:function(){var Ue,we,Xe,h=this,E=h.ctx,N=h.options,k=N.gridLines,K=N.angleLines,de=Us(K.lineWidth,k.lineWidth),be=Us(K.color,k.color);if(N.pointLabels.display&&function(h){var E=h.ctx,N=h.options,k=N.pointLabels,K=tl(N),de=h.getDistanceFromCenterForValue(N.ticks.reverse?h.min:h.max),be=Ze.options._parseFont(k);E.save(),E.font=be.string,E.textBaseline="middle";for(var Ue=h.chart.data.labels.length-1;Ue>=0;Ue--){var Xe=h.getPointPosition(Ue,de+(0===Ue?K/2:0)+5),gt=fc(k.fontColor,Ue,Tr.global.defaultFontColor);E.fillStyle=gt;var vt=h.getIndexAngle(Ue),Jt=Ze.toDegrees(vt);E.textAlign=Of(Jt),Jd(Jt,h._pointLabelSizes[Ue],Xe),Dd(E,h.pointLabels[Ue],Xe,be.lineHeight)}E.restore()}(h),k.display&&Ze.each(h.ticks,function(gt,vt){0!==vt&&(we=h.getDistanceFromCenterForValue(h.ticksAsNumbers[vt]),function(h,E,N,k){var Xe,K=h.ctx,de=E.circular,be=h.chart.data.labels.length,Ue=fc(E.color,k-1),we=fc(E.lineWidth,k-1);if((de||be)&&Ue&&we){if(K.save(),K.strokeStyle=Ue,K.lineWidth=we,K.setLineDash&&(K.setLineDash(E.borderDash||[]),K.lineDashOffset=E.borderDashOffset||0),K.beginPath(),de)K.arc(h.xCenter,h.yCenter,N,0,2*Math.PI);else{Xe=h.getPointPosition(0,N),K.moveTo(Xe.x,Xe.y);for(var gt=1;gt<be;gt++)Xe=h.getPointPosition(gt,N),K.lineTo(Xe.x,Xe.y)}K.closePath(),K.stroke(),K.restore()}}(h,k,we,vt))}),K.display&&de&&be){for(E.save(),E.lineWidth=de,E.strokeStyle=be,E.setLineDash&&(E.setLineDash(va([K.borderDash,k.borderDash,[]])),E.lineDashOffset=va([K.borderDashOffset,k.borderDashOffset,0])),Ue=h.chart.data.labels.length-1;Ue>=0;Ue--)we=h.getDistanceFromCenterForValue(N.ticks.reverse?h.min:h.max),Xe=h.getPointPosition(Ue,we),E.beginPath(),E.moveTo(h.xCenter,h.yCenter),E.lineTo(Xe.x,Xe.y),E.stroke();E.restore()}},_drawLabels:function(){var h=this,E=h.ctx,k=h.options.ticks;if(k.display){var Ue,we,K=h.getIndexAngle(0),de=Ze.options._parseFont(k),be=Us(k.fontColor,Tr.global.defaultFontColor);E.save(),E.font=de.string,E.translate(h.xCenter,h.yCenter),E.rotate(K),E.textAlign="center",E.textBaseline="middle",Ze.each(h.ticks,function(Xe,gt){0===gt&&!k.reverse||(Ue=h.getDistanceFromCenterForValue(h.ticksAsNumbers[gt]),k.showLabelBackdrop&&(we=E.measureText(Xe).width,E.fillStyle=k.backdropColor,E.fillRect(-we/2-k.backdropPaddingX,-Ue-de.size/2-k.backdropPaddingY,we+2*k.backdropPaddingX,de.size+2*k.backdropPaddingY)),E.fillStyle=be,E.fillText(Xe,0,-Ue))}),E.restore()}},_drawTitle:Ze.noop});Qd._defaults=wl;var Ff=Ze._deprecated,zu=Ze.options.resolve,Tl=Ze.valueOrDefault,xl=Number.MIN_SAFE_INTEGER||-9007199254740991,kl=Number.MAX_SAFE_INTEGER||9007199254740991,Nu={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Qa=Object.keys(Nu);function Wu(h,E){return h-E}function Mc(h){return Ze.valueOrDefault(h.time.min,h.ticks.min)}function Ou(h){return Ze.valueOrDefault(h.time.max,h.ticks.max)}function ff(h,E,N,k){var K=function(h,E,N){for(var de,be,Ue,k=0,K=h.length-1;k>=0&&k<=K;){if(Ue=h[de=k+K>>1],!(be=h[de-1]||null))return{lo:null,hi:Ue};if(Ue[E]<N)k=de+1;else{if(!(be[E]>N))return{lo:be,hi:Ue};K=de-1}}return{lo:Ue,hi:null}}(h,E,N),de=K.lo?K.hi?K.lo:h[h.length-2]:h[0],be=K.lo?K.hi?K.hi:h[h.length-1]:h[1],Ue=be[E]-de[E];return de[k]+(be[k]-de[k])*(Ue?(N-de[E])/Ue:0)}function Xl(h,E){var N=h._adapter,k=h.options.time,K=k.parser,de=K||k.format,be=E;return"function"==typeof K&&(be=K(be)),Ze.isFinite(be)||(be="string"==typeof de?N.parse(be,de):N.parse(be)),null!==be?+be:(!K&&"function"==typeof de&&(be=de(E),Ze.isFinite(be)||(be=N.parse(be))),be)}function yd(h,E){if(Ze.isNullOrUndef(E))return null;var N=h.options.time,k=Xl(h,h.getRightValue(E));return null===k||N.round&&(k=+h._adapter.startOf(k,N.round)),k}function Ac(h,E,N,k){var de,be,K=Qa.length;for(de=Qa.indexOf(h);de<K-1;++de)if((be=Nu[Qa[de]]).common&&Math.ceil((N-E)/((be.steps?be.steps:kl)*be.size))<=k)return Qa[de];return Qa[K-1]}function su(h,E,N){var be,Ue,k=[],K={},de=E.length;for(be=0;be<de;++be)K[Ue=E[be]]=be,k.push({value:Ue,major:!1});return 0!==de&&N?function(h,E,N,k){var Ue,we,K=h._adapter,de=+K.startOf(E[0].value,k),be=E[E.length-1].value;for(Ue=de;Ue<=be;Ue=+K.add(Ue,1,k))(we=N[Ue])>=0&&(E[we].major=!0);return E}(h,k,K,N):k}var kp=Il.extend({initialize:function(){this.mergeTicksOptions(),Il.prototype.initialize.call(this)},update:function(){var h=this,E=h.options,N=E.time||(E.time={}),k=h._adapter=new ko._date(E.adapters.date);return Ff("time scale",N.format,"time.format","time.parser"),Ff("time scale",N.min,"time.min","ticks.min"),Ff("time scale",N.max,"time.max","ticks.max"),Ze.mergeIf(N.displayFormats,k.formats()),Il.prototype.update.apply(h,arguments)},getRightValue:function(h){return h&&void 0!==h.t&&(h=h.t),Il.prototype.getRightValue.call(this,h)},determineDataLimits:function(){var gt,vt,Jt,Pn,Rn,sr,jr,h=this,E=h.chart,N=h._adapter,k=h.options,K=k.time.unit||"day",de=kl,be=xl,Ue=[],we=[],Xe=[],Ni=h._getLabels();for(gt=0,Jt=Ni.length;gt<Jt;++gt)Xe.push(yd(h,Ni[gt]));for(gt=0,Jt=(E.data.datasets||[]).length;gt<Jt;++gt)if(E.isDatasetVisible(gt))if(Ze.isObject((Rn=E.data.datasets[gt].data)[0]))for(we[gt]=[],vt=0,Pn=Rn.length;vt<Pn;++vt)sr=yd(h,Rn[vt]),Ue.push(sr),we[gt][vt]=sr;else we[gt]=Xe.slice(0),jr||(Ue=Ue.concat(Xe),jr=!0);else we[gt]=[];Xe.length&&(de=Math.min(de,Xe[0]),be=Math.max(be,Xe[Xe.length-1])),Ue.length&&(Ue=Jt>1?function(h){var k,K,de,E={},N=[];for(k=0,K=h.length;k<K;++k)E[de=h[k]]||(E[de]=!0,N.push(de));return N}(Ue).sort(Wu):Ue.sort(Wu),de=Math.min(de,Ue[0]),be=Math.max(be,Ue[Ue.length-1])),de=yd(h,Mc(k))||de,be=yd(h,Ou(k))||be,de=de===kl?+N.startOf(Date.now(),K):de,be=be===xl?+N.endOf(Date.now(),K)+1:be,h.min=Math.min(de,be),h.max=Math.max(de+1,be),h._table=[],h._timestamps={data:Ue,datasets:we,labels:Xe}},buildTicks:function(){var vt,Jt,Pn,h=this,E=h.min,N=h.max,k=h.options,K=k.ticks,de=k.time,be=h._timestamps,Ue=[],we=h.getLabelCapacity(E),Xe=K.source,gt=k.distribution;for(be="data"===Xe||"auto"===Xe&&"series"===gt?be.data:"labels"===Xe?be.labels:function(h,E,N,k){var Jt,K=h._adapter,de=h.options,be=de.time,Ue=be.unit||Ac(be.minUnit,E,N,k),we=zu([be.stepSize,be.unitStepSize,1]),Xe="week"===Ue&&be.isoWeekday,gt=E,vt=[];if(Xe&&(gt=+K.startOf(gt,"isoWeek",Xe)),gt=+K.startOf(gt,Xe?"day":Ue),K.diff(N,E,Ue)>1e5*we)throw E+" and "+N+" are too far apart with stepSize of "+we+" "+Ue;for(Jt=gt;Jt<N;Jt=+K.add(Jt,we,Ue))vt.push(Jt);return(Jt===N||"ticks"===de.bounds)&&vt.push(Jt),vt}(h,E,N,we),"ticks"===k.bounds&&be.length&&(E=be[0],N=be[be.length-1]),E=yd(h,Mc(k))||E,N=yd(h,Ou(k))||N,vt=0,Jt=be.length;vt<Jt;++vt)(Pn=be[vt])>=E&&Pn<=N&&Ue.push(Pn);return h.min=E,h.max=N,h._unit=de.unit||(K.autoSkip?Ac(de.minUnit,h.min,h.max,we):function(h,E,N,k,K){var de,be;for(de=Qa.length-1;de>=Qa.indexOf(N);de--)if(Nu[be=Qa[de]].common&&h._adapter.diff(K,k,be)>=E-1)return be;return Qa[N?Qa.indexOf(N):0]}(h,Ue.length,de.minUnit,h.min,h.max)),h._majorUnit=K.major.enabled&&"year"!==h._unit?function(h){for(var E=Qa.indexOf(h)+1,N=Qa.length;E<N;++E)if(Nu[Qa[E]].common)return Qa[E]}(h._unit):void 0,h._table=function(h,E,N,k){if("linear"===k||!h.length)return[{time:E,pos:0},{time:N,pos:1}];var be,Ue,we,Xe,gt,K=[],de=[E];for(be=0,Ue=h.length;be<Ue;++be)(Xe=h[be])>E&&Xe<N&&de.push(Xe);for(de.push(N),be=0,Ue=de.length;be<Ue;++be)gt=de[be+1],Xe=de[be],(void 0===(we=de[be-1])||void 0===gt||Math.round((gt+we)/2)!==Xe)&&K.push({time:Xe,pos:be/(Ue-1)});return K}(h._timestamps.data,E,N,gt),h._offsets=function(h,E,N,k,K){var Ue,we,de=0,be=0;return K.offset&&E.length&&(Ue=ff(h,"time",E[0],"pos"),de=1===E.length?1-Ue:(ff(h,"time",E[1],"pos")-Ue)/2,we=ff(h,"time",E[E.length-1],"pos"),be=1===E.length?we:(we-ff(h,"time",E[E.length-2],"pos"))/2),{start:de,end:be,factor:1/(de+1+be)}}(h._table,Ue,0,0,k),K.reverse&&Ue.reverse(),su(h,Ue,h._majorUnit)},getLabelForIndex:function(h,E){var N=this,k=N._adapter,K=N.chart.data,de=N.options.time,be=K.labels&&h<K.labels.length?K.labels[h]:"",Ue=K.datasets[E].data[h];return Ze.isObject(Ue)&&(be=N.getRightValue(Ue)),de.tooltipFormat?k.format(Xl(N,be),de.tooltipFormat):"string"==typeof be?be:k.format(Xl(N,be),de.displayFormats.datetime)},tickFormatFunction:function(h,E,N,k){var K=this,be=K.options,Ue=be.time.displayFormats,Xe=K._majorUnit,gt=Ue[Xe],vt=N[E],Jt=be.ticks,Pn=Xe&&gt&&vt&&vt.major,Rn=K._adapter.format(h,k||(Pn?gt:Ue[K._unit])),sr=Pn?Jt.major:Jt.minor,jr=zu([sr.callback,sr.userCallback,Jt.callback,Jt.userCallback]);return jr?jr(Rn,E,N):Rn},convertTicksToLabels:function(h){var N,k,E=[];for(N=0,k=h.length;N<k;++N)E.push(this.tickFormatFunction(h[N].value,N,h));return E},getPixelForOffset:function(h){var E=this,N=E._offsets,k=ff(E._table,"time",h,"pos");return E.getPixelForDecimal((N.start+k)*N.factor)},getPixelForValue:function(h,E,N){var k=this,K=null;if(void 0!==E&&void 0!==N&&(K=k._timestamps.datasets[N][E]),null===K&&(K=yd(k,h)),null!==K)return k.getPixelForOffset(K)},getPixelForTick:function(h){var E=this.getTicks();return h>=0&&h<E.length?this.getPixelForOffset(E[h].value):null},getValueForPixel:function(h){var E=this,N=E._offsets,k=E.getDecimalForPixel(h)/N.factor-N.end,K=ff(E._table,"pos",k,"time");return E._adapter._create(K)},_getLabelSize:function(h){var E=this,N=E.options.ticks,k=E.ctx.measureText(h).width,K=Ze.toRadians(E.isHorizontal()?N.maxRotation:N.minRotation),de=Math.cos(K),be=Math.sin(K),Ue=Tl(N.fontSize,Tr.global.defaultFontSize);return{w:k*de+Ue*be,h:k*be+Ue*de}},getLabelWidth:function(h){return this._getLabelSize(h).w},getLabelCapacity:function(h){var E=this,N=E.options.time,k=N.displayFormats,K=k[N.unit]||k.millisecond,de=E.tickFormatFunction(h,0,su(E,[h],E._majorUnit),K),be=E._getLabelSize(de),Ue=Math.floor(E.isHorizontal()?E.width/be.w:E.height/be.h);return E.options.offset&&Ue--,Ue>0?Ue:1}});kp._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var _f={category:ds,linear:yt,logarithmic:ss,radialLinear:Qd,time:kp},Mh={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};ko._date.override("function"==typeof r?{_id:"moment",formats:function(){return Mh},parse:function(h,E){return"string"==typeof h&&"string"==typeof E?h=r(h,E):h instanceof r||(h=r(h)),h.isValid()?h.valueOf():null},format:function(h,E){return r(h).format(E)},add:function(h,E,N){return r(h).add(E,N).valueOf()},diff:function(h,E,N){return r(h).diff(r(E),N)},startOf:function(h,E,N){return h=r(h),"isoWeek"===E?h.isoWeekday(N).valueOf():h.startOf(E).valueOf()},endOf:function(h,E){return r(h).endOf(E).valueOf()},_create:function(h){return r(h)}}:{}),Tr._set("global",{plugins:{filler:{propagate:!0}}});var Kl={dataset:function(h){var E=h.fill,N=h.chart,k=N.getDatasetMeta(E),de=k&&N.isDatasetVisible(E)&&k.dataset._children||[],be=de.length||0;return be?function(Ue,we){return we<be&&de[we]._view||null}:null},boundary:function(h){var E=h.boundary,N=E?E.x:null,k=E?E.y:null;return Ze.isArray(E)?function(K,de){return E[de]}:function(K){return{x:null===N?K.x:N,y:null===k?K.y:k}}}};function kf(h,E,N){var de,k=h._model||{},K=k.fill;if(void 0===K&&(K=!!k.backgroundColor),!1===K||null===K)return!1;if(!0===K)return"origin";if(de=parseFloat(K,10),isFinite(de)&&Math.floor(de)===de)return("-"===K[0]||"+"===K[0])&&(de=E+de),!(de===E||de<0||de>=N)&&de;switch(K){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return K;default:return!1}}function Rd(h){return(h.el._scale||{}).getPointPositionForValue?function(h){var be,Ue,we,Xe,gt,E=h.el._scale,N=E.options,k=E.chart.data.labels.length,K=h.fill,de=[];if(!k)return null;for(Ue=N.ticks.reverse?E.min:E.max,we=E.getPointPositionForValue(0,be=N.ticks.reverse?E.max:E.min),Xe=0;Xe<k;++Xe)gt="start"===K||"end"===K?E.getPointPositionForValue(Xe,"start"===K?be:Ue):E.getBasePosition(Xe),N.gridLines.circular&&(gt.cx=we.x,gt.cy=we.y,gt.angle=E.getIndexAngle(Xe)-Math.PI/2),de.push(gt);return de}(h):function(h){var de,E=h.el._model||{},N=h.el._scale||{},k=h.fill,K=null;if(isFinite(k))return null;if("start"===k?K=void 0===E.scaleBottom?N.bottom:E.scaleBottom:"end"===k?K=void 0===E.scaleTop?N.top:E.scaleTop:void 0!==E.scaleZero?K=E.scaleZero:N.getBasePixel&&(K=N.getBasePixel()),null!=K){if(void 0!==K.x&&void 0!==K.y)return K;if(Ze.isFinite(K))return{x:(de=N.isHorizontal())?K:null,y:de?null:K}}return null}(h)}function wc(h,E,N){var be,K=h[E].fill,de=[E];if(!N)return K;for(;!1!==K&&-1===de.indexOf(K);){if(!isFinite(K))return K;if(!(be=h[K]))return!1;if(be.visible)return K;de.push(K),K=be.fill}return!1}function ql(h){var E=h.fill,N="dataset";return!1===E?null:(isFinite(E)||(N="boundary"),Kl[N](h))}function Ji(h){return h&&!h.skip}function cl(h,E,N,k,K){var de,be,Ue,we;if(k&&K){for(h.moveTo(E[0].x,E[0].y),de=1;de<k;++de)Ze.canvas.lineTo(h,E[de-1],E[de]);if(void 0!==N[0].angle){for(be=N[0].cx,Ue=N[0].cy,we=Math.sqrt(Math.pow(N[0].x-be,2)+Math.pow(N[0].y-Ue,2)),de=K-1;de>0;--de)h.arc(be,Ue,we,N[de].angle,N[de-1].angle,!0);return}for(h.lineTo(N[K-1].x,N[K-1].y),de=K-1;de>0;--de)Ze.canvas.lineTo(h,N[de],N[de-1],!0)}}function Ll(h,E,N,k,K,de){var Jt,Pn,Rn,sr,jr,Ni,Vo,$o,be=E.length,Ue=k.spanGaps,we=[],Xe=[],gt=0,vt=0;for(h.beginPath(),Jt=0,Pn=be;Jt<Pn;++Jt)jr=N(sr=E[Rn=Jt%be]._view,Rn,k),Ni=Ji(sr),Vo=Ji(jr),de&&void 0===$o&&Ni&&(Pn=be+($o=Jt+1)),Ni&&Vo?(gt=we.push(sr),vt=Xe.push(jr)):gt&&vt&&(Ue?(Ni&&we.push(sr),Vo&&Xe.push(jr)):(cl(h,we,Xe,gt,vt),gt=vt=0,we=[],Xe=[]));cl(h,we,Xe,gt,vt),h.closePath(),h.fillStyle=K,h.fill()}var Nd={id:"filler",afterDatasetsUpdate:function(h,E){var de,be,Ue,we,N=(h.data.datasets||[]).length,k=E.propagate,K=[];for(be=0;be<N;++be)we=null,(Ue=(de=h.getDatasetMeta(be)).dataset)&&Ue._model&&Ue instanceof Do.Line&&(we={visible:h.isDatasetVisible(be),fill:kf(Ue,be,N),chart:h,el:Ue}),de.$filler=we,K.push(we);for(be=0;be<N;++be)(we=K[be])&&(we.fill=wc(K,be,k),we.boundary=Rd(we),we.mapper=ql(we))},beforeDatasetsDraw:function(h){var k,K,de,be,Ue,we,Xe,E=h._getSortedVisibleDatasetMetas(),N=h.ctx;for(K=E.length-1;K>=0;--K)(k=E[K].$filler)&&k.visible&&(Ue=(de=k.el)._children||[],Xe=(be=de._view).backgroundColor||Tr.global.defaultColor,(we=k.mapper)&&Xe&&Ue.length&&(Ze.canvas.clipArea(N,h.chartArea),Ll(N,Ue,we,be,Xe,de._loop),Ze.canvas.unclipArea(N)))}},il=Ze.rtl.getRtlAdapter,Bu=Ze.noop,pc=Ze.valueOrDefault;function Xd(h,E){return h.usePointStyle&&h.boxWidth>E?E:h.boxWidth}Tr._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(h,E){var N=E.datasetIndex,k=this.chart,K=k.getDatasetMeta(N);K.hidden=null===K.hidden?!k.data.datasets[N].hidden:null,k.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(h){var E=h.data.datasets,N=h.options.legend||{},k=N.labels&&N.labels.usePointStyle;return h._getSortedDatasetMetas().map(function(K){var de=K.controller.getStyle(k?0:void 0);return{text:E[K.index].label,fillStyle:de.backgroundColor,hidden:!h.isDatasetVisible(K.index),lineCap:de.borderCapStyle,lineDash:de.borderDash,lineDashOffset:de.borderDashOffset,lineJoin:de.borderJoinStyle,lineWidth:de.borderWidth,strokeStyle:de.borderColor,pointStyle:de.pointStyle,rotation:de.rotation,datasetIndex:K.index}},this)}}},legendCallback:function(h){var k,K,de,E=document.createElement("ul"),N=h.data.datasets;for(E.setAttribute("class",h.id+"-legend"),k=0,K=N.length;k<K;k++)(de=E.appendChild(document.createElement("li"))).appendChild(document.createElement("span")).style.backgroundColor=N[k].backgroundColor,N[k].label&&de.appendChild(document.createTextNode(N[k].label));return E.outerHTML}});var wf=nr.extend({initialize:function(h){var E=this;Ze.extend(E,h),E.legendHitBoxes=[],E._hoveredItem=null,E.doughnutMode=!1},beforeUpdate:Bu,update:function(h,E,N){var k=this;return k.beforeUpdate(),k.maxWidth=h,k.maxHeight=E,k.margins=N,k.beforeSetDimensions(),k.setDimensions(),k.afterSetDimensions(),k.beforeBuildLabels(),k.buildLabels(),k.afterBuildLabels(),k.beforeFit(),k.fit(),k.afterFit(),k.afterUpdate(),k.minSize},afterUpdate:Bu,beforeSetDimensions:Bu,setDimensions:function(){var h=this;h.isHorizontal()?(h.width=h.maxWidth,h.left=0,h.right=h.width):(h.height=h.maxHeight,h.top=0,h.bottom=h.height),h.paddingLeft=0,h.paddingTop=0,h.paddingRight=0,h.paddingBottom=0,h.minSize={width:0,height:0}},afterSetDimensions:Bu,beforeBuildLabels:Bu,buildLabels:function(){var h=this,E=h.options.labels||{},N=Ze.callback(E.generateLabels,[h.chart],h)||[];E.filter&&(N=N.filter(function(k){return E.filter(k,h.chart.data)})),h.options.reverse&&N.reverse(),h.legendItems=N},afterBuildLabels:Bu,beforeFit:Bu,fit:function(){var h=this,E=h.options,N=E.labels,k=E.display,K=h.ctx,de=Ze.options._parseFont(N),be=de.size,Ue=h.legendHitBoxes=[],we=h.minSize,Xe=h.isHorizontal();if(Xe?(we.width=h.maxWidth,we.height=k?10:0):(we.width=k?10:0,we.height=h.maxHeight),k){if(K.font=de.string,Xe){var gt=h.lineWidths=[0],vt=0;K.textAlign="left",K.textBaseline="middle",Ze.each(h.legendItems,function(Vo,$o){var qs=Xd(N,be)+be/2+K.measureText(Vo.text).width;(0===$o||gt[gt.length-1]+qs+2*N.padding>we.width)&&(vt+=be+N.padding,gt[gt.length-($o>0?0:1)]=0),Ue[$o]={left:0,top:0,width:qs,height:be},gt[gt.length-1]+=qs+N.padding}),we.height+=vt}else{var Jt=N.padding,Pn=h.columnWidths=[],Rn=h.columnHeights=[],sr=N.padding,jr=0,Ni=0;Ze.each(h.legendItems,function(Vo,$o){var qs=Xd(N,be)+be/2+K.measureText(Vo.text).width;$o>0&&Ni+be+2*Jt>we.height&&(sr+=jr+N.padding,Pn.push(jr),Rn.push(Ni),jr=0,Ni=0),jr=Math.max(jr,qs),Ni+=be+Jt,Ue[$o]={left:0,top:0,width:qs,height:be}}),sr+=jr,Pn.push(jr),Rn.push(Ni),we.width+=sr}h.width=we.width,h.height=we.height}else h.width=we.width=h.height=we.height=0},afterFit:Bu,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var h=this,E=h.options,N=E.labels,k=Tr.global,K=k.defaultColor,de=k.elements.line,be=h.height,Ue=h.columnHeights,we=h.width,Xe=h.lineWidths;if(E.display){var sr,gt=il(E.rtl,h.left,h.minSize.width),vt=h.ctx,Jt=pc(N.fontColor,k.defaultFontColor),Pn=Ze.options._parseFont(N),Rn=Pn.size;vt.textAlign=gt.textAlign("left"),vt.textBaseline="middle",vt.lineWidth=.5,vt.strokeStyle=Jt,vt.fillStyle=Jt,vt.font=Pn.string;var jr=Xd(N,Rn),Ni=h.legendHitBoxes,Vs=function(ga,sa){switch(E.align){case"start":return N.padding;case"end":return ga-sa;default:return(ga-sa+N.padding)/2}},qs=h.isHorizontal();sr=qs?{x:h.left+Vs(we,Xe[0]),y:h.top+N.padding,line:0}:{x:h.left+N.padding,y:h.top+Vs(be,Ue[0]),line:0},Ze.rtl.overrideTextDirection(h.ctx,E.textDirection);var dl=Rn+N.padding;Ze.each(h.legendItems,function(ga,sa){var Pa=vt.measureText(ga.text).width,ol=jr+Rn/2+Pa,Eu=sr.x,wa=sr.y;gt.setWidth(h.minSize.width),qs?sa>0&&Eu+ol+N.padding>h.left+h.minSize.width&&(wa=sr.y+=dl,sr.line++,Eu=sr.x=h.left+Vs(we,Xe[sr.line])):sa>0&&wa+dl>h.top+h.minSize.height&&(Eu=sr.x=Eu+h.columnWidths[sr.line]+N.padding,sr.line++,wa=sr.y=h.top+Vs(be,Ue[sr.line]));var au=gt.x(Eu);(function(ga,sa,Pa){if(!(isNaN(jr)||jr<=0)){vt.save();var ol=pc(Pa.lineWidth,de.borderWidth);if(vt.fillStyle=pc(Pa.fillStyle,K),vt.lineCap=pc(Pa.lineCap,de.borderCapStyle),vt.lineDashOffset=pc(Pa.lineDashOffset,de.borderDashOffset),vt.lineJoin=pc(Pa.lineJoin,de.borderJoinStyle),vt.lineWidth=ol,vt.strokeStyle=pc(Pa.strokeStyle,K),vt.setLineDash&&vt.setLineDash(pc(Pa.lineDash,de.borderDash)),N&&N.usePointStyle){var Eu=jr*Math.SQRT2/2,wa=gt.xPlus(ga,jr/2);Ze.canvas.drawPoint(vt,Pa.pointStyle,Eu,wa,sa+Rn/2,Pa.rotation)}else vt.fillRect(gt.leftForLtr(ga,jr),sa,jr,Rn),0!==ol&&vt.strokeRect(gt.leftForLtr(ga,jr),sa,jr,Rn);vt.restore()}})(au,wa,ga),Ni[sa].left=gt.leftForLtr(au,Ni[sa].width),Ni[sa].top=wa,function(ga,sa,Pa,ol){var Eu=Rn/2,wa=gt.xPlus(ga,jr+Eu),au=sa+Eu;vt.fillText(Pa.text,wa,au),Pa.hidden&&(vt.beginPath(),vt.lineWidth=2,vt.moveTo(wa,au),vt.lineTo(gt.xPlus(wa,ol),au),vt.stroke())}(au,wa,ga,Pa),qs?sr.x+=ol+N.padding:sr.y+=dl}),Ze.rtl.restoreTextDirection(h.ctx,E.textDirection)}},_getLegendItemAt:function(h,E){var k,K,de,N=this;if(h>=N.left&&h<=N.right&&E>=N.top&&E<=N.bottom)for(de=N.legendHitBoxes,k=0;k<de.length;++k)if(h>=(K=de[k]).left&&h<=K.left+K.width&&E>=K.top&&E<=K.top+K.height)return N.legendItems[k];return null},handleEvent:function(h){var K,E=this,N=E.options,k="mouseup"===h.type?"click":h.type;if("mousemove"===k){if(!N.onHover&&!N.onLeave)return}else{if("click"!==k)return;if(!N.onClick)return}K=E._getLegendItemAt(h.x,h.y),"click"===k?K&&N.onClick&&N.onClick.call(E,h.native,K):(N.onLeave&&K!==E._hoveredItem&&(E._hoveredItem&&N.onLeave.call(E,h.native,E._hoveredItem),E._hoveredItem=K),N.onHover&&K&&N.onHover.call(E,h.native,K))}});function Wl(h,E){var N=new wf({ctx:h.ctx,options:E,chart:h});jl.configure(h,N,E),jl.addBox(h,N),h.legend=N}var Pd={id:"legend",_element:wf,beforeInit:function(h){var E=h.options.legend;E&&Wl(h,E)},beforeUpdate:function(h){var E=h.options.legend,N=h.legend;E?(Ze.mergeIf(E,Tr.global.legend),N?(jl.configure(h,N,E),N.options=E):Wl(h,E)):N&&(jl.removeBox(h,N),delete h.legend)},afterEvent:function(h,E){var N=h.legend;N&&N.handleEvent(E)}},rc=Ze.noop;Tr._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var hc=nr.extend({initialize:function(h){Ze.extend(this,h),this.legendHitBoxes=[]},beforeUpdate:rc,update:function(h,E,N){var k=this;return k.beforeUpdate(),k.maxWidth=h,k.maxHeight=E,k.margins=N,k.beforeSetDimensions(),k.setDimensions(),k.afterSetDimensions(),k.beforeBuildLabels(),k.buildLabels(),k.afterBuildLabels(),k.beforeFit(),k.fit(),k.afterFit(),k.afterUpdate(),k.minSize},afterUpdate:rc,beforeSetDimensions:rc,setDimensions:function(){var h=this;h.isHorizontal()?(h.width=h.maxWidth,h.left=0,h.right=h.width):(h.height=h.maxHeight,h.top=0,h.bottom=h.height),h.paddingLeft=0,h.paddingTop=0,h.paddingRight=0,h.paddingBottom=0,h.minSize={width:0,height:0}},afterSetDimensions:rc,beforeBuildLabels:rc,buildLabels:rc,afterBuildLabels:rc,beforeFit:rc,fit:function(){var de,h=this,E=h.options,N=h.minSize={},k=h.isHorizontal();E.display?(de=(Ze.isArray(E.text)?E.text.length:1)*Ze.options._parseFont(E).lineHeight+2*E.padding,h.width=N.width=k?h.maxWidth:de,h.height=N.height=k?de:h.maxHeight):h.width=N.width=h.height=N.height=0},afterFit:rc,isHorizontal:function(){var h=this.options.position;return"top"===h||"bottom"===h},draw:function(){var h=this,E=h.ctx,N=h.options;if(N.display){var vt,Jt,Pn,k=Ze.options._parseFont(N),K=k.lineHeight,de=K/2+N.padding,be=0,Ue=h.top,we=h.left,Xe=h.bottom,gt=h.right;E.fillStyle=Ze.valueOrDefault(N.fontColor,Tr.global.defaultFontColor),E.font=k.string,h.isHorizontal()?(Jt=we+(gt-we)/2,Pn=Ue+de,vt=gt-we):(Jt="left"===N.position?we+de:gt-de,Pn=Ue+(Xe-Ue)/2,vt=Xe-Ue,be=Math.PI*("left"===N.position?-.5:.5)),E.save(),E.translate(Jt,Pn),E.rotate(be),E.textAlign="center",E.textBaseline="middle";var Rn=N.text;if(Ze.isArray(Rn))for(var sr=0,jr=0;jr<Rn.length;++jr)E.fillText(Rn[jr],0,sr,vt),sr+=K;else E.fillText(Rn,0,0,vt);E.restore()}}});function gu(h,E){var N=new hc({ctx:h.ctx,options:E,chart:h});jl.configure(h,N,E),jl.addBox(h,N),h.titleBlock=N}var Fc={},fu=Nd,Id=Pd,Sl={id:"title",_element:hc,beforeInit:function(h){var E=h.options.title;E&&gu(h,E)},beforeUpdate:function(h){var E=h.options.title,N=h.titleBlock;E?(Ze.mergeIf(E,Tr.global.title),N?(jl.configure(h,N,E),N.options=E):gu(h,E)):N&&(jl.removeBox(h,N),delete h.titleBlock)}};for(var kc in Fc.filler=fu,Fc.legend=Id,Fc.title=Sl,yn.helpers=Ze,function(){function h(k,K,de){var be;return"string"==typeof k?(be=parseInt(k,10),-1!==k.indexOf("%")&&(be=be/100*K.parentNode[de])):be=k,be}function E(k){return null!=k&&"none"!==k}function N(k,K,de){var be=document.defaultView,Ue=Ze._getParentNode(k),we=be.getComputedStyle(k)[K],Xe=be.getComputedStyle(Ue)[K],gt=E(we),vt=E(Xe),Jt=Number.POSITIVE_INFINITY;return gt||vt?Math.min(gt?h(we,k,de):Jt,vt?h(Xe,Ue,de):Jt):"none"}Ze.where=function(k,K){if(Ze.isArray(k)&&Array.prototype.filter)return k.filter(K);var de=[];return Ze.each(k,function(be){K(be)&&de.push(be)}),de},Ze.findIndex=Array.prototype.findIndex?function(k,K,de){return k.findIndex(K,de)}:function(k,K,de){de=void 0===de?k:de;for(var be=0,Ue=k.length;be<Ue;++be)if(K.call(de,k[be],be,k))return be;return-1},Ze.findNextWhere=function(k,K,de){Ze.isNullOrUndef(de)&&(de=-1);for(var be=de+1;be<k.length;be++){var Ue=k[be];if(K(Ue))return Ue}},Ze.findPreviousWhere=function(k,K,de){Ze.isNullOrUndef(de)&&(de=k.length);for(var be=de-1;be>=0;be--){var Ue=k[be];if(K(Ue))return Ue}},Ze.isNumber=function(k){return!isNaN(parseFloat(k))&&isFinite(k)},Ze.almostEquals=function(k,K,de){return Math.abs(k-K)<de},Ze.almostWhole=function(k,K){var de=Math.round(k);return de-K<=k&&de+K>=k},Ze.max=function(k){return k.reduce(function(K,de){return isNaN(de)?K:Math.max(K,de)},Number.NEGATIVE_INFINITY)},Ze.min=function(k){return k.reduce(function(K,de){return isNaN(de)?K:Math.min(K,de)},Number.POSITIVE_INFINITY)},Ze.sign=Math.sign?function(k){return Math.sign(k)}:function(k){return 0==(k=+k)||isNaN(k)?k:k>0?1:-1},Ze.toRadians=function(k){return k*(Math.PI/180)},Ze.toDegrees=function(k){return k*(180/Math.PI)},Ze._decimalPlaces=function(k){if(Ze.isFinite(k)){for(var K=1,de=0;Math.round(k*K)/K!==k;)K*=10,de++;return de}},Ze.getAngleFromPoint=function(k,K){var de=K.x-k.x,be=K.y-k.y,Ue=Math.sqrt(de*de+be*be),we=Math.atan2(be,de);return we<-.5*Math.PI&&(we+=2*Math.PI),{angle:we,distance:Ue}},Ze.distanceBetweenPoints=function(k,K){return Math.sqrt(Math.pow(K.x-k.x,2)+Math.pow(K.y-k.y,2))},Ze.aliasPixel=function(k){return k%2==0?0:.5},Ze._alignPixel=function(k,K,de){var be=k.currentDevicePixelRatio,Ue=de/2;return Math.round((K-Ue)*be)/be+Ue},Ze.splineCurve=function(k,K,de,be){var Ue=k.skip?K:k,we=K,Xe=de.skip?K:de,gt=Math.sqrt(Math.pow(we.x-Ue.x,2)+Math.pow(we.y-Ue.y,2)),vt=Math.sqrt(Math.pow(Xe.x-we.x,2)+Math.pow(Xe.y-we.y,2)),Jt=gt/(gt+vt),Pn=vt/(gt+vt),Rn=be*(Jt=isNaN(Jt)?0:Jt),sr=be*(Pn=isNaN(Pn)?0:Pn);return{previous:{x:we.x-Rn*(Xe.x-Ue.x),y:we.y-Rn*(Xe.y-Ue.y)},next:{x:we.x+sr*(Xe.x-Ue.x),y:we.y+sr*(Xe.y-Ue.y)}}},Ze.EPSILON=Number.EPSILON||1e-14,Ze.splineCurveMonotone=function(k){var be,Ue,we,Xe,vt,Jt,Pn,Rn,sr,K=(k||[]).map(function(jr){return{model:jr._model,deltaK:0,mK:0}}),de=K.length;for(be=0;be<de;++be)if(!(we=K[be]).model.skip){if(Ue=be>0?K[be-1]:null,(Xe=be<de-1?K[be+1]:null)&&!Xe.model.skip){var gt=Xe.model.x-we.model.x;we.deltaK=0!==gt?(Xe.model.y-we.model.y)/gt:0}we.mK=!Ue||Ue.model.skip?we.deltaK:!Xe||Xe.model.skip?Ue.deltaK:this.sign(Ue.deltaK)!==this.sign(we.deltaK)?0:(Ue.deltaK+we.deltaK)/2}for(be=0;be<de-1;++be)if(Xe=K[be+1],!(we=K[be]).model.skip&&!Xe.model.skip){if(Ze.almostEquals(we.deltaK,0,this.EPSILON)){we.mK=Xe.mK=0;continue}vt=we.mK/we.deltaK,Jt=Xe.mK/we.deltaK,!((Rn=Math.pow(vt,2)+Math.pow(Jt,2))<=9)&&(Pn=3/Math.sqrt(Rn),we.mK=vt*Pn*we.deltaK,Xe.mK=Jt*Pn*we.deltaK)}for(be=0;be<de;++be)!(we=K[be]).model.skip&&(Xe=be<de-1?K[be+1]:null,(Ue=be>0?K[be-1]:null)&&!Ue.model.skip&&(we.model.controlPointPreviousX=we.model.x-(sr=(we.model.x-Ue.model.x)/3),we.model.controlPointPreviousY=we.model.y-sr*we.mK),Xe&&!Xe.model.skip&&(we.model.controlPointNextX=we.model.x+(sr=(Xe.model.x-we.model.x)/3),we.model.controlPointNextY=we.model.y+sr*we.mK))},Ze.nextItem=function(k,K,de){return de?K>=k.length-1?k[0]:k[K+1]:K>=k.length-1?k[k.length-1]:k[K+1]},Ze.previousItem=function(k,K,de){return de?K<=0?k[k.length-1]:k[K-1]:K<=0?k[0]:k[K-1]},Ze.niceNum=function(k,K){var de=Math.floor(Ze.log10(k)),be=k/Math.pow(10,de);return(K?be<1.5?1:be<3?2:be<7?5:10:be<=1?1:be<=2?2:be<=5?5:10)*Math.pow(10,de)},Ze.requestAnimFrame="undefined"==typeof window?function(k){k()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(k){return window.setTimeout(k,1e3/60)},Ze.getRelativePosition=function(k,K){var de,be,Ue=k.originalEvent||k,we=k.target||k.srcElement,Xe=we.getBoundingClientRect(),gt=Ue.touches;gt&&gt.length>0?(de=gt[0].clientX,be=gt[0].clientY):(de=Ue.clientX,be=Ue.clientY);var vt=parseFloat(Ze.getStyle(we,"padding-left")),Jt=parseFloat(Ze.getStyle(we,"padding-top")),Pn=parseFloat(Ze.getStyle(we,"padding-right")),Rn=parseFloat(Ze.getStyle(we,"padding-bottom")),jr=Xe.bottom-Xe.top-Jt-Rn;return{x:de=Math.round((de-Xe.left-vt)/(Xe.right-Xe.left-vt-Pn)*we.width/K.currentDevicePixelRatio),y:be=Math.round((be-Xe.top-Jt)/jr*we.height/K.currentDevicePixelRatio)}},Ze.getConstraintWidth=function(k){return N(k,"max-width","clientWidth")},Ze.getConstraintHeight=function(k){return N(k,"max-height","clientHeight")},Ze._calculatePadding=function(k,K,de){return(K=Ze.getStyle(k,K)).indexOf("%")>-1?de*parseInt(K,10)/100:parseInt(K,10)},Ze._getParentNode=function(k){var K=k.parentNode;return K&&"[object ShadowRoot]"===K.toString()&&(K=K.host),K},Ze.getMaximumWidth=function(k){var K=Ze._getParentNode(k);if(!K)return k.clientWidth;var de=K.clientWidth,we=de-Ze._calculatePadding(K,"padding-left",de)-Ze._calculatePadding(K,"padding-right",de),Xe=Ze.getConstraintWidth(k);return isNaN(Xe)?we:Math.min(we,Xe)},Ze.getMaximumHeight=function(k){var K=Ze._getParentNode(k);if(!K)return k.clientHeight;var de=K.clientHeight,we=de-Ze._calculatePadding(K,"padding-top",de)-Ze._calculatePadding(K,"padding-bottom",de),Xe=Ze.getConstraintHeight(k);return isNaN(Xe)?we:Math.min(we,Xe)},Ze.getStyle=function(k,K){return k.currentStyle?k.currentStyle[K]:document.defaultView.getComputedStyle(k,null).getPropertyValue(K)},Ze.retinaScale=function(k,K){var de=k.currentDevicePixelRatio=K||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==de){var be=k.canvas,Ue=k.height,we=k.width;be.height=Ue*de,be.width=we*de,k.ctx.scale(de,de),!be.style.height&&!be.style.width&&(be.style.height=Ue+"px",be.style.width=we+"px")}},Ze.fontString=function(k,K,de){return K+" "+k+"px "+de},Ze.longestText=function(k,K,de,be){var Ue=(be=be||{}).data=be.data||{},we=be.garbageCollect=be.garbageCollect||[];be.font!==K&&(Ue=be.data={},we=be.garbageCollect=[],be.font=K),k.font=K;var vt,Jt,Pn,Rn,sr,Xe=0,gt=de.length;for(vt=0;vt<gt;vt++)if(null!=(Rn=de[vt])&&!0!==Ze.isArray(Rn))Xe=Ze.measureText(k,Ue,we,Xe,Rn);else if(Ze.isArray(Rn))for(Jt=0,Pn=Rn.length;Jt<Pn;Jt++)null!=(sr=Rn[Jt])&&!Ze.isArray(sr)&&(Xe=Ze.measureText(k,Ue,we,Xe,sr));var jr=we.length/2;if(jr>de.length){for(vt=0;vt<jr;vt++)delete Ue[we[vt]];we.splice(0,jr)}return Xe},Ze.measureText=function(k,K,de,be,Ue){var we=K[Ue];return we||(we=K[Ue]=k.measureText(Ue).width,de.push(Ue)),we>be&&(be=we),be},Ze.numberOfLabelLines=function(k){var K=1;return Ze.each(k,function(de){Ze.isArray(de)&&de.length>K&&(K=de.length)}),K},Ze.color=Zr?function(k){return k instanceof CanvasGradient&&(k=Tr.global.defaultColor),Zr(k)}:function(k){return console.error("Color.js not found!"),k},Ze.getHoverColor=function(k){return k instanceof CanvasPattern||k instanceof CanvasGradient?k:Ze.color(k).saturate(.5).darken(.1).rgbString()}}(),yn._adapters=ko,yn.Animation=po,yn.animationService=yo,yn.controllers=fi,yn.DatasetController=Si,yn.defaults=Tr,yn.Element=nr,yn.elements=Do,yn.Interaction=al,yn.layouts=jl,yn.platform=Aa,yn.plugins=As,yn.Scale=Il,yn.scaleService=ku,yn.Ticks=Ho,yn.Tooltip=Ja,yn.helpers.each(_f,function(h,E){yn.scaleService.registerScaleType(E,h,h._defaults)}),Fc)Fc.hasOwnProperty(kc)&&yn.plugins.register(Fc[kc]);yn.platform.initialize();var $c=yn;return"undefined"!=typeof window&&(window.Chart=yn),yn.Chart=yn,yn.Legend=Fc.legend._element,yn.Title=Fc.title._element,yn.pluginService=yn.plugins,yn.PluginBase=yn.Element.extend({}),yn.canvasHelpers=yn.helpers.canvas,yn.layoutService=yn.layouts,yn.LinearScaleBase=ul,yn.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(h){yn[h]=function(E,N){return new yn(E,yn.helpers.merge(N||{},{type:h.charAt(0).toLowerCase()+h.slice(1)}))}}),$c}(function(){try{return i(16738)}catch(p){}}())},82885:(v,S)=>{var r;!function(){"use strict";var u={}.hasOwnProperty;function p(){for(var f=[],e=0;e<arguments.length;e++){var _=arguments[e];if(_){var y=typeof _;if("string"===y||"number"===y)f.push(_);else if(Array.isArray(_)){if(_.length){var T=p.apply(null,_);T&&f.push(T)}}else if("object"===y)if(_.toString===Object.prototype.toString)for(var M in _)u.call(_,M)&&_[M]&&f.push(M);else f.push(_.toString())}}return f.join(" ")}v.exports?(p.default=p,v.exports=p):void 0!==(r=function(){return p}.apply(S,[]))&&(v.exports=r)}()},2665:v=>{v.exports=function(i,r){for(var u=[],p=0;p<i.length;p++){var f=r(i[p],p);S(f)?u.push.apply(u,f):u.push(f)}return u};var S=Array.isArray||function(i){return"[object Array]"===Object.prototype.toString.call(i)}},7281:(v,S)=>{"use strict";S.parse=function(T,M){if("string"!=typeof T)throw new TypeError("argument str must be a string");for(var R={},Z=(M||{}).decode||f,J=0;J<T.length;){var Q=T.indexOf("=",J);if(-1===Q)break;var ee=T.indexOf(";",J);if(-1===ee)ee=T.length;else if(ee<Q){J=T.lastIndexOf(";",Q-1)+1;continue}var ue=T.slice(J,Q).trim();if(void 0===R[ue]){var ae=T.slice(Q+1,ee).trim();34===ae.charCodeAt(0)&&(ae=ae.slice(1,-1)),R[ue]=y(ae,Z)}J=ee+1}return R},S.serialize=function(T,M,R){var F=R||{},Z=F.encode||e;if("function"!=typeof Z)throw new TypeError("option encode is invalid");if(!r.test(T))throw new TypeError("argument name is invalid");var J=Z(M);if(J&&!r.test(J))throw new TypeError("argument val is invalid");var Q=T+"="+J;if(null!=F.maxAge){var ee=F.maxAge-0;if(isNaN(ee)||!isFinite(ee))throw new TypeError("option maxAge is invalid");Q+="; Max-Age="+Math.floor(ee)}if(F.domain){if(!r.test(F.domain))throw new TypeError("option domain is invalid");Q+="; Domain="+F.domain}if(F.path){if(!r.test(F.path))throw new TypeError("option path is invalid");Q+="; Path="+F.path}if(F.expires){var ue=F.expires;if(!function(T){return"[object Date]"===i.call(T)||T instanceof Date}(ue)||isNaN(ue.valueOf()))throw new TypeError("option expires is invalid");Q+="; Expires="+ue.toUTCString()}if(F.httpOnly&&(Q+="; HttpOnly"),F.secure&&(Q+="; Secure"),F.priority)switch("string"==typeof F.priority?F.priority.toLowerCase():F.priority){case"low":Q+="; Priority=Low";break;case"medium":Q+="; Priority=Medium";break;case"high":Q+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}if(F.sameSite)switch("string"==typeof F.sameSite?F.sameSite.toLowerCase():F.sameSite){case!0:Q+="; SameSite=Strict";break;case"lax":Q+="; SameSite=Lax";break;case"strict":Q+="; SameSite=Strict";break;case"none":Q+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return Q};var i=Object.prototype.toString,r=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function f(T){return-1!==T.indexOf("%")?decodeURIComponent(T):T}function e(T){return encodeURIComponent(T)}function y(T,M){try{return M(T)}catch(R){return T}}},96967:(v,S,i)=>{"use strict";var r=i(35311),u={"text/plain":"Text","text/html":"Url",default:"Text"};v.exports=function(_,y){var T,M,R,F,Z,J,Q=!1;y||(y={}),T=y.debug||!1;try{if(R=r(),F=document.createRange(),Z=document.getSelection(),(J=document.createElement("span")).textContent=_,J.ariaHidden="true",J.style.all="unset",J.style.position="fixed",J.style.top=0,J.style.clip="rect(0, 0, 0, 0)",J.style.whiteSpace="pre",J.style.webkitUserSelect="text",J.style.MozUserSelect="text",J.style.msUserSelect="text",J.style.userSelect="text",J.addEventListener("copy",function(ue){ue.stopPropagation(),y.format&&(ue.preventDefault(),void 0===ue.clipboardData?(T&&console.warn("unable to use e.clipboardData"),T&&console.warn("trying IE specific stuff"),window.clipboardData.clearData(),window.clipboardData.setData(u[y.format]||u.default,_)):(ue.clipboardData.clearData(),ue.clipboardData.setData(y.format,_))),y.onCopy&&(ue.preventDefault(),y.onCopy(ue.clipboardData))}),document.body.appendChild(J),F.selectNodeContents(J),Z.addRange(F),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");Q=!0}catch(ue){T&&console.error("unable to copy using execCommand: ",ue),T&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(y.format||"text",_),y.onCopy&&y.onCopy(window.clipboardData),Q=!0}catch(ae){T&&console.error("unable to copy using clipboardData: ",ae),T&&console.error("falling back to prompt"),M=function(_){var y=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return _.replace(/#{\s*key\s*}/g,y)}("message"in y?y.message:"Copy to clipboard: #{key}, Enter"),window.prompt(M,_)}}finally{Z&&("function"==typeof Z.removeRange?Z.removeRange(F):Z.removeAllRanges()),J&&document.body.removeChild(J),R()}return Q}},43987:(v,S,i)=>{var r=i(75242);v.exports=r},99556:(v,S,i)=>{var r=i(10323);v.exports=r},39287:(v,S,i)=>{var r=i(8748);v.exports=r},52964:(v,S,i)=>{var r=i(47506);v.exports=r},25272:(v,S,i)=>{var r=i(71873);v.exports=r},54450:(v,S,i)=>{var r=i(19095);v.exports=r},39557:(v,S,i)=>{var r=i(52049);v.exports=r},61611:(v,S,i)=>{var r=i(87054);v.exports=r},22549:(v,S,i)=>{var r=i(45284);v.exports=r},47646:(v,S,i)=>{var r=i(70157);v.exports=r},78663:(v,S,i)=>{var r=i(640);v.exports=r},48498:(v,S,i)=>{var r=i(50320);v.exports=r},4922:(v,S,i)=>{var r=i(93006);v.exports=r},95190:(v,S,i)=>{var r=i(36226);v.exports=r},78525:(v,S,i)=>{var r=i(21968);v.exports=r},21064:(v,S,i)=>{var r=i(87259);v.exports=r},65641:(v,S,i)=>{var r=i(62021);v.exports=r},21693:(v,S,i)=>{var r=i(57682);v.exports=r},88907:(v,S,i)=>{var r=i(94222);v.exports=r},41432:(v,S,i)=>{var r=i(1162);v.exports=r},7398:(v,S,i)=>{var r=i(82805);v.exports=r},67221:(v,S,i)=>{var r=i(26498);v.exports=r},67447:(v,S,i)=>{var r=i(44850);v.exports=r},58811:(v,S,i)=>{var r=i(9634);v.exports=r},19573:(v,S,i)=>{var r=i(96551);v.exports=r},10226:(v,S,i)=>{var r=i(98908);v.exports=r},74771:(v,S,i)=>{i(3934),i(261);var r=i(13544);v.exports=r.Array.from},8412:(v,S,i)=>{i(2862);var r=i(13544);v.exports=r.Array.isArray},77377:(v,S,i)=>{i(1625);var r=i(97911);v.exports=r("Array").concat},399:(v,S,i)=>{i(1285),i(17221);var r=i(97911);v.exports=r("Array").entries},66933:(v,S,i)=>{i(70466);var r=i(97911);v.exports=r("Array").every},9504:(v,S,i)=>{i(24990);var r=i(97911);v.exports=r("Array").fill},82168:(v,S,i)=>{i(56534);var r=i(97911);v.exports=r("Array").filter},65618:(v,S,i)=>{i(12773);var r=i(97911);v.exports=r("Array").findIndex},9186:(v,S,i)=>{i(60326);var r=i(97911);v.exports=r("Array").find},98812:(v,S,i)=>{i(98792);var r=i(97911);v.exports=r("Array").forEach},58479:(v,S,i)=>{i(77059);var r=i(97911);v.exports=r("Array").includes},43207:(v,S,i)=>{i(2795);var r=i(97911);v.exports=r("Array").indexOf},33195:(v,S,i)=>{i(1285),i(17221);var r=i(97911);v.exports=r("Array").keys},63033:(v,S,i)=>{i(74926);var r=i(97911);v.exports=r("Array").lastIndexOf},5736:(v,S,i)=>{i(88119);var r=i(97911);v.exports=r("Array").map},7198:(v,S,i)=>{i(46250);var r=i(97911);v.exports=r("Array").reduce},84302:(v,S,i)=>{i(32836);var r=i(97911);v.exports=r("Array").reverse},86693:(v,S,i)=>{i(72999);var r=i(97911);v.exports=r("Array").slice},24273:(v,S,i)=>{i(50733);var r=i(97911);v.exports=r("Array").some},45974:(v,S,i)=>{i(93639);var r=i(97911);v.exports=r("Array").sort},68012:(v,S,i)=>{i(63117);var r=i(97911);v.exports=r("Array").splice},46332:(v,S,i)=>{i(1285),i(17221);var r=i(97911);v.exports=r("Array").values},42618:(v,S,i)=>{i(34699);var r=i(13544);v.exports=r.Date.now},97724:(v,S,i)=>{i(33379);var r=i(97911);v.exports=r("Function").bind},63791:(v,S,i)=>{i(1285),i(3934);var r=i(34014);v.exports=r},27959:(v,S,i)=>{i(87404),v.exports=i(70009)},69029:(v,S,i)=>{var r=i(23336),u=i(97724),p=Function.prototype;v.exports=function(f){var e=f.bind;return f===p||r(p,f)&&e===p.bind?u:e}},28924:(v,S,i)=>{var r=i(23336),u=i(77377),p=Array.prototype;v.exports=function(f){var e=f.concat;return f===p||r(p,f)&&e===p.concat?u:e}},98709:(v,S,i)=>{var r=i(23336),u=i(66933),p=Array.prototype;v.exports=function(f){var e=f.every;return f===p||r(p,f)&&e===p.every?u:e}},65991:(v,S,i)=>{var r=i(23336),u=i(9504),p=Array.prototype;v.exports=function(f){var e=f.fill;return f===p||r(p,f)&&e===p.fill?u:e}},64158:(v,S,i)=>{var r=i(23336),u=i(82168),p=Array.prototype;v.exports=function(f){var e=f.filter;return f===p||r(p,f)&&e===p.filter?u:e}},91799:(v,S,i)=>{var r=i(23336),u=i(65618),p=Array.prototype;v.exports=function(f){var e=f.findIndex;return f===p||r(p,f)&&e===p.findIndex?u:e}},26155:(v,S,i)=>{var r=i(23336),u=i(9186),p=Array.prototype;v.exports=function(f){var e=f.find;return f===p||r(p,f)&&e===p.find?u:e}},33758:(v,S,i)=>{var r=i(23336),u=i(58479),p=i(85136),f=Array.prototype,e=String.prototype;v.exports=function(_){var y=_.includes;return _===f||r(f,_)&&y===f.includes?u:"string"==typeof _||_===e||r(e,_)&&y===e.includes?p:y}},7592:(v,S,i)=>{var r=i(23336),u=i(43207),p=Array.prototype;v.exports=function(f){var e=f.indexOf;return f===p||r(p,f)&&e===p.indexOf?u:e}},17480:(v,S,i)=>{var r=i(23336),u=i(63033),p=Array.prototype;v.exports=function(f){var e=f.lastIndexOf;return f===p||r(p,f)&&e===p.lastIndexOf?u:e}},20681:(v,S,i)=>{var r=i(23336),u=i(5736),p=Array.prototype;v.exports=function(f){var e=f.map;return f===p||r(p,f)&&e===p.map?u:e}},90949:(v,S,i)=>{var r=i(23336),u=i(7198),p=Array.prototype;v.exports=function(f){var e=f.reduce;return f===p||r(p,f)&&e===p.reduce?u:e}},99316:(v,S,i)=>{var r=i(23336),u=i(96302),p=String.prototype;v.exports=function(f){var e=f.repeat;return"string"==typeof f||f===p||r(p,f)&&e===p.repeat?u:e}},62212:(v,S,i)=>{var r=i(23336),u=i(84302),p=Array.prototype;v.exports=function(f){var e=f.reverse;return f===p||r(p,f)&&e===p.reverse?u:e}},49073:(v,S,i)=>{var r=i(23336),u=i(86693),p=Array.prototype;v.exports=function(f){var e=f.slice;return f===p||r(p,f)&&e===p.slice?u:e}},24146:(v,S,i)=>{var r=i(23336),u=i(24273),p=Array.prototype;v.exports=function(f){var e=f.some;return f===p||r(p,f)&&e===p.some?u:e}},40104:(v,S,i)=>{var r=i(23336),u=i(45974),p=Array.prototype;v.exports=function(f){var e=f.sort;return f===p||r(p,f)&&e===p.sort?u:e}},3555:(v,S,i)=>{var r=i(23336),u=i(68012),p=Array.prototype;v.exports=function(f){var e=f.splice;return f===p||r(p,f)&&e===p.splice?u:e}},68333:(v,S,i)=>{var r=i(23336),u=i(98720),p=String.prototype;v.exports=function(f){var e=f.startsWith;return"string"==typeof f||f===p||r(p,f)&&e===p.startsWith?u:e}},65786:(v,S,i)=>{var r=i(23336),u=i(75998),p=String.prototype;v.exports=function(f){var e=f.trim;return"string"==typeof f||f===p||r(p,f)&&e===p.trim?u:e}},66306:(v,S,i)=>{i(75071);var r=i(13544),u=i(2543);r.JSON||(r.JSON={stringify:JSON.stringify}),v.exports=function(f,e,_){return u(r.JSON.stringify,null,arguments)}},31845:(v,S,i)=>{i(1285),i(85140),i(17221),i(3934);var r=i(13544);v.exports=r.Map},44168:(v,S,i)=>{i(67234);var r=i(13544);v.exports=r.Object.assign},25852:(v,S,i)=>{i(86516);var u=i(13544).Object;v.exports=function(f,e){return u.create(f,e)}},24457:(v,S,i)=>{i(36255);var u=i(13544).Object,p=v.exports=function(e,_){return u.defineProperties(e,_)};u.defineProperties.sham&&(p.sham=!0)},99671:(v,S,i)=>{i(84468);var u=i(13544).Object,p=v.exports=function(e,_,y){return u.defineProperty(e,_,y)};u.defineProperty.sham&&(p.sham=!0)},35161:(v,S,i)=>{i(54989);var r=i(13544);v.exports=r.Object.entries},38007:(v,S,i)=>{i(86627);var u=i(13544).Object,p=v.exports=function(e,_){return u.getOwnPropertyDescriptor(e,_)};u.getOwnPropertyDescriptor.sham&&(p.sham=!0)},57432:(v,S,i)=>{i(78275);var r=i(13544);v.exports=r.Object.getOwnPropertyDescriptors},36541:(v,S,i)=>{i(56728);var r=i(13544);v.exports=r.Object.getOwnPropertySymbols},17303:(v,S,i)=>{i(31193);var r=i(13544);v.exports=r.Object.getPrototypeOf},62149:(v,S,i)=>{i(56557);var r=i(13544);v.exports=r.Object.keys},86537:(v,S,i)=>{i(17971);var r=i(13544);v.exports=r.Object.setPrototypeOf},79553:(v,S,i)=>{i(88923);var r=i(13544);v.exports=r.Object.values},80092:(v,S,i)=>{i(10901),i(1285),i(17221),i(66793),i(84798),i(98857),i(30185),i(3934);var r=i(13544);v.exports=r.Promise},472:(v,S,i)=>{i(19539);var r=i(13544);v.exports=r.Reflect.construct},4678:(v,S,i)=>{i(60851);var r=i(13544);v.exports=r.Reflect.get},85136:(v,S,i)=>{i(97764);var r=i(97911);v.exports=r("String").includes},96302:(v,S,i)=>{i(3588);var r=i(97911);v.exports=r("String").repeat},98720:(v,S,i)=>{i(24655);var r=i(97911);v.exports=r("String").startsWith},75998:(v,S,i)=>{i(90451);var r=i(97911);v.exports=r("String").trim},61697:(v,S,i)=>{i(1625),i(17221),i(56728),i(16426),i(1172),i(99579),i(41258),i(2383),i(44339),i(64776),i(88215),i(65389),i(12733),i(97977),i(59792),i(60242),i(26291),i(32300),i(63603),i(44864);var r=i(13544);v.exports=r.Symbol},42497:(v,S,i)=>{i(1285),i(17221),i(3934),i(2383);var r=i(89734);v.exports=r.f("iterator")},58255:(v,S,i)=>{i(1285),i(17221),i(90770);var r=i(13544);v.exports=r.WeakMap},56286:(v,S,i)=>{v.exports=i(73875)},54153:(v,S,i)=>{v.exports=i(91700)},90755:(v,S,i)=>{v.exports=i(70589)},60833:(v,S,i)=>{v.exports=i(6324)},98235:(v,S,i)=>{v.exports=i(71432)},78096:(v,S,i)=>{v.exports=i(73712)},31236:(v,S,i)=>{v.exports=i(58044)},15819:(v,S,i)=>{v.exports=i(55451)},44948:(v,S,i)=>{v.exports=i(61483)},96471:(v,S,i)=>{v.exports=i(46815)},5228:(v,S,i)=>{v.exports=i(28296)},50182:(v,S,i)=>{v.exports=i(96973)},41171:(v,S,i)=>{v.exports=i(47194)},54585:(v,S,i)=>{v.exports=i(56805)},62005:(v,S,i)=>{v.exports=i(32944)},39964:(v,S,i)=>{v.exports=i(70729)},70326:(v,S,i)=>{v.exports=i(48299)},98162:(v,S,i)=>{v.exports=i(33969)},42346:(v,S,i)=>{v.exports=i(26421)},4204:(v,S,i)=>{v.exports=i(37785)},24329:(v,S,i)=>{v.exports=i(15123)},2793:(v,S,i)=>{v.exports=i(49745)},42700:(v,S,i)=>{v.exports=i(29044)},70269:(v,S,i)=>{v.exports=i(20611)},88819:(v,S,i)=>{v.exports=i(65861)},55912:(v,S,i)=>{v.exports=i(63816)},73875:(v,S,i)=>{var r=i(43987);v.exports=r},91700:(v,S,i)=>{var r=i(99556);v.exports=r},70589:(v,S,i)=>{var r=i(39287);v.exports=r},6324:(v,S,i)=>{i(65237);var r=i(52964);v.exports=r},71432:(v,S,i)=>{var r=i(25272);v.exports=r},73712:(v,S,i)=>{var r=i(54450);v.exports=r},58044:(v,S,i)=>{var r=i(39557);v.exports=r},55451:(v,S,i)=>{var r=i(61611);v.exports=r},61483:(v,S,i)=>{var r=i(22549);v.exports=r},46815:(v,S,i)=>{var r=i(47646);v.exports=r},28296:(v,S,i)=>{var r=i(78663);i(78271),i(60854),i(10509),i(30887),i(54547),i(68996),i(1530),i(60176),i(41554),i(41688),i(92847),i(17316),i(58786),i(35517),i(12783),i(69773),i(22337),i(40199),i(69046),i(84131),v.exports=r},96973:(v,S,i)=>{var r=i(48498);v.exports=r},47194:(v,S,i)=>{var r=i(4922);v.exports=r},56805:(v,S,i)=>{var r=i(95190);v.exports=r},32944:(v,S,i)=>{var r=i(78525);v.exports=r},70729:(v,S,i)=>{var r=i(21064);v.exports=r},48299:(v,S,i)=>{var r=i(65641);v.exports=r},33969:(v,S,i)=>{var r=i(21693);v.exports=r},26421:(v,S,i)=>{var r=i(88907);v.exports=r},37785:(v,S,i)=>{var r=i(41432);v.exports=r},15123:(v,S,i)=>{var r=i(7398);v.exports=r},49745:(v,S,i)=>{var r=i(67221);i(67670),i(61127),i(93114),i(45975),v.exports=r},29044:(v,S,i)=>{var r=i(67447);v.exports=r},20611:(v,S,i)=>{var r=i(58811);v.exports=r},65861:(v,S,i)=>{var r=i(19573);i(55461),i(5737),i(87097),i(29559),i(90212),i(71985),i(93770),i(47743),v.exports=r},63816:(v,S,i)=>{var r=i(10226);v.exports=r},61812:(v,S,i)=>{var r=i(52208),u=i(7378),p=TypeError;v.exports=function(f){if(r(f))return f;throw p(u(f)+" is not a function")}},54356:(v,S,i)=>{var r=i(81177),u=i(7378),p=TypeError;v.exports=function(f){if(r(f))return f;throw p(u(f)+" is not a constructor")}},93221:(v,S,i)=>{var r=i(52208),u=String,p=TypeError;v.exports=function(f){if("object"==typeof f||r(f))return f;throw p("Can't set "+u(f)+" as a prototype")}},82196:v=>{v.exports=function(){}},54849:(v,S,i)=>{var r=i(23336),u=TypeError;v.exports=function(p,f){if(r(f,p))return p;throw u("Incorrect invocation")}},64562:(v,S,i)=>{var r=i(77293),u=String,p=TypeError;v.exports=function(f){if(r(f))return f;throw p(u(f)+" is not an object")}},76318:(v,S,i)=>{var r=i(55756);v.exports=r(function(){if("function"==typeof ArrayBuffer){var u=new ArrayBuffer(8);Object.isExtensible(u)&&Object.defineProperty(u,"a",{value:8})}})},35277:(v,S,i)=>{"use strict";var r=i(70267),u=i(19401),p=i(6381);v.exports=function(e){for(var _=r(this),y=p(_),T=arguments.length,M=u(T>1?arguments[1]:void 0,y),R=T>2?arguments[2]:void 0,F=void 0===R?y:u(R,y);F>M;)_[M++]=e;return _}},8366:(v,S,i)=>{"use strict";var r=i(68607).forEach,p=i(33620)("forEach");v.exports=p?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},51923:(v,S,i)=>{"use strict";var r=i(76781),u=i(25401),p=i(70267),f=i(93463),e=i(39918),_=i(81177),y=i(6381),T=i(46751),M=i(88055),R=i(34014),F=Array;v.exports=function(J){var Q=p(J),ee=_(this),ue=arguments.length,ae=ue>1?arguments[1]:void 0,$=void 0!==ae;$&&(ae=r(ae,ue>2?arguments[2]:void 0));var oe,he,me,Oe,ce,dt,se=R(Q),ve=0;if(!se||this===F&&e(se))for(oe=y(Q),he=ee?new this(oe):F(oe);oe>ve;ve++)dt=$?ae(Q[ve],ve):Q[ve],T(he,ve,dt);else for(ce=(Oe=M(Q,se)).next,he=ee?new this:[];!(me=u(ce,Oe)).done;ve++)dt=$?f(Oe,ae,[me.value,ve],!0):me.value,T(he,ve,dt);return he.length=ve,he}},95171:(v,S,i)=>{var r=i(81010),u=i(19401),p=i(6381),f=function(e){return function(_,y,T){var Z,M=r(_),R=p(M),F=u(T,R);if(e&&y!=y){for(;R>F;)if((Z=M[F++])!=Z)return!0}else for(;R>F;F++)if((e||F in M)&&M[F]===y)return e||F||0;return!e&&-1}};v.exports={includes:f(!0),indexOf:f(!1)}},68607:(v,S,i)=>{var r=i(76781),u=i(23634),p=i(20973),f=i(70267),e=i(6381),_=i(2103),y=u([].push),T=function(M){var R=1==M,F=2==M,Z=3==M,J=4==M,Q=6==M,ee=7==M,ue=5==M||Q;return function(ae,$,se,ve){for(var Ye,je,oe=f(ae),he=p(oe),me=r($,se),Oe=e(he),ce=0,dt=ve||_,ze=R?dt(ae,Oe):F||ee?dt(ae,0):void 0;Oe>ce;ce++)if((ue||ce in he)&&(je=me(Ye=he[ce],ce,oe),M))if(R)ze[ce]=je;else if(je)switch(M){case 3:return!0;case 5:return Ye;case 6:return ce;case 2:y(ze,Ye)}else switch(M){case 4:return!1;case 7:y(ze,Ye)}return Q?-1:Z||J?J:ze}};v.exports={forEach:T(0),map:T(1),filter:T(2),some:T(3),every:T(4),find:T(5),findIndex:T(6),filterReject:T(7)}},78375:(v,S,i)=>{"use strict";var r=i(2543),u=i(81010),p=i(33912),f=i(6381),e=i(33620),_=Math.min,y=[].lastIndexOf,T=!!y&&1/[1].lastIndexOf(1,-0)<0,M=e("lastIndexOf");v.exports=T||!M?function(Z){if(T)return r(y,this,arguments)||0;var J=u(this),Q=f(J),ee=Q-1;for(arguments.length>1&&(ee=_(ee,p(arguments[1]))),ee<0&&(ee=Q+ee);ee>=0;ee--)if(ee in J&&J[ee]===Z)return ee||0;return-1}:y},95913:(v,S,i)=>{var r=i(55756),u=i(91840),p=i(63556),f=u("species");v.exports=function(e){return p>=51||!r(function(){var _=[];return(_.constructor={})[f]=function(){return{foo:1}},1!==_[e](Boolean).foo})}},33620:(v,S,i)=>{"use strict";var r=i(55756);v.exports=function(u,p){var f=[][u];return!!f&&r(function(){f.call(null,p||function(){return 1},1)})}},88908:(v,S,i)=>{var r=i(61812),u=i(70267),p=i(20973),f=i(6381),e=TypeError,_=function(y){return function(T,M,R,F){r(M);var Z=u(T),J=p(Z),Q=f(Z),ee=y?Q-1:0,ue=y?-1:1;if(R<2)for(;;){if(ee in J){F=J[ee],ee+=ue;break}if(ee+=ue,y?ee<0:Q<=ee)throw e("Reduce of empty array with no initial value")}for(;y?ee>=0:Q>ee;ee+=ue)ee in J&&(F=M(F,J[ee],ee,Z));return F}};v.exports={left:_(!1),right:_(!0)}},8681:(v,S,i)=>{var r=i(19401),u=i(6381),p=i(46751),f=Array,e=Math.max;v.exports=function(_,y,T){for(var M=u(_),R=r(y,M),F=r(void 0===T?M:T,M),Z=f(e(F-R,0)),J=0;R<F;R++,J++)p(Z,J,_[R]);return Z.length=J,Z}},37591:(v,S,i)=>{var r=i(23634);v.exports=r([].slice)},84865:(v,S,i)=>{var r=i(8681),u=Math.floor,p=function(_,y){var T=_.length,M=u(T/2);return T<8?f(_,y):e(_,p(r(_,0,M),y),p(r(_,M),y),y)},f=function(_,y){for(var R,F,T=_.length,M=1;M<T;){for(F=M,R=_[M];F&&y(_[F-1],R)>0;)_[F]=_[--F];F!==M++&&(_[F]=R)}return _},e=function(_,y,T,M){for(var R=y.length,F=T.length,Z=0,J=0;Z<R||J<F;)_[Z+J]=Z<R&&J<F?M(y[Z],T[J])<=0?y[Z++]:T[J++]:Z<R?y[Z++]:T[J++];return _};v.exports=p},48045:(v,S,i)=>{var r=i(89735),u=i(81177),p=i(77293),e=i(91840)("species"),_=Array;v.exports=function(y){var T;return r(y)&&(u(T=y.constructor)&&(T===_||r(T.prototype))||p(T)&&null===(T=T[e]))&&(T=void 0),void 0===T?_:T}},2103:(v,S,i)=>{var r=i(48045);v.exports=function(u,p){return new(r(u))(0===p?0:p)}},93463:(v,S,i)=>{var r=i(64562),u=i(40798);v.exports=function(p,f,e,_){try{return _?f(r(e)[0],e[1]):f(e)}catch(y){u(p,"throw",y)}}},5253:(v,S,i)=>{var u=i(91840)("iterator"),p=!1;try{var f=0,e={next:function(){return{done:!!f++}},return:function(){p=!0}};e[u]=function(){return this},Array.from(e,function(){throw 2})}catch(_){}v.exports=function(_,y){if(!y&&!p)return!1;var T=!1;try{var M={};M[u]=function(){return{next:function(){return{done:T=!0}}}},_(M)}catch(R){}return T}},49806:(v,S,i)=>{var r=i(23634),u=r({}.toString),p=r("".slice);v.exports=function(f){return p(u(f),8,-1)}},35329:(v,S,i)=>{var r=i(25014),u=i(52208),p=i(49806),e=i(91840)("toStringTag"),_=Object,y="Arguments"==p(function(){return arguments}());v.exports=r?p:function(M){var R,F,Z;return void 0===M?"Undefined":null===M?"Null":"string"==typeof(F=function(M,R){try{return M[R]}catch(F){}}(R=_(M),e))?F:y?p(R):"Object"==(Z=p(R))&&u(R.callee)?"Arguments":Z}},41995:(v,S,i)=>{var r=i(23634),u=Error,p=r("".replace),f=String(u("zxcasd").stack),e=/\n\s*at [^:]*:[^\n]*/,_=e.test(f);v.exports=function(y,T){if(_&&"string"==typeof y&&!u.prepareStackTrace)for(;T--;)y=p(y,e,"");return y}},37353:(v,S,i)=>{"use strict";var r=i(25401),u=i(61812),p=i(64562);v.exports=function(){for(var T,e=p(this),_=u(e.delete),y=!0,M=0,R=arguments.length;M<R;M++)T=r(_,e,arguments[M]),y=y&&T;return!!y}},83483:(v,S,i)=>{"use strict";var r=i(76781),u=i(25401),p=i(61812),f=i(54356),e=i(41605),_=[].push;v.exports=function(T){var F,Z,J,Q,M=arguments.length,R=M>1?arguments[1]:void 0;return f(this),(F=void 0!==R)&&p(R),null==T?new this:(Z=[],F?(J=0,Q=r(R,M>2?arguments[2]:void 0),e(T,function(ee){u(_,Z,Q(ee,J++))})):e(T,_,{that:Z}),new this(Z))}},13067:(v,S,i)=>{"use strict";var r=i(37591);v.exports=function(){return new this(r(arguments))}},26650:(v,S,i)=>{"use strict";var r=i(48011).f,u=i(83272),p=i(84604),f=i(76781),e=i(54849),_=i(41605),y=i(32837),T=i(58014),M=i(49642),R=i(57867).fastKey,F=i(91093),Z=F.set,J=F.getterFor;v.exports={getConstructor:function(Q,ee,ue,ae){var $=Q(function(me,Oe){e(me,se),Z(me,{type:ee,index:u(null),first:void 0,last:void 0,size:0}),M||(me.size=0),null!=Oe&&_(Oe,me[ae],{that:me,AS_ENTRIES:ue})}),se=$.prototype,ve=J(ee),oe=function(me,Oe,ce){var Ye,je,dt=ve(me),ze=he(me,Oe);return ze?ze.value=ce:(dt.last=ze={index:je=R(Oe,!0),key:Oe,value:ce,previous:Ye=dt.last,next:void 0,removed:!1},dt.first||(dt.first=ze),Ye&&(Ye.next=ze),M?dt.size++:me.size++,"F"!==je&&(dt.index[je]=ze)),me},he=function(me,Oe){var ze,ce=ve(me),dt=R(Oe);if("F"!==dt)return ce.index[dt];for(ze=ce.first;ze;ze=ze.next)if(ze.key==Oe)return ze};return p(se,{clear:function(){for(var ce=ve(this),dt=ce.index,ze=ce.first;ze;)ze.removed=!0,ze.previous&&(ze.previous=ze.previous.next=void 0),delete dt[ze.index],ze=ze.next;ce.first=ce.last=void 0,M?ce.size=0:this.size=0},delete:function(me){var ce=ve(this),dt=he(this,me);if(dt){var ze=dt.next,Ye=dt.previous;delete ce.index[dt.index],dt.removed=!0,Ye&&(Ye.next=ze),ze&&(ze.previous=Ye),ce.first==dt&&(ce.first=ze),ce.last==dt&&(ce.last=Ye),M?ce.size--:this.size--}return!!dt},forEach:function(Oe){for(var ze,ce=ve(this),dt=f(Oe,arguments.length>1?arguments[1]:void 0);ze=ze?ze.next:ce.first;)for(dt(ze.value,ze.key,this);ze&&ze.removed;)ze=ze.previous},has:function(Oe){return!!he(this,Oe)}}),p(se,ue?{get:function(Oe){var ce=he(this,Oe);return ce&&ce.value},set:function(Oe,ce){return oe(this,0===Oe?0:Oe,ce)}}:{add:function(Oe){return oe(this,Oe=0===Oe?0:Oe,Oe)}}),M&&r(se,"size",{get:function(){return ve(this).size}}),$},setStrong:function(Q,ee,ue){var ae=ee+" Iterator",$=J(ee),se=J(ae);y(Q,ee,function(ve,oe){Z(this,{type:ae,target:ve,state:$(ve),kind:oe,last:void 0})},function(){for(var ve=se(this),oe=ve.kind,he=ve.last;he&&he.removed;)he=he.previous;return ve.target&&(ve.last=he=he?he.next:ve.state.first)?"keys"==oe?{value:he.key,done:!1}:"values"==oe?{value:he.value,done:!1}:{value:[he.key,he.value],done:!1}:(ve.target=void 0,{value:void 0,done:!0})},ue?"entries":"values",!ue,!0),T(ee)}}},84049:(v,S,i)=>{"use strict";var r=i(23634),u=i(84604),p=i(57867).getWeakData,f=i(64562),e=i(77293),_=i(54849),y=i(41605),T=i(68607),M=i(80112),R=i(91093),F=R.set,Z=R.getterFor,J=T.find,Q=T.findIndex,ee=r([].splice),ue=0,ae=function(ve){return ve.frozen||(ve.frozen=new $)},$=function(){this.entries=[]},se=function(ve,oe){return J(ve.entries,function(he){return he[0]===oe})};$.prototype={get:function(ve){var oe=se(this,ve);if(oe)return oe[1]},has:function(ve){return!!se(this,ve)},set:function(ve,oe){var he=se(this,ve);he?he[1]=oe:this.entries.push([ve,oe])},delete:function(ve){var oe=Q(this.entries,function(he){return he[0]===ve});return~oe&&ee(this.entries,oe,1),!!~oe}},v.exports={getConstructor:function(ve,oe,he,me){var Oe=ve(function(Ye,je){_(Ye,ce),F(Ye,{type:oe,id:ue++,frozen:void 0}),null!=je&&y(je,Ye[me],{that:Ye,AS_ENTRIES:he})}),ce=Oe.prototype,dt=Z(oe),ze=function(Ye,je,Ie){var Ve=dt(Ye),He=p(f(je),!0);return!0===He?ae(Ve).set(je,Ie):He[Ve.id]=Ie,Ye};return u(ce,{delete:function(Ye){var je=dt(this);if(!e(Ye))return!1;var Ie=p(Ye);return!0===Ie?ae(je).delete(Ye):Ie&&M(Ie,je.id)&&delete Ie[je.id]},has:function(je){var Ie=dt(this);if(!e(je))return!1;var Ve=p(je);return!0===Ve?ae(Ie).has(je):Ve&&M(Ve,Ie.id)}}),u(ce,he?{get:function(je){var Ie=dt(this);if(e(je)){var Ve=p(je);return!0===Ve?ae(Ie).get(je):Ve?Ve[Ie.id]:void 0}},set:function(je,Ie){return ze(this,je,Ie)}}:{add:function(je){return ze(this,je,!0)}}),Oe}}},85116:(v,S,i)=>{"use strict";var r=i(90513),u=i(70009),p=i(57867),f=i(55756),e=i(65162),_=i(41605),y=i(54849),T=i(52208),M=i(77293),R=i(85681),F=i(48011).f,Z=i(68607).forEach,J=i(49642),Q=i(91093),ee=Q.set,ue=Q.getterFor;v.exports=function(ae,$,se){var dt,ve=-1!==ae.indexOf("Map"),oe=-1!==ae.indexOf("Weak"),he=ve?"set":"add",me=u[ae],Oe=me&&me.prototype,ce={};if(J&&T(me)&&(oe||Oe.forEach&&!f(function(){(new me).entries().next()}))){var ze=(dt=$(function(je,Ie){ee(y(je,ze),{type:ae,collection:new me}),null!=Ie&&_(Ie,je[he],{that:je,AS_ENTRIES:ve})})).prototype,Ye=ue(ae);Z(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(je){var Ie="add"==je||"set"==je;je in Oe&&(!oe||"clear"!=je)&&e(ze,je,function(Ve,He){var Zt=Ye(this).collection;if(!Ie&&oe&&!M(Ve))return"get"==je&&void 0;var st=Zt[je](0===Ve?0:Ve,He);return Ie?this:st})}),oe||F(ze,"size",{configurable:!0,get:function(){return Ye(this).collection.size}})}else dt=se.getConstructor($,ae,ve,he),p.enable();return R(dt,ae,!1,!0),ce[ae]=dt,r({global:!0,forced:!0},ce),oe||se.setStrong(dt,ae,ve),dt}},65031:(v,S,i)=>{var r=i(80112),u=i(59823),p=i(25525),f=i(48011);v.exports=function(e,_,y){for(var T=u(_),M=f.f,R=p.f,F=0;F<T.length;F++){var Z=T[F];!r(e,Z)&&(!y||!r(y,Z))&&M(e,Z,R(_,Z))}}},79668:(v,S,i)=>{var u=i(91840)("match");v.exports=function(p){var f=/./;try{"/./"[p](f)}catch(e){try{return f[u]=!1,"/./"[p](f)}catch(_){}}return!1}},37112:(v,S,i)=>{var r=i(55756);v.exports=!r(function(){function u(){}return u.prototype.constructor=null,Object.getPrototypeOf(new u)!==u.prototype})},65297:(v,S,i)=>{"use strict";var r=i(38432).IteratorPrototype,u=i(83272),p=i(51361),f=i(85681),e=i(84394),_=function(){return this};v.exports=function(y,T,M,R){var F=T+" Iterator";return y.prototype=u(r,{next:p(+!R,M)}),f(y,F,!1,!0),e[F]=_,y}},65162:(v,S,i)=>{var r=i(49642),u=i(48011),p=i(51361);v.exports=r?function(f,e,_){return u.f(f,e,p(1,_))}:function(f,e,_){return f[e]=_,f}},51361:v=>{v.exports=function(S,i){return{enumerable:!(1&S),configurable:!(2&S),writable:!(4&S),value:i}}},46751:(v,S,i)=>{"use strict";var r=i(62939),u=i(48011),p=i(51361);v.exports=function(f,e,_){var y=r(e);y in f?u.f(f,y,p(0,_)):f[y]=_}},1707:(v,S,i)=>{var r=i(48011);v.exports=function(u,p,f){return r.f(u,p,f)}},42915:(v,S,i)=>{var r=i(65162);v.exports=function(u,p,f,e){return e&&e.enumerable?u[p]=f:r(u,p,f),u}},84604:(v,S,i)=>{var r=i(42915);v.exports=function(u,p,f){for(var e in p)f&&f.unsafe&&u[e]?u[e]=p[e]:r(u,e,p[e],f);return u}},34056:(v,S,i)=>{var r=i(70009),u=Object.defineProperty;v.exports=function(p,f){try{u(r,p,{value:f,configurable:!0,writable:!0})}catch(e){r[p]=f}return f}},32837:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(81124),f=i(29862),e=i(52208),_=i(65297),y=i(31426),T=i(54945),M=i(85681),R=i(65162),F=i(42915),Z=i(91840),J=i(84394),Q=i(38432),ee=f.PROPER,ue=f.CONFIGURABLE,ae=Q.IteratorPrototype,$=Q.BUGGY_SAFARI_ITERATORS,se=Z("iterator"),oe="values",he="entries",me=function(){return this};v.exports=function(Oe,ce,dt,ze,Ye,je,Ie){_(dt,ce,ze);var Ut,Bt,mt,Ve=function(Yt){if(Yt===Ye&&$t)return $t;if(!$&&Yt in st)return st[Yt];switch(Yt){case"keys":case oe:case he:return function(){return new dt(this,Yt)}}return function(){return new dt(this)}},He=ce+" Iterator",Zt=!1,st=Oe.prototype,en=st[se]||st["@@iterator"]||Ye&&st[Ye],$t=!$&&en||Ve(Ye),Gt="Array"==ce&&st.entries||en;if(Gt&&(Ut=y(Gt.call(new Oe)))!==Object.prototype&&Ut.next&&(!p&&y(Ut)!==ae&&(T?T(Ut,ae):e(Ut[se])||F(Ut,se,me)),M(Ut,He,!0,!0),p&&(J[He]=me)),ee&&Ye==oe&&en&&en.name!==oe&&(!p&&ue?R(st,"name",oe):(Zt=!0,$t=function(){return u(en,this)})),Ye)if(Bt={values:Ve(oe),keys:je?$t:Ve("keys"),entries:Ve(he)},Ie)for(mt in Bt)($||Zt||!(mt in st))&&F(st,mt,Bt[mt]);else r({target:ce,proto:!0,forced:$||Zt},Bt);return(!p||Ie)&&st[se]!==$t&&F(st,se,$t,{name:Ye}),J[ce]=$t,Bt}},16925:(v,S,i)=>{var r=i(13544),u=i(80112),p=i(89734),f=i(48011).f;v.exports=function(e){var _=r.Symbol||(r.Symbol={});u(_,e)||f(_,e,{value:p.f(e)})}},67236:(v,S,i)=>{"use strict";var r=i(7378),u=TypeError;v.exports=function(p,f){if(!delete p[f])throw u("Cannot delete property "+r(f)+" of "+r(p))}},49642:(v,S,i)=>{var r=i(55756);v.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},96682:(v,S,i)=>{var r=i(70009),u=i(77293),p=r.document,f=u(p)&&u(p.createElement);v.exports=function(e){return f?p.createElement(e):{}}},11594:v=>{var S=TypeError;v.exports=function(r){if(r>9007199254740991)throw S("Maximum allowed index exceeded");return r}},44125:v=>{v.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},36410:(v,S,i)=>{var u=i(86053).match(/firefox\/(\d+)/i);v.exports=!!u&&+u[1]},34008:(v,S,i)=>{var r=i(31813),u=i(3787);v.exports=!r&&!u&&"object"==typeof window&&"object"==typeof document},31813:v=>{v.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},5329:(v,S,i)=>{var r=i(86053);v.exports=/MSIE|Trident/.test(r)},16137:(v,S,i)=>{var r=i(86053),u=i(70009);v.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==u.Pebble},3877:(v,S,i)=>{var r=i(86053);v.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},3787:(v,S,i)=>{var r=i(49806),u=i(70009);v.exports="process"==r(u.process)},85308:(v,S,i)=>{var r=i(86053);v.exports=/web0s(?!.*chrome)/i.test(r)},86053:(v,S,i)=>{var r=i(7365);v.exports=r("navigator","userAgent")||""},63556:(v,S,i)=>{var y,T,r=i(70009),u=i(86053),p=r.process,f=r.Deno,e=p&&p.versions||f&&f.version,_=e&&e.v8;_&&(T=(y=_.split("."))[0]>0&&y[0]<4?1:+(y[0]+y[1])),!T&&u&&(!(y=u.match(/Edge\/(\d+)/))||y[1]>=74)&&(y=u.match(/Chrome\/(\d+)/))&&(T=+y[1]),v.exports=T},34545:(v,S,i)=>{var u=i(86053).match(/AppleWebKit\/(\d+)\./);v.exports=!!u&&+u[1]},97911:(v,S,i)=>{var r=i(13544);v.exports=function(u){return r[u+"Prototype"]}},44939:v=>{v.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},50499:(v,S,i)=>{var r=i(55756),u=i(51361);v.exports=!r(function(){var p=Error("a");return!("stack"in p)||(Object.defineProperty(p,"stack",u(1,7)),7!==p.stack)})},90513:(v,S,i)=>{"use strict";var r=i(70009),u=i(2543),p=i(23634),f=i(52208),e=i(25525).f,_=i(79482),y=i(13544),T=i(76781),M=i(65162),R=i(80112),F=function(Z){var J=function(Q,ee,ue){if(this instanceof J){switch(arguments.length){case 0:return new Z;case 1:return new Z(Q);case 2:return new Z(Q,ee)}return new Z(Q,ee,ue)}return u(Z,this,arguments)};return J.prototype=Z.prototype,J};v.exports=function(Z,J){var he,me,Oe,ce,dt,ze,Ye,je,Q=Z.target,ee=Z.global,ue=Z.stat,ae=Z.proto,$=ee?r:ue?r[Q]:(r[Q]||{}).prototype,se=ee?y:y[Q]||M(y,Q,{})[Q],ve=se.prototype;for(Oe in J)he=!_(ee?Oe:Q+(ue?".":"#")+Oe,Z.forced)&&$&&R($,Oe),dt=se[Oe],he&&(ze=Z.dontCallGetSet?(je=e($,Oe))&&je.value:$[Oe]),ce=he&&ze?ze:J[Oe],(!he||typeof dt!=typeof ce)&&(Ye=Z.bind&&he?T(ce,r):Z.wrap&&he?F(ce):ae&&f(ce)?p(ce):ce,(Z.sham||ce&&ce.sham||dt&&dt.sham)&&M(Ye,"sham",!0),M(se,Oe,Ye),ae&&(R(y,me=Q+"Prototype")||M(y,me,{}),M(y[me],Oe,ce),Z.real&&ve&&!ve[Oe]&&M(ve,Oe,ce)))}},55756:v=>{v.exports=function(S){try{return!!S()}catch(i){return!0}}},3124:(v,S,i)=>{var r=i(55756);v.exports=!r(function(){return Object.isExtensible(Object.preventExtensions({}))})},2543:(v,S,i)=>{var r=i(29046),u=Function.prototype,p=u.apply,f=u.call;v.exports="object"==typeof Reflect&&Reflect.apply||(r?f.bind(p):function(){return f.apply(p,arguments)})},76781:(v,S,i)=>{var r=i(23634),u=i(61812),p=i(29046),f=r(r.bind);v.exports=function(e,_){return u(e),void 0===_?e:p?f(e,_):function(){return e.apply(_,arguments)}}},29046:(v,S,i)=>{var r=i(55756);v.exports=!r(function(){var u=function(){}.bind();return"function"!=typeof u||u.hasOwnProperty("prototype")})},44197:(v,S,i)=>{"use strict";var r=i(23634),u=i(61812),p=i(77293),f=i(80112),e=i(37591),_=i(29046),y=Function,T=r([].concat),M=r([].join),R={},F=function(Z,J,Q){if(!f(R,J)){for(var ee=[],ue=0;ue<J;ue++)ee[ue]="a["+ue+"]";R[J]=y("C,a","return new C("+M(ee,",")+")")}return R[J](Z,Q)};v.exports=_?y.bind:function(J){var Q=u(this),ee=Q.prototype,ue=e(arguments,1),ae=function(){var se=T(ue,e(arguments));return this instanceof ae?F(Q,se.length,se):Q.apply(J,se)};return p(ee)&&(ae.prototype=ee),ae}},25401:(v,S,i)=>{var r=i(29046),u=Function.prototype.call;v.exports=r?u.bind(u):function(){return u.apply(u,arguments)}},29862:(v,S,i)=>{var r=i(49642),u=i(80112),p=Function.prototype,f=r&&Object.getOwnPropertyDescriptor,e=u(p,"name"),_=e&&"something"===function(){}.name,y=e&&(!r||r&&f(p,"name").configurable);v.exports={EXISTS:e,PROPER:_,CONFIGURABLE:y}},23634:(v,S,i)=>{var r=i(29046),u=Function.prototype,f=u.call,e=r&&u.bind.bind(f,f);v.exports=r?function(_){return _&&e(_)}:function(_){return _&&function(){return f.apply(_,arguments)}}},7365:(v,S,i)=>{var r=i(13544),u=i(70009),p=i(52208),f=function(e){return p(e)?e:void 0};v.exports=function(e,_){return arguments.length<2?f(r[e])||f(u[e]):r[e]&&r[e][_]||u[e]&&u[e][_]}},34014:(v,S,i)=>{var r=i(35329),u=i(34778),p=i(84394),e=i(91840)("iterator");v.exports=function(_){if(null!=_)return u(_,e)||u(_,"@@iterator")||p[r(_)]}},88055:(v,S,i)=>{var r=i(25401),u=i(61812),p=i(64562),f=i(7378),e=i(34014),_=TypeError;v.exports=function(y,T){var M=arguments.length<2?e(y):T;if(u(M))return p(r(M,y));throw _(f(y)+" is not iterable")}},37444:(v,S,i)=>{var r=i(88055);v.exports=r},34778:(v,S,i)=>{var r=i(61812);v.exports=function(u,p){var f=u[p];return null==f?void 0:r(f)}},70009:v=>{var S=function(i){return i&&i.Math==Math&&i};v.exports=S("object"==typeof globalThis&&globalThis)||S("object"==typeof window&&window)||S("object"==typeof self&&self)||S("object"==typeof global&&global)||function(){return this}()||Function("return this")()},80112:(v,S,i)=>{var r=i(23634),u=i(70267),p=r({}.hasOwnProperty);v.exports=Object.hasOwn||function(e,_){return p(u(e),_)}},45599:v=>{v.exports={}},52912:(v,S,i)=>{var r=i(70009);v.exports=function(u,p){var f=r.console;f&&f.error&&(1==arguments.length?f.error(u):f.error(u,p))}},55690:(v,S,i)=>{var r=i(7365);v.exports=r("document","documentElement")},50495:(v,S,i)=>{var r=i(49642),u=i(55756),p=i(96682);v.exports=!r&&!u(function(){return 7!=Object.defineProperty(p("div"),"a",{get:function(){return 7}}).a})},20973:(v,S,i)=>{var r=i(23634),u=i(55756),p=i(49806),f=Object,e=r("".split);v.exports=u(function(){return!f("z").propertyIsEnumerable(0)})?function(_){return"String"==p(_)?e(_,""):f(_)}:f},26699:(v,S,i)=>{var r=i(23634),u=i(52208),p=i(24766),f=r(Function.toString);u(p.inspectSource)||(p.inspectSource=function(e){return f(e)}),v.exports=p.inspectSource},33411:(v,S,i)=>{var r=i(77293),u=i(65162);v.exports=function(p,f){r(f)&&"cause"in f&&u(p,"cause",f.cause)}},57867:(v,S,i)=>{var r=i(90513),u=i(23634),p=i(45599),f=i(77293),e=i(80112),_=i(48011).f,y=i(51518),T=i(62469),M=i(46401),R=i(13708),F=i(3124),Z=!1,J=R("meta"),Q=0,ee=function(oe){_(oe,J,{value:{objectID:"O"+Q++,weakData:{}}})},ve=v.exports={enable:function(){ve.enable=function(){},Z=!0;var oe=y.f,he=u([].splice),me={};me[J]=1,oe(me).length&&(y.f=function(Oe){for(var ce=oe(Oe),dt=0,ze=ce.length;dt<ze;dt++)if(ce[dt]===J){he(ce,dt,1);break}return ce},r({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:T.f}))},fastKey:function(oe,he){if(!f(oe))return"symbol"==typeof oe?oe:("string"==typeof oe?"S":"P")+oe;if(!e(oe,J)){if(!M(oe))return"F";if(!he)return"E";ee(oe)}return oe[J].objectID},getWeakData:function(oe,he){if(!e(oe,J)){if(!M(oe))return!0;if(!he)return!1;ee(oe)}return oe[J].weakData},onFreeze:function(oe){return F&&Z&&M(oe)&&!e(oe,J)&&ee(oe),oe}};p[J]=!0},91093:(v,S,i)=>{var J,Q,ee,r=i(13179),u=i(70009),p=i(23634),f=i(77293),e=i(65162),_=i(80112),y=i(24766),T=i(86066),M=i(45599),R="Object already initialized",F=u.TypeError;if(r||y.state){var $=y.state||(y.state=new(0,u.WeakMap)),se=p($.get),ve=p($.has),oe=p($.set);J=function(me,Oe){if(ve($,me))throw new F(R);return Oe.facade=me,oe($,me,Oe),Oe},Q=function(me){return se($,me)||{}},ee=function(me){return ve($,me)}}else{var he=T("state");M[he]=!0,J=function(me,Oe){if(_(me,he))throw new F(R);return Oe.facade=me,e(me,he,Oe),Oe},Q=function(me){return _(me,he)?me[he]:{}},ee=function(me){return _(me,he)}}v.exports={set:J,get:Q,has:ee,enforce:function(me){return ee(me)?Q(me):J(me,{})},getterFor:function(me){return function(Oe){var ce;if(!f(Oe)||(ce=Q(Oe)).type!==me)throw F("Incompatible receiver, "+me+" required");return ce}}}},39918:(v,S,i)=>{var r=i(91840),u=i(84394),p=r("iterator"),f=Array.prototype;v.exports=function(e){return void 0!==e&&(u.Array===e||f[p]===e)}},89735:(v,S,i)=>{var r=i(49806);v.exports=Array.isArray||function(p){return"Array"==r(p)}},52208:v=>{v.exports=function(S){return"function"==typeof S}},81177:(v,S,i)=>{var r=i(23634),u=i(55756),p=i(52208),f=i(35329),e=i(7365),_=i(26699),y=function(){},T=[],M=e("Reflect","construct"),R=/^\s*(?:class|function)\b/,F=r(R.exec),Z=!R.exec(y),J=function(ue){if(!p(ue))return!1;try{return M(y,T,ue),!0}catch(ae){return!1}},Q=function(ue){if(!p(ue))return!1;switch(f(ue)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Z||!!F(R,_(ue))}catch(ae){return!0}};Q.sham=!0,v.exports=!M||u(function(){var ee;return J(J.call)||!J(Object)||!J(function(){ee=!0})||ee})?Q:J},27029:(v,S,i)=>{var r=i(80112);v.exports=function(u){return void 0!==u&&(r(u,"value")||r(u,"writable"))}},79482:(v,S,i)=>{var r=i(55756),u=i(52208),p=/#|\.prototype\./,f=function(M,R){var F=_[e(M)];return F==T||F!=y&&(u(R)?r(R):!!R)},e=f.normalize=function(M){return String(M).replace(p,".").toLowerCase()},_=f.data={},y=f.NATIVE="N",T=f.POLYFILL="P";v.exports=f},77293:(v,S,i)=>{var r=i(52208);v.exports=function(u){return"object"==typeof u?null!==u:r(u)}},81124:v=>{v.exports=!0},60373:(v,S,i)=>{var r=i(77293),u=i(49806),f=i(91840)("match");v.exports=function(e){var _;return r(e)&&(void 0!==(_=e[f])?!!_:"RegExp"==u(e))}},74717:(v,S,i)=>{var r=i(7365),u=i(52208),p=i(23336),f=i(99554),e=Object;v.exports=f?function(_){return"symbol"==typeof _}:function(_){var y=r("Symbol");return u(y)&&p(y.prototype,e(_))}},41605:(v,S,i)=>{var r=i(76781),u=i(25401),p=i(64562),f=i(7378),e=i(39918),_=i(6381),y=i(23336),T=i(88055),M=i(34014),R=i(40798),F=TypeError,Z=function(Q,ee){this.stopped=Q,this.result=ee},J=Z.prototype;v.exports=function(Q,ee,ue){var me,Oe,ce,dt,ze,Ye,je,$=!(!ue||!ue.AS_ENTRIES),se=!(!ue||!ue.IS_RECORD),ve=!(!ue||!ue.IS_ITERATOR),oe=!(!ue||!ue.INTERRUPTED),he=r(ee,ue&&ue.that),Ie=function(He){return me&&R(me,"normal",He),new Z(!0,He)},Ve=function(He){return $?(p(He),oe?he(He[0],He[1],Ie):he(He[0],He[1])):oe?he(He,Ie):he(He)};if(se)me=Q.iterator;else if(ve)me=Q;else{if(!(Oe=M(Q)))throw F(f(Q)+" is not iterable");if(e(Oe)){for(ce=0,dt=_(Q);dt>ce;ce++)if((ze=Ve(Q[ce]))&&y(J,ze))return ze;return new Z(!1)}me=T(Q,Oe)}for(Ye=se?Q.next:me.next;!(je=u(Ye,me)).done;){try{ze=Ve(je.value)}catch(He){R(me,"throw",He)}if("object"==typeof ze&&ze&&y(J,ze))return ze}return new Z(!1)}},40798:(v,S,i)=>{var r=i(25401),u=i(64562),p=i(34778);v.exports=function(f,e,_){var y,T;u(f);try{if(!(y=p(f,"return"))){if("throw"===e)throw _;return _}y=r(y,f)}catch(M){T=!0,y=M}if("throw"===e)throw _;if(T)throw y;return u(y),_}},38432:(v,S,i)=>{"use strict";var R,F,Z,r=i(55756),u=i(52208),p=i(83272),f=i(31426),e=i(42915),_=i(91840),y=i(81124),T=_("iterator"),M=!1;[].keys&&("next"in(Z=[].keys())?(F=f(f(Z)))!==Object.prototype&&(R=F):M=!0),null==R||r(function(){var Q={};return R[T].call(Q)!==Q})?R={}:y&&(R=p(R)),u(R[T])||e(R,T,function(){return this}),v.exports={IteratorPrototype:R,BUGGY_SAFARI_ITERATORS:M}},84394:v=>{v.exports={}},6381:(v,S,i)=>{var r=i(48869);v.exports=function(u){return r(u.length)}},12864:(v,S,i)=>{"use strict";var r=i(25401),u=i(61812),p=i(64562);v.exports=function(e,_){var F,Z,y=p(this),T=u(y.get),M=u(y.has),R=u(y.set);return r(M,y,e)?(F=r(T,y,e),"update"in _&&(F=_.update(F,e,y),r(R,y,e,F)),F):(Z=_.insert(e,y),r(R,y,e,Z),Z)}},57729:(v,S,i)=>{"use strict";var r=i(25401),u=i(61812),p=i(52208),f=i(64562),e=TypeError;v.exports=function(y,T){var Q,M=f(this),R=u(M.get),F=u(M.has),Z=u(M.set),J=arguments.length>2?arguments[2]:void 0;if(!p(T)&&!p(J))throw e("At least one callback required");return r(F,M,y)?(Q=r(R,M,y),p(T)&&(Q=T(Q),r(Z,M,y,Q))):p(J)&&(Q=J(),r(Z,M,y,Q)),Q}},8651:v=>{var S=Math.ceil,i=Math.floor;v.exports=Math.trunc||function(u){var p=+u;return(p>0?i:S)(p)}},58991:(v,S,i)=>{var ee,ue,ae,$,se,ve,oe,he,r=i(70009),u=i(76781),p=i(25525).f,f=i(37352).set,e=i(3877),_=i(16137),y=i(85308),T=i(3787),M=r.MutationObserver||r.WebKitMutationObserver,R=r.document,F=r.process,Z=r.Promise,J=p(r,"queueMicrotask"),Q=J&&J.value;Q||(ee=function(){var me,Oe;for(T&&(me=F.domain)&&me.exit();ue;){Oe=ue.fn,ue=ue.next;try{Oe()}catch(ce){throw ue?$():ae=void 0,ce}}ae=void 0,me&&me.enter()},e||T||y||!M||!R?!_&&Z&&Z.resolve?((oe=Z.resolve(void 0)).constructor=Z,he=u(oe.then,oe),$=function(){he(ee)}):T?$=function(){F.nextTick(ee)}:(f=u(f,r),$=function(){f(ee)}):(se=!0,ve=R.createTextNode(""),new M(ee).observe(ve,{characterData:!0}),$=function(){ve.data=se=!se})),v.exports=Q||function(me){var Oe={fn:me,next:void 0};ae&&(ae.next=Oe),ue||(ue=Oe,$()),ae=Oe}},53900:(v,S,i)=>{var r=i(29333);v.exports=r&&!!Symbol.for&&!!Symbol.keyFor},29333:(v,S,i)=>{var r=i(63556),u=i(55756);v.exports=!!Object.getOwnPropertySymbols&&!u(function(){var p=Symbol();return!String(p)||!(Object(p)instanceof Symbol)||!Symbol.sham&&r&&r<41})},29407:(v,S,i)=>{var r=i(55756),u=i(91840),p=i(81124),f=u("iterator");v.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),_=e.searchParams,y="";return e.pathname="c%20d",_.forEach(function(T,M){_.delete("b"),y+=M+T}),p&&!e.toJSON||!_.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==_.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!_[f]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://\u0442\u0435\u0441\u0442").host||"#%D0%B1"!==new URL("http://a#\u0431").hash||"a1c3"!==y||"x"!==new URL("http://x",void 0).host})},13179:(v,S,i)=>{var r=i(70009),u=i(52208),p=i(26699),f=r.WeakMap;v.exports=u(f)&&/native code/.test(p(f))},54256:(v,S,i)=>{"use strict";var r=i(61812),u=function(p){var f,e;this.promise=new p(function(_,y){if(void 0!==f||void 0!==e)throw TypeError("Bad Promise constructor");f=_,e=y}),this.resolve=r(f),this.reject=r(e)};v.exports.f=function(p){return new u(p)}},63313:(v,S,i)=>{var r=i(41433);v.exports=function(u,p){return void 0===u?arguments.length<2?"":p:r(u)}},56421:(v,S,i)=>{var r=i(60373),u=TypeError;v.exports=function(p){if(r(p))throw u("The method doesn't accept regular expressions");return p}},75791:(v,S,i)=>{"use strict";var r=i(49642),u=i(23634),p=i(25401),f=i(55756),e=i(28474),_=i(47238),y=i(25558),T=i(70267),M=i(20973),R=Object.assign,F=Object.defineProperty,Z=u([].concat);v.exports=!R||f(function(){if(r&&1!==R({b:1},R(F({},"a",{enumerable:!0,get:function(){F(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var J={},Q={},ee=Symbol(),ue="abcdefghijklmnopqrst";return J[ee]=7,ue.split("").forEach(function(ae){Q[ae]=ae}),7!=R({},J)[ee]||e(R({},Q)).join("")!=ue})?function(Q,ee){for(var ue=T(Q),ae=arguments.length,$=1,se=_.f,ve=y.f;ae>$;)for(var ce,oe=M(arguments[$++]),he=se?Z(e(oe),se(oe)):e(oe),me=he.length,Oe=0;me>Oe;)ce=he[Oe++],(!r||p(ve,oe,ce))&&(ue[ce]=oe[ce]);return ue}:R},83272:(v,S,i)=>{var ae,r=i(64562),u=i(25913),p=i(44939),f=i(45599),e=i(55690),_=i(96682),y=i(86066),R="prototype",F="script",Z=y("IE_PROTO"),J=function(){},Q=function(se){return"<"+F+">"+se+"</"+F+">"},ee=function(se){se.write(Q("")),se.close();var ve=se.parentWindow.Object;return se=null,ve},$=function(){try{ae=new ActiveXObject("htmlfile")}catch(ve){}$="undefined"!=typeof document?document.domain&&ae?ee(ae):function(){var oe,se=_("iframe");return se.style.display="none",e.appendChild(se),se.src=String("javascript:"),(oe=se.contentWindow.document).open(),oe.write(Q("document.F=Object")),oe.close(),oe.F}():ee(ae);for(var se=p.length;se--;)delete $[R][p[se]];return $()};f[Z]=!0,v.exports=Object.create||function(ve,oe){var he;return null!==ve?(J[R]=r(ve),he=new J,J[R]=null,he[Z]=ve):he=$(),void 0===oe?he:u.f(he,oe)}},25913:(v,S,i)=>{var r=i(49642),u=i(47960),p=i(48011),f=i(64562),e=i(81010),_=i(28474);S.f=r&&!u?Object.defineProperties:function(T,M){f(T);for(var Q,R=e(M),F=_(M),Z=F.length,J=0;Z>J;)p.f(T,Q=F[J++],R[Q]);return T}},48011:(v,S,i)=>{var r=i(49642),u=i(50495),p=i(47960),f=i(64562),e=i(62939),_=TypeError,y=Object.defineProperty,T=Object.getOwnPropertyDescriptor,M="enumerable",R="configurable",F="writable";S.f=r?p?function(J,Q,ee){if(f(J),Q=e(Q),f(ee),"function"==typeof J&&"prototype"===Q&&"value"in ee&&F in ee&&!ee[F]){var ue=T(J,Q);ue&&ue[F]&&(J[Q]=ee.value,ee={configurable:R in ee?ee[R]:ue[R],enumerable:M in ee?ee[M]:ue[M],writable:!1})}return y(J,Q,ee)}:y:function(J,Q,ee){if(f(J),Q=e(Q),f(ee),u)try{return y(J,Q,ee)}catch(ue){}if("get"in ee||"set"in ee)throw _("Accessors not supported");return"value"in ee&&(J[Q]=ee.value),J}},25525:(v,S,i)=>{var r=i(49642),u=i(25401),p=i(25558),f=i(51361),e=i(81010),_=i(62939),y=i(80112),T=i(50495),M=Object.getOwnPropertyDescriptor;S.f=r?M:function(F,Z){if(F=e(F),Z=_(Z),T)try{return M(F,Z)}catch(J){}if(y(F,Z))return f(!u(p.f,F,Z),F[Z])}},62469:(v,S,i)=>{var r=i(49806),u=i(81010),p=i(51518).f,f=i(8681),e="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];v.exports.f=function(T){return e&&"Window"==r(T)?function(y){try{return p(y)}catch(T){return f(e)}}(T):p(u(T))}},51518:(v,S,i)=>{var r=i(66250),p=i(44939).concat("length","prototype");S.f=Object.getOwnPropertyNames||function(e){return r(e,p)}},47238:(v,S)=>{S.f=Object.getOwnPropertySymbols},31426:(v,S,i)=>{var r=i(80112),u=i(52208),p=i(70267),f=i(86066),e=i(37112),_=f("IE_PROTO"),y=Object,T=y.prototype;v.exports=e?y.getPrototypeOf:function(M){var R=p(M);if(r(R,_))return R[_];var F=R.constructor;return u(F)&&R instanceof F?F.prototype:R instanceof y?T:null}},46401:(v,S,i)=>{var r=i(55756),u=i(77293),p=i(49806),f=i(76318),e=Object.isExtensible,_=r(function(){e(1)});v.exports=_||f?function(T){return!(!u(T)||f&&"ArrayBuffer"==p(T))&&(!e||e(T))}:e},23336:(v,S,i)=>{var r=i(23634);v.exports=r({}.isPrototypeOf)},66250:(v,S,i)=>{var r=i(23634),u=i(80112),p=i(81010),f=i(95171).indexOf,e=i(45599),_=r([].push);v.exports=function(y,T){var Z,M=p(y),R=0,F=[];for(Z in M)!u(e,Z)&&u(M,Z)&&_(F,Z);for(;T.length>R;)u(M,Z=T[R++])&&(~f(F,Z)||_(F,Z));return F}},28474:(v,S,i)=>{var r=i(66250),u=i(44939);v.exports=Object.keys||function(f){return r(f,u)}},25558:(v,S)=>{"use strict";var i={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,u=r&&!i.call({1:2},1);S.f=u?function(f){var e=r(this,f);return!!e&&e.enumerable}:i},54945:(v,S,i)=>{var r=i(23634),u=i(64562),p=i(93221);v.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var _,f=!1,e={};try{(_=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(e,[]),f=e instanceof Array}catch(y){}return function(T,M){return u(T),p(M),f?_(T,M):T.__proto__=M,T}}():void 0)},36805:(v,S,i)=>{var r=i(49642),u=i(23634),p=i(28474),f=i(81010),_=u(i(25558).f),y=u([].push),T=function(M){return function(R){for(var ue,F=f(R),Z=p(F),J=Z.length,Q=0,ee=[];J>Q;)ue=Z[Q++],(!r||_(F,ue))&&y(ee,M?[ue,F[ue]]:F[ue]);return ee}};v.exports={entries:T(!0),values:T(!1)}},97686:(v,S,i)=>{"use strict";var r=i(25014),u=i(35329);v.exports=r?{}.toString:function(){return"[object "+u(this)+"]"}},71689:(v,S,i)=>{var r=i(25401),u=i(52208),p=i(77293),f=TypeError;v.exports=function(e,_){var y,T;if("string"===_&&u(y=e.toString)&&!p(T=r(y,e))||u(y=e.valueOf)&&!p(T=r(y,e))||"string"!==_&&u(y=e.toString)&&!p(T=r(y,e)))return T;throw f("Can't convert object to primitive value")}},59823:(v,S,i)=>{var r=i(7365),u=i(23634),p=i(51518),f=i(47238),e=i(64562),_=u([].concat);v.exports=r("Reflect","ownKeys")||function(T){var M=p.f(e(T)),R=f.f;return R?_(M,R(T)):M}},13544:v=>{v.exports={}},26975:v=>{v.exports=function(S){try{return{error:!1,value:S()}}catch(i){return{error:!0,value:i}}}},9936:(v,S,i)=>{var r=i(70009),u=i(46456),p=i(52208),f=i(79482),e=i(26699),_=i(91840),y=i(34008),T=i(31813),M=i(81124),R=i(63556),F=u&&u.prototype,Z=_("species"),J=!1,Q=p(r.PromiseRejectionEvent),ee=f("Promise",function(){var ue=e(u),ae=ue!==String(u);if(!ae&&66===R||M&&(!F.catch||!F.finally))return!0;if(!R||R<51||!/native code/.test(ue)){var $=new u(function(oe){oe(1)}),se=function(oe){oe(function(){},function(){})};if(($.constructor={})[Z]=se,!(J=$.then(function(){})instanceof se))return!0}return!ae&&(y||T)&&!Q});v.exports={CONSTRUCTOR:ee,REJECTION_EVENT:Q,SUBCLASSING:J}},46456:(v,S,i)=>{var r=i(70009);v.exports=r.Promise},25524:(v,S,i)=>{var r=i(64562),u=i(77293),p=i(54256);v.exports=function(f,e){if(r(f),u(e)&&e.constructor===f)return e;var _=p.f(f);return(0,_.resolve)(e),_.promise}},95758:(v,S,i)=>{var r=i(46456),u=i(5253),p=i(9936).CONSTRUCTOR;v.exports=p||!u(function(f){r.all(f).then(void 0,function(){})})},70918:v=>{var S=function(){this.head=null,this.tail=null};S.prototype={add:function(i){var r={item:i,next:null};this.head?this.tail.next=r:this.head=r,this.tail=r},get:function(){var i=this.head;if(i)return this.head=i.next,this.tail===i&&(this.tail=null),i.item}},v.exports=S},67917:v=>{var S=TypeError;v.exports=function(i){if(null==i)throw S("Can't call method on "+i);return i}},29627:v=>{v.exports=function(S,i){return S===i||S!=S&&i!=i}},53814:(v,S,i)=>{var r=i(70009),u=i(2543),p=i(52208),f=i(86053),e=i(37591),_=i(15086),y=/MSIE .\./.test(f),T=r.Function,M=function(R){return y?function(F,Z){var J=_(arguments.length,1)>2,Q=p(F)?F:T(F),ee=J?e(arguments,2):void 0;return R(J?function(){u(Q,this,ee)}:Q,Z)}:R};v.exports={setTimeout:M(r.setTimeout),setInterval:M(r.setInterval)}},58014:(v,S,i)=>{"use strict";var r=i(7365),u=i(48011),p=i(91840),f=i(49642),e=p("species");v.exports=function(_){var y=r(_);f&&y&&!y[e]&&(0,u.f)(y,e,{configurable:!0,get:function(){return this}})}},85681:(v,S,i)=>{var r=i(25014),u=i(48011).f,p=i(65162),f=i(80112),e=i(97686),y=i(91840)("toStringTag");v.exports=function(T,M,R,F){if(T){var Z=R?T:T.prototype;f(Z,y)||u(Z,y,{configurable:!0,value:M}),F&&!r&&p(Z,"toString",e)}}},86066:(v,S,i)=>{var r=i(64579),u=i(13708),p=r("keys");v.exports=function(f){return p[f]||(p[f]=u(f))}},24766:(v,S,i)=>{var r=i(70009),u=i(34056),p="__core-js_shared__",f=r[p]||u(p,{});v.exports=f},64579:(v,S,i)=>{var r=i(81124),u=i(24766);(v.exports=function(p,f){return u[p]||(u[p]=void 0!==f?f:{})})("versions",[]).push({version:"3.24.1",mode:r?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE",source:"https://github.com/zloirock/core-js"})},95869:(v,S,i)=>{var r=i(64562),u=i(54356),f=i(91840)("species");v.exports=function(e,_){var T,y=r(e).constructor;return void 0===y||null==(T=r(y)[f])?_:u(T)}},61557:(v,S,i)=>{var r=i(23634),u=i(33912),p=i(41433),f=i(67917),e=r("".charAt),_=r("".charCodeAt),y=r("".slice),T=function(M){return function(R,F){var ee,ue,Z=p(f(R)),J=u(F),Q=Z.length;return J<0||J>=Q?M?"":void 0:(ee=_(Z,J))<55296||ee>56319||J+1===Q||(ue=_(Z,J+1))<56320||ue>57343?M?e(Z,J):ee:M?y(Z,J,J+2):ue-56320+(ee-55296<<10)+65536}};v.exports={codeAt:T(!1),charAt:T(!0)}},26662:(v,S,i)=>{"use strict";var r=i(23634),u=2147483647,F=/[^\0-\u007E]/,Z=/[.\u3002\uFF0E\uFF61]/g,J="Overflow: input needs wider integers to process",ee=RangeError,ue=r(Z.exec),ae=Math.floor,$=String.fromCharCode,se=r("".charCodeAt),ve=r([].join),oe=r([].push),he=r("".replace),me=r("".split),Oe=r("".toLowerCase),dt=function(je){return je+22+75*(je<26)},ze=function(je,Ie,Ve){var He=0;for(je=Ve?ae(je/700):je>>1,je+=ae(je/Ie);je>455;)je=ae(je/35),He+=36;return ae(He+36*je/(je+38))},Ye=function(je){var en,$t,Ie=[],Ve=(je=function(je){for(var Ie=[],Ve=0,He=je.length;Ve<He;){var Zt=se(je,Ve++);if(Zt>=55296&&Zt<=56319&&Ve<He){var st=se(je,Ve++);56320==(64512&st)?oe(Ie,((1023&Zt)<<10)+(1023&st)+65536):(oe(Ie,Zt),Ve--)}else oe(Ie,Zt)}return Ie}(je)).length,He=128,Zt=0,st=72;for(en=0;en<je.length;en++)($t=je[en])<128&&oe(Ie,$($t));var Gt=Ie.length,Ut=Gt;for(Gt&&oe(Ie,"-");Ut<Ve;){var Bt=u;for(en=0;en<je.length;en++)($t=je[en])>=He&&$t<Bt&&(Bt=$t);var mt=Ut+1;if(Bt-He>ae((u-Zt)/mt))throw ee(J);for(Zt+=(Bt-He)*mt,He=Bt,en=0;en<je.length;en++){if(($t=je[en])<He&&++Zt>u)throw ee(J);if($t==He){for(var Yt=Zt,Dt=36;;){var zt=Dt<=st?1:Dt>=st+26?26:Dt-st;if(Yt<zt)break;var Yn=Yt-zt,Hr=36-zt;oe(Ie,$(dt(zt+Yn%Hr))),Yt=ae(Yn/Hr),Dt+=36}oe(Ie,$(dt(Yt))),st=ze(Zt,mt,Ut==Gt),Zt=0,Ut++}}Zt++,He++}return ve(Ie,"")};v.exports=function(je){var He,Zt,Ie=[],Ve=me(he(Oe(je),Z,"."),".");for(He=0;He<Ve.length;He++)oe(Ie,ue(F,Zt=Ve[He])?"xn--"+Ye(Zt):Zt);return ve(Ie,".")}},53411:(v,S,i)=>{"use strict";var r=i(33912),u=i(41433),p=i(67917),f=RangeError;v.exports=function(_){var y=u(p(this)),T="",M=r(_);if(M<0||M==1/0)throw f("Wrong number of repetitions");for(;M>0;(M>>>=1)&&(y+=y))1&M&&(T+=y);return T}},85462:(v,S,i)=>{var r=i(29862).PROPER,u=i(55756),p=i(88185);v.exports=function(e){return u(function(){return!!p[e]()||"\u200b\x85\u180e"!=="\u200b\x85\u180e"[e]()||r&&p[e].name!==e})}},89858:(v,S,i)=>{var r=i(23634),u=i(67917),p=i(41433),f=i(88185),e=r("".replace),_="["+f+"]",y=RegExp("^"+_+_+"*"),T=RegExp(_+_+"*$"),M=function(R){return function(F){var Z=p(u(F));return 1&R&&(Z=e(Z,y,"")),2&R&&(Z=e(Z,T,"")),Z}};v.exports={start:M(1),end:M(2),trim:M(3)}},56992:(v,S,i)=>{var r=i(25401),u=i(7365),p=i(91840),f=i(42915);v.exports=function(){var e=u("Symbol"),_=e&&e.prototype,y=_&&_.valueOf,T=p("toPrimitive");_&&!_[T]&&f(_,T,function(M){return r(y,this)},{arity:1})}},37352:(v,S,i)=>{var me,Oe,ce,dt,r=i(70009),u=i(2543),p=i(76781),f=i(52208),e=i(80112),_=i(55756),y=i(55690),T=i(37591),M=i(96682),R=i(15086),F=i(3877),Z=i(3787),J=r.setImmediate,Q=r.clearImmediate,ee=r.process,ue=r.Dispatch,ae=r.Function,$=r.MessageChannel,se=r.String,ve=0,oe={},he="onreadystatechange";try{me=r.location}catch(Ve){}var ze=function(Ve){if(e(oe,Ve)){var He=oe[Ve];delete oe[Ve],He()}},Ye=function(Ve){return function(){ze(Ve)}},je=function(Ve){ze(Ve.data)},Ie=function(Ve){r.postMessage(se(Ve),me.protocol+"//"+me.host)};(!J||!Q)&&(J=function(He){R(arguments.length,1);var Zt=f(He)?He:ae(He),st=T(arguments,1);return oe[++ve]=function(){u(Zt,void 0,st)},Oe(ve),ve},Q=function(He){delete oe[He]},Z?Oe=function(Ve){ee.nextTick(Ye(Ve))}:ue&&ue.now?Oe=function(Ve){ue.now(Ye(Ve))}:$&&!F?(dt=(ce=new $).port2,ce.port1.onmessage=je,Oe=p(dt.postMessage,dt)):r.addEventListener&&f(r.postMessage)&&!r.importScripts&&me&&"file:"!==me.protocol&&!_(Ie)?(Oe=Ie,r.addEventListener("message",je,!1)):Oe=he in M("script")?function(Ve){y.appendChild(M("script"))[he]=function(){y.removeChild(this),ze(Ve)}}:function(Ve){setTimeout(Ye(Ve),0)}),v.exports={set:J,clear:Q}},19401:(v,S,i)=>{var r=i(33912),u=Math.max,p=Math.min;v.exports=function(f,e){var _=r(f);return _<0?u(_+e,0):p(_,e)}},81010:(v,S,i)=>{var r=i(20973),u=i(67917);v.exports=function(p){return r(u(p))}},33912:(v,S,i)=>{var r=i(8651);v.exports=function(u){var p=+u;return p!=p||0===p?0:r(p)}},48869:(v,S,i)=>{var r=i(33912),u=Math.min;v.exports=function(p){return p>0?u(r(p),9007199254740991):0}},70267:(v,S,i)=>{var r=i(67917),u=Object;v.exports=function(p){return u(r(p))}},1645:(v,S,i)=>{var r=i(25401),u=i(77293),p=i(74717),f=i(34778),e=i(71689),_=i(91840),y=TypeError,T=_("toPrimitive");v.exports=function(M,R){if(!u(M)||p(M))return M;var Z,F=f(M,T);if(F){if(void 0===R&&(R="default"),Z=r(F,M,R),!u(Z)||p(Z))return Z;throw y("Can't convert object to primitive value")}return void 0===R&&(R="number"),e(M,R)}},62939:(v,S,i)=>{var r=i(1645),u=i(74717);v.exports=function(p){var f=r(p,"string");return u(f)?f:f+""}},25014:(v,S,i)=>{var p={};p[i(91840)("toStringTag")]="z",v.exports="[object z]"===String(p)},41433:(v,S,i)=>{var r=i(35329),u=String;v.exports=function(p){if("Symbol"===r(p))throw TypeError("Cannot convert a Symbol value to a string");return u(p)}},7378:v=>{var S=String;v.exports=function(i){try{return S(i)}catch(r){return"Object"}}},13708:(v,S,i)=>{var r=i(23634),u=0,p=Math.random(),f=r(1..toString);v.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+f(++u+p,36)}},99554:(v,S,i)=>{var r=i(29333);v.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},47960:(v,S,i)=>{var r=i(49642),u=i(55756);v.exports=r&&u(function(){return 42!=Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},15086:v=>{var S=TypeError;v.exports=function(i,r){if(i<r)throw S("Not enough arguments");return i}},89734:(v,S,i)=>{var r=i(91840);S.f=r},91840:(v,S,i)=>{var r=i(70009),u=i(64579),p=i(80112),f=i(13708),e=i(29333),_=i(99554),y=u("wks"),T=r.Symbol,M=T&&T.for,R=_?T:T&&T.withoutSetter||f;v.exports=function(F){if(!p(y,F)||!e&&"string"!=typeof y[F]){var Z="Symbol."+F;y[F]=e&&p(T,F)?T[F]:_&&M?M(Z):R(Z)}return y[F]}},88185:v=>{v.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},70210:(v,S,i)=>{"use strict";var r=i(90513),u=i(23336),p=i(31426),f=i(54945),e=i(65031),_=i(83272),y=i(65162),T=i(51361),M=i(41995),R=i(33411),F=i(41605),Z=i(63313),J=i(91840),Q=i(50499),ee=J("toStringTag"),ue=Error,ae=[].push,$=function(oe,he){var ce,me=arguments.length>2?arguments[2]:void 0,Oe=u(se,this);f?ce=f(new ue,Oe?p(this):se):(ce=Oe?this:_(se),y(ce,ee,"Error")),void 0!==he&&y(ce,"message",Z(he)),Q&&y(ce,"stack",M(ce.stack,1)),R(ce,me);var dt=[];return F(oe,ae,{that:dt}),y(ce,"errors",dt),ce};f?f($,ue):e($,ue,{name:!0});var se=$.prototype=_(ue.prototype,{constructor:T(1,$),message:T(1,""),name:T(1,"AggregateError")});r({global:!0,constructor:!0,arity:2},{AggregateError:$})},10901:(v,S,i)=>{i(70210)},1625:(v,S,i)=>{"use strict";var r=i(90513),u=i(55756),p=i(89735),f=i(77293),e=i(70267),_=i(6381),y=i(11594),T=i(46751),M=i(2103),R=i(95913),F=i(91840),Z=i(63556),J=F("isConcatSpreadable"),Q=Z>=51||!u(function(){var $=[];return $[J]=!1,$.concat()[0]!==$}),ee=R("concat"),ue=function($){if(!f($))return!1;var se=$[J];return void 0!==se?!!se:p($)};r({target:"Array",proto:!0,arity:1,forced:!Q||!ee},{concat:function(se){var me,Oe,ce,dt,ze,ve=e(this),oe=M(ve,0),he=0;for(me=-1,ce=arguments.length;me<ce;me++)if(ue(ze=-1===me?ve:arguments[me]))for(dt=_(ze),y(he+dt),Oe=0;Oe<dt;Oe++,he++)Oe in ze&&T(oe,he,ze[Oe]);else y(he+1),T(oe,he++,ze);return oe.length=he,oe}})},70466:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).every;r({target:"Array",proto:!0,forced:!i(33620)("every")},{every:function(_){return u(this,_,arguments.length>1?arguments[1]:void 0)}})},24990:(v,S,i)=>{var r=i(90513),u=i(35277),p=i(82196);r({target:"Array",proto:!0},{fill:u}),p("fill")},56534:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).filter;r({target:"Array",proto:!0,forced:!i(95913)("filter")},{filter:function(_){return u(this,_,arguments.length>1?arguments[1]:void 0)}})},12773:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).findIndex,p=i(82196),f="findIndex",e=!0;f in[]&&Array(1)[f](function(){e=!1}),r({target:"Array",proto:!0,forced:e},{findIndex:function(y){return u(this,y,arguments.length>1?arguments[1]:void 0)}}),p(f)},60326:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).find,p=i(82196),f="find",e=!0;f in[]&&Array(1)[f](function(){e=!1}),r({target:"Array",proto:!0,forced:e},{find:function(y){return u(this,y,arguments.length>1?arguments[1]:void 0)}}),p(f)},98792:(v,S,i)=>{"use strict";var r=i(90513),u=i(8366);r({target:"Array",proto:!0,forced:[].forEach!=u},{forEach:u})},261:(v,S,i)=>{var r=i(90513),u=i(51923);r({target:"Array",stat:!0,forced:!i(5253)(function(e){Array.from(e)})},{from:u})},77059:(v,S,i)=>{"use strict";var r=i(90513),u=i(95171).includes,p=i(55756),f=i(82196);r({target:"Array",proto:!0,forced:p(function(){return!Array(1).includes()})},{includes:function(y){return u(this,y,arguments.length>1?arguments[1]:void 0)}}),f("includes")},2795:(v,S,i)=>{"use strict";var r=i(90513),u=i(23634),p=i(95171).indexOf,f=i(33620),e=u([].indexOf),_=!!e&&1/e([1],1,-0)<0,y=f("indexOf");r({target:"Array",proto:!0,forced:_||!y},{indexOf:function(M){var R=arguments.length>1?arguments[1]:void 0;return _?e(this,M,R)||0:p(this,M,R)}})},2862:(v,S,i)=>{i(90513)({target:"Array",stat:!0},{isArray:i(89735)})},1285:(v,S,i)=>{"use strict";var r=i(81010),u=i(82196),p=i(84394),f=i(91093),e=i(48011).f,_=i(32837),y=i(81124),T=i(49642),M="Array Iterator",R=f.set,F=f.getterFor(M);v.exports=_(Array,"Array",function(J,Q){R(this,{type:M,target:r(J),index:0,kind:Q})},function(){var J=F(this),Q=J.target,ee=J.kind,ue=J.index++;return!Q||ue>=Q.length?(J.target=void 0,{value:void 0,done:!0}):"keys"==ee?{value:ue,done:!1}:"values"==ee?{value:Q[ue],done:!1}:{value:[ue,Q[ue]],done:!1}},"values");var Z=p.Arguments=p.Array;if(u("keys"),u("values"),u("entries"),!y&&T&&"values"!==Z.name)try{e(Z,"name",{value:"values"})}catch(J){}},74926:(v,S,i)=>{var r=i(90513),u=i(78375);r({target:"Array",proto:!0,forced:u!==[].lastIndexOf},{lastIndexOf:u})},88119:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).map;r({target:"Array",proto:!0,forced:!i(95913)("map")},{map:function(_){return u(this,_,arguments.length>1?arguments[1]:void 0)}})},46250:(v,S,i)=>{"use strict";var r=i(90513),u=i(88908).left,p=i(33620),f=i(63556),e=i(3787);r({target:"Array",proto:!0,forced:!p("reduce")||!e&&f>79&&f<83},{reduce:function(M){var R=arguments.length;return u(this,M,R,R>1?arguments[1]:void 0)}})},32836:(v,S,i)=>{"use strict";var r=i(90513),u=i(23634),p=i(89735),f=u([].reverse),e=[1,2];r({target:"Array",proto:!0,forced:String(e)===String(e.reverse())},{reverse:function(){return p(this)&&(this.length=this.length),f(this)}})},72999:(v,S,i)=>{"use strict";var r=i(90513),u=i(89735),p=i(81177),f=i(77293),e=i(19401),_=i(6381),y=i(81010),T=i(46751),M=i(91840),R=i(95913),F=i(37591),Z=R("slice"),J=M("species"),Q=Array,ee=Math.max;r({target:"Array",proto:!0,forced:!Z},{slice:function(ae,$){var me,Oe,ce,se=y(this),ve=_(se),oe=e(ae,ve),he=e(void 0===$?ve:$,ve);if(u(se)&&((p(me=se.constructor)&&(me===Q||u(me.prototype))||f(me)&&null===(me=me[J]))&&(me=void 0),me===Q||void 0===me))return F(se,oe,he);for(Oe=new(void 0===me?Q:me)(ee(he-oe,0)),ce=0;oe<he;oe++,ce++)oe in se&&T(Oe,ce,se[oe]);return Oe.length=ce,Oe}})},50733:(v,S,i)=>{"use strict";var r=i(90513),u=i(68607).some;r({target:"Array",proto:!0,forced:!i(33620)("some")},{some:function(_){return u(this,_,arguments.length>1?arguments[1]:void 0)}})},93639:(v,S,i)=>{"use strict";var r=i(90513),u=i(23634),p=i(61812),f=i(70267),e=i(6381),_=i(67236),y=i(41433),T=i(55756),M=i(84865),R=i(33620),F=i(36410),Z=i(5329),J=i(63556),Q=i(34545),ee=[],ue=u(ee.sort),ae=u(ee.push),$=T(function(){ee.sort(void 0)}),se=T(function(){ee.sort(null)}),ve=R("sort"),oe=!T(function(){if(J)return J<70;if(!(F&&F>3)){if(Z)return!0;if(Q)return Q<603;var ce,dt,ze,Ye,Oe="";for(ce=65;ce<76;ce++){switch(dt=String.fromCharCode(ce),ce){case 66:case 69:case 70:case 72:ze=3;break;case 68:case 71:ze=4;break;default:ze=2}for(Ye=0;Ye<47;Ye++)ee.push({k:dt+Ye,v:ze})}for(ee.sort(function(je,Ie){return Ie.v-je.v}),Ye=0;Ye<ee.length;Ye++)dt=ee[Ye].k.charAt(0),Oe.charAt(Oe.length-1)!==dt&&(Oe+=dt);return"DGBEFHACIJK"!==Oe}});r({target:"Array",proto:!0,forced:$||!se||!ve||!oe},{sort:function(ce){void 0!==ce&&p(ce);var dt=f(this);if(oe)return void 0===ce?ue(dt):ue(dt,ce);var je,Ie,ze=[],Ye=e(dt);for(Ie=0;Ie<Ye;Ie++)Ie in dt&&ae(ze,dt[Ie]);for(M(ze,function(Oe){return function(ce,dt){return void 0===dt?-1:void 0===ce?1:void 0!==Oe?+Oe(ce,dt)||0:y(ce)>y(dt)?1:-1}}(ce)),je=ze.length,Ie=0;Ie<je;)dt[Ie]=ze[Ie++];for(;Ie<Ye;)_(dt,Ie++);return dt}})},63117:(v,S,i)=>{"use strict";var r=i(90513),u=i(70267),p=i(19401),f=i(33912),e=i(6381),_=i(11594),y=i(2103),T=i(46751),M=i(67236),F=i(95913)("splice"),Z=Math.max,J=Math.min;r({target:"Array",proto:!0,forced:!F},{splice:function(ee,ue){var oe,he,me,Oe,ce,dt,ae=u(this),$=e(ae),se=p(ee,$),ve=arguments.length;for(0===ve?oe=he=0:1===ve?(oe=0,he=$-se):(oe=ve-2,he=J(Z(f(ue),0),$-se)),_($+oe-he),me=y(ae,he),Oe=0;Oe<he;Oe++)(ce=se+Oe)in ae&&T(me,Oe,ae[ce]);if(me.length=he,oe<he){for(Oe=se;Oe<$-he;Oe++)dt=Oe+oe,(ce=Oe+he)in ae?ae[dt]=ae[ce]:M(ae,dt);for(Oe=$;Oe>$-he+oe;Oe--)M(ae,Oe-1)}else if(oe>he)for(Oe=$-he;Oe>se;Oe--)dt=Oe+oe-1,(ce=Oe+he-1)in ae?ae[dt]=ae[ce]:M(ae,dt);for(Oe=0;Oe<oe;Oe++)ae[Oe+se]=arguments[Oe+2];return ae.length=$-he+oe,me}})},34699:(v,S,i)=>{var r=i(90513),u=i(23634),p=Date,f=u(p.prototype.getTime);r({target:"Date",stat:!0},{now:function(){return f(new p)}})},33379:(v,S,i)=>{var r=i(90513),u=i(44197);r({target:"Function",proto:!0,forced:Function.bind!==u},{bind:u})},87404:(v,S,i)=>{i(90513)({global:!0},{globalThis:i(70009)})},75071:(v,S,i)=>{var r=i(90513),u=i(7365),p=i(2543),f=i(25401),e=i(23634),_=i(55756),y=i(89735),T=i(52208),M=i(77293),R=i(74717),F=i(37591),Z=i(29333),J=u("JSON","stringify"),Q=e(/./.exec),ee=e("".charAt),ue=e("".charCodeAt),ae=e("".replace),$=e(1..toString),se=/[\uD800-\uDFFF]/g,ve=/^[\uD800-\uDBFF]$/,oe=/^[\uDC00-\uDFFF]$/,he=!Z||_(function(){var dt=u("Symbol")();return"[null]"!=J([dt])||"{}"!=J({a:dt})||"{}"!=J(Object(dt))}),me=_(function(){return'"\\udf06\\ud834"'!==J("\udf06\ud834")||'"\\udead"'!==J("\udead")}),Oe=function(dt,ze){var Ye=F(arguments),je=ze;if((M(ze)||void 0!==dt)&&!R(dt))return y(ze)||(ze=function(Ie,Ve){if(T(je)&&(Ve=f(je,this,Ie,Ve)),!R(Ve))return Ve}),Ye[1]=ze,p(J,null,Ye)},ce=function(dt,ze,Ye){var je=ee(Ye,ze-1),Ie=ee(Ye,ze+1);return Q(ve,dt)&&!Q(oe,Ie)||Q(oe,dt)&&!Q(ve,je)?"\\u"+$(ue(dt,0),16):dt};J&&r({target:"JSON",stat:!0,arity:3,forced:he||me},{stringify:function(ze,Ye,je){var Ie=F(arguments),Ve=p(he?Oe:J,null,Ie);return me&&"string"==typeof Ve?ae(Ve,se,ce):Ve}})},32300:(v,S,i)=>{var r=i(70009);i(85681)(r.JSON,"JSON",!0)},83616:(v,S,i)=>{"use strict";i(85116)("Map",function(p){return function(){return p(this,arguments.length?arguments[0]:void 0)}},i(26650))},85140:(v,S,i)=>{i(83616)},63603:()=>{},67234:(v,S,i)=>{var r=i(90513),u=i(75791);r({target:"Object",stat:!0,arity:2,forced:Object.assign!==u},{assign:u})},86516:(v,S,i)=>{i(90513)({target:"Object",stat:!0,sham:!i(49642)},{create:i(83272)})},36255:(v,S,i)=>{var r=i(90513),u=i(49642),p=i(25913).f;r({target:"Object",stat:!0,forced:Object.defineProperties!==p,sham:!u},{defineProperties:p})},84468:(v,S,i)=>{var r=i(90513),u=i(49642),p=i(48011).f;r({target:"Object",stat:!0,forced:Object.defineProperty!==p,sham:!u},{defineProperty:p})},54989:(v,S,i)=>{var r=i(90513),u=i(36805).entries;r({target:"Object",stat:!0},{entries:function(f){return u(f)}})},86627:(v,S,i)=>{var r=i(90513),u=i(55756),p=i(81010),f=i(25525).f,e=i(49642),_=u(function(){f(1)});r({target:"Object",stat:!0,forced:!e||_,sham:!e},{getOwnPropertyDescriptor:function(M,R){return f(p(M),R)}})},78275:(v,S,i)=>{var r=i(90513),u=i(49642),p=i(59823),f=i(81010),e=i(25525),_=i(46751);r({target:"Object",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(T){for(var Q,ee,M=f(T),R=e.f,F=p(M),Z={},J=0;F.length>J;)void 0!==(ee=R(M,Q=F[J++]))&&_(Z,Q,ee);return Z}})},37764:(v,S,i)=>{var r=i(90513),u=i(29333),p=i(55756),f=i(47238),e=i(70267);r({target:"Object",stat:!0,forced:!u||p(function(){f.f(1)})},{getOwnPropertySymbols:function(T){var M=f.f;return M?M(e(T)):[]}})},31193:(v,S,i)=>{var r=i(90513),u=i(55756),p=i(70267),f=i(31426),e=i(37112);r({target:"Object",stat:!0,forced:u(function(){f(1)}),sham:!e},{getPrototypeOf:function(T){return f(p(T))}})},56557:(v,S,i)=>{var r=i(90513),u=i(70267),p=i(28474);r({target:"Object",stat:!0,forced:i(55756)(function(){p(1)})},{keys:function(y){return p(u(y))}})},17971:(v,S,i)=>{i(90513)({target:"Object",stat:!0},{setPrototypeOf:i(54945)})},17221:()=>{},88923:(v,S,i)=>{var r=i(90513),u=i(36805).values;r({target:"Object",stat:!0},{values:function(f){return u(f)}})},84798:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(61812),f=i(54256),e=i(26975),_=i(41605);r({target:"Promise",stat:!0},{allSettled:function(T){var M=this,R=f.f(M),F=R.resolve,Z=R.reject,J=e(function(){var Q=p(M.resolve),ee=[],ue=0,ae=1;_(T,function($){var se=ue++,ve=!1;ae++,u(Q,M,$).then(function(oe){ve||(ve=!0,ee[se]={status:"fulfilled",value:oe},--ae||F(ee))},function(oe){ve||(ve=!0,ee[se]={status:"rejected",reason:oe},--ae||F(ee))})}),--ae||F(ee)});return J.error&&Z(J.value),R.promise}})},58085:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(61812),f=i(54256),e=i(26975),_=i(41605);r({target:"Promise",stat:!0,forced:i(95758)},{all:function(M){var R=this,F=f.f(R),Z=F.resolve,J=F.reject,Q=e(function(){var ee=p(R.resolve),ue=[],ae=0,$=1;_(M,function(se){var ve=ae++,oe=!1;$++,u(ee,R,se).then(function(he){oe||(oe=!0,ue[ve]=he,--$||Z(ue))},J)}),--$||Z(ue)});return Q.error&&J(Q.value),F.promise}})},98857:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(61812),f=i(7365),e=i(54256),_=i(26975),y=i(41605),T="No one promise resolved";r({target:"Promise",stat:!0},{any:function(R){var F=this,Z=f("AggregateError"),J=e.f(F),Q=J.resolve,ee=J.reject,ue=_(function(){var ae=p(F.resolve),$=[],se=0,ve=1,oe=!1;y(R,function(he){var me=se++,Oe=!1;ve++,u(ae,F,he).then(function(ce){Oe||oe||(oe=!0,Q(ce))},function(ce){Oe||oe||(Oe=!0,$[me]=ce,--ve||ee(new Z($,T)))})}),--ve||ee(new Z($,T))});return ue.error&&ee(ue.value),J.promise}})},5846:(v,S,i)=>{"use strict";var r=i(90513),u=i(81124),p=i(9936).CONSTRUCTOR,f=i(46456),e=i(7365),_=i(52208),y=i(42915),T=f&&f.prototype;if(r({target:"Promise",proto:!0,forced:p,real:!0},{catch:function(R){return this.then(void 0,R)}}),!u&&_(f)){var M=e("Promise").prototype.catch;T.catch!==M&&y(T,"catch",M,{unsafe:!0})}},38206:(v,S,i)=>{"use strict";var ci,Ir,Qr,r=i(90513),u=i(81124),p=i(3787),f=i(70009),e=i(25401),_=i(42915),y=i(54945),T=i(85681),M=i(58014),R=i(61812),F=i(52208),Z=i(77293),J=i(54849),Q=i(95869),ee=i(37352).set,ue=i(58991),ae=i(52912),$=i(26975),se=i(70918),ve=i(91093),oe=i(46456),he=i(9936),me=i(54256),Oe="Promise",ce=he.CONSTRUCTOR,dt=he.REJECTION_EVENT,ze=he.SUBCLASSING,Ye=ve.getterFor(Oe),je=ve.set,Ie=oe&&oe.prototype,Ve=oe,He=Ie,Zt=f.TypeError,st=f.document,en=f.process,$t=me.f,Gt=$t,Ut=!!(st&&st.createEvent&&f.dispatchEvent),Bt="unhandledrejection",Kr=function(Wt){var Jn;return!(!Z(Wt)||!F(Jn=Wt.then))&&Jn},In=function(Wt,Jn){var Tr,Nr,gn,ir=Jn.value,Lr=1==Jn.state,Vn=Lr?Wt.ok:Wt.fail,zr=Wt.resolve,hi=Wt.reject,Ai=Wt.domain;try{Vn?(Lr||(2===Jn.rejection&&$i(Jn),Jn.rejection=1),!0===Vn?Tr=ir:(Ai&&Ai.enter(),Tr=Vn(ir),Ai&&(Ai.exit(),gn=!0)),Tr===Wt.promise?hi(Zt("Promise-chain cycle")):(Nr=Kr(Tr))?e(Nr,Tr,zr,hi):zr(Tr)):hi(ir)}catch(En){Ai&&!gn&&Ai.exit(),hi(En)}},Hn=function(Wt,Jn){Wt.notified||(Wt.notified=!0,ue(function(){for(var Lr,ir=Wt.reactions;Lr=ir.get();)In(Lr,Wt);Wt.notified=!1,Jn&&!Wt.rejection&&Ur(Wt)}))},Zr=function(Wt,Jn,ir){var Lr,Vn;Ut?((Lr=st.createEvent("Event")).promise=Jn,Lr.reason=ir,Lr.initEvent(Wt,!1,!0),f.dispatchEvent(Lr)):Lr={promise:Jn,reason:ir},!dt&&(Vn=f["on"+Wt])?Vn(Lr):Wt===Bt&&ae("Unhandled promise rejection",ir)},Ur=function(Wt){e(ee,f,function(){var Vn,Jn=Wt.facade,ir=Wt.value;if(di(Wt)&&(Vn=$(function(){p?en.emit("unhandledRejection",ir,Jn):Zr(Bt,Jn,ir)}),Wt.rejection=p||di(Wt)?2:1,Vn.error))throw Vn.value})},di=function(Wt){return 1!==Wt.rejection&&!Wt.parent},$i=function(Wt){e(ee,f,function(){var Jn=Wt.facade;p?en.emit("rejectionHandled",Jn):Zr("rejectionhandled",Jn,Wt.value)})},Hi=function(Wt,Jn,ir){return function(Lr){Wt(Jn,Lr,ir)}},Br=function(Wt,Jn,ir){Wt.done||(Wt.done=!0,ir&&(Wt=ir),Wt.value=Jn,Wt.state=2,Hn(Wt,!0))},On=function(Wt,Jn,ir){if(!Wt.done){Wt.done=!0,ir&&(Wt=ir);try{if(Wt.facade===Jn)throw Zt("Promise can't be resolved itself");var Lr=Kr(Jn);Lr?ue(function(){var Vn={done:!1};try{e(Lr,Jn,Hi(On,Vn,Wt),Hi(Br,Vn,Wt))}catch(zr){Br(Vn,zr,Wt)}}):(Wt.value=Jn,Wt.state=1,Hn(Wt,!1))}catch(Vn){Br({done:!1},Vn,Wt)}}};if(ce&&(Ve=function(Jn){J(this,He),R(Jn),e(ci,this);var ir=Ye(this);try{Jn(Hi(On,ir),Hi(Br,ir))}catch(Lr){Br(ir,Lr)}},(ci=function(Jn){je(this,{type:Oe,done:!1,notified:!1,parent:!1,reactions:new se,rejection:!1,state:0,value:void 0})}).prototype=_(He=Ve.prototype,"then",function(Jn,ir){var Lr=Ye(this),Vn=$t(Q(this,Ve));return Lr.parent=!0,Vn.ok=!F(Jn)||Jn,Vn.fail=F(ir)&&ir,Vn.domain=p?en.domain:void 0,0==Lr.state?Lr.reactions.add(Vn):ue(function(){In(Vn,Lr)}),Vn.promise}),Ir=function(){var Wt=new ci,Jn=Ye(Wt);this.promise=Wt,this.resolve=Hi(On,Jn),this.reject=Hi(Br,Jn)},me.f=$t=function(Wt){return Wt===Ve||void 0===Wt?new Ir(Wt):Gt(Wt)},!u&&F(oe)&&Ie!==Object.prototype)){Qr=Ie.then,ze||_(Ie,"then",function(Jn,ir){var Lr=this;return new Ve(function(Vn,zr){e(Qr,Lr,Vn,zr)}).then(Jn,ir)},{unsafe:!0});try{delete Ie.constructor}catch(Wt){}y&&y(Ie,He)}r({global:!0,constructor:!0,wrap:!0,forced:ce},{Promise:Ve}),T(Ve,Oe,!1,!0),M(Oe)},30185:(v,S,i)=>{"use strict";var r=i(90513),u=i(81124),p=i(46456),f=i(55756),e=i(7365),_=i(52208),y=i(95869),T=i(25524),M=i(42915),R=p&&p.prototype;if(r({target:"Promise",proto:!0,real:!0,forced:!!p&&f(function(){R.finally.call({then:function(){}},function(){})})},{finally:function(J){var Q=y(this,e("Promise")),ee=_(J);return this.then(ee?function(ue){return T(Q,J()).then(function(){return ue})}:J,ee?function(ue){return T(Q,J()).then(function(){throw ue})}:J)}}),!u&&_(p)){var Z=e("Promise").prototype.finally;R.finally!==Z&&M(R,"finally",Z,{unsafe:!0})}},66793:(v,S,i)=>{i(38206),i(58085),i(5846),i(44738),i(74767),i(4991)},44738:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(61812),f=i(54256),e=i(26975),_=i(41605);r({target:"Promise",stat:!0,forced:i(95758)},{race:function(M){var R=this,F=f.f(R),Z=F.reject,J=e(function(){var Q=p(R.resolve);_(M,function(ee){u(Q,R,ee).then(F.resolve,Z)})});return J.error&&Z(J.value),F.promise}})},74767:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(54256);r({target:"Promise",stat:!0,forced:i(9936).CONSTRUCTOR},{reject:function(_){var y=p.f(this);return u(y.reject,void 0,_),y.promise}})},4991:(v,S,i)=>{"use strict";var r=i(90513),u=i(7365),p=i(81124),f=i(46456),e=i(9936).CONSTRUCTOR,_=i(25524),y=u("Promise"),T=p&&!e;r({target:"Promise",stat:!0,forced:p||e},{resolve:function(R){return _(T&&this===y?f:this,R)}})},19539:(v,S,i)=>{var r=i(90513),u=i(7365),p=i(2543),f=i(44197),e=i(54356),_=i(64562),y=i(77293),T=i(83272),M=i(55756),R=u("Reflect","construct"),F=Object.prototype,Z=[].push,J=M(function(){function ue(){}return!(R(function(){},[],ue)instanceof ue)}),Q=!M(function(){R(function(){})}),ee=J||Q;r({target:"Reflect",stat:!0,forced:ee,sham:ee},{construct:function(ae,$){e(ae),_($);var se=arguments.length<3?ae:e(arguments[2]);if(Q&&!J)return R(ae,$,se);if(ae==se){switch($.length){case 0:return new ae;case 1:return new ae($[0]);case 2:return new ae($[0],$[1]);case 3:return new ae($[0],$[1],$[2]);case 4:return new ae($[0],$[1],$[2],$[3])}var ve=[null];return p(Z,ve,$),new(p(f,ae,ve))}var oe=se.prototype,he=T(y(oe)?oe:F),me=p(ae,he,$);return y(me)?me:he}})},60851:(v,S,i)=>{var r=i(90513),u=i(25401),p=i(77293),f=i(64562),e=i(27029),_=i(25525),y=i(31426);r({target:"Reflect",stat:!0},{get:function T(M,R){var Z,J,F=arguments.length<3?M:arguments[2];return f(M)===F?M[R]:(Z=_.f(M,R))?e(Z)?Z.value:void 0===Z.get?void 0:u(Z.get,F):p(J=y(M))?T(J,R,F):void 0}})},44864:()=>{},97764:(v,S,i)=>{"use strict";var r=i(90513),u=i(23634),p=i(56421),f=i(67917),e=i(41433),_=i(79668),y=u("".indexOf);r({target:"String",proto:!0,forced:!_("includes")},{includes:function(M){return!!~y(e(f(this)),e(p(M)),arguments.length>1?arguments[1]:void 0)}})},3934:(v,S,i)=>{"use strict";var r=i(61557).charAt,u=i(41433),p=i(91093),f=i(32837),e="String Iterator",_=p.set,y=p.getterFor(e);f(String,"String",function(T){_(this,{type:e,string:u(T),index:0})},function(){var Z,M=y(this),R=M.string,F=M.index;return F>=R.length?{value:void 0,done:!0}:(Z=r(R,F),M.index+=Z.length,{value:Z,done:!1})})},3588:(v,S,i)=>{i(90513)({target:"String",proto:!0},{repeat:i(53411)})},24655:(v,S,i)=>{"use strict";var ee,r=i(90513),u=i(23634),p=i(25525).f,f=i(48869),e=i(41433),_=i(56421),y=i(67917),T=i(79668),M=i(81124),R=u("".startsWith),F=u("".slice),Z=Math.min,J=T("startsWith");r({target:"String",proto:!0,forced:!(!M&&!J&&(ee=p(String.prototype,"startsWith"),ee&&!ee.writable)||J)},{startsWith:function(ue){var ae=e(y(this));_(ue);var $=f(Z(arguments.length>1?arguments[1]:void 0,ae.length)),se=e(ue);return R?R(ae,se,$):F(ae,$,$+se.length)===se}})},90451:(v,S,i)=>{"use strict";var r=i(90513),u=i(89858).trim;r({target:"String",proto:!0,forced:i(85462)("trim")},{trim:function(){return u(this)}})},16426:(v,S,i)=>{i(16925)("asyncIterator")},17858:(v,S,i)=>{"use strict";var r=i(90513),u=i(70009),p=i(25401),f=i(23634),e=i(81124),_=i(49642),y=i(29333),T=i(55756),M=i(80112),R=i(23336),F=i(64562),Z=i(81010),J=i(62939),Q=i(41433),ee=i(51361),ue=i(83272),ae=i(28474),$=i(51518),se=i(62469),ve=i(47238),oe=i(25525),he=i(48011),me=i(25913),Oe=i(25558),ce=i(42915),dt=i(64579),ze=i(86066),Ye=i(45599),je=i(13708),Ie=i(91840),Ve=i(89734),He=i(16925),Zt=i(56992),st=i(85681),en=i(91093),$t=i(68607).forEach,Gt=ze("hidden"),Ut="Symbol",Bt="prototype",mt=en.set,Yt=en.getterFor(Ut),Dt=Object[Bt],zt=u.Symbol,Yn=zt&&zt[Bt],Hr=u.TypeError,ci=u.QObject,Ir=oe.f,wr=he.f,Qr=se.f,Kr=Oe.f,In=f([].push),Hn=dt("symbols"),Zr=dt("op-symbols"),Ur=dt("wks"),di=!ci||!ci[Bt]||!ci[Bt].findChild,$i=_&&T(function(){return 7!=ue(wr({},"a",{get:function(){return wr(this,"a",{value:7}).a}})).a})?function(zr,hi,Ai){var Tr=Ir(Dt,hi);Tr&&delete Dt[hi],wr(zr,hi,Ai),Tr&&zr!==Dt&&wr(Dt,hi,Tr)}:wr,Hi=function(zr,hi){var Ai=Hn[zr]=ue(Yn);return mt(Ai,{type:Ut,tag:zr,description:hi}),_||(Ai.description=hi),Ai},Br=function(hi,Ai,Tr){hi===Dt&&Br(Zr,Ai,Tr),F(hi);var Nr=J(Ai);return F(Tr),M(Hn,Nr)?(Tr.enumerable?(M(hi,Gt)&&hi[Gt][Nr]&&(hi[Gt][Nr]=!1),Tr=ue(Tr,{enumerable:ee(0,!1)})):(M(hi,Gt)||wr(hi,Gt,ee(1,{})),hi[Gt][Nr]=!0),$i(hi,Nr,Tr)):wr(hi,Nr,Tr)},On=function(hi,Ai){F(hi);var Tr=Z(Ai),Nr=ae(Tr).concat(Vn(Tr));return $t(Nr,function(gn){(!_||p(Jn,Tr,gn))&&Br(hi,gn,Tr[gn])}),hi},Jn=function(hi){var Ai=J(hi),Tr=p(Kr,this,Ai);return!(this===Dt&&M(Hn,Ai)&&!M(Zr,Ai))&&(!(Tr||!M(this,Ai)||!M(Hn,Ai)||M(this,Gt)&&this[Gt][Ai])||Tr)},ir=function(hi,Ai){var Tr=Z(hi),Nr=J(Ai);if(Tr!==Dt||!M(Hn,Nr)||M(Zr,Nr)){var gn=Ir(Tr,Nr);return gn&&M(Hn,Nr)&&!(M(Tr,Gt)&&Tr[Gt][Nr])&&(gn.enumerable=!0),gn}},Lr=function(hi){var Ai=Qr(Z(hi)),Tr=[];return $t(Ai,function(Nr){!M(Hn,Nr)&&!M(Ye,Nr)&&In(Tr,Nr)}),Tr},Vn=function(zr){var hi=zr===Dt,Ai=Qr(hi?Zr:Z(zr)),Tr=[];return $t(Ai,function(Nr){M(Hn,Nr)&&(!hi||M(Dt,Nr))&&In(Tr,Hn[Nr])}),Tr};y||(ce(Yn=(zt=function(){if(R(Yn,this))throw Hr("Symbol is not a constructor");var hi=arguments.length&&void 0!==arguments[0]?Q(arguments[0]):void 0,Ai=je(hi),Tr=function(Nr){this===Dt&&p(Tr,Zr,Nr),M(this,Gt)&&M(this[Gt],Ai)&&(this[Gt][Ai]=!1),$i(this,Ai,ee(1,Nr))};return _&&di&&$i(Dt,Ai,{configurable:!0,set:Tr}),Hi(Ai,hi)})[Bt],"toString",function(){return Yt(this).tag}),ce(zt,"withoutSetter",function(zr){return Hi(je(zr),zr)}),Oe.f=Jn,he.f=Br,me.f=On,oe.f=ir,$.f=se.f=Lr,ve.f=Vn,Ve.f=function(zr){return Hi(Ie(zr),zr)},_&&(wr(Yn,"description",{configurable:!0,get:function(){return Yt(this).description}}),e||ce(Dt,"propertyIsEnumerable",Jn,{unsafe:!0}))),r({global:!0,constructor:!0,wrap:!0,forced:!y,sham:!y},{Symbol:zt}),$t(ae(Ur),function(zr){He(zr)}),r({target:Ut,stat:!0,forced:!y},{useSetter:function(){di=!0},useSimple:function(){di=!1}}),r({target:"Object",stat:!0,forced:!y,sham:!_},{create:function(hi,Ai){return void 0===Ai?ue(hi):On(ue(hi),Ai)},defineProperty:Br,defineProperties:On,getOwnPropertyDescriptor:ir}),r({target:"Object",stat:!0,forced:!y},{getOwnPropertyNames:Lr}),Zt(),st(zt,Ut),Ye[Gt]=!0},1172:()=>{},12353:(v,S,i)=>{var r=i(90513),u=i(7365),p=i(80112),f=i(41433),e=i(64579),_=i(53900),y=e("string-to-symbol-registry"),T=e("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!_},{for:function(M){var R=f(M);if(p(y,R))return y[R];var F=u("Symbol")(R);return y[R]=F,T[F]=R,F}})},99579:(v,S,i)=>{i(16925)("hasInstance")},41258:(v,S,i)=>{i(16925)("isConcatSpreadable")},2383:(v,S,i)=>{i(16925)("iterator")},56728:(v,S,i)=>{i(17858),i(12353),i(27632),i(75071),i(37764)},27632:(v,S,i)=>{var r=i(90513),u=i(80112),p=i(74717),f=i(7378),e=i(64579),_=i(53900),y=e("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!_},{keyFor:function(M){if(!p(M))throw TypeError(f(M)+" is not a symbol");if(u(y,M))return y[M]}})},64776:(v,S,i)=>{i(16925)("matchAll")},44339:(v,S,i)=>{i(16925)("match")},88215:(v,S,i)=>{i(16925)("replace")},65389:(v,S,i)=>{i(16925)("search")},12733:(v,S,i)=>{i(16925)("species")},97977:(v,S,i)=>{i(16925)("split")},59792:(v,S,i)=>{var r=i(16925),u=i(56992);r("toPrimitive"),u()},60242:(v,S,i)=>{var r=i(7365),u=i(16925),p=i(85681);u("toStringTag"),p(r("Symbol"),"Symbol")},26291:(v,S,i)=>{i(16925)("unscopables")},3119:(v,S,i)=>{"use strict";var Z,r=i(70009),u=i(23634),p=i(84604),f=i(57867),e=i(85116),_=i(84049),y=i(77293),T=i(46401),M=i(91093).enforce,R=i(13179),F=!r.ActiveXObject&&"ActiveXObject"in r,J=function(ve){return function(){return ve(this,arguments.length?arguments[0]:void 0)}},Q=e("WeakMap",J,_);if(R&&F){Z=_.getConstructor(J,"WeakMap",!0),f.enable();var ee=Q.prototype,ue=u(ee.delete),ae=u(ee.has),$=u(ee.get),se=u(ee.set);p(ee,{delete:function(ve){if(y(ve)&&!T(ve)){var oe=M(this);return oe.frozen||(oe.frozen=new Z),ue(this,ve)||oe.frozen.delete(ve)}return ue(this,ve)},has:function(oe){if(y(oe)&&!T(oe)){var he=M(this);return he.frozen||(he.frozen=new Z),ae(this,oe)||he.frozen.has(oe)}return ae(this,oe)},get:function(oe){if(y(oe)&&!T(oe)){var he=M(this);return he.frozen||(he.frozen=new Z),ae(this,oe)?$(this,oe):he.frozen.get(oe)}return $(this,oe)},set:function(oe,he){if(y(oe)&&!T(oe)){var me=M(this);me.frozen||(me.frozen=new Z),ae(this,oe)?se(this,oe,he):me.frozen.set(oe,he)}else se(this,oe,he);return this}})}},90770:(v,S,i)=>{i(3119)},67670:(v,S,i)=>{i(10901)},65237:(v,S,i)=>{i(87404)},10509:(v,S,i)=>{"use strict";i(90513)({target:"Map",proto:!0,real:!0,forced:!0},{deleteAll:i(37353)})},30887:(v,S,i)=>{"use strict";i(90513)({target:"Map",proto:!0,real:!0,forced:!0},{emplace:i(12864)})},54547:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(76781),f=i(37444),e=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{every:function(y){var T=u(this),M=f(T),R=p(y,arguments.length>1?arguments[1]:void 0);return!e(M,function(F,Z,J){if(!R(Z,F,T))return J()},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}})},68996:(v,S,i)=>{"use strict";var r=i(90513),u=i(7365),p=i(76781),f=i(25401),e=i(61812),_=i(64562),y=i(95869),T=i(37444),M=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(F){var Z=_(this),J=T(Z),Q=p(F,arguments.length>1?arguments[1]:void 0),ee=new(y(Z,u("Map"))),ue=e(ee.set);return M(J,function(ae,$){Q($,ae,Z)&&f(ue,ee,ae,$)},{AS_ENTRIES:!0,IS_ITERATOR:!0}),ee}})},60176:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(76781),f=i(37444),e=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(y){var T=u(this),M=f(T),R=p(y,arguments.length>1?arguments[1]:void 0);return e(M,function(F,Z,J){if(R(Z,F,T))return J(F)},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}})},1530:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(76781),f=i(37444),e=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{find:function(y){var T=u(this),M=f(T),R=p(y,arguments.length>1?arguments[1]:void 0);return e(M,function(F,Z,J){if(R(Z,F,T))return J(Z)},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}})},78271:(v,S,i)=>{i(90513)({target:"Map",stat:!0,forced:!0},{from:i(83483)})},41554:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(23634),f=i(61812),e=i(88055),_=i(41605),y=p([].push);r({target:"Map",stat:!0,forced:!0},{groupBy:function(M,R){f(R);var F=e(M),Z=new this,J=f(Z.has),Q=f(Z.get),ee=f(Z.set);return _(F,function(ue){var ae=R(ue);u(J,Z,ae)?y(u(Q,Z,ae),ue):u(ee,Z,ae,[ue])},{IS_ITERATOR:!0}),Z}})},41688:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(37444),f=i(29627),e=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(y){return e(p(u(this)),function(T,M,R){if(f(M,y))return R()},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}})},92847:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(41605),f=i(61812);r({target:"Map",stat:!0,forced:!0},{keyBy:function(_,y){var T=new this;f(y);var M=f(T.set);return p(_,function(R){u(M,T,y(R),R)}),T}})},17316:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(37444),f=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(_){return f(p(u(this)),function(y,T,M){if(T===_)return M(y)},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}})},58786:(v,S,i)=>{"use strict";var r=i(90513),u=i(7365),p=i(76781),f=i(25401),e=i(61812),_=i(64562),y=i(95869),T=i(37444),M=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(F){var Z=_(this),J=T(Z),Q=p(F,arguments.length>1?arguments[1]:void 0),ee=new(y(Z,u("Map"))),ue=e(ee.set);return M(J,function(ae,$){f(ue,ee,Q($,ae,Z),$)},{AS_ENTRIES:!0,IS_ITERATOR:!0}),ee}})},35517:(v,S,i)=>{"use strict";var r=i(90513),u=i(7365),p=i(76781),f=i(25401),e=i(61812),_=i(64562),y=i(95869),T=i(37444),M=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(F){var Z=_(this),J=T(Z),Q=p(F,arguments.length>1?arguments[1]:void 0),ee=new(y(Z,u("Map"))),ue=e(ee.set);return M(J,function(ae,$){f(ue,ee,ae,Q($,ae,Z))},{AS_ENTRIES:!0,IS_ITERATOR:!0}),ee}})},12783:(v,S,i)=>{"use strict";var r=i(90513),u=i(61812),p=i(64562),f=i(41605);r({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(_){for(var y=p(this),T=u(y.set),M=arguments.length,R=0;R<M;)f(arguments[R++],T,{that:y,AS_ENTRIES:!0});return y}})},60854:(v,S,i)=>{i(90513)({target:"Map",stat:!0,forced:!0},{of:i(13067)})},69773:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(61812),f=i(37444),e=i(41605),_=TypeError;r({target:"Map",proto:!0,real:!0,forced:!0},{reduce:function(T){var M=u(this),R=f(M),F=arguments.length<2,Z=F?void 0:arguments[1];if(p(T),e(R,function(J,Q){F?(F=!1,Z=Q):Z=T(Z,Q,J,M)},{AS_ENTRIES:!0,IS_ITERATOR:!0}),F)throw _("Reduce of empty map with no initial value");return Z}})},22337:(v,S,i)=>{"use strict";var r=i(90513),u=i(64562),p=i(76781),f=i(37444),e=i(41605);r({target:"Map",proto:!0,real:!0,forced:!0},{some:function(y){var T=u(this),M=f(T),R=p(y,arguments.length>1?arguments[1]:void 0);return e(M,function(F,Z,J){if(R(Z,F,T))return J()},{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}})},84131:(v,S,i)=>{"use strict";i(90513)({target:"Map",proto:!0,real:!0,name:"upsert",forced:!0},{updateOrInsert:i(57729)})},40199:(v,S,i)=>{"use strict";var r=i(90513),u=i(25401),p=i(64562),f=i(61812),e=TypeError;r({target:"Map",proto:!0,real:!0,forced:!0},{update:function(y,T){var M=p(this),R=f(M.get),F=f(M.has),Z=f(M.set),J=arguments.length;f(T);var Q=u(F,M,y);if(!Q&&J<3)throw e("Updating absent value");var ee=Q?u(R,M,y):f(J>2?arguments[2]:void 0)(y,M);return u(Z,M,y,T(ee,y,M)),M}})},69046:(v,S,i)=>{"use strict";i(90513)({target:"Map",proto:!0,real:!0,forced:!0},{upsert:i(57729)})},61127:(v,S,i)=>{i(84798)},45975:(v,S,i)=>{i(98857)},93114:(v,S,i)=>{"use strict";var r=i(90513),u=i(54256),p=i(26975);r({target:"Promise",stat:!0,forced:!0},{try:function(f){var e=u.f(this),_=p(f);return(_.error?e.reject:e.resolve)(_.value),e.promise}})},55461:(v,S,i)=>{i(16925)("asyncDispose")},5737:(v,S,i)=>{i(16925)("dispose")},87097:(v,S,i)=>{i(16925)("matcher")},29559:(v,S,i)=>{i(16925)("metadataKey")},71985:(v,S,i)=>{i(16925)("metadata")},90212:(v,S,i)=>{i(16925)("observable")},93770:(v,S,i)=>{i(16925)("patternMatch")},47743:(v,S,i)=>{i(16925)("replaceAll")},33089:(v,S,i)=>{i(1285);var r=i(44125),u=i(70009),p=i(35329),f=i(65162),e=i(84394),y=i(91840)("toStringTag");for(var T in r){var M=u[T],R=M&&M.prototype;R&&p(R)!==y&&f(R,y,T),e[T]=e.Array}},94784:(v,S,i)=>{var r=i(90513),u=i(70009),p=i(53814).setInterval;r({global:!0,bind:!0,forced:u.setInterval!==p},{setInterval:p})},36445:(v,S,i)=>{var r=i(90513),u=i(70009),p=i(53814).setTimeout;r({global:!0,bind:!0,forced:u.setTimeout!==p},{setTimeout:p})},69280:(v,S,i)=>{i(94784),i(36445)},73842:(v,S,i)=>{"use strict";i(1285);var r=i(90513),u=i(70009),p=i(25401),f=i(23634),e=i(49642),_=i(29407),y=i(42915),T=i(84604),M=i(85681),R=i(65297),F=i(91093),Z=i(54849),J=i(52208),Q=i(80112),ee=i(76781),ue=i(35329),ae=i(64562),$=i(77293),se=i(41433),ve=i(83272),oe=i(51361),he=i(88055),me=i(34014),Oe=i(15086),ce=i(91840),dt=i(84865),ze=ce("iterator"),Ye="URLSearchParams",je=Ye+"Iterator",Ie=F.set,Ve=F.getterFor(Ye),He=F.getterFor(je),Zt=Object.getOwnPropertyDescriptor,st=function(Nr){if(!e)return u[Nr];var gn=Zt(u,Nr);return gn&&gn.value},en=st("fetch"),$t=st("Request"),Gt=st("Headers"),Ut=$t&&$t.prototype,Bt=Gt&&Gt.prototype,mt=u.RegExp,Yt=u.TypeError,Dt=u.decodeURIComponent,zt=u.encodeURIComponent,Yn=f("".charAt),Hr=f([].join),ci=f([].push),Ir=f("".replace),wr=f([].shift),Qr=f([].splice),Kr=f("".split),In=f("".slice),Hn=/\+/g,Zr=Array(4),Ur=function(Nr){return Zr[Nr-1]||(Zr[Nr-1]=mt("((?:%[\\da-f]{2}){"+Nr+"})","gi"))},di=function(Nr){try{return Dt(Nr)}catch(gn){return Nr}},$i=function(Nr){var gn=Ir(Nr,Hn," "),En=4;try{return Dt(gn)}catch(mr){for(;En;)gn=Ir(gn,Ur(En--),di);return gn}},Hi=/[!'()~]|%20/g,Br={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},On=function(Nr){return Br[Nr]},Wt=function(Nr){return Ir(zt(Nr),Hi,On)},Jn=R(function(gn,En){Ie(this,{type:je,iterator:he(Ve(gn).entries),kind:En})},"Iterator",function(){var gn=He(this),En=gn.kind,mr=gn.iterator.next(),Xt=mr.value;return mr.done||(mr.value="keys"===En?Xt.key:"values"===En?Xt.value:[Xt.key,Xt.value]),mr},!0),ir=function(Nr){this.entries=[],this.url=null,void 0!==Nr&&($(Nr)?this.parseObject(Nr):this.parseQuery("string"==typeof Nr?"?"===Yn(Nr,0)?In(Nr,1):Nr:se(Nr)))};ir.prototype={type:Ye,bindURL:function(Nr){this.url=Nr,this.update()},parseObject:function(Nr){var En,mr,Xt,zn,vr,si,Ii,gn=me(Nr);if(gn)for(mr=(En=he(Nr,gn)).next;!(Xt=p(mr,En)).done;){if(zn=he(ae(Xt.value)),(si=p(vr=zn.next,zn)).done||(Ii=p(vr,zn)).done||!p(vr,zn).done)throw Yt("Expected sequence with length 2");ci(this.entries,{key:se(si.value),value:se(Ii.value)})}else for(var no in Nr)Q(Nr,no)&&ci(this.entries,{key:no,value:se(Nr[no])})},parseQuery:function(Nr){if(Nr)for(var mr,Xt,gn=Kr(Nr,"&"),En=0;En<gn.length;)(mr=gn[En++]).length&&(Xt=Kr(mr,"="),ci(this.entries,{key:$i(wr(Xt)),value:$i(Hr(Xt,"="))}))},serialize:function(){for(var mr,Nr=this.entries,gn=[],En=0;En<Nr.length;)mr=Nr[En++],ci(gn,Wt(mr.key)+"="+Wt(mr.value));return Hr(gn,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var Lr=function(){Z(this,Vn);var gn=arguments.length>0?arguments[0]:void 0;Ie(this,new ir(gn))},Vn=Lr.prototype;if(T(Vn,{append:function(gn,En){Oe(arguments.length,2);var mr=Ve(this);ci(mr.entries,{key:se(gn),value:se(En)}),mr.updateURL()},delete:function(Nr){Oe(arguments.length,1);for(var gn=Ve(this),En=gn.entries,mr=se(Nr),Xt=0;Xt<En.length;)En[Xt].key===mr?Qr(En,Xt,1):Xt++;gn.updateURL()},get:function(gn){Oe(arguments.length,1);for(var En=Ve(this).entries,mr=se(gn),Xt=0;Xt<En.length;Xt++)if(En[Xt].key===mr)return En[Xt].value;return null},getAll:function(gn){Oe(arguments.length,1);for(var En=Ve(this).entries,mr=se(gn),Xt=[],zn=0;zn<En.length;zn++)En[zn].key===mr&&ci(Xt,En[zn].value);return Xt},has:function(gn){Oe(arguments.length,1);for(var En=Ve(this).entries,mr=se(gn),Xt=0;Xt<En.length;)if(En[Xt++].key===mr)return!0;return!1},set:function(gn,En){Oe(arguments.length,1);for(var no,mr=Ve(this),Xt=mr.entries,zn=!1,vr=se(gn),si=se(En),Ii=0;Ii<Xt.length;Ii++)(no=Xt[Ii]).key===vr&&(zn?Qr(Xt,Ii--,1):(zn=!0,no.value=si));zn||ci(Xt,{key:vr,value:si}),mr.updateURL()},sort:function(){var gn=Ve(this);dt(gn.entries,function(En,mr){return En.key>mr.key?1:-1}),gn.updateURL()},forEach:function(gn){for(var zn,En=Ve(this).entries,mr=ee(gn,arguments.length>1?arguments[1]:void 0),Xt=0;Xt<En.length;)mr((zn=En[Xt++]).value,zn.key,this)},keys:function(){return new Jn(this,"keys")},values:function(){return new Jn(this,"values")},entries:function(){return new Jn(this,"entries")}},{enumerable:!0}),y(Vn,ze,Vn.entries,{name:"entries"}),y(Vn,"toString",function(){return Ve(this).serialize()},{enumerable:!0}),M(Lr,Ye),r({global:!0,constructor:!0,forced:!_},{URLSearchParams:Lr}),!_&&J(Gt)){var zr=f(Bt.has),hi=f(Bt.set),Ai=function(Nr){if($(Nr)){var En,gn=Nr.body;if(ue(gn)===Ye)return En=Nr.headers?new Gt(Nr.headers):new Gt,zr(En,"content-type")||hi(En,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),ve(Nr,{body:oe(0,se(gn)),headers:oe(0,En)})}return Nr};if(J(en)&&r({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(gn){return en(gn,arguments.length>1?Ai(arguments[1]):{})}}),J($t)){var Tr=function(gn){return Z(this,Ut),new $t(gn,arguments.length>1?Ai(arguments[1]):{})};Ut.constructor=Tr,Tr.prototype=Ut,r({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Tr})}}v.exports={URLSearchParams:Lr,getState:Ve}},26953:(v,S,i)=>{i(73842)},80504:(v,S,i)=>{"use strict";i(3934);var Hi,r=i(90513),u=i(49642),p=i(29407),f=i(70009),e=i(76781),_=i(23634),y=i(42915),T=i(1707),M=i(54849),R=i(80112),F=i(75791),Z=i(51923),J=i(8681),Q=i(61557).codeAt,ee=i(26662),ue=i(41433),ae=i(85681),$=i(15086),se=i(73842),ve=i(91093),oe=ve.set,he=ve.getterFor("URL"),me=se.URLSearchParams,Oe=se.getState,ce=f.URL,dt=f.TypeError,ze=f.parseInt,Ye=Math.floor,je=Math.pow,Ie=_("".charAt),Ve=_(/./.exec),He=_([].join),Zt=_(1..toString),st=_([].pop),en=_([].push),$t=_("".replace),Gt=_([].shift),Ut=_("".split),Bt=_("".slice),mt=_("".toLowerCase),Yt=_([].unshift),zt="Invalid scheme",Yn="Invalid host",Hr="Invalid port",ci=/[a-z]/i,Ir=/[\d+-.a-z]/i,wr=/\d/,Qr=/^0x/i,Kr=/^[0-7]+$/,In=/^\d+$/,Hn=/^[\da-f]+$/i,Zr=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Ur=/[\0\t\n\r #/:<>?@[\\\]^|]/,di=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,$i=/[\t\n\r]/g,Jn=function(Zn){var cr,yr,rr,ri;if("number"==typeof Zn){for(cr=[],yr=0;yr<4;yr++)Yt(cr,Zn%256),Zn=Ye(Zn/256);return He(cr,".")}if("object"==typeof Zn){for(cr="",rr=function(Zn){for(var cr=null,yr=1,rr=null,ri=0,ho=0;ho<8;ho++)0!==Zn[ho]?(ri>yr&&(cr=rr,yr=ri),rr=null,ri=0):(null===rr&&(rr=ho),++ri);return ri>yr&&(cr=rr,yr=ri),cr}(Zn),yr=0;yr<8;yr++)ri&&0===Zn[yr]||(ri&&(ri=!1),rr===yr?(cr+=yr?":":"::",ri=!0):(cr+=Zt(Zn[yr],16),yr<7&&(cr+=":")));return"["+cr+"]"}return Zn},ir={},Lr=F({},ir,{" ":1,'"':1,"<":1,">":1,"`":1}),Vn=F({},Lr,{"#":1,"?":1,"{":1,"}":1}),zr=F({},Vn,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),hi=function(Zn,cr){var yr=Q(Zn,0);return yr>32&&yr<127&&!R(cr,Zn)?Zn:encodeURIComponent(Zn)},Ai={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Tr=function(Zn,cr){var yr;return 2==Zn.length&&Ve(ci,Ie(Zn,0))&&(":"==(yr=Ie(Zn,1))||!cr&&"|"==yr)},Nr=function(Zn){var cr;return Zn.length>1&&Tr(Bt(Zn,0,2))&&(2==Zn.length||"/"===(cr=Ie(Zn,2))||"\\"===cr||"?"===cr||"#"===cr)},gn=function(Zn){return"."===Zn||"%2e"===mt(Zn)},En=function(Zn){return".."===(Zn=mt(Zn))||"%2e."===Zn||".%2e"===Zn||"%2e%2e"===Zn},mr={},Xt={},zn={},vr={},si={},Ii={},no={},so={},Ze={},Dr={},jt={},xt={},mn={},Wn={},kn={},wn={},nr={},Gi={},po={},yo={},Mo={},Vi=function(Zn,cr,yr){var ri,ho,Ti,rr=ue(Zn);if(cr){if(ho=this.parse(rr))throw dt(ho);this.searchParams=null}else{if(void 0!==yr&&(ri=new Vi(yr,!0)),ho=this.parse(rr,null,ri))throw dt(ho);(Ti=Oe(new me)).bindURL(this),this.searchParams=Ti}};Vi.prototype={type:"URL",parse:function(Zn,cr,yr){var ar,ln,Ht,cn,rr=this,ri=cr||mr,ho=0,Ti="",Bo=!1,xo=!1,Li=!1;for(Zn=ue(Zn),cr||(rr.scheme="",rr.username="",rr.password="",rr.host=null,rr.port=null,rr.path=[],rr.query=null,rr.fragment=null,rr.cannotBeABaseURL=!1,Zn=$t(Zn,di,"")),Zn=$t(Zn,$i,""),ar=Z(Zn);ho<=ar.length;){switch(ln=ar[ho],ri){case mr:if(!ln||!Ve(ci,ln)){if(cr)return zt;ri=zn;continue}Ti+=mt(ln),ri=Xt;break;case Xt:if(ln&&(Ve(Ir,ln)||"+"==ln||"-"==ln||"."==ln))Ti+=mt(ln);else{if(":"!=ln){if(cr)return zt;Ti="",ri=zn,ho=0;continue}if(cr&&(rr.isSpecial()!=R(Ai,Ti)||"file"==Ti&&(rr.includesCredentials()||null!==rr.port)||"file"==rr.scheme&&!rr.host))return;if(rr.scheme=Ti,cr)return void(rr.isSpecial()&&Ai[rr.scheme]==rr.port&&(rr.port=null));Ti="","file"==rr.scheme?ri=Wn:rr.isSpecial()&&yr&&yr.scheme==rr.scheme?ri=vr:rr.isSpecial()?ri=so:"/"==ar[ho+1]?(ri=si,ho++):(rr.cannotBeABaseURL=!0,en(rr.path,""),ri=po)}break;case zn:if(!yr||yr.cannotBeABaseURL&&"#"!=ln)return zt;if(yr.cannotBeABaseURL&&"#"==ln){rr.scheme=yr.scheme,rr.path=J(yr.path),rr.query=yr.query,rr.fragment="",rr.cannotBeABaseURL=!0,ri=Mo;break}ri="file"==yr.scheme?Wn:Ii;continue;case vr:if("/"!=ln||"/"!=ar[ho+1]){ri=Ii;continue}ri=Ze,ho++;break;case si:if("/"==ln){ri=Dr;break}ri=Gi;continue;case Ii:if(rr.scheme=yr.scheme,ln==Hi)rr.username=yr.username,rr.password=yr.password,rr.host=yr.host,rr.port=yr.port,rr.path=J(yr.path),rr.query=yr.query;else if("/"==ln||"\\"==ln&&rr.isSpecial())ri=no;else if("?"==ln)rr.username=yr.username,rr.password=yr.password,rr.host=yr.host,rr.port=yr.port,rr.path=J(yr.path),rr.query="",ri=yo;else{if("#"!=ln){rr.username=yr.username,rr.password=yr.password,rr.host=yr.host,rr.port=yr.port,rr.path=J(yr.path),rr.path.length--,ri=Gi;continue}rr.username=yr.username,rr.password=yr.password,rr.host=yr.host,rr.port=yr.port,rr.path=J(yr.path),rr.query=yr.query,rr.fragment="",ri=Mo}break;case no:if(!rr.isSpecial()||"/"!=ln&&"\\"!=ln){if("/"!=ln){rr.username=yr.username,rr.password=yr.password,rr.host=yr.host,rr.port=yr.port,ri=Gi;continue}ri=Dr}else ri=Ze;break;case so:if(ri=Ze,"/"!=ln||"/"!=Ie(Ti,ho+1))continue;ho++;break;case Ze:if("/"!=ln&&"\\"!=ln){ri=Dr;continue}break;case Dr:if("@"==ln){Bo&&(Ti="%40"+Ti),Bo=!0,Ht=Z(Ti);for(var Ct=0;Ct<Ht.length;Ct++){var pr=Ht[Ct];if(":"!=pr||Li){var nn=hi(pr,zr);Li?rr.password+=nn:rr.username+=nn}else Li=!0}Ti=""}else if(ln==Hi||"/"==ln||"?"==ln||"#"==ln||"\\"==ln&&rr.isSpecial()){if(Bo&&""==Ti)return"Invalid authority";ho-=Z(Ti).length+1,Ti="",ri=jt}else Ti+=ln;break;case jt:case xt:if(cr&&"file"==rr.scheme){ri=wn;continue}if(":"!=ln||xo){if(ln==Hi||"/"==ln||"?"==ln||"#"==ln||"\\"==ln&&rr.isSpecial()){if(rr.isSpecial()&&""==Ti)return Yn;if(cr&&""==Ti&&(rr.includesCredentials()||null!==rr.port))return;if(cn=rr.parseHost(Ti))return cn;if(Ti="",ri=nr,cr)return;continue}"["==ln?xo=!0:"]"==ln&&(xo=!1),Ti+=ln}else{if(""==Ti)return Yn;if(cn=rr.parseHost(Ti))return cn;if(Ti="",ri=mn,cr==xt)return}break;case mn:if(!Ve(wr,ln)){if(ln==Hi||"/"==ln||"?"==ln||"#"==ln||"\\"==ln&&rr.isSpecial()||cr){if(""!=Ti){var Cn=ze(Ti,10);if(Cn>65535)return Hr;rr.port=rr.isSpecial()&&Cn===Ai[rr.scheme]?null:Cn,Ti=""}if(cr)return;ri=nr;continue}return Hr}Ti+=ln;break;case Wn:if(rr.scheme="file","/"==ln||"\\"==ln)ri=kn;else{if(!yr||"file"!=yr.scheme){ri=Gi;continue}if(ln==Hi)rr.host=yr.host,rr.path=J(yr.path),rr.query=yr.query;else if("?"==ln)rr.host=yr.host,rr.path=J(yr.path),rr.query="",ri=yo;else{if("#"!=ln){Nr(He(J(ar,ho),""))||(rr.host=yr.host,rr.path=J(yr.path),rr.shortenPath()),ri=Gi;continue}rr.host=yr.host,rr.path=J(yr.path),rr.query=yr.query,rr.fragment="",ri=Mo}}break;case kn:if("/"==ln||"\\"==ln){ri=wn;break}yr&&"file"==yr.scheme&&!Nr(He(J(ar,ho),""))&&(Tr(yr.path[0],!0)?en(rr.path,yr.path[0]):rr.host=yr.host),ri=Gi;continue;case wn:if(ln==Hi||"/"==ln||"\\"==ln||"?"==ln||"#"==ln){if(!cr&&Tr(Ti))ri=Gi;else if(""==Ti){if(rr.host="",cr)return;ri=nr}else{if(cn=rr.parseHost(Ti))return cn;if("localhost"==rr.host&&(rr.host=""),cr)return;Ti="",ri=nr}continue}Ti+=ln;break;case nr:if(rr.isSpecial()){if(ri=Gi,"/"!=ln&&"\\"!=ln)continue}else if(cr||"?"!=ln)if(cr||"#"!=ln){if(ln!=Hi&&(ri=Gi,"/"!=ln))continue}else rr.fragment="",ri=Mo;else rr.query="",ri=yo;break;case Gi:if(ln==Hi||"/"==ln||"\\"==ln&&rr.isSpecial()||!cr&&("?"==ln||"#"==ln)){if(En(Ti)?(rr.shortenPath(),"/"!=ln&&!("\\"==ln&&rr.isSpecial())&&en(rr.path,"")):gn(Ti)?"/"!=ln&&!("\\"==ln&&rr.isSpecial())&&en(rr.path,""):("file"==rr.scheme&&!rr.path.length&&Tr(Ti)&&(rr.host&&(rr.host=""),Ti=Ie(Ti,0)+":"),en(rr.path,Ti)),Ti="","file"==rr.scheme&&(ln==Hi||"?"==ln||"#"==ln))for(;rr.path.length>1&&""===rr.path[0];)Gt(rr.path);"?"==ln?(rr.query="",ri=yo):"#"==ln&&(rr.fragment="",ri=Mo)}else Ti+=hi(ln,Vn);break;case po:"?"==ln?(rr.query="",ri=yo):"#"==ln?(rr.fragment="",ri=Mo):ln!=Hi&&(rr.path[0]+=hi(ln,ir));break;case yo:cr||"#"!=ln?ln!=Hi&&("'"==ln&&rr.isSpecial()?rr.query+="%27":rr.query+="#"==ln?"%23":hi(ln,ir)):(rr.fragment="",ri=Mo);break;case Mo:ln!=Hi&&(rr.fragment+=hi(ln,Lr))}ho++}},parseHost:function(Zn){var cr,yr,rr;if("["==Ie(Zn,0)){if("]"!=Ie(Zn,Zn.length-1)||!(cr=function(Zn){var ho,Ti,Bo,xo,Li,ar,ln,cr=[0,0,0,0,0,0,0,0],yr=0,rr=null,ri=0,Ht=function(){return Ie(Zn,ri)};if(":"==Ht()){if(":"!=Ie(Zn,1))return;ri+=2,rr=++yr}for(;Ht();){if(8==yr)return;if(":"!=Ht()){for(ho=Ti=0;Ti<4&&Ve(Hn,Ht());)ho=16*ho+ze(Ht(),16),ri++,Ti++;if("."==Ht()){if(0==Ti||(ri-=Ti,yr>6))return;for(Bo=0;Ht();){if(xo=null,Bo>0){if(!("."==Ht()&&Bo<4))return;ri++}if(!Ve(wr,Ht()))return;for(;Ve(wr,Ht());){if(Li=ze(Ht(),10),null===xo)xo=Li;else{if(0==xo)return;xo=10*xo+Li}if(xo>255)return;ri++}cr[yr]=256*cr[yr]+xo,(2==++Bo||4==Bo)&&yr++}if(4!=Bo)return;break}if(":"==Ht()){if(ri++,!Ht())return}else if(Ht())return;cr[yr++]=ho}else{if(null!==rr)return;ri++,rr=++yr}}if(null!==rr)for(ar=yr-rr,yr=7;0!=yr&&ar>0;)ln=cr[yr],cr[yr--]=cr[rr+ar-1],cr[rr+--ar]=ln;else if(8!=yr)return;return cr}(Bt(Zn,1,-1))))return Yn;this.host=cr}else if(this.isSpecial()){if(Zn=ee(Zn),Ve(Zr,Zn)||null===(cr=function(Zn){var yr,rr,ri,ho,Ti,Bo,xo,cr=Ut(Zn,".");if(cr.length&&""==cr[cr.length-1]&&cr.length--,(yr=cr.length)>4)return Zn;for(rr=[],ri=0;ri<yr;ri++){if(""==(ho=cr[ri]))return Zn;if(Ti=10,ho.length>1&&"0"==Ie(ho,0)&&(Ti=Ve(Qr,ho)?16:8,ho=Bt(ho,8==Ti?1:2)),""===ho)Bo=0;else{if(!Ve(10==Ti?In:8==Ti?Kr:Hn,ho))return Zn;Bo=ze(ho,Ti)}en(rr,Bo)}for(ri=0;ri<yr;ri++)if(Bo=rr[ri],ri==yr-1){if(Bo>=je(256,5-yr))return null}else if(Bo>255)return null;for(xo=st(rr),ri=0;ri<rr.length;ri++)xo+=rr[ri]*je(256,3-ri);return xo}(Zn)))return Yn;this.host=cr}else{if(Ve(Ur,Zn))return Yn;for(cr="",yr=Z(Zn),rr=0;rr<yr.length;rr++)cr+=hi(yr[rr],ir);this.host=cr}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return R(Ai,this.scheme)},shortenPath:function(){var Zn=this.path,cr=Zn.length;cr&&("file"!=this.scheme||1!=cr||!Tr(Zn[0],!0))&&Zn.length--},serialize:function(){var Zn=this,cr=Zn.scheme,yr=Zn.username,rr=Zn.password,ri=Zn.host,ho=Zn.port,Ti=Zn.path,Bo=Zn.query,xo=Zn.fragment,Li=cr+":";return null!==ri?(Li+="//",Zn.includesCredentials()&&(Li+=yr+(rr?":"+rr:"")+"@"),Li+=Jn(ri),null!==ho&&(Li+=":"+ho)):"file"==cr&&(Li+="//"),Li+=Zn.cannotBeABaseURL?Ti[0]:Ti.length?"/"+He(Ti,"/"):"",null!==Bo&&(Li+="?"+Bo),null!==xo&&(Li+="#"+xo),Li},setHref:function(Zn){var cr=this.parse(Zn);if(cr)throw dt(cr);this.searchParams.update()},getOrigin:function(){var Zn=this.scheme,cr=this.port;if("blob"==Zn)try{return new cs(Zn.path[0]).origin}catch(yr){return"null"}return"file"!=Zn&&this.isSpecial()?Zn+"://"+Jn(this.host)+(null!==cr?":"+cr:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(Zn){this.parse(ue(Zn)+":",mr)},getUsername:function(){return this.username},setUsername:function(Zn){var cr=Z(ue(Zn));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var yr=0;yr<cr.length;yr++)this.username+=hi(cr[yr],zr)}},getPassword:function(){return this.password},setPassword:function(Zn){var cr=Z(ue(Zn));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var yr=0;yr<cr.length;yr++)this.password+=hi(cr[yr],zr)}},getHost:function(){var Zn=this.host,cr=this.port;return null===Zn?"":null===cr?Jn(Zn):Jn(Zn)+":"+cr},setHost:function(Zn){this.cannotBeABaseURL||this.parse(Zn,jt)},getHostname:function(){var Zn=this.host;return null===Zn?"":Jn(Zn)},setHostname:function(Zn){this.cannotBeABaseURL||this.parse(Zn,xt)},getPort:function(){var Zn=this.port;return null===Zn?"":ue(Zn)},setPort:function(Zn){this.cannotHaveUsernamePasswordPort()||(""==(Zn=ue(Zn))?this.port=null:this.parse(Zn,mn))},getPathname:function(){var Zn=this.path;return this.cannotBeABaseURL?Zn[0]:Zn.length?"/"+He(Zn,"/"):""},setPathname:function(Zn){this.cannotBeABaseURL||(this.path=[],this.parse(Zn,nr))},getSearch:function(){var Zn=this.query;return Zn?"?"+Zn:""},setSearch:function(Zn){""==(Zn=ue(Zn))?this.query=null:("?"==Ie(Zn,0)&&(Zn=Bt(Zn,1)),this.query="",this.parse(Zn,yo)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var Zn=this.fragment;return Zn?"#"+Zn:""},setHash:function(Zn){""!=(Zn=ue(Zn))?("#"==Ie(Zn,0)&&(Zn=Bt(Zn,1)),this.fragment="",this.parse(Zn,Mo)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var cs=function(cr){var yr=M(this,zo),rr=$(arguments.length,1)>1?arguments[1]:void 0,ri=oe(yr,new Vi(cr,!1,rr));u||(yr.href=ri.serialize(),yr.origin=ri.getOrigin(),yr.protocol=ri.getProtocol(),yr.username=ri.getUsername(),yr.password=ri.getPassword(),yr.host=ri.getHost(),yr.hostname=ri.getHostname(),yr.port=ri.getPort(),yr.pathname=ri.getPathname(),yr.search=ri.getSearch(),yr.searchParams=ri.getSearchParams(),yr.hash=ri.getHash())},zo=cs.prototype,So=function(Zn,cr){return{get:function(){return he(this)[Zn]()},set:cr&&function(yr){return he(this)[cr](yr)},configurable:!0,enumerable:!0}};if(u&&(T(zo,"href",So("serialize","setHref")),T(zo,"origin",So("getOrigin")),T(zo,"protocol",So("getProtocol","setProtocol")),T(zo,"username",So("getUsername","setUsername")),T(zo,"password",So("getPassword","setPassword")),T(zo,"host",So("getHost","setHost")),T(zo,"hostname",So("getHostname","setHostname")),T(zo,"port",So("getPort","setPort")),T(zo,"pathname",So("getPathname","setPathname")),T(zo,"search",So("getSearch","setSearch")),T(zo,"searchParams",So("getSearchParams")),T(zo,"hash",So("getHash","setHash"))),y(zo,"toJSON",function(){return he(this).serialize()},{enumerable:!0}),y(zo,"toString",function(){return he(this).serialize()},{enumerable:!0}),ce){var Si=ce.createObjectURL,ai=ce.revokeObjectURL;Si&&y(cs,"createObjectURL",e(Si,ce)),ai&&y(cs,"revokeObjectURL",e(ai,ce))}ae(cs,"URL"),r({global:!0,constructor:!0,forced:!p,sham:!u},{URL:cs})},95981:(v,S,i)=>{i(80504)},71324:()=>{},75242:(v,S,i)=>{var r=i(74771);v.exports=r},10323:(v,S,i)=>{var r=i(8412);v.exports=r},99940:(v,S,i)=>{var r=i(399);v.exports=r},89919:(v,S,i)=>{var r=i(98812);v.exports=r},14869:(v,S,i)=>{var r=i(33195);v.exports=r},4475:(v,S,i)=>{var r=i(46332);v.exports=r},38762:(v,S,i)=>{var r=i(42618);v.exports=r},8748:(v,S,i)=>{var r=i(63791);i(33089),v.exports=r},47506:(v,S,i)=>{var r=i(27959);v.exports=r},71873:(v,S,i)=>{var r=i(69029);v.exports=r},61599:(v,S,i)=>{var r=i(28924);v.exports=r},34097:(v,S,i)=>{i(33089);var r=i(35329),u=i(80112),p=i(23336),f=i(99940),e=Array.prototype,_={DOMTokenList:!0,NodeList:!0};v.exports=function(y){var T=y.entries;return y===e||p(e,y)&&T===e.entries||u(_,r(y))?f:T}},15149:(v,S,i)=>{var r=i(98709);v.exports=r},83361:(v,S,i)=>{var r=i(65991);v.exports=r},19095:(v,S,i)=>{var r=i(64158);v.exports=r},71420:(v,S,i)=>{var r=i(91799);v.exports=r},13178:(v,S,i)=>{var r=i(26155);v.exports=r},52049:(v,S,i)=>{i(33089);var r=i(35329),u=i(80112),p=i(23336),f=i(89919),e=Array.prototype,_={DOMTokenList:!0,NodeList:!0};v.exports=function(y){var T=y.forEach;return y===e||p(e,y)&&T===e.forEach||u(_,r(y))?f:T}},83655:(v,S,i)=>{var r=i(33758);v.exports=r},87054:(v,S,i)=>{var r=i(7592);v.exports=r},51946:(v,S,i)=>{i(33089);var r=i(35329),u=i(80112),p=i(23336),f=i(14869),e=Array.prototype,_={DOMTokenList:!0,NodeList:!0};v.exports=function(y){var T=y.keys;return y===e||p(e,y)&&T===e.keys||u(_,r(y))?f:T}},40764:(v,S,i)=>{var r=i(17480);v.exports=r},81214:(v,S,i)=>{var r=i(20681);v.exports=r},50881:(v,S,i)=>{var r=i(90949);v.exports=r},38813:(v,S,i)=>{var r=i(99316);v.exports=r},45284:(v,S,i)=>{var r=i(62212);v.exports=r},70157:(v,S,i)=>{var r=i(49073);v.exports=r},3502:(v,S,i)=>{var r=i(24146);v.exports=r},81610:(v,S,i)=>{var r=i(40104);v.exports=r},19543:(v,S,i)=>{var r=i(3555);v.exports=r},74046:(v,S,i)=>{var r=i(68333);v.exports=r},13731:(v,S,i)=>{var r=i(65786);v.exports=r},80129:(v,S,i)=>{i(33089);var r=i(35329),u=i(80112),p=i(23336),f=i(4475),e=Array.prototype,_={DOMTokenList:!0,NodeList:!0};v.exports=function(y){var T=y.values;return y===e||p(e,y)&&T===e.values||u(_,r(y))?f:T}},43720:(v,S,i)=>{var r=i(66306);v.exports=r},640:(v,S,i)=>{var r=i(31845);i(33089),v.exports=r},50320:(v,S,i)=>{var r=i(44168);v.exports=r},93006:(v,S,i)=>{var r=i(25852);v.exports=r},36226:(v,S,i)=>{var r=i(24457);v.exports=r},21968:(v,S,i)=>{var r=i(99671);v.exports=r},15554:(v,S,i)=>{var r=i(35161);v.exports=r},87259:(v,S,i)=>{var r=i(38007);v.exports=r},62021:(v,S,i)=>{var r=i(57432);v.exports=r},57682:(v,S,i)=>{var r=i(36541);v.exports=r},94222:(v,S,i)=>{var r=i(17303);v.exports=r},1162:(v,S,i)=>{var r=i(62149);v.exports=r},82805:(v,S,i)=>{var r=i(86537);v.exports=r},70809:(v,S,i)=>{var r=i(79553);v.exports=r},26498:(v,S,i)=>{var r=i(80092);i(33089),v.exports=r},44850:(v,S,i)=>{var r=i(472);v.exports=r},9634:(v,S,i)=>{var r=i(4678);v.exports=r},12118:(v,S,i)=>{i(69280);var r=i(13544);v.exports=r.setTimeout},96551:(v,S,i)=>{var r=i(61697);i(33089),v.exports=r},98908:(v,S,i)=>{var r=i(42497);i(33089),v.exports=r},44675:(v,S,i)=>{var r=i(41530);i(33089),v.exports=r},70906:(v,S,i)=>{var r=i(75081);v.exports=r},95050:(v,S,i)=>{var r=i(58255);i(33089),v.exports=r},41530:(v,S,i)=>{i(26953);var r=i(13544);v.exports=r.URLSearchParams},75081:(v,S,i)=>{i(95981),i(71324),i(26953);var r=i(13544);v.exports=r.URL},71577:function(){var v;v="undefined"!=typeof self?self:this,function(i){var r_searchParams="URLSearchParams"in v,r_iterable="Symbol"in v&&"iterator"in Symbol,r_blob="FileReader"in v&&"Blob"in v&&function(){try{return new Blob,!0}catch(Oe){return!1}}(),r_formData="FormData"in v,r_arrayBuffer="ArrayBuffer"in v;if(r_arrayBuffer)var p=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],f=ArrayBuffer.isView||function(Oe){return Oe&&p.indexOf(Object.prototype.toString.call(Oe))>-1};function e(Oe){if("string"!=typeof Oe&&(Oe=String(Oe)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(Oe))throw new TypeError("Invalid character in header field name");return Oe.toLowerCase()}function _(Oe){return"string"!=typeof Oe&&(Oe=String(Oe)),Oe}function y(Oe){var ce={next:function(){var dt=Oe.shift();return{done:void 0===dt,value:dt}}};return r_iterable&&(ce[Symbol.iterator]=function(){return ce}),ce}function T(Oe){this.map={},Oe instanceof T?Oe.forEach(function(ce,dt){this.append(dt,ce)},this):Array.isArray(Oe)?Oe.forEach(function(ce){this.append(ce[0],ce[1])},this):Oe&&Object.getOwnPropertyNames(Oe).forEach(function(ce){this.append(ce,Oe[ce])},this)}function M(Oe){if(Oe.bodyUsed)return Promise.reject(new TypeError("Already read"));Oe.bodyUsed=!0}function R(Oe){return new Promise(function(ce,dt){Oe.onload=function(){ce(Oe.result)},Oe.onerror=function(){dt(Oe.error)}})}function F(Oe){var ce=new FileReader,dt=R(ce);return ce.readAsArrayBuffer(Oe),dt}function Q(Oe){if(Oe.slice)return Oe.slice(0);var ce=new Uint8Array(Oe.byteLength);return ce.set(new Uint8Array(Oe)),ce.buffer}function ee(){return this.bodyUsed=!1,this._initBody=function(Oe){this._bodyInit=Oe,Oe?"string"==typeof Oe?this._bodyText=Oe:r_blob&&Blob.prototype.isPrototypeOf(Oe)?this._bodyBlob=Oe:r_formData&&FormData.prototype.isPrototypeOf(Oe)?this._bodyFormData=Oe:r_searchParams&&URLSearchParams.prototype.isPrototypeOf(Oe)?this._bodyText=Oe.toString():r_arrayBuffer&&r_blob&&function(Oe){return Oe&&DataView.prototype.isPrototypeOf(Oe)}(Oe)?(this._bodyArrayBuffer=Q(Oe.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):r_arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(Oe)||f(Oe))?this._bodyArrayBuffer=Q(Oe):this._bodyText=Oe=Object.prototype.toString.call(Oe):this._bodyText="",this.headers.get("content-type")||("string"==typeof Oe?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r_searchParams&&URLSearchParams.prototype.isPrototypeOf(Oe)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r_blob&&(this.blob=function(){var Oe=M(this);if(Oe)return Oe;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?M(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(F)}),this.text=function(){var Oe=M(this);if(Oe)return Oe;if(this._bodyBlob)return function(Oe){var ce=new FileReader,dt=R(ce);return ce.readAsText(Oe),dt}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(Oe){for(var ce=new Uint8Array(Oe),dt=new Array(ce.length),ze=0;ze<ce.length;ze++)dt[ze]=String.fromCharCode(ce[ze]);return dt.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},r_formData&&(this.formData=function(){return this.text().then(se)}),this.json=function(){return this.text().then(JSON.parse)},this}T.prototype.append=function(Oe,ce){Oe=e(Oe),ce=_(ce);var dt=this.map[Oe];this.map[Oe]=dt?dt+", "+ce:ce},T.prototype.delete=function(Oe){delete this.map[e(Oe)]},T.prototype.get=function(Oe){return Oe=e(Oe),this.has(Oe)?this.map[Oe]:null},T.prototype.has=function(Oe){return this.map.hasOwnProperty(e(Oe))},T.prototype.set=function(Oe,ce){this.map[e(Oe)]=_(ce)},T.prototype.forEach=function(Oe,ce){for(var dt in this.map)this.map.hasOwnProperty(dt)&&Oe.call(ce,this.map[dt],dt,this)},T.prototype.keys=function(){var Oe=[];return this.forEach(function(ce,dt){Oe.push(dt)}),y(Oe)},T.prototype.values=function(){var Oe=[];return this.forEach(function(ce){Oe.push(ce)}),y(Oe)},T.prototype.entries=function(){var Oe=[];return this.forEach(function(ce,dt){Oe.push([dt,ce])}),y(Oe)},r_iterable&&(T.prototype[Symbol.iterator]=T.prototype.entries);var ue=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function $(Oe,ce){var dt=(ce=ce||{}).body;if(Oe instanceof $){if(Oe.bodyUsed)throw new TypeError("Already read");this.url=Oe.url,this.credentials=Oe.credentials,ce.headers||(this.headers=new T(Oe.headers)),this.method=Oe.method,this.mode=Oe.mode,this.signal=Oe.signal,!dt&&null!=Oe._bodyInit&&(dt=Oe._bodyInit,Oe.bodyUsed=!0)}else this.url=String(Oe);if(this.credentials=ce.credentials||this.credentials||"same-origin",(ce.headers||!this.headers)&&(this.headers=new T(ce.headers)),this.method=function(Oe){var ce=Oe.toUpperCase();return ue.indexOf(ce)>-1?ce:Oe}(ce.method||this.method||"GET"),this.mode=ce.mode||this.mode||null,this.signal=ce.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&dt)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(dt)}function se(Oe){var ce=new FormData;return Oe.trim().split("&").forEach(function(dt){if(dt){var ze=dt.split("="),Ye=ze.shift().replace(/\+/g," "),je=ze.join("=").replace(/\+/g," ");ce.append(decodeURIComponent(Ye),decodeURIComponent(je))}}),ce}function ve(Oe){var ce=new T;return Oe.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(ze){var Ye=ze.split(":"),je=Ye.shift().trim();if(je){var Ie=Ye.join(":").trim();ce.append(je,Ie)}}),ce}function oe(Oe,ce){ce||(ce={}),this.type="default",this.status=void 0===ce.status?200:ce.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in ce?ce.statusText:"OK",this.headers=new T(ce.headers),this.url=ce.url||"",this._initBody(Oe)}$.prototype.clone=function(){return new $(this,{body:this._bodyInit})},ee.call($.prototype),ee.call(oe.prototype),oe.prototype.clone=function(){return new oe(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new T(this.headers),url:this.url})},oe.error=function(){var Oe=new oe(null,{status:0,statusText:""});return Oe.type="error",Oe};var he=[301,302,303,307,308];oe.redirect=function(Oe,ce){if(-1===he.indexOf(ce))throw new RangeError("Invalid status code");return new oe(null,{status:ce,headers:{location:Oe}})},i.DOMException=v.DOMException;try{new i.DOMException}catch(Oe){i.DOMException=function(ce,dt){this.message=ce,this.name=dt;var ze=Error(ce);this.stack=ze.stack},i.DOMException.prototype=Object.create(Error.prototype),i.DOMException.prototype.constructor=i.DOMException}function me(Oe,ce){return new Promise(function(dt,ze){var Ye=new $(Oe,ce);if(Ye.signal&&Ye.signal.aborted)return ze(new i.DOMException("Aborted","AbortError"));var je=new XMLHttpRequest;function Ie(){je.abort()}je.onload=function(){var Ve={status:je.status,statusText:je.statusText,headers:ve(je.getAllResponseHeaders()||"")};Ve.url="responseURL"in je?je.responseURL:Ve.headers.get("X-Request-URL"),dt(new oe("response"in je?je.response:je.responseText,Ve))},je.onerror=function(){ze(new TypeError("Network request failed"))},je.ontimeout=function(){ze(new TypeError("Network request failed"))},je.onabort=function(){ze(new i.DOMException("Aborted","AbortError"))},je.open(Ye.method,Ye.url,!0),"include"===Ye.credentials?je.withCredentials=!0:"omit"===Ye.credentials&&(je.withCredentials=!1),"responseType"in je&&r_blob&&(je.responseType="blob"),Ye.headers.forEach(function(Ve,He){je.setRequestHeader(He,Ve)}),Ye.signal&&(Ye.signal.addEventListener("abort",Ie),je.onreadystatechange=function(){4===je.readyState&&Ye.signal.removeEventListener("abort",Ie)}),je.send(void 0===Ye._bodyInit?null:Ye._bodyInit)})}me.polyfill=!0,v.fetch||(v.fetch=me,v.Headers=T,v.Request=$,v.Response=oe),i.Headers=T,i.Request=$,i.Response=oe,i.fetch=me,Object.defineProperty(i,"__esModule",{value:!0})}({})},52243:function(v){var S;S="undefined"!=typeof global?global:this,v.exports=function(S){if(S.CSS&&S.CSS.escape)return S.CSS.escape;var i=function(r){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var e,u=String(r),p=u.length,f=-1,_="",y=u.charCodeAt(0);++f<p;)0!=(e=u.charCodeAt(f))?_+=e>=1&&e<=31||127==e||0==f&&e>=48&&e<=57||1==f&&e>=48&&e<=57&&45==y?"\\"+e.toString(16)+" ":0==f&&1==p&&45==e||!(e>=128||45==e||95==e||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)?"\\"+u.charAt(f):u.charAt(f):_+="\ufffd";return _};return S.CSS||(S.CSS={}),S.CSS.escape=i,i}(S)},89225:v=>{"use strict";var S=function(ae){return!(!(ue=ae)||"object"!=typeof ue||function(ue){var ae=Object.prototype.toString.call(ue);return"[object RegExp]"===ae||"[object Date]"===ae||function(ue){return ue.$$typeof===p}(ue)}(ae));var ue},p="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function _(ue,ae){return!1!==ae.clone&&ae.isMergeableObject(ue)?Q(function(ue){return Array.isArray(ue)?[]:{}}(ue),ue,ae):ue}function y(ue,ae,$){return ue.concat(ae).map(function(se){return _(se,$)})}function R(ue){return Object.keys(ue).concat(function(ue){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(ue).filter(function(ae){return ue.propertyIsEnumerable(ae)}):[]}(ue))}function F(ue,ae){try{return ae in ue}catch($){return!1}}function Q(ue,ae,$){($=$||{}).arrayMerge=$.arrayMerge||y,$.isMergeableObject=$.isMergeableObject||S,$.cloneUnlessOtherwiseSpecified=_;var se=Array.isArray(ae);return se===Array.isArray(ue)?se?$.arrayMerge(ue,ae,$):function(ue,ae,$){var se={};return $.isMergeableObject(ue)&&R(ue).forEach(function(ve){se[ve]=_(ue[ve],$)}),R(ae).forEach(function(ve){(function(ue,ae){return F(ue,ae)&&!(Object.hasOwnProperty.call(ue,ae)&&Object.propertyIsEnumerable.call(ue,ae))})(ue,ve)||(se[ve]=F(ue,ve)&&$.isMergeableObject(ae[ve])?function(ue,ae){if(!ae.customMerge)return Q;var $=ae.customMerge(ue);return"function"==typeof $?$:Q}(ve,$)(ue[ve],ae[ve],$):_(ae[ve],$))}),se}(ue,ae,$):_(ae,$)}Q.all=function(ae,$){if(!Array.isArray(ae))throw new Error("first argument should be an array");return ae.reduce(function(se,ve){return Q(se,ve,$)},{})},v.exports=Q},97057:(v,S,i)=>{"use strict";i.d(S,{qY:()=>Z});var u=function(ve,oe,he){this.name=ve,this.version=oe,this.os=he,this.type="browser"},p=function(ve){this.version=ve,this.type="node",this.name="node",this.os=process.platform},f=function(ve,oe,he,me){this.name=ve,this.version=oe,this.os=he,this.bot=me,this.type="bot-device"},e=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},_=function(){this.type="react-native",this.name="react-native",this.version=null,this.os=null},T=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,R=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],F=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Z(se){return se?ee(se):"undefined"==typeof document&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product?new _:"undefined"!=typeof navigator?ee(navigator.userAgent):"undefined"!=typeof process&&process.version?new p(process.version.slice(1)):null}function ee(se){var ve=function(se){return""!==se&&R.reduce(function(ve,oe){var he=oe[0];if(ve)return ve;var Oe=oe[1].exec(se);return!!Oe&&[he,Oe]},!1)}(se);if(!ve)return null;var oe=ve[0],he=ve[1];if("searchbot"===oe)return new e;var me=he[1]&&he[1].split(/[._]/).slice(0,3);me?me.length<3&&(me=function(){for(var se=0,ve=0,oe=arguments.length;ve<oe;ve++)se+=arguments[ve].length;var he=Array(se),me=0;for(ve=0;ve<oe;ve++)for(var Oe=arguments[ve],ce=0,dt=Oe.length;ce<dt;ce++,me++)he[me]=Oe[ce];return he}(me,function(se){for(var ve=[],oe=0;oe<se;oe++)ve.push("0");return ve}(3-me.length))):me=[];var Oe=me.join("."),ce=function(se){for(var ve=0,oe=F.length;ve<oe;ve++){var he=F[ve],me=he[0];if(he[1].exec(se))return me}return null}(se),dt=T.exec(se);return dt&&dt[1]?new f(oe,Oe,ce,dt[1]):new u(oe,Oe,ce)}},23358:function(v){v.exports=function(){"use strict";var i=Object.hasOwnProperty,r=Object.setPrototypeOf,u=Object.isFrozen,p=Object.getPrototypeOf,f=Object.getOwnPropertyDescriptor,e=Object.freeze,_=Object.seal,y=Object.create,T="undefined"!=typeof Reflect&&Reflect,M=T.apply,R=T.construct;M||(M=function(In,Hn,Zr){return In.apply(Hn,Zr)}),e||(e=function(In){return In}),_||(_=function(In){return In}),R||(R=function(In,Hn){return new(Function.prototype.bind.apply(In,[null].concat(function(Kr){if(Array.isArray(Kr)){for(var In=0,Hn=Array(Kr.length);In<Kr.length;In++)Hn[In]=Kr[In];return Hn}return Array.from(Kr)}(Hn))))});var Kr,F=oe(Array.prototype.forEach),Z=oe(Array.prototype.pop),J=oe(Array.prototype.push),Q=oe(String.prototype.toLowerCase),ee=oe(String.prototype.match),ue=oe(String.prototype.replace),ae=oe(String.prototype.indexOf),$=oe(String.prototype.trim),se=oe(RegExp.prototype.test),ve=(Kr=TypeError,function(){for(var In=arguments.length,Hn=Array(In),Zr=0;Zr<In;Zr++)Hn[Zr]=arguments[Zr];return R(Kr,Hn)});function oe(Kr){return function(In){for(var Hn=arguments.length,Zr=Array(Hn>1?Hn-1:0),Ur=1;Ur<Hn;Ur++)Zr[Ur-1]=arguments[Ur];return M(Kr,In,Zr)}}function me(Kr,In){r&&r(Kr,null);for(var Hn=In.length;Hn--;){var Zr=In[Hn];if("string"==typeof Zr){var Ur=Q(Zr);Ur!==Zr&&(u(In)||(In[Hn]=Ur),Zr=Ur)}Kr[Zr]=!0}return Kr}function Oe(Kr){var In=y(null),Hn=void 0;for(Hn in Kr)M(i,Kr,[Hn])&&(In[Hn]=Kr[Hn]);return In}function ce(Kr,In){for(;null!==Kr;){var Hn=f(Kr,In);if(Hn){if(Hn.get)return oe(Hn.get);if("function"==typeof Hn.value)return oe(Hn.value)}Kr=p(Kr)}return function(Ur){return console.warn("fallback value for",Ur),null}}var dt=e(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ze=e(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ye=e(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),je=e(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Ie=e(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),Ve=e(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),He=e(["#text"]),Zt=e(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),st=e(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),en=e(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),$t=e(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Gt=_(/\{\{[\s\S]*|[\s\S]*\}\}/gm),Ut=_(/<%[\s\S]*|[\s\S]*%>/gm),Bt=_(/^data-[\-\w.\u00B7-\uFFFF]/),mt=_(/^aria-[\-\w]+$/),Yt=_(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Dt=_(/^(?:\w+script|data):/i),zt=_(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(Kr){return typeof Kr}:function(Kr){return Kr&&"function"==typeof Symbol&&Kr.constructor===Symbol&&Kr!==Symbol.prototype?"symbol":typeof Kr};function Hr(Kr){if(Array.isArray(Kr)){for(var In=0,Hn=Array(Kr.length);In<Kr.length;In++)Hn[In]=Kr[In];return Hn}return Array.from(Kr)}var ci=function(){return"undefined"==typeof window?null:window},Ir=function(In,Hn){if("object"!==(void 0===In?"undefined":Yn(In))||"function"!=typeof In.createPolicy)return null;var Zr=null,Ur="data-tt-policy-suffix";Hn.currentScript&&Hn.currentScript.hasAttribute(Ur)&&(Zr=Hn.currentScript.getAttribute(Ur));var di="dompurify"+(Zr?"#"+Zr:"");try{return In.createPolicy(di,{createHTML:function(Hi){return Hi}})}catch($i){return console.warn("TrustedTypes policy "+di+" could not be created."),null}};return function wr(){var Kr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ci(),In=function(kr){return wr(kr)};if(In.version="2.3.3",In.removed=[],!Kr||!Kr.document||9!==Kr.document.nodeType)return In.isSupported=!1,In;var Hn=Kr.document,Zr=Kr.document,Ur=Kr.DocumentFragment,di=Kr.HTMLTemplateElement,$i=Kr.Node,Hi=Kr.Element,Br=Kr.NodeFilter,On=Kr.NamedNodeMap,Wt=void 0===On?Kr.NamedNodeMap||Kr.MozNamedAttrMap:On,Jn=Kr.Text,ir=Kr.Comment,Lr=Kr.DOMParser,Vn=Kr.trustedTypes,zr=Hi.prototype,hi=ce(zr,"cloneNode"),Ai=ce(zr,"nextSibling"),Tr=ce(zr,"childNodes"),Nr=ce(zr,"parentNode");if("function"==typeof di){var gn=Zr.createElement("template");gn.content&&gn.content.ownerDocument&&(Zr=gn.content.ownerDocument)}var En=Ir(Vn,Hn),mr=En&&ho?En.createHTML(""):"",zn=Zr.implementation,vr=Zr.createNodeIterator,si=Zr.createDocumentFragment,Ii=Zr.getElementsByTagName,no=Hn.importNode,so={};try{so=Oe(Zr).documentMode?Zr.documentMode:{}}catch(Co){}var Ze={};In.isSupported="function"==typeof Nr&&zn&&void 0!==zn.createHTMLDocument&&9!==so;var Dr=Gt,jt=Ut,xt=Bt,mn=mt,Wn=Dt,kn=zt,wn=Yt,nr=null,Gi=me({},[].concat(Hr(dt),Hr(ze),Hr(Ye),Hr(Ie),Hr(He))),po=null,yo=me({},[].concat(Hr(Zt),Hr(st),Hr(en),Hr($t))),Mo=null,Vi=null,cs=!0,zo=!0,So=!1,Si=!1,ai=!1,Zn=!1,cr=!1,yr=!1,rr=!1,ri=!0,ho=!1,Ti=!0,Bo=!0,xo=!1,Li={},ar=null,ln=me({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ht=null,cn=me({},["audio","video","img","source","image","track"]),Ct=null,pr=me({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nn="http://www.w3.org/1998/Math/MathML",Cn="http://www.w3.org/2000/svg",br="http://www.w3.org/1999/xhtml",zi=br,Wo=!1,Do=void 0,Js=["application/xhtml+xml","text/html"],_s="text/html",bs=void 0,qo=null,ra=Zr.createElement("form"),Ia=function(kr){qo&&qo===kr||((!kr||"object"!==(void 0===kr?"undefined":Yn(kr)))&&(kr={}),kr=Oe(kr),nr="ALLOWED_TAGS"in kr?me({},kr.ALLOWED_TAGS):Gi,po="ALLOWED_ATTR"in kr?me({},kr.ALLOWED_ATTR):yo,Ct="ADD_URI_SAFE_ATTR"in kr?me(Oe(pr),kr.ADD_URI_SAFE_ATTR):pr,Ht="ADD_DATA_URI_TAGS"in kr?me(Oe(cn),kr.ADD_DATA_URI_TAGS):cn,ar="FORBID_CONTENTS"in kr?me({},kr.FORBID_CONTENTS):ln,Mo="FORBID_TAGS"in kr?me({},kr.FORBID_TAGS):{},Vi="FORBID_ATTR"in kr?me({},kr.FORBID_ATTR):{},Li="USE_PROFILES"in kr&&kr.USE_PROFILES,cs=!1!==kr.ALLOW_ARIA_ATTR,zo=!1!==kr.ALLOW_DATA_ATTR,So=kr.ALLOW_UNKNOWN_PROTOCOLS||!1,Si=kr.SAFE_FOR_TEMPLATES||!1,ai=kr.WHOLE_DOCUMENT||!1,yr=kr.RETURN_DOM||!1,rr=kr.RETURN_DOM_FRAGMENT||!1,ri=!1!==kr.RETURN_DOM_IMPORT,ho=kr.RETURN_TRUSTED_TYPE||!1,cr=kr.FORCE_BODY||!1,Ti=!1!==kr.SANITIZE_DOM,Bo=!1!==kr.KEEP_CONTENT,xo=kr.IN_PLACE||!1,wn=kr.ALLOWED_URI_REGEXP||wn,zi=kr.NAMESPACE||br,Do=Do=-1===Js.indexOf(kr.PARSER_MEDIA_TYPE)?_s:kr.PARSER_MEDIA_TYPE,bs="application/xhtml+xml"===Do?function(ro){return ro}:Q,Si&&(zo=!1),rr&&(yr=!0),Li&&(nr=me({},[].concat(Hr(He))),po=[],!0===Li.html&&(me(nr,dt),me(po,Zt)),!0===Li.svg&&(me(nr,ze),me(po,st),me(po,$t)),!0===Li.svgFilters&&(me(nr,Ye),me(po,st),me(po,$t)),!0===Li.mathMl&&(me(nr,Ie),me(po,en),me(po,$t))),kr.ADD_TAGS&&(nr===Gi&&(nr=Oe(nr)),me(nr,kr.ADD_TAGS)),kr.ADD_ATTR&&(po===yo&&(po=Oe(po)),me(po,kr.ADD_ATTR)),kr.ADD_URI_SAFE_ATTR&&me(Ct,kr.ADD_URI_SAFE_ATTR),kr.FORBID_CONTENTS&&(ar===ln&&(ar=Oe(ar)),me(ar,kr.FORBID_CONTENTS)),Bo&&(nr["#text"]=!0),ai&&me(nr,["html","head","body"]),nr.table&&(me(nr,["tbody"]),delete Mo.tbody),e&&e(kr),qo=kr)},pa=me({},["mi","mo","mn","ms","mtext"]),Bs=me({},["foreignobject","desc","title","annotation-xml"]),Yl=me({},ze);me(Yl,Ye),me(Yl,je);var yl=me({},Ie);me(yl,Ve);var fo=function(kr){var ro=Nr(kr);(!ro||!ro.tagName)&&(ro={namespaceURI:br,tagName:"template"});var tt=Q(kr.tagName),on=Q(ro.tagName);if(kr.namespaceURI===Cn)return ro.namespaceURI===br?"svg"===tt:ro.namespaceURI===nn?"svg"===tt&&("annotation-xml"===on||pa[on]):Boolean(Yl[tt]);if(kr.namespaceURI===nn)return ro.namespaceURI===br?"math"===tt:ro.namespaceURI===Cn?"math"===tt&&Bs[on]:Boolean(yl[tt]);if(kr.namespaceURI===br){if(ro.namespaceURI===Cn&&!Bs[on]||ro.namespaceURI===nn&&!pa[on])return!1;var ne=me({},["title","style","font","a","script"]);return!yl[tt]&&(ne[tt]||!Yl[tt])}return!1},Da=function(kr){J(In.removed,{element:kr});try{kr.parentNode.removeChild(kr)}catch(ro){try{kr.outerHTML=mr}catch(tt){kr.remove()}}},Ao=function(kr,ro){try{J(In.removed,{attribute:ro.getAttributeNode(kr),from:ro})}catch(tt){J(In.removed,{attribute:null,from:ro})}if(ro.removeAttribute(kr),"is"===kr&&!po[kr])if(yr||rr)try{Da(ro)}catch(tt){}else try{ro.setAttribute(kr,"")}catch(tt){}},ls=function(kr){var ro=void 0,tt=void 0;if(cr)kr="<remove></remove>"+kr;else{var on=ee(kr,/^[\r\n\t ]+/);tt=on&&on[0]}"application/xhtml+xml"===Do&&(kr='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+kr+"</body></html>");var ne=En?En.createHTML(kr):kr;if(zi===br)try{ro=(new Lr).parseFromString(ne,Do)}catch(Pt){}if(!ro||!ro.documentElement){ro=zn.createDocument(zi,"template",null);try{ro.documentElement.innerHTML=Wo?"":ne}catch(Pt){}}var $e=ro.body||ro.documentElement;return kr&&tt&&$e.insertBefore(Zr.createTextNode(tt),$e.childNodes[0]||null),zi===br?Ii.call(ro,ai?"html":"body")[0]:ai?ro.documentElement:$e},gs=function(kr){return vr.call(kr.ownerDocument||kr,kr,Br.SHOW_ELEMENT|Br.SHOW_COMMENT|Br.SHOW_TEXT,null,!1)},Ra=function(kr){return!(kr instanceof Jn||kr instanceof ir||"string"==typeof kr.nodeName&&"string"==typeof kr.textContent&&"function"==typeof kr.removeChild&&kr.attributes instanceof Wt&&"function"==typeof kr.removeAttribute&&"function"==typeof kr.setAttribute&&"string"==typeof kr.namespaceURI&&"function"==typeof kr.insertBefore)},pl=function(kr){return"object"===(void 0===$i?"undefined":Yn($i))?kr instanceof $i:kr&&"object"===(void 0===kr?"undefined":Yn(kr))&&"number"==typeof kr.nodeType&&"string"==typeof kr.nodeName},Qs=function(kr,ro,tt){!Ze[kr]||F(Ze[kr],function(on){on.call(In,ro,tt,qo)})},Fo=function(kr){var ro=void 0;if(Qs("beforeSanitizeElements",kr,null),Ra(kr)||ee(kr.nodeName,/[\u0080-\uFFFF]/))return Da(kr),!0;var tt=bs(kr.nodeName);if(Qs("uponSanitizeElement",kr,{tagName:tt,allowedTags:nr}),!pl(kr.firstElementChild)&&(!pl(kr.content)||!pl(kr.content.firstElementChild))&&se(/<[/\w]/g,kr.innerHTML)&&se(/<[/\w]/g,kr.textContent)||"select"===tt&&se(/<template/i,kr.innerHTML))return Da(kr),!0;if(!nr[tt]||Mo[tt]){if(Bo&&!ar[tt]){var on=Nr(kr)||kr.parentNode,ne=Tr(kr)||kr.childNodes;if(ne&&on)for(var Pt=ne.length-1;Pt>=0;--Pt)on.insertBefore(hi(ne[Pt],!0),Ai(kr))}return Da(kr),!0}return kr instanceof Hi&&!fo(kr)||("noscript"===tt||"noembed"===tt)&&se(/<\/no(script|embed)/i,kr.innerHTML)?(Da(kr),!0):(Si&&3===kr.nodeType&&(ro=ue(ro=kr.textContent,Dr," "),ro=ue(ro,jt," "),kr.textContent!==ro&&(J(In.removed,{element:kr.cloneNode()}),kr.textContent=ro)),Qs("afterSanitizeElements",kr,null),!1)},Eo=function(kr,ro,tt){if(Ti&&("id"===ro||"name"===ro)&&(tt in Zr||tt in ra))return!1;if((!zo||Vi[ro]||!se(xt,ro))&&(!cs||!se(mn,ro))){if(!po[ro]||Vi[ro])return!1;if(!Ct[ro]&&!se(wn,ue(tt,kn,""))&&("src"!==ro&&"xlink:href"!==ro&&"href"!==ro||"script"===kr||0!==ae(tt,"data:")||!Ht[kr])&&(!So||se(Wn,ue(tt,kn,"")))&&tt)return!1}return!0},ks=function(kr){var ro=void 0,tt=void 0,on=void 0,ne=void 0;Qs("beforeSanitizeAttributes",kr,null);var $e=kr.attributes;if($e){var Pt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:po};for(ne=$e.length;ne--;){var ei=(ro=$e[ne]).name,fi=ro.namespaceURI;if(tt=$(ro.value),on=bs(ei),Pt.attrName=on,Pt.attrValue=tt,Pt.keepAttr=!0,Pt.forceKeepAttr=void 0,Qs("uponSanitizeAttribute",kr,Pt),tt=Pt.attrValue,!Pt.forceKeepAttr&&(Ao(ei,kr),Pt.keepAttr)){if(se(/\/>/i,tt)){Ao(ei,kr);continue}Si&&(tt=ue(tt,Dr," "),tt=ue(tt,jt," "));var Oi=bs(kr.nodeName);if(Eo(Oi,on,tt))try{fi?kr.setAttributeNS(fi,ei,tt):kr.setAttribute(ei,tt),Z(In.removed)}catch(os){}}}Qs("afterSanitizeAttributes",kr,null)}},ms=function Co(kr){var ro=void 0,tt=gs(kr);for(Qs("beforeSanitizeShadowDOM",kr,null);ro=tt.nextNode();)Qs("uponSanitizeShadowNode",ro,null),!Fo(ro)&&(ro.content instanceof Ur&&Co(ro.content),ks(ro));Qs("afterSanitizeShadowDOM",kr,null)};return In.sanitize=function(Co,kr){var ro=void 0,tt=void 0,on=void 0,ne=void 0,$e=void 0;if((Wo=!Co)&&(Co="\x3c!--\x3e"),"string"!=typeof Co&&!pl(Co)){if("function"!=typeof Co.toString)throw ve("toString is not a function");if("string"!=typeof(Co=Co.toString()))throw ve("dirty is not a string, aborting")}if(!In.isSupported){if("object"===Yn(Kr.toStaticHTML)||"function"==typeof Kr.toStaticHTML){if("string"==typeof Co)return Kr.toStaticHTML(Co);if(pl(Co))return Kr.toStaticHTML(Co.outerHTML)}return Co}if(Zn||Ia(kr),In.removed=[],"string"==typeof Co&&(xo=!1),!xo)if(Co instanceof $i)1===(tt=(ro=ls("\x3c!----\x3e")).ownerDocument.importNode(Co,!0)).nodeType&&"BODY"===tt.nodeName||"HTML"===tt.nodeName?ro=tt:ro.appendChild(tt);else{if(!yr&&!Si&&!ai&&-1===Co.indexOf("<"))return En&&ho?En.createHTML(Co):Co;if(!(ro=ls(Co)))return yr?null:mr}ro&&cr&&Da(ro.firstChild);for(var Pt=gs(xo?Co:ro);on=Pt.nextNode();)3===on.nodeType&&on===ne||Fo(on)||(on.content instanceof Ur&&ms(on.content),ks(on),ne=on);if(ne=null,xo)return Co;if(yr){if(rr)for($e=si.call(ro.ownerDocument);ro.firstChild;)$e.appendChild(ro.firstChild);else $e=ro;return ri&&($e=no.call(Hn,$e,!0)),$e}var sn=ai?ro.outerHTML:ro.innerHTML;return Si&&(sn=ue(sn,Dr," "),sn=ue(sn,jt," ")),En&&ho?En.createHTML(sn):sn},In.setConfig=function(Co){Ia(Co),Zn=!0},In.clearConfig=function(){qo=null,Zn=!1},In.isValidAttribute=function(Co,kr,ro){qo||Ia({});var tt=bs(Co),on=bs(kr);return Eo(tt,on,ro)},In.addHook=function(Co,kr){"function"==typeof kr&&(Ze[Co]=Ze[Co]||[],J(Ze[Co],kr))},In.removeHook=function(Co){Ze[Co]&&Z(Ze[Co])},In.removeHooks=function(Co){Ze[Co]&&(Ze[Co]=[])},In.removeAllHooks=function(){Ze={}},In}()}()},32582:v=>{"use strict";class S{constructor(u,p){this.low=u,this.high=p,this.length=1+p-u}overlaps(u){return!(this.high<u.low||this.low>u.high)}touches(u){return!(this.high+1<u.low||this.low-1>u.high)}add(u){return new S(Math.min(this.low,u.low),Math.max(this.high,u.high))}subtract(u){return u.low<=this.low&&u.high>=this.high?[]:u.low>this.low&&u.high<this.high?[new S(this.low,u.low-1),new S(u.high+1,this.high)]:u.low<=this.low?[new S(u.high+1,this.high)]:[new S(this.low,u.low-1)]}toString(){return this.low==this.high?this.low.toString():this.low+"-"+this.high}}class i{constructor(u,p){this.ranges=[],this.length=0,null!=u&&this.add(u,p)}_update_length(){this.length=this.ranges.reduce((u,p)=>u+p.length,0)}add(u,p){var f=e=>{for(var _=0;_<this.ranges.length&&!e.touches(this.ranges[_]);)_++;for(var y=this.ranges.slice(0,_);_<this.ranges.length&&e.touches(this.ranges[_]);)e=e.add(this.ranges[_]),_++;y.push(e),this.ranges=y.concat(this.ranges.slice(_)),this._update_length()};return u instanceof i?u.ranges.forEach(f):(null==p&&(p=u),f(new S(u,p))),this}subtract(u,p){var f=e=>{for(var _=0;_<this.ranges.length&&!e.overlaps(this.ranges[_]);)_++;for(var y=this.ranges.slice(0,_);_<this.ranges.length&&e.overlaps(this.ranges[_]);)y=y.concat(this.ranges[_].subtract(e)),_++;this.ranges=y.concat(this.ranges.slice(_)),this._update_length()};return u instanceof i?u.ranges.forEach(f):(null==p&&(p=u),f(new S(u,p))),this}intersect(u,p){var f=[],e=_=>{for(var y=0;y<this.ranges.length&&!_.overlaps(this.ranges[y]);)y++;for(;y<this.ranges.length&&_.overlaps(this.ranges[y]);){var T=Math.max(this.ranges[y].low,_.low),M=Math.min(this.ranges[y].high,_.high);f.push(new S(T,M)),y++}};return u instanceof i?u.ranges.forEach(e):(null==p&&(p=u),e(new S(u,p))),this.ranges=f,this._update_length(),this}index(u){for(var p=0;p<this.ranges.length&&this.ranges[p].length<=u;)u-=this.ranges[p].length,p++;return this.ranges[p].low+u}toString(){return"[ "+this.ranges.join(", ")+" ]"}clone(){return new i(this)}numbers(){return this.ranges.reduce((u,p)=>{for(var f=p.low;f<=p.high;)u.push(f),f++;return u},[])}subranges(){return this.ranges.map(u=>({low:u.low,high:u.high,length:1+u.high-u.low}))}}v.exports=i},11926:(v,S,i)=>{"use strict";var r=i(88430),u=p(Error);function p(f){return e.displayName=f.displayName||f.name,e;function e(_){return _&&(_=r.apply(null,arguments)),new f(_)}}v.exports=u,u.eval=p(EvalError),u.range=p(RangeError),u.reference=p(ReferenceError),u.syntax=p(SyntaxError),u.type=p(TypeError),u.uri=p(URIError),u.create=p},49457:function(v,S){var i,u;void 0!==(u="function"==typeof(i=function(){"use strict";function f(M,R,F){var Z=new XMLHttpRequest;Z.open("GET",M),Z.responseType="blob",Z.onload=function(){T(Z.response,R,F)},Z.onerror=function(){console.error("could not download file")},Z.send()}function e(M){var R=new XMLHttpRequest;R.open("HEAD",M,!1);try{R.send()}catch(F){}return 200<=R.status&&299>=R.status}function _(M){try{M.dispatchEvent(new MouseEvent("click"))}catch(F){var R=document.createEvent("MouseEvents");R.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),M.dispatchEvent(R)}}var y="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,T=y.saveAs||("object"!=typeof window||window!==y?function(){}:"download"in HTMLAnchorElement.prototype?function(M,R,F){var Z=y.URL||y.webkitURL,J=document.createElement("a");J.download=R=R||M.name||"download",J.rel="noopener","string"==typeof M?(J.href=M,J.origin===location.origin?_(J):e(J.href)?f(M,R,F):_(J,J.target="_blank")):(J.href=Z.createObjectURL(M),setTimeout(function(){Z.revokeObjectURL(J.href)},4e4),setTimeout(function(){_(J)},0))}:"msSaveOrOpenBlob"in navigator?function(M,R,F){if(R=R||M.name||"download","string"!=typeof M)navigator.msSaveOrOpenBlob(function(M,R){return void 0===R?R={autoBom:!1}:"object"!=typeof R&&(console.warn("Deprecated: Expected third argument to be a object"),R={autoBom:!R}),R.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(M.type)?new Blob(["\ufeff",M],{type:M.type}):M}(M,F),R);else if(e(M))f(M,R,F);else{var Z=document.createElement("a");Z.href=M,Z.target="_blank",setTimeout(function(){_(Z)})}}:function(M,R,F,Z){if((Z=Z||open("","_blank"))&&(Z.document.title=Z.document.body.innerText="downloading..."),"string"==typeof M)return f(M,R,F);var J="application/octet-stream"===M.type,Q=/constructor/i.test(y.HTMLElement)||y.safari,ee=/CriOS\/[\d]+/.test(navigator.userAgent);if((ee||J&&Q)&&"object"==typeof FileReader){var ue=new FileReader;ue.onloadend=function(){var se=ue.result;se=ee?se:se.replace(/^data:[^;]*;/,"data:attachment/file;"),Z?Z.location.href=se:location=se,Z=null},ue.readAsDataURL(M)}else{var ae=y.URL||y.webkitURL,$=ae.createObjectURL(M);Z?Z.location=$:location.href=$,Z=null,setTimeout(function(){ae.revokeObjectURL($)},4e4)}});y.saveAs=T.saveAs=T,v.exports=T})?i.apply(S,[]):i)&&(v.exports=u)},88430:v=>{!function(){var S;function u(p){for(var M,F,Z,Q,f=1,e=[].slice.call(arguments),_=0,y=p.length,T="",R=!1,J=!1,ee=function(){return e[f++]},ue=function(){for(var ae="";/\d/.test(p[_]);)ae+=p[_++],M=p[_];return ae.length>0?parseInt(ae):null};_<y;++_)if(M=p[_],R)switch(R=!1,"."==M?(J=!1,M=p[++_]):"0"==M&&"."==p[_+1]?(J=!0,_+=2,M=p[_]):J=!0,Q=ue(),M){case"b":T+=parseInt(ee(),10).toString(2);break;case"c":T+="string"==typeof(F=ee())||F instanceof String?F:String.fromCharCode(parseInt(F,10));break;case"d":T+=parseInt(ee(),10);break;case"f":Z=String(parseFloat(ee()).toFixed(Q||6)),T+=J?Z:Z.replace(/^0/,"");break;case"j":T+=JSON.stringify(ee());break;case"o":T+="0"+parseInt(ee(),10).toString(8);break;case"s":T+=ee();break;case"x":T+="0x"+parseInt(ee(),10).toString(16);break;case"X":T+="0x"+parseInt(ee(),10).toString(16).toUpperCase();break;default:T+=M}else"%"===M?R=!0:T+=M;return T}(S=v.exports=u).format=u,S.vsprintf=function(p,f){return u.apply(null,[p].concat(f))},"undefined"!=typeof console&&"function"==typeof console.log&&(S.printf=function(){console.log(u.apply(null,arguments))})}()},31609:v=>{"use strict";var S="Function.prototype.bind called on incompatible ",i=Array.prototype.slice,r=Object.prototype.toString,u="[object Function]";v.exports=function(f){var e=this;if("function"!=typeof e||r.call(e)!==u)throw new TypeError(S+e);for(var y,_=i.call(arguments,1),T=function(){if(this instanceof y){var J=e.apply(this,_.concat(i.call(arguments)));return Object(J)===J?J:this}return e.apply(f,_.concat(i.call(arguments)))},M=Math.max(0,e.length-_.length),R=[],F=0;F<M;F++)R.push("$"+F);if(y=Function("binder","return function ("+R.join(",")+"){ return binder.apply(this,arguments); }")(T),e.prototype){var Z=function(){};Z.prototype=e.prototype,y.prototype=new Z,Z.prototype=null}return y}},75396:(v,S,i)=>{"use strict";var r=i(31609);v.exports=Function.prototype.bind||r},18540:(v,S,i)=>{"use strict";var r,u=SyntaxError,p=Function,f=TypeError,e=function(ze){try{return p('"use strict"; return ('+ze+").constructor;")()}catch(Ye){}},_=Object.getOwnPropertyDescriptor;if(_)try{_({},"")}catch(ze){_=null}var y=function(){throw new f},T=_?function(){try{return y}catch(ze){try{return _(arguments,"callee").get}catch(Ye){return y}}}():y,M=i(59326)(),R=Object.getPrototypeOf||function(ze){return ze.__proto__},F={},Z="undefined"==typeof Uint8Array?r:R(Uint8Array),J={"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":M?R([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":F,"%AsyncGenerator%":F,"%AsyncGeneratorFunction%":F,"%AsyncIteratorPrototype%":F,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":p,"%GeneratorFunction%":F,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":M?R(R([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&M?R((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&M?R((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":M?R(""[Symbol.iterator]()):r,"%Symbol%":M?Symbol:r,"%SyntaxError%":u,"%ThrowTypeError%":T,"%TypedArray%":Z,"%TypeError%":f,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet},Q=function ze(Ye){var je;if("%AsyncFunction%"===Ye)je=e("async function () {}");else if("%GeneratorFunction%"===Ye)je=e("function* () {}");else if("%AsyncGeneratorFunction%"===Ye)je=e("async function* () {}");else if("%AsyncGenerator%"===Ye){var Ie=ze("%AsyncGeneratorFunction%");Ie&&(je=Ie.prototype)}else if("%AsyncIteratorPrototype%"===Ye){var Ve=ze("%AsyncGenerator%");Ve&&(je=R(Ve.prototype))}return J[Ye]=je,je},ee={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ue=i(75396),ae=i(57709),$=ue.call(Function.call,Array.prototype.concat),se=ue.call(Function.apply,Array.prototype.splice),ve=ue.call(Function.call,String.prototype.replace),oe=ue.call(Function.call,String.prototype.slice),he=ue.call(Function.call,RegExp.prototype.exec),me=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Oe=/\\(\\)?/g,ce=function(Ye){var je=oe(Ye,0,1),Ie=oe(Ye,-1);if("%"===je&&"%"!==Ie)throw new u("invalid intrinsic syntax, expected closing `%`");if("%"===Ie&&"%"!==je)throw new u("invalid intrinsic syntax, expected opening `%`");var Ve=[];return ve(Ye,me,function(He,Zt,st,en){Ve[Ve.length]=st?ve(en,Oe,"$1"):Zt||He}),Ve},dt=function(Ye,je){var Ve,Ie=Ye;if(ae(ee,Ie)&&(Ie="%"+(Ve=ee[Ie])[0]+"%"),ae(J,Ie)){var He=J[Ie];if(He===F&&(He=Q(Ie)),void 0===He&&!je)throw new f("intrinsic "+Ye+" exists, but is not available. Please file an issue!");return{alias:Ve,name:Ie,value:He}}throw new u("intrinsic "+Ye+" does not exist!")};v.exports=function(Ye,je){if("string"!=typeof Ye||0===Ye.length)throw new f("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof je)throw new f('"allowMissing" argument must be a boolean');if(null===he(/^%?[^%]*%?$/g,Ye))throw new u("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var Ie=ce(Ye),Ve=Ie.length>0?Ie[0]:"",He=dt("%"+Ve+"%",je),Zt=He.name,st=He.value,en=!1,$t=He.alias;$t&&(Ve=$t[0],se(Ie,$([0,1],$t)));for(var Gt=1,Ut=!0;Gt<Ie.length;Gt+=1){var Bt=Ie[Gt],mt=oe(Bt,0,1),Yt=oe(Bt,-1);if(('"'===mt||"'"===mt||"`"===mt||'"'===Yt||"'"===Yt||"`"===Yt)&&mt!==Yt)throw new u("property names with quotes must have matching quotes");if(("constructor"===Bt||!Ut)&&(en=!0),ae(J,Zt="%"+(Ve+="."+Bt)+"%"))st=J[Zt];else if(null!=st){if(!(Bt in st)){if(!je)throw new f("base intrinsic for "+Ye+" exists, but the property is not available.");return}if(_&&Gt+1>=Ie.length){var Dt=_(st,Bt);st=(Ut=!!Dt)&&"get"in Dt&&!("originalValue"in Dt.get)?Dt.get:st[Bt]}else Ut=ae(st,Bt),st=st[Bt];Ut&&!en&&(J[Zt]=st)}}return st}},59326:(v,S,i)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,u=i(79045);v.exports=function(){return"function"==typeof r&&"function"==typeof Symbol&&"symbol"==typeof r("foo")&&"symbol"==typeof Symbol("bar")&&u()}},79045:v=>{"use strict";v.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var i={},r=Symbol("test"),u=Object(r);if("string"==typeof r||"[object Symbol]"!==Object.prototype.toString.call(r)||"[object Symbol]"!==Object.prototype.toString.call(u))return!1;for(r in i[r]=42,i)return!1;if("function"==typeof Object.keys&&0!==Object.keys(i).length||"function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(i).length)return!1;var f=Object.getOwnPropertySymbols(i);if(1!==f.length||f[0]!==r||!Object.prototype.propertyIsEnumerable.call(i,r))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var e=Object.getOwnPropertyDescriptor(i,r);if(42!==e.value||!0!==e.enumerable)return!1}return!0}},57709:(v,S,i)=>{"use strict";var r=i(75396);v.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},7856:v=>{function S(Xt){return Xt instanceof Map?Xt.clear=Xt.delete=Xt.set=function(){throw new Error("map is read-only")}:Xt instanceof Set&&(Xt.add=Xt.clear=Xt.delete=function(){throw new Error("set is read-only")}),Object.freeze(Xt),Object.getOwnPropertyNames(Xt).forEach(function(zn){var vr=Xt[zn];"object"==typeof vr&&!Object.isFrozen(vr)&&S(vr)}),Xt}var i=S;i.default=S;class u{constructor(zn){void 0===zn.data&&(zn.data={}),this.data=zn.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function p(Xt){return Xt.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function f(Xt,...zn){const vr=Object.create(null);for(const si in Xt)vr[si]=Xt[si];return zn.forEach(function(si){for(const Ii in si)vr[Ii]=si[Ii]}),vr}const _=Xt=>!!Xt.kind;class y{constructor(zn,vr){this.buffer="",this.classPrefix=vr.classPrefix,zn.walk(this)}addText(zn){this.buffer+=p(zn)}openNode(zn){if(!_(zn))return;let vr=zn.kind;zn.sublanguage||(vr=`${this.classPrefix}${vr}`),this.span(vr)}closeNode(zn){!_(zn)||(this.buffer+="</span>")}value(){return this.buffer}span(zn){this.buffer+=`<span class="${zn}">`}}class T{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(zn){this.top.children.push(zn)}openNode(zn){const vr={kind:zn,children:[]};this.add(vr),this.stack.push(vr)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(zn){return this.constructor._walk(zn,this.rootNode)}static _walk(zn,vr){return"string"==typeof vr?zn.addText(vr):vr.children&&(zn.openNode(vr),vr.children.forEach(si=>this._walk(zn,si)),zn.closeNode(vr)),zn}static _collapse(zn){"string"!=typeof zn&&(!zn.children||(zn.children.every(vr=>"string"==typeof vr)?zn.children=[zn.children.join("")]:zn.children.forEach(vr=>{T._collapse(vr)})))}}class M extends T{constructor(zn){super(),this.options=zn}addKeyword(zn,vr){""!==zn&&(this.openNode(vr),this.addText(zn),this.closeNode())}addText(zn){""!==zn&&this.add(zn)}addSublanguage(zn,vr){const si=zn.root;si.kind=vr,si.sublanguage=!0,this.add(si)}toHTML(){return new y(this,this.options).value()}finalize(){return!0}}function F(Xt){return Xt?"string"==typeof Xt?Xt:Xt.source:null}const ue=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,se="[a-zA-Z]\\w*",ve="[a-zA-Z_]\\w*",oe="\\b\\d+(\\.\\d+)?",he="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",me="\\b(0b[01]+)",dt={begin:"\\\\[\\s\\S]",relevance:0},ze={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[dt]},Ye={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[dt]},je={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/},Ie=function(Xt,zn,vr={}){const si=f({className:"comment",begin:Xt,end:zn,contains:[]},vr);return si.contains.push(je),si.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),si},Ve=Ie("//","$"),He=Ie("/\\*","\\*/"),Zt=Ie("#","$");var zt=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:se,UNDERSCORE_IDENT_RE:ve,NUMBER_RE:oe,C_NUMBER_RE:he,BINARY_NUMBER_RE:me,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(Xt={})=>{const zn=/^#![ ]*\//;return Xt.binary&&(Xt.begin=function(...Xt){return Xt.map(vr=>F(vr)).join("")}(zn,/.*\b/,Xt.binary,/\b.*/)),f({className:"meta",begin:zn,end:/$/,relevance:0,"on:begin":(vr,si)=>{0!==vr.index&&si.ignoreMatch()}},Xt)},BACKSLASH_ESCAPE:dt,APOS_STRING_MODE:ze,QUOTE_STRING_MODE:Ye,PHRASAL_WORDS_MODE:je,COMMENT:Ie,C_LINE_COMMENT_MODE:Ve,C_BLOCK_COMMENT_MODE:He,HASH_COMMENT_MODE:Zt,NUMBER_MODE:{className:"number",begin:oe,relevance:0},C_NUMBER_MODE:{className:"number",begin:he,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:me,relevance:0},CSS_NUMBER_MODE:{className:"number",begin:oe+"(%|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},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[dt,{begin:/\[/,end:/\]/,relevance:0,contains:[dt]}]}]},TITLE_MODE:{className:"title",begin:se,relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:ve,relevance:0},METHOD_GUARD:{begin:"\\.\\s*"+ve,relevance:0},END_SAME_AS_BEGIN:function(Xt){return Object.assign(Xt,{"on:begin":(zn,vr)=>{vr.data._beginMatch=zn[1]},"on:end":(zn,vr)=>{vr.data._beginMatch!==zn[1]&&vr.ignoreMatch()}})}});function Yn(Xt,zn){"."===Xt.input[Xt.index-1]&&zn.ignoreMatch()}function Hr(Xt,zn){!zn||!Xt.beginKeywords||(Xt.begin="\\b("+Xt.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Xt.__beforeBegin=Yn,Xt.keywords=Xt.keywords||Xt.beginKeywords,delete Xt.beginKeywords,void 0===Xt.relevance&&(Xt.relevance=0))}function ci(Xt,zn){!Array.isArray(Xt.illegal)||(Xt.illegal=function(...Xt){return"("+Xt.map(vr=>F(vr)).join("|")+")"}(...Xt.illegal))}function Ir(Xt,zn){if(Xt.match){if(Xt.begin||Xt.end)throw new Error("begin & end are not supported with match");Xt.begin=Xt.match,delete Xt.match}}function wr(Xt,zn){void 0===Xt.relevance&&(Xt.relevance=1)}const Qr=["of","and","for","in","not","or","if","then","parent","list","value"];function In(Xt,zn,vr="keyword"){const si={};return"string"==typeof Xt?Ii(vr,Xt.split(" ")):Array.isArray(Xt)?Ii(vr,Xt):Object.keys(Xt).forEach(function(no){Object.assign(si,In(Xt[no],zn,no))}),si;function Ii(no,so){zn&&(so=so.map(Ze=>Ze.toLowerCase())),so.forEach(function(Ze){const Dr=Ze.split("|");si[Dr[0]]=[no,Hn(Dr[0],Dr[1])]})}}function Hn(Xt,zn){return zn?Number(zn):function(Xt){return Qr.includes(Xt.toLowerCase())}(Xt)?0:1}function Ur(Xt,{}){function vr(Ze,Dr){return new RegExp(F(Ze),"m"+(Xt.case_insensitive?"i":"")+(Dr?"g":""))}class si{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(Dr,jt){jt.position=this.position++,this.matchIndexes[this.matchAt]=jt,this.regexes.push([jt,Dr]),this.matchAt+=function(Xt){return new RegExp(Xt.toString()+"|").exec("").length-1}(Dr)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const Dr=this.regexes.map(jt=>jt[1]);this.matcherRe=vr(function(Xt,zn="|"){let vr=0;return Xt.map(si=>{vr+=1;const Ii=vr;let no=F(si),so="";for(;no.length>0;){const Ze=ue.exec(no);if(!Ze){so+=no;break}so+=no.substring(0,Ze.index),no=no.substring(Ze.index+Ze[0].length),"\\"===Ze[0][0]&&Ze[1]?so+="\\"+String(Number(Ze[1])+Ii):(so+=Ze[0],"("===Ze[0]&&vr++)}return so}).map(si=>`(${si})`).join(zn)}(Dr),!0),this.lastIndex=0}exec(Dr){this.matcherRe.lastIndex=this.lastIndex;const jt=this.matcherRe.exec(Dr);if(!jt)return null;const xt=jt.findIndex((Wn,kn)=>kn>0&&void 0!==Wn),mn=this.matchIndexes[xt];return jt.splice(0,xt),Object.assign(jt,mn)}}class Ii{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(Dr){if(this.multiRegexes[Dr])return this.multiRegexes[Dr];const jt=new si;return this.rules.slice(Dr).forEach(([xt,mn])=>jt.addRule(xt,mn)),jt.compile(),this.multiRegexes[Dr]=jt,jt}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(Dr,jt){this.rules.push([Dr,jt]),"begin"===jt.type&&this.count++}exec(Dr){const jt=this.getMatcher(this.regexIndex);jt.lastIndex=this.lastIndex;let xt=jt.exec(Dr);if(this.resumingScanAtSamePosition()&&(!xt||xt.index!==this.lastIndex)){const mn=this.getMatcher(0);mn.lastIndex=this.lastIndex+1,xt=mn.exec(Dr)}return xt&&(this.regexIndex+=xt.position+1,this.regexIndex===this.count&&this.considerAll()),xt}}if(Xt.compilerExtensions||(Xt.compilerExtensions=[]),Xt.contains&&Xt.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.");return Xt.classNameAliases=f(Xt.classNameAliases||{}),function so(Ze,Dr){const jt=Ze;if(Ze.isCompiled)return jt;[Ir].forEach(mn=>mn(Ze,Dr)),Xt.compilerExtensions.forEach(mn=>mn(Ze,Dr)),Ze.__beforeBegin=null,[Hr,ci,wr].forEach(mn=>mn(Ze,Dr)),Ze.isCompiled=!0;let xt=null;if("object"==typeof Ze.keywords&&(xt=Ze.keywords.$pattern,delete Ze.keywords.$pattern),Ze.keywords&&(Ze.keywords=In(Ze.keywords,Xt.case_insensitive)),Ze.lexemes&&xt)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return xt=xt||Ze.lexemes||/\w+/,jt.keywordPatternRe=vr(xt,!0),Dr&&(Ze.begin||(Ze.begin=/\B|\b/),jt.beginRe=vr(Ze.begin),Ze.endSameAsBegin&&(Ze.end=Ze.begin),!Ze.end&&!Ze.endsWithParent&&(Ze.end=/\B|\b/),Ze.end&&(jt.endRe=vr(Ze.end)),jt.terminatorEnd=F(Ze.end)||"",Ze.endsWithParent&&Dr.terminatorEnd&&(jt.terminatorEnd+=(Ze.end?"|":"")+Dr.terminatorEnd)),Ze.illegal&&(jt.illegalRe=vr(Ze.illegal)),Ze.contains||(Ze.contains=[]),Ze.contains=[].concat(...Ze.contains.map(function(mn){return function(Xt){return Xt.variants&&!Xt.cachedVariants&&(Xt.cachedVariants=Xt.variants.map(function(zn){return f(Xt,{variants:null},zn)})),Xt.cachedVariants?Xt.cachedVariants:di(Xt)?f(Xt,{starts:Xt.starts?f(Xt.starts):null}):Object.isFrozen(Xt)?f(Xt):Xt}("self"===mn?Ze:mn)})),Ze.contains.forEach(function(mn){so(mn,jt)}),Ze.starts&&so(Ze.starts,Dr),jt.matcher=function(Ze){const Dr=new Ii;return Ze.contains.forEach(jt=>Dr.addRule(jt.begin,{rule:jt,type:"begin"})),Ze.terminatorEnd&&Dr.addRule(Ze.terminatorEnd,{type:"end"}),Ze.illegal&&Dr.addRule(Ze.illegal,{type:"illegal"}),Dr}(jt),jt}(Xt)}function di(Xt){return!!Xt&&(Xt.endsWithParent||di(Xt.starts))}function On(Xt){const zn={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!Xt.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,p(this.code);let si={};return this.autoDetect?(si=Xt.highlightAuto(this.code),this.detectedLanguage=si.language):(si=Xt.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),si.value},autoDetect(){return!this.language||function(Xt){return Boolean(Xt||""===Xt)}(this.autodetect)},ignoreIllegals:()=>!0},render(si){return si("pre",{},[si("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:zn,VuePlugin:{install(si){si.component("highlightjs",zn)}}}}const Wt={"after:highlightElement":({el:Xt,result:zn,text:vr})=>{const si=ir(Xt);if(!si.length)return;const Ii=document.createElement("div");Ii.innerHTML=zn.value,zn.value=function(Xt,zn,vr){let si=0,Ii="";const no=[];function so(){return Xt.length&&zn.length?Xt[0].offset!==zn[0].offset?Xt[0].offset<zn[0].offset?Xt:zn:"start"===zn[0].event?Xt:zn:Xt.length?Xt:zn}function Ze(xt){Ii+="<"+Jn(xt)+[].map.call(xt.attributes,function(Wn){return" "+Wn.nodeName+'="'+p(Wn.value)+'"'}).join("")+">"}function Dr(xt){Ii+="</"+Jn(xt)+">"}function jt(xt){("start"===xt.event?Ze:Dr)(xt.node)}for(;Xt.length||zn.length;){let xt=so();if(Ii+=p(vr.substring(si,xt[0].offset)),si=xt[0].offset,xt===Xt){no.reverse().forEach(Dr);do{jt(xt.splice(0,1)[0]),xt=so()}while(xt===Xt&&xt.length&&xt[0].offset===si);no.reverse().forEach(Ze)}else"start"===xt[0].event?no.push(xt[0].node):no.pop(),jt(xt.splice(0,1)[0])}return Ii+p(vr.substr(si))}(si,ir(Ii),vr)}};function Jn(Xt){return Xt.nodeName.toLowerCase()}function ir(Xt){const zn=[];return function vr(si,Ii){for(let no=si.firstChild;no;no=no.nextSibling)3===no.nodeType?Ii+=no.nodeValue.length:1===no.nodeType&&(zn.push({event:"start",offset:Ii,node:no}),Ii=vr(no,Ii),Jn(no).match(/br|hr|img|input/)||zn.push({event:"stop",offset:Ii,node:no}));return Ii}(Xt,0),zn}const Vn={},zr=Xt=>{console.error(Xt)},hi=(Xt,...zn)=>{console.log(`WARN: ${Xt}`,...zn)},Ai=(Xt,zn)=>{Vn[`${Xt}/${zn}`]||(console.log(`Deprecated as of ${Xt}. ${zn}`),Vn[`${Xt}/${zn}`]=!0)},Tr=p,Nr=f,gn=Symbol("nomatch");var mr=function(Xt){const zn=Object.create(null),vr=Object.create(null),si=[];let Ii=!0;const no=/(^(<[^>]+>|\t|)+|\n)/gm,so="Could not find the language '{}', did you forget to load/include a language module?",Ze={disableAutodetect:!0,name:"Plain text",contains:[]};let Dr={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:M};function jt(cn){return Dr.noHighlightRe.test(cn)}function mn(cn,Ct,pr,nn){let Cn="",br="";"object"==typeof Ct?(Cn=cn,pr=Ct.ignoreIllegals,br=Ct.language,nn=void 0):(Ai("10.7.0","highlight(lang, code, ...args) has been deprecated."),Ai("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),br=cn,Cn=Ct);const zi={code:Cn,language:br};ar("before:highlight",zi);const Wo=zi.result?zi.result:Wn(zi.language,zi.code,pr,nn);return Wo.code=zi.code,ar("after:highlight",Wo),Wo}function Wn(cn,Ct,pr,nn){function Cn(Fo,Eo){const ks=Bs.case_insensitive?Eo[0].toLowerCase():Eo[0];return Object.prototype.hasOwnProperty.call(Fo.keywords,ks)&&Fo.keywords[ks]}function Wo(){null!=fo.subLanguage?function(){if(""===ls)return;let Fo=null;if("string"==typeof fo.subLanguage){if(!zn[fo.subLanguage])return void Ao.addText(ls);Fo=Wn(fo.subLanguage,ls,!0,Da[fo.subLanguage]),Da[fo.subLanguage]=Fo.top}else Fo=wn(ls,fo.subLanguage.length?fo.subLanguage:null);fo.relevance>0&&(gs+=Fo.relevance),Ao.addSublanguage(Fo.emitter,Fo.language)}():function(){if(!fo.keywords)return void Ao.addText(ls);let Fo=0;fo.keywordPatternRe.lastIndex=0;let Eo=fo.keywordPatternRe.exec(ls),ks="";for(;Eo;){ks+=ls.substring(Fo,Eo.index);const ms=Cn(fo,Eo);if(ms){const[Co,kr]=ms;Ao.addText(ks),ks="",gs+=kr,Co.startsWith("_")?ks+=Eo[0]:Ao.addKeyword(Eo[0],Bs.classNameAliases[Co]||Co)}else ks+=Eo[0];Fo=fo.keywordPatternRe.lastIndex,Eo=fo.keywordPatternRe.exec(ls)}ks+=ls.substr(Fo),Ao.addText(ks)}(),ls=""}function Do(Fo){return Fo.className&&Ao.openNode(Bs.classNameAliases[Fo.className]||Fo.className),fo=Object.create(Fo,{parent:{value:fo}}),fo}function Js(Fo,Eo,ks){let ms=function(Xt,zn){const vr=Xt&&Xt.exec(zn);return vr&&0===vr.index}(Fo.endRe,ks);if(ms){if(Fo["on:end"]){const Co=new u(Fo);Fo["on:end"](Eo,Co),Co.isMatchIgnored&&(ms=!1)}if(ms){for(;Fo.endsParent&&Fo.parent;)Fo=Fo.parent;return Fo}}if(Fo.endsWithParent)return Js(Fo.parent,Eo,ks)}function _s(Fo){return 0===fo.matcher.regexIndex?(ls+=Fo[0],1):(Qs=!0,0)}function qo(Fo){const Eo=Fo[0],ks=Ct.substr(Fo.index),ms=Js(fo,Fo,ks);if(!ms)return gn;const Co=fo;Co.skip?ls+=Eo:(Co.returnEnd||Co.excludeEnd||(ls+=Eo),Wo(),Co.excludeEnd&&(ls=Eo));do{fo.className&&Ao.closeNode(),!fo.skip&&!fo.subLanguage&&(gs+=fo.relevance),fo=fo.parent}while(fo!==ms.parent);return ms.starts&&(ms.endSameAsBegin&&(ms.starts.endRe=ms.endRe),Do(ms.starts)),Co.returnEnd?0:Eo.length}let Ia={};function pa(Fo,Eo){const ks=Eo&&Eo[0];if(ls+=Fo,null==ks)return Wo(),0;if("begin"===Ia.type&&"end"===Eo.type&&Ia.index===Eo.index&&""===ks){if(ls+=Ct.slice(Eo.index,Eo.index+1),!Ii){const ms=new Error("0 width match regex");throw ms.languageName=cn,ms.badRule=Ia.rule,ms}return 1}if(Ia=Eo,"begin"===Eo.type)return function(Fo){const Eo=Fo[0],ks=Fo.rule,ms=new u(ks),Co=[ks.__beforeBegin,ks["on:begin"]];for(const kr of Co)if(kr&&(kr(Fo,ms),ms.isMatchIgnored))return _s(Eo);return ks&&ks.endSameAsBegin&&(ks.endRe=function(Xt){return new RegExp(Xt.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(Eo)),ks.skip?ls+=Eo:(ks.excludeBegin&&(ls+=Eo),Wo(),!ks.returnBegin&&!ks.excludeBegin&&(ls=Eo)),Do(ks),ks.returnBegin?0:Eo.length}(Eo);if("illegal"===Eo.type&&!pr){const ms=new Error('Illegal lexeme "'+ks+'" for mode "'+(fo.className||"<unnamed>")+'"');throw ms.mode=fo,ms}if("end"===Eo.type){const ms=qo(Eo);if(ms!==gn)return ms}if("illegal"===Eo.type&&""===ks)return 1;if(pl>1e5&&pl>3*Eo.index)throw new Error("potential infinite loop, way more iterations than matches");return ls+=ks,ks.length}const Bs=ho(cn);if(!Bs)throw zr(so.replace("{}",cn)),new Error('Unknown language: "'+cn+'"');const Yl=Ur(Bs,{plugins:si});let yl="",fo=nn||Yl;const Da={},Ao=new Dr.__emitter(Dr);!function(){const Fo=[];for(let Eo=fo;Eo!==Bs;Eo=Eo.parent)Eo.className&&Fo.unshift(Eo.className);Fo.forEach(Eo=>Ao.openNode(Eo))}();let ls="",gs=0,Ra=0,pl=0,Qs=!1;try{for(fo.matcher.considerAll();;){pl++,Qs?Qs=!1:fo.matcher.considerAll(),fo.matcher.lastIndex=Ra;const Fo=fo.matcher.exec(Ct);if(!Fo)break;const ks=pa(Ct.substring(Ra,Fo.index),Fo);Ra=Fo.index+ks}return pa(Ct.substr(Ra)),Ao.closeAllNodes(),Ao.finalize(),yl=Ao.toHTML(),{relevance:Math.floor(gs),value:yl,language:cn,illegal:!1,emitter:Ao,top:fo}}catch(Fo){if(Fo.message&&Fo.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:Fo.message,context:Ct.slice(Ra-100,Ra+100),mode:Fo.mode},sofar:yl,relevance:0,value:Tr(Ct),emitter:Ao};if(Ii)return{illegal:!1,relevance:0,value:Tr(Ct),emitter:Ao,language:cn,top:fo,errorRaised:Fo};throw Fo}}function wn(cn,Ct){Ct=Ct||Dr.languages||Object.keys(zn);const pr=function(cn){const Ct={relevance:0,emitter:new Dr.__emitter(Dr),value:Tr(cn),illegal:!1,top:Ze};return Ct.emitter.addText(cn),Ct}(cn),nn=Ct.filter(ho).filter(Bo).map(Do=>Wn(Do,cn,!1));nn.unshift(pr);const Cn=nn.sort((Do,Js)=>{if(Do.relevance!==Js.relevance)return Js.relevance-Do.relevance;if(Do.language&&Js.language){if(ho(Do.language).supersetOf===Js.language)return 1;if(ho(Js.language).supersetOf===Do.language)return-1}return 0}),[br,zi]=Cn,Wo=br;return Wo.second_best=zi,Wo}const po={"before:highlightElement":({el:cn})=>{Dr.useBR&&(cn.innerHTML=cn.innerHTML.replace(/\n/g,"").replace(/<br[ /]*>/g,"\n"))},"after:highlightElement":({result:cn})=>{Dr.useBR&&(cn.value=cn.value.replace(/\n/g,"<br>"))}},yo=/^(<[^>]+>|\t)+/gm,Mo={"after:highlightElement":({result:cn})=>{Dr.tabReplace&&(cn.value=cn.value.replace(yo,Ct=>Ct.replace(/\t/g,Dr.tabReplace)))}};function Vi(cn){let Ct=null;const pr=function(cn){let Ct=cn.className+" ";Ct+=cn.parentNode?cn.parentNode.className:"";const pr=Dr.languageDetectRe.exec(Ct);if(pr){const nn=ho(pr[1]);return nn||(hi(so.replace("{}",pr[1])),hi("Falling back to no-highlight mode for this block.",cn)),nn?pr[1]:"no-highlight"}return Ct.split(/\s+/).find(nn=>jt(nn)||ho(nn))}(cn);if(jt(pr))return;ar("before:highlightElement",{el:cn,language:pr}),Ct=cn;const nn=Ct.textContent,Cn=pr?mn(nn,{language:pr,ignoreIllegals:!0}):wn(nn);ar("after:highlightElement",{el:cn,result:Cn,text:nn}),cn.innerHTML=Cn.value,function(cn,Ct,pr){const nn=Ct?vr[Ct]:pr;cn.classList.add("hljs"),nn&&cn.classList.add(nn)}(cn,pr,Cn.language),cn.result={language:Cn.language,re:Cn.relevance,relavance:Cn.relevance},Cn.second_best&&(cn.second_best={language:Cn.second_best.language,re:Cn.second_best.relevance,relavance:Cn.second_best.relevance})}const zo=()=>{zo.called||(zo.called=!0,Ai("10.6.0","initHighlighting() is deprecated.  Use highlightAll() instead."),document.querySelectorAll("pre code").forEach(Vi))};let Si=!1;function ai(){"loading"!==document.readyState?document.querySelectorAll("pre code").forEach(Vi):Si=!0}function ho(cn){return cn=(cn||"").toLowerCase(),zn[cn]||zn[vr[cn]]}function Ti(cn,{languageName:Ct}){"string"==typeof cn&&(cn=[cn]),cn.forEach(pr=>{vr[pr.toLowerCase()]=Ct})}function Bo(cn){const Ct=ho(cn);return Ct&&!Ct.disableAutodetect}function ar(cn,Ct){const pr=cn;si.forEach(function(nn){nn[pr]&&nn[pr](Ct)})}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",function(){Si&&ai()},!1),Object.assign(Xt,{highlight:mn,highlightAuto:wn,highlightAll:ai,fixMarkup:function(cn){return Ai("10.2.0","fixMarkup will be removed entirely in v11.0"),Ai("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function(cn){return Dr.tabReplace||Dr.useBR?cn.replace(no,Ct=>"\n"===Ct?Dr.useBR?"<br>":Ct:Dr.tabReplace?Ct.replace(/\t/g,Dr.tabReplace):Ct):cn}(cn)},highlightElement:Vi,highlightBlock:function(cn){return Ai("10.7.0","highlightBlock will be removed entirely in v12.0"),Ai("10.7.0","Please use highlightElement now."),Vi(cn)},configure:function(cn){cn.useBR&&(Ai("10.3.0","'useBR' will be removed entirely in v11.0"),Ai("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),Dr=Nr(Dr,cn)},initHighlighting:zo,initHighlightingOnLoad:function(){Ai("10.6.0","initHighlightingOnLoad() is deprecated.  Use highlightAll() instead."),Si=!0},registerLanguage:function(cn,Ct){let pr=null;try{pr=Ct(Xt)}catch(nn){if(zr("Language definition for '{}' could not be registered.".replace("{}",cn)),!Ii)throw nn;zr(nn),pr=Ze}pr.name||(pr.name=cn),zn[cn]=pr,pr.rawDefinition=Ct.bind(null,Xt),pr.aliases&&Ti(pr.aliases,{languageName:cn})},unregisterLanguage:function(cn){delete zn[cn];for(const Ct of Object.keys(vr))vr[Ct]===cn&&delete vr[Ct]},listLanguages:function(){return Object.keys(zn)},getLanguage:ho,registerAliases:Ti,requireLanguage:function(cn){Ai("10.4.0","requireLanguage will be removed entirely in v11."),Ai("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const Ct=ho(cn);if(Ct)return Ct;throw new Error("The '{}' language is required, but not loaded.".replace("{}",cn))},autoDetection:Bo,inherit:Nr,addPlugin:function(cn){(function(cn){cn["before:highlightBlock"]&&!cn["before:highlightElement"]&&(cn["before:highlightElement"]=Ct=>{cn["before:highlightBlock"](Object.assign({block:Ct.el},Ct))}),cn["after:highlightBlock"]&&!cn["after:highlightElement"]&&(cn["after:highlightElement"]=Ct=>{cn["after:highlightBlock"](Object.assign({block:Ct.el},Ct))})})(cn),si.push(cn)},vuePlugin:On(Xt).VuePlugin}),Xt.debugMode=function(){Ii=!1},Xt.safeMode=function(){Ii=!0},Xt.versionString="10.7.3";for(const cn in zt)"object"==typeof zt[cn]&&i(zt[cn]);return Object.assign(Xt,zt),Xt.addPlugin(po),Xt.addPlugin(Wt),Xt.addPlugin(Mo),Xt}({});v.exports=mr},4357:v=>{function i(...u){return u.map(f=>function(u){return u?"string"==typeof u?u:u.source:null}(f)).join("")}v.exports=function(u){const p={},f={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[p]}]};Object.assign(p,{className:"variable",variants:[{begin:i(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},f]});const e={className:"subst",begin:/\$\(/,end:/\)/,contains:[u.BACKSLASH_ESCAPE]},_={begin:/<<-?\s*(?=\w+)/,starts:{contains:[u.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},y={className:"string",begin:/"/,end:/"/,contains:[u.BACKSLASH_ESCAPE,p,e]};e.contains.push(y);const R={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},u.NUMBER_MODE,p]},Z=u.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),J={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[u.inherit(u.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[Z,u.SHEBANG(),J,R,u.HASH_COMMENT_MODE,_,y,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},p]}}},28390:v=>{function i(...u){return u.map(f=>function(u){return u?"string"==typeof u?u:u.source:null}(f)).join("")}v.exports=function(u){const p="HTTP/(2|1\\.[01])",e={className:"attribute",begin:i("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},_=[e,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+p+" \\d{3})",end:/$/,contains:[{className:"meta",begin:p},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:_}},{begin:"(?=^[A-Z]+ (.*?) "+p+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:p},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:_}},u.inherit(e,{relevance:0})]}}},36147:v=>{const S="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],r=["true","false","null","undefined","NaN","Infinity"],_=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function T(F){return M("(?=",F,")")}function M(...F){return F.map(J=>function(F){return F?"string"==typeof F?F:F.source:null}(J)).join("")}v.exports=function(F){const J=S,ee={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Ve,He)=>{const Zt=Ve[0].length+Ve.index,st=Ve.input[Zt];"<"!==st?">"===st&&(((Ve,{after:He})=>{const Zt="</"+Ve[0].slice(1);return-1!==Ve.input.indexOf(Zt,He)})(Ve,{after:Zt})||He.ignoreMatch()):He.ignoreMatch()}},ue={$pattern:S,keyword:i,literal:r,built_in:_},ae="[0-9](_?[0-9])*",$=`\\.(${ae})`,se="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",ve={className:"number",variants:[{begin:`(\\b(${se})((${$})|\\.)?|(${$}))[eE][+-]?(${ae})\\b`},{begin:`\\b(${se})\\b((${$})\\b|\\.)?|(${$})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},oe={className:"subst",begin:"\\$\\{",end:"\\}",keywords:ue,contains:[]},he={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[F.BACKSLASH_ESCAPE,oe],subLanguage:"xml"}},me={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[F.BACKSLASH_ESCAPE,oe],subLanguage:"css"}},Oe={className:"string",begin:"`",end:"`",contains:[F.BACKSLASH_ESCAPE,oe]},dt={className:"comment",variants:[F.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:J+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),F.C_BLOCK_COMMENT_MODE,F.C_LINE_COMMENT_MODE]},ze=[F.APOS_STRING_MODE,F.QUOTE_STRING_MODE,he,me,Oe,ve,F.REGEXP_MODE];oe.contains=ze.concat({begin:/\{/,end:/\}/,keywords:ue,contains:["self"].concat(ze)});const Ye=[].concat(dt,oe.contains),je=Ye.concat([{begin:/\(/,end:/\)/,keywords:ue,contains:["self"].concat(Ye)}]),Ie={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:ue,contains:je};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:ue,exports:{PARAMS_CONTAINS:je},illegal:/#(?![$_A-z])/,contains:[F.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},F.APOS_STRING_MODE,F.QUOTE_STRING_MODE,he,me,Oe,dt,ve,{begin:M(/[{,\n]\s*/,T(M(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,J+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:J+T("\\s*:"),relevance:0}]},{begin:"("+F.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[dt,F.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+F.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:F.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:ue,contains:je}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:"</>"},{begin:ee.begin,"on:begin":ee.isTrulyOpeningTag,end:ee.end}],subLanguage:"xml",contains:[{begin:ee.begin,end:ee.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:ue,contains:["self",F.inherit(F.TITLE_MODE,{begin:J}),Ie],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:F.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[Ie,F.inherit(F.TITLE_MODE,{begin:J})]},{variants:[{begin:"\\."+J},{begin:"\\$"+J}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},F.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[F.inherit(F.TITLE_MODE,{begin:J}),"self",Ie]},{begin:"(get|set)\\s+(?="+J+"\\()",end:/\{/,keywords:"get set",contains:[F.inherit(F.TITLE_MODE,{begin:J}),{begin:/\(\)/},Ie]},{begin:/\$[(.]/}]}}},92229:v=>{v.exports=function(i){const r={literal:"true false null"},u=[i.C_LINE_COMMENT_MODE,i.C_BLOCK_COMMENT_MODE],p=[i.QUOTE_STRING_MODE,i.C_NUMBER_MODE],f={end:",",endsWithParent:!0,excludeEnd:!0,contains:p,keywords:r},e={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE],illegal:"\\n"},i.inherit(f,{begin:/:/})].concat(u),illegal:"\\S"},_={begin:"\\[",end:"\\]",contains:[i.inherit(f)],illegal:"\\S"};return p.push(e,_),u.forEach(function(y){p.push(y)}),{name:"JSON",contains:p,keywords:r,illegal:"\\S"}}},78932:v=>{v.exports=function(i){const f={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},_={begin:"`[\\s\\S]",relevance:0},y={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},M={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[_,y,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},R={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},Z=i.inherit(i.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),J={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},Q={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[i.TITLE_MODE]},ee={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[y]}]},ue={begin:/using\s/,end:/$/,returnBegin:!0,contains:[M,R,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},ae={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},se={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(f.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},i.inherit(i.TITLE_MODE,{endsParent:!0})]},ve=[se,Z,_,i.NUMBER_MODE,M,R,J,y,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],oe={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",ve,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return se.contains.unshift(oe),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:f,contains:ve.concat(Q,ee,ue,ae,oe)}}},13546:v=>{function S(e){return e?"string"==typeof e?e:e.source:null}function i(e){return u("(?=",e,")")}function u(...e){return e.map(y=>S(y)).join("")}function p(...e){return"("+e.map(y=>S(y)).join("|")+")"}v.exports=function(e){const _=u(/[A-Z_]/,u("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),T={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},M={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},R=e.inherit(M,{begin:/\(/,end:/\)/}),F=e.inherit(e.APOS_STRING_MODE,{className:"meta-string"}),Z=e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),J={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[T]},{begin:/'/,end:/'/,contains:[T]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[M,Z,F,R,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[M,R,Z,F]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},T,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[J],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[J],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:u(/</,i(u(_,p(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:_,relevance:0,starts:J}]},{className:"tag",begin:u(/<\//,i(u(_,/>/))),contains:[{className:"name",begin:_,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},44776:v=>{v.exports=function(i){var r="true false yes no null",u="[\\w#;/?:@&=+$,.~*'()[\\]]+",e={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[i.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},_=i.inherit(e,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),Z={end:",",endsWithParent:!0,excludeEnd:!0,keywords:r,relevance:0},ee=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+u},{className:"type",begin:"!<"+u+">"},{className:"type",begin:"!"+u},{className:"type",begin:"!!"+u},{className:"meta",begin:"&"+i.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+i.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},i.HASH_COMMENT_MODE,{beginKeywords:r,keywords:{literal:r}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:i.C_NUMBER_RE+"\\b",relevance:0},{begin:/\{/,end:/\}/,contains:[Z],illegal:"\\n",relevance:0},{begin:"\\[",end:"\\]",contains:[Z],illegal:"\\n",relevance:0},e],ue=[...ee];return ue.pop(),ue.push(_),Z.contains=ue,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:ee}}},62568:(v,S,i)=>{"use strict";var r=i(38308),u={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},p={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},e={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},_={};function y(ee){return r.isMemo(ee)?e:_[ee.$$typeof]||u}_[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},_[r.Memo]=e;var T=Object.defineProperty,M=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols,F=Object.getOwnPropertyDescriptor,Z=Object.getPrototypeOf,J=Object.prototype;v.exports=function Q(ee,ue,ae){if("string"!=typeof ue){if(J){var $=Z(ue);$&&$!==J&&Q(ee,$,ae)}var se=M(ue);R&&(se=se.concat(R(ue)));for(var ve=y(ee),oe=y(ue),he=0;he<se.length;++he){var me=se[he];if(!(p[me]||ae&&ae[me]||oe&&oe[me]||ve&&ve[me])){var Oe=F(ue,me);try{T(ee,me,Oe)}catch(ce){}}}}return ee}},12658:(v,S)=>{S.read=function(i,r,u,p,f){var e,_,y=8*f-p-1,T=(1<<y)-1,M=T>>1,R=-7,F=u?f-1:0,Z=u?-1:1,J=i[r+F];for(F+=Z,e=J&(1<<-R)-1,J>>=-R,R+=y;R>0;e=256*e+i[r+F],F+=Z,R-=8);for(_=e&(1<<-R)-1,e>>=-R,R+=p;R>0;_=256*_+i[r+F],F+=Z,R-=8);if(0===e)e=1-M;else{if(e===T)return _?NaN:1/0*(J?-1:1);_+=Math.pow(2,p),e-=M}return(J?-1:1)*_*Math.pow(2,e-p)},S.write=function(i,r,u,p,f,e){var _,y,T,M=8*e-f-1,R=(1<<M)-1,F=R>>1,Z=23===f?Math.pow(2,-24)-Math.pow(2,-77):0,J=p?0:e-1,Q=p?1:-1,ee=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(y=isNaN(r)?1:0,_=R):(_=Math.floor(Math.log(r)/Math.LN2),r*(T=Math.pow(2,-_))<1&&(_--,T*=2),(r+=_+F>=1?Z/T:Z*Math.pow(2,1-F))*T>=2&&(_++,T/=2),_+F>=R?(y=0,_=R):_+F>=1?(y=(r*T-1)*Math.pow(2,f),_+=F):(y=r*Math.pow(2,F-1)*Math.pow(2,f),_=0));f>=8;i[u+J]=255&y,J+=Q,y/=256,f-=8);for(_=_<<f|y,M+=f;M>0;i[u+J]=255&_,J+=Q,_/=256,M-=8);i[u+J-Q]|=128*ee}},16482:function(v){v.exports=function(){"use strict";var S=Array.prototype.slice;function i(V,Ae){Ae&&(V.prototype=Object.create(Ae.prototype)),V.prototype.constructor=V}function r(V){return e(V)?V:ci(V)}function u(V){return _(V)?V:Ir(V)}function p(V){return y(V)?V:wr(V)}function f(V){return e(V)&&!T(V)?V:Qr(V)}function e(V){return!(!V||!V[R])}function _(V){return!(!V||!V[F])}function y(V){return!(!V||!V[Z])}function T(V){return _(V)||y(V)}function M(V){return!(!V||!V[J])}i(u,r),i(p,r),i(f,r),r.isIterable=e,r.isKeyed=_,r.isIndexed=y,r.isAssociative=T,r.isOrdered=M,r.Keyed=u,r.Indexed=p,r.Set=f;var R="@@__IMMUTABLE_ITERABLE__@@",F="@@__IMMUTABLE_KEYED__@@",Z="@@__IMMUTABLE_INDEXED__@@",J="@@__IMMUTABLE_ORDERED__@@",Q="delete",$={},se={value:!1},ve={value:!1};function oe(V){return V.value=!1,V}function he(V){V&&(V.value=!0)}function me(){}function Oe(V,Ae){Ae=Ae||0;for(var ot=Math.max(0,V.length-Ae),_t=new Array(ot),lt=0;lt<ot;lt++)_t[lt]=V[lt+Ae];return _t}function ce(V){return void 0===V.size&&(V.size=V.__iterate(ze)),V.size}function dt(V,Ae){if("number"!=typeof Ae){var ot=Ae>>>0;if(""+ot!==Ae||4294967295===ot)return NaN;Ae=ot}return Ae<0?ce(V)+Ae:Ae}function ze(){return!0}function Ye(V,Ae,ot){return(0===V||void 0!==ot&&V<=-ot)&&(void 0===Ae||void 0!==ot&&Ae>=ot)}function je(V,Ae){return Ve(V,Ae,0)}function Ie(V,Ae){return Ve(V,Ae,Ae)}function Ve(V,Ae,ot){return void 0===V?ot:V<0?Math.max(0,Ae+V):void 0===Ae?V:Math.min(Ae,V)}var en="function"==typeof Symbol&&Symbol.iterator,$t="@@iterator",Gt=en||$t;function Ut(V){this.next=V}function Bt(V,Ae,ot,_t){var lt=0===V?Ae:1===V?ot:[Ae,ot];return _t?_t.value=lt:_t={value:lt,done:!1},_t}function mt(){return{value:void 0,done:!0}}function Yt(V){return!!Yn(V)}function Dt(V){return V&&"function"==typeof V.next}function zt(V){var Ae=Yn(V);return Ae&&Ae.call(V)}function Yn(V){var Ae=V&&(en&&V[en]||V[$t]);if("function"==typeof Ae)return Ae}function Hr(V){return V&&"number"==typeof V.length}function ci(V){return null==V?Hi():e(V)?V.toSeq():function(V){var Ae=Jn(V)||"object"==typeof V&&new Hn(V);if(!Ae)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+V);return Ae}(V)}function Ir(V){return null==V?Hi().toKeyedSeq():e(V)?_(V)?V.toSeq():V.fromEntrySeq():Br(V)}function wr(V){return null==V?Hi():e(V)?_(V)?V.entrySeq():V.toIndexedSeq():On(V)}function Qr(V){return(null==V?Hi():e(V)?_(V)?V.entrySeq():V:On(V)).toSetSeq()}Ut.prototype.toString=function(){return"[Iterator]"},Ut.KEYS=0,Ut.VALUES=1,Ut.ENTRIES=2,Ut.prototype.inspect=Ut.prototype.toSource=function(){return this.toString()},Ut.prototype[Gt]=function(){return this},i(ci,r),ci.of=function(){return ci(arguments)},ci.prototype.toSeq=function(){return this},ci.prototype.toString=function(){return this.__toString("Seq {","}")},ci.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},ci.prototype.__iterate=function(V,Ae){return ir(this,V,Ae,!0)},ci.prototype.__iterator=function(V,Ae){return Lr(this,V,Ae,!0)},i(Ir,ci),Ir.prototype.toKeyedSeq=function(){return this},i(wr,ci),wr.of=function(){return wr(arguments)},wr.prototype.toIndexedSeq=function(){return this},wr.prototype.toString=function(){return this.__toString("Seq [","]")},wr.prototype.__iterate=function(V,Ae){return ir(this,V,Ae,!1)},wr.prototype.__iterator=function(V,Ae){return Lr(this,V,Ae,!1)},i(Qr,ci),Qr.of=function(){return Qr(arguments)},Qr.prototype.toSetSeq=function(){return this},ci.isSeq=di,ci.Keyed=Ir,ci.Set=Qr,ci.Indexed=wr;var $i,En,zn,Kr="@@__IMMUTABLE_SEQ__@@";function In(V){this._array=V,this.size=V.length}function Hn(V){var Ae=Object.keys(V);this._object=V,this._keys=Ae,this.size=Ae.length}function Zr(V){this._iterable=V,this.size=V.length||V.size}function Ur(V){this._iterator=V,this._iteratorCache=[]}function di(V){return!(!V||!V[Kr])}function Hi(){return $i||($i=new In([]))}function Br(V){var Ae=Array.isArray(V)?new In(V).fromEntrySeq():Dt(V)?new Ur(V).fromEntrySeq():Yt(V)?new Zr(V).fromEntrySeq():"object"==typeof V?new Hn(V):void 0;if(!Ae)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+V);return Ae}function On(V){var Ae=Jn(V);if(!Ae)throw new TypeError("Expected Array or iterable object of values: "+V);return Ae}function Jn(V){return Hr(V)?new In(V):Dt(V)?new Ur(V):Yt(V)?new Zr(V):void 0}function ir(V,Ae,ot,_t){var lt=V._cache;if(lt){for(var un=lt.length-1,yn=0;yn<=un;yn++){var Or=lt[ot?un-yn:yn];if(!1===Ae(Or[1],_t?Or[0]:yn,V))return yn+1}return yn}return V.__iterateUncached(Ae,ot)}function Lr(V,Ae,ot,_t){var lt=V._cache;if(lt){var un=lt.length-1,yn=0;return new Ut(function(){var Or=lt[ot?un-yn:yn];return yn++>un?{value:void 0,done:!0}:Bt(Ae,_t?Or[0]:yn-1,Or[1])})}return V.__iteratorUncached(Ae,ot)}function Vn(V,Ae){return Ae?zr(Ae,V,"",{"":V}):hi(V)}function zr(V,Ae,ot,_t){return Array.isArray(Ae)?V.call(_t,ot,wr(Ae).map(function(lt,un){return zr(V,lt,un,Ae)})):Ai(Ae)?V.call(_t,ot,Ir(Ae).map(function(lt,un){return zr(V,lt,un,Ae)})):Ae}function hi(V){return Array.isArray(V)?wr(V).map(hi).toList():Ai(V)?Ir(V).map(hi).toMap():V}function Ai(V){return V&&(V.constructor===Object||void 0===V.constructor)}function Tr(V,Ae){if(V===Ae||V!=V&&Ae!=Ae)return!0;if(!V||!Ae)return!1;if("function"==typeof V.valueOf&&"function"==typeof Ae.valueOf){if((V=V.valueOf())===(Ae=Ae.valueOf())||V!=V&&Ae!=Ae)return!0;if(!V||!Ae)return!1}return!("function"!=typeof V.equals||"function"!=typeof Ae.equals||!V.equals(Ae))}function Nr(V,Ae){if(V===Ae)return!0;if(!e(Ae)||void 0!==V.size&&void 0!==Ae.size&&V.size!==Ae.size||void 0!==V.__hash&&void 0!==Ae.__hash&&V.__hash!==Ae.__hash||_(V)!==_(Ae)||y(V)!==y(Ae)||M(V)!==M(Ae))return!1;if(0===V.size&&0===Ae.size)return!0;var ot=!T(V);if(M(V)){var _t=V.entries();return Ae.every(function(Vr,_i){var oi=_t.next().value;return oi&&Tr(oi[1],Vr)&&(ot||Tr(oi[0],_i))})&&_t.next().done}var lt=!1;if(void 0===V.size)if(void 0===Ae.size)"function"==typeof V.cacheResult&&V.cacheResult();else{lt=!0;var un=V;V=Ae,Ae=un}var yn=!0,Or=Ae.__iterate(function(Vr,_i){if(ot?!V.has(Vr):lt?!Tr(Vr,V.get(_i,$)):!Tr(V.get(_i,$),Vr))return yn=!1,!1});return yn&&V.size===Or}function gn(V,Ae){if(!(this instanceof gn))return new gn(V,Ae);if(this._value=V,this.size=void 0===Ae?1/0:Math.max(0,Ae),0===this.size){if(En)return En;En=this}}function mr(V,Ae){if(!V)throw new Error(Ae)}function Xt(V,Ae,ot){if(!(this instanceof Xt))return new Xt(V,Ae,ot);if(mr(0!==ot,"Cannot step a Range by 0"),V=V||0,void 0===Ae&&(Ae=1/0),ot=void 0===ot?1:Math.abs(ot),Ae<V&&(ot=-ot),this._start=V,this._end=Ae,this._step=ot,this.size=Math.max(0,Math.ceil((Ae-V)/ot-1)+1),0===this.size){if(zn)return zn;zn=this}}function vr(){throw TypeError("Abstract")}function si(){}function Ii(){}function no(){}ci.prototype[Kr]=!0,i(In,wr),In.prototype.get=function(V,Ae){return this.has(V)?this._array[dt(this,V)]:Ae},In.prototype.__iterate=function(V,Ae){for(var ot=this._array,_t=ot.length-1,lt=0;lt<=_t;lt++)if(!1===V(ot[Ae?_t-lt:lt],lt,this))return lt+1;return lt},In.prototype.__iterator=function(V,Ae){var ot=this._array,_t=ot.length-1,lt=0;return new Ut(function(){return lt>_t?{value:void 0,done:!0}:Bt(V,lt,ot[Ae?_t-lt++:lt++])})},i(Hn,Ir),Hn.prototype.get=function(V,Ae){return void 0===Ae||this.has(V)?this._object[V]:Ae},Hn.prototype.has=function(V){return this._object.hasOwnProperty(V)},Hn.prototype.__iterate=function(V,Ae){for(var ot=this._object,_t=this._keys,lt=_t.length-1,un=0;un<=lt;un++){var yn=_t[Ae?lt-un:un];if(!1===V(ot[yn],yn,this))return un+1}return un},Hn.prototype.__iterator=function(V,Ae){var ot=this._object,_t=this._keys,lt=_t.length-1,un=0;return new Ut(function(){var yn=_t[Ae?lt-un:un];return un++>lt?{value:void 0,done:!0}:Bt(V,yn,ot[yn])})},Hn.prototype[J]=!0,i(Zr,wr),Zr.prototype.__iterateUncached=function(V,Ae){if(Ae)return this.cacheResult().__iterate(V,Ae);var _t=zt(this._iterable),lt=0;if(Dt(_t))for(var un;!(un=_t.next()).done&&!1!==V(un.value,lt++,this););return lt},Zr.prototype.__iteratorUncached=function(V,Ae){if(Ae)return this.cacheResult().__iterator(V,Ae);var _t=zt(this._iterable);if(!Dt(_t))return new Ut(mt);var lt=0;return new Ut(function(){var un=_t.next();return un.done?un:Bt(V,lt++,un.value)})},i(Ur,wr),Ur.prototype.__iterateUncached=function(V,Ae){if(Ae)return this.cacheResult().__iterate(V,Ae);for(var ot=this._iterator,_t=this._iteratorCache,lt=0;lt<_t.length;)if(!1===V(_t[lt],lt++,this))return lt;for(var un;!(un=ot.next()).done;){var yn=un.value;if(_t[lt]=yn,!1===V(yn,lt++,this))break}return lt},Ur.prototype.__iteratorUncached=function(V,Ae){if(Ae)return this.cacheResult().__iterator(V,Ae);var ot=this._iterator,_t=this._iteratorCache,lt=0;return new Ut(function(){if(lt>=_t.length){var un=ot.next();if(un.done)return un;_t[lt]=un.value}return Bt(V,lt,_t[lt++])})},i(gn,wr),gn.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},gn.prototype.get=function(V,Ae){return this.has(V)?this._value:Ae},gn.prototype.includes=function(V){return Tr(this._value,V)},gn.prototype.slice=function(V,Ae){var ot=this.size;return Ye(V,Ae,ot)?this:new gn(this._value,Ie(Ae,ot)-je(V,ot))},gn.prototype.reverse=function(){return this},gn.prototype.indexOf=function(V){return Tr(this._value,V)?0:-1},gn.prototype.lastIndexOf=function(V){return Tr(this._value,V)?this.size:-1},gn.prototype.__iterate=function(V,Ae){for(var ot=0;ot<this.size;ot++)if(!1===V(this._value,ot,this))return ot+1;return ot},gn.prototype.__iterator=function(V,Ae){var ot=this,_t=0;return new Ut(function(){return _t<ot.size?Bt(V,_t++,ot._value):{value:void 0,done:!0}})},gn.prototype.equals=function(V){return V instanceof gn?Tr(this._value,V._value):Nr(V)},i(Xt,wr),Xt.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(1!==this._step?" by "+this._step:"")+" ]"},Xt.prototype.get=function(V,Ae){return this.has(V)?this._start+dt(this,V)*this._step:Ae},Xt.prototype.includes=function(V){var Ae=(V-this._start)/this._step;return Ae>=0&&Ae<this.size&&Ae===Math.floor(Ae)},Xt.prototype.slice=function(V,Ae){return Ye(V,Ae,this.size)?this:(V=je(V,this.size),(Ae=Ie(Ae,this.size))<=V?new Xt(0,0):new Xt(this.get(V,this._end),this.get(Ae,this._end),this._step))},Xt.prototype.indexOf=function(V){var Ae=V-this._start;if(Ae%this._step==0){var ot=Ae/this._step;if(ot>=0&&ot<this.size)return ot}return-1},Xt.prototype.lastIndexOf=function(V){return this.indexOf(V)},Xt.prototype.__iterate=function(V,Ae){for(var ot=this.size-1,_t=this._step,lt=Ae?this._start+ot*_t:this._start,un=0;un<=ot;un++){if(!1===V(lt,un,this))return un+1;lt+=Ae?-_t:_t}return un},Xt.prototype.__iterator=function(V,Ae){var ot=this.size-1,_t=this._step,lt=Ae?this._start+ot*_t:this._start,un=0;return new Ut(function(){var yn=lt;return lt+=Ae?-_t:_t,un>ot?{value:void 0,done:!0}:Bt(V,un++,yn)})},Xt.prototype.equals=function(V){return V instanceof Xt?this._start===V._start&&this._end===V._end&&this._step===V._step:Nr(this,V)},i(vr,r),i(si,vr),i(Ii,vr),i(no,vr),vr.Keyed=si,vr.Indexed=Ii,vr.Set=no;var so="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(Ae,ot){var _t=65535&(Ae|=0),lt=65535&(ot|=0);return _t*lt+((Ae>>>16)*lt+_t*(ot>>>16)<<16>>>0)|0};function Ze(V){return V>>>1&1073741824|3221225471&V}function Dr(V){if(!1===V||null==V||"function"==typeof V.valueOf&&(!1===(V=V.valueOf())||null==V))return 0;if(!0===V)return 1;var Ae=typeof V;if("number"===Ae){if(V!=V||V===1/0)return 0;var ot=0|V;for(ot!==V&&(ot^=4294967295*V);V>4294967295;)ot^=V/=4294967295;return Ze(ot)}if("string"===Ae)return V.length>Mo?function(V){var Ae=zo[V];return void 0===Ae&&(Ae=xt(V),cs===Vi&&(cs=0,zo={}),cs++,zo[V]=Ae),Ae}(V):xt(V);if("function"==typeof V.hashCode)return V.hashCode();if("object"===Ae)return function(V){var Ae;if(nr&&void 0!==(Ae=Gi.get(V))||void 0!==(Ae=V[yo])||!kn&&(void 0!==(Ae=V.propertyIsEnumerable&&V.propertyIsEnumerable[yo])||void 0!==(Ae=function(V){if(V&&V.nodeType>0)switch(V.nodeType){case 1:return V.uniqueID;case 9:return V.documentElement&&V.documentElement.uniqueID}}(V))))return Ae;if(Ae=++po,1073741824&po&&(po=0),nr)Gi.set(V,Ae);else{if(void 0!==Wn&&!1===Wn(V))throw new Error("Non-extensible objects are not allowed as keys.");if(kn)Object.defineProperty(V,yo,{enumerable:!1,configurable:!1,writable:!1,value:Ae});else if(void 0!==V.propertyIsEnumerable&&V.propertyIsEnumerable===V.constructor.prototype.propertyIsEnumerable)V.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},V.propertyIsEnumerable[yo]=Ae;else{if(void 0===V.nodeType)throw new Error("Unable to set a non-enumerable property on object.");V[yo]=Ae}}return Ae}(V);if("function"==typeof V.toString)return xt(V.toString());throw new Error("Value type "+Ae+" cannot be hashed.")}function xt(V){for(var Ae=0,ot=0;ot<V.length;ot++)Ae=31*Ae+V.charCodeAt(ot)|0;return Ze(Ae)}var Wn=Object.isExtensible,kn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(V){return!1}}();var Gi,nr="function"==typeof WeakMap;nr&&(Gi=new WeakMap);var po=0,yo="__immutablehash__";"function"==typeof Symbol&&(yo=Symbol(yo));var Mo=16,Vi=255,cs=0,zo={};function So(V){mr(V!==1/0,"Cannot perform this action with an infinite size.")}function Si(V){return null==V?Ht():ai(V)&&!M(V)?V:Ht().withMutations(function(Ae){var ot=u(V);So(ot.size),ot.forEach(function(_t,lt){return Ae.set(lt,_t)})})}function ai(V){return!(!V||!V[Zn])}i(Si,si),Si.of=function(){var V=S.call(arguments,0);return Ht().withMutations(function(Ae){for(var ot=0;ot<V.length;ot+=2){if(ot+1>=V.length)throw new Error("Missing value for key: "+V[ot]);Ae.set(V[ot],V[ot+1])}})},Si.prototype.toString=function(){return this.__toString("Map {","}")},Si.prototype.get=function(V,Ae){return this._root?this._root.get(0,void 0,V,Ae):Ae},Si.prototype.set=function(V,Ae){return cn(this,V,Ae)},Si.prototype.setIn=function(V,Ae){return this.updateIn(V,$,function(){return Ae})},Si.prototype.remove=function(V){return cn(this,V,$)},Si.prototype.deleteIn=function(V){return this.updateIn(V,function(){return $})},Si.prototype.update=function(V,Ae,ot){return 1===arguments.length?V(this):this.updateIn([V],Ae,ot)},Si.prototype.updateIn=function(V,Ae,ot){ot||(ot=Ae,Ae=void 0);var _t=bs(this,Qi(V),Ae,ot);return _t===$?void 0:_t},Si.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Ht()},Si.prototype.merge=function(){return Wo(this,void 0,arguments)},Si.prototype.mergeWith=function(V){return Wo(this,V,S.call(arguments,1))},Si.prototype.mergeIn=function(V){var Ae=S.call(arguments,1);return this.updateIn(V,Ht(),function(ot){return"function"==typeof ot.merge?ot.merge.apply(ot,Ae):Ae[Ae.length-1]})},Si.prototype.mergeDeep=function(){return Wo(this,Do,arguments)},Si.prototype.mergeDeepWith=function(V){var Ae=S.call(arguments,1);return Wo(this,Js(V),Ae)},Si.prototype.mergeDeepIn=function(V){var Ae=S.call(arguments,1);return this.updateIn(V,Ht(),function(ot){return"function"==typeof ot.mergeDeep?ot.mergeDeep.apply(ot,Ae):Ae[Ae.length-1]})},Si.prototype.sort=function(V){return ne(el(this,V))},Si.prototype.sortBy=function(V,Ae){return ne(el(this,Ae,V))},Si.prototype.withMutations=function(V){var Ae=this.asMutable();return V(Ae),Ae.wasAltered()?Ae.__ensureOwner(this.__ownerID):this},Si.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new me)},Si.prototype.asImmutable=function(){return this.__ensureOwner()},Si.prototype.wasAltered=function(){return this.__altered},Si.prototype.__iterator=function(V,Ae){return new Bo(this,V,Ae)},Si.prototype.__iterate=function(V,Ae){var ot=this,_t=0;return this._root&&this._root.iterate(function(lt){return _t++,V(lt[1],lt[0],ot)},Ae),_t},Si.prototype.__ensureOwner=function(V){return V===this.__ownerID?this:V?ar(this.size,this._root,V,this.__hash):(this.__ownerID=V,this.__altered=!1,this)},Si.isMap=ai;var ln,Zn="@@__IMMUTABLE_MAP__@@",cr=Si.prototype;function yr(V,Ae){this.ownerID=V,this.entries=Ae}function rr(V,Ae,ot){this.ownerID=V,this.bitmap=Ae,this.nodes=ot}function ri(V,Ae,ot){this.ownerID=V,this.count=Ae,this.nodes=ot}function ho(V,Ae,ot){this.ownerID=V,this.keyHash=Ae,this.entries=ot}function Ti(V,Ae,ot){this.ownerID=V,this.keyHash=Ae,this.entry=ot}function Bo(V,Ae,ot){this._type=Ae,this._reverse=ot,this._stack=V._root&&Li(V._root)}function xo(V,Ae){return Bt(V,Ae[0],Ae[1])}function Li(V,Ae){return{node:V,index:0,__prev:Ae}}function ar(V,Ae,ot,_t){var lt=Object.create(cr);return lt.size=V,lt._root=Ae,lt.__ownerID=ot,lt.__hash=_t,lt.__altered=!1,lt}function Ht(){return ln||(ln=ar(0))}function cn(V,Ae,ot){var _t,lt;if(V._root){var un=oe(se),yn=oe(ve);if(_t=Ct(V._root,V.__ownerID,0,void 0,Ae,ot,un,yn),!yn.value)return V;lt=V.size+(un.value?ot===$?-1:1:0)}else{if(ot===$)return V;lt=1,_t=new yr(V.__ownerID,[[Ae,ot]])}return V.__ownerID?(V.size=lt,V._root=_t,V.__hash=void 0,V.__altered=!0,V):_t?ar(lt,_t):Ht()}function Ct(V,Ae,ot,_t,lt,un,yn,Or){return V?V.update(Ae,ot,_t,lt,un,yn,Or):un===$?V:(he(Or),he(yn),new Ti(Ae,_t,[lt,un]))}function pr(V){return V.constructor===Ti||V.constructor===ho}function nn(V,Ae,ot,_t,lt){if(V.keyHash===_t)return new ho(Ae,_t,[V.entry,lt]);var Or,un=31&(0===ot?V.keyHash:V.keyHash>>>ot),yn=31&(0===ot?_t:_t>>>ot);return new rr(Ae,1<<un|1<<yn,un===yn?[nn(V,Ae,ot+5,_t,lt)]:(Or=new Ti(Ae,_t,lt),un<yn?[V,Or]:[Or,V]))}function Wo(V,Ae,ot){for(var _t=[],lt=0;lt<ot.length;lt++){var un=ot[lt],yn=u(un);e(un)||(yn=yn.map(function(Or){return Vn(Or)})),_t.push(yn)}return _s(V,Ae,_t)}function Do(V,Ae,ot){return V&&V.mergeDeep&&e(Ae)?V.mergeDeep(Ae):Tr(V,Ae)?V:Ae}function Js(V){return function(Ae,ot,_t){if(Ae&&Ae.mergeDeepWith&&e(ot))return Ae.mergeDeepWith(V,ot);var lt=V(Ae,ot,_t);return Tr(Ae,lt)?Ae:lt}}function _s(V,Ae,ot){return 0===(ot=ot.filter(function(_t){return 0!==_t.size})).length?V:0!==V.size||V.__ownerID||1!==ot.length?V.withMutations(function(_t){for(var lt=Ae?function(yn,Or){_t.update(Or,$,function(Vr){return Vr===$?yn:Ae(Vr,yn,Or)})}:function(yn,Or){_t.set(Or,yn)},un=0;un<ot.length;un++)ot[un].forEach(lt)}):V.constructor(ot[0])}function bs(V,Ae,ot,_t){var lt=V===$,un=Ae.next();if(un.done){var yn=lt?ot:V,Or=_t(yn);return Or===yn?V:Or}mr(lt||V&&V.set,"invalid keyPath");var Vr=un.value,_i=lt?$:V.get(Vr,$),oi=bs(_i,Ae,ot,_t);return oi===_i?V:oi===$?V.remove(Vr):(lt?Ht():V).set(Vr,oi)}function qo(V){return V=(V=(858993459&(V-=V>>1&1431655765))+(V>>2&858993459))+(V>>4)&252645135,127&(V+=V>>8)+(V>>16)}function ra(V,Ae,ot,_t){var lt=_t?V:Oe(V);return lt[Ae]=ot,lt}cr[Zn]=!0,cr[Q]=cr.remove,cr.removeIn=cr.deleteIn,yr.prototype.get=function(V,Ae,ot,_t){for(var lt=this.entries,un=0,yn=lt.length;un<yn;un++)if(Tr(ot,lt[un][0]))return lt[un][1];return _t},yr.prototype.update=function(V,Ae,ot,_t,lt,un,yn){for(var Or=lt===$,Vr=this.entries,_i=0,oi=Vr.length;_i<oi&&!Tr(_t,Vr[_i][0]);_i++);var ko=_i<oi;if(ko?Vr[_i][1]===lt:Or)return this;if(he(yn),(Or||!ko)&&he(un),!Or||1!==Vr.length){if(!ko&&!Or&&Vr.length>=Bs)return function(V,Ae,ot,_t){V||(V=new me);for(var lt=new Ti(V,Dr(ot),[ot,_t]),un=0;un<Ae.length;un++){var yn=Ae[un];lt=lt.update(V,0,void 0,yn[0],yn[1])}return lt}(V,Vr,_t,lt);var Ho=V&&V===this.ownerID,Ln=Ho?Vr:Oe(Vr);return ko?Or?_i===oi-1?Ln.pop():Ln[_i]=Ln.pop():Ln[_i]=[_t,lt]:Ln.push([_t,lt]),Ho?(this.entries=Ln,this):new yr(V,Ln)}},rr.prototype.get=function(V,Ae,ot,_t){void 0===Ae&&(Ae=Dr(ot));var lt=1<<(31&(0===V?Ae:Ae>>>V)),un=this.bitmap;return 0==(un&lt)?_t:this.nodes[qo(un&lt-1)].get(V+5,Ae,ot,_t)},rr.prototype.update=function(V,Ae,ot,_t,lt,un,yn){void 0===ot&&(ot=Dr(_t));var Or=31&(0===Ae?ot:ot>>>Ae),Vr=1<<Or,_i=this.bitmap,oi=0!=(_i&Vr);if(!oi&&lt===$)return this;var ko=qo(_i&Vr-1),Ho=this.nodes,Ln=oi?Ho[ko]:void 0,Mr=Ct(Ln,V,Ae+5,ot,_t,lt,un,yn);if(Mr===Ln)return this;if(!oi&&Mr&&Ho.length>=Yl)return function(V,Ae,ot,_t,lt){for(var un=0,yn=new Array(32),Or=0;0!==ot;Or++,ot>>>=1)yn[Or]=1&ot?Ae[un++]:void 0;return yn[_t]=lt,new ri(V,un+1,yn)}(V,Ho,_i,Or,Mr);if(oi&&!Mr&&2===Ho.length&&pr(Ho[1^ko]))return Ho[1^ko];if(oi&&Mr&&1===Ho.length&&pr(Mr))return Mr;var gr=V&&V===this.ownerID,co=oi?Mr?_i:_i^Vr:_i|Vr,Ss=oi?Mr?ra(Ho,ko,Mr,gr):function(V,Ae,ot){var _t=V.length-1;if(ot&&Ae===_t)return V.pop(),V;for(var lt=new Array(_t),un=0,yn=0;yn<_t;yn++)yn===Ae&&(un=1),lt[yn]=V[yn+un];return lt}(Ho,ko,gr):function(V,Ae,ot,_t){var lt=V.length+1;if(_t&&Ae+1===lt)return V[Ae]=ot,V;for(var un=new Array(lt),yn=0,Or=0;Or<lt;Or++)Or===Ae?(un[Or]=ot,yn=-1):un[Or]=V[Or+yn];return un}(Ho,ko,Mr,gr);return gr?(this.bitmap=co,this.nodes=Ss,this):new rr(V,co,Ss)},ri.prototype.get=function(V,Ae,ot,_t){void 0===Ae&&(Ae=Dr(ot));var un=this.nodes[31&(0===V?Ae:Ae>>>V)];return un?un.get(V+5,Ae,ot,_t):_t},ri.prototype.update=function(V,Ae,ot,_t,lt,un,yn){void 0===ot&&(ot=Dr(_t));var Or=31&(0===Ae?ot:ot>>>Ae),_i=this.nodes,oi=_i[Or];if(lt===$&&!oi)return this;var ko=Ct(oi,V,Ae+5,ot,_t,lt,un,yn);if(ko===oi)return this;var Ho=this.count;if(oi){if(!ko&&--Ho<yl)return function(V,Ae,ot,_t){for(var lt=0,un=0,yn=new Array(ot),Or=0,Vr=1,_i=Ae.length;Or<_i;Or++,Vr<<=1){var oi=Ae[Or];void 0!==oi&&Or!==_t&&(lt|=Vr,yn[un++]=oi)}return new rr(V,lt,yn)}(V,_i,Ho,Or)}else Ho++;var Ln=V&&V===this.ownerID,Mr=ra(_i,Or,ko,Ln);return Ln?(this.count=Ho,this.nodes=Mr,this):new ri(V,Ho,Mr)},ho.prototype.get=function(V,Ae,ot,_t){for(var lt=this.entries,un=0,yn=lt.length;un<yn;un++)if(Tr(ot,lt[un][0]))return lt[un][1];return _t},ho.prototype.update=function(V,Ae,ot,_t,lt,un,yn){void 0===ot&&(ot=Dr(_t));var Or=lt===$;if(ot!==this.keyHash)return Or?this:(he(yn),he(un),nn(this,V,Ae,ot,[_t,lt]));for(var Vr=this.entries,_i=0,oi=Vr.length;_i<oi&&!Tr(_t,Vr[_i][0]);_i++);var ko=_i<oi;if(ko?Vr[_i][1]===lt:Or)return this;if(he(yn),(Or||!ko)&&he(un),Or&&2===oi)return new Ti(V,this.keyHash,Vr[1^_i]);var Ho=V&&V===this.ownerID,Ln=Ho?Vr:Oe(Vr);return ko?Or?_i===oi-1?Ln.pop():Ln[_i]=Ln.pop():Ln[_i]=[_t,lt]:Ln.push([_t,lt]),Ho?(this.entries=Ln,this):new ho(V,this.keyHash,Ln)},Ti.prototype.get=function(V,Ae,ot,_t){return Tr(ot,this.entry[0])?this.entry[1]:_t},Ti.prototype.update=function(V,Ae,ot,_t,lt,un,yn){var Or=lt===$,Vr=Tr(_t,this.entry[0]);return(Vr?lt===this.entry[1]:Or)?this:(he(yn),Or?void he(un):Vr?V&&V===this.ownerID?(this.entry[1]=lt,this):new Ti(V,this.keyHash,[_t,lt]):(he(un),nn(this,V,Ae,Dr(_t),[_t,lt])))},yr.prototype.iterate=ho.prototype.iterate=function(V,Ae){for(var ot=this.entries,_t=0,lt=ot.length-1;_t<=lt;_t++)if(!1===V(ot[Ae?lt-_t:_t]))return!1},rr.prototype.iterate=ri.prototype.iterate=function(V,Ae){for(var ot=this.nodes,_t=0,lt=ot.length-1;_t<=lt;_t++){var un=ot[Ae?lt-_t:_t];if(un&&!1===un.iterate(V,Ae))return!1}},Ti.prototype.iterate=function(V,Ae){return V(this.entry)},i(Bo,Ut),Bo.prototype.next=function(){for(var V=this._type,Ae=this._stack;Ae;){var lt,ot=Ae.node,_t=Ae.index++;if(ot.entry){if(0===_t)return xo(V,ot.entry)}else if(ot.entries){if(_t<=(lt=ot.entries.length-1))return xo(V,ot.entries[this._reverse?lt-_t:_t])}else if(_t<=(lt=ot.nodes.length-1)){var un=ot.nodes[this._reverse?lt-_t:_t];if(un){if(un.entry)return xo(V,un.entry);Ae=this._stack=Li(un,Ae)}continue}Ae=this._stack=this._stack.__prev}return{value:void 0,done:!0}};var Bs=8,Yl=16,yl=8;function fo(V){var Ae=Eo();if(null==V)return Ae;if(Da(V))return V;var ot=p(V),_t=ot.size;return 0===_t?Ae:(So(_t),_t>0&&_t<32?Qs(0,_t,5,null,new gs(ot.toArray())):Ae.withMutations(function(lt){lt.setSize(_t),ot.forEach(function(un,yn){return lt.set(yn,un)})}))}function Da(V){return!(!V||!V[Ao])}i(fo,Ii),fo.of=function(){return this(arguments)},fo.prototype.toString=function(){return this.__toString("List [","]")},fo.prototype.get=function(V,Ae){if((V=dt(this,V))>=0&&V<this.size){var ot=kr(this,V+=this._origin);return ot&&ot.array[31&V]}return Ae},fo.prototype.set=function(V,Ae){return function(V,Ae,ot){if((Ae=dt(V,Ae))!=Ae)return V;if(Ae>=V.size||Ae<0)return V.withMutations(function(yn){Ae<0?ro(yn,Ae).set(0,ot):ro(yn,0,Ae+1).set(Ae,ot)});Ae+=V._origin;var _t=V._tail,lt=V._root,un=oe(ve);return Ae>=on(V._capacity)?_t=ms(_t,V.__ownerID,0,Ae,ot,un):lt=ms(lt,V.__ownerID,V._level,Ae,ot,un),un.value?V.__ownerID?(V._root=lt,V._tail=_t,V.__hash=void 0,V.__altered=!0,V):Qs(V._origin,V._capacity,V._level,lt,_t):V}(this,V,Ae)},fo.prototype.remove=function(V){return this.has(V)?0===V?this.shift():V===this.size-1?this.pop():this.splice(V,1):this},fo.prototype.insert=function(V,Ae){return this.splice(V,0,Ae)},fo.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Eo()},fo.prototype.push=function(){var V=arguments,Ae=this.size;return this.withMutations(function(ot){ro(ot,0,Ae+V.length);for(var _t=0;_t<V.length;_t++)ot.set(Ae+_t,V[_t])})},fo.prototype.pop=function(){return ro(this,0,-1)},fo.prototype.unshift=function(){var V=arguments;return this.withMutations(function(Ae){ro(Ae,-V.length);for(var ot=0;ot<V.length;ot++)Ae.set(ot,V[ot])})},fo.prototype.shift=function(){return ro(this,1)},fo.prototype.merge=function(){return tt(this,void 0,arguments)},fo.prototype.mergeWith=function(V){return tt(this,V,S.call(arguments,1))},fo.prototype.mergeDeep=function(){return tt(this,Do,arguments)},fo.prototype.mergeDeepWith=function(V){var Ae=S.call(arguments,1);return tt(this,Js(V),Ae)},fo.prototype.setSize=function(V){return ro(this,0,V)},fo.prototype.slice=function(V,Ae){var ot=this.size;return Ye(V,Ae,ot)?this:ro(this,je(V,ot),Ie(Ae,ot))},fo.prototype.__iterator=function(V,Ae){var ot=0,_t=pl(this,Ae);return new Ut(function(){var lt=_t();return lt===Ra?{value:void 0,done:!0}:Bt(V,ot++,lt)})},fo.prototype.__iterate=function(V,Ae){for(var lt,ot=0,_t=pl(this,Ae);(lt=_t())!==Ra&&!1!==V(lt,ot++,this););return ot},fo.prototype.__ensureOwner=function(V){return V===this.__ownerID?this:V?Qs(this._origin,this._capacity,this._level,this._root,this._tail,V,this.__hash):(this.__ownerID=V,this)},fo.isList=Da;var Ao="@@__IMMUTABLE_LIST__@@",ls=fo.prototype;function gs(V,Ae){this.array=V,this.ownerID=Ae}ls[Ao]=!0,ls[Q]=ls.remove,ls.setIn=cr.setIn,ls.deleteIn=ls.removeIn=cr.removeIn,ls.update=cr.update,ls.updateIn=cr.updateIn,ls.mergeIn=cr.mergeIn,ls.mergeDeepIn=cr.mergeDeepIn,ls.withMutations=cr.withMutations,ls.asMutable=cr.asMutable,ls.asImmutable=cr.asImmutable,ls.wasAltered=cr.wasAltered,gs.prototype.removeBefore=function(V,Ae,ot){if(ot===Ae?1<<Ae:0===this.array.length)return this;var _t=ot>>>Ae&31;if(_t>=this.array.length)return new gs([],V);var un,lt=0===_t;if(Ae>0){var yn=this.array[_t];if((un=yn&&yn.removeBefore(V,Ae-5,ot))===yn&&lt)return this}if(lt&&!un)return this;var Or=Co(this,V);if(!lt)for(var Vr=0;Vr<_t;Vr++)Or.array[Vr]=void 0;return un&&(Or.array[_t]=un),Or},gs.prototype.removeAfter=function(V,Ae,ot){if(ot===(Ae?1<<Ae:0)||0===this.array.length)return this;var lt,_t=ot-1>>>Ae&31;if(_t>=this.array.length)return this;if(Ae>0){var un=this.array[_t];if((lt=un&&un.removeAfter(V,Ae-5,ot))===un&&_t===this.array.length-1)return this}var yn=Co(this,V);return yn.array.splice(_t+1),lt&&(yn.array[_t]=lt),yn};var Fo,sn,Ra={};function pl(V,Ae){var ot=V._origin,_t=V._capacity,lt=on(_t),un=V._tail;return yn(V._root,V._level,0);function yn(_i,oi,ko){return 0===oi?function(_i,oi){var ko=oi===lt?un&&un.array:_i&&_i.array,Ho=oi>ot?0:ot-oi,Ln=_t-oi;return Ln>32&&(Ln=32),function(){if(Ho===Ln)return Ra;var Mr=Ae?--Ln:Ho++;return ko&&ko[Mr]}}(_i,ko):function(_i,oi,ko){var Ho,Ln=_i&&_i.array,Mr=ko>ot?0:ot-ko>>oi,gr=1+(_t-ko>>oi);return gr>32&&(gr=32),function(){for(;;){if(Ho){var co=Ho();if(co!==Ra)return co;Ho=null}if(Mr===gr)return Ra;var Ss=Ae?--gr:Mr++;Ho=yn(Ln&&Ln[Ss],oi-5,ko+(Ss<<oi))}}}(_i,oi,ko)}}function Qs(V,Ae,ot,_t,lt,un,yn){var Or=Object.create(ls);return Or.size=Ae-V,Or._origin=V,Or._capacity=Ae,Or._level=ot,Or._root=_t,Or._tail=lt,Or.__ownerID=un,Or.__hash=yn,Or.__altered=!1,Or}function Eo(){return Fo||(Fo=Qs(0,0,5))}function ms(V,Ae,ot,_t,lt,un){var Vr,yn=_t>>>ot&31,Or=V&&yn<V.array.length;if(!Or&&void 0===lt)return V;if(ot>0){var _i=V&&V.array[yn],oi=ms(_i,Ae,ot-5,_t,lt,un);return oi===_i?V:((Vr=Co(V,Ae)).array[yn]=oi,Vr)}return Or&&V.array[yn]===lt?V:(he(un),Vr=Co(V,Ae),void 0===lt&&yn===Vr.array.length-1?Vr.array.pop():Vr.array[yn]=lt,Vr)}function Co(V,Ae){return Ae&&V&&Ae===V.ownerID?V:new gs(V?V.array.slice():[],Ae)}function kr(V,Ae){if(Ae>=on(V._capacity))return V._tail;if(Ae<1<<V._level+5){for(var ot=V._root,_t=V._level;ot&&_t>0;)ot=ot.array[Ae>>>_t&31],_t-=5;return ot}}function ro(V,Ae,ot){void 0!==Ae&&(Ae|=0),void 0!==ot&&(ot|=0);var _t=V.__ownerID||new me,lt=V._origin,un=V._capacity,yn=lt+Ae,Or=void 0===ot?un:ot<0?un+ot:lt+ot;if(yn===lt&&Or===un)return V;if(yn>=Or)return V.clear();for(var Vr=V._level,_i=V._root,oi=0;yn+oi<0;)_i=new gs(_i&&_i.array.length?[void 0,_i]:[],_t),oi+=1<<(Vr+=5);oi&&(yn+=oi,lt+=oi,Or+=oi,un+=oi);for(var ko=on(un),Ho=on(Or);Ho>=1<<Vr+5;)_i=new gs(_i&&_i.array.length?[_i]:[],_t),Vr+=5;var Ln=V._tail,Mr=Ho<ko?kr(V,Or-1):Ho>ko?new gs([],_t):Ln;if(Ln&&Ho>ko&&yn<un&&Ln.array.length){for(var gr=_i=Co(_i,_t),co=Vr;co>5;co-=5){var Ss=ko>>>co&31;gr=gr.array[Ss]=Co(gr.array[Ss],_t)}gr.array[ko>>>5&31]=Ln}if(Or<un&&(Mr=Mr&&Mr.removeAfter(_t,0,Or)),yn>=Ho)yn-=Ho,Or-=Ho,Vr=5,_i=null,Mr=Mr&&Mr.removeBefore(_t,0,yn);else if(yn>lt||Ho<ko){for(oi=0;_i;){var Na=yn>>>Vr&31;if(Na!==Ho>>>Vr&31)break;Na&&(oi+=(1<<Vr)*Na),Vr-=5,_i=_i.array[Na]}_i&&yn>lt&&(_i=_i.removeBefore(_t,Vr,yn-oi)),_i&&Ho<ko&&(_i=_i.removeAfter(_t,Vr,Ho-oi)),oi&&(yn-=oi,Or-=oi)}return V.__ownerID?(V.size=Or-yn,V._origin=yn,V._capacity=Or,V._level=Vr,V._root=_i,V._tail=Mr,V.__hash=void 0,V.__altered=!0,V):Qs(yn,Or,Vr,_i,Mr)}function tt(V,Ae,ot){for(var _t=[],lt=0,un=0;un<ot.length;un++){var yn=ot[un],Or=p(yn);Or.size>lt&&(lt=Or.size),e(yn)||(Or=Or.map(function(Vr){return Vn(Vr)})),_t.push(Or)}return lt>V.size&&(V=V.setSize(lt)),_s(V,Ae,_t)}function on(V){return V<32?0:V-1>>>5<<5}function ne(V){return null==V?ei():$e(V)?V:ei().withMutations(function(Ae){var ot=u(V);So(ot.size),ot.forEach(function(_t,lt){return Ae.set(lt,_t)})})}function $e(V){return ai(V)&&M(V)}function Pt(V,Ae,ot,_t){var lt=Object.create(ne.prototype);return lt.size=V?V.size:0,lt._map=V,lt._list=Ae,lt.__ownerID=ot,lt.__hash=_t,lt}function ei(){return sn||(sn=Pt(Ht(),Eo()))}function fi(V,Ae,ot){var Or,Vr,_t=V._map,lt=V._list,un=_t.get(Ae),yn=void 0!==un;if(ot===$){if(!yn)return V;lt.size>=32&&lt.size>=2*_t.size?(Or=(Vr=lt.filter(function(_i,oi){return void 0!==_i&&un!==oi})).toKeyedSeq().map(function(_i){return _i[0]}).flip().toMap(),V.__ownerID&&(Or.__ownerID=Vr.__ownerID=V.__ownerID)):(Or=_t.remove(Ae),Vr=un===lt.size-1?lt.pop():lt.set(un,void 0))}else if(yn){if(ot===lt.get(un)[1])return V;Or=_t,Vr=lt.set(un,[Ae,ot])}else Or=_t.set(Ae,lt.size),Vr=lt.set(lt.size,[Ae,ot]);return V.__ownerID?(V.size=Or.size,V._map=Or,V._list=Vr,V.__hash=void 0,V):Pt(Or,Vr)}function Oi(V,Ae){this._iter=V,this._useKeys=Ae,this.size=V.size}function os(V){this._iter=V,this.size=V.size}function Ro(V){this._iter=V,this.size=V.size}function Uo(V){this._iter=V,this.size=V.size}function To(V){var Ae=De(V);return Ae._iter=V,Ae.size=V.size,Ae.flip=function(){return V},Ae.reverse=function(){var ot=V.reverse.apply(this);return ot.flip=function(){return V.reverse()},ot},Ae.has=function(ot){return V.includes(ot)},Ae.includes=function(ot){return V.has(ot)},Ae.cacheResult=Tt,Ae.__iterateUncached=function(ot,_t){var lt=this;return V.__iterate(function(un,yn){return!1!==ot(yn,un,lt)},_t)},Ae.__iteratorUncached=function(ot,_t){if(2===ot){var lt=V.__iterator(ot,_t);return new Ut(function(){var un=lt.next();if(!un.done){var yn=un.value[0];un.value[0]=un.value[1],un.value[1]=yn}return un})}return V.__iterator(1===ot?0:1,_t)},Ae}function Ea(V,Ae,ot){var _t=De(V);return _t.size=V.size,_t.has=function(lt){return V.has(lt)},_t.get=function(lt,un){var yn=V.get(lt,$);return yn===$?un:Ae.call(ot,yn,lt,V)},_t.__iterateUncached=function(lt,un){var yn=this;return V.__iterate(function(Or,Vr,_i){return!1!==lt(Ae.call(ot,Or,Vr,_i),Vr,yn)},un)},_t.__iteratorUncached=function(lt,un){var yn=V.__iterator(2,un);return new Ut(function(){var Or=yn.next();if(Or.done)return Or;var Vr=Or.value,_i=Vr[0];return Bt(lt,_i,Ae.call(ot,Vr[1],_i,V),Or)})},_t}function al(V,Ae){var ot=De(V);return ot._iter=V,ot.size=V.size,ot.reverse=function(){return V},V.flip&&(ot.flip=function(){var _t=To(V);return _t.reverse=function(){return V.flip()},_t}),ot.get=function(_t,lt){return V.get(Ae?_t:-1-_t,lt)},ot.has=function(_t){return V.has(Ae?_t:-1-_t)},ot.includes=function(_t){return V.includes(_t)},ot.cacheResult=Tt,ot.__iterate=function(_t,lt){var un=this;return V.__iterate(function(yn,Or){return _t(yn,Or,un)},!lt)},ot.__iterator=function(_t,lt){return V.__iterator(_t,!lt)},ot}function qu(V,Ae,ot,_t){var lt=De(V);return _t&&(lt.has=function(un){var yn=V.get(un,$);return yn!==$&&!!Ae.call(ot,yn,un,V)},lt.get=function(un,yn){var Or=V.get(un,$);return Or!==$&&Ae.call(ot,Or,un,V)?Or:yn}),lt.__iterateUncached=function(un,yn){var Or=this,Vr=0;return V.__iterate(function(_i,oi,ko){if(Ae.call(ot,_i,oi,ko))return Vr++,un(_i,_t?oi:Vr-1,Or)},yn),Vr},lt.__iteratorUncached=function(un,yn){var Or=V.__iterator(2,yn),Vr=0;return new Ut(function(){for(;;){var _i=Or.next();if(_i.done)return _i;var oi=_i.value,ko=oi[0],Ho=oi[1];if(Ae.call(ot,Ho,ko,V))return Bt(un,_t?ko:Vr++,Ho,_i)}})},lt}function bc(V,Ae,ot,_t){var lt=V.size;if(void 0!==Ae&&(Ae|=0),void 0!==ot&&(ot===1/0?ot=lt:ot|=0),Ye(Ae,ot,lt))return V;var un=je(Ae,lt),yn=Ie(ot,lt);if(un!=un||yn!=yn)return bc(V.toSeq().cacheResult(),Ae,ot,_t);var Vr,Or=yn-un;Or==Or&&(Vr=Or<0?0:Or);var _i=De(V);return _i.size=0===Vr?Vr:V.size&&Vr||void 0,!_t&&di(V)&&Vr>=0&&(_i.get=function(oi,ko){return(oi=dt(this,oi))>=0&&oi<Vr?V.get(oi+un,ko):ko}),_i.__iterateUncached=function(oi,ko){var Ho=this;if(0===Vr)return 0;if(ko)return this.cacheResult().__iterate(oi,ko);var Ln=0,Mr=!0,gr=0;return V.__iterate(function(co,Ss){if(!Mr||!(Mr=Ln++<un))return gr++,!1!==oi(co,_t?Ss:gr-1,Ho)&&gr!==Vr}),gr},_i.__iteratorUncached=function(oi,ko){if(0!==Vr&&ko)return this.cacheResult().__iterator(oi,ko);var Ho=0!==Vr&&V.__iterator(oi,ko),Ln=0,Mr=0;return new Ut(function(){for(;Ln++<un;)Ho.next();if(++Mr>Vr)return{value:void 0,done:!0};var gr=Ho.next();return _t||1===oi?gr:Bt(oi,Mr-1,0===oi?void 0:gr.value[1],gr)})},_i}function Hl(V,Ae,ot,_t){var lt=De(V);return lt.__iterateUncached=function(un,yn){var Or=this;if(yn)return this.cacheResult().__iterate(un,yn);var Vr=!0,_i=0;return V.__iterate(function(oi,ko,Ho){if(!Vr||!(Vr=Ae.call(ot,oi,ko,Ho)))return _i++,un(oi,_t?ko:_i-1,Or)}),_i},lt.__iteratorUncached=function(un,yn){var Or=this;if(yn)return this.cacheResult().__iterator(un,yn);var Vr=V.__iterator(2,yn),_i=!0,oi=0;return new Ut(function(){var ko,Ho,Ln;do{if((ko=Vr.next()).done)return _t||1===un?ko:Bt(un,oi++,0===un?void 0:ko.value[1],ko);var Mr=ko.value;Ho=Mr[0],Ln=Mr[1],_i&&(_i=Ae.call(ot,Ln,Ho,Or))}while(_i);return 2===un?ko:Bt(un,Ho,Ln,ko)})},lt}function Zl(V,Ae){var ot=_(V),_t=[V].concat(Ae).map(function(yn){return e(yn)?ot&&(yn=u(yn)):yn=ot?Br(yn):On(Array.isArray(yn)?yn:[yn]),yn}).filter(function(yn){return 0!==yn.size});if(0===_t.length)return V;if(1===_t.length){var lt=_t[0];if(lt===V||ot&&_(lt)||y(V)&&y(lt))return lt}var un=new In(_t);return ot?un=un.toKeyedSeq():y(V)||(un=un.toSetSeq()),(un=un.flatten(!0)).size=_t.reduce(function(yn,Or){if(void 0!==yn){var Vr=Or.size;if(void 0!==Vr)return yn+Vr}},0),un}function $s(V,Ae,ot){var _t=De(V);return _t.__iterateUncached=function(lt,un){var yn=0,Or=!1;return function Vr(_i,oi){var ko=this;_i.__iterate(function(Ho,Ln){return(!Ae||oi<Ae)&&e(Ho)?Vr(Ho,oi+1):!1===lt(Ho,ot?Ln:yn++,ko)&&(Or=!0),!Or},un)}(V,0),yn},_t.__iteratorUncached=function(lt,un){var yn=V.__iterator(lt,un),Or=[],Vr=0;return new Ut(function(){for(;yn;){var _i=yn.next();if(!1===_i.done){var oi=_i.value;if(2===lt&&(oi=oi[1]),Ae&&!(Or.length<Ae)||!e(oi))return ot?_i:Bt(lt,Vr++,oi,_i);Or.push(yn),yn=oi.__iterator(lt,un)}else yn=Or.pop()}return{value:void 0,done:!0}})},_t}function el(V,Ae,ot){Ae||(Ae=dr);var _t=_(V),lt=0,un=V.toSeq().map(function(yn,Or){return[Or,yn,lt++,ot?ot(yn,Or,V):yn]}).toArray();return un.sort(function(yn,Or){return Ae(yn[3],Or[3])||yn[2]-Or[2]}).forEach(_t?function(yn,Or){un[Or].length=2}:function(yn,Or){un[Or]=yn[1]}),_t?Ir(un):y(V)?wr(un):Qr(un)}function Cu(V,Ae,ot){if(Ae||(Ae=dr),ot){var _t=V.toSeq().map(function(lt,un){return[lt,ot(lt,un,V)]}).reduce(function(lt,un){return jl(Ae,lt[1],un[1])?un:lt});return _t&&_t[0]}return V.reduce(function(lt,un){return jl(Ae,lt,un)?un:lt})}function jl(V,Ae,ot){var _t=V(ot,Ae);return 0===_t&&ot!==Ae&&(null==ot||ot!=ot)||_t>0}function rt(V,Ae,ot){var _t=De(V);return _t.size=new In(ot).map(function(lt){return lt.size}).min(),_t.__iterate=function(lt,un){for(var Or,yn=this.__iterator(1,un),Vr=0;!(Or=yn.next()).done&&!1!==lt(Or.value,Vr++,this););return Vr},_t.__iteratorUncached=function(lt,un){var yn=ot.map(function(_i){return _i=r(_i),zt(un?_i.reverse():_i)}),Or=0,Vr=!1;return new Ut(function(){var _i;return Vr||(_i=yn.map(function(oi){return oi.next()}),Vr=_i.some(function(oi){return oi.done})),Vr?{value:void 0,done:!0}:Bt(lt,Or++,Ae.apply(null,_i.map(function(oi){return oi.value})))})},_t}function Nt(V,Ae){return di(V)?Ae:V.constructor(Ae)}function ct(V){if(V!==Object(V))throw new TypeError("Expected [K, V] tuple: "+V)}function Te(V){return So(V.size),ce(V)}function Me(V){return _(V)?u:y(V)?p:f}function De(V){return Object.create((_(V)?Ir:y(V)?wr:Qr).prototype)}function Tt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):ci.prototype.cacheResult.call(this)}function dr(V,Ae){return V>Ae?1:V<Ae?-1:0}function Qi(V){var Ae=zt(V);if(!Ae){if(!Hr(V))throw new TypeError("Expected iterable or array-like: "+V);Ae=zt(r(V))}return Ae}function Jo(V,Ae){var ot,_t=function(yn){if(yn instanceof _t)return yn;if(!(this instanceof _t))return new _t(yn);if(!ot){ot=!0;var Or=Object.keys(V);(function(V,Ae){try{Ae.forEach(uu.bind(void 0,V))}catch(ot){}})(lt,Or),lt.size=Or.length,lt._name=Ae,lt._keys=Or,lt._defaultValues=V}this._map=Si(yn)},lt=_t.prototype=Object.create(Es);return lt.constructor=_t,_t}i(ne,Si),ne.of=function(){return this(arguments)},ne.prototype.toString=function(){return this.__toString("OrderedMap {","}")},ne.prototype.get=function(V,Ae){var ot=this._map.get(V);return void 0!==ot?this._list.get(ot)[1]:Ae},ne.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):ei()},ne.prototype.set=function(V,Ae){return fi(this,V,Ae)},ne.prototype.remove=function(V){return fi(this,V,$)},ne.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},ne.prototype.__iterate=function(V,Ae){var ot=this;return this._list.__iterate(function(_t){return _t&&V(_t[1],_t[0],ot)},Ae)},ne.prototype.__iterator=function(V,Ae){return this._list.fromEntrySeq().__iterator(V,Ae)},ne.prototype.__ensureOwner=function(V){if(V===this.__ownerID)return this;var Ae=this._map.__ensureOwner(V),ot=this._list.__ensureOwner(V);return V?Pt(Ae,ot,V,this.__hash):(this.__ownerID=V,this._map=Ae,this._list=ot,this)},ne.isOrderedMap=$e,ne.prototype[J]=!0,ne.prototype[Q]=ne.prototype.remove,i(Oi,Ir),Oi.prototype.get=function(V,Ae){return this._iter.get(V,Ae)},Oi.prototype.has=function(V){return this._iter.has(V)},Oi.prototype.valueSeq=function(){return this._iter.valueSeq()},Oi.prototype.reverse=function(){var V=this,Ae=al(this,!0);return this._useKeys||(Ae.valueSeq=function(){return V._iter.toSeq().reverse()}),Ae},Oi.prototype.map=function(V,Ae){var ot=this,_t=Ea(this,V,Ae);return this._useKeys||(_t.valueSeq=function(){return ot._iter.toSeq().map(V,Ae)}),_t},Oi.prototype.__iterate=function(V,Ae){var _t,ot=this;return this._iter.__iterate(this._useKeys?function(lt,un){return V(lt,un,ot)}:(_t=Ae?Te(this):0,function(lt){return V(lt,Ae?--_t:_t++,ot)}),Ae)},Oi.prototype.__iterator=function(V,Ae){if(this._useKeys)return this._iter.__iterator(V,Ae);var ot=this._iter.__iterator(1,Ae),_t=Ae?Te(this):0;return new Ut(function(){var lt=ot.next();return lt.done?lt:Bt(V,Ae?--_t:_t++,lt.value,lt)})},Oi.prototype[J]=!0,i(os,wr),os.prototype.includes=function(V){return this._iter.includes(V)},os.prototype.__iterate=function(V,Ae){var ot=this,_t=0;return this._iter.__iterate(function(lt){return V(lt,_t++,ot)},Ae)},os.prototype.__iterator=function(V,Ae){var ot=this._iter.__iterator(1,Ae),_t=0;return new Ut(function(){var lt=ot.next();return lt.done?lt:Bt(V,_t++,lt.value,lt)})},i(Ro,Qr),Ro.prototype.has=function(V){return this._iter.includes(V)},Ro.prototype.__iterate=function(V,Ae){var ot=this;return this._iter.__iterate(function(_t){return V(_t,_t,ot)},Ae)},Ro.prototype.__iterator=function(V,Ae){var ot=this._iter.__iterator(1,Ae);return new Ut(function(){var _t=ot.next();return _t.done?_t:Bt(V,_t.value,_t.value,_t)})},i(Uo,Ir),Uo.prototype.entrySeq=function(){return this._iter.toSeq()},Uo.prototype.__iterate=function(V,Ae){var ot=this;return this._iter.__iterate(function(_t){if(_t){ct(_t);var lt=e(_t);return V(lt?_t.get(1):_t[1],lt?_t.get(0):_t[0],ot)}},Ae)},Uo.prototype.__iterator=function(V,Ae){var ot=this._iter.__iterator(1,Ae);return new Ut(function(){for(;;){var _t=ot.next();if(_t.done)return _t;var lt=_t.value;if(lt){ct(lt);var un=e(lt);return Bt(V,un?lt.get(0):lt[0],un?lt.get(1):lt[1],_t)}}})},os.prototype.cacheResult=Oi.prototype.cacheResult=Ro.prototype.cacheResult=Uo.prototype.cacheResult=Tt,i(Jo,si),Jo.prototype.toString=function(){return this.__toString(Ms(this)+" {","}")},Jo.prototype.has=function(V){return this._defaultValues.hasOwnProperty(V)},Jo.prototype.get=function(V,Ae){if(!this.has(V))return Ae;var ot=this._defaultValues[V];return this._map?this._map.get(V,ot):ot},Jo.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var V=this.constructor;return V._empty||(V._empty=vs(this,Ht()))},Jo.prototype.set=function(V,Ae){if(!this.has(V))throw new Error('Cannot set unknown key "'+V+'" on '+Ms(this));if(this._map&&!this._map.has(V)&&Ae===this._defaultValues[V])return this;var _t=this._map&&this._map.set(V,Ae);return this.__ownerID||_t===this._map?this:vs(this,_t)},Jo.prototype.remove=function(V){if(!this.has(V))return this;var Ae=this._map&&this._map.remove(V);return this.__ownerID||Ae===this._map?this:vs(this,Ae)},Jo.prototype.wasAltered=function(){return this._map.wasAltered()},Jo.prototype.__iterator=function(V,Ae){var ot=this;return u(this._defaultValues).map(function(_t,lt){return ot.get(lt)}).__iterator(V,Ae)},Jo.prototype.__iterate=function(V,Ae){var ot=this;return u(this._defaultValues).map(function(_t,lt){return ot.get(lt)}).__iterate(V,Ae)},Jo.prototype.__ensureOwner=function(V){if(V===this.__ownerID)return this;var Ae=this._map&&this._map.__ensureOwner(V);return V?vs(this,Ae,V):(this.__ownerID=V,this._map=Ae,this)};var Es=Jo.prototype;function vs(V,Ae,ot){var _t=Object.create(Object.getPrototypeOf(V));return _t._map=Ae,_t.__ownerID=ot,_t}function Ms(V){return V._name||V.constructor.name||"Record"}function uu(V,Ae){Object.defineProperty(V,Ae,{get:function(){return this.get(Ae)},set:function(ot){mr(this.__ownerID,"Cannot set on an immutable record."),this.set(Ae,ot)}})}function Wa(V){return null==V?Pc():Pl(V)&&!M(V)?V:Pc().withMutations(function(Ae){var ot=f(V);So(ot.size),ot.forEach(function(_t){return Ae.add(_t)})})}function Pl(V){return!(!V||!V[ec])}Es[Q]=Es.remove,Es.deleteIn=Es.removeIn=cr.removeIn,Es.merge=cr.merge,Es.mergeWith=cr.mergeWith,Es.mergeIn=cr.mergeIn,Es.mergeDeep=cr.mergeDeep,Es.mergeDeepWith=cr.mergeDeepWith,Es.mergeDeepIn=cr.mergeDeepIn,Es.setIn=cr.setIn,Es.update=cr.update,Es.updateIn=cr.updateIn,Es.withMutations=cr.withMutations,Es.asMutable=cr.asMutable,Es.asImmutable=cr.asImmutable,i(Wa,no),Wa.of=function(){return this(arguments)},Wa.fromKeys=function(V){return this(u(V).keySeq())},Wa.prototype.toString=function(){return this.__toString("Set {","}")},Wa.prototype.has=function(V){return this._map.has(V)},Wa.prototype.add=function(V){return Ts(this,this._map.set(V,!0))},Wa.prototype.remove=function(V){return Ts(this,this._map.remove(V))},Wa.prototype.clear=function(){return Ts(this,this._map.clear())},Wa.prototype.union=function(){var V=S.call(arguments,0);return 0===(V=V.filter(function(Ae){return 0!==Ae.size})).length?this:0!==this.size||this.__ownerID||1!==V.length?this.withMutations(function(Ae){for(var ot=0;ot<V.length;ot++)f(V[ot]).forEach(function(_t){return Ae.add(_t)})}):this.constructor(V[0])},Wa.prototype.intersect=function(){var V=S.call(arguments,0);if(0===V.length)return this;V=V.map(function(ot){return f(ot)});var Ae=this;return this.withMutations(function(ot){Ae.forEach(function(_t){V.every(function(lt){return lt.includes(_t)})||ot.remove(_t)})})},Wa.prototype.subtract=function(){var V=S.call(arguments,0);if(0===V.length)return this;V=V.map(function(ot){return f(ot)});var Ae=this;return this.withMutations(function(ot){Ae.forEach(function(_t){V.some(function(lt){return lt.includes(_t)})&&ot.remove(_t)})})},Wa.prototype.merge=function(){return this.union.apply(this,arguments)},Wa.prototype.mergeWith=function(V){var Ae=S.call(arguments,1);return this.union.apply(this,Ae)},Wa.prototype.sort=function(V){return Mu(el(this,V))},Wa.prototype.sortBy=function(V,Ae){return Mu(el(this,Ae,V))},Wa.prototype.wasAltered=function(){return this._map.wasAltered()},Wa.prototype.__iterate=function(V,Ae){var ot=this;return this._map.__iterate(function(_t,lt){return V(lt,lt,ot)},Ae)},Wa.prototype.__iterator=function(V,Ae){return this._map.map(function(ot,_t){return _t}).__iterator(V,Ae)},Wa.prototype.__ensureOwner=function(V){if(V===this.__ownerID)return this;var Ae=this._map.__ensureOwner(V);return V?this.__make(Ae,V):(this.__ownerID=V,this._map=Ae,this)},Wa.isSet=Pl;var Ec,ec="@@__IMMUTABLE_SET__@@",Ol=Wa.prototype;function Ts(V,Ae){return V.__ownerID?(V.size=Ae.size,V._map=Ae,V):Ae===V._map?V:0===Ae.size?V.__empty():V.__make(Ae)}function Nc(V,Ae){var ot=Object.create(Ol);return ot.size=V?V.size:0,ot._map=V,ot.__ownerID=Ae,ot}function Pc(){return Ec||(Ec=Nc(Ht()))}function Mu(V){return null==V?ua():Ic(V)?V:ua().withMutations(function(Ae){var ot=f(V);So(ot.size),ot.forEach(function(_t){return Ae.add(_t)})})}function Ic(V){return Pl(V)&&M(V)}Ol[ec]=!0,Ol[Q]=Ol.remove,Ol.mergeDeep=Ol.merge,Ol.mergeDeepWith=Ol.mergeWith,Ol.withMutations=cr.withMutations,Ol.asMutable=cr.asMutable,Ol.asImmutable=cr.asImmutable,Ol.__empty=Pc,Ol.__make=Nc,i(Mu,Wa),Mu.of=function(){return this(arguments)},Mu.fromKeys=function(V){return this(u(V).keySeq())},Mu.prototype.toString=function(){return this.__toString("OrderedSet {","}")},Mu.isOrderedSet=Ic;var Fi,md=Mu.prototype;function tc(V,Ae){var ot=Object.create(md);return ot.size=V?V.size:0,ot._map=V,ot.__ownerID=Ae,ot}function ua(){return Fi||(Fi=tc(ei()))}function Aa(V){return null==V?cu():As(V)?V:cu().unshiftAll(V)}function As(V){return!(!V||!V[ku])}md[J]=!0,md.__empty=ua,md.__make=tc,i(Aa,Ii),Aa.of=function(){return this(arguments)},Aa.prototype.toString=function(){return this.__toString("Stack [","]")},Aa.prototype.get=function(V,Ae){var ot=this._head;for(V=dt(this,V);ot&&V--;)ot=ot.next;return ot?ot.value:Ae},Aa.prototype.peek=function(){return this._head&&this._head.value},Aa.prototype.push=function(){if(0===arguments.length)return this;for(var V=this.size+arguments.length,Ae=this._head,ot=arguments.length-1;ot>=0;ot--)Ae={value:arguments[ot],next:Ae};return this.__ownerID?(this.size=V,this._head=Ae,this.__hash=void 0,this.__altered=!0,this):Au(V,Ae)},Aa.prototype.pushAll=function(V){if(0===(V=p(V)).size)return this;So(V.size);var Ae=this.size,ot=this._head;return V.reverse().forEach(function(_t){Ae++,ot={value:_t,next:ot}}),this.__ownerID?(this.size=Ae,this._head=ot,this.__hash=void 0,this.__altered=!0,this):Au(Ae,ot)},Aa.prototype.pop=function(){return this.slice(1)},Aa.prototype.unshift=function(){return this.push.apply(this,arguments)},Aa.prototype.unshiftAll=function(V){return this.pushAll(V)},Aa.prototype.shift=function(){return this.pop.apply(this,arguments)},Aa.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):cu()},Aa.prototype.slice=function(V,Ae){if(Ye(V,Ae,this.size))return this;var ot=je(V,this.size);if(Ie(Ae,this.size)!==this.size)return Ii.prototype.slice.call(this,V,Ae);for(var lt=this.size-ot,un=this._head;ot--;)un=un.next;return this.__ownerID?(this.size=lt,this._head=un,this.__hash=void 0,this.__altered=!0,this):Au(lt,un)},Aa.prototype.__ensureOwner=function(V){return V===this.__ownerID?this:V?Au(this.size,this._head,V,this.__hash):(this.__ownerID=V,this.__altered=!1,this)},Aa.prototype.__iterate=function(V,Ae){if(Ae)return this.reverse().__iterate(V);for(var ot=0,_t=this._head;_t&&!1!==V(_t.value,ot++,this);)_t=_t.next;return ot},Aa.prototype.__iterator=function(V,Ae){if(Ae)return this.reverse().__iterator(V);var ot=0,_t=this._head;return new Ut(function(){if(_t){var lt=_t.value;return _t=_t.next,Bt(V,ot++,lt)}return{value:void 0,done:!0}})},Aa.isStack=As;var bu,ku="@@__IMMUTABLE_STACK__@@",bl=Aa.prototype;function Au(V,Ae,ot,_t){var lt=Object.create(bl);return lt.size=V,lt._head=Ae,lt.__ownerID=ot,lt.__hash=_t,lt.__altered=!1,lt}function cu(){return bu||(bu=Au(0))}function Gs(V,Ae){var ot=function(_t){V.prototype[_t]=Ae[_t]};return Object.keys(Ae).forEach(ot),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(Ae).forEach(ot),V}bl[ku]=!0,bl.withMutations=cr.withMutations,bl.asMutable=cr.asMutable,bl.asImmutable=cr.asImmutable,bl.wasAltered=cr.wasAltered,r.Iterator=Ut,Gs(r,{toArray:function(){So(this.size);var V=new Array(this.size||0);return this.valueSeq().__iterate(function(Ae,ot){V[ot]=Ae}),V},toIndexedSeq:function(){return new os(this)},toJS:function(){return this.toSeq().map(function(V){return V&&"function"==typeof V.toJS?V.toJS():V}).__toJS()},toJSON:function(){return this.toSeq().map(function(V){return V&&"function"==typeof V.toJSON?V.toJSON():V}).__toJS()},toKeyedSeq:function(){return new Oi(this,!0)},toMap:function(){return Si(this.toKeyedSeq())},toObject:function(){So(this.size);var V={};return this.__iterate(function(Ae,ot){V[ot]=Ae}),V},toOrderedMap:function(){return ne(this.toKeyedSeq())},toOrderedSet:function(){return Mu(_(this)?this.valueSeq():this)},toSet:function(){return Wa(_(this)?this.valueSeq():this)},toSetSeq:function(){return new Ro(this)},toSeq:function(){return y(this)?this.toIndexedSeq():_(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Aa(_(this)?this.valueSeq():this)},toList:function(){return fo(_(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(V,Ae){return 0===this.size?V+Ae:V+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+Ae},concat:function(){return Nt(this,Zl(this,S.call(arguments,0)))},includes:function(V){return this.some(function(Ae){return Tr(Ae,V)})},entries:function(){return this.__iterator(2)},every:function(V,Ae){So(this.size);var ot=!0;return this.__iterate(function(_t,lt,un){if(!V.call(Ae,_t,lt,un))return ot=!1,!1}),ot},filter:function(V,Ae){return Nt(this,qu(this,V,Ae,!0))},find:function(V,Ae,ot){var _t=this.findEntry(V,Ae);return _t?_t[1]:ot},forEach:function(V,Ae){return So(this.size),this.__iterate(Ae?V.bind(Ae):V)},join:function(V){So(this.size),V=void 0!==V?""+V:",";var Ae="",ot=!0;return this.__iterate(function(_t){ot?ot=!1:Ae+=V,Ae+=null!=_t?_t.toString():""}),Ae},keys:function(){return this.__iterator(0)},map:function(V,Ae){return Nt(this,Ea(this,V,Ae))},reduce:function(V,Ae,ot){var _t,lt;return So(this.size),arguments.length<2?lt=!0:_t=Ae,this.__iterate(function(un,yn,Or){lt?(lt=!1,_t=un):_t=V.call(ot,_t,un,yn,Or)}),_t},reduceRight:function(V,Ae,ot){var _t=this.toKeyedSeq().reverse();return _t.reduce.apply(_t,arguments)},reverse:function(){return Nt(this,al(this,!0))},slice:function(V,Ae){return Nt(this,bc(this,V,Ae,!0))},some:function(V,Ae){return!this.every(Ar(V),Ae)},sort:function(V){return Nt(this,el(this,V))},values:function(){return this.__iterator(1)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(V,Ae){return ce(V?this.toSeq().filter(V,Ae):this)},countBy:function(V,Ae){return function(V,Ae,ot){var _t=Si().asMutable();return V.__iterate(function(lt,un){_t.update(Ae.call(ot,lt,un,V),0,function(yn){return yn+1})}),_t.asImmutable()}(this,V,Ae)},equals:function(V){return Nr(this,V)},entrySeq:function(){var V=this;if(V._cache)return new In(V._cache);var Ae=V.toSeq().map(du).toIndexedSeq();return Ae.fromEntrySeq=function(){return V.toSeq()},Ae},filterNot:function(V,Ae){return this.filter(Ar(V),Ae)},findEntry:function(V,Ae,ot){var _t=ot;return this.__iterate(function(lt,un,yn){if(V.call(Ae,lt,un,yn))return _t=[un,lt],!1}),_t},findKey:function(V,Ae){var ot=this.findEntry(V,Ae);return ot&&ot[0]},findLast:function(V,Ae,ot){return this.toKeyedSeq().reverse().find(V,Ae,ot)},findLastEntry:function(V,Ae,ot){return this.toKeyedSeq().reverse().findEntry(V,Ae,ot)},findLastKey:function(V,Ae){return this.toKeyedSeq().reverse().findKey(V,Ae)},first:function(){return this.find(ze)},flatMap:function(V,Ae){return Nt(this,function(V,Ae,ot){var _t=Me(V);return V.toSeq().map(function(lt,un){return _t(Ae.call(ot,lt,un,V))}).flatten(!0)}(this,V,Ae))},flatten:function(V){return Nt(this,$s(this,V,!0))},fromEntrySeq:function(){return new Uo(this)},get:function(V,Ae){return this.find(function(ot,_t){return Tr(_t,V)},void 0,Ae)},getIn:function(V,Ae){for(var lt,ot=this,_t=Qi(V);!(lt=_t.next()).done;)if((ot=ot&&ot.get?ot.get(lt.value,$):$)===$)return Ae;return ot},groupBy:function(V,Ae){return function(V,Ae,ot){var _t=_(V),lt=(M(V)?ne():Si()).asMutable();V.__iterate(function(yn,Or){lt.update(Ae.call(ot,yn,Or,V),function(Vr){return(Vr=Vr||[]).push(_t?[Or,yn]:yn),Vr})});var un=Me(V);return lt.map(function(yn){return Nt(V,un(yn))})}(this,V,Ae)},has:function(V){return this.get(V,$)!==$},hasIn:function(V){return this.getIn(V,$)!==$},isSubset:function(V){return V="function"==typeof V.includes?V:r(V),this.every(function(Ae){return V.includes(Ae)})},isSuperset:function(V){return(V="function"==typeof V.isSubset?V:r(V)).isSubset(this)},keyOf:function(V){return this.findKey(function(Ae){return Tr(Ae,V)})},keySeq:function(){return this.toSeq().map(Yo).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(V){return this.toKeyedSeq().reverse().keyOf(V)},max:function(V){return Cu(this,V)},maxBy:function(V,Ae){return Cu(this,Ae,V)},min:function(V){return Cu(this,V?ha(V):Gl)},minBy:function(V,Ae){return Cu(this,Ae?ha(Ae):Gl,V)},rest:function(){return this.slice(1)},skip:function(V){return this.slice(Math.max(0,V))},skipLast:function(V){return Nt(this,this.toSeq().reverse().skip(V).reverse())},skipWhile:function(V,Ae){return Nt(this,Hl(this,V,Ae,!0))},skipUntil:function(V,Ae){return this.skipWhile(Ar(V),Ae)},sortBy:function(V,Ae){return Nt(this,el(this,Ae,V))},take:function(V){return this.slice(0,Math.max(0,V))},takeLast:function(V){return Nt(this,this.toSeq().reverse().take(V).reverse())},takeWhile:function(V,Ae){return Nt(this,function(V,Ae,ot){var _t=De(V);return _t.__iterateUncached=function(lt,un){var yn=this;if(un)return this.cacheResult().__iterate(lt,un);var Or=0;return V.__iterate(function(Vr,_i,oi){return Ae.call(ot,Vr,_i,oi)&&++Or&&lt(Vr,_i,yn)}),Or},_t.__iteratorUncached=function(lt,un){var yn=this;if(un)return this.cacheResult().__iterator(lt,un);var Or=V.__iterator(2,un),Vr=!0;return new Ut(function(){if(!Vr)return{value:void 0,done:!0};var _i=Or.next();if(_i.done)return _i;var oi=_i.value,ko=oi[0],Ho=oi[1];return Ae.call(ot,Ho,ko,yn)?2===lt?_i:Bt(lt,ko,Ho,_i):(Vr=!1,{value:void 0,done:!0})})},_t}(this,V,Ae))},takeUntil:function(V,Ae){return this.takeWhile(Ar(V),Ae)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(V){if(V.size===1/0)return 0;var Ae=M(V),ot=_(V),_t=Ae?1:0;return function(V,Ae){return Ae=so(Ae,3432918353),Ae=so(Ae<<15|Ae>>>-15,461845907),Ae=so(Ae<<13|Ae>>>-13,5),Ae=so((Ae=(Ae+3864292196|0)^V)^Ae>>>16,2246822507),Ze((Ae=so(Ae^Ae>>>13,3266489909))^Ae>>>16)}(V.__iterate(ot?Ae?function(un,yn){_t=31*_t+Vl(Dr(un),Dr(yn))|0}:function(un,yn){_t=_t+Vl(Dr(un),Dr(yn))|0}:Ae?function(un){_t=31*_t+Dr(un)|0}:function(un){_t=_t+Dr(un)|0}),_t)}(this))}});var $u=r.prototype;$u[R]=!0,$u[Gt]=$u.values,$u.__toJS=$u.toArray,$u.__toStringMapper=_u,$u.inspect=$u.toSource=function(){return this.toString()},$u.chain=$u.flatMap,$u.contains=$u.includes,Gs(u,{flip:function(){return Nt(this,To(this))},mapEntries:function(V,Ae){var ot=this,_t=0;return Nt(this,this.toSeq().map(function(lt,un){return V.call(Ae,[un,lt],_t++,ot)}).fromEntrySeq())},mapKeys:function(V,Ae){var ot=this;return Nt(this,this.toSeq().flip().map(function(_t,lt){return V.call(Ae,_t,lt,ot)}).flip())}});var Hu=u.prototype;function Yo(V,Ae){return Ae}function du(V,Ae){return[Ae,V]}function Ar(V){return function(){return!V.apply(this,arguments)}}function ha(V){return function(){return-V.apply(this,arguments)}}function _u(V){return"string"==typeof V?JSON.stringify(V):String(V)}function fa(){return Oe(arguments)}function Gl(V,Ae){return V<Ae?1:V>Ae?-1:0}function Vl(V,Ae){return V^Ae+2654435769+(V<<6)+(V>>2)|0}return Hu[F]=!0,Hu[Gt]=$u.entries,Hu.__toJS=$u.toObject,Hu.__toStringMapper=function(V,Ae){return JSON.stringify(Ae)+": "+_u(V)},Gs(p,{toKeyedSeq:function(){return new Oi(this,!1)},filter:function(V,Ae){return Nt(this,qu(this,V,Ae,!1))},findIndex:function(V,Ae){var ot=this.findEntry(V,Ae);return ot?ot[0]:-1},indexOf:function(V){var Ae=this.keyOf(V);return void 0===Ae?-1:Ae},lastIndexOf:function(V){var Ae=this.lastKeyOf(V);return void 0===Ae?-1:Ae},reverse:function(){return Nt(this,al(this,!1))},slice:function(V,Ae){return Nt(this,bc(this,V,Ae,!1))},splice:function(V,Ae){var ot=arguments.length;if(Ae=Math.max(0|Ae,0),0===ot||2===ot&&!Ae)return this;V=je(V,V<0?this.count():this.size);var _t=this.slice(0,V);return Nt(this,1===ot?_t:_t.concat(Oe(arguments,2),this.slice(V+Ae)))},findLastIndex:function(V,Ae){var ot=this.findLastEntry(V,Ae);return ot?ot[0]:-1},first:function(){return this.get(0)},flatten:function(V){return Nt(this,$s(this,V,!1))},get:function(V,Ae){return(V=dt(this,V))<0||this.size===1/0||void 0!==this.size&&V>this.size?Ae:this.find(function(ot,_t){return _t===V},void 0,Ae)},has:function(V){return(V=dt(this,V))>=0&&(void 0!==this.size?this.size===1/0||V<this.size:-1!==this.indexOf(V))},interpose:function(V){return Nt(this,function(V,Ae){var ot=De(V);return ot.size=V.size&&2*V.size-1,ot.__iterateUncached=function(_t,lt){var un=this,yn=0;return V.__iterate(function(Or,Vr){return(!yn||!1!==_t(Ae,yn++,un))&&!1!==_t(Or,yn++,un)},lt),yn},ot.__iteratorUncached=function(_t,lt){var Or,un=V.__iterator(1,lt),yn=0;return new Ut(function(){return(!Or||yn%2)&&(Or=un.next()).done?Or:yn%2?Bt(_t,yn++,Ae):Bt(_t,yn++,Or.value,Or)})},ot}(this,V))},interleave:function(){var V=[this].concat(Oe(arguments)),Ae=rt(this.toSeq(),wr.of,V),ot=Ae.flatten(!0);return Ae.size&&(ot.size=Ae.size*V.length),Nt(this,ot)},keySeq:function(){return Xt(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(V,Ae){return Nt(this,Hl(this,V,Ae,!1))},zip:function(){return Nt(this,rt(this,fa,[this].concat(Oe(arguments))))},zipWith:function(V){var Ae=Oe(arguments);return Ae[0]=this,Nt(this,rt(this,V,Ae))}}),p.prototype[Z]=!0,p.prototype[J]=!0,Gs(f,{get:function(V,Ae){return this.has(V)?V:Ae},includes:function(V){return this.has(V)},keySeq:function(){return this.valueSeq()}}),f.prototype.has=$u.includes,f.prototype.contains=f.prototype.includes,Gs(Ir,u.prototype),Gs(wr,p.prototype),Gs(Qr,f.prototype),Gs(si,u.prototype),Gs(Ii,p.prototype),Gs(no,f.prototype),{Iterable:r,Seq:ci,Collection:vr,Map:Si,OrderedMap:ne,List:fo,Stack:Aa,Set:Wa,OrderedSet:Mu,Record:Jo,Range:Xt,Repeat:gn,is:Tr,fromJS:Vn}}()},74299:v=>{v.exports=function(S,i,r,u){var f=new Blob(void 0!==u?[u,S]:[S],{type:r||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(f,i);else{var e=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(f):window.webkitURL.createObjectURL(f),_=document.createElement("a");_.style.display="none",_.href=e,_.setAttribute("download",i),void 0===_.download&&_.setAttribute("target","_blank"),document.body.appendChild(_),_.click(),setTimeout(function(){document.body.removeChild(_),window.URL.revokeObjectURL(e)},200)}}},86906:v=>{var u=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,e=/^0o[0-7]+$/i,_=parseInt,y="object"==typeof global&&global&&global.Object===Object&&global,T="object"==typeof self&&self&&self.Object===Object&&self,M=y||T||Function("return this")(),F=Object.prototype.toString,Z=Math.max,J=Math.min,Q=function(){return M.Date.now()};function ue(ve){var oe=typeof ve;return!!ve&&("object"==oe||"function"==oe)}function se(ve){if("number"==typeof ve)return ve;if(function(ve){return"symbol"==typeof ve||function(ve){return!!ve&&"object"==typeof ve}(ve)&&"[object Symbol]"==F.call(ve)}(ve))return NaN;if(ue(ve)){var oe="function"==typeof ve.valueOf?ve.valueOf():ve;ve=ue(oe)?oe+"":oe}if("string"!=typeof ve)return 0===ve?ve:+ve;ve=ve.replace(u,"");var he=f.test(ve);return he||e.test(ve)?_(ve.slice(2),he?2:8):p.test(ve)?NaN:+ve}v.exports=function(ve,oe,he){var me,Oe,ce,dt,ze,Ye,je=0,Ie=!1,Ve=!1,He=!0;if("function"!=typeof ve)throw new TypeError("Expected a function");function Zt(Dt){var zt=me,Yn=Oe;return me=Oe=void 0,je=Dt,dt=ve.apply(Yn,zt)}function st(Dt){return je=Dt,ze=setTimeout(Gt,oe),Ie?Zt(Dt):dt}function $t(Dt){var zt=Dt-Ye;return void 0===Ye||zt>=oe||zt<0||Ve&&Dt-je>=ce}function Gt(){var Dt=Q();if($t(Dt))return Ut(Dt);ze=setTimeout(Gt,function(Dt){var Hr=oe-(Dt-Ye);return Ve?J(Hr,ce-(Dt-je)):Hr}(Dt))}function Ut(Dt){return ze=void 0,He&&me?Zt(Dt):(me=Oe=void 0,dt)}function Yt(){var Dt=Q(),zt=$t(Dt);if(me=arguments,Oe=this,Ye=Dt,zt){if(void 0===ze)return st(Ye);if(Ve)return ze=setTimeout(Gt,oe),Zt(Ye)}return void 0===ze&&(ze=setTimeout(Gt,oe)),dt}return oe=se(oe)||0,ue(he)&&(Ie=!!he.leading,ce=(Ve="maxWait"in he)?Z(se(he.maxWait)||0,oe):ce,He="trailing"in he?!!he.trailing:He),Yt.cancel=function(){void 0!==ze&&clearTimeout(ze),je=0,me=Ye=Oe=ze=void 0},Yt.flush=function(){return void 0===ze?dt:Ut(Q())},Yt}},66941:v=>{var In,i="__lodash_hash_undefined__",f=/^\[object .+?Constructor\]$/,e="object"==typeof global&&global&&global.Object===Object&&global,_="object"==typeof self&&self&&self.Object===Object&&self,y=e||_||Function("return this")(),R=Array.prototype,F=Function.prototype,Z=Object.prototype,J=y["__core-js_shared__"],Q=(In=/[^.]+$/.exec(J&&J.keys&&J.keys.IE_PROTO||""))?"Symbol(src)_1."+In:"",ee=F.toString,ue=Z.hasOwnProperty,ae=Z.toString,$=RegExp("^"+ee.call(ue).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),se=R.splice,ve=zt(y,"Map"),oe=zt(Object,"create");function he(In){var Hn=-1,Zr=In?In.length:0;for(this.clear();++Hn<Zr;){var Ur=In[Hn];this.set(Ur[0],Ur[1])}}function Ye(In){var Hn=-1,Zr=In?In.length:0;for(this.clear();++Hn<Zr;){var Ur=In[Hn];this.set(Ur[0],Ur[1])}}function st(In){var Hn=-1,Zr=In?In.length:0;for(this.clear();++Hn<Zr;){var Ur=In[Hn];this.set(Ur[0],Ur[1])}}function mt(In,Hn){for(var Zr=In.length;Zr--;)if(wr(In[Zr][0],Hn))return Zr;return-1}function Dt(In,Hn){var Zr=In.__data__;return function(In){var Hn=typeof In;return"string"==Hn||"number"==Hn||"symbol"==Hn||"boolean"==Hn?"__proto__"!==In:null===In}(Hn)?Zr["string"==typeof Hn?"string":"hash"]:Zr.map}function zt(In,Hn){var Zr=function(In,Hn){return null==In?void 0:In[Hn]}(In,Hn);return function(In){return!(!Kr(In)||function(In){return!!Q&&Q in In}(In))&&(function(In){var Hn=Kr(In)?ae.call(In):"";return"[object Function]"==Hn||"[object GeneratorFunction]"==Hn}(In)||function(In){var Hn=!1;if(null!=In&&"function"!=typeof In.toString)try{Hn=!!(In+"")}catch(Zr){}return Hn}(In)?$:f).test(function(In){if(null!=In){try{return ee.call(In)}catch(Hn){}try{return In+""}catch(Hn){}}return""}(In))}(Zr)?Zr:void 0}function Ir(In,Hn){if("function"!=typeof In||Hn&&"function"!=typeof Hn)throw new TypeError("Expected a function");var Zr=function(){var Ur=arguments,di=Hn?Hn.apply(this,Ur):Ur[0],$i=Zr.cache;if($i.has(di))return $i.get(di);var Hi=In.apply(this,Ur);return Zr.cache=$i.set(di,Hi),Hi};return Zr.cache=new(Ir.Cache||st),Zr}function wr(In,Hn){return In===Hn||In!=In&&Hn!=Hn}function Kr(In){var Hn=typeof In;return!!In&&("object"==Hn||"function"==Hn)}he.prototype.clear=function(){this.__data__=oe?oe(null):{}},he.prototype.delete=function(In){return this.has(In)&&delete this.__data__[In]},he.prototype.get=function(In){var Hn=this.__data__;if(oe){var Zr=Hn[In];return Zr===i?void 0:Zr}return ue.call(Hn,In)?Hn[In]:void 0},he.prototype.has=function(In){var Hn=this.__data__;return oe?void 0!==Hn[In]:ue.call(Hn,In)},he.prototype.set=function(In,Hn){return this.__data__[In]=oe&&void 0===Hn?i:Hn,this},Ye.prototype.clear=function(){this.__data__=[]},Ye.prototype.delete=function(In){var Hn=this.__data__,Zr=mt(Hn,In);return!(Zr<0||(Zr==Hn.length-1?Hn.pop():se.call(Hn,Zr,1),0))},Ye.prototype.get=function(In){var Hn=this.__data__,Zr=mt(Hn,In);return Zr<0?void 0:Hn[Zr][1]},Ye.prototype.has=function(In){return mt(this.__data__,In)>-1},Ye.prototype.set=function(In,Hn){var Zr=this.__data__,Ur=mt(Zr,In);return Ur<0?Zr.push([In,Hn]):Zr[Ur][1]=Hn,this},st.prototype.clear=function(){this.__data__={hash:new he,map:new(ve||Ye),string:new he}},st.prototype.delete=function(In){return Dt(this,In).delete(In)},st.prototype.get=function(In){return Dt(this,In).get(In)},st.prototype.has=function(In){return Dt(this,In).has(In)},st.prototype.set=function(In,Hn){return Dt(this,In).set(In,Hn),this},Ir.Cache=st,v.exports=Ir},6123:v=>{var S="Expected a function",u=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,e=/^0o[0-7]+$/i,_=parseInt,y="object"==typeof global&&global&&global.Object===Object&&global,T="object"==typeof self&&self&&self.Object===Object&&self,M=y||T||Function("return this")(),F=Object.prototype.toString,Z=Math.max,J=Math.min,Q=function(){return M.Date.now()};function ae(oe){var he=typeof oe;return!!oe&&("object"==he||"function"==he)}function ve(oe){if("number"==typeof oe)return oe;if(function(oe){return"symbol"==typeof oe||function(oe){return!!oe&&"object"==typeof oe}(oe)&&"[object Symbol]"==F.call(oe)}(oe))return NaN;if(ae(oe)){var he="function"==typeof oe.valueOf?oe.valueOf():oe;oe=ae(he)?he+"":he}if("string"!=typeof oe)return 0===oe?oe:+oe;oe=oe.replace(u,"");var me=f.test(oe);return me||e.test(oe)?_(oe.slice(2),me?2:8):p.test(oe)?NaN:+oe}v.exports=function(oe,he,me){var Oe=!0,ce=!0;if("function"!=typeof oe)throw new TypeError(S);return ae(me)&&(Oe="leading"in me?!!me.leading:Oe,ce="trailing"in me?!!me.trailing:ce),function(oe,he,me){var Oe,ce,dt,ze,Ye,je,Ie=0,Ve=!1,He=!1,Zt=!0;if("function"!=typeof oe)throw new TypeError(S);function st(zt){var Yn=Oe,Hr=ce;return Oe=ce=void 0,Ie=zt,ze=oe.apply(Hr,Yn)}function en(zt){return Ie=zt,Ye=setTimeout(Ut,he),Ve?st(zt):ze}function Gt(zt){var Yn=zt-je;return void 0===je||Yn>=he||Yn<0||He&&zt-Ie>=dt}function Ut(){var zt=Q();if(Gt(zt))return Bt(zt);Ye=setTimeout(Ut,function(zt){var ci=he-(zt-je);return He?J(ci,dt-(zt-Ie)):ci}(zt))}function Bt(zt){return Ye=void 0,Zt&&Oe?st(zt):(Oe=ce=void 0,ze)}function Dt(){var zt=Q(),Yn=Gt(zt);if(Oe=arguments,ce=this,je=zt,Yn){if(void 0===Ye)return en(je);if(He)return Ye=setTimeout(Ut,he),st(je)}return void 0===Ye&&(Ye=setTimeout(Ut,he)),ze}return he=ve(he)||0,ae(me)&&(Ve=!!me.leading,dt=(He="maxWait"in me)?Z(ve(me.maxWait)||0,he):dt,Zt="trailing"in me?!!me.trailing:Zt),Dt.cancel=function(){void 0!==Ye&&clearTimeout(Ye),Ie=0,Oe=je=ce=Ye=void 0},Dt.flush=function(){return void 0===Ye?ze:Bt(Q())},Dt}(oe,he,{leading:Oe,maxWait:he,trailing:ce})}},81235:(v,S,i)=>{var p=i(4153)(i(27038),"DataView");v.exports=p},41505:(v,S,i)=>{var r=i(59410),u=i(21143),p=i(604),f=i(80584),e=i(7792);function _(y){var T=-1,M=null==y?0:y.length;for(this.clear();++T<M;){var R=y[T];this.set(R[0],R[1])}}_.prototype.clear=r,_.prototype.delete=u,_.prototype.get=p,_.prototype.has=f,_.prototype.set=e,v.exports=_},73545:(v,S,i)=>{var r=i(63391),u=i(68971),p=i(18858),f=i(13913),e=i(68944);function _(y){var T=-1,M=null==y?0:y.length;for(this.clear();++T<M;){var R=y[T];this.set(R[0],R[1])}}_.prototype.clear=r,_.prototype.delete=u,_.prototype.get=p,_.prototype.has=f,_.prototype.set=e,v.exports=_},39046:(v,S,i)=>{var p=i(4153)(i(27038),"Map");v.exports=p},93177:(v,S,i)=>{var r=i(70536),u=i(61502),p=i(94960),f=i(61539),e=i(34138);function _(y){var T=-1,M=null==y?0:y.length;for(this.clear();++T<M;){var R=y[T];this.set(R[0],R[1])}}_.prototype.clear=r,_.prototype.delete=u,_.prototype.get=p,_.prototype.has=f,_.prototype.set=e,v.exports=_},97129:(v,S,i)=>{var p=i(4153)(i(27038),"Promise");v.exports=p},74918:(v,S,i)=>{var p=i(4153)(i(27038),"Set");v.exports=p},48690:(v,S,i)=>{var r=i(93177),u=i(30365),p=i(58235);function f(e){var _=-1,y=null==e?0:e.length;for(this.__data__=new r;++_<y;)this.add(e[_])}f.prototype.add=f.prototype.push=u,f.prototype.has=p,v.exports=f},33667:(v,S,i)=>{var r=i(73545),u=i(18034),p=i(37238),f=i(75887),e=i(81450),_=i(61386);function y(T){var M=this.__data__=new r(T);this.size=M.size}y.prototype.clear=u,y.prototype.delete=p,y.prototype.get=f,y.prototype.has=e,y.prototype.set=_,v.exports=y},57333:(v,S,i)=>{var r=i(27038);v.exports=r.Symbol},96820:(v,S,i)=>{var r=i(27038);v.exports=r.Uint8Array},54203:(v,S,i)=>{var p=i(4153)(i(27038),"WeakMap");v.exports=p},81638:v=>{v.exports=function(i,r,u){switch(u.length){case 0:return i.call(r);case 1:return i.call(r,u[0]);case 2:return i.call(r,u[0],u[1]);case 3:return i.call(r,u[0],u[1],u[2])}return i.apply(r,u)}},4500:v=>{v.exports=function(i,r){for(var u=-1,p=null==i?0:i.length;++u<p&&!1!==r(i[u],u,i););return i}},11375:v=>{v.exports=function(i,r){for(var u=-1,p=null==i?0:i.length,f=0,e=[];++u<p;){var _=i[u];r(_,u,i)&&(e[f++]=_)}return e}},71890:(v,S,i)=>{var r=i(48282),u=i(2952),p=i(81690),f=i(84444),e=i(20968),_=i(47679),T=Object.prototype.hasOwnProperty;v.exports=function(R,F){var Z=p(R),J=!Z&&u(R),Q=!Z&&!J&&f(R),ee=!Z&&!J&&!Q&&_(R),ue=Z||J||Q||ee,ae=ue?r(R.length,String):[],$=ae.length;for(var se in R)(F||T.call(R,se))&&(!ue||!("length"==se||Q&&("offset"==se||"parent"==se)||ee&&("buffer"==se||"byteLength"==se||"byteOffset"==se)||e(se,$)))&&ae.push(se);return ae}},14992:v=>{v.exports=function(i,r){for(var u=-1,p=null==i?0:i.length,f=Array(p);++u<p;)f[u]=r(i[u],u,i);return f}},94165:v=>{v.exports=function(i,r){for(var u=-1,p=r.length,f=i.length;++u<p;)i[f+u]=r[u];return i}},89731:v=>{v.exports=function(i,r,u,p){var f=-1,e=null==i?0:i.length;for(p&&e&&(u=i[++f]);++f<e;)u=r(u,i[f],f,i);return u}},8141:v=>{v.exports=function(i,r){for(var u=-1,p=null==i?0:i.length;++u<p;)if(r(i[u],u,i))return!0;return!1}},87280:v=>{v.exports=function(i){return i.split("")}},54561:v=>{var S=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;v.exports=function(r){return r.match(S)||[]}},63530:(v,S,i)=>{var r=i(92007),u=i(71166);v.exports=function(f,e,_){(void 0!==_&&!u(f[e],_)||void 0===_&&!(e in f))&&r(f,e,_)}},23898:(v,S,i)=>{var r=i(92007),u=i(71166),f=Object.prototype.hasOwnProperty;v.exports=function(_,y,T){var M=_[y];(!f.call(_,y)||!u(M,T)||void 0===T&&!(y in _))&&r(_,y,T)}},15758:(v,S,i)=>{var r=i(71166);v.exports=function(p,f){for(var e=p.length;e--;)if(r(p[e][0],f))return e;return-1}},22067:(v,S,i)=>{var r=i(11694),u=i(59108);v.exports=function(f,e){return f&&r(e,u(e),f)}},70882:(v,S,i)=>{var r=i(11694),u=i(42970);v.exports=function(f,e){return f&&r(e,u(e),f)}},92007:(v,S,i)=>{var r=i(20395);v.exports=function(p,f,e){"__proto__"==f&&r?r(p,f,{configurable:!0,enumerable:!0,value:e,writable:!0}):p[f]=e}},77007:(v,S,i)=>{var r=i(33667),u=i(4500),p=i(23898),f=i(22067),e=i(70882),_=i(50694),y=i(53595),T=i(14746),M=i(78857),R=i(58605),F=i(51675),Z=i(26663),J=i(62963),Q=i(32143),ee=i(31563),ue=i(81690),ae=i(84444),$=i(32e3),se=i(53867),ve=i(48855),oe=i(59108),he=i(42970),dt="[object Arguments]",Ve="[object Function]",en="[object Object]",Hn={};Hn[dt]=Hn["[object Array]"]=Hn["[object ArrayBuffer]"]=Hn["[object DataView]"]=Hn["[object Boolean]"]=Hn["[object Date]"]=Hn["[object Float32Array]"]=Hn["[object Float64Array]"]=Hn["[object Int8Array]"]=Hn["[object Int16Array]"]=Hn["[object Int32Array]"]=Hn["[object Map]"]=Hn["[object Number]"]=Hn[en]=Hn["[object RegExp]"]=Hn["[object Set]"]=Hn["[object String]"]=Hn["[object Symbol]"]=Hn["[object Uint8Array]"]=Hn["[object Uint8ClampedArray]"]=Hn["[object Uint16Array]"]=Hn["[object Uint32Array]"]=!0,Hn["[object Error]"]=Hn[Ve]=Hn["[object WeakMap]"]=!1,v.exports=function Zr(Ur,di,$i,Hi,Br,On){var Wt,Jn=1&di,ir=2&di,Lr=4&di;if($i&&(Wt=Br?$i(Ur,Hi,Br,On):$i(Ur)),void 0!==Wt)return Wt;if(!se(Ur))return Ur;var Vn=ue(Ur);if(Vn){if(Wt=J(Ur),!Jn)return y(Ur,Wt)}else{var zr=Z(Ur),hi=zr==Ve||"[object GeneratorFunction]"==zr;if(ae(Ur))return _(Ur,Jn);if(zr==en||zr==dt||hi&&!Br){if(Wt=ir||hi?{}:ee(Ur),!Jn)return ir?M(Ur,e(Wt,Ur)):T(Ur,f(Wt,Ur))}else{if(!Hn[zr])return Br?Ur:{};Wt=Q(Ur,zr,Jn)}}On||(On=new r);var Ai=On.get(Ur);if(Ai)return Ai;On.set(Ur,Wt),ve(Ur)?Ur.forEach(function(gn){Wt.add(Zr(gn,di,$i,gn,Ur,On))}):$(Ur)&&Ur.forEach(function(gn,En){Wt.set(En,Zr(gn,di,$i,En,Ur,On))});var Nr=Vn?void 0:(Lr?ir?F:R:ir?he:oe)(Ur);return u(Nr||Ur,function(gn,En){Nr&&(gn=Ur[En=gn]),p(Wt,En,Zr(gn,di,$i,En,Ur,On))}),Wt}},60920:(v,S,i)=>{var r=i(53867),u=Object.create,p=function(){function f(){}return function(e){if(!r(e))return{};if(u)return u(e);f.prototype=e;var _=new f;return f.prototype=void 0,_}}();v.exports=p},59026:(v,S,i)=>{var r=i(18022),p=i(99889)(r);v.exports=p},12229:v=>{v.exports=function(i,r,u,p){for(var f=i.length,e=u+(p?1:-1);p?e--:++e<f;)if(r(i[e],e,i))return e;return-1}},56369:(v,S,i)=>{var r=i(94165),u=i(21006);v.exports=function p(f,e,_,y,T){var M=-1,R=f.length;for(_||(_=u),T||(T=[]);++M<R;){var F=f[M];e>0&&_(F)?e>1?p(F,e-1,_,y,T):r(T,F):y||(T[T.length]=F)}return T}},75290:(v,S,i)=>{var u=i(8269)();v.exports=u},18022:(v,S,i)=>{var r=i(75290),u=i(59108);v.exports=function(f,e){return f&&r(f,e,u)}},93436:(v,S,i)=>{var r=i(64667),u=i(82773);v.exports=function(f,e){for(var _=0,y=(e=r(e,f)).length;null!=f&&_<y;)f=f[u(e[_++])];return _&&_==y?f:void 0}},19215:(v,S,i)=>{var r=i(94165),u=i(81690);v.exports=function(f,e,_){var y=e(f);return u(f)?y:r(y,_(f))}},72802:(v,S,i)=>{var r=i(57333),u=i(21613),p=i(81244),_=r?r.toStringTag:void 0;v.exports=function(T){return null==T?void 0===T?"[object Undefined]":"[object Null]":_&&_ in Object(T)?u(T):p(T)}},55333:v=>{v.exports=function(i,r){return null!=i&&r in Object(i)}},77090:(v,S,i)=>{var r=i(72802),u=i(27503);v.exports=function(e){return u(e)&&"[object Arguments]"==r(e)}},30696:(v,S,i)=>{var r=i(36863),u=i(27503);v.exports=function p(f,e,_,y,T){return f===e||(null==f||null==e||!u(f)&&!u(e)?f!=f&&e!=e:r(f,e,_,y,p,T))}},36863:(v,S,i)=>{var r=i(33667),u=i(27667),p=i(64630),f=i(70838),e=i(26663),_=i(81690),y=i(84444),T=i(47679),R="[object Arguments]",F="[object Array]",Z="[object Object]",Q=Object.prototype.hasOwnProperty;v.exports=function(ue,ae,$,se,ve,oe){var he=_(ue),me=_(ae),Oe=he?F:e(ue),ce=me?F:e(ae),dt=(Oe=Oe==R?Z:Oe)==Z,ze=(ce=ce==R?Z:ce)==Z,Ye=Oe==ce;if(Ye&&y(ue)){if(!y(ae))return!1;he=!0,dt=!1}if(Ye&&!dt)return oe||(oe=new r),he||T(ue)?u(ue,ae,$,se,ve,oe):p(ue,ae,Oe,$,se,ve,oe);if(!(1&$)){var je=dt&&Q.call(ue,"__wrapped__"),Ie=ze&&Q.call(ae,"__wrapped__");if(je||Ie){var Ve=je?ue.value():ue,He=Ie?ae.value():ae;return oe||(oe=new r),ve(Ve,He,$,se,oe)}}return!!Ye&&(oe||(oe=new r),f(ue,ae,$,se,ve,oe))}},63434:(v,S,i)=>{var r=i(26663),u=i(27503);v.exports=function(e){return u(e)&&"[object Map]"==r(e)}},88783:(v,S,i)=>{var r=i(33667),u=i(30696);v.exports=function(_,y,T,M){var R=T.length,F=R,Z=!M;if(null==_)return!F;for(_=Object(_);R--;){var J=T[R];if(Z&&J[2]?J[1]!==_[J[0]]:!(J[0]in _))return!1}for(;++R<F;){var Q=(J=T[R])[0],ee=_[Q],ue=J[1];if(Z&&J[2]){if(void 0===ee&&!(Q in _))return!1}else{var ae=new r;if(M)var $=M(ee,ue,Q,_,y,ae);if(!(void 0===$?u(ue,ee,3,M,ae):$))return!1}}return!0}},43540:(v,S,i)=>{var r=i(55836),u=i(38466),p=i(53867),f=i(51217),_=/^\[object .+?Constructor\]$/,F=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");v.exports=function(J){return!(!p(J)||u(J))&&(r(J)?F:_).test(f(J))}},67495:(v,S,i)=>{var r=i(26663),u=i(27503);v.exports=function(e){return u(e)&&"[object Set]"==r(e)}},99390:(v,S,i)=>{var r=i(72802),u=i(8613),p=i(27503),Ye={};Ye["[object Float32Array]"]=Ye["[object Float64Array]"]=Ye["[object Int8Array]"]=Ye["[object Int16Array]"]=Ye["[object Int32Array]"]=Ye["[object Uint8Array]"]=Ye["[object Uint8ClampedArray]"]=Ye["[object Uint16Array]"]=Ye["[object Uint32Array]"]=!0,Ye["[object Arguments]"]=Ye["[object Array]"]=Ye["[object ArrayBuffer]"]=Ye["[object Boolean]"]=Ye["[object DataView]"]=Ye["[object Date]"]=Ye["[object Error]"]=Ye["[object Function]"]=Ye["[object Map]"]=Ye["[object Number]"]=Ye["[object Object]"]=Ye["[object RegExp]"]=Ye["[object Set]"]=Ye["[object String]"]=Ye["[object WeakMap]"]=!1,v.exports=function(Ie){return p(Ie)&&u(Ie.length)&&!!Ye[r(Ie)]}},5245:(v,S,i)=>{var r=i(69433),u=i(68608),p=i(80290),f=i(81690),e=i(63354);v.exports=function(y){return"function"==typeof y?y:null==y?p:"object"==typeof y?f(y)?u(y[0],y[1]):r(y):e(y)}},92488:(v,S,i)=>{var r=i(58845),u=i(36700),f=Object.prototype.hasOwnProperty;v.exports=function(_){if(!r(_))return u(_);var y=[];for(var T in Object(_))f.call(_,T)&&"constructor"!=T&&y.push(T);return y}},50762:(v,S,i)=>{var r=i(53867),u=i(58845),p=i(25618),e=Object.prototype.hasOwnProperty;v.exports=function(y){if(!r(y))return p(y);var T=u(y),M=[];for(var R in y)"constructor"==R&&(T||!e.call(y,R))||M.push(R);return M}},69433:(v,S,i)=>{var r=i(88783),u=i(48834),p=i(63587);v.exports=function(e){var _=u(e);return 1==_.length&&_[0][2]?p(_[0][0],_[0][1]):function(y){return y===e||r(y,e,_)}}},68608:(v,S,i)=>{var r=i(30696),u=i(58102),p=i(18303),f=i(99743),e=i(45774),_=i(63587),y=i(82773);v.exports=function(F,Z){return f(F)&&e(Z)?_(y(F),Z):function(J){var Q=u(J,F);return void 0===Q&&Q===Z?p(J,F):r(Z,Q,3)}}},9085:(v,S,i)=>{var r=i(33667),u=i(63530),p=i(75290),f=i(23607),e=i(53867),_=i(42970),y=i(45959);v.exports=function T(M,R,F,Z,J){M!==R&&p(R,function(Q,ee){if(J||(J=new r),e(Q))f(M,R,ee,F,T,Z,J);else{var ue=Z?Z(y(M,ee),Q,ee+"",M,R,J):void 0;void 0===ue&&(ue=Q),u(M,ee,ue)}},_)}},23607:(v,S,i)=>{var r=i(63530),u=i(50694),p=i(96282),f=i(53595),e=i(31563),_=i(2952),y=i(81690),T=i(82027),M=i(84444),R=i(55836),F=i(53867),Z=i(82358),J=i(47679),Q=i(45959),ee=i(31413);v.exports=function(ae,$,se,ve,oe,he,me){var Oe=Q(ae,se),ce=Q($,se),dt=me.get(ce);if(dt)r(ae,se,dt);else{var ze=he?he(Oe,ce,se+"",ae,$,me):void 0,Ye=void 0===ze;if(Ye){var je=y(ce),Ie=!je&&M(ce),Ve=!je&&!Ie&&J(ce);ze=ce,je||Ie||Ve?y(Oe)?ze=Oe:T(Oe)?ze=f(Oe):Ie?(Ye=!1,ze=u(ce,!0)):Ve?(Ye=!1,ze=p(ce,!0)):ze=[]:Z(ce)||_(ce)?(ze=Oe,_(Oe)?ze=ee(Oe):(!F(Oe)||R(Oe))&&(ze=e(ce))):Ye=!1}Ye&&(me.set(ce,ze),oe(ze,ce,ve,he,me),me.delete(ce)),r(ae,se,ze)}}},68840:v=>{v.exports=function(i){return function(r){return null==r?void 0:r[i]}}},59866:(v,S,i)=>{var r=i(93436);v.exports=function(p){return function(f){return r(f,p)}}},17421:v=>{v.exports=function(i){return function(r){return null==i?void 0:i[r]}}},85105:v=>{v.exports=function(i,r,u,p,f){return f(i,function(e,_,y){u=p?(p=!1,e):r(u,e,_,y)}),u}},84441:(v,S,i)=>{var r=i(80290),u=i(15529),p=i(39009);v.exports=function(e,_){return p(u(e,_,r),e+"")}},32773:(v,S,i)=>{var r=i(23898),u=i(64667),p=i(20968),f=i(53867),e=i(82773);v.exports=function(y,T,M,R){if(!f(y))return y;for(var F=-1,Z=(T=u(T,y)).length,J=Z-1,Q=y;null!=Q&&++F<Z;){var ee=e(T[F]),ue=M;if("__proto__"===ee||"constructor"===ee||"prototype"===ee)return y;if(F!=J){var ae=Q[ee];void 0===(ue=R?R(ae,ee,Q):void 0)&&(ue=f(ae)?ae:p(T[F+1])?[]:{})}r(Q,ee,ue),Q=Q[ee]}return y}},99372:(v,S,i)=>{var r=i(45654),u=i(20395),p=i(80290);v.exports=u?function(e,_){return u(e,"toString",{configurable:!0,enumerable:!1,value:r(_),writable:!0})}:p},63586:v=>{v.exports=function(i,r,u){var p=-1,f=i.length;r<0&&(r=-r>f?0:f+r),(u=u>f?f:u)<0&&(u+=f),f=r>u?0:u-r>>>0,r>>>=0;for(var e=Array(f);++p<f;)e[p]=i[p+r];return e}},37834:(v,S,i)=>{var r=i(59026);v.exports=function(p,f){var e;return r(p,function(_,y,T){return!(e=f(_,y,T))}),!!e}},48282:v=>{v.exports=function(i,r){for(var u=-1,p=Array(i);++u<i;)p[u]=r(u);return p}},68166:(v,S,i)=>{var r=i(57333),u=i(14992),p=i(81690),f=i(7786),_=r?r.prototype:void 0,y=_?_.toString:void 0;v.exports=function T(M){if("string"==typeof M)return M;if(p(M))return u(M,T)+"";if(f(M))return y?y.call(M):"";var R=M+"";return"0"==R&&1/M==-1/0?"-0":R}},13743:(v,S,i)=>{var r=i(87478),u=/^\s+/;v.exports=function(f){return f&&f.slice(0,r(f)+1).replace(u,"")}},70544:v=>{v.exports=function(i){return function(r){return i(r)}}},72064:(v,S,i)=>{var r=i(64667),u=i(27842),p=i(61746),f=i(82773);v.exports=function(_,y){return y=r(y,_),null==(_=p(_,y))||delete _[f(u(y))]}},25687:v=>{v.exports=function(i,r,u){for(var p=-1,f=i.length,e=r.length,_={};++p<f;)u(_,i[p],p<e?r[p]:void 0);return _}},13747:v=>{v.exports=function(i,r){return i.has(r)}},64667:(v,S,i)=>{var r=i(81690),u=i(99743),p=i(89775),f=i(41233);v.exports=function(_,y){return r(_)?_:u(_,y)?[_]:p(f(_))}},26477:(v,S,i)=>{var r=i(63586);v.exports=function(p,f,e){var _=p.length;return e=void 0===e?_:e,!f&&e>=_?p:r(p,f,e)}},88461:(v,S,i)=>{var r=i(96820);v.exports=function(p){var f=new p.constructor(p.byteLength);return new r(f).set(new r(p)),f}},50694:(v,S,i)=>{v=i.nmd(v);var r=i(27038),u=S&&!S.nodeType&&S,p=u&&v&&!v.nodeType&&v,e=p&&p.exports===u?r.Buffer:void 0,_=e?e.allocUnsafe:void 0;v.exports=function(T,M){if(M)return T.slice();var R=T.length,F=_?_(R):new T.constructor(R);return T.copy(F),F}},59757:(v,S,i)=>{var r=i(88461);v.exports=function(p,f){var e=f?r(p.buffer):p.buffer;return new p.constructor(e,p.byteOffset,p.byteLength)}},83615:v=>{var S=/\w*$/;v.exports=function(r){var u=new r.constructor(r.source,S.exec(r));return u.lastIndex=r.lastIndex,u}},42282:(v,S,i)=>{var r=i(57333),u=r?r.prototype:void 0,p=u?u.valueOf:void 0;v.exports=function(e){return p?Object(p.call(e)):{}}},96282:(v,S,i)=>{var r=i(88461);v.exports=function(p,f){var e=f?r(p.buffer):p.buffer;return new p.constructor(e,p.byteOffset,p.length)}},53595:v=>{v.exports=function(i,r){var u=-1,p=i.length;for(r||(r=Array(p));++u<p;)r[u]=i[u];return r}},11694:(v,S,i)=>{var r=i(23898),u=i(92007);v.exports=function(f,e,_,y){var T=!_;_||(_={});for(var M=-1,R=e.length;++M<R;){var F=e[M],Z=y?y(_[F],f[F],F,_,f):void 0;void 0===Z&&(Z=f[F]),T?u(_,F,Z):r(_,F,Z)}return _}},14746:(v,S,i)=>{var r=i(11694),u=i(10296);v.exports=function(f,e){return r(f,u(f),e)}},78857:(v,S,i)=>{var r=i(11694),u=i(29572);v.exports=function(f,e){return r(f,u(f),e)}},93412:(v,S,i)=>{var r=i(27038);v.exports=r["__core-js_shared__"]},30906:(v,S,i)=>{var r=i(84441),u=i(71100);v.exports=function(f){return r(function(e,_){var y=-1,T=_.length,M=T>1?_[T-1]:void 0,R=T>2?_[2]:void 0;for(M=f.length>3&&"function"==typeof M?(T--,M):void 0,R&&u(_[0],_[1],R)&&(M=T<3?void 0:M,T=1),e=Object(e);++y<T;){var F=_[y];F&&f(e,F,y,M)}return e})}},99889:(v,S,i)=>{var r=i(93406);v.exports=function(p,f){return function(e,_){if(null==e)return e;if(!r(e))return p(e,_);for(var y=e.length,T=f?y:-1,M=Object(e);(f?T--:++T<y)&&!1!==_(M[T],T,M););return e}}},8269:v=>{v.exports=function(i){return function(r,u,p){for(var f=-1,e=Object(r),_=p(r),y=_.length;y--;){var T=_[i?y:++f];if(!1===u(e[T],T,e))break}return r}}},66803:(v,S,i)=>{var r=i(26477),u=i(407),p=i(2150),f=i(41233);v.exports=function(_){return function(y){y=f(y);var T=u(y)?p(y):void 0,M=T?T[0]:y.charAt(0),R=T?r(T,1).join(""):y.slice(1);return M[_]()+R}}},17407:(v,S,i)=>{var r=i(89731),u=i(75289),p=i(96590),e=RegExp("['\u2019]","g");v.exports=function(y){return function(T){return r(p(u(T).replace(e,"")),y,"")}}},44674:(v,S,i)=>{var r=i(5245),u=i(93406),p=i(59108);v.exports=function(e){return function(_,y,T){var M=Object(_);if(!u(_)){var R=r(y,3);_=p(_),y=function(Z){return R(M[Z],Z,M)}}var F=e(_,y,T);return F>-1?M[R?_[F]:F]:void 0}}},925:(v,S,i)=>{var r=i(82358);v.exports=function(p){return r(p)?void 0:p}},4068:(v,S,i)=>{var p=i(17421)({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"});v.exports=p},20395:(v,S,i)=>{var r=i(4153),u=function(){try{var p=r(Object,"defineProperty");return p({},"",{}),p}catch(f){}}();v.exports=u},27667:(v,S,i)=>{var r=i(48690),u=i(8141),p=i(13747);v.exports=function(y,T,M,R,F,Z){var J=1&M,Q=y.length,ee=T.length;if(Q!=ee&&!(J&&ee>Q))return!1;var ue=Z.get(y),ae=Z.get(T);if(ue&&ae)return ue==T&&ae==y;var $=-1,se=!0,ve=2&M?new r:void 0;for(Z.set(y,T),Z.set(T,y);++$<Q;){var oe=y[$],he=T[$];if(R)var me=J?R(he,oe,$,T,y,Z):R(oe,he,$,y,T,Z);if(void 0!==me){if(me)continue;se=!1;break}if(ve){if(!u(T,function(Oe,ce){if(!p(ve,ce)&&(oe===Oe||F(oe,Oe,M,R,Z)))return ve.push(ce)})){se=!1;break}}else if(oe!==he&&!F(oe,he,M,R,Z)){se=!1;break}}return Z.delete(y),Z.delete(T),se}},64630:(v,S,i)=>{var r=i(57333),u=i(96820),p=i(71166),f=i(27667),e=i(37461),_=i(57673),ve=r?r.prototype:void 0,oe=ve?ve.valueOf:void 0;v.exports=function(me,Oe,ce,dt,ze,Ye,je){switch(ce){case"[object DataView]":if(me.byteLength!=Oe.byteLength||me.byteOffset!=Oe.byteOffset)return!1;me=me.buffer,Oe=Oe.buffer;case"[object ArrayBuffer]":return!(me.byteLength!=Oe.byteLength||!Ye(new u(me),new u(Oe)));case"[object Boolean]":case"[object Date]":case"[object Number]":return p(+me,+Oe);case"[object Error]":return me.name==Oe.name&&me.message==Oe.message;case"[object RegExp]":case"[object String]":return me==Oe+"";case"[object Map]":var Ie=e;case"[object Set]":if(Ie||(Ie=_),me.size!=Oe.size&&!(1&dt))return!1;var He=je.get(me);if(He)return He==Oe;dt|=2,je.set(me,Oe);var Zt=f(Ie(me),Ie(Oe),dt,ze,Ye,je);return je.delete(me),Zt;case"[object Symbol]":if(oe)return oe.call(me)==oe.call(Oe)}return!1}},70838:(v,S,i)=>{var r=i(58605),f=Object.prototype.hasOwnProperty;v.exports=function(_,y,T,M,R,F){var Z=1&T,J=r(_),Q=J.length;if(Q!=r(y).length&&!Z)return!1;for(var ae=Q;ae--;){var $=J[ae];if(!(Z?$ in y:f.call(y,$)))return!1}var se=F.get(_),ve=F.get(y);if(se&&ve)return se==y&&ve==_;var oe=!0;F.set(_,y),F.set(y,_);for(var he=Z;++ae<Q;){var me=_[$=J[ae]],Oe=y[$];if(M)var ce=Z?M(Oe,me,$,y,_,F):M(me,Oe,$,_,y,F);if(!(void 0===ce?me===Oe||R(me,Oe,T,M,F):ce)){oe=!1;break}he||(he="constructor"==$)}if(oe&&!he){var dt=_.constructor,ze=y.constructor;dt!=ze&&"constructor"in _&&"constructor"in y&&!("function"==typeof dt&&dt instanceof dt&&"function"==typeof ze&&ze instanceof ze)&&(oe=!1)}return F.delete(_),F.delete(y),oe}},10058:(v,S,i)=>{var r=i(94694),u=i(15529),p=i(39009);v.exports=function(e){return p(u(e,void 0,r),e+"")}},61138:v=>{var S="object"==typeof global&&global&&global.Object===Object&&global;v.exports=S},58605:(v,S,i)=>{var r=i(19215),u=i(10296),p=i(59108);v.exports=function(e){return r(e,p,u)}},51675:(v,S,i)=>{var r=i(19215),u=i(29572),p=i(42970);v.exports=function(e){return r(e,p,u)}},85556:(v,S,i)=>{var r=i(36586);v.exports=function(p,f){var e=p.__data__;return r(f)?e["string"==typeof f?"string":"hash"]:e.map}},48834:(v,S,i)=>{var r=i(45774),u=i(59108);v.exports=function(f){for(var e=u(f),_=e.length;_--;){var y=e[_],T=f[y];e[_]=[y,T,r(T)]}return e}},4153:(v,S,i)=>{var r=i(43540),u=i(36825);v.exports=function(f,e){var _=u(f,e);return r(_)?_:void 0}},52398:(v,S,i)=>{var u=i(93332)(Object.getPrototypeOf,Object);v.exports=u},21613:(v,S,i)=>{var r=i(57333),u=Object.prototype,p=u.hasOwnProperty,f=u.toString,e=r?r.toStringTag:void 0;v.exports=function(y){var T=p.call(y,e),M=y[e];try{y[e]=void 0;var R=!0}catch(Z){}var F=f.call(y);return R&&(T?y[e]=M:delete y[e]),F}},10296:(v,S,i)=>{var r=i(11375),u=i(65336),f=Object.prototype.propertyIsEnumerable,e=Object.getOwnPropertySymbols;v.exports=e?function(y){return null==y?[]:(y=Object(y),r(e(y),function(T){return f.call(y,T)}))}:u},29572:(v,S,i)=>{var r=i(94165),u=i(52398),p=i(10296),f=i(65336);v.exports=Object.getOwnPropertySymbols?function(y){for(var T=[];y;)r(T,p(y)),y=u(y);return T}:f},26663:(v,S,i)=>{var r=i(81235),u=i(39046),p=i(97129),f=i(74918),e=i(54203),_=i(72802),y=i(51217),T="[object Map]",R="[object Promise]",F="[object Set]",Z="[object WeakMap]",J="[object DataView]",Q=y(r),ee=y(u),ue=y(p),ae=y(f),$=y(e),se=_;(r&&se(new r(new ArrayBuffer(1)))!=J||u&&se(new u)!=T||p&&se(p.resolve())!=R||f&&se(new f)!=F||e&&se(new e)!=Z)&&(se=function(ve){var oe=_(ve),he="[object Object]"==oe?ve.constructor:void 0,me=he?y(he):"";if(me)switch(me){case Q:return J;case ee:return T;case ue:return R;case ae:return F;case $:return Z}return oe}),v.exports=se},36825:v=>{v.exports=function(i,r){return null==i?void 0:i[r]}},82138:(v,S,i)=>{var r=i(64667),u=i(2952),p=i(81690),f=i(20968),e=i(8613),_=i(82773);v.exports=function(T,M,R){for(var F=-1,Z=(M=r(M,T)).length,J=!1;++F<Z;){var Q=_(M[F]);if(!(J=null!=T&&R(T,Q)))break;T=T[Q]}return J||++F!=Z?J:!!(Z=null==T?0:T.length)&&e(Z)&&f(Q,Z)&&(p(T)||u(T))}},407:v=>{var _=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");v.exports=function(T){return _.test(T)}},59316:v=>{var S=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;v.exports=function(r){return S.test(r)}},59410:(v,S,i)=>{var r=i(95969);v.exports=function(){this.__data__=r?r(null):{},this.size=0}},21143:v=>{v.exports=function(i){var r=this.has(i)&&delete this.__data__[i];return this.size-=r?1:0,r}},604:(v,S,i)=>{var r=i(95969),f=Object.prototype.hasOwnProperty;v.exports=function(_){var y=this.__data__;if(r){var T=y[_];return"__lodash_hash_undefined__"===T?void 0:T}return f.call(y,_)?y[_]:void 0}},80584:(v,S,i)=>{var r=i(95969),p=Object.prototype.hasOwnProperty;v.exports=function(e){var _=this.__data__;return r?void 0!==_[e]:p.call(_,e)}},7792:(v,S,i)=>{var r=i(95969);v.exports=function(f,e){var _=this.__data__;return this.size+=this.has(f)?0:1,_[f]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},62963:v=>{var i=Object.prototype.hasOwnProperty;v.exports=function(u){var p=u.length,f=new u.constructor(p);return p&&"string"==typeof u[0]&&i.call(u,"index")&&(f.index=u.index,f.input=u.input),f}},32143:(v,S,i)=>{var r=i(88461),u=i(59757),p=i(83615),f=i(42282),e=i(96282);v.exports=function(dt,ze,Ye){var je=dt.constructor;switch(ze){case"[object ArrayBuffer]":return r(dt);case"[object Boolean]":case"[object Date]":return new je(+dt);case"[object DataView]":return u(dt,Ye);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return e(dt,Ye);case"[object Map]":return new je;case"[object Number]":case"[object String]":return new je(dt);case"[object RegExp]":return p(dt);case"[object Set]":return new je;case"[object Symbol]":return f(dt)}}},31563:(v,S,i)=>{var r=i(60920),u=i(52398),p=i(58845);v.exports=function(e){return"function"!=typeof e.constructor||p(e)?{}:r(u(e))}},21006:(v,S,i)=>{var r=i(57333),u=i(2952),p=i(81690),f=r?r.isConcatSpreadable:void 0;v.exports=function(_){return p(_)||u(_)||!!(f&&_&&_[f])}},20968:v=>{var i=/^(?:0|[1-9]\d*)$/;v.exports=function(u,p){var f=typeof u;return!!(p=null==p?9007199254740991:p)&&("number"==f||"symbol"!=f&&i.test(u))&&u>-1&&u%1==0&&u<p}},71100:(v,S,i)=>{var r=i(71166),u=i(93406),p=i(20968),f=i(53867);v.exports=function(_,y,T){if(!f(T))return!1;var M=typeof y;return!!("number"==M?u(T)&&p(y,T.length):"string"==M&&y in T)&&r(T[y],_)}},99743:(v,S,i)=>{var r=i(81690),u=i(7786),p=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,f=/^\w*$/;v.exports=function(_,y){if(r(_))return!1;var T=typeof _;return!("number"!=T&&"symbol"!=T&&"boolean"!=T&&null!=_&&!u(_))||f.test(_)||!p.test(_)||null!=y&&_ in Object(y)}},36586:v=>{v.exports=function(i){var r=typeof i;return"string"==r||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==i:null===i}},38466:(v,S,i)=>{var f,r=i(93412),u=(f=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+f:"";v.exports=function(f){return!!u&&u in f}},58845:v=>{var S=Object.prototype;v.exports=function(r){var u=r&&r.constructor;return r===("function"==typeof u&&u.prototype||S)}},45774:(v,S,i)=>{var r=i(53867);v.exports=function(p){return p==p&&!r(p)}},63391:v=>{v.exports=function(){this.__data__=[],this.size=0}},68971:(v,S,i)=>{var r=i(15758),p=Array.prototype.splice;v.exports=function(e){var _=this.__data__,y=r(_,e);return!(y<0||(y==_.length-1?_.pop():p.call(_,y,1),--this.size,0))}},18858:(v,S,i)=>{var r=i(15758);v.exports=function(p){var f=this.__data__,e=r(f,p);return e<0?void 0:f[e][1]}},13913:(v,S,i)=>{var r=i(15758);v.exports=function(p){return r(this.__data__,p)>-1}},68944:(v,S,i)=>{var r=i(15758);v.exports=function(p,f){var e=this.__data__,_=r(e,p);return _<0?(++this.size,e.push([p,f])):e[_][1]=f,this}},70536:(v,S,i)=>{var r=i(41505),u=i(73545),p=i(39046);v.exports=function(){this.size=0,this.__data__={hash:new r,map:new(p||u),string:new r}}},61502:(v,S,i)=>{var r=i(85556);v.exports=function(p){var f=r(this,p).delete(p);return this.size-=f?1:0,f}},94960:(v,S,i)=>{var r=i(85556);v.exports=function(p){return r(this,p).get(p)}},61539:(v,S,i)=>{var r=i(85556);v.exports=function(p){return r(this,p).has(p)}},34138:(v,S,i)=>{var r=i(85556);v.exports=function(p,f){var e=r(this,p),_=e.size;return e.set(p,f),this.size+=e.size==_?0:1,this}},37461:v=>{v.exports=function(i){var r=-1,u=Array(i.size);return i.forEach(function(p,f){u[++r]=[f,p]}),u}},63587:v=>{v.exports=function(i,r){return function(u){return null!=u&&u[i]===r&&(void 0!==r||i in Object(u))}}},43911:(v,S,i)=>{var r=i(97425);v.exports=function(f){var e=r(f,function(y){return 500===_.size&&_.clear(),y}),_=e.cache;return e}},95969:(v,S,i)=>{var u=i(4153)(Object,"create");v.exports=u},36700:(v,S,i)=>{var u=i(93332)(Object.keys,Object);v.exports=u},25618:v=>{v.exports=function(i){var r=[];if(null!=i)for(var u in Object(i))r.push(u);return r}},70938:(v,S,i)=>{v=i.nmd(v);var r=i(61138),u=S&&!S.nodeType&&S,p=u&&v&&!v.nodeType&&v,e=p&&p.exports===u&&r.process,_=function(){try{return p&&p.require&&p.require("util").types||e&&e.binding&&e.binding("util")}catch(T){}}();v.exports=_},81244:v=>{var i=Object.prototype.toString;v.exports=function(u){return i.call(u)}},93332:v=>{v.exports=function(i,r){return function(u){return i(r(u))}}},15529:(v,S,i)=>{var r=i(81638),u=Math.max;v.exports=function(f,e,_){return e=u(void 0===e?f.length-1:e,0),function(){for(var y=arguments,T=-1,M=u(y.length-e,0),R=Array(M);++T<M;)R[T]=y[e+T];T=-1;for(var F=Array(e+1);++T<e;)F[T]=y[T];return F[e]=_(R),r(f,this,F)}}},61746:(v,S,i)=>{var r=i(93436),u=i(63586);v.exports=function(f,e){return e.length<2?f:r(f,u(e,0,-1))}},27038:(v,S,i)=>{var r=i(61138),u="object"==typeof self&&self&&self.Object===Object&&self,p=r||u||Function("return this")();v.exports=p},45959:v=>{v.exports=function(i,r){if(("constructor"!==r||"function"!=typeof i[r])&&"__proto__"!=r)return i[r]}},30365:v=>{v.exports=function(r){return this.__data__.set(r,"__lodash_hash_undefined__"),this}},58235:v=>{v.exports=function(i){return this.__data__.has(i)}},57673:v=>{v.exports=function(i){var r=-1,u=Array(i.size);return i.forEach(function(p){u[++r]=p}),u}},39009:(v,S,i)=>{var r=i(99372),p=i(44094)(r);v.exports=p},44094:v=>{var r=Date.now;v.exports=function(p){var f=0,e=0;return function(){var _=r(),y=16-(_-e);if(e=_,y>0){if(++f>=800)return arguments[0]}else f=0;return p.apply(void 0,arguments)}}},18034:(v,S,i)=>{var r=i(73545);v.exports=function(){this.__data__=new r,this.size=0}},37238:v=>{v.exports=function(i){var r=this.__data__,u=r.delete(i);return this.size=r.size,u}},75887:v=>{v.exports=function(i){return this.__data__.get(i)}},81450:v=>{v.exports=function(i){return this.__data__.has(i)}},61386:(v,S,i)=>{var r=i(73545),u=i(39046),p=i(93177);v.exports=function(_,y){var T=this.__data__;if(T instanceof r){var M=T.__data__;if(!u||M.length<199)return M.push([_,y]),this.size=++T.size,this;T=this.__data__=new p(M)}return T.set(_,y),this.size=T.size,this}},2150:(v,S,i)=>{var r=i(87280),u=i(407),p=i(1879);v.exports=function(e){return u(e)?p(e):r(e)}},89775:(v,S,i)=>{var r=i(43911),u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g,f=r(function(e){var _=[];return 46===e.charCodeAt(0)&&_.push(""),e.replace(u,function(y,T,M,R){_.push(M?R.replace(p,"$1"):T||y)}),_});v.exports=f},82773:(v,S,i)=>{var r=i(7786);v.exports=function(f){if("string"==typeof f||r(f))return f;var e=f+"";return"0"==e&&1/f==-1/0?"-0":e}},51217:v=>{var i=Function.prototype.toString;v.exports=function(u){if(null!=u){try{return i.call(u)}catch(p){}try{return u+""}catch(p){}}return""}},87478:v=>{var S=/\s/;v.exports=function(r){for(var u=r.length;u--&&S.test(r.charAt(u)););return u}},1879:v=>{var S="\\ud800-\\udfff",e="["+S+"]",_="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",y="\\ud83c[\\udffb-\\udfff]",M="[^"+S+"]",R="(?:\\ud83c[\\udde6-\\uddff]){2}",F="[\\ud800-\\udbff][\\udc00-\\udfff]",J="(?:"+_+"|"+y+")?",Q="[\\ufe0e\\ufe0f]?",ue=Q+J+"(?:\\u200d(?:"+[M,R,F].join("|")+")"+Q+J+")*",ae="(?:"+[M+_+"?",_,R,F,e].join("|")+")",$=RegExp(y+"(?="+y+")|"+ae+ue,"g");v.exports=function(ve){return ve.match($)||[]}},58863:v=>{var S="\\ud800-\\udfff",f="\\u2700-\\u27bf",e="a-z\\xdf-\\xf6\\xf8-\\xff",R="A-Z\\xc0-\\xd6\\xd8-\\xde",Z="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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",Q="["+Z+"]",ue="\\d+",ae="["+f+"]",$="["+e+"]",se="[^"+S+Z+ue+f+e+R+"]",me="(?:\\ud83c[\\udde6-\\uddff]){2}",Oe="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="["+R+"]",ze="(?:"+$+"|"+se+")",Ye="(?:"+ce+"|"+se+")",je="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Ie="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",Ve="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",He="[\\ufe0e\\ufe0f]?",$t=He+Ve+"(?:\\u200d(?:"+["[^"+S+"]",me,Oe].join("|")+")"+He+Ve+")*",Gt="(?:"+[ae,me,Oe].join("|")+")"+$t,Ut=RegExp([ce+"?"+$+"+"+je+"(?="+[Q,ce,"$"].join("|")+")",Ye+"+"+Ie+"(?="+[Q,ce+ze,"$"].join("|")+")",ce+"?"+ze+"+"+je,ce+"+"+Ie,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ue,Gt].join("|"),"g");v.exports=function(mt){return mt.match(Ut)||[]}},35037:(v,S,i)=>{var r=i(76974),p=i(17407)(function(f,e,_){return e=e.toLowerCase(),f+(_?r(e):e)});v.exports=p},76974:(v,S,i)=>{var r=i(41233),u=i(93890);v.exports=function(f){return u(r(f).toLowerCase())}},45654:v=>{v.exports=function(i){return function(){return i}}},41776:(v,S,i)=>{var r=i(53867),u=i(30765),p=i(45038),e=Math.max,_=Math.min;v.exports=function(T,M,R){var F,Z,J,Q,ee,ue,ae=0,$=!1,se=!1,ve=!0;if("function"!=typeof T)throw new TypeError("Expected a function");function oe(Ie){var Ve=F,He=Z;return F=Z=void 0,ae=Ie,Q=T.apply(He,Ve)}function he(Ie){return ae=Ie,ee=setTimeout(ce,M),$?oe(Ie):Q}function Oe(Ie){var Ve=Ie-ue;return void 0===ue||Ve>=M||Ve<0||se&&Ie-ae>=J}function ce(){var Ie=u();if(Oe(Ie))return dt(Ie);ee=setTimeout(ce,function(Ie){var Zt=M-(Ie-ue);return se?_(Zt,J-(Ie-ae)):Zt}(Ie))}function dt(Ie){return ee=void 0,ve&&F?oe(Ie):(F=Z=void 0,Q)}function je(){var Ie=u(),Ve=Oe(Ie);if(F=arguments,Z=this,ue=Ie,Ve){if(void 0===ee)return he(ue);if(se)return clearTimeout(ee),ee=setTimeout(ce,M),oe(ue)}return void 0===ee&&(ee=setTimeout(ce,M)),Q}return M=p(M)||0,r(R)&&($=!!R.leading,J=(se="maxWait"in R)?e(p(R.maxWait)||0,M):J,ve="trailing"in R?!!R.trailing:ve),je.cancel=function(){void 0!==ee&&clearTimeout(ee),ae=0,F=ue=Z=ee=void 0},je.flush=function(){return void 0===ee?Q:dt(u())},je}},75289:(v,S,i)=>{var r=i(4068),u=i(41233),p=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,M=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");v.exports=function(F){return(F=u(F))&&F.replace(p,r).replace(M,"")}},71166:v=>{v.exports=function(i,r){return i===r||i!=i&&r!=r}},98990:(v,S,i)=>{var p=i(44674)(i(84857));v.exports=p},84857:(v,S,i)=>{var r=i(12229),u=i(5245),p=i(32781),f=Math.max;v.exports=function(_,y,T){var M=null==_?0:_.length;if(!M)return-1;var R=null==T?0:p(T);return R<0&&(R=f(M+R,0)),r(_,u(y,3),R)}},94694:(v,S,i)=>{var r=i(56369);v.exports=function(p){return null!=p&&p.length?r(p,1):[]}},58102:(v,S,i)=>{var r=i(93436);v.exports=function(p,f,e){var _=null==p?void 0:r(p,f);return void 0===_?e:_}},18303:(v,S,i)=>{var r=i(55333),u=i(82138);v.exports=function(f,e){return null!=f&&u(f,e,r)}},80290:v=>{v.exports=function(i){return i}},2952:(v,S,i)=>{var r=i(77090),u=i(27503),p=Object.prototype,f=p.hasOwnProperty,e=p.propertyIsEnumerable,_=r(function(){return arguments}())?r:function(y){return u(y)&&f.call(y,"callee")&&!e.call(y,"callee")};v.exports=_},81690:v=>{v.exports=Array.isArray},93406:(v,S,i)=>{var r=i(55836),u=i(8613);v.exports=function(f){return null!=f&&u(f.length)&&!r(f)}},82027:(v,S,i)=>{var r=i(93406),u=i(27503);v.exports=function(f){return u(f)&&r(f)}},84444:(v,S,i)=>{v=i.nmd(v);var r=i(27038),u=i(61711),p=S&&!S.nodeType&&S,f=p&&v&&!v.nodeType&&v,_=f&&f.exports===p?r.Buffer:void 0;v.exports=(_?_.isBuffer:void 0)||u},12232:(v,S,i)=>{var r=i(92488),u=i(26663),p=i(2952),f=i(81690),e=i(93406),_=i(84444),y=i(58845),T=i(47679),Z=Object.prototype.hasOwnProperty;v.exports=function(Q){if(null==Q)return!0;if(e(Q)&&(f(Q)||"string"==typeof Q||"function"==typeof Q.splice||_(Q)||T(Q)||p(Q)))return!Q.length;var ee=u(Q);if("[object Map]"==ee||"[object Set]"==ee)return!Q.size;if(y(Q))return!r(Q).length;for(var ue in Q)if(Z.call(Q,ue))return!1;return!0}},55836:(v,S,i)=>{var r=i(72802),u=i(53867);v.exports=function(T){if(!u(T))return!1;var M=r(T);return"[object Function]"==M||"[object GeneratorFunction]"==M||"[object AsyncFunction]"==M||"[object Proxy]"==M}},8613:v=>{v.exports=function(r){return"number"==typeof r&&r>-1&&r%1==0&&r<=9007199254740991}},32e3:(v,S,i)=>{var r=i(63434),u=i(70544),p=i(70938),f=p&&p.isMap,e=f?u(f):r;v.exports=e},53867:v=>{v.exports=function(i){var r=typeof i;return null!=i&&("object"==r||"function"==r)}},27503:v=>{v.exports=function(i){return null!=i&&"object"==typeof i}},82358:(v,S,i)=>{var r=i(72802),u=i(52398),p=i(27503),y=Function.prototype.toString,T=Object.prototype.hasOwnProperty,M=y.call(Object);v.exports=function(F){if(!p(F)||"[object Object]"!=r(F))return!1;var Z=u(F);if(null===Z)return!0;var J=T.call(Z,"constructor")&&Z.constructor;return"function"==typeof J&&J instanceof J&&y.call(J)==M}},48855:(v,S,i)=>{var r=i(67495),u=i(70544),p=i(70938),f=p&&p.isSet,e=f?u(f):r;v.exports=e},64871:(v,S,i)=>{var r=i(72802),u=i(81690),p=i(27503);v.exports=function(_){return"string"==typeof _||!u(_)&&p(_)&&"[object String]"==r(_)}},7786:(v,S,i)=>{var r=i(72802),u=i(27503);v.exports=function(e){return"symbol"==typeof e||u(e)&&"[object Symbol]"==r(e)}},47679:(v,S,i)=>{var r=i(99390),u=i(70544),p=i(70938),f=p&&p.isTypedArray,e=f?u(f):r;v.exports=e},59108:(v,S,i)=>{var r=i(71890),u=i(92488),p=i(93406);v.exports=function(e){return p(e)?r(e):u(e)}},42970:(v,S,i)=>{var r=i(71890),u=i(50762),p=i(93406);v.exports=function(e){return p(e)?r(e,!0):u(e)}},27842:v=>{v.exports=function(i){var r=null==i?0:i.length;return r?i[r-1]:void 0}},23815:function(v,S,i){var r;v=i.nmd(v),function(){var u,_="Expected a function",T="__lodash_hash_undefined__",R="__lodash_placeholder__",Zt=1/0,st=9007199254740991,Gt=4294967295,mt=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],Yt="[object Arguments]",Dt="[object Array]",Yn="[object Boolean]",Hr="[object Date]",Ir="[object Error]",wr="[object Function]",Qr="[object GeneratorFunction]",Kr="[object Map]",In="[object Number]",Zr="[object Object]",Ur="[object Promise]",$i="[object RegExp]",Hi="[object Set]",Br="[object String]",On="[object Symbol]",Jn="[object WeakMap]",Lr="[object ArrayBuffer]",Vn="[object DataView]",zr="[object Float32Array]",hi="[object Float64Array]",Ai="[object Int8Array]",Tr="[object Int16Array]",Nr="[object Int32Array]",gn="[object Uint8Array]",En="[object Uint8ClampedArray]",mr="[object Uint16Array]",Xt="[object Uint32Array]",zn=/\b__p \+= '';/g,vr=/\b(__p \+=) '' \+/g,si=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ii=/&(?:amp|lt|gt|quot|#39);/g,no=/[&<>"']/g,so=RegExp(Ii.source),Ze=RegExp(no.source),Dr=/<%-([\s\S]+?)%>/g,jt=/<%([\s\S]+?)%>/g,xt=/<%=([\s\S]+?)%>/g,mn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wn=/^\w*$/,kn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wn=/[\\^$.*+?()[\]{}|]/g,nr=RegExp(wn.source),Gi=/^\s+/,po=/\s/,yo=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Mo=/\{\n\/\* \[wrapped with (.+)\] \*/,Vi=/,? & /,cs=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zo=/[()=,{}\[\]\/\s]/,So=/\\(\\)?/g,Si=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ai=/\w*$/,Zn=/^[-+]0x[0-9a-f]+$/i,cr=/^0b[01]+$/i,yr=/^\[object .+?Constructor\]$/,rr=/^0o[0-7]+$/i,ri=/^(?:0|[1-9]\d*)$/,ho=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ti=/($^)/,Bo=/['\n\r\u2028\u2029\\]/g,xo="\\ud800-\\udfff",Ht="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",cn="\\u2700-\\u27bf",Ct="a-z\\xdf-\\xf6\\xf8-\\xff",zi="A-Z\\xc0-\\xd6\\xd8-\\xde",Wo="\\ufe0e\\ufe0f",Do="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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",_s="["+xo+"]",bs="["+Do+"]",qo="["+Ht+"]",ra="\\d+",Ia="["+cn+"]",pa="["+Ct+"]",Bs="[^"+xo+Do+ra+cn+Ct+zi+"]",Yl="\\ud83c[\\udffb-\\udfff]",fo="[^"+xo+"]",Da="(?:\\ud83c[\\udde6-\\uddff]){2}",Ao="[\\ud800-\\udbff][\\udc00-\\udfff]",ls="["+zi+"]",Ra="(?:"+pa+"|"+Bs+")",pl="(?:"+ls+"|"+Bs+")",Qs="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Fo="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",Eo="(?:"+qo+"|"+Yl+")?",ks="["+Wo+"]?",ro=ks+Eo+"(?:\\u200d(?:"+[fo,Da,Ao].join("|")+")"+ks+Eo+")*",tt="(?:"+[Ia,Da,Ao].join("|")+")"+ro,on="(?:"+[fo+qo+"?",qo,Da,Ao,_s].join("|")+")",ne=RegExp("['\u2019]","g"),$e=RegExp(qo,"g"),Pt=RegExp(Yl+"(?="+Yl+")|"+on+ro,"g"),sn=RegExp([ls+"?"+pa+"+"+Qs+"(?="+[bs,ls,"$"].join("|")+")",pl+"+"+Fo+"(?="+[bs,ls+Ra,"$"].join("|")+")",ls+"?"+Ra+"+"+Qs,ls+"+"+Fo,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ra,tt].join("|"),"g"),ei=RegExp("[\\u200d"+xo+Ht+Wo+"]"),fi=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Oi=["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"],os=-1,Ro={};Ro[zr]=Ro[hi]=Ro[Ai]=Ro[Tr]=Ro[Nr]=Ro[gn]=Ro[En]=Ro[mr]=Ro[Xt]=!0,Ro[Yt]=Ro[Dt]=Ro[Lr]=Ro[Yn]=Ro[Vn]=Ro[Hr]=Ro[Ir]=Ro[wr]=Ro[Kr]=Ro[In]=Ro[Zr]=Ro[$i]=Ro[Hi]=Ro[Br]=Ro[Jn]=!1;var Uo={};Uo[Yt]=Uo[Dt]=Uo[Lr]=Uo[Vn]=Uo[Yn]=Uo[Hr]=Uo[zr]=Uo[hi]=Uo[Ai]=Uo[Tr]=Uo[Nr]=Uo[Kr]=Uo[In]=Uo[Zr]=Uo[$i]=Uo[Hi]=Uo[Br]=Uo[On]=Uo[gn]=Uo[En]=Uo[mr]=Uo[Xt]=!0,Uo[Ir]=Uo[wr]=Uo[Jn]=!1;var qu={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ru=parseFloat,yc=parseInt,bc="object"==typeof global&&global&&global.Object===Object&&global,ed="object"==typeof self&&self&&self.Object===Object&&self,Hl=bc||ed||Function("return this")(),Zl=S&&!S.nodeType&&S,$s=Zl&&v&&!v.nodeType&&v,dc=$s&&$s.exports===Zl,ou=dc&&bc.process,el=function(){try{return $s&&$s.require&&$s.require("util").types||ou&&ou.binding&&ou.binding("util")}catch(Mr){}}(),Cu=el&&el.isArrayBuffer,jl=el&&el.isDate,rt=el&&el.isMap,Nt=el&&el.isRegExp,ct=el&&el.isSet,Te=el&&el.isTypedArray;function Me(Ln,Mr,gr){switch(gr.length){case 0:return Ln.call(Mr);case 1:return Ln.call(Mr,gr[0]);case 2:return Ln.call(Mr,gr[0],gr[1]);case 3:return Ln.call(Mr,gr[0],gr[1],gr[2])}return Ln.apply(Mr,gr)}function De(Ln,Mr,gr,co){for(var Ss=-1,Na=null==Ln?0:Ln.length;++Ss<Na;){var El=Ln[Ss];Mr(co,El,gr(El),Ln)}return co}function Tt(Ln,Mr){for(var gr=-1,co=null==Ln?0:Ln.length;++gr<co&&!1!==Mr(Ln[gr],gr,Ln););return Ln}function dr(Ln,Mr){for(var gr=null==Ln?0:Ln.length;gr--&&!1!==Mr(Ln[gr],gr,Ln););return Ln}function Qi(Ln,Mr){for(var gr=-1,co=null==Ln?0:Ln.length;++gr<co;)if(!Mr(Ln[gr],gr,Ln))return!1;return!0}function Jo(Ln,Mr){for(var gr=-1,co=null==Ln?0:Ln.length,Ss=0,Na=[];++gr<co;){var El=Ln[gr];Mr(El,gr,Ln)&&(Na[Ss++]=El)}return Na}function Es(Ln,Mr){return!(null==Ln||!Ln.length)&&Pc(Ln,Mr,0)>-1}function vs(Ln,Mr,gr){for(var co=-1,Ss=null==Ln?0:Ln.length;++co<Ss;)if(gr(Mr,Ln[co]))return!0;return!1}function Ms(Ln,Mr){for(var gr=-1,co=null==Ln?0:Ln.length,Ss=Array(co);++gr<co;)Ss[gr]=Mr(Ln[gr],gr,Ln);return Ss}function Ma(Ln,Mr){for(var gr=-1,co=Mr.length,Ss=Ln.length;++gr<co;)Ln[Ss+gr]=Mr[gr];return Ln}function uu(Ln,Mr,gr,co){var Ss=-1,Na=null==Ln?0:Ln.length;for(co&&Na&&(gr=Ln[++Ss]);++Ss<Na;)gr=Mr(gr,Ln[Ss],Ss,Ln);return gr}function Wa(Ln,Mr,gr,co){var Ss=null==Ln?0:Ln.length;for(co&&Ss&&(gr=Ln[--Ss]);Ss--;)gr=Mr(gr,Ln[Ss],Ss,Ln);return gr}function Pl(Ln,Mr){for(var gr=-1,co=null==Ln?0:Ln.length;++gr<co;)if(Mr(Ln[gr],gr,Ln))return!0;return!1}var ec=tc("length");function Nc(Ln,Mr,gr){var co;return gr(Ln,function(Ss,Na,El){if(Mr(Ss,Na,El))return co=Na,!1}),co}function Ec(Ln,Mr,gr,co){for(var Ss=Ln.length,Na=gr+(co?1:-1);co?Na--:++Na<Ss;)if(Mr(Ln[Na],Na,Ln))return Na;return-1}function Pc(Ln,Mr,gr){return Mr==Mr?function(Ln,Mr,gr){for(var co=gr-1,Ss=Ln.length;++co<Ss;)if(Ln[co]===Mr)return co;return-1}(Ln,Mr,gr):Ec(Ln,Ic,gr)}function Mu(Ln,Mr,gr,co){for(var Ss=gr-1,Na=Ln.length;++Ss<Na;)if(co(Ln[Ss],Mr))return Ss;return-1}function Ic(Ln){return Ln!=Ln}function md(Ln,Mr){var gr=null==Ln?0:Ln.length;return gr?As(Ln,Mr)/gr:NaN}function tc(Ln){return function(Mr){return null==Mr?u:Mr[Ln]}}function Fi(Ln){return function(Mr){return null==Ln?u:Ln[Mr]}}function ua(Ln,Mr,gr,co,Ss){return Ss(Ln,function(Na,El,Ks){gr=co?(co=!1,Na):Mr(gr,Na,El,Ks)}),gr}function As(Ln,Mr){for(var gr,co=-1,Ss=Ln.length;++co<Ss;){var Na=Mr(Ln[co]);Na!==u&&(gr=gr===u?Na:gr+Na)}return gr}function ku(Ln,Mr){for(var gr=-1,co=Array(Ln);++gr<Ln;)co[gr]=Mr(gr);return co}function Au(Ln){return Ln&&Ln.slice(0,yn(Ln)+1).replace(Gi,"")}function bu(Ln){return function(Mr){return Ln(Mr)}}function cu(Ln,Mr){return Ms(Mr,function(gr){return Ln[gr]})}function Gs(Ln,Mr){return Ln.has(Mr)}function $u(Ln,Mr){for(var gr=-1,co=Ln.length;++gr<co&&Pc(Mr,Ln[gr],0)>-1;);return gr}function Hu(Ln,Mr){for(var gr=Ln.length;gr--&&Pc(Mr,Ln[gr],0)>-1;);return gr}function Yo(Ln,Mr){for(var gr=Ln.length,co=0;gr--;)Ln[gr]===Mr&&++co;return co}var du=Fi({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"}),Ar=Fi({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function ha(Ln){return"\\"+qu[Ln]}function fa(Ln){return ei.test(Ln)}function hl(Ln){var Mr=-1,gr=Array(Ln.size);return Ln.forEach(function(co,Ss){gr[++Mr]=[Ss,co]}),gr}function Vl(Ln,Mr){return function(gr){return Ln(Mr(gr))}}function Hs(Ln,Mr){for(var gr=-1,co=Ln.length,Ss=0,Na=[];++gr<co;){var El=Ln[gr];(El===Mr||El===R)&&(Ln[gr]=R,Na[Ss++]=gr)}return Na}function V(Ln){var Mr=-1,gr=Array(Ln.size);return Ln.forEach(function(co){gr[++Mr]=co}),gr}function lt(Ln){return fa(Ln)?function(Ln){for(var Mr=Pt.lastIndex=0;Pt.test(Ln);)++Mr;return Mr}(Ln):ec(Ln)}function un(Ln){return fa(Ln)?function(Ln){return Ln.match(Pt)||[]}(Ln):function(Ln){return Ln.split("")}(Ln)}function yn(Ln){for(var Mr=Ln.length;Mr--&&po.test(Ln.charAt(Mr)););return Mr}var Or=Fi({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),Ho=function Ln(Mr){var O,gr=(Mr=null==Mr?Hl:Ho.defaults(Hl.Object(),Mr,Ho.pick(Hl,Oi))).Array,co=Mr.Date,Ss=Mr.Error,Na=Mr.Function,El=Mr.Math,Ks=Mr.Object,td=Mr.RegExp,Lc=Mr.String,zl=Mr.TypeError,ki=gr.prototype,_a=Ks.prototype,ll=Mr["__core-js_shared__"],Ul=Na.prototype.toString,Xs=_a.hasOwnProperty,vd=0,vn=(O=/[^.]+$/.exec(ll&&ll.keys&&ll.keys.IE_PROTO||""))?"Symbol(src)_1."+O:"",Il=_a.toString,nd=Ul.call(Ks),Vd=Hl._,ds=td("^"+Ul.call(Xs).replace(wn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ca=dc?Mr.Buffer:u,jc=Mr.Symbol,nc=Mr.Uint8Array,df=ca?ca.allocUnsafe:u,ul=Vl(Ks.getPrototypeOf,Ks),zd=Ks.create,Wd=_a.propertyIsEnumerable,Be=ki.splice,Pe=jc?jc.isConcatSpreadable:u,Ce=jc?jc.iterator:u,it=jc?jc.toStringTag:u,yt=function(){try{var O=Yu(Ks,"defineProperty");return O({},"",{}),O}catch(H){}}(),qt=Mr.clearTimeout!==Hl.clearTimeout&&Mr.clearTimeout,Un=co&&co.now!==Hl.Date.now&&co.now,qn=Mr.setTimeout!==Hl.setTimeout&&Mr.setTimeout,yi=El.ceil,Go=El.floor,ka=Ks.getOwnPropertySymbols,ss=ca?ca.isBuffer:u,Oa=Mr.isFinite,Us=ki.join,fc=Vl(Ks.keys,Ks),va=El.max,wl=El.min,tl=co.now,$a=Mr.parseInt,Ha=El.random,nl=ki.reverse,Of=Yu(Mr,"DataView"),Dd=Yu(Mr,"Map"),Jd=Yu(Mr,"Promise"),Tc=Yu(Mr,"Set"),Vu=Yu(Mr,"WeakMap"),Sc=Yu(Ks,"create"),Qd=Vu&&new Vu,Gc={},Ff=Rf(Of),zu=Rf(Dd),Tl=Rf(Jd),xl=Rf(Tc),kl=Rf(Vu),Nu=jc?jc.prototype:u,Qa=Nu?Nu.valueOf:u,Wu=Nu?Nu.toString:u;function tn(O){if(Rc(O)&&!li(O)&&!(O instanceof rl)){if(O instanceof Pu)return O;if(Xs.call(O,"__wrapped__"))return vg(O)}return new Pu(O)}var Mc=function(){function O(){}return function(H){if(!Zu(H))return{};if(zd)return zd(H);O.prototype=H;var pe=new O;return O.prototype=u,pe}}();function Ou(){}function Pu(O,H){this.__wrapped__=O,this.__actions__=[],this.__chain__=!!H,this.__index__=0,this.__values__=u}function rl(O){this.__wrapped__=O,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Gt,this.__views__=[]}function Ac(O){var H=-1,pe=null==O?0:O.length;for(this.clear();++H<pe;){var Ke=O[H];this.set(Ke[0],Ke[1])}}function su(O){var H=-1,pe=null==O?0:O.length;for(this.clear();++H<pe;){var Ke=O[H];this.set(Ke[0],Ke[1])}}function Kl(O){var H=-1,pe=null==O?0:O.length;for(this.clear();++H<pe;){var Ke=O[H];this.set(Ke[0],Ke[1])}}function ql(O){var H=-1,pe=null==O?0:O.length;for(this.__data__=new Kl;++H<pe;)this.add(O[H])}function Ll(O){var H=this.__data__=new su(O);this.size=H.size}function wf(O,H){var pe=li(O),Ke=!pe&&hr(O),kt=!pe&&!Ke&&Tu(O),pn=!pe&&!Ke&&!kt&&km(O),er=pe||Ke||kt||pn,Cr=er?ku(O.length,Lc):[],Xr=Cr.length;for(var oo in O)(H||Xs.call(O,oo))&&(!er||!("length"==oo||kt&&("offset"==oo||"parent"==oo)||pn&&("buffer"==oo||"byteLength"==oo||"byteOffset"==oo)||od(oo,Xr)))&&Cr.push(oo);return Cr}function Wl(O){var H=O.length;return H?O[dd(0,H-1)]:u}function Pd(O,H){return ch(gi(O),$c(H,0,O.length))}function rc(O){return ch(gi(O))}function hc(O,H,pe){(pe!==u&&!at(O[H],pe)||pe===u&&!(H in O))&&Sl(O,H,pe)}function gu(O,H,pe){var Ke=O[H];(!Xs.call(O,H)||!at(Ke,pe)||pe===u&&!(H in O))&&Sl(O,H,pe)}function Cc(O,H){for(var pe=O.length;pe--;)if(at(O[pe][0],H))return pe;return-1}function Fc(O,H,pe,Ke){return de(O,function(kt,pn,er){H(Ke,kt,pe(kt),er)}),Ke}function fu(O,H){return O&&Wi(H,nf(H),O)}function Sl(O,H,pe){"__proto__"==H&&yt?yt(O,H,{configurable:!0,enumerable:!0,value:pe,writable:!0}):O[H]=pe}function kc(O,H){for(var pe=-1,Ke=H.length,kt=gr(Ke),pn=null==O;++pe<Ke;)kt[pe]=pn?u:S1(O,H[pe]);return kt}function $c(O,H,pe){return O==O&&(pe!==u&&(O=O<=pe?O:pe),H!==u&&(O=O>=H?O:H)),O}function h(O,H,pe,Ke,kt,pn){var er,Cr=1&H,Xr=2&H,oo=4&H;if(pe&&(er=kt?pe(O,Ke,kt,pn):pe(O)),er!==u)return er;if(!Zu(O))return O;var io=li(O);if(io){if(er=function(O){var H=O.length,pe=new O.constructor(H);return H&&"string"==typeof O[0]&&Xs.call(O,"index")&&(pe.index=O.index,pe.input=O.input),pe}(O),!Cr)return gi(O,er)}else{var vo=Dc(O),hs=vo==wr||vo==Qr;if(Tu(O))return k_(O,Cr);if(vo==Zr||vo==Yt||hs&&!kt){if(er=Xr||hs?{}:ep(O),!Cr)return Xr?function(O,H){return Wi(O,Zf(O),H)}(O,function(O,H){return O&&Wi(H,Md(H),O)}(er,O)):function(O,H){return Wi(O,Bp(O),H)}(O,fu(er,O))}else{if(!Uo[vo])return kt?O:{};er=function(O,H,pe){var Ke=O.constructor;switch(H){case Lr:return qh(O);case Yn:case Hr:return new Ke(+O);case Vn:return function(O,H){var pe=H?qh(O.buffer):O.buffer;return new O.constructor(pe,O.byteOffset,O.byteLength)}(O,pe);case zr:case hi:case Ai:case Tr:case Nr:case gn:case En:case mr:case Xt:return q(O,pe);case Kr:return new Ke;case In:case Br:return new Ke(O);case $i:return function(O){var H=new O.constructor(O.source,ai.exec(O));return H.lastIndex=O.lastIndex,H}(O);case Hi:return new Ke;case On:return function(O){return Qa?Ks(Qa.call(O)):{}}(O)}}(O,vo,Cr)}}pn||(pn=new Ll);var aa=pn.get(O);if(aa)return aa;pn.set(O,er),H0(O)?O.forEach(function(Ya){er.add(h(Ya,H,pe,Ya,O,pn))}):L0(O)&&O.forEach(function(Ya,lu){er.set(lu,h(Ya,H,pe,lu,O,pn))});var Nl=io?u:(oo?Xr?o_:i_:Xr?Md:nf)(O);return Tt(Nl||O,function(Ya,lu){Nl&&(Ya=O[lu=Ya]),gu(er,lu,h(Ya,H,pe,lu,O,pn))}),er}function N(O,H,pe){var Ke=pe.length;if(null==O)return!Ke;for(O=Ks(O);Ke--;){var kt=pe[Ke],er=O[kt];if(er===u&&!(kt in O)||!(0,H[kt])(er))return!1}return!0}function k(O,H,pe){if("function"!=typeof O)throw new zl(_);return uh(function(){O.apply(u,pe)},H)}function K(O,H,pe,Ke){var kt=-1,pn=Es,er=!0,Cr=O.length,Xr=[],oo=H.length;if(!Cr)return Xr;pe&&(H=Ms(H,bu(pe))),Ke?(pn=vs,er=!1):H.length>=200&&(pn=Gs,er=!1,H=new ql(H));e:for(;++kt<Cr;){var io=O[kt],vo=null==pe?io:pe(io);if(io=Ke||0!==io?io:0,er&&vo==vo){for(var hs=oo;hs--;)if(H[hs]===vo)continue e;Xr.push(io)}else pn(H,vo,Ke)||Xr.push(io)}return Xr}tn.templateSettings={escape:Dr,evaluate:jt,interpolate:xt,variable:"",imports:{_:tn}},(tn.prototype=Ou.prototype).constructor=tn,(Pu.prototype=Mc(Ou.prototype)).constructor=Pu,(rl.prototype=Mc(Ou.prototype)).constructor=rl,Ac.prototype.clear=function(){this.__data__=Sc?Sc(null):{},this.size=0},Ac.prototype.delete=function(O){var H=this.has(O)&&delete this.__data__[O];return this.size-=H?1:0,H},Ac.prototype.get=function(O){var H=this.__data__;if(Sc){var pe=H[O];return pe===T?u:pe}return Xs.call(H,O)?H[O]:u},Ac.prototype.has=function(O){var H=this.__data__;return Sc?H[O]!==u:Xs.call(H,O)},Ac.prototype.set=function(O,H){var pe=this.__data__;return this.size+=this.has(O)?0:1,pe[O]=Sc&&H===u?T:H,this},su.prototype.clear=function(){this.__data__=[],this.size=0},su.prototype.delete=function(O){var H=this.__data__,pe=Cc(H,O);return!(pe<0||(pe==H.length-1?H.pop():Be.call(H,pe,1),--this.size,0))},su.prototype.get=function(O){var H=this.__data__,pe=Cc(H,O);return pe<0?u:H[pe][1]},su.prototype.has=function(O){return Cc(this.__data__,O)>-1},su.prototype.set=function(O,H){var pe=this.__data__,Ke=Cc(pe,O);return Ke<0?(++this.size,pe.push([O,H])):pe[Ke][1]=H,this},Kl.prototype.clear=function(){this.size=0,this.__data__={hash:new Ac,map:new(Dd||su),string:new Ac}},Kl.prototype.delete=function(O){var H=mp(this,O).delete(O);return this.size-=H?1:0,H},Kl.prototype.get=function(O){return mp(this,O).get(O)},Kl.prototype.has=function(O){return mp(this,O).has(O)},Kl.prototype.set=function(O,H){var pe=mp(this,O),Ke=pe.size;return pe.set(O,H),this.size+=pe.size==Ke?0:1,this},ql.prototype.add=ql.prototype.push=function(O){return this.__data__.set(O,T),this},ql.prototype.has=function(O){return this.__data__.has(O)},Ll.prototype.clear=function(){this.__data__=new su,this.size=0},Ll.prototype.delete=function(O){var H=this.__data__,pe=H.delete(O);return this.size=H.size,pe},Ll.prototype.get=function(O){return this.__data__.get(O)},Ll.prototype.has=function(O){return this.__data__.has(O)},Ll.prototype.set=function(O,H){var pe=this.__data__;if(pe instanceof su){var Ke=pe.__data__;if(!Dd||Ke.length<199)return Ke.push([O,H]),this.size=++pe.size,this;pe=this.__data__=new Kl(Ke)}return pe.set(O,H),this.size=pe.size,this};var de=ya(Rn),be=ya(sr,!0);function Ue(O,H){var pe=!0;return de(O,function(Ke,kt,pn){return pe=!!H(Ke,kt,pn)}),pe}function we(O,H,pe){for(var Ke=-1,kt=O.length;++Ke<kt;){var pn=O[Ke],er=H(pn);if(null!=er&&(Cr===u?er==er&&!Ef(er):pe(er,Cr)))var Cr=er,Xr=pn}return Xr}function gt(O,H){var pe=[];return de(O,function(Ke,kt,pn){H(Ke,kt,pn)&&pe.push(Ke)}),pe}function vt(O,H,pe,Ke,kt){var pn=-1,er=O.length;for(pe||(pe=G_),kt||(kt=[]);++pn<er;){var Cr=O[pn];H>0&&pe(Cr)?H>1?vt(Cr,H-1,pe,Ke,kt):Ma(kt,Cr):Ke||(kt[kt.length]=Cr)}return kt}var Jt=zs(),Pn=zs(!0);function Rn(O,H){return O&&Jt(O,H,nf)}function sr(O,H){return O&&Pn(O,H,nf)}function jr(O,H){return Jo(H,function(pe){return ef(O[pe])})}function Ni(O,H){for(var pe=0,Ke=(H=Bf(H,O)).length;null!=O&&pe<Ke;)O=O[Uc(H[pe++])];return pe&&pe==Ke?O:u}function Vo(O,H,pe){var Ke=H(O);return li(O)?Ke:Ma(Ke,pe(O))}function $o(O){return null==O?O===u?"[object Undefined]":"[object Null]":it&&it in Ks(O)?function(O){var H=Xs.call(O,it),pe=O[it];try{O[it]=u;var Ke=!0}catch(pn){}var kt=Il.call(O);return Ke&&(H?O[it]=pe:delete O[it]),kt}(O):function(O){return Il.call(O)}(O)}function Vs(O,H){return O>H}function qs(O,H){return null!=O&&Xs.call(O,H)}function dl(O,H){return null!=O&&H in Ks(O)}function sa(O,H,pe){for(var Ke=pe?vs:Es,kt=O[0].length,pn=O.length,er=pn,Cr=gr(pn),Xr=1/0,oo=[];er--;){var io=O[er];er&&H&&(io=Ms(io,bu(H))),Xr=wl(io.length,Xr),Cr[er]=!pe&&(H||kt>=120&&io.length>=120)?new ql(er&&io):u}io=O[0];var vo=-1,hs=Cr[0];e:for(;++vo<kt&&oo.length<Xr;){var aa=io[vo],Ba=H?H(aa):aa;if(aa=pe||0!==aa?aa:0,!(hs?Gs(hs,Ba):Ke(oo,Ba,pe))){for(er=pn;--er;){var Nl=Cr[er];if(!(Nl?Gs(Nl,Ba):Ke(O[er],Ba,pe)))continue e}hs&&hs.push(Ba),oo.push(aa)}}return oo}function ol(O,H,pe){var Ke=null==(O=bf(O,H=Bf(H,O)))?O:O[Uc(Qc(H))];return null==Ke?u:Me(Ke,O,pe)}function Eu(O){return Rc(O)&&$o(O)==Yt}function mu(O,H,pe,Ke,kt){return O===H||(null==O||null==H||!Rc(O)&&!Rc(H)?O!=O&&H!=H:function(O,H,pe,Ke,kt,pn){var er=li(O),Cr=li(H),Xr=er?Dt:Dc(O),oo=Cr?Dt:Dc(H),io=(Xr=Xr==Yt?Zr:Xr)==Zr,vo=(oo=oo==Yt?Zr:oo)==Zr,hs=Xr==oo;if(hs&&Tu(O)){if(!Tu(H))return!1;er=!0,io=!1}if(hs&&!io)return pn||(pn=new Ll),er||km(O)?id(O,H,pe,Ke,kt,pn):function(O,H,pe,Ke,kt,pn,er){switch(pe){case Vn:if(O.byteLength!=H.byteLength||O.byteOffset!=H.byteOffset)return!1;O=O.buffer,H=H.buffer;case Lr:return!(O.byteLength!=H.byteLength||!pn(new nc(O),new nc(H)));case Yn:case Hr:case In:return at(+O,+H);case Ir:return O.name==H.name&&O.message==H.message;case $i:case Br:return O==H+"";case Kr:var Cr=hl;case Hi:if(Cr||(Cr=V),O.size!=H.size&&!(1&Ke))return!1;var oo=er.get(O);if(oo)return oo==H;Ke|=2,er.set(O,H);var io=id(Cr(O),Cr(H),Ke,kt,pn,er);return er.delete(O),io;case On:if(Qa)return Qa.call(O)==Qa.call(H)}return!1}(O,H,Xr,pe,Ke,kt,pn);if(!(1&pe)){var aa=io&&Xs.call(O,"__wrapped__"),Ba=vo&&Xs.call(H,"__wrapped__");if(aa||Ba){var Nl=aa?O.value():O,Ya=Ba?H.value():H;return pn||(pn=new Ll),kt(Nl,Ya,pe,Ke,pn)}}return!!hs&&(pn||(pn=new Ll),function(O,H,pe,Ke,kt,pn){var er=1&pe,Cr=i_(O),Xr=Cr.length;if(Xr!=i_(H).length&&!er)return!1;for(var vo=Xr;vo--;){var hs=Cr[vo];if(!(er?hs in H:Xs.call(H,hs)))return!1}var aa=pn.get(O),Ba=pn.get(H);if(aa&&Ba)return aa==H&&Ba==O;var Nl=!0;pn.set(O,H),pn.set(H,O);for(var Ya=er;++vo<Xr;){var lu=O[hs=Cr[vo]],yu=H[hs];if(Ke)var wp=er?Ke(yu,lu,hs,H,O,pn):Ke(lu,yu,hs,O,H,pn);if(!(wp===u?lu===yu||kt(lu,yu,pe,Ke,pn):wp)){Nl=!1;break}Ya||(Ya="constructor"==hs)}if(Nl&&!Ya){var ip=O.constructor,xp=H.constructor;ip!=xp&&"constructor"in O&&"constructor"in H&&!("function"==typeof ip&&ip instanceof ip&&"function"==typeof xp&&xp instanceof xp)&&(Nl=!1)}return pn.delete(O),pn.delete(H),Nl}(O,H,pe,Ke,kt,pn))}(O,H,pe,Ke,mu,kt))}function gf(O,H,pe,Ke){var kt=pe.length,pn=kt,er=!Ke;if(null==O)return!pn;for(O=Ks(O);kt--;){var Cr=pe[kt];if(er&&Cr[2]?Cr[1]!==O[Cr[0]]:!(Cr[0]in O))return!1}for(;++kt<pn;){var Xr=(Cr=pe[kt])[0],oo=O[Xr],io=Cr[1];if(er&&Cr[2]){if(oo===u&&!(Xr in O))return!1}else{var vo=new Ll;if(Ke)var hs=Ke(oo,io,Xr,O,H,vo);if(!(hs===u?mu(io,oo,3,Ke,vo):hs))return!1}}return!0}function Ga(O){return!(!Zu(O)||function(O){return!!vn&&vn in O}(O))&&(ef(O)?ds:yr).test(Rf(O))}function bt(O){return"function"==typeof O?O:null==O?Nf:"object"==typeof O?li(O)?ia(O[0],O[1]):xa(O):fy(O)}function Qt(O){if(!Ud(O))return fc(O);var H=[];for(var pe in Ks(O))Xs.call(O,pe)&&"constructor"!=pe&&H.push(pe);return H}function vi(O,H){return O<H}function ps(O,H){var pe=-1,Ke=Qo(O)?gr(O.length):[];return de(O,function(kt,pn,er){Ke[++pe]=H(kt,pn,er)}),Ke}function xa(O){var H=ah(O);return 1==H.length&&H[0][2]?a_(H[0][0],H[0][1]):function(pe){return pe===O||gf(pe,O,H)}}function ia(O,H){return Ph(O)&&yf(H)?a_(Uc(O),H):function(pe){var Ke=S1(pe,O);return Ke===u&&Ke===H?wg(pe,O):mu(H,Ke,3)}}function _l(O,H,pe,Ke,kt){O!==H&&Jt(H,function(pn,er){if(kt||(kt=new Ll),Zu(pn))!function(O,H,pe,Ke,kt,pn,er){var Cr=lh(O,pe),Xr=lh(H,pe),oo=er.get(Xr);if(oo)hc(O,pe,oo);else{var io=pn?pn(Cr,Xr,pe+"",O,H,er):u,vo=io===u;if(vo){var hs=li(Xr),aa=!hs&&Tu(Xr),Ba=!hs&&!aa&&km(Xr);io=Xr,hs||aa||Ba?li(Cr)?io=Cr:ws(Cr)?io=gi(Cr):aa?(vo=!1,io=k_(Xr,!0)):Ba?(vo=!1,io=q(Xr,!0)):io=[]:vv(Xr)||hr(Xr)?(io=Cr,hr(Cr)?io=Db(Cr):(!Zu(Cr)||ef(Cr))&&(io=ep(Xr))):vo=!1}vo&&(er.set(Xr,io),kt(io,Xr,Ke,pn,er),er.delete(Xr)),hc(O,pe,io)}}(O,H,er,pe,_l,Ke,kt);else{var Cr=Ke?Ke(lh(O,er),pn,er+"",O,H,kt):u;Cr===u&&(Cr=pn),hc(O,er,Cr)}},Md)}function Wc(O,H){var pe=O.length;if(pe)return od(H+=H<0?pe:0,pe)?O[H]:u}function Kf(O,H,pe){H=H.length?Ms(H,function(pn){return li(pn)?function(er){return Ni(er,1===pn.length?pn[0]:pn)}:pn}):[Nf];var Ke=-1;return H=Ms(H,bu(Ps())),function(Ln,Mr){var gr=Ln.length;for(Ln.sort(function(pn,er){return function(O,H,pe){for(var Ke=-1,kt=O.criteria,pn=H.criteria,er=kt.length,Cr=pe.length;++Ke<er;){var Xr=Fe(kt[Ke],pn[Ke]);if(Xr)return Ke>=Cr?Xr:Xr*("desc"==pe[Ke]?-1:1)}return O.index-H.index}(pn,er,pe)});gr--;)Ln[gr]=Ln[gr].value;return Ln}(ps(O,function(pn,er,Cr){return{criteria:Ms(H,function(oo){return oo(pn)}),index:++Ke,value:pn}}))}function $p(O,H,pe){for(var Ke=-1,kt=H.length,pn={};++Ke<kt;){var er=H[Ke],Cr=Ni(O,er);pe(Cr,er)&&Hf(pn,Bf(er,O),Cr)}return pn}function mf(O,H,pe,Ke){var kt=Ke?Mu:Pc,pn=-1,er=H.length,Cr=O;for(O===H&&(H=gi(H)),pe&&(Cr=Ms(O,bu(pe)));++pn<er;)for(var Xr=0,oo=H[pn],io=pe?pe(oo):oo;(Xr=kt(Cr,io,Xr,Ke))>-1;)Cr!==O&&Be.call(Cr,Xr,1),Be.call(O,Xr,1);return O}function $f(O,H){for(var pe=O?H.length:0,Ke=pe-1;pe--;){var kt=H[pe];if(pe==Ke||kt!==pn){var pn=kt;od(kt)?Be.call(O,kt,1):wh(O,kt)}}return O}function dd(O,H){return O+Go(Ha()*(H-O+1))}function fp(O,H){var pe="";if(!O||H<1||H>st)return pe;do{H%2&&(pe+=O),(H=Go(H/2))&&(O+=O)}while(H);return pe}function fl(O,H){return Df(fd(O,H,Nf),O+"")}function Kh(O){return Wl(Bm(O))}function F_(O,H){var pe=Bm(O);return ch(pe,$c(H,0,pe.length))}function Hf(O,H,pe,Ke){if(!Zu(O))return O;for(var kt=-1,pn=(H=Bf(H,O)).length,er=pn-1,Cr=O;null!=Cr&&++kt<pn;){var Xr=Uc(H[kt]),oo=pe;if("__proto__"===Xr||"constructor"===Xr||"prototype"===Xr)return O;if(kt!=er){var io=Cr[Xr];(oo=Ke?Ke(io,Xr,Cr):u)===u&&(oo=Zu(io)?io:od(H[kt+1])?[]:{})}gu(Cr,Xr,oo),Cr=Cr[Xr]}return O}var kd=Qd?function(O,H){return Qd.set(O,H),O}:Nf,Uf=yt?function(O,H){return yt(O,"toString",{configurable:!0,enumerable:!1,value:uy(H),writable:!0})}:Nf;function Kp(O){return ch(Bm(O))}function Ed(O,H,pe){var Ke=-1,kt=O.length;H<0&&(H=-H>kt?0:kt+H),(pe=pe>kt?kt:pe)<0&&(pe+=kt),kt=H>pe?0:pe-H>>>0,H>>>=0;for(var pn=gr(kt);++Ke<kt;)pn[Ke]=O[Ke+H];return pn}function Ah(O,H){var pe;return de(O,function(Ke,kt,pn){return!(pe=H(Ke,kt,pn))}),!!pe}function qp(O,H,pe){var Ke=0,kt=null==O?Ke:O.length;if("number"==typeof H&&H==H&&kt<=2147483647){for(;Ke<kt;){var pn=Ke+kt>>>1,er=O[pn];null!==er&&!Ef(er)&&(pe?er<=H:er<H)?Ke=pn+1:kt=pn}return kt}return eh(O,H,Nf,pe)}function eh(O,H,pe,Ke){var kt=0,pn=null==O?0:O.length;if(0===pn)return 0;for(var er=(H=pe(H))!=H,Cr=null===H,Xr=Ef(H),oo=H===u;kt<pn;){var io=Go((kt+pn)/2),vo=pe(O[io]),hs=vo!==u,aa=null===vo,Ba=vo==vo,Nl=Ef(vo);if(er)var Ya=Ke||Ba;else Ya=oo?Ba&&(Ke||hs):Cr?Ba&&hs&&(Ke||!aa):Xr?Ba&&hs&&!aa&&(Ke||!Nl):!aa&&!Nl&&(Ke?vo<=H:vo<H);Ya?kt=io+1:pn=io}return wl(pn,4294967294)}function Oh(O,H){for(var pe=-1,Ke=O.length,kt=0,pn=[];++pe<Ke;){var er=O[pe],Cr=H?H(er):er;if(!pe||!at(Cr,Xr)){var Xr=Cr;pn[kt++]=0===er?0:er}}return pn}function th(O){return"number"==typeof O?O:Ef(O)?NaN:+O}function Td(O){if("string"==typeof O)return O;if(li(O))return Ms(O,Td)+"";if(Ef(O))return Wu?Wu.call(O):"";var H=O+"";return"0"==H&&1/O==-Zt?"-0":H}function xf(O,H,pe){var Ke=-1,kt=Es,pn=O.length,er=!0,Cr=[],Xr=Cr;if(pe)er=!1,kt=vs;else if(pn>=200){var oo=H?null:Rh(O);if(oo)return V(oo);er=!1,kt=Gs,Xr=new ql}else Xr=H?[]:Cr;e:for(;++Ke<pn;){var io=O[Ke],vo=H?H(io):io;if(io=pe||0!==io?io:0,er&&vo==vo){for(var hs=Xr.length;hs--;)if(Xr[hs]===vo)continue e;H&&Xr.push(vo),Cr.push(io)}else kt(Xr,vo,pe)||(Xr!==Cr&&Xr.push(vo),Cr.push(io))}return Cr}function wh(O,H){return null==(O=bf(O,H=Bf(H,O)))||delete O[Uc(Qc(H))]}function Up(O,H,pe,Ke){return Hf(O,H,pe(Ni(O,H)),Ke)}function nh(O,H,pe,Ke){for(var kt=O.length,pn=Ke?kt:-1;(Ke?pn--:++pn<kt)&&H(O[pn],pn,O););return pe?Ed(O,Ke?0:pn,Ke?pn+1:kt):Ed(O,Ke?pn+1:0,Ke?kt:pn)}function xh(O,H){var pe=O;return pe instanceof rl&&(pe=pe.value()),uu(H,function(Ke,kt){return kt.func.apply(kt.thisArg,Ma([Ke],kt.args))},pe)}function vf(O,H,pe){var Ke=O.length;if(Ke<2)return Ke?xf(O[0]):[];for(var kt=-1,pn=gr(Ke);++kt<Ke;)for(var er=O[kt],Cr=-1;++Cr<Ke;)Cr!=kt&&(pn[kt]=K(pn[kt]||er,O[Cr],H,pe));return xf(vt(pn,1),H,pe)}function Dh(O,H,pe){for(var Ke=-1,kt=O.length,pn=H.length,er={};++Ke<kt;)pe(er,O[Ke],Ke<pn?H[Ke]:u);return er}function $d(O){return ws(O)?O:[]}function pp(O){return"function"==typeof O?O:Nf}function Bf(O,H){return li(O)?O:Ph(O,H)?[O]:u_(ju(O))}var Kd=fl;function oc(O,H,pe){var Ke=O.length;return pe=pe===u?Ke:pe,!H&&pe>=Ke?O:Ed(O,H,pe)}var rh=qt||function(O){return Hl.clearTimeout(O)};function k_(O,H){if(H)return O.slice();var pe=O.length,Ke=df?df(pe):new O.constructor(pe);return O.copy(Ke),Ke}function qh(O){var H=new O.constructor(O.byteLength);return new nc(H).set(new nc(O)),H}function q(O,H){var pe=H?qh(O.buffer):O.buffer;return new O.constructor(pe,O.byteOffset,O.length)}function Fe(O,H){if(O!==H){var pe=O!==u,Ke=null===O,kt=O==O,pn=Ef(O),er=H!==u,Cr=null===H,Xr=H==H,oo=Ef(H);if(!Cr&&!oo&&!pn&&O>H||pn&&er&&Xr&&!Cr&&!oo||Ke&&er&&Xr||!pe&&Xr||!kt)return 1;if(!Ke&&!pn&&!oo&&O<H||oo&&pe&&kt&&!Ke&&!pn||Cr&&pe&&kt||!er&&kt||!Xr)return-1}return 0}function Xn(O,H,pe,Ke){for(var kt=-1,pn=O.length,er=pe.length,Cr=-1,Xr=H.length,oo=va(pn-er,0),io=gr(Xr+oo),vo=!Ke;++Cr<Xr;)io[Cr]=H[Cr];for(;++kt<er;)(vo||kt<pn)&&(io[pe[kt]]=O[kt]);for(;oo--;)io[Cr++]=O[kt++];return io}function Fr(O,H,pe,Ke){for(var kt=-1,pn=O.length,er=-1,Cr=pe.length,Xr=-1,oo=H.length,io=va(pn-Cr,0),vo=gr(io+oo),hs=!Ke;++kt<io;)vo[kt]=O[kt];for(var aa=kt;++Xr<oo;)vo[aa+Xr]=H[Xr];for(;++er<Cr;)(hs||kt<pn)&&(vo[aa+pe[er]]=O[kt++]);return vo}function gi(O,H){var pe=-1,Ke=O.length;for(H||(H=gr(Ke));++pe<Ke;)H[pe]=O[pe];return H}function Wi(O,H,pe,Ke){var kt=!pe;pe||(pe={});for(var pn=-1,er=H.length;++pn<er;){var Cr=H[pn],Xr=Ke?Ke(pe[Cr],O[Cr],Cr,pe,O):u;Xr===u&&(Xr=O[Cr]),kt?Sl(pe,Cr,Xr):gu(pe,Cr,Xr)}return pe}function ts(O,H){return function(pe,Ke){var kt=li(pe)?De:Fc,pn=H?H():{};return kt(pe,O,Ps(Ke,2),pn)}}function Is(O){return fl(function(H,pe){var Ke=-1,kt=pe.length,pn=kt>1?pe[kt-1]:u,er=kt>2?pe[2]:u;for(pn=O.length>3&&"function"==typeof pn?(kt--,pn):u,er&&gc(pe[0],pe[1],er)&&(pn=kt<3?u:pn,kt=1),H=Ks(H);++Ke<kt;){var Cr=pe[Ke];Cr&&O(H,Cr,Ke,pn)}return H})}function ya(O,H){return function(pe,Ke){if(null==pe)return pe;if(!Qo(pe))return O(pe,Ke);for(var kt=pe.length,pn=H?kt:-1,er=Ks(pe);(H?pn--:++pn<kt)&&!1!==Ke(er[pn],pn,er););return pe}}function zs(O){return function(H,pe,Ke){for(var kt=-1,pn=Ks(H),er=Ke(H),Cr=er.length;Cr--;){var Xr=er[O?Cr:++kt];if(!1===pe(pn[Xr],Xr,pn))break}return H}}function rd(O){return function(H){var pe=fa(H=ju(H))?un(H):u,Ke=pe?pe[0]:H.charAt(0),kt=pe?oc(pe,1).join(""):H.slice(1);return Ke[O]()+kt}}function wu(O){return function(H){return uu(zb(X0(H).replace(ne,"")),O,"")}}function Hd(O){return function(){var H=arguments;switch(H.length){case 0:return new O;case 1:return new O(H[0]);case 2:return new O(H[0],H[1]);case 3:return new O(H[0],H[1],H[2]);case 4:return new O(H[0],H[1],H[2],H[3]);case 5:return new O(H[0],H[1],H[2],H[3],H[4]);case 6:return new O(H[0],H[1],H[2],H[3],H[4],H[5]);case 7:return new O(H[0],H[1],H[2],H[3],H[4],H[5],H[6])}var pe=Mc(O.prototype),Ke=O.apply(pe,H);return Zu(Ke)?Ke:pe}}function ih(O){return function(H,pe,Ke){var kt=Ks(H);if(!Qo(H)){var pn=Ps(pe,3);H=nf(H),pe=function(Cr){return pn(kt[Cr],Cr,kt)}}var er=O(H,pe,Ke);return er>-1?kt[pn?H[er]:er]:u}}function oh(O){return gp(function(H){var pe=H.length,Ke=pe,kt=Pu.prototype.thru;for(O&&H.reverse();Ke--;){var pn=H[Ke];if("function"!=typeof pn)throw new zl(_);if(kt&&!er&&"wrapper"==Hc(pn))var er=new Pu([],!0)}for(Ke=er?Ke:pe;++Ke<pe;){var Cr=Hc(pn=H[Ke]),Xr="wrapper"==Cr?Ta(pn):u;er=Xr&&Lh(Xr[0])&&424==Xr[1]&&!Xr[4].length&&1==Xr[9]?er[Hc(Xr[0])].apply(er,Xr[3]):1==pn.length&&Lh(pn)?er[Cr]():er.thru(pn)}return function(){var oo=arguments,io=oo[0];if(er&&1==oo.length&&li(io))return er.plant(io).value();for(var vo=0,hs=pe?H[vo].apply(this,oo):io;++vo<pe;)hs=H[vo].call(this,hs);return hs}})}function hp(O,H,pe,Ke,kt,pn,er,Cr,Xr,oo){var io=128&H,vo=1&H,hs=2&H,aa=24&H,Ba=512&H,Nl=hs?u:Hd(O);return function Ya(){for(var lu=arguments.length,yu=gr(lu),wp=lu;wp--;)yu[wp]=arguments[wp];if(aa)var ip=Ju(Ya),xp=Yo(yu,ip);if(Ke&&(yu=Xn(yu,Ke,kt,aa)),pn&&(yu=Fr(yu,pn,er,aa)),lu-=xp,aa&&lu<oo){var pd=Hs(yu,ip);return B_(O,H,hp,Ya.placeholder,pe,yu,pd,Cr,Xr,oo-lu)}var Dp=vo?pe:this,gh=hs?Dp[O]:O;return lu=yu.length,Cr?yu=Gf(yu,Cr):Ba&&lu>1&&yu.reverse(),io&&Xr<lu&&(yu.length=Xr),this&&this!==Hl&&this instanceof Ya&&(gh=Nl||Hd(gh)),gh.apply(Dp,yu)}}function Yf(O,H){return function(pe,Ke){return function(O,H,pe,Ke){return Rn(O,function(kt,pn,er){H(Ke,pe(kt),pn,er)}),Ke}(pe,O,H(Ke),{})}}function H_(O,H){return function(pe,Ke){var kt;if(pe===u&&Ke===u)return H;if(pe!==u&&(kt=pe),Ke!==u){if(kt===u)return Ke;"string"==typeof pe||"string"==typeof Ke?(pe=Td(pe),Ke=Td(Ke)):(pe=th(pe),Ke=th(Ke)),kt=O(pe,Ke)}return kt}}function _g(O){return gp(function(H){return H=Ms(H,bu(Ps())),fl(function(pe){var Ke=this;return O(H,function(kt){return Me(kt,Ke,pe)})})})}function _p(O,H){var pe=(H=H===u?" ":Td(H)).length;if(pe<2)return pe?fp(H,O):H;var Ke=fp(H,yi(O/lt(H)));return fa(H)?oc(un(Ke),0,O).join(""):Ke.slice(0,O)}function U_(O){return function(H,pe,Ke){return Ke&&"number"!=typeof Ke&&gc(H,pe,Ke)&&(pe=Ke=u),H=y_(H),pe===u?(pe=H,H=0):pe=y_(pe),function(O,H,pe,Ke){for(var kt=-1,pn=va(yi((H-O)/(pe||1)),0),er=gr(pn);pn--;)er[Ke?pn:++kt]=O,O+=pe;return er}(H,pe,Ke=Ke===u?H<pe?1:-1:y_(Ke),O)}}function e_(O){return function(H,pe){return"string"==typeof H&&"string"==typeof pe||(H=zf(H),pe=zf(pe)),O(H,pe)}}function B_(O,H,pe,Ke,kt,pn,er,Cr,Xr,oo){var io=8&H;H|=io?32:64,4&(H&=~(io?64:32))||(H&=-4);var Nl=[O,H,kt,io?pn:u,io?er:u,io?u:pn,io?u:er,Cr,Xr,oo],Ya=pe.apply(u,Nl);return Lh(O)&&sd(Ya,Nl),Ya.placeholder=Ke,tp(Ya,O,H)}function Jc(O){var H=El[O];return function(pe,Ke){if(pe=zf(pe),(Ke=null==Ke?0:wl($l(Ke),292))&&Oa(pe)){var kt=(ju(pe)+"e").split("e");return+((kt=(ju(H(kt[0]+"e"+(+kt[1]+Ke)))+"e").split("e"))[0]+"e"+(+kt[1]-Ke))}return H(pe)}}var Rh=Tc&&1/V(new Tc([,-0]))[1]==Zt?function(O){return new Tc(O)}:ng;function t_(O){return function(H){var pe=Dc(H);return pe==Kr?hl(H):pe==Hi?function(Ln){var Mr=-1,gr=Array(Ln.size);return Ln.forEach(function(co){gr[++Mr]=[co,co]}),gr}(H):function(Ln,Mr){return Ms(Mr,function(gr){return[gr,Ln[gr]]})}(H,O(H))}}function qf(O,H,pe,Ke,kt,pn,er,Cr){var Xr=2&H;if(!Xr&&"function"!=typeof O)throw new zl(_);var oo=Ke?Ke.length:0;if(oo||(H&=-97,Ke=kt=u),er=er===u?er:va($l(er),0),Cr=Cr===u?Cr:$l(Cr),oo-=kt?kt.length:0,64&H){var io=Ke,vo=kt;Ke=kt=u}var hs=Xr?u:Ta(O),aa=[O,H,pe,Ke,kt,io,vo,pn,er,Cr];if(hs&&function(O,H){var pe=O[1],Ke=H[1],kt=pe|Ke;if(!(kt<131||(128==Ke&&8==pe||128==Ke&&256==pe&&O[7].length<=H[8]||384==Ke&&H[7].length<=H[8]&&8==pe)))return O;1&Ke&&(O[2]=H[2],kt|=1&pe?0:4);var Cr=H[3];if(Cr){var Xr=O[3];O[3]=Xr?Xn(Xr,Cr,H[4]):Cr,O[4]=Xr?Hs(O[3],R):H[4]}(Cr=H[5])&&(O[5]=(Xr=O[5])?Fr(Xr,Cr,H[6]):Cr,O[6]=Xr?Hs(O[5],R):H[6]),(Cr=H[7])&&(O[7]=Cr),128&Ke&&(O[8]=null==O[8]?H[8]:wl(O[8],H[8])),null==O[9]&&(O[9]=H[9]),O[0]=H[0],O[1]=kt}(aa,hs),O=aa[0],H=aa[1],pe=aa[2],Ke=aa[3],kt=aa[4],!(Cr=aa[9]=aa[9]===u?Xr?0:O.length:va(aa[9]-oo,0))&&24&H&&(H&=-25),H&&1!=H)Ba=8==H||16==H?function(O,H,pe){var Ke=Hd(O);return function kt(){for(var pn=arguments.length,er=gr(pn),Cr=pn,Xr=Ju(kt);Cr--;)er[Cr]=arguments[Cr];var oo=pn<3&&er[0]!==Xr&&er[pn-1]!==Xr?[]:Hs(er,Xr);return(pn-=oo.length)<pe?B_(O,H,hp,kt.placeholder,u,er,oo,u,u,pe-pn):Me(this&&this!==Hl&&this instanceof kt?Ke:O,this,er)}}(O,H,Cr):32!=H&&33!=H||kt.length?hp.apply(u,aa):function(O,H,pe,Ke){var kt=1&H,pn=Hd(O);return function er(){for(var Cr=-1,Xr=arguments.length,oo=-1,io=Ke.length,vo=gr(io+Xr),hs=this&&this!==Hl&&this instanceof er?pn:O;++oo<io;)vo[oo]=Ke[oo];for(;Xr--;)vo[oo++]=arguments[++Cr];return Me(hs,kt?pe:this,vo)}}(O,H,pe,Ke);else var Ba=function(O,H,pe){var Ke=1&H,kt=Hd(O);return function pn(){return(this&&this!==Hl&&this instanceof pn?kt:O).apply(Ke?pe:this,arguments)}}(O,H,pe);return tp((hs?kd:sd)(Ba,aa),O,H)}function n_(O,H,pe,Ke){return O===u||at(O,_a[pe])&&!Xs.call(Ke,pe)?H:O}function sh(O,H,pe,Ke,kt,pn){return Zu(O)&&Zu(H)&&(pn.set(H,O),_l(O,H,u,sh,pn),pn.delete(H)),O}function r_(O){return vv(O)?u:O}function id(O,H,pe,Ke,kt,pn){var er=1&pe,Cr=O.length,Xr=H.length;if(Cr!=Xr&&!(er&&Xr>Cr))return!1;var oo=pn.get(O),io=pn.get(H);if(oo&&io)return oo==H&&io==O;var vo=-1,hs=!0,aa=2&pe?new ql:u;for(pn.set(O,H),pn.set(H,O);++vo<Cr;){var Ba=O[vo],Nl=H[vo];if(Ke)var Ya=er?Ke(Nl,Ba,vo,H,O,pn):Ke(Ba,Nl,vo,O,H,pn);if(Ya!==u){if(Ya)continue;hs=!1;break}if(aa){if(!Pl(H,function(lu,yu){if(!Gs(aa,yu)&&(Ba===lu||kt(Ba,lu,pe,Ke,pn)))return aa.push(yu)})){hs=!1;break}}else if(Ba!==Nl&&!kt(Ba,Nl,pe,Ke,pn)){hs=!1;break}}return pn.delete(O),pn.delete(H),hs}function gp(O){return Df(fd(O,u,z_),O+"")}function i_(O){return Vo(O,nf,Bp)}function o_(O){return Vo(O,Md,Zf)}var Ta=Qd?function(O){return Qd.get(O)}:ng;function Hc(O){for(var H=O.name+"",pe=Gc[H],Ke=Xs.call(Gc,H)?pe.length:0;Ke--;){var kt=pe[Ke],pn=kt.func;if(null==pn||pn==O)return kt.name}return H}function Ju(O){return(Xs.call(tn,"placeholder")?tn:O).placeholder}function Ps(){var O=tn.iteratee||R1;return O=O===R1?bt:O,arguments.length?O(arguments[0],arguments[1]):O}function mp(O,H){var pe=O.__data__;return function(O){var H=typeof O;return"string"==H||"number"==H||"symbol"==H||"boolean"==H?"__proto__"!==O:null===O}(H)?pe["string"==typeof H?"string":"hash"]:pe.map}function ah(O){for(var H=nf(O),pe=H.length;pe--;){var Ke=H[pe],kt=O[Ke];H[pe]=[Ke,kt,yf(kt)]}return H}function Yu(O,H){var pe=function(Ln,Mr){return null==Ln?u:Ln[Mr]}(O,H);return Ga(pe)?pe:u}var Bp=ka?function(O){return null==O?[]:(O=Ks(O),Jo(ka(O),function(H){return Wd.call(O,H)}))}:rf,Zf=ka?function(O){for(var H=[];O;)Ma(H,Bp(O)),O=ul(O);return H}:rf,Dc=$o;function j_(O,H,pe){for(var Ke=-1,kt=(H=Bf(H,O)).length,pn=!1;++Ke<kt;){var er=Uc(H[Ke]);if(!(pn=null!=O&&pe(O,er)))break;O=O[er]}return pn||++Ke!=kt?pn:!!(kt=null==O?0:O.length)&&Op(kt)&&od(er,kt)&&(li(O)||hr(O))}function ep(O){return"function"!=typeof O.constructor||Ud(O)?{}:Mc(ul(O))}function G_(O){return li(O)||hr(O)||!!(Pe&&O&&O[Pe])}function od(O,H){var pe=typeof O;return!!(H=null==H?st:H)&&("number"==pe||"symbol"!=pe&&ri.test(O))&&O>-1&&O%1==0&&O<H}function gc(O,H,pe){if(!Zu(pe))return!1;var Ke=typeof H;return!!("number"==Ke?Qo(pe)&&od(H,pe.length):"string"==Ke&&H in pe)&&at(pe[H],O)}function Ph(O,H){if(li(O))return!1;var pe=typeof O;return!("number"!=pe&&"symbol"!=pe&&"boolean"!=pe&&null!=O&&!Ef(O))||Wn.test(O)||!mn.test(O)||null!=H&&O in Ks(H)}function Lh(O){var H=Hc(O),pe=tn[H];if("function"!=typeof pe||!(H in rl.prototype))return!1;if(O===pe)return!0;var Ke=Ta(pe);return!!Ke&&O===Ke[0]}(Of&&Dc(new Of(new ArrayBuffer(1)))!=Vn||Dd&&Dc(new Dd)!=Kr||Jd&&Dc(Jd.resolve())!=Ur||Tc&&Dc(new Tc)!=Hi||Vu&&Dc(new Vu)!=Jn)&&(Dc=function(O){var H=$o(O),pe=H==Zr?O.constructor:u,Ke=pe?Rf(pe):"";if(Ke)switch(Ke){case Ff:return Vn;case zu:return Kr;case Tl:return Ur;case xl:return Hi;case kl:return Jn}return H});var jf=ll?ef:E_;function Ud(O){var H=O&&O.constructor;return O===("function"==typeof H&&H.prototype||_a)}function yf(O){return O==O&&!Zu(O)}function a_(O,H){return function(pe){return null!=pe&&pe[O]===H&&(H!==u||O in Ks(pe))}}function fd(O,H,pe){return H=va(H===u?O.length-1:H,0),function(){for(var Ke=arguments,kt=-1,pn=va(Ke.length-H,0),er=gr(pn);++kt<pn;)er[kt]=Ke[H+kt];kt=-1;for(var Cr=gr(H+1);++kt<H;)Cr[kt]=Ke[kt];return Cr[H]=pe(er),Me(O,this,Cr)}}function bf(O,H){return H.length<2?O:Ni(O,Ed(H,0,-1))}function Gf(O,H){for(var pe=O.length,Ke=wl(H.length,pe),kt=gi(O);Ke--;){var pn=H[Ke];O[Ke]=od(pn,pe)?kt[pn]:u}return O}function lh(O,H){if(("constructor"!==H||"function"!=typeof O[H])&&"__proto__"!=H)return O[H]}var sd=V_(kd),uh=qn||function(O,H){return Hl.setTimeout(O,H)},Df=V_(Uf);function tp(O,H,pe){var Ke=H+"";return Df(O,function(O,H){var pe=H.length;if(!pe)return O;var Ke=pe-1;return H[Ke]=(pe>1?"& ":"")+H[Ke],H=H.join(pe>2?", ":" "),O.replace(yo,"{\n/* [wrapped with "+H+"] */\n")}(Ke,function(O,H){return Tt(mt,function(pe){var Ke="_."+pe[0];H&pe[1]&&!Es(O,Ke)&&O.push(Ke)}),O.sort()}(function(O){var H=O.match(Mo);return H?H[1].split(Vi):[]}(Ke),pe)))}function V_(O){var H=0,pe=0;return function(){var Ke=tl(),kt=16-(Ke-pe);if(pe=Ke,kt>0){if(++H>=800)return arguments[0]}else H=0;return O.apply(u,arguments)}}function ch(O,H){var pe=-1,Ke=O.length,kt=Ke-1;for(H=H===u?Ke:H;++pe<H;){var pn=dd(pe,kt),er=O[pn];O[pn]=O[pe],O[pe]=er}return O.length=H,O}var H,pe,u_=(H=Og(function(O){var H=[];return 46===O.charCodeAt(0)&&H.push(""),O.replace(kn,function(pe,Ke,kt,pn){H.push(kt?pn.replace(So,"$1"):Ke||pe)}),H},function(Ke){return 500===pe.size&&pe.clear(),Ke}),pe=H.cache,H);function Uc(O){if("string"==typeof O||Ef(O))return O;var H=O+"";return"0"==H&&1/O==-Zt?"-0":H}function Rf(O){if(null!=O){try{return Ul.call(O)}catch(H){}try{return O+""}catch(H){}}return""}function vg(O){if(O instanceof rl)return O.clone();var H=new Pu(O.__wrapped__,O.__chain__);return H.__actions__=gi(O.__actions__),H.__index__=O.__index__,H.__values__=O.__values__,H}var Mm=fl(function(O,H){return ws(O)?K(O,vt(H,1,ws,!0)):[]}),d_=fl(function(O,H){var pe=Qc(H);return ws(pe)&&(pe=u),ws(O)?K(O,vt(H,1,ws,!0),Ps(pe,2)):[]}),Yp=fl(function(O,H){var pe=Qc(H);return ws(pe)&&(pe=u),ws(O)?K(O,vt(H,1,ws,!0),u,pe):[]});function Eg(O,H,pe){var Ke=null==O?0:O.length;if(!Ke)return-1;var kt=null==pe?0:$l(pe);return kt<0&&(kt=va(Ke+kt,0)),Ec(O,Ps(H,3),kt)}function kg(O,H,pe){var Ke=null==O?0:O.length;if(!Ke)return-1;var kt=Ke-1;return pe!==u&&(kt=$l(pe),kt=pe<0?va(Ke+kt,0):wl(kt,Ke-1)),Ec(O,Ps(H,3),kt,!0)}function z_(O){return null!=O&&O.length?vt(O,1):[]}function W_(O){return O&&O.length?O[0]:u}var Tg=fl(function(O){var H=Ms(O,$d);return H.length&&H[0]===O[0]?sa(H):[]}),Hg=fl(function(O){var H=Qc(O),pe=Ms(O,$d);return H===Qc(pe)?H=u:pe.pop(),pe.length&&pe[0]===O[0]?sa(pe,Ps(H,2)):[]}),Tp=fl(function(O){var H=Qc(O),pe=Ms(O,$d);return(H="function"==typeof H?H:u)&&pe.pop(),pe.length&&pe[0]===O[0]?sa(pe,u,H):[]});function Qc(O){var H=null==O?0:O.length;return H?O[H-1]:u}var $h=fl(Sg);function Sg(O,H){return O&&O.length&&H&&H.length?mf(O,H):O}var h_=gp(function(O,H){var pe=null==O?0:O.length,Ke=kc(O,H);return $f(O,Ms(H,function(kt){return od(kt,pe)?+kt:kt}).sort(Fe)),Ke});function __(O){return null==O?O:nl.call(O)}var We=fl(function(O){return xf(vt(O,1,ws,!0))}),Rt=fl(function(O){var H=Qc(O);return ws(H)&&(H=u),xf(vt(O,1,ws,!0),Ps(H,2))}),rn=fl(function(O){var H=Qc(O);return H="function"==typeof H?H:u,xf(vt(O,1,ws,!0),u,H)});function fs(O){if(!O||!O.length)return[];var H=0;return O=Jo(O,function(pe){if(ws(pe))return H=va(pe.length,H),!0}),ku(H,function(pe){return Ms(O,tc(pe))})}function Ua(O,H){if(!O||!O.length)return[];var pe=fs(O);return null==H?pe:Ms(pe,function(Ke){return Me(H,u,Ke)})}var mo=fl(function(O,H){return ws(O)?K(O,H):[]}),_o=fl(function(O){return vf(Jo(O,ws))}),La=fl(function(O){var H=Qc(O);return ws(H)&&(H=u),vf(Jo(O,ws),Ps(H,2))}),Sa=fl(function(O){var H=Qc(O);return H="function"==typeof H?H:u,vf(Jo(O,ws),u,H)}),ti=fl(fs),Bi=fl(function(O){var H=O.length,pe=H>1?O[H-1]:u;return pe="function"==typeof pe?(O.pop(),pe):u,Ua(O,pe)});function ao(O){var H=tn(O);return H.__chain__=!0,H}function Os(O,H){return H(O)}var Xa=gp(function(O){var H=O.length,pe=H?O[0]:0,Ke=this.__wrapped__,kt=function(pn){return kc(pn,O)};return!(H>1||this.__actions__.length)&&Ke instanceof rl&&od(pe)?((Ke=Ke.slice(pe,+pe+(H?1:0))).__actions__.push({func:Os,args:[kt],thisArg:u}),new Pu(Ke,this.__chain__).thru(function(pn){return H&&!pn.length&&pn.push(u),pn})):this.thru(kt)}),sv=ts(function(O,H,pe){Xs.call(O,pe)?++O[pe]:Sl(O,pe,1)}),f1=ih(Eg),Mb=ih(kg);function uv(O,H){return(li(O)?Tt:de)(O,Ps(H,3))}function Dm(O,H){return(li(O)?dr:be)(O,Ps(H,3))}var mc=ts(function(O,H,pe){Xs.call(O,pe)?O[pe].push(H):Sl(O,pe,[H])}),Iu=fl(function(O,H,pe){var Ke=-1,kt="function"==typeof H,pn=Qo(O)?gr(O.length):[];return de(O,function(er){pn[++Ke]=kt?Me(H,er,pe):ol(er,H,pe)}),pn}),p1=ts(function(O,H,pe){Sl(O,pe,H)});function Rm(O,H){return(li(O)?Ms:ps)(O,Ps(H,3))}var es=ts(function(O,H,pe){O[pe?0:1].push(H)},function(){return[[],[]]}),pv=fl(function(O,H){if(null==O)return[];var pe=H.length;return pe>1&&gc(O,H[0],H[1])?H=[]:pe>2&&gc(H[0],H[1],H[2])&&(H=[H[0]]),Kf(O,vt(H,1),[])}),Q_=Un||function(){return Hl.Date.now()};function Bg(O,H,pe){return H=pe?u:H,qf(O,128,u,u,u,u,H=O&&null==H?O.length:H)}function hv(O,H){var pe;if("function"!=typeof H)throw new zl(_);return O=$l(O),function(){return--O>0&&(pe=H.apply(this,arguments)),O<=1&&(H=u),pe}}var Cp=fl(function(O,H,pe){var Ke=1;if(pe.length){var kt=Hs(pe,Ju(Cp));Ke|=32}return qf(O,Ke,H,pe,kt)}),Pm=fl(function(O,H,pe){var Ke=3;if(pe.length){var kt=Hs(pe,Ju(Pm));Ke|=32}return qf(H,Ke,O,pe,kt)});function Yg(O,H,pe){var Ke,kt,pn,er,Cr,Xr,oo=0,io=!1,vo=!1,hs=!0;if("function"!=typeof O)throw new zl(_);function aa(pd){var Dp=Ke,gh=kt;return Ke=kt=u,oo=pd,er=O.apply(gh,Dp)}function Ba(pd){return oo=pd,Cr=uh(lu,H),io?aa(pd):er}function Ya(pd){var Dp=pd-Xr;return Xr===u||Dp>=H||Dp<0||vo&&pd-oo>=pn}function lu(){var pd=Q_();if(Ya(pd))return yu(pd);Cr=uh(lu,function(pd){var gy=H-(pd-Xr);return vo?wl(gy,pn-(pd-oo)):gy}(pd))}function yu(pd){return Cr=u,hs&&Ke?aa(pd):(Ke=kt=u,er)}function xp(){var pd=Q_(),Dp=Ya(pd);if(Ke=arguments,kt=this,Xr=pd,Dp){if(Cr===u)return Ba(Xr);if(vo)return rh(Cr),Cr=uh(lu,H),aa(Xr)}return Cr===u&&(Cr=uh(lu,H)),er}return H=zf(H)||0,Zu(pe)&&(io=!!pe.leading,pn=(vo="maxWait"in pe)?va(zf(pe.maxWait)||0,H):pn,hs="trailing"in pe?!!pe.trailing:hs),xp.cancel=function(){Cr!==u&&rh(Cr),oo=0,Ke=Xr=kt=Cr=u},xp.flush=function(){return Cr===u?er:yu(Q_())},xp}var _1=fl(function(O,H){return k(O,1,H)}),gv=fl(function(O,H,pe){return k(O,zf(H)||0,pe)});function Og(O,H){if("function"!=typeof O||null!=H&&"function"!=typeof H)throw new zl(_);var pe=function(){var Ke=arguments,kt=H?H.apply(this,Ke):Ke[0],pn=pe.cache;if(pn.has(kt))return pn.get(kt);var er=O.apply(this,Ke);return pe.cache=pn.set(kt,er)||pn,er};return pe.cache=new(Og.Cache||Kl),pe}function Mp(O){if("function"!=typeof O)throw new zl(_);return function(){var H=arguments;switch(H.length){case 0:return!O.call(this);case 1:return!O.call(this,H[0]);case 2:return!O.call(this,H[0],H[1]);case 3:return!O.call(this,H[0],H[1],H[2])}return!O.apply(this,H)}}Og.Cache=Kl;var jh=Kd(function(O,H){var pe=(H=1==H.length&&li(H[0])?Ms(H[0],bu(Ps())):Ms(vt(H,1),bu(Ps()))).length;return fl(function(Ke){for(var kt=-1,pn=wl(Ke.length,pe);++kt<pn;)Ke[kt]=H[kt].call(this,Ke[kt]);return Me(O,this,Ke)})}),Gp=fl(function(O,H){var pe=Hs(H,Ju(Gp));return qf(O,32,u,H,pe)}),X_=fl(function(O,H){var pe=Hs(H,Ju(X_));return qf(O,64,u,H,pe)}),v_=gp(function(O,H){return qf(O,256,u,u,u,H)});function at(O,H){return O===H||O!=O&&H!=H}var Ft=e_(Vs),Gn=e_(function(O,H){return O>=H}),hr=Eu(function(){return arguments}())?Eu:function(O){return Rc(O)&&Xs.call(O,"callee")&&!Wd.call(O,"callee")},li=gr.isArray,Io=Cu?bu(Cu):function(O){return Rc(O)&&$o(O)==Lr};function Qo(O){return null!=O&&Op(O.length)&&!ef(O)}function ws(O){return Rc(O)&&Qo(O)}var Tu=ss||E_,tu=jl?bu(jl):function(O){return Rc(O)&&$o(O)==Hr};function K_(O){if(!Rc(O))return!1;var H=$o(O);return H==Ir||"[object DOMException]"==H||"string"==typeof O.message&&"string"==typeof O.name&&!vv(O)}function ef(O){if(!Zu(O))return!1;var H=$o(O);return H==wr||H==Qr||"[object AsyncFunction]"==H||"[object Proxy]"==H}function Xc(O){return"number"==typeof O&&O==$l(O)}function Op(O){return"number"==typeof O&&O>-1&&O%1==0&&O<=st}function Zu(O){var H=typeof O;return null!=O&&("object"==H||"function"==H)}function Rc(O){return null!=O&&"object"==typeof O}var L0=rt?bu(rt):function(O){return Rc(O)&&Dc(O)==Kr};function $0(O){return"number"==typeof O||Rc(O)&&$o(O)==In}function vv(O){if(!Rc(O)||$o(O)!=Zr)return!1;var H=ul(O);if(null===H)return!0;var pe=Xs.call(H,"constructor")&&H.constructor;return"function"==typeof pe&&pe instanceof pe&&Ul.call(pe)==nd}var yv=Nt?bu(Nt):function(O){return Rc(O)&&$o(O)==$i},H0=ct?bu(ct):function(O){return Rc(O)&&Dc(O)==Hi};function bv(O){return"string"==typeof O||!li(O)&&Rc(O)&&$o(O)==Br}function Ef(O){return"symbol"==typeof O||Rc(O)&&$o(O)==On}var km=Te?bu(Te):function(O){return Rc(O)&&Op(O.length)&&!!Ro[$o(O)]},yS=e_(vi),B0=e_(function(O,H){return O<=H});function b1(O){if(!O)return[];if(Qo(O))return bv(O)?un(O):gi(O);if(Ce&&O[Ce])return function(Ln){for(var Mr,gr=[];!(Mr=Ln.next()).done;)gr.push(Mr.value);return gr}(O[Ce]());var H=Dc(O);return(H==Kr?hl:H==Hi?V:Bm)(O)}function y_(O){return O?(O=zf(O))===Zt||O===-Zt?17976931348623157e292*(O<0?-1:1):O==O?O:0:0===O?O:0}function $l(O){var H=y_(O),pe=H%1;return H==H?pe?H-pe:H:0}function xb(O){return O?$c($l(O),0,Gt):0}function zf(O){if("number"==typeof O)return O;if(Ef(O))return NaN;if(Zu(O)){var H="function"==typeof O.valueOf?O.valueOf():O;O=Zu(H)?H+"":H}if("string"!=typeof O)return 0===O?O:+O;O=Au(O);var pe=cr.test(O);return pe||rr.test(O)?yc(O.slice(2),pe?2:8):Zn.test(O)?NaN:+O}function Db(O){return Wi(O,Md(O))}function ju(O){return null==O?"":Td(O)}var $m=Is(function(O,H){if(Ud(H)||Qo(H))Wi(H,nf(H),O);else for(var pe in H)Xs.call(H,pe)&&gu(O,pe,H[pe])}),Y0=Is(function(O,H){Wi(H,Md(H),O)}),Ev=Is(function(O,H,pe,Ke){Wi(H,Md(H),O,Ke)}),Rb=Is(function(O,H,pe,Ke){Wi(H,nf(H),O,Ke)}),eg=gp(kc),ES=fl(function(O,H){O=Ks(O);var pe=-1,Ke=H.length,kt=Ke>2?H[2]:u;for(kt&&gc(H[0],H[1],kt)&&(Ke=1);++pe<Ke;)for(var pn=H[pe],er=Md(pn),Cr=-1,Xr=er.length;++Cr<Xr;){var oo=er[Cr],io=O[oo];(io===u||at(io,_a[oo])&&!Xs.call(O,oo))&&(O[oo]=pn[oo])}return O}),TS=fl(function(O){return O.push(u,sh),Me(Vh,u,O)});function S1(O,H,pe){var Ke=null==O?u:Ni(O,H);return Ke===u?pe:Ke}function wg(O,H){return null!=O&&j_(O,H,dl)}var tg=Yf(function(O,H,pe){null!=H&&"function"!=typeof H.toString&&(H=Il.call(H)),O[H]=pe},uy(Nf)),Pb=Yf(function(O,H,pe){null!=H&&"function"!=typeof H.toString&&(H=Il.call(H)),Xs.call(O,H)?O[H].push(pe):O[H]=[pe]},Ps),SS=fl(ol);function nf(O){return Qo(O)?wf(O):Qt(O)}function Md(O){return Qo(O)?wf(O,!0):function(O){if(!Zu(O))return function(O){var H=[];if(null!=O)for(var pe in Ks(O))H.push(pe);return H}(O);var H=Ud(O),pe=[];for(var Ke in O)"constructor"==Ke&&(H||!Xs.call(O,Ke))||pe.push(Ke);return pe}(O)}var G0=Is(function(O,H,pe){_l(O,H,pe)}),Vh=Is(function(O,H,pe,Ke){_l(O,H,pe,Ke)}),V0=gp(function(O,H){var pe={};if(null==O)return pe;var Ke=!1;H=Ms(H,function(pn){return pn=Bf(pn,O),Ke||(Ke=pn.length>1),pn}),Wi(O,o_(O),pe),Ke&&(pe=h(pe,7,r_));for(var kt=H.length;kt--;)wh(pe,H[kt]);return pe}),Vg=gp(function(O,H){return null==O?{}:function(O,H){return $p(O,H,function(pe,Ke){return wg(O,Ke)})}(O,H)});function z0(O,H){if(null==O)return{};var pe=Ms(o_(O),function(Ke){return[Ke]});return H=Ps(H),$p(O,pe,function(Ke,kt){return H(Ke,kt[0])})}var Gu=t_(nf),Tv=t_(Md);function Bm(O){return null==O?[]:cu(O,nf(O))}var Q0=wu(function(O,H,pe){return H=H.toLowerCase(),O+(pe?A1(H):H)});function A1(O){return sy(ju(O).toLowerCase())}function X0(O){return(O=ju(O))&&O.replace(ho,du).replace($e,"")}var K0=wu(function(O,H,pe){return O+(pe?"-":"")+H.toLowerCase()}),q0=wu(function(O,H,pe){return O+(pe?" ":"")+H.toLowerCase()}),ey=rd("toLowerCase"),Zb=wu(function(O,H,pe){return O+(pe?"_":"")+H.toLowerCase()}),jb=wu(function(O,H,pe){return O+(pe?" ":"")+sy(H)}),DS=wu(function(O,H,pe){return O+(pe?" ":"")+H.toUpperCase()}),sy=rd("toUpperCase");function zb(O,H,pe){return O=ju(O),(H=pe?u:H)===u?function(Ln){return fi.test(Ln)}(O)?function(Ln){return Ln.match(sn)||[]}(O):function(Ln){return Ln.match(cs)||[]}(O):O.match(H)||[]}var x1=fl(function(O,H){try{return Me(O,u,H)}catch(pe){return K_(pe)?pe:new Ss(pe)}}),ay=gp(function(O,H){return Tt(H,function(pe){pe=Uc(pe),Sl(O,pe,Cp(O[pe],O))}),O});function uy(O){return function(){return O}}var D1=oh(),cy=oh(!0);function Nf(O){return O}function R1(O){return bt("function"==typeof O?O:h(O,1))}var Xb=fl(function(O,H){return function(pe){return ol(pe,O,H)}}),Kb=fl(function(O,H){return function(pe){return ol(O,pe,H)}});function N1(O,H,pe){var Ke=nf(H),kt=jr(H,Ke);null==pe&&(!Zu(H)||!kt.length&&Ke.length)&&(pe=H,H=O,O=this,kt=jr(H,nf(H)));var pn=!(Zu(pe)&&"chain"in pe&&!pe.chain),er=ef(O);return Tt(kt,function(Cr){var Xr=H[Cr];O[Cr]=Xr,er&&(O.prototype[Cr]=function(){var oo=this.__chain__;if(pn||oo){var io=O(this.__wrapped__),vo=io.__actions__=gi(this.__actions__);return vo.push({func:Xr,args:arguments,thisArg:O}),io.__chain__=oo,io}return Xr.apply(O,Ma([this.value()],arguments))})}),O}function ng(){}var _h=_g(Ms),Zm=_g(Qi),qb=_g(Pl);function fy(O){return Ph(O)?tc(Uc(O)):function(O){return function(H){return Ni(H,O)}}(O)}var zh=U_(),jm=U_(!0);function rf(){return[]}function E_(){return!1}var Qg=H_(function(O,H){return O+H},0),Xg=Jc("ceil"),Kg=H_(function(O,H){return O/H},1),qg=Jc("floor"),wv=H_(function(O,H){return O*H},1),F1=Jc("round"),nm=H_(function(O,H){return O-H},0);return tn.after=function(O,H){if("function"!=typeof H)throw new zl(_);return O=$l(O),function(){if(--O<1)return H.apply(this,arguments)}},tn.ary=Bg,tn.assign=$m,tn.assignIn=Y0,tn.assignInWith=Ev,tn.assignWith=Rb,tn.at=eg,tn.before=hv,tn.bind=Cp,tn.bindAll=ay,tn.bindKey=Pm,tn.castArray=function(){if(!arguments.length)return[];var O=arguments[0];return li(O)?O:[O]},tn.chain=ao,tn.chunk=function(O,H,pe){H=(pe?gc(O,H,pe):H===u)?1:va($l(H),0);var Ke=null==O?0:O.length;if(!Ke||H<1)return[];for(var kt=0,pn=0,er=gr(yi(Ke/H));kt<Ke;)er[pn++]=Ed(O,kt,kt+=H);return er},tn.compact=function(O){for(var H=-1,pe=null==O?0:O.length,Ke=0,kt=[];++H<pe;){var pn=O[H];pn&&(kt[Ke++]=pn)}return kt},tn.concat=function(){var O=arguments.length;if(!O)return[];for(var H=gr(O-1),pe=arguments[0],Ke=O;Ke--;)H[Ke-1]=arguments[Ke];return Ma(li(pe)?gi(pe):[pe],vt(H,1))},tn.cond=function(O){var H=null==O?0:O.length,pe=Ps();return O=H?Ms(O,function(Ke){if("function"!=typeof Ke[1])throw new zl(_);return[pe(Ke[0]),Ke[1]]}):[],fl(function(Ke){for(var kt=-1;++kt<H;){var pn=O[kt];if(Me(pn[0],this,Ke))return Me(pn[1],this,Ke)}})},tn.conforms=function(O){return function(O){var H=nf(O);return function(pe){return N(pe,O,H)}}(h(O,1))},tn.constant=uy,tn.countBy=sv,tn.create=function(O,H){var pe=Mc(O);return null==H?pe:fu(pe,H)},tn.curry=function _v(O,H,pe){var Ke=qf(O,8,u,u,u,u,u,H=pe?u:H);return Ke.placeholder=_v.placeholder,Ke},tn.curryRight=function h1(O,H,pe){var Ke=qf(O,16,u,u,u,u,u,H=pe?u:H);return Ke.placeholder=h1.placeholder,Ke},tn.debounce=Yg,tn.defaults=ES,tn.defaultsDeep=TS,tn.defer=_1,tn.delay=gv,tn.difference=Mm,tn.differenceBy=d_,tn.differenceWith=Yp,tn.drop=function(O,H,pe){var Ke=null==O?0:O.length;return Ke?Ed(O,(H=pe||H===u?1:$l(H))<0?0:H,Ke):[]},tn.dropRight=function(O,H,pe){var Ke=null==O?0:O.length;return Ke?Ed(O,0,(H=Ke-(H=pe||H===u?1:$l(H)))<0?0:H):[]},tn.dropRightWhile=function(O,H){return O&&O.length?nh(O,Ps(H,3),!0,!0):[]},tn.dropWhile=function(O,H){return O&&O.length?nh(O,Ps(H,3),!0):[]},tn.fill=function(O,H,pe,Ke){var kt=null==O?0:O.length;return kt?(pe&&"number"!=typeof pe&&gc(O,H,pe)&&(pe=0,Ke=kt),function(O,H,pe,Ke){var kt=O.length;for((pe=$l(pe))<0&&(pe=-pe>kt?0:kt+pe),(Ke=Ke===u||Ke>kt?kt:$l(Ke))<0&&(Ke+=kt),Ke=pe>Ke?0:xb(Ke);pe<Ke;)O[pe++]=H;return O}(O,H,pe,Ke)):[]},tn.filter=function(O,H){return(li(O)?Jo:gt)(O,Ps(H,3))},tn.flatMap=function(O,H){return vt(Rm(O,H),1)},tn.flatMapDeep=function(O,H){return vt(Rm(O,H),Zt)},tn.flatMapDepth=function(O,H,pe){return pe=pe===u?1:$l(pe),vt(Rm(O,H),pe)},tn.flatten=z_,tn.flattenDeep=function(O){return null!=O&&O.length?vt(O,Zt):[]},tn.flattenDepth=function(O,H){return null!=O&&O.length?vt(O,H=H===u?1:$l(H)):[]},tn.flip=function(O){return qf(O,512)},tn.flow=D1,tn.flowRight=cy,tn.fromPairs=function(O){for(var H=-1,pe=null==O?0:O.length,Ke={};++H<pe;){var kt=O[H];Ke[kt[0]]=kt[1]}return Ke},tn.functions=function(O){return null==O?[]:jr(O,nf(O))},tn.functionsIn=function(O){return null==O?[]:jr(O,Md(O))},tn.groupBy=mc,tn.initial=function(O){return null!=O&&O.length?Ed(O,0,-1):[]},tn.intersection=Tg,tn.intersectionBy=Hg,tn.intersectionWith=Tp,tn.invert=tg,tn.invertBy=Pb,tn.invokeMap=Iu,tn.iteratee=R1,tn.keyBy=p1,tn.keys=nf,tn.keysIn=Md,tn.map=Rm,tn.mapKeys=function(O,H){var pe={};return H=Ps(H,3),Rn(O,function(Ke,kt,pn){Sl(pe,H(Ke,kt,pn),Ke)}),pe},tn.mapValues=function(O,H){var pe={};return H=Ps(H,3),Rn(O,function(Ke,kt,pn){Sl(pe,kt,H(Ke,kt,pn))}),pe},tn.matches=function(O){return xa(h(O,1))},tn.matchesProperty=function(O,H){return ia(O,h(H,1))},tn.memoize=Og,tn.merge=G0,tn.mergeWith=Vh,tn.method=Xb,tn.methodOf=Kb,tn.mixin=N1,tn.negate=Mp,tn.nthArg=function(O){return O=$l(O),fl(function(H){return Wc(H,O)})},tn.omit=V0,tn.omitBy=function(O,H){return z0(O,Mp(Ps(H)))},tn.once=function(O){return hv(2,O)},tn.orderBy=function(O,H,pe,Ke){return null==O?[]:(li(H)||(H=null==H?[]:[H]),li(pe=Ke?u:pe)||(pe=null==pe?[]:[pe]),Kf(O,H,pe))},tn.over=_h,tn.overArgs=jh,tn.overEvery=Zm,tn.overSome=qb,tn.partial=Gp,tn.partialRight=X_,tn.partition=es,tn.pick=Vg,tn.pickBy=z0,tn.property=fy,tn.propertyOf=function(O){return function(H){return null==O?u:Ni(O,H)}},tn.pull=$h,tn.pullAll=Sg,tn.pullAllBy=function(O,H,pe){return O&&O.length&&H&&H.length?mf(O,H,Ps(pe,2)):O},tn.pullAllWith=function(O,H,pe){return O&&O.length&&H&&H.length?mf(O,H,u,pe):O},tn.pullAt=h_,tn.range=zh,tn.rangeRight=jm,tn.rearg=v_,tn.reject=function(O,H){return(li(O)?Jo:gt)(O,Mp(Ps(H,3)))},tn.remove=function(O,H){var pe=[];if(!O||!O.length)return pe;var Ke=-1,kt=[],pn=O.length;for(H=Ps(H,3);++Ke<pn;){var er=O[Ke];H(er,Ke,O)&&(pe.push(er),kt.push(Ke))}return $f(O,kt),pe},tn.rest=function(O,H){if("function"!=typeof O)throw new zl(_);return fl(O,H=H===u?H:$l(H))},tn.reverse=__,tn.sampleSize=function(O,H,pe){return H=(pe?gc(O,H,pe):H===u)?1:$l(H),(li(O)?Pd:F_)(O,H)},tn.set=function(O,H,pe){return null==O?O:Hf(O,H,pe)},tn.setWith=function(O,H,pe,Ke){return Ke="function"==typeof Ke?Ke:u,null==O?O:Hf(O,H,pe,Ke)},tn.shuffle=function(O){return(li(O)?rc:Kp)(O)},tn.slice=function(O,H,pe){var Ke=null==O?0:O.length;return Ke?(pe&&"number"!=typeof pe&&gc(O,H,pe)?(H=0,pe=Ke):(H=null==H?0:$l(H),pe=pe===u?Ke:$l(pe)),Ed(O,H,pe)):[]},tn.sortBy=pv,tn.sortedUniq=function(O){return O&&O.length?Oh(O):[]},tn.sortedUniqBy=function(O,H){return O&&O.length?Oh(O,Ps(H,2)):[]},tn.split=function(O,H,pe){return pe&&"number"!=typeof pe&&gc(O,H,pe)&&(H=pe=u),(pe=pe===u?Gt:pe>>>0)?(O=ju(O))&&("string"==typeof H||null!=H&&!yv(H))&&!(H=Td(H))&&fa(O)?oc(un(O),0,pe):O.split(H,pe):[]},tn.spread=function(O,H){if("function"!=typeof O)throw new zl(_);return H=null==H?0:va($l(H),0),fl(function(pe){var Ke=pe[H],kt=oc(pe,0,H);return Ke&&Ma(kt,Ke),Me(O,this,kt)})},tn.tail=function(O){var H=null==O?0:O.length;return H?Ed(O,1,H):[]},tn.take=function(O,H,pe){return O&&O.length?Ed(O,0,(H=pe||H===u?1:$l(H))<0?0:H):[]},tn.takeRight=function(O,H,pe){var Ke=null==O?0:O.length;return Ke?Ed(O,(H=Ke-(H=pe||H===u?1:$l(H)))<0?0:H,Ke):[]},tn.takeRightWhile=function(O,H){return O&&O.length?nh(O,Ps(H,3),!1,!0):[]},tn.takeWhile=function(O,H){return O&&O.length?nh(O,Ps(H,3)):[]},tn.tap=function(O,H){return H(O),O},tn.throttle=function(O,H,pe){var Ke=!0,kt=!0;if("function"!=typeof O)throw new zl(_);return Zu(pe)&&(Ke="leading"in pe?!!pe.leading:Ke,kt="trailing"in pe?!!pe.trailing:kt),Yg(O,H,{leading:Ke,maxWait:H,trailing:kt})},tn.thru=Os,tn.toArray=b1,tn.toPairs=Gu,tn.toPairsIn=Tv,tn.toPath=function(O){return li(O)?Ms(O,Uc):Ef(O)?[O]:gi(u_(ju(O)))},tn.toPlainObject=Db,tn.transform=function(O,H,pe){var Ke=li(O),kt=Ke||Tu(O)||km(O);if(H=Ps(H,4),null==pe){var pn=O&&O.constructor;pe=kt?Ke?new pn:[]:Zu(O)&&ef(pn)?Mc(ul(O)):{}}return(kt?Tt:Rn)(O,function(er,Cr,Xr){return H(pe,er,Cr,Xr)}),pe},tn.unary=function(O){return Bg(O,1)},tn.union=We,tn.unionBy=Rt,tn.unionWith=rn,tn.uniq=function(O){return O&&O.length?xf(O):[]},tn.uniqBy=function(O,H){return O&&O.length?xf(O,Ps(H,2)):[]},tn.uniqWith=function(O,H){return H="function"==typeof H?H:u,O&&O.length?xf(O,u,H):[]},tn.unset=function(O,H){return null==O||wh(O,H)},tn.unzip=fs,tn.unzipWith=Ua,tn.update=function(O,H,pe){return null==O?O:Up(O,H,pp(pe))},tn.updateWith=function(O,H,pe,Ke){return Ke="function"==typeof Ke?Ke:u,null==O?O:Up(O,H,pp(pe),Ke)},tn.values=Bm,tn.valuesIn=function(O){return null==O?[]:cu(O,Md(O))},tn.without=mo,tn.words=zb,tn.wrap=function(O,H){return Gp(pp(H),O)},tn.xor=_o,tn.xorBy=La,tn.xorWith=Sa,tn.zip=ti,tn.zipObject=function(O,H){return Dh(O||[],H||[],gu)},tn.zipObjectDeep=function(O,H){return Dh(O||[],H||[],Hf)},tn.zipWith=Bi,tn.entries=Gu,tn.entriesIn=Tv,tn.extend=Y0,tn.extendWith=Ev,N1(tn,tn),tn.add=Qg,tn.attempt=x1,tn.camelCase=Q0,tn.capitalize=A1,tn.ceil=Xg,tn.clamp=function(O,H,pe){return pe===u&&(pe=H,H=u),pe!==u&&(pe=(pe=zf(pe))==pe?pe:0),H!==u&&(H=(H=zf(H))==H?H:0),$c(zf(O),H,pe)},tn.clone=function(O){return h(O,4)},tn.cloneDeep=function(O){return h(O,5)},tn.cloneDeepWith=function(O,H){return h(O,5,H="function"==typeof H?H:u)},tn.cloneWith=function(O,H){return h(O,4,H="function"==typeof H?H:u)},tn.conformsTo=function(O,H){return null==H||N(O,H,nf(H))},tn.deburr=X0,tn.defaultTo=function(O,H){return null==O||O!=O?H:O},tn.divide=Kg,tn.endsWith=function(O,H,pe){O=ju(O),H=Td(H);var Ke=O.length,kt=pe=pe===u?Ke:$c($l(pe),0,Ke);return(pe-=H.length)>=0&&O.slice(pe,kt)==H},tn.eq=at,tn.escape=function(O){return(O=ju(O))&&Ze.test(O)?O.replace(no,Ar):O},tn.escapeRegExp=function(O){return(O=ju(O))&&nr.test(O)?O.replace(wn,"\\$&"):O},tn.every=function(O,H,pe){var Ke=li(O)?Qi:Ue;return pe&&gc(O,H,pe)&&(H=u),Ke(O,Ps(H,3))},tn.find=f1,tn.findIndex=Eg,tn.findKey=function(O,H){return Nc(O,Ps(H,3),Rn)},tn.findLast=Mb,tn.findLastIndex=kg,tn.findLastKey=function(O,H){return Nc(O,Ps(H,3),sr)},tn.floor=qg,tn.forEach=uv,tn.forEachRight=Dm,tn.forIn=function(O,H){return null==O?O:Jt(O,Ps(H,3),Md)},tn.forInRight=function(O,H){return null==O?O:Pn(O,Ps(H,3),Md)},tn.forOwn=function(O,H){return O&&Rn(O,Ps(H,3))},tn.forOwnRight=function(O,H){return O&&sr(O,Ps(H,3))},tn.get=S1,tn.gt=Ft,tn.gte=Gn,tn.has=function(O,H){return null!=O&&j_(O,H,qs)},tn.hasIn=wg,tn.head=W_,tn.identity=Nf,tn.includes=function(O,H,pe,Ke){O=Qo(O)?O:Bm(O),pe=pe&&!Ke?$l(pe):0;var kt=O.length;return pe<0&&(pe=va(kt+pe,0)),bv(O)?pe<=kt&&O.indexOf(H,pe)>-1:!!kt&&Pc(O,H,pe)>-1},tn.indexOf=function(O,H,pe){var Ke=null==O?0:O.length;if(!Ke)return-1;var kt=null==pe?0:$l(pe);return kt<0&&(kt=va(Ke+kt,0)),Pc(O,H,kt)},tn.inRange=function(O,H,pe){return H=y_(H),pe===u?(pe=H,H=0):pe=y_(pe),function(O,H,pe){return O>=wl(H,pe)&&O<va(H,pe)}(O=zf(O),H,pe)},tn.invoke=SS,tn.isArguments=hr,tn.isArray=li,tn.isArrayBuffer=Io,tn.isArrayLike=Qo,tn.isArrayLikeObject=ws,tn.isBoolean=function(O){return!0===O||!1===O||Rc(O)&&$o(O)==Yn},tn.isBuffer=Tu,tn.isDate=tu,tn.isElement=function(O){return Rc(O)&&1===O.nodeType&&!vv(O)},tn.isEmpty=function(O){if(null==O)return!0;if(Qo(O)&&(li(O)||"string"==typeof O||"function"==typeof O.splice||Tu(O)||km(O)||hr(O)))return!O.length;var H=Dc(O);if(H==Kr||H==Hi)return!O.size;if(Ud(O))return!Qt(O).length;for(var pe in O)if(Xs.call(O,pe))return!1;return!0},tn.isEqual=function(O,H){return mu(O,H)},tn.isEqualWith=function(O,H,pe){var Ke=(pe="function"==typeof pe?pe:u)?pe(O,H):u;return Ke===u?mu(O,H,u,pe):!!Ke},tn.isError=K_,tn.isFinite=function(O){return"number"==typeof O&&Oa(O)},tn.isFunction=ef,tn.isInteger=Xc,tn.isLength=Op,tn.isMap=L0,tn.isMatch=function(O,H){return O===H||gf(O,H,ah(H))},tn.isMatchWith=function(O,H,pe){return pe="function"==typeof pe?pe:u,gf(O,H,ah(H),pe)},tn.isNaN=function(O){return $0(O)&&O!=+O},tn.isNative=function(O){if(jf(O))throw new Ss("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Ga(O)},tn.isNil=function(O){return null==O},tn.isNull=function(O){return null===O},tn.isNumber=$0,tn.isObject=Zu,tn.isObjectLike=Rc,tn.isPlainObject=vv,tn.isRegExp=yv,tn.isSafeInteger=function(O){return Xc(O)&&O>=-st&&O<=st},tn.isSet=H0,tn.isString=bv,tn.isSymbol=Ef,tn.isTypedArray=km,tn.isUndefined=function(O){return O===u},tn.isWeakMap=function(O){return Rc(O)&&Dc(O)==Jn},tn.isWeakSet=function(O){return Rc(O)&&"[object WeakSet]"==$o(O)},tn.join=function(O,H){return null==O?"":Us.call(O,H)},tn.kebabCase=K0,tn.last=Qc,tn.lastIndexOf=function(O,H,pe){var Ke=null==O?0:O.length;if(!Ke)return-1;var kt=Ke;return pe!==u&&(kt=(kt=$l(pe))<0?va(Ke+kt,0):wl(kt,Ke-1)),H==H?function(Ln,Mr,gr){for(var co=gr+1;co--;)if(Ln[co]===Mr)return co;return co}(O,H,kt):Ec(O,Ic,kt,!0)},tn.lowerCase=q0,tn.lowerFirst=ey,tn.lt=yS,tn.lte=B0,tn.max=function(O){return O&&O.length?we(O,Nf,Vs):u},tn.maxBy=function(O,H){return O&&O.length?we(O,Ps(H,2),Vs):u},tn.mean=function(O){return md(O,Nf)},tn.meanBy=function(O,H){return md(O,Ps(H,2))},tn.min=function(O){return O&&O.length?we(O,Nf,vi):u},tn.minBy=function(O,H){return O&&O.length?we(O,Ps(H,2),vi):u},tn.stubArray=rf,tn.stubFalse=E_,tn.stubObject=function(){return{}},tn.stubString=function(){return""},tn.stubTrue=function(){return!0},tn.multiply=wv,tn.nth=function(O,H){return O&&O.length?Wc(O,$l(H)):u},tn.noConflict=function(){return Hl._===this&&(Hl._=Vd),this},tn.noop=ng,tn.now=Q_,tn.pad=function(O,H,pe){O=ju(O);var Ke=(H=$l(H))?lt(O):0;if(!H||Ke>=H)return O;var kt=(H-Ke)/2;return _p(Go(kt),pe)+O+_p(yi(kt),pe)},tn.padEnd=function(O,H,pe){O=ju(O);var Ke=(H=$l(H))?lt(O):0;return H&&Ke<H?O+_p(H-Ke,pe):O},tn.padStart=function(O,H,pe){O=ju(O);var Ke=(H=$l(H))?lt(O):0;return H&&Ke<H?_p(H-Ke,pe)+O:O},tn.parseInt=function(O,H,pe){return pe||null==H?H=0:H&&(H=+H),$a(ju(O).replace(Gi,""),H||0)},tn.random=function(O,H,pe){if(pe&&"boolean"!=typeof pe&&gc(O,H,pe)&&(H=pe=u),pe===u&&("boolean"==typeof H?(pe=H,H=u):"boolean"==typeof O&&(pe=O,O=u)),O===u&&H===u?(O=0,H=1):(O=y_(O),H===u?(H=O,O=0):H=y_(H)),O>H){var Ke=O;O=H,H=Ke}if(pe||O%1||H%1){var kt=Ha();return wl(O+kt*(H-O+Ru("1e-"+((kt+"").length-1))),H)}return dd(O,H)},tn.reduce=function(O,H,pe){var Ke=li(O)?uu:ua,kt=arguments.length<3;return Ke(O,Ps(H,4),pe,kt,de)},tn.reduceRight=function(O,H,pe){var Ke=li(O)?Wa:ua,kt=arguments.length<3;return Ke(O,Ps(H,4),pe,kt,be)},tn.repeat=function(O,H,pe){return H=(pe?gc(O,H,pe):H===u)?1:$l(H),fp(ju(O),H)},tn.replace=function(){var O=arguments,H=ju(O[0]);return O.length<3?H:H.replace(O[1],O[2])},tn.result=function(O,H,pe){var Ke=-1,kt=(H=Bf(H,O)).length;for(kt||(kt=1,O=u);++Ke<kt;){var pn=null==O?u:O[Uc(H[Ke])];pn===u&&(Ke=kt,pn=pe),O=ef(pn)?pn.call(O):pn}return O},tn.round=F1,tn.runInContext=Ln,tn.sample=function(O){return(li(O)?Wl:Kh)(O)},tn.size=function(O){if(null==O)return 0;if(Qo(O))return bv(O)?lt(O):O.length;var H=Dc(O);return H==Kr||H==Hi?O.size:Qt(O).length},tn.snakeCase=Zb,tn.some=function(O,H,pe){var Ke=li(O)?Pl:Ah;return pe&&gc(O,H,pe)&&(H=u),Ke(O,Ps(H,3))},tn.sortedIndex=function(O,H){return qp(O,H)},tn.sortedIndexBy=function(O,H,pe){return eh(O,H,Ps(pe,2))},tn.sortedIndexOf=function(O,H){var pe=null==O?0:O.length;if(pe){var Ke=qp(O,H);if(Ke<pe&&at(O[Ke],H))return Ke}return-1},tn.sortedLastIndex=function(O,H){return qp(O,H,!0)},tn.sortedLastIndexBy=function(O,H,pe){return eh(O,H,Ps(pe,2),!0)},tn.sortedLastIndexOf=function(O,H){if(null!=O&&O.length){var Ke=qp(O,H,!0)-1;if(at(O[Ke],H))return Ke}return-1},tn.startCase=jb,tn.startsWith=function(O,H,pe){return O=ju(O),pe=null==pe?0:$c($l(pe),0,O.length),H=Td(H),O.slice(pe,pe+H.length)==H},tn.subtract=nm,tn.sum=function(O){return O&&O.length?As(O,Nf):0},tn.sumBy=function(O,H){return O&&O.length?As(O,Ps(H,2)):0},tn.template=function(O,H,pe){var Ke=tn.templateSettings;pe&&gc(O,H,pe)&&(H=u),O=ju(O),H=Ev({},H,Ke,n_);var Cr,Xr,kt=Ev({},H.imports,Ke.imports,n_),pn=nf(kt),er=cu(kt,pn),oo=0,io=H.interpolate||Ti,vo="__p += '",hs=td((H.escape||Ti).source+"|"+io.source+"|"+(io===xt?Si:Ti).source+"|"+(H.evaluate||Ti).source+"|$","g"),aa="//# sourceURL="+(Xs.call(H,"sourceURL")?(H.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++os+"]")+"\n";O.replace(hs,function(Ya,lu,yu,wp,ip,xp){return yu||(yu=wp),vo+=O.slice(oo,xp).replace(Bo,ha),lu&&(Cr=!0,vo+="' +\n__e("+lu+") +\n'"),ip&&(Xr=!0,vo+="';\n"+ip+";\n__p += '"),yu&&(vo+="' +\n((__t = ("+yu+")) == null ? '' : __t) +\n'"),oo=xp+Ya.length,Ya}),vo+="';\n";var Ba=Xs.call(H,"variable")&&H.variable;if(Ba){if(zo.test(Ba))throw new Ss("Invalid `variable` option passed into `_.template`")}else vo="with (obj) {\n"+vo+"\n}\n";vo=(Xr?vo.replace(zn,""):vo).replace(vr,"$1").replace(si,"$1;"),vo="function("+(Ba||"obj")+") {\n"+(Ba?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(Cr?", __e = _.escape":"")+(Xr?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+vo+"return __p\n}";var Nl=x1(function(){return Na(pn,aa+"return "+vo).apply(u,er)});if(Nl.source=vo,K_(Nl))throw Nl;return Nl},tn.times=function(O,H){if((O=$l(O))<1||O>st)return[];var pe=Gt,Ke=wl(O,Gt);H=Ps(H),O-=Gt;for(var kt=ku(Ke,H);++pe<O;)H(pe);return kt},tn.toFinite=y_,tn.toInteger=$l,tn.toLength=xb,tn.toLower=function(O){return ju(O).toLowerCase()},tn.toNumber=zf,tn.toSafeInteger=function(O){return O?$c($l(O),-st,st):0===O?O:0},tn.toString=ju,tn.toUpper=function(O){return ju(O).toUpperCase()},tn.trim=function(O,H,pe){if((O=ju(O))&&(pe||H===u))return Au(O);if(!O||!(H=Td(H)))return O;var Ke=un(O),kt=un(H);return oc(Ke,$u(Ke,kt),Hu(Ke,kt)+1).join("")},tn.trimEnd=function(O,H,pe){if((O=ju(O))&&(pe||H===u))return O.slice(0,yn(O)+1);if(!O||!(H=Td(H)))return O;var Ke=un(O);return oc(Ke,0,Hu(Ke,un(H))+1).join("")},tn.trimStart=function(O,H,pe){if((O=ju(O))&&(pe||H===u))return O.replace(Gi,"");if(!O||!(H=Td(H)))return O;var Ke=un(O);return oc(Ke,$u(Ke,un(H))).join("")},tn.truncate=function(O,H){var pe=30,Ke="...";if(Zu(H)){var kt="separator"in H?H.separator:kt;pe="length"in H?$l(H.length):pe,Ke="omission"in H?Td(H.omission):Ke}var pn=(O=ju(O)).length;if(fa(O)){var er=un(O);pn=er.length}if(pe>=pn)return O;var Cr=pe-lt(Ke);if(Cr<1)return Ke;var Xr=er?oc(er,0,Cr).join(""):O.slice(0,Cr);if(kt===u)return Xr+Ke;if(er&&(Cr+=Xr.length-Cr),yv(kt)){if(O.slice(Cr).search(kt)){var oo,io=Xr;for(kt.global||(kt=td(kt.source,ju(ai.exec(kt))+"g")),kt.lastIndex=0;oo=kt.exec(io);)var vo=oo.index;Xr=Xr.slice(0,vo===u?Cr:vo)}}else if(O.indexOf(Td(kt),Cr)!=Cr){var hs=Xr.lastIndexOf(kt);hs>-1&&(Xr=Xr.slice(0,hs))}return Xr+Ke},tn.unescape=function(O){return(O=ju(O))&&so.test(O)?O.replace(Ii,Or):O},tn.uniqueId=function(O){var H=++vd;return ju(O)+H},tn.upperCase=DS,tn.upperFirst=sy,tn.each=uv,tn.eachRight=Dm,tn.first=W_,N1(tn,function(){var O={};return Rn(tn,function(H,pe){Xs.call(tn.prototype,pe)||(O[pe]=H)}),O}(),{chain:!1}),tn.VERSION="4.17.21",Tt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(O){tn[O].placeholder=tn}),Tt(["drop","take"],function(O,H){rl.prototype[O]=function(pe){pe=pe===u?1:va($l(pe),0);var Ke=this.__filtered__&&!H?new rl(this):this.clone();return Ke.__filtered__?Ke.__takeCount__=wl(pe,Ke.__takeCount__):Ke.__views__.push({size:wl(pe,Gt),type:O+(Ke.__dir__<0?"Right":"")}),Ke},rl.prototype[O+"Right"]=function(pe){return this.reverse()[O](pe).reverse()}}),Tt(["filter","map","takeWhile"],function(O,H){var pe=H+1,Ke=1==pe||3==pe;rl.prototype[O]=function(kt){var pn=this.clone();return pn.__iteratees__.push({iteratee:Ps(kt,3),type:pe}),pn.__filtered__=pn.__filtered__||Ke,pn}}),Tt(["head","last"],function(O,H){var pe="take"+(H?"Right":"");rl.prototype[O]=function(){return this[pe](1).value()[0]}}),Tt(["initial","tail"],function(O,H){var pe="drop"+(H?"":"Right");rl.prototype[O]=function(){return this.__filtered__?new rl(this):this[pe](1)}}),rl.prototype.compact=function(){return this.filter(Nf)},rl.prototype.find=function(O){return this.filter(O).head()},rl.prototype.findLast=function(O){return this.reverse().find(O)},rl.prototype.invokeMap=fl(function(O,H){return"function"==typeof O?new rl(this):this.map(function(pe){return ol(pe,O,H)})}),rl.prototype.reject=function(O){return this.filter(Mp(Ps(O)))},rl.prototype.slice=function(O,H){O=$l(O);var pe=this;return pe.__filtered__&&(O>0||H<0)?new rl(pe):(O<0?pe=pe.takeRight(-O):O&&(pe=pe.drop(O)),H!==u&&(pe=(H=$l(H))<0?pe.dropRight(-H):pe.take(H-O)),pe)},rl.prototype.takeRightWhile=function(O){return this.reverse().takeWhile(O).reverse()},rl.prototype.toArray=function(){return this.take(Gt)},Rn(rl.prototype,function(O,H){var pe=/^(?:filter|find|map|reject)|While$/.test(H),Ke=/^(?:head|last)$/.test(H),kt=tn[Ke?"take"+("last"==H?"Right":""):H],pn=Ke||/^find/.test(H);!kt||(tn.prototype[H]=function(){var er=this.__wrapped__,Cr=Ke?[1]:arguments,Xr=er instanceof rl,oo=Cr[0],io=Xr||li(er),vo=function(lu){var yu=kt.apply(tn,Ma([lu],Cr));return Ke&&hs?yu[0]:yu};io&&pe&&"function"==typeof oo&&1!=oo.length&&(Xr=io=!1);var hs=this.__chain__,aa=!!this.__actions__.length,Ba=pn&&!hs,Nl=Xr&&!aa;if(!pn&&io){er=Nl?er:new rl(this);var Ya=O.apply(er,Cr);return Ya.__actions__.push({func:Os,args:[vo],thisArg:u}),new Pu(Ya,hs)}return Ba&&Nl?O.apply(this,Cr):(Ya=this.thru(vo),Ba?Ke?Ya.value()[0]:Ya.value():Ya)})}),Tt(["pop","push","shift","sort","splice","unshift"],function(O){var H=ki[O],pe=/^(?:push|sort|unshift)$/.test(O)?"tap":"thru",Ke=/^(?:pop|shift)$/.test(O);tn.prototype[O]=function(){var kt=arguments;if(Ke&&!this.__chain__){var pn=this.value();return H.apply(li(pn)?pn:[],kt)}return this[pe](function(er){return H.apply(li(er)?er:[],kt)})}}),Rn(rl.prototype,function(O,H){var pe=tn[H];if(pe){var Ke=pe.name+"";Xs.call(Gc,Ke)||(Gc[Ke]=[]),Gc[Ke].push({name:H,func:pe})}}),Gc[hp(u,2).name]=[{name:"wrapper",func:u}],rl.prototype.clone=function(){var O=new rl(this.__wrapped__);return O.__actions__=gi(this.__actions__),O.__dir__=this.__dir__,O.__filtered__=this.__filtered__,O.__iteratees__=gi(this.__iteratees__),O.__takeCount__=this.__takeCount__,O.__views__=gi(this.__views__),O},rl.prototype.reverse=function(){if(this.__filtered__){var O=new rl(this);O.__dir__=-1,O.__filtered__=!0}else(O=this.clone()).__dir__*=-1;return O},rl.prototype.value=function(){var O=this.__wrapped__.value(),H=this.__dir__,pe=li(O),Ke=H<0,kt=pe?O.length:0,pn=function(O,H,pe){for(var Ke=-1,kt=pe.length;++Ke<kt;){var pn=pe[Ke],er=pn.size;switch(pn.type){case"drop":O+=er;break;case"dropRight":H-=er;break;case"take":H=wl(H,O+er);break;case"takeRight":O=va(O,H-er)}}return{start:O,end:H}}(0,kt,this.__views__),er=pn.start,Cr=pn.end,Xr=Cr-er,oo=Ke?Cr:er-1,io=this.__iteratees__,vo=io.length,hs=0,aa=wl(Xr,this.__takeCount__);if(!pe||!Ke&&kt==Xr&&aa==Xr)return xh(O,this.__actions__);var Ba=[];e:for(;Xr--&&hs<aa;){for(var Nl=-1,Ya=O[oo+=H];++Nl<vo;){var lu=io[Nl],wp=lu.type,ip=(0,lu.iteratee)(Ya);if(2==wp)Ya=ip;else if(!ip){if(1==wp)continue e;break e}}Ba[hs++]=Ya}return Ba},tn.prototype.at=Xa,tn.prototype.chain=function(){return ao(this)},tn.prototype.commit=function(){return new Pu(this.value(),this.__chain__)},tn.prototype.next=function(){this.__values__===u&&(this.__values__=b1(this.value()));var O=this.__index__>=this.__values__.length;return{done:O,value:O?u:this.__values__[this.__index__++]}},tn.prototype.plant=function(O){for(var H,pe=this;pe instanceof Ou;){var Ke=vg(pe);Ke.__index__=0,Ke.__values__=u,H?kt.__wrapped__=Ke:H=Ke;var kt=Ke;pe=pe.__wrapped__}return kt.__wrapped__=O,H},tn.prototype.reverse=function(){var O=this.__wrapped__;if(O instanceof rl){var H=O;return this.__actions__.length&&(H=new rl(this)),(H=H.reverse()).__actions__.push({func:Os,args:[__],thisArg:u}),new Pu(H,this.__chain__)}return this.thru(__)},tn.prototype.toJSON=tn.prototype.valueOf=tn.prototype.value=function(){return xh(this.__wrapped__,this.__actions__)},tn.prototype.first=tn.prototype.head,Ce&&(tn.prototype[Ce]=function(){return this}),tn}();Hl._=Ho,(r=function(){return Ho}.call(S,i,S,v))!==u&&(v.exports=r)}.call(this)},97425:(v,S,i)=>{var r=i(93177);function p(f,e){if("function"!=typeof f||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var _=function(){var y=arguments,T=e?e.apply(this,y):y[0],M=_.cache;if(M.has(T))return M.get(T);var R=f.apply(this,y);return _.cache=M.set(T,R)||M,R};return _.cache=new(p.Cache||r),_}p.Cache=r,v.exports=p},3912:(v,S,i)=>{var r=i(9085),p=i(30906)(function(f,e,_){r(f,e,_)});v.exports=p},30765:(v,S,i)=>{var r=i(27038);v.exports=function(){return r.Date.now()}},12482:(v,S,i)=>{var r=i(14992),u=i(77007),p=i(72064),f=i(64667),e=i(11694),_=i(925),y=i(10058),T=i(51675),Z=y(function(J,Q){var ee={};if(null==J)return ee;var ue=!1;Q=r(Q,function($){return $=f($,J),ue||(ue=$.length>1),$}),e(J,T(J),ee),ue&&(ee=u(ee,7,_));for(var ae=Q.length;ae--;)p(ee,Q[ae]);return ee});v.exports=Z},63354:(v,S,i)=>{var r=i(68840),u=i(59866),p=i(99743),f=i(82773);v.exports=function(_){return p(_)?r(f(_)):u(_)}},86101:(v,S,i)=>{var r=i(89731),u=i(59026),p=i(5245),f=i(85105),e=i(81690);v.exports=function(y,T,M){var R=e(y)?r:f,F=arguments.length<3;return R(y,p(T,4),M,F,u)}},12666:(v,S,i)=>{var r=i(32773);v.exports=function(p,f,e){return null==p?p:r(p,f,e)}},52190:(v,S,i)=>{var r=i(8141),u=i(5245),p=i(37834),f=i(81690),e=i(71100);v.exports=function(y,T,M){var R=f(y)?r:p;return M&&e(y,T,M)&&(T=void 0),R(y,u(T,3))}},65336:v=>{v.exports=function(){return[]}},61711:v=>{v.exports=function(){return!1}},5152:(v,S,i)=>{var r=i(45038),u=1/0;v.exports=function(e){return e?(e=r(e))===u||e===-u?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},32781:(v,S,i)=>{var r=i(5152);v.exports=function(p){var f=r(p),e=f%1;return f==f?e?f-e:f:0}},69883:(v,S,i)=>{var r=i(41233);v.exports=function(p){return r(p).toLowerCase()}},45038:(v,S,i)=>{var r=i(13743),u=i(53867),p=i(7786),e=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,y=/^0o[0-7]+$/i,T=parseInt;v.exports=function(R){if("number"==typeof R)return R;if(p(R))return NaN;if(u(R)){var F="function"==typeof R.valueOf?R.valueOf():R;R=u(F)?F+"":F}if("string"!=typeof R)return 0===R?R:+R;R=r(R);var Z=_.test(R);return Z||y.test(R)?T(R.slice(2),Z?2:8):e.test(R)?NaN:+R}},31413:(v,S,i)=>{var r=i(11694),u=i(42970);v.exports=function(f){return r(f,u(f))}},41233:(v,S,i)=>{var r=i(68166);v.exports=function(p){return null==p?"":r(p)}},93890:(v,S,i)=>{var u=i(66803)("toUpperCase");v.exports=u},96590:(v,S,i)=>{var r=i(54561),u=i(59316),p=i(41233),f=i(58863);v.exports=function(_,y,T){return _=p(_),void 0===(y=T?void 0:y)?u(_)?f(_):r(_):_.match(y)||[]}},31507:(v,S,i)=>{var r=i(23898),u=i(25687);v.exports=function(f,e){return u(f||[],e||[],r)}},74538:(v,S,i)=>{"use strict";var r=i(7856),u=i(11926);S.highlight=f,S.highlightAuto=function(ae,$){var Oe,ce,dt,ze,se=$||{},ve=se.subset||r.listLanguages(),oe=se.prefix,he=ve.length,me=-1;if(null==oe&&(oe=p),"string"!=typeof ae)throw u("Expected `string` for value, got `%s`",ae);for(ce={relevance:0,language:null,value:[]},Oe={relevance:0,language:null,value:[]};++me<he;)r.getLanguage(ze=ve[me])&&((dt=f(ze,ae,$)).language=ze,dt.relevance>ce.relevance&&(ce=dt),dt.relevance>Oe.relevance&&(ce=Oe,Oe=dt));return ce.language&&(Oe.secondBest=ce),Oe},S.registerLanguage=function(ae,$){r.registerLanguage(ae,$)},S.listLanguages=function(){return r.listLanguages()},S.registerAlias=function(ae,$){var ve,se=ae;for(ve in $&&((se={})[ae]=$),se)r.registerAliases(se[ve],{languageName:ve})},M.prototype.addText=function(ae){var se,ve,$=this.stack;""!==ae&&((ve=(se=$[$.length-1]).children[se.children.length-1])&&"text"===ve.type?ve.value+=ae:se.children.push({type:"text",value:ae}))},M.prototype.addKeyword=function(ae,$){this.openNode($),this.addText(ae),this.closeNode()},M.prototype.addSublanguage=function(ae,$){var se=this.stack,ve=se[se.length-1],oe=ae.rootNode.children;ve.children=ve.children.concat($?{type:"element",tagName:"span",properties:{className:[$]},children:oe}:oe)},M.prototype.openNode=function(ae){var $=this.stack,oe={type:"element",tagName:"span",properties:{className:[this.options.classPrefix+ae]},children:[]};$[$.length-1].children.push(oe),$.push(oe)},M.prototype.closeNode=function(){this.stack.pop()},M.prototype.closeAllNodes=ue,M.prototype.finalize=ue,M.prototype.toHTML=function(){return""};var p="hljs-";function f(ae,$,se){var me,ve=r.configure({}),he=(se||{}).prefix;if("string"!=typeof ae)throw u("Expected `string` for name, got `%s`",ae);if(!r.getLanguage(ae))throw u("Unknown language: `%s` is not registered",ae);if("string"!=typeof $)throw u("Expected `string` for value, got `%s`",$);if(null==he&&(he=p),r.configure({__emitter:M,classPrefix:he}),me=r.highlight($,{language:ae,ignoreIllegals:!0}),r.configure(ve||{}),me.errorRaised)throw me.errorRaised;return{relevance:me.relevance,language:me.language,value:me.emitter.rootNode.children}}function M(ae){this.options=ae,this.rootNode={children:[]},this.stack=[this.rootNode]}function ue(){}},26431:function(v,S,i){!function(r){"use strict";r.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(p){return/^nm$/i.test(p)},meridiem:function(p,f,e){return p<12?e?"vm":"VM":e?"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\xf4re 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(p){return p+(1===p||8===p||p>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(16738))},1616:function(v,S,i){!function(r){"use strict";var u=function(y){return 0===y?0:1===y?1:2===y?2:y%100>=3&&y%100<=10?3:y%100>=11?4:5},p={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},f=function(y){return function(T,M,R,F){var Z=u(T),J=p[y][u(T)];return 2===Z&&(J=J[M?0:1]),J.replace(/%d/i,T)}},e=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];r.defineLocale("ar-dz",{months:e,monthsShort:e,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(y){return"\u0645"===y},meridiem:function(y,T,M){return y<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:f("s"),ss:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},postformat:function(y){return y.replace(/,/g,"\u060c")},week:{dow:0,doy:4}})}(i(16738))},9759:function(v,S,i){!function(r){"use strict";r.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}})}(i(16738))},43160:function(v,S,i){!function(r){"use strict";var u={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},p=function(T){return 0===T?0:1===T?1:2===T?2:T%100>=3&&T%100<=10?3:T%100>=11?4:5},f={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},e=function(T){return function(M,R,F,Z){var J=p(M),Q=f[T][p(M)];return 2===J&&(Q=Q[R?0:1]),Q.replace(/%d/i,M)}},_=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];r.defineLocale("ar-ly",{months:_,monthsShort:_,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(T){return"\u0645"===T},meridiem:function(T,M,R){return T<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:e("s"),ss:e("s"),m:e("m"),mm:e("m"),h:e("h"),hh:e("h"),d:e("d"),dd:e("d"),M:e("M"),MM:e("M"),y:e("y"),yy:e("y")},preparse:function(T){return T.replace(/\u060c/g,",")},postformat:function(T){return T.replace(/\d/g,function(M){return u[M]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(i(16738))},62551:function(v,S,i){!function(r){"use strict";r.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}(i(16738))},79989:function(v,S,i){!function(r){"use strict";var u={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},p={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};r.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,_,y){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(_){return p[_]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}})}(i(16738))},6962:function(v,S,i){!function(r){"use strict";r.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}(i(16738))},81286:function(v,S,i){!function(r){"use strict";var u={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},p={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},f=function(M){return 0===M?0:1===M?1:2===M?2:M%100>=3&&M%100<=10?3:M%100>=11?4:5},e={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},_=function(M){return function(R,F,Z,J){var Q=f(R),ee=e[M][f(R)];return 2===Q&&(ee=ee[F?0:1]),ee.replace(/%d/i,R)}},y=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];r.defineLocale("ar",{months:y,monthsShort:y,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(M){return"\u0645"===M},meridiem:function(M,R,F){return M<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:_("s"),ss:_("s"),m:_("m"),mm:_("m"),h:_("h"),hh:_("h"),d:_("d"),dd:_("d"),M:_("M"),MM:_("M"),y:_("y"),yy:_("y")},preparse:function(M){return M.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(R){return p[R]}).replace(/\u060c/g,",")},postformat:function(M){return M.replace(/\d/g,function(R){return u[R]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(i(16738))},15887:function(v,S,i){!function(r){"use strict";var u={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};r.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\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".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\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(f){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(f)},meridiem:function(f,e,_){return f<4?"gec\u0259":f<12?"s\u0259h\u0259r":f<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(f){if(0===f)return f+"-\u0131nc\u0131";var e=f%10;return f+(u[e]||u[f%100-e]||u[f>=100?100:null])},week:{dow:1,doy:7}})}(i(16738))},14572:function(v,S,i){!function(r){"use strict";function p(e,_,y){return"m"===y?_?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===y?_?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+function(e,_){var y=e.split("_");return _%10==1&&_%100!=11?y[0]:_%10>=2&&_%10<=4&&(_%100<10||_%100>=20)?y[1]:y[2]}({ss:_?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:_?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:_?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[y],+e)}r.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:p,mm:p,h:p,hh:p,d:"\u0434\u0437\u0435\u043d\u044c",dd:p,M:"\u043c\u0435\u0441\u044f\u0446",MM:p,y:"\u0433\u043e\u0434",yy:p},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,_,y){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,_){switch(_){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}})}(i(16738))},3276:function(v,S,i){!function(r){"use strict";r.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".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:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(p){var f=p%10,e=p%100;return 0===p?p+"-\u0435\u0432":0===e?p+"-\u0435\u043d":e>10&&e<20?p+"-\u0442\u0438":1===f?p+"-\u0432\u0438":2===f?p+"-\u0440\u0438":7===f||8===f?p+"-\u043c\u0438":p+"-\u0442\u0438"},week:{dow:1,doy:7}})}(i(16738))},93344:function(v,S,i){!function(r){"use strict";r.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_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\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(i(16738))},83990:function(v,S,i){!function(r){"use strict";var u={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},p={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};r.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===_?e<4?e:e+12:"\u09ad\u09cb\u09b0"===_||"\u09b8\u0995\u09be\u09b2"===_?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===_?e>=3?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===_||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===_?e+12:void 0},meridiem:function(e,_,y){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(i(16738))},58985:function(v,S,i){!function(r){"use strict";var u={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},p={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};r.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===_&&e>=4||"\u09a6\u09c1\u09aa\u09c1\u09b0"===_&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===_?e+12:e},meridiem:function(e,_,y){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(i(16738))},94391:function(v,S,i){!function(r){"use strict";var u={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},p={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};r.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".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:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===_&&e>=4||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===_&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===_?e+12:e},meridiem:function(e,_,y){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}})}(i(16738))},46728:function(v,S,i){!function(r){"use strict";function u(ee,ue,ae){return ee+" "+function(ee,ue){return 2===ue?function(ee){var ue={m:"v",b:"v",d:"z"};return void 0===ue[ee.charAt(0)]?ee:ue[ee.charAt(0)]+ee.substring(1)}(ee):ee}({mm:"munutenn",MM:"miz",dd:"devezh"}[ae],ee)}function f(ee){return ee>9?f(ee%10):ee}var y=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],T=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,J=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];r.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:J,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:J,monthsRegex:T,monthsShortRegex:T,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:y,longMonthsParse:y,shortMonthsParse:y,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:u,h:"un eur",hh:"%d eur",d:"un devezh",dd:u,M:"ur miz",MM:u,y:"ur bloaz",yy:function(ee){switch(f(ee)){case 1:case 3:case 4:case 5:case 9:return ee+" bloaz";default:return ee+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(ee){return ee+(1===ee?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(ee){return"g.m."===ee},meridiem:function(ee,ue,ae){return ee<12?"a.m.":"g.m."}})}(i(16738))},5536:function(v,S,i){!function(r){"use strict";function u(f,e,_){var y=f+" ";switch(_){case"ss":return y+(1===f?"sekunda":2===f||3===f||4===f?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return y+(1===f?"minuta":2===f||3===f||4===f?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return y+(1===f?"sat":2===f||3===f||4===f?"sata":"sati");case"dd":return y+(1===f?"dan":"dana");case"MM":return y+(1===f?"mjesec":2===f||3===f||4===f?"mjeseca":"mjeseci");case"yy":return y+(1===f?"godina":2===f||3===f||4===f?"godine":"godina")}}r.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:u,m:u,mm:u,h:u,hh:u,d:"dan",dd:u,M:"mjesec",MM:u,y:"godinu",yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},41043:function(v,S,i){!function(r){"use strict";r.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_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\xe7_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\xe0 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\xed %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|\xe8|a)/,ordinal:function(p,f){var e=1===p?"r":2===p?"n":3===p?"r":4===p?"t":"\xe8";return("w"===f||"W"===f)&&(e="a"),p+e},week:{dow:1,doy:4}})}(i(16738))},70420:function(v,S,i){!function(r){"use strict";var u={format:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),standalone:"ledna_\xfanora_b\u0159ezna_dubna_kv\u011btna_\u010dervna_\u010dervence_srpna_z\xe1\u0159\xed_\u0159\xedjna_listopadu_prosince".split("_")},p="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),f=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],e=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function _(M){return M>1&&M<5&&1!=~~(M/10)}function y(M,R,F,Z){var J=M+" ";switch(F){case"s":return R||Z?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return R||Z?J+(_(M)?"sekundy":"sekund"):J+"sekundami";case"m":return R?"minuta":Z?"minutu":"minutou";case"mm":return R||Z?J+(_(M)?"minuty":"minut"):J+"minutami";case"h":return R?"hodina":Z?"hodinu":"hodinou";case"hh":return R||Z?J+(_(M)?"hodiny":"hodin"):J+"hodinami";case"d":return R||Z?"den":"dnem";case"dd":return R||Z?J+(_(M)?"dny":"dn\xed"):J+"dny";case"M":return R||Z?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return R||Z?J+(_(M)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):J+"m\u011bs\xedci";case"y":return R||Z?"rok":"rokem";case"yy":return R||Z?J+(_(M)?"roky":"let"):J+"lety"}}r.defineLocale("cs",{months:u,monthsShort:p,monthsRegex:e,monthsShortRegex:e,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:y,ss:y,m:y,mm:y,h:y,hh:y,d:y,dd:y,M:y,MM:y,y,yy:y},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},33513:function(v,S,i){!function(r){"use strict";r.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(p){return p+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(p)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(p)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}})}(i(16738))},6771:function(v,S,i){!function(r){"use strict";r.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 \xf4l",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(p){var e="";return p>20?e=40===p||50===p||60===p||80===p||100===p?"fed":"ain":p>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][p]),p+e},week:{dow:1,doy:4}})}(i(16738))},47978:function(v,S,i){!function(r){"use strict";r.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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 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\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},25204:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[f+" Tage",f+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[f+" Monate",f+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[f+" Jahre",f+" Jahren"]};return e?T[_][0]:T[_][1]}r.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_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:u,mm:"%d Minuten",h:u,hh:"%d Stunden",d:u,dd:u,w:u,ww:"%d Wochen",M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},2653:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[f+" Tage",f+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[f+" Monate",f+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[f+" Jahre",f+" Jahren"]};return e?T[_][0]:T[_][1]}r.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:u,mm:"%d Minuten",h:u,hh:"%d Stunden",d:u,dd:u,w:u,ww:"%d Wochen",M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},46061:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[f+" Tage",f+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[f+" Monate",f+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[f+" Jahre",f+" Jahren"]};return e?T[_][0]:T[_][1]}r.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:u,mm:"%d Minuten",h:u,hh:"%d Stunden",d:u,dd:u,w:u,ww:"%d Wochen",M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},85:function(v,S,i){!function(r){"use strict";var u=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],p=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];r.defineLocale("dv",{months:u,monthsShort:u,weekdays:p,weekdaysShort:p,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".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:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,_,y){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}})}(i(16738))},8579:function(v,S,i){!function(r){"use strict";r.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(f,e){return f?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[f.month()]:this._monthsNominativeEl[f.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(f,e,_){return f>11?_?"\u03bc\u03bc":"\u039c\u039c":_?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(f){return"\u03bc"===(f+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/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:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(f,e){var _=this._calendarEl[f],y=e&&e.hours();return function(f){return"undefined"!=typeof Function&&f instanceof Function||"[object Function]"===Object.prototype.toString.call(f)}(_)&&(_=_.apply(e)),_.replace("{}",y%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}})}(i(16738))},25724:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:0,doy:4}})}(i(16738))},10525:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")}})}(i(16738))},52847:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},67216:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},39305:function(v,S,i){!function(r){"use strict";r.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",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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")}})}(i(16738))},73364:function(v,S,i){!function(r){"use strict";r.defineLocale("en-in",{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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:0,doy:6}})}(i(16738))},79130:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},11161:function(v,S,i){!function(r){"use strict";r.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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},50802:function(v,S,i){!function(r){"use strict";r.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(p){return"p"===p.charAt(0).toLowerCase()},meridiem:function(p,f,e){return p>11?e?"p.t.m.":"P.T.M.":e?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(i(16738))},45551:function(v,S,i){!function(r){"use strict";var u="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),p="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),f=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],e=/^(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.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},75615:function(v,S,i){!function(r){"use strict";var u="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),p="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),f=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],e=/^(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.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"})}(i(16738))},64790:function(v,S,i){!function(r){"use strict";var u="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),p="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),f=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],e=/^(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.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}})}(i(16738))},40328:function(v,S,i){!function(r){"use strict";var u="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),p="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),f=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],e=/^(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.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"})}(i(16738))},96389:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[f+"sekundi",f+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[f+" minuti",f+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[f+" tunni",f+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[f+" kuu",f+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[f+" aasta",f+" aastat"]};return e?T[_][2]?T[_][2]:T[_][1]:y?T[_][0]:T[_][1]}r.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".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\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:"%d p\xe4eva",M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},52961:function(v,S,i){!function(r){"use strict";r.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}})}(i(16738))},26151:function(v,S,i){!function(r){"use strict";var u={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},p={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};r.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".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:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,_,y){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(_){return p[_]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}})}(i(16738))},7997:function(v,S,i){!function(r){"use strict";var u="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),p=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",u[7],u[8],u[9]];function f(y,T,M,R){var F="";switch(M){case"s":return R?"muutaman sekunnin":"muutama sekunti";case"ss":F=R?"sekunnin":"sekuntia";break;case"m":return R?"minuutin":"minuutti";case"mm":F=R?"minuutin":"minuuttia";break;case"h":return R?"tunnin":"tunti";case"hh":F=R?"tunnin":"tuntia";break;case"d":return R?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":F=R?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return R?"kuukauden":"kuukausi";case"MM":F=R?"kuukauden":"kuukautta";break;case"y":return R?"vuoden":"vuosi";case"yy":F=R?"vuoden":"vuotta"}return function(y,T){return y<10?T?p[y]:u[y]:y}(y,R)+" "+F}r.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_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\xe4n\xe4\xe4n] [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\xe4\xe4st\xe4",past:"%s sitten",s:f,ss:f,m:f,mm:f,h:f,hh:f,d:f,dd:f,M:f,MM:f,y:f,yy:f},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},58898:function(v,S,i){!function(r){"use strict";r.defineLocale("fil",{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(p){return p},week:{dow:1,doy:4}})}(i(16738))},37779:function(v,S,i){!function(r){"use strict";r.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_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\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_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:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},3287:function(v,S,i){!function(r){"use strict";r.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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(p,f){switch(f){default:case"M":case"Q":case"D":case"DDD":case"d":return p+(1===p?"er":"e");case"w":case"W":return p+(1===p?"re":"e")}}})}(i(16738))},38867:function(v,S,i){!function(r){"use strict";r.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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(p,f){switch(f){default:case"M":case"Q":case"D":case"DDD":case"d":return p+(1===p?"er":"e");case"w":case"W":return p+(1===p?"re":"e")}},week:{dow:1,doy:4}})}(i(16738))},28174:function(v,S,i){!function(r){"use strict";var f=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,e=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i];r.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:f,monthsShortRegex:f,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:e,longMonthsParse:e,shortMonthsParse:e,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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(y,T){switch(T){case"D":return y+(1===y?"er":"");default:case"M":case"Q":case"DDD":case"d":return y+(1===y?"er":"e");case"w":case"W":return y+(1===y?"re":"e")}},week:{dow:1,doy:4}})}(i(16738))},50452:function(v,S,i){!function(r){"use strict";var u="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),p="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");r.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,_){return e?/-MMM-/.test(_)?p[e.month()]:u[e.month()]:u},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:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",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}})}(i(16738))},45014:function(v,S,i){!function(r){"use strict";r.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],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\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(T){return T+(1===T?"d":T%10==2?"na":"mh")},week:{dow:1,doy:4}})}(i(16738))},74127:function(v,S,i){!function(r){"use strict";r.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],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\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 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\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(T){return T+(1===T?"d":T%10==2?"na":"mh")},week:{dow:1,doy:4}})}(i(16738))},72124:function(v,S,i){!function(r){"use strict";r.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".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()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(p){return 0===p.indexOf("un")?"n"+p:"en "+p},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},6444:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[f+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",f+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[f+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",f+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[f+" \u0935\u0930\u093e\u0902\u0928\u0940",f+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[f+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",f+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[f+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",f+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[f+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",f+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return y?T[_][0]:T[_][1]}r.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(f,e){switch(e){case"D":return f+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return f}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(f,e){return 12===f&&(f=0),"\u0930\u093e\u0924\u0940"===e?f<4?f:f+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===e?f:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===e?f>12?f:f+12:"\u0938\u093e\u0902\u091c\u0947"===e?f+12:void 0},meridiem:function(f,e,_){return f<4?"\u0930\u093e\u0924\u0940":f<12?"\u0938\u0915\u093e\u0933\u0940\u0902":f<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":f<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}})}(i(16738))},37953:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T={s:["thoddea sekondamni","thodde sekond"],ss:[f+" sekondamni",f+" sekond"],m:["eka mintan","ek minut"],mm:[f+" mintamni",f+" mintam"],h:["eka voran","ek vor"],hh:[f+" voramni",f+" voram"],d:["eka disan","ek dis"],dd:[f+" disamni",f+" dis"],M:["eka mhoinean","ek mhoino"],MM:[f+" mhoineamni",f+" mhoine"],y:["eka vorsan","ek voros"],yy:[f+" vorsamni",f+" vorsam"]};return y?T[_][0]:T[_][1]}r.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(f,e){switch(e){case"D":return f+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return f}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(f,e){return 12===f&&(f=0),"rati"===e?f<4?f:f+12:"sokallim"===e?f:"donparam"===e?f>12?f:f+12:"sanje"===e?f+12:void 0},meridiem:function(f,e,_){return f<4?"rati":f<12?"sokallim":f<16?"donparam":f<20?"sanje":"rati"}})}(i(16738))},76604:function(v,S,i){!function(r){"use strict";var u={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},p={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};r.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===_?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===_?e:"\u0aac\u0aaa\u0acb\u0ab0"===_?e>=10?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===_?e+12:void 0},meridiem:function(e,_,y){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}})}(i(16738))},1222:function(v,S,i){!function(r){"use strict";r.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]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:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(p){return 2===p?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":p+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(p){return 2===p?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":p+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(p){return 2===p?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":p+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(p){return 2===p?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":p%10==0&&10!==p?p+" \u05e9\u05e0\u05d4":p+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(p){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(p)},meridiem:function(p,f,e){return p<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":p<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":p<12?e?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":p<18?e?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}})}(i(16738))},74235:function(v,S,i){!function(r){"use strict";var u={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},p={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},f=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];r.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:f,longMonthsParse:f,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(y){return y.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(T){return p[T]})},postformat:function(y){return y.replace(/\d/g,function(T){return u[T]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(y,T){return 12===y&&(y=0),"\u0930\u093e\u0924"===T?y<4?y:y+12:"\u0938\u0941\u092c\u0939"===T?y:"\u0926\u094b\u092a\u0939\u0930"===T?y>=10?y:y+12:"\u0936\u093e\u092e"===T?y+12:void 0},meridiem:function(y,T,M){return y<4?"\u0930\u093e\u0924":y<10?"\u0938\u0941\u092c\u0939":y<17?"\u0926\u094b\u092a\u0939\u0930":y<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(i(16738))},622:function(v,S,i){!function(r){"use strict";function u(f,e,_){var y=f+" ";switch(_){case"ss":return y+(1===f?"sekunda":2===f||3===f||4===f?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return y+(1===f?"minuta":2===f||3===f||4===f?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return y+(1===f?"sat":2===f||3===f||4===f?"sata":"sati");case"dd":return y+(1===f?"dan":"dana");case"MM":return y+(1===f?"mjesec":2===f||3===f||4===f?"mjeseca":"mjeseci");case"yy":return y+(1===f?"godina":2===f||3===f||4===f?"godine":"godina")}}r.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do 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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:u,m:u,mm:u,h:u,hh:u,d:"dan",dd:u,M:"mjesec",MM:u,y:"godinu",yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},37735:function(v,S,i){!function(r){"use strict";var u="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function p(_,y,T,M){var R=_;switch(T){case"s":return M||y?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return R+(M||y)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(M||y?" perc":" perce");case"mm":return R+(M||y?" perc":" perce");case"h":return"egy"+(M||y?" \xf3ra":" \xf3r\xe1ja");case"hh":return R+(M||y?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(M||y?" nap":" napja");case"dd":return R+(M||y?" nap":" napja");case"M":return"egy"+(M||y?" h\xf3nap":" h\xf3napja");case"MM":return R+(M||y?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(M||y?" \xe9v":" \xe9ve");case"yy":return R+(M||y?" \xe9v":" \xe9ve")}return""}function f(_){return(_?"":"[m\xfalt] ")+"["+u[this.day()]+"] LT[-kor]"}r.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_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(_){return"u"===_.charAt(1).toLowerCase()},meridiem:function(_,y,T){return _<12?!0===T?"de":"DE":!0===T?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return f.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return f.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:p,ss:p,m:p,mm:p,h:p,hh:p,d:p,dd:p,M:p,MM:p,y:p,yy:p},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},90402:function(v,S,i){!function(r){"use strict";r.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(p){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(p)},meridiem:function(p){return p<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":p<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":p<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(p,f){switch(f){case"DDD":case"w":case"W":case"DDDo":return 1===p?p+"-\u056b\u0576":p+"-\u0580\u0564";default:return p}},week:{dow:1,doy:7}})}(i(16738))},59187:function(v,S,i){!function(r){"use strict";r.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(p,f){return 12===p&&(p=0),"pagi"===f?p:"siang"===f?p>=11?p:p+12:"sore"===f||"malam"===f?p+12:void 0},meridiem:function(p,f,e){return p<11?"pagi":p<15?"siang":p<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:0,doy:6}})}(i(16738))},30536:function(v,S,i){!function(r){"use strict";function u(e){return e%100==11||e%10!=1}function p(e,_,y,T){var M=e+" ";switch(y){case"s":return _||T?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return u(e)?M+(_||T?"sek\xfandur":"sek\xfandum"):M+"sek\xfanda";case"m":return _?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return u(e)?M+(_||T?"m\xedn\xfatur":"m\xedn\xfatum"):_?M+"m\xedn\xfata":M+"m\xedn\xfatu";case"hh":return u(e)?M+(_||T?"klukkustundir":"klukkustundum"):M+"klukkustund";case"d":return _?"dagur":T?"dag":"degi";case"dd":return u(e)?_?M+"dagar":M+(T?"daga":"d\xf6gum"):_?M+"dagur":M+(T?"dag":"degi");case"M":return _?"m\xe1nu\xf0ur":T?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return u(e)?_?M+"m\xe1nu\xf0ir":M+(T?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):_?M+"m\xe1nu\xf0ur":M+(T?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return _||T?"\xe1r":"\xe1ri";case"yy":return u(e)?M+(_||T?"\xe1r":"\xe1rum"):M+(_||T?"\xe1r":"\xe1ri")}}r.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_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:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:p,ss:p,m:p,mm:p,h:"klukkustund",hh:p,d:p,dd:p,M:p,MM:p,y:p,yy:p},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},94667:function(v,S,i){!function(r){"use strict";r.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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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(p){return(/^[0-9].+$/.test(p)?"tra":"in")+" "+p},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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},35007:function(v,S,i){!function(r){"use strict";r.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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",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",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},62093:function(v,S,i){!function(r){"use strict";r.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(p,f){return"\u5143"===f[1]?1:parseInt(f[1]||p,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(p){return"\u5348\u5f8c"===p},meridiem:function(p,f,e){return p<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(p){return p.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(p){return this.week()!==p.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(p,f){switch(f){case"y":return 1===p?"\u5143\u5e74":p+"\u5e74";case"d":case"D":case"DDD":return p+"\u65e5";default:return p}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(i(16738))},80059:function(v,S,i){!function(r){"use strict";r.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(p,f){return 12===p&&(p=0),"enjing"===f?p:"siyang"===f?p>=11?p:p+12:"sonten"===f||"ndalu"===f?p+12:void 0},meridiem:function(p,f,e){return p<11?"enjing":p<15?"siyang":p<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}})}(i(16738))},66870:function(v,S,i){!function(r){"use strict";r.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".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:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(p){return p.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(f,e,_){return"\u10d8"===_?e+"\u10e8\u10d8":e+_+"\u10e8\u10d8"})},past:function(p){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(p)?p.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(p)?p.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):p},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(p){return 0===p?p:1===p?p+"-\u10da\u10d8":p<20||p<=100&&p%20==0||p%100==0?"\u10db\u10d4-"+p:p+"-\u10d4"},week:{dow:1,doy:7}})}(i(16738))},80880:function(v,S,i){!function(r){"use strict";var u={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};r.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".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:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(f){return f+(u[f]||u[f%10]||u[f>=100?100:null])},week:{dow:1,doy:7}})}(i(16738))},1083:function(v,S,i){!function(r){"use strict";var u={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},p={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};r.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".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:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,_,y){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},week:{dow:1,doy:4}})}(i(16738))},68785:function(v,S,i){!function(r){"use strict";var u={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},p={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};r.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".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:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===_?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===_?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===_?e>=10?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===_?e+12:void 0},meridiem:function(e,_,y){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}})}(i(16738))},21721:function(v,S,i){!function(r){"use strict";r.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"\uc77c";case"M":return p+"\uc6d4";case"w":case"W":return p+"\uc8fc";default:return p}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(p){return"\uc624\ud6c4"===p},meridiem:function(p,f,e){return p<12?"\uc624\uc804":"\uc624\ud6c4"}})}(i(16738))},37851:function(v,S,i){!function(r){"use strict";var u={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},p={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},f=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];r.defineLocale("ku",{months:f,monthsShort:f,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".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:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(_){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(_)},meridiem:function(_,y,T){return _<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(_){return _.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(y){return p[y]}).replace(/\u060c/g,",")},postformat:function(_){return _.replace(/\d/g,function(y){return u[y]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(i(16738))},1727:function(v,S,i){!function(r){"use strict";var u={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};r.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".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:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(f){return f+(u[f]||u[f%10]||u[f>=100?100:null])},week:{dow:1,doy:7}})}(i(16738))},40346:function(v,S,i){!function(r){"use strict";function u(y,T,M,R){var F={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?F[M][0]:F[M][1]}function e(y){if(y=parseInt(y,10),isNaN(y))return!1;if(y<0)return!0;if(y<10)return 4<=y&&y<=7;if(y<100){var T=y%10;return e(0===T?y/10:T)}if(y<1e4){for(;y>=10;)y/=10;return e(y)}return e(y/=1e3)}r.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_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\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_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\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(y){return e(y.substr(0,y.indexOf(" ")))?"a "+y:"an "+y},past:function(y){return e(y.substr(0,y.indexOf(" ")))?"viru "+y:"virun "+y},s:"e puer Sekonnen",ss:"%d Sekonnen",m:u,mm:"%d Minutten",h:u,hh:"%d Stonnen",d:u,dd:"%d Deeg",M:u,MM:"%d M\xe9int",y:u,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},93002:function(v,S,i){!function(r){"use strict";r.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".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:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(p){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===p},meridiem:function(p,f,e){return p<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(p){return"\u0e97\u0eb5\u0ec8"+p}})}(i(16738))},64035:function(v,S,i){!function(r){"use strict";var u={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function f(M,R,F,Z){return R?_(F)[0]:Z?_(F)[1]:_(F)[2]}function e(M){return M%10==0||M>10&&M<20}function _(M){return u[M].split("_")}function y(M,R,F,Z){var J=M+" ";return 1===M?J+f(0,R,F[0],Z):R?J+(e(M)?_(F)[1]:_(F)[0]):Z?J+_(F)[1]:J+(e(M)?_(F)[1]:_(F)[2])}r.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_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\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".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:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(M,R,F,Z){return R?"kelios sekund\u0117s":Z?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:y,m:f,mm:y,h:f,hh:y,d:f,dd:y,M:f,MM:y,y:f,yy:y},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(M){return M+"-oji"},week:{dow:1,doy:4}})}(i(16738))},56927:function(v,S,i){!function(r){"use strict";var u={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function p(T,M,R){return R?M%10==1&&M%100!=11?T[2]:T[3]:M%10==1&&M%100!=11?T[0]:T[1]}function f(T,M,R){return T+" "+p(u[R],T,M)}function e(T,M,R){return p(u[R],T,M)}r.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_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:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(T,M){return M?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:f,m:e,mm:f,h:e,hh:f,d:e,dd:f,M:e,MM:f,y:e,yy:f},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},5634:function(v,S,i){!function(r){"use strict";var u={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(f,e){return 1===f?e[0]:f>=2&&f<=4?e[1]:e[2]},translate:function(f,e,_){var y=u.words[_];return 1===_.length?e?y[0]:y[1]:f+" "+u.correctGrammaticalCase(f,y)}};r.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:u.translate,m:u.translate,mm:u.translate,h:u.translate,hh:u.translate,d:"dan",dd:u.translate,M:"mjesec",MM:u.translate,y:"godinu",yy:u.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},94173:function(v,S,i){!function(r){"use strict";r.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_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\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".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\u0113kona ruarua",ss:"%d h\u0113kona",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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},86320:function(v,S,i){!function(r){"use strict";r.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".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:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(p){var f=p%10,e=p%100;return 0===p?p+"-\u0435\u0432":0===e?p+"-\u0435\u043d":e>10&&e<20?p+"-\u0442\u0438":1===f?p+"-\u0432\u0438":2===f?p+"-\u0440\u0438":7===f||8===f?p+"-\u043c\u0438":p+"-\u0442\u0438"},week:{dow:1,doy:7}})}(i(16738))},11705:function(v,S,i){!function(r){"use strict";r.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(p,f){return 12===p&&(p=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===f&&p>=4||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===f||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===f?p+12:p},meridiem:function(p,f,e){return p<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":p<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":p<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":p<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}})}(i(16738))},31062:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){switch(_){case"s":return e?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return f+(e?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return f+(e?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return f+(e?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return f+(e?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return f+(e?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return f+(e?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return f}}r.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(f){return"\u04ae\u0425"===f},meridiem:function(f,e,_){return f<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(f,e){switch(e){case"d":case"D":case"DDD":return f+" \u04e9\u0434\u04e9\u0440";default:return f}}})}(i(16738))},92805:function(v,S,i){!function(r){"use strict";var u={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},p={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function f(_,y,T,M){var R="";if(y)switch(T){case"s":R="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":R="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":R="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":R="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":R="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":R="%d \u0924\u093e\u0938";break;case"d":R="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":R="%d \u0926\u093f\u0935\u0938";break;case"M":R="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":R="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":R="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":R="%d \u0935\u0930\u094d\u0937\u0947"}else switch(T){case"s":R="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":R="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":R="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":R="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":R="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":R="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":R="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":R="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":R="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":R="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":R="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":R="%d \u0935\u0930\u094d\u0937\u093e\u0902"}return R.replace(/%d/i,_)}r.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:f,ss:f,m:f,mm:f,h:f,hh:f,d:f,dd:f,M:f,MM:f,y:f,yy:f},preparse:function(_){return _.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(y){return p[y]})},postformat:function(_){return _.replace(/\d/g,function(y){return u[y]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(_,y){return 12===_&&(_=0),"\u092a\u0939\u093e\u091f\u0947"===y||"\u0938\u0915\u093e\u0933\u0940"===y?_:"\u0926\u0941\u092a\u093e\u0930\u0940"===y||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===y||"\u0930\u093e\u0924\u094d\u0930\u0940"===y?_>=12?_:_+12:void 0},meridiem:function(_,y,T){return _>=0&&_<6?"\u092a\u0939\u093e\u091f\u0947":_<12?"\u0938\u0915\u093e\u0933\u0940":_<17?"\u0926\u0941\u092a\u093e\u0930\u0940":_<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}})}(i(16738))},59900:function(v,S,i){!function(r){"use strict";r.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(p,f){return 12===p&&(p=0),"pagi"===f?p:"tengahari"===f?p>=11?p:p+12:"petang"===f||"malam"===f?p+12:void 0},meridiem:function(p,f,e){return p<11?"pagi":p<15?"tengahari":p<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}})}(i(16738))},11341:function(v,S,i){!function(r){"use strict";r.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(p,f){return 12===p&&(p=0),"pagi"===f?p:"tengahari"===f?p>=11?p:p+12:"petang"===f||"malam"===f?p+12:void 0},meridiem:function(p,f,e){return p<11?"pagi":p<15?"tengahari":p<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}})}(i(16738))},37734:function(v,S,i){!function(r){"use strict";r.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_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\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},19034:function(v,S,i){!function(r){"use strict";var u={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},p={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};r.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".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:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},week:{dow:1,doy:4}})}(i(16738))},9324:function(v,S,i){!function(r){"use strict";r.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5r 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",w:"en uke",ww:"%d uker",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},46495:function(v,S,i){!function(r){"use strict";var u={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},p={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};r.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===_?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===_?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===_?e>=10?e:e+12:"\u0938\u093e\u0901\u091d"===_?e+12:void 0},meridiem:function(e,_,y){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}})}(i(16738))},76272:function(v,S,i){!function(r){"use strict";var u="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),p="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),f=[/^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],e=/^(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.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(y){return y+(1===y||8===y||y>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(16738))},70673:function(v,S,i){!function(r){"use strict";var u="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),p="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),f=[/^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],e=/^(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.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(y,T){return y?/-MMM-/.test(T)?p[y.month()]:u[y.month()]:u},monthsRegex:e,monthsShortRegex:e,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:f,longMonthsParse:f,shortMonthsParse:f,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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(y){return y+(1===y||8===y||y>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(16738))},72486:function(v,S,i){!function(r){"use strict";r.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,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\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] 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",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},46219:function(v,S,i){!function(r){"use strict";r.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_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] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(p,f){var e=1===p?"r":2===p?"n":3===p?"r":4===p?"t":"\xe8";return("w"===f||"W"===f)&&(e="a"),p+e},week:{dow:1,doy:4}})}(i(16738))},2829:function(v,S,i){!function(r){"use strict";var u={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},p={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};r.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,_){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===_?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===_?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===_?e>=10?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===_?e+12:void 0},meridiem:function(e,_,y){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}})}(i(16738))},78444:function(v,S,i){!function(r){"use strict";var u="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),p="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),f=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function e(T){return T%10<5&&T%10>1&&~~(T/10)%10!=1}function _(T,M,R){var F=T+" ";switch(R){case"ss":return F+(e(T)?"sekundy":"sekund");case"m":return M?"minuta":"minut\u0119";case"mm":return F+(e(T)?"minuty":"minut");case"h":return M?"godzina":"godzin\u0119";case"hh":return F+(e(T)?"godziny":"godzin");case"ww":return F+(e(T)?"tygodnie":"tygodni");case"MM":return F+(e(T)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return F+(e(T)?"lata":"lat")}}r.defineLocale("pl",{months:function(T,M){return T?/D MMMM/.test(M)?p[T.month()]:u[T.month()]:u},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:f,longMonthsParse:f,shortMonthsParse:f,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:_,m:_,mm:_,h:_,hh:_,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:_,M:"miesi\u0105c",MM:_,y:"rok",yy:_},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},66117:function(v,S,i){!function(r){"use strict";r.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_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\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"})}(i(16738))},53170:function(v,S,i){!function(r){"use strict";r.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(i(16738))},96587:function(v,S,i){!function(r){"use strict";function u(f,e,_){var T=" ";return(f%100>=20||f>=100&&f%100==0)&&(T=" de "),f+T+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[_]}r.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".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\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:u,m:"un minut",mm:u,h:"o or\u0103",hh:u,d:"o zi",dd:u,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:u,M:"o lun\u0103",MM:u,y:"un an",yy:u},week:{dow:1,doy:7}})}(i(16738))},39264:function(v,S,i){!function(r){"use strict";function p(_,y,T){return"m"===T?y?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":_+" "+function(_,y){var T=_.split("_");return y%10==1&&y%100!=11?T[0]:y%10>=2&&y%10<=4&&(y%100<10||y%100>=20)?T[1]:T[2]}({ss:y?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:y?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[T],+_)}var f=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];r.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:f,longMonthsParse:f,shortMonthsParse:f,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(_){if(_.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(_){if(_.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:p,m:p,mm:p,h:"\u0447\u0430\u0441",hh:p,d:"\u0434\u0435\u043d\u044c",dd:p,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:p,M:"\u043c\u0435\u0441\u044f\u0446",MM:p,y:"\u0433\u043e\u0434",yy:p},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(_){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(_)},meridiem:function(_,y,T){return _<4?"\u043d\u043e\u0447\u0438":_<12?"\u0443\u0442\u0440\u0430":_<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(_,y){switch(y){case"M":case"d":case"DDD":return _+"-\u0439";case"D":return _+"-\u0433\u043e";case"w":case"W":return _+"-\u044f";default:return _}},week:{dow:1,doy:4}})}(i(16738))},42135:function(v,S,i){!function(r){"use strict";var u=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],p=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];r.defineLocale("sd",{months:u,monthsShort:u,weekdays:p,weekdaysShort:p,weekdaysMin:p,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,_,y){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(i(16738))},95366:function(v,S,i){!function(r){"use strict";r.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".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\u017ees",past:"ma\u014bit %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\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},93379:function(v,S,i){!function(r){"use strict";r.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".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 [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(p){return p+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(p){return"\u0db4.\u0dc0."===p||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===p},meridiem:function(p,f,e){return p>11?e?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":e?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}})}(i(16738))},46143:function(v,S,i){!function(r){"use strict";var u="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),p="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function f(y){return y>1&&y<5}function e(y,T,M,R){var F=y+" ";switch(M){case"s":return T||R?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return T||R?F+(f(y)?"sekundy":"sek\xfand"):F+"sekundami";case"m":return T?"min\xfata":R?"min\xfatu":"min\xfatou";case"mm":return T||R?F+(f(y)?"min\xfaty":"min\xfat"):F+"min\xfatami";case"h":return T?"hodina":R?"hodinu":"hodinou";case"hh":return T||R?F+(f(y)?"hodiny":"hod\xedn"):F+"hodinami";case"d":return T||R?"de\u0148":"d\u0148om";case"dd":return T||R?F+(f(y)?"dni":"dn\xed"):F+"d\u0148ami";case"M":return T||R?"mesiac":"mesiacom";case"MM":return T||R?F+(f(y)?"mesiace":"mesiacov"):F+"mesiacmi";case"y":return T||R?"rok":"rokom";case"yy":return T||R?F+(f(y)?"roky":"rokov"):F+"rokmi"}}r.defineLocale("sk",{months:u,monthsShort:p,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_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\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},196:function(v,S,i){!function(r){"use strict";function u(f,e,_,y){var T=f+" ";switch(_){case"s":return e||y?"nekaj sekund":"nekaj sekundami";case"ss":return T+(1===f?e?"sekundo":"sekundi":2===f?e||y?"sekundi":"sekundah":f<5?e||y?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return T+(1===f?e?"minuta":"minuto":2===f?e||y?"minuti":"minutama":f<5?e||y?"minute":"minutami":e||y?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return T+(1===f?e?"ura":"uro":2===f?e||y?"uri":"urama":f<5?e||y?"ure":"urami":e||y?"ur":"urami");case"d":return e||y?"en dan":"enim dnem";case"dd":return T+(1===f?e||y?"dan":"dnem":2===f?e||y?"dni":"dnevoma":e||y?"dni":"dnevi");case"M":return e||y?"en mesec":"enim mesecem";case"MM":return T+(1===f?e||y?"mesec":"mesecem":2===f?e||y?"meseca":"mesecema":f<5?e||y?"mesece":"meseci":e||y?"mesecev":"meseci");case"y":return e||y?"eno leto":"enim letom";case"yy":return T+(1===f?e||y?"leto":"letom":2===f?e||y?"leti":"letoma":f<5?e||y?"leta":"leti":e||y?"let":"leti")}}r.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_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_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\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},21082:function(v,S,i){!function(r){"use strict";r.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(p){return"M"===p.charAt(0)},meridiem:function(p,f,e){return p<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\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},98963:function(v,S,i){!function(r){"use strict";var u={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["\u0433\u043e\u0434\u0438\u043d\u0443","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(f,e){return f%10>=1&&f%10<=4&&(f%100<10||f%100>=20)?f%10==1?e[0]:e[1]:e[2]},translate:function(f,e,_,y){var M,T=u.words[_];return 1===_.length?"y"===_&&e?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":y||e?T[0]:T[1]:(M=u.correctGrammaticalCase(f,T),"yy"===_&&e&&"\u0433\u043e\u0434\u0438\u043d\u0443"===M?f+" \u0433\u043e\u0434\u0438\u043d\u0430":f+" "+M)}};r.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:u.translate,m:u.translate,mm:u.translate,h:u.translate,hh:u.translate,d:u.translate,dd:u.translate,M:u.translate,MM:u.translate,y:u.translate,yy:u.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},91621:function(v,S,i){!function(r){"use strict";var u={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(f,e){return f%10>=1&&f%10<=4&&(f%100<10||f%100>=20)?f%10==1?e[0]:e[1]:e[2]},translate:function(f,e,_,y){var M,T=u.words[_];return 1===_.length?"y"===_&&e?"jedna godina":y||e?T[0]:T[1]:(M=u.correctGrammaticalCase(f,T),"yy"===_&&e&&"godinu"===M?f+" godina":f+" "+M)}};r.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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. 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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:u.translate,m:u.translate,mm:u.translate,h:u.translate,hh:u.translate,d:u.translate,dd:u.translate,M:u.translate,MM:u.translate,y:u.translate,yy:u.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(16738))},41404:function(v,S,i){!function(r){"use strict";r.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(p,f,e){return p<11?"ekuseni":p<15?"emini":p<19?"entsambama":"ebusuku"},meridiemHour:function(p,f){return 12===p&&(p=0),"ekuseni"===f?p:"emini"===f?p>=11?p:p+12:"entsambama"===f||"ebusuku"===f?0===p?0:p+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(i(16738))},55685:function(v,S,i){!function(r){"use strict";r.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\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".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\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra 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\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(p){var f=p%10;return p+(1==~~(p%100/10)?":e":1===f||2===f?":a":":e")},week:{dow:1,doy:4}})}(i(16738))},3872:function(v,S,i){!function(r){"use strict";r.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 A",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:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(i(16738))},54106:function(v,S,i){!function(r){"use strict";var u={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},p={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};r.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".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:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(_){return p[_]})},postformat:function(e){return e.replace(/\d/g,function(_){return u[_]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,_,y){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,_){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===_?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===_||"\u0b95\u0bbe\u0bb2\u0bc8"===_||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===_&&e>=10?e:e+12},week:{dow:0,doy:6}})}(i(16738))},39204:function(v,S,i){!function(r){"use strict";r.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".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:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===f?p<4?p:p+12:"\u0c09\u0c26\u0c2f\u0c02"===f?p:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===f?p>=10?p:p+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===f?p+12:void 0},meridiem:function(p,f,e){return p<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":p<10?"\u0c09\u0c26\u0c2f\u0c02":p<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":p<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}})}(i(16738))},83692:function(v,S,i){!function(r){"use strict";r.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_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:"segundu balun",ss:"segundu %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(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},86361:function(v,S,i){!function(r){"use strict";var u={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};r.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".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:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(f,e){return 12===f&&(f=0),"\u0448\u0430\u0431"===e?f<4?f:f+12:"\u0441\u0443\u0431\u04b3"===e?f:"\u0440\u04ef\u0437"===e?f>=11?f:f+12:"\u0431\u0435\u0433\u043e\u04b3"===e?f+12:void 0},meridiem:function(f,e,_){return f<4?"\u0448\u0430\u0431":f<11?"\u0441\u0443\u0431\u04b3":f<16?"\u0440\u04ef\u0437":f<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(f){return f+(u[f]||u[f%10]||u[f>=100?100:null])},week:{dow:1,doy:7}})}(i(16738))},31735:function(v,S,i){!function(r){"use strict";r.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(p){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===p},meridiem:function(p,f,e){return p<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}(i(16738))},1568:function(v,S,i){!function(r){"use strict";var u={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};r.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".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\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(f,e){switch(e){case"d":case"D":case"Do":case"DD":return f;default:if(0===f)return f+"'unjy";var _=f%10;return f+(u[_]||u[f%100-_]||u[f>=100?100:null])}},week:{dow:1,doy:7}})}(i(16738))},96129:function(v,S,i){!function(r){"use strict";r.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(p){return p},week:{dow:1,doy:4}})}(i(16738))},13759:function(v,S,i){!function(r){"use strict";var u="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function e(T,M,R,F){var Z=function(T){var M=Math.floor(T%1e3/100),R=Math.floor(T%100/10),F=T%10,Z="";return M>0&&(Z+=u[M]+"vatlh"),R>0&&(Z+=(""!==Z?" ":"")+u[R]+"maH"),F>0&&(Z+=(""!==Z?" ":"")+u[F]),""===Z?"pagh":Z}(T);switch(R){case"ss":return Z+" lup";case"mm":return Z+" tup";case"hh":return Z+" rep";case"dd":return Z+" jaj";case"MM":return Z+" jar";case"yy":return Z+" DIS"}}r.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".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\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(T){var M=T;return-1!==T.indexOf("jaj")?M.slice(0,-3)+"leS":-1!==T.indexOf("jar")?M.slice(0,-3)+"waQ":-1!==T.indexOf("DIS")?M.slice(0,-3)+"nem":M+" pIq"},past:function(T){var M=T;return-1!==T.indexOf("jaj")?M.slice(0,-3)+"Hu\u2019":-1!==T.indexOf("jar")?M.slice(0,-3)+"wen":-1!==T.indexOf("DIS")?M.slice(0,-3)+"ben":M+" ret"},s:"puS lup",ss:e,m:"wa\u2019 tup",mm:e,h:"wa\u2019 rep",hh:e,d:"wa\u2019 jaj",dd:e,M:"wa\u2019 jar",MM:e,y:"wa\u2019 DIS",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},81644:function(v,S,i){!function(r){"use strict";var u={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};r.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_\xc7ar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(f,e,_){return f<12?_?"\xf6\xf6":"\xd6\xd6":_?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(f){return"\xf6s"===f||"\xd6S"===f},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\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(f,e){switch(e){case"d":case"D":case"Do":case"DD":return f;default:if(0===f)return f+"'\u0131nc\u0131";var _=f%10;return f+(u[_]||u[f%100-_]||u[f>=100?100:null])}},week:{dow:1,doy:7}})}(i(16738))},90875:function(v,S,i){!function(r){"use strict";function p(f,e,_,y){var T={s:["viensas secunds","'iensas secunds"],ss:[f+" secunds",f+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[f+" m\xeduts",f+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[f+" \xfeoras",f+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[f+" ziuas",f+" ziuas"],M:["'n mes","'iens mes"],MM:[f+" mesen",f+" mesen"],y:["'n ar","'iens ar"],yy:[f+" ars",f+" ars"]};return y||e?T[_][0]:T[_][1]}r.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".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(f){return"d'o"===f.toLowerCase()},meridiem:function(f,e,_){return f>11?_?"d'o":"D'O":_?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:p,ss:p,m:p,mm:p,h:p,hh:p,d:p,dd:p,M:p,MM:p,y:p,yy:p},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(16738))},11041:function(v,S,i){!function(r){"use strict";r.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".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\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(i(16738))},16878:function(v,S,i){!function(r){"use strict";r.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".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:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}(i(16738))},74357:function(v,S,i){!function(r){"use strict";r.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===f||"\u0633\u06d5\u06be\u06d5\u0631"===f||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===f?p:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===f||"\u0643\u06d5\u0686"===f?p+12:p>=11?p:p+12},meridiem:function(p,f,e){var _=100*p+f;return _<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":_<900?"\u0633\u06d5\u06be\u06d5\u0631":_<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":_<1230?"\u0686\u06c8\u0634":_<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return p+"-\u06be\u06d5\u067e\u062a\u06d5";default:return p}},preparse:function(p){return p.replace(/\u060c/g,",")},postformat:function(p){return p.replace(/,/g,"\u060c")},week:{dow:1,doy:7}})}(i(16738))},74810:function(v,S,i){!function(r){"use strict";function p(y,T,M){return"m"===M?T?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===M?T?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":y+" "+function(y,T){var M=y.split("_");return T%10==1&&T%100!=11?M[0]:T%10>=2&&T%10<=4&&(T%100<10||T%100>=20)?M[1]:M[2]}({ss:T?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:T?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:T?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[M],+y)}function e(y){return function(){return y+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}r.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(y,T){var M={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===y?M.nominative.slice(1,7).concat(M.nominative.slice(0,1)):y?M[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(T)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(T)?"genitive":"nominative"][y.day()]:M.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:e("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:e("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:e("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:e("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return e("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:p,m:p,mm:p,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:p,d:"\u0434\u0435\u043d\u044c",dd:p,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:p,y:"\u0440\u0456\u043a",yy:p},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(y){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(y)},meridiem:function(y,T,M){return y<4?"\u043d\u043e\u0447\u0456":y<12?"\u0440\u0430\u043d\u043a\u0443":y<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(y,T){switch(T){case"M":case"d":case"DDD":case"w":case"W":return y+"-\u0439";case"D":return y+"-\u0433\u043e";default:return y}},week:{dow:1,doy:7}})}(i(16738))},86794:function(v,S,i){!function(r){"use strict";var u=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],p=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];r.defineLocale("ur",{months:u,monthsShort:u,weekdays:p,weekdaysShort:p,weekdaysMin:p,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,_,y){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(i(16738))},77959:function(v,S,i){!function(r){"use strict";r.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}})}(i(16738))},28966:function(v,S,i){!function(r){"use strict";r.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".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:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}})}(i(16738))},35386:function(v,S,i){!function(r){"use strict";r.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".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(p){return/^ch$/i.test(p)},meridiem:function(p,f,e){return p<12?e?"sa":"SA":e?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] 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\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(p){return p},week:{dow:1,doy:4}})}(i(16738))},23156:function(v,S,i){!function(r){"use strict";r.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".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~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(p){var f=p%10;return p+(1==~~(p%100/10)?"th":1===f?"st":2===f?"nd":3===f?"rd":"th")},week:{dow:1,doy:4}})}(i(16738))},68028:function(v,S,i){!function(r){"use strict";r.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".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:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}})}(i(16738))},9330:function(v,S,i){!function(r){"use strict";r.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u51cc\u6668"===f||"\u65e9\u4e0a"===f||"\u4e0a\u5348"===f?p:"\u4e0b\u5348"===f||"\u665a\u4e0a"===f?p+12:p>=11?p:p+12},meridiem:function(p,f,e){var _=100*p+f;return _<600?"\u51cc\u6668":_<900?"\u65e9\u4e0a":_<1130?"\u4e0a\u5348":_<1230?"\u4e2d\u5348":_<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(p){return p.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(p){return this.week()!==p.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"\u65e5";case"M":return p+"\u6708";case"w":case"W":return p+"\u5468";default:return p}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}})}(i(16738))},89380:function(v,S,i){!function(r){"use strict";r.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u51cc\u6668"===f||"\u65e9\u4e0a"===f||"\u4e0a\u5348"===f?p:"\u4e2d\u5348"===f?p>=11?p:p+12:"\u4e0b\u5348"===f||"\u665a\u4e0a"===f?p+12:void 0},meridiem:function(p,f,e){var _=100*p+f;return _<600?"\u51cc\u6668":_<900?"\u65e9\u4e0a":_<1200?"\u4e0a\u5348":1200===_?"\u4e2d\u5348":_<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"\u65e5";case"M":return p+"\u6708";case"w":case"W":return p+"\u9031";default:return p}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(i(16738))},60874:function(v,S,i){!function(r){"use strict";r.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u51cc\u6668"===f||"\u65e9\u4e0a"===f||"\u4e0a\u5348"===f?p:"\u4e2d\u5348"===f?p>=11?p:p+12:"\u4e0b\u5348"===f||"\u665a\u4e0a"===f?p+12:void 0},meridiem:function(p,f,e){var _=100*p+f;return _<600?"\u51cc\u6668":_<900?"\u65e9\u4e0a":_<1130?"\u4e0a\u5348":_<1230?"\u4e2d\u5348":_<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"\u65e5";case"M":return p+"\u6708";case"w":case"W":return p+"\u9031";default:return p}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(i(16738))},96508:function(v,S,i){!function(r){"use strict";r.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(p,f){return 12===p&&(p=0),"\u51cc\u6668"===f||"\u65e9\u4e0a"===f||"\u4e0a\u5348"===f?p:"\u4e2d\u5348"===f?p>=11?p:p+12:"\u4e0b\u5348"===f||"\u665a\u4e0a"===f?p+12:void 0},meridiem:function(p,f,e){var _=100*p+f;return _<600?"\u51cc\u6668":_<900?"\u65e9\u4e0a":_<1130?"\u4e0a\u5348":_<1230?"\u4e2d\u5348":_<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(p,f){switch(f){case"d":case"D":case"DDD":return p+"\u65e5";case"M":return p+"\u6708";case"w":case"W":return p+"\u9031";default:return p}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(i(16738))},16738:function(v,S,i){(v=i.nmd(v)).exports=function(){"use strict";var r,ue;function u(){return r.apply(null,arguments)}function f(X){return X instanceof Array||"[object Array]"===Object.prototype.toString.call(X)}function e(X){return null!=X&&"[object Object]"===Object.prototype.toString.call(X)}function _(X,ye){return Object.prototype.hasOwnProperty.call(X,ye)}function y(X){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(X).length;var ye;for(ye in X)if(_(X,ye))return!1;return!0}function T(X){return void 0===X}function M(X){return"number"==typeof X||"[object Number]"===Object.prototype.toString.call(X)}function R(X){return X instanceof Date||"[object Date]"===Object.prototype.toString.call(X)}function F(X,ye){var bt,nt=[],Qt=X.length;for(bt=0;bt<Qt;++bt)nt.push(ye(X[bt],bt));return nt}function Z(X,ye){for(var nt in ye)_(ye,nt)&&(X[nt]=ye[nt]);return _(ye,"toString")&&(X.toString=ye.toString),_(ye,"valueOf")&&(X.valueOf=ye.valueOf),X}function J(X,ye,nt,bt){return cu(X,ye,nt,bt,!0).utc()}function ee(X){return null==X._pf&&(X._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),X._pf}function ae(X){if(null==X._isValid){var ye=ee(X),nt=ue.call(ye.parsedDateParts,function(Qt){return null!=Qt}),bt=!isNaN(X._d.getTime())&&ye.overflow<0&&!ye.empty&&!ye.invalidEra&&!ye.invalidMonth&&!ye.invalidWeekday&&!ye.weekdayMismatch&&!ye.nullInput&&!ye.invalidFormat&&!ye.userInvalidated&&(!ye.meridiem||ye.meridiem&&nt);if(X._strict&&(bt=bt&&0===ye.charsLeftOver&&0===ye.unusedTokens.length&&void 0===ye.bigHour),null!=Object.isFrozen&&Object.isFrozen(X))return bt;X._isValid=bt}return X._isValid}function $(X){var ye=J(NaN);return null!=X?Z(ee(ye),X):ee(ye).userInvalidated=!0,ye}ue=Array.prototype.some?Array.prototype.some:function(X){var bt,ye=Object(this),nt=ye.length>>>0;for(bt=0;bt<nt;bt++)if(bt in ye&&X.call(this,ye[bt],bt,ye))return!0;return!1};var se=u.momentProperties=[],ve=!1;function oe(X,ye){var nt,bt,Qt,fr=se.length;if(T(ye._isAMomentObject)||(X._isAMomentObject=ye._isAMomentObject),T(ye._i)||(X._i=ye._i),T(ye._f)||(X._f=ye._f),T(ye._l)||(X._l=ye._l),T(ye._strict)||(X._strict=ye._strict),T(ye._tzm)||(X._tzm=ye._tzm),T(ye._isUTC)||(X._isUTC=ye._isUTC),T(ye._offset)||(X._offset=ye._offset),T(ye._pf)||(X._pf=ee(ye)),T(ye._locale)||(X._locale=ye._locale),fr>0)for(nt=0;nt<fr;nt++)T(Qt=ye[bt=se[nt]])||(X[bt]=Qt);return X}function he(X){oe(this,X),this._d=new Date(null!=X._d?X._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===ve&&(ve=!0,u.updateOffset(this),ve=!1)}function me(X){return X instanceof he||null!=X&&null!=X._isAMomentObject}function Oe(X){!1===u.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+X)}function ce(X,ye){var nt=!0;return Z(function(){if(null!=u.deprecationHandler&&u.deprecationHandler(null,X),nt){var Qt,fr,vi,bt=[],ps=arguments.length;for(fr=0;fr<ps;fr++){if(Qt="","object"==typeof arguments[fr]){for(vi in Qt+="\n["+fr+"] ",arguments[0])_(arguments[0],vi)&&(Qt+=vi+": "+arguments[0][vi]+", ");Qt=Qt.slice(0,-2)}else Qt=arguments[fr];bt.push(Qt)}Oe(X+"\nArguments: "+Array.prototype.slice.call(bt).join("")+"\n"+(new Error).stack),nt=!1}return ye.apply(this,arguments)},ye)}var He,dt={};function ze(X,ye){null!=u.deprecationHandler&&u.deprecationHandler(X,ye),dt[X]||(Oe(ye),dt[X]=!0)}function Ye(X){return"undefined"!=typeof Function&&X instanceof Function||"[object Function]"===Object.prototype.toString.call(X)}function Ie(X,ye){var bt,nt=Z({},X);for(bt in ye)_(ye,bt)&&(e(X[bt])&&e(ye[bt])?(nt[bt]={},Z(nt[bt],X[bt]),Z(nt[bt],ye[bt])):null!=ye[bt]?nt[bt]=ye[bt]:delete nt[bt]);for(bt in X)_(X,bt)&&!_(ye,bt)&&e(X[bt])&&(nt[bt]=Z({},nt[bt]));return nt}function Ve(X){null!=X&&this.set(X)}u.suppressDeprecationWarnings=!1,u.deprecationHandler=null,He=Object.keys?Object.keys:function(X){var ye,nt=[];for(ye in X)_(X,ye)&&nt.push(ye);return nt};function en(X,ye,nt){var bt=""+Math.abs(X);return(X>=0?nt?"+":"":"-")+Math.pow(10,Math.max(0,ye-bt.length)).toString().substr(1)+bt}var $t=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Gt=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ut={},Bt={};function mt(X,ye,nt,bt){var Qt=bt;"string"==typeof bt&&(Qt=function(){return this[bt]()}),X&&(Bt[X]=Qt),ye&&(Bt[ye[0]]=function(){return en(Qt.apply(this,arguments),ye[1],ye[2])}),nt&&(Bt[nt]=function(){return this.localeData().ordinal(Qt.apply(this,arguments),X)})}function Yt(X){return X.match(/\[[\s\S]/)?X.replace(/^\[|\]$/g,""):X.replace(/\\/g,"")}function zt(X,ye){return X.isValid()?(ye=Yn(ye,X.localeData()),Ut[ye]=Ut[ye]||function(X){var nt,bt,ye=X.match($t);for(nt=0,bt=ye.length;nt<bt;nt++)ye[nt]=Bt[ye[nt]]?Bt[ye[nt]]:Yt(ye[nt]);return function(Qt){var vi,fr="";for(vi=0;vi<bt;vi++)fr+=Ye(ye[vi])?ye[vi].call(Qt,X):ye[vi];return fr}}(ye),Ut[ye](X)):X.localeData().invalidDate()}function Yn(X,ye){var nt=5;function bt(Qt){return ye.longDateFormat(Qt)||Qt}for(Gt.lastIndex=0;nt>=0&&Gt.test(X);)X=X.replace(Gt,bt),Gt.lastIndex=0,nt-=1;return X}var di={};function $i(X,ye){var nt=X.toLowerCase();di[nt]=di[nt+"s"]=di[ye]=X}function Hi(X){return"string"==typeof X?di[X]||di[X.toLowerCase()]:void 0}function Br(X){var nt,bt,ye={};for(bt in X)_(X,bt)&&(nt=Hi(bt))&&(ye[nt]=X[bt]);return ye}var On={};function Wt(X,ye){On[X]=ye}function ir(X){return X%4==0&&X%100!=0||X%400==0}function Lr(X){return X<0?Math.ceil(X)||0:Math.floor(X)}function Vn(X){var ye=+X,nt=0;return 0!==ye&&isFinite(ye)&&(nt=Lr(ye)),nt}function zr(X,ye){return function(nt){return null!=nt?(Ai(this,X,nt),u.updateOffset(this,ye),this):hi(this,X)}}function hi(X,ye){return X.isValid()?X._d["get"+(X._isUTC?"UTC":"")+ye]():NaN}function Ai(X,ye,nt){X.isValid()&&!isNaN(nt)&&("FullYear"===ye&&ir(X.year())&&1===X.month()&&29===X.date()?(nt=Vn(nt),X._d["set"+(X._isUTC?"UTC":"")+ye](nt,X.month(),xo(nt,X.month()))):X._d["set"+(X._isUTC?"UTC":"")+ye](nt))}var wn,gn=/\d/,En=/\d\d/,mr=/\d{3}/,Xt=/\d{4}/,zn=/[+-]?\d{6}/,vr=/\d\d?/,si=/\d\d\d\d?/,Ii=/\d\d\d\d\d\d?/,no=/\d{1,3}/,so=/\d{1,4}/,Ze=/[+-]?\d{1,6}/,Dr=/\d+/,jt=/[+-]?\d+/,xt=/Z|[+-]\d\d:?\d\d/gi,mn=/Z|[+-]\d\d(?::?\d\d)?/gi,kn=/[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;function nr(X,ye,nt){wn[X]=Ye(ye)?ye:function(bt,Qt){return bt&&nt?nt:ye}}function Gi(X,ye){return _(wn,X)?wn[X](ye._strict,ye._locale):new RegExp(function(X){return yo(X.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(ye,nt,bt,Qt,fr){return nt||bt||Qt||fr}))}(X))}function yo(X){return X.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}wn={};var Mo={};function Vi(X,ye){var nt,Qt,bt=ye;for("string"==typeof X&&(X=[X]),M(ye)&&(bt=function(fr,vi){vi[ye]=Vn(fr)}),Qt=X.length,nt=0;nt<Qt;nt++)Mo[X[nt]]=bt}function cs(X,ye){Vi(X,function(nt,bt,Qt,fr){Qt._w=Qt._w||{},ye(nt,Qt._w,Qt,fr)})}function zo(X,ye,nt){null!=ye&&_(Mo,X)&&Mo[X](ye,nt._a,nt,X)}var Bo;function xo(X,ye){if(isNaN(X)||isNaN(ye))return NaN;var nt=function(X,ye){return(X%ye+ye)%ye}(ye,12);return X+=(ye-nt)/12,1===nt?ir(X)?29:28:31-nt%7%2}Bo=Array.prototype.indexOf?Array.prototype.indexOf:function(X){var ye;for(ye=0;ye<this.length;++ye)if(this[ye]===X)return ye;return-1},mt("M",["MM",2],"Mo",function(){return this.month()+1}),mt("MMM",0,0,function(X){return this.localeData().monthsShort(this,X)}),mt("MMMM",0,0,function(X){return this.localeData().months(this,X)}),$i("month","M"),Wt("month",8),nr("M",vr),nr("MM",vr,En),nr("MMM",function(X,ye){return ye.monthsShortRegex(X)}),nr("MMMM",function(X,ye){return ye.monthsRegex(X)}),Vi(["M","MM"],function(X,ye){ye[1]=Vn(X)-1}),Vi(["MMM","MMMM"],function(X,ye,nt,bt){var Qt=nt._locale.monthsParse(X,bt,nt._strict);null!=Qt?ye[1]=Qt:ee(nt).invalidMonth=X});var Li="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ar="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ln=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ht=kn,cn=kn;function nn(X,ye,nt){var bt,Qt,fr,vi=X.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],bt=0;bt<12;++bt)fr=J([2e3,bt]),this._shortMonthsParse[bt]=this.monthsShort(fr,"").toLocaleLowerCase(),this._longMonthsParse[bt]=this.months(fr,"").toLocaleLowerCase();return nt?"MMM"===ye?-1!==(Qt=Bo.call(this._shortMonthsParse,vi))?Qt:null:-1!==(Qt=Bo.call(this._longMonthsParse,vi))?Qt:null:"MMM"===ye?-1!==(Qt=Bo.call(this._shortMonthsParse,vi))||-1!==(Qt=Bo.call(this._longMonthsParse,vi))?Qt:null:-1!==(Qt=Bo.call(this._longMonthsParse,vi))||-1!==(Qt=Bo.call(this._shortMonthsParse,vi))?Qt:null}function br(X,ye){var nt;if(!X.isValid())return X;if("string"==typeof ye)if(/^\d+$/.test(ye))ye=Vn(ye);else if(!M(ye=X.localeData().monthsParse(ye)))return X;return nt=Math.min(X.date(),xo(X.year(),ye)),X._d["set"+(X._isUTC?"UTC":"")+"Month"](ye,nt),X}function zi(X){return null!=X?(br(this,X),u.updateOffset(this,!0),this):hi(this,"Month")}function _s(){function X(vi,ps){return ps.length-vi.length}var Qt,fr,ye=[],nt=[],bt=[];for(Qt=0;Qt<12;Qt++)fr=J([2e3,Qt]),ye.push(this.monthsShort(fr,"")),nt.push(this.months(fr,"")),bt.push(this.months(fr,"")),bt.push(this.monthsShort(fr,""));for(ye.sort(X),nt.sort(X),bt.sort(X),Qt=0;Qt<12;Qt++)ye[Qt]=yo(ye[Qt]),nt[Qt]=yo(nt[Qt]);for(Qt=0;Qt<24;Qt++)bt[Qt]=yo(bt[Qt]);this._monthsRegex=new RegExp("^("+bt.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+nt.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+ye.join("|")+")","i")}function bs(X){return ir(X)?366:365}mt("Y",0,0,function(){var X=this.year();return X<=9999?en(X,4):"+"+X}),mt(0,["YY",2],0,function(){return this.year()%100}),mt(0,["YYYY",4],0,"year"),mt(0,["YYYYY",5],0,"year"),mt(0,["YYYYYY",6,!0],0,"year"),$i("year","y"),Wt("year",1),nr("Y",jt),nr("YY",vr,En),nr("YYYY",so,Xt),nr("YYYYY",Ze,zn),nr("YYYYYY",Ze,zn),Vi(["YYYYY","YYYYYY"],0),Vi("YYYY",function(X,ye){ye[0]=2===X.length?u.parseTwoDigitYear(X):Vn(X)}),Vi("YY",function(X,ye){ye[0]=u.parseTwoDigitYear(X)}),Vi("Y",function(X,ye){ye[0]=parseInt(X,10)}),u.parseTwoDigitYear=function(X){return Vn(X)+(Vn(X)>68?1900:2e3)};var qo=zr("FullYear",!0);function Ia(X,ye,nt,bt,Qt,fr,vi){var ps;return X<100&&X>=0?(ps=new Date(X+400,ye,nt,bt,Qt,fr,vi),isFinite(ps.getFullYear())&&ps.setFullYear(X)):ps=new Date(X,ye,nt,bt,Qt,fr,vi),ps}function pa(X){var ye,nt;return X<100&&X>=0?((nt=Array.prototype.slice.call(arguments))[0]=X+400,ye=new Date(Date.UTC.apply(null,nt)),isFinite(ye.getUTCFullYear())&&ye.setUTCFullYear(X)):ye=new Date(Date.UTC.apply(null,arguments)),ye}function Bs(X,ye,nt){var bt=7+ye-nt;return-(7+pa(X,0,bt).getUTCDay()-ye)%7+bt-1}function Yl(X,ye,nt,bt,Qt){var xa,ia,ps=1+7*(ye-1)+(7+nt-bt)%7+Bs(X,bt,Qt);return ps<=0?ia=bs(xa=X-1)+ps:ps>bs(X)?(xa=X+1,ia=ps-bs(X)):(xa=X,ia=ps),{year:xa,dayOfYear:ia}}function yl(X,ye,nt){var fr,vi,bt=Bs(X.year(),ye,nt),Qt=Math.floor((X.dayOfYear()-bt-1)/7)+1;return Qt<1?fr=Qt+fo(vi=X.year()-1,ye,nt):Qt>fo(X.year(),ye,nt)?(fr=Qt-fo(X.year(),ye,nt),vi=X.year()+1):(vi=X.year(),fr=Qt),{week:fr,year:vi}}function fo(X,ye,nt){var bt=Bs(X,ye,nt),Qt=Bs(X+1,ye,nt);return(bs(X)-bt+Qt)/7}mt("w",["ww",2],"wo","week"),mt("W",["WW",2],"Wo","isoWeek"),$i("week","w"),$i("isoWeek","W"),Wt("week",5),Wt("isoWeek",5),nr("w",vr),nr("ww",vr,En),nr("W",vr),nr("WW",vr,En),cs(["w","ww","W","WW"],function(X,ye,nt,bt){ye[bt.substr(0,1)]=Vn(X)});function Eo(X,ye){return X.slice(ye,7).concat(X.slice(0,ye))}mt("d",0,"do","day"),mt("dd",0,0,function(X){return this.localeData().weekdaysMin(this,X)}),mt("ddd",0,0,function(X){return this.localeData().weekdaysShort(this,X)}),mt("dddd",0,0,function(X){return this.localeData().weekdays(this,X)}),mt("e",0,0,"weekday"),mt("E",0,0,"isoWeekday"),$i("day","d"),$i("weekday","e"),$i("isoWeekday","E"),Wt("day",11),Wt("weekday",11),Wt("isoWeekday",11),nr("d",vr),nr("e",vr),nr("E",vr),nr("dd",function(X,ye){return ye.weekdaysMinRegex(X)}),nr("ddd",function(X,ye){return ye.weekdaysShortRegex(X)}),nr("dddd",function(X,ye){return ye.weekdaysRegex(X)}),cs(["dd","ddd","dddd"],function(X,ye,nt,bt){var Qt=nt._locale.weekdaysParse(X,bt,nt._strict);null!=Qt?ye.d=Qt:ee(nt).invalidWeekday=X}),cs(["d","e","E"],function(X,ye,nt,bt){ye[bt]=Vn(X)});var ks="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Co="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),kr=kn,ro=kn,tt=kn;function Pt(X,ye,nt){var bt,Qt,fr,vi=X.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],bt=0;bt<7;++bt)fr=J([2e3,1]).day(bt),this._minWeekdaysParse[bt]=this.weekdaysMin(fr,"").toLocaleLowerCase(),this._shortWeekdaysParse[bt]=this.weekdaysShort(fr,"").toLocaleLowerCase(),this._weekdaysParse[bt]=this.weekdays(fr,"").toLocaleLowerCase();return nt?"dddd"===ye?-1!==(Qt=Bo.call(this._weekdaysParse,vi))?Qt:null:"ddd"===ye?-1!==(Qt=Bo.call(this._shortWeekdaysParse,vi))?Qt:null:-1!==(Qt=Bo.call(this._minWeekdaysParse,vi))?Qt:null:"dddd"===ye?-1!==(Qt=Bo.call(this._weekdaysParse,vi))||-1!==(Qt=Bo.call(this._shortWeekdaysParse,vi))||-1!==(Qt=Bo.call(this._minWeekdaysParse,vi))?Qt:null:"ddd"===ye?-1!==(Qt=Bo.call(this._shortWeekdaysParse,vi))||-1!==(Qt=Bo.call(this._weekdaysParse,vi))||-1!==(Qt=Bo.call(this._minWeekdaysParse,vi))?Qt:null:-1!==(Qt=Bo.call(this._minWeekdaysParse,vi))||-1!==(Qt=Bo.call(this._weekdaysParse,vi))||-1!==(Qt=Bo.call(this._shortWeekdaysParse,vi))?Qt:null}function To(){function X(_l,Jl){return Jl.length-_l.length}var fr,vi,ps,xa,ia,ye=[],nt=[],bt=[],Qt=[];for(fr=0;fr<7;fr++)vi=J([2e3,1]).day(fr),ps=yo(this.weekdaysMin(vi,"")),xa=yo(this.weekdaysShort(vi,"")),ia=yo(this.weekdays(vi,"")),ye.push(ps),nt.push(xa),bt.push(ia),Qt.push(ps),Qt.push(xa),Qt.push(ia);ye.sort(X),nt.sort(X),bt.sort(X),Qt.sort(X),this._weekdaysRegex=new RegExp("^("+Qt.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+bt.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+nt.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+ye.join("|")+")","i")}function Ea(){return this.hours()%12||12}function qu(X,ye){mt(X,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),ye)})}function Ru(X,ye){return ye._meridiemParse}mt("H",["HH",2],0,"hour"),mt("h",["hh",2],0,Ea),mt("k",["kk",2],0,function(){return this.hours()||24}),mt("hmm",0,0,function(){return""+Ea.apply(this)+en(this.minutes(),2)}),mt("hmmss",0,0,function(){return""+Ea.apply(this)+en(this.minutes(),2)+en(this.seconds(),2)}),mt("Hmm",0,0,function(){return""+this.hours()+en(this.minutes(),2)}),mt("Hmmss",0,0,function(){return""+this.hours()+en(this.minutes(),2)+en(this.seconds(),2)}),qu("a",!0),qu("A",!1),$i("hour","h"),Wt("hour",13),nr("a",Ru),nr("A",Ru),nr("H",vr),nr("h",vr),nr("k",vr),nr("HH",vr,En),nr("hh",vr,En),nr("kk",vr,En),nr("hmm",si),nr("hmmss",Ii),nr("Hmm",si),nr("Hmmss",Ii),Vi(["H","HH"],3),Vi(["k","kk"],function(X,ye,nt){var bt=Vn(X);ye[3]=24===bt?0:bt}),Vi(["a","A"],function(X,ye,nt){nt._isPm=nt._locale.isPM(X),nt._meridiem=X}),Vi(["h","hh"],function(X,ye,nt){ye[3]=Vn(X),ee(nt).bigHour=!0}),Vi("hmm",function(X,ye,nt){var bt=X.length-2;ye[3]=Vn(X.substr(0,bt)),ye[4]=Vn(X.substr(bt)),ee(nt).bigHour=!0}),Vi("hmmss",function(X,ye,nt){var bt=X.length-4,Qt=X.length-2;ye[3]=Vn(X.substr(0,bt)),ye[4]=Vn(X.substr(bt,2)),ye[5]=Vn(X.substr(Qt)),ee(nt).bigHour=!0}),Vi("Hmm",function(X,ye,nt){var bt=X.length-2;ye[3]=Vn(X.substr(0,bt)),ye[4]=Vn(X.substr(bt))}),Vi("Hmmss",function(X,ye,nt){var bt=X.length-4,Qt=X.length-2;ye[3]=Vn(X.substr(0,bt)),ye[4]=Vn(X.substr(bt,2)),ye[5]=Vn(X.substr(Qt))});var ed=zr("Hours",!0);var ou,Zl={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,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",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Li,monthsShort:ar,week:{dow:0,doy:6},weekdays:ks,weekdaysMin:Co,weekdaysShort:ms,meridiemParse:/[ap]\.?m?\.?/i},$s={},dc={};function el(X,ye){var nt,bt=Math.min(X.length,ye.length);for(nt=0;nt<bt;nt+=1)if(X[nt]!==ye[nt])return nt;return bt}function Cu(X){return X&&X.toLowerCase().replace("_","-")}function Nt(X){var ye=null;if(void 0===$s[X]&&v&&v.exports&&function(X){return null!=X.match("^[^/\\\\]*$")}(X))try{ye=ou._abbr,i(46700)("./"+X),ct(ye)}catch(bt){$s[X]=null}return $s[X]}function ct(X,ye){var nt;return X&&((nt=T(ye)?De(X):Te(X,ye))?ou=nt:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+X+" not found. Did you forget to load it?")),ou._abbr}function Te(X,ye){if(null!==ye){var nt,bt=Zl;if(ye.abbr=X,null!=$s[X])ze("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."),bt=$s[X]._config;else if(null!=ye.parentLocale)if(null!=$s[ye.parentLocale])bt=$s[ye.parentLocale]._config;else{if(null==(nt=Nt(ye.parentLocale)))return dc[ye.parentLocale]||(dc[ye.parentLocale]=[]),dc[ye.parentLocale].push({name:X,config:ye}),null;bt=nt._config}return $s[X]=new Ve(Ie(bt,ye)),dc[X]&&dc[X].forEach(function(Qt){Te(Qt.name,Qt.config)}),ct(X),$s[X]}return delete $s[X],null}function De(X){var ye;if(X&&X._locale&&X._locale._abbr&&(X=X._locale._abbr),!X)return ou;if(!f(X)){if(ye=Nt(X))return ye;X=[X]}return function(X){for(var nt,bt,Qt,fr,ye=0;ye<X.length;){for(nt=(fr=Cu(X[ye]).split("-")).length,bt=(bt=Cu(X[ye+1]))?bt.split("-"):null;nt>0;){if(Qt=Nt(fr.slice(0,nt).join("-")))return Qt;if(bt&&bt.length>=nt&&el(fr,bt)>=nt-1)break;nt--}ye++}return ou}(X)}function dr(X){var ye,nt=X._a;return nt&&-2===ee(X).overflow&&(ye=nt[1]<0||nt[1]>11?1:nt[2]<1||nt[2]>xo(nt[0],nt[1])?2:nt[3]<0||nt[3]>24||24===nt[3]&&(0!==nt[4]||0!==nt[5]||0!==nt[6])?3:nt[4]<0||nt[4]>59?4:nt[5]<0||nt[5]>59?5:nt[6]<0||nt[6]>999?6:-1,ee(X)._overflowDayOfYear&&(ye<0||ye>2)&&(ye=2),ee(X)._overflowWeeks&&-1===ye&&(ye=7),ee(X)._overflowWeekday&&-1===ye&&(ye=8),ee(X).overflow=ye),X}var Qi=/^\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)?)?$/,Jo=/^\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)?)?$/,Es=/Z|[+-]\d\d(?::?\d\d)?/,vs=[["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}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ms=[["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/]],Ma=/^\/?Date\((-?\d+)/i,uu=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Wa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Pl(X){var ye,nt,fr,vi,ps,xa,bt=X._i,Qt=Qi.exec(bt)||Jo.exec(bt),ia=vs.length,_l=Ms.length;if(Qt){for(ee(X).iso=!0,ye=0,nt=ia;ye<nt;ye++)if(vs[ye][1].exec(Qt[1])){vi=vs[ye][0],fr=!1!==vs[ye][2];break}if(null==vi)return void(X._isValid=!1);if(Qt[3]){for(ye=0,nt=_l;ye<nt;ye++)if(Ms[ye][1].exec(Qt[3])){ps=(Qt[2]||" ")+Ms[ye][0];break}if(null==ps)return void(X._isValid=!1)}if(!fr&&null!=ps)return void(X._isValid=!1);if(Qt[4]){if(!Es.exec(Qt[4]))return void(X._isValid=!1);xa="Z"}X._f=vi+(ps||"")+(xa||""),ua(X)}else X._isValid=!1}function Ol(X){var ye=parseInt(X,10);return ye<=49?2e3+ye:ye<=999?1900+ye:ye}function Pc(X){var nt,ye=uu.exec(function(X){return X.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}(X._i));if(ye){if(nt=function(X,ye,nt,bt,Qt,fr){var vi=[Ol(X),ar.indexOf(ye),parseInt(nt,10),parseInt(bt,10),parseInt(Qt,10)];return fr&&vi.push(parseInt(fr,10)),vi}(ye[4],ye[3],ye[2],ye[5],ye[6],ye[7]),!function(X,ye,nt){return!X||ms.indexOf(X)===new Date(ye[0],ye[1],ye[2]).getDay()||(ee(nt).weekdayMismatch=!0,nt._isValid=!1,!1)}(ye[1],nt,X))return;X._a=nt,X._tzm=function(X,ye,nt){if(X)return Wa[X];if(ye)return 0;var bt=parseInt(nt,10),Qt=bt%100;return(bt-Qt)/100*60+Qt}(ye[8],ye[9],ye[10]),X._d=pa.apply(null,X._a),X._d.setUTCMinutes(X._d.getUTCMinutes()-X._tzm),ee(X).rfc2822=!0}else X._isValid=!1}function Ic(X,ye,nt){return null!=X?X:null!=ye?ye:nt}function tc(X){var ye,nt,Qt,fr,vi,bt=[];if(!X._d){for(Qt=function(X){var ye=new Date(u.now());return X._useUTC?[ye.getUTCFullYear(),ye.getUTCMonth(),ye.getUTCDate()]:[ye.getFullYear(),ye.getMonth(),ye.getDate()]}(X),X._w&&null==X._a[2]&&null==X._a[1]&&function(X){var ye,nt,bt,Qt,fr,vi,ps,xa,ia;null!=(ye=X._w).GG||null!=ye.W||null!=ye.E?(fr=1,vi=4,nt=Ic(ye.GG,X._a[0],yl(Gs(),1,4).year),bt=Ic(ye.W,1),((Qt=Ic(ye.E,1))<1||Qt>7)&&(xa=!0)):(fr=X._locale._week.dow,vi=X._locale._week.doy,ia=yl(Gs(),fr,vi),nt=Ic(ye.gg,X._a[0],ia.year),bt=Ic(ye.w,ia.week),null!=ye.d?((Qt=ye.d)<0||Qt>6)&&(xa=!0):null!=ye.e?(Qt=ye.e+fr,(ye.e<0||ye.e>6)&&(xa=!0)):Qt=fr),bt<1||bt>fo(nt,fr,vi)?ee(X)._overflowWeeks=!0:null!=xa?ee(X)._overflowWeekday=!0:(ps=Yl(nt,bt,Qt,fr,vi),X._a[0]=ps.year,X._dayOfYear=ps.dayOfYear)}(X),null!=X._dayOfYear&&(vi=Ic(X._a[0],Qt[0]),(X._dayOfYear>bs(vi)||0===X._dayOfYear)&&(ee(X)._overflowDayOfYear=!0),nt=pa(vi,0,X._dayOfYear),X._a[1]=nt.getUTCMonth(),X._a[2]=nt.getUTCDate()),ye=0;ye<3&&null==X._a[ye];++ye)X._a[ye]=bt[ye]=Qt[ye];for(;ye<7;ye++)X._a[ye]=bt[ye]=null==X._a[ye]?2===ye?1:0:X._a[ye];24===X._a[3]&&0===X._a[4]&&0===X._a[5]&&0===X._a[6]&&(X._nextDay=!0,X._a[3]=0),X._d=(X._useUTC?pa:Ia).apply(null,bt),fr=X._useUTC?X._d.getUTCDay():X._d.getDay(),null!=X._tzm&&X._d.setUTCMinutes(X._d.getUTCMinutes()-X._tzm),X._nextDay&&(X._a[3]=24),X._w&&void 0!==X._w.d&&X._w.d!==fr&&(ee(X).weekdayMismatch=!0)}}function ua(X){if(X._f!==u.ISO_8601)if(X._f!==u.RFC_2822){X._a=[],ee(X).empty=!0;var nt,bt,Qt,fr,vi,ia,_l,ye=""+X._i,ps=ye.length,xa=0;for(_l=(Qt=Yn(X._f,X._locale).match($t)||[]).length,nt=0;nt<_l;nt++)(bt=(ye.match(Gi(fr=Qt[nt],X))||[])[0])&&((vi=ye.substr(0,ye.indexOf(bt))).length>0&&ee(X).unusedInput.push(vi),ye=ye.slice(ye.indexOf(bt)+bt.length),xa+=bt.length),Bt[fr]?(bt?ee(X).empty=!1:ee(X).unusedTokens.push(fr),zo(fr,bt,X)):X._strict&&!bt&&ee(X).unusedTokens.push(fr);ee(X).charsLeftOver=ps-xa,ye.length>0&&ee(X).unusedInput.push(ye),X._a[3]<=12&&!0===ee(X).bigHour&&X._a[3]>0&&(ee(X).bigHour=void 0),ee(X).parsedDateParts=X._a.slice(0),ee(X).meridiem=X._meridiem,X._a[3]=function(X,ye,nt){var bt;return null==nt?ye:null!=X.meridiemHour?X.meridiemHour(ye,nt):(null!=X.isPM&&((bt=X.isPM(nt))&&ye<12&&(ye+=12),!bt&&12===ye&&(ye=0)),ye)}(X._locale,X._a[3],X._meridiem),null!==(ia=ee(X).era)&&(X._a[0]=X._locale.erasConvertYear(ia,X._a[0])),tc(X),dr(X)}else Pc(X);else Pl(X)}function Au(X){var ye=X._i,nt=X._f;return X._locale=X._locale||De(X._l),null===ye||void 0===nt&&""===ye?$({nullInput:!0}):("string"==typeof ye&&(X._i=ye=X._locale.preparse(ye)),me(ye)?new he(dr(ye)):(R(ye)?X._d=ye:f(nt)?function(X){var ye,nt,bt,Qt,fr,vi,ps=!1,xa=X._f.length;if(0===xa)return ee(X).invalidFormat=!0,void(X._d=new Date(NaN));for(Qt=0;Qt<xa;Qt++)fr=0,vi=!1,ye=oe({},X),null!=X._useUTC&&(ye._useUTC=X._useUTC),ye._f=X._f[Qt],ua(ye),ae(ye)&&(vi=!0),fr+=ee(ye).charsLeftOver,fr+=10*ee(ye).unusedTokens.length,ee(ye).score=fr,ps?fr<bt&&(bt=fr,nt=ye):(null==bt||fr<bt||vi)&&(bt=fr,nt=ye,vi&&(ps=!0));Z(X,nt||ye)}(X):nt?ua(X):function(X){var ye=X._i;T(ye)?X._d=new Date(u.now()):R(ye)?X._d=new Date(ye.valueOf()):"string"==typeof ye?function(X){var ye=Ma.exec(X._i);null===ye?(Pl(X),!1===X._isValid&&(delete X._isValid,Pc(X),!1===X._isValid&&(delete X._isValid,X._strict?X._isValid=!1:u.createFromInputFallback(X)))):X._d=new Date(+ye[1])}(X):f(ye)?(X._a=F(ye.slice(0),function(nt){return parseInt(nt,10)}),tc(X)):e(ye)?function(X){if(!X._d){var ye=Br(X._i);X._a=F([ye.year,ye.month,void 0===ye.day?ye.date:ye.day,ye.hour,ye.minute,ye.second,ye.millisecond],function(bt){return bt&&parseInt(bt,10)}),tc(X)}}(X):M(ye)?X._d=new Date(ye):u.createFromInputFallback(X)}(X),ae(X)||(X._d=null),X))}function cu(X,ye,nt,bt,Qt){var fr={};return(!0===ye||!1===ye)&&(bt=ye,ye=void 0),(!0===nt||!1===nt)&&(bt=nt,nt=void 0),(e(X)&&y(X)||f(X)&&0===X.length)&&(X=void 0),fr._isAMomentObject=!0,fr._useUTC=fr._isUTC=Qt,fr._l=nt,fr._i=X,fr._f=ye,fr._strict=bt,function(X){var ye=new he(dr(Au(X)));return ye._nextDay&&(ye.add(1,"d"),ye._nextDay=void 0),ye}(fr)}function Gs(X,ye,nt,bt){return cu(X,ye,nt,bt,!1)}u.createFromInputFallback=ce("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(X){X._d=new Date(X._i+(X._useUTC?" UTC":""))}),u.ISO_8601=function(){},u.RFC_2822=function(){};var $u=ce("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var X=Gs.apply(null,arguments);return this.isValid()&&X.isValid()?X<this?this:X:$()}),Hu=ce("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var X=Gs.apply(null,arguments);return this.isValid()&&X.isValid()?X>this?this:X:$()});function Yo(X,ye){var nt,bt;if(1===ye.length&&f(ye[0])&&(ye=ye[0]),!ye.length)return Gs();for(nt=ye[0],bt=1;bt<ye.length;++bt)(!ye[bt].isValid()||ye[bt][X](nt))&&(nt=ye[bt]);return nt}var _u=["year","quarter","month","week","day","hour","minute","second","millisecond"];function hl(X){var ye=Br(X),nt=ye.year||0,bt=ye.quarter||0,Qt=ye.month||0,fr=ye.week||ye.isoWeek||0,vi=ye.day||0,ps=ye.hour||0,xa=ye.minute||0,ia=ye.second||0,_l=ye.millisecond||0;this._isValid=function(X){var ye,bt,nt=!1,Qt=_u.length;for(ye in X)if(_(X,ye)&&(-1===Bo.call(_u,ye)||null!=X[ye]&&isNaN(X[ye])))return!1;for(bt=0;bt<Qt;++bt)if(X[_u[bt]]){if(nt)return!1;parseFloat(X[_u[bt]])!==Vn(X[_u[bt]])&&(nt=!0)}return!0}(ye),this._milliseconds=+_l+1e3*ia+6e4*xa+1e3*ps*60*60,this._days=+vi+7*fr,this._months=+Qt+3*bt+12*nt,this._data={},this._locale=De(),this._bubble()}function Vl(X){return X instanceof hl}function Hs(X){return X<0?-1*Math.round(-1*X):Math.round(X)}function Ae(X,ye){mt(X,0,0,function(){var nt=this.utcOffset(),bt="+";return nt<0&&(nt=-nt,bt="-"),bt+en(~~(nt/60),2)+ye+en(~~nt%60,2)})}Ae("Z",":"),Ae("ZZ",""),nr("Z",mn),nr("ZZ",mn),Vi(["Z","ZZ"],function(X,ye,nt){nt._useUTC=!0,nt._tzm=_t(mn,X)});var ot=/([\+\-]|\d\d)/gi;function _t(X,ye){var Qt,fr,nt=(ye||"").match(X);return null===nt?null:0===(fr=60*(Qt=((nt[nt.length-1]||[])+"").match(ot)||["-",0,0])[1]+Vn(Qt[2]))?0:"+"===Qt[0]?fr:-fr}function lt(X,ye){var nt,bt;return ye._isUTC?(nt=ye.clone(),bt=(me(X)||R(X)?X.valueOf():Gs(X).valueOf())-nt.valueOf(),nt._d.setTime(nt._d.valueOf()+bt),u.updateOffset(nt,!1),nt):Gs(X).local()}function un(X){return-Math.round(X._d.getTimezoneOffset())}function co(){return!!this.isValid()&&this._isUTC&&0===this._offset}u.updateOffset=function(){};var Ss=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Na=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function El(X,ye){var Qt,fr,vi,nt=X,bt=null;return Vl(X)?nt={ms:X._milliseconds,d:X._days,M:X._months}:M(X)||!isNaN(+X)?(nt={},ye?nt[ye]=+X:nt.milliseconds=+X):(bt=Ss.exec(X))?(Qt="-"===bt[1]?-1:1,nt={y:0,d:Vn(bt[2])*Qt,h:Vn(bt[3])*Qt,m:Vn(bt[4])*Qt,s:Vn(bt[5])*Qt,ms:Vn(Hs(1e3*bt[6]))*Qt}):(bt=Na.exec(X))?nt={y:Ks(bt[2],Qt="-"===bt[1]?-1:1),M:Ks(bt[3],Qt),w:Ks(bt[4],Qt),d:Ks(bt[5],Qt),h:Ks(bt[6],Qt),m:Ks(bt[7],Qt),s:Ks(bt[8],Qt)}:null==nt?nt={}:"object"==typeof nt&&("from"in nt||"to"in nt)&&(vi=function(X,ye){var nt;return X.isValid()&&ye.isValid()?(ye=lt(ye,X),X.isBefore(ye)?nt=td(X,ye):((nt=td(ye,X)).milliseconds=-nt.milliseconds,nt.months=-nt.months),nt):{milliseconds:0,months:0}}(Gs(nt.from),Gs(nt.to)),(nt={}).ms=vi.milliseconds,nt.M=vi.months),fr=new hl(nt),Vl(X)&&_(X,"_locale")&&(fr._locale=X._locale),Vl(X)&&_(X,"_isValid")&&(fr._isValid=X._isValid),fr}function Ks(X,ye){var nt=X&&parseFloat(X.replace(",","."));return(isNaN(nt)?0:nt)*ye}function td(X,ye){var nt={};return nt.months=ye.month()-X.month()+12*(ye.year()-X.year()),X.clone().add(nt.months,"M").isAfter(ye)&&--nt.months,nt.milliseconds=+ye-+X.clone().add(nt.months,"M"),nt}function zl(X,ye){return function(nt,bt){var fr;return null!==bt&&!isNaN(+bt)&&(ze(ye,"moment()."+ye+"(period, number) is deprecated. Please use moment()."+ye+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),fr=nt,nt=bt,bt=fr),ki(this,El(nt,bt),X),this}}function ki(X,ye,nt,bt){var Qt=ye._milliseconds,fr=Hs(ye._days),vi=Hs(ye._months);!X.isValid()||(bt=null==bt||bt,vi&&br(X,hi(X,"Month")+vi*nt),fr&&Ai(X,"Date",hi(X,"Date")+fr*nt),Qt&&X._d.setTime(X._d.valueOf()+Qt*nt),bt&&u.updateOffset(X,fr||vi))}El.fn=hl.prototype,El.invalid=function(){return El(NaN)};var No=zl(1,"add"),_a=zl(-1,"subtract");function ll(X){return"string"==typeof X||X instanceof String}function Ul(X){return me(X)||R(X)||ll(X)||M(X)||function(X){var ye=f(X),nt=!1;return ye&&(nt=0===X.filter(function(bt){return!M(bt)&&ll(X)}).length),ye&&nt}(X)||function(X){var Qt,ye=e(X)&&!y(X),nt=!1,bt=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],vi=bt.length;for(Qt=0;Qt<vi;Qt+=1)nt=nt||_(X,bt[Qt]);return ye&&nt}(X)||null==X}function vn(X){var Qt,ye=e(X)&&!y(X),nt=!1,bt=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(Qt=0;Qt<bt.length;Qt+=1)nt=nt||_(X,bt[Qt]);return ye&&nt}function Wd(X,ye){if(X.date()<ye.date())return-Wd(ye,X);var nt=12*(ye.year()-X.year())+(ye.month()-X.month()),bt=X.clone().add(nt,"months");return-(nt+(ye-bt<0?(ye-bt)/(bt-X.clone().add(nt-1,"months")):(ye-bt)/(X.clone().add(nt+1,"months")-bt)))||0}function yi(X){var ye;return void 0===X?this._locale._abbr:(null!=(ye=De(X))&&(this._locale=ye),this)}u.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",u.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Go=ce("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(X){return void 0===X?this.localeData():this.locale(X)});function ka(){return this._locale}var Oa=6e4,Us=60*Oa,fc=3506328*Us;function va(X,ye){return(X%ye+ye)%ye}function wl(X,ye,nt){return X<100&&X>=0?new Date(X+400,ye,nt)-fc:new Date(X,ye,nt).valueOf()}function tl(X,ye,nt){return X<100&&X>=0?Date.UTC(X+400,ye,nt)-fc:Date.UTC(X,ye,nt)}function Pu(X,ye){return ye.erasAbbrRegex(X)}function yd(){var Qt,fr,X=[],ye=[],nt=[],bt=[],vi=this.eras();for(Qt=0,fr=vi.length;Qt<fr;++Qt)ye.push(yo(vi[Qt].name)),X.push(yo(vi[Qt].abbr)),nt.push(yo(vi[Qt].narrow)),bt.push(yo(vi[Qt].name)),bt.push(yo(vi[Qt].abbr)),bt.push(yo(vi[Qt].narrow));this._erasRegex=new RegExp("^("+bt.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+ye.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+X.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+nt.join("|")+")","i")}function Ac(X,ye){mt(0,[X,X.length],0,ye)}function bd(X,ye,nt,bt,Qt){var fr;return null==X?yl(this,bt,Qt).year:(ye>(fr=fo(X,bt,Qt))&&(ye=fr),kp.call(this,X,ye,nt,bt,Qt))}function kp(X,ye,nt,bt,Qt){var fr=Yl(X,ye,nt,bt,Qt),vi=pa(fr.year,0,fr.dayOfYear);return this.year(vi.getUTCFullYear()),this.month(vi.getUTCMonth()),this.date(vi.getUTCDate()),this}mt("N",0,0,"eraAbbr"),mt("NN",0,0,"eraAbbr"),mt("NNN",0,0,"eraAbbr"),mt("NNNN",0,0,"eraName"),mt("NNNNN",0,0,"eraNarrow"),mt("y",["y",1],"yo","eraYear"),mt("y",["yy",2],0,"eraYear"),mt("y",["yyy",3],0,"eraYear"),mt("y",["yyyy",4],0,"eraYear"),nr("N",Pu),nr("NN",Pu),nr("NNN",Pu),nr("NNNN",function(X,ye){return ye.erasNameRegex(X)}),nr("NNNNN",function(X,ye){return ye.erasNarrowRegex(X)}),Vi(["N","NN","NNN","NNNN","NNNNN"],function(X,ye,nt,bt){var Qt=nt._locale.erasParse(X,bt,nt._strict);Qt?ee(nt).era=Qt:ee(nt).invalidEra=X}),nr("y",Dr),nr("yy",Dr),nr("yyy",Dr),nr("yyyy",Dr),nr("yo",function(X,ye){return ye._eraYearOrdinalRegex||Dr}),Vi(["y","yy","yyy","yyyy"],0),Vi(["yo"],function(X,ye,nt,bt){var Qt;nt._locale._eraYearOrdinalRegex&&(Qt=X.match(nt._locale._eraYearOrdinalRegex)),ye[0]=nt._locale.eraYearOrdinalParse?nt._locale.eraYearOrdinalParse(X,Qt):parseInt(X,10)}),mt(0,["gg",2],0,function(){return this.weekYear()%100}),mt(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ac("gggg","weekYear"),Ac("ggggg","weekYear"),Ac("GGGG","isoWeekYear"),Ac("GGGGG","isoWeekYear"),$i("weekYear","gg"),$i("isoWeekYear","GG"),Wt("weekYear",1),Wt("isoWeekYear",1),nr("G",jt),nr("g",jt),nr("GG",vr,En),nr("gg",vr,En),nr("GGGG",so,Xt),nr("gggg",so,Xt),nr("GGGGG",Ze,zn),nr("ggggg",Ze,zn),cs(["gggg","ggggg","GGGG","GGGGG"],function(X,ye,nt,bt){ye[bt.substr(0,2)]=Vn(X)}),cs(["gg","GG"],function(X,ye,nt,bt){ye[bt]=u.parseTwoDigitYear(X)}),mt("Q",0,"Qo","quarter"),$i("quarter","Q"),Wt("quarter",7),nr("Q",gn),Vi("Q",function(X,ye){ye[1]=3*(Vn(X)-1)}),mt("D",["DD",2],"Do","date"),$i("date","D"),Wt("date",9),nr("D",vr),nr("DD",vr,En),nr("Do",function(X,ye){return X?ye._dayOfMonthOrdinalParse||ye._ordinalParse:ye._dayOfMonthOrdinalParseLenient}),Vi(["D","DD"],2),Vi("Do",function(X,ye){ye[2]=Vn(X.match(vr)[0])});var _f=zr("Date",!0);mt("DDD",["DDDD",3],"DDDo","dayOfYear"),$i("dayOfYear","DDD"),Wt("dayOfYear",4),nr("DDD",no),nr("DDDD",mr),Vi(["DDD","DDDD"],function(X,ye,nt){nt._dayOfYear=Vn(X)}),mt("m",["mm",2],0,"minute"),$i("minute","m"),Wt("minute",14),nr("m",vr),nr("mm",vr,En),Vi(["m","mm"],4);var Kl=zr("Minutes",!1);mt("s",["ss",2],0,"second"),$i("second","s"),Wt("second",15),nr("s",vr),nr("ss",vr,En),Vi(["s","ss"],5);var Uu,Xf,kf=zr("Seconds",!1);for(mt("S",0,0,function(){return~~(this.millisecond()/100)}),mt(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),mt(0,["SSS",3],0,"millisecond"),mt(0,["SSSS",4],0,function(){return 10*this.millisecond()}),mt(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),mt(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),mt(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),mt(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),mt(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),$i("millisecond","ms"),Wt("millisecond",16),nr("S",no,gn),nr("SS",no,En),nr("SSS",no,mr),Uu="SSSS";Uu.length<=9;Uu+="S")nr(Uu,Dr);function Rd(X,ye){ye[6]=Vn(1e3*("0."+X))}for(Uu="S";Uu.length<=9;Uu+="S")Vi(Uu,Rd);Xf=zr("Milliseconds",!1),mt("z",0,0,"zoneAbbr"),mt("zz",0,0,"zoneName");var Ji=he.prototype;function Nd(X){return X}Ji.add=No,Ji.calendar=function(X,ye){1===arguments.length&&(arguments[0]?Ul(arguments[0])?(X=arguments[0],ye=void 0):vn(arguments[0])&&(ye=arguments[0],X=void 0):(X=void 0,ye=void 0));var nt=X||Gs(),bt=lt(nt,this).startOf("day"),Qt=u.calendarFormat(this,bt)||"sameElse",fr=ye&&(Ye(ye[Qt])?ye[Qt].call(this,nt):ye[Qt]);return this.format(fr||this.localeData().calendar(Qt,this,Gs(nt)))},Ji.clone=function(){return new he(this)},Ji.diff=function(X,ye,nt){var bt,Qt,fr;if(!this.isValid())return NaN;if(!(bt=lt(X,this)).isValid())return NaN;switch(Qt=6e4*(bt.utcOffset()-this.utcOffset()),ye=Hi(ye)){case"year":fr=Wd(this,bt)/12;break;case"month":fr=Wd(this,bt);break;case"quarter":fr=Wd(this,bt)/3;break;case"second":fr=(this-bt)/1e3;break;case"minute":fr=(this-bt)/6e4;break;case"hour":fr=(this-bt)/36e5;break;case"day":fr=(this-bt-Qt)/864e5;break;case"week":fr=(this-bt-Qt)/6048e5;break;default:fr=this-bt}return nt?fr:Lr(fr)},Ji.endOf=function(X){var ye,nt;if(void 0===(X=Hi(X))||"millisecond"===X||!this.isValid())return this;switch(nt=this._isUTC?tl:wl,X){case"year":ye=nt(this.year()+1,0,1)-1;break;case"quarter":ye=nt(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":ye=nt(this.year(),this.month()+1,1)-1;break;case"week":ye=nt(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":ye=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":ye=nt(this.year(),this.month(),this.date()+1)-1;break;case"hour":ye=this._d.valueOf(),ye+=Us-va(ye+(this._isUTC?0:this.utcOffset()*Oa),Us)-1;break;case"minute":ye=this._d.valueOf(),ye+=Oa-va(ye,Oa)-1;break;case"second":ye=this._d.valueOf(),ye+=1e3-va(ye,1e3)-1}return this._d.setTime(ye),u.updateOffset(this,!0),this},Ji.format=function(X){X||(X=this.isUtc()?u.defaultFormatUtc:u.defaultFormat);var ye=zt(this,X);return this.localeData().postformat(ye)},Ji.from=function(X,ye){return this.isValid()&&(me(X)&&X.isValid()||Gs(X).isValid())?El({to:this,from:X}).locale(this.locale()).humanize(!ye):this.localeData().invalidDate()},Ji.fromNow=function(X){return this.from(Gs(),X)},Ji.to=function(X,ye){return this.isValid()&&(me(X)&&X.isValid()||Gs(X).isValid())?El({from:this,to:X}).locale(this.locale()).humanize(!ye):this.localeData().invalidDate()},Ji.toNow=function(X){return this.to(Gs(),X)},Ji.get=function(X){return Ye(this[X=Hi(X)])?this[X]():this},Ji.invalidAt=function(){return ee(this).overflow},Ji.isAfter=function(X,ye){var nt=me(X)?X:Gs(X);return!(!this.isValid()||!nt.isValid())&&("millisecond"===(ye=Hi(ye)||"millisecond")?this.valueOf()>nt.valueOf():nt.valueOf()<this.clone().startOf(ye).valueOf())},Ji.isBefore=function(X,ye){var nt=me(X)?X:Gs(X);return!(!this.isValid()||!nt.isValid())&&("millisecond"===(ye=Hi(ye)||"millisecond")?this.valueOf()<nt.valueOf():this.clone().endOf(ye).valueOf()<nt.valueOf())},Ji.isBetween=function(X,ye,nt,bt){var Qt=me(X)?X:Gs(X),fr=me(ye)?ye:Gs(ye);return!!(this.isValid()&&Qt.isValid()&&fr.isValid())&&("("===(bt=bt||"()")[0]?this.isAfter(Qt,nt):!this.isBefore(Qt,nt))&&(")"===bt[1]?this.isBefore(fr,nt):!this.isAfter(fr,nt))},Ji.isSame=function(X,ye){var bt,nt=me(X)?X:Gs(X);return!(!this.isValid()||!nt.isValid())&&("millisecond"===(ye=Hi(ye)||"millisecond")?this.valueOf()===nt.valueOf():(bt=nt.valueOf(),this.clone().startOf(ye).valueOf()<=bt&&bt<=this.clone().endOf(ye).valueOf()))},Ji.isSameOrAfter=function(X,ye){return this.isSame(X,ye)||this.isAfter(X,ye)},Ji.isSameOrBefore=function(X,ye){return this.isSame(X,ye)||this.isBefore(X,ye)},Ji.isValid=function(){return ae(this)},Ji.lang=Go,Ji.locale=yi,Ji.localeData=ka,Ji.max=Hu,Ji.min=$u,Ji.parsingFlags=function(){return Z({},ee(this))},Ji.set=function(X,ye){if("object"==typeof X){var bt,nt=function(X){var nt,ye=[];for(nt in X)_(X,nt)&&ye.push({unit:nt,priority:On[nt]});return ye.sort(function(bt,Qt){return bt.priority-Qt.priority}),ye}(X=Br(X)),Qt=nt.length;for(bt=0;bt<Qt;bt++)this[nt[bt].unit](X[nt[bt].unit])}else if(Ye(this[X=Hi(X)]))return this[X](ye);return this},Ji.startOf=function(X){var ye,nt;if(void 0===(X=Hi(X))||"millisecond"===X||!this.isValid())return this;switch(nt=this._isUTC?tl:wl,X){case"year":ye=nt(this.year(),0,1);break;case"quarter":ye=nt(this.year(),this.month()-this.month()%3,1);break;case"month":ye=nt(this.year(),this.month(),1);break;case"week":ye=nt(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":ye=nt(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":ye=nt(this.year(),this.month(),this.date());break;case"hour":ye=this._d.valueOf(),ye-=va(ye+(this._isUTC?0:this.utcOffset()*Oa),Us);break;case"minute":ye=this._d.valueOf(),ye-=va(ye,Oa);break;case"second":ye=this._d.valueOf(),ye-=va(ye,1e3)}return this._d.setTime(ye),u.updateOffset(this,!0),this},Ji.subtract=_a,Ji.toArray=function(){var X=this;return[X.year(),X.month(),X.date(),X.hour(),X.minute(),X.second(),X.millisecond()]},Ji.toObject=function(){var X=this;return{years:X.year(),months:X.month(),date:X.date(),hours:X.hours(),minutes:X.minutes(),seconds:X.seconds(),milliseconds:X.milliseconds()}},Ji.toDate=function(){return new Date(this.valueOf())},Ji.toISOString=function(X){if(!this.isValid())return null;var ye=!0!==X,nt=ye?this.clone().utc():this;return nt.year()<0||nt.year()>9999?zt(nt,ye?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):Ye(Date.prototype.toISOString)?ye?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",zt(nt,"Z")):zt(nt,ye?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ji.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var nt,bt,X="moment",ye="";return this.isLocal()||(X=0===this.utcOffset()?"moment.utc":"moment.parseZone",ye="Z"),nt="["+X+'("]',bt=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(nt+bt+"-MM-DD[T]HH:mm:ss.SSS"+ye+'[")]')},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Ji[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Ji.toJSON=function(){return this.isValid()?this.toISOString():null},Ji.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ji.unix=function(){return Math.floor(this.valueOf()/1e3)},Ji.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Ji.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ji.eraName=function(){var X,ye,nt,bt=this.localeData().eras();for(X=0,ye=bt.length;X<ye;++X)if(nt=this.clone().startOf("day").valueOf(),bt[X].since<=nt&&nt<=bt[X].until||bt[X].until<=nt&&nt<=bt[X].since)return bt[X].name;return""},Ji.eraNarrow=function(){var X,ye,nt,bt=this.localeData().eras();for(X=0,ye=bt.length;X<ye;++X)if(nt=this.clone().startOf("day").valueOf(),bt[X].since<=nt&&nt<=bt[X].until||bt[X].until<=nt&&nt<=bt[X].since)return bt[X].narrow;return""},Ji.eraAbbr=function(){var X,ye,nt,bt=this.localeData().eras();for(X=0,ye=bt.length;X<ye;++X)if(nt=this.clone().startOf("day").valueOf(),bt[X].since<=nt&&nt<=bt[X].until||bt[X].until<=nt&&nt<=bt[X].since)return bt[X].abbr;return""},Ji.eraYear=function(){var X,ye,nt,bt,Qt=this.localeData().eras();for(X=0,ye=Qt.length;X<ye;++X)if(nt=Qt[X].since<=Qt[X].until?1:-1,bt=this.clone().startOf("day").valueOf(),Qt[X].since<=bt&&bt<=Qt[X].until||Qt[X].until<=bt&&bt<=Qt[X].since)return(this.year()-u(Qt[X].since).year())*nt+Qt[X].offset;return this.year()},Ji.year=qo,Ji.isLeapYear=function(){return ir(this.year())},Ji.weekYear=function(X){return bd.call(this,X,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Ji.isoWeekYear=function(X){return bd.call(this,X,this.isoWeek(),this.isoWeekday(),1,4)},Ji.quarter=Ji.quarters=function(X){return null==X?Math.ceil((this.month()+1)/3):this.month(3*(X-1)+this.month()%3)},Ji.month=zi,Ji.daysInMonth=function(){return xo(this.year(),this.month())},Ji.week=Ji.weeks=function(X){var ye=this.localeData().week(this);return null==X?ye:this.add(7*(X-ye),"d")},Ji.isoWeek=Ji.isoWeeks=function(X){var ye=yl(this,1,4).week;return null==X?ye:this.add(7*(X-ye),"d")},Ji.weeksInYear=function(){var X=this.localeData()._week;return fo(this.year(),X.dow,X.doy)},Ji.weeksInWeekYear=function(){var X=this.localeData()._week;return fo(this.weekYear(),X.dow,X.doy)},Ji.isoWeeksInYear=function(){return fo(this.year(),1,4)},Ji.isoWeeksInISOWeekYear=function(){return fo(this.isoWeekYear(),1,4)},Ji.date=_f,Ji.day=Ji.days=function(X){if(!this.isValid())return null!=X?this:NaN;var ye=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=X?(X=function(X,ye){return"string"!=typeof X?X:isNaN(X)?"number"==typeof(X=ye.weekdaysParse(X))?X:null:parseInt(X,10)}(X,this.localeData()),this.add(X-ye,"d")):ye},Ji.weekday=function(X){if(!this.isValid())return null!=X?this:NaN;var ye=(this.day()+7-this.localeData()._week.dow)%7;return null==X?ye:this.add(X-ye,"d")},Ji.isoWeekday=function(X){if(!this.isValid())return null!=X?this:NaN;if(null!=X){var ye=function(X,ye){return"string"==typeof X?ye.weekdaysParse(X)%7||7:isNaN(X)?null:X}(X,this.localeData());return this.day(this.day()%7?ye:ye-7)}return this.day()||7},Ji.dayOfYear=function(X){var ye=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==X?ye:this.add(X-ye,"d")},Ji.hour=Ji.hours=ed,Ji.minute=Ji.minutes=Kl,Ji.second=Ji.seconds=kf,Ji.millisecond=Ji.milliseconds=Xf,Ji.utcOffset=function(X,ye,nt){var Qt,bt=this._offset||0;if(!this.isValid())return null!=X?this:NaN;if(null!=X){if("string"==typeof X){if(null===(X=_t(mn,X)))return this}else Math.abs(X)<16&&!nt&&(X*=60);return!this._isUTC&&ye&&(Qt=un(this)),this._offset=X,this._isUTC=!0,null!=Qt&&this.add(Qt,"m"),bt!==X&&(!ye||this._changeInProgress?ki(this,El(X-bt,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,u.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?bt:un(this)},Ji.utc=function(X){return this.utcOffset(0,X)},Ji.local=function(X){return this._isUTC&&(this.utcOffset(0,X),this._isUTC=!1,X&&this.subtract(un(this),"m")),this},Ji.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var X=_t(xt,this._i);null!=X?this.utcOffset(X):this.utcOffset(0,!0)}return this},Ji.hasAlignedHourOffset=function(X){return!!this.isValid()&&(X=X?Gs(X).utcOffset():0,(this.utcOffset()-X)%60==0)},Ji.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ji.isLocal=function(){return!!this.isValid()&&!this._isUTC},Ji.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Ji.isUtc=co,Ji.isUTC=co,Ji.zoneAbbr=function(){return this._isUTC?"UTC":""},Ji.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Ji.dates=ce("dates accessor is deprecated. Use date instead.",_f),Ji.months=ce("months accessor is deprecated. Use month instead",zi),Ji.years=ce("years accessor is deprecated. Use year instead",qo),Ji.zone=ce("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(X,ye){return null!=X?("string"!=typeof X&&(X=-X),this.utcOffset(X,ye),this):-this.utcOffset()}),Ji.isDSTShifted=ce("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!T(this._isDSTShifted))return this._isDSTShifted;var ye,X={};return oe(X,this),(X=Au(X))._a?(ye=X._isUTC?J(X._a):Gs(X._a),this._isDSTShifted=this.isValid()&&function(X,ye,nt){var vi,bt=Math.min(X.length,ye.length),Qt=Math.abs(X.length-ye.length),fr=0;for(vi=0;vi<bt;vi++)(nt&&X[vi]!==ye[vi]||!nt&&Vn(X[vi])!==Vn(ye[vi]))&&fr++;return fr+Qt}(X._a,ye.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted});var il=Ve.prototype;function Bu(X,ye,nt,bt){var Qt=De(),fr=J().set(bt,ye);return Qt[nt](fr,X)}function pc(X,ye,nt){if(M(X)&&(ye=X,X=void 0),X=X||"",null!=ye)return Bu(X,ye,nt,"month");var bt,Qt=[];for(bt=0;bt<12;bt++)Qt[bt]=Bu(X,bt,nt,"month");return Qt}function Xd(X,ye,nt,bt){"boolean"==typeof X?(M(ye)&&(nt=ye,ye=void 0),ye=ye||""):(nt=ye=X,X=!1,M(ye)&&(nt=ye,ye=void 0),ye=ye||"");var vi,Qt=De(),fr=X?Qt._week.dow:0,ps=[];if(null!=nt)return Bu(ye,(nt+fr)%7,bt,"day");for(vi=0;vi<7;vi++)ps[vi]=Bu(ye,(vi+fr)%7,bt,"day");return ps}il.calendar=function(X,ye,nt){var bt=this._calendar[X]||this._calendar.sameElse;return Ye(bt)?bt.call(ye,nt):bt},il.longDateFormat=function(X){var ye=this._longDateFormat[X],nt=this._longDateFormat[X.toUpperCase()];return ye||!nt?ye:(this._longDateFormat[X]=nt.match($t).map(function(bt){return"MMMM"===bt||"MM"===bt||"DD"===bt||"dddd"===bt?bt.slice(1):bt}).join(""),this._longDateFormat[X])},il.invalidDate=function(){return this._invalidDate},il.ordinal=function(X){return this._ordinal.replace("%d",X)},il.preparse=Nd,il.postformat=Nd,il.relativeTime=function(X,ye,nt,bt){var Qt=this._relativeTime[nt];return Ye(Qt)?Qt(X,ye,nt,bt):Qt.replace(/%d/i,X)},il.pastFuture=function(X,ye){var nt=this._relativeTime[X>0?"future":"past"];return Ye(nt)?nt(ye):nt.replace(/%s/i,ye)},il.set=function(X){var ye,nt;for(nt in X)_(X,nt)&&(Ye(ye=X[nt])?this[nt]=ye:this["_"+nt]=ye);this._config=X,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},il.eras=function(X,ye){var nt,bt,Qt,fr=this._eras||De("en")._eras;for(nt=0,bt=fr.length;nt<bt;++nt){switch(typeof fr[nt].since){case"string":Qt=u(fr[nt].since).startOf("day"),fr[nt].since=Qt.valueOf()}switch(typeof fr[nt].until){case"undefined":fr[nt].until=1/0;break;case"string":Qt=u(fr[nt].until).startOf("day").valueOf(),fr[nt].until=Qt.valueOf()}}return fr},il.erasParse=function(X,ye,nt){var bt,Qt,vi,ps,xa,fr=this.eras();for(X=X.toUpperCase(),bt=0,Qt=fr.length;bt<Qt;++bt)if(vi=fr[bt].name.toUpperCase(),ps=fr[bt].abbr.toUpperCase(),xa=fr[bt].narrow.toUpperCase(),nt)switch(ye){case"N":case"NN":case"NNN":if(ps===X)return fr[bt];break;case"NNNN":if(vi===X)return fr[bt];break;case"NNNNN":if(xa===X)return fr[bt]}else if([vi,ps,xa].indexOf(X)>=0)return fr[bt]},il.erasConvertYear=function(X,ye){var nt=X.since<=X.until?1:-1;return void 0===ye?u(X.since).year():u(X.since).year()+(ye-X.offset)*nt},il.erasAbbrRegex=function(X){return _(this,"_erasAbbrRegex")||yd.call(this),X?this._erasAbbrRegex:this._erasRegex},il.erasNameRegex=function(X){return _(this,"_erasNameRegex")||yd.call(this),X?this._erasNameRegex:this._erasRegex},il.erasNarrowRegex=function(X){return _(this,"_erasNarrowRegex")||yd.call(this),X?this._erasNarrowRegex:this._erasRegex},il.months=function(X,ye){return X?f(this._months)?this._months[X.month()]:this._months[(this._months.isFormat||ln).test(ye)?"format":"standalone"][X.month()]:f(this._months)?this._months:this._months.standalone},il.monthsShort=function(X,ye){return X?f(this._monthsShort)?this._monthsShort[X.month()]:this._monthsShort[ln.test(ye)?"format":"standalone"][X.month()]:f(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},il.monthsParse=function(X,ye,nt){var bt,Qt,fr;if(this._monthsParseExact)return nn.call(this,X,ye,nt);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),bt=0;bt<12;bt++){if(Qt=J([2e3,bt]),nt&&!this._longMonthsParse[bt]&&(this._longMonthsParse[bt]=new RegExp("^"+this.months(Qt,"").replace(".","")+"$","i"),this._shortMonthsParse[bt]=new RegExp("^"+this.monthsShort(Qt,"").replace(".","")+"$","i")),!nt&&!this._monthsParse[bt]&&(fr="^"+this.months(Qt,"")+"|^"+this.monthsShort(Qt,""),this._monthsParse[bt]=new RegExp(fr.replace(".",""),"i")),nt&&"MMMM"===ye&&this._longMonthsParse[bt].test(X))return bt;if(nt&&"MMM"===ye&&this._shortMonthsParse[bt].test(X))return bt;if(!nt&&this._monthsParse[bt].test(X))return bt}},il.monthsRegex=function(X){return this._monthsParseExact?(_(this,"_monthsRegex")||_s.call(this),X?this._monthsStrictRegex:this._monthsRegex):(_(this,"_monthsRegex")||(this._monthsRegex=cn),this._monthsStrictRegex&&X?this._monthsStrictRegex:this._monthsRegex)},il.monthsShortRegex=function(X){return this._monthsParseExact?(_(this,"_monthsRegex")||_s.call(this),X?this._monthsShortStrictRegex:this._monthsShortRegex):(_(this,"_monthsShortRegex")||(this._monthsShortRegex=Ht),this._monthsShortStrictRegex&&X?this._monthsShortStrictRegex:this._monthsShortRegex)},il.week=function(X){return yl(X,this._week.dow,this._week.doy).week},il.firstDayOfYear=function(){return this._week.doy},il.firstDayOfWeek=function(){return this._week.dow},il.weekdays=function(X,ye){var nt=f(this._weekdays)?this._weekdays:this._weekdays[X&&!0!==X&&this._weekdays.isFormat.test(ye)?"format":"standalone"];return!0===X?Eo(nt,this._week.dow):X?nt[X.day()]:nt},il.weekdaysMin=function(X){return!0===X?Eo(this._weekdaysMin,this._week.dow):X?this._weekdaysMin[X.day()]:this._weekdaysMin},il.weekdaysShort=function(X){return!0===X?Eo(this._weekdaysShort,this._week.dow):X?this._weekdaysShort[X.day()]:this._weekdaysShort},il.weekdaysParse=function(X,ye,nt){var bt,Qt,fr;if(this._weekdaysParseExact)return Pt.call(this,X,ye,nt);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),bt=0;bt<7;bt++){if(Qt=J([2e3,1]).day(bt),nt&&!this._fullWeekdaysParse[bt]&&(this._fullWeekdaysParse[bt]=new RegExp("^"+this.weekdays(Qt,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[bt]=new RegExp("^"+this.weekdaysShort(Qt,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[bt]=new RegExp("^"+this.weekdaysMin(Qt,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[bt]||(fr="^"+this.weekdays(Qt,"")+"|^"+this.weekdaysShort(Qt,"")+"|^"+this.weekdaysMin(Qt,""),this._weekdaysParse[bt]=new RegExp(fr.replace(".",""),"i")),nt&&"dddd"===ye&&this._fullWeekdaysParse[bt].test(X))return bt;if(nt&&"ddd"===ye&&this._shortWeekdaysParse[bt].test(X))return bt;if(nt&&"dd"===ye&&this._minWeekdaysParse[bt].test(X))return bt;if(!nt&&this._weekdaysParse[bt].test(X))return bt}},il.weekdaysRegex=function(X){return this._weekdaysParseExact?(_(this,"_weekdaysRegex")||To.call(this),X?this._weekdaysStrictRegex:this._weekdaysRegex):(_(this,"_weekdaysRegex")||(this._weekdaysRegex=kr),this._weekdaysStrictRegex&&X?this._weekdaysStrictRegex:this._weekdaysRegex)},il.weekdaysShortRegex=function(X){return this._weekdaysParseExact?(_(this,"_weekdaysRegex")||To.call(this),X?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(_(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ro),this._weekdaysShortStrictRegex&&X?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},il.weekdaysMinRegex=function(X){return this._weekdaysParseExact?(_(this,"_weekdaysRegex")||To.call(this),X?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(_(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=tt),this._weekdaysMinStrictRegex&&X?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},il.isPM=function(X){return"p"===(X+"").toLowerCase().charAt(0)},il.meridiem=function(X,ye,nt){return X>11?nt?"pm":"PM":nt?"am":"AM"},ct("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(X){var ye=X%10;return X+(1===Vn(X%100/10)?"th":1===ye?"st":2===ye?"nd":3===ye?"rd":"th")}}),u.lang=ce("moment.lang is deprecated. Use moment.locale instead.",ct),u.langData=ce("moment.langData is deprecated. Use moment.localeData instead.",De);var gu=Math.abs;function Fc(X,ye,nt,bt){var Qt=El(ye,nt);return X._milliseconds+=bt*Qt._milliseconds,X._days+=bt*Qt._days,X._months+=bt*Qt._months,X._bubble()}function Sl(X){return X<0?Math.floor(X):Math.ceil(X)}function $c(X){return 4800*X/146097}function h(X){return 146097*X/4800}function k(X){return function(){return this.as(X)}}var K=k("ms"),de=k("s"),be=k("m"),Ue=k("h"),we=k("d"),Xe=k("w"),gt=k("M"),vt=k("Q"),Jt=k("y");function sr(X){return function(){return this.isValid()?this._data[X]:NaN}}var jr=sr("milliseconds"),Ni=sr("seconds"),Vo=sr("minutes"),$o=sr("hours"),Vs=sr("days"),qs=sr("months"),dl=sr("years");var sa=Math.round,Pa={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ol(X,ye,nt,bt,Qt){return Qt.relativeTime(ye||1,!!nt,X,bt)}var xc=Math.abs;function ic(X){return(X>0)-(X<0)||+X}function gf(){if(!this.isValid())return this.localeData().invalidDate();var bt,Qt,fr,vi,xa,ia,_l,Jl,X=xc(this._milliseconds)/1e3,ye=xc(this._days),nt=xc(this._months),ps=this.asSeconds();return ps?(bt=Lr(X/60),Qt=Lr(bt/60),X%=60,bt%=60,fr=Lr(nt/12),nt%=12,vi=X?X.toFixed(3).replace(/\.?0+$/,""):"",xa=ps<0?"-":"",ia=ic(this._months)!==ic(ps)?"-":"",_l=ic(this._days)!==ic(ps)?"-":"",Jl=ic(this._milliseconds)!==ic(ps)?"-":"",xa+"P"+(fr?ia+fr+"Y":"")+(nt?ia+nt+"M":"")+(ye?_l+ye+"D":"")+(Qt||bt||X?"T":"")+(Qt?Jl+Qt+"H":"")+(bt?Jl+bt+"M":"")+(X?Jl+vi+"S":"")):"P0D"}var Ga=hl.prototype;return Ga.isValid=function(){return this._isValid},Ga.abs=function(){var X=this._data;return this._milliseconds=gu(this._milliseconds),this._days=gu(this._days),this._months=gu(this._months),X.milliseconds=gu(X.milliseconds),X.seconds=gu(X.seconds),X.minutes=gu(X.minutes),X.hours=gu(X.hours),X.months=gu(X.months),X.years=gu(X.years),this},Ga.add=function(X,ye){return Fc(this,X,ye,1)},Ga.subtract=function(X,ye){return Fc(this,X,ye,-1)},Ga.as=function(X){if(!this.isValid())return NaN;var ye,nt,bt=this._milliseconds;if("month"===(X=Hi(X))||"quarter"===X||"year"===X)switch(ye=this._days+bt/864e5,nt=this._months+$c(ye),X){case"month":return nt;case"quarter":return nt/3;case"year":return nt/12}else switch(ye=this._days+Math.round(h(this._months)),X){case"week":return ye/7+bt/6048e5;case"day":return ye+bt/864e5;case"hour":return 24*ye+bt/36e5;case"minute":return 1440*ye+bt/6e4;case"second":return 86400*ye+bt/1e3;case"millisecond":return Math.floor(864e5*ye)+bt;default:throw new Error("Unknown unit "+X)}},Ga.asMilliseconds=K,Ga.asSeconds=de,Ga.asMinutes=be,Ga.asHours=Ue,Ga.asDays=we,Ga.asWeeks=Xe,Ga.asMonths=gt,Ga.asQuarters=vt,Ga.asYears=Jt,Ga.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Vn(this._months/12):NaN},Ga._bubble=function(){var Qt,fr,vi,ps,xa,X=this._milliseconds,ye=this._days,nt=this._months,bt=this._data;return X>=0&&ye>=0&&nt>=0||X<=0&&ye<=0&&nt<=0||(X+=864e5*Sl(h(nt)+ye),ye=0,nt=0),bt.milliseconds=X%1e3,Qt=Lr(X/1e3),bt.seconds=Qt%60,fr=Lr(Qt/60),bt.minutes=fr%60,vi=Lr(fr/60),bt.hours=vi%24,ye+=Lr(vi/24),nt+=xa=Lr($c(ye)),ye-=Sl(h(xa)),ps=Lr(nt/12),nt%=12,bt.days=ye,bt.months=nt,bt.years=ps,this},Ga.clone=function(){return El(this)},Ga.get=function(X){return X=Hi(X),this.isValid()?this[X+"s"]():NaN},Ga.milliseconds=jr,Ga.seconds=Ni,Ga.minutes=Vo,Ga.hours=$o,Ga.days=Vs,Ga.weeks=function(){return Lr(this.days()/7)},Ga.months=qs,Ga.years=dl,Ga.humanize=function(X,ye){if(!this.isValid())return this.localeData().invalidDate();var Qt,fr,nt=!1,bt=Pa;return"object"==typeof X&&(ye=X,X=!1),"boolean"==typeof X&&(nt=X),"object"==typeof ye&&(bt=Object.assign({},Pa,ye),null!=ye.s&&null==ye.ss&&(bt.ss=ye.s-1)),fr=function(X,ye,nt,bt){var Qt=El(X).abs(),fr=sa(Qt.as("s")),vi=sa(Qt.as("m")),ps=sa(Qt.as("h")),xa=sa(Qt.as("d")),ia=sa(Qt.as("M")),_l=sa(Qt.as("w")),Jl=sa(Qt.as("y")),Wc=fr<=nt.ss&&["s",fr]||fr<nt.s&&["ss",fr]||vi<=1&&["m"]||vi<nt.m&&["mm",vi]||ps<=1&&["h"]||ps<nt.h&&["hh",ps]||xa<=1&&["d"]||xa<nt.d&&["dd",xa];return null!=nt.w&&(Wc=Wc||_l<=1&&["w"]||_l<nt.w&&["ww",_l]),(Wc=Wc||ia<=1&&["M"]||ia<nt.M&&["MM",ia]||Jl<=1&&["y"]||["yy",Jl])[2]=ye,Wc[3]=+X>0,Wc[4]=bt,ol.apply(null,Wc)}(this,!nt,bt,Qt=this.localeData()),nt&&(fr=Qt.pastFuture(+this,fr)),Qt.postformat(fr)},Ga.toISOString=gf,Ga.toString=gf,Ga.toJSON=gf,Ga.locale=yi,Ga.localeData=ka,Ga.toIsoString=ce("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",gf),Ga.lang=Go,mt("X",0,0,"unix"),mt("x",0,0,"valueOf"),nr("x",jt),nr("X",/[+-]?\d+(\.\d{1,3})?/),Vi("X",function(X,ye,nt){nt._d=new Date(1e3*parseFloat(X))}),Vi("x",function(X,ye,nt){nt._d=new Date(Vn(X))}),u.version="2.29.3",r=Gs,u.fn=Ji,u.min=function(){return Yo("isBefore",[].slice.call(arguments,0))},u.max=function(){return Yo("isAfter",[].slice.call(arguments,0))},u.now=function(){return Date.now?Date.now():+new Date},u.utc=J,u.unix=function(X){return Gs(1e3*X)},u.months=function(X,ye){return pc(X,ye,"months")},u.isDate=R,u.locale=ct,u.invalid=$,u.duration=El,u.isMoment=me,u.weekdays=function(X,ye,nt){return Xd(X,ye,nt,"weekdays")},u.parseZone=function(){return Gs.apply(null,arguments).parseZone()},u.localeData=De,u.isDuration=Vl,u.monthsShort=function(X,ye){return pc(X,ye,"monthsShort")},u.weekdaysMin=function(X,ye,nt){return Xd(X,ye,nt,"weekdaysMin")},u.defineLocale=Te,u.updateLocale=function(X,ye){if(null!=ye){var nt,bt,Qt=Zl;null!=$s[X]&&null!=$s[X].parentLocale?$s[X].set(Ie($s[X]._config,ye)):(null!=(bt=Nt(X))&&(Qt=bt._config),ye=Ie(Qt,ye),null==bt&&(ye.abbr=X),(nt=new Ve(ye)).parentLocale=$s[X],$s[X]=nt),ct(X)}else null!=$s[X]&&(null!=$s[X].parentLocale?($s[X]=$s[X].parentLocale,X===ct()&&ct(X)):null!=$s[X]&&delete $s[X]);return $s[X]},u.locales=function(){return He($s)},u.weekdaysShort=function(X,ye,nt){return Xd(X,ye,nt,"weekdaysShort")},u.normalizeUnits=Hi,u.relativeTimeRounding=function(X){return void 0===X?sa:"function"==typeof X&&(sa=X,!0)},u.relativeTimeThreshold=function(X,ye){return void 0!==Pa[X]&&(void 0===ye?Pa[X]:(Pa[X]=ye,"s"===X&&(Pa.ss=ye-1),!0))},u.calendarFormat=function(X,ye){var nt=X.diff(ye,"days",!0);return nt<-6?"sameElse":nt<-1?"lastWeek":nt<0?"lastDay":nt<1?"sameDay":nt<2?"nextDay":nt<7?"nextWeek":"sameElse"},u.prototype=Ji,u.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"},u}()},11971:(v,S,i)=>{"use strict";i.d(S,{_:()=>_,w:()=>T});var r=i(74788),u=i(12057),p=function(M,R,F,Z){var ee,J=arguments.length,Q=J<3?R:null===Z?Z=Object.getOwnPropertyDescriptor(R,F):Z;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)Q=Reflect.decorate(M,R,F,Z);else for(var ue=M.length-1;ue>=0;ue--)(ee=M[ue])&&(Q=(J<3?ee(Q):J>3?ee(R,F,Q):ee(R,F))||Q);return J>3&&Q&&Object.defineProperty(R,F,Q),Q},f=function(M,R){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(M,R)},e=function(M,R){return function(F,Z){R(F,Z,M)}},_=function(){function M(R,F,Z){this._el=R,this._ngZone=F,this.platformId=Z,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new r.vpe,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return M.prototype.ngOnInit=function(){!(0,u.NF)(this.platformId)||this._init()},M.prototype.ngOnDestroy=function(){!(0,u.NF)(this.platformId)||(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},M.prototype.ngOnChanges=function(R){!(0,u.NF)(this.platformId)||(R.attachOutsideOnClick||R.exclude||R.emitOnBlur)&&this._init()},M.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map(function(R){return R.trim()})),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},M.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},M.prototype._excludeCheck=function(){if(this.exclude)try{var R=Array.from(document.querySelectorAll(this.exclude));R&&(this._nodesExcluded=R)}catch(F){console.error("[ng-click-outside] Check your exclude selector syntax.",F)}},M.prototype._onClickBody=function(R){!this.clickOutsideEnabled||(this.excludeBeforeClick&&this._excludeCheck(),!this._el.nativeElement.contains(R.target)&&!this._shouldExclude(R.target)&&(this._emit(R),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},M.prototype._onWindowBlur=function(R){var F=this;setTimeout(function(){document.hidden||F._emit(R)})},M.prototype._emit=function(R){var F=this;!this.clickOutsideEnabled||this._ngZone.run(function(){return F.clickOutside.emit(R)})},M.prototype._shouldExclude=function(R){for(var F=0,Z=this._nodesExcluded;F<Z.length;F++)if(Z[F].contains(R))return!0;return!1},M.prototype._initClickOutsideListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){R._events.forEach(function(F){return document.addEventListener(F,R._onClickBody)})})},M.prototype._removeClickOutsideListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){R._events.forEach(function(F){return document.removeEventListener(F,R._onClickBody)})})},M.prototype._initAttachOutsideOnClickListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){R._events.forEach(function(F){return R._el.nativeElement.addEventListener(F,R._initOnClickBody)})})},M.prototype._removeAttachOutsideOnClickListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){R._events.forEach(function(F){return R._el.nativeElement.removeEventListener(F,R._initOnClickBody)})})},M.prototype._initWindowBlurListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){window.addEventListener("blur",R._onWindowBlur)})},M.prototype._removeWindowBlurListener=function(){var R=this;this._ngZone.runOutsideAngular(function(){window.removeEventListener("blur",R._onWindowBlur)})},p([(0,r.IIB)(),f("design:type",Boolean)],M.prototype,"clickOutsideEnabled",void 0),p([(0,r.IIB)(),f("design:type",Boolean)],M.prototype,"attachOutsideOnClick",void 0),p([(0,r.IIB)(),f("design:type",Boolean)],M.prototype,"delayClickOutsideInit",void 0),p([(0,r.IIB)(),f("design:type",Boolean)],M.prototype,"emitOnBlur",void 0),p([(0,r.IIB)(),f("design:type",String)],M.prototype,"exclude",void 0),p([(0,r.IIB)(),f("design:type",Boolean)],M.prototype,"excludeBeforeClick",void 0),p([(0,r.IIB)(),f("design:type",String)],M.prototype,"clickOutsideEvents",void 0),p([(0,r.r_U)(),f("design:type",r.vpe)],M.prototype,"clickOutside",void 0),(M=p([e(2,(0,r.tBr)(r.Lbi)),f("design:paramtypes",[r.SBq,r.R0b,Object])],M)).\u0275fac=function(F){return new(F||M)(r.Y36(r.SBq),r.Y36(r.R0b),r.Y36(r.Lbi))},M.\u0275dir=r.lG2({type:M,selectors:[["","clickOutside",""]],inputs:{clickOutsideEnabled:"clickOutsideEnabled",attachOutsideOnClick:"attachOutsideOnClick",delayClickOutsideInit:"delayClickOutsideInit",emitOnBlur:"emitOnBlur",exclude:"exclude",excludeBeforeClick:"excludeBeforeClick",clickOutsideEvents:"clickOutsideEvents"},outputs:{clickOutside:"clickOutside"},features:[r.TTD]}),M.\u0275prov=r.Yz7({token:M,factory:function(R){return M.\u0275fac(R)}}),M}(),T=function(){function M(){}return M.\u0275fac=function(F){return new(F||M)},M.\u0275mod=r.oAB({type:M}),M.\u0275inj=r.cJS({}),M}()},7194:(v,S,i)=>{"use strict";i.d(S,{jh:()=>me,m9:()=>Oe});var r=i(74788),u=i(26215),p=i(57765);var T=i(6823);const M=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function F(je,Ie){return"rgba("+je.concat(Ie).join(",")+")"}function Z(je,Ie){return Math.floor(Math.random()*(Ie-je+1))+je}function ee(je){return{backgroundColor:je.map(Ie=>F(Ie,.6)),borderColor:je.map(()=>"#fff"),pointBackgroundColor:je.map(Ie=>F(Ie,1)),pointBorderColor:je.map(()=>"#fff"),pointHoverBackgroundColor:je.map(Ie=>F(Ie,1)),pointHoverBorderColor:je.map(Ie=>F(Ie,1))}}function ae(){return[Z(0,255),Z(0,255),Z(0,255)]}function $(je){return M[je]||ae()}function se(je){const Ie=new Array(je);for(let Ve=0;Ve<je;Ve++)Ie[Ve]=M[Ve]||ae();return Ie}let ve=(()=>{class je{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new u.X({})}setColorschemesOptions(Ve){this.pColorschemesOptions=Ve,this.colorschemesOptions.next(Ve)}getColorschemesOptions(){return this.pColorschemesOptions}}return je.\u0275fac=function(Ve){return new(Ve||je)},je.\u0275prov=(0,r.Yz7)({factory:function(){return new je},token:je,providedIn:"root"}),je})();const he={Default:0,Update:1,Refresh:2};he[he.Default]="Default",he[he.Update]="Update",he[he.Refresh]="Refresh";let me=(()=>{class je{constructor(Ve,He){this.element=Ve,this.themeService=He,this.options={},this.chartClick=new r.vpe,this.chartHover=new r.vpe,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(Ve){T.pluginService.register(Ve)}static unregisterPlugin(Ve){T.pluginService.unregister(Ve)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(Ve=>this.themeChanged(Ve)))}themeChanged(Ve){this.refresh()}ngDoCheck(){if(!this.chart)return;let Ve=he.Default;const He=Zt=>{Ve=Zt>Ve?Zt:Ve};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,He(he.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,He(he.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,He(he.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,He(he.Update)),this.datasets&&this.datasets.filter((Zt,st)=>Zt.data!==this.old.datasetsDataObjects[st]).length&&(this.old.datasetsDataObjects=this.datasets.map(Zt=>Zt.data),He(he.Update)),this.datasets&&this.datasets.filter((Zt,st)=>Zt.data.length!==this.old.datasetsDataLengths[st]).length&&(this.old.datasetsDataLengths=this.datasets.map(Zt=>Zt.data.length),He(he.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),He(he.Update)),this.colors&&this.colors.filter((Zt,st)=>!this.colorsEqual(Zt,this.old.colors[st])).length&&(this.old.colors=this.colors.map(Zt=>this.copyColor(Zt)),this.updateColors(),He(he.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,He(he.Update)),this.labels&&this.labels.filter((Zt,st)=>!this.labelsEqual(Zt,this.old.labels[st])).length&&(this.old.labels=this.labels.map(Zt=>this.copyLabel(Zt)),He(he.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,He(he.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,He(he.Refresh)),Ve){case he.Default:break;case he.Update:this.update();break;case he.Refresh:this.refresh()}}copyLabel(Ve){return Array.isArray(Ve)?[...Ve]:Ve}labelsEqual(Ve,He){return Array.isArray(Ve)===Array.isArray(He)&&(Array.isArray(Ve)||Ve===He)&&(!Array.isArray(Ve)||Ve.length===He.length)&&(!Array.isArray(Ve)||0===Ve.filter((Zt,st)=>Zt!==He[st]).length)}copyColor(Ve){return{backgroundColor:Ve.backgroundColor,borderWidth:Ve.borderWidth,borderColor:Ve.borderColor,borderCapStyle:Ve.borderCapStyle,borderDash:Ve.borderDash,borderDashOffset:Ve.borderDashOffset,borderJoinStyle:Ve.borderJoinStyle,pointBorderColor:Ve.pointBorderColor,pointBackgroundColor:Ve.pointBackgroundColor,pointBorderWidth:Ve.pointBorderWidth,pointRadius:Ve.pointRadius,pointHoverRadius:Ve.pointHoverRadius,pointHitRadius:Ve.pointHitRadius,pointHoverBackgroundColor:Ve.pointHoverBackgroundColor,pointHoverBorderColor:Ve.pointHoverBorderColor,pointHoverBorderWidth:Ve.pointHoverBorderWidth,pointStyle:Ve.pointStyle,hoverBackgroundColor:Ve.hoverBackgroundColor,hoverBorderColor:Ve.hoverBorderColor,hoverBorderWidth:Ve.hoverBorderWidth}}colorsEqual(Ve,He){return!Ve==!He&&(!Ve||Ve.backgroundColor===He.backgroundColor&&Ve.borderWidth===He.borderWidth&&Ve.borderColor===He.borderColor&&Ve.borderCapStyle===He.borderCapStyle&&Ve.borderDash===He.borderDash&&Ve.borderDashOffset===He.borderDashOffset&&Ve.borderJoinStyle===He.borderJoinStyle&&Ve.pointBorderColor===He.pointBorderColor&&Ve.pointBackgroundColor===He.pointBackgroundColor&&Ve.pointBorderWidth===He.pointBorderWidth&&Ve.pointRadius===He.pointRadius&&Ve.pointHoverRadius===He.pointHoverRadius&&Ve.pointHitRadius===He.pointHitRadius&&Ve.pointHoverBackgroundColor===He.pointHoverBackgroundColor&&Ve.pointHoverBorderColor===He.pointHoverBorderColor&&Ve.pointHoverBorderWidth===He.pointHoverBorderWidth&&Ve.pointStyle===He.pointStyle&&Ve.hoverBackgroundColor===He.hoverBackgroundColor&&Ve.hoverBorderColor===He.hoverBorderColor&&Ve.hoverBorderWidth===He.hoverBorderWidth)}updateColors(){this.datasets.forEach((Ve,He)=>{this.colors&&this.colors[He]?Object.assign(Ve,this.colors[He]):Object.assign(Ve,function(je,Ie,Ve){if("pie"===je||"doughnut"===je)return ee(se(Ve));if("polarArea"===je)return function(je){return{backgroundColor:je.map(Ie=>F(Ie,.6)),borderColor:je.map(Ie=>F(Ie,1)),hoverBackgroundColor:je.map(Ie=>F(Ie,.8)),hoverBorderColor:je.map(Ie=>F(Ie,1))}}(se(Ve));if("line"===je||"radar"===je)return function(je){return{backgroundColor:F(je,.4),borderColor:F(je,1),pointBackgroundColor:F(je,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:F(je,.8)}}($(Ie));if("bar"===je||"horizontalBar"===je)return function(je){return{backgroundColor:F(je,.6),borderColor:F(je,1),hoverBackgroundColor:F(je,.8),hoverBorderColor:F(je,1)}}($(Ie));if("bubble"===je||"scatter"===je)return ee(se(Ve));throw new Error(`getColors - Unsupported chart type ${je}`)}(this.chartType,He,Ve.data.length),Object.assign({},Ve))})}ngOnChanges(Ve){let He=he.Default;const Zt=st=>{He=st>He?st:He};switch(Ve.hasOwnProperty("data")&&Ve.data.currentValue&&(this.propagateDataToDatasets(Ve.data.currentValue),Zt(he.Update)),Ve.hasOwnProperty("datasets")&&Ve.datasets.currentValue&&(this.propagateDatasetsToData(Ve.datasets.currentValue),Zt(he.Update)),Ve.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=Ve.labels.currentValue),Zt(he.Update)),Ve.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=Ve.legend.currentValue,this.chart.generateLegend()),Zt(he.Update)),Ve.hasOwnProperty("options")&&Zt(he.Refresh),He){case he.Update:this.update();break;case he.Refresh:case he.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(Ve=>Ve.unsubscribe())}update(Ve){if(this.chart)return this.chart.update(Ve)}hideDataset(Ve,He){this.chart.getDatasetMeta(Ve).hidden=He,this.chart.update()}isDatasetHidden(Ve){return this.chart.getDatasetMeta(Ve).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const Ve=this.getDatasets(),He=Object.assign({},this.options);!1===this.legend&&(He.legend={display:!1}),He.hover=He.hover||{},He.hover.onHover||(He.hover.onHover=(st,en)=>{en&&!en.length||this.chartHover.emit({event:st,active:en})}),He.onClick||(He.onClick=(st,en)=>{this.chartClick.emit({event:st,active:en})});const Zt=this.smartMerge(He,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:Ve},plugins:this.plugins,options:Zt}}getChartBuilder(Ve){const He=this.getChartConfiguration();return new T.Chart(Ve,He)}smartMerge(Ve,He,Zt=0){if(0===Zt&&(Ve=function(je){return(0,p.Z)(je,5)}(Ve)),Object.keys(He).forEach(en=>{if(Array.isArray(He[en])){const $t=Ve[en];$t&&$t.forEach(Gt=>{this.smartMerge(Gt,He[en][0],Zt+1)})}else"object"==typeof He[en]?(en in Ve||(Ve[en]={}),this.smartMerge(Ve[en],He[en],Zt+1)):Ve[en]=He[en]}),0===Zt)return Ve}isMultiLineLabel(Ve){return Array.isArray(Ve)}joinLabel(Ve){return Ve?this.isMultiLineLabel(Ve)?Ve.join(" "):Ve:null}propagateDatasetsToData(Ve){this.data=this.datasets.map(He=>He.data),this.chart&&(this.chart.data.datasets=Ve),this.updateColors()}propagateDataToDatasets(Ve){this.isMultiDataSet(Ve)?this.datasets&&Ve.length===this.datasets.length?this.datasets.forEach((He,Zt)=>{He.data=Ve[Zt]}):(this.datasets=Ve.map((He,Zt)=>({data:He,label:this.joinLabel(this.labels[Zt])||`Label ${Zt}`})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0]||(this.datasets[0]={}),this.datasets[0].data=Ve,this.datasets.splice(1)):(this.datasets=[{data:Ve}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(Ve){return Array.isArray(Ve[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error(`ng-charts configuration error, data or datasets field are required to render chart ${this.chartType}`);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}return je.\u0275fac=function(Ve){return new(Ve||je)(r.Y36(r.SBq),r.Y36(ve))},je.\u0275dir=r.lG2({type:je,selectors:[["canvas","baseChart",""]],inputs:{options:"options",data:"data",datasets:"datasets",labels:"labels",chartType:"chartType",colors:"colors",legend:"legend",plugins:"plugins"},outputs:{chartClick:"chartClick",chartHover:"chartHover"},exportAs:["base-chart"],features:[r.TTD]}),je})(),Oe=(()=>{class je{}return je.\u0275fac=function(Ve){return new(Ve||je)},je.\u0275mod=r.oAB({type:je}),je.\u0275inj=r.cJS({imports:[[]]}),je})()},37496:(v,S,i)=>{"use strict";i.d(S,{b:()=>p,i:()=>u});var r=i(74788);let u=(()=>{class f{transform(_,y,T){return T?y.call(T,_):y(_)}}return f.\u0275fac=function(_){return new(_||f)},f.\u0275pipe=r.Yjl({name:"pipeFunction",type:f,pure:!0}),f})(),p=(()=>{class f{}return f.\u0275fac=function(_){return new(_||f)},f.\u0275mod=r.oAB({type:f}),f.\u0275inj=r.cJS({}),f})()},91376:(v,S,i)=>{"use strict";i.d(S,{Rh:()=>en,_W:()=>He});var r=i(74788),u=i(56083),p=i(79765),f=i(91211),e=i(12057);const _=["toast-component",""];function y(mt,Yt){if(1&mt){const Dt=r.EpF();r.TgZ(0,"button",5),r.NdJ("click",function(){return r.CHM(Dt),r.oxw().remove()}),r.TgZ(1,"span",6),r._uU(2,"\xd7"),r.qZA(),r.qZA()}}function T(mt,Yt){if(1&mt&&(r.ynx(0),r._uU(1),r.BQk()),2&mt){const Dt=r.oxw(2);r.xp6(1),r.hij("[",Dt.duplicatesCount+1,"]")}}function M(mt,Yt){if(1&mt&&(r.TgZ(0,"div"),r._uU(1),r.YNc(2,T,2,1,"ng-container",4),r.qZA()),2&mt){const Dt=r.oxw();r.Tol(Dt.options.titleClass),r.uIk("aria-label",Dt.title),r.xp6(1),r.hij(" ",Dt.title," "),r.xp6(1),r.Q6J("ngIf",Dt.duplicatesCount)}}function R(mt,Yt){if(1&mt&&r._UZ(0,"div",7),2&mt){const Dt=r.oxw();r.Tol(Dt.options.messageClass),r.Q6J("innerHTML",Dt.message,r.oJD)}}function F(mt,Yt){if(1&mt&&(r.TgZ(0,"div",8),r._uU(1),r.qZA()),2&mt){const Dt=r.oxw();r.Tol(Dt.options.messageClass),r.uIk("aria-label",Dt.message),r.xp6(1),r.hij(" ",Dt.message," ")}}function Z(mt,Yt){if(1&mt&&(r.TgZ(0,"div"),r._UZ(1,"div",9),r.qZA()),2&mt){const Dt=r.oxw();r.xp6(1),r.Udp("width",Dt.width+"%")}}function J(mt,Yt){if(1&mt){const Dt=r.EpF();r.TgZ(0,"button",5),r.NdJ("click",function(){return r.CHM(Dt),r.oxw().remove()}),r.TgZ(1,"span",6),r._uU(2,"\xd7"),r.qZA(),r.qZA()}}function Q(mt,Yt){if(1&mt&&(r.ynx(0),r._uU(1),r.BQk()),2&mt){const Dt=r.oxw(2);r.xp6(1),r.hij("[",Dt.duplicatesCount+1,"]")}}function ee(mt,Yt){if(1&mt&&(r.TgZ(0,"div"),r._uU(1),r.YNc(2,Q,2,1,"ng-container",4),r.qZA()),2&mt){const Dt=r.oxw();r.Tol(Dt.options.titleClass),r.uIk("aria-label",Dt.title),r.xp6(1),r.hij(" ",Dt.title," "),r.xp6(1),r.Q6J("ngIf",Dt.duplicatesCount)}}function ue(mt,Yt){if(1&mt&&r._UZ(0,"div",7),2&mt){const Dt=r.oxw();r.Tol(Dt.options.messageClass),r.Q6J("innerHTML",Dt.message,r.oJD)}}function ae(mt,Yt){if(1&mt&&(r.TgZ(0,"div",8),r._uU(1),r.qZA()),2&mt){const Dt=r.oxw();r.Tol(Dt.options.messageClass),r.uIk("aria-label",Dt.message),r.xp6(1),r.hij(" ",Dt.message," ")}}function $(mt,Yt){if(1&mt&&(r.TgZ(0,"div"),r._UZ(1,"div",9),r.qZA()),2&mt){const Dt=r.oxw();r.xp6(1),r.Udp("width",Dt.width+"%")}}class oe{constructor(Yt,Dt,zt,Yn,Hr,ci){this.toastId=Yt,this.config=Dt,this.message=zt,this.title=Yn,this.toastType=Hr,this.toastRef=ci,this._onTap=new p.xQ,this._onAction=new p.xQ,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(Yt){this._onAction.next(Yt)}onAction(){return this._onAction.asObservable()}}const he={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,includeTitleDuplicates:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing",payload:null},me=new r.OlP("ToastConfig");class Oe{constructor(Yt,Dt){this.component=Yt,this.injector=Dt}attach(Yt,Dt){return this._attachedHost=Yt,Yt.attach(this,Dt)}detach(){const Yt=this._attachedHost;if(Yt)return this._attachedHost=void 0,Yt.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(Yt){this._attachedHost=Yt}}class dt extends class{attach(Yt,Dt){return this._attachedPortal=Yt,this.attachComponentPortal(Yt,Dt)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(Yt){this._disposeFn=Yt}}{constructor(Yt,Dt,zt){super(),this._hostDomElement=Yt,this._componentFactoryResolver=Dt,this._appRef=zt}attachComponentPortal(Yt,Dt){const zt=this._componentFactoryResolver.resolveComponentFactory(Yt.component);let Yn;return Yn=zt.create(Yt.injector),this._appRef.attachView(Yn.hostView),this.setDisposeFn(()=>{this._appRef.detachView(Yn.hostView),Yn.destroy()}),Dt?this._hostDomElement.insertBefore(this._getComponentRootNode(Yn),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(Yn)),Yn}_getComponentRootNode(Yt){return Yt.hostView.rootNodes[0]}}let ze=(()=>{class mt{constructor(Dt){this._document=Dt}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const Dt=this._document.createElement("div");Dt.classList.add("overlay-container"),this._document.body.appendChild(Dt),this._containerElement=Dt}}return mt.\u0275fac=function(Dt){return new(Dt||mt)(r.LFG(e.K0))},mt.\u0275prov=r.Yz7({factory:function(){return new mt(r.LFG(e.K0))},token:mt,providedIn:"root"}),mt})();class Ye{constructor(Yt){this._portalHost=Yt}attach(Yt,Dt=!0){return this._portalHost.attach(Yt,Dt)}detach(){return this._portalHost.detach()}}let je=(()=>{class mt{constructor(Dt,zt,Yn,Hr){this._overlayContainer=Dt,this._componentFactoryResolver=zt,this._appRef=Yn,this._document=Hr,this._paneElements=new Map}create(Dt,zt){return this._createOverlayRef(this.getPaneElement(Dt,zt))}getPaneElement(Dt="",zt){return this._paneElements.get(zt)||this._paneElements.set(zt,{}),this._paneElements.get(zt)[Dt]||(this._paneElements.get(zt)[Dt]=this._createPaneElement(Dt,zt)),this._paneElements.get(zt)[Dt]}_createPaneElement(Dt,zt){const Yn=this._document.createElement("div");return Yn.id="toast-container",Yn.classList.add(Dt),Yn.classList.add("toast-container"),zt?zt.getContainerElement().appendChild(Yn):this._overlayContainer.getContainerElement().appendChild(Yn),Yn}_createPortalHost(Dt){return new dt(Dt,this._componentFactoryResolver,this._appRef)}_createOverlayRef(Dt){return new Ye(this._createPortalHost(Dt))}}return mt.\u0275fac=function(Dt){return new(Dt||mt)(r.LFG(ze),r.LFG(r._Vd),r.LFG(r.z2F),r.LFG(e.K0))},mt.\u0275prov=r.Yz7({factory:function(){return new mt(r.LFG(ze),r.LFG(r._Vd),r.LFG(r.z2F),r.LFG(e.K0))},token:mt,providedIn:"root"}),mt})();class Ie{constructor(Yt){this._overlayRef=Yt,this.duplicatesCount=0,this._afterClosed=new p.xQ,this._activate=new p.xQ,this._manualClose=new p.xQ,this._resetTimeout=new p.xQ,this._countDuplicate=new p.xQ}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(Yt,Dt){Yt&&this._resetTimeout.next(),Dt&&this._countDuplicate.next(++this.duplicatesCount)}}class Ve{constructor(Yt,Dt){this._toastPackage=Yt,this._parentInjector=Dt}get(Yt,Dt,zt){return Yt===oe?this._toastPackage:this._parentInjector.get(Yt,Dt,zt)}}let He=(()=>{class mt{constructor(Dt,zt,Yn,Hr,ci){this.overlay=zt,this._injector=Yn,this.sanitizer=Hr,this.ngZone=ci,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign(Object.assign({},Dt.default),Dt.config),Dt.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign(Object.assign({},Dt.default.iconClasses),Dt.config.iconClasses))}show(Dt,zt,Yn={},Hr=""){return this._preBuildNotification(Hr,Dt,zt,this.applyConfig(Yn))}success(Dt,zt,Yn={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",Dt,zt,this.applyConfig(Yn))}error(Dt,zt,Yn={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",Dt,zt,this.applyConfig(Yn))}info(Dt,zt,Yn={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",Dt,zt,this.applyConfig(Yn))}warning(Dt,zt,Yn={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",Dt,zt,this.applyConfig(Yn))}clear(Dt){for(const zt of this.toasts)if(void 0!==Dt){if(zt.toastId===Dt)return void zt.toastRef.manualClose()}else zt.toastRef.manualClose()}remove(Dt){const zt=this._findToast(Dt);if(!zt||(zt.activeToast.toastRef.close(),this.toasts.splice(zt.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length))return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const Yn=this.toasts[this.currentlyActive].toastRef;Yn.isInactive()||(this.currentlyActive=this.currentlyActive+1,Yn.activate())}return!0}findDuplicate(Dt="",zt="",Yn,Hr){const{includeTitleDuplicates:ci}=this.toastrConfig;for(const Ir of this.toasts){const wr=ci&&Ir.title===Dt;if((!ci||wr)&&Ir.message===zt)return Ir.toastRef.onDuplicate(Yn,Hr),Ir}return null}applyConfig(Dt={}){return Object.assign(Object.assign({},this.toastrConfig),Dt)}_findToast(Dt){for(let zt=0;zt<this.toasts.length;zt++)if(this.toasts[zt].toastId===Dt)return{index:zt,activeToast:this.toasts[zt]};return null}_preBuildNotification(Dt,zt,Yn,Hr){return Hr.onActivateTick?this.ngZone.run(()=>this._buildNotification(Dt,zt,Yn,Hr)):this._buildNotification(Dt,zt,Yn,Hr)}_buildNotification(Dt,zt,Yn,Hr){if(!Hr.toastComponent)throw new Error("toastComponent required");const ci=this.findDuplicate(Yn,zt,this.toastrConfig.resetTimeoutOnDuplicate&&Hr.timeOut>0,this.toastrConfig.countDuplicates);if((this.toastrConfig.includeTitleDuplicates&&Yn||zt)&&this.toastrConfig.preventDuplicates&&null!==ci)return ci;this.previousToastMessage=zt;let Ir=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(Ir=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const wr=this.overlay.create(Hr.positionClass,this.overlayContainer);this.index=this.index+1;let Qr=zt;zt&&Hr.enableHtml&&(Qr=this.sanitizer.sanitize(r.q3G.HTML,zt));const Kr=new Ie(wr),In=new oe(this.index,Hr,Qr,Yn,Dt,Kr),Hn=new Ve(In,this._injector),Zr=new Oe(Hr.toastComponent,Hn),Ur=wr.attach(Zr,this.toastrConfig.newestOnTop);Kr.componentInstance=Ur.instance;const di={toastId:this.index,title:Yn||"",message:zt||"",toastRef:Kr,onShown:Kr.afterActivate(),onHidden:Kr.afterClosed(),onTap:In.onTap(),onAction:In.onAction(),portal:Ur};return Ir||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{di.toastRef.activate()})),this.toasts.push(di),di}}return mt.\u0275fac=function(Dt){return new(Dt||mt)(r.LFG(me),r.LFG(je),r.LFG(r.zs3),r.LFG(f.H7),r.LFG(r.R0b))},mt.\u0275prov=r.Yz7({factory:function(){return new mt(r.LFG(me),r.LFG(je),r.LFG(r.gxx),r.LFG(f.H7),r.LFG(r.R0b))},token:mt,providedIn:"root"}),mt})(),Zt=(()=>{class mt{constructor(Dt,zt,Yn){this.toastrService=Dt,this.toastPackage=zt,this.ngZone=Yn,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=zt.message,this.title=zt.title,this.options=zt.config,this.originalTimeout=zt.config.timeOut,this.toastClasses=`${zt.toastType} ${zt.config.toastClass}`,this.sub=zt.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=zt.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=zt.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=zt.toastRef.countDuplicate().subscribe(Hr=>{this.duplicatesCount=Hr})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign(Object.assign({},this.state),{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const Dt=(new Date).getTime();this.width=(this.hideTime-Dt)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign(Object.assign({},this.state),{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign(Object.assign({},this.state),{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0===this.options.disableTimeOut||"extendedTimeOut"===this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state.value||(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(Dt,zt){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(Dt),zt)):this.timeout=setTimeout(()=>Dt(),zt)}outsideInterval(Dt,zt){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(Dt),zt)):this.intervalId=setInterval(()=>Dt(),zt)}runInsideAngular(Dt){this.ngZone?this.ngZone.run(()=>Dt()):Dt()}}return mt.\u0275fac=function(Dt){return new(Dt||mt)(r.Y36(He),r.Y36(oe),r.Y36(r.R0b))},mt.\u0275cmp=r.Xpm({type:mt,selectors:[["","toast-component",""]],hostVars:5,hostBindings:function(Dt,zt){1&Dt&&r.NdJ("click",function(){return zt.tapToast()})("mouseenter",function(){return zt.stickAround()})("mouseleave",function(){return zt.delayedHideToast()}),2&Dt&&(r.d8E("@flyInOut",zt.state),r.Tol(zt.toastClasses),r.Udp("display",zt.displayStyle))},attrs:_,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alertdialog","aria-live","polite",3,"innerHTML"],["role","alertdialog","aria-live","polite"],[1,"toast-progress"]],template:function(Dt,zt){1&Dt&&(r.YNc(0,y,3,0,"button",0),r.YNc(1,M,3,5,"div",1),r.YNc(2,R,1,3,"div",2),r.YNc(3,F,2,4,"div",3),r.YNc(4,Z,2,2,"div",4)),2&Dt&&(r.Q6J("ngIf",zt.options.closeButton),r.xp6(1),r.Q6J("ngIf",zt.title),r.xp6(1),r.Q6J("ngIf",zt.message&&zt.options.enableHtml),r.xp6(1),r.Q6J("ngIf",zt.message&&!zt.options.enableHtml),r.xp6(1),r.Q6J("ngIf",zt.options.progressBar))},directives:[e.O5],encapsulation:2,data:{animation:[(0,u.X$)("flyInOut",[(0,u.SB)("inactive",(0,u.oB)({opacity:0})),(0,u.SB)("active",(0,u.oB)({opacity:1})),(0,u.SB)("removed",(0,u.oB)({opacity:0})),(0,u.eR)("inactive => active",(0,u.jt)("{{ easeTime }}ms {{ easing }}")),(0,u.eR)("active => removed",(0,u.jt)("{{ easeTime }}ms {{ easing }}"))])]}}),mt})();const st=Object.assign(Object.assign({},he),{toastComponent:Zt});let en=(()=>{class mt{static forRoot(Dt={}){return{ngModule:mt,providers:[{provide:me,useValue:{default:st,config:Dt}}]}}}return mt.\u0275fac=function(Dt){return new(Dt||mt)},mt.\u0275mod=r.oAB({type:mt}),mt.\u0275inj=r.cJS({imports:[[e.ez]]}),mt})(),Gt=(()=>{class mt{constructor(Dt,zt,Yn){this.toastrService=Dt,this.toastPackage=zt,this.appRef=Yn,this.width=-1,this.toastClasses="",this.state="inactive",this.message=zt.message,this.title=zt.title,this.options=zt.config,this.originalTimeout=zt.config.timeOut,this.toastClasses=`${zt.toastType} ${zt.config.toastClass}`,this.sub=zt.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=zt.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=zt.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=zt.toastRef.countDuplicate().subscribe(Hr=>{this.duplicatesCount=Hr})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!(!0===this.options.disableTimeOut||"timeOut"===this.options.disableTimeOut)&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const Dt=(new Date).getTime();this.width=(this.hideTime-Dt)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0===this.options.disableTimeOut||"extendedTimeOut"===this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state||(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}}return mt.\u0275fac=function(Dt){return new(Dt||mt)(r.Y36(He),r.Y36(oe),r.Y36(r.z2F))},mt.\u0275cmp=r.Xpm({type:mt,selectors:[["","toast-component",""]],hostVars:4,hostBindings:function(Dt,zt){1&Dt&&r.NdJ("click",function(){return zt.tapToast()})("mouseenter",function(){return zt.stickAround()})("mouseleave",function(){return zt.delayedHideToast()}),2&Dt&&(r.Tol(zt.toastClasses),r.Udp("display",zt.displayStyle))},attrs:_,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alert","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert","aria-live","polite",3,"innerHTML"],["role","alert","aria-live","polite"],[1,"toast-progress"]],template:function(Dt,zt){1&Dt&&(r.YNc(0,J,3,0,"button",0),r.YNc(1,ee,3,5,"div",1),r.YNc(2,ue,1,3,"div",2),r.YNc(3,ae,2,4,"div",3),r.YNc(4,$,2,2,"div",4)),2&Dt&&(r.Q6J("ngIf",zt.options.closeButton),r.xp6(1),r.Q6J("ngIf",zt.title),r.xp6(1),r.Q6J("ngIf",zt.message&&zt.options.enableHtml),r.xp6(1),r.Q6J("ngIf",zt.message&&!zt.options.enableHtml),r.xp6(1),r.Q6J("ngIf",zt.options.progressBar))},directives:[e.O5],encapsulation:2}),mt})();Object.assign(Object.assign({},he),{toastComponent:Gt})},18228:v=>{"use strict";var S=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function u(f){if(null==f)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(f)}v.exports=function(){try{if(!Object.assign)return!1;var f=new String("abc");if(f[5]="de","5"===Object.getOwnPropertyNames(f)[0])return!1;for(var e={},_=0;_<10;_++)e["_"+String.fromCharCode(_)]=_;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(M){return e[M]}).join(""))return!1;var T={};return"abcdefghijklmnopqrst".split("").forEach(function(M){T[M]=M}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},T)).join("")}catch(M){return!1}}()?Object.assign:function(f,e){for(var _,T,y=u(f),M=1;M<arguments.length;M++){for(var R in _=Object(arguments[M]))i.call(_,R)&&(y[R]=_[R]);if(S){T=S(_);for(var F=0;F<T.length;F++)r.call(_,T[F])&&(y[T[F]]=_[T[F]])}}return y}},81380:(v,S,i)=>{var r="function"==typeof Map&&Map.prototype,u=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,p=r&&u&&"function"==typeof u.get?u.get:null,f=r&&Map.prototype.forEach,e="function"==typeof Set&&Set.prototype,_=Object.getOwnPropertyDescriptor&&e?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,y=e&&_&&"function"==typeof _.get?_.get:null,T=e&&Set.prototype.forEach,R="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Z="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,Q="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,ee=Boolean.prototype.valueOf,ue=Object.prototype.toString,ae=Function.prototype.toString,$=String.prototype.match,se=String.prototype.slice,ve=String.prototype.replace,oe=String.prototype.toUpperCase,he=String.prototype.toLowerCase,me=RegExp.prototype.test,Oe=Array.prototype.concat,ce=Array.prototype.join,dt=Array.prototype.slice,ze=Math.floor,Ye="function"==typeof BigInt?BigInt.prototype.valueOf:null,je=Object.getOwnPropertySymbols,Ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Ve="function"==typeof Symbol&&"object"==typeof Symbol.iterator,He="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol,1)?Symbol.toStringTag:null,Zt=Object.prototype.propertyIsEnumerable,st=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(gn){return gn.__proto__}:null);function en(gn,En){if(gn===1/0||gn===-1/0||gn!=gn||gn&&gn>-1e3&&gn<1e3||me.call(/e/,En))return En;var mr=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof gn){var Xt=gn<0?-ze(-gn):ze(gn);if(Xt!==gn){var zn=String(Xt),vr=se.call(En,zn.length+1);return ve.call(zn,mr,"$&_")+"."+ve.call(ve.call(vr,/([0-9]{3})/g,"$&_"),/_$/,"")}}return ve.call(En,mr,"$&_")}var $t=i(24654),Gt=$t.custom,Ut=wr(Gt)?Gt:null;function Bt(gn,En,mr){var Xt="double"===(mr.quoteStyle||En)?'"':"'";return Xt+gn+Xt}function mt(gn){return ve.call(String(gn),/"/g,"&quot;")}function Yt(gn){return!("[object Array]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}function zt(gn){return!("[object RegExp]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}function wr(gn){if(Ve)return gn&&"object"==typeof gn&&gn instanceof Symbol;if("symbol"==typeof gn)return!0;if(!gn||"object"!=typeof gn||!Ie)return!1;try{return Ie.call(gn),!0}catch(En){}return!1}v.exports=function gn(En,mr,Xt,zn){var vr=mr||{};if(In(vr,"quoteStyle")&&"single"!==vr.quoteStyle&&"double"!==vr.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(In(vr,"maxStringLength")&&("number"==typeof vr.maxStringLength?vr.maxStringLength<0&&vr.maxStringLength!==1/0:null!==vr.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var si=!In(vr,"customInspect")||vr.customInspect;if("boolean"!=typeof si&&"symbol"!==si)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(In(vr,"indent")&&null!==vr.indent&&"\t"!==vr.indent&&!(parseInt(vr.indent,10)===vr.indent&&vr.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(In(vr,"numericSeparator")&&"boolean"!=typeof vr.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var Ii=vr.numericSeparator;if(void 0===En)return"undefined";if(null===En)return"null";if("boolean"==typeof En)return En?"true":"false";if("string"==typeof En)return Jn(En,vr);if("number"==typeof En){if(0===En)return 1/0/En>0?"0":"-0";var no=String(En);return Ii?en(En,no):no}if("bigint"==typeof En){var so=String(En)+"n";return Ii?en(En,so):so}var Ze=void 0===vr.depth?5:vr.depth;if(void 0===Xt&&(Xt=0),Xt>=Ze&&Ze>0&&"object"==typeof En)return Yt(En)?"[Array]":"[Object]";var Dr=function(gn,En){var mr;if("\t"===gn.indent)mr="\t";else{if(!("number"==typeof gn.indent&&gn.indent>0))return null;mr=ce.call(Array(gn.indent+1)," ")}return{base:mr,prev:ce.call(Array(En+1),mr)}}(vr,Xt);if(void 0===zn)zn=[];else if(Ur(zn,En)>=0)return"[Circular]";function jt(Zn,cr,yr){if(cr&&(zn=dt.call(zn)).push(cr),yr){var rr={depth:vr.depth};return In(vr,"quoteStyle")&&(rr.quoteStyle=vr.quoteStyle),gn(Zn,rr,Xt+1,zn)}return gn(Zn,vr,Xt+1,zn)}if("function"==typeof En&&!zt(En)){var xt=function(gn){if(gn.name)return gn.name;var En=$.call(ae.call(gn),/^function\s*([\w$]+)/);return En?En[1]:null}(En),mn=Nr(En,jt);return"[Function"+(xt?": "+xt:" (anonymous)")+"]"+(mn.length>0?" { "+ce.call(mn,", ")+" }":"")}if(wr(En)){var Wn=Ve?ve.call(String(En),/^(Symbol\(.*\))_[^)]*$/,"$1"):Ie.call(En);return"object"!=typeof En||Ve?Wn:Lr(Wn)}if(function(gn){return!(!gn||"object"!=typeof gn)&&("undefined"!=typeof HTMLElement&&gn instanceof HTMLElement||"string"==typeof gn.nodeName&&"function"==typeof gn.getAttribute)}(En)){for(var kn="<"+he.call(String(En.nodeName)),wn=En.attributes||[],nr=0;nr<wn.length;nr++)kn+=" "+wn[nr].name+"="+Bt(mt(wn[nr].value),"double",vr);return kn+=">",En.childNodes&&En.childNodes.length&&(kn+="..."),kn+"</"+he.call(String(En.nodeName))+">"}if(Yt(En)){if(0===En.length)return"[]";var Gi=Nr(En,jt);return Dr&&!function(gn){for(var En=0;En<gn.length;En++)if(Ur(gn[En],"\n")>=0)return!1;return!0}(Gi)?"["+Tr(Gi,Dr)+"]":"[ "+ce.call(Gi,", ")+" ]"}if(function(gn){return!("[object Error]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}(En)){var po=Nr(En,jt);return"cause"in Error.prototype||!("cause"in En)||Zt.call(En,"cause")?0===po.length?"["+String(En)+"]":"{ ["+String(En)+"] "+ce.call(po,", ")+" }":"{ ["+String(En)+"] "+ce.call(Oe.call("[cause]: "+jt(En.cause),po),", ")+" }"}if("object"==typeof En&&si){if(Ut&&"function"==typeof En[Ut]&&$t)return $t(En,{depth:Ze-Xt});if("symbol"!==si&&"function"==typeof En.inspect)return En.inspect()}if(function(gn){if(!p||!gn||"object"!=typeof gn)return!1;try{p.call(gn);try{y.call(gn)}catch(En){return!0}return gn instanceof Map}catch(En){}return!1}(En)){var yo=[];return f.call(En,function(Zn,cr){yo.push(jt(cr,En,!0)+" => "+jt(Zn,En))}),zr("Map",p.call(En),yo,Dr)}if(function(gn){if(!y||!gn||"object"!=typeof gn)return!1;try{y.call(gn);try{p.call(gn)}catch(En){return!0}return gn instanceof Set}catch(En){}return!1}(En)){var Mo=[];return T.call(En,function(Zn){Mo.push(jt(Zn,En))}),zr("Set",y.call(En),Mo,Dr)}if(function(gn){if(!R||!gn||"object"!=typeof gn)return!1;try{R.call(gn,R);try{Z.call(gn,Z)}catch(En){return!0}return gn instanceof WeakMap}catch(En){}return!1}(En))return Vn("WeakMap");if(function(gn){if(!Z||!gn||"object"!=typeof gn)return!1;try{Z.call(gn,Z);try{R.call(gn,R)}catch(En){return!0}return gn instanceof WeakSet}catch(En){}return!1}(En))return Vn("WeakSet");if(function(gn){if(!Q||!gn||"object"!=typeof gn)return!1;try{return Q.call(gn),!0}catch(En){}return!1}(En))return Vn("WeakRef");if(function(gn){return!("[object Number]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}(En))return Lr(jt(Number(En)));if(function(gn){if(!gn||"object"!=typeof gn||!Ye)return!1;try{return Ye.call(gn),!0}catch(En){}return!1}(En))return Lr(jt(Ye.call(En)));if(function(gn){return!("[object Boolean]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}(En))return Lr(ee.call(En));if(function(gn){return!("[object String]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}(En))return Lr(jt(String(En)));if(!function(gn){return!("[object Date]"!==Hn(gn)||He&&"object"==typeof gn&&He in gn)}(En)&&!zt(En)){var Vi=Nr(En,jt),cs=st?st(En)===Object.prototype:En instanceof Object||En.constructor===Object,zo=En instanceof Object?"":"null prototype",So=!cs&&He&&Object(En)===En&&He in En?se.call(Hn(En),8,-1):zo?"Object":"",ai=(cs||"function"!=typeof En.constructor?"":En.constructor.name?En.constructor.name+" ":"")+(So||zo?"["+ce.call(Oe.call([],So||[],zo||[]),": ")+"] ":"");return 0===Vi.length?ai+"{}":Dr?ai+"{"+Tr(Vi,Dr)+"}":ai+"{ "+ce.call(Vi,", ")+" }"}return String(En)};var Kr=Object.prototype.hasOwnProperty||function(gn){return gn in this};function In(gn,En){return Kr.call(gn,En)}function Hn(gn){return ue.call(gn)}function Ur(gn,En){if(gn.indexOf)return gn.indexOf(En);for(var mr=0,Xt=gn.length;mr<Xt;mr++)if(gn[mr]===En)return mr;return-1}function Jn(gn,En){if(gn.length>En.maxStringLength){var mr=gn.length-En.maxStringLength,Xt="... "+mr+" more character"+(mr>1?"s":"");return Jn(se.call(gn,0,En.maxStringLength),En)+Xt}return Bt(ve.call(ve.call(gn,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,ir),"single",En)}function ir(gn){var En=gn.charCodeAt(0),mr={8:"b",9:"t",10:"n",12:"f",13:"r"}[En];return mr?"\\"+mr:"\\x"+(En<16?"0":"")+oe.call(En.toString(16))}function Lr(gn){return"Object("+gn+")"}function Vn(gn){return gn+" { ? }"}function zr(gn,En,mr,Xt){return gn+" ("+En+") {"+(Xt?Tr(mr,Xt):ce.call(mr,", "))+"}"}function Tr(gn,En){if(0===gn.length)return"";var mr="\n"+En.prev+En.base;return mr+ce.call(gn,","+mr)+"\n"+En.prev}function Nr(gn,En){var mr=Yt(gn),Xt=[];if(mr){Xt.length=gn.length;for(var zn=0;zn<gn.length;zn++)Xt[zn]=In(gn,zn)?En(gn[zn],gn):""}var si,vr="function"==typeof je?je(gn):[];if(Ve){si={};for(var Ii=0;Ii<vr.length;Ii++)si["$"+vr[Ii]]=vr[Ii]}for(var no in gn)!In(gn,no)||mr&&String(Number(no))===no&&no<gn.length||Ve&&si["$"+no]instanceof Symbol||(me.call(/[^\w$]/,no)?Xt.push(En(no,gn)+": "+En(gn[no],gn)):Xt.push(no+": "+En(gn[no],gn)));if("function"==typeof je)for(var so=0;so<vr.length;so++)Zt.call(gn,vr[so])&&Xt.push("["+En(vr[so])+"]: "+En(gn[vr[so]],gn));return Xt}},25119:(v,S,i)=>{"use strict";var r=i(88411);function u(){}function p(){}p.resetWarningCache=u,v.exports=function(){function f(y,T,M,R,F,Z){if(Z!==r){var J=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw J.name="Invariant Violation",J}}function e(){return f}f.isRequired=f;var _={array:f,bigint:f,bool:f,func:f,number:f,object:f,string:f,symbol:f,any:f,arrayOf:e,element:f,elementType:f,instanceOf:e,node:f,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:p,resetWarningCache:u};return _.PropTypes=_,_}},76874:(v,S,i)=>{v.exports=i(25119)()},88411:v=>{"use strict";v.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},87504:function(v,S,i){var r;v=i.nmd(v),function(u){"object"==typeof global&&global;var _,y=2147483647,T=36,ue=/^xn--/,ae=/[^\x20-\x7E]/,$=/[\x2E\u3002\uFF0E\uFF61]/g,se={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},oe=Math.floor,he=String.fromCharCode;function Oe($t){throw RangeError(se[$t])}function ce($t,Gt){for(var Ut=$t.length,Bt=[];Ut--;)Bt[Ut]=Gt($t[Ut]);return Bt}function dt($t,Gt){var Ut=$t.split("@"),Bt="";return Ut.length>1&&(Bt=Ut[0]+"@",$t=Ut[1]),Bt+ce(($t=$t.replace($,".")).split("."),Gt).join(".")}function ze($t){for(var mt,Yt,Gt=[],Ut=0,Bt=$t.length;Ut<Bt;)(mt=$t.charCodeAt(Ut++))>=55296&&mt<=56319&&Ut<Bt?56320==(64512&(Yt=$t.charCodeAt(Ut++)))?Gt.push(((1023&mt)<<10)+(1023&Yt)+65536):(Gt.push(mt),Ut--):Gt.push(mt);return Gt}function Ye($t){return ce($t,function(Gt){var Ut="";return Gt>65535&&(Ut+=he((Gt-=65536)>>>10&1023|55296),Gt=56320|1023&Gt),Ut+he(Gt)}).join("")}function je($t){return $t-48<10?$t-22:$t-65<26?$t-65:$t-97<26?$t-97:T}function Ie($t,Gt){return $t+22+75*($t<26)-((0!=Gt)<<5)}function Ve($t,Gt,Ut){var Bt=0;for($t=Ut?oe($t/700):$t>>1,$t+=oe($t/Gt);$t>455;Bt+=T)$t=oe($t/35);return oe(Bt+36*$t/($t+38))}function He($t){var Bt,zt,Yn,Hr,ci,Ir,wr,Qr,Kr,In,Gt=[],Ut=$t.length,mt=0,Yt=128,Dt=72;for((zt=$t.lastIndexOf("-"))<0&&(zt=0),Yn=0;Yn<zt;++Yn)$t.charCodeAt(Yn)>=128&&Oe("not-basic"),Gt.push($t.charCodeAt(Yn));for(Hr=zt>0?zt+1:0;Hr<Ut;){for(ci=mt,Ir=1,wr=T;Hr>=Ut&&Oe("invalid-input"),((Qr=je($t.charCodeAt(Hr++)))>=T||Qr>oe((y-mt)/Ir))&&Oe("overflow"),mt+=Qr*Ir,!(Qr<(Kr=wr<=Dt?1:wr>=Dt+26?26:wr-Dt));wr+=T)Ir>oe(y/(In=T-Kr))&&Oe("overflow"),Ir*=In;Dt=Ve(mt-ci,Bt=Gt.length+1,0==ci),oe(mt/Bt)>y-Yt&&Oe("overflow"),Yt+=oe(mt/Bt),mt%=Bt,Gt.splice(mt++,0,Yt)}return Ye(Gt)}function Zt($t){var Gt,Ut,Bt,mt,Yt,Dt,zt,Yn,Hr,ci,Ir,Qr,Kr,In,Hn,wr=[];for(Qr=($t=ze($t)).length,Gt=128,Ut=0,Yt=72,Dt=0;Dt<Qr;++Dt)(Ir=$t[Dt])<128&&wr.push(he(Ir));for(Bt=mt=wr.length,mt&&wr.push("-");Bt<Qr;){for(zt=y,Dt=0;Dt<Qr;++Dt)(Ir=$t[Dt])>=Gt&&Ir<zt&&(zt=Ir);for(zt-Gt>oe((y-Ut)/(Kr=Bt+1))&&Oe("overflow"),Ut+=(zt-Gt)*Kr,Gt=zt,Dt=0;Dt<Qr;++Dt)if((Ir=$t[Dt])<Gt&&++Ut>y&&Oe("overflow"),Ir==Gt){for(Yn=Ut,Hr=T;!(Yn<(ci=Hr<=Yt?1:Hr>=Yt+26?26:Hr-Yt));Hr+=T)wr.push(he(Ie(ci+(Hn=Yn-ci)%(In=T-ci),0))),Yn=oe(Hn/In);wr.push(he(Ie(Yn,0))),Yt=Ve(Ut,Kr,Bt==mt),Ut=0,++Bt}++Ut,++Gt}return wr.join("")}_={version:"1.3.2",ucs2:{decode:ze,encode:Ye},decode:He,encode:Zt,toASCII:function($t){return dt($t,function(Gt){return ae.test(Gt)?"xn--"+Zt(Gt):Gt})},toUnicode:function($t){return dt($t,function(Gt){return ue.test(Gt)?He(Gt.slice(4).toLowerCase()):Gt})}},void 0!==(r=function(){return _}.call(S,i,S,v))&&(v.exports=r)}()},8157:v=>{"use strict";var S=String.prototype.replace,i=/%20/g;v.exports={default:"RFC3986",formatters:{RFC1738:function(u){return S.call(u,i,"+")},RFC3986:function(u){return String(u)}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},59009:(v,S,i)=>{"use strict";var r=i(75672),u=i(19913),p=i(8157);v.exports={formats:p,parse:u,stringify:r}},19913:(v,S,i)=>{"use strict";var r=i(16835),u=Object.prototype.hasOwnProperty,p=Array.isArray,f={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},_=function(J,Q){return J&&"string"==typeof J&&Q.comma&&J.indexOf(",")>-1?J.split(","):J},F=function(Q,ee,ue,ae){if(Q){var $=ue.allowDots?Q.replace(/\.([^.[]+)/g,"[$1]"):Q,ve=/(\[[^[\]]*])/g,oe=ue.depth>0&&/(\[[^[\]]*])/.exec($),he=oe?$.slice(0,oe.index):$,me=[];if(he){if(!ue.plainObjects&&u.call(Object.prototype,he)&&!ue.allowPrototypes)return;me.push(he)}for(var Oe=0;ue.depth>0&&null!==(oe=ve.exec($))&&Oe<ue.depth;){if(Oe+=1,!ue.plainObjects&&u.call(Object.prototype,oe[1].slice(1,-1))&&!ue.allowPrototypes)return;me.push(oe[1])}return oe&&me.push("["+$.slice(oe.index)+"]"),function(J,Q,ee,ue){for(var ae=ue?Q:_(Q,ee),$=J.length-1;$>=0;--$){var se,ve=J[$];if("[]"===ve&&ee.parseArrays)se=[].concat(ae);else{se=ee.plainObjects?Object.create(null):{};var oe="["===ve.charAt(0)&&"]"===ve.charAt(ve.length-1)?ve.slice(1,-1):ve,he=parseInt(oe,10);ee.parseArrays||""!==oe?!isNaN(he)&&ve!==oe&&String(he)===oe&&he>=0&&ee.parseArrays&&he<=ee.arrayLimit?(se=[])[he]=ae:"__proto__"!==oe&&(se[oe]=ae):se={0:ae}}ae=se}return ae}(me,ee,ue,ae)}};v.exports=function(J,Q){var ee=function(Q){if(!Q)return f;if(null!=Q.decoder&&"function"!=typeof Q.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==Q.charset&&"utf-8"!==Q.charset&&"iso-8859-1"!==Q.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");return{allowDots:void 0===Q.allowDots?f.allowDots:!!Q.allowDots,allowPrototypes:"boolean"==typeof Q.allowPrototypes?Q.allowPrototypes:f.allowPrototypes,allowSparse:"boolean"==typeof Q.allowSparse?Q.allowSparse:f.allowSparse,arrayLimit:"number"==typeof Q.arrayLimit?Q.arrayLimit:f.arrayLimit,charset:void 0===Q.charset?f.charset:Q.charset,charsetSentinel:"boolean"==typeof Q.charsetSentinel?Q.charsetSentinel:f.charsetSentinel,comma:"boolean"==typeof Q.comma?Q.comma:f.comma,decoder:"function"==typeof Q.decoder?Q.decoder:f.decoder,delimiter:"string"==typeof Q.delimiter||r.isRegExp(Q.delimiter)?Q.delimiter:f.delimiter,depth:"number"==typeof Q.depth||!1===Q.depth?+Q.depth:f.depth,ignoreQueryPrefix:!0===Q.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof Q.interpretNumericEntities?Q.interpretNumericEntities:f.interpretNumericEntities,parameterLimit:"number"==typeof Q.parameterLimit?Q.parameterLimit:f.parameterLimit,parseArrays:!1!==Q.parseArrays,plainObjects:"boolean"==typeof Q.plainObjects?Q.plainObjects:f.plainObjects,strictNullHandling:"boolean"==typeof Q.strictNullHandling?Q.strictNullHandling:f.strictNullHandling}}(Q);if(""===J||null==J)return ee.plainObjects?Object.create(null):{};for(var ue="string"==typeof J?function(Q,ee){var oe,ue={},se=(ee.ignoreQueryPrefix?Q.replace(/^\?/,""):Q).split(ee.delimiter,ee.parameterLimit===1/0?void 0:ee.parameterLimit),ve=-1,he=ee.charset;if(ee.charsetSentinel)for(oe=0;oe<se.length;++oe)0===se[oe].indexOf("utf8=")&&("utf8=%E2%9C%93"===se[oe]?he="utf-8":"utf8=%26%2310003%3B"===se[oe]&&(he="iso-8859-1"),ve=oe,oe=se.length);for(oe=0;oe<se.length;++oe)if(oe!==ve){var dt,ze,me=se[oe],Oe=me.indexOf("]="),ce=-1===Oe?me.indexOf("="):Oe+1;-1===ce?(dt=ee.decoder(me,f.decoder,he,"key"),ze=ee.strictNullHandling?null:""):(dt=ee.decoder(me.slice(0,ce),f.decoder,he,"key"),ze=r.maybeMap(_(me.slice(ce+1),ee),function(Ye){return ee.decoder(Ye,f.decoder,he,"value")})),ze&&ee.interpretNumericEntities&&"iso-8859-1"===he&&(ze=ze.replace(/&#(\d+);/g,function(Q,ee){return String.fromCharCode(parseInt(ee,10))})),me.indexOf("[]=")>-1&&(ze=p(ze)?[ze]:ze),ue[dt]=u.call(ue,dt)?r.combine(ue[dt],ze):ze}return ue}(J,ee):J,ae=ee.plainObjects?Object.create(null):{},$=Object.keys(ue),se=0;se<$.length;++se){var ve=$[se],oe=F(ve,ue[ve],ee,"string"==typeof J);ae=r.merge(ae,oe,ee)}return!0===ee.allowSparse?ae:r.compact(ae)}},75672:(v,S,i)=>{"use strict";var r=i(11144),u=i(16835),p=i(8157),f=Object.prototype.hasOwnProperty,e={brackets:function($){return $+"[]"},comma:"comma",indices:function($,se){return $+"["+se+"]"},repeat:function($){return $}},_=Array.isArray,y=String.prototype.split,T=Array.prototype.push,M=function(ae,$){T.apply(ae,_($)?$:[$])},R=Date.prototype.toISOString,F=p.default,Z={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:u.encode,encodeValuesOnly:!1,format:F,formatter:p.formatters[F],indices:!1,serializeDate:function($){return R.call($)},skipNulls:!1,strictNullHandling:!1},Q={},ee=function ae($,se,ve,oe,he,me,Oe,ce,dt,ze,Ye,je,Ie,Ve,He,Zt){for(var st=$,en=Zt,$t=0,Gt=!1;void 0!==(en=en.get(Q))&&!Gt;){var Ut=en.get($);if($t+=1,void 0!==Ut){if(Ut===$t)throw new RangeError("Cyclic object value");Gt=!0}void 0===en.get(Q)&&($t=0)}if("function"==typeof ce?st=ce(se,st):st instanceof Date?st=Ye(st):"comma"===ve&&_(st)&&(st=u.maybeMap(st,function(Hn){return Hn instanceof Date?Ye(Hn):Hn})),null===st){if(he)return Oe&&!Ve?Oe(se,Z.encoder,He,"key",je):se;st=""}if(function($){return"string"==typeof $||"number"==typeof $||"boolean"==typeof $||"symbol"==typeof $||"bigint"==typeof $}(st)||u.isBuffer(st)){if(Oe){var Bt=Ve?se:Oe(se,Z.encoder,He,"key",je);if("comma"===ve&&Ve){for(var mt=y.call(String(st),","),Yt="",Dt=0;Dt<mt.length;++Dt)Yt+=(0===Dt?"":",")+Ie(Oe(mt[Dt],Z.encoder,He,"value",je));return[Ie(Bt)+(oe&&_(st)&&1===mt.length?"[]":"")+"="+Yt]}return[Ie(Bt)+"="+Ie(Oe(st,Z.encoder,He,"value",je))]}return[Ie(se)+"="+Ie(String(st))]}var Yn,zt=[];if(void 0===st)return zt;if("comma"===ve&&_(st))Yn=[{value:st.length>0?st.join(",")||null:void 0}];else if(_(ce))Yn=ce;else{var Hr=Object.keys(st);Yn=dt?Hr.sort(dt):Hr}for(var ci=oe&&_(st)&&1===st.length?se+"[]":se,Ir=0;Ir<Yn.length;++Ir){var wr=Yn[Ir],Qr="object"==typeof wr&&void 0!==wr.value?wr.value:st[wr];if(!me||null!==Qr){var Kr=_(st)?"function"==typeof ve?ve(ci,wr):ci:ci+(ze?"."+wr:"["+wr+"]");Zt.set($,$t);var In=r();In.set(Q,Zt),M(zt,ae(Qr,Kr,ve,oe,he,me,Oe,ce,dt,ze,Ye,je,Ie,Ve,He,In))}}return zt};v.exports=function(ae,$){var oe,se=ae,ve=function($){if(!$)return Z;if(null!=$.encoder&&"function"!=typeof $.encoder)throw new TypeError("Encoder has to be a function.");var se=$.charset||Z.charset;if(void 0!==$.charset&&"utf-8"!==$.charset&&"iso-8859-1"!==$.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var ve=p.default;if(void 0!==$.format){if(!f.call(p.formatters,$.format))throw new TypeError("Unknown format option provided.");ve=$.format}var oe=p.formatters[ve],he=Z.filter;return("function"==typeof $.filter||_($.filter))&&(he=$.filter),{addQueryPrefix:"boolean"==typeof $.addQueryPrefix?$.addQueryPrefix:Z.addQueryPrefix,allowDots:void 0===$.allowDots?Z.allowDots:!!$.allowDots,charset:se,charsetSentinel:"boolean"==typeof $.charsetSentinel?$.charsetSentinel:Z.charsetSentinel,delimiter:void 0===$.delimiter?Z.delimiter:$.delimiter,encode:"boolean"==typeof $.encode?$.encode:Z.encode,encoder:"function"==typeof $.encoder?$.encoder:Z.encoder,encodeValuesOnly:"boolean"==typeof $.encodeValuesOnly?$.encodeValuesOnly:Z.encodeValuesOnly,filter:he,format:ve,formatter:oe,serializeDate:"function"==typeof $.serializeDate?$.serializeDate:Z.serializeDate,skipNulls:"boolean"==typeof $.skipNulls?$.skipNulls:Z.skipNulls,sort:"function"==typeof $.sort?$.sort:null,strictNullHandling:"boolean"==typeof $.strictNullHandling?$.strictNullHandling:Z.strictNullHandling}}($);"function"==typeof ve.filter?se=(0,ve.filter)("",se):_(ve.filter)&&(oe=ve.filter);var me=[];if("object"!=typeof se||null===se)return"";var ce=e[$&&$.arrayFormat in e?$.arrayFormat:$&&"indices"in $?$.indices?"indices":"repeat":"indices"];if($&&"commaRoundTrip"in $&&"boolean"!=typeof $.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var dt="comma"===ce&&$&&$.commaRoundTrip;oe||(oe=Object.keys(se)),ve.sort&&oe.sort(ve.sort);for(var ze=r(),Ye=0;Ye<oe.length;++Ye){var je=oe[Ye];ve.skipNulls&&null===se[je]||M(me,ee(se[je],je,ce,dt,ve.strictNullHandling,ve.skipNulls,ve.encode?ve.encoder:null,ve.filter,ve.sort,ve.allowDots,ve.serializeDate,ve.format,ve.formatter,ve.encodeValuesOnly,ve.charset,ze))}var Ie=me.join(ve.delimiter),Ve=!0===ve.addQueryPrefix?"?":"";return ve.charsetSentinel&&(Ve+="iso-8859-1"===ve.charset?"utf8=%26%2310003%3B&":"utf8=%E2%9C%93&"),Ie.length>0?Ve+Ie:""}},16835:(v,S,i)=>{"use strict";var r=i(8157),u=Object.prototype.hasOwnProperty,p=Array.isArray,f=function(){for(var ue=[],ae=0;ae<256;++ae)ue.push("%"+((ae<16?"0":"")+ae.toString(16)).toUpperCase());return ue}(),_=function(ae,$){for(var se=$&&$.plainObjects?Object.create(null):{},ve=0;ve<ae.length;++ve)void 0!==ae[ve]&&(se[ve]=ae[ve]);return se};v.exports={arrayToObject:_,assign:function(ae,$){return Object.keys($).reduce(function(se,ve){return se[ve]=$[ve],se},ae)},combine:function(ae,$){return[].concat(ae,$)},compact:function(ae){for(var $=[{obj:{o:ae},prop:"o"}],se=[],ve=0;ve<$.length;++ve)for(var oe=$[ve],he=oe.obj[oe.prop],me=Object.keys(he),Oe=0;Oe<me.length;++Oe){var ce=me[Oe],dt=he[ce];"object"==typeof dt&&null!==dt&&-1===se.indexOf(dt)&&($.push({obj:he,prop:ce}),se.push(dt))}return function(ae){for(;ae.length>1;){var $=ae.pop(),se=$.obj[$.prop];if(p(se)){for(var ve=[],oe=0;oe<se.length;++oe)void 0!==se[oe]&&ve.push(se[oe]);$.obj[$.prop]=ve}}}($),ae},decode:function(ue,ae,$){var se=ue.replace(/\+/g," ");if("iso-8859-1"===$)return se.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(se)}catch(ve){return se}},encode:function(ae,$,se,ve,oe){if(0===ae.length)return ae;var he=ae;if("symbol"==typeof ae?he=Symbol.prototype.toString.call(ae):"string"!=typeof ae&&(he=String(ae)),"iso-8859-1"===se)return escape(he).replace(/%u[0-9a-f]{4}/gi,function(dt){return"%26%23"+parseInt(dt.slice(2),16)+"%3B"});for(var me="",Oe=0;Oe<he.length;++Oe){var ce=he.charCodeAt(Oe);45===ce||46===ce||95===ce||126===ce||ce>=48&&ce<=57||ce>=65&&ce<=90||ce>=97&&ce<=122||oe===r.RFC1738&&(40===ce||41===ce)?me+=he.charAt(Oe):ce<128?me+=f[ce]:ce<2048?me+=f[192|ce>>6]+f[128|63&ce]:ce<55296||ce>=57344?me+=f[224|ce>>12]+f[128|ce>>6&63]+f[128|63&ce]:(ce=65536+((1023&ce)<<10|1023&he.charCodeAt(Oe+=1)),me+=f[240|ce>>18]+f[128|ce>>12&63]+f[128|ce>>6&63]+f[128|63&ce])}return me},isBuffer:function(ae){return!(!ae||"object"!=typeof ae||!(ae.constructor&&ae.constructor.isBuffer&&ae.constructor.isBuffer(ae)))},isRegExp:function(ae){return"[object RegExp]"===Object.prototype.toString.call(ae)},maybeMap:function(ae,$){if(p(ae)){for(var se=[],ve=0;ve<ae.length;ve+=1)se.push($(ae[ve]));return se}return $(ae)},merge:function ue(ae,$,se){if(!$)return ae;if("object"!=typeof $){if(p(ae))ae.push($);else{if(!ae||"object"!=typeof ae)return[ae,$];(se&&(se.plainObjects||se.allowPrototypes)||!u.call(Object.prototype,$))&&(ae[$]=!0)}return ae}if(!ae||"object"!=typeof ae)return[ae].concat($);var ve=ae;return p(ae)&&!p($)&&(ve=_(ae,se)),p(ae)&&p($)?($.forEach(function(oe,he){if(u.call(ae,he)){var me=ae[he];me&&"object"==typeof me&&oe&&"object"==typeof oe?ae[he]=ue(me,oe,se):ae.push(oe)}else ae[he]=oe}),ae):Object.keys($).reduce(function(oe,he){var me=$[he];return oe[he]=u.call(oe,he)?ue(oe[he],me,se):me,oe},ve)}}},98216:v=>{"use strict";function S(i,r){return Object.prototype.hasOwnProperty.call(i,r)}v.exports=function(i,r,u,p){u=u||"=";var f={};if("string"!=typeof i||0===i.length)return f;var e=/\+/g;i=i.split(r=r||"&");var _=1e3;p&&"number"==typeof p.maxKeys&&(_=p.maxKeys);var y=i.length;_>0&&y>_&&(y=_);for(var T=0;T<y;++T){var F,Z,J,Q,M=i[T].replace(e,"%20"),R=M.indexOf(u);R>=0?(F=M.substr(0,R),Z=M.substr(R+1)):(F=M,Z=""),J=decodeURIComponent(F),Q=decodeURIComponent(Z),S(f,J)?Array.isArray(f[J])?f[J].push(Q):f[J]=[f[J],Q]:f[J]=Q}return f}},36173:v=>{"use strict";var S=function(i){switch(typeof i){case"string":return i;case"boolean":return i?"true":"false";case"number":return isFinite(i)?i:"";default:return""}};v.exports=function(i,r,u,p){return r=r||"&",u=u||"=",null===i&&(i=void 0),"object"==typeof i?Object.keys(i).map(function(f){var e=encodeURIComponent(S(f))+u;return Array.isArray(i[f])?i[f].map(function(_){return e+encodeURIComponent(S(_))}).join(r):e+encodeURIComponent(S(i[f]))}).join(r):p?encodeURIComponent(S(p))+u+encodeURIComponent(S(i)):""}},36284:(v,S,i)=>{"use strict";S.decode=S.parse=i(98216),S.encode=S.stringify=i(36173)},76959:(v,S)=>{"use strict";var i=Object.prototype.hasOwnProperty;function u(_){try{return decodeURIComponent(_.replace(/\+/g," "))}catch(y){return null}}function p(_){try{return encodeURIComponent(_)}catch(y){return null}}S.stringify=function(_,y){y=y||"";var M,R,T=[];for(R in"string"!=typeof y&&(y="?"),_)if(i.call(_,R)){if(!(M=_[R])&&(null==M||isNaN(M))&&(M=""),R=p(R),M=p(M),null===R||null===M)continue;T.push(R+"="+M)}return T.length?y+T.join("&"):""},S.parse=function(_){for(var M,y=/([^=?#&]+)=?([^&]*)/g,T={};M=y.exec(_);){var R=u(M[1]),F=u(M[2]);null===R||null===F||R in T||(T[R]=F)}return T}},17346:(v,S,i)=>{const r=i(66952),u=i(32582),p=r.types;v.exports=class vS{constructor(e,_){if(this._setDefaults(e),e instanceof RegExp)this.ignoreCase=e.ignoreCase,this.multiline=e.multiline,e=e.source;else{if("string"!=typeof e)throw new Error("Expected a regexp or string");this.ignoreCase=_&&-1!==_.indexOf("i"),this.multiline=_&&-1!==_.indexOf("m")}this.tokens=r(e)}_setDefaults(e){this.max=null!=e.max?e.max:null!=vS.prototype.max?vS.prototype.max:100,this.defaultRange=e.defaultRange?e.defaultRange:this.defaultRange.clone(),e.randInt&&(this.randInt=e.randInt)}gen(){return this._gen(this.tokens,[])}_gen(e,_){var y,T,M,R,F;switch(e.type){case p.ROOT:case p.GROUP:if(e.followedBy||e.notFollowedBy)return"";for(e.remember&&void 0===e.groupNumber&&(e.groupNumber=_.push(null)-1),T="",R=0,F=(y=e.options?this._randSelect(e.options):e.stack).length;R<F;R++)T+=this._gen(y[R],_);return e.remember&&(_[e.groupNumber]=T),T;case p.POSITION:return"";case p.SET:var Z=this._expand(e);return Z.length?String.fromCharCode(this._randSelect(Z)):"";case p.REPETITION:for(M=this.randInt(e.min,e.max===1/0?e.min+this.max:e.max),T="",R=0;R<M;R++)T+=this._gen(e.value,_);return T;case p.REFERENCE:return _[e.value-1]||"";case p.CHAR:var J=this.ignoreCase&&this._randBool()?this._toOtherCase(e.value):e.value;return String.fromCharCode(J)}}_toOtherCase(e){return e+(97<=e&&e<=122?-32:65<=e&&e<=90?32:0)}_randBool(){return!this.randInt(0,1)}_randSelect(e){return e instanceof u?e.index(this.randInt(0,e.length-1)):e[this.randInt(0,e.length-1)]}_expand(e){if(e.type===r.types.CHAR)return new u(e.value);if(e.type===r.types.RANGE)return new u(e.from,e.to);{let _=new u;for(let y=0;y<e.set.length;y++){let T=this._expand(e.set[y]);if(_.add(T),this.ignoreCase)for(let M=0;M<T.length;M++){let R=T.index(M),F=this._toOtherCase(R);R!==F&&_.add(F)}}return e.not?this.defaultRange.clone().subtract(_):this.defaultRange.clone().intersect(_)}}randInt(e,_){return e+Math.floor(Math.random()*(1+_-e))}get defaultRange(){return this._range=this._range||new u(32,126)}set defaultRange(e){this._range=e}static randexp(e,_){var y;return"string"==typeof e&&(e=new RegExp(e,_)),void 0===e._randexp?(y=new vS(e,_),e._randexp=y):(y=e._randexp)._setDefaults(e),y.gen()}static sugar(){RegExp.prototype.gen=function(){return vS.randexp(this)}}}},57021:(v,S,i)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.CopyToClipboard=void 0;var r=p(i(78139)),u=p(i(96967));function p(se){return se&&se.__esModule?se:{default:se}}function f(se){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(oe){return typeof oe}:function(oe){return oe&&"function"==typeof Symbol&&oe.constructor===Symbol&&oe!==Symbol.prototype?"symbol":typeof oe})(se)}function e(se,ve){var oe=Object.keys(se);if(Object.getOwnPropertySymbols){var he=Object.getOwnPropertySymbols(se);ve&&(he=he.filter(function(me){return Object.getOwnPropertyDescriptor(se,me).enumerable})),oe.push.apply(oe,he)}return oe}function M(se,ve){if(!(se instanceof ve))throw new TypeError("Cannot call a class as a function")}function R(se,ve){for(var oe=0;oe<ve.length;oe++){var he=ve[oe];he.enumerable=he.enumerable||!1,he.configurable=!0,"value"in he&&(he.writable=!0),Object.defineProperty(se,he.key,he)}}function Z(se,ve){return!ve||"object"!==f(ve)&&"function"!=typeof ve?Q(se):ve}function J(se){return(J=Object.setPrototypeOf?Object.getPrototypeOf:function(oe){return oe.__proto__||Object.getPrototypeOf(oe)})(se)}function Q(se){if(void 0===se)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return se}function ue(se,ve){return(ue=Object.setPrototypeOf||function(he,me){return he.__proto__=me,he})(se,ve)}function ae(se,ve,oe){return ve in se?Object.defineProperty(se,ve,{value:oe,enumerable:!0,configurable:!0,writable:!0}):se[ve]=oe,se}var $=function(se){function ve(){var oe,he;M(this,ve);for(var me=arguments.length,Oe=new Array(me),ce=0;ce<me;ce++)Oe[ce]=arguments[ce];return ae(Q(he=Z(this,(oe=J(ve)).call.apply(oe,[this].concat(Oe)))),"onClick",function(dt){var ze=he.props,Ye=ze.text,je=ze.onCopy,Ve=ze.options,He=r.default.Children.only(ze.children),Zt=(0,u.default)(Ye,Ve);je&&je(Ye,Zt),He&&He.props&&"function"==typeof He.props.onClick&&He.props.onClick(dt)}),he}return function(se,ve){if("function"!=typeof ve&&null!==ve)throw new TypeError("Super expression must either be null or a function");se.prototype=Object.create(ve&&ve.prototype,{constructor:{value:se,writable:!0,configurable:!0}}),ve&&ue(se,ve)}(ve,se),function(se,ve,oe){ve&&R(se.prototype,ve)}(ve,[{key:"render",value:function(){var he=this.props,dt=he.children,ze=function(se,ve){if(null==se)return{};var he,me,oe=function(se,ve){if(null==se)return{};var me,Oe,oe={},he=Object.keys(se);for(Oe=0;Oe<he.length;Oe++)!(ve.indexOf(me=he[Oe])>=0)&&(oe[me]=se[me]);return oe}(se,ve);if(Object.getOwnPropertySymbols){var Oe=Object.getOwnPropertySymbols(se);for(me=0;me<Oe.length;me++)!(ve.indexOf(he=Oe[me])>=0)&&(!Object.prototype.propertyIsEnumerable.call(se,he)||(oe[he]=se[he]))}return oe}(he,["text","onCopy","options","children"]),Ye=r.default.Children.only(dt);return r.default.cloneElement(Ye,function(se){for(var ve=1;ve<arguments.length;ve++){var oe=null!=arguments[ve]?arguments[ve]:{};ve%2?e(oe,!0).forEach(function(he){ae(se,he,oe[he])}):Object.getOwnPropertyDescriptors?Object.defineProperties(se,Object.getOwnPropertyDescriptors(oe)):e(oe).forEach(function(he){Object.defineProperty(se,he,Object.getOwnPropertyDescriptor(oe,he))})}return se}({},ze,{onClick:this.onClick}))}}]),ve}(r.default.PureComponent);S.CopyToClipboard=$,ae($,"defaultProps",{onCopy:void 0,options:void 0})},43409:(v,S,i)=>{"use strict";var u=i(57021).CopyToClipboard;u.CopyToClipboard=u,v.exports=u},16709:(v,S,i)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.DebounceInput=void 0;var r=p(i(78139)),u=p(i(86906));function p(oe){return oe&&oe.__esModule?oe:{default:oe}}function f(oe){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(me){return typeof me}:function(me){return me&&"function"==typeof Symbol&&me.constructor===Symbol&&me!==Symbol.prototype?"symbol":typeof me})(oe)}function y(oe,he){var me=Object.keys(oe);if(Object.getOwnPropertySymbols){var Oe=Object.getOwnPropertySymbols(oe);he&&(Oe=Oe.filter(function(ce){return Object.getOwnPropertyDescriptor(oe,ce).enumerable})),me.push.apply(me,Oe)}return me}function T(oe){for(var he=1;he<arguments.length;he++){var me=null!=arguments[he]?arguments[he]:{};he%2?y(Object(me),!0).forEach(function(Oe){se(oe,Oe,me[Oe])}):Object.getOwnPropertyDescriptors?Object.defineProperties(oe,Object.getOwnPropertyDescriptors(me)):y(Object(me)).forEach(function(Oe){Object.defineProperty(oe,Oe,Object.getOwnPropertyDescriptor(me,Oe))})}return oe}function R(oe,he){for(var me=0;me<he.length;me++){var Oe=he[me];Oe.enumerable=Oe.enumerable||!1,Oe.configurable=!0,"value"in Oe&&(Oe.writable=!0),Object.defineProperty(oe,Oe.key,Oe)}}function J(oe,he){return(J=Object.setPrototypeOf||function(Oe,ce){return Oe.__proto__=ce,Oe})(oe,he)}function ee(oe,he){return!he||"object"!==f(he)&&"function"!=typeof he?ue(oe):he}function ue(oe){if(void 0===oe)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return oe}function $(oe){return($=Object.setPrototypeOf?Object.getPrototypeOf:function(me){return me.__proto__||Object.getPrototypeOf(me)})(oe)}function se(oe,he,me){return he in oe?Object.defineProperty(oe,he,{value:me,enumerable:!0,configurable:!0,writable:!0}):oe[he]=me,oe}var ve=function(oe){!function(oe,he){if("function"!=typeof he&&null!==he)throw new TypeError("Super expression must either be null or a function");oe.prototype=Object.create(he&&he.prototype,{constructor:{value:oe,writable:!0,configurable:!0}}),he&&J(oe,he)}(me,oe);var he=function(oe){var he=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(oe){return!1}}();return function(){var ce,Oe=$(oe);if(he){var dt=$(this).constructor;ce=Reflect.construct(Oe,arguments,dt)}else ce=Oe.apply(this,arguments);return ee(this,ce)}}(me);function me(Oe){var ce;return function(oe,he){if(!(oe instanceof he))throw new TypeError("Cannot call a class as a function")}(this,me),se(ue(ce=he.call(this,Oe)),"onChange",function(ze){ze.persist();var Ye=ce.state.value,je=ce.props.minLength;ce.setState({value:ze.target.value},function(){var Ie=ce.state.value;Ie.length>=je?ce.notify(ze):Ye.length>Ie.length&&ce.notify(T(T({},ze),{},{target:T(T({},ze.target),{},{value:""})}))})}),se(ue(ce),"onKeyDown",function(ze){"Enter"===ze.key&&ce.forceNotify(ze);var Ye=ce.props.onKeyDown;Ye&&(ze.persist(),Ye(ze))}),se(ue(ce),"onBlur",function(ze){ce.forceNotify(ze);var Ye=ce.props.onBlur;Ye&&(ze.persist(),Ye(ze))}),se(ue(ce),"createNotifier",function(ze){if(ze<0)ce.notify=function(){return null};else if(0===ze)ce.notify=ce.doNotify;else{var Ye=(0,u.default)(function(je){ce.isDebouncing=!1,ce.doNotify(je)},ze);ce.notify=function(je){ce.isDebouncing=!0,Ye(je)},ce.flush=function(){return Ye.flush()},ce.cancel=function(){ce.isDebouncing=!1,Ye.cancel()}}}),se(ue(ce),"doNotify",function(){var ze=ce.props.onChange;ze.apply(void 0,arguments)}),se(ue(ce),"forceNotify",function(ze){if(ce.isDebouncing||!(ce.props.debounceTimeout>0)){ce.cancel&&ce.cancel();var je=ce.state.value;ce.doNotify(je.length>=ce.props.minLength?ze:T(T({},ze),{},{target:T(T({},ze.target),{},{value:je})}))}}),ce.isDebouncing=!1,ce.state={value:null==Oe.value?"":Oe.value},ce.createNotifier(ce.props.debounceTimeout),ce}return function(oe,he,me){he&&R(oe.prototype,he)}(me,[{key:"componentDidUpdate",value:function(ce){if(!this.isDebouncing){var dt=this.props,ze=dt.value,Ye=dt.debounceTimeout,je=ce.debounceTimeout;void 0!==ze&&ce.value!==ze&&this.state.value!==ze&&this.setState({value:ze}),Ye!==je&&this.createNotifier(Ye)}}},{key:"componentWillUnmount",value:function(){this.flush&&this.flush()}},{key:"render",value:function(){var Ut,Bt,ce=this.props,dt=ce.element,Ve=ce.forceNotifyByEnter,He=ce.forceNotifyOnBlur,Zt=ce.onKeyDown,st=ce.onBlur,en=ce.inputRef,$t=function(oe,he){if(null==oe)return{};var Oe,ce,me=function(oe,he){if(null==oe)return{};var ce,dt,me={},Oe=Object.keys(oe);for(dt=0;dt<Oe.length;dt++)!(he.indexOf(ce=Oe[dt])>=0)&&(me[ce]=oe[ce]);return me}(oe,he);if(Object.getOwnPropertySymbols){var dt=Object.getOwnPropertySymbols(oe);for(ce=0;ce<dt.length;ce++)!(he.indexOf(Oe=dt[ce])>=0)&&(!Object.prototype.propertyIsEnumerable.call(oe,Oe)||(me[Oe]=oe[Oe]))}return me}(ce,["element","onChange","value","minLength","debounceTimeout","forceNotifyByEnter","forceNotifyOnBlur","onKeyDown","onBlur","inputRef"]),Gt=this.state.value;Ut=Ve?{onKeyDown:this.onKeyDown}:Zt?{onKeyDown:Zt}:{},Bt=He?{onBlur:this.onBlur}:st?{onBlur:st}:{};var mt=en?{ref:en}:{};return r.default.createElement(dt,T(T(T(T({},$t),{},{onChange:this.onChange,value:Gt},Ut),Bt),mt))}}]),me}(r.default.PureComponent);S.DebounceInput=ve,se(ve,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},41205:(v,S,i)=>{"use strict";var u=i(16709).DebounceInput;u.DebounceInput=u,v.exports=u},85503:(v,S,i)=>{"use strict";var r=i(78139),u=i(18228),p=i(88712);function f(b){for(var x="https://reactjs.org/docs/error-decoder.html?invariant="+b,G=1;G<arguments.length;G++)x+="&args[]="+encodeURIComponent(arguments[G]);return"Minified React error #"+b+"; visit "+x+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(f(227));var e=new Set,_={};function y(b,x){T(b,x),T(b+"Capture",x)}function T(b,x){for(_[b]=x,b=0;b<x.length;b++)e.add(x[b])}var M=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),R=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,F=Object.prototype.hasOwnProperty,Z={},J={};function ae(b,x,G,Se,We,Rt,rn){this.acceptsBooleans=2===x||3===x||4===x,this.attributeName=Se,this.attributeNamespace=We,this.mustUseProperty=G,this.propertyName=b,this.type=x,this.sanitizeURL=Rt,this.removeEmptyString=rn}var $={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(b){$[b]=new ae(b,0,!1,b,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(b){var x=b[0];$[x]=new ae(x,1,!1,b[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(b){$[b]=new ae(b,2,!1,b.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(b){$[b]=new ae(b,2,!1,b,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(b){$[b]=new ae(b,3,!1,b.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(b){$[b]=new ae(b,3,!0,b,null,!1,!1)}),["capture","download"].forEach(function(b){$[b]=new ae(b,4,!1,b,null,!1,!1)}),["cols","rows","size","span"].forEach(function(b){$[b]=new ae(b,6,!1,b,null,!1,!1)}),["rowSpan","start"].forEach(function(b){$[b]=new ae(b,5,!1,b.toLowerCase(),null,!1,!1)});var se=/[\-:]([a-z])/g;function ve(b){return b[1].toUpperCase()}function oe(b,x,G,Se){var We=$.hasOwnProperty(x)?$[x]:null;(null!==We?0===We.type:!Se&&2<x.length&&("o"===x[0]||"O"===x[0])&&("n"===x[1]||"N"===x[1]))||(function(b,x,G,Se){if(null==x||function(b,x,G,Se){if(null!==G&&0===G.type)return!1;switch(typeof x){case"function":case"symbol":return!0;case"boolean":return!Se&&(null!==G?!G.acceptsBooleans:"data-"!==(b=b.toLowerCase().slice(0,5))&&"aria-"!==b);default:return!1}}(b,x,G,Se))return!0;if(Se)return!1;if(null!==G)switch(G.type){case 3:return!x;case 4:return!1===x;case 5:return isNaN(x);case 6:return isNaN(x)||1>x}return!1}(x,G,We,Se)&&(G=null),Se||null===We?function(b){return!!F.call(J,b)||!F.call(Z,b)&&(R.test(b)?J[b]=!0:(Z[b]=!0,!1))}(x)&&(null===G?b.removeAttribute(x):b.setAttribute(x,""+G)):We.mustUseProperty?b[We.propertyName]=null===G?3!==We.type&&"":G:(x=We.attributeName,Se=We.attributeNamespace,null===G?b.removeAttribute(x):(G=3===(We=We.type)||4===We&&!0===G?"":""+G,Se?b.setAttributeNS(Se,x,G):b.setAttribute(x,G))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(b){var x=b.replace(se,ve);$[x]=new ae(x,1,!1,b,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(b){var x=b.replace(se,ve);$[x]=new ae(x,1,!1,b,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(b){var x=b.replace(se,ve);$[x]=new ae(x,1,!1,b,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(b){$[b]=new ae(b,1,!1,b.toLowerCase(),null,!1,!1)}),$.xlinkHref=new ae("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(b){$[b]=new ae(b,1,!1,b.toLowerCase(),null,!0,!0)});var he=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,me=60103,Oe=60106,ce=60107,dt=60108,ze=60114,Ye=60109,je=60110,Ie=60112,Ve=60113,He=60120,Zt=60115,st=60116,en=60121,$t=60128,Gt=60129,Ut=60130,Bt=60131;if("function"==typeof Symbol&&Symbol.for){var mt=Symbol.for;me=mt("react.element"),Oe=mt("react.portal"),ce=mt("react.fragment"),dt=mt("react.strict_mode"),ze=mt("react.profiler"),Ye=mt("react.provider"),je=mt("react.context"),Ie=mt("react.forward_ref"),Ve=mt("react.suspense"),He=mt("react.suspense_list"),Zt=mt("react.memo"),st=mt("react.lazy"),en=mt("react.block"),mt("react.scope"),$t=mt("react.opaque.id"),Gt=mt("react.debug_trace_mode"),Ut=mt("react.offscreen"),Bt=mt("react.legacy_hidden")}var zt,Yt="function"==typeof Symbol&&Symbol.iterator;function Dt(b){return null===b||"object"!=typeof b?null:"function"==typeof(b=Yt&&b[Yt]||b["@@iterator"])?b:null}function Yn(b){if(void 0===zt)try{throw Error()}catch(G){var x=G.stack.trim().match(/\n( *(at )?)/);zt=x&&x[1]||""}return"\n"+zt+b}var Hr=!1;function ci(b,x){if(!b||Hr)return"";Hr=!0;var G=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(x)if(x=function(){throw Error()},Object.defineProperty(x.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(x,[])}catch(Er){var Se=Er}Reflect.construct(b,[],x)}else{try{x.call()}catch(Er){Se=Er}b.call(x.prototype)}else{try{throw Error()}catch(Er){Se=Er}b()}}catch(Er){if(Er&&Se&&"string"==typeof Er.stack){for(var We=Er.stack.split("\n"),Rt=Se.stack.split("\n"),rn=We.length-1,xn=Rt.length-1;1<=rn&&0<=xn&&We[rn]!==Rt[xn];)xn--;for(;1<=rn&&0<=xn;rn--,xn--)if(We[rn]!==Rt[xn]){if(1!==rn||1!==xn)do{if(rn--,0>--xn||We[rn]!==Rt[xn])return"\n"+We[rn].replace(" at new "," at ")}while(1<=rn&&0<=xn);break}}}finally{Hr=!1,Error.prepareStackTrace=G}return(b=b?b.displayName||b.name:"")?Yn(b):""}function Ir(b){switch(b.tag){case 5:return Yn(b.type);case 16:return Yn("Lazy");case 13:return Yn("Suspense");case 19:return Yn("SuspenseList");case 0:case 2:case 15:return ci(b.type,!1);case 11:return ci(b.type.render,!1);case 22:return ci(b.type._render,!1);case 1:return ci(b.type,!0);default:return""}}function wr(b){if(null==b)return null;if("function"==typeof b)return b.displayName||b.name||null;if("string"==typeof b)return b;switch(b){case ce:return"Fragment";case Oe:return"Portal";case ze:return"Profiler";case dt:return"StrictMode";case Ve:return"Suspense";case He:return"SuspenseList"}if("object"==typeof b)switch(b.$$typeof){case je:return(b.displayName||"Context")+".Consumer";case Ye:return(b._context.displayName||"Context")+".Provider";case Ie:var x=b.render;return x=x.displayName||x.name||"",b.displayName||(""!==x?"ForwardRef("+x+")":"ForwardRef");case Zt:return wr(b.type);case en:return wr(b._render);case st:x=b._payload,b=b._init;try{return wr(b(x))}catch(G){}}return null}function Qr(b){switch(typeof b){case"boolean":case"number":case"object":case"string":case"undefined":return b;default:return""}}function Kr(b){var x=b.type;return(b=b.nodeName)&&"input"===b.toLowerCase()&&("checkbox"===x||"radio"===x)}function Hn(b){b._valueTracker||(b._valueTracker=function(b){var x=Kr(b)?"checked":"value",G=Object.getOwnPropertyDescriptor(b.constructor.prototype,x),Se=""+b[x];if(!b.hasOwnProperty(x)&&void 0!==G&&"function"==typeof G.get&&"function"==typeof G.set){var We=G.get,Rt=G.set;return Object.defineProperty(b,x,{configurable:!0,get:function(){return We.call(this)},set:function(rn){Se=""+rn,Rt.call(this,rn)}}),Object.defineProperty(b,x,{enumerable:G.enumerable}),{getValue:function(){return Se},setValue:function(rn){Se=""+rn},stopTracking:function(){b._valueTracker=null,delete b[x]}}}}(b))}function Zr(b){if(!b)return!1;var x=b._valueTracker;if(!x)return!0;var G=x.getValue(),Se="";return b&&(Se=Kr(b)?b.checked?"true":"false":b.value),(b=Se)!==G&&(x.setValue(b),!0)}function Ur(b){if(void 0===(b=b||("undefined"!=typeof document?document:void 0)))return null;try{return b.activeElement||b.body}catch(x){return b.body}}function di(b,x){var G=x.checked;return u({},x,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=G?G:b._wrapperState.initialChecked})}function $i(b,x){var G=null==x.defaultValue?"":x.defaultValue,Se=null!=x.checked?x.checked:x.defaultChecked;G=Qr(null!=x.value?x.value:G),b._wrapperState={initialChecked:Se,initialValue:G,controlled:"checkbox"===x.type||"radio"===x.type?null!=x.checked:null!=x.value}}function Hi(b,x){null!=(x=x.checked)&&oe(b,"checked",x,!1)}function Br(b,x){Hi(b,x);var G=Qr(x.value),Se=x.type;if(null!=G)"number"===Se?(0===G&&""===b.value||b.value!=G)&&(b.value=""+G):b.value!==""+G&&(b.value=""+G);else if("submit"===Se||"reset"===Se)return void b.removeAttribute("value");x.hasOwnProperty("value")?Wt(b,x.type,G):x.hasOwnProperty("defaultValue")&&Wt(b,x.type,Qr(x.defaultValue)),null==x.checked&&null!=x.defaultChecked&&(b.defaultChecked=!!x.defaultChecked)}function On(b,x,G){if(x.hasOwnProperty("value")||x.hasOwnProperty("defaultValue")){var Se=x.type;if(("submit"===Se||"reset"===Se)&&null==x.value)return;x=""+b._wrapperState.initialValue,G||x===b.value||(b.value=x),b.defaultValue=x}""!==(G=b.name)&&(b.name=""),b.defaultChecked=!!b._wrapperState.initialChecked,""!==G&&(b.name=G)}function Wt(b,x,G){("number"!==x||Ur(b.ownerDocument)!==b)&&(null==G?b.defaultValue=""+b._wrapperState.initialValue:b.defaultValue!==""+G&&(b.defaultValue=""+G))}function ir(b,x){return b=u({children:void 0},x),(x=function(b){var x="";return r.Children.forEach(b,function(G){null!=G&&(x+=G)}),x}(x.children))&&(b.children=x),b}function Lr(b,x,G,Se){if(b=b.options,x){x={};for(var We=0;We<G.length;We++)x["$"+G[We]]=!0;for(G=0;G<b.length;G++)We=x.hasOwnProperty("$"+b[G].value),b[G].selected!==We&&(b[G].selected=We),We&&Se&&(b[G].defaultSelected=!0)}else{for(G=""+Qr(G),x=null,We=0;We<b.length;We++){if(b[We].value===G)return b[We].selected=!0,void(Se&&(b[We].defaultSelected=!0));null!==x||b[We].disabled||(x=b[We])}null!==x&&(x.selected=!0)}}function Vn(b,x){if(null!=x.dangerouslySetInnerHTML)throw Error(f(91));return u({},x,{value:void 0,defaultValue:void 0,children:""+b._wrapperState.initialValue})}function zr(b,x){var G=x.value;if(null==G){if(G=x.children,x=x.defaultValue,null!=G){if(null!=x)throw Error(f(92));if(Array.isArray(G)){if(!(1>=G.length))throw Error(f(93));G=G[0]}x=G}null==x&&(x=""),G=x}b._wrapperState={initialValue:Qr(G)}}function hi(b,x){var G=Qr(x.value),Se=Qr(x.defaultValue);null!=G&&((G=""+G)!==b.value&&(b.value=G),null==x.defaultValue&&b.defaultValue!==G&&(b.defaultValue=G)),null!=Se&&(b.defaultValue=""+Se)}function Ai(b){var x=b.textContent;x===b._wrapperState.initialValue&&""!==x&&null!==x&&(b.value=x)}var Tr_html="http://www.w3.org/1999/xhtml";function Nr(b){switch(b){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function gn(b,x){return null==b||"http://www.w3.org/1999/xhtml"===b?Nr(x):"http://www.w3.org/2000/svg"===b&&"foreignObject"===x?"http://www.w3.org/1999/xhtml":b}var En,b,mr=(b=function(b,x){if("http://www.w3.org/2000/svg"!==b.namespaceURI||"innerHTML"in b)b.innerHTML=x;else{for((En=En||document.createElement("div")).innerHTML="<svg>"+x.valueOf().toString()+"</svg>",x=En.firstChild;b.firstChild;)b.removeChild(b.firstChild);for(;x.firstChild;)b.appendChild(x.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(x,G,Se,We){MSApp.execUnsafeLocalFunction(function(){return b(x,G)})}:b);function Xt(b,x){if(x){var G=b.firstChild;if(G&&G===b.lastChild&&3===G.nodeType)return void(G.nodeValue=x)}b.textContent=x}var zn={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},vr=["Webkit","ms","Moz","O"];function si(b,x,G){return null==x||"boolean"==typeof x||""===x?"":G||"number"!=typeof x||0===x||zn.hasOwnProperty(b)&&zn[b]?(""+x).trim():x+"px"}function Ii(b,x){for(var G in b=b.style,x)if(x.hasOwnProperty(G)){var Se=0===G.indexOf("--"),We=si(G,x[G],Se);"float"===G&&(G="cssFloat"),Se?b.setProperty(G,We):b[G]=We}}Object.keys(zn).forEach(function(b){vr.forEach(function(x){x=x+b.charAt(0).toUpperCase()+b.substring(1),zn[x]=zn[b]})});var no=u({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function so(b,x){if(x){if(no[b]&&(null!=x.children||null!=x.dangerouslySetInnerHTML))throw Error(f(137,b));if(null!=x.dangerouslySetInnerHTML){if(null!=x.children)throw Error(f(60));if("object"!=typeof x.dangerouslySetInnerHTML||!("__html"in x.dangerouslySetInnerHTML))throw Error(f(61))}if(null!=x.style&&"object"!=typeof x.style)throw Error(f(62))}}function Ze(b,x){if(-1===b.indexOf("-"))return"string"==typeof x.is;switch(b){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Dr(b){return(b=b.target||b.srcElement||window).correspondingUseElement&&(b=b.correspondingUseElement),3===b.nodeType?b.parentNode:b}var jt=null,xt=null,mn=null;function Wn(b){if(b=Vu(b)){if("function"!=typeof jt)throw Error(f(280));var x=b.stateNode;x&&(x=Qd(x),jt(b.stateNode,b.type,x))}}function kn(b){xt?mn?mn.push(b):mn=[b]:xt=b}function wn(){if(xt){var b=xt,x=mn;if(mn=xt=null,Wn(b),x)for(b=0;b<x.length;b++)Wn(x[b])}}function nr(b,x){return b(x)}function Gi(b,x,G,Se,We){return b(x,G,Se,We)}function po(){}var yo=nr,Mo=!1,Vi=!1;function cs(){(null!==xt||null!==mn)&&(po(),wn())}function So(b,x){var G=b.stateNode;if(null===G)return null;var Se=Qd(G);if(null===Se)return null;G=Se[x];e:switch(x){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(Se=!Se.disabled)||(Se=!("button"===(b=b.type)||"input"===b||"select"===b||"textarea"===b)),b=!Se;break e;default:b=!1}if(b)return null;if(G&&"function"!=typeof G)throw Error(f(231,x,typeof G));return G}var Si=!1;if(M)try{var ai={};Object.defineProperty(ai,"passive",{get:function(){Si=!0}}),window.addEventListener("test",ai,ai),window.removeEventListener("test",ai,ai)}catch(b){Si=!1}function Zn(b,x,G,Se,We,Rt,rn,xn,Er){var Ei=Array.prototype.slice.call(arguments,3);try{x.apply(G,Ei)}catch(fs){this.onError(fs)}}var cr=!1,yr=null,rr=!1,ri=null,ho={onError:function(b){cr=!0,yr=b}};function Ti(b,x,G,Se,We,Rt,rn,xn,Er){cr=!1,yr=null,Zn.apply(ho,arguments)}function xo(b){var x=b,G=b;if(b.alternate)for(;x.return;)x=x.return;else{b=x;do{0!=(1026&(x=b).flags)&&(G=x.return),b=x.return}while(b)}return 3===x.tag?G:null}function Li(b){if(13===b.tag){var x=b.memoizedState;if(null===x&&null!==(b=b.alternate)&&(x=b.memoizedState),null!==x)return x.dehydrated}return null}function ar(b){if(xo(b)!==b)throw Error(f(188))}function Ht(b){if(!(b=function(b){var x=b.alternate;if(!x){if(null===(x=xo(b)))throw Error(f(188));return x!==b?null:b}for(var G=b,Se=x;;){var We=G.return;if(null===We)break;var Rt=We.alternate;if(null===Rt){if(null!==(Se=We.return)){G=Se;continue}break}if(We.child===Rt.child){for(Rt=We.child;Rt;){if(Rt===G)return ar(We),b;if(Rt===Se)return ar(We),x;Rt=Rt.sibling}throw Error(f(188))}if(G.return!==Se.return)G=We,Se=Rt;else{for(var rn=!1,xn=We.child;xn;){if(xn===G){rn=!0,G=We,Se=Rt;break}if(xn===Se){rn=!0,Se=We,G=Rt;break}xn=xn.sibling}if(!rn){for(xn=Rt.child;xn;){if(xn===G){rn=!0,G=Rt,Se=We;break}if(xn===Se){rn=!0,Se=Rt,G=We;break}xn=xn.sibling}if(!rn)throw Error(f(189))}}if(G.alternate!==Se)throw Error(f(190))}if(3!==G.tag)throw Error(f(188));return G.stateNode.current===G?b:x}(b)))return null;for(var x=b;;){if(5===x.tag||6===x.tag)return x;if(x.child)x.child.return=x,x=x.child;else{if(x===b)break;for(;!x.sibling;){if(!x.return||x.return===b)return null;x=x.return}x.sibling.return=x.return,x=x.sibling}}return null}function cn(b,x){for(var G=b.alternate;null!==x;){if(x===b||x===G)return!0;x=x.return}return!1}var Ct,pr,nn,Cn,br=!1,zi=[],Wo=null,Do=null,Js=null,_s=new Map,bs=new Map,qo=[],ra="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Ia(b,x,G,Se,We){return{blockedOn:b,domEventName:x,eventSystemFlags:16|G,nativeEvent:We,targetContainers:[Se]}}function pa(b,x){switch(b){case"focusin":case"focusout":Wo=null;break;case"dragenter":case"dragleave":Do=null;break;case"mouseover":case"mouseout":Js=null;break;case"pointerover":case"pointerout":_s.delete(x.pointerId);break;case"gotpointercapture":case"lostpointercapture":bs.delete(x.pointerId)}}function Bs(b,x,G,Se,We,Rt){return null===b||b.nativeEvent!==Rt?(b=Ia(x,G,Se,We,Rt),null!==x&&null!==(x=Vu(x))&&pr(x),b):(b.eventSystemFlags|=Se,x=b.targetContainers,null!==We&&-1===x.indexOf(We)&&x.push(We),b)}function yl(b){var x=Tc(b.target);if(null!==x){var G=xo(x);if(null!==G)if(13===(x=G.tag)){if(null!==(x=Li(G)))return b.blockedOn=x,void Cn(b.lanePriority,function(){p.unstable_runWithPriority(b.priority,function(){nn(G)})})}else if(3===x&&G.stateNode.hydrate)return void(b.blockedOn=3===G.tag?G.stateNode.containerInfo:null)}b.blockedOn=null}function fo(b){if(null!==b.blockedOn)return!1;for(var x=b.targetContainers;0<x.length;){var G=ou(b.domEventName,b.eventSystemFlags,x[0],b.nativeEvent);if(null!==G)return null!==(x=Vu(G))&&pr(x),b.blockedOn=G,!1;x.shift()}return!0}function Da(b,x,G){fo(b)&&G.delete(x)}function Ao(){for(br=!1;0<zi.length;){var b=zi[0];if(null!==b.blockedOn){null!==(b=Vu(b.blockedOn))&&Ct(b);break}for(var x=b.targetContainers;0<x.length;){var G=ou(b.domEventName,b.eventSystemFlags,x[0],b.nativeEvent);if(null!==G){b.blockedOn=G;break}x.shift()}null===b.blockedOn&&zi.shift()}null!==Wo&&fo(Wo)&&(Wo=null),null!==Do&&fo(Do)&&(Do=null),null!==Js&&fo(Js)&&(Js=null),_s.forEach(Da),bs.forEach(Da)}function ls(b,x){b.blockedOn===x&&(b.blockedOn=null,br||(br=!0,p.unstable_scheduleCallback(p.unstable_NormalPriority,Ao)))}function gs(b){function x(We){return ls(We,b)}if(0<zi.length){ls(zi[0],b);for(var G=1;G<zi.length;G++){var Se=zi[G];Se.blockedOn===b&&(Se.blockedOn=null)}}for(null!==Wo&&ls(Wo,b),null!==Do&&ls(Do,b),null!==Js&&ls(Js,b),_s.forEach(x),bs.forEach(x),G=0;G<qo.length;G++)(Se=qo[G]).blockedOn===b&&(Se.blockedOn=null);for(;0<qo.length&&null===(G=qo[0]).blockedOn;)yl(G),null===G.blockedOn&&qo.shift()}function Ra(b,x){var G={};return G[b.toLowerCase()]=x.toLowerCase(),G["Webkit"+b]="webkit"+x,G["Moz"+b]="moz"+x,G}var pl={animationend:Ra("Animation","AnimationEnd"),animationiteration:Ra("Animation","AnimationIteration"),animationstart:Ra("Animation","AnimationStart"),transitionend:Ra("Transition","TransitionEnd")},Qs={},Fo={};function Eo(b){if(Qs[b])return Qs[b];if(!pl[b])return b;var G,x=pl[b];for(G in x)if(x.hasOwnProperty(G)&&G in Fo)return Qs[b]=x[G];return b}M&&(Fo=document.createElement("div").style,"AnimationEvent"in window||(delete pl.animationend.animation,delete pl.animationiteration.animation,delete pl.animationstart.animation),"TransitionEvent"in window||delete pl.transitionend.transition);var ks=Eo("animationend"),ms=Eo("animationiteration"),Co=Eo("animationstart"),kr=Eo("transitionend"),ro=new Map,tt=new Map,on=["abort","abort",ks,"animationEnd",ms,"animationIteration",Co,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",kr,"transitionEnd","waiting","waiting"];function ne(b,x){for(var G=0;G<b.length;G+=2){var Se=b[G],We=b[G+1];We="on"+(We[0].toUpperCase()+We.slice(1)),tt.set(Se,x),ro.set(Se,We),y(We,[Se])}}(0,p.unstable_now)();var Pt=8;function sn(b){if(0!=(1&b))return Pt=15,1;if(0!=(2&b))return Pt=14,2;if(0!=(4&b))return Pt=13,4;var x=24&b;return 0!==x?(Pt=12,x):0!=(32&b)?(Pt=11,32):0!=(x=192&b)?(Pt=10,x):0!=(256&b)?(Pt=9,256):0!=(x=3584&b)?(Pt=8,x):0!=(4096&b)?(Pt=7,4096):0!=(x=4186112&b)?(Pt=6,x):0!=(x=62914560&b)?(Pt=5,x):67108864&b?(Pt=4,67108864):0!=(134217728&b)?(Pt=3,134217728):0!=(x=805306368&b)?(Pt=2,x):0!=(1073741824&b)?(Pt=1,1073741824):(Pt=8,b)}function Oi(b,x){var G=b.pendingLanes;if(0===G)return Pt=0;var Se=0,We=0,Rt=b.expiredLanes,rn=b.suspendedLanes,xn=b.pingedLanes;if(0!==Rt)Se=Rt,We=Pt=15;else if(0!=(Rt=134217727&G)){var Er=Rt&~rn;0!==Er?(Se=sn(Er),We=Pt):0!=(xn&=Rt)&&(Se=sn(xn),We=Pt)}else 0!=(Rt=G&~rn)?(Se=sn(Rt),We=Pt):0!==xn&&(Se=sn(xn),We=Pt);if(0===Se)return 0;if(Se=G&((0>(Se=31-al(Se))?0:1<<Se)<<1)-1,0!==x&&x!==Se&&0==(x&rn)){if(sn(x),We<=Pt)return x;Pt=We}if(0!==(x=b.entangledLanes))for(b=b.entanglements,x&=Se;0<x;)Se|=b[G=31-al(x)],x&=~(We=1<<G);return Se}function os(b){return 0!=(b=-1073741825&b.pendingLanes)?b:1073741824&b?1073741824:0}function Ro(b,x){switch(b){case 15:return 1;case 14:return 2;case 12:return 0===(b=Uo(24&~x))?Ro(10,x):b;case 10:return 0===(b=Uo(192&~x))?Ro(8,x):b;case 8:return 0===(b=Uo(3584&~x))&&0===(b=Uo(4186112&~x))&&(b=512),b;case 2:return 0===(x=Uo(805306368&~x))&&(x=268435456),x}throw Error(f(358,b))}function Uo(b){return b&-b}function To(b){for(var x=[],G=0;31>G;G++)x.push(b);return x}function Ea(b,x,G){b.pendingLanes|=x;var Se=x-1;b.suspendedLanes&=Se,b.pingedLanes&=Se,(b=b.eventTimes)[x=31-al(x)]=G}var al=Math.clz32?Math.clz32:function(b){return 0===b?32:31-(qu(b)/Ru|0)|0},qu=Math.log,Ru=Math.LN2,bc=p.unstable_UserBlockingPriority,ed=p.unstable_runWithPriority,Hl=!0;function Zl(b,x,G,Se){Mo||po();var We=dc,Rt=Mo;Mo=!0;try{Gi(We,b,x,G,Se)}finally{(Mo=Rt)||cs()}}function $s(b,x,G,Se){ed(bc,dc.bind(null,b,x,G,Se))}function dc(b,x,G,Se){var We;if(Hl)if((We=0==(4&x))&&0<zi.length&&-1<ra.indexOf(b))b=Ia(null,b,x,G,Se),zi.push(b);else{var Rt=ou(b,x,G,Se);if(null===Rt)We&&pa(b,Se);else{if(We){if(-1<ra.indexOf(b))return b=Ia(Rt,b,x,G,Se),void zi.push(b);if(function(b,x,G,Se,We){switch(x){case"focusin":return Wo=Bs(Wo,b,x,G,Se,We),!0;case"dragenter":return Do=Bs(Do,b,x,G,Se,We),!0;case"mouseover":return Js=Bs(Js,b,x,G,Se,We),!0;case"pointerover":var Rt=We.pointerId;return _s.set(Rt,Bs(_s.get(Rt)||null,b,x,G,Se,We)),!0;case"gotpointercapture":return bs.set(Rt=We.pointerId,Bs(bs.get(Rt)||null,b,x,G,Se,We)),!0}return!1}(Rt,b,x,G,Se))return;pa(b,Se)}Ce(b,x,Se,null,G)}}}function ou(b,x,G,Se){var We=Dr(Se);if(null!==(We=Tc(We))){var Rt=xo(We);if(null===Rt)We=null;else{var rn=Rt.tag;if(13===rn){if(null!==(We=Li(Rt)))return We;We=null}else if(3===rn){if(Rt.stateNode.hydrate)return 3===Rt.tag?Rt.stateNode.containerInfo:null;We=null}else Rt!==We&&(We=null)}}return Ce(b,x,Se,We,G),null}var el=null,Cu=null,jl=null;function rt(){if(jl)return jl;var b,Se,x=Cu,G=x.length,We="value"in el?el.value:el.textContent,Rt=We.length;for(b=0;b<G&&x[b]===We[b];b++);var rn=G-b;for(Se=1;Se<=rn&&x[G-Se]===We[Rt-Se];Se++);return jl=We.slice(b,1<Se?1-Se:void 0)}function Nt(b){var x=b.keyCode;return"charCode"in b?0===(b=b.charCode)&&13===x&&(b=13):b=x,10===b&&(b=13),32<=b||13===b?b:0}function ct(){return!0}function Te(){return!1}function Me(b){function x(G,Se,We,Rt,rn){for(var xn in this._reactName=G,this._targetInst=We,this.type=Se,this.nativeEvent=Rt,this.target=rn,this.currentTarget=null,b)b.hasOwnProperty(xn)&&(this[xn]=(G=b[xn])?G(Rt):Rt[xn]);return this.isDefaultPrevented=(null!=Rt.defaultPrevented?Rt.defaultPrevented:!1===Rt.returnValue)?ct:Te,this.isPropagationStopped=Te,this}return u(x.prototype,{preventDefault:function(){this.defaultPrevented=!0;var G=this.nativeEvent;G&&(G.preventDefault?G.preventDefault():"unknown"!=typeof G.returnValue&&(G.returnValue=!1),this.isDefaultPrevented=ct)},stopPropagation:function(){var G=this.nativeEvent;G&&(G.stopPropagation?G.stopPropagation():"unknown"!=typeof G.cancelBubble&&(G.cancelBubble=!0),this.isPropagationStopped=ct)},persist:function(){},isPersistent:ct}),x}var Jo,Es,vs,De={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(b){return b.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Tt=Me(De),dr=u({},De,{view:0,detail:0}),Qi=Me(dr),Ms=u({},dr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:ua,button:0,buttons:0,relatedTarget:function(b){return void 0===b.relatedTarget?b.fromElement===b.srcElement?b.toElement:b.fromElement:b.relatedTarget},movementX:function(b){return"movementX"in b?b.movementX:(b!==vs&&(vs&&"mousemove"===b.type?(Jo=b.screenX-vs.screenX,Es=b.screenY-vs.screenY):Es=Jo=0,vs=b),Jo)},movementY:function(b){return"movementY"in b?b.movementY:Es}}),Ma=Me(Ms),Wa=Me(u({},Ms,{dataTransfer:0})),ec=Me(u({},dr,{relatedTarget:0})),Ts=Me(u({},De,{animationName:0,elapsedTime:0,pseudoElement:0})),Ec=Me(u({},De,{clipboardData:function(b){return"clipboardData"in b?b.clipboardData:window.clipboardData}})),Mu=Me(u({},De,{data:0})),Ic={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},md={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},tc={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Fi(b){var x=this.nativeEvent;return x.getModifierState?x.getModifierState(b):!!(b=tc[b])&&!!x[b]}function ua(){return Fi}var As=Me(u({},dr,{key:function(b){if(b.key){var x=Ic[b.key]||b.key;if("Unidentified"!==x)return x}return"keypress"===b.type?13===(b=Nt(b))?"Enter":String.fromCharCode(b):"keydown"===b.type||"keyup"===b.type?md[b.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:ua,charCode:function(b){return"keypress"===b.type?Nt(b):0},keyCode:function(b){return"keydown"===b.type||"keyup"===b.type?b.keyCode:0},which:function(b){return"keypress"===b.type?Nt(b):"keydown"===b.type||"keyup"===b.type?b.keyCode:0}})),bl=Me(u({},Ms,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),bu=Me(u({},dr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:ua})),Gs=Me(u({},De,{propertyName:0,elapsedTime:0,pseudoElement:0})),Hu=Me(u({},Ms,{deltaX:function(b){return"deltaX"in b?b.deltaX:"wheelDeltaX"in b?-b.wheelDeltaX:0},deltaY:function(b){return"deltaY"in b?b.deltaY:"wheelDeltaY"in b?-b.wheelDeltaY:"wheelDelta"in b?-b.wheelDelta:0},deltaZ:0,deltaMode:0})),Yo=[9,13,27,32],du=M&&"CompositionEvent"in window,Ar=null;M&&"documentMode"in document&&(Ar=document.documentMode);var ha=M&&"TextEvent"in window&&!Ar,_u=M&&(!du||Ar&&8<Ar&&11>=Ar),fa=String.fromCharCode(32),Gl=!1;function Ja(b,x){switch(b){case"keyup":return-1!==Yo.indexOf(x.keyCode);case"keydown":return 229!==x.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hl(b){return"object"==typeof(b=b.detail)&&"data"in b?b.data:null}var Vl=!1,Ae={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ot(b){var x=b&&b.nodeName&&b.nodeName.toLowerCase();return"input"===x?!!Ae[b.type]:"textarea"===x}function _t(b,x,G,Se){kn(Se),0<(x=yt(x,"onChange")).length&&(G=new Tt("onChange","change",null,G,Se),b.push({event:G,listeners:x}))}var lt=null,un=null;function yn(b){df(b,0)}function Or(b){if(Zr(Sc(b)))return b}function Vr(b,x){if("change"===b)return x}var _i=!1;if(M){var oi;if(M){var ko="oninput"in document;if(!ko){var Ho=document.createElement("div");Ho.setAttribute("oninput","return;"),ko="function"==typeof Ho.oninput}oi=ko}else oi=!1;_i=oi&&(!document.documentMode||9<document.documentMode)}function Ln(){lt&&(lt.detachEvent("onpropertychange",Mr),un=lt=null)}function Mr(b){if("value"===b.propertyName&&Or(un)){var x=[];if(_t(x,un,b,Dr(b)),b=yn,Mo)b(x);else{Mo=!0;try{nr(b,x)}finally{Mo=!1,cs()}}}}function gr(b,x,G){"focusin"===b?(Ln(),un=G,(lt=x).attachEvent("onpropertychange",Mr)):"focusout"===b&&Ln()}function co(b){if("selectionchange"===b||"keyup"===b||"keydown"===b)return Or(un)}function Ss(b,x){if("click"===b)return Or(x)}function Na(b,x){if("input"===b||"change"===b)return Or(x)}var Ks="function"==typeof Object.is?Object.is:function(b,x){return b===x&&(0!==b||1/b==1/x)||b!=b&&x!=x},td=Object.prototype.hasOwnProperty;function Lc(b,x){if(Ks(b,x))return!0;if("object"!=typeof b||null===b||"object"!=typeof x||null===x)return!1;var G=Object.keys(b),Se=Object.keys(x);if(G.length!==Se.length)return!1;for(Se=0;Se<G.length;Se++)if(!td.call(x,G[Se])||!Ks(b[G[Se]],x[G[Se]]))return!1;return!0}function zl(b){for(;b&&b.firstChild;)b=b.firstChild;return b}function ki(b,x){var Se,G=zl(b);for(b=0;G;){if(3===G.nodeType){if(Se=b+G.textContent.length,b<=x&&Se>=x)return{node:G,offset:x-b};b=Se}e:{for(;G;){if(G.nextSibling){G=G.nextSibling;break e}G=G.parentNode}G=void 0}G=zl(G)}}function No(b,x){return!(!b||!x)&&(b===x||(!b||3!==b.nodeType)&&(x&&3===x.nodeType?No(b,x.parentNode):"contains"in b?b.contains(x):!!b.compareDocumentPosition&&!!(16&b.compareDocumentPosition(x))))}function _a(){for(var b=window,x=Ur();x instanceof b.HTMLIFrameElement;){try{var G="string"==typeof x.contentWindow.location.href}catch(Se){G=!1}if(!G)break;x=Ur((b=x.contentWindow).document)}return x}function ll(b){var x=b&&b.nodeName&&b.nodeName.toLowerCase();return x&&("input"===x&&("text"===b.type||"search"===b.type||"tel"===b.type||"url"===b.type||"password"===b.type)||"textarea"===x||"true"===b.contentEditable)}var Ul=M&&"documentMode"in document&&11>=document.documentMode,Xs=null,vd=null,vn=null,Il=!1;function nd(b,x,G){var Se=G.window===G?G.document:9===G.nodeType?G:G.ownerDocument;Il||null==Xs||Xs!==Ur(Se)||(Se="selectionStart"in(Se=Xs)&&ll(Se)?{start:Se.selectionStart,end:Se.selectionEnd}:{anchorNode:(Se=(Se.ownerDocument&&Se.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:Se.anchorOffset,focusNode:Se.focusNode,focusOffset:Se.focusOffset},vn&&Lc(vn,Se)||(vn=Se,0<(Se=yt(vd,"onSelect")).length&&(x=new Tt("onSelect","select",null,x,G),b.push({event:x,listeners:Se}),x.target=Xs)))}ne("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),ne("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),ne(on,2);for(var Vd="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),ds=0;ds<Vd.length;ds++)tt.set(Vd[ds],0);T("onMouseEnter",["mouseout","mouseover"]),T("onMouseLeave",["mouseout","mouseover"]),T("onPointerEnter",["pointerout","pointerover"]),T("onPointerLeave",["pointerout","pointerover"]),y("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),y("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),y("onBeforeInput",["compositionend","keypress","textInput","paste"]),y("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),y("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),y("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ca="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),jc=new Set("cancel close invalid load scroll toggle".split(" ").concat(ca));function nc(b,x,G){var Se=b.type||"unknown-event";b.currentTarget=G,function(b,x,G,Se,We,Rt,rn,xn,Er){if(Ti.apply(this,arguments),cr){if(!cr)throw Error(f(198));var Ei=yr;cr=!1,yr=null,rr||(rr=!0,ri=Ei)}}(Se,x,void 0,b),b.currentTarget=null}function df(b,x){x=0!=(4&x);for(var G=0;G<b.length;G++){var Se=b[G],We=Se.event;Se=Se.listeners;e:{var Rt=void 0;if(x)for(var rn=Se.length-1;0<=rn;rn--){var xn=Se[rn],Er=xn.instance,Ei=xn.currentTarget;if(xn=xn.listener,Er!==Rt&&We.isPropagationStopped())break e;nc(We,xn,Ei),Rt=Er}else for(rn=0;rn<Se.length;rn++){if(Er=(xn=Se[rn]).instance,Ei=xn.currentTarget,xn=xn.listener,Er!==Rt&&We.isPropagationStopped())break e;nc(We,xn,Ei),Rt=Er}}}if(rr)throw b=ri,rr=!1,ri=null,b}function ul(b,x){var G=Gc(x),Se=b+"__bubble";G.has(Se)||(Pe(x,b,2,!1),G.add(Se))}var zd="_reactListening"+Math.random().toString(36).slice(2);function Wd(b){b[zd]||(b[zd]=!0,e.forEach(function(x){jc.has(x)||Be(x,!1,b,null),Be(x,!0,b,null)}))}function Be(b,x,G,Se){var We=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,Rt=G;if("selectionchange"===b&&9!==G.nodeType&&(Rt=G.ownerDocument),null!==Se&&!x&&jc.has(b)){if("scroll"!==b)return;We|=2,Rt=Se}var rn=Gc(Rt),xn=b+"__"+(x?"capture":"bubble");rn.has(xn)||(x&&(We|=4),Pe(Rt,b,We,x),rn.add(xn))}function Pe(b,x,G,Se){var We=tt.get(x);switch(void 0===We?2:We){case 0:We=Zl;break;case 1:We=$s;break;default:We=dc}G=We.bind(null,x,G,b),We=void 0,!Si||"touchstart"!==x&&"touchmove"!==x&&"wheel"!==x||(We=!0),b.addEventListener(x,G,Se?void 0===We||{capture:!0,passive:We}:void 0!==We&&{passive:We})}function Ce(b,x,G,Se,We){var Rt=Se;if(0==(1&x)&&0==(2&x)&&null!==Se)e:for(;;){if(null===Se)return;var rn=Se.tag;if(3===rn||4===rn){var xn=Se.stateNode.containerInfo;if(xn===We||8===xn.nodeType&&xn.parentNode===We)break;if(4===rn)for(rn=Se.return;null!==rn;){var Er=rn.tag;if((3===Er||4===Er)&&((Er=rn.stateNode.containerInfo)===We||8===Er.nodeType&&Er.parentNode===We))return;rn=rn.return}for(;null!==xn;){if(null===(rn=Tc(xn)))return;if(5===(Er=rn.tag)||6===Er){Se=Rt=rn;continue e}xn=xn.parentNode}}Se=Se.return}!function(b,x,G){if(Vi)return b();Vi=!0;try{yo(b,x,G)}finally{Vi=!1,cs()}}(function(){var Ei=Rt,fs=Dr(G),Ua=[];e:{var mo=ro.get(b);if(void 0!==mo){var _o=Tt,La=b;switch(b){case"keypress":if(0===Nt(G))break e;case"keydown":case"keyup":_o=As;break;case"focusin":La="focus",_o=ec;break;case"focusout":La="blur",_o=ec;break;case"beforeblur":case"afterblur":_o=ec;break;case"click":if(2===G.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":_o=Ma;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":_o=Wa;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":_o=bu;break;case ks:case ms:case Co:_o=Ts;break;case kr:_o=Gs;break;case"scroll":_o=Qi;break;case"wheel":_o=Hu;break;case"copy":case"cut":case"paste":_o=Ec;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":_o=bl}var Sa=0!=(4&x),ti=!Sa&&"scroll"===b,Sr=Sa?null!==mo?mo+"Capture":null:mo;Sa=[];for(var Bi,Wr=Ei;null!==Wr;){var ao=(Bi=Wr).stateNode;if(5===Bi.tag&&null!==ao&&(Bi=ao,null!==Sr&&null!=(ao=So(Wr,Sr))&&Sa.push(it(Wr,ao,Bi))),ti)break;Wr=Wr.return}0<Sa.length&&(mo=new _o(mo,La,null,G,fs),Ua.push({event:mo,listeners:Sa}))}}if(0==(7&x)){if(_o="mouseout"===b||"pointerout"===b,(!(mo="mouseover"===b||"pointerover"===b)||0!=(16&x)||!(La=G.relatedTarget||G.fromElement)||!Tc(La)&&!La[Dd])&&(_o||mo)&&(mo=fs.window===fs?fs:(mo=fs.ownerDocument)?mo.defaultView||mo.parentWindow:window,_o?(_o=Ei,null!==(La=(La=G.relatedTarget||G.toElement)?Tc(La):null)&&(La!==(ti=xo(La))||5!==La.tag&&6!==La.tag)&&(La=null)):(_o=null,La=Ei),_o!==La)){if(Sa=Ma,ao="onMouseLeave",Sr="onMouseEnter",Wr="mouse",("pointerout"===b||"pointerover"===b)&&(Sa=bl,ao="onPointerLeave",Sr="onPointerEnter",Wr="pointer"),ti=null==_o?mo:Sc(_o),Bi=null==La?mo:Sc(La),(mo=new Sa(ao,Wr+"leave",_o,G,fs)).target=ti,mo.relatedTarget=Bi,ao=null,Tc(fs)===Ei&&((Sa=new Sa(Sr,Wr+"enter",La,G,fs)).target=Bi,Sa.relatedTarget=ti,ao=Sa),ti=ao,_o&&La)t:{for(Sr=La,Wr=0,Bi=Sa=_o;Bi;Bi=qt(Bi))Wr++;for(Bi=0,ao=Sr;ao;ao=qt(ao))Bi++;for(;0<Wr-Bi;)Sa=qt(Sa),Wr--;for(;0<Bi-Wr;)Sr=qt(Sr),Bi--;for(;Wr--;){if(Sa===Sr||null!==Sr&&Sa===Sr.alternate)break t;Sa=qt(Sa),Sr=qt(Sr)}Sa=null}else Sa=null;null!==_o&&Un(Ua,mo,_o,Sa,!1),null!==La&&null!==ti&&Un(Ua,ti,La,Sa,!0)}if("select"===(_o=(mo=Ei?Sc(Ei):window).nodeName&&mo.nodeName.toLowerCase())||"input"===_o&&"file"===mo.type)var ba=Vr;else if(ot(mo))if(_i)ba=Na;else{ba=co;var Os=gr}else(_o=mo.nodeName)&&"input"===_o.toLowerCase()&&("checkbox"===mo.type||"radio"===mo.type)&&(ba=Ss);switch(ba&&(ba=ba(b,Ei))?_t(Ua,ba,G,fs):(Os&&Os(b,mo,Ei),"focusout"===b&&(Os=mo._wrapperState)&&Os.controlled&&"number"===mo.type&&Wt(mo,"number",mo.value)),Os=Ei?Sc(Ei):window,b){case"focusin":(ot(Os)||"true"===Os.contentEditable)&&(Xs=Os,vd=Ei,vn=null);break;case"focusout":vn=vd=Xs=null;break;case"mousedown":Il=!0;break;case"contextmenu":case"mouseup":case"dragend":Il=!1,nd(Ua,G,fs);break;case"selectionchange":if(Ul)break;case"keydown":case"keyup":nd(Ua,G,fs)}var Xa;if(du)e:{switch(b){case"compositionstart":var Dl="onCompositionStart";break e;case"compositionend":Dl="onCompositionEnd";break e;case"compositionupdate":Dl="onCompositionUpdate";break e}Dl=void 0}else Vl?Ja(b,G)&&(Dl="onCompositionEnd"):"keydown"===b&&229===G.keyCode&&(Dl="onCompositionStart");Dl&&(_u&&"ko"!==G.locale&&(Vl||"onCompositionStart"!==Dl?"onCompositionEnd"===Dl&&Vl&&(Xa=rt()):(Cu="value"in(el=fs)?el.value:el.textContent,Vl=!0)),0<(Os=yt(Ei,Dl)).length&&(Dl=new Mu(Dl,b,null,G,fs),Ua.push({event:Dl,listeners:Os}),(Xa||null!==(Xa=hl(G)))&&(Dl.data=Xa))),(Xa=ha?function(b,x){switch(b){case"compositionend":return hl(x);case"keypress":return 32!==x.which?null:(Gl=!0,fa);case"textInput":return(b=x.data)===fa&&Gl?null:b;default:return null}}(b,G):function(b,x){if(Vl)return"compositionend"===b||!du&&Ja(b,x)?(b=rt(),jl=Cu=el=null,Vl=!1,b):null;switch(b){case"paste":return null;case"keypress":if(!(x.ctrlKey||x.altKey||x.metaKey)||x.ctrlKey&&x.altKey){if(x.char&&1<x.char.length)return x.char;if(x.which)return String.fromCharCode(x.which)}return null;case"compositionend":return _u&&"ko"!==x.locale?null:x.data;default:return null}}(b,G))&&0<(Ei=yt(Ei,"onBeforeInput")).length&&(fs=new Mu("onBeforeInput","beforeinput",null,G,fs),Ua.push({event:fs,listeners:Ei}),fs.data=Xa)}df(Ua,x)})}function it(b,x,G){return{instance:b,listener:x,currentTarget:G}}function yt(b,x){for(var G=x+"Capture",Se=[];null!==b;){var We=b,Rt=We.stateNode;5===We.tag&&null!==Rt&&(We=Rt,null!=(Rt=So(b,G))&&Se.unshift(it(b,Rt,We)),null!=(Rt=So(b,x))&&Se.push(it(b,Rt,We))),b=b.return}return Se}function qt(b){if(null===b)return null;do{b=b.return}while(b&&5!==b.tag);return b||null}function Un(b,x,G,Se,We){for(var Rt=x._reactName,rn=[];null!==G&&G!==Se;){var xn=G,Er=xn.alternate,Ei=xn.stateNode;if(null!==Er&&Er===Se)break;5===xn.tag&&null!==Ei&&(xn=Ei,We?null!=(Er=So(G,Rt))&&rn.unshift(it(G,Er,xn)):We||null!=(Er=So(G,Rt))&&rn.push(it(G,Er,xn))),G=G.return}0!==rn.length&&b.push({event:x,listeners:rn})}function qn(){}var yi=null,Go=null;function ka(b,x){switch(b){case"button":case"input":case"select":case"textarea":return!!x.autoFocus}return!1}function ss(b,x){return"textarea"===b||"option"===b||"noscript"===b||"string"==typeof x.children||"number"==typeof x.children||"object"==typeof x.dangerouslySetInnerHTML&&null!==x.dangerouslySetInnerHTML&&null!=x.dangerouslySetInnerHTML.__html}var Oa="function"==typeof setTimeout?setTimeout:void 0,Us="function"==typeof clearTimeout?clearTimeout:void 0;function fc(b){(1===b.nodeType||9===b.nodeType&&null!=(b=b.body))&&(b.textContent="")}function va(b){for(;null!=b;b=b.nextSibling){var x=b.nodeType;if(1===x||3===x)break}return b}function wl(b){b=b.previousSibling;for(var x=0;b;){if(8===b.nodeType){var G=b.data;if("$"===G||"$!"===G||"$?"===G){if(0===x)return b;x--}else"/$"===G&&x++}b=b.previousSibling}return null}var tl=0,Ha=Math.random().toString(36).slice(2),nl="__reactFiber$"+Ha,Of="__reactProps$"+Ha,Dd="__reactContainer$"+Ha,Jd="__reactEvents$"+Ha;function Tc(b){var x=b[nl];if(x)return x;for(var G=b.parentNode;G;){if(x=G[Dd]||G[nl]){if(G=x.alternate,null!==x.child||null!==G&&null!==G.child)for(b=wl(b);null!==b;){if(G=b[nl])return G;b=wl(b)}return x}G=(b=G).parentNode}return null}function Vu(b){return!(b=b[nl]||b[Dd])||5!==b.tag&&6!==b.tag&&13!==b.tag&&3!==b.tag?null:b}function Sc(b){if(5===b.tag||6===b.tag)return b.stateNode;throw Error(f(33))}function Qd(b){return b[Of]||null}function Gc(b){var x=b[Jd];return void 0===x&&(x=b[Jd]=new Set),x}var Ff=[],zu=-1;function Tl(b){return{current:b}}function xl(b){0>zu||(b.current=Ff[zu],Ff[zu]=null,zu--)}function kl(b,x){zu++,Ff[zu]=b.current,b.current=x}var Nu={},Qa=Tl(Nu),Wu=Tl(!1),tn=Nu;function Mc(b,x){var G=b.type.contextTypes;if(!G)return Nu;var Se=b.stateNode;if(Se&&Se.__reactInternalMemoizedUnmaskedChildContext===x)return Se.__reactInternalMemoizedMaskedChildContext;var Rt,We={};for(Rt in G)We[Rt]=x[Rt];return Se&&((b=b.stateNode).__reactInternalMemoizedUnmaskedChildContext=x,b.__reactInternalMemoizedMaskedChildContext=We),We}function Ou(b){return null!=b.childContextTypes}function Pu(){xl(Wu),xl(Qa)}function rl(b,x,G){if(Qa.current!==Nu)throw Error(f(168));kl(Qa,x),kl(Wu,G)}function ff(b,x,G){var Se=b.stateNode;if(b=x.childContextTypes,"function"!=typeof Se.getChildContext)return G;for(var We in Se=Se.getChildContext())if(!(We in b))throw Error(f(108,wr(x)||"Unknown",We));return u({},G,Se)}function Xl(b){return b=(b=b.stateNode)&&b.__reactInternalMemoizedMergedChildContext||Nu,tn=Qa.current,kl(Qa,b),kl(Wu,Wu.current),!0}function yd(b,x,G){var Se=b.stateNode;if(!Se)throw Error(f(169));G?(b=ff(b,x,tn),Se.__reactInternalMemoizedMergedChildContext=b,xl(Wu),xl(Qa),kl(Qa,b)):xl(Wu),kl(Wu,G)}var Ac=null,Vc=null,pf=p.unstable_runWithPriority,Oc=p.unstable_scheduleCallback,hf=p.unstable_cancelCallback,zc=p.unstable_shouldYield,su=p.unstable_requestPaint,bd=p.unstable_now,kp=p.unstable_getCurrentPriorityLevel,dp=p.unstable_ImmediatePriority,_f=p.unstable_UserBlockingPriority,Mh=p.unstable_NormalPriority,Kl=p.unstable_LowPriority,kf=p.unstable_IdlePriority,Uu={},Xf=void 0!==su?su:function(){},Rd=null,wc=null,ql=!1,Ji=bd(),cl=1e4>Ji?bd:function(){return bd()-Ji};function Ll(){switch(kp()){case dp:return 99;case _f:return 98;case Mh:return 97;case Kl:return 96;case kf:return 95;default:throw Error(f(332))}}function Nd(b){switch(b){case 99:return dp;case 98:return _f;case 97:return Mh;case 96:return Kl;case 95:return kf;default:throw Error(f(332))}}function il(b,x){return b=Nd(b),pf(b,x)}function Bu(b,x,G){return b=Nd(b),Oc(b,x,G)}function pc(){if(null!==wc){var b=wc;wc=null,hf(b)}Xd()}function Xd(){if(!ql&&null!==Rd){ql=!0;var b=0;try{var x=Rd;il(99,function(){for(;b<x.length;b++){var G=x[b];do{G=G(!0)}while(null!==G)}}),Rd=null}catch(G){throw null!==Rd&&(Rd=Rd.slice(b+1)),Oc(dp,pc),G}finally{ql=!1}}}var wf=he.ReactCurrentBatchConfig;function Wl(b,x){if(b&&b.defaultProps){for(var G in x=u({},x),b=b.defaultProps)void 0===x[G]&&(x[G]=b[G]);return x}return x}var Pd=Tl(null),rc=null,hc=null,gu=null;function Cc(){gu=hc=rc=null}function Fc(b){var x=Pd.current;xl(Pd),b.type._context._currentValue=x}function fu(b,x){for(;null!==b;){var G=b.alternate;if((b.childLanes&x)===x){if(null===G||(G.childLanes&x)===x)break;G.childLanes|=x}else b.childLanes|=x,null!==G&&(G.childLanes|=x);b=b.return}}function Id(b,x){rc=b,gu=hc=null,null!==(b=b.dependencies)&&null!==b.firstContext&&(0!=(b.lanes&x)&&(Kd=!0),b.firstContext=null)}function Sl(b,x){if(gu!==b&&!1!==x&&0!==x)if(("number"!=typeof x||1073741823===x)&&(gu=b,x=1073741823),x={context:b,observedBits:x,next:null},null===hc){if(null===rc)throw Error(f(308));hc=x,rc.dependencies={lanes:0,firstContext:x,responders:null}}else hc=hc.next=x;return b._currentValue}var kc=!1;function $c(b){b.updateQueue={baseState:b.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function h(b,x){x.updateQueue===(b=b.updateQueue)&&(x.updateQueue={baseState:b.baseState,firstBaseUpdate:b.firstBaseUpdate,lastBaseUpdate:b.lastBaseUpdate,shared:b.shared,effects:b.effects})}function E(b,x){return{eventTime:b,lane:x,tag:0,payload:null,callback:null,next:null}}function N(b,x){if(null!==(b=b.updateQueue)){var G=(b=b.shared).pending;null===G?x.next=x:(x.next=G.next,G.next=x),b.pending=x}}function k(b,x){var G=b.updateQueue,Se=b.alternate;if(null===Se||G!==(Se=Se.updateQueue))null===(b=G.lastBaseUpdate)?G.firstBaseUpdate=x:b.next=x,G.lastBaseUpdate=x;else{var We=null,Rt=null;if(null!==(G=G.firstBaseUpdate)){do{var rn={eventTime:G.eventTime,lane:G.lane,tag:G.tag,payload:G.payload,callback:G.callback,next:null};null===Rt?We=Rt=rn:Rt=Rt.next=rn,G=G.next}while(null!==G);null===Rt?We=Rt=x:Rt=Rt.next=x}else We=Rt=x;b.updateQueue=G={baseState:Se.baseState,firstBaseUpdate:We,lastBaseUpdate:Rt,shared:Se.shared,effects:Se.effects}}}function K(b,x,G,Se){var We=b.updateQueue;kc=!1;var Rt=We.firstBaseUpdate,rn=We.lastBaseUpdate,xn=We.shared.pending;if(null!==xn){We.shared.pending=null;var Er=xn,Ei=Er.next;Er.next=null,null===rn?Rt=Ei:rn.next=Ei,rn=Er;var fs=b.alternate;if(null!==fs){var Ua=(fs=fs.updateQueue).lastBaseUpdate;Ua!==rn&&(null===Ua?fs.firstBaseUpdate=Ei:Ua.next=Ei,fs.lastBaseUpdate=Er)}}if(null!==Rt){for(Ua=We.baseState,rn=0,fs=Ei=Er=null;;){var mo=Rt.eventTime;if((Se&(xn=Rt.lane))===xn){null!==fs&&(fs=fs.next={eventTime:mo,lane:0,tag:Rt.tag,payload:Rt.payload,callback:Rt.callback,next:null});e:{var _o=b,La=Rt;switch(xn=x,mo=G,La.tag){case 1:if("function"==typeof(_o=La.payload)){Ua=_o.call(mo,Ua,xn);break e}Ua=_o;break e;case 3:_o.flags=-4097&_o.flags|64;case 0:if(null==(xn="function"==typeof(_o=La.payload)?_o.call(mo,Ua,xn):_o))break e;Ua=u({},Ua,xn);break e;case 2:kc=!0}}null!==Rt.callback&&(b.flags|=32,null===(xn=We.effects)?We.effects=[Rt]:xn.push(Rt))}else mo={eventTime:mo,lane:xn,tag:Rt.tag,payload:Rt.payload,callback:Rt.callback,next:null},null===fs?(Ei=fs=mo,Er=Ua):fs=fs.next=mo,rn|=xn;if(null===(Rt=Rt.next)){if(null===(xn=We.shared.pending))break;Rt=xn.next,xn.next=null,We.lastBaseUpdate=xn,We.shared.pending=null}}null===fs&&(Er=Ua),We.baseState=Er,We.firstBaseUpdate=Ei,We.lastBaseUpdate=fs,Zf|=rn,b.lanes=rn,b.memoizedState=Ua}}function de(b,x,G){if(b=x.effects,x.effects=null,null!==b)for(x=0;x<b.length;x++){var Se=b[x],We=Se.callback;if(null!==We){if(Se.callback=null,Se=G,"function"!=typeof We)throw Error(f(191,We));We.call(Se)}}}var be=(new r.Component).refs;function Ue(b,x,G,Se){G=null==(G=G(Se,x=b.memoizedState))?x:u({},x,G),b.memoizedState=G,0===b.lanes&&(b.updateQueue.baseState=G)}var we={isMounted:function(b){return!!(b=b._reactInternals)&&xo(b)===b},enqueueSetState:function(b,x,G){b=b._reactInternals;var Se=fd(),We=bf(b),Rt=E(Se,We);Rt.payload=x,null!=G&&(Rt.callback=G),N(b,Rt),Gf(b,We,Se)},enqueueReplaceState:function(b,x,G){b=b._reactInternals;var Se=fd(),We=bf(b),Rt=E(Se,We);Rt.tag=1,Rt.payload=x,null!=G&&(Rt.callback=G),N(b,Rt),Gf(b,We,Se)},enqueueForceUpdate:function(b,x){b=b._reactInternals;var G=fd(),Se=bf(b),We=E(G,Se);We.tag=2,null!=x&&(We.callback=x),N(b,We),Gf(b,Se,G)}};function Xe(b,x,G,Se,We,Rt,rn){return"function"==typeof(b=b.stateNode).shouldComponentUpdate?b.shouldComponentUpdate(Se,Rt,rn):!(x.prototype&&x.prototype.isPureReactComponent&&Lc(G,Se)&&Lc(We,Rt))}function gt(b,x,G){var Se=!1,We=Nu,Rt=x.contextType;return"object"==typeof Rt&&null!==Rt?Rt=Sl(Rt):(We=Ou(x)?tn:Qa.current,Rt=(Se=null!=(Se=x.contextTypes))?Mc(b,We):Nu),x=new x(G,Rt),b.memoizedState=null!=x.state?x.state:null,x.updater=we,b.stateNode=x,x._reactInternals=b,Se&&((b=b.stateNode).__reactInternalMemoizedUnmaskedChildContext=We,b.__reactInternalMemoizedMaskedChildContext=Rt),x}function vt(b,x,G,Se){b=x.state,"function"==typeof x.componentWillReceiveProps&&x.componentWillReceiveProps(G,Se),"function"==typeof x.UNSAFE_componentWillReceiveProps&&x.UNSAFE_componentWillReceiveProps(G,Se),x.state!==b&&we.enqueueReplaceState(x,x.state,null)}function Jt(b,x,G,Se){var We=b.stateNode;We.props=G,We.state=b.memoizedState,We.refs=be,$c(b);var Rt=x.contextType;"object"==typeof Rt&&null!==Rt?We.context=Sl(Rt):(Rt=Ou(x)?tn:Qa.current,We.context=Mc(b,Rt)),K(b,G,We,Se),We.state=b.memoizedState,"function"==typeof(Rt=x.getDerivedStateFromProps)&&(Ue(b,x,Rt,G),We.state=b.memoizedState),"function"==typeof x.getDerivedStateFromProps||"function"==typeof We.getSnapshotBeforeUpdate||"function"!=typeof We.UNSAFE_componentWillMount&&"function"!=typeof We.componentWillMount||(x=We.state,"function"==typeof We.componentWillMount&&We.componentWillMount(),"function"==typeof We.UNSAFE_componentWillMount&&We.UNSAFE_componentWillMount(),x!==We.state&&we.enqueueReplaceState(We,We.state,null),K(b,G,We,Se),We.state=b.memoizedState),"function"==typeof We.componentDidMount&&(b.flags|=4)}var Pn=Array.isArray;function Rn(b,x,G){if(null!==(b=G.ref)&&"function"!=typeof b&&"object"!=typeof b){if(G._owner){if(G=G._owner){if(1!==G.tag)throw Error(f(309));var Se=G.stateNode}if(!Se)throw Error(f(147,b));var We=""+b;return null!==x&&null!==x.ref&&"function"==typeof x.ref&&x.ref._stringRef===We?x.ref:((x=function(Rt){var rn=Se.refs;rn===be&&(rn=Se.refs={}),null===Rt?delete rn[We]:rn[We]=Rt})._stringRef=We,x)}if("string"!=typeof b)throw Error(f(284));if(!G._owner)throw Error(f(290,b))}return b}function sr(b,x){if("textarea"!==b.type)throw Error(f(31,"[object Object]"===Object.prototype.toString.call(x)?"object with keys {"+Object.keys(x).join(", ")+"}":x))}function jr(b){function x(ti,Sr){if(b){var Wr=ti.lastEffect;null!==Wr?(Wr.nextEffect=Sr,ti.lastEffect=Sr):ti.firstEffect=ti.lastEffect=Sr,Sr.nextEffect=null,Sr.flags=8}}function G(ti,Sr){if(!b)return null;for(;null!==Sr;)x(ti,Sr),Sr=Sr.sibling;return null}function Se(ti,Sr){for(ti=new Map;null!==Sr;)ti.set(null!==Sr.key?Sr.key:Sr.index,Sr),Sr=Sr.sibling;return ti}function We(ti,Sr){return(ti=Tp(ti,Sr)).index=0,ti.sibling=null,ti}function Rt(ti,Sr,Wr){return ti.index=Wr,b?null!==(Wr=ti.alternate)?(Wr=Wr.index)<Sr?(ti.flags=2,Sr):Wr:(ti.flags=2,Sr):Sr}function rn(ti){return b&&null===ti.alternate&&(ti.flags=2),ti}function xn(ti,Sr,Wr,Bi){return null===Sr||6!==Sr.tag?((Sr=kh(Wr,ti.mode,Bi)).return=ti,Sr):((Sr=We(Sr,Wr)).return=ti,Sr)}function Er(ti,Sr,Wr,Bi){return null!==Sr&&Sr.elementType===Wr.type?((Bi=We(Sr,Wr.props)).ref=Rn(ti,Sr,Wr),Bi.return=ti,Bi):((Bi=f_(Wr.type,Wr.key,Wr.props,null,ti.mode,Bi)).ref=Rn(ti,Sr,Wr),Bi.return=ti,Bi)}function Ei(ti,Sr,Wr,Bi){return null===Sr||4!==Sr.tag||Sr.stateNode.containerInfo!==Wr.containerInfo||Sr.stateNode.implementation!==Wr.implementation?((Sr=$h(Wr,ti.mode,Bi)).return=ti,Sr):((Sr=We(Sr,Wr.children||[])).return=ti,Sr)}function fs(ti,Sr,Wr,Bi,ao){return null===Sr||7!==Sr.tag?((Sr=Qc(Wr,ti.mode,Bi,ao)).return=ti,Sr):((Sr=We(Sr,Wr)).return=ti,Sr)}function Ua(ti,Sr,Wr){if("string"==typeof Sr||"number"==typeof Sr)return(Sr=kh(""+Sr,ti.mode,Wr)).return=ti,Sr;if("object"==typeof Sr&&null!==Sr){switch(Sr.$$typeof){case me:return(Wr=f_(Sr.type,Sr.key,Sr.props,null,ti.mode,Wr)).ref=Rn(ti,null,Sr),Wr.return=ti,Wr;case Oe:return(Sr=$h(Sr,ti.mode,Wr)).return=ti,Sr}if(Pn(Sr)||Dt(Sr))return(Sr=Qc(Sr,ti.mode,Wr,null)).return=ti,Sr;sr(ti,Sr)}return null}function mo(ti,Sr,Wr,Bi){var ao=null!==Sr?Sr.key:null;if("string"==typeof Wr||"number"==typeof Wr)return null!==ao?null:xn(ti,Sr,""+Wr,Bi);if("object"==typeof Wr&&null!==Wr){switch(Wr.$$typeof){case me:return Wr.key===ao?Wr.type===ce?fs(ti,Sr,Wr.props.children,Bi,ao):Er(ti,Sr,Wr,Bi):null;case Oe:return Wr.key===ao?Ei(ti,Sr,Wr,Bi):null}if(Pn(Wr)||Dt(Wr))return null!==ao?null:fs(ti,Sr,Wr,Bi,null);sr(ti,Wr)}return null}function _o(ti,Sr,Wr,Bi,ao){if("string"==typeof Bi||"number"==typeof Bi)return xn(Sr,ti=ti.get(Wr)||null,""+Bi,ao);if("object"==typeof Bi&&null!==Bi){switch(Bi.$$typeof){case me:return ti=ti.get(null===Bi.key?Wr:Bi.key)||null,Bi.type===ce?fs(Sr,ti,Bi.props.children,ao,Bi.key):Er(Sr,ti,Bi,ao);case Oe:return Ei(Sr,ti=ti.get(null===Bi.key?Wr:Bi.key)||null,Bi,ao)}if(Pn(Bi)||Dt(Bi))return fs(Sr,ti=ti.get(Wr)||null,Bi,ao,null);sr(Sr,Bi)}return null}return function(ti,Sr,Wr,Bi){var ao="object"==typeof Wr&&null!==Wr&&Wr.type===ce&&null===Wr.key;ao&&(Wr=Wr.props.children);var ba="object"==typeof Wr&&null!==Wr;if(ba)switch(Wr.$$typeof){case me:e:{for(ba=Wr.key,ao=Sr;null!==ao;){if(ao.key===ba){switch(ao.tag){case 7:if(Wr.type===ce){G(ti,ao.sibling),(Sr=We(ao,Wr.props.children)).return=ti,ti=Sr;break e}break;default:if(ao.elementType===Wr.type){G(ti,ao.sibling),(Sr=We(ao,Wr.props)).ref=Rn(ti,ao,Wr),Sr.return=ti,ti=Sr;break e}}G(ti,ao);break}x(ti,ao),ao=ao.sibling}Wr.type===ce?((Sr=Qc(Wr.props.children,ti.mode,Bi,Wr.key)).return=ti,ti=Sr):((Bi=f_(Wr.type,Wr.key,Wr.props,null,ti.mode,Bi)).ref=Rn(ti,Sr,Wr),Bi.return=ti,ti=Bi)}return rn(ti);case Oe:e:{for(ao=Wr.key;null!==Sr;){if(Sr.key===ao){if(4===Sr.tag&&Sr.stateNode.containerInfo===Wr.containerInfo&&Sr.stateNode.implementation===Wr.implementation){G(ti,Sr.sibling),(Sr=We(Sr,Wr.children||[])).return=ti,ti=Sr;break e}G(ti,Sr);break}x(ti,Sr),Sr=Sr.sibling}(Sr=$h(Wr,ti.mode,Bi)).return=ti,ti=Sr}return rn(ti)}if("string"==typeof Wr||"number"==typeof Wr)return Wr=""+Wr,null!==Sr&&6===Sr.tag?(G(ti,Sr.sibling),(Sr=We(Sr,Wr)).return=ti,ti=Sr):(G(ti,Sr),(Sr=kh(Wr,ti.mode,Bi)).return=ti,ti=Sr),rn(ti);if(Pn(Wr))return function(ti,Sr,Wr,Bi){for(var ao=null,ba=null,Os=Sr,Xa=Sr=0,Dl=null;null!==Os&&Xa<Wr.length;Xa++){Os.index>Xa?(Dl=Os,Os=null):Dl=Os.sibling;var Cl=mo(ti,Os,Wr[Xa],Bi);if(null===Cl){null===Os&&(Os=Dl);break}b&&Os&&null===Cl.alternate&&x(ti,Os),Sr=Rt(Cl,Sr,Xa),null===ba?ao=Cl:ba.sibling=Cl,ba=Cl,Os=Dl}if(Xa===Wr.length)return G(ti,Os),ao;if(null===Os){for(;Xa<Wr.length;Xa++)null!==(Os=Ua(ti,Wr[Xa],Bi))&&(Sr=Rt(Os,Sr,Xa),null===ba?ao=Os:ba.sibling=Os,ba=Os);return ao}for(Os=Se(ti,Os);Xa<Wr.length;Xa++)null!==(Dl=_o(Os,ti,Xa,Wr[Xa],Bi))&&(b&&null!==Dl.alternate&&Os.delete(null===Dl.key?Xa:Dl.key),Sr=Rt(Dl,Sr,Xa),null===ba?ao=Dl:ba.sibling=Dl,ba=Dl);return b&&Os.forEach(function(jp){return x(ti,jp)}),ao}(ti,Sr,Wr,Bi);if(Dt(Wr))return function(ti,Sr,Wr,Bi){var ao=Dt(Wr);if("function"!=typeof ao)throw Error(f(150));if(null==(Wr=ao.call(Wr)))throw Error(f(151));for(var ba=ao=null,Os=Sr,Xa=Sr=0,Dl=null,Cl=Wr.next();null!==Os&&!Cl.done;Xa++,Cl=Wr.next()){Os.index>Xa?(Dl=Os,Os=null):Dl=Os.sibling;var jp=mo(ti,Os,Cl.value,Bi);if(null===jp){null===Os&&(Os=Dl);break}b&&Os&&null===jp.alternate&&x(ti,Os),Sr=Rt(jp,Sr,Xa),null===ba?ao=jp:ba.sibling=jp,ba=jp,Os=Dl}if(Cl.done)return G(ti,Os),ao;if(null===Os){for(;!Cl.done;Xa++,Cl=Wr.next())null!==(Cl=Ua(ti,Cl.value,Bi))&&(Sr=Rt(Cl,Sr,Xa),null===ba?ao=Cl:ba.sibling=Cl,ba=Cl);return ao}for(Os=Se(ti,Os);!Cl.done;Xa++,Cl=Wr.next())null!==(Cl=_o(Os,ti,Xa,Cl.value,Bi))&&(b&&null!==Cl.alternate&&Os.delete(null===Cl.key?Xa:Cl.key),Sr=Rt(Cl,Sr,Xa),null===ba?ao=Cl:ba.sibling=Cl,ba=Cl);return b&&Os.forEach(function(d1){return x(ti,d1)}),ao}(ti,Sr,Wr,Bi);if(ba&&sr(ti,Wr),void 0===Wr&&!ao)switch(ti.tag){case 1:case 22:case 0:case 11:case 15:throw Error(f(152,wr(ti.type)||"Component"))}return G(ti,Sr)}}var Ni=jr(!0),Vo=jr(!1),$o={},Vs=Tl($o),qs=Tl($o),dl=Tl($o);function ga(b){if(b===$o)throw Error(f(174));return b}function sa(b,x){switch(kl(dl,x),kl(qs,b),kl(Vs,$o),b=x.nodeType){case 9:case 11:x=(x=x.documentElement)?x.namespaceURI:gn(null,"");break;default:x=gn(x=(b=8===b?x.parentNode:x).namespaceURI||null,b=b.tagName)}xl(Vs),kl(Vs,x)}function Pa(){xl(Vs),xl(qs),xl(dl)}function ol(b){ga(dl.current);var x=ga(Vs.current),G=gn(x,b.type);x!==G&&(kl(qs,b),kl(Vs,G))}function Eu(b){qs.current===b&&(xl(Vs),xl(qs))}var wa=Tl(0);function au(b){for(var x=b;null!==x;){if(13===x.tag){var G=x.memoizedState;if(null!==G&&(null===(G=G.dehydrated)||"$?"===G.data||"$!"===G.data))return x}else if(19===x.tag&&void 0!==x.memoizedProps.revealOrder){if(0!=(64&x.flags))return x}else if(null!==x.child){x.child.return=x,x=x.child;continue}if(x===b)break;for(;null===x.sibling;){if(null===x.return||x.return===b)return null;x=x.return}x.sibling.return=x.return,x=x.sibling}return null}var mu=null,xc=null,ic=!1;function gf(b,x){var G=Yd(5,null,null,0);G.elementType="DELETED",G.type="DELETED",G.stateNode=x,G.return=b,G.flags=8,null!==b.lastEffect?(b.lastEffect.nextEffect=G,b.lastEffect=G):b.firstEffect=b.lastEffect=G}function Ga(b,x){switch(b.tag){case 5:return null!==(x=1!==x.nodeType||b.type.toLowerCase()!==x.nodeName.toLowerCase()?null:x)&&(b.stateNode=x,!0);case 6:return null!==(x=""===b.pendingProps||3!==x.nodeType?null:x)&&(b.stateNode=x,!0);case 13:default:return!1}}function X(b){if(ic){var x=xc;if(x){var G=x;if(!Ga(b,x)){if(!(x=va(G.nextSibling))||!Ga(b,x))return b.flags=-1025&b.flags|2,ic=!1,void(mu=b);gf(mu,G)}mu=b,xc=va(x.firstChild)}else b.flags=-1025&b.flags|2,ic=!1,mu=b}}function ye(b){for(b=b.return;null!==b&&5!==b.tag&&3!==b.tag&&13!==b.tag;)b=b.return;mu=b}function nt(b){if(b!==mu)return!1;if(!ic)return ye(b),ic=!0,!1;var x=b.type;if(5!==b.tag||"head"!==x&&"body"!==x&&!ss(x,b.memoizedProps))for(x=xc;x;)gf(b,x),x=va(x.nextSibling);if(ye(b),13===b.tag){if(!(b=null!==(b=b.memoizedState)?b.dehydrated:null))throw Error(f(317));e:{for(b=b.nextSibling,x=0;b;){if(8===b.nodeType){var G=b.data;if("/$"===G){if(0===x){xc=va(b.nextSibling);break e}x--}else"$"!==G&&"$!"!==G&&"$?"!==G||x++}b=b.nextSibling}xc=null}}else xc=mu?va(b.stateNode.nextSibling):null;return!0}function bt(){xc=mu=null,ic=!1}var Qt=[];function fr(){for(var b=0;b<Qt.length;b++)Qt[b]._workInProgressVersionPrimary=null;Qt.length=0}var vi=he.ReactCurrentDispatcher,ps=he.ReactCurrentBatchConfig,xa=0,ia=null,_l=null,Jl=null,Wc=!1,Kf=!1;function Ld(){throw Error(f(321))}function $p(b,x){if(null===x)return!1;for(var G=0;G<x.length&&G<b.length;G++)if(!Ks(b[G],x[G]))return!1;return!0}function Hp(b,x,G,Se,We,Rt){if(xa=Rt,ia=x,x.memoizedState=null,x.updateQueue=null,x.lanes=0,vi.current=null===b||null===b.memoizedState?Dh:$d,b=G(Se,We),Kf){Rt=0;do{if(Kf=!1,!(25>Rt))throw Error(f(301));Rt+=1,Jl=_l=null,x.updateQueue=null,vi.current=pp,b=G(Se,We)}while(Kf)}if(vi.current=vf,x=null!==_l&&null!==_l.next,xa=0,Jl=_l=ia=null,Wc=!1,x)throw Error(f(300));return b}function mf(){var b={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Jl?ia.memoizedState=Jl=b:Jl=Jl.next=b,Jl}function $f(){if(null===_l){var b=ia.alternate;b=null!==b?b.memoizedState:null}else b=_l.next;var x=null===Jl?ia.memoizedState:Jl.next;if(null!==x)Jl=x,_l=b;else{if(null===b)throw Error(f(310));b={memoizedState:(_l=b).memoizedState,baseState:_l.baseState,baseQueue:_l.baseQueue,queue:_l.queue,next:null},null===Jl?ia.memoizedState=Jl=b:Jl=Jl.next=b}return Jl}function dd(b,x){return"function"==typeof x?x(b):x}function Fd(b){var x=$f(),G=x.queue;if(null===G)throw Error(f(311));G.lastRenderedReducer=b;var Se=_l,We=Se.baseQueue,Rt=G.pending;if(null!==Rt){if(null!==We){var rn=We.next;We.next=Rt.next,Rt.next=rn}Se.baseQueue=We=Rt,G.pending=null}if(null!==We){Se=Se.baseState;var xn=rn=Rt=null,Er=We=We.next;do{var Ei=Er.lane;if((xa&Ei)===Ei)null!==xn&&(xn=xn.next={lane:0,action:Er.action,eagerReducer:Er.eagerReducer,eagerState:Er.eagerState,next:null}),Se=Er.eagerReducer===b?Er.eagerState:b(Se,Er.action);else{var fs={lane:Ei,action:Er.action,eagerReducer:Er.eagerReducer,eagerState:Er.eagerState,next:null};null===xn?(rn=xn=fs,Rt=Se):xn=xn.next=fs,ia.lanes|=Ei,Zf|=Ei}Er=Er.next}while(null!==Er&&Er!==We);null===xn?Rt=Se:xn.next=rn,Ks(Se,x.memoizedState)||(Kd=!0),x.memoizedState=Se,x.baseState=Rt,x.baseQueue=xn,G.lastRenderedState=Se}return[x.memoizedState,G.dispatch]}function fp(b){var x=$f(),G=x.queue;if(null===G)throw Error(f(311));G.lastRenderedReducer=b;var Se=G.dispatch,We=G.pending,Rt=x.memoizedState;if(null!==We){G.pending=null;var rn=We=We.next;do{Rt=b(Rt,rn.action),rn=rn.next}while(rn!==We);Ks(Rt,x.memoizedState)||(Kd=!0),x.memoizedState=Rt,null===x.baseQueue&&(x.baseState=Rt),G.lastRenderedState=Rt}return[Rt,Se]}function fl(b,x,G){var Se=x._getVersion;Se=Se(x._source);var We=x._workInProgressVersionPrimary;if(null!==We?b=We===Se:(b=(xa&(b=b.mutableReadLanes))===b)&&(x._workInProgressVersionPrimary=Se,Qt.push(x)),b)return G(x._source);throw Qt.push(x),Error(f(350))}function Kh(b,x,G,Se){var We=Hc;if(null===We)throw Error(f(349));var Rt=x._getVersion,rn=Rt(x._source),xn=vi.current,Er=xn.useState(function(){return fl(We,x,G)}),Ei=Er[1],fs=Er[0];Er=Jl;var Ua=b.memoizedState,mo=Ua.refs,_o=mo.getSnapshot,La=Ua.source;Ua=Ua.subscribe;var Sa=ia;return b.memoizedState={refs:mo,source:x,subscribe:Se},xn.useEffect(function(){mo.getSnapshot=G,mo.setSnapshot=Ei;var ti=Rt(x._source);if(!Ks(rn,ti)){ti=G(x._source),Ks(fs,ti)||(Ei(ti),ti=bf(Sa),We.mutableReadLanes|=ti&We.pendingLanes),We.entangledLanes|=ti=We.mutableReadLanes;for(var Sr=We.entanglements,Wr=ti;0<Wr;){var Bi=31-al(Wr),ao=1<<Bi;Sr[Bi]|=ti,Wr&=~ao}}},[G,x,Se]),xn.useEffect(function(){return Se(x._source,function(){var ti=mo.getSnapshot,Sr=mo.setSnapshot;try{Sr(ti(x._source));var Wr=bf(Sa);We.mutableReadLanes|=Wr&We.pendingLanes}catch(Bi){Sr(function(){throw Bi})}})},[x,Se]),Ks(_o,G)&&Ks(La,x)&&Ks(Ua,Se)||((b={pending:null,dispatch:null,lastRenderedReducer:dd,lastRenderedState:fs}).dispatch=Ei=xh.bind(null,ia,b),Er.queue=b,Er.baseQueue=null,fs=fl(We,x,G),Er.memoizedState=Er.baseState=fs),fs}function F_(b,x,G){return Kh($f(),b,x,G)}function Hf(b){var x=mf();return"function"==typeof b&&(b=b()),x.memoizedState=x.baseState=b,b=(b=x.queue={pending:null,dispatch:null,lastRenderedReducer:dd,lastRenderedState:b}).dispatch=xh.bind(null,ia,b),[x.memoizedState,b]}function kd(b,x,G,Se){return b={tag:b,create:x,destroy:G,deps:Se,next:null},null===(x=ia.updateQueue)?(ia.updateQueue=x={lastEffect:null},x.lastEffect=b.next=b):null===(G=x.lastEffect)?x.lastEffect=b.next=b:(Se=G.next,G.next=b,b.next=Se,x.lastEffect=b),b}function Uf(b){return mf().memoizedState={current:b}}function Kp(){return $f().memoizedState}function Ed(b,x,G,Se){var We=mf();ia.flags|=b,We.memoizedState=kd(1|x,G,void 0,void 0===Se?null:Se)}function Ah(b,x,G,Se){var We=$f();Se=void 0===Se?null:Se;var Rt=void 0;if(null!==_l){var rn=_l.memoizedState;if(Rt=rn.destroy,null!==Se&&$p(Se,rn.deps))return void kd(x,G,Rt,Se)}ia.flags|=b,We.memoizedState=kd(1|x,G,Rt,Se)}function qp(b,x){return Ed(516,4,b,x)}function eh(b,x){return Ah(516,4,b,x)}function Oh(b,x){return Ah(4,2,b,x)}function th(b,x){return"function"==typeof x?(b=b(),x(b),function(){x(null)}):null!=x?(b=b(),x.current=b,function(){x.current=null}):void 0}function Td(b,x,G){return G=null!=G?G.concat([b]):null,Ah(4,2,th.bind(null,x,b),G)}function xf(){}function wh(b,x){var G=$f();x=void 0===x?null:x;var Se=G.memoizedState;return null!==Se&&null!==x&&$p(x,Se[1])?Se[0]:(G.memoizedState=[b,x],b)}function Up(b,x){var G=$f();x=void 0===x?null:x;var Se=G.memoizedState;return null!==Se&&null!==x&&$p(x,Se[1])?Se[0]:(b=b(),G.memoizedState=[b,x],b)}function nh(b,x){var G=Ll();il(98>G?98:G,function(){b(!0)}),il(97<G?97:G,function(){var Se=ps.transition;ps.transition=1;try{b(!1),x()}finally{ps.transition=Se}})}function xh(b,x,G){var Se=fd(),We=bf(b),Rt={lane:We,action:G,eagerReducer:null,eagerState:null,next:null},rn=x.pending;if(null===rn?Rt.next=Rt:(Rt.next=rn.next,rn.next=Rt),x.pending=Rt,rn=b.alternate,b===ia||null!==rn&&rn===ia)Kf=Wc=!0;else{if(0===b.lanes&&(null===rn||0===rn.lanes)&&null!==(rn=x.lastRenderedReducer))try{var xn=x.lastRenderedState,Er=rn(xn,G);if(Rt.eagerReducer=rn,Rt.eagerState=Er,Ks(Er,xn))return}catch(Ei){}Gf(b,We,Se)}}var vf={readContext:Sl,useCallback:Ld,useContext:Ld,useEffect:Ld,useImperativeHandle:Ld,useLayoutEffect:Ld,useMemo:Ld,useReducer:Ld,useRef:Ld,useState:Ld,useDebugValue:Ld,useDeferredValue:Ld,useTransition:Ld,useMutableSource:Ld,useOpaqueIdentifier:Ld,unstable_isNewReconciler:!1},Dh={readContext:Sl,useCallback:function(b,x){return mf().memoizedState=[b,void 0===x?null:x],b},useContext:Sl,useEffect:qp,useImperativeHandle:function(b,x,G){return G=null!=G?G.concat([b]):null,Ed(4,2,th.bind(null,x,b),G)},useLayoutEffect:function(b,x){return Ed(4,2,b,x)},useMemo:function(b,x){var G=mf();return x=void 0===x?null:x,b=b(),G.memoizedState=[b,x],b},useReducer:function(b,x,G){var Se=mf();return x=void 0!==G?G(x):x,Se.memoizedState=Se.baseState=x,b=(b=Se.queue={pending:null,dispatch:null,lastRenderedReducer:b,lastRenderedState:x}).dispatch=xh.bind(null,ia,b),[Se.memoizedState,b]},useRef:Uf,useState:Hf,useDebugValue:xf,useDeferredValue:function(b){var x=Hf(b),G=x[0],Se=x[1];return qp(function(){var We=ps.transition;ps.transition=1;try{Se(b)}finally{ps.transition=We}},[b]),G},useTransition:function(){var b=Hf(!1),x=b[0];return Uf(b=nh.bind(null,b[1])),[b,x]},useMutableSource:function(b,x,G){var Se=mf();return Se.memoizedState={refs:{getSnapshot:x,setSnapshot:null},source:b,subscribe:G},Kh(Se,b,x,G)},useOpaqueIdentifier:function(){if(ic){var b=!1,x=function(b){return{$$typeof:$t,toString:b,valueOf:b}}(function(){throw b||(b=!0,G("r:"+(tl++).toString(36))),Error(f(355))}),G=Hf(x)[1];return 0==(2&ia.mode)&&(ia.flags|=516,kd(5,function(){G("r:"+(tl++).toString(36))},void 0,null)),x}return Hf(x="r:"+(tl++).toString(36)),x},unstable_isNewReconciler:!1},$d={readContext:Sl,useCallback:wh,useContext:Sl,useEffect:eh,useImperativeHandle:Td,useLayoutEffect:Oh,useMemo:Up,useReducer:Fd,useRef:Kp,useState:function(){return Fd(dd)},useDebugValue:xf,useDeferredValue:function(b){var x=Fd(dd),G=x[0],Se=x[1];return eh(function(){var We=ps.transition;ps.transition=1;try{Se(b)}finally{ps.transition=We}},[b]),G},useTransition:function(){var b=Fd(dd)[0];return[Kp().current,b]},useMutableSource:F_,useOpaqueIdentifier:function(){return Fd(dd)[0]},unstable_isNewReconciler:!1},pp={readContext:Sl,useCallback:wh,useContext:Sl,useEffect:eh,useImperativeHandle:Td,useLayoutEffect:Oh,useMemo:Up,useReducer:fp,useRef:Kp,useState:function(){return fp(dd)},useDebugValue:xf,useDeferredValue:function(b){var x=fp(dd),G=x[0],Se=x[1];return eh(function(){var We=ps.transition;ps.transition=1;try{Se(b)}finally{ps.transition=We}},[b]),G},useTransition:function(){var b=fp(dd)[0];return[Kp().current,b]},useMutableSource:F_,useOpaqueIdentifier:function(){return fp(dd)[0]},unstable_isNewReconciler:!1},Bf=he.ReactCurrentOwner,Kd=!1;function oc(b,x,G,Se){x.child=null===b?Vo(x,null,G,Se):Ni(x,b.child,G,Se)}function rh(b,x,G,Se,We){G=G.render;var Rt=x.ref;return Id(x,We),Se=Hp(b,x,G,Se,Rt,We),null===b||Kd?(x.flags|=1,oc(b,x,Se,We),x.child):(x.updateQueue=b.updateQueue,x.flags&=-517,b.lanes&=~We,ya(b,x,We))}function k_(b,x,G,Se,We,Rt){if(null===b){var rn=G.type;return"function"!=typeof rn||Tg(rn)||void 0!==rn.defaultProps||null!==G.compare||void 0!==G.defaultProps?((b=f_(G.type,null,Se,x,x.mode,Rt)).ref=x.ref,b.return=x,x.child=b):(x.tag=15,x.type=rn,qh(b,x,rn,Se,We,Rt))}return rn=b.child,0==(We&Rt)&&(G=null!==(G=G.compare)?G:Lc)(We=rn.memoizedProps,Se)&&b.ref===x.ref?ya(b,x,Rt):(x.flags|=1,(b=Tp(rn,Se)).ref=x.ref,b.return=x,x.child=b)}function qh(b,x,G,Se,We,Rt){if(null!==b&&Lc(b.memoizedProps,Se)&&b.ref===x.ref){if(Kd=!1,0==(Rt&We))return x.lanes=b.lanes,ya(b,x,Rt);0!=(16384&b.flags)&&(Kd=!0)}return w(b,x,G,Se,Rt)}function Y(b,x,G){var Se=x.pendingProps,We=Se.children,Rt=null!==b?b.memoizedState:null;if("hidden"===Se.mode||"unstable-defer-without-hiding"===Se.mode)if(0==(4&x.mode))x.memoizedState={baseLanes:0},Uc(0,G);else{if(0==(1073741824&G))return b=null!==Rt?Rt.baseLanes|G:G,x.lanes=x.childLanes=1073741824,x.memoizedState={baseLanes:b},Uc(0,b),null;x.memoizedState={baseLanes:0},Uc(0,null!==Rt?Rt.baseLanes:G)}else null!==Rt?(Se=Rt.baseLanes|G,x.memoizedState=null):Se=G,Uc(0,Se);return oc(b,x,We,G),x.child}function fe(b,x){var G=x.ref;(null===b&&null!==G||null!==b&&b.ref!==G)&&(x.flags|=128)}function w(b,x,G,Se,We){var Rt=Ou(G)?tn:Qa.current;return Rt=Mc(x,Rt),Id(x,We),G=Hp(b,x,G,Se,Rt,We),null===b||Kd?(x.flags|=1,oc(b,x,G,We),x.child):(x.updateQueue=b.updateQueue,x.flags&=-517,b.lanes&=~We,ya(b,x,We))}function q(b,x,G,Se,We){if(Ou(G)){var Rt=!0;Xl(x)}else Rt=!1;if(Id(x,We),null===x.stateNode)null!==b&&(b.alternate=null,x.alternate=null,x.flags|=2),gt(x,G,Se),Jt(x,G,Se,We),Se=!0;else if(null===b){var rn=x.stateNode,xn=x.memoizedProps;rn.props=xn;var Er=rn.context,Ei=G.contextType;Ei="object"==typeof Ei&&null!==Ei?Sl(Ei):Mc(x,Ei=Ou(G)?tn:Qa.current);var fs=G.getDerivedStateFromProps,Ua="function"==typeof fs||"function"==typeof rn.getSnapshotBeforeUpdate;Ua||"function"!=typeof rn.UNSAFE_componentWillReceiveProps&&"function"!=typeof rn.componentWillReceiveProps||(xn!==Se||Er!==Ei)&&vt(x,rn,Se,Ei),kc=!1;var mo=x.memoizedState;rn.state=mo,K(x,Se,rn,We),Er=x.memoizedState,xn!==Se||mo!==Er||Wu.current||kc?("function"==typeof fs&&(Ue(x,G,fs,Se),Er=x.memoizedState),(xn=kc||Xe(x,G,xn,Se,mo,Er,Ei))?(Ua||"function"!=typeof rn.UNSAFE_componentWillMount&&"function"!=typeof rn.componentWillMount||("function"==typeof rn.componentWillMount&&rn.componentWillMount(),"function"==typeof rn.UNSAFE_componentWillMount&&rn.UNSAFE_componentWillMount()),"function"==typeof rn.componentDidMount&&(x.flags|=4)):("function"==typeof rn.componentDidMount&&(x.flags|=4),x.memoizedProps=Se,x.memoizedState=Er),rn.props=Se,rn.state=Er,rn.context=Ei,Se=xn):("function"==typeof rn.componentDidMount&&(x.flags|=4),Se=!1)}else{rn=x.stateNode,h(b,x),xn=x.memoizedProps,Ei=x.type===x.elementType?xn:Wl(x.type,xn),rn.props=Ei,Ua=x.pendingProps,mo=rn.context,Er="object"==typeof(Er=G.contextType)&&null!==Er?Sl(Er):Mc(x,Er=Ou(G)?tn:Qa.current);var _o=G.getDerivedStateFromProps;(fs="function"==typeof _o||"function"==typeof rn.getSnapshotBeforeUpdate)||"function"!=typeof rn.UNSAFE_componentWillReceiveProps&&"function"!=typeof rn.componentWillReceiveProps||(xn!==Ua||mo!==Er)&&vt(x,rn,Se,Er),kc=!1,rn.state=mo=x.memoizedState,K(x,Se,rn,We);var La=x.memoizedState;xn!==Ua||mo!==La||Wu.current||kc?("function"==typeof _o&&(Ue(x,G,_o,Se),La=x.memoizedState),(Ei=kc||Xe(x,G,Ei,Se,mo,La,Er))?(fs||"function"!=typeof rn.UNSAFE_componentWillUpdate&&"function"!=typeof rn.componentWillUpdate||("function"==typeof rn.componentWillUpdate&&rn.componentWillUpdate(Se,La,Er),"function"==typeof rn.UNSAFE_componentWillUpdate&&rn.UNSAFE_componentWillUpdate(Se,La,Er)),"function"==typeof rn.componentDidUpdate&&(x.flags|=4),"function"==typeof rn.getSnapshotBeforeUpdate&&(x.flags|=256)):("function"!=typeof rn.componentDidUpdate||xn===b.memoizedProps&&mo===b.memoizedState||(x.flags|=4),"function"!=typeof rn.getSnapshotBeforeUpdate||xn===b.memoizedProps&&mo===b.memoizedState||(x.flags|=256),x.memoizedProps=Se,x.memoizedState=La),rn.props=Se,rn.state=La,rn.context=Er,Se=Ei):("function"!=typeof rn.componentDidUpdate||xn===b.memoizedProps&&mo===b.memoizedState||(x.flags|=4),"function"!=typeof rn.getSnapshotBeforeUpdate||xn===b.memoizedProps&&mo===b.memoizedState||(x.flags|=256),Se=!1)}return Fe(b,x,G,Se,Rt,We)}function Fe(b,x,G,Se,We,Rt){fe(b,x);var rn=0!=(64&x.flags);if(!Se&&!rn)return We&&yd(x,G,!1),ya(b,x,Rt);Se=x.stateNode,Bf.current=x;var xn=rn&&"function"!=typeof G.getDerivedStateFromError?null:Se.render();return x.flags|=1,null!==b&&rn?(x.child=Ni(x,b.child,null,Rt),x.child=Ni(x,null,xn,Rt)):oc(b,x,xn,Rt),x.memoizedState=Se.state,We&&yd(x,G,!0),x.child}function ut(b){var x=b.stateNode;x.pendingContext?rl(0,x.pendingContext,x.pendingContext!==x.context):x.context&&rl(0,x.context,!1),sa(b,x.containerInfo)}var zs,rd,wu,Xn={dehydrated:null,retryLane:0};function Fr(b,x,G){var rn,Se=x.pendingProps,We=wa.current,Rt=!1;return(rn=0!=(64&x.flags))||(rn=(null===b||null!==b.memoizedState)&&0!=(2&We)),rn?(Rt=!0,x.flags&=-65):null!==b&&null===b.memoizedState||void 0===Se.fallback||!0===Se.unstable_avoidThisFallback||(We|=1),kl(wa,1&We),null===b?(void 0!==Se.fallback&&X(x),b=Se.children,We=Se.fallback,Rt?(b=gi(x,b,We,G),x.child.memoizedState={baseLanes:G},x.memoizedState=Xn,b):"number"==typeof Se.unstable_expectedLoadTime?(b=gi(x,b,We,G),x.child.memoizedState={baseLanes:G},x.memoizedState=Xn,x.lanes=33554432,b):((G=J_({mode:"visible",children:b},x.mode,G,null)).return=x,x.child=G)):Rt?(Se=function(b,x,G,Se,We){var Rt=x.mode,rn=b.child;b=rn.sibling;var xn={mode:"hidden",children:G};return 0==(2&Rt)&&x.child!==rn?((G=x.child).childLanes=0,G.pendingProps=xn,null!==(rn=G.lastEffect)?(x.firstEffect=G.firstEffect,x.lastEffect=rn,rn.nextEffect=null):x.firstEffect=x.lastEffect=null):G=Tp(rn,xn),null!==b?Se=Tp(b,Se):(Se=Qc(Se,Rt,We,null)).flags|=2,Se.return=x,G.return=x,G.sibling=Se,x.child=G,Se}(b,x,Se.children,Se.fallback,G),(Rt=x.child).memoizedState=null===(We=b.child.memoizedState)?{baseLanes:G}:{baseLanes:We.baseLanes|G},Rt.childLanes=b.childLanes&~G,x.memoizedState=Xn,Se):(G=function(b,x,G,Se){var We=b.child;return b=We.sibling,G=Tp(We,{mode:"visible",children:G}),0==(2&x.mode)&&(G.lanes=Se),G.return=x,G.sibling=null,null!==b&&(b.nextEffect=null,b.flags=8,x.firstEffect=x.lastEffect=b),x.child=G}(b,x,Se.children,G),x.memoizedState=null,G)}function gi(b,x,G,Se){var We=b.mode,Rt=b.child;return x={mode:"hidden",children:x},0==(2&We)&&null!==Rt?(Rt.childLanes=0,Rt.pendingProps=x):Rt=J_(x,We,0,null),G=Qc(G,We,Se,null),Rt.return=b,G.return=b,Rt.sibling=G,b.child=Rt,G}function Ns(b,x){b.lanes|=x;var G=b.alternate;null!==G&&(G.lanes|=x),fu(b.return,x)}function ts(b,x,G,Se,We,Rt){var rn=b.memoizedState;null===rn?b.memoizedState={isBackwards:x,rendering:null,renderingStartTime:0,last:Se,tail:G,tailMode:We,lastEffect:Rt}:(rn.isBackwards=x,rn.rendering=null,rn.renderingStartTime=0,rn.last=Se,rn.tail=G,rn.tailMode=We,rn.lastEffect=Rt)}function Is(b,x,G){var Se=x.pendingProps,We=Se.revealOrder,Rt=Se.tail;if(oc(b,x,Se.children,G),0!=(2&(Se=wa.current)))Se=1&Se|2,x.flags|=64;else{if(null!==b&&0!=(64&b.flags))e:for(b=x.child;null!==b;){if(13===b.tag)null!==b.memoizedState&&Ns(b,G);else if(19===b.tag)Ns(b,G);else if(null!==b.child){b.child.return=b,b=b.child;continue}if(b===x)break e;for(;null===b.sibling;){if(null===b.return||b.return===x)break e;b=b.return}b.sibling.return=b.return,b=b.sibling}Se&=1}if(kl(wa,Se),0==(2&x.mode))x.memoizedState=null;else switch(We){case"forwards":for(G=x.child,We=null;null!==G;)null!==(b=G.alternate)&&null===au(b)&&(We=G),G=G.sibling;null===(G=We)?(We=x.child,x.child=null):(We=G.sibling,G.sibling=null),ts(x,!1,We,G,Rt,x.lastEffect);break;case"backwards":for(G=null,We=x.child,x.child=null;null!==We;){if(null!==(b=We.alternate)&&null===au(b)){x.child=We;break}b=We.sibling,We.sibling=G,G=We,We=b}ts(x,!0,G,null,Rt,x.lastEffect);break;case"together":ts(x,!1,null,null,void 0,x.lastEffect);break;default:x.memoizedState=null}return x.child}function ya(b,x,G){if(null!==b&&(x.dependencies=b.dependencies),Zf|=x.lanes,0!=(G&x.childLanes)){if(null!==b&&x.child!==b.child)throw Error(f(153));if(null!==x.child){for(G=Tp(b=x.child,b.pendingProps),x.child=G,G.return=x;null!==b.sibling;)(G=G.sibling=Tp(b=b.sibling,b.pendingProps)).return=x;G.sibling=null}return x.child}return null}function Hd(b,x){if(!ic)switch(b.tailMode){case"hidden":x=b.tail;for(var G=null;null!==x;)null!==x.alternate&&(G=x),x=x.sibling;null===G?b.tail=null:G.sibling=null;break;case"collapsed":G=b.tail;for(var Se=null;null!==G;)null!==G.alternate&&(Se=G),G=G.sibling;null===Se?x||null===b.tail?b.tail=null:b.tail.sibling=null:Se.sibling=null}}function $_(b,x,G){var Se=x.pendingProps;switch(x.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ou(x.type)&&Pu(),null;case 3:return Pa(),xl(Wu),xl(Qa),fr(),(Se=x.stateNode).pendingContext&&(Se.context=Se.pendingContext,Se.pendingContext=null),(null===b||null===b.child)&&(nt(x)?x.flags|=4:Se.hydrate||(x.flags|=256)),null;case 5:Eu(x);var We=ga(dl.current);if(G=x.type,null!==b&&null!=x.stateNode)rd(b,x,G,Se),b.ref!==x.ref&&(x.flags|=128);else{if(!Se){if(null===x.stateNode)throw Error(f(166));return null}if(b=ga(Vs.current),nt(x)){G=x.type;var Rt=x.memoizedProps;switch((Se=x.stateNode)[nl]=x,Se[Of]=Rt,G){case"dialog":ul("cancel",Se),ul("close",Se);break;case"iframe":case"object":case"embed":ul("load",Se);break;case"video":case"audio":for(b=0;b<ca.length;b++)ul(ca[b],Se);break;case"source":ul("error",Se);break;case"img":case"image":case"link":ul("error",Se),ul("load",Se);break;case"details":ul("toggle",Se);break;case"input":$i(Se,Rt),ul("invalid",Se);break;case"select":Se._wrapperState={wasMultiple:!!Rt.multiple},ul("invalid",Se);break;case"textarea":zr(Se,Rt),ul("invalid",Se)}for(var rn in so(G,Rt),b=null,Rt)Rt.hasOwnProperty(rn)&&(We=Rt[rn],"children"===rn?"string"==typeof We?Se.textContent!==We&&(b=["children",We]):"number"==typeof We&&Se.textContent!==""+We&&(b=["children",""+We]):_.hasOwnProperty(rn)&&null!=We&&"onScroll"===rn&&ul("scroll",Se));switch(G){case"input":Hn(Se),On(Se,Rt,!0);break;case"textarea":Hn(Se),Ai(Se);break;case"select":case"option":break;default:"function"==typeof Rt.onClick&&(Se.onclick=qn)}x.updateQueue=Se=b,null!==Se&&(x.flags|=4)}else{switch(rn=9===We.nodeType?We:We.ownerDocument,b===Tr_html&&(b=Nr(G)),b===Tr_html?"script"===G?((b=rn.createElement("div")).innerHTML="<script><\/script>",b=b.removeChild(b.firstChild)):"string"==typeof Se.is?b=rn.createElement(G,{is:Se.is}):(b=rn.createElement(G),"select"===G&&(rn=b,Se.multiple?rn.multiple=!0:Se.size&&(rn.size=Se.size))):b=rn.createElementNS(b,G),b[nl]=x,b[Of]=Se,zs(b,x),x.stateNode=b,rn=Ze(G,Se),G){case"dialog":ul("cancel",b),ul("close",b),We=Se;break;case"iframe":case"object":case"embed":ul("load",b),We=Se;break;case"video":case"audio":for(We=0;We<ca.length;We++)ul(ca[We],b);We=Se;break;case"source":ul("error",b),We=Se;break;case"img":case"image":case"link":ul("error",b),ul("load",b),We=Se;break;case"details":ul("toggle",b),We=Se;break;case"input":$i(b,Se),We=di(b,Se),ul("invalid",b);break;case"option":We=ir(b,Se);break;case"select":b._wrapperState={wasMultiple:!!Se.multiple},We=u({},Se,{value:void 0}),ul("invalid",b);break;case"textarea":zr(b,Se),We=Vn(b,Se),ul("invalid",b);break;default:We=Se}so(G,We);var xn=We;for(Rt in xn)if(xn.hasOwnProperty(Rt)){var Er=xn[Rt];"style"===Rt?Ii(b,Er):"dangerouslySetInnerHTML"===Rt?null!=(Er=Er?Er.__html:void 0)&&mr(b,Er):"children"===Rt?"string"==typeof Er?("textarea"!==G||""!==Er)&&Xt(b,Er):"number"==typeof Er&&Xt(b,""+Er):"suppressContentEditableWarning"!==Rt&&"suppressHydrationWarning"!==Rt&&"autoFocus"!==Rt&&(_.hasOwnProperty(Rt)?null!=Er&&"onScroll"===Rt&&ul("scroll",b):null!=Er&&oe(b,Rt,Er,rn))}switch(G){case"input":Hn(b),On(b,Se,!1);break;case"textarea":Hn(b),Ai(b);break;case"option":null!=Se.value&&b.setAttribute("value",""+Qr(Se.value));break;case"select":b.multiple=!!Se.multiple,null!=(Rt=Se.value)?Lr(b,!!Se.multiple,Rt,!1):null!=Se.defaultValue&&Lr(b,!!Se.multiple,Se.defaultValue,!0);break;default:"function"==typeof We.onClick&&(b.onclick=qn)}ka(G,Se)&&(x.flags|=4)}null!==x.ref&&(x.flags|=128)}return null;case 6:if(b&&null!=x.stateNode)wu(0,x,b.memoizedProps,Se);else{if("string"!=typeof Se&&null===x.stateNode)throw Error(f(166));G=ga(dl.current),ga(Vs.current),nt(x)?(G=x.memoizedProps,(Se=x.stateNode)[nl]=x,Se.nodeValue!==G&&(x.flags|=4)):((Se=(9===G.nodeType?G:G.ownerDocument).createTextNode(Se))[nl]=x,x.stateNode=Se)}return null;case 13:return xl(wa),Se=x.memoizedState,0!=(64&x.flags)?(x.lanes=G,x):(Se=null!==Se,G=!1,null===b?void 0!==x.memoizedProps.fallback&&nt(x):G=null!==b.memoizedState,Se&&!G&&0!=(2&x.mode)&&(null===b&&!0!==x.memoizedProps.unstable_avoidThisFallback||0!=(1&wa.current)?0===Yu&&(Yu=3):((0===Yu||3===Yu)&&(Yu=4),null===Hc||0==(134217727&Zf)&&0==(134217727&Dc)||Df(Hc,Ps))),(Se||G)&&(x.flags|=4),null);case 4:return Pa(),null===b&&Wd(x.stateNode.containerInfo),null;case 10:return Fc(x),null;case 17:return Ou(x.type)&&Pu(),null;case 19:if(xl(wa),null===(Se=x.memoizedState))return null;if(Rt=0!=(64&x.flags),null===(rn=Se.rendering))if(Rt)Hd(Se,!1);else{if(0!==Yu||null!==b&&0!=(64&b.flags))for(b=x.child;null!==b;){if(null!==(rn=au(b))){for(x.flags|=64,Hd(Se,!1),null!==(Rt=rn.updateQueue)&&(x.updateQueue=Rt,x.flags|=4),null===Se.lastEffect&&(x.firstEffect=null),x.lastEffect=Se.lastEffect,Se=G,G=x.child;null!==G;)b=Se,(Rt=G).flags&=2,Rt.nextEffect=null,Rt.firstEffect=null,Rt.lastEffect=null,null===(rn=Rt.alternate)?(Rt.childLanes=0,Rt.lanes=b,Rt.child=null,Rt.memoizedProps=null,Rt.memoizedState=null,Rt.updateQueue=null,Rt.dependencies=null,Rt.stateNode=null):(Rt.childLanes=rn.childLanes,Rt.lanes=rn.lanes,Rt.child=rn.child,Rt.memoizedProps=rn.memoizedProps,Rt.memoizedState=rn.memoizedState,Rt.updateQueue=rn.updateQueue,Rt.type=rn.type,Rt.dependencies=null===(b=rn.dependencies)?null:{lanes:b.lanes,firstContext:b.firstContext}),G=G.sibling;return kl(wa,1&wa.current|2),x.child}b=b.sibling}null!==Se.tail&&cl()>Nh&&(x.flags|=64,Rt=!0,Hd(Se,!1),x.lanes=33554432)}else{if(!Rt)if(null!==(b=au(rn))){if(x.flags|=64,Rt=!0,null!==(G=b.updateQueue)&&(x.updateQueue=G,x.flags|=4),Hd(Se,!0),null===Se.tail&&"hidden"===Se.tailMode&&!rn.alternate&&!ic)return null!==(x=x.lastEffect=Se.lastEffect)&&(x.nextEffect=null),null}else 2*cl()-Se.renderingStartTime>Nh&&1073741824!==G&&(x.flags|=64,Rt=!0,Hd(Se,!1),x.lanes=33554432);Se.isBackwards?(rn.sibling=x.child,x.child=rn):(null!==(G=Se.last)?G.sibling=rn:x.child=rn,Se.last=rn)}return null!==Se.tail?(Se.rendering=G=Se.tail,Se.tail=G.sibling,Se.lastEffect=x.lastEffect,Se.renderingStartTime=cl(),G.sibling=null,x=wa.current,kl(wa,Rt?1&x|2:1&x),G):null;case 23:case 24:return Rf(),null!==b&&null!==b.memoizedState!=(null!==x.memoizedState)&&"unstable-defer-without-hiding"!==Se.mode&&(x.flags|=4),null}throw Error(f(156,x.tag))}function ih(b){switch(b.tag){case 1:Ou(b.type)&&Pu();var x=b.flags;return 4096&x?(b.flags=-4097&x|64,b):null;case 3:if(Pa(),xl(Wu),xl(Qa),fr(),0!=(64&(x=b.flags)))throw Error(f(285));return b.flags=-4097&x|64,b;case 5:return Eu(b),null;case 13:return xl(wa),4096&(x=b.flags)?(b.flags=-4097&x|64,b):null;case 19:return xl(wa),null;case 4:return Pa(),null;case 10:return Fc(b),null;case 23:case 24:return Rf(),null;default:return null}}function oh(b,x){try{var G="",Se=x;do{G+=Ir(Se),Se=Se.return}while(Se);var We=G}catch(Rt){We="\nError generating stack: "+Rt.message+"\n"+Rt.stack}return{value:b,source:x,stack:We}}function hp(b,x){try{console.error(x.value)}catch(G){setTimeout(function(){throw G})}}zs=function(b,x){for(var G=x.child;null!==G;){if(5===G.tag||6===G.tag)b.appendChild(G.stateNode);else if(4!==G.tag&&null!==G.child){G.child.return=G,G=G.child;continue}if(G===x)break;for(;null===G.sibling;){if(null===G.return||G.return===x)return;G=G.return}G.sibling.return=G.return,G=G.sibling}},rd=function(b,x,G,Se){var We=b.memoizedProps;if(We!==Se){b=x.stateNode,ga(Vs.current);var rn,Rt=null;switch(G){case"input":We=di(b,We),Se=di(b,Se),Rt=[];break;case"option":We=ir(b,We),Se=ir(b,Se),Rt=[];break;case"select":We=u({},We,{value:void 0}),Se=u({},Se,{value:void 0}),Rt=[];break;case"textarea":We=Vn(b,We),Se=Vn(b,Se),Rt=[];break;default:"function"!=typeof We.onClick&&"function"==typeof Se.onClick&&(b.onclick=qn)}for(Ei in so(G,Se),G=null,We)if(!Se.hasOwnProperty(Ei)&&We.hasOwnProperty(Ei)&&null!=We[Ei])if("style"===Ei){var xn=We[Ei];for(rn in xn)xn.hasOwnProperty(rn)&&(G||(G={}),G[rn]="")}else"dangerouslySetInnerHTML"!==Ei&&"children"!==Ei&&"suppressContentEditableWarning"!==Ei&&"suppressHydrationWarning"!==Ei&&"autoFocus"!==Ei&&(_.hasOwnProperty(Ei)?Rt||(Rt=[]):(Rt=Rt||[]).push(Ei,null));for(Ei in Se){var Er=Se[Ei];if(xn=null!=We?We[Ei]:void 0,Se.hasOwnProperty(Ei)&&Er!==xn&&(null!=Er||null!=xn))if("style"===Ei)if(xn){for(rn in xn)!xn.hasOwnProperty(rn)||Er&&Er.hasOwnProperty(rn)||(G||(G={}),G[rn]="");for(rn in Er)Er.hasOwnProperty(rn)&&xn[rn]!==Er[rn]&&(G||(G={}),G[rn]=Er[rn])}else G||(Rt||(Rt=[]),Rt.push(Ei,G)),G=Er;else"dangerouslySetInnerHTML"===Ei?(xn=xn?xn.__html:void 0,null!=(Er=Er?Er.__html:void 0)&&xn!==Er&&(Rt=Rt||[]).push(Ei,Er)):"children"===Ei?"string"!=typeof Er&&"number"!=typeof Er||(Rt=Rt||[]).push(Ei,""+Er):"suppressContentEditableWarning"!==Ei&&"suppressHydrationWarning"!==Ei&&(_.hasOwnProperty(Ei)?(null!=Er&&"onScroll"===Ei&&ul("scroll",b),Rt||xn===Er||(Rt=[])):"object"==typeof Er&&null!==Er&&Er.$$typeof===$t?Er.toString():(Rt=Rt||[]).push(Ei,Er))}G&&(Rt=Rt||[]).push("style",G);var Ei=Rt;(x.updateQueue=Ei)&&(x.flags|=4)}},wu=function(b,x,G,Se){G!==Se&&(x.flags|=4)};var Yf="function"==typeof WeakMap?WeakMap:Map;function H_(b,x,G){(G=E(-1,G)).tag=3,G.payload={element:null};var Se=x.value;return G.callback=function(){s_||(s_=!0,G_=Se),hp(0,x)},G}function _g(b,x,G){(G=E(-1,G)).tag=3;var Se=b.type.getDerivedStateFromError;if("function"==typeof Se){var We=x.value;G.payload=function(){return hp(0,x),Se(We)}}var Rt=b.stateNode;return null!==Rt&&"function"==typeof Rt.componentDidCatch&&(G.callback=function(){"function"!=typeof Se&&(null===od?od=new Set([this]):od.add(this),hp(0,x));var rn=x.stack;this.componentDidCatch(x.value,{componentStack:null!==rn?rn:""})}),G}var _p="function"==typeof WeakSet?WeakSet:Set;function Sd(b){var x=b.ref;if(null!==x)if("function"==typeof x)try{x(null)}catch(G){Ep(b,G)}else x.current=null}function U_(b,x){switch(x.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&x.flags&&null!==b){var G=b.memoizedProps,Se=b.memoizedState;x=(b=x.stateNode).getSnapshotBeforeUpdate(x.elementType===x.type?G:Wl(x.type,G),Se),b.__reactInternalSnapshotBeforeUpdate=x}return;case 3:return void(256&x.flags&&fc(x.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(f(163))}function e_(b,x,G){switch(G.tag){case 0:case 11:case 15:case 22:if(null!==(x=null!==(x=G.updateQueue)?x.lastEffect:null)){b=x=x.next;do{if(3==(3&b.tag)){var Se=b.create;b.destroy=Se()}b=b.next}while(b!==x)}if(null!==(x=null!==(x=G.updateQueue)?x.lastEffect:null)){b=x=x.next;do{var We=b;Se=We.next,0!=(4&(We=We.tag))&&0!=(1&We)&&(Eg(G,b),bg(G,b)),b=Se}while(b!==x)}return;case 1:return b=G.stateNode,4&G.flags&&(null===x?b.componentDidMount():(Se=G.elementType===G.type?x.memoizedProps:Wl(G.type,x.memoizedProps),b.componentDidUpdate(Se,x.memoizedState,b.__reactInternalSnapshotBeforeUpdate))),void(null!==(x=G.updateQueue)&&de(G,x,b));case 3:if(null!==(x=G.updateQueue)){if(b=null,null!==G.child)switch(G.child.tag){case 5:b=G.child.stateNode;break;case 1:b=G.child.stateNode}de(G,x,b)}return;case 5:return b=G.stateNode,void(null===x&&4&G.flags&&ka(G.type,G.memoizedProps)&&b.focus());case 6:case 4:case 12:return;case 13:return void(null===G.memoizedState&&(G=G.alternate,null!==G&&(G=G.memoizedState,null!==G&&(G=G.dehydrated,null!==G&&gs(G)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(f(163))}function B_(b,x){for(var G=b;;){if(5===G.tag){var Se=G.stateNode;if(x)"function"==typeof(Se=Se.style).setProperty?Se.setProperty("display","none","important"):Se.display="none";else{Se=G.stateNode;var We=G.memoizedProps.style;We=null!=We&&We.hasOwnProperty("display")?We.display:null,Se.style.display=si("display",We)}}else if(6===G.tag)G.stateNode.nodeValue=x?"":G.memoizedProps;else if((23!==G.tag&&24!==G.tag||null===G.memoizedState||G===b)&&null!==G.child){G.child.return=G,G=G.child;continue}if(G===b)break;for(;null===G.sibling;){if(null===G.return||G.return===b)return;G=G.return}G.sibling.return=G.return,G=G.sibling}}function Jc(b,x){if(Vc&&"function"==typeof Vc.onCommitFiberUnmount)try{Vc.onCommitFiberUnmount(Ac,x)}catch(Rt){}switch(x.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(b=x.updateQueue)&&null!==(b=b.lastEffect)){var G=b=b.next;do{var Se=G,We=Se.destroy;if(Se=Se.tag,void 0!==We)if(0!=(4&Se))Eg(x,G);else{Se=x;try{We()}catch(Rt){Ep(Se,Rt)}}G=G.next}while(G!==b)}break;case 1:if(Sd(x),"function"==typeof(b=x.stateNode).componentWillUnmount)try{b.props=x.memoizedProps,b.state=x.memoizedState,b.componentWillUnmount()}catch(Rt){Ep(x,Rt)}break;case 5:Sd(x);break;case 4:r_(b,x)}}function Rh(b){b.alternate=null,b.child=null,b.dependencies=null,b.firstEffect=null,b.lastEffect=null,b.memoizedProps=null,b.memoizedState=null,b.pendingProps=null,b.return=null,b.updateQueue=null}function t_(b){return 5===b.tag||3===b.tag||4===b.tag}function qf(b){e:{for(var x=b.return;null!==x;){if(t_(x))break e;x=x.return}throw Error(f(160))}var G=x;switch(x=G.stateNode,G.tag){case 5:var Se=!1;break;case 3:case 4:x=x.containerInfo,Se=!0;break;default:throw Error(f(161))}16&G.flags&&(Xt(x,""),G.flags&=-17);e:t:for(G=b;;){for(;null===G.sibling;){if(null===G.return||t_(G.return)){G=null;break e}G=G.return}for(G.sibling.return=G.return,G=G.sibling;5!==G.tag&&6!==G.tag&&18!==G.tag;){if(2&G.flags||null===G.child||4===G.tag)continue t;G.child.return=G,G=G.child}if(!(2&G.flags)){G=G.stateNode;break e}}Se?n_(b,G,x):sh(b,G,x)}function n_(b,x,G){var Se=b.tag,We=5===Se||6===Se;if(We)b=We?b.stateNode:b.stateNode.instance,x?8===G.nodeType?G.parentNode.insertBefore(b,x):G.insertBefore(b,x):(8===G.nodeType?(x=G.parentNode).insertBefore(b,G):(x=G).appendChild(b),null!=(G=G._reactRootContainer)||null!==x.onclick||(x.onclick=qn));else if(4!==Se&&null!==(b=b.child))for(n_(b,x,G),b=b.sibling;null!==b;)n_(b,x,G),b=b.sibling}function sh(b,x,G){var Se=b.tag,We=5===Se||6===Se;if(We)b=We?b.stateNode:b.stateNode.instance,x?G.insertBefore(b,x):G.appendChild(b);else if(4!==Se&&null!==(b=b.child))for(sh(b,x,G),b=b.sibling;null!==b;)sh(b,x,G),b=b.sibling}function r_(b,x){for(var We,Rt,G=x,Se=!1;;){if(!Se){Se=G.return;e:for(;;){if(null===Se)throw Error(f(160));switch(We=Se.stateNode,Se.tag){case 5:Rt=!1;break e;case 3:case 4:We=We.containerInfo,Rt=!0;break e}Se=Se.return}Se=!0}if(5===G.tag||6===G.tag){e:for(var rn=b,xn=G,Er=xn;;)if(Jc(rn,Er),null!==Er.child&&4!==Er.tag)Er.child.return=Er,Er=Er.child;else{if(Er===xn)break e;for(;null===Er.sibling;){if(null===Er.return||Er.return===xn)break e;Er=Er.return}Er.sibling.return=Er.return,Er=Er.sibling}Rt?(xn=G.stateNode,8===(rn=We).nodeType?rn.parentNode.removeChild(xn):rn.removeChild(xn)):We.removeChild(G.stateNode)}else if(4===G.tag){if(null!==G.child){We=G.stateNode.containerInfo,Rt=!0,G.child.return=G,G=G.child;continue}}else if(Jc(b,G),null!==G.child){G.child.return=G,G=G.child;continue}if(G===x)break;for(;null===G.sibling;){if(null===G.return||G.return===x)return;4===(G=G.return).tag&&(Se=!1)}G.sibling.return=G.return,G=G.sibling}}function id(b,x){switch(x.tag){case 0:case 11:case 14:case 15:case 22:var G=x.updateQueue;if(null!==(G=null!==G?G.lastEffect:null)){var Se=G=G.next;do{3==(3&Se.tag)&&(b=Se.destroy,Se.destroy=void 0,void 0!==b&&b()),Se=Se.next}while(Se!==G)}return;case 1:return;case 5:if(null!=(G=x.stateNode)){Se=x.memoizedProps;var We=null!==b?b.memoizedProps:Se;b=x.type;var Rt=x.updateQueue;if(x.updateQueue=null,null!==Rt){for(G[Of]=Se,"input"===b&&"radio"===Se.type&&null!=Se.name&&Hi(G,Se),Ze(b,We),x=Ze(b,Se),We=0;We<Rt.length;We+=2){var rn=Rt[We],xn=Rt[We+1];"style"===rn?Ii(G,xn):"dangerouslySetInnerHTML"===rn?mr(G,xn):"children"===rn?Xt(G,xn):oe(G,rn,xn,x)}switch(b){case"input":Br(G,Se);break;case"textarea":hi(G,Se);break;case"select":b=G._wrapperState.wasMultiple,G._wrapperState.wasMultiple=!!Se.multiple,null!=(Rt=Se.value)?Lr(G,!!Se.multiple,Rt,!1):b!==!!Se.multiple&&(null!=Se.defaultValue?Lr(G,!!Se.multiple,Se.defaultValue,!0):Lr(G,!!Se.multiple,Se.multiple?[]:"",!1))}}}return;case 6:if(null===x.stateNode)throw Error(f(162));return void(x.stateNode.nodeValue=x.memoizedProps);case 3:return void((G=x.stateNode).hydrate&&(G.hydrate=!1,gs(G.containerInfo)));case 12:return;case 13:return null!==x.memoizedState&&(j_=cl(),B_(x.child,!0)),void Ig(x);case 19:return void Ig(x);case 17:return;case 23:case 24:return void B_(x,null!==x.memoizedState)}throw Error(f(163))}function Ig(b){var x=b.updateQueue;if(null!==x){b.updateQueue=null;var G=b.stateNode;null===G&&(G=b.stateNode=new _p),x.forEach(function(Se){var We=$g.bind(null,b,Se);G.has(Se)||(G.add(Se),Se.then(We,We))})}}function Lg(b,x){return null!==b&&(null===(b=b.memoizedState)||null!==b.dehydrated)&&null!==(x=x.memoizedState)&&null===x.dehydrated}var gp=Math.ceil,i_=he.ReactCurrentDispatcher,o_=he.ReactCurrentOwner,Ta=0,Hc=null,Ju=null,Ps=0,mp=0,ah=Tl(0),Yu=0,Y_=null,Bp=0,Zf=0,Dc=0,gg=0,Z_=null,j_=0,Nh=1/0;function ep(){Nh=cl()+500}var W_,ns=null,s_=!1,G_=null,od=null,gc=!1,Ph=null,Ih=90,Lh=[],mg=[],jf=null,Ud=0,yf=null,a_=-1,vp=0,l_=0,yp=null,Bd=!1;function fd(){return 0!=(48&Ta)?cl():-1!==a_?a_:a_=cl()}function bf(b){if(0==(2&(b=b.mode)))return 1;if(0==(4&b))return 99===Ll()?1:2;if(0===vp&&(vp=Bp),0!==wf.transition){0!==l_&&(l_=null!==Z_?Z_.pendingLanes:0),b=vp;var x=4186112&~l_;return 0==(x&=-x)&&0==(x=(b=4186112&~b)&-b)&&(x=8192),x}return b=Ll(),b=Ro(0!=(4&Ta)&&98===b?12:b=function(b){switch(b){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(b),vp)}function Gf(b,x,G){if(50<Ud)throw Ud=0,yf=null,Error(f(185));if(null===(b=lh(b,x)))return null;Ea(b,x,G),b===Hc&&(Dc|=x,4===Yu&&Df(b,Ps));var Se=Ll();1===x?0!=(8&Ta)&&0==(48&Ta)?tp(b):(sd(b,G),0===Ta&&(ep(),pc())):(0==(4&Ta)||98!==Se&&99!==Se||(null===jf?jf=new Set([b]):jf.add(b)),sd(b,G)),Z_=b}function lh(b,x){b.lanes|=x;var G=b.alternate;for(null!==G&&(G.lanes|=x),G=b,b=b.return;null!==b;)b.childLanes|=x,null!==(G=b.alternate)&&(G.childLanes|=x),G=b,b=b.return;return 3===G.tag?G.stateNode:null}function sd(b,x){for(var G=b.callbackNode,Se=b.suspendedLanes,We=b.pingedLanes,Rt=b.expirationTimes,rn=b.pendingLanes;0<rn;){var xn=31-al(rn),Er=1<<xn,Ei=Rt[xn];-1===Ei?0!=(Er&Se)&&0==(Er&We)||(Ei=x,sn(Er),Rt[xn]=10<=Pt?Ei+250:6<=Pt?Ei+5e3:-1):Ei<=x&&(b.expiredLanes|=Er),rn&=~Er}if(Se=Oi(b,b===Hc?Ps:0),x=Pt,0===Se)null!==G&&(G!==Uu&&hf(G),b.callbackNode=null,b.callbackPriority=0);else{if(null!==G){if(b.callbackPriority===x)return;G!==Uu&&hf(G)}15===x?(G=tp.bind(null,b),null===Rd?(Rd=[G],wc=Oc(dp,Xd)):Rd.push(G),G=Uu):G=14===x?Bu(99,tp.bind(null,b)):Bu(G=function(b){switch(b){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(f(358,b))}}(x),uh.bind(null,b)),b.callbackPriority=x,b.callbackNode=G}}function uh(b){if(a_=-1,l_=vp=0,0!=(48&Ta))throw Error(f(327));var x=b.callbackNode;if(bp()&&b.callbackNode!==x)return null;var G=Oi(b,b===Hc?Ps:0);if(0===G)return null;var Se=G,We=Ta;Ta|=16;var Rt=Fh();for((Hc!==b||Ps!==Se)&&(ep(),dh(b,Se));;)try{Mm();break}catch(xn){vg(b,xn)}if(Cc(),i_.current=Rt,Ta=We,null!==Ju?Se=0:(Hc=null,Ps=0,Se=Yu),0!=(Bp&Dc))dh(b,0);else if(0!==Se){if(2===Se&&(Ta|=64,b.hydrate&&(b.hydrate=!1,fc(b.containerInfo)),0!==(G=os(b))&&(Se=c_(b,G))),1===Se)throw x=Y_,dh(b,0),Df(b,G),sd(b,cl()),x;switch(b.finishedWork=b.current.alternate,b.finishedLanes=G,Se){case 0:case 1:throw Error(f(345));case 2:fh(b);break;case 3:if(Df(b,G),(62914560&G)===G&&10<(Se=j_+500-cl())){if(0!==Oi(b,0))break;if(((We=b.suspendedLanes)&G)!==G){fd(),b.pingedLanes|=b.suspendedLanes&We;break}b.timeoutHandle=Oa(fh.bind(null,b),Se);break}fh(b);break;case 4:if(Df(b,G),(4186112&G)===G)break;for(Se=b.eventTimes,We=-1;0<G;){var rn=31-al(G);Rt=1<<rn,(rn=Se[rn])>We&&(We=rn),G&=~Rt}if(G=We,10<(G=(120>(G=cl()-G)?120:480>G?480:1080>G?1080:1920>G?1920:3e3>G?3e3:4320>G?4320:1960*gp(G/1960))-G)){b.timeoutHandle=Oa(fh.bind(null,b),G);break}fh(b);break;case 5:fh(b);break;default:throw Error(f(329))}}return sd(b,cl()),b.callbackNode===x?uh.bind(null,b):null}function Df(b,x){for(x&=~gg,b.suspendedLanes|=x&=~Dc,b.pingedLanes&=~x,b=b.expirationTimes;0<x;){var G=31-al(x),Se=1<<G;b[G]=-1,x&=~Se}}function tp(b){if(0!=(48&Ta))throw Error(f(327));if(bp(),b===Hc&&0!=(b.expiredLanes&Ps)){var x=Ps,G=c_(b,x);0!=(Bp&Dc)&&(G=c_(b,x=Oi(b,x)))}else G=c_(b,x=Oi(b,0));if(0!==b.tag&&2===G&&(Ta|=64,b.hydrate&&(b.hydrate=!1,fc(b.containerInfo)),0!==(x=os(b))&&(G=c_(b,x))),1===G)throw G=Y_,dh(b,0),Df(b,x),sd(b,cl()),G;return b.finishedWork=b.current.alternate,b.finishedLanes=x,fh(b),sd(b,cl()),null}function ch(b,x){var G=Ta;Ta|=1;try{return b(x)}finally{0===(Ta=G)&&(ep(),pc())}}function u_(b,x){var G=Ta;Ta&=-2,Ta|=8;try{return b(x)}finally{0===(Ta=G)&&(ep(),pc())}}function Uc(b,x){kl(ah,mp),mp|=x,Bp|=x}function Rf(){mp=ah.current,xl(ah)}function dh(b,x){b.finishedWork=null,b.finishedLanes=0;var G=b.timeoutHandle;if(-1!==G&&(b.timeoutHandle=-1,Us(G)),null!==Ju)for(G=Ju.return;null!==G;){var Se=G;switch(Se.tag){case 1:null!=(Se=Se.type.childContextTypes)&&Pu();break;case 3:Pa(),xl(Wu),xl(Qa),fr();break;case 5:Eu(Se);break;case 4:Pa();break;case 13:case 19:xl(wa);break;case 10:Fc(Se);break;case 23:case 24:Rf()}G=G.return}Hc=b,Ju=Tp(b.current,null),Ps=mp=Bp=x,Yu=0,Y_=null,gg=Dc=Zf=0}function vg(b,x){for(;;){var G=Ju;try{if(Cc(),vi.current=vf,Wc){for(var Se=ia.memoizedState;null!==Se;){var We=Se.queue;null!==We&&(We.pending=null),Se=Se.next}Wc=!1}if(xa=0,Jl=_l=ia=null,Kf=!1,o_.current=null,null===G||null===G.return){Yu=1,Y_=x,Ju=null;break}e:{var Rt=b,rn=G.return,xn=G,Er=x;if(x=Ps,xn.flags|=2048,xn.firstEffect=xn.lastEffect=null,null!==Er&&"object"==typeof Er&&"function"==typeof Er.then){var Ei=Er;if(0==(2&xn.mode)){var fs=xn.alternate;fs?(xn.updateQueue=fs.updateQueue,xn.memoizedState=fs.memoizedState,xn.lanes=fs.lanes):(xn.updateQueue=null,xn.memoizedState=null)}var Ua=0!=(1&wa.current),mo=rn;do{var _o;if(_o=13===mo.tag){var La=mo.memoizedState;if(null!==La)_o=null!==La.dehydrated;else{var Sa=mo.memoizedProps;_o=void 0!==Sa.fallback&&(!0!==Sa.unstable_avoidThisFallback||!Ua)}}if(_o){var ti=mo.updateQueue;if(null===ti){var Sr=new Set;Sr.add(Ei),mo.updateQueue=Sr}else ti.add(Ei);if(0==(2&mo.mode)){if(mo.flags|=64,xn.flags|=16384,xn.flags&=-2981,1===xn.tag)if(null===xn.alternate)xn.tag=17;else{var Wr=E(-1,1);Wr.tag=2,N(xn,Wr)}xn.lanes|=1;break e}Er=void 0,xn=x;var Bi=Rt.pingCache;if(null===Bi?(Bi=Rt.pingCache=new Yf,Er=new Set,Bi.set(Ei,Er)):void 0===(Er=Bi.get(Ei))&&(Er=new Set,Bi.set(Ei,Er)),!Er.has(xn)){Er.add(xn);var ao=ph.bind(null,Rt,Ei,xn);Ei.then(ao,ao)}mo.flags|=4096,mo.lanes=x;break e}mo=mo.return}while(null!==mo);Er=Error((wr(xn.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Yu&&(Yu=2),Er=oh(Er,xn),mo=rn;do{switch(mo.tag){case 3:Rt=Er,mo.flags|=4096,mo.lanes|=x&=-x,k(mo,H_(0,Rt,x));break e;case 1:Rt=Er;var Xa=mo.stateNode;if(0==(64&mo.flags)&&("function"==typeof mo.type.getDerivedStateFromError||null!==Xa&&"function"==typeof Xa.componentDidCatch&&(null===od||!od.has(Xa)))){mo.flags|=4096,mo.lanes|=x&=-x,k(mo,_g(mo,Rt,x));break e}}mo=mo.return}while(null!==mo)}Yp(G)}catch(Cl){x=Cl,Ju===G&&null!==G&&(Ju=G=G.return);continue}break}}function Fh(){var b=i_.current;return i_.current=vf,null===b?vf:b}function c_(b,x){var G=Ta;Ta|=16;var Se=Fh();for(Hc===b&&Ps===x||dh(b,x);;)try{Cm();break}catch(We){vg(b,We)}if(Cc(),Ta=G,i_.current=Se,null!==Ju)throw Error(f(261));return Hc=null,Ps=0,Yu}function Cm(){for(;null!==Ju;)d_(Ju)}function Mm(){for(;null!==Ju&&!zc();)d_(Ju)}function d_(b){var x=W_(b.alternate,b,mp);b.memoizedProps=b.pendingProps,null===x?Yp(b):Ju=x,o_.current=null}function Yp(b){var x=b;do{var G=x.alternate;if(b=x.return,0==(2048&x.flags)){if(null!==(G=$_(G,x,mp)))return void(Ju=G);if(24!==(G=x).tag&&23!==G.tag||null===G.memoizedState||0!=(1073741824&mp)||0==(4&G.mode)){for(var Se=0,We=G.child;null!==We;)Se|=We.lanes|We.childLanes,We=We.sibling;G.childLanes=Se}null!==b&&0==(2048&b.flags)&&(null===b.firstEffect&&(b.firstEffect=x.firstEffect),null!==x.lastEffect&&(null!==b.lastEffect&&(b.lastEffect.nextEffect=x.firstEffect),b.lastEffect=x.lastEffect),1<x.flags&&(null!==b.lastEffect?b.lastEffect.nextEffect=x:b.firstEffect=x,b.lastEffect=x))}else{if(null!==(G=ih(x)))return G.flags&=2047,void(Ju=G);null!==b&&(b.firstEffect=b.lastEffect=null,b.flags|=2048)}if(null!==(x=x.sibling))return void(Ju=x);Ju=x=b}while(null!==x);0===Yu&&(Yu=5)}function fh(b){var x=Ll();return il(99,Fg.bind(null,b,x)),null}function Fg(b,x){do{bp()}while(null!==Ph);if(0!=(48&Ta))throw Error(f(327));var G=b.finishedWork;if(null===G)return null;if(b.finishedWork=null,b.finishedLanes=0,G===b.current)throw Error(f(177));b.callbackNode=null;var Se=G.lanes|G.childLanes,We=Se,Rt=b.pendingLanes&~We;b.pendingLanes=We,b.suspendedLanes=0,b.pingedLanes=0,b.expiredLanes&=We,b.mutableReadLanes&=We,b.entangledLanes&=We,We=b.entanglements;for(var rn=b.eventTimes,xn=b.expirationTimes;0<Rt;){var Er=31-al(Rt),Ei=1<<Er;We[Er]=0,rn[Er]=-1,xn[Er]=-1,Rt&=~Ei}if(null!==jf&&0==(24&Se)&&jf.has(b)&&jf.delete(b),b===Hc&&(Ju=Hc=null,Ps=0),1<G.flags?null!==G.lastEffect?(G.lastEffect.nextEffect=G,Se=G.firstEffect):Se=G:Se=G.firstEffect,null!==Se){if(We=Ta,Ta|=32,o_.current=null,yi=Hl,ll(rn=_a())){if("selectionStart"in rn)xn={start:rn.selectionStart,end:rn.selectionEnd};else if((Ei=(xn=(xn=rn.ownerDocument)&&xn.defaultView||window).getSelection&&xn.getSelection())&&0!==Ei.rangeCount){xn=Ei.anchorNode,Rt=Ei.anchorOffset,Er=Ei.focusNode,Ei=Ei.focusOffset;var fs=0,Ua=-1,mo=-1,_o=0,La=0,Sa=rn,ti=null;t:for(;;){for(var Sr;Sa!==xn||0!==Rt&&3!==Sa.nodeType||(Ua=fs+Rt),Sa!==Er||0!==Ei&&3!==Sa.nodeType||(mo=fs+Ei),3===Sa.nodeType&&(fs+=Sa.nodeValue.length),null!==(Sr=Sa.firstChild);)ti=Sa,Sa=Sr;for(;;){if(Sa===rn)break t;if(ti===xn&&++_o===Rt&&(Ua=fs),ti===Er&&++La===Ei&&(mo=fs),null!==(Sr=Sa.nextSibling))break;ti=(Sa=ti).parentNode}Sa=Sr}xn=-1===Ua||-1===mo?null:{start:Ua,end:mo}}else xn=null;xn=xn||{start:0,end:0}}else xn=null;Go={focusedElem:rn,selectionRange:xn},Hl=!1,yp=null,Bd=!1,ns=Se;do{try{yg()}catch(Cl){if(null===ns)throw Error(f(330));Ep(ns,Cl),ns=ns.nextEffect}}while(null!==ns);yp=null,ns=Se;do{try{for(rn=b;null!==ns;){var Wr=ns.flags;if(16&Wr&&Xt(ns.stateNode,""),128&Wr){var Bi=ns.alternate;if(null!==Bi){var ao=Bi.ref;null!==ao&&("function"==typeof ao?ao(null):ao.current=null)}}switch(1038&Wr){case 2:qf(ns),ns.flags&=-3;break;case 6:qf(ns),ns.flags&=-3,id(ns.alternate,ns);break;case 1024:ns.flags&=-1025;break;case 1028:ns.flags&=-1025,id(ns.alternate,ns);break;case 4:id(ns.alternate,ns);break;case 8:r_(rn,xn=ns);var ba=xn.alternate;Rh(xn),null!==ba&&Rh(ba)}ns=ns.nextEffect}}catch(Cl){if(null===ns)throw Error(f(330));Ep(ns,Cl),ns=ns.nextEffect}}while(null!==ns);if(ao=Go,Bi=_a(),rn=ao.selectionRange,Bi!==(Wr=ao.focusedElem)&&Wr&&Wr.ownerDocument&&No(Wr.ownerDocument.documentElement,Wr)){for((null!==rn&&ll(Wr)&&(Bi=rn.start,void 0===(ao=rn.end)&&(ao=Bi),"selectionStart"in Wr?(Wr.selectionStart=Bi,Wr.selectionEnd=Math.min(ao,Wr.value.length)):(ao=(Bi=Wr.ownerDocument||document)&&Bi.defaultView||window).getSelection&&(ao=ao.getSelection(),xn=Wr.textContent.length,ba=Math.min(rn.start,xn),rn=void 0===rn.end?ba:Math.min(rn.end,xn),!ao.extend&&ba>rn&&(xn=rn,rn=ba,ba=xn),xn=ki(Wr,ba),Rt=ki(Wr,rn),xn&&Rt&&(1!==ao.rangeCount||ao.anchorNode!==xn.node||ao.anchorOffset!==xn.offset||ao.focusNode!==Rt.node||ao.focusOffset!==Rt.offset)&&((Bi=Bi.createRange()).setStart(xn.node,xn.offset),ao.removeAllRanges(),ba>rn?(ao.addRange(Bi),ao.extend(Rt.node,Rt.offset)):(Bi.setEnd(Rt.node,Rt.offset),ao.addRange(Bi))))),Bi=[],ao=Wr);ao=ao.parentNode;)1===ao.nodeType&&Bi.push({element:ao,left:ao.scrollLeft,top:ao.scrollTop});for("function"==typeof Wr.focus&&Wr.focus(),Wr=0;Wr<Bi.length;Wr++)(ao=Bi[Wr]).element.scrollLeft=ao.left,ao.element.scrollTop=ao.top}Hl=!!yi,Go=yi=null,b.current=G,ns=Se;do{try{for(Wr=b;null!==ns;){var Os=ns.flags;if(36&Os&&e_(Wr,ns.alternate,ns),128&Os){Bi=void 0;var Xa=ns.ref;if(null!==Xa){var Dl=ns.stateNode;switch(ns.tag){case 5:Bi=Dl;break;default:Bi=Dl}"function"==typeof Xa?Xa(Bi):Xa.current=Bi}}ns=ns.nextEffect}}catch(Cl){if(null===ns)throw Error(f(330));Ep(ns,Cl),ns=ns.nextEffect}}while(null!==ns);ns=null,Xf(),Ta=We}else b.current=G;if(gc)gc=!1,Ph=b,Ih=x;else for(ns=Se;null!==ns;)x=ns.nextEffect,ns.nextEffect=null,8&ns.flags&&((Os=ns).sibling=null,Os.stateNode=null),ns=x;if(0===(Se=b.pendingLanes)&&(od=null),1===Se?b===yf?Ud++:(Ud=0,yf=b):Ud=0,G=G.stateNode,Vc&&"function"==typeof Vc.onCommitFiberRoot)try{Vc.onCommitFiberRoot(Ac,G,void 0,64==(64&G.current.flags))}catch(Cl){}if(sd(b,cl()),s_)throw s_=!1,b=G_,G_=null,b;return 0!=(8&Ta)||pc(),null}function yg(){for(;null!==ns;){var b=ns.alternate;Bd||null===yp||(0!=(8&ns.flags)?cn(ns,yp)&&(Bd=!0):13===ns.tag&&Lg(b,ns)&&cn(ns,yp)&&(Bd=!0));var x=ns.flags;0!=(256&x)&&U_(b,ns),0==(512&x)||gc||(gc=!0,Bu(97,function(){return bp(),null})),ns=ns.nextEffect}}function bp(){if(90!==Ih){var b=97<Ih?97:Ih;return Ih=90,il(b,kg)}return!1}function bg(b,x){Lh.push(x,b),gc||(gc=!0,Bu(97,function(){return bp(),null}))}function Eg(b,x){mg.push(x,b),gc||(gc=!0,Bu(97,function(){return bp(),null}))}function kg(){if(null===Ph)return!1;var b=Ph;if(Ph=null,0!=(48&Ta))throw Error(f(331));var x=Ta;Ta|=32;var G=mg;mg=[];for(var Se=0;Se<G.length;Se+=2){var We=G[Se],Rt=G[Se+1],rn=We.destroy;if(We.destroy=void 0,"function"==typeof rn)try{rn()}catch(Er){if(null===Rt)throw Error(f(330));Ep(Rt,Er)}}for(G=Lh,Lh=[],Se=0;Se<G.length;Se+=2){We=G[Se],Rt=G[Se+1];try{var xn=We.create;We.destroy=xn()}catch(Er){if(null===Rt)throw Error(f(330));Ep(Rt,Er)}}for(xn=b.current.firstEffect;null!==xn;)b=xn.nextEffect,xn.nextEffect=null,8&xn.flags&&(xn.sibling=null,xn.stateNode=null),xn=b;return Ta=x,pc(),!0}function z_(b,x,G){N(b,x=H_(0,x=oh(G,x),1)),x=fd(),null!==(b=lh(b,1))&&(Ea(b,1,x),sd(b,x))}function Ep(b,x){if(3===b.tag)z_(b,b,x);else for(var G=b.return;null!==G;){if(3===G.tag){z_(G,b,x);break}if(1===G.tag){var Se=G.stateNode;if("function"==typeof G.type.getDerivedStateFromError||"function"==typeof Se.componentDidCatch&&(null===od||!od.has(Se))){var We=_g(G,b=oh(x,b),1);if(N(G,We),We=fd(),null!==(G=lh(G,1)))Ea(G,1,We),sd(G,We);else if("function"==typeof Se.componentDidCatch&&(null===od||!od.has(Se)))try{Se.componentDidCatch(x,b)}catch(Rt){}break}}G=G.return}}function ph(b,x,G){var Se=b.pingCache;null!==Se&&Se.delete(x),x=fd(),b.pingedLanes|=b.suspendedLanes&G,Hc===b&&(Ps&G)===G&&(4===Yu||3===Yu&&(62914560&Ps)===Ps&&500>cl()-j_?dh(b,0):gg|=G),sd(b,x)}function $g(b,x){var G=b.stateNode;null!==G&&G.delete(x),0==(x=0)&&(0==(2&(x=b.mode))?x=1:0==(4&x)?x=99===Ll()?1:2:(0===vp&&(vp=Bp),0===(x=Uo(62914560&~vp))&&(x=4194304))),G=fd(),null!==(b=lh(b,x))&&(Ea(b,x,G),sd(b,G))}function Am(b,x,G,Se){this.tag=b,this.key=G,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=x,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=Se,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Yd(b,x,G,Se){return new Am(b,x,G,Se)}function Tg(b){return!(!(b=b.prototype)||!b.isReactComponent)}function Tp(b,x){var G=b.alternate;return null===G?((G=Yd(b.tag,x,b.key,b.mode)).elementType=b.elementType,G.type=b.type,G.stateNode=b.stateNode,G.alternate=b,b.alternate=G):(G.pendingProps=x,G.type=b.type,G.flags=0,G.nextEffect=null,G.firstEffect=null,G.lastEffect=null),G.childLanes=b.childLanes,G.lanes=b.lanes,G.child=b.child,G.memoizedProps=b.memoizedProps,G.memoizedState=b.memoizedState,G.updateQueue=b.updateQueue,G.dependencies=null===(x=b.dependencies)?null:{lanes:x.lanes,firstContext:x.firstContext},G.sibling=b.sibling,G.index=b.index,G.ref=b.ref,G}function f_(b,x,G,Se,We,Rt){var rn=2;if(Se=b,"function"==typeof b)Tg(b)&&(rn=1);else if("string"==typeof b)rn=5;else e:switch(b){case ce:return Qc(G.children,We,Rt,x);case Gt:rn=8,We|=16;break;case dt:rn=8,We|=1;break;case ze:return(b=Yd(12,G,x,8|We)).elementType=ze,b.type=ze,b.lanes=Rt,b;case Ve:return(b=Yd(13,G,x,We)).type=Ve,b.elementType=Ve,b.lanes=Rt,b;case He:return(b=Yd(19,G,x,We)).elementType=He,b.lanes=Rt,b;case Ut:return J_(G,We,Rt,x);case Bt:return(b=Yd(24,G,x,We)).elementType=Bt,b.lanes=Rt,b;default:if("object"==typeof b&&null!==b)switch(b.$$typeof){case Ye:rn=10;break e;case je:rn=9;break e;case Ie:rn=11;break e;case Zt:rn=14;break e;case st:rn=16,Se=null;break e;case en:rn=22;break e}throw Error(f(130,null==b?b:typeof b,""))}return(x=Yd(rn,G,x,We)).elementType=b,x.type=Se,x.lanes=Rt,x}function Qc(b,x,G,Se){return(b=Yd(7,b,Se,x)).lanes=G,b}function J_(b,x,G,Se){return(b=Yd(23,b,Se,x)).elementType=Ut,b.lanes=G,b}function kh(b,x,G){return(b=Yd(6,b,null,x)).lanes=G,b}function $h(b,x,G){return(x=Yd(4,null!==b.children?b.children:[],b.key,x)).lanes=G,x.stateNode={containerInfo:b.containerInfo,pendingChildren:null,implementation:b.implementation},x}function Sg(b,x,G){this.tag=x,this.containerInfo=b,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=G,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=To(0),this.expirationTimes=To(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=To(0),this.mutableSourceEagerHydrationData=null}function Cg(b,x,G){var Se=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Oe,key:null==Se?null:""+Se,children:b,containerInfo:x,implementation:G}}function p_(b,x,G,Se){var We=x.current,Rt=fd(),rn=bf(We);e:if(G){t:{if(xo(G=G._reactInternals)!==G||1!==G.tag)throw Error(f(170));var xn=G;do{switch(xn.tag){case 3:xn=xn.stateNode.context;break t;case 1:if(Ou(xn.type)){xn=xn.stateNode.__reactInternalMemoizedMergedChildContext;break t}}xn=xn.return}while(null!==xn);throw Error(f(171))}if(1===G.tag){var Er=G.type;if(Ou(Er)){G=ff(G,Er,xn);break e}}G=xn}else G=Nu;return null===x.context?x.context=G:x.pendingContext=G,(x=E(Rt,rn)).payload={element:b},null!==(Se=void 0===Se?null:Se)&&(x.callback=Se),N(We,x),Gf(We,rn,Rt),rn}function h_(b){if(!(b=b.current).child)return null;switch(b.child.tag){case 5:default:return b.child.stateNode}}function Hh(b,x){if(null!==(b=b.memoizedState)&&null!==b.dehydrated){var G=b.retryLane;b.retryLane=0!==G&&G<x?G:x}}function __(b,x){Hh(b,x),(b=b.alternate)&&Hh(b,x)}function Mg(b,x,G){var Se=null!=G&&null!=G.hydrationOptions&&G.hydrationOptions.mutableSources||null;if(G=new Sg(b,x,null!=G&&!0===G.hydrate),x=Yd(3,null,null,2===x?7:1===x?3:0),G.current=x,x.stateNode=G,$c(x),b[Dd]=G.current,Wd(8===b.nodeType?b.parentNode:b),Se)for(b=0;b<Se.length;b++){var We=(x=Se[b])._getVersion;We=We(x._source),null==G.mutableSourceEagerHydrationData?G.mutableSourceEagerHydrationData=[x,We]:G.mutableSourceEagerHydrationData.push(x,We)}this._internalRoot=G}function g_(b){return!(!b||1!==b.nodeType&&9!==b.nodeType&&11!==b.nodeType&&(8!==b.nodeType||" react-mount-point-unstable "!==b.nodeValue))}function Uh(b,x,G,Se,We){var Rt=G._reactRootContainer;if(Rt){var rn=Rt._internalRoot;if("function"==typeof We){var xn=We;We=function(){var Ei=h_(rn);xn.call(Ei)}}p_(x,rn,b,We)}else{if(Rt=G._reactRootContainer=function(b,x){if(x||(x=!(!(x=b?9===b.nodeType?b.documentElement:b.firstChild:null)||1!==x.nodeType||!x.hasAttribute("data-reactroot"))),!x)for(var G;G=b.lastChild;)b.removeChild(G);return new Mg(b,0,x?{hydrate:!0}:void 0)}(G,Se),rn=Rt._internalRoot,"function"==typeof We){var Er=We;We=function(){var Ei=h_(rn);Er.call(Ei)}}u_(function(){p_(x,rn,b,We)})}return h_(rn)}function Ag(b,x){var G=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!g_(x))throw Error(f(200));return Cg(b,x,null,G)}W_=function(b,x,G){var Se=x.lanes;if(null!==b)if(b.memoizedProps!==x.pendingProps||Wu.current)Kd=!0;else{if(0==(G&Se)){switch(Kd=!1,x.tag){case 3:ut(x),bt();break;case 5:ol(x);break;case 1:Ou(x.type)&&Xl(x);break;case 4:sa(x,x.stateNode.containerInfo);break;case 10:Se=x.memoizedProps.value;var We=x.type._context;kl(Pd,We._currentValue),We._currentValue=Se;break;case 13:if(null!==x.memoizedState)return 0!=(G&x.child.childLanes)?Fr(b,x,G):(kl(wa,1&wa.current),null!==(x=ya(b,x,G))?x.sibling:null);kl(wa,1&wa.current);break;case 19:if(Se=0!=(G&x.childLanes),0!=(64&b.flags)){if(Se)return Is(b,x,G);x.flags|=64}if(null!==(We=x.memoizedState)&&(We.rendering=null,We.tail=null,We.lastEffect=null),kl(wa,wa.current),Se)break;return null;case 23:case 24:return x.lanes=0,Y(b,x,G)}return ya(b,x,G)}Kd=0!=(16384&b.flags)}else Kd=!1;switch(x.lanes=0,x.tag){case 2:if(Se=x.type,null!==b&&(b.alternate=null,x.alternate=null,x.flags|=2),b=x.pendingProps,We=Mc(x,Qa.current),Id(x,G),We=Hp(null,x,Se,b,We,G),x.flags|=1,"object"==typeof We&&null!==We&&"function"==typeof We.render&&void 0===We.$$typeof){if(x.tag=1,x.memoizedState=null,x.updateQueue=null,Ou(Se)){var Rt=!0;Xl(x)}else Rt=!1;x.memoizedState=null!=We.state?We.state:null,$c(x);var rn=Se.getDerivedStateFromProps;"function"==typeof rn&&Ue(x,Se,rn,b),We.updater=we,x.stateNode=We,We._reactInternals=x,Jt(x,Se,b,G),x=Fe(null,x,Se,!0,Rt,G)}else x.tag=0,oc(null,x,We,G),x=x.child;return x;case 16:We=x.elementType;e:{switch(null!==b&&(b.alternate=null,x.alternate=null,x.flags|=2),b=x.pendingProps,We=(Rt=We._init)(We._payload),x.type=We,Rt=x.tag=function(b){if("function"==typeof b)return Tg(b)?1:0;if(null!=b){if((b=b.$$typeof)===Ie)return 11;if(b===Zt)return 14}return 2}(We),b=Wl(We,b),Rt){case 0:x=w(null,x,We,b,G);break e;case 1:x=q(null,x,We,b,G);break e;case 11:x=rh(null,x,We,b,G);break e;case 14:x=k_(null,x,We,Wl(We.type,b),Se,G);break e}throw Error(f(306,We,""))}return x;case 0:return We=x.pendingProps,w(b,x,Se=x.type,We=x.elementType===Se?We:Wl(Se,We),G);case 1:return We=x.pendingProps,q(b,x,Se=x.type,We=x.elementType===Se?We:Wl(Se,We),G);case 3:if(ut(x),Se=x.updateQueue,null===b||null===Se)throw Error(f(282));if(Se=x.pendingProps,We=null!==(We=x.memoizedState)?We.element:null,h(b,x),K(x,Se,null,G),(Se=x.memoizedState.element)===We)bt(),x=ya(b,x,G);else{if((Rt=(We=x.stateNode).hydrate)&&(xc=va(x.stateNode.containerInfo.firstChild),mu=x,Rt=ic=!0),Rt){if(null!=(b=We.mutableSourceEagerHydrationData))for(We=0;We<b.length;We+=2)(Rt=b[We])._workInProgressVersionPrimary=b[We+1],Qt.push(Rt);for(G=Vo(x,null,Se,G),x.child=G;G;)G.flags=-3&G.flags|1024,G=G.sibling}else oc(b,x,Se,G),bt();x=x.child}return x;case 5:return ol(x),null===b&&X(x),Rt=null!==b?b.memoizedProps:null,rn=(We=x.pendingProps).children,ss(Se=x.type,We)?rn=null:null!==Rt&&ss(Se,Rt)&&(x.flags|=16),fe(b,x),oc(b,x,rn,G),x.child;case 6:return null===b&&X(x),null;case 13:return Fr(b,x,G);case 4:return sa(x,x.stateNode.containerInfo),Se=x.pendingProps,null===b?x.child=Ni(x,null,Se,G):oc(b,x,Se,G),x.child;case 11:return We=x.pendingProps,rh(b,x,Se=x.type,We=x.elementType===Se?We:Wl(Se,We),G);case 7:return oc(b,x,x.pendingProps,G),x.child;case 8:case 12:return oc(b,x,x.pendingProps.children,G),x.child;case 10:e:{Se=x.type._context,rn=x.memoizedProps,Rt=(We=x.pendingProps).value;var xn=x.type._context;if(kl(Pd,xn._currentValue),xn._currentValue=Rt,null!==rn)if(0==(Rt=Ks(xn=rn.value,Rt)?0:0|("function"==typeof Se._calculateChangedBits?Se._calculateChangedBits(xn,Rt):1073741823))){if(rn.children===We.children&&!Wu.current){x=ya(b,x,G);break e}}else for(null!==(xn=x.child)&&(xn.return=x);null!==xn;){var Er=xn.dependencies;if(null!==Er){rn=xn.child;for(var Ei=Er.firstContext;null!==Ei;){if(Ei.context===Se&&0!=(Ei.observedBits&Rt)){1===xn.tag&&((Ei=E(-1,G&-G)).tag=2,N(xn,Ei)),xn.lanes|=G,null!==(Ei=xn.alternate)&&(Ei.lanes|=G),fu(xn.return,G),Er.lanes|=G;break}Ei=Ei.next}}else rn=10===xn.tag&&xn.type===x.type?null:xn.child;if(null!==rn)rn.return=xn;else for(rn=xn;null!==rn;){if(rn===x){rn=null;break}if(null!==(xn=rn.sibling)){xn.return=rn.return,rn=xn;break}rn=rn.return}xn=rn}oc(b,x,We.children,G),x=x.child}return x;case 9:return We=x.type,Se=(Rt=x.pendingProps).children,Id(x,G),Se=Se(We=Sl(We,Rt.unstable_observedBits)),x.flags|=1,oc(b,x,Se,G),x.child;case 14:return Rt=Wl(We=x.type,x.pendingProps),k_(b,x,We,Rt=Wl(We.type,Rt),Se,G);case 15:return qh(b,x,x.type,x.pendingProps,Se,G);case 17:return We=x.pendingProps,We=x.elementType===(Se=x.type)?We:Wl(Se,We),null!==b&&(b.alternate=null,x.alternate=null,x.flags|=2),x.tag=1,Ou(Se)?(b=!0,Xl(x)):b=!1,Id(x,G),gt(x,Se,We),Jt(x,Se,We,G),Fe(null,x,Se,!0,b,G);case 19:return Is(b,x,G);case 23:case 24:return Y(b,x,G)}throw Error(f(156,x.tag))},Mg.prototype.render=function(b){p_(b,this._internalRoot,null,null)},Mg.prototype.unmount=function(){var b=this._internalRoot,x=b.containerInfo;p_(null,b,null,function(){x[Dd]=null})},Ct=function(b){13===b.tag&&(Gf(b,4,fd()),__(b,4))},pr=function(b){13===b.tag&&(Gf(b,67108864,fd()),__(b,67108864))},nn=function(b){if(13===b.tag){var x=fd(),G=bf(b);Gf(b,G,x),__(b,G)}},Cn=function(b,x){return x()},jt=function(b,x,G){switch(x){case"input":if(Br(b,G),x=G.name,"radio"===G.type&&null!=x){for(G=b;G.parentNode;)G=G.parentNode;for(G=G.querySelectorAll("input[name="+JSON.stringify(""+x)+'][type="radio"]'),x=0;x<G.length;x++){var Se=G[x];if(Se!==b&&Se.form===b.form){var We=Qd(Se);if(!We)throw Error(f(90));Zr(Se),Br(Se,We)}}}break;case"textarea":hi(b,G);break;case"select":null!=(x=G.value)&&Lr(b,!!G.multiple,x,!1)}},nr=ch,Gi=function(b,x,G,Se,We){var Rt=Ta;Ta|=4;try{return il(98,b.bind(null,x,G,Se,We))}finally{0===(Ta=Rt)&&(ep(),pc())}},po=function(){0==(49&Ta)&&(function(){if(null!==jf){var b=jf;jf=null,b.forEach(function(x){x.expiredLanes|=24&x.pendingLanes,sd(x,cl())})}pc()}(),bp())},yo=function(b,x){var G=Ta;Ta|=2;try{return b(x)}finally{0===(Ta=G)&&(ep(),pc())}};var ov={Events:[Vu,Sc,Qd,kn,wn,bp,{current:!1}]},Bh={findFiberByHostInstance:Tc,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},Om={bundleType:Bh.bundleType,version:Bh.version,rendererPackageName:Bh.rendererPackageName,rendererConfig:Bh.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:he.ReactCurrentDispatcher,findHostInstanceByFiber:function(b){return null===(b=Ht(b))?null:b.stateNode},findFiberByHostInstance:Bh.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var m_=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!m_.isDisabled&&m_.supportsFiber)try{Ac=m_.inject(Om),Vc=m_}catch(b){}}S.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ov,S.createPortal=Ag,S.findDOMNode=function(b){if(null==b)return null;if(1===b.nodeType)return b;var x=b._reactInternals;if(void 0===x)throw"function"==typeof b.render?Error(f(188)):Error(f(268,Object.keys(b)));return null===(b=Ht(x))?null:b.stateNode},S.flushSync=function(b,x){var G=Ta;if(0!=(48&G))return b(x);Ta|=1;try{if(b)return il(99,b.bind(null,x))}finally{Ta=G,pc()}},S.hydrate=function(b,x,G){if(!g_(x))throw Error(f(200));return Uh(null,b,x,!0,G)},S.render=function(b,x,G){if(!g_(x))throw Error(f(200));return Uh(null,b,x,!1,G)},S.unmountComponentAtNode=function(b){if(!g_(b))throw Error(f(40));return!!b._reactRootContainer&&(u_(function(){Uh(null,null,b,!1,function(){b._reactRootContainer=null,b[Dd]=null})}),!0)},S.unstable_batchedUpdates=ch,S.unstable_createPortal=function(b,x){return Ag(b,x,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},S.unstable_renderSubtreeIntoContainer=function(b,x,G,Se){if(!g_(G))throw Error(f(200));if(null==b||void 0===b._reactInternals)throw Error(f(38));return Uh(b,x,G,!1,Se)},S.version="17.0.2"},88768:(v,S,i)=>{"use strict";(function r(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(u){console.error(u)}})(),v.exports=i(85503)},14395:(v,S,i)=>{"use strict";var p,r=i(16482),u="<<anonymous>>",f=function(){invariant(!1,"ImmutablePropTypes type checking code is stripped in production.")};f.isRequired=f;var e=function(){return f};function M(ce,dt){return function(ce,dt){return function(ce){function dt(Ye,je,Ie,Ve,He,Zt){for(var st=arguments.length,en=Array(st>6?st-6:0),$t=6;$t<st;$t++)en[$t-6]=arguments[$t];return Zt=Zt||Ie,Ve=Ve||u,null!=je[Ie]?ce.apply(void 0,[je,Ie,Ve,He,Zt].concat(en)):Ye?new Error("Required "+He+" `"+Zt+"` was not specified in `"+Ve+"`."):void 0}var ze=dt.bind(null,!1);return ze.isRequired=dt.bind(null,!0),ze}(function(Ye,je,Ie,Ve,He){var Zt=Ye[je];if(!dt(Zt)){var st=function(ce){var dt=typeof ce;return Array.isArray(ce)?"array":ce instanceof RegExp?"object":ce instanceof r.Iterable?"Immutable."+ce.toSource().split(" ")[0]:dt}(Zt);return new Error("Invalid "+Ve+" `"+He+"` of type `"+st+"` supplied to `"+Ie+"`, expected `"+ce+"`.")}return null})}("Iterable."+ce,function(ze){return r.Iterable.isIterable(ze)&&dt(ze)})}(p={listOf:e,mapOf:e,orderedMapOf:e,setOf:e,orderedSetOf:e,stackOf:e,iterableOf:e,recordOf:e,shape:e,contains:e,mapContains:e,orderedMapContains:e,list:f,map:f,orderedMap:f,set:f,orderedSet:f,stack:f,seq:f,record:f,iterable:f}).iterable.indexed=M("Indexed",r.Iterable.isIndexed),p.iterable.keyed=M("Keyed",r.Iterable.isKeyed),v.exports=p},6249:(v,S)=>{"use strict";var i="function"==typeof Symbol&&Symbol.for,r=i?Symbol.for("react.element"):60103,u=i?Symbol.for("react.portal"):60106,p=i?Symbol.for("react.fragment"):60107,f=i?Symbol.for("react.strict_mode"):60108,e=i?Symbol.for("react.profiler"):60114,_=i?Symbol.for("react.provider"):60109,y=i?Symbol.for("react.context"):60110,T=i?Symbol.for("react.async_mode"):60111,M=i?Symbol.for("react.concurrent_mode"):60111,R=i?Symbol.for("react.forward_ref"):60112,F=i?Symbol.for("react.suspense"):60113,Z=i?Symbol.for("react.suspense_list"):60120,J=i?Symbol.for("react.memo"):60115,Q=i?Symbol.for("react.lazy"):60116,ee=i?Symbol.for("react.block"):60121,ue=i?Symbol.for("react.fundamental"):60117,ae=i?Symbol.for("react.responder"):60118,$=i?Symbol.for("react.scope"):60119;function se(oe){if("object"==typeof oe&&null!==oe){var he=oe.$$typeof;switch(he){case r:switch(oe=oe.type){case T:case M:case p:case e:case f:case F:return oe;default:switch(oe=oe&&oe.$$typeof){case y:case R:case Q:case J:case _:return oe;default:return he}}case u:return he}}}function ve(oe){return se(oe)===M}S.AsyncMode=T,S.ConcurrentMode=M,S.ContextConsumer=y,S.ContextProvider=_,S.Element=r,S.ForwardRef=R,S.Fragment=p,S.Lazy=Q,S.Memo=J,S.Portal=u,S.Profiler=e,S.StrictMode=f,S.Suspense=F,S.isAsyncMode=function(oe){return ve(oe)||se(oe)===T},S.isConcurrentMode=ve,S.isContextConsumer=function(oe){return se(oe)===y},S.isContextProvider=function(oe){return se(oe)===_},S.isElement=function(oe){return"object"==typeof oe&&null!==oe&&oe.$$typeof===r},S.isForwardRef=function(oe){return se(oe)===R},S.isFragment=function(oe){return se(oe)===p},S.isLazy=function(oe){return se(oe)===Q},S.isMemo=function(oe){return se(oe)===J},S.isPortal=function(oe){return se(oe)===u},S.isProfiler=function(oe){return se(oe)===e},S.isStrictMode=function(oe){return se(oe)===f},S.isSuspense=function(oe){return se(oe)===F},S.isValidElementType=function(oe){return"string"==typeof oe||"function"==typeof oe||oe===p||oe===M||oe===e||oe===f||oe===F||oe===Z||"object"==typeof oe&&null!==oe&&(oe.$$typeof===Q||oe.$$typeof===J||oe.$$typeof===_||oe.$$typeof===y||oe.$$typeof===R||oe.$$typeof===ue||oe.$$typeof===ae||oe.$$typeof===$||oe.$$typeof===ee)},S.typeOf=se},38308:(v,S,i)=>{"use strict";v.exports=i(6249)},1422:(v,S)=>{"use strict";var r=60103,u=60106,p=60107,f=60108,e=60114,_=60109,y=60110,T=60112,M=60113,R=60120,F=60115,Z=60116;if("function"==typeof Symbol&&Symbol.for){var $=Symbol.for;r=$("react.element"),u=$("react.portal"),p=$("react.fragment"),f=$("react.strict_mode"),e=$("react.profiler"),_=$("react.provider"),y=$("react.context"),T=$("react.forward_ref"),M=$("react.suspense"),R=$("react.suspense_list"),F=$("react.memo"),Z=$("react.lazy"),$("react.block"),$("react.server.block"),$("react.fundamental"),$("react.debug_trace_mode"),$("react.legacy_hidden")}S.isContextConsumer=function(Ie){return function(Ie){if("object"==typeof Ie&&null!==Ie){var Ve=Ie.$$typeof;switch(Ve){case r:switch(Ie=Ie.type){case p:case e:case f:case M:case R:return Ie;default:switch(Ie=Ie&&Ie.$$typeof){case y:case T:case Z:case F:case _:return Ie;default:return Ve}}case u:return Ve}}}(Ie)===y}},56261:(v,S,i)=>{"use strict";v.exports=i(1422)},55429:(v,S,i)=>{"use strict";var r=i(18228),u=60103,p=60106;S.Fragment=60107,S.StrictMode=60108,S.Profiler=60114;var f=60109,e=60110,_=60112;S.Suspense=60113;var y=60115,T=60116;if("function"==typeof Symbol&&Symbol.for){var M=Symbol.for;u=M("react.element"),p=M("react.portal"),S.Fragment=M("react.fragment"),S.StrictMode=M("react.strict_mode"),S.Profiler=M("react.profiler"),f=M("react.provider"),e=M("react.context"),_=M("react.forward_ref"),S.Suspense=M("react.suspense"),y=M("react.memo"),T=M("react.lazy")}var R="function"==typeof Symbol&&Symbol.iterator;function Z(st){for(var en="https://reactjs.org/docs/error-decoder.html?invariant="+st,$t=1;$t<arguments.length;$t++)en+="&args[]="+encodeURIComponent(arguments[$t]);return"Minified React error #"+st+"; visit "+en+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var J={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Q={};function ee(st,en,$t){this.props=st,this.context=en,this.refs=Q,this.updater=$t||J}function ue(){}function ae(st,en,$t){this.props=st,this.context=en,this.refs=Q,this.updater=$t||J}ee.prototype.isReactComponent={},ee.prototype.setState=function(st,en){if("object"!=typeof st&&"function"!=typeof st&&null!=st)throw Error(Z(85));this.updater.enqueueSetState(this,st,en,"setState")},ee.prototype.forceUpdate=function(st){this.updater.enqueueForceUpdate(this,st,"forceUpdate")},ue.prototype=ee.prototype;var $=ae.prototype=new ue;$.constructor=ae,r($,ee.prototype),$.isPureReactComponent=!0;var se={current:null},ve=Object.prototype.hasOwnProperty,oe={key:!0,ref:!0,__self:!0,__source:!0};function he(st,en,$t){var Gt,Ut={},Bt=null,mt=null;if(null!=en)for(Gt in void 0!==en.ref&&(mt=en.ref),void 0!==en.key&&(Bt=""+en.key),en)ve.call(en,Gt)&&!oe.hasOwnProperty(Gt)&&(Ut[Gt]=en[Gt]);var Yt=arguments.length-2;if(1===Yt)Ut.children=$t;else if(1<Yt){for(var Dt=Array(Yt),zt=0;zt<Yt;zt++)Dt[zt]=arguments[zt+2];Ut.children=Dt}if(st&&st.defaultProps)for(Gt in Yt=st.defaultProps)void 0===Ut[Gt]&&(Ut[Gt]=Yt[Gt]);return{$$typeof:u,type:st,key:Bt,ref:mt,props:Ut,_owner:se.current}}function Oe(st){return"object"==typeof st&&null!==st&&st.$$typeof===u}var dt=/\/+/g;function ze(st,en){return"object"==typeof st&&null!==st&&null!=st.key?function(st){var en={"=":"=0",":":"=2"};return"$"+st.replace(/[=:]/g,function($t){return en[$t]})}(""+st.key):en.toString(36)}function Ye(st,en,$t,Gt,Ut){var Bt=typeof st;("undefined"===Bt||"boolean"===Bt)&&(st=null);var mt=!1;if(null===st)mt=!0;else switch(Bt){case"string":case"number":mt=!0;break;case"object":switch(st.$$typeof){case u:case p:mt=!0}}if(mt)return Ut=Ut(mt=st),st=""===Gt?"."+ze(mt,0):Gt,Array.isArray(Ut)?($t="",null!=st&&($t=st.replace(dt,"$&/")+"/"),Ye(Ut,en,$t,"",function(zt){return zt})):null!=Ut&&(Oe(Ut)&&(Ut=function(st,en){return{$$typeof:u,type:st.type,key:en,ref:st.ref,props:st.props,_owner:st._owner}}(Ut,$t+(!Ut.key||mt&&mt.key===Ut.key?"":(""+Ut.key).replace(dt,"$&/")+"/")+st)),en.push(Ut)),1;if(mt=0,Gt=""===Gt?".":Gt+":",Array.isArray(st))for(var Yt=0;Yt<st.length;Yt++){var Dt=Gt+ze(Bt=st[Yt],Yt);mt+=Ye(Bt,en,$t,Dt,Ut)}else if("function"==typeof(Dt=function(st){return null===st||"object"!=typeof st?null:"function"==typeof(st=R&&st[R]||st["@@iterator"])?st:null}(st)))for(st=Dt.call(st),Yt=0;!(Bt=st.next()).done;)mt+=Ye(Bt=Bt.value,en,$t,Dt=Gt+ze(Bt,Yt++),Ut);else if("object"===Bt)throw en=""+st,Error(Z(31,"[object Object]"===en?"object with keys {"+Object.keys(st).join(", ")+"}":en));return mt}function je(st,en,$t){if(null==st)return st;var Gt=[],Ut=0;return Ye(st,Gt,"","",function(Bt){return en.call($t,Bt,Ut++)}),Gt}function Ie(st){if(-1===st._status){var en=st._result;en=en(),st._status=0,st._result=en,en.then(function($t){0===st._status&&($t=$t.default,st._status=1,st._result=$t)},function($t){0===st._status&&(st._status=2,st._result=$t)})}if(1===st._status)return st._result;throw st._result}var Ve={current:null};function He(){var st=Ve.current;if(null===st)throw Error(Z(321));return st}var Zt={ReactCurrentDispatcher:Ve,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:se,IsSomeRendererActing:{current:!1},assign:r};S.Children={map:je,forEach:function(st,en,$t){je(st,function(){en.apply(this,arguments)},$t)},count:function(st){var en=0;return je(st,function(){en++}),en},toArray:function(st){return je(st,function(en){return en})||[]},only:function(st){if(!Oe(st))throw Error(Z(143));return st}},S.Component=ee,S.PureComponent=ae,S.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Zt,S.cloneElement=function(st,en,$t){if(null==st)throw Error(Z(267,st));var Gt=r({},st.props),Ut=st.key,Bt=st.ref,mt=st._owner;if(null!=en){if(void 0!==en.ref&&(Bt=en.ref,mt=se.current),void 0!==en.key&&(Ut=""+en.key),st.type&&st.type.defaultProps)var Yt=st.type.defaultProps;for(Dt in en)ve.call(en,Dt)&&!oe.hasOwnProperty(Dt)&&(Gt[Dt]=void 0===en[Dt]&&void 0!==Yt?Yt[Dt]:en[Dt])}var Dt=arguments.length-2;if(1===Dt)Gt.children=$t;else if(1<Dt){Yt=Array(Dt);for(var zt=0;zt<Dt;zt++)Yt[zt]=arguments[zt+2];Gt.children=Yt}return{$$typeof:u,type:st.type,key:Ut,ref:Bt,props:Gt,_owner:mt}},S.createContext=function(st,en){return void 0===en&&(en=null),(st={$$typeof:e,_calculateChangedBits:en,_currentValue:st,_currentValue2:st,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:f,_context:st},st.Consumer=st},S.createElement=he,S.createFactory=function(st){var en=he.bind(null,st);return en.type=st,en},S.createRef=function(){return{current:null}},S.forwardRef=function(st){return{$$typeof:_,render:st}},S.isValidElement=Oe,S.lazy=function(st){return{$$typeof:T,_payload:{_status:-1,_result:st},_init:Ie}},S.memo=function(st,en){return{$$typeof:y,type:st,compare:void 0===en?null:en}},S.useCallback=function(st,en){return He().useCallback(st,en)},S.useContext=function(st,en){return He().useContext(st,en)},S.useDebugValue=function(){},S.useEffect=function(st,en){return He().useEffect(st,en)},S.useImperativeHandle=function(st,en,$t){return He().useImperativeHandle(st,en,$t)},S.useLayoutEffect=function(st,en){return He().useLayoutEffect(st,en)},S.useMemo=function(st,en){return He().useMemo(st,en)},S.useReducer=function(st,en,$t){return He().useReducer(st,en,$t)},S.useRef=function(st){return He().useRef(st)},S.useState=function(st){return He().useState(st)},S.version="17.0.2"},78139:(v,S,i)=>{"use strict";v.exports=i(55429)},59882:(v,S,i)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});var e,u=(e=i(16482))&&e.__esModule?e:{default:e},p=i(11715);S.default=function(e){var _=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u.default.Map,y=Object.keys(e);return function(){var T=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_(),M=arguments[1];return T.withMutations(function(F){y.forEach(function(Z){var ee=(0,e[Z])(F.get(Z),M);(0,p.validateNextState)(ee,Z,M),F.set(Z,ee)})})}},v.exports=S.default},31208:(v,S,i)=>{"use strict";S.U=void 0;var e,p=(e=i(59882))&&e.__esModule?e:{default:e};S.U=p.default},46944:(v,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=function(i){return i&&"@@redux/INIT"===i.type?"initialState argument passed to createStore":"previous state received by the reducer"},v.exports=S.default},99319:(v,S,i)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});var u=e(i(16482)),f=e(i(46944));function e(_){return _&&_.__esModule?_:{default:_}}S.default=function(_,y,T){var M=Object.keys(y);if(!M.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";var R=(0,f.default)(T);if(u.default.isImmutable?!u.default.isImmutable(_):!u.default.Iterable.isIterable(_))return"The "+R+' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: "'+M.join('", "')+'".';var F=_.toSeq().keySeq().toArray().filter(function(Z){return!y.hasOwnProperty(Z)});return F.length>0?"Unexpected "+(1===F.length?"property":"properties")+' "'+F.join('", "')+'" found in '+R+'. Expected to find one of the known reducer property names instead: "'+M.join('", "')+'". Unexpected properties will be ignored.':null},v.exports=S.default},11715:(v,S,i)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.validateNextState=S.getUnexpectedInvocationParameterMessage=S.getStateName=void 0;var u=y(i(46944)),f=y(i(99319)),_=y(i(95159));function y(T){return T&&T.__esModule?T:{default:T}}S.getStateName=u.default,S.getUnexpectedInvocationParameterMessage=f.default,S.validateNextState=_.default},95159:(v,S)=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0}),S.default=function(i,r,u){if(void 0===i)throw new Error('Reducer "'+r+'" returned undefined when handling "'+u.type+'" action. To ignore an action, you must explicitly return the previous state.')},v.exports=S.default},88280:v=>{"use strict";var i,S="";v.exports=function(u,p){if("string"!=typeof u)throw new TypeError("expected a string");if(1===p)return u;if(2===p)return u+u;var f=u.length*p;if(i!==u||void 0===i)i=u,S="";else if(S.length>=f)return S.substr(0,f);for(;f>S.length&&p>1;)1&p&&(S+=u),p>>=1,u+=u;return S=(S+=u).substr(0,f)}},90465:v=>{"use strict";v.exports=function(i,r){if(r=r.split(":")[0],!(i=+i))return!1;switch(r){case"http":case"ws":return 80!==i;case"https":case"wss":return 443!==i;case"ftp":return 21!==i;case"gopher":return 70!==i;case"file":return!1}return 0!==i}},66952:(v,S,i)=>{const r=i(18514),u=i(29394),p=i(87931),f=i(45899);v.exports=e=>{var y,T,_=0,M={type:u.ROOT,stack:[]},R=M,F=M.stack,Z=[],J=he=>{r.error(e,"Nothing to repeat at column "+(he-1))},Q=r.strToChars(e);for(y=Q.length;_<y;)switch(T=Q[_++],T){case"\\":switch(T=Q[_++]){case"b":F.push(f.wordBoundary());break;case"B":F.push(f.nonWordBoundary());break;case"w":F.push(p.words());break;case"W":F.push(p.notWords());break;case"d":F.push(p.ints());break;case"D":F.push(p.notInts());break;case"s":F.push(p.whitespace());break;case"S":F.push(p.notWhitespace());break;default:/\d/.test(T)?F.push({type:u.REFERENCE,value:parseInt(T,10)}):F.push({type:u.CHAR,value:T.charCodeAt(0)})}break;case"^":F.push(f.begin());break;case"$":F.push(f.end());break;case"[":var ee;"^"===Q[_]?(ee=!0,_++):ee=!1;var ue=r.tokenizeClass(Q.slice(_),e);_+=ue[1],F.push({type:u.SET,set:ue[0],not:ee});break;case".":F.push(p.anyChar());break;case"(":var ae={type:u.GROUP,stack:[],remember:!0};"?"===(T=Q[_])&&(T=Q[_+1],_+=2,"="===T?ae.followedBy=!0:"!"===T?ae.notFollowedBy=!0:":"!==T&&r.error(e,`Invalid group, character '${T}' after '?' at column ${_-1}`),ae.remember=!1),F.push(ae),Z.push(R),R=ae,F=ae.stack;break;case")":0===Z.length&&r.error(e,"Unmatched ) at column "+(_-1)),F=(R=Z.pop()).options?R.options[R.options.length-1]:R.stack;break;case"|":R.options||(R.options=[R.stack],delete R.stack);var $=[];R.options.push($),F=$;break;case"{":var ve,oe,se=/^(\d+)(,(\d+)?)?\}/.exec(Q.slice(_));null!==se?(0===F.length&&J(_),ve=parseInt(se[1],10),oe=se[2]?se[3]?parseInt(se[3],10):1/0:ve,_+=se[0].length,F.push({type:u.REPETITION,min:ve,max:oe,value:F.pop()})):F.push({type:u.CHAR,value:123});break;case"?":0===F.length&&J(_),F.push({type:u.REPETITION,min:0,max:1,value:F.pop()});break;case"+":0===F.length&&J(_),F.push({type:u.REPETITION,min:1,max:1/0,value:F.pop()});break;case"*":0===F.length&&J(_),F.push({type:u.REPETITION,min:0,max:1/0,value:F.pop()});break;default:F.push({type:u.CHAR,value:T.charCodeAt(0)})}return 0!==Z.length&&r.error(e,"Unterminated group"),M},v.exports.types=u},45899:(v,S,i)=>{const r=i(29394);S.wordBoundary=()=>({type:r.POSITION,value:"b"}),S.nonWordBoundary=()=>({type:r.POSITION,value:"B"}),S.begin=()=>({type:r.POSITION,value:"^"}),S.end=()=>({type:r.POSITION,value:"$"})},87931:(v,S,i)=>{const r=i(29394),u=()=>[{type:r.RANGE,from:48,to:57}],p=()=>[{type:r.CHAR,value:95},{type:r.RANGE,from:97,to:122},{type:r.RANGE,from:65,to:90}].concat(u()),f=()=>[{type:r.CHAR,value:9},{type:r.CHAR,value:10},{type:r.CHAR,value:11},{type:r.CHAR,value:12},{type:r.CHAR,value:13},{type:r.CHAR,value:32},{type:r.CHAR,value:160},{type:r.CHAR,value:5760},{type:r.RANGE,from:8192,to:8202},{type:r.CHAR,value:8232},{type:r.CHAR,value:8233},{type:r.CHAR,value:8239},{type:r.CHAR,value:8287},{type:r.CHAR,value:12288},{type:r.CHAR,value:65279}];S.words=()=>({type:r.SET,set:p(),not:!1}),S.notWords=()=>({type:r.SET,set:p(),not:!0}),S.ints=()=>({type:r.SET,set:u(),not:!1}),S.notInts=()=>({type:r.SET,set:u(),not:!0}),S.whitespace=()=>({type:r.SET,set:f(),not:!1}),S.notWhitespace=()=>({type:r.SET,set:f(),not:!0}),S.anyChar=()=>({type:r.SET,set:[{type:r.CHAR,value:10},{type:r.CHAR,value:13},{type:r.CHAR,value:8232},{type:r.CHAR,value:8233}],not:!0})},29394:v=>{v.exports={ROOT:0,GROUP:1,POSITION:2,SET:3,RANGE:4,REPETITION:5,REFERENCE:6,CHAR:7}},18514:(v,S,i)=>{const r=i(29394),u=i(87931),f={0:0,t:9,n:10,v:11,f:12,r:13};S.strToChars=function(e){return e.replace(/(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z[\\\]^?])|([0tnvfr]))/g,function(y,T,M,R,F,Z,J,Q){if(M)return y;var ee=T?8:R?parseInt(R,16):F?parseInt(F,16):Z?parseInt(Z,8):J?"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?".indexOf(J):f[Q],ue=String.fromCharCode(ee);return/[[\]{}^$.|?*+()]/.test(ue)&&(ue="\\"+ue),ue})},S.tokenizeClass=(e,_)=>{for(var M,R,y=[],T=/\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?([^])/g;null!=(M=T.exec(e));)if(M[1])y.push(u.words());else if(M[2])y.push(u.ints());else if(M[3])y.push(u.whitespace());else if(M[4])y.push(u.notWords());else if(M[5])y.push(u.notInts());else if(M[6])y.push(u.notWhitespace());else if(M[7])y.push({type:r.RANGE,from:(M[8]||M[9]).charCodeAt(0),to:M[10].charCodeAt(0)});else{if(!(R=M[12]))return[y,T.lastIndex];y.push({type:r.CHAR,value:R.charCodeAt(0)})}S.error(_,"Unterminated character class")},S.error=(e,_)=>{throw new SyntaxError("Invalid regular expression: /"+e+"/: "+_)}},26215:(v,S,i)=>{"use strict";i.d(S,{X:()=>p});var r=i(79765),u=i(77971);class p extends r.xQ{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){const _=super._subscribe(e);return _&&!_.closed&&e.next(this._value),_}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new u.N;return this._value}next(e){super.next(this._value=e)}}},23098:(v,S,i)=>{"use strict";i.d(S,{P:()=>e});var r=i(59193),u=i(25917),p=i(40205);class e{constructor(y,T,M){this.kind=y,this.value=T,this.error=M,this.hasValue="N"===y}observe(y){switch(this.kind){case"N":return y.next&&y.next(this.value);case"E":return y.error&&y.error(this.error);case"C":return y.complete&&y.complete()}}do(y,T,M){switch(this.kind){case"N":return y&&y(this.value);case"E":return T&&T(this.error);case"C":return M&&M()}}accept(y,T,M){return y&&"function"==typeof y.next?this.observe(y):this.do(y,T,M)}toObservable(){switch(this.kind){case"N":return(0,u.of)(this.value);case"E":return(0,p._)(this.error);case"C":return(0,r.c)()}throw new Error("unexpected notification kind value")}static createNext(y){return void 0!==y?new e("N",y):e.undefinedValueNotification}static createError(y){return new e("E",void 0,y)}static createComplete(){return e.completeNotification}}e.completeNotification=new e("C"),e.undefinedValueNotification=new e("N",void 0)},18891:(v,S,i)=>{"use strict";i.d(S,{y:()=>M});var r=i(77393),p=i(29181),f=i(46490),_=i(16554),y=i(34022),T=i(82494);let M=(()=>{class F{constructor(J){this._isScalar=!1,J&&(this._subscribe=J)}lift(J){const Q=new F;return Q.source=this,Q.operator=J,Q}subscribe(J,Q,ee){const{operator:ue}=this,ae=function(F,Z,J){if(F){if(F instanceof r.L)return F;if(F[p.b])return F[p.b]()}return F||Z||J?new r.L(F,Z,J):new r.L(f.c)}(J,Q,ee);if(ae.add(ue?ue.call(ae,this.source):this.source||T.v.useDeprecatedSynchronousErrorHandling&&!ae.syncErrorThrowable?this._subscribe(ae):this._trySubscribe(ae)),T.v.useDeprecatedSynchronousErrorHandling&&ae.syncErrorThrowable&&(ae.syncErrorThrowable=!1,ae.syncErrorThrown))throw ae.syncErrorValue;return ae}_trySubscribe(J){try{return this._subscribe(J)}catch(Q){T.v.useDeprecatedSynchronousErrorHandling&&(J.syncErrorThrown=!0,J.syncErrorValue=Q),function(F){for(;F;){const{closed:Z,destination:J,isStopped:Q}=F;if(Z||Q)return!1;F=J&&J instanceof r.L?J:null}return!0}(J)?J.error(Q):console.warn(Q)}}forEach(J,Q){return new(Q=R(Q))((ee,ue)=>{let ae;ae=this.subscribe($=>{try{J($)}catch(se){ue(se),ae&&ae.unsubscribe()}},ue,ee)})}_subscribe(J){const{source:Q}=this;return Q&&Q.subscribe(J)}[_.L](){return this}pipe(...J){return 0===J.length?this:(0,y.U)(J)(this)}toPromise(J){return new(J=R(J))((Q,ee)=>{let ue;this.subscribe(ae=>ue=ae,ae=>ee(ae),()=>Q(ue))})}}return F.create=Z=>new F(Z),F})();function R(F){if(F||(F=T.v.Promise||Promise),!F)throw new Error("no Promise impl found");return F}},46490:(v,S,i)=>{"use strict";i.d(S,{c:()=>p});var r=i(82494),u=i(54449);const p={closed:!0,next(f){},error(f){if(r.v.useDeprecatedSynchronousErrorHandling)throw f;(0,u.z)(f)},complete(){}}},55197:(v,S,i)=>{"use strict";i.d(S,{L:()=>u});var r=i(77393);class u extends r.L{notifyNext(f,e,_,y,T){this.destination.next(e)}notifyError(f,e){this.destination.error(f)}notifyComplete(f){this.destination.complete()}}},80226:(v,S,i)=>{"use strict";i.d(S,{t:()=>Z});var r=i(79765),u=i(36465),f=i(16102);const y=new class extends f.v{}(class extends u.o{constructor(ee,ue){super(ee,ue),this.scheduler=ee,this.work=ue}schedule(ee,ue=0){return ue>0?super.schedule(ee,ue):(this.delay=ue,this.state=ee,this.scheduler.flush(this),this)}execute(ee,ue){return ue>0||this.closed?super.execute(ee,ue):this._execute(ee,ue)}requestAsyncId(ee,ue,ae=0){return null!==ae&&ae>0||null===ae&&this.delay>0?super.requestAsyncId(ee,ue,ae):ee.flush(this)}});var T=i(75319),M=i(59746),R=i(77971),F=i(78858);class Z extends r.xQ{constructor(ee=Number.POSITIVE_INFINITY,ue=Number.POSITIVE_INFINITY,ae){super(),this.scheduler=ae,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=ee<1?1:ee,this._windowTime=ue<1?1:ue,ue===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(ee){if(!this.isStopped){const ue=this._events;ue.push(ee),ue.length>this._bufferSize&&ue.shift()}super.next(ee)}nextTimeWindow(ee){this.isStopped||(this._events.push(new J(this._getNow(),ee)),this._trimBufferThenGetEvents()),super.next(ee)}_subscribe(ee){const ue=this._infiniteTimeWindow,ae=ue?this._events:this._trimBufferThenGetEvents(),$=this.scheduler,se=ae.length;let ve;if(this.closed)throw new R.N;if(this.isStopped||this.hasError?ve=T.w.EMPTY:(this.observers.push(ee),ve=new F.W(this,ee)),$&&ee.add(ee=new M.ht(ee,$)),ue)for(let oe=0;oe<se&&!ee.closed;oe++)ee.next(ae[oe]);else for(let oe=0;oe<se&&!ee.closed;oe++)ee.next(ae[oe].value);return this.hasError?ee.error(this.thrownError):this.isStopped&&ee.complete(),ve}_getNow(){return(this.scheduler||y).now()}_trimBufferThenGetEvents(){const ee=this._getNow(),ue=this._bufferSize,ae=this._windowTime,$=this._events,se=$.length;let ve=0;for(;ve<se&&!(ee-$[ve].time<ae);)ve++;return se>ue&&(ve=Math.max(ve,se-ue)),ve>0&&$.splice(0,ve),$}}class J{constructor(ee,ue){this.time=ee,this.value=ue}}},79765:(v,S,i)=>{"use strict";i.d(S,{Yc:()=>y,xQ:()=>T});var r=i(18891),u=i(77393),p=i(75319),f=i(77971),e=i(78858),_=i(29181);class y extends u.L{constructor(F){super(F),this.destination=F}}let T=(()=>{class R extends r.y{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[_.b](){return new y(this)}lift(Z){const J=new M(this,this);return J.operator=Z,J}next(Z){if(this.closed)throw new f.N;if(!this.isStopped){const{observers:J}=this,Q=J.length,ee=J.slice();for(let ue=0;ue<Q;ue++)ee[ue].next(Z)}}error(Z){if(this.closed)throw new f.N;this.hasError=!0,this.thrownError=Z,this.isStopped=!0;const{observers:J}=this,Q=J.length,ee=J.slice();for(let ue=0;ue<Q;ue++)ee[ue].error(Z);this.observers.length=0}complete(){if(this.closed)throw new f.N;this.isStopped=!0;const{observers:Z}=this,J=Z.length,Q=Z.slice();for(let ee=0;ee<J;ee++)Q[ee].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(Z){if(this.closed)throw new f.N;return super._trySubscribe(Z)}_subscribe(Z){if(this.closed)throw new f.N;return this.hasError?(Z.error(this.thrownError),p.w.EMPTY):this.isStopped?(Z.complete(),p.w.EMPTY):(this.observers.push(Z),new e.W(this,Z))}asObservable(){const Z=new r.y;return Z.source=this,Z}}return R.create=(F,Z)=>new M(F,Z),R})();class M extends T{constructor(F,Z){super(),this.destination=F,this.source=Z}next(F){const{destination:Z}=this;Z&&Z.next&&Z.next(F)}error(F){const{destination:Z}=this;Z&&Z.error&&this.destination.error(F)}complete(){const{destination:F}=this;F&&F.complete&&this.destination.complete()}_subscribe(F){const{source:Z}=this;return Z?this.source.subscribe(F):p.w.EMPTY}}},78858:(v,S,i)=>{"use strict";i.d(S,{W:()=>u});var r=i(75319);class u extends r.w{constructor(f,e){super(),this.subject=f,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const f=this.subject,e=f.observers;if(this.subject=null,!e||0===e.length||f.isStopped||f.closed)return;const _=e.indexOf(this.subscriber);-1!==_&&e.splice(_,1)}}},77393:(v,S,i)=>{"use strict";i.d(S,{L:()=>y});var r=i(69105),u=i(46490),p=i(75319),f=i(29181),e=i(82494),_=i(54449);class y extends p.w{constructor(R,F,Z){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=u.c;break;case 1:if(!R){this.destination=u.c;break}if("object"==typeof R){R instanceof y?(this.syncErrorThrowable=R.syncErrorThrowable,this.destination=R,R.add(this)):(this.syncErrorThrowable=!0,this.destination=new T(this,R));break}default:this.syncErrorThrowable=!0,this.destination=new T(this,R,F,Z)}}[f.b](){return this}static create(R,F,Z){const J=new y(R,F,Z);return J.syncErrorThrowable=!1,J}next(R){this.isStopped||this._next(R)}error(R){this.isStopped||(this.isStopped=!0,this._error(R))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(R){this.destination.next(R)}_error(R){this.destination.error(R),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:R}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=R,this}}class T extends y{constructor(R,F,Z,J){super(),this._parentSubscriber=R;let Q,ee=this;(0,r.m)(F)?Q=F:F&&(Q=F.next,Z=F.error,J=F.complete,F!==u.c&&(ee=Object.create(F),(0,r.m)(ee.unsubscribe)&&this.add(ee.unsubscribe.bind(ee)),ee.unsubscribe=this.unsubscribe.bind(this))),this._context=ee,this._next=Q,this._error=Z,this._complete=J}next(R){if(!this.isStopped&&this._next){const{_parentSubscriber:F}=this;e.v.useDeprecatedSynchronousErrorHandling&&F.syncErrorThrowable?this.__tryOrSetError(F,this._next,R)&&this.unsubscribe():this.__tryOrUnsub(this._next,R)}}error(R){if(!this.isStopped){const{_parentSubscriber:F}=this,{useDeprecatedSynchronousErrorHandling:Z}=e.v;if(this._error)Z&&F.syncErrorThrowable?(this.__tryOrSetError(F,this._error,R),this.unsubscribe()):(this.__tryOrUnsub(this._error,R),this.unsubscribe());else if(F.syncErrorThrowable)Z?(F.syncErrorValue=R,F.syncErrorThrown=!0):(0,_.z)(R),this.unsubscribe();else{if(this.unsubscribe(),Z)throw R;(0,_.z)(R)}}}complete(){if(!this.isStopped){const{_parentSubscriber:R}=this;if(this._complete){const F=()=>this._complete.call(this._context);e.v.useDeprecatedSynchronousErrorHandling&&R.syncErrorThrowable?(this.__tryOrSetError(R,F),this.unsubscribe()):(this.__tryOrUnsub(F),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(R,F){try{R.call(this._context,F)}catch(Z){if(this.unsubscribe(),e.v.useDeprecatedSynchronousErrorHandling)throw Z;(0,_.z)(Z)}}__tryOrSetError(R,F,Z){if(!e.v.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{F.call(this._context,Z)}catch(J){return e.v.useDeprecatedSynchronousErrorHandling?(R.syncErrorValue=J,R.syncErrorThrown=!0,!0):((0,_.z)(J),!0)}return!1}_unsubscribe(){const{_parentSubscriber:R}=this;this._context=null,this._parentSubscriber=null,R.unsubscribe()}}},75319:(v,S,i)=>{"use strict";i.d(S,{w:()=>_});var r=i(59796),u=i(81555),p=i(69105);const e=(()=>{function T(M){return Error.call(this),this.message=M?`${M.length} errors occurred during unsubscription:\n${M.map((R,F)=>`${F+1}) ${R.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=M,this}return T.prototype=Object.create(Error.prototype),T})();class _{constructor(M){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,M&&(this._ctorUnsubscribe=!0,this._unsubscribe=M)}unsubscribe(){let M;if(this.closed)return;let{_parentOrParents:R,_ctorUnsubscribe:F,_unsubscribe:Z,_subscriptions:J}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,R instanceof _)R.remove(this);else if(null!==R)for(let Q=0;Q<R.length;++Q)R[Q].remove(this);if((0,p.m)(Z)){F&&(this._unsubscribe=void 0);try{Z.call(this)}catch(Q){M=Q instanceof e?y(Q.errors):[Q]}}if((0,r.k)(J)){let Q=-1,ee=J.length;for(;++Q<ee;){const ue=J[Q];if((0,u.K)(ue))try{ue.unsubscribe()}catch(ae){M=M||[],ae instanceof e?M=M.concat(y(ae.errors)):M.push(ae)}}}if(M)throw new e(M)}add(M){let R=M;if(!M)return _.EMPTY;switch(typeof M){case"function":R=new _(M);case"object":if(R===this||R.closed||"function"!=typeof R.unsubscribe)return R;if(this.closed)return R.unsubscribe(),R;if(!(R instanceof _)){const J=R;R=new _,R._subscriptions=[J]}break;default:throw new Error("unrecognized teardown "+M+" added to Subscription.")}let{_parentOrParents:F}=R;if(null===F)R._parentOrParents=this;else if(F instanceof _){if(F===this)return R;R._parentOrParents=[F,this]}else{if(-1!==F.indexOf(this))return R;F.push(this)}const Z=this._subscriptions;return null===Z?this._subscriptions=[R]:Z.push(R),R}remove(M){const R=this._subscriptions;if(R){const F=R.indexOf(M);-1!==F&&R.splice(F,1)}}}var T;function y(T){return T.reduce((M,R)=>M.concat(R instanceof e?R.errors:R),[])}_.EMPTY=((T=new _).closed=!0,T)},82494:(v,S,i)=>{"use strict";i.d(S,{v:()=>u});let r=!1;const u={Promise:void 0,set useDeprecatedSynchronousErrorHandling(p){if(p){const f=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+f.stack)}else r&&console.log("RxJS: Back to a better error behavior. Thank you. <3");r=p},get useDeprecatedSynchronousErrorHandling(){return r}}},85345:(v,S,i)=>{"use strict";i.d(S,{IY:()=>f,Ds:()=>_,ft:()=>T});var r=i(77393),u=i(18891),p=i(87444);class f extends r.L{constructor(R){super(),this.parent=R}_next(R){this.parent.notifyNext(R)}_error(R){this.parent.notifyError(R),this.unsubscribe()}_complete(){this.parent.notifyComplete(),this.unsubscribe()}}class _ extends r.L{notifyNext(R){this.destination.next(R)}notifyError(R){this.destination.error(R)}notifyComplete(){this.destination.complete()}}function T(M,R){if(!R.closed)return M instanceof u.y?M.subscribe(R):(0,p.s)(M)(R)}},52441:(v,S,i)=>{"use strict";i.d(S,{c:()=>e,N:()=>_});var r=i(79765),u=i(18891),p=i(75319),f=i(51307);class e extends u.y{constructor(F,Z){super(),this.source=F,this.subjectFactory=Z,this._refCount=0,this._isComplete=!1}_subscribe(F){return this.getSubject().subscribe(F)}getSubject(){const F=this._subject;return(!F||F.isStopped)&&(this._subject=this.subjectFactory()),this._subject}connect(){let F=this._connection;return F||(this._isComplete=!1,F=this._connection=new p.w,F.add(this.source.subscribe(new y(this.getSubject(),this))),F.closed&&(this._connection=null,F=p.w.EMPTY)),F}refCount(){return(0,f.x)()(this)}}const _=(()=>{const R=e.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:R._subscribe},_isComplete:{value:R._isComplete,writable:!0},getSubject:{value:R.getSubject},connect:{value:R.connect},refCount:{value:R.refCount}}})();class y extends r.Yc{constructor(F,Z){super(F),this.connectable=Z}_error(F){this._unsubscribe(),super._error(F)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const F=this.connectable;if(F){this.connectable=null;const Z=F._connection;F._refCount=0,F._subject=null,F._connection=null,Z&&Z.unsubscribe()}}}},9112:(v,S,i)=>{"use strict";i.d(S,{aj:()=>y});var r=i(54869),u=i(59796),p=i(55197),f=i(20509),e=i(56693);const _={};function y(...R){let F,Z;return(0,r.K)(R[R.length-1])&&(Z=R.pop()),"function"==typeof R[R.length-1]&&(F=R.pop()),1===R.length&&(0,u.k)(R[0])&&(R=R[0]),(0,e.n)(R,Z).lift(new T(F))}class T{constructor(F){this.resultSelector=F}call(F,Z){return Z.subscribe(new M(F,this.resultSelector))}}class M extends p.L{constructor(F,Z){super(F),this.resultSelector=Z,this.active=0,this.values=[],this.observables=[]}_next(F){this.values.push(_),this.observables.push(F)}_complete(){const F=this.observables,Z=F.length;if(0===Z)this.destination.complete();else{this.active=Z,this.toRespond=Z;for(let J=0;J<Z;J++)this.add((0,f.D)(this,F[J],void 0,J))}}notifyComplete(F){0==(this.active-=1)&&this.destination.complete()}notifyNext(F,Z,J){const Q=this.values,ue=this.toRespond?Q[J]===_?--this.toRespond:this.toRespond:0;Q[J]=Z,0===ue&&(this.resultSelector?this._tryResultSelector(Q):this.destination.next(Q.slice()))}_tryResultSelector(F){let Z;try{Z=this.resultSelector.apply(this,F)}catch(J){return void this.destination.error(J)}this.destination.next(Z)}}},58071:(v,S,i)=>{"use strict";i.d(S,{z:()=>f});var r=i(25917),u=i(63282);function f(...e){return(0,u.J)(1)((0,r.of)(...e))}},59193:(v,S,i)=>{"use strict";i.d(S,{E:()=>u,c:()=>p});var r=i(18891);const u=new r.y(e=>e.complete());function p(e){return e?function(e){return new r.y(_=>e.schedule(()=>_.complete()))}(e):u}},35758:(v,S,i)=>{"use strict";i.d(S,{D:()=>_});var r=i(18891),u=i(59796),p=i(88002),f=i(81555),e=i(94402);function _(...T){if(1===T.length){const M=T[0];if((0,u.k)(M))return y(M,null);if((0,f.K)(M)&&Object.getPrototypeOf(M)===Object.prototype){const R=Object.keys(M);return y(R.map(F=>M[F]),R)}}if("function"==typeof T[T.length-1]){const M=T.pop();return y(T=1===T.length&&(0,u.k)(T[0])?T[0]:T,null).pipe((0,p.U)(R=>M(...R)))}return y(T,null)}function y(T,M){return new r.y(R=>{const F=T.length;if(0===F)return void R.complete();const Z=new Array(F);let J=0,Q=0;for(let ee=0;ee<F;ee++){const ue=(0,e.D)(T[ee]);let ae=!1;R.add(ue.subscribe({next:$=>{ae||(ae=!0,Q++),Z[ee]=$},error:$=>R.error($),complete:()=>{J++,(J===F||!ae)&&(Q===F&&R.next(M?M.reduce(($,se,ve)=>($[se]=Z[ve],$),{}):Z),R.complete())}}))}})}},94402:(v,S,i)=>{"use strict";i.d(S,{D:()=>ee});var r=i(18891),u=i(87444),p=i(75319),f=i(16554),y=i(94087),T=i(20377),F=i(44072),Z=i(69489);function ee(ue,ae){return ae?function(ue,ae){if(null!=ue){if(function(ue){return ue&&"function"==typeof ue[f.L]}(ue))return function(ue,ae){return new r.y($=>{const se=new p.w;return se.add(ae.schedule(()=>{const ve=ue[f.L]();se.add(ve.subscribe({next(oe){se.add(ae.schedule(()=>$.next(oe)))},error(oe){se.add(ae.schedule(()=>$.error(oe)))},complete(){se.add(ae.schedule(()=>$.complete()))}}))})),se})}(ue,ae);if((0,F.t)(ue))return function(ue,ae){return new r.y($=>{const se=new p.w;return se.add(ae.schedule(()=>ue.then(ve=>{se.add(ae.schedule(()=>{$.next(ve),se.add(ae.schedule(()=>$.complete()))}))},ve=>{se.add(ae.schedule(()=>$.error(ve)))}))),se})}(ue,ae);if((0,Z.z)(ue))return(0,y.r)(ue,ae);if(function(ue){return ue&&"function"==typeof ue[T.hZ]}(ue)||"string"==typeof ue)return function(ue,ae){if(!ue)throw new Error("Iterable cannot be null");return new r.y($=>{const se=new p.w;let ve;return se.add(()=>{ve&&"function"==typeof ve.return&&ve.return()}),se.add(ae.schedule(()=>{ve=ue[T.hZ](),se.add(ae.schedule(function(){if($.closed)return;let oe,he;try{const me=ve.next();oe=me.value,he=me.done}catch(me){return void $.error(me)}he?$.complete():($.next(oe),this.schedule())}))})),se})}(ue,ae)}throw new TypeError((null!==ue&&typeof ue||ue)+" is not observable")}(ue,ae):ue instanceof r.y?ue:new r.y((0,u.s)(ue))}},56693:(v,S,i)=>{"use strict";i.d(S,{n:()=>f});var r=i(18891),u=i(55015),p=i(94087);function f(e,_){return _?(0,p.r)(e,_):new r.y((0,u.V)(e))}},22759:(v,S,i)=>{"use strict";i.d(S,{R:()=>_});var r=i(18891),u=i(59796),p=i(69105),f=i(88002);function _(F,Z,J,Q){return(0,p.m)(J)&&(Q=J,J=void 0),Q?_(F,Z,J).pipe((0,f.U)(ee=>(0,u.k)(ee)?Q(...ee):Q(ee))):new r.y(ee=>{y(F,Z,function(ae){ee.next(arguments.length>1?Array.prototype.slice.call(arguments):ae)},ee,J)})}function y(F,Z,J,Q,ee){let ue;if(function(F){return F&&"function"==typeof F.addEventListener&&"function"==typeof F.removeEventListener}(F)){const ae=F;F.addEventListener(Z,J,ee),ue=()=>ae.removeEventListener(Z,J,ee)}else if(function(F){return F&&"function"==typeof F.on&&"function"==typeof F.off}(F)){const ae=F;F.on(Z,J),ue=()=>ae.off(Z,J)}else if(function(F){return F&&"function"==typeof F.addListener&&"function"==typeof F.removeListener}(F)){const ae=F;F.addListener(Z,J),ue=()=>ae.removeListener(Z,J)}else{if(!F||!F.length)throw new TypeError("Invalid event target");for(let ae=0,$=F.length;ae<$;ae++)y(F[ae],Z,J,Q,ee)}Q.add(ue)}},66682:(v,S,i)=>{"use strict";i.d(S,{T:()=>e});var r=i(18891),u=i(54869),p=i(63282),f=i(56693);function e(..._){let y=Number.POSITIVE_INFINITY,T=null,M=_[_.length-1];return(0,u.K)(M)?(T=_.pop(),_.length>1&&"number"==typeof _[_.length-1]&&(y=_.pop())):"number"==typeof M&&(y=_.pop()),null===T&&1===_.length&&_[0]instanceof r.y?_[0]:(0,p.J)(y)((0,f.n)(_,T))}},17757:(v,S,i)=>{"use strict";i.d(S,{C:()=>p});var r=i(18891),u=i(98640);const p=new r.y(u.Z)},25917:(v,S,i)=>{"use strict";i.d(S,{of:()=>f});var r=i(54869),u=i(56693),p=i(94087);function f(...e){let _=e[e.length-1];return(0,r.K)(_)?(e.pop(),(0,p.r)(e,_)):(0,u.n)(e)}},40205:(v,S,i)=>{"use strict";i.d(S,{_:()=>u});var r=i(18891);function u(f,e){return new r.y(e?_=>e.schedule(p,0,{error:f,subscriber:_}):_=>_.error(f))}function p({error:f,subscriber:e}){e.error(f)}},46797:(v,S,i)=>{"use strict";i.d(S,{H:()=>e});var r=i(18891),u=i(33637),p=i(26561),f=i(54869);function e(y=0,T,M){let R=-1;return(0,p.k)(T)?R=Number(T)<1?1:Number(T):(0,f.K)(T)&&(M=T),(0,f.K)(M)||(M=u.P),new r.y(F=>{const Z=(0,p.k)(y)?y:+y-M.now();return M.schedule(_,Z,{index:0,period:R,subscriber:F})})}function _(y){const{index:T,period:M,subscriber:R}=y;if(R.next(T),!R.closed){if(-1===M)return R.complete();y.index=T+1,this.schedule(y,M)}}},5304:(v,S,i)=>{"use strict";i.d(S,{K:()=>u});var r=i(85345);function u(e){return function(y){const T=new p(e),M=y.lift(T);return T.caught=M}}class p{constructor(_){this.selector=_}call(_,y){return y.subscribe(new f(_,this.selector,this.caught))}}class f extends r.Ds{constructor(_,y,T){super(_),this.selector=y,this.caught=T}error(_){if(!this.isStopped){let y;try{y=this.selector(_,this.caught)}catch(R){return void super.error(R)}this._unsubscribeAndRecycle();const T=new r.IY(this);this.add(T);const M=(0,r.ft)(y,T);M!==T&&this.add(M)}}}},94612:(v,S,i)=>{"use strict";i.d(S,{b:()=>u});var r=i(19773);function u(p,f){return(0,r.zg)(p,f,1)}},95242:(v,S,i)=>{"use strict";i.d(S,{d:()=>u});var r=i(77393);function u(e=null){return _=>_.lift(new p(e))}class p{constructor(_){this.defaultValue=_}call(_,y){return y.subscribe(new f(_,this.defaultValue))}}class f extends r.L{constructor(_,y){super(_),this.defaultValue=y,this.isEmpty=!0}_next(_){this.isEmpty=!1,this.destination.next(_)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},71289:(v,S,i)=>{"use strict";i.d(S,{g:()=>e});var r=i(33637),p=i(77393),f=i(23098);function e(M,R=r.P){const Z=function(M){return M instanceof Date&&!isNaN(+M)}(M)?+M-R.now():Math.abs(M);return J=>J.lift(new _(Z,R))}class _{constructor(R,F){this.delay=R,this.scheduler=F}call(R,F){return F.subscribe(new y(R,this.delay,this.scheduler))}}class y extends p.L{constructor(R,F,Z){super(R),this.delay=F,this.scheduler=Z,this.queue=[],this.active=!1,this.errored=!1}static dispatch(R){const F=R.source,Z=F.queue,J=R.scheduler,Q=R.destination;for(;Z.length>0&&Z[0].time-J.now()<=0;)Z.shift().notification.observe(Q);if(Z.length>0){const ee=Math.max(0,Z[0].time-J.now());this.schedule(R,ee)}else this.unsubscribe(),F.active=!1}_schedule(R){this.active=!0,this.destination.add(R.schedule(y.dispatch,this.delay,{source:this,destination:this.destination,scheduler:R}))}scheduleNotification(R){if(!0===this.errored)return;const F=this.scheduler,Z=new T(F.now()+this.delay,R);this.queue.push(Z),!1===this.active&&this._schedule(F)}_next(R){this.scheduleNotification(f.P.createNext(R))}_error(R){this.errored=!0,this.queue=[],this.destination.error(R),this.unsubscribe()}_complete(){this.scheduleNotification(f.P.createComplete()),this.unsubscribe()}}class T{constructor(R,F){this.time=R,this.notification=F}}},87519:(v,S,i)=>{"use strict";i.d(S,{x:()=>u});var r=i(77393);function u(e,_){return y=>y.lift(new p(e,_))}class p{constructor(_,y){this.compare=_,this.keySelector=y}call(_,y){return y.subscribe(new f(_,this.compare,this.keySelector))}}class f extends r.L{constructor(_,y,T){super(_),this.keySelector=T,this.hasKey=!1,"function"==typeof y&&(this.compare=y)}compare(_,y){return _===y}_next(_){let y;try{const{keySelector:M}=this;y=M?M(_):_}catch(M){return this.destination.error(M)}let T=!1;if(this.hasKey)try{const{compare:M}=this;T=M(this.key,y)}catch(M){return this.destination.error(M)}else this.hasKey=!0;T||(this.key=y,this.destination.next(_))}}},45435:(v,S,i)=>{"use strict";i.d(S,{h:()=>u});var r=i(77393);function u(e,_){return function(T){return T.lift(new p(e,_))}}class p{constructor(_,y){this.predicate=_,this.thisArg=y}call(_,y){return y.subscribe(new f(_,this.predicate,this.thisArg))}}class f extends r.L{constructor(_,y,T){super(_),this.predicate=y,this.thisArg=T,this.count=0}_next(_){let y;try{y=this.predicate.call(this.thisArg,_,this.count++)}catch(T){return void this.destination.error(T)}y&&this.destination.next(_)}}},68939:(v,S,i)=>{"use strict";i.d(S,{x:()=>p});var r=i(77393),u=i(75319);function p(_){return y=>y.lift(new f(_))}class f{constructor(y){this.callback=y}call(y,T){return T.subscribe(new e(y,this.callback))}}class e extends r.L{constructor(y,T){super(y),this.add(new u.w(T))}}},28049:(v,S,i)=>{"use strict";i.d(S,{P:()=>y});var r=i(13410),u=i(45435),p=i(15257),f=i(95242),e=i(44635),_=i(54487);function y(T,M){const R=arguments.length>=2;return F=>F.pipe(T?(0,u.h)((Z,J)=>T(Z,J,F)):_.y,(0,p.q)(1),R?(0,f.d)(M):(0,e.T)(()=>new r.K))}},12627:(v,S,i)=>{"use strict";i.d(S,{Z:()=>y});var r=i(13410),u=i(45435),p=i(548),f=i(44635),e=i(95242),_=i(54487);function y(T,M){const R=arguments.length>=2;return F=>F.pipe(T?(0,u.h)((Z,J)=>T(Z,J,F)):_.y,(0,p.h)(1),R?(0,e.d)(M):(0,f.T)(()=>new r.K))}},88002:(v,S,i)=>{"use strict";i.d(S,{U:()=>u});var r=i(77393);function u(e,_){return function(T){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return T.lift(new p(e,_))}}class p{constructor(_,y){this.project=_,this.thisArg=y}call(_,y){return y.subscribe(new f(_,this.project,this.thisArg))}}class f extends r.L{constructor(_,y,T){super(_),this.project=y,this.count=0,this.thisArg=T||this}_next(_){let y;try{y=this.project.call(this.thisArg,_,this.count++)}catch(T){return void this.destination.error(T)}this.destination.next(y)}}},96736:(v,S,i)=>{"use strict";i.d(S,{h:()=>u});var r=i(77393);function u(e){return _=>_.lift(new p(e))}class p{constructor(_){this.value=_}call(_,y){return y.subscribe(new f(_,this.value))}}class f extends r.L{constructor(_,y){super(_),this.value=y}_next(_){this.destination.next(this.value)}}},63282:(v,S,i)=>{"use strict";i.d(S,{J:()=>p});var r=i(19773),u=i(54487);function p(f=Number.POSITIVE_INFINITY){return(0,r.zg)(u.y,f)}},19773:(v,S,i)=>{"use strict";i.d(S,{zg:()=>f});var r=i(88002),u=i(94402),p=i(85345);function f(T,M,R=Number.POSITIVE_INFINITY){return"function"==typeof M?F=>F.pipe(f((Z,J)=>(0,u.D)(T(Z,J)).pipe((0,r.U)((Q,ee)=>M(Z,Q,J,ee))),R)):("number"==typeof M&&(R=M),F=>F.lift(new e(T,R)))}class e{constructor(M,R=Number.POSITIVE_INFINITY){this.project=M,this.concurrent=R}call(M,R){return R.subscribe(new _(M,this.project,this.concurrent))}}class _ extends p.Ds{constructor(M,R,F=Number.POSITIVE_INFINITY){super(M),this.project=R,this.concurrent=F,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(M){this.active<this.concurrent?this._tryNext(M):this.buffer.push(M)}_tryNext(M){let R;const F=this.index++;try{R=this.project(M,F)}catch(Z){return void this.destination.error(Z)}this.active++,this._innerSub(R)}_innerSub(M){const R=new p.IY(this),F=this.destination;F.add(R);const Z=(0,p.ft)(M,R);Z!==R&&F.add(Z)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(M){this.destination.next(M)}notifyComplete(){const M=this.buffer;this.active--,M.length>0?this._next(M.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},59746:(v,S,i)=>{"use strict";i.d(S,{QV:()=>p,ht:()=>e});var r=i(77393),u=i(23098);function p(y,T=0){return function(R){return R.lift(new f(y,T))}}class f{constructor(T,M=0){this.scheduler=T,this.delay=M}call(T,M){return M.subscribe(new e(T,this.scheduler,this.delay))}}class e extends r.L{constructor(T,M,R=0){super(T),this.scheduler=M,this.delay=R}static dispatch(T){const{notification:M,destination:R}=T;M.observe(R),this.unsubscribe()}scheduleMessage(T){this.destination.add(this.scheduler.schedule(e.dispatch,this.delay,new _(T,this.destination)))}_next(T){this.scheduleMessage(u.P.createNext(T))}_error(T){this.scheduleMessage(u.P.createError(T)),this.unsubscribe()}_complete(){this.scheduleMessage(u.P.createComplete()),this.unsubscribe()}}class _{constructor(T,M){this.notification=T,this.destination=M}}},51307:(v,S,i)=>{"use strict";i.d(S,{x:()=>u});var r=i(77393);function u(){return function(_){return _.lift(new p(_))}}class p{constructor(_){this.connectable=_}call(_,y){const{connectable:T}=this;T._refCount++;const M=new f(_,T),R=y.subscribe(M);return M.closed||(M.connection=T.connect()),R}}class f extends r.L{constructor(_,y){super(_),this.connectable=y}_unsubscribe(){const{connectable:_}=this;if(!_)return void(this.connection=null);this.connectable=null;const y=_._refCount;if(y<=0)return void(this.connection=null);if(_._refCount=y-1,y>1)return void(this.connection=null);const{connection:T}=this,M=_._connection;this.connection=null,M&&(!T||M===T)&&M.unsubscribe()}}},42145:(v,S,i)=>{"use strict";i.d(S,{R:()=>u});var r=i(77393);function u(e,_){let y=!1;return arguments.length>=2&&(y=!0),function(M){return M.lift(new p(e,_,y))}}class p{constructor(_,y,T=!1){this.accumulator=_,this.seed=y,this.hasSeed=T}call(_,y){return y.subscribe(new f(_,this.accumulator,this.seed,this.hasSeed))}}class f extends r.L{constructor(_,y,T,M){super(_),this.accumulator=y,this._seed=T,this.hasSeed=M,this.index=0}get seed(){return this._seed}set seed(_){this.hasSeed=!0,this._seed=_}_next(_){if(this.hasSeed)return this._tryNext(_);this.seed=_,this.destination.next(_)}_tryNext(_){const y=this.index++;let T;try{T=this.accumulator(this.seed,_,y)}catch(M){this.destination.error(M)}this.seed=T,this.destination.next(T)}}},18819:(v,S,i)=>{"use strict";i.d(S,{B:()=>y});var r=i(52441);var f=i(51307),e=i(79765);function _(){return new e.xQ}function y(){return T=>(0,f.x)()(function(T,M){return function(F){let Z;Z="function"==typeof T?T:function(){return T};const J=Object.create(F,r.N);return J.source=F,J.subjectFactory=Z,J}}(_)(T))}},47349:(v,S,i)=>{"use strict";i.d(S,{d:()=>u});var r=i(80226);function u(f,e,_){let y;return y=f&&"object"==typeof f?f:{bufferSize:f,windowTime:e,refCount:!1,scheduler:_},T=>T.lift(function({bufferSize:f=Number.POSITIVE_INFINITY,windowTime:e=Number.POSITIVE_INFINITY,refCount:_,scheduler:y}){let T,R,M=0,F=!1,Z=!1;return function(Q){let ee;M++,!T||F?(F=!1,T=new r.t(f,e,y),ee=T.subscribe(this),R=Q.subscribe({next(ue){T.next(ue)},error(ue){F=!0,T.error(ue)},complete(){Z=!0,R=void 0,T.complete()}})):ee=T.subscribe(this),this.add(()=>{M--,ee.unsubscribe(),R&&!Z&&_&&0===M&&(R.unsubscribe(),R=void 0,T=void 0)})}}(y))}},39761:(v,S,i)=>{"use strict";i.d(S,{O:()=>p});var r=i(58071),u=i(54869);function p(...f){const e=f[f.length-1];return(0,u.K)(e)?(f.pop(),_=>(0,r.z)(f,_,e)):_=>(0,r.z)(f,_)}},43190:(v,S,i)=>{"use strict";i.d(S,{w:()=>f});var r=i(88002),u=i(94402),p=i(85345);function f(y,T){return"function"==typeof T?M=>M.pipe(f((R,F)=>(0,u.D)(y(R,F)).pipe((0,r.U)((Z,J)=>T(R,Z,F,J))))):M=>M.lift(new e(y))}class e{constructor(T){this.project=T}call(T,M){return M.subscribe(new _(T,this.project))}}class _ extends p.Ds{constructor(T,M){super(T),this.project=M,this.index=0}_next(T){let M;const R=this.index++;try{M=this.project(T,R)}catch(F){return void this.destination.error(F)}this._innerSub(M)}_innerSub(T){const M=this.innerSubscription;M&&M.unsubscribe();const R=new p.IY(this),F=this.destination;F.add(R),this.innerSubscription=(0,p.ft)(T,R),this.innerSubscription!==R&&F.add(this.innerSubscription)}_complete(){const{innerSubscription:T}=this;(!T||T.closed)&&super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=void 0}notifyComplete(){this.innerSubscription=void 0,this.isStopped&&super._complete()}notifyNext(T){this.destination.next(T)}}},15257:(v,S,i)=>{"use strict";i.d(S,{q:()=>f});var r=i(77393),u=i(7108),p=i(59193);function f(y){return T=>0===y?(0,p.c)():T.lift(new e(y))}class e{constructor(T){if(this.total=T,this.total<0)throw new u.W}call(T,M){return M.subscribe(new _(T,this.total))}}class _ extends r.L{constructor(T,M){super(T),this.total=M,this.count=0}_next(T){const M=this.total,R=++this.count;R<=M&&(this.destination.next(T),R===M&&(this.destination.complete(),this.unsubscribe()))}}},548:(v,S,i)=>{"use strict";i.d(S,{h:()=>f});var r=i(77393),u=i(7108),p=i(59193);function f(y){return function(M){return 0===y?(0,p.c)():M.lift(new e(y))}}class e{constructor(T){if(this.total=T,this.total<0)throw new u.W}call(T,M){return M.subscribe(new _(T,this.total))}}class _ extends r.L{constructor(T,M){super(T),this.total=M,this.ring=new Array,this.count=0}_next(T){const M=this.ring,R=this.total,F=this.count++;M.length<R?M.push(T):M[F%R]=T}_complete(){const T=this.destination;let M=this.count;if(M>0){const R=this.count>=this.total?this.total:this.count,F=this.ring;for(let Z=0;Z<R;Z++){const J=M++%R;T.next(F[J])}}T.complete()}}},46782:(v,S,i)=>{"use strict";i.d(S,{R:()=>u});var r=i(85345);function u(e){return _=>_.lift(new p(e))}class p{constructor(_){this.notifier=_}call(_,y){const T=new f(_),M=(0,r.ft)(this.notifier,new r.IY(T));return M&&!T.seenValue?(T.add(M),y.subscribe(T)):T}}class f extends r.Ds{constructor(_){super(_),this.seenValue=!1}notifyNext(){this.seenValue=!0,this.complete()}notifyComplete(){}}},68307:(v,S,i)=>{"use strict";i.d(S,{b:()=>f});var r=i(77393),u=i(98640),p=i(69105);function f(y,T,M){return function(F){return F.lift(new e(y,T,M))}}class e{constructor(T,M,R){this.nextOrObserver=T,this.error=M,this.complete=R}call(T,M){return M.subscribe(new _(T,this.nextOrObserver,this.error,this.complete))}}class _ extends r.L{constructor(T,M,R,F){super(T),this._tapNext=u.Z,this._tapError=u.Z,this._tapComplete=u.Z,this._tapError=R||u.Z,this._tapComplete=F||u.Z,(0,p.m)(M)?(this._context=this,this._tapNext=M):M&&(this._context=M,this._tapNext=M.next||u.Z,this._tapError=M.error||u.Z,this._tapComplete=M.complete||u.Z)}_next(T){try{this._tapNext.call(this._context,T)}catch(M){return void this.destination.error(M)}this.destination.next(T)}_error(T){try{this._tapError.call(this._context,T)}catch(M){return void this.destination.error(M)}this.destination.error(T)}_complete(){try{this._tapComplete.call(this._context)}catch(T){return void this.destination.error(T)}return this.destination.complete()}}},44635:(v,S,i)=>{"use strict";i.d(S,{T:()=>p});var r=i(13410),u=i(77393);function p(y=_){return T=>T.lift(new f(y))}class f{constructor(T){this.errorFactory=T}call(T,M){return M.subscribe(new e(T,this.errorFactory))}}class e extends u.L{constructor(T,M){super(T),this.errorFactory=M,this.hasValue=!1}_next(T){this.hasValue=!0,this.destination.next(T)}_complete(){if(this.hasValue)return this.destination.complete();{let T;try{T=this.errorFactory()}catch(M){T=M}this.destination.error(T)}}}function _(){return new r.K}},94087:(v,S,i)=>{"use strict";i.d(S,{r:()=>p});var r=i(18891),u=i(75319);function p(f,e){return new r.y(_=>{const y=new u.w;let T=0;return y.add(e.schedule(function(){T!==f.length?(_.next(f[T++]),_.closed||y.add(this.schedule())):_.complete()})),y})}},36465:(v,S,i)=>{"use strict";i.d(S,{o:()=>p});var r=i(75319);class u extends r.w{constructor(e,_){super()}schedule(e,_=0){return this}}class p extends u{constructor(e,_){super(e,_),this.scheduler=e,this.work=_,this.pending=!1}schedule(e,_=0){if(this.closed)return this;this.state=e;const y=this.id,T=this.scheduler;return null!=y&&(this.id=this.recycleAsyncId(T,y,_)),this.pending=!0,this.delay=_,this.id=this.id||this.requestAsyncId(T,this.id,_),this}requestAsyncId(e,_,y=0){return setInterval(e.flush.bind(e,this),y)}recycleAsyncId(e,_,y=0){if(null!==y&&this.delay===y&&!1===this.pending)return _;clearInterval(_)}execute(e,_){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const y=this._execute(e,_);if(y)return y;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(e,_){let T,y=!1;try{this.work(e)}catch(M){y=!0,T=!!M&&M||new Error(M)}if(y)return this.unsubscribe(),T}_unsubscribe(){const e=this.id,_=this.scheduler,y=_.actions,T=y.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==T&&y.splice(T,1),null!=e&&(this.id=this.recycleAsyncId(_,e,null)),this.delay=null}}},16102:(v,S,i)=>{"use strict";i.d(S,{v:()=>u});let r=(()=>{class p{constructor(e,_=p.now){this.SchedulerAction=e,this.now=_}schedule(e,_=0,y){return new this.SchedulerAction(this,e).schedule(y,_)}}return p.now=()=>Date.now(),p})();class u extends r{constructor(f,e=r.now){super(f,()=>u.delegate&&u.delegate!==this?u.delegate.now():e()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(f,e=0,_){return u.delegate&&u.delegate!==this?u.delegate.schedule(f,e,_):super.schedule(f,e,_)}flush(f){const{actions:e}=this;if(this.active)return void e.push(f);let _;this.active=!0;do{if(_=f.execute(f.state,f.delay))break}while(f=e.shift());if(this.active=!1,_){for(;f=e.shift();)f.unsubscribe();throw _}}}},33637:(v,S,i)=>{"use strict";i.d(S,{z:()=>p,P:()=>f});var r=i(36465);const p=new(i(16102).v)(r.o),f=p},20377:(v,S,i)=>{"use strict";i.d(S,{hZ:()=>u});const u="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"},16554:(v,S,i)=>{"use strict";i.d(S,{L:()=>r});const r="function"==typeof Symbol&&Symbol.observable||"@@observable"},29181:(v,S,i)=>{"use strict";i.d(S,{b:()=>r});const r="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()},7108:(v,S,i)=>{"use strict";i.d(S,{W:()=>u});const u=(()=>{function p(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return p.prototype=Object.create(Error.prototype),p})()},13410:(v,S,i)=>{"use strict";i.d(S,{K:()=>u});const u=(()=>{function p(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return p.prototype=Object.create(Error.prototype),p})()},77971:(v,S,i)=>{"use strict";i.d(S,{N:()=>u});const u=(()=>{function p(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return p.prototype=Object.create(Error.prototype),p})()},54449:(v,S,i)=>{"use strict";function r(u){setTimeout(()=>{throw u},0)}i.d(S,{z:()=>r})},54487:(v,S,i)=>{"use strict";function r(u){return u}i.d(S,{y:()=>r})},59796:(v,S,i)=>{"use strict";i.d(S,{k:()=>r});const r=Array.isArray||(u=>u&&"number"==typeof u.length)},69489:(v,S,i)=>{"use strict";i.d(S,{z:()=>r});const r=u=>u&&"number"==typeof u.length&&"function"!=typeof u},69105:(v,S,i)=>{"use strict";function r(u){return"function"==typeof u}i.d(S,{m:()=>r})},26561:(v,S,i)=>{"use strict";i.d(S,{k:()=>u});var r=i(59796);function u(p){return!(0,r.k)(p)&&p-parseFloat(p)+1>=0}},81555:(v,S,i)=>{"use strict";function r(u){return null!==u&&"object"==typeof u}i.d(S,{K:()=>r})},44072:(v,S,i)=>{"use strict";function r(u){return!!u&&"function"!=typeof u.subscribe&&"function"==typeof u.then}i.d(S,{t:()=>r})},54869:(v,S,i)=>{"use strict";function r(u){return u&&"function"==typeof u.schedule}i.d(S,{K:()=>r})},98640:(v,S,i)=>{"use strict";function r(){}i.d(S,{Z:()=>r})},34022:(v,S,i)=>{"use strict";i.d(S,{z:()=>u,U:()=>p});var r=i(54487);function u(...f){return p(f)}function p(f){return 0===f.length?r.y:1===f.length?f[0]:function(_){return f.reduce((y,T)=>T(y),_)}}},87444:(v,S,i)=>{"use strict";i.d(S,{s:()=>F});var r=i(55015),u=i(54449),f=i(20377),_=i(16554),T=i(69489),M=i(44072),R=i(81555);const F=Z=>{if(Z&&"function"==typeof Z[_.L])return(Z=>J=>{const Q=Z[_.L]();if("function"!=typeof Q.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return Q.subscribe(J)})(Z);if((0,T.z)(Z))return(0,r.V)(Z);if((0,M.t)(Z))return(Z=>J=>(Z.then(Q=>{J.closed||(J.next(Q),J.complete())},Q=>J.error(Q)).then(null,u.z),J))(Z);if(Z&&"function"==typeof Z[f.hZ])return(Z=>J=>{const Q=Z[f.hZ]();for(;;){let ee;try{ee=Q.next()}catch(ue){return J.error(ue),J}if(ee.done){J.complete();break}if(J.next(ee.value),J.closed)break}return"function"==typeof Q.return&&J.add(()=>{Q.return&&Q.return()}),J})(Z);{const Q=`You provided ${(0,R.K)(Z)?"an invalid object":`'${Z}'`} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`;throw new TypeError(Q)}}},55015:(v,S,i)=>{"use strict";i.d(S,{V:()=>r});const r=u=>p=>{for(let f=0,e=u.length;f<e&&!p.closed;f++)p.next(u[f]);p.complete()}},20509:(v,S,i)=>{"use strict";i.d(S,{D:()=>e});var r=i(77393);class u extends r.L{constructor(y,T,M){super(),this.parent=y,this.outerValue=T,this.outerIndex=M,this.index=0}_next(y){this.parent.notifyNext(this.outerValue,y,this.outerIndex,this.index++,this)}_error(y){this.parent.notifyError(y,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}var p=i(87444),f=i(18891);function e(_,y,T,M,R=new u(_,T,M)){if(!R.closed)return y instanceof f.y?y.subscribe(R):(0,p.s)(y)(R)}},59771:(v,S)=>{"use strict";var i,r,u,p;if("object"==typeof performance&&"function"==typeof performance.now){var f=performance;S.unstable_now=function(){return f.now()}}else{var e=Date,_=e.now();S.unstable_now=function(){return e.now()-_}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var y=null,T=null,M=function(){if(null!==y)try{var $t=S.unstable_now();y(!0,$t),y=null}catch(Gt){throw setTimeout(M,0),Gt}};i=function($t){null!==y?setTimeout(i,0,$t):(y=$t,setTimeout(M,0))},r=function($t,Gt){T=setTimeout($t,Gt)},u=function(){clearTimeout(T)},S.unstable_shouldYield=function(){return!1},p=S.unstable_forceFrameRate=function(){}}else{var R=window.setTimeout,F=window.clearTimeout;if("undefined"!=typeof console){var Z=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof Z&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var J=!1,Q=null,ee=-1,ue=5,ae=0;S.unstable_shouldYield=function(){return S.unstable_now()>=ae},p=function(){},S.unstable_forceFrameRate=function($t){0>$t||125<$t?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):ue=0<$t?Math.floor(1e3/$t):5};var $=new MessageChannel,se=$.port2;$.port1.onmessage=function(){if(null!==Q){var $t=S.unstable_now();ae=$t+ue;try{Q(!0,$t)?se.postMessage(null):(J=!1,Q=null)}catch(Gt){throw se.postMessage(null),Gt}}else J=!1},i=function($t){Q=$t,J||(J=!0,se.postMessage(null))},r=function($t,Gt){ee=R(function(){$t(S.unstable_now())},Gt)},u=function(){F(ee),ee=-1}}function ve($t,Gt){var Ut=$t.length;$t.push(Gt);e:for(;;){var Bt=Ut-1>>>1,mt=$t[Bt];if(!(void 0!==mt&&0<me(mt,Gt)))break e;$t[Bt]=Gt,$t[Ut]=mt,Ut=Bt}}function oe($t){return void 0===($t=$t[0])?null:$t}function he($t){var Gt=$t[0];if(void 0!==Gt){var Ut=$t.pop();if(Ut!==Gt){$t[0]=Ut;e:for(var Bt=0,mt=$t.length;Bt<mt;){var Yt=2*(Bt+1)-1,Dt=$t[Yt],zt=Yt+1,Yn=$t[zt];if(void 0!==Dt&&0>me(Dt,Ut))void 0!==Yn&&0>me(Yn,Dt)?($t[Bt]=Yn,$t[zt]=Ut,Bt=zt):($t[Bt]=Dt,$t[Yt]=Ut,Bt=Yt);else{if(!(void 0!==Yn&&0>me(Yn,Ut)))break e;$t[Bt]=Yn,$t[zt]=Ut,Bt=zt}}}return Gt}return null}function me($t,Gt){var Ut=$t.sortIndex-Gt.sortIndex;return 0!==Ut?Ut:$t.id-Gt.id}var Oe=[],ce=[],dt=1,ze=null,Ye=3,je=!1,Ie=!1,Ve=!1;function He($t){for(var Gt=oe(ce);null!==Gt;){if(null===Gt.callback)he(ce);else{if(!(Gt.startTime<=$t))break;he(ce),Gt.sortIndex=Gt.expirationTime,ve(Oe,Gt)}Gt=oe(ce)}}function Zt($t){if(Ve=!1,He($t),!Ie)if(null!==oe(Oe))Ie=!0,i(st);else{var Gt=oe(ce);null!==Gt&&r(Zt,Gt.startTime-$t)}}function st($t,Gt){Ie=!1,Ve&&(Ve=!1,u()),je=!0;var Ut=Ye;try{for(He(Gt),ze=oe(Oe);null!==ze&&(!(ze.expirationTime>Gt)||$t&&!S.unstable_shouldYield());){var Bt=ze.callback;if("function"==typeof Bt){ze.callback=null,Ye=ze.priorityLevel;var mt=Bt(ze.expirationTime<=Gt);Gt=S.unstable_now(),"function"==typeof mt?ze.callback=mt:ze===oe(Oe)&&he(Oe),He(Gt)}else he(Oe);ze=oe(Oe)}if(null!==ze)var Yt=!0;else{var Dt=oe(ce);null!==Dt&&r(Zt,Dt.startTime-Gt),Yt=!1}return Yt}finally{ze=null,Ye=Ut,je=!1}}var en=p;S.unstable_IdlePriority=5,S.unstable_ImmediatePriority=1,S.unstable_LowPriority=4,S.unstable_NormalPriority=3,S.unstable_Profiling=null,S.unstable_UserBlockingPriority=2,S.unstable_cancelCallback=function($t){$t.callback=null},S.unstable_continueExecution=function(){Ie||je||(Ie=!0,i(st))},S.unstable_getCurrentPriorityLevel=function(){return Ye},S.unstable_getFirstCallbackNode=function(){return oe(Oe)},S.unstable_next=function($t){switch(Ye){case 1:case 2:case 3:var Gt=3;break;default:Gt=Ye}var Ut=Ye;Ye=Gt;try{return $t()}finally{Ye=Ut}},S.unstable_pauseExecution=function(){},S.unstable_requestPaint=en,S.unstable_runWithPriority=function($t,Gt){switch($t){case 1:case 2:case 3:case 4:case 5:break;default:$t=3}var Ut=Ye;Ye=$t;try{return Gt()}finally{Ye=Ut}},S.unstable_scheduleCallback=function($t,Gt,Ut){var Bt=S.unstable_now();switch(Ut="object"==typeof Ut&&null!==Ut&&"number"==typeof(Ut=Ut.delay)&&0<Ut?Bt+Ut:Bt,$t){case 1:var mt=-1;break;case 2:mt=250;break;case 5:mt=1073741823;break;case 4:mt=1e4;break;default:mt=5e3}return $t={id:dt++,callback:Gt,priorityLevel:$t,startTime:Ut,expirationTime:mt=Ut+mt,sortIndex:-1},Ut>Bt?($t.sortIndex=Ut,ve(ce,$t),null===oe(Oe)&&$t===oe(ce)&&(Ve?u():Ve=!0,r(Zt,Ut-Bt))):($t.sortIndex=mt,ve(Oe,$t),Ie||je||(Ie=!0,i(st))),$t},S.unstable_wrapCallback=function($t){var Gt=Ye;return function(){var Ut=Ye;Ye=Gt;try{return $t.apply(this,arguments)}finally{Ye=Ut}}}},88712:(v,S,i)=>{"use strict";v.exports=i(59771)},4043:v=>{"use strict";class S extends Error{constructor(y){super(S._prepareSuperMessage(y)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,S)}static _prepareSuperMessage(y){try{return JSON.stringify(y)}catch(T){return String(y)}}}const i=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],r=Symbol(".toJSON called"),p=({from:_,seen:y,to_:T,forceEnumerable:M,maxDepth:R,depth:F})=>{const Z=T||(Array.isArray(_)?[]:{});if(y.push(_),F>=R)return Z;if("function"==typeof _.toJSON&&!0!==_[r])return(_=>{_[r]=!0;const y=_.toJSON();return delete _[r],y})(_);for(const[J,Q]of Object.entries(_))if("function"==typeof Buffer&&Buffer.isBuffer(Q))Z[J]="[object Buffer]";else if("function"!=typeof Q){if(!Q||"object"!=typeof Q){Z[J]=Q;continue}if(!y.includes(_[J])){F++,Z[J]=p({from:_[J],seen:y.slice(),forceEnumerable:M,maxDepth:R,depth:F});continue}Z[J]="[Circular]"}for(const{property:J,enumerable:Q}of i)"string"==typeof _[J]&&Object.defineProperty(Z,J,{value:_[J],enumerable:!!M||Q,configurable:!0,writable:!0});return Z};v.exports={serializeError:(_,y={})=>{const{maxDepth:T=Number.POSITIVE_INFINITY}=y;return"object"==typeof _&&null!==_?p({from:_,seen:[],forceEnumerable:!0,maxDepth:T,depth:0}):"function"==typeof _?`[Function: ${_.name||"anonymous"}]`:_},deserializeError:(_,y={})=>{const{maxDepth:T=Number.POSITIVE_INFINITY}=y;if(_ instanceof Error)return _;if("object"==typeof _&&null!==_&&!Array.isArray(_)){const M=new Error;return p({from:_,seen:[],to_:M,maxDepth:T,depth:0}),M}return new S(_)}}},11144:(v,S,i)=>{"use strict";var r=i(18540),u=i(19568),p=i(81380),f=r("%TypeError%"),e=r("%WeakMap%",!0),_=r("%Map%",!0),y=u("WeakMap.prototype.get",!0),T=u("WeakMap.prototype.set",!0),M=u("WeakMap.prototype.has",!0),R=u("Map.prototype.get",!0),F=u("Map.prototype.set",!0),Z=u("Map.prototype.has",!0),J=function(ae,$){for(var ve,se=ae;null!==(ve=se.next);se=ve)if(ve.key===$)return se.next=ve.next,ve.next=ae.next,ae.next=ve,ve};v.exports=function(){var $,se,ve,oe={assert:function(he){if(!oe.has(he))throw new f("Side channel does not contain "+p(he))},get:function(he){if(e&&he&&("object"==typeof he||"function"==typeof he)){if($)return y($,he)}else if(_){if(se)return R(se,he)}else if(ve)return function(ae,$){var se=J(ae,$);return se&&se.value}(ve,he)},has:function(he){if(e&&he&&("object"==typeof he||"function"==typeof he)){if($)return M($,he)}else if(_){if(se)return Z(se,he)}else if(ve)return function(ae,$){return!!J(ae,$)}(ve,he);return!1},set:function(he,me){e&&he&&("object"==typeof he||"function"==typeof he)?($||($=new e),T($,he,me)):_?(se||(se=new _),F(se,he,me)):(ve||(ve={key:{},next:null}),function(ae,$,se){var ve=J(ae,$);ve?ve.value=se:ae.next={key:$,next:ae.next,value:se}}(ve,he,me))}};return oe}},34863:(v,S,i)=>{"use strict";i.d(S,{M:()=>Dr,t:()=>jt}),i(21581),i(8868),i(85443),i(35704),i(66837),i(13744),i(63438),i(22603);var zt,M=i(6123),R=i.n(M),F=i(86906),Z=i.n(F),J=i(66941),Q=i.n(J),ee=[],$="ResizeObserver loop completed with undelivered notifications.",ve=(()=>{return(xt=ve||(ve={})).BORDER_BOX="border-box",xt.CONTENT_BOX="content-box",xt.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box",ve;var xt})(),oe=function(xt){return Object.freeze(xt)},he=function(mn,Wn){this.inlineSize=mn,this.blockSize=Wn,oe(this)},me=function(){function xt(mn,Wn,kn,wn){return this.x=mn,this.y=Wn,this.width=kn,this.height=wn,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,oe(this)}return xt.prototype.toJSON=function(){var mn=this;return{x:mn.x,y:mn.y,top:mn.top,right:mn.right,bottom:mn.bottom,left:mn.left,width:mn.width,height:mn.height}},xt.fromRect=function(mn){return new xt(mn.x,mn.y,mn.width,mn.height)},xt}(),Oe=function(xt){return xt instanceof SVGElement&&"getBBox"in xt},ce=function(xt){if(Oe(xt)){var mn=xt.getBBox();return!mn.width&&!mn.height}return!(xt.offsetWidth||xt.offsetHeight||xt.getClientRects().length)},dt=function(xt){var mn;if(xt instanceof Element)return!0;var Wn=null===(mn=null==xt?void 0:xt.ownerDocument)||void 0===mn?void 0:mn.defaultView;return!!(Wn&&xt instanceof Wn.Element)},Ye="undefined"!=typeof window?window:{},je=new WeakMap,Ie=/auto|scroll/,Ve=/^tb|vertical/,He=/msie|trident/i.test(Ye.navigator&&Ye.navigator.userAgent),Zt=function(xt){return parseFloat(xt||"0")},st=function(xt,mn,Wn){return void 0===xt&&(xt=0),void 0===mn&&(mn=0),void 0===Wn&&(Wn=!1),new he((Wn?mn:xt)||0,(Wn?xt:mn)||0)},en=oe({devicePixelContentBoxSize:st(),borderBoxSize:st(),contentBoxSize:st(),contentRect:new me(0,0,0,0)}),$t=function(xt,mn){if(void 0===mn&&(mn=!1),je.has(xt)&&!mn)return je.get(xt);if(ce(xt))return je.set(xt,en),en;var Wn=getComputedStyle(xt),kn=Oe(xt)&&xt.ownerSVGElement&&xt.getBBox(),wn=!He&&"border-box"===Wn.boxSizing,nr=Ve.test(Wn.writingMode||""),Gi=!kn&&Ie.test(Wn.overflowY||""),po=!kn&&Ie.test(Wn.overflowX||""),yo=kn?0:Zt(Wn.paddingTop),Mo=kn?0:Zt(Wn.paddingRight),Vi=kn?0:Zt(Wn.paddingBottom),cs=kn?0:Zt(Wn.paddingLeft),zo=kn?0:Zt(Wn.borderTopWidth),So=kn?0:Zt(Wn.borderRightWidth),Si=kn?0:Zt(Wn.borderBottomWidth),Zn=cs+Mo,cr=yo+Vi,yr=(kn?0:Zt(Wn.borderLeftWidth))+So,rr=zo+Si,ri=po?xt.offsetHeight-rr-xt.clientHeight:0,ho=Gi?xt.offsetWidth-yr-xt.clientWidth:0,Ti=wn?Zn+yr:0,Bo=wn?cr+rr:0,xo=kn?kn.width:Zt(Wn.width)-Ti-ho,Li=kn?kn.height:Zt(Wn.height)-Bo-ri,ar=xo+Zn+ho+yr,ln=Li+cr+ri+rr,Ht=oe({devicePixelContentBoxSize:st(Math.round(xo*devicePixelRatio),Math.round(Li*devicePixelRatio),nr),borderBoxSize:st(ar,ln,nr),contentBoxSize:st(xo,Li,nr),contentRect:new me(cs,yo,xo,Li)});return je.set(xt,Ht),Ht},Gt=function(xt,mn,Wn){var kn=$t(xt,Wn),wn=kn.borderBoxSize,nr=kn.contentBoxSize,Gi=kn.devicePixelContentBoxSize;switch(mn){case ve.DEVICE_PIXEL_CONTENT_BOX:return Gi;case ve.BORDER_BOX:return wn;default:return nr}},Ut=function(mn){var Wn=$t(mn);this.target=mn,this.contentRect=Wn.contentRect,this.borderBoxSize=oe([Wn.borderBoxSize]),this.contentBoxSize=oe([Wn.contentBoxSize]),this.devicePixelContentBoxSize=oe([Wn.devicePixelContentBoxSize])},Bt=function(xt){if(ce(xt))return 1/0;for(var mn=0,Wn=xt.parentNode;Wn;)mn+=1,Wn=Wn.parentNode;return mn},mt=function(){var xt=1/0,mn=[];ee.forEach(function(Gi){if(0!==Gi.activeTargets.length){var po=[];Gi.activeTargets.forEach(function(Mo){var Vi=new Ut(Mo.target),cs=Bt(Mo.target);po.push(Vi),Mo.lastReportedSize=Gt(Mo.target,Mo.observedBox),cs<xt&&(xt=cs)}),mn.push(function(){Gi.callback.call(Gi.observer,po,Gi.observer)}),Gi.activeTargets.splice(0,Gi.activeTargets.length)}});for(var Wn=0,kn=mn;Wn<kn.length;Wn++)(0,kn[Wn])();return xt},Yt=function(xt){ee.forEach(function(Wn){Wn.activeTargets.splice(0,Wn.activeTargets.length),Wn.skippedTargets.splice(0,Wn.skippedTargets.length),Wn.observationTargets.forEach(function(wn){wn.isActive()&&(Bt(wn.target)>xt?Wn.activeTargets.push(wn):Wn.skippedTargets.push(wn))})})},Yn=[],wr=0,In={attributes:!0,characterData:!0,childList:!0,subtree:!0},Hn=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Zr=function(xt){return void 0===xt&&(xt=0),Date.now()+xt},Ur=!1,$i=new(function(){function xt(){var mn=this;this.stopped=!0,this.listener=function(){return mn.schedule()}}return xt.prototype.run=function(mn){var Wn=this;if(void 0===mn&&(mn=250),!Ur){Ur=!0;var kn=Zr(mn);!function(xt){!function(xt){if(!zt){var mn=0,Wn=document.createTextNode("");new MutationObserver(function(){return Yn.splice(0).forEach(function(xt){return xt()})}).observe(Wn,{characterData:!0}),zt=function(){Wn.textContent="".concat(mn?mn--:mn++)}}Yn.push(xt),zt()}(function(){requestAnimationFrame(xt)})}(function(){var wn=!1;try{wn=function(){var xt=0;for(Yt(xt);ee.some(function(xt){return xt.activeTargets.length>0});)xt=mt(),Yt(xt);return ee.some(function(xt){return xt.skippedTargets.length>0})&&function(){var xt;"function"==typeof ErrorEvent?xt=new ErrorEvent("error",{message:$}):((xt=document.createEvent("Event")).initEvent("error",!1,!1),xt.message=$),window.dispatchEvent(xt)}(),xt>0}()}finally{if(Ur=!1,mn=kn-Zr(),!wr)return;wn?Wn.run(1e3):mn>0?Wn.run(mn):Wn.start()}})}},xt.prototype.schedule=function(){this.stop(),this.run()},xt.prototype.observe=function(){var mn=this,Wn=function(){return mn.observer&&mn.observer.observe(document.body,In)};document.body?Wn():Ye.addEventListener("DOMContentLoaded",Wn)},xt.prototype.start=function(){var mn=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Hn.forEach(function(Wn){return Ye.addEventListener(Wn,mn.listener,!0)}))},xt.prototype.stop=function(){var mn=this;this.stopped||(this.observer&&this.observer.disconnect(),Hn.forEach(function(Wn){return Ye.removeEventListener(Wn,mn.listener,!0)}),this.stopped=!0)},xt}()),Hi=function(xt){!wr&&xt>0&&$i.start(),!(wr+=xt)&&$i.stop()},On=function(){function xt(mn,Wn){this.target=mn,this.observedBox=Wn||ve.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return xt.prototype.isActive=function(){var mn=Gt(this.target,this.observedBox,!0);return function(xt){return!Oe(xt)&&!function(xt){switch(xt.tagName){case"INPUT":if("image"!==xt.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1}(xt)&&"inline"===getComputedStyle(xt).display}(this.target)&&(this.lastReportedSize=mn),this.lastReportedSize.inlineSize!==mn.inlineSize||this.lastReportedSize.blockSize!==mn.blockSize},xt}(),Wt=function(mn,Wn){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=mn,this.callback=Wn},Jn=new WeakMap,ir=function(xt,mn){for(var Wn=0;Wn<xt.length;Wn+=1)if(xt[Wn].target===mn)return Wn;return-1},Lr=function(){function xt(){}return xt.connect=function(mn,Wn){var kn=new Wt(mn,Wn);Jn.set(mn,kn)},xt.observe=function(mn,Wn,kn){var wn=Jn.get(mn),nr=0===wn.observationTargets.length;ir(wn.observationTargets,Wn)<0&&(nr&&ee.push(wn),wn.observationTargets.push(new On(Wn,kn&&kn.box)),Hi(1),$i.schedule())},xt.unobserve=function(mn,Wn){var kn=Jn.get(mn),wn=ir(kn.observationTargets,Wn);wn>=0&&(1===kn.observationTargets.length&&ee.splice(ee.indexOf(kn),1),kn.observationTargets.splice(wn,1),Hi(-1))},xt.disconnect=function(mn){var Wn=this,kn=Jn.get(mn);kn.observationTargets.slice().forEach(function(wn){return Wn.unobserve(mn,wn.target)}),kn.activeTargets.splice(0,kn.activeTargets.length)},xt}(),Vn=function(){function xt(mn){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof mn)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Lr.connect(this,mn)}return xt.prototype.observe=function(mn,Wn){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!dt(mn))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Lr.observe(this,mn,Wn)},xt.prototype.unobserve=function(mn){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!dt(mn))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Lr.unobserve(this,mn)},xt.prototype.disconnect=function(){Lr.disconnect(this)},xt.toString=function(){return"function ResizeObserver () { [polyfill code] }"},xt}(),zr=i(72318),hi=i.n(zr);function mr(xt){return xt&&xt.ownerDocument&&xt.ownerDocument.defaultView?xt.ownerDocument.defaultView:window}function Xt(xt){return xt&&xt.ownerDocument?xt.ownerDocument:document}i(35319),i(69665),i(26954),i(80477),i(66262);var zn=null,vr=null;function si(xt){if(null===zn){var mn=Xt(xt);if(void 0===mn)return zn=0;var Wn=mn.body,kn=mn.createElement("div");kn.classList.add("simplebar-hide-scrollbar"),Wn.appendChild(kn);var wn=kn.getBoundingClientRect().right;Wn.removeChild(kn),zn=wn}return zn}hi()&&window.addEventListener("resize",function(){vr!==window.devicePixelRatio&&(vr=window.devicePixelRatio,zn=null)});var Ii=function(){function xt(Wn,kn){var wn=this;this.onScroll=function(){var nr=mr(wn.el);wn.scrollXTicking||(nr.requestAnimationFrame(wn.scrollX),wn.scrollXTicking=!0),wn.scrollYTicking||(nr.requestAnimationFrame(wn.scrollY),wn.scrollYTicking=!0)},this.scrollX=function(){wn.axis.x.isOverflowing&&(wn.showScrollbar("x"),wn.positionScrollbar("x")),wn.scrollXTicking=!1},this.scrollY=function(){wn.axis.y.isOverflowing&&(wn.showScrollbar("y"),wn.positionScrollbar("y")),wn.scrollYTicking=!1},this.onMouseEnter=function(){wn.showScrollbar("x"),wn.showScrollbar("y")},this.onMouseMove=function(nr){wn.mouseX=nr.clientX,wn.mouseY=nr.clientY,(wn.axis.x.isOverflowing||wn.axis.x.forceVisible)&&wn.onMouseMoveForAxis("x"),(wn.axis.y.isOverflowing||wn.axis.y.forceVisible)&&wn.onMouseMoveForAxis("y")},this.onMouseLeave=function(){wn.onMouseMove.cancel(),(wn.axis.x.isOverflowing||wn.axis.x.forceVisible)&&wn.onMouseLeaveForAxis("x"),(wn.axis.y.isOverflowing||wn.axis.y.forceVisible)&&wn.onMouseLeaveForAxis("y"),wn.mouseX=-1,wn.mouseY=-1},this.onWindowResize=function(){wn.scrollbarWidth=wn.getScrollbarWidth(),wn.hideNativeScrollbar()},this.hideScrollbars=function(){wn.axis.x.track.rect=wn.axis.x.track.el.getBoundingClientRect(),wn.axis.y.track.rect=wn.axis.y.track.el.getBoundingClientRect(),wn.isWithinBounds(wn.axis.y.track.rect)||(wn.axis.y.scrollbar.el.classList.remove(wn.classNames.visible),wn.axis.y.isVisible=!1),wn.isWithinBounds(wn.axis.x.track.rect)||(wn.axis.x.scrollbar.el.classList.remove(wn.classNames.visible),wn.axis.x.isVisible=!1)},this.onPointerEvent=function(nr){var Gi,po;wn.axis.x.track.rect=wn.axis.x.track.el.getBoundingClientRect(),wn.axis.y.track.rect=wn.axis.y.track.el.getBoundingClientRect(),(wn.axis.x.isOverflowing||wn.axis.x.forceVisible)&&(Gi=wn.isWithinBounds(wn.axis.x.track.rect)),(wn.axis.y.isOverflowing||wn.axis.y.forceVisible)&&(po=wn.isWithinBounds(wn.axis.y.track.rect)),(Gi||po)&&(nr.preventDefault(),nr.stopPropagation(),"mousedown"===nr.type&&(Gi&&(wn.axis.x.scrollbar.rect=wn.axis.x.scrollbar.el.getBoundingClientRect(),wn.isWithinBounds(wn.axis.x.scrollbar.rect)?wn.onDragStart(nr,"x"):wn.onTrackClick(nr,"x")),po&&(wn.axis.y.scrollbar.rect=wn.axis.y.scrollbar.el.getBoundingClientRect(),wn.isWithinBounds(wn.axis.y.scrollbar.rect)?wn.onDragStart(nr,"y"):wn.onTrackClick(nr,"y"))))},this.drag=function(nr){var po=wn.axis[wn.draggedAxis].track,yo=po.rect[wn.axis[wn.draggedAxis].sizeAttr],Mo=wn.axis[wn.draggedAxis].scrollbar,Vi=wn.contentWrapperEl[wn.axis[wn.draggedAxis].scrollSizeAttr],cs=parseInt(wn.elStyles[wn.axis[wn.draggedAxis].sizeAttr],10);nr.preventDefault(),nr.stopPropagation();var Si=(("y"===wn.draggedAxis?nr.pageY:nr.pageX)-po.rect[wn.axis[wn.draggedAxis].offsetAttr]-wn.axis[wn.draggedAxis].dragOffset)/(yo-Mo.size)*(Vi-cs);"x"===wn.draggedAxis&&(Si=wn.isRtl&&xt.getRtlHelpers().isRtlScrollbarInverted?Si-(yo+Mo.size):Si,Si=wn.isRtl&&xt.getRtlHelpers().isRtlScrollingInverted?-Si:Si),wn.contentWrapperEl[wn.axis[wn.draggedAxis].scrollOffsetAttr]=Si},this.onEndDrag=function(nr){var Gi=Xt(wn.el),po=mr(wn.el);nr.preventDefault(),nr.stopPropagation(),wn.el.classList.remove(wn.classNames.dragging),Gi.removeEventListener("mousemove",wn.drag,!0),Gi.removeEventListener("mouseup",wn.onEndDrag,!0),wn.removePreventClickId=po.setTimeout(function(){Gi.removeEventListener("click",wn.preventClick,!0),Gi.removeEventListener("dblclick",wn.preventClick,!0),wn.removePreventClickId=null})},this.preventClick=function(nr){nr.preventDefault(),nr.stopPropagation()},this.el=Wn,this.minScrollbarWidth=20,this.options=Object.assign({},xt.defaultOptions,kn),this.classNames=Object.assign({},xt.defaultOptions.classNames,this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!xt.instances.has(this.el)&&(this.recalculate=R()(this.recalculate.bind(this),64),this.onMouseMove=R()(this.onMouseMove.bind(this),64),this.hideScrollbars=Z()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=Z()(this.onWindowResize.bind(this),64,{leading:!0}),xt.getRtlHelpers=Q()(xt.getRtlHelpers),this.init())}xt.getRtlHelpers=function(){var kn=document.createElement("div");kn.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var wn=kn.firstElementChild;document.body.appendChild(wn);var nr=wn.firstElementChild;wn.scrollLeft=0;var Gi=xt.getOffset(wn),po=xt.getOffset(nr);wn.scrollLeft=999;var yo=xt.getOffset(nr);return{isRtlScrollingInverted:Gi.left!==po.left&&po.left-yo.left!=0,isRtlScrollbarInverted:Gi.left!==po.left}},xt.getOffset=function(kn){var wn=kn.getBoundingClientRect(),nr=Xt(kn),Gi=mr(kn);return{top:wn.top+(Gi.pageYOffset||nr.documentElement.scrollTop),left:wn.left+(Gi.pageXOffset||nr.documentElement.scrollLeft)}};var mn=xt.prototype;return mn.init=function(){xt.instances.set(this.el,this),hi()&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},mn.initDOM=function(){var kn=this;if(Array.prototype.filter.call(this.el.children,function(Gi){return Gi.classList.contains(kn.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var wn=document.createElement("div"),nr=document.createElement("div");wn.classList.add(this.classNames.track),nr.classList.add(this.classNames.scrollbar),wn.appendChild(nr),this.axis.x.track.el=wn.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=wn.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},mn.setAccessibilityAttributes=function(){var kn=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",kn)},mn.initListeners=function(){var kn=this,wn=mr(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(po){kn.el.addEventListener(po,kn.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(po){kn.el.addEventListener(po,kn.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),wn.addEventListener("resize",this.onWindowResize);var nr=!1;this.resizeObserver=new(wn.ResizeObserver||Vn)(function(){!nr||kn.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),wn.requestAnimationFrame(function(){nr=!0}),this.mutationObserver=new wn.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},mn.recalculate=function(){var kn=mr(this.el);this.elStyles=kn.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var wn=this.heightAutoObserverEl.offsetHeight<=1,nr=this.heightAutoObserverEl.offsetWidth<=1,Gi=this.contentEl.offsetWidth,po=this.contentWrapperEl.offsetWidth,yo=this.elStyles.overflowX,Mo=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var Vi=this.contentEl.scrollHeight,cs=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=wn?"auto":"100%",this.placeholderEl.style.width=nr?Gi+"px":"auto",this.placeholderEl.style.height=Vi+"px";var zo=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=cs>Gi,this.axis.y.isOverflowing=Vi>zo,this.axis.x.isOverflowing="hidden"!==yo&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==Mo&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var So=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&cs>po-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&Vi>zo-So,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},mn.getScrollbarSize=function(kn){if(void 0===kn&&(kn="y"),!this.axis[kn].isOverflowing)return 0;var Gi,nr=this.axis[kn].track.el[this.axis[kn].offsetSizeAttr];return Gi=Math.max(~~(nr/this.contentEl[this.axis[kn].scrollSizeAttr]*nr),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(Gi=Math.min(Gi,this.options.scrollbarMaxSize)),Gi},mn.positionScrollbar=function(kn){if(void 0===kn&&(kn="y"),this.axis[kn].isOverflowing){var wn=this.contentWrapperEl[this.axis[kn].scrollSizeAttr],nr=this.axis[kn].track.el[this.axis[kn].offsetSizeAttr],Gi=parseInt(this.elStyles[this.axis[kn].sizeAttr],10),po=this.axis[kn].scrollbar,yo=this.contentWrapperEl[this.axis[kn].scrollOffsetAttr],Vi=~~((yo="x"===kn&&this.isRtl&&xt.getRtlHelpers().isRtlScrollingInverted?-yo:yo)/(wn-Gi)*(nr-po.size));Vi="x"===kn&&this.isRtl&&xt.getRtlHelpers().isRtlScrollbarInverted?Vi+(nr-po.size):Vi,po.el.style.transform="x"===kn?"translate3d("+Vi+"px, 0, 0)":"translate3d(0, "+Vi+"px, 0)"}},mn.toggleTrackVisibility=function(kn){void 0===kn&&(kn="y");var wn=this.axis[kn].track.el,nr=this.axis[kn].scrollbar.el;this.axis[kn].isOverflowing||this.axis[kn].forceVisible?(wn.style.visibility="visible",this.contentWrapperEl.style[this.axis[kn].overflowAttr]="scroll"):(wn.style.visibility="hidden",this.contentWrapperEl.style[this.axis[kn].overflowAttr]="hidden"),nr.style.display=this.axis[kn].isOverflowing?"block":"none"},mn.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},mn.onMouseMoveForAxis=function(kn){void 0===kn&&(kn="y"),this.axis[kn].track.rect=this.axis[kn].track.el.getBoundingClientRect(),this.axis[kn].scrollbar.rect=this.axis[kn].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[kn].scrollbar.rect)?this.axis[kn].scrollbar.el.classList.add(this.classNames.hover):this.axis[kn].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[kn].track.rect)?(this.showScrollbar(kn),this.axis[kn].track.el.classList.add(this.classNames.hover)):this.axis[kn].track.el.classList.remove(this.classNames.hover)},mn.onMouseLeaveForAxis=function(kn){void 0===kn&&(kn="y"),this.axis[kn].track.el.classList.remove(this.classNames.hover),this.axis[kn].scrollbar.el.classList.remove(this.classNames.hover)},mn.showScrollbar=function(kn){void 0===kn&&(kn="y"),this.axis[kn].isVisible||(this.axis[kn].scrollbar.el.classList.add(this.classNames.visible),this.axis[kn].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},mn.onDragStart=function(kn,wn){void 0===wn&&(wn="y");var nr=Xt(this.el),Gi=mr(this.el);this.axis[wn].dragOffset=("y"===wn?kn.pageY:kn.pageX)-this.axis[wn].scrollbar.rect[this.axis[wn].offsetAttr],this.draggedAxis=wn,this.el.classList.add(this.classNames.dragging),nr.addEventListener("mousemove",this.drag,!0),nr.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(nr.addEventListener("click",this.preventClick,!0),nr.addEventListener("dblclick",this.preventClick,!0)):(Gi.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},mn.onTrackClick=function(kn,wn){var nr=this;if(void 0===wn&&(wn="y"),this.options.clickOnTrack){var Gi=mr(this.el);this.axis[wn].scrollbar.rect=this.axis[wn].scrollbar.el.getBoundingClientRect();var yo=this.axis[wn].scrollbar.rect[this.axis[wn].offsetAttr],Mo=parseInt(this.elStyles[this.axis[wn].sizeAttr],10),Vi=this.contentWrapperEl[this.axis[wn].scrollOffsetAttr],zo=("y"===wn?this.mouseY-yo:this.mouseX-yo)<0?-1:1,So=-1===zo?Vi-Mo:Vi+Mo;!function ai(){var Zn;if(-1===zo)Vi>So&&(nr.contentWrapperEl.scrollTo(((Zn={})[nr.axis[wn].offsetAttr]=Vi-=nr.options.clickOnTrackSpeed,Zn)),Gi.requestAnimationFrame(ai));else if(Vi<So){var cr;nr.contentWrapperEl.scrollTo(((cr={})[nr.axis[wn].offsetAttr]=Vi+=nr.options.clickOnTrackSpeed,cr)),Gi.requestAnimationFrame(ai)}}()}},mn.getContentElement=function(){return this.contentEl},mn.getScrollElement=function(){return this.contentWrapperEl},mn.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:si(this.el)}catch(kn){return si(this.el)}},mn.removeListeners=function(){var kn=this,wn=mr(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(nr){kn.el.removeEventListener(nr,kn.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(nr){kn.el.removeEventListener(nr,kn.onPointerEvent,{capture:!0,passive:!0})}),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),wn.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},mn.unMount=function(){this.removeListeners(),xt.instances.delete(this.el)},mn.isWithinBounds=function(kn){return this.mouseX>=kn.left&&this.mouseX<=kn.left+kn.width&&this.mouseY>=kn.top&&this.mouseY<=kn.top+kn.height},mn.findChild=function(kn,wn){var nr=kn.matches||kn.webkitMatchesSelector||kn.mozMatchesSelector||kn.msMatchesSelector;return Array.prototype.filter.call(kn.children,function(Gi){return nr.call(Gi,wn)})[0]},xt}();Ii.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},Ii.instances=new WeakMap;const no=Ii;var so=i(74788);const Ze=["*"];let Dr=(()=>{class xt{constructor(Wn){this.elRef=Wn}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new no(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}return xt.\u0275fac=function(Wn){return new(Wn||xt)(so.Y36(so.SBq))},xt.\u0275cmp=so.Xpm({type:xt,selectors:[["ngx-simplebar"]],hostAttrs:["data-simplebar","init"],inputs:{options:"options"},ngContentSelectors:Ze,decls:13,vars:0,consts:[[1,"simplebar-wrapper"],[1,"simplebar-height-auto-observer-wrapper"],[1,"simplebar-height-auto-observer"],[1,"simplebar-mask"],[1,"simplebar-offset"],[1,"simplebar-content-wrapper"],[1,"simplebar-content"],[1,"simplebar-placeholder"],[1,"simplebar-track","simplebar-horizontal"],[1,"simplebar-scrollbar"],[1,"simplebar-track","simplebar-vertical"]],template:function(Wn,kn){1&Wn&&(so.F$t(),so.TgZ(0,"div",0),so.TgZ(1,"div",1),so._UZ(2,"div",2),so.qZA(),so.TgZ(3,"div",3),so.TgZ(4,"div",4),so.TgZ(5,"div",5),so.TgZ(6,"div",6),so.Hsn(7),so.qZA(),so.qZA(),so.qZA(),so.qZA(),so._UZ(8,"div",7),so.qZA(),so.TgZ(9,"div",8),so._UZ(10,"div",9),so.qZA(),so.TgZ(11,"div",10),so._UZ(12,"div",9),so.qZA())},styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],encapsulation:2}),xt})(),jt=(()=>{class xt{}return xt.\u0275fac=function(Wn){return new(Wn||xt)},xt.\u0275mod=so.oAB({type:xt}),xt.\u0275inj=so.cJS({imports:[[]]}),xt})()},35311:v=>{v.exports=function(){var S=document.getSelection();if(!S.rangeCount)return function(){};for(var i=document.activeElement,r=[],u=0;u<S.rangeCount;u++)r.push(S.getRangeAt(u));switch(i.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":i.blur();break;default:i=null}return S.removeAllRanges(),function(){"Caret"===S.type&&S.removeAllRanges(),S.rangeCount||r.forEach(function(p){S.addRange(p)}),i&&i.focus()}}},18807:v=>{var S=v.exports=function(Q){return new i(Q)};function i(Q){this.value=Q}function r(Q,ee,ue){var ae=[],$=[],se=!0;return function ve(oe){var he=ue?u(oe):oe,me={},Oe=!0,ce={node:he,node_:oe,path:[].concat(ae),parent:$[$.length-1],parents:$,key:ae.slice(-1)[0],isRoot:0===ae.length,level:ae.length,circular:null,update:function(Ye,je){ce.isRoot||(ce.parent.node[ce.key]=Ye),ce.node=Ye,je&&(Oe=!1)},delete:function(Ye){delete ce.parent.node[ce.key],Ye&&(Oe=!1)},remove:function(Ye){F(ce.parent.node)?ce.parent.node.splice(ce.key,1):delete ce.parent.node[ce.key],Ye&&(Oe=!1)},keys:null,before:function(Ye){me.before=Ye},after:function(Ye){me.after=Ye},pre:function(Ye){me.pre=Ye},post:function(Ye){me.post=Ye},stop:function(){se=!1},block:function(){Oe=!1}};if(!se)return ce;function dt(){if("object"==typeof ce.node&&null!==ce.node){(!ce.keys||ce.node_!==ce.node)&&(ce.keys=p(ce.node)),ce.isLeaf=0==ce.keys.length;for(var Ye=0;Ye<$.length;Ye++)if($[Ye].node_===oe){ce.circular=$[Ye];break}}else ce.isLeaf=!0,ce.keys=null;ce.notLeaf=!ce.isLeaf,ce.notRoot=!ce.isRoot}dt();var ze=ee.call(ce,ce.node);return void 0!==ze&&ce.update&&ce.update(ze),me.before&&me.before.call(ce,ce.node),Oe&&("object"==typeof ce.node&&null!==ce.node&&!ce.circular&&($.push(ce),dt(),Z(ce.keys,function(Ye,je){ae.push(Ye),me.pre&&me.pre.call(ce,ce.node[Ye],Ye);var Ie=ve(ce.node[Ye]);ue&&J.call(ce.node,Ye)&&(ce.node[Ye]=Ie.node),Ie.isLast=je==ce.keys.length-1,Ie.isFirst=0==je,me.post&&me.post.call(ce,Ie),ae.pop()}),$.pop()),me.after&&me.after.call(ce,ce.node)),ce}(Q).node}function u(Q){if("object"==typeof Q&&null!==Q){var ee;if(F(Q))ee=[];else if(function(Q){return"[object Date]"===f(Q)}(Q))ee=new Date(Q.getTime?Q.getTime():Q);else if(function(Q){return"[object RegExp]"===f(Q)}(Q))ee=new RegExp(Q);else if(function(Q){return"[object Error]"===f(Q)}(Q))ee={message:Q.message};else if(function(Q){return"[object Boolean]"===f(Q)}(Q))ee=new Boolean(Q);else if(function(Q){return"[object Number]"===f(Q)}(Q))ee=new Number(Q);else if(function(Q){return"[object String]"===f(Q)}(Q))ee=new String(Q);else if(Object.create&&Object.getPrototypeOf)ee=Object.create(Object.getPrototypeOf(Q));else if(Q.constructor===Object)ee={};else{var ae=function(){};ae.prototype=Q.constructor&&Q.constructor.prototype||Q.__proto__||{},ee=new ae}return Z(p(Q),function($){ee[$]=Q[$]}),ee}return Q}i.prototype.get=function(Q){for(var ee=this.value,ue=0;ue<Q.length;ue++){var ae=Q[ue];if(!ee||!J.call(ee,ae)){ee=void 0;break}ee=ee[ae]}return ee},i.prototype.has=function(Q){for(var ee=this.value,ue=0;ue<Q.length;ue++){var ae=Q[ue];if(!ee||!J.call(ee,ae))return!1;ee=ee[ae]}return!0},i.prototype.set=function(Q,ee){for(var ue=this.value,ae=0;ae<Q.length-1;ae++){var $=Q[ae];J.call(ue,$)||(ue[$]={}),ue=ue[$]}return ue[Q[ae]]=ee,ee},i.prototype.map=function(Q){return r(this.value,Q,!0)},i.prototype.forEach=function(Q){return this.value=r(this.value,Q,!1),this.value},i.prototype.reduce=function(Q,ee){var ue=1===arguments.length,ae=ue?this.value:ee;return this.forEach(function($){(!this.isRoot||!ue)&&(ae=Q.call(this,ae,$))}),ae},i.prototype.paths=function(){var Q=[];return this.forEach(function(ee){Q.push(this.path)}),Q},i.prototype.nodes=function(){var Q=[];return this.forEach(function(ee){Q.push(this.node)}),Q},i.prototype.clone=function(){var Q=[],ee=[];return function ue(ae){for(var $=0;$<Q.length;$++)if(Q[$]===ae)return ee[$];if("object"==typeof ae&&null!==ae){var se=u(ae);return Q.push(ae),ee.push(se),Z(p(ae),function(ve){se[ve]=ue(ae[ve])}),Q.pop(),ee.pop(),se}return ae}(this.value)};var p=Object.keys||function(ee){var ue=[];for(var ae in ee)ue.push(ae);return ue};function f(Q){return Object.prototype.toString.call(Q)}var F=Array.isArray||function(ee){return"[object Array]"===Object.prototype.toString.call(ee)},Z=function(Q,ee){if(Q.forEach)return Q.forEach(ee);for(var ue=0;ue<Q.length;ue++)ee(Q[ue],ue,Q)};Z(p(i.prototype),function(Q){S[Q]=function(ee){var ue=[].slice.call(arguments,1),ae=new i(ee);return ae[Q].apply(ae,ue)}});var J=Object.hasOwnProperty||function(Q,ee){return ee in Q}},2135:(v,S,i)=>{"use strict";var r=i(90465),u=i(76959),p=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,f=/[\n\r\t]/g,e=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,_=/:\d+$/,y=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,T=/^[a-zA-Z]:/;function M(se){return(se||"").toString().replace(p,"")}var R=[["#","hash"],["?","query"],function(ve,oe){return J(oe.protocol)?ve.replace(/\\/g,"/"):ve},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],F={hash:1,query:1};function Z(se){var ve;ve="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Oe,he={},me=typeof(se=se||ve.location||{});if("blob:"===se.protocol)he=new ue(unescape(se.pathname),{});else if("string"===me)for(Oe in he=new ue(se,{}),F)delete he[Oe];else if("object"===me){for(Oe in se)Oe in F||(he[Oe]=se[Oe]);void 0===he.slashes&&(he.slashes=e.test(se.href))}return he}function J(se){return"file:"===se||"ftp:"===se||"http:"===se||"https:"===se||"ws:"===se||"wss:"===se}function Q(se,ve){se=(se=M(se)).replace(f,""),ve=ve||{};var dt,oe=y.exec(se),he=oe[1]?oe[1].toLowerCase():"",me=!!oe[2],Oe=!!oe[3],ce=0;return me?Oe?(dt=oe[2]+oe[3]+oe[4],ce=oe[2].length+oe[3].length):(dt=oe[2]+oe[4],ce=oe[2].length):Oe?(dt=oe[3]+oe[4],ce=oe[3].length):dt=oe[4],"file:"===he?ce>=2&&(dt=dt.slice(2)):J(he)?dt=oe[4]:he?me&&(dt=dt.slice(2)):ce>=2&&J(ve.protocol)&&(dt=oe[4]),{protocol:he,slashes:me||J(he),slashesCount:ce,rest:dt}}function ue(se,ve,oe){if(se=(se=M(se)).replace(f,""),!(this instanceof ue))return new ue(se,ve,oe);var he,me,Oe,ce,dt,ze,Ye=R.slice(),je=typeof ve,Ie=this,Ve=0;for("object"!==je&&"string"!==je&&(oe=ve,ve=null),oe&&"function"!=typeof oe&&(oe=u.parse),he=!(me=Q(se||"",ve=Z(ve))).protocol&&!me.slashes,Ie.slashes=me.slashes||he&&ve.slashes,Ie.protocol=me.protocol||ve.protocol||"",se=me.rest,("file:"===me.protocol&&(2!==me.slashesCount||T.test(se))||!me.slashes&&(me.protocol||me.slashesCount<2||!J(Ie.protocol)))&&(Ye[3]=[/(.*)/,"pathname"]);Ve<Ye.length;Ve++)"function"!=typeof(ce=Ye[Ve])?(ze=ce[1],(Oe=ce[0])!=Oe?Ie[ze]=se:"string"==typeof Oe?~(dt="@"===Oe?se.lastIndexOf(Oe):se.indexOf(Oe))&&("number"==typeof ce[2]?(Ie[ze]=se.slice(0,dt),se=se.slice(dt+ce[2])):(Ie[ze]=se.slice(dt),se=se.slice(0,dt))):(dt=Oe.exec(se))&&(Ie[ze]=dt[1],se=se.slice(0,dt.index)),Ie[ze]=Ie[ze]||he&&ce[3]&&ve[ze]||"",ce[4]&&(Ie[ze]=Ie[ze].toLowerCase())):se=ce(se,Ie);oe&&(Ie.query=oe(Ie.query)),he&&ve.slashes&&"/"!==Ie.pathname.charAt(0)&&(""!==Ie.pathname||""!==ve.pathname)&&(Ie.pathname=function(se,ve){if(""===se)return ve;for(var oe=(ve||"/").split("/").slice(0,-1).concat(se.split("/")),he=oe.length,me=oe[he-1],Oe=!1,ce=0;he--;)"."===oe[he]?oe.splice(he,1):".."===oe[he]?(oe.splice(he,1),ce++):ce&&(0===he&&(Oe=!0),oe.splice(he,1),ce--);return Oe&&oe.unshift(""),("."===me||".."===me)&&oe.push(""),oe.join("/")}(Ie.pathname,ve.pathname)),"/"!==Ie.pathname.charAt(0)&&J(Ie.protocol)&&(Ie.pathname="/"+Ie.pathname),r(Ie.port,Ie.protocol)||(Ie.host=Ie.hostname,Ie.port=""),Ie.username=Ie.password="",Ie.auth&&(~(dt=Ie.auth.indexOf(":"))?(Ie.username=Ie.auth.slice(0,dt),Ie.username=encodeURIComponent(decodeURIComponent(Ie.username)),Ie.password=Ie.auth.slice(dt+1),Ie.password=encodeURIComponent(decodeURIComponent(Ie.password))):Ie.username=encodeURIComponent(decodeURIComponent(Ie.auth)),Ie.auth=Ie.password?Ie.username+":"+Ie.password:Ie.username),Ie.origin="file:"!==Ie.protocol&&J(Ie.protocol)&&Ie.host?Ie.protocol+"//"+Ie.host:"null",Ie.href=Ie.toString()}ue.prototype={set:function(se,ve,oe){var he=this;switch(se){case"query":"string"==typeof ve&&ve.length&&(ve=(oe||u.parse)(ve)),he[se]=ve;break;case"port":he[se]=ve,r(ve,he.protocol)?ve&&(he.host=he.hostname+":"+ve):(he.host=he.hostname,he[se]="");break;case"hostname":he[se]=ve,he.port&&(ve+=":"+he.port),he.host=ve;break;case"host":he[se]=ve,_.test(ve)?(ve=ve.split(":"),he.port=ve.pop(),he.hostname=ve.join(":")):(he.hostname=ve,he.port="");break;case"protocol":he.protocol=ve.toLowerCase(),he.slashes=!oe;break;case"pathname":case"hash":if(ve){var me="pathname"===se?"/":"#";he[se]=ve.charAt(0)!==me?me+ve:ve}else he[se]=ve;break;case"username":case"password":he[se]=encodeURIComponent(ve);break;case"auth":var Oe=ve.indexOf(":");~Oe?(he.username=ve.slice(0,Oe),he.username=encodeURIComponent(decodeURIComponent(he.username)),he.password=ve.slice(Oe+1),he.password=encodeURIComponent(decodeURIComponent(he.password))):he.username=encodeURIComponent(decodeURIComponent(ve))}for(var ce=0;ce<R.length;ce++){var dt=R[ce];dt[4]&&(he[dt[1]]=he[dt[1]].toLowerCase())}return he.auth=he.password?he.username+":"+he.password:he.username,he.origin="file:"!==he.protocol&&J(he.protocol)&&he.host?he.protocol+"//"+he.host:"null",he.href=he.toString(),he},toString:function(se){(!se||"function"!=typeof se)&&(se=u.stringify);var ve,oe=this,he=oe.host,me=oe.protocol;me&&":"!==me.charAt(me.length-1)&&(me+=":");var Oe=me+(oe.protocol&&oe.slashes||J(oe.protocol)?"//":"");return oe.username?(Oe+=oe.username,oe.password&&(Oe+=":"+oe.password),Oe+="@"):oe.password?(Oe+=":"+oe.password,Oe+="@"):"file:"!==oe.protocol&&J(oe.protocol)&&!he&&"/"!==oe.pathname&&(Oe+="@"),(":"===he[he.length-1]||_.test(oe.hostname)&&!oe.port)&&(he+=":"),Oe+=he+oe.pathname,(ve="object"==typeof oe.query?se(oe.query):oe.query)&&(Oe+="?"!==ve.charAt(0)?"?"+ve:ve),oe.hash&&(Oe+=oe.hash),Oe}},ue.extractProtocol=Q,ue.location=Z,ue.trimLeft=M,ue.qs=u,v.exports=ue},38505:(v,S,i)=>{"use strict";var r=i(87504),u=i(43745);function p(){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}S.parse=se,S.resolve=function(me,Oe){return se(me,!1,!0).resolve(Oe)},S.resolveObject=function(me,Oe){return me?se(me,!1,!0).resolveObject(Oe):Oe},S.format=function(me){return u.isString(me)&&(me=se(me)),me instanceof p?me.format():p.prototype.format.call(me)},S.Url=p;var f=/^([a-z0-9.+-]+:)/i,e=/:[0-9]*$/,_=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,T=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),M=["'"].concat(T),R=["%","/","?",";","#"].concat(M),F=["/","?","#"],J=/^[+a-z0-9A-Z_-]{0,63}$/,Q=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ee={javascript:!0,"javascript:":!0},ue={javascript:!0,"javascript:":!0},ae={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},$=i(36284);function se(me,Oe,ce){if(me&&u.isObject(me)&&me instanceof p)return me;var dt=new p;return dt.parse(me,Oe,ce),dt}p.prototype.parse=function(me,Oe,ce){if(!u.isString(me))throw new TypeError("Parameter 'url' must be a string, not "+typeof me);var dt=me.indexOf("?"),ze=-1!==dt&&dt<me.indexOf("#")?"?":"#",Ye=me.split(ze);Ye[0]=Ye[0].replace(/\\/g,"/");var Ie=me=Ye.join(ze);if(Ie=Ie.trim(),!ce&&1===me.split("#").length){var Ve=_.exec(Ie);if(Ve)return this.path=Ie,this.href=Ie,this.pathname=Ve[1],Ve[2]?(this.search=Ve[2],this.query=Oe?$.parse(this.search.substr(1)):this.search.substr(1)):Oe&&(this.search="",this.query={}),this}var He=f.exec(Ie);if(He){var Zt=(He=He[0]).toLowerCase();this.protocol=Zt,Ie=Ie.substr(He.length)}if(ce||He||Ie.match(/^\/\/[^@\/]+@[^@\/]+/)){var st="//"===Ie.substr(0,2);st&&(!He||!ue[He])&&(Ie=Ie.substr(2),this.slashes=!0)}if(!ue[He]&&(st||He&&!ae[He])){for(var en=-1,$t=0;$t<F.length;$t++)-1!==(Gt=Ie.indexOf(F[$t]))&&(-1===en||Gt<en)&&(en=Gt);var Ut,Bt;for(-1!==(Bt=-1===en?Ie.lastIndexOf("@"):Ie.lastIndexOf("@",en))&&(Ut=Ie.slice(0,Bt),Ie=Ie.slice(Bt+1),this.auth=decodeURIComponent(Ut)),en=-1,$t=0;$t<R.length;$t++){var Gt;-1!==(Gt=Ie.indexOf(R[$t]))&&(-1===en||Gt<en)&&(en=Gt)}-1===en&&(en=Ie.length),this.host=Ie.slice(0,en),Ie=Ie.slice(en),this.parseHost(),this.hostname=this.hostname||"";var mt="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!mt)for(var Yt=this.hostname.split(/\./),Dt=($t=0,Yt.length);$t<Dt;$t++){var zt=Yt[$t];if(zt&&!zt.match(J)){for(var Yn="",Hr=0,ci=zt.length;Hr<ci;Hr++)zt.charCodeAt(Hr)>127?Yn+="x":Yn+=zt[Hr];if(!Yn.match(J)){var Ir=Yt.slice(0,$t),wr=Yt.slice($t+1),Qr=zt.match(Q);Qr&&(Ir.push(Qr[1]),wr.unshift(Qr[2])),wr.length&&(Ie="/"+wr.join(".")+Ie),this.hostname=Ir.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),mt||(this.hostname=r.toASCII(this.hostname)),this.host=(this.hostname||"")+(this.port?":"+this.port:""),this.href+=this.host,mt&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==Ie[0]&&(Ie="/"+Ie))}if(!ee[Zt])for($t=0,Dt=M.length;$t<Dt;$t++){var Hn=M[$t];if(-1!==Ie.indexOf(Hn)){var Zr=encodeURIComponent(Hn);Zr===Hn&&(Zr=escape(Hn)),Ie=Ie.split(Hn).join(Zr)}}var Ur=Ie.indexOf("#");-1!==Ur&&(this.hash=Ie.substr(Ur),Ie=Ie.slice(0,Ur));var di=Ie.indexOf("?");return-1!==di?(this.search=Ie.substr(di),this.query=Ie.substr(di+1),Oe&&(this.query=$.parse(this.query)),Ie=Ie.slice(0,di)):Oe&&(this.search="",this.query={}),Ie&&(this.pathname=Ie),ae[Zt]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(this.pathname||"")+(this.search||"")),this.href=this.format(),this},p.prototype.format=function(){var me=this.auth||"";me&&(me=(me=encodeURIComponent(me)).replace(/%3A/i,":"),me+="@");var Oe=this.protocol||"",ce=this.pathname||"",dt=this.hash||"",ze=!1,Ye="";this.host?ze=me+this.host:this.hostname&&(ze=me+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(ze+=":"+this.port)),this.query&&u.isObject(this.query)&&Object.keys(this.query).length&&(Ye=$.stringify(this.query));var je=this.search||Ye&&"?"+Ye||"";return Oe&&":"!==Oe.substr(-1)&&(Oe+=":"),this.slashes||(!Oe||ae[Oe])&&!1!==ze?(ze="//"+(ze||""),ce&&"/"!==ce.charAt(0)&&(ce="/"+ce)):ze||(ze=""),dt&&"#"!==dt.charAt(0)&&(dt="#"+dt),je&&"?"!==je.charAt(0)&&(je="?"+je),Oe+ze+(ce=ce.replace(/[?#]/g,function(Ie){return encodeURIComponent(Ie)}))+(je=je.replace("#","%23"))+dt},p.prototype.resolve=function(me){return this.resolveObject(se(me,!1,!0)).format()},p.prototype.resolveObject=function(me){if(u.isString(me)){var Oe=new p;Oe.parse(me,!1,!0),me=Oe}for(var ce=new p,dt=Object.keys(this),ze=0;ze<dt.length;ze++){var Ye=dt[ze];ce[Ye]=this[Ye]}if(ce.hash=me.hash,""===me.href)return ce.href=ce.format(),ce;if(me.slashes&&!me.protocol){for(var je=Object.keys(me),Ie=0;Ie<je.length;Ie++){var Ve=je[Ie];"protocol"!==Ve&&(ce[Ve]=me[Ve])}return ae[ce.protocol]&&ce.hostname&&!ce.pathname&&(ce.path=ce.pathname="/"),ce.href=ce.format(),ce}if(me.protocol&&me.protocol!==ce.protocol){if(!ae[me.protocol]){for(var He=Object.keys(me),Zt=0;Zt<He.length;Zt++){var st=He[Zt];ce[st]=me[st]}return ce.href=ce.format(),ce}if(ce.protocol=me.protocol,me.host||ue[me.protocol])ce.pathname=me.pathname;else{for(var Dt=(me.pathname||"").split("/");Dt.length&&!(me.host=Dt.shift()););me.host||(me.host=""),me.hostname||(me.hostname=""),""!==Dt[0]&&Dt.unshift(""),Dt.length<2&&Dt.unshift(""),ce.pathname=Dt.join("/")}return ce.search=me.search,ce.query=me.query,ce.host=me.host||"",ce.auth=me.auth,ce.hostname=me.hostname||me.host,ce.port=me.port,(ce.pathname||ce.search)&&(ce.path=(ce.pathname||"")+(ce.search||"")),ce.slashes=ce.slashes||me.slashes,ce.href=ce.format(),ce}var Gt=ce.pathname&&"/"===ce.pathname.charAt(0),Ut=me.host||me.pathname&&"/"===me.pathname.charAt(0),Bt=Ut||Gt||ce.host&&me.pathname,mt=Bt,Yt=ce.pathname&&ce.pathname.split("/")||[],zt=(Dt=me.pathname&&me.pathname.split("/")||[],ce.protocol&&!ae[ce.protocol]);if(zt&&(ce.hostname="",ce.port=null,ce.host&&(""===Yt[0]?Yt[0]=ce.host:Yt.unshift(ce.host)),ce.host="",me.protocol&&(me.hostname=null,me.port=null,me.host&&(""===Dt[0]?Dt[0]=me.host:Dt.unshift(me.host)),me.host=null),Bt=Bt&&(""===Dt[0]||""===Yt[0])),Ut)ce.host=me.host||""===me.host?me.host:ce.host,ce.hostname=me.hostname||""===me.hostname?me.hostname:ce.hostname,ce.search=me.search,ce.query=me.query,Yt=Dt;else if(Dt.length)Yt||(Yt=[]),Yt.pop(),Yt=Yt.concat(Dt),ce.search=me.search,ce.query=me.query;else if(!u.isNullOrUndefined(me.search))return zt&&(ce.hostname=ce.host=Yt.shift(),(Yn=!!(ce.host&&ce.host.indexOf("@")>0)&&ce.host.split("@"))&&(ce.auth=Yn.shift(),ce.host=ce.hostname=Yn.shift())),ce.search=me.search,ce.query=me.query,(!u.isNull(ce.pathname)||!u.isNull(ce.search))&&(ce.path=(ce.pathname?ce.pathname:"")+(ce.search?ce.search:"")),ce.href=ce.format(),ce;if(!Yt.length)return ce.pathname=null,ce.path=ce.search?"/"+ce.search:null,ce.href=ce.format(),ce;for(var Hr=Yt.slice(-1)[0],ci=(ce.host||me.host||Yt.length>1)&&("."===Hr||".."===Hr)||""===Hr,Ir=0,wr=Yt.length;wr>=0;wr--)"."===(Hr=Yt[wr])?Yt.splice(wr,1):".."===Hr?(Yt.splice(wr,1),Ir++):Ir&&(Yt.splice(wr,1),Ir--);if(!Bt&&!mt)for(;Ir--;Ir)Yt.unshift("..");Bt&&""!==Yt[0]&&(!Yt[0]||"/"!==Yt[0].charAt(0))&&Yt.unshift(""),ci&&"/"!==Yt.join("/").substr(-1)&&Yt.push("");var Yn,Qr=""===Yt[0]||Yt[0]&&"/"===Yt[0].charAt(0);return zt&&(ce.hostname=ce.host=Qr?"":Yt.length?Yt.shift():"",(Yn=!!(ce.host&&ce.host.indexOf("@")>0)&&ce.host.split("@"))&&(ce.auth=Yn.shift(),ce.host=ce.hostname=Yn.shift())),(Bt=Bt||ce.host&&Yt.length)&&!Qr&&Yt.unshift(""),Yt.length?ce.pathname=Yt.join("/"):(ce.pathname=null,ce.path=null),(!u.isNull(ce.pathname)||!u.isNull(ce.search))&&(ce.path=(ce.pathname?ce.pathname:"")+(ce.search?ce.search:"")),ce.auth=me.auth||ce.auth,ce.slashes=ce.slashes||me.slashes,ce.href=ce.format(),ce},p.prototype.parseHost=function(){var me=this.host,Oe=e.exec(me);Oe&&(":"!==(Oe=Oe[0])&&(this.port=Oe.substr(1)),me=me.substr(0,me.length-Oe.length)),me&&(this.hostname=me)}},43745:v=>{"use strict";v.exports={isString:function(S){return"string"==typeof S},isObject:function(S){return"object"==typeof S&&null!==S},isNull:function(S){return null===S},isNullOrUndefined:function(S){return null==S}}},58734:(v,S,i)=>{"use strict";var r=i(88280),f=function(R){return/<\/+[^>]+>/.test(R)},e=function(R){return/<[^>]+\/>/.test(R)};function y(M){return(R=M,R.split(/(<\/?[^>]+>)/g).filter(function(F){return""!==F.trim()})).map(function(F){return{value:F,type:T(F)}});var R}function T(M){return f(M)?"ClosingTag":!function(R){return/<[^>!]+>/.test(R)}(R=M)||f(R)||e(R)?e(M)?"SelfClosingTag":"Text":"OpeningTag";var R}v.exports=function(M){var R=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},F=R.indentor,Z=R.textNodesOnSameLine,J=0,Q=[];F=F||"    ";var ee=y(M).map(function(ue,ae,$){var se=ue.value,ve=ue.type;"ClosingTag"===ve&&J--;var oe=r(F,J),he=oe+se;if("OpeningTag"===ve&&J++,Z){var me=$[ae-1],Oe=$[ae-2];"ClosingTag"===ve&&"Text"===me.type&&"OpeningTag"===Oe.type&&(he=""+oe+Oe.value+me.value+se,Q.push(ae-2,ae-1))}return he});return Q.forEach(function(ue){return ee[ue]=null}),ee.filter(function(ue){return!!ue}).join("\n")}},1653:function(v,S){var i,r,u;r=[],void 0!==(u="function"==typeof(i=function(){"use strict";var p=function(F){return F&&"getComputedStyle"in window&&"smooth"===window.getComputedStyle(F)["scroll-behavior"]};if("undefined"==typeof window||!("document"in window))return{};var f=function(F,Z,J){Z=Z||999,!J&&0!==J&&(J=9);var Q,ee=function(me){Q=me},ue=function(){clearTimeout(Q),ee(0)},ae=function(me){return Math.max(0,F.getTopOf(me)-J)},$=function(me,Oe,ce){if(ue(),0===Oe||Oe&&Oe<0||p(F.body))F.toY(me),ce&&ce();else{var dt=F.getY(),ze=Math.max(0,me)-dt,Ye=(new Date).getTime();Oe=Oe||Math.min(Math.abs(ze),Z),function je(){ee(setTimeout(function(){var Ie=Math.min(1,((new Date).getTime()-Ye)/Oe),Ve=Math.max(0,Math.floor(dt+ze*(Ie<.5?2*Ie*Ie:Ie*(4-2*Ie)-1)));F.toY(Ve),Ie<1&&F.getHeight()+Ve<F.body.scrollHeight?je():(setTimeout(ue,99),ce&&ce())},9))}()}},se=function(me,Oe,ce){$(ae(me),Oe,ce)};return{setup:function(me,Oe){return(0===me||me)&&(Z=me),(0===Oe||Oe)&&(J=Oe),{defaultDuration:Z,edgeOffset:J}},to:se,toY:$,intoView:function(me,Oe,ce){var dt=me.getBoundingClientRect().height,ze=F.getTopOf(me)+dt,Ye=F.getHeight(),je=F.getY(),Ie=je+Ye;ae(me)<je||dt+J>Ye?se(me,Oe,ce):ze+J>Ie?$(ze-Ye+J,Oe,ce):ce&&ce()},center:function(me,Oe,ce,dt){$(Math.max(0,F.getTopOf(me)-F.getHeight()/2+(ce||me.getBoundingClientRect().height/2)),Oe,dt)},stop:ue,moving:function(){return!!Q},getY:F.getY,getTopOf:F.getTopOf}},e=document.documentElement,_=function(){return window.scrollY||e.scrollTop},y=f({body:document.scrollingElement||document.body,toY:function(F){window.scrollTo(0,F)},getY:_,getHeight:function(){return window.innerHeight||e.clientHeight},getTopOf:function(F){return F.getBoundingClientRect().top+_()-e.offsetTop}});if(y.createScroller=function(F,Z,J){return f({body:F,toY:function(Q){F.scrollTop=Q},getY:function(){return F.scrollTop},getHeight:function(){return Math.min(F.clientHeight,window.innerHeight||e.clientHeight)},getTopOf:function(Q){return Q.offsetTop}},Z,J)},"addEventListener"in window&&!window.noZensmooth&&!p(document.body)){var T="history"in window&&"pushState"in history,M=T&&"scrollRestoration"in history;M&&(history.scrollRestoration="auto"),window.addEventListener("load",function(){M&&(setTimeout(function(){history.scrollRestoration="manual"},9),window.addEventListener("popstate",function(F){F.state&&"zenscrollY"in F.state&&y.toY(F.state.zenscrollY)},!1)),window.location.hash&&setTimeout(function(){var F=y.setup().edgeOffset;if(F){var Z=document.getElementById(window.location.href.split("#")[1]);if(Z){var J=Math.max(0,y.getTopOf(Z)-F),Q=y.getY()-J;0<=Q&&Q<9&&window.scrollTo(0,J)}}},9)},!1);var R=new RegExp("(^|\\s)noZensmooth(\\s|$)");window.addEventListener("click",function(F){for(var Z=F.target;Z&&"A"!==Z.tagName;)Z=Z.parentNode;if(!(!Z||1!==F.which||F.shiftKey||F.metaKey||F.ctrlKey||F.altKey)){if(M){var J=history.state&&"object"==typeof history.state?history.state:{};J.zenscrollY=y.getY();try{history.replaceState(J,"")}catch(se){}}var Q=Z.getAttribute("href")||"";if(0===Q.indexOf("#")&&!R.test(Z.className)){var ee=0,ue=document.getElementById(Q.substring(1));if("#"!==Q){if(!ue)return;ee=y.getTopOf(ue)}F.preventDefault();var ae=function(){window.location=Q},$=y.setup().edgeOffset;$&&(ee=Math.max(0,ee-$),T&&(ae=function(){history.pushState({},"",Q)})),y.toY(ee,null,ae)}}},!1)}return y}())?i.apply(S,r):i)&&(v.exports=u)},66265:(v,S,i)=>{"use strict";i.d(S,{B:()=>e});var r=i(12057),u=i(6283),p=i(44466),f=i(74788);let e=(()=>{class _{}return _.\u0275fac=function(T){return new(T||_)},_.\u0275mod=f.oAB({type:_}),_.\u0275inj=f.cJS({imports:[[r.ez,p.m,u.Bz]]}),_})()},98056:(v,S,i)=>{"use strict";i.d(S,{p:()=>ue});var r=i(64762),u=i(58497),p=i(25917),f=i(19773),e=i(93523),_=i(74788);let y=class{constructor($){this.http=$,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get($,se){return this.http.get(`${this.url}/${$}/${se}`).pipe((0,f.zg)(ve=>(0,p.of)(ve.counters)))}};y.\u0275fac=function($){return new($||y)(_.LFG(u.eN))},y.\u0275prov=_.Yz7({token:y,factory:y.\u0275fac,providedIn:"root"}),y=(0,r.gn)([e.o,(0,r.w6)("design:paramtypes",[u.eN])],y);var T=i(12057),M=i(35905),R=i(34501),F=i(66369);const Z=["valueTpl"];function J(ae,$){if(1&ae&&(_._uU(0),_.ALo(1,"dimless")),2&ae){const se=$.row;_.AsE(" ",_.lcZ(1,2,se.value)," ",se.unit," ")}}function Q(ae,$){if(1&ae){const se=_.EpF();_.TgZ(0,"cd-table",2),_.NdJ("fetchData",function(oe){return _.CHM(se),_.oxw().getCounters(oe)}),_.YNc(1,J,2,4,"ng-template",null,3,_.W1O),_.qZA()}if(2&ae){const se=_.oxw();_.Q6J("data",se.counters)("columns",se.columns)("autoSave",!1)}}function ee(ae,$){1&ae&&(_.TgZ(0,"cd-alert-panel",4),_.SDv(1,5),_.qZA())}let ue=(()=>{class ae{constructor(se){this.performanceCounterService=se,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:1},{name:"Description",prop:"description",flexGrow:1},{name:"Value",prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(se){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(ve=>{this.counters=ve},ve=>{404===ve.status?(ve.preventDefault(),this.counters=null):se.error()})}}return ae.\u0275fac=function(se){return new(se||ae)(_.Y36(y))},ae.\u0275cmp=_.Xpm({type:ae,selectors:[["cd-table-performance-counter"]],viewQuery:function(se,ve){if(1&se&&_.Gf(Z,5),2&se){let oe;_.iGM(oe=_.CRH())&&(ve.valueTpl=oe.first)}},inputs:{serviceType:"serviceType",serviceId:"serviceId"},decls:3,vars:2,consts:function(){let $;return $="Performance counters not available",[["columnMode","flex",3,"data","columns","autoSave","fetchData",4,"ngIf","ngIfElse"],["warning",""],["columnMode","flex",3,"data","columns","autoSave","fetchData"],["valueTpl",""],["type","warning"],$]},template:function(se,ve){if(1&se&&(_.YNc(0,Q,3,3,"cd-table",0),_.YNc(1,ee,2,0,"ng-template",null,1,_.W1O)),2&se){const oe=_.MAs(2);_.Q6J("ngIf",ve.counters)("ngIfElse",oe)}},directives:[T.O5,M.a,R.G],pipes:[F.n],styles:[""]}),ae})()},370:(v,S,i)=>{"use strict";i.d(S,{t:()=>y});var r=i(12057),u=i(38549),p=i(37496),f=i(2149),e=i(44466),_=i(74788);let y=(()=>{class T{}return T.\u0275fac=function(R){return new(R||T)},T.\u0275mod=_.oAB({type:T}),T.\u0275inj=_.cJS({imports:[[r.ez,f.t,e.m,u.Oz,p.b]]}),T})()},49671:(v,S,i)=>{"use strict";i.d(S,{j:()=>_});var r=i(23815),u=i.n(r),p=i(370);class f{constructor(T){if(this.type=T,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return f.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case f.CATEGORY_CLEAN:this.states=["active","clean"];break;case f.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case f.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}f.CATEGORY_CLEAN="clean",f.CATEGORY_WORKING="working",f.CATEGORY_WARNING="warning",f.CATEGORY_UNKNOWN="unknown",f.VALID_CATEGORIES=[f.CATEGORY_CLEAN,f.CATEGORY_WORKING,f.CATEGORY_WARNING,f.CATEGORY_UNKNOWN];var e=i(74788);let _=(()=>{class y{constructor(){this.categories=this.createCategories()}getAllTypes(){return f.VALID_CATEGORIES}getTypeByStates(M){const R=this.getPgStatesFromText(M);if(0===R.length)return f.CATEGORY_UNKNOWN;const F=u().zipObject(f.VALID_CATEGORIES,f.VALID_CATEGORIES.map(J=>u().intersection(this.categories[J].states,R).length));if(F[f.CATEGORY_WARNING]>0)return f.CATEGORY_WARNING;const Z=F[f.CATEGORY_WORKING];return R.length>F[f.CATEGORY_CLEAN]+Z?f.CATEGORY_UNKNOWN:Z?f.CATEGORY_WORKING:f.CATEGORY_CLEAN}createCategories(){return u().zipObject(f.VALID_CATEGORIES,f.VALID_CATEGORIES.map(M=>new f(M)))}getPgStatesFromText(M){const R=M.replace(/[^a-z_]+/g," ").trim().split(" ");return u().uniq(R)}}return y.\u0275fac=function(M){return new(M||y)},y.\u0275prov=e.Yz7({token:y,factory:y.\u0275fac,providedIn:p.t}),y})()},49552:(v,S,i)=>{"use strict";i.r(S),i.d(S,{AuthModule:()=>ln,RoutedAuthModule:()=>cn});var r=i(12057),u=i(24751),p=i(6283),f=i(38549),e=i(37496),_=i(79512),y=i(44466),T=i(23815),M=i.n(T),R=i(35758),F=i(18001),Z=i(93614),J=i(95463),Q=i(77205),ee=i(97161),ue=(()=>((ue||(ue={})).editing="editing",ue))();class ae{}var $=i(74788),se=i(25917),ve=i(19773),oe=i(58497);let he=(()=>{class Ct{constructor(nn){this.http=nn}list(){return this.http.get("api/role")}delete(nn){return this.http.delete(`api/role/${nn}`)}get(nn){return this.http.get(`api/role/${nn}`)}create(nn){return this.http.post("api/role",nn)}clone(nn,Cn){return this.http.post(`api/role/${nn}/clone`,{new_name:Cn})}update(nn){return this.http.put(`api/role/${nn.name}`,nn)}exists(nn){return this.list().pipe((0,ve.zg)(Cn=>{const br=Cn.some(zi=>zi.name===nn);return(0,se.of)(br)}))}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.LFG(oe.eN))},Ct.\u0275prov=$.Yz7({token:Ct,factory:Ct.\u0275fac,providedIn:"root"}),Ct})(),me=(()=>{class Ct{constructor(nn){this.http=nn}list(){return this.http.get("ui-api/scope")}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.LFG(oe.eN))},Ct.\u0275prov=$.Yz7({token:Ct,factory:Ct.\u0275fac,providedIn:"root"}),Ct})();var Oe=i(63622),ce=i(41582),dt=i(56310),ze=i(87925),Ye=i(94276),je=i(82945),Ie=i(35905),Ve=i(30839),He=i(10545);const Zt=["headerPermissionCheckboxTpl"],st=["cellScopeCheckboxTpl"],en=["cellPermissionCheckboxTpl"];function $t(Ct,pr){1&Ct&&($.TgZ(0,"span",25),$.SDv(1,26),$.qZA())}function Gt(Ct,pr){1&Ct&&($.TgZ(0,"span",25),$.SDv(1,27),$.qZA())}const Ut=function(Ct){return{required:Ct}};function Bt(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",4),$.TgZ(1,"form",5,6),$.TgZ(3,"div",7),$.TgZ(4,"div",8),$.SDv(5,9),$.ALo(6,"titlecase"),$.ALo(7,"upperFirst"),$.qZA(),$.TgZ(8,"div",10),$.TgZ(9,"div",11),$.TgZ(10,"label",12),$.SDv(11,13),$.qZA(),$.TgZ(12,"div",14),$._UZ(13,"input",15),$.YNc(14,$t,2,0,"span",16),$.YNc(15,Gt,2,0,"span",16),$.qZA(),$.qZA(),$.TgZ(16,"div",11),$.TgZ(17,"label",17),$.SDv(18,18),$.qZA(),$.TgZ(19,"div",14),$._UZ(20,"input",19),$.qZA(),$.qZA(),$.TgZ(21,"div",11),$.TgZ(22,"label",20),$.SDv(23,21),$.qZA(),$.TgZ(24,"div",14),$._UZ(25,"cd-table",22),$.qZA(),$.qZA(),$.qZA(),$.TgZ(26,"div",23),$.TgZ(27,"cd-form-button-panel",24),$.NdJ("submitActionEvent",function(){return $.CHM(nn),$.oxw().submit()}),$.ALo(28,"titlecase"),$.ALo(29,"upperFirst"),$.qZA(),$.qZA(),$.qZA(),$.qZA(),$.qZA()}if(2&Ct){const nn=$.MAs(2),Cn=$.oxw();$.xp6(1),$.Q6J("formGroup",Cn.roleForm),$.xp6(6),$.pQV($.lcZ(6,15,Cn.action))($.lcZ(7,17,Cn.resource)),$.QtT(5),$.xp6(3),$.Q6J("ngClass",$.VKq(23,Ut,Cn.mode!==Cn.roleFormMode.editing)),$.xp6(4),$.Q6J("ngIf",Cn.roleForm.showError("name",nn,"required")),$.xp6(1),$.Q6J("ngIf",Cn.roleForm.showError("name",nn,"notUnique")),$.xp6(10),$.Q6J("data",Cn.scopes_permissions)("columns",Cn.columns)("toolHeader",!1)("autoReload",!1)("autoSave",!1)("footer",!1)("limit",0),$.xp6(2),$.Q6J("form",Cn.roleForm)("submitText",$.lcZ(28,19,Cn.action)+" "+$.lcZ(29,21,Cn.resource))}}function mt(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",28),$.TgZ(1,"input",29),$.NdJ("change",function(br){const zi=$.CHM(nn),Wo=zi.row,Do=zi.column;return $.oxw().onClickCellCheckbox(Wo.scope,Do.prop,br)}),$.qZA(),$.TgZ(2,"label",30),$._uU(3),$.qZA(),$.qZA()}if(2&Ct){const nn=pr.row,Cn=pr.value,br=$.oxw();$.xp6(1),$.MGl("id","scope_",nn.scope,""),$.Q6J("checked",br.isRowChecked(nn.scope)),$.xp6(1),$.MGl("for","scope_",nn.scope,""),$.xp6(1),$.Oqu(Cn)}}function Yt(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",28),$.TgZ(1,"input",31),$.NdJ("change",function(br){const zi=$.CHM(nn),Wo=zi.row,Do=zi.column;return $.oxw().onClickCellCheckbox(Wo.scope,Do.prop,br)}),$.qZA(),$._UZ(2,"label",32),$.qZA()}if(2&Ct){const nn=pr.column,Cn=pr.row,br=pr.value;$.xp6(1),$.Q6J("checked",br)("id",Cn.scope+"-"+nn.prop),$.xp6(1),$.Q6J("for",Cn.scope+"-"+nn.prop)}}function Dt(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",28),$.TgZ(1,"input",29),$.NdJ("change",function(br){const Wo=$.CHM(nn).column;return $.oxw().onClickHeaderCheckbox(Wo.prop,br)}),$.qZA(),$.TgZ(2,"label",33),$._uU(3),$.qZA(),$.qZA()}if(2&Ct){const nn=pr.column,Cn=$.oxw();$.xp6(1),$.MGl("id","header_",nn.prop,""),$.Q6J("checked",Cn.isHeaderChecked(nn.prop)),$.xp6(1),$.MGl("for","header_",nn.prop,""),$.xp6(1),$.Oqu(nn.name)}}let zt=(()=>{class Ct extends Z.E{constructor(nn,Cn,br,zi,Wo,Do){super(),this.route=nn,this.router=Cn,this.roleService=br,this.scopeService=zi,this.notificationService=Wo,this.actionLabels=Do,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=ue,this.resource="role",this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new J.d({name:new u.NI("",{validators:[u.kI.required],asyncValidators:[Q.h.unique(this.roleService.exists,this.roleService)]}),description:new u.NI(""),scopes_permissions:new u.NI({})})}ngOnInit(){this.columns=[{prop:"scope",name:"All",flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:"Read",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:"Create",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:"Update",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:"Delete",flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(nn=>{this.scopes=nn,this.roleForm.get("scopes_permissions").setValue({}),this.loadingReady()})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(nn=>{const Cn=[];Cn.push(this.scopeService.list()),Cn.push(this.roleService.get(nn.name)),(0,R.D)(Cn).subscribe(br=>{this.scopes=br[0],["name","description","scopes_permissions"].forEach(zi=>this.roleForm.get(zi).setValue(br[1][zi])),this.loadingReady()})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(nn=>{const Cn=[];M().each(this.scopes,br=>{const zi={read:!1,create:!1,update:!1,delete:!1};zi.scope=br,br in nn&&M().each(nn[br],Wo=>{zi[Wo]=!0}),Cn.push(zi)}),this.scopes_permissions=Cn})}isRowChecked(nn){const Cn=M().find(this.scopes_permissions,br=>br.scope===nn);return!M().isUndefined(Cn)&&Cn.read&&Cn.create&&Cn.update&&Cn.delete}isHeaderChecked(nn){let Cn=[nn];return"scope"===nn&&(Cn=["read","create","update","delete"]),Cn.every(br=>this.scopes_permissions.every(zi=>zi[br]))}onClickCellCheckbox(nn,Cn,br=null){const zi=M().cloneDeep(this.roleForm.getValue("scopes_permissions"));let Wo=[Cn];"scope"===Cn&&(Wo=["read","create","update","delete"]),nn in zi||(zi[nn]=[]),br&&br.target.checked||!M().isEqual(Wo.sort(),M().intersection(zi[nn],Wo).sort())?zi[nn]=M().union(zi[nn],Wo):(zi[nn]=M().difference(zi[nn],Wo),M().isEmpty(zi[nn])&&M().unset(zi,nn)),this.roleForm.get("scopes_permissions").setValue(zi)}onClickHeaderCheckbox(nn,Cn){const br=M().cloneDeep(this.roleForm.getValue("scopes_permissions"));let zi=[nn];"scope"===nn&&(zi=["read","create","update","delete"]),M().each(zi,Wo=>{M().each(this.scopes,Do=>{Cn.target.checked?br[Do]=M().union(br[Do],[Wo]):(br[Do]=M().difference(br[Do],[Wo]),M().isEmpty(br[Do])&&M().unset(br,Do))})}),this.roleForm.get("scopes_permissions").setValue(br)}getRequest(){const nn=new ae;return["name","description","scopes_permissions"].forEach(Cn=>nn[Cn]=this.roleForm.get(Cn).value),nn}createAction(){const nn=this.getRequest();this.roleService.create(nn).subscribe(()=>{this.notificationService.show(F.k.success,"Created role '" + nn.name + "'"),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const nn=this.getRequest();this.roleService.update(nn).subscribe(()=>{this.notificationService.show(F.k.success,"Updated role '" + nn.name + "'"),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.Y36(p.gz),$.Y36(p.F0),$.Y36(he),$.Y36(me),$.Y36(ee.g),$.Y36(_.p4))},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-role-form"]],viewQuery:function(nn,Cn){if(1&nn&&($.Gf(Zt,7),$.Gf(st,7),$.Gf(en,7)),2&nn){let br;$.iGM(br=$.CRH())&&(Cn.headerPermissionCheckboxTpl=br.first),$.iGM(br=$.CRH())&&(Cn.cellScopeCheckboxTpl=br.first),$.iGM(br=$.CRH())&&(Cn.cellPermissionCheckboxTpl=br.first)}},features:[$.qOj],decls:7,vars:1,consts:function(){let pr,nn,Cn,br,zi,Wo,Do,Js;return pr="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",nn="Name",Cn="Name...",br="Description",zi="Description...",Wo="Permissions",Do="This field is required.",Js="The chosen name is already in use.",[["class","cd-col-form",4,"cdFormLoading"],["cellScopeCheckboxTpl",""],["cellPermissionCheckboxTpl",""],["headerPermissionCheckboxTpl",""],[1,"cd-col-form"],["name","roleForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],pr,[1,"card-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label",3,"ngClass"],nn,[1,"cd-col-form-input"],["type","text","placeholder",Cn,"id","name","name","name","formControlName","name","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","description",1,"cd-col-form-label"],br,["type","text","placeholder",zi,"id","description","name","description","formControlName","description",1,"form-control"],[1,"cd-col-form-label"],Wo,["columnMode","flex",3,"data","columns","toolHeader","autoReload","autoSave","footer","limit"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],Do,Js,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","checked","change"],[1,"datatable-permissions-scope-cell-label","custom-control-label",3,"for"],["type","checkbox",1,"custom-control-input",3,"checked","id","change"],[1,"custom-control-label",3,"for"],[1,"datatable-permissions-header-cell-label","custom-control-label",3,"for"]]},template:function(nn,Cn){1&nn&&($.YNc(0,Bt,30,25,"div",0),$.YNc(1,mt,4,4,"ng-template",null,1,$.W1O),$.YNc(3,Yt,3,3,"ng-template",null,2,$.W1O),$.YNc(5,Dt,4,4,"ng-template",null,3,$.W1O)),2&nn&&$.Q6J("cdFormLoading",Cn.loading)},directives:[Oe.y,u._Y,u.JL,u.sg,ce.V,dt.P,r.mk,ze.o,u.Fj,Ye.b,u.JJ,u.u,je.U,r.O5,Ie.a,Ve.p],pipes:[r.rS,He.m],styles:[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:bold}"]}),Ct})();var Yn=i(68136),Hr=i(30982),ci=i(65683),Ir=i(99466),wr=i(65862),Qr=i(68774),Kr=i(41039),In=i(51847),Hn=i(74937),Zr=i(63285);let Ur=(()=>{class Ct{constructor(nn){this.router=nn}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.Y36(p.F0))},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-user-tabs"]],decls:8,vars:1,consts:function(){let pr,nn;return pr="Users",nn="Roles",[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/user-management/users"],["ngbNavLink",""],pr,["ngbNavItem","/user-management/roles"],nn]},template:function(nn,Cn){1&nn&&($.TgZ(0,"ul",0,1),$.NdJ("navChange",function(zi){return Cn.router.navigate([zi.nextId])}),$.TgZ(2,"li",2),$.TgZ(3,"a",3),$.SDv(4,4),$.qZA(),$.qZA(),$.TgZ(5,"li",5),$.TgZ(6,"a",3),$.SDv(7,6),$.qZA(),$.qZA(),$.qZA()),2&nn&&$.Q6J("activeId",Cn.router.url)},directives:[f.Pz,f.nv,f.Vx],styles:[""]}),Ct})();var di=i(94928);function $i(Ct,pr){if(1&Ct&&($.ynx(0),$._UZ(1,"cd-table",1),$.BQk()),2&Ct){const nn=$.oxw();$.xp6(1),$.Q6J("data",nn.scopes_permissions)("columns",nn.columns)("toolHeader",!1)("autoReload",!1)("autoSave",!1)("footer",!1)("limit",0)}}let Hi=(()=>{class Ct{constructor(){this.scopes_permissions=[]}ngOnInit(){this.columns=[{prop:"scope",name:"Scope",flexGrow:2},{prop:"read",name:"Read",flexGrow:1,cellClass:"text-center",cellTransformation:Ir.e.checkIcon},{prop:"create",name:"Create",flexGrow:1,cellClass:"text-center",cellTransformation:Ir.e.checkIcon},{prop:"update",name:"Update",flexGrow:1,cellClass:"text-center",cellTransformation:Ir.e.checkIcon},{prop:"delete",name:"Delete",flexGrow:1,cellClass:"text-center",cellTransformation:Ir.e.checkIcon}]}ngOnChanges(){if(this.selection){this.selectedItem=this.selection;const nn=[];M().each(this.scopes,Cn=>{const br={read:!1,create:!1,update:!1,delete:!1};br.scope=Cn,Cn in this.selectedItem.scopes_permissions&&M().each(this.selectedItem.scopes_permissions[Cn],zi=>{br[zi]=!0}),nn.push(br)}),this.scopes_permissions=nn}}}return Ct.\u0275fac=function(nn){return new(nn||Ct)},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-role-details"]],inputs:{selection:"selection",scopes:"scopes"},features:[$.TTD],decls:1,vars:1,consts:[[4,"ngIf"],["columnMode","flex",3,"data","columns","toolHeader","autoReload","autoSave","footer","limit"]],template:function(nn,Cn){1&nn&&$.YNc(0,$i,2,7,"ng-container",0),2&nn&&$.Q6J("ngIf",Cn.selection)},directives:[r.O5,Ie.a],styles:[".fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#ced4da}"]}),Ct})(),On=(()=>{class Ct extends Yn.o{constructor(nn,Cn,br,zi,Wo,Do,Js,_s){super(),this.roleService=nn,this.scopeService=Cn,this.emptyPipe=br,this.authStorageService=zi,this.modalService=Wo,this.notificationService=Do,this.urlBuilder=Js,this.actionLabels=_s,this.selection=new Qr.r,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:wr.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:wr.P.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:wr.P.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:wr.P.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Name",prop:"name",flexGrow:3},{name:"Description",prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:"System Role",prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:Ir.e.checkIcon}]}getRoles(){(0,R.D)([this.roleService.list(),this.scopeService.list()]).subscribe(nn=>{this.roles=nn[0],this.scopes=nn[1]})}updateSelection(nn){this.selection=nn}deleteRole(nn){this.roleService.delete(nn).subscribe(()=>{this.getRoles(),this.modalRef.close(),this.notificationService.show(F.k.success,"Deleted role '" + nn + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}deleteRoleModal(){const nn=this.selection.first().name;this.modalRef=this.modalService.show(Hr.M,{itemDescription:"Role",itemNames:[nn],submitAction:()=>this.deleteRole(nn)})}cloneRole(){const nn=this.selection.first().name;this.modalRef=this.modalService.show(ci.X,{fields:[{type:"text",name:"newName",value:`${nn}_clone`,label:"New name",required:!0}],titleText:"Clone Role",submitButtonText:"Clone Role",onSubmit:Cn=>{this.roleService.clone(nn,Cn.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(F.k.success,"Cloned role '" + Cn.newName + "' from '" + nn + "'")})}})}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.Y36(he),$.Y36(me),$.Y36(Kr.W),$.Y36(Hn.j),$.Y36(Zr.Z),$.Y36(ee.g),$.Y36(In.F),$.Y36(_.p4))},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-role-list"]],features:[$._Bn([{provide:In.F,useValue:new In.F("user-management/roles")}]),$.qOj],decls:4,vars:8,consts:[["columnMode","flex","identifier","name","selectionType","single",3,"data","columns","hasDetails","setExpandedRow","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection","scopes"]],template:function(nn,Cn){1&nn&&($._UZ(0,"cd-user-tabs"),$.TgZ(1,"cd-table",0),$.NdJ("setExpandedRow",function(zi){return Cn.setExpandedRow(zi)})("fetchData",function(){return Cn.getRoles()})("updateSelection",function(zi){return Cn.updateSelection(zi)}),$._UZ(2,"cd-table-actions",1),$._UZ(3,"cd-role-details",2),$.qZA()),2&nn&&($.xp6(1),$.Q6J("data",Cn.roles)("columns",Cn.columns)("hasDetails",!0),$.xp6(1),$.Q6J("permission",Cn.permission)("selection",Cn.selection)("tableActions",Cn.tableActions),$.xp6(1),$.Q6J("selection",Cn.expandedRow)("scopes",Cn.scopes))},directives:[Ur,Ie.a,di.K,Hi],styles:[""]}),Ct})();var Wt=i(16738),Jn=i.n(Wt),ir=i(39219),Lr=i(9837),Vn=i(36169),zr=i(7022),hi=i(51907),Ai=i(33888),Tr=(()=>((Tr||(Tr={})).editing="editing",Tr))();class Nr{}var gn=i(32057),En=i(62862),mr=i(4416),Xt=i(18372),zn=i(60192),vr=i(52266);const si=["removeSelfUserReadUpdatePermissionTpl"];function Ii(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,29),$.qZA())}function no(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,30),$.qZA())}function so(Ct,pr){if(1&Ct&&$._UZ(0,"cd-helper",40),2&Ct){const nn=$.oxw(3);$.s9C("html",nn.passwordPolicyHelpText)}}function Ze(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,41),$.qZA())}function Dr(Ct,pr){if(1&Ct&&($.TgZ(0,"span",28),$._uU(1),$.qZA()),2&Ct){const nn=$.oxw(3);$.xp6(1),$.hij(" ",nn.passwordValuation," ")}}function jt(Ct,pr){if(1&Ct&&($.TgZ(0,"div",10),$.TgZ(1,"label",31),$.ynx(2),$.SDv(3,32),$.BQk(),$.YNc(4,so,1,1,"cd-helper",33),$.qZA(),$.TgZ(5,"div",13),$.TgZ(6,"div",34),$._UZ(7,"input",35),$.TgZ(8,"span",36),$._UZ(9,"button",37),$.qZA(),$.qZA(),$.TgZ(10,"div",38),$._UZ(11,"div",39),$.qZA(),$.YNc(12,Ze,2,0,"span",15),$.YNc(13,Dr,2,1,"span",15),$.qZA(),$.qZA()),2&Ct){$.oxw();const nn=$.MAs(2),Cn=$.oxw();$.xp6(4),$.Q6J("ngIf",Cn.passwordPolicyHelpText.length>0),$.xp6(7),$.Tol(Cn.passwordStrengthLevelClass),$.s9C("title",Cn.passwordValuation),$.xp6(1),$.Q6J("ngIf",Cn.userForm.showError("password",nn,"required")),$.xp6(1),$.Q6J("ngIf",Cn.userForm.showError("password",nn,"passwordPolicy"))}}function xt(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,46),$.qZA())}function mn(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,47),$.qZA())}function Wn(Ct,pr){if(1&Ct&&($.TgZ(0,"div",10),$.TgZ(1,"label",42),$.SDv(2,43),$.qZA(),$.TgZ(3,"div",13),$.TgZ(4,"div",34),$._UZ(5,"input",44),$.TgZ(6,"span",36),$._UZ(7,"button",45),$.qZA(),$.YNc(8,xt,2,0,"span",15),$.qZA(),$.YNc(9,mn,2,0,"span",15),$.qZA(),$.qZA()),2&Ct){$.oxw();const nn=$.MAs(2),Cn=$.oxw();$.xp6(8),$.Q6J("ngIf",Cn.userForm.showError("confirmpassword",nn,"match")),$.xp6(1),$.Q6J("ngIf",Cn.userForm.showError("confirmpassword",nn,"required"))}}function kn(Ct,pr){1&Ct&&($.TgZ(0,"cd-helper",54),$.TgZ(1,"p"),$._uU(2," The Dashboard setting defining the expiration interval of passwords is currently set to "),$.TgZ(3,"strong"),$._uU(4,"0"),$.qZA(),$._uU(5,". This means if a date is set, the user password will only expire once. "),$.qZA(),$.TgZ(6,"p"),$._uU(7," Consider configuring the Dashboard setting "),$.TgZ(8,"a",55),$._uU(9,"USER_PWD_EXPIRATION_SPAN"),$.qZA(),$._uU(10," in order to let passwords expire periodically. "),$.qZA(),$.qZA())}function wn(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,56),$.qZA())}const nr=function(Ct){return{required:Ct}};function Gi(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",10),$.TgZ(1,"label",48),$.ynx(2),$.SDv(3,49),$.BQk(),$.YNc(4,kn,11,0,"cd-helper",50),$.qZA(),$.TgZ(5,"div",13),$.TgZ(6,"div",34),$.TgZ(7,"input",51,52),$.NdJ("click",function(){return $.CHM(nn),$.MAs(8).open()})("keypress",function(){return $.CHM(nn),$.MAs(8).close()}),$.qZA(),$.TgZ(9,"span",36),$.TgZ(10,"button",53),$.NdJ("click",function(){return $.CHM(nn),$.oxw(2).clearExpirationDate()}),$._UZ(11,"i"),$.qZA(),$.qZA(),$.YNc(12,wn,2,0,"span",15),$.qZA(),$.qZA(),$.qZA()}if(2&Ct){$.oxw();const nn=$.MAs(2),Cn=$.oxw(),br=$.MAs(4);$.xp6(1),$.Q6J("ngClass",$.VKq(7,nr,Cn.pwdExpirationSettings.pwdExpirationSpan>0)),$.xp6(3),$.Q6J("ngIf",0==Cn.pwdExpirationSettings.pwdExpirationSpan),$.xp6(3),$.Q6J("ngbPopover",br),$.xp6(4),$.Gre("icon-prepend ",Cn.icons.destroy,""),$.xp6(1),$.Q6J("ngIf",Cn.userForm.showError("pwdExpirationDate",nn,"required"))}}function po(Ct,pr){1&Ct&&($.TgZ(0,"span",28),$.SDv(1,57),$.qZA())}function yo(Ct,pr){if(1&Ct&&($.TgZ(0,"span",58),$._UZ(1,"cd-select-badges",59),$.qZA()),2&Ct){const nn=$.oxw(2);$.xp6(1),$.Q6J("data",nn.userForm.controls.roles.value)("options",nn.allRoles)("messages",nn.messages)}}function Mo(Ct,pr){1&Ct&&($.TgZ(0,"div",10),$.TgZ(1,"div",60),$.TgZ(2,"div",61),$._UZ(3,"input",62),$.TgZ(4,"label",63),$.SDv(5,64),$.qZA(),$.qZA(),$.qZA(),$.qZA())}function Vi(Ct,pr){1&Ct&&($.TgZ(0,"div",10),$.TgZ(1,"div",60),$.TgZ(2,"div",61),$._UZ(3,"input",65),$.TgZ(4,"label",66),$.SDv(5,67),$.qZA(),$.qZA(),$.qZA(),$.qZA())}function cs(Ct,pr){if(1&Ct){const nn=$.EpF();$.TgZ(0,"div",3),$.TgZ(1,"form",4,5),$.TgZ(3,"div",6),$.TgZ(4,"div",7),$.SDv(5,8),$.ALo(6,"titlecase"),$.ALo(7,"upperFirst"),$.qZA(),$.TgZ(8,"div",9),$.TgZ(9,"div",10),$.TgZ(10,"label",11),$.SDv(11,12),$.qZA(),$.TgZ(12,"div",13),$._UZ(13,"input",14),$.YNc(14,Ii,2,0,"span",15),$.YNc(15,no,2,0,"span",15),$.qZA(),$.qZA(),$.YNc(16,jt,14,7,"div",16),$.YNc(17,Wn,10,2,"div",16),$.YNc(18,Gi,13,9,"div",16),$.TgZ(19,"div",10),$.TgZ(20,"label",17),$.SDv(21,18),$.qZA(),$.TgZ(22,"div",13),$._UZ(23,"input",19),$.qZA(),$.qZA(),$.TgZ(24,"div",10),$.TgZ(25,"label",20),$.SDv(26,21),$.qZA(),$.TgZ(27,"div",13),$._UZ(28,"input",22),$.YNc(29,po,2,0,"span",15),$.qZA(),$.qZA(),$.TgZ(30,"div",10),$.TgZ(31,"label",23),$.SDv(32,24),$.qZA(),$.TgZ(33,"div",13),$.YNc(34,yo,2,3,"span",25),$.qZA(),$.qZA(),$.YNc(35,Mo,6,0,"div",16),$.YNc(36,Vi,6,0,"div",16),$.qZA(),$.TgZ(37,"div",26),$.TgZ(38,"cd-form-button-panel",27),$.NdJ("submitActionEvent",function(){return $.CHM(nn),$.oxw().submit()}),$.ALo(39,"titlecase"),$.ALo(40,"upperFirst"),$.qZA(),$.qZA(),$.qZA(),$.qZA(),$.qZA()}if(2&Ct){const nn=$.MAs(2),Cn=$.oxw();$.xp6(1),$.Q6J("formGroup",Cn.userForm),$.xp6(6),$.pQV($.lcZ(6,15,Cn.action))($.lcZ(7,17,Cn.resource)),$.QtT(5),$.xp6(3),$.Q6J("ngClass",$.VKq(23,nr,Cn.mode!==Cn.userFormMode.editing)),$.xp6(4),$.Q6J("ngIf",Cn.userForm.showError("username",nn,"required")),$.xp6(1),$.Q6J("ngIf",Cn.userForm.showError("username",nn,"notUnique")),$.xp6(1),$.Q6J("ngIf",!Cn.authStorageService.isSSO()),$.xp6(1),$.Q6J("ngIf",!Cn.authStorageService.isSSO()),$.xp6(1),$.Q6J("ngIf",!Cn.authStorageService.isSSO()),$.xp6(11),$.Q6J("ngIf",Cn.userForm.showError("email",nn,"email")),$.xp6(5),$.Q6J("ngIf",Cn.allRoles),$.xp6(1),$.Q6J("ngIf",!Cn.isCurrentUser()),$.xp6(1),$.Q6J("ngIf",!Cn.isCurrentUser()&&!Cn.authStorageService.isSSO()),$.xp6(2),$.Q6J("form",Cn.userForm)("submitText",$.lcZ(39,19,Cn.action)+" "+$.lcZ(40,21,Cn.resource))}}function zo(Ct,pr){1&Ct&&($.TgZ(0,"p"),$.TgZ(1,"strong"),$.SDv(2,68),$.qZA(),$.qZA(),$._UZ(3,"br"),$.TgZ(4,"p"),$.SDv(5,69),$.qZA(),$.ynx(6),$.SDv(7,70),$.BQk())}function So(Ct,pr){if(1&Ct&&$._UZ(0,"cd-date-time-picker",71),2&Ct){const nn=$.oxw();$.Q6J("control",nn.userForm.get("pwdExpirationDate"))("hasTime",!1)}}let Si=(()=>{class Ct extends Z.E{constructor(nn,Cn,br,zi,Wo,Do,Js,_s,bs,qo,ra,Ia){super(),this.authService=nn,this.authStorageService=Cn,this.route=br,this.router=zi,this.modalService=Wo,this.roleService=Do,this.userService=Js,this.notificationService=_s,this.actionLabels=bs,this.passwordPolicyService=qo,this.formBuilder=ra,this.settingsService=Ia,this.userFormMode=Tr,this.messages=new zr.a({empty:"There are no roles."}),this.passwordPolicyHelpText="",this.icons=wr.P,this.pwdExpirationFormat="YYYY-MM-DD",this.resource="user",this.createForm(),this.messages=new zr.a({empty:"There are no roles."})}createForm(){this.passwordPolicyService.getHelpText().subscribe(nn=>{this.passwordPolicyHelpText=nn}),this.userForm=this.formBuilder.group({username:["",[u.kI.required],[Q.h.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[Q.h.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(nn,Cn,br)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(Cn),this.passwordValuation=M().defaultTo(br,"")})]],confirmpassword:[""],pwdExpirationDate:[void 0],email:["",[Q.h.email]],roles:[[]],enabled:[!0,[u.kI.required]],pwdUpdateRequired:[!0]},{validators:[Q.h.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE;const nn=[this.roleService.list(),this.settingsService.getStandardSettings()];(0,R.D)(nn).subscribe(Cn=>{if(this.allRoles=M().map(Cn[0],br=>(br.enabled=!0,br)),this.pwdExpirationSettings=new hi.G(Cn[1]),this.mode===this.userFormMode.editing)this.initEdit();else{if(this.pwdExpirationSettings.pwdExpirationSpan>0){const br=this.userForm.get("pwdExpirationDate"),zi=Jn()();zi.add(this.pwdExpirationSettings.pwdExpirationSpan,"day"),br.setValue(zi.format(this.pwdExpirationFormat)),br.setValidators([u.kI.required])}this.loadingReady()}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(nn=>{this.userService.get(nn.username).subscribe(br=>{this.response=M().cloneDeep(br),this.setResponse(br),this.loadingReady()})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(nn){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach(br=>this.userForm.get(br).setValue(nn[br]));const Cn=nn.pwdExpirationDate;Cn&&this.userForm.get("pwdExpirationDate").setValue(Jn()(1e3*Cn).format(this.pwdExpirationFormat))}getRequest(){const nn=new Nr;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach(br=>nn[br]=this.userForm.get(br).value);const Cn=this.userForm.get("pwdExpirationDate").value;if(Cn){const br=Jn()(Cn,this.pwdExpirationFormat);(this.mode!==this.userFormMode.editing||this.response.pwdExpirationDate!==br.unix())&&br.set({hour:23,minute:59,second:59}),nn.pwdExpirationDate=br.unix()}return nn}createAction(){const nn=this.getRequest();this.userService.create(nn).subscribe(()=>{this.notificationService.show(F.k.success,"Created user '" + nn.username + "'"),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const nn={titleText:"Update user",buttonText:"Continue",bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.close(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show(Vn.Y,nn)}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!M().isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(nn=[]){for(const Cn of this.allRoles)if(-1!==nn.indexOf(Cn.name)&&Cn.scopes_permissions.user){const br=Cn.scopes_permissions.user;return["read","update"].every(zi=>-1!==br.indexOf(zi))}return!1}doEditAction(){const nn=this.getRequest();this.userService.update(nn).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(F.k.info,"You were automatically logged out because your roles have been changed.")}):(this.notificationService.show(F.k.success,"Updated user '" + nn.username + "'"),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.Y36(ir.e),$.Y36(Hn.j),$.Y36(p.gz),$.Y36(p.F0),$.Y36(Zr.Z),$.Y36(he),$.Y36(gn.K),$.Y36(ee.g),$.Y36(_.p4),$.Y36(Ai.q),$.Y36(En.O),$.Y36(Lr.g))},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-user-form"]],viewQuery:function(nn,Cn){if(1&nn&&$.Gf(si,7),2&nn){let br;$.iGM(br=$.CRH())&&(Cn.removeSelfUserReadUpdatePermissionTpl=br.first)}},features:[$.qOj],decls:5,vars:1,consts:function(){let pr,nn,Cn,br,zi,Wo,Do,Js,_s,bs,qo,ra,Ia,pa,Bs,Yl,yl,fo,Da,Ao,ls;return pr="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",nn="Username",Cn="Full name",br="Email",zi="Roles",Wo="This field is required.",Do="The username already exists.",Js="Password",_s="This field is required.",bs="Confirm password",qo="Password confirmation doesn't match the password.",ra="This field is required.",Ia="Password expiration date",pa="Password expiration date...",Bs="This field is required.",Yl="Invalid email.",yl="Enabled",fo="User must change password at next logon",Da="You are about to remove \"user read / update\" permissions from your own user.",Ao="If you continue, you will no longer be able to add or remove roles from any user.",ls="Are you sure you want to continue?",[["class","cd-col-form",4,"cdFormLoading"],["removeSelfUserReadUpdatePermissionTpl",""],["popContent",""],[1,"cd-col-form"],["name","userForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],pr,[1,"card-body"],[1,"form-group","row"],["for","username",1,"cd-col-form-label",3,"ngClass"],nn,[1,"cd-col-form-input"],["type","text","placeholder","Username...","id","username","name","username","formControlName","username","autocomplete","off","autofocus","",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],["for","name",1,"cd-col-form-label"],Cn,["type","text","placeholder","Full name...","id","name","name","name","formControlName","name",1,"form-control"],["for","email",1,"cd-col-form-label"],br,["type","email","placeholder","Email...","id","email","name","email","formControlName","email",1,"form-control"],[1,"cd-col-form-label"],zi,["class","no-border full-height",4,"ngIf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],Wo,Do,["for","password",1,"cd-col-form-label"],Js,["class","text-pre-wrap",3,"html",4,"ngIf"],[1,"input-group"],["type","password","placeholder","Password...","id","password","name","password","autocomplete","new-password","formControlName","password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-light"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],[1,"text-pre-wrap",3,"html"],_s,["for","confirmpassword",1,"cd-col-form-label"],bs,["type","password","placeholder","Confirm password...","id","confirmpassword","name","confirmpassword","autocomplete","new-password","formControlName","confirmpassword",1,"form-control"],["type","button","cdPasswordButton","confirmpassword",1,"btn","btn-light"],qo,ra,["for","pwdExpirationDate",1,"cd-col-form-label",3,"ngClass"],Ia,["class","text-pre-wrap",4,"ngIf"],["placeholder",pa,"id","pwdExpirationDate","name","pwdExpirationDate","formControlName","pwdExpirationDate","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["p","ngbPopover"],["type","button",1,"btn","btn-light",3,"click"],[1,"text-pre-wrap"],["routerLink","/mgr-modules/edit/dashboard",1,"alert-link"],Bs,Yl,[1,"no-border","full-height"],[3,"data","options","messages"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","enabled","name","enabled","formControlName","enabled",1,"custom-control-input"],["for","enabled",1,"custom-control-label"],yl,["type","checkbox","id","pwdUpdateRequired","name","pwdUpdateRequired","formControlName","pwdUpdateRequired",1,"custom-control-input"],["for","pwdUpdateRequired",1,"custom-control-label"],fo,Da,Ao,ls,[3,"control","hasTime"]]},template:function(nn,Cn){1&nn&&($.YNc(0,cs,41,25,"div",0),$.YNc(1,zo,8,0,"ng-template",null,1,$.W1O),$.YNc(3,So,1,2,"ng-template",null,2,$.W1O)),2&nn&&$.Q6J("cdFormLoading",Cn.loading)},directives:[Oe.y,u._Y,u.JL,u.sg,ce.V,dt.P,r.mk,ze.o,u.Fj,Ye.b,u.JJ,u.u,je.U,r.O5,Ve.p,mr.C,Xt.S,f.o8,p.yS,zn.m,u.Wl,vr.J],pipes:[r.rS,He.m],styles:[""]}),Ct})();var ai=i(96102),Zn=i(94088);const cr=["userRolesTpl"],yr=["warningTpl"],rr=["durationTpl"];function ri(Ct,pr){if(1&Ct&&($.TgZ(0,"span"),$._uU(1),$.qZA()),2&Ct){const nn=pr.$implicit,Cn=pr.last;$.xp6(1),$.AsE(" ",nn,"",Cn?"":", "," ")}}function ho(Ct,pr){1&Ct&&$.YNc(0,ri,2,2,"span",5),2&Ct&&$.Q6J("ngForOf",pr.value)}function Ti(Ct,pr){if(1&Ct&&($.TgZ(0,"div",6),$.TgZ(1,"div",7),$._uU(2),$.qZA(),$.qZA()),2&Ct){const nn=pr.value,Cn=pr.row,br=$.oxw();$.ekj("border-danger",Cn.remainingDays<br.expirationDangerAlert)("border-warning",Cn.remainingDays<br.expirationWarningAlert&&Cn.remainingDays>=br.expirationDangerAlert),$.xp6(2),$.hij(" ",nn," ")}}function Bo(Ct,pr){if(1&Ct&&$._UZ(0,"i",10),2&Ct){const nn=$.oxw().row,Cn=$.oxw();$.Tol(Cn.icons.warning),$.ekj("icon-danger-color",nn.remainingDays<Cn.expirationDangerAlert)("icon-warning-color",nn.remainingDays<Cn.expirationWarningAlert&&nn.remainingDays>=Cn.expirationDangerAlert)}}function xo(Ct,pr){if(1&Ct&&($.YNc(0,Bo,1,7,"i",8),$.TgZ(1,"span",9),$.ALo(2,"cdDate"),$._uU(3),$.ALo(4,"duration"),$.qZA()),2&Ct){const nn=pr.value,Cn=pr.row,br=$.oxw();$.Q6J("ngIf",Cn.remainingDays<br.expirationWarningAlert),$.xp6(1),$.s9C("title",$.lcZ(2,3,nn)),$.xp6(2),$.Oqu($.lcZ(4,5,Cn.remainingTimeWithoutSeconds/1e3))}}let ar=(()=>{class Ct{constructor(nn,Cn,br,zi,Wo,Do,Js,_s){this.userService=nn,this.emptyPipe=Cn,this.modalService=br,this.notificationService=zi,this.authStorageService=Wo,this.urlBuilder=Do,this.settingsService=Js,this.actionLabels=_s,this.selection=new Qr.r,this.icons=wr.P,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:wr.P.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:wr.P.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:wr.P.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Username",prop:"username",flexGrow:1,cellTemplate:this.warningTpl},{name:"Name",prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:"Email",prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:"Roles",prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:"Enabled",prop:"enabled",flexGrow:1,cellTransformation:Ir.e.checkIcon},{name:"Password expires",prop:"pwdExpirationDate",flexGrow:1,cellTemplate:this.durationTpl}],this.settingsService.getValues(["USER_PWD_EXPIRATION_WARNING_1","USER_PWD_EXPIRATION_WARNING_2"]).subscribe(Cn=>{this.expirationWarningAlert=Cn.USER_PWD_EXPIRATION_WARNING_1,this.expirationDangerAlert=Cn.USER_PWD_EXPIRATION_WARNING_2})}getUsers(){this.userService.list().subscribe(nn=>{nn.forEach(Cn=>{Cn.remainingTimeWithoutSeconds=0,Cn.pwdExpirationDate&&Cn.pwdExpirationDate>0&&(Cn.pwdExpirationDate=1e3*Cn.pwdExpirationDate,Cn.remainingTimeWithoutSeconds=this.getRemainingTimeWithoutSeconds(Cn.pwdExpirationDate),Cn.remainingDays=this.getRemainingDays(Cn.pwdExpirationDate))}),this.users=nn})}updateSelection(nn){this.selection=nn}deleteUser(nn){this.userService.delete(nn).subscribe(()=>{this.getUsers(),this.modalRef.close(),this.notificationService.show(F.k.success,"Deleted user '" + nn + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}deleteUserModal(){const nn=this.authStorageService.getUsername(),Cn=this.selection.first().username;nn!==Cn?this.modalRef=this.modalService.show(Hr.M,{itemDescription:"User",itemNames:[Cn],submitAction:()=>this.deleteUser(Cn)}):this.notificationService.show(F.k.error,"Failed to delete user '" + Cn + "'","You are currently logged in as '" + Cn + "'.")}getWarningIconClass(nn){return null===nn||this.expirationWarningAlert>10?"":this.getRemainingDays(nn)<=this.expirationDangerAlert?"icon-danger-color":"icon-warning-color"}getWarningClass(nn){return null===nn||this.expirationWarningAlert>10?"":this.getRemainingDays(nn)<=this.expirationDangerAlert?"border-danger":"border-warning"}getRemainingDays(nn){if(void 0!==nn&&null!=nn)return nn<0?0:Math.max(0,Math.floor(this.getRemainingTime(nn)/864e5))}getRemainingTimeWithoutSeconds(nn){const Cn=this.getRemainingTime(nn);return 60*Math.floor(Cn/6e4)*1e3}getRemainingTime(nn){return nn-Date.now()}}return Ct.\u0275fac=function(nn){return new(nn||Ct)($.Y36(gn.K),$.Y36(Kr.W),$.Y36(Zr.Z),$.Y36(ee.g),$.Y36(Hn.j),$.Y36(In.F),$.Y36(Lr.g),$.Y36(_.p4))},Ct.\u0275cmp=$.Xpm({type:Ct,selectors:[["cd-user-list"]],viewQuery:function(nn,Cn){if(1&nn&&($.Gf(cr,7),$.Gf(yr,7),$.Gf(rr,7)),2&nn){let br;$.iGM(br=$.CRH())&&(Cn.userRolesTpl=br.first),$.iGM(br=$.CRH())&&(Cn.warningTpl=br.first),$.iGM(br=$.CRH())&&(Cn.durationTpl=br.first)}},features:[$._Bn([{provide:In.F,useValue:new In.F("user-management/users")}])],decls:9,vars:5,consts:function(){let pr;return pr="User's password is about to expire",[["columnMode","flex","identifier","username","selectionType","single",3,"data","columns","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["userRolesTpl",""],["warningTpl",""],["durationTpl",""],[4,"ngFor","ngForOf"],[1,"border-margin"],[1,"warning-content"],["title",pr,3,"icon-danger-color","icon-warning-color","class",4,"ngIf"],[3,"title"],["title",pr]]},template:function(nn,Cn){1&nn&&($._UZ(0,"cd-user-tabs"),$.TgZ(1,"cd-table",0),$.NdJ("fetchData",function(){return Cn.getUsers()})("updateSelection",function(zi){return Cn.updateSelection(zi)}),$._UZ(2,"cd-table-actions",1),$.qZA(),$.YNc(3,ho,1,1,"ng-template",null,2,$.W1O),$.YNc(5,Ti,3,5,"ng-template",null,3,$.W1O),$.YNc(7,xo,5,7,"ng-template",null,4,$.W1O)),2&nn&&($.xp6(1),$.Q6J("data",Cn.users)("columns",Cn.columns),$.xp6(1),$.Q6J("permission",Cn.permission)("selection",Cn.selection)("tableActions",Cn.tableActions))},directives:[Ur,Ie.a,di.K,r.sg,r.O5],pipes:[ai.N,Zn.u],styles:[".border-margin[_ngcontent-%COMP%]{border-left:3px solid transparent;height:calc(100% + 10px);margin-bottom:-5px;margin-left:-5px;margin-top:-5px}.warning-content[_ngcontent-%COMP%]{height:100%;padding-bottom:5px;padding-left:5px;padding-top:5px}"]}),Ct})(),ln=(()=>{class Ct{}return Ct.\u0275fac=function(nn){return new(nn||Ct)},Ct.\u0275mod=$.oAB({type:Ct}),Ct.\u0275inj=$.cJS({imports:[[r.ez,u.u5,u.UX,y.m,f.Oz,f.dT,e.b,p.Bz]]}),Ct})();const Ht=[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:{breadcrumbs:"Users"},children:[{path:"",component:ar},{path:_.MQ.CREATE,component:Si,data:{breadcrumbs:_.Qn.CREATE}},{path:`${_.MQ.EDIT}/:username`,component:Si,data:{breadcrumbs:_.Qn.EDIT}}]},{path:"roles",data:{breadcrumbs:"Roles"},children:[{path:"",component:On},{path:_.MQ.CREATE,component:zt,data:{breadcrumbs:_.Qn.CREATE}},{path:`${_.MQ.EDIT}/:name`,component:zt,data:{breadcrumbs:_.Qn.EDIT}}]}];let cn=(()=>{class Ct{}return Ct.\u0275fac=function(nn){return new(nn||Ct)},Ct.\u0275mod=$.oAB({type:Ct}),Ct.\u0275inj=$.cJS({imports:[[ln,p.Bz.forChild(Ht)]]}),Ct})()},26504:(v,S,i)=>{"use strict";i.d(S,{s9:()=>u,_2:()=>p,mM:()=>e});var r=i(65862);class u extends Error{}class p extends u{constructor(){super(...arguments),this.header="Page Not Found",this.message="Sorry, we couldn\u2019t find what you were looking for.\n  The page you requested may have been changed or moved.",this.icon=r.P.warning}}class e extends u{constructor(){super(...arguments),this.header="User Denied",this.message="Sorry, the user does not exist in Ceph.\n  You'll be logged out from the Identity Provider when you retry logging in.",this.icon=r.P.warning}}},76189:(v,S,i)=>{"use strict";i.d(S,{S:()=>r});class r{getVersionHeaderValue(p,f){return`application/vnd.ceph.api.v${p}.${f}+json`}}},39219:(v,S,i)=>{"use strict";i.d(S,{e:()=>T});var r=i(23815),p=i(68307),f=i(74788),e=i(74937),_=i(58497),y=i(6283);let T=(()=>{class M{constructor(F,Z,J,Q){this.authStorageService=F,this.http=Z,this.router=J,this.route=Q}check(F){return this.http.post("api/auth/check",{token:F})}login(F){return this.http.post("api/auth",F).pipe((0,p.b)(Z=>{this.authStorageService.set(Z.username,Z.permissions,Z.sso,Z.pwdExpirationDate,Z.pwdUpdateRequired)}))}logout(F=null){return this.http.post("api/auth/logout",null).subscribe(Z=>{this.authStorageService.remove();const J=r.get(this.route.snapshot.queryParams,"returnUrl","/login");this.router.navigate([J],{skipLocationChange:!0}),F&&F(),window.location.replace(Z.redirect_url)})}}return M.\u0275fac=function(F){return new(F||M)(f.LFG(e.j),f.LFG(_.eN),f.LFG(y.F0),f.LFG(y.gz))},M.\u0275prov=f.Yz7({token:M,factory:M.\u0275fac,providedIn:"root"}),M})()},64724:(v,S,i)=>{"use strict";i.d(S,{e:()=>p});var r=i(74788),u=i(58497);let p=(()=>{class f{constructor(_){this.http=_}findValue(_,y){if(_.value)return _.value.find(T=>T.section===y)}getValue(_,y){let T=this.findValue(_,y);if(!T){const M=y.indexOf(".");-1!==M&&(T=this.findValue(_,y.substring(0,M)))}return T||(T=this.findValue(_,"global")),T?T.value:_.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(_){return this.http.get(`api/cluster_conf/${_}`)}filter(_){return this.http.get(`api/cluster_conf/filter?names=${_.join(",")}`)}create(_){return this.http.post("api/cluster_conf/",_)}delete(_,y){return this.http.delete(`api/cluster_conf/${_}?section=${y}`)}bulkCreate(_){return this.http.put("api/cluster_conf/",_)}}return f.\u0275fac=function(_){return new(_||f)(r.LFG(u.eN))},f.\u0275prov=r.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})()},83608:(v,S,i)=>{"use strict";i.d(S,{H:()=>p});var r=i(74788),u=i(58497);let p=(()=>{class f{constructor(_){this.http=_,this.apiPath="api/crush_rule",this.formTooltips={root:"The name of the node under which data should be placed.",failure_domain:"The type of CRUSH nodes across which we should separate replicas.",device_class:"The device class data should be placed on."}}create(_){return this.http.post(this.apiPath,_,{observe:"response"})}delete(_){return this.http.delete(`${this.apiPath}/${_}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return f.\u0275fac=function(_){return new(_||f)(r.LFG(u.eN))},f.\u0275prov=r.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})()},7273:(v,S,i)=>{"use strict";i.d(S,{N:()=>p});var r=i(74788),u=i(58497);let p=(()=>{class f{constructor(_){this.http=_,this.url="api/mgr/module"}list(){return this.http.get(`${this.url}`)}getConfig(_){return this.http.get(`${this.url}/${_}`)}updateConfig(_,y){return this.http.put(`${this.url}/${_}`,{config:y})}enable(_){return this.http.post(`${this.url}/${_}/enable`,null)}disable(_){return this.http.post(`${this.url}/${_}/disable`,null)}getOptions(_){return this.http.get(`${this.url}/${_}/options`)}}return f.\u0275fac=function(_){return new(_||f)(r.LFG(u.eN))},f.\u0275prov=r.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})()},80842:(v,S,i)=>{"use strict";i.d(S,{q:()=>y});var r=i(64762),u=i(58497),p=i(88002),f=i(93523),e=i(34089),_=i(74788);let y=class{constructor(M,R){this.http=M,this.rbdConfigurationService=R,this.apiPath="api/pool"}create(M){return this.http.post(this.apiPath,M,{observe:"response"})}update(M){let R;return M.hasOwnProperty("srcpool")?(R=M.srcpool,delete M.srcpool):(R=M.pool,delete M.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(R)}`,M,{observe:"response"})}delete(M){return this.http.delete(`${this.apiPath}/${M}`,{observe:"response"})}get(M){return this.http.get(`${this.apiPath}/${M}`)}getList(){return this.http.get(`${this.apiPath}?stats=true`)}getConfiguration(M){return this.http.get(`${this.apiPath}/${M}/configuration`).pipe((0,p.U)(R=>R.map(F=>Object.assign(F,this.rbdConfigurationService.getOptionByName(F.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(M=[]){const R=M.join(",");return this.http.get(`${this.apiPath}?attrs=${R}`).toPromise().then(F=>F)}};y.\u0275fac=function(M){return new(M||y)(_.LFG(u.eN),_.LFG(e.n))},y.\u0275prov=_.Yz7({token:y,factory:y.\u0275fac,providedIn:"root"}),y=(0,r.gn)([f.o,(0,r.w6)("design:paramtypes",[u.eN,e.n])],y)},95152:(v,S,i)=>{"use strict";i.d(S,{o:()=>Z});var r=i(64762),u=i(58497),p=i(23815),f=i.n(p),e=i(25917),_=i(96736),y=i(5304),T=i(76189),M=i(20523),R=i(93523),F=i(74788);let Z=class extends T.S{constructor(Q,ee){super(),this.http=Q,this.rgwDaemonService=ee,this.url="api/rgw/bucket"}list(Q=!1,ee=""){return this.rgwDaemonService.request(ue=>(ue=ue.append("stats",Q.toString()),ee&&(ue=ue.append("uid",ee)),this.http.get(this.url,{headers:{Accept:this.getVersionHeaderValue(1,1)},params:ue})))}get(Q){return this.rgwDaemonService.request(ee=>this.http.get(`${this.url}/${Q}`,{params:ee}))}create(Q,ee,ue,ae,$,se,ve){return this.rgwDaemonService.request(oe=>this.http.post(this.url,null,{params:new u.LE({fromObject:{bucket:Q,uid:ee,zonegroup:ue,placement_target:ae,lock_enabled:String($),lock_mode:se,lock_retention_period_days:ve,daemon_name:oe.get("daemon_name")}})}))}update(Q,ee,ue,ae,$,se,ve,oe,he){return this.rgwDaemonService.request(me=>(me=(me=(me=(me=(me=(me=(me=(me=me.append("bucket_id",ee)).append("uid",ue)).append("versioning_state",ae)).append("mfa_delete",$)).append("mfa_token_serial",se)).append("mfa_token_pin",ve)).append("lock_mode",oe)).append("lock_retention_period_days",he),this.http.put(`${this.url}/${Q}`,null,{params:me})))}delete(Q,ee=!0){return this.rgwDaemonService.request(ue=>(ue=ue.append("purge_objects",ee?"true":"false"),this.http.delete(`${this.url}/${Q}`,{params:ue})))}exists(Q){return this.get(Q).pipe((0,_.h)(!0),(0,y.K)(ee=>(f().isFunction(ee.preventDefault)&&ee.preventDefault(),(0,e.of)(!1))))}getLockDays(Q){return Q.lock_retention_period_years>0?Math.floor(365.242*Q.lock_retention_period_years):Q.lock_retention_period_days||0}};Z.\u0275fac=function(Q){return new(Q||Z)(F.LFG(u.eN),F.LFG(M.b))},Z.\u0275prov=F.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z=(0,r.gn)([R.o,(0,r.w6)("design:paramtypes",[u.eN,M.b])],Z)},20523:(v,S,i)=>{"use strict";i.d(S,{b:()=>J});var r=i(64762),u=i(58497),p=i(23815),f=i.n(p),e=i(26215),_=i(40205),y=i(25917),T=i(68307),M=i(19773),R=i(15257),F=i(93523),Z=i(74788);let J=class{constructor(ee){this.http=ee,this.url="api/rgw/daemon",this.daemons=new e.X([]),this.daemons$=this.daemons.asObservable(),this.selectedDaemon=new e.X(null),this.selectedDaemon$=this.selectedDaemon.asObservable()}list(){return this.http.get(this.url).pipe((0,T.b)(ee=>{this.daemons.next(ee);const ue=this.selectedDaemon.getValue();(f().isEmpty(ue)||void 0===f().find(ee,{id:ue.id}))&&this.selectDefaultDaemon(ee)}))}get(ee){return this.http.get(`${this.url}/${ee}`)}selectDaemon(ee){this.selectedDaemon.next(ee)}selectDefaultDaemon(ee){if(0===ee.length)return null;for(const ue of ee)if(ue.default)return this.selectDaemon(ue),ue;return this.selectDaemon(ee[0]),ee[0]}request(ee){return this.selectedDaemon.pipe((0,M.zg)(ue=>f().isEmpty(ue)?this.list().pipe((0,M.zg)(ae=>f().isEmpty(ae)?(0,_._)("No RGW daemons found!"):this.selectedDaemon$)):(0,y.of)(ue)),(0,R.q)(1),(0,M.zg)(ue=>{let ae=new u.LE;return ae=ae.append("daemon_name",ue.id),ee(ae)}))}};J.\u0275fac=function(ee){return new(ee||J)(Z.LFG(u.eN))},J.\u0275prov=Z.Yz7({token:J,factory:J.\u0275fac,providedIn:"root"}),J=(0,r.gn)([F.o,(0,r.w6)("design:paramtypes",[u.eN])],J)},33394:(v,S,i)=>{"use strict";i.d(S,{I:()=>T});var r=i(64762),u=i(58497),p=i(19773),f=i(88002),e=i(20523),_=i(93523),y=i(74788);let T=class{constructor(R,F){this.http=R,this.rgwDaemonService=F,this.url="api/rgw/site"}get(R){return this.rgwDaemonService.request(F=>(R&&(F=F.append("query",R)),this.http.get(this.url,{params:F})))}isDefaultRealm(){return this.get("default-realm").pipe((0,p.zg)(R=>this.rgwDaemonService.selectedDaemon$.pipe((0,f.U)(F=>F.realm_name===R))))}};T.\u0275fac=function(R){return new(R||T)(y.LFG(u.eN),y.LFG(e.b))},T.\u0275prov=y.Yz7({token:T,factory:T.\u0275fac,providedIn:"root"}),T=(0,r.gn)([_.o,(0,r.w6)("design:paramtypes",[u.eN,e.b])],T)},9837:(v,S,i)=>{"use strict";i.d(S,{g:()=>y});var r=i(23815),u=i.n(r),p=i(88002),f=i(74788),e=i(58497);let y=(()=>{class T{constructor(R){this.http=R,this.settings={}}getValues(R){return u().isArray(R)&&(R=R.join(",")),this.http.get(`api/settings?names=${R}`).pipe((0,p.U)(F=>{const Z={};return u().forEach(F,J=>{u().set(Z,J.name,J.value)}),Z}))}ifSettingConfigured(R,F,Z){const J=this.settings[R];void 0===J?this.http.get(R).subscribe(Q=>{this.settings[R]=this.getSettingsValue(Q),this.ifSettingConfigured(R,F,Z)},Q=>{401!==Q.status&&(this.settings[R]="")}):""!==J?F(J):Z&&Z()}disableSetting(R){this.settings[R]=""}getSettingsValue(R){return R.value||R.instance||""}validateGrafanaDashboardUrl(R){return this.http.get(`api/grafana/validation/${R}`)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return T.\u0275fac=function(R){return new(R||T)(f.LFG(e.eN))},T.\u0275prov=f.Yz7({token:T,factory:T.\u0275fac,providedIn:"root"}),T})()},32057:(v,S,i)=>{"use strict";i.d(S,{K:()=>_});var r=i(25917),u=i(96736),p=i(5304),f=i(74788),e=i(58497);let _=(()=>{class y{constructor(M){this.http=M}list(){return this.http.get("api/user")}delete(M){return this.http.delete(`api/user/${M}`)}get(M){return this.http.get(`api/user/${M}`)}create(M){return this.http.post("api/user",M)}update(M){return this.http.put(`api/user/${M.username}`,M)}changePassword(M,R,F){return this.http.post(`api/user/${M}/change_password`,{old_password:R,new_password:F})}validateUserName(M){return this.get(M).pipe((0,u.h)(!0),(0,p.K)(R=>(R.preventDefault(),(0,r.of)(!1))))}validatePassword(M,R=null,F=null){return this.http.post("api/user/validate_password",{password:M,username:R,old_password:F})}}return y.\u0275fac=function(M){return new(M||y)(f.LFG(e.eN))},y.\u0275prov=f.Yz7({token:y,factory:y.\u0275fac,providedIn:"root"}),y})()},51295:(v,S,i)=>{"use strict";i.d(S,{T:()=>p});var r=i(23815),u=i.n(r);class p{static updateChanged(e,_){let y=!1;return Object.keys(_).forEach(T=>{const M=_[T];u().isEqual(M,e[T])||(e[T]=M,y=!0)}),y}static cdVersionHeader(e,_){return`application/vnd.ceph.api.v${e}.${_}+json`}}},99475:(v,S,i)=>{"use strict";i.d(S,{P:()=>r});class r{propertyValue(p){return getComputedStyle(document.body).getPropertyValue(`--${p}`)}}},68136:(v,S,i)=>{"use strict";i.d(S,{o:()=>u});var r=i(71225);class u{constructor(f){this.ngZone=f}setExpandedRow(f){this.expandedRow=f}setTableRefreshTimeout(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.tableStatus=new r.c("warning","The user list data might be stale. If needed, you can manually reload it.")})},1e4)})}}},69158:(v,S,i)=>{"use strict";i.d(S,{E:()=>p});var r=i(91801),u=i(71225);class p extends u.c{constructor(e=r.T.ValueOk,_=""){switch(super(),e){case r.T.ValueOk:this.type="light",this.msg="";break;case r.T.ValueNone:this.type="info",this.msg=(_?"Retrieving data for " + _ + ".":"Retrieving data.")+" "+"Please wait...";break;case r.T.ValueStale:this.type="warning",this.msg=_?"Displaying previously cached data for " + _ + ".":"Displaying previously cached data.";break;case r.T.ValueException:this.type="danger",this.msg=(_?"Could not load data for " + _ + ".":"Could not load data.")+" "+"Please check the cluster health."}}}},71225:(v,S,i)=>{"use strict";i.d(S,{c:()=>r});class r{constructor(p="light",f=""){this.type=p,this.msg=f}}},34501:(v,S,i)=>{"use strict";i.d(S,{G:()=>ue});var r=i(74788),u=i(65862),p=i(38549),f=i(12057);const e=function(ae){return[ae]};function _(ae,$){if(1&ae&&(r.TgZ(0,"td",8),r._UZ(1,"i",9),r.qZA()),2&ae){const se=r.oxw(2);r.xp6(1),r.MT6("alert-",se.bootstrapClass," ",se.typeIcon,""),r.Q6J("ngClass",r.VKq(5,e,se.icons.large3x))}}function y(ae,$){if(1&ae&&(r.TgZ(0,"td",10),r._uU(1),r.qZA()),2&ae){const se=r.oxw(2);r.xp6(1),r.Oqu(se.title)}}function T(ae,$){1&ae&&r.GkF(0)}function M(ae,$){if(1&ae&&(r.ynx(0),r.TgZ(1,"tr"),r.YNc(2,_,2,7,"td",4),r.YNc(3,y,2,1,"td",5),r.qZA(),r.TgZ(4,"tr"),r.TgZ(5,"td",6),r.YNc(6,T,1,0,"ng-container",7),r.qZA(),r.qZA(),r.BQk()),2&ae){const se=r.oxw(),ve=r.MAs(6);r.xp6(2),r.Q6J("ngIf",se.showIcon),r.xp6(1),r.Q6J("ngIf",se.showTitle),r.xp6(3),r.Q6J("ngTemplateOutlet",ve)}}function R(ae,$){if(1&ae&&(r.TgZ(0,"td",12),r._UZ(1,"i",13),r.qZA()),2&ae){const se=r.oxw(2);r.xp6(1),r.MT6("alert-",se.bootstrapClass," ",se.typeIcon,"")}}function F(ae,$){if(1&ae&&(r.TgZ(0,"td",10),r._uU(1),r.qZA()),2&ae){const se=r.oxw(2);r.xp6(1),r.Oqu(se.title)}}function Z(ae,$){1&ae&&r.GkF(0)}function J(ae,$){if(1&ae&&(r.TgZ(0,"tr"),r.YNc(1,R,2,4,"td",11),r.YNc(2,F,2,1,"td",5),r.TgZ(3,"td",6),r.YNc(4,Z,1,0,"ng-container",7),r.qZA(),r.qZA()),2&ae){const se=r.oxw(),ve=r.MAs(6);r.xp6(1),r.Q6J("ngIf",se.showIcon),r.xp6(1),r.Q6J("ngIf",se.showTitle),r.xp6(2),r.Q6J("ngTemplateOutlet",ve)}}function Q(ae,$){1&ae&&r.Hsn(0)}const ee=["*"];let ue=(()=>{class ae{constructor(){this.title="",this.bootstrapClass="",this.size="normal",this.showIcon=!0,this.showTitle=!0,this.dismissible=!1,this.dismissed=new r.vpe,this.icons=u.P}ngOnInit(){switch(this.type){case"warning":this.title=this.title||"Warning",this.typeIcon=this.typeIcon||u.P.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||"Error",this.typeIcon=this.typeIcon||u.P.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||"Information",this.typeIcon=this.typeIcon||u.P.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||"Success",this.typeIcon=this.typeIcon||u.P.check,this.bootstrapClass=this.bootstrapClass||"success";break;case"danger":this.title=this.title||"Danger",this.typeIcon=this.typeIcon||u.P.warning,this.bootstrapClass=this.bootstrapClass||"danger"}}onClose(){this.dismissed.emit()}}return ae.\u0275fac=function(se){return new(se||ae)},ae.\u0275cmp=r.Xpm({type:ae,selectors:[["cd-alert-panel"]],inputs:{title:"title",bootstrapClass:"bootstrapClass",type:"type",typeIcon:"typeIcon",size:"size",showIcon:"showIcon",showTitle:"showTitle",dismissible:"dismissible"},outputs:{dismissed:"dismissed"},ngContentSelectors:ee,decls:7,vars:4,consts:[[3,"type","dismissible","closed"],[4,"ngIf","ngIfElse"],["slim",""],["content",""],["rowspan","2","class","alert-panel-icon",4,"ngIf"],["class","alert-panel-title",4,"ngIf"],[1,"alert-panel-text"],[4,"ngTemplateOutlet"],["rowspan","2",1,"alert-panel-icon"],["aria-hidden","true",3,"ngClass"],[1,"alert-panel-title"],["class","alert-panel-icon",4,"ngIf"],[1,"alert-panel-icon"],["aria-hidden","true"]],template:function(se,ve){if(1&se&&(r.F$t(),r.TgZ(0,"ngb-alert",0),r.NdJ("closed",function(){return ve.onClose()}),r.TgZ(1,"table"),r.YNc(2,M,7,3,"ng-container",1),r.YNc(3,J,5,3,"ng-template",null,2,r.W1O),r.qZA(),r.qZA(),r.YNc(5,Q,1,0,"ng-template",null,3,r.W1O)),2&se){const oe=r.MAs(4);r.s9C("type",ve.bootstrapClass),r.Q6J("dismissible",ve.dismissible),r.xp6(2),r.Q6J("ngIf","normal"===ve.size)("ngIfElse",oe)}},directives:[p.xm,f.O5,f.tP,f.mk],styles:[".alert-panel-icon[_ngcontent-%COMP%]{padding-right:.5em;vertical-align:top}.alert-panel-title[_ngcontent-%COMP%]{font-weight:bold}.alert[_ngcontent-%COMP%]{margin-bottom:0}"]}),ae})()},13472:(v,S,i)=>{"use strict";i.d(S,{W:()=>e});var r=i(74788),u=i(79512),p=i(12057),f=i(87925);let e=(()=>{class _{constructor(T,M){this.location=T,this.actionLabels=M,this.backAction=new r.vpe,this.name=this.actionLabels.CANCEL}back(){0===this.backAction.observers.length?this.location.back():this.backAction.emit()}}return _.\u0275fac=function(T){return new(T||_)(r.Y36(p.Ye),r.Y36(u.p4))},_.\u0275cmp=r.Xpm({type:_,selectors:[["cd-back-button"]],inputs:{name:"name"},outputs:{backAction:"backAction"},decls:2,vars:1,consts:[["type","button",1,"btn","btn-light","tc_backButton",3,"click"]],template:function(T,M){1&T&&(r.TgZ(0,"button",0),r.NdJ("click",function(){return M.back()}),r._uU(1),r.qZA()),2&T&&(r.xp6(1),r.hij(" ",M.name,"\n"))},directives:[f.o],styles:[""]}),_})()},15626:(v,S,i)=>{"use strict";i.d(S,{K:()=>F});var r=i(12057),u=i(24751),p=i(6283),f=i(38549),e=i(11971),_=i(7194),y=i(34863),T=i(35540),M=i(85953),R=i(74788);let F=(()=>{class Z{}return Z.\u0275fac=function(Q){return new(Q||Z)},Z.\u0275mod=R.oAB({type:Z}),Z.\u0275inj=R.cJS({providers:[],imports:[[r.ez,u.u5,u.UX,f._A,f.dT,f.ZQ,f.HK,_.m9,u.UX,M.D,T.o,f.XC,e.w,y.t,p.Bz,f.M,f.UL]]}),Z})()},36169:(v,S,i)=>{"use strict";i.d(S,{Y:()=>F});var r=i(24751),u=i(74788),p=i(38549),f=i(60312),e=i(12057),_=i(41582),y=i(30839);function T(Z,J){1&Z&&(u.TgZ(0,"span",11),u._UZ(1,"i",12),u.qZA())}function M(Z,J){1&Z&&u.GkF(0)}function R(Z,J){if(1&Z&&(u.TgZ(0,"p"),u._uU(1),u.qZA()),2&Z){const Q=u.oxw();u.xp6(1),u.hij(" ",Q.description," ")}}let F=(()=>{class Z{constructor(Q){this.activeModal=Q,this.warning=!1,this.showSubmit=!0,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new r.cw({})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onCancel&&this.canceled&&this.onCancel()}cancel(){this.canceled=!0,this.activeModal.close()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}return Z.\u0275fac=function(Q){return new(Q||Z)(u.Y36(p.Kz))},Z.\u0275cmp=u.Xpm({type:Z,selectors:[["cd-confirmation-modal"]],decls:12,vars:9,consts:[[3,"hide"],[1,"modal-title"],["class","text-warning",4,"ngIf"],[1,"modal-content"],["name","confirmationForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent","backActionEvent"],[1,"text-warning"],[1,"fa","fa-exclamation-triangle","fa-1x"]],template:function(Q,ee){1&Q&&(u.TgZ(0,"cd-modal",0),u.NdJ("hide",function(){return ee.cancel()}),u.ynx(1,1),u.YNc(2,T,2,0,"span",2),u._uU(3),u.BQk(),u.ynx(4,3),u.TgZ(5,"form",4,5),u.TgZ(7,"div",6),u.YNc(8,M,1,0,"ng-container",7),u.YNc(9,R,2,1,"p",8),u.qZA(),u.TgZ(10,"div",9),u.TgZ(11,"cd-form-button-panel",10),u.NdJ("submitActionEvent",function(){return ee.onSubmit(ee.confirmationForm.value)})("backActionEvent",function(){return ee.boundCancel()}),u.qZA(),u.qZA(),u.qZA(),u.BQk(),u.qZA()),2&Q&&(u.xp6(2),u.Q6J("ngIf",ee.warning),u.xp6(1),u.Oqu(ee.titleText),u.xp6(2),u.Q6J("formGroup",ee.confirmationForm),u.xp6(3),u.Q6J("ngTemplateOutlet",ee.bodyTpl)("ngTemplateOutletContext",ee.bodyContext),u.xp6(1),u.Q6J("ngIf",ee.description),u.xp6(2),u.Q6J("form",ee.confirmationForm)("submitText",ee.buttonText)("showSubmit",ee.showSubmit))},directives:[f.z,e.O5,r._Y,r.JL,r.sg,_.V,e.tP,y.p],styles:[""]}),Z})()},58039:(v,S,i)=>{"use strict";i.d(S,{s:()=>T});var r=i(97057),u=i(65862),p=i(74788),f=i(91376),e=i(87925),_=i(12057);const y=function(M){return[M]};let T=(()=>{class M{constructor(F){this.toastr=F,this.byId=!0,this.icons=u.P}getText(){return document.getElementById(this.source).value}onClick(){try{const F=(0,r.qY)(),Z=this.byId?this.getText():this.source,J=()=>{this.toastr.success("Copied text to the clipboard successfully.")};["firefox","ie","ios","safari"].includes(F.name)?navigator.clipboard.writeText(Z).then(()=>J()):navigator.permissions.query({name:"clipboard-write"}).then(Q=>{("granted"===Q.state||"prompt"===Q.state)&&navigator.clipboard.writeText(Z).then(()=>J())})}catch(F){this.toastr.error("Failed to copy text to the clipboard.")}}}return M.\u0275fac=function(F){return new(F||M)(p.Y36(f._W))},M.\u0275cmp=p.Xpm({type:M,selectors:[["cd-copy-2-clipboard-button"]],hostBindings:function(F,Z){1&F&&p.NdJ("click",function(){return Z.onClick()})},inputs:{source:"source",byId:"byId"},decls:2,vars:3,consts:function(){let R;return R="Copy to Clipboard",[["type","button","title",R,1,"btn","btn-light",3,"click"],[3,"ngClass"]]},template:function(F,Z){1&F&&(p.TgZ(0,"button",0),p.NdJ("click",function(){return Z.onClick()}),p._UZ(1,"i",1),p.qZA()),2&F&&(p.xp6(1),p.Q6J("ngClass",p.VKq(1,y,Z.icons.clipboard)))},directives:[e.o,_.mk],styles:[""]}),M})()},30982:(v,S,i)=>{"use strict";i.d(S,{M:()=>Oe});var r=i(24751),u=i(95463),p=i(39749),f=i(74788),e=i(38549),_=i(60312),y=i(12057),T=i(41582),M=i(56310),R=i(87925),F=i(94276),Z=i(82945),J=i(30839);function Q(ce,dt){1&ce&&f.GkF(0)}function ee(ce,dt){1&ce&&f.GkF(0)}function ue(ce,dt){if(1&ce&&(f.TgZ(0,"p"),f.tHW(1,21),f.ALo(2,"lowercase"),f._UZ(3,"strong"),f.N_p(),f.qZA()),2&ce){const ze=f.oxw(2);f.xp6(3),f.pQV(f.lcZ(2,2,ze.actionDescription))(ze.itemNames[0]),f.QtT(1)}}function ae(ce,dt){if(1&ce&&(f.TgZ(0,"li"),f.TgZ(1,"strong"),f._uU(2),f.qZA(),f.qZA()),2&ce){const ze=dt.$implicit;f.xp6(2),f.Oqu(ze)}}function $(ce,dt){if(1&ce&&(f.TgZ(0,"p"),f.SDv(1,22),f.ALo(2,"lowercase"),f.qZA(),f.TgZ(3,"ul"),f.YNc(4,ae,3,1,"li",23),f.qZA()),2&ce){const ze=f.oxw(2);f.xp6(2),f.pQV(f.lcZ(2,2,ze.actionDescription)),f.QtT(1),f.xp6(2),f.Q6J("ngForOf",ze.itemNames)}}function se(ce,dt){if(1&ce&&(f.TgZ(0,"span"),f.YNc(1,ue,4,4,"p",10),f.YNc(2,$,5,4,"ng-template",null,20,f.W1O),f.qZA()),2&ce){const ze=f.MAs(3),Ye=f.oxw();f.xp6(1),f.Q6J("ngIf",1===Ye.itemNames.length)("ngIfElse",ze)}}function ve(ce,dt){if(1&ce&&(f.TgZ(0,"p"),f.SDv(1,24),f.ALo(2,"lowercase"),f.qZA()),2&ce){const ze=f.oxw();f.xp6(2),f.pQV(f.lcZ(2,2,ze.actionDescription))(ze.itemDescription),f.QtT(1)}}function oe(ce,dt){1&ce&&f.GkF(0)}function he(ce,dt){if(1&ce&&(f._uU(0),f.ALo(1,"titlecase")),2&ce){const ze=f.oxw();f.AsE(" ",f.lcZ(1,2,ze.actionDescription)," ",ze.itemDescription,"\n")}}const me=function(ce){return{form:ce}};let Oe=(()=>{class ce{constructor(ze){this.activeModal=ze,this.actionDescription="delete"}ngOnInit(){const ze={confirmation:new r.NI(!1,[r.kI.requiredTrue])};if(this.childFormGroup&&(ze.child=this.childFormGroup),this.deletionForm=new u.d(ze),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe({error:this.stopLoadingSpinner.bind(this),complete:this.hideModal.bind(this)}):this.submitAction()}hideModal(){this.activeModal.close()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}return ce.\u0275fac=function(ze){return new(ze||ce)(f.Y36(e.Kz))},ce.\u0275cmp=f.Xpm({type:ce,selectors:[["cd-deletion-modal"]],viewQuery:function(ze,Ye){if(1&ze&&f.Gf(p.w,7),2&ze){let je;f.iGM(je=f.CRH())&&(Ye.submitButton=je.first)}},decls:24,vars:15,consts:function(){let dt,ze,Ye,je;return dt="Yes, I am sure.",ze="Are you sure that you want to " + "\ufffd0\ufffd" + " " + "\ufffd#3\ufffd" + "" + "\ufffd1\ufffd" + "" + "\ufffd/#3\ufffd" + "?",Ye="Are you sure that you want to " + "\ufffd0\ufffd" + " the selected items?",je="Are you sure that you want to " + "\ufffd0\ufffd" + " the selected " + "\ufffd1\ufffd" + "?",[[3,"modalRef"],["modal",""],[1,"modal-title"],[4,"ngTemplateOutlet"],[1,"modal-content"],["name","deletionForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"question"],[4,"ngIf","ngIfElse"],["noNames",""],[1,"form-group"],[1,"custom-control","custom-checkbox"],["type","checkbox","name","confirmation","id","confirmation","formControlName","confirmation","autofocus","",1,"custom-control-input"],["for","confirmation",1,"custom-control-label"],dt,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],["deletionHeading",""],["manyNames",""],ze,Ye,[4,"ngFor","ngForOf"],je]},template:function(ze,Ye){if(1&ze&&(f.TgZ(0,"cd-modal",0,1),f.ynx(2,2),f.YNc(3,Q,1,0,"ng-container",3),f.BQk(),f.ynx(4,4),f.TgZ(5,"form",5,6),f.TgZ(7,"div",7),f.YNc(8,ee,1,0,"ng-container",8),f.TgZ(9,"div",9),f.YNc(10,se,4,2,"span",10),f.YNc(11,ve,3,4,"ng-template",null,11,f.W1O),f.YNc(13,oe,1,0,"ng-container",8),f.TgZ(14,"div",12),f.TgZ(15,"div",13),f._UZ(16,"input",14),f.TgZ(17,"label",15),f.SDv(18,16),f.qZA(),f.qZA(),f.qZA(),f.qZA(),f.qZA(),f.TgZ(19,"div",17),f.TgZ(20,"cd-form-button-panel",18),f.NdJ("submitActionEvent",function(){return Ye.callSubmitAction()}),f.ALo(21,"titlecase"),f.qZA(),f.qZA(),f.qZA(),f.BQk(),f.qZA(),f.YNc(22,he,2,4,"ng-template",null,19,f.W1O)),2&ze){const je=f.MAs(12),Ie=f.MAs(23);f.Q6J("modalRef",Ye.activeModal),f.xp6(3),f.Q6J("ngTemplateOutlet",Ie),f.xp6(2),f.Q6J("formGroup",Ye.deletionForm),f.xp6(3),f.Q6J("ngTemplateOutlet",Ye.bodyTemplate)("ngTemplateOutletContext",Ye.bodyContext),f.xp6(2),f.Q6J("ngIf",Ye.itemNames)("ngIfElse",je),f.xp6(3),f.Q6J("ngTemplateOutlet",Ye.childFormGroupTemplate)("ngTemplateOutletContext",f.VKq(13,me,Ye.deletionForm)),f.xp6(7),f.Q6J("form",Ye.deletionForm)("submitText",f.lcZ(21,11,Ye.actionDescription)+" "+Ye.itemDescription)}},directives:[_.z,y.tP,r._Y,r.JL,r.sg,T.V,y.O5,M.P,R.o,r.Wl,F.b,r.JJ,r.u,Z.U,J.p,y.sg],pipes:[y.rS,y.i8],styles:[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:bold}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]}),ce})()},52266:(v,S,i)=>{"use strict";i.d(S,{J:()=>T});var r=i(16738),u=i.n(r),p=i(74788),f=i(38549),e=i(24751),_=i(12057);function y(M,R){if(1&M){const F=p.EpF();p.TgZ(0,"div",0),p.TgZ(1,"ngb-timepicker",4),p.NdJ("ngModelChange",function(J){return p.CHM(F),p.oxw().time=J})("ngModelChange",function(){return p.CHM(F),p.oxw().onModelChange()}),p.qZA(),p.qZA()}if(2&M){const F=p.oxw();p.xp6(1),p.Q6J("seconds",F.hasSeconds)("ngModel",F.time)}}let T=(()=>{class M{constructor(F){this.calendar=F,this.hasSeconds=!0,this.hasTime=!0}ngOnInit(){var F;this.minDate=this.calendar.getToday(),this.format=this.hasTime?this.hasSeconds?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm":"YYYY-MM-DD";let Z=u()(null===(F=this.control)||void 0===F?void 0:F.value,this.format);(!Z.isValid()||Z.isBefore(u()()))&&(Z=u()()),this.date={year:Z.year(),month:Z.month()+1,day:Z.date()},this.time={hour:Z.hour(),minute:Z.minute(),second:Z.second()},this.onModelChange()}onModelChange(){if(this.date){const F=Object.assign({},this.date,this.time);F.month--,setTimeout(()=>{this.control.setValue(u()(F).format(this.format))})}else setTimeout(()=>{this.control.setValue("")})}}return M.\u0275fac=function(F){return new(F||M)(p.Y36(f.vL))},M.\u0275cmp=p.Xpm({type:M,selectors:[["cd-date-time-picker"]],inputs:{control:"control",hasSeconds:"hasSeconds",hasTime:"hasTime"},decls:4,vars:3,consts:[[1,"d-flex","justify-content-center"],[3,"ngModel","minDate","ngModelChange"],["dp",""],["class","d-flex justify-content-center",4,"ngIf"],[3,"seconds","ngModel","ngModelChange"]],template:function(F,Z){1&F&&(p.TgZ(0,"div",0),p.TgZ(1,"ngb-datepicker",1,2),p.NdJ("ngModelChange",function(Q){return Z.date=Q})("ngModelChange",function(){return Z.onModelChange()}),p.qZA(),p.qZA(),p.YNc(3,y,2,2,"div",3)),2&F&&(p.xp6(1),p.Q6J("ngModel",Z.date)("minDate",Z.minDate),p.xp6(2),p.Q6J("ngIf",Z.hasTime))},directives:[f.VL,e.JJ,e.On,_.O5,f.Pm],styles:[""]}),M})()},30490:(v,S,i)=>{"use strict";i.d(S,{K:()=>p});var r=i(72625),u=i(74788);let p=(()=>{class f{constructor(_){this.docService=_,this.docText="documentation"}ngOnInit(){this.noSubscribe?this.docUrl=this.docService.urlGenerator(this.section):this.docService.subscribeOnce(this.section,_=>{this.docUrl=_})}}return f.\u0275fac=function(_){return new(_||f)(u.Y36(r.R))},f.\u0275cmp=u.Xpm({type:f,selectors:[["cd-doc"]],inputs:{section:"section",docText:"docText",noSubscribe:"noSubscribe"},decls:2,vars:2,consts:[["target","_blank",3,"href"]],template:function(_,y){1&_&&(u.TgZ(0,"a",0),u._uU(1),u.qZA()),2&_&&(u.s9C("href",y.docUrl,u.LSH),u.xp6(1),u.Oqu(y.docText))},styles:[""]}),f})()},30839:(v,S,i)=>{"use strict";i.d(S,{p:()=>T});var r=i(74788),u=i(79512),p=i(39749),f=i(12057),e=i(63285),_=i(13472);function y(M,R){if(1&M){const F=r.EpF();r.TgZ(0,"cd-submit-button",2),r.NdJ("submitAction",function(){return r.CHM(F),r.oxw().submitAction()}),r._uU(1),r.qZA()}if(2&M){const F=r.oxw();r.Q6J("disabled",F.disabled)("form",F.form)("ariaLabel",F.submitText),r.xp6(1),r.Oqu(F.submitText)}}let T=(()=>{class M{constructor(F,Z,J){this.location=F,this.actionLabels=Z,this.modalService=J,this.submitActionEvent=new r.vpe,this.backActionEvent=new r.vpe,this.showSubmit=!0,this.wrappingClass="",this.btnClass="",this.submitText=this.actionLabels.CREATE,this.cancelText=this.actionLabels.CANCEL,this.disabled=!1}submitAction(){this.submitActionEvent.emit()}backAction(){0===this.backActionEvent.observers.length?this.modalService.hasOpenModals()?this.modalService.dismissAll():this.location.back():this.backActionEvent.emit()}}return M.\u0275fac=function(F){return new(F||M)(r.Y36(f.Ye),r.Y36(u.p4),r.Y36(e.Z))},M.\u0275cmp=r.Xpm({type:M,selectors:[["cd-form-button-panel"]],viewQuery:function(F,Z){if(1&F&&r.Gf(p.w,5),2&F){let J;r.iGM(J=r.CRH())&&(Z.submitButton=J.first)}},inputs:{form:"form",showSubmit:"showSubmit",wrappingClass:"wrappingClass",btnClass:"btnClass",submitText:"submitText",cancelText:"cancelText",disabled:"disabled"},outputs:{submitActionEvent:"submitActionEvent",backActionEvent:"backActionEvent"},decls:3,vars:4,consts:[[1,"m-2",3,"name","backAction"],["data-cy","submitBtn",3,"disabled","form","ariaLabel","submitAction",4,"ngIf"],["data-cy","submitBtn",3,"disabled","form","ariaLabel","submitAction"]],template:function(F,Z){1&F&&(r.TgZ(0,"div"),r.TgZ(1,"cd-back-button",0),r.NdJ("backAction",function(){return Z.backAction()}),r.qZA(),r.YNc(2,y,2,4,"cd-submit-button",1),r.qZA()),2&F&&(r.Tol(Z.wrappingClass),r.xp6(1),r.Q6J("name",Z.cancelText),r.xp6(1),r.Q6J("ngIf",Z.showSubmit))},directives:[_.W,f.O5,p.w],styles:[""]}),M})()},65683:(v,S,i)=>{"use strict";i.d(S,{X:()=>Ve});var r=i(24751),u=i(23815),p=i.n(u),f=i(47557),e=i(28211),_=i(74788),y=i(38549),T=i(62862),M=i(60312),R=i(12057),F=i(41582),Z=i(30839),J=i(87925),Q=i(94276),ee=i(17932),ue=i(60192);function ae(He,Zt){if(1&He&&(_.ynx(0,10),_._uU(1),_.BQk()),2&He){const st=_.oxw();_.xp6(1),_.hij(" ",st.titleText," ")}}function $(He,Zt){if(1&He&&(_.TgZ(0,"p"),_._uU(1),_.qZA()),2&He){const st=_.oxw();_.xp6(1),_.Oqu(st.message)}}const se=function(He){return{required:He}};function ve(He,Zt){if(1&He&&(_.TgZ(0,"label",18),_._uU(1),_.qZA()),2&He){const st=_.oxw().$implicit;_.Q6J("ngClass",_.VKq(3,se,!0===(null==st?null:st.required)))("for",st.name),_.xp6(1),_.hij(" ",st.label," ")}}function oe(He,Zt){if(1&He&&_._UZ(0,"input",19),2&He){const st=_.oxw().$implicit;_.Q6J("type",st.type)("id",st.name)("name",st.name)("formControlName",st.name)}}function he(He,Zt){if(1&He&&_._UZ(0,"input",20),2&He){const st=_.oxw().$implicit;_.Q6J("id",st.name)("name",st.name)("formControlName",st.name)}}function me(He,Zt){if(1&He&&(_.TgZ(0,"option",24),_._uU(1),_.qZA()),2&He){const st=_.oxw(2).$implicit;_.Q6J("ngValue",null),_.xp6(1),_.hij(" ",null==st||null==st.typeConfig?null:st.typeConfig.placeholder," ")}}function Oe(He,Zt){if(1&He&&(_.TgZ(0,"option",25),_._uU(1),_.qZA()),2&He){const st=Zt.$implicit;_.Q6J("value",st.value),_.xp6(1),_.hij(" ",st.text," ")}}function ce(He,Zt){if(1&He&&(_.TgZ(0,"select",21),_.YNc(1,me,2,2,"option",22),_.YNc(2,Oe,2,2,"option",23),_.qZA()),2&He){const st=_.oxw().$implicit;_.Q6J("id",st.name)("formControlName",st.name),_.xp6(1),_.Q6J("ngIf",null==st||null==st.typeConfig?null:st.typeConfig.placeholder),_.xp6(1),_.Q6J("ngForOf",null==st||null==st.typeConfig?null:st.typeConfig.options)}}function dt(He,Zt){if(1&He&&_._UZ(0,"cd-select-badges",26),2&He){const st=_.oxw().$implicit;_.Q6J("id",st.name)("data",st.value)("customBadges",null==st||null==st.typeConfig?null:st.typeConfig.customBadges)("options",null==st||null==st.typeConfig?null:st.typeConfig.options)("messages",null==st||null==st.typeConfig?null:st.typeConfig.messages)}}function ze(He,Zt){if(1&He&&(_.TgZ(0,"span",27),_._uU(1),_.qZA()),2&He){const st=_.oxw().$implicit,en=_.oxw();_.xp6(1),_.hij(" ",en.getError(st)," ")}}const Ye=function(He,Zt){return{"cd-col-form-input":He,"col-sm-12":Zt}},je=function(){return["text","number"]};function Ie(He,Zt){if(1&He&&(_.ynx(0),_.TgZ(1,"div"),_.YNc(2,ve,2,5,"label",11),_.TgZ(3,"div",12),_.YNc(4,oe,1,4,"input",13),_.YNc(5,he,1,3,"input",14),_.YNc(6,ce,3,4,"select",15),_.YNc(7,dt,1,5,"cd-select-badges",16),_.YNc(8,ze,2,1,"span",17),_.qZA(),_.qZA(),_.BQk()),2&He){const st=Zt.$implicit,en=_.oxw(),$t=_.MAs(4);_.xp6(1),_.Gre("form-group row cd-",st.name,"-form-group"),_.xp6(1),_.Q6J("ngIf",st.label),_.xp6(1),_.Q6J("ngClass",_.WLB(10,Ye,st.label,!st.label)),_.xp6(1),_.Q6J("ngIf",_.DdM(13,je).includes(st.type)),_.xp6(1),_.Q6J("ngIf","binary"===st.type),_.xp6(1),_.Q6J("ngIf","select"===st.type),_.xp6(1),_.Q6J("ngIf","select-badges"===st.type),_.xp6(1),_.Q6J("ngIf",en.formGroup.showError(st.name,$t))}}let Ve=(()=>{class He{constructor(st,en,$t,Gt){this.activeModal=st,this.formBuilder=en,this.formatter=$t,this.dimlessBinaryPipe=Gt}ngOnInit(){this.createForm()}createForm(){const st={};this.fields.forEach(en=>{st[en.name]=this.createFormControl(en)}),this.formGroup=this.formBuilder.group(st)}createFormControl(st){let en=[];return p().isBoolean(st.required)&&st.required&&en.push(r.kI.required),st.validators&&(en=en.concat(st.validators)),new r.NI(p().defaultTo("binary"===st.type?this.dimlessBinaryPipe.transform(st.value):st.value,null),{validators:en})}getError(st){const en=this.formGroup.get(st.name).errors;return Object.keys(en).map(Gt=>this.getErrorMessage(Gt,en[Gt],st.errors)).join("<br>")}getErrorMessage(st,en,$t){if($t){const Gt=$t[st];if(Gt)return Gt}return["binaryMin","binaryMax"].includes(st)?en():"required"===st?"This field is required.":"An error occurred."}onSubmitForm(st){this.fields.filter($t=>"binary"===$t.type).map($t=>$t.name).forEach($t=>{const Gt=st[$t];Gt&&(st[$t]=this.formatter.toBytes(Gt))}),this.activeModal.close(),p().isFunction(this.onSubmit)&&this.onSubmit(st)}}return He.\u0275fac=function(st){return new(st||He)(_.Y36(y.Kz),_.Y36(T.O),_.Y36(e.H),_.Y36(f.$))},He.\u0275cmp=_.Xpm({type:He,selectors:[["cd-form-modal"]],decls:10,vars:7,consts:[[3,"modalRef"],["class","modal-title",4,"ngIf"],[1,"modal-content"],["novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"modal-title"],["class","cd-col-form-label",3,"ngClass","for",4,"ngIf"],[3,"ngClass"],["class","form-control",3,"type","id","name","formControlName",4,"ngIf"],["type","text","class","form-control","cdDimlessBinary","",3,"id","name","formControlName",4,"ngIf"],["class","form-control",3,"id","formControlName",4,"ngIf"],[3,"id","data","customBadges","options","messages",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-label",3,"ngClass","for"],[1,"form-control",3,"type","id","name","formControlName"],["type","text","cdDimlessBinary","",1,"form-control",3,"id","name","formControlName"],[1,"form-control",3,"id","formControlName"],[3,"ngValue",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[3,"ngValue"],[3,"value"],[3,"id","data","customBadges","options","messages"],[1,"invalid-feedback"]],template:function(st,en){1&st&&(_.TgZ(0,"cd-modal",0),_.YNc(1,ae,2,1,"ng-container",1),_.ynx(2,2),_.TgZ(3,"form",3,4),_.TgZ(5,"div",5),_.YNc(6,$,2,1,"p",6),_.YNc(7,Ie,9,14,"ng-container",7),_.qZA(),_.TgZ(8,"div",8),_.TgZ(9,"cd-form-button-panel",9),_.NdJ("submitActionEvent",function(){return en.onSubmitForm(en.formGroup.value)}),_.qZA(),_.qZA(),_.qZA(),_.BQk(),_.qZA()),2&st&&(_.Q6J("modalRef",en.activeModal),_.xp6(1),_.Q6J("ngIf",en.titleText),_.xp6(2),_.Q6J("formGroup",en.formGroup),_.xp6(3),_.Q6J("ngIf",en.message),_.xp6(1),_.Q6J("ngForOf",en.fields),_.xp6(2),_.Q6J("form",en.formGroup)("submitText",en.submitButtonText))},directives:[M.z,R.O5,r._Y,r.JL,r.sg,F.V,R.sg,Z.p,R.mk,J.o,r.Fj,Q.b,r.JJ,r.u,ee.Q,r.EJ,r.YN,r.Kr,ue.m],styles:[""]}),He})()},76317:(v,S,i)=>{"use strict";i.d(S,{F:()=>ve});var r=i(9837),u=i(65862),p=i(74788),f=i(91211),e=i(12057),_=i(8958),y=i(34501),T=i(30490),M=i(87925),R=i(24751);function F(oe,he){1&oe&&(p.TgZ(0,"cd-loading-panel"),p.SDv(1,2),p.qZA())}function Z(oe,he){1&oe&&(p.TgZ(0,"cd-alert-panel",3),p.tHW(1,4),p._UZ(2,"cd-doc",5),p.N_p(),p.qZA())}function J(oe,he){1&oe&&(p.TgZ(0,"cd-alert-panel",3),p.tHW(1,6),p._UZ(2,"cd-doc",5),p.N_p(),p.qZA())}function Q(oe,he){if(1&oe&&(p.TgZ(0,"option",21),p._uU(1),p.qZA()),2&oe){const me=he.$implicit;p.Q6J("ngValue",me.value),p.xp6(1),p.hij("",me.name," ")}}function ee(oe,he){if(1&oe){const me=p.EpF();p.TgZ(0,"cd-alert-panel",24),p.NdJ("dismissed",function(){return p.CHM(me),p.oxw(3).showMessage=!1}),p.tHW(1,25),p._UZ(2,"a",26),p.N_p(),p.qZA()}if(2&oe){const me=p.oxw(3);p.xp6(2),p.Q6J("href",me.grafanaSrc,p.LSH)}}function ue(oe,he){if(1&oe&&(p.TgZ(0,"div",22),p.YNc(1,ee,3,1,"cd-alert-panel",23),p.qZA()),2&oe){const me=p.oxw(2);p.xp6(1),p.Q6J("ngIf",me.showMessage)}}const ae=function(oe){return[oe]},$=function(oe,he){return[oe,he]};function se(oe,he){if(1&oe){const me=p.EpF();p.ynx(0),p.TgZ(1,"div",7),p.TgZ(2,"div",8),p.TgZ(3,"div",9),p.TgZ(4,"label",10),p.SDv(5,11),p.qZA(),p.TgZ(6,"select",12),p.NdJ("ngModelChange",function(ce){return p.CHM(me),p.oxw().time=ce})("ngModelChange",function(ce){return p.CHM(me),p.oxw().onTimepickerChange(ce)}),p.YNc(7,Q,2,2,"option",13),p.qZA(),p.TgZ(8,"button",14),p.NdJ("click",function(){return p.CHM(me),p.oxw().reset()}),p._UZ(9,"i",15),p.qZA(),p.TgZ(10,"button",16),p.NdJ("click",function(){p.CHM(me);const ce=p.oxw();return ce.showMessage=!ce.showMessage}),p._UZ(11,"i",15),p.qZA(),p.qZA(),p.qZA(),p.qZA(),p.TgZ(12,"div",7),p.YNc(13,ue,2,1,"div",17),p.qZA(),p.TgZ(14,"div",7),p.TgZ(15,"div",8),p.TgZ(16,"div",18),p._UZ(17,"iframe",19,20),p.qZA(),p.qZA(),p.qZA(),p.BQk()}if(2&oe){const me=p.oxw();p.xp6(6),p.Q6J("ngModel",me.time),p.xp6(1),p.Q6J("ngForOf",me.grafanaTimes),p.xp6(2),p.Q6J("ngClass",p.VKq(7,ae,me.icons.undo)),p.xp6(2),p.Q6J("ngClass",p.WLB(9,$,me.icons.infoCircle,me.icons.large)),p.xp6(2),p.Q6J("ngIf",me.showMessage),p.xp6(4),p.Q6J("src",me.grafanaSrc,p.uOi)("ngClass",me.panelStyle)}}let ve=(()=>{class oe{constructor(me,Oe){this.sanitizer=me,this.settingsService=Oe,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,this.showMessage=!1,this.icons=u.P,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:"Last 5 minutes",value:"from=now-5m&to=now"},{name:"Last 15 minutes",value:"from=now-15m&to=now"},{name:"Last 30 minutes",value:"from=now-30m&to=now"},{name:"Last 1 hour (Default)",value:"from=now-1h&to=now"},{name:"Last 3 hours",value:"from=now-3h&to=now"},{name:"Last 6 hours",value:"from=now-6h&to=now"},{name:"Last 12 hours",value:"from=now-12h&to=now"},{name:"Last 24 hours",value:"from=now-24h&to=now"},{name:"Yesterday",value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:"Today so far",value:"from=now%2Fd&to=now"},{name:"Day before yesterday",value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:"Last 2 days",value:"from=now-2d&to=now"},{name:"This day last week",value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:"Previous week",value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:"This week so far",value:"from=now%2Fw&to=now"},{name:"Last 7 days",value:"from=now-7d&to=now"},{name:"Previous month",value:"from=now-1M%2FM&to=now-1M%2FM"},{name:"This month so far",value:"from=now%2FM&to=now"},{name:"Last 30 days",value:"from=now-30d&to=now"},{name:"Last 90 days",value:"from=now-90d&to=now"},{name:"Last 6 months",value:"from=now-6M&to=now"},{name:"Last 1 year",value:"from=now-1y&to=now"},{name:"Previous year",value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:"This year so far",value:"from=now%2Fy&to=now"},{name:"Last 2 years",value:"from=now-2y&to=now"},{name:"Last 5 years",value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three",four:"grafana_four"},this.datasource="metrics"===this.type?"Dashboard1":"Loki",this.settingsService.ifSettingConfigured("api/grafana/url",me=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=me+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(me=>this.dashboardExist=200===me),this.url="metrics"===this.type?`${this.baseUrl}${this.uid}/${this.grafanaPath}&refresh=2s&var-datasource=${this.datasource}${this.mode}&${this.time}`:`${this.baseUrl.slice(0,-2)}${this.grafanaPath}orgId=1&left=["now-1h","now","${this.datasource}",{"refId":"A"}]${this.mode}`,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}return oe.\u0275fac=function(me){return new(me||oe)(p.Y36(f.H7),p.Y36(r.g))},oe.\u0275cmp=p.Xpm({type:oe,selectors:[["cd-grafana"]],inputs:{type:"type",grafanaPath:"grafanaPath",grafanaStyle:"grafanaStyle",uid:"uid"},features:[p.TTD],decls:4,vars:4,consts:function(){let he,me,Oe,ce,dt,ze,Ye;return he="Loading panel data...",me="Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to configure and enable the monitoring functionality.",Oe="Grafana Dashboard doesn't exist. Please refer to " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to add dashboards to Grafana.",ce="Grafana Time Picker",dt="Reset Settings",ze="Show hidden information",Ye="If no embedded Grafana Dashboard appeared below, please follow " + "\ufffd#2\ufffd" + "this link " + "\ufffd/#2\ufffd" + " to check if Grafana is reachable and there are no HTTPS certificate issues. You may need to reload this page after accepting any Browser certificate exceptions",[[4,"ngIf"],["type","info",4,"ngIf"],he,["type","info"],me,["section","grafana"],Oe,[1,"row"],[1,"col"],[1,"form-inline","timepicker"],["for","timepicker",1,"ml-1","my-1"],ce,["id","timepicker","name","timepicker",1,"custom-select","my-1","mx-3",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],["title",dt,1,"btn","btn-light","my-1",3,"click"],[3,"ngClass"],["title",ze,1,"btn","btn-light","my-1","ml-3",3,"click"],["class","col my-3",4,"ngIf"],[1,"grafana-container"],["id","iframe","frameborder","0","scrolling","no",1,"grafana",3,"src","ngClass"],["iframe",""],[3,"ngValue"],[1,"col","my-3"],["type","info","class","mb-3","dismissible","true",3,"dismissed",4,"ngIf"],["type","info","dismissible","true",1,"mb-3",3,"dismissed"],Ye,["target","_blank","noopener","","noreferrer","",3,"href"]]},template:function(me,Oe){1&me&&(p.YNc(0,F,2,0,"cd-loading-panel",0),p.YNc(1,Z,3,0,"cd-alert-panel",1),p.YNc(2,J,3,0,"cd-alert-panel",1),p.YNc(3,se,19,12,"ng-container",0)),2&me&&(p.Q6J("ngIf",Oe.loading&&Oe.grafanaExist),p.xp6(1),p.Q6J("ngIf",!Oe.grafanaExist),p.xp6(1),p.Q6J("ngIf",!Oe.dashboardExist),p.xp6(1),p.Q6J("ngIf",Oe.grafanaExist&&Oe.dashboardExist))},directives:[e.O5,_.b,y.G,T.K,M.o,R.EJ,R.JJ,R.On,e.sg,e.mk,R.YN,R.Kr],styles:[".grafana[_ngcontent-%COMP%]{height:600px;width:100%;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.grafana_four[_ngcontent-%COMP%]{height:1160px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{left:auto;right:20px;top:20px}"]}),oe})()},18372:(v,S,i)=>{"use strict";i.d(S,{S:()=>T});var r=i(65862),u=i(74788),p=i(12057),f=i(38549);function e(M,R){if(1&M&&(u._UZ(0,"div",2),u.Hsn(1)),2&M){const F=u.oxw();u.Tol(F.class),u.Q6J("innerHtml",F.html,u.oJD)}}const _=function(M){return[M]},y=["*"];let T=(()=>{class M{constructor(){this.icons=r.P}}return M.\u0275fac=function(F){return new(F||M)},M.\u0275cmp=u.Xpm({type:M,selectors:[["cd-helper"]],inputs:{class:"class",html:"html"},ngContentSelectors:y,decls:3,vars:4,consts:[["popoverTpl",""],["aria-hidden","true",3,"ngClass","ngbPopover","click"],[3,"innerHtml"]],template:function(F,Z){if(1&F&&(u.F$t(),u.YNc(0,e,2,3,"ng-template",null,0,u.W1O),u.TgZ(2,"i",1),u.NdJ("click",function(Q){return Q.preventDefault()}),u.qZA()),2&F){const J=u.MAs(1);u.xp6(2),u.Q6J("ngClass",u.VKq(2,_,Z.icons.questionCircle))("ngbPopover",J)}},directives:[p.mk,f.o8],styles:["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]}),M})()},8958:(v,S,i)=>{"use strict";i.d(S,{b:()=>y});var r=i(65862),u=i(74788),p=i(38549),f=i(12057);const e=function(T,M){return[T,M]},_=["*"];let y=(()=>{class T{constructor(){this.icons=r.P}}return T.\u0275fac=function(R){return new(R||T)},T.\u0275cmp=u.Xpm({type:T,selectors:[["cd-loading-panel"]],ngContentSelectors:_,decls:4,vars:5,consts:[["type","info",3,"dismissible"],["aria-hidden","true",1,"mr-2",3,"ngClass"]],template:function(R,F){1&R&&(u.F$t(),u.TgZ(0,"ngb-alert",0),u.TgZ(1,"strong"),u._UZ(2,"i",1),u.qZA(),u.Hsn(3),u.qZA()),2&R&&(u.Q6J("dismissible",!1),u.xp6(2),u.Q6J("ngClass",u.WLB(2,e,F.icons.spinner,F.icons.spin)))},directives:[p.xm,f.mk],styles:[""]}),T})()},60312:(v,S,i)=>{"use strict";i.d(S,{z:()=>y});var r=i(74788),u=i(6283),p=i(12057),f=i(87925);const e=[[["",8,"modal-title"]],[["",8,"modal-content"]]],_=[".modal-title",".modal-content"];let y=(()=>{class T{constructor(R){this.router=R,this.hide=new r.vpe}close(){var R;this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):null===(R=this.modalRef)||void 0===R||R.close(),this.hide.emit()}}return T.\u0275fac=function(R){return new(R||T)(r.Y36(u.F0))},T.\u0275cmp=r.Xpm({type:T,selectors:[["cd-modal"]],inputs:{modalRef:"modalRef",pageURL:"pageURL"},outputs:{hide:"hide"},ngContentSelectors:_,decls:10,vars:2,consts:[[3,"ngClass"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title","float-left"],["type","button","aria-label","Close",1,"close","float-right",3,"click"],["aria-hidden","true"]],template:function(R,F){1&R&&(r.F$t(e),r.TgZ(0,"div",0),r.TgZ(1,"div",0),r.TgZ(2,"div",1),r.TgZ(3,"div",2),r.TgZ(4,"h4",3),r.Hsn(5),r.qZA(),r.TgZ(6,"button",4),r.NdJ("click",function(){return F.close()}),r.TgZ(7,"span",5),r._uU(8,"\xd7"),r.qZA(),r.qZA(),r.qZA(),r.Hsn(9,1),r.qZA(),r.qZA(),r.qZA()),2&R&&(r.Q6J("ngClass",F.pageURL?"modal":""),r.xp6(1),r.Q6J("ngClass",F.pageURL?"modal-dialog":""))},directives:[p.mk,f.o],styles:[".modal-header[_ngcontent-%COMP%]{background-color:#e9ecef;border-bottom:1px solid #ced4da;border-radius:5px 5px 0 0}  cd-modal .modal-footer{background-color:#e9ecef;border-bottom:1px solid #ced4da;border-radius:0 0 5px 5px}  cd-modal .modal-body{max-height:70vh;overflow-x:hidden;overflow-y:auto}button.close[_ngcontent-%COMP%]{outline:none}"]}),T})()},60192:(v,S,i)=>{"use strict";i.d(S,{m:()=>M});var r=i(74788),u=i(65862),p=i(7022),f=i(39092),e=i(12057);const _=["cdSelect"],y=function(R){return[R]};function T(R,F){if(1&R){const Z=r.EpF();r.TgZ(0,"span"),r.TgZ(1,"span",4),r.TgZ(2,"span",5),r._uU(3),r.qZA(),r.TgZ(4,"a",6),r.NdJ("click",function(){const ee=r.CHM(Z).$implicit;return r.oxw(),r.MAs(1).removeItem(ee)}),r._UZ(5,"i",7),r.qZA(),r.qZA(),r.qZA()}if(2&R){const Z=F.$implicit,J=r.oxw();r.xp6(3),r.Oqu(Z),r.xp6(2),r.Q6J("ngClass",r.VKq(2,y,J.icons.destroy))}}let M=(()=>{class R{constructor(){this.data=[],this.options=[],this.messages=new p.a({}),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new r.vpe,this.icons=u.P}}return R.\u0275fac=function(Z){return new(Z||R)},R.\u0275cmp=r.Xpm({type:R,selectors:[["cd-select-badges"]],viewQuery:function(Z,J){if(1&Z&&r.Gf(_,7),2&Z){let Q;r.iGM(Q=r.CRH())&&(J.cdSelect=Q.first)}},inputs:{data:"data",options:"options",messages:"messages",selectionLimit:"selectionLimit",customBadges:"customBadges",customBadgeValidators:"customBadgeValidators"},outputs:{selection:"selection"},decls:4,vars:10,consts:[["elemClass","mr-2 select-menu-edit",3,"data","options","messages","selectionLimit","customBadges","customBadgeValidators","selection"],["cdSelect",""],[3,"ngClass"],[4,"ngFor","ngForOf"],[1,"badge","badge-dark","mr-2"],[1,"mr-2"],[1,"badge-remove",3,"click"],["aria-hidden","true",3,"ngClass"]],template:function(Z,J){1&Z&&(r.TgZ(0,"cd-select",0,1),r.NdJ("selection",function(ee){return J.selection.emit(ee)}),r._UZ(2,"i",2),r.qZA(),r.YNc(3,T,6,4,"span",3)),2&Z&&(r.Q6J("data",J.data)("options",J.options)("messages",J.messages)("selectionLimit",J.selectionLimit)("customBadges",J.customBadges)("customBadgeValidators",J.customBadgeValidators),r.xp6(2),r.Q6J("ngClass",r.VKq(8,y,J.icons.edit)),r.xp6(1),r.Q6J("ngForOf",J.data))},directives:[f.H,e.mk,e.sg],styles:[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]}),R})()},7022:(v,S,i)=>{"use strict";i.d(S,{a:()=>p});var r=i(23815),u=i.n(r);class p{constructor(e){this.customValidations={},this.empty="No items selected.",this.selectionLimit={tooltip:"Deselect item to select again",text:"Selection limit reached"},this.filter="Filter tags",this.add="Add badge",this.noOptions="There are no items available.",u().merge(this,e)}}},14745:(v,S,i)=>{"use strict";i.d(S,{$:()=>r});class r{constructor(p,f,e,_=!0){this.selected=p,this.name=f,this.description=e,this.enabled=_}}},39092:(v,S,i)=>{"use strict";i.d(S,{H:()=>je});var r=i(74788),u=i(24751),p=i(23815),f=i.n(p),e=i(65862),_=i(95463),y=i(7022),T=i(14745),M=i(12057),R=i(41582),F=i(87925),Z=i(94276),J=i(38549);function Q(Ie,Ve){if(1&Ie&&(r.TgZ(0,"span",12),r._uU(1),r.qZA()),2&Ie){const He=r.oxw().$implicit,Zt=r.oxw(2);r.xp6(1),r.hij(" ",Zt.messages.customValidations[He]," ")}}function ee(Ie,Ve){if(1&Ie&&(r.ynx(0),r.YNc(1,Q,2,1,"span",11),r.BQk()),2&Ie){const He=Ve.$implicit;r.oxw();const Zt=r.MAs(1),st=r.oxw();r.xp6(1),r.Q6J("ngIf",st.form.showError("filter",Zt)&&st.filter.hasError(He))}}const ue=function(Ie){return[Ie]};function ae(Ie,Ve){if(1&Ie&&r._UZ(0,"i",18),2&Ie){const He=r.oxw(3);r.Q6J("ngClass",r.VKq(1,ue,He.icons.check))}}function $(Ie,Ve){if(1&Ie&&(r.ynx(0),r._UZ(1,"br"),r.TgZ(2,"small",19),r._uU(3),r.qZA(),r.BQk()),2&Ie){const He=r.oxw().$implicit;r.xp6(3),r.hij(" ",He.description,"\xa0 ")}}const se=function(Ie){return{"help-block disabled":Ie}};function ve(Ie,Ve){if(1&Ie){const He=r.EpF();r.TgZ(0,"div",13),r.NdJ("click",function(){const en=r.CHM(He).$implicit;return r.oxw(2).triggerSelection(en)}),r.TgZ(1,"div",14),r.YNc(2,ae,1,3,"i",15),r._uU(3," \xa0 "),r.qZA(),r.TgZ(4,"div",16),r._uU(5),r.YNc(6,$,4,1,"ng-container",17),r.qZA(),r.qZA()}if(2&Ie){const He=Ve.$implicit,Zt=r.oxw(2);r.Q6J("ngClass",r.VKq(4,se,!(Zt.data.length!==Zt.selectionLimit&&He.enabled||He.selected))),r.xp6(2),r.Q6J("ngIf",He.selected),r.xp6(3),r.hij(" ",He.name," "),r.xp6(1),r.Q6J("ngIf",He.description)}}function oe(Ie,Ve){if(1&Ie){const He=r.EpF();r.TgZ(0,"div",20),r.NdJ("click",function(){return r.CHM(He),r.oxw(2).addCustomOption()}),r.TgZ(1,"div",14),r._UZ(2,"i",18),r._uU(3," \xa0 "),r.qZA(),r.TgZ(4,"div",16),r._uU(5),r.qZA(),r.qZA()}if(2&Ie){const He=r.oxw(2);r.xp6(2),r.Q6J("ngClass",r.VKq(3,ue,He.icons.tag)),r.xp6(3),r.AsE(" ",He.messages.add," '",He.filter.value,"' ")}}function he(Ie,Ve){if(1&Ie&&(r.TgZ(0,"span",23),r._uU(1),r.qZA()),2&Ie){const He=r.oxw(3);r.Q6J("ngbTooltip",He.messages.selectionLimit.tooltip),r.xp6(1),r.hij(" ",He.messages.selectionLimit.text," ")}}function me(Ie,Ve){if(1&Ie&&(r.TgZ(0,"div",21),r.YNc(1,he,2,2,"span",22),r.qZA()),2&Ie){const He=r.oxw(2);r.xp6(1),r.Q6J("ngIf",He.data.length===He.selectionLimit)}}function Oe(Ie,Ve){if(1&Ie){const He=r.EpF();r.TgZ(0,"form",4,5),r.TgZ(2,"div"),r.TgZ(3,"input",6),r.NdJ("keyup",function(st){r.CHM(He);const en=r.oxw();return 13==st.keyCode?en.selectOption():en.updateFilter()}),r.qZA(),r.YNc(4,ee,2,1,"ng-container",7),r.qZA(),r.qZA(),r.YNc(5,ve,7,6,"div",8),r.YNc(6,oe,6,5,"div",9),r.YNc(7,me,2,1,"div",10)}if(2&Ie){const He=r.oxw();r.Q6J("formGroup",He.form),r.xp6(3),r.Q6J("placeholder",He.messages.filter),r.xp6(1),r.Q6J("ngForOf",He.Object.keys(He.messages.customValidations)),r.xp6(1),r.Q6J("ngForOf",He.filteredOptions),r.xp6(1),r.Q6J("ngIf",He.isCreatable()),r.xp6(1),r.Q6J("ngIf",He.data.length===He.selectionLimit)}}function ce(Ie,Ve){if(1&Ie&&(r.TgZ(0,"a",24),r.Hsn(1),r.qZA()),2&Ie){const He=r.oxw(),Zt=r.MAs(1);r.Q6J("ngClass",He.elemClass)("ngbPopover",Zt)}}function dt(Ie,Ve){if(1&Ie&&(r.TgZ(0,"span",25),r._uU(1),r.qZA()),2&Ie){const He=r.oxw();r.xp6(1),r.hij(" ",He.messages.empty,"\n")}}function ze(Ie,Ve){if(1&Ie&&(r.TgZ(0,"span",25),r._uU(1),r.qZA()),2&Ie){const He=r.oxw();r.xp6(1),r.hij(" ",He.messages.noOptions,"\n")}}const Ye=["*"];let je=(()=>{class Ie{constructor(){this.data=[],this.options=[],this.messages=new y.a({}),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new r.vpe,this.Object=Object,this.filteredOptions=[],this.icons=e.P}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=f().sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new u.NI("",{validators:this.customBadgeValidators}),this.form=new _.d({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const He=this.options.map(st=>st.name);this.data.filter(st=>-1===He.indexOf(st)).forEach(st=>this.addOption(st)),this.forceOptionsToReflectData()}addOption(He){this.options.push(new T.$(!1,He,"")),this.options=f().sortBy(this.options,["name"]),this.triggerSelection(this.options.find(Zt=>Zt.name===He))}triggerSelection(He){!He||this.selectionLimit&&!He.selected&&this.data.length>=this.selectionLimit||(He.selected=!He.selected,this.updateOptions(),this.selection.emit({option:He}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(He=>{He.selected&&this.data.push(He.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(He=>He.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(He=>{-1!==this.data.indexOf(He.name)&&(He.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){!this.isCreatable()||(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(He=>He.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(He){this.triggerSelection(this.options.find(Zt=>Zt.name===He&&Zt.selected))}}return Ie.\u0275fac=function(He){return new(He||Ie)},Ie.\u0275cmp=r.Xpm({type:Ie,selectors:[["cd-select"]],inputs:{elemClass:"elemClass",data:"data",options:"options",messages:"messages",selectionLimit:"selectionLimit",customBadges:"customBadges",customBadgeValidators:"customBadgeValidators"},outputs:{selection:"selection"},features:[r.TTD],ngContentSelectors:Ye,decls:5,vars:3,consts:[["popTemplate",""],["class","select-menu-edit float-left","data-testid","select-menu-edit",3,"ngClass","ngbPopover",4,"ngIf"],["class","form-text text-muted float-left",4,"ngIf"],["class","form-text text-muted  float-left",4,"ngIf"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],["type","text","formControlName","filter",1,"form-control","text-center",3,"placeholder","keyup"],[4,"ngFor","ngForOf"],["class","select-menu-item",3,"ngClass","click",4,"ngFor","ngForOf"],["class","select-menu-item",3,"click",4,"ngIf"],["class","is-invalid",4,"ngIf"],["class","invalid-feedback text-center d-block",4,"ngIf"],[1,"invalid-feedback","text-center","d-block"],[1,"select-menu-item",3,"ngClass","click"],[1,"select-menu-item-icon"],["aria-hidden","true",3,"ngClass",4,"ngIf"],[1,"select-menu-item-content"],[4,"ngIf"],["aria-hidden","true",3,"ngClass"],[1,"form-text","text-muted"],[1,"select-menu-item",3,"click"],[1,"is-invalid"],["class","form-text text-muted text-center text-warning",3,"ngbTooltip",4,"ngIf"],[1,"form-text","text-muted","text-center","text-warning",3,"ngbTooltip"],["data-testid","select-menu-edit",1,"select-menu-edit","float-left",3,"ngClass","ngbPopover"],[1,"form-text","text-muted","float-left"]],template:function(He,Zt){1&He&&(r.F$t(),r.YNc(0,Oe,8,6,"ng-template",null,0,r.W1O),r.YNc(2,ce,2,2,"a",1),r.YNc(3,dt,2,1,"span",2),r.YNc(4,ze,2,1,"span",3)),2&He&&(r.xp6(2),r.Q6J("ngIf",Zt.customBadges||Zt.options.length>0),r.xp6(1),r.Q6J("ngIf",0===Zt.data.length&&!(!Zt.customBadges&&0===Zt.options.length)),r.xp6(1),r.Q6J("ngIf",!Zt.customBadges&&0===Zt.options.length))},directives:[M.O5,u._Y,u.JL,u.sg,R.V,F.o,u.Fj,Z.b,u.JJ,u.u,M.sg,M.mk,J._L,J.o8],styles:[".select-menu-item[_ngcontent-%COMP%]{border-bottom:1px solid rgba(0,0,0,.09);cursor:pointer;display:block;font-size:1rem}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#e9ecef}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}.select-menu-item-content[_ngcontent-%COMP%]   .form-text[_ngcontent-%COMP%]{display:flex}"]}),Ie})()},76446:(v,S,i)=>{"use strict";i.d(S,{l:()=>T});var r=i(87311),u=i(47557),p=i(74788),f=i(12057),e=i(7194);const _=["sparkCanvas"],y=["sparkTooltip"];let T=(()=>{class M{constructor(F){this.dimlessBinaryPipe=F,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:Z=>this.isBinary?this.dimlessBinaryPipe.transform(Z.yLabel):Z.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const J=new r.h(this.chartCanvasRef,this.chartTooltipRef,(Q,ee)=>ee+Q.caretX+"px",Q=>Q.caretY-Q.height-Q.yPadding-5+"px");J.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=Q=>{J.customTooltips(Q)}}ngOnChanges(F){this.datasets[0].data=F.data.currentValue,this.labels=[...Array(F.data.currentValue.length)]}}return M.\u0275fac=function(F){return new(F||M)(p.Y36(u.$))},M.\u0275cmp=p.Xpm({type:M,selectors:[["cd-sparkline"]],viewQuery:function(F,Z){if(1&F&&(p.Gf(_,7),p.Gf(y,7)),2&F){let J;p.iGM(J=p.CRH())&&(Z.chartCanvasRef=J.first),p.iGM(J=p.CRH())&&(Z.chartTooltipRef=J.first)}},inputs:{data:"data",style:"style",isBinary:"isBinary"},features:[p.TTD],decls:6,vars:6,consts:[[1,"chart-container",3,"ngStyle"],["baseChart","",3,"labels","datasets","options","colors","chartType"],["sparkCanvas",""],[1,"chartjs-tooltip"],["sparkTooltip",""]],template:function(F,Z){1&F&&(p.TgZ(0,"div",0),p._UZ(1,"canvas",1,2),p.TgZ(3,"div",3,4),p._UZ(5,"table"),p.qZA(),p.qZA()),2&F&&(p.Q6J("ngStyle",Z.style),p.xp6(1),p.Q6J("labels",Z.labels)("datasets",Z.datasets)("options",Z.options)("colors",Z.colors)("chartType","line"))},directives:[f.PC,e.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{position:static!important}']}),M})()},39749:(v,S,i)=>{"use strict";i.d(S,{w:()=>F});var r=i(74788),u=i(24751),p=i(23815),f=i.n(p),e=i(65862),_=i(87925),y=i(12057);const T=function(Z,J){return[Z,J]};function M(Z,J){if(1&Z&&(r.TgZ(0,"span"),r._UZ(1,"i",2),r.qZA()),2&Z){const Q=r.oxw();r.xp6(1),r.Q6J("ngClass",r.WLB(1,T,Q.icons.spinner,Q.icons.spin))}}const R=["*"];let F=(()=>{class Z{constructor(Q){this.elRef=Q,this.type="submit",this.disabled=!1,this.submitAction=new r.vpe,this.loading=!1,this.icons=e.P}ngOnInit(){this.form.statusChanges.subscribe(()=>{f().has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,f().unset(this.form.errors,"cdSubmitButton"),this.form instanceof u.TO&&this.form.updateValueAndValidity())})}submit(Q){this.focusButton(),this.form instanceof u.sg&&this.form.onSubmit(Q),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const Q=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");Q&&Q.focus()}}return Z.\u0275fac=function(Q){return new(Q||Z)(r.Y36(r.SBq))},Z.\u0275cmp=r.Xpm({type:Z,selectors:[["cd-submit-button"]],inputs:{form:"form",type:"type",disabled:"disabled",btnClass:"btnClass",ariaLabel:"ariaLabel"},outputs:{submitAction:"submitAction"},ngContentSelectors:R,decls:3,vars:5,consts:[[1,"btn","btn-accent","tc_submitButton",3,"type","ngClass","disabled","click"],[4,"ngIf"],[3,"ngClass"]],template:function(Q,ee){1&Q&&(r.F$t(),r.TgZ(0,"button",0),r.NdJ("click",function(ae){return ee.submit(ae)}),r.Hsn(1),r.YNc(2,M,2,4,"span",1),r.qZA()),2&Q&&(r.Q6J("type",ee.type)("ngClass",ee.btnClass)("disabled",ee.loading||ee.disabled),r.uIk("aria-label",ee.ariaLabel),r.xp6(2),r.Q6J("ngIf",ee.loading))},directives:[_.o,y.mk,y.O5],styles:[""]}),Z})()},60251:(v,S,i)=>{"use strict";i.d(S,{O:()=>M});var r=i(74788),u=i(38549),p=i(12057),f=i(47557),e=i(66369);function _(R,F){if(1&R&&(r.TgZ(0,"tr"),r.TgZ(1,"td",4),r._uU(2,"Free:\xa0"),r.qZA(),r.TgZ(3,"td",7),r.TgZ(4,"strong"),r._uU(5),r.ALo(6,"dimlessBinary"),r.ALo(7,"dimless"),r.qZA(),r.qZA(),r.qZA()),2&R){const Z=r.oxw(2);r.xp6(5),r.Oqu(Z.isBinary?r.lcZ(6,1,Z.total-Z.used):r.lcZ(7,3,Z.total-Z.used))}}function y(R,F){if(1&R&&(r.TgZ(0,"table"),r.TgZ(1,"tr"),r.TgZ(2,"td",4),r._uU(3,"Used:\xa0"),r.qZA(),r.TgZ(4,"td",5),r.TgZ(5,"strong"),r._uU(6),r.ALo(7,"dimlessBinary"),r.ALo(8,"dimless"),r.qZA(),r.qZA(),r.qZA(),r.YNc(9,_,8,5,"tr",6),r.qZA()),2&R){const Z=r.oxw();r.xp6(6),r.hij(" ",Z.isBinary?r.lcZ(7,2,Z.used):r.lcZ(8,4,Z.used),""),r.xp6(3),r.Q6J("ngIf",Z.calculatePerc)}}const T=function(R,F){return{"bg-warning":R,"bg-danger":F}};let M=(()=>{class R{constructor(){this.isBinary=!0,this.decimals=0,this.calculatePerc=!0}ngOnChanges(){this.calculatePerc?(this.usedPercentage=this.total>0?this.used/this.total*100:0,this.freePercentage=100-this.usedPercentage):this.used?(this.used=this.used.slice(0,-1),this.usedPercentage=Number(this.used),this.freePercentage=100-this.usedPercentage):this.usedPercentage=0}}return R.\u0275fac=function(Z){return new(Z||R)},R.\u0275cmp=r.Xpm({type:R,selectors:[["cd-usage-bar"]],inputs:{total:"total",used:"used",warningThreshold:"warningThreshold",errorThreshold:"errorThreshold",isBinary:"isBinary",decimals:"decimals",calculatePerc:"calculatePerc"},features:[r.TTD],decls:8,vars:13,consts:[["usageTooltipTpl",""],["data-placement","left",1,"progress",3,"ngbTooltip"],["role","progressbar",1,"progress-bar","bg-info",3,"ngClass"],["role","progressbar",1,"progress-bar","bg-freespace"],[1,"text-left"],[1,"text-right"],[4,"ngIf"],[1,"'text-right"]],template:function(Z,J){if(1&Z&&(r.YNc(0,y,10,6,"ng-template",null,0,r.W1O),r.TgZ(2,"div",1),r.TgZ(3,"div",2),r.TgZ(4,"span"),r._uU(5),r.ALo(6,"number"),r.qZA(),r.qZA(),r._UZ(7,"div",3),r.qZA()),2&Z){const Q=r.MAs(1);r.xp6(2),r.Q6J("ngbTooltip",Q),r.xp6(1),r.Udp("width",J.usedPercentage+"%"),r.Q6J("ngClass",r.WLB(10,T,J.usedPercentage/100>=J.warningThreshold,J.usedPercentage/100>=J.errorThreshold)),r.xp6(2),r.hij("",r.xi3(6,7,J.usedPercentage,"1.0-"+J.decimals),"%"),r.xp6(2),r.Udp("width",J.freePercentage+"%")}},directives:[u._L,p.mk,p.O5],pipes:[p.JJ,f.$,e.n],styles:[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-warning[_ngcontent-%COMP%]{background-color:#ffc200!important}.bg-danger[_ngcontent-%COMP%]{background-color:#ef5c55!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#ced4da!important}.progress[_ngcontent-%COMP%]{height:20px;margin-bottom:0;position:relative}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:#000;display:block;font-weight:normal;position:absolute;width:100%}"]}),R})()},79512:(v,S,i)=>{"use strict";i.d(S,{$x:()=>p,MQ:()=>f,Qn:()=>e,p4:()=>_,aX:()=>y});var r=i(92340),u=i(74788);class p{}p.organization="ceph",p.projectName="Ceph Dashboard",p.license="Free software (LGPL 2.1).",p.copyright="Copyright(c) "+r.N.year+" Ceph contributors.",p.cephLogo="assets/Ceph_Logo.svg";var f=(()=>{return(T=f||(f={})).CREATE="create",T.EDIT="edit",T.UPDATE="update",T.REMOVE="remove",T.DELETE="delete",T.ADD="add",T.COPY="copy",T.CLONE="clone",T.RECREATE="recreate",T.EXPIRE="expire",T.RESTART="Restart",f;var T})(),e=(()=>{return(T=e||(e={})).CREATE="Create",T.DELETE="Delete",T.ADD="Add",T.REMOVE="Remove",T.EDIT="Edit",T.CANCEL="Cancel",T.COPY="Copy",T.CLONE="Clone",T.UPDATE="Update",T.EVICT="Evict",T.SHOW="Show",T.RECREATE="Recreate",T.EXPIRE="Expire",T.START="Start",T.STOP="Stop",T.REDEPLOY="Redeploy",T.RESTART="Restart",e;var T})();let _=(()=>{class T{constructor(){this.CREATE="Create",this.DELETE="Delete",this.ADD="Add",this.SET="Set",this.SUBMIT="Submit",this.REMOVE="Remove",this.UNSET="Unset",this.EDIT="Edit",this.UPDATE="Update",this.CANCEL="Cancel",this.PREVIEW="Preview",this.MOVE="Move",this.NEXT="Next",this.BACK="Back",this.CLONE="Clone",this.COPY="Copy",this.DEEP_SCRUB="Deep Scrub",this.DESTROY="Destroy",this.EVICT="Evict",this.FLATTEN="Flatten",this.MARK_DOWN="Mark Down",this.MARK_IN="Mark In",this.MARK_LOST="Mark Lost",this.MARK_OUT="Mark Out",this.PROTECT="Protect",this.PURGE="Purge",this.RENAME="Rename",this.RESTORE="Restore",this.REWEIGHT="Reweight",this.ROLLBACK="Rollback",this.SCRUB="Scrub",this.SHOW="Show",this.TRASH="Move to Trash",this.UNPROTECT="Unprotect",this.CHANGE="Change",this.FLAGS="Flags",this.ENTER_MAINTENANCE="Enter Maintenance",this.EXIT_MAINTENANCE="Exit Maintenance",this.START_DRAIN="Start Drain",this.STOP_DRAIN="Stop Drain",this.RESYNC="Resync",this.RECREATE="Recreate",this.EXPIRE="Expire",this.START="Start",this.STOP="Stop",this.REDEPLOY="Redeploy",this.RESTART="Restart",this.REMOVE_SCHEDULING="Remove Scheduling",this.PROMOTE="Promote",this.DEMOTE="Demote"}}return T.\u0275fac=function(R){return new(R||T)},T.\u0275prov=u.Yz7({token:T,factory:T.\u0275fac,providedIn:"root"}),T})(),y=(()=>{class T{constructor(){this.CREATED="Created",this.DELETED="Deleted",this.ADDED="Added",this.REMOVED="Removed",this.EDITED="Edited",this.CANCELED="Canceled",this.PREVIEWED="Previewed",this.MOVED="Moved",this.CLONED="Cloned",this.COPIED="Copied",this.DEEP_SCRUBBED="Deep Scrubbed",this.DESTROYED="Destroyed",this.FLATTENED="Flattened",this.MARKED_DOWN="Marked Down",this.MARKED_IN="Marked In",this.MARKED_LOST="Marked Lost",this.MARKED_OUT="Marked Out",this.PROTECTED="Protected",this.PURGED="Purged",this.RENAMED="Renamed",this.RESTORED="Restored",this.REWEIGHTED="Reweighted",this.ROLLED_BACK="Rolled back",this.SCRUBBED="Scrubbed",this.SHOWED="Showed",this.TRASHED="Moved to Trash",this.UNPROTECTED="Unprotected",this.CHANGE="Change",this.RECREATED="Recreated",this.EXPIRED="Expired",this.START="Start",this.STOP="Stop",this.REDEPLOY="Redeploy",this.RESTART="Restart"}}return T.\u0275fac=function(R){return new(R||T)},T.\u0275prov=u.Yz7({token:T,factory:T.\u0275fac,providedIn:"root"}),T})()},2149:(v,S,i)=>{"use strict";i.d(S,{t:()=>R});var r=i(12057),u=i(24751),p=i(6283),f=i(38549),e=i(84051),_=i(37496),y=i(15626),T=i(85953),M=i(74788);let R=(()=>{class F{}return F.\u0275fac=function(J){return new(J||F)},F.\u0275mod=M.oAB({type:F}),F.\u0275inj=M.cJS({imports:[[r.ez,e.xD,_.b,u.u5,f.XC,f.HK,T.D,y.K,p.Bz],e.xD]}),F})()},94928:(v,S,i)=>{"use strict";i.d(S,{K:()=>ue});var r=i(23815),u=i.n(r),p=i(65862),f=i(74788),e=i(12057),_=i(6283),y=i(38549);const T=function(ae){return{disabled:ae}},M=function(ae){return[ae]};function R(ae,$){if(1&ae){const se=f.EpF();f.ynx(0),f.TgZ(1,"button",3),f.NdJ("click",function(){f.CHM(se);const oe=f.oxw();return oe.useClickAction(oe.currentAction)}),f._UZ(2,"i",4),f.TgZ(3,"span"),f._uU(4),f.qZA(),f.qZA(),f.BQk()}if(2&ae){const se=f.oxw();f.xp6(1),f.Gre("btn btn-",se.btnColor,""),f.s9C("title",se.useDisableDesc(se.currentAction)),f.Q6J("ngClass",f.VKq(10,T,se.disableSelectionAction(se.currentAction)))("routerLink",se.useRouterLink(se.currentAction))("preserveFragment",se.currentAction.preserveFragment?"":null),f.uIk("aria-label",se.currentAction.name),f.xp6(1),f.Q6J("ngClass",f.VKq(12,M,se.currentAction.icon)),f.xp6(2),f.Oqu(se.currentAction.name)}}function F(ae,$){if(1&ae&&(f.ynx(0),f._uU(1),f.BQk()),2&ae){const se=f.oxw(2);f.xp6(1),f.hij("",se.dropDownOnly," ")}}function Z(ae,$){1&ae&&f._UZ(0,"span",10)}const J=function(ae){return[ae,"action-icon"]};function Q(ae,$){if(1&ae){const se=f.EpF();f.ynx(0),f.TgZ(1,"button",11),f.NdJ("click",function(){const he=f.CHM(se).$implicit;return f.oxw(2).useClickAction(he)}),f._UZ(2,"i",4),f.TgZ(3,"span"),f._uU(4),f.qZA(),f.qZA(),f.BQk()}if(2&ae){const se=$.$implicit,ve=f.oxw(2);f.xp6(1),f.Tol(ve.toClassName(se)),f.s9C("title",ve.useDisableDesc(se)),f.Q6J("routerLink",ve.useRouterLink(se))("preserveFragment",se.preserveFragment?"":null)("disabled",ve.disableSelectionAction(se)),f.uIk("aria-label",se.name),f.xp6(1),f.Q6J("ngClass",f.VKq(10,J,se.icon)),f.xp6(2),f.Oqu(se.name)}}function ee(ae,$){if(1&ae&&(f.TgZ(0,"div",5),f.TgZ(1,"button",6),f.YNc(2,F,2,1,"ng-container",1),f.YNc(3,Z,1,0,"span",7),f.qZA(),f.TgZ(4,"div",8),f.YNc(5,Q,5,12,"ng-container",9),f.qZA(),f.qZA()),2&ae){const se=f.oxw();f.xp6(1),f.Gre("btn btn-",se.btnColor," dropdown-toggle-split"),f.xp6(1),f.Q6J("ngIf",se.dropDownOnly),f.xp6(1),f.Q6J("ngIf",!se.dropDownOnly),f.xp6(2),f.Q6J("ngForOf",se.dropDownActions)}}let ue=(()=>{class ae{constructor(){this.btnColor="accent",this.dropDownActions=[],this.icons=p.P}ngOnInit(){this.removeActionsWithNoPermissions(),this.onSelectionChange()}ngOnChanges(se){se.selection&&this.onSelectionChange()}onSelectionChange(){this.updateDropDownActions(),this.updateCurrentAction()}toClassName(se){return se.name.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const se=Object.keys(this.permission).filter(ve=>this.permission[ve]);this.tableActions=this.tableActions.filter(ve=>se.includes(ve.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(se=>se.visible?se.visible(this.selection):se)}updateCurrentAction(){if(this.dropDownOnly)return void(this.currentAction=void 0);let se=this.dropDownActions.find(ve=>this.showableAction(ve));!se&&this.dropDownActions.length>0&&(se=this.dropDownActions[0]),this.currentAction=se}showableAction(se){const ve=se.canBePrimary,oe=this.selection.hasSingleSelection,he="create"===se.permission?!oe:oe;return ve&&ve(this.selection)||!ve&&he}useRouterLink(se){if(se.routerLink&&!this.disableSelectionAction(se))return u().isString(se.routerLink)?se.routerLink:se.routerLink()}disableSelectionAction(se){const ve=se.disable;if(ve)return Boolean(ve(this.selection));const oe=se.permission,he=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(oe)&&(!he||he.cdExecuting))}useClickAction(se){return!this.disableSelectionAction(se)&&se.click&&se.click()}useDisableDesc(se){if(se.disable){const ve=se.disable(this.selection);return u().isString(ve)?ve:void 0}}}return ae.\u0275fac=function(se){return new(se||ae)},ae.\u0275cmp=f.Xpm({type:ae,selectors:[["cd-table-actions"]],inputs:{permission:"permission",selection:"selection",tableActions:"tableActions",btnColor:"btnColor",dropDownOnly:"dropDownOnly"},features:[f.TTD],decls:3,vars:2,consts:[[1,"btn-group"],[4,"ngIf"],["class","btn-group","ngbDropdown","","role","group","aria-label","Button group with nested dropdown",4,"ngIf"],["type","button",3,"title","ngClass","routerLink","preserveFragment","click"],[3,"ngClass"],["ngbDropdown","","role","group","aria-label","Button group with nested dropdown",1,"btn-group"],["ngbDropdownToggle",""],["class","sr-only",4,"ngIf"],["ngbDropdownMenu","",1,"dropdown-menu"],[4,"ngFor","ngForOf"],[1,"sr-only"],["ngbDropdownItem","",3,"title","routerLink","preserveFragment","disabled","click"]],template:function(se,ve){1&se&&(f.TgZ(0,"div",0),f.YNc(1,R,5,14,"ng-container",1),f.YNc(2,ee,6,6,"div",2),f.qZA()),2&se&&(f.xp6(1),f.Q6J("ngIf",ve.currentAction),f.xp6(1),f.Q6J("ngIf",ve.dropDownActions.length>1))},directives:[e.O5,e.mk,_.rH,y.jt,y.iD,y.Vi,e.sg,y.TH],styles:["button.disabled[_ngcontent-%COMP%]{cursor:default!important;pointer-events:auto}.action-icon[_ngcontent-%COMP%]{padding-right:1.5rem}"]}),ae})()},61350:(v,S,i)=>{"use strict";i.d(S,{b:()=>y});var r=i(74788),u=i(23815),p=i.n(u),f=i(99466),e=i(35905),_=i(96102);let y=(()=>{class T{constructor(R){this.datePipe=R,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new r.vpe}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:f.e.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=f.e.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let R=this.makePairs(this.data);this.hideKeys&&(R=R.filter(F=>!this.hideKeys.includes(F.key))),this.tableData=R}makePairs(R){let F=[];if(R){if(p().isArray(R))F=this.makePairsFromArray(R);else{if(!p().isObject(R))throw new Error("Wrong data format");F=this.makePairsFromObject(R)}return F=F.map(Z=>(Z.value=this.convertValue(Z.value),Z)).filter(Z=>null!==Z.value),p().sortBy(this.renderObjects?this.insertFlattenObjects(F):F,"key")}}makePairsFromArray(R){let F=[];const Z=R[0];if(p().isArray(Z)){if(2!==Z.length)throw new Error(`Array contains too many elements (${Z.length}). Needs to be of type [string, any][]`);F=R.map(J=>({key:J[0],value:J[1]}))}else p().isObject(Z)&&(F=p().has(Z,"key")&&p().has(Z,"value")?[...R]:R.reduce((J,Q)=>J.concat(this.makePairsFromObject(Q)),F));return F}makePairsFromObject(R){return Object.keys(R).map(F=>({key:F,value:R[F]}))}insertFlattenObjects(R){return p().flattenDeep(R.map(F=>{const Z=F.value,J=p().isObject(Z);return!J||p().isEmpty(Z)?(J&&(F.value=""),F):this.splitItemIntoItems(F)}))}splitItemIntoItems(R){return this.makePairs(R.value).map(F=>(this.appendParentKey&&(F.key=R.key+" "+F.key),F))}convertValue(R){if(p().isArray(R)){if(p().isEmpty(R)&&this.hideEmpty)return null;R=R.map(F=>p().isObject(F)?JSON.stringify(F):F).join(", ")}else if(p().isObject(R)){if(this.hideEmpty&&p().isEmpty(R)||!this.renderObjects)return null}else if(p().isString(R)){if(""===R&&this.hideEmpty)return null;this.isDate(R)&&(R=this.datePipe.transform(R)||R)}return R}isDate(R){const F="[ -:.TZ]",Z="\\d{2}"+F;return R.match(new RegExp("^\\d{4}"+F+Z+Z+Z+Z+Z+"\\d*Z?$"))}}return T.\u0275fac=function(R){return new(R||T)(r.Y36(_.N))},T.\u0275cmp=r.Xpm({type:T,selectors:[["cd-table-key-value"]],viewQuery:function(R,F){if(1&R&&r.Gf(e.a,7),2&R){let Z;r.iGM(Z=r.CRH())&&(F.table=Z.first)}},inputs:{data:"data",autoReload:"autoReload",renderObjects:"renderObjects",appendParentKey:"appendParentKey",hideEmpty:"hideEmpty",hideKeys:"hideKeys",customCss:"customCss"},outputs:{fetchData:"fetchData"},features:[r.TTD],decls:2,vars:9,consts:[["columnMode","flex",3,"data","columns","toolHeader","autoReload","customCss","autoSave","header","footer","limit"],["table",""]],template:function(R,F){1&R&&r._UZ(0,"cd-table",0,1),2&R&&r.Q6J("data",F.tableData)("columns",F.columns)("toolHeader",!1)("autoReload",F.autoReload)("customCss",F.customCss)("autoSave",!1)("header",!1)("footer",!1)("limit",0)},directives:[e.a],styles:[""]}),T})()},35905:(v,S,i)=>{"use strict";i.d(S,{a:()=>so});var r=i(74788),u=i(84051),p=i(23815),f=i.n(p),e=i(25917),_=i(18891),y=i(71225),T=i(99466),M=i(65862),R=i(86919),F=i(68774),Z=i(46947),J=i(12057),Q=i(38549),ee=i(24751),ue=i(76446),ae=i(6283),$=i(70442),se=i(66369),ve=i(37496),oe=i(47187),he=i(78877),me=i(52821),Oe=i(96102),ce=i(90068);const dt=["tableCellBoldTpl"],ze=["sparklineTpl"],Ye=["routerLinkTpl"],je=["checkIconTpl"],Ie=["perSecondTpl"],Ve=["executingTpl"],He=["classAddingTpl"],Zt=["badgeTpl"],st=["mapTpl"],en=["truncateTpl"],$t=["timeAgoTpl"],Gt=["rowDetailsTpl"];function Ut(Ze,Dr){1&Ze&&(r.TgZ(0,"div",21),r.TgZ(1,"div",22),r.Hsn(2),r.qZA(),r.qZA())}function Bt(Ze,Dr){if(1&Ze){const jt=r.EpF();r.ynx(0),r.TgZ(1,"button",37),r.NdJ("click",function(){const Wn=r.CHM(jt).$implicit;return r.oxw(3).onSelectFilter(Wn),!1}),r._uU(2),r.qZA(),r.BQk()}if(2&Ze){const jt=Dr.$implicit;r.xp6(2),r.Oqu(jt.column.name)}}const mt=function(Ze){return[Ze]};function Yt(Ze,Dr){if(1&Ze&&r._UZ(0,"i",29),2&Ze){const jt=r.oxw(4);r.Q6J("ngClass",r.VKq(1,mt,jt.icons.check))}}function Dt(Ze,Dr){if(1&Ze){const jt=r.EpF();r.ynx(0),r.TgZ(1,"button",37),r.NdJ("click",function(){const Wn=r.CHM(jt).$implicit,kn=r.oxw(3);return kn.onChangeFilter(kn.selectedFilter,Wn),!1}),r._uU(2),r.YNc(3,Yt,1,3,"i",38),r.qZA(),r.BQk()}if(2&Ze){const jt=Dr.$implicit,xt=r.oxw(3);r.xp6(2),r.hij(" ",jt.formatted," "),r.xp6(1),r.Q6J("ngIf",void 0!==xt.selectedFilter.value&&xt.selectedFilter.value.raw===jt.raw)}}const zt=function(Ze,Dr){return[Ze,Dr]};function Yn(Ze,Dr){if(1&Ze&&(r.TgZ(0,"div",33),r.TgZ(1,"div",34),r.TgZ(2,"button",35),r._UZ(3,"i",29),r._uU(4),r.qZA(),r.TgZ(5,"div",30),r.YNc(6,Bt,3,1,"ng-container",31),r.qZA(),r.qZA(),r.TgZ(7,"div",36),r.TgZ(8,"button",35),r._uU(9),r.qZA(),r.TgZ(10,"div",30),r.YNc(11,Dt,4,2,"ng-container",31),r.qZA(),r.qZA(),r.qZA()),2&Ze){const jt=r.oxw(2);r.xp6(3),r.Q6J("ngClass",r.WLB(7,zt,jt.icons.large,jt.icons.filter)),r.xp6(1),r.hij(" ",jt.selectedFilter.column.name," "),r.xp6(2),r.Q6J("ngForOf",jt.columnFilters),r.xp6(2),r.ekj("disabled",0===jt.selectedFilter.options.length),r.xp6(1),r.hij(" ",jt.selectedFilter.value?jt.selectedFilter.value.formatted:"Any"," "),r.xp6(2),r.Q6J("ngForOf",jt.selectedFilter.options)}}function Hr(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"div",39),r.TgZ(1,"span",40),r.TgZ(2,"span",41),r._UZ(3,"i",29),r.qZA(),r.qZA(),r.TgZ(4,"input",42),r.NdJ("ngModelChange",function(mn){return r.CHM(jt),r.oxw(2).search=mn})("keyup",function(){return r.CHM(jt),r.oxw(2).updateFilter()}),r.qZA(),r.TgZ(5,"div",43),r.TgZ(6,"button",44),r.NdJ("click",function(){return r.CHM(jt),r.oxw(2).onClearSearch()}),r._UZ(7,"i"),r.qZA(),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw(2);r.xp6(3),r.Q6J("ngClass",r.VKq(5,mt,jt.icons.search)),r.xp6(1),r.Q6J("ngModel",jt.search),r.xp6(3),r.Gre("icon-prepend ",jt.icons.destroy,"")}}function ci(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"div",45),r.TgZ(1,"input",46),r.NdJ("click",function(mn){return r.CHM(jt),r.oxw(2).setLimit(mn)})("keyup",function(mn){return r.CHM(jt),r.oxw(2).setLimit(mn)})("blur",function(mn){return r.CHM(jt),r.oxw(2).setLimit(mn)}),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw(2);r.xp6(1),r.Q6J("value",jt.userConfig.limit)}}function Ir(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"button",37),r.NdJ("click",function(){r.CHM(jt);const mn=r.oxw().$implicit;return r.oxw(2).toggleColumn(mn),!1}),r.TgZ(1,"div",48),r._UZ(2,"input",49),r.TgZ(3,"label",50),r._uU(4),r.qZA(),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw().$implicit;r.xp6(2),r.Q6J("name",jt.prop)("id",jt.prop)("checked",!jt.isHidden),r.xp6(1),r.Q6J("for",jt.prop),r.xp6(1),r.Oqu(jt.name)}}function wr(Ze,Dr){if(1&Ze&&(r.ynx(0),r.YNc(1,Ir,5,5,"button",47),r.BQk()),2&Ze){const jt=Dr.$implicit;r.xp6(1),r.Q6J("ngIf",""!==jt.name)}}function Qr(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"div",51),r.TgZ(1,"button",52),r.NdJ("click",function(){return r.CHM(jt),r.oxw(2).refreshBtn()}),r._UZ(2,"i",29),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw(2);r.xp6(1),r.Tol("btn btn-"+jt.status.type),r.Q6J("ngbTooltip",jt.status.msg),r.xp6(1),r.ekj("fa-spin",jt.updating||jt.loadingIndicator),r.Q6J("ngClass",r.WLB(6,zt,jt.icons.large,jt.icons.refresh))}}function Kr(Ze,Dr){if(1&Ze&&(r.TgZ(0,"div",21),r.TgZ(1,"div",22),r.Hsn(2,1),r.qZA(),r.YNc(3,Yn,12,10,"div",23),r.YNc(4,Hr,8,7,"div",24),r.YNc(5,ci,2,1,"div",25),r.TgZ(6,"div",26),r.TgZ(7,"div",27),r.TgZ(8,"button",28),r._UZ(9,"i",29),r.qZA(),r.TgZ(10,"div",30),r.YNc(11,wr,2,1,"ng-container",31),r.qZA(),r.qZA(),r.qZA(),r.YNc(12,Qr,3,9,"div",32),r.qZA()),2&Ze){const jt=r.oxw();r.xp6(3),r.Q6J("ngIf",0!==jt.columnFilters.length),r.xp6(1),r.Q6J("ngIf",jt.searchField),r.xp6(1),r.Q6J("ngIf",jt.limit),r.xp6(4),r.Q6J("ngClass",r.WLB(6,zt,jt.icons.large,jt.icons.table)),r.xp6(2),r.Q6J("ngForOf",jt.columns),r.xp6(1),r.Q6J("ngIf",jt.fetchData.observers.length>0)}}function In(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"span",57),r.TgZ(1,"span",58),r._uU(2),r.qZA(),r.TgZ(3,"a",59),r.NdJ("click",function(){r.CHM(jt);const mn=r.oxw().$implicit;return r.oxw(2).onChangeFilter(mn),!1}),r._UZ(4,"i",60),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw().$implicit,xt=r.oxw(2);r.xp6(2),r.AsE("",jt.column.name,": ",jt.value.formatted,""),r.xp6(2),r.Q6J("ngClass",r.VKq(3,mt,xt.icons.destroy))}}function Hn(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r.YNc(1,In,5,5,"span",56),r.qZA()),2&Ze){const jt=Dr.$implicit;r.xp6(1),r.Q6J("ngIf",jt.value)}}function Zr(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"div",21),r.TgZ(1,"div",53),r.YNc(2,Hn,2,1,"span",31),r.TgZ(3,"a",54),r.NdJ("click",function(){return r.CHM(jt),r.oxw().onClearFilters(),!1}),r.ynx(4),r.SDv(5,55),r.BQk(),r.qZA(),r.qZA(),r.qZA()}if(2&Ze){const jt=r.oxw();r.xp6(2),r.Q6J("ngForOf",jt.columnFilters)}}function Ur(Ze,Dr){1&Ze&&r.Hsn(0,2)}function di(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r._uU(1),r.ynx(2),r.SDv(3,66),r.BQk(),r._uU(4," / "),r.qZA()),2&Ze){const jt=r.oxw().selectedCount;r.xp6(1),r.hij(" ",jt," ")}}function $i(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r._uU(1),r.ynx(2),r.SDv(3,68),r.BQk(),r._uU(4," / "),r.qZA()),2&Ze){const jt=r.oxw(2).rowCount;r.xp6(1),r.hij(" ",jt," ")}}function Hi(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r.YNc(1,$i,5,1,"span",62),r._uU(2),r.ynx(3),r.SDv(4,67),r.BQk(),r.qZA()),2&Ze){const jt=r.oxw().rowCount,xt=r.oxw();r.xp6(1),r.Q6J("ngIf",jt!=(null==xt.data?null:xt.data.length)),r.xp6(1),r.hij(" ",(null==xt.data?null:xt.data.length)||0," ")}}function Br(Ze,Dr){if(1&Ze&&(r._uU(0),r.ynx(1),r.SDv(2,69),r.BQk(),r._uU(3),r.ynx(4),r.SDv(5,70),r.BQk()),2&Ze){const jt=r.oxw().rowCount,xt=r.oxw();r.hij(" ",(null==xt.data?null:xt.data.length)||0," "),r.xp6(3),r.hij(" / ",jt," ")}}function On(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"div",61),r.YNc(1,di,5,1,"span",62),r.YNc(2,Hi,5,2,"span",63),r.YNc(3,Br,6,2,"ng-template",null,64,r.W1O),r.qZA(),r.TgZ(5,"datatable-pager",65),r.NdJ("change",function(mn){return r.CHM(jt),r.oxw(),r.MAs(5).onFooterPage(mn)}),r.qZA()}if(2&Ze){const jt=Dr.rowCount,xt=Dr.pageSize,mn=Dr.curPage,Wn=r.MAs(4),kn=r.oxw();r.xp6(1),r.Q6J("ngIf",kn.selectionType),r.xp6(1),r.Q6J("ngIf",!kn.serverSide)("ngIfElse",Wn),r.xp6(3),r.Q6J("pagerLeftArrowIcon",kn.paginationClasses.pagerPrevious)("pagerRightArrowIcon",kn.paginationClasses.pagerNext)("pagerPreviousIcon",kn.paginationClasses.pagerLeftArrow)("pagerNextIcon",kn.paginationClasses.pagerRightArrow)("page",mn)("size",xt)("count",jt)("hidden",!(jt/xt>1))}}function Wt(Ze,Dr){if(1&Ze&&(r.TgZ(0,"strong"),r._uU(1),r.qZA()),2&Ze){const jt=Dr.value;r.xp6(1),r.Oqu(jt)}}function Jn(Ze,Dr){if(1&Ze&&r._UZ(0,"cd-sparkline",71),2&Ze){const jt=Dr.row;r.Q6J("data",Dr.value)("isBinary",jt.cdIsBinary)}}function ir(Ze,Dr){if(1&Ze&&(r.TgZ(0,"a",72),r._uU(1),r.qZA()),2&Ze){const jt=Dr.row,xt=Dr.value;r.Q6J("routerLink",r.VKq(3,mt,jt.cdLink))("queryParams",jt.cdParams),r.xp6(1),r.Oqu(xt)}}function Lr(Ze,Dr){if(1&Ze&&(r._UZ(0,"i",73),r.ALo(1,"boolean")),2&Ze){const jt=Dr.value,xt=r.oxw();r.Q6J("ngClass",r.VKq(4,mt,xt.icons.check))("hidden",!r.lcZ(1,2,jt))}}function Vn(Ze,Dr){1&Ze&&(r._uU(0),r.ALo(1,"dimless")),2&Ze&&r.hij(" ",r.lcZ(1,1,Dr.value)," /s\n")}function zr(Ze,Dr){if(1&Ze&&r._UZ(0,"i",29),2&Ze){const jt=r.oxw(2);r.Q6J("ngClass",r.WLB(1,zt,jt.icons.spinner,jt.icons.spin))}}function hi(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span",29),r._uU(1),r.qZA()),2&Ze){const jt=r.oxw(),xt=jt.column,mn=jt.row;r.Q6J("ngClass",null!=xt&&null!=xt.customTemplateConfig&&xt.customTemplateConfig.executingClass?xt.customTemplateConfig.executingClass:"text-muted italic"),r.xp6(1),r.hij("(",mn.cdExecuting,")")}}function Ai(Ze,Dr){if(1&Ze&&(r.YNc(0,zr,1,4,"i",38),r.TgZ(1,"span",29),r._uU(2),r.qZA(),r.YNc(3,hi,2,2,"span",38)),2&Ze){const jt=Dr.column,xt=Dr.row,mn=Dr.value;r.Q6J("ngIf",xt.cdExecuting),r.xp6(1),r.Q6J("ngClass",null==jt||null==jt.customTemplateConfig?null:jt.customTemplateConfig.valueClass),r.xp6(1),r.hij(" ",mn," "),r.xp6(1),r.Q6J("ngIf",xt.cdExecuting)}}function Tr(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r.ALo(1,"pipeFunction"),r._uU(2),r.qZA()),2&Ze){const jt=Dr.value,xt=r.oxw();r.Tol(r.Dn7(1,4,jt,xt.useCustomClass,xt)),r.xp6(2),r.Oqu(jt)}}function Nr(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span",75),r._uU(1),r.qZA()),2&Ze){const jt=r.oxw().$implicit,xt=r.oxw().column;r.Q6J("ngClass",null!=xt&&null!=xt.customTemplateConfig&&xt.customTemplateConfig.map&&null!=xt&&null!=xt.customTemplateConfig&&null!=xt.customTemplateConfig.map[jt]&&xt.customTemplateConfig.map[jt].class?xt.customTemplateConfig.map[jt].class:null!=xt&&null!=xt.customTemplateConfig&&xt.customTemplateConfig.class?xt.customTemplateConfig.class:"badge-primary"),r.xp6(1),r.hij(" ",null!=xt&&null!=xt.customTemplateConfig&&xt.customTemplateConfig.map&&null!=xt&&null!=xt.customTemplateConfig&&null!=xt.customTemplateConfig.map[jt]&&xt.customTemplateConfig.map[jt].value?xt.customTemplateConfig.map[jt].value:null!=xt&&null!=xt.customTemplateConfig&&xt.customTemplateConfig.prefix?xt.customTemplateConfig.prefix+jt:jt," ")}}function gn(Ze,Dr){1&Ze&&(r.TgZ(0,"span"),r._uU(1,"\xa0"),r.qZA())}function En(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r.YNc(1,Nr,2,2,"span",74),r.YNc(2,gn,2,0,"span",62),r.qZA()),2&Ze){const jt=Dr.$implicit,xt=Dr.last,mn=r.oxw().column;r.xp6(1),r.Q6J("ngIf",null!=mn&&null!=mn.customTemplateConfig&&mn.customTemplateConfig.map&&null!=mn&&null!=mn.customTemplateConfig&&null!=mn.customTemplateConfig.map[jt]&&mn.customTemplateConfig.map[jt].value?mn.customTemplateConfig.map[jt].value:null!=mn&&null!=mn.customTemplateConfig&&mn.customTemplateConfig.prefix?mn.customTemplateConfig.prefix+jt:jt),r.xp6(1),r.Q6J("ngIf",!xt)}}function mr(Ze,Dr){1&Ze&&(r.YNc(0,En,3,2,"span",31),r.ALo(1,"array")),2&Ze&&r.Q6J("ngForOf",r.lcZ(1,1,Dr.value))}function Xt(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span"),r._uU(1),r.ALo(2,"map"),r.qZA()),2&Ze){const jt=Dr.column,xt=Dr.value;r.xp6(1),r.Oqu(r.xi3(2,1,xt,null==jt?null:jt.customTemplateConfig))}}function zn(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span",76),r._uU(1),r.ALo(2,"truncate"),r.qZA()),2&Ze){const jt=Dr.column,xt=Dr.value;r.Q6J("title",xt),r.xp6(1),r.Oqu(r.Dn7(2,2,xt,null==jt||null==jt.customTemplateConfig?null:jt.customTemplateConfig.length,null==jt||null==jt.customTemplateConfig?null:jt.customTemplateConfig.omission))}}function vr(Ze,Dr){if(1&Ze){const jt=r.EpF();r.TgZ(0,"a",77),r.NdJ("click",function(mn){const Wn=r.CHM(jt),kn=Wn.row,wn=Wn.expanded;return r.oxw().toggleExpandRow(kn,wn,mn)}),r.qZA()}if(2&Ze){const jt=Dr.expanded;r.ekj("expand-collapse-icon-right",!jt)("expand-collapse-icon-down",jt)}}function si(Ze,Dr){if(1&Ze&&(r.TgZ(0,"span",76),r.ALo(1,"cdDate"),r._uU(2),r.ALo(3,"relativeDate"),r.qZA()),2&Ze){const jt=Dr.value;r.Q6J("title",r.lcZ(1,2,jt)),r.xp6(2),r.Oqu(r.lcZ(3,4,jt))}}const Ii=[[["",8,"only-table-actions"]],[["",8,"table-actions"]],[["","cdTableDetail",""]]],no=[".only-table-actions",".table-actions","[cdTableDetail]"];let so=(()=>{class Ze{constructor(jt,xt){this.cdRef=jt,this.timerService=xt,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.maxLimit=9999,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.status=new y.c,this.serverSide=!1,this.count=0,this.fetchData=new r.vpe,this.updateSelection=new r.vpe,this.setExpandedRow=new r.vpe,this.columnFiltersChanged=new r.vpe,this.selection=new F.r,this.expanded=void 0,this.icons=M.P,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.paginationClasses={pagerLeftArrow:M.P.leftArrowDouble,pagerRightArrow:M.P.rightArrowDouble,pagerPrevious:M.P.leftArrow,pagerNext:M.P.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return f().some(this.columnFilters,jt=>void 0!==jt.value)}static prepareSearch(jt){return(jt=jt.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(jt=jt.replace(/['"][^'"]+['"]/g,xt=>xt.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),jt.split(" ").filter(xt=>xt)}ngOnInit(){if(this.localColumns=f().clone(this.columns),this.serverSide&&(this.reloadData=f().debounce(this.reloadData,1e3)),this.table.element.addEventListener("mouseenter",jt=>jt.stopPropagation()),this._addTemplates(),!this.sorts){const jt=-1!==f().findIndex(this.localColumns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(jt?this.identifier:this.localColumns[0].prop+""),!jt&&!this.forceIdentifier&&(this.identifier=this.localColumns[0].prop+"")}this.initUserConfig(),this.localColumns.forEach(jt=>{jt.cellTransformation&&(jt.cellTemplate=this.cellTemplates[jt.cellTransformation]),jt.flexGrow||(jt.flexGrow=jt.prop+""===this.identifier?1:2),jt.resizeable||(jt.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.updateSelection.emit(new F.r),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),f().isInteger(this.autoReload)&&this.autoReload>0?this.reloadSubscriber=this.timerService.get(()=>(0,e.of)(0),this.autoReload).subscribe(()=>{this.reloadData()}):this.autoReload?this.useData():this.reloadData(),"single"===this.selectionType&&(this.table.selectCheck=this.singleSelectCheck.bind(this))}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.localColumns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.offset>=0||(this.userConfig.offset=this.table.offset),this.userConfig.search||(this.userConfig.search=this.search),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.userConfig.columns.forEach(jt=>{for(let xt=0;xt<this.localColumns.length;xt++)this.localColumns[xt].prop===jt.prop&&(this.localColumns[xt].isHidden=jt.isHidden)}):this.updateUserColumns()}_calculateUniqueTableName(jt){const xt=mn=>{if(!f().isString(mn))return 0;let Wn=0;for(let kn=0;kn<mn.length;kn++)Wn+=mn.charCodeAt(kn)*kn;return Wn};return jt.reduce((mn,Wn,kn)=>(xt(Wn.prop)+xt(Wn.name))*(kn+1)+mn,0).toString()}_loadUserConfig(){const jt=this.localStorage.getItem(this.tableName);jt&&(this.userConfig=JSON.parse(jt))}_initUserConfigAutoSave(){const jt=new _.y(this._initUserConfigProxy.bind(this));this.saveSubscriber=jt.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(jt){this.userConfig=new Proxy(this.userConfig,{set:(xt,mn,Wn)=>(xt[mn]=Wn,jt.next(xt),!0)})}_saveUserConfig(jt){this.localStorage.setItem(this.tableName,JSON.stringify(jt))}updateUserColumns(){this.userConfig.columns=this.localColumns.map(jt=>({prop:jt.prop,name:jt.name,isHidden:!!jt.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.localColumns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.localColumns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.localColumns.filter(jt=>!jt.isHidden)}initColumnFilters(){let jt=f().filter(this.localColumns,{filterable:!0});jt=[...jt,...this.extraFilterableColumns],this.columnFilters=jt.map(xt=>({column:xt,options:[],value:xt.filterInitValue?this.createColumnFilterOption(xt.filterInitValue,xt.pipe):void 0})),this.selectedFilter=f().first(this.columnFilters)}createColumnFilterOption(jt,xt){return{raw:f().toString(jt),formatted:xt?xt.transform(jt):f().toString(jt)}}updateColumnFilterOptions(){this.columnFilters.forEach(jt=>{let xt=[];if(f().isUndefined(jt.column.filterOptions)){const Wn=f().filter(f().map(this.data,jt.column.prop),kn=>f().isString(kn)&&""!==kn||f().isBoolean(kn)||f().isFinite(kn)||f().isDate(kn));xt=f().sortedUniq(Wn.sort())}else xt=jt.column.filterOptions;const mn=xt.map(Wn=>this.createColumnFilterOption(Wn,jt.column.pipe));jt.value&&f().isUndefined(f().find(mn,{raw:jt.value.raw}))&&(jt.value=void 0),jt.options=mn})}onSelectFilter(jt){this.selectedFilter=jt}onChangeFilter(jt,xt){jt.value=f().isEqual(jt.value,xt)?void 0:xt,this.updateFilter()}doColumnFiltering(){const jt=[];let xt=[...this.data],mn=[];return this.columnFilters.forEach(Wn=>{if(void 0===Wn.value)return;jt.push({name:Wn.column.name,prop:Wn.column.prop,value:Wn.value});const kn=f().partition(xt,wn=>{const Gi=(0,u.Hg)(Wn.column.prop)(wn,Wn.column.prop);return f().isUndefined(Wn.column.filterPredicate)?`${Gi}`===Wn.value.raw:Wn.column.filterPredicate(wn,Wn.value.raw)});xt=kn[0],mn=[...mn,...kn[1]]}),this.columnFiltersChanged.emit({filters:jt,data:xt,dataOut:mn}),f().forEach(this.selection.selected,Wn=>{void 0===f().find(xt,{[this.identifier]:Wn[this.identifier]})&&(this.selection=new F.r,this.onSelect(this.selection))}),xt}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),f().get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl,this.cellTemplates.timeAgo=this.timeAgoTpl}useCustomClass(jt){if(!this.customCss)throw new Error("Custom classes are not set!");const xt=Object.keys(this.customCss),mn=Object.values(this.customCss).map((Wn,kn)=>(f().isFunction(Wn)&&Wn(jt)||Wn===jt)&&xt[kn]).filter(Wn=>Wn).join(" ");return f().isEmpty(mn)?void 0:mn}ngOnChanges(jt){jt.data&&jt.data.currentValue&&this.useData()}setLimit(jt){const xt=Number(jt.target.value);xt>0&&(this.maxLimit&&xt>this.maxLimit?(this.userConfig.limit=this.maxLimit,jt.srcElement.value=this.maxLimit):this.userConfig.limit=xt),this.serverSide&&this.reloadData()}reloadData(){var jt;if(!this.updating){this.status=new y.c;const xt=new R.E(()=>{xt.errorConfig.displayError&&(this.status=new y.c("danger","Failed to load data.")),xt.errorConfig.resetData&&(this.data=[]),this.useData()});if(xt.pageInfo.offset=this.userConfig.offset,xt.pageInfo.limit=this.userConfig.limit,xt.search=this.userConfig.search,null===(jt=this.userConfig.sorts)||void 0===jt?void 0:jt.length){const mn=this.userConfig.sorts[0];xt.sort=`${"desc"===mn.dir?"-":"+"}${mn.prop}`}this.fetchData.emit(xt),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}changePage(jt){this.userConfig.offset=jt.offset,this.userConfig.limit=jt.limit,this.serverSide&&this.reloadData()}rowIdentity(){return jt=>{const xt=jt[this.identifier];if(f().isUndefined(xt))throw new Error(`Wrong identifier "${this.identifier}" -> "${xt}"`);return xt}}useData(){!this.data||(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const jt=new Set;this.selection.selected.forEach(mn=>{for(const Wn of this.data)mn[this.identifier]===Wn[this.identifier]&&jt.add(Wn)});const xt=Array.from(jt.values());"onChange"===this.updateSelectionOnRefresh&&f().isEqual(this.selection.selected,xt)||(this.selection.selected=xt,this.onSelect(this.selection))}updateExpanded(){if(f().isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const jt=this.expanded[this.identifier],xt=f().find(this.data,mn=>jt===mn[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&f().isEqual(this.expanded,xt)||(this.expanded=xt,this.setExpandedRow.emit(xt))}onSelect(jt){f().has(jt,"selected")&&(this.selection.selected=jt.selected),this.updateSelection.emit(f().clone(this.selection))}singleSelectCheck(jt){return-1===this.selection.selected.indexOf(jt)}toggleColumn(jt){const xt=jt.prop,mn=!jt.isHidden;mn&&1===this.tableColumns.length?jt.isHidden=!0:(f().find(this.localColumns,Wn=>Wn.prop===xt).isHidden=mn,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const jt=this.userConfig.sorts[0].prop;f().find(this.tableColumns,xt=>xt.prop===jt)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(jt){return[{prop:jt,dir:u.Sr.asc}]}changeSorting({sorts:jt}){this.userConfig.sorts=jt,this.serverSide&&(this.userConfig.offset=0,this.reloadData())}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(jt=>{jt.value=void 0}),this.selectedFilter=f().first(this.columnFilters),this.updateFilter()}updateFilter(){if(this.serverSide)this.userConfig.search!==this.search&&(this.userConfig.offset=0,this.userConfig.limit=this.limit,this.userConfig.search=this.search,this.updating=!1,this.reloadData()),this.rows=this.data;else{let jt=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&jt){const xt=this.localColumns.filter(mn=>mn.cellTransformation!==T.e.sparkline);jt=this.subSearch(jt,Ze.prepareSearch(this.search),xt),this.table.offset=0}this.rows=jt}}subSearch(jt,xt,mn){if(0===xt.length||0===jt.length)return jt;const Wn=xt.pop().replace(/\+/g," ").split(":"),kn=[...mn];return 2===Wn.length&&(mn=kn.filter(wn=>-1!==wn.name.toLowerCase().indexOf(Wn[0]))),jt=this.basicDataSearch(f().last(Wn),jt,mn),this.subSearch(jt,xt,kn)}basicDataSearch(jt,xt,mn){return 0===jt.length?xt:xt.filter(Wn=>mn.filter(kn=>{let wn=f().get(Wn,kn.prop);if(f().isUndefined(kn.pipe)||(wn=kn.pipe.transform(wn)),f().isUndefined(wn)||f().isNull(wn))return!1;if(f().isArray(wn)?wn=wn.join(" "):(f().isNumber(wn)||f().isBoolean(wn))&&(wn=wn.toString()),f().isObjectLike(wn)){if(!this.searchableObjects)return!1;wn=JSON.stringify(wn)}return-1!==wn.toLowerCase().indexOf(jt)}).length>0)}getRowClass(){return()=>({clickable:!f().isUndefined(this.selectionType)})}toggleExpandRow(jt,xt,mn){mn.stopPropagation(),xt?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=jt,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(jt)),this.table.rowDetail.toggleExpandRow(jt)}}return Ze.\u0275fac=function(jt){return new(jt||Ze)(r.Y36(r.sBO),r.Y36(Z.f))},Ze.\u0275cmp=r.Xpm({type:Ze,selectors:[["cd-table"]],viewQuery:function(jt,xt){if(1&jt&&(r.Gf(u.nE,7),r.Gf(dt,7),r.Gf(ze,7),r.Gf(Ye,7),r.Gf(je,7),r.Gf(Ie,7),r.Gf(Ve,7),r.Gf(He,7),r.Gf(Zt,7),r.Gf(st,7),r.Gf(en,7),r.Gf($t,7),r.Gf(Gt,7)),2&jt){let mn;r.iGM(mn=r.CRH())&&(xt.table=mn.first),r.iGM(mn=r.CRH())&&(xt.tableCellBoldTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.sparklineTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.routerLinkTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.checkIconTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.perSecondTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.executingTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.classAddingTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.badgeTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.mapTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.truncateTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.timeAgoTpl=mn.first),r.iGM(mn=r.CRH())&&(xt.rowDetailsTpl=mn.first)}},inputs:{data:"data",columns:"columns",sorts:"sorts",columnMode:"columnMode",onlyActionHeader:"onlyActionHeader",toolHeader:"toolHeader",searchField:"searchField",header:"header",footer:"footer",limit:"limit",maxLimit:"maxLimit",hasDetails:"hasDetails",autoReload:"autoReload",identifier:"identifier",forceIdentifier:"forceIdentifier",selectionType:"selectionType",updateSelectionOnRefresh:"updateSelectionOnRefresh",updateExpandedOnRefresh:"updateExpandedOnRefresh",autoSave:"autoSave",searchableObjects:"searchableObjects",customCss:"customCss",extraFilterableColumns:"extraFilterableColumns",status:"status",serverSide:"serverSide",count:"count"},outputs:{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow",columnFiltersChanged:"columnFiltersChanged"},features:[r.TTD],ngContentSelectors:no,decls:35,vars:21,consts:function(){let Dr,jt,xt,mn,Wn,kn,wn;return Dr="Clear filters",jt="selected",xt="total",mn="found",Wn="found",kn="total",wn="Expand/Collapse Row",[[1,"dataTables_wrapper"],["class","dataTables_header clearfix",4,"ngIf"],[1,"bootstrap","cd-datatable",3,"cssClasses","selectionType","selected","sorts","columns","columnMode","rows","rowClass","headerHeight","footerHeight","count","externalPaging","externalSorting","limit","offset","loadingIndicator","rowIdentity","rowHeight","select","sort","page"],["table",""],["rowHeight","auto"],["detailRow",""],["ngx-datatable-row-detail-template",""],["ngx-datatable-footer-template",""],["tableCellBoldTpl",""],["sparklineTpl",""],["routerLinkTpl",""],["checkIconTpl",""],["perSecondTpl",""],["executingTpl",""],["classAddingTpl",""],["badgeTpl",""],["mapTpl",""],["truncateTpl",""],["ngx-datatable-cell-template",""],["rowDetailsTpl",""],["timeAgoTpl",""],[1,"dataTables_header","clearfix"],[1,"cd-datatable-actions"],["class","btn-group widget-toolbar",4,"ngIf"],["class","input-group search",4,"ngIf"],["class","input-group dataTables_paginate",4,"ngIf"],[1,"widget-toolbar"],["ngbDropdown","","autoClose","outside",1,"tc_menuitem"],["ngbDropdownToggle","",1,"btn","btn-light","tc_columnBtn"],[3,"ngClass"],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["class","widget-toolbar tc_refreshBtn",4,"ngIf"],[1,"btn-group","widget-toolbar"],["ngbDropdown","","placement","bottom-right",1,"tc_filter_name"],["ngbDropdownToggle","",1,"btn","btn-light"],["ngbDropdown","","placement","bottom-right",1,"tc_filter_option"],["ngbDropdownItem","",3,"click"],[3,"ngClass",4,"ngIf"],[1,"input-group","search"],[1,"input-group-prepend"],[1,"input-group-text"],["type","text",1,"form-control",3,"ngModel","ngModelChange","keyup"],[1,"input-group-append"],["type","button",1,"btn","btn-light",3,"click"],[1,"input-group","dataTables_paginate"],["type","number","min","1","max","9999",1,"form-control",3,"value","click","keyup","blur"],["ngbDropdownItem","",3,"click",4,"ngIf"],[1,"custom-control","custom-checkbox","py-0"],["type","checkbox",1,"custom-control-input",3,"name","id","checked"],[1,"custom-control-label",3,"for"],[1,"widget-toolbar","tc_refreshBtn"],["type","button",3,"ngbTooltip","click"],[1,"filter-chips"],["href","",1,"tc_clearSelections",3,"click"],Dr,["class","badge badge-info mr-2",4,"ngIf"],[1,"badge","badge-info","mr-2"],[1,"mr-2"],[1,"badge-remove",3,"click"],["aria-hidden","true",3,"ngClass"],[1,"page-count"],[4,"ngIf"],[4,"ngIf","ngIfElse"],["serverSideTpl",""],[3,"pagerLeftArrowIcon","pagerRightArrowIcon","pagerPreviousIcon","pagerNextIcon","page","size","count","hidden","change"],jt,xt,mn,Wn,kn,[3,"data","isBinary"],[3,"routerLink","queryParams"],[3,"ngClass","hidden"],["class","badge",3,"ngClass",4,"ngIf"],[1,"badge",3,"ngClass"],["data-toggle","tooltip",3,"title"],["href","javascript:void(0)","title",wn,1,"expand-collapse-icon","tc_expand-collapse",3,"click"]]},template:function(jt,xt){1&jt&&(r.F$t(Ii),r.TgZ(0,"div",0),r.YNc(1,Ut,3,0,"div",1),r.YNc(2,Kr,13,9,"div",1),r.YNc(3,Zr,6,1,"div",1),r.TgZ(4,"ngx-datatable",2,3),r.NdJ("select",function(Wn){return xt.onSelect(Wn)})("sort",function(Wn){return xt.changeSorting(Wn)})("page",function(Wn){return xt.changePage(Wn)}),r.TgZ(6,"ngx-datatable-row-detail",4,5),r.YNc(8,Ur,1,0,"ng-template",6),r.qZA(),r.TgZ(9,"ngx-datatable-footer"),r.YNc(10,On,6,11,"ng-template",7),r.qZA(),r.qZA(),r.qZA(),r.YNc(11,Wt,2,1,"ng-template",null,8,r.W1O),r.YNc(13,Jn,1,2,"ng-template",null,9,r.W1O),r.YNc(15,ir,2,5,"ng-template",null,10,r.W1O),r.YNc(17,Lr,2,6,"ng-template",null,11,r.W1O),r.YNc(19,Vn,2,3,"ng-template",null,12,r.W1O),r.YNc(21,Ai,4,4,"ng-template",null,13,r.W1O),r.YNc(23,Tr,3,8,"ng-template",null,14,r.W1O),r.YNc(25,mr,2,3,"ng-template",null,15,r.W1O),r.YNc(27,Xt,3,4,"ng-template",null,16,r.W1O),r.YNc(29,zn,3,6,"ng-template",null,17,r.W1O),r.YNc(31,vr,1,4,"ng-template",18,19,r.W1O),r.YNc(33,si,4,6,"ng-template",null,20,r.W1O)),2&jt&&(r.xp6(1),r.Q6J("ngIf",xt.onlyActionHeader),r.xp6(1),r.Q6J("ngIf",xt.toolHeader),r.xp6(1),r.Q6J("ngIf",xt.toolHeader&&xt.columnFiltered),r.xp6(1),r.Q6J("cssClasses",xt.paginationClasses)("selectionType",xt.selectionType)("selected",xt.selection.selected)("sorts",xt.userConfig.sorts)("columns",xt.tableColumns)("columnMode",xt.columnMode)("rows",xt.rows)("rowClass",xt.getRowClass())("headerHeight",xt.header?"auto":0)("footerHeight",xt.footer?"auto":0)("count",xt.count)("externalPaging",xt.serverSide)("externalSorting",xt.serverSide)("limit",xt.userConfig.limit>0?xt.userConfig.limit:void 0)("offset",xt.userConfig.offset>=0?xt.userConfig.offset:0)("loadingIndicator",xt.loadingIndicator)("rowIdentity",xt.rowIdentity())("rowHeight","auto"))},directives:[J.O5,u.nE,u.$7,u.AR,u.dX,u.ii,u.vq,Q.jt,Q.iD,J.mk,Q.Vi,J.sg,Q.TH,ee.Fj,ee.JJ,ee.On,Q._L,u.Ke,ue.l,ae.yS],pipes:[$.i,se.n,ve.i,oe.I,he.b,me.W,Oe.N,ce.h],styles:['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px;max-width:99.9%}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);display:inline-block;height:30px;margin-left:5px;padding-left:5px;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);float:right;padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f8f9fa;border:1px solid #ced4da;border-bottom:0;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{border-left:1px solid rgba(0,0,0,.09);float:right;max-width:250px;padding-left:8px;padding-right:8px;width:40%}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{min-width:85px;padding-right:8px;width:8%}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]   .badge-remove[_ngcontent-%COMP%]{color:#fff}  cd-table .cd-datatable{border:1px solid #ced4da;margin-bottom:0;max-width:none!important}  cd-table .cd-datatable .progress-linear{display:block;height:5px;margin:0;padding:0;position:relative;width:100%}  cd-table .cd-datatable .progress-linear .container{background-color:#2b99a8}  cd-table .cd-datatable .progress-linear .container .bar{background-color:#2b99a8;height:100%;left:0;overflow:hidden;position:absolute;width:100%}  cd-table .cd-datatable .progress-linear .container .bar:before{animation:progress-loading 3s linear infinite;background-color:#2b99a8;content:"";display:block;height:100%;left:-200px;position:absolute;width:200px}  cd-table .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f8f9fa;background-image:linear-gradient(to bottom,#f8f9fa 0,#e9ecef 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa",endColorstr="#ffededed",GradientType=0)}  cd-table .cd-datatable .datatable-header .sort-asc,   cd-table .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  cd-table .cd-datatable .datatable-header .datatable-header-cell{border:0;border-bottom:1px solid #ced4da;border-left:1px solid #ced4da;padding:5px;font-weight:bold;text-align:left}  cd-table .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" \\f0dc"}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" \\f160"}  cd-table .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" \\f161"}  cd-table .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:0}  cd-table .cd-datatable .datatable-body{margin-bottom:-6px}  cd-table .cd-datatable .datatable-body .empty-row{background-color:#c8ecf1;font-style:italic;font-weight:bold;padding-bottom:5px;padding-top:5px;text-align:center}  cd-table .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#c8ecf1;transition-duration:.3s;transition-property:background;transition-timing-function:linear}  cd-table .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  cd-table .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f8f9fa}  cd-table .cd-datatable .datatable-body .datatable-body-row.active,   cd-table .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#9fdee6}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{border:0;border-bottom:1px solid #ced4da;border-left:1px solid #ced4da;padding:5px}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:0}  cd-table .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  cd-table .cd-datatable .datatable-body .datatable-row-detail{border-bottom:2px solid #ced4da;overflow-y:visible!important;padding:20px}  cd-table .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  cd-table .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  cd-table .cd-datatable .datatable-body .expand-collapse-icon-right:before{color:#212529;font-family:"ForkAwesome",sans-serif;font-size:1rem;line-height:1;content:"\\f105"}  cd-table .cd-datatable .datatable-body .expand-collapse-icon-down:before{color:#212529;font-family:"ForkAwesome",sans-serif;font-size:1rem;line-height:1;content:"\\f107"}  cd-table .cd-datatable .datatable-footer .selected-count,   cd-table .cd-datatable .datatable-footer .page-count{font-style:italic;min-height:2rem;padding-left:.3rem;padding-top:.3rem}  cd-table .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{0%{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}'],changeDetection:0}),Ze})()},93523:(v,S,i)=>{"use strict";i.d(S,{o:()=>p,G:()=>f});var r=i(23815),u=i.n(r);function p(...y){switch(y.length){case 1:return e.apply(void 0,y);case 3:return _.apply(void 0,y);default:throw new Error}}function f(y,T,M){const R=`__ignore_${T}`;Array.isArray(y[R])?y[R].push(M):y[R]=[M]}function e(y){for(const T of Object.getOwnPropertyNames(y.prototype)){const M=Object.getOwnPropertyDescriptor(y.prototype,T);!(M.value instanceof Function)||"constructor"===T||(_(y.prototype,T,M),Object.defineProperty(y.prototype,T,M))}}function _(y,T,M){void 0===M&&(M=Object.getOwnPropertyDescriptor(y,T));const R=M.value;M.value=function(){const F=`__ignore_${T}`,Z=y[F]||[],J=[];for(let ee=0;ee<arguments.length;ee++)J[ee]=u().isString(arguments[ee])&&-1===Z.indexOf(ee)?encodeURIComponent(arguments[ee]):arguments[ee];return R.apply(this,J)}}},82945:(v,S,i)=>{"use strict";i.d(S,{U:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{constructor(y){this.elementRef=y,this.focus=!0}ngAfterViewInit(){const y=this.elementRef.nativeElement;this.focus&&u().isFunction(y.focus)&&y.focus()}set autofocus(y){u().isBoolean(y)?this.focus=y:u().isFunction(y)&&(this.focus=y())}}return e.\u0275fac=function(y){return new(y||e)(p.Y36(p.SBq))},e.\u0275dir=p.lG2({type:e,selectors:[["","autofocus",""]],inputs:{autofocus:"autofocus"}}),e})()},17932:(v,S,i)=>{"use strict";i.d(S,{Q:()=>y});var r=i(74788),u=i(23815),p=i.n(u),f=i(47557),e=i(28211),_=i(24751);let y=(()=>{class T{constructor(R,F,Z,J){this.elementRef=R,this.control=F,this.dimlessBinaryPipe=Z,this.formatter=J,this.ngModelChange=new r.vpe,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(R){/^[\d.]+$/.test(R)&&(R+=this.defaultUnit||"m");const F=this.formatter.toBytes(R),Z=this.round(F);this.el.value=this.dimlessBinaryPipe.transform(Z),null!==F?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(R){if(null!==R&&0!==R){if(!p().isUndefined(this.minBytes)&&R<this.minBytes)return this.minBytes;if(!p().isUndefined(this.maxBytes)&&R>this.maxBytes)return this.maxBytes;if(!p().isUndefined(this.roundPower)){const F=Math.round(Math.log(R)/Math.log(this.roundPower));return Math.pow(this.roundPower,F)}}return R}onBlur(R){this.setValue(R)}}return T.\u0275fac=function(R){return new(R||T)(r.Y36(r.SBq),r.Y36(_.a5),r.Y36(f.$),r.Y36(e.H))},T.\u0275dir=r.lG2({type:T,selectors:[["","cdDimlessBinary",""]],hostBindings:function(R,F){1&R&&r.NdJ("blur",function(J){return F.onBlur(J.target.value)})},inputs:{minBytes:"minBytes",maxBytes:"maxBytes",roundPower:"roundPower",defaultUnit:"defaultUnit"},outputs:{ngModelChange:"ngModelChange"}}),T})()},35540:(v,S,i)=>{"use strict";i.d(S,{o:()=>u});var r=i(74788);let u=(()=>{class p{}return p.\u0275fac=function(e){return new(e||p)},p.\u0275mod=r.oAB({type:p}),p.\u0275inj=r.cJS({imports:[[]]}),p})()},87925:(v,S,i)=>{"use strict";i.d(S,{o:()=>f});var r=i(74788),u=i(84333),p=i(74937);let f=(()=>{class e{constructor(y,T,M){this.formScope=y,this.authStorageService=T,this.elementRef=M}ngAfterViewInit(){var y,T,M;this.permissions=this.authStorageService.getPermissions();const R=null===(y=this.formScope)||void 0===y?void 0:y.cdFormScope;R&&!(null===(M=null===(T=this.permissions)||void 0===T?void 0:T[R])||void 0===M?void 0:M.update)&&(this.elementRef.nativeElement.disabled=!0)}}return e.\u0275fac=function(y){return new(y||e)(r.Y36(u.T,8),r.Y36(p.j),r.Y36(r.SBq))},e.\u0275dir=r.lG2({type:e,selectors:[["input",3,"cdNoFormInputDisable",""],["select",3,"cdNoFormInputDisable",""],["button",3,"cdNoFormInputDisable",""],["","cdFormInputDisable",""]]}),e})()},63622:(v,S,i)=>{"use strict";i.d(S,{y:()=>e});var r=i(34501),u=i(8958),p=i(93614),f=i(74788);let e=(()=>{class _{constructor(T,M,R){this.templateRef=T,this.viewContainer=M,this.componentFactoryResolver=R}set cdFormLoading(T){let M,R;switch(this.viewContainer.clear(),T){case p.Q.Loading:M=this.componentFactoryResolver.resolveComponentFactory(u.b),R=this.resolveNgContent("Loading form data..."),this.viewContainer.createComponent(M,null,null,R);break;case p.Q.Ready:this.viewContainer.createEmbeddedView(this.templateRef);break;case p.Q.Error:M=this.componentFactoryResolver.resolveComponentFactory(r.G),R=this.resolveNgContent("Form data could not be loaded."),this.viewContainer.createComponent(M,null,null,R).instance.type="error"}}resolveNgContent(T){return[[document.createTextNode(T)]]}}return _.\u0275fac=function(T){return new(T||_)(f.Y36(f.Rgc),f.Y36(f.s_b),f.Y36(f._Vd))},_.\u0275dir=f.lG2({type:_,selectors:[["","cdFormLoading",""]],inputs:{cdFormLoading:"cdFormLoading"}}),_})()},84333:(v,S,i)=>{"use strict";i.d(S,{T:()=>u});var r=i(74788);let u=(()=>{class p{}return p.\u0275fac=function(e){return new(e||p)},p.\u0275dir=r.lG2({type:p,selectors:[["","cdFormScope",""]],inputs:{cdFormScope:"cdFormScope"}}),p})()},94276:(v,S,i)=>{"use strict";i.d(S,{b:()=>f});var r=i(74788),u=i(24751);let f=(()=>{class e{constructor(y){this.parent=y}get validClass(){return!!this.control&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return function(e,_){return[..._.path,e]}(this.formControlName,this.parent)}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}}return e.\u0275fac=function(y){return new(y||e)(r.Y36(u.gN,13))},e.\u0275dir=r.lG2({type:e,selectors:[["",8,"form-control"],["",8,"form-check-input"],["",8,"custom-control-input"]],hostVars:4,hostBindings:function(y,T){2&y&&r.ekj("is-valid",T.validClass)("is-invalid",T.invalidClass)},inputs:{formControlName:"formControlName",formControl:"formControl"}}),e})()},56310:(v,S,i)=>{"use strict";i.d(S,{P:()=>p});var r=i(24751),u=i(74788);let p=(()=>{class f{constructor(_){this.elRef=_,this.validationDisabled=!1}get hasErrors(){return this.formControlNames.some(_=>!_.valid&&_.dirty&&_.touched)&&!this.validationDisabled}get hasSuccess(){return!this.formControlNames.some(_=>!_.valid)&&this.formControlNames.some(_=>_.dirty&&_.touched)&&!this.validationDisabled}get label(){const _=this.elRef.nativeElement.querySelector("label");return _&&_.textContent?_.textContent.trim():"This field"}get isDirtyAndTouched(){return this.formControlNames.some(_=>_.dirty&&_.touched)}}return f.\u0275fac=function(_){return new(_||f)(u.Y36(u.SBq))},f.\u0275dir=u.lG2({type:f,selectors:[["",8,"form-group"]],contentQueries:function(_,y,T){if(1&_&&u.Suo(T,r.u,4),2&_){let M;u.iGM(M=u.CRH())&&(y.formControlNames=M)}},hostVars:4,hostBindings:function(_,y){2&_&&u.ekj("has-error",y.hasErrors)("has-success",y.hasSuccess)},inputs:{validationDisabled:"validationDisabled"}}),f})()},41582:(v,S,i)=>{"use strict";i.d(S,{V:()=>p});var r=i(74788),u=i(24751);let p=(()=>{class f{constructor(){this.validSubmit=new r.vpe}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(_){_ instanceof u.cw?Object.keys(_.controls).forEach(y=>this.markAsTouchedAndDirty(_.controls[y])):_ instanceof u.Oe?_.controls.forEach(y=>this.markAsTouchedAndDirty(y)):_ instanceof u.NI&&_.enabled&&(_.markAsDirty(),_.markAsTouched(),_.updateValueAndValidity())}}return f.\u0275fac=function(_){return new(_||f)},f.\u0275dir=r.lG2({type:f,selectors:[["","formGroup",""]],hostBindings:function(_,y){1&_&&r.NdJ("submit",function(){return y.onSubmit()})},inputs:{formGroup:"formGroup"},outputs:{validSubmit:"validSubmit"}}),f})()},4416:(v,S,i)=>{"use strict";i.d(S,{C:()=>u});var r=i(74788);let u=(()=>{class p{constructor(e,_){this.elementRef=e,this.renderer=_}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const e=this.getInputElement();e&&"text"===e.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const e=this.getInputElement();e.type="password"===e.type?"text":"password",this.update()}}return p.\u0275fac=function(e){return new(e||p)(r.Y36(r.SBq),r.Y36(r.Qsj))},p.\u0275dir=r.lG2({type:p,selectors:[["","cdPasswordButton",""]],hostBindings:function(e,_){1&e&&r.NdJ("click",function(){return _.onClick()})},inputs:{cdPasswordButton:"cdPasswordButton"}}),p})()},59376:(v,S,i)=>{"use strict";i.d(S,{m:()=>p});var r=i(74788),u=i(38549);let p=(()=>{class f{constructor(_){this.nav=_,this.localStorage=window.localStorage}ngOnInit(){const _=this.localStorage.getItem(`tabset_${this.cdStatefulTab}`);_&&this.nav.select(_)}onNavChange(_){this.cdStatefulTab&&_.nextId&&this.localStorage.setItem(`tabset_${this.cdStatefulTab}`,_.nextId)}}return f.\u0275fac=function(_){return new(_||f)(r.Y36(u.Pz,9))},f.\u0275dir=r.lG2({type:f,selectors:[["","cdStatefulTab",""]],hostBindings:function(_,y){1&_&&r.NdJ("navChange",function(M){return y.onNavChange(M)})},inputs:{cdStatefulTab:"cdStatefulTab"}}),f})()},99466:(v,S,i)=>{"use strict";i.d(S,{e:()=>r});var r=(()=>{return(u=r||(r={})).bold="bold",u.sparkline="sparkline",u.perSecond="perSecond",u.checkIcon="checkIcon",u.routerLink="routerLink",u.executing="executing",u.classAdding="classAdding",u.badge="badge",u.map="map",u.truncate="truncate",u.timeAgo="timeAgo",r;var u})()},65862:(v,S,i)=>{"use strict";i.d(S,{P:()=>r});var r=(()=>{return(u=r||(r={})).add="fa fa-plus",u.addCircle="fa fa-plus-circle",u.minusCircle="fa fa-minus-circle",u.edit="fa fa-pencil",u.destroy="fa fa-times",u.destroyCircle="fa fa-times-circle",u.exchange="fa fa-exchange",u.copy="fa fa-copy",u.clipboard="fa fa-clipboard",u.flatten="fa fa-chain-broken",u.trash="fa fa-trash-o",u.lock="fa fa-lock",u.unlock="fa fa-unlock",u.clone="fa fa-clone",u.undo="fa fa-undo",u.search="fa fa-search",u.start="fa fa-play",u.stop="fa fa-stop",u.analyse="fa fa-stethoscope",u.deepCheck="fa fa-cog",u.reweight="fa fa-balance-scale",u.left="fa fa-arrow-left",u.right="fa fa-arrow-right",u.down="fa fa-arrow-down",u.erase="fa fa-eraser",u.user="fa fa-user",u.users="fa fa-users",u.share="fa fa-share-alt",u.key="fa fa-key-modern",u.warning="fa fa-exclamation-triangle",u.info="fa fa-info",u.infoCircle="fa fa-info-circle",u.questionCircle="fa fa-question-circle-o",u.check="fa fa-check",u.show="fa fa-eye",u.paragraph="fa fa-paragraph",u.terminal="fa fa-terminal",u.magic="fa fa-magic",u.hourglass="fa fa-hourglass-o",u.filledHourglass="fa fa-hourglass",u.table="fa fa-table",u.spinner="fa fa-spinner",u.refresh="fa fa-refresh",u.bullseye="fa fa-bullseye",u.disk="fa fa-hdd-o",u.server="fa fa-server",u.filter="fa fa-filter",u.lineChart="fa fa-line-chart",u.signOut="fa fa-sign-out",u.health="fa fa-heartbeat",u.circle="fa fa-circle",u.bell="fa fa-bell",u.tag="fa fa-tag",u.leftArrow="fa fa-angle-left",u.rightArrow="fa fa-angle-right",u.leftArrowDouble="fa fa-angle-double-left",u.rightArrowDouble="fa fa-angle-double-right",u.flag="fa fa-flag",u.clearFilters="fa fa-window-close",u.download="fa fa-download",u.upload="fa fa-upload",u.close="fa fa-times",u.json="fa fa-file-code-o",u.text="fa fa-file-text",u.wrench="fa fa-wrench",u.enter="fa fa-sign-in",u.exit="fa fa-sign-out",u.restart="fa fa-history",u.deploy="fa fa-cube",u.large="fa fa-lg",u.large2x="fa fa-2x",u.large3x="fa fa-3x",u.stack="fa fa-stack",u.stack1x="fa fa-stack-1x",u.stack2x="fa fa-stack-2x",u.pulse="fa fa-pulse",u.spin="fa fa-spin",u.inverse="fa fa-inverse",r;var u})()},18001:(v,S,i)=>{"use strict";i.d(S,{k:()=>r});var r=(()=>{return(u=r||(r={}))[u.error=0]="error",u[u.info=1]="info",u[u.success=2]="success",r;var u})()},91801:(v,S,i)=>{"use strict";i.d(S,{T:()=>r});var r=(()=>{return(u=r||(r={}))[u.ValueOk=0]="ValueOk",u[u.ValueStale=1]="ValueStale",u[u.ValueNone=2]="ValueNone",u[u.ValueException=3]="ValueException",r;var u})()},62862:(v,S,i)=>{"use strict";i.d(S,{O:()=>f});var r=i(24751),u=i(95463),p=i(74788);let f=(()=>{class e extends r.qu{group(y,T=null){const M=super.group(y,T);return new u.d(M.controls,M.validator,M.asyncValidator)}}return e.\u0275fac=function(){let _;return function(T){return(_||(_=p.n5z(e)))(T||e)}}(),e.\u0275prov=p.Yz7({token:e,factory:e.\u0275fac,providedIn:"root"}),e})()},95463:(v,S,i)=>{"use strict";i.d(S,{d:()=>u});var r=i(24751);class u extends r.cw{constructor(f,e,_){super(f,e,_),this.controls=f}get(f){const e=this._get(f);if(!e)throw new Error(`Control '${f}' could not be found!`);return e}_get(f){return super.get(f)||Object.values(this.controls).filter(e=>e.get).map(e=>e instanceof u?e._get(f):e.get(f)).find(e=>Boolean(e))}getValue(f){return this.get(f).value}silentSet(f,e){this.get(f).setValue(e,{emitEvent:!1})}showError(f,e,_){const y=this.get(f);return(e.submitted||y.dirty)&&(_?y.hasError(_):y.invalid)}}},93614:(v,S,i)=>{"use strict";i.d(S,{Q:()=>r,E:()=>u});var r=(()=>{return(p=r||(r={}))[p.Loading=0]="Loading",p[p.Ready=1]="Ready",p[p.Error=2]="Error",p[p.None=3]="None",r;var p})();class u{constructor(){this.loading=r.Loading}loadingStart(){this.loading=r.Loading}loadingReady(){this.loading=r.Ready}loadingError(){this.loading=r.Error}loadingNone(){this.loading=r.None}}},77205:(v,S,i)=>{"use strict";i.d(S,{h:()=>J,P:()=>Z});var r=i(24751),u=i(23815),p=i.n(u),f=i(25917),e=i(46797),_=i(43190);function y(Q,ee){return ee?(0,_.w)(()=>Q,ee):(0,_.w)(()=>Q)}var T=i(88002),M=i(15257),R=i(47557),F=i(28211);function Z(Q){return null==Q||0===Q.length}class J{static email(ee){return Z(ee.value)?null:r.kI.email(ee)}static ip(ee=0){const ue=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,ae=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return r.kI.pattern(4===ee?ue:6===ee?ae:new RegExp(ue.source+"|"+ae.source))}static number(ee=!0){return r.kI.pattern(ee?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(ee=!0){return r.kI.pattern(ee?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static sslCert(){return r.kI.pattern(/^-----BEGIN CERTIFICATE-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END CERTIFICATE-----[\n\r\f]*$/)}static sslPrivKey(){return r.kI.pattern(/^-----BEGIN RSA PRIVATE KEY-----(\n|\r|\f)((.+)?((\n|\r|\f).+)*)(\n|\r|\f)-----END RSA PRIVATE KEY-----[\n\r\f]*$/)}static pemCert(){return r.kI.pattern(/^-----BEGIN .+-----$.+^-----END .+-----$/ms)}static requiredIf(ee,ue){let ae=!1;return $=>(!ae&&$.parent&&(Object.keys(ee).forEach(ve=>{$.parent.get(ve).valueChanges.subscribe(()=>{$.updateValueAndValidity({emitEvent:!1})})}),ae=!0),Object.keys(ee).every(ve=>{if(!$.parent)return!1;const oe=$.parent.get(ve).value,he=ee[ve];if(p().isObjectLike(he)){let me=!1;switch(he.op){case"empty":me=p().isEmpty(oe);break;case"!empty":me=!p().isEmpty(oe);break;case"equal":me=oe===he.arg1;break;case"!equal":me=oe!==he.arg1;break;case"minLength":p().isString(oe)&&(me=oe.length>=he.arg1)}return me}return oe===he})&&(p().isFunction(ue)?ue.call(ue,$.value):Z($.value))?{required:!0}:null)}static composeIf(ee,ue){let ae=!1;return $=>(!ae&&$.parent&&(Object.keys(ee).forEach(se=>{$.parent.get(se).valueChanges.subscribe(()=>{$.updateValueAndValidity({emitEvent:!1})})}),ae=!0),Object.keys(ee).every(se=>$.parent&&$.parent.get(se).value===ee[se])?r.kI.compose(ue)($):null)}static custom(ee,ue){return ae=>{const $=ue.call(this,ae.value);return $?{[ee]:$}:null}}static validateIf(ee,ue,ae,$=[],se=[]){ae=ae.concat($),ee.setValidators(ve=>ue.call(this)?r.kI.compose(ae)(ve):$.length>0?r.kI.compose($)(ve):null),se.forEach(ve=>{ve.valueChanges.subscribe(()=>{ee.updateValueAndValidity({emitEvent:!1})})})}static match(ee,ue){return ae=>{const $=ae.get(ee),se=ae.get(ue);if(!$||!se)return null;if($.value!==se.value)se.setErrors({match:!0});else if(se.hasError("match")){const oe=se.errors;p().unset(oe,"match"),se.setErrors(p().isEmpty(p().keys(oe))?null:oe)}return null}}static unique(ee,ue=null,ae,$=!1){let se;return ve=>ve.pristine||Z(ve.value)?(0,f.of)(null):(se=ve.value,p().isFunction(ae)&&null!==ae()&&""!==ae()&&(se=$?`${ve.value}$${ae()}`:`${ae()}$${ve.value}`),(0,e.H)().pipe(y(ee.call(ue,se)),(0,T.U)(oe=>oe?{notUnique:!0}:null),(0,M.q)(1)))}static uuid(ee=!1){const ue=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return ae=>ae.pristine&&ae.untouched||!ee&&!ae.value||ue.test(ae.value)?null:{invalidUuid:"This is not a valid UUID"}}static binaryMin(ee){return ue=>{const ae=new F.H,$=(new F.H).toBytes(ue.value);if(ee<=$)return null;const se=new R.$(ae).transform(ee);return{binaryMin:()=>"Size has to be at least " + se + " or more"}}}static binaryMax(ee){return ue=>{const ae=new F.H,$=ae.toBytes(ue.value);if(ee>=$)return null;const se=new R.$(ae).transform(ee);return{binaryMax:()=>"Size has to be at most " + se + " or less"}}}static passwordPolicy(ee,ue,ae){return $=>{if($.pristine||""===$.value)return p().isFunction(ae)&&ae(!0,0),(0,f.of)(null);let se;return p().isFunction(ue)&&(se=ue()),(0,e.H)(500).pipe(y(p().invoke(ee,"validatePassword",$.value,se)),(0,T.U)(ve=>(p().isFunction(ae)&&ae(ve.valid,ve.credits,ve.valuation),ve.valid?null:{passwordPolicy:!0})),(0,M.q)(1))}}static bucketName(){return ee=>{if(ee.pristine||!ee.value)return(0,f.of)({required:!0});const ue=[];let ae;return ue.push(()=>{const ve=ee.value;let oe=!0;return(/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(ve)||/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i.test(ve))&&(ae="ipAddress",oe=!1),oe}),ue.push($=>p().inRange($.length,3,64)?!!/^[0-9a-z.-]+$/.test(ee.value)||(ae="bucketNameInvalid",!1):(ae="shouldBeInRange",!1)),ue.push($=>{const se=p().split($,".");return p().every(se,ve=>ve!==p().toLower(ve)||ve.includes("_")?(ae="containsUpperCase",!1):/^[0-9a-z-]+$/.test(ve)?p().every([0,ve.length-1],oe=>(ae="lowerCaseOrNumber",/[a-z]/.test(ve[oe])||p().isInteger(p().parseInt(ve[oe])))):(ae="onlyLowerCaseAndNumbers",!1))}),p().every(ue,$=>$(ee.value))?(0,f.of)(null):(0,f.of)((()=>{switch(ae){case"onlyLowerCaseAndNumbers":return{onlyLowerCaseAndNumbers:!0};case"shouldBeInRange":return{shouldBeInRange:!0};case"ipAddress":return{ipAddress:!0};case"containsUpperCase":return{containsUpperCase:!0};case"lowerCaseOrNumber":return{lowerCaseOrNumber:!0};default:return{bucketNameInvalid:!0}}})())}}static bucketExistence(ee,ue){return ae=>ae.pristine||!ae.value?(0,f.of)({required:!0}):ue.exists(ae.value).pipe((0,T.U)($=>$===ee?null:{bucketNameNotAllowed:!0}))}}},61355:(v,S,i)=>{"use strict";i.d(S,{T:()=>p,e:()=>f});var r=i(65862),u=i(18001);class p{constructor(_=u.k.info,y,T,M,R="Ceph"){this.type=_,this.title=y,this.message=T,this.options=M,this.application=R,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class f extends p{constructor(_=new p){super(_.type,_.title,_.message,_.options,_.application),this.config=_,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[r.P.warning,r.P.info,r.P.check],this.borderClasses=["border-danger","border-info","border-success"],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.borderClass=this.borderClasses[this.type],this.isFinishedTask=_.isFinishedTask}}},51907:(v,S,i)=>{"use strict";i.d(S,{G:()=>r});class r{constructor(p){this.pwdExpirationSpan=0,this.pwdExpirationSpan=p.user_pwd_expiration_span,this.pwdExpirationWarning1=p.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=p.user_pwd_expiration_warning_2}}},86919:(v,S,i)=>{"use strict";i.d(S,{E:()=>f});var r=i(58497);class p{constructor(){this.offset=0,this.limit=10,this.pageSize=10}}class f{constructor(_){this.errorConfig={resetData:!0,displayError:!0},this.pageInfo=new p,this.search="",this.sort="+name",this.error=_}toParams(){return null===this.pageInfo.limit&&(this.pageInfo.limit=0),this.search||(this.search=""),(!this.sort||this.sort.length<2)&&(this.sort="+name"),new r.LE({fromObject:{offset:String(this.pageInfo.offset*this.pageInfo.limit),limit:String(this.pageInfo.limit),search:this.search,sort:this.sort}})}}},68774:(v,S,i)=>{"use strict";i.d(S,{r:()=>r});class r{constructor(p){this._selected=[],p&&(this._selected=p),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(p){this._selected=p,this.update()}get selected(){return this._selected}add(p){this._selected.push(p),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},87311:(v,S,i)=>{"use strict";i.d(S,{h:()=>r});class r{constructor(p,f,e,_){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=p.nativeElement,this.getStyleLeft=e,this.getStyleTop=_,this.tooltipEl=f.nativeElement}customTooltips(p){if(0===p.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(p.yAlign?p.yAlign:"no-transform"),p.body){const _=p.title||[],y=p.body.map(R=>R.lines);let T="<thead>";_.forEach(R=>{T+="<tr><th>"+this.getTitle(R)+"</th></tr>"}),T+="</thead><tbody>",y.forEach((R,F)=>{const Z=p.labelColors[F];let J="background:"+(this.customColors.backgroundColor||Z.backgroundColor);J+="; border-color:"+(this.customColors.borderColor||Z.borderColor),J+="; border-width: 2px",T+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+J+'"></span>'+this.getBody(R)+"</td></tr>"}),T+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=T}const f=this.chartEl.offsetTop,e=this.chartEl.offsetLeft;if(this.checkOffset){const _=p.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),p.caretX-_<0?this.tooltipEl.classList.add("transform-left"):p.caretX+_>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(p,e),this.tooltipEl.style.top=this.getStyleTop(p,f),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=p._fontFamily,this.tooltipEl.style.fontSize=p.fontSize,this.tooltipEl.style.fontStyle=p._fontStyle,this.tooltipEl.style.padding=p.yPadding+"px "+p.xPadding+"px"}getBody(p){return p}getTitle(p){return p}}},30633:(v,S,i)=>{"use strict";i.d(S,{h:()=>r,r:()=>u});var r=(()=>{return(p=r||(r={}))[p.global=0]="global",p[p.pool=1]="pool",p[p.image=2]="image",r;var p})(),u=(()=>{return(p=u||(u={}))[p.bps=0]="bps",p[p.iops=1]="iops",p[p.milliseconds=2]="milliseconds",u;var p})()},60737:(v,S,i)=>{"use strict";i.d(S,{o:()=>u});var r=i(29075);class u extends r.i{}},76111:(v,S,i)=>{"use strict";i.d(S,{R:()=>u});var r=i(29075);class u extends r.i{}},19358:(v,S,i)=>{"use strict";i.d(S,{N:()=>r});class r{constructor(p,f,e){this.poolName=p,this.namespace=f,this.imageName=e}static fromString(p){const f=p.split("/");return new this(f[0],f.length>=3?f[1]:null,f.length>=3?f[2]:f[1])}getNameSpace(){return this.namespace?`${this.namespace}/`:""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},29075:(v,S,i)=>{"use strict";i.d(S,{i:()=>r});class r{constructor(p,f){this.name=p,this.metadata=f}}},47187:(v,S,i)=>{"use strict";i.d(S,{I:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y,T=!1){let M=y;return(!u().isArray(y)||u().isArray(y)&&T)&&(M=[y]),M}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"array",type:e,pure:!0}),e})()},68962:(v,S,i)=>{"use strict";i.d(S,{T:()=>u});var r=i(74788);let u=(()=>{class p{transform(e,_="Yes",y="No"){return Boolean(e)?_:y}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"booleanText",type:p,pure:!0}),p})()},70442:(v,S,i)=>{"use strict";i.d(S,{i:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){let _=!1;switch(e){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":_=!0}return _}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"boolean",type:p,pure:!0}),p})()},96102:(v,S,i)=>{"use strict";i.d(S,{N:()=>p});var r=i(74788),u=i(12057);let p=(()=>{class f{constructor(_){this.datePipe=_}transform(_){return null===_||""===_?"":this.datePipe.transform(_,"shortDate")+" "+this.datePipe.transform(_,"mediumTime")}}return f.\u0275fac=function(_){return new(_||f)(r.Y36(u.uU,16))},f.\u0275pipe=r.Yjl({name:"cdDate",type:f,pure:!0}),f})()},24310:(v,S,i)=>{"use strict";i.d(S,{t:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){const _=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(e);return _?"dev"===_[2]?"main":_[1]:e}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"cephReleaseName",type:p,pure:!0}),p})()},58111:(v,S,i)=>{"use strict";i.d(S,{F:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){const _=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(e);return _?_[1]:e}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"cephShortVersion",type:p,pure:!0}),p})()},20044:(v,S,i)=>{"use strict";i.d(S,{O:()=>p});var r=i(28211),u=i(74788);let p=(()=>{class f{constructor(_){this.formatter=_}transform(_){return this.formatter.format_number(_,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}return f.\u0275fac=function(_){return new(_||f)(u.Y36(r.H,16))},f.\u0275pipe=u.Yjl({name:"dimlessBinaryPerSecond",type:f,pure:!0}),f})()},47557:(v,S,i)=>{"use strict";i.d(S,{$:()=>p});var r=i(28211),u=i(74788);let p=(()=>{class f{constructor(_){this.formatter=_}transform(_){return this.formatter.format_number(_,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}return f.\u0275fac=function(_){return new(_||f)(u.Y36(r.H,16))},f.\u0275pipe=u.Yjl({name:"dimlessBinary",type:f,pure:!0}),f})()},66369:(v,S,i)=>{"use strict";i.d(S,{n:()=>p});var r=i(28211),u=i(74788);let p=(()=>{class f{constructor(_){this.formatter=_}transform(_){return this.formatter.format_number(_,1e3,["","k","M","G","T","P","E","Z","Y"])}}return f.\u0275fac=function(_){return new(_||f)(u.Y36(r.H,16))},f.\u0275pipe=u.Yjl({name:"dimless",type:f,pure:!0}),f})()},94088:(v,S,i)=>{"use strict";i.d(S,{u:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){if(null===e||e<=0)return"";const _=[[`${Math.floor(e/31536e3)}`,"years"],[`${Math.floor(e%31536e3/86400)}`,"days"],[`${Math.floor(e%86400/3600)}`,"hours"],[`${Math.floor(e%3600/60)}`,"minutes"],[`${Math.floor(e%60)}`,"seconds"]];let y="";for(let T=0,M=_.length;T<M;T++)"0"!==_[T][0]&&(y+=" "+_[T][0]+" "+("1"===_[T][0]?_[T][1].substr(0,_[T][1].length-1):_[T][1]));return y.trim()||"1 second"}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"duration",type:p,pure:!1}),p})()},41039:(v,S,i)=>{"use strict";i.d(S,{W:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y){return u().isUndefined(y)||u().isNull(y)?"-":u().isNaN(y)?"N/A":y}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"empty",type:e,pure:!0}),e})()},21766:(v,S,i)=>{"use strict";i.d(S,{A:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){return`${e} IOPS`}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"iops",type:p,pure:!0}),p})()},88820:(v,S,i)=>{"use strict";i.d(S,{V:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){switch(e){case"user:rbd":return"user:rbd (tcmu-runner)";default:return e}}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"iscsiBackstore",type:p,pure:!0}),p})()},86969:(v,S,i)=>{"use strict";i.d(S,{A:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){return e.join(", ")}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"join",type:p,pure:!0}),p})()},42746:(v,S,i)=>{"use strict";i.d(S,{e:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){return"[DBG]"===e?"debug":"[INF]"===e?"info":"[WRN]"===e?"warn":"[ERR]"===e?"err":""}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"logPriority",type:p,pure:!0}),p})()},78877:(v,S,i)=>{"use strict";i.d(S,{b:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y,T){return u().isPlainObject(T)?u().get(T,y,y):y}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"map",type:e,pure:!0}),e})()},48537:(v,S,i)=>{"use strict";i.d(S,{J:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){return`${e} ms`}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"milliseconds",type:p,pure:!0}),p})()},55657:(v,S,i)=>{"use strict";i.d(S,{g:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y,T){return""===y?u().defaultTo(T,"n/a"):y}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"notAvailable",type:e,pure:!0}),e})()},36569:(v,S,i)=>{"use strict";i.d(S,{f:()=>u});var r=i(74788);let u=(()=>{class p{transform(e){const _=parseInt(e,10);return isNaN(_)?e:e+(1===Math.floor(_/10)?"th":_%10==1?"st":_%10==2?"nd":_%10==3?"rd":"th")}}return p.\u0275fac=function(e){return new(e||p)},p.\u0275pipe=r.Yjl({name:"ordinal",type:p,pure:!0}),p})()},85953:(v,S,i)=>{"use strict";i.d(S,{D:()=>ze});var r=i(12057),u=i(47187),p=i(68962),f=i(70442),e=i(96102),_=i(24310),y=i(58111),T=i(20044),M=i(47557),R=i(66369),F=i(94088),Z=i(41039),J=i(74788);let Q=(()=>{class Ye{transform(Ie){return encodeURIComponent(Ie)}}return Ye.\u0275fac=function(Ie){return new(Ie||Ye)},Ye.\u0275pipe=J.Yjl({name:"encodeUri",type:Ye,pure:!0}),Ye})();var ee=i(21766),ue=i(88820),ae=i(86969),$=i(42746),se=i(78877),ve=i(48537),oe=i(55657),he=i(36569),me=i(90068),Oe=i(60793),ce=i(52821),dt=i(10545);let ze=(()=>{class Ye{}return Ye.\u0275fac=function(Ie){return new(Ie||Ye)},Ye.\u0275mod=J.oAB({type:Ye}),Ye.\u0275inj=J.cJS({providers:[u.I,f.i,p.T,r.uU,y.F,_.t,M.$,T.O,R.n,me.h,ue.V,ae.A,$.e,e.N,Z.W,Q,he.f,ee.A,ve.J,oe.g,dt.m,F.u,se.b,ce.W,Oe.A],imports:[[r.ez]]}),Ye})()},90068:(v,S,i)=>{"use strict";i.d(S,{h:()=>_});var r=i(23815),u=i.n(r),p=i(16738),f=i.n(p),e=i(74788);f().updateLocale("en",{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",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}});let _=(()=>{class y{transform(M,R=!0){let F;if(F=u().isNumber(M)?f().unix(M):f()(M),!F.isValid())return"";let Z=F.fromNow();return R&&(Z=u().upperFirst(Z)),Z}}return y.\u0275fac=function(M){return new(M||y)},y.\u0275pipe=e.Yjl({name:"relativeDate",type:y,pure:!1}),y})()},60793:(v,S,i)=>{"use strict";i.d(S,{A:()=>p});var r=i(74788),u=i(91211);let p=(()=>{class f{constructor(_){this.domSanitizer=_}transform(_){return this.domSanitizer.sanitize(r.q3G.HTML,_)}}return f.\u0275fac=function(_){return new(_||f)(r.Y36(u.H7,16))},f.\u0275pipe=r.Yjl({name:"sanitizeHtml",type:f,pure:!0}),f})()},52821:(v,S,i)=>{"use strict";i.d(S,{W:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y,T,M){return u().isString(y)?(M=u().defaultTo(M,""),u().truncate(y,{length:T,omission:M})):y}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"truncate",type:e,pure:!0}),e})()},10545:(v,S,i)=>{"use strict";i.d(S,{m:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{transform(y){return u().upperFirst(y)}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275pipe=p.Yjl({name:"upperFirst",type:e,pure:!0}),e})()},49083:(v,S,i)=>{"use strict";function r(ee,ue){function ae(){return!ae.pred.apply(ae.thisArg,arguments)}return ae.pred=ee,ae.thisArg=ue,ae}i.d(S,{r:()=>Q});var u=i(87444),p=i(45435),f=i(18891),_=i(22759),y=i(79765),T=i(85345);class R{constructor(ue){this.notifier=ue}call(ue,ae){return ae.subscribe(new F(ue,this.notifier,ae))}}class F extends T.Ds{constructor(ue,ae,$){super(ue),this.notifier=ae,this.source=$,this.sourceIsBeingSubscribedTo=!0}notifyNext(){this.sourceIsBeingSubscribedTo=!0,this.source.subscribe(this)}notifyComplete(){if(!1===this.sourceIsBeingSubscribedTo)return super.complete()}complete(){if(this.sourceIsBeingSubscribedTo=!1,!this.isStopped){if(this.retries||this.subscribeToRetries(),!this.retriesSubscription||this.retriesSubscription.closed)return super.complete();this._unsubscribeAndRecycle(),this.notifications.next(void 0)}}_unsubscribe(){const{notifications:ue,retriesSubscription:ae}=this;ue&&(ue.unsubscribe(),this.notifications=void 0),ae&&(ae.unsubscribe(),this.retriesSubscription=void 0),this.retries=void 0}_unsubscribeAndRecycle(){const{_unsubscribe:ue}=this;return this._unsubscribe=null,super._unsubscribeAndRecycle(),this._unsubscribe=ue,this}subscribeToRetries(){let ue;this.notifications=new y.xQ;try{const{notifier:ae}=this;ue=ae(this.notifications)}catch(ae){return super.complete()}this.retries=ue,this.retriesSubscription=(0,T.ft)(ue,new T.IY(this))}}var Z=i(47349),J=i(46782);function Q(){const ee=(0,_.R)(document,"visibilitychange").pipe((0,Z.d)({refCount:!0,bufferSize:1})),[ue,ae]=function(ee,ue,ae){return[(0,p.h)(ue,undefined)(new f.y((0,u.s)(ee))),(0,p.h)(r(ue,undefined))(new f.y((0,u.s)(ee)))]}(ee,()=>"visible"===document.visibilityState);return function($){return $.pipe((0,J.R)(ae),function(ee){return ue=>ue.lift(new R(ee))}(()=>ue))}}},45510:(v,S,i)=>{"use strict";i.d(S,{P:()=>f});var r=i(74788),u=i(6283),p=i(74937);let f=(()=>{class e{constructor(y,T){this.router=y,this.authStorageService=T}canActivate(y,T){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"],{queryParams:{returnUrl:T.url}}),!1)}canActivateChild(y,T){return this.canActivate(y,T)}}return e.\u0275fac=function(y){return new(y||e)(r.LFG(u.F0),r.LFG(p.j))},e.\u0275prov=r.Yz7({token:e,factory:e.\u0275fac,providedIn:"root"}),e})()},74937:(v,S,i)=>{"use strict";i.d(S,{j:()=>e});var r=i(26215);class u{constructor(y=[]){["read","create","update","delete"].forEach(T=>this[T]=y.includes(T))}}class p{constructor(y){this.hosts=new u(y.hosts),this.configOpt=new u(y["config-opt"]),this.pool=new u(y.pool),this.osd=new u(y.osd),this.monitor=new u(y.monitor),this.rbdImage=new u(y["rbd-image"]),this.iscsi=new u(y.iscsi),this.rbdMirroring=new u(y["rbd-mirroring"]),this.rgw=new u(y.rgw),this.cephfs=new u(y.cephfs),this.manager=new u(y.manager),this.log=new u(y.log),this.user=new u(y.user),this.grafana=new u(y.grafana),this.prometheus=new u(y.prometheus),this.nfs=new u(y["nfs-ganesha"])}}var f=i(74788);let e=(()=>{class _{constructor(){this.isPwdDisplayedSource=new r.X(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(T,M={},R=!1,F=null,Z=!1){localStorage.setItem("dashboard_username",T),localStorage.setItem("dashboard_permissions",JSON.stringify(new p(M))),localStorage.setItem("user_pwd_expiration_date",String(F)),localStorage.setItem("user_pwd_update_required",String(Z)),localStorage.setItem("sso",String(R))}remove(){localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new p({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return _.\u0275fac=function(T){return new(T||_)},_.\u0275prov=f.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},72625:(v,S,i)=>{"use strict";i.d(S,{R:()=>T});var r=i(26215),u=i(45435),p=i(88002),f=i(28049),e=i(74255),_=i(74788),y=i(24310);let T=(()=>{class M{constructor(F,Z){this.summaryservice=F,this.cephReleaseNamePipe=Z,this.releaseDataSource=new r.X(null),this.releaseData$=this.releaseDataSource.asObservable(),this.summaryservice.subscribeOnce(J=>{const Q=this.cephReleaseNamePipe.transform(J.version);this.releaseDataSource.next(Q)})}urlGenerator(F,Z="master"){const Q=`https://docs.ceph.com/en/${"master"===Z?"latest":Z}/`,ee="https://ceph.io/";return{iscsi:`${Q}mgr/dashboard/#enabling-iscsi-management`,prometheus:`${Q}mgr/dashboard/#enabling-prometheus-alerting`,"nfs-ganesha":`${Q}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`,"rgw-nfs":`${Q}radosgw/nfs`,rgw:`${Q}mgr/dashboard/#enabling-the-object-gateway-management-frontend`,dashboard:`${Q}mgr/dashboard`,grafana:`${Q}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`,orch:`${Q}mgr/orchestrator`,pgs:`${ee}pgcalc`,help:`${ee}help/`,security:`${ee}security/`,trademarks:`${ee}legal-page/trademarks/`,"dashboard-landing-page-status":`${Q}mgr/dashboard/#dashboard-landing-page-status`,"dashboard-landing-page-performance":`${Q}mgr/dashboard/#dashboard-landing-page-performance`,"dashboard-landing-page-capacity":`${Q}mgr/dashboard/#dashboard-landing-page-capacity`}[F]}subscribeOnce(F,Z,J){return this.releaseData$.pipe((0,u.h)(Q=>!!Q),(0,p.U)(Q=>this.urlGenerator(F,Q)),(0,f.P)()).subscribe(Z,J)}}return M.\u0275fac=function(F){return new(F||M)(_.LFG(e.J),_.LFG(y.t))},M.\u0275prov=_.Yz7({token:M,factory:M.\u0275fac,providedIn:"root"}),M})()},4222:(v,S,i)=>{"use strict";i.d(S,{T:()=>e});var r=i(88002),u=i(26504),p=i(74788),f=i(89154);let e=(()=>{class _{constructor(T){this.featureToggles=T}canActivate(T){return this.featureToggles.get().pipe((0,r.U)(M=>{if(!1===M[T.routeConfig.path])throw new u._2;return!0}))}canActivateChild(T){return this.canActivate(T.parent)}}return _.\u0275fac=function(T){return new(T||_)(p.LFG(f.l))},_.\u0275prov=p.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},89154:(v,S,i)=>{"use strict";i.d(S,{l:()=>e});var r=i(74788),u=i(58497),p=i(46947);let e=(()=>{class _{constructor(T,M){this.http=T,this.timerService=M,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return _.\u0275fac=function(T){return new(T||_)(r.LFG(u.eN),r.LFG(p.f))},_.\u0275prov=r.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},28211:(v,S,i)=>{"use strict";i.d(S,{H:()=>f});var r=i(23815),u=i.n(r),p=i(74788);let f=(()=>{class e{format_number(y,T,M,R=1){if(u().isString(y)&&(y=Number(y)),!u().isNumber(y))return"-";let F=y<1?0:Math.floor(Math.log(y)/Math.log(T));F=F>=M.length?M.length-1:F;let Z=u().round(y/Math.pow(T,F),R).toString();return""===Z?"-":(""!==M[F]&&(Z=`${Z} ${M[F]}`),Z)}toBytes(y,T=null){const R=["b","k","m","g","t","p","e","z","y"],F=RegExp("^(\\d+(.\\d+)?) ?(["+R.join("")+"]?(b|ib|B/s)?)?$","i").exec(y);if(null===F)return T;let Z=parseFloat(F[1]);return u().isString(F[3])&&(Z*=Math.pow(1024,R.indexOf(F[3].toLowerCase()[0]))),Math.round(Z)}toMilliseconds(y){const M=/^\s*(\d+)\s*(ms)?\s*$/i.exec(y);return null!==M?+M[1]:0}toIops(y){const M=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(y);return null!==M?+M[1]:0}}return e.\u0275fac=function(y){return new(y||e)},e.\u0275prov=p.Yz7({token:e,factory:e.\u0275fac,providedIn:"root"}),e})()},63285:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=i(74788),u=i(38549);let p=(()=>{class f{constructor(_){this.modal=_}show(_,y,T){const M=this.modal.open(_,T);return y&&Object.assign(M.componentInstance,y),M}dismissAll(){this.modal.dismissAll()}hasOpenModals(){return this.modal.hasOpenModals()}}return f.\u0275fac=function(_){return new(_||f)(r.LFG(u.FF))},f.\u0275prov=r.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})()},54462:(v,S,i)=>{"use strict";i.d(S,{P:()=>M});var r=i(25917),u=i(88002),p=i(5304),f=i(65862),e=i(74788),_=i(58497),y=i(6283),T=i(7273);let M=(()=>{class R{constructor(Z,J,Q){this.http=Z,this.router=J,this.mgrModuleService=Q}canActivate(Z){return this.doCheck(Z)}canActivateChild(Z){return this.doCheck(Z)}doCheck(Z){if(Z.url.length>0&&R.ALLOWLIST.includes(Z.url[0].path))return(0,r.of)(!0);const J=Z.data.moduleStatusGuardConfig;let Q=!1;return J.backend&&this.mgrModuleService.getConfig("orchestrator").subscribe(ee=>{Q=J.backend===ee.orchestrator},()=>(this.router.navigate([J.redirectTo]),(0,r.of)(!1))),this.http.get(`ui-api/${J.uiApiPath}/status`).pipe((0,u.U)(ee=>(!ee.available&&!Q&&this.router.navigate([J.redirectTo||""],{state:{header:J.header,message:ee.message,section:J.section,section_info:J.section_info,button_name:J.button_name,button_route:J.button_route,button_title:J.button_title,uiConfig:J.uiConfig,uiApiPath:J.uiApiPath,icon:f.P.wrench,component:J.component}}),ee.available)),(0,p.K)(()=>(this.router.navigate([J.redirectTo]),(0,r.of)(!1))))}}return R.ALLOWLIST=["501"],R.\u0275fac=function(Z){return new(Z||R)(e.LFG(_.eN),e.LFG(y.F0),e.LFG(T.N))},R.\u0275prov=e.Yz7({token:R,factory:R.\u0275fac,providedIn:"root"}),R})()},97161:(v,S,i)=>{"use strict";i.d(S,{g:()=>F});var r=i(23815),u=i.n(r),p=i(26215),f=i(79765),e=i(18001),_=i(61355),y=i(74788),T=i(91376),M=i(68879),R=i(96102);let F=(()=>{class Z{constructor(Q,ee,ue){this.toastr=Q,this.taskMessageService=ee,this.cdDatePipe=ue,this.hideToasties=!1,this.dataSource=new p.X([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new f.xQ,this.queued=[],this.KEY="cdNotifications";const ae=localStorage.getItem(this.KEY);let $=[];u().isString(ae)&&($=JSON.parse(ae,(se,ve)=>u().isPlainObject(ve)?u().assign(new _.e,ve):ve)),this.dataSource.next($)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(Q){const ee=this.dataSource.getValue();ee.splice(Q,1),this.dataSource.next(ee),localStorage.setItem(this.KEY,JSON.stringify(ee))}save(Q){const ee=this.dataSource.getValue();for(ee.push(Q),ee.sort((ue,ae)=>ue.timestamp>ae.timestamp?-1:1);ee.length>10;)ee.pop();this.dataSource.next(ee),localStorage.setItem(this.KEY,JSON.stringify(ee))}show(Q,ee,ue,ae,$){return window.setTimeout(()=>{let se;se=u().isFunction(Q)?Q():u().isObject(Q)?Q:new _.T(Q,ee,ue,ae,$),this.queueToShow(se)},10)}queueToShow(Q){this.cancel(this.queuedTimeoutId),this.queued.find(ee=>u().isEqual(ee,Q))||this.queued.push(Q),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(Q=>{const ee=new _.e(Q);ee.isFinishedTask||this.save(ee),this.showToasty(ee)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(Q=>{const ee=Q[0];return Q.length>1&&(ee.message="<ul>"+Q.map(ue=>`<li>${ue.message}</li>`).join("")+"</ul>"),ee})}queueShiftByTitle(){const Q={};let ee;for(;ee=this.queued.shift();)Q[ee.title]||(Q[ee.title]=[]),Q[ee.title].push(ee);return Q}showToasty(Q){this.hideToasties||this.toastr[["error","info","success"][Q.type]]((Q.message?Q.message+"<br>":"")+this.renderTimeAndApplicationHtml(Q),Q.title,Q.options)}renderTimeAndApplicationHtml(Q){return`<small class="date">${this.cdDatePipe.transform(Q.timestamp)}</small><i class="float-right custom-icon ${Q.applicationClass}" title="${Q.application}"></i>`}notifyTask(Q,ee=!0){const ue=this.finishedTaskToNotification(Q,ee);return ue.isFinishedTask=!0,this.show(ue)}finishedTaskToNotification(Q,ee=!0){let ue;return ue=Q.success&&ee?new _.T(e.k.success,this.taskMessageService.getSuccessTitle(Q)):new _.T(e.k.error,this.taskMessageService.getErrorTitle(Q),this.taskMessageService.getErrorMessage(Q)),ue.isFinishedTask=!0,ue}cancel(Q){window.clearTimeout(Q)}suspendToasties(Q){this.hideToasties=Q}toggleSidebar(Q=!1){this.sidebarSubject.next(Q)}}return Z.\u0275fac=function(Q){return new(Q||Z)(y.LFG(T._W),y.LFG(M.p),y.LFG(R.N))},Z.\u0275prov=y.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})()},33888:(v,S,i)=>{"use strict";i.d(S,{q:()=>y});var r=i(23815),u=i.n(r),p=i(88002),f=i(9837);class e{constructor(M){this.pwdPolicyEnabled=M.pwd_policy_enabled,this.pwdPolicyMinLength=M.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=M.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=M.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=M.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=M.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=M.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=M.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=M.pwd_policy_check_complexity_enabled}}var _=i(74788);let y=(()=>{class T{constructor(R){this.settingsService=R}getHelpText(){return this.settingsService.getStandardSettings().pipe((0,p.U)(R=>{const F=new e(R);let Z=[];if(F.pwdPolicyEnabled){Z.push("Required rules for passwords:");const J={pwdPolicyCheckLengthEnabled:"Must contain at least " + F.pwdPolicyMinLength + " characters",pwdPolicyCheckOldpwdEnabled:"Must not be the same as the previous one",pwdPolicyCheckUsernameEnabled:"Cannot contain the username",pwdPolicyCheckExclusionListEnabled:"Cannot contain any configured keyword",pwdPolicyCheckRepetitiveCharsEnabled:"Cannot contain any repetitive characters e.g. \"aaa\"",pwdPolicyCheckSequentialCharsEnabled:"Cannot contain any sequential characters e.g. \"abc\"",pwdPolicyCheckComplexityEnabled:"Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)"};Z=Z.concat(u().keys(J).filter(Q=>u().get(F,Q)).map(Q=>"- "+u().get(J,Q)))}return Z.join("\n")}))}mapCreditsToCssClass(R){let F="very-strong";return R<10?F="too-weak":R<15?F="weak":R<20?F="ok":R<25&&(F="strong"),F}}return T.\u0275fac=function(R){return new(R||T)(_.LFG(f.g))},T.\u0275prov=_.Yz7({token:T,factory:T.\u0275fac,providedIn:"root"}),T})()},34089:(v,S,i)=>{"use strict";i.d(S,{n:()=>p});var r=i(30633),u=i(74788);let p=(()=>{class f{constructor(){this.sections=[{heading:"Quality of Service",class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:"BPS Limit",description:"The desired limit of IO bytes per second.",type:r.r.bps},{name:"rbd_qos_iops_limit",displayName:"IOPS Limit",description:"The desired limit of IO operations per second.",type:r.r.iops},{name:"rbd_qos_read_bps_limit",displayName:"Read BPS Limit",description:"The desired limit of read bytes per second.",type:r.r.bps},{name:"rbd_qos_read_iops_limit",displayName:"Read IOPS Limit",description:"The desired limit of read operations per second.",type:r.r.iops},{name:"rbd_qos_write_bps_limit",displayName:"Write BPS Limit",description:"The desired limit of write bytes per second.",type:r.r.bps},{name:"rbd_qos_write_iops_limit",displayName:"Write IOPS Limit",description:"The desired limit of write operations per second.",type:r.r.iops},{name:"rbd_qos_bps_burst",displayName:"BPS Burst",description:"The desired burst limit of IO bytes.",type:r.r.bps},{name:"rbd_qos_iops_burst",displayName:"IOPS Burst",description:"The desired burst limit of IO operations.",type:r.r.iops},{name:"rbd_qos_read_bps_burst",displayName:"Read BPS Burst",description:"The desired burst limit of read bytes.",type:r.r.bps},{name:"rbd_qos_read_iops_burst",displayName:"Read IOPS Burst",description:"The desired burst limit of read operations.",type:r.r.iops},{name:"rbd_qos_write_bps_burst",displayName:"Write BPS Burst",description:"The desired burst limit of write bytes.",type:r.r.bps},{name:"rbd_qos_write_iops_burst",displayName:"Write IOPS Burst",description:"The desired burst limit of write operations.",type:r.r.iops}]}]}static getOptionsFromSections(_){return _.map(y=>y.options).reduce((y,T)=>y.concat(T))}filterConfigOptionsByName(_){return f.getOptionsFromSections(this.sections).filter(y=>y.name===_)}getOptionValueByName(_,y,T=""){const M=this.filterConfigOptionsByName(_);return 1===M.length?M.pop()[y]:T}getWritableSections(){return this.sections.map(_=>(_.options=_.options.filter(y=>!y.readOnly),_))}getOptionFields(){return f.getOptionsFromSections(this.sections)}getWritableOptionFields(){return f.getOptionsFromSections(this.getWritableSections())}getOptionByName(_){return this.filterConfigOptionsByName(_).pop()}getDisplayName(_){return this.getOptionValueByName(_,"displayName")}getDescription(_){return this.getOptionValueByName(_,"description")}}return f.\u0275fac=function(_){return new(_||f)},f.\u0275prov=u.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})()},74255:(v,S,i)=>{"use strict";i.d(S,{J:()=>M});var r=i(23815),u=i.n(r),p=i(26215),f=i(45435),e=i(28049),_=i(74788),y=i(58497),T=i(46947);let M=(()=>{class R{constructor(Z,J){this.http=Z,this.timerService=J,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new p.X(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return Z=>{this.summaryDataSource.next(Z)}}subscribeOnce(Z,J){return this.summaryData$.pipe((0,f.h)(Q=>!!Q),(0,e.P)()).subscribe(Z,J)}subscribe(Z,J){return this.summaryData$.pipe((0,f.h)(Q=>!!Q)).subscribe(Z,J)}addRunningTask(Z){const J=this.summaryDataSource.getValue();!J||(u().isArray(J.executing_tasks)?J.executing_tasks.find(ee=>ee.name===Z.name&&u().isEqual(ee.metadata,Z.metadata))||J.executing_tasks.push(Z):J.executing_tasks=[Z],this.summaryDataSource.next(J))}}return R.\u0275fac=function(Z){return new(Z||R)(_.LFG(y.eN),_.LFG(T.f))},R.\u0275prov=_.Yz7({token:R,factory:R.\u0275fac,providedIn:"root"}),R})()},38047:(v,S,i)=>{"use strict";i.d(S,{j:()=>f});var r=i(74255),u=i(74788),p=i(68879);let f=(()=>{class e{constructor(y,T){this.taskMessageService=y,this.summaryService=T}init(y,T,M,R,F,Z,J){this.getUpdate=y,this.preProcessing=T,this.setList=M,this.onFetchError=R,this.taskFilter=F,this.itemFilter=Z,this.builders=J||{},this.summaryDataSubscription=this.summaryService.subscribe(Q=>{this.summary=Q,this.fetch()},this.onFetchError)}fetch(y=null){this.getUpdate(y).subscribe(T=>{var M;this.updateData(T,null===(M=this.summary)||void 0===M?void 0:M.executing_tasks.filter(this.taskFilter))},this.onFetchError)}updateData(y,T){const M=this.preProcessing?this.preProcessing(y):y;this.addMissing(M,T),M.forEach(R=>{const F=T.filter(Z=>this.itemFilter(R,Z));R.cdExecuting=this.getTaskAction(F)}),this.setList(M)}addMissing(y,T){const M=this.builders.default;null==T||T.forEach(R=>{const F=y.find(J=>this.itemFilter(J,R)),Z=this.builders[R.name];!F&&(Z||M)&&y.push(Z?Z(R.metadata):M(R.metadata))})}getTaskAction(y){if(0!==y.length)return y.map(T=>{const M=T.progress?` ${T.progress}%`:"";return this.taskMessageService.getRunningText(T)+"..."+M}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}return e.\u0275fac=function(y){return new(y||e)(u.LFG(p.p),u.LFG(r.J))},e.\u0275prov=u.Yz7({token:e,factory:e.\u0275fac}),e})()},71099:(v,S,i)=>{"use strict";i.d(S,{k:()=>e});var r=i(23815),u=i.n(r),p=i(74788);class f{constructor(y,T,M){this.name=y,this.metadata=T,this.onTaskFinished=M}}let e=(()=>{class _{constructor(){this.subscriptions=[]}init(T){return T.subscribe(M=>{const R=M.executing_tasks,F=M.finished_tasks,Z=[];for(const J of this.subscriptions){const Q=this._getTask(J,F),ee=this._getTask(J,R);null!==Q&&null===ee&&J.onTaskFinished(Q),null!==ee&&Z.push(J),this.subscriptions=Z}})}subscribe(T,M,R){this.subscriptions.push(new f(T,M,R))}_getTask(T,M){for(const R of M)if(R.name===T.name&&u().isEqual(R.metadata,T.metadata))return R;return null}}return _.\u0275fac=function(T){return new(T||_)},_.\u0275prov=p.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"}),_})()},68879:(v,S,i)=>{"use strict";i.d(S,{p:()=>_});var r=(()=>{return(y=r||(r={})).auth="Login",y.cephfs="CephFS",y.rbd="RBD",y.pool="Pool",y.osd="OSD",y.role="Role",y.user="User",r;var y})(),u=i(19358),p=i(74788);class f{constructor(T,M,R){this.running=T,this.failure=M,this.success=R}}class e{constructor(T,M,R){this.operation=T,this.involves=M,this.errors=R||(()=>({}))}failure(T){return "Failed to " + this.operation.failure + " " + this.involves(T) + ""}running(T){return`${this.operation.running} ${this.involves(T)}`}success(T){return`${this.operation.success} ${this.involves(T)}`}}let _=(()=>{class y{constructor(){this.defaultMessage=this.newTaskMessage(new f("Executing","execute","Executed"),M=>M&&(r[M.component]||M.component)||"unknown task",()=>({})),this.commonOperations={create:new f("Creating","create","Created"),update:new f("Updating","update","Updated"),delete:new f("Deleting","delete","Deleted"),add:new f("Adding","add","Added"),remove:new f("Removing","remove","Removed"),import:new f("Importing","import","Imported")},this.rbd={default:M=>"RBD '" + M.image_spec + "'",create:M=>{const R=new u.N(M.pool_name,M.namespace,M.image_name).toString();return "RBD '" + R + "'"},child:M=>{const R=new u.N(M.child_pool_name,M.child_namespace,M.child_image_name).toString();return "RBD '" + R + "'"},destination:M=>{const R=new u.N(M.dest_pool_name,M.dest_namespace,M.dest_image_name).toString();return "RBD '" + R + "'"},snapshot:M=>"RBD snapshot '" + M.image_spec + "@" + M.snapshot_name + "'"},this.rbd_mirroring={site_name:()=>"mirroring site name",bootstrap:()=>"bootstrap token",pool:M=>"mirror mode for pool '" + M.pool_name + "'",pool_peer:M=>"mirror peer for pool '" + M.pool_name + "'"},this.grafana={update_dashboards:()=>"all dashboards"},this.messages={"host/add":this.newTaskMessage(this.commonOperations.add,M=>this.host(M)),"host/remove":this.newTaskMessage(this.commonOperations.remove,M=>this.host(M)),"host/identify_device":this.newTaskMessage(new f("Identifying","identify","Identified"),M=>"device '" + M.device + "' on host '" + M.hostname + "'"),"osd/create":this.newTaskMessage(this.commonOperations.create,M=>"OSDs (DriveGroups: " + M.tracking_id + ")"),"osd/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.osd(M)),"pool/create":this.newTaskMessage(this.commonOperations.create,M=>this.pool(M),M=>({17:"Name is already used by " + this.pool(M) + "."})),"pool/edit":this.newTaskMessage(this.commonOperations.update,M=>this.pool(M),M=>({17:"Name is already used by " + this.pool(M) + "."})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.pool(M)),"ecp/create":this.newTaskMessage(this.commonOperations.create,M=>this.ecp(M),M=>({17:"Name is already used by " + this.ecp(M) + "."})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.ecp(M)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,M=>this.crushRule(M),M=>({17:"Name is already used by " + this.crushRule(M) + "."})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.crushRule(M)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,M=>({17:"Name is already used by " + this.rbd.create(M) + "."})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,M=>({17:"Name is already used by " + this.rbd.default(M) + "."})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,M=>({16:"" + this.rbd.default(M) + " is busy.",39:"" + this.rbd.default(M) + " contains snapshots."})),"rbd/clone":this.newTaskMessage(new f("Cloning","clone","Cloned"),this.rbd.child,M=>({17:"Name is already used by " + this.rbd.child(M) + ".",22:"Snapshot of " + this.rbd.child(M) + " must be protected."})),"rbd/copy":this.newTaskMessage(new f("Copying","copy","Copied"),this.rbd.destination,M=>({17:"Name is already used by " + this.rbd.destination(M) + "."})),"rbd/flatten":this.newTaskMessage(new f("Flattening","flatten","Flattened"),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,M=>({17:"Name is already used by " + this.rbd.snapshot(M) + "."})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,M=>({16:"Cannot unprotect " + this.rbd.snapshot(M) + " because it contains child images."})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,M=>({16:"Cannot delete " + this.rbd.snapshot(M) + " because it's protected."})),"rbd/snap/rollback":this.newTaskMessage(new f("Rolling back","rollback","Rolled back"),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new f("Moving","move","Moved"),M=>"image '" + M.image_spec + "' to trash",()=>({2:"Could not find image."})),"rbd/trash/restore":this.newTaskMessage(new f("Restoring","restore","Restored"),M=>"image '" + M.image_id_spec + "' into '" + M.new_image_name + "'",M=>({17:"Image name '" + M.new_image_name + "' is already in use."})),"rbd/trash/remove":this.newTaskMessage(new f("Deleting","delete","Deleted"),M=>"image '" + M.image_id_spec + "'"),"rbd/trash/purge":this.newTaskMessage(new f("Purging","purge","Purged"),M=>{let R="all pools";return M.pool_name&&(R=`'${M.pool_name}'`),"images from " + R + ""}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:"Cannot disable mirroring because it contains a peer."})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,M=>this.iscsiTarget(M)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,M=>this.iscsiTarget(M)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.iscsiTarget(M)),"nfs/create":this.newTaskMessage(this.commonOperations.create,M=>this.nfs(M)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,M=>this.nfs(M)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.nfs(M)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"service/create":this.newTaskMessage(this.commonOperations.create,M=>this.service(M)),"service/edit":this.newTaskMessage(this.commonOperations.update,M=>this.service(M)),"service/delete":this.newTaskMessage(this.commonOperations.delete,M=>this.service(M))}}newTaskMessage(M,R,F){return new e(M,R,F)}host(M){return "host '" + M.hostname + "'"}osd(M){return "OSD '" + M.svc_id + "'"}pool(M){return "pool '" + M.pool_name + "'"}ecp(M){return "erasure code profile '" + M.name + "'"}crushRule(M){return "crush rule '" + M.name + "'"}iscsiTarget(M){return "target '" + M.target_iqn + "'"}nfs(M){return "NFS '" + M.cluster_id + ":" + (M.export_id ? M.export_id : M.path) + "'"}service(M){return "Service '" + M.service_name + "'"}_getTaskTitle(M){return M.name&&M.name.startsWith("progress/")?this.newTaskMessage(new f(M.name.replace("progress/",""),"",M.name.replace("progress/","")),R=>""):this.messages[M.name]||this.defaultMessage}getSuccessTitle(M){return this._getTaskTitle(M).success(M.metadata)}getErrorMessage(M){return this._getTaskTitle(M).errors(M.metadata)[M.exception.code]||M.exception.detail}getErrorTitle(M){return this._getTaskTitle(M).failure(M.metadata)}getRunningTitle(M){return this._getTaskTitle(M).running(M.metadata)}getRunningText(M){return this._getTaskTitle(M).operation.running}}return y.\u0275fac=function(M){return new(M||y)},y.\u0275prov=p.Yz7({token:y,factory:y.\u0275fac,providedIn:"root"}),y})()},32337:(v,S,i)=>{"use strict";i.d(S,{P:()=>R});var r=i(18891),u=i(18001),p=i(61355),f=i(60737),e=i(97161),_=i(74255),y=i(71099),T=i(74788),M=i(68879);let R=(()=>{class F{constructor(J,Q,ee,ue){this.notificationService=J,this.summaryService=Q,this.taskMessageService=ee,this.taskManagerService=ue}wrapTaskAroundCall({task:J,call:Q}){return new r.y(ee=>{Q.subscribe(ue=>{202===ue.status?this._handleExecutingTasks(J):(this.summaryService.refresh(),J.success=!0,this.notificationService.notifyTask(J))},ue=>{J.success=!1,J.exception=ue.error,ee.error(ue)},()=>{ee.complete()})})}_handleExecutingTasks(J){const Q=new p.T(u.k.info,this.taskMessageService.getRunningTitle(J));Q.isFinishedTask=!0,this.notificationService.show(Q);const ee=new f.o(J.name,J.metadata);this.summaryService.addRunningTask(ee),this.taskManagerService.subscribe(ee.name,ee.metadata,ue=>{this.notificationService.notifyTask(ue)})}}return F.\u0275fac=function(J){return new(J||F)(T.LFG(e.g),T.LFG(_.J),T.LFG(M.p),T.LFG(y.k))},F.\u0275prov=T.Yz7({token:F,factory:F.\u0275fac,providedIn:"root"}),F})()},46947:(v,S,i)=>{"use strict";i.d(S,{f:()=>Z});var r=i(46797),u=i(59746),p=i(43190),f=i(47349),e=i(49083),_=i(74788),y=i(33637);class T{constructor(Q){this.zone=Q,this.scheduler=y.z}now(){return this.scheduler.now()}}let M=(()=>{class J extends T{constructor(ee){super(ee)}schedule(...ee){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,ee))}}return J.\u0275fac=function(ee){return new(ee||J)(_.LFG(_.R0b))},J.\u0275prov=_.Yz7({token:J,factory:J.\u0275fac,providedIn:"root"}),J})(),R=(()=>{class J extends T{constructor(ee){super(ee)}schedule(...ee){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,ee))}}return J.\u0275fac=function(ee){return new(ee||J)(_.LFG(_.R0b))},J.\u0275prov=_.Yz7({token:J,factory:J.\u0275fac,providedIn:"root"}),J})(),F=(()=>{class J{constructor(ee,ue){this.leave=ee,this.enter=ue}}return J.\u0275fac=function(ee){return new(ee||J)(_.LFG(M),_.LFG(R))},J.\u0275prov=_.Yz7({token:J,factory:J.\u0275fac,providedIn:"root"}),J})(),Z=(()=>{class J{constructor(ee){this.ngZone=ee,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(ee,ue=this.DEFAULT_REFRESH_INTERVAL,ae=this.DEFAULT_DUE_TIME){return(0,r.H)(ae,ue,this.ngZone.leave).pipe((0,u.QV)(this.ngZone.enter),(0,p.w)(ee),(0,f.d)({refCount:!0,bufferSize:1}),(0,e.r)())}}return J.\u0275fac=function(ee){return new(ee||J)(_.LFG(F))},J.\u0275prov=_.Yz7({token:J,factory:J.\u0275fac,providedIn:"root"}),J})()},51847:(v,S,i)=>{"use strict";i.d(S,{F:()=>p});var r=i(12057),u=i(79512);class p{constructor(e){this.base=e}static concatURLSegments(e){return e.reduce(r.Ye.joinWithSlash)}static buildURL(e,..._){return p.concatURLSegments([...e?["/"]:[],..._])}getURL(e,_=!0,...y){return p.buildURL(_,this.base,e,...y)}getCreate(e=!0){return this.getURL(u.MQ.CREATE,e)}getCreateFrom(e,_=!0){return this.getURL(u.MQ.CREATE,_,e)}getDelete(e=!0){return this.getURL(u.MQ.DELETE,e)}getEdit(e,_=!0){return this.getURL(u.MQ.EDIT,_,e)}getUpdate(e,_=!0){return this.getURL(u.MQ.UPDATE,_,e)}getAdd(e=!0){return this.getURL(u.MQ.ADD,e)}getRemove(e=!0){return this.getURL(u.MQ.REMOVE,e)}getRecreate(e,_=!0){return this.getURL(u.MQ.RECREATE,_,e)}}},44466:(v,S,i)=>{"use strict";i.d(S,{m:()=>F});var r=i(12057),u=i(99475),p=i(15626),f=i(2149),e=i(35540),_=i(85953),y=i(45510),T=i(74937),M=i(28211),R=i(74788);let F=(()=>{class Z{}return Z.\u0275fac=function(Q){return new(Q||Z)},Z.\u0275mod=R.oAB({type:Z}),Z.\u0275inj=R.cJS({providers:[T.j,y.P,M.H,u.P],imports:[[r.ez,_.D,p.K,f.t,e.o],p.K,_.D,f.t,e.o]}),Z})()},92340:(v,S,i)=>{"use strict";i.d(S,{N:()=>r});const r={default_lang:"en-US",production:!0,year:"2022"}},66492:(v,S,i)=>{"use strict";var r={};i.r(r),i.d(r,{JsonPatchError:()=>ac,_areEquals:()=>r1,applyOperation:()=>qm,applyPatch:()=>vm,applyReducer:()=>T3,deepClone:()=>M0,getValueByPointer:()=>fg,validate:()=>eS,validator:()=>A0});var u={};i.r(u),i.d(u,{compare:()=>xN,generate:()=>rS,observe:()=>M3,unobserve:()=>nS});var p={};i.r(p),i.d(p,{cookie:()=>b8,header:()=>y8,path:()=>g8,query:()=>m8});var f=i(91211),e=i(74788),_=i(12057),y=i(58497),T=i(56083);function M(){return"undefined"!=typeof window&&void 0!==window.document}function R(){return"undefined"!=typeof process&&"[object process]"==={}.toString.call(process)}function F(n){switch(n.length){case 0:return new T.ZN;case 1:return n[0];default:return new T.ZE(n)}}function Z(n,s,t,o,c={},g={}){const C=[],D=[];let P=-1,j=null;if(o.forEach(W=>{const re=W.offset,ie=re==P,ge=ie&&j||{};Object.keys(W).forEach(_e=>{let Le=_e,Re=W[_e];if("offset"!==_e)switch(Le=s.normalizePropertyName(Le,C),Re){case T.k1:Re=c[_e];break;case T.l3:Re=g[_e];break;default:Re=s.normalizeStyleValue(_e,Le,Re,C)}ge[Le]=Re}),ie||D.push(ge),j=ge,P=re}),C.length){const W="\n - ";throw new Error(`Unable to animate due to the following errors:${W}${C.join(W)}`)}return D}function J(n,s,t,o){switch(s){case"start":n.onStart(()=>o(t&&Q(t,"start",n)));break;case"done":n.onDone(()=>o(t&&Q(t,"done",n)));break;case"destroy":n.onDestroy(()=>o(t&&Q(t,"destroy",n)))}}function Q(n,s,t){const o=t.totalTime,g=ee(n.element,n.triggerName,n.fromState,n.toState,s||n.phaseName,null==o?n.totalTime:o,!!t.disabled),C=n._data;return null!=C&&(g._data=C),g}function ee(n,s,t,o,c="",g=0,C){return{element:n,triggerName:s,fromState:t,toState:o,phaseName:c,totalTime:g,disabled:!!C}}function ue(n,s,t){let o;return n instanceof Map?(o=n.get(s),o||n.set(s,o=t)):(o=n[s],o||(o=n[s]=t)),o}function ae(n){const s=n.indexOf(":");return[n.substring(1,s),n.substr(s+1)]}let $=(n,s)=>!1,ve=(n,s)=>!1,he=(n,s,t)=>[];const Oe=R();(Oe||"undefined"!=typeof Element)&&($=M()?(n,s)=>{for(;s&&s!==document.documentElement;){if(s===n)return!0;s=s.parentNode||s.host}return!1}:(n,s)=>n.contains(s),ve=(()=>{if(Oe||Element.prototype.matches)return(n,s)=>n.matches(s);{const n=Element.prototype,s=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector;return s?(t,o)=>s.apply(t,[o]):ve}})(),he=(n,s,t)=>{let o=[];if(t){const c=n.querySelectorAll(s);for(let g=0;g<c.length;g++)o.push(c[g])}else{const c=n.querySelector(s);c&&o.push(c)}return o});let dt=null,ze=!1;function Ye(n){dt||(dt=("undefined"!=typeof document?document.body:null)||{},ze=!!dt.style&&"WebkitAppearance"in dt.style);let s=!0;return dt.style&&!function(n){return"ebkit"==n.substring(1,6)}(n)&&(s=n in dt.style,!s&&ze&&(s="Webkit"+n.charAt(0).toUpperCase()+n.substr(1)in dt.style)),s}const Ie=ve,Ve=$,He=he;function Zt(n){const s={};return Object.keys(n).forEach(t=>{const o=t.replace(/([a-z])([A-Z])/g,"$1-$2");s[o]=n[t]}),s}let st=(()=>{class n{validateStyleProperty(t){return Ye(t)}matchesElement(t,o){return Ie(t,o)}containsElement(t,o){return Ve(t,o)}query(t,o,c){return He(t,o,c)}computeStyle(t,o,c){return c||""}animate(t,o,c,g,C,D=[],P){return new T.ZN(c,g)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})(),en=(()=>{class n{}return n.NOOP=new st,n})();const Bt="ng-enter",mt="ng-leave",zt="ng-trigger",Yn=".ng-trigger",Hr="ng-animating",ci=".ng-animating";function Ir(n){if("number"==typeof n)return n;const s=n.match(/^(-?[\.\d]+)(m?s)/);return!s||s.length<2?0:wr(parseFloat(s[1]),s[2])}function wr(n,s){switch(s){case"s":return 1e3*n;default:return n}}function Qr(n,s,t){return n.hasOwnProperty("duration")?n:function(n,s,t){let c,g=0,C="";if("string"==typeof n){const D=n.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===D)return s.push(`The provided timing value "${n}" is invalid.`),{duration:0,delay:0,easing:""};c=wr(parseFloat(D[1]),D[2]);const P=D[3];null!=P&&(g=wr(parseFloat(P),D[4]));const j=D[5];j&&(C=j)}else c=n;if(!t){let D=!1,P=s.length;c<0&&(s.push("Duration values below 0 are not allowed for this animation step."),D=!0),g<0&&(s.push("Delay values below 0 are not allowed for this animation step."),D=!0),D&&s.splice(P,0,`The provided timing value "${n}" is invalid.`)}return{duration:c,delay:g,easing:C}}(n,s,t)}function In(n,s={}){return Object.keys(n).forEach(t=>{s[t]=n[t]}),s}function Zr(n,s,t={}){if(s)for(let o in n)t[o]=n[o];else In(n,t);return t}function Ur(n,s,t){return t?s+":"+t+";":""}function di(n){let s="";for(let t=0;t<n.style.length;t++){const o=n.style.item(t);s+=Ur(0,o,n.style.getPropertyValue(o))}for(const t in n.style)n.style.hasOwnProperty(t)&&!t.startsWith("_")&&(s+=Ur(0,hi(t),n.style[t]));n.setAttribute("style",s)}function $i(n,s,t){n.style&&(Object.keys(s).forEach(o=>{const c=zr(o);t&&!t.hasOwnProperty(o)&&(t[o]=n.style[c]),n.style[c]=s[o]}),R()&&di(n))}function Hi(n,s){n.style&&(Object.keys(s).forEach(t=>{const o=zr(t);n.style[o]=""}),R()&&di(n))}function Br(n){return Array.isArray(n)?1==n.length?n[0]:(0,T.vP)(n):n}const Wt=new RegExp("{{\\s*(.+?)\\s*}}","g");function Jn(n){let s=[];if("string"==typeof n){let t;for(;t=Wt.exec(n);)s.push(t[1]);Wt.lastIndex=0}return s}function ir(n,s,t){const o=n.toString(),c=o.replace(Wt,(g,C)=>{let D=s[C];return s.hasOwnProperty(C)||(t.push(`Please provide a value for the animation param ${C}`),D=""),D.toString()});return c==o?n:c}function Lr(n){const s=[];let t=n.next();for(;!t.done;)s.push(t.value),t=n.next();return s}const Vn=/-+([a-z0-9])/g;function zr(n){return n.replace(Vn,(...s)=>s[1].toUpperCase())}function hi(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Ai(n,s){return 0===n||0===s}function Tr(n,s,t){const o=Object.keys(t);if(o.length&&s.length){let g=s[0],C=[];if(o.forEach(D=>{g.hasOwnProperty(D)||C.push(D),g[D]=t[D]}),C.length)for(var c=1;c<s.length;c++){let D=s[c];C.forEach(function(P){D[P]=gn(n,P)})}}return s}function Nr(n,s,t){switch(s.type){case 7:return n.visitTrigger(s,t);case 0:return n.visitState(s,t);case 1:return n.visitTransition(s,t);case 2:return n.visitSequence(s,t);case 3:return n.visitGroup(s,t);case 4:return n.visitAnimate(s,t);case 5:return n.visitKeyframes(s,t);case 6:return n.visitStyle(s,t);case 8:return n.visitReference(s,t);case 9:return n.visitAnimateChild(s,t);case 10:return n.visitAnimateRef(s,t);case 11:return n.visitQuery(s,t);case 12:return n.visitStagger(s,t);default:throw new Error(`Unable to resolve animation metadata node #${s.type}`)}}function gn(n,s){return window.getComputedStyle(n)[s]}function mr(n,s){const t=[];return"string"==typeof n?n.split(/\s*,\s*/).forEach(o=>function(n,s,t){if(":"==n[0]){const P=function(n,s){switch(n){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,o)=>parseFloat(o)>parseFloat(t);case":decrement":return(t,o)=>parseFloat(o)<parseFloat(t);default:return s.push(`The transition alias value "${n}" is not supported`),"* => *"}}(n,t);if("function"==typeof P)return void s.push(P);n=P}const o=n.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==o||o.length<4)return t.push(`The provided transition expression "${n}" is not supported`),s;const c=o[1],g=o[2],C=o[3];s.push(Ii(c,C));"<"==g[0]&&!("*"==c&&"*"==C)&&s.push(Ii(C,c))}(o,t,s)):t.push(n),t}const vr=new Set(["true","1"]),si=new Set(["false","0"]);function Ii(n,s){const t=vr.has(n)||si.has(n),o=vr.has(s)||si.has(s);return(c,g)=>{let C="*"==n||n==c,D="*"==s||s==g;return!C&&t&&"boolean"==typeof c&&(C=c?vr.has(n):si.has(n)),!D&&o&&"boolean"==typeof g&&(D=g?vr.has(s):si.has(s)),C&&D}}const so=new RegExp("s*:selfs*,?","g");function Ze(n,s,t){return new jt(n).build(s,t)}class jt{constructor(s){this._driver=s}build(s,t){const o=new Wn(t);return this._resetContextStyleTimingState(o),Nr(this,Br(s),o)}_resetContextStyleTimingState(s){s.currentQuerySelector="",s.collectedStyles={},s.collectedStyles[""]={},s.currentTime=0}visitTrigger(s,t){let o=t.queryCount=0,c=t.depCount=0;const g=[],C=[];return"@"==s.name.charAt(0)&&t.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),s.definitions.forEach(D=>{if(this._resetContextStyleTimingState(t),0==D.type){const P=D,j=P.name;j.toString().split(/\s*,\s*/).forEach(W=>{P.name=W,g.push(this.visitState(P,t))}),P.name=j}else if(1==D.type){const P=this.visitTransition(D,t);o+=P.queryCount,c+=P.depCount,C.push(P)}else t.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:s.name,states:g,transitions:C,queryCount:o,depCount:c,options:null}}visitState(s,t){const o=this.visitStyle(s.styles,t),c=s.options&&s.options.params||null;if(o.containsDynamicStyles){const g=new Set,C=c||{};if(o.styles.forEach(D=>{if(wn(D)){const P=D;Object.keys(P).forEach(j=>{Jn(P[j]).forEach(W=>{C.hasOwnProperty(W)||g.add(W)})})}}),g.size){const D=Lr(g.values());t.errors.push(`state("${s.name}", ...) must define default values for all the following style substitutions: ${D.join(", ")}`)}}return{type:0,name:s.name,style:o,options:c?{params:c}:null}}visitTransition(s,t){t.queryCount=0,t.depCount=0;const o=Nr(this,Br(s.animation),t);return{type:1,matchers:mr(s.expr,t.errors),animation:o,queryCount:t.queryCount,depCount:t.depCount,options:Gi(s.options)}}visitSequence(s,t){return{type:2,steps:s.steps.map(o=>Nr(this,o,t)),options:Gi(s.options)}}visitGroup(s,t){const o=t.currentTime;let c=0;const g=s.steps.map(C=>{t.currentTime=o;const D=Nr(this,C,t);return c=Math.max(c,t.currentTime),D});return t.currentTime=c,{type:3,steps:g,options:Gi(s.options)}}visitAnimate(s,t){const o=function(n,s){let t=null;if(n.hasOwnProperty("duration"))t=n;else if("number"==typeof n)return po(Qr(n,s).duration,0,"");const o=n;if(o.split(/\s+/).some(g=>"{"==g.charAt(0)&&"{"==g.charAt(1))){const g=po(0,0,"");return g.dynamic=!0,g.strValue=o,g}return t=t||Qr(o,s),po(t.duration,t.delay,t.easing)}(s.timings,t.errors);t.currentAnimateTimings=o;let c,g=s.styles?s.styles:(0,T.oB)({});if(5==g.type)c=this.visitKeyframes(g,t);else{let C=s.styles,D=!1;if(!C){D=!0;const j={};o.easing&&(j.easing=o.easing),C=(0,T.oB)(j)}t.currentTime+=o.duration+o.delay;const P=this.visitStyle(C,t);P.isEmptyStep=D,c=P}return t.currentAnimateTimings=null,{type:4,timings:o,style:c,options:null}}visitStyle(s,t){const o=this._makeStyleAst(s,t);return this._validateStyleAst(o,t),o}_makeStyleAst(s,t){const o=[];Array.isArray(s.styles)?s.styles.forEach(C=>{"string"==typeof C?C==T.l3?o.push(C):t.errors.push(`The provided style string value ${C} is not allowed.`):o.push(C)}):o.push(s.styles);let c=!1,g=null;return o.forEach(C=>{if(wn(C)){const D=C,P=D.easing;if(P&&(g=P,delete D.easing),!c)for(let j in D)if(D[j].toString().indexOf("{{")>=0){c=!0;break}}}),{type:6,styles:o,easing:g,offset:s.offset,containsDynamicStyles:c,options:null}}_validateStyleAst(s,t){const o=t.currentAnimateTimings;let c=t.currentTime,g=t.currentTime;o&&g>0&&(g-=o.duration+o.delay),s.styles.forEach(C=>{"string"!=typeof C&&Object.keys(C).forEach(D=>{if(!this._driver.validateStyleProperty(D))return void t.errors.push(`The provided animation property "${D}" is not a supported CSS property for animations`);const P=t.collectedStyles[t.currentQuerySelector],j=P[D];let W=!0;j&&(g!=c&&g>=j.startTime&&c<=j.endTime&&(t.errors.push(`The CSS property "${D}" that exists between the times of "${j.startTime}ms" and "${j.endTime}ms" is also being animated in a parallel animation between the times of "${g}ms" and "${c}ms"`),W=!1),g=j.startTime),W&&(P[D]={startTime:g,endTime:c}),t.options&&function(n,s,t){const o=s.params||{},c=Jn(n);c.length&&c.forEach(g=>{o.hasOwnProperty(g)||t.push(`Unable to resolve the local animation param ${g} in the given list of values`)})}(C[D],t.options,t.errors)})})}visitKeyframes(s,t){const o={type:5,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push("keyframes() must be placed inside of a call to animate()"),o;let g=0;const C=[];let D=!1,P=!1,j=0;const W=s.steps.map(ke=>{const xe=this._makeStyleAst(ke,t);let U=null!=xe.offset?xe.offset:function(n){if("string"==typeof n)return null;let s=null;if(Array.isArray(n))n.forEach(t=>{if(wn(t)&&t.hasOwnProperty("offset")){const o=t;s=parseFloat(o.offset),delete o.offset}});else if(wn(n)&&n.hasOwnProperty("offset")){const t=n;s=parseFloat(t.offset),delete t.offset}return s}(xe.styles),pt=0;return null!=U&&(g++,pt=xe.offset=U),P=P||pt<0||pt>1,D=D||pt<j,j=pt,C.push(pt),xe});P&&t.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),D&&t.errors.push("Please ensure that all keyframe offsets are in order");const re=s.steps.length;let ie=0;g>0&&g<re?t.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==g&&(ie=1/(re-1));const ge=re-1,_e=t.currentTime,Le=t.currentAnimateTimings,Re=Le.duration;return W.forEach((ke,xe)=>{const U=ie>0?xe==ge?1:ie*xe:C[xe],pt=U*Re;t.currentTime=_e+Le.delay+pt,Le.duration=pt,this._validateStyleAst(ke,t),ke.offset=U,o.styles.push(ke)}),o}visitReference(s,t){return{type:8,animation:Nr(this,Br(s.animation),t),options:Gi(s.options)}}visitAnimateChild(s,t){return t.depCount++,{type:9,options:Gi(s.options)}}visitAnimateRef(s,t){return{type:10,animation:this.visitReference(s.animation,t),options:Gi(s.options)}}visitQuery(s,t){const o=t.currentQuerySelector,c=s.options||{};t.queryCount++,t.currentQuery=s;const[g,C]=function(n){const s=!!n.split(/\s*,\s*/).find(t=>":self"==t);return s&&(n=n.replace(so,"")),[n=n.replace(/@\*/g,Yn).replace(/@\w+/g,t=>Yn+"-"+t.substr(1)).replace(/:animating/g,ci),s]}(s.selector);t.currentQuerySelector=o.length?o+" "+g:g,ue(t.collectedStyles,t.currentQuerySelector,{});const D=Nr(this,Br(s.animation),t);return t.currentQuery=null,t.currentQuerySelector=o,{type:11,selector:g,limit:c.limit||0,optional:!!c.optional,includeSelf:C,animation:D,originalSelector:s.selector,options:Gi(s.options)}}visitStagger(s,t){t.currentQuery||t.errors.push("stagger() can only be used inside of query()");const o="full"===s.timings?{duration:0,delay:0,easing:"full"}:Qr(s.timings,t.errors,!0);return{type:12,animation:Nr(this,Br(s.animation),t),timings:o,options:null}}}class Wn{constructor(s){this.errors=s,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function wn(n){return!Array.isArray(n)&&"object"==typeof n}function Gi(n){return n?(n=In(n)).params&&(n.params=function(n){return n?In(n):null}(n.params)):n={},n}function po(n,s,t){return{duration:n,delay:s,easing:t}}function yo(n,s,t,o,c,g,C=null,D=!1){return{type:1,element:n,keyframes:s,preStyleProps:t,postStyleProps:o,duration:c,delay:g,totalTime:c+g,easing:C,subTimeline:D}}class Mo{constructor(){this._map=new Map}consume(s){let t=this._map.get(s);return t?this._map.delete(s):t=[],t}append(s,t){let o=this._map.get(s);o||this._map.set(s,o=[]),o.push(...t)}has(s){return this._map.has(s)}clear(){this._map.clear()}}const zo=new RegExp(":enter","g"),Si=new RegExp(":leave","g");function ai(n,s,t,o,c,g={},C={},D,P,j=[]){return(new Zn).buildKeyframes(n,s,t,o,c,g,C,D,P,j)}class Zn{buildKeyframes(s,t,o,c,g,C,D,P,j,W=[]){j=j||new Mo;const re=new yr(s,t,j,c,g,W,[]);re.options=P,re.currentTimeline.setStyles([C],null,re.errors,P),Nr(this,o,re);const ie=re.timelines.filter(ge=>ge.containsAnimation());if(ie.length&&Object.keys(D).length){const ge=ie[ie.length-1];ge.allowOnlyTimelineStyles()||ge.setStyles([D],null,re.errors,P)}return ie.length?ie.map(ge=>ge.buildKeyframes()):[yo(t,[],[],[],0,0,"",!1)]}visitTrigger(s,t){}visitState(s,t){}visitTransition(s,t){}visitAnimateChild(s,t){const o=t.subInstructions.consume(t.element);if(o){const c=t.createSubContext(s.options),g=t.currentTimeline.currentTime,C=this._visitSubInstructions(o,c,c.options);g!=C&&t.transformIntoNewTimeline(C)}t.previousNode=s}visitAnimateRef(s,t){const o=t.createSubContext(s.options);o.transformIntoNewTimeline(),this.visitReference(s.animation,o),t.transformIntoNewTimeline(o.currentTimeline.currentTime),t.previousNode=s}_visitSubInstructions(s,t,o){let g=t.currentTimeline.currentTime;const C=null!=o.duration?Ir(o.duration):null,D=null!=o.delay?Ir(o.delay):null;return 0!==C&&s.forEach(P=>{const j=t.appendInstructionToTimeline(P,C,D);g=Math.max(g,j.duration+j.delay)}),g}visitReference(s,t){t.updateOptions(s.options,!0),Nr(this,s.animation,t),t.previousNode=s}visitSequence(s,t){const o=t.subContextCount;let c=t;const g=s.options;if(g&&(g.params||g.delay)&&(c=t.createSubContext(g),c.transformIntoNewTimeline(),null!=g.delay)){6==c.previousNode.type&&(c.currentTimeline.snapshotCurrentStyles(),c.previousNode=cr);const C=Ir(g.delay);c.delayNextStep(C)}s.steps.length&&(s.steps.forEach(C=>Nr(this,C,c)),c.currentTimeline.applyStylesToKeyframe(),c.subContextCount>o&&c.transformIntoNewTimeline()),t.previousNode=s}visitGroup(s,t){const o=[];let c=t.currentTimeline.currentTime;const g=s.options&&s.options.delay?Ir(s.options.delay):0;s.steps.forEach(C=>{const D=t.createSubContext(s.options);g&&D.delayNextStep(g),Nr(this,C,D),c=Math.max(c,D.currentTimeline.currentTime),o.push(D.currentTimeline)}),o.forEach(C=>t.currentTimeline.mergeTimelineCollectedStyles(C)),t.transformIntoNewTimeline(c),t.previousNode=s}_visitTiming(s,t){if(s.dynamic){const o=s.strValue;return Qr(t.params?ir(o,t.params,t.errors):o,t.errors)}return{duration:s.duration,delay:s.delay,easing:s.easing}}visitAnimate(s,t){const o=t.currentAnimateTimings=this._visitTiming(s.timings,t),c=t.currentTimeline;o.delay&&(t.incrementTime(o.delay),c.snapshotCurrentStyles());const g=s.style;5==g.type?this.visitKeyframes(g,t):(t.incrementTime(o.duration),this.visitStyle(g,t),c.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=s}visitStyle(s,t){const o=t.currentTimeline,c=t.currentAnimateTimings;!c&&o.getCurrentStyleProperties().length&&o.forwardFrame();const g=c&&c.easing||s.easing;s.isEmptyStep?o.applyEmptyStep(g):o.setStyles(s.styles,g,t.errors,t.options),t.previousNode=s}visitKeyframes(s,t){const o=t.currentAnimateTimings,c=t.currentTimeline.duration,g=o.duration,D=t.createSubContext().currentTimeline;D.easing=o.easing,s.styles.forEach(P=>{D.forwardTime((P.offset||0)*g),D.setStyles(P.styles,P.easing,t.errors,t.options),D.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(D),t.transformIntoNewTimeline(c+g),t.previousNode=s}visitQuery(s,t){const o=t.currentTimeline.currentTime,c=s.options||{},g=c.delay?Ir(c.delay):0;g&&(6===t.previousNode.type||0==o&&t.currentTimeline.getCurrentStyleProperties().length)&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=cr);let C=o;const D=t.invokeQuery(s.selector,s.originalSelector,s.limit,s.includeSelf,!!c.optional,t.errors);t.currentQueryTotal=D.length;let P=null;D.forEach((j,W)=>{t.currentQueryIndex=W;const re=t.createSubContext(s.options,j);g&&re.delayNextStep(g),j===t.element&&(P=re.currentTimeline),Nr(this,s.animation,re),re.currentTimeline.applyStylesToKeyframe(),C=Math.max(C,re.currentTimeline.currentTime)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(C),P&&(t.currentTimeline.mergeTimelineCollectedStyles(P),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=s}visitStagger(s,t){const o=t.parentContext,c=t.currentTimeline,g=s.timings,C=Math.abs(g.duration),D=C*(t.currentQueryTotal-1);let P=C*t.currentQueryIndex;switch(g.duration<0?"reverse":g.easing){case"reverse":P=D-P;break;case"full":P=o.currentStaggerTime}const W=t.currentTimeline;P&&W.delayNextStep(P);const re=W.currentTime;Nr(this,s.animation,t),t.previousNode=s,o.currentStaggerTime=c.currentTime-re+(c.startTime-o.currentTimeline.startTime)}}const cr={};class yr{constructor(s,t,o,c,g,C,D,P){this._driver=s,this.element=t,this.subInstructions=o,this._enterClassName=c,this._leaveClassName=g,this.errors=C,this.timelines=D,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=cr,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=P||new rr(this._driver,t,0),D.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(s,t){if(!s)return;const o=s;let c=this.options;null!=o.duration&&(c.duration=Ir(o.duration)),null!=o.delay&&(c.delay=Ir(o.delay));const g=o.params;if(g){let C=c.params;C||(C=this.options.params={}),Object.keys(g).forEach(D=>{(!t||!C.hasOwnProperty(D))&&(C[D]=ir(g[D],C,this.errors))})}}_copyOptions(){const s={};if(this.options){const t=this.options.params;if(t){const o=s.params={};Object.keys(t).forEach(c=>{o[c]=t[c]})}}return s}createSubContext(s=null,t,o){const c=t||this.element,g=new yr(this._driver,c,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(c,o||0));return g.previousNode=this.previousNode,g.currentAnimateTimings=this.currentAnimateTimings,g.options=this._copyOptions(),g.updateOptions(s),g.currentQueryIndex=this.currentQueryIndex,g.currentQueryTotal=this.currentQueryTotal,g.parentContext=this,this.subContextCount++,g}transformIntoNewTimeline(s){return this.previousNode=cr,this.currentTimeline=this.currentTimeline.fork(this.element,s),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(s,t,o){const c={duration:null!=t?t:s.duration,delay:this.currentTimeline.currentTime+(null!=o?o:0)+s.delay,easing:""},g=new ri(this._driver,s.element,s.keyframes,s.preStyleProps,s.postStyleProps,c,s.stretchStartingKeyframe);return this.timelines.push(g),c}incrementTime(s){this.currentTimeline.forwardTime(this.currentTimeline.duration+s)}delayNextStep(s){s>0&&this.currentTimeline.delayNextStep(s)}invokeQuery(s,t,o,c,g,C){let D=[];if(c&&D.push(this.element),s.length>0){s=(s=s.replace(zo,"."+this._enterClassName)).replace(Si,"."+this._leaveClassName);let j=this._driver.query(this.element,s,1!=o);0!==o&&(j=o<0?j.slice(j.length+o,j.length):j.slice(0,o)),D.push(...j)}return!g&&0==D.length&&C.push(`\`query("${t}")\` returned zero elements. (Use \`query("${t}", { optional: true })\` if you wish to allow this.)`),D}}class rr{constructor(s,t,o,c){this._driver=s,this.element=t,this.startTime=o,this._elementTimelineStylesLookup=c,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(s){const t=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||t?(this.forwardTime(this.currentTime+s),t&&this.snapshotCurrentStyles()):this.startTime+=s}fork(s,t){return this.applyStylesToKeyframe(),new rr(this._driver,s,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(s){this.applyStylesToKeyframe(),this.duration=s,this._loadKeyframe()}_updateStyle(s,t){this._localTimelineStyles[s]=t,this._globalTimelineStyles[s]=t,this._styleSummary[s]={time:this.currentTime,value:t}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(s){s&&(this._previousKeyframe.easing=s),Object.keys(this._globalTimelineStyles).forEach(t=>{this._backFill[t]=this._globalTimelineStyles[t]||T.l3,this._currentKeyframe[t]=T.l3}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(s,t,o,c){t&&(this._previousKeyframe.easing=t);const g=c&&c.params||{},C=function(n,s){const t={};let o;return n.forEach(c=>{"*"===c?(o=o||Object.keys(s),o.forEach(g=>{t[g]=T.l3})):Zr(c,!1,t)}),t}(s,this._globalTimelineStyles);Object.keys(C).forEach(D=>{const P=ir(C[D],g,o);this._pendingStyles[D]=P,this._localTimelineStyles.hasOwnProperty(D)||(this._backFill[D]=this._globalTimelineStyles.hasOwnProperty(D)?this._globalTimelineStyles[D]:T.l3),this._updateStyle(D,P)})}applyStylesToKeyframe(){const s=this._pendingStyles,t=Object.keys(s);0!=t.length&&(this._pendingStyles={},t.forEach(o=>{this._currentKeyframe[o]=s[o]}),Object.keys(this._localTimelineStyles).forEach(o=>{this._currentKeyframe.hasOwnProperty(o)||(this._currentKeyframe[o]=this._localTimelineStyles[o])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(s=>{const t=this._localTimelineStyles[s];this._pendingStyles[s]=t,this._updateStyle(s,t)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const s=[];for(let t in this._currentKeyframe)s.push(t);return s}mergeTimelineCollectedStyles(s){Object.keys(s._styleSummary).forEach(t=>{const o=this._styleSummary[t],c=s._styleSummary[t];(!o||c.time>o.time)&&this._updateStyle(t,c.value)})}buildKeyframes(){this.applyStylesToKeyframe();const s=new Set,t=new Set,o=1===this._keyframes.size&&0===this.duration;let c=[];this._keyframes.forEach((D,P)=>{const j=Zr(D,!0);Object.keys(j).forEach(W=>{const re=j[W];re==T.k1?s.add(W):re==T.l3&&t.add(W)}),o||(j.offset=P/this.duration),c.push(j)});const g=s.size?Lr(s.values()):[],C=t.size?Lr(t.values()):[];if(o){const D=c[0],P=In(D);D.offset=0,P.offset=1,c=[D,P]}return yo(this.element,c,g,C,this.duration,this.startTime,this.easing,!1)}}class ri extends rr{constructor(s,t,o,c,g,C,D=!1){super(s,t,C.delay),this.keyframes=o,this.preStyleProps=c,this.postStyleProps=g,this._stretchStartingKeyframe=D,this.timings={duration:C.duration,delay:C.delay,easing:C.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let s=this.keyframes,{delay:t,duration:o,easing:c}=this.timings;if(this._stretchStartingKeyframe&&t){const g=[],C=o+t,D=t/C,P=Zr(s[0],!1);P.offset=0,g.push(P);const j=Zr(s[0],!1);j.offset=ho(D),g.push(j);const W=s.length-1;for(let re=1;re<=W;re++){let ie=Zr(s[re],!1);ie.offset=ho((t+ie.offset*o)/C),g.push(ie)}o=C,t=0,c="",s=g}return yo(this.element,s,this.preStyleProps,this.postStyleProps,o,t,c,!0)}}function ho(n,s=3){const t=Math.pow(10,s-1);return Math.round(n*t)/t}class xo{}class ar extends xo{normalizePropertyName(s,t){return zr(s)}normalizeStyleValue(s,t,o,c){let g="";const C=o.toString().trim();if(Ht[t]&&0!==o&&"0"!==o)if("number"==typeof o)g="px";else{const D=o.match(/^[+-]?[\d\.]+([a-z]*)$/);D&&0==D[1].length&&c.push(`Please provide a CSS unit value for ${s}:${o}`)}return C+g}}const Ht=(()=>function(n){const s={};return n.forEach(t=>s[t]=!0),s}("width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(",")))();function Ct(n,s,t,o,c,g,C,D,P,j,W,re,ie){return{type:0,element:n,triggerName:s,isRemovalTransition:c,fromState:t,fromStyles:g,toState:o,toStyles:C,timelines:D,queriedElements:P,preStyleProps:j,postStyleProps:W,totalTime:re,errors:ie}}const pr={};class nn{constructor(s,t,o){this._triggerName=s,this.ast=t,this._stateStyles=o}match(s,t,o,c){return function(n,s,t,o,c){return n.some(g=>g(s,t,o,c))}(this.ast.matchers,s,t,o,c)}buildStyles(s,t,o){const c=this._stateStyles["*"],g=this._stateStyles[s],C=c?c.buildStyles(t,o):{};return g?g.buildStyles(t,o):C}build(s,t,o,c,g,C,D,P,j,W){const re=[],ie=this.ast.options&&this.ast.options.params||pr,_e=this.buildStyles(o,D&&D.params||pr,re),Le=P&&P.params||pr,Re=this.buildStyles(c,Le,re),ke=new Set,xe=new Map,U=new Map,pt="void"===c,ht={params:Object.assign(Object.assign({},ie),Le)},wt=W?[]:ai(s,t,this.ast.animation,g,C,_e,Re,ht,j,re);let It=0;if(wt.forEach(Lt=>{It=Math.max(Lt.duration+Lt.delay,It)}),re.length)return Ct(t,this._triggerName,o,c,pt,_e,Re,[],[],xe,U,It,re);wt.forEach(Lt=>{const Dn=Lt.element,Mn=ue(xe,Dn,{});Lt.preStyleProps.forEach(ur=>Mn[ur]=!0);const $r=ue(U,Dn,{});Lt.postStyleProps.forEach(ur=>$r[ur]=!0),Dn!==t&&ke.add(Dn)});const dn=Lr(ke.values());return Ct(t,this._triggerName,o,c,pt,_e,Re,wt,dn,xe,U,It)}}class br{constructor(s,t,o){this.styles=s,this.defaultParams=t,this.normalizer=o}buildStyles(s,t){const o={},c=In(this.defaultParams);return Object.keys(s).forEach(g=>{const C=s[g];null!=C&&(c[g]=C)}),this.styles.styles.forEach(g=>{if("string"!=typeof g){const C=g;Object.keys(C).forEach(D=>{let P=C[D];P.length>1&&(P=ir(P,c,t));const j=this.normalizer.normalizePropertyName(D,t);P=this.normalizer.normalizeStyleValue(D,j,P,t),o[j]=P})}}),o}}class Wo{constructor(s,t,o){this.name=s,this.ast=t,this._normalizer=o,this.transitionFactories=[],this.states={},t.states.forEach(c=>{this.states[c.name]=new br(c.style,c.options&&c.options.params||{},o)}),Js(this.states,"true","1"),Js(this.states,"false","0"),t.transitions.forEach(c=>{this.transitionFactories.push(new nn(s,c,this.states))}),this.fallbackTransition=function(n,s,t){return new nn(n,{type:1,animation:{type:2,steps:[],options:null},matchers:[(C,D)=>!0],options:null,queryCount:0,depCount:0},s)}(s,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(s,t,o,c){return this.transitionFactories.find(C=>C.match(s,t,o,c))||null}matchStyles(s,t,o){return this.fallbackTransition.buildStyles(s,t,o)}}function Js(n,s,t){n.hasOwnProperty(s)?n.hasOwnProperty(t)||(n[t]=n[s]):n.hasOwnProperty(t)&&(n[s]=n[t])}const _s=new Mo;class bs{constructor(s,t,o){this.bodyNode=s,this._driver=t,this._normalizer=o,this._animations={},this._playersById={},this.players=[]}register(s,t){const o=[],c=Ze(this._driver,t,o);if(o.length)throw new Error(`Unable to build the animation due to the following errors: ${o.join("\n")}`);this._animations[s]=c}_buildPlayer(s,t,o){const c=s.element,g=Z(0,this._normalizer,0,s.keyframes,t,o);return this._driver.animate(c,g,s.duration,s.delay,s.easing,[],!0)}create(s,t,o={}){const c=[],g=this._animations[s];let C;const D=new Map;if(g?(C=ai(this._driver,t,g,Bt,mt,{},{},o,_s,c),C.forEach(W=>{const re=ue(D,W.element,{});W.postStyleProps.forEach(ie=>re[ie]=null)})):(c.push("The requested animation doesn't exist or has already been destroyed"),C=[]),c.length)throw new Error(`Unable to create the animation due to the following errors: ${c.join("\n")}`);D.forEach((W,re)=>{Object.keys(W).forEach(ie=>{W[ie]=this._driver.computeStyle(re,ie,T.l3)})});const j=F(C.map(W=>{const re=D.get(W.element);return this._buildPlayer(W,{},re)}));return this._playersById[s]=j,j.onDestroy(()=>this.destroy(s)),this.players.push(j),j}destroy(s){const t=this._getPlayer(s);t.destroy(),delete this._playersById[s];const o=this.players.indexOf(t);o>=0&&this.players.splice(o,1)}_getPlayer(s){const t=this._playersById[s];if(!t)throw new Error(`Unable to find the timeline player referenced by ${s}`);return t}listen(s,t,o,c){const g=ee(t,"","","");return J(this._getPlayer(s),o,g,c),()=>{}}command(s,t,o,c){if("register"==o)return void this.register(s,c[0]);if("create"==o)return void this.create(s,t,c[0]||{});const g=this._getPlayer(s);switch(o){case"play":g.play();break;case"pause":g.pause();break;case"reset":g.reset();break;case"restart":g.restart();break;case"finish":g.finish();break;case"init":g.init();break;case"setPosition":g.setPosition(parseFloat(c[0]));break;case"destroy":this.destroy(s)}}}const qo="ng-animate-queued",Ia="ng-animate-disabled",pa=".ng-animate-disabled",yl=[],fo={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Da={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ao="__ng_removed";class ls{constructor(s,t=""){this.namespaceId=t;const o=s&&s.hasOwnProperty("value");if(this.value=null!=(n=o?s.value:s)?n:null,o){const g=In(s);delete g.value,this.options=g}else this.options={};var n;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(s){const t=s.params;if(t){const o=this.options.params;Object.keys(t).forEach(c=>{null==o[c]&&(o[c]=t[c])})}}}const gs="void",Ra=new ls(gs);class pl{constructor(s,t,o){this.id=s,this.hostElement=t,this._engine=o,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+s,$e(t,this._hostClassName)}listen(s,t,o,c){if(!this._triggers.hasOwnProperty(t))throw new Error(`Unable to listen on the animation trigger event "${o}" because the animation trigger "${t}" doesn't exist!`);if(null==o||0==o.length)throw new Error(`Unable to listen on the animation trigger "${t}" because the provided event is undefined!`);if("start"!=(n=o)&&"done"!=n)throw new Error(`The provided animation trigger event "${o}" for the animation trigger "${t}" is not supported!`);var n;const g=ue(this._elementListeners,s,[]),C={name:t,phase:o,callback:c};g.push(C);const D=ue(this._engine.statesByElement,s,{});return D.hasOwnProperty(t)||($e(s,zt),$e(s,zt+"-"+t),D[t]=Ra),()=>{this._engine.afterFlush(()=>{const P=g.indexOf(C);P>=0&&g.splice(P,1),this._triggers[t]||delete D[t]})}}register(s,t){return!this._triggers[s]&&(this._triggers[s]=t,!0)}_getTrigger(s){const t=this._triggers[s];if(!t)throw new Error(`The provided animation trigger "${s}" has not been registered!`);return t}trigger(s,t,o,c=!0){const g=this._getTrigger(t),C=new Fo(this.id,t,s);let D=this._engine.statesByElement.get(s);D||($e(s,zt),$e(s,zt+"-"+t),this._engine.statesByElement.set(s,D={}));let P=D[t];const j=new ls(o,this.id);if(!(o&&o.hasOwnProperty("value"))&&P&&j.absorbOptions(P.options),D[t]=j,P||(P=Ra),j.value!==gs&&P.value===j.value){if(!function(n,s){const t=Object.keys(n),o=Object.keys(s);if(t.length!=o.length)return!1;for(let c=0;c<t.length;c++){const g=t[c];if(!s.hasOwnProperty(g)||n[g]!==s[g])return!1}return!0}(P.params,j.params)){const Le=[],Re=g.matchStyles(P.value,P.params,Le),ke=g.matchStyles(j.value,j.params,Le);Le.length?this._engine.reportError(Le):this._engine.afterFlush(()=>{Hi(s,Re),$i(s,ke)})}return}const ie=ue(this._engine.playersByElement,s,[]);ie.forEach(Le=>{Le.namespaceId==this.id&&Le.triggerName==t&&Le.queued&&Le.destroy()});let ge=g.matchTransition(P.value,j.value,s,j.params),_e=!1;if(!ge){if(!c)return;ge=g.fallbackTransition,_e=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:s,triggerName:t,transition:ge,fromState:P,toState:j,player:C,isFallbackTransition:_e}),_e||($e(s,qo),C.onStart(()=>{Pt(s,qo)})),C.onDone(()=>{let Le=this.players.indexOf(C);Le>=0&&this.players.splice(Le,1);const Re=this._engine.playersByElement.get(s);if(Re){let ke=Re.indexOf(C);ke>=0&&Re.splice(ke,1)}}),this.players.push(C),ie.push(C),C}deregister(s){delete this._triggers[s],this._engine.statesByElement.forEach((t,o)=>{delete t[s]}),this._elementListeners.forEach((t,o)=>{this._elementListeners.set(o,t.filter(c=>c.name!=s))})}clearElementCache(s){this._engine.statesByElement.delete(s),this._elementListeners.delete(s);const t=this._engine.playersByElement.get(s);t&&(t.forEach(o=>o.destroy()),this._engine.playersByElement.delete(s))}_signalRemovalForInnerTriggers(s,t){const o=this._engine.driver.query(s,Yn,!0);o.forEach(c=>{if(c[Ao])return;const g=this._engine.fetchNamespacesByElement(c);g.size?g.forEach(C=>C.triggerLeaveAnimation(c,t,!1,!0)):this.clearElementCache(c)}),this._engine.afterFlushAnimationsDone(()=>o.forEach(c=>this.clearElementCache(c)))}triggerLeaveAnimation(s,t,o,c){const g=this._engine.statesByElement.get(s);if(g){const C=[];if(Object.keys(g).forEach(D=>{if(this._triggers[D]){const P=this.trigger(s,D,gs,c);P&&C.push(P)}}),C.length)return this._engine.markElementAsRemoved(this.id,s,!0,t),o&&F(C).onDone(()=>this._engine.processLeaveNode(s)),!0}return!1}prepareLeaveAnimationListeners(s){const t=this._elementListeners.get(s),o=this._engine.statesByElement.get(s);if(t&&o){const c=new Set;t.forEach(g=>{const C=g.name;if(c.has(C))return;c.add(C);const P=this._triggers[C].fallbackTransition,j=o[C]||Ra,W=new ls(gs),re=new Fo(this.id,C,s);this._engine.totalQueuedPlayers++,this._queue.push({element:s,triggerName:C,transition:P,fromState:j,toState:W,player:re,isFallbackTransition:!0})})}}removeNode(s,t){const o=this._engine;if(s.childElementCount&&this._signalRemovalForInnerTriggers(s,t),this.triggerLeaveAnimation(s,t,!0))return;let c=!1;if(o.totalAnimations){const g=o.players.length?o.playersByQueriedElement.get(s):[];if(g&&g.length)c=!0;else{let C=s;for(;C=C.parentNode;)if(o.statesByElement.get(C)){c=!0;break}}}if(this.prepareLeaveAnimationListeners(s),c)o.markElementAsRemoved(this.id,s,!1,t);else{const g=s[Ao];(!g||g===fo)&&(o.afterFlush(()=>this.clearElementCache(s)),o.destroyInnerAnimations(s),o._onRemovalComplete(s,t))}}insertNode(s,t){$e(s,this._hostClassName)}drainQueuedTransitions(s){const t=[];return this._queue.forEach(o=>{const c=o.player;if(c.destroyed)return;const g=o.element,C=this._elementListeners.get(g);C&&C.forEach(D=>{if(D.name==o.triggerName){const P=ee(g,o.triggerName,o.fromState.value,o.toState.value);P._data=s,J(o.player,D.phase,P,D.callback)}}),c.markedForDestroy?this._engine.afterFlush(()=>{c.destroy()}):t.push(o)}),this._queue=[],t.sort((o,c)=>{const g=o.transition.ast.depCount,C=c.transition.ast.depCount;return 0==g||0==C?g-C:this._engine.driver.containsElement(o.element,c.element)?1:-1})}destroy(s){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,s)}elementContainsData(s){let t=!1;return this._elementListeners.has(s)&&(t=!0),t=!!this._queue.find(o=>o.element===s)||t,t}}class Qs{constructor(s,t,o){this.bodyNode=s,this.driver=t,this._normalizer=o,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(c,g)=>{}}_onRemovalComplete(s,t){this.onRemovalComplete(s,t)}get queuedPlayers(){const s=[];return this._namespaceList.forEach(t=>{t.players.forEach(o=>{o.queued&&s.push(o)})}),s}createNamespace(s,t){const o=new pl(s,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(o,t):(this.newHostElements.set(t,o),this.collectEnterElement(t)),this._namespaceLookup[s]=o}_balanceNamespaceList(s,t){const o=this._namespaceList.length-1;if(o>=0){let c=!1;for(let g=o;g>=0;g--)if(this.driver.containsElement(this._namespaceList[g].hostElement,t)){this._namespaceList.splice(g+1,0,s),c=!0;break}c||this._namespaceList.splice(0,0,s)}else this._namespaceList.push(s);return this.namespacesByHostElement.set(t,s),s}register(s,t){let o=this._namespaceLookup[s];return o||(o=this.createNamespace(s,t)),o}registerTrigger(s,t,o){let c=this._namespaceLookup[s];c&&c.register(t,o)&&this.totalAnimations++}destroy(s,t){if(!s)return;const o=this._fetchNamespace(s);this.afterFlush(()=>{this.namespacesByHostElement.delete(o.hostElement),delete this._namespaceLookup[s];const c=this._namespaceList.indexOf(o);c>=0&&this._namespaceList.splice(c,1)}),this.afterFlushAnimationsDone(()=>o.destroy(t))}_fetchNamespace(s){return this._namespaceLookup[s]}fetchNamespacesByElement(s){const t=new Set,o=this.statesByElement.get(s);if(o){const c=Object.keys(o);for(let g=0;g<c.length;g++){const C=o[c[g]].namespaceId;if(C){const D=this._fetchNamespace(C);D&&t.add(D)}}}return t}trigger(s,t,o,c){if(ms(t)){const g=this._fetchNamespace(s);if(g)return g.trigger(t,o,c),!0}return!1}insertNode(s,t,o,c){if(!ms(t))return;const g=t[Ao];if(g&&g.setForRemoval){g.setForRemoval=!1,g.setForMove=!0;const C=this.collectedLeaveElements.indexOf(t);C>=0&&this.collectedLeaveElements.splice(C,1)}if(s){const C=this._fetchNamespace(s);C&&C.insertNode(t,o)}c&&this.collectEnterElement(t)}collectEnterElement(s){this.collectedEnterElements.push(s)}markElementAsDisabled(s,t){t?this.disabledNodes.has(s)||(this.disabledNodes.add(s),$e(s,Ia)):this.disabledNodes.has(s)&&(this.disabledNodes.delete(s),Pt(s,Ia))}removeNode(s,t,o,c){if(ms(t)){const g=s?this._fetchNamespace(s):null;if(g?g.removeNode(t,c):this.markElementAsRemoved(s,t,!1,c),o){const C=this.namespacesByHostElement.get(t);C&&C.id!==s&&C.removeNode(t,c)}}else this._onRemovalComplete(t,c)}markElementAsRemoved(s,t,o,c){this.collectedLeaveElements.push(t),t[Ao]={namespaceId:s,setForRemoval:c,hasAnimation:o,removedBeforeQueried:!1}}listen(s,t,o,c,g){return ms(t)?this._fetchNamespace(s).listen(t,o,c,g):()=>{}}_buildInstruction(s,t,o,c,g){return s.transition.build(this.driver,s.element,s.fromState.value,s.toState.value,o,c,s.fromState.options,s.toState.options,t,g)}destroyInnerAnimations(s){let t=this.driver.query(s,Yn,!0);t.forEach(o=>this.destroyActiveAnimationsForElement(o)),0!=this.playersByQueriedElement.size&&(t=this.driver.query(s,ci,!0),t.forEach(o=>this.finishActiveQueriedAnimationOnElement(o)))}destroyActiveAnimationsForElement(s){const t=this.playersByElement.get(s);t&&t.forEach(o=>{o.queued?o.markedForDestroy=!0:o.destroy()})}finishActiveQueriedAnimationOnElement(s){const t=this.playersByQueriedElement.get(s);t&&t.forEach(o=>o.finish())}whenRenderingDone(){return new Promise(s=>{if(this.players.length)return F(this.players).onDone(()=>s());s()})}processLeaveNode(s){const t=s[Ao];if(t&&t.setForRemoval){if(s[Ao]=fo,t.namespaceId){this.destroyInnerAnimations(s);const o=this._fetchNamespace(t.namespaceId);o&&o.clearElementCache(s)}this._onRemovalComplete(s,t.setForRemoval)}this.driver.matchesElement(s,pa)&&this.markElementAsDisabled(s,!1),this.driver.query(s,pa,!0).forEach(o=>{this.markElementAsDisabled(o,!1)})}flush(s=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((o,c)=>this._balanceNamespaceList(o,c)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let o=0;o<this.collectedEnterElements.length;o++)$e(this.collectedEnterElements[o],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const o=[];try{t=this._flushAnimations(o,s)}finally{for(let c=0;c<o.length;c++)o[c]()}}else for(let o=0;o<this.collectedLeaveElements.length;o++)this.processLeaveNode(this.collectedLeaveElements[o]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(o=>o()),this._flushFns=[],this._whenQuietFns.length){const o=this._whenQuietFns;this._whenQuietFns=[],t.length?F(t).onDone(()=>{o.forEach(c=>c())}):o.forEach(c=>c())}}reportError(s){throw new Error(`Unable to process animations due to the following failed trigger transitions\n ${s.join("\n")}`)}_flushAnimations(s,t){const o=new Mo,c=[],g=new Map,C=[],D=new Map,P=new Map,j=new Map,W=new Set;this.disabledNodes.forEach(fn=>{W.add(fn);const Nn=this.driver.query(fn,".ng-animate-queued",!0);for(let $n=0;$n<Nn.length;$n++)W.add(Nn[$n])});const re=this.bodyNode,ie=Array.from(this.statesByElement.keys()),ge=tt(ie,this.collectedEnterElements),_e=new Map;let Le=0;ge.forEach((fn,Nn)=>{const $n=Bt+Le++;_e.set(Nn,$n),fn.forEach(Qn=>$e(Qn,$n))});const Re=[],ke=new Set,xe=new Set;for(let fn=0;fn<this.collectedLeaveElements.length;fn++){const Nn=this.collectedLeaveElements[fn],$n=Nn[Ao];$n&&$n.setForRemoval&&(Re.push(Nn),ke.add(Nn),$n.hasAnimation?this.driver.query(Nn,".ng-star-inserted",!0).forEach(Qn=>ke.add(Qn)):xe.add(Nn))}const U=new Map,pt=tt(ie,Array.from(ke));pt.forEach((fn,Nn)=>{const $n=mt+Le++;U.set(Nn,$n),fn.forEach(Qn=>$e(Qn,$n))}),s.push(()=>{ge.forEach((fn,Nn)=>{const $n=_e.get(Nn);fn.forEach(Qn=>Pt(Qn,$n))}),pt.forEach((fn,Nn)=>{const $n=U.get(Nn);fn.forEach(Qn=>Pt(Qn,$n))}),Re.forEach(fn=>{this.processLeaveNode(fn)})});const ht=[],wt=[];for(let fn=this._namespaceList.length-1;fn>=0;fn--)this._namespaceList[fn].drainQueuedTransitions(t).forEach($n=>{const Qn=$n.player,Tn=$n.element;if(ht.push(Qn),this.collectedEnterElements.length){const An=Tn[Ao];if(An&&An.setForMove)return void Qn.destroy()}const Yr=!re||!this.driver.containsElement(re,Tn),ji=U.get(Tn),ii=_e.get(Tn),Ui=this._buildInstruction($n,o,ii,ji,Yr);if(Ui.errors&&Ui.errors.length)wt.push(Ui);else{if(Yr)return Qn.onStart(()=>Hi(Tn,Ui.fromStyles)),Qn.onDestroy(()=>$i(Tn,Ui.toStyles)),void c.push(Qn);if($n.isFallbackTransition)return Qn.onStart(()=>Hi(Tn,Ui.fromStyles)),Qn.onDestroy(()=>$i(Tn,Ui.toStyles)),void c.push(Qn);Ui.timelines.forEach(An=>An.stretchStartingKeyframe=!0),o.append(Tn,Ui.timelines),C.push({instruction:Ui,player:Qn,element:Tn}),Ui.queriedElements.forEach(An=>ue(D,An,[]).push(Qn)),Ui.preStyleProps.forEach((An,hn)=>{const qr=Object.keys(An);if(qr.length){let Ri=P.get(hn);Ri||P.set(hn,Ri=new Set),qr.forEach(qi=>Ri.add(qi))}}),Ui.postStyleProps.forEach((An,hn)=>{const qr=Object.keys(An);let Ri=j.get(hn);Ri||j.set(hn,Ri=new Set),qr.forEach(qi=>Ri.add(qi))})}});if(wt.length){const fn=[];wt.forEach(Nn=>{fn.push(`@${Nn.triggerName} has failed due to:\n`),Nn.errors.forEach($n=>fn.push(`- ${$n}\n`))}),ht.forEach(Nn=>Nn.destroy()),this.reportError(fn)}const It=new Map,dn=new Map;C.forEach(fn=>{const Nn=fn.element;o.has(Nn)&&(dn.set(Nn,Nn),this._beforeAnimationBuild(fn.player.namespaceId,fn.instruction,It))}),c.forEach(fn=>{const Nn=fn.element;this._getPreviousPlayers(Nn,!1,fn.namespaceId,fn.triggerName,null).forEach(Qn=>{ue(It,Nn,[]).push(Qn),Qn.destroy()})});const Lt=Re.filter(fn=>os(fn,P,j)),Dn=new Map;ro(Dn,this.driver,xe,j,T.l3).forEach(fn=>{os(fn,P,j)&&Lt.push(fn)});const $r=new Map;ge.forEach((fn,Nn)=>{ro($r,this.driver,new Set(fn),P,T.k1)}),Lt.forEach(fn=>{const Nn=Dn.get(fn),$n=$r.get(fn);Dn.set(fn,Object.assign(Object.assign({},Nn),$n))});const ur=[],Pr=[],xr={};C.forEach(fn=>{const{element:Nn,player:$n,instruction:Qn}=fn;if(o.has(Nn)){if(W.has(Nn))return $n.onDestroy(()=>$i(Nn,Qn.toStyles)),$n.disabled=!0,$n.overrideTotalTime(Qn.totalTime),void c.push($n);let Tn=xr;if(dn.size>1){let ji=Nn;const ii=[];for(;ji=ji.parentNode;){const Ui=dn.get(ji);if(Ui){Tn=Ui;break}ii.push(ji)}ii.forEach(Ui=>dn.set(Ui,Tn))}const Yr=this._buildAnimation($n.namespaceId,Qn,It,g,$r,Dn);if($n.setRealPlayer(Yr),Tn===xr)ur.push($n);else{const ji=this.playersByElement.get(Tn);ji&&ji.length&&($n.parentPlayer=F(ji)),c.push($n)}}else Hi(Nn,Qn.fromStyles),$n.onDestroy(()=>$i(Nn,Qn.toStyles)),Pr.push($n),W.has(Nn)&&c.push($n)}),Pr.forEach(fn=>{const Nn=g.get(fn.element);if(Nn&&Nn.length){const $n=F(Nn);fn.setRealPlayer($n)}}),c.forEach(fn=>{fn.parentPlayer?fn.syncPlayerEvents(fn.parentPlayer):fn.destroy()});for(let fn=0;fn<Re.length;fn++){const Nn=Re[fn],$n=Nn[Ao];if(Pt(Nn,mt),$n&&$n.hasAnimation)continue;let Qn=[];if(D.size){let Yr=D.get(Nn);Yr&&Yr.length&&Qn.push(...Yr);let ji=this.driver.query(Nn,ci,!0);for(let ii=0;ii<ji.length;ii++){let Ui=D.get(ji[ii]);Ui&&Ui.length&&Qn.push(...Ui)}}const Tn=Qn.filter(Yr=>!Yr.destroyed);Tn.length?sn(this,Nn,Tn):this.processLeaveNode(Nn)}return Re.length=0,ur.forEach(fn=>{this.players.push(fn),fn.onDone(()=>{fn.destroy();const Nn=this.players.indexOf(fn);this.players.splice(Nn,1)}),fn.play()}),ur}elementContainsData(s,t){let o=!1;const c=t[Ao];return c&&c.setForRemoval&&(o=!0),this.playersByElement.has(t)&&(o=!0),this.playersByQueriedElement.has(t)&&(o=!0),this.statesByElement.has(t)&&(o=!0),this._fetchNamespace(s).elementContainsData(t)||o}afterFlush(s){this._flushFns.push(s)}afterFlushAnimationsDone(s){this._whenQuietFns.push(s)}_getPreviousPlayers(s,t,o,c,g){let C=[];if(t){const D=this.playersByQueriedElement.get(s);D&&(C=D)}else{const D=this.playersByElement.get(s);if(D){const P=!g||g==gs;D.forEach(j=>{j.queued||!P&&j.triggerName!=c||C.push(j)})}}return(o||c)&&(C=C.filter(D=>!(o&&o!=D.namespaceId||c&&c!=D.triggerName))),C}_beforeAnimationBuild(s,t,o){const g=t.element,C=t.isRemovalTransition?void 0:s,D=t.isRemovalTransition?void 0:t.triggerName;for(const P of t.timelines){const j=P.element,W=j!==g,re=ue(o,j,[]);this._getPreviousPlayers(j,W,C,D,t.toState).forEach(ge=>{const _e=ge.getRealPlayer();_e.beforeDestroy&&_e.beforeDestroy(),ge.destroy(),re.push(ge)})}Hi(g,t.fromStyles)}_buildAnimation(s,t,o,c,g,C){const D=t.triggerName,P=t.element,j=[],W=new Set,re=new Set,ie=t.timelines.map(_e=>{const Le=_e.element;W.add(Le);const Re=Le[Ao];if(Re&&Re.removedBeforeQueried)return new T.ZN(_e.duration,_e.delay);const ke=Le!==P,xe=function(n){const s=[];return fi(n,s),s}((o.get(Le)||yl).map(It=>It.getRealPlayer())).filter(It=>!!It.element&&It.element===Le),U=g.get(Le),pt=C.get(Le),ht=Z(0,this._normalizer,0,_e.keyframes,U,pt),wt=this._buildPlayer(_e,ht,xe);if(_e.subTimeline&&c&&re.add(Le),ke){const It=new Fo(s,D,Le);It.setRealPlayer(wt),j.push(It)}return wt});j.forEach(_e=>{ue(this.playersByQueriedElement,_e.element,[]).push(_e),_e.onDone(()=>function(n,s,t){let o;if(n instanceof Map){if(o=n.get(s),o){if(o.length){const c=o.indexOf(t);o.splice(c,1)}0==o.length&&n.delete(s)}}else if(o=n[s],o){if(o.length){const c=o.indexOf(t);o.splice(c,1)}0==o.length&&delete n[s]}return o}(this.playersByQueriedElement,_e.element,_e))}),W.forEach(_e=>$e(_e,Hr));const ge=F(ie);return ge.onDestroy(()=>{W.forEach(_e=>Pt(_e,Hr)),$i(P,t.toStyles)}),re.forEach(_e=>{ue(c,_e,[]).push(ge)}),ge}_buildPlayer(s,t,o){return t.length>0?this.driver.animate(s.element,t,s.duration,s.delay,s.easing,o):new T.ZN(s.duration,s.delay)}}class Fo{constructor(s,t,o){this.namespaceId=s,this.triggerName=t,this.element=o,this._player=new T.ZN,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(s){this._containsRealPlayer||(this._player=s,Object.keys(this._queuedCallbacks).forEach(t=>{this._queuedCallbacks[t].forEach(o=>J(s,t,void 0,o))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(s.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(s){this.totalTime=s}syncPlayerEvents(s){const t=this._player;t.triggerCallback&&s.onStart(()=>t.triggerCallback("start")),s.onDone(()=>this.finish()),s.onDestroy(()=>this.destroy())}_queueEvent(s,t){ue(this._queuedCallbacks,s,[]).push(t)}onDone(s){this.queued&&this._queueEvent("done",s),this._player.onDone(s)}onStart(s){this.queued&&this._queueEvent("start",s),this._player.onStart(s)}onDestroy(s){this.queued&&this._queueEvent("destroy",s),this._player.onDestroy(s)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(s){this.queued||this._player.setPosition(s)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(s){const t=this._player;t.triggerCallback&&t.triggerCallback(s)}}function ms(n){return n&&1===n.nodeType}function kr(n,s){const t=n.style.display;return n.style.display=null!=s?s:"none",t}function ro(n,s,t,o,c){const g=[];t.forEach(P=>g.push(kr(P)));const C=[];o.forEach((P,j)=>{const W={};P.forEach(re=>{const ie=W[re]=s.computeStyle(j,re,c);(!ie||0==ie.length)&&(j[Ao]=Da,C.push(j))}),n.set(j,W)});let D=0;return t.forEach(P=>kr(P,g[D++])),C}function tt(n,s){const t=new Map;if(n.forEach(D=>t.set(D,[])),0==s.length)return t;const c=new Set(s),g=new Map;function C(D){if(!D)return 1;let P=g.get(D);if(P)return P;const j=D.parentNode;return P=t.has(j)?j:c.has(j)?1:C(j),g.set(D,P),P}return s.forEach(D=>{const P=C(D);1!==P&&t.get(P).push(D)}),t}const on="$$classes";function $e(n,s){if(n.classList)n.classList.add(s);else{let t=n[on];t||(t=n[on]={}),t[s]=!0}}function Pt(n,s){if(n.classList)n.classList.remove(s);else{let t=n[on];t&&delete t[s]}}function sn(n,s,t){F(t).onDone(()=>n.processLeaveNode(s))}function fi(n,s){for(let t=0;t<n.length;t++){const o=n[t];o instanceof T.ZE?fi(o.players,s):s.push(o)}}function os(n,s,t){const o=t.get(n);if(!o)return!1;let c=s.get(n);return c?o.forEach(g=>c.add(g)):s.set(n,o),t.delete(n),!0}class Ro{constructor(s,t,o){this.bodyNode=s,this._driver=t,this._normalizer=o,this._triggerCache={},this.onRemovalComplete=(c,g)=>{},this._transitionEngine=new Qs(s,t,o),this._timelineEngine=new bs(s,t,o),this._transitionEngine.onRemovalComplete=(c,g)=>this.onRemovalComplete(c,g)}registerTrigger(s,t,o,c,g){const C=s+"-"+c;let D=this._triggerCache[C];if(!D){const P=[],j=Ze(this._driver,g,P);if(P.length)throw new Error(`The animation trigger "${c}" has failed to build due to the following errors:\n - ${P.join("\n - ")}`);D=function(n,s,t){return new Wo(n,s,t)}(c,j,this._normalizer),this._triggerCache[C]=D}this._transitionEngine.registerTrigger(t,c,D)}register(s,t){this._transitionEngine.register(s,t)}destroy(s,t){this._transitionEngine.destroy(s,t)}onInsert(s,t,o,c){this._transitionEngine.insertNode(s,t,o,c)}onRemove(s,t,o,c){this._transitionEngine.removeNode(s,t,c||!1,o)}disableAnimations(s,t){this._transitionEngine.markElementAsDisabled(s,t)}process(s,t,o,c){if("@"==o.charAt(0)){const[g,C]=ae(o);this._timelineEngine.command(g,t,C,c)}else this._transitionEngine.trigger(s,t,o,c)}listen(s,t,o,c,g){if("@"==o.charAt(0)){const[C,D]=ae(o);return this._timelineEngine.listen(C,t,D,g)}return this._transitionEngine.listen(s,t,o,c,g)}flush(s=-1){this._transitionEngine.flush(s)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function Uo(n,s){let t=null,o=null;return Array.isArray(s)&&s.length?(t=Ea(s[0]),s.length>1&&(o=Ea(s[s.length-1]))):s&&(t=Ea(s)),t||o?new To(n,t,o):null}let To=(()=>{class n{constructor(t,o,c){this._element=t,this._startStyles=o,this._endStyles=c,this._state=0;let g=n.initialStylesByElement.get(t);g||n.initialStylesByElement.set(t,g={}),this._initialStyles=g}start(){this._state<1&&(this._startStyles&&$i(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&($i(this._element,this._initialStyles),this._endStyles&&($i(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(n.initialStylesByElement.delete(this._element),this._startStyles&&(Hi(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Hi(this._element,this._endStyles),this._endStyles=null),$i(this._element,this._initialStyles),this._state=3)}}return n.initialStylesByElement=new WeakMap,n})();function Ea(n){let s=null;const t=Object.keys(n);for(let o=0;o<t.length;o++){const c=t[o];al(c)&&(s=s||{},s[c]=n[c])}return s}function al(n){return"display"===n||"position"===n}const Ru="animation",yc="animationend";class ed{constructor(s,t,o,c,g,C,D){this._element=s,this._name=t,this._duration=o,this._delay=c,this._easing=g,this._fillMode=C,this._onDoneFn=D,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=P=>this._handleCallback(P)}apply(){(function(n,s){const t=jl(n,"").trim();let o=0;t.length&&(function(n,s){let t=0;for(let o=0;o<n.length;o++)","===n.charAt(o)&&t++;return t}(t)+1,s=`${t}, ${s}`),Cu(n,"",s)})(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),el(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){Hl(this._element,this._name,"paused")}resume(){Hl(this._element,this._name,"running")}setPosition(s){const t=dc(this._element,this._name);this._position=s*this._duration,Cu(this._element,"Delay",`-${this._position}ms`,t)}getPosition(){return this._position}_handleCallback(s){const t=s._ngTestManualTimestamp||Date.now(),o=1e3*parseFloat(s.elapsedTime.toFixed(3));s.animationName==this._name&&Math.max(t-this._startTime,0)>=this._delay&&o>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),el(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(n,s){const o=jl(n,"").split(","),c=ou(o,s);c>=0&&(o.splice(c,1),Cu(n,"",o.join(",")))}(this._element,this._name))}}function Hl(n,s,t){Cu(n,"PlayState",t,dc(n,s))}function dc(n,s){const t=jl(n,"");return t.indexOf(",")>0?ou(t.split(","),s):ou([t],s)}function ou(n,s){for(let t=0;t<n.length;t++)if(n[t].indexOf(s)>=0)return t;return-1}function el(n,s,t){t?n.removeEventListener(yc,s):n.addEventListener(yc,s)}function Cu(n,s,t,o){const c=Ru+s;if(null!=o){const g=n.style[c];if(g.length){const C=g.split(",");C[o]=t,t=C.join(",")}}n.style[c]=t}function jl(n,s){return n.style[Ru+s]||""}class Te{constructor(s,t,o,c,g,C,D,P){this.element=s,this.keyframes=t,this.animationName=o,this._duration=c,this._delay=g,this._finalStyles=D,this._specialStyles=P,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this.currentSnapshot={},this._state=0,this.easing=C||"linear",this.totalTime=c+g,this._buildStyler()}onStart(s){this._onStartFns.push(s)}onDone(s){this._onDoneFns.push(s)}onDestroy(s){this._onDestroyFns.push(s)}destroy(){this.init(),!(this._state>=4)&&(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(s=>s()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(s=>s()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(s=>s()),this._onStartFns=[]}finish(){this.init(),!(this._state>=3)&&(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(s){this._styler.setPosition(s)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._state=0,this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new ed(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(s){const t="start"==s?this._onStartFns:this._onDoneFns;t.forEach(o=>o()),t.length=0}beforeDestroy(){this.init();const s={};if(this.hasStarted()){const t=this._state>=3;Object.keys(this._finalStyles).forEach(o=>{"offset"!=o&&(s[o]=t?this._finalStyles[o]:gn(this.element,o))})}this.currentSnapshot=s}}class Me extends T.ZN{constructor(s,t){super(),this.element=s,this._startingStyles={},this.__initialized=!1,this._styles=Zt(t)}init(){this.__initialized||!this._startingStyles||(this.__initialized=!0,Object.keys(this._styles).forEach(s=>{this._startingStyles[s]=this.element.style[s]}),super.init())}play(){!this._startingStyles||(this.init(),Object.keys(this._styles).forEach(s=>this.element.style.setProperty(s,this._styles[s])),super.play())}destroy(){!this._startingStyles||(Object.keys(this._startingStyles).forEach(s=>{const t=this._startingStyles[s];t?this.element.style.setProperty(s,t):this.element.style.removeProperty(s)}),this._startingStyles=null,super.destroy())}}class dr{constructor(){this._count=0}validateStyleProperty(s){return Ye(s)}matchesElement(s,t){return Ie(s,t)}containsElement(s,t){return Ve(s,t)}query(s,t,o){return He(s,t,o)}computeStyle(s,t,o){return window.getComputedStyle(s)[t]}buildKeyframeElement(s,t,o){o=o.map(D=>Zt(D));let c=`@keyframes ${t} {\n`,g="";o.forEach(D=>{g=" ";const P=parseFloat(D.offset);c+=`${g}${100*P}% {\n`,g+=" ",Object.keys(D).forEach(j=>{const W=D[j];switch(j){case"offset":return;case"easing":return void(W&&(c+=`${g}animation-timing-function: ${W};\n`));default:return void(c+=`${g}${j}: ${W};\n`)}}),c+=`${g}}\n`}),c+="}\n";const C=document.createElement("style");return C.textContent=c,C}animate(s,t,o,c,g,C=[],D){const P=C.filter(Re=>Re instanceof Te),j={};Ai(o,c)&&P.forEach(Re=>{let ke=Re.currentSnapshot;Object.keys(ke).forEach(xe=>j[xe]=ke[xe])});const W=function(n){let s={};return n&&(Array.isArray(n)?n:[n]).forEach(o=>{Object.keys(o).forEach(c=>{"offset"==c||"easing"==c||(s[c]=o[c])})}),s}(t=Tr(s,t,j));if(0==o)return new Me(s,W);const re="gen_css_kf_"+this._count++,ie=this.buildKeyframeElement(s,re,t);(function(n){var s;const t=null===(s=n.getRootNode)||void 0===s?void 0:s.call(n);return"undefined"!=typeof ShadowRoot&&t instanceof ShadowRoot?t:document.head})(s).appendChild(ie);const _e=Uo(s,t),Le=new Te(s,t,re,o,c,g,W,_e);return Le.onDestroy(()=>{var n;(n=ie).parentNode.removeChild(n)}),Le}}class Ma{constructor(s,t,o,c){this.element=s,this.keyframes=t,this.options=o,this._specialStyles=c,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=o.duration,this._delay=o.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(s=>s()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const s=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,s,this.options),this._finalKeyframe=s.length?s[s.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(s,t,o){return s.animate(t,o)}onStart(s){this._onStartFns.push(s)}onDone(s){this._onDoneFns.push(s)}onDestroy(s){this._onDestroyFns.push(s)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(s=>s()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(s=>s()),this._onDestroyFns=[])}setPosition(s){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=s*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const s={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(t=>{"offset"!=t&&(s[t]=this._finished?this._finalKeyframe[t]:gn(this.element,t))}),this.currentSnapshot=s}triggerCallback(s){const t="start"==s?this._onStartFns:this._onDoneFns;t.forEach(o=>o()),t.length=0}}class uu{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(Pl().toString()),this._cssKeyframesDriver=new dr}validateStyleProperty(s){return Ye(s)}matchesElement(s,t){return Ie(s,t)}containsElement(s,t){return Ve(s,t)}query(s,t,o){return He(s,t,o)}computeStyle(s,t,o){return window.getComputedStyle(s)[t]}overrideWebAnimationsSupport(s){this._isNativeImpl=s}animate(s,t,o,c,g,C=[],D){if(!D&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(s,t,o,c,g,C);const W={duration:o,delay:c,fill:0==c?"both":"forwards"};g&&(W.easing=g);const re={},ie=C.filter(_e=>_e instanceof Ma);Ai(o,c)&&ie.forEach(_e=>{let Le=_e.currentSnapshot;Object.keys(Le).forEach(Re=>re[Re]=Le[Re])});const ge=Uo(s,t=Tr(s,t=t.map(_e=>Zr(_e,!1)),re));return new Ma(s,t,W,ge)}}function Pl(){return M()&&Element.prototype.animate||{}}let ec=(()=>{class n extends T._j{constructor(t,o){super(),this._nextAnimationId=0,this._renderer=t.createRenderer(o.body,{id:"0",encapsulation:e.ifc.None,styles:[],data:{animation:[]}})}build(t){const o=this._nextAnimationId.toString();this._nextAnimationId++;const c=Array.isArray(t)?(0,T.vP)(t):t;return Nc(this._renderer,null,o,"register",[c]),new Ol(o,this._renderer)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(e.FYo),e.LFG(_.K0))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})();class Ol extends T.LC{constructor(s,t){super(),this._id=s,this._renderer=t}create(s,t){return new Ts(this._id,s,t||{},this._renderer)}}class Ts{constructor(s,t,o,c){this.id=s,this.element=t,this._renderer=c,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",o)}_listen(s,t){return this._renderer.listen(this.element,`@@${this.id}:${s}`,t)}_command(s,...t){return Nc(this._renderer,this.element,this.id,s,t)}onDone(s){this._listen("done",s)}onStart(s){this._listen("start",s)}onDestroy(s){this._listen("destroy",s)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(s){this._command("setPosition",s)}getPosition(){var s,t;return null!==(t=null===(s=this._renderer.engine.players[+this.id])||void 0===s?void 0:s.getPosition())&&void 0!==t?t:0}}function Nc(n,s,t,o,c){return n.setProperty(s,`@@${t}:${o}`,c)}const Pc="@.disabled";let Mu=(()=>{class n{constructor(t,o,c){this.delegate=t,this.engine=o,this._zone=c,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),o.onRemovalComplete=(g,C)=>{C&&C.parentNode(g)&&C.removeChild(g.parentNode,g)}}createRenderer(t,o){const g=this.delegate.createRenderer(t,o);if(!(t&&o&&o.data&&o.data.animation)){let W=this._rendererCache.get(g);return W||(W=new Ic("",g,this.engine),this._rendererCache.set(g,W)),W}const C=o.id,D=o.id+"-"+this._currentId;this._currentId++,this.engine.register(D,t);const P=W=>{Array.isArray(W)?W.forEach(P):this.engine.registerTrigger(C,D,t,W.name,W)};return o.data.animation.forEach(P),new md(this,D,g,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(t,o,c){t>=0&&t<this._microtaskId?this._zone.run(()=>o(c)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(g=>{const[C,D]=g;C(D)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([o,c]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(e.FYo),e.LFG(Ro),e.LFG(e.R0b))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})();class Ic{constructor(s,t,o){this.namespaceId=s,this.delegate=t,this.engine=o,this.destroyNode=this.delegate.destroyNode?c=>t.destroyNode(c):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(s,t){return this.delegate.createElement(s,t)}createComment(s){return this.delegate.createComment(s)}createText(s){return this.delegate.createText(s)}appendChild(s,t){this.delegate.appendChild(s,t),this.engine.onInsert(this.namespaceId,t,s,!1)}insertBefore(s,t,o,c=!0){this.delegate.insertBefore(s,t,o),this.engine.onInsert(this.namespaceId,t,s,c)}removeChild(s,t,o){this.engine.onRemove(this.namespaceId,t,this.delegate,o)}selectRootElement(s,t){return this.delegate.selectRootElement(s,t)}parentNode(s){return this.delegate.parentNode(s)}nextSibling(s){return this.delegate.nextSibling(s)}setAttribute(s,t,o,c){this.delegate.setAttribute(s,t,o,c)}removeAttribute(s,t,o){this.delegate.removeAttribute(s,t,o)}addClass(s,t){this.delegate.addClass(s,t)}removeClass(s,t){this.delegate.removeClass(s,t)}setStyle(s,t,o,c){this.delegate.setStyle(s,t,o,c)}removeStyle(s,t,o){this.delegate.removeStyle(s,t,o)}setProperty(s,t,o){"@"==t.charAt(0)&&t==Pc?this.disableAnimations(s,!!o):this.delegate.setProperty(s,t,o)}setValue(s,t){this.delegate.setValue(s,t)}listen(s,t,o){return this.delegate.listen(s,t,o)}disableAnimations(s,t){this.engine.disableAnimations(s,t)}}class md extends Ic{constructor(s,t,o,c){super(t,o,c),this.factory=s,this.namespaceId=t}setProperty(s,t,o){"@"==t.charAt(0)?"."==t.charAt(1)&&t==Pc?this.disableAnimations(s,o=void 0===o||!!o):this.engine.process(this.namespaceId,s,t.substr(1),o):this.delegate.setProperty(s,t,o)}listen(s,t,o){if("@"==t.charAt(0)){const c=function(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}(s);let g=t.substr(1),C="";return"@"!=g.charAt(0)&&([g,C]=function(n){const s=n.indexOf(".");return[n.substring(0,s),n.substr(s+1)]}(g)),this.engine.listen(this.namespaceId,c,g,C,D=>{this.factory.scheduleListenerCallback(D._data||-1,o,D)})}return this.delegate.listen(s,t,o)}}let ua=(()=>{class n extends Ro{constructor(t,o,c){super(t.body,o,c)}ngOnDestroy(){this.flush()}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(_.K0),e.LFG(en),e.LFG(xo))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})();const bl=new e.OlP("AnimationModuleType"),Au=[{provide:T._j,useClass:ec},{provide:xo,useFactory:function(){return new ar}},{provide:Ro,useClass:ua},{provide:e.FYo,useFactory:function(n,s,t){return new Mu(n,s,t)},deps:[f.se,Ro,e.R0b]}],bu=[{provide:en,useFactory:function(){return"function"==typeof Pl()?new uu:new dr}},{provide:bl,useValue:"BrowserAnimations"},...Au],cu=[{provide:en,useClass:st},{provide:bl,useValue:"NoopAnimations"},...Au];let Gs=(()=>{class n{static withConfig(t){return{ngModule:n,providers:t.disableAnimations?cu:bu}}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({providers:bu,imports:[f.b2]}),n})();var Hu=i(91376),Yo=i(6283),du=i(23815),Ar=i.n(du),ha=i(64762),_u=i(93523);let fa=class{constructor(s){this.http=s,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(`${this.baseURL}`)}lsDir(s,t){let o=`${this.baseUiURL}/${s}/ls_dir?depth=2`;return t&&(o+=`&path=${encodeURIComponent(t)}`),this.http.get(o)}getCephfs(s){return this.http.get(`${this.baseURL}/${s}`)}getTabs(s){return this.http.get(`ui-api/cephfs/${s}/tabs`)}getClients(s){return this.http.get(`${this.baseURL}/${s}/clients`)}evictClient(s,t){return this.http.delete(`${this.baseURL}/${s}/client/${t}`)}getMdsCounters(s){return this.http.get(`${this.baseURL}/${s}/mds_counters`)}mkSnapshot(s,t,o){let c=new y.LE;return c=c.append("path",t),Ar().isUndefined(o)||(c=c.append("name",o)),this.http.post(`${this.baseURL}/${s}/snapshot`,null,{params:c})}rmSnapshot(s,t,o){let c=new y.LE;return c=c.append("path",t),c=c.append("name",o),this.http.delete(`${this.baseURL}/${s}/snapshot`,{params:c})}quota(s,t,o){let c=new y.LE;return c=c.append("path",t),this.http.put(`${this.baseURL}/${s}/quota`,o,{observe:"response",params:c})}};fa.\u0275fac=function(s){return new(s||fa)(e.LFG(y.eN))},fa.\u0275prov=e.Yz7({token:fa,factory:fa.\u0275fac,providedIn:"root"}),fa=(0,ha.gn)([_u.o,(0,ha.w6)("design:paramtypes",[y.eN])],fa);var Gl=i(68136),Ja=i(99466),hl=i(68774),Vl=i(96102),Hs=i(35905),V=i(46797),Ae=i(69158),ot=i(91801),_t=i(74937),lt=i(38549),un=i(59376),yn=i(47557),Or=i(66369),Vr=i(61350),_i=i(16738),oi=i.n(_i),ko=i(87311),Ho=i(7194);const Ln=["chartCanvas"],Mr=["chartTooltip"];let gr=(()=>{class n{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(t,o)=>{let c=0;if(t.length>0){const g=t[0];c=o.datasets[g.datasetIndex].data[g.index].x}return c.toString()}}}},chartType:"line"}}ngOnInit(){Ar().isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){Ar().isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const t=new ko.h(this.chartCanvas,this.chartTooltip,c=>c.caretX+"px",c=>c.caretY-c.height-23+"px");t.getTitle=c=>oi()(c,"x").format("LTS"),t.checkOffset=!0;const o={title:{text:this.mdsCounter.name},tooltips:{custom:c=>t.customTooltips(c)}};Ar().merge(this.chart,{options:o})}updateChart(){const t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];Ar().merge(this.chart,{datasets:t}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(t){const o=[];return Ar().each(t,c=>{o.push({x:1e3*c[0],y:c[1]})}),o.shift(),o}deltaTimeSeries(t){let o,c=t[0];const g=[];for(o=1;o<t.length;o++){const C=t[o];g.push({x:1e3*C[0],y:C[1]-c[1]}),c=C}return g}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-chart"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Ln,7),e.Gf(Mr,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.chartCanvas=c.first),e.iGM(c=e.CRH())&&(o.chartTooltip=c.first)}},inputs:{mdsCounter:"mdsCounter"},features:[e.TTD],decls:6,vars:3,consts:[[1,"chart-container"],["baseChart","",3,"datasets","options","chartType"],["chartCanvas",""],[1,"chartjs-tooltip"],["chartTooltip",""]],template:function(t,o){1&t&&(e.TgZ(0,"div",0),e._UZ(1,"canvas",1,2),e.TgZ(3,"div",3,4),e._UZ(5,"table"),e.qZA(),e.qZA()),2&t&&(e.xp6(1),e.Q6J("datasets",o.chart.datasets)("options",o.chart.options)("chartType",o.chart.chartType))},directives:[Ho.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{height:500px;margin-bottom:20px;position:relative;width:100%}']}),n})();var co=i(60251);const Ss=["poolUsageTpl"],Na=["activityTmpl"];function El(n,s){if(1&n&&(e.TgZ(0,"div",0),e.TgZ(1,"div",11),e._UZ(2,"cd-cephfs-chart",12),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.Q6J("mdsCounter",t)}}function Ks(n,s){if(1&n&&e._UZ(0,"cd-usage-bar",13),2&n){const t=s.row;e.Q6J("total",t.size)("used",t.used)}}function td(n,s){1&n&&(e._uU(0),e.ALo(1,"dimless")),2&n&&e.AsE(" ","standby-replay"===s.row.state?"Evts":"Reqs",": ",e.lcZ(1,2,s.value)," /s\n")}let Lc=(()=>{class n{constructor(t,o){this.dimlessBinary=t,this.dimless=o,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:"Standby daemons",value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:"Rank"},{prop:"state",name:"State"},{prop:"mds",name:"Daemon"},{prop:"activity",name:"Activity",cellTemplate:this.activityTmpl},{prop:"dns",name:"Dentries",pipe:this.dimless},{prop:"inos",name:"Inodes",pipe:this.dimless},{prop:"dirs",name:"Dirs",pipe:this.dimless},{prop:"caps",name:"Caps",pipe:this.dimless}],pools:[{prop:"pool",name:"Pool"},{prop:"type",name:"Type"},{prop:"size",name:"Size",pipe:this.dimlessBinary},{name:"Usage",cellTemplate:this.poolUsageTpl,comparator:(t,o,c,g)=>{const C=c.used/c.avail,D=g.used/g.avail;return C===D?0:C>D?1:-1}}]}}trackByFn(t,o){return o.name}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(yn.$),e.Y36(Or.n))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-detail"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Ss,7),e.Gf(Na,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.poolUsageTpl=c.first),e.iGM(c=e.CRH())&&(o.activityTmpl=c.first)}},inputs:{data:"data"},features:[e.TTD],decls:19,vars:9,consts:function(){let s,t,o,c;return s="Ranks",t="Standbys",o="Pools",c="MDS performance counters",[[1,"row"],[1,"col-sm-6"],s,[3,"data","columns","toolHeader"],t,[3,"data"],o,c,["class","row",4,"ngFor","ngForOf","ngForTrackBy"],["poolUsageTpl",""],["activityTmpl",""],[1,"col-md-12"],[3,"mdsCounter"],[3,"total","used"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"legend"),e.SDv(3,2),e.qZA(),e._UZ(4,"cd-table",3),e.TgZ(5,"legend"),e.SDv(6,4),e.qZA(),e._UZ(7,"cd-table-key-value",5),e.qZA(),e.TgZ(8,"div",1),e.TgZ(9,"legend"),e.SDv(10,6),e.qZA(),e._UZ(11,"cd-table",3),e.qZA(),e.qZA(),e.TgZ(12,"legend"),e.SDv(13,7),e.qZA(),e.YNc(14,El,3,1,"div",8),e.YNc(15,Ks,1,2,"ng-template",null,9,e.W1O),e.YNc(17,td,2,4,"ng-template",null,10,e.W1O)),2&t&&(e.xp6(4),e.Q6J("data",o.data.ranks)("columns",o.columns.ranks)("toolHeader",!1),e.xp6(3),e.Q6J("data",o.standbys),e.xp6(4),e.Q6J("data",o.data.pools)("columns",o.columns.pools)("toolHeader",!1),e.xp6(3),e.Q6J("ngForOf",o.objectValues(o.data.mdsCounters))("ngForTrackBy",o.trackByFn))},directives:[Hs.a,Vr.b,_.sg,gr,co.O],pipes:[Or.n],styles:[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})();var zl=i(30982),ki=i(79512),No=i(65862),_a=i(18001),ll=i(97161),Ul=i(63285),Xs=i(94928);let vd=(()=>{class n{constructor(t,o,c,g,C){this.cephfsService=t,this.modalService=o,this.notificationService=c,this.authStorageService=g,this.actionLabels=C,this.triggerApiUpdate=new e.vpe,this.selection=new hl.r,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:No.P.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:"id"},{prop:"type",name:"type"},{prop:"state",name:"state"},{prop:"version",name:"version"},{prop:"hostname",name:"Host"},{prop:"root",name:"root"}]}updateSelection(t){this.selection=t}evictClient(t){this.cephfsService.evictClient(this.id,t).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.close(),this.notificationService.show(_a.k.success,"Evicted client '" + t + "'")},()=>{this.modalRef.componentInstance.stopLoadingSpinner()})}evictClientModal(){const t=this.selection.first().id;this.modalRef=this.modalService.show(zl.M,{itemDescription:"client",itemNames:[t],actionDescription:"evict",submitAction:()=>this.evictClient(t)})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(fa),e.Y36(Ul.Z),e.Y36(ll.g),e.Y36(_t.j),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-clients"]],inputs:{id:"id",clients:"clients"},outputs:{triggerApiUpdate:"triggerApiUpdate"},decls:2,vars:7,consts:[["selectionType","single",3,"data","columns","status","autoReload","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.triggerApiUpdate.emit()})("updateSelection",function(g){return o.updateSelection(g)}),e._UZ(1,"cd-table-actions",1),e.qZA()),2&t&&(e.Q6J("data",o.clients.data)("columns",o.columns)("status",o.clients.status)("autoReload",-1),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[Hs.a,Xs.K],styles:[""]}),n})();var vn=i(24751),Il=i(19723),nd=i(36169),Vd=i(65683),ds=i(77205),ca=i(87925);const jc=["origin"],nc=function(n,s){return[n,s]};function df(n,s){if(1&n&&e._UZ(0,"i",5),2&n){const t=e.oxw(2);e.Q6J("ngClass",e.WLB(1,nc,t.icons.spinner,t.icons.spin))}}function ul(n,s){if(1&n&&(e.TgZ(0,"tree-root",10),e.YNc(1,df,1,4,"ng-template",null,11,e.W1O),e.qZA()),2&n){const t=e.oxw();e.Q6J("nodes",t.nodes)("options",t.treeOptions)}}function zd(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"legend"),e.SDv(2,17),e.qZA(),e.TgZ(3,"cd-table",18),e.NdJ("updateSelection",function(c){return e.CHM(t),e.oxw(2).quota.updateSelection(c)}),e._UZ(4,"cd-table-actions",19),e.qZA(),e.BQk()}if(2&n){const t=e.oxw(2);e.xp6(3),e.Q6J("data",t.settings)("columns",t.quota.columns)("limit",0)("footer",!1)("onlyActionHeader",!0)("forceIdentifier",!0)("toolHeader",!1),e.xp6(1),e.Q6J("permission",t.permission)("selection",t.quota.selection)("tableActions",t.quota.tableActions)}}function Wd(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",12),e.TgZ(1,"div",2),e.TgZ(2,"div",3),e._uU(3),e.qZA(),e.TgZ(4,"div",6),e.YNc(5,zd,5,10,"ng-container",13),e.TgZ(6,"legend"),e.SDv(7,14),e.qZA(),e.TgZ(8,"cd-table",15),e.NdJ("updateSelection",function(c){return e.CHM(t),e.oxw().snapshot.updateSelection(c)}),e._UZ(9,"cd-table-actions",16),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(3),e.hij(" ",t.selectedDir.path," "),e.xp6(2),e.Q6J("ngIf","/"!==t.selectedDir.path),e.xp6(3),e.Q6J("data",t.selectedDir.snapshots)("columns",t.snapshot.columns),e.xp6(1),e.Q6J("permission",t.permission)("selection",t.snapshot.selection)("tableActions",t.snapshot.tableActions)}}function Be(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"span",20),e.NdJ("click",function(){const g=e.CHM(t).value;return e.oxw().selectOrigin(g)}),e._uU(1),e.qZA()}if(2&n){const t=s.value;e.xp6(1),e.Oqu(t)}}let Ce=(()=>{class n{constructor(t,o,c,g,C,D,P){this.authStorageService=t,this.modalService=o,this.cephfsService=c,this.cdDatePipe=g,this.actionLabels=C,this.notificationService=D,this.dimlessBinaryPipe=P,this.icons=No.P,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:j=>this.updateDirectory(j.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(t,o,c){Il.iM.TOGGLE_EXPANDED(t,o,c),this.selectNode(o)}selectNode(t){Il.iM.TOGGLE_ACTIVE(void 0,t,void 0),this.selectedDir=this.getDirectory(t),"/"!==t.id&&this.setSettings(t)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:"Name",flexGrow:1},{prop:"row.value",name:"Value",sortable:!1,flexGrow:1},{prop:"row.originPath",name:"Origin",sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new hl.r,updateSelection:t=>{this.quota.selection=t},tableActions:[{name:this.actionLabels.SET,icon:No.P.edit,permission:"update",visible:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:No.P.edit,permission:"update",visible:t=>t.first()&&t.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:No.P.destroy,permission:"update",disable:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:"Name",flexGrow:1},{prop:"path",name:"Path",isHidden:!0,flexGrow:2},{prop:"created",name:"Created",flexGrow:1,pipe:this.cdDatePipe}],selection:new hl.r,updateSelection:t=>{this.snapshot.selection=t},tableActions:[{name:this.actionLabels.CREATE,icon:No.P.add,permission:"create",canBePrimary:t=>!t.hasSelection,click:()=>this.createSnapshot(),disable:()=>this.disableCreateSnapshot()},{name:this.actionLabels.DELETE,icon:No.P.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:t=>t.hasSelection,disable:t=>!t.hasSelection}]}}disableCreateSnapshot(){const t=this.selectedDir.path.split("/").slice(1);return t.length>=4&&"volumes"===t[0]&&"Cannot create snapshots for files/folders in the subvolume " + t[2] + ""}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(t){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(t)){if(!0===this.loading[t])return}else this.requestedPaths.push(t);return new Promise(o=>{this.setLoadingIndicator(t,!0),this.cephfsService.lsDir(this.id,t).subscribe(c=>{this.updateTreeStructure(c),this.updateQuotaTable(),this.updateTree(),o(this.getChildren(t)),this.setLoadingIndicator(t,!1)})})}setLoadingIndicator(t,o){this.loading[t]=o,this.unsetLoadingIndicator()}getSubDirectories(t,o=this.dirs){return o.filter(c=>c.parent===t)}getChildren(t){const o=this.getSubTree(t);return Ar().sortBy(this.getSubDirectories(t),"path").map(c=>this.createNode(c,o))}createNode(t,o){return this.nodeIds[t.path]=t,o||this.getSubTree(t.parent),{name:t.name,id:t.path,hasChildren:this.getSubDirectories(t.path,o).length>0}}getSubTree(t){return this.dirs.filter(o=>o.parent&&o.parent.startsWith(t))}setSettings(t){const o=(c,g)=>c?g?g(c):c:"";this.settings=[this.getQuota(t,"max_files",o),this.getQuota(t,"max_bytes",c=>o(c,g=>this.dimlessBinaryPipe.transform(g)))]}getQuota(t,o,c){const g=t.id;t=this.getOrigin(t,o);const C=this.getDirectory(t),D=C.quotas[o];let P=D,j=C.path;if(t.id===g)if("/"===t.parent.id)P=0;else{const W=this.getDirectory(this.getOrigin(t.parent,o));P=W.quotas[o],j=W.path}return{row:{name:"max_bytes"===o?"Max size":"Max files",value:c(D),originPath:D?C.path:""},quotaKey:o,dirValue:this.nodeIds[g].quotas[o],nextTreeMaximum:{value:P,path:P?j:""}}}getOrigin(t,o){if(t.parent&&"/"!==t.parent.id){const c=this.getQuotaFromTree(t,o),g=this.getOrigin(t.parent,o),C=this.getQuotaFromTree(g,o);return 0===c||0!==C&&C<c?g:t}return t}getQuotaFromTree(t,o){return this.getDirectory(t).quotas[o]}getDirectory(t){return this.nodeIds[t.id]}selectOrigin(t){this.selectNode(this.getNode(t))}getNode(t){return this.treeComponent.treeModel.getNodeById(t)}updateQuotaModal(){const t=this.selectedDir.path,o=this.quota.selection.first(),c=o.nextTreeMaximum,g=o.quotaKey,C=o.dirValue;this.modalService.show(Vd.X,{titleText:this.getModalQuotaTitle(0===C?this.actionLabels.SET:this.actionLabels.UPDATE,t),message:c.value?"The inherited " + this.getQuotaValueFromPathMsg(c.value, c.path) + " is the maximum value to be used.":void 0,fields:[this.getQuotaFormField(o.row.name,g,C,c.value)],submitButtonText:"Save",onSubmit:D=>this.updateQuota(D)})}getModalQuotaTitle(t,o){return "" + t + " CephFS " + this.getQuotaName() + " quota for '" + o + "'"}getQuotaName(){return this.isBytesQuotaSelected()?"size":"files"}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(t,o){return t=this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(t):t,"" + this.getQuotaName() + " quota " + t + " from '" + o + "'"}getQuotaFormField(t,o,c,g){const C="max_bytes"===o,D=[C?ds.h.binaryMin(0):vn.kI.min(0)];g&&D.push(C?ds.h.binaryMax(g):vn.kI.max(g));const P={type:C?"binary":"number",label:t,name:o,value:c,validators:D,required:!0};return C||(P.errors={min:"Value has to be at least 0 or more",max:"Value has to be at most " + g + " or less"}),P}updateQuota(t,o){const c=this.selectedDir.path,g=this.quota.selection.first().quotaKey,C=0===this.selectedDir.quotas[g]?this.actionLabels.SET:0===t[g]?this.actionLabels.UNSET:"Updated";this.cephfsService.quota(this.id,c,t).subscribe(()=>{o&&o(),this.notificationService.show(_a.k.success,this.getModalQuotaTitle(C,c)),this.forceDirRefresh()})}unsetQuotaModal(){const t=this.selectedDir.path,o=this.quota.selection.first(),c=o.quotaKey,g=o.nextTreeMaximum,C=o.dirValue,D=this.getQuotaValueFromPathMsg(g.value,g.path),P=g.value>0?g.value>C?"in order to inherit " + D + "":"which isn't used because of the inheritance of " + D + "":"in order to have no quota on the directory";this.modalRef=this.modalService.show(nd.Y,{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,t),buttonText:this.actionLabels.UNSET,description:"" + this.actionLabels.UNSET + " " + this.getQuotaValueFromPathMsg(C, t) + " " + P + ".",onSubmit:()=>this.updateQuota({[c]:0},()=>this.modalRef.close())})}createSnapshot(){const t=this.selectedDir.path;this.modalService.show(Vd.X,{titleText:"Create Snapshot",message:"Please enter the name of the snapshot.",fields:[{type:"text",name:"name",value:`${oi()().toISOString(!0)}`,required:!0}],submitButtonText:"Create Snapshot",onSubmit:o=>{this.cephfsService.mkSnapshot(this.id,t,o.name).subscribe(c=>{this.notificationService.show(_a.k.success,"Created snapshot '" + c + "' for '" + t + "'"),this.forceDirRefresh()})}})}forceDirRefresh(t){if(!t){const c=this.selectedDir;if(!c)throw new Error("This function can only be called without path if an selection was made");t=c.parent?c.parent:c.path}this.getNode(t).loadNodeChildren()}updateTreeStructure(t){const o=(g,C)=>{const D=g.filter(j=>j.parent===C),P=D.map(j=>j.path);return{children:D,paths:P}};Ar().uniq(t.map(g=>g.parent).sort()).forEach(g=>{const C=o(t,g),D=o(this.dirs,g);D.children.forEach(P=>{C.paths.includes(P.path)||this.removeOldDirectory(P)}),C.children.forEach(P=>{D.paths.includes(P.path)?this.updateExistingDirectory(D.children,P):this.addNewDirectory(P)})})}removeOldDirectory(t){const o=t.path;Ar().remove(this.dirs,c=>c.path===o),delete this.nodeIds[o],this.updateDirectoriesParentNode(t)}updateDirectoriesParentNode(t){const o=t.parent;if(!o)return;const c=this.getNode(o);if(!c)return;const g=this.getChildren(o);c.data.children=g,c.data.hasChildren=g.length>0,this.treeComponent.treeModel.update()}addNewDirectory(t){this.dirs.push(t),this.nodeIds[t.path]=t,this.updateDirectoriesParentNode(t)}updateExistingDirectory(t,o){const c=t.find(g=>g.path===o.path);Object.assign(c,o)}updateQuotaTable(){const t=this.selectedDir?this.getNode(this.selectedDir.path):void 0;t&&"/"!==t.id&&this.setSettings(t)}updateTree(t=!1){this.loadingIndicator&&!t||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(zl.M,{itemDescription:"CephFs Snapshot",itemNames:this.snapshot.selection.selected.map(t=>t.name),submitAction:()=>this.deleteSnapshot()})}deleteSnapshot(){const t=this.selectedDir.path;this.snapshot.selection.selected.forEach(o=>{const c=o.name;this.cephfsService.rmSnapshot(this.id,t,c).subscribe(()=>{this.notificationService.show(_a.k.success,"Deleted snapshot '" + c + "' for '" + t + "'")})}),this.modalRef.close(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(o=>this.forceDirRefresh(o));const t=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(t)},3e3)}unsetLoadingIndicator(){!this.loadingIndicator||(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(o=>o))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Ul.Z),e.Y36(fa),e.Y36(Vl.N),e.Y36(ki.p4),e.Y36(ll.g),e.Y36(yn.$))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-directories"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Il.qr,5),e.Gf(jc,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.treeComponent=c.first),e.iGM(c=e.CRH())&&(o.originTmpl=c.first)}},inputs:{id:"id"},features:[e.TTD],decls:11,vars:10,consts:function(){let s,t;return s="Snapshots",t="Quotas",[[1,"row"],[1,"col-sm-4","pr-0"],[1,"card"],[1,"card-header"],["type","button",1,"btn","btn-light","pull-right",3,"click"],[3,"ngClass"],[1,"card-body"],[3,"nodes","options",4,"ngIf"],["class","col-sm-8 metadata",4,"ngIf"],["origin",""],[3,"nodes","options"],["loadingTemplate",""],[1,"col-sm-8","metadata"],[4,"ngIf"],s,["identifier","name","forceIdentifier","true","selectionType","multiClick",3,"data","columns","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],t,["selectionType","single","identifier","quotaKey",3,"data","columns","limit","footer","onlyActionHeader","forceIdentifier","toolHeader","updateSelection"],[1,"only-table-actions",3,"permission","selection","tableActions"],[1,"quota-origin",3,"click"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.TgZ(4,"button",4),e.NdJ("click",function(){return o.refreshAllDirectories()}),e._UZ(5,"i",5),e.qZA(),e.qZA(),e.TgZ(6,"div",6),e.YNc(7,ul,3,2,"tree-root",7),e.qZA(),e.qZA(),e.qZA(),e.YNc(8,Wd,10,7,"div",8),e.qZA(),e.YNc(9,Be,2,1,"ng-template",null,9,e.W1O)),2&t&&(e.xp6(4),e.ekj("disabled",o.loadingIndicator),e.xp6(1),e.ekj("fa-spin",o.loadingIndicator),e.Q6J("ngClass",e.WLB(7,nc,o.icons.large,o.icons.refresh)),e.xp6(2),e.Q6J("ngIf",o.nodes),e.xp6(1),e.Q6J("ngIf",o.selectedDir))},directives:[ca.o,_.mk,_.O5,Il.qr,Hs.a,Xs.K],styles:["cd-cephfs-directories tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer}.quota-origin[_ngcontent-%COMP%]:hover{color:#212529}"]}),n})();var it=i(76317);function yt(n,s){if(1&n&&e._UZ(0,"cd-cephfs-detail",15),2&n){const t=e.oxw(2);e.Q6J("data",t.details)}}function qt(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-cephfs-clients",16),e.NdJ("triggerApiUpdate",function(){return e.CHM(t),e.oxw(2).refresh()}),e.qZA()}if(2&n){const t=e.oxw(2);e.Q6J("id",t.id)("clients",t.clients)}}function Un(n,s){if(1&n&&e._UZ(0,"cd-cephfs-directories",17),2&n){const t=e.oxw(2);e.Q6J("id",t.id)}}function qn(n,s){if(1&n&&e._UZ(0,"cd-grafana",18),2&n){const t=e.oxw(2);e.Q6J("grafanaPath","mds-performance?var-mds_servers=mds."+t.grafanaId)("type","metrics")}}function yi(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"ul",1,2),e.NdJ("navChange",function(){return e.CHM(t),e.oxw().softRefresh()}),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,yt,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.ynx(9),e.SDv(10,8),e.BQk(),e.TgZ(11,"span",9),e._uU(12),e.qZA(),e.qZA(),e.YNc(13,qt,1,2,"ng-template",6),e.qZA(),e.TgZ(14,"li",10),e.TgZ(15,"a",4),e.SDv(16,11),e.qZA(),e.YNc(17,Un,1,1,"ng-template",6),e.qZA(),e.TgZ(18,"li",12),e.TgZ(19,"a",4),e.SDv(20,13),e.qZA(),e.YNc(21,qn,1,2,"ng-template",6),e.qZA(),e.qZA(),e._UZ(22,"div",14),e.BQk()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(12),e.Oqu(o.clients.data.length),e.xp6(10),e.Q6J("ngbNavOutlet",t)}}let Go=(()=>{class n{constructor(t,o,c){this.ngZone=t,this.authStorageService=o,this.cephfsService=c,this.clients={data:[],status:new Ae.E(ot.T.ValueNone)},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(t,o){this.id=t;const c=Ar().first(Object.values(o));this.grafanaId=c&&c.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:new Ae.E(ot.T.ValueNone)},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=(0,V.H)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(t=>{this.data=t,this.softRefresh()},()=>{this.clients.status=new Ae.E(ot.T.ValueException)})}softRefresh(){const t=Ar().cloneDeep(this.data);this.clients=t.clients,this.clients.status=new Ae.E(this.clients.status),this.details={standbys:t.standbys,pools:t.pools,ranks:t.ranks,mdsCounters:t.mds_counters,name:t.name}}ngOnDestroy(){this.unsubscribeInterval()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(e.R0b),e.Y36(_t.j),e.Y36(fa))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-tabs"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let s,t,o,c;return s="Details",t="Clients",o="Directories",c="Performance Details",[[4,"ngIf"],["ngbNav","","cdStatefulTab","cephfs-tabs",1,"nav-tabs",3,"navChange"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","clients"],t,[1,"badge","badge-pill","badge-tab","ml-1"],["ngbNavItem","directories"],o,["ngbNavItem","performance-details"],c,[3,"ngbNavOutlet"],[3,"data"],[3,"id","clients","triggerApiUpdate"],[3,"id"],["uid","tbO9LAiZz","grafanaStyle","one",3,"grafanaPath","type"]]},template:function(t,o){1&t&&e.YNc(0,yi,23,2,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,Lc,vd,Ce,it.F],styles:[""]}),n})(),ka=(()=>{class n extends Gl.o{constructor(t,o){super(),this.cephfsService=t,this.cdDatePipe=o,this.filesystems=[],this.selection=new hl.r}ngOnInit(){this.columns=[{name:"Name",prop:"mdsmap.fs_name",flexGrow:2},{name:"Created",prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:"Enabled",prop:"mdsmap.enabled",flexGrow:1,cellTransformation:Ja.e.checkIcon}]}loadFilesystems(t){this.cephfsService.list().subscribe(o=>{this.filesystems=o},()=>{t.error()})}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(fa),e.Y36(Vl.N))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-cephfs-list"]],features:[e.qOj],decls:2,vars:4,consts:[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","fetchData","setExpandedRow","updateSelection"],["cdTableDetail","",3,"selection"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(g){return o.loadFilesystems(g)})("setExpandedRow",function(g){return o.setExpandedRow(g)})("updateSelection",function(g){return o.updateSelection(g)}),e._UZ(1,"cd-cephfs-tabs",1),e.qZA()),2&t&&(e.Q6J("data",o.filesystems)("columns",o.columns)("hasDetails",!0),e.xp6(1),e.Q6J("selection",o.expandedRow))},directives:[Hs.a,Go],styles:[""]}),n})(),ss=(()=>{class n{static getType(t){const o=Ar().find(this.knownTypes,c=>c.name===t);if(void 0!==o)return o;throw new Error('Found unknown type "'+t+'" for config option.')}static getTypeValidators(t){const o=n.getType(t.type);if("bool"===o.name||"str"===o.name)return;const c={validators:[],patternHelpText:o.patternHelpText};return o.isNumberType?(t.max&&""!==t.max&&(c.max=t.max,c.validators.push(vn.kI.max(t.max))),t.min&&""!==t.min?(c.min=t.min,c.validators.push(vn.kI.min(t.min))):"defaultMin"in o&&(c.min=o.defaultMin,c.validators.push(vn.kI.min(o.defaultMin))),c.validators.push("float"===t.type?ds.h.decimalNumber():ds.h.number(o.allowsNegative))):"addr"===t.type?c.validators=[ds.h.ip()]:"uuid"===t.type&&(c.validators=[ds.h.uuid()]),c}static getTypeStep(t,o){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==o&&-1!==o.toString().indexOf(".")){const C=o.toString().split(".");return Math.pow(10,-C[1].length)}return.1}}}return n.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],n})();var Oa=i(93614),Us=i(95463);class fc{constructor(){this.value=[]}}var va=i(64724),wl=i(63622),tl=i(41582),$a=i(56310),Ha=i(94276),nl=i(30839);function Of(n,s){1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,20),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"textarea",21),e._uU(5,"            "),e.qZA(),e.qZA(),e.qZA())}function Dd(n,s){1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,22),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"textarea",23),e._uU(5,"            "),e.qZA(),e.qZA(),e.qZA())}function Jd(n,s){1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,24),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",25),e.qZA(),e.qZA())}function Tc(n,s){1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,26),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",27),e.qZA(),e.qZA())}function Vu(n,s){if(1&n&&(e.TgZ(0,"span",30),e.TgZ(1,"span",31),e._uU(2),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.Oqu(t)}}function Sc(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",9),e.SDv(2,28),e.qZA(),e.TgZ(3,"div",11),e.YNc(4,Vu,3,1,"span",29),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(4),e.Q6J("ngForOf",t.configForm.getValue("services"))}}function Qd(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",32),e._uU(2),e.qZA(),e.TgZ(3,"div",11),e.TgZ(4,"select",33),e.TgZ(5,"option",34),e.SDv(6,35),e.qZA(),e.TgZ(7,"option",34),e.SDv(8,36),e.qZA(),e.TgZ(9,"option",34),e.SDv(10,37),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.Q6J("for",t),e.xp6(1),e.hij("",t," "),e.xp6(2),e.Q6J("formControlName",t),e.xp6(1),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngValue",!0),e.xp6(2),e.Q6J("ngValue",!1)}}function Gc(n,s){if(1&n&&(e.TgZ(0,"span",40),e._uU(1),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.hij(" ",t.patternHelpText," ")}}function Ff(n,s){if(1&n&&(e.TgZ(0,"span",40),e._uU(1),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.hij(" ",t.patternHelpText," ")}}function zu(n,s){if(1&n&&(e.TgZ(0,"span",40),e.SDv(1,41),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.pQV(t.maxValue),e.QtT(1)}}function Tl(n,s){if(1&n&&(e.TgZ(0,"span",40),e.SDv(1,42),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.pQV(t.minValue),e.QtT(1)}}function xl(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",32),e._uU(2),e.qZA(),e.TgZ(3,"div",11),e._UZ(4,"input",38),e.YNc(5,Gc,2,1,"span",39),e.YNc(6,Ff,2,1,"span",39),e.YNc(7,zu,2,1,"span",39),e.YNc(8,Tl,2,1,"span",39),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit;e.oxw();const o=e.MAs(2),c=e.oxw();e.xp6(1),e.Q6J("for",t),e.xp6(1),e.hij("",t," "),e.xp6(2),e.Q6J("type",c.inputType)("id",t)("placeholder",c.humanReadableType)("formControlName",t)("step",c.getStep(c.type,c.configForm.getValue(t))),e.xp6(1),e.Q6J("ngIf",c.configForm.showError(t,o,"pattern")),e.xp6(1),e.Q6J("ngIf",c.configForm.showError(t,o,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",c.configForm.showError(t,o,"max")),e.xp6(1),e.Q6J("ngIf",c.configForm.showError(t,o,"min"))}}function kl(n,s){if(1&n&&(e.ynx(0),e.YNc(1,Qd,11,6,"div",13),e.YNc(2,xl,9,11,"div",13),e.BQk()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf","bool"===t.type),e.xp6(1),e.Q6J("ngIf","bool"!==t.type)}}function Nu(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.ynx(5,6),e._uU(6,"Edit"),e.BQk(),e._uU(7),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.SDv(11,10),e.qZA(),e.TgZ(12,"div",11),e._UZ(13,"input",12),e.qZA(),e.qZA(),e.YNc(14,Of,6,0,"div",13),e.YNc(15,Dd,6,0,"div",13),e.YNc(16,Jd,5,0,"div",13),e.YNc(17,Tc,5,0,"div",13),e.YNc(18,Sc,5,1,"div",13),e.TgZ(19,"div",14),e.TgZ(20,"h3",15),e.SDv(21,16),e.qZA(),e.YNc(22,kl,3,2,"ng-container",17),e.qZA(),e.qZA(),e.TgZ(23,"div",18),e.TgZ(24,"cd-form-button-panel",19),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("formGroup",t.configForm),e.xp6(6),e.hij(" ",t.configForm.getValue("name")," "),e.xp6(7),e.Q6J("ngIf",t.configForm.getValue("desc")),e.xp6(1),e.Q6J("ngIf",t.configForm.getValue("long_desc")),e.xp6(1),e.Q6J("ngIf",""!==t.configForm.getValue("default")),e.xp6(1),e.Q6J("ngIf",""!==t.configForm.getValue("daemon_default")),e.xp6(1),e.Q6J("ngIf",t.configForm.getValue("services").length>0),e.xp6(4),e.Q6J("ngForOf",t.availSections),e.xp6(2),e.Q6J("form",t.configForm)("submitText",t.actionLabels.UPDATE)}}let Qa=(()=>{class n extends Oa.E{constructor(t,o,c,g,C){super(),this.actionLabels=t,this.route=o,this.router=c,this.configService=g,this.notificationService=C,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const t={name:new vn.NI({value:null}),desc:new vn.NI({value:null}),long_desc:new vn.NI({value:null}),values:new vn.cw({}),default:new vn.NI({value:null}),daemon_default:new vn.NI({value:null}),services:new vn.NI([])};this.availSections.forEach(o=>{t.values.addControl(o,new vn.NI(null))}),this.configForm=new Us.d(t)}ngOnInit(){this.route.params.subscribe(t=>{this.configService.get(t.name).subscribe(c=>{this.setResponse(c),this.loadingReady()})})}getValidators(t){const o=ss.getTypeValidators(t);if(o)return this.patternHelpText=o.patternHelpText,"max"in o&&""!==o.max&&(this.maxValue=o.max),"min"in o&&""!==o.min&&(this.minValue=o.min),o.validators}getStep(t,o){return ss.getTypeStep(t,o)}setResponse(t){this.response=t;const o=this.getValidators(t);this.configForm.get("name").setValue(t.name),this.configForm.get("desc").setValue(t.desc),this.configForm.get("long_desc").setValue(t.long_desc),this.configForm.get("default").setValue(t.default),this.configForm.get("daemon_default").setValue(t.daemon_default),this.configForm.get("services").setValue(t.services),this.response.value&&this.response.value.forEach(g=>{let C=null;C="true"===g.value||"false"!==g.value&&g.value,this.configForm.get("values").get(g.section).setValue(C)}),this.availSections.forEach(g=>{this.configForm.get("values").get(g).setValidators(o)});const c=ss.getType(t.type);this.type=c.name,this.inputType=c.inputType,this.humanReadableType=c.humanReadable}createRequest(){const t=[];if(this.availSections.forEach(o=>{const c=this.configForm.getValue(o);null!==c&&""!==c&&t.push({section:o,value:c})}),!Ar().isEqual(this.response.value,t)){const o=new fc;return o.name=this.configForm.getValue("name"),o.value=t,o}return null}submit(){const t=this.createRequest();t&&this.configService.create(t).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated config option " + t.name + ""),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(Yo.gz),e.Y36(Yo.F0),e.Y36(va.e),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-configuration-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie;return s="Name",t="Values",o="Description",c="Long description",g="Default",C="Daemon default",D="Services",P="-- Default --",j="true",W="false",re="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",ie="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","configForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],["i18",""],[1,"card-body"],[1,"form-group","row"],[1,"cd-col-form-label"],s,[1,"cd-col-form-input"],["type","text","id","name","formControlName","name","readonly","",1,"form-control"],["class","form-group row",4,"ngIf"],["formGroupName","values"],[1,"cd-header"],t,[4,"ngFor","ngForOf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],o,["id","desc","formControlName","desc","readonly","",1,"form-control","resize-vertical"],c,["id","long_desc","formControlName","long_desc","readonly","",1,"form-control","resize-vertical"],g,["type","text","id","default","formControlName","default","readonly","",1,"form-control"],C,["type","text","id","daemon_default","formControlName","daemon_default","readonly","",1,"form-control"],D,["class","form-component-badge",4,"ngFor","ngForOf"],[1,"form-component-badge"],[1,"badge","badge-dark"],[1,"cd-col-form-label",3,"for"],["id","pool","name","pool",1,"form-control",3,"formControlName"],[3,"ngValue"],P,j,W,[1,"form-control",3,"type","id","placeholder","formControlName","step"],["class","invalid-feedback",4,"ngIf"],[1,"invalid-feedback"],re,ie]},template:function(t,o){1&t&&e.YNc(0,Nu,25,10,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[wl.y,vn._Y,vn.JL,tl.V,vn.sg,$a.P,ca.o,vn.Fj,Ha.b,vn.JJ,vn.u,_.O5,vn.x0,_.sg,nl.p,vn.EJ,vn.YN,vn.Kr],styles:[".form-component-badge[_ngcontent-%COMP%]{display:block;height:34px}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]}),n})();var Wu=i(68962);function tn(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e._UZ(2,"br"),e.qZA()),2&n){const t=s.$implicit,o=s.last;e.xp6(1),e.lnq(" ",t.section,": ",t.value,"",o?"":",","")}}function Mc(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",23),e.TgZ(2,"span",24),e._uU(3),e.ALo(4,"uppercase"),e.qZA(),e.qZA(),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(2);e.xp6(1),e.s9C("title",o.flags[t]),e.xp6(2),e.Oqu(e.lcZ(4,2,t))}}function Ou(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",24),e._uU(2),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.Oqu(t)}}function Pu(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"table",1),e.TgZ(2,"tbody"),e.TgZ(3,"tr"),e.TgZ(4,"td",2),e.SDv(5,3),e.qZA(),e.TgZ(6,"td",4),e._uU(7),e.qZA(),e.qZA(),e.TgZ(8,"tr"),e.TgZ(9,"td",5),e.SDv(10,6),e.qZA(),e.TgZ(11,"td"),e._uU(12),e.qZA(),e.qZA(),e.TgZ(13,"tr"),e.TgZ(14,"td",5),e.SDv(15,7),e.qZA(),e.TgZ(16,"td"),e._uU(17),e.qZA(),e.qZA(),e.TgZ(18,"tr"),e.TgZ(19,"td",5),e.SDv(20,8),e.qZA(),e.TgZ(21,"td"),e.YNc(22,tn,3,3,"span",9),e.qZA(),e.qZA(),e.TgZ(23,"tr"),e.TgZ(24,"td",5),e.SDv(25,10),e.qZA(),e.TgZ(26,"td"),e._uU(27),e.qZA(),e.qZA(),e.TgZ(28,"tr"),e.TgZ(29,"td",5),e.SDv(30,11),e.qZA(),e.TgZ(31,"td"),e._uU(32),e.qZA(),e.qZA(),e.TgZ(33,"tr"),e.TgZ(34,"td",5),e.SDv(35,12),e.qZA(),e.TgZ(36,"td"),e._uU(37),e.qZA(),e.qZA(),e.TgZ(38,"tr"),e.TgZ(39,"td",5),e.SDv(40,13),e.qZA(),e.TgZ(41,"td"),e._uU(42),e.qZA(),e.qZA(),e.TgZ(43,"tr"),e.TgZ(44,"td",5),e.SDv(45,14),e.qZA(),e.TgZ(46,"td"),e._uU(47),e.qZA(),e.qZA(),e.TgZ(48,"tr"),e.TgZ(49,"td",5),e.SDv(50,15),e.qZA(),e.TgZ(51,"td"),e.YNc(52,Mc,5,4,"span",9),e.qZA(),e.qZA(),e.TgZ(53,"tr"),e.TgZ(54,"td",5),e.SDv(55,16),e.qZA(),e.TgZ(56,"td"),e.YNc(57,Ou,3,1,"span",9),e.qZA(),e.qZA(),e.TgZ(58,"tr"),e.TgZ(59,"td",5),e.SDv(60,17),e.qZA(),e.TgZ(61,"td"),e._uU(62),e.qZA(),e.qZA(),e.TgZ(63,"tr"),e.TgZ(64,"td",5),e.SDv(65,18),e.qZA(),e.TgZ(66,"td"),e._uU(67),e.qZA(),e.qZA(),e.TgZ(68,"tr"),e.TgZ(69,"td",5),e.SDv(70,19),e.qZA(),e.TgZ(71,"td"),e._uU(72),e.ALo(73,"booleanText"),e.qZA(),e.qZA(),e.TgZ(74,"tr"),e.TgZ(75,"td",5),e.SDv(76,20),e.qZA(),e.TgZ(77,"td"),e._uU(78),e.qZA(),e.qZA(),e.TgZ(79,"tr"),e.TgZ(80,"td",5),e.SDv(81,21),e.qZA(),e.TgZ(82,"td"),e._uU(83),e.qZA(),e.qZA(),e.TgZ(84,"tr"),e.TgZ(85,"td",5),e.SDv(86,22),e.qZA(),e.TgZ(87,"td"),e._uU(88),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw();e.xp6(7),e.Oqu(t.selection.name),e.xp6(5),e.Oqu(t.selection.desc),e.xp6(5),e.Oqu(t.selection.long_desc),e.xp6(5),e.Q6J("ngForOf",t.selection.value),e.xp6(5),e.Oqu(t.selection.default),e.xp6(5),e.Oqu(t.selection.daemon_default),e.xp6(5),e.Oqu(t.selection.type),e.xp6(5),e.Oqu(t.selection.min),e.xp6(5),e.Oqu(t.selection.max),e.xp6(5),e.Q6J("ngForOf",t.selection.flags),e.xp6(5),e.Q6J("ngForOf",t.selection.services),e.xp6(5),e.Oqu(t.selection.source),e.xp6(5),e.Oqu(t.selection.level),e.xp6(5),e.Oqu(e.lcZ(73,17,t.selection.can_update_at_runtime)),e.xp6(6),e.Oqu(t.selection.tags),e.xp6(5),e.Oqu(t.selection.enum_values),e.xp6(5),e.Oqu(t.selection.see_also)}}let rl=(()=>{class n{constructor(){this.flags={runtime:"The value can be updated at runtime.",no_mon_update:"Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line.",startup:"Option takes effect only during daemon startup.",cluster_create:"Option only affects cluster creation.",create:"Option only affects daemon creation."}}ngOnChanges(){this.selection&&(this.selection.services=Ar().split(this.selection.services,","))}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-configuration-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke;return s="Name",t="Description",o="Long description",c="Current values",g="Default",C="Daemon default",D="Type",P="Min",j="Max",W="Flags",re="Services",ie="Source",ge="Level",_e="Can be updated at runtime (editable)",Le="Tags",Re="Enum values",ke="See also",[[4,"ngIf"],[1,"table","table-striped","table-bordered"],[1,"bold","w-25"],s,[1,"w-75"],[1,"bold"],t,o,c,[4,"ngFor","ngForOf"],g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,[3,"title"],[1,"badge","badge-dark","mr-2"]]},template:function(t,o){1&t&&e.YNc(0,Pu,89,19,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,_.sg],pipes:[Wu.T,_.gd],styles:[""]}),n})();const ff=["confValTpl"],Xl=["confFlagTpl"];function yd(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e._UZ(2,"br"),e.qZA()),2&n){const t=s.$implicit,o=s.last;e.xp6(1),e.lnq(" ",t.section,": ",t.value,"",o?"":",","")}}function Ac(n,s){if(1&n&&(e.TgZ(0,"span"),e.YNc(1,yd,3,3,"span",5),e.qZA()),2&n){const t=e.oxw().value;e.xp6(1),e.Q6J("ngForOf",t)}}function Vc(n,s){1&n&&e.YNc(0,Ac,2,1,"span",4),2&n&&e.Q6J("ngIf",s.value)}let pf=(()=>{class n extends Gl.o{constructor(t,o,c){super(),this.authStorageService=t,this.configurationService=o,this.actionLabels=c,this.data=[],this.icons=No.P,this.selection=new hl.r,this.filters=[{name:"Level",prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(D,P)=>{let j;var re;return(re=j||(j={}))[re.basic=0]="basic",re[re.advanced=1]="advanced",re[re.dev=2]="dev",j[D.level]<=j[P]}},{name:"Service",prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(D,P)=>D.services.includes(P)},{name:"Source",prop:"source",filterOptions:["mon"],filterPredicate:(D,P)=>!!D.hasOwnProperty("source")&&D.source.includes(P)},{name:"Modified",prop:"modified",filterOptions:["yes","no"],filterPredicate:(D,P)=>!!("yes"===P&&D.hasOwnProperty("value")||"no"===P&&!D.hasOwnProperty("value"))}],this.permission=this.authStorageService.getPermissions().configOpt;const g=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().name)}`;this.tableActions=[{permission:"update",icon:No.P.edit,routerLink:()=>`/configuration/edit/${g()}`,name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:"Name"},{prop:"desc",name:"Description",cellClass:"wrap"},{prop:"value",name:"Current value",cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:"Default",cellClass:"wrap"},{prop:"can_update_at_runtime",name:"Editable",cellTransformation:Ja.e.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(t){this.selection=t}getConfigurationList(t){this.configurationService.getConfigData().subscribe(o=>{this.data=o},()=>{t.error()})}isEditable(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(va.e),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-configuration"]],viewQuery:function(t,o){if(1&t&&(e.Gf(ff,7),e.Gf(Xl,5)),2&t){let c;e.iGM(c=e.CRH())&&(o.confValTpl=c.first),e.iGM(c=e.CRH())&&(o.confFlagTpl=c.first)}},features:[e.qOj],decls:5,vars:8,consts:[["selectionType","single",3,"data","columns","extraFilterableColumns","hasDetails","fetchData","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["confValTpl",""],[4,"ngIf"],[4,"ngFor","ngForOf"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(g){return o.getConfigurationList(g)})("setExpandedRow",function(g){return o.setExpandedRow(g)})("updateSelection",function(g){return o.updateSelection(g)}),e._UZ(1,"cd-table-actions",1),e._UZ(2,"cd-configuration-details",2),e.qZA(),e.YNc(3,Vc,1,1,"ng-template",null,3,e.W1O)),2&t&&(e.Q6J("data",o.data)("columns",o.columns)("extraFilterableColumns",o.filters)("hasDetails",!0),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("selection",o.expandedRow))},directives:[Hs.a,Xs.K,rl,_.O5,_.sg],styles:[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  cd-configuration datatable-body-cell.wrap{word-break:break-all}"]}),n})();var Oc=i(35758),hf=i(68939),zc=i(25917),su=i(88002),bd=i(42145),kp=i(548),dp=i(95242),_f=i(34022);function Kl(n,s,t){return 0===t?[s]:(n.push(s),n)}function kf(){return function(n,s){return arguments.length>=2?function(o){return(0,_f.z)((0,bd.R)(n,s),(0,kp.h)(1),(0,dp.d)(s))(o)}:function(o){return(0,_f.z)((0,bd.R)((c,g,C)=>n(c,g,C+1)),(0,kp.h)(1))(o)}}(Kl,[])}var Uu=i(19773),Xf=i(76189),Rd=i(51295);let wc=(()=>{class n{calculateAdditionalData(t){if(!t.life_expectancy_min||!t.life_expectancy_max)return t.state="unknown",t;const o=P=>!!Number.parseFloat(P),c=(P,j)=>P&&j&&o(P)&&o(j)?oi().duration(oi()(P).diff(oi()(j))).asWeeks():null,g=oi().duration(oi()(oi().now()).diff(oi()(t.life_expectancy_stamp))).asWeeks(),C=c(t.life_expectancy_max,t.life_expectancy_stamp),D=c(t.life_expectancy_min,t.life_expectancy_stamp);return t.state=g>1?"stale":null!==C&&C<=2?"bad":null!==D&&D<=4?"warning":"good",t.life_expectancy_weeks={max:null!==C?Math.round(C):null,min:null!==D?Math.round(D):null},t}readable(t){return t.readableDaemons=t.daemons.join(" "),t}prepareDevice(t){return this.readable(this.calculateAdditionalData(t))}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),ql=(()=>{class n extends Xf.S{constructor(t,o){super(),this.http=t,this.deviceService=o,this.baseURL="api/host",this.baseUIURL="ui-api/host",this.predefinedLabels=["mon","mgr","osd","mds","rgw","nfs","iscsi","rbd","grafana"]}list(t){return this.http.get(this.baseURL,{headers:{Accept:"application/vnd.ceph.api.v1.1+json"},params:{facts:t}})}create(t,o,c,g){return this.http.post(this.baseURL,{hostname:t,addr:o,labels:c,status:g},{observe:"response",headers:{Accept:Rd.T.cdVersionHeader("0","1")}})}delete(t){return this.http.delete(`${this.baseURL}/${t}`,{observe:"response"})}getDevices(t){return this.http.get(`${this.baseURL}/${t}/devices`).pipe((0,su.U)(o=>o.map(c=>this.deviceService.prepareDevice(c))))}getSmartData(t){return this.http.get(`${this.baseURL}/${t}/smart`)}getDaemons(t){return this.http.get(`${this.baseURL}/${t}/daemons`)}getLabels(){return this.http.get(`${this.baseUIURL}/labels`)}update(t,o=!1,c=[],g=!1,C=!1,D=!1){return this.http.put(`${this.baseURL}/${t}`,{update_labels:o,labels:c,maintenance:g,force:C,drain:D},{headers:{Accept:this.getVersionHeaderValue(0,1)}})}identifyDevice(t,o,c){return this.http.post(`${this.baseURL}/${t}/identify_device`,{device:o,duration:c})}getInventoryParams(t){let o=new y.LE;return t&&(o=o.append("refresh",Ar().toString(t))),o}getInventory(t,o){const c=this.getInventoryParams(o);return this.http.get(`${this.baseURL}/${t}/inventory`,{params:c})}inventoryList(t){const o=this.getInventoryParams(t);return this.http.get(`${this.baseUIURL}/inventory`,{params:o})}inventoryDeviceList(t,o){let c;return c=t?this.getInventory(t,o).pipe(kf()):this.inventoryList(o),c.pipe((0,Uu.zg)(g=>{const C=Ar().flatMap(g,D=>D.devices.map(P=>(P.hostname=D.name,P.uid=P.device_id?`${P.device_id}-${P.hostname}-${P.path}`:`${P.hostname}-${P.path}`,P)));return(0,zc.of)(C)}))}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN),e.LFG(wc))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),Ji=(()=>{class n{constructor(t,o){this.http=t,this.deviceService=o,this.path="api/osd",this.uiPath="ui-api/osd",this.osdDevices=[],this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:"-- Select the priority --",values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:"Low",values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:"Default",values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:"High",values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(t,o,c="drive_groups"){return this.http.post(this.path,{method:c,data:t,tracking_id:o},{observe:"response"})}getList(){return this.http.get(`${this.path}`)}getOsdSettings(){return this.http.get(`${this.path}/settings`,{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}getDetails(t){return this.http.get(`${this.path}/${t}`)}getSmartData(t){return this.http.get(`${this.path}/${t}/smart`)}scrub(t,o){return this.http.post(`${this.path}/${t}/scrub?deep=${o}`,null)}getDeploymentOptions(){return this.http.get(`${this.uiPath}/deployment_options`)}getFlags(){return this.http.get(`${this.path}/flags`)}updateFlags(t){return this.http.put(`${this.path}/flags`,{flags:t})}updateIndividualFlags(t,o){return this.http.put(`${this.path}/flags/individual`,{flags:t,ids:o})}markOut(t){return this.http.put(`${this.path}/${t}/mark`,{action:"out"})}markIn(t){return this.http.put(`${this.path}/${t}/mark`,{action:"in"})}markDown(t){return this.http.put(`${this.path}/${t}/mark`,{action:"down"})}reweight(t,o){return this.http.post(`${this.path}/${t}/reweight`,{weight:o})}update(t,o){return this.http.put(`${this.path}/${t}`,{device_class:o})}markLost(t){return this.http.put(`${this.path}/${t}/mark`,{action:"lost"})}purge(t){return this.http.post(`${this.path}/${t}/purge`,null)}destroy(t){return this.http.post(`${this.path}/${t}/destroy`,null)}delete(t,o,c){return this.http.delete(`${this.path}/${t}`,{observe:"response",params:{preserve_id:o?"true":"false",force:c?"true":"false"}})}safeToDestroy(t){return this.http.get(`${this.path}/safe_to_destroy?ids=${t}`)}safeToDelete(t){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${t}`)}getDevices(t){return this.http.get(`${this.path}/${t}/devices`).pipe((0,su.U)(o=>o.map(c=>this.deviceService.prepareDevice(c))))}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN),e.LFG(wc))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var cl=i(76111),Ll=i(32337),Nd=i(26215);const il=[{stepIndex:1,isComplete:!1}];let Bu=(()=>{class n{constructor(){this.currentStep$=new Nd.X(null),this.steps$=new Nd.X(il),this.currentStep$.next(this.steps$.value[0])}setTotalSteps(t){const o=[];for(let c=1;c<=t;c++)o.push({stepIndex:c,isComplete:!1});this.steps$=new Nd.X(o)}setCurrentStep(t){this.currentStep$.next(t)}getCurrentStep(){return this.currentStep$.asObservable()}getSteps(){return this.steps$.asObservable()}moveToNextStep(){this.currentStep$.next(this.steps$.value[this.currentStep$.value.stepIndex])}moveToPreviousStep(){this.currentStep$.next(this.steps$.value[this.currentStep$.value.stepIndex-1-1])}isLastStep(){return this.currentStep$.value.stepIndex===this.steps$.value.length}isFirstStep(){var t;return(null===(t=this.currentStep$.value)||void 0===t?void 0:t.stepIndex)-1==0}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var pc=i(28211);class Xd{constructor(){this.reset(),this.formatterService=new pc.H,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:s=>"hdd"===s.toLowerCase()},"sys_api.size":{name:"size",formatter:s=>this.formatterService.format_number(s,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:`dashboard-${Ar().now()}`}}setName(s){this.spec.service_id=s}setHostPattern(s){this.spec.host_pattern=s}setDeviceSelection(s,t){const o=`${s}_devices`;this.spec[o]={},t.forEach(c=>{const g=this.deviceSelectionAttrs[c.prop];g&&(this.spec[o][g.name]=g.formatter?g.formatter(c.value.raw):c.value.raw)})}clearDeviceSelection(s){delete this.spec[`${s}_devices`]}setSlots(s,t){const o=`${s}_slots`;0===t?delete this.spec[o]:this.spec[o]=t}setFeature(s,t){t?this.spec[s]=!0:delete this.spec[s]}}let wf=(()=>{class n{constructor(t){this.http=t,this.baseURL="api/cluster"}getStatus(){return this.http.get(`${this.baseURL}`,{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}updateStatus(t){return this.http.put(`${this.baseURL}`,{status:t},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const Wl=function(n){return{active:n}};function Pd(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"ul",4),e.TgZ(1,"li",5),e.TgZ(2,"a",6),e.NdJ("click",function(){const g=e.CHM(t).$implicit;return e.oxw().onStepClick(g)}),e.TgZ(3,"span",7),e.SDv(4,8),e.qZA(),e.TgZ(5,"span"),e.SDv(6,9),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit,o=s.index,c=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(4,Wl,c.currentStep.stepIndex===t.stepIndex)),e.xp6(1),e.Q6J("ngClass",e.VKq(6,Wl,c.currentStep.stepIndex===t.stepIndex)),e.xp6(1),e.pQV(t.stepIndex),e.QtT(4),e.xp6(2),e.pQV(c.stepsTitle[o]),e.QtT(6)}}let rc=(()=>{class n{constructor(t){this.stepsService=t}ngOnInit(){this.stepsService.setTotalSteps(this.stepsTitle.length),this.steps=this.stepsService.getSteps(),this.currentStepSub=this.stepsService.getCurrentStep().subscribe(t=>{this.currentStep=t})}onStepClick(t){this.stepsService.setCurrentStep(t)}ngOnDestroy(){this.currentStepSub.unsubscribe()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Bu))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-wizard"]],inputs:{stepsTitle:"stepsTitle"},decls:5,vars:3,consts:function(){let s,t;return s="" + "\ufffd0\ufffd" + "",t="" + "\ufffd0\ufffd" + "",[[1,"card-body"],[1,"row","m-7"],[1,"col"],["class","nav nav-pills flex-column",4,"ngFor","ngForOf"],[1,"nav","nav-pills","flex-column"],[1,"nav-item"],[1,"nav-link",3,"ngClass","click"],[1,"circle-step",3,"ngClass"],s,t]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"nav",2),e.YNc(3,Pd,7,8,"ul",3),e.ALo(4,"async"),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(3),e.Q6J("ngForOf",e.lcZ(4,1,o.steps)))},directives:[_.sg,_.mk],pipes:[_.Ov],styles:["cd-wizard{width:15%}.card-body[_ngcontent-%COMP%]{padding-left:0}span.circle-step[_ngcontent-%COMP%]{background:#adb5bd;border-radius:.8em;color:#fff;display:inline-block;font-weight:bold;line-height:1.6em;margin-right:5px;text-align:center;width:1.6em}span.circle-step.active[_ngcontent-%COMP%]{background-color:#2b99a8}.nav-pills[_ngcontent-%COMP%]   .nav-link[_ngcontent-%COMP%]{background-color:#fff;color:#343a40}.nav-pills[_ngcontent-%COMP%]   .nav-link.active[_ngcontent-%COMP%]{color:#2b99a8}"]}),n})();var hc=i(13472),gu=i(75319);let Cc=(()=>{class n{constructor(t){this.http=t,this.url="ui-api/orchestrator",this.disableMessages={noOrchestrator:"The feature is disabled because Orchestrator is not available.",missingFeature:"The Orchestrator backend doesn't support this feature."}}status(){return this.http.get(`${this.url}/status`)}hasFeature(t,o){return Ar().every(o,c=>Ar().get(t.features,`${c}.available`))}getTableActionDisableDesc(t,o){return!!t&&(t.available?!this.hasFeature(t,o)&&this.disableMessages.missingFeature:this.disableMessages.noOrchestrator)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var Fc=i(7022),fu=(()=>{return(n=fu||(fu={})).HOST_LIST="get_hosts",n.HOST_ADD="add_host",n.HOST_REMOVE="remove_host",n.HOST_LABEL_ADD="add_host_label",n.HOST_LABEL_REMOVE="remove_host_label",n.HOST_MAINTENANCE_ENTER="enter_host_maintenance",n.HOST_MAINTENANCE_EXIT="exit_host_maintenance",n.HOST_FACTS="get_facts",n.HOST_DRAIN="drain_host",n.SERVICE_LIST="describe_service",n.SERVICE_CREATE="apply",n.SERVICE_EDIT="apply",n.SERVICE_DELETE="remove_service",n.SERVICE_RELOAD="service_action",n.DAEMON_LIST="list_daemons",n.OSD_GET_REMOVE_STATUS="remove_osds_status",n.OSD_CREATE="apply_drivegroups",n.OSD_DELETE="remove_osds",n.DEVICE_LIST="get_inventory",n.DEVICE_BLINK_LIGHT="blink_device_light",fu;var n})(),Id=i(41039),Sl=i(51847),kc=i(33512),$c=i.n(kc),h=i(60312),E=i(18372),N=i(82945),k=i(60192),K=i(10545);function de(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,25),e.qZA())}function be(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,26),e.qZA())}function Ue(n,s){1&n&&(e.TgZ(0,"span",24),e.SDv(1,30),e.qZA())}function we(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",27),e.SDv(2,28),e.qZA(),e.TgZ(3,"div",15),e._UZ(4,"input",29),e.YNc(5,Ue,2,0,"span",17),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(5),e.Q6J("ngIf",o.hostForm.showError("addr",t,"pattern"))}}function Xe(n,s){1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"div",31),e.TgZ(2,"div",32),e._UZ(3,"input",33),e.TgZ(4,"label",34),e.SDv(5,35),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function gt(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",5,6),e.TgZ(3,"div",7),e.TgZ(4,"div",8),e.TgZ(5,"label",9),e.ynx(6),e.SDv(7,10),e.BQk(),e.TgZ(8,"cd-helper"),e.TgZ(9,"p"),e.SDv(10,11),e.qZA(),e.TgZ(11,"ul"),e.TgZ(12,"li"),e.tHW(13,12),e._UZ(14,"samp"),e.N_p(),e.qZA(),e.TgZ(15,"li"),e.tHW(16,13),e._UZ(17,"samp"),e.N_p(),e.qZA(),e.TgZ(18,"li"),e.tHW(19,14),e._UZ(20,"samp"),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(21,"div",15),e.TgZ(22,"input",16),e.NdJ("keyup",function(){return e.CHM(t),e.oxw().checkHostNameValue()}),e.qZA(),e.YNc(23,de,2,0,"span",17),e.YNc(24,be,2,0,"span",17),e.qZA(),e.qZA(),e.YNc(25,we,6,1,"div",18),e.TgZ(26,"div",8),e.TgZ(27,"label",19),e.SDv(28,20),e.qZA(),e.TgZ(29,"div",15),e._UZ(30,"cd-select-badges",21),e.qZA(),e.qZA(),e.YNc(31,Xe,6,0,"div",18),e.qZA(),e.TgZ(32,"div",22),e.TgZ(33,"cd-form-button-panel",23),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submit()}),e.ALo(34,"titlecase"),e.ALo(35,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("formGroup",o.hostForm),e.xp6(22),e.Q6J("ngIf",o.hostForm.showError("hostname",t,"required")),e.xp6(1),e.Q6J("ngIf",o.hostForm.showError("hostname",t,"uniqueName")),e.xp6(1),e.Q6J("ngIf",!o.hostPattern),e.xp6(5),e.Q6J("data",o.hostForm.controls.labels.value)("options",o.labelsOption)("customBadges",!0)("messages",o.messages),e.xp6(1),e.Q6J("ngIf",!o.hideMaintenance),e.xp6(2),e.Q6J("form",o.hostForm)("submitText",e.lcZ(34,11,o.action)+" "+e.lcZ(35,13,o.resource))}}let vt=(()=>{class n extends Oa.E{constructor(t,o,c,g,C){super(),this.router=t,this.actionLabels=o,this.hostService=c,this.taskWrapper=g,this.activeModal=C,this.hostnameArray=[],this.hostPattern=!1,this.labelsOption=[],this.messages=new Fc.a({empty:"There are no labels.",filter:"Filter or add labels",add:"Add label"}),this.resource="host",this.action=this.actionLabels.ADD}ngOnInit(){this.router.url.includes("hosts")&&(this.pageURL="hosts"),this.createForm(),this.hostService.list("false").subscribe(t=>{this.hostnames=t.map(o=>o.hostname),this.loadingReady()}),this.hostService.getLabels().subscribe(t=>{const o=new Set(t.concat(this.hostService.predefinedLabels));this.labelsOption=Array.from(o).map(c=>({enabled:!0,name:c,selected:!1,description:null}))})}checkHostNameValue(){this.hostPattern=!!this.hostForm.get("hostname").value.match(/[()\[\]{},]/g)}createForm(){this.hostForm=new Us.d({hostname:new vn.NI("",{validators:[vn.kI.required,ds.h.custom("uniqueName",t=>this.hostnames&&-1!==this.hostnames.indexOf(t))]}),addr:new vn.NI("",{validators:[ds.h.ip()]}),labels:new vn.NI([]),maintenance:new vn.NI(!1)})}isCommaSeparatedPattern(t){return t.includes(",")}isRangeTypePattern(t){return t.includes("[")&&t.includes("]")&&!t.match(/(?![^(]*\)),/g)}replaceBraces(t){return t.replace(/(\d)\s*-\s*(\d)/g,"$1..$2").replace(/\(/g,"{").replace(/\)/g,"}").replace(/\[/g,"{").replace(/]/g,"}")}checkHostNamePattern(t){if(this.isRangeTypePattern(t)){const o=this.replaceBraces(t);this.hostnameArray=$c()(o)}else if(this.isCommaSeparatedPattern(t)){let o=[];o=t.split(","),o.forEach(c=>{if(this.isRangeTypePattern(c)){const g=this.replaceBraces(c);this.hostnameArray=this.hostnameArray.concat($c()(g))}else this.hostnameArray.push(c)})}else this.hostnameArray.push(t)}submit(){const t=this.hostForm.get("hostname").value;this.checkHostNamePattern(t),this.addr=this.hostForm.get("addr").value,this.status=this.hostForm.get("maintenance").value?"maintenance":"",this.allLabels=this.hostForm.get("labels").value,"hosts"!==this.pageURL&&!this.allLabels.includes("_no_schedule")&&this.allLabels.push("_no_schedule"),this.hostnameArray.forEach(o=>{this.taskWrapper.wrapTaskAroundCall({task:new cl.R("host/"+ki.MQ.ADD,{hostname:o}),call:this.hostService.create(o,this.addr,this.allLabels,this.status)}).subscribe({error:()=>{this.hostForm.setErrors({cdSubmitButton:!0})},complete:()=>{"hosts"===this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):this.activeModal.close()}})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(ki.p4),e.Y36(ql),e.Y36(Ll.P),e.Y36(lt.Kz))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-host-form"]],features:[e.qOj],decls:7,vars:9,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Hostname",o="To add multiple hosts at once, you can enter:",c="a comma-separated list of hostnames " + "\ufffd#14\ufffd" + "(e.g.: example-01,example-02,example-03)" + "\ufffd/#14\ufffd" + ",",g="a range expression " + "\ufffd#17\ufffd" + "(e.g.: example-[01-03].ceph)" + "\ufffd/#17\ufffd" + ",",C="a comma separated range expression " + "\ufffd#20\ufffd" + "(e.g.: example-[01-05].lab.com,example2-[1-4].lab.com,example3-[001-006].lab.com)" + "\ufffd/#20\ufffd" + "",D="Labels",P="This field is required.",j="The chosen hostname is already in use.",W="Network address",re="The value is not a valid IP address.",ie="Maintenance Mode",[[3,"pageURL","modalRef"],[1,"modal-title"],s,[1,"modal-content"],[4,"cdFormLoading"],["name","hostForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","hostname",1,"cd-col-form-label","required"],t,o,c,g,C,[1,"cd-col-form-input"],["type","text","placeholder","mon-123","id","hostname","name","hostname","formControlName","hostname","autofocus","",1,"form-control",3,"keyup"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],["for","labels",1,"cd-col-form-label"],D,["id","labels",3,"data","options","customBadges","messages"],[1,"modal-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],P,j,["for","addr",1,"cd-col-form-label"],W,["type","text","placeholder","192.168.0.1","id","addr","name","addr","formControlName","addr",1,"form-control"],re,[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","maintenance","type","checkbox","formControlName","maintenance",1,"custom-control-input"],["for","maintenance",1,"custom-control-label"],ie]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.qZA(),e.ynx(5,3),e.YNc(6,gt,36,15,"div",4),e.BQk(),e.qZA()),2&t&&(e.Q6J("pageURL",o.pageURL)("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,5,o.action))(e.lcZ(4,7,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("cdFormLoading",o.loading))},directives:[h.z,wl.y,vn._Y,vn.JL,tl.V,vn.sg,$a.P,E.S,ca.o,vn.Fj,Ha.b,vn.JJ,vn.u,N.U,_.O5,k.m,nl.p,vn.Wl],pipes:[_.rS,K.m],styles:[""]}),n})();var Jt=i(34501);const Pn=["deviceLocation"],Rn=["lifeExpectancy"],sr=["lifeExpectancyTimestamp"];function jr(n,s){if(1&n&&e._UZ(0,"cd-table",5),2&n){const t=e.oxw();e.Q6J("data",t.devices)("columns",t.columns)}}function Ni(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",6),e.SDv(1,7),e.qZA())}function Vo(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.Oqu(t.dev)}}function $o(n,s){1&n&&e.YNc(0,Vo,2,1,"span",8),2&n&&e.Q6J("ngForOf",s.value)}function Vs(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&n){const t=e.oxw().value,o=e.oxw();e.xp6(1),e.hij("> ",e.xi3(2,1,t.min,o.translationMapping),"")}}function qs(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&n){const t=e.oxw().value,o=e.oxw();e.xp6(1),e.hij("< ",e.xi3(2,1,t.max,o.translationMapping),"")}}function dl(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.ALo(2,"i18nPlural"),e.qZA()),2&n){const t=e.oxw().value,o=e.oxw();e.xp6(1),e.AsE("",t.min," to ",e.xi3(2,2,t.max,o.translationMapping),"")}}function ga(n,s){if(1&n&&(e.YNc(0,Vs,3,4,"span",9),e.YNc(1,qs,3,4,"span",9),e.YNc(2,dl,3,5,"span",9)),2&n){const t=s.value;e.Q6J("ngIf",t.min&&!t.max),e.xp6(1),e.Q6J("ngIf",t.max&&!t.min),e.xp6(1),e.Q6J("ngIf",t.max&&t.min)}}function sa(n,s){1&n&&e._uU(0),2&n&&e.hij(" ",s.value,"\n")}let Pa=(()=>{class n{constructor(t,o,c){this.hostService=t,this.datePipe=o,this.osdService=c,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){this.columns=[{prop:"devid",name:"Device ID",minWidth:200},{prop:"state",name:"State of Health",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{good:{value:"Good",class:"badge-success"},warning:{value:"Warning",class:"badge-warning"},bad:{value:"Bad",class:"badge-danger"},stale:{value:"Stale",class:"badge-info"},unknown:{value:"Unknown",class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:"Life Expectancy",cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:"Prediction Creation Date",cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:"Device Name",cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:"Daemons"}]}ngOnChanges(){const t=o=>this.devices=o;this.hostname?this.hostService.getDevices(this.hostname).subscribe(t):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ql),e.Y36(_.uU),e.Y36(Ji))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-device-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Pn,7),e.Gf(Rn,7),e.Gf(sr,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.locationTemplate=c.first),e.iGM(c=e.CRH())&&(o.lifeExpectancyTemplate=c.first),e.iGM(c=e.CRH())&&(o.lifeExpectancyTimestampTemplate=c.first)}},inputs:{hostname:"hostname",osdId:"osdId"},features:[e.TTD],decls:8,vars:2,consts:function(){let s;return s="Neither hostname nor OSD ID given",[[3,"data","columns",4,"ngIf"],["type","warning",4,"ngIf"],["deviceLocation",""],["lifeExpectancy",""],["lifeExpectancyTimestamp",""],[3,"data","columns"],["type","warning"],s,[4,"ngFor","ngForOf"],[4,"ngIf"]]},template:function(t,o){1&t&&(e.YNc(0,jr,1,2,"cd-table",0),e.YNc(1,Ni,2,0,"cd-alert-panel",1),e.YNc(2,$o,1,1,"ng-template",null,2,e.W1O),e.YNc(4,ga,3,3,"ng-template",null,3,e.W1O),e.YNc(6,sa,1,1,"ng-template",null,4,e.W1O)),2&t&&(e.Q6J("ngIf",o.hostname||null!==o.osdId),e.xp6(1),e.Q6J("ngIf",""===o.hostname&&null===o.osdId))},directives:[_.O5,Hs.a,Jt.G,_.sg],pipes:[_.Gx],styles:[""]}),n})();var ol=i(30490);function Eu(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",2),e.SDv(1,3),e.qZA())}function wa(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,4),e._UZ(2,"cd-doc",5),e.N_p(),e.qZA())}let au=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-orchestrator-doc-panel"]],inputs:{missingFeatures:"missingFeatures"},decls:3,vars:2,consts:function(){let s,t;return s="The feature is not supported in the current Orchestrator.",t="Orchestrator is not available. Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " on how to configure and enable the functionality.",[["type","info",4,"ngIf","ngIfElse"],["elseBlock",""],["type","info"],s,t,["section","orch"]]},template:function(t,o){if(1&t&&(e.YNc(0,Eu,2,0,"cd-alert-panel",0),e.YNc(1,wa,3,0,"ng-template",null,1,e.W1O)),2&t){const c=e.MAs(2);e.Q6J("ngIf",o.missingFeatures)("ngIfElse",c)}},directives:[_.O5,Jt.G,ol.K],styles:[""]}),n})(),mu=(()=>{class n{constructor(t,o,c,g,C,D){this.authStorageService=t,this.dimlessBinary=o,this.modalService=c,this.notificationService=g,this.orchService=C,this.hostService=D,this.devices=[],this.showAvailDeviceOnly=!1,this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new e.vpe,this.fetchInventory=new e.vpe,this.icons=No.P,this.columns=[],this.selection=new hl.r,this.orchStatus=void 0,this.actionOrchFeatures={identify:[fu.DEVICE_BLINK_LIGHT]}}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:No.P.show,click:()=>this.identifyDevice(),name:"Identify",disable:o=>this.getDisable("identify",o),canBePrimary:o=>!o.hasSingleSelection,visible:()=>Ar().isString(this.selectionType)}];const t=[{name:"Hostname",prop:"hostname",flexGrow:1},{name:"Device path",prop:"path",flexGrow:1},{name:"Type",prop:"human_readable_type",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:"Available",prop:"available",flexGrow:1,cellClass:"text-center",cellTransformation:Ja.e.checkIcon},{name:"Vendor",prop:"sys_api.vendor",flexGrow:1},{name:"Model",prop:"sys_api.model",flexGrow:1},{name:"Size",prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:"OSDs",prop:"osd_ids",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=t.filter(o=>!this.hiddenColumns.includes(o.prop)),Ar().forEach(this.filterColumns,o=>{const c=Ar().find(this.columns,{prop:o});c&&(c.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}getDevices(){this.showAvailDeviceOnly?this.hostService.inventoryDeviceList().subscribe(t=>{this.devices=Ar().filter(t,"available"),this.devices=[...this.devices]},()=>{this.devices=[]}):this.devices=[...this.devices]}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(t){this.filterChange.emit(t)}getDisable(t,o){return!o.hasSingleSelection||this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[t])}updateSelection(t){this.selection=t}identifyDevice(){const t=this.selection.first(),o=t.hostname,c=t.path||t.device_id;this.modalService.show(Vd.X,{titleText:"Identify device " + c + "",message:"Please enter the duration how long to blink the LED.",fields:[{type:"select",name:"duration",value:300,required:!0,typeConfig:{options:[{text:"1 minute",value:60},{text:"2 minutes",value:120},{text:"5 minutes",value:300},{text:"10 minutes",value:600},{text:"15 minutes",value:900}]}}],submitButtonText:"Execute",onSubmit:g=>{this.hostService.identifyDevice(o,c,g.duration).subscribe(()=>{this.notificationService.show(_a.k.success,"Identifying '" + c + "' started on host '" + o + "'")})}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(yn.$),e.Y36(Ul.Z),e.Y36(ll.g),e.Y36(Cc),e.Y36(ql))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-inventory-devices"]],viewQuery:function(t,o){if(1&t&&e.Gf(Hs.a,7),2&t){let c;e.iGM(c=e.CRH())&&(o.table=c.first)}},inputs:{devices:"devices",showAvailDeviceOnly:"showAvailDeviceOnly",hiddenColumns:"hiddenColumns",filterColumns:"filterColumns",selectionType:"selectionType",orchStatus:"orchStatus"},outputs:{filterChange:"filterChange",fetchInventory:"fetchInventory"},decls:2,vars:8,consts:[["identifier","uid","columnMode","flex",3,"data","columns","forceIdentifier","selectionType","searchField","fetchData","updateSelection","columnFiltersChanged"],[1,"table-actions",3,"permission","selection","tableActions"]],template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0),e.NdJ("fetchData",function(){return o.getDevices()})("updateSelection",function(g){return o.updateSelection(g)})("columnFiltersChanged",function(g){return o.onColumnFiltersChanged(g)}),e._UZ(1,"cd-table-actions",1),e.qZA()),2&t&&(e.Q6J("data",o.devices)("columns",o.columns)("forceIdentifier",!0)("selectionType",o.selectionType)("searchField",!1),e.xp6(1),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions))},directives:[Hs.a,Xs.K],styles:[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]}),n})();function xc(n,s){1&n&&e._UZ(0,"cd-orchestrator-doc-panel")}const ic=function(){return[]},gf=function(){return["hostname"]};function Ga(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"legend"),e.SDv(2,1),e.qZA(),e.TgZ(3,"div",2),e.TgZ(4,"div",3),e.TgZ(5,"cd-inventory-devices",4),e.NdJ("fetchInventory",function(){return e.CHM(t),e.oxw().refresh()}),e.qZA(),e.qZA(),e.qZA(),e.BQk()}if(2&n){const t=e.oxw();e.xp6(5),e.Q6J("devices",t.devices)("hiddenColumns",void 0===t.hostname?e.DdM(3,ic):e.DdM(4,gf))("orchStatus",t.orchStatus)}}let X=(()=>{class n{constructor(t,o,c){this.orchService=t,this.hostService=o,this.ngZone=c,this.reloadInterval=5e3,this.firstRefresh=!0,this.icons=No.P,this.showDocPanel=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(t=>{this.orchStatus=t,this.showDocPanel=!t.available,t.available&&this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=(0,V.H)(this.reloadInterval,this.reloadInterval).subscribe(()=>{this.ngZone.run(()=>{this.getInventory(!1)})})})})}ngOnDestroy(){var t;null===(t=this.reloadSubscriber)||void 0===t||t.unsubscribe()}ngOnChanges(){var t;(null===(t=this.orchStatus)||void 0===t?void 0:t.available)&&(this.devices=[],this.getInventory(!1))}getInventory(t){""!==this.hostname&&this.hostService.inventoryDeviceList(this.hostname,t).subscribe(o=>{this.devices=o},()=>{this.devices=[]})}refresh(){this.getInventory(!this.firstRefresh),this.firstRefresh=!1}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Cc),e.Y36(ql),e.Y36(e.R0b))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-inventory"]],inputs:{hostname:"hostname"},features:[e.TTD],decls:2,vars:2,consts:function(){let s;return s="Physical Disks",[[4,"ngIf"],s,[1,"row"],[1,"col-md-12"],["selectionType","single",3,"devices","hiddenColumns","orchStatus","fetchInventory"]]},template:function(t,o){1&t&&(e.YNc(0,xc,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,Ga,6,5,"ng-container",0)),2&t&&(e.Q6J("ngIf",o.showDocPanel),e.xp6(1),e.Q6J("ngIf",null==o.orchStatus?null:o.orchStatus.available))},directives:[_.O5,au,mu],styles:[""]}),n})();var ye=i(15257);let nt=class{constructor(s){this.http=s,this.url="api/daemon"}action(s,t){return this.http.put(`${this.url}/${s}`,{action:t,container_image:null},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"},observe:"response"})}};nt.\u0275fac=function(s){return new(s||nt)(e.LFG(y.eN))},nt.\u0275prov=e.Yz7({token:nt,factory:nt.\u0275fac,providedIn:"root"}),nt=(0,ha.gn)([_u.o,(0,ha.w6)("design:paramtypes",[y.eN])],nt);var bt=i(90068);let Qt=(()=>{class n{constructor(t){this.http=t,this.url="api/service"}list(t){const o=t?{params:(new y.LE).set("service_name",t)}:{};return this.http.get(this.url,o)}getDaemons(t){return this.http.get(`${this.url}/${t}/daemons`)}create(t){return this.http.post(this.url,{service_name:t.service_id?`${t.service_type}.${t.service_id}`:t.service_type,service_spec:t},{observe:"response"})}update(t){const o=t.service_id?`${t.service_type}.${t.service_id}`:t.service_type;return this.http.put(`${this.url}/${o}`,{service_name:o,service_spec:t},{observe:"response"})}delete(t){return this.http.delete(`${this.url}/${t}`,{observe:"response"})}getKnownTypes(){return this.http.get(`${this.url}/known_types`)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var fr=i(37496);const vi=["statusTpl"],ps=["listTpl"],xa=["cpuTpl"],ia=["daemonsTable"];function _l(n,s){1&n&&e._UZ(0,"cd-orchestrator-doc-panel")}function Jl(n,s){1&n&&e.GkF(0)}function Wc(n,s){if(1&n&&(e.TgZ(0,"div"),e.YNc(1,Jl,1,0,"ng-container",7),e.qZA()),2&n){e.oxw();const t=e.MAs(9);e.xp6(1),e.Q6J("ngTemplateOutlet",t)}}function Kf(n,s){1&n&&e.GkF(0)}function Ld(n,s){if(1&n&&e.YNc(0,Kf,1,0,"ng-container",7),2&n){e.oxw(2);const t=e.MAs(9);e.Q6J("ngTemplateOutlet",t)}}function $p(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",18,19),e.NdJ("fetchData",function(c){return e.CHM(t),e.oxw(3).getServices(c)}),e.qZA()}if(2&n){const t=e.oxw(3);e.Q6J("data",t.services)("columns",t.serviceColumns)}}function Hp(n,s){if(1&n&&e.YNc(0,$p,2,2,"cd-table",17),2&n){const t=e.oxw(2);e.Q6J("ngIf",t.hasOrchestrator)}}function mf(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",8,9),e.TgZ(3,"li",10),e.TgZ(4,"a",11),e.SDv(5,12),e.qZA(),e.YNc(6,Ld,1,1,"ng-template",13),e.qZA(),e.TgZ(7,"li",14),e.TgZ(8,"a",11),e.SDv(9,15),e.qZA(),e.YNc(10,Hp,1,1,"ng-template",13),e.qZA(),e.qZA(),e._UZ(11,"div",16),e.BQk()),2&n){const t=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",t)}}function $f(n,s){if(1&n&&(e.TgZ(0,"span",20),e.ALo(1,"pipeFunction"),e._uU(2),e.qZA()),2&n){const t=s.row,o=e.oxw();e.Q6J("ngClass",e.xi3(1,2,t,o.getStatusClass)),e.xp6(2),e.hij(" ",t.status_desc," ")}}const dd=function(n){return[n]};function Fd(n,s){if(1&n&&(e.TgZ(0,"span"),e._UZ(1,"i",27),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,dd,t.icons.infoCircle))}}function fp(n,s){if(1&n&&(e.TgZ(0,"span"),e._UZ(1,"i",27),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.Q6J("ngClass",e.VKq(1,dd,t.icons.warning))}}function fl(n,s){if(1&n&&(e.TgZ(0,"li",25),e.TgZ(1,"b"),e._uU(2),e.ALo(3,"relativeDate"),e.qZA(),e.TgZ(4,"span",26),e._uU(5),e.qZA(),e._UZ(6,"br"),e.YNc(7,Fd,2,3,"span",0),e.YNc(8,fp,2,3,"span",0),e._uU(9),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.hij("",e.lcZ(3,5,t.created)," - "),e.xp6(3),e.Oqu(t.subject),e.xp6(2),e.Q6J("ngIf","INFO"===t.level),e.xp6(1),e.Q6J("ngIf","ERROR"===t.level),e.xp6(1),e.hij(" ",t.message," ")}}function Kh(n,s){if(1&n&&(e.TgZ(0,"ul",23),e.YNc(1,fl,10,7,"li",24),e.qZA()),2&n){const t=e.oxw().value,o=e.oxw();e.xp6(1),e.Q6J("ngForOf",t)("ngForTrackBy",o.trackByFn)}}function F_(n,s){1&n&&(e.TgZ(0,"div",25),e.TgZ(1,"span"),e._uU(2,"No data available"),e.qZA(),e.qZA())}function Hf(n,s){if(1&n&&e.YNc(0,F_,3,0,"div",28),2&n){const t=e.oxw().value;e.Q6J("ngIf",0===(null==t?null:t.length))}}function kd(n,s){if(1&n&&(e.YNc(0,Kh,2,2,"ul",21),e.YNc(1,Hf,1,1,"ng-template",null,22,e.W1O)),2&n){const t=s.value,o=e.MAs(2);e.Q6J("ngIf",null==t?null:t.length)("ngIfElse",o)}}function Uf(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",30,31),e.NdJ("fetchData",function(c){return e.CHM(t),e.oxw(2).getDaemons(c)})("updateSelection",function(c){return e.CHM(t),e.oxw(2).updateSelection(c)}),e._UZ(2,"cd-table-actions",32),e.qZA()}if(2&n){const t=e.oxw(2);e.Q6J("data",t.daemons)("columns",t.columns),e.xp6(2),e.Q6J("selection",t.selection)("permission",t.permissions.hosts)("tableActions",t.tableActions)}}function Kp(n,s){if(1&n&&e.YNc(0,Uf,3,5,"cd-table",29),2&n){const t=e.oxw();e.Q6J("ngIf",t.hasOrchestrator)}}function Ed(n,s){if(1&n&&e._UZ(0,"cd-usage-bar",33),2&n){const t=s.row,o=e.oxw();e.Q6J("total",o.total)("calculatePerc",!1)("used",t.cpu_percentage)("isBinary",!1)("warningThreshold",o.warningThreshold)("errorThreshold",o.errorThreshold)}}let Ah=(()=>{class n{constructor(t,o,c,g,C,D,P,j,W){this.hostService=t,this.cephServiceService=o,this.orchService=c,this.relativeDatePipe=g,this.dimlessBinary=C,this.actionLabels=D,this.authStorageService=P,this.daemonService=j,this.notificationService=W,this.hiddenColumns=[],this.total=100,this.warningThreshold=.8,this.errorThreshold=.9,this.icons=No.P,this.daemons=[],this.services=[],this.columns=[],this.serviceColumns=[],this.selection=new hl.r,this.hasOrchestrator=!1,this.showDocPanel=!1}ngOnInit(){this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"update",icon:No.P.start,click:()=>this.daemonAction("start"),name:this.actionLabels.START,disable:()=>this.actionDisabled("start")},{permission:"update",icon:No.P.stop,click:()=>this.daemonAction("stop"),name:this.actionLabels.STOP,disable:()=>this.actionDisabled("stop")},{permission:"update",icon:No.P.restart,click:()=>this.daemonAction("restart"),name:this.actionLabels.RESTART,disable:()=>this.actionDisabled("restart")},{permission:"update",icon:No.P.deploy,click:()=>this.daemonAction("redeploy"),name:this.actionLabels.REDEPLOY,disable:()=>this.actionDisabled("redeploy")}],this.columns=[{name:"Hostname",prop:"hostname",flexGrow:2,filterable:!0},{name:"Daemon name",prop:"daemon_name",flexGrow:1,filterable:!0},{name:"Version",prop:"version",flexGrow:1,filterable:!0},{name:"Status",prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:"Last Refreshed",prop:"last_refresh",pipe:this.relativeDatePipe,flexGrow:1},{name:"CPU Usage",prop:"cpu_percentage",flexGrow:1,cellTemplate:this.cpuTpl},{name:"Memory Usage",prop:"memory_usage",flexGrow:1,pipe:this.dimlessBinary,cellClass:"text-right"},{name:"Daemon Events",prop:"events",flexGrow:2,cellTemplate:this.listTpl}],this.serviceColumns=[{name:"Service Name",prop:"service_name",flexGrow:2,filterable:!0},{name:"Service Type",prop:"service_type",flexGrow:1,filterable:!0},{name:"Service Events",prop:"events",flexGrow:5,cellTemplate:this.listTpl}],this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.showDocPanel=!t.available}),this.columns=this.columns.filter(t=>!this.hiddenColumns.includes(t.prop))}ngOnChanges(){Ar().isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(t=>{this.daemonsTable=t.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe(),this.serviceSub&&this.serviceSub.unsubscribe()}getStatusClass(t){return Ar().get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},t.status,"badge-dark")}getDaemons(t){let o;if(this.hostname)o=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);o=this.cephServiceService.getDaemons(this.serviceName)}o.subscribe(c=>{this.daemons=c,this.sortDaemonEvents()},()=>{this.daemons=[],t.error()})}sortDaemonEvents(){this.daemons.forEach(t=>{var o;null===(o=t.events)||void 0===o||o.sort((c,g)=>new Date(g.created).getTime()-new Date(c.created).getTime())})}getServices(t){this.serviceSub=this.cephServiceService.list(this.serviceName).subscribe(o=>{this.services=o},()=>{this.services=[],t.error()})}trackByFn(t,o){return o.created}updateSelection(t){this.selection=t}daemonAction(t){var o;this.daemonService.action(null===(o=this.selection.first())||void 0===o?void 0:o.daemon_name,t).pipe((0,ye.q)(1)).subscribe({next:c=>{this.notificationService.show(_a.k.success,`Daemon ${t} scheduled`,c.body.toString())},error:c=>{this.notificationService.show(_a.k.error,"Daemon action failed",c.body.toString())}})}actionDisabled(t){var o;if(null===(o=this.selection)||void 0===o?void 0:o.hasSelection){const c=this.selection.selected[0];if("mon"===c.daemon_type||"mgr"===c.daemon_type)return!0;switch(t){case"start":if("running"===c.status_desc)return!0;break;case"stop":if("stopped"===c.status_desc)return!0}return!1}return!0}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ql),e.Y36(Qt),e.Y36(Cc),e.Y36(bt.h),e.Y36(yn.$),e.Y36(ki.p4),e.Y36(_t.j),e.Y36(nt),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-service-daemon-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(vi,7),e.Gf(ps,7),e.Gf(xa,7),e.Gf(ia,5)),2&t){let c;e.iGM(c=e.CRH())&&(o.statusTpl=c.first),e.iGM(c=e.CRH())&&(o.listTpl=c.first),e.iGM(c=e.CRH())&&(o.cpuTpl=c.first),e.iGM(c=e.CRH())&&(o.daemonsTableTpls=c)}},inputs:{serviceName:"serviceName",hostname:"hostname",hiddenColumns:"hiddenColumns",flag:"flag"},features:[e.TTD],decls:12,vars:3,consts:function(){let s,t;return s="Details",t="Service Events",[[4,"ngIf"],[4,"ngIf","ngIfElse"],["serviceDetailsTpl",""],["statusTpl",""],["listTpl",""],["serviceDaemonDetailsTpl",""],["cpuTpl",""],[4,"ngTemplateOutlet"],["ngbNav","","cdStatefulTab","service-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","service_events"],t,[3,"ngbNavOutlet"],["columnMode","flex",3,"data","columns","fetchData",4,"ngIf"],["columnMode","flex",3,"data","columns","fetchData"],["serviceTable",""],[1,"badge",3,"ngClass"],["class","list-group list-group-flush",4,"ngIf","ngIfElse"],["noEventsAvailable",""],[1,"list-group","list-group-flush"],["class","list-group-item",4,"ngFor","ngForOf","ngForTrackBy"],[1,"list-group-item"],[1,"badge","badge-info"],["aria-hidden","true",3,"ngClass"],["class","list-group-item",4,"ngIf"],["selectionType","single","columnMode","flex","identifier","daemon_name",3,"data","columns","fetchData","updateSelection",4,"ngIf"],["selectionType","single","columnMode","flex","identifier","daemon_name",3,"data","columns","fetchData","updateSelection"],["daemonsTable",""],["id","service-daemon-list-actions",1,"table-actions",3,"selection","permission","tableActions"],[3,"total","calculatePerc","used","isBinary","warningThreshold","errorThreshold"]]},template:function(t,o){if(1&t&&(e.YNc(0,_l,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,Wc,2,1,"div",1),e.YNc(2,mf,12,1,"ng-template",null,2,e.W1O),e.YNc(4,$f,3,5,"ng-template",null,3,e.W1O),e.YNc(6,kd,3,2,"ng-template",null,4,e.W1O),e.YNc(8,Kp,1,1,"ng-template",null,5,e.W1O),e.YNc(10,Ed,1,6,"ng-template",null,6,e.W1O)),2&t){const c=e.MAs(3);e.Q6J("ngIf",o.showDocPanel),e.xp6(1),e.Q6J("ngIf","hostDetails"===o.flag)("ngIfElse",c)}},directives:[_.O5,au,_.tP,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,Hs.a,_.mk,_.sg,Xs.K,co.O],pipes:[fr.i,bt.h],styles:[".fa-info-circle[_ngcontent-%COMP%]{color:#2b99a8}.fa-exclamation-triangle[_ngcontent-%COMP%]{color:#ef5c55}.list-group-item[_ngcontent-%COMP%]{background-color:transparent;border-width:0}"]}),n})();var qp=i(8958);const eh=["innerNav"];function Oh(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",5),e.SDv(1,6),e.qZA())}function th(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",7),e.SDv(1,8),e.qZA())}function Td(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",10),e.SDv(1,11),e.qZA())}function xf(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",20),e._uU(2),e.qZA(),e.BQk()),2&n){const t=e.oxw(2).$implicit;e.xp6(2),e.Oqu(t.value.userMessage)}}function wh(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",23),e.SDv(1,24),e.qZA())}function Up(n,s){1&n&&(e.ynx(0),e.TgZ(1,"cd-alert-panel",26),e.SDv(2,27),e.qZA(),e.BQk())}function nh(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",28),e.SDv(1,29),e.qZA())}function xh(n,s){if(1&n&&(e.YNc(0,Up,3,0,"ng-container",0),e.YNc(1,nh,2,0,"ng-template",null,25,e.W1O)),2&n){const t=e.MAs(2),o=e.oxw(3).$implicit;e.Q6J("ngIf",o.value.info.smart_status.passed)("ngIfElse",t)}}function vf(n,s){if(1&n&&(e.YNc(0,wh,2,0,"cd-alert-panel",21),e.ALo(1,"pipeFunction"),e.YNc(2,xh,3,2,"ng-template",null,22,e.W1O)),2&n){const t=e.MAs(3),o=e.oxw(2).$implicit,c=e.oxw(4);e.Q6J("ngIf",e.xi3(1,2,null==o.value.info?null:o.value.info.smart_status,c.isEmpty))("ngIfElse",t)}}function Dh(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",36),2&n){const t=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",t.value.info)}}function $d(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",37),e.SDv(1,38),e.qZA())}function pp(n,s){if(1&n&&(e.YNc(0,Dh,1,2,"cd-table-key-value",34),e.ALo(1,"pipeFunction"),e.YNc(2,$d,2,0,"cd-alert-panel",35),e.ALo(3,"pipeFunction")),2&n){const t=e.oxw(3).$implicit,o=e.oxw(4);e.Q6J("ngIf",!e.xi3(1,2,t.value.info,o.isEmpty)),e.xp6(2),e.Q6J("ngIf",e.xi3(3,5,t.value.info,o.isEmpty))}}function Bf(n,s){if(1&n&&e._UZ(0,"cd-table",42),2&n){const t=e.oxw(4).$implicit,o=e.oxw(4);e.Q6J("data",t.value.smart.attributes.table)("columns",o.smartDataColumns)}}function Kd(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",43),2&n){const t=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",t.value.smart)}}function oc(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",43),2&n){const t=e.oxw(4).$implicit;e.Q6J("renderObjects",!0)("data",t.value.smart.nvmeData)}}function rh(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",44),e.SDv(1,45),e.qZA())}function k_(n,s){if(1&n&&(e.YNc(0,Bf,1,2,"cd-table",39),e.YNc(1,Kd,1,2,"cd-table-key-value",40),e.YNc(2,oc,1,2,"cd-table-key-value",40),e.YNc(3,rh,2,0,"cd-alert-panel",41)),2&n){const t=e.oxw(3).$implicit;e.Q6J("ngIf",null==t.value.smart?null:t.value.smart.attributes),e.xp6(1),e.Q6J("ngIf",null==t.value.smart?null:t.value.smart.scsi_error_counter_log),e.xp6(1),e.Q6J("ngIf",null==t.value.smart?null:t.value.smart.nvmeData),e.xp6(1),e.Q6J("ngIf",!(null!=t.value.smart&&t.value.smart.attributes||null!=t.value.smart&&t.value.smart.nvmeData||null!=t.value.smart&&t.value.smart.scsi_error_counter_log))}}function qh(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",12,30),e.TgZ(3,"li",31),e.TgZ(4,"a",17),e.SDv(5,32),e.qZA(),e.YNc(6,pp,4,8,"ng-template",18),e.qZA(),e.TgZ(7,"li",31),e.TgZ(8,"a",17),e.SDv(9,33),e.qZA(),e.YNc(10,k_,4,4,"ng-template",18),e.qZA(),e.qZA(),e._UZ(11,"div",15),e.BQk()),2&n){const t=e.MAs(2);e.xp6(3),e.Q6J("ngbNavItem",1),e.xp6(4),e.Q6J("ngbNavItem",2),e.xp6(4),e.Q6J("ngbNavOutlet",t)}}function Y(n,s){if(1&n&&(e.YNc(0,xf,3,1,"ng-container",0),e.YNc(1,vf,4,5,"ng-template",null,19,e.W1O),e.YNc(3,qh,12,3,"ng-container",4),e.ALo(4,"pipeFunction"),e.ALo(5,"pipeFunction")),2&n){const t=e.MAs(2),o=e.oxw().$implicit,c=e.oxw(4);e.Q6J("ngIf",o.value.error)("ngIfElse",t),e.xp6(3),e.Q6J("ngIf",!e.xi3(4,3,o.value.info,c.isEmpty)||!e.xi3(5,6,o.value.smart,c.isEmpty))}}function fe(n,s){if(1&n&&(e.TgZ(0,"li",16),e.TgZ(1,"a",17),e._uU(2),e.qZA(),e.YNc(3,Y,6,9,"ng-template",18),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.AsE("",t.value.device," (",t.value.identifier,")")}}function w(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",12,13),e.YNc(3,fe,4,2,"li",14),e.ALo(4,"keyvalue"),e.qZA(),e._UZ(5,"div",15),e.BQk()),2&n){const t=e.MAs(2),o=e.oxw(3);e.xp6(3),e.Q6J("ngForOf",e.lcZ(4,2,o.data)),e.xp6(2),e.Q6J("ngbNavOutlet",t)}}function q(n,s){if(1&n&&(e.ynx(0),e.YNc(1,Td,2,0,"cd-alert-panel",9),e.ALo(2,"pipeFunction"),e.YNc(3,w,6,4,"ng-container",4),e.ALo(4,"pipeFunction"),e.BQk()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf",e.xi3(2,2,t.data,t.isEmpty)),e.xp6(2),e.Q6J("ngIf",!e.xi3(4,5,t.data,t.isEmpty))}}function Fe(n,s){if(1&n&&(e.ynx(0),e.YNc(1,Oh,2,0,"cd-alert-panel",2),e.YNc(2,th,2,0,"cd-alert-panel",3),e.YNc(3,q,5,8,"ng-container",4),e.BQk()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf",t.error),e.xp6(1),e.Q6J("ngIf",t.incompatible),e.xp6(1),e.Q6J("ngIf",!t.error&&!t.incompatible)}}function ut(n,s){1&n&&(e.TgZ(0,"cd-loading-panel"),e.SDv(1,46),e.qZA())}let Xn=(()=>{class n{constructor(t,o){this.osdService=t,this.hostService=o,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={},this.isEmpty=Ar().isEmpty}isSmartError(t){return void 0!==Ar().get(t,"error")}isNvmeSmartData(t){return"nvme"===Ar().get(t,"device.protocol","").toLowerCase()}isAtaSmartData(t){return"ata"===Ar().get(t,"device.protocol","").toLowerCase()}isIscsiSmartData(t){return"scsi"===Ar().get(t,"device.protocol","").toLowerCase()}fetchData(t){const o={};Ar().each(t,(c,g)=>{if(this.isSmartError(c)){let C="";C=-22===c.smartctl_error_code?"Smartctl has received an unknown argument (error code " + c.smartctl_error_code + "). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code " + c.smartctl_error_code + " occurred.",o[g]={error:c.error,smartctl_error_code:c.smartctl_error_code,smartctl_output:c.smartctl_output,userMessage:C,device:c.dev,identifier:c.nvme_vendor}}else 1!==c.json_format_version[0]?this.incompatible=!0:this.isAtaSmartData(c)?o[g]=this.extractAtaData(c):this.isIscsiSmartData(c)?o[g]=this.extractIscsiData(c):this.isNvmeSmartData(c)&&(o[g]=this.extractNvmeData(c))}),this.data=o,this.loading=!1}extractNvmeData(t){return{info:Ar().omitBy(t,(c,g)=>["nvme_smart_health_information_log"].includes(g)),smart:{nvmeData:t.nvme_smart_health_information_log},device:t.device.name,identifier:t.serial_number}}extractIscsiData(t){const o=Ar().omitBy(t,(c,g)=>["scsi_error_counter_log","scsi_grown_defect_list"].includes(g));return{info:o,smart:{scsi_error_counter_log:t.scsi_error_counter_log,scsi_grown_defect_list:t.scsi_grown_defect_list},device:o.device.name,identifier:o.serial_number}}extractAtaData(t){const o=Ar().omitBy(t,(c,g)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(g));return{info:o,smart:{attributes:t.ata_smart_attributes,data:t.ata_smart_data},device:o.device.name,identifier:o.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe({next:this.fetchData.bind(this),error:t=>{t.preventDefault(),this.error=t,this.loading=!1}}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe({next:this.fetchData.bind(this),error:t=>{t.preventDefault(),this.error=t,this.loading=!1}})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:"ID"},{prop:"name",name:"Name"},{prop:"raw.value",name:"Raw"},{prop:"thresh",name:"Threshold"},{prop:"value",name:"Value"},{prop:"when_failed",name:"When Failed"},{prop:"worst",name:"Worst"}],this.scsiSmartDataColumns=[{prop:"correction_algorithm_invocations",name:"Correction Algorithm Invocations"},{prop:"errors_corrected_by_eccdelayed",name:"Errors Corrected by ECC (Delayed)"},{prop:"errors_corrected_by_eccfast",name:"Errors Corrected by ECC (Fast)"},{prop:"errors_corrected_by_rereads_rewrites",name:"Errors Corrected by Rereads/Rewrites"},{prop:"gigabytes_processed",name:"Gigabyes Processed"},{prop:"total_errors_corrected",name:"Total Errors Corrected"},{prop:"total_uncorrected_errors",name:"Total Errors Uncorrected"}]}ngOnChanges(t){this.data={},t.osdId?this.osdId=t.osdId.currentValue:t.hostname&&(this.hostname=t.hostname.currentValue),this.updateData()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Ji),e.Y36(ql))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-smart-list"]],viewQuery:function(t,o){if(1&t&&e.Gf(eh,5),2&t){let c;e.iGM(c=e.CRH())&&(o.nav=c.first)}},inputs:{osdId:"osdId",hostname:"hostname"},features:[e.TTD],decls:3,vars:2,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e;return s="Failed to retrieve SMART data.",t="The data received has the JSON format version 2.x and is currently incompatible with the dashboard.",o="No SMART data available.",c="SMART overall-health self-assessment test result",g="unknown",C="SMART overall-health self-assessment test result",D="passed",P="SMART overall-health self-assessment test result",j="failed",W="Device Information",re="SMART",ie="No device information available for this device.",ge="No SMART data available for this device.",_e="SMART data is loading.",[[4,"ngIf","ngIfElse"],["isLoading",""],["type","error",4,"ngIf"],["type","warning",4,"ngIf"],[4,"ngIf"],["type","error"],s,["type","warning"],t,["type","info",4,"ngIf"],["type","info"],o,["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","",4,"ngFor","ngForOf"],[3,"ngbNavOutlet"],["ngbNavItem",""],["ngbNavLink",""],["ngbNavContent",""],["noError",""],["id","alert-error","type","warning"],["id","alert-self-test-unknown","size","slim","type","warning","title",c,4,"ngIf","ngIfElse"],["hasSmartStatus",""],["id","alert-self-test-unknown","size","slim","type","warning","title",c],g,["selfTestFailed",""],["id","alert-self-test-passed","size","slim","type","info","title",C],D,["id","alert-self-test-failed","size","slim","type","warning","title",P],j,["innerNav","ngbNav"],[3,"ngbNavItem"],W,re,[3,"renderObjects","data",4,"ngIf"],["id","alert-device-info-unavailable","type","info",4,"ngIf"],[3,"renderObjects","data"],["id","alert-device-info-unavailable","type","info"],ie,["updateSelectionOnRefresh","never",3,"data","columns",4,"ngIf"],["updateSelectionOnRefresh","never",3,"renderObjects","data",4,"ngIf"],["id","alert-device-smart-data-unavailable","type","info",4,"ngIf"],["updateSelectionOnRefresh","never",3,"data","columns"],["updateSelectionOnRefresh","never",3,"renderObjects","data"],["id","alert-device-smart-data-unavailable","type","info"],ge,_e]},template:function(t,o){if(1&t&&(e.YNc(0,Fe,4,3,"ng-container",0),e.YNc(1,ut,2,0,"ng-template",null,1,e.W1O)),2&t){const c=e.MAs(2);e.Q6J("ngIf",!o.loading)("ngIfElse",c)}},directives:[_.O5,Jt.G,lt.Pz,_.sg,lt.tO,lt.nv,lt.Vx,lt.uN,Vr.b,Hs.a,qp.b],pipes:[fr.i,_.Nd],styles:[""]}),n})();function Fr(n,s){if(1&n&&e._UZ(0,"cd-device-list",14),2&n){const t=e.oxw(2);e.Q6J("hostname",t.selection.hostname)}}function gi(n,s){if(1&n&&e._UZ(0,"cd-inventory",14),2&n){const t=e.oxw(3);e.Q6J("hostname",t.selectedHostname)}}function Wi(n,s){1&n&&(e.TgZ(0,"li",15),e.TgZ(1,"a",5),e.SDv(2,16),e.qZA(),e.YNc(3,gi,1,1,"ng-template",7),e.qZA())}const Po=function(){return["hostname"]};function Ns(n,s){if(1&n&&e._UZ(0,"cd-service-daemon-list",19),2&n){const t=e.oxw(3);e.Q6J("hostname",t.selectedHostname)("hiddenColumns",e.DdM(2,Po))}}function ts(n,s){1&n&&(e.TgZ(0,"li",17),e.TgZ(1,"a",5),e.SDv(2,18),e.qZA(),e.YNc(3,Ns,1,3,"ng-template",7),e.qZA())}function Is(n,s){if(1&n&&e._UZ(0,"cd-grafana",22),2&n){const t=e.oxw(3);e.Q6J("grafanaPath","host-details?var-ceph_hosts="+t.selectedHostname)("type","metrics")}}function ya(n,s){1&n&&(e.TgZ(0,"li",20),e.TgZ(1,"a",5),e.SDv(2,21),e.qZA(),e.YNc(3,Is,1,2,"ng-template",7),e.qZA())}function zs(n,s){if(1&n&&e._UZ(0,"cd-smart-list",14),2&n){const t=e.oxw(3);e.Q6J("hostname",t.selectedHostname)}}function _c(n,s){if(1&n&&e.YNc(0,zs,1,1,"cd-smart-list",23),2&n){const t=e.oxw(2),o=e.MAs(2);e.Q6J("ngIf",t.selectedHostname)("ngIfElse",o)}}function rd(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",2,3),e.TgZ(3,"li",4),e.TgZ(4,"a",5),e.SDv(5,6),e.qZA(),e.YNc(6,Fr,1,1,"ng-template",7),e.qZA(),e.YNc(7,Wi,4,0,"li",8),e.YNc(8,ts,4,0,"li",9),e.YNc(9,ya,4,0,"li",10),e.TgZ(10,"li",11),e.TgZ(11,"a",5),e.SDv(12,12),e.qZA(),e.YNc(13,_c,1,2,"ng-template",7),e.qZA(),e.qZA(),e._UZ(14,"div",13),e.BQk()),2&n){const t=e.MAs(2),o=e.oxw();e.xp6(7),e.Q6J("ngIf",o.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",o.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",o.permissions.grafana.read),e.xp6(5),e.Q6J("ngbNavOutlet",t)}}function wu(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",24),e.SDv(1,25),e.qZA())}let Hd=(()=>{class n{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-host-details"]],inputs:{permissions:"permissions",selection:"selection"},decls:3,vars:1,consts:function(){let s,t,o,c,g,C;return s="Devices",t="Device health",o="Physical Disks",c="Daemons",g="Performance Details",C="No hostname found.",[[4,"ngIf"],["noHostname",""],["ngbNav","","cdStatefulTab","host-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","devices"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","inventory",4,"ngIf"],["ngbNavItem","daemons",4,"ngIf"],["ngbNavItem","performance-details",4,"ngIf"],["ngbNavItem","device-health"],t,[3,"ngbNavOutlet"],[3,"hostname"],["ngbNavItem","inventory"],o,["ngbNavItem","daemons"],c,["flag","hostDetails",3,"hostname","hiddenColumns"],["ngbNavItem","performance-details"],g,["uid","rtOg0AiWz","grafanaStyle","four",3,"grafanaPath","type"],[3,"hostname",4,"ngIf","ngIfElse"],["type","error"],C]},template:function(t,o){1&t&&(e.YNc(0,rd,15,4,"ng-container",0),e.YNc(1,wu,2,0,"ng-template",null,1,e.W1O)),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,Pa,X,Ah,it.F,Xn,Jt.G],styles:[""]}),n})();const $_=["servicesTpl"],ih=["maintenanceConfirmTpl"],oh=["orchTmpl"],hp=["flashTmpl"];function Yf(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",13,14),e.NdJ("fetchData",function(c){return e.CHM(t),e.oxw().getHosts(c)})("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e.TgZ(2,"div",15),e._UZ(3,"cd-table-actions",16),e.qZA(),e._UZ(4,"cd-host-details",17),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.hosts)("columns",t.columns)("hasDetails",t.hasTableDetails)("toolHeader",!t.hideToolHeader),e.xp6(3),e.Q6J("permission",t.permissions.hosts)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("permissions",t.permissions)("selection",t.expandedRow)}}function H_(n,s){1&n&&e._UZ(0,"cd-grafana",19),2&n&&e.Q6J("grafanaPath","host-overview?")("type","metrics")}function _g(n,s){1&n&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,18),e.qZA(),e.YNc(3,H_,1,2,"ng-template",5),e.qZA())}function _p(n,s){1&n&&(e.ynx(0),e._uU(1,"\xa0"),e.BQk())}function Sd(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",21),e._uU(2),e.qZA(),e.YNc(3,_p,2,0,"ng-container",22),e.qZA()),2&n){const t=s.$implicit,o=s.last;e.xp6(2),e.Oqu(t),e.xp6(1),e.Q6J("ngIf",!o)}}function U_(n,s){1&n&&e.YNc(0,Sd,4,2,"span",20),2&n&&e.Q6J("ngForOf",s.value)}function e_(n,s){if(1&n&&(e.TgZ(0,"ul"),e.TgZ(1,"li"),e.SDv(2,23),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(2),e.pQV(t),e.QtT(2)}}function B_(n,s){if(1&n&&(e.TgZ(0,"div"),e.YNc(1,e_,3,1,"ul",22),e.qZA()),2&n){const t=s.last,o=e.oxw(2);e.xp6(1),e.Q6J("ngIf",!t||"1"==o.errorMessage.length)}}function Jc(n,s){1&n&&(e.ynx(0),e.SDv(1,24),e.BQk())}function Rh(n,s){if(1&n&&(e.YNc(0,B_,2,1,"div",20),e.YNc(1,Jc,2,0,"ng-container",22)),2&n){const t=e.oxw();e.Q6J("ngForOf",t.errorMessage),e.xp6(1),e.Q6J("ngIf",t.showSubmit)}}function t_(n,s){1&n&&(e.TgZ(0,"span",25),e.SDv(1,26),e.qZA())}function qf(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,28),e.qZA())}let sh=(()=>{class n extends Gl.o{constructor(t,o,c,g,C,D,P,j,W,re){super(),this.authStorageService=t,this.dimlessBinary=o,this.emptyPipe=c,this.hostService=g,this.actionLabels=C,this.modalService=D,this.taskWrapper=P,this.router=j,this.notificationService=W,this.orchService=re,this.sub=new gu.w,this.hiddenColumns=[],this.hideMaintenance=!1,this.hasTableDetails=!0,this.hideToolHeader=!1,this.showGeneralActionsOnly=!1,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new hl.r,this.isExecuting=!1,this.icons=No.P,this.messages={nonOrchHost:"The feature is disabled because the selected host is not managed by Orchestrator."},this.actionOrchFeatures={add:[fu.HOST_ADD],edit:[fu.HOST_LABEL_ADD,fu.HOST_LABEL_REMOVE],remove:[fu.HOST_REMOVE],maintenance:[fu.HOST_MAINTENANCE_ENTER,fu.HOST_MAINTENANCE_EXIT],drain:[fu.HOST_DRAIN]},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.ADD,permission:"create",icon:No.P.add,click:()=>this.router.url.includes("/hosts")?this.router.navigate(["hosts",{outlets:{modal:[ki.MQ.ADD]}}]):this.bsModalRef=this.modalService.show(vt,{hideMaintenance:this.hideMaintenance}),disable:ie=>this.getDisable("add",ie)},{name:this.actionLabels.EDIT,permission:"update",icon:No.P.edit,click:()=>this.editAction(),disable:ie=>this.getDisable("edit",ie)},{name:this.actionLabels.START_DRAIN,permission:"update",icon:No.P.exit,click:()=>this.hostDrain(),disable:ie=>this.getDisable("drain",ie)||!this.enableDrainBtn,visible:()=>!this.showGeneralActionsOnly&&this.enableDrainBtn},{name:this.actionLabels.STOP_DRAIN,permission:"update",icon:No.P.exit,click:()=>this.hostDrain(!0),disable:ie=>this.getDisable("drain",ie)||this.enableDrainBtn,visible:()=>!this.showGeneralActionsOnly&&!this.enableDrainBtn},{name:this.actionLabels.REMOVE,permission:"delete",icon:No.P.destroy,click:()=>this.deleteAction(),disable:ie=>this.getDisable("remove",ie)},{name:this.actionLabels.ENTER_MAINTENANCE,permission:"update",icon:No.P.enter,click:()=>this.hostMaintenance(),disable:ie=>this.getDisable("maintenance",ie)||this.isExecuting||this.enableMaintenanceBtn,visible:()=>!this.showGeneralActionsOnly&&!this.enableMaintenanceBtn},{name:this.actionLabels.EXIT_MAINTENANCE,permission:"update",icon:No.P.exit,click:()=>this.hostMaintenance(),disable:ie=>this.getDisable("maintenance",ie)||this.isExecuting||!this.enableMaintenanceBtn,visible:()=>!this.showGeneralActionsOnly&&this.enableMaintenanceBtn}]}ngOnInit(){this.columns=[{name:"Hostname",prop:"hostname",flexGrow:1},{name:"Service Instances",prop:"service_instances",flexGrow:1,cellTemplate:this.servicesTpl},{name:"Labels",prop:"labels",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{class:"badge-dark"}},{name:"Status",prop:"status",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{maintenance:{class:"badge-warning"}}}},{name:"Model",prop:"model",flexGrow:1},{name:"CPUs",prop:"cpu_count",flexGrow:.3},{name:"Cores",prop:"cpu_cores",flexGrow:.3},{name:"Total Memory",prop:"memory_total_bytes",pipe:this.dimlessBinary,flexGrow:.4},{name:"Raw Capacity",prop:"raw_capacity",pipe:this.dimlessBinary,flexGrow:.5},{name:"HDDs",prop:"hdd_count",flexGrow:.3},{name:"Flash",prop:"flash_count",headerTemplate:this.flashTmpl,flexGrow:.3},{name:"NICs",prop:"nic_count",flexGrow:.3}],this.columns=this.columns.filter(t=>!this.hiddenColumns.includes(t.prop))}ngOnDestroy(){this.sub.unsubscribe()}updateSelection(t){this.selection=t,this.enableMaintenanceBtn=!1,this.enableDrainBtn=!1,this.selection.hasSelection&&("maintenance"===this.selection.first().status&&(this.enableMaintenanceBtn=!0),this.selection.first().labels.includes("_no_schedule")||(this.enableDrainBtn=!0))}editAction(){this.hostService.getLabels().subscribe(t=>{const o=this.selection.first(),c=new Set(t.concat(this.hostService.predefinedLabels)),g=Array.from(c).map(C=>({enabled:!0,name:C}));this.modalService.show(Vd.X,{titleText:"Edit Host: " + o.hostname + "",fields:[{type:"select-badges",name:"labels",value:o.labels,label:"Labels",typeConfig:{customBadges:!0,options:g,messages:new Fc.a({empty:"There are no labels.",filter:"Filter or add labels",add:"Add label"})}}],submitButtonText:"Edit Host",onSubmit:C=>{this.hostService.update(o.hostname,!0,C.labels).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated Host \"" + o.hostname + "\""),this.table.refreshBtn()})}})})}hostMaintenance(){this.isExecuting=!0;const t=this.selection.first();"maintenance"!==t.status?this.hostService.update(t.hostname,!1,[],!0).subscribe(()=>{this.isExecuting=!1,this.notificationService.show(_a.k.success,"\"" + t.hostname + "\" moved to maintenance"),this.table.refreshBtn()},o=>{if(this.isExecuting=!1,this.errorMessage=o.error.detail.split(/\n/),o.preventDefault(),!o.error.detail.includes("WARNING")||o.error.detail.includes("It is NOT safe to stop")||o.error.detail.includes("ALERT")||o.error.detail.includes("unsafe to stop"))this.notificationService.show(_a.k.error,"\"" + t.hostname + "\" cannot be put into maintenance","" + o.error.detail + "");else{const c={titleText:"Warning",buttonText:"Continue",warning:!0,bodyTpl:this.maintenanceConfirmTpl,showSubmit:!0,onSubmit:()=>{this.hostService.update(t.hostname,!1,[],!0,!0).subscribe(()=>{this.modalRef.close()},()=>this.modalRef.close())}};this.modalRef=this.modalService.show(nd.Y,c)}}):this.hostService.update(t.hostname,!1,[],!0).subscribe(()=>{this.isExecuting=!1,this.notificationService.show(_a.k.success,"\"" + t.hostname + "\" has exited maintenance"),this.table.refreshBtn()})}hostDrain(t=!1){const o=this.selection.first();if(t){const c=o.labels.indexOf("_no_schedule",0);o.labels.splice(c,1),this.hostService.update(o.hostname,!0,o.labels).subscribe(()=>{this.notificationService.show(_a.k.info,"\"" + o.hostname + "\" stopped draining"),this.table.refreshBtn()})}else this.hostService.update(o.hostname,!1,[],!1,!1,!0).subscribe(()=>{this.notificationService.show(_a.k.info,"\"" + o.hostname + "\" started draining"),this.table.refreshBtn()})}getDisable(t,o){if("remove"===t||"edit"===t||"maintenance"===t||"drain"===t){if(!(null==o?void 0:o.hasSingleSelection))return!0;if(!Ar().every(o.selected,"sources.orchestrator"))return this.messages.nonOrchHost}return this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[t])}deleteAction(){const t=this.selection.first().hostname;this.modalRef=this.modalService.show(zl.M,{itemDescription:"Host",itemNames:[t],actionDescription:"remove",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new cl.R("host/remove",{hostname:t}),call:this.hostService.delete(t)})})}checkHostsFactsAvailable(){const t=this.orchStatus.features;return!Ar().isEmpty(t)&&!!t.get_facts.available}transformHostsData(){if(this.checkHostsFactsAvailable())Ar().forEach(this.hosts,t=>{t.memory_total_bytes=this.emptyPipe.transform(1024*t.memory_total_kb),t.raw_capacity=this.emptyPipe.transform(t.hdd_capacity_bytes+t.flash_capacity_bytes)});else for(let t=4;t<this.columns.length;t++)this.columns[t].cellTemplate=this.orchTmpl}getHosts(t){this.isLoadingHosts||(this.isLoadingHosts=!0,this.sub=this.orchService.status().pipe((0,Uu.zg)(o=>{this.orchStatus=o;const c=this.checkHostsFactsAvailable();return this.hostService.list(`${c}`)}),(0,su.U)(o=>o.map(c=>{var g;const C={};if(c.service_instances=new Set,null===(g=this.orchStatus)||void 0===g?void 0:g.available){let P,D=[];P=this.hostService.getDaemons(c.hostname),P.subscribe(j=>{D=j,D.forEach(W=>{C[W.daemon_type]=(C[W.daemon_type]||0)+1}),D.map(W=>{c.service_instances.add(`${W.daemon_type}: ${C[W.daemon_type]}`)})})}else c.services.forEach(D=>{C[D.type]=(C[D.type]||0)+1}),c.services.map(D=>{c.service_instances.add(`${D.type}: ${C[D.type]}`)});return c}))).subscribe(o=>{this.hosts=o,this.transformHostsData(),this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,t.error()}))}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(yn.$),e.Y36(Id.W),e.Y36(ql),e.Y36(ki.p4),e.Y36(Ul.Z),e.Y36(Ll.P),e.Y36(Yo.F0),e.Y36(ll.g),e.Y36(Cc))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-hosts"]],viewQuery:function(t,o){if(1&t&&(e.Gf(Hs.a,5),e.Gf($_,7),e.Gf(ih,7),e.Gf(oh,7),e.Gf(hp,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.table=c.first),e.iGM(c=e.CRH())&&(o.servicesTpl=c.first),e.iGM(c=e.CRH())&&(o.maintenanceConfirmTpl=c.first),e.iGM(c=e.CRH())&&(o.orchTmpl=c.first),e.iGM(c=e.CRH())&&(o.flashTmpl=c.first)}},inputs:{hiddenColumns:"hiddenColumns",hideMaintenance:"hideMaintenance",hasTableDetails:"hasTableDetails",hideToolHeader:"hideToolHeader",showGeneralActionsOnly:"showGeneralActionsOnly"},features:[e._Bn([{provide:Sl.F,useValue:new Sl.F("hosts")}]),e.qOj],decls:17,vars:2,consts:function(){let s,t,o,c,g,C,D,P;return s="Hosts List",t="Overall Performance",o="" + "\ufffd0\ufffd" + "",c="Are you sure you want to continue?",g="Data will be available only if Orchestrator is available.",C="N/A",D="SSD, NVMEs",P="Flash",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["servicesTpl",""],["maintenanceConfirmTpl",""],["orchTmpl",""],["flashTmpl",""],["name","modal"],["columnMode","flex","selectionType","single",3,"data","columns","hasDetails","toolHeader","fetchData","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],["id","host-actions",1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"permissions","selection"],t,["uid","y0KGL0iZz","grafanaStyle","two",3,"grafanaPath","type"],[4,"ngFor","ngForOf"],[1,"badge","badge-background-primary"],[4,"ngIf"],o,c,["ngbTooltip",g],C,["ngbTooltip",D],P]},template:function(t,o){if(1&t&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,Yf,5,9,"ng-template",5),e.qZA(),e.YNc(6,_g,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,U_,1,1,"ng-template",null,8,e.W1O),e.YNc(10,Rh,2,2,"ng-template",null,9,e.W1O),e.YNc(12,t_,2,0,"ng-template",null,10,e.W1O),e.YNc(14,qf,2,0,"ng-template",null,11,e.W1O),e._UZ(16,"router-outlet",12)),2&t){const c=e.MAs(1);e.xp6(6),e.Q6J("ngIf",o.permissions.grafana.read),e.xp6(1),e.Q6J("ngbNavOutlet",c)}},directives:[lt.Pz,lt.nv,lt.Vx,lt.uN,_.O5,lt.tO,Yo.lC,Hs.a,Xs.K,Hd,it.F,_.sg,lt._L],styles:[""]}),n})();var r_=(()=>{return(n=r_||(r_={})).COST_CAPACITY="cost_capacity",n.THROUGHPUT="throughput_optimized",n.IOPS="iops_optimized",r_;var n})(),id=i(62862);let Ig=(()=>{class n{constructor(t,o,c,g,C){this.activeModal=t,this.actionLabels=o,this.formBuilder=c,this.osdService=g,this.taskWrapper=C,this.driveGroups=[],this.submitAction=new e.vpe,this.action=o.CREATE,this.createForm()}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){const t=Ar().join(Ar().map(this.driveGroups,"service_id"),", ");this.taskWrapper.wrapTaskAroundCall({task:new cl.R("osd/"+ki.MQ.CREATE,{tracking_id:t}),call:this.osdService.create(this.driveGroups,t)}).subscribe({error:()=>{this.formGroup.setErrors({cdSubmitButton:!0})},complete:()=>{this.submitAction.emit(),this.activeModal.close()}})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(id.O),e.Y36(Ji),e.Y36(Ll.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-creation-preview-modal"]],inputs:{driveGroups:"driveGroups"},outputs:{submitAction:"submitAction"},decls:15,vars:9,consts:function(){let s,t;return s="OSD creation preview",t="DriveGroups",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],t,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"h4"),e.SDv(8,7),e.qZA(),e.TgZ(9,"pre"),e._uU(10),e.ALo(11,"json"),e.qZA(),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(14,"titlecase"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.formGroup),e.xp6(6),e.Oqu(e.lcZ(11,5,o.driveGroups)),e.xp6(3),e.Q6J("form",o.formGroup)("submitText",e.lcZ(14,7,o.action)))},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,nl.p],pipes:[_.Ts,_.rS],styles:[""]}),n})();const Lg=["inventoryDevices"];function gp(n,s){if(1&n&&(e.TgZ(0,"span",16),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.hij(" ",t," ")}}function i_(n,s){if(1&n&&(e.TgZ(0,"cd-alert-panel",13),e.ynx(1),e.SDv(2,14),e.BQk(),e.YNc(3,gp,2,1,"span",15),e.qZA()),2&n){const t=e.oxw();e.Q6J("showTitle",!1),e.xp6(3),e.Q6J("ngForOf",t.requiredFilters)}}function o_(n,s){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"p",17),e.TgZ(2,"span"),e.SDv(3,18),e.ALo(4,"dimlessBinary"),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(4),e.pQV(t.filteredDevices.length)(e.lcZ(4,2,t.capacity)),e.QtT(3)}}const Ta=function(){return["available","osd_ids"]};let Hc=(()=>{class n{constructor(t,o,c,g){this.formBuilder=t,this.activeModal=o,this.actionLabels=c,this.wizardStepService=g,this.submitAction=new e.vpe,this.icons=No.P,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=c.ADD,this.createForm()}ngAfterViewInit(){const t=Ar().filter(this.inventoryDevices.columns,o=>this.filterColumns.includes(o.prop)&&"hostname"!==o.prop);setTimeout(()=>{this.requiredFilters=Ar().map(t,"name")},0)}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(t){if(this.capacity=0,this.canSubmit=!1,Ar().isEmpty(t.filters))this.filteredDevices=[],this.event=void 0;else{const o=t.filters.filter(c=>"hostname"!==c.prop);this.canSubmit=!Ar().isEmpty(o),this.filteredDevices=t.data,this.capacity=Ar().sumBy(this.filteredDevices,"sys_api.size"),this.event=t}}onSubmit(){this.submitAction.emit(this.event),this.activeModal.close()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(id.O),e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(Bu))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-devices-selection-modal"]],viewQuery:function(t,o){if(1&t&&e.Gf(Lg,5),2&t){let c;e.iGM(c=e.CRH())&&(o.inventoryDevices=c.first)}},outputs:{submitAction:"submitAction"},decls:14,vars:15,consts:function(){let s,t,o;return s="" + "\ufffd0\ufffd" + " devices",t="At least one of these filters must be applied in order to proceed:",o="Number of devices: " + "\ufffd0\ufffd" + ". Raw capacity: " + "\ufffd1\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],["type","warning","size","slim",3,"showTitle",4,"ngIf"],[3,"devices","filterColumns","showAvailDeviceOnly","hiddenColumns","filterChange"],["inventoryDevices",""],[4,"ngIf"],[1,"modal-footer"],[3,"form","disabled","submitText","submitActionEvent"],["type","warning","size","slim",3,"showTitle"],t,["class","badge badge-dark ml-2",4,"ngFor","ngForOf"],[1,"badge","badge-dark","ml-2"],[1,"text-center"],o]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,i_,4,2,"cd-alert-panel",7),e.TgZ(8,"cd-inventory-devices",8,9),e.NdJ("filterChange",function(g){return o.onFilterChange(g)}),e.qZA(),e.YNc(10,o_,5,4,"div",10),e.qZA(),e.TgZ(11,"div",11),e.TgZ(12,"cd-form-button-panel",12),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(13,"titlecase"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.deviceType),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.formGroup),e.xp6(3),e.Q6J("ngIf",!o.canSubmit),e.xp6(1),e.Q6J("devices",o.devices)("filterColumns",o.filterColumns)("showAvailDeviceOnly",!0)("hiddenColumns",e.DdM(14,Ta)),e.xp6(2),e.Q6J("ngIf",o.canSubmit),e.xp6(2),e.Q6J("form",o.formGroup)("disabled",!o.canSubmit||0===o.filteredDevices.length)("submitText",e.lcZ(13,12,o.action)))},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,_.O5,mu,nl.p,Jt.G,_.sg],pipes:[_.rS,yn.$],styles:[""]}),n})();function Ju(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,7),e.qZA())}function Ps(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,8),e.qZA())}function mp(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,9),e.qZA())}const ah=function(n){return[n]};function Yu(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"button",10),e.NdJ("click",function(){return e.CHM(t),e.oxw().showSelectionModal()}),e._UZ(2,"i",11),e.ynx(3),e.SDv(4,12),e.BQk(),e.qZA(),e.BQk()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("title",t.addButtonTooltip)("disabled",0===t.availDevices.length||!t.canSelect||t.expansionCanSelect),e.xp6(1),e.Q6J("ngClass",e.VKq(3,ah,t.icons.add))}}function Y_(n,s){if(1&n&&(e.TgZ(0,"span"),e.TgZ(1,"span",19),e._uU(2),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(2),e.AsE("",t.name,": ",t.value.formatted,"")}}function Bp(n,s){if(1&n&&(e.TgZ(0,"div",20),e.TgZ(1,"span"),e.SDv(2,21),e.ALo(3,"dimlessBinary"),e.qZA(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(3,1,t.capacity)),e.QtT(2)}}const Zf=function(){return["available","osd_ids"]},Dc=function(){return[]};function gg(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",13),e.YNc(1,Y_,3,2,"span",14),e.TgZ(2,"a",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().clearDevices(),!1}),e._UZ(3,"i",11),e.ynx(4),e.SDv(5,16),e.BQk(),e.qZA(),e.qZA(),e.TgZ(6,"div"),e._UZ(7,"cd-inventory-devices",17),e.qZA(),e.YNc(8,Bp,4,3,"div",18)}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngForOf",t.appliedFilters),e.xp6(2),e.Q6J("ngClass",e.VKq(6,ah,t.icons.clearFilters)),e.xp6(4),e.Q6J("devices",t.devices)("hiddenColumns",e.DdM(8,Zf))("filterColumns",e.DdM(9,Dc)),e.xp6(1),e.Q6J("ngIf","data"===t.type)}}let Z_=(()=>{class n{constructor(t,o,c){this.modalService=t,this.osdService=o,this.router=c,this.selected=new e.vpe,this.cleared=new e.vpe,this.icons=No.P,this.devices=[],this.capacity=0,this.appliedFilters=new Array,this.expansionCanSelect=!1,this.tooltips={noAvailDevices:"No available devices",addPrimaryFirst:"Please add primary devices first",addByFilters:"Add devices by using filters"},this.isOsdPage=this.router.url.includes("/osd")}ngOnInit(){var t,o,c;this.isOsdPage||(this.devices=(null===(t=this.osdService)||void 0===t?void 0:t.osdDevices[this.type])?this.osdService.osdDevices[this.type]:[],this.capacity=Ar().sumBy(this.devices,"sys_api.size"),this.expansionCanSelect=!!(null===(o=this.osdService)||void 0===o?void 0:o.osdDevices)&&(null===(c=this.osdService)||void 0===c?void 0:c.osdDevices.disableSelect)),this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let t=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(t=["hostname",...t]),this.modalService.show(Hc,{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:t},{size:"xl"}).componentInstance.submitAction.subscribe(g=>{this.devices=g.data,this.capacity=Ar().sumBy(this.devices,"sys_api.size"),this.appliedFilters=g.filters;const C=Ar().assign({type:this.type},g);this.isOsdPage||(this.osdService.osdDevices[this.type]=this.devices,this.osdService.osdDevices.disableSelect=this.canSelect||this.devices.length===this.availDevices.length,this.osdService.osdDevices[this.type].capacity=this.capacity),this.selected.emit(C)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){this.isOsdPage||(this.expansionCanSelect=!1,this.osdService.osdDevices.disableSelect=!1,this.osdService.osdDevices=[]);const t={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Ul.Z),e.Y36(Ji),e.Y36(Yo.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-devices-selection-groups"]],inputs:{type:"type",name:"name",hostname:"hostname",availDevices:"availDevices",canSelect:"canSelect"},outputs:{selected:"selected",cleared:"cleared"},features:[e.TTD],decls:12,vars:6,consts:function(){let s,t,o,c,g,C,D;return s="" + "\ufffd0\ufffd" + " devices",t="The primary storage devices. These devices contain all OSD data.",o="Write-Ahead-Log devices. These devices are used for BlueStore\u2019s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.",c="DB devices can be used for storing BlueStore\u2019s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).",g="Add",C="Clear",D="Raw capacity: " + "\ufffd0\ufffd" + "",[[1,"form-group","row"],["for","createDeleteButton",1,"cd-col-form-label"],s,[4,"ngIf"],[1,"cd-col-form-input"],[4,"ngIf","ngIfElse"],["blockClearDevices",""],t,o,c,["type","button","data-toggle","tooltip",1,"btn","btn-light",3,"title","disabled","click"],[3,"ngClass"],g,[1,"pb-2","my-2","border-bottom"],[4,"ngFor","ngForOf"],["href","",1,"tc_clearSelections",3,"click"],C,[3,"devices","hiddenColumns","filterColumns"],["class","float-right",4,"ngIf"],[1,"badge","badge-dark","mr-2"],[1,"float-right"],D]},template:function(t,o){if(1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e.ynx(2),e.SDv(3,2),e.BQk(),e.TgZ(4,"cd-helper"),e.YNc(5,Ju,2,0,"span",3),e.YNc(6,Ps,2,0,"span",3),e.YNc(7,mp,2,0,"span",3),e.qZA(),e.qZA(),e.TgZ(8,"div",4),e.YNc(9,Yu,5,5,"ng-container",5),e.YNc(10,gg,9,10,"ng-template",null,6,e.W1O),e.qZA(),e.qZA()),2&t){const c=e.MAs(11);e.xp6(3),e.pQV(o.name),e.QtT(3),e.xp6(2),e.Q6J("ngIf","data"===o.type),e.xp6(1),e.Q6J("ngIf","wal"===o.type),e.xp6(1),e.Q6J("ngIf","db"===o.type),e.xp6(2),e.Q6J("ngIf",0===o.devices.length)("ngIfElse",c)}},directives:[$a.P,E.S,_.O5,ca.o,_.mk,_.sg,mu],pipes:[yn.$],styles:[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]}),n})();const j_=["dataDeviceSelectionGroups"],Nh=["walDeviceSelectionGroups"],ep=["dbDeviceSelectionGroups"],ns=["previewButtonPanel"];function s_(n,s){1&n&&e._UZ(0,"cd-orchestrator-doc-panel")}function G_(n,s){if(1&n&&(e.TgZ(0,"div",8),e.SDv(1,32),e.ALo(2,"titlecase"),e.ALo(3,"upperFirst"),e.qZA()),2&n){const t=e.oxw(2);e.xp6(3),e.pQV(e.lcZ(2,2,t.action))(e.lcZ(3,4,t.resource)),e.QtT(1)}}function od(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",33),e.TgZ(1,"div",34),e.TgZ(2,"input",35),e.NdJ("change",function(){return e.CHM(t),e.oxw(2).emitDeploymentSelection()}),e.qZA(),e.TgZ(3,"label",36),e.tHW(4,37),e.TgZ(5,"cd-helper"),e._UZ(6,"span"),e.qZA(),e.N_p(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit,o=e.oxw(2);e.xp6(2),e.Q6J("id",t)("value",t),e.uIk("disabled",null==o.deploymentOptions||!o.deploymentOptions.options[t].available||null),e.xp6(1),e.Q6J("id","label_"+t)("for",t),e.xp6(3),e.pQV(null==o.deploymentOptions?null:o.deploymentOptions.options[t].title)(o.deploymentOptions.recommended_option===t?"(Recommended)":"")(null==o.deploymentOptions?null:o.deploymentOptions.options[t].desc),e.QtT(4)}}function gc(n,s){1&n&&(e.TgZ(0,"span",46),e.SDv(1,47),e.qZA())}function Ph(n,s){if(1&n&&(e.TgZ(0,"div",38),e.TgZ(1,"label",39),e.ynx(2),e.SDv(3,40),e.BQk(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,41),e.qZA(),e._UZ(7,"br"),e.TgZ(8,"span"),e.SDv(9,42),e.qZA(),e.qZA(),e.qZA(),e.TgZ(10,"div",43),e._UZ(11,"input",44),e.YNc(12,gc,2,0,"span",45),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(4),o=e.oxw();e.xp6(12),e.Q6J("ngIf",o.form.showError("walSlots",t,"min"))}}function Ih(n,s){1&n&&(e.TgZ(0,"span",46),e.SDv(1,53),e.qZA())}function Lh(n,s){if(1&n&&(e.TgZ(0,"div",38),e.TgZ(1,"label",48),e.ynx(2),e.SDv(3,49),e.BQk(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,50),e.qZA(),e._UZ(7,"br"),e.TgZ(8,"span"),e.SDv(9,51),e.qZA(),e.qZA(),e.qZA(),e.TgZ(10,"div",43),e._UZ(11,"input",52),e.YNc(12,Ih,2,0,"span",45),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(4),o=e.oxw();e.xp6(12),e.Q6J("ngIf",o.form.showError("dbSlots",t,"min"))}}function mg(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",54),e.TgZ(1,"input",55),e.NdJ("change",function(){return e.CHM(t),e.oxw(2).emitDeploymentSelection()}),e.qZA(),e.TgZ(2,"label",56),e._uU(3),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit;e.xp6(1),e.s9C("id",t.key),e.s9C("name",t.key),e.s9C("formControlName",t.key),e.xp6(1),e.s9C("for",t.key),e.xp6(1),e.Oqu(t.desc)}}function jf(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",57),e.TgZ(1,"cd-form-button-panel",58,59),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw(2).submit()}),e.qZA(),e.qZA()}if(2&n){e.oxw();const t=e.MAs(24),o=e.oxw();e.xp6(1),e.Q6J("form",o.form)("disabled",0===t.devices.length&&!o.simpleDeployment)("submitText",o.simpleDeployment?"Create OSDs":o.actionLabels.PREVIEW)}}const Ud=function(n){return{show:n}};function yf(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",2),e.YNc(1,G_,4,6,"div",3),e.TgZ(2,"div",4),e.TgZ(3,"form",5,6),e.TgZ(5,"div",7),e.TgZ(6,"div",2),e.TgZ(7,"div",8),e.TgZ(8,"h2",9),e.TgZ(9,"button",10),e.NdJ("click",function(){return e.CHM(t),e.oxw().emitDeploymentMode()}),e.SDv(10,11),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(11,"div",12),e.TgZ(12,"div",13),e.YNc(13,od,7,8,"div",14),e.qZA(),e.qZA(),e.TgZ(14,"div",2),e.TgZ(15,"div",8),e.TgZ(16,"h2",9),e.TgZ(17,"button",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().emitDeploymentMode()}),e.SDv(18,16),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(19,"div",12),e.TgZ(20,"div",17),e.TgZ(21,"div",17),e.TgZ(22,"fieldset"),e.TgZ(23,"cd-osd-devices-selection-groups",18,19),e.NdJ("selected",function(c){return e.CHM(t),e.oxw().onDevicesSelected(c)})("cleared",function(c){return e.CHM(t),e.oxw().onDevicesCleared(c)}),e.qZA(),e.qZA(),e.TgZ(25,"fieldset"),e.TgZ(26,"legend"),e.SDv(27,20),e.qZA(),e.TgZ(28,"cd-osd-devices-selection-groups",21,22),e.NdJ("selected",function(c){return e.CHM(t),e.oxw().onDevicesSelected(c)})("cleared",function(c){return e.CHM(t),e.oxw().onDevicesCleared(c)}),e.qZA(),e.YNc(30,Ph,13,1,"div",23),e.TgZ(31,"cd-osd-devices-selection-groups",24,25),e.NdJ("selected",function(c){return e.CHM(t),e.oxw().onDevicesSelected(c)})("cleared",function(c){return e.CHM(t),e.oxw().onDevicesCleared(c)}),e.qZA(),e.YNc(33,Lh,13,1,"div",23),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(34,"div",2),e.TgZ(35,"div",8),e.TgZ(36,"h2",9),e.TgZ(37,"button",26),e.SDv(38,27),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(39,"div",28),e.TgZ(40,"div",13),e.TgZ(41,"div",29),e.YNc(42,mg,4,5,"div",30),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(43,jf,3,3,"div",31),e.qZA()}if(2&n){const t=e.MAs(24),o=e.MAs(29),c=e.MAs(32),g=e.oxw();e.xp6(1),e.Q6J("ngIf",!g.hideTitle),e.xp6(2),e.Q6J("formGroup",g.form),e.xp6(6),e.uIk("aria-expanded",g.simpleDeployment),e.xp6(2),e.Q6J("ngClass",e.VKq(17,Ud,g.simpleDeployment)),e.xp6(2),e.Q6J("ngForOf",g.optionNames),e.xp6(4),e.uIk("aria-expanded",!g.simpleDeployment),e.xp6(2),e.Q6J("ngClass",e.VKq(19,Ud,!g.simpleDeployment)),e.xp6(4),e.Q6J("availDevices",g.availDevices)("canSelect",0!==g.availDevices.length),e.xp6(5),e.Q6J("availDevices",g.availDevices)("canSelect",0!==t.devices.length),e.xp6(2),e.Q6J("ngIf",0!==o.devices.length),e.xp6(1),e.Q6J("availDevices",g.availDevices)("canSelect",0!==t.devices.length),e.xp6(2),e.Q6J("ngIf",0!==c.devices.length),e.xp6(9),e.Q6J("ngForOf",g.featureList),e.xp6(1),e.Q6J("ngIf",!g.hideSubmitBtn)}}let a_=(()=>{class n extends Oa.E{constructor(t,o,c,g,C,D,P,j){super(),this.actionLabels=t,this.authStorageService=o,this.orchService=c,this.hostService=g,this.router=C,this.modalService=D,this.osdService=P,this.taskWrapper=j,this.hideTitle=!1,this.hideSubmitBtn=!1,this.emitDriveGroup=new e.vpe,this.emitDeploymentOption=new e.vpe,this.emitMode=new e.vpe,this.icons=No.P,this.columns=[],this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new Xd,this.featureList=[],this.hasOrchestrator=!0,this.simpleDeployment=!0,this.optionNames=Object.values(r_),this.resource="OSDs",this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:"Encryption"}},this.featureList=Ar().map(this.features,(W,re)=>Object.assign(W,{key:re})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,t.available?this.getDataDevices():this.loadingNone()}),this.osdService.getDeploymentOptions().subscribe(t=>{var o,c;this.deploymentOptions=t,this.form.get("deploymentOption").setValue(null===(o=this.deploymentOptions)||void 0===o?void 0:o.recommended_option),(null===(c=this.deploymentOptions)||void 0===c?void 0:c.recommended_option)&&this.enableFeatures()}),this.form.get("walSlots").valueChanges.subscribe(t=>this.setSlots("wal",t)),this.form.get("dbSlots").valueChanges.subscribe(t=>this.setSlots("db",t)),Ar().each(this.features,t=>{this.form.get("features").get(t.key).valueChanges.subscribe(o=>this.featureFormUpdate(t.key,o))})}createForm(){this.form=new Us.d({walSlots:new vn.NI(0),dbSlots:new vn.NI(0),features:new Us.d(this.featureList.reduce((t,o)=>(t[o.key]=new vn.NI({value:!1,disabled:!0}),t),{})),deploymentOption:new vn.NI(0)})}getDataDevices(){this.hostService.inventoryDeviceList().subscribe(t=>{this.allDevices=Ar().filter(t,"available"),this.availDevices=[...this.allDevices],this.loadingReady()},()=>{this.allDevices=[],this.availDevices=[],this.loadingError()})}setSlots(t,o){"number"==typeof o&&o>=0&&this.driveGroup.setSlots(t,o)}featureFormUpdate(t,o){this.driveGroup.setFeature(t,o)}enableFeatures(){this.featureList.forEach(t=>{this.form.get(t.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(t=>{const o=this.form.get(t.key);o.disable({emitEvent:!1}),o.setValue(!1,{emitEvent:!1})})}onDevicesSelected(t){if(this.availDevices=t.dataOut,"data"===t.type){const o=Ar().find(t.filters,{prop:"hostname"});o?(this.hostname=o.value.raw,this.availDevices=t.dataOut.filter(c=>c.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(t.type,t.filters),this.emitDriveGroup.emit(this.driveGroup)}onDevicesCleared(t){"data"===t.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...t.clearedDevices],this.driveGroup.clearDeviceSelection(t.type),this.form.get(`${t.type}Slots`).setValue(0,{emitEvent:!1}))}emitDeploymentSelection(){const t=this.form.get("deploymentOption").value,o=this.form.get("encrypted").value;this.emitDeploymentOption.emit({option:t,encrypted:o})}emitDeploymentMode(){this.simpleDeployment=!this.simpleDeployment,this.simpleDeployment||0!==this.dataDeviceSelectionGroups.devices.length?this.enableFeatures():this.disableFeatures(),this.emitMode.emit(this.simpleDeployment)}submit(){if(this.simpleDeployment){const c={option:this.form.get("deploymentOption").value,encrypted:this.form.get("encrypted").value},C=`${this.deploymentOptions.options[c.option].title} deployment`;this.taskWrapper.wrapTaskAroundCall({task:new cl.R("osd/"+ki.MQ.CREATE,{tracking_id:C}),call:this.osdService.create([c],C,"predefined")}).subscribe({complete:()=>{this.router.navigate(["/osd"])}})}else{const t=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${t}-${Ar().now()}`),this.modalService.show(Ig,{driveGroups:[this.driveGroup.spec]}).componentInstance.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButtonPanel.submitButton.loading=!1}}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(_t.j),e.Y36(Cc),e.Y36(ql),e.Y36(Yo.F0),e.Y36(Ul.Z),e.Y36(Ji),e.Y36(Ll.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-form"]],viewQuery:function(t,o){if(1&t&&(e.Gf(j_,5),e.Gf(Nh,5),e.Gf(ep,5),e.Gf(ns,5)),2&t){let c;e.iGM(c=e.CRH())&&(o.dataDeviceSelectionGroups=c.first),e.iGM(c=e.CRH())&&(o.walDeviceSelectionGroups=c.first),e.iGM(c=e.CRH())&&(o.dbDeviceSelectionGroups=c.first),e.iGM(c=e.CRH())&&(o.previewButtonPanel=c.first)}},inputs:{hideTitle:"hideTitle",hideSubmitBtn:"hideSubmitBtn"},outputs:{emitDriveGroup:"emitDriveGroup",emitDeploymentOption:"emitDeploymentOption",emitMode:"emitMode"},features:[e.qOj],decls:2,vars:2,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e;return s="Deployment Options",t="Advanced Mode",o="Shared devices",c="Features",g="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",C="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + " " + "\ufffd#5\ufffd" + "" + "\ufffd#6\ufffd" + "" + "\ufffd2\ufffd" + "" + "\ufffd/#6\ufffd" + "" + "\ufffd/#5\ufffd" + "",D="WAL slots",P="How many OSDs per WAL device.",j="Specify 0 to let Orchestrator backend decide it.",W="Value should be greater than or equal to 0",re="DB slots",ie="How many OSDs per DB device.",ge="Specify 0 to let Orchestrator backend decide it.",_e="Value should be greater than or equal to 0",[[4,"ngIf"],["class","card",4,"cdFormLoading"],[1,"card"],["class","card-header",4,"ngIf"],[1,"card-body","ml-2"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"accordion"],[1,"card-header"],[1,"mb-0"],["data-toggle","collapse","aria-label","toggle deployment options",1,"btn","btn-link","btn-block","text-left","dropdown-toggle",3,"click"],s,[1,"collapse",3,"ngClass"],[1,"card-body","d-flex","flex-column"],["class","pt-3 pb-3",4,"ngFor","ngForOf"],["data-toggle","collapse","aria-label","toggle advanced mode",1,"btn","btn-link","btn-block","text-left","dropdown-toggle",3,"click"],t,[1,"card-body"],["name","Primary","type","data",3,"availDevices","canSelect","selected","cleared"],["dataDeviceSelectionGroups",""],o,["name","WAL","type","wal",3,"availDevices","canSelect","selected","cleared"],["walDeviceSelectionGroups",""],["class","form-group row",4,"ngIf"],["name","DB","type","db",3,"availDevices","canSelect","selected","cleared"],["dbDeviceSelectionGroups",""],["data-toggle","collapse","aria-label","features","aria-expanded","true",1,"btn","btn-link","btn-block","text-left","dropdown-toggle"],c,[1,"collapse","show"],["formGroupName","features",1,"pt-3","pb-3"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],["class","card-footer",4,"ngIf"],g,[1,"pt-3","pb-3"],[1,"custom-control","custom-radio","custom-control-inline"],["type","radio","name","deploymentOption","formControlName","deploymentOption",1,"custom-control-input",3,"id","value","change"],[1,"custom-control-label",3,"id","for"],C,[1,"form-group","row"],["for","walSlots",1,"cd-col-form-label"],D,P,j,[1,"cd-col-form-input"],["id","walSlots","name","walSlots","type","number","min","0","formControlName","walSlots",1,"form-control"],["class","invalid-feedback",4,"ngIf"],[1,"invalid-feedback"],W,["for","dbSlots",1,"cd-col-form-label"],re,ie,ge,["id","dbSlots","name","dbSlots","type","number","min","0","formControlName","dbSlots",1,"form-control"],_e,[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","name","formControlName","change"],[1,"custom-control-label",3,"for"],[1,"card-footer"],["wrappingClass","text-right",3,"form","disabled","submitText","submitActionEvent"],["previewButtonPanel",""]]},template:function(t,o){1&t&&(e.YNc(0,s_,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,yf,44,21,"div",1)),2&t&&(e.Q6J("ngIf",!o.hasOrchestrator),e.xp6(1),e.Q6J("cdFormLoading",o.loading))},directives:[_.O5,wl.y,au,vn._Y,vn.JL,tl.V,vn.sg,ca.o,_.mk,_.sg,Z_,vn.x0,vn._,vn.Fj,Ha.b,vn.JJ,vn.u,E.S,$a.P,vn.qQ,vn.wV,vn.Wl,nl.p],pipes:[_.rS,K.m],styles:[""]}),n})();var vp=i(71289);let l_=(()=>{class n{transform(t){if(Ar().isUndefined(t))return "no spec";if(Ar().get(t,"unmanaged",!1))return "unmanaged";const o=[],c=Ar().get(t,"placement.hosts"),g=Ar().get(t,"placement.count"),C=Ar().get(t,"placement.label"),D=Ar().get(t,"placement.host_pattern");return Ar().isArray(c)&&o.push(...c),Ar().isNumber(g)&&o.push("count:" + g + ""),Ar().isString(C)&&o.push("label:" + C + ""),Ar().isString(D)&&o.push(D),o.join(";")}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"placement",type:n,pure:!0}),n})();var yp=i(79765),Bd=i(66682),fd=i(77393),bf=i(33637);function Gf(n,s=bf.P){return t=>t.lift(new lh(n,s))}class lh{constructor(s,t){this.dueTime=s,this.scheduler=t}call(s,t){return t.subscribe(new sd(s,this.dueTime,this.scheduler))}}class sd extends fd.L{constructor(s,t,o){super(s),this.dueTime=t,this.scheduler=o,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(s){this.clearDebounce(),this.lastValue=s,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(uh,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:s}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(s)}}clearDebounce(){const s=this.debouncedSubscription;null!==s&&(this.remove(s),s.unsubscribe(),this.debouncedSubscription=null)}}function uh(n){n.debouncedNext()}var Df=i(87519),tp=i(45435),V_=i(80842),ch=i(14745),u_=i(4416),Uc=i(58039);function Rf(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.hij(" ",t," ")}}function dh(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,28),e.qZA())}function vg(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,33),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Fh(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,34),e.qZA()),2&n&&e.Q6J("ngValue",null)}function c_(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,35),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Cm(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.service_name),e.xp6(1),e.Oqu(t.service_name)}}function Mm(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,36),e.qZA())}const d_=function(){return["ingress"]},Yp=function(n){return{required:n}};function fh(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",29),e.SDv(2,30),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",31),e.NdJ("change",function(){return e.CHM(t),e.oxw().prePopulateId()}),e.YNc(5,vg,2,1,"option",32),e.YNc(6,Fh,2,1,"option",32),e.YNc(7,c_,2,1,"option",32),e.YNc(8,Cm,2,2,"option",14),e.qZA(),e.YNc(9,Mm,2,0,"span",15),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(7,Yp,e.DdM(6,d_).includes(t.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",null===t.services),e.xp6(1),e.Q6J("ngIf",null!==t.services&&0===t.services.length),e.xp6(1),e.Q6J("ngIf",null!==t.services&&t.services.length>0),e.xp6(1),e.Q6J("ngForOf",t.services),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("backend_service",o,"required"))}}function Fg(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,40),e.qZA())}function yg(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,41),e.qZA())}function bp(n,s){1&n&&(e.TgZ(0,"span",27),e.tHW(1,42),e._UZ(2,"strong"),e.N_p(),e.qZA())}const bg=function(){return["mds","rgw","nfs","iscsi","ingress"]};function Eg(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",37),e.SDv(2,38),e.qZA(),e.TgZ(3,"div",10),e._UZ(4,"input",39),e.YNc(5,Fg,2,0,"span",15),e.YNc(6,yg,2,0,"span",15),e.YNc(7,bp,3,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(1),e.Q6J("ngClass",e.VKq(5,Yp,e.DdM(4,bg).includes(t.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",t.serviceForm.showError("service_id",o,"required")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("service_id",o,"uniqueName")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("service_id",o,"rgwPattern"))}}function kg(n,s){1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",43),e.SDv(2,44),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",45),e.TgZ(5,"option",46),e.SDv(6,47),e.qZA(),e.TgZ(7,"option",48),e.SDv(8,49),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function z_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,53),e.qZA())}function Ep(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",50),e.SDv(2,51),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"input",52),e.NdJ("focus",function(c){return e.CHM(t),e.oxw().labelFocus.next(c.target.value)})("click",function(c){return e.CHM(t),e.oxw().labelClick.next(c.target.value)}),e.qZA(),e.YNc(5,z_,2,0,"span",15),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(4),e.Q6J("ngbTypeahead",t.searchLabels),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("label",o,"required"))}}function ph(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",54),e.SDv(2,55),e.qZA(),e.TgZ(3,"div",10),e._UZ(4,"cd-select-badges",56),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(4),e.Q6J("data",t.serviceForm.controls.hosts.value)("options",t.hosts.options)("messages",t.hosts.messages)}}function $g(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,61),e.qZA())}function W_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,62),e.qZA())}function Am(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",57),e.TgZ(2,"span"),e.SDv(3,58),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,59),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e._UZ(7,"input",60),e.YNc(8,$g,2,0,"span",15),e.YNc(9,W_,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(8),e.Q6J("ngIf",t.serviceForm.showError("count",o,"min")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("count",o,"pattern"))}}function Yd(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,66),e.qZA())}function Tg(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,67),e.qZA())}function Hg(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,68),e.qZA())}function Tp(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",63),e.SDv(3,64),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",65),e.YNc(6,Yd,2,0,"span",15),e.YNc(7,Tg,2,0,"span",15),e.YNc(8,Hg,2,0,"span",15),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(6),e.Q6J("ngIf",t.serviceForm.showError("rgw_frontend_port",o,"pattern")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("rgw_frontend_port",o,"min")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("rgw_frontend_port",o,"max"))}}function f_(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,72),e.qZA()),2&n&&e.Q6J("ngValue",null)}function Qc(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,73),e.qZA()),2&n&&e.Q6J("ngValue",null)}function J_(n,s){1&n&&(e.TgZ(0,"option",12),e.SDv(1,74),e.qZA()),2&n&&e.Q6J("ngValue",null)}function kh(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.pool_name),e.xp6(1),e.Oqu(t.pool_name)}}function $h(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,75),e.qZA())}function Sg(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",69),e.SDv(2,70),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",71),e.YNc(5,f_,2,1,"option",32),e.YNc(6,Qc,2,1,"option",32),e.YNc(7,J_,2,1,"option",32),e.YNc(8,kh,2,2,"option",14),e.qZA(),e.YNc(9,$h,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(5),e.Q6J("ngIf",null===t.pools),e.xp6(1),e.Q6J("ngIf",t.pools&&0===t.pools.length),e.xp6(1),e.Q6J("ngIf",t.pools&&t.pools.length>0),e.xp6(1),e.Q6J("ngForOf",t.pools),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("pool",o,"required"))}}function Cg(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,94),e.qZA())}function p_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,95),e.qZA())}function h_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,96),e.qZA())}function Hh(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,97),e.qZA())}function __(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,98),e.qZA())}const Zp=function(){return["iscsi"]};function Mg(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",76),e.TgZ(3,"span"),e.SDv(4,77),e.qZA(),e.TgZ(5,"cd-helper"),e.TgZ(6,"span"),e.SDv(7,78),e.qZA(),e._UZ(8,"br"),e.TgZ(9,"span"),e.tHW(10,79),e._UZ(11,"b"),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(12,"div",10),e._UZ(13,"input",80),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"label",81),e.SDv(16,82),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",83),e.YNc(19,Cg,2,0,"span",15),e.YNc(20,p_,2,0,"span",15),e.YNc(21,h_,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(22,"div",7),e.TgZ(23,"label",84),e.SDv(24,85),e.qZA(),e.TgZ(25,"div",10),e._UZ(26,"input",86),e.YNc(27,Hh,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(28,"div",7),e.TgZ(29,"label",87),e.SDv(30,88),e.qZA(),e.TgZ(31,"div",10),e.TgZ(32,"div",89),e._UZ(33,"input",90),e.TgZ(34,"span",91),e._UZ(35,"button",92),e._UZ(36,"cd-copy-2-clipboard-button",93),e.qZA(),e.YNc(37,__,2,0,"span",15),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(19),e.Q6J("ngIf",t.serviceForm.showError("api_port",o,"pattern")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("api_port",o,"min")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("api_port",o,"max")),e.xp6(2),e.Q6J("ngClass",e.VKq(8,Yp,e.DdM(7,Zp).includes(t.serviceForm.controls.service_type.value))),e.xp6(4),e.Q6J("ngIf",t.serviceForm.showError("api_user",o,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(11,Yp,e.DdM(10,Zp).includes(t.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",t.serviceForm.showError("api_password",o,"required"))}}function g_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,111),e.qZA())}function Ug(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,112),e.qZA())}function Uh(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,113),e.qZA())}function Ag(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,114),e.qZA())}function ov(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,115),e.qZA())}function Bh(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,116),e.qZA())}function Om(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,117),e.qZA())}function m_(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,118),e.qZA())}function b(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,119),e.qZA())}function x(n,s){1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",120),e.TgZ(2,"span"),e.SDv(3,121),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,122),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",10),e._UZ(8,"input",123),e.qZA(),e.qZA())}function G(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",99),e.TgZ(3,"span"),e.SDv(4,100),e.qZA(),e.TgZ(5,"cd-helper"),e.TgZ(6,"span"),e.SDv(7,101),e.qZA(),e.qZA(),e.qZA(),e.TgZ(8,"div",10),e._UZ(9,"input",102),e.YNc(10,g_,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(11,"div",7),e.TgZ(12,"label",103),e.TgZ(13,"span"),e.SDv(14,104),e.qZA(),e.TgZ(15,"cd-helper"),e.TgZ(16,"span"),e.SDv(17,105),e.qZA(),e.qZA(),e.qZA(),e.TgZ(18,"div",10),e._UZ(19,"input",106),e.YNc(20,Ug,2,0,"span",15),e.YNc(21,Uh,2,0,"span",15),e.YNc(22,Ag,2,0,"span",15),e.YNc(23,ov,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(24,"div",7),e.TgZ(25,"label",107),e.TgZ(26,"span"),e.SDv(27,108),e.qZA(),e.TgZ(28,"cd-helper"),e.TgZ(29,"span"),e.SDv(30,109),e.qZA(),e.qZA(),e.qZA(),e.TgZ(31,"div",10),e._UZ(32,"input",110),e.YNc(33,Bh,2,0,"span",15),e.YNc(34,Om,2,0,"span",15),e.YNc(35,m_,2,0,"span",15),e.YNc(36,b,2,0,"span",15),e.qZA(),e.qZA(),e.YNc(37,x,9,0,"div",16),e.BQk()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(2),e.Q6J("ngClass",e.VKq(14,Yp,e.DdM(13,d_).includes(t.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",t.serviceForm.showError("virtual_ip",o,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(17,Yp,e.DdM(16,d_).includes(t.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",t.serviceForm.showError("frontend_port",o,"pattern")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("frontend_port",o,"min")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("frontend_port",o,"max")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("frontend_port",o,"required")),e.xp6(2),e.Q6J("ngClass",e.VKq(20,Yp,e.DdM(19,d_).includes(t.serviceForm.controls.service_type.value))),e.xp6(8),e.Q6J("ngIf",t.serviceForm.showError("monitor_port",o,"pattern")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("monitor_port",o,"min")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("monitor_port",o,"max")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("monitor_port",o,"required")),e.xp6(1),e.Q6J("ngIf",!t.serviceForm.controls.unmanaged.value)}}function Se(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function We(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,133),e.qZA())}function Rt(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,134),e.qZA())}function rn(n,s){1&n&&(e.TgZ(0,"span",27),e.tHW(1,135),e._UZ(2,"strong"),e.N_p(),e.qZA())}function xn(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,140),e.qZA())}function Er(n,s){1&n&&(e.TgZ(0,"span",27),e.tHW(1,141),e._UZ(2,"strong"),e.N_p(),e.qZA())}function Ei(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",136),e.TgZ(2,"span"),e.SDv(3,137),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"span"),e.SDv(6,138),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",10),e._UZ(8,"input",139),e.YNc(9,xn,2,0,"span",15),e.YNc(10,Er,3,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(9),e.Q6J("ngIf",t.serviceForm.showError("engine_id",o,"required")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("engine_id",o,"snmpEngineIdPattern"))}}function fs(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.hij(" ",t," ")}}function Ua(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,146),e.qZA())}const mo=function(){return["SHA","MD5"]};function _o(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",142),e.SDv(2,143),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",144),e.TgZ(5,"option",12),e.SDv(6,145),e.qZA(),e.YNc(7,fs,2,2,"option",14),e.qZA(),e.YNc(8,Ua,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(5),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(3,mo)),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("auth_protocol",o,"required"))}}function La(n,s){if(1&n&&(e.TgZ(0,"option",26),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.hij(" ",t," ")}}const Sa=function(){return["DES","AES"]};function ti(n,s){1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",147),e.SDv(2,148),e.qZA(),e.TgZ(3,"div",10),e.TgZ(4,"select",149),e.TgZ(5,"option",12),e.SDv(6,150),e.qZA(),e.YNc(7,La,2,2,"option",14),e.qZA(),e.qZA(),e.qZA()),2&n&&(e.xp6(5),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(2,Sa)))}function Sr(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,154),e.qZA())}function Wr(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",151),e.TgZ(2,"span"),e.SDv(3,152),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",153),e.YNc(6,Sr,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(6),e.Q6J("ngIf",t.serviceForm.showError("snmp_community",o,"required"))}}function Bi(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,158),e.qZA())}function ao(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",155),e.TgZ(2,"span"),e.SDv(3,156),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",157),e.YNc(6,Bi,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(6),e.Q6J("ngIf",t.serviceForm.showError("snmp_v3_auth_username",o,"required"))}}function ba(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,162),e.qZA())}function Os(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",159),e.TgZ(2,"span"),e.SDv(3,160),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",161),e.YNc(6,ba,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(6),e.Q6J("ngIf",t.serviceForm.showError("snmp_v3_auth_password",o,"required"))}}function Xa(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,166),e.qZA())}function Dl(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",163),e.TgZ(2,"span"),e.SDv(3,164),e.qZA(),e.qZA(),e.TgZ(4,"div",10),e._UZ(5,"input",165),e.YNc(6,Xa,2,0,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(6),e.Q6J("ngIf",t.serviceForm.showError("snmp_v3_priv_password",o,"required"))}}const Cl=function(){return["V2c","V3"]};function jp(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"label",124),e.SDv(3,125),e.qZA(),e.TgZ(4,"div",10),e.TgZ(5,"select",126),e.NdJ("change",function(){return e.CHM(t),e.oxw().clearValidations()}),e.TgZ(6,"option",12),e.SDv(7,127),e.qZA(),e.YNc(8,Se,2,2,"option",14),e.qZA(),e.YNc(9,We,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(10,"div",7),e.TgZ(11,"label",128),e.TgZ(12,"span"),e.SDv(13,129),e.qZA(),e.TgZ(14,"cd-helper"),e.TgZ(15,"span"),e.SDv(16,130),e.qZA(),e.qZA(),e.qZA(),e.TgZ(17,"div",10),e._UZ(18,"input",131),e.YNc(19,Rt,2,0,"span",15),e.YNc(20,rn,3,0,"span",15),e.qZA(),e.qZA(),e.YNc(21,Ei,11,2,"div",16),e.YNc(22,_o,9,4,"div",16),e.YNc(23,ti,8,3,"div",16),e.TgZ(24,"fieldset"),e.TgZ(25,"legend"),e.SDv(26,132),e.qZA(),e.YNc(27,Wr,7,1,"div",16),e.YNc(28,ao,7,1,"div",16),e.YNc(29,Os,7,1,"div",16),e.YNc(30,Dl,7,1,"div",16),e.qZA(),e.BQk()}if(2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(6),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",e.DdM(12,Cl)),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("snmp_version",o,"required")),e.xp6(10),e.Q6J("ngIf",t.serviceForm.showError("snmp_destination",o,"required")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("snmp_destination",o,"snmpDestinationPattern")),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value),e.xp6(4),e.Q6J("ngIf","V2c"===t.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value),e.xp6(1),e.Q6J("ngIf","V3"===t.serviceForm.controls.snmp_version.value&&null!=t.serviceForm.controls.privacy_protocol.value)}}function d1(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,175),e.qZA())}function Yh(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,176),e.qZA())}function wm(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",170),e.TgZ(2,"span"),e.SDv(3,171),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,172),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e.TgZ(7,"textarea",173),e._uU(8,"              "),e.qZA(),e.TgZ(9,"input",174),e.NdJ("change",function(c){return e.CHM(t),e.oxw(2).fileUpload(c.target.files,"ssl_cert")}),e.qZA(),e.YNc(10,d1,2,0,"span",15),e.YNc(11,Yh,2,0,"span",15),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(10),e.Q6J("ngIf",t.serviceForm.showError("ssl_cert",o,"required")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("ssl_cert",o,"pattern"))}}function xm(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,181),e.qZA())}function sv(n,s){1&n&&(e.TgZ(0,"span",27),e.SDv(1,182),e.qZA())}function Cb(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"label",177),e.TgZ(2,"span"),e.SDv(3,178),e.qZA(),e.TgZ(4,"cd-helper"),e.SDv(5,179),e.qZA(),e.qZA(),e.TgZ(6,"div",10),e.TgZ(7,"textarea",180),e._uU(8,"              "),e.qZA(),e.TgZ(9,"input",174),e.NdJ("change",function(c){return e.CHM(t),e.oxw(2).fileUpload(c.target.files,"ssl_key")}),e.qZA(),e.YNc(10,xm,2,0,"span",15),e.YNc(11,sv,2,0,"span",15),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2),o=e.MAs(7);e.xp6(10),e.Q6J("ngIf",t.serviceForm.showError("ssl_key",o,"required")),e.xp6(1),e.Q6J("ngIf",t.serviceForm.showError("ssl_key",o,"pattern"))}}const I0=function(){return["rgw","ingress"]};function f1(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",7),e.TgZ(2,"div",17),e.TgZ(3,"div",18),e._UZ(4,"input",167),e.TgZ(5,"label",168),e.SDv(6,169),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(7,wm,12,2,"div",16),e.YNc(8,Cb,12,2,"div",16),e.BQk()),2&n){const t=e.oxw();e.xp6(7),e.Q6J("ngIf",t.serviceForm.controls.ssl.value),e.xp6(1),e.Q6J("ngIf",t.serviceForm.controls.ssl.value&&!e.DdM(2,I0).includes(t.serviceForm.controls.service_type.value))}}const Mb=function(){return["rgw","iscsi","ingress"]};let av=(()=>{class n extends Oa.E{constructor(t,o,c,g,C,D,P,j,W){super(),this.actionLabels=t,this.cephServiceService=o,this.formBuilder=c,this.hostService=g,this.poolService=C,this.router=D,this.taskWrapperService=P,this.route=j,this.activeModal=W,this.RGW_SVC_ID_PATTERN=/^([^.]+)(\.([^.]+)\.([^.]+))?$/,this.SNMP_DESTINATION_PATTERN=/^[^\:]+:[0-9]/,this.SNMP_ENGINE_ID_PATTERN=/^[0-9A-Fa-f]{10,64}/g,this.INGRESS_SUPPORTED_SERVICE_TYPES=["rgw","nfs"],this.hiddenServices=[],this.editing=!1,this.serviceTypes=[],this.serviceIds=[],this.labelClick=new yp.xQ,this.labelFocus=new yp.xQ,this.services=[],this.searchLabels=re=>(0,Bd.T)(re.pipe(Gf(200),(0,Df.x)()),this.labelFocus,this.labelClick.pipe((0,tp.h)(()=>!this.typeahead.isPopupOpen()))).pipe((0,su.U)(ie=>this.labels.filter(ge=>ge.toLowerCase().indexOf(ie.toLowerCase())>-1).slice(0,10))),this.resource="service",this.hosts={options:[],messages:new Fc.a({empty:"There are no hosts.",filter:"Filter hosts"})},this.createForm()}createForm(){this.serviceForm=this.formBuilder.group({service_type:[null,[vn.kI.required]],service_id:[null,[ds.h.requiredIf({service_type:"mds"}),ds.h.requiredIf({service_type:"nfs"}),ds.h.requiredIf({service_type:"iscsi"}),ds.h.requiredIf({service_type:"ingress"}),ds.h.composeIf({service_type:"rgw"},[vn.kI.required,ds.h.custom("rgwPattern",t=>!Ar().isEmpty(t)&&!this.RGW_SVC_ID_PATTERN.test(t))]),ds.h.custom("uniqueName",t=>this.serviceIds&&this.serviceIds.includes(t))]],placement:["hosts"],label:[null,[ds.h.requiredIf({placement:"label",unmanaged:!1})]],hosts:[[]],count:[null,[ds.h.number(!1)]],unmanaged:[!1],pool:[null,[ds.h.requiredIf({service_type:"iscsi"})]],rgw_frontend_port:[null,[ds.h.number(!1)]],trusted_ip_list:[null],api_port:[null,[ds.h.number(!1)]],api_user:[null,[ds.h.requiredIf({service_type:"iscsi",unmanaged:!1})]],api_password:[null,[ds.h.requiredIf({service_type:"iscsi",unmanaged:!1})]],backend_service:[null,[ds.h.requiredIf({service_type:"ingress"})]],virtual_ip:[null,[ds.h.requiredIf({service_type:"ingress"})]],frontend_port:[null,[ds.h.number(!1),ds.h.requiredIf({service_type:"ingress"})]],monitor_port:[null,[ds.h.number(!1),ds.h.requiredIf({service_type:"ingress"})]],virtual_interface_networks:[null],ssl:[!1],ssl_cert:["",[ds.h.composeIf({service_type:"rgw",unmanaged:!1,ssl:!0},[vn.kI.required,ds.h.pemCert()]),ds.h.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[vn.kI.required,ds.h.sslCert()]),ds.h.composeIf({service_type:"ingress",unmanaged:!1,ssl:!0},[vn.kI.required,ds.h.pemCert()])]],ssl_key:["",[ds.h.composeIf({service_type:"iscsi",unmanaged:!1,ssl:!0},[vn.kI.required,ds.h.sslPrivKey()])]],snmp_version:[null,[ds.h.requiredIf({service_type:"snmp-gateway"})]],snmp_destination:[null,{validators:[ds.h.requiredIf({service_type:"snmp-gateway"}),ds.h.custom("snmpDestinationPattern",t=>!Ar().isEmpty(t)&&!this.SNMP_DESTINATION_PATTERN.test(t))]}],engine_id:[null,[ds.h.requiredIf({service_type:"snmp-gateway"}),ds.h.custom("snmpEngineIdPattern",t=>!Ar().isEmpty(t)&&!this.SNMP_ENGINE_ID_PATTERN.test(t))]],auth_protocol:["SHA",[ds.h.requiredIf({service_type:"snmp-gateway"})]],privacy_protocol:[null],snmp_community:[null,[ds.h.requiredIf({snmp_version:"V2c"})]],snmp_v3_auth_username:[null,[ds.h.requiredIf({service_type:"snmp-gateway"})]],snmp_v3_auth_password:[null,[ds.h.requiredIf({service_type:"snmp-gateway"})]],snmp_v3_priv_password:[null,[ds.h.requiredIf({privacy_protocol:{op:"!empty"}})]]})}ngOnInit(){this.action=this.actionLabels.CREATE,this.router.url.includes("services/(modal:create")?this.pageURL="services":this.router.url.includes("services/(modal:edit")&&(this.editing=!0,this.pageURL="services",this.route.params.subscribe(t=>{this.serviceName=t.name,this.serviceType=t.type})),this.cephServiceService.list().subscribe(t=>{this.serviceList=t,this.services=t.filter(o=>this.INGRESS_SUPPORTED_SERVICE_TYPES.includes(o.service_type))}),this.cephServiceService.getKnownTypes().subscribe(t=>{this.hiddenServices.push("osd","container"),this.serviceTypes=Ar().difference(t,this.hiddenServices).sort()}),this.hostService.list("false").subscribe(t=>{const o=[];Ar().forEach(t,c=>{if(Ar().get(c,"sources.orchestrator",!1)){const g=new ch.$(!1,Ar().get(c,"hostname"),"");o.push(g)}}),this.hosts.options=[...o]}),this.hostService.getLabels().subscribe(t=>{this.labels=t}),this.poolService.getList().subscribe(t=>{this.pools=t}),this.editing&&(this.action=this.actionLabels.EDIT,this.disableForEditing(this.serviceType),this.cephServiceService.list(this.serviceName).subscribe(t=>{var o,c,g,C,D,P,j,W,re,ie,ge,_e,Le;if(["service_type","service_id","unmanaged"].forEach(ke=>{this.serviceForm.get(ke).setValue(t[0][ke])}),!t[0].unmanaged){const ke=Object.keys(t[0].placement)[0];let xe;xe=["hosts","label"].indexOf(ke)>=0?ke:"hosts",this.serviceForm.get("placement").setValue(xe),this.serviceForm.get("count").setValue(t[0].placement.count),(null===(o=t[0])||void 0===o?void 0:o.placement[xe])&&this.serviceForm.get(xe).setValue(null===(c=t[0])||void 0===c?void 0:c.placement[xe])}switch(this.serviceType){case"iscsi":["pool","api_password","api_user","trusted_ip_list","api_port"].forEach(pt=>{this.serviceForm.get(pt).setValue(t[0].spec[pt])}),this.serviceForm.get("ssl").setValue(null===(g=t[0].spec)||void 0===g?void 0:g.api_secure),(null===(C=t[0].spec)||void 0===C?void 0:C.api_secure)&&(this.serviceForm.get("ssl_cert").setValue(null===(D=t[0].spec)||void 0===D?void 0:D.ssl_cert),this.serviceForm.get("ssl_key").setValue(null===(P=t[0].spec)||void 0===P?void 0:P.ssl_key));break;case"rgw":this.serviceForm.get("rgw_frontend_port").setValue(null===(j=t[0].spec)||void 0===j?void 0:j.rgw_frontend_port),this.serviceForm.get("ssl").setValue(null===(W=t[0].spec)||void 0===W?void 0:W.ssl),(null===(re=t[0].spec)||void 0===re?void 0:re.ssl)&&this.serviceForm.get("ssl_cert").setValue(null===(ie=t[0].spec)||void 0===ie?void 0:ie.rgw_frontend_ssl_certificate);break;case"ingress":["backend_service","virtual_ip","frontend_port","monitor_port","virtual_interface_networks","ssl"].forEach(pt=>{this.serviceForm.get(pt).setValue(t[0].spec[pt])}),(null===(ge=t[0].spec)||void 0===ge?void 0:ge.ssl)&&(this.serviceForm.get("ssl_cert").setValue(null===(_e=t[0].spec)||void 0===_e?void 0:_e.ssl_cert),this.serviceForm.get("ssl_key").setValue(null===(Le=t[0].spec)||void 0===Le?void 0:Le.ssl_key));break;case"snmp-gateway":["snmp_version","snmp_destination"].forEach(pt=>{this.serviceForm.get(pt).setValue(t[0].spec[pt])}),"V3"===this.serviceForm.getValue("snmp_version")?["engine_id","auth_protocol","privacy_protocol","snmp_v3_auth_username","snmp_v3_auth_password","snmp_v3_priv_password"].forEach(ht=>{null!==ht&&("snmp_v3_auth_username"===ht||"snmp_v3_auth_password"===ht||"snmp_v3_priv_password"===ht?this.serviceForm.get(ht).setValue(t[0].spec.credentials[ht]):this.serviceForm.get(ht).setValue(t[0].spec[ht]))}):this.serviceForm.get("snmp_community").setValue(t[0].spec.credentials.snmp_community)}}))}getServiceIds(t){this.serviceIds=this.serviceList.filter(o=>o.service_type===t).map(o=>o.service_id)}disableForEditing(t){switch(["service_type","service_id"].forEach(c=>{this.serviceForm.get(c).disable()}),t){case"ingress":this.serviceForm.get("backend_service").disable()}}fileUpload(t,o){const c=t[0],g=new FileReader;g.addEventListener("load",C=>{const D=this.serviceForm.get(o);D.setValue(C.target.result),D.markAsDirty(),D.markAsTouched(),D.updateValueAndValidity()}),g.readAsText(c,"utf8")}prePopulateId(){const t=this.serviceForm.get("service_id"),o=this.serviceForm.getValue("backend_service");t.reset({value:o,disabled:!0})}onSubmit(){var t,o,c,g,C;const D=this,P=this.serviceForm.getRawValue(),j=P.service_type;let W=`service/${ki.MQ.CREATE}`;this.editing&&(W=`service/${ki.MQ.EDIT}`);const re={service_type:j,placement:{},unmanaged:P.unmanaged};let ie;if("rgw"===j){const Le=P.service_id.match(this.RGW_SVC_ID_PATTERN);ie=Le[1],Le[3]&&(re.rgw_realm=Le[3],re.rgw_zone=Le[4])}else ie=P.service_id;const ge=ie;let _e=j;switch(Ar().isString(ge)&&!Ar().isEmpty(ge)&&(_e=`${j}.${ge}`,re.service_id=ge),j){case"ingress":re.backend_service=P.backend_service,re.service_id=P.backend_service,Ar().isNumber(P.frontend_port)&&P.frontend_port>0&&(re.frontend_port=P.frontend_port),Ar().isString(P.virtual_ip)&&!Ar().isEmpty(P.virtual_ip)&&(re.virtual_ip=P.virtual_ip.trim()),Ar().isNumber(P.monitor_port)&&P.monitor_port>0&&(re.monitor_port=P.monitor_port);break;case"iscsi":re.pool=P.pool;break;case"snmp-gateway":re.credentials={},re.snmp_version=P.snmp_version,re.snmp_destination=P.snmp_destination,"V3"===P.snmp_version?(re.engine_id=P.engine_id,re.auth_protocol=P.auth_protocol,re.credentials.snmp_v3_auth_username=P.snmp_v3_auth_username,re.credentials.snmp_v3_auth_password=P.snmp_v3_auth_password,null!==P.privacy_protocol&&(re.privacy_protocol=P.privacy_protocol,re.credentials.snmp_v3_priv_password=P.snmp_v3_priv_password)):re.credentials.snmp_community=P.snmp_community}if(!P.unmanaged){switch(P.placement){case"hosts":P.hosts.length>0&&(re.placement.hosts=P.hosts);break;case"label":re.placement.label=P.label}switch(Ar().isNumber(P.count)&&P.count>0&&(re.placement.count=P.count),j){case"rgw":Ar().isNumber(P.rgw_frontend_port)&&P.rgw_frontend_port>0&&(re.rgw_frontend_port=P.rgw_frontend_port),re.ssl=P.ssl,P.ssl&&(re.rgw_frontend_ssl_certificate=null===(t=P.ssl_cert)||void 0===t?void 0:t.trim());break;case"iscsi":Ar().isString(P.trusted_ip_list)&&!Ar().isEmpty(P.trusted_ip_list)&&(re.trusted_ip_list=P.trusted_ip_list.trim()),Ar().isNumber(P.api_port)&&P.api_port>0&&(re.api_port=P.api_port),re.api_user=P.api_user,re.api_password=P.api_password,re.api_secure=P.ssl,P.ssl&&(re.ssl_cert=null===(o=P.ssl_cert)||void 0===o?void 0:o.trim(),re.ssl_key=null===(c=P.ssl_key)||void 0===c?void 0:c.trim());break;case"ingress":re.ssl=P.ssl,P.ssl&&(re.ssl_cert=null===(g=P.ssl_cert)||void 0===g?void 0:g.trim(),re.ssl_key=null===(C=P.ssl_key)||void 0===C?void 0:C.trim()),re.virtual_interface_networks=P.virtual_interface_networks}}this.taskWrapperService.wrapTaskAroundCall({task:new cl.R(W,{service_name:_e}),call:this.editing?this.cephServiceService.update(re):this.cephServiceService.create(re)}).subscribe({error(){D.serviceForm.setErrors({cdSubmitButton:!0})},complete:()=>{"services"===this.pageURL?this.router.navigate([this.pageURL,{outlets:{modal:null}}]):this.activeModal.close()}})}clearValidations(){const t=this.serviceForm.getValue("snmp_version"),o=this.serviceForm.getValue("privacy_protocol");"V3"===t?this.serviceForm.get("snmp_community").clearValidators():(this.serviceForm.get("engine_id").clearValidators(),this.serviceForm.get("auth_protocol").clearValidators(),this.serviceForm.get("privacy_protocol").clearValidators(),this.serviceForm.get("snmp_v3_auth_username").clearValidators(),this.serviceForm.get("snmp_v3_auth_password").clearValidators()),null===o&&this.serviceForm.get("snmp_v3_priv_password").clearValidators()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(Qt),e.Y36(id.O),e.Y36(ql),e.Y36(V_.q),e.Y36(Yo.F0),e.Y36(Ll.P),e.Y36(Yo.gz),e.Y36(lt.Kz))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-service-form"]],viewQuery:function(t,o){if(1&t&&e.Gf(lt.dR,5),2&t){let c;e.iGM(c=e.CRH())&&(o.typeahead=c.first)}},inputs:{hiddenServices:"hiddenServices",editing:"editing",serviceName:"serviceName",serviceType:"serviceType"},features:[e.qOj],decls:41,vars:31,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe,U,pt,ht,wt,It,dn,Lt,Dn,Mn,$r,ur,Pr,xr,fn,Nn,$n,Qn,Tn,Yr,ji,ii,Ui,Jr,An,hn,qr,Ri,qi,Zo,bo,Ys,Ws,wi,lo,go,Ge,St,Et,Bn,_r,Gr,xi,Zs,jo,sl,ml,nu,Xu,Pf,Fl,qc,up,Eh,Wp,Th,ru,Zc,Ip,Yi,lr,mi,eo,Lo,Xo,rs,us,ma,Ka,xu,Kn,Pi,as,Zi,xs,is,hu,Al;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Type",o="-- Select a service type --",c="Unmanaged",g="This field is required.",C="Backend Service",D="Loading...",P="-- No service available --",j="-- Select an existing service --",W="This field is required.",re="Id",ie="This field is required.",ge="This service id is already in use.",_e="The value does not match the pattern " + "\ufffd#2\ufffd" + "<service_id>[.<realm_name>.<zone_name>]" + "\ufffd/#2\ufffd" + ".",Le="Placement",Re="Hosts",ke="Label",xe="Label",U="This field is required.",pt="Hosts",ht="Count",wt="Only that number of daemons will be created.",It="The value must be at least 1.",dn="The entered value needs to be a number.",Lt="Port",Dn="The entered value needs to be a number.",Mn="The value must be at least 1.",$r="The value cannot exceed 65535.",ur="Pool",Pr="Loading...",xr="-- No pools available --",fn="-- Select a pool --",Nn="This field is required.",$n="Trusted IPs",Qn="Comma separated list of IP addresses.",Tn="Please add the " + "\ufffd#11\ufffd" + "Ceph Manager" + "\ufffd/#11\ufffd" + " IP addresses here, otherwise the iSCSI gateways can't be reached.",Yr="Port",ji="User",ii="Password",Ui="The entered value needs to be a number.",Jr="The value must be at least 1.",An="The value cannot exceed 65535.",hn="This field is required.",qr="This field is required.",Ri="Virtual IP",qi="The virtual IP address and subnet (in CIDR notation) where the ingress service will be available.",Zo="Frontend Port",bo="The port used to access the ingress service.",Ys="Monitor Port",Ws="The port used by haproxy for load balancer status.",wi="This field is required.",lo="The entered value needs to be a number.",go="The value must be at least 1.",Ge="The value cannot exceed 65535.",St="This field is required.",Et="The entered value needs to be a number.",Bn="The value must be at least 1.",_r="The value cannot exceed 65535.",Gr="This field is required.",xi="CIDR Networks",Zs="A list of networks to identify which network interface to use for the virtual IP address.",jo="Version",sl="-- Select SNMP version --",ml="Destination",nu="Must be of the format hostname:port.",Xu="Credentials",Pf="This field is required.",Fl="This field is required.",qc="The value does not match the pattern: " + "\ufffd#2\ufffd" + "hostname:port" + "\ufffd/#2\ufffd" + "",up="Engine Id",Eh="Unique identifier for the device (in hex).",Wp="This field is required.",Th="The value does not match the pattern: " + "\ufffd#2\ufffd" + "Must be in hexadecimal and length must be multiple of 2 with min value = 10 amd max value = 64." + "\ufffd/#2\ufffd" + "",ru="Auth Protocol",Zc="-- Select auth protocol --",Ip="This field is required.",Yi="Privacy Protocol",lr="-- Select privacy protocol --",mi="SNMP Community",eo="This field is required.",Lo="Username",Xo="This field is required.",rs="Password",us="This field is required.",ma="Encryption",Ka="This field is required.",xu="SSL",Kn="Certificate",Pi="The SSL certificate in PEM format.",as="This field is required.",Zi="Invalid SSL certificate.",xs="Private key",is="The SSL private key in PEM format.",hu="This field is required.",Al="Invalid SSL private key.",[[3,"pageURL","modalRef"],[1,"modal-title"],s,[1,"modal-content"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","service_type",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["id","service_type","name","service_type","formControlName","service_type",1,"form-control",3,"change"],[3,"ngValue"],o,[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["id","unmanaged","type","checkbox","formControlName","unmanaged",1,"custom-control-input"],["for","unmanaged",1,"custom-control-label"],c,[4,"ngIf"],[1,"modal-footer"],[1,"text-right"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],g,["for","backend_service",1,"cd-col-form-label",3,"ngClass"],C,["id","backend_service","name","backend_service","formControlName","backend_service",1,"form-control",3,"change"],[3,"ngValue",4,"ngIf"],D,P,j,W,["for","service_id",1,"cd-col-form-label",3,"ngClass"],re,["id","service_id","type","text","formControlName","service_id",1,"form-control"],ie,ge,_e,["for","placement",1,"cd-col-form-label"],Le,["id","placement","formControlName","placement",1,"form-control"],["value","hosts"],Re,["value","label"],ke,["for","label",1,"cd-col-form-label"],xe,["id","label","type","text","formControlName","label",1,"form-control",3,"ngbTypeahead","focus","click"],U,["for","hosts",1,"cd-col-form-label"],pt,["id","hosts",3,"data","options","messages"],["for","count",1,"cd-col-form-label"],ht,wt,["id","count","type","number","formControlName","count","min","1",1,"form-control"],It,dn,["for","rgw_frontend_port",1,"cd-col-form-label"],Lt,["id","rgw_frontend_port","type","number","formControlName","rgw_frontend_port","min","1","max","65535",1,"form-control"],Dn,Mn,$r,["for","pool",1,"cd-col-form-label","required"],ur,["id","pool","name","pool","formControlName","pool",1,"form-control"],Pr,xr,fn,Nn,["for","trusted_ip_list",1,"cd-col-form-label"],$n,Qn,Tn,["id","trusted_ip_list","type","text","formControlName","trusted_ip_list",1,"form-control"],["for","api_port",1,"cd-col-form-label"],Yr,["id","api_port","type","number","formControlName","api_port","min","1","max","65535",1,"form-control"],["for","api_user",1,"cd-col-form-label",3,"ngClass"],ji,["id","api_user","type","text","formControlName","api_user",1,"form-control"],["for","api_password",1,"cd-col-form-label",3,"ngClass"],ii,[1,"input-group"],["id","api_password","type","password","autocomplete","new-password","formControlName","api_password",1,"form-control"],[1,"input-group-append"],["type","button","cdPasswordButton","api_password",1,"btn","btn-light"],["source","api_password"],Ui,Jr,An,hn,qr,["for","virtual_ip",1,"cd-col-form-label",3,"ngClass"],Ri,qi,["id","virtual_ip","type","text","formControlName","virtual_ip",1,"form-control"],["for","frontend_port",1,"cd-col-form-label",3,"ngClass"],Zo,bo,["id","frontend_port","type","number","formControlName","frontend_port","min","1","max","65535",1,"form-control"],["for","monitor_port",1,"cd-col-form-label",3,"ngClass"],Ys,Ws,["id","monitor_port","type","number","formControlName","monitor_port","min","1","max","65535",1,"form-control"],wi,lo,go,Ge,St,Et,Bn,_r,Gr,["for","virtual_interface_networks",1,"cd-col-form-label"],xi,Zs,["id","virtual_interface_networks","type","text","formControlName","virtual_interface_networks",1,"form-control"],["for","snmp_version",1,"cd-col-form-label","required"],jo,["id","snmp_version","name","snmp_version","formControlName","snmp_version",1,"form-control",3,"change"],sl,["for","snmp_destination",1,"cd-col-form-label","required"],ml,nu,["id","snmp_destination","type","text","formControlName","snmp_destination",1,"form-control"],Xu,Pf,Fl,qc,["for","engine_id",1,"cd-col-form-label","required"],up,Eh,["id","engine_id","type","text","formControlName","engine_id",1,"form-control"],Wp,Th,["for","auth_protocol",1,"cd-col-form-label","required"],ru,["id","auth_protocol","name","auth_protocol","formControlName","auth_protocol",1,"form-control"],Zc,Ip,["for","privacy_protocol",1,"cd-col-form-label"],Yi,["id","privacy_protocol","name","privacy_protocol","formControlName","privacy_protocol",1,"form-control"],lr,["for","snmp_community",1,"cd-col-form-label","required"],mi,["id","snmp_community","type","text","formControlName","snmp_community",1,"form-control"],eo,["for","snmp_v3_auth_username",1,"cd-col-form-label","required"],Lo,["id","snmp_v3_auth_username","type","text","formControlName","snmp_v3_auth_username",1,"form-control"],Xo,["for","snmp_v3_auth_password",1,"cd-col-form-label","required"],rs,["id","snmp_v3_auth_password","type","password","formControlName","snmp_v3_auth_password",1,"form-control"],us,["for","snmp_v3_priv_password",1,"cd-col-form-label","required"],ma,["id","snmp_v3_priv_password","type","password","formControlName","snmp_v3_priv_password",1,"form-control"],Ka,["id","ssl","type","checkbox","formControlName","ssl",1,"custom-control-input"],["for","ssl",1,"custom-control-label"],xu,["for","ssl_cert",1,"cd-col-form-label"],Kn,Pi,["id","ssl_cert","formControlName","ssl_cert","rows","5",1,"form-control","resize-vertical","text-monospace","text-pre"],["type","file",3,"change"],as,Zi,["for","ssl_key",1,"cd-col-form-label"],xs,is,["id","ssl_key","formControlName","ssl_key","rows","5",1,"form-control","resize-vertical","text-monospace","text-pre"],hu,Al]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.qZA(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.TgZ(13,"select",11),e.NdJ("change",function(g){return o.getServiceIds(g.target.value)}),e.TgZ(14,"option",12),e.SDv(15,13),e.qZA(),e.YNc(16,Rf,2,2,"option",14),e.qZA(),e.YNc(17,dh,2,0,"span",15),e.qZA(),e.qZA(),e.YNc(18,fh,10,9,"div",16),e.YNc(19,Eg,8,7,"div",16),e.TgZ(20,"div",7),e.TgZ(21,"div",17),e.TgZ(22,"div",18),e._UZ(23,"input",19),e.TgZ(24,"label",20),e.SDv(25,21),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(26,kg,9,0,"div",16),e.YNc(27,Ep,6,2,"div",16),e.YNc(28,ph,5,3,"div",16),e.YNc(29,Am,10,2,"div",16),e.YNc(30,Tp,9,3,"ng-container",22),e.YNc(31,Sg,10,5,"div",16),e.YNc(32,Mg,38,13,"ng-container",22),e.YNc(33,G,38,22,"ng-container",22),e.YNc(34,jp,31,13,"ng-container",22),e.YNc(35,f1,9,3,"ng-container",22),e.qZA(),e.TgZ(36,"div",23),e.TgZ(37,"div",24),e.TgZ(38,"cd-form-button-panel",25),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(39,"titlecase"),e.ALo(40,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const c=e.MAs(7);e.Q6J("pageURL",o.pageURL)("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,22,o.action))(e.lcZ(4,24,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.serviceForm),e.xp6(8),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.serviceTypes),e.xp6(1),e.Q6J("ngIf",o.serviceForm.showError("service_type",c,"required")),e.xp6(1),e.Q6J("ngIf","ingress"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","snmp-gateway"!==o.serviceForm.controls.service_type.value),e.xp6(7),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value&&"label"===o.serviceForm.controls.placement.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value&&"hosts"===o.serviceForm.controls.placement.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value&&"rgw"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","iscsi"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value&&"iscsi"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","ingress"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf","snmp-gateway"===o.serviceForm.controls.service_type.value),e.xp6(1),e.Q6J("ngIf",!o.serviceForm.controls.unmanaged.value&&e.DdM(30,Mb).includes(o.serviceForm.controls.service_type.value)),e.xp6(3),e.Q6J("form",o.serviceForm)("submitText",e.lcZ(39,26,o.action)+" "+e.lcZ(40,28,o.resource))}},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,$a.P,ca.o,vn.EJ,Ha.b,vn.JJ,vn.u,vn.YN,vn.Kr,_.sg,_.O5,vn.Wl,nl.p,_.mk,vn.Fj,lt.dR,k.m,E.S,vn.wV,vn.qQ,vn.Fd,u_.C,Uc.s],pipes:[_.rS,K.m],styles:[""]}),n})();function np(n,s){if(1&n&&(e.ynx(0),e._UZ(1,"cd-service-daemon-list",1),e.BQk()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("serviceName",t.selection.service_name)}}let lv=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-service-details"]],inputs:{permissions:"permissions",selection:"selection"},decls:1,vars:1,consts:[[4,"ngIf"],[3,"serviceName"]],template:function(t,o){1&t&&e.YNc(0,np,2,1,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,Ah],styles:[""]}),n})();function uv(n,s){1&n&&e._UZ(0,"cd-orchestrator-doc-panel")}function Dm(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"cd-table",2),e.NdJ("fetchData",function(c){return e.CHM(t),e.oxw().getServices(c)})("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e._UZ(2,"cd-table-actions",3),e._UZ(3,"cd-service-details",4),e.qZA(),e.BQk()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("data",t.services)("columns",t.columns)("autoReload",5e3)("hasDetails",t.hasDetails),e.xp6(1),e.Q6J("permission",t.permissions.hosts)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("permissions",t.permissions)("selection",t.expandedRow)}}const mc="services";let qd=(()=>{class n extends Gl.o{constructor(t,o,c,g,C,D,P,j){super(),this.actionLabels=t,this.authStorageService=o,this.modalService=c,this.orchService=g,this.cephServiceService=C,this.relativeDatePipe=D,this.taskWrapperService=P,this.router=j,this.hiddenColumns=[],this.hiddenServices=[],this.hasDetails=!0,this.routedModal=!0,this.showDocPanel=!1,this.actionOrchFeatures={create:[fu.SERVICE_CREATE],update:[fu.SERVICE_EDIT],delete:[fu.SERVICE_DELETE]},this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new hl.r,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:No.P.add,click:()=>this.openModal(),name:this.actionLabels.CREATE,canBePrimary:W=>!W.hasSelection,disable:W=>this.getDisable("create",W)},{permission:"update",icon:No.P.edit,click:()=>this.openModal(!0),name:this.actionLabels.EDIT,disable:W=>this.getDisable("update",W)},{permission:"delete",icon:No.P.destroy,click:()=>this.deleteAction(),name:this.actionLabels.DELETE,disable:W=>this.getDisable("delete",W)}]}openModal(t=!1){var o,c,g;if(this.routedModal)this.router.navigate(t?[mc,{outlets:{modal:[ki.MQ.EDIT,this.selection.first().service_type,this.selection.first().service_name]}}]:[mc,{outlets:{modal:[ki.MQ.CREATE]}}]);else{let C={};C=t?{serviceName:null===(o=this.selection.first())||void 0===o?void 0:o.service_name,serviceType:null===(g=null===(c=this.selection)||void 0===c?void 0:c.first())||void 0===g?void 0:g.service_type,hiddenServices:this.hiddenServices,editing:t}:{hiddenServices:this.hiddenServices,editing:t},this.bsModalRef=this.modalService.show(av,C,{size:"lg"})}}ngOnInit(){const t=[{name:"Service",prop:"service_name",flexGrow:1},{name:"Placement",prop:"",pipe:new l_,flexGrow:2},{name:"Running",prop:"status.running",flexGrow:1},{name:"Size",prop:"status.size",flexGrow:1},{name:"Last Refreshed",prop:"status.last_refresh",pipe:this.relativeDatePipe,flexGrow:1}];this.columns=t.filter(o=>!this.hiddenColumns.includes(o.prop)),this.orchService.status().subscribe(o=>{this.orchStatus=o,this.showDocPanel=!o.available})}ngOnChanges(){var t;(null===(t=this.orchStatus)||void 0===t?void 0:t.available)&&(this.services=[],this.table.reloadData())}getDisable(t,o){var c;return"delete"===t&&!(null==o?void 0:o.hasSingleSelection)||"update"===t&&["osd","container"].indexOf(null===(c=this.selection.first())||void 0===c?void 0:c.service_type)>=0||this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[t])}getServices(t){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(o=>{this.services=o,this.services=this.services.filter(c=>!this.hiddenServices.includes(c.service_name)),this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],t.error()}))}updateSelection(t){this.selection=t}deleteAction(){const t=this.selection.first();this.modalService.show(zl.M,{itemDescription:"Service",itemNames:[t.service_name],actionDescription:"delete",submitActionObservable:()=>this.taskWrapperService.wrapTaskAroundCall({task:new cl.R(`service/${ki.MQ.DELETE}`,{service_name:t.service_name}),call:this.cephServiceService.delete(t.service_name)}).pipe((0,vp.g)(5e3))})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(_t.j),e.Y36(Ul.Z),e.Y36(Cc),e.Y36(Qt),e.Y36(bt.h),e.Y36(Ll.P),e.Y36(Yo.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-services"]],viewQuery:function(t,o){if(1&t&&e.Gf(Hs.a,7),2&t){let c;e.iGM(c=e.CRH())&&(o.table=c.first)}},inputs:{hostname:"hostname",hiddenColumns:"hiddenColumns",hiddenServices:"hiddenServices",hasDetails:"hasDetails",routedModal:"routedModal"},features:[e._Bn([{provide:Sl.F,useValue:new Sl.F(mc)}]),e.qOj,e.TTD],decls:3,vars:2,consts:[[4,"ngIf"],["name","modal"],["identifier","service_name","forceIdentifier","true","columnMode","flex","selectionType","single",3,"data","columns","autoReload","hasDetails","fetchData","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"permissions","selection"]],template:function(t,o){1&t&&(e.YNc(0,uv,1,0,"cd-orchestrator-doc-panel",0),e.YNc(1,Dm,4,9,"ng-container",0),e._UZ(2,"router-outlet",1)),2&t&&(e.Q6J("ngIf",o.showDocPanel),e.xp6(1),e.Q6J("ngIf",null==o.orchStatus?null:o.orchStatus.available))},directives:[_.O5,Yo.lC,au,Hs.a,Xs.K,lv],styles:[""]}),n})();const Iu=function(){return["services","status"]};let p1=(()=>{class n{constructor(t,o,c,g,C){this.wizardStepsService=t,this.cephServiceService=o,this.dimlessBinary=c,this.hostService=g,this.osdService=C,this.hosts=[],this.totalCapacity=0,this.services=[],this.totalCPUs=0,this.totalMemory=0}ngOnInit(){var t,o,c;let g=0,C=0,D=0,P=0,j=0,W=0;this.hostService.list("true").subscribe(re=>{this.hosts=re,this.hostsCount=this.hosts.length,Ar().forEach(this.hosts,ie=>{this.totalCPUs=this.totalCPUs+ie.cpu_count,this.totalMemory=this.totalMemory+1024*ie.memory_total_kb}),this.totalMemory=this.dimlessBinary.transform(this.totalMemory)}),this.osdService.osdDevices.data&&(g=null===(t=this.osdService.osdDevices.data)||void 0===t?void 0:t.length,C=this.osdService.osdDevices.data.capacity),this.osdService.osdDevices.wal&&(D=null===(o=this.osdService.osdDevices.wal)||void 0===o?void 0:o.length,P=this.osdService.osdDevices.wal.capacity),this.osdService.osdDevices.db&&(j=null===(c=this.osdService.osdDevices.db)||void 0===c?void 0:c.length,W=this.osdService.osdDevices.db.capacity),this.totalDevices=g+D+j,this.osdService.osdDevices.totalDevices=this.totalDevices,this.totalCapacity=C+P+W}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Bu),e.Y36(Qt),e.Y36(yn.$),e.Y36(ql),e.Y36(Ji))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-create-cluster-review"]],decls:43,vars:12,consts:function(){let s,t,o,c,g,C,D,P;return s="Cluster Resources",t="Hosts",o="Storage Capacity",c="Number of devices",g="Raw capacity",C="CPUs",D="Memory",P="Host Details",[[1,"row"],[1,"col-lg-3"],[1,"cd-header"],s,[1,"table","table-striped"],[1,"bold"],t,o,c,g,[1,"pt-5"],C,D,[1,"col-lg-9"],P,[3,"hiddenColumns","hideToolHeader","hasTableDetails","showGeneralActionsOnly"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"fieldset"),e.TgZ(3,"legend",2),e.SDv(4,3),e.qZA(),e.TgZ(5,"table",4),e.TgZ(6,"tr"),e.TgZ(7,"td",5),e.SDv(8,6),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.qZA(),e.qZA(),e.TgZ(11,"tr"),e.TgZ(12,"td"),e.TgZ(13,"dl"),e.TgZ(14,"dt"),e.TgZ(15,"p"),e.SDv(16,7),e.qZA(),e.qZA(),e.TgZ(17,"dd"),e.TgZ(18,"p"),e.SDv(19,8),e.qZA(),e.qZA(),e.TgZ(20,"dd"),e.TgZ(21,"p"),e.SDv(22,9),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(23,"td",10),e.TgZ(24,"p"),e._uU(25),e.qZA(),e.TgZ(26,"p"),e._uU(27),e.ALo(28,"dimlessBinary"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(29,"tr"),e.TgZ(30,"td",5),e.SDv(31,11),e.qZA(),e.TgZ(32,"td"),e._uU(33),e.qZA(),e.qZA(),e.TgZ(34,"tr"),e.TgZ(35,"td",5),e.SDv(36,12),e.qZA(),e.TgZ(37,"td"),e._uU(38),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(39,"div",13),e.TgZ(40,"legend",2),e.SDv(41,14),e.qZA(),e._UZ(42,"cd-hosts",15),e.qZA(),e.qZA()),2&t&&(e.xp6(10),e.Oqu(o.hostsCount),e.xp6(15),e.Oqu(o.totalDevices),e.xp6(2),e.hij(" ",e.lcZ(28,9,o.totalCapacity),""),e.xp6(6),e.Oqu(o.totalCPUs),e.xp6(5),e.Oqu(o.totalMemory),e.xp6(4),e.Q6J("hiddenColumns",e.DdM(11,Iu))("hideToolHeader",!0)("hasTableDetails",!1)("showGeneralActionsOnly",!0))},directives:[sh],pipes:[yn.$],styles:["cd-hosts[_ngcontent-%COMP%]     .nav{display:none}"]}),n})();const Rm=["skipConfirmTpl"];function vu(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",3),e.TgZ(1,"div",4),e.TgZ(2,"div",5),e._UZ(3,"img",6),e.TgZ(4,"h3",7),e.SDv(5,8),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"h4",10),e.SDv(8,11),e.qZA(),e.TgZ(9,"div",12),e.TgZ(10,"button",13),e.NdJ("click",function(){return e.CHM(t),e.oxw().createCluster()}),e.SDv(11,14),e.qZA(),e.TgZ(12,"button",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().skipClusterCreation()}),e.SDv(13,16),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(3),e.Q6J("src",t.projectConstants.cephLogo,e.LSH),e.xp6(2),e.pQV(t.projectConstants.projectName),e.QtT(5)}}const es=function(){return["services"]};function eu(n,s){1&n&&(e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,31),e.qZA(),e._UZ(3,"br"),e._UZ(4,"cd-hosts",32),e.qZA()),2&n&&(e.xp6(4),e.Q6J("hiddenColumns",e.DdM(4,es))("hideMaintenance",!0)("hasTableDetails",!1)("showGeneralActionsOnly",!0))}function cv(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,33),e.qZA(),e.TgZ(3,"div",34),e.TgZ(4,"cd-osd-form",35),e.NdJ("emitDriveGroup",function(c){return e.CHM(t),e.oxw(2).setDriveGroup(c)})("emitDeploymentOption",function(c){return e.CHM(t),e.oxw(2).setDeploymentOptions(c)})("emitMode",function(c){return e.CHM(t),e.oxw(2).setDeploymentMode(c)}),e.qZA(),e.qZA(),e.qZA()}2&n&&(e.xp6(4),e.Q6J("hideTitle",!0)("hideSubmitBtn",!0))}const Zh=function(){return["mon","mgr","crash","agent"]},Cd=function(){return["status.running","status.size","status.last_refresh"]};function dv(n,s){1&n&&(e.TgZ(0,"div",29),e.TgZ(1,"h4",30),e.SDv(2,36),e.qZA(),e._UZ(3,"br"),e._UZ(4,"cd-services",37),e.qZA()),2&n&&(e.xp6(4),e.Q6J("hasDetails",!1)("hiddenServices",e.DdM(4,Zh))("hiddenColumns",e.DdM(5,Cd))("routedModal",!1))}function Sp(n,s){1&n&&(e.TgZ(0,"div",29),e._UZ(1,"cd-create-cluster-review"),e.qZA())}function Vf(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",17),e.TgZ(1,"div",18),e.SDv(2,19),e.qZA(),e.TgZ(3,"div",20),e._UZ(4,"cd-wizard",21),e.TgZ(5,"div",22),e.ynx(6,23),e.YNc(7,eu,5,5,"div",24),e.YNc(8,cv,5,2,"div",24),e.YNc(9,dv,5,6,"div",24),e.YNc(10,Sp,2,0,"div",24),e.BQk(),e.qZA(),e.qZA(),e.TgZ(11,"div",25),e.TgZ(12,"button",26),e.NdJ("click",function(){return e.CHM(t),e.oxw().onNextStep()}),e.SDv(13,27),e.qZA(),e.TgZ(14,"cd-back-button",28),e.NdJ("backAction",function(){return e.CHM(t),e.oxw().onPreviousStep()}),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(4),e.Q6J("stepsTitle",t.stepTitles),e.xp6(2),e.Q6J("ngSwitch",null==t.currentStep?null:t.currentStep.stepIndex),e.xp6(1),e.Q6J("ngSwitchCase","1"),e.xp6(1),e.Q6J("ngSwitchCase","2"),e.xp6(1),e.Q6J("ngSwitchCase","3"),e.xp6(1),e.Q6J("ngSwitchCase","4"),e.xp6(3),e.pQV(t.showSubmitButtonLabel()),e.QtT(13),e.xp6(1),e.Q6J("name",t.showCancelButtonLabel())}}function fv(n,s){1&n&&(e.TgZ(0,"span"),e.tHW(1,38),e._UZ(2,"strong"),e.N_p(),e.qZA(),e.TgZ(3,"div",39),e.SDv(4,40),e.qZA())}let pv=(()=>{class n{constructor(t,o,c,g,C,D,P,j,W,re){this.authStorageService=t,this.wizardStepsService=o,this.router=c,this.hostService=g,this.notificationService=C,this.actionLabels=D,this.clusterService=P,this.modalService=j,this.taskWrapper=W,this.osdService=re,this.projectConstants=ki.$x,this.stepTitles=["Add Hosts","Create OSDs","Create Services","Review"],this.startClusterCreation=!1,this.observables=[],this.driveGroup=new Xd,this.driveGroups=[],this.selectedOption={},this.simpleDeployment=!0,this.submitAction=new e.vpe,this.permissions=this.authStorageService.getPermissions(),this.currentStepSub=this.wizardStepsService.getCurrentStep().subscribe(ie=>{this.currentStep=ie}),this.currentStep.stepIndex=1}ngOnInit(){this.osdService.getDeploymentOptions().subscribe(t=>{this.deploymentOption=t,this.selectedOption={option:t.recommended_option}})}createCluster(){this.startClusterCreation=!0}skipClusterCreation(){const t={titleText:"Warning",buttonText:"Continue",warning:!0,bodyTpl:this.skipConfirmTpl,showSubmit:!0,onSubmit:()=>{this.clusterService.updateStatus("POST_INSTALLED").subscribe({error:()=>this.modalRef.close(),complete:()=>{this.notificationService.show(_a.k.info,"Cluster expansion skipped by user"),this.router.navigate(["/dashboard"]),this.modalRef.close()}})}};this.modalRef=this.modalService.show(nd.Y,t)}onSubmit(){var t;if(this.hostService.list("false").subscribe(o=>{o.forEach(c=>{const g=c.labels.indexOf("_no_schedule",0);g>-1&&(c.labels.splice(g,1),this.observables.push(this.hostService.update(c.hostname,!0,c.labels)))}),(0,Oc.D)(this.observables).pipe((0,hf.x)(()=>this.clusterService.updateStatus("POST_INSTALLED").subscribe(()=>{this.notificationService.show(_a.k.success,"Cluster expansion was successful"),this.router.navigate(["/dashboard"])}))).subscribe({error:c=>c.preventDefault()})}),this.driveGroup){const o=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${o}-${Ar().now()}`),this.driveGroups.push(this.driveGroup.spec)}if(this.simpleDeployment){const o=null===(t=this.deploymentOption)||void 0===t?void 0:t.options[this.selectedOption.option].title,c="" + o + " deployment";this.taskWrapper.wrapTaskAroundCall({task:new cl.R("osd/"+ki.MQ.CREATE,{tracking_id:c}),call:this.osdService.create([this.selectedOption],c,"predefined")}).subscribe({error:g=>g.preventDefault(),complete:()=>{this.submitAction.emit()}})}else if(this.osdService.osdDevices.totalDevices>0){this.driveGroup.setFeature("encrypted",this.selectedOption.encrypted);const o=Ar().join(Ar().map(this.driveGroups,"service_id"),", ");this.taskWrapper.wrapTaskAroundCall({task:new cl.R("osd/"+ki.MQ.CREATE,{tracking_id:o}),call:this.osdService.create(this.driveGroups,o)}).subscribe({error:c=>c.preventDefault(),complete:()=>{this.submitAction.emit(),this.osdService.osdDevices=[]}})}}setDriveGroup(t){this.driveGroup=t}setDeploymentOptions(t){this.selectedOption=t}setDeploymentMode(t){this.simpleDeployment=t}onNextStep(){this.wizardStepsService.isLastStep()?this.onSubmit():(this.wizardStepsService.getCurrentStep().subscribe(t=>{this.currentStep=t}),this.wizardStepsService.moveToNextStep())}onPreviousStep(){this.wizardStepsService.isFirstStep()?this.router.navigate(["/dashboard"]):this.wizardStepsService.moveToPreviousStep()}showSubmitButtonLabel(){return this.wizardStepsService.isLastStep()?"Expand Cluster":this.actionLabels.NEXT}showCancelButtonLabel(){return this.wizardStepsService.isFirstStep()?this.actionLabels.CANCEL:this.actionLabels.BACK}ngOnDestroy(){this.currentStepSub.unsubscribe()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Bu),e.Y36(Yo.F0),e.Y36(ql),e.Y36(ll.g),e.Y36(ki.p4),e.Y36(wf),e.Y36(Ul.Z),e.Y36(Ll.P),e.Y36(Ji))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-create-cluster"]],viewQuery:function(t,o){if(1&t&&e.Gf(Rm,7),2&t){let c;e.iGM(c=e.CRH())&&(o.skipConfirmTpl=c.first)}},outputs:{submitAction:"submitAction"},decls:4,vars:2,consts:function(){let s,t,o,c,g,C,D,P,j,W,re;return s="Welcome to " + "\ufffd0\ufffd" + "",t="Please expand your cluster first",o="Expand Cluster",c="Skip",g="Expand Cluster",C="" + "\ufffd0\ufffd" + "",D="Add Hosts",P="Create OSDs",j="Create Services",W="You are about to skip the cluster expansion process. You\u2019ll need to " + "\ufffd#2\ufffd" + "navigate through the menu to add hosts and services." + "\ufffd/#2\ufffd" + "",re="Are you sure you want to continue?",[["class","container h-75",4,"ngIf"],["class","card",4,"ngIf"],["skipConfirmTpl",""],[1,"container","h-75"],[1,"row","h-100","justify-content-center","align-items-center"],[1,"blank-page"],["alt","Ceph",1,"img-fluid","mx-auto","d-block",3,"src"],[1,"text-center","m-2"],s,[1,"m-4"],[1,"text-center"],t,[1,"offset-md-2"],["name","expand-cluster","aria-label","Expand Cluster",1,"btn","btn-accent","m-2",3,"click"],o,["name","skip-cluster-creation","aria-label","Skip",1,"btn","btn-light",3,"click"],c,[1,"card"],[1,"card-header"],g,[1,"container-fluid"],[3,"stepsTitle"],[1,"card-body","vertical-line"],[3,"ngSwitch"],["class","ml-5",4,"ngSwitchCase"],[1,"card-footer"],["aria-label","Next",1,"btn","btn-accent","m-2","float-right",3,"click"],C,["aria-label","Close",1,"m-2","float-right",3,"name","backAction"],[1,"ml-5"],[1,"title"],D,[3,"hiddenColumns","hideMaintenance","hasTableDetails","showGeneralActionsOnly"],P,[1,"alignForm"],[3,"hideTitle","hideSubmitBtn","emitDriveGroup","emitDeploymentOption","emitMode"],j,[3,"hasDetails","hiddenServices","hiddenColumns","routedModal"],W,[1,"mt-4"],re]},template:function(t,o){1&t&&(e.YNc(0,vu,14,2,"div",0),e.YNc(1,Vf,15,8,"div",1),e.YNc(2,fv,5,0,"ng-template",null,2,e.W1O)),2&t&&(e.Q6J("ngIf",!o.startClusterCreation),e.xp6(1),e.Q6J("ngIf",o.startClusterCreation))},directives:[_.O5,ca.o,rc,_.RF,_.n9,hc.W,sh,a_,qd,p1],styles:[".container-fluid[_ngcontent-%COMP%]{align-items:flex-start;display:flex;padding-left:0;width:100%}cd-hosts[_ngcontent-%COMP%]     .nav{display:none}cd-osd-form[_ngcontent-%COMP%]     .card{border:0}cd-osd-form[_ngcontent-%COMP%]     .accordion{margin-left:-1.5rem}"]}),n})();var Q_=i(83608),Nm=i(46947);const Bg=["tree"],hv=function(n,s,t){return[n,s,t]};function Cp(n,s){if(1&n&&e._UZ(0,"i",12),2&n){const t=e.oxw();e.Q6J("ngClass",e.kEZ(1,hv,t.icons.large,t.icons.spinner,t.icons.spin))}}const Pm=function(){return["in","up"]},_v=function(){return["down","out","destroyed"]},h1=function(n,s){return{"badge-success":n,"badge-danger":s}};function Yg(n,s){if(1&n&&(e.TgZ(0,"span",15),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit;e.Q6J("ngClass",e.WLB(4,h1,e.DdM(2,Pm).includes(t.data.status),e.DdM(3,_v).includes(t.data.status))),e.xp6(1),e.hij(" ",t.data.status," ")}}const _1=function(n){return{"type-osd":n}};function gv(n,s){if(1&n&&(e.YNc(0,Yg,2,7,"span",13),e.TgZ(1,"span"),e._uU(2,"\xa0"),e.qZA(),e._UZ(3,"span",14)),2&n){const t=s.$implicit;e.Q6J("ngIf",t.data.status),e.xp6(3),e.Q6J("ngClass",e.VKq(3,_1,"osd"===t.data.type))("innerHTML",t.data.name,e.oJD)}}function g1(n,s){if(1&n&&(e.TgZ(0,"div",16),e.TgZ(1,"legend"),e._uU(2),e.qZA(),e._UZ(3,"cd-table-key-value",17),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.Oqu(t.metadataTitle),e.xp6(1),e.Q6J("data",t.metadata)}}let Og=(()=>{class n{constructor(t,o){this.crushRuleService=t,this.timerService=o,this.sub=new gu.w,this.icons=No.P,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,nodeHeight:22,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.sub=this.timerService.get(()=>this.crushRuleService.getInfo(),5e3).subscribe(t=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(t)})}ngOnDestroy(){this.sub.unsubscribe()}abstractTreeData(t){const o=t.nodes||[],c=t.roots||[],g={};if(0===o.length)return[{name:"No nodes!"}];const C=[];return o.reverse().forEach(P=>{c.includes(P.id)&&C.push(P.id),g[P.id]=this.generateTreeLeaf(P,g)}),C.map(P=>g[P])}generateTreeLeaf(t,o){const c=t.id;this.metadataKeyMap[c]=t;const D=[],P={name:t.name+" ("+t.type+")",status:t.status,cdId:c,type:t.type};return t.children&&(t.children.sort().forEach(j=>{D.push(o[j])}),P.children=D),P}onNodeSelected(t,o){if(Il.iM.ACTIVATE(t,o,!0),void 0!==o.data.cdId){const c=this.metadataKeyMap[o.data.cdId],{name:g,type:C}=c,P=(0,ha._T)(c,["name","type","status"]);this.metadata=P,this.metadataTitle=g+" ("+C+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Q_.H),e.Y36(Nm.f))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-crushmap"]],viewQuery:function(t,o){if(1&t&&e.Gf(Bg,5),2&t){let c;e.iGM(c=e.CRH())&&(o.tree=c.first)}},decls:14,vars:4,consts:function(){let s;return s="CRUSH map viewer",[[1,"row"],[1,"col-sm-12","col-lg-12"],[1,"card"],[1,"card-header"],s,[1,"card-body"],[1,"col-sm-6","col-lg-6","tree-container"],[3,"ngClass",4,"ngIf"],[3,"nodes","options","updateData"],["tree",""],["treeNodeTemplate",""],["class","col-sm-6 col-lg-6 metadata",4,"ngIf"],[3,"ngClass"],["class","badge",3,"ngClass",4,"ngIf"],[1,"node-name",3,"ngClass","innerHTML"],[1,"badge",3,"ngClass"],[1,"col-sm-6","col-lg-6","metadata"],[3,"data"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"div",3),e.SDv(4,4),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"div",0),e.TgZ(7,"div",6),e.YNc(8,Cp,1,5,"i",7),e.TgZ(9,"tree-root",8,9),e.NdJ("updateData",function(){return o.onUpdateData()}),e.YNc(11,gv,4,5,"ng-template",null,10,e.W1O),e.qZA(),e.qZA(),e.YNc(13,g1,4,2,"div",11),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(8),e.Q6J("ngIf",o.loadingIndicator),e.xp6(1),e.Q6J("nodes",o.nodes)("options",o.treeOptions),e.xp6(4),e.Q6J("ngIf",o.metadata))},directives:[_.O5,Il.qr,_.mk,Vr.b],styles:[".tree-container[_ngcontent-%COMP%]{height:calc(100vh - 200px)}"]}),n})(),Mp=(()=>{class n{constructor(t){this.http=t}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(t){return this.http.get(`api/grafana/validation/${t}`)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var rp=i(49457);let jh=(()=>{class n{download(t,o){(0,rp.saveAs)(new Blob([t]),o)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const Gp=function(n){return[n]};function X_(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"button",5),e.NdJ("click",function(){return e.CHM(t),e.oxw().download("json")}),e._UZ(1,"i",2),e.TgZ(2,"span"),e._uU(3,"JSON"),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,Gp,t.icons.json))}}function v_(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"button",5),e.NdJ("click",function(){return e.CHM(t),e.oxw().download()}),e._UZ(1,"i",2),e.TgZ(2,"span"),e._uU(3,"Text"),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,Gp,t.icons.text))}}let Im=(()=>{class n{constructor(t){this.textToDownloadService=t,this.title="Download",this.icons=No.P}download(t){this.fileName=`${this.fileName}_${(new Date).toLocaleDateString()}`,"json"===t?this.textToDownloadService.download(JSON.stringify(this.objectItem,null,2),`${this.fileName}.json`):this.textToDownloadService.download(this.textItem,`${this.fileName}.txt`)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(jh))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-download-button"]],inputs:{objectItem:"objectItem",textItem:"textItem",fileName:"fileName",title:"title"},decls:6,vars:6,consts:[["ngbDropdown","","placement","bottom-right"],["type","button","ngbDropdownToggle","",1,"btn","btn-light","dropdown-toggle-split",3,"title"],[3,"ngClass"],["ngbDropdownMenu",""],["ngbDropdownItem","",3,"click",4,"ngIf"],["ngbDropdownItem","",3,"click"]],template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"button",1),e._UZ(2,"i",2),e.qZA(),e.TgZ(3,"div",3),e.YNc(4,X_,4,3,"button",4),e.YNc(5,v_,4,3,"button",4),e.qZA(),e.qZA()),2&t&&(e.xp6(1),e.Q6J("title",o.title),e.xp6(1),e.Q6J("ngClass",e.VKq(4,Gp,o.icons.download)),e.xp6(2),e.Q6J("ngIf",o.objectItem),e.xp6(1),e.Q6J("ngIf",o.textItem))},directives:[lt.jt,ca.o,lt.iD,_.mk,lt.Vi,_.O5,lt.TH],styles:[""]}),n})();var Lm=i(42746);let m1=(()=>{class n{transform(t,o){if(!o)return t;o=this.escapeRegExp(o);const c=new RegExp(o,"gi");return t.match(c)?t.replace(c,"<mark>$&</mark>"):t}escapeRegExp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"searchHighlight",type:n,pure:!0}),n})();function Fm(n,s){1&n&&e.GkF(0)}function Zg(n,s){if(1&n&&(e.TgZ(0,"div",22),e._UZ(1,"cd-download-button",23),e._UZ(2,"cd-copy-2-clipboard-button",24),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.Q6J("objectItem",t.clog)("textItem",t.clogText),e.xp6(1),e.Q6J("source",t.clogText)("byId",!1)}}function mv(n,s){if(1&n&&(e.TgZ(0,"p"),e.TgZ(1,"span",25),e._uU(2),e.ALo(3,"cdDate"),e.qZA(),e.TgZ(4,"span"),e.ALo(5,"logPriority"),e._uU(6),e.qZA(),e._UZ(7,"span",26),e.ALo(8,"searchHighlight"),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(4);e.xp6(2),e.Oqu(e.lcZ(3,6,t.stamp)),e.xp6(2),e.Gre("priority ",e.lcZ(5,8,t.priority),""),e.xp6(2),e.Oqu(t.priority),e.xp6(1),e.Q6J("innerHTML",e.xi3(8,10,t.message,o.search),e.oJD)}}function jg(n,s){1&n&&e.GkF(0)}function I(n,s){if(1&n&&(e.TgZ(0,"div",17),e.YNc(1,Zg,3,4,"div",18),e.TgZ(2,"div",19),e.YNc(3,mv,9,13,"p",20),e.YNc(4,jg,1,0,"ng-container",21),e.qZA(),e.qZA()),2&n){const t=e.oxw(3),o=e.MAs(4);e.xp6(1),e.Q6J("ngIf",t.clog.length),e.xp6(2),e.Q6J("ngForOf",t.clog),e.xp6(1),e.Q6J("ngIf",0!=t.clog.length)("ngIfElse",o)}}function z(n,s){if(1&n&&e.YNc(0,I,5,4,"div",16),2&n){const t=e.oxw(2);e.Q6J("ngIf",t.clog)}}function B(n,s){if(1&n&&(e.TgZ(0,"div",22),e._UZ(1,"cd-download-button",27),e._UZ(2,"cd-copy-2-clipboard-button",24),e.qZA()),2&n){const t=e.oxw(4);e.xp6(1),e.Q6J("objectItem",t.audit_log)("textItem",t.auditLogText),e.xp6(1),e.Q6J("source",t.auditLogText)("byId",!1)}}function Ee(n,s){if(1&n&&(e.TgZ(0,"p"),e.TgZ(1,"span",25),e._uU(2),e.ALo(3,"cdDate"),e.qZA(),e.TgZ(4,"span"),e.ALo(5,"logPriority"),e._uU(6),e.qZA(),e._UZ(7,"span",26),e.ALo(8,"searchHighlight"),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(4);e.xp6(2),e.Oqu(e.lcZ(3,6,t.stamp)),e.xp6(2),e.Gre("priority ",e.lcZ(5,8,t.priority),""),e.xp6(2),e.Oqu(t.priority),e.xp6(1),e.Q6J("innerHTML",e.xi3(8,10,t.message,o.search),e.oJD)}}function at(n,s){1&n&&e.GkF(0)}function Ft(n,s){if(1&n&&(e.TgZ(0,"div",17),e.YNc(1,B,3,4,"div",18),e.TgZ(2,"div",19),e.YNc(3,Ee,9,13,"p",20),e.YNc(4,at,1,0,"ng-container",21),e.qZA(),e.qZA()),2&n){const t=e.oxw(3),o=e.MAs(4);e.xp6(1),e.Q6J("ngIf",t.audit_log.length),e.xp6(2),e.Q6J("ngForOf",t.audit_log),e.xp6(1),e.Q6J("ngIf",0!=t.audit_log.length)("ngIfElse",o)}}function Gn(n,s){if(1&n&&e.YNc(0,Ft,5,4,"div",16),2&n){const t=e.oxw(2);e.Q6J("ngIf",t.audit_log)}}function hr(n,s){1&n&&(e.TgZ(0,"div"),e._UZ(1,"cd-grafana",28),e.qZA()),2&n&&(e.xp6(1),e.Q6J("grafanaPath","explore?")("type","logs"))}function li(n,s){if(1&n&&(e.ynx(0),e.YNc(1,hr,2,2,"div",21),e.ALo(2,"async"),e.BQk()),2&n){const t=e.oxw(3),o=e.MAs(6);e.xp6(1),e.Q6J("ngIf",e.lcZ(2,2,t.promtailServiceStatus$))("ngIfElse",o)}}function Io(n,s){if(1&n&&(e.YNc(0,li,3,4,"ng-container",21),e.ALo(1,"async")),2&n){const t=e.oxw(2),o=e.MAs(6);e.Q6J("ngIf",e.lcZ(1,2,t.lokiServiceStatus$))("ngIfElse",o)}}function Qo(n,s){if(1&n&&(e.TgZ(0,"div"),e.YNc(1,Fm,1,0,"ng-container",4),e.TgZ(2,"ul",5,6),e.TgZ(4,"li",7),e.TgZ(5,"a",8),e.SDv(6,9),e.qZA(),e.YNc(7,z,1,1,"ng-template",10),e.qZA(),e.TgZ(8,"li",11),e.TgZ(9,"a",8),e.SDv(10,12),e.qZA(),e.YNc(11,Gn,1,1,"ng-template",10),e.qZA(),e.TgZ(12,"li",13),e.TgZ(13,"a",8),e.SDv(14,14),e.qZA(),e.YNc(15,Io,2,4,"ng-template",10),e.qZA(),e.qZA(),e._UZ(16,"div",15),e.qZA()),2&n){const t=e.MAs(3);e.oxw();const o=e.MAs(2);e.xp6(1),e.Q6J("ngTemplateOutlet",o),e.xp6(15),e.Q6J("ngbNavOutlet",t)}}function ws(n,s){if(1&n&&(e.TgZ(0,"option",50),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.value),e.xp6(1),e.Oqu(t.name)}}const Rl=function(n){return[n]};function Tu(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",29),e.TgZ(1,"div",30),e.TgZ(2,"label",31),e.SDv(3,32),e.qZA(),e.TgZ(4,"select",33),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().priority=c})("ngModelChange",function(){return e.CHM(t),e.oxw().filterLogs()}),e.YNc(5,ws,2,2,"option",34),e.qZA(),e.qZA(),e.TgZ(6,"div",30),e.TgZ(7,"label",35),e.SDv(8,36),e.qZA(),e.TgZ(9,"div",37),e.TgZ(10,"div",38),e.TgZ(11,"span",39),e._UZ(12,"i",40),e.qZA(),e.qZA(),e.TgZ(13,"input",41),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().search=c})("keyup",function(){return e.CHM(t),e.oxw().filterLogs()}),e.qZA(),e.TgZ(14,"div",42),e.TgZ(15,"button",43),e.NdJ("click",function(){return e.CHM(t),e.oxw().clearSearchKey()}),e._UZ(16,"i"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(17,"div",30),e.TgZ(18,"label",44),e.SDv(19,45),e.qZA(),e.TgZ(20,"div",37),e.TgZ(21,"input",46,47),e.NdJ("click",function(){return e.CHM(t),e.MAs(22).open()})("ngModelChange",function(c){return e.CHM(t),e.oxw().selectedDate=c})("ngModelChange",function(){return e.CHM(t),e.oxw().filterLogs()}),e.qZA(),e.TgZ(23,"span",42),e.TgZ(24,"button",43),e.NdJ("click",function(){return e.CHM(t),e.oxw().clearDate()}),e._UZ(25,"i"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(26,"div",30),e.TgZ(27,"label"),e.SDv(28,48),e.qZA(),e.TgZ(29,"ngb-timepicker",49),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().startTime=c})("ngModelChange",function(){return e.CHM(t),e.oxw().filterLogs()}),e.qZA(),e.TgZ(30,"span"),e._uU(31,"\xa0\u2014\xa0"),e.qZA(),e.TgZ(32,"ngb-timepicker",49),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().endTime=c})("ngModelChange",function(){return e.CHM(t),e.oxw().filterLogs()}),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(4),e.Q6J("ngModel",t.priority),e.xp6(1),e.Q6J("ngForOf",t.priorities),e.xp6(7),e.Q6J("ngClass",e.VKq(16,Rl,t.icons.search)),e.xp6(1),e.Q6J("ngModel",t.search),e.xp6(3),e.Gre("icon-prepend ",t.icons.destroy,""),e.xp6(5),e.Q6J("maxDate",t.maxDate)("ngModel",t.selectedDate),e.xp6(4),e.Gre("icon-prepend ",t.icons.destroy,""),e.xp6(4),e.Q6J("spinners",!1)("ngModel",t.startTime),e.xp6(3),e.Q6J("spinners",!1)("ngModel",t.endTime)}}function tu(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"span"),e.SDv(1,51),e.qZA(),e.TgZ(2,"span"),e._uU(3,"\xa0"),e.qZA(),e.TgZ(4,"a",52),e.NdJ("click",function(){return e.CHM(t),e.oxw().resetFilter()}),e.SDv(5,53),e.qZA()}}function Qu(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",54),e.ynx(1),e.SDv(2,55),e.BQk(),e.qZA())}let Zd=(()=>{class n{constructor(t,o,c,g){this.logsService=t,this.cephService=o,this.datePipe=c,this.ngZone=g,this.icons=No.P,this.priorities=[{name:"Debug",value:"[DBG]"},{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime={hour:0,minute:0},this.endTime={hour:23,minute:59},this.maxDate={year:(new Date).getFullYear(),month:(new Date).getMonth()+1,day:(new Date).getDate()}}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.getDaemonDetails(),this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getDaemonDetails(){this.lokiServiceStatus$=this.cephService.getDaemons("loki").pipe((0,su.U)(t=>t.length>0&&1===t[0].status)),this.promtailServiceStatus$=this.cephService.getDaemons("promtail").pipe((0,su.U)(t=>t.length>0&&1===t[0].status))}getInfo(){this.logsService.getLogs().subscribe(t=>{this.contentData=t,this.clogText=this.logToText(this.contentData.clog),this.auditLogText=this.logToText(this.contentData.audit_log),this.filterLogs()})}abstractFilters(){var t,o,c,g,C,D,P,j;const W=this.priority,re=this.search.toLowerCase();let ie;if(this.selectedDate){const U=this.selectedDate.month,pt=this.selectedDate.day;ie=`${this.selectedDate.year}-${U<=9?`0${U}`:`${U}`}-${pt<=9?`0${pt}`:`${pt}`}`}else ie="";return{priority:W,key:re,yearMonthDay:ie,sTime:60*(null!==(o=null===(t=this.startTime)||void 0===t?void 0:t.hour)&&void 0!==o?o:0)+(null!==(g=null===(c=this.startTime)||void 0===c?void 0:c.minute)&&void 0!==g?g:0),eTime:60*(null!==(D=null===(C=this.endTime)||void 0===C?void 0:C.hour)&&void 0!==D?D:23)+(null!==(j=null===(P=this.endTime)||void 0===P?void 0:P.minute)&&void 0!==j?j:59)}}filterExecutor(t,o){return t.filter(c=>{const g=this.datePipe.transform(c.stamp,"mediumTime"),C=parseInt(g.split(":")[0],10),D=parseInt(g.split(":")[1],10);let P,j,W;return P="All"===o.priority?c.priority:o.priority,j=o.yearMonthDay?o.yearMonthDay:c.stamp,W=60*C+D,c.priority===P&&-1!==c.message.toLowerCase().indexOf(o.key)&&-1!==c.stamp.indexOf(j)&&W>=o.sTime&&W<=o.eTime})}filterLogs(){const t=this.abstractFilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}resetFilter(){return this.priority="All",this.search="",this.selectedDate=null,this.startTime={hour:0,minute:0},this.endTime={hour:23,minute:59},this.filterLogs(),!1}logToText(t){let o="";for(const c of Object.keys(t))o=o+this.datePipe.transform(t[c].stamp,"medium")+"\t"+t[c].priority+"\t"+t[c].message+"\n";return o}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Mp),e.Y36(Qt),e.Y36(_.uU),e.Y36(e.R0b))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-logs"]],decls:7,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j,W,re;return s="Cluster Logs",t="Audit Logs",o="Daemon Logs",c="Priority:",g="Keyword:",C="Date:",D="Time range:",P="No log entries found. Please try to select different filter options.",j="Reset filter.",W="Loki/Promtail service not running",re="Please start the loki and promtail service to see these logs.",[[4,"ngIf"],["logFiltersTpl",""],["noEntriesTpl",""],["daemonLogsTpl",""],[4,"ngTemplateOutlet"],["ngbNav","","cdStatefulTab","logs",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","cluster-logs"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","audit-logs"],t,["ngbNavItem","daemon-logs"],o,[3,"ngbNavOutlet"],["class","card bg-light mb-3",4,"ngIf"],[1,"card","bg-light","mb-3"],["class","btn-group","role","group",4,"ngIf"],[1,"card-body"],[4,"ngFor","ngForOf"],[4,"ngIf","ngIfElse"],["role","group",1,"btn-group"],["fileName","cluster_log",3,"objectItem","textItem"],[3,"source","byId"],[1,"timestamp"],[1,"message",3,"innerHTML"],["fileName","audit_log",3,"objectItem","textItem"],["uid","CrAHE0iZz","grafanaStyle","two",3,"grafanaPath","type"],[1,"form-inline"],[1,"form-group"],["for","logs-priority"],c,["id","logs-priority",1,"form-control",3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],["for","logs-keyword"],g,[1,"input-group"],[1,"input-group-prepend"],[1,"input-group-text"],[3,"ngClass"],["id","logs-keyword","type","text",1,"form-control",3,"ngModel","ngModelChange","keyup"],[1,"input-group-append"],["type","button",1,"btn","btn-light",3,"click"],["for","logs-date"],C,["id","logs-date","placeholder","YYYY-MM-DD","ngbDatepicker","",1,"form-control",3,"maxDate","ngModel","click","ngModelChange"],["d","ngbDatepicker"],D,[3,"spinners","ngModel","ngModelChange"],[3,"value"],P,["href","#",3,"click"],j,["type","info","title",W],re]},template:function(t,o){1&t&&(e.YNc(0,Qo,17,2,"div",0),e.YNc(1,Tu,33,18,"ng-template",null,1,e.W1O),e.YNc(3,tu,6,0,"ng-template",null,2,e.W1O),e.YNc(5,Qu,3,0,"ng-template",null,3,e.W1O)),2&t&&e.Q6J("ngIf",o.contentData)},directives:[_.O5,_.tP,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,_.sg,Im,Uc.s,it.F,$a.P,ca.o,vn.EJ,Ha.b,vn.JJ,vn.On,_.mk,vn.Fj,lt.J4,lt.Pm,vn.YN,vn.Kr,Jt.G],pipes:[Vl.N,Lm.e,m1,_.Ov],styles:["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   .btn-group[_ngcontent-%COMP%]{margin-top:-45px;position:absolute;right:0}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{flex-shrink:0;font-weight:bold}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#ef5c55}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}.card[_ngcontent-%COMP%]   .debug[_ngcontent-%COMP%]{color:#495057}  cd-logs ngb-timepicker input.ngb-tp-input{width:3.5rem!important}"]}),n})();var Bc=i(7273);function Ap(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e._uU(1),e.ALo(2,"upperFirst"),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.hij(" ",e.lcZ(2,1,t.value.long_desc||t.value.desc)," ")}}function K_(n,s){if(1&n&&(e.TgZ(0,"div",15),e.TgZ(1,"div",16),e._UZ(2,"input",17),e._UZ(3,"label",18),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(2),e.s9C("id",t.value.name),e.s9C("formControlName",t.value.name),e.xp6(1),e.s9C("for",t.value.name)}}function q_(n,s){if(1&n&&e._UZ(0,"input",22),2&n){const t=e.oxw(2).$implicit;e.s9C("id",t.value.name),e.s9C("formControlName",t.value.name)}}function ef(n,s){if(1&n&&(e.TgZ(0,"option",25),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("ngValue",t),e.xp6(1),e.hij(" ",t," ")}}function Xc(n,s){if(1&n&&(e.TgZ(0,"select",23),e.YNc(1,ef,2,2,"option",24),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.s9C("id",t.value.name),e.s9C("formControlName",t.value.name),e.xp6(1),e.Q6J("ngForOf",t.value.enum_allowed)}}function Op(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,27),e.qZA())}function Zu(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,28),e.qZA())}function Rc(n,s){if(1&n&&(e.TgZ(0,"div",15),e.YNc(1,q_,1,2,"input",19),e.YNc(2,Xc,2,3,"select",20),e.YNc(3,Op,2,0,"span",21),e.YNc(4,Zu,2,0,"span",21),e.qZA()),2&n){const t=e.oxw().$implicit;e.oxw();const o=e.MAs(2),c=e.oxw();e.xp6(1),e.Q6J("ngIf",0===t.value.enum_allowed.length),e.xp6(1),e.Q6J("ngIf",t.value.enum_allowed.length>0),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"pattern"))}}function L0(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,30),e.qZA())}function F0(n,s){if(1&n&&(e.TgZ(0,"span",26),e.SDv(1,31),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.pQV(t.value.max),e.QtT(1)}}function k0(n,s){if(1&n&&(e.TgZ(0,"span",26),e.SDv(1,32),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.pQV(t.value.min),e.QtT(1)}}function Ab(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,33),e.qZA())}function Gh(n,s){if(1&n&&(e.TgZ(0,"div",15),e._UZ(1,"input",29),e.YNc(2,L0,2,0,"span",21),e.YNc(3,F0,2,1,"span",21),e.YNc(4,k0,2,1,"span",21),e.YNc(5,Ab,2,0,"span",21),e.qZA()),2&n){const t=e.oxw().$implicit;e.oxw();const o=e.MAs(2),c=e.oxw();e.xp6(1),e.s9C("id",t.value.name),e.s9C("formControlName",t.value.name),e.s9C("min",t.value.min),e.s9C("max",t.value.max),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"required")),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"max")),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"min")),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"pattern"))}}function v1(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,35),e.qZA())}function Ob(n,s){1&n&&(e.TgZ(0,"span",26),e.SDv(1,36),e.qZA())}function $0(n,s){if(1&n&&(e.TgZ(0,"div",15),e._UZ(1,"input",34),e.YNc(2,v1,2,0,"span",21),e.YNc(3,Ob,2,0,"span",21),e.qZA()),2&n){const t=e.oxw().$implicit;e.oxw();const o=e.MAs(2),c=e.oxw();e.xp6(1),e.s9C("id",t.value.name),e.s9C("formControlName",t.value.name),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"required")),e.xp6(1),e.Q6J("ngIf",c.mgrModuleForm.showError(t.value.name,o,"pattern"))}}const vv=function(){return["addr","str","uuid"]},yv=function(){return["uint","int","size","secs"]};function wb(n,s){if(1&n&&(e.TgZ(0,"div",11),e.TgZ(1,"label",12),e._uU(2),e.YNc(3,Ap,3,3,"cd-helper",13),e.qZA(),e.YNc(4,K_,4,3,"div",14),e.YNc(5,Rc,5,4,"div",14),e.YNc(6,Gh,6,8,"div",14),e.YNc(7,$0,4,4,"div",14),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.s9C("for",t.value.name),e.xp6(1),e.hij(" ",t.value.name," "),e.xp6(1),e.Q6J("ngIf",t.value.long_desc||t.value.desc),e.xp6(1),e.Q6J("ngIf","bool"===t.value.type),e.xp6(1),e.Q6J("ngIf",e.DdM(7,vv).includes(t.value.type)),e.xp6(1),e.Q6J("ngIf",e.DdM(8,yv).includes(t.value.type)),e.xp6(1),e.Q6J("ngIf","float"===t.value.type)}}function H0(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.qZA(),e.TgZ(6,"div",7),e.YNc(7,wb,8,9,"div",8),e.ALo(8,"keyvalue"),e.qZA(),e.TgZ(9,"div",9),e.TgZ(10,"cd-form-button-panel",10),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.xp6(1),e.Q6J("formGroup",t.mgrModuleForm),e.xp6(6),e.Q6J("ngForOf",e.lcZ(8,4,t.moduleOptions)),e.xp6(3),e.Q6J("form",t.mgrModuleForm)("submitText",t.actionLabels.UPDATE)}}let bv=(()=>{class n extends Oa.E{constructor(t,o,c,g,C,D){super(),this.actionLabels=t,this.route=o,this.router=c,this.formBuilder=g,this.mgrModuleService=C,this.notificationService=D,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(t=>{this.moduleName=decodeURIComponent(t.name);const o=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];(0,Oc.D)(o).subscribe(c=>{this.moduleOptions=c[0],this.createForm(),this.mgrModuleForm.setValue(c[1]),this.loadingReady()},c=>{this.loadingError()})})}getValidators(t){const o=[];switch(t.type){case"addr":o.push(ds.h.ip());break;case"uint":case"int":case"size":case"secs":o.push(vn.kI.required);break;case"str":Ar().isNumber(t.min)&&o.push(vn.kI.minLength(t.min)),Ar().isNumber(t.max)&&o.push(vn.kI.maxLength(t.max));break;case"float":o.push(vn.kI.required),o.push(ds.h.decimalNumber());break;case"uuid":o.push(ds.h.uuid())}return o}createForm(){const t={};Ar().forEach(this.moduleOptions,o=>{t[o.name]=[o.default_value,this.getValidators(o)]}),this.mgrModuleForm=this.formBuilder.group(t)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const t={};Ar().forEach(this.moduleOptions,o=>{const c=this.mgrModuleForm.get(o.name);c.dirty&&c.valid&&(t[o.name]=c.value)}),this.mgrModuleService.updateConfig(this.moduleName,t).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated options for module '" + this.moduleName + "'."),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(Yo.gz),e.Y36(Yo.F0),e.Y36(id.O),e.Y36(Bc.N),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mgr-module-form"]],features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j;return s="Edit Manager module",t="The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",o="The entered value needs to be a valid IP address.",c="This field is required.",g="The entered value is too high! It must be lower or equal to " + "\ufffd0\ufffd" + ".",C="The entered value is too low! It must be greater or equal to " + "\ufffd0\ufffd" + ".",D="The entered value needs to be a number.",P="This field is required.",j="The entered value needs to be a number or decimal.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","mgrModuleForm","novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],["class","form-group row",4,"ngFor","ngForOf"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"form-group","row"],[1,"cd-col-form-label",3,"for"],[4,"ngIf"],["class","cd-col-form-input",4,"ngIf"],[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","formControlName"],[1,"custom-control-label",3,"for"],["class","form-control","type","text",3,"id","formControlName",4,"ngIf"],["class","form-control",3,"id","formControlName",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],["type","text",1,"form-control",3,"id","formControlName"],[1,"form-control",3,"id","formControlName"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],[1,"invalid-feedback"],t,o,["type","number",1,"form-control",3,"id","formControlName","min","max"],c,g,C,D,["type","number",1,"form-control",3,"id","formControlName"],P,j]},template:function(t,o){1&t&&e.YNc(0,H0,11,6,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[wl.y,vn._Y,vn.JL,vn.sg,tl.V,_.sg,nl.p,$a.P,_.O5,E.S,ca.o,vn.Wl,Ha.b,vn.JJ,vn.u,vn.Fj,vn.EJ,vn.YN,vn.Kr,vn.wV,vn.qQ,vn.Fd],pipes:[_.Nd,K.m],styles:[""]}),n})();function tf(n,s,t,o){var C,c=arguments.length,g=c<3?s:null===o?o=Object.getOwnPropertyDescriptor(s,t):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)g=Reflect.decorate(n,s,t,o);else for(var D=n.length-1;D>=0;D--)(C=n[D])&&(g=(c<3?C(g):c>3?C(s,t,g):C(s,t))||g);return c>3&&g&&Object.defineProperty(s,t,g),g}var Gg=i(80226);const Z0=["*"],Hm=["templateOutlet"];function Um(n,s){if(1&n&&(e.TgZ(0,"div",6),e._uU(1),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.hij(" ",t.message||t.defaultMessage," ")}}function Nb(n,s){if(1&n&&(e.TgZ(0,"div",3),e._UZ(1,"div",4),e.YNc(2,Um,2,1,"div",5),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.Q6J("ngIf",t.message||t.defaultMessage)}}function T1(n,s){}function j0(n,s){1&n&&e.YNc(0,T1,0,0,"ng-template",null,7,e.W1O)}const S1=function(n){return{active:n}};let ad=(()=>{class n{}return n.START="start",n.STOP="stop",n.UPDATE="update",n.RESET="reset",n.RESET_GLOBAL="reset_global",n.UNSUBSCRIBE="unsubscribe",n})();const wg="block-ui-main";let tg=(()=>{let n=class{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new Gg.t(1),this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(t={}){this.blockUISettings=Object.assign(Object.assign({},this.blockUISettings),t)}decorate(t=wg){const o={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,ad.START,t),update:this.dispatch(this.blockUISubject,ad.UPDATE,t),stop:this.dispatch(this.blockUISubject,ad.STOP,t),reset:this.dispatch(this.blockUISubject,ad.RESET,t),resetGlobal:this.dispatch(this.blockUISubject,ad.RESET_GLOBAL,t),unsubscribe:this.dispatch(this.blockUISubject,ad.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||o,o}observe(){return this.blockUIObservable}clearInstance(t){this.dispatch(this.blockUISubject,ad.RESET,t)}blockUIMiddleware({action:t,name:o}){let c=null;switch(t){case ad.START:c=!0;break;case ad.STOP:case ad.RESET:c=!1}null!==c&&(this.blockUIInstances[o].isActive=c)}dispatch(t,o,c=wg){return g=>{t.next({name:c,action:o,message:g})}}};return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:function(s){return n.\u0275fac(s)}}),n})(),Pb=(()=>{let n=class{constructor(t){this.blockUI=t}ngOnInit(){this.name=this.name||wg,this.template=this.template||this.blockUI.blockUISettings.template}};return n.\u0275fac=function(t){return new(t||n)(e.Y36(tg))},n.\u0275cmp=e.Xpm({type:n,selectors:[["block-ui"]],inputs:{name:"name",template:"template",message:"message",delayStart:"delayStart",delayStop:"delayStop"},ngContentSelectors:Z0,decls:2,vars:5,consts:[[3,"name","message","template","delayStart","delayStop"]],template:function(t,o){1&t&&(e.F$t(),e.Hsn(0),e._UZ(1,"block-ui-content",0)),2&t&&(e.xp6(1),e.Q6J("name",o.name)("message",o.message)("template",o.template)("delayStart",o.delayStart)("delayStop",o.delayStop))},directives:function(){return[Md]},encapsulation:2}),tf([(0,e.IIB)()],n.prototype,"name",void 0),tf([(0,e.IIB)()],n.prototype,"message",void 0),tf([(0,e.IIB)()],n.prototype,"delayStart",void 0),tf([(0,e.IIB)()],n.prototype,"delayStop",void 0),tf([(0,e.IIB)()],n.prototype,"template",void 0),n})(),Md=(()=>{let n=class{constructor(t,o,c){this.blockUI=t,this.resolver=o,this.changeDetectionRef=c,this.name=wg,this.defaultBlockState={startTimeouts:[],stopTimeouts:[],updateTimeouts:[],blockCount:0,startCallCount:0,stopCallCount:0},this.state=Object.assign({},this.defaultBlockState)}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof e.Rgc)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(t){console.error("ng-block-ui:",t)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(t){return t.subscribe(o=>this.onDispatchedEvent(o))}onDispatchedEvent(t){switch(t.action){case ad.START:this.onStart(t);break;case ad.STOP:this.onStop(t);break;case ad.UPDATE:this.onUpdate(t);break;case ad.RESET:this.onReset(t);break;case ad.RESET_GLOBAL:this.resetState();break;case ad.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}}onStart({name:t,message:o}){if(t===this.name){const c=this.delayStart||this.settings.delayStart||0;this.state.startCallCount+=1;const g=setTimeout(()=>{this.state.blockCount+=1,this.showBlock(o),this.updateInstanceBlockCount()},c);this.state.startTimeouts.push(g)}}onStop({name:t}){if(t===this.name){const o=this.state.stopCallCount+1;if(this.state.startCallCount-o>=0){const c=this.delayStop||this.settings.delayStop||0;this.state.stopCallCount=o;const g=setTimeout(()=>{this.state.blockCount-=1,this.updateInstanceBlockCount(),this.detectChanges()},c);this.state.stopTimeouts.push(g)}}}onUpdate({name:t,message:o}){if(t===this.name){const c=this.delayStart||this.settings.delayStart||0;clearTimeout(this.state.updateTimeouts[0]);const g=setTimeout(()=>{this.updateMessage(o)},c);this.state.updateTimeouts.push(g)}}onReset({name:t}){t===this.name&&this.resetState()}updateMessage(t){this.showBlock(t)}showBlock(t){this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}updateBlockTemplate(t){this.templateCompRef&&this.templateCompRef instanceof e.UuU&&(this.templateCompRef.instance.message=t)}resetState(){[...this.state.startTimeouts,...this.state.stopTimeouts,...this.state.updateTimeouts].forEach(clearTimeout),this.state=Object.assign({},this.defaultBlockState),this.updateInstanceBlockCount(),this.detectChanges()}onUnsubscribe(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){if(this.blockUI.blockUIInstances[this.name]){const{blockCount:t}=this.state;this.blockUI.blockUIInstances[this.name].blockCount=t}}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.resetState(),this.onUnsubscribe(this.name),this.blockUI.clearInstance(this.name)}};return n.\u0275fac=function(t){return new(t||n)(e.Y36(tg),e.Y36(e._Vd),e.Y36(e.sBO))},n.\u0275cmp=e.Xpm({type:n,selectors:[["block-ui-content"]],viewQuery:function(t,o){if(1&t&&e.Gf(Hm,5,e.s_b),2&t){let c;e.iGM(c=e.CRH())&&(o.templateOutlet=c.first)}},inputs:{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:["message","defaultMessage"],templateCmp:["template","templateCmp"]},decls:3,vars:9,consts:[[3,"ngClass"],["class","block-ui-spinner",4,"ngIf"],[4,"ngIf"],[1,"block-ui-spinner"],[1,"loader"],["class","message",4,"ngIf"],[1,"message"],["templateOutlet",""]],template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.YNc(1,Nb,3,1,"div",1),e.YNc(2,j0,2,0,void 0,2),e.qZA()),2&t&&(e.MT6("block-ui-wrapper ",o.name," ",o.className,""),e.Q6J("ngClass",e.VKq(7,S1,o.state.blockCount>0)),e.xp6(1),e.Q6J("ngIf",!o.templateCmp),e.xp6(1),e.Q6J("ngIf",o.templateCmp))},directives:[_.mk,_.O5],styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],encapsulation:2}),tf([(0,e.IIB)()],n.prototype,"name",void 0),tf([(0,e.IIB)()],n.prototype,"delayStart",void 0),tf([(0,e.IIB)()],n.prototype,"delayStop",void 0),tf([(0,e.IIB)("message")],n.prototype,"defaultMessage",void 0),tf([(0,e.IIB)("template")],n.prototype,"templateCmp",void 0),tf([(0,e.i9L)("templateOutlet",{read:e.s_b})],n.prototype,"templateOutlet",void 0),n})(),C1=(()=>{let n=class{constructor(t){this.blockUIInstance=t,this.globalDispatch=this.blockUIInstance.decorate()}start(t,o){this.dispatch(t,ad.START,o)}stop(t){this.dispatch(t,ad.STOP)}reset(t){this.dispatch(t,ad.RESET)}resetGlobal(){this.globalDispatch.resetGlobal()}update(t,o){this.dispatch(t,ad.UPDATE,o)}unsubscribe(t){this.dispatch(t,ad.UNSUBSCRIBE)}isActive(t=null){const o=t?this.toArray(t):null,c=this.blockUIInstance.blockUIInstances;return Object.keys(c).some(g=>o?o.indexOf(c[g].name)>=0&&c[g].isActive:c[g].isActive)}dispatch(t=[],o,c){this.toArray(t).forEach(C=>this.blockUIInstance.decorate(C)[o](c))}toArray(t=[]){return"string"==typeof t?[t]:t}};return n.\u0275fac=function(t){return new(t||n)(e.LFG(tg))},n.\u0275prov=e.Yz7({token:n,factory:function(s){return n.\u0275fac(s)}}),n})();var G0;const Vh=new tg,V0=new e.OlP("BlockUIModuleSettings");function Ib(n){return Vh.updateSettings(n),Vh}let Vg=G0=class{static forRoot(s={}){return{ngModule:G0,providers:[{provide:V0,useValue:s},{provide:tg,useFactory:Ib,deps:[V0]},C1]}}};Vg.\u0275fac=function(s){return new(s||Vg)},Vg.\u0275mod=e.oAB({type:Vg}),Vg.\u0275inj=e.cJS({imports:[[_.ez]]});let z0=1;function Lb(n,s){if(1&n&&(e.ynx(0),e._UZ(1,"cd-table-key-value",1),e.BQk()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("data",t.module_config)}}let W0=(()=>{class n{constructor(t){this.mgrModuleService=t}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(t=>{this.module_config=t})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Bc.N))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-mgr-module-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:[[4,"ngIf"],[3,"data"]],template:function(t,o){1&t&&e.YNc(0,Lb,2,1,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,Vr.b],styles:[""]}),n})();class Gu extends Gl.o{constructor(s,t,o){super(),this.authStorageService=s,this.mgrModuleService=t,this.notificationService=o,this.columns=[],this.modules=[],this.selection=new hl.r,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:"Name",prop:"name",flexGrow:1},{name:"Enabled",prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:Ja.e.checkIcon},{name:"Always-On",prop:"always_on",flexGrow:1,cellClass:"text-center",cellTransformation:Ja.e.checkIcon}];const c=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:"Edit",permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>`/mgr-modules/edit/${c()}`,icon:No.P.edit},{name:"Enable",permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:No.P.start},{name:"Disable",permission:"update",click:()=>this.updateModuleState(),disable:()=>this.getTableActionDisabledDesc(),icon:No.P.stop}]}getModuleList(s){this.mgrModuleService.list().subscribe(t=>{this.modules=t},()=>{s.error()})}updateSelection(s){this.selection=s}isTableActionDisabled(s){if(!this.selection.hasSelection)return!0;const t=this.selection.first();if("dashboard"===t.name||t.always_on)return!0;switch(s){case"enabled":return t.enabled;case"disabled":return!t.enabled}}getTableActionDisabledDesc(){var s;return(null===(s=this.selection.first())||void 0===s?void 0:s.always_on)?"This Manager module is always on.":this.isTableActionDisabled("disabled")}updateModuleState(){if(!this.selection.hasSelection)return;let s;const t=()=>{(0,V.H)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{t()})})},o=this.selection.first();s=o.enabled?this.mgrModuleService.disable(o.name):this.mgrModuleService.enable(o.name),s.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start("Reconnecting, please wait ..."),t()})}}Gu.\u0275fac=function(s){return new(s||Gu)(e.Y36(_t.j),e.Y36(Bc.N),e.Y36(ll.g))},Gu.\u0275cmp=e.Xpm({type:Gu,selectors:[["cd-mgr-module-list"]],viewQuery:function(s,t){if(1&s&&e.Gf(Hs.a,7),2&s){let o;e.iGM(o=e.CRH())&&(t.table=o.first)}},features:[e.qOj],decls:4,vars:8,consts:[["columnMode","flex","selectionType","single","identifier","module",3,"autoReload","data","columns","hasDetails","setExpandedRow","updateSelection","fetchData"],["table",""],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"]],template:function(s,t){1&s&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(c){return t.setExpandedRow(c)})("updateSelection",function(c){return t.updateSelection(c)})("fetchData",function(c){return t.getModuleList(c)}),e._UZ(2,"cd-table-actions",2),e._UZ(3,"cd-mgr-module-details",3),e.qZA()),2&s&&(e.Q6J("autoReload",!1)("data",t.modules)("columns",t.columns)("hasDetails",!0),e.xp6(2),e.Q6J("permission",t.permission)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("selection",t.expandedRow))},directives:[Hs.a,Xs.K,W0],styles:[""]}),(0,ha.gn)([function(n,s={}){return s.scopeToInstance?function(t,o){const c=`_${o}-block-ui`;Object.defineProperty(t,o,{get:function(){if(this[c])return this[c];const g=`${n}-${z0++}`;return this[c]=Vh.decorate(g),this[c]},set:function(g){this[c]=g}})}:function(t,o){t[o]=Vh.decorate(n)}}(),(0,ha.w6)("design:type",Object)],Gu.prototype,"blockUI",void 0);let Tv=(()=>{class n{constructor(t){this.http=t}getMonitor(){return this.http.get("api/monitor")}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function AS(n,s){if(1&n&&(e.TgZ(0,"table",11),e.TgZ(1,"tr"),e.TgZ(2,"td",12),e.SDv(3,13),e.qZA(),e.TgZ(4,"td"),e._uU(5),e.qZA(),e.qZA(),e.TgZ(6,"tr"),e.TgZ(7,"td",12),e.SDv(8,14),e.qZA(),e.TgZ(9,"td"),e._uU(10),e.ALo(11,"relativeDate"),e.qZA(),e.qZA(),e.TgZ(12,"tr"),e.TgZ(13,"td",12),e.SDv(14,15),e.qZA(),e.TgZ(15,"td"),e._uU(16),e.qZA(),e.qZA(),e.TgZ(17,"tr"),e.TgZ(18,"td",12),e.SDv(19,16),e.qZA(),e.TgZ(20,"td"),e._uU(21),e.qZA(),e.qZA(),e.TgZ(22,"tr"),e.TgZ(23,"td",12),e.SDv(24,17),e.qZA(),e.TgZ(25,"td"),e._uU(26),e.qZA(),e.qZA(),e.TgZ(27,"tr"),e.TgZ(28,"td",12),e.SDv(29,18),e.qZA(),e.TgZ(30,"td"),e._uU(31),e.qZA(),e.qZA(),e.TgZ(32,"tr"),e.TgZ(33,"td",12),e.SDv(34,19),e.qZA(),e.TgZ(35,"td"),e._uU(36),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(5),e.Oqu(t.mon_status.monmap.fsid),e.xp6(5),e.Oqu(e.lcZ(11,7,t.mon_status.monmap.modified)),e.xp6(6),e.Oqu(t.mon_status.monmap.epoch),e.xp6(5),e.Oqu(t.mon_status.features.quorum_con),e.xp6(5),e.Oqu(t.mon_status.features.quorum_mon),e.xp6(5),e.Oqu(t.mon_status.features.required_con),e.xp6(5),e.Oqu(t.mon_status.features.required_mon)}}let b_=(()=>{class n{constructor(t){this.monitorService=t,this.inQuorum={columns:[{prop:"name",name:"Name",cellTransformation:Ja.e.routerLink},{prop:"rank",name:"Rank"},{prop:"public_addr",name:"Public Address"},{prop:"cdOpenSessions",name:"Open Sessions",cellTransformation:Ja.e.sparkline,comparator:(o,c)=>{const g=Ar().last(o),C=Ar().last(c);return g&&C&&g!==C?g>C?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:"Name",cellTransformation:Ja.e.routerLink},{prop:"rank",name:"Rank"},{prop:"public_addr",name:"Public Address"}]}}refresh(){this.monitorService.getMonitor().subscribe(t=>{t.in_quorum.map(o=>(o.cdOpenSessions=o.stats.num_sessions.map(c=>c[1]),o.cdLink="/perf_counters/mon/"+o.name,o.cdParams={fromLink:"/monitor"},o)),t.out_quorum.map(o=>(o.cdLink="/perf_counters/mon/"+o.name,o.cdParams={fromLink:"/monitor"},o)),this.inQuorum.data=[...t.in_quorum],this.notInQuorum.data=[...t.out_quorum],this.mon_status=t.mon_status})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Tv))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-monitor"]],decls:13,vars:5,consts:function(){let s,t,o,c,g,C,D,P,j,W;return s="Status",t="In Quorum",o="Not In Quorum",c="Cluster ID",g="monmap modified",C="monmap epoch",D="quorum con",P="quorum mon",j="required con",W="required mon",[[1,"row"],[1,"col-lg-4"],[1,"cd-header"],s,["class","table table-striped",4,"ngIf"],[1,"col-lg-8"],[1,"in-quorum","cd-header"],t,[3,"data","columns"],o,[3,"data","columns","fetchData"],[1,"table","table-striped"],[1,"bold"],c,g,C,D,P,j,W]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"fieldset"),e.TgZ(3,"legend",2),e.SDv(4,3),e.qZA(),e.YNc(5,AS,37,9,"table",4),e.qZA(),e.qZA(),e.TgZ(6,"div",5),e.TgZ(7,"legend",6),e.SDv(8,7),e.qZA(),e._UZ(9,"cd-table",8),e.TgZ(10,"legend",6),e.SDv(11,9),e.qZA(),e.TgZ(12,"cd-table",10),e.NdJ("fetchData",function(){return o.refresh()}),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(5),e.Q6J("ngIf",o.mon_status),e.xp6(4),e.Q6J("data",o.inQuorum.data)("columns",o.inQuorum.columns),e.xp6(3),e.Q6J("data",o.notInQuorum.data)("columns",o.notInQuorum.columns))},directives:[_.O5,Hs.a],pipes:[bt.h],styles:[""]}),n})();class Sv{}function M1(n,s){if(1&n&&(e.TgZ(0,"span",18),e.SDv(1,19),e.qZA()),2&n){const t=e.oxw(2);e.Q6J("ngbTooltip",t.clusterWideTooltip)}}function Bm(n,s){1&n&&e._UZ(0,"hr",20)}function Fb(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",12),e.TgZ(1,"input",13),e.NdJ("change",function(){const g=e.CHM(t).$implicit;return e.oxw().changeValue(g)}),e.qZA(),e.TgZ(2,"label",14),e.TgZ(3,"strong"),e._uU(4),e.qZA(),e.YNc(5,M1,2,1,"span",15),e._UZ(6,"br"),e.TgZ(7,"span",16),e._uU(8),e.qZA(),e.qZA(),e.YNc(9,Bm,1,0,"hr",17),e.qZA()}if(2&n){const t=s.$implicit,o=s.last;e.xp6(1),e.Q6J("checked",t.value)("indeterminate",t.indeterminate)("name",t.code)("id",t.code),e.xp6(1),e.Q6J("for",t.code),e.xp6(2),e.Oqu(t.name),e.xp6(1),e.Q6J("ngIf",t.clusterWide),e.xp6(3),e.Oqu(t.description),e.xp6(1),e.Q6J("ngIf",!o)}}let kb=(()=>{class n{constructor(t,o,c,g,C){this.activeModal=t,this.actionLabels=o,this.authStorageService=c,this.osdService=g,this.notificationService=C,this.initialSelection=[],this.osdFlagsForm=new vn.cw({}),this.flags=[{code:"noup",name:"No Up",description:"OSDs are not allowed to start",value:!1,clusterWide:!1,indeterminate:!1},{code:"nodown",name:"No Down",description:"OSD failure reports are being ignored, such that the monitors will not mark OSDs down",value:!1,clusterWide:!1,indeterminate:!1},{code:"noin",name:"No In",description:"OSDs that were previously marked out will not be marked back in when they start",value:!1,clusterWide:!1,indeterminate:!1},{code:"noout",name:"No Out",description:"OSDs will not automatically be marked out after the configured interval",value:!1,clusterWide:!1,indeterminate:!1}],this.clusterWideTooltip="The flag has been enabled for the entire cluster.",this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const t=this.selected.length;this.osdService.getFlags().subscribe(o=>{const c=this.getActivatedIndivFlags();this.flags.forEach(g=>{const C=c[g.code];o.includes(g.code)&&(g.clusterWide=!0),C===t?g.value=!0:C>0&&(g.indeterminate=!0)}),this.initialSelection=Ar().cloneDeep(this.flags)})}getActivatedIndivFlags(){const t={};return this.flags.forEach(o=>{t[o.code]=0}),[].concat(...this.selected.map(o=>o.state)).map(o=>{Object.keys(t).includes(o)&&(t[o]=t[o]+1)}),t}changeValue(t){t.value=!t.value,t.indeterminate=!1}resetSelection(){this.flags=Ar().cloneDeep(this.initialSelection)}submitAction(){const t={};this.flags.forEach(c=>{t[c.code]=c.indeterminate?null:c.value});const o=this.selected.map(c=>c.osd);this.osdService.updateIndividualFlags(t,o).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated OSD Flags"),this.activeModal.close()},()=>{this.activeModal.close()})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(_t.j),e.Y36(Ji),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-flags-indiv-modal"]],decls:12,vars:6,consts:function(){let s,t,o;return s="Individual OSD Flags",t="Restore previous selection",o="Cluster-wide",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","osdFlagsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"modal-footer"],["type","button",1,"btn","btn-light",3,"click"],t,[3,"form","showSubmit","submitText","submitActionEvent"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"checked","indeterminate","name","id","change"],["ng-class","['tc_' + key]",1,"custom-control-label",3,"for"],["class","badge badge-hdd ml-2",3,"ngbTooltip",4,"ngIf"],[1,"form-text","text-muted"],["class","m-1",4,"ngIf"],[1,"badge","badge-hdd","ml-2",3,"ngbTooltip"],o,[1,"m-1"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,Fb,10,9,"div",7),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"button",9),e.NdJ("click",function(){return o.resetSelection()}),e.SDv(10,10),e.qZA(),e.TgZ(11,"cd-form-button-panel",11),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.osdFlagsForm),e.xp6(3),e.Q6J("ngForOf",o.flags),e.xp6(4),e.Q6J("form",o.osdFlagsForm)("showSubmit",o.permissions.osd.update)("submitText",o.actionLabels.UPDATE))},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,_.sg,ca.o,nl.p,Ha.b,_.O5,lt._L],styles:[""]}),n})();var Cv=i(84333);function J0(n,s){1&n&&e._UZ(0,"hr",15)}function Q0(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",10),e.TgZ(1,"input",11),e.NdJ("change",function(){const g=e.CHM(t).$implicit;return g.value=!g.value}),e.qZA(),e.TgZ(2,"label",12),e.TgZ(3,"strong"),e._uU(4),e.qZA(),e._UZ(5,"br"),e.TgZ(6,"span",13),e._uU(7),e.qZA(),e.qZA(),e.YNc(8,J0,1,0,"hr",14),e.qZA()}if(2&n){const t=s.$implicit,o=s.last;e.xp6(1),e.Q6J("checked",t.value)("name",t.code)("id",t.code)("disabled",t.disabled),e.xp6(1),e.Q6J("for",t.code),e.xp6(2),e.Oqu(t.name),e.xp6(3),e.Oqu(t.description),e.xp6(1),e.Q6J("ngIf",!o)}}let A1=(()=>{class n{constructor(t,o,c,g,C){this.activeModal=t,this.actionLabels=o,this.authStorageService=c,this.osdService=g,this.notificationService=C,this.osdFlagsForm=new vn.cw({}),this.allFlags={noin:{code:"noin",name:"No In",value:!1,description:"OSDs that were previously marked out will not be marked back in when they start"},noout:{code:"noout",name:"No Out",value:!1,description:"OSDs will not automatically be marked out after the configured interval"},noup:{code:"noup",name:"No Up",value:!1,description:"OSDs are not allowed to start"},nodown:{code:"nodown",name:"No Down",value:!1,description:"OSD failure reports are being ignored, such that the monitors will not mark OSDs down"},pause:{code:"pause",name:"Pause",value:!1,description:"Pauses reads and writes"},noscrub:{code:"noscrub",name:"No Scrub",value:!1,description:"Scrubbing is disabled"},"nodeep-scrub":{code:"nodeep-scrub",name:"No Deep Scrub",value:!1,description:"Deep Scrubbing is disabled"},nobackfill:{code:"nobackfill",name:"No Backfill",value:!1,description:"Backfilling of PGs is suspended"},norebalance:{code:"norebalance",name:"No Rebalance",value:!1,description:"OSD will choose not to backfill unless PG is also degraded"},norecover:{code:"norecover",name:"No Recover",value:!1,description:"Recovery of PGs is suspended"},sortbitwise:{code:"sortbitwise",name:"Bitwise Sort",value:!1,description:"Use bitwise sort",disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:"Purged Snapdirs",value:!1,description:"OSDs have converted snapsets",disabled:!0},recovery_deletes:{code:"recovery_deletes",name:"Recovery Deletes",value:!1,description:"Deletes performed during recovery instead of peering",disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:"PG Log Hard Limit",value:!1,description:"Puts a hard limit on pg log length",disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(t=>{t.forEach(o=>{this.allFlags[o]?this.allFlags[o].value=!0:this.unknownFlags.push(o)}),this.flags=Ar().toArray(this.allFlags)})}submitAction(){const t=this.flags.filter(o=>o.value).map(o=>o.code).concat(this.unknownFlags);this.osdService.updateFlags(t).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated OSD Flags"),this.activeModal.close()},()=>{this.activeModal.close()})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(_t.j),e.Y36(Ji),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-flags-modal"]],decls:10,vars:6,consts:function(){let s;return s="Cluster-wide OSD Flags",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","osdFlagsForm","novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],["class","custom-control custom-checkbox",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"checked","name","id","disabled","change"],["ng-class","['tc_' + key]",1,"custom-control-label",3,"for"],[1,"form-text","text-muted"],["class","m-1",4,"ngIf"],[1,"m-1"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,Q0,9,8,"div",7),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.osdFlagsForm),e.xp6(3),e.Q6J("ngForOf",o.flags),e.xp6(2),e.Q6J("form",o.osdFlagsForm)("showSubmit",o.permissions.osd.update)("submitText",o.actionLabels.UPDATE))},directives:[h.z,vn._Y,vn.JL,Cv.T,tl.V,vn.sg,_.sg,nl.p,ca.o,Ha.b,_.O5],styles:[""]}),n})();function X0(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",t.long_desc,"")}}function $b(n,s){if(1&n&&(e.TgZ(0,"div",4),e.TgZ(1,"label",5),e.TgZ(2,"b"),e._uU(3),e.qZA(),e._UZ(4,"br"),e.TgZ(5,"span",6),e._uU(6),e.YNc(7,X0,2,1,"cd-helper",7),e.qZA(),e.qZA(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e._UZ(10,"input",10),e._UZ(11,"label",11),e.qZA(),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.Q6J("for",t.name),e.xp6(2),e.Oqu(t.text),e.xp6(3),e.hij(" ",t.desc," "),e.xp6(1),e.Q6J("ngIf",t.long_desc),e.xp6(3),e.Q6J("id",t.name)("formControlName",t.name),e.xp6(1),e.Q6J("for",t.name)}}function Ym(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",t.long_desc,"")}}const O1=function(n){return[n]};function K0(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",16),e.TgZ(1,"button",17),e.NdJ("click",function(){e.CHM(t);const c=e.oxw(2).$implicit;return e.oxw().resetValue(c.name)}),e._UZ(2,"i",18),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(2),e.Q6J("ngClass",e.VKq(1,O1,t.icons.erase))}}function q0(n,s){if(1&n&&(e.TgZ(0,"span",19),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",t.additionalTypeInfo.patternHelpText,"")}}function ey(n,s){if(1&n&&(e.TgZ(0,"span",19),e._uU(1),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.hij(" ",t.additionalTypeInfo.patternHelpText,"")}}function ty(n,s){if(1&n&&(e.TgZ(0,"span",19),e.SDv(1,20),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.pQV(t.maxValue),e.QtT(1)}}function Hb(n,s){if(1&n&&(e.TgZ(0,"span",19),e.SDv(1,21),e.qZA()),2&n){const t=e.oxw(2).$implicit;e.xp6(1),e.pQV(t.minValue),e.QtT(1)}}function Ub(n,s){if(1&n&&(e.TgZ(0,"div",4),e.TgZ(1,"label",5),e._uU(2),e._UZ(3,"br"),e.TgZ(4,"span",6),e._uU(5),e.YNc(6,Ym,2,1,"cd-helper",7),e.qZA(),e.qZA(),e.TgZ(7,"div",8),e.TgZ(8,"div",12),e._UZ(9,"input",13),e.YNc(10,K0,3,3,"div",14),e.qZA(),e.YNc(11,q0,2,1,"span",15),e.YNc(12,ey,2,1,"span",15),e.YNc(13,ty,2,1,"span",15),e.YNc(14,Hb,2,1,"span",15),e.qZA(),e.qZA()),2&n){const t=e.oxw().$implicit,o=e.oxw();e.xp6(1),e.Q6J("for",t.name),e.xp6(1),e.hij("",t.text," "),e.xp6(3),e.hij(" ",t.desc," "),e.xp6(1),e.Q6J("ngIf",t.long_desc),e.xp6(3),e.Q6J("type",t.additionalTypeInfo.inputType)("id",t.name)("placeholder",t.additionalTypeInfo.humanReadable)("formControlName",t.name)("step",o.getStep(t.type,o.optionsForm.getValue(t.name))),e.xp6(1),e.Q6J("ngIf",o.optionsFormShowReset),e.xp6(1),e.Q6J("ngIf",o.optionsForm.showError(t.name,o.optionsFormDir,"pattern")),e.xp6(1),e.Q6J("ngIf",o.optionsForm.showError(t.name,o.optionsFormDir,"invalidUuid")),e.xp6(1),e.Q6J("ngIf",o.optionsForm.showError(t.name,o.optionsFormDir,"max")),e.xp6(1),e.Q6J("ngIf",o.optionsForm.showError(t.name,o.optionsFormDir,"min"))}}function Bb(n,s){1&n&&e._UZ(0,"hr",22)}function Yb(n,s){if(1&n&&(e.TgZ(0,"div"),e.YNc(1,$b,12,7,"div",2),e.YNc(2,Ub,15,14,"div",2),e.YNc(3,Bb,1,0,"hr",3),e.qZA()),2&n){const t=s.$implicit,o=s.last;e.xp6(1),e.Q6J("ngIf","bool"===t.type),e.xp6(1),e.Q6J("ngIf","bool"!==t.type),e.xp6(1),e.Q6J("ngIf",!o)}}let ny=(()=>{class n{constructor(t){this.configService=t,this.optionNames=[],this.optionsForm=new Us.d({}),this.optionsFormDir=new vn.F([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=No.P,this.options=[],this.optionsFormGroup=new Us.d({})}static optionNameToText(t){const o=["mon","mgr","osd","mds","client"];return t.split("_").filter((c,g)=>0!==g||!o.includes(c)).map(c=>c.charAt(0).toUpperCase()+c.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(t=>{this.optionsFormGroup.addControl(t,new vn.NI(null))})}getStep(t,o){return ss.getTypeStep(t,o)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(t=>{this.options=t.map(o=>{const c=this.optionsForm.get(o.name),g=ss.getTypeValidators(o);return o.additionalTypeInfo=ss.getType(o.type),o.text=n.optionNameToText(o.name),o.value=Ar().find(o.value,C=>"osd"===C.section),o.value&&c.setValue("bool"===o.additionalTypeInfo.name?"true"===o.value.value:o.value.value),g&&(o.patternHelpText=g.patternHelpText,"max"in g&&""!==g.max&&(o.maxValue=g.max),"min"in g&&""!==g.min&&(o.minValue=g.min),c.setValidators(g.validators)),o})})}saveValues(){const t={};return this.optionNames.forEach(o=>{const c=this.optionsForm.getValue(o);null!==c&&""!==c&&(t[o]={section:"osd",value:c})}),this.configService.bulkCreate({options:t})}resetValue(t){this.configService.delete(t,"osd").subscribe(()=>{this.optionsForm.get(t).reset()})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(va.e))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-config-option"]],inputs:{optionNames:"optionNames",optionsForm:"optionsForm",optionsFormDir:"optionsFormDir",optionsFormGroupName:"optionsFormGroupName",optionsFormShowReset:"optionsFormShowReset"},decls:2,vars:2,consts:function(){let s,t,o;return s="Remove the custom configuration value. The default configuration will be inherited and used instead.",t="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",o="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[[3,"formGroup"],[4,"ngFor","ngForOf"],["class","form-group row pt-2",4,"ngIf"],["class","my-2",4,"ngIf"],[1,"form-group","row","pt-2"],[1,"cd-col-form-label",3,"for"],[1,"text-muted"],[4,"ngIf"],[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox",1,"custom-control-input",3,"id","formControlName"],[1,"custom-control-label",3,"for"],[1,"input-group"],[1,"form-control",3,"type","id","placeholder","formControlName","step"],["class","input-group-append",4,"ngIf"],["class","invalid-feedback",4,"ngIf"],[1,"input-group-append"],["type","button","data-toggle","button","title",s,1,"btn","btn-light",3,"click"],["aria-hidden","true",3,"ngClass"],[1,"invalid-feedback"],t,o,[1,"my-2"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.YNc(1,Yb,4,3,"div",1),e.qZA()),2&t&&(e.Q6J("formGroup",o.optionsFormGroup),e.xp6(1),e.Q6J("ngForOf",o.options))},directives:[vn.JL,vn.sg,tl.V,_.sg,_.O5,$a.P,ca.o,vn.Wl,Ha.b,vn.JJ,vn.u,E.S,vn.Fj,_.mk],styles:[".custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]}),n})(),Zb=(()=>{class n{}return n.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],n.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],n})();const ry=["basicOptionsValues"],jb=["advancedOptionsValues"];function Gb(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"a",15),e.NdJ("click",function(){return e.CHM(t),e.oxw().advancedEnabled=!0}),e.SDv(1,16),e.qZA()}}function OS(n,s){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"h3",17),e.SDv(2,18),e.qZA(),e._UZ(3,"cd-config-option",7,19),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(7);e.xp6(3),e.Q6J("optionNames",t.advancedOptions)("optionsForm",t.osdPgScrubForm)("optionsFormDir",o)("optionsFormGroupName","advancedFormGroup")}}let wS=(()=>{class n{constructor(t,o,c,g){this.activeModal=t,this.authStorageService=o,this.notificationService=c,this.actionLabels=g,this.basicOptions=Zb.basicOptions,this.advancedOptions=Zb.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new Us.d({}),this.resource="PG scrub options",this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const t=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&t.push(this.advancedOptionsValues.saveValues()),(0,Oc.D)(t).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated PG scrub options"),this.activeModal.close()},()=>{this.activeModal.close()})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(_t.j),e.Y36(ll.g),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-pg-scrub-modal"]],viewQuery:function(t,o){if(1&t&&(e.Gf(ry,7),e.Gf(jb,5)),2&t){let c;e.iGM(c=e.CRH())&&(o.basicOptionsValues=c.first),e.iGM(c=e.CRH())&&(o.advancedOptionsValues=c.first)}},decls:19,vars:21,consts:function(){let s,t,o;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Advanced...",o="Advanced configuration options",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body","osd-modal"],[3,"optionNames","optionsForm","optionsFormDir","optionsFormGroupName"],["basicOptionsValues",""],[1,"row"],[1,"col-sm-12"],["class","pull-right margin-right-md",3,"click",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],[3,"form","showSubmit","submitText","submitActionEvent"],[1,"pull-right","margin-right-md",3,"click"],t,[1,"page-header"],o,["advancedOptionsValues",""]]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.ALo(3,"titlecase"),e.ALo(4,"upperFirst"),e.BQk(),e.ynx(5,3),e.TgZ(6,"form",4,5),e.TgZ(8,"div",6),e._UZ(9,"cd-config-option",7,8),e.TgZ(11,"div",9),e.TgZ(12,"div",10),e.YNc(13,Gb,2,0,"a",11),e.qZA(),e.qZA(),e.YNc(14,OS,5,4,"div",12),e.qZA(),e.TgZ(15,"div",13),e.TgZ(16,"cd-form-button-panel",14),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.ALo(17,"titlecase"),e.ALo(18,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const c=e.MAs(7);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.pQV(e.lcZ(3,13,o.action))(e.lcZ(4,15,o.resource)),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.osdPgScrubForm),e.xp6(3),e.Q6J("optionNames",o.basicOptions)("optionsForm",o.osdPgScrubForm)("optionsFormDir",c)("optionsFormGroupName","basicFormGroup"),e.xp6(4),e.Q6J("ngIf",!o.advancedEnabled),e.xp6(1),e.Q6J("ngIf",o.advancedEnabled),e.xp6(2),e.Q6J("form",o.osdPgScrubForm)("showSubmit",o.permissions.configOpt.update)("submitText",e.lcZ(17,17,o.action)+" "+e.lcZ(18,19,o.resource))}},directives:[h.z,vn._Y,vn.JL,Cv.T,tl.V,vn.sg,ny,_.O5,nl.p],pipes:[_.rS,K.m],styles:[""]}),n})();function w1(n,s){if(1&n&&(e.TgZ(0,"option",22),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.name),e.xp6(1),e.hij(" ",t.text," ")}}function Vb(n,s){1&n&&(e.TgZ(0,"span",23),e.SDv(1,24),e.qZA())}function iy(n,s){if(1&n&&(e.TgZ(0,"cd-helper"),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.Oqu(t.value.desc)}}function oy(n,s){1&n&&(e.TgZ(0,"span",23),e.SDv(1,29),e.qZA())}function xS(n,s){if(1&n&&(e.TgZ(0,"span",23),e.SDv(1,30),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.pQV(t.value.patternHelpText),e.QtT(1)}}function hh(n,s){if(1&n&&(e.TgZ(0,"span",23),e.SDv(1,31),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.pQV(t.value.maxValue),e.QtT(1)}}function DS(n,s){if(1&n&&(e.TgZ(0,"span",23),e.SDv(1,32),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.pQV(t.value.minValue),e.QtT(1)}}const sy=function(n){return{required:n}};function zb(n,s){if(1&n&&(e.TgZ(0,"div",7),e.TgZ(1,"label",25),e.TgZ(2,"span",26),e._uU(3),e.qZA(),e.YNc(4,iy,2,1,"cd-helper",27),e.qZA(),e.TgZ(5,"div",10),e._UZ(6,"input",28),e.YNc(7,oy,2,0,"span",13),e.YNc(8,xS,2,1,"span",13),e.YNc(9,hh,2,1,"span",13),e.YNc(10,DS,2,1,"span",13),e.qZA(),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(),c=e.MAs(5);e.xp6(1),e.Q6J("for",t.key),e.xp6(1),e.Q6J("ngClass",e.VKq(11,sy,o.osdRecvSpeedForm.getValue("customizePriority"))),e.xp6(1),e.hij(" ",t.value.text," "),e.xp6(1),e.Q6J("ngIf",t.value.desc),e.xp6(2),e.Q6J("id",t.key)("formControlName",t.key)("readonly",!o.osdRecvSpeedForm.getValue("customizePriority")),e.xp6(1),e.Q6J("ngIf",o.osdRecvSpeedForm.getValue("customizePriority")&&o.osdRecvSpeedForm.showError(t.key,c,"required")),e.xp6(1),e.Q6J("ngIf",o.osdRecvSpeedForm.getValue("customizePriority")&&o.osdRecvSpeedForm.showError(t.key,c,"pattern")),e.xp6(1),e.Q6J("ngIf",o.osdRecvSpeedForm.getValue("customizePriority")&&o.osdRecvSpeedForm.showError(t.key,c,"max")),e.xp6(1),e.Q6J("ngIf",o.osdRecvSpeedForm.getValue("customizePriority")&&o.osdRecvSpeedForm.showError(t.key,c,"min"))}}let x1=(()=>{class n{constructor(t,o,c,g,C,D){this.activeModal=t,this.actionLabels=o,this.authStorageService=c,this.configService=g,this.notificationService=C,this.osdService=D,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new Us.d({priority:new vn.NI(null,{validators:[vn.kI.required]}),customizePriority:new vn.NI(!1)}),this.priorityAttrs={osd_max_backfills:{text:"Max Backfills",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:"Recovery Max Active",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:"Recovery Max Single Start",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:"Recovery Sleep",desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(P=>{this.osdRecvSpeedForm.addControl(P,new vn.NI(null,{validators:[vn.kI.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(t=>{const o=this.getCurrentValues(t);this.detectPriority(o.values,c=>{this.setPriority(c)}),this.setDescription(o.configOptions),this.setValidators(o.configOptions)})}detectPriority(t,o){const c=Ar().find(this.priorities,g=>Ar().isEqual(g.values,t));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),c?o(c):4===Object.entries(t).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),o(Object({name:"custom",text:"Custom",values:t}))):o(this.priorities[0])}getCurrentValues(t){const o={values:{},configOptions:[]};return t.forEach(c=>{o.configOptions.push(c),"value"in c?c.value.forEach(g=>{"osd"===g.section&&(o.values[c.name]=Number(g.value))}):"default"in c&&null!==c.default&&(o.values[c.name]=Number(c.default))}),o}setDescription(t){t.forEach(o=>{""!==o.desc&&(this.priorityAttrs[o.name].desc=o.desc)})}setPriority(t){const o=Ar().find(this.priorities,c=>"custom"===c.name);"custom"===t.name?o||this.priorities.push(t):o&&this.priorities.splice(this.priorities.indexOf(o),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(([c,g])=>{this.osdRecvSpeedForm.controls[c].setValue(g)})}setValidators(t){t.forEach(o=>{const c=ss.getTypeValidators(o);c?(c.validators.push(vn.kI.required),"max"in c&&""!==c.max&&(this.priorityAttrs[o.name].maxValue=c.max),"min"in c&&""!==c.min&&(this.priorityAttrs[o.name].minValue=c.min),this.priorityAttrs[o.name].patternHelpText=c.patternHelpText,this.osdRecvSpeedForm.controls[o.name].setValidators(c.validators)):this.osdRecvSpeedForm.controls[o.name].setValidators(vn.kI.required)})}onCustomizePriorityChange(){const t={};if(Object.keys(this.priorityAttrs).forEach(o=>{t[o]=this.osdRecvSpeedForm.getValue(o)}),this.osdRecvSpeedForm.getValue("customizePriority")){const o={name:"custom",text:"Custom",values:t};this.setPriority(o)}else this.detectPriority(t,o=>{this.setPriority(o)})}onPriorityChange(t){const o=Ar().find(this.priorities,c=>c.name===t)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(o)}submitAction(){const t={};Object.keys(this.priorityAttrs).forEach(o=>{t[o]={section:"osd",value:this.osdRecvSpeedForm.getValue(o)}}),this.configService.bulkCreate({options:t}).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated OSD recovery speed priority '" + this.osdRecvSpeedForm.getValue("priority") + "'"),this.activeModal.close()},()=>{this.activeModal.close()})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(_t.j),e.Y36(va.e),e.Y36(ll.g),e.Y36(Ji))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-recv-speed-modal"]],decls:24,vars:10,consts:function(){let s,t,o,c,g,C,D,P;return s="OSD Recovery Priority",t="Priority",o="Customize priority values",c="This field is required.",g="This field is required!",C="" + "\ufffd0\ufffd" + "",D="The entered value is too high! It must not be greater than " + "\ufffd0\ufffd" + ".",P="The entered value is too low! It must not be lower than " + "\ufffd0\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["novalidate","","cdFormScope","osd",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","priority",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["formControlName","priority","id","priority",1,"form-control",3,"change"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["formControlName","customizePriority","id","customizePriority","name","customizePriority","type","checkbox",1,"custom-control-input",3,"change"],["for","customizePriority",1,"custom-control-label"],o,["class","form-group row",4,"ngFor","ngForOf"],[1,"modal-footer"],[3,"form","submitText","showSubmit","submitActionEvent"],[3,"value"],[1,"invalid-feedback"],c,[1,"cd-col-form-label",3,"for"],[3,"ngClass"],[4,"ngIf"],["type","number",1,"form-control",3,"id","formControlName","readonly"],g,C,D,P]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.TgZ(11,"select",11),e.NdJ("change",function(g){return o.onPriorityChange(g.target.value)}),e.YNc(12,w1,2,2,"option",12),e.qZA(),e.YNc(13,Vb,2,0,"span",13),e.qZA(),e.qZA(),e.TgZ(14,"div",7),e.TgZ(15,"div",14),e.TgZ(16,"div",15),e.TgZ(17,"input",16),e.NdJ("change",function(){return o.onCustomizePriorityChange()}),e.qZA(),e.TgZ(18,"label",17),e.SDv(19,18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(20,zb,11,13,"div",19),e.ALo(21,"keyvalue"),e.qZA(),e.TgZ(22,"div",20),e.TgZ(23,"cd-form-button-panel",21),e.NdJ("submitActionEvent",function(){return o.submitAction()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const c=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.osdRecvSpeedForm),e.xp6(8),e.Q6J("ngForOf",o.priorities),e.xp6(1),e.Q6J("ngIf",o.osdRecvSpeedForm.showError("priority",c,"required")),e.xp6(7),e.Q6J("ngForOf",e.lcZ(21,8,o.priorityAttrs)),e.xp6(3),e.Q6J("form",o.osdRecvSpeedForm)("submitText",o.actionLabels.UPDATE)("showSubmit",o.permissions.configOpt.update)}},directives:[h.z,vn._Y,vn.JL,Cv.T,tl.V,vn.sg,$a.P,ca.o,vn.EJ,Ha.b,vn.JJ,vn.u,_.sg,_.O5,vn.Wl,nl.p,vn.YN,vn.Kr,_.mk,vn.wV,vn.Fj,E.S],pipes:[_.Nd],styles:[""]}),n})();function ay(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,15),e.qZA())}function ly(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,16),e.qZA())}function Wb(n,s){if(1&n&&(e.TgZ(0,"span",13),e.YNc(1,ay,2,0,"span",14),e.YNc(2,ly,2,0,"span",14),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf",null==t.weight.errors?null:t.weight.errors.required),e.xp6(1),e.Q6J("ngIf",(null==t.weight.errors?null:t.weight.errors.max)||(null==t.weight.errors?null:t.weight.errors.min))}}let uy=(()=>{class n{constructor(t,o,c,g){this.actionLabels=t,this.activeModal=o,this.osdService=c,this.fb=g,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[vn.kI.required])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.activeModal.close())}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(lt.Kz),e.Y36(Ji),e.Y36(id.O))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-reweight-modal"]],decls:14,vars:7,consts:function(){let s,t,o;return s="Reweight OSD: " + "\ufffd0\ufffd" + "",t="This field is required.",o="The value needs to be between 0 and 1.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],[3,"formGroup"],[1,"modal-body"],[1,"row"],["for","weight",1,"cd-col-form-label"],[1,"cd-col-form-input"],["id","weight","type","number","step","0.1","formControlName","weight","min","0","max","1",1,"form-control",3,"value"],["class","invalid-feedback",4,"ngIf"],[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],[4,"ngIf"],t,o]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.ynx(1,1),e.SDv(2,2),e.BQk(),e.ynx(3,3),e.TgZ(4,"form",4),e.TgZ(5,"div",5),e.TgZ(6,"div",6),e.TgZ(7,"label",7),e._uU(8,"Weight"),e.qZA(),e.TgZ(9,"div",8),e._UZ(10,"input",9),e.YNc(11,Wb,3,2,"span",10),e.qZA(),e.qZA(),e.qZA(),e.TgZ(12,"div",11),e.TgZ(13,"cd-form-button-panel",12),e.NdJ("submitActionEvent",function(){return o.reweight()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.osdId),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.reweightForm),e.xp6(6),e.Q6J("value",o.currentWeight),e.xp6(1),e.Q6J("ngIf",o.weight.errors),e.xp6(2),e.Q6J("form",o.reweightForm)("submitText",o.actionLabels.REWEIGHT))},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,ca.o,vn.wV,vn.qQ,vn.Fd,vn.Fj,Ha.b,vn.JJ,vn.u,_.O5,nl.p],styles:[""]}),n})();var Mv=i(86969);let D1=(()=>{class n{constructor(t,o,c,g,C){this.activeModal=t,this.actionLabels=o,this.osdService=c,this.notificationService=g,this.joinPipe=C,this.selected=[]}ngOnInit(){this.scrubForm=new vn.cw({})}scrub(){(0,Oc.D)(this.selected.map(t=>this.osdService.scrub(t,this.deep))).subscribe(()=>{this.notificationService.show(_a.k.success,"" + (this.deep ? "Deep scrub" : "Scrub") + " was initialized in the following OSD(s): " + this.joinPipe.transform(this.selected) + ""),this.activeModal.close()},()=>this.activeModal.close())}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(Ji),e.Y36(ll.g),e.Y36(Mv.A))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-scrub-modal"]],decls:13,vars:9,consts:function(){let s,t,o,c;return s="{VAR_SELECT, select, true {Deep } other {}}",s=e.Zx4(s,{VAR_SELECT:"\ufffd0\ufffd"}),t="OSDs " + s + "Scrub",o="{VAR_SELECT, select, true {deep } other {}}",o=e.Zx4(o,{VAR_SELECT:"\ufffd0\ufffd"}),c="You are about to apply a " + o + "scrub to the OSD(s): " + "\ufffd#9\ufffd" + "" + "\ufffd1\ufffd" + "" + "\ufffd/#9\ufffd" + ".",[[3,"modalRef"],[1,"modal-title"],t,[1,"modal-content"],["name","scrubForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],c,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"]]},template:function(t,o){1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"p"),e.tHW(8,7),e._UZ(9,"strong"),e.ALo(10,"join"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(11,"div",8),e.TgZ(12,"cd-form-button-panel",9),e.NdJ("submitActionEvent",function(){return o.scrub()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t&&(e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.deep),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.scrubForm),e.xp6(6),e.pQV(o.deep)(e.lcZ(10,7,o.selected)),e.QtT(8),e.xp6(2),e.Q6J("form",o.scrubForm)("submitText",o.actionLabels.UPDATE))},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,nl.p],pipes:[Mv.A],styles:[""]}),n})();var cy=i(98056);function Nf(n,s){if(1&n&&e._UZ(0,"cd-device-list",17),2&n){const t=e.oxw(2);e.Q6J("osdId",null==t.osd?null:t.osd.id)}}function R1(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",18),2&n){const t=e.oxw(2);e.Q6J("data",null==t.osd||null==t.osd.details?null:t.osd.details.osd_map)}}function Jb(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table-key-value",21),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw(3).refresh()}),e.qZA()}if(2&n){const t=e.oxw(3);e.Q6J("data",null==t.osd||null==t.osd.details?null:t.osd.details.osd_metadata)}}function Qb(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",22),e.SDv(1,23),e.qZA())}function Xb(n,s){if(1&n&&(e.YNc(0,Jb,1,1,"cd-table-key-value",19),e.YNc(1,Qb,2,0,"ng-template",null,20,e.W1O)),2&n){const t=e.MAs(2),o=e.oxw(2);e.Q6J("ngIf",null==o.osd||null==o.osd.details?null:o.osd.details.osd_metadata)("ngIfElse",t)}}function Kb(n,s){if(1&n&&e._UZ(0,"cd-smart-list",17),2&n){const t=e.oxw(2);e.Q6J("osdId",null==t.osd?null:t.osd.id)}}function N1(n,s){if(1&n&&e._UZ(0,"cd-table-performance-counter",25),2&n){const t=e.oxw(3);e.Q6J("serviceId",null==t.osd?null:t.osd.id)}}function Av(n,s){if(1&n&&e.YNc(0,N1,1,1,"cd-table-performance-counter",24),2&n){const t=e.oxw(2);e.Q6J("ngIf",null==t.osd?null:t.osd.details)}}function ng(n,s){if(1&n&&e._UZ(0,"cd-grafana",28),2&n){const t=e.oxw(3);e.Q6J("grafanaPath","osd-device-details?var-osd=osd."+t.osd.id)("type","metrics")}}function dy(n,s){1&n&&(e.TgZ(0,"li",26),e.TgZ(1,"a",4),e.SDv(2,27),e.qZA(),e.YNc(3,ng,1,2,"ng-template",6),e.qZA())}function _h(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,Nf,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,R1,1,1,"ng-template",6),e.qZA(),e.TgZ(11,"li",9),e.TgZ(12,"a",4),e.SDv(13,10),e.qZA(),e.YNc(14,Xb,3,2,"ng-template",6),e.qZA(),e.TgZ(15,"li",11),e.TgZ(16,"a",4),e.SDv(17,12),e.qZA(),e.YNc(18,Kb,1,1,"ng-template",6),e.qZA(),e.TgZ(19,"li",13),e.TgZ(20,"a",4),e.SDv(21,14),e.qZA(),e.YNc(22,Av,1,1,"ng-template",6),e.qZA(),e.YNc(23,dy,4,0,"li",15),e.qZA(),e._UZ(24,"div",16),e.BQk()),2&n){const t=e.MAs(2),o=e.oxw();e.xp6(23),e.Q6J("ngIf",o.grafanaPermission.read),e.xp6(1),e.Q6J("ngbNavOutlet",t)}}let Zm=(()=>{class n{constructor(t,o){this.osdService=t,this.authStorageService=o,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){var t,o,c;(null===(t=this.osd)||void 0===t?void 0:t.id)!==(null===(o=this.selection)||void 0===o?void 0:o.id)&&(this.osd=this.selection),Ar().isNumber(null===(c=this.osd)||void 0===c?void 0:c.id)&&this.refresh()}refresh(){this.osdService.getDetails(this.osd.id).subscribe(t=>{this.osd.details=t})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Ji),e.Y36(_t.j))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D;return s="Devices",t="Attributes (OSD map)",o="Metadata",c="Device health",g="Performance counter",C="Metadata not available",D="Performance Details",[[4,"ngIf"],["ngbNav","","id","tabset-osd-details","cdStatefulTab","osd-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","devices"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","attributes"],t,["ngbNavItem","metadata"],o,["ngbNavItem","device-health"],c,["ngbNavItem","performance-counter"],g,["ngbNavItem","performance-details",4,"ngIf"],[3,"ngbNavOutlet"],[3,"osdId"],[3,"data"],[3,"data","fetchData",4,"ngIf","ngIfElse"],["noMetaData",""],[3,"data","fetchData"],["type","warning"],C,["serviceType","osd",3,"serviceId",4,"ngIf"],["serviceType","osd",3,"serviceId"],["ngbNavItem","performance-details"],D,["uid","CrAHE0iZz","grafanaStyle","three",3,"grafanaPath","type"]]},template:function(t,o){1&t&&e.YNc(0,_h,25,2,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,Pa,Vr.b,Jt.G,Xn,cy.p,it.F],styles:[""]}),n})();const qb=["osdUsageTpl"],fy=["markOsdConfirmationTpl"],P1=["criticalConfirmationTpl"],zh=["reweightBodyTpl"],jm=["safeToDestroyBodyTpl"],rf=["deleteOsdExtraTpl"],E_=["flagsTpl"],Ov=function(){return{read:!0}};function Vp(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",13),e.NdJ("fetchData",function(){return e.CHM(t),e.oxw().getOsdList()})("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e.TgZ(1,"div",14),e._UZ(2,"cd-table-actions",15),e._UZ(3,"cd-table-actions",16),e.qZA(),e._UZ(4,"cd-osd-details",17),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.osds)("columns",t.columns)("hasDetails",!0)("updateSelectionOnRefresh","never"),e.xp6(2),e.Q6J("permission",t.permissions.osd)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("permission",e.DdM(11,Ov))("selection",t.selection)("tableActions",t.clusterWideActions),e.xp6(1),e.Q6J("selection",t.expandedRow)}}function I1(n,s){1&n&&e._UZ(0,"cd-grafana",19),2&n&&e.Q6J("grafanaPath","osd-overview?")("type","metrics")}function zg(n,s){1&n&&(e.TgZ(0,"li",2),e.TgZ(1,"a",3),e.SDv(2,18),e.qZA(),e.YNc(3,I1,1,2,"ng-template",5),e.qZA())}function Wg(n,s){if(1&n&&(e.ynx(0),e.tHW(1,20),e._UZ(2,"strong"),e.ALo(3,"join"),e._UZ(4,"strong"),e.N_p(),e.BQk()),2&n){const t=s.markActionDescription,o=s.osdIds;e.xp6(4),e.pQV(e.lcZ(3,2,o))(t),e.QtT(1)}}function Jg(n,s){if(1&n&&(e.TgZ(0,"div",23),e.TgZ(1,"cd-alert-panel",24),e.SDv(2,25),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=t.actionDescription,c=t.message,g=e.oxw();e.xp6(2),e.pQV(g.selection.hasSingleSelection)(o)(c),e.QtT(2)}}function Qg(n,s){if(1&n&&(e.YNc(0,Jg,3,3,"div",21),e.ynx(1),e.tHW(2,22),e._UZ(3,"strong"),e.ALo(4,"join"),e._UZ(5,"strong"),e.N_p(),e.BQk()),2&n){const o=s.actionDescription,c=s.osdIds;e.Q6J("ngIf",!s.safeToPerform),e.xp6(5),e.pQV(e.lcZ(4,3,c))(o),e.QtT(2)}}function Xg(n,s){if(1&n&&(e.TgZ(0,"span",28),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.Oqu(t)}}function Kg(n,s){if(1&n&&(e.TgZ(0,"span",29),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.Oqu(t)}}function qg(n,s){if(1&n&&(e.YNc(0,Xg,2,1,"span",26),e.YNc(1,Kg,2,1,"span",27)),2&n){const t=s.row;e.Q6J("ngForOf",t.cdClusterFlags),e.xp6(1),e.Q6J("ngForOf",t.cdIndivFlags)}}function em(n,s){if(1&n&&e._UZ(0,"cd-usage-bar",30),2&n){const t=s.row,o=e.oxw();e.Q6J("total",t.stats.stat_bytes)("used",t.stats.stat_bytes_used)("warningThreshold",o.osdSettings.nearfull_ratio)("errorThreshold",o.osdSettings.full_ratio)}}function tm(n,s){1&n&&(e.ynx(0,31),e.ynx(1,32),e.TgZ(2,"div",33),e.TgZ(3,"div",34),e._UZ(4,"input",35),e.TgZ(5,"label",36),e.SDv(6,37),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.BQk()),2&n&&e.Q6J("formGroup",s.form)}let hy=(()=>{class n extends Gl.o{constructor(t,o,c,g,C,D,P,j,W,re){super(),this.authStorageService=t,this.osdService=o,this.dimlessBinaryPipe=c,this.modalService=g,this.urlBuilder=C,this.router=D,this.taskWrapper=P,this.actionLabels=j,this.notificationService=W,this.orchService=re,this.icons=No.P,this.osdSettings=new Sv,this.selection=new hl.r,this.osds=[],this.disabledFlags=["sortbitwise","purged_snapdirs","recovery_deletes","pglog_hardlimit"],this.indivFlagNames=["noup","nodown","noin","noout"],this.actionOrchFeatures={create:[fu.OSD_CREATE],delete:[fu.OSD_DELETE]},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:No.P.add,click:()=>this.router.navigate([this.urlBuilder.getCreate()]),disable:ie=>this.getDisable("create",ie),canBePrimary:ie=>!ie.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:No.P.edit,click:()=>this.editAction()},{name:this.actionLabels.FLAGS,permission:"update",icon:No.P.flag,click:()=>this.configureFlagsIndivAction(),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.SCRUB,permission:"update",icon:No.P.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:ie=>ie.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:No.P.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:No.P.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal("out",this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:No.P.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal("in",this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:No.P.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal("down",this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:No.P.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal("Mark","OSD lost","marked lost",ie=>this.osdService.safeToDestroy(JSON.stringify(ie)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:No.P.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal("Purge","OSD","purged",ie=>this.osdService.safeToDestroy(JSON.stringify(ie)),"is_safe_to_destroy",ie=>(this.selection=new hl.r,this.osdService.purge(ie))),disable:()=>this.isNotSelectedOrInState("up"),icon:No.P.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal("destroy","OSD","destroyed",ie=>this.osdService.safeToDestroy(JSON.stringify(ie)),"is_safe_to_destroy",ie=>(this.selection=new hl.r,this.osdService.destroy(ie))),disable:()=>this.isNotSelectedOrInState("up"),icon:No.P.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>this.delete(),disable:ie=>this.getDisable("delete",ie),icon:No.P.destroy}]}static collectStates(t){const o=[t.in?"in":"out"];return t.up?o.push("up"):t.state.includes("destroyed")?o.push("destroyed"):o.push("down"),o}ngOnInit(){this.clusterWideActions=[{name:"Flags",icon:No.P.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:"Recovery Priority",icon:No.P.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:"PG scrub",icon:No.P.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"id",name:"ID",flexGrow:1,cellTransformation:Ja.e.executing,customTemplateConfig:{valueClass:"bold"}},{prop:"host.name",name:"Host"},{prop:"collectedStates",name:"Status",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:"Device class",flexGrow:1.2,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:"PGs",flexGrow:1},{prop:"stats.stat_bytes",name:"Size",flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"state",name:"Flags",cellTemplate:this.flagsTpl},{prop:"stats.usage",name:"Usage",cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:"Read bytes",cellTransformation:Ja.e.sparkline},{prop:"stats_history.in_bytes",name:"Write bytes",cellTransformation:Ja.e.sparkline},{prop:"stats.op_r",name:"Read ops",cellTransformation:Ja.e.perSecond},{prop:"stats.op_w",name:"Write ops",cellTransformation:Ja.e.perSecond}],this.orchService.status().subscribe(t=>this.orchStatus=t),this.osdService.getOsdSettings().pipe((0,ye.q)(1)).subscribe(t=>{this.osdSettings=t})}getDisable(t,o){if("delete"===t){if(!o.hasSelection)return!0;if(Ar().some(this.getSelectedOsds(),g=>{const C=Ar().get(g,"operational_status");return"deleting"===C||"unmanaged"===C}))return!0}return this.orchService.getTableActionDisableDesc(this.orchStatus,this.actionOrchFeatures[t])}getSelectedOsdIds(){const t=this.osds.map(o=>o.id);return this.selection.selected.map(o=>o.id).filter(o=>t.includes(o)).sort()}getSelectedOsds(){return this.osds.filter(t=>!Ar().isUndefined(t)&&this.getSelectedOsdIds().includes(t.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(t){this.selection=t}isNotSelectedOrInState(t){const o=this.getSelectedOsds();if(0===o.length)return!0;switch(t){case"in":return o.some(c=>1===c.in);case"out":return o.some(c=>1!==c.in);case"down":return o.some(c=>1!==c.up);case"up":return o.some(c=>1===c.up)}}getOsdList(){const t=[this.osdService.getList(),this.osdService.getFlags()];(0,Oc.D)(t).subscribe(o=>{this.osds=o[0].map(c=>{c.collectedStates=n.collectStates(c),c.stats_history.out_bytes=c.stats_history.op_out_bytes.map(C=>C[1]),c.stats_history.in_bytes=c.stats_history.op_in_bytes.map(C=>C[1]),c.stats.usage=c.stats.stat_bytes_used/c.stats.stat_bytes,c.cdIsBinary=!0,c.cdIndivFlags=c.state.filter(C=>this.indivFlagNames.includes(C)),c.cdClusterFlags=o[1].filter(C=>!this.disabledFlags.includes(C));const g=Ar().get(c,"operational_status","unmanaged");return"unmanaged"!==g&&"working"!==g&&(c.cdExecuting=g),c})})}editAction(){const t=Ar().filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(Vd.X,{titleText:"Edit OSD: " + t.id + "",fields:[{type:"text",name:"deviceClass",value:t.tree.device_class,label:"Device class",required:!0}],submitButtonText:"Edit OSD",onSubmit:o=>{this.osdService.update(t.id,o.deviceClass).subscribe(()=>{this.notificationService.show(_a.k.success,"Updated OSD '" + t.id + "'"),this.getOsdList()})}})}scrubAction(t){if(!this.hasOsdSelected)return;const o={selected:this.getSelectedOsdIds(),deep:t};this.bsModalRef=this.modalService.show(D1,o)}configureFlagsAction(){this.bsModalRef=this.modalService.show(A1)}configureFlagsIndivAction(){const t={selected:this.getSelectedOsds()};this.bsModalRef=this.modalService.show(kb,t)}showConfirmationModal(t,o){const c=this.getSelectedOsdIds();this.bsModalRef=this.modalService.show(nd.Y,{titleText:"Mark OSD " + t + "",buttonText:"Mark " + t + "",bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t,osdIds:c},onSubmit:()=>{(0,Oc.D)(this.getSelectedOsdIds().map(g=>o.call(this.osdService,g))).subscribe(()=>this.bsModalRef.close())}})}reweight(){const t=this.osds.filter(o=>o.id===this.selection.first().id).pop();this.bsModalRef=this.modalService.show(uy,{currentWeight:t.weight,osdId:t.id})}delete(){const t=new Us.d({preserve:new vn.NI(!1)});this.showCriticalConfirmationModal("delete","OSD","deleted",o=>this.osdService.safeToDelete(JSON.stringify(o)),"is_safe_to_delete",o=>(this.selection=new hl.r,this.taskWrapper.wrapTaskAroundCall({task:new cl.R("osd/"+ki.MQ.DELETE,{svc_id:o}),call:this.osdService.delete(o,t.value.preserve,!0)})),!0,t,this.deleteOsdExtraTpl)}showCriticalConfirmationModal(t,o,c,g,C,D,P=!1,j,W){g(this.getSelectedOsdIds()).subscribe(re=>{const ie=this.modalService.show(zl.M,{actionDescription:t,itemDescription:o,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:re[C],message:re.message,actionDescription:c,osdIds:this.getSelectedOsdIds()},childFormGroup:j,childFormGroupTemplate:W,submitAction:()=>{const ge=(0,Oc.D)(this.getSelectedOsdIds().map(_e=>D.call(this.osdService,_e)));P?ge.subscribe({error:()=>{this.getOsdList(),ie.close()},complete:()=>ie.close()}):ge.subscribe(()=>{this.getOsdList(),ie.close()},()=>ie.close())}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(x1)}configurePgScrubAction(){this.bsModalRef=this.modalService.show(wS,void 0,{size:"lg"})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Ji),e.Y36(yn.$),e.Y36(Ul.Z),e.Y36(Sl.F),e.Y36(Yo.F0),e.Y36(Ll.P),e.Y36(ki.p4),e.Y36(ll.g),e.Y36(Cc))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-osd-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(qb,7),e.Gf(fy,7),e.Gf(P1,7),e.Gf(zh,5),e.Gf(jm,5),e.Gf(rf,5),e.Gf(E_,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.osdUsageTpl=c.first),e.iGM(c=e.CRH())&&(o.markOsdConfirmationTpl=c.first),e.iGM(c=e.CRH())&&(o.criticalConfirmationTpl=c.first),e.iGM(c=e.CRH())&&(o.reweightBodyTpl=c.first),e.iGM(c=e.CRH())&&(o.safeToDestroyBodyTpl=c.first),e.iGM(c=e.CRH())&&(o.deleteOsdExtraTpl=c.first),e.iGM(c=e.CRH())&&(o.flagsTpl=c.first)}},features:[e._Bn([{provide:Sl.F,useValue:new Sl.F("osd")}]),e.qOj],decls:18,vars:2,consts:function(){let s,t,o,c,g,C,D;return s="OSDs List",t="Overall Performance",o="" + "[\ufffd#2\ufffd|\ufffd#4\ufffd]" + "OSD(s) " + "\ufffd0\ufffd" + "" + "[\ufffd/#2\ufffd|\ufffd/#4\ufffd]" + " will be marked " + "[\ufffd#2\ufffd|\ufffd#4\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#2\ufffd|\ufffd/#4\ufffd]" + " if you proceed.",o=e.Zx4(o),c="" + "[\ufffd#3\ufffd|\ufffd#5\ufffd]" + "OSD " + "\ufffd0\ufffd" + "" + "[\ufffd/#3\ufffd|\ufffd/#5\ufffd]" + " will be " + "[\ufffd#3\ufffd|\ufffd#5\ufffd]" + "" + "\ufffd1\ufffd" + "" + "[\ufffd/#3\ufffd|\ufffd/#5\ufffd]" + " if you proceed.",c=e.Zx4(c),g="{VAR_SELECT, select, true {OSD is} other {OSDs are}}",g=e.Zx4(g,{VAR_SELECT:"\ufffd0\ufffd"}),C="The " + g + " not safe to be " + "\ufffd1\ufffd" + "! " + "\ufffd2\ufffd" + "",D="Preserve OSD ID(s) for replacement.",[["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","",4,"ngIf"],[3,"ngbNavOutlet"],["markOsdConfirmationTpl",""],["criticalConfirmationTpl",""],["flagsTpl",""],["osdUsageTpl",""],["deleteOsdExtraTpl",""],["selectionType","multiClick",3,"data","columns","hasDetails","updateSelectionOnRefresh","fetchData","setExpandedRow","updateSelection"],[1,"table-actions","btn-toolbar"],["id","osd-actions",1,"btn-group",3,"permission","selection","tableActions"],["dropDownOnly","Cluster-wide configuration","btnColor","light","id","cluster-wide-actions",1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],t,["uid","lo02I1Aiz","grafanaStyle","four",3,"grafanaPath","type"],o,["class","danger",4,"ngIf"],c,[1,"danger"],["type","warning"],C,["class","badge badge-hdd mr-1",4,"ngFor","ngForOf"],["class","badge badge-info mr-1",4,"ngFor","ngForOf"],[1,"badge","badge-hdd","mr-1"],[1,"badge","badge-info","mr-1"],[3,"total","used","warningThreshold","errorThreshold"],[3,"formGroup"],["formGroupName","child"],[1,"form-group"],[1,"custom-control","custom-checkbox"],["type","checkbox","name","preserve","id","preserve","formControlName","preserve",1,"custom-control-input"],["for","preserve",1,"custom-control-label"],D]},template:function(t,o){if(1&t&&(e.TgZ(0,"ul",0,1),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.SDv(4,4),e.qZA(),e.YNc(5,Vp,5,12,"ng-template",5),e.qZA(),e.YNc(6,zg,4,0,"li",6),e.qZA(),e._UZ(7,"div",7),e.YNc(8,Wg,5,4,"ng-template",null,8,e.W1O),e.YNc(10,Qg,6,5,"ng-template",null,9,e.W1O),e.YNc(12,qg,2,2,"ng-template",null,10,e.W1O),e.YNc(14,em,1,4,"ng-template",null,11,e.W1O),e.YNc(16,tm,7,1,"ng-template",null,12,e.W1O)),2&t){const c=e.MAs(1);e.xp6(6),e.Q6J("ngIf",o.permissions.grafana.read),e.xp6(1),e.Q6J("ngbNavOutlet",c)}},directives:[lt.Pz,lt.nv,lt.Vx,lt.uN,_.O5,lt.tO,Hs.a,Xs.K,Zm,it.F,Jt.G,_.sg,co.O,tl.V,vn.JL,vn.sg,vn.x0,$a.P,ca.o,vn.Wl,Ha.b,vn.JJ,vn.u],pipes:[Mv.A],styles:[""]}),n})();var L1=i(9837);let rg=(()=>{class n{constructor(t,o){this.http=t,this.settingsService=o,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(t,o){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,o)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(t,o){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,o)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(t={}){return this.http.get(this.baseURL,{params:t})}getSilences(t={}){return this.http.get(`${this.baseURL}/silences`,{params:t})}getRules(t="all"){return this.http.get(`${this.baseURL}/rules`).pipe((0,su.U)(o=>(["alerting","rewrites"].includes(t)&&o.groups.map(c=>{c.rules=c.rules.filter(g=>g.type===t)}),o)))}setSilence(t){return this.http.post(`${this.baseURL}/silence`,t,{observe:"response"})}expireSilence(t){return this.http.delete(`${this.baseURL}/silence/${t}`,{observe:"response"})}getNotifications(t){return this.http.get(`${this.baseURL}/notifications?from=${t&&t.id?t.id:"last"}`)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN),e.LFG(L1.g))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var wv=i(61355);let F1=(()=>{class n{constructor(t){this.notificationService=t}sendNotifications(t){t.forEach(o=>this.notificationService.show(o))}convertToCustomAlerts(t){return Ar().uniqWith(t.map(o=>({status:Ar().isObject(o.status)?o.status.state:this.getPrometheusNotificationStatus(o),name:o.labels.alertname,url:o.generatorURL,description:o.annotations.description,fingerprint:Ar().isObject(o.status)&&o.fingerprint})),Ar().isEqual)}getPrometheusNotificationStatus(t){const o=t.status;return"firing"===o?"active":o}convertAlertToNotification(t){return new wv.T(this.formatType(t.status),`${t.name} (${t.status})`,this.appendSourceLink(t,t.description),void 0,"Prometheus")}formatType(t){return _a.k[Ar().findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},c=>c.includes(t))]}appendSourceLink(t,o){return`${o} <a href="${t.url}" target="_blank"><i class="${No.P.lineChart}"></i></a>`}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(ll.g))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),nm=(()=>{class n{constructor(t,o){this.alertFormatter=t,this.prometheusService=o,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(t=>this.handleAlerts(t),t=>{[404,504].includes(t.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(t=>{this.rules=t.groups.reduce((o,c)=>o.concat(c.rules.map(g=>(g.group=c.name,g))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.activeAlerts=Ar().reduce(this.alerts,(o,c)=>"active"===c.status.state?++o:o,0),this.activeCriticalAlerts=Ar().reduce(this.alerts,(o,c)=>"active"===c.status.state&&"critical"===c.labels.severity?++o:o,0),this.activeWarningAlerts=Ar().reduce(this.alerts,(o,c)=>"active"===c.status.state&&"warning"===c.labels.severity?++o:o,0),this.alerts=t,this.canAlertsBeNotified=!0}notifyOnAlertChanges(t,o){const c=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(o)),C=Ar().filter(c,D=>"suppressed"!==D.status).map(D=>this.alertFormatter.convertAlertToNotification(D));this.alertFormatter.sendNotifications(C)}getChangedAlerts(t,o){return Ar().differenceWith(t,o,Ar().isEqual).concat(this.getVanishedAlerts(t,o))}getVanishedAlerts(t,o){return Ar().differenceWith(o,t,(c,g)=>c.fingerprint===g.fingerprint).map(c=>(c.status="resolved",c))}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(F1),e.LFG(rg))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),xv=(()=>{class n extends Gl.o{constructor(t){super(),this.prometheusService=t,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1}ngOnInit(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(rg))},n.\u0275dir=e.lG2({type:n,features:[e.qOj]}),n})();function _y(n,s){if(1&n&&(e.tHW(0,4,1),e._UZ(1,"small",11),e.N_p()),2&n){const t=e.oxw();e.xp6(1),e.pQV(t.prometheusAlertService.activeCriticalAlerts),e.QtT(0)}}function O(n,s){if(1&n&&(e.tHW(0,4,2),e._UZ(1,"small",12),e.N_p()),2&n){const t=e.oxw();e.xp6(1),e.pQV(t.prometheusAlertService.activeWarningAlerts),e.QtT(0)}}let H=(()=>{class n{constructor(t,o){this.router=t,this.prometheusAlertService=o}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(nm))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-prometheus-tabs"]],decls:13,vars:3,consts:function(){let s,t,o;return s="Alerts",t="Silences",o="Active Alerts " + "\ufffd*5:1\ufffd\ufffd#1:1\ufffd" + "" + "\ufffd0:1\ufffd" + "" + "[\ufffd/#1:1\ufffd\ufffd/*5:1\ufffd|\ufffd/#1:2\ufffd\ufffd/*6:2\ufffd]" + "" + "\ufffd*6:2\ufffd\ufffd#1:2\ufffd" + "" + "\ufffd0:2\ufffd" + "" + "[\ufffd/#1:1\ufffd\ufffd/*5:1\ufffd|\ufffd/#1:2\ufffd\ufffd/*6:2\ufffd]" + "",o=e.Zx4(o),[["ngbNav","",1,"nav-tabs",3,"activeId","navChange"],["nav","ngbNav"],["ngbNavItem","/monitoring/active-alerts"],["ngbNavLink",""],o,["class","badge badge-danger ml-1",4,"ngIf"],["class","badge badge-warning ml-1",4,"ngIf"],["ngbNavItem","/monitoring/alerts"],s,["ngbNavItem","/monitoring/silences"],t,[1,"badge","badge-danger","ml-1"],[1,"badge","badge-warning","ml-1"]]},template:function(t,o){1&t&&(e.TgZ(0,"ul",0,1),e.NdJ("navChange",function(g){return o.router.navigate([g.nextId])}),e.TgZ(2,"li",2),e.TgZ(3,"a",3),e.tHW(4,4),e.YNc(5,_y,2,1,"small",5),e.YNc(6,O,2,1,"small",6),e.N_p(),e.qZA(),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",3),e.SDv(9,8),e.qZA(),e.qZA(),e.TgZ(10,"li",9),e.TgZ(11,"a",3),e.SDv(12,10),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.Q6J("activeId",o.router.url),e.xp6(5),e.Q6J("ngIf",o.prometheusAlertService.activeCriticalAlerts>0),e.xp6(1),e.Q6J("ngIf",o.prometheusAlertService.activeWarningAlerts>0))},directives:[lt.Pz,lt.nv,lt.Vx,_.O5],styles:[""]}),n})();const pe=["externalLinkTpl"];function Ke(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",3),e.tHW(1,4),e._UZ(2,"cd-doc",5),e.N_p(),e.qZA())}function kt(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",9),2&n){const t=e.oxw(2);e.Q6J("renderObjects",!0)("hideEmpty",!0)("appendParentKey",!1)("data",t.expandedRow)("customCss",t.customCss)("autoReload",!1)}}function pn(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",6),e.NdJ("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e._UZ(1,"cd-table-actions",7),e.YNc(2,kt,1,6,"cd-table-key-value",8),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.prometheusAlertService.alerts)("columns",t.columns)("forceIdentifier",!0)("customCss",t.customCss)("hasDetails",!0),e.xp6(1),e.Q6J("permission",t.permission)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("ngIf",t.expandedRow)}}const er=function(n){return[n]};function Cr(n,s){if(1&n&&(e.TgZ(0,"a",10),e._UZ(1,"i",11),e._uU(2," Source"),e.qZA()),2&n){const t=s.value,o=e.oxw();e.Q6J("href",t,e.LSH),e.xp6(1),e.Q6J("ngClass",e.VKq(2,er,o.icons.lineChart))}}let oo=(()=>{class n extends xv{constructor(t,o,c,g){super(g),this.authStorageService=t,this.prometheusAlertService=o,this.urlBuilder=c,this.selection=new hl.r,this.icons=No.P,this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:C=>C.hasSingleSelection,disable:C=>!C.hasSingleSelection||C.first().cdExecuting,icon:No.P.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:"Create Silence"}]}ngOnInit(){super.ngOnInit(),this.columns=[{name:"Name",prop:"labels.alertname",cellClass:"font-weight-bold",flexGrow:2},{name:"Summary",prop:"annotations.summary",flexGrow:3},{name:"Severity",prop:"labels.severity",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{critical:{class:"badge-danger"},warning:{class:"badge-warning"}}}},{name:"State",prop:"status.state",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{active:{class:"badge-info"},unprocessed:{class:"badge-warning"},suppressed:{class:"badge-dark"}}}},{name:"Started",prop:"startsAt",cellTransformation:Ja.e.timeAgo,flexGrow:1},{name:"URL",prop:"generatorURL",flexGrow:1,sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(nm),e.Y36(Sl.F),e.Y36(rg))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-active-alert-list"]],viewQuery:function(t,o){if(1&t&&e.Gf(pe,7),2&t){let c;e.iGM(c=e.CRH())&&(o.externalLinkTpl=c.first)}},features:[e._Bn([{provide:Sl.F,useValue:new Sl.F("silences")}]),e.qOj],decls:5,vars:2,consts:function(){let s;return s="To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],["identifier","fingerprint","selectionType","single",3,"data","columns","forceIdentifier","customCss","hasDetails","setExpandedRow","updateSelection",4,"ngIf"],["externalLinkTpl",""],["type","info"],s,["section","prometheus"],["identifier","fingerprint","selectionType","single",3,"data","columns","forceIdentifier","customCss","hasDetails","setExpandedRow","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload",4,"ngIf"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload"],["target","_blank",3,"href"],[3,"ngClass"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,Ke,3,0,"cd-alert-panel",0),e.YNc(2,pn,3,9,"cd-table",1),e.YNc(3,Cr,3,4,"ng-template",null,2,e.W1O)),2&t&&(e.xp6(1),e.Q6J("ngIf",!o.isAlertmanagerConfigured),e.xp6(1),e.Q6J("ngIf",o.isAlertmanagerConfigured))},directives:[H,_.O5,Jt.G,ol.K,Hs.a,Xs.K,Vr.b,_.mk],styles:[""]}),n})();var io=i(94088);function vo(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,3),e._UZ(2,"cd-doc",4),e.N_p(),e.qZA())}function hs(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",7),2&n){const t=e.oxw(2);e.Q6J("data",t.expandedRow)("renderObjects",!0)("hideKeys",t.hideKeys)}}function aa(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",5),e.NdJ("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e.YNc(1,hs,1,3,"cd-table-key-value",6),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.prometheusAlertService.rules)("columns",t.columns)("selectionType","single")("hasDetails",!0),e.xp6(1),e.Q6J("ngIf",t.expandedRow)}}let Ba=(()=>{class n extends xv{constructor(t,o){super(o),this.prometheusAlertService=t,this.selection=new hl.r,this.hideKeys=["alerts","type"]}ngOnInit(){super.ngOnInit(),this.columns=[{prop:"name",name:"Name",cellClass:"font-weight-bold",flexGrow:2},{prop:"labels.severity",name:"Severity",flexGrow:1,cellTransformation:Ja.e.badge,customTemplateConfig:{map:{critical:{class:"badge-danger"},warning:{class:"badge-warning"}}}},{prop:"group",name:"Group",flexGrow:1,cellTransformation:Ja.e.badge},{prop:"duration",name:"Duration",pipe:new io.u,flexGrow:1},{prop:"query",name:"Query",isHidden:!0,flexGrow:1},{prop:"annotations.summary",name:"Summary",flexGrow:3}]}updateSelection(t){this.selection=t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(nm),e.Y36(rg))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-rules-list"]],features:[e.qOj],decls:3,vars:2,consts:function(){let s;return s="To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],[3,"data","columns","selectionType","hasDetails","setExpandedRow","updateSelection",4,"ngIf"],["type","info"],s,["section","prometheus"],[3,"data","columns","selectionType","hasDetails","setExpandedRow","updateSelection"],["cdTableDetail","",3,"data","renderObjects","hideKeys",4,"ngIf"],["cdTableDetail","",3,"data","renderObjects","hideKeys"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,vo,3,0,"cd-alert-panel",0),e.YNc(2,aa,2,5,"cd-table",1)),2&t&&(e.xp6(1),e.Q6J("ngIf",!o.isPrometheusConfigured),e.xp6(1),e.Q6J("ngIf",o.isPrometheusConfigured))},directives:[H,_.O5,Jt.G,ol.K,Hs.a,Vr.b],styles:[""]}),n})();var Nl=i(26504);let Ya=(()=>{class n{constructor(){this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(t,o){return this.multiMatch([t],o)}multiMatch(t,o){if(!t.some(c=>c.isRegex))return t.forEach(c=>{o=this.getMatchedRules(c,o)}),this.describeMatch(o)}getMatchedRules(t,o){const c=this.getAttributePath(t.name);return o.filter(g=>Ar().get(g,c)===t.value)}describeMatch(t){let o=0;return t.forEach(c=>o+=c.alerts.length),{status:this.getMatchText(t.length,o),cssClass:o?"has-success":"has-warning"}}getAttributePath(t){return this.valueAttributePath[t]}getMatchText(t,o){const c={noRule:"Your matcher seems to match no currently defined rule or active alert.",noAlerts:"no active alerts",alert:"1 active alert",alerts:"" + o + " active alerts",rule:"Matches 1 rule",rules:"Matches " + t + " rules"};return t?"" + (t > 1 ? c.rules : c.rule) + " with " + (o ? o > 1 ? c.alerts : c.alert : c.noAlerts) + ".":c.noRule}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),lu=(()=>{class n{calculateDuration(t,o){const c=+t,g=+o,C=this.getDuration(Math.abs(c-g));return c>g?"-"+C:C}getDuration(t){const o=new Date(t),c=o.getUTCHours(),g=o.getUTCMinutes(),D=(P,j)=>P&&P+j;return[D(Math.floor(t/864e5),"d"),D(c,"h"),D(g,"m")].filter(P=>P).join(" ")}calculateDate(t,o,c){const g=+t;if(Ar().isNaN(g))return;const C=this.getDurationMs(o)*(c?-1:1);return new Date(g+C)}getDurationMs(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))}getNumbersFromString(t,o){const c=t.match(new RegExp(`[0-9 ]+${o}`,"i"));return c?parseInt(c[0],10):0}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function yu(n,s){if(1&n&&(e.TgZ(0,"option",27),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.hij(" ",t," ")}}function wp(n,s){1&n&&(e.TgZ(0,"span",28),e.SDv(1,29),e.qZA())}function ip(n,s){1&n&&(e.TgZ(0,"span",28),e.SDv(1,30),e.qZA())}function xp(n,s){if(1&n&&(e.TgZ(0,"div",31),e.TgZ(1,"span"),e._uU(2),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.Gre("cd-col-form-offset ",t.matcherMatch.cssClass,""),e.xp6(1),e.Gre("text-muted ",t.matcherMatch.cssClass,""),e.xp6(1),e.hij(" ",t.matcherMatch.status," ")}}let pd=(()=>{class n{constructor(t,o,c,g){this.formBuilder=t,this.silenceMatcher=o,this.activeModal=c,this.actionLabels=g,this.submitAction=new e.vpe,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.valueClick=new yp.xQ,this.valueFocus=new yp.xQ,this.search=C=>(0,Bd.T)(C.pipe(Gf(200),(0,Df.x)()),this.valueFocus,this.valueClick.pipe((0,tp.h)(()=>!this.typeahead.isPopupOpen()))).pipe((0,su.U)(D=>(""===D?this.possibleValues:this.possibleValues.filter(P=>P.toLowerCase().indexOf(D.toLowerCase())>-1)).slice(0,10))),this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[vn.kI.required]],value:[{value:"",disabled:!0},[vn.kI.required]],isRegex:new vn.NI(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(t=>{null!==t?(this.setPossibleValues(t),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(t=>{const o=this.form.value;o.value=t,this.matcherMatch=this.silenceMatcher.singleMatch(o,this.rules)})}setPossibleValues(t){this.possibleValues=Ar().sortedUniq(this.rules.map(o=>Ar().get(o,this.silenceMatcher.getAttributePath(t))).filter(o=>o))}getMode(){return this.editMode?this.actionLabels.EDIT:this.actionLabels.ADD}preFillControls(t){this.form.setValue(t)}onSubmit(){this.submitAction.emit(this.form.value),this.activeModal.close()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(id.O),e.Y36(Ya),e.Y36(lt.Kz),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-silence-matcher-modal"]],viewQuery:function(t,o){if(1&t&&e.Gf(lt.dR,7),2&t){let c;e.iGM(c=e.CRH())&&(o.typeahead=c.first)}},outputs:{submitAction:"submitAction"},decls:31,vars:11,consts:function(){let s,t,o,c,g,C,D,P;return s="{VAR_SELECT, select, true {Edit} other {Add}}",s=e.Zx4(s,{VAR_SELECT:"\ufffd0\ufffd"}),t="" + s + " Matcher",o="Name",c="-- Select an attribute to match against --",g="Value",C="Use regular expression",D="This field is required!",P="This field is required!",[[3,"modalRef"],[1,"modal-title"],t,[1,"modal-content"],["novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],[1,"form-group","row"],["for","name",1,"cd-col-form-label","required"],o,[1,"cd-col-form-input"],["id","name","formControlName","name","name","name",1,"form-control"],[3,"ngValue"],c,[3,"value",4,"ngFor","ngForOf"],["class","help-block",4,"ngIf"],["for","value",1,"cd-col-form-label","required"],g,["id","value","container","body","type","text","formControlName","value",1,"form-control",3,"ngbTypeahead","focus","click"],["id","match-state",3,"class",4,"ngIf"],[1,"cd-col-form-offset"],[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","isRegex","name","is-regex","id","is-regex",1,"custom-control-input"],["for","is-regex",1,"custom-control-label"],C,[1,"modal-footer"],[3,"form","submitText","submitActionEvent"],[3,"value"],[1,"help-block"],D,P,["id","match-state"]]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"span",1),e.SDv(2,2),e.qZA(),e.ynx(3,3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.TgZ(7,"div",7),e.TgZ(8,"label",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"div",10),e.TgZ(11,"select",11),e.TgZ(12,"option",12),e.SDv(13,13),e.qZA(),e.YNc(14,yu,2,2,"option",14),e.qZA(),e.YNc(15,wp,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(16,"div",7),e.TgZ(17,"label",16),e.SDv(18,17),e.qZA(),e.TgZ(19,"div",10),e.TgZ(20,"input",18),e.NdJ("focus",function(g){return o.valueFocus.next(g.target.value)})("click",function(g){return o.valueClick.next(g.target.value)}),e.qZA(),e.YNc(21,ip,2,0,"span",15),e.qZA(),e.YNc(22,xp,3,7,"div",19),e.qZA(),e.TgZ(23,"div",7),e.TgZ(24,"div",20),e.TgZ(25,"div",21),e._UZ(26,"input",22),e.TgZ(27,"label",23),e.SDv(28,24),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(29,"div",25),e.TgZ(30,"cd-form-button-panel",26),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.BQk(),e.qZA()),2&t){const c=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(2),e.pQV(o.editMode),e.QtT(2),e.xp6(2),e.Q6J("formGroup",o.form),e.xp6(8),e.Q6J("ngValue",null),e.xp6(2),e.Q6J("ngForOf",o.nameAttributes),e.xp6(1),e.Q6J("ngIf",o.form.showError("name",c,"required")),e.xp6(5),e.Q6J("ngbTypeahead",o.search),e.xp6(1),e.Q6J("ngIf",o.form.showError("value",c,"required")),e.xp6(1),e.Q6J("ngIf",o.form.getValue("value")&&!o.form.getValue("isRegex")&&o.matcherMatch),e.xp6(8),e.Q6J("form",o.form)("submitText",o.getMode())}},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,$a.P,ca.o,vn.EJ,Ha.b,vn.JJ,vn.u,vn.YN,vn.Kr,_.sg,_.O5,vn.Fj,lt.dR,vn.Wl,nl.p],styles:[""]}),n})();var Dp=i(52266);function gh(n,s){if(1&n&&(e.ynx(0),e._UZ(1,"input",53),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw(),c=o.index,g=o.matcher;e.xp6(1),e.hYB("id","matcher-",t.attribute,"-",c,""),e.Q6J("value",g[t.attribute])}}function gy(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",47),e.TgZ(2,"div",54),e._UZ(3,"input",55),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw().$implicit,o=e.oxw(),c=o.index,g=o.matcher;e.xp6(3),e.hYB("id","matcher-",t.attribute,"-",c,""),e.Q6J("checked",g[t.attribute])}}const eE=function(n){return[n]};function fR(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",51),e.TgZ(2,"span",52),e._UZ(3,"i",38),e.qZA(),e.qZA(),e.YNc(4,gh,2,3,"ng-container",7),e.YNc(5,gy,4,3,"ng-container",7),e.BQk()),2&n){const t=s.$implicit;e.xp6(2),e.Q6J("ngbTooltip",t.tooltip),e.xp6(1),e.Q6J("ngClass",e.VKq(4,eE,t.icon)),e.xp6(1),e.Q6J("ngIf","isRegex"!==t.attribute),e.xp6(1),e.Q6J("ngIf","isRegex"===t.attribute)}}function pR(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",46),e.YNc(1,fR,6,6,"ng-container",34),e.TgZ(2,"span",47),e.TgZ(3,"button",48),e.NdJ("click",function(){const g=e.CHM(t).index;return e.oxw().showMatcherModal(g)}),e._UZ(4,"i",38),e.qZA(),e.TgZ(5,"button",49),e.NdJ("click",function(){const g=e.CHM(t).index;return e.oxw().deleteMatcher(g)}),e._UZ(6,"i",38),e.qZA(),e.qZA(),e.qZA(),e._UZ(7,"span",50)}if(2&n){const t=s.index,o=e.oxw();e.xp6(1),e.Q6J("ngForOf",o.matcherConfig),e.xp6(2),e.MGl("id","matcher-edit-",t,""),e.xp6(1),e.Q6J("ngClass",e.VKq(5,eE,o.icons.edit)),e.xp6(1),e.MGl("id","matcher-delete-",t,""),e.xp6(1),e.Q6J("ngClass",e.VKq(7,eE,o.icons.trash))}}function BA(n,s){1&n&&(e.TgZ(0,"cd-helper"),e.SDv(1,56),e.qZA())}function RS(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,58),e.qZA())}function hR(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,59),e.qZA())}function YA(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,60),e.qZA())}function Dv(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,61),e.qZA())}function ZA(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,62),e.qZA())}const NS=function(n,s){return{"text-warning":n,"text-danger":s}};function jA(n,s){if(1&n&&(e.TgZ(0,"h5",38),e.TgZ(1,"strong"),e.SDv(2,63),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(4);e.Q6J("ngClass",e.WLB(1,NS,!t.submitted,t.submitted))}}function PS(n,s){1&n&&e.GkF(0)}const my=function(n,s){return{index:n,matcher:s}};function GA(n,s){if(1&n&&(e.TgZ(0,"span"),e.YNc(1,PS,1,0,"ng-container",64),e.qZA()),2&n){const t=s.$implicit,o=s.index;e.oxw();const c=e.MAs(1);e.xp6(1),e.Q6J("ngTemplateOutlet",c)("ngTemplateOutletContext",e.WLB(2,my,o,t))}}function IS(n,s){if(1&n&&(e.TgZ(0,"div",65),e.TgZ(1,"span"),e._uU(2),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.Gre("cd-col-form-offset ",t.matcherMatch.cssClass,""),e.xp6(1),e.Gre("text-muted ",t.matcherMatch.cssClass,""),e.xp6(1),e.hij(" ",t.matcherMatch.status," ")}}function VA(n,s){if(1&n&&e._UZ(0,"cd-date-time-picker",66),2&n){const t=e.oxw();e.Q6J("control",t.form.get("startsAt"))("hasSeconds",!1)}}function zA(n,s){if(1&n&&e._UZ(0,"cd-date-time-picker",66),2&n){const t=e.oxw();e.Q6J("control",t.form.get("endsAt"))("hasSeconds",!1)}}const WA=function(n){return{"btn-warning":n}};let vy=(()=>{class n{constructor(t,o,c,g,C,D,P,j,W,re,ie){this.router=t,this.authStorageService=o,this.formBuilder=c,this.prometheusService=g,this.notificationService=C,this.route=D,this.timeDiff=P,this.modalService=j,this.silenceMatcher=W,this.actionLabels=re,this.succeededLabels=ie,this.icons=No.P,this.recreate=!1,this.edit=!1,this.resource="silence",this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:"Attribute name",icon:this.icons.paragraph,attribute:"name"},{tooltip:"Value",icon:this.icons.terminal,attribute:"value"},{tooltip:"Regular expression",icon:this.icons.magic,attribute:"isRegex"}],this.datetimeFormat="YYYY-MM-DD HH:mm",this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silences/edit"),this.recreate=this.router.url.startsWith("/monitoring/silences/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){if(this.permission=this.authStorageService.getPermissions().prometheus,!this.permission.read||!(this.edit?this.permission.update:this.permission.create))throw new Nl._2}createForm(){const t=ds.h.custom("format",o=>!(""===o||oi()(o,this.datetimeFormat).isValid()));this.form=this.formBuilder.group({startsAt:["",[vn.kI.required,t]],duration:["2h",[vn.kI.min(1)]],endsAt:["",[vn.kI.required,t]],createdBy:[this.authStorageService.getUsername(),[vn.kI.required]],comment:[null,[vn.kI.required]]},{validators:ds.h.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const t=oi()().format(this.datetimeFormat);this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()}updateDate(t){const o=oi()(this.form.getValue(t?"endsAt":"startsAt"),this.datetimeFormat).toDate(),c=this.timeDiff.calculateDate(o,this.form.getValue("duration"),t);if(c){const g=oi()(c).format(this.datetimeFormat);this.form.silentSet(t?"startsAt":"endsAt",g)}}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(t){const o=oi()(this.form.getValue("startsAt"),this.datetimeFormat),c=oi()(this.form.getValue("endsAt"),this.datetimeFormat);o.isBefore(c)?this.updateDuration():this.updateDate(t)}updateDuration(){const t=oi()(this.form.getValue("startsAt"),this.datetimeFormat).toDate(),o=oi()(this.form.getValue("endsAt"),this.datetimeFormat).toDate();this.form.silentSet("duration",this.timeDiff.calculateDuration(t,o))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(t=>{this.rules=t.groups.reduce((o,c)=>Ar().concat(o,c.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(_a.k.info,"Please add your Prometheus host to the dashboard configuration and refresh the page",void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(t=>{!t.id||(this.edit||this.recreate?this.prometheusService.getSilences().subscribe(o=>{const c=Ar().find(o,["id",t.id]);Ar().isUndefined(c)||this.fillFormWithSilence(c)}):this.prometheusService.getAlerts().subscribe(o=>{const c=Ar().find(o,["fingerprint",t.id]);Ar().isUndefined(c)||this.fillFormByAlert(c)}))})}fillFormWithSilence(t){this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(o=>this.form.silentSet(o,oi()(t[o]).format(this.datetimeFormat))),this.updateDuration()),["createdBy","comment"].forEach(o=>this.form.silentSet(o,t[o])),this.matchers=t.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(t){const o=t.labels;Object.keys(o).forEach(c=>this.setMatcher({name:c,value:o[c],isRegex:!1}))}setMatcher(t,o){Ar().isNumber(o)?this.matchers[o]=t:this.matchers.push(t),this.validateMatchers()}showMatcherModal(t){const c=this.modalService.show(pd).componentInstance;c.rules=this.rules,Ar().isNumber(t)&&(c.editMode=!0,c.preFillControls(this.matchers[t])),c.submitAction.subscribe(g=>{this.setMatcher(g,t)})}deleteMatcher(t){this.matchers.splice(t,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(t=>{this.router.navigate(["/monitoring/silences"]),this.notificationService.show(_a.k.success,this.getNotificationTile(t.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const t=this.form.value;return delete t.duration,t.startsAt=oi()(t.startsAt,this.datetimeFormat).toISOString(),t.endsAt=oi()(t.endsAt,this.datetimeFormat).toISOString(),t.matchers=this.matchers,this.edit&&(t.id=this.id),t}getNotificationTile(t){let o;return o=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${o} ${this.resource} ${t}`}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(_t.j),e.Y36(id.O),e.Y36(rg),e.Y36(ll.g),e.Y36(Yo.gz),e.Y36(lu),e.Y36(Ul.Z),e.Y36(Ya),e.Y36(ki.p4),e.Y36(ki.aX))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-prometheus-form"]],decls:71,vars:30,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Creator",o="Comment",c="Start time",g="If the start time lies in the past the creation time will be used",C="Duration",D="End time",P="Matchers",j="Add matcher",W="Edit",re="Delete",ie="Editing a silence will expire the old silence and recreate it as a new silence",ge="This field is required!",_e="This field is required!",Le="This field is required!",Re="This field is required!",ke="This field is required!",xe="A silence requires at least one matcher",[["matcherTpl",""],[1,"cd-col-form"],["name","form","novalidate","",1,"form",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],s,[4,"ngIf"],[1,"card-body"],[1,"form-group","row"],["for","created-by",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["formControlName","createdBy","id","created-by","name","created-by","type","text",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","comment",1,"cd-col-form-label","required"],o,["formControlName","comment","id","comment","name","comment","type","text",1,"form-control"],["for","starts-at",1,"cd-col-form-label"],[1,"required"],c,g,["formControlName","startsAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["ps","ngbPopover"],["for","duration",1,"cd-col-form-label","required"],C,["formControlName","duration","id","duration","name","duration","type","text",1,"form-control"],["for","ends-at",1,"cd-col-form-label","required"],D,["formControlName","endsAt","triggers","manual",1,"form-control",3,"ngbPopover","click","keypress"],["pe","ngbPopover"],P,[1,"cd-col-form-offset"],[3,"ngClass",4,"ngIf"],[4,"ngFor","ngForOf"],[1,"row"],[1,"col-12"],["type","button","id","add-matcher",1,"btn","btn-light","float-right","my-3",3,"ngClass","click"],[3,"ngClass"],j,["id","match-state",3,"class",4,"ngIf"],[1,"card-footer"],[1,"text-right"],[3,"form","submitText","submitActionEvent"],["popStart",""],["popEnd",""],[1,"input-group","my-2"],[1,"input-group-append"],["type","button","ngbTooltip",W,1,"btn","btn-light",3,"id","click"],["type","button","ngbTooltip",re,1,"btn","btn-light",3,"id","click"],[1,"help-block"],[1,"input-group-prepend"],[1,"input-group-text",3,"ngbTooltip"],["type","text","disabled","","readonly","",1,"form-control",3,"id","value"],[1,"input-group-text"],["type","checkbox","disabled","","readonly","",3,"id","checked"],ie,[1,"invalid-feedback"],ge,_e,Le,Re,ke,xe,[4,"ngTemplateOutlet","ngTemplateOutletContext"],["id","match-state"],[3,"control","hasSeconds"]]},template:function(t,o){if(1&t){const c=e.EpF();e.YNc(0,pR,8,9,"ng-template",null,0,e.W1O),e.TgZ(2,"div",1),e.TgZ(3,"form",2,3),e.TgZ(5,"div",4),e.TgZ(6,"div",5),e.TgZ(7,"span"),e.SDv(8,6),e.ALo(9,"titlecase"),e.ALo(10,"upperFirst"),e.qZA(),e.YNc(11,BA,2,0,"cd-helper",7),e.qZA(),e.TgZ(12,"div",8),e.TgZ(13,"div",9),e.TgZ(14,"label",10),e.SDv(15,11),e.qZA(),e.TgZ(16,"div",12),e._UZ(17,"input",13),e.YNc(18,RS,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(19,"div",9),e.TgZ(20,"label",15),e.SDv(21,16),e.qZA(),e.TgZ(22,"div",12),e.TgZ(23,"textarea",17),e._uU(24,"            "),e.qZA(),e.YNc(25,hR,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(26,"div",9),e.TgZ(27,"label",18),e.TgZ(28,"span",19),e.SDv(29,20),e.qZA(),e.TgZ(30,"cd-helper"),e.SDv(31,21),e.qZA(),e.qZA(),e.TgZ(32,"div",12),e.TgZ(33,"input",22,23),e.NdJ("click",function(){return e.CHM(c),e.MAs(34).open()})("keypress",function(){return e.CHM(c),e.MAs(34).close()}),e.qZA(),e.YNc(35,YA,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(36,"div",9),e.TgZ(37,"label",24),e.SDv(38,25),e.qZA(),e.TgZ(39,"div",12),e._UZ(40,"input",26),e.YNc(41,Dv,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(42,"div",9),e.TgZ(43,"label",27),e.SDv(44,28),e.qZA(),e.TgZ(45,"div",12),e.TgZ(46,"input",29,30),e.NdJ("click",function(){return e.CHM(c),e.MAs(47).open()})("keypress",function(){return e.CHM(c),e.MAs(47).close()}),e.qZA(),e.YNc(48,ZA,2,0,"span",14),e.qZA(),e.qZA(),e.TgZ(49,"fieldset"),e.TgZ(50,"legend",19),e.SDv(51,31),e.qZA(),e.TgZ(52,"div",32),e.YNc(53,jA,3,4,"h5",33),e.YNc(54,GA,2,5,"span",34),e.TgZ(55,"div",35),e.TgZ(56,"div",36),e.TgZ(57,"button",37),e.NdJ("click",function(){return o.showMatcherModal()}),e._UZ(58,"i",38),e.ynx(59),e.SDv(60,39),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(61,IS,3,7,"div",40),e.qZA(),e.qZA(),e.TgZ(62,"div",41),e.TgZ(63,"div",42),e.TgZ(64,"cd-form-button-panel",43),e.NdJ("submitActionEvent",function(){return o.submit()}),e.ALo(65,"titlecase"),e.ALo(66,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(67,VA,1,2,"ng-template",null,44,e.W1O),e.YNc(69,zA,1,2,"ng-template",null,45,e.W1O)}if(2&t){const c=e.MAs(4),g=e.MAs(68),C=e.MAs(70);e.xp6(3),e.Q6J("formGroup",o.form),e.xp6(7),e.pQV(e.lcZ(9,18,o.action))(e.lcZ(10,20,o.resource)),e.QtT(8),e.xp6(1),e.Q6J("ngIf",o.edit),e.xp6(7),e.Q6J("ngIf",o.form.showError("createdBy",c,"required")),e.xp6(7),e.Q6J("ngIf",o.form.showError("comment",c,"required")),e.xp6(8),e.Q6J("ngbPopover",g),e.xp6(2),e.Q6J("ngIf",o.form.showError("startsAt",c,"required")),e.xp6(6),e.Q6J("ngIf",o.form.showError("duration",c,"required")),e.xp6(5),e.Q6J("ngbPopover",C),e.xp6(2),e.Q6J("ngIf",o.form.showError("endsAt",c,"required")),e.xp6(5),e.Q6J("ngIf",0===o.matchers.length),e.xp6(1),e.Q6J("ngForOf",o.matchers),e.xp6(3),e.Q6J("ngClass",e.VKq(26,WA,c.submitted&&0===o.matchers.length)),e.xp6(1),e.Q6J("ngClass",e.VKq(28,eE,o.icons.add)),e.xp6(3),e.Q6J("ngIf",o.matchers.length&&o.matcherMatch),e.xp6(3),e.Q6J("form",o.form)("submitText",e.lcZ(65,22,o.action)+" "+e.lcZ(66,24,o.resource))}},directives:[vn._Y,vn.JL,tl.V,vn.sg,_.O5,$a.P,ca.o,vn.Fj,Ha.b,vn.JJ,vn.u,E.S,lt.o8,_.sg,_.mk,nl.p,lt._L,_.tP,Dp.J],pipes:[_.rS,K.m],styles:["textarea[_ngcontent-%COMP%]{resize:vertical}"]}),n})();var JA=i(84051),yy=i(18891);function QA(n,s){1&n&&(e.TgZ(0,"cd-alert-panel",2),e.tHW(1,3),e._UZ(2,"cd-doc",4),e.N_p(),e.qZA())}function LS(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",8),2&n){const t=e.oxw(2);e.Q6J("renderObjects",!0)("hideEmpty",!0)("appendParentKey",!1)("data",t.expandedRow)("customCss",t.customCss)("autoReload",!1)}}function FS(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-table",5),e.NdJ("setExpandedRow",function(c){return e.CHM(t),e.oxw().setExpandedRow(c)})("fetchData",function(){return e.CHM(t),e.oxw().refresh()})("updateSelection",function(c){return e.CHM(t),e.oxw().updateSelection(c)}),e._UZ(1,"cd-table-actions",6),e.YNc(2,LS,1,6,"cd-table-key-value",7),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("data",t.silences)("columns",t.columns)("forceIdentifier",!0)("customCss",t.customCss)("sorts",t.sorts)("hasDetails",!0),e.xp6(1),e.Q6J("permission",t.permission)("selection",t.selection)("tableActions",t.tableActions),e.xp6(1),e.Q6J("ngIf",t.expandedRow)}}let _R=(()=>{class n extends xv{constructor(t,o,c,g,C,D,P,j){super(j),this.authStorageService=t,this.cdDatePipe=o,this.modalService=c,this.notificationService=g,this.urlBuilder=C,this.actionLabels=D,this.succeededLabels=P,this.silences=[],this.selection=new hl.r,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:JA.Sr.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const W=re=>re.first()&&re.first().status&&"expired"===re.first().status.state;this.tableActions=[{permission:"create",icon:No.P.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:re=>!re.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:re=>re.hasSingleSelection&&W(re),disable:re=>!re.hasSingleSelection||re.first().cdExecuting||re.first().cdExecuting&&W(re)||!W(re),icon:No.P.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),name:this.actionLabels.RECREATE},{permission:"update",icon:No.P.edit,canBePrimary:re=>re.hasSingleSelection&&!W(re),disable:re=>!re.hasSingleSelection||re.first().cdExecuting||re.first().cdExecuting&&!W(re)||W(re),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),name:this.actionLabels.EDIT},{permission:"delete",icon:No.P.trash,canBePrimary:re=>re.hasSingleSelection&&!W(re),disable:re=>!re.hasSingleSelection||re.first().cdExecuting||W(re),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:"ID",prop:"id",flexGrow:3},{name:"Created by",prop:"createdBy",flexGrow:2},{name:"Started",prop:"startsAt",pipe:this.cdDatePipe},{name:"Updated",prop:"updatedAt",pipe:this.cdDatePipe},{name:"Ends",prop:"endsAt",pipe:this.cdDatePipe},{name:"Status",prop:"status.state",cellTransformation:Ja.e.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(t=>{this.silences=t},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(t){this.selection=t}expireSilence(){const t=this.selection.first().id,o="Silence",c="Prometheus";this.modalRef=this.modalService.show(zl.M,{itemDescription:o,itemNames:[t],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new yy.y(g=>{this.prometheusService.expireSilence(t).subscribe(()=>{this.notificationService.show(_a.k.success,`${this.succeededLabels.EXPIRED} ${o} ${t}`,void 0,void 0,c)},C=>{C.application=c,g.error(C)},()=>{g.complete(),this.refresh()})})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Vl.N),e.Y36(Ul.Z),e.Y36(ll.g),e.Y36(Sl.F),e.Y36(ki.p4),e.Y36(ki.aX),e.Y36(rg))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-silences-list"]],features:[e._Bn([{provide:Sl.F,useValue:new Sl.F("monitoring/silences")}]),e.qOj],decls:3,vars:2,consts:function(){let s;return s="To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + ".",[["type","info",4,"ngIf"],["selectionType","single",3,"data","columns","forceIdentifier","customCss","sorts","hasDetails","setExpandedRow","fetchData","updateSelection",4,"ngIf"],["type","info"],s,["section","prometheus"],["selectionType","single",3,"data","columns","forceIdentifier","customCss","sorts","hasDetails","setExpandedRow","fetchData","updateSelection"],[1,"table-actions",3,"permission","selection","tableActions"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload",4,"ngIf"],["cdTableDetail","",3,"renderObjects","hideEmpty","appendParentKey","data","customCss","autoReload"]]},template:function(t,o){1&t&&(e._UZ(0,"cd-prometheus-tabs"),e.YNc(1,QA,3,0,"cd-alert-panel",0),e.YNc(2,FS,3,10,"cd-table",1)),2&t&&(e.xp6(1),e.Q6J("ngIf",!o.isAlertmanagerConfigured),e.xp6(1),e.Q6J("ngIf",o.isAlertmanagerConfigured))},directives:[H,_.O5,Jt.G,ol.K,Hs.a,Xs.K,Vr.b],styles:[""]}),n})(),nE=(()=>{class n{constructor(t){this.http=t,this.url="api/telemetry"}getReport(){return this.http.get(`${this.url}/report`)}enable(t=!0){const o={enable:t};return t&&(o.license_name="sharing-1-0"),this.http.put(`${this.url}`,o)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),rE=(()=>{class n{constructor(){this.visible=!1,this.update=new e.vpe}setVisibility(t){this.visible=t,this.update.emit(t)}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function gR(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div"),e._uU(1," The plugin is already "),e.TgZ(2,"b"),e._uU(3,"enabled"),e.qZA(),e._uU(4,". Click "),e.TgZ(5,"b"),e._uU(6,"Deactivate"),e.qZA(),e._uU(7," to disable it.\xa0 "),e.TgZ(8,"button",66),e.NdJ("click",function(){return e.CHM(t),e.oxw(3).disableModule("The Telemetry module has been disabled successfully.")}),e.SDv(9,67),e.qZA(),e.qZA()}}function k1(n,s){1&n&&(e.ynx(0),e.TgZ(1,"legend"),e.ynx(2),e.SDv(3,68),e.BQk(),e.TgZ(4,"cd-helper"),e.SDv(5,69),e.qZA(),e.qZA(),e.TgZ(6,"div",15),e.TgZ(7,"label",70),e.SDv(8,71),e.qZA(),e.TgZ(9,"div",24),e._UZ(10,"input",72),e.qZA(),e.qZA(),e.TgZ(11,"div",15),e.TgZ(12,"label",73),e.SDv(13,74),e.qZA(),e.TgZ(14,"div",24),e._UZ(15,"input",75),e.qZA(),e.qZA(),e.TgZ(16,"div",15),e.TgZ(17,"label",76),e.SDv(18,77),e.qZA(),e.TgZ(19,"div",24),e._UZ(20,"input",78),e.qZA(),e.qZA(),e.BQk())}function XA(n,s){1&n&&(e.TgZ(0,"span",79),e.SDv(1,80),e.qZA())}function iE(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",4,5),e.TgZ(3,"div",6),e.TgZ(4,"div",7),e.SDv(5,8),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"p"),e.tHW(8,10),e._UZ(9,"br"),e._UZ(10,"a",11),e._UZ(11,"br"),e._UZ(12,"br"),e._UZ(13,"b"),e.N_p(),e.qZA(),e.YNc(14,gR,10,0,"div",12),e.TgZ(15,"legend"),e.SDv(16,13),e.qZA(),e.TgZ(17,"p"),e.SDv(18,14),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"label",16),e.ynx(21),e.SDv(22,17),e.BQk(),e.TgZ(23,"cd-helper"),e.ynx(24),e.SDv(25,18),e.BQk(),e.TgZ(26,"ul"),e.TgZ(27,"li"),e.SDv(28,19),e.qZA(),e.TgZ(29,"li"),e.SDv(30,20),e.qZA(),e.TgZ(31,"li"),e.SDv(32,21),e.qZA(),e.TgZ(33,"li"),e.SDv(34,22),e.qZA(),e.TgZ(35,"li"),e.SDv(36,23),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(37,"div",24),e.TgZ(38,"div",25),e._UZ(39,"input",26),e._UZ(40,"label",27),e.qZA(),e.qZA(),e.qZA(),e.TgZ(41,"div",15),e.TgZ(42,"label",28),e.ynx(43),e.SDv(44,29),e.BQk(),e.TgZ(45,"cd-helper"),e.ynx(46),e.SDv(47,30),e.BQk(),e.TgZ(48,"ul"),e.TgZ(49,"li"),e.SDv(50,31),e.qZA(),e.TgZ(51,"li"),e.SDv(52,32),e.qZA(),e.TgZ(53,"li"),e.SDv(54,33),e.qZA(),e.TgZ(55,"li"),e.SDv(56,34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(57,"div",24),e.TgZ(58,"div",25),e._UZ(59,"input",35),e._UZ(60,"label",36),e.qZA(),e.qZA(),e.qZA(),e.TgZ(61,"div",15),e.TgZ(62,"label",37),e.ynx(63),e.SDv(64,38),e.BQk(),e._UZ(65,"cd-helper",39),e.qZA(),e.TgZ(66,"div",24),e.TgZ(67,"div",25),e._UZ(68,"input",40),e._UZ(69,"label",41),e.qZA(),e.qZA(),e.qZA(),e.TgZ(70,"div",15),e.TgZ(71,"label",42),e.ynx(72),e.SDv(73,43),e.BQk(),e.TgZ(74,"cd-helper"),e.ynx(75),e.SDv(76,44),e.BQk(),e.TgZ(77,"ul"),e.TgZ(78,"li"),e._uU(79,"Cluster description"),e.qZA(),e.TgZ(80,"li"),e._uU(81,"Contact email address"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(82,"div",24),e.TgZ(83,"div",25),e.TgZ(84,"input",45),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).toggleIdent()}),e.qZA(),e._UZ(85,"label",46),e.qZA(),e.qZA(),e.qZA(),e.TgZ(86,"div",15),e.TgZ(87,"label",47),e.ynx(88),e.SDv(89,48),e.BQk(),e.TgZ(90,"cd-helper"),e.ynx(91),e.SDv(92,49),e.BQk(),e.qZA(),e.qZA(),e.TgZ(93,"div",24),e.TgZ(94,"div",25),e._UZ(95,"input",50),e._UZ(96,"label",51),e.qZA(),e.qZA(),e.qZA(),e.YNc(97,k1,21,0,"ng-container",12),e.TgZ(98,"legend"),e.SDv(99,52),e.qZA(),e.TgZ(100,"div",15),e.TgZ(101,"label",53),e.ynx(102),e.SDv(103,54),e.BQk(),e.TgZ(104,"cd-helper"),e.SDv(105,55),e.qZA(),e.qZA(),e.TgZ(106,"div",24),e._UZ(107,"input",56),e.YNc(108,XA,2,0,"span",57),e.qZA(),e.qZA(),e.TgZ(109,"div",15),e.TgZ(110,"label",58),e.ynx(111),e.SDv(112,59),e.BQk(),e.TgZ(113,"cd-helper"),e.TgZ(114,"p"),e.SDv(115,60),e.qZA(),e.TgZ(116,"p"),e.SDv(117,61),e.qZA(),e.qZA(),e.qZA(),e.TgZ(118,"div",24),e._UZ(119,"input",62),e.qZA(),e.qZA(),e._UZ(120,"br"),e.TgZ(121,"p"),e.tHW(122,63),e._UZ(123,"b"),e.N_p(),e.qZA(),e.qZA(),e.TgZ(124,"div",64),e.TgZ(125,"div",65),e.TgZ(126,"button",66),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).next()}),e.ynx(127),e._uU(128),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw(2);e.xp6(1),e.Q6J("formGroup",o.configForm),e.xp6(4),e.pQV(o.step),e.QtT(5),e.xp6(8),e.pQV(o.sendToUrl)(o.sendToDeviceUrl),e.QtT(8),e.xp6(1),e.Q6J("ngIf",o.moduleEnabled),e.xp6(83),e.Q6J("ngIf",o.showContactInfo),e.xp6(11),e.Q6J("ngIf",o.configForm.showError("interval",t,"min")),e.xp6(20),e.Oqu(o.actionLabels.NEXT)}}function oE(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"form",81,82),e.TgZ(3,"div",6),e.TgZ(4,"div",7),e.SDv(5,83),e.qZA(),e.TgZ(6,"div",9),e.TgZ(7,"div",15),e.TgZ(8,"label",84),e.tHW(9,85),e._UZ(10,"cd-helper",86),e.N_p(),e.qZA(),e.TgZ(11,"div",24),e._UZ(12,"input",87),e.qZA(),e.qZA(),e.TgZ(13,"div",15),e.TgZ(14,"label",88),e.tHW(15,89),e.TgZ(16,"cd-helper",90),e._UZ(17,"em"),e.qZA(),e.N_p(),e.qZA(),e.TgZ(18,"div",24),e._UZ(19,"textarea",91),e.qZA(),e.qZA(),e.TgZ(20,"div",15),e.TgZ(21,"div",92),e.TgZ(22,"div",93),e._UZ(23,"cd-download-button",94),e._UZ(24,"cd-copy-2-clipboard-button",95),e.qZA(),e.qZA(),e.qZA(),e.TgZ(25,"div",15),e.TgZ(26,"div",92),e.TgZ(27,"div",25),e._UZ(28,"input",96),e.TgZ(29,"label",97),e.tHW(30,98),e._UZ(31,"a",99),e.N_p(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(32,"div",64),e.TgZ(33,"div",65),e.TgZ(34,"cd-form-button-panel",100),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw(2).onSubmit()})("backActionEvent",function(){return e.CHM(t),e.oxw(2).back()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("formGroup",t.previewForm),e.xp6(4),e.pQV(t.step),e.QtT(5),e.xp6(18),e.Q6J("objectItem",t.report),e.xp6(11),e.Q6J("form",t.previewForm)("submitText",t.actionLabels.UPDATE)("cancelText",t.actionLabels.BACK)}}function KA(n,s){if(1&n&&(e.TgZ(0,"div",1),e.ynx(1,2),e.YNc(2,iE,129,8,"div",3),e.YNc(3,oE,35,6,"div",3),e.BQk(),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngSwitch",t.step),e.xp6(1),e.Q6J("ngSwitchCase",1),e.xp6(1),e.Q6J("ngSwitchCase",2)}}let sE=(()=>{class n extends Oa.E{constructor(t,o,c,g,C,D,P){super(),this.actionLabels=t,this.formBuilder=o,this.mgrModuleService=c,this.notificationService=g,this.router=C,this.telemetryService=D,this.telemetryNotificationService=P,this.licenseAgrmt=!1,this.options={},this.newConfig={},this.configResp={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","channel_perf","interval","proxy","contact","description","organization"],this.contactInfofields=["contact","description","organization"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){const t=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];(0,Oc.D)(t).subscribe(o=>{const c=o[1];this.moduleEnabled=c.enabled,this.sendToUrl=c.url,this.sendToDeviceUrl=c.device_url,this.showContactInfo=c.channel_ident,this.options=Ar().pick(o[0],this.requiredFields),this.configResp=Ar().pick(c,this.requiredFields),this.createConfigForm(),this.configForm.setValue(this.configResp),this.loadingReady()},o=>{this.loadingError()})}createConfigForm(){const t={};Ar().forEach(Object.values(this.options),o=>{t[o.name]=[o.default_value,this.getValidators(o)]}),this.configForm=this.formBuilder.group(t)}replacer(t,o){if(("ranges"===t||"values"===t)&&Array.isArray(o)){const c=[];for(let g=0;g<o.length;g++)c.push(JSON.stringify(o[g]));return c}return o}replacerTest(t){return JSON.stringify(t,this.replacer,2)}formatReport(){let t={};t=JSON.parse(JSON.stringify(this.report));const o=["perf_counters","stats_per_pool","stats_per_pg","io_rate","osd_perf_histograms","mempool","heap_stats","rocksdb_stats"];for(let c=0;c<o.length;c++){const g=o[c];g in t.report&&delete t.report[g]}return JSON.stringify(t,null,2)}formatReportTest(t){let o={};o=JSON.parse(JSON.stringify(t));const c=["perf_counters","stats_per_pool","stats_per_pg","io_rate","osd_perf_histograms","mempool","heap_stats","rocksdb_stats"];for(let g=0;g<c.length;g++){const C=c[g];C in o&&delete o[C]}return JSON.stringify(o,null,2)}createPreviewForm(){const t={report:this.formatReport(),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,vn.kI.requiredTrue]};this.previewForm=this.formBuilder.group(t)}getValidators(t){const o=[];switch(t.type){case"int":o.push(vn.kI.required);break;case"str":Ar().isNumber(t.min)&&o.push(vn.kI.minLength(t.min)),Ar().isNumber(t.max)&&o.push(vn.kI.maxLength(t.max))}return o}updateReportFromConfig(t={}){const o=this.report.report.channels_available,c=[];for(const g of o)t[`channel_${g}`]&&c.push(g);this.report.report.channels=c;for(const g of this.contactInfofields)this.report.report[g]=t[g]}getReport(){this.loadingStart(),this.telemetryService.getReport().subscribe(t=>{this.report=t,this.reportId=t.report.report_id,this.updateReportFromConfig(this.newConfig),this.createPreviewForm(),this.loadingReady(),this.step++},t=>{this.loadingError()})}toggleIdent(){this.showContactInfo=!this.showContactInfo}buildReport(){this.newConfig={};for(const t of Object.values(this.options)){const o=this.configForm.get(t.name);if(!o.valid)return void this.configForm.setErrors({cdSubmitButton:!0});this.newConfig[t.name]=o.value}if(!this.newConfig.channel_ident)for(const t of this.contactInfofields)this.newConfig[t]="";this.getReport()}disableModule(t=null,o=null){this.telemetryService.enable(!1).subscribe(()=>{this.telemetryNotificationService.setVisibility(!0),t&&this.notificationService.show(_a.k.success,t),o?o():this.router.navigate([""])})}next(){this.buildReport()}back(){this.step--}getChangedConfig(){const t={};return Ar().forEach(this.requiredFields,o=>{Ar().isEqual(this.configResp[o],this.newConfig[o])||(t[o]=this.newConfig[o])}),t}onSubmit(){const t=this.getChangedConfig(),o=[this.telemetryService.enable(),this.mgrModuleService.updateConfig("telemetry",t)];(0,Oc.D)(o).subscribe(()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(_a.k.success,"The Telemetry module has been configured and activated successfully.")},()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(_a.k.error,"An Error occurred while updating the Telemetry module configuration.             Please Try again"),this.previewForm.setErrors({cdSubmitButton:!0})},()=>{this.newConfig={},this.router.navigate([""])})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(id.O),e.Y36(Bc.N),e.Y36(ll.g),e.Y36(Yo.F0),e.Y36(nE),e.Y36(rE))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-telemetry"]],features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe,U,pt,ht,wt,It,dn,Lt,Dn,Mn,$r,ur,Pr,xr,fn,Nn,$n,Qn,Tn,Yr,ji,ii,Ui,Jr,An,hn,qr,Ri;return s="Step " + "\ufffd0\ufffd" + " of 2: Telemetry report configuration",t="The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing." + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + " This data is visualized on " + "\ufffd#10\ufffd" + "public dashboards" + "\ufffd/#10\ufffd" + " that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends." + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + "" + "[\ufffd#9\ufffd\ufffd/#9\ufffd|\ufffd#11\ufffd\ufffd/#11\ufffd|\ufffd#12\ufffd\ufffd/#12\ufffd]" + " The data being reported does " + "\ufffd#13\ufffd" + "not" + "\ufffd/#13\ufffd" + " contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to " + "\ufffd0\ufffd" + " and " + "\ufffd1\ufffd" + " (device report).",t=e.Zx4(t),o="Channels",c="The telemetry report is broken down into several \"channels\", each with a different type of information that can be configured below.",g="Basic",C="Includes basic information about the cluster:",D="Capacity of the cluster",P="Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons",j="Software version currently being used",W="Number and types of RADOS pools and CephFS file systems",re="Names of configuration options that have been changed from their default (but not their values)",ie="Crash",ge="Includes information about daemon crashes:",_e="Type of daemon",Le="Version of the daemon",Re="Operating system (OS distribution, kernel version)",ke="Stack trace identifying where in the Ceph code the crash occurred",xe="Device",U="Includes information about device metrics like anonymized SMART metrics.",pt="Ident",ht="Includes user-provided identifying information about the cluster:",wt="Perf",It="Includes various performance metrics of a cluster.",dn="Advanced Settings",Lt="Interval",Dn="The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours.",Mn="Proxy",$r="If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080",ur="You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080",Pr="" + "\ufffd#123\ufffd" + "Note:" + "\ufffd/#123\ufffd" + " By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data.",xr="Deactivate",fn="Contact Information",Nn="Submitting any contact information is completely optional and disabled by default.",$n="Contact",Qn="Description",Tn="My first Ceph cluster",Yr="Organization",ji="Organization name",ii="The entered value is too low! It must be greater or equal to 8.",Ui="Step " + "\ufffd0\ufffd" + " of 2: Telemetry report preview",Jr="A randomized UUID to identify a particular cluster over the course of several telemetry reports.",An="Report ID " + "\ufffd#10\ufffd" + "" + "\ufffd/#10\ufffd" + "",hn="The actual telemetry data that will be submitted.",qr="Report preview " + "\ufffd#16\ufffd" + "" + "\ufffd#17\ufffd" + "Note: Please select 'Download' to view the full report, including metrics from the perf channel." + "\ufffd/#17\ufffd" + "" + "\ufffd/#16\ufffd" + "",Ri="I agree to my telemetry data being submitted under the " + "\ufffd#31\ufffd" + "Community Data License Agreement - Sharing - Version 1.0" + "\ufffd/#31\ufffd" + "",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],[3,"ngSwitch"],[4,"ngSwitchCase"],["name","form","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],t,["href","https://telemetry-public.ceph.com/"],[4,"ngIf"],o,c,[1,"form-group","row"],["for","channel_basic",1,"cd-col-form-label"],g,C,D,P,j,W,re,[1,"cd-col-form-input"],[1,"custom-control","custom-checkbox"],["type","checkbox","id","channel_basic","formControlName","channel_basic",1,"custom-control-input"],["for","channel_basic",1,"custom-control-label"],["for","channel_crash",1,"cd-col-form-label"],ie,ge,_e,Le,Re,ke,["type","checkbox","id","channel_crash","formControlName","channel_crash",1,"custom-control-input"],["for","channel_crash",1,"custom-control-label"],["for","channel_device",1,"cd-col-form-label"],xe,["html",U],["type","checkbox","id","channel_device","formControlName","channel_device",1,"custom-control-input"],["for","channel_device",1,"custom-control-label"],["for","channel_ident",1,"cd-col-form-label"],pt,ht,["type","checkbox","id","channel_ident","formControlName","channel_ident",1,"custom-control-input",3,"click"],["for","channel_ident",1,"custom-control-label"],["for","channel_perf",1,"cd-col-form-label"],wt,It,["type","checkbox","id","channel_perf","formControlName","channel_perf",1,"custom-control-input"],["for","channel_perf",1,"custom-control-label"],dn,["for","interval",1,"cd-col-form-label"],Lt,Dn,["id","interval","type","number","formControlName","interval","min","8",1,"form-control"],["class","invalid-feedback",4,"ngIf"],["for","proxy",1,"cd-col-form-label"],Mn,$r,ur,["id","proxy","type","text","formControlName","proxy","placeholder","https://10.0.0.1:8080",1,"form-control"],Pr,[1,"card-footer"],[1,"button-group","text-right"],["type","button",1,"btn","btn-light",3,"click"],xr,fn,Nn,["for","contact",1,"cd-col-form-label"],$n,["id","contact","type","text","formControlName","contact","placeholder","Example User <user@example.com>",1,"form-control"],["for","description",1,"cd-col-form-label"],Qn,["id","description","type","text","formControlName","description","placeholder",Tn,1,"form-control"],["for","organization",1,"cd-col-form-label"],Yr,["id","organization","type","text","formControlName","organization","placeholder",ji,1,"form-control"],[1,"invalid-feedback"],ii,["name","previewForm","novalidate","",3,"formGroup"],["frm","ngForm"],Ui,["for","reportId",1,"cd-col-form-label"],An,["html",Jr],["type","text","id","reportId","formControlName","reportId","readonly","",1,"form-control"],["for","report",1,"cd-col-form-label"],qr,["html",hn],["id","report","formControlName","report","rows","15","readonly","",1,"form-control"],[1,"cd-col-form-offset"],["role","group",1,"btn-group"],["fileName","telemetry_report",3,"objectItem"],["source","report"],["type","checkbox","id","licenseAgrmt","name","licenseAgrmt","formControlName","licenseAgrmt",1,"custom-control-input"],["for","licenseAgrmt",1,"custom-control-label"],Ri,["href","https://cdla.io/sharing-1-0/"],[3,"form","submitText","cancelText","submitActionEvent","backActionEvent"]]},template:function(t,o){1&t&&e.YNc(0,KA,4,3,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[wl.y,_.RF,_.n9,vn._Y,vn.JL,tl.V,vn.sg,_.O5,$a.P,E.S,ca.o,vn.Wl,Ha.b,vn.JJ,vn.u,vn.wV,vn.qQ,vn.Fj,Im,Uc.s,nl.p],styles:[""]}),n})();var aE=i(26561);function mR(n){const{subscriber:s,counter:t,period:o}=n;s.next(t),this.schedule({subscriber:s,counter:t+1,period:o},o)}let $S=(()=>{class n{constructor(t){this.ngZone=t,this.intervalDataSource=new Nd.X(null),this.intervalData$=this.intervalDataSource.asObservable();const o=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(o)}setRefreshInterval(t){this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(n=0,s=bf.P){return(!(0,aE.k)(n)||n<0)&&(n=0),(!s||"function"!=typeof s.schedule)&&(s=bf.P),new yy.y(t=>(t.add(s.schedule(mR,n,{subscriber:t,counter:0,period:n})),t))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(e.R0b))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function lE(n,s){if(1&n&&(e.TgZ(0,"option",8),e._uU(1),e.qZA()),2&n){const t=s.$implicit,o=e.oxw();e.Q6J("value",o.intervalList[t]),e.xp6(1),e.Oqu(t)}}let uE=(()=>{class n{constructor(t){this.refreshIntervalService=t,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(t){this.refreshIntervalService.setRefreshInterval(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36($S))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-refresh-selector"]],decls:8,vars:2,consts:function(){let s;return s="Refresh",[[1,"container-fluid"],[1,"row"],[1,"col","d-flex","justify-content-end"],[1,"form-inline"],["for","refreshInterval",1,"col-form-label","my-0","mx-2"],s,["id","refreshInterval","name","refreshInterval",1,"form-control",3,"ngModel","change","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"div",2),e.TgZ(3,"form",3),e.TgZ(4,"label",4),e.SDv(5,5),e.qZA(),e.TgZ(6,"select",6),e.NdJ("change",function(g){return o.changeRefreshInterval(g.target.value)})("ngModelChange",function(g){return o.selectedInterval=g}),e.YNc(7,lE,2,2,"option",7),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(6),e.Q6J("ngModel",o.selectedInterval),e.xp6(1),e.Q6J("ngForOf",o.intervalKeys))},directives:[vn._Y,vn.JL,vn.F,ca.o,vn.EJ,Ha.b,vn.JJ,vn.On,_.sg,vn.YN,vn.Kr],styles:[""]}),n})();var HS=i(49671);let US=(()=>{class n{constructor(t){this.http=t}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var $1=i(89154),Rv=i(99475);function cE(n,s){if(1&n&&(e.TgZ(0,"div",6),e.tHW(1,7),e.ALo(2,"lowercase"),e._UZ(3,"cd-doc",8),e.ALo(4,"lowercase"),e.N_p(),e.qZA()),2&n){const t=e.oxw();e.xp6(3),e.MGl("section","dashboard-landing-page-",e.lcZ(4,4,t.groupTitle),""),e.xp6(1),e.pQV(e.lcZ(2,2,t.groupTitle)),e.QtT(1)}}const dE=function(n,s){return[n,s]},BS=["*"];let qA=(()=>{class n{constructor(){this.icons=No.P}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-info-group"]],inputs:{groupTitle:"groupTitle"},ngContentSelectors:BS,decls:11,vars:6,consts:function(){let s,t;return s="here",t="For an overview of " + "\ufffd0\ufffd" + " widgets click " + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + "",[[1,"row"],["triggers","",1,"info-group-title",3,"ngbPopover"],["popInfo","ngbPopover"],["type","button",1,"popover-icon","btn","btn-link","p-0",3,"click"],[3,"ngClass"],["popInfoTemplate",""],[1,"text-center"],t,["docText",s,3,"section"]]},template:function(t,o){if(1&t){const c=e.EpF();e.F$t(),e.TgZ(0,"div",0),e.TgZ(1,"div",1,2),e.TgZ(3,"span"),e._uU(4),e.qZA(),e.TgZ(5,"button",3),e.NdJ("click",function(){return e.CHM(c),e.MAs(2).toggle()}),e._UZ(6,"i",4),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",0),e.Hsn(8),e.qZA(),e.YNc(9,cE,5,6,"ng-template",null,5,e.W1O)}if(2&t){const c=e.MAs(10);e.xp6(1),e.Q6J("ngbPopover",c),e.xp6(3),e.Oqu(o.groupTitle),e.xp6(2),e.Q6J("ngClass",e.WLB(3,dE,o.icons.infoCircle,o.icons.large))}},directives:[lt.o8,ca.o,_.mk,ol.K],pipes:[_.i8],styles:[".info-group-title[_ngcontent-%COMP%]{font-size:1.75rem;margin:0 0 .5vw .5vw}.popover-icon[_ngcontent-%COMP%]:focus{box-shadow:none}"]}),n})();function YS(n,s){if(1&n&&(e.TgZ(0,"a",6),e._uU(1),e.qZA()),2&n){const t=e.oxw();e.Q6J("routerLink",t.link),e.xp6(1),e.Oqu(t.cardTitle)}}function ZS(n,s){if(1&n&&e._uU(0),2&n){const t=e.oxw();e.hij(" ",t.cardTitle," ")}}const fE=["*"];let jS=(()=>{class n{constructor(){this.cardClass=""}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-info-card"]],inputs:{cardTitle:"cardTitle",link:"link",cardClass:"cardClass",contentClass:"contentClass"},ngContentSelectors:fE,decls:8,vars:4,consts:[[1,"card","shadow-sm",3,"ngClass"],[1,"card-body","d-flex","align-items-center","justify-content-center"],[1,"card-title","m-4"],[3,"routerLink",4,"ngIf","ngIfElse"],["noLinkTitle",""],[1,"card-text","text-center",3,"ngClass"],[3,"routerLink"]],template:function(t,o){if(1&t&&(e.F$t(),e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"h4",2),e.YNc(3,YS,2,2,"a",3),e.YNc(4,ZS,1,1,"ng-template",null,4,e.W1O),e.qZA(),e.TgZ(6,"div",5),e.Hsn(7),e.qZA(),e.qZA(),e.qZA()),2&t){const c=e.MAs(5);e.Q6J("ngClass",o.cardClass),e.xp6(3),e.Q6J("ngIf",o.link)("ngIfElse",c),e.xp6(3),e.Q6J("ngClass",o.contentClass)}},directives:[_.mk,_.O5,Yo.yS],styles:[".card[_ngcontent-%COMP%]{font-size:12px;border:.5px solid #dee2e6;border-radius:3px;height:100%}@media screen and (min-width: 320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px) / 1728))}}@media screen and (min-width: 2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{left:-.6rem;position:absolute;top:-.3rem}.no-center[_ngcontent-%COMP%]{left:unset;position:unset;top:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:bold}"]}),n})();var eO=i(6823);const GS=["chartCanvas"],VS=["chartTooltip"];let pE=(()=>{class n{constructor(t,o,c){this.dimlessBinary=t,this.dimless=o,this.cssHelper=c,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new e.vpe,this.chartConfig={chartType:"doughnut",dataset:[{label:null,borderWidth:0}],colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-green"),this.cssHelper.propertyValue("chart-color-yellow"),this.cssHelper.propertyValue("chart-color-orange"),this.cssHelper.propertyValue("chart-color-red"),this.cssHelper.propertyValue("chart-color-blue")]}],options:{cutoutPercentage:90,events:["click","mouseout","touchstart"],legend:{display:!0,position:"right",labels:{boxWidth:10,usePointStyle:!1}},plugins:{center_text:!0},tooltips:{enabled:!0,displayColors:!1,backgroundColor:this.cssHelper.propertyValue("chart-color-tooltip-background"),cornerRadius:0,bodyFontSize:14,bodyFontStyle:"600",position:"nearest",xPadding:12,yPadding:12,callbacks:{label:(g,C)=>{let D=C.labels[g.index];return D.includes("%")||(D=`${D} (${C.datasets[g.datasetIndex].data[g.index]}%)`),D}}},title:{display:!1}}},this.doughnutChartPlugins=[{id:"center_text",beforeDraw(g){const C=new Rv.P,D="Helvetica Neue, Helvetica, Arial, sans-serif";eO.defaults.global.defaultFontFamily=D;const P=g.ctx;if(!g.options.plugins.center_text||!g.data.datasets[0].label)return;P.save();const j=g.data.datasets[0].label.split("\n"),W=(g.chartArea.left+g.chartArea.right)/2,re=(g.chartArea.top+g.chartArea.bottom)/2;P.textAlign="center",P.textBaseline="middle",P.font=`24px ${D}`,P.fillStyle=C.propertyValue("chart-color-center-text"),P.fillText(j[0],W,re-10),j.length>1&&(P.font=`14px ${D}`,P.fillStyle=C.propertyValue("chart-color-center-text-description"),P.fillText(j[1],W,re+10)),P.restore()}}]}ngOnInit(){new ko.h(this.chartCanvasRef,this.chartTooltipRef,(g,C)=>C+g.caretX+"px",(g,C)=>C+g.caretY-g.height-10+"px").getBody=g=>this.getChartTooltipBody(g),Ar().merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.setChartSliceBorderWidth()}getChartTooltipBody(t){const o=t[0].split(": ");return this.showLabelAsTooltip?o[0]:(o[1]=this.isBytesData?this.dimlessBinary.transform(o[1]):this.dimless.transform(o[1]),o.join(": "))}setChartSliceBorderWidth(){let t=0;Ar().forEach(this.chartConfig.dataset[0].data,function(o){o>0&&(t+=1)}),this.chartConfig.dataset[0].borderWidth=t>1?1:0}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(yn.$),e.Y36(Or.n),e.Y36(Rv.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-health-pie"]],viewQuery:function(t,o){if(1&t&&(e.Gf(GS,7),e.Gf(VS,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.chartCanvasRef=c.first),e.iGM(c=e.CRH())&&(o.chartTooltipRef=c.first)}},inputs:{data:"data",config:"config",isBytesData:"isBytesData",tooltipFn:"tooltipFn",showLabelAsTooltip:"showLabelAsTooltip"},outputs:{prepareFn:"prepareFn"},features:[e.TTD],decls:6,vars:6,consts:[[1,"chart-container"],["baseChart","",1,"chart-canvas",3,"datasets","chartType","options","labels","colors","plugins"],["chartCanvas",""],[1,"chartjs-tooltip"],["chartTooltip",""]],template:function(t,o){1&t&&(e.TgZ(0,"div",0),e._UZ(1,"canvas",1,2),e.TgZ(3,"div",3,4),e._UZ(5,"table"),e.qZA(),e.qZA()),2&t&&(e.xp6(1),e.Q6J("datasets",o.chartConfig.dataset)("chartType",o.chartConfig.chartType)("options",o.chartConfig.options)("labels",o.chartConfig.labels)("colors",o.chartConfig.colors)("plugins",o.doughnutChartPlugins))},directives:[Ho.jh],styles:['.chart-container[_ngcontent-%COMP%]{cursor:pointer;margin:auto;overflow:visible;position:absolute}canvas[_ngcontent-%COMP%]{user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{background:rgba(0,0,0,.7);border-radius:3px;color:#fff;font-family:"Helvetica Neue","Helvetica","Arial",sans-serif!important;opacity:0;pointer-events:none;position:absolute;transform:translate(-50%);transition:all .1s ease}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]:after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]:after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]:after{border-color:#000 transparent transparent transparent;border-style:solid;border-width:5px;content:" ";left:50%;margin-left:-5px;position:absolute;top:100%}  .chartjs-tooltip-key{display:inline-block;height:10px;margin-right:10px;width:10px}.chart-container[_ngcontent-%COMP%]{height:100%;margin-left:auto;margin-right:auto;position:unset;width:100%}.chart-canvas[_ngcontent-%COMP%]{height:100%;margin-left:auto;margin-right:auto;max-height:100%;max-width:100%;position:unset;width:100%}']}),n})(),by=(()=>{class n{transform(t){if(!t)return"";let o=0,c=0,g=0,C=0;Ar().each(t.osds,W=>{W.in&&o++,W.up&&c++,W.state.includes("nearfull")&&g++,W.state.includes("full")&&C++});const D=[{content:`${t.osds.length} ${"total"}`,class:""}];D.push({content:"",class:"card-text-line-break"}),D.push({content:`${c} ${"up"}, ${o} ${"in"}`,class:""});const P=t.osds.length-c,j=t.osds.length-o;if(P>0||j>0){D.push({content:"",class:"card-text-line-break"});const W=P>0?`${P} ${"down"}`:"",ie=j>0?`${j} ${"out"}`:"";D.push({content:`${W}${P>0&&j>0?", ":""}${ie}`,class:"card-text-error"})}return g>0&&D.push({content:"",class:"card-text-line-break"},{content:`${g} ${"near full"}`,class:"card-text-error"},{content:"",class:"card-text-line-break"}),C>0&&D.push({content:`${C} ${"full"}`,class:"card-text-error"}),D}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"osdSummary",type:n,pure:!0}),n})(),hE=(()=>{class n{transform(t){if(!t)return"";let o="",c="",g=0,C=0,D=0;Ar().each(t.standbys,()=>{g+=1}),t.standbys&&!t.filesystems?(o=`${g} ${"up"}`,c="no filesystems"):0===t.filesystems.length?o="no filesystems":(Ar().each(t.filesystems,Le=>{Ar().each(Le.mdsmap.info,Re=>{"up:standby-replay"===Re.state?D+=1:C+=1})}),o=`${C} ${"active"}`,c=`${g+D} ${"standby"}`);const P=t.standbys.map(Le=>Le.name).join(", "),j=P?`${"standby daemons"}: ${P}`:"",W=t.filesystems?t.filesystems.length:0,ie=Object.values(W>0?t.filesystems[0].mdsmap.info:{}).map(Le=>Le.name).join(", ");let ge=ie?`${"active daemon"}: ${ie}`:"";!C&&W>0&&(ge=`${D} ${"standbyReplay"}`);const _e=[{content:o,class:"popover-info",titleText:ge}];return c&&(_e.push({content:"",class:"card-text-line-break",titleText:""}),_e.push({content:c,class:"popover-info",titleText:j})),_e}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"mdsSummary",type:n,pure:!0}),n})();var rm=(()=>{return(n=rm||(rm={})).HEALTH_ERR="health-color-error",n.HEALTH_WARN="health-color-warning",n.HEALTH_OK="health-color-healthy",rm;var n})();let _E=(()=>{class n{constructor(t){this.cssHelper=t}transform(t){return Object.keys(rm).includes(t)?{color:this.cssHelper.propertyValue(rm[t])}:null}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Rv.P,16))},n.\u0275pipe=e.Yjl({name:"healthColor",type:n,pure:!0}),n})(),zS=(()=>{class n{transform(t){return t?"" + t.monmap.mons.length.toString() + " (quorum " + t.quorum.join(", ") + ")":""}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"monSummary",type:n,pure:!0}),n})(),WS=(()=>{class n{transform(t){if(!t)return"";let o="n/a";const c=Ar().isUndefined(t.active_name)?"":`${"active daemon"}: ${t.active_name}`;c.length>0&&(o="1");const g=t.standbys.map(j=>j.name).join(", "),C=g?`${"standby daemons"}: ${g}`:"",D=t.standbys.length,P=[{content:`${o} ${"active"}`,class:"popover-info",titleText:c}];return P.push({content:"",class:"card-text-line-break",titleText:""}),P.push({content:`${D} ${"standby"}`,class:"popover-info",titleText:C}),P}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275pipe=e.Yjl({name:"mgrSummary",type:n,pure:!0}),n})();function JS(n,s){1&n&&e.GkF(0)}function QS(n,s){if(1&n&&(e.TgZ(0,"li"),e.TgZ(1,"span",22),e.ALo(2,"healthColor"),e._uU(3),e.qZA(),e._uU(4),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.Q6J("ngStyle",e.lcZ(2,3,t.severity)),e.xp6(2),e.Oqu(t.type),e.xp6(1),e.hij(": ",t.summary.message," ")}}function XS(n,s){if(1&n&&(e.YNc(0,JS,1,0,"ng-container",20),e.TgZ(1,"ul"),e.YNc(2,QS,5,5,"li",21),e.qZA()),2&n){e.oxw(4);const t=e.MAs(5),o=e.oxw();e.Q6J("ngTemplateOutlet",t),e.xp6(2),e.Q6J("ngForOf",o.healthData.health.checks)}}function vR(n,s){1&n&&e._UZ(0,"i",23)}function tO(n,s){if(1&n&&(e.ynx(0),e.YNc(1,XS,3,2,"ng-template",null,17,e.W1O),e.TgZ(3,"div",18),e.ALo(4,"healthColor"),e._uU(5),e.YNc(6,vR,1,0,"i",19),e.qZA(),e.BQk()),2&n){const t=e.MAs(2),o=e.oxw(4);e.xp6(3),e.Q6J("ngStyle",e.lcZ(4,4,o.healthData.health.status))("ngbPopover",t),e.xp6(2),e.hij(" ",o.healthData.health.status," "),e.xp6(1),e.Q6J("ngIf","HEALTH_OK"!=(null==o.healthData.health?null:o.healthData.health.status))}}function nO(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",22),e.ALo(2,"healthColor"),e._uU(3),e.qZA(),e.BQk()),2&n){const t=e.oxw(4);e.xp6(1),e.Q6J("ngStyle",e.lcZ(2,2,t.healthData.health.status)),e.xp6(2),e.hij(" ",t.healthData.health.status," ")}}function KS(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",15),e.YNc(1,tO,7,6,"ng-container",16),e.YNc(2,nO,4,4,"ng-container",16),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngIf",(null==t.healthData.health||null==t.healthData.health.checks?null:t.healthData.health.checks.length)>0),e.xp6(1),e.Q6J("ngIf",!(null!=t.healthData.health&&null!=t.healthData.health.checks&&t.healthData.health.checks.length))}}function rO(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",24),e._uU(1),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",t.healthData.hosts," total ")}}function Tf(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",25),e._uU(1),e.ALo(2,"monSummary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.healthData.mon_status)," ")}}function qS(n,s){if(1&n&&(e.TgZ(0,"span",28),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("ngClass",t.class),e.xp6(1),e.hij(" ",t.content," ")}}function iO(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",26),e.YNc(1,qS,2,2,"span",27),e.qZA()),2&n){const t=s.ngIf;e.xp6(1),e.Q6J("ngForOf",t)}}function oO(n,s){if(1&n&&(e.TgZ(0,"span",31),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("ngClass",t.class)("title",null!=t.titleText?t.titleText:""),e.xp6(1),e.hij(" ",t.content," ")}}function eC(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",29),e.YNc(1,oO,2,3,"span",30),e.ALo(2,"mgrSummary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("ngForOf",e.lcZ(2,1,t.healthData.mgr_map))}}function sO(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",32),e._uU(1),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",t.healthData.rgw," total ")}}function tC(n,s){if(1&n&&(e.TgZ(0,"span",31),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("ngClass",t.class)("title",null!=t.titleText?t.titleText:""),e.xp6(1),e.hij(" ",t.content," ")}}function nC(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",33),e.YNc(1,tC,2,3,"span",30),e.qZA()),2&n){const t=s.ngIf;e.Q6J("contentClass",(t.length>1?"text-area-size-2":"")+" content-highlight"),e.xp6(1),e.Q6J("ngForOf",t)}}const Nv=function(n){return{"card-text-error":n}};function aO(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",34),e._uU(1),e._UZ(2,"span",35),e._uU(3),e.TgZ(4,"span",28),e._uU(5),e.qZA(),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",t.healthData.iscsi_daemons.up+t.healthData.iscsi_daemons.down," total "),e.xp6(2),e.hij(" ",t.healthData.iscsi_daemons.up," up, "),e.xp6(1),e.Q6J("ngClass",e.VKq(4,Nv,t.healthData.iscsi_daemons.down>0)),e.xp6(1),e.hij("",t.healthData.iscsi_daemons.down," down")}}function lO(n,s){if(1&n&&(e.TgZ(0,"cd-info-group",6),e.YNc(1,KS,3,2,"cd-info-card",7),e.YNc(2,rO,2,1,"cd-info-card",8),e.YNc(3,Tf,3,3,"cd-info-card",9),e.YNc(4,iO,2,1,"cd-info-card",10),e.ALo(5,"osdSummary"),e.YNc(6,eC,3,3,"cd-info-card",11),e.YNc(7,sO,2,1,"cd-info-card",12),e.YNc(8,nC,2,2,"cd-info-card",13),e.ALo(9,"mdsSummary"),e.YNc(10,aO,6,6,"cd-info-card",14),e.qZA()),2&n){const t=e.oxw().ngIf,o=e.oxw();e.xp6(1),e.Q6J("ngIf",null==o.healthData.health?null:o.healthData.health.status),e.xp6(1),e.Q6J("ngIf",null!=o.healthData.hosts),e.xp6(1),e.Q6J("ngIf",o.healthData.mon_status),e.xp6(1),e.Q6J("ngIf",e.lcZ(5,8,o.healthData.osd_map)),e.xp6(2),e.Q6J("ngIf",o.healthData.mgr_map),e.xp6(1),e.Q6J("ngIf",t.rgw&&null!=o.healthData.rgw),e.xp6(1),e.Q6J("ngIf",e.lcZ(9,10,t.cephfs&&o.healthData.fs_map)),e.xp6(2),e.Q6J("ngIf",t.iscsi&&null!=o.healthData.iscsi_daemons)}}function rC(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-info-card",42),e.TgZ(1,"cd-health-pie",43),e.NdJ("prepareFn",function(c){return e.CHM(t),e.oxw(3).prepareRawUsage(c[0],c[1])}),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("data",t.healthData)("config",t.rawCapacityChartConfig)("isBytesData",!0)}}function uO(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-info-card",44),e.TgZ(1,"cd-health-pie",45),e.NdJ("prepareFn",function(c){return e.CHM(t),e.oxw(3).prepareObjects(c[0],c[1])}),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("data",t.healthData)}}function iC(n,s){1&n&&e.GkF(0)}function yR(n,s){if(1&n&&(e.TgZ(0,"li"),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.AsE(" ",t.key,": ",t.value," ")}}function gE(n,s){if(1&n&&(e.YNc(0,iC,1,0,"ng-container",20),e.TgZ(1,"ul"),e.YNc(2,yR,2,2,"li",21),e.ALo(3,"keyvalue"),e.qZA()),2&n){e.oxw(3);const t=e.MAs(5),o=e.oxw();e.Q6J("ngTemplateOutlet",t),e.xp6(2),e.Q6J("ngForOf",e.lcZ(3,2,o.healthData.pg_info.statuses))}}function mE(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-info-card",46),e.YNc(1,gE,4,4,"ng-template",null,47,e.W1O),e.TgZ(3,"div",48),e.TgZ(4,"div",49),e.TgZ(5,"cd-health-pie",50),e.NdJ("prepareFn",function(c){return e.CHM(t),e.oxw(3).preparePgStatus(c[0],c[1])}),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.oxw(3);e.xp6(4),e.Q6J("ngbPopover",t),e.xp6(1),e.Q6J("data",o.healthData)("config",o.pgStatusChartConfig)}}function ig(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",51),e._uU(1),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",t.healthData.pools.length," ")}}function cO(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",52),e._uU(1),e.ALo(2,"dimless"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.healthData.pg_info.pgs_per_osd)," ")}}function oC(n,s){if(1&n&&(e.TgZ(0,"cd-info-group",36),e.YNc(1,rC,2,3,"cd-info-card",37),e.YNc(2,uO,2,1,"cd-info-card",38),e.YNc(3,mE,6,3,"cd-info-card",39),e.YNc(4,ig,2,1,"cd-info-card",40),e.YNc(5,cO,3,3,"cd-info-card",41),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf",t.healthData.df),e.xp6(1),e.Q6J("ngIf",null!=(null==t.healthData.pg_info||null==t.healthData.pg_info.object_stats?null:t.healthData.pg_info.object_stats.num_objects)),e.xp6(1),e.Q6J("ngIf",t.healthData.pg_info),e.xp6(1),e.Q6J("ngIf",t.healthData.pools),e.xp6(1),e.Q6J("ngIf",t.healthData.pg_info)}}function og(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-info-card",58),e.TgZ(1,"cd-health-pie",50),e.NdJ("prepareFn",function(c){return e.CHM(t),e.oxw(3).prepareReadWriteRatio(c[0],c[1])}),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("data",t.healthData)("config",t.clientStatsConfig)}}function T_(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-info-card",59),e.TgZ(1,"cd-health-pie",50),e.NdJ("prepareFn",function(c){return e.CHM(t),e.oxw(3).prepareClientThroughput(c[0],c[1])}),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.Q6J("data",t.healthData)("config",t.clientStatsConfig)}}function S_(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",60),e._uU(1),e.ALo(2,"dimlessBinary"),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",e.lcZ(2,1,t.healthData.client_perf.recovering_bytes_per_sec)+"/s"," ")}}function sC(n,s){if(1&n&&(e.TgZ(0,"cd-info-card",61),e._uU(1),e.qZA()),2&n){const t=e.oxw(3);e.xp6(1),e.hij(" ",t.healthData.scrub_status," ")}}function aC(n,s){if(1&n&&(e.TgZ(0,"cd-info-group",53),e.YNc(1,og,2,2,"cd-info-card",54),e.YNc(2,T_,2,2,"cd-info-card",55),e.YNc(3,S_,3,3,"cd-info-card",56),e.YNc(4,sC,2,1,"cd-info-card",57),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.Q6J("ngIf",t.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",t.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",t.healthData.client_perf),e.xp6(1),e.Q6J("ngIf",t.healthData.scrub_status)}}const dO=function(n){return[n]};function fO(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"p",62),e.tHW(2,63),e._UZ(3,"i",28),e._UZ(4,"a",64),e.N_p(),e.qZA(),e.BQk()),2&n){const t=e.oxw(3);e.xp6(3),e.Q6J("ngClass",e.VKq(1,dO,t.icons.infoCircle))}}function pO(n,s){if(1&n&&e.YNc(0,fO,5,3,"ng-container",16),2&n){const t=e.oxw(2);e.Q6J("ngIf",t.permissions.log.read)}}function hO(n,s){if(1&n&&(e.TgZ(0,"div",1),e.YNc(1,lO,11,12,"cd-info-group",2),e.YNc(2,oC,6,5,"cd-info-group",3),e.YNc(3,aC,5,4,"cd-info-group",4),e.YNc(4,pO,1,1,"ng-template",null,5,e.W1O),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngIf",(null==t.healthData.health?null:t.healthData.health.status)||t.healthData.mon_status||t.healthData.osd_map||t.healthData.mgr_map||null!=t.healthData.hosts||null!=t.healthData.rgw||t.healthData.fs_map||null!=t.healthData.iscsi_daemons),e.xp6(1),e.Q6J("ngIf",t.healthData.pools||t.healthData.df||t.healthData.pg_info),e.xp6(1),e.Q6J("ngIf",t.healthData.client_perf||t.healthData.scrub_status)}}let vE=(()=>{class n{constructor(t,o,c,g,C,D,P,j,W){this.healthService=t,this.osdService=o,this.authStorageService=c,this.pgCategoryService=g,this.featureToggles=C,this.refreshIntervalService=D,this.dimlessBinary=P,this.dimless=j,this.cssHelper=W,this.osdSettings=new Sv,this.interval=new gu.w,this.icons=No.P,this.clientStatsConfig={colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-cyan"),this.cssHelper.propertyValue("chart-color-purple")]}]},this.rawCapacityChartConfig={colors:[{backgroundColor:[this.cssHelper.propertyValue("chart-color-blue"),this.cssHelper.propertyValue("chart-color-gray")]}]},this.pgStatusChartConfig={options:{events:[""]}},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()}),this.osdService.getOsdSettings().pipe((0,ye.q)(1)).subscribe(t=>{this.osdSettings=t})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(t=>{this.healthData=t})}prepareReadWriteRatio(t){const o=[],c=[],g=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;o.push(`${"Reads"}: ${this.dimless.transform(this.healthData.client_perf.read_op_per_sec)} ${"/s"}`),c.push(this.calcPercentage(this.healthData.client_perf.read_op_per_sec,g)),o.push(`${"Writes"}: ${this.dimless.transform(this.healthData.client_perf.write_op_per_sec)} ${"/s"}`),c.push(this.calcPercentage(this.healthData.client_perf.write_op_per_sec,g)),t.labels=o,t.dataset[0].data=c,t.dataset[0].label=`${this.dimless.transform(g)}\n${"IOPS"}`}prepareClientThroughput(t){const o=[],c=[],g=this.healthData.client_perf.read_bytes_sec+this.healthData.client_perf.write_bytes_sec;o.push(`${"Reads"}: ${this.dimlessBinary.transform(this.healthData.client_perf.read_bytes_sec)}${"/s"}`),c.push(this.calcPercentage(this.healthData.client_perf.read_bytes_sec,g)),o.push(`${"Writes"}: ${this.dimlessBinary.transform(this.healthData.client_perf.write_bytes_sec)}${"/s"}`),c.push(this.calcPercentage(this.healthData.client_perf.write_bytes_sec,g)),t.labels=o,t.dataset[0].data=c,t.dataset[0].label=`${this.dimlessBinary.transform(g).replace(" ","\n")}${"/s"}`}prepareRawUsage(t,o){const c=this.calcPercentage(o.df.stats.total_bytes-o.df.stats.total_used_raw_bytes,o.df.stats.total_bytes),g=this.calcPercentage(o.df.stats.total_used_raw_bytes,o.df.stats.total_bytes);this.color=g/100>=this.osdSettings.nearfull_ratio?"chart-color-red":g/100>=this.osdSettings.full_ratio?"chart-color-yellow":"chart-color-blue",this.rawCapacityChartConfig.colors[0].backgroundColor[0]=this.cssHelper.propertyValue(this.color),t.dataset[0].data=[g,c],t.labels=[`${"Used"}: ${this.dimlessBinary.transform(o.df.stats.total_used_raw_bytes)}`,`${"Avail."}: ${this.dimlessBinary.transform(o.df.stats.total_bytes-o.df.stats.total_used_raw_bytes)}`],t.dataset[0].label=`${g}%\nof ${this.dimlessBinary.transform(o.df.stats.total_bytes)}`}preparePgStatus(t,o){const c={};let g=0;Ar().forEach(o.pg_info.statuses,(C,D)=>{const P=this.pgCategoryService.getTypeByStates(D);Ar().isUndefined(c[P])&&(c[P]=0),c[P]+=C,g+=C});for(const C of this.pgCategoryService.getAllTypes())Ar().isUndefined(c[C])&&(c[C]=0);t.dataset[0].data=this.pgCategoryService.getAllTypes().map(C=>this.calcPercentage(c[C],g)),t.labels=[`${"Clean"}: ${this.dimless.transform(c.clean)}`,`${"Working"}: ${this.dimless.transform(c.working)}`,`${"Warning"}: ${this.dimless.transform(c.warning)}`,`${"Unknown"}: ${this.dimless.transform(c.unknown)}`],t.dataset[0].label=`${g}\n${"PGs"}`}prepareObjects(t,o){const c=o.pg_info.object_stats.num_object_copies,C=this.calcPercentage(c-o.pg_info.object_stats.num_objects_misplaced-o.pg_info.object_stats.num_objects_degraded-o.pg_info.object_stats.num_objects_unfound,c),D=this.calcPercentage(o.pg_info.object_stats.num_objects_misplaced,c),P=this.calcPercentage(o.pg_info.object_stats.num_objects_degraded,c),j=this.calcPercentage(o.pg_info.object_stats.num_objects_unfound,c);t.labels=[`${"Healthy"}: ${C}%`,`${"Misplaced"}: ${D}%`,`${"Degraded"}: ${P}%`,`${"Unfound"}: ${j}%`],t.dataset[0].data=[C,D,P,j],t.dataset[0].label=`${this.dimless.transform(o.pg_info.object_stats.num_objects)}\n${"objects"}`}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(t,o){return Ar().isNumber(t)&&Ar().isNumber(o)&&0!==o?Math.ceil(t/o*100*100)/100:0}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(US),e.Y36(Ji),e.Y36(_t.j),e.Y36(HS.j),e.Y36($1.l),e.Y36($S),e.Y36(yn.$),e.Y36(Or.n),e.Y36(Rv.P))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-health"]],decls:2,vars:3,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe,U,pt,ht;return s="Status",t="Capacity",o="Performance",c="Cluster Status",g="Hosts",C="Monitors",D="OSDs",P="Managers",j="Object Gateways",W="Metadata Servers",re="iSCSI Gateways",ie="Raw Capacity",ge="Objects",_e="PG Status",Le="Pools",Re="PGs per OSD",ke="Client Read/Write",xe="Client Throughput",U="Recovery Throughput",pt="Scrubbing",ht="" + "\ufffd#3\ufffd" + "" + "\ufffd/#3\ufffd" + " See " + "\ufffd#4\ufffd" + "Logs" + "\ufffd/#4\ufffd" + " for more details.",[["class","container-fluid",4,"ngIf"],[1,"container-fluid"],["groupTitle",s,4,"ngIf"],["groupTitle",t,4,"ngIf"],["groupTitle",o,4,"ngIf"],["logsLink",""],["groupTitle",s],["cardTitle",c,"class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",g,"link","/hosts","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",C,"link","/monitor","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",D,"link","/osd","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",P,"class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",j,"link","/rgw/daemon","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",W,"class","cd-status-card",3,"contentClass",4,"ngIf"],["cardTitle",re,"link","/block/iscsi","class","cd-status-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",c,"contentClass","content-highlight",1,"cd-status-card"],[4,"ngIf"],["healthChecks",""],["popoverClass","info-card-popover-cluster-status",1,"info-card-content-clickable",3,"ngStyle","ngbPopover"],["class","fa fa-exclamation-triangle",4,"ngIf"],[4,"ngTemplateOutlet"],[4,"ngFor","ngForOf"],[3,"ngStyle"],[1,"fa","fa-exclamation-triangle"],["cardTitle",g,"link","/hosts","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",C,"link","/monitor","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",D,"link","/osd","contentClass","content-highlight",1,"cd-status-card"],[3,"ngClass",4,"ngFor","ngForOf"],[3,"ngClass"],["cardTitle",P,"contentClass","content-highlight",1,"cd-status-card"],[3,"ngClass","title",4,"ngFor","ngForOf"],[3,"ngClass","title"],["cardTitle",j,"link","/rgw/daemon","contentClass","content-highlight",1,"cd-status-card"],["cardTitle",W,1,"cd-status-card",3,"contentClass"],["cardTitle",re,"link","/block/iscsi","contentClass","content-highlight",1,"cd-status-card"],[1,"card-text-line-break"],["groupTitle",t],["cardTitle",ie,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",ge,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",_e,"class","cd-capacity-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",Le,"link","/pool","class","cd-capacity-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",Re,"class","cd-capacity-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",ie,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],[3,"data","config","isBytesData","prepareFn"],["cardTitle",ge,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],[3,"data","prepareFn"],["cardTitle",_e,"contentClass","content-chart",1,"cd-capacity-card","cd-chart-card"],["pgStatus",""],[1,"pg-status-popover-wrapper"],[3,"ngbPopover"],[3,"data","config","prepareFn"],["cardTitle",Le,"link","/pool","contentClass","content-highlight",1,"cd-capacity-card"],["cardTitle",Re,"contentClass","content-highlight",1,"cd-capacity-card"],["groupTitle",o],["cardTitle",ke,"class","cd-performance-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",xe,"class","cd-performance-card cd-chart-card","contentClass","content-chart",4,"ngIf"],["cardTitle",U,"class","cd-performance-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",pt,"class","cd-performance-card","contentClass","content-highlight",4,"ngIf"],["cardTitle",ke,"contentClass","content-chart",1,"cd-performance-card","cd-chart-card"],["cardTitle",xe,"contentClass","content-chart",1,"cd-performance-card","cd-chart-card"],["cardTitle",U,"contentClass","content-highlight",1,"cd-performance-card"],["cardTitle",pt,"contentClass","content-highlight",1,"cd-performance-card"],[1,"logs-link"],ht,["routerLink","/logs"]]},template:function(t,o){1&t&&(e.YNc(0,hO,6,3,"div",0),e.ALo(1,"async")),2&t&&e.Q6J("ngIf",e.lcZ(1,1,o.healthData&&o.enabledFeature$))},directives:[_.O5,qA,jS,_.PC,lt.o8,_.tP,_.sg,_.mk,pE,Yo.yS],pipes:[_.Ov,by,hE,_E,zS,WS,_.Nd,Or.n,yn.$],styles:['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  cd-health .pg-status-popover-wrapper{position:relative}  cd-health .pg-status-popover-wrapper .popover{max-height:20vh;max-width:unset!important;min-width:unset!important;position:absolute;width:116%}  cd-health .pg-status-popover-wrapper .popover .popover-body{font-size:1rem;max-height:19vh;max-width:100%}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{color:#c9190b;display:inline}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']}),n})();function H1(n,s){1&n&&e._UZ(0,"cd-health")}function _O(n,s){}function lC(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,H1,1,0,"ng-template",6),e.qZA(),e.TgZ(7,"li",3),e.TgZ(8,"a",4),e.SDv(9,7),e.qZA(),e.YNc(10,_O,0,0,"ng-template",6),e.qZA(),e.qZA(),e._UZ(11,"div",8),e.BQk()),2&n){const t=e.MAs(2);e.xp6(11),e.Q6J("ngbNavOutlet",t)}}function gO(n,s){1&n&&e._UZ(0,"cd-health")}let uC=(()=>{class n{constructor(){this.hasGrafana=!1}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-dashboard"]],decls:4,vars:2,consts:function(){let s,t;return s="Health",t="Statistics",[[4,"ngIf"],["ngbNav","",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem",""],["ngbNavLink",""],s,["ngbNavContent",""],t,[3,"ngbNavOutlet"]]},template:function(t,o){1&t&&(e.TgZ(0,"div"),e._UZ(1,"cd-refresh-selector"),e.YNc(2,lC,12,1,"ng-container",0),e.YNc(3,gO,1,0,"cd-health",0),e.qZA()),2&t&&(e.xp6(2),e.Q6J("ngIf",o.hasGrafana),e.xp6(1),e.Q6J("ngIf",!o.hasGrafana))},directives:[uE,_.O5,lt.Pz,lt.nv,lt.Vx,lt.uN,lt.tO,vE],styles:["div[_ngcontent-%COMP%]{padding-top:20px}"]}),n})();var Pv=i(5304),Ey=i(95152),mO=i(33394),yE=i(40205);let Ty=(()=>{class n extends Xf.S{constructor(t){super(),this.http=t,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:"Allows all operations"},{value:"RO",help:"Allows only operations that do not modify the server"},{value:"NONE",help:"Allows no access at all"}],this.nfsFsal=[{value:"CEPH",descr:"CephFS",disabled:!1},{value:"RGW",descr:"Object Gateway",disabled:!1}],this.nfsSquash={no_root_squash:["no_root_squash","noidsquash","none"],root_id_squash:["root_id_squash","rootidsquash","rootid"],root_squash:["root_squash","rootsquash","root"],all_squash:["all_squash","allsquash","all","allanonymous","all_anonymous"]}}list(){return this.http.get(`${this.apiPath}/export`)}get(t,o){return this.http.get(`${this.apiPath}/export/${t}/${o}`)}create(t){return this.http.post(`${this.apiPath}/export`,t,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}update(t,o,c){return this.http.put(`${this.apiPath}/export/${t}/${o}`,c,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}delete(t,o){return this.http.delete(`${this.apiPath}/export/${t}/${o}`,{headers:{Accept:this.getVersionHeaderValue(2,0)},observe:"response"})}listClusters(){return this.http.get(`${this.apiPath}/cluster`,{headers:{Accept:this.getVersionHeaderValue(0,1)}})}lsDir(t,o){return t?this.http.get(`${this.uiApiPath}/lsdir/${t}?root_dir=${o}`):(0,yE._)("Please specify a filesystem volume.")}fsals(){return this.http.get(`${this.uiApiPath}/fsals`)}filesystems(){return this.http.get(`${this.uiApiPath}/cephfs/filesystems`)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var bE=i(36569);const Sy=["squashHelper"];function EE(n,s){1&n&&(e.TgZ(0,"span",14),e.TgZ(1,"span",15),e.SDv(2,16),e.qZA(),e.qZA())}function TE(n,s){1&n&&(e.TgZ(0,"span"),e.SDv(1,37),e.qZA())}function cC(n,s){1&n&&(e.TgZ(0,"span"),e.ynx(1),e.SDv(2,38),e.BQk(),e._UZ(3,"br"),e.ynx(4),e.SDv(5,39),e.BQk(),e._uU(6," 192.168.0.10, 192.168.1.0/8 "),e.qZA())}function dC(n,s){if(1&n&&(e.TgZ(0,"option",40),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.value),e.xp6(1),e.Oqu(t.value)}}function fC(n,s){if(1&n&&(e.TgZ(0,"span",15),e._uU(1),e.qZA()),2&n){const t=e.oxw().index,o=e.oxw();e.xp6(1),e.hij(" ",o.getAccessTypeHelp(t)," ")}}function pC(n,s){1&n&&e.GkF(0)}function hC(n,s){if(1&n&&(e.TgZ(0,"option",40),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function _C(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div"),e.TgZ(1,"div",17),e.TgZ(2,"div",18),e._uU(3),e.ALo(4,"ordinal"),e.TgZ(5,"span",19),e.NdJ("click",function(){const g=e.CHM(t).index;return e.oxw().removeClient(g)}),e._uU(6,"\xd7"),e.qZA(),e.qZA(),e.TgZ(7,"div",20),e.TgZ(8,"div",0),e.TgZ(9,"label",21),e.SDv(10,22),e.qZA(),e.TgZ(11,"div",23),e._UZ(12,"input",24),e.TgZ(13,"span",25),e.YNc(14,TE,2,0,"span",26),e.YNc(15,cC,7,0,"span",26),e.qZA(),e.qZA(),e.qZA(),e.TgZ(16,"div",0),e.TgZ(17,"label",27),e.SDv(18,28),e.qZA(),e.TgZ(19,"div",23),e.TgZ(20,"select",29),e.TgZ(21,"option",30),e._uU(22),e.qZA(),e.YNc(23,dC,2,2,"option",31),e.qZA(),e.YNc(24,fC,2,1,"span",32),e.qZA(),e.qZA(),e.TgZ(25,"div",0),e.TgZ(26,"label",33),e.TgZ(27,"span"),e.SDv(28,34),e.qZA(),e.YNc(29,pC,1,0,"ng-container",35),e.qZA(),e.TgZ(30,"div",23),e.TgZ(31,"select",36),e.TgZ(32,"option",30),e._uU(33),e.qZA(),e.YNc(34,hC,2,2,"option",31),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=s.$implicit,o=s.index,c=e.oxw(),g=e.MAs(4);e.xp6(1),e.Q6J("formGroup",t),e.xp6(2),e.hij(" ",e.lcZ(4,10,o+1)," "),e.xp6(11),e.Q6J("ngIf",c.showError(o,"addresses",g,"required")),e.xp6(1),e.Q6J("ngIf",c.showError(o,"addresses",g,"pattern")),e.xp6(7),e.Oqu(c.getNoAccessTypeDescr()),e.xp6(1),e.Q6J("ngForOf",c.nfsAccessType),e.xp6(1),e.Q6J("ngIf",c.getValue(o,"access_type")),e.xp6(5),e.Q6J("ngTemplateOutlet",c.squashHelperTpl),e.xp6(4),e.Oqu(c.getNoSquashDescr()),e.xp6(1),e.Q6J("ngForOf",c.nfsSquash)}}const gC=function(n){return[n]};let mC=(()=>{class n{constructor(t){this.nfsService=t,this.nfsSquash=Object.keys(this.nfsService.nfsSquash),this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=No.P}ngOnInit(){Ar().forEach(this.clients,t=>{this.addClient().patchValue(t)}),this.clientsFormArray=this.form.get("clients")}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${"(inherited from global config)"}`:"-- Select the access type --"}getAccessTypeHelp(t){const o=this.nfsAccessType.find(c=>this.getValue(t,"access_type")===c.value);return Ar().isObjectLike(o)?o.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${"inherited from global config"})`:"-- Select what kind of user id squashing is performed --"}addClient(){this.clientsFormArray=this.form.get("clients");const t="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",c=new Us.d({addresses:new vn.NI("",{validators:[vn.kI.required,vn.kI.pattern(`${t}([ ,]{1,2}${t})*`)]}),access_type:new vn.NI(""),squash:new vn.NI("")});return this.clientsFormArray.push(c),c}removeClient(t){this.clientsFormArray=this.form.get("clients"),this.clientsFormArray.removeAt(t)}showError(t,o,c,g){return this.form.controls.clients.controls[t].showError(o,c,g)}getValue(t,o){return this.clientsFormArray=this.form.get("clients"),this.clientsFormArray.at(t).getValue(o)}trackByFn(t){return t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Ty))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-nfs-form-client"]],contentQueries:function(t,o,c){if(1&t&&e.Suo(c,Sy,7),2&t){let g;e.iGM(g=e.CRH())&&(o.squashHelperTpl=g.first)}},inputs:{form:"form",clients:"clients"},decls:15,vars:7,consts:function(){let s,t,o,c,g,C,D,P,j;return s="Clients",t="Add clients",o="Any client can access",c="Addresses",g="Access Type",C="Squash",D="This field is required.",P="Must contain one or more comma-separated values",j="For example:",[[1,"form-group","row"],[1,"cd-col-form-label"],s,[1,"cd-col-form-input",3,"formGroup"],["formDir","ngForm"],["class","no-border text-muted",4,"ngIf"],["formArrayName","clients"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"row"],[1,"col-12"],[1,"float-right"],["name","add_client",1,"btn","btn-light",3,"click"],[3,"ngClass"],t,[1,"no-border","text-muted"],[1,"form-text","text-muted"],o,[1,"card",3,"formGroup"],[1,"card-header"],["name","remove_client","ngbTooltip","Remove",1,"float-right","clickable",3,"click"],[1,"card-body"],["for","addresses",1,"cd-col-form-label","required"],c,[1,"cd-col-form-input"],["type","text","name","addresses","id","addresses","formControlName","addresses","placeholder","192.168.0.10, 192.168.1.0/8",1,"form-control"],[1,"invalid-feedback"],[4,"ngIf"],["for","access_type",1,"cd-col-form-label"],g,["name","access_type","id","access_type","formControlName","access_type",1,"form-control"],["value",""],[3,"value",4,"ngFor","ngForOf"],["class","form-text text-muted",4,"ngIf"],["for","squash",1,"cd-col-form-label"],C,[4,"ngTemplateOutlet"],["name","squash","id","squash","formControlName","squash",1,"form-control"],D,P,j,[3,"value"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"label",1),e.SDv(2,2),e.qZA(),e.TgZ(3,"div",3,4),e.YNc(5,EE,3,0,"span",5),e.ynx(6,6),e.YNc(7,_C,35,12,"div",7),e.BQk(),e.TgZ(8,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"div",10),e.TgZ(11,"button",11),e.NdJ("click",function(){return o.addClient()}),e._UZ(12,"i",12),e.ynx(13),e.SDv(14,13),e.BQk(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(3),e.Q6J("formGroup",o.form),e.xp6(2),e.Q6J("ngIf",0===o.form.get("clients").value.length),e.xp6(2),e.Q6J("ngForOf",o.clientsFormArray.controls)("ngForTrackBy",o.trackByFn),e.xp6(5),e.Q6J("ngClass",e.VKq(5,gC,o.icons.add)))},directives:[$a.P,vn.JL,vn.sg,tl.V,_.O5,vn.CE,_.sg,ca.o,_.mk,lt._L,vn.Fj,Ha.b,vn.JJ,vn.u,vn.EJ,vn.YN,vn.Kr,_.tP],pipes:[bE.f],styles:[""]}),n})();const vO=["nfsClients"];function vC(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,53),e.qZA())}function yO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,54),e.qZA())}function bO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,55),e.qZA())}function EO(n,s){if(1&n&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.cluster_id),e.xp6(1),e.Oqu(t.cluster_id)}}const TO=function(){return["create"]},SO=function(n){return{modal:n}},CO=function(n){return{outlets:n}},MO=function(n){return["/services",n]};function AO(n,s){1&n&&(e.TgZ(0,"span",57),e.tHW(1,58),e._UZ(2,"a",59),e.N_p(),e.qZA()),2&n&&(e.xp6(2),e.Q6J("routerLink",e.VKq(6,MO,e.VKq(4,CO,e.VKq(2,SO,e.DdM(1,TO))))))}function OO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,60),e.qZA())}function wO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,61),e.qZA())}function xO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,62),e.qZA())}function DO(n,s){if(1&n&&(e.TgZ(0,"option",63),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.value)("disabled",t.disabled),e.xp6(1),e.Oqu(t.descr)}}function RO(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,64),e.qZA())}function NO(n,s){if(1&n&&(e.TgZ(0,"span",57),e.SDv(1,65),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.pQV(t.fsalAvailabilityError),e.QtT(1)}}function yC(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,69),e.qZA())}function bC(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,70),e.qZA())}function EC(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,71),e.qZA())}function TC(n,s){if(1&n&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.name),e.xp6(1),e.Oqu(t.name)}}function SC(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,72),e.qZA())}function CC(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",66),e.SDv(2,67),e.qZA(),e.TgZ(3,"div",13),e.TgZ(4,"select",68),e.NdJ("change",function(){return e.CHM(t),e.oxw(2).pathChangeHandler()}),e.YNc(5,yC,2,0,"option",15),e.YNc(6,bC,2,0,"option",15),e.YNc(7,EC,2,0,"option",15),e.YNc(8,TC,2,2,"option",16),e.qZA(),e.YNc(9,SC,2,0,"span",17),e.qZA(),e.qZA()}if(2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(5),e.Q6J("ngIf",null===o.allFsNames),e.xp6(1),e.Q6J("ngIf",null!==o.allFsNames&&0===o.allFsNames.length),e.xp6(1),e.Q6J("ngIf",null!==o.allFsNames&&o.allFsNames.length>0),e.xp6(1),e.Q6J("ngForOf",o.allFsNames),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("fs_name",t,"required"))}}function MC(n,s){1&n&&e._UZ(0,"input",79)}function AC(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,80),e.qZA())}const OC=function(n){return{required:n}};function SE(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",73),e.SDv(2,74),e.qZA(),e.TgZ(3,"div",13),e.TgZ(4,"div",26),e._UZ(5,"input",75),e.TgZ(6,"label",76),e.SDv(7,77),e.qZA(),e.qZA(),e._UZ(8,"br"),e.YNc(9,MC,1,0,"input",78),e.YNc(10,AC,2,0,"span",17),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(3,OC,o.nfsForm.getValue("security_label"))),e.xp6(8),e.Q6J("ngIf",o.nfsForm.getValue("security_label")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("sec_label_xattr",t,"required"))}}function CE(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,85),e.qZA())}function Gm(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,86),e.qZA())}function PO(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,87),e.qZA())}function IO(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",8),e.TgZ(1,"label",81),e.TgZ(2,"span",10),e.SDv(3,82),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"p"),e.SDv(6,83),e.qZA(),e.qZA(),e.qZA(),e.TgZ(7,"div",13),e.TgZ(8,"input",84),e.NdJ("selectItem",function(){return e.CHM(t),e.oxw(2).pathChangeHandler()})("blur",function(){return e.CHM(t),e.oxw(2).pathChangeHandler()}),e.qZA(),e.YNc(9,CE,2,0,"span",17),e.YNc(10,Gm,2,0,"span",17),e.YNc(11,PO,2,0,"span",17),e.qZA(),e.qZA()}if(2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(8),e.Q6J("ngbTypeahead",o.pathDataSource),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("path",t,"required")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("path",t,"pattern")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("path",t,"pathNameNotAllowed"))}}function Iv(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,90),e.qZA())}function bR(n,s){1&n&&(e.TgZ(0,"span",57),e.tHW(1,91),e._UZ(2,"a",92),e.N_p(),e.qZA())}function ME(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",81),e.TgZ(2,"span",10),e.SDv(3,88),e.qZA(),e.qZA(),e.TgZ(4,"div",13),e._UZ(5,"input",89),e.YNc(6,Iv,2,0,"span",17),e.YNc(7,bR,3,0,"span",17),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(5),e.Q6J("ngbTypeahead",o.bucketDataSource),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("path",t,"required")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("path",t,"bucketNameNotAllowed"))}}function ER(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,93),e.qZA())}function wC(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,99),e.qZA())}function xC(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,100),e.qZA())}function TR(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,101),e.qZA())}function Za(n,s){if(1&n&&(e.TgZ(0,"div",8),e.TgZ(1,"label",94),e.TgZ(2,"span",10),e.SDv(3,95),e.qZA(),e.TgZ(4,"cd-helper"),e.TgZ(5,"p"),e.tHW(6,96),e._UZ(7,"strong"),e._UZ(8,"strong"),e.N_p(),e.qZA(),e.TgZ(9,"p"),e.SDv(10,97),e.qZA(),e.qZA(),e.qZA(),e.TgZ(11,"div",13),e._UZ(12,"input",98),e.YNc(13,wC,2,0,"span",17),e.YNc(14,xC,2,0,"span",17),e.YNc(15,TR,2,0,"span",17),e.qZA(),e.qZA()),2&n){e.oxw();const t=e.MAs(2),o=e.oxw();e.xp6(13),e.Q6J("ngIf",o.nfsForm.showError("pseudo",t,"required")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("pseudo",t,"pseudoAlreadyExists")),e.xp6(1),e.Q6J("ngIf",o.nfsForm.showError("pseudo",t,"pattern"))}}function LO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,102),e.qZA())}function FO(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,103),e.qZA())}function kO(n,s){if(1&n&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t.value),e.xp6(1),e.Oqu(t.value)}}function Cy(n,s){if(1&n&&(e.TgZ(0,"span",104),e._uU(1),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.hij(" ",t.getAccessTypeHelp(t.nfsForm.getValue("access_type"))," ")}}function $O(n,s){1&n&&(e.TgZ(0,"span",105),e.tHW(1,106),e._UZ(2,"cd-doc",107),e.N_p(),e.qZA())}function My(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,108),e.qZA())}function Ay(n,s){1&n&&e.GkF(0)}function Ad(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,109),e.qZA())}function SR(n,s){1&n&&(e.TgZ(0,"option",52),e.SDv(1,110),e.qZA())}function DC(n,s){if(1&n&&(e.TgZ(0,"option",56),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function AE(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,111),e.qZA())}function HO(n,s){1&n&&(e.TgZ(0,"span",57),e.SDv(1,112),e.qZA())}function RC(n,s){1&n&&(e.TgZ(0,"cd-helper"),e.TgZ(1,"ul",113),e.TgZ(2,"li"),e.TgZ(3,"span",114),e._uU(4,"no_root_squash: "),e.qZA(),e.TgZ(5,"span"),e.SDv(6,115),e.qZA(),e.qZA(),e.TgZ(7,"li"),e.TgZ(8,"span",114),e._uU(9,"root_id_squash: "),e.qZA(),e.TgZ(10,"span"),e.SDv(11,116),e.qZA(),e.qZA(),e.TgZ(12,"li"),e.TgZ(13,"span",114),e._uU(14,"root_squash: "),e.qZA(),e.TgZ(15,"span"),e.SDv(16,117),e.qZA(),e.qZA(),e.TgZ(17,"li"),e.TgZ(18,"span",114),e._uU(19,"all_squash: "),e.qZA(),e.TgZ(20,"span"),e.SDv(21,118),e.qZA(),e.qZA(),e.qZA(),e.qZA())}function NC(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.TgZ(3,"div",4),e.TgZ(4,"div",5),e.SDv(5,6),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",7),e.TgZ(9,"div",8),e.TgZ(10,"label",9),e.TgZ(11,"span",10),e.SDv(12,11),e.qZA(),e.TgZ(13,"cd-helper"),e.TgZ(14,"p"),e.SDv(15,12),e.qZA(),e.qZA(),e.qZA(),e.TgZ(16,"div",13),e.TgZ(17,"select",14),e.YNc(18,vC,2,0,"option",15),e.YNc(19,yO,2,0,"option",15),e.YNc(20,bO,2,0,"option",15),e.YNc(21,EO,2,2,"option",16),e.qZA(),e.YNc(22,AO,3,8,"span",17),e.qZA(),e.qZA(),e.TgZ(23,"div",18),e.TgZ(24,"div",8),e.TgZ(25,"label",19),e.SDv(26,20),e.qZA(),e.TgZ(27,"div",13),e.TgZ(28,"select",21),e.NdJ("change",function(){return e.CHM(t),e.oxw().fsalChangeHandler()}),e.YNc(29,OO,2,0,"option",15),e.YNc(30,wO,2,0,"option",15),e.YNc(31,xO,2,0,"option",15),e.YNc(32,DO,2,3,"option",22),e.qZA(),e.YNc(33,RO,2,0,"span",17),e.YNc(34,NO,2,1,"span",17),e.qZA(),e.qZA(),e.YNc(35,CC,10,5,"div",23),e.qZA(),e.YNc(36,SE,11,5,"div",23),e.YNc(37,IO,12,4,"div",23),e.YNc(38,ME,8,3,"div",23),e.TgZ(39,"div",8),e.TgZ(40,"label",24),e.SDv(41,25),e.qZA(),e.TgZ(42,"div",13),e.TgZ(43,"div",26),e._UZ(44,"input",27),e.TgZ(45,"label",28),e.SDv(46,29),e.qZA(),e.qZA(),e.YNc(47,ER,2,0,"span",17),e.qZA(),e.qZA(),e.YNc(48,Za,16,3,"div",23),e.TgZ(49,"div",8),e.TgZ(50,"label",30),e.SDv(51,31),e.qZA(),e.TgZ(52,"div",13),e.TgZ(53,"select",32),e.NdJ("change",function(){return e.CHM(t),e.oxw().accessTypeChangeHandler()}),e.YNc(54,LO,2,0,"option",15),e.YNc(55,FO,2,0,"option",15),e.YNc(56,kO,2,2,"option",16),e.qZA(),e.YNc(57,Cy,2,1,"span",33),e.YNc(58,$O,3,0,"span",34),e.YNc(59,My,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(60,"div",8),e.TgZ(61,"label",35),e.TgZ(62,"span"),e.SDv(63,36),e.qZA(),e.YNc(64,Ay,1,0,"ng-container",37),e.qZA(),e.TgZ(65,"div",13),e.TgZ(66,"select",38),e.YNc(67,Ad,2,0,"option",15),e.YNc(68,SR,2,0,"option",15),e.YNc(69,DC,2,2,"option",16),e.qZA(),e.YNc(70,AE,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(71,"div",8),e.TgZ(72,"label",39),e.SDv(73,40),e.qZA(),e.TgZ(74,"div",13),e.TgZ(75,"div",26),e._UZ(76,"input",41),e.TgZ(77,"label",42),e.SDv(78,43),e.qZA(),e.qZA(),e.TgZ(79,"div",26),e._UZ(80,"input",44),e.TgZ(81,"label",45),e.SDv(82,46),e.qZA(),e.qZA(),e.YNc(83,HO,2,0,"span",17),e._UZ(84,"hr"),e.qZA(),e.qZA(),e.TgZ(85,"cd-nfs-form-client",47,48),e.YNc(87,RC,22,0,"ng-template",null,49,e.W1O),e.qZA(),e.qZA(),e.TgZ(89,"div",50),e.TgZ(90,"cd-form-button-panel",51),e.NdJ("submitActionEvent",function(){return e.CHM(t),e.oxw().submitAction()}),e.ALo(91,"titlecase"),e.ALo(92,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.MAs(88),c=e.oxw();e.xp6(1),e.Q6J("formGroup",c.nfsForm),e.xp6(6),e.pQV(e.lcZ(6,36,c.action))(e.lcZ(7,38,c.resource)),e.QtT(5),e.xp6(11),e.Q6J("ngIf",null===c.allClusters),e.xp6(1),e.Q6J("ngIf",null!==c.allClusters&&0===c.allClusters.length),e.xp6(1),e.Q6J("ngIf",null!==c.allClusters&&c.allClusters.length>0),e.xp6(1),e.Q6J("ngForOf",c.allClusters),e.xp6(1),e.Q6J("ngIf",c.nfsForm.showError("cluster_id",t,"required")||0===(null==c.allClusters?null:c.allClusters.length)),e.xp6(7),e.Q6J("ngIf",null===c.allFsals),e.xp6(1),e.Q6J("ngIf",null!==c.allFsals&&0===c.allFsals.length),e.xp6(1),e.Q6J("ngIf",null!==c.allFsals&&c.allFsals.length>0),e.xp6(1),e.Q6J("ngForOf",c.allFsals),e.xp6(1),e.Q6J("ngIf",c.nfsForm.showError("name",t,"required")),e.xp6(1),e.Q6J("ngIf",c.fsalAvailabilityError),e.xp6(1),e.Q6J("ngIf","CEPH"===c.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","CEPH"===c.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","CEPH"===c.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf","RGW"===c.nfsForm.getValue("name")),e.xp6(9),e.Q6J("ngIf",c.nfsForm.showError("protocolNfsv4",t,"required")),e.xp6(1),e.Q6J("ngIf",c.nfsForm.getValue("protocolNfsv4")),e.xp6(6),e.Q6J("ngIf",null===c.nfsAccessType),e.xp6(1),e.Q6J("ngIf",null!==c.nfsAccessType&&0===c.nfsAccessType.length),e.xp6(1),e.Q6J("ngForOf",c.nfsAccessType),e.xp6(1),e.Q6J("ngIf",c.nfsForm.getValue("access_type")),e.xp6(1),e.Q6J("ngIf","RW"===c.nfsForm.getValue("access_type")&&"RGW"===c.nfsForm.getValue("name")),e.xp6(1),e.Q6J("ngIf",c.nfsForm.showError("access_type",t,"required")),e.xp6(5),e.Q6J("ngTemplateOutlet",o),e.xp6(3),e.Q6J("ngIf",null===c.nfsSquash),e.xp6(1),e.Q6J("ngIf",null!==c.nfsSquash&&0===c.nfsSquash.length),e.xp6(1),e.Q6J("ngForOf",c.nfsSquash),e.xp6(1),e.Q6J("ngIf",c.nfsForm.showError("squash",t,"required")),e.xp6(13),e.Q6J("ngIf",c.nfsForm.showError("transportUDP",t,"required")||c.nfsForm.showError("transportTCP",t,"required")),e.xp6(2),e.Q6J("form",c.nfsForm)("clients",c.clients),e.xp6(5),e.Q6J("form",c.nfsForm)("submitText",e.lcZ(91,40,c.action)+" "+e.lcZ(92,42,c.resource))}}let OE=(()=>{class n extends Oa.E{constructor(t,o,c,g,C,D,P,j,W,re){super(),this.authStorageService=t,this.nfsService=o,this.route=c,this.router=g,this.rgwBucketService=C,this.rgwSiteService=D,this.formBuilder=P,this.taskWrapper=j,this.cdRef=W,this.actionLabels=re,this.clients=[],this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.allClusters=null,this.icons=No.P,this.allFsals=[],this.allFsNames=null,this.fsalAvailabilityError=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=Object.keys(this.nfsService.nfsSquash),this.pathDataSource=ie=>ie.pipe(Gf(200),(0,Df.x)(),(0,Uu.zg)(ge=>this.getPathTypeahead(ge)),(0,su.U)(ge=>ge)),this.bucketDataSource=ie=>ie.pipe(Gf(200),(0,Df.x)(),(0,Uu.zg)(ge=>this.getBucketTypeahead(ge))),this.permission=this.authStorageService.getPermissions().pool,this.resource="NFS export",this.createForm()}ngOnInit(){const t=[this.nfsService.listClusters(),this.nfsService.fsals(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(o=>{this.cluster_id=decodeURIComponent(o.cluster_id),this.export_id=decodeURIComponent(o.export_id),t.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(t)}),this.nfsForm.get("cluster_id").disable()):(this.action=this.actionLabels.CREATE,this.getData(t))}getData(t){(0,Oc.D)(t).subscribe(o=>{this.resolveClusters(o[0]),this.resolveFsals(o[1]),this.resolveFilesystems(o[2]),o[3]&&this.resolveModel(o[3]),this.loadingReady()})}createForm(){this.nfsForm=new Us.d({cluster_id:new vn.NI("",{validators:[vn.kI.required]}),fsal:new Us.d({name:new vn.NI("",{validators:[vn.kI.required]}),fs_name:new vn.NI("",{validators:[ds.h.requiredIf({name:"CEPH"})]})}),path:new vn.NI("/"),protocolNfsv4:new vn.NI(!0),pseudo:new vn.NI("",{validators:[ds.h.requiredIf({protocolNfsv4:!0}),vn.kI.pattern("^/[^><|&()]*$")]}),access_type:new vn.NI("RW"),squash:new vn.NI(this.nfsSquash[0]),transportUDP:new vn.NI(!0,{validators:[ds.h.requiredIf({transportTCP:!1},t=>!t)]}),transportTCP:new vn.NI(!0,{validators:[ds.h.requiredIf({transportUDP:!1},t=>!t)]}),clients:this.formBuilder.array([]),security_label:new vn.NI(!1),sec_label_xattr:new vn.NI("security.selinux",ds.h.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),t.protocolNfsv4=-1!==t.protocols.indexOf(4),delete t.protocols,t.transportTCP=-1!==t.transports.indexOf("TCP"),t.transportUDP=-1!==t.transports.indexOf("UDP"),delete t.transports,Object.entries(this.nfsService.nfsSquash).forEach(([o,c])=>{c.includes(t.squash)&&(t.squash=o)}),t.clients.forEach(o=>{let c="";o.addresses.forEach(g=>{c+=g+", "}),c.length>=2&&(c=c.substring(0,c.length-2)),o.addresses=c}),this.nfsForm.patchValue(t),this.setPathValidation(),this.clients=t.clients}resolveClusters(t){this.allClusters=[];for(const o of t)this.allClusters.push({cluster_id:o});!this.isEdit&&this.allClusters.length>0&&this.nfsForm.get("cluster_id").setValue(this.allClusters[0].cluster_id)}resolveFsals(t){t.forEach(o=>{const c=this.nfsService.nfsFsal.find(g=>o===g.value);Ar().isObjectLike(c)&&this.allFsals.push(c)}),!this.isEdit&&this.allFsals.length>0&&this.nfsForm.patchValue({fsal:{name:this.allFsals[0].value}})}resolveFilesystems(t){this.allFsNames=t,!this.isEdit&&t.length>0&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})}fsalChangeHandler(){this.setPathValidation();const t=this.nfsForm.getValue("name");("RGW"===t?this.rgwSiteService.get("realms").pipe((0,Uu.zg)(c=>0===c.length?(0,zc.of)(!0):this.rgwSiteService.isDefaultRealm().pipe((0,Uu.zg)(g=>{if(!g)throw new Error("Selected realm is not the default.");return(0,zc.of)(!0)})))):this.nfsService.filesystems()).subscribe({next:()=>{this.setFsalAvailability(t,!0),this.isEdit||this.nfsForm.patchValue({path:"RGW"===t?"":"/",pseudo:this.generatePseudo(),access_type:this.updateAccessType()}),this.cdRef.detectChanges()},error:c=>{this.setFsalAvailability(t,!1,c),this.nfsForm.get("name").setValue("")}})}setFsalAvailability(t,o,c=""){this.allFsals=this.allFsals.map(g=>(g.value===t&&(g.disabled=!o,this.fsalAvailabilityError=g.disabled?"" + g.descr + " backend is not available. " + c + "":null),g))}accessTypeChangeHandler(){const t=this.nfsForm.getValue("name"),o=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=o}setPathValidation(){const t=this.nfsForm.get("path");t.setValidators([vn.kI.required]),"RGW"===this.nfsForm.getValue("name")?t.setAsyncValidators([ds.h.bucketExistence(!0,this.rgwBucketService)]):t.setAsyncValidators([this.pathExistence(!0)]),this.isEdit&&t.markAsDirty()}getAccessTypeHelp(t){const o=this.nfsAccessType.find(c=>{if(t===c.value)return c});return Ar().isObjectLike(o)?o.help:""}getId(){return Ar().isString(this.nfsForm.getValue("cluster_id"))&&Ar().isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(t){if(!Ar().isString(t)||"/"===t)return(0,zc.of)([]);const o=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(o,t).pipe((0,su.U)(c=>c.paths.filter(g=>g.toLowerCase().includes(t)).slice(0,15)),(0,Pv.K)(()=>(0,zc.of)(["Error while retrieving paths."])))}pathChangeHandler(){this.isEdit||this.nfsForm.patchValue({pseudo:this.generatePseudo()})}getBucketTypeahead(t){return Ar().isString(t)&&"/"!==t&&""!==t?this.rgwBucketService.list().pipe((0,su.U)(o=>o.filter(c=>c.toLowerCase().includes(t)).slice(0,15)),(0,Pv.K)(()=>(0,zc.of)(["Error while retrieving bucket names."]))):(0,zc.of)([])}generatePseudo(){let t=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(t=void 0,"CEPH"===this.nfsForm.getValue("fsal")&&(t="/cephfs",Ar().isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path")))),t}updateAccessType(){const t=this.nfsForm.getValue("name");let o=this.defaultAccessType[t];return o||(o="RW"),o}submitAction(){let t;const o=this.buildRequest();t=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new cl.R("nfs/edit",{cluster_id:this.cluster_id,export_id:Ar().parseInt(this.export_id)}),call:this.nfsService.update(this.cluster_id,Ar().parseInt(this.export_id),o)}:{task:new cl.R("nfs/create",{path:o.path,fsal:o.fsal,cluster_id:o.cluster_id}),call:this.nfsService.create(o)}),t.subscribe({error:c=>this.setFormErrors(c),complete:()=>this.router.navigate(["/nfs"])})}setFormErrors(t){t.error.detail&&t.error.detail.toString().includes(`Pseudo ${this.nfsForm.getValue("pseudo")} is already in use`)&&this.nfsForm.get("pseudo").setErrors({pseudoAlreadyExists:!0}),this.nfsForm.setErrors({cdSubmitButton:!0})}buildRequest(){const t=Ar().cloneDeep(this.nfsForm.value);return this.isEdit&&(t.export_id=Ar().parseInt(this.export_id)),"RGW"===t.fsal.name&&delete t.fsal.fs_name,t.protocols=[],t.protocolNfsv4?t.protocols.push(4):t.pseudo=null,delete t.protocolNfsv4,t.transports=[],t.transportTCP&&t.transports.push("TCP"),delete t.transportTCP,t.transportUDP&&t.transports.push("UDP"),delete t.transportUDP,t.clients.forEach(o=>{o.addresses=Ar().isString(o.addresses)?Ar()(o.addresses).split(/[ ,]+/).uniq().filter(c=>""!==c).value():[],o.squash||(o.squash=t.squash),o.access_type||(o.access_type=t.access_type)}),t.fsal.sec_label_xattr=!1===t.security_label||"RGW"===t.fsal.name?null:t.sec_label_xattr,delete t.sec_label_xattr,t}pathExistence(t){return o=>{if(o.pristine||!o.value)return(0,zc.of)({required:!0});const c=this.nfsForm.getValue("fsal").fs_name;return this.nfsService.lsDir(c,o.value).pipe((0,su.U)(g=>g.paths.includes(o.value)===t?null:{pathNameNotAllowed:!0}),(0,Pv.K)(()=>(0,zc.of)({pathNameNotAllowed:!0})))}}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Ty),e.Y36(Yo.gz),e.Y36(Yo.F0),e.Y36(Ey.o),e.Y36(mO.I),e.Y36(id.O),e.Y36(Ll.P),e.Y36(e.sBO),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-nfs-form"]],viewQuery:function(t,o){if(1&t&&e.Gf(vO,7),2&t){let c;e.iGM(c=e.CRH())&&(o.nfsClients=c.first)}},features:[e.qOj],decls:1,vars:1,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe,U,pt,ht,wt,It,dn,Lt,Dn,Mn,$r,ur,Pr,xr,fn,Nn,$n,Qn,Tn,Yr,ji,ii,Ui,Jr,An,hn,qr,Ri,qi,Zo,bo,Ys,Ws,wi,lo,go,Ge,St;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Cluster",o="This is the ID of an NFS Service.",c="Storage Backend",g="NFS Protocol",C="NFSv4",D="Access Type",P="Squash",j="Transport Protocol",W="UDP",re="TCP",ie="Loading...",ge="-- No cluster available --",_e="-- Select the cluster --",Le="This field is required. To create a new NFS cluster, " + "\ufffd#2\ufffd" + "add a new NFS Service" + "\ufffd/#2\ufffd" + ".",Re="Loading...",ke="-- No data pools available --",xe="-- Select the storage backend --",U="This field is required.",pt="" + "\ufffd0\ufffd" + "",ht="Volume",wt="Loading...",It="-- No CephFS filesystem available --",dn="-- Select the CephFS filesystem --",Lt="This field is required.",Dn="Security Label",Mn="Enable security label",$r="This field is required.",ur="CephFS Path",Pr="A path in a CephFS file system.",xr="This field is required.",fn="Path need to start with a '/' and can be followed by a word",Nn="The path does not exist in the selected volume.",$n="Bucket",Qn="This field is required.",Tn="The bucket does not exist or is not in the default realm (if multiple realms are configured). To continue, " + "\ufffd#2\ufffd" + "create a new bucket" + "\ufffd/#2\ufffd" + ".",Yr="This field is required.",ji="Pseudo",ii="The position that this " + "[\ufffd#7\ufffd|\ufffd#8\ufffd]" + "NFS v4" + "[\ufffd/#7\ufffd|\ufffd/#8\ufffd]" + " export occupies in the " + "[\ufffd#7\ufffd|\ufffd#8\ufffd]" + "Pseudo FS" + "[\ufffd/#7\ufffd|\ufffd/#8\ufffd]" + " (it must be unique).",ii=e.Zx4(ii),Ui="By using different Pseudo options, the same Path may be exported multiple times.",Jr="This field is required.",An="The pseudo is already in use by another export.",hn="Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or ).",qr="Loading...",Ri="-- No access type available --",qi="The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the " + "\ufffd#2\ufffd" + "" + "\ufffd/#2\ufffd" + " for details before enabling write access.",Zo="This field is required.",bo="Loading...",Ys="-- No squash available --",Ws="This field is required.",wi="This field is required.",lo="No user id squashing is performed.",go="uid 0 and gid 0 are squashed to the Anonymous_Uid and Anonymous_Gid gid 0 in alt_groups lists is also squashed.",Ge="uid 0 and gid of any value are squashed to the Anonymous_Uid and Anonymous_Gid alt_groups lists is discarded.",St="All users are squashed.",[["class","cd-col-form",4,"cdFormLoading"],[1,"cd-col-form"],["name","nfsForm","novalidate","",3,"formGroup"],["formDir","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],[1,"form-group","row"],["for","cluster_id",1,"cd-col-form-label"],[1,"required"],t,o,[1,"cd-col-form-input"],["formControlName","cluster_id","name","cluster_id","id","cluster_id",1,"form-control"],["value","",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["formGroupName","fsal"],["for","name",1,"cd-col-form-label","required"],c,["formControlName","name","name","name","id","name",1,"form-control",3,"change"],[3,"value","disabled",4,"ngFor","ngForOf"],["class","form-group row",4,"ngIf"],["for","protocols",1,"cd-col-form-label","required"],g,[1,"custom-control","custom-checkbox"],["type","checkbox","formControlName","protocolNfsv4","name","protocolNfsv4","id","protocolNfsv4","disabled","",1,"custom-control-input"],["for","protocolNfsv4",1,"custom-control-label"],C,["for","access_type",1,"cd-col-form-label","required"],D,["formControlName","access_type","name","access_type","id","access_type",1,"form-control",3,"change"],["class","form-text text-muted",4,"ngIf"],["class","form-text text-warning",4,"ngIf"],["for","squash",1,"cd-col-form-label"],P,[4,"ngTemplateOutlet"],["name","squash","formControlName","squash","id","squash",1,"form-control"],["for","transports",1,"cd-col-form-label","required"],j,["type","checkbox","formControlName","transportUDP","name","transportUDP","id","transportUDP",1,"custom-control-input"],["for","transportUDP",1,"custom-control-label"],W,["type","checkbox","formControlName","transportTCP","name","transportTCP","id","transportTCP",1,"custom-control-input"],["for","transportTCP",1,"custom-control-label"],re,[3,"form","clients"],["nfsClients",""],["squashHelper",""],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["value",""],ie,ge,_e,[3,"value"],[1,"invalid-feedback"],Le,[1,"btn-link",3,"routerLink"],Re,ke,xe,[3,"value","disabled"],U,pt,["for","fs_name",1,"cd-col-form-label","required"],ht,["formControlName","fs_name","name","fs_name","id","fs_name",1,"form-control",3,"change"],wt,It,dn,Lt,["for","security_label",1,"cd-col-form-label",3,"ngClass"],Dn,["type","checkbox","formControlName","security_label","name","security_label","id","security_label",1,"custom-control-input"],["for","security_label",1,"custom-control-label"],Mn,["type","text","class","form-control","name","sec_label_xattr","id","sec_label_xattr","formControlName","sec_label_xattr",4,"ngIf"],["type","text","name","sec_label_xattr","id","sec_label_xattr","formControlName","sec_label_xattr",1,"form-control"],$r,["for","path",1,"cd-col-form-label"],ur,Pr,["type","text","name","path","id","path","data-testid","fs_path","formControlName","path",1,"form-control",3,"ngbTypeahead","selectItem","blur"],xr,fn,Nn,$n,["type","text","name","path","id","path","data-testid","rgw_path","formControlName","path",1,"form-control",3,"ngbTypeahead"],Qn,Tn,["routerLink","/rgw/bucket/create",1,"btn-link"],Yr,["for","pseudo",1,"cd-col-form-label"],ji,ii,Ui,["type","text","name","pseudo","id","pseudo","formControlName","pseudo",1,"form-control"],Jr,An,hn,qr,Ri,[1,"form-text","text-muted"],[1,"form-text","text-warning"],qi,["section","rgw-nfs"],Zo,bo,Ys,Ws,wi,[1,"squash-helper"],[1,"squash-helper-item-value"],lo,go,Ge,St]},template:function(t,o){1&t&&e.YNc(0,NC,93,44,"div",0),2&t&&e.Q6J("cdFormLoading",o.loading)},directives:[wl.y,vn._Y,vn.JL,vn.sg,tl.V,$a.P,E.S,ca.o,vn.EJ,Ha.b,vn.JJ,vn.u,_.O5,_.sg,vn.x0,vn.Wl,_.tP,mC,nl.p,vn.YN,vn.Kr,Yo.yS,_.mk,vn.Fj,lt.dR,ol.K],pipes:[_.rS,K.m],styles:[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}.squash-helper[_ngcontent-%COMP%]{padding-left:1rem}.squash-helper-item-value[_ngcontent-%COMP%]{font-weight:bold}"]}),n})();var wE=i(38047);function UO(n,s){if(1&n&&e._UZ(0,"cd-table-key-value",10),2&n){const t=e.oxw(2);e.Q6J("data",t.data)}}function BO(n,s){if(1&n&&e._UZ(0,"cd-table",11,12),2&n){const t=e.oxw(2);e.Q6J("data",t.clients)("columns",t.clientsColumns)}}function YO(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"ul",1,2),e.TgZ(3,"li",3),e.TgZ(4,"a",4),e.SDv(5,5),e.qZA(),e.YNc(6,UO,1,1,"ng-template",6),e.qZA(),e.TgZ(7,"li",7),e.TgZ(8,"a",4),e.SDv(9,8),e.qZA(),e.YNc(10,BO,2,2,"ng-template",6),e.qZA(),e.qZA(),e._UZ(11,"div",9),e.BQk()),2&n){const t=e.MAs(2),o=e.oxw();e.xp6(9),e.pQV(o.clients.length),e.QtT(9),e.xp6(2),e.Q6J("ngbNavOutlet",t)}}let U1=(()=>{class n{constructor(){this.clients=[],this.clientsColumns=[{name:"Addresses",prop:"addresses",flexGrow:2},{name:"Access Type",prop:"access_type",flexGrow:1},{name:"Squash",prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data["Cluster"]=this.selectedItem.cluster_id,this.data["NFS Protocol"]=this.selectedItem.protocols.map(t=>"NFSv"+t),this.data["Pseudo"]=this.selectedItem.pseudo,this.data["Access Type"]=this.selectedItem.access_type,this.data["Squash"]=this.selectedItem.squash,this.data["Transport"]=this.selectedItem.transports,this.data["Path"]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data["Storage Backend"]="CephFS",this.data["CephFS User"]=this.selectedItem.fsal.user_id,this.data["CephFS Filesystem"]=this.selectedItem.fsal.fs_name,this.data["Security Label"]=this.selectedItem.fsal.sec_label_xattr):(this.data["Storage Backend"]="Object Gateway",this.data["Object Gateway User"]=this.selectedItem.fsal.user_id))}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-nfs-details"]],inputs:{selection:"selection"},features:[e.TTD],decls:1,vars:1,consts:function(){let s,t;return s="Details",t="Clients (" + "\ufffd0\ufffd" + ")",[[4,"ngIf"],["ngbNav","","cdStatefulTab","nfs-details",1,"nav-tabs"],["nav","ngbNav"],["ngbNavItem","details"],["ngbNavLink",""],s,["ngbNavContent",""],["ngbNavItem","clients"],t,[3,"ngbNavOutlet"],[3,"data"],["columnMode","flex","identifier","addresses","forceIdentifier","true","selectionType","",3,"data","columns"],["table",""]]},template:function(t,o){1&t&&e.YNc(0,YO,12,2,"ng-container",0),2&t&&e.Q6J("ngIf",o.selection)},directives:[_.O5,lt.Pz,un.m,lt.nv,lt.Vx,lt.uN,lt.tO,Vr.b,Hs.a],styles:[""]}),n})();const ZO=["nfsState"],jO=["nfsFsal"],GO=["table"];function Oy(n,s){1&n&&(e.ynx(0),e.SDv(1,7),e.BQk())}function PC(n,s){1&n&&(e.ynx(0),e.SDv(1,8),e.BQk())}function IC(n,s){if(1&n&&(e.YNc(0,Oy,2,0,"ng-container",6),e.YNc(1,PC,2,0,"ng-container",6)),2&n){const t=s.value;e.Q6J("ngIf","CEPH"===t.name),e.xp6(1),e.Q6J("ngIf","RGW"===t.name)}}let LC=(()=>{class n extends Gl.o{constructor(t,o,c,g,C,D){super(),this.authStorageService=t,this.modalService=o,this.nfsService=c,this.taskListService=g,this.taskWrapper=C,this.actionLabels=D,this.selection=new hl.r,this.isDefaultCluster=!1,this.builders={"nfs/create":ie=>({path:ie.path,cluster_id:ie.cluster_id,fsal:ie.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const P=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:No.P.add,routerLink:()=>"/nfs/create",canBePrimary:ie=>!ie.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:No.P.edit,routerLink:()=>`/nfs/edit/${P()}`,name:this.actionLabels.EDIT},{permission:"delete",icon:No.P.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:"Path",prop:"path",flexGrow:2,cellTransformation:Ja.e.executing},{name:"Pseudo",prop:"pseudo",flexGrow:2},{name:"Cluster",prop:"cluster_id",flexGrow:2},{name:"Storage Backend",prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:"Access Type",prop:"access_type",flexGrow:2}],this.taskListService.init(()=>this.nfsService.list(),t=>this.prepareResponse(t),t=>this.exports=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(t){let o=[];return t.forEach(c=>{c.id=`${c.cluster_id}:${c.export_id}`,c.state="LOADING",o=o.concat(c)}),o}onFetchError(){this.table.reset(),this.viewCacheStatus={status:ot.T.ValueException}}itemFilter(t,o){return t.cluster_id===o.metadata.cluster_id&&t.export_id===o.metadata.export_id}taskFilter(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)}updateSelection(t){this.selection=t}deleteNfsModal(){const t=this.selection.first().cluster_id,o=this.selection.first().export_id;this.modalRef=this.modalService.show(zl.M,{itemDescription:"NFS export",itemNames:[`${t}:${o}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new cl.R("nfs/delete",{cluster_id:t,export_id:o}),call:this.nfsService.delete(t,o)})})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Ul.Z),e.Y36(Ty),e.Y36(wE.j),e.Y36(Ll.P),e.Y36(ki.p4))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-nfs-list"]],viewQuery:function(t,o){if(1&t&&(e.Gf(ZO,5),e.Gf(jO,7),e.Gf(GO,7)),2&t){let c;e.iGM(c=e.CRH())&&(o.nfsState=c.first),e.iGM(c=e.CRH())&&(o.nfsFsal=c.first),e.iGM(c=e.CRH())&&(o.table=c.first)}},features:[e._Bn([wE.j]),e.qOj],decls:7,vars:7,consts:function(){let s,t;return s="CephFS",t="Object Gateway",[["columnMode","flex","identifier","id","forceIdentifier","true","selectionType","single",3,"data","columns","hasDetails","setExpandedRow","updateSelection"],["table",""],[1,"table-actions","btn-toolbar"],[1,"btn-group",3,"permission","selection","tableActions"],["cdTableDetail","",3,"selection"],["nfsFsal",""],[4,"ngIf"],s,t]},template:function(t,o){1&t&&(e.TgZ(0,"cd-table",0,1),e.NdJ("setExpandedRow",function(g){return o.setExpandedRow(g)})("updateSelection",function(g){return o.updateSelection(g)}),e.TgZ(2,"div",2),e._UZ(3,"cd-table-actions",3),e.qZA(),e._UZ(4,"cd-nfs-details",4),e.qZA(),e.YNc(5,IC,2,2,"ng-template",null,5,e.W1O)),2&t&&(e.Q6J("data",o.exports)("columns",o.columns)("hasDetails",!0),e.xp6(3),e.Q6J("permission",o.permission)("selection",o.selection)("tableActions",o.tableActions),e.xp6(1),e.Q6J("selection",o.expandedRow))},directives:[Hs.a,Xs.K,U1,_.O5],styles:[""]}),n})(),VO=(()=>{class n{constructor(t){this.route=t,this.route.queryParams.subscribe(o=>{this.fromLink=o.fromLink||n.defaultFromLink}),this.route.params.subscribe(o=>{this.serviceId=decodeURIComponent(o.id),this.serviceType=o.type})}}return n.defaultFromLink="/hosts",n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.gz))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-performance-counter"]],decls:3,vars:4,consts:[[3,"serviceType","serviceId"]],template:function(t,o){1&t&&(e.TgZ(0,"legend"),e._uU(1),e.qZA(),e._UZ(2,"cd-table-performance-counter",0)),2&t&&(e.xp6(1),e.AsE("",o.serviceType,".",o.serviceId,""),e.xp6(1),e.Q6J("serviceType",o.serviceType)("serviceId",o.serviceId))},directives:[cy.p],styles:[""]}),n})();var Vm=i(39219),Lv=i(33888),xE=i(32057);function zO(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,31),e.qZA())}function WO(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,32),e.qZA())}function FC(n,s){if(1&n&&e._UZ(0,"cd-helper",33),2&n){const t=e.oxw();e.s9C("html",t.passwordPolicyHelpText)}}function kC(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,34),e.qZA())}function $C(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,35),e.qZA())}function JO(n,s){if(1&n&&(e.TgZ(0,"span",30),e._uU(1),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.hij(" ",t.passwordValuation," ")}}function HC(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,36),e.qZA())}function QO(n,s){1&n&&(e.TgZ(0,"span",30),e.SDv(1,37),e.qZA())}let UC=(()=>{class n{constructor(t,o,c,g,C,D,P){this.actionLabels=t,this.notificationService=o,this.userService=c,this.authStorageService=g,this.formBuilder=C,this.router=D,this.passwordPolicyService=P,this.passwordPolicyHelpText="",this.icons=No.P,this.action=this.actionLabels.CHANGE,this.resource="password",this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({oldpassword:[null,[vn.kI.required,ds.h.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[vn.kI.required,ds.h.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[ds.h.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(t,o,c)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(o),this.passwordValuation=Ar().defaultTo(c,"")})]],confirmnewpassword:[null,[vn.kI.required]]},{validators:[ds.h.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const t=this.authStorageService.getUsername(),o=this.userForm.getValue("oldpassword"),c=this.userForm.getValue("newpassword");this.userService.changePassword(t,o,c).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(_a.k.success,"Updated user password\""),this.router.navigate(["/login"])}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(ll.g),e.Y36(xE.K),e.Y36(_t.j),e.Y36(id.O),e.Y36(Yo.F0),e.Y36(Lv.q))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-user-password-form"]],decls:48,vars:25,consts:function(){let s,t,o,c,g,C,D,P,j,W;return s="" + "\ufffd0\ufffd" + " " + "\ufffd1\ufffd" + "",t="Old password",o="New password",c="Confirm new password",g="This field is required.",C="The old and new passwords must be different.",D="This field is required.",P="The old and new passwords must be different.",j="This field is required.",W="Password confirmation doesn't match the new password.",[[1,"cd-col-form"],["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"card"],[1,"card-header"],s,[1,"card-body"],[1,"form-group","row"],["for","oldpassword",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],[1,"input-group"],["type","password","placeholder","Old password...","id","oldpassword","formControlName","oldpassword","autocomplete","new-password","autofocus","",1,"form-control"],[1,"input-group-append"],["cdPasswordButton","oldpassword",1,"btn","btn-light"],["class","invalid-feedback",4,"ngIf"],["for","newpassword",1,"cd-col-form-label"],[1,"required"],o,["class","text-pre-wrap",3,"html",4,"ngIf"],["type","password","placeholder","Password...","id","newpassword","autocomplete","new-password","formControlName","newpassword",1,"form-control"],["type","button","cdPasswordButton","newpassword",1,"btn","btn-light"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],["for","confirmnewpassword",1,"cd-col-form-label","required"],c,["type","password","autocomplete","new-password","placeholder","Confirm new password...","id","confirmnewpassword","formControlName","confirmnewpassword",1,"form-control"],["cdPasswordButton","confirmnewpassword",1,"btn","btn-light"],[1,"card-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],[1,"invalid-feedback"],g,C,[1,"text-pre-wrap",3,"html"],D,P,j,W]},template:function(t,o){if(1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"form",1,2),e.TgZ(3,"div",3),e.TgZ(4,"div",4),e.SDv(5,5),e.ALo(6,"titlecase"),e.ALo(7,"upperFirst"),e.qZA(),e.TgZ(8,"div",6),e.TgZ(9,"div",7),e.TgZ(10,"label",8),e.SDv(11,9),e.qZA(),e.TgZ(12,"div",10),e.TgZ(13,"div",11),e._UZ(14,"input",12),e.TgZ(15,"span",13),e._UZ(16,"button",14),e.qZA(),e.qZA(),e.YNc(17,zO,2,0,"span",15),e.YNc(18,WO,2,0,"span",15),e.qZA(),e.qZA(),e.TgZ(19,"div",7),e.TgZ(20,"label",16),e.TgZ(21,"span",17),e.SDv(22,18),e.qZA(),e.YNc(23,FC,1,1,"cd-helper",19),e.qZA(),e.TgZ(24,"div",10),e.TgZ(25,"div",11),e._UZ(26,"input",20),e.TgZ(27,"span",13),e._UZ(28,"button",21),e.qZA(),e.qZA(),e.TgZ(29,"div",22),e._UZ(30,"div",23),e.qZA(),e.YNc(31,kC,2,0,"span",15),e.YNc(32,$C,2,0,"span",15),e.YNc(33,JO,2,1,"span",15),e.qZA(),e.qZA(),e.TgZ(34,"div",7),e.TgZ(35,"label",24),e.SDv(36,25),e.qZA(),e.TgZ(37,"div",10),e.TgZ(38,"div",11),e._UZ(39,"input",26),e.TgZ(40,"span",13),e._UZ(41,"button",27),e.qZA(),e.qZA(),e.YNc(42,HC,2,0,"span",15),e.YNc(43,QO,2,0,"span",15),e.qZA(),e.qZA(),e.qZA(),e.TgZ(44,"div",28),e.TgZ(45,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.ALo(46,"titlecase"),e.ALo(47,"upperFirst"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const c=e.MAs(2);e.xp6(1),e.Q6J("formGroup",o.userForm),e.xp6(6),e.pQV(e.lcZ(6,17,o.action))(e.lcZ(7,19,o.resource)),e.QtT(5),e.xp6(10),e.Q6J("ngIf",o.userForm.showError("oldpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("oldpassword",c,"notmatch")),e.xp6(5),e.Q6J("ngIf",o.passwordPolicyHelpText.length>0),e.xp6(7),e.Tol(o.passwordStrengthLevelClass),e.s9C("title",o.passwordValuation),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"notmatch")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"passwordPolicy")),e.xp6(9),e.Q6J("ngIf",o.userForm.showError("confirmnewpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("confirmnewpassword",c,"match")),e.xp6(2),e.Q6J("form",o.userForm)("submitText",e.lcZ(46,21,o.action)+" "+e.lcZ(47,23,o.resource))}},directives:[vn._Y,vn.JL,vn.sg,tl.V,$a.P,ca.o,vn.Fj,Ha.b,vn.JJ,vn.u,N.U,u_.C,_.O5,nl.p,E.S],pipes:[_.rS,K.m],styles:[""]}),n})();function CR(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,18),e.qZA())}function MR(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,19),e.qZA())}function AR(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,20),e.qZA())}function OR(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,21),e.qZA())}function BC(n,s){if(1&n&&(e.TgZ(0,"span",17),e._uU(1),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.hij(" ",t.passwordValuation," ")}}function wy(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,22),e.qZA())}function XO(n,s){1&n&&(e.TgZ(0,"span",17),e.SDv(1,23),e.qZA())}let KO=(()=>{class n extends UC{constructor(t,o,c,g,C,D,P,j){super(t,o,c,g,C,D,P),this.actionLabels=t,this.notificationService=o,this.userService=c,this.authStorageService=g,this.formBuilder=C,this.router=D,this.passwordPolicyService=P,this.authService=j}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ki.p4),e.Y36(ll.g),e.Y36(xE.K),e.Y36(_t.j),e.Y36(id.O),e.Y36(Yo.F0),e.Y36(Lv.q),e.Y36(Vm.e))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-login-password-form"]],features:[e.qOj],decls:34,vars:19,consts:function(){let s,t,o,c,g,C,D,P;return s="Please set a new password.",t="You will be redirected to the login page afterwards.",o="This field is required.",c="The old and new passwords must be different.",g="This field is required.",C="The old and new passwords must be different.",D="This field is required.",P="Password confirmation doesn't match the new password.",[s,t,["novalidate","",3,"formGroup"],["frm","ngForm"],[1,"form-group","has-feedback"],[1,"input-group"],["type","password","placeholder","Old password...","id","oldpassword","formControlName","oldpassword","autocomplete","new-password","autofocus","",1,"form-control"],[1,"input-group-append"],["cdPasswordButton","oldpassword",1,"btn","btn-outline-light","btn-password"],["class","invalid-feedback",4,"ngIf"],["type","password","placeholder","New password...","id","newpassword","autocomplete","new-password","formControlName","newpassword",1,"form-control"],["type","button","cdPasswordButton","newpassword",1,"btn","btn-outline-light","btn-password"],[1,"password-strength-level"],["data-toggle","tooltip",3,"title"],["type","password","autocomplete","new-password","placeholder","Confirm new password...","id","confirmnewpassword","formControlName","confirmnewpassword",1,"form-control"],["cdPasswordButton","confirmnewpassword",1,"btn","btn-outline-light","btn-password"],["wrappingClass","text-right",3,"form","disabled","submitText","submitActionEvent","backActionEvent"],[1,"invalid-feedback"],o,c,g,C,D,P]},template:function(t,o){if(1&t&&(e.TgZ(0,"div"),e.TgZ(1,"h2"),e.SDv(2,0),e.qZA(),e.TgZ(3,"h4"),e.SDv(4,1),e.qZA(),e.TgZ(5,"form",2,3),e.TgZ(7,"div",4),e.TgZ(8,"div",5),e._UZ(9,"input",6),e.TgZ(10,"span",7),e._UZ(11,"button",8),e.qZA(),e.qZA(),e.YNc(12,CR,2,0,"span",9),e.YNc(13,MR,2,0,"span",9),e.qZA(),e.TgZ(14,"div",4),e.TgZ(15,"div",5),e._UZ(16,"input",10),e.TgZ(17,"span",7),e._UZ(18,"button",11),e.qZA(),e.qZA(),e.TgZ(19,"div",12),e._UZ(20,"div",13),e.qZA(),e.YNc(21,AR,2,0,"span",9),e.YNc(22,OR,2,0,"span",9),e.YNc(23,BC,2,1,"span",9),e.qZA(),e.TgZ(24,"div",4),e.TgZ(25,"div",5),e._UZ(26,"input",14),e.TgZ(27,"span",7),e._UZ(28,"button",15),e.qZA(),e.qZA(),e.YNc(29,wy,2,0,"span",9),e.YNc(30,XO,2,0,"span",9),e.qZA(),e.TgZ(31,"cd-form-button-panel",16),e.NdJ("submitActionEvent",function(){return o.onSubmit()})("backActionEvent",function(){return o.onCancel()}),e.ALo(32,"titlecase"),e.ALo(33,"upperFirst"),e.qZA(),e.qZA(),e.qZA()),2&t){const c=e.MAs(6);e.xp6(5),e.Q6J("formGroup",o.userForm),e.xp6(7),e.Q6J("ngIf",o.userForm.showError("oldpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("oldpassword",c,"notmatch")),e.xp6(7),e.Tol(o.passwordStrengthLevelClass),e.s9C("title",o.passwordValuation),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"notmatch")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("newpassword",c,"passwordPolicy")),e.xp6(6),e.Q6J("ngIf",o.userForm.showError("confirmnewpassword",c,"required")),e.xp6(1),e.Q6J("ngIf",o.userForm.showError("confirmnewpassword",c,"match")),e.xp6(1),e.Q6J("form",o.userForm)("disabled",o.userForm.invalid)("submitText",e.lcZ(32,15,o.action)+" "+e.lcZ(33,17,o.resource))}},directives:[vn._Y,vn.JL,vn.sg,tl.V,$a.P,ca.o,vn.Fj,Ha.b,vn.JJ,vn.u,N.U,u_.C,_.O5,nl.p],pipes:[_.rS,K.m],styles:["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .form-group{background-color:#2e373d;border-left:4px solid #fff}  cd-login-password-form .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{background-color:#2e373d;border:0;box-shadow:none;color:#f8f9fa;filter:none;outline:none}  cd-login-password-form .form-control::placeholder{color:#6c757d}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}@keyframes autofill{to{background-color:#2e373d;color:#f8f9fa}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-fill-mode:both;animation-name:autofill;border-radius:0;box-shadow:0 0 0 1000px #2e373d inset;-webkit-text-fill-color:#f8f9fa;-webkit-transition-property:none;transition-property:none}.invalid-feedback[_ngcontent-%COMP%]{padding-left:9px}.is-invalid.cd-form-control[_ngcontent-%COMP%]{border-color:transparent}"]}),n})();class YC{}function B1(n,s){1&n&&(e.TgZ(0,"div",20),e.SDv(1,21),e.qZA())}function qO(n,s){1&n&&(e.TgZ(0,"div",20),e.SDv(1,22),e.qZA())}function ew(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",1),e.TgZ(1,"form",2,3),e.NdJ("ngSubmit",function(){return e.CHM(t),e.oxw().login()}),e.TgZ(3,"div",4),e.TgZ(4,"label",5),e.SDv(5,6),e.qZA(),e.TgZ(6,"input",7,8),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().model.username=c}),e.qZA(),e.YNc(8,B1,2,0,"div",9),e.qZA(),e.TgZ(9,"div",10),e.TgZ(10,"div",11),e.TgZ(11,"div",12),e.TgZ(12,"label",13),e.SDv(13,14),e.qZA(),e.TgZ(14,"input",15,16),e.NdJ("ngModelChange",function(c){return e.CHM(t),e.oxw().model.password=c}),e.qZA(),e.YNc(16,qO,2,0,"div",9),e.qZA(),e.TgZ(17,"span",17),e._UZ(18,"button",18),e.qZA(),e.qZA(),e.qZA(),e._UZ(19,"input",19),e.qZA(),e.qZA()}if(2&n){const t=e.MAs(2),o=e.MAs(7),c=e.MAs(15),g=e.oxw();e.xp6(6),e.Q6J("ngModel",g.model.username),e.uIk("aria-invalid",o.invalid),e.xp6(2),e.Q6J("ngIf",(t.submitted||o.dirty)&&o.invalid),e.xp6(6),e.Q6J("ngModel",g.model.password),e.uIk("aria-invalid",c.invalid),e.xp6(2),e.Q6J("ngIf",(t.submitted||c.dirty)&&c.invalid),e.xp6(3),e.Q6J("disabled",t.invalid)}}let tw=(()=>{class n{constructor(t,o,c,g,C){this.authService=t,this.authStorageService=o,this.modalService=c,this.route=g,this.router=C,this.model=new YC,this.isLoginActive=!1,this.postInstalled=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{this.modalService.dismissAll();let t=null;if(-1!==window.location.hash.indexOf("access_token=")){t=window.location.hash.split("access_token=")[1];const o=window.location.toString();window.history.replaceState({},document.title,o.split("?")[0])}this.authService.check(t).subscribe(o=>{o.login_url?(this.postInstalled="POST_INSTALLED"===o.cluster_status,"#/login"===o.login_url?this.isLoginActive=!0:window.location.replace(o.login_url)):(this.authStorageService.set(o.username,o.permissions,o.sso,o.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{const t=this.postInstalled?"/":"/expand-cluster";let o=Ar().get(this.route.snapshot.queryParams,"returnUrl",t);!this.postInstalled&&"/dashboard"===this.route.snapshot.queryParams.returnUrl&&(o="/expand-cluster"),this.router.navigate([o])})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Vm.e),e.Y36(_t.j),e.Y36(Ul.Z),e.Y36(Yo.gz),e.Y36(Yo.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-login"]],decls:1,vars:1,consts:function(){let s,t,o,c,g;return s="Username",t="Password",o="Log in",c="Username is required",g="Password is required",[["class","container",4,"ngIf"],[1,"container"],["name","loginForm","novalidate","",3,"ngSubmit"],["loginForm","ngForm"],[1,"form-group","has-feedback","d-flex","flex-column","py-3"],["for","username",1,"placeholder","pl-4"],s,["id","username","name","username","type","text","aria-labelledby","username","required","","autofocus","",1,"form-control","pl-4",3,"ngModel","ngModelChange"],["username","ngModel"],["class","invalid-feedback pl-4",4,"ngIf"],["id","password-div",1,"form-group","has-feedback"],[1,"input-group","d-flex","flex-nowrap"],[1,"d-flex","flex-column","flex-grow-1","py-3"],["for","password",1,"placeholder","pl-4"],t,["id","password","name","password","type","password","aria-labelledby","password","required","",1,"form-control","pl-4",3,"ngModel","ngModelChange"],["password","ngModel"],[1,"form-group-append"],["type","button","cdPasswordButton","password",1,"btn","btn-outline-light","btn-password","h-100","px-4"],["type","submit","value",o,1,"btn","btn-accent","px-5","py-2",3,"disabled"],[1,"invalid-feedback","pl-4"],c,g]},template:function(t,o){1&t&&e.YNc(0,ew,20,7,"div",0),2&t&&e.Q6J("ngIf",o.isLoginActive)},directives:[_.O5,vn._Y,vn.JL,vn.F,$a.P,ca.o,vn.Fj,Ha.b,vn.Q7,N.U,vn.JJ,vn.On,u_.C],styles:["cd-login .form-group{background-color:#2e373d;border-left:4px solid #fff;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{background-color:#2e373d;border:0;box-shadow:none;color:#f8f9fa;filter:none;outline:none}  cd-login .placeholder{color:#6c757d}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{background-color:#2e373d;color:#f8f9fa}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-fill-mode:both;animation-name:autofill;border-radius:0;box-shadow:0 0 0 1000px #2e373d inset;-webkit-text-fill-color:#f8f9fa;-webkit-transition-property:none;transition-property:none}"]}),n})();var ZC=i(72625);function nw(n,s){if(1&n&&(e.TgZ(0,"h4",14),e._uU(1),e.qZA()),2&n){const t=e.oxw(2);e.xp6(1),e.Oqu(t.message)}}function jC(n,s){if(1&n&&(e.TgZ(0,"h4"),e.tHW(1,15),e._UZ(2,"a",16),e.N_p(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(2),e.s9C("href",t.docUrl,e.LSH),e.pQV(t.sectionInfo),e.QtT(1)}}function rw(n,s){if(1&n&&(e.TgZ(0,"div"),e._UZ(1,"i",10),e.TgZ(2,"div",11),e.TgZ(3,"h3"),e.TgZ(4,"b"),e._uU(5),e.qZA(),e.qZA(),e.YNc(6,nw,2,1,"h4",12),e.YNc(7,jC,3,2,"h4",13),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngClass",t.icon),e.xp6(4),e.Oqu(t.header),e.xp6(1),e.Q6J("ngIf",t.header!==t.message),e.xp6(1),e.Q6J("ngIf",t.section)}}function iw(n,s){if(1&n&&(e.TgZ(0,"button",19),e.SDv(1,20),e.qZA()),2&n){const t=e.oxw(2);e.Q6J("routerLink",t.buttonRoute),e.xp6(1),e.pQV(t.buttonName),e.QtT(1)}}function Fv(n,s){if(1&n&&(e.TgZ(0,"div",17),e.YNc(1,iw,2,2,"button",18),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(11);e.xp6(1),e.Q6J("ngIf",!t.uiConfig)("ngIfElse",o)}}function ow(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"button",22),e.NdJ("click",function(){return e.CHM(t),e.oxw(2).doConfigure()}),e.SDv(1,23),e.qZA()}if(2&n){const t=e.oxw(2);e.uIk("title",t.buttonTitle),e.xp6(1),e.pQV(t.buttonName),e.QtT(1)}}function GC(n,s){if(1&n&&e.YNc(0,ow,2,2,"button",21),2&n){const t=e.oxw();e.Q6J("ngIf",t.uiConfig)}}function sw(n,s){1&n&&(e._UZ(0,"i",24),e.TgZ(1,"div",11),e.TgZ(2,"h3"),e.tHW(3,25),e._UZ(4,"b"),e.N_p(),e.qZA(),e.TgZ(5,"h4",5),e.SDv(6,26),e.qZA(),e.qZA())}function VC(n,s){1&n&&(e.TgZ(0,"div",11),e.TgZ(1,"button",19),e.SDv(2,27),e.qZA(),e.qZA()),2&n&&(e.xp6(1),e.Q6J("routerLink","/dashboard"))}let aw=(()=>{class n{constructor(t,o,c,g){this.router=t,this.docService=o,this.http=c,this.notificationService=g}ngOnInit(){this.fetchData(),this.routerSubscription=this.router.events.pipe((0,tp.h)(t=>t instanceof Yo.m2)).subscribe(()=>{this.fetchData()})}doConfigure(){this.http.post(`ui-api/${this.uiApiPath}/configure`,{}).subscribe({next:()=>{this.notificationService.show(_a.k.info,`Configuring ${this.component}`)},error:t=>{this.notificationService.show(_a.k.error,t)},complete:()=>{setTimeout(()=>{this.router.navigate([this.uiApiPath]),this.notificationService.show(_a.k.success,`Configured ${this.component}`)},3e3)}})}unloadHandler(t){t.returnValue=!1}fetchData(){try{this.router.onSameUrlNavigation="reload",this.message=history.state.message,this.header=history.state.header,this.section=history.state.section,this.section_info=history.state.section_info,this.button_name=history.state.button_name,this.button_route=history.state.button_route,this.icon=history.state.icon,this.source=history.state.source,this.uiConfig=history.state.uiConfig,this.uiApiPath=history.state.uiApiPath,this.buttonRoute=history.state.button_route,this.buttonName=history.state.button_name,this.buttonTitle=history.state.button_title,this.component=history.state.component,this.docUrl=this.docService.urlGenerator(this.section)}catch(t){this.router.navigate(["/error"])}}ngOnDestroy(){this.routerSubscription&&this.routerSubscription.unsubscribe()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(ZC.R),e.Y36(y.eN),e.Y36(ll.g))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-error"]],hostBindings:function(t,o){1&t&&e.NdJ("beforeunload",function(g){return o.unloadHandler(g)},!1,e.Jf7)},decls:16,vars:4,consts:function(){let s,t,o,c,g,C;return s="Please consult the " + "\ufffd#2\ufffd" + "documentation" + "\ufffd/#2\ufffd" + " on how to configure and enable the " + "\ufffd0\ufffd" + " management functionality. ",t="" + "\ufffd0\ufffd" + "",o="" + "\ufffd0\ufffd" + "",c="" + "\ufffd#4\ufffd" + "Page not Found" + "\ufffd/#4\ufffd" + "",g="Sorry, we couldn\u2019t find what you were looking for. The page you requested may have been changed or moved.",C="Go To Dashboard",[["target","_blank"],[1,"container","h-75"],[1,"row","h-100","justify-content-center","align-items-center"],[1,"blank-page"],[4,"ngIf","ngIfElse"],[1,"mt-4"],["class","text-center",4,"ngIf","ngIfElse"],["configureButtonTpl",""],["elseBlock",""],["dashboardButton",""],[1,"mx-auto","d-block",3,"ngClass"],[1,"mt-4","text-center"],["class","mt-3",4,"ngIf"],[4,"ngIf"],[1,"mt-3"],s,[3,"href"],[1,"text-center"],["class","btn btn-primary",3,"routerLink",4,"ngIf","ngIfElse"],[1,"btn","btn-primary",3,"routerLink"],t,["class","btn btn-primary",3,"click",4,"ngIf"],[1,"btn","btn-primary",3,"click"],o,[1,"fa","fa-exclamation-triangle","mx-auto","d-block","text-danger"],c,g,C]},template:function(t,o){if(1&t&&(e.TgZ(0,"head"),e.TgZ(1,"title"),e._uU(2,"Error Page"),e.qZA(),e._UZ(3,"base",0),e.qZA(),e.TgZ(4,"div",1),e.TgZ(5,"div",2),e.TgZ(6,"div",3),e.YNc(7,rw,8,4,"div",4),e.TgZ(8,"div",5),e.YNc(9,Fv,2,2,"div",6),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.YNc(10,GC,1,1,"ng-template",null,7,e.W1O),e.YNc(12,sw,7,0,"ng-template",null,8,e.W1O),e.YNc(14,VC,3,1,"ng-template",null,9,e.W1O)),2&t){const c=e.MAs(13),g=e.MAs(15);e.xp6(7),e.Q6J("ngIf",o.header&&o.message)("ngIfElse",c),e.xp6(2),e.Q6J("ngIf",o.buttonName&&o.buttonRoute||o.uiConfig)("ngIfElse",g)}},directives:[_.O5,_.mk,ca.o,Yo.rH],styles:["h4[_ngcontent-%COMP%]{color:#495057}i[_ngcontent-%COMP%]{font-size:6em;margin-top:120px}.fa-lock[_ngcontent-%COMP%]{color:#ef5c55}.fa-wrench[_ngcontent-%COMP%]{color:#2b99a8}"]}),n})(),zC=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-blank-layout"]],decls:1,vars:0,template:function(t,o){1&t&&e._UZ(0,"router-outlet")},directives:[Yo.lC],styles:[""]}),n})();var WC=i(92340);let DE=(()=>{class n{constructor(t,o){this.http=t,this.localeId=o}getLocale(){return this.localeId||WC.N.default_lang}setLocale(t){document.cookie=`cd-lang=${t}`}getLanguages(){return this.http.get("ui-api/langs")}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN),e.LFG(e.soG))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var Y1=(()=>{return(n=Y1||(Y1={})).cs="\u010ce\u0161tina",n.de="Deutsch",n["en-US"]="English",n.es="Espa\xf1ol",n.fr="Fran\xe7ais",n.id="Bahasa Indonesia",n.it="Italiano",n.ja="\u65e5\u672c\u8a9e",n.ko="\ud55c\uad6d\uc5b4",n.pl="Polski",n.pt="Portugu\xeas (brasileiro)",n["zh-Hans"]="\u4e2d\u6587 (\u7b80\u4f53)",n["zh-Hant"]="\u4e2d\u6587 (\u7e41\u9ad4\uff09",Y1;var n})();function JC(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"button",4),e.NdJ("click",function(){const g=e.CHM(t).$implicit;return e.oxw().changeLanguage(g.key)}),e._uU(2),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit;e.xp6(2),e.hij(" ",t.value," ")}}let RE=(()=>{class n{constructor(t){this.languageService=t,this.allLanguages=Y1,this.supportedLanguages={}}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.languageService.getLanguages().subscribe(t=>{this.supportedLanguages=Ar().pick(Y1,t)})}reloadWindow(){window.location.reload()}changeLanguage(t){this.languageService.setLocale(t),this.reloadWindow()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(DE))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-language-selector"]],decls:6,vars:4,consts:function(){let s;return s="Select a Language",[["ngbDropdown","","display","dynamic","placement","bottom-right"],["ngbDropdownToggle","","title",s],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["ngbDropdownItem","",3,"click"]]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._uU(2),e.qZA(),e.TgZ(3,"div",2),e.YNc(4,JC,3,1,"ng-container",3),e.ALo(5,"keyvalue"),e.qZA(),e.qZA()),2&t&&(e.xp6(2),e.hij(" ",o.allLanguages[o.selectedLanguage]," "),e.xp6(2),e.Q6J("ngForOf",e.lcZ(5,2,o.supportedLanguages)))},directives:[lt.jt,lt.iD,lt.Vi,_.sg,ca.o,lt.TH],pipes:[_.Nd],styles:[""]}),n})(),lw=(()=>{class n{constructor(t){this.http=t,this.baseUiURL="ui-api/login/custom_banner"}getBannerText(){return this.http.get(this.baseUiURL)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function uw(n,s){if(1&n&&(e.TgZ(0,"p",1),e._uU(1),e.qZA()),2&n){const t=s.ngIf;e.xp6(1),e.Oqu(t)}}let cw=(()=>{class n{constructor(t){this.customLoginBannerService=t}ngOnInit(){this.bannerText$=this.customLoginBannerService.getBannerText()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lw))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-custom-login-banner"]],decls:2,vars:3,consts:[["class","login-text",4,"ngIf"],[1,"login-text"]],template:function(t,o){1&t&&(e.YNc(0,uw,2,1,"p",0),e.ALo(1,"async")),2&t&&e.Q6J("ngIf",e.lcZ(1,1,o.bannerText$))},directives:[_.O5],pipes:[_.Ov],styles:[".login-text[_ngcontent-%COMP%]{font-weight:bold;margin:0;padding:12px 20% 12px 12px}"]}),n})();function NE(n,s){if(1&n&&(e.TgZ(0,"li",11),e.TgZ(1,"cd-doc",12),e.DtL(2,13),e.qZA(),e.qZA()),2&n){const t=s.$implicit;e.xp6(1),e.pQV(t.text),e.QtT(2),e.s9C("section",t.section)}}let dw=(()=>{class n{constructor(){this.docItems=[{section:"help",text:"Help"},{section:"security",text:"Security"},{section:"trademarks",text:"Trademarks"}]}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-login-layout"]],decls:16,vars:1,consts:function(){let s;return s="" + "\ufffd0\ufffd" + "",[[1,"login","full-height"],[1,"navbar","p-4"],[1,"navbar-brand"],[1,"form-inline"],[1,"container"],[1,"row","full-height"],[1,"col-sm-12","col-md-6","d-sm-block","login-form"],[1,"col-sm-12","col-md-6","d-sm-block","branding-info"],["src","assets/Ceph_Ceph_Logo_with_text_white.svg","alt","Ceph",1,"img-fluid","pb-3"],[1,"list-inline"],["class","list-inline-item p-3",4,"ngFor","ngForOf"],[1,"list-inline-item","p-3"],["noSubscribe","true",3,"section",6,"docText"],["docText",s]]},template:function(t,o){1&t&&(e.TgZ(0,"main",0),e.TgZ(1,"header"),e.TgZ(2,"nav",1),e._UZ(3,"a",2),e.TgZ(4,"div",3),e._UZ(5,"cd-language-selector"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(6,"section"),e.TgZ(7,"div",4),e.TgZ(8,"div",5),e.TgZ(9,"div",6),e._UZ(10,"router-outlet"),e.qZA(),e.TgZ(11,"div",7),e._UZ(12,"img",8),e.TgZ(13,"ul",9),e.YNc(14,NE,3,2,"li",10),e.qZA(),e._UZ(15,"cd-custom-login-banner"),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(14),e.Q6J("ngForOf",o.docItems))},directives:[lt.M2,RE,Yo.lC,_.sg,cw,ol.K],styles:["cd-login-layout .login{background-color:#374249;background-image:url(ceph_background.e82dd79127290ddbe8cb.gif);background-position:right bottom;background-repeat:no-repeat;color:#f8f9fa}  cd-login-layout .login header{position:absolute;width:100vw}  cd-login-layout .login header .navbar .dropdown-menu{margin-top:.2rem}  cd-login-layout .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  cd-login-layout .login section{display:inline-flex;min-height:100vh;width:100vw}  cd-login-layout .login .list-inline{margin-bottom:0;margin-left:20%}  cd-login-layout .login a{color:#fff}  cd-login-layout .login a:hover{color:#adb5bd}@media screen and (min-width: 576px){  cd-login-layout .login .login-form,   cd-login-layout .login .branding-info{padding-top:30vh}}@media screen and (max-width: calc(768px - 1px)){  cd-login-layout .login .login-form{padding-top:10vh}  cd-login-layout .login .branding-info{padding-top:0}}"]}),n})();var zm=i(74255);let QC=(()=>{class n{constructor(t,o,c){this.document=t,this.summaryService=o,this.cssHelper=c}init(){var t;this.url=null===(t=this.document.getElementById("cdFavicon"))||void 0===t?void 0:t.getAttribute("href"),this.sub=this.summaryService.subscribe(o=>{this.changeIcon(o.health_status)})}changeIcon(t){if(t===this.oldStatus)return;this.oldStatus=t;const o=this.document.getElementById("cdFavicon"),C=this.document.createElement("canvas");C.width=16,C.height=16;const D=C.getContext("2d"),P=this.document.createElement("img");P.src=this.url,P.onload=()=>{D.drawImage(P,0,0,16,16),Object.keys(rm).includes(t)&&(D.save(),D.globalCompositeOperation="destination-out",D.beginPath(),D.arc(C.width-4,4,6,0,2*Math.PI),D.fill(),D.restore(),D.beginPath(),D.arc(C.width-4,4,4,0,2*Math.PI),D.fillStyle=this.cssHelper.propertyValue(rm[t]),D.fill()),o.setAttribute("href",C.toDataURL("image/png"))}}ngOnDestroy(){var t;this.changeIcon(),null===(t=this.sub)||void 0===t||t.unsubscribe()}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(_.K0),e.LFG(zm.J),e.LFG(Rv.P))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})();var fw=i(71099),XC=i(59193),pw=i(68307);class KC{constructor(s,t){this.count=s,this.source=t}call(s,t){return t.subscribe(new _w(s,this.count,this.source))}}class _w extends fd.L{constructor(s,t,o){super(s),this.count=t,this.source=o}complete(){if(!this.isStopped){const{source:s,count:t}=this;if(0===t)return super.complete();t>-1&&(this.count=t-1),s.subscribe(this._unsubscribeAndRecycle())}}}var gw=i(49083);let PE=(()=>{class n{constructor(t){this.http=t,this.url="ui-api/motd"}get(){return this.http.get(this.url)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),xy=(()=>{class n{constructor(t){this.motdService=t,this.motdSource=new Nd.X(null),this.localStorageKey="dashboard_motd_hidden",this.motd$=this.motdSource.asObservable(),this.subscription=(0,zc.of)(!0).pipe((0,Uu.zg)(()=>this.motdService.get()),(0,Pv.K)(o=>(du.isFunction(o.preventDefault)&&o.preventDefault(),XC.E)),(0,pw.b)(o=>this.processResponse(o)),(0,vp.g)(6e4),function(n=-1){return s=>0===n?(0,XC.c)():s.lift(new KC(n<0?-1:n-1,s))}(),(0,gw.r)()).subscribe()}ngOnDestroy(){this.subscription.unsubscribe()}hide(){const t=this.motdSource.getValue();if(t){const o=`${t.severity}:${t.md5}`;switch(t.severity){case"info":localStorage.setItem(this.localStorageKey,o),sessionStorage.removeItem(this.localStorageKey);break;case"warning":sessionStorage.setItem(this.localStorageKey,o),localStorage.removeItem(this.localStorageKey)}}this.motdSource.next(null)}processResponse(t){const o=sessionStorage.getItem(this.localStorageKey)||localStorage.getItem(this.localStorageKey);let c=du.isNull(o);if(!c&&t){const[g,C]=o.split(":");(g!==t.severity||C!==t.md5)&&(c=!0,sessionStorage.removeItem(this.localStorageKey),localStorage.removeItem(this.localStorageKey))}c&&this.motdSource.next(t)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(PE))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var qC=i(51907);function eM(n,s){1&n&&(e.TgZ(0,"div"),e.tHW(1,3),e._UZ(2,"strong"),e._UZ(3,"a",4),e.N_p(),e.qZA())}function IE(n,s){if(1&n&&(e.TgZ(0,"div"),e.tHW(1,5),e._UZ(2,"strong"),e._UZ(3,"a",4),e.N_p(),e.qZA()),2&n){const t=e.oxw(2);e.xp6(3),e.pQV(t.expirationDays),e.QtT(1)}}function tM(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(t),e.oxw().onDismissed()}),e.YNc(1,eM,4,0,"div",2),e.YNc(2,IE,4,1,"div",2),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("type",t.alertType)("showTitle",!1)("dismissible","danger"!==t.alertType),e.xp6(1),e.Q6J("ngIf",0===t.expirationDays),e.xp6(1),e.Q6J("ngIf",t.expirationDays>0)}}let nM=(()=>{class n{constructor(t,o){this.settingsService=t,this.authStorageService=o,this.displayNotification=!1}ngOnInit(){this.settingsService.getStandardSettings().subscribe(t=>{this.pwdExpirationSettings=new qC.G(t);const o=this.authStorageService.getPwdExpirationDate();o&&(this.expirationDays=this.getExpirationDays(o),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.displayNotification=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning1,this.authStorageService.isPwdDisplayedSource.next(this.displayNotification))})}ngOnDestroy(){this.authStorageService.isPwdDisplayedSource.next(!1)}getExpirationDays(t){const o=new Date,c=new Date(1e3*t);return Math.floor((c.valueOf()-o.valueOf())/864e5)}onDismissed(){this.authStorageService.isPwdDisplayedSource.next(!1),this.displayNotification=!1}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(L1.g),e.Y36(_t.j))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-pwd-expiration-notification"]],decls:1,vars:1,consts:function(){let s,t;return s="Your password will expire in " + "\ufffd#2\ufffd" + "less than 1" + "\ufffd/#2\ufffd" + " day. Click " + "\ufffd#3\ufffd" + "here" + "\ufffd/#3\ufffd" + " to change it now.",t="Your password will expire in " + "\ufffd#2\ufffd" + "" + "\ufffd0\ufffd" + "" + "\ufffd/#2\ufffd" + " day(s). Click " + "\ufffd#3\ufffd" + "here" + "\ufffd/#3\ufffd" + " to change it now.",[["class","no-margin-bottom","size","slim",3,"type","showTitle","dismissible","dismissed",4,"ngIf"],["size","slim",1,"no-margin-bottom",3,"type","showTitle","dismissible","dismissed"],[4,"ngIf"],s,["routerLink","/user-profile/edit",1,"alert-link"],t]},template:function(t,o){1&t&&e.YNc(0,tM,3,5,"cd-alert-panel",0),2&t&&e.Q6J("ngIf",o.displayNotification)},directives:[_.O5,Jt.G,Yo.yS],styles:[".no-margin-bottom[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})();function mw(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(t),e.oxw().onDismissed()}),e.TgZ(1,"div"),e.tHW(2,2),e._UZ(3,"a",3),e._UZ(4,"a",4),e.N_p(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("showTitle",!1)("type",t.notificationSeverity)("dismissible","danger"!==t.notificationSeverity)}}let LE=(()=>{class n{constructor(t,o,c,g){this.mgrModuleService=t,this.authStorageService=o,this.notificationService=c,this.telemetryNotificationService=g,this.displayNotification=!1,this.notificationSeverity="warning"}ngOnInit(){if(this.telemetryNotificationService.update.subscribe(t=>{this.displayNotification=t}),!this.isNotificationHidden()){const t=this.authStorageService.getPermissions().configOpt;Ar().every(Object.values(t))&&this.mgrModuleService.getConfig("telemetry").subscribe(o=>{o.enabled||this.telemetryNotificationService.setVisibility(!0)})}}ngOnDestroy(){this.telemetryNotificationService.setVisibility(!1)}isNotificationHidden(){return"true"===localStorage.getItem("telemetry_notification_hidden")}onDismissed(){this.telemetryNotificationService.setVisibility(!1),localStorage.setItem("telemetry_notification_hidden","true"),this.notificationService.show(_a.k.success,"Telemetry activation reminder muted","You can activate the module on the Telemetry configuration page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time.")}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Bc.N),e.Y36(_t.j),e.Y36(ll.g),e.Y36(rE))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-telemetry-notification"]],decls:1,vars:1,consts:function(){let s;return s="The Ceph community needs your help to continue improving: please " + "\ufffd#3\ufffd" + "Activate" + "[\ufffd/#3\ufffd|\ufffd/#4\ufffd]" + " the " + "\ufffd#4\ufffd" + "Telemetry" + "[\ufffd/#3\ufffd|\ufffd/#4\ufffd]" + " module.",s=e.Zx4(s),[["class","no-margin-bottom","size","slim",3,"showTitle","type","dismissible","dismissed",4,"ngIf"],["size","slim",1,"no-margin-bottom",3,"showTitle","type","dismissible","dismissed"],s,["routerLink","/telemetry",1,"btn","activate-button","alert-link","activate-text"],["href","https://docs.ceph.com/en/latest/mgr/telemetry/"]]},template:function(t,o){1&t&&e.YNc(0,mw,5,3,"cd-alert-panel",0),2&t&&e.Q6J("ngIf",o.displayNotification)},directives:[_.O5,Jt.G,Yo.yS],styles:[".no-margin-bottom[_ngcontent-%COMP%]{margin-bottom:0}.activate-button[_ngcontent-%COMP%]{background-color:#fcecba;border:#495057 solid .5px;border-radius:10%;padding:.1rem .4rem}.activate-text[_ngcontent-%COMP%]{color:#495057;font-weight:bold}"]}),n})();var FE=i(60793);function rM(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-alert-panel",1),e.NdJ("dismissed",function(){return e.CHM(t),e.oxw().onDismissed()}),e._UZ(1,"span",2),e.ALo(2,"sanitizeHtml"),e.qZA()}if(2&n){const t=e.oxw();e.Q6J("showTitle",!1)("type",t.motd.severity)("dismissible","danger"!==t.motd.severity),e.xp6(1),e.Q6J("innerHTML",e.lcZ(2,4,t.motd.message),e.oJD)}}let kE=(()=>{class n{constructor(t){this.motdNotificationService=t,this.motd=void 0}ngOnInit(){this.subscription=this.motdNotificationService.motd$.subscribe(t=>{this.motd=t})}ngOnDestroy(){this.subscription.unsubscribe()}onDismissed(){this.motdNotificationService.hide()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(xy))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-motd"]],decls:1,vars:1,consts:[["size","slim",3,"showTitle","type","dismissible","dismissed",4,"ngIf"],["size","slim",3,"showTitle","type","dismissible","dismissed"],[3,"innerHTML"]],template:function(t,o){1&t&&e.YNc(0,rM,3,6,"cd-alert-panel",0),2&t&&e.Q6J("ngIf",o.motd)},directives:[_.O5,Jt.G],pipes:[FE.A],styles:[""]}),n})();class yw{constructor(s){if(this._maxConcurrency=s,this._queue=[],s<=0)throw new Error("semaphore must be initialized to a positive value");this._value=s}acquire(){const s=this.isLocked(),t=new Promise(o=>this._queue.push(o));return s||this._dispatch(),t}runExclusive(s){return function(n,s,t,o){return new(t||(t=Promise))(function(g,C){function D(W){try{j(o.next(W))}catch(re){C(re)}}function P(W){try{j(o.throw(W))}catch(re){C(re)}}function j(W){W.done?g(W.value):function(g){return g instanceof t?g:new t(function(C){C(g)})}(W.value).then(D,P)}j((o=o.apply(n,s||[])).next())})}(this,void 0,void 0,function*(){const[t,o]=yield this.acquire();try{return yield s(t)}finally{o()}})}isLocked(){return this._value<=0}release(){if(this._maxConcurrency>1)throw new Error("this method is unavailabel on semaphores with concurrency > 1; use the scoped release returned by acquire instead");this._currentReleaser&&(this._currentReleaser(),this._currentReleaser=void 0)}_dispatch(){const s=this._queue.shift();if(!s)return;let t=!1;this._currentReleaser=()=>{t||(t=!0,this._value++,this._dispatch())},s([this._value--,this._currentReleaser])}}class bw{constructor(){this._semaphore=new yw(1)}acquire(){return function(n,s,t,o){return new(t||(t=Promise))(function(g,C){function D(W){try{j(o.next(W))}catch(re){C(re)}}function P(W){try{j(o.throw(W))}catch(re){C(re)}}function j(W){W.done?g(W.value):function(g){return g instanceof t?g:new t(function(C){C(g)})}(W.value).then(D,P)}j((o=o.apply(n,s||[])).next())})}(this,void 0,void 0,function*(){const[,s]=yield this._semaphore.acquire();return s})}runExclusive(s){return this._semaphore.runExclusive(()=>s())}isLocked(){return this._semaphore.isLocked()}release(){this._semaphore.release()}}let iM=(()=>{class n{constructor(t,o){this.alertFormatter=t,this.prometheusService=o,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(Ar().last(this.notifications)).subscribe(t=>this.handleNotifications(t),()=>this.backendFailure=!0)}handleNotifications(t){0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(Ar().flatten(t.map(o=>this.formatNotification(o)))),this.notifications=this.notifications.concat(t))}formatNotification(t){return this.alertFormatter.convertToCustomAlerts(t.alerts).map(o=>this.alertFormatter.convertAlertToNotification(o))}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(F1),e.LFG(rg))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var oM=i(68879),sM=i(11971),aM=i(34863);const UE=function(n,s){return[n,s]},kv=function(n,s,t,o){return[n,s,t,o]};function wR(n,s){if(1&n&&(e.TgZ(0,"div"),e.TgZ(1,"div",12),e.TgZ(2,"div",13),e.TgZ(3,"div",14),e.TgZ(4,"span",15),e._UZ(5,"i",7),e._UZ(6,"i",7),e.qZA(),e.qZA(),e.TgZ(7,"div",16),e.TgZ(8,"div",17),e.TgZ(9,"h6",18),e._uU(10),e.qZA(),e.TgZ(11,"div",19),e._UZ(12,"ngb-progressbar",20),e.qZA(),e.TgZ(13,"p",21),e.TgZ(14,"small",22),e._uU(15),e.ALo(16,"cdDate"),e.qZA(),e.TgZ(17,"span",23),e._uU(18),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e._UZ(19,"hr"),e.qZA()),2&n){const t=s.$implicit,o=e.oxw(2);e.xp6(4),e.Q6J("ngClass",e.WLB(11,UE,o.icons.stack,o.icons.large2x)),e.xp6(1),e.Q6J("ngClass",e.WLB(14,UE,o.icons.stack2x,o.icons.circle)),e.xp6(1),e.Q6J("ngClass",e.l5B(17,kv,o.icons.stack1x,o.icons.spinner,o.icons.spin,o.icons.inverse)),e.xp6(4),e.Oqu(t.description),e.xp6(2),e.Q6J("value",null==t?null:t.progress)("striped",!0)("animated",!0),e.xp6(3),e.hij(" ",e.lcZ(16,9,t.begin_time)," "),e.xp6(3),e.hij(" ",t.progress||0," % ")}}function BE(n,s){if(1&n&&e.YNc(0,wR,20,22,"div",11),2&n){const t=e.oxw();e.Q6J("ngForOf",t.executingTasks)("ngForTrackBy",t.trackByFn)}}function Dy(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"small"),e.ynx(2),e.SDv(3,35),e.BQk(),e._uU(4),e.ALo(5,"duration"),e.qZA(),e._UZ(6,"br"),e.BQk()),2&n){const t=e.oxw().$implicit;e.xp6(4),e.hij(" ",e.lcZ(5,1,t.duration)," ")}}const lM=function(n,s,t){return[n,s,t]},im=function(n){return[n]};function Tw(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"div",7),e.TgZ(1,"div",29),e.TgZ(2,"div",13),e.TgZ(3,"div",14),e.TgZ(4,"span",7),e._UZ(5,"i",7),e._UZ(6,"i",7),e.qZA(),e.qZA(),e.TgZ(7,"div",30),e.TgZ(8,"div",17),e.TgZ(9,"button",31),e.NdJ("click",function(c){const C=e.CHM(t).index;return e.oxw(3).remove(C),c.stopPropagation()}),e._UZ(10,"i",7),e.qZA(),e.TgZ(11,"h6",18),e._uU(12),e.qZA(),e._UZ(13,"p",32),e.TgZ(14,"p",21),e.YNc(15,Dy,7,3,"ng-container",24),e.TgZ(16,"small",33),e.ALo(17,"cdDate"),e._uU(18),e.ALo(19,"relativeDate"),e.qZA(),e._UZ(20,"i",34),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e._UZ(21,"hr"),e.qZA()}if(2&n){const t=s.$implicit,o=e.oxw(3);e.Q6J("ngClass",t.borderClass),e.xp6(4),e.Q6J("ngClass",e.kEZ(16,lM,o.icons.stack,o.icons.large2x,t.textClass)),e.xp6(1),e.Q6J("ngClass",e.WLB(20,UE,o.icons.circle,o.icons.stack2x)),e.xp6(1),e.Q6J("ngClass",e.kEZ(23,lM,o.icons.stack1x,o.icons.inverse,t.iconClass)),e.xp6(4),e.Q6J("ngClass",e.VKq(27,im,o.icons.trash)),e.xp6(2),e.Oqu(t.title),e.xp6(1),e.Q6J("innerHtml",t.message,e.oJD),e.xp6(2),e.Q6J("ngIf",t.duration),e.xp6(1),e.Q6J("title",e.lcZ(17,12,t.timestamp)),e.xp6(2),e.Oqu(e.lcZ(19,14,t.timestamp)),e.xp6(2),e.Q6J("ngClass",e.VKq(29,im,t.applicationClass))("title",t.application)}}function xR(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"button",25),e.NdJ("click",function(c){return e.CHM(t),e.oxw(2).removeAll(),c.stopPropagation()}),e._UZ(2,"i",26),e._uU(3," \xa0 "),e.ynx(4),e.SDv(5,27),e.BQk(),e.qZA(),e._UZ(6,"hr"),e.YNc(7,Tw,22,31,"div",28),e.BQk()}if(2&n){const t=e.oxw(2);e.xp6(2),e.Q6J("ngClass",e.VKq(2,im,t.icons.trash)),e.xp6(5),e.Q6J("ngForOf",t.notifications)}}function Sw(n,s){if(1&n&&e.YNc(0,xR,8,4,"ng-container",24),2&n){const t=e.oxw();e.Q6J("ngIf",t.notifications.length>0)}}function sg(n,s){1&n&&(e.TgZ(0,"div"),e.TgZ(1,"div",36),e.SDv(2,37),e.qZA(),e.qZA())}function uM(n,s){if(1&n&&e.YNc(0,sg,3,0,"div",24),2&n){const t=e.oxw();e.Q6J("ngIf",0===t.notifications.length&&0===t.executingTasks.length)}}function DR(n,s){1&n&&e.GkF(0)}function Ry(n,s){1&n&&e.GkF(0)}function Cw(n,s){1&n&&e.GkF(0)}let Mw=(()=>{class n{constructor(t,o,c,g,C,D,P,j){this.notificationService=t,this.summaryService=o,this.taskMessageService=c,this.prometheusNotificationService=g,this.authStorageService=C,this.prometheusAlertService=D,this.ngZone=P,this.cdRef=j,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new gu.w,this.icons=No.P,this.last_task="",this.mutex=new bw,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const t=this.authStorageService.getPermissions();t.prometheus.read&&t.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(o=>{this.notifications=Ar().orderBy(o,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(o=>{this.isSidebarOpened=!o&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(o=>{this._handleTasks(o.executing_tasks),this.mutex.acquire().then(c=>{Ar().filter(o.finished_tasks,g=>!this.last_task||oi()(g.end_time).isAfter(this.last_task)).forEach(g=>{const C=this.notificationService.finishedTaskToNotification(g,g.success),D=new wv.e(C);D.timestamp=g.end_time,D.duration=g.duration,(!this.last_task||oi()(g.end_time).isAfter(this.last_task))&&(this.last_task=g.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(D)}),this.cdRef.detectChanges(),c()})}))}_handleTasks(t){for(const o of t)o.description=this.taskMessageService.getRunningTitle(o);this.executingTasks=t}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(t){this.notificationService.remove(t)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(t){return t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ll.g),e.Y36(zm.J),e.Y36(oM.p),e.Y36(iM),e.Y36(_t.j),e.Y36(nm),e.Y36(e.R0b),e.Y36(e.sBO))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-notifications-sidebar"]],hostVars:2,hostBindings:function(t,o){2&t&&e.ekj("active",o.isSidebarOpened)},decls:18,vars:6,consts:function(){let s,t,o,c,g;return s="Tasks and Notifications",t="Clear notifications",o="Remove notification",c="Duration:",g="There are no notifications.",[["tasksTpl",""],["notificationsTpl",""],["emptyTpl",""],[1,"card",3,"clickOutsideEnabled","clickOutside"],[1,"card-header"],s,["tabindex","-1","type","button",1,"close","float-right",3,"click"],[3,"ngClass"],[3,"options"],[1,"card-body"],[4,"ngTemplateOutlet"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"card","tc_task","border-0"],[1,"row","no-gutters"],[1,"col-md-2","text-center"],[1,"text-info",3,"ngClass"],[1,"col-md-9"],[1,"card-body","p-1"],[1,"card-title","bold"],[1,"mb-1"],["type","info",3,"value","striped","animated"],[1,"card-text","text-muted"],[1,"date","float-left"],[1,"float-right"],[4,"ngIf"],["type","button",1,"btn","btn-light","btn-block",3,"click"],["aria-hidden","true",3,"ngClass"],t,[3,"ngClass",4,"ngFor","ngForOf"],[1,"card","tc_notification","border-0"],[1,"col-md-10"],["title",o,1,"btn","btn-link","float-right","mt-0","pt-0",3,"click"],[1,"card-text",3,"innerHtml"],[1,"date",3,"title"],[1,"float-right","custom-icon",3,"ngClass","title"],c,[1,"message","text-center"],g]},template:function(t,o){if(1&t&&(e.YNc(0,BE,1,2,"ng-template",null,0,e.W1O),e.YNc(2,Sw,1,1,"ng-template",null,1,e.W1O),e.YNc(4,uM,1,1,"ng-template",null,2,e.W1O),e.TgZ(6,"div",3),e.NdJ("clickOutside",function(){return o.closeSidebar()}),e.TgZ(7,"div",4),e.ynx(8),e.SDv(9,5),e.BQk(),e.TgZ(10,"button",6),e.NdJ("click",function(){return o.closeSidebar()}),e.TgZ(11,"span"),e._UZ(12,"i",7),e.qZA(),e.qZA(),e.qZA(),e.TgZ(13,"ngx-simplebar",8),e.TgZ(14,"div",9),e.YNc(15,DR,1,0,"ng-container",10),e.YNc(16,Ry,1,0,"ng-container",10),e.YNc(17,Cw,1,0,"ng-container",10),e.qZA(),e.qZA(),e.qZA()),2&t){const c=e.MAs(1),g=e.MAs(3),C=e.MAs(5);e.xp6(6),e.Q6J("clickOutsideEnabled",o.isSidebarOpened),e.xp6(6),e.Q6J("ngClass",o.icons.close),e.xp6(1),e.Q6J("options",o.simplebar),e.xp6(2),e.Q6J("ngTemplateOutlet",c),e.xp6(1),e.Q6J("ngTemplateOutlet",g),e.xp6(1),e.Q6J("ngTemplateOutlet",C)}},directives:[sM._,ca.o,_.mk,aM.M,_.tP,_.sg,lt.Ly,_.O5],pipes:[Vl.N,bt.h,io.u],styles:["[_nghost-%COMP%]{bottom:10px;max-width:90vw;position:fixed;right:-350px;top:53px;transition:all .6s;width:350px;z-index:9}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}.card-body[_ngcontent-%COMP%]{padding-left:0;padding-right:5px;padding-top:3px}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{background-color:#e9ecef;color:#6c757d;font-size:1rem;padding:5px 12px}.btn-block[_ngcontent-%COMP%]{width:98%}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0;padding-bottom:1rem;padding-top:1rem}hr[_ngcontent-%COMP%]{margin-bottom:2px;margin-top:2px}.card-text[_ngcontent-%COMP%]{margin-right:15px}"],changeDetection:0}),n})();function RR(n,s){1&n&&e._UZ(0,"span",5)}const Aw=function(n){return{running:n}},Ow=function(n){return[n]};let ww=(()=>{class n{constructor(t,o){this.notificationService=t,this.summaryService=o,this.icons=No.P,this.hasRunningTasks=!1,this.hasNotifications=!1,this.subs=new gu.w}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.hasRunningTasks=t.executing_tasks.length>0})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.hasNotifications=t.length>0}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(ll.g),e.Y36(zm.J))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-notifications"]],decls:5,vars:7,consts:function(){let s,t;return s="Tasks and Notifications",t="Tasks and Notifications",[["title",s,3,"ngClass","click"],[3,"ngClass"],["class","dot",4,"ngIf"],[1,"d-md-none"],t,[1,"dot"]]},template:function(t,o){1&t&&(e.TgZ(0,"a",0),e.NdJ("click",function(){return o.toggleSidebar()}),e._UZ(1,"i",1),e.YNc(2,RR,1,0,"span",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA()),2&t&&(e.Q6J("ngClass",e.VKq(3,Aw,o.hasRunningTasks)),e.xp6(1),e.Q6J("ngClass",e.VKq(5,Ow,o.icons.bell)),e.xp6(1),e.Q6J("ngIf",o.hasNotifications))},directives:[_.mk,_.O5],styles:[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}a[_ngcontent-%COMP%]   .dot[_ngcontent-%COMP%]{background-color:#2b99a8;border:2px solid #374249;border-radius:50%;height:11px;position:absolute;right:17px;top:10px;width:10px}a[_ngcontent-%COMP%]:hover   .dot[_ngcontent-%COMP%]{background-color:#fff;border-color:#2b99a8}"]}),n})(),YE=(()=>{class n{constructor(t){this.http=t,this.baseUIURL="api/feedback"}isKeyExist(){return this.http.get("ui-api/feedback/api_key/exist")}createIssue(t,o,c,g,C){return this.http.post("api/feedback",{project:t,tracker:o,subject:c,description:g,api_key:C},{headers:{Accept:"application/vnd.ceph.api.v0.1+json"}})}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function cM(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"cd-alert-panel",30),e.tHW(1,31),e.TgZ(2,"a",32),e.NdJ("click",function(){return e.CHM(t),e.oxw().redirect()}),e.qZA(),e.N_p(),e.qZA()}}function dM(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,37),e.qZA())}function fM(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,38),e.qZA())}function xw(n,s){if(1&n&&(e.TgZ(0,"div",9),e.TgZ(1,"label",33),e.SDv(2,34),e.qZA(),e.TgZ(3,"div",12),e._UZ(4,"input",35),e.YNc(5,dM,2,0,"span",17),e.YNc(6,fM,2,0,"span",17),e.qZA(),e.qZA()),2&n){const t=e.oxw(),o=e.MAs(5);e.xp6(5),e.Q6J("ngIf",t.feedbackForm.showError("api_key",o,"required")),e.xp6(1),e.Q6J("ngIf",t.feedbackForm.showError("api_key",o,"invalidApiKey"))}}function NR(n,s){if(1&n&&(e.TgZ(0,"option",39),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Dw(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,40),e.qZA())}function Rw(n,s){if(1&n&&(e.TgZ(0,"option",39),e._uU(1),e.qZA()),2&n){const t=s.$implicit;e.Q6J("value",t),e.xp6(1),e.Oqu(t)}}function Nw(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,41),e.qZA())}function pM(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,42),e.qZA())}function hM(n,s){1&n&&(e.TgZ(0,"span",36),e.SDv(1,43),e.qZA())}let _M=(()=>{class n{constructor(t,o,c,g,C,D){this.feedbackService=t,this.activeModal=o,this.actionLabels=c,this.secondaryModal=g,this.notificationService=C,this.router=D,this.title="Feedback",this.project=["dashboard","block","objects","file_system","ceph_manager","orchestrator","ceph_volume","core_ceph"],this.tracker=["bug","feature"],this.isAPIKeySet=!1,this.isFeedbackEnabled=!0}ngOnInit(){this.createForm(),this.keySub=this.feedbackService.isKeyExist().subscribe({next:t=>{this.isAPIKeySet=t,this.isAPIKeySet&&this.feedbackForm.get("api_key").clearValidators()},error:()=>{this.isFeedbackEnabled=!1,this.feedbackForm.disable()}})}createForm(){this.feedbackForm=new Us.d({project:new vn.NI("",vn.kI.required),tracker:new vn.NI("",vn.kI.required),subject:new vn.NI("",vn.kI.required),description:new vn.NI("",vn.kI.required),api_key:new vn.NI("",vn.kI.required)})}ngOnDestroy(){this.keySub.unsubscribe()}onSubmit(){this.feedbackService.createIssue(this.feedbackForm.controls.project.value,this.feedbackForm.controls.tracker.value,this.feedbackForm.controls.subject.value,this.feedbackForm.controls.description.value,this.feedbackForm.controls.api_key.value).subscribe({next:t=>{this.notificationService.show(_a.k.success,"Issue successfully created on Ceph Issue tracker",`Go to the tracker: <a href="https://tracker.ceph.com/issues/${t.message.issue.id}" target="_blank"> ${t.message.issue.id} </a>`)},error:()=>{this.feedbackForm.get("api_key").setErrors({invalidApiKey:!0}),this.feedbackForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.activeModal.close()}})}redirect(){this.activeModal.close(),this.router.navigate(["/mgr-modules"])}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(YE),e.Y36(lt.Kz),e.Y36(ki.p4),e.Y36(lt.FF),e.Y36(ll.g),e.Y36(Yo.F0))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-feedback"]],decls:42,vars:12,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le;return s="Report an issue",t="Project name",o="-- Select a project --",c="Tracker",g="-- Select a tracker --",C="Subject",D="Description",P="Feedback module is not enabled. Please enable it from " + "\ufffd#2\ufffd" + "Cluster-> Manager Modules." + "\ufffd/#2\ufffd" + "",j="Ceph Tracker API Key",W="Ceph Tracker API key is required.",re="Ceph Tracker API key is invalid.",ie="Project name is required.",ge="Tracker name is required.",_e="Subject is required.",Le="Description is required.",[[3,"modalRef"],[1,"modal-title"],s,[1,"modal-content"],["name","feedbackForm",3,"formGroup"],["formDir","ngForm"],[1,"modal-body"],["type","error",4,"ngIf"],["class","form-group row",4,"ngIf"],[1,"form-group","row"],["for","project",1,"cd-col-form-label","required"],t,[1,"cd-col-form-input"],["id","project","formControlName","project",1,"form-control"],["ngValue",""],o,[3,"value",4,"ngFor","ngForOf"],["class","invalid-feedback",4,"ngIf"],["for","tracker",1,"cd-col-form-label","required"],c,["id","tracker","formControlName","tracker",1,"form-control"],g,["for","subject",1,"cd-col-form-label","required"],C,["id","subject","type","text","formControlName","subject","placeholder","Add issue title",1,"form-control"],["for","description",1,"cd-col-form-label","required"],D,["id","description","type","text","formControlName","description","placeholder","Add issue description",1,"form-control"],[1,"modal-footer"],["wrappingClass","text-right",3,"form","submitText","submitActionEvent"],["type","error"],P,[3,"click"],["for","api_key",1,"cd-col-form-label","required"],j,["id","api_key","type","password","formControlName","api_key","placeholder","Add Ceph tracker API key",1,"form-control"],[1,"invalid-feedback"],W,re,[3,"value"],ie,ge,_e,Le]},template:function(t,o){if(1&t&&(e.TgZ(0,"cd-modal",0),e.TgZ(1,"div",1),e.SDv(2,2),e.qZA(),e.TgZ(3,"div",3),e.TgZ(4,"form",4,5),e.TgZ(6,"div",6),e.YNc(7,cM,3,0,"cd-alert-panel",7),e.YNc(8,xw,7,2,"div",8),e.TgZ(9,"div",9),e.TgZ(10,"label",10),e.SDv(11,11),e.qZA(),e.TgZ(12,"div",12),e.TgZ(13,"select",13),e.TgZ(14,"option",14),e.SDv(15,15),e.qZA(),e.YNc(16,NR,2,2,"option",16),e.qZA(),e.YNc(17,Dw,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(18,"div",9),e.TgZ(19,"label",18),e.SDv(20,19),e.qZA(),e.TgZ(21,"div",12),e.TgZ(22,"select",20),e.TgZ(23,"option",14),e.SDv(24,21),e.qZA(),e.YNc(25,Rw,2,2,"option",16),e.qZA(),e.YNc(26,Nw,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(27,"div",9),e.TgZ(28,"label",22),e.SDv(29,23),e.qZA(),e.TgZ(30,"div",12),e._UZ(31,"input",24),e.YNc(32,pM,2,0,"span",17),e.qZA(),e.qZA(),e.TgZ(33,"div",9),e.TgZ(34,"label",25),e.SDv(35,26),e.qZA(),e.TgZ(36,"div",12),e.TgZ(37,"textarea",27),e._uU(38,"            "),e.qZA(),e.YNc(39,hM,2,0,"span",17),e.qZA(),e.qZA(),e.qZA(),e.TgZ(40,"div",28),e.TgZ(41,"cd-form-button-panel",29),e.NdJ("submitActionEvent",function(){return o.onSubmit()}),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t){const c=e.MAs(5);e.Q6J("modalRef",o.activeModal),e.xp6(4),e.Q6J("formGroup",o.feedbackForm),e.xp6(3),e.Q6J("ngIf",!o.isFeedbackEnabled),e.xp6(1),e.Q6J("ngIf",!o.isAPIKeySet),e.xp6(8),e.Q6J("ngForOf",o.project),e.xp6(1),e.Q6J("ngIf",o.feedbackForm.showError("project",c,"required")),e.xp6(8),e.Q6J("ngForOf",o.tracker),e.xp6(1),e.Q6J("ngIf",o.feedbackForm.showError("tracker",c,"required")),e.xp6(6),e.Q6J("ngIf",o.feedbackForm.showError("subject",c,"required")),e.xp6(7),e.Q6J("ngIf",o.feedbackForm.showError("description",c,"required")),e.xp6(2),e.Q6J("form",o.feedbackForm)("submitText",o.actionLabels.SUBMIT)}},directives:[h.z,vn._Y,vn.JL,tl.V,vn.sg,_.O5,$a.P,ca.o,vn.EJ,Ha.b,vn.JJ,vn.u,vn.YN,vn.Kr,_.sg,vn.Fj,nl.p,Jt.G],styles:[""]}),n})();var Pw=i(97057);let Iw=(()=>{class n{constructor(t,o,c,g){this.activeModal=t,this.summaryService=o,this.userService=c,this.authStorageService=g,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.projectConstants=ki.$x,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(t=>{const o=t.version.replace("ceph version ","").split(" ");this.hostAddr=t.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=o[0],this.versionHash=o[1],this.versionName=o.slice(2,o.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(c=>{t.role=c.roles});const o=(0,Pw.qY)();return t.browserName=o&&o.name?o.name:"Not detected",t.browserVersion=o&&o.version?o.version:"Not detected",t.browserOS=o&&o.os?o.os:"Not detected",t}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.Kz),e.Y36(zm.J),e.Y36(xE.K),e.Y36(_t.j))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-about"]],decls:46,vars:13,consts:[[1,"about-container"],[1,"modal-header"],["type","button","aria-label","Close",1,"close","float-right",3,"click"],["aria-hidden","true"],[1,"modal-body"],["src","assets/Ceph_Ceph_Logo_with_text_red_white.svg",1,"ceph-logo",3,"alt"],[1,"product-versions"],[1,"modal-footer"],[1,"text-left"]],template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"div",1),e.TgZ(2,"button",2),e.NdJ("click",function(){return o.activeModal.close()}),e.TgZ(3,"span",3),e._uU(4,"\xd7"),e.qZA(),e.qZA(),e.qZA(),e.TgZ(5,"div",4),e._UZ(6,"img",5),e.TgZ(7,"h3"),e.TgZ(8,"strong"),e._uU(9),e.qZA(),e.qZA(),e.TgZ(10,"div",6),e.TgZ(11,"strong"),e._uU(12,"Version"),e.qZA(),e._UZ(13,"br"),e._uU(14),e._UZ(15,"br"),e._uU(16),e.qZA(),e._UZ(17,"br"),e.TgZ(18,"dl"),e.TgZ(19,"dt"),e._uU(20,"Ceph Manager"),e.qZA(),e.TgZ(21,"dd"),e._uU(22),e.qZA(),e.TgZ(23,"dt"),e._uU(24,"User"),e.qZA(),e.TgZ(25,"dd"),e._uU(26),e.qZA(),e.TgZ(27,"dt"),e._uU(28,"User Role"),e.qZA(),e.TgZ(29,"dd"),e._uU(30),e.qZA(),e.TgZ(31,"dt"),e._uU(32,"Browser"),e.qZA(),e.TgZ(33,"dd"),e._uU(34),e.qZA(),e.TgZ(35,"dt"),e._uU(36,"Browser Version"),e.qZA(),e.TgZ(37,"dd"),e._uU(38),e.qZA(),e.TgZ(39,"dt"),e._uU(40,"Browser OS"),e.qZA(),e.TgZ(41,"dd"),e._uU(42),e.qZA(),e.qZA(),e.qZA(),e.TgZ(43,"div",7),e.TgZ(44,"div",8),e._uU(45),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(6),e.s9C("alt",o.projectConstants.organization),e.xp6(3),e.Oqu(o.projectConstants.projectName),e.xp6(5),e.AsE(" ",o.versionNumber," ",o.versionHash," "),e.xp6(2),e.hij(" ",o.versionName," "),e.xp6(6),e.Oqu(o.hostAddr),e.xp6(4),e.Oqu(o.modalVariables.user),e.xp6(4),e.Oqu(o.modalVariables.role),e.xp6(4),e.Oqu(o.modalVariables.browserName),e.xp6(4),e.Oqu(o.modalVariables.browserVersion),e.xp6(4),e.Oqu(o.modalVariables.browserOS),e.xp6(3),e.AsE(" ",o.projectConstants.copyright," ",o.projectConstants.license," "))},directives:[ca.o],styles:[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.e82dd79127290ddbe8cb.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:0}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{margin-bottom:30px;width:25%}.modal-footer[_ngcontent-%COMP%]{border-top:0;display:block;padding:15px 80px 35px}"]}),n})();const gM=function(n){return[n]},Ny=function(n){return{disabled:n}};let Lw=(()=>{class n{constructor(t,o){this.modalService=t,this.docService=o,this.icons=No.P}ngOnInit(){this.docService.subscribeOnce("dashboard",t=>{this.docsUrl=t})}openAboutModal(){this.modalRef=this.modalService.show(Iw,null,{size:"lg"})}openFeedbackModal(){this.bsModalRef=this.modalService.show(_M,null,{size:"lg"})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Ul.Z),e.Y36(ZC.R))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-dashboard-help"]],decls:14,vars:7,consts:function(){let s,t,o,c,g,C;return s="Help",t="Help",o="documentation",c="API",g="About",C="Report an issue...",[["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",s],[3,"ngClass"],[1,"d-md-none"],t,["ngbDropdownMenu",""],["ngbDropdownItem","","target","_blank",1,"text-capitalize",3,"ngClass","href"],o,["ngbDropdownItem","","routerLink","/api-docs","target","_blank"],c,["ngbDropdownItem","",3,"click"],g,C]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._UZ(2,"i",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"a",6),e.SDv(7,7),e.qZA(),e.TgZ(8,"a",8),e.SDv(9,9),e.qZA(),e.TgZ(10,"button",10),e.NdJ("click",function(){return o.openAboutModal()}),e.SDv(11,11),e.qZA(),e.TgZ(12,"button",10),e.NdJ("click",function(){return o.openFeedbackModal()}),e.SDv(13,12),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(2),e.Q6J("ngClass",e.VKq(3,gM,o.icons.questionCircle)),e.xp6(4),e.s9C("href",o.docsUrl,e.LSH),e.Q6J("ngClass",e.VKq(5,Ny,!o.docsUrl)))},directives:[lt.jt,lt.iD,_.mk,lt.Vi,lt.TH,Yo.yS,ca.o],styles:[""]}),n})();function mM(n,s){1&n&&(e.TgZ(0,"button",9),e.SDv(1,10),e.qZA())}function Py(n,s){1&n&&(e.TgZ(0,"button",11),e.SDv(1,12),e.qZA())}const Iy=function(n){return[n]};function Z1(n,s){if(1&n&&(e.TgZ(0,"div",1),e.TgZ(1,"a",2),e._UZ(2,"i",3),e.TgZ(3,"span",4),e.SDv(4,5),e.qZA(),e.qZA(),e.TgZ(5,"div",6),e.YNc(6,mM,2,0,"button",7),e.YNc(7,Py,2,0,"button",8),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(2),e.Q6J("ngClass",e.VKq(3,Iy,t.icons.deepCheck)),e.xp6(4),e.Q6J("ngIf",t.userPermission.read),e.xp6(1),e.Q6J("ngIf",t.configOptPermission.read)}}let Fw=(()=>{class n{constructor(t){this.authStorageService=t,this.icons=No.P;const o=this.authStorageService.getPermissions();this.userPermission=o.user,this.configOptPermission=o.configOpt}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-administration"]],decls:1,vars:1,consts:function(){let s,t,o,c;return s="Dashboard Settings",t="Dashboard Settings",o="User management",c="Telemetry configuration",[["ngbDropdown","","placement","bottom-right",4,"ngIf"],["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",s,1,"dropdown-toggle"],[3,"ngClass"],[1,"d-md-none"],t,["ngbDropdownMenu",""],["ngbDropdownItem","","routerLink","/user-management",4,"ngIf"],["ngbDropdownItem","","routerLink","/telemetry",4,"ngIf"],["ngbDropdownItem","","routerLink","/user-management"],o,["ngbDropdownItem","","routerLink","/telemetry"],c]},template:function(t,o){1&t&&e.YNc(0,Z1,8,5,"div",0),2&t&&e.Q6J("ngIf",o.userPermission.read)},directives:[_.O5,lt.jt,lt.iD,_.mk,lt.Vi,ca.o,lt.TH,Yo.rH],styles:[""]}),n})();const ZE=function(n){return[n]};function PR(n,s){if(1&n&&(e.TgZ(0,"button",12),e._UZ(1,"i",2),e.TgZ(2,"span"),e.SDv(3,13),e.qZA(),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngClass",e.VKq(1,ZE,t.icons.lock))}}let kw=(()=>{class n{constructor(t,o){this.authStorageService=t,this.authService=o,this.icons=No.P}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(Vm.e))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-identity"]],decls:15,vars:8,consts:function(){let s,t,o,c,g;return s="Logged in user",t="Logged in user",o="Signed in as " + "\ufffd#8\ufffd" + "" + "\ufffd0\ufffd" + "" + "\ufffd/#8\ufffd" + "",c="Sign out",g="Change password",[["ngbDropdown","","placement","bottom-right"],["ngbDropdownToggle","","title",s],[3,"ngClass"],[1,"d-md-none"],t,["ngbDropdownMenu",""],["ngbDropdownItem","","disabled",""],o,[1,"dropdown-divider"],["ngbDropdownItem","","routerLink","/user-profile/edit",4,"ngIf"],["ngbDropdownItem","",3,"click"],c,["ngbDropdownItem","","routerLink","/user-profile/edit"],g]},template:function(t,o){1&t&&(e.TgZ(0,"div",0),e.TgZ(1,"a",1),e._UZ(2,"i",2),e.TgZ(3,"span",3),e.SDv(4,4),e.qZA(),e.qZA(),e.TgZ(5,"div",5),e.TgZ(6,"button",6),e.tHW(7,7),e._UZ(8,"strong"),e.N_p(),e.qZA(),e._UZ(9,"li",8),e.YNc(10,PR,4,3,"button",9),e.TgZ(11,"button",10),e.NdJ("click",function(){return o.logout()}),e._UZ(12,"i",2),e.TgZ(13,"span"),e.SDv(14,11),e.qZA(),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(2),e.Q6J("ngClass",e.VKq(4,ZE,o.icons.user)),e.xp6(6),e.pQV(o.username),e.QtT(7),e.xp6(2),e.Q6J("ngIf",!o.sso),e.xp6(2),e.Q6J("ngClass",e.VKq(6,ZE,o.icons.signOut)))},directives:[lt.jt,lt.iD,_.mk,lt.Vi,ca.o,lt.TH,_.O5,Yo.rH],styles:[""]}),n})();function $w(n,s){1&n&&e.GkF(0)}function Hw(n,s){1&n&&e.GkF(0)}function Uw(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"li",22),e._UZ(1,"cd-language-selector",23),e.qZA(),e.TgZ(2,"li",22),e.TgZ(3,"cd-notifications",24),e.NdJ("click",function(){return e.CHM(t),e.oxw().toggleRightSidebar()}),e.qZA(),e.qZA(),e.TgZ(4,"li",22),e._UZ(5,"cd-dashboard-help",23),e.qZA(),e.TgZ(6,"li",22),e._UZ(7,"cd-administration",23),e.qZA(),e.TgZ(8,"li",22),e._UZ(9,"cd-identity",23),e.qZA()}}function Bw(n,s){1&n&&(e.TgZ(0,"li",50),e.TgZ(1,"a",51),e.SDv(2,52),e.qZA(),e.qZA())}function Yw(n,s){1&n&&(e.TgZ(0,"li",53),e.TgZ(1,"a",54),e.SDv(2,55),e.qZA(),e.qZA())}function Zw(n,s){1&n&&(e.TgZ(0,"li",56),e.TgZ(1,"a",57),e.SDv(2,58),e.qZA(),e.qZA())}function jw(n,s){1&n&&(e.TgZ(0,"li",59),e.TgZ(1,"a",60),e.SDv(2,61),e.qZA(),e.qZA())}function Gw(n,s){1&n&&(e.TgZ(0,"li",62),e.TgZ(1,"a",63),e.SDv(2,64),e.qZA(),e.qZA())}function IR(n,s){1&n&&(e.TgZ(0,"li",65),e.TgZ(1,"a",66),e.SDv(2,67),e.qZA(),e.qZA())}function Vw(n,s){1&n&&(e.TgZ(0,"li",68),e.TgZ(1,"a",69),e.SDv(2,70),e.qZA(),e.qZA())}function j1(n,s){1&n&&(e.TgZ(0,"li",71),e.TgZ(1,"a",72),e.SDv(2,73),e.qZA(),e.qZA())}function zw(n,s){1&n&&(e.TgZ(0,"li",74),e.TgZ(1,"a",75),e.SDv(2,76),e.qZA(),e.qZA())}function Ww(n,s){if(1&n&&(e.TgZ(0,"small",82),e._uU(1),e.qZA()),2&n){const t=e.oxw(5);e.xp6(1),e.Oqu(t.prometheusAlertService.activeCriticalAlerts)}}function Jw(n,s){if(1&n&&(e.TgZ(0,"small",83),e._uU(1),e.qZA()),2&n){const t=e.oxw(5);e.xp6(1),e.Oqu(t.prometheusAlertService.activeWarningAlerts)}}function Ly(n,s){if(1&n&&(e.TgZ(0,"li",77),e.TgZ(1,"a",78),e.ynx(2),e.SDv(3,79),e.BQk(),e.YNc(4,Ww,2,1,"small",80),e.YNc(5,Jw,2,1,"small",81),e.qZA(),e.qZA()),2&n){const t=e.oxw(4);e.xp6(4),e.Q6J("ngIf",t.prometheusAlertService.activeCriticalAlerts>0),e.xp6(1),e.Q6J("ngIf",t.prometheusAlertService.activeWarningAlerts>0)}}function Wm(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"li",36),e.TgZ(1,"a",37),e.NdJ("click",function(){return e.CHM(t),e.oxw(3).toggleSubMenu("cluster")}),e.ynx(2),e.SDv(3,38),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.YNc(5,Bw,3,0,"li",40),e.YNc(6,Yw,3,0,"li",41),e.YNc(7,Zw,3,0,"li",42),e.YNc(8,jw,3,0,"li",43),e.YNc(9,Gw,3,0,"li",44),e.YNc(10,IR,3,0,"li",45),e.YNc(11,Vw,3,0,"li",46),e.YNc(12,j1,3,0,"li",47),e.YNc(13,zw,3,0,"li",48),e.YNc(14,Ly,6,2,"li",49),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.uIk("aria-expanded","cluster"==t.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","cluster"!==t.displayedSubMenu),e.xp6(1),e.Q6J("ngIf",t.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",t.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",t.permissions.monitor.read),e.xp6(1),e.Q6J("ngIf",t.permissions.hosts.read),e.xp6(1),e.Q6J("ngIf",t.permissions.osd.read),e.xp6(1),e.Q6J("ngIf",t.permissions.configOpt.read),e.xp6(1),e.Q6J("ngIf",t.permissions.osd.read),e.xp6(1),e.Q6J("ngIf",t.permissions.configOpt.read),e.xp6(1),e.Q6J("ngIf",t.permissions.log.read),e.xp6(1),e.Q6J("ngIf",t.permissions.prometheus.read)}}function vM(n,s){1&n&&(e.TgZ(0,"li",84),e.TgZ(1,"a",85),e.SDv(2,86),e.qZA(),e.qZA())}function Qw(n,s){1&n&&(e.TgZ(0,"li",93),e.TgZ(1,"a",94),e.SDv(2,95),e.qZA(),e.qZA())}function LR(n,s){if(1&n&&(e.TgZ(0,"small",101),e._uU(1),e.qZA()),2&n){const t=e.oxw(5);e.xp6(1),e.Oqu(null==t.summaryData||null==t.summaryData.rbd_mirroring?null:t.summaryData.rbd_mirroring.warnings)}}function Xw(n,s){if(1&n&&(e.TgZ(0,"small",102),e._uU(1),e.qZA()),2&n){const t=e.oxw(5);e.xp6(1),e.Oqu(null==t.summaryData||null==t.summaryData.rbd_mirroring?null:t.summaryData.rbd_mirroring.errors)}}function Fy(n,s){if(1&n&&(e.TgZ(0,"li",96),e.TgZ(1,"a",97),e.ynx(2),e.SDv(3,98),e.BQk(),e.YNc(4,LR,2,1,"small",99),e.YNc(5,Xw,2,1,"small",100),e.qZA(),e.qZA()),2&n){const t=e.oxw(4);e.xp6(4),e.Q6J("ngIf",0!==(null==t.summaryData||null==t.summaryData.rbd_mirroring?null:t.summaryData.rbd_mirroring.warnings)),e.xp6(1),e.Q6J("ngIf",0!==(null==t.summaryData||null==t.summaryData.rbd_mirroring?null:t.summaryData.rbd_mirroring.errors))}}function Kw(n,s){1&n&&(e.TgZ(0,"li",103),e.TgZ(1,"a",104),e.SDv(2,105),e.qZA(),e.qZA())}function qw(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"li",87),e.TgZ(1,"a",88),e.NdJ("click",function(){return e.CHM(t),e.oxw(3).toggleSubMenu("block")}),e.ynx(2),e.SDv(3,89),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.YNc(5,Qw,3,0,"li",90),e.YNc(6,Fy,6,2,"li",91),e.YNc(7,Kw,3,0,"li",92),e.qZA(),e.qZA()}if(2&n){const t=e.oxw().ngIf,o=e.oxw(2);e.xp6(1),e.Q6J("ngStyle",o.blockHealthColor()),e.uIk("aria-expanded","block"==o.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","block"!==o.displayedSubMenu),e.xp6(1),e.Q6J("ngIf",o.permissions.rbdImage.read&&t.rbd),e.xp6(1),e.Q6J("ngIf",o.permissions.rbdMirroring.read&&t.mirroring),e.xp6(1),e.Q6J("ngIf",o.permissions.iscsi.read&&t.iscsi)}}function yM(n,s){1&n&&(e.TgZ(0,"li",106),e.TgZ(1,"a",107),e.SDv(2,108),e.qZA(),e.qZA())}function bM(n,s){1&n&&(e.TgZ(0,"li",109),e.TgZ(1,"a",110),e.SDv(2,111),e.qZA(),e.qZA())}function jE(n,s){if(1&n){const t=e.EpF();e.TgZ(0,"li",112),e.TgZ(1,"a",37),e.NdJ("click",function(){return e.CHM(t),e.oxw(3).toggleSubMenu("rgw")}),e.ynx(2),e.SDv(3,113),e.BQk(),e.qZA(),e.TgZ(4,"ul",39),e.TgZ(5,"li",114),e.TgZ(6,"a",115),e.SDv(7,116),e.qZA(),e.qZA(),e.TgZ(8,"li",117),e.TgZ(9,"a",118),e.SDv(10,119),e.qZA(),e.qZA(),e.TgZ(11,"li",120),e.TgZ(12,"a",121),e.SDv(13,122),e.qZA(),e.qZA(),e.qZA(),e.qZA()}if(2&n){const t=e.oxw(3);e.xp6(1),e.uIk("aria-expanded","rgw"==t.displayedSubMenu),e.xp6(3),e.Q6J("ngbCollapse","rgw"!==t.displayedSubMenu)}}const EM=function(n){return[n]};function TM(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"li",26),e.TgZ(2,"a",27),e.TgZ(3,"span"),e.SDv(4,28),e.qZA(),e._uU(5,"\xa0 "),e._UZ(6,"i",29),e.ALo(7,"healthColor"),e.qZA(),e.qZA(),e.YNc(8,Wm,15,12,"li",30),e.YNc(9,vM,3,0,"li",31),e.YNc(10,qw,8,6,"li",32),e.YNc(11,yM,3,0,"li",33),e.YNc(12,bM,3,0,"li",34),e.YNc(13,jE,14,2,"li",35),e.BQk()),2&n){const t=s.ngIf,o=e.oxw(2);e.xp6(6),e.Q6J("ngClass",e.VKq(10,EM,o.icons.health))("ngStyle",e.lcZ(7,8,null==o.summaryData?null:o.summaryData.health_status)),e.xp6(2),e.Q6J("ngIf",o.permissions.hosts.read||o.permissions.monitor.read||o.permissions.osd.read||o.permissions.configOpt.read||o.permissions.log.read||o.permissions.prometheus.read),e.xp6(1),e.Q6J("ngIf",o.permissions.pool.read),e.xp6(1),e.Q6J("ngIf",(o.permissions.rbdImage.read||o.permissions.rbdMirroring.read||o.permissions.iscsi.read)&&(t.rbd||t.mirroring||t.iscsi)),e.xp6(1),e.Q6J("ngIf",o.permissions.nfs.read&&t.nfs),e.xp6(1),e.Q6J("ngIf",o.permissions.cephfs.read&&t.cephfs),e.xp6(1),e.Q6J("ngIf",o.permissions.rgw.read&&t.rgw)}}function ex(n,s){if(1&n&&(e.YNc(0,TM,14,12,"ng-container",25),e.ALo(1,"async")),2&n){const t=e.oxw();e.Q6J("ngIf",e.lcZ(1,1,t.enabledFeature$))}}const tx=function(n){return{show:n}},GE=function(n){return{active:n}},nx=["*"];let SM=(()=>{class n{constructor(t,o,c,g,C,D){this.authStorageService=t,this.summaryService=o,this.featureToggles=c,this.telemetryNotificationService=g,this.prometheusAlertService=C,this.motdNotificationService=D,this.notifications=[],this.icons=No.P,this.rightSidebarOpen=!1,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new gu.w,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}get class(){return"top-notification-"+this.notifications.length}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.summaryData=t})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(t=>{this.showTopNotification("isPwdDisplayed",t)})),this.subs.add(this.telemetryNotificationService.update.subscribe(t=>{this.showTopNotification("telemetryNotificationEnabled",t)})),this.subs.add(this.motdNotificationService.motd$.subscribe(t=>{this.showTopNotification("motdNotificationEnabled",du.isPlainObject(t))}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(t){this.displayedSubMenu=this.displayedSubMenu===t?"":t}toggleRightSidebar(){this.rightSidebarOpen=!this.rightSidebarOpen}showTopNotification(t,o){if(o)this.notifications.includes(t)||this.notifications.push(t);else{const c=this.notifications.indexOf(t);c>=0&&this.notifications.splice(c,1)}}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36(zm.J),e.Y36($1.l),e.Y36(rE),e.Y36(nm),e.Y36(xy))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-navigation"]],hostVars:2,hostBindings:function(t,o){2&t&&e.Tol(o.class)},ngContentSelectors:nx,decls:30,vars:12,consts:function(){let s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke,xe,U,pt,ht,wt,It,dn;return s="Toggle navigation",t="Dashboard",o="Cluster",c="Hosts",g="Physical Disks",C="Monitors",D="Services",P="OSDs",j="Configuration",W="CRUSH map",re="Manager Modules",ie="Logs",ge="Monitoring",_e="Pools",Le="Block",Re="Images",ke="Mirroring",xe="iSCSI",U="NFS",pt="File Systems",ht="Object Gateway",wt="Daemons",It="Users",dn="Buckets",[[1,"cd-navbar-main"],[1,"cd-navbar-top"],[1,"navbar","navbar-expand-md","navbar-dark","cd-navbar-brand"],["aria-label","toggle sidebar visibility",1,"btn","btn-link","py-0",3,"click"],["aria-hidden","true",1,"fa","fa-bars","fa-2x"],["href","#",1,"navbar-brand","ml-2"],["src","assets/Ceph_Ceph_Logo_with_text_white.svg","alt","Ceph"],["type","button",1,"navbar-toggler",3,"click"],[1,"sr-only"],s,[1,""],[1,"fa","fa-navicon","fa-lg"],[1,"collapse","navbar-collapse",3,"ngClass"],[1,"nav","navbar-nav","cd-navbar-utility","my-2","my-md-0"],[4,"ngTemplateOutlet"],[1,"wrapper"],["id","sidebar",3,"ngClass"],[3,"options"],[1,"list-unstyled","components","cd-navbar-primary"],["id","content",3,"ngClass"],["cd_utilities",""],["cd_menu",""],[1,"nav-item"],[1,"cd-navbar"],[1,"cd-navbar",3,"click"],[4,"ngIf"],["routerLinkActive","active",1,"nav-item","tc_menuitem_dashboard"],["routerLink","/dashboard",1,"nav-link"],t,[3,"ngClass","ngStyle"],["routerLinkActive","active","class","nav-item tc_menuitem_cluster",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_pool",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_block",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_nfs",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_cephfs",4,"ngIf"],["routerLinkActive","active","class","nav-item tc_menuitem_rgw",4,"ngIf"],["routerLinkActive","active",1,"nav-item","tc_menuitem_cluster"],["aria-controls","collapseBasic",1,"nav-link","dropdown-toggle",3,"click"],o,[1,"list-unstyled",3,"ngbCollapse"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_hosts",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_inventory",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_monitor",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_cluster_services",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_osds",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_configuration",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_crush",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_modules",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_log",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_monitoring",4,"ngIf"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_hosts"],["routerLink","/hosts"],c,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_inventory"],["routerLink","/inventory"],g,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_monitor"],["routerLink","/monitor/"],C,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_cluster_services"],["routerLink","/services/"],D,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_osds"],["routerLink","/osd"],P,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_configuration"],["routerLink","/configuration"],j,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_crush"],["routerLink","/crush-map"],W,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_modules"],["routerLink","/mgr-modules"],re,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_log"],["routerLink","/logs"],ie,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_monitoring"],["routerLink","/monitoring"],ge,["class","badge badge-danger ml-1",4,"ngIf"],["class","badge badge-warning ml-1",4,"ngIf"],[1,"badge","badge-danger","ml-1"],[1,"badge","badge-warning","ml-1"],["routerLinkActive","active",1,"nav-item","tc_menuitem_pool"],["routerLink","/pool",1,"nav-link"],_e,["routerLinkActive","active",1,"nav-item","tc_menuitem_block"],["aria-controls","collapseBasic",1,"nav-link","dropdown-toggle",3,"ngStyle","click"],Le,["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_images",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_mirroring",4,"ngIf"],["routerLinkActive","active","class","tc_submenuitem tc_submenuitem_block_iscsi",4,"ngIf"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_images"],["routerLink","/block/rbd"],Re,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_mirroring"],["routerLink","/block/mirroring"],ke,["class","badge badge-warning",4,"ngIf"],["class","badge badge-danger",4,"ngIf"],[1,"badge","badge-warning"],[1,"badge","badge-danger"],["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_block_iscsi"],["routerLink","/block/iscsi"],xe,["routerLinkActive","active",1,"nav-item","tc_menuitem_nfs"],["routerLink","/nfs",1,"nav-link"],U,["routerLinkActive","active",1,"nav-item","tc_menuitem_cephfs"],["routerLink","/cephfs",1,"nav-link"],pt,["routerLinkActive","active",1,"nav-item","tc_menuitem_rgw"],ht,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_daemons"],["routerLink","/rgw/daemon"],wt,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_users"],["routerLink","/rgw/user"],It,["routerLinkActive","active",1,"tc_submenuitem","tc_submenuitem_rgw_buckets"],["routerLink","/rgw/bucket"],dn]},template:function(t,o){if(1&t&&(e.F$t(),e.TgZ(0,"div",0),e._UZ(1,"cd-pwd-expiration-notification"),e._UZ(2,"cd-telemetry-notification"),e._UZ(3,"cd-motd"),e._UZ(4,"cd-notifications-sidebar"),e.TgZ(5,"div",1),e.TgZ(6,"nav",2),e.TgZ(7,"button",3),e.NdJ("click",function(){return o.showMenuSidebar=!o.showMenuSidebar}),e._UZ(8,"i",4),e.qZA(),e.TgZ(9,"a",5),e._UZ(10,"img",6),e.qZA(),e.TgZ(11,"button",7),e.NdJ("click",function(){return o.toggleRightSidebar()}),e.TgZ(12,"span",8),e.SDv(13,9),e.qZA(),e.TgZ(14,"span",10),e._UZ(15,"i",11),e.qZA(),e.qZA(),e.TgZ(16,"div",12),e.TgZ(17,"ul",13),e.YNc(18,$w,1,0,"ng-container",14),e.qZA(),e.qZA(),e.qZA(),e.qZA(),e.TgZ(19,"div",15),e.TgZ(20,"nav",16),e.TgZ(21,"ngx-simplebar",17),e.TgZ(22,"ul",18),e.YNc(23,Hw,1,0,"ng-container",14),e.qZA(),e.qZA(),e.qZA(),e.TgZ(24,"div",19),e.Hsn(25),e.qZA(),e.qZA(),e.YNc(26,Uw,10,0,"ng-template",null,20,e.W1O),e.YNc(28,ex,2,3,"ng-template",null,21,e.W1O),e.qZA()),2&t){const c=e.MAs(27),g=e.MAs(29);e.xp6(16),e.Q6J("ngClass",e.VKq(6,tx,o.rightSidebarOpen)),e.xp6(2),e.Q6J("ngTemplateOutlet",c),e.xp6(2),e.Q6J("ngClass",e.VKq(8,GE,!o.showMenuSidebar)),e.xp6(1),e.Q6J("options",o.simplebar),e.xp6(2),e.Q6J("ngTemplateOutlet",g),e.xp6(1),e.Q6J("ngClass",e.VKq(10,GE,!o.showMenuSidebar))}},directives:[nM,LE,kE,Mw,lt.M2,ca.o,_.mk,_.tP,aM.M,RE,ww,Lw,Fw,kw,_.O5,Yo.Od,Yo.yS,_.PC,lt._D],pipes:[_.Ov,_E],styles:['@charset "UTF-8";.cd-navbar-main[_ngcontent-%COMP%]{display:flex;flex:1;flex-direction:column;height:100%}  cd-navigation .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand,   cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#e9ecef;height:auto;padding:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#e9ecef}  cd-navigation .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{background-color:#2b99a8;color:#e9ecef}  cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   cd-navigation .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{background-color:transparent;border-color:transparent;color:#e9ecef}  cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown]>a,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   cd-navigation .cd-navbar-top .navbar-nav>li>a{color:#e9ecef;display:block;line-height:1;padding:13.5px 18px!important;position:relative;text-decoration:none}  cd-navigation .cd-navbar-top .navbar-nav .nav-link,   cd-navigation .cd-navbar-top .navbar-nav .nav-link:hover{color:#e9ecef}  cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown]>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>[ngbDropdown].open>a,   cd-navigation .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>li:hover{background-color:#2b99a8}  cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>[ngbDropdown]>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>[ngbDropdown]>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   cd-navigation .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>a,   cd-navigation .cd-navbar-top .navbar-nav>.open>a:focus,   cd-navigation .cd-navbar-top .navbar-nav>.open>a:hover{background-color:transparent;border-color:transparent;color:#e9ecef}@media (min-width: 768px){  cd-navigation .cd-navbar-top .cd-navbar-utility{border-bottom:0;font-size:1.1rem;position:absolute;right:0;top:0}}@media (max-width: calc(768px - 1px)){  cd-navigation .cd-navbar-top .navbar-nav{margin:0}  cd-navigation .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu{background-color:#2b99a8;border:0;padding-bottom:0;padding-top:0}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{color:#e9ecef;padding:5px 15px 5px 35px}  cd-navigation .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  cd-navigation .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{background-color:#2b99a8!important;border:0!important;color:#e9ecef!important}.wrapper[_ngcontent-%COMP%]{display:flex;height:100%;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{background:#374249;bottom:0;color:#fff;height:auto;left:0;overflow-y:auto;position:relative;transition:all .3s;width:200px;z-index:999}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{margin:0;padding:20px 0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:#fff;display:block;font-size:1.1em;padding:10px 10px 10px 27px;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{background:#2b99a8;color:#fff}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]:after{border:0;content:"\\f054";font-family:"ForkAwesome";font-size:1rem;position:absolute;right:20px;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]:after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{background:#4d5c66;font-size:.9em!important;padding-left:40px!important}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:none}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{bottom:0;position:relative;right:0;transition:all .3s;width:calc(100% - 200px)}#content.active[_ngcontent-%COMP%]{width:100vw}']}),n})();var ky=i(17757),$y=i(20523);function FR(n,s){if(1&n){const t=e.EpF();e.ynx(0),e.TgZ(1,"button",8),e.NdJ("click",function(){const g=e.CHM(t).$implicit;return e.oxw(3).onDaemonSelection(g)}),e._uU(2),e.qZA(),e.BQk()}if(2&n){const t=s.$implicit;e.xp6(2),e.AsE(" ",t.id," ( ",t.zonegroup_name," ) ")}}function G1(n,s){if(1&n&&(e.ynx(0),e.TgZ(1,"div",1),e.TgZ(2,"span",2),e.SDv(3,3),e.qZA(),e.TgZ(4,"div",4),e.TgZ(5,"button",5),e._uU(6),e.qZA(),e.TgZ(7,"div",6),e.YNc(8,FR,3,2,"ng-container",7),e.qZA(),e.qZA(),e.qZA(),e.BQk()),2&n){const t=e.oxw().ngIf;e.xp6(6),e.AsE(" ",t.selectedDaemon.id," ( ",t.selectedDaemon.zonegroup_name," ) "),e.xp6(2),e.Q6J("ngForOf",t.daemons)}}function sc(n,s){if(1&n&&(e.ynx(0),e.YNc(1,G1,9,3,"ng-container",0),e.BQk()),2&n){const t=s.ngIf,o=e.oxw();e.xp6(1),e.Q6J("ngIf",t.ftMap&&t.ftMap.rgw&&o.permissions.rgw.read&&o.isRgwRoute&&t.daemons.length>1)}}const om=function(n,s,t){return{ftMap:n,daemons:s,selectedDaemon:t}};let $v=(()=>{class n{constructor(t,o,c,g,C){this.authStorageService=t,this.featureToggles=o,this.router=c,this.timerService=g,this.rgwDaemonService=C,this.REFRESH_INTERVAL=5e3,this.subs=new gu.w,this.rgwUrlPrefix="/rgw",this.isRgwRoute=document.location.href.includes(this.rgwUrlPrefix)}ngOnInit(){this.permissions=this.authStorageService.getPermissions(),this.featureToggleMap$=this.featureToggles.get(),this.subs.add(this.router.events.pipe((0,tp.h)(t=>t instanceof Yo.m2)).subscribe(()=>this.isRgwRoute=this.router.url.startsWith(this.rgwUrlPrefix))),this.subs.add(this.timerService.get(()=>this.isRgwRoute?this.rgwDaemonService.list():ky.C,this.REFRESH_INTERVAL).subscribe())}ngOnDestroy(){this.subs.unsubscribe()}onDaemonSelection(t){this.rgwDaemonService.selectDaemon(t),this.reloadData()}reloadData(){const t=this.router.url;this.router.navigateByUrl(this.rgwUrlPrefix,{skipLocationChange:!0}).finally(()=>{this.router.navigate([t])})}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(_t.j),e.Y36($1.l),e.Y36(Yo.F0),e.Y36(Nm.f),e.Y36($y.b))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-context"]],decls:4,vars:11,consts:function(){let s,t;return s="Selected Object Gateway:",t="Select Object Gateway",[[4,"ngIf"],[1,"cd-context-bar","pt-3","pb-3"],[1,"mr-1"],s,["ngbDropdown","","placement","bottom-left",1,"d-inline-block","ml-2"],["ngbDropdownToggle","","title",t,1,"btn","btn-outline-info","ctx-bar-selected-rgw-daemon"],["ngbDropdownMenu",""],[4,"ngFor","ngForOf"],["ngbDropdownItem","",1,"ctx-bar-available-rgw-daemon",3,"click"]]},template:function(t,o){1&t&&(e.YNc(0,sc,2,1,"ng-container",0),e.ALo(1,"async"),e.ALo(2,"async"),e.ALo(3,"async")),2&t&&e.Q6J("ngIf",e.kEZ(7,om,e.lcZ(1,1,o.featureToggleMap$),e.lcZ(2,3,o.rgwDaemonService.daemons$),e.lcZ(3,5,o.rgwDaemonService.selectedDaemon$)))},directives:[_.O5,lt.jt,ca.o,lt.iD,lt.Vi,_.sg,lt.TH],pipes:[_.Ov],styles:[".cd-context-bar[_ngcontent-%COMP%]{border-bottom:1px solid #dee2e6}"]}),n})();var V1=i(58071),kR=i(94402),gl=i(85345);class VE{constructor(s,t){this.keySelector=s,this.flushes=t}call(s,t){return t.subscribe(new Jm(s,this.keySelector,this.flushes))}}class Jm extends gl.Ds{constructor(s,t,o){super(s),this.keySelector=t,this.values=new Set,o&&this.add((0,gl.ft)(o,new gl.IY(this)))}notifyNext(){this.values.clear()}notifyError(s){this._error(s)}_next(s){this.keySelector?this._useKeySelector(s):this._finalizeNext(s,s)}_useKeySelector(s){let t;const{destination:o}=this;try{t=this.keySelector(s)}catch(c){return void o.error(c)}this._finalizeNext(t,s)}_finalizeNext(s,t){const{values:o}=this;o.has(s)||(o.add(s),this.destination.next(t))}}var rx=i(28049);class z1{resolve(s){const t=s.routeConfig.data,o=null===t.path?null:this.getFullPath(s);return(0,zc.of)([{text:"string"==typeof t.breadcrumbs?t.breadcrumbs:t.breadcrumbs.text||t.text||o,path:o}])}getFullPath(s){return s.pathFromRoot.reduce((g,C)=>g+C.url.reduce((g,C)=>g+"/"+C.path,""),"")}}function CM(n,s){if(1&n&&(e.TgZ(0,"a",6),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit;e.Q6J("routerLink",t.path),e.xp6(1),e.Oqu(t.text)}}function $R(n,s){if(1&n&&(e.TgZ(0,"span"),e._uU(1),e.qZA()),2&n){const t=e.oxw().$implicit;e.xp6(1),e.Oqu(t.text)}}const ix=function(n){return{active:n}};function ox(n,s){if(1&n&&(e.TgZ(0,"li",3),e.YNc(1,CM,2,2,"a",4),e.YNc(2,$R,2,1,"span",5),e.qZA()),2&n){const t=s.$implicit,o=s.last,c=e.oxw(2);e.Q6J("ngClass",e.VKq(3,ix,o&&c.finished)),e.xp6(1),e.Q6J("ngIf",!o&&null!==t.path),e.xp6(1),e.Q6J("ngIf",o||null===t.path)}}function Jh(n,s){if(1&n&&(e.TgZ(0,"ol",1),e.YNc(1,ox,3,5,"li",2),e.qZA()),2&n){const t=e.oxw();e.xp6(1),e.Q6J("ngForOf",t.crumbs)}}let hd=(()=>{class n{constructor(t,o){this.router=t,this.injector=o,this.crumbs=[],this.finished=!1,this.defaultResolver=new z1,this.subscription=this.router.events.pipe((0,tp.h)(c=>c instanceof Yo.OD)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe((0,tp.h)(c=>c instanceof Yo.m2)).subscribe(()=>{this._resolveCrumbs(t.routerState.snapshot.root).pipe((0,Uu.zg)(g=>g),function(n,s){return t=>t.lift(new VE(n,undefined))}(g=>g.text),kf(),(0,Uu.zg)(g=>{const C=this.postProcess(g);return this.wrapIntoObservable(C).pipe((0,rx.P)())})).subscribe(g=>{this.finished=!0,this.crumbs=g})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(t){let o;const c=t.routeConfig&&t.routeConfig.data;if(c&&c.breadcrumbs){let g;g=c.breadcrumbs.prototype instanceof z1?this.injector.get(c.breadcrumbs):this.defaultResolver;const C=g.resolve(t);o=this.wrapIntoObservable(C).pipe((0,rx.P)())}else o=(0,zc.of)([]);return t.firstChild&&(o=(0,V1.z)(o,this._resolveCrumbs(t.firstChild))),o}postProcess(t){const o=[];return t.forEach(c=>{const g=c.text.split("/");if(g.length>1){c.text=g[g.length-1];for(let C=0;C<g.length-1;C++)o.push({text:g[C],path:null})}o.push(c)}),o}isPromise(t){return t&&"function"==typeof t.then}wrapIntoObservable(t){return t instanceof yy.y?t:this.isPromise(t)?(0,kR.D)(Promise.resolve(t)):(0,zc.of)(t)}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(e.zs3))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-breadcrumbs"]],decls:1,vars:1,consts:[["class","breadcrumb",4,"ngIf"],[1,"breadcrumb"],["class","breadcrumb-item",3,"ngClass",4,"ngFor","ngForOf"],[1,"breadcrumb-item",3,"ngClass"],["preserveFragment","",3,"routerLink",4,"ngIf"],[4,"ngIf"],["preserveFragment","",3,"routerLink"]],template:function(t,o){1&t&&e.YNc(0,Jh,2,1,"ol",0),2&t&&e.Q6J("ngIf",o.crumbs.length)},directives:[_.O5,_.sg,_.mk,Yo.yS],styles:['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{background-color:transparent;border-radius:0;margin-top:8px;padding:8px 0}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{content:"\\f101";font-family:"ForkAwesome";padding:0 5px 0 7px}']}),n})();const C_=function(n){return{dashboard:n}};let MM=(()=>{class n{constructor(t,o,c,g){this.router=t,this.summaryService=o,this.taskManagerService=c,this.faviconService=g,this.subs=new gu.w}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService)),this.faviconService.init()}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(Yo.F0),e.Y36(zm.J),e.Y36(fw.k),e.Y36(QC))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-workbench-layout"]],features:[e._Bn([QC])],decls:6,vars:3,consts:[[1,"container-fluid","h-100",3,"ngClass"]],template:function(t,o){1&t&&(e.TgZ(0,"block-ui"),e.TgZ(1,"cd-navigation"),e.TgZ(2,"div",0),e._UZ(3,"cd-context"),e._UZ(4,"cd-breadcrumbs"),e._UZ(5,"router-outlet"),e.qZA(),e.qZA(),e.qZA()),2&t&&(e.xp6(2),e.Q6J("ngClass",e.VKq(1,C_,o.isDashboardPage())))},directives:[Pb,SM,_.mk,$v,hd,Yo.lC],styles:[".dashboard[_ngcontent-%COMP%]{background-color:#e9ecef;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto;position:absolute}"]}),n})();var Bl=i(78139),ag=i(16482),zE=i.n(ag);function xg(n){return(xg="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&"function"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s})(n)}function W1(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function AM(n,s){for(var t=0;t<s.length;t++){var o=s[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(n,o.key,o)}}function sx(n,s,t){return s in n?Object.defineProperty(n,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[s]=t,n}function WE(n,s){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);s&&(o=o.filter(function(c){return Object.getOwnPropertyDescriptor(n,c).enumerable})),t.push.apply(t,o)}return t}function JE(n){for(var s=1;s<arguments.length;s++){var t=null!=arguments[s]?arguments[s]:{};s%2?WE(t,!0).forEach(function(o){sx(n,o,t[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):WE(t).forEach(function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(t,o))})}return n}function Q1(n){return(Q1=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(n)}function Hy(n,s){return(Hy=Object.setPrototypeOf||function(o,c){return o.__proto__=c,o})(n,s)}function ax(n,s){return!s||"object"!=typeof s&&"function"!=typeof s?function(n){if(void 0===n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}(n):s}var X1={};function xM(n,s,t){return function(n){return null==n}(n)?t:function(n){return null!==n&&"object"===xg(n)&&"function"==typeof n.get&&"function"==typeof n.has}(n)?n.has(s)?n.get(s):t:hasOwnProperty.call(n,s)?n[s]:t}function K1(n,s,t){for(var o=0;o!==s.length;)if((n=xM(n,s[o++],X1))===X1)return t;return n}function QE(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=XE(s,t),c=n||Object.keys(JE({},t,{},s));return c.every(o)}function XE(n,s){return function(t){if("string"==typeof t)return(0,ag.is)(s[t],n[t]);if(Array.isArray(t))return(0,ag.is)(K1(s,t),K1(n,t));throw new TypeError("Invalid key: expected Array or string: "+t)}}const HR=function(n){function s(){return W1(this,s),ax(this,Q1(s).apply(this,arguments))}return function(n,s){if("function"!=typeof s&&null!==s)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(s&&s.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),s&&Hy(n,s)}(s,n),function(n,s,t){s&&AM(n.prototype,s)}(s,[{key:"shouldComponentUpdate",value:function(o){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!QE(this.updateOnProps,this.props,o,"updateOnProps")||!QE(this.updateOnStates,this.state,c,"updateOnStates")}}]),s}(Bl.Component);function DM(n,s){if(Array.prototype.indexOf)return n.indexOf(s);for(var t=0,o=n.length;t<o;t++)if(n[t]===s)return t;return-1}function Xm(n,s){for(var t=n.length-1;t>=0;t--)!0===s(n[t])&&n.splice(t,1)}function ux(n){throw new Error("Unhandled case for value: '".concat(n,"'"))}var t,RM=function(){function n(s){void 0===s&&(s={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=s.tagName||"",this.attrs=s.attrs||{},this.innerHTML=s.innerHtml||s.innerHTML||""}return n.prototype.setTagName=function(s){return this.tagName=s,this},n.prototype.getTagName=function(){return this.tagName||""},n.prototype.setAttr=function(s,t){return this.getAttrs()[s]=t,this},n.prototype.getAttr=function(s){return this.getAttrs()[s]},n.prototype.setAttrs=function(s){return Object.assign(this.getAttrs(),s),this},n.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},n.prototype.setClass=function(s){return this.setAttr("class",s)},n.prototype.addClass=function(s){for(var C,t=this.getClass(),o=this.whitespaceRegex,c=t?t.split(o):[],g=s.split(o);C=g.shift();)-1===DM(c,C)&&c.push(C);return this.getAttrs().class=c.join(" "),this},n.prototype.removeClass=function(s){for(var C,t=this.getClass(),o=this.whitespaceRegex,c=t?t.split(o):[],g=s.split(o);c.length&&(C=g.shift());){var D=DM(c,C);-1!==D&&c.splice(D,1)}return this.getAttrs().class=c.join(" "),this},n.prototype.getClass=function(){return this.getAttrs().class||""},n.prototype.hasClass=function(s){return-1!==(" "+this.getClass()+" ").indexOf(" "+s+" ")},n.prototype.setInnerHTML=function(s){return this.innerHTML=s,this},n.prototype.setInnerHtml=function(s){return this.setInnerHTML(s)},n.prototype.getInnerHTML=function(){return this.innerHTML||""},n.prototype.getInnerHtml=function(){return this.getInnerHTML()},n.prototype.toAnchorString=function(){var s=this.getTagName(),t=this.buildAttrsStr();return["<",s,t=t?" "+t:"",">",this.getInnerHtml(),"</",s,">"].join("")},n.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var s=this.getAttrs(),t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(o+'="'+s[o]+'"');return t.join(" ")},n}(),NM=function(){function n(s){void 0===s&&(s={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=s.newWindow||!1,this.truncate=s.truncate||{},this.className=s.className||""}return n.prototype.build=function(s){return new RM({tagName:"a",attrs:this.createAttrs(s),innerHtml:this.processAnchorText(s.getAnchorText())})},n.prototype.createAttrs=function(s){var t={href:s.getAnchorHref()},o=this.createCssClass(s);return o&&(t.class=o),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<s.getAnchorText().length&&(t.title=s.getAnchorHref()),t},n.prototype.createCssClass=function(s){var t=this.className;if(t){for(var o=[t],c=s.getCssClassSuffixes(),g=0,C=c.length;g<C;g++)o.push(t+"-"+c[g]);return o.join(" ")}return""},n.prototype.processAnchorText=function(s){return this.doTruncate(s)},n.prototype.doTruncate=function(s){var t=this.truncate;if(!t||!t.length)return s;var o=t.length,c=t.location;return"smart"===c?function(n,s,t){var o,c;null==t?(t="&hellip;",c=3,o=8):(c=t.length,o=t.length);var C=function(xe){var U="";return xe.scheme&&xe.host&&(U+=xe.scheme+"://"),xe.host&&(U+=xe.host),xe.path&&(U+="/"+xe.path),xe.query&&(U+="?"+xe.query),xe.fragment&&(U+="#"+xe.fragment),U},D=function(xe,U){var pt=U/2,ht=Math.ceil(pt),wt=-1*Math.floor(pt),It="";return wt<0&&(It=xe.substr(wt)),xe.substr(0,ht)+t+It};if(n.length<=s)return n;var U,pt,ht,P=s-c,j=(U={},(ht=(pt=n).match(/^([a-z]+):\/\//i))&&(U.scheme=ht[1],pt=pt.substr(ht[0].length)),(ht=pt.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(U.host=ht[1],pt=pt.substr(ht[0].length)),(ht=pt.match(/^\/(.*?)(?=(\?|#|$))/i))&&(U.path=ht[1],pt=pt.substr(ht[0].length)),(ht=pt.match(/^\?(.*?)(?=(#|$))/i))&&(U.query=ht[1],pt=pt.substr(ht[0].length)),(ht=pt.match(/^#(.*?)$/i))&&(U.fragment=ht[1]),U);if(j.query){var W=j.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);W&&(j.query=j.query.substr(0,W[1].length),n=C(j))}if(n.length<=s||(j.host&&(j.host=j.host.replace(/^www\./,""),n=C(j)),n.length<=s))return n;var re="";if(j.host&&(re+=j.host),re.length>=P)return j.host.length==s?(j.host.substr(0,s-c)+t).substr(0,P+o):D(re,P).substr(0,P+o);var ie="";if(j.path&&(ie+="/"+j.path),j.query&&(ie+="?"+j.query),ie){if((re+ie).length>=P)return(re+ie).length==s?(re+ie).substr(0,s):(re+D(ie,P-re.length)).substr(0,P+o);re+=ie}if(j.fragment){var _e="#"+j.fragment;if((re+_e).length>=P)return(re+_e).length==s?(re+_e).substr(0,s):(re+D(_e,P-re.length)).substr(0,P+o);re+=_e}if(j.scheme&&j.host){var Re=j.scheme+"://";if((re+Re).length<P)return(Re+re).substr(0,s)}if(re.length<=s)return re;var ke="";return P>0&&(ke=re.substr(-1*Math.floor(P/2))),(re.substr(0,Math.ceil(P/2))+t+ke).substr(0,P+o)}(s,o):"middle"===c?function(n,s,t){if(n.length<=s)return n;var o,c;null==t?(t="&hellip;",o=8,c=3):(o=t.length,c=t.length);var g=s-c,C="";return g>0&&(C=n.substr(-1*Math.floor(g/2))),(n.substr(0,Math.ceil(g/2))+t+C).substr(0,g+o)}(s,o):function(n,s,t){return function(n,s,t){var o;return n.length>s&&(null==t?(t="&hellip;",o=3):o=t.length,n=n.substring(0,s-o)+t),n}(n,s,void 0)}(s,o)},n}(),sm=function(){function n(s){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=s.tagBuilder,this.matchedText=s.matchedText,this.offset=s.offset}return n.prototype.getMatchedText=function(){return this.matchedText},n.prototype.setOffset=function(s){this.offset=s},n.prototype.getOffset=function(){return this.offset},n.prototype.getCssClassSuffixes=function(){return[this.getType()]},n.prototype.buildTag=function(){return this.tagBuilder.build(this)},n}(),PM=function(n){function s(t){var o=n.call(this,t)||this;return o.email="",o.email=t.email,o}return(0,ha.ZT)(s,n),s.prototype.getType=function(){return"email"},s.prototype.getEmail=function(){return this.email},s.prototype.getAnchorHref=function(){return"mailto:"+this.email},s.prototype.getAnchorText=function(){return this.email},s}(sm),IM=function(n){function s(t){var o=n.call(this,t)||this;return o.serviceName="",o.hashtag="",o.serviceName=t.serviceName,o.hashtag=t.hashtag,o}return(0,ha.ZT)(s,n),s.prototype.getType=function(){return"hashtag"},s.prototype.getServiceName=function(){return this.serviceName},s.prototype.getHashtag=function(){return this.hashtag},s.prototype.getAnchorHref=function(){var t=this.serviceName,o=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+o;case"facebook":return"https://www.facebook.com/hashtag/"+o;case"instagram":return"https://instagram.com/explore/tags/"+o;case"tiktok":return"https://www.tiktok.com/tag/"+o;default:throw new Error("Unknown service name to point hashtag to: "+t)}},s.prototype.getAnchorText=function(){return"#"+this.hashtag},s}(sm),LM=function(n){function s(t){var o=n.call(this,t)||this;return o.serviceName="twitter",o.mention="",o.mention=t.mention,o.serviceName=t.serviceName,o}return(0,ha.ZT)(s,n),s.prototype.getType=function(){return"mention"},s.prototype.getMention=function(){return this.mention},s.prototype.getServiceName=function(){return this.serviceName},s.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;default:throw new Error("Unknown service name to point mention to: "+this.serviceName)}},s.prototype.getAnchorText=function(){return"@"+this.mention},s.prototype.getCssClassSuffixes=function(){var t=n.prototype.getCssClassSuffixes.call(this),o=this.getServiceName();return o&&t.push(o),t},s}(sm),FM=function(n){function s(t){var o=n.call(this,t)||this;return o.number="",o.plusSign=!1,o.number=t.number,o.plusSign=t.plusSign,o}return(0,ha.ZT)(s,n),s.prototype.getType=function(){return"phone"},s.prototype.getPhoneNumber=function(){return this.number},s.prototype.getNumber=function(){return this.getPhoneNumber()},s.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},s.prototype.getAnchorText=function(){return this.matchedText},s}(sm),kM=function(n){function s(t){var o=n.call(this,t)||this;return o.url="",o.urlMatchType="scheme",o.protocolUrlMatch=!1,o.protocolRelativeMatch=!1,o.stripPrefix={scheme:!0,www:!0},o.stripTrailingSlash=!0,o.decodePercentEncoding=!0,o.schemePrefixRegex=/^(https?:\/\/)?/i,o.wwwPrefixRegex=/^(https?:\/\/)?(www\.)?/i,o.protocolRelativeRegex=/^\/\//,o.protocolPrepended=!1,o.urlMatchType=t.urlMatchType,o.url=t.url,o.protocolUrlMatch=t.protocolUrlMatch,o.protocolRelativeMatch=t.protocolRelativeMatch,o.stripPrefix=t.stripPrefix,o.stripTrailingSlash=t.stripTrailingSlash,o.decodePercentEncoding=t.decodePercentEncoding,o}return(0,ha.ZT)(s,n),s.prototype.getType=function(){return"url"},s.prototype.getUrlMatchType=function(){return this.urlMatchType},s.prototype.getUrl=function(){var t=this.url;return!this.protocolRelativeMatch&&!this.protocolUrlMatch&&!this.protocolPrepended&&(t=this.url="http://"+t,this.protocolPrepended=!0),t},s.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},s.prototype.getAnchorText=function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix.scheme&&(t=this.stripSchemePrefix(t)),this.stripPrefix.www&&(t=this.stripWwwPrefix(t)),this.stripTrailingSlash&&(t=this.removeTrailingSlash(t)),this.decodePercentEncoding&&(t=this.removePercentEncoding(t)),t},s.prototype.stripSchemePrefix=function(t){return t.replace(this.schemePrefixRegex,"")},s.prototype.stripWwwPrefix=function(t){return t.replace(this.wwwPrefixRegex,"$1")},s.prototype.stripProtocolRelativePrefix=function(t){return t.replace(this.protocolRelativeRegex,"")},s.prototype.removeTrailingSlash=function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t},s.prototype.removePercentEncoding=function(t){var o=t.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(o)}catch(c){return o}},s}(sm),Uv=function(s){this.__jsduckDummyDocProp=null,this.tagBuilder=s.tagBuilder},e0=/[A-Za-z]/,fx=/[\d]/,px=/[\D]/,am=/\s/,t0=/['"]/,hx=/[\x00-\x1F\x7F]/,_x=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,$M=_x+/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source+/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,Uy=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,vx=$M+Uy,Yc=$M+Uy,n0="(?:["+Uy+"]{1,3}\\.){3}["+Uy+"]{1,3}",yx="["+Yc+"](?:["+Yc+"\\-_]{0,61}["+Yc+"])?",HM=function(n){return"(?=("+yx+"))\\"+n},By=function(n){return"(?:"+HM(n)+"(?:\\."+HM(n+1)+"){0,126}|"+n0+")"},qE=(new RegExp("["+Yc+".\\-]*["+Yc+"\\-]"),new RegExp("[".concat(Yc,"]"))),eT=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|verm\xf6gensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|verm\xf6gensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|\u0645\u0648\u0631\u064a\u062a\u0627\u0646\u064a\u0627|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|\u043a\u0430\u0442\u043e\u043b\u0438\u043a|\u0627\u062a\u0635\u0627\u0644\u0627\u062a|\u0627\u0644\u0628\u062d\u0631\u064a\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0639\u0644\u064a\u0627\u0646|\u067e\u0627\u06a9\u0633\u062a\u0627\u0646|\u0643\u0627\u062b\u0648\u0644\u064a\u0643|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|\u043c\u043e\u0441\u043a\u0432\u0430|\u043e\u043d\u043b\u0430\u0439\u043d|\u0627\u0628\u0648\u0638\u0628\u064a|\u0627\u0631\u0627\u0645\u0643\u0648|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0641\u0644\u0633\u0637\u064a\u0646|\u0645\u0644\u064a\u0633\u064a\u0627|\u092d\u093e\u0930\u0924\u092e\u094d|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u30d5\u30a1\u30c3\u30b7\u30e7\u30f3|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|\u05d9\u05e9\u05e8\u05d0\u05dc|\u0627\u06cc\u0631\u0627\u0646|\u0628\u0627\u0632\u0627\u0631|\u0628\u06be\u0627\u0631\u062a|\u0633\u0648\u062f\u0627\u0646|\u0633\u0648\u0631\u064a\u0629|\u0647\u0645\u0631\u0627\u0647|\u092d\u093e\u0930\u094b\u0924|\u0938\u0902\u0917\u0920\u0928|\u09ac\u09be\u0982\u09b2\u09be|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0d2d\u0d3e\u0d30\u0d24\u0d02|\u5609\u91cc\u5927\u9152\u5e97|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|\u0434\u0435\u0442\u0438|\u0441\u0430\u0439\u0442|\u0628\u0627\u0631\u062a|\u0628\u064a\u062a\u0643|\u0680\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0634\u0628\u0643\u0629|\u0639\u0631\u0627\u0642|\u0639\u0645\u0627\u0646|\u0645\u0648\u0642\u0639|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u09ad\u09be\u09f0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b2d\u0b3e\u0b30\u0b24|\u0cad\u0cbe\u0cb0\u0ca4|\u0dbd\u0d82\u0d9a\u0dcf|\u30a2\u30de\u30be\u30f3|\u30b0\u30fc\u30b0\u30eb|\u30af\u30e9\u30a6\u30c9|\u30dd\u30a4\u30f3\u30c8|\u7ec4\u7ec7\u673a\u6784|\u96fb\u8a0a\u76c8\u79d1|\u9999\u683c\u91cc\u62c9|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|\u0431\u0435\u043b|\u043a\u043e\u043c|\u049b\u0430\u0437|\u043c\u043a\u0434|\u043c\u043e\u043d|\u043e\u0440\u0433|\u0440\u0443\u0441|\u0441\u0440\u0431|\u0443\u043a\u0440|\u0570\u0561\u0575|\u05e7\u05d5\u05dd|\u0639\u0631\u0628|\u0642\u0637\u0631|\u0643\u0648\u0645|\u0645\u0635\u0631|\u0915\u0949\u092e|\u0928\u0947\u091f|\u0e04\u0e2d\u0e21|\u0e44\u0e17\u0e22|\u0ea5\u0eb2\u0ea7|\u30b9\u30c8\u30a2|\u30bb\u30fc\u30eb|\u307f\u3093\u306a|\u4e2d\u6587\u7f51|\u4e9a\u9a6c\u900a|\u5929\u4e3b\u6559|\u6211\u7231\u4f60|\u65b0\u52a0\u5761|\u6de1\u9a6c\u9521|\u8bfa\u57fa\u4e9a|\u98de\u5229\u6d66|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|\u03b5\u03bb|\u03b5\u03c5|\u0431\u0433|\u0435\u044e|\u0440\u0444|\u10d2\u10d4|\ub2f7\ub137|\ub2f7\ucef4|\uc0bc\uc131|\ud55c\uad6d|\u30b3\u30e0|\u4e16\u754c|\u4e2d\u4fe1|\u4e2d\u56fd|\u4e2d\u570b|\u4f01\u4e1a|\u4f5b\u5c71|\u4fe1\u606f|\u5065\u5eb7|\u516b\u5366|\u516c\u53f8|\u516c\u76ca|\u53f0\u6e7e|\u53f0\u7063|\u5546\u57ce|\u5546\u5e97|\u5546\u6807|\u5609\u91cc|\u5728\u7ebf|\u5927\u62ff|\u5a31\u4e50|\u5bb6\u96fb|\u5e7f\u4e1c|\u5fae\u535a|\u6148\u5584|\u624b\u673a|\u62db\u8058|\u653f\u52a1|\u653f\u5e9c|\u65b0\u95fb|\u65f6\u5c1a|\u66f8\u7c4d|\u673a\u6784|\u6e38\u620f|\u6fb3\u9580|\u70b9\u770b|\u79fb\u52a8|\u7f51\u5740|\u7f51\u5e97|\u7f51\u7ad9|\u7f51\u7edc|\u8054\u901a|\u8c37\u6b4c|\u8d2d\u7269|\u901a\u8ca9|\u96c6\u56e2|\u98df\u54c1|\u9910\u5385|\u9999\u6e2f)/,bx=new RegExp("[".concat(Yc,"!#$%&'*+/=?^_`{|}~-]")),Ex=new RegExp("^".concat(eT.source,"$")),UM=function(n){function s(){var t=null!==n&&n.apply(this,arguments)||this;return t.localPartCharRegex=bx,t.strictTldRegex=Ex,t}return(0,ha.ZT)(s,n),s.prototype.parseMatches=function(t){for(var o=this.tagBuilder,c=this.localPartCharRegex,g=this.strictTldRegex,C=[],D=t.length,P=new Zy,j={m:"a",a:"i",i:"l",l:"t",t:"o",o:":"},W=0,re=0,ie=P;W<D;){var ge=t.charAt(W);switch(re){case 0:"m"===(Lt=ge)?wt(1):c.test(Lt)&&wt();break;case 1:Le(t.charAt(W-1),ge);break;case 2:Re(ge);break;case 3:ke(ge);break;case 4:xe(ge);break;case 5:U(ge);break;case 6:pt(ge);break;case 7:ht(ge);break;default:ux(re)}W++}var Lt;return dn(),C;function Le(Lt,Dn){":"===Lt?c.test(Dn)?(re=2,ie=new Zy((0,ha.pi)((0,ha.pi)({},ie),{hasMailtoPrefix:!0}))):It():j[Lt]===Dn||(c.test(Dn)?re=2:"."===Dn?re=3:"@"===Dn?re=4:It())}function Re(Lt){"."===Lt?re=3:"@"===Lt?re=4:c.test(Lt)||It()}function ke(Lt){"."===Lt||"@"===Lt?It():c.test(Lt)?re=2:It()}function xe(Lt){qE.test(Lt)?re=5:It()}function U(Lt){"."===Lt?re=7:"-"===Lt?re=6:qE.test(Lt)||dn()}function pt(Lt){"-"===Lt||"."===Lt?dn():qE.test(Lt)?re=5:dn()}function ht(Lt){"."===Lt||"-"===Lt?dn():qE.test(Lt)?(re=5,ie=new Zy((0,ha.pi)((0,ha.pi)({},ie),{hasDomainDot:!0}))):dn()}function wt(Lt){void 0===Lt&&(Lt=2),re=Lt,ie=new Zy({idx:W})}function It(){re=0,ie=P}function dn(){if(ie.hasDomainDot){var Lt=t.slice(ie.idx,W);/[-.]$/.test(Lt)&&(Lt=Lt.slice(0,-1));var Dn=ie.hasMailtoPrefix?Lt.slice("mailto:".length):Lt;Pr=(Dn.split(".").pop()||"").toLowerCase(),g.test(Pr)&&C.push(new PM({tagBuilder:o,matchedText:Lt,offset:ie.idx,email:Dn}))}var Pr;It()}},s}(Uv),Zy=function(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.hasMailtoPrefix=!!s.hasMailtoPrefix,this.hasDomainDot=!!s.hasDomainDot},Tx=function(){function n(){}return n.isValid=function(s,t){return!(t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(s,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(s,t)&&!this.isValidIpAddress(s)||this.containsMultipleDots(s))},n.isValidIpAddress=function(s){var t=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==s.match(t)},n.containsMultipleDots=function(s){var t=s;return this.hasFullProtocolRegex.test(s)&&(t=s.split("://")[1]),t.split("/")[0].indexOf("..")>-1},n.isValidUriScheme=function(s){var t=s.match(this.uriSchemeRegex),o=t&&t[0].toLowerCase();return"javascript:"!==o&&"vbscript:"!==o},n.urlMatchDoesNotHaveProtocolOrDot=function(s,t){return!(!s||t&&this.hasFullProtocolRegex.test(t)||-1!==s.indexOf("."))},n.urlMatchDoesNotHaveAtLeastOneWordChar=function(s,t){return!(!s||!t||this.hasFullProtocolRegex.test(t)||this.hasWordCharAfterProtocolRegex.test(s))},n.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,n.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,n.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+_x+"]"),n.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,n}(),BM=(t=new RegExp("[/?#](?:["+Yc+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^\u2713]*["+Yc+"\\-+&@#/%=~_()|'$*\\[\\]{}\u2713])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,By(2),")","|","(","(//)?",/(?:www\.)/.source,By(6),")","|","(","(//)?",By(10)+"\\.",eT.source,"(?![-"+vx+"])",")",")","(?::[0-9]+)?","(?:"+t.source+")?"].join(""),"gi")),Sx=new RegExp("["+Yc+"]"),YM=function(n){function s(t){var o=n.call(this,t)||this;return o.stripPrefix={scheme:!0,www:!0},o.stripTrailingSlash=!0,o.decodePercentEncoding=!0,o.matcherRegex=BM,o.wordCharRegExp=Sx,o.stripPrefix=t.stripPrefix,o.stripTrailingSlash=t.stripTrailingSlash,o.decodePercentEncoding=t.decodePercentEncoding,o}return(0,ha.ZT)(s,n),s.prototype.parseMatches=function(t){for(var j,o=this.matcherRegex,c=this.stripPrefix,g=this.stripTrailingSlash,C=this.decodePercentEncoding,D=this.tagBuilder,P=[],W=function(){var ie=j[0],ge=j[1],_e=j[4],ke=j.index,xe=j[5]||j[9],U=t.charAt(ke-1);if(!Tx.isValid(ie,ge)||ke>0&&"@"===U||ke>0&&xe&&re.wordCharRegExp.test(U))return"continue";if(/\?$/.test(ie)&&(ie=ie.substr(0,ie.length-1)),re.matchHasUnbalancedClosingParen(ie))ie=ie.substr(0,ie.length-1);else{var pt=re.matchHasInvalidCharAfterTld(ie,ge);pt>-1&&(ie=ie.substr(0,pt))}var ht=["http://","https://"].find(function(Lt){return!!ge&&-1!==ge.indexOf(Lt)});if(ht){var wt=ie.indexOf(ht);ie=ie.substr(wt),ge=ge.substr(wt),ke+=wt}P.push(new kM({tagBuilder:D,matchedText:ie,offset:ke,urlMatchType:ge?"scheme":_e?"www":"tld",url:ie,protocolUrlMatch:!!ge,protocolRelativeMatch:!!xe,stripPrefix:c,stripTrailingSlash:g,decodePercentEncoding:C}))},re=this;null!==(j=o.exec(t));)W();return P},s.prototype.matchHasUnbalancedClosingParen=function(t){var c,o=t.charAt(t.length-1);if(")"===o)c="(";else if("]"===o)c="[";else{if("}"!==o)return!1;c="{"}for(var g=0,C=0,D=t.length-1;C<D;C++){var P=t.charAt(C);P===c?g++:P===o&&(g=Math.max(g-1,0))}return 0===g},s.prototype.matchHasInvalidCharAfterTld=function(t,o){if(!t)return-1;var c=0;o&&(c=t.indexOf(":"),t=t.slice(c));var C=new RegExp("^((.?//)?[-."+Yc+"]*[-"+Yc+"]\\.[-"+Yc+"]+)").exec(t);return null===C?-1:(c+=C[1].length,t=t.slice(C[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(t)?c:-1)},s}(Uv),BR=new RegExp("#[_".concat(Yc,"]{1,139}(?![_").concat(Yc,"])"),"g"),YR=new RegExp("[^"+Yc+"]"),Cx=function(n){function s(t){var o=n.call(this,t)||this;return o.serviceName="twitter",o.matcherRegex=BR,o.nonWordCharRegex=YR,o.serviceName=t.serviceName,o}return(0,ha.ZT)(s,n),s.prototype.parseMatches=function(t){for(var P,o=this.matcherRegex,c=this.nonWordCharRegex,g=this.serviceName,C=this.tagBuilder,D=[];null!==(P=o.exec(t));){var j=P.index,W=t.charAt(j-1);if(0===j||c.test(W)){var re=P[0],ie=P[0].slice(1);D.push(new IM({tagBuilder:C,matchedText:re,offset:j,serviceName:g,hashtag:ie}))}}return D},s}(Uv),Ax=new RegExp("".concat(/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/.source,"|").concat(/(0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source),"g"),ZM=function(n){function s(){var t=null!==n&&n.apply(this,arguments)||this;return t.matcherRegex=Ax,t}return(0,ha.ZT)(s,n),s.prototype.parseMatches=function(t){for(var C,o=this.matcherRegex,c=this.tagBuilder,g=[];null!==(C=o.exec(t));){var D=C[0],P=D.replace(/[^0-9,;#]/g,""),j=!(!C[1]&&!C[2]),W=0==C.index?"":t.substr(C.index-1,1),re=t.substr(C.index+D.length,1),ie=!W.match(/\d/)&&!re.match(/\d/);this.testMatch(C[3])&&this.testMatch(D)&&ie&&g.push(new FM({tagBuilder:c,matchedText:D,offset:C.index,number:P,plusSign:j}))}return g},s.prototype.testMatch=function(t){return px.test(t)},s}(Uv),Ox=new RegExp("@[_".concat(Yc,"]{1,50}(?![_").concat(Yc,"])"),"g"),wx=new RegExp("@[_.".concat(Yc,"]{1,30}(?![_").concat(Yc,"])"),"g"),xx=new RegExp("@[-_.".concat(Yc,"]{1,50}(?![-_").concat(Yc,"])"),"g"),jM=new RegExp("@[_.".concat(Yc,"]{1,23}[_").concat(Yc,"](?![_").concat(Yc,"])"),"g"),nT=new RegExp("[^"+Yc+"]"),GM=function(n){function s(t){var o=n.call(this,t)||this;return o.serviceName="twitter",o.matcherRegexes={twitter:Ox,instagram:wx,soundcloud:xx,tiktok:jM},o.nonWordCharRegex=nT,o.serviceName=t.serviceName,o}return(0,ha.ZT)(s,n),s.prototype.parseMatches=function(t){var P,o=this.serviceName,c=this.matcherRegexes[this.serviceName],g=this.nonWordCharRegex,C=this.tagBuilder,D=[];if(!c)return D;for(;null!==(P=c.exec(t));){var j=P.index,W=t.charAt(j-1);if(0===j||g.test(W)){var re=P[0].replace(/\.+$/g,""),ie=re.slice(1);D.push(new LM({tagBuilder:C,matchedText:re,offset:j,serviceName:o,mention:ie}))}}return D},s}(Uv);var Kc=function(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.type=s.type||"tag",this.name=s.name||"",this.isOpening=!!s.isOpening,this.isClosing=!!s.isClosing};const rT=function(){function n(s){void 0===s&&(s={}),this.version=n.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(s.urls),this.email="boolean"==typeof s.email?s.email:this.email,this.phone="boolean"==typeof s.phone?s.phone:this.phone,this.hashtag=s.hashtag||this.hashtag,this.mention=s.mention||this.mention,this.newWindow="boolean"==typeof s.newWindow?s.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(s.stripPrefix),this.stripTrailingSlash="boolean"==typeof s.stripTrailingSlash?s.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof s.decodePercentEncoding?s.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=s.sanitizeHtml||!1;var t=this.mention;if(!1!==t&&-1===["twitter","instagram","soundcloud","tiktok"].indexOf(t))throw new Error("invalid `mention` cfg '".concat(t,"' - see docs"));var o=this.hashtag;if(!1!==o&&-1===["twitter","facebook","instagram","tiktok"].indexOf(o))throw new Error("invalid `hashtag` cfg '".concat(o,"' - see docs"));this.truncate=this.normalizeTruncateCfg(s.truncate),this.className=s.className||this.className,this.replaceFn=s.replaceFn||this.replaceFn,this.context=s.context||this}return n.link=function(s,t){return new n(t).link(s)},n.parse=function(s,t){return new n(t).parse(s)},n.prototype.normalizeUrlsCfg=function(s){return null==s&&(s=!0),"boolean"==typeof s?{schemeMatches:s,wwwMatches:s,tldMatches:s}:{schemeMatches:"boolean"!=typeof s.schemeMatches||s.schemeMatches,wwwMatches:"boolean"!=typeof s.wwwMatches||s.wwwMatches,tldMatches:"boolean"!=typeof s.tldMatches||s.tldMatches}},n.prototype.normalizeStripPrefixCfg=function(s){return null==s&&(s=!0),"boolean"==typeof s?{scheme:s,www:s}:{scheme:"boolean"!=typeof s.scheme||s.scheme,www:"boolean"!=typeof s.www||s.www}},n.prototype.normalizeTruncateCfg=function(s){return"number"==typeof s?{length:s,location:"end"}:function(n,s){for(var t in s)s.hasOwnProperty(t)&&void 0===n[t]&&(n[t]=s[t]);return n}(s||{},{length:Number.POSITIVE_INFINITY,location:"end"})},n.prototype.parse=function(s){var t=this,o=["a","style","script"],c=0,g=[];return function(n,s){for(var t=s.onOpenTag,o=s.onCloseTag,c=s.onText,g=s.onComment,C=s.onDoctype,D=new Kc,P=0,j=n.length,W=0,re=0,ie=D;P<j;){var ge=n.charAt(P);switch(W){case 0:"<"===ge&&Tn();break;case 1:"!"===(Jr=ge)?W=13:"/"===Jr?(W=2,ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{isClosing:!0}))):"<"===Jr?Tn():e0.test(Jr)?(W=3,ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{isOpening:!0}))):(W=0,ie=D);break;case 2:ke(ge);break;case 3:Re(ge);break;case 4:xe(ge);break;case 5:U(ge);break;case 6:pt(ge);break;case 7:ht(ge);break;case 8:wt(ge);break;case 9:It(ge);break;case 10:dn(ge);break;case 11:Lt(ge);break;case 12:Dn(ge);break;case 13:"--"===n.substr(P,2)?(P+=2,ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{type:"comment"})),W=14):"DOCTYPE"===n.substr(P,7).toUpperCase()?(P+=7,ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{type:"doctype"})),W=20):Qn();break;case 14:$r(ge);break;case 15:ur(ge);break;case 16:Pr(ge);break;case 17:xr(ge);break;case 18:fn(ge);break;case 19:Nn(ge);break;case 20:$n(ge);break;default:ux(W)}P++}var Jr;function Re(Jr){am.test(Jr)?(ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{name:ii()})),W=4):"<"===Jr?Tn():"/"===Jr?(ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{name:ii()})),W=12):">"===Jr?(ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{name:ii()})),Yr()):!e0.test(Jr)&&!fx.test(Jr)&&":"!==Jr&&Qn()}function ke(Jr){">"===Jr?Qn():e0.test(Jr)?W=3:Qn()}function xe(Jr){am.test(Jr)||("/"===Jr?W=12:">"===Jr?Yr():"<"===Jr?Tn():"="===Jr||t0.test(Jr)||hx.test(Jr)?Qn():W=5)}function U(Jr){am.test(Jr)?W=6:"/"===Jr?W=12:"="===Jr?W=7:">"===Jr?Yr():"<"===Jr?Tn():t0.test(Jr)&&Qn()}function pt(Jr){am.test(Jr)||("/"===Jr?W=12:"="===Jr?W=7:">"===Jr?Yr():"<"===Jr?Tn():t0.test(Jr)?Qn():W=5)}function ht(Jr){am.test(Jr)||('"'===Jr?W=8:"'"===Jr?W=9:/[>=`]/.test(Jr)?Qn():"<"===Jr?Tn():W=10)}function wt(Jr){'"'===Jr&&(W=11)}function It(Jr){"'"===Jr&&(W=11)}function dn(Jr){am.test(Jr)?W=4:">"===Jr?Yr():"<"===Jr&&Tn()}function Lt(Jr){am.test(Jr)?W=4:"/"===Jr?W=12:">"===Jr?Yr():"<"===Jr?Tn():(W=4,P--)}function Dn(Jr){">"===Jr?(ie=new Kc((0,ha.pi)((0,ha.pi)({},ie),{isClosing:!0})),Yr()):W=4}function $r(Jr){"-"===Jr?W=15:">"===Jr?Qn():W=16}function ur(Jr){"-"===Jr?W=18:">"===Jr?Qn():W=16}function Pr(Jr){"-"===Jr&&(W=17)}function xr(Jr){W="-"===Jr?18:16}function fn(Jr){">"===Jr?Yr():"!"===Jr?W=19:"-"===Jr||(W=16)}function Nn(Jr){"-"===Jr?W=17:">"===Jr?Yr():W=16}function $n(Jr){">"===Jr?Yr():"<"===Jr&&Tn()}function Qn(){W=0,ie=D}function Tn(){W=1,ie=new Kc({idx:P})}function Yr(){var Jr=n.slice(re,ie.idx);Jr&&c(Jr,re),"comment"===ie.type?g(ie.idx):"doctype"===ie.type?C(ie.idx):(ie.isOpening&&t(ie.name,ie.idx),ie.isClosing&&o(ie.name,ie.idx)),Qn(),re=P+1}function ii(){return n.slice(ie.idx+(ie.isClosing?2:1),P).toLowerCase()}re<P&&function(){var Jr=n.slice(re,P);c(Jr,re),re=P+1}()}(s,{onOpenTag:function(C){o.indexOf(C)>=0&&c++},onText:function(C,D){if(0===c){var j=function(n,s){if(!s.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var c,t=[],o=0;c=s.exec(n);)t.push(n.substring(o,c.index)),t.push(c[0]),o=c.index+c[0].length;return t.push(n.substring(o)),t}(C,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),W=D;j.forEach(function(re,ie){if(ie%2==0){var ge=t.parseText(re,W);g.push.apply(g,ge)}W+=re.length})}},onCloseTag:function(C){o.indexOf(C)>=0&&(c=Math.max(c-1,0))},onComment:function(C){},onDoctype:function(C){}}),g=this.compactMatches(g),g=this.removeUnwantedMatches(g)},n.prototype.compactMatches=function(s){s.sort(function(P,j){return P.getOffset()-j.getOffset()});for(var t=0;t<s.length-1;){var o=s[t],c=o.getOffset(),g=o.getMatchedText().length,C=c+g;if(t+1<s.length){if(s[t+1].getOffset()===c){var D=s[t+1].getMatchedText().length>g?t:t+1;s.splice(D,1);continue}if(s[t+1].getOffset()<C){s.splice(t+1,1);continue}}t++}return s},n.prototype.removeUnwantedMatches=function(s){return this.hashtag||Xm(s,function(t){return"hashtag"===t.getType()}),this.email||Xm(s,function(t){return"email"===t.getType()}),this.phone||Xm(s,function(t){return"phone"===t.getType()}),this.mention||Xm(s,function(t){return"mention"===t.getType()}),this.urls.schemeMatches||Xm(s,function(t){return"url"===t.getType()&&"scheme"===t.getUrlMatchType()}),this.urls.wwwMatches||Xm(s,function(t){return"url"===t.getType()&&"www"===t.getUrlMatchType()}),this.urls.tldMatches||Xm(s,function(t){return"url"===t.getType()&&"tld"===t.getUrlMatchType()}),s},n.prototype.parseText=function(s,t){void 0===t&&(t=0),t=t||0;for(var o=this.getMatchers(),c=[],g=0,C=o.length;g<C;g++){for(var D=o[g].parseMatches(s),P=0,j=D.length;P<j;P++)D[P].setOffset(t+D[P].getOffset());c.push.apply(c,D)}return c},n.prototype.link=function(s){if(!s)return"";this.sanitizeHtml&&(s=s.replace(/</g,"&lt;").replace(/>/g,"&gt;"));for(var t=this.parse(s),o=[],c=0,g=0,C=t.length;g<C;g++){var D=t[g];o.push(s.substring(c,D.getOffset())),o.push(this.createMatchReturnVal(D)),c=D.getOffset()+D.getMatchedText().length}return o.push(s.substring(c)),o.join("")},n.prototype.createMatchReturnVal=function(s){var t;return this.replaceFn&&(t=this.replaceFn.call(this.context,s)),"string"==typeof t?t:!1===t?s.getMatchedText():t instanceof RM?t.toAnchorString():s.buildTag().toAnchorString()},n.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var s=this.getTagBuilder(),t=[new Cx({tagBuilder:s,serviceName:this.hashtag}),new UM({tagBuilder:s}),new ZM({tagBuilder:s}),new GM({tagBuilder:s,serviceName:this.mention}),new YM({tagBuilder:s,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=t},n.prototype.getTagBuilder=function(){var s=this.tagBuilder;return s||(s=this.tagBuilder=new NM({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),s},n.version="3.16.0",n.AnchorTagBuilder=NM,n.HtmlTag=RM,n.matcher={Email:UM,Hashtag:Cx,Matcher:Uv,Mention:GM,Phone:ZM,Url:YM},n.match={Email:PM,Hashtag:IM,Match:sm,Mention:LM,Phone:FM,Url:kM},n}();var Dx=/www|@|\:\/\//;function zM(n){return/^<a[>\s]/i.test(n)}function WM(n){return/^<\/a\s*>/i.test(n)}function JM(){var n=[],s=new rT({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case"url":n.push({text:t.matchedText,url:t.getUrl()});break;case"email":n.push({text:t.matchedText,url:"mailto:"+t.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:n,autolinker:s}}function Rx(n){var s,t,o,c,g,C,D,P,j,W,re,_e,Le,ie=n.tokens,ge=null;for(t=0,o=ie.length;t<o;t++)if("inline"===ie[t].type)for(re=0,s=(c=ie[t].children).length-1;s>=0;s--)if("link_close"!==(g=c[s]).type){if("htmltag"===g.type&&(zM(g.content)&&re>0&&re--,WM(g.content)&&re++),!(re>0)&&"text"===g.type&&Dx.test(g.content)){if(ge||(_e=(ge=JM()).links,Le=ge.autolinker),C=g.content,_e.length=0,Le.link(C),!_e.length)continue;for(D=[],W=g.level,P=0;P<_e.length;P++)!n.inline.validateLink(_e[P].url)||((j=C.indexOf(_e[P].text))&&D.push({type:"text",content:C.slice(0,j),level:W}),D.push({type:"link_open",href:_e[P].url,title:"",level:W++}),D.push({type:"text",content:_e[P].text,level:W}),D.push({type:"link_close",level:--W}),C=C.slice(j+_e[P].text.length));C.length&&D.push({type:"text",content:C,level:W}),ie[t].children=c=[].concat(c.slice(0,s),D,c.slice(s+1))}}else for(s--;c[s].level!==g.level&&"link_open"!==c[s].type;)s--}function Nx(n){n.core.ruler.push("linkify",Rx)}var Px=i(23358),QM=i.n(Px),Ix=i(1653),ZR=i.n(Ix),Lx=i(86101),Fx=i.n(Lx),lm=i(64975);function kx(n){if(lm(n))return n}var um=i(63380),iT=i(66627),$x=i(8225);function oT(n){if(void 0!==um&&null!=iT(n)||null!=n["@@iterator"])return $x(n)}var Hx=i(19621);function r0(n,s){(null==s||s>n.length)&&(s=n.length);for(var t=0,o=new Array(s);t<s;t++)o[t]=n[t];return o}function i0(n,s){var t;if(n){if("string"==typeof n)return r0(n,s);var o=Hx(t=Object.prototype.toString.call(n)).call(t,8,-1);if("Object"===o&&n.constructor&&(o=n.constructor.name),"Map"===o||"Set"===o)return $x(n);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r0(n,s)}}function sT(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function XM(n){return kx(n)||oT(n)||i0(n)||sT()}var KM=i(53757),qM=i.n(KM),e2=i(48129),Ux=i.n(e2),Bx=i(31507),Yx=i.n(Bx),Zx=i(17346),o0=i.n(Zx),t2=i(12232),n2=i.n(t2),aT=i(69138);function lT(n,s,t,o,c,g,C){try{var D=n[g](C),P=D.value}catch(j){return void t(j)}D.done?s(P):aT.resolve(P).then(o,c)}function s0(n){return function(){var s=this,t=arguments;return new aT(function(o,c){var g=n.apply(s,t);function C(P){lT(g,o,c,C,D,"next",P)}function D(P){lT(g,o,c,C,D,"throw",P)}C(void 0)})}}var r2=i(33950),M_=i.n(r2),i2=i(86413),Dg=i.n(i2),o2=i(14226),jx=i.n(o2),Gx=i(64871),a0=i.n(Gx),l0=i(41776),Vx=i.n(l0),uT=i(12666),ug=i.n(uT);function cm(n,s){var t=void 0!==um&&iT(n)||n["@@iterator"];if(!t){if(lm(n)||(t=i0(n))||s&&n&&"number"==typeof n.length){t&&(n=t);var o=0,c=function(){};return{s:c,n:function(){return o>=n.length?{done:!0}:{done:!1,value:n[o++]}},e:function(j){throw j},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var D,g=!0,C=!1;return{s:function(){t=t.call(n)},n:function(){var j=t.next();return g=j.done,j},e:function(j){C=!0,D=j},f:function(){try{!g&&null!=t.return&&t.return()}finally{if(C)throw D}}}}var jy=i(66342);function vc(n){return(vc="function"==typeof um&&"symbol"==typeof jy?function(s){return typeof s}:function(s){return s&&"function"==typeof um&&s.constructor===um&&s!==um.prototype?"symbol":typeof s})(n)}function A_(n,s){return kx(n)||function(n,s){var t=null==n?null:void 0!==um&&iT(n)||n["@@iterator"];if(null!=t){var C,D,o=[],c=!0,g=!1;try{for(t=t.call(n);!(c=(C=t.next()).done)&&(o.push(C.value),!s||o.length!==s);c=!0);}catch(P){g=!0,D=P}finally{try{!c&&null!=t.return&&t.return()}finally{if(g)throw D}}return o}}(n,s)||i0(n,s)||sT()}var cT=i(35524),dm=i.n(cT),s2=i(28086),u0=i.n(s2),dT=i(30071),fT=i.n(dT),Wx=i(44859),c0=i.n(Wx),Jx=i(37940),Lu=i.n(Jx),pT=i(46245),Su=i.n(pT),a2=i(34377),la=i.n(a2),l2=i(15865),u2=i.n(l2),c2=i(10068),zp=i.n(c2),d2=(i(71577),i(59009)),Gy=i.n(d2);function Qx(n){return null==n}var Sf={isNothing:Qx,isObject:function(n){return"object"==typeof n&&null!==n},toArray:function(n){return Array.isArray(n)?n:Qx(n)?[]:[n]},repeat:function(n,s){var o,t="";for(o=0;o<s;o+=1)t+=n;return t},isNegativeZero:function(n){return 0===n&&Number.NEGATIVE_INFINITY===1/n},extend:function(n,s){var t,o,c,g;if(s)for(t=0,o=(g=Object.keys(s)).length;t<o;t+=1)n[c=g[t]]=s[c];return n}};function Vy(n,s){var t="",o=n.reason||"(unknown reason)";return n.mark?(n.mark.name&&(t+='in "'+n.mark.name+'" '),t+="("+(n.mark.line+1)+":"+(n.mark.column+1)+")",!s&&n.mark.snippet&&(t+="\n\n"+n.mark.snippet),o+" "+t):o}function Zv(n,s){Error.call(this),this.name="YAMLException",this.reason=n,this.mark=s,this.message=Vy(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}(Zv.prototype=Object.create(Error.prototype)).constructor=Zv,Zv.prototype.toString=function(s){return this.name+": "+Vy(this,s)};var sp=Zv;function jv(n,s,t,o,c){var g="",C="",D=Math.floor(c/2)-1;return o-s>D&&(s=o-D+(g=" ... ").length),t-o>D&&(t=o+D-(C=" ...").length),{str:g+n.slice(s,t).replace(/\t/g,"\u2192")+C,pos:o-s+g.length}}function f0(n,s){return Sf.repeat(" ",s-n.length)+n}var nD=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],h2=["scalar","sequence","mapping"],Wf=function(n,s){if(s=s||{},Object.keys(s).forEach(function(t){if(-1===nD.indexOf(t))throw new sp('Unknown option "'+t+'" is met in definition of "'+n+'" YAML type.')}),this.options=s,this.tag=n,this.kind=s.kind||null,this.resolve=s.resolve||function(){return!0},this.construct=s.construct||function(t){return t},this.instanceOf=s.instanceOf||null,this.predicate=s.predicate||null,this.represent=s.represent||null,this.representName=s.representName||null,this.defaultStyle=s.defaultStyle||null,this.multi=s.multi||!1,this.styleAliases=function(n){var s={};return null!==n&&Object.keys(n).forEach(function(t){n[t].forEach(function(o){s[String(o)]=t})}),s}(s.styleAliases||null),-1===h2.indexOf(this.kind))throw new sp('Unknown kind "'+this.kind+'" is specified for "'+n+'" YAML type.')};function Wy(n,s){var t=[];return n[s].forEach(function(o){var c=t.length;t.forEach(function(g,C){g.tag===o.tag&&g.kind===o.kind&&g.multi===o.multi&&(c=C)}),t[c]=o}),t}function gT(n){return this.extend(n)}gT.prototype.extend=function(s){var t=[],o=[];if(s instanceof Wf)o.push(s);else if(Array.isArray(s))o=o.concat(s);else{if(!s||!Array.isArray(s.implicit)&&!Array.isArray(s.explicit))throw new sp("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");s.implicit&&(t=t.concat(s.implicit)),s.explicit&&(o=o.concat(s.explicit))}t.forEach(function(g){if(!(g instanceof Wf))throw new sp("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(g.loadKind&&"scalar"!==g.loadKind)throw new sp("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(g.multi)throw new sp("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),o.forEach(function(g){if(!(g instanceof Wf))throw new sp("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var c=Object.create(gT.prototype);return c.implicit=(this.implicit||[]).concat(t),c.explicit=(this.explicit||[]).concat(o),c.compiledImplicit=Wy(c,"implicit"),c.compiledExplicit=Wy(c,"explicit"),c.compiledTypeMap=function(){var s,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function o(c){c.multi?(n.multi[c.kind].push(c),n.multi.fallback.push(c)):n[c.kind][c.tag]=n.fallback[c.tag]=c}for(s=0,t=arguments.length;s<t;s+=1)arguments[s].forEach(o);return n}(c.compiledImplicit,c.compiledExplicit),c};var g2=gT,mT=new Wf("tag:yaml.org,2002:str",{kind:"scalar",construct:function(n){return null!==n?n:""}}),vT=new Wf("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(n){return null!==n?n:[]}}),yT=new Wf("tag:yaml.org,2002:map",{kind:"mapping",construct:function(n){return null!==n?n:{}}}),m2=new g2({explicit:[mT,vT,yT]}),b2=new Wf("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(n){if(null===n)return!0;var s=n.length;return 1===s&&"~"===n||4===s&&("null"===n||"Null"===n||"NULL"===n)},construct:function(){return null},predicate:function(n){return null===n},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"}),bT=new Wf("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(n){if(null===n)return!1;var s=n.length;return 4===s&&("true"===n||"True"===n||"TRUE"===n)||5===s&&("false"===n||"False"===n||"FALSE"===n)},construct:function(n){return"true"===n||"True"===n||"TRUE"===n},predicate:function(n){return"[object Boolean]"===Object.prototype.toString.call(n)},represent:{lowercase:function(n){return n?"true":"false"},uppercase:function(n){return n?"TRUE":"FALSE"},camelcase:function(n){return n?"True":"False"}},defaultStyle:"lowercase"});function S2(n){return 48<=n&&n<=57||65<=n&&n<=70||97<=n&&n<=102}function C2(n){return 48<=n&&n<=55}function oD(n){return 48<=n&&n<=57}var lD=new Wf("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(n){if(null===n)return!1;var c,s=n.length,t=0,o=!1;if(!s)return!1;if(("-"===(c=n[t])||"+"===c)&&(c=n[++t]),"0"===c){if(t+1===s)return!0;if("b"===(c=n[++t])){for(t++;t<s;t++)if("_"!==(c=n[t])){if("0"!==c&&"1"!==c)return!1;o=!0}return o&&"_"!==c}if("x"===c){for(t++;t<s;t++)if("_"!==(c=n[t])){if(!S2(n.charCodeAt(t)))return!1;o=!0}return o&&"_"!==c}if("o"===c){for(t++;t<s;t++)if("_"!==(c=n[t])){if(!C2(n.charCodeAt(t)))return!1;o=!0}return o&&"_"!==c}}if("_"===c)return!1;for(;t<s;t++)if("_"!==(c=n[t])){if(!oD(n.charCodeAt(t)))return!1;o=!0}return!(!o||"_"===c)},construct:function(n){var o,s=n,t=1;if(-1!==s.indexOf("_")&&(s=s.replace(/_/g,"")),("-"===(o=s[0])||"+"===o)&&("-"===o&&(t=-1),o=(s=s.slice(1))[0]),"0"===s)return 0;if("0"===o){if("b"===s[1])return t*parseInt(s.slice(2),2);if("x"===s[1])return t*parseInt(s.slice(2),16);if("o"===s[1])return t*parseInt(s.slice(2),8)}return t*parseInt(s,10)},predicate:function(n){return"[object Number]"===Object.prototype.toString.call(n)&&n%1==0&&!Sf.isNegativeZero(n)},represent:{binary:function(n){return n>=0?"0b"+n.toString(2):"-0b"+n.toString(2).slice(1)},octal:function(n){return n>=0?"0o"+n.toString(8):"-0o"+n.toString(8).slice(1)},decimal:function(n){return n.toString(10)},hexadecimal:function(n){return n>=0?"0x"+n.toString(16).toUpperCase():"-0x"+n.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),zR=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),QR=/^[-+]?[0-9]+e/,uD=new Wf("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(n){return!(null===n||!zR.test(n)||"_"===n[n.length-1])},construct:function(n){var s,t;return t="-"===(s=n.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(s[0])>=0&&(s=s.slice(1)),".inf"===s?1===t?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===s?NaN:t*parseFloat(s,10)},predicate:function(n){return"[object Number]"===Object.prototype.toString.call(n)&&(n%1!=0||Sf.isNegativeZero(n))},represent:function(n,s){var t;if(isNaN(n))switch(s){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===n)switch(s){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===n)switch(s){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Sf.isNegativeZero(n))return"-0.0";return t=n.toString(10),QR.test(t)?t.replace("e",".e"):t},defaultStyle:"lowercase"}),cD=m2.extend({implicit:[b2,bT,lD,uD]}),dD=cD,A2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),fD=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),hD=new Wf("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(n){return null!==n&&(null!==A2.exec(n)||null!==fD.exec(n))},construct:function(n){var s,t,o,c,g,C,D,ie,P=0,j=null;if(null===(s=A2.exec(n))&&(s=fD.exec(n)),null===s)throw new Error("Date resolve error");if(t=+s[1],o=+s[2]-1,c=+s[3],!s[4])return new Date(Date.UTC(t,o,c));if(g=+s[4],C=+s[5],D=+s[6],s[7]){for(P=s[7].slice(0,3);P.length<3;)P+="0";P=+P}return s[9]&&(j=6e4*(60*+s[10]+ +(s[11]||0)),"-"===s[9]&&(j=-j)),ie=new Date(Date.UTC(t,o,c,g,C,D,P)),j&&ie.setTime(ie.getTime()-j),ie},instanceOf:Date,represent:function(n){return n.toISOString()}}),O2=new Wf("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(n){return"<<"===n||null===n}}),ET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",w2=new Wf("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(n){if(null===n)return!1;var s,t,o=0,c=n.length,g=ET;for(t=0;t<c;t++)if(!((s=g.indexOf(n.charAt(t)))>64)){if(s<0)return!1;o+=6}return o%8==0},construct:function(n){var s,t,o=n.replace(/[\r\n=]/g,""),c=o.length,g=ET,C=0,D=[];for(s=0;s<c;s++)s%4==0&&s&&(D.push(C>>16&255),D.push(C>>8&255),D.push(255&C)),C=C<<6|g.indexOf(o.charAt(s));return 0==(t=c%4*6)?(D.push(C>>16&255),D.push(C>>8&255),D.push(255&C)):18===t?(D.push(C>>10&255),D.push(C>>2&255)):12===t&&D.push(C>>4&255),new Uint8Array(D)},predicate:function(n){return"[object Uint8Array]"===Object.prototype.toString.call(n)},represent:function(n){var o,c,s="",t=0,g=n.length,C=ET;for(o=0;o<g;o++)o%3==0&&o&&(s+=C[t>>18&63],s+=C[t>>12&63],s+=C[t>>6&63],s+=C[63&t]),t=(t<<8)+n[o];return 0==(c=g%3)?(s+=C[t>>18&63],s+=C[t>>12&63],s+=C[t>>6&63],s+=C[63&t]):2===c?(s+=C[t>>10&63],s+=C[t>>4&63],s+=C[t<<2&63],s+=C[64]):1===c&&(s+=C[t>>2&63],s+=C[t<<4&63],s+=C[64],s+=C[64]),s}}),gD=Object.prototype.hasOwnProperty,mD=Object.prototype.toString,vD=new Wf("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(n){if(null===n)return!0;var t,o,c,g,C,s=[],D=n;for(t=0,o=D.length;t<o;t+=1){if(C=!1,"[object Object]"!==mD.call(c=D[t]))return!1;for(g in c)if(gD.call(c,g)){if(C)return!1;C=!0}if(!C)return!1;if(-1!==s.indexOf(g))return!1;s.push(g)}return!0},construct:function(n){return null!==n?n:[]}}),aN=Object.prototype.toString,x2=new Wf("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(n){if(null===n)return!0;var s,t,o,c,g,C=n;for(g=new Array(C.length),s=0,t=C.length;s<t;s+=1){if("[object Object]"!==aN.call(o=C[s])||1!==(c=Object.keys(o)).length)return!1;g[s]=[c[0],o[c[0]]]}return!0},construct:function(n){if(null===n)return[];var s,t,o,c,g,C=n;for(g=new Array(C.length),s=0,t=C.length;s<t;s+=1)o=C[s],c=Object.keys(o),g[s]=[c[0],o[c[0]]];return g}}),TT=Object.prototype.hasOwnProperty,R2=new Wf("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(n){if(null===n)return!0;var s,t=n;for(s in t)if(TT.call(t,s)&&null!==t[s])return!1;return!0},construct:function(n){return null!==n?n:{}}}),ST=dD.extend({implicit:[hD,O2],explicit:[w2,vD,x2,R2]}),cg=Object.prototype.hasOwnProperty,uN=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,cN=/[\x85\u2028\u2029]/,dN=/[,\[\]\{\}]/,N2=/^(?:!|!!|![a-z\-]+!)$/i,bD=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function h0(n){return Object.prototype.toString.call(n)}function dg(n){return 10===n||13===n}function Vv(n){return 9===n||32===n}function mh(n){return 9===n||32===n||10===n||13===n}function fm(n){return 44===n||91===n||93===n||123===n||125===n}function ED(n){var s;return 48<=n&&n<=57?n-48:97<=(s=32|n)&&s<=102?s-97+10:-1}function fN(n){return 120===n?2:117===n?4:85===n?8:0}function pN(n){return 48<=n&&n<=57?n-48:-1}function P2(n){return 48===n?"\0":97===n?"\x07":98===n?"\b":116===n||9===n?"\t":110===n?"\n":118===n?"\v":102===n?"\f":114===n?"\r":101===n?"\x1b":32===n?" ":34===n?'"':47===n?"/":92===n?"\\":78===n?"\x85":95===n?"\xa0":76===n?"\u2028":80===n?"\u2029":""}function hN(n){return n<=65535?String.fromCharCode(n):String.fromCharCode(55296+(n-65536>>10),56320+(n-65536&1023))}for(var wT=new Array(256),I2=new Array(256),_0=0;_0<256;_0++)wT[_0]=P2(_0)?1:0,I2[_0]=P2(_0);function _N(n,s){this.input=n,this.filename=s.filename||null,this.schema=s.schema||ST,this.onWarning=s.onWarning||null,this.legacy=s.legacy||!1,this.json=s.json||!1,this.listener=s.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=n.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function L2(n,s){var t={name:n.filename,buffer:n.input.slice(0,-1),position:n.position,line:n.line,column:n.position-n.lineStart};return t.snippet=function(n,s){if(s=Object.create(s||null),!n.buffer)return null;s.maxLength||(s.maxLength=79),"number"!=typeof s.indent&&(s.indent=1),"number"!=typeof s.linesBefore&&(s.linesBefore=3),"number"!=typeof s.linesAfter&&(s.linesAfter=2);for(var g,t=/\r?\n|\r|\0/g,o=[0],c=[],C=-1;g=t.exec(n.buffer);)c.push(g.index),o.push(g.index+g[0].length),n.position<=g.index&&C<0&&(C=o.length-2);C<0&&(C=o.length-1);var P,j,D="",W=Math.min(n.line+s.linesAfter,c.length).toString().length,re=s.maxLength-(s.indent+W+3);for(P=1;P<=s.linesBefore&&!(C-P<0);P++)j=jv(n.buffer,o[C-P],c[C-P],n.position-(o[C]-o[C-P]),re),D=Sf.repeat(" ",s.indent)+f0((n.line-P+1).toString(),W)+" | "+j.str+"\n"+D;for(j=jv(n.buffer,o[C],c[C],n.position,re),D+=Sf.repeat(" ",s.indent)+f0((n.line+1).toString(),W)+" | "+j.str+"\n",D+=Sf.repeat("-",s.indent+W+3+j.pos)+"^\n",P=1;P<=s.linesAfter&&!(C+P>=c.length);P++)j=jv(n.buffer,o[C+P],c[C+P],n.position-(o[C]-o[C+P]),re),D+=Sf.repeat(" ",s.indent)+f0((n.line+P+1).toString(),W)+" | "+j.str+"\n";return D.replace(/\n$/,"")}(t),new sp(s,t)}function da(n,s){throw L2(n,s)}function Xy(n,s){n.onWarning&&n.onWarning.call(null,L2(n,s))}var F2={YAML:function(s,t,o){var c,g,C;null!==s.version&&da(s,"duplication of %YAML directive"),1!==o.length&&da(s,"YAML directive accepts exactly one argument"),null===(c=/^([0-9]+)\.([0-9]+)$/.exec(o[0]))&&da(s,"ill-formed argument of the YAML directive"),g=parseInt(c[1],10),C=parseInt(c[2],10),1!==g&&da(s,"unacceptable YAML version of the document"),s.version=o[0],s.checkLineBreaks=C<2,1!==C&&2!==C&&Xy(s,"unsupported YAML version of the document")},TAG:function(s,t,o){var c,g;2!==o.length&&da(s,"TAG directive accepts exactly two arguments"),g=o[1],N2.test(c=o[0])||da(s,"ill-formed tag handle (first argument) of the TAG directive"),cg.call(s.tagMap,c)&&da(s,'there is a previously declared suffix for "'+c+'" tag handle'),bD.test(g)||da(s,"ill-formed tag prefix (second argument) of the TAG directive");try{g=decodeURIComponent(g)}catch(C){da(s,"tag prefix is malformed: "+g)}s.tagMap[c]=g}};function pm(n,s,t,o){var c,g,C,D;if(s<t){if(D=n.input.slice(s,t),o)for(c=0,g=D.length;c<g;c+=1)9===(C=D.charCodeAt(c))||32<=C&&C<=1114111||da(n,"expected valid JSON character");else uN.test(D)&&da(n,"the stream contains non-printable characters");n.result+=D}}function Ky(n,s,t,o){var c,g,C,D;for(Sf.isObject(t)||da(n,"cannot merge mappings; the provided source object is unacceptable"),C=0,D=(c=Object.keys(t)).length;C<D;C+=1)cg.call(s,g=c[C])||(s[g]=t[g],o[g]=!0)}function zv(n,s,t,o,c,g,C,D,P){var j,W;if(Array.isArray(c))for(j=0,W=(c=Array.prototype.slice.call(c)).length;j<W;j+=1)Array.isArray(c[j])&&da(n,"nested arrays are not supported inside keys"),"object"==typeof c&&"[object Object]"===h0(c[j])&&(c[j]="[object Object]");if("object"==typeof c&&"[object Object]"===h0(c)&&(c="[object Object]"),c=String(c),null===s&&(s={}),"tag:yaml.org,2002:merge"===o)if(Array.isArray(g))for(j=0,W=g.length;j<W;j+=1)Ky(n,s,g[j],t);else Ky(n,s,g,t);else!n.json&&!cg.call(t,c)&&cg.call(s,c)&&(n.line=C||n.line,n.lineStart=D||n.lineStart,n.position=P||n.position,da(n,"duplicated mapping key")),"__proto__"===c?Object.defineProperty(s,c,{configurable:!0,enumerable:!0,writable:!0,value:g}):s[c]=g,delete t[c];return s}function Np(n){var s;10===(s=n.input.charCodeAt(n.position))?n.position++:13===s?(n.position++,10===n.input.charCodeAt(n.position)&&n.position++):da(n,"a line break is expected"),n.line+=1,n.lineStart=n.position,n.firstTabInLine=-1}function of(n,s,t){for(var o=0,c=n.input.charCodeAt(n.position);0!==c;){for(;Vv(c);)9===c&&-1===n.firstTabInLine&&(n.firstTabInLine=n.position),c=n.input.charCodeAt(++n.position);if(s&&35===c)do{c=n.input.charCodeAt(++n.position)}while(10!==c&&13!==c&&0!==c);if(!dg(c))break;for(Np(n),c=n.input.charCodeAt(n.position),o++,n.lineIndent=0;32===c;)n.lineIndent++,c=n.input.charCodeAt(++n.position)}return-1!==t&&0!==o&&n.lineIndent<t&&Xy(n,"deficient indentation"),o}function Wv(n){var t,s=n.position;return!(45!==(t=n.input.charCodeAt(s))&&46!==t||t!==n.input.charCodeAt(s+1)||t!==n.input.charCodeAt(s+2)||(s+=3,t=n.input.charCodeAt(s),0!==t&&!mh(t)))}function xT(n,s){1===s?n.result+=" ":s>1&&(n.result+=Sf.repeat("\n",s-1))}function RT(n,s){var t,P,o=n.tag,c=n.anchor,g=[],D=!1;if(-1!==n.firstTabInLine)return!1;for(null!==n.anchor&&(n.anchorMap[n.anchor]=g),P=n.input.charCodeAt(n.position);0!==P&&(-1!==n.firstTabInLine&&(n.position=n.firstTabInLine,da(n,"tab characters must not be used in indentation")),45===P&&mh(n.input.charCodeAt(n.position+1)));)if(D=!0,n.position++,of(n,!0,-1)&&n.lineIndent<=s)g.push(null),P=n.input.charCodeAt(n.position);else if(t=n.line,Km(n,s,3,!1,!0),g.push(n.result),of(n,!0,-1),P=n.input.charCodeAt(n.position),(n.line===t||n.lineIndent>s)&&0!==P)da(n,"bad indentation of a sequence entry");else if(n.lineIndent<s)break;return!!D&&(n.tag=o,n.anchor=c,n.kind="sequence",n.result=g,!0)}function CD(n){var s,c,g,C,t=!1,o=!1;if(33!==(C=n.input.charCodeAt(n.position)))return!1;if(null!==n.tag&&da(n,"duplication of a tag property"),60===(C=n.input.charCodeAt(++n.position))?(t=!0,C=n.input.charCodeAt(++n.position)):33===C?(o=!0,c="!!",C=n.input.charCodeAt(++n.position)):c="!",s=n.position,t){do{C=n.input.charCodeAt(++n.position)}while(0!==C&&62!==C);n.position<n.length?(g=n.input.slice(s,n.position),C=n.input.charCodeAt(++n.position)):da(n,"unexpected end of the stream within a verbatim tag")}else{for(;0!==C&&!mh(C);)33===C&&(o?da(n,"tag suffix cannot contain exclamation marks"):(c=n.input.slice(s-1,n.position+1),N2.test(c)||da(n,"named tag handle cannot contain such characters"),o=!0,s=n.position+1)),C=n.input.charCodeAt(++n.position);g=n.input.slice(s,n.position),dN.test(g)&&da(n,"tag suffix cannot contain flow indicator characters")}g&&!bD.test(g)&&da(n,"tag name cannot contain such characters: "+g);try{g=decodeURIComponent(g)}catch(D){da(n,"tag name is malformed: "+g)}return t?n.tag=g:cg.call(n.tagMap,c)?n.tag=n.tagMap[c]+g:"!"===c?n.tag="!"+g:"!!"===c?n.tag="tag:yaml.org,2002:"+g:da(n,'undeclared tag handle "'+c+'"'),!0}function MD(n){var s,t;if(38!==(t=n.input.charCodeAt(n.position)))return!1;for(null!==n.anchor&&da(n,"duplication of an anchor property"),t=n.input.charCodeAt(++n.position),s=n.position;0!==t&&!mh(t)&&!fm(t);)t=n.input.charCodeAt(++n.position);return n.position===s&&da(n,"name of an anchor node must contain at least one character"),n.anchor=n.input.slice(s,n.position),!0}function Km(n,s,t,o,c){var g,C,D,re,ie,ge,_e,Le,Re,P=1,j=!1,W=!1;if(null!==n.listener&&n.listener("open",n),n.tag=null,n.anchor=null,n.kind=null,n.result=null,g=C=D=4===t||3===t,o&&of(n,!0,-1)&&(j=!0,n.lineIndent>s?P=1:n.lineIndent===s?P=0:n.lineIndent<s&&(P=-1)),1===P)for(;CD(n)||MD(n);)of(n,!0,-1)?(j=!0,D=g,n.lineIndent>s?P=1:n.lineIndent===s?P=0:n.lineIndent<s&&(P=-1)):D=!1;if(D&&(D=j||c),(1===P||4===t)&&(Le=1===t||2===t?s:s+1,Re=n.position-n.lineStart,1===P?D&&(RT(n,Re)||function(n,s,t){var o,c,g,C,D,P,xe,j=n.tag,W=n.anchor,re={},ie=Object.create(null),ge=null,_e=null,Le=null,Re=!1,ke=!1;if(-1!==n.firstTabInLine)return!1;for(null!==n.anchor&&(n.anchorMap[n.anchor]=re),xe=n.input.charCodeAt(n.position);0!==xe;){if(!Re&&-1!==n.firstTabInLine&&(n.position=n.firstTabInLine,da(n,"tab characters must not be used in indentation")),o=n.input.charCodeAt(n.position+1),g=n.line,63!==xe&&58!==xe||!mh(o)){if(C=n.line,D=n.lineStart,P=n.position,!Km(n,t,2,!1,!0))break;if(n.line===g){for(xe=n.input.charCodeAt(n.position);Vv(xe);)xe=n.input.charCodeAt(++n.position);if(58===xe)mh(xe=n.input.charCodeAt(++n.position))||da(n,"a whitespace character is expected after the key-value separator within a block mapping"),Re&&(zv(n,re,ie,ge,_e,null,C,D,P),ge=_e=Le=null),ke=!0,Re=!1,c=!1,ge=n.tag,_e=n.result;else{if(!ke)return n.tag=j,n.anchor=W,!0;da(n,"can not read an implicit mapping pair; a colon is missed")}}else{if(!ke)return n.tag=j,n.anchor=W,!0;da(n,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===xe?(Re&&(zv(n,re,ie,ge,_e,null,C,D,P),ge=_e=Le=null),ke=!0,Re=!0,c=!0):Re?(Re=!1,c=!0):da(n,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),n.position+=1,xe=o;if((n.line===g||n.lineIndent>s)&&(Re&&(C=n.line,D=n.lineStart,P=n.position),Km(n,s,4,!0,c)&&(Re?_e=n.result:Le=n.result),Re||(zv(n,re,ie,ge,_e,Le,C,D,P),ge=_e=Le=null),of(n,!0,-1),xe=n.input.charCodeAt(n.position)),(n.line===g||n.lineIndent>s)&&0!==xe)da(n,"bad indentation of a mapping entry");else if(n.lineIndent<s)break}return Re&&zv(n,re,ie,ge,_e,null,C,D,P),ke&&(n.tag=j,n.anchor=W,n.kind="mapping",n.result=re),ke}(n,Re,Le))||function(n,s){var o,c,g,D,W,re,ie,ge,Le,Re,ke,xe,t=!0,C=n.tag,P=n.anchor,_e=Object.create(null);if(91===(xe=n.input.charCodeAt(n.position)))W=93,ge=!1,D=[];else{if(123!==xe)return!1;W=125,ge=!0,D={}}for(null!==n.anchor&&(n.anchorMap[n.anchor]=D),xe=n.input.charCodeAt(++n.position);0!==xe;){if(of(n,!0,s),(xe=n.input.charCodeAt(n.position))===W)return n.position++,n.tag=C,n.anchor=P,n.kind=ge?"mapping":"sequence",n.result=D,!0;t?44===xe&&da(n,"expected the node content, but found ','"):da(n,"missed comma between flow collection entries"),ke=null,re=ie=!1,63===xe&&mh(n.input.charCodeAt(n.position+1))&&(re=ie=!0,n.position++,of(n,!0,s)),o=n.line,c=n.lineStart,g=n.position,Km(n,s,1,!1,!0),Re=n.tag,Le=n.result,of(n,!0,s),xe=n.input.charCodeAt(n.position),(ie||n.line===o)&&58===xe&&(re=!0,xe=n.input.charCodeAt(++n.position),of(n,!0,s),Km(n,s,1,!1,!0),ke=n.result),ge?zv(n,D,_e,Re,Le,ke,o,c,g):D.push(re?zv(n,null,_e,Re,Le,ke,o,c,g):Le),of(n,!0,s),44===(xe=n.input.charCodeAt(n.position))?(t=!0,xe=n.input.charCodeAt(++n.position)):t=!1}da(n,"unexpected end of the stream within a flow collection")}(n,Le)?W=!0:(C&&function(n,s){var t,o,W,re,c=1,g=!1,C=!1,D=s,P=0,j=!1;if(124===(re=n.input.charCodeAt(n.position)))o=!1;else{if(62!==re)return!1;o=!0}for(n.kind="scalar",n.result="";0!==re;)if(43===(re=n.input.charCodeAt(++n.position))||45===re)1===c?c=43===re?3:2:da(n,"repeat of a chomping mode identifier");else{if(!((W=pN(re))>=0))break;0===W?da(n,"bad explicit indentation width of a block scalar; it cannot be less than one"):C?da(n,"repeat of an indentation width identifier"):(D=s+W-1,C=!0)}if(Vv(re)){do{re=n.input.charCodeAt(++n.position)}while(Vv(re));if(35===re)do{re=n.input.charCodeAt(++n.position)}while(!dg(re)&&0!==re)}for(;0!==re;){for(Np(n),n.lineIndent=0,re=n.input.charCodeAt(n.position);(!C||n.lineIndent<D)&&32===re;)n.lineIndent++,re=n.input.charCodeAt(++n.position);if(!C&&n.lineIndent>D&&(D=n.lineIndent),dg(re))P++;else{if(n.lineIndent<D){3===c?n.result+=Sf.repeat("\n",g?1+P:P):1===c&&g&&(n.result+="\n");break}for(o?Vv(re)?(j=!0,n.result+=Sf.repeat("\n",g?1+P:P)):j?(j=!1,n.result+=Sf.repeat("\n",P+1)):0===P?g&&(n.result+=" "):n.result+=Sf.repeat("\n",P):n.result+=Sf.repeat("\n",g?1+P:P),g=!0,C=!0,P=0,t=n.position;!dg(re)&&0!==re;)re=n.input.charCodeAt(++n.position);pm(n,t,n.position,!1)}}return!0}(n,Le)||function(n,s){var t,o,c;if(39!==(t=n.input.charCodeAt(n.position)))return!1;for(n.kind="scalar",n.result="",n.position++,o=c=n.position;0!==(t=n.input.charCodeAt(n.position));)if(39===t){if(pm(n,o,n.position,!0),39!==(t=n.input.charCodeAt(++n.position)))return!0;o=n.position,n.position++,c=n.position}else dg(t)?(pm(n,o,c,!0),xT(n,of(n,!1,s)),o=c=n.position):n.position===n.lineStart&&Wv(n)?da(n,"unexpected end of the document within a single quoted scalar"):(n.position++,c=n.position);da(n,"unexpected end of the stream within a single quoted scalar")}(n,Le)||function(n,s){var t,o,c,g,C,D;if(34!==(D=n.input.charCodeAt(n.position)))return!1;for(n.kind="scalar",n.result="",n.position++,t=o=n.position;0!==(D=n.input.charCodeAt(n.position));){if(34===D)return pm(n,t,n.position,!0),n.position++,!0;if(92===D){if(pm(n,t,n.position,!0),dg(D=n.input.charCodeAt(++n.position)))of(n,!1,s);else if(D<256&&wT[D])n.result+=I2[D],n.position++;else if((C=fN(D))>0){for(c=C,g=0;c>0;c--)(C=ED(D=n.input.charCodeAt(++n.position)))>=0?g=(g<<4)+C:da(n,"expected hexadecimal character");n.result+=hN(g),n.position++}else da(n,"unknown escape sequence");t=o=n.position}else dg(D)?(pm(n,t,o,!0),xT(n,of(n,!1,s)),t=o=n.position):n.position===n.lineStart&&Wv(n)?da(n,"unexpected end of the document within a double quoted scalar"):(n.position++,o=n.position)}da(n,"unexpected end of the stream within a double quoted scalar")}(n,Le)?W=!0:function(n){var s,t,o;if(42!==(o=n.input.charCodeAt(n.position)))return!1;for(o=n.input.charCodeAt(++n.position),s=n.position;0!==o&&!mh(o)&&!fm(o);)o=n.input.charCodeAt(++n.position);return n.position===s&&da(n,"name of an alias node must contain at least one character"),t=n.input.slice(s,n.position),cg.call(n.anchorMap,t)||da(n,'unidentified alias "'+t+'"'),n.result=n.anchorMap[t],of(n,!0,-1),!0}(n)?(W=!0,(null!==n.tag||null!==n.anchor)&&da(n,"alias node should not have any properties")):function(n,s,t){var c,g,C,D,P,j,W,ge,re=n.kind,ie=n.result;if(mh(ge=n.input.charCodeAt(n.position))||fm(ge)||35===ge||38===ge||42===ge||33===ge||124===ge||62===ge||39===ge||34===ge||37===ge||64===ge||96===ge||(63===ge||45===ge)&&(mh(c=n.input.charCodeAt(n.position+1))||t&&fm(c)))return!1;for(n.kind="scalar",n.result="",g=C=n.position,D=!1;0!==ge;){if(58===ge){if(mh(c=n.input.charCodeAt(n.position+1))||t&&fm(c))break}else if(35===ge){if(mh(n.input.charCodeAt(n.position-1)))break}else{if(n.position===n.lineStart&&Wv(n)||t&&fm(ge))break;if(dg(ge)){if(P=n.line,j=n.lineStart,W=n.lineIndent,of(n,!1,-1),n.lineIndent>=s){D=!0,ge=n.input.charCodeAt(n.position);continue}n.position=C,n.line=P,n.lineStart=j,n.lineIndent=W;break}}D&&(pm(n,g,C,!1),xT(n,n.line-P),g=C=n.position,D=!1),Vv(ge)||(C=n.position+1),ge=n.input.charCodeAt(++n.position)}return pm(n,g,C,!1),!!n.result||(n.kind=re,n.result=ie,!1)}(n,Le,1===t)&&(W=!0,null===n.tag&&(n.tag="?")),null!==n.anchor&&(n.anchorMap[n.anchor]=n.result)):0===P&&(W=D&&RT(n,Re))),null===n.tag)null!==n.anchor&&(n.anchorMap[n.anchor]=n.result);else if("?"===n.tag){for(null!==n.result&&"scalar"!==n.kind&&da(n,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+n.kind+'"'),re=0,ie=n.implicitTypes.length;re<ie;re+=1)if((_e=n.implicitTypes[re]).resolve(n.result)){n.result=_e.construct(n.result),n.tag=_e.tag,null!==n.anchor&&(n.anchorMap[n.anchor]=n.result);break}}else if("!"!==n.tag){if(cg.call(n.typeMap[n.kind||"fallback"],n.tag))_e=n.typeMap[n.kind||"fallback"][n.tag];else for(_e=null,re=0,ie=(ge=n.typeMap.multi[n.kind||"fallback"]).length;re<ie;re+=1)if(n.tag.slice(0,ge[re].tag.length)===ge[re].tag){_e=ge[re];break}_e||da(n,"unknown tag !<"+n.tag+">"),null!==n.result&&_e.kind!==n.kind&&da(n,"unacceptable node kind for !<"+n.tag+'> tag; it should be "'+_e.kind+'", not "'+n.kind+'"'),_e.resolve(n.result,n.tag)?(n.result=_e.construct(n.result,n.tag),null!==n.anchor&&(n.anchorMap[n.anchor]=n.result)):da(n,"cannot resolve a node with !<"+n.tag+"> explicit tag")}return null!==n.listener&&n.listener("close",n),null!==n.tag||null!==n.anchor||W}function U2(n){var t,o,c,C,s=n.position,g=!1;for(n.version=null,n.checkLineBreaks=n.legacy,n.tagMap=Object.create(null),n.anchorMap=Object.create(null);0!==(C=n.input.charCodeAt(n.position))&&(of(n,!0,-1),C=n.input.charCodeAt(n.position),!(n.lineIndent>0||37!==C));){for(g=!0,C=n.input.charCodeAt(++n.position),t=n.position;0!==C&&!mh(C);)C=n.input.charCodeAt(++n.position);for(c=[],(o=n.input.slice(t,n.position)).length<1&&da(n,"directive name must not be less than one character in length");0!==C;){for(;Vv(C);)C=n.input.charCodeAt(++n.position);if(35===C){do{C=n.input.charCodeAt(++n.position)}while(0!==C&&!dg(C));break}if(dg(C))break;for(t=n.position;0!==C&&!mh(C);)C=n.input.charCodeAt(++n.position);c.push(n.input.slice(t,n.position))}0!==C&&Np(n),cg.call(F2,o)?F2[o](n,o,c):Xy(n,'unknown document directive "'+o+'"')}of(n,!0,-1),0===n.lineIndent&&45===n.input.charCodeAt(n.position)&&45===n.input.charCodeAt(n.position+1)&&45===n.input.charCodeAt(n.position+2)?(n.position+=3,of(n,!0,-1)):g&&da(n,"directives end mark is expected"),Km(n,n.lineIndent-1,4,!1,!0),of(n,!0,-1),n.checkLineBreaks&&cN.test(n.input.slice(s,n.position))&&Xy(n,"non-ASCII line breaks are interpreted as content"),n.documents.push(n.result),n.position===n.lineStart&&Wv(n)?46===n.input.charCodeAt(n.position)&&(n.position+=3,of(n,!0,-1)):n.position<n.length-1&&da(n,"end of the stream or a document separator is expected")}function qy(n,s){s=s||{},0!==(n=String(n)).length&&(10!==n.charCodeAt(n.length-1)&&13!==n.charCodeAt(n.length-1)&&(n+="\n"),65279===n.charCodeAt(0)&&(n=n.slice(1)));var t=new _N(n,s),o=n.indexOf("\0");for(-1!==o&&(t.position=o,da(t,"null byte is not allowed in input")),t.input+="\0";32===t.input.charCodeAt(t.position);)t.lineIndent+=1,t.position+=1;for(;t.position<t.length-1;)U2(t);return t.documents}var wD=Object.prototype.toString,Y2=Object.prototype.hasOwnProperty,ap={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},$D=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],HD=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Q2(n){var s,t,o;if(s=n.toString(16).toUpperCase(),n<=255)t="x",o=2;else if(n<=65535)t="u",o=4;else{if(!(n<=4294967295))throw new sp("code point within a string may not be greater than 0xFFFFFFFF");t="U",o=8}return"\\"+t+Sf.repeat("0",o-s.length)+s}function BD(n){this.schema=n.schema||ST,this.indent=Math.max(1,n.indent||2),this.noArrayIndent=n.noArrayIndent||!1,this.skipInvalid=n.skipInvalid||!1,this.flowLevel=Sf.isNothing(n.flowLevel)?-1:n.flowLevel,this.styleMap=function(n,s){var t,o,c,g,C,D,P;if(null===s)return{};for(t={},c=0,g=(o=Object.keys(s)).length;c<g;c+=1)C=o[c],D=String(s[C]),"!!"===C.slice(0,2)&&(C="tag:yaml.org,2002:"+C.slice(2)),(P=n.compiledTypeMap.fallback[C])&&Y2.call(P.styleAliases,D)&&(D=P.styleAliases[D]),t[C]=D;return t}(this.schema,n.styles||null),this.sortKeys=n.sortKeys||!1,this.lineWidth=n.lineWidth||80,this.noRefs=n.noRefs||!1,this.noCompatMode=n.noCompatMode||!1,this.condenseFlow=n.condenseFlow||!1,this.quotingType='"'===n.quotingType?2:1,this.forceQuotes=n.forceQuotes||!1,this.replacer="function"==typeof n.replacer?n.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function rb(n,s){for(var C,t=Sf.repeat(" ",s),o=0,c=-1,g="",D=n.length;o<D;)-1===(c=n.indexOf("\n",o))?(C=n.slice(o),o=D):(C=n.slice(o,c+1),o=c+1),C.length&&"\n"!==C&&(g+=t),g+=C;return g}function sf(n,s){return"\n"+Sf.repeat(" ",n.indent*s)}function v0(n){return 32===n||9===n}function Jv(n){return 32<=n&&n<=126||161<=n&&n<=55295&&8232!==n&&8233!==n||57344<=n&&n<=65533&&65279!==n||65536<=n&&n<=1114111}function X2(n){return Jv(n)&&65279!==n&&13!==n&&10!==n}function y0(n,s,t){var o=X2(n),c=o&&!v0(n);return(t?o:o&&44!==n&&91!==n&&93!==n&&123!==n&&125!==n)&&35!==n&&!(58===s&&!c)||X2(s)&&!v0(s)&&35===n||58===s&&c}function Qv(n,s){var o,t=n.charCodeAt(s);return t>=55296&&t<=56319&&s+1<n.length&&(o=n.charCodeAt(s+1))>=56320&&o<=57343?1024*(t-55296)+o-56320+65536:t}function hm(n){return/^\n* /.test(n)}function kT(n,s,t,o,c){n.dump=function(){if(0===s.length)return 2===n.quotingType?'""':"''";if(!n.noCompatMode&&(-1!==$D.indexOf(s)||HD.test(s)))return 2===n.quotingType?'"'+s+'"':"'"+s+"'";var g=n.indent*Math.max(1,t),C=-1===n.lineWidth?-1:Math.max(Math.min(n.lineWidth,40),n.lineWidth-g);switch(function(n,s,t,o,c,g,C,D){var P,j=0,W=null,re=!1,ie=!1,ge=-1!==o,_e=-1,Le=function(n){return Jv(n)&&65279!==n&&!v0(n)&&45!==n&&63!==n&&58!==n&&44!==n&&91!==n&&93!==n&&123!==n&&125!==n&&35!==n&&38!==n&&42!==n&&33!==n&&124!==n&&61!==n&&62!==n&&39!==n&&34!==n&&37!==n&&64!==n&&96!==n}(Qv(n,0))&&function(n){return!v0(n)&&58!==n}(Qv(n,n.length-1));if(s||C)for(P=0;P<n.length;j>=65536?P+=2:P++){if(!Jv(j=Qv(n,P)))return 5;Le=Le&&y0(j,W,D),W=j}else{for(P=0;P<n.length;j>=65536?P+=2:P++){if(10===(j=Qv(n,P)))re=!0,ge&&(ie=ie||P-_e-1>o&&" "!==n[_e+1],_e=P);else if(!Jv(j))return 5;Le=Le&&y0(j,W,D),W=j}ie=ie||ge&&P-_e-1>o&&" "!==n[_e+1]}return re||ie?t>9&&hm(n)?5:C?2===g?5:2:ie?4:3:!Le||C||c(n)?2===g?5:2:1}(s,o||n.flowLevel>-1&&t>=n.flowLevel,n.indent,C,function(j){return function(n,s){var t,o;for(t=0,o=n.implicitTypes.length;t<o;t+=1)if(n.implicitTypes[t].resolve(s))return!0;return!1}(n,j)},n.quotingType,n.forceQuotes&&!o,c)){case 1:return s;case 2:return"'"+s.replace(/'/g,"''")+"'";case 3:return"|"+$T(s,n.indent)+Cf(rb(s,g));case 4:return">"+$T(s,n.indent)+Cf(rb(function(n,s){for(var g,C,t=/(\n+)([^\n]*)/g,o=(j=void 0,j=n.indexOf("\n"),t.lastIndex=j=-1!==j?j:n.length,q2(n.slice(0,j),s)),c="\n"===n[0]||" "===n[0];C=t.exec(n);){var P=C[2];g=" "===P[0],o+=C[1]+(c||g||""===P?"":"\n")+q2(P,s),c=g}var j;return o}(s,C),g));case 5:return'"'+function(n){for(var o,s="",t=0,c=0;c<n.length;t>=65536?c+=2:c++)t=Qv(n,c),!(o=ap[t])&&Jv(t)?(s+=n[c],t>=65536&&(s+=n[c+1])):s+=o||Q2(t);return s}(s)+'"';default:throw new sp("impossible error: invalid scalar style")}}()}function $T(n,s){var t=hm(n)?String(s):"",o="\n"===n[n.length-1];return t+(!o||"\n"!==n[n.length-2]&&"\n"!==n?o?"":"-":"+")+"\n"}function Cf(n){return"\n"===n[n.length-1]?n.slice(0,-1):n}function q2(n,s){if(""===n||" "===n[0])return n;for(var o,g,t=/ [^ ]/g,c=0,C=0,D=0,P="";o=t.exec(n);)(D=o.index)-c>s&&(P+="\n"+n.slice(c,g=C>c?C:D),c=g+1),C=D;return P+="\n",(P+=n.length-c>s&&C>c?n.slice(c,C)+"\n"+n.slice(C+1):n.slice(c)).slice(1)}function zD(n,s,t){var o,c,g,C,D,P;for(g=0,C=(c=t?n.explicitTypes:n.implicitTypes).length;g<C;g+=1)if(((D=c[g]).instanceOf||D.predicate)&&(!D.instanceOf||"object"==typeof s&&s instanceof D.instanceOf)&&(!D.predicate||D.predicate(s))){if(n.tag=t?D.multi&&D.representName?D.representName(s):D.tag:"?",D.represent){if(P=n.styleMap[D.tag]||D.defaultStyle,"[object Function]"===wD.call(D.represent))o=D.represent(s,P);else{if(!Y2.call(D.represent,P))throw new sp("!<"+D.tag+'> tag resolver accepts not "'+P+'" style');o=D.represent[P](s,P)}n.dump=o}return!0}return!1}function _m(n,s,t,o,c,g,C){n.tag=null,n.dump=t,zD(n,t,!1)||zD(n,t,!0);var j,D=wD.call(n.dump),P=o;o&&(o=n.flowLevel<0||n.flowLevel>s);var re,ie,W="[object Object]"===D||"[object Array]"===D;if(W&&(ie=-1!==(re=n.duplicates.indexOf(t))),(null!==n.tag&&"?"!==n.tag||ie||2!==n.indent&&s>0)&&(c=!1),ie&&n.usedDuplicates[re])n.dump="*ref_"+re;else{if(W&&ie&&!n.usedDuplicates[re]&&(n.usedDuplicates[re]=!0),"[object Object]"===D)o&&0!==Object.keys(n.dump).length?(function(n,s,t,o){var D,P,j,W,re,ie,c="",g=n.tag,C=Object.keys(t);if(!0===n.sortKeys)C.sort();else if("function"==typeof n.sortKeys)C.sort(n.sortKeys);else if(n.sortKeys)throw new sp("sortKeys must be a boolean or a function");for(D=0,P=C.length;D<P;D+=1)ie="",(!o||""!==c)&&(ie+=sf(n,s)),W=t[j=C[D]],n.replacer&&(W=n.replacer.call(t,j,W)),_m(n,s+1,j,!0,!0,!0)&&((re=null!==n.tag&&"?"!==n.tag||n.dump&&n.dump.length>1024)&&(n.dump&&10===n.dump.charCodeAt(0)?ie+="?":ie+="? "),ie+=n.dump,re&&(ie+=sf(n,s)),_m(n,s+1,W,!0,re)&&(n.dump&&10===n.dump.charCodeAt(0)?ie+=":":ie+=": ",c+=ie+=n.dump));n.tag=g,n.dump=c||"{}"}(n,s,n.dump,c),ie&&(n.dump="&ref_"+re+n.dump)):(function(n,s,t){var C,D,P,j,W,o="",c=n.tag,g=Object.keys(t);for(C=0,D=g.length;C<D;C+=1)W="",""!==o&&(W+=", "),n.condenseFlow&&(W+='"'),j=t[P=g[C]],n.replacer&&(j=n.replacer.call(t,P,j)),_m(n,s,P,!1,!1)&&(n.dump.length>1024&&(W+="? "),W+=n.dump+(n.condenseFlow?'"':"")+":"+(n.condenseFlow?"":" "),_m(n,s,j,!1,!1)&&(o+=W+=n.dump));n.tag=c,n.dump="{"+o+"}"}(n,s,n.dump),ie&&(n.dump="&ref_"+re+" "+n.dump));else if("[object Array]"===D)o&&0!==n.dump.length?(function(n,s,t,o){var C,D,P,c="",g=n.tag;for(C=0,D=t.length;C<D;C+=1)P=t[C],n.replacer&&(P=n.replacer.call(t,String(C),P)),(_m(n,s+1,P,!0,!0,!1,!0)||void 0===P&&_m(n,s+1,null,!0,!0,!1,!0))&&((!o||""!==c)&&(c+=sf(n,s)),n.dump&&10===n.dump.charCodeAt(0)?c+="-":c+="- ",c+=n.dump);n.tag=g,n.dump=c||"[]"}(n,n.noArrayIndent&&!C&&s>0?s-1:s,n.dump,c),ie&&(n.dump="&ref_"+re+n.dump)):(function(n,s,t){var g,C,D,o="",c=n.tag;for(g=0,C=t.length;g<C;g+=1)D=t[g],n.replacer&&(D=n.replacer.call(t,String(g),D)),(_m(n,s,D,!1,!1)||void 0===D&&_m(n,s,null,!1,!1))&&(""!==o&&(o+=","+(n.condenseFlow?"":" ")),o+=n.dump);n.tag=c,n.dump="["+o+"]"}(n,s,n.dump),ie&&(n.dump="&ref_"+re+" "+n.dump));else{if("[object String]"!==D){if("[object Undefined]"===D)return!1;if(n.skipInvalid)return!1;throw new sp("unacceptable kind of an object to dump "+D)}"?"!==n.tag&&kT(n,n.dump,s,g,P)}null!==n.tag&&"?"!==n.tag&&(j=encodeURI("!"===n.tag[0]?n.tag.slice(1):n.tag).replace(/!/g,"%21"),j="!"===n.tag[0]?"!"+j:"tag:yaml.org,2002:"===j.slice(0,18)?"!!"+j.slice(18):"!<"+j+">",n.dump=j+" "+n.dump)}return!0}function WD(n,s){var c,g,t=[],o=[];for(HT(n,t,o),c=0,g=o.length;c<g;c+=1)s.duplicates.push(t[o[c]]);s.usedDuplicates=new Array(g)}function HT(n,s,t){var o,c,g;if(null!==n&&"object"==typeof n)if(-1!==(c=s.indexOf(n)))-1===t.indexOf(c)&&t.push(c);else if(s.push(n),Array.isArray(n))for(c=0,g=n.length;c<g;c+=1)HT(n[c],s,t);else for(c=0,g=(o=Object.keys(n)).length;c<g;c+=1)HT(n[o[c]],s,t)}function eA(n,s){return function(){throw new Error("Function yaml."+n+" is removed in js-yaml 4. Use yaml."+s+" instead, which is now safe by default.")}}var KD=Wf,qD=g2,e3=m2,t3=cD,CN=dD,n3=ST,r3=function(n,s){var t=qy(n,s);if(0!==t.length){if(1===t.length)return t[0];throw new sp("expected a single document in the stream, but found more")}},i3=function(n,s,t){null!==s&&"object"==typeof s&&void 0===t&&(t=s,s=null);var o=qy(n,t);if("function"!=typeof s)return o;for(var c=0,g=o.length;c<g;c+=1)s(o[c])},o3=function(n,s){var t=new BD(s=s||{});t.noRefs||WD(n,t);var o=n;return t.replacer&&(o=t.replacer.call({"":o},"",o)),_m(t,0,o,!0,!0)?t.dump+"\n":""},s3=sp,w_={binary:w2,float:uD,map:yT,null:b2,pairs:x2,set:R2,timestamp:hD,bool:bT,int:lD,merge:O2,omap:vD,seq:vT,str:mT},a3=eA("safeLoad","load"),l3=eA("safeLoadAll","loadAll"),u3=eA("safeDump","dump");const tA={Type:KD,Schema:qD,FAILSAFE_SCHEMA:e3,JSON_SCHEMA:t3,CORE_SCHEMA:CN,DEFAULT_SCHEMA:n3,load:r3,loadAll:i3,dump:o3,YAMLException:s3,types:w_,safeLoad:a3,safeLoadAll:l3,safeDump:u3},d3="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{FormData:nA,Blob:ob,File:Xv}=d3;function gm(n){return function(n){if(lm(n))return r0(n)}(n)||oT(n)||i0(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var AN=i(46558),x_=i.n(AN),ON=function(s){return":/?#[]@!$&'()*+,;=".indexOf(s)>-1},UT=function(s){return/^[a-z0-9\-._~]+$/i.test(s)};function Kv(n){var s,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.escape,c=arguments.length>2?arguments[2]:void 0;return"number"==typeof n&&(n=n.toString()),"string"==typeof n&&n.length&&o?c?JSON.parse(n):Lu()(s=gm(n)).call(s,function(g){var C,D;if(UT(g)||ON(g)&&"unsafe"===o)return g;var P=new TextEncoder;return Lu()(C=Lu()(D=fT()(P.encode(g))).call(D,function(W){var re;return x_()(re="0".concat(W.toString(16).toUpperCase())).call(re,-2)})).call(C,function(W){return"%".concat(W)}).join("")}).join(""):n}function BT(n){var s=n.value;return Array.isArray(s)?function(n){var s=n.key,t=n.value,o=n.style,c=n.explode,g=n.escape,C=function(re){return Kv(re,{escape:g})};if("simple"===o)return Lu()(t).call(t,function(W){return C(W)}).join(",");if("label"===o)return".".concat(Lu()(t).call(t,function(W){return C(W)}).join("."));if("matrix"===o)return Lu()(t).call(t,function(W){return C(W)}).reduce(function(W,re){var ie,ge,_e;return!W||c?la()(ge=la()(_e="".concat(W||"",";")).call(_e,s,"=")).call(ge,re):la()(ie="".concat(W,",")).call(ie,re)},"");if("form"===o){var D=c?"&".concat(s,"="):",";return Lu()(t).call(t,function(W){return C(W)}).join(D)}if("spaceDelimited"===o){var P=c?"".concat(s,"="):"";return Lu()(t).call(t,function(W){return C(W)}).join(" ".concat(P))}if("pipeDelimited"===o){var j=c?"".concat(s,"="):"";return Lu()(t).call(t,function(W){return C(W)}).join("|".concat(j))}}(n):"object"===vc(s)?function(n){var s=n.key,t=n.value,o=n.style,c=n.explode,g=n.escape,C=function(j){return Kv(j,{escape:g})},D=Su()(t);return"simple"===o?D.reduce(function(P,j){var W,re,ie,ge=C(t[j]),_e=c?"=":",",Le=P?"".concat(P,","):"";return la()(W=la()(re=la()(ie="".concat(Le)).call(ie,j)).call(re,_e)).call(W,ge)},""):"label"===o?D.reduce(function(P,j){var W,re,ie,ge=C(t[j]),_e=c?"=":".",Le=P?"".concat(P,"."):".";return la()(W=la()(re=la()(ie="".concat(Le)).call(ie,j)).call(re,_e)).call(W,ge)},""):"matrix"===o&&c?D.reduce(function(P,j){var W,re,ie=C(t[j]),ge=P?"".concat(P,";"):";";return la()(W=la()(re="".concat(ge)).call(re,j,"=")).call(W,ie)},""):"matrix"===o?D.reduce(function(P,j){var W,re,ie=C(t[j]),ge=P?"".concat(P,","):";".concat(s,"=");return la()(W=la()(re="".concat(ge)).call(re,j,",")).call(W,ie)},""):"form"===o?D.reduce(function(P,j){var W,re,ie,ge,_e=C(t[j]),Le=P?la()(W="".concat(P)).call(W,c?"&":","):"",Re=c?"=":",";return la()(re=la()(ie=la()(ge="".concat(Le)).call(ge,j)).call(ie,Re)).call(re,_e)},""):void 0}(n):function(n){var C,s=n.key,t=n.value,o=n.style,c=n.escape,g=function(P){return Kv(P,{escape:c})};return"simple"===o?g(t):"label"===o?".".concat(g(t)):"matrix"===o?la()(C=";".concat(s,"=")).call(C,g(t)):"form"===o||"deepObject"===o?g(t):void 0}(n)}const _3=function(s,t){t.body=s};var vh={serializeRes:YT,mergeInQueryOrForm:VT};function iA(n){return sb.apply(this,arguments)}function sb(){return(sb=s0(M_().mark(function n(s){var t,c,g,C,D=arguments;return M_().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:if(t=D.length>1&&void 0!==D[1]?D[1]:{},"object"===vc(s)&&(s=(t=s).url),t.headers=t.headers||{},vh.mergeInQueryOrForm(t),t.headers&&Su()(t.headers).forEach(function(W){var re=t.headers[W];"string"==typeof re&&(t.headers[W]=re.replace(/\n+/g," "))}),!t.requestInterceptor){j.next=12;break}return j.next=8,t.requestInterceptor(t);case 8:if(j.t0=j.sent,j.t0){j.next=11;break}j.t0=t;case 11:t=j.t0;case 12:return/multipart\/form-data/i.test(t.headers["content-type"]||t.headers["Content-Type"])&&t.body instanceof nA&&(delete t.headers["content-type"],delete t.headers["Content-Type"]),j.prev=14,j.next=17,(t.userFetch||fetch)(t.url,t);case 17:return c=j.sent,j.next=20,vh.serializeRes(c,s,t);case 20:if(c=j.sent,!t.responseInterceptor){j.next=28;break}return j.next=24,t.responseInterceptor(c);case 24:if(j.t1=j.sent,j.t1){j.next=27;break}j.t1=c;case 27:c=j.t1;case 28:j.next=39;break;case 30:if(j.prev=30,j.t2=j.catch(14),c){j.next=34;break}throw j.t2;case 34:throw(g=new Error(c.statusText||"response status is ".concat(c.status))).status=c.status,g.statusCode=c.status,g.responseError=j.t2,g;case 39:if(c.ok){j.next=45;break}throw(C=new Error(c.statusText||"response status is ".concat(c.status))).status=c.status,C.statusCode=c.status,C.response=c,C;case 45:return j.abrupt("return",c);case 46:case"end":return j.stop()}},n,null,[[14,30]])}))).apply(this,arguments)}var g3=function(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(s)};function oA(n,s){return s&&(0===s.indexOf("application/json")||s.indexOf("+json")>0)?JSON.parse(n):tA.load(n)}function YT(n,s){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=t.loadSpec,c=void 0!==o&&o,g={ok:n.ok,url:n.url||s,status:n.status,statusText:n.statusText,headers:ZT(n.headers)},C=g.headers["content-type"],D=c||g3(C),P=D?n.text:n.blob||n.buffer;return P.call(n).then(function(j){if(g.text=j,g.data=j,D)try{var W=oA(j,C);g.body=W,g.obj=W}catch(re){g.parseError=re}return g})}function sA(n){return dm()(n).call(n,", ")?n.split(", "):n}function ZT(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof u0()(n)?{}:fT()(u0()(n).call(n)).reduce(function(s,t){var o=A_(t,2);return s[o[0]]=sA(o[1]),s},{})}function T0(n,s){return!s&&"undefined"!=typeof navigator&&(s=navigator),s&&"ReactNative"===s.product?!(!n||"object"!==vc(n)||"string"!=typeof n.uri):!!(void 0!==Xv&&n instanceof Xv||void 0!==ob&&n instanceof ob||ArrayBuffer.isView(n))||null!==n&&"object"===vc(n)&&"function"==typeof n.pipe}function ab(n,s){return Array.isArray(n)&&n.some(function(t){return T0(t,s)})}var lb={form:",",spaceDelimited:"%20",pipeDelimited:"|"},ub={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function jT(n,s){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=s.collectionFormat,c=s.allowEmptyValue,g=s.serializationOption,C=s.encoding,D="object"!==vc(s)||Array.isArray(s)?s:s.value,P=t?function(_e){return _e.toString()}:function(_e){return encodeURIComponent(_e)},j=P(n);if(void 0===D&&c)return[[j,""]];if(T0(D)||ab(D))return[[j,D]];if(g)return GT(n,D,t,g);if(C){if([vc(C.style),vc(C.explode),vc(C.allowReserved)].some(function(_e){return"undefined"!==_e})){var W=C.style,re=C.explode,ie=C.allowReserved;return GT(n,D,t,{style:W,explode:re,allowReserved:ie})}if(C.contentType){if("application/json"===C.contentType){var ge="string"==typeof D?D:c0()(D);return[[j,P(ge)]]}return[[j,P(D.toString())]]}return"object"!==vc(D)?[[j,P(D)]]:Array.isArray(D)&&D.every(function(_e){return"object"!==vc(_e)})?[[j,Lu()(D).call(D,P).join(",")]]:[[j,P(c0()(D))]]}return"object"!==vc(D)?[[j,P(D)]]:Array.isArray(D)?"multi"===o?[[j,Lu()(D).call(D,P)]]:[[j,Lu()(D).call(D,P).join(ub[o||"csv"])]]:[[j,""]]}function GT(n,s,t,o){var c,W,re,g=o.style||"form",C=void 0===o.explode?"form"===g:o.explode,D=!t&&(o&&o.allowReserved?"unsafe":"reserved"),P=function(ge){return Kv(ge,{escape:D})},j=t?function(ie){return ie}:function(ie){return Kv(ie,{escape:D})};return"object"!==vc(s)?[[j(n),P(s)]]:Array.isArray(s)?C?[[j(n),Lu()(s).call(s,P)]]:[[j(n),Lu()(s).call(s,P).join(lb[g])]]:"deepObject"===g?Lu()(W=Su()(s)).call(W,function(ie){var ge;return[j(la()(ge="".concat(n,"[")).call(ge,ie,"]")),P(s[ie])]}):C?Lu()(re=Su()(s)).call(re,function(ie){return[j(ie),P(s[ie])]}):[[j(n),Lu()(c=Su()(s)).call(c,function(ie){var ge;return[la()(ge="".concat(j(ie),",")).call(ge,P(s[ie]))]}).join(",")]]}function m3(n){return u2()(n).reduce(function(s,t){var D,o=A_(t,2),C=cm(jT(o[0],o[1],!0));try{for(C.s();!(D=C.n()).done;){var P=A_(D.value,2),j=P[0],W=P[1];if(Array.isArray(W)){var ie,re=cm(W);try{for(re.s();!(ie=re.n()).done;){var ge=ie.value;if(ArrayBuffer.isView(ge)){var _e=new ob([ge]);s.append(j,_e)}else s.append(j,ge)}}catch(Re){re.e(Re)}finally{re.f()}}else if(ArrayBuffer.isView(W)){var Le=new ob([W]);s.append(j,Le)}else s.append(j,W)}}catch(Re){C.e(Re)}finally{C.f()}return s},new nA)}function aA(n){var s=Su()(n).reduce(function(t,o){var g,c=cm(jT(o,n[o]));try{for(c.s();!(g=c.n()).done;){var C=A_(g.value,2);t[C[0]]=C[1]}}catch(j){c.e(j)}finally{c.f()}return t},{});return Gy().stringify(s,{encode:!1,indices:!1})||""}function VT(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=n.url,t=void 0===s?"":s,o=n.query,c=n.form,g=function(){for(var xe=arguments.length,U=new Array(xe),pt=0;pt<xe;pt++)U[pt]=arguments[pt];var ht=zp()(U).call(U,function(wt){return wt}).join("&");return ht?"?".concat(ht):""};if(c){var C=Su()(c).some(function(ke){var xe=c[ke].value;return T0(xe)||ab(xe)}),D=n.headers["content-type"]||n.headers["Content-Type"];if(C||/multipart\/form-data/i.test(D)){var P=m3(n.form);_3(P,n)}else n.body=aA(c);delete n.form}if(o){var j=t.split("?"),W=A_(j,2),re=W[0],ie=W[1],ge="";if(ie){var _e=Gy().parse(ie),Le=Su()(o);Le.forEach(function(ke){return delete _e[ke]}),ge=Gy().stringify(_e,{encode:!0})}var Re=g(ge,aA(o));n.url=re+Re,delete n.query}return n}function v3(n,s,t){return t=t||function(o){return o},s=s||function(o){return o},function(o){return"string"==typeof o&&(o={url:o}),vh.mergeInQueryOrForm(o),o=s(o),t(n(o))}}var lA=i(22714),cb=i(23591),zT=i(14306),WT=i(45862),lp=i(6379),qv=i(51134),db=i(70891),e1=i(77576);function S0(n,s,t){return s in n?e1(n,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[s]=t,n}function fb(n,s){var t=lA(n);if(cb){var o=cb(n);s&&(o=zT(o).call(o,function(c){return WT(n,c).enumerable})),t.push.apply(t,o)}return t}function _d(n){for(var s=1;s<arguments.length;s++){var t,o,c=null!=arguments[s]?arguments[s]:{};s%2?lp(t=fb(Object(c),!0)).call(t,function(g){S0(n,g,c[g])}):qv?db(n,qv(c)):lp(o=fb(Object(c))).call(o,function(g){e1(n,g,WT(c,g))})}return n}function t1(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function uA(n,s){for(var t=0;t<s.length;t++){var o=s[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),e1(n,o.key,o)}}function JT(n,s,t){return s&&uA(n.prototype,s),t&&uA(n,t),e1(n,"prototype",{writable:!1}),n}var n,y3=i(30508),D_=i.n(y3),cA=i(45819),dA=i.n(cA),b3=i(33814),fA=i.n(b3),mm=(n=function(s,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,c){o.__proto__=c}||function(o,c){for(var g in c)c.hasOwnProperty(g)&&(o[g]=c[g])})(s,t)},function(s,t){function o(){this.constructor=s}n(s,t),s.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}),C0=Object.prototype.hasOwnProperty;function n1(n,s){return C0.call(n,s)}function QT(n){if(Array.isArray(n)){for(var s=new Array(n.length),t=0;t<s.length;t++)s[t]=""+t;return s}if(Object.keys)return Object.keys(n);var o=[];for(var c in n)n1(n,c)&&o.push(c);return o}function yh(n){switch(typeof n){case"object":return JSON.parse(JSON.stringify(n));case"undefined":return null;default:return n}}function XT(n){for(var o,s=0,t=n.length;s<t;){if(!((o=n.charCodeAt(s))>=48&&o<=57))return!1;s++}return!0}function R_(n){return-1===n.indexOf("/")&&-1===n.indexOf("~")?n:n.replace(/~/g,"~0").replace(/\//g,"~1")}function pA(n){return n.replace(/~1/g,"/").replace(/~0/g,"~")}function qT(n){if(void 0===n)return!0;if(n)if(Array.isArray(n)){for(var s=0,t=n.length;s<t;s++)if(qT(n[s]))return!0}else if("object"==typeof n)for(var o=QT(n),c=o.length,g=0;g<c;g++)if(qT(n[o[g]]))return!0;return!1}function hA(n,s){var t=[n];for(var o in s){var c="object"==typeof s[o]?JSON.stringify(s[o],null,2):s[o];void 0!==c&&t.push(o+": "+c)}return t.join("\n")}var _A=function(n){function s(t,o,c,g,C){var D=this.constructor,P=n.call(this,hA(t,{name:o,index:c,operation:g,tree:C}))||this;return P.name=o,P.index=c,P.operation=g,P.tree=C,Object.setPrototypeOf(P,D.prototype),P.message=hA(t,{name:o,index:c,operation:g,tree:C}),P}return mm(s,n),s}(Error),ac=_A,M0=yh,N_={add:function(n,s,t){return n[s]=this.value,{newDocument:t}},remove:function(n,s,t){var o=n[s];return delete n[s],{newDocument:t,removed:o}},replace:function(n,s,t){var o=n[s];return n[s]=this.value,{newDocument:t,removed:o}},move:function(n,s,t){var o=fg(t,this.path);o&&(o=yh(o));var c=qm(t,{op:"remove",path:this.from}).removed;return qm(t,{op:"add",path:this.path,value:c}),{newDocument:t,removed:o}},copy:function(n,s,t){var o=fg(t,this.from);return qm(t,{op:"add",path:this.path,value:yh(o)}),{newDocument:t}},test:function(n,s,t){return{newDocument:t,test:r1(n[s],this.value)}},_get:function(n,s,t){return this.value=n[s],{newDocument:t}}},pb={add:function(n,s,t){return XT(s)?n.splice(s,0,this.value):n[s]=this.value,{newDocument:t,index:s}},remove:function(n,s,t){return{newDocument:t,removed:n.splice(s,1)[0]}},replace:function(n,s,t){var o=n[s];return n[s]=this.value,{newDocument:t,removed:o}},move:N_.move,copy:N_.copy,test:N_.test,_get:N_._get};function fg(n,s){if(""==s)return n;var t={op:"_get",path:s};return qm(n,t),t.value}function qm(n,s,t,o,c,g){if(void 0===t&&(t=!1),void 0===o&&(o=!0),void 0===c&&(c=!0),void 0===g&&(g=0),t&&("function"==typeof t?t(s,0,n,s.path):A0(s,0)),""===s.path){var C={newDocument:n};if("add"===s.op)return C.newDocument=s.value,C;if("replace"===s.op)return C.newDocument=s.value,C.removed=n,C;if("move"===s.op||"copy"===s.op)return C.newDocument=fg(n,s.from),"move"===s.op&&(C.removed=n),C;if("test"===s.op){if(C.test=r1(n,s.value),!1===C.test)throw new ac("Test operation failed","TEST_OPERATION_FAILED",g,s,n);return C.newDocument=n,C}if("remove"===s.op)return C.removed=n,C.newDocument=null,C;if("_get"===s.op)return s.value=n,C;if(t)throw new ac("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",g,s,n);return C}o||(n=yh(n));var P=(s.path||"").split("/"),j=n,W=1,re=P.length,ie=void 0,ge=void 0,_e=void 0;for(_e="function"==typeof t?t:A0;;){if((ge=P[W])&&-1!=ge.indexOf("~")&&(ge=pA(ge)),c&&("__proto__"==ge||"prototype"==ge&&W>0&&"constructor"==P[W-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(t&&void 0===ie&&(void 0===j[ge]?ie=P.slice(0,W).join("/"):W==re-1&&(ie=s.path),void 0!==ie&&_e(s,0,n,ie)),W++,Array.isArray(j)){if("-"===ge)ge=j.length;else{if(t&&!XT(ge))throw new ac("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",g,s,n);XT(ge)&&(ge=~~ge)}if(W>=re){if(t&&"add"===s.op&&ge>j.length)throw new ac("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",g,s,n);if(!1===(C=pb[s.op].call(s,j,ge,n)).test)throw new ac("Test operation failed","TEST_OPERATION_FAILED",g,s,n);return C}}else if(W>=re){if(!1===(C=N_[s.op].call(s,j,ge,n)).test)throw new ac("Test operation failed","TEST_OPERATION_FAILED",g,s,n);return C}if(j=j[ge],t&&W<re&&(!j||"object"!=typeof j))throw new ac("Cannot perform operation at the desired path","OPERATION_PATH_UNRESOLVABLE",g,s,n)}}function vm(n,s,t,o,c){if(void 0===o&&(o=!0),void 0===c&&(c=!0),t&&!Array.isArray(s))throw new ac("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");o||(n=yh(n));for(var g=new Array(s.length),C=0,D=s.length;C<D;C++)g[C]=qm(n,s[C],t,!0,c,C),n=g[C].newDocument;return g.newDocument=n,g}function T3(n,s,t){var o=qm(n,s);if(!1===o.test)throw new ac("Test operation failed","TEST_OPERATION_FAILED",t,s,n);return o.newDocument}function A0(n,s,t,o){if("object"!=typeof n||null===n||Array.isArray(n))throw new ac("Operation is not an object","OPERATION_NOT_AN_OBJECT",s,n,t);if(!N_[n.op])throw new ac("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",s,n,t);if("string"!=typeof n.path)throw new ac("Operation `path` property is not a string","OPERATION_PATH_INVALID",s,n,t);if(0!==n.path.indexOf("/")&&n.path.length>0)throw new ac('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",s,n,t);if(("move"===n.op||"copy"===n.op)&&"string"!=typeof n.from)throw new ac("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",s,n,t);if(("add"===n.op||"replace"===n.op||"test"===n.op)&&void 0===n.value)throw new ac("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",s,n,t);if(("add"===n.op||"replace"===n.op||"test"===n.op)&&qT(n.value))throw new ac("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",s,n,t);if(t)if("add"==n.op){var c=n.path.split("/").length,g=o.split("/").length;if(c!==g+1&&c!==g)throw new ac("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",s,n,t)}else if("replace"===n.op||"remove"===n.op||"_get"===n.op){if(n.path!==o)throw new ac("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",s,n,t)}else if("move"===n.op||"copy"===n.op){var D=eS([{op:"_get",path:n.from,value:void 0}],t);if(D&&"OPERATION_PATH_UNRESOLVABLE"===D.name)throw new ac("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",s,n,t)}}function eS(n,s,t){try{if(!Array.isArray(n))throw new ac("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(s)vm(yh(s),yh(n),t||!0);else{t=t||A0;for(var o=0;o<n.length;o++)t(n[o],o,s,void 0)}}catch(c){if(c instanceof ac)return c;throw c}}function r1(n,s){if(n===s)return!0;if(n&&s&&"object"==typeof n&&"object"==typeof s){var c,g,C,t=Array.isArray(n),o=Array.isArray(s);if(t&&o){if((g=n.length)!=s.length)return!1;for(c=g;0!=c--;)if(!r1(n[c],s[c]))return!1;return!0}if(t!=o)return!1;var D=Object.keys(n);if((g=D.length)!==Object.keys(s).length)return!1;for(c=g;0!=c--;)if(!s.hasOwnProperty(D[c]))return!1;for(c=g;0!=c--;)if(!r1(n[C=D[c]],s[C]))return!1;return!0}return n!=n&&s!=s}var hb=new WeakMap,tS=function(s){this.observers=new Map,this.obj=s},S3=function(s,t){this.callback=s,this.observer=t};function nS(n,s){s.unobserve()}function M3(n,s){var o,c=function(n){return hb.get(n)}(n);if(c){var g=function(n,s){return n.observers.get(s)}(c,s);o=g&&g.observer}else c=new tS(n),hb.set(n,c);if(o)return o;if(o={},c.value=yh(n),s){o.callback=s,o.next=null;var C=function(){rS(o)},D=function(){clearTimeout(o.next),o.next=setTimeout(C)};"undefined"!=typeof window&&(window.addEventListener("mouseup",D),window.addEventListener("keyup",D),window.addEventListener("mousedown",D),window.addEventListener("keydown",D),window.addEventListener("change",D))}return o.patches=[],o.object=n,o.unobserve=function(){rS(o),clearTimeout(o.next),function(n,s){n.observers.delete(s.callback)}(c,o),"undefined"!=typeof window&&(window.removeEventListener("mouseup",D),window.removeEventListener("keyup",D),window.removeEventListener("mousedown",D),window.removeEventListener("keydown",D),window.removeEventListener("change",D))},c.observers.set(s,new S3(s,o)),o}function rS(n,s){void 0===s&&(s=!1);var t=hb.get(n.object);mA(t.value,n.object,n.patches,"",s),n.patches.length&&vm(t.value,n.patches);var o=n.patches;return o.length>0&&(n.patches=[],n.callback&&n.callback(o)),o}function mA(n,s,t,o,c){if(s!==n){"function"==typeof s.toJSON&&(s=s.toJSON());for(var g=QT(s),C=QT(n),P=!1,j=C.length-1;j>=0;j--){var re=n[W=C[j]];if(!n1(s,W)||void 0===s[W]&&void 0!==re&&!1===Array.isArray(s))Array.isArray(n)===Array.isArray(s)?(c&&t.push({op:"test",path:o+"/"+R_(W),value:yh(re)}),t.push({op:"remove",path:o+"/"+R_(W)}),P=!0):(c&&t.push({op:"test",path:o,value:n}),t.push({op:"replace",path:o,value:s}));else{var ie=s[W];"object"==typeof re&&null!=re&&"object"==typeof ie&&null!=ie&&Array.isArray(re)===Array.isArray(ie)?mA(re,ie,t,o+"/"+R_(W),c):re!==ie&&(c&&t.push({op:"test",path:o+"/"+R_(W),value:yh(re)}),t.push({op:"replace",path:o+"/"+R_(W),value:yh(ie)}))}}if(P||g.length!=C.length)for(j=0;j<g.length;j++){var W;!n1(n,W=g[j])&&void 0!==s[W]&&t.push({op:"add",path:o+"/"+R_(W),value:yh(s[W])})}}}function xN(n,s,t){void 0===t&&(t=!1);var o=[];return mA(n,s,o,"",t),o}Object.assign({},r,u,{JsonPatchError:_A,deepClone:yh,escapePathComponent:R_,unescapePathComponent:pA});var DN=i(89225),A3=i.n(DN);const lc={add:function(n,s){return{op:"add",path:n,value:s}},replace:iS,remove:function(n){return{op:"remove",path:n}},merge:function(n,s){return{type:"mutation",op:"merge",path:n,value:s}},mergeDeep:function(n,s){return{type:"mutation",op:"mergeDeep",path:n,value:s}},context:function(n,s){return{type:"context",path:n,value:s}},getIn:function(n,s){return s.reduce(function(t,o){return void 0!==o&&t?t[o]:t},n)},applyPatch:function(n,s,t){if(t=t||{},"merge"===(s=_d(_d({},s),{},{path:s.path&&O3(s.path)})).op){var o=Va(n,s.path);D_()(o,s.value),vm(n,[iS(s.path,o)])}else if("mergeDeep"===s.op){var c=Va(n,s.path),g=A3()(c,s.value);n=vm(n,[iS(s.path,g)]).newDocument}else if("add"===s.op&&""===s.path&&Mt(s.value)){vm(n,Su()(s.value).reduce(function(re,ie){return re.push({op:"add",path:"/".concat(O3(ie)),value:s.value[ie]}),re},[]))}else if("replace"===s.op&&""===s.path){var P=s.value;t.allowMetaPatches&&s.meta&&Oo(s)&&(Array.isArray(s.value)||Mt(s.value))&&(P=_d(_d({},P),s.meta)),n=P}else if(vm(n,[s]),t.allowMetaPatches&&s.meta&&Oo(s)&&(Array.isArray(s.value)||Mt(s.value))){var W=_d(_d({},Va(n,s.path)),s.meta);vm(n,[iS(s.path,W)])}return n},parentPathMatch:function(n,s){if(!Array.isArray(s))return!1;for(var t=0,o=s.length;t<o;t+=1)if(s[t]!==n[t])return!1;return!0},flatten:Ne,fullyNormalizeArray:function(n){return qe(Ne(le(n)))},normalizeArray:le,isPromise:function(n){return Mt(n)&&_n(n.then)},forEachNew:function(n,s){try{return l(n,m,s)}catch(t){return t}},forEachNewPrimitive:function(n,s){try{return l(n,d,s)}catch(t){return t}},isJsonPatch:Rr,isContextPatch:function(n){return oa(n)&&"context"===n.type},isPatch:oa,isMutation:ni,isAdditiveMutation:Oo,isGenerator:function(n){return"[object GeneratorFunction]"===Object.prototype.toString.call(n)},isFunction:_n,isObject:Mt,isError:function(n){return n instanceof Error}};function O3(n){return Array.isArray(n)?n.length<1?"":"/".concat(Lu()(n).call(n,function(s){return(s+"").replace(/~/g,"~0").replace(/\//g,"~1")}).join("/")):n}function iS(n,s,t){return{op:"replace",path:n,value:s,meta:t}}function l(n,s,t){var o;return qe(Ne(Lu()(o=zp()(n).call(n,Oo)).call(o,function(D){return s(D.value,t,D.path)})||[]))}function d(n,s,t){return t=t||[],Array.isArray(n)?Lu()(n).call(n,function(c,g){return d(c,s,la()(t).call(t,g))}):Mt(n)?Lu()(o=Su()(n)).call(o,function(c){return d(n[c],s,la()(t).call(t,c))}):s(n,t[t.length-1],t);var o}function m(n,s,t){var o=[];if((t=t||[]).length>0){var c=s(n,t[t.length-1],t);c&&(o=la()(o).call(o,c))}if(Array.isArray(n)){var g=Lu()(n).call(n,function(P,j){return m(P,s,la()(t).call(t,j))});g&&(o=la()(o).call(o,g))}else if(Mt(n)){var C,D=Lu()(C=Su()(n)).call(C,function(P){return m(n[P],s,la()(t).call(t,P))});D&&(o=la()(o).call(o,D))}return Ne(o)}function le(n){return Array.isArray(n)?n:[n]}function Ne(n){var s;return la()(s=[]).apply(s,gm(Lu()(n).call(n,function(t){return Array.isArray(t)?Ne(t):t})))}function qe(n){return zp()(n).call(n,function(s){return void 0!==s})}function Mt(n){return n&&"object"===vc(n)}function _n(n){return n&&"function"==typeof n}function Rr(n){if(oa(n)){var s=n.op;return"add"===s||"remove"===s||"replace"===s}return!1}function ni(n){return Rr(n)||oa(n)&&"mutation"===n.type}function Oo(n){return ni(n)&&("add"===n.op||"replace"===n.op||"merge"===n.op||"mergeDeep"===n.op)}function oa(n){return n&&"object"===vc(n)}function Va(n,s){try{return fg(n,s)}catch(t){return console.error(t),{}}}var pu=i(17015),Mf=i.n(pu),Qh=i(71455),i1=i.n(Qh),Xh=i(38505);function tv(n,s){function t(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var o=arguments.length,c=new Array(o),g=0;g<o;g++)c[g]=arguments[g];this.message=c[0],s&&s.apply(this,c)}return(t.prototype=new Error).name=n,t.prototype.constructor=t,t}var o1=i(18807),oS=i.n(o1),sS=["properties"],aS=["properties"],lS=["definitions","parameters","responses","securityDefinitions","components/schemas","components/responses","components/parameters","components/securitySchemes"],uS=["schema/example","items/example"];function kN(n){var s=n[n.length-1],t=n[n.length-2],o=n.join("/");return sS.indexOf(s)>-1&&-1===aS.indexOf(t)||lS.indexOf(o)>-1||uS.some(function(c){return o.indexOf(c)>-1})}function x3(n,s){var t,c=A_(n.split("#"),2),C=c[1],D=Xh.resolve(c[0]||"",s||"");return C?la()(t="".concat(D,"#")).call(t,C):D}var $N="application/json, application/yaml",HP=/^([a-z]+:\/\/|\/\/)/i,_b=tv("JSONRefError",function(s,t,o){this.originalError=o,D_()(this,t||{})}),nv={},HN=new(Mf()),UP=[function(n){return"paths"===n[0]&&"responses"===n[3]&&"examples"===n[5]},function(n){return"paths"===n[0]&&"responses"===n[3]&&"content"===n[5]&&"example"===n[7]},function(n){return"paths"===n[0]&&"responses"===n[3]&&"content"===n[5]&&"examples"===n[7]&&"value"===n[9]},function(n){return"paths"===n[0]&&"requestBody"===n[3]&&"content"===n[4]&&"example"===n[6]},function(n){return"paths"===n[0]&&"requestBody"===n[3]&&"content"===n[4]&&"examples"===n[6]&&"value"===n[8]},function(n){return"paths"===n[0]&&"parameters"===n[2]&&"example"===n[4]},function(n){return"paths"===n[0]&&"parameters"===n[3]&&"example"===n[5]},function(n){return"paths"===n[0]&&"parameters"===n[2]&&"examples"===n[4]&&"value"===n[6]},function(n){return"paths"===n[0]&&"parameters"===n[3]&&"examples"===n[5]&&"value"===n[7]},function(n){return"paths"===n[0]&&"parameters"===n[2]&&"content"===n[4]&&"example"===n[6]},function(n){return"paths"===n[0]&&"parameters"===n[2]&&"content"===n[4]&&"examples"===n[6]&&"value"===n[8]},function(n){return"paths"===n[0]&&"parameters"===n[3]&&"content"===n[4]&&"example"===n[7]},function(n){return"paths"===n[0]&&"parameters"===n[3]&&"content"===n[5]&&"examples"===n[7]&&"value"===n[9]}],YP={key:"$ref",plugin:function(s,t,o,c){var g=c.getInstance(),C=x_()(o).call(o,0,-1);if(!kN(C)&&!function(s){return UP.some(function(t){return t(s)})}(C)){var P=c.getContext(o).baseDoc;if("string"!=typeof s)return new _b("$ref: must be a string (JSON-Ref)",{$ref:s,baseDoc:P,fullPath:o});var ie,ge,_e,j=YN(s),W=j[0],re=j[1]||"";try{ie=P||W?BN(W,P):null}catch(xe){return D3(xe,{pointer:re,$ref:s,basePath:ie,fullPath:o})}if(function(n,s,t,o){var c,g,C=HN.get(o);C||HN.set(o,C={});var D=function(n){return 0===n.length?"":"/".concat(Lu()(n).call(n,VN).join("/"))}(t),P=la()(c="".concat(s||"<specmap-base>","#")).call(c,n),j=D.replace(/allOf\/\d+\/?/g,"");if(s===o.contextTree.get([]).baseDoc&&P3(j,n))return!0;var re="";if(t.some(function(ge){var _e;return re=la()(_e="".concat(re,"/")).call(_e,VN(ge)),C[re]&&C[re].some(function(Le){return P3(Le,P)||P3(P,Le)})}))return!0;C[j]=la()(g=C[j]||[]).call(g,P)}(re,ie,C,c)&&!g.useCircularStructures){var Le=x3(s,ie);return s===Le?null:lc.replace(o,Le)}if(null==ie?(_e=N3(re),void 0===(ge=c.get(_e))&&(ge=new _b("Could not resolve reference: ".concat(s),{pointer:re,$ref:s,baseDoc:P,fullPath:o}))):ge=null!=(ge=ZN(ie,re)).__value?ge.__value:ge.catch(function(xe){throw D3(xe,{pointer:re,$ref:s,baseDoc:P,fullPath:o})}),ge instanceof Error)return[lc.remove(o),ge];var Re=x3(s,ie),ke=lc.replace(C,ge,{$$ref:Re});if(ie&&ie!==P)return[ke,lc.context(C,{baseDoc:ie})];try{if(!function(n,s){var t=[n];return s.path.reduce(function(c,g){return t.push(c[g]),c[g]},n),function o(c){return lc.isObject(c)&&(t.indexOf(c)>=0||Su()(c).some(function(g){return o(c[g])}))}(s.value)}(c.state,ke)||g.useCircularStructures)return ke}catch(xe){return null}}}},UN=D_()(YP,{docCache:nv,absoluteify:BN,clearCache:function(n){void 0!==n?delete nv[n]:Su()(nv).forEach(function(s){delete nv[s]})},JSONRefError:_b,wrapError:D3,getDoc:jN,split:YN,extractFromDoc:ZN,fetchJSON:function(n){return fetch(n,{headers:{Accept:$N},loadSpec:!0}).then(function(s){return s.text()}).then(function(s){return tA.load(s)})},extract:R3,jsonPointerToArray:N3,unescapeJsonPointerToken:GN});const ZP=UN;function BN(n,s){if(!HP.test(n)){var t;if(!s)throw new _b(la()(t="Tried to resolve a relative URL, without having a basePath. path: '".concat(n,"' basePath: '")).call(t,s,"'"));return Xh.resolve(s,n)}return n}function D3(n,s){var t,o;return t=n&&n.response&&n.response.body?la()(o="".concat(n.response.body.code," ")).call(o,n.response.body.message):n.message,new _b("Could not resolve reference: ".concat(t),s,n)}function YN(n){return(n+"").split("#")}function ZN(n,s){var t=nv[n];if(t&&!lc.isPromise(t))try{var o=R3(s,t);return D_()(Dg().resolve(o),{__value:o})}catch(c){return Dg().reject(c)}return jN(n).then(function(c){return R3(s,c)})}function jN(n){var s=nv[n];return s?lc.isPromise(s)?s:Dg().resolve(s):(nv[n]=UN.fetchJSON(n).then(function(t){return nv[n]=t,t}),nv[n])}function R3(n,s){var t=N3(n);if(t.length<1)return s;var o=lc.getIn(s,t);if(void 0===o)throw new _b("Could not resolve pointer: ".concat(n," does not exist in document"),{pointer:n});return o}function N3(n){var s;if("string"!=typeof n)throw new TypeError("Expected a string, got a ".concat(vc(n)));return"/"===n[0]&&(n=n.substr(1)),""===n?[]:Lu()(s=n.split("/")).call(s,GN)}function GN(n){return"string"!=typeof n?n:new(i1())("=".concat(n.replace(/~1/g,"/").replace(/~0/g,"~"))).get("")}function VN(n){var s,t=new(i1())([["",n.replace(/~/g,"~0").replace(/\//g,"~1")]]);return x_()(s=t.toString()).call(s,1)}function P3(n,s){if(function(s){return!s||"/"===s||"#"===s}(s))return!0;var t=n.charAt(s.length),o=x_()(s).call(s,-1);return 0===n.indexOf(s)&&(!t||"/"===t||"#"===t)&&"#"!==o}const QP={key:"allOf",plugin:function(s,t,o,c,g){if(!g.meta||!g.meta.$$ref){var C=x_()(o).call(o,0,-1);if(!kN(C)){if(!Array.isArray(s)){var D=new TypeError("allOf must be an array");return D.fullPath=o,D}var P=!1,j=g.value;if(C.forEach(function(ge){!j||(j=j[ge])}),j=_d({},j),0!==Su()(j).length){delete j.allOf;var re,ie,W=[];return W.push(c.replace(C,{})),s.forEach(function(ge,_e){if(!c.isObject(ge)){if(P)return null;P=!0;var Le=new TypeError("Elements in allOf must be objects");return Le.fullPath=o,W.push(Le)}W.push(c.mergeDeep(C,ge));var ke=function(n,s){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=t.specmap,c=t.getBaseUrlForNodePath,g=void 0===c?function(j){var W;return o.getContext(la()(W=[]).call(W,gm(s),gm(j))).baseDoc}:c,C=t.targetKeys,D=void 0===C?["$ref","$$ref"]:C,P=[];return oS()(n).forEach(function(){if(dm()(D).call(D,this.key)&&"string"==typeof this.node){var W=this.path,re=la()(s).call(s,this.path),ie=x3(this.node,g(W));P.push(o.replace(re,ie))}}),P}(ge,x_()(o).call(o,0,-1),{getBaseUrlForNodePath:function(U){var pt;return c.getContext(la()(pt=[]).call(pt,gm(o),[_e],gm(U))).baseDoc},specmap:c});W.push.apply(W,gm(ke))}),j.example&&W.push(c.remove(la()(re=[]).call(re,C,"example"))),W.push(c.mergeDeep(C,j)),j.$$ref||W.push(c.remove(la()(ie=[]).call(ie,C,"$$ref"))),W}}}}},XP={key:"parameters",plugin:function(s,t,o,c){if(Array.isArray(s)&&s.length){var g=D_()([],s),C=x_()(o).call(o,0,-1),D=_d({},lc.getIn(c.spec,C));return s.forEach(function(P,j){try{g[j].default=c.parameterMacro(D,P)}catch(re){var W=new Error(re);return W.fullPath=o,W}}),lc.replace(o,g)}return lc.replace(o,s)}},KP={key:"properties",plugin:function(s,t,o,c){var g=_d({},s);for(var C in s)try{g[C].default=c.modelPropertyMacro(g[C])}catch(j){var D=new Error(j);return D.fullPath=o,D}return lc.replace(o,g)}};var qP=function(){function n(s){t1(this,n),this.root=I3(s||{})}return JT(n,[{key:"set",value:function(t,o){var c=this.getParent(t,!0);if(c){var g=t[t.length-1],C=c.children;C[g]?vA(C[g],o,c):C[g]=I3(o,c)}else vA(this.root,o,null)}},{key:"get",value:function(t){if((t=t||[]).length<1)return this.root.value;for(var c,g,o=this.root,C=0;C<t.length&&(c=o.children)[g=t[C]];C+=1)o=c[g];return o&&o.protoValue}},{key:"getParent",value:function(t,o){return!t||t.length<1?null:t.length<2?this.root:x_()(t).call(t,0,-1).reduce(function(c,g){if(!c)return c;var C=c.children;return!C[g]&&o&&(C[g]=I3(null,c)),C[g]},this.root)}}]),n}();function I3(n,s){return vA({children:{}},n,s)}function vA(n,s,t){return n.value=s||{},n.protoValue=t?_d(_d({},t.protoValue),n.value):n.value,Su()(n.children).forEach(function(o){var c=n.children[o];n.children[o]=vA(c,c.value,n)}),n}var WN=function(){},e8=function(){function n(s){var o,c,t=this;t1(this,n),D_()(this,{spec:"",debugLevel:"info",plugins:[],pluginHistory:{},errors:[],mutations:[],promisedPatches:[],state:{},patches:[],context:{},contextTree:new qP,showDebug:!1,allPatches:[],pluginProp:"specMap",libMethods:D_()(Object.create(this),lc,{getInstance:function(){return t}}),allowMetaPatches:!1},s),this.get=this._get.bind(this),this.getContext=this._getContext.bind(this),this.hasRun=this._hasRun.bind(this),this.wrappedPlugins=zp()(o=Lu()(c=this.plugins).call(c,this.wrapPlugin.bind(this))).call(o,lc.isFunction),this.patches.push(lc.add([],this.spec)),this.patches.push(lc.context([],this.context)),this.updatePatches(this.patches)}return JT(n,[{key:"debug",value:function(t){if(this.debugLevel===t){for(var o,c=arguments.length,g=new Array(c>1?c-1:0),C=1;C<c;C++)g[C-1]=arguments[C];(o=console).log.apply(o,g)}}},{key:"verbose",value:function(t){if("verbose"===this.debugLevel){for(var o,c,g=arguments.length,C=new Array(g>1?g-1:0),D=1;D<g;D++)C[D-1]=arguments[D];(o=console).log.apply(o,la()(c=["[".concat(t,"]   ")]).call(c,C))}}},{key:"wrapPlugin",value:function(t,o){var C,P,j,c=this.pathDiscriminator,g=null;return t[this.pluginProp]?(g=t,C=t[this.pluginProp]):lc.isFunction(t)?C=t:lc.isObject(t)&&(P=t,j=function(re,ie){return!Array.isArray(re)||re.every(function(ge,_e){return ge===ie[_e]})},C=M_().mark(function W(re,ie){var ge,_e,Le,Re,ke,xe;return M_().wrap(function(pt){for(;;)switch(pt.prev=pt.next){case 0:xe=function(wt,It,dn){var Lt,Dn,Mn,$r,ur,Pr,xr,fn,Nn,$n,Qn,Tn,Yr;return M_().wrap(function(ii){for(;;)switch(ii.prev=ii.next){case 0:if(lc.isObject(wt)){ii.next=6;break}if(P.key!==It[It.length-1]){ii.next=4;break}return ii.next=4,P.plugin(wt,P.key,It,ie);case 4:ii.next=30;break;case 6:Dn=It[Lt=It.length-1],Mn=It.indexOf("properties"),$r="properties"===Dn&&Lt===Mn,ur=ie.allowMetaPatches&&_e[wt.$$ref],Pr=0,xr=Su()(wt);case 12:if(!(Pr<xr.length)){ii.next=30;break}if(Nn=wt[fn=xr[Pr]],$n=la()(It).call(It,fn),Qn=lc.isObject(Nn),Tn=wt.$$ref,ur){ii.next=22;break}if(!Qn){ii.next=22;break}return ie.allowMetaPatches&&Tn&&(_e[Tn]=!0),ii.delegateYield(xe(Nn,$n,dn),"t0",22);case 22:if($r||fn!==P.key){ii.next=27;break}if(Yr=j(c,It),c&&!Yr){ii.next=27;break}return ii.next=27,P.plugin(Nn,fn,$n,ie,dn);case 27:Pr++,ii.next=12;break;case 30:case"end":return ii.stop()}},ge)},ge=M_().mark(xe),_e={},Le=cm(zp()(re).call(re,lc.isAdditiveMutation)),pt.prev=4,Le.s();case 6:if((Re=Le.n()).done){pt.next=11;break}return pt.delegateYield(xe((ke=Re.value).value,ke.path,ke),"t0",9);case 9:pt.next=6;break;case 11:pt.next=16;break;case 13:pt.prev=13,pt.t1=pt.catch(4),Le.e(pt.t1);case 16:return pt.prev=16,Le.f(),pt.finish(16);case 19:case"end":return pt.stop()}},W,null,[[4,13,16,19]])})),D_()(C.bind(g),{pluginName:t.name||o,isGenerator:lc.isGenerator(C)})}},{key:"nextPlugin",value:function(){var t,o=this;return dA()(t=this.wrappedPlugins).call(t,function(c){return o.getMutationsForPlugin(c).length>0})}},{key:"nextPromisedPatch",value:function(){var t;if(this.promisedPatches.length>0)return Dg().race(Lu()(t=this.promisedPatches).call(t,function(o){return o.value}))}},{key:"getPluginHistory",value:function(t){var o=this.constructor.getPluginName(t);return this.pluginHistory[o]||[]}},{key:"getPluginRunCount",value:function(t){return this.getPluginHistory(t).length}},{key:"getPluginHistoryTip",value:function(t){var o=this.getPluginHistory(t);return o&&o[o.length-1]||{}}},{key:"getPluginMutationIndex",value:function(t){var o=this.getPluginHistoryTip(t).mutationIndex;return"number"!=typeof o?-1:o}},{key:"updatePluginHistory",value:function(t,o){var c=this.constructor.getPluginName(t);this.pluginHistory[c]=this.pluginHistory[c]||[],this.pluginHistory[c].push(o)}},{key:"updatePatches",value:function(t){var o=this;lc.normalizeArray(t).forEach(function(c){if(c instanceof Error)o.errors.push(c);else try{if(!lc.isObject(c))return void o.debug("updatePatches","Got a non-object patch",c);if(o.showDebug&&o.allPatches.push(c),lc.isPromise(c.value))return o.promisedPatches.push(c),void o.promisedPatchThen(c);if(lc.isContextPatch(c))return void o.setContext(c.path,c.value);if(lc.isMutation(c))return void o.updateMutations(c)}catch(g){console.error(g),o.errors.push(g)}})}},{key:"updateMutations",value:function(t){"object"===vc(t.value)&&!Array.isArray(t.value)&&this.allowMetaPatches&&(t.value=_d({},t.value));var o=lc.applyPatch(this.state,t,{allowMetaPatches:this.allowMetaPatches});o&&(this.mutations.push(t),this.state=o)}},{key:"removePromisedPatch",value:function(t){var o,c=this.promisedPatches.indexOf(t);c<0?this.debug("Tried to remove a promisedPatch that isn't there!"):fA()(o=this.promisedPatches).call(o,c,1)}},{key:"promisedPatchThen",value:function(t){var o=this;return t.value=t.value.then(function(c){var g=_d(_d({},t),{},{value:c});o.removePromisedPatch(t),o.updatePatches(g)}).catch(function(c){o.removePromisedPatch(t),o.updatePatches(c)}),t.value}},{key:"getMutations",value:function(t,o){var c;return t=t||0,"number"!=typeof o&&(o=this.mutations.length),x_()(c=this.mutations).call(c,t,o)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(t){var o=this.getPluginMutationIndex(t);return this.getMutations(o+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(t){return lc.getIn(this.state,t)}},{key:"_getContext",value:function(t){return this.contextTree.get(t)}},{key:"setContext",value:function(t,o){return this.contextTree.set(t,o)}},{key:"_hasRun",value:function(t){return this.getPluginRunCount(this.getCurrentPlugin())>(t||0)}},{key:"dispatch",value:function(){var D,t=this,o=this,c=this.nextPlugin();if(!c){var g=this.nextPromisedPatch();if(g)return g.then(function(){return t.dispatch()}).catch(function(){return t.dispatch()});var C={spec:this.state,errors:this.errors};return this.showDebug&&(C.patches=this.allPatches),Dg().resolve(C)}if(o.pluginCount=o.pluginCount||{},o.pluginCount[c]=(o.pluginCount[c]||0)+1,o.pluginCount[c]>100)return Dg().resolve({spec:o.state,errors:la()(D=o.errors).call(D,new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(c!==this.currentPlugin&&this.promisedPatches.length){var P,j=Lu()(P=this.promisedPatches).call(P,function(ie){return ie.value});return Dg().all(Lu()(j).call(j,function(ie){return ie.then(WN,WN)})).then(function(){return t.dispatch()})}return function(){o.currentPlugin=c;var ie=o.getCurrentMutations(),ge=o.mutations.length-1;try{if(c.isGenerator){var Le,_e=cm(c(ie,o.getLib()));try{for(_e.s();!(Le=_e.n()).done;)re(Le.value)}catch(xe){_e.e(xe)}finally{_e.f()}}else re(c(ie,o.getLib()))}catch(xe){console.error(xe),re([D_()(Object.create(xe),{plugin:c})])}finally{o.updatePluginHistory(c,{mutationIndex:ge})}return o.dispatch()}();function re(ie){ie&&(ie=lc.fullyNormalizeArray(ie),o.updatePatches(ie,c))}}}],[{key:"getPluginName",value:function(t){return t.pluginName}},{key:"getPatchesOfType",value:function(t,o){return zp()(t).call(t,o)}}]),n}(),gb={refs:ZP,allOf:QP,parameters:XP,properties:KP},n8=i(84220),JN=i.n(n8),QN=function(s){return String.prototype.toLowerCase.call(s)},XN=function(s){return s.replace(/[^\w]/gi,"_")};function KN(n){var s=n.openapi;return!!s&&JN()(s).call(s,"3")}function L3(n,s){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},c=o.v2OperationIdCompatibilityMode;if(!n||"object"!==vc(n))return null;var g=(n.operationId||"").replace(/\s/g,"");return g.length?XN(n.operationId):r8(s,t,{v2OperationIdCompatibilityMode:c})}function r8(n,s){var t,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},c=o.v2OperationIdCompatibilityMode;if(c){var g,C,D=la()(g="".concat(s.toLowerCase(),"_")).call(g,n).replace(/[\s!@#$%^&*()_+=[{\]};:<>|./?,\\'""-]/g,"_");return(D=D||la()(C="".concat(n.substring(1),"_")).call(C,s)).replace(/((_){2,})/g,"_").replace(/^(_)*/g,"").replace(/([_])*$/g,"")}return la()(t="".concat(QN(s))).call(t,XN(n))}function qN(n,s){var t;return la()(t="".concat(QN(s),"-")).call(t,n)}function e6(n){var s=n.spec,t=s.paths,o={};if(!t||s.$$normalized)return n;for(var c in t){var g,C=t[c];if(null!=C&&dm()(g=["object","function"]).call(g,vc(C))){var D=C.parameters,P=function(ie){var ge,_e=C[ie];if(null==_e||!dm()(ge=["object","function"]).call(ge,vc(_e)))return"continue";var Le=L3(_e,c,ie);if(Le){o[Le]?o[Le].push(_e):o[Le]=[_e];var Re=o[Le];if(Re.length>1)Re.forEach(function($r,ur){var Pr;$r.__originalOperationId=$r.__originalOperationId||$r.operationId,$r.operationId=la()(Pr="".concat(Le)).call(Pr,ur+1)});else if(void 0!==_e.operationId){var ke=Re[0];ke.__originalOperationId=ke.__originalOperationId||_e.operationId,ke.operationId=Le}}if("parameters"!==ie){var xe=[],U={};for(var pt in s)("produces"===pt||"consumes"===pt||"security"===pt)&&(U[pt]=s[pt],xe.push(U));if(D&&(U.parameters=D,xe.push(U)),xe.length){var wt,ht=cm(xe);try{for(ht.s();!(wt=ht.n()).done;){var It=wt.value;for(var dn in It)if(_e[dn]){if("parameters"===dn){var Dn,Lt=cm(It[dn]);try{var Mn=function(){var ur=Dn.value;_e[dn].some(function(xr){return xr.name&&xr.name===ur.name||xr.$ref&&xr.$ref===ur.$ref||xr.$$ref&&xr.$$ref===ur.$$ref||xr===ur})||_e[dn].push(ur)};for(Lt.s();!(Dn=Lt.n()).done;)Mn()}catch($r){Lt.e($r)}finally{Lt.f()}}}else _e[dn]=It[dn]}}catch($r){ht.e($r)}finally{ht.f()}}}};for(var j in C)P(j)}}return s.$$normalized=!0,n}function t6(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=s.requestInterceptor,o=s.responseInterceptor,c=n.withCredentials?"include":"same-origin";return function(g){return n({url:g,loadSpec:!0,requestInterceptor:t,responseInterceptor:o,headers:{Accept:$N},credentials:c}).then(function(C){return C.body})}}function n6(n){var t=n.spec,c=n.mode,g=n.allowMetaPatches,C=void 0===g||g,D=n.pathDiscriminator,P=n.modelPropertyMacro,j=n.parameterMacro,W=n.requestInterceptor,re=n.responseInterceptor,ie=n.skipNormalization,ge=n.useCircularStructures,_e=n.http,Le=n.baseDoc;return Le=Le||n.url,_e=n.fetch||_e||iA,t?Re(t):t6(_e,{requestInterceptor:W,responseInterceptor:re})(Le).then(Re);function Re(ke){Le&&(gb.refs.docCache[Le]=ke),gb.refs.fetchJSON=t6(_e,{requestInterceptor:W,responseInterceptor:re});var xe=[gb.refs];return"function"==typeof j&&xe.push(gb.parameters),"function"==typeof P&&xe.push(gb.properties),"strict"!==c&&xe.push(gb.allOf),function(n){return new e8(n).dispatch()}({spec:ke,context:{baseDoc:Le},plugins:xe,allowMetaPatches:C,pathDiscriminator:D,parameterMacro:j,modelPropertyMacro:P,useCircularStructures:ge}).then(ie?function(){var U=s0(M_().mark(function pt(ht){return M_().wrap(function(It){for(;;)switch(It.prev=It.next){case 0:return It.abrupt("return",ht);case 1:case"end":return It.stop()}},pt)}));return function(pt){return U.apply(this,arguments)}}():e6)}}var F3=i(72632);function r6(n,s){if(null==n)return{};var o,c,t=function(n,s){if(null==n)return{};var c,g,t={},o=lA(n);for(g=0;g<o.length;g++)c=o[g],!(F3(s).call(s,c)>=0)&&(t[c]=n[c]);return t}(n,s);if(cb){var g=cb(n);for(c=0;c<g.length;c++)o=g[c],!(F3(s).call(s,o)>=0)&&(!Object.prototype.propertyIsEnumerable.call(n,o)||(t[o]=n[o]))}return t}var l8=i(58102),mb=i.n(l8),u8=i(7281);function i6(n){return"[object Object]"===Object.prototype.toString.call(n)}function o6(n){var s,t;return!1!==i6(n)&&(void 0===(s=n.constructor)||!(!1===i6(t=s.prototype)||!1===t.hasOwnProperty("isPrototypeOf")))}const c8={body:function(n){n.req.body=n.value},header:function(n){var s=n.req,t=n.parameter,o=n.value;s.headers=s.headers||{},void 0!==o&&(s.headers[t.name]=o)},query:function(n){var s=n.req,t=n.value,o=n.parameter;if(s.query=s.query||{},!1===t&&"boolean"===o.type&&(t="false"),0===t&&["number","integer"].indexOf(o.type)>-1&&(t="0"),t)s.query[o.name]={collectionFormat:o.collectionFormat,value:t};else if(o.allowEmptyValue&&void 0!==t){var c=o.name;s.query[c]=s.query[c]||{},s.query[c].allowEmptyValue=!0}},path:function(n){var s=n.req,t=n.value;s.url=s.url.split("{".concat(n.parameter.name,"}")).join(encodeURIComponent(t))},formData:function(n){var s=n.req,t=n.value,o=n.parameter;(t||o.allowEmptyValue)&&(s.form=s.form||{},s.form[o.name]={value:t,allowEmptyValue:o.allowEmptyValue,collectionFormat:o.collectionFormat})}};function yA(n,s){return dm()(s).call(s,"application/json")?"string"==typeof n?n:c0()(n):n.toString()}function g8(n){var s=n.req,t=n.value,o=n.parameter,c=o.name,g=o.style,C=o.explode,D=o.content;if(D){var P=Su()(D)[0];s.url=s.url.split("{".concat(c,"}")).join(Kv(yA(t,P),{escape:!0}))}else{var j=BT({key:o.name,value:t,style:g||"simple",explode:C||!1,escape:!0});s.url=s.url.split("{".concat(c,"}")).join(j)}}function m8(n){var s=n.req,t=n.value,o=n.parameter;if(s.query=s.query||{},o.content){var c=Su()(o.content)[0];s.query[o.name]=yA(t,c)}else if(!1===t&&(t="false"),0===t&&(t="0"),t)s.query[o.name]={value:t,serializationOption:{style:o.style,explode:o.explode,allowReserved:o.allowReserved}};else if(o.allowEmptyValue&&void 0!==t){var P=o.name;s.query[P]=s.query[P]||{},s.query[P].allowEmptyValue=!0}}var v8=["accept","authorization","content-type"];function y8(n){var s=n.req,t=n.parameter,o=n.value;if(s.headers=s.headers||{},!(v8.indexOf(t.name.toLowerCase())>-1)){if(t.content){var c=Su()(t.content)[0];return void(s.headers[t.name]=yA(o,c))}void 0!==o&&(s.headers[t.name]=BT({key:t.name,value:o,style:t.style||"simple",explode:void 0!==t.explode&&t.explode,escape:!1}))}}function b8(n){var s=n.req,t=n.parameter,o=n.value;s.headers=s.headers||{};var c=vc(o);if(t.content){var g,C=Su()(t.content)[0];s.headers.Cookie=la()(g="".concat(t.name,"=")).call(g,yA(o,C))}else if("undefined"!==c){var D="object"===c&&!Array.isArray(o)&&t.explode?"":"".concat(t.name,"=");s.headers.Cookie=D+BT({key:t.name,value:o,escape:!1,style:t.style||"form",explode:void 0!==t.explode&&t.explode})}}var E8=i(24677),s6=i.n(E8);const a6=(void 0!==s6()?s6():"undefined"!=typeof self?self:window).btoa;var w8=["http","fetch","spec","operationId","pathName","method","parameters","securities"],l6=function(s){return Array.isArray(s)?s:[]},x8=tv("OperationNotFoundError",function(s,t,o){this.originalError=o,D_()(this,t||{})}),N8={buildRequest:u6};function P8(n){var s=n.http,t=n.fetch,o=n.spec,c=n.operationId,g=n.pathName,C=n.method,D=n.parameters,P=n.securities,j=r6(n,w8),W=s||t||iA;g&&C&&!c&&(c=qN(g,C));var re=N8.buildRequest(_d({spec:o,operationId:c,parameters:D,securities:P,http:W},j));return re.body&&(o6(re.body)||Array.isArray(re.body))&&(re.body=c0()(re.body)),W(re)}function u6(n){var s,t,o=n.spec,c=n.operationId,g=n.responseContentType,C=n.scheme,D=n.requestInterceptor,P=n.responseInterceptor,j=n.contextUrl,W=n.userFetch,re=n.server,ie=n.serverVariables,ge=n.http,_e=n.signal,Le=n.parameters,Re=n.parameterBuilders,ke=KN(o);Re||(Re=ke?p:c8);var U={url:"",credentials:ge&&ge.withCredentials?"include":"same-origin",headers:{},cookies:{}};_e&&(U.signal=_e),D&&(U.requestInterceptor=D),P&&(U.responseInterceptor=P),W&&(U.userFetch=W);var pt=function(n,s){return n&&n.paths?function(n,s){return function(n,s,t){if(!n||"object"!==vc(n)||!n.paths||"object"!==vc(n.paths))return null;var o=n.paths;for(var c in o)for(var g in o[c])if("PARAMETERS"!==g.toUpperCase()){var C=o[c][g];if(C&&"object"===vc(C)){var D={spec:n,pathName:c,method:g.toUpperCase(),operation:C};if(s(D))return D}}}(n,s)||null}(n,function(t){var o=t.pathName,c=t.method,g=t.operation;if(!g||"object"!==vc(g))return!1;var C=g.operationId;return[L3(g,o,c),qN(o,c),C].some(function(j){return j&&j===s})}):null}(o,c);if(!pt)throw new x8("Operation ".concat(c," not found"));var ht=pt.operation,wt=void 0===ht?{}:ht,It=pt.method,dn=pt.pathName;if(U.url+=function(n){return KN(n.spec)?function(n){var s=n.spec,t=n.pathName,o=n.method,c=n.server,g=n.contextUrl,C=n.serverVariables,D=void 0===C?{}:C,P=mb()(s,["paths",t,(o||"").toLowerCase(),"servers"])||mb()(s,["paths",t,"servers"])||mb()(s,["servers"]),j="",W=null;if(c&&P&&P.length){var re=Lu()(P).call(P,function(_e){return _e.url});re.indexOf(c)>-1&&(j=c,W=P[re.indexOf(c)])}if(!j&&P&&P.length){j=P[0].url;var ie=A_(P,1);W=ie[0]}return j.indexOf("{")>-1&&function(n){for(var o,s=[],t=/{([^}]+)}/g;o=t.exec(n);)s.push(o[1]);return s}(j).forEach(function(_e){if(W.variables&&W.variables[_e]){var Re=D[_e]||W.variables[_e].default,ke=new RegExp("{".concat(_e,"}"),"g");j=j.replace(ke,Re)}}),function(){var D,P,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=Xh.parse(n&&s?Xh.resolve(s,n):n),o=Xh.parse(s),c=k3(t.protocol)||k3(o.protocol)||"",g=t.host||o.host,C=t.pathname||"";return"/"===(D=c&&g?la()(P="".concat(c,"://")).call(P,g+C):C)[D.length-1]?x_()(D).call(D,0,-1):D}(j,g)}(n):function(n){var W,re,s=n.spec,t=n.scheme,o=n.contextUrl,g=Xh.parse(void 0===o?"":o),C=Array.isArray(s.schemes)?s.schemes[0]:null,D=t||C||k3(g.protocol)||"http",P=s.host||g.host||"",j=s.basePath||"";return"/"===(W=D&&P?la()(re="".concat(D,"://")).call(re,P+j):j)[W.length-1]?x_()(W).call(W,0,-1):W}(n)}({spec:o,scheme:C,contextUrl:j,server:re,serverVariables:ie,pathName:dn,method:It}),!c)return delete U.cookies,U;U.url+=dn,U.method="".concat(It).toUpperCase(),Le=Le||{};var Lt=o.paths[dn]||{};g&&(U.headers.accept=g);var Dn=function(s){var t={};s.forEach(function(c){t[c.in]||(t[c.in]={}),t[c.in][c.name]=c});var o=[];return Su()(t).forEach(function(c){Su()(t[c]).forEach(function(g){o.push(t[c][g])})}),o}(la()(s=la()(t=[]).call(t,l6(wt.parameters))).call(s,l6(Lt.parameters)));Dn.forEach(function(ur){var xr,fn,Pr=Re[ur.in];if("body"===ur.in&&ur.schema&&ur.schema.properties&&(xr=Le),void 0===(xr=ur&&ur.name&&Le[ur.name]))xr=ur&&ur.name&&Le[la()(fn="".concat(ur.in,".")).call(fn,ur.name)];else if(function(s,t){return zp()(t).call(t,function(o){return o.name===s})}(ur.name,Dn).length>1){var Nn;console.warn(la()(Nn="Parameter '".concat(ur.name,"' is ambiguous because the defined spec has more than one parameter with the name: '")).call(Nn,ur.name,"' and the passed-in parameter values did not define an 'in' value."))}if(null!==xr){if(void 0!==ur.default&&void 0===xr&&(xr=ur.default),void 0===xr&&ur.required&&!ur.allowEmptyValue)throw new Error("Required parameter ".concat(ur.name," is not provided"));if(ke&&ur.schema&&"object"===ur.schema.type&&"string"==typeof xr)try{xr=JSON.parse(xr)}catch($n){throw new Error("Could not parse object parameter value string as JSON")}Pr&&Pr({req:U,parameter:ur,value:xr,operation:wt,spec:o})}});var Mn=_d(_d({},n),{},{operation:wt});if((U=ke?function(n,s){var t=n.operation,o=n.requestBody,C=n.attachContentTypeForEmptyPayload,D=n.requestContentType;s=function(n){var s=n.request,t=n.securities,o=void 0===t?{}:t,c=n.operation,g=void 0===c?{}:c,C=n.spec,D=_d({},s),P=o.authorized,j=void 0===P?{}:P,W=g.security||C.security||[],re=j&&!!Su()(j).length,ie=mb()(C,["components","securitySchemes"])||{};return D.headers=D.headers||{},D.query=D.query||{},Su()(o).length&&re&&W&&(!Array.isArray(g.security)||g.security.length)?(W.forEach(function(ge){Su()(ge).forEach(function(_e){var Le=j[_e],Re=ie[_e];if(Le){var ke=Le.value||Le,xe=Re.type;if(Le)if("apiKey"===xe)"query"===Re.in&&(D.query[Re.name]=ke),"header"===Re.in&&(D.headers[Re.name]=ke),"cookie"===Re.in&&(D.cookies[Re.name]=ke);else if("http"===xe){if(/^basic$/i.test(Re.scheme)){var U,pt=ke.username||"",ht=ke.password||"",wt=a6(la()(U="".concat(pt,":")).call(U,ht));D.headers.Authorization="Basic ".concat(wt)}/^bearer$/i.test(Re.scheme)&&(D.headers.Authorization="Bearer ".concat(ke))}else if("oauth2"===xe||"openIdConnect"===xe){var It,dn=Le.token||{},Dn=dn[Re["x-tokenName"]||"access_token"],Mn=dn.token_type;(!Mn||"bearer"===Mn.toLowerCase())&&(Mn="Bearer"),D.headers.Authorization=la()(It="".concat(Mn," ")).call(It,Dn)}}})}),D):s}({request:s,securities:n.securities,operation:t,spec:n.spec});var P=t.requestBody||{},j=Su()(P.content||{}),W=D&&j.indexOf(D)>-1;if(o||C){if(D&&W)s.headers["Content-Type"]=D;else if(!D){var re=j[0];re&&(s.headers["Content-Type"]=re,D=re)}}else D&&W&&(s.headers["Content-Type"]=D);if(!n.responseContentType&&t.responses){var ie,ge=zp()(ie=u2()(t.responses)).call(ie,function(Le){var Re=A_(Le,2),xe=Re[1],U=parseInt(Re[0],10);return U>=200&&U<300&&o6(xe.content)}).reduce(function(Le,Re){var xe=A_(Re,2)[1];return la()(Le).call(Le,Su()(xe.content))},[]);ge.length>0&&(s.headers.accept=ge.join(", "))}if(o)if(D){if(j.indexOf(D)>-1)if("application/x-www-form-urlencoded"===D||"multipart/form-data"===D)if("object"===vc(o)){var _e=(P.content[D]||{}).encoding||{};s.form={},Su()(o).forEach(function(Le){s.form[Le]={value:o[Le],encoding:_e[Le]||{}}})}else s.form=o;else s.body=o}else s.body=o;return s}(Mn,U):function(n,s){var P,j,t=n.spec,o=n.operation,g=n.requestContentType,C=n.responseContentType,D=n.attachContentTypeForEmptyPayload;if((s=function(n){var s=n.request,t=n.securities,o=void 0===t?{}:t,c=n.operation,g=void 0===c?{}:c,C=n.spec,D=_d({},s),P=o.authorized,j=void 0===P?{}:P,W=o.specSecurity,ie=g.security||(void 0===W?[]:W),ge=j&&!!Su()(j).length,_e=C.securityDefinitions;return D.headers=D.headers||{},D.query=D.query||{},Su()(o).length&&ge&&ie&&(!Array.isArray(g.security)||g.security.length)?(ie.forEach(function(Le){Su()(Le).forEach(function(Re){var ke=j[Re];if(ke){var xe=ke.token,U=ke.value||ke,pt=_e[Re],ht=pt.type,It=xe&&xe[pt["x-tokenName"]||"access_token"],dn=xe&&xe.token_type;if(ke)if("apiKey"===ht){var Lt="query"===pt.in?"query":"headers";D[Lt]=D[Lt]||{},D[Lt][pt.name]=U}else if("basic"===ht)if(U.header)D.headers.authorization=U.header;else{var Dn,Mn=U.username||"",$r=U.password||"";U.base64=a6(la()(Dn="".concat(Mn,":")).call(Dn,$r)),D.headers.authorization="Basic ".concat(U.base64)}else if("oauth2"===ht&&It){var ur;dn=dn&&"bearer"!==dn.toLowerCase()?dn:"Bearer",D.headers.authorization=la()(ur="".concat(dn," ")).call(ur,It)}}})}),D):s}({request:s,securities:n.securities,operation:o,spec:t})).body||s.form||D)if(g)s.headers["Content-Type"]=g;else if(Array.isArray(o.consumes)){var W=A_(o.consumes,1);s.headers["Content-Type"]=W[0]}else if(Array.isArray(t.consumes)){var re=A_(t.consumes,1);s.headers["Content-Type"]=re[0]}else o.parameters&&zp()(P=o.parameters).call(P,function(Re){return"file"===Re.type}).length?s.headers["Content-Type"]="multipart/form-data":o.parameters&&zp()(j=o.parameters).call(j,function(Re){return"formData"===Re.in}).length&&(s.headers["Content-Type"]="application/x-www-form-urlencoded");else if(g){var ie,ge,_e=o.parameters&&zp()(ie=o.parameters).call(ie,function(Re){return"body"===Re.in}).length>0,Le=o.parameters&&zp()(ge=o.parameters).call(ge,function(Re){return"formData"===Re.in}).length>0;(_e||Le)&&(s.headers["Content-Type"]=g)}return!C&&Array.isArray(o.produces)&&o.produces.length>0&&(s.headers.accept=o.produces.join(", ")),s}(Mn,U)).cookies&&Su()(U.cookies).length){var $r=Su()(U.cookies).reduce(function(ur,Pr){return ur+(ur?"&":"")+u8.serialize(Pr,U.cookies[Pr])},"");U.headers.Cookie=$r}return U.cookies&&delete U.cookies,VT(U),U}var k3=function(s){return s?s.replace(/\W/g,""):null};function H8(n,s){return $3.apply(this,arguments)}function $3(){return($3=s0(M_().mark(function n(s,t){var o,c,re,ie,ge,_e,Le=arguments;return M_().wrap(function(ke){for(;;)switch(ke.prev=ke.next){case 0:return c=(o=Le.length>2&&void 0!==Le[2]?Le[2]:{}).returnEntireTree,re={pathDiscriminator:t,baseDoc:o.baseDoc,requestInterceptor:o.requestInterceptor,responseInterceptor:o.responseInterceptor,parameterMacro:o.parameterMacro,modelPropertyMacro:o.modelPropertyMacro,useCircularStructures:o.useCircularStructures},ie=e6({spec:s}),ge=ie.spec,ke.next=6,n6(_d(_d({},re),{},{spec:ge,allowMetaPatches:!0,skipNormalization:!0}));case 6:return _e=ke.sent,!c&&Array.isArray(t)&&t.length&&(_e.spec=mb()(_e.spec,t)||null),ke.abrupt("return",_e);case 9:case"end":return ke.stop()}},n)}))).apply(this,arguments)}var c6=i(88768),d6=Bl.createContext(null),f6=function(n){n()};var p6={notify:function(){},get:function(){return[]}};function h6(n,s){var t,o=p6;function C(){W.onStateChange&&W.onStateChange()}function P(){t||(t=s?s.addNestedSub(C):n.subscribe(C),o=function(){var n=f6,s=null,t=null;return{clear:function(){s=null,t=null},notify:function(){n(function(){for(var c=s;c;)c.callback(),c=c.next})},get:function(){for(var c=[],g=s;g;)c.push(g),g=g.next;return c},subscribe:function(c){var g=!0,C=t={callback:c,next:null,prev:t};return C.prev?C.prev.next=C:s=C,function(){!g||null===s||(g=!1,C.next?C.next.prev=C.prev:t=C.prev,C.prev?C.prev.next=C.next:s=C.next)}}}}())}var W={addNestedSub:function(re){return P(),o.subscribe(re)},notifyNestedSubs:function(){o.notify()},handleChangeWrapper:C,isSubscribed:function(){return Boolean(t)},trySubscribe:P,tryUnsubscribe:function(){t&&(t(),t=void 0,o.clear(),o=p6)},getListeners:function(){return o}};return W}var _6="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?Bl.useLayoutEffect:Bl.useEffect;const G8=function(n){var s=n.store,t=n.context,o=n.children,c=(0,Bl.useMemo)(function(){var D=h6(s);return{store:s,subscription:D}},[s]),g=(0,Bl.useMemo)(function(){return s.getState()},[s]);return _6(function(){var D=c.subscription;return D.onStateChange=D.notifyNestedSubs,D.trySubscribe(),g!==s.getState()&&D.notifyNestedSubs(),function(){D.tryUnsubscribe(),D.onStateChange=null}},[c,g]),Bl.createElement((t||d6).Provider,{value:c},o)};function rv(){return(rv=Object.assign?Object.assign.bind():function(n){for(var s=1;s<arguments.length;s++){var t=arguments[s];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n}).apply(this,arguments)}function cS(n,s){if(null==n)return{};var c,g,t={},o=Object.keys(n);for(g=0;g<o.length;g++)!(s.indexOf(c=o[g])>=0)&&(t[c]=n[c]);return t}var V8=i(62568),g6=i.n(V8),z8=i(56261),W8=["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"],J8=["reactReduxForwardedRef"],Q8=[],X8=[null,null];function K8(n,s){return[s.payload,n[1]+1]}function m6(n,s,t){_6(function(){return n.apply(void 0,s)},t)}function q8(n,s,t,o,c,g,C){n.current=o,s.current=c,t.current=!1,g.current&&(g.current=null,C())}function eI(n,s,t,o,c,g,C,D,P,j){if(n){var W=!1,re=null,ie=function(){if(!W){var Re,ke,Le=s.getState();try{Re=o(Le,c.current)}catch(xe){ke=xe,re=xe}ke||(re=null),Re===g.current?C.current||P():(g.current=Re,D.current=Re,C.current=!0,j({type:"STORE_UPDATED",payload:{error:ke}}))}};return t.onStateChange=ie,t.trySubscribe(),ie(),function(){if(W=!0,t.tryUnsubscribe(),t.onStateChange=null,re)throw re}}}var tI=function(){return[null,0]};function nI(n,s){void 0===s&&(s={});var o=s.getDisplayName,c=void 0===o?function(wt){return"ConnectAdvanced("+wt+")"}:o,g=s.methodName,C=void 0===g?"connectAdvanced":g,D=s.renderCountProp,P=void 0===D?void 0:D,j=s.shouldHandleStateChanges,W=void 0===j||j,re=s.storeKey,ie=void 0===re?"store":re,Le=s.forwardRef,Re=void 0!==Le&&Le,ke=s.context,xe=void 0===ke?d6:ke,U=cS(s,W8),ht=xe;return function(It){var dn=It.displayName||It.name||"Component",Lt=c(dn),Dn=rv({},U,{getDisplayName:c,methodName:C,renderCountProp:P,shouldHandleStateChanges:W,storeKey:ie,displayName:Lt,wrappedComponentName:dn,WrappedComponent:It}),Mn=U.pure,ur=Mn?Bl.useMemo:function(Nn){return Nn()};function Pr(Nn){var $n=(0,Bl.useMemo)(function(){var Gr=Nn.reactReduxForwardedRef,xi=cS(Nn,J8);return[Nn.context,Gr,xi]},[Nn]),Qn=$n[0],Tn=$n[1],Yr=$n[2],ji=(0,Bl.useMemo)(function(){return Qn&&Qn.Consumer&&(0,z8.isContextConsumer)(Bl.createElement(Qn.Consumer,null))?Qn:ht},[Qn,ht]),ii=(0,Bl.useContext)(ji),Ui=Boolean(Nn.store)&&Boolean(Nn.store.getState)&&Boolean(Nn.store.dispatch),An=(Boolean(ii)&&Boolean(ii.store),Ui?Nn.store:ii.store),hn=(0,Bl.useMemo)(function(){return function(Nn){return n(Nn.dispatch,Dn)}(An)},[An]),qr=(0,Bl.useMemo)(function(){if(!W)return X8;var Gr=h6(An,Ui?null:ii.subscription),xi=Gr.notifyNestedSubs.bind(Gr);return[Gr,xi]},[An,Ui,ii]),Ri=qr[0],qi=qr[1],Zo=(0,Bl.useMemo)(function(){return Ui?ii:rv({},ii,{subscription:Ri})},[Ui,ii,Ri]),bo=(0,Bl.useReducer)(K8,Q8,tI),Ws=bo[0][0],wi=bo[1];if(Ws&&Ws.error)throw Ws.error;var lo=(0,Bl.useRef)(),go=(0,Bl.useRef)(Yr),Ge=(0,Bl.useRef)(),St=(0,Bl.useRef)(!1),Et=ur(function(){return Ge.current&&Yr===go.current?Ge.current:hn(An.getState(),Yr)},[An,Ws,Yr]);m6(q8,[go,lo,St,Yr,Et,Ge,qi]),m6(eI,[W,An,Ri,hn,go,lo,St,Ge,qi,wi],[An,Ri,hn]);var Bn=(0,Bl.useMemo)(function(){return Bl.createElement(It,rv({},Et,{ref:Tn}))},[Tn,It,Et]);return(0,Bl.useMemo)(function(){return W?Bl.createElement(ji.Provider,{value:Zo},Bn):Bn},[ji,Bn,Zo])}var xr=Mn?Bl.memo(Pr):Pr;if(xr.WrappedComponent=It,xr.displayName=Pr.displayName=Lt,Re){var fn=Bl.forwardRef(function($n,Qn){return Bl.createElement(xr,rv({},$n,{reactReduxForwardedRef:Qn}))});return fn.displayName=Lt,fn.WrappedComponent=It,g6()(fn,It)}return g6()(xr,It)}}function v6(n,s){return n===s?0!==n||0!==s||1/n==1/s:n!=n&&s!=s}function H3(n,s){if(v6(n,s))return!0;if("object"!=typeof n||null===n||"object"!=typeof s||null===s)return!1;var t=Object.keys(n),o=Object.keys(s);if(t.length!==o.length)return!1;for(var c=0;c<t.length;c++)if(!Object.prototype.hasOwnProperty.call(s,t[c])||!v6(n[t[c]],s[t[c]]))return!1;return!0}function U3(n){return function(t,o){var c=n(t,o);function g(){return c}return g.dependsOnOwnProps=!1,g}}function y6(n){return null!=n.dependsOnOwnProps?Boolean(n.dependsOnOwnProps):1!==n.length}function b6(n,s){return function(o,c){var C=function(P,j){return C.dependsOnOwnProps?C.mapToProps(P,j):C.mapToProps(P)};return C.dependsOnOwnProps=!0,C.mapToProps=function(P,j){C.mapToProps=n,C.dependsOnOwnProps=y6(n);var W=C(P,j);return"function"==typeof W&&(C.mapToProps=W,C.dependsOnOwnProps=y6(W),W=C(P,j)),W},C}}const aI=[function(n){return"function"==typeof n?b6(n):void 0},function(n){return n?void 0:U3(function(s){return{dispatch:s}})},function(n){return n&&"object"==typeof n?U3(function(s){return function(n,s){var t={},o=function(C){var D=n[C];"function"==typeof D&&(t[C]=function(){return s(D.apply(void 0,arguments))})};for(var c in n)o(c);return t}(n,s)}):void 0}],cI=[function(n){return"function"==typeof n?b6(n):void 0},function(n){return n?void 0:U3(function(){return{}})}];function dI(n,s,t){return rv({},t,n,s)}const _I=[function(n){return"function"==typeof n?function(n){return function(t,o){var P,g=o.pure,C=o.areMergedPropsEqual,D=!1;return function(W,re,ie){var ge=n(W,re,ie);return D?(!g||!C(ge,P))&&(P=ge):(D=!0,P=ge),P}}}(n):void 0},function(n){return n?void 0:function(){return dI}}];var gI=["initMapStateToProps","initMapDispatchToProps","initMergeProps"];function mI(n,s,t,o){return function(g,C){return t(n(g,C),s(o,C),C)}}function vI(n,s,t,o,c){var j,W,re,ie,ge,g=c.areStatesEqual,C=c.areOwnPropsEqual,D=c.areStatePropsEqual,P=!1;return function(pt,ht){return P?function(U,pt){var ht=!C(pt,W),wt=!g(U,j);return j=U,W=pt,ht&&wt?(re=n(j,W),s.dependsOnOwnProps&&(ie=s(o,W)),ge=t(re,ie,W)):ht?(n.dependsOnOwnProps&&(re=n(j,W)),s.dependsOnOwnProps&&(ie=s(o,W)),ge=t(re,ie,W)):wt?function(){var U=n(j,W),pt=!D(U,re);return re=U,pt&&(ge=t(re,ie,W)),ge}():ge}(pt,ht):function(U,pt){return re=n(j=U,W=pt),ie=s(o,W),ge=t(re,ie,W),P=!0,ge}(pt,ht)}}function yI(n,s){var t=s.initMapStateToProps,o=s.initMapDispatchToProps,c=s.initMergeProps,g=cS(s,gI),C=t(n,g),D=o(n,g),P=c(n,g);return(g.pure?vI:mI)(C,D,P,n,g)}var bI=["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"];function B3(n,s,t){for(var o=s.length-1;o>=0;o--){var c=s[o](n);if(c)return c}return function(g,C){throw new Error("Invalid value of type "+typeof n+" for "+t+" argument when connecting component "+C.wrappedComponentName+".")}}function EI(n,s){return n===s}function TI(n){var s=void 0===n?{}:n,t=s.connectHOC,o=void 0===t?nI:t,c=s.mapStateToPropsFactories,g=void 0===c?cI:c,C=s.mapDispatchToPropsFactories,D=void 0===C?aI:C,P=s.mergePropsFactories,j=void 0===P?_I:P,W=s.selectorFactory,re=void 0===W?yI:W;return function(ge,_e,Le,Re){void 0===Re&&(Re={});var xe=Re.pure,U=void 0===xe||xe,pt=Re.areStatesEqual,ht=void 0===pt?EI:pt,wt=Re.areOwnPropsEqual,It=void 0===wt?H3:wt,dn=Re.areStatePropsEqual,Lt=void 0===dn?H3:dn,Dn=Re.areMergedPropsEqual,Mn=void 0===Dn?H3:Dn,$r=cS(Re,bI),ur=B3(ge,g,"mapStateToProps"),Pr=B3(_e,D,"mapDispatchToProps"),xr=B3(Le,j,"mergeProps");return o(re,rv({methodName:"connect",getDisplayName:function(Nn){return"Connect("+Nn+")"},shouldHandleStateChanges:Boolean(ge),initMapStateToProps:ur,initMapDispatchToProps:Pr,initMergeProps:xr,pure:U,areStatesEqual:ht,areOwnPropsEqual:It,areStatePropsEqual:Lt,areMergedPropsEqual:Mn},$r))}}const SI=TI();f6=c6.unstable_batchedUpdates;var AI=i(12482),OI=i.n(AI),wI=i(80290),xI=i.n(wI);function Y3(n,s){(null==s||s>n.length)&&(s=n.length);for(var t=0,o=new Array(s);t<s;t++)o[t]=n[t];return o}function LI(n){return function(n){if(Array.isArray(n))return Y3(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,s){if(n){if("string"==typeof n)return Y3(n,s);var t=Object.prototype.toString.call(n).slice(8,-1);if("Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t)return Array.from(n);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Y3(n,s)}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z3(n,s,t){return s in n?Object.defineProperty(n,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[s]=t,n}function E6(n,s){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);s&&(o=o.filter(function(c){return Object.getOwnPropertyDescriptor(n,c).enumerable})),t.push.apply(t,o)}return t}function vb(n){for(var s=1;s<arguments.length;s++){var t=null!=arguments[s]?arguments[s]:{};s%2?E6(Object(t),!0).forEach(function(o){Z3(n,o,t[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):E6(Object(t)).forEach(function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(t,o))})}return n}var j3={};function kI(n){if(0===n.length||1===n.length)return n;var s=n.join(".");return j3[s]||(j3[s]=function(n){var s=n.length;return 0===s||1===s?n:2===s?[n[0],n[1],"".concat(n[0],".").concat(n[1]),"".concat(n[1],".").concat(n[0])]:3===s?[n[0],n[1],n[2],"".concat(n[0],".").concat(n[1]),"".concat(n[0],".").concat(n[2]),"".concat(n[1],".").concat(n[0]),"".concat(n[1],".").concat(n[2]),"".concat(n[2],".").concat(n[0]),"".concat(n[2],".").concat(n[1]),"".concat(n[0],".").concat(n[1],".").concat(n[2]),"".concat(n[0],".").concat(n[2],".").concat(n[1]),"".concat(n[1],".").concat(n[0],".").concat(n[2]),"".concat(n[1],".").concat(n[2],".").concat(n[0]),"".concat(n[2],".").concat(n[0],".").concat(n[1]),"".concat(n[2],".").concat(n[1],".").concat(n[0])]:s>=4?[n[0],n[1],n[2],n[3],"".concat(n[0],".").concat(n[1]),"".concat(n[0],".").concat(n[2]),"".concat(n[0],".").concat(n[3]),"".concat(n[1],".").concat(n[0]),"".concat(n[1],".").concat(n[2]),"".concat(n[1],".").concat(n[3]),"".concat(n[2],".").concat(n[0]),"".concat(n[2],".").concat(n[1]),"".concat(n[2],".").concat(n[3]),"".concat(n[3],".").concat(n[0]),"".concat(n[3],".").concat(n[1]),"".concat(n[3],".").concat(n[2]),"".concat(n[0],".").concat(n[1],".").concat(n[2]),"".concat(n[0],".").concat(n[1],".").concat(n[3]),"".concat(n[0],".").concat(n[2],".").concat(n[1]),"".concat(n[0],".").concat(n[2],".").concat(n[3]),"".concat(n[0],".").concat(n[3],".").concat(n[1]),"".concat(n[0],".").concat(n[3],".").concat(n[2]),"".concat(n[1],".").concat(n[0],".").concat(n[2]),"".concat(n[1],".").concat(n[0],".").concat(n[3]),"".concat(n[1],".").concat(n[2],".").concat(n[0]),"".concat(n[1],".").concat(n[2],".").concat(n[3]),"".concat(n[1],".").concat(n[3],".").concat(n[0]),"".concat(n[1],".").concat(n[3],".").concat(n[2]),"".concat(n[2],".").concat(n[0],".").concat(n[1]),"".concat(n[2],".").concat(n[0],".").concat(n[3]),"".concat(n[2],".").concat(n[1],".").concat(n[0]),"".concat(n[2],".").concat(n[1],".").concat(n[3]),"".concat(n[2],".").concat(n[3],".").concat(n[0]),"".concat(n[2],".").concat(n[3],".").concat(n[1]),"".concat(n[3],".").concat(n[0],".").concat(n[1]),"".concat(n[3],".").concat(n[0],".").concat(n[2]),"".concat(n[3],".").concat(n[1],".").concat(n[0]),"".concat(n[3],".").concat(n[1],".").concat(n[2]),"".concat(n[3],".").concat(n[2],".").concat(n[0]),"".concat(n[3],".").concat(n[2],".").concat(n[1]),"".concat(n[0],".").concat(n[1],".").concat(n[2],".").concat(n[3]),"".concat(n[0],".").concat(n[1],".").concat(n[3],".").concat(n[2]),"".concat(n[0],".").concat(n[2],".").concat(n[1],".").concat(n[3]),"".concat(n[0],".").concat(n[2],".").concat(n[3],".").concat(n[1]),"".concat(n[0],".").concat(n[3],".").concat(n[1],".").concat(n[2]),"".concat(n[0],".").concat(n[3],".").concat(n[2],".").concat(n[1]),"".concat(n[1],".").concat(n[0],".").concat(n[2],".").concat(n[3]),"".concat(n[1],".").concat(n[0],".").concat(n[3],".").concat(n[2]),"".concat(n[1],".").concat(n[2],".").concat(n[0],".").concat(n[3]),"".concat(n[1],".").concat(n[2],".").concat(n[3],".").concat(n[0]),"".concat(n[1],".").concat(n[3],".").concat(n[0],".").concat(n[2]),"".concat(n[1],".").concat(n[3],".").concat(n[2],".").concat(n[0]),"".concat(n[2],".").concat(n[0],".").concat(n[1],".").concat(n[3]),"".concat(n[2],".").concat(n[0],".").concat(n[3],".").concat(n[1]),"".concat(n[2],".").concat(n[1],".").concat(n[0],".").concat(n[3]),"".concat(n[2],".").concat(n[1],".").concat(n[3],".").concat(n[0]),"".concat(n[2],".").concat(n[3],".").concat(n[0],".").concat(n[1]),"".concat(n[2],".").concat(n[3],".").concat(n[1],".").concat(n[0]),"".concat(n[3],".").concat(n[0],".").concat(n[1],".").concat(n[2]),"".concat(n[3],".").concat(n[0],".").concat(n[2],".").concat(n[1]),"".concat(n[3],".").concat(n[1],".").concat(n[0],".").concat(n[2]),"".concat(n[3],".").concat(n[1],".").concat(n[2],".").concat(n[0]),"".concat(n[3],".").concat(n[2],".").concat(n[0],".").concat(n[1]),"".concat(n[3],".").concat(n[2],".").concat(n[1],".").concat(n[0])]:void 0}(n)),j3[s]}function $I(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0,o=n.filter(function(g){return"token"!==g}),c=kI(o);return c.reduce(function(g,C){return vb(vb({},g),t[C])},s)}function T6(n){return n.join(" ")}function S6(n){var s=n.node,t=n.stylesheet,o=n.style,c=void 0===o?{}:o,g=n.useInlineStyles,C=n.key,D=s.properties,j=s.tagName;if("text"===s.type)return s.value;if(j){var ie,re=function(n,s){var t=0;return function(o){return t+=1,o.map(function(c,g){return S6({node:c,stylesheet:n,useInlineStyles:s,key:"code-segment-".concat(t,"-").concat(g)})})}}(t,g);if(g){var ge=Object.keys(t).reduce(function(ke,xe){return xe.split(".").forEach(function(U){ke.includes(U)||ke.push(U)}),ke},[]),_e=D.className&&D.className.includes("token")?["token"]:[],Le=D.className&&_e.concat(D.className.filter(function(ke){return!ge.includes(ke)}));ie=vb(vb({},D),{},{className:T6(Le)||void 0,style:$I(D.className,Object.assign({},D.style,c),t)})}else ie=vb(vb({},D),{},{className:T6(D.className)});var Re=re(s.children);return Bl.createElement(j,rv({key:C},ie),Re)}}var BI=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function C6(n,s){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);s&&(o=o.filter(function(c){return Object.getOwnPropertyDescriptor(n,c).enumerable})),t.push.apply(t,o)}return t}function ym(n){for(var s=1;s<arguments.length;s++){var t=null!=arguments[s]?arguments[s]:{};s%2?C6(Object(t),!0).forEach(function(o){Z3(n,o,t[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):C6(Object(t)).forEach(function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(t,o))})}return n}var YI=/\n/g;function GI(n){var s=n.codeString,o=n.containerStyle,g=n.numberStyle,C=void 0===g?{}:g,D=n.startingLineNumber;return Bl.createElement("code",{style:Object.assign({},n.codeStyle,void 0===o?{float:"left",paddingRight:"10px"}:o)},function(n){var t=n.startingLineNumber,o=n.style;return n.lines.map(function(c,g){var C=g+t;return Bl.createElement("span",{key:"line-".concat(g),className:"react-syntax-highlighter-line-number",style:"function"==typeof o?o(C):o},"".concat(C,"\n"))})}({lines:s.replace(/\n$/,"").split("\n"),style:C,startingLineNumber:D}))}function VI(n){return"".concat(n.toString().length,".25em")}function M6(n,s){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(n),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:s},children:[{type:"text",value:n}]}}function A6(n,s,t){var o={display:"inline-block",minWidth:VI(t),paddingRight:"1em",textAlign:"right",userSelect:"none"},c="function"==typeof n?n(s):n;return ym(ym({},o),c)}function bA(n){var s=n.children,t=n.lineNumber,o=n.lineNumberStyle,c=n.largestLineNumber,g=n.showInlineLineNumbers,C=n.lineProps,D=void 0===C?{}:C,P=n.className,j=void 0===P?[]:P,W=n.showLineNumbers,re=n.wrapLongLines,ie="function"==typeof D?D(t):D;if(ie.className=j,t&&g){var ge=A6(o,t,c);s.unshift(M6(t,ge))}return re&W&&(ie.style=ym(ym({},ie.style),{},{display:"flex"})),{type:"element",tagName:"span",properties:ie,children:s}}function O6(n){for(var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=0;o<n.length;o++){var c=n[o];if("text"===c.type)t.push(bA({children:[c],className:LI(new Set(s))}));else if(c.children){var g=s.concat(c.properties.className);O6(c.children,g).forEach(function(C){return t.push(C)})}}return t}function zI(n,s,t,o,c,g,C,D,P){var j,W=O6(n.value),re=[],ie=-1,ge=0;function _e(ht,wt){var It=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return bA({children:ht,lineNumber:wt,lineNumberStyle:D,largestLineNumber:C,showInlineLineNumbers:c,lineProps:t,className:It,showLineNumbers:o,wrapLongLines:P})}function Le(ht,wt){if(o&&wt&&c){var It=A6(D,wt,C);ht.unshift(M6(wt,It))}return ht}function Re(ht,wt){var It=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s||It.length>0?_e(ht,wt,It):Le(ht,wt)}for(var ke=function(){var wt=W[ge],It=wt.children[0].value;if(function(n){return n.match(YI)}(It)){var Lt=It.split("\n");Lt.forEach(function(Dn,Mn){var $r=o&&re.length+g,ur={type:"text",value:"".concat(Dn,"\n")};if(0===Mn){var xr=Re(W.slice(ie+1,ge).concat(bA({children:[ur],className:wt.properties.className})),$r);re.push(xr)}else if(Mn===Lt.length-1){var fn=W[ge+1]&&W[ge+1].children&&W[ge+1].children[0],Nn={type:"text",value:"".concat(Dn)};if(fn){var $n=bA({children:[Nn],className:wt.properties.className});W.splice(ge+1,0,$n)}else{var Tn=Re([Nn],$r,wt.properties.className);re.push(Tn)}}else{var ji=Re([ur],$r,wt.properties.className);re.push(ji)}}),ie=ge}ge++};ge<W.length;)ke();if(ie!==W.length-1){var xe=W.slice(ie+1,W.length);if(xe&&xe.length){var pt=Re(xe,o&&re.length+g);re.push(pt)}}return s?re:(j=[]).concat.apply(j,re)}function WI(n){var t=n.stylesheet,o=n.useInlineStyles;return n.rows.map(function(c,g){return S6({node:c,stylesheet:t,useInlineStyles:o,key:"code-segement".concat(g)})})}function w6(n){return n&&void 0!==n.highlightAuto}var x6=i(74538),D6=function(n,s){return function(o){var c=o.language,g=o.children,C=o.style,D=void 0===C?s:C,P=o.customStyle,j=void 0===P?{}:P,W=o.codeTagProps,re=void 0===W?{className:c?"language-".concat(c):void 0,style:ym(ym({},D['code[class*="language-"]']),D['code[class*="language-'.concat(c,'"]')])}:W,ie=o.useInlineStyles,ge=void 0===ie||ie,_e=o.showLineNumbers,Le=void 0!==_e&&_e,Re=o.showInlineLineNumbers,ke=void 0===Re||Re,xe=o.startingLineNumber,U=void 0===xe?1:xe,pt=o.lineNumberContainerStyle,ht=o.lineNumberStyle,wt=void 0===ht?{}:ht,It=o.wrapLines,dn=o.wrapLongLines,Lt=void 0!==dn&&dn,Dn=o.lineProps,Mn=void 0===Dn?{}:Dn,$r=o.renderer,ur=o.PreTag,Pr=void 0===ur?"pre":ur,xr=o.CodeTag,fn=void 0===xr?"code":xr,Nn=o.code,$n=void 0===Nn?(Array.isArray(g)?g[0]:g)||"":Nn,Qn=o.astGenerator,Tn=function(n,s){if(null==n)return{};var o,c,t=cS(n,s);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(n);for(c=0;c<g.length;c++)!(s.indexOf(o=g[c])>=0)&&(!Object.prototype.propertyIsEnumerable.call(n,o)||(t[o]=n[o]))}return t}(o,BI);Qn=Qn||n;var Yr=Le?Bl.createElement(GI,{containerStyle:pt,codeStyle:re.style||{},numberStyle:wt,startingLineNumber:U,codeString:$n}):null,ji=D.hljs||D['pre[class*="language-"]']||{backgroundColor:"#fff"},ii=w6(Qn)?"hljs":"prismjs",Ui=Object.assign({},Tn,ge?{style:Object.assign({},ji,j)}:{className:Tn.className?"".concat(ii," ").concat(Tn.className):ii,style:Object.assign({},j)});if(re.style=ym(ym({},re.style),{},Lt?{whiteSpace:"pre-wrap"}:{whiteSpace:"pre"}),!Qn)return Bl.createElement(Pr,Ui,Yr,Bl.createElement(fn,re,$n));(void 0===It&&$r||Lt)&&(It=!0),$r=$r||WI;var Jr=[{type:"text",value:$n}],An=function(n){var s=n.astGenerator,t=n.language,o=n.code,c=n.defaultCodeValue;if(w6(s)){var g=function(n,s){return-1!==n.listLanguages().indexOf(s)}(s,t);return"text"===t?{value:c,language:"text"}:g?s.highlight(t,o):s.highlightAuto(o)}try{return t&&"text"!==t?{value:s.highlight(o,t)}:{value:c}}catch(C){return{value:c}}}({astGenerator:Qn,language:c,code:$n,defaultCodeValue:Jr});null===An.language&&(An.value=Jr);var qr=zI(An,It,Mn,Le,ke,U,An.value.length+U,wt,Lt);return Bl.createElement(Pr,Ui,Bl.createElement(fn,re,!ke&&Yr,$r({rows:qr,stylesheet:D,useInlineStyles:ge})))}}(x6,{});D6.registerLanguage=x6.registerLanguage;const XI=D6;var KI=i(36147);const e4=i.n(KI)();var t4=i(92229);const r4=i.n(t4)();var i4=i(13546);const s4=i.n(i4)();var a4=i(4357);const u4=i.n(a4)();var c4=i(44776);const f4=i.n(c4)();var p4=i(28390);const _4=i.n(p4)();var g4=i(78932);const v4=i.n(g4)(),y4={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}},b4={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},E4={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},T4={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},S4={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},C4={"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}};var M4=i(43155),A4=i(35037),O4=i.n(A4),w4=i(93890),x4=i.n(w4),D4=i(98990),R4=i.n(D4),N4=i(52190),P4=i.n(N4),I4=i(71166),L4=i.n(I4),F4=i(52243),k4=i.n(F4),R6=i(15805),yb=i(68645),G3=i(62734),N6=i(76593);function O0(n){var s;return(O0=G3?yb(s=N6).call(s):function(o){return o.__proto__||N6(o)})(n)}function $4(n,s){for(;!Object.prototype.hasOwnProperty.call(n,s)&&null!==(n=O0(n)););return n}function EA(){var n;return(EA="undefined"!=typeof Reflect&&R6?yb(n=R6).call(n):function(t,o,c){var g=$4(t,o);if(g){var C=WT(g,o);return C.get?C.get.call(arguments.length<3?t:c):C.value}}).apply(this,arguments)}var P6=i(54839),I6=i(73921);function dS(n,s){var t;return(dS=G3?yb(t=G3).call(t):function(c,g){return c.__proto__=g,c})(n,s)}var fS=i(69244);function L6(){if("undefined"==typeof Reflect||!fS||fS.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(fS(Boolean,[],function(){})),!0}catch(n){return!1}}function TA(n,s,t){var o;return(TA=L6()?yb(o=fS).call(o):function(g,C,D){var P=[null];P.push.apply(P,C);var W=new(yb(Function).apply(g,P));return D&&dS(W,D.prototype),W}).apply(null,arguments)}function V3(n){var s="function"==typeof P6?new P6:void 0;return(V3=function(o){if(null===o||!function(n){var s;return-1!==F3(s=Function.toString.call(n)).call(s,"[native code]")}(o))return o;if("function"!=typeof o)throw new TypeError("Super expression must either be null or a function");if(void 0!==s){if(s.has(o))return s.get(o);s.set(o,c)}function c(){return TA(o,arguments,O0(this).constructor)}return c.prototype=I6(o.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}}),dS(c,o)})(n)}var U4=i(45163),B4=i.n(U4),Y4=i(58711),Z4=i.n(Y4),j4=i(15886),G4=i.n(j4),V4=i(56166),z4=i.n(V4),W4=i(84901),J4=i.n(W4),Q4=i(71851),X4=i.n(Q4),K4=i(91465),q4=i.n(K4),e5=i(35431),t5=i.n(e5),n5=i(53625),r5=i.n(n5),i5=i(31978),o5=i.n(i5),s5=i(40984),a5=i.n(s5),l5=i(54082),u5=i.n(l5),c5=i(69605),d5=i.n(c5),f5=i(87513),p5=i.n(f5),h5=i(69253),_5=i.n(h5);function F6(n){if(void 0===n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}function g5(n,s){if(s&&("object"===vc(s)||"function"==typeof s))return s;if(void 0!==s)throw new TypeError("Derived constructors may only return object or undefined");return F6(n)}function m5(n){var s=L6();return function(){var c,o=O0(n);if(s){var g=O0(this).constructor;c=fS(o,arguments,g)}else c=o.apply(this,arguments);return g5(this,c)}}var k6=i(95343);function z3(){var n;return(z3=k6?yb(n=k6).call(n):function(s){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&(s[c]=o[c])}return s}).apply(this,arguments)}function v5(n,s){if("function"!=typeof s&&null!==s)throw new TypeError("Super expression must either be null or a function");n.prototype=I6(s&&s.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e1(n,"prototype",{writable:!1}),s&&dS(n,s)}var y5=i(96434),b5=i.t(y5,2),E5=i(82885),T5=i.n(E5),S5=i(12658),C5=i.t(S5,2),M5=i(55836),A5=i.n(M5),O5=i(97425),w5=i.n(O5),x5=i(76874),D5=i.n(x5),R5=i(43409),N5=i(14395),P5=i.n(N5);function $6(n,s){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);s&&(o=o.filter(function(c){return Object.getOwnPropertyDescriptor(n,c).enumerable})),t.push.apply(t,o)}return t}function H6(n){for(var s=1;s<arguments.length;s++){var t=null!=arguments[s]?arguments[s]:{};s%2?$6(Object(t),!0).forEach(function(o){Z3(n,o,t[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):$6(Object(t)).forEach(function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(t,o))})}return n}function Pp(n){return"Minified Redux error #"+n+"; visit https://redux.js.org/Errors?code="+n+" for the full message or use the non-minified dev environment for full errors. "}var SA,U6="function"==typeof Symbol&&Symbol.observable||"@@observable",W3=function(){return Math.random().toString(36).substring(7).split("").join(".")},bb={INIT:"@@redux/INIT"+W3(),REPLACE:"@@redux/REPLACE"+W3(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+W3()}};function B6(n){if("object"!=typeof n||null===n)return!1;for(var s=n;null!==Object.getPrototypeOf(s);)s=Object.getPrototypeOf(s);return Object.getPrototypeOf(n)===s}function Y6(n,s,t){var o;if("function"==typeof s&&"function"==typeof t||"function"==typeof t&&"function"==typeof arguments[3])throw new Error(Pp(0));if("function"==typeof s&&void 0===t&&(t=s,s=void 0),void 0!==t){if("function"!=typeof t)throw new Error(Pp(1));return t(Y6)(n,s)}if("function"!=typeof n)throw new Error(Pp(2));var c=n,g=s,C=[],D=C,P=!1;function j(){D===C&&(D=C.slice())}function W(){if(P)throw new Error(Pp(3));return g}function re(Le){if("function"!=typeof Le)throw new Error(Pp(4));if(P)throw new Error(Pp(5));var Re=!0;return j(),D.push(Le),function(){if(Re){if(P)throw new Error(Pp(6));Re=!1,j();var xe=D.indexOf(Le);D.splice(xe,1),C=null}}}function ie(Le){if(!B6(Le))throw new Error(Pp(7));if(void 0===Le.type)throw new Error(Pp(8));if(P)throw new Error(Pp(9));try{P=!0,g=c(g,Le)}finally{P=!1}for(var Re=C=D,ke=0;ke<Re.length;ke++)(0,Re[ke])();return Le}function ge(Le){if("function"!=typeof Le)throw new Error(Pp(10));c=Le,ie({type:bb.REPLACE})}function _e(){var Le,Re=re;return(Le={subscribe:function(xe){if("object"!=typeof xe||null===xe)throw new Error(Pp(11));function U(){xe.next&&xe.next(W())}return U(),{unsubscribe:Re(U)}}})[U6]=function(){return this},Le}return ie({type:bb.INIT}),(o={dispatch:ie,subscribe:re,getState:W,replaceReducer:ge})[U6]=_e,o}function Z6(n,s){return function(){return s(n.apply(this,arguments))}}function H5(n,s){if("function"==typeof n)return Z6(n,s);if("object"!=typeof n||null===n)throw new Error(Pp(16));var t={};for(var o in n){var c=n[o];"function"==typeof c&&(t[o]=Z6(c,s))}return t}function j6(){for(var n=arguments.length,s=new Array(n),t=0;t<n;t++)s[t]=arguments[t];return 0===s.length?function(o){return o}:1===s.length?s[0]:s.reduce(function(o,c){return function(){return o(c.apply(void 0,arguments))}})}function U5(){for(var n=arguments.length,s=new Array(n),t=0;t<n;t++)s[t]=arguments[t];return function(o){return function(){var c=o.apply(void 0,arguments),g=function(){throw new Error(Pp(15))},C={getState:c.getState,dispatch:function(){return g.apply(void 0,arguments)}},D=s.map(function(P){return P(C)});return g=j6.apply(void 0,D)(c.dispatch),H6(H6({},c),{},{dispatch:g})}}}function G6(n){return(SA=SA||document.createElement("textarea")).innerHTML="&"+n+";",SA.value}var Z5=Object.prototype.hasOwnProperty;function J3(n){var s=[].slice.call(arguments,1);return s.forEach(function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach(function(o){n[o]=t[o]})}}),n}var j5=/\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function Eb(n){return n.indexOf("\\")<0?n:n.replace(j5,"$1")}function Q3(n){return!(n>=55296&&n<=57343||n>=64976&&n<=65007||65535==(65535&n)||65534==(65535&n)||n>=0&&n<=8||11===n||n>=14&&n<=31||n>=127&&n<=159||n>1114111)}function CA(n){return n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):String.fromCharCode(n)}var G5=/&([a-z#][a-z0-9]{1,31});/gi,V5=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function z5(n,s){var t=0,o=G6(s);return s!==o?o:35===s.charCodeAt(0)&&V5.test(s)&&Q3(t="x"===s[1].toLowerCase()?parseInt(s.slice(2),16):parseInt(s.slice(1),10))?CA(t):n}function s1(n){return n.indexOf("&")<0?n:n.replace(G5,z5)}var W5=/[&<>"]/,J5=/[&<>"]/g,Q5={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function X5(n){return Q5[n]}function bh(n){return W5.test(n)?n.replace(J5,X5):n}var ea={};function z6(n,s){return++s>=n.length-2?s:"paragraph_open"===n[s].type&&n[s].tight&&"inline"===n[s+1].type&&0===n[s+1].content.length&&"paragraph_close"===n[s+2].type&&n[s+2].tight?z6(n,s+2):s}ea.blockquote_open=function(){return"<blockquote>\n"},ea.blockquote_close=function(n,s){return"</blockquote>"+w0(n,s)},ea.code=function(n,s){return n[s].block?"<pre><code>"+bh(n[s].content)+"</code></pre>"+w0(n,s):"<code>"+bh(n[s].content)+"</code>"},ea.fence=function(n,s,t,o,c){var j,W,g=n[s],C="",D=t.langPrefix;if(g.params){if(W=(j=g.params.split(/\s+/g)).join(" "),function(n,s){return!!n&&Z5.call(n,s)}(c.rules.fence_custom,j[0]))return c.rules.fence_custom[j[0]](n,s,t,o,c);C=' class="'+D+bh(s1(Eb(W)))+'"'}return"<pre><code"+C+">"+(t.highlight&&t.highlight.apply(t.highlight,[g.content].concat(j))||bh(g.content))+"</code></pre>"+w0(n,s)},ea.fence_custom={},ea.heading_open=function(n,s){return"<h"+n[s].hLevel+">"},ea.heading_close=function(n,s){return"</h"+n[s].hLevel+">\n"},ea.hr=function(n,s,t){return(t.xhtmlOut?"<hr />":"<hr>")+w0(n,s)},ea.bullet_list_open=function(){return"<ul>\n"},ea.bullet_list_close=function(n,s){return"</ul>"+w0(n,s)},ea.list_item_open=function(){return"<li>"},ea.list_item_close=function(){return"</li>\n"},ea.ordered_list_open=function(n,s){var t=n[s];return"<ol"+(t.order>1?' start="'+t.order+'"':"")+">\n"},ea.ordered_list_close=function(n,s){return"</ol>"+w0(n,s)},ea.paragraph_open=function(n,s){return n[s].tight?"":"<p>"},ea.paragraph_close=function(n,s){return(n[s].tight?"":"</p>")+(n[s].tight&&s&&"inline"===n[s-1].type&&!n[s-1].content?"":w0(n,s))},ea.link_open=function(n,s,t){var o=n[s].title?' title="'+bh(s1(n[s].title))+'"':"",c=t.linkTarget?' target="'+t.linkTarget+'"':"";return'<a href="'+bh(n[s].href)+'"'+o+c+">"},ea.link_close=function(){return"</a>"},ea.image=function(n,s,t){var o=' src="'+bh(n[s].src)+'"',c=n[s].title?' title="'+bh(s1(n[s].title))+'"':"";return"<img"+o+' alt="'+(n[s].alt?bh(s1(Eb(n[s].alt))):"")+'"'+c+(t.xhtmlOut?" /":"")+">"},ea.table_open=function(){return"<table>\n"},ea.table_close=function(){return"</table>\n"},ea.thead_open=function(){return"<thead>\n"},ea.thead_close=function(){return"</thead>\n"},ea.tbody_open=function(){return"<tbody>\n"},ea.tbody_close=function(){return"</tbody>\n"},ea.tr_open=function(){return"<tr>"},ea.tr_close=function(){return"</tr>\n"},ea.th_open=function(n,s){var t=n[s];return"<th"+(t.align?' style="text-align:'+t.align+'"':"")+">"},ea.th_close=function(){return"</th>"},ea.td_open=function(n,s){var t=n[s];return"<td"+(t.align?' style="text-align:'+t.align+'"':"")+">"},ea.td_close=function(){return"</td>"},ea.strong_open=function(){return"<strong>"},ea.strong_close=function(){return"</strong>"},ea.em_open=function(){return"<em>"},ea.em_close=function(){return"</em>"},ea.del_open=function(){return"<del>"},ea.del_close=function(){return"</del>"},ea.ins_open=function(){return"<ins>"},ea.ins_close=function(){return"</ins>"},ea.mark_open=function(){return"<mark>"},ea.mark_close=function(){return"</mark>"},ea.sub=function(n,s){return"<sub>"+bh(n[s].content)+"</sub>"},ea.sup=function(n,s){return"<sup>"+bh(n[s].content)+"</sup>"},ea.hardbreak=function(n,s,t){return t.xhtmlOut?"<br />\n":"<br>\n"},ea.softbreak=function(n,s,t){return t.breaks?t.xhtmlOut?"<br />\n":"<br>\n":"\n"},ea.text=function(n,s){return bh(n[s].content)},ea.htmlblock=function(n,s){return n[s].content},ea.htmltag=function(n,s){return n[s].content},ea.abbr_open=function(n,s){return'<abbr title="'+bh(s1(n[s].title))+'">'},ea.abbr_close=function(){return"</abbr>"},ea.footnote_ref=function(n,s){var t=Number(n[s].id+1).toString(),o="fnref"+t;return n[s].subId>0&&(o+=":"+n[s].subId),'<sup class="footnote-ref"><a href="#fn'+t+'" id="'+o+'">['+t+"]</a></sup>"},ea.footnote_block_open=function(n,s,t){return(t.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'},ea.footnote_block_close=function(){return"</ol>\n</section>\n"},ea.footnote_open=function(n,s){return'<li id="fn'+Number(n[s].id+1).toString()+'"  class="footnote-item">'},ea.footnote_close=function(){return"</li>\n"},ea.footnote_anchor=function(n,s){var o="fnref"+Number(n[s].id+1).toString();return n[s].subId>0&&(o+=":"+n[s].subId),' <a href="#'+o+'" class="footnote-backref">\u21a9</a>'},ea.dl_open=function(){return"<dl>\n"},ea.dt_open=function(){return"<dt>"},ea.dd_open=function(){return"<dd>"},ea.dl_close=function(){return"</dl>\n"},ea.dt_close=function(){return"</dt>\n"},ea.dd_close=function(){return"</dd>\n"};var w0=ea.getBreak=function(s,t){return(t=z6(s,t))<s.length&&"list_item_close"===s[t].type?"":"\n"};function X3(){this.rules=J3({},ea),this.getBreak=ea.getBreak}function P_(){this.__rules__=[],this.__cache__=null}function x0(n,s,t,o,c){this.src=n,this.env=o,this.options=t,this.parser=s,this.tokens=c,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent="",this.labelUnmatchedScopes=0}function pS(n,s){var t,o,c,g=-1,C=n.posMax,D=n.pos,P=n.isInLabel;if(n.isInLabel)return-1;if(n.labelUnmatchedScopes)return n.labelUnmatchedScopes--,-1;for(n.pos=s+1,n.isInLabel=!0,t=1;n.pos<C;){if(91===(c=n.src.charCodeAt(n.pos)))t++;else if(93===c&&0==--t){o=!0;break}n.parser.skipToken(n)}return o?(g=n.pos,n.labelUnmatchedScopes=0):n.labelUnmatchedScopes=t-1,n.pos=D,n.isInLabel=P,g}function q5(n,s,t,o){var c,g,C,D,P,j;if(42!==n.charCodeAt(0)||91!==n.charCodeAt(1)||-1===n.indexOf("]:")||(g=pS(c=new x0(n,s,t,o,[]),1))<0||58!==n.charCodeAt(g+1))return-1;for(D=c.posMax,C=g+2;C<D&&10!==c.src.charCodeAt(C);C++);return P=n.slice(2,g),0===(j=n.slice(g+2,C).trim()).length?-1:(o.abbreviations||(o.abbreviations={}),void 0===o.abbreviations[":"+P]&&(o.abbreviations[":"+P]=j),C)}function K3(n){var s=s1(n);try{s=decodeURI(s)}catch(t){}return encodeURI(s)}function W6(n,s){var t,o,c,g=s,C=n.posMax;if(60===n.src.charCodeAt(s)){for(s++;s<C;){if(10===(t=n.src.charCodeAt(s)))return!1;if(62===t)return c=K3(Eb(n.src.slice(g+1,s))),!!n.parser.validateLink(c)&&(n.pos=s+1,n.linkContent=c,!0);92===t&&s+1<C?s+=2:s++}return!1}for(o=0;s<C&&!(32===(t=n.src.charCodeAt(s))||t<32||127===t);)if(92===t&&s+1<C)s+=2;else{if(40===t&&++o>1||41===t&&--o<0)break;s++}return!(g===s||(c=Eb(n.src.slice(g,s)),!n.parser.validateLink(c))||(n.linkContent=c,n.pos=s,0))}function J6(n,s){var t,o=s,c=n.posMax,g=n.src.charCodeAt(s);if(34!==g&&39!==g&&40!==g)return!1;for(s++,40===g&&(g=41);s<c;){if((t=n.src.charCodeAt(s))===g)return n.pos=s+1,n.linkContent=Eb(n.src.slice(o+1,s)),!0;92===t&&s+1<c?s+=2:s++}return!1}function Q6(n){return n.trim().replace(/\s+/g," ").toUpperCase()}function tL(n,s,t,o){var c,g,C,D,P,j,W,re,ie;if(91!==n.charCodeAt(0)||-1===n.indexOf("]:")||(g=pS(c=new x0(n,s,t,o,[]),0))<0||58!==n.charCodeAt(g+1))return-1;for(D=c.posMax,C=g+2;C<D&&(32===(P=c.src.charCodeAt(C))||10===P);C++);if(!W6(c,C))return-1;for(W=c.linkContent,j=C=c.pos,C+=1;C<D&&(32===(P=c.src.charCodeAt(C))||10===P);C++);for(C<D&&j!==C&&J6(c,C)?(re=c.linkContent,C=c.pos):(re="",C=j);C<D&&32===c.src.charCodeAt(C);)C++;return C<D&&10!==c.src.charCodeAt(C)?-1:(ie=Q6(n.slice(1,g)),void 0===o.references[ie]&&(o.references[ie]={title:re,href:W}),C)}X3.prototype.renderInline=function(n,s,t){for(var o=this.rules,c=n.length,g=0,C="";c--;)C+=o[n[g].type](n,g++,s,t,this);return C},X3.prototype.render=function(n,s,t){for(var o=this.rules,c=n.length,g=-1,C="";++g<c;)C+="inline"===n[g].type?this.renderInline(n[g].children,s,t):o[n[g].type](n,g,s,t,this);return C},P_.prototype.__find__=function(n){for(var s=this.__rules__.length,t=-1;s--;)if(this.__rules__[++t].name===n)return t;return-1},P_.prototype.__compile__=function(){var n=this,s=[""];n.__rules__.forEach(function(t){!t.enabled||t.alt.forEach(function(o){s.indexOf(o)<0&&s.push(o)})}),n.__cache__={},s.forEach(function(t){n.__cache__[t]=[],n.__rules__.forEach(function(o){!o.enabled||t&&o.alt.indexOf(t)<0||n.__cache__[t].push(o.fn)})})},P_.prototype.at=function(n,s,t){var o=this.__find__(n),c=t||{};if(-1===o)throw new Error("Parser rule not found: "+n);this.__rules__[o].fn=s,this.__rules__[o].alt=c.alt||[],this.__cache__=null},P_.prototype.before=function(n,s,t,o){var c=this.__find__(n),g=o||{};if(-1===c)throw new Error("Parser rule not found: "+n);this.__rules__.splice(c,0,{name:s,enabled:!0,fn:t,alt:g.alt||[]}),this.__cache__=null},P_.prototype.after=function(n,s,t,o){var c=this.__find__(n),g=o||{};if(-1===c)throw new Error("Parser rule not found: "+n);this.__rules__.splice(c+1,0,{name:s,enabled:!0,fn:t,alt:g.alt||[]}),this.__cache__=null},P_.prototype.push=function(n,s,t){this.__rules__.push({name:n,enabled:!0,fn:s,alt:(t||{}).alt||[]}),this.__cache__=null},P_.prototype.enable=function(n,s){n=Array.isArray(n)?n:[n],s&&this.__rules__.forEach(function(t){t.enabled=!1}),n.forEach(function(t){var o=this.__find__(t);if(o<0)throw new Error("Rules manager: invalid rule name "+t);this.__rules__[o].enabled=!0},this),this.__cache__=null},P_.prototype.disable=function(n){(n=Array.isArray(n)?n:[n]).forEach(function(s){var t=this.__find__(s);if(t<0)throw new Error("Rules manager: invalid rule name "+s);this.__rules__[t].enabled=!1},this),this.__cache__=null},P_.prototype.getRules=function(n){return null===this.__cache__&&this.__compile__(),this.__cache__[n]||[]},x0.prototype.pushPending=function(){this.tokens.push({type:"text",content:this.pending,level:this.pendingLevel}),this.pending=""},x0.prototype.push=function(n){this.pending&&this.pushPending(),this.tokens.push(n),this.pendingLevel=this.level},x0.prototype.cacheSet=function(n,s){for(var t=this.cache.length;t<=n;t++)this.cache.push(0);this.cache[n]=s},x0.prototype.cacheGet=function(n){return n<this.cache.length?this.cache[n]:0};var X6=" \n()[]'\".,!?-";function q3(n){return n.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1")}var sL=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,aL=/\((c|tm|r|p)\)/gi,lL={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"};function uL(n){return n.indexOf("(")<0?n:n.replace(aL,function(s,t){return lL[t.toLowerCase()]})}var dL=/['"]/,K6=/['"]/g,fL=/[-\s()\[\]]/;function eP(n,s){return!(s<0||s>=n.length||fL.test(n[s]))}function Tb(n,s,t){return n.substr(0,s)+t+n.substr(s+1)}var eR=[["block",function(n){n.inlineMode?n.tokens.push({type:"inline",content:n.src.replace(/\n/g," ").trim(),level:0,lines:[0,1],children:[]}):n.block.parse(n.src,n.options,n.env,n.tokens)}],["abbr",function(n){var t,o,c,g,s=n.tokens;if(!n.inlineMode)for(t=1,o=s.length-1;t<o;t++)if("paragraph_open"===s[t-1].type&&"inline"===s[t].type&&"paragraph_close"===s[t+1].type){for(c=s[t].content;c.length&&!((g=q5(c,n.inline,n.options,n.env))<0);)c=c.slice(g).trim();s[t].content=c,c.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],["references",function(n){var t,o,c,g,s=n.tokens;if(n.env.references=n.env.references||{},!n.inlineMode)for(t=1,o=s.length-1;t<o;t++)if("inline"===s[t].type&&"paragraph_open"===s[t-1].type&&"paragraph_close"===s[t+1].type){for(c=s[t].content;c.length&&!((g=tL(c,n.inline,n.options,n.env))<0);)c=c.slice(g).trim();s[t].content=c,c.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],["inline",function(n){var t,o,c,s=n.tokens;for(o=0,c=s.length;o<c;o++)"inline"===(t=s[o]).type&&n.inline.parse(t.content,n.options,n.env,t.children)}],["footnote_tail",function(n){var s,t,o,c,g,C,D,P,j,W=0,re=!1,ie={};if(n.env.footnotes&&(n.tokens=n.tokens.filter(function(ge){return"footnote_reference_open"===ge.type?(re=!0,P=[],j=ge.label,!1):"footnote_reference_close"===ge.type?(re=!1,ie[":"+j]=P,!1):(re&&P.push(ge),!re)}),n.env.footnotes.list)){for(C=n.env.footnotes.list,n.tokens.push({type:"footnote_block_open",level:W++}),s=0,t=C.length;s<t;s++){for(n.tokens.push({type:"footnote_open",id:s,level:W++}),C[s].tokens?((D=[]).push({type:"paragraph_open",tight:!1,level:W++}),D.push({type:"inline",content:"",level:W,children:C[s].tokens}),D.push({type:"paragraph_close",tight:!1,level:--W})):C[s].label&&(D=ie[":"+C[s].label]),n.tokens=n.tokens.concat(D),g="paragraph_close"===n.tokens[n.tokens.length-1].type?n.tokens.pop():null,c=C[s].count>0?C[s].count:1,o=0;o<c;o++)n.tokens.push({type:"footnote_anchor",id:s,subId:o,level:W});g&&n.tokens.push(g),n.tokens.push({type:"footnote_close",level:--W})}n.tokens.push({type:"footnote_block_close",level:--W})}}],["abbr2",function(n){var s,t,o,c,g,C,D,P,j,W,re,ie,ge=n.tokens;if(n.env.abbreviations)for(n.env.abbrRegExp||(ie="(^|["+X6.split("").map(q3).join("")+"])("+Object.keys(n.env.abbreviations).map(function(_e){return _e.substr(1)}).sort(function(_e,Le){return Le.length-_e.length}).map(q3).join("|")+")($|["+X6.split("").map(q3).join("")+"])",n.env.abbrRegExp=new RegExp(ie,"g")),W=n.env.abbrRegExp,t=0,o=ge.length;t<o;t++)if("inline"===ge[t].type)for(s=(c=ge[t].children).length-1;s>=0;s--)if("text"===(g=c[s]).type){for(P=0,C=g.content,W.lastIndex=0,j=g.level,D=[];re=W.exec(C);)W.lastIndex>P&&D.push({type:"text",content:C.slice(P,re.index+re[1].length),level:j}),D.push({type:"abbr_open",title:n.env.abbreviations[":"+re[2]],level:j++}),D.push({type:"text",content:re[2],level:j}),D.push({type:"abbr_close",level:--j}),P=W.lastIndex-re[3].length;!D.length||(P<C.length&&D.push({type:"text",content:C.slice(P),level:j}),ge[t].children=c=[].concat(c.slice(0,s),D,c.slice(s+1)))}}],["replacements",function(n){var s,t,o,c,g;if(n.options.typographer)for(g=n.tokens.length-1;g>=0;g--)if("inline"===n.tokens[g].type)for(s=(c=n.tokens[g].children).length-1;s>=0;s--)"text"===(t=c[s]).type&&(o=uL(o=t.content),sL.test(o)&&(o=o.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),t.content=o)}],["smartquotes",function(n){var s,t,o,c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke;if(n.options.typographer)for(ke=[],Le=n.tokens.length-1;Le>=0;Le--)if("inline"===n.tokens[Le].type)for(Re=n.tokens[Le].children,ke.length=0,s=0;s<Re.length;s++)if("text"===(t=Re[s]).type&&!dL.test(t.text)){for(D=Re[s].level,ge=ke.length-1;ge>=0&&!(ke[ge].level<=D);ge--);ke.length=ge+1,g=0,C=(o=t.content).length;e:for(;g<C&&(K6.lastIndex=g,c=K6.exec(o),c);)if(P=!eP(o,c.index-1),_e="'"===c[0],(j=!eP(o,g=c.index+1))||P){if(re=!j,ie=!P)for(ge=ke.length-1;ge>=0&&(W=ke[ge],!(ke[ge].level<D));ge--)if(W.single===_e&&ke[ge].level===D){W=ke[ge],_e?(Re[W.token].content=Tb(Re[W.token].content,W.pos,n.options.quotes[2]),t.content=Tb(t.content,c.index,n.options.quotes[3])):(Re[W.token].content=Tb(Re[W.token].content,W.pos,n.options.quotes[0]),t.content=Tb(t.content,c.index,n.options.quotes[1])),ke.length=ge;continue e}re?ke.push({token:s,pos:c.index,single:_e,level:D}):ie&&_e&&(t.content=Tb(t.content,c.index,"\u2019"))}else _e&&(t.content=Tb(t.content,c.index,"\u2019"))}}]];function tP(){this.options={},this.ruler=new P_;for(var n=0;n<eR.length;n++)this.ruler.push(eR[n][0],eR[n][1])}function D0(n,s,t,o,c){var g,C,D,P,j,W,re;for(this.src=n,this.parser=s,this.options=t,this.env=o,this.tokens=c,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType="root",this.ddIndent=-1,this.level=0,this.result="",W=0,re=!1,D=P=W=0,j=(C=this.src).length;P<j;P++){if(g=C.charCodeAt(P),!re){if(32===g){W++;continue}re=!0}(10===g||P===j-1)&&(10!==g&&P++,this.bMarks.push(D),this.eMarks.push(P),this.tShift.push(W),re=!1,W=0,D=P+1)}this.bMarks.push(C.length),this.eMarks.push(C.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function nP(n,s){var t,o,c;return(o=n.bMarks[s]+n.tShift[s])>=(c=n.eMarks[s])||42!==(t=n.src.charCodeAt(o++))&&45!==t&&43!==t||o<c&&32!==n.src.charCodeAt(o)?-1:o}function rP(n,s){var t,o=n.bMarks[s]+n.tShift[s],c=n.eMarks[s];if(o+1>=c||(t=n.src.charCodeAt(o++))<48||t>57)return-1;for(;;){if(o>=c)return-1;if(!((t=n.src.charCodeAt(o++))>=48&&t<=57)){if(41===t||46===t)break;return-1}}return o<c&&32!==n.src.charCodeAt(o)?-1:o}tP.prototype.process=function(n){var s,t,o;for(s=0,t=(o=this.ruler.getRules("")).length;s<t;s++)o[s](n)},D0.prototype.isEmpty=function(s){return this.bMarks[s]+this.tShift[s]>=this.eMarks[s]},D0.prototype.skipEmptyLines=function(s){for(var t=this.lineMax;s<t&&!(this.bMarks[s]+this.tShift[s]<this.eMarks[s]);s++);return s},D0.prototype.skipSpaces=function(s){for(var t=this.src.length;s<t&&32===this.src.charCodeAt(s);s++);return s},D0.prototype.skipChars=function(s,t){for(var o=this.src.length;s<o&&this.src.charCodeAt(s)===t;s++);return s},D0.prototype.skipCharsBack=function(s,t,o){if(s<=o)return s;for(;s>o;)if(t!==this.src.charCodeAt(--s))return s+1;return s},D0.prototype.getLines=function(s,t,o,c){var g,C,P,j,W=s;if(s>=t)return"";if(W+1===t)return C=this.bMarks[W]+Math.min(this.tShift[W],o),this.src.slice(C,c?this.eMarks[W]+1:this.eMarks[W]);for(P=new Array(t-s),g=0;W<t;W++,g++)(j=this.tShift[W])>o&&(j=o),j<0&&(j=0),P[g]=this.src.slice(C=this.bMarks[W]+j,W+1<t||c?this.eMarks[W]+1:this.eMarks[W]);return P.join("")};var iP={};["article","aside","button","blockquote","body","canvas","caption","col","colgroup","dd","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","iframe","li","map","object","ol","output","p","pre","progress","script","section","style","table","tbody","td","textarea","tfoot","th","tr","thead","ul","video"].forEach(function(n){iP[n]=!0});var SL=/^<([a-zA-Z]{1,15})[\s\/>]/,CL=/^<\/([a-zA-Z]{1,15})[\s>]/;function tR(n,s){var t=n.bMarks[s]+n.blkIndent;return n.src.substr(t,n.eMarks[s]-t)}function MA(n,s){var t,o,c=n.bMarks[s]+n.tShift[s],g=n.eMarks[s];return c>=g||126!==(o=n.src.charCodeAt(c++))&&58!==o||c===(t=n.skipSpaces(c))||t>=g?-1:t}var AA=[["code",function(n,s,t){var o,c;if(n.tShift[s]-n.blkIndent<4)return!1;for(c=o=s+1;o<t;)if(n.isEmpty(o))o++;else{if(!(n.tShift[o]-n.blkIndent>=4))break;c=++o}return n.line=o,n.tokens.push({type:"code",content:n.getLines(s,c,4+n.blkIndent,!0),block:!0,lines:[s,n.line],level:n.level}),!0}],["fences",function(n,s,t,o){var c,g,C,D,P,j=!1,W=n.bMarks[s]+n.tShift[s],re=n.eMarks[s];if(W+3>re||126!==(c=n.src.charCodeAt(W))&&96!==c||(P=W,(g=(W=n.skipChars(W,c))-P)<3)||(C=n.src.slice(W,re).trim()).indexOf("`")>=0)return!1;if(o)return!0;for(D=s;!(++D>=t||(W=P=n.bMarks[D]+n.tShift[D],re=n.eMarks[D],W<re&&n.tShift[D]<n.blkIndent));)if(!(n.src.charCodeAt(W)!==c||n.tShift[D]-n.blkIndent>=4||(W=n.skipChars(W,c),W-P<g||(W=n.skipSpaces(W),W<re)))){j=!0;break}return g=n.tShift[s],n.line=D+(j?1:0),n.tokens.push({type:"fence",params:C,content:n.getLines(s+1,D,g,!0),lines:[s,n.line],level:n.level}),!0},["paragraph","blockquote","list"]],["blockquote",function(n,s,t,o){var c,g,C,D,P,j,W,re,ie,ge,_e,Le=n.bMarks[s]+n.tShift[s],Re=n.eMarks[s];if(Le>Re||62!==n.src.charCodeAt(Le++)||n.level>=n.options.maxNesting)return!1;if(o)return!0;for(32===n.src.charCodeAt(Le)&&Le++,P=n.blkIndent,n.blkIndent=0,D=[n.bMarks[s]],n.bMarks[s]=Le,g=(Le=Le<Re?n.skipSpaces(Le):Le)>=Re,C=[n.tShift[s]],n.tShift[s]=Le-n.bMarks[s],re=n.parser.ruler.getRules("blockquote"),c=s+1;c<t&&!((Le=n.bMarks[c]+n.tShift[c])>=(Re=n.eMarks[c]));c++)if(62!==n.src.charCodeAt(Le++)){if(g)break;for(_e=!1,ie=0,ge=re.length;ie<ge;ie++)if(re[ie](n,c,t,!0)){_e=!0;break}if(_e)break;D.push(n.bMarks[c]),C.push(n.tShift[c]),n.tShift[c]=-1337}else 32===n.src.charCodeAt(Le)&&Le++,D.push(n.bMarks[c]),n.bMarks[c]=Le,g=(Le=Le<Re?n.skipSpaces(Le):Le)>=Re,C.push(n.tShift[c]),n.tShift[c]=Le-n.bMarks[c];for(j=n.parentType,n.parentType="blockquote",n.tokens.push({type:"blockquote_open",lines:W=[s,0],level:n.level++}),n.parser.tokenize(n,s,c),n.tokens.push({type:"blockquote_close",level:--n.level}),n.parentType=j,W[1]=n.line,ie=0;ie<C.length;ie++)n.bMarks[ie+s]=D[ie],n.tShift[ie+s]=C[ie];return n.blkIndent=P,!0},["paragraph","blockquote","list"]],["hr",function(n,s,t,o){var c,g,C,D=n.bMarks[s],P=n.eMarks[s];if((D+=n.tShift[s])>P||42!==(c=n.src.charCodeAt(D++))&&45!==c&&95!==c)return!1;for(g=1;D<P;){if((C=n.src.charCodeAt(D++))!==c&&32!==C)return!1;C===c&&g++}return!(g<3||(o||(n.line=s+1,n.tokens.push({type:"hr",lines:[s,n.line],level:n.level})),0))},["paragraph","blockquote","list"]],["list",function(n,s,t,o){var c,g,C,D,P,j,W,re,ge,_e,Le,Re,ke,xe,U,pt,ht,It,dn,Lt,Dn,wt=!0;if((re=rP(n,s))>=0)Re=!0;else{if(!((re=nP(n,s))>=0))return!1;Re=!1}if(n.level>=n.options.maxNesting)return!1;if(Le=n.src.charCodeAt(re-1),o)return!0;for(xe=n.tokens.length,Re?(W=n.bMarks[s]+n.tShift[s],_e=Number(n.src.substr(W,re-W-1)),n.tokens.push({type:"ordered_list_open",order:_e,lines:pt=[s,0],level:n.level++})):n.tokens.push({type:"bullet_list_open",lines:pt=[s,0],level:n.level++}),c=s,U=!1,It=n.parser.ruler.getRules("list");c<t&&((ge=(ke=n.skipSpaces(re))>=n.eMarks[c]?1:ke-re)>4&&(ge=1),ge<1&&(ge=1),g=re-n.bMarks[c]+ge,n.tokens.push({type:"list_item_open",lines:ht=[s,0],level:n.level++}),D=n.blkIndent,P=n.tight,C=n.tShift[s],j=n.parentType,n.tShift[s]=ke-n.bMarks[s],n.blkIndent=g,n.tight=!0,n.parentType="list",n.parser.tokenize(n,s,t,!0),(!n.tight||U)&&(wt=!1),U=n.line-s>1&&n.isEmpty(n.line-1),n.blkIndent=D,n.tShift[s]=C,n.tight=P,n.parentType=j,n.tokens.push({type:"list_item_close",level:--n.level}),c=s=n.line,ht[1]=c,ke=n.bMarks[s],!(c>=t||n.isEmpty(c)||n.tShift[c]<n.blkIndent));){for(Dn=!1,dn=0,Lt=It.length;dn<Lt;dn++)if(It[dn](n,c,t,!0)){Dn=!0;break}if(Dn)break;if(Re){if((re=rP(n,c))<0)break}else if((re=nP(n,c))<0)break;if(Le!==n.src.charCodeAt(re-1))break}return n.tokens.push({type:Re?"ordered_list_close":"bullet_list_close",level:--n.level}),pt[1]=c,n.line=c,wt&&function(n,s){var t,o,c=n.level+2;for(t=s+2,o=n.tokens.length-2;t<o;t++)n.tokens[t].level===c&&"paragraph_open"===n.tokens[t].type&&(n.tokens[t+2].tight=!0,n.tokens[t].tight=!0,t+=2)}(n,xe),!0},["paragraph","blockquote"]],["footnote",function(n,s,t,o){var c,g,C,D,P,j=n.bMarks[s]+n.tShift[s],W=n.eMarks[s];if(j+4>W||91!==n.src.charCodeAt(j)||94!==n.src.charCodeAt(j+1)||n.level>=n.options.maxNesting)return!1;for(D=j+2;D<W;D++){if(32===n.src.charCodeAt(D))return!1;if(93===n.src.charCodeAt(D))break}return!(D===j+2||D+1>=W||58!==n.src.charCodeAt(++D)||(o||(D++,n.env.footnotes||(n.env.footnotes={}),n.env.footnotes.refs||(n.env.footnotes.refs={}),P=n.src.slice(j+2,D-2),n.env.footnotes.refs[":"+P]=-1,n.tokens.push({type:"footnote_reference_open",label:P,level:n.level++}),c=n.bMarks[s],g=n.tShift[s],C=n.parentType,n.tShift[s]=n.skipSpaces(D)-D,n.bMarks[s]=D,n.blkIndent+=4,n.parentType="footnote",n.tShift[s]<n.blkIndent&&(n.tShift[s]+=n.blkIndent,n.bMarks[s]-=n.blkIndent),n.parser.tokenize(n,s,t,!0),n.parentType=C,n.blkIndent-=4,n.tShift[s]=g,n.bMarks[s]=c,n.tokens.push({type:"footnote_reference_close",level:--n.level})),0))},["paragraph"]],["heading",function(n,s,t,o){var c,g,C,D=n.bMarks[s]+n.tShift[s],P=n.eMarks[s];if(D>=P||35!==(c=n.src.charCodeAt(D))||D>=P)return!1;for(g=1,c=n.src.charCodeAt(++D);35===c&&D<P&&g<=6;)g++,c=n.src.charCodeAt(++D);return!(g>6||D<P&&32!==c||(o||(P=n.skipCharsBack(P,32,D),(C=n.skipCharsBack(P,35,D))>D&&32===n.src.charCodeAt(C-1)&&(P=C),n.line=s+1,n.tokens.push({type:"heading_open",hLevel:g,lines:[s,n.line],level:n.level}),D<P&&n.tokens.push({type:"inline",content:n.src.slice(D,P).trim(),level:n.level+1,lines:[s,n.line],children:[]}),n.tokens.push({type:"heading_close",hLevel:g,level:n.level})),0))},["paragraph","blockquote"]],["lheading",function(n,s,t){var o,c,g,C=s+1;return!(C>=t||n.tShift[C]<n.blkIndent||n.tShift[C]-n.blkIndent>3||(c=n.bMarks[C]+n.tShift[C],g=n.eMarks[C],c>=g)||(o=n.src.charCodeAt(c),45!==o&&61!==o)||(c=n.skipChars(c,o),c=n.skipSpaces(c),c<g)||(c=n.bMarks[s]+n.tShift[s],n.line=C+1,n.tokens.push({type:"heading_open",hLevel:61===o?1:2,lines:[s,n.line],level:n.level}),n.tokens.push({type:"inline",content:n.src.slice(c,n.eMarks[s]).trim(),level:n.level+1,lines:[s,n.line-1],children:[]}),n.tokens.push({type:"heading_close",hLevel:61===o?1:2,level:n.level}),0))}],["htmlblock",function(n,s,t,o){var c,g,C,D=n.bMarks[s],P=n.eMarks[s],j=n.tShift[s];if(D+=j,!n.options.html||j>3||D+2>=P||60!==n.src.charCodeAt(D))return!1;if(33===(c=n.src.charCodeAt(D+1))||63===c){if(o)return!0}else{if(47!==c&&!function(n){var s=32|n;return s>=97&&s<=122}(c))return!1;if(47===c){if(!(g=n.src.slice(D,P).match(CL)))return!1}else if(!(g=n.src.slice(D,P).match(SL)))return!1;if(!0!==iP[g[1].toLowerCase()])return!1;if(o)return!0}for(C=s+1;C<n.lineMax&&!n.isEmpty(C);)C++;return n.line=C,n.tokens.push({type:"htmlblock",level:n.level,lines:[s,n.line],content:n.getLines(s,C,0,!0)}),!0},["paragraph","blockquote"]],["table",function(n,s,t,o){var c,g,C,D,P,j,W,re,ie,ge,_e;if(s+2>t||n.tShift[P=s+1]<n.blkIndent||(C=n.bMarks[P]+n.tShift[P])>=n.eMarks[P]||124!==(c=n.src.charCodeAt(C))&&45!==c&&58!==c||(g=tR(n,s+1),!/^[-:| ]+$/.test(g))||(j=g.split("|"))<=2)return!1;for(re=[],D=0;D<j.length;D++){if(!(ie=j[D].trim())){if(0===D||D===j.length-1)continue;return!1}if(!/^:?-+:?$/.test(ie))return!1;58===ie.charCodeAt(ie.length-1)?re.push(58===ie.charCodeAt(0)?"center":"right"):58===ie.charCodeAt(0)?re.push("left"):re.push("")}if(-1===(g=tR(n,s).trim()).indexOf("|")||(j=g.replace(/^\||\|$/g,"").split("|"),re.length!==j.length))return!1;if(o)return!0;for(n.tokens.push({type:"table_open",lines:ge=[s,0],level:n.level++}),n.tokens.push({type:"thead_open",lines:[s,s+1],level:n.level++}),n.tokens.push({type:"tr_open",lines:[s,s+1],level:n.level++}),D=0;D<j.length;D++)n.tokens.push({type:"th_open",align:re[D],lines:[s,s+1],level:n.level++}),n.tokens.push({type:"inline",content:j[D].trim(),lines:[s,s+1],level:n.level,children:[]}),n.tokens.push({type:"th_close",level:--n.level});for(n.tokens.push({type:"tr_close",level:--n.level}),n.tokens.push({type:"thead_close",level:--n.level}),n.tokens.push({type:"tbody_open",lines:_e=[s+2,0],level:n.level++}),P=s+2;P<t&&!(n.tShift[P]<n.blkIndent||(g=tR(n,P).trim(),-1===g.indexOf("|")));P++){for(j=g.replace(/^\||\|$/g,"").split("|"),n.tokens.push({type:"tr_open",level:n.level++}),D=0;D<j.length;D++)n.tokens.push({type:"td_open",align:re[D],level:n.level++}),W=j[D].substring(124===j[D].charCodeAt(0)?1:0,124===j[D].charCodeAt(j[D].length-1)?j[D].length-1:j[D].length).trim(),n.tokens.push({type:"inline",content:W,level:n.level,children:[]}),n.tokens.push({type:"td_close",level:--n.level});n.tokens.push({type:"tr_close",level:--n.level})}return n.tokens.push({type:"tbody_close",level:--n.level}),n.tokens.push({type:"table_close",level:--n.level}),ge[1]=_e[1]=P,n.line=P,!0},["paragraph"]],["deflist",function(n,s,t,o){var c,g,C,D,P,j,W,re,ie,ge,_e,Le,Re,ke;if(o)return!(n.ddIndent<0)&&MA(n,s)>=0;if(n.isEmpty(W=s+1)&&++W>t||n.tShift[W]<n.blkIndent||(c=MA(n,W))<0||n.level>=n.options.maxNesting)return!1;j=n.tokens.length,n.tokens.push({type:"dl_open",lines:P=[s,0],level:n.level++}),C=s,g=W;e:for(;;){for(ke=!0,Re=!1,n.tokens.push({type:"dt_open",lines:[C,C],level:n.level++}),n.tokens.push({type:"inline",content:n.getLines(C,C+1,n.blkIndent,!1).trim(),level:n.level+1,lines:[C,C],children:[]}),n.tokens.push({type:"dt_close",level:--n.level});;){if(n.tokens.push({type:"dd_open",lines:D=[W,0],level:n.level++}),Le=n.tight,ie=n.ddIndent,re=n.blkIndent,_e=n.tShift[g],ge=n.parentType,n.blkIndent=n.ddIndent=n.tShift[g]+2,n.tShift[g]=c-n.bMarks[g],n.tight=!0,n.parentType="deflist",n.parser.tokenize(n,g,t,!0),(!n.tight||Re)&&(ke=!1),Re=n.line-g>1&&n.isEmpty(n.line-1),n.tShift[g]=_e,n.tight=Le,n.parentType=ge,n.blkIndent=re,n.ddIndent=ie,n.tokens.push({type:"dd_close",level:--n.level}),D[1]=W=n.line,W>=t||n.tShift[W]<n.blkIndent)break e;if((c=MA(n,W))<0)break;g=W}if(W>=t||n.isEmpty(C=W)||n.tShift[C]<n.blkIndent||(g=C+1)>=t||(n.isEmpty(g)&&g++,g>=t)||n.tShift[g]<n.blkIndent||(c=MA(n,g))<0)break}return n.tokens.push({type:"dl_close",level:--n.level}),P[1]=W,n.line=W,ke&&function(n,s){var t,o,c=n.level+2;for(t=s+2,o=n.tokens.length-2;t<o;t++)n.tokens[t].level===c&&"paragraph_open"===n.tokens[t].type&&(n.tokens[t+2].tight=!0,n.tokens[t].tight=!0,t+=2)}(n,j),!0},["paragraph"]],["paragraph",function(n,s){var t,o,c,g,C,P,D=s+1;if(D<(t=n.lineMax)&&!n.isEmpty(D))for(P=n.parser.ruler.getRules("paragraph");D<t&&!n.isEmpty(D);D++)if(!(n.tShift[D]-n.blkIndent>3)){for(c=!1,g=0,C=P.length;g<C;g++)if(P[g](n,D,t,!0)){c=!0;break}if(c)break}return o=n.getLines(s,D,n.blkIndent,!1).trim(),n.line=D,o.length&&(n.tokens.push({type:"paragraph_open",tight:!1,lines:[s,n.line],level:n.level}),n.tokens.push({type:"inline",content:o,level:n.level+1,lines:[s,n.line],children:[]}),n.tokens.push({type:"paragraph_close",tight:!1,level:n.level})),!0}]];function nR(){this.ruler=new P_;for(var n=0;n<AA.length;n++)this.ruler.push(AA[n][0],AA[n][1],{alt:(AA[n][2]||[]).slice()})}nR.prototype.tokenize=function(n,s,t){for(var P,o=this.ruler.getRules(""),c=o.length,g=s,C=!1;g<t&&(n.line=g=n.skipEmptyLines(g),!(g>=t||n.tShift[g]<n.blkIndent));){for(P=0;P<c&&!o[P](n,g,t,!1);P++);if(n.tight=!C,n.isEmpty(n.line-1)&&(C=!0),(g=n.line)<t&&n.isEmpty(g)){if(C=!0,++g<t&&"list"===n.parentType&&n.isEmpty(g))break;n.line=g}}};var RL=/[\n\t]/g,NL=/\r[\n\u0085]|[\u2424\u2028\u0085]/g,PL=/\u00a0/g;function IL(n){switch(n){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}nR.prototype.parse=function(n,s,t,o){var c,g=0,C=0;if(!n)return[];(n=(n=n.replace(PL," ")).replace(NL,"\n")).indexOf("\t")>=0&&(n=n.replace(RL,function(D,P){var j;return 10===n.charCodeAt(P)?(g=P+1,C=0,D):(j="    ".slice((P-g-C)%4),C=P-g+1,j)})),c=new D0(n,this,s,t,o),this.tokenize(c,c.line,c.lineMax)};for(var rR=[],oP=0;oP<256;oP++)rR.push(0);function sP(n){return n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122}function aP(n,s){var o,c,g,t=s,C=!0,D=!0,P=n.posMax,j=n.src.charCodeAt(s);for(o=s>0?n.src.charCodeAt(s-1):-1;t<P&&n.src.charCodeAt(t)===j;)t++;return t>=P&&(C=!1),(g=t-s)>=4?C=D=!1:((32===(c=t<P?n.src.charCodeAt(t):-1)||10===c)&&(C=!1),(32===o||10===o)&&(D=!1),95===j&&(sP(o)&&(C=!1),sP(c)&&(D=!1))),{can_open:C,can_close:D,delims:g}}"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(n){rR[n.charCodeAt(0)]=1});var ZL=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g,GL=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g,QL=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"],XL=/^<([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])?)*)>/,KL=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;function OA(n,s){return n=n.source,s=s||"",function t(o,c){return o?(n=n.replace(o,c=c.source||c),t):new RegExp(n,s)}}var iF=OA(/(?:unquoted|single_quoted|double_quoted)/)("unquoted",/[^"'=<>`\x00-\x20]+/)("single_quoted",/'[^']*'/)("double_quoted",/"[^"]*"/)(),oF=OA(/(?:\s+attr_name(?:\s*=\s*attr_value)?)/)("attr_name",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)("attr_value",iF)(),sF=OA(/<[A-Za-z][A-Za-z0-9]*attribute*\s*\/?>/)("attribute",oF)(),fF=OA(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)("open_tag",sF)("close_tag",/<\/[A-Za-z][A-Za-z0-9]*\s*>/)("comment",/<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/)("processing",/<[?].*?[?]>/)("declaration",/<![A-Z]+\s+[^>]*>/)("cdata",/<!\[CDATA\[[\s\S]*?\]\]>/)(),_F=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,gF=/^&([a-z][a-z0-9]{1,31});/i,iR=[["text",function(n,s){for(var t=n.pos;t<n.posMax&&!IL(n.src.charCodeAt(t));)t++;return t!==n.pos&&(s||(n.pending+=n.src.slice(n.pos,t)),n.pos=t,!0)}],["newline",function(n,s){var t,o,c=n.pos;if(10!==n.src.charCodeAt(c))return!1;if(t=n.pending.length-1,o=n.posMax,!s)if(t>=0&&32===n.pending.charCodeAt(t))if(t>=1&&32===n.pending.charCodeAt(t-1)){for(var g=t-2;g>=0;g--)if(32!==n.pending.charCodeAt(g)){n.pending=n.pending.substring(0,g+1);break}n.push({type:"hardbreak",level:n.level})}else n.pending=n.pending.slice(0,-1),n.push({type:"softbreak",level:n.level});else n.push({type:"softbreak",level:n.level});for(c++;c<o&&32===n.src.charCodeAt(c);)c++;return n.pos=c,!0}],["escape",function(n,s){var t,o=n.pos,c=n.posMax;if(92!==n.src.charCodeAt(o))return!1;if(++o<c){if((t=n.src.charCodeAt(o))<256&&0!==rR[t])return s||(n.pending+=n.src[o]),n.pos+=2,!0;if(10===t){for(s||n.push({type:"hardbreak",level:n.level}),o++;o<c&&32===n.src.charCodeAt(o);)o++;return n.pos=o,!0}}return s||(n.pending+="\\"),n.pos++,!0}],["backticks",function(n,s){var t,o,c,g,C,D=n.pos;if(96!==n.src.charCodeAt(D))return!1;for(t=D,D++,o=n.posMax;D<o&&96===n.src.charCodeAt(D);)D++;for(c=n.src.slice(t,D),g=C=D;-1!==(g=n.src.indexOf("`",C));){for(C=g+1;C<o&&96===n.src.charCodeAt(C);)C++;if(C-g===c.length)return s||n.push({type:"code",content:n.src.slice(D,g).replace(/[ \n]+/g," ").trim(),block:!1,level:n.level}),n.pos=C,!0}return s||(n.pending+=c),n.pos+=c.length,!0}],["del",function(n,s){var t,o,c,D,P,g=n.posMax,C=n.pos;if(126!==n.src.charCodeAt(C)||s||C+4>=g||126!==n.src.charCodeAt(C+1)||n.level>=n.options.maxNesting||(D=C>0?n.src.charCodeAt(C-1):-1,P=n.src.charCodeAt(C+2),126===D)||126===P||32===P||10===P)return!1;for(o=C+2;o<g&&126===n.src.charCodeAt(o);)o++;if(o>C+3)return n.pos+=o-C,s||(n.pending+=n.src.slice(C,o)),!0;for(n.pos=C+2,c=1;n.pos+1<g;){if(126===n.src.charCodeAt(n.pos)&&126===n.src.charCodeAt(n.pos+1)&&(D=n.src.charCodeAt(n.pos-1),126!==(P=n.pos+2<g?n.src.charCodeAt(n.pos+2):-1)&&126!==D&&(32!==D&&10!==D?c--:32!==P&&10!==P&&c++,c<=0))){t=!0;break}n.parser.skipToken(n)}return t?(n.posMax=n.pos,n.pos=C+2,s||(n.push({type:"del_open",level:n.level++}),n.parser.tokenize(n),n.push({type:"del_close",level:--n.level})),n.pos=n.posMax+2,n.posMax=g,!0):(n.pos=C,!1)}],["ins",function(n,s){var t,o,c,D,P,g=n.posMax,C=n.pos;if(43!==n.src.charCodeAt(C)||s||C+4>=g||43!==n.src.charCodeAt(C+1)||n.level>=n.options.maxNesting||(D=C>0?n.src.charCodeAt(C-1):-1,P=n.src.charCodeAt(C+2),43===D)||43===P||32===P||10===P)return!1;for(o=C+2;o<g&&43===n.src.charCodeAt(o);)o++;if(o!==C+2)return n.pos+=o-C,s||(n.pending+=n.src.slice(C,o)),!0;for(n.pos=C+2,c=1;n.pos+1<g;){if(43===n.src.charCodeAt(n.pos)&&43===n.src.charCodeAt(n.pos+1)&&(D=n.src.charCodeAt(n.pos-1),43!==(P=n.pos+2<g?n.src.charCodeAt(n.pos+2):-1)&&43!==D&&(32!==D&&10!==D?c--:32!==P&&10!==P&&c++,c<=0))){t=!0;break}n.parser.skipToken(n)}return t?(n.posMax=n.pos,n.pos=C+2,s||(n.push({type:"ins_open",level:n.level++}),n.parser.tokenize(n),n.push({type:"ins_close",level:--n.level})),n.pos=n.posMax+2,n.posMax=g,!0):(n.pos=C,!1)}],["mark",function(n,s){var t,o,c,D,P,g=n.posMax,C=n.pos;if(61!==n.src.charCodeAt(C)||s||C+4>=g||61!==n.src.charCodeAt(C+1)||n.level>=n.options.maxNesting||(D=C>0?n.src.charCodeAt(C-1):-1,P=n.src.charCodeAt(C+2),61===D)||61===P||32===P||10===P)return!1;for(o=C+2;o<g&&61===n.src.charCodeAt(o);)o++;if(o!==C+2)return n.pos+=o-C,s||(n.pending+=n.src.slice(C,o)),!0;for(n.pos=C+2,c=1;n.pos+1<g;){if(61===n.src.charCodeAt(n.pos)&&61===n.src.charCodeAt(n.pos+1)&&(D=n.src.charCodeAt(n.pos-1),61!==(P=n.pos+2<g?n.src.charCodeAt(n.pos+2):-1)&&61!==D&&(32!==D&&10!==D?c--:32!==P&&10!==P&&c++,c<=0))){t=!0;break}n.parser.skipToken(n)}return t?(n.posMax=n.pos,n.pos=C+2,s||(n.push({type:"mark_open",level:n.level++}),n.parser.tokenize(n),n.push({type:"mark_close",level:--n.level})),n.pos=n.posMax+2,n.posMax=g,!0):(n.pos=C,!1)}],["emphasis",function(n,s){var t,o,c,g,C,D,P,j=n.posMax,W=n.pos,re=n.src.charCodeAt(W);if(95!==re&&42!==re||s)return!1;if(t=(P=aP(n,W)).delims,!P.can_open)return n.pos+=t,s||(n.pending+=n.src.slice(W,n.pos)),!0;if(n.level>=n.options.maxNesting)return!1;for(n.pos=W+t,D=[t];n.pos<j;)if(n.src.charCodeAt(n.pos)!==re)n.parser.skipToken(n);else{if(o=(P=aP(n,n.pos)).delims,P.can_close){for(g=D.pop(),C=o;g!==C;){if(C<g){D.push(g-C);break}if(C-=g,0===D.length)break;n.pos+=g,g=D.pop()}if(0===D.length){t=g,c=!0;break}n.pos+=o;continue}P.can_open&&D.push(o),n.pos+=o}return c?(n.posMax=n.pos,n.pos=W+t,s||((2===t||3===t)&&n.push({type:"strong_open",level:n.level++}),(1===t||3===t)&&n.push({type:"em_open",level:n.level++}),n.parser.tokenize(n),(1===t||3===t)&&n.push({type:"em_close",level:--n.level}),(2===t||3===t)&&n.push({type:"strong_close",level:--n.level})),n.pos=n.posMax+t,n.posMax=j,!0):(n.pos=W,!1)}],["sub",function(n,s){var t,o,c=n.posMax,g=n.pos;if(126!==n.src.charCodeAt(g)||s||g+2>=c||n.level>=n.options.maxNesting)return!1;for(n.pos=g+1;n.pos<c;){if(126===n.src.charCodeAt(n.pos)){t=!0;break}n.parser.skipToken(n)}return!t||g+1===n.pos||(o=n.src.slice(g+1,n.pos)).match(/(^|[^\\])(\\\\)*\s/)?(n.pos=g,!1):(n.posMax=n.pos,n.pos=g+1,s||n.push({type:"sub",level:n.level,content:o.replace(ZL,"$1")}),n.pos=n.posMax+1,n.posMax=c,!0)}],["sup",function(n,s){var t,o,c=n.posMax,g=n.pos;if(94!==n.src.charCodeAt(g)||s||g+2>=c||n.level>=n.options.maxNesting)return!1;for(n.pos=g+1;n.pos<c;){if(94===n.src.charCodeAt(n.pos)){t=!0;break}n.parser.skipToken(n)}return!t||g+1===n.pos||(o=n.src.slice(g+1,n.pos)).match(/(^|[^\\])(\\\\)*\s/)?(n.pos=g,!1):(n.posMax=n.pos,n.pos=g+1,s||n.push({type:"sup",level:n.level,content:o.replace(GL,"$1")}),n.pos=n.posMax+1,n.posMax=c,!0)}],["links",function(n,s){var t,o,c,g,C,D,P,j,W=!1,re=n.pos,ie=n.posMax,ge=n.pos,_e=n.src.charCodeAt(ge);if(33===_e&&(W=!0,_e=n.src.charCodeAt(++ge)),91!==_e||n.level>=n.options.maxNesting||(t=ge+1,(o=pS(n,ge))<0))return!1;if((D=o+1)<ie&&40===n.src.charCodeAt(D)){for(D++;D<ie&&(32===(j=n.src.charCodeAt(D))||10===j);D++);if(D>=ie)return!1;for(ge=D,W6(n,D)?(g=n.linkContent,D=n.pos):g="",ge=D;D<ie&&(32===(j=n.src.charCodeAt(D))||10===j);D++);if(D<ie&&ge!==D&&J6(n,D))for(C=n.linkContent,D=n.pos;D<ie&&(32===(j=n.src.charCodeAt(D))||10===j);D++);else C="";if(D>=ie||41!==n.src.charCodeAt(D))return n.pos=re,!1;D++}else{if(n.linkLevel>0)return!1;for(;D<ie&&(32===(j=n.src.charCodeAt(D))||10===j);D++);if(D<ie&&91===n.src.charCodeAt(D)&&(ge=D+1,(D=pS(n,D))>=0?c=n.src.slice(ge,D++):D=ge-1),c||(void 0===c&&(D=o+1),c=n.src.slice(t,o)),!(P=n.env.references[Q6(c)]))return n.pos=re,!1;g=P.href,C=P.title}return s||(n.pos=t,n.posMax=o,W?n.push({type:"image",src:g,title:C,alt:n.src.substr(t,o-t),level:n.level}):(n.push({type:"link_open",href:g,title:C,level:n.level++}),n.linkLevel++,n.parser.tokenize(n),n.linkLevel--,n.push({type:"link_close",level:--n.level}))),n.pos=D,n.posMax=ie,!0}],["footnote_inline",function(n,s){var t,o,c,g,C=n.posMax,D=n.pos;return!(D+2>=C||94!==n.src.charCodeAt(D)||91!==n.src.charCodeAt(D+1)||n.level>=n.options.maxNesting||(t=D+2,o=pS(n,D+1),o<0)||(s||(n.env.footnotes||(n.env.footnotes={}),n.env.footnotes.list||(n.env.footnotes.list=[]),c=n.env.footnotes.list.length,n.pos=t,n.posMax=o,n.push({type:"footnote_ref",id:c,level:n.level}),n.linkLevel++,g=n.tokens.length,n.parser.tokenize(n),n.env.footnotes.list[c]={tokens:n.tokens.splice(g)},n.linkLevel--),n.pos=o+1,n.posMax=C,0))}],["footnote_ref",function(n,s){var t,o,c,g,C=n.posMax,D=n.pos;if(D+3>C||!n.env.footnotes||!n.env.footnotes.refs||91!==n.src.charCodeAt(D)||94!==n.src.charCodeAt(D+1)||n.level>=n.options.maxNesting)return!1;for(o=D+2;o<C;o++){if(32===n.src.charCodeAt(o)||10===n.src.charCodeAt(o))return!1;if(93===n.src.charCodeAt(o))break}return!(o===D+2||o>=C||(o++,t=n.src.slice(D+2,o-1),void 0===n.env.footnotes.refs[":"+t])||(s||(n.env.footnotes.list||(n.env.footnotes.list=[]),n.env.footnotes.refs[":"+t]<0?(n.env.footnotes.list[c=n.env.footnotes.list.length]={label:t,count:0},n.env.footnotes.refs[":"+t]=c):c=n.env.footnotes.refs[":"+t],g=n.env.footnotes.list[c].count,n.env.footnotes.list[c].count++,n.push({type:"footnote_ref",id:c,subId:g,level:n.level})),n.pos=o,n.posMax=C,0))}],["autolink",function(n,s){var t,o,c,g,C,D=n.pos;return!(60!==n.src.charCodeAt(D)||(t=n.src.slice(D),t.indexOf(">")<0)||((o=t.match(KL))?QL.indexOf(o[1].toLowerCase())<0||(g=o[0].slice(1,-1),C=K3(g),!n.parser.validateLink(g))||(s||(n.push({type:"link_open",href:C,level:n.level}),n.push({type:"text",content:g,level:n.level+1}),n.push({type:"link_close",level:n.level})),n.pos+=o[0].length,0):!(c=t.match(XL))||(C=K3("mailto:"+(g=c[0].slice(1,-1))),!n.parser.validateLink(C)||(s||(n.push({type:"link_open",href:C,level:n.level}),n.push({type:"text",content:g,level:n.level+1}),n.push({type:"link_close",level:n.level})),n.pos+=c[0].length,0))))}],["htmltag",function(n,s){var t,o,c,g=n.pos;return!(!n.options.html||(c=n.posMax,60!==n.src.charCodeAt(g)||g+2>=c)||(t=n.src.charCodeAt(g+1),33!==t&&63!==t&&47!==t&&!function(n){var s=32|n;return s>=97&&s<=122}(t))||(o=n.src.slice(g).match(fF),!o)||(s||n.push({type:"htmltag",content:n.src.slice(g,g+o[0].length),level:n.level}),n.pos+=o[0].length,0))}],["entity",function(n,s){var o,c,g=n.pos,C=n.posMax;if(38!==n.src.charCodeAt(g))return!1;if(g+1<C)if(35===n.src.charCodeAt(g+1)){if(c=n.src.slice(g).match(_F))return s||(o="x"===c[1][0].toLowerCase()?parseInt(c[1].slice(1),16):parseInt(c[1],10),n.pending+=Q3(o)?CA(o):CA(65533)),n.pos+=c[0].length,!0}else if(c=n.src.slice(g).match(gF)){var D=G6(c[1]);if(c[1]!==D)return s||(n.pending+=D),n.pos+=c[0].length,!0}return s||(n.pending+="&"),n.pos++,!0}]];function wA(){this.ruler=new P_;for(var n=0;n<iR.length;n++)this.ruler.push(iR[n][0],iR[n][1]);this.validateLink=vF}function vF(n){var t=n.trim().toLowerCase();return!(-1!==(t=s1(t)).indexOf(":")&&-1!==["vbscript","javascript","file","data"].indexOf(t.split(":")[0]))}wA.prototype.skipToken=function(n){var c,g,s=this.ruler.getRules(""),t=s.length,o=n.pos;if((g=n.cacheGet(o))>0)n.pos=g;else{for(c=0;c<t;c++)if(s[c](n,!0))return void n.cacheSet(o,n.pos);n.pos++,n.cacheSet(o,n.pos)}},wA.prototype.tokenize=function(n){for(var c,g,s=this.ruler.getRules(""),t=s.length,o=n.posMax;n.pos<o;){for(g=0;g<t&&!(c=s[g](n,!1));g++);if(c){if(n.pos>=o)break}else n.pending+=n.src[n.pos++]}n.pending&&n.pushPending()},wA.prototype.parse=function(n,s,t,o){var c=new x0(n,this,s,t,o);this.tokenize(c)};var TF={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","replacements","smartquotes","references","abbr2","footnote_tail"]},block:{rules:["blockquote","code","fences","footnote","heading","hr","htmlblock","lheading","list","paragraph","table"]},inline:{rules:["autolink","backticks","del","emphasis","entity","escape","footnote_ref","htmltag","links","newline","text"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkTarget:"",typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["block","inline","references","abbr2"]},block:{rules:["blockquote","code","fences","heading","hr","htmlblock","lheading","list","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","htmltag","links","newline","text"]}}}};function lP(n,s,t){this.src=s,this.env=t,this.options=n.options,this.tokens=[],this.inlineMode=!1,this.inline=n.inline,this.block=n.block,this.renderer=n.renderer,this.typographer=n.typographer}function a1(n,s){"string"!=typeof n&&(s=n,n="default"),s&&null!=s.linkify&&console.warn("linkify option is removed. Use linkify plugin instead:\n\nimport Remarkable from 'remarkable';\nimport linkify from 'remarkable/linkify';\nnew Remarkable().use(linkify)\n"),this.inline=new wA,this.block=new nR,this.core=new tP,this.renderer=new X3,this.ruler=new P_,this.options={},this.configure(TF[n]),this.set(s||{})}a1.prototype.set=function(n){J3(this.options,n)},a1.prototype.configure=function(n){var s=this;if(!n)throw new Error("Wrong `remarkable` preset, check name/content");n.options&&s.set(n.options),n.components&&Object.keys(n.components).forEach(function(t){n.components[t].rules&&s[t].ruler.enable(n.components[t].rules,!0)})},a1.prototype.use=function(n,s){return n(this,s),this},a1.prototype.parse=function(n,s){var t=new lP(this,n,s);return this.core.process(t),t.tokens},a1.prototype.render=function(n,s){return this.renderer.render(this.parse(n,s=s||{}),this.options,s)},a1.prototype.parseInline=function(n,s){var t=new lP(this,n,s);return t.inlineMode=!0,this.core.process(t),t.tokens},a1.prototype.renderInline=function(n,s){return this.renderer.render(this.parseInline(n,s=s||{}),this.options,s)};var xA="NOT_FOUND",MF=function(s,t){return s===t};function OF(n,s){var t="object"==typeof s?s:{equalityCheck:s},o=t.equalityCheck,g=t.maxSize,C=void 0===g?1:g,D=t.resultEqualityCheck,P=function(n){return function(t,o){if(null===t||null===o||t.length!==o.length)return!1;for(var c=t.length,g=0;g<c;g++)if(!n(t[g],o[g]))return!1;return!0}}(void 0===o?MF:o),j=1===C?function(n){var s;return{get:function(o){return s&&n(s.key,o)?s.value:xA},put:function(o,c){s={key:o,value:c}},getEntries:function(){return s?[s]:[]},clear:function(){s=void 0}}}(P):function(n,s){var t=[];function o(D){var P=t.findIndex(function(W){return s(D,W.key)});if(P>-1){var j=t[P];return P>0&&(t.splice(P,1),t.unshift(j)),j.value}return xA}return{get:o,put:function(D,P){o(D)===xA&&(t.unshift({key:D,value:P}),t.length>n&&t.pop())},getEntries:function(){return t},clear:function(){t=[]}}}(C,P);function W(){var re=j.get(arguments);if(re===xA){if(re=n.apply(null,arguments),D){var ie=j.getEntries(),ge=ie.find(function(_e){return D(_e.value,re)});ge&&(re=ge.value)}j.put(arguments,re)}return re}return W.clearCache=function(){return j.clear()},W}function wF(n){var s=Array.isArray(n[0])?n[0]:n;if(!s.every(function(o){return"function"==typeof o})){var t=s.map(function(o){return"function"==typeof o?"function "+(o.name||"unnamed")+"()":typeof o}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+t+"]")}return s}function xF(n){for(var s=arguments.length,t=new Array(s>1?s-1:0),o=1;o<s;o++)t[o-1]=arguments[o];var c=function(){for(var C=arguments.length,D=new Array(C),P=0;P<C;P++)D[P]=arguments[P];var W,j=0,re={memoizeOptions:void 0},ie=D.pop();if("object"==typeof ie&&(re=ie,ie=D.pop()),"function"!=typeof ie)throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof ie+"]");var ge=re,_e=ge.memoizeOptions,Le=void 0===_e?t:_e,Re=Array.isArray(Le)?Le:[Le],ke=wF(D),xe=n.apply(void 0,[function(){return j++,ie.apply(null,arguments)}].concat(Re)),U=n(function(){for(var ht=[],wt=ke.length,It=0;It<wt;It++)ht.push(ke[It].apply(null,arguments));return W=xe.apply(null,ht)});return Object.assign(U,{resultFunc:ie,memoizedResultFunc:xe,dependencies:ke,lastResult:function(){return W},recomputations:function(){return j},resetRecomputations:function(){return j=0}}),U};return c}var uP=xF(OF),DF=i(4043),RF=i(2135),NF=i.n(RF),PF=i(95327),IF=i.n(PF),LF=i(31208),FF=i(3912),kF=i.n(FF),$F=i(41233),HF=i.n($F),UF=i(74299),BF=i.n(UF),YF=i(32322),ZF=i.n(YF),jF=i(58734),GF=i.n(jF),VF=i(69883),zF=i.n(VF),WF=i(41205),JF=i.n(WF),QF={3978:(n,s,t)=>{n.exports=t(1910)},1543:(n,s,t)=>{t.d(s,{Z:()=>ke});var o=t(863),c=t(7344),g=t(8656),C=t(6340),D=t(9972),P=t(5416),j=t(775),W=t(5171),re=t(8818),ie=t(2565),ge=t(810);const _e=(t.d(U={},{default:()=>HR}),U);var U,Le=t(9569),Re=t(5053),ke=function(xe){(0,D.default)(pt,xe);var U=(0,P.default)(pt);function pt(){var ht,wt;(0,c.default)(this,pt);for(var It=arguments.length,dn=new Array(It),Lt=0;Lt<It;Lt++)dn[Lt]=arguments[Lt];return wt=U.call.apply(U,(0,W.default)(ht=[this]).call(ht,dn)),(0,j.default)((0,C.default)(wt),"getModelName",function(Dn){return-1!==(0,re.default)(Dn).call(Dn,"#/definitions/")?Dn.replace(/^.*#\/definitions\//,""):-1!==(0,re.default)(Dn).call(Dn,"#/components/schemas/")?Dn.replace(/^.*#\/components\/schemas\//,""):void 0}),(0,j.default)((0,C.default)(wt),"getRefSchema",function(Dn){return wt.props.specSelectors.findDefinition(Dn)}),wt}return(0,g.default)(pt,[{key:"render",value:function(){var ht=this.props,wt=ht.getComponent,It=ht.getConfigs,dn=ht.specSelectors,Lt=ht.schema,Dn=ht.required,Mn=ht.name,$r=ht.isRef,ur=ht.specPath,Pr=ht.displayName,xr=ht.includeReadOnly,fn=ht.includeWriteOnly,Nn=wt("ObjectModel"),$n=wt("ArrayModel"),Qn=wt("PrimitiveModel"),Tn="object",Yr=Lt&&Lt.get("$$ref");if(!Mn&&Yr&&(Mn=this.getModelName(Yr)),!Lt&&Yr&&(Lt=this.getRefSchema(Mn)),!Lt)return ge.default.createElement("span",{className:"model model-title"},ge.default.createElement("span",{className:"model-title__text"},Pr||Mn),ge.default.createElement("img",{src:t(2517),height:"20px",width:"20px"}));var ji=dn.isOAS3()&&Lt.get("deprecated");switch($r=void 0!==$r?$r:!!Yr,Tn=Lt&&Lt.get("type")||Tn){case"object":return ge.default.createElement(Nn,(0,o.default)({className:"object"},this.props,{specPath:ur,getConfigs:It,schema:Lt,name:Mn,deprecated:ji,isRef:$r,includeReadOnly:xr,includeWriteOnly:fn}));case"array":return ge.default.createElement($n,(0,o.default)({className:"array"},this.props,{getConfigs:It,schema:Lt,name:Mn,deprecated:ji,required:Dn,includeReadOnly:xr,includeWriteOnly:fn}));default:return ge.default.createElement(Qn,(0,o.default)({},this.props,{getComponent:wt,getConfigs:It,schema:Lt,name:Mn,deprecated:ji,required:Dn}))}}}]),pt}(_e.default);(0,j.default)(ke,"propTypes",{schema:(0,ie.default)(Le.default).isRequired,getComponent:Re.default.func.isRequired,getConfigs:Re.default.func.isRequired,specSelectors:Re.default.object.isRequired,name:Re.default.string,displayName:Re.default.string,isRef:Re.default.bool,required:Re.default.bool,expandDepth:Re.default.number,depth:Re.default.number,specPath:Le.default.list.isRequired,includeReadOnly:Re.default.bool,includeWriteOnly:Re.default.bool})},5623:(n,s,t)=>{t.d(s,{Z:()=>Re});var o=t(1581),c=t(7344),g=t(8656),C=t(6340),D=t(9972),P=t(5416),j=t(775),W=t(2740),re=t(5171),ie=t(810),ge=t(8900),_e=(t(5053),t(6298)),Le=t(7504),Re=function(xe){(0,D.default)(pt,xe);var U=(0,P.default)(pt);function pt(ht,wt){var It;(0,c.default)(this,pt),It=U.call(this,ht,wt),(0,j.default)((0,C.default)(It),"getDefinitionUrl",function(){return new ge.default(It.props.specSelectors.url(),Le.Z.location).toString()});var dn=(0,ht.getConfigs)().validatorUrl;return It.state={url:It.getDefinitionUrl(),validatorUrl:void 0===dn?"https://validator.swagger.io/validator":dn},It}return(0,g.default)(pt,[{key:"UNSAFE_componentWillReceiveProps",value:function(ht){var wt=(0,ht.getConfigs)().validatorUrl;this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===wt?"https://validator.swagger.io/validator":wt})}},{key:"render",value:function(){var ht,wt,It=(0,this.props.getConfigs)().spec,dn=(0,_e.Nm)(this.state.validatorUrl);return"object"===(0,o.default)(It)&&(0,W.default)(It).length?null:this.state.url&&(0,_e.hW)(this.state.validatorUrl)&&(0,_e.hW)(this.state.url)?ie.default.createElement("span",{className:"float-right"},ie.default.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:(0,re.default)(ht="".concat(dn,"/debug?url=")).call(ht,encodeURIComponent(this.state.url))},ie.default.createElement(ke,{src:(0,re.default)(wt="".concat(dn,"?url=")).call(wt,encodeURIComponent(this.state.url)),alt:"Online validator badge"}))):null}}]),pt}(ie.default.Component),ke=function(xe){(0,D.default)(pt,xe);var U=(0,P.default)(pt);function pt(ht){var wt;return(0,c.default)(this,pt),(wt=U.call(this,ht)).state={loaded:!1,error:!1},wt}return(0,g.default)(pt,[{key:"componentDidMount",value:function(){var ht=this,wt=new Image;wt.onload=function(){ht.setState({loaded:!0})},wt.onerror=function(){ht.setState({error:!0})},wt.src=this.props.src}},{key:"UNSAFE_componentWillReceiveProps",value:function(ht){var wt=this;if(ht.src!==this.props.src){var It=new Image;It.onload=function(){wt.setState({loaded:!0})},It.onerror=function(){wt.setState({error:!0})},It.src=ht.src}}},{key:"render",value:function(){return this.state.error?ie.default.createElement("img",{alt:"Error"}):this.state.loaded?ie.default.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}]),pt}(ie.default.Component)},5466:(n,s,t)=>{t.d(s,{Z:()=>j,s:()=>W});var o=t(810),c=(t(5053),t(3952));const g=(t.d(ie={},{linkify:()=>Nx}),ie),C=(re=>{var ie={};return t.d(ie,re),ie})({default:()=>QM()});var ie,D=t(8096);function P(re){var ie=re.source,ge=re.className,_e=void 0===ge?"":ge,Le=re.getConfigs;if("string"!=typeof ie)return null;var Re=new c.Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:"_blank"}).use(g.linkify);Re.core.ruler.disable(["replacements","smartquotes"]);var ke=Le().useUnsafeMarkdown,xe=Re.render(ie),U=W(xe,{useUnsafeMarkdown:ke});return ie&&xe&&U?o.default.createElement("div",{className:(0,D.default)(_e,"markdown"),dangerouslySetInnerHTML:{__html:U}}):null}C.default.addHook&&C.default.addHook("beforeSanitizeElements",function(re){return re.href&&re.setAttribute("rel","noopener noreferrer"),re}),P.defaultProps={getConfigs:function(){return{useUnsafeMarkdown:!1}}};const j=P;function W(re){var ie=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},ge=ie.useUnsafeMarkdown,_e=void 0!==ge&&ge,Le=_e,Re=_e?[]:["style","class"];return _e&&!W.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),W.hasWarnedAboutDeprecation=!0),C.default.sanitize(re,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:Le,FORBID_ATTR:Re})}W.hasWarnedAboutDeprecation=!1},5308:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W});var o,c=t(29),g=t(5487),C=t(6298),D=t(8102),P=t(5102),j={};const W=j;(0,c.default)(o=(0,g.default)(P).call(P)).call(o,function(re){if("./index.js"!==re){var ie=P(re);j[(0,C.Zl)(re)]=ie.default?ie.default:ie}}),j.SafeRender=D.default},5812:(n,s,t)=>{t.r(s),t.d(s,{SHOW_AUTH_POPUP:()=>j,AUTHORIZE:()=>W,LOGOUT:()=>re,PRE_AUTHORIZE_OAUTH2:()=>ie,AUTHORIZE_OAUTH2:()=>ge,VALIDATE:()=>_e,CONFIGURE_AUTH:()=>Le,RESTORE_AUTHORIZATION:()=>Re,showDefinitions:()=>ke,authorize:()=>xe,authorizeWithPersistOption:()=>U,logout:()=>pt,logoutWithPersistOption:()=>ht,preAuthorizeImplicit:()=>wt,authorizeOauth2:()=>It,authorizeOauth2WithPersistOption:()=>dn,authorizePassword:()=>Lt,authorizeApplication:()=>Dn,authorizeAccessCodeWithFormParams:()=>Mn,authorizeAccessCodeWithBasicAuthentication:()=>$r,authorizeRequest:()=>ur,configureAuth:()=>Pr,restoreAuthorization:()=>xr,persistAuthorizationIfNeeded:()=>fn,authPopup:()=>Nn});var o=t(1581),c=t(313),g=t(7512),C=t(8900),D=t(7504),P=t(6298),j="show_popup",W="authorize",re="logout",ie="pre_authorize_oauth2",ge="authorize_oauth2",_e="validate",Le="configure_auth",Re="restore_authorization";function ke($n){return{type:j,payload:$n}}function xe($n){return{type:W,payload:$n}}var U=function($n){return function(Qn){var Tn=Qn.authActions;Tn.authorize($n),Tn.persistAuthorizationIfNeeded()}};function pt($n){return{type:re,payload:$n}}var ht=function($n){return function(Qn){var Tn=Qn.authActions;Tn.logout($n),Tn.persistAuthorizationIfNeeded()}},wt=function($n){return function(Qn){var Tn=Qn.authActions,Yr=Qn.errActions,ji=$n.auth,ii=$n.token,Ui=$n.isValid,An=ji.name,hn=ji.schema.get("flow");delete D.Z.swaggerUIRedirectOauth2,"accessCode"===hn||Ui||Yr.newAuthErr({authId:An,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),ii.error?Yr.newAuthErr({authId:An,source:"auth",level:"error",message:(0,c.default)(ii)}):Tn.authorizeOauth2WithPersistOption({auth:ji,token:ii})}};function It($n){return{type:ge,payload:$n}}var dn=function($n){return function(Qn){var Tn=Qn.authActions;Tn.authorizeOauth2($n),Tn.persistAuthorizationIfNeeded()}},Lt=function($n){return function(Qn){var qi,Zo,bo,Tn=Qn.authActions,Yr=$n.schema,ji=$n.name,ii=$n.username,Ui=$n.password,Jr=$n.passwordType,An=$n.clientId,hn=$n.clientSecret,qr={grant_type:"password",scope:$n.scopes.join(" "),username:ii,password:Ui},Ri={};switch(Jr){case"request-body":qi=qr,bo=hn,(Zo=An)&&(0,g.default)(qi,{client_id:Zo}),bo&&(0,g.default)(qi,{client_secret:bo});break;case"basic":Ri.Authorization="Basic "+(0,P.r3)(An+":"+hn);break;default:console.warn("Warning: invalid passwordType ".concat(Jr," was passed, not including client id and secret"))}return Tn.authorizeRequest({body:(0,P.GZ)(qr),url:Yr.get("tokenUrl"),name:ji,headers:Ri,query:{},auth:$n})}},Dn=function($n){return function(Qn){var Tn=Qn.authActions,Yr=$n.schema,ji=$n.scopes,ii=$n.name,An={Authorization:"Basic "+(0,P.r3)($n.clientId+":"+$n.clientSecret)},hn={grant_type:"client_credentials",scope:ji.join(" ")};return Tn.authorizeRequest({body:(0,P.GZ)(hn),name:ii,url:Yr.get("tokenUrl"),auth:$n,headers:An})}},Mn=function($n){var Qn=$n.auth,Tn=$n.redirectUrl;return function(Yr){var ii=Qn.schema,Ui=Qn.name;return Yr.authActions.authorizeRequest({body:(0,P.GZ)({grant_type:"authorization_code",code:Qn.code,client_id:Qn.clientId,client_secret:Qn.clientSecret,redirect_uri:Tn,code_verifier:Qn.codeVerifier}),name:Ui,url:ii.get("tokenUrl"),auth:Qn})}},$r=function($n){var Qn=$n.auth,Tn=$n.redirectUrl;return function(Yr){var ji=Yr.authActions,ii=Qn.schema,Ui=Qn.name,Jr=Qn.clientId,hn=Qn.codeVerifier,qr={Authorization:"Basic "+(0,P.r3)(Jr+":"+Qn.clientSecret)};return ji.authorizeRequest({body:(0,P.GZ)({grant_type:"authorization_code",code:Qn.code,client_id:Jr,redirect_uri:Tn,code_verifier:hn}),name:Ui,url:ii.get("tokenUrl"),auth:Qn,headers:qr})}},ur=function($n){return function(Qn){var Tn,Yr=Qn.fn,ji=Qn.getConfigs,ii=Qn.authActions,Ui=Qn.errActions,Jr=Qn.oas3Selectors,An=Qn.specSelectors,qr=$n.body,Ri=$n.query,qi=void 0===Ri?{}:Ri,Zo=$n.headers,bo=void 0===Zo?{}:Zo,Ys=$n.name,Ws=$n.url,wi=$n.auth,lo=(Qn.authSelectors.getConfigs()||{}).additionalQueryStringParams;if(An.isOAS3()){var go=Jr.serverEffectiveValue(Jr.selectedServer());Tn=(0,C.default)(Ws,go,!0)}else Tn=(0,C.default)(Ws,An.url(),!0);"object"===(0,o.default)(lo)&&(Tn.query=(0,g.default)({},Tn.query,lo));var Ge=Tn.toString(),St=(0,g.default)({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},bo);Yr.fetch({url:Ge,method:"post",headers:St,query:qi,body:qr,requestInterceptor:ji().requestInterceptor,responseInterceptor:ji().responseInterceptor}).then(function(Et){var Bn=JSON.parse(Et.data);Et.ok?Bn&&Bn.error||Bn&&Bn.parseError?Ui.newAuthErr({authId:Ys,level:"error",source:"auth",message:(0,c.default)(Bn)}):ii.authorizeOauth2WithPersistOption({auth:wi,token:Bn}):Ui.newAuthErr({authId:Ys,level:"error",source:"auth",message:Et.statusText})}).catch(function(Et){var Bn=new Error(Et).message;if(Et.response&&Et.response.data){var _r=Et.response.data;try{var Gr="string"==typeof _r?JSON.parse(_r):_r;Gr.error&&(Bn+=", error: ".concat(Gr.error)),Gr.error_description&&(Bn+=", description: ".concat(Gr.error_description))}catch(xi){}}Ui.newAuthErr({authId:Ys,level:"error",source:"auth",message:Bn})})}};function Pr($n){return{type:Le,payload:$n}}function xr($n){return{type:Re,payload:$n}}var fn=function(){return function($n){var Qn=$n.authSelectors;if((0,$n.getConfigs)().persistAuthorization){var Tn=Qn.authorized();localStorage.setItem("authorized",(0,c.default)(Tn.toJS()))}}},Nn=function($n,Qn){return function(){D.Z.swaggerUIRedirectOauth2=Qn,D.Z.open($n)}}},3705:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W,preauthorizeBasic:()=>re,preauthorizeApiKey:()=>ie});var o=t(775),c=t(5527),g=t(5171),C=t(3962),D=t(5812),P=t(35),j=t(8302);function W(){return{afterLoad:function(ge){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=ge.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=(0,c.default)(ie).call(ie,null,ge),this.rootInjects.preauthorizeBasic=(0,c.default)(re).call(re,null,ge)},statePlugins:{auth:{reducers:C.default,actions:D,selectors:P},spec:{wrapActions:j}}}}function re(ge,_e,Le,Re){var ke,xe=ge.authActions.authorize,U=ge.specSelectors,pt=U.specJson,ht=(0,U.isOAS3)()?["components","securitySchemes"]:["securityDefinitions"],wt=pt().getIn((0,g.default)(ke=[]).call(ke,ht,[_e]));return wt?xe((0,o.default)({},_e,{value:{username:Le,password:Re},schema:wt.toJS()})):null}function ie(ge,_e,Le){var Re,ke=ge.authActions.authorize,xe=ge.specSelectors,U=xe.specJson,pt=(0,xe.isOAS3)()?["components","securitySchemes"]:["securityDefinitions"],ht=U().getIn((0,g.default)(Re=[]).call(Re,pt,[_e]));return ht?ke((0,o.default)({},_e,{value:Le,schema:ht.toJS()})):null}},3962:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o,c=t(775),g=t(9334),C=t(29),D=t(7512),P=t(9725),j=t(6298),W=t(5812);const re=((0,c.default)(o={},W.SHOW_AUTH_POPUP,function(ie,ge){return ie.set("showDefinitions",ge.payload)}),(0,c.default)(o,W.AUTHORIZE,function(ie,ge){var _e,Re=(0,P.fromJS)(ge.payload),ke=ie.get("authorized")||(0,P.Map)();return(0,C.default)(_e=Re.entrySeq()).call(_e,function(xe){var U=(0,g.default)(xe,2),pt=U[0],ht=U[1];if(!(0,j.Wl)(ht.getIn))return ie.set("authorized",ke);var wt=ht.getIn(["schema","type"]);if("apiKey"===wt||"http"===wt)ke=ke.set(pt,ht);else if("basic"===wt){var It=ht.getIn(["value","username"]),dn=ht.getIn(["value","password"]);ke=(ke=ke.setIn([pt,"value"],{username:It,header:"Basic "+(0,j.r3)(It+":"+dn)})).setIn([pt,"schema"],ht.get("schema"))}}),ie.set("authorized",ke)}),(0,c.default)(o,W.AUTHORIZE_OAUTH2,function(ie,ge){var _e,Le=ge.payload,Re=Le.auth;Re.token=(0,D.default)({},Le.token),_e=(0,P.fromJS)(Re);var xe=ie.get("authorized")||(0,P.Map)();return xe=xe.set(_e.get("name"),_e),ie.set("authorized",xe)}),(0,c.default)(o,W.LOGOUT,function(ie,ge){var _e=ge.payload,Le=ie.get("authorized").withMutations(function(Re){(0,C.default)(_e).call(_e,function(ke){Re.delete(ke)})});return ie.set("authorized",Le)}),(0,c.default)(o,W.CONFIGURE_AUTH,function(ie,ge){return ie.set("configs",ge.payload)}),(0,c.default)(o,W.RESTORE_AUTHORIZATION,function(ie,ge){return ie.set("authorized",(0,P.fromJS)(ge.payload.authorized))}),o)},35:(n,s,t)=>{t.r(s),t.d(s,{shownDefinitions:()=>ge,definitionsToAuthorize:()=>_e,getDefinitionsByNames:()=>Le,definitionsForRequirements:()=>Re,authorized:()=>ke,isAuthorized:()=>xe,getConfigs:()=>U});var o=t(9334),c=t(29),g=t(6145),C=t(9963),D=t(8818),P=t(2565),j=t(2740),W=t(8639),re=t(9725),ie=function(pt){return pt},ge=(0,W.createSelector)(ie,function(pt){return pt.get("showDefinitions")}),_e=(0,W.createSelector)(ie,function(){return function(pt){var ht,wt=pt.specSelectors.securityDefinitions()||(0,re.Map)({}),It=(0,re.List)();return(0,c.default)(ht=wt.entrySeq()).call(ht,function(dn){var Lt=(0,o.default)(dn,2),Dn=Lt[0],Mn=Lt[1],$r=(0,re.Map)();$r=$r.set(Dn,Mn),It=It.push($r)}),It}}),Le=function(pt,ht){return function(wt){var It,dn=wt.specSelectors;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");var Lt=dn.securityDefinitions(),Dn=(0,re.List)();return(0,c.default)(It=ht.valueSeq()).call(It,function(Mn){var $r,ur=(0,re.Map)();(0,c.default)($r=Mn.entrySeq()).call($r,function(Pr){var xr,fn,Nn=(0,o.default)(Pr,2),$n=Nn[0],Qn=Nn[1],Tn=Lt.get($n);"oauth2"===Tn.get("type")&&Qn.size&&(xr=Tn.get("scopes"),(0,c.default)(fn=xr.keySeq()).call(fn,function(Yr){Qn.contains(Yr)||(xr=xr.delete(Yr))}),Tn=Tn.set("allowedScopes",xr)),ur=ur.set($n,Tn)}),Dn=Dn.push(ur)}),Dn}},Re=function(pt){var ht=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,re.List)();return function(wt){var It=wt.authSelectors.definitionsToAuthorize()||(0,re.List)();return(0,g.default)(It).call(It,function(dn){return(0,C.default)(ht).call(ht,function(Lt){return Lt.get(dn.keySeq().first())})})}},ke=(0,W.createSelector)(ie,function(pt){return pt.get("authorized")||(0,re.Map)()}),xe=function(pt,ht){return function(wt){var It,dn=wt.authSelectors.authorized();return re.List.isList(ht)?!!(0,g.default)(It=ht.toJS()).call(It,function(Lt){var Dn,Mn;return-1===(0,D.default)(Dn=(0,P.default)(Mn=(0,j.default)(Lt)).call(Mn,function($r){return!!dn.get($r)})).call(Dn,!1)}).length:null}},U=(0,W.createSelector)(ie,function(pt){return pt.get("configs")})},8302:(n,s,t)=>{t.r(s),t.d(s,{execute:()=>c});var o=t(1013),c=function(g,C){var D=C.authSelectors,P=C.specSelectors;return function(j){var W=j.path,re=j.method,ie=j.operation,ge=j.extras,_e={authorized:D.authorized()&&D.authorized().toJS(),definitions:P.securityDefinitions()&&P.securityDefinitions().toJS(),specSecurity:P.security()&&P.security().toJS()};return g((0,o.default)({path:W,method:re,operation:ie,securities:_e},ge))}}},714:(n,s,t)=>{t.r(s),t.d(s,{UPDATE_CONFIGS:()=>c,TOGGLE_CONFIGS:()=>g,update:()=>C,toggle:()=>D,loaded:()=>P});var o=t(775),c="configs_update",g="configs_toggle";function C(j,W){return{type:c,payload:(0,o.default)({},j,W)}}function D(j){return{type:g,payload:j}}var P=function(){return function(j){var re=j.authActions;if((0,j.getConfigs)().persistAuthorization){var ie=localStorage.getItem("authorized");ie&&re.restoreAuthorization({authorized:JSON.parse(ie)})}}}},2256:(n,s,t)=>{t.r(s),t.d(s,{parseYamlConfig:()=>c});var o=t(626),c=function(g,C){try{return o.default.load(g)}catch(D){return C&&C.errActions.newThrownErr(new Error(D)),{}}}},1661:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W});var o=t(5163),c=t(2256),g=t(714),C=t(2698),D=t(9018),P=t(7743),j={getLocalConfig:function(){return(0,c.parseYamlConfig)(o)}};function W(){return{statePlugins:{spec:{actions:C,selectors:j},configs:{reducers:P.default,actions:g,selectors:D}}}}},7743:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o,c=t(775),g=t(9725),C=t(714);const D=((0,c.default)(o={},C.UPDATE_CONFIGS,function(P,j){return P.merge((0,g.fromJS)(j.payload))}),(0,c.default)(o,C.TOGGLE_CONFIGS,function(P,j){var W=j.payload,re=P.get(W);return P.set(W,!re)}),o)},9018:(n,s,t)=>{t.r(s),t.d(s,{get:()=>c});var o=t(4163),c=function(g,C){return g.getIn((0,o.default)(C)?C:[C])}},2698:(n,s,t)=>{t.r(s),t.d(s,{downloadConfig:()=>c,getConfigByUrl:()=>g});var o=t(2256),c=function(C){return function(D){return(0,D.fn.fetch)(C)}},g=function(C,D){return function(P){var j=P.specActions;if(C)return j.downloadConfig(C).then(W,W);function W(re){re instanceof Error||re.status>=400?(j.updateLoadingStatus("failedConfig"),j.updateLoadingStatus("failedConfig"),j.updateUrl(""),console.error(re.statusText+" "+C.url),D(null)):D((0,o.parseYamlConfig)(re.text))}}}},1970:(n,s,t)=>{t.r(s),t.d(s,{setHash:()=>o});var o=function(c){return c?history.pushState(null,null,"#".concat(c)):window.location.hash=""}},4980:(n,s,t)=>{t.r(s),t.d(s,{default:()=>C});var o=t(5858),c=t(877),g=t(4584);function C(){return[o.default,{statePlugins:{configs:{wrapActions:{loaded:function(D,P){return function(){D.apply(void 0,arguments);var j=decodeURIComponent(window.location.hash);P.layoutActions.parseDeepLinkHash(j)}}}}},wrapComponents:{operation:c.default,OperationTag:g.default}}]}},5858:(n,s,t)=>{t.r(s),t.d(s,{clearScrollTo:()=>wt,default:()=>It,parseDeepLinkHash:()=>U,readyToScroll:()=>pt,scrollTo:()=>xe,scrollToElement:()=>ht,show:()=>ke});var o=t(775),c=t(9334),g=t(4163),C=t(5171),D=t(8136),P=t(2565),j=t(8818),W=t(1970);const re=(t.d(Lt={},{default:()=>ZR()}),Lt);var Lt,ie,ge=t(6298),_e=t(9725),Le="layout_scroll_to",Re="layout_clear_scroll",ke=function(dn,Lt){var Dn=Lt.getConfigs,Mn=Lt.layoutSelectors;return function(){for(var $r=arguments.length,ur=new Array($r),Pr=0;Pr<$r;Pr++)ur[Pr]=arguments[Pr];if(dn.apply(void 0,ur),Dn().deepLinking)try{var xr=ur[0],fn=ur[1];xr=(0,g.default)(xr)?xr:[xr];var Nn=Mn.urlHashArrayFromIsShownKey(xr);if(!Nn.length)return;var $n,Qn=(0,c.default)(Nn,2),Tn=Qn[0],Yr=Qn[1];if(!fn)return(0,W.setHash)("/");2===Nn.length?(0,W.setHash)((0,ge.oJ)((0,C.default)($n="/".concat(encodeURIComponent(Tn),"/")).call($n,encodeURIComponent(Yr)))):1===Nn.length&&(0,W.setHash)((0,ge.oJ)("/".concat(encodeURIComponent(Tn))))}catch(ji){console.error(ji)}}},xe=function(dn){return{type:Le,payload:(0,g.default)(dn)?dn:[dn]}},U=function(dn){return function(Lt){var Dn=Lt.layoutActions,Mn=Lt.layoutSelectors;if((0,Lt.getConfigs)().deepLinking&&dn){var $r,ur=(0,D.default)(dn).call(dn,1);"!"===ur[0]&&(ur=(0,D.default)(ur).call(ur,1)),"/"===ur[0]&&(ur=(0,D.default)(ur).call(ur,1));var Pr=(0,P.default)($r=ur.split("/")).call($r,function(ii){return ii||""}),xr=Mn.isShownKeyFromUrlHashArray(Pr),fn=(0,c.default)(xr,3),$n=fn[1],Qn=void 0===$n?"":$n,Tn=fn[2],Yr=void 0===Tn?"":Tn;if("operations"===fn[0]){var ji=Mn.isShownKeyFromUrlHashArray([Qn]);(0,j.default)(Qn).call(Qn,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),Dn.show((0,P.default)(ji).call(ji,function(ii){return ii.replace(/_/g," ")}),!0)),Dn.show(ji,!0)}((0,j.default)(Qn).call(Qn,"_")>-1||(0,j.default)(Yr).call(Yr,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),Dn.show((0,P.default)(xr).call(xr,function(ii){return ii.replace(/_/g," ")}),!0)),Dn.show(xr,!0),Dn.scrollTo(xr)}}},pt=function(dn,Lt){return function(Dn){var Mn=Dn.layoutSelectors.getScrollToKey();_e.default.is(Mn,(0,_e.fromJS)(dn))&&(Dn.layoutActions.scrollToElement(Lt),Dn.layoutActions.clearScrollTo())}},ht=function(dn,Lt){return function(Dn){try{Lt=Lt||Dn.fn.getScrollParent(dn),re.default.createScroller(Lt).to(dn)}catch(Mn){console.error(Mn)}}},wt=function(){return{type:Re}};const It={fn:{getScrollParent:function(dn,Lt){var Dn=document.documentElement,Mn=getComputedStyle(dn),$r="absolute"===Mn.position,ur=Lt?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===Mn.position)return Dn;for(var Pr=dn;Pr=Pr.parentElement;)if(Mn=getComputedStyle(Pr),(!$r||"static"!==Mn.position)&&ur.test(Mn.overflow+Mn.overflowY+Mn.overflowX))return Pr;return Dn}},statePlugins:{layout:{actions:{scrollToElement:ht,scrollTo:xe,clearScrollTo:wt,readyToScroll:pt,parseDeepLinkHash:U},selectors:{getScrollToKey:function(dn){return dn.get("scrollToKey")},isShownKeyFromUrlHashArray:function(dn,Lt){var Dn=(0,c.default)(Lt,2),Mn=Dn[0],$r=Dn[1];return $r?["operations",Mn,$r]:Mn?["operations-tag",Mn]:[]},urlHashArrayFromIsShownKey:function(dn,Lt){var Dn=(0,c.default)(Lt,3),Mn=Dn[0],$r=Dn[1];return"operations"==Mn?[$r,Dn[2]]:"operations-tag"==Mn?[$r]:[]}},reducers:(ie={},(0,o.default)(ie,Le,function(dn,Lt){return dn.set("scrollToKey",_e.default.fromJS(Lt.payload))}),(0,o.default)(ie,Re,function(dn){return dn.delete("scrollToKey")}),ie),wrapActions:{show:ke}}}}},4584:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o=t(7344),c=t(8656),g=t(6340),C=t(9972),D=t(5416),P=t(775),j=t(5171),W=t(810);t(5053);const re=function(ie,ge){return function(_e){(0,C.default)(Re,_e);var Le=(0,D.default)(Re);function Re(){var ke,xe;(0,o.default)(this,Re);for(var U=arguments.length,pt=new Array(U),ht=0;ht<U;ht++)pt[ht]=arguments[ht];return xe=Le.call.apply(Le,(0,j.default)(ke=[this]).call(ke,pt)),(0,P.default)((0,g.default)(xe),"onLoad",function(wt){ge.layoutActions.readyToScroll(["operations-tag",xe.props.tag],wt)}),xe}return(0,c.default)(Re,[{key:"render",value:function(){return W.default.createElement("span",{ref:this.onLoad},W.default.createElement(ie,this.props))}}]),Re}(W.default.Component)}},877:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o=t(7344),c=t(8656),g=t(6340),C=t(9972),D=t(5416),P=t(775),j=t(5171),W=t(810);t(9569);const re=function(ie,ge){return function(_e){(0,C.default)(Re,_e);var Le=(0,D.default)(Re);function Re(){var ke,xe;(0,o.default)(this,Re);for(var U=arguments.length,pt=new Array(U),ht=0;ht<U;ht++)pt[ht]=arguments[ht];return xe=Le.call.apply(Le,(0,j.default)(ke=[this]).call(ke,pt)),(0,P.default)((0,g.default)(xe),"onLoad",function(wt){var It=xe.props.operation,dn=It.toObject(),Lt=dn.tag,Dn=dn.operationId,Mn=It.toObject().isShownKey;ge.layoutActions.readyToScroll(Mn=Mn||["operations",Lt,Dn],wt)}),xe}return(0,c.default)(Re,[{key:"render",value:function(){return W.default.createElement("span",{ref:this.onLoad},W.default.createElement(ie,this.props))}}]),Re}(W.default.Component)}},8011:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o=t(7512),c=t(3769),g=t(5171),C=t(8818),D=t(313),P=t(8639),j=t(9725),W=t(7504);function re(ie){var ge=ie.fn;return{statePlugins:{spec:{actions:{download:function(_e){return function(Le){var Re=Le.errActions,ke=Le.specSelectors,xe=Le.specActions,pt=ge.fetch,ht=(0,Le.getConfigs)();function wt(It){if(It instanceof Error||It.status>=400)return xe.updateLoadingStatus("failed"),Re.newThrownErr((0,o.default)(new Error((It.message||It.statusText)+" "+_e),{source:"fetch"})),void(!It.status&&It instanceof Error&&function(){try{var dn;if("URL"in W.Z?dn=new c.default(_e):(dn=document.createElement("a")).href=_e,"https:"!==dn.protocol&&"https:"===W.Z.location.protocol){var Lt=(0,o.default)(new Error("Possible mixed-content issue? The page was loaded over https:// but a ".concat(dn.protocol,"// URL was specified. Check that you are not attempting to load mixed content.")),{source:"fetch"});return void Re.newThrownErr(Lt)}if(dn.origin!==W.Z.location.origin){var Dn,Mn=(0,o.default)(new Error((0,g.default)(Dn="Possible cross-origin (CORS) issue? The URL origin (".concat(dn.origin,") does not match the page (")).call(Dn,W.Z.location.origin,"). Check the server returns the correct 'Access-Control-Allow-*' headers.")),{source:"fetch"});Re.newThrownErr(Mn)}}catch($r){return}}());xe.updateLoadingStatus("success"),xe.updateSpec(It.text),ke.url()!==_e&&xe.updateUrl(_e)}_e=_e||ke.url(),xe.updateLoadingStatus("loading"),Re.clear({source:"fetch"}),pt({url:_e,loadSpec:!0,requestInterceptor:ht.requestInterceptor||function(It){return It},responseInterceptor:ht.responseInterceptor||function(It){return It},credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(wt,wt)}},updateLoadingStatus:function(_e){var Le,Re=[null,"loading","failed","success","failedConfig"];return-1===(0,C.default)(Re).call(Re,_e)&&console.error((0,g.default)(Le="Error: ".concat(_e," is not one of ")).call(Le,(0,D.default)(Re))),{type:"spec_update_loading_status",payload:_e}}},reducers:{spec_update_loading_status:function(_e,Le){return"string"==typeof Le.payload?_e.set("loadingStatus",Le.payload):_e}},selectors:{loadingStatus:(0,P.createSelector)(function(_e){return _e||(0,j.Map)()},function(_e){return _e.get("loadingStatus")||null})}}}}}},4966:(n,s,t)=>{t.r(s),t.d(s,{NEW_THROWN_ERR:()=>c,NEW_THROWN_ERR_BATCH:()=>g,NEW_SPEC_ERR:()=>C,NEW_SPEC_ERR_BATCH:()=>D,NEW_AUTH_ERR:()=>P,CLEAR:()=>j,CLEAR_BY:()=>W,newThrownErr:()=>re,newThrownErrBatch:()=>ie,newSpecErr:()=>ge,newSpecErrBatch:()=>_e,newAuthErr:()=>Le,clear:()=>Re,clearBy:()=>ke});var o=t(8518),c="err_new_thrown_err",g="err_new_thrown_err_batch",C="err_new_spec_err",D="err_new_spec_err_batch",P="err_new_auth_err",j="err_clear",W="err_clear_by";function re(xe){return{type:c,payload:(0,o.serializeError)(xe)}}function ie(xe){return{type:g,payload:xe}}function ge(xe){return{type:C,payload:xe}}function _e(xe){return{type:D,payload:xe}}function Le(xe){return{type:P,payload:xe}}function Re(){var xe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:j,payload:xe}}function ke(){var xe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!0};return{type:W,payload:xe}}},6808:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o=t(6145),c=t(2565);const g=(t.d(j={},{default:()=>Fx()}),j);var j,C=[t(2392),t(1835)];function D(P){var j,W={jsSpec:{}},re=(0,g.default)(C,function(ie,ge){try{var _e=ge.transform(ie,W);return(0,o.default)(_e).call(_e,function(Le){return!!Le})}catch(Le){return console.error("Transformer error:",Le),ie}},P);return(0,c.default)(j=(0,o.default)(re).call(re,function(ie){return!!ie})).call(j,function(ie){return!ie.get("line")&&ie.get("path"),ie})}},2392:(n,s,t)=>{t.r(s),t.d(s,{transform:()=>D});var o=t(2565),c=t(8818),g=t(8136),C=t(6785);function D(P){return(0,o.default)(P).call(P,function(j){var W,Re,re="is not of a type(s)",ie=(0,c.default)(W=j.get("message")).call(W,re);if(ie>-1){var ge,_e,Le=(0,g.default)(ge=j.get("message")).call(ge,ie+re.length).split(",");return j.set("message",(0,g.default)(_e=j.get("message")).call(_e,0,ie)+(0,C.default)(Re=Le).call(Re,function(ke,xe,U,pt){return U===pt.length-1&&pt.length>1?ke+"or "+xe:pt[U+1]&&pt.length>2?ke+xe+", ":pt[U+1]?ke+xe+" ":ke+xe},"should be a"))}return j})}},1835:(n,s,t)=>{function o(c,g){return c}t.r(s),t.d(s,{transform:()=>o}),t(2565),t(8818),t(9908),t(9725)},7793:(n,s,t)=>{t.r(s),t.d(s,{default:()=>C});var o=t(3527),c=t(4966),g=t(7667);function C(D){return{statePlugins:{err:{reducers:(0,o.default)(D),actions:c,selectors:g}}}}},3527:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ge});var o=t(775),c=t(7512),g=t(2565),C=t(5171),D=t(6145),P=t(7930),j=t(4966),W=t(9725),re=t(6808),ie={line:0,level:"error",message:"Unknown error"};function ge(){var _e;return(0,o.default)(_e={},j.NEW_THROWN_ERR,function(Le,Re){var xe=(0,c.default)(ie,Re.payload,{type:"thrown"});return Le.update("errors",function(U){return(U||(0,W.List)()).push((0,W.fromJS)(xe))}).update("errors",function(U){return(0,re.default)(U)})}),(0,o.default)(_e,j.NEW_THROWN_ERR_BATCH,function(Le,Re){var ke=Re.payload;return ke=(0,g.default)(ke).call(ke,function(xe){return(0,W.fromJS)((0,c.default)(ie,xe,{type:"thrown"}))}),Le.update("errors",function(xe){var U;return(0,C.default)(U=xe||(0,W.List)()).call(U,(0,W.fromJS)(ke))}).update("errors",function(xe){return(0,re.default)(xe)})}),(0,o.default)(_e,j.NEW_SPEC_ERR,function(Le,Re){var xe=(0,W.fromJS)(Re.payload);return xe=xe.set("type","spec"),Le.update("errors",function(U){return(U||(0,W.List)()).push((0,W.fromJS)(xe)).sortBy(function(pt){return pt.get("line")})}).update("errors",function(U){return(0,re.default)(U)})}),(0,o.default)(_e,j.NEW_SPEC_ERR_BATCH,function(Le,Re){var ke=Re.payload;return ke=(0,g.default)(ke).call(ke,function(xe){return(0,W.fromJS)((0,c.default)(ie,xe,{type:"spec"}))}),Le.update("errors",function(xe){var U;return(0,C.default)(U=xe||(0,W.List)()).call(U,(0,W.fromJS)(ke))}).update("errors",function(xe){return(0,re.default)(xe)})}),(0,o.default)(_e,j.NEW_AUTH_ERR,function(Le,Re){var xe=(0,W.fromJS)((0,c.default)({},Re.payload));return xe=xe.set("type","auth"),Le.update("errors",function(U){return(U||(0,W.List)()).push((0,W.fromJS)(xe))}).update("errors",function(U){return(0,re.default)(U)})}),(0,o.default)(_e,j.CLEAR,function(Le,Re){var ke,xe=Re.payload;if(!xe||!Le.get("errors"))return Le;var U=(0,D.default)(ke=Le.get("errors")).call(ke,function(pt){var ht;return(0,P.default)(ht=pt.keySeq()).call(ht,function(wt){var It=pt.get(wt),dn=xe[wt];return!dn||It!==dn})});return Le.merge({errors:U})}),(0,o.default)(_e,j.CLEAR_BY,function(Le,Re){var ke,xe=Re.payload;if(!xe||"function"!=typeof xe)return Le;var U=(0,D.default)(ke=Le.get("errors")).call(ke,function(pt){return xe(pt)});return Le.merge({errors:U})}),_e}},7667:(n,s,t)=>{t.r(s),t.d(s,{allErrors:()=>g,lastError:()=>C});var o=t(9725),c=t(8639),g=(0,c.createSelector)(function(D){return D},function(D){return D.get("errors",(0,o.List)())}),C=(0,c.createSelector)(g,function(D){return D.last()})},9978:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(4309);function c(){return{fn:{opsFilter:o.default}}}},4309:(n,s,t)=>{t.r(s),t.d(s,{default:()=>g});var o=t(6145),c=t(8818);function g(C,D){return(0,o.default)(C).call(C,function(P,j){return-1!==(0,c.default)(j).call(j,D)})}},5474:(n,s,t)=>{t.r(s),t.d(s,{UPDATE_LAYOUT:()=>c,UPDATE_FILTER:()=>g,UPDATE_MODE:()=>C,SHOW:()=>D,updateLayout:()=>P,updateFilter:()=>j,show:()=>W,changeMode:()=>re});var o=t(6298),c="layout_update_layout",g="layout_update_filter",C="layout_update_mode",D="layout_show";function P(ie){return{type:c,payload:ie}}function j(ie){return{type:g,payload:ie}}function W(ie){var ge=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return ie=(0,o.AF)(ie),{type:D,payload:{thing:ie,shown:ge}}}function re(ie){var ge=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return ie=(0,o.AF)(ie),{type:C,payload:{thing:ie,mode:ge}}}},6821:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o=t(5672),c=t(5474),g=t(4400),C=t(8989);function D(){return{statePlugins:{layout:{reducers:o.default,actions:c,selectors:g},spec:{wrapSelectors:C}}}}},5672:(n,s,t)=>{t.r(s),t.d(s,{default:()=>P});var o,c=t(775),g=t(5171),C=t(9725),D=t(5474);const P=((0,c.default)(o={},D.UPDATE_LAYOUT,function(j,W){return j.set("layout",W.payload)}),(0,c.default)(o,D.UPDATE_FILTER,function(j,W){return j.set("filter",W.payload)}),(0,c.default)(o,D.SHOW,function(j,W){var re=W.payload.shown,ie=(0,C.fromJS)(W.payload.thing);return j.update("shown",(0,C.fromJS)({}),function(ge){return ge.set(ie,re)})}),(0,c.default)(o,D.UPDATE_MODE,function(j,W){var re,ie=W.payload.thing,ge=W.payload.mode;return j.setIn((0,g.default)(re=["modes"]).call(re,ie),(ge||"")+"")}),o)},4400:(n,s,t)=>{t.r(s),t.d(s,{current:()=>P,currentFilter:()=>j,isShown:()=>W,whatMode:()=>re,showSummary:()=>ie});var o=t(2691),c=t(5171),g=t(8639),C=t(6298),D=t(9725),P=function(ge){return ge.get("layout")},j=function(ge){return ge.get("filter")},W=function(ge,_e,Le){return _e=(0,C.AF)(_e),ge.get("shown",(0,D.fromJS)({})).get((0,D.fromJS)(_e),Le)},re=function(ge,_e){var Le,Re=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return _e=(0,C.AF)(_e),ge.getIn((0,c.default)(Le=["modes"]).call(Le,(0,o.default)(_e)),Re)},ie=(0,g.createSelector)(function(ge){return ge},function(ge){return!W(ge,"editor")})},8989:(n,s,t)=>{t.r(s),t.d(s,{taggedOperations:()=>g});var o=t(5171),c=t(8136),g=function(C,D){return function(P){for(var j,W=arguments.length,re=new Array(W>1?W-1:0),ie=1;ie<W;ie++)re[ie-1]=arguments[ie];var ge=C.apply(void 0,(0,o.default)(j=[P]).call(j,re)),_e=D.getSystem(),Le=_e.fn,Re=_e.layoutSelectors,ke=_e.getConfigs,xe=ke(),U=xe.maxDisplayedTags,pt=Re.currentFilter();return pt&&!0!==pt&&"true"!==pt&&"false"!==pt&&(ge=Le.opsFilter(ge,pt)),U&&!isNaN(U)&&U>=0&&(ge=(0,c.default)(ge).call(ge,0,U)),ge}}},9150:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(5527);function c(g){var D={debug:0,info:1,log:2,warn:3,error:4},P=function(ie){return D[ie]||-1},W=P(g.configs.logLevel);function re(ie){for(var ge,_e=arguments.length,Le=new Array(_e>1?_e-1:0),Re=1;Re<_e;Re++)Le[Re-1]=arguments[Re];P(ie)>=W&&(ge=console)[ie].apply(ge,Le)}return re.warn=(0,o.default)(re).call(re,null,"warn"),re.error=(0,o.default)(re).call(re,null,"error"),re.info=(0,o.default)(re).call(re,null,"info"),re.debug=(0,o.default)(re).call(re,null,"debug"),{rootInjects:{log:re}}}},7002:(n,s,t)=>{t.r(s),t.d(s,{UPDATE_SELECTED_SERVER:()=>o,UPDATE_REQUEST_BODY_VALUE:()=>c,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>g,UPDATE_REQUEST_BODY_INCLUSION:()=>C,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>D,UPDATE_REQUEST_CONTENT_TYPE:()=>P,UPDATE_RESPONSE_CONTENT_TYPE:()=>j,UPDATE_SERVER_VARIABLE_VALUE:()=>W,SET_REQUEST_BODY_VALIDATE_ERROR:()=>re,CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>ie,CLEAR_REQUEST_BODY_VALUE:()=>ge,setSelectedServer:()=>_e,setRequestBodyValue:()=>Le,setRetainRequestBodyValueFlag:()=>Re,setRequestBodyInclusion:()=>ke,setActiveExamplesMember:()=>xe,setRequestContentType:()=>U,setResponseContentType:()=>pt,setServerVariableValue:()=>ht,setRequestBodyValidateError:()=>wt,clearRequestBodyValidateError:()=>It,initRequestBodyValidateError:()=>dn,clearRequestBodyValue:()=>Lt});var o="oas3_set_servers",c="oas3_set_request_body_value",g="oas3_set_request_body_retain_flag",C="oas3_set_request_body_inclusion",D="oas3_set_active_examples_member",P="oas3_set_request_content_type",j="oas3_set_response_content_type",W="oas3_set_server_variable_value",re="oas3_set_request_body_validate_error",ie="oas3_clear_request_body_validate_error",ge="oas3_clear_request_body_value";function _e(Dn,Mn){return{type:o,payload:{selectedServerUrl:Dn,namespace:Mn}}}function Le(Dn){return{type:c,payload:{value:Dn.value,pathMethod:Dn.pathMethod}}}var Re=function(Dn){return{type:g,payload:{value:Dn.value,pathMethod:Dn.pathMethod}}};function ke(Dn){return{type:C,payload:{value:Dn.value,pathMethod:Dn.pathMethod,name:Dn.name}}}function xe(Dn){return{type:D,payload:{name:Dn.name,pathMethod:Dn.pathMethod,contextType:Dn.contextType,contextName:Dn.contextName}}}function U(Dn){return{type:P,payload:{value:Dn.value,pathMethod:Dn.pathMethod}}}function pt(Dn){return{type:j,payload:{value:Dn.value,path:Dn.path,method:Dn.method}}}function ht(Dn){return{type:W,payload:{server:Dn.server,namespace:Dn.namespace,key:Dn.key,val:Dn.val}}}var wt=function(Dn){return{type:re,payload:{path:Dn.path,method:Dn.method,validationErrors:Dn.validationErrors}}},It=function(Dn){return{type:ie,payload:{path:Dn.path,method:Dn.method}}},dn=function(Dn){var Mn=Dn.pathMethod;return{type:ie,payload:{path:Mn[0],method:Mn[1]}}},Lt=function(Dn){return{type:ge,payload:{pathMethod:Dn.pathMethod}}}},3723:(n,s,t)=>{t.r(s),t.d(s,{definitionsToAuthorize:()=>ge});var ie,o=t(775),c=t(9334),g=t(5171),C=t(29),D=t(6145),P=t(6785),j=t(8639),W=t(9725),re=t(7779),ge=(ie=(0,j.createSelector)(function(_e){return _e},function(_e){return _e.specSelectors.securityDefinitions()},function(_e,Le){var Re,ke=(0,W.List)();return Le&&(0,C.default)(Re=Le.entrySeq()).call(Re,function(xe){var U,pt=(0,c.default)(xe,2),ht=pt[0],wt=pt[1],It=wt.get("type");if("oauth2"===It&&(0,C.default)(U=wt.get("flows").entrySeq()).call(U,function(Dn){var Mn=(0,c.default)(Dn,2),ur=Mn[1],Pr=(0,W.fromJS)({flow:Mn[0],authorizationUrl:ur.get("authorizationUrl"),tokenUrl:ur.get("tokenUrl"),scopes:ur.get("scopes"),type:wt.get("type"),description:wt.get("description")});ke=ke.push(new W.Map((0,o.default)({},ht,(0,D.default)(Pr).call(Pr,function(xr){return void 0!==xr}))))}),"http"!==It&&"apiKey"!==It||(ke=ke.push(new W.Map((0,o.default)({},ht,wt)))),"openIdConnect"===It&&wt.get("openIdConnectData")){var dn=wt.get("openIdConnectData"),Lt=dn.get("grant_types_supported")||["authorization_code","implicit"];(0,C.default)(Lt).call(Lt,function(Dn){var Mn,$r=dn.get("scopes_supported")&&(0,P.default)(Mn=dn.get("scopes_supported")).call(Mn,function(Pr,xr){return Pr.set(xr,"")},new W.Map),ur=(0,W.fromJS)({flow:Dn,authorizationUrl:dn.get("authorization_endpoint"),tokenUrl:dn.get("token_endpoint"),scopes:$r,type:"oauth2",openIdConnectUrl:wt.get("openIdConnectUrl")});ke=ke.push(new W.Map((0,o.default)({},ht,(0,D.default)(ur).call(ur,function(Pr){return void 0!==Pr}))))})}}),ke}),function(_e,Le){return function(){for(var Re=Le.getSystem().specSelectors.specJson(),ke=arguments.length,xe=new Array(ke),U=0;U<ke;U++)xe[U]=arguments[U];if((0,re.isOAS3)(Re)){var pt,ht=Le.getState().getIn(["spec","resolvedSubtrees","components","securitySchemes"]);return ie.apply(void 0,(0,g.default)(pt=[Le,ht]).call(pt,xe))}return _e.apply(void 0,xe)}})},3427:(n,s,t)=>{t.r(s),t.d(s,{default:()=>P});var o=t(863),c=t(9334),g=t(2565),C=t(810),D=(t(5053),t(9569),t(9725));const P=function(j){var W,re=j.callbacks,ge=j.specPath,_e=(0,j.getComponent)("OperationContainer",!0);if(!re)return C.default.createElement("span",null,"No callbacks");var Le=(0,g.default)(W=re.entrySeq()).call(W,function(Re){var ke,xe=(0,c.default)(Re,2),U=xe[0],pt=xe[1];return C.default.createElement("div",{key:U},C.default.createElement("h2",null,U),(0,g.default)(ke=pt.entrySeq()).call(ke,function(ht){var wt,It=(0,c.default)(ht,2),dn=It[0];return"$$ref"===dn?null:C.default.createElement("div",{key:dn},(0,g.default)(wt=It[1].entrySeq()).call(wt,function(Dn){var Mn=(0,c.default)(Dn,2),$r=Mn[0];if("$$ref"===$r)return null;var Pr=(0,D.fromJS)({operation:Mn[1]});return C.default.createElement(_e,(0,o.default)({},j,{op:Pr,key:$r,tag:"",method:$r,path:dn,specPath:ge.push(U,dn,$r),allowTryItOut:!1}))}))}))});return C.default.createElement("div",null,Le)}},6775:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ge});var o=t(7344),c=t(8656),g=t(6340),C=t(9972),D=t(5416),P=t(775),j=t(7512),W=t(6145),re=t(2565),ie=t(810),ge=(t(5053),function(_e){(0,C.default)(Re,_e);var Le=(0,D.default)(Re);function Re(ke,xe){var U;(0,o.default)(this,Re),U=Le.call(this,ke,xe),(0,P.default)((0,g.default)(U),"onChange",function(dn){var Lt=U.props.onChange,Dn=dn.target,Mn=Dn.value,$r=Dn.name,ur=(0,j.default)({},U.state.value);$r?ur[$r]=Mn:ur=Mn,U.setState({value:ur},function(){return Lt(U.state)})});var pt=U.props,ht=pt.name,wt=pt.schema,It=U.getValue();return U.state={name:ht,schema:wt,value:It},U}return(0,c.default)(Re,[{key:"getValue",value:function(){var ke=this.props,U=ke.authorized;return U&&U.getIn([ke.name,"value"])}},{key:"render",value:function(){var ke,xe,U=this.props,pt=U.schema,ht=U.getComponent,wt=U.errSelectors,It=U.name,dn=ht("Input"),Lt=ht("Row"),Dn=ht("Col"),Mn=ht("authError"),$r=ht("Markdown",!0),ur=ht("JumpToPath",!0),Pr=(pt.get("scheme")||"").toLowerCase(),xr=this.getValue(),fn=(0,W.default)(ke=wt.allErrors()).call(ke,function(Qn){return Qn.get("authId")===It});if("basic"===Pr){var Nn,$n=xr?xr.get("username"):null;return ie.default.createElement("div",null,ie.default.createElement("h4",null,ie.default.createElement("code",null,It||pt.get("name")),"\xa0 (http, Basic)",ie.default.createElement(ur,{path:["securityDefinitions",It]})),$n&&ie.default.createElement("h6",null,"Authorized"),ie.default.createElement(Lt,null,ie.default.createElement($r,{source:pt.get("description")})),ie.default.createElement(Lt,null,ie.default.createElement("label",null,"Username:"),$n?ie.default.createElement("code",null," ",$n," "):ie.default.createElement(Dn,null,ie.default.createElement(dn,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),ie.default.createElement(Lt,null,ie.default.createElement("label",null,"Password:"),$n?ie.default.createElement("code",null," ****** "):ie.default.createElement(Dn,null,ie.default.createElement(dn,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),(0,re.default)(Nn=fn.valueSeq()).call(Nn,function(Qn,Tn){return ie.default.createElement(Mn,{error:Qn,key:Tn})}))}return"bearer"===Pr?ie.default.createElement("div",null,ie.default.createElement("h4",null,ie.default.createElement("code",null,It||pt.get("name")),"\xa0 (http, Bearer)",ie.default.createElement(ur,{path:["securityDefinitions",It]})),xr&&ie.default.createElement("h6",null,"Authorized"),ie.default.createElement(Lt,null,ie.default.createElement($r,{source:pt.get("description")})),ie.default.createElement(Lt,null,ie.default.createElement("label",null,"Value:"),xr?ie.default.createElement("code",null," ****** "):ie.default.createElement(Dn,null,ie.default.createElement(dn,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),(0,re.default)(xe=fn.valueSeq()).call(xe,function(Qn,Tn){return ie.default.createElement(Mn,{error:Qn,key:Tn})})):ie.default.createElement("div",null,ie.default.createElement("em",null,ie.default.createElement("b",null,It)," HTTP authentication: unsupported scheme ","'".concat(Pr,"'")))}}]),Re}(ie.default.Component))},6467:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o=t(3427),c=t(2458),g=t(5757),C=t(6617),D=t(9928),P=t(5327),j=t(6775),W=t(6796);const re={Callbacks:o.default,HttpAuth:j.default,RequestBody:c.default,Servers:C.default,ServersContainer:D.default,RequestBodyEditor:P.default,OperationServers:W.default,operationLink:g.default}},5757:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W});var o=t(7344),c=t(8656),g=t(9972),C=t(5416),D=t(313),P=t(2565),j=t(810);t(5053),t(9569);const W=function(re){(0,g.default)(ge,re);var ie=(0,C.default)(ge);function ge(){return(0,o.default)(this,ge),ie.apply(this,arguments)}return(0,c.default)(ge,[{key:"render",value:function(){var wt,It,_e=this.props,Le=_e.link,Re=_e.name,ke=(0,_e.getComponent)("Markdown",!0),xe=Le.get("operationId")||Le.get("operationRef"),U=Le.get("parameters")&&Le.get("parameters").toJS(),pt=Le.get("description");return j.default.createElement("div",{className:"operation-link"},j.default.createElement("div",{className:"description"},j.default.createElement("b",null,j.default.createElement("code",null,Re)),pt?j.default.createElement(ke,{source:pt}):null),j.default.createElement("pre",null,"Operation `",xe,"`",j.default.createElement("br",null),j.default.createElement("br",null),"Parameters ",("string"!=typeof(wt=(0,D.default)(U,null,2))?"":(0,P.default)(It=wt.split("\n")).call(It,function(dn,Lt){return Lt>0?Array(1).join(" ")+dn:dn}).join("\n"))||"{}",j.default.createElement("br",null)))}}]),ge}(j.Component)},6796:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ie});var o=t(1013),c=t(7344),g=t(8656),C=t(6340),D=t(9972),P=t(5416),j=t(775),W=t(5171),re=t(810),ie=(t(5053),t(9569),function(ge){(0,D.default)(Le,ge);var _e=(0,P.default)(Le);function Le(){var Re,ke;(0,c.default)(this,Le);for(var xe=arguments.length,U=new Array(xe),pt=0;pt<xe;pt++)U[pt]=arguments[pt];return ke=_e.call.apply(_e,(0,W.default)(Re=[this]).call(Re,U)),(0,j.default)((0,C.default)(ke),"setSelectedServer",function(ht){var wt,It=ke.props,dn=It.path,Lt=It.method;return ke.forceUpdate(),ke.props.setSelectedServer(ht,(0,W.default)(wt="".concat(dn,":")).call(wt,Lt))}),(0,j.default)((0,C.default)(ke),"setServerVariableValue",function(ht){var wt,It=ke.props,dn=It.path,Lt=It.method;return ke.forceUpdate(),ke.props.setServerVariableValue((0,o.default)((0,o.default)({},ht),{},{namespace:(0,W.default)(wt="".concat(dn,":")).call(wt,Lt)}))}),(0,j.default)((0,C.default)(ke),"getSelectedServer",function(){var ht,wt=ke.props,dn=wt.method;return ke.props.getSelectedServer((0,W.default)(ht="".concat(wt.path,":")).call(ht,dn))}),(0,j.default)((0,C.default)(ke),"getServerVariable",function(ht,wt){var It,dn=ke.props,Dn=dn.method;return ke.props.getServerVariable({namespace:(0,W.default)(It="".concat(dn.path,":")).call(It,Dn),server:ht},wt)}),(0,j.default)((0,C.default)(ke),"getEffectiveServerValue",function(ht){var wt,It=ke.props,Lt=It.method;return ke.props.getEffectiveServerValue({server:ht,namespace:(0,W.default)(wt="".concat(It.path,":")).call(wt,Lt)})}),ke}return(0,g.default)(Le,[{key:"render",value:function(){var Re=this.props,ke=Re.operationServers,xe=Re.pathServers;if(!ke&&!xe)return null;var pt=(0,Re.getComponent)("Servers"),ht=ke||xe,wt=ke?"operation":"path";return re.default.createElement("div",{className:"opblock-section operation-servers"},re.default.createElement("div",{className:"opblock-section-header"},re.default.createElement("div",{className:"tab-header"},re.default.createElement("h4",{className:"opblock-title"},"Servers"))),re.default.createElement("div",{className:"opblock-description-wrapper"},re.default.createElement("h4",{className:"message"},"These ",wt,"-level options override the global server options."),re.default.createElement(pt,{servers:ht,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}]),Le}(re.default.Component))},5327:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ge});var o=t(7344),c=t(8656),g=t(6340),C=t(9972),D=t(5416),P=t(775),j=t(810),W=(t(5053),t(8096)),re=t(6298),ie=Function.prototype,ge=function(_e){(0,C.default)(Re,_e);var Le=(0,D.default)(Re);function Re(ke,xe){var U;return(0,o.default)(this,Re),U=Le.call(this,ke,xe),(0,P.default)((0,g.default)(U),"applyDefaultValue",function(pt){var ht=pt||U.props,wt=ht.onChange,It=ht.defaultValue;return U.setState({value:It}),wt(It)}),(0,P.default)((0,g.default)(U),"onChange",function(pt){U.props.onChange((0,re.Pz)(pt))}),(0,P.default)((0,g.default)(U),"onDomChange",function(pt){var ht=pt.target.value;U.setState({value:ht},function(){return U.onChange(ht)})}),U.state={value:(0,re.Pz)(ke.value)||ke.defaultValue},ke.onChange(ke.value),U}return(0,c.default)(Re,[{key:"UNSAFE_componentWillReceiveProps",value:function(ke){this.props.value!==ke.value&&ke.value!==this.state.value&&this.setState({value:(0,re.Pz)(ke.value)}),!ke.value&&ke.defaultValue&&this.state.value&&this.applyDefaultValue(ke)}},{key:"render",value:function(){var ke=this.props,U=ke.errors,pt=this.state.value,ht=U.size>0,wt=(0,ke.getComponent)("TextArea");return j.default.createElement("div",{className:"body-param"},j.default.createElement(wt,{className:(0,W.default)("body-param__text",{invalid:ht}),title:U.size?U.join(", "):"",value:pt,onChange:this.onDomChange}))}}]),Re}(j.PureComponent);(0,P.default)(ge,"defaultProps",{onChange:ie,userHasEditedBody:!1})},2458:(n,s,t)=>{t.r(s),t.d(s,{getDefaultRequestBodyValue:()=>ge,default:()=>_e});var o=t(9334),c=t(2565),g=t(8818),C=t(2372),D=t(5171),P=t(4163),j=t(810),W=(t(5053),t(9569),t(9725)),re=t(6298),ie=t(2518),ge=function(Le,Re,ke){var xe=Le.getIn(["content",Re]),U=xe.get("schema").toJS(),pt=void 0!==xe.get("examples"),ht=xe.get("example"),wt=pt?xe.getIn(["examples",ke,"value"]):ht,It=(0,re.xi)(U,Re,{includeWriteOnly:!0},wt);return(0,re.Pz)(It)};const _e=function(Le){var Re=Le.userHasEditedBody,ke=Le.requestBody,xe=Le.requestBodyValue,U=Le.requestBodyInclusionSetting,pt=Le.requestBodyErrors,ht=Le.getComponent,wt=Le.getConfigs,It=Le.specSelectors,dn=Le.fn,Lt=Le.contentType,Dn=Le.isExecute,Mn=Le.specPath,$r=Le.onChange,ur=Le.onChangeIncludeEmpty,Pr=Le.activeExamplesKey,xr=Le.updateActiveExamplesKey,fn=Le.setRetainRequestBodyValueFlag,Nn=function(_r){var Gr={key:_r,shouldDispatchInit:!1,defaultValue:!0};return"no value"===U.get(_r,"no value")&&(Gr.shouldDispatchInit=!0),Gr},$n=ht("Markdown",!0),Qn=ht("modelExample"),Tn=ht("RequestBodyEditor"),Yr=ht("highlightCode"),ji=ht("ExamplesSelectValueRetainer"),ii=ht("Example"),Ui=ht("ParameterIncludeEmpty"),Jr=wt().showCommonExtensions,An=ke&&ke.get("description")||null,hn=ke&&ke.get("content")||new W.OrderedMap;Lt=Lt||hn.keySeq().first()||"";var qr=hn.get(Lt,(0,W.OrderedMap)()),Ri=qr.get("schema",(0,W.OrderedMap)()),qi=qr.get("examples",null),Zo=null==qi?void 0:(0,c.default)(qi).call(qi,function(_r,Gr){var xi,Zs=null===(xi=_r)||void 0===xi?void 0:xi.get("value",null);return Zs&&(_r=_r.set("value",ge(ke,Lt,Gr),Zs)),_r});if(pt=W.List.isList(pt)?pt:(0,W.List)(),!qr.size)return null;var bo="object"===qr.getIn(["schema","type"]),Ys="binary"===qr.getIn(["schema","format"]),Ws="base64"===qr.getIn(["schema","format"]);if("application/octet-stream"===Lt||0===(0,g.default)(Lt).call(Lt,"image/")||0===(0,g.default)(Lt).call(Lt,"audio/")||0===(0,g.default)(Lt).call(Lt,"video/")||Ys||Ws){var wi=ht("Input");return Dn?j.default.createElement(wi,{type:"file",onChange:function(_r){$r(_r.target.files[0])}}):j.default.createElement("i",null,"Example values are not available for ",j.default.createElement("code",null,Lt)," media types.")}if(bo&&("application/x-www-form-urlencoded"===Lt||0===(0,g.default)(Lt).call(Lt,"multipart/"))&&Ri.get("properties",(0,W.OrderedMap)()).size>0){var lo,go=ht("JsonSchemaForm"),Ge=ht("ParameterExt"),St=Ri.get("properties",(0,W.OrderedMap)());return xe=W.Map.isMap(xe)?xe:(0,W.OrderedMap)(),j.default.createElement("div",{className:"table-container"},An&&j.default.createElement($n,{source:An}),j.default.createElement("table",null,j.default.createElement("tbody",null,W.Map.isMap(St)&&(0,c.default)(lo=St.entrySeq()).call(lo,function(_r){var Gr,xi,Zs=(0,o.default)(_r,2),jo=Zs[0],sl=Zs[1];if(!sl.get("readOnly")){var ml=Jr?(0,re.po)(sl):null,nu=(0,C.default)(Gr=Ri.get("required",(0,W.List)())).call(Gr,jo),Xu=sl.get("type"),Pf=sl.get("format"),Fl=sl.get("description"),qc=xe.getIn([jo,"value"]),up=xe.getIn([jo,"errors"])||pt,Eh=U.get(jo)||!1,Wp=sl.has("default")||sl.has("example")||sl.hasIn(["items","example"])||sl.hasIn(["items","default"]),Th=sl.has("enum")&&(1===sl.get("enum").size||nu),ru=Wp||Th,Zc="";"array"!==Xu||ru||(Zc=[]),("object"===Xu||ru)&&(Zc=(0,re.xi)(sl,!1,{includeWriteOnly:!0})),"string"!=typeof Zc&&"object"===Xu&&(Zc=(0,re.Pz)(Zc)),"string"==typeof Zc&&"array"===Xu&&(Zc=JSON.parse(Zc));var Ip="string"===Xu&&("binary"===Pf||"base64"===Pf);return j.default.createElement("tr",{key:jo,className:"parameters","data-property-name":jo},j.default.createElement("td",{className:"parameters-col_name"},j.default.createElement("div",{className:nu?"parameter__name required":"parameter__name"},jo,nu?j.default.createElement("span",null,"\xa0*"):null),j.default.createElement("div",{className:"parameter__type"},Xu,Pf&&j.default.createElement("span",{className:"prop-format"},"($",Pf,")"),Jr&&ml.size?(0,c.default)(xi=ml.entrySeq()).call(xi,function(Yi){var lr,mi=(0,o.default)(Yi,2),eo=mi[0],Lo=mi[1];return j.default.createElement(Ge,{key:(0,D.default)(lr="".concat(eo,"-")).call(lr,Lo),xKey:eo,xVal:Lo})}):null),j.default.createElement("div",{className:"parameter__deprecated"},sl.get("deprecated")?"deprecated":null)),j.default.createElement("td",{className:"parameters-col_description"},j.default.createElement($n,{source:Fl}),Dn?j.default.createElement("div",null,j.default.createElement(go,{fn:dn,dispatchInitialValue:!Ip,schema:sl,description:jo,getComponent:ht,value:void 0===qc?Zc:qc,required:nu,errors:up,onChange:function(Yi){$r(Yi,[jo])}}),nu?null:j.default.createElement(Ui,{onChange:function(Yi){return ur(jo,Yi)},isIncluded:Eh,isIncludedOptions:Nn(jo),isDisabled:(0,P.default)(qc)?0!==qc.length:!(0,re.O2)(qc)})):null))}}))))}var Et=ge(ke,Lt,Pr),Bn=null;return(0,ie.O)(Et)&&(Bn="json"),j.default.createElement("div",null,An&&j.default.createElement($n,{source:An}),Zo?j.default.createElement(ji,{userHasEditedBody:Re,examples:Zo,currentKey:Pr,currentUserInputValue:xe,onSelect:function(_r){xr(_r)},updateValue:$r,defaultToFirstExample:!0,getComponent:ht,setRetainRequestBodyValueFlag:fn}):null,Dn?j.default.createElement("div",null,j.default.createElement(Tn,{value:xe,errors:pt,defaultValue:Et,onChange:$r,getComponent:ht})):j.default.createElement(Qn,{getComponent:ht,getConfigs:wt,specSelectors:It,expandDepth:1,isExecute:Dn,schema:qr.get("schema"),specPath:Mn.push("content",Lt),example:j.default.createElement(Yr,{className:"body-param__example",getConfigs:wt,language:Bn,value:(0,re.Pz)(xe)||Et}),includeWriteOnly:!0}),Zo?j.default.createElement(ii,{example:Zo.get(Pr),getComponent:ht,getConfigs:wt}):null)}},9928:(n,s,t)=>{t.r(s),t.d(s,{default:()=>P});var o=t(7344),c=t(8656),g=t(9972),C=t(5416),D=t(810),P=(t(5053),function(j){(0,g.default)(re,j);var W=(0,C.default)(re);function re(){return(0,o.default)(this,re),W.apply(this,arguments)}return(0,c.default)(re,[{key:"render",value:function(){var ie=this.props,_e=ie.oas3Selectors,Le=ie.oas3Actions,Re=ie.getComponent,ke=ie.specSelectors.servers(),xe=Re("Servers");return ke&&ke.size?D.default.createElement("div",null,D.default.createElement("span",{className:"servers-title"},"Servers"),D.default.createElement(xe,{servers:ke,currentServer:_e.selectedServer(),setSelectedServer:Le.setSelectedServer,setServerVariableValue:Le.setServerVariableValue,getServerVariable:_e.serverVariableValue,getEffectiveServerValue:_e.serverEffectiveValue})):null}}]),re}(D.default.Component))},6617:(n,s,t)=>{t.r(s),t.d(s,{default:()=>Le});var o=t(9334),c=t(7344),g=t(8656),C=t(6340),D=t(9972),P=t(5416),j=t(775),W=t(5171),re=t(1778),ie=t(2565),ge=t(810),_e=t(9725),Le=(t(5053),t(9569),function(Re){(0,D.default)(xe,Re);var ke=(0,P.default)(xe);function xe(){var U,pt;(0,c.default)(this,xe);for(var ht=arguments.length,wt=new Array(ht),It=0;It<ht;It++)wt[It]=arguments[It];return pt=ke.call.apply(ke,(0,W.default)(U=[this]).call(U,wt)),(0,j.default)((0,C.default)(pt),"onServerChange",function(dn){pt.setServer(dn.target.value)}),(0,j.default)((0,C.default)(pt),"onServerVariableValueChange",function(dn){var Lt=pt.props,Dn=Lt.setServerVariableValue,Mn=Lt.currentServer,$r=dn.target.getAttribute("data-variable");"function"==typeof Dn&&Dn({server:Mn,key:$r,val:dn.target.value})}),(0,j.default)((0,C.default)(pt),"setServer",function(dn){(0,pt.props.setSelectedServer)(dn)}),pt}return(0,g.default)(xe,[{key:"componentDidMount",value:function(){var U,pt=this.props;pt.currentServer||this.setServer(null===(U=pt.servers.first())||void 0===U?void 0:U.get("url"))}},{key:"UNSAFE_componentWillReceiveProps",value:function(U){var pt=this,ht=U.servers,wt=U.setServerVariableValue,It=U.getServerVariable;if(this.props.currentServer!==U.currentServer||this.props.servers!==U.servers){var dn,Lt=(0,re.default)(ht).call(ht,function(xr){return xr.get("url")===U.currentServer}),Dn=(0,re.default)(dn=this.props.servers).call(dn,function(xr){return xr.get("url")===pt.props.currentServer})||(0,_e.OrderedMap)();if(!Lt)return this.setServer(ht.first().get("url"));var Mn=Dn.get("variables")||(0,_e.OrderedMap)(),$r=((0,re.default)(Mn).call(Mn,function(xr){return xr.get("default")})||(0,_e.OrderedMap)()).get("default"),ur=Lt.get("variables")||(0,_e.OrderedMap)(),Pr=((0,re.default)(ur).call(ur,function(xr){return xr.get("default")})||(0,_e.OrderedMap)()).get("default");(0,ie.default)(ur).call(ur,function(xr,fn){It(U.currentServer,fn)&&$r===Pr||wt({server:U.currentServer,key:fn,val:xr.get("default")||""})})}}},{key:"render",value:function(){var U,pt,ht=this,wt=this.props,It=wt.servers,dn=wt.currentServer,Lt=wt.getServerVariable,Dn=wt.getEffectiveServerValue,Mn=((0,re.default)(It).call(It,function(ur){return ur.get("url")===dn})||(0,_e.OrderedMap)()).get("variables")||(0,_e.OrderedMap)(),$r=0!==Mn.size;return ge.default.createElement("div",{className:"servers"},ge.default.createElement("label",{htmlFor:"servers"},ge.default.createElement("select",{onChange:this.onServerChange,value:dn},(0,ie.default)(U=It.valueSeq()).call(U,function(ur){return ge.default.createElement("option",{value:ur.get("url"),key:ur.get("url")},ur.get("url"),ur.get("description")&&" - ".concat(ur.get("description")))}).toArray())),$r?ge.default.createElement("div",null,ge.default.createElement("div",{className:"computed-url"},"Computed URL:",ge.default.createElement("code",null,Dn(dn))),ge.default.createElement("h4",null,"Server variables"),ge.default.createElement("table",null,ge.default.createElement("tbody",null,(0,ie.default)(pt=Mn.entrySeq()).call(pt,function(ur){var Pr,xr=(0,o.default)(ur,2),fn=xr[0],Nn=xr[1];return ge.default.createElement("tr",{key:fn},ge.default.createElement("td",null,fn),ge.default.createElement("td",null,Nn.get("enum")?ge.default.createElement("select",{"data-variable":fn,onChange:ht.onServerVariableValueChange},(0,ie.default)(Pr=Nn.get("enum")).call(Pr,function($n){return ge.default.createElement("option",{selected:$n===Lt(dn,fn),key:$n,value:$n},$n)})):ge.default.createElement("input",{type:"text",value:Lt(dn,fn)||"",onChange:ht.onServerVariableValueChange,"data-variable":fn})))})))):null)}}]),xe}(ge.default.Component))},7779:(n,s,t)=>{t.r(s),t.d(s,{isOAS3:()=>C,isSwagger2:()=>D,OAS3ComponentWrapFactory:()=>P});var o=t(863),c=t(3590),g=t(810);function C(j){var W=j.get("openapi");return"string"==typeof W&&(0,c.default)(W).call(W,"3.0.")&&W.length>4}function D(j){var W=j.get("swagger");return"string"==typeof W&&(0,c.default)(W).call(W,"2.0")}function P(j){return function(W,re){return function(ie){return re&&re.specSelectors&&re.specSelectors.specJson?C(re.specSelectors.specJson())?g.default.createElement(j,(0,o.default)({},ie,re,{Ori:W})):g.default.createElement(W,ie):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}}},7451:(n,s,t)=>{t.r(s),t.d(s,{default:()=>re});var o=t(2044),c=t(3723),g=t(1741),C=t(6467),D=t(7761),P=t(7002),j=t(5065),W=t(9666);function re(){return{components:C.default,wrapComponents:D.default,statePlugins:{spec:{wrapSelectors:o,selectors:g},auth:{wrapSelectors:c},oas3:{actions:P,reducers:W.default,selectors:j}}}}},9666:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ge});var o=t(775);const c=(t.d(Le={},{default:()=>XM}),Le);var Le,g,C=t(9334),D=t(5487),P=t(8136),j=t(29),W=t(6785),re=t(9725),ie=t(7002);const ge=((0,o.default)(g={},ie.UPDATE_SELECTED_SERVER,function(_e,Le){var Re=Le.payload,xe=Re.namespace;return _e.setIn(xe?[xe,"selectedServer"]:["selectedServer"],Re.selectedServerUrl)}),(0,o.default)(g,ie.UPDATE_REQUEST_BODY_VALUE,function(_e,Le){var Re=Le.payload,ke=Re.value,U=(0,C.default)(Re.pathMethod,2),pt=U[0],ht=U[1];if(!re.Map.isMap(ke))return _e.setIn(["requestData",pt,ht,"bodyValue"],ke);var wt,It=_e.getIn(["requestData",pt,ht,"bodyValue"])||(0,re.Map)();re.Map.isMap(It)||(It=(0,re.Map)());var dn=(0,D.default)(ke).call(ke),Lt=(0,c.default)(dn),Dn=(0,P.default)(Lt).call(Lt,0);return(0,j.default)(Dn).call(Dn,function(Mn){var $r=ke.getIn([Mn]);It.has(Mn)&&re.Map.isMap($r)||(wt=It.setIn([Mn,"value"],$r))}),_e.setIn(["requestData",pt,ht,"bodyValue"],wt)}),(0,o.default)(g,ie.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,function(_e,Le){var Re=Le.payload,ke=Re.value,U=(0,C.default)(Re.pathMethod,2);return _e.setIn(["requestData",U[0],U[1],"retainBodyValue"],ke)}),(0,o.default)(g,ie.UPDATE_REQUEST_BODY_INCLUSION,function(_e,Le){var Re=Le.payload,ke=Re.value,U=Re.name,pt=(0,C.default)(Re.pathMethod,2);return _e.setIn(["requestData",pt[0],pt[1],"bodyInclusion",U],ke)}),(0,o.default)(g,ie.UPDATE_ACTIVE_EXAMPLES_MEMBER,function(_e,Le){var Re=Le.payload,ke=Re.name,U=Re.contextType,pt=Re.contextName,ht=(0,C.default)(Re.pathMethod,2);return _e.setIn(["examples",ht[0],ht[1],U,pt,"activeExample"],ke)}),(0,o.default)(g,ie.UPDATE_REQUEST_CONTENT_TYPE,function(_e,Le){var Re=Le.payload,ke=Re.value,U=(0,C.default)(Re.pathMethod,2);return _e.setIn(["requestData",U[0],U[1],"requestContentType"],ke)}),(0,o.default)(g,ie.UPDATE_RESPONSE_CONTENT_TYPE,function(_e,Le){var Re=Le.payload;return _e.setIn(["requestData",Re.path,Re.method,"responseContentType"],Re.value)}),(0,o.default)(g,ie.UPDATE_SERVER_VARIABLE_VALUE,function(_e,Le){var Re=Le.payload,ke=Re.server,xe=Re.namespace,U=Re.key;return _e.setIn(xe?[xe,"serverVariableValues",ke,U]:["serverVariableValues",ke,U],Re.val)}),(0,o.default)(g,ie.SET_REQUEST_BODY_VALIDATE_ERROR,function(_e,Le){var Re=Le.payload,ke=Re.path,xe=Re.method,U=Re.validationErrors,pt=[];if(pt.push("Required field is not provided"),U.missingBodyValue)return _e.setIn(["requestData",ke,xe,"errors"],(0,re.fromJS)(pt));if(U.missingRequiredKeys&&U.missingRequiredKeys.length>0){var ht=U.missingRequiredKeys;return _e.updateIn(["requestData",ke,xe,"bodyValue"],(0,re.fromJS)({}),function(wt){return(0,W.default)(ht).call(ht,function(It,dn){return It.setIn([dn,"errors"],(0,re.fromJS)(pt))},wt)})}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),_e}),(0,o.default)(g,ie.CLEAR_REQUEST_BODY_VALIDATE_ERROR,function(_e,Le){var Re=Le.payload,ke=Re.path,xe=Re.method,U=_e.getIn(["requestData",ke,xe,"bodyValue"]);if(!re.Map.isMap(U))return _e.setIn(["requestData",ke,xe,"errors"],(0,re.fromJS)([]));var pt=(0,D.default)(U).call(U),ht=(0,c.default)(pt),wt=(0,P.default)(ht).call(ht,0);return wt?_e.updateIn(["requestData",ke,xe,"bodyValue"],(0,re.fromJS)({}),function(It){return(0,W.default)(wt).call(wt,function(dn,Lt){return dn.setIn([Lt,"errors"],(0,re.fromJS)([]))},It)}):_e}),(0,o.default)(g,ie.CLEAR_REQUEST_BODY_VALUE,function(_e,Le){var ke=(0,C.default)(Le.payload.pathMethod,2),xe=ke[0],U=ke[1],pt=_e.getIn(["requestData",xe,U,"bodyValue"]);return pt?re.Map.isMap(pt)?_e.setIn(["requestData",xe,U,"bodyValue"],(0,re.Map)()):_e.setIn(["requestData",xe,U,"bodyValue"],""):_e}),g)},5065:(n,s,t)=>{t.r(s),t.d(s,{selectedServer:()=>Le,requestBodyValue:()=>Re,shouldRetainRequestBodyValue:()=>ke,hasUserEditedBody:()=>xe,requestBodyInclusionSetting:()=>U,requestBodyErrors:()=>pt,activeExamplesMember:()=>ht,requestContentType:()=>wt,responseContentType:()=>It,serverVariableValue:()=>dn,serverVariables:()=>Lt,serverEffectiveValue:()=>Dn,validateBeforeExecute:()=>Mn,validateShallowRequired:()=>$r});var o=t(2691),c=t(5171),g=t(2565),C=t(29),D=t(2740),P=t(8818),j=t(9725),W=t(7779),re=t(2458),ie=t(6298);function ge(ur){return function(){for(var Pr=arguments.length,xr=new Array(Pr),fn=0;fn<Pr;fn++)xr[fn]=arguments[fn];return function(Nn){var $n=Nn.getSystem().specSelectors.specJson();return(0,W.isOAS3)($n)?ur.apply(void 0,xr):null}}}var _e,Le=ge(function(ur,Pr){return ur.getIn(Pr?[Pr,"selectedServer"]:["selectedServer"])||""}),Re=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"bodyValue"])||null}),ke=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"retainBodyValue"])||!1}),xe=function(ur,Pr,xr){return function(fn){var Nn=fn.getSystem(),$n=Nn.oas3Selectors,Qn=Nn.specSelectors,Tn=Qn.specJson();if((0,W.isOAS3)(Tn)){var Yr=!1,ji=$n.requestContentType(Pr,xr),ii=$n.requestBodyValue(Pr,xr);if(j.Map.isMap(ii)&&(ii=(0,ie.Pz)(ii.mapEntries(function(Jr){return j.Map.isMap(Jr[1])?[Jr[0],Jr[1].get("value")]:Jr}).toJS())),j.List.isList(ii)&&(ii=(0,ie.Pz)(ii)),ji){var Ui=(0,re.getDefaultRequestBodyValue)(Qn.specResolvedSubtree(["paths",Pr,xr,"requestBody"]),ji,$n.activeExamplesMember(Pr,xr,"requestBody","requestBody"));Yr=!!ii&&ii!==Ui}return Yr}return null}},U=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"bodyInclusion"])||(0,j.Map)()}),pt=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"errors"])||null}),ht=ge(function(ur,Pr,xr,fn,Nn){return ur.getIn(["examples",Pr,xr,fn,Nn,"activeExample"])||null}),wt=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"requestContentType"])||null}),It=ge(function(ur,Pr,xr){return ur.getIn(["requestData",Pr,xr,"responseContentType"])||null}),dn=ge(function(ur,Pr,xr){var fn;if("string"!=typeof Pr){var Nn=Pr.server,$n=Pr.namespace;fn=$n?[$n,"serverVariableValues",Nn,xr]:["serverVariableValues",Nn,xr]}else fn=["serverVariableValues",Pr,xr];return ur.getIn(fn)||null}),Lt=ge(function(ur,Pr){var xr;if("string"!=typeof Pr){var fn=Pr.server,Nn=Pr.namespace;xr=Nn?[Nn,"serverVariableValues",fn]:["serverVariableValues",fn]}else xr=["serverVariableValues",Pr];return ur.getIn(xr)||(0,j.OrderedMap)()}),Dn=ge(function(ur,Pr){var xr,fn;if("string"!=typeof Pr){var $n=Pr.namespace;fn=Pr.server,xr=ur.getIn($n?[$n,"serverVariableValues",fn]:["serverVariableValues",fn])}else xr=ur.getIn(["serverVariableValues",fn=Pr]);xr=xr||(0,j.OrderedMap)();var Qn=fn;return(0,g.default)(xr).call(xr,function(Tn,Yr){Qn=Qn.replace(new RegExp("{".concat(Yr,"}"),"g"),Tn)}),Qn}),Mn=(_e=function(ur,Pr){return fn=(fn=Pr)||[],!!ur.getIn((0,c.default)(Nn=["requestData"]).call(Nn,(0,o.default)(fn),["bodyValue"]));var fn,Nn},function(){for(var ur=arguments.length,Pr=new Array(ur),xr=0;xr<ur;xr++)Pr[xr]=arguments[xr];return function(fn){var Nn,$n,Qn=fn.getSystem().specSelectors.specJson(),Tn=(0,c.default)(Nn=[]).call(Nn,Pr)[1]||[];return!Qn.getIn((0,c.default)($n=["paths"]).call($n,(0,o.default)(Tn),["requestBody","required"]))||_e.apply(void 0,Pr)}}),$r=function(ur,Pr){var xr,fn=Pr.oas3RequiredRequestBodyContentType,Nn=Pr.oas3RequestContentType,$n=Pr.oas3RequestBodyValue,Qn=[];if(!j.Map.isMap($n))return Qn;var Tn=[];return(0,C.default)(xr=(0,D.default)(fn.requestContentType)).call(xr,function(Yr){if(Yr===Nn){var ji=fn.requestContentType[Yr];(0,C.default)(ji).call(ji,function(ii){(0,P.default)(Tn).call(Tn,ii)<0&&Tn.push(ii)})}}),(0,C.default)(Tn).call(Tn,function(Yr){$n.getIn([Yr,"value"])||Qn.push(Yr)}),Qn}},1741:(n,s,t)=>{t.r(s),t.d(s,{servers:()=>W,isSwagger2:()=>re});var C,o=t(8639),c=t(9725),g=t(7779),D=function(ie){return ie||(0,c.Map)()},P=(0,o.createSelector)(D,function(ie){return ie.get("json",(0,c.Map)())}),j=(0,o.createSelector)(D,function(ie){return ie.get("resolved",(0,c.Map)())}),W=(C=(0,o.createSelector)(function(ie){var ge=j(ie);return ge.count()<1&&(ge=P(ie)),ge},function(ie){return ie.getIn(["servers"])||(0,c.Map)()}),function(){return function(ie){var ge=ie.getSystem().specSelectors.specJson();if((0,g.isOAS3)(ge)){for(var _e=arguments.length,Le=new Array(_e>1?_e-1:0),Re=1;Re<_e;Re++)Le[Re-1]=arguments[Re];return C.apply(void 0,Le)}return null}}),re=function(ie,ge){return function(){var _e=ge.getSystem().specSelectors.specJson();return(0,g.isSwagger2)(_e)}}},2044:(n,s,t)=>{t.r(s),t.d(s,{definitions:()=>ge,hasHost:()=>_e,securityDefinitions:()=>Le,host:()=>Re,basePath:()=>ke,consumes:()=>xe,produces:()=>U,schemes:()=>pt,servers:()=>ht,isOAS3:()=>wt,isSwagger2:()=>It});var o=t(8639),c=t(3881),g=t(9725),C=t(7779);function D(dn){return function(Lt,Dn){return function(){var Mn=Dn.getSystem().specSelectors.specJson();return(0,C.isOAS3)(Mn)?dn.apply(void 0,arguments):Lt.apply(void 0,arguments)}}}var P=function(dn){return dn||(0,g.Map)()},j=D((0,o.createSelector)(function(){return null})),W=(0,o.createSelector)(P,function(dn){return dn.get("json",(0,g.Map)())}),re=(0,o.createSelector)(P,function(dn){return dn.get("resolved",(0,g.Map)())}),ie=function(dn){var Lt=re(dn);return Lt.count()<1&&(Lt=W(dn)),Lt},ge=D((0,o.createSelector)(ie,function(dn){var Lt=dn.getIn(["components","schemas"]);return g.Map.isMap(Lt)?Lt:(0,g.Map)()})),_e=D(function(dn){return ie(dn).hasIn(["servers",0])}),Le=D((0,o.createSelector)(c.specJsonWithResolvedSubtrees,function(dn){return dn.getIn(["components","securitySchemes"])||null})),Re=j,ke=j,xe=j,U=j,pt=j,ht=D((0,o.createSelector)(ie,function(dn){return dn.getIn(["servers"])||(0,g.Map)()})),wt=function(dn,Lt){return function(){var Dn=Lt.getSystem().specSelectors.specJson();return(0,C.isOAS3)(g.Map.isMap(Dn)?Dn:(0,g.Map)())}},It=function(dn,Lt){return function(){var Dn=Lt.getSystem().specSelectors.specJson();return(0,C.isSwagger2)(g.Map.isMap(Dn)?Dn:(0,g.Map)())}}},356:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o=t(302),c=t(810),g=t(7779),C=["Ori"];const D=(0,g.OAS3ComponentWrapFactory)(function(P){var j=P.Ori,W=(0,o.default)(P,C),re=W.schema,ie=W.getComponent,ge=W.errSelectors,_e=W.authorized,Le=W.onAuthChange,Re=W.name,ke=ie("HttpAuth");return"http"===re.get("type")?c.default.createElement(ke,{key:Re,schema:re,name:Re,errSelectors:ge,authorized:_e,getComponent:ie,onChange:Le}):c.default.createElement(j,W)})},7761:(n,s,t)=>{t.r(s),t.d(s,{default:()=>j});var o=t(2460),c=t(356),g=t(9487),C=t(58),D=t(3499),P=t(287);const j={Markdown:o.default,AuthItem:c.default,JsonSchema_string:P.default,VersionStamp:g.default,model:D.default,onlineValidatorBadge:C.default}},287:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o=t(302),c=t(810),g=t(7779),C=["Ori"];const D=(0,g.OAS3ComponentWrapFactory)(function(P){var j=P.Ori,W=(0,o.default)(P,C),re=W.schema,ie=W.getComponent,ge=W.errors,_e=W.onChange,Le=re&&re.get?re.get("format"):null,Re=re&&re.get?re.get("type"):null,ke=ie("Input");return Re&&"string"===Re&&Le&&("binary"===Le||"base64"===Le)?c.default.createElement(ke,{type:"file",className:ge.length?"invalid":"",title:ge.length?ge:"",onChange:function(xe){_e(xe.target.files[0])},disabled:j.isDisabled}):c.default.createElement(j,W)})},2460:(n,s,t)=>{t.r(s),t.d(s,{Markdown:()=>W,default:()=>re});var o=t(5942),c=t(810),g=(t(5053),t(8096)),C=t(3952),D=t(7779),P=t(5466),j=new C.Remarkable("commonmark");j.block.ruler.enable(["table"]),j.set({linkTarget:"_blank"});var W=function(ie){var ge=ie.source,_e=ie.className,Le=void 0===_e?"":_e;if("string"!=typeof ge)return null;if(ge){var ke,xe=(0,ie.getConfigs)().useUnsafeMarkdown,U=j.render(ge),pt=(0,P.s)(U,{useUnsafeMarkdown:xe});return"string"==typeof pt&&(ke=(0,o.default)(pt).call(pt)),c.default.createElement("div",{dangerouslySetInnerHTML:{__html:ke},className:(0,g.default)(Le,"renderedMarkdown")})}return null};W.defaultProps={getConfigs:function(){return{useUnsafeMarkdown:!1}}};const re=(0,D.OAS3ComponentWrapFactory)(W)},3499:(n,s,t)=>{t.r(s),t.d(s,{default:()=>ie});var o=t(863),c=t(7344),g=t(8656),C=t(9972),D=t(5416),P=t(810),j=(t(5053),t(7779)),W=t(1543),re=function(ge){(0,C.default)(Le,ge);var _e=(0,D.default)(Le);function Le(){return(0,c.default)(this,Le),_e.apply(this,arguments)}return(0,g.default)(Le,[{key:"render",value:function(){var Re=this.props,ke=Re.getConfigs,xe=["model-box"],U=null;return!0===Re.schema.get("deprecated")&&(xe.push("deprecated"),U=P.default.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),P.default.createElement("div",{className:xe.join(" ")},U,P.default.createElement(W.Z,(0,o.default)({},this.props,{getConfigs:ke,depth:1,expandDepth:this.props.expandDepth||0})))}}]),Le}(P.Component);const ie=(0,j.OAS3ComponentWrapFactory)(re)},58:(n,s,t)=>{t.r(s),t.d(s,{default:()=>g});var o=t(7779),c=t(5623);const g=(0,o.OAS3ComponentWrapFactory)(c.Z)},9487:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(810);const c=(0,t(7779).OAS3ComponentWrapFactory)(function(g){return o.default.createElement("span",null,o.default.createElement(g.Ori,g),o.default.createElement("small",{className:"version-stamp"},o.default.createElement("pre",{className:"version"},"OAS3")))})},8560:(n,s,t)=>{t.r(s),t.d(s,{default:()=>g});var o=t(6235),c=!1;function g(){return{statePlugins:{spec:{wrapActions:{updateSpec:function(C){return function(){return c=!0,C.apply(void 0,arguments)}},updateJsonSpec:function(C,D){return function(){var P=D.getConfigs().onComplete;return c&&"function"==typeof P&&((0,o.default)(P,0),c=!1),C.apply(void 0,arguments)}}}}}}}},4624:(n,s,t)=>{t.r(s),t.d(s,{requestSnippetGenerator_curl_bash:()=>It,requestSnippetGenerator_curl_cmd:()=>dn,requestSnippetGenerator_curl_powershell:()=>wt});var o=t(2691),c=t(9334),g=t(3248),C=t(8818),D=t(5942),P=t(5171),j=t(313),W=t(2565);const re=(t.d(Dn={},{default:()=>qM()}),Dn);var Dn,ie=t(2954),ge=t(2372),_e=t(7504),Le=t(9725),Re=function(Lt){var Dn;return(0,C.default)(Lt).call(Lt,"_**[]")<0?Lt:(0,D.default)(Dn=Lt.split("_**[]")[0]).call(Dn)},ke=function(Lt){return"-d "===Lt||/^[_\/-]/g.test(Lt)?Lt:"'"+Lt.replace(/'/g,"'\\''")+"'"},xe=function(Lt){return"-d "===(Lt=Lt.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?Lt.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(Lt)?Lt:'"'+Lt+'"'},U=function(Lt){return"-d "===Lt?Lt:/\n/.test(Lt)?'@"\n'+Lt.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(Lt)?Lt:"'"+Lt.replace(/"/g,'""').replace(/'/g,"''")+"'"};function pt(Lt){var Dn,Mn=[],$r=(0,g.default)(Lt.get("body").entrySeq());try{for($r.s();!(Dn=$r.n()).done;){var ur,Pr,xr,fn=(0,c.default)(Dn.value,2),$n=fn[1],Qn=Re(fn[0]);Mn.push($n instanceof _e.Z.File?(0,P.default)(ur=(0,P.default)(Pr='  "'.concat(Qn,'": {\n    "name": "')).call(Pr,$n.name,'"')).call(ur,$n.type?',\n    "type": "'.concat($n.type,'"'):"","\n  }"):(0,P.default)(xr='  "'.concat(Qn,'": ')).call(xr,(0,j.default)($n,null,2).replace(/(\r\n|\r|\n)/g,"\n  ")))}}catch(Tn){$r.e(Tn)}finally{$r.f()}return"{\n".concat(Mn.join(",\n"),"\n}")}var ht=function(Lt,Dn,Mn){var $r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",ur=!1,Pr="",xr=function(){for(var Et=arguments.length,Bn=new Array(Et),_r=0;_r<Et;_r++)Bn[_r]=arguments[_r];return Pr+=" "+(0,W.default)(Bn).call(Bn,Dn).join(" ")},fn=function(){for(var Et=arguments.length,Bn=new Array(Et),_r=0;_r<Et;_r++)Bn[_r]=arguments[_r];return Pr+=(0,W.default)(Bn).call(Bn,Dn).join(" ")},Nn=function(){return Pr+=" ".concat(Mn)},$n=function(){var Et,Bn=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return Pr+=(0,re.default)(Et="  ").call(Et,Bn)},Qn=Lt.get("headers");if(Pr+="curl"+$r,Lt.has("curlOptions")&&xr.apply(void 0,(0,o.default)(Lt.get("curlOptions"))),xr("-X",Lt.get("method")),Nn(),$n(),fn("".concat(Lt.get("url"))),Qn&&Qn.size){var Tn,Yr,ji=(0,g.default)((0,ie.default)(Tn=Lt.get("headers")).call(Tn));try{for(ji.s();!(Yr=ji.n()).done;){var ii,Ui=Yr.value;Nn(),$n();var Jr=(0,c.default)(Ui,2),An=Jr[0],hn=Jr[1];fn("-H",(0,P.default)(ii="".concat(An,": ")).call(ii,hn)),ur=ur||/^content-type$/i.test(An)&&/^multipart\/form-data$/i.test(hn)}}catch(Et){ji.e(Et)}finally{ji.f()}}var qr,Ri=Lt.get("body");if(Ri)if(ur&&(0,ge.default)(qr=["POST","PUT","PATCH"]).call(qr,Lt.get("method"))){var qi,Zo=(0,g.default)(Ri.entrySeq());try{for(Zo.s();!(qi=Zo.n()).done;){var bo,Ys,Ws,wi=(0,c.default)(qi.value,2),lo=wi[0],go=wi[1],Ge=Re(lo);Nn(),$n(),fn("-F"),xr(go instanceof _e.Z.File?(0,P.default)(bo=(0,P.default)(Ys="".concat(Ge,"=@")).call(Ys,go.name)).call(bo,go.type?";type=".concat(go.type):""):(0,P.default)(Ws="".concat(Ge,"=")).call(Ws,go))}}catch(Et){Zo.e(Et)}finally{Zo.f()}}else if(Ri instanceof _e.Z.File)Nn(),$n(),fn("--data-binary '@".concat(Ri.name,"'"));else{Nn(),$n(),fn("-d ");var St=Ri;Le.Map.isMap(St)?fn(pt(Lt)):("string"!=typeof St&&(St=(0,j.default)(St)),fn(St))}else Ri||"POST"!==Lt.get("method")||(Nn(),$n(),fn("-d ''"));return Pr},wt=function(Lt){return ht(Lt,U,"`\n",".exe")},It=function(Lt){return ht(Lt,ke,"\\\n")},dn=function(Lt){return ht(Lt,xe,"^\n")}},6575:(n,s,t)=>{t.r(s),t.d(s,{default:()=>C});var o=t(4624),c=t(4669),g=t(4206);const C=function(){return{components:{RequestSnippets:g.default},fn:o,statePlugins:{requestSnippets:{selectors:c}}}}},4206:(n,s,t)=>{t.r(s),t.d(s,{default:()=>Le});var o=t(9334),c=t(6145),g=t(8898),C=t(29),D=t(2565),P=t(810),j=(t(5053),t(9908)),W=t(7068),re=t(9874),ie=t(471),ge={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},_e={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"};const Le=function(Re){var ke,xe,U=Re.request,pt=Re.requestSnippetsSelectors,ht=Re.getConfigs,wt=(0,W.default)(ht)?ht():null,It=!1!==(0,j.default)(wt,"syntaxHighlight")&&(0,j.default)(wt,"syntaxHighlight.activated",!0),dn=(0,P.useRef)(null),Lt=(0,P.useState)(null===(ke=pt.getSnippetGenerators())||void 0===ke?void 0:ke.keySeq().first()),Dn=(0,o.default)(Lt,2),Mn=Dn[0],$r=Dn[1],ur=(0,P.useState)(null==pt?void 0:pt.getDefaultExpanded()),Pr=(0,o.default)(ur,2),xr=Pr[0],fn=Pr[1];(0,P.useEffect)(function(){},[]),(0,P.useEffect)(function(){var Ui,Jr=(0,c.default)(Ui=(0,g.default)(dn.current.childNodes)).call(Ui,function(An){var hn;return!!An.nodeType&&(null===(hn=An.classList)||void 0===hn?void 0:hn.contains("curl-command"))});return(0,C.default)(Jr).call(Jr,function(An){return An.addEventListener("mousewheel",ji,{passive:!1})}),function(){(0,C.default)(Jr).call(Jr,function(An){return An.removeEventListener("mousewheel",ji)})}},[U]);var Nn=pt.getSnippetGenerators(),$n=Nn.get(Mn),Qn=$n.get("fn")(U),Tn=function(){fn(!xr)},Yr=function(Ui){return Ui===Mn?_e:ge},ji=function(Ui){var Jr=Ui.target,An=Ui.deltaY,hn=Jr.scrollHeight,qr=Jr.offsetHeight,Ri=Jr.scrollTop;hn>qr&&(0===Ri&&An<0||qr+Ri>=hn&&An>0)&&Ui.preventDefault()},ii=It?P.default.createElement(ie.d3,{language:$n.get("syntax"),className:"curl microlight",style:(0,ie.C2)((0,j.default)(wt,"syntaxHighlight.theme"))},Qn):P.default.createElement("textarea",{readOnly:!0,className:"curl",value:Qn});return P.default.createElement("div",{className:"request-snippets",ref:dn},P.default.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},P.default.createElement("h4",{onClick:function(){return Tn()},style:{cursor:"pointer"}},"Snippets"),P.default.createElement("button",{onClick:function(){return Tn()},style:{border:"none",background:"none"},title:xr?"Collapse operation":"Expand operation"},P.default.createElement("svg",{className:"arrow",width:"10",height:"10"},P.default.createElement("use",{href:xr?"#large-arrow-down":"#large-arrow",xlinkHref:xr?"#large-arrow-down":"#large-arrow"})))),xr&&P.default.createElement("div",{className:"curl-command"},P.default.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},(0,D.default)(xe=Nn.entrySeq()).call(xe,function(Ui){var Jr=(0,o.default)(Ui,2),An=Jr[0],hn=Jr[1];return P.default.createElement("div",{style:Yr(An),className:"btn",key:An,onClick:function(){var qr;Mn!==(qr=An)&&$r(qr)}},P.default.createElement("h4",{style:An===Mn?{color:"white"}:{}},hn.get("title")))})),P.default.createElement("div",{className:"copy-to-clipboard"},P.default.createElement(re.CopyToClipboard,{text:Qn},P.default.createElement("button",null))),P.default.createElement("div",null,ii)))}},4669:(n,s,t)=>{t.r(s),t.d(s,{getGenerators:()=>j,getSnippetGenerators:()=>W,getActiveLanguage:()=>re,getDefaultExpanded:()=>ie});var o=t(6145),c=t(2372),g=t(2565),C=t(8639),D=t(9725),P=function(ge){return ge||(0,D.Map)()},j=(0,C.createSelector)(P,function(ge){var _e=ge.get("languages"),Le=ge.get("generators",(0,D.Map)());return!_e||_e.isEmpty()?Le:(0,o.default)(Le).call(Le,function(Re,ke){return(0,c.default)(_e).call(_e,ke)})}),W=function(ge){return function(_e){var Le,Re,ke=_e.fn;return(0,o.default)(Le=(0,g.default)(Re=j(ge)).call(Re,function(xe,U){var pt=ke["requestSnippetGenerator_".concat(U)];return"function"!=typeof pt?null:xe.set("fn",pt)})).call(Le,function(xe){return xe})}},re=(0,C.createSelector)(P,function(ge){return ge.get("activeLanguage")}),ie=(0,C.createSelector)(P,function(ge){return ge.get("defaultExpanded")})},6195:(n,s,t)=>{t.r(s),t.d(s,{ErrorBoundary:()=>re,default:()=>ie});var o=t(7344),c=t(8656),g=t(9972),C=t(5416),D=t(5171),P=(t(5053),t(810)),j=t(6189),W=t(9403),re=function(ge){(0,g.default)(Le,ge);var _e=(0,C.default)(Le);function Le(){var Re,ke;(0,o.default)(this,Le);for(var xe=arguments.length,U=new Array(xe),pt=0;pt<xe;pt++)U[pt]=arguments[pt];return(ke=_e.call.apply(_e,(0,D.default)(Re=[this]).call(Re,U))).state={hasError:!1,error:null},ke}return(0,c.default)(Le,[{key:"componentDidCatch",value:function(Re,ke){this.props.fn.componentDidCatch(Re,ke)}},{key:"render",value:function(){var Re=this.props,xe=Re.targetName,U=Re.children;if(this.state.hasError){var pt=(0,Re.getComponent)("Fallback");return P.default.createElement(pt,{name:xe})}return U}}],[{key:"getDerivedStateFromError",value:function(Re){return{hasError:!0,error:Re}}}]),Le}(P.Component);re.defaultProps={targetName:"this component",getComponent:function(){return W.default},fn:{componentDidCatch:j.componentDidCatch},children:null};const ie=re},9403:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(810);t(5053);const c=function(g){var C=g.name;return o.default.createElement("div",{className:"fallback"},"\u{1f631} ",o.default.createElement("i",null,"Could not render ","t"===C?"this component":C,", see the console."))}},6189:(n,s,t)=>{t.r(s),t.d(s,{componentDidCatch:()=>j,withErrorBoundary:()=>W});var o=t(863),c=t(7344),g=t(8656),C=t(9972),D=t(5416),P=t(810),j=console.error,W=function(re){return function(ie){var ge,_e=re(),Le=_e.getComponent,Re=_e.fn,ke=Le("ErrorBoundary"),xe=Re.getDisplayName(ie),U=function(pt){(0,C.default)(wt,pt);var ht=(0,D.default)(wt);function wt(){return(0,c.default)(this,wt),ht.apply(this,arguments)}return(0,g.default)(wt,[{key:"render",value:function(){return P.default.createElement(ke,{targetName:xe,getComponent:Le,fn:Re},P.default.createElement(ie,(0,o.default)({},this.props,this.context)))}}]),wt}(P.Component);return U.displayName="WithErrorBoundary(".concat(xe,")"),(ge=ie).prototype&&ge.prototype.isReactComponent&&(U.prototype.mapStateToProps=ie.prototype.mapStateToProps),U}}},8102:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W});var o=t(2691),c=t(5171);const g=(t.d(ie={},{default:()=>Ux()}),ie),C=(re=>{var ie={};return t.d(ie,re),ie})({default:()=>Yx()});var ie,D=t(6195),P=t(9403),j=t(6189);const W=function(){var re=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},ie=re.componentList,ge=void 0===ie?[]:ie,_e=re.fullOverride,Le=void 0!==_e&&_e;return function(Re){var ke,xe,U=Re.getSystem,pt=Le?ge:(0,c.default)(ke=[]).call(ke,["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper"],(0,o.default)(ge)),ht=(0,C.default)(pt,(0,g.default)(xe=Array(pt.length)).call(xe,function(wt,It){return It.fn.withErrorBoundary(wt)}));return{fn:{componentDidCatch:j.componentDidCatch,withErrorBoundary:(0,j.withErrorBoundary)(U)},components:{ErrorBoundary:D.default,Fallback:P.default},wrapComponents:ht}}}},2473:(n,s,t)=>{t.r(s),t.d(s,{createXMLExample:()=>Pr,inferSchema:()=>ur,memoizedCreateXMLExample:()=>Nn,memoizedSampleFromSchema:()=>$n,sampleFromSchema:()=>xr,sampleFromSchemaGeneric:()=>$r});var o=t(1581),c=t(5171),g=t(8818),C=t(29),D=t(4163),P=t(2372),j=t(9963),W=t(8136),re=t(1778),ie=t(2565),ge=t(313),_e=t(3479),Le=t.n(_e);const Re=(t.d(Tn={},{default:()=>o0()}),Tn),ke=(Qn=>{var Tn={};return t.d(Tn,Qn),Tn})({default:()=>n2()});var Tn,xe=t(6298),U=t(8287),pt={string:function(Qn){return Qn.pattern?function(Tn){try{return new Re.default(Tn).gen()}catch(Yr){return"string"}}(Qn.pattern):"string"},string_email:function(){return"user@example.com"},"string_date-time":function(){return(new Date).toISOString()},string_date:function(){return(new Date).toISOString().substring(0,10)},string_uuid:function(){return"3fa85f64-5717-4562-b3fc-2c963f66afa6"},string_hostname:function(){return"example.com"},string_ipv4:function(){return"198.51.100.42"},string_ipv6:function(){return"2001:0db8:5b96:0000:0000:426f:8e17:642a"},number:function(){return 0},number_float:function(){return 0},integer:function(){return 0},boolean:function(Qn){return"boolean"!=typeof Qn.default||Qn.default}},ht=function(Qn){var Tn,Yr=Qn=(0,xe.mz)(Qn),ji=Yr.type,ii=Yr.format,Ui=pt[(0,c.default)(Tn="".concat(ji,"_")).call(Tn,ii)]||pt[ji];return(0,xe.Wl)(Ui)?Ui(Qn):"Unknown Type: "+Qn.type},wt=function(Qn){return(0,xe.XV)(Qn,"$$ref",function(Tn){return"string"==typeof Tn&&(0,g.default)(Tn).call(Tn,"#")>-1})},It=["maxProperties","minProperties"],dn=["minItems","maxItems"],Lt=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],Dn=["minLength","maxLength"],Mn=function Qn(Tn,Yr){var ji,ii,Ui,Jr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},An=function(qi){void 0===Yr[qi]&&void 0!==Tn[qi]&&(Yr[qi]=Tn[qi])};if((0,C.default)(ji=(0,c.default)(ii=["example","default","enum","xml","type"]).call(ii,It,dn,Lt,Dn)).call(ji,function(qi){return An(qi)}),void 0!==Tn.required&&(0,D.default)(Tn.required)&&(void 0!==Yr.required&&Yr.required.length||(Yr.required=[]),(0,C.default)(Ui=Tn.required).call(Ui,function(qi){var Zo;(0,P.default)(Zo=Yr.required).call(Zo,qi)||Yr.required.push(qi)})),Tn.properties){Yr.properties||(Yr.properties={});var hn=(0,xe.mz)(Tn.properties);for(var qr in hn){var Ri;Object.prototype.hasOwnProperty.call(hn,qr)&&(!hn[qr]||!hn[qr].deprecated)&&(!hn[qr]||!hn[qr].readOnly||Jr.includeReadOnly)&&(!hn[qr]||!hn[qr].writeOnly||Jr.includeWriteOnly)&&(Yr.properties[qr]||(Yr.properties[qr]=hn[qr],!Tn.required&&(0,D.default)(Tn.required)&&-1!==(0,g.default)(Ri=Tn.required).call(Ri,qr)&&(Yr.required?Yr.required.push(qr):Yr.required=[qr])))}}return Tn.items&&(Yr.items||(Yr.items={}),Yr.items=Qn(Tn.items,Yr.items,Jr)),Yr},$r=function Qn(Tn){var Yr=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},ji=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,ii=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Tn&&(0,xe.Wl)(Tn.toJS)&&(Tn=Tn.toJS());var Ui=void 0!==ji||Tn&&void 0!==Tn.example||Tn&&void 0!==Tn.default,Jr=!Ui&&Tn&&Tn.oneOf&&Tn.oneOf.length>0,An=!Ui&&Tn&&Tn.anyOf&&Tn.anyOf.length>0;if(!Ui&&(Jr||An)){var hn=(0,xe.mz)(Jr?Tn.oneOf[0]:Tn.anyOf[0]);if(Mn(hn,Tn,Yr),!Tn.xml&&hn.xml&&(Tn.xml=hn.xml),void 0!==Tn.example&&void 0!==hn.example)Ui=!0;else if(hn.properties){Tn.properties||(Tn.properties={});var qr=(0,xe.mz)(hn.properties);for(var Ri in qr){var qi;Object.prototype.hasOwnProperty.call(qr,Ri)&&(!qr[Ri]||!qr[Ri].deprecated)&&(!qr[Ri]||!qr[Ri].readOnly||Yr.includeReadOnly)&&(!qr[Ri]||!qr[Ri].writeOnly||Yr.includeWriteOnly)&&(Tn.properties[Ri]||(Tn.properties[Ri]=qr[Ri],!hn.required&&(0,D.default)(hn.required)&&-1!==(0,g.default)(qi=hn.required).call(qi,Ri)&&(Tn.required?Tn.required.push(Ri):Tn.required=[Ri])))}}}var Zo,bo={},Ys=Tn||{},Ws=Ys.xml,wi=Ys.type,lo=Ys.example,go=Ys.properties,Ge=Ys.additionalProperties,St=Ys.items,Et=Yr.includeReadOnly,Bn=Yr.includeWriteOnly,_r=Ws=Ws||{},Gr=_r.name,xi=_r.prefix,Zs=_r.namespace,jo={};if(ii&&(Zo=(xi?xi+":":"")+(Gr=Gr||"notagname"),Zs)){var sl=xi?"xmlns:"+xi:"xmlns";bo[sl]=Zs}ii&&(jo[Zo]=[]);var ml=function(Zi){return(0,j.default)(Zi).call(Zi,function(xs){return Object.prototype.hasOwnProperty.call(Tn,xs)})};Tn&&!wi&&(go||Ge||ml(It)?wi="object":St||ml(dn)?wi="array":ml(Lt)?(wi="number",Tn.type="number"):Ui||Tn.enum||(wi="string",Tn.type="string"));var nu,Xu,Pf=function(Zi){var xs,is,hu,Al,Ci;if(null!==(null===(xs=Tn)||void 0===xs?void 0:xs.maxItems)&&void 0!==(null===(is=Tn)||void 0===is?void 0:is.maxItems)&&(Zi=(0,W.default)(Zi).call(Zi,0,null===(Ci=Tn)||void 0===Ci?void 0:Ci.maxItems)),null!==(null===(hu=Tn)||void 0===hu?void 0:hu.minItems)&&void 0!==(null===(Al=Tn)||void 0===Al?void 0:Al.minItems))for(var qa=0;Zi.length<(null===(ja=Tn)||void 0===ja?void 0:ja.minItems);){var ja;Zi.push(Zi[qa++%Zi.length])}return Zi},Fl=(0,xe.mz)(go),qc=0,up=function(){return Tn&&null!=Tn.maxProperties&&qc>=Tn.maxProperties},Eh=function(){if(!Tn||!Tn.required)return 0;var Zi,xs,is=0;return ii?(0,C.default)(Zi=Tn.required).call(Zi,function(hu){return is+=void 0===jo[hu]?0:1}):(0,C.default)(xs=Tn.required).call(xs,function(hu){var Al;return is+=void 0===(null===(Al=jo[Zo])||void 0===Al?void 0:(0,re.default)(Al).call(Al,function(Ci){return void 0!==Ci[hu]}))?0:1}),Tn.required.length-is},Wp=function(Zi){var xs;return!(Tn&&Tn.required&&Tn.required.length&&(0,P.default)(xs=Tn.required).call(xs,Zi))},Th=function(Zi){return!Tn||null==Tn.maxProperties||!up()&&(!Wp(Zi)||Tn.maxProperties-qc-Eh()>0)};if(nu=ii?function(Zi){var xs=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(Tn&&Fl[Zi]){if(Fl[Zi].xml=Fl[Zi].xml||{},Fl[Zi].xml.attribute){var is=(0,D.default)(Fl[Zi].enum)?Fl[Zi].enum[0]:void 0,hu=Fl[Zi].example,Al=Fl[Zi].default;return void(bo[Fl[Zi].xml.name||Zi]=void 0!==hu?hu:void 0!==Al?Al:void 0!==is?is:ht(Fl[Zi]))}Fl[Zi].xml.name=Fl[Zi].xml.name||Zi}else Fl[Zi]||!1===Ge||(Fl[Zi]={xml:{name:Zi}});var Ci,qa=Qn(Tn&&Fl[Zi]||void 0,Yr,xs,ii);Th(Zi)&&(qc++,(0,D.default)(qa)?jo[Zo]=(0,c.default)(Ci=jo[Zo]).call(Ci,qa):jo[Zo].push(qa))}:function(Zi,xs){Th(Zi)&&(jo[Zi]=Qn(Fl[Zi],Yr,xs,ii),qc++)},Ui){var ru;if(ru=wt(void 0!==ji?ji:void 0!==lo?lo:Tn.default),!ii){if("number"==typeof ru&&"string"===wi)return"".concat(ru);if("string"!=typeof ru||"string"===wi)return ru;try{return JSON.parse(ru)}catch(Zi){return ru}}if(Tn||(wi=(0,D.default)(ru)?"array":(0,o.default)(ru)),"array"===wi){if(!(0,D.default)(ru)){if("string"==typeof ru)return ru;ru=[ru]}var Zc=Tn?Tn.items:void 0;Zc&&(Zc.xml=Zc.xml||Ws||{},Zc.xml.name=Zc.xml.name||Ws.name);var Ip=(0,ie.default)(ru).call(ru,function(Zi){return Qn(Zc,Yr,Zi,ii)});return Ip=Pf(Ip),Ws.wrapped?(jo[Zo]=Ip,(0,ke.default)(bo)||jo[Zo].push({_attr:bo})):jo=Ip,jo}if("object"===wi){if("string"==typeof ru)return ru;for(var Yi in ru)Object.prototype.hasOwnProperty.call(ru,Yi)&&(Tn&&Fl[Yi]&&Fl[Yi].readOnly&&!Et||Tn&&Fl[Yi]&&Fl[Yi].writeOnly&&!Bn||(Tn&&Fl[Yi]&&Fl[Yi].xml&&Fl[Yi].xml.attribute?bo[Fl[Yi].xml.name||Yi]=ru[Yi]:nu(Yi,ru[Yi])));return(0,ke.default)(bo)||jo[Zo].push({_attr:bo}),jo}return jo[Zo]=(0,ke.default)(bo)?ru:[{_attr:bo},ru],jo}if("object"===wi){for(var lr in Fl)Object.prototype.hasOwnProperty.call(Fl,lr)&&(Fl[lr]&&Fl[lr].deprecated||Fl[lr]&&Fl[lr].readOnly&&!Et||Fl[lr]&&Fl[lr].writeOnly&&!Bn||nu(lr));if(ii&&bo&&jo[Zo].push({_attr:bo}),up())return jo;if(!0===Ge)ii?jo[Zo].push({additionalProp:"Anything can be here"}):jo.additionalProp1={},qc++;else if(Ge){var mi=(0,xe.mz)(Ge),eo=Qn(mi,Yr,void 0,ii);if(ii&&mi.xml&&mi.xml.name&&"notagname"!==mi.xml.name)jo[Zo].push(eo);else for(var Lo=null!=Tn.minProperties&&qc<Tn.minProperties?Tn.minProperties-qc:3,Xo=1;Xo<=Lo;Xo++){if(up())return jo;if(ii){var rs={};rs["additionalProp"+Xo]=eo.notagname,jo[Zo].push(rs)}else jo["additionalProp"+Xo]=eo;qc++}}return jo}if("array"===wi){if(!St)return;var us,ma,Ka;if(ii&&(St.xml=St.xml||(null===(ma=Tn)||void 0===ma?void 0:ma.xml)||{},St.xml.name=St.xml.name||Ws.name),(0,D.default)(St.anyOf))us=(0,ie.default)(Ka=St.anyOf).call(Ka,function(Zi){return Qn(Mn(St,Zi,Yr),Yr,void 0,ii)});else if((0,D.default)(St.oneOf)){var xu;us=(0,ie.default)(xu=St.oneOf).call(xu,function(Zi){return Qn(Mn(St,Zi,Yr),Yr,void 0,ii)})}else{if(!(!ii||ii&&Ws.wrapped))return Qn(St,Yr,void 0,ii);us=[Qn(St,Yr,void 0,ii)]}return us=Pf(us),ii&&Ws.wrapped?(jo[Zo]=us,(0,ke.default)(bo)||jo[Zo].push({_attr:bo}),jo):us}if(Tn&&(0,D.default)(Tn.enum))Xu=(0,xe.AF)(Tn.enum)[0];else{if(!Tn)return;if("number"==typeof(Xu=ht(Tn))){var Kn=Tn.minimum;null!=Kn&&(Tn.exclusiveMinimum&&Kn++,Xu=Kn);var Pi=Tn.maximum;null!=Pi&&(Tn.exclusiveMaximum&&Pi--,Xu=Pi)}if("string"==typeof Xu&&(null!=Tn.maxLength&&(Xu=(0,W.default)(Xu).call(Xu,0,Tn.maxLength)),null!=Tn.minLength))for(var as=0;Xu.length<Tn.minLength;)Xu+=Xu[as++%Xu.length]}if("file"!==wi)return ii?(jo[Zo]=(0,ke.default)(bo)?Xu:[{_attr:bo},Xu],jo):Xu},ur=function(Qn){return Qn.schema&&(Qn=Qn.schema),Qn.properties&&(Qn.type="object"),Qn},Pr=function(Qn,Tn,Yr){var ji=$r(Qn,Tn,Yr,!0);if(ji)return"string"==typeof ji?ji:Le()(ji,{declaration:!0,indent:"\t"})},xr=function(Qn,Tn,Yr){return $r(Qn,Tn,Yr,!1)},fn=function(Qn,Tn,Yr){return[Qn,(0,ge.default)(Tn),(0,ge.default)(Yr)]},Nn=(0,U.Z)(Pr,fn),$n=(0,U.Z)(xr,fn)},8883:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(2473);function c(){return{fn:o}}},1737:(n,s,t)=>{t.r(s),t.d(s,{CLEAR_REQUEST:()=>hn,CLEAR_RESPONSE:()=>An,CLEAR_VALIDATE_PARAMS:()=>qr,LOG_REQUEST:()=>Jr,SET_MUTATED_REQUEST:()=>Ui,SET_REQUEST:()=>ii,SET_RESPONSE:()=>ji,SET_SCHEME:()=>bo,UPDATE_EMPTY_PARAM_INCLUSION:()=>Tn,UPDATE_JSON:()=>$n,UPDATE_OPERATION_META_VALUE:()=>Ri,UPDATE_PARAM:()=>Qn,UPDATE_RESOLVED:()=>qi,UPDATE_RESOLVED_SUBTREE:()=>Zo,UPDATE_SPEC:()=>fn,UPDATE_URL:()=>Nn,VALIDATE_PARAMS:()=>Yr,changeConsumesValue:()=>Xu,changeParam:()=>Gr,changeParamByIdentity:()=>xi,changeProducesValue:()=>Pf,clearRequest:()=>Zc,clearResponse:()=>ru,clearValidateParams:()=>nu,execute:()=>Th,executeRequest:()=>Wp,invalidateResolvedSubtreeCache:()=>jo,logRequest:()=>Eh,parseToJson:()=>go,requestResolvedSubtree:()=>_r,resolveSpec:()=>St,setMutatedRequest:()=>up,setRequest:()=>qc,setResponse:()=>Fl,setScheme:()=>Ip,updateEmptyParamInclusion:()=>ml,updateJsonSpec:()=>lo,updateResolved:()=>Ws,updateResolvedSubtree:()=>Zs,updateSpec:()=>Ys,updateUrl:()=>wi,validateParams:()=>sl});var o=t(1013),c=t(302);const g=(t.d(lr={},{default:()=>s0}),lr);var lr,C=t(1581);const D=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>M_()});var P=t(4163),j=t(2565),W=t(3978),re=t.n(W),ie=t(6785),ge=t(7930);const _e=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>Dg()});var Le=t(6145),Re=t(374),ke=t(8818),xe=t(29),U=t(5171),pt=t(2740),ht=t(7512);const wt=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>jx()});var It=t(626),dn=t(9725),Lt=t(8900),Dn=t(8518);const Mn=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>a0()}),$r=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>Vx()}),ur=(Yi=>{var lr={};return t.d(lr,Yi),lr})({default:()=>ug()});var Pr=t(6298),xr=["path","method"],fn="spec_update_spec",Nn="spec_update_url",$n="spec_update_json",Qn="spec_update_param",Tn="spec_update_empty_param_inclusion",Yr="spec_validate_param",ji="spec_set_response",ii="spec_set_request",Ui="spec_set_mutated_request",Jr="spec_log_request",An="spec_clear_response",hn="spec_clear_request",qr="spec_clear_validate_param",Ri="spec_update_operation_meta_value",qi="spec_update_resolved",Zo="spec_update_resolved_subtree",bo="set_scheme";function Ys(Yi){var lr,mi=(lr=Yi,(0,Mn.default)(lr)?lr:"").replace(/\t/g,"  ");if("string"==typeof Yi)return{type:fn,payload:mi}}function Ws(Yi){return{type:qi,payload:Yi}}function wi(Yi){return{type:Nn,payload:Yi}}function lo(Yi){return{type:$n,payload:Yi}}var go=function(Yi){return function(lr){var mi=lr.specActions,Lo=lr.errActions,Xo=lr.specSelectors.specStr,rs=null;try{Yi=Yi||Xo(),Lo.clear({source:"parser"}),rs=It.default.load(Yi,{schema:It.JSON_SCHEMA})}catch(us){return console.error(us),Lo.newSpecErr({source:"parser",level:"error",message:us.reason,line:us.mark&&us.mark.line?us.mark.line+1:void 0})}return rs&&"object"===(0,C.default)(rs)?mi.updateJsonSpec(rs):{}}},Ge=!1,St=function(Yi,lr){return function(mi){var eo=mi.specActions,Lo=mi.specSelectors,Xo=mi.errActions,rs=mi.fn,us=rs.fetch,ma=rs.resolve,Ka=rs.AST,xu=void 0===Ka?{}:Ka,Kn=mi.getConfigs;Ge||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),Ge=!0);var Pi=Kn(),as=Pi.modelPropertyMacro,Zi=Pi.parameterMacro,xs=Pi.requestInterceptor,is=Pi.responseInterceptor;void 0===Yi&&(Yi=Lo.specJson()),void 0===lr&&(lr=Lo.url());var hu=xu.getLineNumberForPath?xu.getLineNumberForPath:function(){},Al=Lo.specStr();return ma({fetch:us,spec:Yi,baseDoc:lr,modelPropertyMacro:as,parameterMacro:Zi,requestInterceptor:xs,responseInterceptor:is}).then(function(Ci){var qa=Ci.spec,ja=Ci.errors;if(Xo.clear({type:"thrown"}),(0,P.default)(ja)&&ja.length>0){var Ku=(0,j.default)(ja).call(ja,function(Du){return console.error(Du),Du.line=Du.fullPath?hu(Al,Du.fullPath):null,Du.path=Du.fullPath?Du.fullPath.join("."):null,Du.level="error",Du.type="thrown",Du.source="resolver",re()(Du,"message",{enumerable:!0,value:Du.message}),Du});Xo.newThrownErrBatch(Ku)}return eo.updateResolved(qa)})}},Et=[],Bn=(0,$r.default)((0,g.default)(D.default.mark(function Yi(){var lr,mi,eo,Lo,Xo,rs,us,ma,Ka,xu,Kn,Pi,as,Zi,xs,is,hu,Al;return D.default.wrap(function(Ci){for(;;)switch(Ci.prev=Ci.next){case 0:if(lr=Et.system){Ci.next=4;break}return console.error("debResolveSubtrees: don't have a system to operate on, aborting."),Ci.abrupt("return");case 4:if(mi=lr.errActions,eo=lr.errSelectors,rs=(Lo=lr.fn).fetch,ma=void 0===(us=Lo.AST)?{}:us,Ka=lr.specSelectors,xu=lr.specActions,Xo=Lo.resolveSubtree){Ci.next=8;break}return console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing."),Ci.abrupt("return");case 8:return Kn=ma.getLineNumberForPath?ma.getLineNumberForPath:function(){},Pi=Ka.specStr(),as=lr.getConfigs(),Zi=as.modelPropertyMacro,xs=as.parameterMacro,is=as.requestInterceptor,hu=as.responseInterceptor,Ci.prev=11,Ci.next=14,(0,ie.default)(Et).call(Et,function(){var qa=(0,g.default)(D.default.mark(function ja(Ku,Du){var If,Jp,Ql,Jf,pg,Qp,Ng,I_,l1;return D.default.wrap(function(Xp){for(;;)switch(Xp.prev=Xp.next){case 0:return Xp.next=2,Ku;case 2:return Jp=(If=Xp.sent).resultMap,Ql=If.specWithCurrentSubtrees,Xp.next=7,Xo(Ql,Du,{baseDoc:Ka.url(),modelPropertyMacro:Zi,parameterMacro:xs,requestInterceptor:is,responseInterceptor:hu});case 7:if(pg=(Jf=Xp.sent).errors,Qp=Jf.spec,eo.allErrors().size&&mi.clearBy(function(gd){var Pg;return"thrown"!==gd.get("type")||"resolver"!==gd.get("source")||!(0,ge.default)(Pg=gd.get("fullPath")).call(Pg,function(Em,hg){return Em===Du[hg]||void 0===Du[hg]})}),(0,P.default)(pg)&&pg.length>0&&(Ng=(0,j.default)(pg).call(pg,function(gd){return gd.line=gd.fullPath?Kn(Pi,gd.fullPath):null,gd.path=gd.fullPath?gd.fullPath.join("."):null,gd.level="error",gd.type="thrown",gd.source="resolver",re()(gd,"message",{enumerable:!0,value:gd.message}),gd}),mi.newThrownErrBatch(Ng)),!Qp||!Ka.isOAS3()||"components"!==Du[0]||"securitySchemes"!==Du[1]){Xp.next=15;break}return Xp.next=15,_e.default.all((0,j.default)(I_=(0,Le.default)(l1=(0,Re.default)(Qp)).call(l1,function(gd){return"openIdConnect"===gd.type})).call(I_,function(){var gd=(0,g.default)(D.default.mark(function Pg(Em){var hg,iv;return D.default.wrap(function(Lp){for(;;)switch(Lp.prev=Lp.next){case 0:return hg={url:Em.openIdConnectUrl,requestInterceptor:is,responseInterceptor:hu},Lp.prev=1,Lp.next=4,rs(hg);case 4:(iv=Lp.sent)instanceof Error||iv.status>=400?console.error(iv.statusText+" "+hg.url):Em.openIdConnectData=JSON.parse(iv.text),Lp.next=11;break;case 8:Lp.prev=8,Lp.t0=Lp.catch(1),console.error(Lp.t0);case 11:case"end":return Lp.stop()}},Pg,null,[[1,8]])}));return function(Pg){return gd.apply(this,arguments)}}()));case 15:return(0,ur.default)(Jp,Du,Qp),(0,ur.default)(Ql,Du,Qp),Xp.abrupt("return",{resultMap:Jp,specWithCurrentSubtrees:Ql});case 18:case"end":return Xp.stop()}},ja)}));return function(ja,Ku){return qa.apply(this,arguments)}}(),_e.default.resolve({resultMap:(Ka.specResolvedSubtree([])||(0,dn.Map)()).toJS(),specWithCurrentSubtrees:Ka.specJson().toJS()}));case 14:Al=Ci.sent,delete Et.system,Et=[],Ci.next=22;break;case 19:Ci.prev=19,Ci.t0=Ci.catch(11),console.error(Ci.t0);case 22:xu.updateResolvedSubtree([],Al.resultMap);case 23:case"end":return Ci.stop()}},Yi,null,[[11,19]])})),35),_r=function(Yi){return function(lr){var mi;(0,ke.default)(mi=(0,j.default)(Et).call(Et,function(eo){return eo.join("@@")})).call(mi,Yi.join("@@"))>-1||(Et.push(Yi),Et.system=lr,Bn())}};function Gr(Yi,lr,mi,eo,Lo){return{type:Qn,payload:{path:Yi,value:eo,paramName:lr,paramIn:mi,isXml:Lo}}}function xi(Yi,lr,mi,eo){return{type:Qn,payload:{path:Yi,param:lr,value:mi,isXml:eo}}}var Zs=function(Yi,lr){return{type:Zo,payload:{path:Yi,value:lr}}},jo=function(){return{type:Zo,payload:{path:[],value:(0,dn.Map)()}}},sl=function(Yi,lr){return{type:Yr,payload:{pathMethod:Yi,isOAS3:lr}}},ml=function(Yi,lr,mi,eo){return{type:Tn,payload:{pathMethod:Yi,paramName:lr,paramIn:mi,includeEmptyValue:eo}}};function nu(Yi){return{type:qr,payload:{pathMethod:Yi}}}function Xu(Yi,lr){return{type:Ri,payload:{path:Yi,value:lr,key:"consumes_value"}}}function Pf(Yi,lr){return{type:Ri,payload:{path:Yi,value:lr,key:"produces_value"}}}var Fl=function(Yi,lr,mi){return{payload:{path:Yi,method:lr,res:mi},type:ji}},qc=function(Yi,lr,mi){return{payload:{path:Yi,method:lr,req:mi},type:ii}},up=function(Yi,lr,mi){return{payload:{path:Yi,method:lr,req:mi},type:Ui}},Eh=function(Yi){return{payload:Yi,type:Jr}},Wp=function(Yi){return function(lr){var mi,eo,Lo=lr.fn,Xo=lr.specActions,rs=lr.specSelectors,ma=lr.oas3Selectors,Ka=Yi.pathName,xu=Yi.method,Kn=Yi.operation,Pi=(0,lr.getConfigs)(),as=Pi.requestInterceptor,Zi=Pi.responseInterceptor,xs=Kn.toJS();if(Kn&&Kn.get("parameters")&&(0,xe.default)(mi=(0,Le.default)(eo=Kn.get("parameters")).call(eo,function(Ql){return Ql&&!0===Ql.get("allowEmptyValue")})).call(mi,function(Ql){if(rs.parameterInclusionSettingFor([Ka,xu],Ql.get("name"),Ql.get("in"))){Yi.parameters=Yi.parameters||{};var Jf=(0,Pr.cz)(Ql,Yi.parameters);(!Jf||Jf&&0===Jf.size)&&(Yi.parameters[Ql.get("name")]="")}}),Yi.contextUrl=(0,Lt.default)(rs.url()).toString(),xs&&xs.operationId?Yi.operationId=xs.operationId:xs&&Ka&&xu&&(Yi.operationId=Lo.opId(xs,Ka,xu)),rs.isOAS3()){var is,hu=(0,U.default)(is="".concat(Ka,":")).call(is,xu);Yi.server=ma.selectedServer(hu)||ma.selectedServer();var Al=ma.serverVariables({server:Yi.server,namespace:hu}).toJS(),Ci=ma.serverVariables({server:Yi.server}).toJS();Yi.serverVariables=(0,pt.default)(Al).length?Al:Ci,Yi.requestContentType=ma.requestContentType(Ka,xu),Yi.responseContentType=ma.responseContentType(Ka,xu)||"*/*";var qa,ja=ma.requestBodyValue(Ka,xu),Ku=ma.requestBodyInclusionSetting(Ka,xu);Yi.requestBody=ja&&ja.toJS?(0,Le.default)(qa=(0,j.default)(ja).call(ja,function(Ql){return dn.Map.isMap(Ql)?Ql.get("value"):Ql})).call(qa,function(Ql,Jf){return((0,P.default)(Ql)?0!==Ql.length:!(0,Pr.O2)(Ql))||Ku.get(Jf)}).toJS():ja}var Du=(0,ht.default)({},Yi);Du=Lo.buildRequest(Du),Xo.setRequest(Yi.pathName,Yi.method,Du);var Ql,If=(Ql=(0,g.default)(D.default.mark(function Jf(pg){var Qp,Ng;return D.default.wrap(function(I_){for(;;)switch(I_.prev=I_.next){case 0:return I_.next=2,as.apply(void 0,[pg]);case 2:return Ng=(0,ht.default)({},Qp=I_.sent),Xo.setMutatedRequest(Yi.pathName,Yi.method,Ng),I_.abrupt("return",Qp);case 6:case"end":return I_.stop()}},Jf)})),function(Jf){return Ql.apply(this,arguments)});Yi.requestInterceptor=If,Yi.responseInterceptor=Zi;var Jp=(0,wt.default)();return Lo.execute(Yi).then(function(Ql){Ql.duration=(0,wt.default)()-Jp,Xo.setResponse(Yi.pathName,Yi.method,Ql)}).catch(function(Ql){"Failed to fetch"===Ql.message&&(Ql.name="",Ql.message='**Failed to fetch.**  \n**Possible Reasons:** \n  - CORS \n  - Network Failure \n  - URL scheme must be "http" or "https" for CORS request.'),Xo.setResponse(Yi.pathName,Yi.method,{error:!0,err:(0,Dn.serializeError)(Ql)})})}},Th=function(){var Yi=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},lr=Yi.path,mi=Yi.method,eo=(0,c.default)(Yi,xr);return function(Lo){var Xo=Lo.fn.fetch,rs=Lo.specSelectors,us=Lo.specActions,ma=rs.specJsonWithResolvedSubtrees().toJS(),Ka=rs.operationScheme(lr,mi),xu=rs.contentTypeValues([lr,mi]).toJS(),Kn=xu.requestContentType,Pi=xu.responseContentType,as=/xml/i.test(Kn),Zi=rs.parameterValues([lr,mi],as).toJS();return us.executeRequest((0,o.default)((0,o.default)({},eo),{},{fetch:Xo,spec:ma,pathName:lr,method:mi,parameters:Zi,requestContentType:Kn,scheme:Ka,responseContentType:Pi}))}};function ru(Yi,lr){return{type:An,payload:{path:Yi,method:lr}}}function Zc(Yi,lr){return{type:hn,payload:{path:Yi,method:lr}}}function Ip(Yi,lr,mi){return{type:bo,payload:{scheme:Yi,path:lr,method:mi}}}},7038:(n,s,t)=>{t.r(s),t.d(s,{default:()=>D});var o=t(32),c=t(1737),g=t(3881),C=t(7508);function D(){return{statePlugins:{spec:{wrapActions:C,reducers:o.default,actions:c,selectors:g}}}}},32:(n,s,t)=>{t.r(s),t.d(s,{default:()=>Le});var o,c=t(775),g=t(2691),C=t(5171),D=t(6785),P=t(2565),j=t(7512),W=t(9725),re=t(6298),ie=t(7504),ge=t(3881),_e=t(1737);const Le=((0,c.default)(o={},_e.UPDATE_SPEC,function(Re,ke){return"string"==typeof ke.payload?Re.set("spec",ke.payload):Re}),(0,c.default)(o,_e.UPDATE_URL,function(Re,ke){return Re.set("url",ke.payload+"")}),(0,c.default)(o,_e.UPDATE_JSON,function(Re,ke){return Re.set("json",(0,re.oG)(ke.payload))}),(0,c.default)(o,_e.UPDATE_RESOLVED,function(Re,ke){return Re.setIn(["resolved"],(0,re.oG)(ke.payload))}),(0,c.default)(o,_e.UPDATE_RESOLVED_SUBTREE,function(Re,ke){var xe,U=ke.payload,pt=U.value,ht=U.path;return Re.setIn((0,C.default)(xe=["resolvedSubtrees"]).call(xe,(0,g.default)(ht)),(0,re.oG)(pt))}),(0,c.default)(o,_e.UPDATE_PARAM,function(Re,ke){var xe,U,pt=ke.payload,ht=pt.path,wt=pt.paramName,It=pt.paramIn,dn=pt.param,Lt=pt.value,Dn=pt.isXml,Mn=dn?(0,re.V9)(dn):(0,C.default)(xe="".concat(It,".")).call(xe,wt),$r=Dn?"value_xml":"value";return Re.setIn((0,C.default)(U=["meta","paths"]).call(U,(0,g.default)(ht),["parameters",Mn,$r]),Lt)}),(0,c.default)(o,_e.UPDATE_EMPTY_PARAM_INCLUSION,function(Re,ke){var xe,U,pt=ke.payload,ht=pt.pathMethod,wt=pt.paramName,It=pt.paramIn,dn=pt.includeEmptyValue;if(!wt||!It)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),Re;var Lt=(0,C.default)(xe="".concat(It,".")).call(xe,wt);return Re.setIn((0,C.default)(U=["meta","paths"]).call(U,(0,g.default)(ht),["parameter_inclusions",Lt]),dn)}),(0,c.default)(o,_e.VALIDATE_PARAMS,function(Re,ke){var xe,U,pt=ke.payload,ht=pt.pathMethod,wt=pt.isOAS3,It=(0,ge.specJsonWithResolvedSubtrees)(Re).getIn((0,C.default)(xe=["paths"]).call(xe,(0,g.default)(ht))),dn=(0,ge.parameterValues)(Re,ht).toJS();return Re.updateIn((0,C.default)(U=["meta","paths"]).call(U,(0,g.default)(ht),["parameters"]),(0,W.fromJS)({}),function(Lt){var Dn;return(0,D.default)(Dn=It.get("parameters",(0,W.List)())).call(Dn,function(Mn,$r){var ur=(0,re.cz)($r,dn),Pr=(0,ge.parameterInclusionSettingFor)(Re,ht,$r.get("name"),$r.get("in")),xr=(0,re.Ik)($r,ur,{bypassRequiredCheck:Pr,isOAS3:wt});return Mn.setIn([(0,re.V9)($r),"errors"],(0,W.fromJS)(xr))},Lt)})}),(0,c.default)(o,_e.CLEAR_VALIDATE_PARAMS,function(Re,ke){var xe,U=ke.payload.pathMethod;return Re.updateIn((0,C.default)(xe=["meta","paths"]).call(xe,(0,g.default)(U),["parameters"]),(0,W.fromJS)([]),function(pt){return(0,P.default)(pt).call(pt,function(ht){return ht.set("errors",(0,W.fromJS)([]))})})}),(0,c.default)(o,_e.SET_RESPONSE,function(Re,ke){var xe,U=ke.payload,pt=U.res,ht=U.path,wt=U.method;(xe=pt.error?(0,j.default)({error:!0,name:pt.err.name,message:pt.err.message,statusCode:pt.err.statusCode},pt.err.response):pt).headers=xe.headers||{};var It=Re.setIn(["responses",ht,wt],(0,re.oG)(xe));return ie.Z.Blob&&pt.data instanceof ie.Z.Blob&&(It=It.setIn(["responses",ht,wt,"text"],pt.data)),It}),(0,c.default)(o,_e.SET_REQUEST,function(Re,ke){var xe=ke.payload;return Re.setIn(["requests",xe.path,xe.method],(0,re.oG)(xe.req))}),(0,c.default)(o,_e.SET_MUTATED_REQUEST,function(Re,ke){var xe=ke.payload;return Re.setIn(["mutatedRequests",xe.path,xe.method],(0,re.oG)(xe.req))}),(0,c.default)(o,_e.UPDATE_OPERATION_META_VALUE,function(Re,ke){var xe,U,pt,ht,wt,It,dn=ke.payload,Lt=dn.path,Dn=dn.value,Mn=dn.key,$r=(0,C.default)(xe=["paths"]).call(xe,(0,g.default)(Lt)),ur=(0,C.default)(U=["meta","paths"]).call(U,(0,g.default)(Lt));return Re.getIn((0,C.default)(pt=["json"]).call(pt,(0,g.default)($r)))||Re.getIn((0,C.default)(ht=["resolved"]).call(ht,(0,g.default)($r)))||Re.getIn((0,C.default)(wt=["resolvedSubtrees"]).call(wt,(0,g.default)($r)))?Re.setIn((0,C.default)(It=[]).call(It,(0,g.default)(ur),[Mn]),(0,W.fromJS)(Dn)):Re}),(0,c.default)(o,_e.CLEAR_RESPONSE,function(Re,ke){var xe=ke.payload;return Re.deleteIn(["responses",xe.path,xe.method])}),(0,c.default)(o,_e.CLEAR_REQUEST,function(Re,ke){var xe=ke.payload;return Re.deleteIn(["requests",xe.path,xe.method])}),(0,c.default)(o,_e.SET_SCHEME,function(Re,ke){var xe=ke.payload,U=xe.scheme,pt=xe.path,ht=xe.method;return pt&&ht?Re.setIn(["scheme",pt,ht],U):pt||ht?void 0:Re.setIn(["scheme","_defaultScheme"],U)}),o)},3881:(n,s,t)=>{t.r(s),t.d(s,{lastError:()=>ht,url:()=>wt,specStr:()=>It,specSource:()=>dn,specJson:()=>Lt,specResolved:()=>Dn,specResolvedSubtree:()=>Mn,specJsonWithResolvedSubtrees:()=>ur,spec:()=>Pr,isOAS3:()=>xr,info:()=>fn,externalDocs:()=>Nn,version:()=>$n,semver:()=>Qn,paths:()=>Tn,operations:()=>Yr,consumes:()=>ji,produces:()=>ii,security:()=>Ui,securityDefinitions:()=>Jr,findDefinition:()=>An,definitions:()=>hn,basePath:()=>qr,host:()=>Ri,schemes:()=>qi,operationsWithRootInherited:()=>Zo,tags:()=>bo,tagDetails:()=>Ys,operationsWithTags:()=>Ws,taggedOperations:()=>wi,responses:()=>lo,requests:()=>go,mutatedRequests:()=>Ge,responseFor:()=>St,requestFor:()=>Et,mutatedRequestFor:()=>Bn,allowTryItOutFor:()=>_r,parameterWithMetaByIdentity:()=>Gr,parameterInclusionSettingFor:()=>xi,parameterWithMeta:()=>Zs,operationWithMeta:()=>jo,getParameter:()=>sl,hasHost:()=>ml,parameterValues:()=>nu,parametersIncludeIn:()=>Xu,parametersIncludeType:()=>Pf,contentTypeValues:()=>Fl,currentProducesFor:()=>qc,producesOptionsFor:()=>up,consumesOptionsFor:()=>Eh,operationScheme:()=>Wp,canExecuteScheme:()=>Th,validateBeforeExecute:()=>ru,getOAS3RequiredRequestBodyContentType:()=>Zc,isMediaTypeSchemaPropertiesEqual:()=>Ip});var o=t(9334),c=t(2691),g=t(5171),C=t(8136),D=t(29),P=t(8818),j=t(2565),W=t(6145),re=t(1778),ie=t(6785),ge=t(4350),_e=t(9963),Le=t(4163),Re=t(8639),ke=t(6298),xe=t(9725),U=["get","put","post","delete","options","head","patch","trace"],pt=function(lr){return lr||(0,xe.Map)()},ht=(0,Re.createSelector)(pt,function(lr){return lr.get("lastError")}),wt=(0,Re.createSelector)(pt,function(lr){return lr.get("url")}),It=(0,Re.createSelector)(pt,function(lr){return lr.get("spec")||""}),dn=(0,Re.createSelector)(pt,function(lr){return lr.get("specSource")||"not-editor"}),Lt=(0,Re.createSelector)(pt,function(lr){return lr.get("json",(0,xe.Map)())}),Dn=(0,Re.createSelector)(pt,function(lr){return lr.get("resolved",(0,xe.Map)())}),Mn=function(lr,mi){var eo;return lr.getIn((0,g.default)(eo=["resolvedSubtrees"]).call(eo,(0,c.default)(mi)),void 0)},$r=function lr(mi,eo){return xe.Map.isMap(mi)&&xe.Map.isMap(eo)?eo.get("$$ref")?eo:(0,xe.OrderedMap)().mergeWith(lr,mi,eo):eo},ur=(0,Re.createSelector)(pt,function(lr){return(0,xe.OrderedMap)().mergeWith($r,lr.get("json"),lr.get("resolvedSubtrees"))}),Pr=function(lr){return Lt(lr)},xr=(0,Re.createSelector)(Pr,function(){return!1}),fn=(0,Re.createSelector)(Pr,function(lr){return Yi(lr&&lr.get("info"))}),Nn=(0,Re.createSelector)(Pr,function(lr){return Yi(lr&&lr.get("externalDocs"))}),$n=(0,Re.createSelector)(fn,function(lr){return lr&&lr.get("version")}),Qn=(0,Re.createSelector)($n,function(lr){var mi;return(0,C.default)(mi=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(lr)).call(mi,1)}),Tn=(0,Re.createSelector)(ur,function(lr){return lr.get("paths")}),Yr=(0,Re.createSelector)(Tn,function(lr){if(!lr||lr.size<1)return(0,xe.List)();var mi=(0,xe.List)();return lr&&(0,D.default)(lr)?((0,D.default)(lr).call(lr,function(eo,Lo){if(!eo||!(0,D.default)(eo))return{};(0,D.default)(eo).call(eo,function(Xo,rs){var us;(0,P.default)(U).call(U,rs)<0||(mi=mi.push((0,xe.fromJS)({path:Lo,method:rs,operation:Xo,id:(0,g.default)(us="".concat(rs,"-")).call(us,Lo)})))})}),mi):(0,xe.List)()}),ji=(0,Re.createSelector)(Pr,function(lr){return(0,xe.Set)(lr.get("consumes"))}),ii=(0,Re.createSelector)(Pr,function(lr){return(0,xe.Set)(lr.get("produces"))}),Ui=(0,Re.createSelector)(Pr,function(lr){return lr.get("security",(0,xe.List)())}),Jr=(0,Re.createSelector)(Pr,function(lr){return lr.get("securityDefinitions")}),An=function(lr,mi){var eo=lr.getIn(["resolvedSubtrees","definitions",mi],null),Lo=lr.getIn(["json","definitions",mi],null);return eo||Lo||null},hn=(0,Re.createSelector)(Pr,function(lr){var mi=lr.get("definitions");return xe.Map.isMap(mi)?mi:(0,xe.Map)()}),qr=(0,Re.createSelector)(Pr,function(lr){return lr.get("basePath")}),Ri=(0,Re.createSelector)(Pr,function(lr){return lr.get("host")}),qi=(0,Re.createSelector)(Pr,function(lr){return lr.get("schemes",(0,xe.Map)())}),Zo=(0,Re.createSelector)(Yr,ji,ii,function(lr,mi,eo){return(0,j.default)(lr).call(lr,function(Lo){return Lo.update("operation",function(Xo){return Xo?xe.Map.isMap(Xo)?Xo.withMutations(function(rs){return rs.get("consumes")||rs.update("consumes",function(us){return(0,xe.Set)(us).merge(mi)}),rs.get("produces")||rs.update("produces",function(us){return(0,xe.Set)(us).merge(eo)}),rs}):void 0:(0,xe.Map)()})})}),bo=(0,Re.createSelector)(Pr,function(lr){var mi=lr.get("tags",(0,xe.List)());return xe.List.isList(mi)?(0,W.default)(mi).call(mi,function(eo){return xe.Map.isMap(eo)}):(0,xe.List)()}),Ys=function(lr,mi){var eo,Lo=bo(lr)||(0,xe.List)();return(0,re.default)(eo=(0,W.default)(Lo).call(Lo,xe.Map.isMap)).call(eo,function(Xo){return Xo.get("name")===mi},(0,xe.Map)())},Ws=(0,Re.createSelector)(Zo,bo,function(lr,mi){return(0,ie.default)(lr).call(lr,function(eo,Lo){var Xo=(0,xe.Set)(Lo.getIn(["operation","tags"]));return Xo.count()<1?eo.update("default",(0,xe.List)(),function(rs){return rs.push(Lo)}):(0,ie.default)(Xo).call(Xo,function(rs,us){return rs.update(us,(0,xe.List)(),function(ma){return ma.push(Lo)})},eo)},(0,ie.default)(mi).call(mi,function(eo,Lo){return eo.set(Lo.get("name"),(0,xe.List)())},(0,xe.OrderedMap)()))}),wi=function(lr){return function(mi){var eo,Lo=(0,mi.getConfigs)(),Xo=Lo.tagsSorter,rs=Lo.operationsSorter;return(0,j.default)(eo=Ws(lr).sortBy(function(us,ma){return ma},function(us,ma){var Ka="function"==typeof Xo?Xo:ke.wh.tagsSorter[Xo];return Ka?Ka(us,ma):null})).call(eo,function(us,ma){var Ka="function"==typeof rs?rs:ke.wh.operationsSorter[rs],xu=Ka?(0,ge.default)(us).call(us,Ka):us;return(0,xe.Map)({tagDetails:Ys(lr,ma),operations:xu})})}},lo=(0,Re.createSelector)(pt,function(lr){return lr.get("responses",(0,xe.Map)())}),go=(0,Re.createSelector)(pt,function(lr){return lr.get("requests",(0,xe.Map)())}),Ge=(0,Re.createSelector)(pt,function(lr){return lr.get("mutatedRequests",(0,xe.Map)())}),St=function(lr,mi,eo){return lo(lr).getIn([mi,eo],null)},Et=function(lr,mi,eo){return go(lr).getIn([mi,eo],null)},Bn=function(lr,mi,eo){return Ge(lr).getIn([mi,eo],null)},_r=function(){return!0},Gr=function(lr,mi,eo){var Lo,Xo,rs=ur(lr).getIn((0,g.default)(Lo=["paths"]).call(Lo,(0,c.default)(mi),["parameters"]),(0,xe.OrderedMap)()),us=lr.getIn((0,g.default)(Xo=["meta","paths"]).call(Xo,(0,c.default)(mi),["parameters"]),(0,xe.OrderedMap)()),ma=(0,j.default)(rs).call(rs,function(Ka){var xu,Kn,Pi,as=us.get((0,g.default)(xu="".concat(eo.get("in"),".")).call(xu,eo.get("name"))),Zi=us.get((0,g.default)(Kn=(0,g.default)(Pi="".concat(eo.get("in"),".")).call(Pi,eo.get("name"),".hash-")).call(Kn,eo.hashCode()));return(0,xe.OrderedMap)().merge(Ka,as,Zi)});return(0,re.default)(ma).call(ma,function(Ka){return Ka.get("in")===eo.get("in")&&Ka.get("name")===eo.get("name")},(0,xe.OrderedMap)())},xi=function(lr,mi,eo,Lo){var Xo,rs,us=(0,g.default)(Xo="".concat(Lo,".")).call(Xo,eo);return lr.getIn((0,g.default)(rs=["meta","paths"]).call(rs,(0,c.default)(mi),["parameter_inclusions",us]),!1)},Zs=function(lr,mi,eo,Lo){var Xo,rs=ur(lr).getIn((0,g.default)(Xo=["paths"]).call(Xo,(0,c.default)(mi),["parameters"]),(0,xe.OrderedMap)()),us=(0,re.default)(rs).call(rs,function(ma){return ma.get("in")===Lo&&ma.get("name")===eo},(0,xe.OrderedMap)());return Gr(lr,mi,us)},jo=function(lr,mi,eo){var Lo,Xo=ur(lr).getIn(["paths",mi,eo],(0,xe.OrderedMap)()),rs=lr.getIn(["meta","paths",mi,eo],(0,xe.OrderedMap)()),us=(0,j.default)(Lo=Xo.get("parameters",(0,xe.List)())).call(Lo,function(ma){return Gr(lr,[mi,eo],ma)});return(0,xe.OrderedMap)().merge(Xo,rs).set("parameters",us)};function sl(lr,mi,eo,Lo){var Xo;mi=mi||[];var rs=lr.getIn((0,g.default)(Xo=["meta","paths"]).call(Xo,(0,c.default)(mi),["parameters"]),(0,xe.fromJS)([]));return(0,re.default)(rs).call(rs,function(us){return xe.Map.isMap(us)&&us.get("name")===eo&&us.get("in")===Lo})||(0,xe.Map)()}var ml=(0,Re.createSelector)(Pr,function(lr){var mi=lr.get("host");return"string"==typeof mi&&mi.length>0&&"/"!==mi[0]});function nu(lr,mi,eo){var Lo;mi=mi||[];var Xo=jo.apply(void 0,(0,g.default)(Lo=[lr]).call(Lo,(0,c.default)(mi))).get("parameters",(0,xe.List)());return(0,ie.default)(Xo).call(Xo,function(rs,us){var ma=eo&&"body"===us.get("in")?us.get("value_xml"):us.get("value");return rs.set((0,ke.V9)(us,{allowHashes:!1}),ma)},(0,xe.fromJS)({}))}function Xu(lr){var mi=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(xe.List.isList(lr))return(0,_e.default)(lr).call(lr,function(eo){return xe.Map.isMap(eo)&&eo.get("in")===mi})}function Pf(lr){var mi=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(xe.List.isList(lr))return(0,_e.default)(lr).call(lr,function(eo){return xe.Map.isMap(eo)&&eo.get("type")===mi})}function Fl(lr,mi){var eo,Lo;mi=mi||[];var Xo=ur(lr).getIn((0,g.default)(eo=["paths"]).call(eo,(0,c.default)(mi)),(0,xe.fromJS)({})),rs=lr.getIn((0,g.default)(Lo=["meta","paths"]).call(Lo,(0,c.default)(mi)),(0,xe.fromJS)({})),us=qc(lr,mi),ma=Xo.get("parameters")||new xe.List,Ka=rs.get("consumes_value")?rs.get("consumes_value"):Pf(ma,"file")?"multipart/form-data":Pf(ma,"formData")?"application/x-www-form-urlencoded":void 0;return(0,xe.fromJS)({requestContentType:Ka,responseContentType:us})}function qc(lr,mi){var eo,Lo;mi=mi||[];var Xo=ur(lr).getIn((0,g.default)(eo=["paths"]).call(eo,(0,c.default)(mi)),null);if(null!==Xo){var rs=lr.getIn((0,g.default)(Lo=["meta","paths"]).call(Lo,(0,c.default)(mi),["produces_value"]),null),us=Xo.getIn(["produces",0],null);return rs||us||"application/json"}}function up(lr,mi){var eo;mi=mi||[];var Lo=ur(lr),Xo=Lo.getIn((0,g.default)(eo=["paths"]).call(eo,(0,c.default)(mi)),null);if(null!==Xo){var us=(0,o.default)(mi,1)[0],ma=Xo.get("produces",null),Ka=Lo.getIn(["paths",us,"produces"],null),xu=Lo.getIn(["produces"],null);return ma||Ka||xu}}function Eh(lr,mi){var eo;mi=mi||[];var Lo=ur(lr),Xo=Lo.getIn((0,g.default)(eo=["paths"]).call(eo,(0,c.default)(mi)),null);if(null!==Xo){var us=(0,o.default)(mi,1)[0],ma=Xo.get("consumes",null),Ka=Lo.getIn(["paths",us,"consumes"],null),xu=Lo.getIn(["consumes"],null);return ma||Ka||xu}}var Wp=function(lr,mi,eo){var Lo=lr.get("url").match(/^([a-z][a-z0-9+\-.]*):/),Xo=(0,Le.default)(Lo)?Lo[1]:null;return lr.getIn(["scheme",mi,eo])||lr.getIn(["scheme","_defaultScheme"])||Xo||""},Th=function(lr,mi,eo){var Lo;return(0,P.default)(Lo=["http","https"]).call(Lo,Wp(lr,mi,eo))>-1},ru=function(lr,mi){var eo;mi=mi||[];var Lo=lr.getIn((0,g.default)(eo=["meta","paths"]).call(eo,(0,c.default)(mi),["parameters"]),(0,xe.fromJS)([])),Xo=!0;return(0,D.default)(Lo).call(Lo,function(rs){var us=rs.get("errors");us&&us.count()&&(Xo=!1)}),Xo},Zc=function(lr,mi){var eo,Lo,Xo={requestBody:!1,requestContentType:{}},rs=lr.getIn((0,g.default)(eo=["resolvedSubtrees","paths"]).call(eo,(0,c.default)(mi),["requestBody"]),(0,xe.fromJS)([]));return rs.size<1||(rs.getIn(["required"])&&(Xo.requestBody=rs.getIn(["required"])),(0,D.default)(Lo=rs.getIn(["content"]).entrySeq()).call(Lo,function(us){var ma=us[0];if(us[1].getIn(["schema","required"])){var Ka=us[1].getIn(["schema","required"]).toJS();Xo.requestContentType[ma]=Ka}})),Xo},Ip=function(lr,mi,eo,Lo){var Xo;if((eo||Lo)&&eo===Lo)return!0;var rs=lr.getIn((0,g.default)(Xo=["resolvedSubtrees","paths"]).call(Xo,(0,c.default)(mi),["requestBody","content"]),(0,xe.fromJS)([]));if(rs.size<2||!eo||!Lo)return!1;var us=rs.getIn([eo,"schema","properties"],(0,xe.fromJS)([])),ma=rs.getIn([Lo,"schema","properties"],(0,xe.fromJS)([]));return!!us.equals(ma)};function Yi(lr){return xe.Map.isMap(lr)?lr:new xe.Map}},7508:(n,s,t)=>{t.r(s),t.d(s,{updateSpec:()=>C,updateJsonSpec:()=>D,executeRequest:()=>P,validateParams:()=>j});var o=t(2740),c=t(29),g=t(9908),C=function(W,re){var ie=re.specActions;return function(){W.apply(void 0,arguments),ie.parseToJson.apply(ie,arguments)}},D=function(W,re){var ie=re.specActions;return function(){for(var ge=arguments.length,_e=new Array(ge),Le=0;Le<ge;Le++)_e[Le]=arguments[Le];W.apply(void 0,_e),ie.invalidateResolvedSubtreeCache();var Re=_e[0],ke=(0,g.default)(Re,["paths"])||{},xe=(0,o.default)(ke);(0,c.default)(xe).call(xe,function(U){(0,g.default)(ke,[U]).$ref&&ie.requestResolvedSubtree(["paths",U])}),ie.requestResolvedSubtree(["components","securitySchemes"])}},P=function(W,re){var ie=re.specActions;return function(ge){return ie.logRequest(ge),W(ge)}},j=function(W,re){var ie=re.specSelectors;return function(ge){return W(ge,ie.isOAS3())}}},4852:(n,s,t)=>{t.r(s),t.d(s,{loaded:()=>o});var o=function(c,g){return function(){c.apply(void 0,arguments);var C=g.getConfigs().withCredentials;void 0!==C&&(g.fn.fetch.withCredentials="string"==typeof C?"true"===C:!!C)}}},2990:(n,s,t)=>{t.r(s),t.d(s,{default:()=>W});var o=t(5171);const c=(t.d(ie={},{default:()=>n6}),ie),g=(re=>{var ie={};return t.d(ie,re),ie})({buildRequest:()=>u6,execute:()=>P8}),C=(re=>{var ie={};return t.d(ie,re),ie})({default:()=>iA,makeHttp:()=>v3,serializeRes:()=>YT}),D=(re=>{var ie={};return t.d(ie,re),ie})({default:()=>H8});var ie,P=t(5013),j=t(4852);function W(re){var ie=re.configs,ge=re.getConfigs;return{fn:{fetch:(0,C.makeHttp)(C.default,ie.preFetch,ie.postFetch),buildRequest:g.buildRequest,execute:g.execute,resolve:c.default,resolveSubtree:function(_e,Le,Re){var ke;if(void 0===Re){var xe=ge();Re={modelPropertyMacro:xe.modelPropertyMacro,parameterMacro:xe.parameterMacro,requestInterceptor:xe.requestInterceptor,responseInterceptor:xe.responseInterceptor}}for(var U=arguments.length,pt=new Array(U>3?U-3:0),ht=3;ht<U;ht++)pt[ht-3]=arguments[ht];return D.default.apply(void 0,(0,o.default)(ke=[_e,Le,Re]).call(ke,pt))},serializeRes:C.serializeRes,opId:P.opId},statePlugins:{configs:{wrapActions:{loaded:j.loaded}}}}}},8525:(n,s,t)=>{t.r(s),t.d(s,{default:()=>c});var o=t(6298);function c(){return{fn:{shallowEqualKeys:o.be}}}},8347:(n,s,t)=>{t.r(s),t.d(s,{getDisplayName:()=>o});var o=function(c){return c.displayName||c.name||"Component"}},3420:(n,s,t)=>{t.r(s),t.d(s,{default:()=>P});var o=t(313),c=t(6298),g=t(5005),C=t(8347),D=t(8287);const P=function(j){var W,Re,re=j.getComponents,ie=j.getStore,ge=j.getSystem,_e=(W=(0,g.getComponent)(ge,ie,re),(0,c.HP)(W,function(){for(var Re=arguments.length,ke=new Array(Re),xe=0;xe<Re;xe++)ke[xe]=arguments[xe];return(0,o.default)(ke)}));return{rootInjects:{getComponent:_e,makeMappedContainer:(Re=(0,g.withMappedContainer)(ge,ie,_e),(0,D.Z)(Re,function(){for(var ke=arguments.length,xe=new Array(ke),U=0;U<ke;U++)xe[U]=arguments[U];return xe})),render:(0,g.render)(ge,ie,g.getComponent,re)},fn:{getDisplayName:C.getDisplayName}}}},5005:(n,s,t)=>{t.r(s),t.d(s,{getComponent:()=>ht,render:()=>pt,withMappedContainer:()=>U});var o=t(1581),c=t(1013),g=t(863),C=t(7344),D=t(8656),P=t(9972),j=t(5416),W=t(2740),re=t(810);const ie=(t.d(It={},{default:()=>c6}),It);var It,ge=t(9871);const _e=(wt=>{var It={};return t.d(It,wt),It})({Provider:()=>G8,connect:()=>SI}),Le=(wt=>{var It={};return t.d(It,wt),It})({default:()=>OI()}),Re=(wt=>{var It={};return t.d(It,wt),It})({default:()=>xI()});var ke=function(wt,It,dn){return(0,ge.compose)(dn?(Lt=wt,Dn=dn,function(Mn){var $r=Lt().fn,ur=function(Pr){(0,P.default)(fn,Pr);var xr=(0,j.default)(fn);function fn(){return(0,C.default)(this,fn),xr.apply(this,arguments)}return(0,D.default)(fn,[{key:"render",value:function(){return re.default.createElement(_e.Provider,{store:Dn},re.default.createElement(Mn,(0,g.default)({},this.props,this.context)))}}]),fn}(re.Component);return ur.displayName="WithRoot(".concat($r.getDisplayName(Mn),")"),ur}):Re.default,(0,_e.connect)(function(Lt,Dn){var Mn,$r=(0,c.default)((0,c.default)({},Dn),wt());return((null===(Mn=It.prototype)||void 0===Mn?void 0:Mn.mapStateToProps)||function(Pr){return{state:Pr}})(Lt,$r)}),function(Lt){return function(Dn){var Mn=Lt().fn,$r=function(ur){(0,P.default)(xr,ur);var Pr=(0,j.default)(xr);function xr(){return(0,C.default)(this,xr),Pr.apply(this,arguments)}return(0,D.default)(xr,[{key:"render",value:function(){return re.default.createElement(Dn,(0,g.default)({},Lt(),this.props,this.context))}}]),xr}(re.Component);return $r.displayName="WithSystem(".concat(Mn.getDisplayName(Dn),")"),$r}}(wt))(It);var Lt,Dn},xe=function(wt,It,dn,Lt){for(var Dn in It){var Mn=It[Dn];"function"==typeof Mn&&Mn(dn[Dn],Lt[Dn],wt())}},U=function(wt,It,dn){return function(Lt,Dn){var Mn=wt().fn,$r=dn(Lt,"root"),ur=function(Pr){(0,P.default)(fn,Pr);var xr=(0,j.default)(fn);function fn(Nn,$n){var Qn;return(0,C.default)(this,fn),Qn=xr.call(this,Nn,$n),xe(wt,Dn,Nn,{}),Qn}return(0,D.default)(fn,[{key:"UNSAFE_componentWillReceiveProps",value:function(Nn){xe(wt,Dn,Nn,this.props)}},{key:"render",value:function(){var Nn=(0,Le.default)(this.props,Dn?(0,W.default)(Dn):[]);return re.default.createElement($r,Nn)}}]),fn}(re.Component);return ur.displayName="WithMappedContainer(".concat(Mn.getDisplayName($r),")"),ur}},pt=function(wt,It,dn,Lt){return function(Dn){var Mn=dn(wt,It,Lt)("App","root");ie.default.render(re.default.createElement(Mn,null),Dn)}},ht=function(wt,It,dn){return function(Lt,Dn){var Mn=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"!=typeof Lt)throw new TypeError("Need a string, to fetch a component. Was given a "+(0,o.default)(Lt));var $r=dn(Lt);return $r?Dn?"root"===Dn?ke(wt,$r,It()):ke(wt,$r):$r:(Mn.failSilently||wt().log.warn("Could not find component:",Lt),null)}}},471:(n,s,t)=>{t.d(s,{d3:()=>g.default,C2:()=>ht});var o=t(2740),c=t(2372);const g=(t.d(It={},{default:()=>XI}),It),C=(wt=>{var It={};return t.d(It,wt),It})({default:()=>e4}),D=(wt=>{var It={};return t.d(It,wt),It})({default:()=>r4}),P=(wt=>{var It={};return t.d(It,wt),It})({default:()=>s4}),j=(wt=>{var It={};return t.d(It,wt),It})({default:()=>u4}),W=(wt=>{var It={};return t.d(It,wt),It})({default:()=>f4}),re=(wt=>{var It={};return t.d(It,wt),It})({default:()=>_4}),ie=(wt=>{var It={};return t.d(It,wt),It})({default:()=>v4}),ge=(wt=>{var It={};return t.d(It,wt),It})({default:()=>y4}),_e=(wt=>{var It={};return t.d(It,wt),It})({default:()=>b4}),Le=(wt=>{var It={};return t.d(It,wt),It})({default:()=>E4}),Re=(wt=>{var It={};return t.d(It,wt),It})({default:()=>T4}),ke=(wt=>{var It={};return t.d(It,wt),It})({default:()=>S4}),xe=(wt=>{var It={};return t.d(It,wt),It})({default:()=>C4});var It;g.default.registerLanguage("json",D.default),g.default.registerLanguage("js",C.default),g.default.registerLanguage("xml",P.default),g.default.registerLanguage("yaml",W.default),g.default.registerLanguage("http",re.default),g.default.registerLanguage("bash",j.default),g.default.registerLanguage("powershell",ie.default),g.default.registerLanguage("javascript",C.default);var U={agate:ge.default,arta:_e.default,monokai:Le.default,nord:Re.default,obsidian:ke.default,"tomorrow-night":xe.default},pt=(0,o.default)(U),ht=function(wt){return(0,c.default)(pt).call(pt,wt)?U[wt]:(console.warn("Request style '".concat(wt,"' is not available, returning default instead")),ge.default)}},6298:(n,s,t)=>{t.d(s,{r3:()=>Fl,GZ:()=>up,Xb:()=>ma,oJ:()=>Zc,XV:()=>mi,iQ:()=>St,J6:()=>Ip,DR:()=>Bn,oG:()=>Ri,Uj:()=>us,QG:()=>ru,po:()=>lr,nX:()=>Yi,gp:()=>Et,xi:()=>Xu,kJ:()=>Ws,O2:()=>xu,LQ:()=>Zo,Wl:()=>Ys,Kn:()=>bo,HP:()=>wi,AF:()=>qi,D$:()=>Lo,Ay:()=>lo,Q2:()=>go,mz:()=>qr,V9:()=>Xo,cz:()=>rs,UG:()=>Pf,Zl:()=>_r,hW:()=>Th,Nm:()=>Wp,be:()=>Eh,wh:()=>qc,Pz:()=>eo,_5:()=>Ge,Ik:()=>xi});var o=t(2691),c=(t(9334),t(1581)),g=t(3248),C=t(4163),D=t(2565),P=t(2954),j=t(5171),W=t(29),re=t(6145),ie=t(2740),ge=(t(5527),t(6785)),_e=t(7512),Le=t(4350),Re=t(8136),ke=t(9963),xe=(t(2372),t(313)),U=t(8818),pt=t(1778),ht=t(3590),wt=t(5942),It=t(9725);const dn=(t.d(Pi={},{sanitizeUrl:()=>M4.N}),Pi),Lt=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>O4()}),Dn=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>x4()});var Pi,Mn=t(5476);const $r=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>R4()}),ur=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>P4()}),Pr=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>L4()});var xr=t(7068),fn=t(2473),Nn=t(7504);const $n=(Kn=>{var Pi={};return t.d(Pi,Kn),Pi})({default:()=>k4()});var Qn=t(9069),Tn=t(1798),Yr=t.n(Tn),ji=t(9072),ii=t.n(ji),Ui=t(626),Jr=t(8764).Buffer,An="default",hn=function(Kn){return It.default.Iterable.isIterable(Kn)};function qr(Kn){return bo(Kn)?hn(Kn)?Kn.toJS():Kn:{}}function Ri(Kn){var Pi,as;if(hn(Kn)||Kn instanceof Nn.Z.File||!bo(Kn))return Kn;if((0,C.default)(Kn))return(0,D.default)(as=It.default.Seq(Kn)).call(as,Ri).toList();if((0,xr.default)((0,P.default)(Kn))){var Zi,xs=function(is){if(!(0,xr.default)((0,P.default)(is)))return is;var hu,Al={},qa={},ja=(0,g.default)((0,P.default)(is).call(is));try{for(ja.s();!(hu=ja.n()).done;){var Du,If,Jp,Ql,Ku=hu.value;Al[Ku[0]]||qa[Ku[0]]&&qa[Ku[0]].containsMultiple?(qa[Ku[0]]||(qa[Ku[0]]={containsMultiple:!0,length:1},Al[(0,j.default)(Jp=(0,j.default)(Ql="".concat(Ku[0])).call(Ql,"_**[]")).call(Jp,qa[Ku[0]].length)]=Al[Ku[0]],delete Al[Ku[0]]),qa[Ku[0]].length+=1,Al[(0,j.default)(Du=(0,j.default)(If="".concat(Ku[0])).call(If,"_**[]")).call(Du,qa[Ku[0]].length)]=Ku[1]):Al[Ku[0]]=Ku[1]}}catch(Jf){ja.e(Jf)}finally{ja.f()}return Al}(Kn);return(0,D.default)(Zi=It.default.OrderedMap(xs)).call(Zi,Ri)}return(0,D.default)(Pi=It.default.OrderedMap(Kn)).call(Pi,Ri)}function qi(Kn){return(0,C.default)(Kn)?Kn:[Kn]}function Zo(Kn){return"function"==typeof Kn}function bo(Kn){return!!Kn&&"object"===(0,c.default)(Kn)}function Ys(Kn){return"function"==typeof Kn}function Ws(Kn){return(0,C.default)(Kn)}var wi=Mn.default;function lo(Kn,Pi){var as;return(0,ge.default)(as=(0,ie.default)(Kn)).call(as,function(Zi,xs){return Zi[xs]=Pi(Kn[xs],xs),Zi},{})}function go(Kn,Pi){var as;return(0,ge.default)(as=(0,ie.default)(Kn)).call(as,function(Zi,xs){var is=Pi(Kn[xs],xs);return is&&"object"===(0,c.default)(is)&&(0,_e.default)(Zi,is),Zi},{})}function Ge(Kn){return function(Pi){return function(as){return function(Zi){return"function"==typeof Zi?Zi(Kn()):as(Zi)}}}}function St(Kn){var Pi,as=Kn.keySeq();return as.contains(An)?An:(0,Le.default)(Pi=(0,re.default)(as).call(as,function(Zi){return"2"===(Zi+"")[0]})).call(Pi).first()}function Et(Kn,Pi){if(!It.default.Iterable.isIterable(Kn))return It.default.List();var as=Kn.getIn((0,C.default)(Pi)?Pi:[Pi]);return It.default.List.isList(as)?as:It.default.List()}function Bn(Kn){var Pi,as=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if((0,ke.default)(as).call(as,function(Zi){return null!==(Pi=Zi.exec(Kn))}),null!==Pi&&Pi.length>1)try{return decodeURIComponent(Pi[1])}catch(Zi){console.error(Zi)}return null}function _r(Kn){return Pi=Kn.replace(/\.[^./]*$/,""),(0,Dn.default)((0,Lt.default)(Pi));var Pi}function Gr(Kn,Pi,as,Zi,xs){if(!Pi)return[];var is=[],hu=Pi.get("nullable"),Al=Pi.get("required"),Ci=Pi.get("maximum"),qa=Pi.get("minimum"),ja=Pi.get("type"),Ku=Pi.get("format"),Du=Pi.get("maxLength"),If=Pi.get("minLength"),Jp=Pi.get("uniqueItems"),Ql=Pi.get("maxItems"),Jf=Pi.get("minItems"),pg=Pi.get("pattern"),Qp=as||!0===Al,Ng=null!=Kn;if(hu&&null===Kn||!ja||!(Qp||Ng&&"array"===ja||Qp||Ng))return[];var I_="string"===ja&&Kn,l1="array"===ja&&(0,C.default)(Kn)&&Kn.length,Xp="array"===ja&&It.default.List.isList(Kn)&&Kn.count(),gd=[I_,l1,Xp,"array"===ja&&"string"==typeof Kn&&Kn,"file"===ja&&Kn instanceof Nn.Z.File,"boolean"===ja&&(Kn||!1===Kn),"number"===ja&&(Kn||0===Kn),"integer"===ja&&(Kn||0===Kn),"object"===ja&&"object"===(0,c.default)(Kn)&&null!==Kn,"object"===ja&&"string"==typeof Kn&&Kn],Pg=(0,ke.default)(gd).call(gd,function(za){return!!za});if(Qp&&!Pg&&!Zi)return is.push("Required field is not provided"),is;if("object"===ja&&(null===xs||"application/json"===xs)){var Em,hg=Kn;if("string"==typeof Kn)try{hg=JSON.parse(Kn)}catch(za){return is.push("Parameter string value must be valid JSON"),is}Pi&&Pi.has("required")&&Ys(Al.isList)&&Al.isList()&&(0,W.default)(Al).call(Al,function(za){void 0===hg[za]&&is.push({propKey:za,error:"Required property not found"})}),Pi&&Pi.has("properties")&&(0,W.default)(Em=Pi.get("properties")).call(Em,function(za,Fu){var ld=Gr(hg[Fu],za,!1,Zi,xs);is.push.apply(is,(0,o.default)((0,D.default)(ld).call(ld,function(R0){return{propKey:Fu,error:R0}})))})}if(pg){var iv=function(za,Fu){if(!new RegExp(Fu).test(za))return"Value must follow pattern "+Fu}(Kn,pg);iv&&is.push(iv)}if(Jf&&"array"===ja){var Lp=function(za,Fu){var ld;if(!za&&Fu>=1||za&&za.length<Fu)return(0,j.default)(ld="Array must contain at least ".concat(Fu," item")).call(ld,1===Fu?"":"s")}(Kn,Jf);Lp&&is.push(Lp)}if(Ql&&"array"===ja){var RA=function(za,Fu){var ld;if(za&&za.length>Fu)return(0,j.default)(ld="Array must not contain more then ".concat(Fu," item")).call(ld,1===Fu?"":"s")}(Kn,Ql);RA&&is.push({needRemove:!0,error:RA})}if(Jp&&"array"===ja){var Od=function(za,Fu){if(za&&("true"===Fu||!0===Fu)){var ld=(0,It.fromJS)(za),R0=ld.toSet();if(za.length>R0.size){var u1=(0,It.Set)();if((0,W.default)(ld).call(ld,function(N0,Fp){(0,re.default)(ld).call(ld,function(c1){return Ys(c1.equals)?c1.equals(N0):c1===N0}).size>1&&(u1=u1.add(Fp))}),0!==u1.size)return(0,D.default)(u1).call(u1,function(N0){return{index:N0,error:"No duplicates allowed."}}).toArray()}}}(Kn,Jp);Od&&is.push.apply(is,(0,o.default)(Od))}if(Du||0===Du){var NA=function(za,Fu){var ld;if(za.length>Fu)return(0,j.default)(ld="Value must be no longer than ".concat(Fu," character")).call(ld,1!==Fu?"s":"")}(Kn,Du);NA&&is.push(NA)}if(If){var _S=function(za,Fu){var ld;if(za.length<Fu)return(0,j.default)(ld="Value must be at least ".concat(Fu," character")).call(ld,1!==Fu?"s":"")}(Kn,If);_S&&is.push(_S)}if(Ci||0===Ci){var PA=function(za,Fu){if(za>Fu)return"Value must be less than ".concat(Fu)}(Kn,Ci);PA&&is.push(PA)}if(qa||0===qa){var IA=function(za,Fu){if(za<Fu)return"Value must be greater than ".concat(Fu)}(Kn,qa);IA&&is.push(IA)}if("string"===ja){var gS;if(!(gS="date-time"===Ku?function(za){if(isNaN(Date.parse(za)))return"Value must be a DateTime"}(Kn):"uuid"===Ku?function(za){if(za=za.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(za))return"Value must be a Guid"}(Kn):function(za){if(za&&"string"!=typeof za)return"Value must be a string"}(Kn)))return is;is.push(gS)}else if("boolean"===ja){var Sb=function(za){if("true"!==za&&"false"!==za&&!0!==za&&!1!==za)return"Value must be a boolean"}(Kn);if(!Sb)return is;is.push(Sb)}else if("number"===ja){var LA=function(za){if(!/^-?\d+(\.?\d+)?$/.test(za))return"Value must be a number"}(Kn);if(!LA)return is;is.push(LA)}else if("integer"===ja){var FA=function(za){if(!/^-?\d+$/.test(za))return"Value must be an integer"}(Kn);if(!FA)return is;is.push(FA)}else if("array"===ja){if(!l1&&!Xp)return is;Kn&&(0,W.default)(Kn).call(Kn,function(za,Fu){var ld=Gr(za,Pi.get("items"),!1,Zi,xs);is.push.apply(is,(0,o.default)((0,D.default)(ld).call(ld,function(R0){return{index:Fu,error:R0}})))})}else if("file"===ja){var kA=function(za){if(za&&!(za instanceof Nn.Z.File))return"Value must be a file"}(Kn);if(!kA)return is;is.push(kA)}return is}var xi=function(Kn,Pi){var as=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Zi=as.isOAS3,xs=void 0!==Zi&&Zi,is=as.bypassRequiredCheck,hu=void 0!==is&&is,Al=Kn.get("required"),Ci=(0,Qn.Z)(Kn,{isOAS3:xs}),qa=Ci.schema,ja=Ci.parameterContentMediaType;return Gr(Pi,qa,Al,hu,ja)},Zs=function(Kn,Pi,as){if(Kn&&(!Kn.xml||!Kn.xml.name)){if(Kn.xml=Kn.xml||{},!Kn.$$ref)return Kn.type||Kn.items||Kn.properties||Kn.additionalProperties?'<?xml version="1.0" encoding="UTF-8"?>\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e':null;var Zi=Kn.$$ref.match(/\S*\/(\S+)$/);Kn.xml.name=Zi[1]}return(0,fn.memoizedCreateXMLExample)(Kn,Pi,as)},jo=[{when:/json/,shouldStringifyTypes:["string"]}],sl=["object"],ml=function(Kn,Pi,as,Zi){var xs=(0,fn.memoizedSampleFromSchema)(Kn,Pi,Zi),is=(0,c.default)(xs),hu=(0,ge.default)(jo).call(jo,function(Al,Ci){var qa;return Ci.when.test(as)?(0,j.default)(qa=[]).call(qa,(0,o.default)(Al),(0,o.default)(Ci.shouldStringifyTypes)):Al},sl);return(0,ur.default)(hu,function(Al){return Al===is})?(0,xe.default)(xs,null,2):xs},nu=function(Kn,Pi,as,Zi){var xs,is=ml(Kn,Pi,as,Zi);try{"\n"===(xs=Ui.default.dump(Ui.default.load(is),{lineWidth:-1},{schema:Ui.JSON_SCHEMA}))[xs.length-1]&&(xs=(0,Re.default)(xs).call(xs,0,xs.length-1))}catch(hu){return console.error(hu),"error: could not generate yaml example"}return xs.replace(/\t/g,"  ")},Xu=function(Kn){var Pi=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",as=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Zi=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return Kn&&Ys(Kn.toJS)&&(Kn=Kn.toJS()),Zi&&Ys(Zi.toJS)&&(Zi=Zi.toJS()),/xml/.test(Pi)?Zs(Kn,as,Zi):/(yaml|yml)/.test(Pi)?nu(Kn,as,Pi,Zi):ml(Kn,as,Pi,Zi)},Pf=function(){var Kn={},Pi=Nn.Z.location.search;if(!Pi)return{};if(""!=Pi){var as=Pi.substr(1).split("&");for(var Zi in as)Object.prototype.hasOwnProperty.call(as,Zi)&&(Zi=as[Zi].split("="),Kn[decodeURIComponent(Zi[0])]=Zi[1]&&decodeURIComponent(Zi[1])||"")}return Kn},Fl=function(Kn){return(Kn instanceof Jr?Kn:Jr.from(Kn.toString(),"utf-8")).toString("base64")},qc={operationsSorter:{alpha:function(Kn,Pi){return Kn.get("path").localeCompare(Pi.get("path"))},method:function(Kn,Pi){return Kn.get("method").localeCompare(Pi.get("method"))}},tagsSorter:{alpha:function(Kn,Pi){return Kn.localeCompare(Pi)}}},up=function(Kn){var Pi=[];for(var as in Kn){var Zi=Kn[as];void 0!==Zi&&""!==Zi&&Pi.push([as,"=",encodeURIComponent(Zi).replace(/%20/g,"+")].join(""))}return Pi.join("&")},Eh=function(Kn,Pi,as){return!!(0,$r.default)(as,function(Zi){return(0,Pr.default)(Kn[Zi],Pi[Zi])})};function Wp(Kn){return"string"!=typeof Kn||""===Kn?"":(0,dn.sanitizeUrl)(Kn)}function Th(Kn){return!(!Kn||(0,U.default)(Kn).call(Kn,"localhost")>=0||(0,U.default)(Kn).call(Kn,"127.0.0.1")>=0||"none"===Kn)}function ru(Kn){if(!It.default.OrderedMap.isOrderedMap(Kn)||!Kn.size)return null;var Pi=(0,pt.default)(Kn).call(Kn,function(xs,is){return(0,ht.default)(is).call(is,"2")&&(0,ie.default)(xs.get("content")||{}).length>0}),as=Kn.get("default")||It.default.OrderedMap(),Zi=(as.get("content")||It.default.OrderedMap()).keySeq().toJS().length?as:null;return Pi||Zi}var Zc=function(Kn){return"string"==typeof Kn||Kn instanceof String?(0,wt.default)(Kn).call(Kn).replace(/\s/g,"%20"):""},Ip=function(Kn){return(0,$n.default)(Zc(Kn).replace(/%20/g,"_"))},Yi=function(Kn){return(0,re.default)(Kn).call(Kn,function(Pi,as){return/^x-/.test(as)})},lr=function(Kn){return(0,re.default)(Kn).call(Kn,function(Pi,as){return/^pattern|maxLength|minLength|maximum|minimum/.test(as)})};function mi(Kn,Pi){var as,Zi=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0};if("object"!==(0,c.default)(Kn)||(0,C.default)(Kn)||null===Kn||!Pi)return Kn;var xs=(0,_e.default)({},Kn);return(0,W.default)(as=(0,ie.default)(xs)).call(as,function(is){is===Pi&&Zi(xs[is],is)?delete xs[is]:xs[is]=mi(xs[is],Pi,Zi)}),xs}function eo(Kn){if("string"==typeof Kn)return Kn;if(Kn&&Kn.toJS&&(Kn=Kn.toJS()),"object"===(0,c.default)(Kn)&&null!==Kn)try{return(0,xe.default)(Kn,null,2)}catch(Pi){return String(Kn)}return null==Kn?"":Kn.toString()}function Lo(Kn){return"number"==typeof Kn?Kn.toString():Kn}function Xo(Kn){var Pi=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},as=Pi.returnAll,Zi=void 0!==as&&as,xs=Pi.allowHashes,is=void 0===xs||xs;if(!It.default.Map.isMap(Kn))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");var hu,Al,Ci,qa=Kn.get("name"),ja=Kn.get("in"),Ku=[];return Kn&&Kn.hashCode&&ja&&qa&&is&&Ku.push((0,j.default)(hu=(0,j.default)(Al="".concat(ja,".")).call(Al,qa,".hash-")).call(hu,Kn.hashCode())),ja&&qa&&Ku.push((0,j.default)(Ci="".concat(ja,".")).call(Ci,qa)),Ku.push(qa),Zi?Ku:Ku[0]||""}function rs(Kn,Pi){var as,Zi=Xo(Kn,{returnAll:!0});return(0,re.default)(as=(0,D.default)(Zi).call(Zi,function(xs){return Pi[xs]})).call(as,function(xs){return void 0!==xs})[0]}function us(){return Ka(Yr()(32).toString("base64"))}function ma(Kn){return Ka(ii()("sha256").update(Kn).digest("base64"))}function Ka(Kn){return Kn.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}var xu=function(Kn){return!Kn||!(!hn(Kn)||!Kn.isEmpty())}},2518:(n,s,t)=>{function o(c){return function(g){try{return!!JSON.parse(g)}catch(C){return null}}(c)?"json":null}t.d(s,{O:()=>o})},7504:(n,s,t)=>{t.d(s,{Z:()=>o});const o=function(){var c={location:{},history:{},open:function(){},close:function(){},File:function(){}};if("undefined"==typeof window)return c;try{c=window;for(var g=0,C=["File","Blob","FormData"];g<C.length;g++){var D=C[g];D in window&&(c[D]=window[D])}}catch(P){console.error(P)}return c}()},9069:(n,s,t)=>{t.d(s,{Z:()=>D});var o=t(6145),c=t(2372),g=t(9725),C=g.default.Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function D(P){var j=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},W=j.isOAS3;if(!g.default.Map.isMap(P))return{schema:g.default.Map(),parameterContentMediaType:null};if(!W)return"body"===P.get("in")?{schema:P.get("schema",g.default.Map()),parameterContentMediaType:null}:{schema:(0,o.default)(P).call(P,function(ge,_e){return(0,c.default)(C).call(C,_e)}),parameterContentMediaType:null};if(P.get("content")){var re=P.get("content",g.default.Map({})).keySeq(),ie=re.first();return{schema:P.getIn(["content",ie,"schema"],g.default.Map()),parameterContentMediaType:ie}}return{schema:P.get("schema",g.default.Map()),parameterContentMediaType:null}}},8287:(n,s,t)=>{t.d(s,{Z:()=>ht});var o=t(7344),c=t(8656);const g=(t.d(It={},{default:()=>EA}),It),C=(wt=>{var It={};return t.d(It,wt),It})({default:()=>O0});var It,D=t(9972),P=t(5416);const j=(wt=>{var It={};return t.d(It,wt),It})({default:()=>V3});var W=t(4163),re=t(7930),ie=t(8898),ge=t(5487),_e=t(1778);const Le=(wt=>{var It={};return t.d(It,wt),It})({default:()=>B4()});var Re=t(6914),ke=t(5476),xe=function(wt){return function(It){return(0,W.default)(wt)&&(0,W.default)(It)&&wt.length===It.length&&(0,re.default)(wt).call(wt,function(dn,Lt){return dn===It[Lt]})}},U=function(){for(var wt=arguments.length,It=new Array(wt),dn=0;dn<wt;dn++)It[dn]=arguments[dn];return It},pt=function(wt){(0,D.default)(dn,wt);var It=(0,P.default)(dn);function dn(){return(0,o.default)(this,dn),It.apply(this,arguments)}return(0,c.default)(dn,[{key:"delete",value:function(Lt){var Dn=(0,ie.default)((0,ge.default)(this).call(this)),Mn=(0,_e.default)(Dn).call(Dn,xe(Lt));return(0,g.default)((0,C.default)(dn.prototype),"delete",this).call(this,Mn)}},{key:"get",value:function(Lt){var Dn=(0,ie.default)((0,ge.default)(this).call(this)),Mn=(0,_e.default)(Dn).call(Dn,xe(Lt));return(0,g.default)((0,C.default)(dn.prototype),"get",this).call(this,Mn)}},{key:"has",value:function(Lt){var Dn=(0,ie.default)((0,ge.default)(this).call(this));return-1!==(0,Le.default)(Dn).call(Dn,xe(Lt))}}]),dn}((0,j.default)(Re.default));const ht=function(wt){var It=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U,dn=ke.default.Cache;ke.default.Cache=pt;var Lt=(0,ke.default)(wt,It);return ke.default.Cache=dn,Lt}},8764:(n,s,t)=>{const o=t(4780),c=t(3294),g="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=P,s.SlowBuffer=function(Ge){return+Ge!=Ge&&(Ge=0),P.alloc(+Ge)},s.INSPECT_MAX_BYTES=50;const C=2147483647;function D(Ge){if(Ge>C)throw new RangeError('The value "'+Ge+'" is invalid for option "size"');const St=new Uint8Array(Ge);return Object.setPrototypeOf(St,P.prototype),St}function P(Ge,St,Et){if("number"==typeof Ge){if("string"==typeof St)throw new TypeError('The "string" argument must be of type string. Received type number');return re(Ge)}return j(Ge,St,Et)}function j(Ge,St,Et){if("string"==typeof Ge)return function(Gr,xi){if("string"==typeof xi&&""!==xi||(xi="utf8"),!P.isEncoding(xi))throw new TypeError("Unknown encoding: "+xi);const Zs=0|Le(Gr,xi);let jo=D(Zs);const sl=jo.write(Gr,xi);return sl!==Zs&&(jo=jo.slice(0,sl)),jo}(Ge,St);if(ArrayBuffer.isView(Ge))return function(Gr){if(Ys(Gr,Uint8Array)){const xi=new Uint8Array(Gr);return ge(xi.buffer,xi.byteOffset,xi.byteLength)}return ie(Gr)}(Ge);if(null==Ge)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Ge);if(Ys(Ge,ArrayBuffer)||Ge&&Ys(Ge.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(Ys(Ge,SharedArrayBuffer)||Ge&&Ys(Ge.buffer,SharedArrayBuffer)))return ge(Ge,St,Et);if("number"==typeof Ge)throw new TypeError('The "value" argument must not be of type number. Received type number');const Bn=Ge.valueOf&&Ge.valueOf();if(null!=Bn&&Bn!==Ge)return P.from(Bn,St,Et);const _r=function(Gr){if(P.isBuffer(Gr)){const xi=0|_e(Gr.length),Zs=D(xi);return 0===Zs.length||Gr.copy(Zs,0,0,xi),Zs}return void 0!==Gr.length?"number"!=typeof Gr.length||Ws(Gr.length)?D(0):ie(Gr):"Buffer"===Gr.type&&Array.isArray(Gr.data)?ie(Gr.data):void 0}(Ge);if(_r)return _r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof Ge[Symbol.toPrimitive])return P.from(Ge[Symbol.toPrimitive]("string"),St,Et);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Ge)}function W(Ge){if("number"!=typeof Ge)throw new TypeError('"size" argument must be of type number');if(Ge<0)throw new RangeError('The value "'+Ge+'" is invalid for option "size"')}function re(Ge){return W(Ge),D(Ge<0?0:0|_e(Ge))}function ie(Ge){const St=Ge.length<0?0:0|_e(Ge.length),Et=D(St);for(let Bn=0;Bn<St;Bn+=1)Et[Bn]=255&Ge[Bn];return Et}function ge(Ge,St,Et){if(St<0||Ge.byteLength<St)throw new RangeError('"offset" is outside of buffer bounds');if(Ge.byteLength<St+(Et||0))throw new RangeError('"length" is outside of buffer bounds');let Bn;return Bn=void 0===St&&void 0===Et?new Uint8Array(Ge):void 0===Et?new Uint8Array(Ge,St):new Uint8Array(Ge,St,Et),Object.setPrototypeOf(Bn,P.prototype),Bn}function _e(Ge){if(Ge>=C)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+C.toString(16)+" bytes");return 0|Ge}function Le(Ge,St){if(P.isBuffer(Ge))return Ge.length;if(ArrayBuffer.isView(Ge)||Ys(Ge,ArrayBuffer))return Ge.byteLength;if("string"!=typeof Ge)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof Ge);const Et=Ge.length,Bn=arguments.length>2&&!0===arguments[2];if(!Bn&&0===Et)return 0;let _r=!1;for(;;)switch(St){case"ascii":case"latin1":case"binary":return Et;case"utf8":case"utf-8":return qi(Ge).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*Et;case"hex":return Et>>>1;case"base64":return Zo(Ge).length;default:if(_r)return Bn?-1:qi(Ge).length;St=(""+St).toLowerCase(),_r=!0}}function Re(Ge,St,Et){let Bn=!1;if((void 0===St||St<0)&&(St=0),St>this.length||((void 0===Et||Et>this.length)&&(Et=this.length),Et<=0)||(Et>>>=0)<=(St>>>=0))return"";for(Ge||(Ge="utf8");;)switch(Ge){case"hex":return Pr(this,St,Et);case"utf8":case"utf-8":return Dn(this,St,Et);case"ascii":return $r(this,St,Et);case"latin1":case"binary":return ur(this,St,Et);case"base64":return Lt(this,St,Et);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xr(this,St,Et);default:if(Bn)throw new TypeError("Unknown encoding: "+Ge);Ge=(Ge+"").toLowerCase(),Bn=!0}}function ke(Ge,St,Et){const Bn=Ge[St];Ge[St]=Ge[Et],Ge[Et]=Bn}function xe(Ge,St,Et,Bn,_r){if(0===Ge.length)return-1;if("string"==typeof Et?(Bn=Et,Et=0):Et>2147483647?Et=2147483647:Et<-2147483648&&(Et=-2147483648),Ws(Et=+Et)&&(Et=_r?0:Ge.length-1),Et<0&&(Et=Ge.length+Et),Et>=Ge.length){if(_r)return-1;Et=Ge.length-1}else if(Et<0){if(!_r)return-1;Et=0}if("string"==typeof St&&(St=P.from(St,Bn)),P.isBuffer(St))return 0===St.length?-1:U(Ge,St,Et,Bn,_r);if("number"==typeof St)return St&=255,"function"==typeof Uint8Array.prototype.indexOf?_r?Uint8Array.prototype.indexOf.call(Ge,St,Et):Uint8Array.prototype.lastIndexOf.call(Ge,St,Et):U(Ge,[St],Et,Bn,_r);throw new TypeError("val must be string, number or Buffer")}function U(Ge,St,Et,Bn,_r){let Gr,xi=1,Zs=Ge.length,jo=St.length;if(void 0!==Bn&&("ucs2"===(Bn=String(Bn).toLowerCase())||"ucs-2"===Bn||"utf16le"===Bn||"utf-16le"===Bn)){if(Ge.length<2||St.length<2)return-1;xi=2,Zs/=2,jo/=2,Et/=2}function sl(ml,nu){return 1===xi?ml[nu]:ml.readUInt16BE(nu*xi)}if(_r){let ml=-1;for(Gr=Et;Gr<Zs;Gr++)if(sl(Ge,Gr)===sl(St,-1===ml?0:Gr-ml)){if(-1===ml&&(ml=Gr),Gr-ml+1===jo)return ml*xi}else-1!==ml&&(Gr-=Gr-ml),ml=-1}else for(Et+jo>Zs&&(Et=Zs-jo),Gr=Et;Gr>=0;Gr--){let ml=!0;for(let nu=0;nu<jo;nu++)if(sl(Ge,Gr+nu)!==sl(St,nu)){ml=!1;break}if(ml)return Gr}return-1}function pt(Ge,St,Et,Bn){Et=Number(Et)||0;const _r=Ge.length-Et;Bn?(Bn=Number(Bn))>_r&&(Bn=_r):Bn=_r;const Gr=St.length;let xi;for(Bn>Gr/2&&(Bn=Gr/2),xi=0;xi<Bn;++xi){const Zs=parseInt(St.substr(2*xi,2),16);if(Ws(Zs))return xi;Ge[Et+xi]=Zs}return xi}function ht(Ge,St,Et,Bn){return bo(qi(St,Ge.length-Et),Ge,Et,Bn)}function wt(Ge,St,Et,Bn){return bo(function(_r){const Gr=[];for(let xi=0;xi<_r.length;++xi)Gr.push(255&_r.charCodeAt(xi));return Gr}(St),Ge,Et,Bn)}function It(Ge,St,Et,Bn){return bo(Zo(St),Ge,Et,Bn)}function dn(Ge,St,Et,Bn){return bo(function(_r,Gr){let xi,Zs,jo;const sl=[];for(let ml=0;ml<_r.length&&!((Gr-=2)<0);++ml)xi=_r.charCodeAt(ml),Zs=xi>>8,jo=xi%256,sl.push(jo),sl.push(Zs);return sl}(St,Ge.length-Et),Ge,Et,Bn)}function Lt(Ge,St,Et){return o.fromByteArray(0===St&&Et===Ge.length?Ge:Ge.slice(St,Et))}function Dn(Ge,St,Et){Et=Math.min(Ge.length,Et);const Bn=[];let _r=St;for(;_r<Et;){const Gr=Ge[_r];let xi=null,Zs=Gr>239?4:Gr>223?3:Gr>191?2:1;if(_r+Zs<=Et){let jo,sl,ml,nu;switch(Zs){case 1:Gr<128&&(xi=Gr);break;case 2:jo=Ge[_r+1],128==(192&jo)&&(nu=(31&Gr)<<6|63&jo,nu>127&&(xi=nu));break;case 3:jo=Ge[_r+1],sl=Ge[_r+2],128==(192&jo)&&128==(192&sl)&&(nu=(15&Gr)<<12|(63&jo)<<6|63&sl,nu>2047&&(nu<55296||nu>57343)&&(xi=nu));break;case 4:jo=Ge[_r+1],sl=Ge[_r+2],ml=Ge[_r+3],128==(192&jo)&&128==(192&sl)&&128==(192&ml)&&(nu=(15&Gr)<<18|(63&jo)<<12|(63&sl)<<6|63&ml,nu>65535&&nu<1114112&&(xi=nu))}}null===xi?(xi=65533,Zs=1):xi>65535&&(xi-=65536,Bn.push(xi>>>10&1023|55296),xi=56320|1023&xi),Bn.push(xi),_r+=Zs}return function(Gr){const xi=Gr.length;if(xi<=Mn)return String.fromCharCode.apply(String,Gr);let Zs="",jo=0;for(;jo<xi;)Zs+=String.fromCharCode.apply(String,Gr.slice(jo,jo+=Mn));return Zs}(Bn)}s.kMaxLength=C,(P.TYPED_ARRAY_SUPPORT=function(){try{const Ge=new Uint8Array(1),St={foo:function(){return 42}};return Object.setPrototypeOf(St,Uint8Array.prototype),Object.setPrototypeOf(Ge,St),42===Ge.foo()}catch(Ge){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(P.prototype,"parent",{enumerable:!0,get:function(){if(P.isBuffer(this))return this.buffer}}),Object.defineProperty(P.prototype,"offset",{enumerable:!0,get:function(){if(P.isBuffer(this))return this.byteOffset}}),P.poolSize=8192,P.from=function(Ge,St,Et){return j(Ge,St,Et)},Object.setPrototypeOf(P.prototype,Uint8Array.prototype),Object.setPrototypeOf(P,Uint8Array),P.alloc=function(Ge,St,Et){return _r=St,Gr=Et,W(Bn=Ge),Bn<=0?D(Bn):void 0!==_r?"string"==typeof Gr?D(Bn).fill(_r,Gr):D(Bn).fill(_r):D(Bn);var Bn,_r,Gr},P.allocUnsafe=function(Ge){return re(Ge)},P.allocUnsafeSlow=function(Ge){return re(Ge)},P.isBuffer=function(Ge){return null!=Ge&&!0===Ge._isBuffer&&Ge!==P.prototype},P.compare=function(Ge,St){if(Ys(Ge,Uint8Array)&&(Ge=P.from(Ge,Ge.offset,Ge.byteLength)),Ys(St,Uint8Array)&&(St=P.from(St,St.offset,St.byteLength)),!P.isBuffer(Ge)||!P.isBuffer(St))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Ge===St)return 0;let Et=Ge.length,Bn=St.length;for(let _r=0,Gr=Math.min(Et,Bn);_r<Gr;++_r)if(Ge[_r]!==St[_r]){Et=Ge[_r],Bn=St[_r];break}return Et<Bn?-1:Bn<Et?1:0},P.isEncoding=function(Ge){switch(String(Ge).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},P.concat=function(Ge,St){if(!Array.isArray(Ge))throw new TypeError('"list" argument must be an Array of Buffers');if(0===Ge.length)return P.alloc(0);let Et;if(void 0===St)for(St=0,Et=0;Et<Ge.length;++Et)St+=Ge[Et].length;const Bn=P.allocUnsafe(St);let _r=0;for(Et=0;Et<Ge.length;++Et){let Gr=Ge[Et];if(Ys(Gr,Uint8Array))_r+Gr.length>Bn.length?(P.isBuffer(Gr)||(Gr=P.from(Gr)),Gr.copy(Bn,_r)):Uint8Array.prototype.set.call(Bn,Gr,_r);else{if(!P.isBuffer(Gr))throw new TypeError('"list" argument must be an Array of Buffers');Gr.copy(Bn,_r)}_r+=Gr.length}return Bn},P.byteLength=Le,P.prototype._isBuffer=!0,P.prototype.swap16=function(){const Ge=this.length;if(Ge%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let St=0;St<Ge;St+=2)ke(this,St,St+1);return this},P.prototype.swap32=function(){const Ge=this.length;if(Ge%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let St=0;St<Ge;St+=4)ke(this,St,St+3),ke(this,St+1,St+2);return this},P.prototype.swap64=function(){const Ge=this.length;if(Ge%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let St=0;St<Ge;St+=8)ke(this,St,St+7),ke(this,St+1,St+6),ke(this,St+2,St+5),ke(this,St+3,St+4);return this},P.prototype.toLocaleString=P.prototype.toString=function(){const Ge=this.length;return 0===Ge?"":0===arguments.length?Dn(this,0,Ge):Re.apply(this,arguments)},P.prototype.equals=function(Ge){if(!P.isBuffer(Ge))throw new TypeError("Argument must be a Buffer");return this===Ge||0===P.compare(this,Ge)},P.prototype.inspect=function(){let Ge="";const St=s.INSPECT_MAX_BYTES;return Ge=this.toString("hex",0,St).replace(/(.{2})/g,"$1 ").trim(),this.length>St&&(Ge+=" ... "),"<Buffer "+Ge+">"},g&&(P.prototype[g]=P.prototype.inspect),P.prototype.compare=function(Ge,St,Et,Bn,_r){if(Ys(Ge,Uint8Array)&&(Ge=P.from(Ge,Ge.offset,Ge.byteLength)),!P.isBuffer(Ge))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof Ge);if(void 0===St&&(St=0),void 0===Et&&(Et=Ge?Ge.length:0),void 0===Bn&&(Bn=0),void 0===_r&&(_r=this.length),St<0||Et>Ge.length||Bn<0||_r>this.length)throw new RangeError("out of range index");if(Bn>=_r&&St>=Et)return 0;if(Bn>=_r)return-1;if(St>=Et)return 1;if(this===Ge)return 0;let Gr=(_r>>>=0)-(Bn>>>=0),xi=(Et>>>=0)-(St>>>=0);const Zs=Math.min(Gr,xi),jo=this.slice(Bn,_r),sl=Ge.slice(St,Et);for(let ml=0;ml<Zs;++ml)if(jo[ml]!==sl[ml]){Gr=jo[ml],xi=sl[ml];break}return Gr<xi?-1:xi<Gr?1:0},P.prototype.includes=function(Ge,St,Et){return-1!==this.indexOf(Ge,St,Et)},P.prototype.indexOf=function(Ge,St,Et){return xe(this,Ge,St,Et,!0)},P.prototype.lastIndexOf=function(Ge,St,Et){return xe(this,Ge,St,Et,!1)},P.prototype.write=function(Ge,St,Et,Bn){if(void 0===St)Bn="utf8",Et=this.length,St=0;else if(void 0===Et&&"string"==typeof St)Bn=St,Et=this.length,St=0;else{if(!isFinite(St))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");St>>>=0,isFinite(Et)?(Et>>>=0,void 0===Bn&&(Bn="utf8")):(Bn=Et,Et=void 0)}const _r=this.length-St;if((void 0===Et||Et>_r)&&(Et=_r),Ge.length>0&&(Et<0||St<0)||St>this.length)throw new RangeError("Attempt to write outside buffer bounds");Bn||(Bn="utf8");let Gr=!1;for(;;)switch(Bn){case"hex":return pt(this,Ge,St,Et);case"utf8":case"utf-8":return ht(this,Ge,St,Et);case"ascii":case"latin1":case"binary":return wt(this,Ge,St,Et);case"base64":return It(this,Ge,St,Et);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return dn(this,Ge,St,Et);default:if(Gr)throw new TypeError("Unknown encoding: "+Bn);Bn=(""+Bn).toLowerCase(),Gr=!0}},P.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Mn=4096;function $r(Ge,St,Et){let Bn="";Et=Math.min(Ge.length,Et);for(let _r=St;_r<Et;++_r)Bn+=String.fromCharCode(127&Ge[_r]);return Bn}function ur(Ge,St,Et){let Bn="";Et=Math.min(Ge.length,Et);for(let _r=St;_r<Et;++_r)Bn+=String.fromCharCode(Ge[_r]);return Bn}function Pr(Ge,St,Et){const Bn=Ge.length;(!St||St<0)&&(St=0),(!Et||Et<0||Et>Bn)&&(Et=Bn);let _r="";for(let Gr=St;Gr<Et;++Gr)_r+=wi[Ge[Gr]];return _r}function xr(Ge,St,Et){const Bn=Ge.slice(St,Et);let _r="";for(let Gr=0;Gr<Bn.length-1;Gr+=2)_r+=String.fromCharCode(Bn[Gr]+256*Bn[Gr+1]);return _r}function fn(Ge,St,Et){if(Ge%1!=0||Ge<0)throw new RangeError("offset is not uint");if(Ge+St>Et)throw new RangeError("Trying to access beyond buffer length")}function Nn(Ge,St,Et,Bn,_r,Gr){if(!P.isBuffer(Ge))throw new TypeError('"buffer" argument must be a Buffer instance');if(St>_r||St<Gr)throw new RangeError('"value" argument is out of bounds');if(Et+Bn>Ge.length)throw new RangeError("Index out of range")}function $n(Ge,St,Et,Bn,_r){An(St,Bn,_r,Ge,Et,7);let Gr=Number(St&BigInt(4294967295));Ge[Et++]=Gr,Gr>>=8,Ge[Et++]=Gr,Gr>>=8,Ge[Et++]=Gr,Gr>>=8,Ge[Et++]=Gr;let xi=Number(St>>BigInt(32)&BigInt(4294967295));return Ge[Et++]=xi,xi>>=8,Ge[Et++]=xi,xi>>=8,Ge[Et++]=xi,xi>>=8,Ge[Et++]=xi,Et}function Qn(Ge,St,Et,Bn,_r){An(St,Bn,_r,Ge,Et,7);let Gr=Number(St&BigInt(4294967295));Ge[Et+7]=Gr,Gr>>=8,Ge[Et+6]=Gr,Gr>>=8,Ge[Et+5]=Gr,Gr>>=8,Ge[Et+4]=Gr;let xi=Number(St>>BigInt(32)&BigInt(4294967295));return Ge[Et+3]=xi,xi>>=8,Ge[Et+2]=xi,xi>>=8,Ge[Et+1]=xi,xi>>=8,Ge[Et]=xi,Et+8}function Tn(Ge,St,Et,Bn,_r,Gr){if(Et+Bn>Ge.length)throw new RangeError("Index out of range");if(Et<0)throw new RangeError("Index out of range")}function Yr(Ge,St,Et,Bn,_r){return St=+St,Et>>>=0,_r||Tn(Ge,0,Et,4),c.write(Ge,St,Et,Bn,23,4),Et+4}function ji(Ge,St,Et,Bn,_r){return St=+St,Et>>>=0,_r||Tn(Ge,0,Et,8),c.write(Ge,St,Et,Bn,52,8),Et+8}P.prototype.slice=function(Ge,St){const Et=this.length;(Ge=~~Ge)<0?(Ge+=Et)<0&&(Ge=0):Ge>Et&&(Ge=Et),(St=void 0===St?Et:~~St)<0?(St+=Et)<0&&(St=0):St>Et&&(St=Et),St<Ge&&(St=Ge);const Bn=this.subarray(Ge,St);return Object.setPrototypeOf(Bn,P.prototype),Bn},P.prototype.readUintLE=P.prototype.readUIntLE=function(Ge,St,Et){Ge>>>=0,St>>>=0,Et||fn(Ge,St,this.length);let Bn=this[Ge],_r=1,Gr=0;for(;++Gr<St&&(_r*=256);)Bn+=this[Ge+Gr]*_r;return Bn},P.prototype.readUintBE=P.prototype.readUIntBE=function(Ge,St,Et){Ge>>>=0,St>>>=0,Et||fn(Ge,St,this.length);let Bn=this[Ge+--St],_r=1;for(;St>0&&(_r*=256);)Bn+=this[Ge+--St]*_r;return Bn},P.prototype.readUint8=P.prototype.readUInt8=function(Ge,St){return Ge>>>=0,St||fn(Ge,1,this.length),this[Ge]},P.prototype.readUint16LE=P.prototype.readUInt16LE=function(Ge,St){return Ge>>>=0,St||fn(Ge,2,this.length),this[Ge]|this[Ge+1]<<8},P.prototype.readUint16BE=P.prototype.readUInt16BE=function(Ge,St){return Ge>>>=0,St||fn(Ge,2,this.length),this[Ge]<<8|this[Ge+1]},P.prototype.readUint32LE=P.prototype.readUInt32LE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),(this[Ge]|this[Ge+1]<<8|this[Ge+2]<<16)+16777216*this[Ge+3]},P.prototype.readUint32BE=P.prototype.readUInt32BE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),16777216*this[Ge]+(this[Ge+1]<<16|this[Ge+2]<<8|this[Ge+3])},P.prototype.readBigUInt64LE=lo(function(Ge){hn(Ge>>>=0,"offset");const St=this[Ge],Et=this[Ge+7];void 0!==St&&void 0!==Et||qr(Ge,this.length-8);const Bn=St+256*this[++Ge]+65536*this[++Ge]+this[++Ge]*Sm(2,24),_r=this[++Ge]+256*this[++Ge]+65536*this[++Ge]+Et*Sm(2,24);return BigInt(Bn)+(BigInt(_r)<<BigInt(32))}),P.prototype.readBigUInt64BE=lo(function(Ge){hn(Ge>>>=0,"offset");const St=this[Ge],Et=this[Ge+7];void 0!==St&&void 0!==Et||qr(Ge,this.length-8);const Bn=St*Sm(2,24)+65536*this[++Ge]+256*this[++Ge]+this[++Ge],_r=this[++Ge]*Sm(2,24)+65536*this[++Ge]+256*this[++Ge]+Et;return(BigInt(Bn)<<BigInt(32))+BigInt(_r)}),P.prototype.readIntLE=function(Ge,St,Et){Ge>>>=0,St>>>=0,Et||fn(Ge,St,this.length);let Bn=this[Ge],_r=1,Gr=0;for(;++Gr<St&&(_r*=256);)Bn+=this[Ge+Gr]*_r;return _r*=128,Bn>=_r&&(Bn-=Math.pow(2,8*St)),Bn},P.prototype.readIntBE=function(Ge,St,Et){Ge>>>=0,St>>>=0,Et||fn(Ge,St,this.length);let Bn=St,_r=1,Gr=this[Ge+--Bn];for(;Bn>0&&(_r*=256);)Gr+=this[Ge+--Bn]*_r;return _r*=128,Gr>=_r&&(Gr-=Math.pow(2,8*St)),Gr},P.prototype.readInt8=function(Ge,St){return Ge>>>=0,St||fn(Ge,1,this.length),128&this[Ge]?-1*(255-this[Ge]+1):this[Ge]},P.prototype.readInt16LE=function(Ge,St){Ge>>>=0,St||fn(Ge,2,this.length);const Et=this[Ge]|this[Ge+1]<<8;return 32768&Et?4294901760|Et:Et},P.prototype.readInt16BE=function(Ge,St){Ge>>>=0,St||fn(Ge,2,this.length);const Et=this[Ge+1]|this[Ge]<<8;return 32768&Et?4294901760|Et:Et},P.prototype.readInt32LE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),this[Ge]|this[Ge+1]<<8|this[Ge+2]<<16|this[Ge+3]<<24},P.prototype.readInt32BE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),this[Ge]<<24|this[Ge+1]<<16|this[Ge+2]<<8|this[Ge+3]},P.prototype.readBigInt64LE=lo(function(Ge){hn(Ge>>>=0,"offset");const St=this[Ge],Et=this[Ge+7];return void 0!==St&&void 0!==Et||qr(Ge,this.length-8),(BigInt(this[Ge+4]+256*this[Ge+5]+65536*this[Ge+6]+(Et<<24))<<BigInt(32))+BigInt(St+256*this[++Ge]+65536*this[++Ge]+this[++Ge]*Sm(2,24))}),P.prototype.readBigInt64BE=lo(function(Ge){hn(Ge>>>=0,"offset");const St=this[Ge],Et=this[Ge+7];void 0!==St&&void 0!==Et||qr(Ge,this.length-8);const Bn=(St<<24)+65536*this[++Ge]+256*this[++Ge]+this[++Ge];return(BigInt(Bn)<<BigInt(32))+BigInt(this[++Ge]*Sm(2,24)+65536*this[++Ge]+256*this[++Ge]+Et)}),P.prototype.readFloatLE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),c.read(this,Ge,!0,23,4)},P.prototype.readFloatBE=function(Ge,St){return Ge>>>=0,St||fn(Ge,4,this.length),c.read(this,Ge,!1,23,4)},P.prototype.readDoubleLE=function(Ge,St){return Ge>>>=0,St||fn(Ge,8,this.length),c.read(this,Ge,!0,52,8)},P.prototype.readDoubleBE=function(Ge,St){return Ge>>>=0,St||fn(Ge,8,this.length),c.read(this,Ge,!1,52,8)},P.prototype.writeUintLE=P.prototype.writeUIntLE=function(Ge,St,Et,Bn){Ge=+Ge,St>>>=0,Et>>>=0,!Bn&&Nn(this,Ge,St,Et,Math.pow(2,8*Et)-1,0);let _r=1,Gr=0;for(this[St]=255&Ge;++Gr<Et&&(_r*=256);)this[St+Gr]=Ge/_r&255;return St+Et},P.prototype.writeUintBE=P.prototype.writeUIntBE=function(Ge,St,Et,Bn){Ge=+Ge,St>>>=0,Et>>>=0,!Bn&&Nn(this,Ge,St,Et,Math.pow(2,8*Et)-1,0);let _r=Et-1,Gr=1;for(this[St+_r]=255&Ge;--_r>=0&&(Gr*=256);)this[St+_r]=Ge/Gr&255;return St+Et},P.prototype.writeUint8=P.prototype.writeUInt8=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,1,255,0),this[St]=255&Ge,St+1},P.prototype.writeUint16LE=P.prototype.writeUInt16LE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,2,65535,0),this[St]=255&Ge,this[St+1]=Ge>>>8,St+2},P.prototype.writeUint16BE=P.prototype.writeUInt16BE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,2,65535,0),this[St]=Ge>>>8,this[St+1]=255&Ge,St+2},P.prototype.writeUint32LE=P.prototype.writeUInt32LE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,4,4294967295,0),this[St+3]=Ge>>>24,this[St+2]=Ge>>>16,this[St+1]=Ge>>>8,this[St]=255&Ge,St+4},P.prototype.writeUint32BE=P.prototype.writeUInt32BE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,4,4294967295,0),this[St]=Ge>>>24,this[St+1]=Ge>>>16,this[St+2]=Ge>>>8,this[St+3]=255&Ge,St+4},P.prototype.writeBigUInt64LE=lo(function(Ge,St=0){return $n(this,Ge,St,BigInt(0),BigInt("0xffffffffffffffff"))}),P.prototype.writeBigUInt64BE=lo(function(Ge,St=0){return Qn(this,Ge,St,BigInt(0),BigInt("0xffffffffffffffff"))}),P.prototype.writeIntLE=function(Ge,St,Et,Bn){if(Ge=+Ge,St>>>=0,!Bn){const Zs=Math.pow(2,8*Et-1);Nn(this,Ge,St,Et,Zs-1,-Zs)}let _r=0,Gr=1,xi=0;for(this[St]=255&Ge;++_r<Et&&(Gr*=256);)Ge<0&&0===xi&&0!==this[St+_r-1]&&(xi=1),this[St+_r]=(Ge/Gr>>0)-xi&255;return St+Et},P.prototype.writeIntBE=function(Ge,St,Et,Bn){if(Ge=+Ge,St>>>=0,!Bn){const Zs=Math.pow(2,8*Et-1);Nn(this,Ge,St,Et,Zs-1,-Zs)}let _r=Et-1,Gr=1,xi=0;for(this[St+_r]=255&Ge;--_r>=0&&(Gr*=256);)Ge<0&&0===xi&&0!==this[St+_r+1]&&(xi=1),this[St+_r]=(Ge/Gr>>0)-xi&255;return St+Et},P.prototype.writeInt8=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,1,127,-128),Ge<0&&(Ge=255+Ge+1),this[St]=255&Ge,St+1},P.prototype.writeInt16LE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,2,32767,-32768),this[St]=255&Ge,this[St+1]=Ge>>>8,St+2},P.prototype.writeInt16BE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,2,32767,-32768),this[St]=Ge>>>8,this[St+1]=255&Ge,St+2},P.prototype.writeInt32LE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,4,2147483647,-2147483648),this[St]=255&Ge,this[St+1]=Ge>>>8,this[St+2]=Ge>>>16,this[St+3]=Ge>>>24,St+4},P.prototype.writeInt32BE=function(Ge,St,Et){return Ge=+Ge,St>>>=0,Et||Nn(this,Ge,St,4,2147483647,-2147483648),Ge<0&&(Ge=4294967295+Ge+1),this[St]=Ge>>>24,this[St+1]=Ge>>>16,this[St+2]=Ge>>>8,this[St+3]=255&Ge,St+4},P.prototype.writeBigInt64LE=lo(function(Ge,St=0){return $n(this,Ge,St,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),P.prototype.writeBigInt64BE=lo(function(Ge,St=0){return Qn(this,Ge,St,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),P.prototype.writeFloatLE=function(Ge,St,Et){return Yr(this,Ge,St,!0,Et)},P.prototype.writeFloatBE=function(Ge,St,Et){return Yr(this,Ge,St,!1,Et)},P.prototype.writeDoubleLE=function(Ge,St,Et){return ji(this,Ge,St,!0,Et)},P.prototype.writeDoubleBE=function(Ge,St,Et){return ji(this,Ge,St,!1,Et)},P.prototype.copy=function(Ge,St,Et,Bn){if(!P.isBuffer(Ge))throw new TypeError("argument should be a Buffer");if(Et||(Et=0),Bn||0===Bn||(Bn=this.length),St>=Ge.length&&(St=Ge.length),St||(St=0),Bn>0&&Bn<Et&&(Bn=Et),Bn===Et||0===Ge.length||0===this.length)return 0;if(St<0)throw new RangeError("targetStart out of bounds");if(Et<0||Et>=this.length)throw new RangeError("Index out of range");if(Bn<0)throw new RangeError("sourceEnd out of bounds");Bn>this.length&&(Bn=this.length),Ge.length-St<Bn-Et&&(Bn=Ge.length-St+Et);const _r=Bn-Et;return this===Ge&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(St,Et,Bn):Uint8Array.prototype.set.call(Ge,this.subarray(Et,Bn),St),_r},P.prototype.fill=function(Ge,St,Et,Bn){if("string"==typeof Ge){if("string"==typeof St?(Bn=St,St=0,Et=this.length):"string"==typeof Et&&(Bn=Et,Et=this.length),void 0!==Bn&&"string"!=typeof Bn)throw new TypeError("encoding must be a string");if("string"==typeof Bn&&!P.isEncoding(Bn))throw new TypeError("Unknown encoding: "+Bn);if(1===Ge.length){const Gr=Ge.charCodeAt(0);("utf8"===Bn&&Gr<128||"latin1"===Bn)&&(Ge=Gr)}}else"number"==typeof Ge?Ge&=255:"boolean"==typeof Ge&&(Ge=Number(Ge));if(St<0||this.length<St||this.length<Et)throw new RangeError("Out of range index");if(Et<=St)return this;let _r;if(St>>>=0,Et=void 0===Et?this.length:Et>>>0,Ge||(Ge=0),"number"==typeof Ge)for(_r=St;_r<Et;++_r)this[_r]=Ge;else{const Gr=P.isBuffer(Ge)?Ge:P.from(Ge,Bn),xi=Gr.length;if(0===xi)throw new TypeError('The value "'+Ge+'" is invalid for argument "value"');for(_r=0;_r<Et-St;++_r)this[_r+St]=Gr[_r%xi]}return this};const ii={};function Ui(Ge,St,Et){ii[Ge]=class extends Et{constructor(){super(),Object.defineProperty(this,"message",{value:St.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${Ge}]`,delete this.name}get code(){return Ge}set code(Bn){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:Bn,writable:!0})}toString(){return`${this.name} [${Ge}]: ${this.message}`}}}function Jr(Ge){let St="",Et=Ge.length;const Bn="-"===Ge[0]?1:0;for(;Et>=Bn+4;Et-=3)St=`_${Ge.slice(Et-3,Et)}${St}`;return`${Ge.slice(0,Et)}${St}`}function An(Ge,St,Et,Bn,_r,Gr){if(Ge>Et||Ge<St){const xi="bigint"==typeof St?"n":"";let Zs;throw Zs=Gr>3?0===St||St===BigInt(0)?`>= 0${xi} and < 2${xi} ** ${8*(Gr+1)}${xi}`:`>= -(2${xi} ** ${8*(Gr+1)-1}${xi}) and < 2 ** ${8*(Gr+1)-1}${xi}`:`>= ${St}${xi} and <= ${Et}${xi}`,new ii.ERR_OUT_OF_RANGE("value",Zs,Ge)}var xi,Zs,jo;xi=Bn,jo=Gr,hn(Zs=_r,"offset"),void 0!==xi[Zs]&&void 0!==xi[Zs+jo]||qr(Zs,xi.length-(jo+1))}function hn(Ge,St){if("number"!=typeof Ge)throw new ii.ERR_INVALID_ARG_TYPE(St,"number",Ge)}function qr(Ge,St,Et){throw Math.floor(Ge)!==Ge?(hn(Ge,Et),new ii.ERR_OUT_OF_RANGE(Et||"offset","an integer",Ge)):St<0?new ii.ERR_BUFFER_OUT_OF_BOUNDS:new ii.ERR_OUT_OF_RANGE(Et||"offset",`>= ${Et?1:0} and <= ${St}`,Ge)}Ui("ERR_BUFFER_OUT_OF_BOUNDS",function(Ge){return Ge?`${Ge} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Ui("ERR_INVALID_ARG_TYPE",function(Ge,St){return`The "${Ge}" argument must be of type number. Received type ${typeof St}`},TypeError),Ui("ERR_OUT_OF_RANGE",function(Ge,St,Et){let Bn=`The value of "${Ge}" is out of range.`,_r=Et;return Number.isInteger(Et)&&Math.abs(Et)>Sm(2,32)?_r=Jr(String(Et)):"bigint"==typeof Et&&(_r=String(Et),(Et>Sm(BigInt(2),BigInt(32))||Et<-Sm(BigInt(2),BigInt(32)))&&(_r=Jr(_r)),_r+="n"),Bn+=` It must be ${St}. Received ${_r}`,Bn},RangeError);const Ri=/[^+/0-9A-Za-z-_]/g;function qi(Ge,St){let Et;St=St||1/0;const Bn=Ge.length;let _r=null;const Gr=[];for(let xi=0;xi<Bn;++xi){if(Et=Ge.charCodeAt(xi),Et>55295&&Et<57344){if(!_r){if(Et>56319){(St-=3)>-1&&Gr.push(239,191,189);continue}if(xi+1===Bn){(St-=3)>-1&&Gr.push(239,191,189);continue}_r=Et;continue}if(Et<56320){(St-=3)>-1&&Gr.push(239,191,189),_r=Et;continue}Et=65536+(_r-55296<<10|Et-56320)}else _r&&(St-=3)>-1&&Gr.push(239,191,189);if(_r=null,Et<128){if((St-=1)<0)break;Gr.push(Et)}else if(Et<2048){if((St-=2)<0)break;Gr.push(Et>>6|192,63&Et|128)}else if(Et<65536){if((St-=3)<0)break;Gr.push(Et>>12|224,Et>>6&63|128,63&Et|128)}else{if(!(Et<1114112))throw new Error("Invalid code point");if((St-=4)<0)break;Gr.push(Et>>18|240,Et>>12&63|128,Et>>6&63|128,63&Et|128)}}return Gr}function Zo(Ge){return o.toByteArray(function(St){if((St=(St=St.split("=")[0]).trim().replace(Ri,"")).length<2)return"";for(;St.length%4!=0;)St+="=";return St}(Ge))}function bo(Ge,St,Et,Bn){let _r;for(_r=0;_r<Bn&&!(_r+Et>=St.length||_r>=Ge.length);++_r)St[_r+Et]=Ge[_r];return _r}function Ys(Ge,St){return Ge instanceof St||null!=Ge&&null!=Ge.constructor&&null!=Ge.constructor.name&&Ge.constructor.name===St.name}function Ws(Ge){return Ge!=Ge}const wi=function(){const Ge="0123456789abcdef",St=new Array(256);for(let Et=0;Et<16;++Et){const Bn=16*Et;for(let _r=0;_r<16;++_r)St[Bn+_r]=Ge[Et]+Ge[_r]}return St}();function lo(Ge){return"undefined"==typeof BigInt?go:Ge}function go(){throw new Error("BigInt not supported")}},8171:(n,s,t)=>{t(6450);var o=t(4058).Object,c=n.exports=function(g,C,D){return o.defineProperty(g,C,D)};o.defineProperty.sham&&(c.sham=!0)},4883:(n,s,t)=>{var o=t(1899),c=t(7475),g=t(9826),C=o.TypeError;n.exports=function(D){if(c(D))return D;throw C(g(D)+" is not a function")}},6059:(n,s,t)=>{var o=t(1899),c=t(941),g=o.String,C=o.TypeError;n.exports=function(D){if(c(D))return D;throw C(g(D)+" is not an object")}},2532:(n,s,t)=>{var o=t(5329),c=o({}.toString),g=o("".slice);n.exports=function(C){return g(c(C),8,-1)}},2029:(n,s,t)=>{var o=t(5746),c=t(5988),g=t(1887);n.exports=o?function(C,D,P){return c.f(C,D,g(1,P))}:function(C,D,P){return C[D]=P,C}},1887:n=>{n.exports=function(s,t){return{enumerable:!(1&s),configurable:!(2&s),writable:!(4&s),value:t}}},5746:(n,s,t)=>{var o=t(5981);n.exports=!o(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},1333:(n,s,t)=>{var o=t(1899),c=t(941),g=o.document,C=c(g)&&c(g.createElement);n.exports=function(D){return C?g.createElement(D):{}}},2861:(n,s,t)=>{var o=t(224);n.exports=o("navigator","userAgent")||""},3385:(n,s,t)=>{var o,c,g=t(1899),C=t(2861),D=g.process,P=g.Deno,j=D&&D.versions||P&&P.version,W=j&&j.v8;W&&(c=(o=W.split("."))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!c&&C&&(!(o=C.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=C.match(/Chrome\/(\d+)/))&&(c=+o[1]),n.exports=c},6887:(n,s,t)=>{var o=t(1899),c=t(9730),g=t(5329),C=t(7475),D=t(9677).f,P=t(7252),j=t(4058),W=t(6843),re=t(2029),ie=t(953),ge=function(_e){var Le=function(Re,ke,xe){if(this instanceof Le){switch(arguments.length){case 0:return new _e;case 1:return new _e(Re);case 2:return new _e(Re,ke)}return new _e(Re,ke,xe)}return c(_e,this,arguments)};return Le.prototype=_e.prototype,Le};n.exports=function(_e,Le){var Re,ke,xe,U,pt,ht,wt,It,dn=_e.target,Lt=_e.global,Dn=_e.stat,Mn=_e.proto,$r=Lt?o:Dn?o[dn]:(o[dn]||{}).prototype,ur=Lt?j:j[dn]||re(j,dn,{})[dn],Pr=ur.prototype;for(xe in Le)Re=!P(Lt?xe:dn+(Dn?".":"#")+xe,_e.forced)&&$r&&ie($r,xe),pt=ur[xe],Re&&(ht=_e.noTargetGet?(It=D($r,xe))&&It.value:$r[xe]),U=Re&&ht?ht:Le[xe],Re&&typeof pt==typeof U||(wt=_e.bind&&Re?W(U,o):_e.wrap&&Re?ge(U):Mn&&C(U)?g(U):U,(_e.sham||U&&U.sham||pt&&pt.sham)&&re(wt,"sham",!0),re(ur,xe,wt),Mn&&(ie(j,ke=dn+"Prototype")||re(j,ke,{}),re(j[ke],xe,U),_e.real&&Pr&&!Pr[xe]&&re(Pr,xe,U)))}},5981:n=>{n.exports=function(s){try{return!!s()}catch(t){return!0}}},9730:(n,s,t)=>{var o=t(8285),c=Function.prototype,g=c.apply,C=c.call;n.exports="object"==typeof Reflect&&Reflect.apply||(o?C.bind(g):function(){return C.apply(g,arguments)})},6843:(n,s,t)=>{var o=t(5329),c=t(4883),g=t(8285),C=o(o.bind);n.exports=function(D,P){return c(D),void 0===P?D:g?C(D,P):function(){return D.apply(P,arguments)}}},8285:(n,s,t)=>{var o=t(5981);n.exports=!o(function(){var c=function(){}.bind();return"function"!=typeof c||c.hasOwnProperty("prototype")})},8834:(n,s,t)=>{var o=t(8285),c=Function.prototype.call;n.exports=o?c.bind(c):function(){return c.apply(c,arguments)}},5329:(n,s,t)=>{var o=t(8285),c=Function.prototype,C=c.call,D=o&&c.bind.bind(C,C);n.exports=o?function(P){return P&&D(P)}:function(P){return P&&function(){return C.apply(P,arguments)}}},224:(n,s,t)=>{var o=t(4058),c=t(1899),g=t(7475),C=function(D){return g(D)?D:void 0};n.exports=function(D,P){return arguments.length<2?C(o[D])||C(c[D]):o[D]&&o[D][P]||c[D]&&c[D][P]}},9733:(n,s,t)=>{var o=t(4883);n.exports=function(c,g){var C=c[g];return null==C?void 0:o(C)}},1899:(n,s,t)=>{var o=function(c){return c&&c.Math==Math&&c};n.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof t.g&&t.g)||function(){return this}()||Function("return this")()},953:(n,s,t)=>{var o=t(5329),c=t(9678),g=o({}.hasOwnProperty);n.exports=Object.hasOwn||function(C,D){return g(c(C),D)}},2840:(n,s,t)=>{var o=t(5746),c=t(5981),g=t(1333);n.exports=!o&&!c(function(){return 7!=Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a})},7026:(n,s,t)=>{var o=t(1899),c=t(5329),g=t(5981),C=t(2532),D=o.Object,P=c("".split);n.exports=g(function(){return!D("z").propertyIsEnumerable(0)})?function(j){return"String"==C(j)?P(j,""):D(j)}:D},7475:n=>{n.exports=function(s){return"function"==typeof s}},7252:(n,s,t)=>{var o=t(5981),c=t(7475),g=/#|\.prototype\./,C=function(re,ie){var ge=P[D(re)];return ge==W||ge!=j&&(c(ie)?o(ie):!!ie)},D=C.normalize=function(re){return String(re).replace(g,".").toLowerCase()},P=C.data={},j=C.NATIVE="N",W=C.POLYFILL="P";n.exports=C},941:(n,s,t)=>{var o=t(7475);n.exports=function(c){return"object"==typeof c?null!==c:o(c)}},2529:n=>{n.exports=!0},6664:(n,s,t)=>{var o=t(1899),c=t(224),g=t(7475),C=t(7046),D=t(2302),P=o.Object;n.exports=D?function(j){return"symbol"==typeof j}:function(j){var W=c("Symbol");return g(W)&&C(W.prototype,P(j))}},2497:(n,s,t)=>{var o=t(3385),c=t(5981);n.exports=!!Object.getOwnPropertySymbols&&!c(function(){var g=Symbol();return!String(g)||!(Object(g)instanceof Symbol)||!Symbol.sham&&o&&o<41})},5988:(n,s,t)=>{var o=t(1899),c=t(5746),g=t(2840),C=t(3937),D=t(6059),P=t(3894),j=o.TypeError,W=Object.defineProperty,re=Object.getOwnPropertyDescriptor;s.f=c?C?function(Le,Re,ke){if(D(Le),Re=P(Re),D(ke),"function"==typeof Le&&"prototype"===Re&&"value"in ke&&"writable"in ke&&!ke.writable){var xe=re(Le,Re);xe&&xe.writable&&(Le[Re]=ke.value,ke={configurable:"configurable"in ke?ke.configurable:xe.configurable,enumerable:"enumerable"in ke?ke.enumerable:xe.enumerable,writable:!1})}return W(Le,Re,ke)}:W:function(Le,Re,ke){if(D(Le),Re=P(Re),D(ke),g)try{return W(Le,Re,ke)}catch(xe){}if("get"in ke||"set"in ke)throw j("Accessors not supported");return"value"in ke&&(Le[Re]=ke.value),Le}},9677:(n,s,t)=>{var o=t(5746),c=t(8834),g=t(6760),C=t(1887),D=t(4529),P=t(3894),j=t(953),W=t(2840),re=Object.getOwnPropertyDescriptor;s.f=o?re:function(ie,ge){if(ie=D(ie),ge=P(ge),W)try{return re(ie,ge)}catch(_e){}if(j(ie,ge))return C(!c(g.f,ie,ge),ie[ge])}},7046:(n,s,t)=>{var o=t(5329);n.exports=o({}.isPrototypeOf)},6760:(n,s)=>{var t={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,c=o&&!t.call({1:2},1);s.f=c?function(g){var C=o(this,g);return!!C&&C.enumerable}:t},9811:(n,s,t)=>{var o=t(1899),c=t(8834),g=t(7475),C=t(941),D=o.TypeError;n.exports=function(P,j){var W,re;if("string"===j&&g(W=P.toString)&&!C(re=c(W,P))||g(W=P.valueOf)&&!C(re=c(W,P))||"string"!==j&&g(W=P.toString)&&!C(re=c(W,P)))return re;throw D("Can't convert object to primitive value")}},4058:n=>{n.exports={}},8219:(n,s,t)=>{var o=t(1899).TypeError;n.exports=function(c){if(null==c)throw o("Can't call method on "+c);return c}},4911:(n,s,t)=>{var o=t(1899),c=Object.defineProperty;n.exports=function(g,C){try{c(o,g,{value:C,configurable:!0,writable:!0})}catch(D){o[g]=C}return C}},3030:(n,s,t)=>{var o=t(1899),c=t(4911),g="__core-js_shared__",C=o[g]||c(g,{});n.exports=C},8726:(n,s,t)=>{var o=t(2529),c=t(3030);(n.exports=function(g,C){return c[g]||(c[g]=void 0!==C?C:{})})("versions",[]).push({version:"3.20.3",mode:o?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.20.3/LICENSE",source:"https://github.com/zloirock/core-js"})},4529:(n,s,t)=>{var o=t(7026),c=t(8219);n.exports=function(g){return o(c(g))}},9678:(n,s,t)=>{var o=t(1899),c=t(8219),g=o.Object;n.exports=function(C){return g(c(C))}},6935:(n,s,t)=>{var o=t(1899),c=t(8834),g=t(941),C=t(6664),D=t(9733),P=t(9811),j=t(9813),W=o.TypeError,re=j("toPrimitive");n.exports=function(ie,ge){if(!g(ie)||C(ie))return ie;var _e,Le=D(ie,re);if(Le){if(void 0===ge&&(ge="default"),_e=c(Le,ie,ge),!g(_e)||C(_e))return _e;throw W("Can't convert object to primitive value")}return void 0===ge&&(ge="number"),P(ie,ge)}},3894:(n,s,t)=>{var o=t(6935),c=t(6664);n.exports=function(g){var C=o(g,"string");return c(C)?C:C+""}},9826:(n,s,t)=>{var o=t(1899).String;n.exports=function(c){try{return o(c)}catch(g){return"Object"}}},9418:(n,s,t)=>{var o=t(5329),c=0,g=Math.random(),C=o(1..toString);n.exports=function(D){return"Symbol("+(void 0===D?"":D)+")_"+C(++c+g,36)}},2302:(n,s,t)=>{var o=t(2497);n.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3937:(n,s,t)=>{var o=t(5746),c=t(5981);n.exports=o&&c(function(){return 42!=Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},9813:(n,s,t)=>{var o=t(1899),c=t(8726),g=t(953),C=t(9418),D=t(2497),P=t(2302),j=c("wks"),W=o.Symbol,re=W&&W.for,ie=P?W:W&&W.withoutSetter||C;n.exports=function(ge){if(!g(j,ge)||!D&&"string"!=typeof j[ge]){var _e="Symbol."+ge;j[ge]=D&&g(W,ge)?W[ge]:P&&re?re(_e):ie(_e)}return j[ge]}},6450:(n,s,t)=>{var o=t(6887),c=t(5746),g=t(5988).f;o({target:"Object",stat:!0,forced:Object.defineProperty!==g,sham:!c},{defineProperty:g})},1910:(n,s,t)=>{var o=t(8171);n.exports=o},7698:(n,s,t)=>{var o=t(8764).Buffer;function c(j){return j instanceof o||j instanceof Date||j instanceof RegExp}function g(j){if(j instanceof o){var W=o.alloc?o.alloc(j.length):new o(j.length);return j.copy(W),W}if(j instanceof Date)return new Date(j.getTime());if(j instanceof RegExp)return new RegExp(j);throw new Error("Unexpected situation")}function C(j){var W=[];return j.forEach(function(re,ie){W[ie]="object"==typeof re&&null!==re?Array.isArray(re)?C(re):c(re)?g(re):P({},re):re}),W}function D(j,W){return"__proto__"===W?void 0:j[W]}var P=n.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var j,W,re=arguments[0],ie=Array.prototype.slice.call(arguments,1);return ie.forEach(function(ge){"object"!=typeof ge||null===ge||Array.isArray(ge)||Object.keys(ge).forEach(function(_e){return W=D(re,_e),(j=D(ge,_e))===re?void 0:"object"!=typeof j||null===j?void(re[_e]=j):Array.isArray(j)?void(re[_e]=C(j)):c(j)?void(re[_e]=g(j)):"object"!=typeof W||null===W||Array.isArray(W)?void(re[_e]=P({},j)):void(re[_e]=P(W,j))})}),re}},7187:n=>{var s,t="object"==typeof Reflect?Reflect:null,o=t&&"function"==typeof t.apply?t.apply:function(Re,ke,xe){return Function.prototype.apply.call(Re,ke,xe)};s=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(Re){return Object.getOwnPropertyNames(Re).concat(Object.getOwnPropertySymbols(Re))}:function(Re){return Object.getOwnPropertyNames(Re)};var c=Number.isNaN||function(Re){return Re!=Re};function g(){g.init.call(this)}n.exports=g,n.exports.once=function(Re,ke){return new Promise(function(xe,U){function pt(wt){Re.removeListener(ke,ht),U(wt)}function ht(){"function"==typeof Re.removeListener&&Re.removeListener("error",pt),xe([].slice.call(arguments))}var wt;Le(Re,ke,ht,{once:!0}),"error"!==ke&&("function"==typeof(wt=Re).on&&Le(wt,"error",pt,{once:!0}))})},g.EventEmitter=g,g.prototype._events=void 0,g.prototype._eventsCount=0,g.prototype._maxListeners=void 0;var C=10;function D(Re){if("function"!=typeof Re)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof Re)}function P(Re){return void 0===Re._maxListeners?g.defaultMaxListeners:Re._maxListeners}function j(Re,ke,xe,U){var pt,ht,wt;if(D(xe),void 0===(ht=Re._events)?(ht=Re._events=Object.create(null),Re._eventsCount=0):(void 0!==ht.newListener&&(Re.emit("newListener",ke,xe.listener?xe.listener:xe),ht=Re._events),wt=ht[ke]),void 0===wt)wt=ht[ke]=xe,++Re._eventsCount;else if("function"==typeof wt?wt=ht[ke]=U?[xe,wt]:[wt,xe]:U?wt.unshift(xe):wt.push(xe),(pt=P(Re))>0&&wt.length>pt&&!wt.warned){wt.warned=!0;var dn=new Error("Possible EventEmitter memory leak detected. "+wt.length+" "+String(ke)+" listeners added. Use emitter.setMaxListeners() to increase limit");dn.name="MaxListenersExceededWarning",dn.emitter=Re,dn.type=ke,dn.count=wt.length,console&&console.warn&&console.warn(dn)}return Re}function W(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function re(Re,ke,xe){var U={fired:!1,wrapFn:void 0,target:Re,type:ke,listener:xe},pt=W.bind(U);return pt.listener=xe,U.wrapFn=pt,pt}function ie(Re,ke,xe){var U=Re._events;if(void 0===U)return[];var pt=U[ke];return void 0===pt?[]:"function"==typeof pt?xe?[pt.listener||pt]:[pt]:xe?function(ht){for(var wt=new Array(ht.length),It=0;It<wt.length;++It)wt[It]=ht[It].listener||ht[It];return wt}(pt):_e(pt,pt.length)}function ge(Re){var ke=this._events;if(void 0!==ke){var xe=ke[Re];if("function"==typeof xe)return 1;if(void 0!==xe)return xe.length}return 0}function _e(Re,ke){for(var xe=new Array(ke),U=0;U<ke;++U)xe[U]=Re[U];return xe}function Le(Re,ke,xe,U){if("function"==typeof Re.on)U.once?Re.once(ke,xe):Re.on(ke,xe);else{if("function"!=typeof Re.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof Re);Re.addEventListener(ke,function pt(ht){U.once&&Re.removeEventListener(ke,pt),xe(ht)})}}Object.defineProperty(g,"defaultMaxListeners",{enumerable:!0,get:function(){return C},set:function(Re){if("number"!=typeof Re||Re<0||c(Re))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+Re+".");C=Re}}),g.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},g.prototype.setMaxListeners=function(Re){if("number"!=typeof Re||Re<0||c(Re))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+Re+".");return this._maxListeners=Re,this},g.prototype.getMaxListeners=function(){return P(this)},g.prototype.emit=function(Re){for(var ke=[],xe=1;xe<arguments.length;xe++)ke.push(arguments[xe]);var U="error"===Re,pt=this._events;if(void 0!==pt)U=U&&void 0===pt.error;else if(!U)return!1;if(U){var ht;if(ke.length>0&&(ht=ke[0]),ht instanceof Error)throw ht;var wt=new Error("Unhandled error."+(ht?" ("+ht.message+")":""));throw wt.context=ht,wt}var It=pt[Re];if(void 0===It)return!1;if("function"==typeof It)o(It,this,ke);else{var dn=It.length,Lt=_e(It,dn);for(xe=0;xe<dn;++xe)o(Lt[xe],this,ke)}return!0},g.prototype.on=g.prototype.addListener=function(Re,ke){return j(this,Re,ke,!1)},g.prototype.prependListener=function(Re,ke){return j(this,Re,ke,!0)},g.prototype.once=function(Re,ke){return D(ke),this.on(Re,re(this,Re,ke)),this},g.prototype.prependOnceListener=function(Re,ke){return D(ke),this.prependListener(Re,re(this,Re,ke)),this},g.prototype.off=g.prototype.removeListener=function(Re,ke){var xe,U,pt,ht,wt;if(D(ke),void 0===(U=this._events))return this;if(void 0===(xe=U[Re]))return this;if(xe===ke||xe.listener===ke)0==--this._eventsCount?this._events=Object.create(null):(delete U[Re],U.removeListener&&this.emit("removeListener",Re,xe.listener||ke));else if("function"!=typeof xe){for(pt=-1,ht=xe.length-1;ht>=0;ht--)if(xe[ht]===ke||xe[ht].listener===ke){wt=xe[ht].listener,pt=ht;break}if(pt<0)return this;0===pt?xe.shift():function(It,dn){for(;dn+1<It.length;dn++)It[dn]=It[dn+1];It.pop()}(xe,pt),1===xe.length&&(U[Re]=xe[0]),void 0!==U.removeListener&&this.emit("removeListener",Re,wt||ke)}return this},g.prototype.removeAllListeners=function(Re){var ke,xe,U;if(void 0===(xe=this._events))return this;if(void 0===xe.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==xe[Re]&&(0==--this._eventsCount?this._events=Object.create(null):delete xe[Re]),this;if(0===arguments.length){var pt,ht=Object.keys(xe);for(U=0;U<ht.length;++U)"removeListener"!==(pt=ht[U])&&this.removeAllListeners(pt);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(ke=xe[Re]))this.removeListener(Re,ke);else if(void 0!==ke)for(U=ke.length-1;U>=0;U--)this.removeListener(Re,ke[U]);return this},g.prototype.listeners=function(Re){return ie(this,Re,!0)},g.prototype.rawListeners=function(Re){return ie(this,Re,!1)},g.listenerCount=function(Re,ke){return"function"==typeof Re.listenerCount?Re.listenerCount(ke):ge.call(Re,ke)},g.prototype.listenerCount=ge,g.prototype.eventNames=function(){return this._eventsCount>0?s(this._events):[]}},5717:n=>{n.exports="function"==typeof Object.create?function(s,t){t&&(s.super_=t,s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:function(s,t){if(t){s.super_=t;var o=function(){};o.prototype=t.prototype,s.prototype=new o,s.prototype.constructor=s}}},4155:n=>{var s,t,o=n.exports={};function c(){throw new Error("setTimeout has not been defined")}function g(){throw new Error("clearTimeout has not been defined")}function C(Le){if(s===setTimeout)return setTimeout(Le,0);if((s===c||!s)&&setTimeout)return s=setTimeout,setTimeout(Le,0);try{return s(Le,0)}catch(Re){try{return s.call(null,Le,0)}catch(ke){return s.call(this,Le,0)}}}!function(){try{s="function"==typeof setTimeout?setTimeout:c}catch(Le){s=c}try{t="function"==typeof clearTimeout?clearTimeout:g}catch(Le){t=g}}();var D,P=[],j=!1,W=-1;function re(){j&&D&&(j=!1,D.length?P=D.concat(P):W=-1,P.length&&ie())}function ie(){if(!j){var Le=C(re);j=!0;for(var Re=P.length;Re;){for(D=P,P=[];++W<Re;)D&&D[W].run();W=-1,Re=P.length}D=null,j=!1,function(ke){if(t===clearTimeout)return clearTimeout(ke);if((t===g||!t)&&clearTimeout)return t=clearTimeout,clearTimeout(ke);try{t(ke)}catch(xe){try{return t.call(null,ke)}catch(U){return t.call(this,ke)}}}(Le)}}function ge(Le,Re){this.fun=Le,this.array=Re}function _e(){}o.nextTick=function(Le){var Re=new Array(arguments.length-1);if(arguments.length>1)for(var ke=1;ke<arguments.length;ke++)Re[ke-1]=arguments[ke];P.push(new ge(Le,Re)),1!==P.length||j||C(ie)},ge.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=_e,o.addListener=_e,o.once=_e,o.off=_e,o.removeListener=_e,o.removeAllListeners=_e,o.emit=_e,o.prependListener=_e,o.prependOnceListener=_e,o.listeners=function(Le){return[]},o.binding=function(Le){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(Le){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},1798:(n,s,t)=>{var o=t(4155),c=65536,C=t(396).Buffer,D=t.g.crypto||t.g.msCrypto;n.exports=D&&D.getRandomValues?function(P,j){if(P>4294967295)throw new RangeError("requested too many random bytes");var W=C.allocUnsafe(P);if(P>0)if(P>c)for(var re=0;re<P;re+=c)D.getRandomValues(W.slice(re,re+c));else D.getRandomValues(W);return"function"==typeof j?o.nextTick(function(){j(null,W)}):W}:function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}},4281:n=>{var s={};function t(c,g,C){C||(C=Error);var D=function(P){var j,W;function re(ie,ge,_e){return P.call(this,"string"==typeof g?g:g(ie,ge,_e))||this}return W=P,(j=re).prototype=Object.create(W.prototype),j.prototype.constructor=j,j.__proto__=W,re}(C);D.prototype.name=C.name,D.prototype.code=c,s[c]=D}function o(c,g){if(Array.isArray(c)){var C=c.length;return c=c.map(function(D){return String(D)}),C>2?"one of ".concat(g," ").concat(c.slice(0,C-1).join(", "),", or ")+c[C-1]:2===C?"one of ".concat(g," ").concat(c[0]," or ").concat(c[1]):"of ".concat(g," ").concat(c[0])}return"of ".concat(g," ").concat(String(c))}t("ERR_INVALID_OPT_VALUE",function(c,g){return'The value "'+g+'" is invalid for option "'+c+'"'},TypeError),t("ERR_INVALID_ARG_TYPE",function(c,g,C){var D,W,ie,_e;if("string"==typeof g&&"not "===g.substr(0,"not ".length)?(D="must not be",g=g.replace(/^not /,"")):D="must be",ie=c,(void 0===_e||_e>ie.length)&&(_e=ie.length)," argument"===ie.substring(_e-" argument".length,_e))W="The ".concat(c," ").concat(D," ").concat(o(g,"type"));else{var re=function(ie,ge,_e){return"number"!=typeof _e&&(_e=0),!(_e+".".length>ie.length)&&-1!==ie.indexOf(".",_e)}(c)?"property":"argument";W='The "'.concat(c,'" ').concat(re," ").concat(D," ").concat(o(g,"type"))}return W+". Received type ".concat(typeof C)},TypeError),t("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),t("ERR_METHOD_NOT_IMPLEMENTED",function(c){return"The "+c+" method is not implemented"}),t("ERR_STREAM_PREMATURE_CLOSE","Premature close"),t("ERR_STREAM_DESTROYED",function(c){return"Cannot call "+c+" after a stream was destroyed"}),t("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),t("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),t("ERR_STREAM_WRITE_AFTER_END","write after end"),t("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),t("ERR_UNKNOWN_ENCODING",function(c){return"Unknown encoding: "+c},TypeError),t("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),n.exports.q=s},6753:(n,s,t)=>{var o=t(4155),c=Object.keys||function(ge){var _e=[];for(var Le in ge)_e.push(Le);return _e};n.exports=W;var g=t(9481),C=t(4229);t(5717)(W,g);for(var D=c(C.prototype),P=0;P<D.length;P++){var j=D[P];W.prototype[j]||(W.prototype[j]=C.prototype[j])}function W(ge){if(!(this instanceof W))return new W(ge);g.call(this,ge),C.call(this,ge),this.allowHalfOpen=!0,ge&&(!1===ge.readable&&(this.readable=!1),!1===ge.writable&&(this.writable=!1),!1===ge.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",re)))}function re(){this._writableState.ended||o.nextTick(ie,this)}function ie(ge){ge.end()}Object.defineProperty(W.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(W.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(W.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(ge){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=ge,this._writableState.destroyed=ge)}})},2725:(n,s,t)=>{n.exports=c;var o=t(4605);function c(g){if(!(this instanceof c))return new c(g);o.call(this,g)}t(5717)(c,o),c.prototype._transform=function(g,C,D){D(null,g)}},9481:(n,s,t)=>{var o,c=t(4155);n.exports=Lt,Lt.ReadableState=dn,t(7187);var j,g=function(An,hn){return An.listeners(hn).length},C=t(2503),D=t(8764).Buffer,P=t.g.Uint8Array||function(){},W=t(4616);j=W&&W.debuglog?W.debuglog("stream"):function(){};var re,ie,ge,_e=t(7327),Le=t(1195),Re=t(2457).getHighWaterMark,ke=t(4281).q,xe=ke.ERR_INVALID_ARG_TYPE,U=ke.ERR_STREAM_PUSH_AFTER_EOF,pt=ke.ERR_METHOD_NOT_IMPLEMENTED,ht=ke.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;t(5717)(Lt,C);var wt=Le.errorOrDestroy,It=["error","close","destroy","pause","resume"];function dn(An,hn,qr){o=o||t(6753),"boolean"!=typeof qr&&(qr=hn instanceof o),this.objectMode=!!(An=An||{}).objectMode,qr&&(this.objectMode=this.objectMode||!!An.readableObjectMode),this.highWaterMark=Re(this,An,"readableHighWaterMark",qr),this.buffer=new _e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==An.emitClose,this.autoDestroy=!!An.autoDestroy,this.destroyed=!1,this.defaultEncoding=An.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,An.encoding&&(re||(re=t(2553).s),this.decoder=new re(An.encoding),this.encoding=An.encoding)}function Lt(An){if(o=o||t(6753),!(this instanceof Lt))return new Lt(An);this._readableState=new dn(An,this,this instanceof o),this.readable=!0,An&&("function"==typeof An.read&&(this._read=An.read),"function"==typeof An.destroy&&(this._destroy=An.destroy)),C.call(this)}function Dn(An,hn,qr,Ri,qi){j("readableAddChunk",hn);var Zo,Ys,Ws,wi,lo,bo=An._readableState;if(null===hn)bo.reading=!1,function(Ys,Ws){if(j("onEofChunk"),!Ws.ended){if(Ws.decoder){var wi=Ws.decoder.end();wi&&wi.length&&(Ws.buffer.push(wi),Ws.length+=Ws.objectMode?1:wi.length)}Ws.ended=!0,Ws.sync?Pr(Ys):(Ws.needReadable=!1,Ws.emittedReadable||(Ws.emittedReadable=!0,xr(Ys)))}}(An,bo);else if(qi||(Ys=bo,D.isBuffer(lo=Ws=hn)||lo instanceof P||"string"==typeof Ws||void 0===Ws||Ys.objectMode||(wi=new xe("chunk",["string","Buffer","Uint8Array"],Ws)),Zo=wi),Zo)wt(An,Zo);else if(bo.objectMode||hn&&hn.length>0)if("string"==typeof hn||bo.objectMode||Object.getPrototypeOf(hn)===D.prototype||(hn=function(Ys){return D.from(Ys)}(hn)),Ri)bo.endEmitted?wt(An,new ht):Mn(An,bo,hn,!0);else if(bo.ended)wt(An,new U);else{if(bo.destroyed)return!1;bo.reading=!1,bo.decoder&&!qr?(hn=bo.decoder.write(hn),bo.objectMode||0!==hn.length?Mn(An,bo,hn,!1):fn(An,bo)):Mn(An,bo,hn,!1)}else Ri||(bo.reading=!1,fn(An,bo));return!bo.ended&&(bo.length<bo.highWaterMark||0===bo.length)}function Mn(An,hn,qr,Ri){hn.flowing&&0===hn.length&&!hn.sync?(hn.awaitDrain=0,An.emit("data",qr)):(hn.length+=hn.objectMode?1:qr.length,Ri?hn.buffer.unshift(qr):hn.buffer.push(qr),hn.needReadable&&Pr(An)),fn(An,hn)}Object.defineProperty(Lt.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(An){this._readableState&&(this._readableState.destroyed=An)}}),Lt.prototype.destroy=Le.destroy,Lt.prototype._undestroy=Le.undestroy,Lt.prototype._destroy=function(An,hn){hn(An)},Lt.prototype.push=function(An,hn){var qr,Ri=this._readableState;return Ri.objectMode?qr=!0:"string"==typeof An&&((hn=hn||Ri.defaultEncoding)!==Ri.encoding&&(An=D.from(An,hn),hn=""),qr=!0),Dn(this,An,hn,!1,qr)},Lt.prototype.unshift=function(An){return Dn(this,An,null,!0,!1)},Lt.prototype.isPaused=function(){return!1===this._readableState.flowing},Lt.prototype.setEncoding=function(An){re||(re=t(2553).s);var hn=new re(An);this._readableState.decoder=hn,this._readableState.encoding=this._readableState.decoder.encoding;for(var qr=this._readableState.buffer.head,Ri="";null!==qr;)Ri+=hn.write(qr.data),qr=qr.next;return this._readableState.buffer.clear(),""!==Ri&&this._readableState.buffer.push(Ri),this._readableState.length=Ri.length,this};var $r=1073741824;function ur(An,hn){return An<=0||0===hn.length&&hn.ended?0:hn.objectMode?1:An!=An?hn.flowing&&hn.length?hn.buffer.head.data.length:hn.length:(An>hn.highWaterMark&&(hn.highWaterMark=((qr=An)>=$r?qr=$r:(qr--,qr|=qr>>>1,qr|=qr>>>2,qr|=qr>>>4,qr|=qr>>>8,qr|=qr>>>16,qr++),qr)),An<=hn.length?An:hn.ended?hn.length:(hn.needReadable=!0,0));var qr}function Pr(An){var hn=An._readableState;j("emitReadable",hn.needReadable,hn.emittedReadable),hn.needReadable=!1,hn.emittedReadable||(j("emitReadable",hn.flowing),hn.emittedReadable=!0,c.nextTick(xr,An))}function xr(An){var hn=An._readableState;j("emitReadable_",hn.destroyed,hn.length,hn.ended),hn.destroyed||!hn.length&&!hn.ended||(An.emit("readable"),hn.emittedReadable=!1),hn.needReadable=!hn.flowing&&!hn.ended&&hn.length<=hn.highWaterMark,Yr(An)}function fn(An,hn){hn.readingMore||(hn.readingMore=!0,c.nextTick(Nn,An,hn))}function Nn(An,hn){for(;!hn.reading&&!hn.ended&&(hn.length<hn.highWaterMark||hn.flowing&&0===hn.length);){var qr=hn.length;if(j("maybeReadMore read 0"),An.read(0),qr===hn.length)break}hn.readingMore=!1}function $n(An){var hn=An._readableState;hn.readableListening=An.listenerCount("readable")>0,hn.resumeScheduled&&!hn.paused?hn.flowing=!0:An.listenerCount("data")>0&&An.resume()}function Qn(An){j("readable nexttick read 0"),An.read(0)}function Tn(An,hn){j("resume",hn.reading),hn.reading||An.read(0),hn.resumeScheduled=!1,An.emit("resume"),Yr(An),hn.flowing&&!hn.reading&&An.read(0)}function Yr(An){var hn=An._readableState;for(j("flow",hn.flowing);hn.flowing&&null!==An.read(););}function ji(An,hn){return 0===hn.length?null:(hn.objectMode?qr=hn.buffer.shift():!An||An>=hn.length?(qr=hn.decoder?hn.buffer.join(""):1===hn.buffer.length?hn.buffer.first():hn.buffer.concat(hn.length),hn.buffer.clear()):qr=hn.buffer.consume(An,hn.decoder),qr);var qr}function ii(An){var hn=An._readableState;j("endReadable",hn.endEmitted),hn.endEmitted||(hn.ended=!0,c.nextTick(Ui,hn,An))}function Ui(An,hn){if(j("endReadableNT",An.endEmitted,An.length),!An.endEmitted&&0===An.length&&(An.endEmitted=!0,hn.readable=!1,hn.emit("end"),An.autoDestroy)){var qr=hn._writableState;(!qr||qr.autoDestroy&&qr.finished)&&hn.destroy()}}function Jr(An,hn){for(var qr=0,Ri=An.length;qr<Ri;qr++)if(An[qr]===hn)return qr;return-1}Lt.prototype.read=function(An){j("read",An),An=parseInt(An,10);var hn=this._readableState,qr=An;if(0!==An&&(hn.emittedReadable=!1),0===An&&hn.needReadable&&((0!==hn.highWaterMark?hn.length>=hn.highWaterMark:hn.length>0)||hn.ended))return j("read: emitReadable",hn.length,hn.ended),0===hn.length&&hn.ended?ii(this):Pr(this),null;if(0===(An=ur(An,hn))&&hn.ended)return 0===hn.length&&ii(this),null;var Ri,qi=hn.needReadable;return j("need readable",qi),(0===hn.length||hn.length-An<hn.highWaterMark)&&j("length less than watermark",qi=!0),hn.ended||hn.reading?j("reading or ended",qi=!1):qi&&(j("do read"),hn.reading=!0,hn.sync=!0,0===hn.length&&(hn.needReadable=!0),this._read(hn.highWaterMark),hn.sync=!1,hn.reading||(An=ur(qr,hn))),null===(Ri=An>0?ji(An,hn):null)?(hn.needReadable=hn.length<=hn.highWaterMark,An=0):(hn.length-=An,hn.awaitDrain=0),0===hn.length&&(hn.ended||(hn.needReadable=!0),qr!==An&&hn.ended&&ii(this)),null!==Ri&&this.emit("data",Ri),Ri},Lt.prototype._read=function(An){wt(this,new pt("_read()"))},Lt.prototype.pipe=function(An,hn){var qr=this,Ri=this._readableState;switch(Ri.pipesCount){case 0:Ri.pipes=An;break;case 1:Ri.pipes=[Ri.pipes,An];break;default:Ri.pipes.push(An)}Ri.pipesCount+=1,j("pipe count=%d opts=%j",Ri.pipesCount,hn);var qi=hn&&!1===hn.end||An===c.stdout||An===c.stderr?St:bo;function bo(){j("onend"),An.end()}Ri.endEmitted?c.nextTick(qi):qr.once("end",qi),An.on("unpipe",function Zo(Et,Bn){j("onunpipe"),Et===qr&&Bn&&!1===Bn.hasUnpiped&&(Bn.hasUnpiped=!0,j("cleanup"),An.removeListener("close",go),An.removeListener("finish",Ge),An.removeListener("drain",Ys),An.removeListener("error",lo),An.removeListener("unpipe",Zo),qr.removeListener("end",bo),qr.removeListener("end",St),qr.removeListener("data",wi),Ws=!0,!Ri.awaitDrain||An._writableState&&!An._writableState.needDrain||Ys())});var Et,Ys=(Et=qr,function(){var Bn=Et._readableState;j("pipeOnDrain",Bn.awaitDrain),Bn.awaitDrain&&Bn.awaitDrain--,0===Bn.awaitDrain&&g(Et,"data")&&(Bn.flowing=!0,Yr(Et))});An.on("drain",Ys);var Ws=!1;function wi(Et){j("ondata");var Bn=An.write(Et);j("dest.write",Bn),!1===Bn&&((1===Ri.pipesCount&&Ri.pipes===An||Ri.pipesCount>1&&-1!==Jr(Ri.pipes,An))&&!Ws&&(j("false write response, pause",Ri.awaitDrain),Ri.awaitDrain++),qr.pause())}function lo(Et){j("onerror",Et),St(),An.removeListener("error",lo),0===g(An,"error")&&wt(An,Et)}function go(){An.removeListener("finish",Ge),St()}function Ge(){j("onfinish"),An.removeListener("close",go),St()}function St(){j("unpipe"),qr.unpipe(An)}return qr.on("data",wi),function(Et,Bn,_r){if("function"==typeof Et.prependListener)return Et.prependListener(Bn,_r);Et._events&&Et._events[Bn]?Array.isArray(Et._events[Bn])?Et._events[Bn].unshift(_r):Et._events[Bn]=[_r,Et._events[Bn]]:Et.on(Bn,_r)}(An,"error",lo),An.once("close",go),An.once("finish",Ge),An.emit("pipe",qr),Ri.flowing||(j("pipe resume"),qr.resume()),An},Lt.prototype.unpipe=function(An){var hn=this._readableState,qr={hasUnpiped:!1};if(0===hn.pipesCount)return this;if(1===hn.pipesCount)return An&&An!==hn.pipes||(An||(An=hn.pipes),hn.pipes=null,hn.pipesCount=0,hn.flowing=!1,An&&An.emit("unpipe",this,qr)),this;if(!An){var Ri=hn.pipes,qi=hn.pipesCount;hn.pipes=null,hn.pipesCount=0,hn.flowing=!1;for(var Zo=0;Zo<qi;Zo++)Ri[Zo].emit("unpipe",this,{hasUnpiped:!1});return this}var bo=Jr(hn.pipes,An);return-1===bo||(hn.pipes.splice(bo,1),hn.pipesCount-=1,1===hn.pipesCount&&(hn.pipes=hn.pipes[0]),An.emit("unpipe",this,qr)),this},Lt.prototype.addListener=Lt.prototype.on=function(An,hn){var qr=C.prototype.on.call(this,An,hn),Ri=this._readableState;return"data"===An?(Ri.readableListening=this.listenerCount("readable")>0,!1!==Ri.flowing&&this.resume()):"readable"===An&&(Ri.endEmitted||Ri.readableListening||(Ri.readableListening=Ri.needReadable=!0,Ri.flowing=!1,Ri.emittedReadable=!1,j("on readable",Ri.length,Ri.reading),Ri.length?Pr(this):Ri.reading||c.nextTick(Qn,this))),qr},Lt.prototype.removeListener=function(An,hn){var qr=C.prototype.removeListener.call(this,An,hn);return"readable"===An&&c.nextTick($n,this),qr},Lt.prototype.removeAllListeners=function(An){var hn=C.prototype.removeAllListeners.apply(this,arguments);return"readable"!==An&&void 0!==An||c.nextTick($n,this),hn},Lt.prototype.resume=function(){var qr,An=this._readableState;return An.flowing||(j("resume"),An.flowing=!An.readableListening,this,(qr=An).resumeScheduled||(qr.resumeScheduled=!0,c.nextTick(Tn,this,qr))),An.paused=!1,this},Lt.prototype.pause=function(){return j("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(j("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},Lt.prototype.wrap=function(An){var hn=this,qr=this._readableState,Ri=!1;for(var qi in An.on("end",function(){if(j("wrapped end"),qr.decoder&&!qr.ended){var bo=qr.decoder.end();bo&&bo.length&&hn.push(bo)}hn.push(null)}),An.on("data",function(bo){j("wrapped data"),qr.decoder&&(bo=qr.decoder.write(bo)),qr.objectMode&&null==bo||(qr.objectMode||bo&&bo.length)&&(hn.push(bo)||(Ri=!0,An.pause()))}),An)void 0===this[qi]&&"function"==typeof An[qi]&&(this[qi]=function(bo){return function(){return An[bo].apply(An,arguments)}}(qi));for(var Zo=0;Zo<It.length;Zo++)An.on(It[Zo],this.emit.bind(this,It[Zo]));return this._read=function(bo){j("wrapped _read",bo),Ri&&(Ri=!1,An.resume())},this},"function"==typeof Symbol&&(Lt.prototype[Symbol.asyncIterator]=function(){return void 0===ie&&(ie=t(5850)),ie(this)}),Object.defineProperty(Lt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(Lt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(Lt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(An){this._readableState&&(this._readableState.flowing=An)}}),Lt._fromList=ji,Object.defineProperty(Lt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(Lt.from=function(An,hn){return void 0===ge&&(ge=t(5167)),ge(Lt,An,hn)})},4605:(n,s,t)=>{n.exports=W;var o=t(4281).q,c=o.ERR_METHOD_NOT_IMPLEMENTED,g=o.ERR_MULTIPLE_CALLBACK,C=o.ERR_TRANSFORM_ALREADY_TRANSFORMING,D=o.ERR_TRANSFORM_WITH_LENGTH_0,P=t(6753);function j(ge,_e){var Le=this._transformState;Le.transforming=!1;var Re=Le.writecb;if(null===Re)return this.emit("error",new g);Le.writechunk=null,Le.writecb=null,null!=_e&&this.push(_e),Re(ge);var ke=this._readableState;ke.reading=!1,(ke.needReadable||ke.length<ke.highWaterMark)&&this._read(ke.highWaterMark)}function W(ge){if(!(this instanceof W))return new W(ge);P.call(this,ge),this._transformState={afterTransform:j.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,ge&&("function"==typeof ge.transform&&(this._transform=ge.transform),"function"==typeof ge.flush&&(this._flush=ge.flush)),this.on("prefinish",re)}function re(){var ge=this;"function"!=typeof this._flush||this._readableState.destroyed?ie(this,null,null):this._flush(function(_e,Le){ie(ge,_e,Le)})}function ie(ge,_e,Le){if(_e)return ge.emit("error",_e);if(null!=Le&&ge.push(Le),ge._writableState.length)throw new D;if(ge._transformState.transforming)throw new C;return ge.push(null)}t(5717)(W,P),W.prototype.push=function(ge,_e){return this._transformState.needTransform=!1,P.prototype.push.call(this,ge,_e)},W.prototype._transform=function(ge,_e,Le){Le(new c("_transform()"))},W.prototype._write=function(ge,_e,Le){var Re=this._transformState;if(Re.writecb=Le,Re.writechunk=ge,Re.writeencoding=_e,!Re.transforming){var ke=this._readableState;(Re.needTransform||ke.needReadable||ke.length<ke.highWaterMark)&&this._read(ke.highWaterMark)}},W.prototype._read=function(ge){var _e=this._transformState;null===_e.writechunk||_e.transforming?_e.needTransform=!0:(_e.transforming=!0,this._transform(_e.writechunk,_e.writeencoding,_e.afterTransform))},W.prototype._destroy=function(ge,_e){P.prototype._destroy.call(this,ge,function(Le){_e(Le)})}},4229:(n,s,t)=>{var o,c=t(4155);function g(fn){var Nn=this;this.next=null,this.entry=null,this.finish=function(){!function($n,Qn,Tn){var Yr=$n.entry;for($n.entry=null;Yr;){var ji=Yr.callback;Qn.pendingcb--,ji(void 0),Yr=Yr.next}Qn.corkedRequestsFree.next=$n}(Nn,fn)}}n.exports=Lt,Lt.WritableState=dn;var W,C={deprecate:t(4927)},D=t(2503),P=t(8764).Buffer,j=t.g.Uint8Array||function(){},re=t(1195),ie=t(2457).getHighWaterMark,ge=t(4281).q,_e=ge.ERR_INVALID_ARG_TYPE,Le=ge.ERR_METHOD_NOT_IMPLEMENTED,Re=ge.ERR_MULTIPLE_CALLBACK,ke=ge.ERR_STREAM_CANNOT_PIPE,xe=ge.ERR_STREAM_DESTROYED,U=ge.ERR_STREAM_NULL_VALUES,pt=ge.ERR_STREAM_WRITE_AFTER_END,ht=ge.ERR_UNKNOWN_ENCODING,wt=re.errorOrDestroy;function It(){}function dn(fn,Nn,$n){o=o||t(6753),"boolean"!=typeof $n&&($n=Nn instanceof o),this.objectMode=!!(fn=fn||{}).objectMode,$n&&(this.objectMode=this.objectMode||!!fn.writableObjectMode),this.highWaterMark=ie(this,fn,"writableHighWaterMark",$n),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1,this.decodeStrings=!(!1===fn.decodeStrings),this.defaultEncoding=fn.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(Tn){!function(Yr,ji){var hn,ii=Yr._writableState,Ui=ii.sync,Jr=ii.writecb;if("function"!=typeof Jr)throw new Re;if((hn=ii).writing=!1,hn.writecb=null,hn.length-=hn.writelen,hn.writelen=0,ji)!function(hn,qr,Ri,qi,Zo){--qr.pendingcb,Ri?(c.nextTick(Zo,qi),c.nextTick(xr,hn,qr),hn._writableState.errorEmitted=!0,wt(hn,qi)):(Zo(qi),hn._writableState.errorEmitted=!0,wt(hn,qi),xr(hn,qr))}(Yr,ii,Ui,ji,Jr);else{var An=ur(ii)||Yr.destroyed;An||ii.corked||ii.bufferProcessing||!ii.bufferedRequest||$r(Yr,ii),Ui?c.nextTick(Mn,Yr,ii,An,Jr):Mn(Yr,ii,An,Jr)}}(Nn,Tn)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==fn.emitClose,this.autoDestroy=!!fn.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new g(this)}function Lt(fn){var Nn=this instanceof(o=o||t(6753));if(!Nn&&!W.call(Lt,this))return new Lt(fn);this._writableState=new dn(fn,this,Nn),this.writable=!0,fn&&("function"==typeof fn.write&&(this._write=fn.write),"function"==typeof fn.writev&&(this._writev=fn.writev),"function"==typeof fn.destroy&&(this._destroy=fn.destroy),"function"==typeof fn.final&&(this._final=fn.final)),D.call(this)}function Dn(fn,Nn,$n,Qn,Tn,Yr,ji){Nn.writelen=Qn,Nn.writecb=ji,Nn.writing=!0,Nn.sync=!0,Nn.destroyed?Nn.onwrite(new xe("write")):$n?fn._writev(Tn,Nn.onwrite):fn._write(Tn,Yr,Nn.onwrite),Nn.sync=!1}function Mn(fn,Nn,$n,Qn){var Tn,Yr;$n||(Tn=fn,0===(Yr=Nn).length&&Yr.needDrain&&(Yr.needDrain=!1,Tn.emit("drain"))),Nn.pendingcb--,Qn(),xr(fn,Nn)}function $r(fn,Nn){Nn.bufferProcessing=!0;var $n=Nn.bufferedRequest;if(fn._writev&&$n&&$n.next){var Tn=new Array(Nn.bufferedRequestCount),Yr=Nn.corkedRequestsFree;Yr.entry=$n;for(var ji=0,ii=!0;$n;)Tn[ji]=$n,$n.isBuf||(ii=!1),$n=$n.next,ji+=1;Tn.allBuffers=ii,Dn(fn,Nn,!0,Nn.length,Tn,"",Yr.finish),Nn.pendingcb++,Nn.lastBufferedRequest=null,Yr.next?(Nn.corkedRequestsFree=Yr.next,Yr.next=null):Nn.corkedRequestsFree=new g(Nn),Nn.bufferedRequestCount=0}else{for(;$n;){var Ui=$n.chunk;if(Dn(fn,Nn,!1,Nn.objectMode?1:Ui.length,Ui,$n.encoding,$n.callback),$n=$n.next,Nn.bufferedRequestCount--,Nn.writing)break}null===$n&&(Nn.lastBufferedRequest=null)}Nn.bufferedRequest=$n,Nn.bufferProcessing=!1}function ur(fn){return fn.ending&&0===fn.length&&null===fn.bufferedRequest&&!fn.finished&&!fn.writing}function Pr(fn,Nn){fn._final(function($n){Nn.pendingcb--,$n&&wt(fn,$n),Nn.prefinished=!0,fn.emit("prefinish"),xr(fn,Nn)})}function xr(fn,Nn){var Tn,Yr,$n=ur(Nn);if($n&&(Tn=fn,(Yr=Nn).prefinished||Yr.finalCalled||("function"!=typeof Tn._final||Yr.destroyed?(Yr.prefinished=!0,Tn.emit("prefinish")):(Yr.pendingcb++,Yr.finalCalled=!0,c.nextTick(Pr,Tn,Yr))),0===Nn.pendingcb&&(Nn.finished=!0,fn.emit("finish"),Nn.autoDestroy))){var Qn=fn._readableState;(!Qn||Qn.autoDestroy&&Qn.endEmitted)&&fn.destroy()}return $n}t(5717)(Lt,D),dn.prototype.getBuffer=function(){for(var fn=this.bufferedRequest,Nn=[];fn;)Nn.push(fn),fn=fn.next;return Nn},function(){try{Object.defineProperty(dn.prototype,"buffer",{get:C.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(fn){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(W=Function.prototype[Symbol.hasInstance],Object.defineProperty(Lt,Symbol.hasInstance,{value:function(fn){return!!W.call(this,fn)||this===Lt&&fn&&fn._writableState instanceof dn}})):W=function(fn){return fn instanceof this},Lt.prototype.pipe=function(){wt(this,new ke)},Lt.prototype.write=function(fn,Nn,$n){var Qn,ii,Ui,Jr,Tn=this._writableState,Yr=!1,ji=!Tn.objectMode&&(P.isBuffer(Qn=fn)||Qn instanceof j);return ji&&!P.isBuffer(fn)&&(fn=P.from(fn)),"function"==typeof Nn&&($n=Nn,Nn=null),ji?Nn="buffer":Nn||(Nn=Tn.defaultEncoding),"function"!=typeof $n&&($n=It),Tn.ending?(ii=this,Ui=$n,Jr=new pt,wt(ii,Jr),c.nextTick(Ui,Jr)):(ji||function(ii,Ui,Jr,An){var hn;return null===Jr?hn=new U:"string"==typeof Jr||Ui.objectMode||(hn=new _e("chunk",["string","Buffer"],Jr)),!hn||(wt(ii,hn),c.nextTick(An,hn),!1)}(this,Tn,fn,$n))&&(Tn.pendingcb++,Yr=function(ii,Ui,Jr,An,hn,qr){if(!Jr){var Ri=(Ws=An,(Ys=Ui).objectMode||!1===Ys.decodeStrings||"string"!=typeof Ws||(Ws=P.from(Ws,hn)),Ws);An!==Ri&&(Jr=!0,hn="buffer",An=Ri)}var Ys,Ws,qi=Ui.objectMode?1:An.length;Ui.length+=qi;var Zo=Ui.length<Ui.highWaterMark;if(Zo||(Ui.needDrain=!0),Ui.writing||Ui.corked){var bo=Ui.lastBufferedRequest;Ui.lastBufferedRequest={chunk:An,encoding:hn,isBuf:Jr,callback:qr,next:null},bo?bo.next=Ui.lastBufferedRequest:Ui.bufferedRequest=Ui.lastBufferedRequest,Ui.bufferedRequestCount+=1}else Dn(ii,Ui,!1,qi,An,hn,qr);return Zo}(this,Tn,ji,fn,Nn,$n)),Yr},Lt.prototype.cork=function(){this._writableState.corked++},Lt.prototype.uncork=function(){var fn=this._writableState;fn.corked&&(fn.corked--,fn.writing||fn.corked||fn.bufferProcessing||!fn.bufferedRequest||$r(this,fn))},Lt.prototype.setDefaultEncoding=function(fn){if("string"==typeof fn&&(fn=fn.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((fn+"").toLowerCase())>-1))throw new ht(fn);return this._writableState.defaultEncoding=fn,this},Object.defineProperty(Lt.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Lt.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Lt.prototype._write=function(fn,Nn,$n){$n(new Le("_write()"))},Lt.prototype._writev=null,Lt.prototype.end=function(fn,Nn,$n){var Yr,ji,Qn=this._writableState;return"function"==typeof fn?($n=fn,fn=null,Nn=null):"function"==typeof Nn&&($n=Nn,Nn=null),null!=fn&&this.write(fn,Nn),Qn.corked&&(Qn.corked=1,this.uncork()),Qn.ending||(this,ji=$n,(Yr=Qn).ending=!0,xr(this,Yr),ji&&(Yr.finished?c.nextTick(ji):this.once("finish",ji)),Yr.ended=!0,this.writable=!1),this},Object.defineProperty(Lt.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Lt.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(fn){this._writableState&&(this._writableState.destroyed=fn)}}),Lt.prototype.destroy=re.destroy,Lt.prototype._undestroy=re.undestroy,Lt.prototype._destroy=function(fn,Nn){Nn(fn)}},5850:(n,s,t)=>{var o,c=t(4155);function g(U,pt,ht){return pt in U?Object.defineProperty(U,pt,{value:ht,enumerable:!0,configurable:!0,writable:!0}):U[pt]=ht,U}var C=t(8610),D=Symbol("lastResolve"),P=Symbol("lastReject"),j=Symbol("error"),W=Symbol("ended"),re=Symbol("lastPromise"),ie=Symbol("handlePromise"),ge=Symbol("stream");function _e(U,pt){return{value:U,done:pt}}function Le(U){var pt=U[D];if(null!==pt){var ht=U[ge].read();null!==ht&&(U[re]=null,U[D]=null,U[P]=null,pt(_e(ht,!1)))}}function Re(U){c.nextTick(Le,U)}var ke=Object.getPrototypeOf(function(){}),xe=Object.setPrototypeOf((g(o={get stream(){return this[ge]},next:function(){var U=this,pt=this[j];if(null!==pt)return Promise.reject(pt);if(this[W])return Promise.resolve(_e(void 0,!0));if(this[ge].destroyed)return new Promise(function(dn,Lt){c.nextTick(function(){U[j]?Lt(U[j]):dn(_e(void 0,!0))})});var ht,dn,Lt,wt=this[re];if(wt)ht=new Promise((dn=wt,Lt=this,function(Dn,Mn){dn.then(function(){Lt[W]?Dn(_e(void 0,!0)):Lt[ie](Dn,Mn)},Mn)}));else{var It=this[ge].read();if(null!==It)return Promise.resolve(_e(It,!1));ht=new Promise(this[ie])}return this[re]=ht,ht}},Symbol.asyncIterator,function(){return this}),g(o,"return",function(){var U=this;return new Promise(function(pt,ht){U[ge].destroy(null,function(wt){wt?ht(wt):pt(_e(void 0,!0))})})}),o),ke);n.exports=function(U){var pt,ht=Object.create(xe,(g(pt={},ge,{value:U,writable:!0}),g(pt,D,{value:null,writable:!0}),g(pt,P,{value:null,writable:!0}),g(pt,j,{value:null,writable:!0}),g(pt,W,{value:U._readableState.endEmitted,writable:!0}),g(pt,ie,{value:function(wt,It){var dn=ht[ge].read();dn?(ht[re]=null,ht[D]=null,ht[P]=null,wt(_e(dn,!1))):(ht[D]=wt,ht[P]=It)},writable:!0}),pt));return ht[re]=null,C(U,function(wt){if(wt&&"ERR_STREAM_PREMATURE_CLOSE"!==wt.code){var It=ht[P];return null!==It&&(ht[re]=null,ht[D]=null,ht[P]=null,It(wt)),void(ht[j]=wt)}var dn=ht[D];null!==dn&&(ht[re]=null,ht[D]=null,ht[P]=null,dn(_e(void 0,!0))),ht[W]=!0}),U.on("readable",Re.bind(null,ht)),ht}},7327:(n,s,t)=>{function o(j,W){var re=Object.keys(j);if(Object.getOwnPropertySymbols){var ie=Object.getOwnPropertySymbols(j);W&&(ie=ie.filter(function(ge){return Object.getOwnPropertyDescriptor(j,ge).enumerable})),re.push.apply(re,ie)}return re}function c(j,W,re){return W in j?Object.defineProperty(j,W,{value:re,enumerable:!0,configurable:!0,writable:!0}):j[W]=re,j}var C=t(8764).Buffer,D=t(2361).inspect,P=D&&D.custom||"inspect";n.exports=function(){function j(){(function(ge,_e){if(!(ge instanceof _e))throw new TypeError("Cannot call a class as a function")})(this,j),this.head=null,this.tail=null,this.length=0}var re;return(re=[{key:"push",value:function(ge){var _e={data:ge,next:null};this.length>0?this.tail.next=_e:this.head=_e,this.tail=_e,++this.length}},{key:"unshift",value:function(ge){var _e={data:ge,next:this.head};0===this.length&&(this.tail=_e),this.head=_e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var ge=this.head.data;return this.head=1===this.length?this.tail=null:this.head.next,--this.length,ge}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(ge){if(0===this.length)return"";for(var _e=this.head,Le=""+_e.data;_e=_e.next;)Le+=ge+_e.data;return Le}},{key:"concat",value:function(ge){if(0===this.length)return C.alloc(0);for(var ke=C.allocUnsafe(ge>>>0),xe=this.head,U=0;xe;)C.prototype.copy.call(xe.data,ke,U),U+=xe.data.length,xe=xe.next;return ke}},{key:"consume",value:function(ge,_e){var Le;return ge<this.head.data.length?(Le=this.head.data.slice(0,ge),this.head.data=this.head.data.slice(ge)):Le=ge===this.head.data.length?this.shift():_e?this._getString(ge):this._getBuffer(ge),Le}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(ge){var _e=this.head,Le=1,Re=_e.data;for(ge-=Re.length;_e=_e.next;){var ke=_e.data,xe=ge>ke.length?ke.length:ge;if(Re+=xe===ke.length?ke:ke.slice(0,ge),0==(ge-=xe)){xe===ke.length?(++Le,this.head=_e.next?_e.next:this.tail=null):(this.head=_e,_e.data=ke.slice(xe));break}++Le}return this.length-=Le,Re}},{key:"_getBuffer",value:function(ge){var _e=C.allocUnsafe(ge),Le=this.head,Re=1;for(Le.data.copy(_e),ge-=Le.data.length;Le=Le.next;){var ke=Le.data,xe=ge>ke.length?ke.length:ge;if(ke.copy(_e,_e.length-ge,0,xe),0==(ge-=xe)){xe===ke.length?(++Re,this.head=Le.next?Le.next:this.tail=null):(this.head=Le,Le.data=ke.slice(xe));break}++Re}return this.length-=Re,_e}},{key:P,value:function(ge,_e){return D(this,function(Le){for(var Re=1;Re<arguments.length;Re++){var ke=null!=arguments[Re]?arguments[Re]:{};Re%2?o(Object(ke),!0).forEach(function(xe){c(Le,xe,ke[xe])}):Object.getOwnPropertyDescriptors?Object.defineProperties(Le,Object.getOwnPropertyDescriptors(ke)):o(Object(ke)).forEach(function(xe){Object.defineProperty(Le,xe,Object.getOwnPropertyDescriptor(ke,xe))})}return Le}({},_e,{depth:0,customInspect:!1}))}}])&&function(j,W){for(var re=0;re<W.length;re++){var ie=W[re];ie.enumerable=ie.enumerable||!1,ie.configurable=!0,"value"in ie&&(ie.writable=!0),Object.defineProperty(j,ie.key,ie)}}(j.prototype,re),j}()},1195:(n,s,t)=>{var o=t(4155);function c(D,P){C(D,P),g(D)}function g(D){D._writableState&&!D._writableState.emitClose||D._readableState&&!D._readableState.emitClose||D.emit("close")}function C(D,P){D.emit("error",P)}n.exports={destroy:function(D,P){var j=this;return this._readableState&&this._readableState.destroyed||this._writableState&&this._writableState.destroyed?(P?P(D):D&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,o.nextTick(C,this,D)):o.nextTick(C,this,D)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(D||null,function(ie){!P&&ie?j._writableState?j._writableState.errorEmitted?o.nextTick(g,j):(j._writableState.errorEmitted=!0,o.nextTick(c,j,ie)):o.nextTick(c,j,ie):P?(o.nextTick(g,j),P(ie)):o.nextTick(g,j)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(D,P){var j=D._readableState,W=D._writableState;j&&j.autoDestroy||W&&W.autoDestroy?D.destroy(P):D.emit("error",P)}}},8610:(n,s,t)=>{var o=t(4281).q.ERR_STREAM_PREMATURE_CLOSE;function c(){}n.exports=function g(C,D,P){if("function"==typeof D)return g(C,null,D);var U,pt;D||(D={}),U=P||c,pt=!1,P=function(){if(!pt){pt=!0;for(var ht=arguments.length,wt=new Array(ht),It=0;It<ht;It++)wt[It]=arguments[It];U.apply(this,wt)}};var j=D.readable||!1!==D.readable&&C.readable,W=D.writable||!1!==D.writable&&C.writable,re=function(){C.writable||ge()},ie=C._writableState&&C._writableState.finished,ge=function(){W=!1,ie=!0,j||P.call(C)},_e=C._readableState&&C._readableState.endEmitted,Le=function(){j=!1,_e=!0,W||P.call(C)},Re=function(U){P.call(C,U)},ke=function(){var U;return j&&!_e?(C._readableState&&C._readableState.ended||(U=new o),P.call(C,U)):W&&!ie?(C._writableState&&C._writableState.ended||(U=new o),P.call(C,U)):void 0},xe=function(){C.req.on("finish",ge)};return function(U){return U.setHeader&&"function"==typeof U.abort}(C)?(C.on("complete",ge),C.on("abort",ke),C.req?xe():C.on("request",xe)):W&&!C._writableState&&(C.on("end",re),C.on("close",re)),C.on("end",Le),C.on("finish",ge),!1!==D.error&&C.on("error",Re),C.on("close",ke),function(){C.removeListener("complete",ge),C.removeListener("abort",ke),C.removeListener("request",xe),C.req&&C.req.removeListener("finish",ge),C.removeListener("end",re),C.removeListener("close",re),C.removeListener("finish",ge),C.removeListener("end",Le),C.removeListener("error",Re),C.removeListener("close",ke)}}},5167:n=>{n.exports=function(){throw new Error("Readable.from is not available in the browser")}},9946:(n,s,t)=>{var o,c=t(4281).q,g=c.ERR_MISSING_ARGS,C=c.ERR_STREAM_DESTROYED;function D(ie){if(ie)throw ie}function P(ie,ge,_e,Le){var xe,U;xe=Le,U=!1,Le=function(){U||(U=!0,xe.apply(void 0,arguments))};var Re=!1;ie.on("close",function(){Re=!0}),void 0===o&&(o=t(8610)),o(ie,{readable:ge,writable:_e},function(xe){if(xe)return Le(xe);Re=!0,Le()});var ke=!1;return function(xe){if(!Re&&!ke)return ke=!0,function(U){return U.setHeader&&"function"==typeof U.abort}(ie)?ie.abort():"function"==typeof ie.destroy?ie.destroy():void Le(xe||new C("pipe"))}}function j(ie){ie()}function W(ie,ge){return ie.pipe(ge)}function re(ie){return ie.length?"function"!=typeof ie[ie.length-1]?D:ie.pop():D}n.exports=function(){for(var ie=arguments.length,ge=new Array(ie),_e=0;_e<ie;_e++)ge[_e]=arguments[_e];var Le,Re=re(ge);if(Array.isArray(ge[0])&&(ge=ge[0]),ge.length<2)throw new g("streams");var ke=ge.map(function(xe,U){var pt=U<ge.length-1;return P(xe,pt,U>0,function(ht){Le||(Le=ht),ht&&ke.forEach(j),pt||(ke.forEach(j),Re(Le))})});return ge.reduce(W)}},2457:(n,s,t)=>{var o=t(4281).q.ERR_INVALID_OPT_VALUE;n.exports={getHighWaterMark:function(c,g,C,D){var j,P=null!=(j=g).highWaterMark?j.highWaterMark:D?j[C]:null;if(null!=P){if(!isFinite(P)||Math.floor(P)!==P||P<0)throw new o(D?C:"highWaterMark",P);return Math.floor(P)}return c.objectMode?16:16384}}},2503:(n,s,t)=>{n.exports=t(7187).EventEmitter},4189:(n,s,t)=>{var o=t(396).Buffer;function c(g,C){this._block=o.alloc(g),this._finalSize=C,this._blockSize=g,this._len=0}c.prototype.update=function(g,C){"string"==typeof g&&(g=o.from(g,C=C||"utf8"));for(var D=this._block,P=this._blockSize,j=g.length,W=this._len,re=0;re<j;){for(var ie=W%P,ge=Math.min(j-re,P-ie),_e=0;_e<ge;_e++)D[ie+_e]=g[re+_e];re+=ge,(W+=ge)%P==0&&this._update(D)}return this._len+=j,this},c.prototype.digest=function(g){var C=this._len%this._blockSize;this._block[C]=128,this._block.fill(0,C+1),C>=this._finalSize&&(this._update(this._block),this._block.fill(0));var D=8*this._len;if(D<=4294967295)this._block.writeUInt32BE(D,this._blockSize-4);else{var P=(4294967295&D)>>>0;this._block.writeUInt32BE((D-P)/4294967296,this._blockSize-8),this._block.writeUInt32BE(P,this._blockSize-4)}this._update(this._block);var W=this._hash();return g?W.toString(g):W},c.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=c},9072:(n,s,t)=>{var o=n.exports=function(c){c=c.toLowerCase();var g=o[c];if(!g)throw new Error(c+" is not supported (we accept pull requests)");return new g};o.sha=t(4448),o.sha1=t(8336),o.sha224=t(8432),o.sha256=t(7499),o.sha384=t(1686),o.sha512=t(7816)},4448:(n,s,t)=>{var o=t(5717),c=t(4189),g=t(396).Buffer,C=[1518500249,1859775393,-1894007588,-899497514],D=new Array(80);function P(){this.init(),this._w=D,c.call(this,64,56)}function j(re){return re<<30|re>>>2}function W(re,ie,ge,_e){return 0===re?ie&ge|~ie&_e:2===re?ie&ge|ie&_e|ge&_e:ie^ge^_e}o(P,c),P.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},P.prototype._update=function(re){for(var ie,ge=this._w,_e=0|this._a,Le=0|this._b,Re=0|this._c,ke=0|this._d,xe=0|this._e,U=0;U<16;++U)ge[U]=re.readInt32BE(4*U);for(;U<80;++U)ge[U]=ge[U-3]^ge[U-8]^ge[U-14]^ge[U-16];for(var pt=0;pt<80;++pt){var ht=~~(pt/20),wt=0|((ie=_e)<<5|ie>>>27)+W(ht,Le,Re,ke)+xe+ge[pt]+C[ht];xe=ke,ke=Re,Re=j(Le),Le=_e,_e=wt}this._a=_e+this._a|0,this._b=Le+this._b|0,this._c=Re+this._c|0,this._d=ke+this._d|0,this._e=xe+this._e|0},P.prototype._hash=function(){var re=g.allocUnsafe(20);return re.writeInt32BE(0|this._a,0),re.writeInt32BE(0|this._b,4),re.writeInt32BE(0|this._c,8),re.writeInt32BE(0|this._d,12),re.writeInt32BE(0|this._e,16),re},n.exports=P},8336:(n,s,t)=>{var o=t(5717),c=t(4189),g=t(396).Buffer,C=[1518500249,1859775393,-1894007588,-899497514],D=new Array(80);function P(){this.init(),this._w=D,c.call(this,64,56)}function j(ie){return ie<<5|ie>>>27}function W(ie){return ie<<30|ie>>>2}function re(ie,ge,_e,Le){return 0===ie?ge&_e|~ge&Le:2===ie?ge&_e|ge&Le|_e&Le:ge^_e^Le}o(P,c),P.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},P.prototype._update=function(ie){for(var ge,_e=this._w,Le=0|this._a,Re=0|this._b,ke=0|this._c,xe=0|this._d,U=0|this._e,pt=0;pt<16;++pt)_e[pt]=ie.readInt32BE(4*pt);for(;pt<80;++pt)_e[pt]=(ge=_e[pt-3]^_e[pt-8]^_e[pt-14]^_e[pt-16])<<1|ge>>>31;for(var ht=0;ht<80;++ht){var wt=~~(ht/20),It=j(Le)+re(wt,Re,ke,xe)+U+_e[ht]+C[wt]|0;U=xe,xe=ke,ke=W(Re),Re=Le,Le=It}this._a=Le+this._a|0,this._b=Re+this._b|0,this._c=ke+this._c|0,this._d=xe+this._d|0,this._e=U+this._e|0},P.prototype._hash=function(){var ie=g.allocUnsafe(20);return ie.writeInt32BE(0|this._a,0),ie.writeInt32BE(0|this._b,4),ie.writeInt32BE(0|this._c,8),ie.writeInt32BE(0|this._d,12),ie.writeInt32BE(0|this._e,16),ie},n.exports=P},8432:(n,s,t)=>{var o=t(5717),c=t(7499),g=t(4189),C=t(396).Buffer,D=new Array(64);function P(){this.init(),this._w=D,g.call(this,64,56)}o(P,c),P.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},P.prototype._hash=function(){var j=C.allocUnsafe(28);return j.writeInt32BE(this._a,0),j.writeInt32BE(this._b,4),j.writeInt32BE(this._c,8),j.writeInt32BE(this._d,12),j.writeInt32BE(this._e,16),j.writeInt32BE(this._f,20),j.writeInt32BE(this._g,24),j},n.exports=P},7499:(n,s,t)=>{var o=t(5717),c=t(4189),g=t(396).Buffer,C=[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],D=new Array(64);function P(){this.init(),this._w=D,c.call(this,64,56)}function j(_e,Le,Re){return Re^_e&(Le^Re)}function W(_e,Le,Re){return _e&Le|Re&(_e|Le)}function re(_e){return(_e>>>2|_e<<30)^(_e>>>13|_e<<19)^(_e>>>22|_e<<10)}function ie(_e){return(_e>>>6|_e<<26)^(_e>>>11|_e<<21)^(_e>>>25|_e<<7)}function ge(_e){return(_e>>>7|_e<<25)^(_e>>>18|_e<<14)^_e>>>3}o(P,c),P.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},P.prototype._update=function(_e){for(var Le,Re=this._w,ke=0|this._a,xe=0|this._b,U=0|this._c,pt=0|this._d,ht=0|this._e,wt=0|this._f,It=0|this._g,dn=0|this._h,Lt=0;Lt<16;++Lt)Re[Lt]=_e.readInt32BE(4*Lt);for(;Lt<64;++Lt)Re[Lt]=0|(((Le=Re[Lt-2])>>>17|Le<<15)^(Le>>>19|Le<<13)^Le>>>10)+Re[Lt-7]+ge(Re[Lt-15])+Re[Lt-16];for(var Dn=0;Dn<64;++Dn){var Mn=dn+ie(ht)+j(ht,wt,It)+C[Dn]+Re[Dn]|0,$r=re(ke)+W(ke,xe,U)|0;dn=It,It=wt,wt=ht,ht=pt+Mn|0,pt=U,U=xe,xe=ke,ke=Mn+$r|0}this._a=ke+this._a|0,this._b=xe+this._b|0,this._c=U+this._c|0,this._d=pt+this._d|0,this._e=ht+this._e|0,this._f=wt+this._f|0,this._g=It+this._g|0,this._h=dn+this._h|0},P.prototype._hash=function(){var _e=g.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},n.exports=P},1686:(n,s,t)=>{var o=t(5717),c=t(7816),g=t(4189),C=t(396).Buffer,D=new Array(160);function P(){this.init(),this._w=D,g.call(this,128,112)}o(P,c),P.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},P.prototype._hash=function(){var j=C.allocUnsafe(48);function W(re,ie,ge){j.writeInt32BE(re,ge),j.writeInt32BE(ie,ge+4)}return W(this._ah,this._al,0),W(this._bh,this._bl,8),W(this._ch,this._cl,16),W(this._dh,this._dl,24),W(this._eh,this._el,32),W(this._fh,this._fl,40),j},n.exports=P},7816:(n,s,t)=>{var o=t(5717),c=t(4189),g=t(396).Buffer,C=[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],D=new Array(160);function P(){this.init(),this._w=D,c.call(this,128,112)}function j(xe,U,pt){return pt^xe&(U^pt)}function W(xe,U,pt){return xe&U|pt&(xe|U)}function re(xe,U){return(xe>>>28|U<<4)^(U>>>2|xe<<30)^(U>>>7|xe<<25)}function ie(xe,U){return(xe>>>14|U<<18)^(xe>>>18|U<<14)^(U>>>9|xe<<23)}function ge(xe,U){return(xe>>>1|U<<31)^(xe>>>8|U<<24)^xe>>>7}function _e(xe,U){return(xe>>>1|U<<31)^(xe>>>8|U<<24)^(xe>>>7|U<<25)}function Le(xe,U){return(xe>>>19|U<<13)^(U>>>29|xe<<3)^xe>>>6}function Re(xe,U){return(xe>>>19|U<<13)^(U>>>29|xe<<3)^(xe>>>6|U<<26)}function ke(xe,U){return xe>>>0<U>>>0?1:0}o(P,c),P.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},P.prototype._update=function(xe){for(var U=this._w,pt=0|this._ah,ht=0|this._bh,wt=0|this._ch,It=0|this._dh,dn=0|this._eh,Lt=0|this._fh,Dn=0|this._gh,Mn=0|this._hh,$r=0|this._al,ur=0|this._bl,Pr=0|this._cl,xr=0|this._dl,fn=0|this._el,Nn=0|this._fl,$n=0|this._gl,Qn=0|this._hl,Tn=0;Tn<32;Tn+=2)U[Tn]=xe.readInt32BE(4*Tn),U[Tn+1]=xe.readInt32BE(4*Tn+4);for(;Tn<160;Tn+=2){var Yr=U[Tn-30],ji=U[Tn-30+1],ii=ge(Yr,ji),Ui=_e(ji,Yr),Jr=Le(Yr=U[Tn-4],ji=U[Tn-4+1]),An=Re(ji,Yr),Ri=U[Tn-32],qi=U[Tn-32+1],Zo=Ui+U[Tn-14+1]|0,bo=ii+U[Tn-14]+ke(Zo,Ui)|0;bo=(bo=bo+Jr+ke(Zo=Zo+An|0,An)|0)+Ri+ke(Zo=Zo+qi|0,qi)|0,U[Tn]=bo,U[Tn+1]=Zo}for(var Ys=0;Ys<160;Ys+=2){bo=U[Ys],Zo=U[Ys+1];var Ws=W(pt,ht,wt),wi=W($r,ur,Pr),lo=re(pt,$r),go=re($r,pt),Ge=ie(dn,fn),St=ie(fn,dn),Et=C[Ys],Bn=C[Ys+1],_r=j(dn,Lt,Dn),Gr=j(fn,Nn,$n),xi=Qn+St|0,Zs=Mn+Ge+ke(xi,Qn)|0;Zs=(Zs=(Zs=Zs+_r+ke(xi=xi+Gr|0,Gr)|0)+Et+ke(xi=xi+Bn|0,Bn)|0)+bo+ke(xi=xi+Zo|0,Zo)|0;var jo=go+wi|0,sl=lo+Ws+ke(jo,go)|0;Mn=Dn,Qn=$n,Dn=Lt,$n=Nn,Lt=dn,Nn=fn,dn=It+Zs+ke(fn=xr+xi|0,xr)|0,It=wt,xr=Pr,wt=ht,Pr=ur,ht=pt,ur=$r,pt=Zs+sl+ke($r=xi+jo|0,xi)|0}this._al=this._al+$r|0,this._bl=this._bl+ur|0,this._cl=this._cl+Pr|0,this._dl=this._dl+xr|0,this._el=this._el+fn|0,this._fl=this._fl+Nn|0,this._gl=this._gl+$n|0,this._hl=this._hl+Qn|0,this._ah=this._ah+pt+ke(this._al,$r)|0,this._bh=this._bh+ht+ke(this._bl,ur)|0,this._ch=this._ch+wt+ke(this._cl,Pr)|0,this._dh=this._dh+It+ke(this._dl,xr)|0,this._eh=this._eh+dn+ke(this._el,fn)|0,this._fh=this._fh+Lt+ke(this._fl,Nn)|0,this._gh=this._gh+Dn+ke(this._gl,$n)|0,this._hh=this._hh+Mn+ke(this._hl,Qn)|0},P.prototype._hash=function(){var xe=g.allocUnsafe(64);function U(pt,ht,wt){xe.writeInt32BE(pt,wt),xe.writeInt32BE(ht,wt+4)}return U(this._ah,this._al,0),U(this._bh,this._bl,8),U(this._ch,this._cl,16),U(this._dh,this._dl,24),U(this._eh,this._el,32),U(this._fh,this._fl,40),U(this._gh,this._gl,48),U(this._hh,this._hl,56),xe},n.exports=P},2830:(n,s,t)=>{n.exports=c;var o=t(7187).EventEmitter;function c(){o.call(this)}t(5717)(c,o),c.Readable=t(9481),c.Writable=t(4229),c.Duplex=t(6753),c.Transform=t(4605),c.PassThrough=t(2725),c.finished=t(8610),c.pipeline=t(9946),c.Stream=c,c.prototype.pipe=function(g,C){var D=this;function P(Le){g.writable&&!1===g.write(Le)&&D.pause&&D.pause()}function j(){D.readable&&D.resume&&D.resume()}D.on("data",P),g.on("drain",j),g._isStdio||C&&!1===C.end||(D.on("end",re),D.on("close",ie));var W=!1;function re(){W||(W=!0,g.end())}function ie(){W||(W=!0,"function"==typeof g.destroy&&g.destroy())}function ge(Le){if(_e(),0===o.listenerCount(this,"error"))throw Le}function _e(){D.removeListener("data",P),g.removeListener("drain",j),D.removeListener("end",re),D.removeListener("close",ie),D.removeListener("error",ge),g.removeListener("error",ge),D.removeListener("end",_e),D.removeListener("close",_e),g.removeListener("close",_e)}return D.on("error",ge),g.on("error",ge),D.on("end",_e),D.on("close",_e),g.on("close",_e),g.emit("pipe",D),g}},2553:(n,s,t)=>{var o=t(396).Buffer,c=o.isEncoding||function(_e){switch((_e=""+_e)&&_e.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 g(_e){var Le;switch(this.encoding=function(Re){var ke=function(xe){if(!xe)return"utf8";for(var U;;)switch(xe){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 xe;default:if(U)return;xe=(""+xe).toLowerCase(),U=!0}}(Re);if("string"!=typeof ke&&(o.isEncoding===c||!c(Re)))throw new Error("Unknown encoding: "+Re);return ke||Re}(_e),this.encoding){case"utf16le":this.text=P,this.end=j,Le=4;break;case"utf8":this.fillLast=D,Le=4;break;case"base64":this.text=W,this.end=re,Le=3;break;default:return this.write=ie,void(this.end=ge)}this.lastNeed=0,this.lastTotal=0,this.lastChar=o.allocUnsafe(Le)}function C(_e){return _e<=127?0:_e>>5==6?2:_e>>4==14?3:_e>>3==30?4:_e>>6==2?-1:-2}function D(_e){var Le=this.lastTotal-this.lastNeed,Re=function(ke,xe,U){if(128!=(192&xe[0]))return ke.lastNeed=0,"\ufffd";if(ke.lastNeed>1&&xe.length>1){if(128!=(192&xe[1]))return ke.lastNeed=1,"\ufffd";if(ke.lastNeed>2&&xe.length>2&&128!=(192&xe[2]))return ke.lastNeed=2,"\ufffd"}}(this,_e);return void 0!==Re?Re:this.lastNeed<=_e.length?(_e.copy(this.lastChar,Le,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(_e.copy(this.lastChar,Le,0,_e.length),void(this.lastNeed-=_e.length))}function P(_e,Le){if((_e.length-Le)%2==0){var Re=_e.toString("utf16le",Le);if(Re){var ke=Re.charCodeAt(Re.length-1);if(ke>=55296&&ke<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=_e[_e.length-2],this.lastChar[1]=_e[_e.length-1],Re.slice(0,-1)}return Re}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=_e[_e.length-1],_e.toString("utf16le",Le,_e.length-1)}function j(_e){var Le=_e&&_e.length?this.write(_e):"";return this.lastNeed?Le+this.lastChar.toString("utf16le",0,this.lastTotal-this.lastNeed):Le}function W(_e,Le){var Re=(_e.length-Le)%3;return 0===Re?_e.toString("base64",Le):(this.lastNeed=3-Re,this.lastTotal=3,1===Re?this.lastChar[0]=_e[_e.length-1]:(this.lastChar[0]=_e[_e.length-2],this.lastChar[1]=_e[_e.length-1]),_e.toString("base64",Le,_e.length-Re))}function re(_e){var Le=_e&&_e.length?this.write(_e):"";return this.lastNeed?Le+this.lastChar.toString("base64",0,3-this.lastNeed):Le}function ie(_e){return _e.toString(this.encoding)}function ge(_e){return _e&&_e.length?this.write(_e):""}s.s=g,g.prototype.write=function(_e){if(0===_e.length)return"";var Le,Re;if(this.lastNeed){if(void 0===(Le=this.fillLast(_e)))return"";Re=this.lastNeed,this.lastNeed=0}else Re=0;return Re<_e.length?Le?Le+this.text(_e,Re):this.text(_e,Re):Le||""},g.prototype.end=function(_e){var Le=_e&&_e.length?this.write(_e):"";return this.lastNeed?Le+"\ufffd":Le},g.prototype.text=function(_e,Le){var Re=function(xe,U,pt){var ht=U.length-1;if(ht<pt)return 0;var wt=C(U[ht]);return wt>=0?(wt>0&&(xe.lastNeed=wt-1),wt):--ht<pt||-2===wt?0:(wt=C(U[ht]))>=0?(wt>0&&(xe.lastNeed=wt-2),wt):--ht<pt||-2===wt?0:(wt=C(U[ht]))>=0?(wt>0&&(2===wt?wt=0:xe.lastNeed=wt-3),wt):0}(this,_e,Le);if(!this.lastNeed)return _e.toString("utf8",Le);this.lastTotal=Re;var ke=_e.length-(Re-this.lastNeed);return _e.copy(this.lastChar,0,ke),_e.toString("utf8",Le,ke)},g.prototype.fillLast=function(_e){if(this.lastNeed<=_e.length)return _e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);_e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,_e.length),this.lastNeed-=_e.length}},396:(n,s,t)=>{var o=t(8764),c=o.Buffer;function g(D,P){for(var j in D)P[j]=D[j]}function C(D,P,j){return c(D,P,j)}c.from&&c.alloc&&c.allocUnsafe&&c.allocUnsafeSlow?n.exports=o:(g(o,s),s.Buffer=C),C.prototype=Object.create(c.prototype),g(c,C),C.from=function(D,P,j){if("number"==typeof D)throw new TypeError("Argument must not be a number");return c(D,P,j)},C.alloc=function(D,P,j){if("number"!=typeof D)throw new TypeError("Argument must be a number");var W=c(D);return void 0!==P?"string"==typeof j?W.fill(P,j):W.fill(P):W.fill(0),W},C.allocUnsafe=function(D){if("number"!=typeof D)throw new TypeError("Argument must be a number");return c(D)},C.allocUnsafeSlow=function(D){if("number"!=typeof D)throw new TypeError("Argument must be a number");return o.SlowBuffer(D)}},4927:(n,s,t)=>{function o(c){try{if(!t.g.localStorage)return!1}catch(C){return!1}var g=t.g.localStorage[c];return null!=g&&"true"===String(g).toLowerCase()}n.exports=function(c,g){if(o("noDeprecation"))return c;var C=!1;return function(){if(!C){if(o("throwDeprecation"))throw new Error(g);o("traceDeprecation")?console.trace(g):console.warn(g),C=!0}return c.apply(this,arguments)}}},255:n=>{var s={"&":"&amp;",'"':"&quot;","'":"&apos;","<":"&lt;",">":"&gt;"};n.exports=function(t){return t&&t.replace?t.replace(/([&"<>'])/g,function(o,c){return s[c]}):t}},3479:(n,s,t)=>{var o=t(4155),c=t(255),g=t(2830).Stream;function C(P,j,W){W=W||0;var re,ie,ge=(re=j,new Array(W||0).join(re||"")),_e=P;if("object"==typeof P&&(_e=P[ie=Object.keys(P)[0]])&&_e._elem)return _e._elem.name=ie,_e._elem.icount=W,_e._elem.indent=j,_e._elem.indents=ge,_e._elem.interrupt=_e,_e._elem;var Le,Re=[],ke=[];function xe(U){Object.keys(U).forEach(function(pt){Re.push(pt+'="'+c(U[pt])+'"')})}switch(typeof _e){case"object":if(null===_e)break;_e._attr&&xe(_e._attr),_e._cdata&&ke.push(("<![CDATA["+_e._cdata).replace(/\]\]>/g,"]]]]><![CDATA[>")+"]]>"),_e.forEach&&(Le=!1,ke.push(""),_e.forEach(function(U){"object"==typeof U?"_attr"==Object.keys(U)[0]?xe(U._attr):ke.push(C(U,j,W+1)):(ke.pop(),Le=!0,ke.push(c(U)))}),Le||ke.push(""));break;default:ke.push(c(_e))}return{name:ie,interrupt:!1,attributes:Re,content:ke,icount:W,indents:ge,indent:j}}function D(P,j,W){if("object"!=typeof j)return P(!1,j);var re=j.interrupt?1:j.content.length;function ie(){for(;j.content.length;){var _e=j.content.shift();if(void 0!==_e){if(ge(_e))return;D(P,_e)}}P(!1,(re>1?j.indents:"")+(j.name?"</"+j.name+">":"")+(j.indent&&!W?"\n":"")),W&&W()}function ge(_e){return!!_e.interrupt&&(_e.interrupt.append=P,_e.interrupt.end=ie,_e.interrupt=!1,P(!0),!0)}if(P(!1,j.indents+(j.name?"<"+j.name:"")+(j.attributes.length?" "+j.attributes.join(" "):"")+(re?j.name?">":"":j.name?"/>":"")+(j.indent&&re>1?"\n":"")),!re)return P(!1,j.indent?"\n":"");ge(j)||ie()}n.exports=function(P,j){"object"!=typeof j&&(j={indent:j});var W,re,ie=j.stream?new g:null,ge="",_e=!1,Le=j.indent?!0===j.indent?"    ":j.indent:"",Re=!0;function ke(ht){Re?o.nextTick(ht):ht()}function xe(ht,wt){if(void 0!==wt&&(ge+=wt),ht&&!_e&&(ie=ie||new g,_e=!0),ht&&_e){var It=ge;ke(function(){ie.emit("data",It)}),ge=""}}function U(ht,wt){D(xe,C(ht,Le,Le?1:0),wt)}function pt(){if(ie){var ht=ge;ke(function(){ie.emit("data",ht),ie.emit("end"),ie.readable=!1,ie.emit("close")})}}return ke(function(){Re=!1}),j.declaration&&(re={version:"1.0",encoding:(W=j.declaration).encoding||"UTF-8"},W.standalone&&(re.standalone=W.standalone),U({"?xml":{_attr:re}}),ge=ge.replace("/>","?>")),P&&P.forEach?P.forEach(function(ht,wt){var It;wt+1===P.length&&(It=pt),U(ht,It)}):U(P,pt),ie?(ie.readable=!0,ie):ge},n.exports.element=n.exports.Element=function(){var P=Array.prototype.slice.call(arguments),j={_elem:C(P),push:function(W){if(!this.append)throw new Error("not assigned to a parent!");var re=this,ie=this._elem.indent;D(this.append,C(W,ie,this._elem.icount+(ie?1:0)),function(){re.append(!0)})},close:function(W){void 0!==W&&this.push(W),this.end&&this.end()}};return j}},5102:(n,s,t)=>{var o={"./all.js":5308,"./auth/actions.js":5812,"./auth/index.js":3705,"./auth/reducers.js":3962,"./auth/selectors.js":35,"./auth/spec-wrap-actions.js":8302,"./configs/actions.js":714,"./configs/helpers.js":2256,"./configs/index.js":1661,"./configs/reducers.js":7743,"./configs/selectors.js":9018,"./configs/spec-actions.js":2698,"./deep-linking/helpers.js":1970,"./deep-linking/index.js":4980,"./deep-linking/layout.js":5858,"./deep-linking/operation-tag-wrapper.jsx":4584,"./deep-linking/operation-wrapper.jsx":877,"./download-url.js":8011,"./err/actions.js":4966,"./err/error-transformers/hook.js":6808,"./err/error-transformers/transformers/not-of-type.js":2392,"./err/error-transformers/transformers/parameter-oneof.js":1835,"./err/index.js":7793,"./err/reducers.js":3527,"./err/selectors.js":7667,"./filter/index.js":9978,"./filter/opsFilter.js":4309,"./layout/actions.js":5474,"./layout/index.js":6821,"./layout/reducers.js":5672,"./layout/selectors.js":4400,"./layout/spec-extensions/wrap-selector.js":8989,"./logs/index.js":9150,"./oas3/actions.js":7002,"./oas3/auth-extensions/wrap-selectors.js":3723,"./oas3/components/callbacks.jsx":3427,"./oas3/components/http-auth.jsx":6775,"./oas3/components/index.js":6467,"./oas3/components/operation-link.jsx":5757,"./oas3/components/operation-servers.jsx":6796,"./oas3/components/request-body-editor.jsx":5327,"./oas3/components/request-body.jsx":2458,"./oas3/components/servers-container.jsx":9928,"./oas3/components/servers.jsx":6617,"./oas3/helpers.jsx":7779,"./oas3/index.js":7451,"./oas3/reducers.js":9666,"./oas3/selectors.js":5065,"./oas3/spec-extensions/selectors.js":1741,"./oas3/spec-extensions/wrap-selectors.js":2044,"./oas3/wrap-components/auth-item.jsx":356,"./oas3/wrap-components/index.js":7761,"./oas3/wrap-components/json-schema-string.jsx":287,"./oas3/wrap-components/markdown.jsx":2460,"./oas3/wrap-components/model.jsx":3499,"./oas3/wrap-components/online-validator-badge.js":58,"./oas3/wrap-components/version-stamp.jsx":9487,"./on-complete/index.js":8560,"./request-snippets/fn.js":4624,"./request-snippets/index.js":6575,"./request-snippets/request-snippets.jsx":4206,"./request-snippets/selectors.js":4669,"./safe-render/components/error-boundary.jsx":6195,"./safe-render/components/fallback.jsx":9403,"./safe-render/fn.jsx":6189,"./safe-render/index.js":8102,"./samples/fn.js":2473,"./samples/index.js":8883,"./spec/actions.js":1737,"./spec/index.js":7038,"./spec/reducers.js":32,"./spec/selectors.js":3881,"./spec/wrap-actions.js":7508,"./swagger-js/configs-wrap-actions.js":4852,"./swagger-js/index.js":2990,"./util/index.js":8525,"./view/fn.js":8347,"./view/index.js":3420,"./view/root-injects.jsx":5005,"core/plugins/all.js":5308,"core/plugins/auth/actions.js":5812,"core/plugins/auth/index.js":3705,"core/plugins/auth/reducers.js":3962,"core/plugins/auth/selectors.js":35,"core/plugins/auth/spec-wrap-actions.js":8302,"core/plugins/configs/actions.js":714,"core/plugins/configs/helpers.js":2256,"core/plugins/configs/index.js":1661,"core/plugins/configs/reducers.js":7743,"core/plugins/configs/selectors.js":9018,"core/plugins/configs/spec-actions.js":2698,"core/plugins/deep-linking/helpers.js":1970,"core/plugins/deep-linking/index.js":4980,"core/plugins/deep-linking/layout.js":5858,"core/plugins/deep-linking/operation-tag-wrapper.jsx":4584,"core/plugins/deep-linking/operation-wrapper.jsx":877,"core/plugins/download-url.js":8011,"core/plugins/err/actions.js":4966,"core/plugins/err/error-transformers/hook.js":6808,"core/plugins/err/error-transformers/transformers/not-of-type.js":2392,"core/plugins/err/error-transformers/transformers/parameter-oneof.js":1835,"core/plugins/err/index.js":7793,"core/plugins/err/reducers.js":3527,"core/plugins/err/selectors.js":7667,"core/plugins/filter/index.js":9978,"core/plugins/filter/opsFilter.js":4309,"core/plugins/layout/actions.js":5474,"core/plugins/layout/index.js":6821,"core/plugins/layout/reducers.js":5672,"core/plugins/layout/selectors.js":4400,"core/plugins/layout/spec-extensions/wrap-selector.js":8989,"core/plugins/logs/index.js":9150,"core/plugins/oas3/actions.js":7002,"core/plugins/oas3/auth-extensions/wrap-selectors.js":3723,"core/plugins/oas3/components/callbacks.jsx":3427,"core/plugins/oas3/components/http-auth.jsx":6775,"core/plugins/oas3/components/index.js":6467,"core/plugins/oas3/components/operation-link.jsx":5757,"core/plugins/oas3/components/operation-servers.jsx":6796,"core/plugins/oas3/components/request-body-editor.jsx":5327,"core/plugins/oas3/components/request-body.jsx":2458,"core/plugins/oas3/components/servers-container.jsx":9928,"core/plugins/oas3/components/servers.jsx":6617,"core/plugins/oas3/helpers.jsx":7779,"core/plugins/oas3/index.js":7451,"core/plugins/oas3/reducers.js":9666,"core/plugins/oas3/selectors.js":5065,"core/plugins/oas3/spec-extensions/selectors.js":1741,"core/plugins/oas3/spec-extensions/wrap-selectors.js":2044,"core/plugins/oas3/wrap-components/auth-item.jsx":356,"core/plugins/oas3/wrap-components/index.js":7761,"core/plugins/oas3/wrap-components/json-schema-string.jsx":287,"core/plugins/oas3/wrap-components/markdown.jsx":2460,"core/plugins/oas3/wrap-components/model.jsx":3499,"core/plugins/oas3/wrap-components/online-validator-badge.js":58,"core/plugins/oas3/wrap-components/version-stamp.jsx":9487,"core/plugins/on-complete/index.js":8560,"core/plugins/request-snippets/fn.js":4624,"core/plugins/request-snippets/index.js":6575,"core/plugins/request-snippets/request-snippets.jsx":4206,"core/plugins/request-snippets/selectors.js":4669,"core/plugins/safe-render/components/error-boundary.jsx":6195,"core/plugins/safe-render/components/fallback.jsx":9403,"core/plugins/safe-render/fn.jsx":6189,"core/plugins/safe-render/index.js":8102,"core/plugins/samples/fn.js":2473,"core/plugins/samples/index.js":8883,"core/plugins/spec/actions.js":1737,"core/plugins/spec/index.js":7038,"core/plugins/spec/reducers.js":32,"core/plugins/spec/selectors.js":3881,"core/plugins/spec/wrap-actions.js":7508,"core/plugins/swagger-js/configs-wrap-actions.js":4852,"core/plugins/swagger-js/index.js":2990,"core/plugins/util/index.js":8525,"core/plugins/view/fn.js":8347,"core/plugins/view/index.js":3420,"core/plugins/view/root-injects.jsx":5005};function c(C){var D=g(C);return t(D)}function g(C){if(!t.o(o,C)){var D=new Error("Cannot find module '"+C+"'");throw D.code="MODULE_NOT_FOUND",D}return o[C]}c.keys=function(){return Object.keys(o)},c.resolve=g,n.exports=c,c.id=5102},2517:n=>{n.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwcHgiICBoZWlnaHQ9IjIwMHB4IiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGNsYXNzPSJsZHMtcm9sbGluZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IGJhY2tncm91bmQtcG9zaXRpb246IGluaXRpYWwgaW5pdGlhbDsgYmFja2dyb3VuZC1yZXBlYXQ6IGluaXRpYWwgaW5pdGlhbDsiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIGZpbGw9Im5vbmUiIG5nLWF0dHItc3Ryb2tlPSJ7e2NvbmZpZy5jb2xvcn19IiBuZy1hdHRyLXN0cm9rZS13aWR0aD0ie3tjb25maWcud2lkdGh9fSIgbmctYXR0ci1yPSJ7e2NvbmZpZy5yYWRpdXN9fSIgbmctYXR0ci1zdHJva2UtZGFzaGFycmF5PSJ7e2NvbmZpZy5kYXNoYXJyYXl9fSIgc3Ryb2tlPSIjNTU1NTU1IiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgY2FsY01vZGU9ImxpbmVhciIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvY2lyY2xlPjwvc3ZnPgo="},5163:n=>{n.exports='---\nurl: "https://petstore.swagger.io/v2/swagger.json"\ndom_id: "#swagger-ui"\nvalidatorUrl: "https://validator.swagger.io/validator"\n'},8898:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>fT()}),c)},4163:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>Z4()}),c)},5527:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>G4()}),c)},5171:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>la()}),c)},2954:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>u0()}),c)},7930:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>z4()}),c)},6145:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>zp()}),c)},1778:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>dA()}),c)},29:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>J4()}),c)},2372:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>dm()}),c)},8818:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>X4()}),c)},5487:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>q4()}),c)},2565:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>Lu()}),c)},6785:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>t5()}),c)},8136:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>x_()}),c)},9963:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>r5()}),c)},4350:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>o5()}),c)},3590:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>JN()}),c)},5942:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>a5()}),c)},313:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>c0()}),c)},6914:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>u5()}),c)},7512:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>D_()}),c)},2740:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>Su()}),c)},374:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>d5()}),c)},6235:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>p5()}),c)},3769:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>_5()}),c)},6340:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>F6}),c)},7344:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>t1}),c)},8656:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>JT}),c)},3248:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>cm}),c)},5416:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>m5}),c)},775:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>S0}),c)},863:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>z3}),c)},9972:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>v5}),c)},1013:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>_d}),c)},302:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>r6}),c)},9334:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>A_}),c)},2691:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>gm}),c)},1581:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>vc}),c)},4780:n=>{n.exports=b5},8096:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>T5()}),c)},3294:n=>{n.exports=C5},9725:(n,s,t)=>{var c;n.exports=(t.d(c={},{List:()=>ag.List,Map:()=>ag.Map,OrderedMap:()=>ag.OrderedMap,Seq:()=>ag.Seq,Set:()=>ag.Set,default:()=>zE(),fromJS:()=>ag.fromJS}),c)},626:(n,s,t)=>{var c;n.exports=(t.d(c={},{JSON_SCHEMA:()=>t3,default:()=>tA}),c)},9908:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>mb()}),c)},7068:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>A5()}),c)},5476:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>w5()}),c)},5053:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>D5()}),c)},810:(n,s,t)=>{var c;n.exports=(t.d(c={},{Component:()=>Bl.Component,PureComponent:()=>Bl.PureComponent,default:()=>Bl,useEffect:()=>Bl.useEffect,useRef:()=>Bl.useRef,useState:()=>Bl.useState}),c)},9874:(n,s,t)=>{var c;n.exports=(t.d(c={},{CopyToClipboard:()=>R5.CopyToClipboard}),c)},9569:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>P5()}),c)},9871:(n,s,t)=>{var c;n.exports=(t.d(c={},{applyMiddleware:()=>U5,bindActionCreators:()=>H5,compose:()=>j6,createStore:()=>Y6}),c)},3952:(n,s,t)=>{var c;n.exports=(t.d(c={},{Remarkable:()=>a1}),c)},8639:(n,s,t)=>{var c;n.exports=(t.d(c={},{createSelector:()=>uP}),c)},8518:(n,s,t)=>{var c;n.exports=(t.d(c={},{serializeError:()=>DF.serializeError}),c)},5013:(n,s,t)=>{var c;n.exports=(t.d(c={},{opId:()=>L3}),c)},8900:(n,s,t)=>{var c;n.exports=(t.d(c={},{default:()=>NF()}),c)},2361:()=>{},4616:()=>{}},cP={};function wo(n){var s=cP[n];if(void 0!==s)return s.exports;var t=cP[n]={exports:{}};return QF[n](t,t.exports,wo),t.exports}wo.n=n=>{var s=n&&n.__esModule?()=>n.default:()=>n;return wo.d(s,{a:s}),s},wo.d=(n,s)=>{for(var t in s)wo.o(s,t)&&!wo.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:s[t]})},wo.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),wo.o=(n,s)=>Object.prototype.hasOwnProperty.call(n,s),wo.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var dP={};(()=>{wo.d(dP,{Z:()=>l9});var n={};wo.r(n),wo.d(n,{Button:()=>bP,Col:()=>m7,Collapse:()=>CP,Container:()=>g7,Input:()=>b7,Link:()=>TP,Row:()=>v7,Select:()=>EP,TextArea:()=>y7});var s={};wo.r(s),wo.d(s,{JsonSchemaArrayItemFile:()=>uR,JsonSchemaArrayItemText:()=>lR,JsonSchemaForm:()=>DP,JsonSchema_array:()=>NP,JsonSchema_boolean:()=>PP,JsonSchema_object:()=>IP,JsonSchema_string:()=>RP});var t=wo(1581),o=wo(5171);const c=(wo.d(Kt={},{default:()=>IF()}),Kt);var Kt,g=wo(6145),C=wo(2740),D=wo(313),P=wo(7698),j=wo.n(P),W=wo(775),re=wo(7344),ie=wo(8656),ge=wo(5527),_e=wo(7512),Le=wo(8136),Re=wo(4163),ke=wo(6785),xe=wo(2565),U=wo(810),pt=wo(9871),ht=wo(9725);const wt=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({combineReducers:()=>LF.U});var It=wo(8518);const dn=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>kF()});var Lt=wo(4966),Dn=wo(7504),Mn=wo(6298),$r=function(bn){return bn},ur=function(){function bn(){var Kt,ft=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,re.default)(this,bn),j()(this,{state:{},plugins:[],pluginsOptions:{},system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},ft),this.getSystem=(0,ge.default)(Kt=this._getSystem).call(Kt,this),this.store=$n($r,(0,ht.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}return(0,ie.default)(bn,[{key:"getStore",value:function(){return this.store}},{key:"register",value:function(Kt){var ft=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Je=Pr(Kt,this.getSystem(),this.pluginsOptions);fn(this.system,Je),ft&&this.buildSystem();var Qe=xr.call(this.system,Kt,this.getSystem());Qe&&this.buildSystem()}},{key:"buildSystem",value:function(){var Kt=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],ft=this.getStore().dispatch,Je=this.getStore().getState;this.boundSystem=(0,_e.default)({},this.getRootInjects(),this.getWrappedAndBoundActions(ft),this.getWrappedAndBoundSelectors(Je,this.getSystem),this.getStateThunks(Je),this.getFn(),this.getConfigs()),Kt&&this.rebuildReducer()}},{key:"_getSystem",value:function(){return this.boundSystem}},{key:"getRootInjects",value:function(){var Kt,ft,Je;return(0,_e.default)({getSystem:this.getSystem,getStore:(0,ge.default)(Kt=this.getStore).call(Kt,this),getComponents:(0,ge.default)(ft=this.getComponents).call(ft,this),getState:this.getStore().getState,getConfigs:(0,ge.default)(Je=this._getConfigs).call(Je,this),Im:ht.default,React:U.default},this.system.rootInjects||{})}},{key:"_getConfigs",value:function(){return this.system.configs}},{key:"getConfigs",value:function(){return{configs:this.system.configs}}},{key:"setConfigs",value:function(Kt){this.system.configs=Kt}},{key:"rebuildReducer",value:function(){var Kt,ft,Je;this.store.replaceReducer((Kt=(0,Mn.Ay)(this.system.statePlugins,function(et){return et.reducers}),Je=(0,ke.default)(ft=(0,C.default)(Kt)).call(ft,function(et,At){return et[At]=(Ot=Kt[At],function(){var Vt=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ht.Map,Sn=arguments.length>1?arguments[1]:void 0;if(!Ot)return Vt;var jn=Ot[Sn.type];if(jn){var Fn=Nn(jn)(Vt,Sn);return null===Fn?Vt:Fn}return Vt}),et;var Ot},{}),(0,C.default)(Je).length?(0,wt.combineReducers)(Je):$r))}},{key:"getType",value:function(Kt){var ft=Kt[0].toUpperCase()+(0,Le.default)(Kt).call(Kt,1);return(0,Mn.Q2)(this.system.statePlugins,function(Je,Qe){var et=Je[Kt];if(et)return(0,W.default)({},Qe+ft,et)})}},{key:"getSelectors",value:function(){return this.getType("selectors")}},{key:"getActions",value:function(){var Kt=this.getType("actions");return(0,Mn.Ay)(Kt,function(ft){return(0,Mn.Q2)(ft,function(Je,Qe){if((0,Mn.LQ)(Je))return(0,W.default)({},Qe,Je)})})}},{key:"getWrappedAndBoundActions",value:function(Kt){var ft=this,Je=this.getBoundActions(Kt);return(0,Mn.Ay)(Je,function(Qe,et){var At=ft.system.statePlugins[(0,Le.default)(et).call(et,0,-7)].wrapActions;return At?(0,Mn.Ay)(Qe,function(Ot,Vt){var Sn=At[Vt];return Sn?((0,Re.default)(Sn)||(Sn=[Sn]),(0,ke.default)(Sn).call(Sn,function(jn,Fn){var tr=function(){return Fn(jn,ft.getSystem()).apply(void 0,arguments)};if(!(0,Mn.LQ)(tr))throw new TypeError("wrapActions needs to return a function that returns a new function (ie the wrapped action)");return Nn(tr)},Ot||Function.prototype)):Ot}):Qe})}},{key:"getWrappedAndBoundSelectors",value:function(Kt,ft){var Je=this,Qe=this.getBoundSelectors(Kt,ft);return(0,Mn.Ay)(Qe,function(et,At){var Ot=[(0,Le.default)(At).call(At,0,-9)],Vt=Je.system.statePlugins[Ot].wrapSelectors;return Vt?(0,Mn.Ay)(et,function(Sn,jn){var Fn=Vt[jn];return Fn?((0,Re.default)(Fn)||(Fn=[Fn]),(0,ke.default)(Fn).call(Fn,function(tr,pi){var ui=function(){for(var Mi,Di=arguments.length,uo=new Array(Di),Ki=0;Ki<Di;Ki++)uo[Ki]=arguments[Ki];return pi(tr,Je.getSystem()).apply(void 0,(0,o.default)(Mi=[Kt().getIn(Ot)]).call(Mi,uo))};if(!(0,Mn.LQ)(ui))throw new TypeError("wrapSelector needs to return a function that returns a new function (ie the wrapped action)");return ui},Sn||Function.prototype)):Sn}):et})}},{key:"getStates",value:function(Kt){var ft;return(0,ke.default)(ft=(0,C.default)(this.system.statePlugins)).call(ft,function(Je,Qe){return Je[Qe]=Kt.get(Qe),Je},{})}},{key:"getStateThunks",value:function(Kt){var ft;return(0,ke.default)(ft=(0,C.default)(this.system.statePlugins)).call(ft,function(Je,Qe){return Je[Qe]=function(){return Kt().get(Qe)},Je},{})}},{key:"getFn",value:function(){return{fn:this.system.fn}}},{key:"getComponents",value:function(Kt){var ft=this,Je=this.system.components[Kt];return(0,Re.default)(Je)?(0,ke.default)(Je).call(Je,function(Qe,et){return et(Qe,ft.getSystem())}):void 0!==Kt?this.system.components[Kt]:this.system.components}},{key:"getBoundSelectors",value:function(Kt,ft){return(0,Mn.Ay)(this.getSelectors(),function(Je,Qe){var et=[(0,Le.default)(Qe).call(Qe,0,-9)],At=function(){return Kt().getIn(et)};return(0,Mn.Ay)(Je,function(Ot){return function(){for(var Vt,Sn=arguments.length,jn=new Array(Sn),Fn=0;Fn<Sn;Fn++)jn[Fn]=arguments[Fn];var tr=Nn(Ot).apply(null,(0,o.default)(Vt=[At()]).call(Vt,jn));return"function"==typeof tr&&(tr=Nn(tr)(ft())),tr}})})}},{key:"getBoundActions",value:function(Kt){Kt=Kt||this.getStore().dispatch;var ft=this.getActions(),Je=function Qe(et){return"function"!=typeof et?(0,Mn.Ay)(et,function(At){return Qe(At)}):function(){var At=null;try{At=et.apply(void 0,arguments)}catch(Ot){At={type:Lt.NEW_THROWN_ERR,error:!0,payload:(0,It.serializeError)(Ot)}}finally{return At}}};return(0,Mn.Ay)(ft,function(Qe){return(0,pt.bindActionCreators)(Je(Qe),Kt)})}},{key:"getMapStateToProps",value:function(){var Kt=this;return function(){return(0,_e.default)({},Kt.getSystem())}}},{key:"getMapDispatchToProps",value:function(Kt){var ft=this;return function(Je){return j()({},ft.getWrappedAndBoundActions(Je),ft.getFn(),Kt)}}}]),bn}();function Pr(bn,Kt,ft){if((0,Mn.Kn)(bn)&&!(0,Mn.kJ)(bn))return(0,dn.default)({},bn);if((0,Mn.Wl)(bn))return Pr(bn(Kt),Kt,ft);if((0,Mn.kJ)(bn)){var Je,Qe="chain"===ft.pluginLoadType?Kt.getComponents():{};return(0,ke.default)(Je=(0,xe.default)(bn).call(bn,function(et){return Pr(et,Kt,ft)})).call(Je,fn,Qe)}return{}}function xr(bn,Kt){var ft=this,Je=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Qe=Je.hasLoaded,et=Qe;return(0,Mn.Kn)(bn)&&!(0,Mn.kJ)(bn)&&"function"==typeof bn.afterLoad&&(et=!0,Nn(bn.afterLoad).call(this,Kt)),(0,Mn.Wl)(bn)?xr.call(this,bn(Kt),Kt,{hasLoaded:et}):(0,Mn.kJ)(bn)?(0,xe.default)(bn).call(bn,function(At){return xr.call(ft,At,Kt,{hasLoaded:et})}):et}function fn(){var bn=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},Kt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(0,Mn.Kn)(bn))return{};if(!(0,Mn.Kn)(Kt))return bn;Kt.wrapComponents&&((0,Mn.Ay)(Kt.wrapComponents,function(pi,ui){var Mi=bn.components&&bn.components[ui];Mi&&(0,Re.default)(Mi)?(bn.components[ui]=(0,o.default)(Mi).call(Mi,[pi]),delete Kt.wrapComponents[ui]):Mi&&(bn.components[ui]=[Mi,pi],delete Kt.wrapComponents[ui])}),(0,C.default)(Kt.wrapComponents).length||delete Kt.wrapComponents);var ft=bn.statePlugins;if((0,Mn.Kn)(ft))for(var Je in ft){var Qe=ft[Je];if((0,Mn.Kn)(Qe)){var et=Qe.wrapActions,At=Qe.wrapSelectors;if((0,Mn.Kn)(et))for(var Ot in et){var Vt,Sn=et[Ot];(0,Re.default)(Sn)||(et[Ot]=Sn=[Sn]),Kt&&Kt.statePlugins&&Kt.statePlugins[Je]&&Kt.statePlugins[Je].wrapActions&&Kt.statePlugins[Je].wrapActions[Ot]&&(Kt.statePlugins[Je].wrapActions[Ot]=(0,o.default)(Vt=et[Ot]).call(Vt,Kt.statePlugins[Je].wrapActions[Ot]))}if((0,Mn.Kn)(At))for(var jn in At){var Fn,tr=At[jn];(0,Re.default)(tr)||(At[jn]=tr=[tr]),Kt&&Kt.statePlugins&&Kt.statePlugins[Je]&&Kt.statePlugins[Je].wrapSelectors&&Kt.statePlugins[Je].wrapSelectors[jn]&&(Kt.statePlugins[Je].wrapSelectors[jn]=(0,o.default)(Fn=At[jn]).call(Fn,Kt.statePlugins[Je].wrapSelectors[jn]))}}}return j()(bn,Kt)}function Nn(bn){var Kt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},ft=Kt.logErrors,Je=void 0===ft||ft;return"function"!=typeof bn?bn:function(){try{for(var Qe,et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return bn.call.apply(bn,(0,o.default)(Qe=[this]).call(Qe,At))}catch(Vt){return Je&&console.error(Vt),null}}}function $n(bn,Kt,ft){var Qe,et,Ot;return Qe=bn,et=Kt,Ot=[(0,Mn._5)(ft)],(0,pt.createStore)(Qe,et,(Dn.Z.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||pt.compose)(pt.applyMiddleware.apply(void 0,Ot)))}var Qn=wo(7793),Tn=wo(6821),Yr=wo(7038),ji=wo(3420),ii=wo(8883),Ui=wo(6575),Jr=wo(9150),An=wo(2990),hn=wo(3705),qr=wo(8525),Ri=wo(8011),qi=wo(1661),Zo=wo(4980),bo=wo(9978),Ys=wo(8560),Ws=wo(8102),wi=wo(6340),lo=wo(9972),go=wo(5416),Ge=wo(8818),St=(wo(5053),wo(9569),wo(5013)),Et=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"toggleShown",function(){var Ot=et.props,Vt=Ot.layoutActions,Sn=Ot.tag,jn=Ot.operationId,Fn=Ot.isShown,tr=et.getResolvedSubtree();Fn||void 0!==tr||et.requestResolvedSubtree(),Vt.show(["operations",Sn,jn],!Fn)}),(0,W.default)((0,wi.default)(et),"onCancelClick",function(){et.setState({tryItOutEnabled:!et.state.tryItOutEnabled})}),(0,W.default)((0,wi.default)(et),"onTryoutClick",function(){et.setState({tryItOutEnabled:!et.state.tryItOutEnabled})}),(0,W.default)((0,wi.default)(et),"onExecute",function(){et.setState({executeInProgress:!0})}),(0,W.default)((0,wi.default)(et),"getResolvedSubtree",function(){var Ot=et.props,Sn=Ot.path,jn=Ot.method,Fn=Ot.specPath;return Ot.specSelectors.specResolvedSubtree(Fn?Fn.toJS():["paths",Sn,jn])}),(0,W.default)((0,wi.default)(et),"requestResolvedSubtree",function(){var Ot=et.props,Sn=Ot.path,jn=Ot.method,Fn=Ot.specPath;return Ot.specActions.requestResolvedSubtree(Fn?Fn.toJS():["paths",Sn,jn])});var At=Je.getConfigs().tryItOutEnabled;return et.state={tryItOutEnabled:!0===At||"true"===At,executeInProgress:!1},et}return(0,ie.default)(ft,[{key:"mapStateToProps",value:function(Je,Qe){var et,At=Qe.op,Ot=Qe.layoutSelectors,Vt=(0,Qe.getConfigs)(),Sn=Vt.docExpansion,jn=Vt.deepLinking,Fn=Vt.displayOperationId,tr=Vt.displayRequestDuration,pi=Vt.supportedSubmitMethods,ui=Ot.showSummary(),Mi=At.getIn(["operation","__originalOperationId"])||At.getIn(["operation","operationId"])||(0,St.opId)(At.get("operation"),Qe.path,Qe.method)||At.get("id"),Di=["operations",Qe.tag,Mi],uo=jn&&"false"!==jn,Ki=(0,Ge.default)(pi).call(pi,Qe.method)>=0&&(void 0===Qe.allowTryItOut?Qe.specSelectors.allowTryItOutFor(Qe.path,Qe.method):Qe.allowTryItOut),to=At.getIn(["operation","security"])||Qe.specSelectors.security();return{operationId:Mi,isDeepLinkingEnabled:uo,showSummary:ui,displayOperationId:Fn,displayRequestDuration:tr,allowTryItOut:Ki,security:to,isAuthorized:Qe.authSelectors.isAuthorized(to),isShown:Ot.isShown(Di,"full"===Sn),jumpToKey:(0,o.default)(et="paths.".concat(Qe.path,".")).call(et,Qe.method),response:Qe.specSelectors.responseFor(Qe.path,Qe.method),request:Qe.specSelectors.requestFor(Qe.path,Qe.method)}}},{key:"componentDidMount",value:function(){var Je=this.props.isShown,Qe=this.getResolvedSubtree();Je&&void 0===Qe&&this.requestResolvedSubtree()}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe=Je.response,et=Je.isShown,At=this.getResolvedSubtree();Qe!==this.props.response&&this.setState({executeInProgress:!1}),et&&void 0===At&&this.requestResolvedSubtree()}},{key:"render",value:function(){var Je=this.props,Qe=Je.op,et=Je.tag,At=Je.path,Ot=Je.method,Vt=Je.security,Sn=Je.isAuthorized,jn=Je.operationId,Fn=Je.showSummary,tr=Je.isShown,pi=Je.jumpToKey,ui=Je.allowTryItOut,Mi=Je.response,Di=Je.request,uo=Je.displayOperationId,Ki=Je.displayRequestDuration,to=Je.isDeepLinkingEnabled,ys=Je.specPath,Ls=Je.specSelectors,ta=Je.specActions,Ds=Je.getComponent,Rs=Je.getConfigs,Fs=Je.layoutSelectors,Cs=Je.layoutActions,Fa=Je.authActions,js=Je.authSelectors,Ca=Je.oas3Actions,Ko=Je.oas3Selectors,na=Je.fn,vl=Ds("operation"),ud=this.getResolvedSubtree()||(0,ht.Map)(),af=(0,ht.fromJS)({op:ud,tag:et,path:At,summary:Qe.getIn(["operation","summary"])||"",deprecated:ud.get("deprecated")||Qe.getIn(["operation","deprecated"])||!1,method:Ot,security:Vt,isAuthorized:Sn,operationId:jn,originalOperationId:ud.getIn(["operation","__originalOperationId"]),showSummary:Fn,isShown:tr,jumpToKey:pi,allowTryItOut:ui,request:Di,displayOperationId:uo,displayRequestDuration:Ki,isDeepLinkingEnabled:to,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return U.default.createElement(vl,{operation:af,response:Mi,request:Di,isShown:tr,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:ys,specActions:ta,specSelectors:Ls,oas3Actions:Ca,oas3Selectors:Ko,layoutActions:Cs,layoutSelectors:Fs,authActions:Fa,authSelectors:js,getComponent:Ds,getConfigs:Rs,fn:na})}}]),ft}(U.PureComponent);(0,W.default)(Et,"defaultProps",{showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1});var Bn=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"getLayout",value:function(){var Je=this.props,Qe=Je.getComponent,et=Je.layoutSelectors.current();return Qe(et,!0)||function(){return U.default.createElement("h1",null,' No layout defined for "',et,'" ')}}},{key:"render",value:function(){var Je=this.getLayout();return U.default.createElement(Je,null)}}]),ft}(U.default.Component);Bn.defaultProps={};var _r=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"close",function(){Qe.props.authActions.showDefinitions(!1)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.authSelectors,At=Qe.authActions,Ot=Qe.getComponent,Vt=Qe.errSelectors,Sn=Qe.specSelectors,jn=Qe.fn.AST,Fn=void 0===jn?{}:jn,tr=et.shownDefinitions(),pi=Ot("auths");return U.default.createElement("div",{className:"dialog-ux"},U.default.createElement("div",{className:"backdrop-ux"}),U.default.createElement("div",{className:"modal-ux"},U.default.createElement("div",{className:"modal-dialog-ux"},U.default.createElement("div",{className:"modal-ux-inner"},U.default.createElement("div",{className:"modal-ux-header"},U.default.createElement("h3",null,"Available authorizations"),U.default.createElement("button",{type:"button",className:"close-modal",onClick:this.close},U.default.createElement("svg",{width:"20",height:"20"},U.default.createElement("use",{href:"#close",xlinkHref:"#close"})))),U.default.createElement("div",{className:"modal-ux-content"},(0,xe.default)(Je=tr.valueSeq()).call(Je,function(ui,Mi){return U.default.createElement(pi,{key:Mi,AST:Fn,definitions:ui,getComponent:Ot,errSelectors:Vt,authSelectors:et,authActions:At,specSelectors:Sn})}))))))}}]),ft}(U.default.Component),Gr=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.isAuthorized,et=Je.showPopup,At=Je.onClick,Ot=(0,Je.getComponent)("authorizationPopup",!0);return U.default.createElement("div",{className:"auth-wrapper"},U.default.createElement("button",{className:Qe?"btn authorize locked":"btn authorize unlocked",onClick:At},U.default.createElement("span",null,"Authorize"),U.default.createElement("svg",{width:"20",height:"20"},U.default.createElement("use",{href:Qe?"#locked":"#unlocked",xlinkHref:Qe?"#locked":"#unlocked"}))),et&&U.default.createElement(Ot,null))}}]),ft}(U.default.Component),xi=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.authActions,et=Je.authSelectors,Ot=Je.getComponent,Vt=Je.specSelectors.securityDefinitions(),Sn=et.definitionsToAuthorize(),jn=Ot("authorizeBtn");return Vt?U.default.createElement(jn,{onClick:function(){return Qe.showDefinitions(Sn)},isAuthorized:!!et.authorized().size,showPopup:!!et.shownDefinitions(),getComponent:Ot}):null}}]),ft}(U.default.Component),Zs=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onClick",function(Vt){Vt.stopPropagation();var Sn=Qe.props.onClick;Sn&&Sn()}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props.isAuthorized;return U.default.createElement("button",{className:Je?"authorization__btn locked":"authorization__btn unlocked","aria-label":Je?"authorization button locked":"authorization button unlocked",onClick:this.onClick},U.default.createElement("svg",{width:"20",height:"20"},U.default.createElement("use",{href:Je?"#locked":"#unlocked",xlinkHref:Je?"#locked":"#unlocked"})))}}]),ft}(U.default.Component),jo=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onAuthChange",function(At){et.setState((0,W.default)({},At.name,At))}),(0,W.default)((0,wi.default)(et),"submitAuth",function(At){At.preventDefault(),et.props.authActions.authorizeWithPersistOption(et.state)}),(0,W.default)((0,wi.default)(et),"logoutClick",function(At){At.preventDefault();var Ot=et.props,Vt=Ot.authActions,Sn=Ot.definitions,jn=(0,xe.default)(Sn).call(Sn,function(Fn,tr){return tr}).toArray();et.setState((0,ke.default)(jn).call(jn,function(Fn,tr){return Fn[tr]="",Fn},{})),Vt.logoutWithPersistOption(jn)}),(0,W.default)((0,wi.default)(et),"close",function(At){At.preventDefault(),et.props.authActions.showDefinitions(!1)}),et.state={},et}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this,et=this.props,At=et.definitions,Ot=et.getComponent,Vt=et.authSelectors,Sn=et.errSelectors,jn=Ot("AuthItem"),Fn=Ot("oauth2",!0),tr=Ot("Button"),pi=Vt.authorized(),ui=(0,g.default)(At).call(At,function(uo,Ki){return!!pi.get(Ki)}),Mi=(0,g.default)(At).call(At,function(uo){return"oauth2"!==uo.get("type")}),Di=(0,g.default)(At).call(At,function(uo){return"oauth2"===uo.get("type")});return U.default.createElement("div",{className:"auth-container"},!!Mi.size&&U.default.createElement("form",{onSubmit:this.submitAuth},(0,xe.default)(Mi).call(Mi,function(uo,Ki){return U.default.createElement(jn,{key:Ki,schema:uo,name:Ki,getComponent:Ot,onAuthChange:Qe.onAuthChange,authorized:pi,errSelectors:Sn})}).toArray(),U.default.createElement("div",{className:"auth-btn-wrapper"},Mi.size===ui.size?U.default.createElement(tr,{className:"btn modal-btn auth",onClick:this.logoutClick},"Logout"):U.default.createElement(tr,{type:"submit",className:"btn modal-btn auth authorize"},"Authorize"),U.default.createElement(tr,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close"))),Di&&Di.size?U.default.createElement("div",null,U.default.createElement("div",{className:"scope-def"},U.default.createElement("p",null,"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes."),U.default.createElement("p",null,"API requires the following scopes. Select which ones you want to grant to Swagger UI.")),(0,xe.default)(Je=(0,g.default)(At).call(At,function(uo){return"oauth2"===uo.get("type")})).call(Je,function(uo,Ki){return U.default.createElement("div",{key:Ki},U.default.createElement(Fn,{authorized:pi,schema:uo,name:Ki}))}).toArray()):null)}}]),ft}(U.default.Component),sl=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.schema,At=Qe.name,Ot=Qe.getComponent,Vt=Qe.onAuthChange,Sn=Qe.authorized,jn=Qe.errSelectors,Fn=Ot("apiKeyAuth"),tr=Ot("basicAuth"),pi=et.get("type");switch(pi){case"apiKey":Je=U.default.createElement(Fn,{key:At,schema:et,name:At,errSelectors:jn,authorized:Sn,getComponent:Ot,onChange:Vt});break;case"basic":Je=U.default.createElement(tr,{key:At,schema:et,name:At,errSelectors:jn,authorized:Sn,getComponent:Ot,onChange:Vt});break;default:Je=U.default.createElement("div",{key:At},"Unknown security definition type ",pi)}return U.default.createElement("div",{key:"".concat(At,"-jump")},Je)}}]),ft}(U.default.Component),ml=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props.error,Qe=Je.get("level"),et=Je.get("message"),At=Je.get("source");return U.default.createElement("div",{className:"errors"},U.default.createElement("b",null,At," ",Qe),U.default.createElement("span",null,et))}}]),ft}(U.default.Component),nu=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onChange",function(jn){var Fn=et.props.onChange,pi=(0,_e.default)({},et.state,{value:jn.target.value});et.setState(pi),Fn(pi)});var At=et.props,Ot=At.name,Vt=At.schema,Sn=et.getValue();return et.state={name:Ot,schema:Vt,value:Sn},et}return(0,ie.default)(ft,[{key:"getValue",value:function(){var Je=this.props,et=Je.authorized;return et&&et.getIn([Je.name,"value"])}},{key:"render",value:function(){var Je,Qe,et=this.props,At=et.schema,Ot=et.getComponent,Vt=et.errSelectors,Sn=et.name,jn=Ot("Input"),Fn=Ot("Row"),tr=Ot("Col"),pi=Ot("authError"),ui=Ot("Markdown",!0),Mi=Ot("JumpToPath",!0),Di=this.getValue(),uo=(0,g.default)(Je=Vt.allErrors()).call(Je,function(Ki){return Ki.get("authId")===Sn});return U.default.createElement("div",null,U.default.createElement("h4",null,U.default.createElement("code",null,Sn||At.get("name")),"\xa0(apiKey)",U.default.createElement(Mi,{path:["securityDefinitions",Sn]})),Di&&U.default.createElement("h6",null,"Authorized"),U.default.createElement(Fn,null,U.default.createElement(ui,{source:At.get("description")})),U.default.createElement(Fn,null,U.default.createElement("p",null,"Name: ",U.default.createElement("code",null,At.get("name")))),U.default.createElement(Fn,null,U.default.createElement("p",null,"In: ",U.default.createElement("code",null,At.get("in")))),U.default.createElement(Fn,null,U.default.createElement("label",null,"Value:"),Di?U.default.createElement("code",null," ****** "):U.default.createElement(tr,null,U.default.createElement(jn,{type:"text",onChange:this.onChange,autoFocus:!0}))),(0,xe.default)(Qe=uo.valueSeq()).call(Qe,function(Ki,to){return U.default.createElement(pi,{error:Ki,key:to})}))}}]),ft}(U.default.Component),Xu=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onChange",function(jn){var Fn=et.props.onChange,tr=jn.target,Mi=et.state.value;Mi[tr.name]=tr.value,et.setState({value:Mi}),Fn(et.state)});var At=et.props,Ot=At.schema,Vt=At.name,Sn=et.getValue().username;return et.state={name:Vt,schema:Ot,value:Sn?{username:Sn}:{}},et}return(0,ie.default)(ft,[{key:"getValue",value:function(){var Je=this.props,Qe=Je.authorized;return Qe&&Qe.getIn([Je.name,"value"])||{}}},{key:"render",value:function(){var Je,Qe,et=this.props,At=et.schema,Ot=et.getComponent,Vt=et.name,Sn=et.errSelectors,jn=Ot("Input"),Fn=Ot("Row"),tr=Ot("Col"),pi=Ot("authError"),ui=Ot("JumpToPath",!0),Mi=Ot("Markdown",!0),Di=this.getValue().username,uo=(0,g.default)(Je=Sn.allErrors()).call(Je,function(Ki){return Ki.get("authId")===Vt});return U.default.createElement("div",null,U.default.createElement("h4",null,"Basic authorization",U.default.createElement(ui,{path:["securityDefinitions",Vt]})),Di&&U.default.createElement("h6",null,"Authorized"),U.default.createElement(Fn,null,U.default.createElement(Mi,{source:At.get("description")})),U.default.createElement(Fn,null,U.default.createElement("label",null,"Username:"),Di?U.default.createElement("code",null," ",Di," "):U.default.createElement(tr,null,U.default.createElement(jn,{type:"text",required:"required",name:"username",onChange:this.onChange,autoFocus:!0}))),U.default.createElement(Fn,null,U.default.createElement("label",null,"Password:"),Di?U.default.createElement("code",null," ****** "):U.default.createElement(tr,null,U.default.createElement(jn,{autoComplete:"new-password",name:"password",type:"password",onChange:this.onChange}))),(0,xe.default)(Qe=uo.valueSeq()).call(Qe,function(Ki,to){return U.default.createElement(pi,{error:Ki,key:to})}))}}]),ft}(U.default.Component);function Pf(bn){var Kt=bn.example,ft=bn.showValue,Je=bn.getComponent,Qe=bn.getConfigs,et=Je("Markdown",!0),At=Je("highlightCode");return Kt?U.default.createElement("div",{className:"example"},Kt.get("description")?U.default.createElement("section",{className:"example__section"},U.default.createElement("div",{className:"example__section-header"},"Example Description"),U.default.createElement("p",null,U.default.createElement(et,{source:Kt.get("description")}))):null,ft&&Kt.has("value")?U.default.createElement("section",{className:"example__section"},U.default.createElement("div",{className:"example__section-header"},"Example Value"),U.default.createElement(At,{getConfigs:Qe,value:(0,Mn.Pz)(Kt.get("value"))})):null):null}var Fl=wo(6914),qc=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"_onSelect",function(Vt){var Sn=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},jn=Sn.isSyntheticChange,Fn=void 0!==jn&&jn;"function"==typeof Qe.props.onSelect&&Qe.props.onSelect(Vt,{isSyntheticChange:Fn})}),(0,W.default)((0,wi.default)(Qe),"_onDomSelect",function(Vt){if("function"==typeof Qe.props.onSelect){var Sn=Vt.target.selectedOptions[0].getAttribute("value");Qe._onSelect(Sn,{isSyntheticChange:!1})}}),(0,W.default)((0,wi.default)(Qe),"getCurrentExample",function(){var Vt=Qe.props,Sn=Vt.examples,Fn=Sn.get(Vt.currentExampleKey),tr=Sn.keySeq().first(),pi=Sn.get(tr);return Fn||pi||(0,Fl.default)({})}),Qe}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){var Je=this.props,et=Je.examples;if("function"==typeof Je.onSelect){var At=et.first(),Ot=et.keyOf(At);this._onSelect(Ot,{isSyntheticChange:!0})}}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var et=Je.examples;if(et!==this.props.examples&&!et.has(Je.currentExampleKey)){var At=et.first(),Ot=et.keyOf(At);this._onSelect(Ot,{isSyntheticChange:!0})}}},{key:"render",value:function(){var Je=this.props,Qe=Je.examples,et=Je.currentExampleKey,At=Je.isValueModified,Ot=Je.isModifiedValueAvailable;return U.default.createElement("div",{className:"examples-select"},Je.showLabels?U.default.createElement("span",{className:"examples-select__section-label"},"Examples: "):null,U.default.createElement("select",{className:"examples-select-element",onChange:this._onDomSelect,value:Ot&&At?"__MODIFIED__VALUE__":et||""},Ot?U.default.createElement("option",{value:"__MODIFIED__VALUE__"},"[Modified value]"):null,(0,xe.default)(Qe).call(Qe,function(Sn,jn){return U.default.createElement("option",{key:jn,value:jn},Sn.get("summary")||jn)}).valueSeq()))}}]),ft}(U.default.PureComponent);(0,W.default)(qc,"defaultProps",{examples:ht.default.Map({}),onSelect:function(){for(var bn,Kt,ft=arguments.length,Je=new Array(ft),Qe=0;Qe<ft;Qe++)Je[Qe]=arguments[Qe];return(bn=console).log.apply(bn,(0,o.default)(Kt=["DEBUG: ExamplesSelect was not given an onSelect callback"]).call(Kt,Je))},currentExampleKey:null,showLabels:!0});var up=function(bn){return ht.List.isList(bn)?bn:(0,Mn.Pz)(bn)},Eh=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je){var Qe;(0,re.default)(this,ft),Qe=Kt.call(this,Je),(0,W.default)((0,wi.default)(Qe),"_getStateForCurrentNamespace",function(){return(Qe.state[Qe.props.currentNamespace]||(0,ht.Map)()).toObject()}),(0,W.default)((0,wi.default)(Qe),"_setStateForCurrentNamespace",function(At){return Qe._setStateForNamespace(Qe.props.currentNamespace,At)}),(0,W.default)((0,wi.default)(Qe),"_setStateForNamespace",function(At,Ot){var Vt=(Qe.state[At]||(0,ht.Map)()).mergeDeep(Ot);return Qe.setState((0,W.default)({},At,Vt))}),(0,W.default)((0,wi.default)(Qe),"_isCurrentUserInputSameAsExampleValue",function(){var At=Qe.props.currentUserInputValue;return Qe._getCurrentExampleValue()===At}),(0,W.default)((0,wi.default)(Qe),"_getValueForExample",function(At,Ot){return up(((Ot||Qe.props).examples||(0,ht.Map)({})).getIn([At,"value"]))}),(0,W.default)((0,wi.default)(Qe),"_getCurrentExampleValue",function(At){return Qe._getValueForExample((At||Qe.props).currentKey,At||Qe.props)}),(0,W.default)((0,wi.default)(Qe),"_onExamplesSelect",function(At){var Ot=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Vt=Ot.isSyntheticChange,Sn=Qe.props,jn=Sn.onSelect,Fn=Sn.updateValue,tr=Sn.currentUserInputValue,pi=Sn.userHasEditedBody,ui=Qe._getStateForCurrentNamespace(),Mi=ui.lastUserEditedValue,Di=Qe._getValueForExample(At);if("__MODIFIED__VALUE__"===At)return Fn(up(Mi)),Qe._setStateForCurrentNamespace({isModifiedValueSelected:!0});if("function"==typeof jn){for(var uo,Ki=arguments.length,to=new Array(Ki>2?Ki-2:0),ys=2;ys<Ki;ys++)to[ys-2]=arguments[ys];jn.apply(void 0,(0,o.default)(uo=[At,{isSyntheticChange:Vt}]).call(uo,to))}Qe._setStateForCurrentNamespace({lastDownstreamValue:Di,isModifiedValueSelected:Vt&&pi||!!tr&&tr!==Di}),Vt||"function"==typeof Fn&&Fn(up(Di))});var et=Qe._getCurrentExampleValue();return Qe.state=(0,W.default)({},Je.currentNamespace,(0,ht.Map)({lastUserEditedValue:Qe.props.currentUserInputValue,lastDownstreamValue:et,isModifiedValueSelected:Qe.props.userHasEditedBody||Qe.props.currentUserInputValue!==et})),Qe}return(0,ie.default)(ft,[{key:"componentWillUnmount",value:function(){this.props.setRetainRequestBodyValueFlag(!1)}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe=Je.currentUserInputValue,et=Je.examples,At=Je.onSelect,Ot=Je.userHasEditedBody,Vt=this._getStateForCurrentNamespace(),Sn=Vt.lastUserEditedValue,jn=Vt.lastDownstreamValue,Fn=this._getValueForExample(Je.currentKey,Je),tr=(0,g.default)(et).call(et,function(pi){return pi.get("value")===Qe||(0,Mn.Pz)(pi.get("value"))===Qe});tr.size?At(tr.has(Je.currentKey)?Je.currentKey:tr.keySeq().first(),{isSyntheticChange:!0}):Qe!==this.props.currentUserInputValue&&Qe!==Sn&&Qe!==jn&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(Je.currentNamespace,{lastUserEditedValue:Je.currentUserInputValue,isModifiedValueSelected:Ot||Qe!==Fn}))}},{key:"render",value:function(){var Je=this.props,Qe=Je.currentUserInputValue,et=Je.examples,At=Je.currentKey,Ot=Je.getComponent,Vt=Je.userHasEditedBody,Sn=this._getStateForCurrentNamespace(),jn=Sn.lastDownstreamValue,Fn=Sn.lastUserEditedValue,tr=Sn.isModifiedValueSelected,pi=Ot("ExamplesSelect");return U.default.createElement(pi,{examples:et,currentExampleKey:At,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!Fn&&Fn!==jn,isValueModified:void 0!==Qe&&tr&&Qe!==this._getCurrentExampleValue()||Vt})}}]),ft}(U.default.PureComponent);(0,W.default)(Eh,"defaultProps",{userHasEditedBody:!1,examples:(0,ht.Map)({}),currentNamespace:"__DEFAULT__NAMESPACE__",setRetainRequestBodyValueFlag:function(){},onSelect:function(){for(var bn,Kt,ft=arguments.length,Je=new Array(ft),Qe=0;Qe<ft;Qe++)Je[Qe]=arguments[Qe];return(bn=console).log.apply(bn,(0,o.default)(Kt=["ExamplesSelectValueRetainer: no `onSelect` function was provided"]).call(Kt,Je))},updateValue:function(){for(var bn,Kt,ft=arguments.length,Je=new Array(ft),Qe=0;Qe<ft;Qe++)Je[Qe]=arguments[Qe];return(bn=console).log.apply(bn,(0,o.default)(Kt=["ExamplesSelectValueRetainer: no `updateValue` function was provided"]).call(Kt,Je))}});var Wp=wo(8898),Th=wo(5487),ru=wo(2372),Zc=wo(8900),Ip=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"close",function(Ki){Ki.preventDefault(),et.props.authActions.showDefinitions(!1)}),(0,W.default)((0,wi.default)(et),"authorize",function(){var Ki=et.props,to=Ki.authActions,ys=Ki.errActions,ta=Ki.authSelectors,Ds=Ki.oas3Selectors,Rs=(0,Ki.getConfigs)(),Fs=ta.getConfigs();ys.clear({authId:name,type:"auth",source:"auth"}),function(Cs){var Fa=Cs.auth,js=Cs.authActions,Ca=Cs.errActions,Ko=Cs.configs,na=Cs.authConfigs,vl=void 0===na?{}:na,ud=Cs.currentServer,af=Fa.schema,lf=Fa.scopes,Lf=Fa.name,iu=Fa.clientId,cd=af.get("flow"),uc=[];switch(cd){case"password":return void js.authorizePassword(Fa);case"application":case"clientCredentials":case"client_credentials":return void js.authorizeApplication(Fa);case"accessCode":case"authorizationCode":case"authorization_code":uc.push("response_type=code");break;case"implicit":uc.push("response_type=token")}"string"==typeof iu&&uc.push("client_id="+encodeURIComponent(iu));var cp=Ko.oauth2RedirectUrl;if(void 0!==cp){uc.push("redirect_uri="+encodeURIComponent(cp));var Qf=[];(0,Re.default)(lf)?Qf=lf:ht.default.List.isList(lf)&&(Qf=lf.toArray()),Qf.length>0&&uc.push("scope="+encodeURIComponent(Qf.join(vl.scopeSeparator||" ")));var jd=(0,Mn.r3)(new Date);if(uc.push("state="+encodeURIComponent(jd)),void 0!==vl.realm&&uc.push("realm="+encodeURIComponent(vl.realm)),("authorizationCode"===cd||"authorization_code"===cd||"accessCode"===cd)&&vl.usePkceWithAuthorizationCodeGrant){var cc=(0,Mn.Uj)(),Gd=(0,Mn.Xb)(cc);uc.push("code_challenge="+Gd),uc.push("code_challenge_method=S256"),Fa.codeVerifier=cc}var uf=vl.additionalQueryStringParams;for(var cf in uf){var Sh;void 0!==uf[cf]&&uc.push((0,xe.default)(Sh=[cf,uf[cf]]).call(Sh,encodeURIComponent).join("="))}var xd=af.get("authorizationUrl"),Af=[ud?(0,Zc.default)((0,Mn.Nm)(xd),ud,!0).toString():(0,Mn.Nm)(xd),uc.join("&")].join(-1===(0,Ge.default)(xd).call(xd,"?")?"?":"&");js.authPopup(Af,{auth:Fa,state:jd,redirectUrl:cp,callback:"implicit"===cd?js.preAuthorizeImplicit:vl.useBasicAuthenticationWithAccessCodeGrant?js.authorizeAccessCodeWithBasicAuthentication:js.authorizeAccessCodeWithFormParams,errCb:Ca.newAuthErr})}else Ca.newAuthErr({authId:Lf,source:"validation",level:"error",message:"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed."})}({auth:et.state,currentServer:Ds.serverEffectiveValue(Ds.selectedServer()),authActions:to,errActions:ys,configs:Rs,authConfigs:Fs})}),(0,W.default)((0,wi.default)(et),"onScopeChange",function(Ki){var to,ys,Ls=Ki.target,ta=Ls.checked,Ds=Ls.dataset.value;if(ta&&-1===(0,Ge.default)(to=et.state.scopes).call(to,Ds)){var Rs,Fs=(0,o.default)(Rs=et.state.scopes).call(Rs,[Ds]);et.setState({scopes:Fs})}else if(!ta&&(0,Ge.default)(ys=et.state.scopes).call(ys,Ds)>-1){var Cs;et.setState({scopes:(0,g.default)(Cs=et.state.scopes).call(Cs,function(Fa){return Fa!==Ds})})}}),(0,W.default)((0,wi.default)(et),"onInputChange",function(Ki){var to=Ki.target,ta=(0,W.default)({},to.dataset.name,to.value);et.setState(ta)}),(0,W.default)((0,wi.default)(et),"selectScopes",function(Ki){var to;et.setState(Ki.target.dataset.all?{scopes:(0,Wp.default)((0,Th.default)(to=et.props.schema.get("allowedScopes")||et.props.schema.get("scopes")).call(to))}:{scopes:[]})}),(0,W.default)((0,wi.default)(et),"logout",function(Ki){Ki.preventDefault();var to=et.props,ys=to.authActions,ta=to.name;to.errActions.clear({authId:ta,type:"auth",source:"auth"}),ys.logoutWithPersistOption([ta])});var At=et.props,Ot=At.name,Vt=At.schema,Sn=At.authorized,jn=At.authSelectors,Fn=Sn&&Sn.get(Ot),tr=jn.getConfigs()||{},pi=Fn&&Fn.get("username")||"",ui=Fn&&Fn.get("clientId")||tr.clientId||"",Mi=Fn&&Fn.get("clientSecret")||tr.clientSecret||"",Di=Fn&&Fn.get("passwordType")||"basic",uo=Fn&&Fn.get("scopes")||tr.scopes||[];return"string"==typeof uo&&(uo=uo.split(tr.scopeSeparator||" ")),et.state={appName:tr.appName,name:Ot,schema:Vt,scopes:uo,clientId:ui,clientSecret:Mi,username:pi,password:"",passwordType:Di},et}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et=this,At=this.props,Ot=At.schema,Vt=At.getComponent,Sn=At.authSelectors,jn=At.errSelectors,Fn=At.name,tr=At.specSelectors,pi=Vt("Input"),ui=Vt("Row"),Mi=Vt("Col"),Di=Vt("Button"),uo=Vt("authError"),Ki=Vt("JumpToPath",!0),to=Vt("Markdown",!0),ys=Vt("InitializedInput"),Ls=tr.isOAS3,ta=Ls()?Ot.get("openIdConnectUrl"):null,Ds="implicit",Rs="password",Fs=Ls()?ta?"authorization_code":"authorizationCode":"accessCode",Cs=Ls()?ta?"client_credentials":"clientCredentials":"application",Fa=!!(Sn.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,js=Ot.get("flow"),Ca=js===Fs&&Fa?js+" with PKCE":js,Ko=Ot.get("allowedScopes")||Ot.get("scopes"),na=!!Sn.authorized().get(Fn),vl=(0,g.default)(Je=jn.allErrors()).call(Je,function(lf){return lf.get("authId")===Fn}),ud=!(0,g.default)(vl).call(vl,function(lf){return"validation"===lf.get("source")}).size,af=Ot.get("description");return U.default.createElement("div",null,U.default.createElement("h4",null,Fn," (OAuth2, ",Ca,") ",U.default.createElement(Ki,{path:["securityDefinitions",Fn]})),this.state.appName?U.default.createElement("h5",null,"Application: ",this.state.appName," "):null,af&&U.default.createElement(to,{source:Ot.get("description")}),na&&U.default.createElement("h6",null,"Authorized"),ta&&U.default.createElement("p",null,"OpenID Connect URL: ",U.default.createElement("code",null,ta)),(js===Ds||js===Fs)&&U.default.createElement("p",null,"Authorization URL: ",U.default.createElement("code",null,Ot.get("authorizationUrl"))),(js===Rs||js===Fs||js===Cs)&&U.default.createElement("p",null,"Token URL:",U.default.createElement("code",null," ",Ot.get("tokenUrl"))),U.default.createElement("p",{className:"flow"},"Flow: ",U.default.createElement("code",null,Ca)),js!==Rs?null:U.default.createElement(ui,null,U.default.createElement(ui,null,U.default.createElement("label",{htmlFor:"oauth_username"},"username:"),na?U.default.createElement("code",null," ",this.state.username," "):U.default.createElement(Mi,{tablet:10,desktop:10},U.default.createElement("input",{id:"oauth_username",type:"text","data-name":"username",onChange:this.onInputChange,autoFocus:!0}))),U.default.createElement(ui,null,U.default.createElement("label",{htmlFor:"oauth_password"},"password:"),na?U.default.createElement("code",null," ****** "):U.default.createElement(Mi,{tablet:10,desktop:10},U.default.createElement("input",{id:"oauth_password",type:"password","data-name":"password",onChange:this.onInputChange}))),U.default.createElement(ui,null,U.default.createElement("label",{htmlFor:"password_type"},"Client credentials location:"),na?U.default.createElement("code",null," ",this.state.passwordType," "):U.default.createElement(Mi,{tablet:10,desktop:10},U.default.createElement("select",{id:"password_type","data-name":"passwordType",onChange:this.onInputChange},U.default.createElement("option",{value:"basic"},"Authorization header"),U.default.createElement("option",{value:"request-body"},"Request body"))))),(js===Cs||js===Ds||js===Fs||js===Rs)&&(!na||na&&this.state.clientId)&&U.default.createElement(ui,null,U.default.createElement("label",{htmlFor:"client_id"},"client_id:"),na?U.default.createElement("code",null," ****** "):U.default.createElement(Mi,{tablet:10,desktop:10},U.default.createElement(ys,{id:"client_id",type:"text",required:js===Rs,initialValue:this.state.clientId,"data-name":"clientId",onChange:this.onInputChange}))),(js===Cs||js===Fs||js===Rs)&&!Fa&&U.default.createElement(ui,null,U.default.createElement("label",{htmlFor:"client_secret"},"client_secret:"),na?U.default.createElement("code",null," ****** "):U.default.createElement(Mi,{tablet:10,desktop:10},U.default.createElement(ys,{id:"client_secret",initialValue:this.state.clientSecret,type:"password","data-name":"clientSecret",onChange:this.onInputChange}))),!na&&Ko&&Ko.size?U.default.createElement("div",{className:"scopes"},U.default.createElement("h2",null,"Scopes:",U.default.createElement("a",{onClick:this.selectScopes,"data-all":!0},"select all"),U.default.createElement("a",{onClick:this.selectScopes},"select none")),(0,xe.default)(Ko).call(Ko,function(lf,Lf){var iu,cd,uc,cp,Qf;return U.default.createElement(ui,{key:Lf},U.default.createElement("div",{className:"checkbox"},U.default.createElement(pi,{"data-value":Lf,id:(0,o.default)(iu=(0,o.default)(cd="".concat(Lf,"-")).call(cd,js,"-checkbox-")).call(iu,et.state.name),disabled:na,checked:(0,ru.default)(uc=et.state.scopes).call(uc,Lf),type:"checkbox",onChange:et.onScopeChange}),U.default.createElement("label",{htmlFor:(0,o.default)(cp=(0,o.default)(Qf="".concat(Lf,"-")).call(Qf,js,"-checkbox-")).call(cp,et.state.name)},U.default.createElement("span",{className:"item"}),U.default.createElement("div",{className:"text"},U.default.createElement("p",{className:"name"},Lf),U.default.createElement("p",{className:"description"},lf)))))}).toArray()):null,(0,xe.default)(Qe=vl.valueSeq()).call(Qe,function(lf,Lf){return U.default.createElement(uo,{error:lf,key:Lf})}),U.default.createElement("div",{className:"auth-btn-wrapper"},ud&&(na?U.default.createElement(Di,{className:"btn modal-btn auth authorize",onClick:this.logout},"Logout"):U.default.createElement(Di,{className:"btn modal-btn auth authorize",onClick:this.authorize},"Authorize")),U.default.createElement(Di,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close")))}}]),ft}(U.default.Component),Yi=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onClick",function(){var Vt=Qe.props,Sn=Vt.specActions,jn=Vt.path,Fn=Vt.method;Sn.clearResponse(jn,Fn),Sn.clearRequest(jn,Fn)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("button",{className:"btn btn-clear opblock-control__btn",onClick:this.onClick},"Clear")}}]),ft}(U.Component),lr=function(bn){var Kt=bn.headers;return U.default.createElement("div",null,U.default.createElement("h5",null,"Response headers"),U.default.createElement("pre",{className:"microlight"},Kt))},mi=function(bn){var Kt=bn.duration;return U.default.createElement("div",null,U.default.createElement("h5",null,"Request duration"),U.default.createElement("pre",{className:"microlight"},Kt," ms"))},eo=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"shouldComponentUpdate",value:function(Je){return this.props.response!==Je.response||this.props.path!==Je.path||this.props.method!==Je.method||this.props.displayRequestDuration!==Je.displayRequestDuration}},{key:"render",value:function(){var Je,Qe=this.props,et=Qe.response,At=Qe.getComponent,Ot=Qe.getConfigs,Vt=Qe.displayRequestDuration,Sn=Qe.specSelectors,jn=Qe.path,Fn=Qe.method,tr=Ot(),ui=tr.requestSnippetsEnabled,Mi=tr.showMutatedRequest?Sn.mutatedRequestFor(jn,Fn):Sn.requestFor(jn,Fn),Di=et.get("status"),uo=Mi.get("url"),Ki=et.get("headers").toJS(),to=et.get("notDocumented"),ys=et.get("error"),Ls=et.get("text"),ta=et.get("duration"),Ds=(0,C.default)(Ki),Rs=Ki["content-type"]||Ki["Content-Type"],Fs=At("responseBody"),Cs=(0,xe.default)(Ds).call(Ds,function(na){var vl=(0,Re.default)(Ki[na])?Ki[na].join():Ki[na];return U.default.createElement("span",{className:"headerline",key:na}," ",na,": ",vl," ")}),Fa=0!==Cs.length,js=At("Markdown",!0),Ca=At("RequestSnippets",!0),Ko=At("curl");return U.default.createElement("div",null,Mi&&(!0===ui||"true"===ui?U.default.createElement(Ca,{request:Mi}):U.default.createElement(Ko,{request:Mi,getConfigs:Ot})),uo&&U.default.createElement("div",null,U.default.createElement("div",{className:"request-url"},U.default.createElement("h4",null,"Request URL"),U.default.createElement("pre",{className:"microlight"},uo))),U.default.createElement("h4",null,"Server response"),U.default.createElement("table",{className:"responses-table live-responses-table"},U.default.createElement("thead",null,U.default.createElement("tr",{className:"responses-header"},U.default.createElement("td",{className:"col_header response-col_status"},"Code"),U.default.createElement("td",{className:"col_header response-col_description"},"Details"))),U.default.createElement("tbody",null,U.default.createElement("tr",{className:"response"},U.default.createElement("td",{className:"response-col_status"},Di,to?U.default.createElement("div",{className:"response-undocumented"},U.default.createElement("i",null," Undocumented ")):null),U.default.createElement("td",{className:"response-col_description"},ys?U.default.createElement(js,{source:(0,o.default)(Je="".concat(""!==et.get("name")?"".concat(et.get("name"),": "):"")).call(Je,et.get("message"))}):null,Ls?U.default.createElement(Fs,{content:Ls,contentType:Rs,url:uo,headers:Ki,getConfigs:Ot,getComponent:At}):null,Fa?U.default.createElement(lr,{headers:Cs}):null,Vt&&ta?U.default.createElement(mi,{duration:ta}):null)))))}}]),ft}(U.default.Component),Lo=wo(5623),Xo=["get","put","post","delete","options","head","patch"],rs=(0,o.default)(Xo).call(Xo,["trace"]),us=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"renderOperationTag",function(Vt,Sn){var jn=Qe.props,Fn=jn.specSelectors,tr=jn.getComponent,pi=jn.oas3Selectors,ui=jn.layoutSelectors,Mi=jn.layoutActions,Di=jn.getConfigs,uo=tr("OperationContainer",!0),Ki=tr("OperationTag"),to=Vt.get("operations");return U.default.createElement(Ki,{key:"operation-"+Sn,tagObj:Vt,tag:Sn,oas3Selectors:pi,layoutSelectors:ui,layoutActions:Mi,getConfigs:Di,getComponent:tr,specUrl:Fn.url()},U.default.createElement("div",{className:"operation-tag-content"},(0,xe.default)(to).call(to,function(ys){var Ls,ta=ys.get("path"),Ds=ys.get("method"),Rs=ht.default.List(["paths",ta,Ds]),Fs=Fn.isOAS3()?rs:Xo;return-1===(0,Ge.default)(Fs).call(Fs,Ds)?null:U.default.createElement(uo,{key:(0,o.default)(Ls="".concat(ta,"-")).call(Ls,Ds),specPath:Rs,op:ys,path:ta,method:Ds,tag:Sn})}).toArray()))}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props.specSelectors.taggedOperations();return 0===Je.size?U.default.createElement("h3",null," No operations defined in spec!"):U.default.createElement("div",null,(0,xe.default)(Je).call(Je,this.renderOperationTag).toArray(),Je.size<1?U.default.createElement("h3",null," No operations defined in spec! "):null)}}]),ft}(U.default.Component),ma=wo(3769);function Ka(bn){return bn.match(/^(?:[a-z]+:)?\/\//i)}function xu(bn,Kt){return bn?Ka(bn)?(ft=bn).match(/^\/\//i)?(0,o.default)(Je="".concat(window.location.protocol)).call(Je,ft):ft:new ma.default(bn,Kt).href:Kt;var ft,Je}function Kn(bn,Kt){var ft=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Je=ft.selectedServer,Qe=void 0===Je?"":Je;if(bn){if(Ka(bn))return bn;var et=xu(Qe,Kt);return Ka(et)?new ma.default(bn,et).href:new ma.default(bn,window.location.href).href}}function Pi(bn,Kt){var ft=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Je=ft.selectedServer,Qe=void 0===Je?"":Je;try{return Kn(bn,Kt,{selectedServer:Qe})}catch(et){return}}var as=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.tagObj,At=Qe.tag,Ot=Qe.children,Vt=Qe.oas3Selectors,Sn=Qe.layoutSelectors,jn=Qe.layoutActions,tr=Qe.getComponent,pi=Qe.specUrl,ui=(0,Qe.getConfigs)(),Mi=ui.docExpansion,Di=ui.deepLinking,uo=Di&&"false"!==Di,Ki=tr("Collapse"),to=tr("Markdown",!0),ys=tr("DeepLink"),Ls=tr("Link"),ta=et.getIn(["tagDetails","description"],null),Ds=et.getIn(["tagDetails","externalDocs","description"]),Rs=et.getIn(["tagDetails","externalDocs","url"]);Je=(0,Mn.Wl)(Vt)&&(0,Mn.Wl)(Vt.selectedServer)?Pi(Rs,pi,{selectedServer:Vt.selectedServer()}):Rs;var Fs=["operations-tag",At],Cs=Sn.isShown(Fs,"full"===Mi||"list"===Mi);return U.default.createElement("div",{className:Cs?"opblock-tag-section is-open":"opblock-tag-section"},U.default.createElement("h3",{onClick:function(){return jn.show(Fs,!Cs)},className:ta?"opblock-tag":"opblock-tag no-desc",id:(0,xe.default)(Fs).call(Fs,function(Fa){return(0,Mn.J6)(Fa)}).join("-"),"data-tag":At,"data-is-open":Cs},U.default.createElement(ys,{enabled:uo,isShown:Cs,path:(0,Mn.oJ)(At),text:At}),ta?U.default.createElement("small",null,U.default.createElement(to,{source:ta})):U.default.createElement("small",null),Ds?U.default.createElement("div",{className:"info__externaldocs"},U.default.createElement("small",null,Ds,Je?": ":null,Je?U.default.createElement(Ls,{href:(0,Mn.Nm)(Je),onClick:function(Fa){return Fa.stopPropagation()},target:"_blank"},Je):null)):null,U.default.createElement("button",{"aria-expanded":Cs,className:"expand-operation",title:Cs?"Collapse operation":"Expand operation",onClick:function(){return jn.show(Fs,!Cs)}},U.default.createElement("svg",{className:"arrow",width:"20",height:"20","aria-hidden":"true",focusable:"false"},U.default.createElement("use",{href:Cs?"#large-arrow-up":"#large-arrow-down",xlinkHref:Cs?"#large-arrow-up":"#large-arrow-down"})))),U.default.createElement(Ki,{isOpened:Cs},Ot))}}]),ft}(U.default.Component);(0,W.default)(as,"defaultProps",{tagObj:ht.default.fromJS({}),tag:""});var Zi=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.specPath,et=Je.response,At=Je.request,Ot=Je.toggleShown,Vt=Je.onTryoutClick,Sn=Je.onCancelClick,jn=Je.onExecute,Fn=Je.fn,tr=Je.getComponent,pi=Je.getConfigs,ui=Je.specActions,Mi=Je.specSelectors,Di=Je.authActions,uo=Je.authSelectors,Ki=Je.oas3Actions,to=Je.oas3Selectors,ys=this.props.operation,Ls=ys.toJS(),ta=Ls.deprecated,Ds=Ls.isShown,Rs=Ls.path,Fs=Ls.method,Cs=Ls.op,Fa=Ls.tag,js=Ls.operationId,Ca=Ls.allowTryItOut,Ko=Ls.displayRequestDuration,na=Ls.tryItOutEnabled,vl=Ls.executeInProgress,ud=Cs.description,af=Cs.externalDocs,lf=Cs.schemes,Lf=af?Pi(af.url,Mi.url(),{selectedServer:to.selectedServer()}):"",iu=ys.getIn(["op"]),cd=iu.get("responses"),uc=(0,Mn.gp)(iu,["parameters"]),cp=Mi.operationScheme(Rs,Fs),Qf=["operations",Fa,js],L_=(0,Mn.nX)(iu),jd=tr("responses"),cc=tr("parameters"),Gd=tr("execute"),uf=tr("clear"),cf=tr("Collapse"),Sh=tr("Markdown",!0),wd=tr("schemes"),xd=tr("OperationServers"),Af=tr("OperationExt"),Ch=tr("OperationSummary"),Tm=tr("Link"),u9=pi().showExtensions;if(cd&&et&&et.size>0){var c9=!cd.get(String(et.get("status")))&&!cd.get("default");et=et.set("notDocumented",c9)}var d9=[Rs,Fs];return U.default.createElement("div",{className:ta?"opblock opblock-deprecated":Ds?"opblock opblock-".concat(Fs," is-open"):"opblock opblock-".concat(Fs),id:(0,Mn.J6)(Qf.join("-"))},U.default.createElement(Ch,{operationProps:ys,isShown:Ds,toggleShown:Ot,getComponent:tr,authActions:Di,authSelectors:uo,specPath:Qe}),U.default.createElement(cf,{isOpened:Ds},U.default.createElement("div",{className:"opblock-body"},iu&&iu.size||null===iu?null:U.default.createElement("img",{height:"32px",width:"32px",src:wo(2517),className:"opblock-loading-animation"}),ta&&U.default.createElement("h4",{className:"opblock-title_normal"}," Warning: Deprecated"),ud&&U.default.createElement("div",{className:"opblock-description-wrapper"},U.default.createElement("div",{className:"opblock-description"},U.default.createElement(Sh,{source:ud}))),Lf?U.default.createElement("div",{className:"opblock-external-docs-wrapper"},U.default.createElement("h4",{className:"opblock-title_normal"},"Find more details"),U.default.createElement("div",{className:"opblock-external-docs"},U.default.createElement("span",{className:"opblock-external-docs__description"},U.default.createElement(Sh,{source:af.description})),U.default.createElement(Tm,{target:"_blank",className:"opblock-external-docs__link",href:(0,Mn.Nm)(Lf)},Lf))):null,iu&&iu.size?U.default.createElement(cc,{parameters:uc,specPath:Qe.push("parameters"),operation:iu,onChangeKey:d9,onTryoutClick:Vt,onCancelClick:Sn,tryItOutEnabled:na,allowTryItOut:Ca,fn:Fn,getComponent:tr,specActions:ui,specSelectors:Mi,pathMethod:[Rs,Fs],getConfigs:pi,oas3Actions:Ki,oas3Selectors:to}):null,na?U.default.createElement(xd,{getComponent:tr,path:Rs,method:Fs,operationServers:iu.get("servers"),pathServers:Mi.paths().getIn([Rs,"servers"]),getSelectedServer:to.selectedServer,setSelectedServer:Ki.setSelectedServer,setServerVariableValue:Ki.setServerVariableValue,getServerVariable:to.serverVariableValue,getEffectiveServerValue:to.serverEffectiveValue}):null,na&&Ca&&lf&&lf.size?U.default.createElement("div",{className:"opblock-schemes"},U.default.createElement(wd,{schemes:lf,path:Rs,method:Fs,specActions:ui,currentScheme:cp})):null,U.default.createElement("div",{className:na&&et&&Ca?"btn-group":"execute-wrapper"},na&&Ca?U.default.createElement(Gd,{operation:iu,specActions:ui,specSelectors:Mi,oas3Selectors:to,oas3Actions:Ki,path:Rs,method:Fs,onExecute:jn,disabled:vl}):null,na&&et&&Ca?U.default.createElement(uf,{specActions:ui,path:Rs,method:Fs}):null),vl?U.default.createElement("div",{className:"loading-container"},U.default.createElement("div",{className:"loading"})):null,cd?U.default.createElement(jd,{responses:cd,request:At,tryItOutResponse:et,getComponent:tr,getConfigs:pi,specSelectors:Mi,oas3Actions:Ki,oas3Selectors:to,specActions:ui,produces:Mi.producesOptionsFor([Rs,Fs]),producesValue:Mi.currentProducesFor([Rs,Fs]),specPath:Qe.push("responses"),path:Rs,method:Fs,displayRequestDuration:Ko,fn:Fn}):null,u9&&L_.size?U.default.createElement(Af,{extensions:L_,getComponent:tr}):null)))}}]),ft}(U.PureComponent);(0,W.default)(Zi,"defaultProps",{operation:null,response:null,request:null,specPath:(0,ht.List)(),summary:""});const xs=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>HF()});var is=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.isShown,At=Qe.toggleShown,Ot=Qe.getComponent,Vt=Qe.authActions,Sn=Qe.authSelectors,jn=Qe.operationProps,Fn=Qe.specPath,tr=jn.toJS(),pi=tr.summary,ui=tr.isAuthorized,Mi=tr.method,uo=tr.showSummary,Ki=tr.path,to=tr.operationId,ys=tr.originalOperationId,Ls=tr.displayOperationId,ta=tr.op.summary,Ds=jn.get("security"),Rs=Ot("authorizeOperationBtn"),Fs=Ot("OperationSummaryMethod"),Cs=Ot("OperationSummaryPath"),Fa=Ot("JumpToPath",!0),js=Ds&&!!Ds.count(),Ca=js&&1===Ds.size&&Ds.first().isEmpty(),Ko=!js||Ca;return U.default.createElement("div",{className:"opblock-summary opblock-summary-".concat(Mi)},U.default.createElement("button",{"aria-label":(0,o.default)(Je="".concat(Mi," ")).call(Je,Ki.replace(/\//g,"\u200b/")),"aria-expanded":et,className:"opblock-summary-control",onClick:At},U.default.createElement(Fs,{method:Mi}),U.default.createElement(Cs,{getComponent:Ot,operationProps:jn,specPath:Fn}),uo?U.default.createElement("div",{className:"opblock-summary-description"},(0,xs.default)(ta||pi)):null,Ls&&(ys||to)?U.default.createElement("span",{className:"opblock-summary-operation-id"},ys||to):null,U.default.createElement("svg",{className:"arrow",width:"20",height:"20","aria-hidden":"true",focusable:"false"},U.default.createElement("use",{href:et?"#large-arrow-up":"#large-arrow-down",xlinkHref:et?"#large-arrow-up":"#large-arrow-down"}))),Ko?null:U.default.createElement(Rs,{isAuthorized:ui,onClick:function(){var na=Sn.definitionsForRequirements(Ds);Vt.showDefinitions(na)}}),U.default.createElement(Fa,{path:Fn}))}}]),ft}(U.PureComponent);(0,W.default)(is,"defaultProps",{operationProps:null,specPath:(0,ht.List)(),summary:""});var hu=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("span",{className:"opblock-summary-method"},this.props.method.toUpperCase())}}]),ft}(U.PureComponent);(0,W.default)(hu,"defaultProps",{operationProps:null});const Al=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>fA()});var Ci=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){for(var Je,Qe=this.props,et=Qe.getComponent,At=Qe.operationProps.toJS(),Ot=At.deprecated,Vt=At.isShown,Sn=At.path,jn=At.tag,Fn=At.operationId,tr=At.isDeepLinkingEnabled,pi=Sn.split(/(?=\/)/g),ui=1;ui<pi.length;ui+=2)(0,Al.default)(pi).call(pi,ui,0,U.default.createElement("wbr",{key:ui}));var Mi=et("DeepLink");return U.default.createElement("span",{className:Ot?"opblock-summary-path__deprecated":"opblock-summary-path","data-path":Sn},U.default.createElement(Mi,{enabled:tr,isShown:Vt,path:(0,Mn.oJ)((0,o.default)(Je="".concat(jn,"/")).call(Je,Fn)),text:pi}))}}]),ft}(U.PureComponent),qa=wo(9334);const ja=function(bn){var Kt,ft=bn.extensions,Je=(0,bn.getComponent)("OperationExtRow");return U.default.createElement("div",{className:"opblock-section"},U.default.createElement("div",{className:"opblock-section-header"},U.default.createElement("h4",null,"Extensions")),U.default.createElement("div",{className:"table-container"},U.default.createElement("table",null,U.default.createElement("thead",null,U.default.createElement("tr",null,U.default.createElement("td",{className:"col_header"},"Field"),U.default.createElement("td",{className:"col_header"},"Value"))),U.default.createElement("tbody",null,(0,xe.default)(Kt=ft.entrySeq()).call(Kt,function(Qe){var et,At=(0,qa.default)(Qe,2),Ot=At[0],Vt=At[1];return U.default.createElement(Je,{key:(0,o.default)(et="".concat(Ot,"-")).call(et,Vt),xKey:Ot,xVal:Vt})})))))},Ku=function(bn){var Kt=bn.xKey,ft=bn.xVal,Je=ft?ft.toJS?ft.toJS():ft:null;return U.default.createElement("tr",null,U.default.createElement("td",null,Kt),U.default.createElement("td",null,(0,D.default)(Je)))};var Du=wo(29),If=wo(8096),Jp=wo(471),Ql=wo(9908),Jf=wo(7068);const pg=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>BF()});var Qp=wo(9874),Ng=function(bn){var Kt=bn.value,ft=bn.fileName,Je=bn.className,Qe=bn.downloadable,et=bn.getConfigs,At=bn.canCopy,Ot=bn.language,Vt=(0,Jf.default)(et)?et():null,Sn=!1!==(0,Ql.default)(Vt,"syntaxHighlight")&&(0,Ql.default)(Vt,"syntaxHighlight.activated",!0),jn=(0,U.useRef)(null);(0,U.useEffect)(function(){var tr,pi=(0,g.default)(tr=(0,Wp.default)(jn.current.childNodes)).call(tr,function(ui){return!!ui.nodeType&&ui.classList.contains("microlight")});return(0,Du.default)(pi).call(pi,function(ui){return ui.addEventListener("mousewheel",Fn,{passive:!1})}),function(){(0,Du.default)(pi).call(pi,function(ui){return ui.removeEventListener("mousewheel",Fn)})}},[Kt,Je,Ot]);var Fn=function(tr){var pi=tr.target,ui=tr.deltaY,Mi=pi.scrollHeight,Di=pi.offsetHeight,uo=pi.scrollTop;Mi>Di&&(0===uo&&ui<0||Di+uo>=Mi&&ui>0)&&tr.preventDefault()};return U.default.createElement("div",{className:"highlight-code",ref:jn},Qe?U.default.createElement("div",{className:"download-contents",onClick:function(){(0,pg.default)(Kt,ft)}},"Download"):null,At&&U.default.createElement("div",{className:"copy-to-clipboard"},U.default.createElement(Qp.CopyToClipboard,{text:Kt},U.default.createElement("button",null))),Sn?U.default.createElement(Jp.d3,{language:Ot,className:(0,If.default)(Je,"microlight"),style:(0,Jp.C2)((0,Ql.default)(Vt,"syntaxHighlight.theme","agate"))},Kt):U.default.createElement("pre",{className:(0,If.default)(Je,"microlight")},Kt))};Ng.defaultProps={fileName:"response.txt"};const I_=Ng;var l1=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onChangeProducesWrapper",function(Vt){return Qe.props.specActions.changeProducesValue([Qe.props.path,Qe.props.method],Vt)}),(0,W.default)((0,wi.default)(Qe),"onResponseContentTypeChange",function(Vt){var Fn=Qe.props;Vt.controlsAcceptHeader&&Fn.oas3Actions.setResponseContentType({value:Vt.value,path:Fn.path,method:Fn.method})}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et=this,At=this.props,Ot=At.responses,Vt=At.tryItOutResponse,Sn=At.getComponent,jn=At.getConfigs,Fn=At.specSelectors,tr=At.fn,pi=At.producesValue,ui=At.displayRequestDuration,Mi=At.specPath,Di=At.path,uo=At.method,Ki=At.oas3Selectors,to=At.oas3Actions,ys=(0,Mn.iQ)(Ot),Ls=Sn("contentType"),ta=Sn("liveResponse"),Ds=Sn("response"),Rs=this.props.produces&&this.props.produces.size?this.props.produces:ft.defaultProps.produces,Fs=Fn.isOAS3()?(0,Mn.QG)(Ot):null,Cs=function(js){var Ca=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"_";return js.replace(/[^\w-]/g,Ca)}((0,o.default)(Je="".concat(uo)).call(Je,Di,"_responses")),Fa="".concat(Cs,"_select");return U.default.createElement("div",{className:"responses-wrapper"},U.default.createElement("div",{className:"opblock-section-header"},U.default.createElement("h4",null,"Responses"),Fn.isOAS3()?null:U.default.createElement("label",{htmlFor:Fa},U.default.createElement("span",null,"Response content type"),U.default.createElement(Ls,{value:pi,ariaControls:Cs,ariaLabel:"Response content type",className:"execute-content-type",contentTypes:Rs,controlId:Fa,onChange:this.onChangeProducesWrapper}))),U.default.createElement("div",{className:"responses-inner"},Vt?U.default.createElement("div",null,U.default.createElement(ta,{response:Vt,getComponent:Sn,getConfigs:jn,specSelectors:Fn,path:this.props.path,method:this.props.method,displayRequestDuration:ui}),U.default.createElement("h4",null,"Responses")):null,U.default.createElement("table",{"aria-live":"polite",className:"responses-table",id:Cs,role:"region"},U.default.createElement("thead",null,U.default.createElement("tr",{className:"responses-header"},U.default.createElement("td",{className:"col_header response-col_status"},"Code"),U.default.createElement("td",{className:"col_header response-col_description"},"Description"),Fn.isOAS3()?U.default.createElement("td",{className:"col col_header response-col_links"},"Links"):null)),U.default.createElement("tbody",null,(0,xe.default)(Qe=Ot.entrySeq()).call(Qe,function(js){var Ca=(0,qa.default)(js,2),Ko=Ca[0],na=Ca[1],vl=Vt&&Vt.get("status")==Ko?"response_current":"";return U.default.createElement(Ds,{key:Ko,path:Di,method:uo,specPath:Mi.push(Ko),isDefault:ys===Ko,fn:tr,className:vl,code:Ko,response:na,specSelectors:Fn,controlsAcceptHeader:na===Fs,onContentTypeChange:et.onResponseContentTypeChange,contentType:pi,getConfigs:jn,activeExamplesKey:Ki.activeExamplesMember(Di,uo,"responses",Ko),oas3Actions:to,getComponent:Sn})}).toArray()))))}}]),ft}(U.default.Component);(0,W.default)(l1,"defaultProps",{tryItOutResponse:null,produces:(0,ht.fromJS)(["application/json"]),displayRequestDuration:!1});var Xp=wo(1013);const gd=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>ZF()});var Pg=wo(2518),Em=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"_onContentTypeChange",function(At){var Ot=et.props,Vt=Ot.onContentTypeChange,Sn=Ot.controlsAcceptHeader;et.setState({responseContentType:At}),Vt({value:At,controlsAcceptHeader:Sn})}),(0,W.default)((0,wi.default)(et),"getTargetExamplesKey",function(){var At=et.props,Sn=At.activeExamplesKey,Fn=At.response.getIn(["content",et.state.responseContentType||At.contentType],(0,ht.Map)({})).get("examples",null).keySeq().first();return Sn||Fn}),et.state={responseContentType:""},et}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et,At,Ot,Vt=this.props,Sn=Vt.path,jn=Vt.method,Fn=Vt.code,tr=Vt.response,pi=Vt.className,ui=Vt.specPath,Di=Vt.getComponent,uo=Vt.getConfigs,Ki=Vt.specSelectors,to=Vt.contentType,ys=Vt.controlsAcceptHeader,Ls=Vt.oas3Actions,ta=Vt.fn.inferSchema,Ds=Ki.isOAS3(),Rs=uo().showExtensions,Fs=Rs?(0,Mn.nX)(tr):null,Cs=tr.get("headers"),Fa=tr.get("links"),js=Di("ResponseExtension"),Ca=Di("headers"),Ko=Di("highlightCode"),na=Di("modelExample"),vl=Di("Markdown",!0),ud=Di("operationLink"),af=Di("contentType"),lf=Di("ExamplesSelect"),Lf=Di("Example"),iu=this.state.responseContentType||to,cd=tr.getIn(["content",iu],(0,ht.Map)({})),uc=cd.get("examples",null);if(Ds){var cp=cd.get("schema");et=cp?ta(cp.toJS()):null,At=cp?(0,ht.List)(["content",this.state.responseContentType,"schema"]):ui}else et=tr.get("schema"),At=tr.has("schema")?ui.push("schema"):ui;var Qf,L_=!1,jd={includeReadOnly:!0};if(Ds){var cc;if(Qf=null===(cc=cd.get("schema"))||void 0===cc?void 0:cc.toJS(),uc){var Gd=this.getTargetExamplesKey(),uf=function(wd){return wd.get("value")};void 0===(Ot=uf(uc.get(Gd,(0,ht.Map)({}))))&&(Ot=uf((0,gd.default)(uc).call(uc).next().value)),L_=!0}else void 0!==cd.get("example")&&(Ot=cd.get("example"),L_=!0)}else{Qf=et,jd=(0,Xp.default)((0,Xp.default)({},jd),{},{includeWriteOnly:!0});var cf=tr.getIn(["examples",iu]);cf&&(Ot=cf,L_=!0)}var Sh=function(wd,xd,Af){if(null!=wd){var Ch=null;return(0,Pg.O)(wd)&&(Ch="json"),U.default.createElement("div",null,U.default.createElement(xd,{className:"example",getConfigs:Af,language:Ch,value:(0,Mn.Pz)(wd)}))}return null}((0,Mn.xi)(Qf,iu,jd,L_?Ot:void 0),Ko,uo);return U.default.createElement("tr",{className:"response "+(pi||""),"data-code":Fn},U.default.createElement("td",{className:"response-col_status"},Fn),U.default.createElement("td",{className:"response-col_description"},U.default.createElement("div",{className:"response-col_description__inner"},U.default.createElement(vl,{source:tr.get("description")})),Rs&&Fs.size?(0,xe.default)(Je=Fs.entrySeq()).call(Je,function(wd){var xd,Af=(0,qa.default)(wd,2),Ch=Af[0],Tm=Af[1];return U.default.createElement(js,{key:(0,o.default)(xd="".concat(Ch,"-")).call(xd,Tm),xKey:Ch,xVal:Tm})}):null,Ds&&tr.get("content")?U.default.createElement("section",{className:"response-controls"},U.default.createElement("div",{className:(0,If.default)("response-control-media-type",{"response-control-media-type--accept-controller":ys})},U.default.createElement("small",{className:"response-control-media-type__title"},"Media type"),U.default.createElement(af,{value:this.state.responseContentType,contentTypes:tr.get("content")?tr.get("content").keySeq():(0,ht.Seq)(),onChange:this._onContentTypeChange,ariaLabel:"Media Type"}),ys?U.default.createElement("small",{className:"response-control-media-type__accept-message"},"Controls ",U.default.createElement("code",null,"Accept")," header."):null),uc?U.default.createElement("div",{className:"response-control-examples"},U.default.createElement("small",{className:"response-control-examples__title"},"Examples"),U.default.createElement(lf,{examples:uc,currentExampleKey:this.getTargetExamplesKey(),onSelect:function(wd){return Ls.setActiveExamplesMember({name:wd,pathMethod:[Sn,jn],contextType:"responses",contextName:Fn})},showLabels:!1})):null):null,Sh||et?U.default.createElement(na,{specPath:At,getComponent:Di,getConfigs:uo,specSelectors:Ki,schema:(0,Mn.oG)(et),example:Sh,includeReadOnly:!0}):null,Ds&&uc?U.default.createElement(Lf,{example:uc.get(this.getTargetExamplesKey(),(0,ht.Map)({})),getComponent:Di,getConfigs:uo,omitValue:!0}):null,Cs?U.default.createElement(Ca,{headers:Cs,getComponent:Di}):null),Ds?U.default.createElement("td",{className:"response-col_links"},Fa?(0,xe.default)(Qe=Fa.toSeq().entrySeq()).call(Qe,function(wd){var xd=(0,qa.default)(wd,2),Af=xd[0];return U.default.createElement(ud,{key:Af,name:Af,link:xd[1],getComponent:Di})}):U.default.createElement("i",null,"No links")):null)}}]),ft}(U.default.Component);(0,W.default)(Em,"defaultProps",{response:(0,ht.fromJS)({}),onContentTypeChange:function(){}});const hg=function(bn){return U.default.createElement("div",{className:"response__extension"},bn.xKey,": ",String(bn.xVal))},iv=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>GF()}),Lp=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>zF()});var RA=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"state",{parsedContent:null}),(0,W.default)((0,wi.default)(Qe),"updateParsedContent",function(Vt){var Sn=Qe.props.content;if(Vt!==Sn)if(Sn&&Sn instanceof Blob){var jn=new FileReader;jn.onload=function(){Qe.setState({parsedContent:jn.result})},jn.readAsText(Sn)}else Qe.setState({parsedContent:Sn.toString()})}),Qe}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){this.updateParsedContent(null)}},{key:"componentDidUpdate",value:function(Je){this.updateParsedContent(Je.content)}},{key:"render",value:function(){var Je,Qe,et=this.props,At=et.content,Ot=et.contentType,Vt=et.url,Sn=et.headers,jn=void 0===Sn?{}:Sn,Fn=et.getConfigs,pi=this.state.parsedContent,ui=(0,et.getComponent)("highlightCode"),Mi="response_"+(new Date).getTime();if(Vt=Vt||"",/^application\/octet-stream/i.test(Ot)||jn["Content-Disposition"]&&/attachment/i.test(jn["Content-Disposition"])||jn["content-disposition"]&&/attachment/i.test(jn["content-disposition"])||jn["Content-Description"]&&/File Transfer/i.test(jn["Content-Description"])||jn["content-description"]&&/File Transfer/i.test(jn["content-description"]))if("Blob"in window){var Di=Ot||"text/html",uo=At instanceof Blob?At:new Blob([At],{type:Di}),Ki=ma.default.createObjectURL(uo),to=[Di,Vt.substr((0,c.default)(Vt).call(Vt,"/")+1),Ki].join(":"),ys=jn["content-disposition"]||jn["Content-Disposition"];if(void 0!==ys){var Ls=(0,Mn.DR)(ys);null!==Ls&&(to=Ls)}Qe=U.default.createElement("div",null,U.default.createElement("a",Dn.Z.navigator&&Dn.Z.navigator.msSaveOrOpenBlob?{href:Ki,onClick:function(){return Dn.Z.navigator.msSaveOrOpenBlob(uo,to)}}:{href:Ki,download:to},"Download file"))}else Qe=U.default.createElement("pre",{className:"microlight"},"Download headers detected but your browser does not support downloading binary via XHR (Blob).");else if(/json/i.test(Ot)){var ta=null;(0,Pg.O)(At)&&(ta="json");try{Je=(0,D.default)(JSON.parse(At),null,"  ")}catch(Ds){Je="can't parse JSON.  Raw result:\n\n"+At}Qe=U.default.createElement(ui,{language:ta,downloadable:!0,fileName:"".concat(Mi,".json"),value:Je,getConfigs:Fn,canCopy:!0})}else/xml/i.test(Ot)?(Je=(0,iv.default)(At,{textNodesOnSameLine:!0,indentor:"  "}),Qe=U.default.createElement(ui,{downloadable:!0,fileName:"".concat(Mi,".xml"),value:Je,getConfigs:Fn,canCopy:!0})):Qe="text/html"===(0,Lp.default)(Ot)||/text\/plain/.test(Ot)?U.default.createElement(ui,{downloadable:!0,fileName:"".concat(Mi,".html"),value:At,getConfigs:Fn,canCopy:!0}):"text/csv"===(0,Lp.default)(Ot)||/text\/csv/.test(Ot)?U.default.createElement(ui,{downloadable:!0,fileName:"".concat(Mi,".csv"),value:At,getConfigs:Fn,canCopy:!0}):/^image\//i.test(Ot)?(0,ru.default)(Ot).call(Ot,"svg")?U.default.createElement("div",null," ",At," "):U.default.createElement("img",{src:ma.default.createObjectURL(At)}):/^audio\//i.test(Ot)?U.default.createElement("pre",{className:"microlight"},U.default.createElement("audio",{controls:!0},U.default.createElement("source",{src:Vt,type:Ot}))):"string"==typeof At?U.default.createElement(ui,{downloadable:!0,fileName:"".concat(Mi,".txt"),value:At,getConfigs:Fn,canCopy:!0}):At.size>0?pi?U.default.createElement("div",null,U.default.createElement("p",{className:"i"},"Unrecognized response type; displaying content as text."),U.default.createElement(ui,{downloadable:!0,fileName:"".concat(Mi,".txt"),value:pi,getConfigs:Fn,canCopy:!0})):U.default.createElement("p",{className:"i"},"Unrecognized response type; unable to display."):null;return Qe?U.default.createElement("div",null,U.default.createElement("h5",null,"Response body"),Qe):null}}]),ft}(U.default.PureComponent),Od=wo(2691),NA=wo(374),_S=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je){var Qe;return(0,re.default)(this,ft),Qe=Kt.call(this,Je),(0,W.default)((0,wi.default)(Qe),"onChange",function(et,At,Ot){var Vt=Qe.props;(0,Vt.specActions.changeParamByIdentity)(Vt.onChangeKey,et,At,Ot)}),(0,W.default)((0,wi.default)(Qe),"onChangeConsumesWrapper",function(et){var At=Qe.props;(0,At.specActions.changeConsumesValue)(At.onChangeKey,et)}),(0,W.default)((0,wi.default)(Qe),"toggleTab",function(et){return"parameters"===et?Qe.setState({parametersVisible:!0,callbackVisible:!1}):"callbacks"===et?Qe.setState({callbackVisible:!0,parametersVisible:!1}):void 0}),(0,W.default)((0,wi.default)(Qe),"onChangeMediaType",function(et){var At=et.value,Ot=et.pathMethod,Vt=Qe.props,Sn=Vt.specActions,jn=Vt.oas3Selectors,Fn=Vt.oas3Actions,tr=jn.hasUserEditedBody.apply(jn,(0,Od.default)(Ot)),pi=jn.shouldRetainRequestBodyValue.apply(jn,(0,Od.default)(Ot));Fn.setRequestContentType({value:At,pathMethod:Ot}),Fn.initRequestBodyValidateError({pathMethod:Ot}),tr||(pi||Fn.setRequestBodyValue({value:void 0,pathMethod:Ot}),Sn.clearResponse.apply(Sn,(0,Od.default)(Ot)),Sn.clearRequest.apply(Sn,(0,Od.default)(Ot)),Sn.clearValidateParams(Ot))}),Qe.state={callbackVisible:!1,parametersVisible:!0},Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et=this,At=this.props,Ot=At.onTryoutClick,Vt=At.parameters,Sn=At.allowTryItOut,jn=At.tryItOutEnabled,Fn=At.specPath,tr=At.fn,pi=At.getComponent,ui=At.getConfigs,Mi=At.specSelectors,Di=At.specActions,uo=At.pathMethod,Ki=At.oas3Actions,to=At.oas3Selectors,ys=At.operation,Ls=pi("parameterRow"),ta=pi("TryItOutButton"),Ds=pi("contentType"),Rs=pi("Callbacks",!0),Fs=pi("RequestBody",!0),Cs=jn&&Sn,Fa=Mi.isOAS3(),js=ys.get("requestBody"),Ca=(0,ke.default)(Je=(0,NA.default)((0,ke.default)(Vt).call(Vt,function(Ko,na){var vl,ud=na.get("in");return null!==(vl=Ko[ud])&&void 0!==vl||(Ko[ud]=[]),Ko[ud].push(na),Ko},{}))).call(Je,function(Ko,na){return(0,o.default)(Ko).call(Ko,na)},[]);return U.default.createElement("div",{className:"opblock-section"},U.default.createElement("div",{className:"opblock-section-header"},Fa?U.default.createElement("div",{className:"tab-header"},U.default.createElement("div",{onClick:function(){return et.toggleTab("parameters")},className:"tab-item ".concat(this.state.parametersVisible&&"active")},U.default.createElement("h4",{className:"opblock-title"},U.default.createElement("span",null,"Parameters"))),ys.get("callbacks")?U.default.createElement("div",{onClick:function(){return et.toggleTab("callbacks")},className:"tab-item ".concat(this.state.callbackVisible&&"active")},U.default.createElement("h4",{className:"opblock-title"},U.default.createElement("span",null,"Callbacks"))):null):U.default.createElement("div",{className:"tab-header"},U.default.createElement("h4",{className:"opblock-title"},"Parameters")),Sn?U.default.createElement(ta,{isOAS3:Mi.isOAS3(),hasUserEditedBody:to.hasUserEditedBody.apply(to,(0,Od.default)(uo)),enabled:jn,onCancelClick:this.props.onCancelClick,onTryoutClick:Ot,onResetClick:function(){return Ki.setRequestBodyValue({value:void 0,pathMethod:uo})}}):null),this.state.parametersVisible?U.default.createElement("div",{className:"parameters-container"},Ca.length?U.default.createElement("div",{className:"table-container"},U.default.createElement("table",{className:"parameters"},U.default.createElement("thead",null,U.default.createElement("tr",null,U.default.createElement("th",{className:"col_header parameters-col_name"},"Name"),U.default.createElement("th",{className:"col_header parameters-col_description"},"Description"))),U.default.createElement("tbody",null,(0,xe.default)(Ca).call(Ca,function(Ko,na){var vl;return U.default.createElement(Ls,{fn:tr,specPath:Fn.push(na.toString()),getComponent:pi,getConfigs:ui,rawParam:Ko,param:Mi.parameterWithMetaByIdentity(uo,Ko),key:(0,o.default)(vl="".concat(Ko.get("in"),".")).call(vl,Ko.get("name")),onChange:et.onChange,onChangeConsumes:et.onChangeConsumesWrapper,specSelectors:Mi,specActions:Di,oas3Actions:Ki,oas3Selectors:to,pathMethod:uo,isExecute:Cs})})))):U.default.createElement("div",{className:"opblock-description-wrapper"},U.default.createElement("p",null,"No parameters"))):null,this.state.callbackVisible?U.default.createElement("div",{className:"callbacks-container opblock-description-wrapper"},U.default.createElement(Rs,{callbacks:(0,ht.Map)(ys.get("callbacks")),specPath:(0,Le.default)(Fn).call(Fn,0,-1).push("callbacks")})):null,Fa&&js&&this.state.parametersVisible&&U.default.createElement("div",{className:"opblock-section opblock-section-request-body"},U.default.createElement("div",{className:"opblock-section-header"},U.default.createElement("h4",{className:"opblock-title parameter__name ".concat(js.get("required")&&"required")},"Request body"),U.default.createElement("label",null,U.default.createElement(Ds,{value:to.requestContentType.apply(to,(0,Od.default)(uo)),contentTypes:js.get("content",(0,ht.List)()).keySeq(),onChange:function(Ko){et.onChangeMediaType({value:Ko,pathMethod:uo})},className:"body-param-content-type",ariaLabel:"Request content type"}))),U.default.createElement("div",{className:"opblock-description-wrapper"},U.default.createElement(Fs,{setRetainRequestBodyValueFlag:function(Ko){return Ki.setRetainRequestBodyValueFlag({value:Ko,pathMethod:uo})},userHasEditedBody:to.hasUserEditedBody.apply(to,(0,Od.default)(uo)),specPath:(0,Le.default)(Fn).call(Fn,0,-1).push("requestBody"),requestBody:js,requestBodyValue:to.requestBodyValue.apply(to,(0,Od.default)(uo)),requestBodyInclusionSetting:to.requestBodyInclusionSetting.apply(to,(0,Od.default)(uo)),requestBodyErrors:to.requestBodyErrors.apply(to,(0,Od.default)(uo)),isExecute:Cs,getConfigs:ui,activeExamplesKey:to.activeExamplesMember.apply(to,(0,o.default)(Qe=(0,Od.default)(uo)).call(Qe,["requestBody","requestBody"])),updateActiveExamplesKey:function(Ko){et.props.oas3Actions.setActiveExamplesMember({name:Ko,pathMethod:et.props.pathMethod,contextType:"requestBody",contextName:"requestBody"})},onChange:function(Ko,na){if(na){var vl=to.requestBodyValue.apply(to,(0,Od.default)(uo)),ud=ht.Map.isMap(vl)?vl:(0,ht.Map)();return Ki.setRequestBodyValue({pathMethod:uo,value:ud.setIn(na,Ko)})}Ki.setRequestBodyValue({value:Ko,pathMethod:uo})},onChangeIncludeEmpty:function(Ko,na){Ki.setRequestBodyInclusion({pathMethod:uo,value:na,name:Ko})},contentType:to.requestContentType.apply(to,(0,Od.default)(uo))}))))}}]),ft}(U.Component);(0,W.default)(_S,"defaultProps",{onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]});const PA=function(bn){return U.default.createElement("div",{className:"parameter__extension"},bn.xKey,": ",String(bn.xVal))};var gS=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onCheckboxChange",function(Vt){(0,Qe.props.onChange)(Vt.target.checked)}),Qe}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){var Je=this.props,Qe=Je.isIncludedOptions;Qe.shouldDispatchInit&&(0,Je.onChange)(Qe.defaultValue)}},{key:"render",value:function(){var Je=this.props,Qe=Je.isIncluded,et=Je.isDisabled;return U.default.createElement("div",null,U.default.createElement("label",{className:(0,If.default)("parameter__empty_value_toggle",{disabled:et})},U.default.createElement("input",{type:"checkbox",disabled:et,checked:!et&&Qe,onChange:this.onCheckboxChange}),"Send empty value"))}}]),ft}(U.Component);(0,W.default)(gS,"defaultProps",{onChange:function(){},isIncludedOptions:{}});var Sb=wo(9069),LA=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onChangeWrapper",function(At){var Ot=arguments.length>1&&void 0!==arguments[1]&&arguments[1],Vt=et.props,Sn=Vt.onChange,jn=Vt.rawParam;return Sn(jn,""===At||At&&0===At.size?null:At,Ot)}),(0,W.default)((0,wi.default)(et),"_onExampleSelect",function(At){et.props.oas3Actions.setActiveExamplesMember({name:At,pathMethod:et.props.pathMethod,contextType:"parameters",contextName:et.getParamKey()})}),(0,W.default)((0,wi.default)(et),"onChangeIncludeEmpty",function(At){var Ot=et.props,Vt=Ot.specActions,Sn=Ot.param,jn=Ot.pathMethod,Fn=Sn.get("name"),tr=Sn.get("in");return Vt.updateEmptyParamInclusion(jn,Fn,tr,At)}),(0,W.default)((0,wi.default)(et),"setDefaultValue",function(){var At=et.props,Ot=At.specSelectors,Vt=At.pathMethod,jn=At.oas3Selectors,Fn=Ot.parameterWithMetaByIdentity(Vt,At.rawParam)||(0,ht.Map)(),tr=(0,Sb.Z)(Fn,{isOAS3:Ot.isOAS3()}).schema,pi=Fn.get("content",(0,ht.Map)()).keySeq().first(),ui=tr?(0,Mn.xi)(tr.toJS(),pi,{includeWriteOnly:!0}):null;if(Fn&&void 0===Fn.get("value")&&"body"!==Fn.get("in")){var Mi;if(Ot.isSwagger2())Mi=void 0!==Fn.get("x-example")?Fn.get("x-example"):void 0!==Fn.getIn(["schema","example"])?Fn.getIn(["schema","example"]):tr&&tr.getIn(["default"]);else if(Ot.isOAS3()){var Di,uo=jn.activeExamplesMember.apply(jn,(0,o.default)(Di=(0,Od.default)(Vt)).call(Di,["parameters",et.getParamKey()]));Mi=void 0!==Fn.getIn(["examples",uo,"value"])?Fn.getIn(["examples",uo,"value"]):void 0!==Fn.getIn(["content",pi,"example"])?Fn.getIn(["content",pi,"example"]):void 0!==Fn.get("example")?Fn.get("example"):void 0!==(tr&&tr.get("example"))?tr&&tr.get("example"):void 0!==(tr&&tr.get("default"))?tr&&tr.get("default"):Fn.get("default")}void 0===Mi||ht.List.isList(Mi)||(Mi=(0,Mn.Pz)(Mi)),void 0!==Mi?et.onChangeWrapper(Mi):tr&&"object"===tr.get("type")&&ui&&!Fn.get("examples")&&et.onChangeWrapper(ht.List.isList(ui)?ui:(0,Mn.Pz)(ui))}}),et.setDefaultValue(),et}return(0,ie.default)(ft,[{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe,et=Je.specSelectors,At=Je.pathMethod,Ot=Je.rawParam,Vt=et.isOAS3(),Sn=et.parameterWithMetaByIdentity(At,Ot)||new ht.Map;if(Sn=Sn.isEmpty()?Ot:Sn,Vt){var jn=(0,Sb.Z)(Sn,{isOAS3:Vt}).schema;Qe=jn?jn.get("enum"):void 0}else Qe=Sn?Sn.get("enum"):void 0;var Fn,tr=Sn?Sn.get("value"):void 0;void 0!==tr?Fn=tr:Ot.get("required")&&Qe&&Qe.size&&(Fn=Qe.first()),void 0!==Fn&&Fn!==tr&&this.onChangeWrapper((0,Mn.D$)(Fn)),this.setDefaultValue()}},{key:"getParamKey",value:function(){var Je,Qe=this.props.param;return Qe?(0,o.default)(Je="".concat(Qe.get("name"),"-")).call(Je,Qe.get("in")):null}},{key:"render",value:function(){var Je,Qe,et,At,Ot=this.props,Vt=Ot.param,Sn=Ot.rawParam,jn=Ot.getComponent,Fn=Ot.getConfigs,tr=Ot.isExecute,pi=Ot.fn,ui=Ot.onChangeConsumes,Mi=Ot.specSelectors,Di=Ot.pathMethod,uo=Ot.specPath,Ki=Ot.oas3Selectors,to=Mi.isOAS3(),ys=Fn(),Ls=ys.showExtensions,ta=ys.showCommonExtensions;if(Vt||(Vt=Sn),!Sn)return null;var Ds,Rs,Fs,Cs,Fa=jn("JsonSchemaForm"),js=jn("ParamBody"),Ca=Vt.get("in"),Ko="body"!==Ca?null:U.default.createElement(js,{getComponent:jn,getConfigs:Fn,fn:pi,param:Vt,consumes:Mi.consumesOptionsFor(Di),consumesValue:Mi.contentTypeValues(Di).get("requestContentType"),onChange:this.onChangeWrapper,onChangeConsumes:ui,isExecute:tr,specSelectors:Mi,pathMethod:Di}),na=jn("modelExample"),vl=jn("Markdown",!0),ud=jn("ParameterExt"),af=jn("ParameterIncludeEmpty"),lf=jn("ExamplesSelectValueRetainer"),Lf=jn("Example"),iu=(0,Sb.Z)(Vt,{isOAS3:to}).schema,cd=Mi.parameterWithMetaByIdentity(Di,Sn)||(0,ht.Map)(),uc=iu?iu.get("format"):null,cp=iu?iu.get("type"):null,Qf=iu?iu.getIn(["items","type"]):null,L_="formData"===Ca,jd="FormData"in Dn.Z,cc=Vt.get("required"),Gd=cd?cd.get("value"):"",uf=ta?(0,Mn.po)(iu):null,cf=Ls?(0,Mn.nX)(Vt):null,Sh=!1;return void 0!==Vt&&iu&&(Ds=iu.get("items")),void 0!==Ds?(Rs=Ds.get("enum"),Fs=Ds.get("default")):iu&&(Rs=iu.get("enum")),Rs&&Rs.size&&Rs.size>0&&(Sh=!0),void 0!==Vt&&(iu&&(Fs=iu.get("default")),void 0===Fs&&(Fs=Vt.get("default")),void 0===(Cs=Vt.get("example"))&&(Cs=Vt.get("x-example"))),U.default.createElement("tr",{"data-param-name":Vt.get("name"),"data-param-in":Vt.get("in")},U.default.createElement("td",{className:"parameters-col_name"},U.default.createElement("div",{className:cc?"parameter__name required":"parameter__name"},Vt.get("name"),cc?U.default.createElement("span",null,"\xa0*"):null),U.default.createElement("div",{className:"parameter__type"},cp,Qf&&"[".concat(Qf,"]"),uc&&U.default.createElement("span",{className:"prop-format"},"($",uc,")")),U.default.createElement("div",{className:"parameter__deprecated"},to&&Vt.get("deprecated")?"deprecated":null),U.default.createElement("div",{className:"parameter__in"},"(",Vt.get("in"),")"),ta&&uf.size?(0,xe.default)(Je=uf.entrySeq()).call(Je,function(wd){var xd,Af=(0,qa.default)(wd,2),Ch=Af[0],Tm=Af[1];return U.default.createElement(ud,{key:(0,o.default)(xd="".concat(Ch,"-")).call(xd,Tm),xKey:Ch,xVal:Tm})}):null,Ls&&cf.size?(0,xe.default)(Qe=cf.entrySeq()).call(Qe,function(wd){var xd,Af=(0,qa.default)(wd,2),Ch=Af[0],Tm=Af[1];return U.default.createElement(ud,{key:(0,o.default)(xd="".concat(Ch,"-")).call(xd,Tm),xKey:Ch,xVal:Tm})}):null),U.default.createElement("td",{className:"parameters-col_description"},Vt.get("description")?U.default.createElement(vl,{source:Vt.get("description")}):null,!Ko&&tr||!Sh?null:U.default.createElement(vl,{className:"parameter__enum",source:"<i>Available values</i> : "+(0,xe.default)(Rs).call(Rs,function(wd){return wd}).toArray().join(", ")}),!Ko&&tr||void 0===Fs?null:U.default.createElement(vl,{className:"parameter__default",source:"<i>Default value</i> : "+Fs}),!Ko&&tr||void 0===Cs?null:U.default.createElement(vl,{source:"<i>Example</i> : "+Cs}),L_&&!jd&&U.default.createElement("div",null,"Error: your browser does not support FormData"),to&&Vt.get("examples")?U.default.createElement("section",{className:"parameter-controls"},U.default.createElement(lf,{examples:Vt.get("examples"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:jn,defaultToFirstExample:!0,currentKey:Ki.activeExamplesMember.apply(Ki,(0,o.default)(et=(0,Od.default)(Di)).call(et,["parameters",this.getParamKey()])),currentUserInputValue:Gd})):null,Ko?null:U.default.createElement(Fa,{fn:pi,getComponent:jn,value:Gd,required:cc,disabled:!tr,description:Vt.get("name"),onChange:this.onChangeWrapper,errors:cd.get("errors"),schema:iu}),Ko&&iu?U.default.createElement(na,{getComponent:jn,specPath:uo.push("schema"),getConfigs:Fn,isExecute:tr,specSelectors:Mi,schema:iu,example:Ko,includeWriteOnly:!0}):null,!Ko&&tr&&Vt.get("allowEmptyValue")?U.default.createElement(af,{onChange:this.onChangeIncludeEmpty,isIncluded:Mi.parameterInclusionSettingFor(Di,Vt.get("name"),Vt.get("in")),isDisabled:!(0,Mn.O2)(Gd)}):null,to&&Vt.get("examples")?U.default.createElement(Lf,{example:Vt.getIn(["examples",Ki.activeExamplesMember.apply(Ki,(0,o.default)(At=(0,Od.default)(Di)).call(At,["parameters",this.getParamKey()]))]),getComponent:jn,getConfigs:Fn}):null))}}]),ft}(U.Component),FA=wo(6235),kA=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"handleValidateParameters",function(){var Vt=Qe.props,Sn=Vt.specSelectors,Fn=Vt.path,tr=Vt.method;return Vt.specActions.validateParams([Fn,tr]),Sn.validateBeforeExecute([Fn,tr])}),(0,W.default)((0,wi.default)(Qe),"handleValidateRequestBody",function(){var Vt=Qe.props,Sn=Vt.path,jn=Vt.method,Fn=Vt.specSelectors,tr=Vt.oas3Selectors,pi=Vt.oas3Actions,ui={missingBodyValue:!1,missingRequiredKeys:[]};pi.clearRequestBodyValidateError({path:Sn,method:jn});var Mi=Fn.getOAS3RequiredRequestBodyContentType([Sn,jn]),Di=tr.requestBodyValue(Sn,jn),uo=tr.validateBeforeExecute([Sn,jn]),Ki=tr.requestContentType(Sn,jn);if(!uo)return ui.missingBodyValue=!0,pi.setRequestBodyValidateError({path:Sn,method:jn,validationErrors:ui}),!1;if(!Mi)return!0;var to=tr.validateShallowRequired({oas3RequiredRequestBodyContentType:Mi,oas3RequestContentType:Ki,oas3RequestBodyValue:Di});return!to||to.length<1||((0,Du.default)(to).call(to,function(ys){ui.missingRequiredKeys.push(ys)}),pi.setRequestBodyValidateError({path:Sn,method:jn,validationErrors:ui}),!1)}),(0,W.default)((0,wi.default)(Qe),"handleValidationResultPass",function(){var Vt=Qe.props,Sn=Vt.specActions,jn=Vt.operation,Fn=Vt.path,tr=Vt.method;Qe.props.onExecute&&Qe.props.onExecute(),Sn.execute({operation:jn,path:Fn,method:tr})}),(0,W.default)((0,wi.default)(Qe),"handleValidationResultFail",function(){var Vt=Qe.props,Sn=Vt.specActions,jn=Vt.path,Fn=Vt.method;Sn.clearValidateParams([jn,Fn]),(0,FA.default)(function(){Sn.validateParams([jn,Fn])},40)}),(0,W.default)((0,wi.default)(Qe),"handleValidationResult",function(Vt){Vt?Qe.handleValidationResultPass():Qe.handleValidationResultFail()}),(0,W.default)((0,wi.default)(Qe),"onClick",function(){var Vt=Qe.handleValidateParameters(),Sn=Qe.handleValidateRequestBody();Qe.handleValidationResult(Vt&&Sn)}),(0,W.default)((0,wi.default)(Qe),"onChangeProducesWrapper",function(Vt){return Qe.props.specActions.changeProducesValue([Qe.props.path,Qe.props.method],Vt)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("button",{className:"btn execute opblock-control__btn",onClick:this.onClick,disabled:this.props.disabled},"Execute")}}]),ft}(U.Component),za=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.headers,At=Qe.getComponent,Ot=At("Property"),Vt=At("Markdown",!0);return et&&et.size?U.default.createElement("div",{className:"headers-wrapper"},U.default.createElement("h4",{className:"headers__title"},"Headers:"),U.default.createElement("table",{className:"headers"},U.default.createElement("thead",null,U.default.createElement("tr",{className:"header-row"},U.default.createElement("th",{className:"header-col"},"Name"),U.default.createElement("th",{className:"header-col"},"Description"),U.default.createElement("th",{className:"header-col"},"Type"))),U.default.createElement("tbody",null,(0,xe.default)(Je=et.entrySeq()).call(Je,function(Sn){var jn=(0,qa.default)(Sn,2),Fn=jn[0],tr=jn[1];if(!ht.default.Map.isMap(tr))return null;var pi=tr.get("description"),ui=tr.getIn(["schema"])?tr.getIn(["schema","type"]):tr.getIn(["type"]),Mi=tr.getIn(["schema","example"]);return U.default.createElement("tr",{key:Fn},U.default.createElement("td",{className:"header-col"},Fn),U.default.createElement("td",{className:"header-col"},pi?U.default.createElement(Vt,{source:pi}):null),U.default.createElement("td",{className:"header-col"},ui," ",Mi?U.default.createElement(Ot,{propKey:"Example",propVal:Mi,propClass:"header-example"}):null))}).toArray()))):null}}]),ft}(U.default.Component),Fu=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.editorActions,et=Je.errSelectors,At=Je.layoutSelectors,Ot=Je.layoutActions,Vt=(0,Je.getComponent)("Collapse");if(Qe&&Qe.jumpToLine)var Sn=Qe.jumpToLine;var jn=et.allErrors(),Fn=(0,g.default)(jn).call(jn,function(ui){return"thrown"===ui.get("type")||"error"===ui.get("level")});if(!Fn||Fn.count()<1)return null;var tr=At.isShown(["errorPane"],!0),pi=Fn.sortBy(function(ui){return ui.get("line")});return U.default.createElement("pre",{className:"errors-wrapper"},U.default.createElement("hgroup",{className:"error"},U.default.createElement("h4",{className:"errors__title"},"Errors"),U.default.createElement("button",{className:"btn errors__clear-btn",onClick:function(){return Ot.show(["errorPane"],!tr)}},tr?"Hide":"Show")),U.default.createElement(Vt,{isOpened:tr,animated:!0},U.default.createElement("div",{className:"errors"},(0,xe.default)(pi).call(pi,function(ui,Mi){var Di=ui.get("type");return"thrown"===Di||"auth"===Di?U.default.createElement(ld,{key:Mi,error:ui.get("error")||ui,jumpToLine:Sn}):"spec"===Di?U.default.createElement(R0,{key:Mi,error:ui,jumpToLine:Sn}):void 0}))))}}]),ft}(U.default.Component),ld=function(bn){var Kt=bn.error,ft=bn.jumpToLine;if(!Kt)return null;var Je=Kt.get("line");return U.default.createElement("div",{className:"error-wrapper"},Kt?U.default.createElement("div",null,U.default.createElement("h4",null,Kt.get("source")&&Kt.get("level")?u1(Kt.get("source"))+" "+Kt.get("level"):"",Kt.get("path")?U.default.createElement("small",null," at ",Kt.get("path")):null),U.default.createElement("span",{className:"message thrown"},Kt.get("message")),U.default.createElement("div",{className:"error-line"},Je&&ft?U.default.createElement("a",{onClick:(0,ge.default)(ft).call(ft,null,Je)},"Jump to line ",Je):null)):null)},R0=function(bn){var Kt=bn.error,ft=bn.jumpToLine,Je=null;return Kt.get("path")?Je=ht.List.isList(Kt.get("path"))?U.default.createElement("small",null,"at ",Kt.get("path").join(".")):U.default.createElement("small",null,"at ",Kt.get("path")):Kt.get("line")&&!ft&&(Je=U.default.createElement("small",null,"on line ",Kt.get("line"))),U.default.createElement("div",{className:"error-wrapper"},Kt?U.default.createElement("div",null,U.default.createElement("h4",null,u1(Kt.get("source"))+" "+Kt.get("level"),"\xa0",Je),U.default.createElement("span",{className:"message"},Kt.get("message")),U.default.createElement("div",{className:"error-line"},ft?U.default.createElement("a",{onClick:(0,ge.default)(ft).call(ft,null,Kt.get("line"))},"Jump to line ",Kt.get("line")):null)):null)};function u1(bn){var Kt;return(0,xe.default)(Kt=(bn||"").split(" ")).call(Kt,function(ft){return ft[0].toUpperCase()+(0,Le.default)(ft).call(ft,1)}).join(" ")}ld.defaultProps={jumpToLine:null};var N0=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onChangeWrapper",function(Vt){return Qe.props.onChange(Vt.target.value)}),Qe}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe;Je.contentTypes&&Je.contentTypes.size&&((0,ru.default)(Qe=Je.contentTypes).call(Qe,Je.value)||Je.onChange(Je.contentTypes.first()))}},{key:"render",value:function(){var Je=this.props,Ot=Je.contentTypes;return Ot&&Ot.size?U.default.createElement("div",{className:"content-type-wrapper "+(Je.className||"")},U.default.createElement("select",{"aria-controls":Je.ariaControls,"aria-label":Je.ariaLabel,className:"content-type",id:Je.controlId,onChange:this.onChangeWrapper,value:Je.value||""},(0,xe.default)(Ot).call(Ot,function(jn){return U.default.createElement("option",{key:jn,value:jn},jn)}).toArray())):null}}]),ft}(U.default.Component);(0,W.default)(N0,"defaultProps",{onChange:function(){},value:null,contentTypes:(0,ht.fromJS)(["application/json"])});var Fp=wo(863),c1=wo(302),p7=wo(5942),h7=["fullscreen","full"],_7=["hide","keepContents","mobile","tablet","desktop","large"];function mS(){for(var bn,Kt=arguments.length,ft=new Array(Kt),Je=0;Je<Kt;Je++)ft[Je]=arguments[Je];return(0,p7.default)(bn=(0,g.default)(ft).call(ft,function(Qe){return!!Qe}).join(" ")).call(bn)}var g7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.fullscreen,et=Je.full,At=(0,c1.default)(Je,h7);return U.default.createElement("section",Qe?At:(0,Fp.default)({},At,{className:mS(At.className,"swagger-container"+(et?"-full":""))}))}}]),ft}(U.default.Component),sR={mobile:"",tablet:"-tablet",desktop:"-desktop",large:"-hd"},m7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.hide,At=Qe.keepContents,Ot=(0,c1.default)(Qe,_7);if(et&&!At)return U.default.createElement("span",null);var Vt=[];for(var Sn in sR)if(Object.prototype.hasOwnProperty.call(sR,Sn)){var jn=sR[Sn];if(Sn in this.props){var Fn=this.props[Sn];if(Fn<1){Vt.push("none"+jn);continue}Vt.push("block"+jn),Vt.push("col-"+Fn+jn)}}et&&Vt.push("hidden");var tr=mS.apply(void 0,(0,o.default)(Je=[Ot.className]).call(Je,Vt));return U.default.createElement("section",(0,Fp.default)({},Ot,{className:tr}))}}]),ft}(U.default.Component),v7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("div",(0,Fp.default)({},this.props,{className:mS(this.props.className,"wrapper")}))}}]),ft}(U.default.Component),bP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("button",(0,Fp.default)({},this.props,{className:mS(this.props.className,"button")}))}}]),ft}(U.default.Component);(0,W.default)(bP,"defaultProps",{className:""});var y7=function(bn){return U.default.createElement("textarea",bn)},b7=function(bn){return U.default.createElement("input",bn)},EP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onChange",function(Ot){var Vt,Sn,jn=et.props,Fn=jn.onChange,tr=jn.multiple,pi=(0,Le.default)([]).call(Ot.target.options);Vt=tr?(0,xe.default)(Sn=(0,g.default)(pi).call(pi,function(ui){return ui.selected})).call(Sn,function(ui){return ui.value}):Ot.target.value,et.setState({value:Vt}),Fn&&Fn(Vt)}),et.state={value:Je.value?Je.value:Je.multiple?[""]:""},et}return(0,ie.default)(ft,[{key:"UNSAFE_componentWillReceiveProps",value:function(Je){Je.value!==this.props.value&&this.setState({value:Je.value})}},{key:"render",value:function(){var Je,Qe,et=this.props,At=et.allowedValues,Ot=et.multiple,Vt=et.allowEmptyValue,Sn=et.disabled,jn=(null===(Je=this.state.value)||void 0===Je||null===(Qe=Je.toJS)||void 0===Qe?void 0:Qe.call(Je))||this.state.value;return U.default.createElement("select",{className:this.props.className,multiple:Ot,value:jn,onChange:this.onChange,disabled:Sn},Vt?U.default.createElement("option",{value:""},"--"):null,(0,xe.default)(At).call(At,function(Fn,tr){return U.default.createElement("option",{key:tr,value:String(Fn)},String(Fn))}))}}]),ft}(U.default.Component);(0,W.default)(EP,"defaultProps",{multiple:!1,allowEmptyValue:!0});var TP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("a",(0,Fp.default)({},this.props,{rel:"noopener noreferrer",className:mS(this.props.className,"link")}))}}]),ft}(U.default.Component),SP=function(bn){return U.default.createElement("div",{className:"no-margin"}," ",bn.children," ")},CP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"renderNotAnimated",value:function(){return this.props.isOpened?U.default.createElement(SP,null,this.props.children):U.default.createElement("noscript",null)}},{key:"render",value:function(){var Je=this.props,At=Je.children;return Je.animated?U.default.createElement(SP,null,At=Je.isOpened?At:null):this.renderNotAnimated()}}]),ft}(U.default.Component);(0,W.default)(CP,"defaultProps",{isOpened:!1,animated:!1});var E7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe,et;(0,re.default)(this,ft);for(var At=arguments.length,Ot=new Array(At),Vt=0;Vt<At;Vt++)Ot[Vt]=arguments[Vt];return(et=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,Ot))).setTagShown=(0,ge.default)(Qe=et._setTagShown).call(Qe,(0,wi.default)(et)),et}return(0,ie.default)(ft,[{key:"_setTagShown",value:function(Je,Qe){this.props.layoutActions.show(Je,Qe)}},{key:"showOp",value:function(Je,Qe){this.props.layoutActions.show(Je,Qe)}},{key:"render",value:function(){var Je=this.props,et=Je.layoutSelectors,At=Je.layoutActions,Ot=Je.getComponent,Vt=Je.specSelectors.taggedOperations(),Sn=Ot("Collapse");return U.default.createElement("div",null,U.default.createElement("h4",{className:"overview-title"},"Overview"),(0,xe.default)(Vt).call(Vt,function(jn,Fn){var tr=jn.get("operations"),pi=["overview-tags",Fn],ui=et.isShown(pi,!0);return U.default.createElement("div",{key:"overview-"+Fn},U.default.createElement("h4",{onClick:function(){return At.show(pi,!ui)},className:"link overview-tag"}," ",ui?"-":"+",Fn),U.default.createElement(Sn,{isOpened:ui,animated:!0},(0,xe.default)(tr).call(tr,function(Mi){var Di=Mi.toObject(),uo=Di.path,Ki=Di.method,to=Di.id,ys="operations",Ls=to,ta=et.isShown([ys,Ls]);return U.default.createElement(T7,{key:to,path:uo,method:Ki,id:uo+"-"+Ki,shown:ta,showOpId:Ls,showOpIdPrefix:ys,href:"#operation-".concat(Ls),onClick:At.show})}).toArray()))}).toArray(),Vt.size<1&&U.default.createElement("h3",null," No operations defined in spec! "))}}]),ft}(U.default.Component),T7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je){var Qe,et;return(0,re.default)(this,ft),(et=Kt.call(this,Je)).onClick=(0,ge.default)(Qe=et._onClick).call(Qe,(0,wi.default)(et)),et}return(0,ie.default)(ft,[{key:"_onClick",value:function(){var Je=this.props;(0,Je.onClick)([Je.showOpIdPrefix,Je.showOpId],!Je.shown)}},{key:"render",value:function(){var Je=this.props,Qe=Je.id,et=Je.method;return U.default.createElement(TP,{href:Je.href,onClick:this.onClick,className:"block opblock-link ".concat(Je.shown?"shown":"")},U.default.createElement("div",null,U.default.createElement("small",{className:"bold-label-".concat(et)},et.toUpperCase()),U.default.createElement("span",{className:"bold-label"},Qe)))}}]),ft}(U.default.Component),S7=["value","defaultValue","initialValue"],C7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}},{key:"render",value:function(){var Je=this,et=(0,c1.default)(this.props,S7);return U.default.createElement("input",(0,Fp.default)({},et,{ref:function(At){return Je.inputRef=At}}))}}]),ft}(U.default.Component),M7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props;return U.default.createElement("pre",{className:"base-url"},"[ Base URL: ",Je.host,Je.basePath," ]")}}]),ft}(U.default.Component),A7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.data,et=Je.getComponent,At=Je.selectedServer,Ot=Je.url,Vt=Qe.get("name")||"the developer",Sn=Pi(Qe.get("url"),Ot,{selectedServer:At}),jn=Qe.get("email"),Fn=et("Link");return U.default.createElement("div",{className:"info__contact"},Sn&&U.default.createElement("div",null,U.default.createElement(Fn,{href:(0,Mn.Nm)(Sn),target:"_blank"},Vt," - Website")),jn&&U.default.createElement(Fn,{href:(0,Mn.Nm)("mailto:".concat(jn))},Sn?"Send email to ".concat(Vt):"Contact ".concat(Vt)))}}]),ft}(U.default.Component),O7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.license,At=Je.selectedServer,Ot=Je.url,Vt=(0,Je.getComponent)("Link"),Sn=Qe.get("name")||"License",jn=Pi(Qe.get("url"),Ot,{selectedServer:At});return U.default.createElement("div",{className:"info__license"},jn?U.default.createElement(Vt,{target:"_blank",href:(0,Mn.Nm)(jn)},Sn):U.default.createElement("span",null,Sn))}}]),ft}(U.default.Component),w7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.url,et=(0,Je.getComponent)("Link");return U.default.createElement(et,{target:"_blank",href:(0,Mn.Nm)(Qe)},U.default.createElement("span",{className:"url"}," ",Qe))}}]),ft}(U.default.PureComponent),x7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.info,et=Je.url,At=Je.host,Ot=Je.basePath,Vt=Je.getComponent,Sn=Je.externalDocs,jn=Je.selectedServer,Fn=Je.url,tr=Qe.get("version"),pi=Qe.get("description"),ui=Qe.get("title"),Mi=Pi(Qe.get("termsOfService"),Fn,{selectedServer:jn}),Di=Qe.get("contact"),uo=Qe.get("license"),Ki=Pi(Sn&&Sn.get("url"),Fn,{selectedServer:jn}),to=Sn&&Sn.get("description"),ys=Vt("Markdown",!0),Ls=Vt("Link"),ta=Vt("VersionStamp"),Ds=Vt("InfoUrl"),Rs=Vt("InfoBasePath");return U.default.createElement("div",{className:"info"},U.default.createElement("hgroup",{className:"main"},U.default.createElement("h2",{className:"title"},ui,tr&&U.default.createElement(ta,{version:tr})),At||Ot?U.default.createElement(Rs,{host:At,basePath:Ot}):null,et&&U.default.createElement(Ds,{getComponent:Vt,url:et})),U.default.createElement("div",{className:"description"},U.default.createElement(ys,{source:pi})),Mi&&U.default.createElement("div",{className:"info__tos"},U.default.createElement(Ls,{target:"_blank",href:(0,Mn.Nm)(Mi)},"Terms of service")),Di&&Di.size?U.default.createElement(A7,{getComponent:Vt,data:Di,selectedServer:jn,url:et}):null,uo&&uo.size?U.default.createElement(O7,{getComponent:Vt,license:uo,selectedServer:jn,url:et}):null,Ki?U.default.createElement(Ls,{className:"info__extdocs",target:"_blank",href:(0,Mn.Nm)(Ki)},to||Ki):null)}}]),ft}(U.default.Component),D7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.specSelectors,et=Je.getComponent,At=Je.oas3Selectors,Ot=Qe.info(),Vt=Qe.url(),Sn=Qe.basePath(),jn=Qe.host(),Fn=Qe.externalDocs(),tr=At.selectedServer(),pi=et("info");return U.default.createElement("div",null,Ot&&Ot.count()?U.default.createElement(pi,{info:Ot,url:Vt,host:jn,basePath:Sn,externalDocs:Fn,getComponent:et,selectedServer:tr}):null)}}]),ft}(U.default.Component),R7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return null}}]),ft}(U.default.Component),N7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){return U.default.createElement("div",{className:"footer"})}}]),ft}(U.default.Component),P7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onFilterChange",function(Vt){Qe.props.layoutActions.updateFilter(Vt.target.value)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.specSelectors,et=Je.layoutSelectors,At=(0,Je.getComponent)("Col"),Ot="loading"===Qe.loadingStatus(),Vt="failed"===Qe.loadingStatus(),Sn=et.currentFilter(),jn=["operation-filter-input"];return Vt&&jn.push("failed"),Ot&&jn.push("loading"),U.default.createElement("div",null,null===Sn||!1===Sn||"false"===Sn?null:U.default.createElement("div",{className:"filter-container"},U.default.createElement(At,{className:"filter wrapper",mobile:12},U.default.createElement("input",{className:jn.join(" "),placeholder:"Filter by tag",type:"text",onChange:this.onFilterChange,value:!0===Sn||"true"===Sn?"":Sn,disabled:Ot}))))}}]),ft}(U.default.Component),aR=Function.prototype,MP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"updateValues",function(At){var Ot=At.param,Vt=At.isExecute,Sn=At.consumesValue,jn=void 0===Sn?"":Sn,Fn=/xml/i.test(jn),tr=/json/i.test(jn),pi=Ot.get(Fn?"value_xml":"value");if(void 0!==pi){var ui=!pi&&tr?"{}":pi;et.setState({value:ui}),et.onChange(ui,{isXml:Fn,isEditBox:Vt})}else Fn?et.onChange(et.sample("xml"),{isXml:Fn,isEditBox:Vt}):et.onChange(et.sample(),{isEditBox:Vt})}),(0,W.default)((0,wi.default)(et),"sample",function(At){var Ot=et.props,Sn=(0,Ot.fn.inferSchema)(Ot.param.toJS());return(0,Mn.xi)(Sn,At,{includeWriteOnly:!0})}),(0,W.default)((0,wi.default)(et),"onChange",function(At,Ot){var Sn=Ot.isXml;et.setState({value:At,isEditBox:Ot.isEditBox}),et._onChange(At,Sn)}),(0,W.default)((0,wi.default)(et),"_onChange",function(At,Ot){(et.props.onChange||aR)(At,Ot)}),(0,W.default)((0,wi.default)(et),"handleOnChange",function(At){var Vt=/xml/i.test(et.props.consumesValue);et.onChange(At.target.value,{isXml:Vt,isEditBox:et.state.isEditBox})}),(0,W.default)((0,wi.default)(et),"toggleIsEditBox",function(){return et.setState(function(At){return{isEditBox:!At.isEditBox}})}),et.state={isEditBox:!1,value:""},et}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){this.updateValues.call(this,this.props)}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){this.updateValues.call(this,Je)}},{key:"render",value:function(){var Je=this.props,Qe=Je.onChangeConsumes,et=Je.param,At=Je.isExecute,Ot=Je.specSelectors,Vt=Je.pathMethod,Sn=Je.getConfigs,jn=Je.getComponent,Fn=jn("Button"),tr=jn("TextArea"),pi=jn("highlightCode"),ui=jn("contentType"),Mi=(Ot?Ot.parameterWithMetaByIdentity(Vt,et):et).get("errors",(0,ht.List)()),Di=Ot.contentTypeValues(Vt).get("requestContentType"),uo=this.props.consumes&&this.props.consumes.size?this.props.consumes:ft.defaultProp.consumes,Ki=this.state,to=Ki.value,ys=Ki.isEditBox,Ls=null;return(0,Pg.O)(to)&&(Ls="json"),U.default.createElement("div",{className:"body-param","data-param-name":et.get("name"),"data-param-in":et.get("in")},ys&&At?U.default.createElement(tr,{className:"body-param__text"+(Mi.count()?" invalid":""),value:to,onChange:this.handleOnChange}):to&&U.default.createElement(pi,{className:"body-param__example",language:Ls,getConfigs:Sn,value:to}),U.default.createElement("div",{className:"body-param-options"},At?U.default.createElement("div",{className:"body-param-edit"},U.default.createElement(Fn,{className:ys?"btn cancel body-param__example-edit":"btn edit body-param__example-edit",onClick:this.toggleIsEditBox},ys?"Cancel":"Edit")):null,U.default.createElement("label",{htmlFor:""},U.default.createElement("span",null,"Parameter content type"),U.default.createElement(ui,{value:Di,contentTypes:uo,onChange:Qe,className:"body-param-content-type",ariaLabel:"Parameter content type"}))))}}]),ft}(U.PureComponent);(0,W.default)(MP,"defaultProp",{consumes:(0,ht.fromJS)(["application/json"]),param:(0,ht.fromJS)({}),onChange:aR,onChangeConsumes:aR});var I7=wo(4624),L7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,et=Je.getConfigs,At=(0,I7.requestSnippetGenerator_curl_bash)(Je.request),Ot=et(),Vt=(0,Ql.default)(Ot,"syntaxHighlight.activated")?U.default.createElement(Jp.d3,{language:"bash",className:"curl microlight",style:(0,Jp.C2)((0,Ql.default)(Ot,"syntaxHighlight.theme"))},At):U.default.createElement("textarea",{readOnly:!0,className:"curl",value:At});return U.default.createElement("div",{className:"curl-command"},U.default.createElement("h4",null,"Curl"),U.default.createElement("div",{className:"copy-to-clipboard"},U.default.createElement(Qp.CopyToClipboard,{text:At},U.default.createElement("button",null))),U.default.createElement("div",null,Vt))}}]),ft}(U.default.Component),F7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onChange",function(Vt){Qe.setScheme(Vt.target.value)}),(0,W.default)((0,wi.default)(Qe),"setScheme",function(Vt){var Sn=Qe.props;Sn.specActions.setScheme(Vt,Sn.path,Sn.method)}),Qe}return(0,ie.default)(ft,[{key:"UNSAFE_componentWillMount",value:function(){this.setScheme(this.props.schemes.first())}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe;this.props.currentScheme&&(0,ru.default)(Qe=Je.schemes).call(Qe,this.props.currentScheme)||this.setScheme(Je.schemes.first())}},{key:"render",value:function(){var Je,Qe=this.props,et=Qe.schemes,At=Qe.currentScheme;return U.default.createElement("label",{htmlFor:"schemes"},U.default.createElement("span",{className:"schemes-title"},"Schemes"),U.default.createElement("select",{onChange:this.onChange,value:At},(0,xe.default)(Je=et.valueSeq()).call(Je,function(Ot){return U.default.createElement("option",{value:Ot,key:Ot},Ot)}).toArray()))}}]),ft}(U.default.Component),k7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.specActions,et=Je.specSelectors,At=Je.getComponent,Ot=et.operationScheme(),Vt=et.schemes(),Sn=At("schemes");return Vt&&Vt.size?U.default.createElement(Sn,{currentScheme:Ot,schemes:Vt,specActions:Qe}):null}}]),ft}(U.default.Component),AP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"toggleCollapsed",function(){et.props.onToggle&&et.props.onToggle(et.props.modelName,!et.state.expanded),et.setState({expanded:!et.state.expanded})}),(0,W.default)((0,wi.default)(et),"onLoad",function(Sn){if(Sn&&et.props.layoutSelectors){var jn=et.props.layoutSelectors.getScrollToKey();ht.default.is(jn,et.props.specPath)&&et.toggleCollapsed(),et.props.layoutActions.readyToScroll(et.props.specPath,Sn.parentElement)}});var At=et.props;return et.state={expanded:At.expanded,collapsedContent:At.collapsedContent||ft.defaultProps.collapsedContent},et}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){var Je=this.props,et=Je.expanded;Je.hideSelfOnExpand&&et&&this.props.onToggle(Je.modelName,et)}},{key:"UNSAFE_componentWillReceiveProps",value:function(Je){this.props.expanded!==Je.expanded&&this.setState({expanded:Je.expanded})}},{key:"render",value:function(){var Je=this.props,Qe=Je.title,et=Je.classes;return this.state.expanded&&this.props.hideSelfOnExpand?U.default.createElement("span",{className:et||""},this.props.children):U.default.createElement("span",{className:et||"",ref:this.onLoad},U.default.createElement("button",{"aria-expanded":this.state.expanded,className:"model-box-control",onClick:this.toggleCollapsed},Qe&&U.default.createElement("span",{className:"pointer"},Qe),U.default.createElement("span",{className:"model-toggle"+(this.state.expanded?"":" collapsed")}),!this.state.expanded&&U.default.createElement("span",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}]),ft}(U.Component);(0,W.default)(AP,"defaultProps",{collapsedContent:"{...}",expanded:!1,title:null,onToggle:function(){},hideSelfOnExpand:!1,specPath:ht.default.List([])});var $7=wo(1798),$A=wo.n($7),H7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"activeTab",function(Fn){et.setState({activeTab:Fn.target.dataset.name})});var At=et.props,Vt=At.isExecute,Sn=(0,At.getConfigs)().defaultModelRendering,jn=Sn;return"example"!==Sn&&"model"!==Sn&&(jn="example"),Vt&&(jn="example"),et.state={activeTab:jn},et}return(0,ie.default)(ft,[{key:"UNSAFE_componentWillReceiveProps",value:function(Je){Je.isExecute&&!this.props.isExecute&&this.props.example&&this.setState({activeTab:"example"})}},{key:"render",value:function(){var Je=this.props,Qe=Je.getComponent,et=Je.specSelectors,At=Je.schema,Ot=Je.example,Vt=Je.isExecute,Sn=Je.getConfigs,jn=Je.specPath,Fn=Je.includeReadOnly,tr=Je.includeWriteOnly,pi=Sn().defaultModelExpandDepth,ui=Qe("ModelWrapper"),Mi=Qe("highlightCode"),Di=$A()(5).toString("base64"),uo=$A()(5).toString("base64"),Ki=$A()(5).toString("base64"),to=$A()(5).toString("base64"),ys=et.isOAS3();return U.default.createElement("div",{className:"model-example"},U.default.createElement("ul",{className:"tab",role:"tablist"},U.default.createElement("li",{className:(0,If.default)("tabitem",{active:"example"===this.state.activeTab}),role:"presentation"},U.default.createElement("button",{"aria-controls":uo,"aria-selected":"example"===this.state.activeTab,className:"tablinks","data-name":"example",id:Di,onClick:this.activeTab,role:"tab"},Vt?"Edit Value":"Example Value")),At&&U.default.createElement("li",{className:(0,If.default)("tabitem",{active:"model"===this.state.activeTab}),role:"presentation"},U.default.createElement("button",{"aria-controls":to,"aria-selected":"model"===this.state.activeTab,className:(0,If.default)("tablinks",{inactive:Vt}),"data-name":"model",id:Ki,onClick:this.activeTab,role:"tab"},ys?"Schema":"Model"))),"example"===this.state.activeTab&&U.default.createElement("div",{"aria-hidden":"example"!==this.state.activeTab,"aria-labelledby":Di,"data-name":"examplePanel",id:uo,role:"tabpanel",tabIndex:"0"},Ot||U.default.createElement(Mi,{value:"(no example available)",getConfigs:Sn})),"model"===this.state.activeTab&&U.default.createElement("div",{"aria-hidden":"example"===this.state.activeTab,"aria-labelledby":Ki,"data-name":"modelPanel",id:to,role:"tabpanel",tabIndex:"0"},U.default.createElement(ui,{schema:At,getComponent:Qe,getConfigs:Sn,specSelectors:et,expandDepth:pi,specPath:jn,includeReadOnly:Fn,includeWriteOnly:tr})))}}]),ft}(U.default.Component),U7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onToggle",function(Vt,Sn){Qe.props.layoutActions&&Qe.props.layoutActions.show(Qe.props.fullPath,Sn)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,At=Qe.getConfigs,Ot=(0,Qe.getComponent)("Model");return this.props.layoutSelectors&&(Je=this.props.layoutSelectors.isShown(this.props.fullPath)),U.default.createElement("div",{className:"model-box"},U.default.createElement(Ot,(0,Fp.default)({},this.props,{getConfigs:At,expanded:Je,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}]),ft}(U.Component),B7=wo(1543),Y7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"getSchemaBasePath",function(){return Qe.props.specSelectors.isOAS3()?["components","schemas"]:["definitions"]}),(0,W.default)((0,wi.default)(Qe),"getCollapsedContent",function(){return" "}),(0,W.default)((0,wi.default)(Qe),"handleToggle",function(Vt,Sn){var jn,Fn;Qe.props.layoutActions.show((0,o.default)(jn=[]).call(jn,(0,Od.default)(Qe.getSchemaBasePath()),[Vt]),Sn),Sn&&Qe.props.specActions.requestResolvedSubtree((0,o.default)(Fn=[]).call(Fn,(0,Od.default)(Qe.getSchemaBasePath()),[Vt]))}),(0,W.default)((0,wi.default)(Qe),"onLoadModels",function(Vt){Vt&&Qe.props.layoutActions.readyToScroll(Qe.getSchemaBasePath(),Vt)}),(0,W.default)((0,wi.default)(Qe),"onLoadModel",function(Vt){if(Vt){var Sn,jn=Vt.getAttribute("data-name");Qe.props.layoutActions.readyToScroll((0,o.default)(Sn=[]).call(Sn,(0,Od.default)(Qe.getSchemaBasePath()),[jn]),Vt)}}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this,et=this.props,At=et.specSelectors,Ot=et.getComponent,Vt=et.layoutSelectors,Sn=et.layoutActions,jn=et.getConfigs,Fn=At.definitions(),tr=jn(),pi=tr.docExpansion,ui=tr.defaultModelsExpandDepth;if(!Fn.size||ui<0)return null;var Mi=this.getSchemaBasePath(),Di=Vt.isShown(Mi,ui>0&&"none"!==pi),uo=At.isOAS3(),Ki=Ot("ModelWrapper"),to=Ot("Collapse"),ys=Ot("ModelCollapse"),Ls=Ot("JumpToPath",!0);return U.default.createElement("section",{className:Di?"models is-open":"models",ref:this.onLoadModels},U.default.createElement("h4",null,U.default.createElement("button",{"aria-expanded":Di,className:"models-control",onClick:function(){return Sn.show(Mi,!Di)}},U.default.createElement("span",null,uo?"Schemas":"Models"),U.default.createElement("svg",{width:"20",height:"20","aria-hidden":"true",focusable:"false"},U.default.createElement("use",{xlinkHref:Di?"#large-arrow-up":"#large-arrow-down"})))),U.default.createElement(to,{isOpened:Di},(0,xe.default)(Je=Fn.entrySeq()).call(Je,function(ta){var Ds,Rs=(0,qa.default)(ta,1)[0],Fs=(0,o.default)(Ds=[]).call(Ds,(0,Od.default)(Mi),[Rs]),Cs=ht.default.List(Fs),Fa=At.specResolvedSubtree(Fs),js=At.specJson().getIn(Fs),Ca=ht.Map.isMap(Fa)?Fa:ht.default.Map(),Ko=ht.Map.isMap(js)?js:ht.default.Map(),na=Ca.get("title")||Ko.get("title")||Rs,vl=Vt.isShown(Fs,!1);vl&&0===Ca.size&&Ko.size>0&&Qe.props.specActions.requestResolvedSubtree(Fs);var ud=U.default.createElement(Ki,{name:Rs,expandDepth:ui,schema:Ca||ht.default.Map(),displayName:na,fullPath:Fs,specPath:Cs,getComponent:Ot,specSelectors:At,getConfigs:jn,layoutSelectors:Vt,layoutActions:Sn,includeReadOnly:!0,includeWriteOnly:!0}),af=U.default.createElement("span",{className:"model-box"},U.default.createElement("span",{className:"model model-title"},na));return U.default.createElement("div",{id:"model-".concat(Rs),className:"model-container",key:"models-section-".concat(Rs),"data-name":Rs,ref:Qe.onLoadModel},U.default.createElement("span",{className:"models-jump-to-path"},U.default.createElement(Ls,{specPath:Cs})),U.default.createElement(ys,{classes:"model-box",collapsedContent:Qe.getCollapsedContent(Rs),onToggle:Qe.handleToggle,title:af,displayName:na,modelName:Rs,specPath:Cs,layoutSelectors:Vt,layoutActions:Sn,hideSelfOnExpand:!0,expanded:ui>0&&vl},ud))}).toArray()))}}]),ft}(U.Component);const Z7=function(bn){var Kt=bn.value,ft=(0,bn.getComponent)("ModelCollapse"),Je=U.default.createElement("span",null,"Array [ ",Kt.count()," ]");return U.default.createElement("span",{className:"prop-enum"},"Enum:",U.default.createElement("br",null),U.default.createElement(ft,{collapsedContent:Je},"[ ",Kt.join(", ")," ]"))};var j7=["schema","name","displayName","isRef","getComponent","getConfigs","depth","onToggle","expanded","specPath"],G7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et,At,Ot=this.props,Vt=Ot.schema,Sn=Ot.name,jn=Ot.displayName,Fn=Ot.isRef,tr=Ot.getComponent,pi=Ot.getConfigs,ui=Ot.depth,Mi=Ot.onToggle,Di=Ot.expanded,uo=Ot.specPath,Ki=(0,c1.default)(Ot,j7),to=Ki.specSelectors,ys=Ki.expandDepth,Ls=Ki.includeReadOnly,ta=Ki.includeWriteOnly,Ds=to.isOAS3;if(!Vt)return null;var Rs=pi().showExtensions,Fs=Vt.get("description"),Cs=Vt.get("properties"),Fa=Vt.get("additionalProperties"),js=Vt.get("title")||jn||Sn,Ca=Vt.get("required"),Ko=(0,g.default)(Vt).call(Vt,function(jd,cc){var Gd;return-1!==(0,Ge.default)(Gd=["maxProperties","minProperties","nullable","example"]).call(Gd,cc)}),na=Vt.get("deprecated"),vl=tr("JumpToPath",!0),ud=tr("Markdown",!0),af=tr("Model"),lf=tr("ModelCollapse"),Lf=tr("Property"),iu=function(){return U.default.createElement("span",{className:"model-jump-to-path"},U.default.createElement(vl,{specPath:uo}))},cd=U.default.createElement("span",null,U.default.createElement("span",null,"{"),"...",U.default.createElement("span",null,"}"),Fn?U.default.createElement(iu,null):""),uc=to.isOAS3()?Vt.get("anyOf"):null,cp=to.isOAS3()?Vt.get("oneOf"):null,Qf=to.isOAS3()?Vt.get("not"):null,L_=js&&U.default.createElement("span",{className:"model-title"},Fn&&Vt.get("$$ref")&&U.default.createElement("span",{className:"model-hint"},Vt.get("$$ref")),U.default.createElement("span",{className:"model-title__text"},js));return U.default.createElement("span",{className:"model"},U.default.createElement(lf,{modelName:Sn,title:L_,onToggle:Mi,expanded:!!Di||ui<=ys,collapsedContent:cd},U.default.createElement("span",{className:"brace-open object"},"{"),Fn?U.default.createElement(iu,null):null,U.default.createElement("span",{className:"inner-object"},U.default.createElement("table",{className:"model"},U.default.createElement("tbody",null,Fs?U.default.createElement("tr",{className:"description"},U.default.createElement("td",null,"description:"),U.default.createElement("td",null,U.default.createElement(ud,{source:Fs}))):null,na?U.default.createElement("tr",{className:"property"},U.default.createElement("td",null,"deprecated:"),U.default.createElement("td",null,"true")):null,Cs&&Cs.size?(0,xe.default)(Je=(0,g.default)(Qe=Cs.entrySeq()).call(Qe,function(jd){var cc=(0,qa.default)(jd,2)[1];return(!cc.get("readOnly")||Ls)&&(!cc.get("writeOnly")||ta)})).call(Je,function(jd){var cc,Gd,uf=(0,qa.default)(jd,2),cf=uf[0],Sh=uf[1],wd=Ds()&&Sh.get("deprecated"),xd=ht.List.isList(Ca)&&Ca.contains(cf),Af=["property-row"];return wd&&Af.push("deprecated"),xd&&Af.push("required"),U.default.createElement("tr",{key:cf,className:Af.join(" ")},U.default.createElement("td",null,cf,xd&&U.default.createElement("span",{className:"star"},"*")),U.default.createElement("td",null,U.default.createElement(af,(0,Fp.default)({key:(0,o.default)(cc=(0,o.default)(Gd="object-".concat(Sn,"-")).call(Gd,cf,"_")).call(cc,Sh)},Ki,{required:xd,getComponent:tr,specPath:uo.push("properties",cf),getConfigs:pi,schema:Sh,depth:ui+1}))))}).toArray():null,Rs?U.default.createElement("tr",null,U.default.createElement("td",null,"\xa0")):null,Rs?(0,xe.default)(et=Vt.entrySeq()).call(et,function(jd){var cc=(0,qa.default)(jd,2),Gd=cc[0],uf=cc[1];if("x-"===(0,Le.default)(Gd).call(Gd,0,2)){var cf=uf?uf.toJS?uf.toJS():uf:null;return U.default.createElement("tr",{key:Gd,className:"extension"},U.default.createElement("td",null,Gd),U.default.createElement("td",null,(0,D.default)(cf)))}}).toArray():null,Fa&&Fa.size?U.default.createElement("tr",null,U.default.createElement("td",null,"< * >:"),U.default.createElement("td",null,U.default.createElement(af,(0,Fp.default)({},Ki,{required:!1,getComponent:tr,specPath:uo.push("additionalProperties"),getConfigs:pi,schema:Fa,depth:ui+1})))):null,uc?U.default.createElement("tr",null,U.default.createElement("td",null,"anyOf ->"),U.default.createElement("td",null,(0,xe.default)(uc).call(uc,function(jd,cc){return U.default.createElement("div",{key:cc},U.default.createElement(af,(0,Fp.default)({},Ki,{required:!1,getComponent:tr,specPath:uo.push("anyOf",cc),getConfigs:pi,schema:jd,depth:ui+1})))}))):null,cp?U.default.createElement("tr",null,U.default.createElement("td",null,"oneOf ->"),U.default.createElement("td",null,(0,xe.default)(cp).call(cp,function(jd,cc){return U.default.createElement("div",{key:cc},U.default.createElement(af,(0,Fp.default)({},Ki,{required:!1,getComponent:tr,specPath:uo.push("oneOf",cc),getConfigs:pi,schema:jd,depth:ui+1})))}))):null,Qf?U.default.createElement("tr",null,U.default.createElement("td",null,"not ->"),U.default.createElement("td",null,U.default.createElement("div",null,U.default.createElement(af,(0,Fp.default)({},Ki,{required:!1,getComponent:tr,specPath:uo.push("not"),getConfigs:pi,schema:Qf,depth:ui+1}))))):null))),U.default.createElement("span",{className:"brace-close"},"}")),Ko.size?(0,xe.default)(At=Ko.entrySeq()).call(At,function(jd){var cc,Gd=(0,qa.default)(jd,2),uf=Gd[0],cf=Gd[1];return U.default.createElement(Lf,{key:(0,o.default)(cc="".concat(uf,"-")).call(cc,cf),propKey:uf,propVal:cf,propClass:"property"})}):null)}}]),ft}(U.Component),V7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe=this.props,et=Qe.getComponent,At=Qe.getConfigs,Ot=Qe.schema,Vt=Qe.depth,Sn=Qe.expandDepth,jn=Qe.name,Fn=Qe.displayName,tr=Qe.specPath,pi=Ot.get("description"),ui=Ot.get("items"),Mi=Ot.get("title")||Fn||jn,Di=(0,g.default)(Ot).call(Ot,function(ta,Ds){var Rs;return-1===(0,Ge.default)(Rs=["type","items","description","$$ref"]).call(Rs,Ds)}),uo=et("Markdown",!0),Ki=et("ModelCollapse"),to=et("Model"),ys=et("Property"),Ls=Mi&&U.default.createElement("span",{className:"model-title"},U.default.createElement("span",{className:"model-title__text"},Mi));return U.default.createElement("span",{className:"model"},U.default.createElement(Ki,{title:Ls,expanded:Vt<=Sn,collapsedContent:"[...]"},"[",Di.size?(0,xe.default)(Je=Di.entrySeq()).call(Je,function(ta){var Ds,Rs=(0,qa.default)(ta,2),Fs=Rs[0],Cs=Rs[1];return U.default.createElement(ys,{key:(0,o.default)(Ds="".concat(Fs,"-")).call(Ds,Cs),propKey:Fs,propVal:Cs,propClass:"property"})}):null,pi?U.default.createElement(uo,{source:pi}):Di.size?U.default.createElement("div",{className:"markdown"}):null,U.default.createElement("span",null,U.default.createElement(to,(0,Fp.default)({},this.props,{getConfigs:At,specPath:tr.push("items"),name:null,schema:ui,required:!1,depth:Vt+1}))),"]"))}}]),ft}(U.Component),HA="property primitive",z7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je,Qe,et,At=this.props,Ot=At.schema,Vt=At.getComponent,jn=At.name,Fn=At.displayName,tr=At.depth,pi=At.expandDepth,ui=(0,At.getConfigs)().showExtensions;if(!Ot||!Ot.get)return U.default.createElement("div",null);var Mi=Ot.get("type"),Di=Ot.get("format"),uo=Ot.get("xml"),Ki=Ot.get("enum"),to=Ot.get("title")||Fn||jn,ys=Ot.get("description"),Ls=(0,Mn.nX)(Ot),ta=(0,g.default)(Ot).call(Ot,function(js,Ca){var Ko;return-1===(0,Ge.default)(Ko=["enum","type","format","description","$$ref"]).call(Ko,Ca)}).filterNot(function(js,Ca){return Ls.has(Ca)}),Ds=Vt("Markdown",!0),Rs=Vt("EnumModel"),Fs=Vt("Property"),Cs=Vt("ModelCollapse"),Fa=to&&U.default.createElement("span",{className:"model-title"},U.default.createElement("span",{className:"model-title__text"},to));return U.default.createElement("span",{className:"model"},U.default.createElement(Cs,{title:Fa,expanded:tr>=pi,collapsedContent:" ",hideSelfOnExpand:pi!==tr},U.default.createElement("span",{className:"prop"},jn&&tr>1&&U.default.createElement("span",{className:"prop-name"},to),U.default.createElement("span",{className:"prop-type"},Mi),Di&&U.default.createElement("span",{className:"prop-format"},"($",Di,")"),ta.size?(0,xe.default)(Je=ta.entrySeq()).call(Je,function(js){var Ca,Ko=(0,qa.default)(js,2),na=Ko[0],vl=Ko[1];return U.default.createElement(Fs,{key:(0,o.default)(Ca="".concat(na,"-")).call(Ca,vl),propKey:na,propVal:vl,propClass:HA})}):null,ui&&Ls.size?(0,xe.default)(Qe=Ls.entrySeq()).call(Qe,function(js){var Ca,Ko=(0,qa.default)(js,2),na=Ko[0],vl=Ko[1];return U.default.createElement(Fs,{key:(0,o.default)(Ca="".concat(na,"-")).call(Ca,vl),propKey:na,propVal:vl,propClass:HA})}):null,ys?U.default.createElement(Ds,{source:ys}):null,uo&&uo.size?U.default.createElement("span",null,U.default.createElement("br",null),U.default.createElement("span",{className:HA},"xml:"),(0,xe.default)(et=uo.entrySeq()).call(et,function(js){var Ca,Ko=(0,qa.default)(js,2),na=Ko[0],vl=Ko[1];return U.default.createElement("span",{key:(0,o.default)(Ca="".concat(na,"-")).call(Ca,vl),className:HA},U.default.createElement("br",null),"\xa0\xa0\xa0",na,": ",String(vl))}).toArray()):null,Ki&&U.default.createElement(Rs,{value:Ki,getComponent:Vt}))))}}]),ft}(U.Component);const W7=function(bn){var Kt=bn.propKey,ft=bn.propVal;return U.default.createElement("span",{className:bn.propClass},U.default.createElement("br",null),Kt,": ",String(ft))};var OP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.onTryoutClick,At=Je.onResetClick,Sn=Je.isOAS3&&Je.hasUserEditedBody;return U.default.createElement("div",{className:Sn?"try-out btn-group":"try-out"},Je.enabled?U.default.createElement("button",{className:"btn try-out__btn cancel",onClick:Je.onCancelClick},"Cancel"):U.default.createElement("button",{className:"btn try-out__btn",onClick:Qe},"Try it out "),Sn&&U.default.createElement("button",{className:"btn try-out__btn reset",onClick:At},"Reset"))}}]),ft}(U.default.Component);(0,W.default)(OP,"defaultProps",{onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1});var wP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,et=Je.isSwagger2,At=Je.isOAS3,Ot=Je.alsoShow;return Je.bypass?U.default.createElement("div",null,this.props.children):et&&At?U.default.createElement("div",{className:"version-pragma"},Ot,U.default.createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},U.default.createElement("div",null,U.default.createElement("h3",null,"Unable to render this definition"),U.default.createElement("p",null,U.default.createElement("code",null,"swagger")," and ",U.default.createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),U.default.createElement("p",null,"Supported version fields are ",U.default.createElement("code",null,"swagger: ",'"2.0"')," and those that match ",U.default.createElement("code",null,"openapi: 3.0.n")," (for example, ",U.default.createElement("code",null,"openapi: 3.0.0"),").")))):et||At?U.default.createElement("div",null,this.props.children):U.default.createElement("div",{className:"version-pragma"},Ot,U.default.createElement("div",{className:"version-pragma__message version-pragma__message--missing"},U.default.createElement("div",null,U.default.createElement("h3",null,"Unable to render this definition"),U.default.createElement("p",null,"The provided definition does not specify a valid version field."),U.default.createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",U.default.createElement("code",null,"swagger: ",'"2.0"')," and those that match ",U.default.createElement("code",null,"openapi: 3.0.n")," (for example, ",U.default.createElement("code",null,"openapi: 3.0.0"),")."))))}}]),ft}(U.default.PureComponent);(0,W.default)(wP,"defaultProps",{alsoShow:null,children:null,bypass:!1});const J7=function(bn){return U.default.createElement("small",null,U.default.createElement("pre",{className:"version"}," ",bn.version," "))},Q7=function(bn){var Kt=bn.enabled,Je=bn.text;return U.default.createElement("a",{className:"nostyle",onClick:Kt?function(Qe){return Qe.preventDefault()}:null,href:Kt?"#/".concat(bn.path):null},U.default.createElement("span",null,Je))},X7=function(){return U.default.createElement("div",null,U.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",className:"svg-assets"},U.default.createElement("defs",null,U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"unlocked"},U.default.createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"})),U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"locked"},U.default.createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"})),U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"close"},U.default.createElement("path",{d:"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"})),U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow"},U.default.createElement("path",{d:"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"})),U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-down"},U.default.createElement("path",{d:"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"})),U.default.createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-up"},U.default.createElement("path",{d:"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z"})),U.default.createElement("symbol",{viewBox:"0 0 24 24",id:"jump-to"},U.default.createElement("path",{d:"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"})),U.default.createElement("symbol",{viewBox:"0 0 24 24",id:"expand"},U.default.createElement("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"})))))};var K7=wo(5466),q7=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.errSelectors,et=Je.specSelectors,At=Je.getComponent,Ot=At("SvgAssets"),Vt=At("InfoContainer",!0),Sn=At("VersionPragmaFilter"),jn=At("operations",!0),Fn=At("Models",!0),tr=At("Row"),pi=At("Col"),ui=At("errors",!0),Mi=At("ServersContainer",!0),Di=At("SchemesContainer",!0),uo=At("AuthorizeBtnContainer",!0),Ki=At("FilterContainer",!0),to=et.isSwagger2(),ys=et.isOAS3(),Ls=!et.specStr(),ta=et.loadingStatus(),Ds=null;if("loading"===ta&&(Ds=U.default.createElement("div",{className:"info"},U.default.createElement("div",{className:"loading-container"},U.default.createElement("div",{className:"loading"})))),"failed"===ta&&(Ds=U.default.createElement("div",{className:"info"},U.default.createElement("div",{className:"loading-container"},U.default.createElement("h4",{className:"title"},"Failed to load API definition."),U.default.createElement(ui,null)))),"failedConfig"===ta){var Rs=Qe.lastError(),Fs=Rs?Rs.get("message"):"";Ds=U.default.createElement("div",{className:"info failed-config"},U.default.createElement("div",{className:"loading-container"},U.default.createElement("h4",{className:"title"},"Failed to load remote configuration."),U.default.createElement("p",null,Fs)))}if(!Ds&&Ls&&(Ds=U.default.createElement("h4",null,"No API definition provided.")),Ds)return U.default.createElement("div",{className:"swagger-ui"},U.default.createElement("div",{className:"loading-container"},Ds));var Cs=et.servers(),Fa=et.schemes(),js=Cs&&Cs.size,Ca=Fa&&Fa.size,Ko=!!et.securityDefinitions();return U.default.createElement("div",{className:"swagger-ui"},U.default.createElement(Ot,null),U.default.createElement(Sn,{isSwagger2:to,isOAS3:ys,alsoShow:U.default.createElement(ui,null)},U.default.createElement(ui,null),U.default.createElement(tr,{className:"information-container"},U.default.createElement(pi,{mobile:12},U.default.createElement(Vt,null))),js||Ca||Ko?U.default.createElement("div",{className:"scheme-container"},U.default.createElement(pi,{className:"schemes wrapper",mobile:12},js?U.default.createElement(Mi,null):null,Ca?U.default.createElement(Di,null):null,Ko?U.default.createElement(uo,null):null)):null,U.default.createElement(Ki,null),U.default.createElement(tr,null,U.default.createElement(pi,{mobile:12,desktop:12},U.default.createElement(jn,null))),U.default.createElement(tr,null,U.default.createElement(pi,{mobile:12,desktop:12},U.default.createElement(Fn,null)))))}}]),ft}(U.default.Component);const xP=(bn=>{var Kt={};return wo.d(Kt,bn),Kt})({default:()=>JF()});var P0={value:"",onChange:function(){},schema:{},keyName:"",required:!1,errors:(0,ht.List)()},DP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){return(0,re.default)(this,ft),Kt.apply(this,arguments)}return(0,ie.default)(ft,[{key:"componentDidMount",value:function(){var Je=this.props,Qe=Je.dispatchInitialValue,At=Je.onChange;Qe?At(Je.value):!1===Qe&&At("")}},{key:"render",value:function(){var Je,Qe=this.props,et=Qe.schema,At=Qe.errors,Ot=Qe.value,Vt=Qe.onChange,Sn=Qe.getComponent,jn=Qe.fn,Fn=Qe.disabled,tr=et&&et.get?et.get("format"):null,pi=et&&et.get?et.get("type"):null,Mi=pi?Sn(tr?(0,o.default)(Je="JsonSchema_".concat(pi,"_")).call(Je,tr):"JsonSchema_".concat(pi),!1,{failSilently:!0}):Sn("JsonSchema_string");return Mi||(Mi=Sn("JsonSchema_string")),U.default.createElement(Mi,(0,Fp.default)({},this.props,{errors:At,fn:jn,getComponent:Sn,value:Ot,onChange:Vt,schema:et,disabled:Fn}))}}]),ft}(U.Component);(0,W.default)(DP,"defaultProps",P0);var RP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onChange",function(Vt){var Sn=Qe.props.schema&&"file"===Qe.props.schema.get("type")?Vt.target.files[0]:Vt.target.value;Qe.props.onChange(Sn,Qe.props.keyName)}),(0,W.default)((0,wi.default)(Qe),"onEnumChange",function(Vt){return Qe.props.onChange(Vt)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.getComponent,et=Je.value,At=Je.schema,Ot=Je.errors,Vt=Je.required,Sn=Je.description,jn=Je.disabled,Fn=At&&At.get?At.get("enum"):null,tr=At&&At.get?At.get("format"):null,pi=At&&At.get?At.get("type"):null,ui=At&&At.get?At.get("in"):null;if(et||(et=""),Ot=Ot.toJS?Ot.toJS():[],Fn){var Mi=Qe("Select");return U.default.createElement(Mi,{className:Ot.length?"invalid":"",title:Ot.length?Ot:"",allowedValues:Fn,value:et,allowEmptyValue:!Vt,disabled:jn,onChange:this.onEnumChange})}var Di=jn||ui&&"formData"===ui&&!("FormData"in window),uo=Qe("Input");return pi&&"file"===pi?U.default.createElement(uo,{type:"file",className:Ot.length?"invalid":"",title:Ot.length?Ot:"",onChange:this.onChange,disabled:Di}):U.default.createElement(xP.default,{type:tr&&"password"===tr?"password":"text",className:Ot.length?"invalid":"",title:Ot.length?Ot:"",value:et,minLength:0,debounceTimeout:350,placeholder:Sn,onChange:this.onChange,disabled:Di})}}]),ft}(U.Component);(0,W.default)(RP,"defaultProps",P0);var NP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(Je,Qe){var et;return(0,re.default)(this,ft),et=Kt.call(this,Je,Qe),(0,W.default)((0,wi.default)(et),"onChange",function(){et.props.onChange(et.state.value)}),(0,W.default)((0,wi.default)(et),"onItemChange",function(At,Ot){et.setState(function(Vt){return{value:Vt.value.set(Ot,At)}},et.onChange)}),(0,W.default)((0,wi.default)(et),"removeItem",function(At){et.setState(function(Ot){return{value:Ot.value.delete(At)}},et.onChange)}),(0,W.default)((0,wi.default)(et),"addItem",function(){var At=cR(et.state.value);et.setState(function(){return{value:At.push((0,Mn.xi)(et.state.schema.get("items"),!1,{includeWriteOnly:!0}))}},et.onChange)}),(0,W.default)((0,wi.default)(et),"onEnumChange",function(At){et.setState(function(){return{value:At}},et.onChange)}),et.state={value:cR(Je.value),schema:Je.schema},et}return(0,ie.default)(ft,[{key:"UNSAFE_componentWillReceiveProps",value:function(Je){var Qe=cR(Je.value);Qe!==this.state.value&&this.setState({value:Qe}),Je.schema!==this.state.schema&&this.setState({schema:Je.schema})}},{key:"render",value:function(){var Je,Qe=this,et=this.props,At=et.getComponent,Ot=et.required,Vt=et.schema,Sn=et.errors,jn=et.fn,Fn=et.disabled;Sn=Sn.toJS?Sn.toJS():(0,Re.default)(Sn)?Sn:[];var tr,pi,ui=(0,g.default)(Sn).call(Sn,function(Cs){return"string"==typeof Cs}),Mi=(0,xe.default)(Je=(0,g.default)(Sn).call(Sn,function(Cs){return void 0!==Cs.needRemove})).call(Je,function(Cs){return Cs.error}),Di=this.state.value,uo=!!(Di&&Di.count&&Di.count()>0),Ki=Vt.getIn(["items","enum"]),to=Vt.getIn(["items","type"]),ys=Vt.getIn(["items","format"]),Ls=Vt.get("items"),ta=!1,Ds="file"===to||"string"===to&&"binary"===ys;if(to&&ys?tr=At((0,o.default)(pi="JsonSchema_".concat(to,"_")).call(pi,ys)):"boolean"!==to&&"array"!==to&&"object"!==to||(tr=At("JsonSchema_".concat(to))),tr||Ds||(ta=!0),Ki){var Rs=At("Select");return U.default.createElement(Rs,{className:Sn.length?"invalid":"",title:Sn.length?Sn:"",multiple:!0,value:Di,disabled:Fn,allowedValues:Ki,allowEmptyValue:!Ot,onChange:this.onEnumChange})}var Fs=At("Button");return U.default.createElement("div",{className:"json-schema-array"},uo?(0,xe.default)(Di).call(Di,function(Cs,Fa){var js,Ca=(0,ht.fromJS)((0,Od.default)((0,xe.default)(js=(0,g.default)(Sn).call(Sn,function(Ko){return Ko.index===Fa})).call(js,function(Ko){return Ko.error})));return U.default.createElement("div",{key:Fa,className:"json-schema-form-item"},Ds?U.default.createElement(uR,{value:Cs,onChange:function(Ko){return Qe.onItemChange(Ko,Fa)},disabled:Fn,errors:Ca,getComponent:At}):ta?U.default.createElement(lR,{value:Cs,onChange:function(Ko){return Qe.onItemChange(Ko,Fa)},disabled:Fn,errors:Ca}):U.default.createElement(tr,(0,Fp.default)({},Qe.props,{value:Cs,onChange:function(Ko){return Qe.onItemChange(Ko,Fa)},disabled:Fn,errors:Ca,schema:Ls,getComponent:At,fn:jn})),Fn?null:U.default.createElement(Fs,{className:"btn btn-sm json-schema-form-item-remove ".concat(Mi.length?"invalid":null),title:Mi.length?Mi:"",onClick:function(){return Qe.removeItem(Fa)}}," - "))}):null,Fn?null:U.default.createElement(Fs,{className:"btn btn-sm json-schema-form-item-add ".concat(ui.length?"invalid":null),title:ui.length?ui:"",onClick:this.addItem},"Add ",to?"".concat(to," "):"","item"))}}]),ft}(U.PureComponent);(0,W.default)(NP,"defaultProps",P0);var lR=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onChange",function(Vt){Qe.props.onChange(Vt.target.value,Qe.props.keyName)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.value,et=Je.errors,At=Je.description,Ot=Je.disabled;return Qe||(Qe=""),et=et.toJS?et.toJS():[],U.default.createElement(xP.default,{type:"text",className:et.length?"invalid":"",title:et.length?et:"",value:Qe,minLength:0,debounceTimeout:350,placeholder:At,onChange:this.onChange,disabled:Ot})}}]),ft}(U.Component);(0,W.default)(lR,"defaultProps",P0);var uR=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onFileChange",function(Vt){Qe.props.onChange(Vt.target.files[0],Qe.props.keyName)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,et=Je.errors,At=Je.disabled,Ot=(0,Je.getComponent)("Input"),Vt=At||!("FormData"in window);return U.default.createElement(Ot,{type:"file",className:et.length?"invalid":"",title:et.length?et:"",onChange:this.onFileChange,disabled:Vt})}}]),ft}(U.Component);(0,W.default)(uR,"defaultProps",P0);var PP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je,Qe;(0,re.default)(this,ft);for(var et=arguments.length,At=new Array(et),Ot=0;Ot<et;Ot++)At[Ot]=arguments[Ot];return Qe=Kt.call.apply(Kt,(0,o.default)(Je=[this]).call(Je,At)),(0,W.default)((0,wi.default)(Qe),"onEnumChange",function(Vt){return Qe.props.onChange(Vt)}),Qe}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,Qe=Je.getComponent,et=Je.value,At=Je.errors,Ot=Je.schema,Vt=Je.required,Sn=Je.disabled;At=At.toJS?At.toJS():[];var jn=Ot&&Ot.get?Ot.get("enum"):null,Fn=!jn||!Vt,tr=!jn&&(0,ht.fromJS)(["true","false"]),pi=Qe("Select");return U.default.createElement(pi,{className:At.length?"invalid":"",title:At.length?At:"",value:String(et),disabled:Sn,allowedValues:jn||tr,allowEmptyValue:Fn,onChange:this.onEnumChange})}}]),ft}(U.Component);(0,W.default)(PP,"defaultProps",P0);var e9=function(bn){return(0,xe.default)(bn).call(bn,function(Kt){var ft,Qe="string"==typeof Kt?Kt:"string"==typeof Kt.error?Kt.error:null;if(!(void 0!==Kt.propKey?Kt.propKey:Kt.index)&&Qe)return Qe;for(var et=Kt.error,At="/".concat(Kt.propKey);"object"===(0,t.default)(et);){var Ot=void 0!==et.propKey?et.propKey:et.index;if(void 0===Ot||(At+="/".concat(Ot),!et.error))break;et=et.error}return(0,o.default)(ft="".concat(At,": ")).call(ft,et)})},IP=function(bn){(0,lo.default)(ft,bn);var Kt=(0,go.default)(ft);function ft(){var Je;return(0,re.default)(this,ft),Je=Kt.call(this),(0,W.default)((0,wi.default)(Je),"onChange",function(Qe){Je.props.onChange(Qe)}),(0,W.default)((0,wi.default)(Je),"handleOnChange",function(Qe){Je.onChange(Qe.target.value)}),Je}return(0,ie.default)(ft,[{key:"render",value:function(){var Je=this.props,et=Je.value,At=Je.errors,Ot=Je.disabled,Vt=(0,Je.getComponent)("TextArea");return At=At.toJS?At.toJS():(0,Re.default)(At)?At:[],U.default.createElement("div",null,U.default.createElement(Vt,{className:(0,If.default)({invalid:At.length}),title:At.length?e9(At).join(", "):"",value:(0,Mn.Pz)(et),disabled:Ot,onChange:this.handleOnChange}))}}]),ft}(U.PureComponent);function cR(bn){return ht.List.isList(bn)?bn:(0,Re.default)(bn)?(0,ht.fromJS)(bn):(0,ht.List)()}function t9(){return[qi.default,qr.default,Jr.default,ji.default,Yr.default,Qn.default,Tn.default,ii.default,{components:{App:Bn,authorizationPopup:_r,authorizeBtn:Gr,AuthorizeBtnContainer:xi,authorizeOperationBtn:Zs,auths:jo,AuthItem:sl,authError:ml,oauth2:Ip,apiKeyAuth:nu,basicAuth:Xu,clear:Yi,liveResponse:eo,InitializedInput:C7,info:x7,InfoContainer:D7,JumpToPath:R7,onlineValidatorBadge:Lo.Z,operations:us,operation:Zi,OperationSummary:is,OperationSummaryMethod:hu,OperationSummaryPath:Ci,highlightCode:I_,responses:l1,response:Em,ResponseExtension:hg,responseBody:RA,parameters:_S,parameterRow:LA,execute:kA,headers:za,errors:Fu,contentType:N0,overview:E7,footer:N7,FilterContainer:P7,ParamBody:MP,curl:L7,schemes:F7,SchemesContainer:k7,modelExample:H7,ModelWrapper:U7,ModelCollapse:AP,Model:B7.Z,Models:Y7,EnumModel:Z7,ObjectModel:G7,ArrayModel:V7,PrimitiveModel:z7,Property:W7,TryItOutButton:OP,Markdown:K7.Z,BaseLayout:q7,VersionPragmaFilter:wP,VersionStamp:J7,OperationExt:ja,OperationExtRow:Ku,ParameterExt:PA,ParameterIncludeEmpty:gS,OperationTag:as,OperationContainer:Et,DeepLink:Q7,InfoUrl:w7,InfoBasePath:M7,SvgAssets:X7,Example:Pf,ExamplesSelect:qc,ExamplesSelectValueRetainer:Eh}},{components:n},An.default,{components:s},hn.default,Ri.default,Zo.default,bo.default,Ys.default,Ui.default,(0,Ws.default)()]}(0,W.default)(IP,"defaultProps",P0);var n9=wo(7451);function LP(){return[t9,n9.default]}var r9=wo(5308);function dR(bn){var Kt,ft,Je;Dn.Z.versions=Dn.Z.versions||{},Dn.Z.versions.swaggerUi={version:"4.12.0",gitRevision:"ga7e23b5",gitDirty:!0,buildTimestamp:"Fri, 03 Jun 2022 17:07:59 GMT"};var Qe={dom_id:null,domNode:null,spec:{},url:"",urls:null,layout:"BaseLayout",docExpansion:"list",maxDisplayedTags:null,filter:null,validatorUrl:"https://validator.swagger.io/validator",oauth2RedirectUrl:(0,o.default)(Kt=(0,o.default)(ft="".concat(window.location.protocol,"//")).call(ft,window.location.host)).call(Kt,window.location.pathname.substring(0,(0,c.default)(Je=window.location.pathname).call(Je,"/")),"/oauth2-redirect.html"),persistAuthorization:!1,configs:{},custom:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:function(ui){return ui},responseInterceptor:function(ui){return ui},showMutatedRequest:!0,defaultModelRendering:"example",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:void 0,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:"cURL (bash)",syntax:"bash"},curl_powershell:{title:"cURL (PowerShell)",syntax:"powershell"},curl_cmd:{title:"cURL (CMD)",syntax:"bash"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:["get","put","post","delete","options","head","patch","trace"],queryConfigEnabled:!1,presets:[LP],plugins:[],pluginsOptions:{pluginLoadType:"legacy"},initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:"agate"}},et=bn.queryConfigEnabled?(0,Mn.UG)():{},At=bn.domNode;delete bn.domNode;var Ot=j()({},Qe,bn,et),Vt={system:{configs:Ot.configs},plugins:Ot.presets,pluginsOptions:Ot.pluginsOptions,state:j()({layout:{layout:Ot.layout,filter:(0,g.default)(Ot)},spec:{spec:"",url:Ot.url},requestSnippets:Ot.requestSnippets},Ot.initialState)};if(Ot.initialState)for(var Sn in Ot.initialState)Object.prototype.hasOwnProperty.call(Ot.initialState,Sn)&&void 0===Ot.initialState[Sn]&&delete Vt.state[Sn];var jn=new ur(Vt);jn.register([Ot.plugins,function(){return{fn:Ot.fn,components:Ot.components,state:Ot.state}}]);var Fn=jn.getSystem(),tr=function(ui){var Mi=Fn.specSelectors.getLocalConfig?Fn.specSelectors.getLocalConfig():{},Di=j()({},Mi,Ot,ui||{},et);if(At&&(Di.domNode=At),jn.setConfigs(Di),Fn.configsActions.loaded(),null!==ui&&(!et.url&&"object"===(0,t.default)(Di.spec)&&(0,C.default)(Di.spec).length?(Fn.specActions.updateUrl(""),Fn.specActions.updateLoadingStatus("success"),Fn.specActions.updateSpec((0,D.default)(Di.spec))):Fn.specActions.download&&Di.url&&!Di.urls&&(Fn.specActions.updateUrl(Di.url),Fn.specActions.download(Di.url))),Di.domNode)Fn.render(Di.domNode,"App");else if(Di.dom_id){var uo=document.querySelector(Di.dom_id);Fn.render(uo,"App")}else null===Di.dom_id||null===Di.domNode||console.error("Skipped rendering: no `dom_id` or `domNode` was specified");return Fn},pi=et.config||Ot.configUrl;return pi&&Fn.specActions&&Fn.specActions.getConfigByUrl?(Fn.specActions.getConfigByUrl({url:pi,loadRemoteConfig:!0,requestInterceptor:Ot.requestInterceptor,responseInterceptor:Ot.responseInterceptor},tr),Fn):tr()}dR.presets={apis:LP},dR.plugins=r9.default;const l9=dR})();var XF=dP.Z;let KF=(()=>{class n{ngOnInit(){XF({url:window.location.origin+"/docs/openapi.json",dom_id:"#swagger-ui",layout:"BaseLayout"})}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-api-docs"]],decls:1,vars:0,consts:[["id","swagger-ui",1,"apiDocs"]],template:function(t,o){1&t&&e._UZ(0,"div",0)},styles:[".apiDocs[_ngcontent-%COMP%]{background:#f8f9fa;font-size:18px!important;margin-top:-48px!important}"]}),n})();var fP=i(45510);let pP=(()=>{class n{constructor(t,o){this.router=t,this.authStorageService=o}canActivate(t,o){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"],{queryParams:{returnUrl:o.url}}),1))}canActivateChild(t,o){return this.canActivate(t,o)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(Yo.F0),e.LFG(_t.j))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var oR=i(4222),hS=i(54462);let hP=(()=>{class n{constructor(t){this.authStorageService=t}canActivate(){if(!this.authStorageService.isSSO())return!0;throw new Nl.mM}canActivateChild(){return this.canActivate()}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(_t.j))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),_P=(()=>{class n extends z1{resolve(t){const o=[],c=t.queryParams.fromLink||null;let g="";switch(c){case"/monitor":g="Monitors";break;case"/hosts":g="Hosts"}return o.push({text:"Cluster",path:null}),o.push({text:g,path:c}),o.push({text:"Performance Counters",path:""}),o}}return n.\u0275fac=function(){let s;return function(o){return(s||(s=e.n5z(n)))(o||n)}}(),n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})(),gP=(()=>{class n extends z1{resolve(t){const o=t.params.name;return[{text:`${Ar().startCase(o)}/Edit`,path:o}]}}return n.\u0275fac=function(){let s;return function(o){return(s||(s=e.n5z(n)))(o||n)}}(),n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})();const qF=[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"api-docs",component:KF},{path:"",component:MM,canActivate:[fP.P,pP],canActivateChild:[fP.P,pP],children:[{path:"dashboard",component:uC},{path:"error",component:aw},{path:"expand-cluster",component:pv,canActivate:[hS.P],data:{moduleStatusGuardConfig:{uiApiPath:"orchestrator",redirectTo:"dashboard",backend:"cephadm"},breadcrumbs:"Expand Cluster"}},{path:"hosts",component:sh,data:{breadcrumbs:"Cluster/Hosts"},children:[{path:ki.MQ.ADD,component:vt,outlet:"modal"}]},{path:"monitor",component:b_,data:{breadcrumbs:"Cluster/Monitors"}},{path:"services",component:qd,canActivate:[hS.P],data:{moduleStatusGuardConfig:{uiApiPath:"orchestrator",redirectTo:"error",section:"orch",section_info:"Orchestrator",header:"Orchestrator is not available"},breadcrumbs:"Cluster/Services"},children:[{path:ki.MQ.CREATE,component:av,outlet:"modal"},{path:`${ki.MQ.EDIT}/:type/:name`,component:av,outlet:"modal"}]},{path:"inventory",canActivate:[hS.P],component:X,data:{moduleStatusGuardConfig:{uiApiPath:"orchestrator",redirectTo:"error",section:"orch",section_info:"Orchestrator",header:"Orchestrator is not available"},breadcrumbs:"Cluster/Physical Disks"}},{path:"osd",data:{breadcrumbs:"Cluster/OSDs"},children:[{path:"",component:hy},{path:ki.MQ.CREATE,component:a_,data:{breadcrumbs:ki.Qn.CREATE}}]},{path:"configuration",data:{breadcrumbs:"Cluster/Configuration"},children:[{path:"",component:pf},{path:"edit/:name",component:Qa,data:{breadcrumbs:ki.Qn.EDIT}}]},{path:"crush-map",component:Og,data:{breadcrumbs:"Cluster/CRUSH map"}},{path:"logs",component:Zd,data:{breadcrumbs:"Cluster/Logs"}},{path:"telemetry",component:sE,data:{breadcrumbs:"Telemetry configuration"}},{path:"monitoring",data:{breadcrumbs:"Cluster/Monitoring"},children:[{path:"",redirectTo:"active-alerts",pathMatch:"full"},{path:"active-alerts",data:{breadcrumbs:"Active Alerts"},component:oo},{path:"alerts",data:{breadcrumbs:"Alerts"},component:Ba},{path:"silences",data:{breadcrumbs:"Silences"},children:[{path:"",component:_R},{path:ki.MQ.CREATE,component:vy,data:{breadcrumbs:`${ki.Qn.CREATE} Silence`}},{path:`${ki.MQ.CREATE}/:id`,component:vy,data:{breadcrumbs:ki.Qn.CREATE}},{path:`${ki.MQ.EDIT}/:id`,component:vy,data:{breadcrumbs:ki.Qn.EDIT}},{path:`${ki.MQ.RECREATE}/:id`,component:vy,data:{breadcrumbs:ki.Qn.RECREATE}}]}]},{path:"perf_counters/:type/:id",component:VO,data:{breadcrumbs:_P}},{path:"mgr-modules",data:{breadcrumbs:"Cluster/Manager Modules"},children:[{path:"",component:Gu},{path:"edit/:name",component:bv,data:{breadcrumbs:gP}}]},{path:"pool",data:{breadcrumbs:"Pools"},loadChildren:()=>Promise.all([i.e(483),i.e(585)]).then(i.bind(i,24585)).then(n=>n.RoutedPoolModule)},{path:"block",data:{breadcrumbs:!0,text:"Block",path:null},loadChildren:()=>i.e(483).then(i.bind(i,70483)).then(n=>n.RoutedBlockModule)},{path:"cephfs",component:ka,canActivate:[oR.T],data:{breadcrumbs:"File Systems"}},{path:"rgw",canActivateChild:[oR.T,hS.P],data:{moduleStatusGuardConfig:{uiApiPath:"rgw",redirectTo:"error",section:"rgw",section_info:"Object Gateway",header:"The Object Gateway Service is not configured"},breadcrumbs:!0,text:"Object Gateway",path:null},loadChildren:()=>i.e(281).then(i.bind(i,59281)).then(n=>n.RoutedRgwModule)},{path:"user-management",data:{breadcrumbs:"User management",path:null},loadChildren:()=>Promise.resolve().then(i.bind(i,49552)).then(n=>n.RoutedAuthModule)},{path:"user-profile",data:{breadcrumbs:"User profile",path:null},children:[{path:ki.MQ.EDIT,component:UC,canActivate:[hP],data:{breadcrumbs:ki.Qn.EDIT}}]},{path:"nfs",canActivateChild:[oR.T,hS.P],data:{moduleStatusGuardConfig:{uiApiPath:"nfs-ganesha",redirectTo:"error",section:"nfs-ganesha",section_info:"NFS GANESHA",header:"NFS-Ganesha is not configured"},breadcrumbs:"NFS"},children:[{path:"",component:LC},{path:ki.MQ.CREATE,component:OE,data:{breadcrumbs:ki.Qn.CREATE}},{path:`${ki.MQ.EDIT}/:cluster_id/:export_id`,component:OE,data:{breadcrumbs:ki.Qn.EDIT}}]}]},{path:"",component:dw,children:[{path:"login",component:tw},{path:"login-change-password",component:KO,canActivate:[hP]}]},{path:"",component:zC,children:[{path:"**",redirectTo:"/error"}]}];let DA=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({providers:[gP,_P],imports:[[Yo.Bz.forRoot(qF,{useHash:!0,preloadingStrategy:Yo.wm,relativeLinkResolution:"legacy"})],Yo.Bz]}),n})(),e7=(()=>{class n{constructor(t,o){t.autoClose="outside",t.container="body",t.placement="bottom",o.container="body"}}return n.\u0275fac=function(t){return new(t||n)(e.Y36(lt.AX),e.Y36(lt.xI))},n.\u0275cmp=e.Xpm({type:n,selectors:[["cd-root"]],decls:1,vars:0,template:function(t,o){1&t&&e._UZ(0,"router-outlet")},directives:[Yo.lC],styles:[""]}),n})();var bm=i(44466);let t7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[_.ez,bm.m,DA,Ho.m9,Il.xc,lt.Oz]]}),n})();var mP=i(66265),vP=i(370);let n7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[DA,_.ez,vn.UX,bm.m,lt.Oz]]}),n})(),r7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({providers:[lt.Kz],imports:[[_.ez,mP.B,lt.Oz,bm.m,Yo.Bz,vn.u5,vn.UX,lt.HK,n7,lt.ZS,lt.UL,Il.xc,vP.t,lt.M,lt.dT,lt.XC,fr.b]]}),n})(),i7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[vP.t,_.ez,lt.Oz,bm.m,Ho.m9,Yo.Bz,lt.dT,vn.u5,vn.UX]]}),n})(),o7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[vn.UX,Yo.Bz,bm.m,lt.Oz,_.ez,lt.ZS,lt.HK]]}),n})(),s7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[_.ez,r7,i7,mP.B,t7,o7,bm.m]]}),n})();var a7=i(49552);let yP=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[_.ez,a7.AuthModule,lt.lQ,lt.XC,DA,bm.m,aM.t,Yo.Bz]]}),n})(),l7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n}),n.\u0275inj=e.cJS({imports:[[Vg.forRoot(),_.ez,yP,lt.XC,Yo.Bz,bm.m],yP]}),n})(),u7=(()=>{class n{constructor(t,o,c){this.router=t,this.authStorageService=o,this.notificationService=c}intercept(t,o){const c=t.headers.get("Accept");let g;return g=c&&c.startsWith("application/vnd.ceph.api.v")?t.clone():t.clone({setHeaders:{Accept:Rd.T.cdVersionHeader("1","0")}}),o.handle(g).pipe((0,Pv.K)(C=>{if(C instanceof y.UA){let D;switch(C.status){case 400:const P=new cl.R,j=C.error.task;Ar().isPlainObject(j)?(j.metadata.component=j.metadata.component||C.error.component,P.name=j.name,P.metadata=j.metadata):P.metadata=C.error,P.success=!1,P.exception=C.error,D=this.notificationService.notifyTask(P);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["error"],{state:{message:"Sorry, you don\u2019t have permission to view this page or resource.",header:"Access Denied",icon:"fa fa-lock",source:"forbidden"}});break;default:D=this.prepareNotification(C)}C.preventDefault=()=>{this.notificationService.cancel(D)},C.ignoreStatusCode=function(P){this.status===P&&this.preventDefault()}}return(0,yE._)(C)}))}prepareNotification(t){return this.notificationService.show(()=>{let o="";return Ar().isPlainObject(t.error)&&Ar().isString(t.error.detail)?o=t.error.detail:Ar().isString(t.error)?o=t.error:Ar().isString(t.message)&&(o=t.message),new wv.T(_a.k.error,`${t.status} - ${t.statusText}`,o,void 0,t.application)})}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(Yo.F0),e.LFG(_t.j),e.LFG(ll.g))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),c7=(()=>{class n{constructor(t){this.http=t}jsError(t,o,c){return this.http.post("ui-api/logging/js-error",{url:t,message:o,stack:c})}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(y.eN))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),d7=(()=>{class n{constructor(t,o){this.injector=t,this.router=o}handleError(t){const o=this.injector.get(c7),c=window.location.href;if(o.jsError(c,t&&t.message,t&&t.stack).subscribe(),!(t.rejection instanceof Nl.s9))throw t;setTimeout(()=>this.router.navigate(["error"],{state:{message:t.rejection.message,header:t.rejection.header,icon:t.rejection.icon}}),50)}}return n.\u0275fac=function(t){return new(t||n)(e.LFG(e.zs3),e.LFG(Yo.F0))},n.\u0275prov=e.Yz7({token:n,factory:n.\u0275fac}),n})(),f7=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.oAB({type:n,bootstrap:[e7]}),n.\u0275inj=e.cJS({providers:[{provide:e.qLn,useClass:d7},{provide:y.TP,useClass:u7,multi:!0},{provide:_.mr,useValue:"/"+(window.location.pathname.split("/",1)[1]||"")}],imports:[[y.JF,f.b2,Gs,Hu.Rh.forRoot({positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}),DA,l7,bm.m,s7],bm.m]}),n})();WC.N.production&&(0,e.G48)(),f.q6().bootstrapModule(f7).then(n=>{if((0,e.X6Q)()){const t=n.injector.get(e.z2F).components[0];(0,f.HJ)(t)}}).catch(n=>console.log(n))},77340:(v,S,i)=>{var r=i(25591),u=i(60802),p=TypeError;v.exports=function(f){if(r(f))return f;throw p(u(f)+" is not a function")}},95143:(v,S,i)=>{var r=i(25591),u=String,p=TypeError;v.exports=function(f){if("object"==typeof f||r(f))return f;throw p("Can't set "+u(f)+" as a prototype")}},24094:(v,S,i)=>{var r=i(84563),u=i(38724),p=i(52975).f,f=r("unscopables"),e=Array.prototype;null==e[f]&&p(e,f,{configurable:!0,value:u(null)}),v.exports=function(_){e[f][_]=!0}},27678:(v,S,i)=>{"use strict";var r=i(64487).charAt;v.exports=function(u,p,f){return p+(f?r(u,p).length:1)}},86063:(v,S,i)=>{var r=i(93290),u=TypeError;v.exports=function(p,f){if(r(f,p))return p;throw u("Incorrect invocation")}},21099:(v,S,i)=>{var r=i(60726),u=String,p=TypeError;v.exports=function(f){if(r(f))return f;throw p(u(f)+" is not an object")}},93241:(v,S,i)=>{var r=i(8597);v.exports=r(function(){if("function"==typeof ArrayBuffer){var u=new ArrayBuffer(8);Object.isExtensible(u)&&Object.defineProperty(u,"a",{value:8})}})},70452:(v,S,i)=>{var r=i(8643),u=i(20222),p=i(24196),f=function(e){return function(_,y,T){var Z,M=r(_),R=p(M),F=u(T,R);if(e&&y!=y){for(;R>F;)if((Z=M[F++])!=Z)return!0}else for(;R>F;F++)if((e||F in M)&&M[F]===y)return e||F||0;return!e&&-1}};v.exports={includes:f(!0),indexOf:f(!1)}},94115:(v,S,i)=>{var r=i(29727),u=i(47964),p=i(56169),f=i(16174),e=i(24196),_=i(62889),y=u([].push),T=function(M){var R=1==M,F=2==M,Z=3==M,J=4==M,Q=6==M,ee=7==M,ue=5==M||Q;return function(ae,$,se,ve){for(var Ye,je,oe=f(ae),he=p(oe),me=r($,se),Oe=e(he),ce=0,dt=ve||_,ze=R?dt(ae,Oe):F||ee?dt(ae,0):void 0;Oe>ce;ce++)if((ue||ce in he)&&(je=me(Ye=he[ce],ce,oe),M))if(R)ze[ce]=je;else if(je)switch(M){case 3:return!0;case 5:return Ye;case 6:return ce;case 2:y(ze,Ye)}else switch(M){case 4:return!1;case 7:y(ze,Ye)}return Q?-1:Z||J?J:ze}};v.exports={forEach:T(0),map:T(1),filter:T(2),some:T(3),every:T(4),find:T(5),findIndex:T(6),filterReject:T(7)}},37394:(v,S,i)=>{var r=i(8597),u=i(84563),p=i(17189),f=u("species");v.exports=function(e){return p>=51||!r(function(){var _=[];return(_.constructor={})[f]=function(){return{foo:1}},1!==_[e](Boolean).foo})}},47051:(v,S,i)=>{"use strict";var r=i(8597);v.exports=function(u,p){var f=[][u];return!!f&&r(function(){f.call(null,p||function(){return 1},1)})}},14716:(v,S,i)=>{var r=i(77340),u=i(16174),p=i(56169),f=i(24196),e=TypeError,_=function(y){return function(T,M,R,F){r(M);var Z=u(T),J=p(Z),Q=f(Z),ee=y?Q-1:0,ue=y?-1:1;if(R<2)for(;;){if(ee in J){F=J[ee],ee+=ue;break}if(ee+=ue,y?ee<0:Q<=ee)throw e("Reduce of empty array with no initial value")}for(;y?ee>=0:Q>ee;ee+=ue)ee in J&&(F=M(F,J[ee],ee,Z));return F}};v.exports={left:_(!1),right:_(!0)}},32342:(v,S,i)=>{var r=i(20222),u=i(24196),p=i(45347),f=Array,e=Math.max;v.exports=function(_,y,T){for(var M=u(_),R=r(y,M),F=r(void 0===T?M:T,M),Z=f(e(F-R,0)),J=0;R<F;R++,J++)p(Z,J,_[R]);return Z.length=J,Z}},71497:(v,S,i)=>{var r=i(47883),u=i(57995),p=i(60726),e=i(84563)("species"),_=Array;v.exports=function(y){var T;return r(y)&&(u(T=y.constructor)&&(T===_||r(T.prototype))||p(T)&&null===(T=T[e]))&&(T=void 0),void 0===T?_:T}},62889:(v,S,i)=>{var r=i(71497);v.exports=function(u,p){return new(r(u))(0===p?0:p)}},56297:(v,S,i)=>{var u=i(84563)("iterator"),p=!1;try{var f=0,e={next:function(){return{done:!!f++}},return:function(){p=!0}};e[u]=function(){return this},Array.from(e,function(){throw 2})}catch(_){}v.exports=function(_,y){if(!y&&!p)return!1;var T=!1;try{var M={};M[u]=function(){return{next:function(){return{done:T=!0}}}},_(M)}catch(R){}return T}},96644:(v,S,i)=>{var r=i(47964),u=r({}.toString),p=r("".slice);v.exports=function(f){return p(u(f),8,-1)}},99420:(v,S,i)=>{var r=i(72900),u=i(25591),p=i(96644),e=i(84563)("toStringTag"),_=Object,y="Arguments"==p(function(){return arguments}());v.exports=r?p:function(M){var R,F,Z;return void 0===M?"Undefined":null===M?"Null":"string"==typeof(F=function(M,R){try{return M[R]}catch(F){}}(R=_(M),e))?F:y?p(R):"Object"==(Z=p(R))&&u(R.callee)?"Arguments":Z}},96491:(v,S,i)=>{"use strict";var r=i(47964),u=i(41292),p=i(64238).getWeakData,f=i(21099),e=i(60726),_=i(86063),y=i(53284),T=i(94115),M=i(62445),R=i(52493),F=R.set,Z=R.getterFor,J=T.find,Q=T.findIndex,ee=r([].splice),ue=0,ae=function(ve){return ve.frozen||(ve.frozen=new $)},$=function(){this.entries=[]},se=function(ve,oe){return J(ve.entries,function(he){return he[0]===oe})};$.prototype={get:function(ve){var oe=se(this,ve);if(oe)return oe[1]},has:function(ve){return!!se(this,ve)},set:function(ve,oe){var he=se(this,ve);he?he[1]=oe:this.entries.push([ve,oe])},delete:function(ve){var oe=Q(this.entries,function(he){return he[0]===ve});return~oe&&ee(this.entries,oe,1),!!~oe}},v.exports={getConstructor:function(ve,oe,he,me){var Oe=ve(function(Ye,je){_(Ye,ce),F(Ye,{type:oe,id:ue++,frozen:void 0}),null!=je&&y(je,Ye[me],{that:Ye,AS_ENTRIES:he})}),ce=Oe.prototype,dt=Z(oe),ze=function(Ye,je,Ie){var Ve=dt(Ye),He=p(f(je),!0);return!0===He?ae(Ve).set(je,Ie):He[Ve.id]=Ie,Ye};return u(ce,{delete:function(Ye){var je=dt(this);if(!e(Ye))return!1;var Ie=p(Ye);return!0===Ie?ae(je).delete(Ye):Ie&&M(Ie,je.id)&&delete Ie[je.id]},has:function(je){var Ie=dt(this);if(!e(je))return!1;var Ve=p(je);return!0===Ve?ae(Ie).has(je):Ve&&M(Ve,Ie.id)}}),u(ce,he?{get:function(je){var Ie=dt(this);if(e(je)){var Ve=p(je);return!0===Ve?ae(Ie).get(je):Ve?Ve[Ie.id]:void 0}},set:function(je,Ie){return ze(this,je,Ie)}}:{add:function(je){return ze(this,je,!0)}}),Oe}}},41603:(v,S,i)=>{"use strict";var r=i(51163),u=i(31864),p=i(47964),f=i(87215),e=i(70688),_=i(64238),y=i(53284),T=i(86063),M=i(25591),R=i(60726),F=i(8597),Z=i(56297),J=i(58242),Q=i(38267);v.exports=function(ee,ue,ae){var $=-1!==ee.indexOf("Map"),se=-1!==ee.indexOf("Weak"),ve=$?"set":"add",oe=u[ee],he=oe&&oe.prototype,me=oe,Oe={},ce=function(He){var Zt=p(he[He]);e(he,He,"add"==He?function(en){return Zt(this,0===en?0:en),this}:"delete"==He?function(st){return!(se&&!R(st))&&Zt(this,0===st?0:st)}:"get"==He?function(en){return se&&!R(en)?void 0:Zt(this,0===en?0:en)}:"has"==He?function(en){return!(se&&!R(en))&&Zt(this,0===en?0:en)}:function(en,$t){return Zt(this,0===en?0:en,$t),this})};if(f(ee,!M(oe)||!(se||he.forEach&&!F(function(){(new oe).entries().next()}))))me=ae.getConstructor(ue,ee,$,ve),_.enable();else if(f(ee,!0)){var ze=new me,Ye=ze[ve](se?{}:-0,1)!=ze,je=F(function(){ze.has(1)}),Ie=Z(function(He){new oe(He)}),Ve=!se&&F(function(){for(var He=new oe,Zt=5;Zt--;)He[ve](Zt,Zt);return!He.has(-0)});Ie||((me=ue(function(He,Zt){T(He,he);var st=Q(new oe,He,me);return null!=Zt&&y(Zt,st[ve],{that:st,AS_ENTRIES:$}),st})).prototype=he,he.constructor=me),(je||Ve)&&(ce("delete"),ce("has"),$&&ce("get")),(Ve||Ye)&&ce(ve),se&&he.clear&&delete he.clear}return Oe[ee]=me,r({global:!0,constructor:!0,forced:me!=oe},Oe),J(me,ee),se||ae.setStrong(me,ee,$),me}},30009:(v,S,i)=>{var r=i(62445),u=i(99376),p=i(93099),f=i(52975);v.exports=function(e,_,y){for(var T=u(_),M=f.f,R=p.f,F=0;F<T.length;F++){var Z=T[F];!r(e,Z)&&(!y||!r(y,Z))&&M(e,Z,R(_,Z))}}},51335:(v,S,i)=>{var r=i(8597);v.exports=!r(function(){function u(){}return u.prototype.constructor=null,Object.getPrototypeOf(new u)!==u.prototype})},17453:(v,S,i)=>{"use strict";var r=i(92053).IteratorPrototype,u=i(38724),p=i(53203),f=i(58242),e=i(72339),_=function(){return this};v.exports=function(y,T,M,R){var F=T+" Iterator";return y.prototype=u(r,{next:p(+!R,M)}),f(y,F,!1,!0),e[F]=_,y}},815:(v,S,i)=>{var r=i(47012),u=i(52975),p=i(53203);v.exports=r?function(f,e,_){return u.f(f,e,p(1,_))}:function(f,e,_){return f[e]=_,f}},53203:v=>{v.exports=function(S,i){return{enumerable:!(1&S),configurable:!(2&S),writable:!(4&S),value:i}}},45347:(v,S,i)=>{"use strict";var r=i(16582),u=i(52975),p=i(53203);v.exports=function(f,e,_){var y=r(e);y in f?u.f(f,y,p(0,_)):f[y]=_}},70688:(v,S,i)=>{var r=i(25591),u=i(52975),p=i(74952),f=i(11996);v.exports=function(e,_,y,T){T||(T={});var M=T.enumerable,R=void 0!==T.name?T.name:_;if(r(y)&&p(y,R,T),T.global)M?e[_]=y:f(_,y);else{try{T.unsafe?e[_]&&(M=!0):delete e[_]}catch(F){}M?e[_]=y:u.f(e,_,{value:y,enumerable:!1,configurable:!T.nonConfigurable,writable:!T.nonWritable})}return e}},41292:(v,S,i)=>{var r=i(70688);v.exports=function(u,p,f){for(var e in p)r(u,e,p[e],f);return u}},11996:(v,S,i)=>{var r=i(31864),u=Object.defineProperty;v.exports=function(p,f){try{u(r,p,{value:f,configurable:!0,writable:!0})}catch(e){r[p]=f}return f}},66038:(v,S,i)=>{"use strict";var r=i(51163),u=i(757),p=i(97515),f=i(20538),e=i(25591),_=i(17453),y=i(3963),T=i(91464),M=i(58242),R=i(815),F=i(70688),Z=i(84563),J=i(72339),Q=i(92053),ee=f.PROPER,ue=f.CONFIGURABLE,ae=Q.IteratorPrototype,$=Q.BUGGY_SAFARI_ITERATORS,se=Z("iterator"),oe="values",he="entries",me=function(){return this};v.exports=function(Oe,ce,dt,ze,Ye,je,Ie){_(dt,ce,ze);var Ut,Bt,mt,Ve=function(Yt){if(Yt===Ye&&$t)return $t;if(!$&&Yt in st)return st[Yt];switch(Yt){case"keys":case oe:case he:return function(){return new dt(this,Yt)}}return function(){return new dt(this)}},He=ce+" Iterator",Zt=!1,st=Oe.prototype,en=st[se]||st["@@iterator"]||Ye&&st[Ye],$t=!$&&en||Ve(Ye),Gt="Array"==ce&&st.entries||en;if(Gt&&(Ut=y(Gt.call(new Oe)))!==Object.prototype&&Ut.next&&(!p&&y(Ut)!==ae&&(T?T(Ut,ae):e(Ut[se])||F(Ut,se,me)),M(Ut,He,!0,!0),p&&(J[He]=me)),ee&&Ye==oe&&en&&en.name!==oe&&(!p&&ue?R(st,"name",oe):(Zt=!0,$t=function(){return u(en,this)})),Ye)if(Bt={values:Ve(oe),keys:je?$t:Ve("keys"),entries:Ve(he)},Ie)for(mt in Bt)($||Zt||!(mt in st))&&F(st,mt,Bt[mt]);else r({target:ce,proto:!0,forced:$||Zt},Bt);return(!p||Ie)&&st[se]!==$t&&F(st,se,$t,{name:Ye}),J[ce]=$t,Bt}},47012:(v,S,i)=>{var r=i(8597);v.exports=!r(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},85815:(v,S,i)=>{var r=i(31864),u=i(60726),p=r.document,f=u(p)&&u(p.createElement);v.exports=function(e){return f?p.createElement(e):{}}},26877:v=>{v.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},20713:(v,S,i)=>{var u=i(85815)("span").classList,p=u&&u.constructor&&u.constructor.prototype;v.exports=p===Object.prototype?void 0:p},32002:(v,S,i)=>{var r=i(96644),u=i(31864);v.exports="process"==r(u.process)},73792:(v,S,i)=>{var r=i(73626);v.exports=r("navigator","userAgent")||""},17189:(v,S,i)=>{var y,T,r=i(31864),u=i(73792),p=r.process,f=r.Deno,e=p&&p.versions||f&&f.version,_=e&&e.v8;_&&(T=(y=_.split("."))[0]>0&&y[0]<4?1:+(y[0]+y[1])),!T&&u&&(!(y=u.match(/Edge\/(\d+)/))||y[1]>=74)&&(y=u.match(/Chrome\/(\d+)/))&&(T=+y[1]),v.exports=T},71001:v=>{v.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},51163:(v,S,i)=>{var r=i(31864),u=i(93099).f,p=i(815),f=i(70688),e=i(11996),_=i(30009),y=i(87215);v.exports=function(T,M){var Q,ee,ue,ae,$,R=T.target,F=T.global,Z=T.stat;if(Q=F?r:Z?r[R]||e(R,{}):(r[R]||{}).prototype)for(ee in M){if(ae=M[ee],ue=T.dontCallGetSet?($=u(Q,ee))&&$.value:Q[ee],!y(F?ee:R+(Z?".":"#")+ee,T.forced)&&void 0!==ue){if(typeof ae==typeof ue)continue;_(ae,ue)}(T.sham||ue&&ue.sham)&&p(ae,"sham",!0),f(Q,ee,ae,T)}}},8597:v=>{v.exports=function(S){try{return!!S()}catch(i){return!0}}},9357:(v,S,i)=>{"use strict";i(69665);var r=i(47964),u=i(70688),p=i(93084),f=i(8597),e=i(84563),_=i(815),y=e("species"),T=RegExp.prototype;v.exports=function(M,R,F,Z){var J=e(M),Q=!f(function(){var $={};return $[J]=function(){return 7},7!=""[M]($)}),ee=Q&&!f(function(){var $=!1,se=/a/;return"split"===M&&((se={}).constructor={},se.constructor[y]=function(){return se},se.flags="",se[J]=/./[J]),se.exec=function(){return $=!0,null},se[J](""),!$});if(!Q||!ee||F){var ue=r(/./[J]),ae=R(J,""[M],function($,se,ve,oe,he){var me=r($),Oe=se.exec;return Oe===p||Oe===T.exec?Q&&!he?{done:!0,value:ue(se,ve,oe)}:{done:!0,value:me(ve,se,oe)}:{done:!1}});u(String.prototype,M,ae[0]),u(T,J,ae[1])}Z&&_(T[J],"sham",!0)}},39352:(v,S,i)=>{var r=i(8597);v.exports=!r(function(){return Object.isExtensible(Object.preventExtensions({}))})},32328:(v,S,i)=>{var r=i(4459),u=Function.prototype,p=u.apply,f=u.call;v.exports="object"==typeof Reflect&&Reflect.apply||(r?f.bind(p):function(){return f.apply(p,arguments)})},29727:(v,S,i)=>{var r=i(47964),u=i(77340),p=i(4459),f=r(r.bind);v.exports=function(e,_){return u(e),void 0===_?e:p?f(e,_):function(){return e.apply(_,arguments)}}},4459:(v,S,i)=>{var r=i(8597);v.exports=!r(function(){var u=function(){}.bind();return"function"!=typeof u||u.hasOwnProperty("prototype")})},757:(v,S,i)=>{var r=i(4459),u=Function.prototype.call;v.exports=r?u.bind(u):function(){return u.apply(u,arguments)}},20538:(v,S,i)=>{var r=i(47012),u=i(62445),p=Function.prototype,f=r&&Object.getOwnPropertyDescriptor,e=u(p,"name"),_=e&&"something"===function(){}.name,y=e&&(!r||r&&f(p,"name").configurable);v.exports={EXISTS:e,PROPER:_,CONFIGURABLE:y}},47964:(v,S,i)=>{var r=i(4459),u=Function.prototype,f=u.call,e=r&&u.bind.bind(f,f);v.exports=r?function(_){return _&&e(_)}:function(_){return _&&function(){return f.apply(_,arguments)}}},73626:(v,S,i)=>{var r=i(31864),u=i(25591),p=function(f){return u(f)?f:void 0};v.exports=function(f,e){return arguments.length<2?p(r[f]):r[f]&&r[f][e]}},63076:(v,S,i)=>{var r=i(99420),u=i(35642),p=i(72339),e=i(84563)("iterator");v.exports=function(_){if(null!=_)return u(_,e)||u(_,"@@iterator")||p[r(_)]}},36414:(v,S,i)=>{var r=i(757),u=i(77340),p=i(21099),f=i(60802),e=i(63076),_=TypeError;v.exports=function(y,T){var M=arguments.length<2?e(y):T;if(u(M))return p(r(M,y));throw _(f(y)+" is not iterable")}},35642:(v,S,i)=>{var r=i(77340);v.exports=function(u,p){var f=u[p];return null==f?void 0:r(f)}},16162:(v,S,i)=>{var r=i(47964),u=i(16174),p=Math.floor,f=r("".charAt),e=r("".replace),_=r("".slice),y=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,T=/\$([$&'`]|\d{1,2})/g;v.exports=function(M,R,F,Z,J,Q){var ee=F+M.length,ue=Z.length,ae=T;return void 0!==J&&(J=u(J),ae=y),e(Q,ae,function($,se){var ve;switch(f(se,0)){case"$":return"$";case"&":return M;case"`":return _(R,0,F);case"'":return _(R,ee);case"<":ve=J[_(se,1,-1)];break;default:var oe=+se;if(0===oe)return $;if(oe>ue){var he=p(oe/10);return 0===he?$:he<=ue?void 0===Z[he-1]?f(se,1):Z[he-1]+f(se,1):$}ve=Z[oe-1]}return void 0===ve?"":ve})}},31864:v=>{var S=function(i){return i&&i.Math==Math&&i};v.exports=S("object"==typeof globalThis&&globalThis)||S("object"==typeof window&&window)||S("object"==typeof self&&self)||S("object"==typeof global&&global)||function(){return this}()||Function("return this")()},62445:(v,S,i)=>{var r=i(47964),u=i(16174),p=r({}.hasOwnProperty);v.exports=Object.hasOwn||function(e,_){return p(u(e),_)}},3536:v=>{v.exports={}},67538:(v,S,i)=>{var r=i(73626);v.exports=r("document","documentElement")},27091:(v,S,i)=>{var r=i(47012),u=i(8597),p=i(85815);v.exports=!r&&!u(function(){return 7!=Object.defineProperty(p("div"),"a",{get:function(){return 7}}).a})},56169:(v,S,i)=>{var r=i(47964),u=i(8597),p=i(96644),f=Object,e=r("".split);v.exports=u(function(){return!f("z").propertyIsEnumerable(0)})?function(_){return"String"==p(_)?e(_,""):f(_)}:f},38267:(v,S,i)=>{var r=i(25591),u=i(60726),p=i(91464);v.exports=function(f,e,_){var y,T;return p&&r(y=e.constructor)&&y!==_&&u(T=y.prototype)&&T!==_.prototype&&p(f,T),f}},87720:(v,S,i)=>{var r=i(47964),u=i(25591),p=i(59941),f=r(Function.toString);u(p.inspectSource)||(p.inspectSource=function(e){return f(e)}),v.exports=p.inspectSource},64238:(v,S,i)=>{var r=i(51163),u=i(47964),p=i(3536),f=i(60726),e=i(62445),_=i(52975).f,y=i(94564),T=i(7388),M=i(67117),R=i(94295),F=i(39352),Z=!1,J=R("meta"),Q=0,ee=function(oe){_(oe,J,{value:{objectID:"O"+Q++,weakData:{}}})},ve=v.exports={enable:function(){ve.enable=function(){},Z=!0;var oe=y.f,he=u([].splice),me={};me[J]=1,oe(me).length&&(y.f=function(Oe){for(var ce=oe(Oe),dt=0,ze=ce.length;dt<ze;dt++)if(ce[dt]===J){he(ce,dt,1);break}return ce},r({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:T.f}))},fastKey:function(oe,he){if(!f(oe))return"symbol"==typeof oe?oe:("string"==typeof oe?"S":"P")+oe;if(!e(oe,J)){if(!M(oe))return"F";if(!he)return"E";ee(oe)}return oe[J].objectID},getWeakData:function(oe,he){if(!e(oe,J)){if(!M(oe))return!0;if(!he)return!1;ee(oe)}return oe[J].weakData},onFreeze:function(oe){return F&&Z&&M(oe)&&!e(oe,J)&&ee(oe),oe}};p[J]=!0},52493:(v,S,i)=>{var J,Q,ee,r=i(51635),u=i(31864),p=i(47964),f=i(60726),e=i(815),_=i(62445),y=i(59941),T=i(42650),M=i(3536),R="Object already initialized",F=u.TypeError;if(r||y.state){var $=y.state||(y.state=new(0,u.WeakMap)),se=p($.get),ve=p($.has),oe=p($.set);J=function(me,Oe){if(ve($,me))throw new F(R);return Oe.facade=me,oe($,me,Oe),Oe},Q=function(me){return se($,me)||{}},ee=function(me){return ve($,me)}}else{var he=T("state");M[he]=!0,J=function(me,Oe){if(_(me,he))throw new F(R);return Oe.facade=me,e(me,he,Oe),Oe},Q=function(me){return _(me,he)?me[he]:{}},ee=function(me){return _(me,he)}}v.exports={set:J,get:Q,has:ee,enforce:function(me){return ee(me)?Q(me):J(me,{})},getterFor:function(me){return function(Oe){var ce;if(!f(Oe)||(ce=Q(Oe)).type!==me)throw F("Incompatible receiver, "+me+" required");return ce}}}},81643:(v,S,i)=>{var r=i(84563),u=i(72339),p=r("iterator"),f=Array.prototype;v.exports=function(e){return void 0!==e&&(u.Array===e||f[p]===e)}},47883:(v,S,i)=>{var r=i(96644);v.exports=Array.isArray||function(p){return"Array"==r(p)}},25591:v=>{v.exports=function(S){return"function"==typeof S}},57995:(v,S,i)=>{var r=i(47964),u=i(8597),p=i(25591),f=i(99420),e=i(73626),_=i(87720),y=function(){},T=[],M=e("Reflect","construct"),R=/^\s*(?:class|function)\b/,F=r(R.exec),Z=!R.exec(y),J=function(ue){if(!p(ue))return!1;try{return M(y,T,ue),!0}catch(ae){return!1}},Q=function(ue){if(!p(ue))return!1;switch(f(ue)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Z||!!F(R,_(ue))}catch(ae){return!0}};Q.sham=!0,v.exports=!M||u(function(){var ee;return J(J.call)||!J(Object)||!J(function(){ee=!0})||ee})?Q:J},87215:(v,S,i)=>{var r=i(8597),u=i(25591),p=/#|\.prototype\./,f=function(M,R){var F=_[e(M)];return F==T||F!=y&&(u(R)?r(R):!!R)},e=f.normalize=function(M){return String(M).replace(p,".").toLowerCase()},_=f.data={},y=f.NATIVE="N",T=f.POLYFILL="P";v.exports=f},60726:(v,S,i)=>{var r=i(25591);v.exports=function(u){return"object"==typeof u?null!==u:r(u)}},97515:v=>{v.exports=!1},26186:(v,S,i)=>{var r=i(73626),u=i(25591),p=i(93290),f=i(24431),e=Object;v.exports=f?function(_){return"symbol"==typeof _}:function(_){var y=r("Symbol");return u(y)&&p(y.prototype,e(_))}},53284:(v,S,i)=>{var r=i(29727),u=i(757),p=i(21099),f=i(60802),e=i(81643),_=i(24196),y=i(93290),T=i(36414),M=i(63076),R=i(87883),F=TypeError,Z=function(Q,ee){this.stopped=Q,this.result=ee},J=Z.prototype;v.exports=function(Q,ee,ue){var me,Oe,ce,dt,ze,Ye,je,$=!(!ue||!ue.AS_ENTRIES),se=!(!ue||!ue.IS_RECORD),ve=!(!ue||!ue.IS_ITERATOR),oe=!(!ue||!ue.INTERRUPTED),he=r(ee,ue&&ue.that),Ie=function(He){return me&&R(me,"normal",He),new Z(!0,He)},Ve=function(He){return $?(p(He),oe?he(He[0],He[1],Ie):he(He[0],He[1])):oe?he(He,Ie):he(He)};if(se)me=Q.iterator;else if(ve)me=Q;else{if(!(Oe=M(Q)))throw F(f(Q)+" is not iterable");if(e(Oe)){for(ce=0,dt=_(Q);dt>ce;ce++)if((ze=Ve(Q[ce]))&&y(J,ze))return ze;return new Z(!1)}me=T(Q,Oe)}for(Ye=se?Q.next:me.next;!(je=u(Ye,me)).done;){try{ze=Ve(je.value)}catch(He){R(me,"throw",He)}if("object"==typeof ze&&ze&&y(J,ze))return ze}return new Z(!1)}},87883:(v,S,i)=>{var r=i(757),u=i(21099),p=i(35642);v.exports=function(f,e,_){var y,T;u(f);try{if(!(y=p(f,"return"))){if("throw"===e)throw _;return _}y=r(y,f)}catch(M){T=!0,y=M}if("throw"===e)throw _;if(T)throw y;return u(y),_}},92053:(v,S,i)=>{"use strict";var R,F,Z,r=i(8597),u=i(25591),p=i(38724),f=i(3963),e=i(70688),_=i(84563),y=i(97515),T=_("iterator"),M=!1;[].keys&&("next"in(Z=[].keys())?(F=f(f(Z)))!==Object.prototype&&(R=F):M=!0),null==R||r(function(){var Q={};return R[T].call(Q)!==Q})?R={}:y&&(R=p(R)),u(R[T])||e(R,T,function(){return this}),v.exports={IteratorPrototype:R,BUGGY_SAFARI_ITERATORS:M}},72339:v=>{v.exports={}},24196:(v,S,i)=>{var r=i(15902);v.exports=function(u){return r(u.length)}},74952:(v,S,i)=>{var r=i(8597),u=i(25591),p=i(62445),f=i(47012),e=i(20538).CONFIGURABLE,_=i(87720),y=i(52493),T=y.enforce,M=y.get,R=Object.defineProperty,F=f&&!r(function(){return 8!==R(function(){},"length",{value:8}).length}),Z=String(String).split("String"),J=v.exports=function(Q,ee,ue){"Symbol("===String(ee).slice(0,7)&&(ee="["+String(ee).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),ue&&ue.getter&&(ee="get "+ee),ue&&ue.setter&&(ee="set "+ee),(!p(Q,"name")||e&&Q.name!==ee)&&(f?R(Q,"name",{value:ee,configurable:!0}):Q.name=ee),F&&ue&&p(ue,"arity")&&Q.length!==ue.arity&&R(Q,"length",{value:ue.arity});try{ue&&p(ue,"constructor")&&ue.constructor?f&&R(Q,"prototype",{writable:!1}):Q.prototype&&(Q.prototype=void 0)}catch($){}var ae=T(Q);return p(ae,"source")||(ae.source=Z.join("string"==typeof ee?ee:"")),Q};Function.prototype.toString=J(function(){return u(this)&&M(this).source||_(this)},"toString")},58194:v=>{var S=Math.ceil,i=Math.floor;v.exports=Math.trunc||function(u){var p=+u;return(p>0?i:S)(p)}},77040:(v,S,i)=>{var r=i(17189),u=i(8597);v.exports=!!Object.getOwnPropertySymbols&&!u(function(){var p=Symbol();return!String(p)||!(Object(p)instanceof Symbol)||!Symbol.sham&&r&&r<41})},51635:(v,S,i)=>{var r=i(31864),u=i(25591),p=i(87720),f=r.WeakMap;v.exports=u(f)&&/native code/.test(p(f))},43656:(v,S,i)=>{var r=i(31864),u=i(8597),p=i(47964),f=i(73574),e=i(51664).trim,_=i(48004),y=r.parseInt,T=r.Symbol,M=T&&T.iterator,R=/^[+-]?0x/i,F=p(R.exec),Z=8!==y(_+"08")||22!==y(_+"0x16")||M&&!u(function(){y(Object(M))});v.exports=Z?function(Q,ee){var ue=e(f(Q));return y(ue,ee>>>0||(F(R,ue)?16:10))}:y},51746:(v,S,i)=>{"use strict";var r=i(47012),u=i(47964),p=i(757),f=i(8597),e=i(68032),_=i(77593),y=i(5600),T=i(16174),M=i(56169),R=Object.assign,F=Object.defineProperty,Z=u([].concat);v.exports=!R||f(function(){if(r&&1!==R({b:1},R(F({},"a",{enumerable:!0,get:function(){F(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var J={},Q={},ee=Symbol(),ue="abcdefghijklmnopqrst";return J[ee]=7,ue.split("").forEach(function(ae){Q[ae]=ae}),7!=R({},J)[ee]||e(R({},Q)).join("")!=ue})?function(Q,ee){for(var ue=T(Q),ae=arguments.length,$=1,se=_.f,ve=y.f;ae>$;)for(var ce,oe=M(arguments[$++]),he=se?Z(e(oe),se(oe)):e(oe),me=he.length,Oe=0;me>Oe;)ce=he[Oe++],(!r||p(ve,oe,ce))&&(ue[ce]=oe[ce]);return ue}:R},38724:(v,S,i)=>{var ae,r=i(21099),u=i(10988),p=i(71001),f=i(3536),e=i(67538),_=i(85815),y=i(42650),R="prototype",F="script",Z=y("IE_PROTO"),J=function(){},Q=function(se){return"<"+F+">"+se+"</"+F+">"},ee=function(se){se.write(Q("")),se.close();var ve=se.parentWindow.Object;return se=null,ve},$=function(){try{ae=new ActiveXObject("htmlfile")}catch(ve){}$="undefined"!=typeof document?document.domain&&ae?ee(ae):function(){var oe,se=_("iframe");return se.style.display="none",e.appendChild(se),se.src=String("javascript:"),(oe=se.contentWindow.document).open(),oe.write(Q("document.F=Object")),oe.close(),oe.F}():ee(ae);for(var se=p.length;se--;)delete $[R][p[se]];return $()};f[Z]=!0,v.exports=Object.create||function(ve,oe){var he;return null!==ve?(J[R]=r(ve),he=new J,J[R]=null,he[Z]=ve):he=$(),void 0===oe?he:u.f(he,oe)}},10988:(v,S,i)=>{var r=i(47012),u=i(52339),p=i(52975),f=i(21099),e=i(8643),_=i(68032);S.f=r&&!u?Object.defineProperties:function(T,M){f(T);for(var Q,R=e(M),F=_(M),Z=F.length,J=0;Z>J;)p.f(T,Q=F[J++],R[Q]);return T}},52975:(v,S,i)=>{var r=i(47012),u=i(27091),p=i(52339),f=i(21099),e=i(16582),_=TypeError,y=Object.defineProperty,T=Object.getOwnPropertyDescriptor,M="enumerable",R="configurable",F="writable";S.f=r?p?function(J,Q,ee){if(f(J),Q=e(Q),f(ee),"function"==typeof J&&"prototype"===Q&&"value"in ee&&F in ee&&!ee[F]){var ue=T(J,Q);ue&&ue[F]&&(J[Q]=ee.value,ee={configurable:R in ee?ee[R]:ue[R],enumerable:M in ee?ee[M]:ue[M],writable:!1})}return y(J,Q,ee)}:y:function(J,Q,ee){if(f(J),Q=e(Q),f(ee),u)try{return y(J,Q,ee)}catch(ue){}if("get"in ee||"set"in ee)throw _("Accessors not supported");return"value"in ee&&(J[Q]=ee.value),J}},93099:(v,S,i)=>{var r=i(47012),u=i(757),p=i(5600),f=i(53203),e=i(8643),_=i(16582),y=i(62445),T=i(27091),M=Object.getOwnPropertyDescriptor;S.f=r?M:function(F,Z){if(F=e(F),Z=_(Z),T)try{return M(F,Z)}catch(J){}if(y(F,Z))return f(!u(p.f,F,Z),F[Z])}},7388:(v,S,i)=>{var r=i(96644),u=i(8643),p=i(94564).f,f=i(32342),e="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];v.exports.f=function(T){return e&&"Window"==r(T)?function(y){try{return p(y)}catch(T){return f(e)}}(T):p(u(T))}},94564:(v,S,i)=>{var r=i(77759),p=i(71001).concat("length","prototype");S.f=Object.getOwnPropertyNames||function(e){return r(e,p)}},77593:(v,S)=>{S.f=Object.getOwnPropertySymbols},3963:(v,S,i)=>{var r=i(62445),u=i(25591),p=i(16174),f=i(42650),e=i(51335),_=f("IE_PROTO"),y=Object,T=y.prototype;v.exports=e?y.getPrototypeOf:function(M){var R=p(M);if(r(R,_))return R[_];var F=R.constructor;return u(F)&&R instanceof F?F.prototype:R instanceof y?T:null}},67117:(v,S,i)=>{var r=i(8597),u=i(60726),p=i(96644),f=i(93241),e=Object.isExtensible,_=r(function(){e(1)});v.exports=_||f?function(T){return!(!u(T)||f&&"ArrayBuffer"==p(T))&&(!e||e(T))}:e},93290:(v,S,i)=>{var r=i(47964);v.exports=r({}.isPrototypeOf)},77759:(v,S,i)=>{var r=i(47964),u=i(62445),p=i(8643),f=i(70452).indexOf,e=i(3536),_=r([].push);v.exports=function(y,T){var Z,M=p(y),R=0,F=[];for(Z in M)!u(e,Z)&&u(M,Z)&&_(F,Z);for(;T.length>R;)u(M,Z=T[R++])&&(~f(F,Z)||_(F,Z));return F}},68032:(v,S,i)=>{var r=i(77759),u=i(71001);v.exports=Object.keys||function(f){return r(f,u)}},5600:(v,S)=>{"use strict";var i={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,u=r&&!i.call({1:2},1);S.f=u?function(f){var e=r(this,f);return!!e&&e.enumerable}:i},91464:(v,S,i)=>{var r=i(47964),u=i(21099),p=i(95143);v.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var _,f=!1,e={};try{(_=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(e,[]),f=e instanceof Array}catch(y){}return function(T,M){return u(T),p(M),f?_(T,M):T.__proto__=M,T}}():void 0)},83119:(v,S,i)=>{"use strict";var r=i(72900),u=i(99420);v.exports=r?{}.toString:function(){return"[object "+u(this)+"]"}},48297:(v,S,i)=>{var r=i(757),u=i(25591),p=i(60726),f=TypeError;v.exports=function(e,_){var y,T;if("string"===_&&u(y=e.toString)&&!p(T=r(y,e))||u(y=e.valueOf)&&!p(T=r(y,e))||"string"!==_&&u(y=e.toString)&&!p(T=r(y,e)))return T;throw f("Can't convert object to primitive value")}},99376:(v,S,i)=>{var r=i(73626),u=i(47964),p=i(94564),f=i(77593),e=i(21099),_=u([].concat);v.exports=r("Reflect","ownKeys")||function(T){var M=p.f(e(T)),R=f.f;return R?_(M,R(T)):M}},53793:(v,S,i)=>{var r=i(757),u=i(21099),p=i(25591),f=i(96644),e=i(93084),_=TypeError;v.exports=function(y,T){var M=y.exec;if(p(M)){var R=r(M,y,T);return null!==R&&u(R),R}if("RegExp"===f(y))return r(e,y,T);throw _("RegExp#exec called on incompatible receiver")}},93084:(v,S,i)=>{"use strict";var he,me,r=i(757),u=i(47964),p=i(73574),f=i(41891),e=i(29895),_=i(77719),y=i(38724),T=i(52493).get,M=i(38126),R=i(31053),F=_("native-string-replace",String.prototype.replace),Z=RegExp.prototype.exec,J=Z,Q=u("".charAt),ee=u("".indexOf),ue=u("".replace),ae=u("".slice),$=(me=/b*/g,r(Z,he=/a/,"a"),r(Z,me,"a"),0!==he.lastIndex||0!==me.lastIndex),se=e.BROKEN_CARET,ve=void 0!==/()??/.exec("")[1];($||ve||se||M||R)&&(J=function(me){var Ye,je,Ie,Ve,He,Zt,st,Oe=this,ce=T(Oe),dt=p(me),ze=ce.raw;if(ze)return ze.lastIndex=Oe.lastIndex,Ye=r(J,ze,dt),Oe.lastIndex=ze.lastIndex,Ye;var en=ce.groups,$t=se&&Oe.sticky,Gt=r(f,Oe),Ut=Oe.source,Bt=0,mt=dt;if($t&&(Gt=ue(Gt,"y",""),-1===ee(Gt,"g")&&(Gt+="g"),mt=ae(dt,Oe.lastIndex),Oe.lastIndex>0&&(!Oe.multiline||Oe.multiline&&"\n"!==Q(dt,Oe.lastIndex-1))&&(Ut="(?: "+Ut+")",mt=" "+mt,Bt++),je=new RegExp("^(?:"+Ut+")",Gt)),ve&&(je=new RegExp("^"+Ut+"$(?!\\s)",Gt)),$&&(Ie=Oe.lastIndex),Ve=r(Z,$t?je:Oe,mt),$t?Ve?(Ve.input=ae(Ve.input,Bt),Ve[0]=ae(Ve[0],Bt),Ve.index=Oe.lastIndex,Oe.lastIndex+=Ve[0].length):Oe.lastIndex=0:$&&Ve&&(Oe.lastIndex=Oe.global?Ve.index+Ve[0].length:Ie),ve&&Ve&&Ve.length>1&&r(F,Ve[0],je,function(){for(He=1;He<arguments.length-2;He++)void 0===arguments[He]&&(Ve[He]=void 0)}),Ve&&en)for(Ve.groups=Zt=y(null),He=0;He<en.length;He++)Zt[(st=en[He])[0]]=Ve[st[1]];return Ve}),v.exports=J},41891:(v,S,i)=>{"use strict";var r=i(21099);v.exports=function(){var u=r(this),p="";return u.hasIndices&&(p+="d"),u.global&&(p+="g"),u.ignoreCase&&(p+="i"),u.multiline&&(p+="m"),u.dotAll&&(p+="s"),u.unicode&&(p+="u"),u.unicodeSets&&(p+="v"),u.sticky&&(p+="y"),p}},29895:(v,S,i)=>{var r=i(8597),p=i(31864).RegExp,f=r(function(){var y=p("a","y");return y.lastIndex=2,null!=y.exec("abcd")}),e=f||r(function(){return!p("a","y").sticky}),_=f||r(function(){var y=p("^r","gy");return y.lastIndex=2,null!=y.exec("str")});v.exports={BROKEN_CARET:_,MISSED_STICKY:e,UNSUPPORTED_Y:f}},38126:(v,S,i)=>{var r=i(8597),p=i(31864).RegExp;v.exports=r(function(){var f=p(".","s");return!(f.dotAll&&f.exec("\n")&&"s"===f.flags)})},31053:(v,S,i)=>{var r=i(8597),p=i(31864).RegExp;v.exports=r(function(){var f=p("(?<a>b)","g");return"b"!==f.exec("b").groups.a||"bc"!=="b".replace(f,"$<a>c")})},95025:v=>{var S=TypeError;v.exports=function(i){if(null==i)throw S("Can't call method on "+i);return i}},58242:(v,S,i)=>{var r=i(52975).f,u=i(62445),f=i(84563)("toStringTag");v.exports=function(e,_,y){e&&!y&&(e=e.prototype),e&&!u(e,f)&&r(e,f,{configurable:!0,value:_})}},42650:(v,S,i)=>{var r=i(77719),u=i(94295),p=r("keys");v.exports=function(f){return p[f]||(p[f]=u(f))}},59941:(v,S,i)=>{var r=i(31864),u=i(11996),p="__core-js_shared__",f=r[p]||u(p,{});v.exports=f},77719:(v,S,i)=>{var r=i(97515),u=i(59941);(v.exports=function(p,f){return u[p]||(u[p]=void 0!==f?f:{})})("versions",[]).push({version:"3.24.1",mode:r?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE",source:"https://github.com/zloirock/core-js"})},64487:(v,S,i)=>{var r=i(47964),u=i(22157),p=i(73574),f=i(95025),e=r("".charAt),_=r("".charCodeAt),y=r("".slice),T=function(M){return function(R,F){var ee,ue,Z=p(f(R)),J=u(F),Q=Z.length;return J<0||J>=Q?M?"":void 0:(ee=_(Z,J))<55296||ee>56319||J+1===Q||(ue=_(Z,J+1))<56320||ue>57343?M?e(Z,J):ee:M?y(Z,J,J+2):ue-56320+(ee-55296<<10)+65536}};v.exports={codeAt:T(!1),charAt:T(!0)}},51664:(v,S,i)=>{var r=i(47964),u=i(95025),p=i(73574),f=i(48004),e=r("".replace),_="["+f+"]",y=RegExp("^"+_+_+"*"),T=RegExp(_+_+"*$"),M=function(R){return function(F){var Z=p(u(F));return 1&R&&(Z=e(Z,y,"")),2&R&&(Z=e(Z,T,"")),Z}};v.exports={start:M(1),end:M(2),trim:M(3)}},20222:(v,S,i)=>{var r=i(22157),u=Math.max,p=Math.min;v.exports=function(f,e){var _=r(f);return _<0?u(_+e,0):p(_,e)}},8643:(v,S,i)=>{var r=i(56169),u=i(95025);v.exports=function(p){return r(u(p))}},22157:(v,S,i)=>{var r=i(58194);v.exports=function(u){var p=+u;return p!=p||0===p?0:r(p)}},15902:(v,S,i)=>{var r=i(22157),u=Math.min;v.exports=function(p){return p>0?u(r(p),9007199254740991):0}},16174:(v,S,i)=>{var r=i(95025),u=Object;v.exports=function(p){return u(r(p))}},28495:(v,S,i)=>{var r=i(757),u=i(60726),p=i(26186),f=i(35642),e=i(48297),_=i(84563),y=TypeError,T=_("toPrimitive");v.exports=function(M,R){if(!u(M)||p(M))return M;var Z,F=f(M,T);if(F){if(void 0===R&&(R="default"),Z=r(F,M,R),!u(Z)||p(Z))return Z;throw y("Can't convert object to primitive value")}return void 0===R&&(R="number"),e(M,R)}},16582:(v,S,i)=>{var r=i(28495),u=i(26186);v.exports=function(p){var f=r(p,"string");return u(f)?f:f+""}},72900:(v,S,i)=>{var p={};p[i(84563)("toStringTag")]="z",v.exports="[object z]"===String(p)},73574:(v,S,i)=>{var r=i(99420),u=String;v.exports=function(p){if("Symbol"===r(p))throw TypeError("Cannot convert a Symbol value to a string");return u(p)}},60802:v=>{var S=String;v.exports=function(i){try{return S(i)}catch(r){return"Object"}}},94295:(v,S,i)=>{var r=i(47964),u=0,p=Math.random(),f=r(1..toString);v.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+f(++u+p,36)}},24431:(v,S,i)=>{var r=i(77040);v.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},52339:(v,S,i)=>{var r=i(47012),u=i(8597);v.exports=r&&u(function(){return 42!=Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},84563:(v,S,i)=>{var r=i(31864),u=i(77719),p=i(62445),f=i(94295),e=i(77040),_=i(24431),y=u("wks"),T=r.Symbol,M=T&&T.for,R=_?T:T&&T.withoutSetter||f;v.exports=function(F){if(!p(y,F)||!e&&"string"!=typeof y[F]){var Z="Symbol."+F;y[F]=e&&p(T,F)?T[F]:_&&M?M(Z):R(Z)}return y[F]}},48004:v=>{v.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},85443:(v,S,i)=>{"use strict";var r=i(51163),u=i(94115).filter;r({target:"Array",proto:!0,forced:!i(37394)("filter")},{filter:function(_){return u(this,_,arguments.length>1?arguments[1]:void 0)}})},66837:(v,S,i)=>{"use strict";var r=i(8643),u=i(24094),p=i(72339),f=i(52493),e=i(52975).f,_=i(66038),y=i(97515),T=i(47012),M="Array Iterator",R=f.set,F=f.getterFor(M);v.exports=_(Array,"Array",function(J,Q){R(this,{type:M,target:r(J),index:0,kind:Q})},function(){var J=F(this),Q=J.target,ee=J.kind,ue=J.index++;return!Q||ue>=Q.length?(J.target=void 0,{value:void 0,done:!0}):"keys"==ee?{value:ue,done:!1}:"values"==ee?{value:Q[ue],done:!1}:{value:[ue,Q[ue]],done:!1}},"values");var Z=p.Arguments=p.Array;if(u("keys"),u("values"),u("entries"),!y&&T&&"values"!==Z.name)try{e(Z,"name",{value:"values"})}catch(J){}},35319:(v,S,i)=>{"use strict";var r=i(51163),u=i(14716).left,p=i(47051),f=i(17189),e=i(32002);r({target:"Array",proto:!0,forced:!p("reduce")||!e&&f>79&&f<83},{reduce:function(M){var R=arguments.length;return u(this,M,R,R>1?arguments[1]:void 0)}})},80477:(v,S,i)=>{var r=i(47012),u=i(20538).EXISTS,p=i(47964),f=i(52975).f,e=Function.prototype,_=p(e.toString),y=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,T=p(y.exec);r&&!u&&f(e,"name",{configurable:!0,get:function(){try{return T(y,_(this))[1]}catch(R){return""}}})},8868:(v,S,i)=>{var r=i(51163),u=i(51746);r({target:"Object",stat:!0,arity:2,forced:Object.assign!==u},{assign:u})},35704:(v,S,i)=>{var r=i(72900),u=i(70688),p=i(83119);r||u(Object.prototype,"toString",p,{unsafe:!0})},21581:(v,S,i)=>{var r=i(51163),u=i(43656);r({global:!0,forced:parseInt!=u},{parseInt:u})},69665:(v,S,i)=>{"use strict";var r=i(51163),u=i(93084);r({target:"RegExp",proto:!0,forced:/./.exec!==u},{exec:u})},13744:(v,S,i)=>{"use strict";var r=i(64487).charAt,u=i(73574),p=i(52493),f=i(66038),e="String Iterator",_=p.set,y=p.getterFor(e);f(String,"String",function(T){_(this,{type:e,string:u(T),index:0})},function(){var Z,M=y(this),R=M.string,F=M.index;return F>=R.length?{value:void 0,done:!0}:(Z=r(R,F),M.index+=Z.length,{value:Z,done:!1})})},26954:(v,S,i)=>{"use strict";var r=i(757),u=i(9357),p=i(21099),f=i(15902),e=i(73574),_=i(95025),y=i(35642),T=i(27678),M=i(53793);u("match",function(R,F,Z){return[function(Q){var ee=_(this),ue=null==Q?void 0:y(Q,R);return ue?r(ue,Q,ee):new RegExp(Q)[R](e(ee))},function(J){var Q=p(this),ee=e(J),ue=Z(F,Q,ee);if(ue.done)return ue.value;if(!Q.global)return M(Q,ee);var ae=Q.unicode;Q.lastIndex=0;for(var ve,$=[],se=0;null!==(ve=M(Q,ee));){var oe=e(ve[0]);$[se]=oe,""===oe&&(Q.lastIndex=T(ee,f(Q.lastIndex),ae)),se++}return 0===se?null:$}]})},66262:(v,S,i)=>{"use strict";var r=i(32328),u=i(757),p=i(47964),f=i(9357),e=i(8597),_=i(21099),y=i(25591),T=i(22157),M=i(15902),R=i(73574),F=i(95025),Z=i(27678),J=i(35642),Q=i(16162),ee=i(53793),ae=i(84563)("replace"),$=Math.max,se=Math.min,ve=p([].concat),oe=p([].push),he=p("".indexOf),me=p("".slice),Oe=function(Ye){return void 0===Ye?Ye:String(Ye)},ce="$0"==="a".replace(/./,"$0"),dt=!!/./[ae]&&""===/./[ae]("a","$0");f("replace",function(Ye,je,Ie){var Ve=dt?"$":"$0";return[function(Zt,st){var en=F(this),$t=null==Zt?void 0:J(Zt,ae);return $t?u($t,Zt,en,st):u(je,R(en),Zt,st)},function(He,Zt){var st=_(this),en=R(He);if("string"==typeof Zt&&-1===he(Zt,Ve)&&-1===he(Zt,"$<")){var $t=Ie(je,st,en,Zt);if($t.done)return $t.value}var Gt=y(Zt);Gt||(Zt=R(Zt));var Ut=st.global;if(Ut){var Bt=st.unicode;st.lastIndex=0}for(var mt=[];;){var Yt=ee(st,en);if(null===Yt||(oe(mt,Yt),!Ut))break;""===R(Yt[0])&&(st.lastIndex=Z(en,M(st.lastIndex),Bt))}for(var zt="",Yn=0,Hr=0;Hr<mt.length;Hr++){for(var ci=R((Yt=mt[Hr])[0]),Ir=$(se(T(Yt.index),en.length),0),wr=[],Qr=1;Qr<Yt.length;Qr++)oe(wr,Oe(Yt[Qr]));var Kr=Yt.groups;if(Gt){var In=ve([ci],wr,Ir,en);void 0!==Kr&&oe(In,Kr);var Hn=R(r(Zt,void 0,In))}else Hn=Q(ci,en,Ir,wr,Kr,Zt);Ir>=Yn&&(zt+=me(en,Yn,Ir)+Hn,Yn=Ir+ci.length)}return zt+me(en,Yn)}]},!!e(function(){var Ye=/./;return Ye.exec=function(){var je=[];return je.groups={a:"7"},je},"7"!=="".replace(Ye,"$<a>")})||!ce||dt)},62913:(v,S,i)=>{"use strict";var Z,r=i(31864),u=i(47964),p=i(41292),f=i(64238),e=i(41603),_=i(96491),y=i(60726),T=i(67117),M=i(52493).enforce,R=i(51635),F=!r.ActiveXObject&&"ActiveXObject"in r,J=function(ve){return function(){return ve(this,arguments.length?arguments[0]:void 0)}},Q=e("WeakMap",J,_);if(R&&F){Z=_.getConstructor(J,"WeakMap",!0),f.enable();var ee=Q.prototype,ue=u(ee.delete),ae=u(ee.has),$=u(ee.get),se=u(ee.set);p(ee,{delete:function(ve){if(y(ve)&&!T(ve)){var oe=M(this);return oe.frozen||(oe.frozen=new Z),ue(this,ve)||oe.frozen.delete(ve)}return ue(this,ve)},has:function(oe){if(y(oe)&&!T(oe)){var he=M(this);return he.frozen||(he.frozen=new Z),ae(this,oe)||he.frozen.has(oe)}return ae(this,oe)},get:function(oe){if(y(oe)&&!T(oe)){var he=M(this);return he.frozen||(he.frozen=new Z),ae(this,oe)?$(this,oe):he.frozen.get(oe)}return $(this,oe)},set:function(oe,he){if(y(oe)&&!T(oe)){var me=M(this);me.frozen||(me.frozen=new Z),ae(this,oe)?se(this,oe,he):me.frozen.set(oe,he)}else se(this,oe,he);return this}})}},63438:(v,S,i)=>{i(62913)},22603:(v,S,i)=>{var r=i(31864),u=i(26877),p=i(20713),f=i(66837),e=i(815),_=i(84563),y=_("iterator"),T=_("toStringTag"),M=f.values,R=function(Z,J){if(Z){if(Z[y]!==M)try{e(Z,y,M)}catch(ee){Z[y]=M}if(Z[T]||e(Z,T,J),u[J])for(var Q in f)if(Z[Q]!==f[Q])try{e(Z,Q,f[Q])}catch(ee){Z[Q]=f[Q]}}};for(var F in u)R(r[F]&&r[F].prototype,F);R(p,"DOMTokenList")},64762:(v,S,i)=>{"use strict";i.d(S,{ZT:()=>u,pi:()=>p,_T:()=>f,gn:()=>e,fM:()=>_,w6:()=>y});var r=function(ze,Ye){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(je,Ie){je.__proto__=Ie}||function(je,Ie){for(var Ve in Ie)Object.prototype.hasOwnProperty.call(Ie,Ve)&&(je[Ve]=Ie[Ve])})(ze,Ye)};function u(ze,Ye){if("function"!=typeof Ye&&null!==Ye)throw new TypeError("Class extends value "+String(Ye)+" is not a constructor or null");function je(){this.constructor=ze}r(ze,Ye),ze.prototype=null===Ye?Object.create(Ye):(je.prototype=Ye.prototype,new je)}var p=function(){return(p=Object.assign||function(Ye){for(var je,Ie=1,Ve=arguments.length;Ie<Ve;Ie++)for(var He in je=arguments[Ie])Object.prototype.hasOwnProperty.call(je,He)&&(Ye[He]=je[He]);return Ye}).apply(this,arguments)};function f(ze,Ye){var je={};for(var Ie in ze)Object.prototype.hasOwnProperty.call(ze,Ie)&&Ye.indexOf(Ie)<0&&(je[Ie]=ze[Ie]);if(null!=ze&&"function"==typeof Object.getOwnPropertySymbols){var Ve=0;for(Ie=Object.getOwnPropertySymbols(ze);Ve<Ie.length;Ve++)Ye.indexOf(Ie[Ve])<0&&Object.prototype.propertyIsEnumerable.call(ze,Ie[Ve])&&(je[Ie[Ve]]=ze[Ie[Ve]])}return je}function e(ze,Ye,je,Ie){var Zt,Ve=arguments.length,He=Ve<3?Ye:null===Ie?Ie=Object.getOwnPropertyDescriptor(Ye,je):Ie;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)He=Reflect.decorate(ze,Ye,je,Ie);else for(var st=ze.length-1;st>=0;st--)(Zt=ze[st])&&(He=(Ve<3?Zt(He):Ve>3?Zt(Ye,je,He):Zt(Ye,je))||He);return Ve>3&&He&&Object.defineProperty(Ye,je,He),He}function _(ze,Ye){return function(je,Ie){Ye(je,Ie,ze)}}function y(ze,Ye){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(ze,Ye)}},46700:(v,S,i)=>{var r={"./af":26431,"./af.js":26431,"./ar":81286,"./ar-dz":1616,"./ar-dz.js":1616,"./ar-kw":9759,"./ar-kw.js":9759,"./ar-ly":43160,"./ar-ly.js":43160,"./ar-ma":62551,"./ar-ma.js":62551,"./ar-sa":79989,"./ar-sa.js":79989,"./ar-tn":6962,"./ar-tn.js":6962,"./ar.js":81286,"./az":15887,"./az.js":15887,"./be":14572,"./be.js":14572,"./bg":3276,"./bg.js":3276,"./bm":93344,"./bm.js":93344,"./bn":58985,"./bn-bd":83990,"./bn-bd.js":83990,"./bn.js":58985,"./bo":94391,"./bo.js":94391,"./br":46728,"./br.js":46728,"./bs":5536,"./bs.js":5536,"./ca":41043,"./ca.js":41043,"./cs":70420,"./cs.js":70420,"./cv":33513,"./cv.js":33513,"./cy":6771,"./cy.js":6771,"./da":47978,"./da.js":47978,"./de":46061,"./de-at":25204,"./de-at.js":25204,"./de-ch":2653,"./de-ch.js":2653,"./de.js":46061,"./dv":85,"./dv.js":85,"./el":8579,"./el.js":8579,"./en-au":25724,"./en-au.js":25724,"./en-ca":10525,"./en-ca.js":10525,"./en-gb":52847,"./en-gb.js":52847,"./en-ie":67216,"./en-ie.js":67216,"./en-il":39305,"./en-il.js":39305,"./en-in":73364,"./en-in.js":73364,"./en-nz":79130,"./en-nz.js":79130,"./en-sg":11161,"./en-sg.js":11161,"./eo":50802,"./eo.js":50802,"./es":40328,"./es-do":45551,"./es-do.js":45551,"./es-mx":75615,"./es-mx.js":75615,"./es-us":64790,"./es-us.js":64790,"./es.js":40328,"./et":96389,"./et.js":96389,"./eu":52961,"./eu.js":52961,"./fa":26151,"./fa.js":26151,"./fi":7997,"./fi.js":7997,"./fil":58898,"./fil.js":58898,"./fo":37779,"./fo.js":37779,"./fr":28174,"./fr-ca":3287,"./fr-ca.js":3287,"./fr-ch":38867,"./fr-ch.js":38867,"./fr.js":28174,"./fy":50452,"./fy.js":50452,"./ga":45014,"./ga.js":45014,"./gd":74127,"./gd.js":74127,"./gl":72124,"./gl.js":72124,"./gom-deva":6444,"./gom-deva.js":6444,"./gom-latn":37953,"./gom-latn.js":37953,"./gu":76604,"./gu.js":76604,"./he":1222,"./he.js":1222,"./hi":74235,"./hi.js":74235,"./hr":622,"./hr.js":622,"./hu":37735,"./hu.js":37735,"./hy-am":90402,"./hy-am.js":90402,"./id":59187,"./id.js":59187,"./is":30536,"./is.js":30536,"./it":35007,"./it-ch":94667,"./it-ch.js":94667,"./it.js":35007,"./ja":62093,"./ja.js":62093,"./jv":80059,"./jv.js":80059,"./ka":66870,"./ka.js":66870,"./kk":80880,"./kk.js":80880,"./km":1083,"./km.js":1083,"./kn":68785,"./kn.js":68785,"./ko":21721,"./ko.js":21721,"./ku":37851,"./ku.js":37851,"./ky":1727,"./ky.js":1727,"./lb":40346,"./lb.js":40346,"./lo":93002,"./lo.js":93002,"./lt":64035,"./lt.js":64035,"./lv":56927,"./lv.js":56927,"./me":5634,"./me.js":5634,"./mi":94173,"./mi.js":94173,"./mk":86320,"./mk.js":86320,"./ml":11705,"./ml.js":11705,"./mn":31062,"./mn.js":31062,"./mr":92805,"./mr.js":92805,"./ms":11341,"./ms-my":59900,"./ms-my.js":59900,"./ms.js":11341,"./mt":37734,"./mt.js":37734,"./my":19034,"./my.js":19034,"./nb":9324,"./nb.js":9324,"./ne":46495,"./ne.js":46495,"./nl":70673,"./nl-be":76272,"./nl-be.js":76272,"./nl.js":70673,"./nn":72486,"./nn.js":72486,"./oc-lnc":46219,"./oc-lnc.js":46219,"./pa-in":2829,"./pa-in.js":2829,"./pl":78444,"./pl.js":78444,"./pt":53170,"./pt-br":66117,"./pt-br.js":66117,"./pt.js":53170,"./ro":96587,"./ro.js":96587,"./ru":39264,"./ru.js":39264,"./sd":42135,"./sd.js":42135,"./se":95366,"./se.js":95366,"./si":93379,"./si.js":93379,"./sk":46143,"./sk.js":46143,"./sl":196,"./sl.js":196,"./sq":21082,"./sq.js":21082,"./sr":91621,"./sr-cyrl":98963,"./sr-cyrl.js":98963,"./sr.js":91621,"./ss":41404,"./ss.js":41404,"./sv":55685,"./sv.js":55685,"./sw":3872,"./sw.js":3872,"./ta":54106,"./ta.js":54106,"./te":39204,"./te.js":39204,"./tet":83692,"./tet.js":83692,"./tg":86361,"./tg.js":86361,"./th":31735,"./th.js":31735,"./tk":1568,"./tk.js":1568,"./tl-ph":96129,"./tl-ph.js":96129,"./tlh":13759,"./tlh.js":13759,"./tr":81644,"./tr.js":81644,"./tzl":90875,"./tzl.js":90875,"./tzm":16878,"./tzm-latn":11041,"./tzm-latn.js":11041,"./tzm.js":16878,"./ug-cn":74357,"./ug-cn.js":74357,"./uk":74810,"./uk.js":74810,"./ur":86794,"./ur.js":86794,"./uz":28966,"./uz-latn":77959,"./uz-latn.js":77959,"./uz.js":28966,"./vi":35386,"./vi.js":35386,"./x-pseudo":23156,"./x-pseudo.js":23156,"./yo":68028,"./yo.js":68028,"./zh-cn":9330,"./zh-cn.js":9330,"./zh-hk":89380,"./zh-hk.js":89380,"./zh-mo":60874,"./zh-mo.js":60874,"./zh-tw":96508,"./zh-tw.js":96508};function u(f){var e=p(f);return i(e)}function p(f){if(!i.o(r,f)){var e=new Error("Cannot find module '"+f+"'");throw e.code="MODULE_NOT_FOUND",e}return r[f]}u.keys=function(){return Object.keys(r)},u.resolve=p,v.exports=u,u.id=46700},24654:()=>{},30071:(v,S,i)=>{v.exports=i(75242)},58711:(v,S,i)=>{v.exports=i(10323)},14226:(v,S,i)=>{v.exports=i(38762)},15886:(v,S,i)=>{v.exports=i(71873)},34377:(v,S,i)=>{v.exports=i(61599)},28086:(v,S,i)=>{v.exports=i(34097)},56166:(v,S,i)=>{v.exports=i(15149)},48129:(v,S,i)=>{v.exports=i(83361)},10068:(v,S,i)=>{v.exports=i(19095)},45163:(v,S,i)=>{v.exports=i(71420)},45819:(v,S,i)=>{v.exports=i(13178)},84901:(v,S,i)=>{v.exports=i(52049)},35524:(v,S,i)=>{v.exports=i(83655)},71851:(v,S,i)=>{v.exports=i(87054)},91465:(v,S,i)=>{v.exports=i(51946)},95327:(v,S,i)=>{v.exports=i(40764)},37940:(v,S,i)=>{v.exports=i(81214)},35431:(v,S,i)=>{v.exports=i(50881)},53757:(v,S,i)=>{v.exports=i(38813)},46558:(v,S,i)=>{v.exports=i(70157)},53625:(v,S,i)=>{v.exports=i(3502)},31978:(v,S,i)=>{v.exports=i(81610)},33814:(v,S,i)=>{v.exports=i(19543)},84220:(v,S,i)=>{v.exports=i(74046)},40984:(v,S,i)=>{v.exports=i(13731)},32322:(v,S,i)=>{v.exports=i(80129)},44859:(v,S,i)=>{v.exports=i(43720)},54082:(v,S,i)=>{v.exports=i(640)},30508:(v,S,i)=>{v.exports=i(50320)},15865:(v,S,i)=>{v.exports=i(15554)},46245:(v,S,i)=>{v.exports=i(1162)},69605:(v,S,i)=>{v.exports=i(70809)},86413:(v,S,i)=>{v.exports=i(26498)},87513:(v,S,i)=>{v.exports=i(12118)},71455:(v,S,i)=>{v.exports=i(44675)},69253:(v,S,i)=>{v.exports=i(70906)},17015:(v,S,i)=>{v.exports=i(95050)},8225:(v,S,i)=>{v.exports=i(56286)},64975:(v,S,i)=>{v.exports=i(54153)},66627:(v,S,i)=>{v.exports=i(90755)},24677:(v,S,i)=>{v.exports=i(60833)},68645:(v,S,i)=>{v.exports=i(98235)},14306:(v,S,i)=>{v.exports=i(78096)},6379:(v,S,i)=>{v.exports=i(31236)},72632:(v,S,i)=>{v.exports=i(15819)},28033:(v,S,i)=>{v.exports=i(44948)},19621:(v,S,i)=>{v.exports=i(96471)},54839:(v,S,i)=>{v.exports=i(5228)},95343:(v,S,i)=>{v.exports=i(50182)},73921:(v,S,i)=>{v.exports=i(41171)},70891:(v,S,i)=>{v.exports=i(54585)},77576:(v,S,i)=>{v.exports=i(62005)},45862:(v,S,i)=>{v.exports=i(39964)},51134:(v,S,i)=>{v.exports=i(70326)},23591:(v,S,i)=>{v.exports=i(98162)},76593:(v,S,i)=>{v.exports=i(42346)},22714:(v,S,i)=>{v.exports=i(4204)},62734:(v,S,i)=>{v.exports=i(24329)},69138:(v,S,i)=>{v.exports=i(2793)},69244:(v,S,i)=>{v.exports=i(42700)},15805:(v,S,i)=>{v.exports=i(70269)},63380:(v,S,i)=>{v.exports=i(88819)},66342:(v,S,i)=>{v.exports=i(55912)},12885:(v,S,i)=>{var r=i(79599).default,u=i(63380),p=i(77576),f=i(73921),e=i(76593),_=i(6379),y=i(62734),T=i(69138),M=i(28033),R=i(19621);function F(){"use strict";v.exports=F=function(){return Z},v.exports.__esModule=!0,v.exports.default=v.exports;var Z={},J=Object.prototype,Q=J.hasOwnProperty,ee="function"==typeof u?u:{},ue=ee.iterator||"@@iterator",ae=ee.asyncIterator||"@@asyncIterator",$=ee.toStringTag||"@@toStringTag";function se(Ut,Bt,mt){return p(Ut,Bt,{value:mt,enumerable:!0,configurable:!0,writable:!0}),Ut[Bt]}try{se({},"")}catch(Ut){se=function(mt,Yt,Dt){return mt[Yt]=Dt}}function ve(Ut,Bt,mt,Yt){var Hr,ci,Ir,wr,zt=f((Bt&&Bt.prototype instanceof me?Bt:me).prototype),Yn=new en(Yt||[]);return zt._invoke=(Hr=Ut,ci=mt,Ir=Yn,wr="suspendedStart",function(Qr,Kr){if("executing"===wr)throw new Error("Generator is already running");if("completed"===wr){if("throw"===Qr)throw Kr;return{value:void 0,done:!0}}for(Ir.method=Qr,Ir.arg=Kr;;){var In=Ir.delegate;if(In){var Hn=He(In,Ir);if(Hn){if(Hn===he)continue;return Hn}}if("next"===Ir.method)Ir.sent=Ir._sent=Ir.arg;else if("throw"===Ir.method){if("suspendedStart"===wr)throw wr="completed",Ir.arg;Ir.dispatchException(Ir.arg)}else"return"===Ir.method&&Ir.abrupt("return",Ir.arg);wr="executing";var Zr=oe(Hr,ci,Ir);if("normal"===Zr.type){if(wr=Ir.done?"completed":"suspendedYield",Zr.arg===he)continue;return{value:Zr.arg,done:Ir.done}}"throw"===Zr.type&&(wr="completed",Ir.method="throw",Ir.arg=Zr.arg)}}),zt}function oe(Ut,Bt,mt){try{return{type:"normal",arg:Ut.call(Bt,mt)}}catch(Yt){return{type:"throw",arg:Yt}}}Z.wrap=ve;var he={};function me(){}function Oe(){}function ce(){}var dt={};se(dt,ue,function(){return this});var Ye=e&&e(e($t([])));Ye&&Ye!==J&&Q.call(Ye,ue)&&(dt=Ye);var je=ce.prototype=me.prototype=f(dt);function Ie(Ut){var Bt;_(Bt=["next","throw","return"]).call(Bt,function(mt){se(Ut,mt,function(Yt){return this._invoke(mt,Yt)})})}function Ve(Ut,Bt){function mt(Dt,zt,Yn,Hr){var ci=oe(Ut[Dt],Ut,zt);if("throw"!==ci.type){var Ir=ci.arg,wr=Ir.value;return wr&&"object"==r(wr)&&Q.call(wr,"__await")?Bt.resolve(wr.__await).then(function(Qr){mt("next",Qr,Yn,Hr)},function(Qr){mt("throw",Qr,Yn,Hr)}):Bt.resolve(wr).then(function(Qr){Ir.value=Qr,Yn(Ir)},function(Qr){return mt("throw",Qr,Yn,Hr)})}Hr(ci.arg)}var Yt;this._invoke=function(Dt,zt){function Yn(){return new Bt(function(Hr,ci){mt(Dt,zt,Hr,ci)})}return Yt=Yt?Yt.then(Yn,Yn):Yn()}}function He(Ut,Bt){var mt=Ut.iterator[Bt.method];if(void 0===mt){if(Bt.delegate=null,"throw"===Bt.method){if(Ut.iterator.return&&(Bt.method="return",Bt.arg=void 0,He(Ut,Bt),"throw"===Bt.method))return he;Bt.method="throw",Bt.arg=new TypeError("The iterator does not provide a 'throw' method")}return he}var Yt=oe(mt,Ut.iterator,Bt.arg);if("throw"===Yt.type)return Bt.method="throw",Bt.arg=Yt.arg,Bt.delegate=null,he;var Dt=Yt.arg;return Dt?Dt.done?(Bt[Ut.resultName]=Dt.value,Bt.next=Ut.nextLoc,"return"!==Bt.method&&(Bt.method="next",Bt.arg=void 0),Bt.delegate=null,he):Dt:(Bt.method="throw",Bt.arg=new TypeError("iterator result is not an object"),Bt.delegate=null,he)}function Zt(Ut){var Bt={tryLoc:Ut[0]};1 in Ut&&(Bt.catchLoc=Ut[1]),2 in Ut&&(Bt.finallyLoc=Ut[2],Bt.afterLoc=Ut[3]),this.tryEntries.push(Bt)}function st(Ut){var Bt=Ut.completion||{};Bt.type="normal",delete Bt.arg,Ut.completion=Bt}function en(Ut){this.tryEntries=[{tryLoc:"root"}],_(Ut).call(Ut,Zt,this),this.reset(!0)}function $t(Ut){if(Ut){var Bt=Ut[ue];if(Bt)return Bt.call(Ut);if("function"==typeof Ut.next)return Ut;if(!isNaN(Ut.length)){var mt=-1,Yt=function Dt(){for(;++mt<Ut.length;)if(Q.call(Ut,mt))return Dt.value=Ut[mt],Dt.done=!1,Dt;return Dt.value=void 0,Dt.done=!0,Dt};return Yt.next=Yt}}return{next:Gt}}function Gt(){return{value:void 0,done:!0}}return Oe.prototype=ce,se(je,"constructor",ce),se(ce,"constructor",Oe),Oe.displayName=se(ce,$,"GeneratorFunction"),Z.isGeneratorFunction=function(Ut){var Bt="function"==typeof Ut&&Ut.constructor;return!!Bt&&(Bt===Oe||"GeneratorFunction"===(Bt.displayName||Bt.name))},Z.mark=function(Ut){return y?y(Ut,ce):(Ut.__proto__=ce,se(Ut,$,"GeneratorFunction")),Ut.prototype=f(je),Ut},Z.awrap=function(Ut){return{__await:Ut}},Ie(Ve.prototype),se(Ve.prototype,ae,function(){return this}),Z.AsyncIterator=Ve,Z.async=function(Ut,Bt,mt,Yt,Dt){void 0===Dt&&(Dt=T);var zt=new Ve(ve(Ut,Bt,mt,Yt),Dt);return Z.isGeneratorFunction(Bt)?zt:zt.next().then(function(Yn){return Yn.done?Yn.value:zt.next()})},Ie(je),se(je,$,"Generator"),se(je,ue,function(){return this}),se(je,"toString",function(){return"[object Generator]"}),Z.keys=function(Ut){var Bt=[];for(var mt in Ut)Bt.push(mt);return M(Bt).call(Bt),function Yt(){for(;Bt.length;){var Dt=Bt.pop();if(Dt in Ut)return Yt.value=Dt,Yt.done=!1,Yt}return Yt.done=!0,Yt}},Z.values=$t,en.prototype={constructor:en,reset:function(Bt){var mt;if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,_(mt=this.tryEntries).call(mt,st),!Bt)for(var Yt in this)"t"===Yt.charAt(0)&&Q.call(this,Yt)&&!isNaN(+R(Yt).call(Yt,1))&&(this[Yt]=void 0)},stop:function(){this.done=!0;var Bt=this.tryEntries[0].completion;if("throw"===Bt.type)throw Bt.arg;return this.rval},dispatchException:function(Bt){if(this.done)throw Bt;var mt=this;function Yt(Ir,wr){return Yn.type="throw",Yn.arg=Bt,mt.next=Ir,wr&&(mt.method="next",mt.arg=void 0),!!wr}for(var Dt=this.tryEntries.length-1;Dt>=0;--Dt){var zt=this.tryEntries[Dt],Yn=zt.completion;if("root"===zt.tryLoc)return Yt("end");if(zt.tryLoc<=this.prev){var Hr=Q.call(zt,"catchLoc"),ci=Q.call(zt,"finallyLoc");if(Hr&&ci){if(this.prev<zt.catchLoc)return Yt(zt.catchLoc,!0);if(this.prev<zt.finallyLoc)return Yt(zt.finallyLoc)}else if(Hr){if(this.prev<zt.catchLoc)return Yt(zt.catchLoc,!0)}else{if(!ci)throw new Error("try statement without catch or finally");if(this.prev<zt.finallyLoc)return Yt(zt.finallyLoc)}}}},abrupt:function(Bt,mt){for(var Yt=this.tryEntries.length-1;Yt>=0;--Yt){var Dt=this.tryEntries[Yt];if(Dt.tryLoc<=this.prev&&Q.call(Dt,"finallyLoc")&&this.prev<Dt.finallyLoc){var zt=Dt;break}}zt&&("break"===Bt||"continue"===Bt)&&zt.tryLoc<=mt&&mt<=zt.finallyLoc&&(zt=null);var Yn=zt?zt.completion:{};return Yn.type=Bt,Yn.arg=mt,zt?(this.method="next",this.next=zt.finallyLoc,he):this.complete(Yn)},complete:function(Bt,mt){if("throw"===Bt.type)throw Bt.arg;return"break"===Bt.type||"continue"===Bt.type?this.next=Bt.arg:"return"===Bt.type?(this.rval=this.arg=Bt.arg,this.method="return",this.next="end"):"normal"===Bt.type&&mt&&(this.next=mt),he},finish:function(Bt){for(var mt=this.tryEntries.length-1;mt>=0;--mt){var Yt=this.tryEntries[mt];if(Yt.finallyLoc===Bt)return this.complete(Yt.completion,Yt.afterLoc),st(Yt),he}},catch:function(Bt){for(var mt=this.tryEntries.length-1;mt>=0;--mt){var Yt=this.tryEntries[mt];if(Yt.tryLoc===Bt){var Dt=Yt.completion;if("throw"===Dt.type){var zt=Dt.arg;st(Yt)}return zt}}throw new Error("illegal catch attempt")},delegateYield:function(Bt,mt,Yt){return this.delegate={iterator:$t(Bt),resultName:mt,nextLoc:Yt},"next"===this.method&&(this.arg=void 0),he}},Z}v.exports=F,v.exports.__esModule=!0,v.exports.default=v.exports},79599:(v,S,i)=>{var r=i(63380),u=i(66342);function p(f){return v.exports=p="function"==typeof r&&"symbol"==typeof u?function(e){return typeof e}:function(e){return e&&"function"==typeof r&&e.constructor===r&&e!==r.prototype?"symbol":typeof e},v.exports.__esModule=!0,v.exports.default=v.exports,p(f)}v.exports=p,v.exports.__esModule=!0,v.exports.default=v.exports},33950:(v,S,i)=>{var r=i(12885)();v.exports=r;try{regeneratorRuntime=r}catch(u){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},64291:(v,S,i)=>{"use strict";i.d(S,{Z:()=>ae});var p=i(66224);const e=function($,se){for(var ve=$.length;ve--;)if((0,p.Z)($[ve][0],se))return ve;return-1};var y=Array.prototype.splice;function ue($){var se=-1,ve=null==$?0:$.length;for(this.clear();++se<ve;){var oe=$[se];this.set(oe[0],oe[1])}}ue.prototype.clear=function(){this.__data__=[],this.size=0},ue.prototype.delete=function($){var se=this.__data__,ve=e(se,$);return!(ve<0||(ve==se.length-1?se.pop():y.call(se,ve,1),--this.size,0))},ue.prototype.get=function($){var se=this.__data__,ve=e(se,$);return ve<0?void 0:se[ve][1]},ue.prototype.has=function($){return e(this.__data__,$)>-1},ue.prototype.set=function($,se){var ve=this.__data__,oe=e(ve,$);return oe<0?(++this.size,ve.push([$,se])):ve[oe][1]=se,this};const ae=ue},54673:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var r=i(30214),u=i(40309);const f=(0,r.Z)(u.Z,"Map")},79489:(v,S,i)=>{"use strict";i.d(S,{Z:()=>Bt});const p=(0,i(30214).Z)(Object,"create");var R=Object.prototype.hasOwnProperty;var Q=Object.prototype.hasOwnProperty;function ve(mt){var Yt=-1,Dt=null==mt?0:mt.length;for(this.clear();++Yt<Dt;){var zt=mt[Yt];this.set(zt[0],zt[1])}}ve.prototype.clear=function(){this.__data__=p?p(null):{},this.size=0},ve.prototype.delete=function(mt){var Yt=this.has(mt)&&delete this.__data__[mt];return this.size-=Yt?1:0,Yt},ve.prototype.get=function(mt){var Yt=this.__data__;if(p){var Dt=Yt[mt];return"__lodash_hash_undefined__"===Dt?void 0:Dt}return R.call(Yt,mt)?Yt[mt]:void 0},ve.prototype.has=function(mt){var Yt=this.__data__;return p?void 0!==Yt[mt]:Q.call(Yt,mt)},ve.prototype.set=function(mt,Yt){var Dt=this.__data__;return this.size+=this.has(mt)?0:1,Dt[mt]=p&&void 0===Yt?"__lodash_hash_undefined__":Yt,this};const oe=ve;var he=i(64291),me=i(54673);const je=function(mt,Yt){var Dt=mt.__data__;return function(mt){var Yt=typeof mt;return"string"==Yt||"number"==Yt||"symbol"==Yt||"boolean"==Yt?"__proto__"!==mt:null===mt}(Yt)?Dt["string"==typeof Yt?"string":"hash"]:Dt.map};function Ut(mt){var Yt=-1,Dt=null==mt?0:mt.length;for(this.clear();++Yt<Dt;){var zt=mt[Yt];this.set(zt[0],zt[1])}}Ut.prototype.clear=function(){this.size=0,this.__data__={hash:new oe,map:new(me.Z||he.Z),string:new oe}},Ut.prototype.delete=function(mt){var Yt=je(this,mt).delete(mt);return this.size-=Yt?1:0,Yt},Ut.prototype.get=function(mt){return je(this,mt).get(mt)},Ut.prototype.has=function(mt){return je(this,mt).has(mt)},Ut.prototype.set=function(mt,Yt){var Dt=je(this,mt),zt=Dt.size;return Dt.set(mt,Yt),this.size+=Dt.size==zt?0:1,this};const Bt=Ut},7475:(v,S,i)=>{"use strict";i.d(S,{Z:()=>ue});var r=i(64291);var R=i(54673),F=i(79489);function ee(ae){var $=this.__data__=new r.Z(ae);this.size=$.size}ee.prototype.clear=function(){this.__data__=new r.Z,this.size=0},ee.prototype.delete=function(ae){var $=this.__data__,se=$.delete(ae);return this.size=$.size,se},ee.prototype.get=function(ae){return this.__data__.get(ae)},ee.prototype.has=function(ae){return this.__data__.has(ae)},ee.prototype.set=function(ae,$){var se=this.__data__;if(se instanceof r.Z){var ve=se.__data__;if(!R.Z||ve.length<199)return ve.push([ae,$]),this.size=++se.size,this;se=this.__data__=new F.Z(ve)}return se.set(ae,$),this.size=se.size,this};const ue=ee},35770:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});const p=i(40309).Z.Symbol},83345:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});const p=i(40309).Z.Uint8Array},39434:(v,S,i)=>{"use strict";i.d(S,{Z:()=>F});var p=i(2172),f=i(34654),e=i(12434),_=i(28078),y=i(99436),M=Object.prototype.hasOwnProperty;const F=function(Z,J){var Q=(0,f.Z)(Z),ee=!Q&&(0,p.Z)(Z),ue=!Q&&!ee&&(0,e.Z)(Z),ae=!Q&&!ee&&!ue&&(0,y.Z)(Z),$=Q||ee||ue||ae,se=$?function(Z,J){for(var Q=-1,ee=Array(Z);++Q<Z;)ee[Q]=J(Q);return ee}(Z.length,String):[],ve=se.length;for(var oe in Z)(J||M.call(Z,oe))&&(!$||!("length"==oe||ue&&("offset"==oe||"parent"==oe)||ae&&("buffer"==oe||"byteLength"==oe||"byteOffset"==oe)||(0,_.Z)(oe,ve)))&&se.push(oe);return se}},57052:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p,f){for(var e=-1,_=f.length,y=p.length;++e<_;)p[y+e]=f[e];return p}},15427:(v,S,i)=>{"use strict";i.d(S,{Z:()=>_});var r=i(2951),u=i(66224),f=Object.prototype.hasOwnProperty;const _=function(y,T,M){var R=y[T];(!f.call(y,T)||!(0,u.Z)(R,M)||void 0===M&&!(T in y))&&(0,r.Z)(y,T,M)}},2951:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=i(99567);const p=function(f,e,_){"__proto__"==e&&r.Z?(0,r.Z)(f,e,{configurable:!0,enumerable:!0,value:_,writable:!0}):f[e]=_}},57765:(v,S,i)=>{"use strict";i.d(S,{Z:()=>ln});var r=i(7475);var f=i(15427),e=i(57640),_=i(6251);var M=i(76212);var Z=i(27672),J=i(36889),Q=i(99913);var ae=i(74202);var ve=i(22018),oe=i(23359),he=i(81901),Oe=Object.prototype.hasOwnProperty;var ze=i(80609);var Ie=/\w*$/;var Zt=i(35770),st=Zt.Z?Zt.Z.prototype:void 0,en=st?st.valueOf:void 0;var Ut=i(1044);const On=function(Ht,cn,Ct){var pr=Ht.constructor;switch(cn){case"[object ArrayBuffer]":return(0,ze.Z)(Ht);case"[object Boolean]":case"[object Date]":return new pr(+Ht);case"[object DataView]":return function(Ht,cn){var Ct=cn?(0,ze.Z)(Ht.buffer):Ht.buffer;return new Ht.constructor(Ct,Ht.byteOffset,Ht.byteLength)}(Ht,Ct);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,Ut.Z)(Ht,Ct);case"[object Map]":return new pr;case"[object Number]":case"[object String]":return new pr(Ht);case"[object RegExp]":return function(Ht){var cn=new Ht.constructor(Ht.source,Ie.exec(Ht));return cn.lastIndex=Ht.lastIndex,cn}(Ht);case"[object Set]":return new pr;case"[object Symbol]":return function(Ht){return en?Object(en.call(Ht)):{}}(Ht)}};var Wt=i(22595),Jn=i(34654),ir=i(12434),Lr=i(6539);var Ai=i(21162),Tr=i(48514),Nr=Tr.Z&&Tr.Z.isMap;const En=Nr?(0,Ai.Z)(Nr):function(Ht){return(0,Lr.Z)(Ht)&&"[object Map]"==(0,he.Z)(Ht)};var mr=i(4214);var si=Tr.Z&&Tr.Z.isSet;const no=si?(0,Ai.Z)(si):function(Ht){return(0,Lr.Z)(Ht)&&"[object Set]"==(0,he.Z)(Ht)};var jt="[object Arguments]",wn="[object Function]",yo="[object Object]",Li={};Li[jt]=Li["[object Array]"]=Li["[object ArrayBuffer]"]=Li["[object DataView]"]=Li["[object Boolean]"]=Li["[object Date]"]=Li["[object Float32Array]"]=Li["[object Float64Array]"]=Li["[object Int8Array]"]=Li["[object Int16Array]"]=Li["[object Int32Array]"]=Li["[object Map]"]=Li["[object Number]"]=Li[yo]=Li["[object RegExp]"]=Li["[object Set]"]=Li["[object String]"]=Li["[object Symbol]"]=Li["[object Uint8Array]"]=Li["[object Uint8ClampedArray]"]=Li["[object Uint16Array]"]=Li["[object Uint32Array]"]=!0,Li["[object Error]"]=Li[wn]=Li["[object WeakMap]"]=!1;const ln=function ar(Ht,cn,Ct,pr,nn,Cn){var br,zi=1&cn,Wo=2&cn,Do=4&cn;if(Ct&&(br=nn?Ct(Ht,pr,nn,Cn):Ct(Ht)),void 0!==br)return br;if(!(0,mr.Z)(Ht))return Ht;var Js=(0,Jn.Z)(Ht);if(Js){if(br=function(Ht){var cn=Ht.length,Ct=new Ht.constructor(cn);return cn&&"string"==typeof Ht[0]&&Oe.call(Ht,"index")&&(Ct.index=Ht.index,Ct.input=Ht.input),Ct}(Ht),!zi)return(0,J.Z)(Ht,br)}else{var _s=(0,he.Z)(Ht),bs=_s==wn||"[object GeneratorFunction]"==_s;if((0,ir.Z)(Ht))return(0,Z.Z)(Ht,zi);if(_s==yo||_s==jt||bs&&!nn){if(br=Wo||bs?{}:(0,Wt.Z)(Ht),!zi)return Wo?function(Ht,cn){return(0,e.Z)(Ht,(0,ae.Z)(Ht),cn)}(Ht,function(Ht,cn){return Ht&&(0,e.Z)(cn,(0,M.Z)(cn),Ht)}(br,Ht)):function(Ht,cn){return(0,e.Z)(Ht,(0,Q.Z)(Ht),cn)}(Ht,function(Ht,cn){return Ht&&(0,e.Z)(cn,(0,_.Z)(cn),Ht)}(br,Ht))}else{if(!Li[_s])return nn?Ht:{};br=On(Ht,_s,zi)}}Cn||(Cn=new r.Z);var qo=Cn.get(Ht);if(qo)return qo;Cn.set(Ht,br),no(Ht)?Ht.forEach(function(pa){br.add(ar(pa,cn,Ct,pa,Ht,Cn))}):En(Ht)&&Ht.forEach(function(pa,Bs){br.set(Bs,ar(pa,cn,Ct,Bs,Ht,Cn))});var Ia=Js?void 0:(Do?Wo?oe.Z:ve.Z:Wo?M.Z:_.Z)(Ht);return function(Ht,cn){for(var Ct=-1,pr=null==Ht?0:Ht.length;++Ct<pr&&!1!==cn(Ht[Ct],Ct,Ht););}(Ia||Ht,function(pa,Bs){Ia&&(pa=Ht[Bs=pa]),(0,f.Z)(br,Bs,ar(pa,cn,Ct,Bs,Ht,Cn))}),br}},49137:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var r=i(57052),u=i(34654);const f=function(e,_,y){var T=_(e);return(0,u.Z)(e)?T:(0,r.Z)(T,y(e))}},46382:(v,S,i)=>{"use strict";i.d(S,{Z:()=>ue});var r=i(35770),u=Object.prototype,p=u.hasOwnProperty,f=u.toString,e=r.Z?r.Z.toStringTag:void 0;var M=Object.prototype.toString;var Q=r.Z?r.Z.toStringTag:void 0;const ue=function(ae){return null==ae?void 0===ae?"[object Undefined]":"[object Null]":Q&&Q in Object(ae)?function(ae){var $=p.call(ae,e),se=ae[e];try{ae[e]=void 0;var ve=!0}catch(he){}var oe=f.call(ae);return ve&&($?ae[e]=se:delete ae[e]),oe}(ae):function(ae){return M.call(ae)}(ae)}},21162:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p){return function(f){return p(f)}}},80609:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=i(83345);const p=function(f){var e=new f.constructor(f.byteLength);return new r.Z(e).set(new r.Z(f)),e}},27672:(v,S,i)=>{"use strict";i.d(S,{Z:()=>T});var r=i(40309),u="object"==typeof exports&&exports&&!exports.nodeType&&exports,p=u&&"object"==typeof module&&module&&!module.nodeType&&module,e=p&&p.exports===u?r.Z.Buffer:void 0,_=e?e.allocUnsafe:void 0;const T=function(M,R){if(R)return M.slice();var F=M.length,Z=_?_(F):new M.constructor(F);return M.copy(Z),Z}},1044:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=i(80609);const p=function(f,e){var _=e?(0,r.Z)(f.buffer):f.buffer;return new f.constructor(_,f.byteOffset,f.length)}},36889:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p,f){var e=-1,_=p.length;for(f||(f=Array(_));++e<_;)f[e]=p[e];return f}},57640:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var r=i(15427),u=i(2951);const f=function(e,_,y,T){var M=!y;y||(y={});for(var R=-1,F=_.length;++R<F;){var Z=_[R],J=T?T(y[Z],e[Z],Z,y,e):void 0;void 0===J&&(J=e[Z]),M?(0,u.Z)(y,Z,J):(0,r.Z)(y,Z,J)}return y}},99567:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=i(30214);const p=function(){try{var f=(0,r.Z)(Object,"defineProperty");return f({},"",{}),f}catch(e){}}()},7746:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u="object"==typeof global&&global&&global.Object===Object&&global},22018:(v,S,i)=>{"use strict";i.d(S,{Z:()=>e});var r=i(49137),u=i(99913),p=i(6251);const e=function(_){return(0,r.Z)(_,p.Z,u.Z)}},23359:(v,S,i)=>{"use strict";i.d(S,{Z:()=>e});var r=i(49137),u=i(74202),p=i(76212);const e=function(_){return(0,r.Z)(_,p.Z,u.Z)}},30214:(v,S,i)=>{"use strict";i.d(S,{Z:()=>he});var me,r=i(58209),p=i(40309).Z["__core-js_shared__"],e=(me=/[^.]+$/.exec(p&&p.keys&&p.keys.IE_PROTO||""))?"Symbol(src)_1."+me:"";var T=i(4214),M=i(22035),F=/^\[object .+?Constructor\]$/,ue=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const $=function(me){return!(!(0,T.Z)(me)||function(me){return!!e&&e in me}(me))&&((0,r.Z)(me)?ue:F).test((0,M.Z)(me))},he=function(me,Oe){var ce=function(me,Oe){return null==me?void 0:me[Oe]}(me,Oe);return $(ce)?ce:void 0}},11595:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});const p=(0,i(24184).Z)(Object.getPrototypeOf,Object)},99913:(v,S,i)=>{"use strict";i.d(S,{Z:()=>T});var p=i(38387),e=Object.prototype.propertyIsEnumerable,_=Object.getOwnPropertySymbols;const T=_?function(M){return null==M?[]:(M=Object(M),function(M,R){for(var F=-1,Z=null==M?0:M.length,J=0,Q=[];++F<Z;){var ee=M[F];R(ee,F,M)&&(Q[J++]=ee)}return Q}(_(M),function(R){return e.call(M,R)}))}:p.Z},74202:(v,S,i)=>{"use strict";i.d(S,{Z:()=>y});var r=i(57052),u=i(11595),p=i(99913),f=i(38387);const y=Object.getOwnPropertySymbols?function(T){for(var M=[];T;)(0,r.Z)(M,(0,p.Z)(T)),T=(0,u.Z)(T);return M}:f.Z},81901:(v,S,i)=>{"use strict";i.d(S,{Z:()=>dt});var r=i(30214),u=i(40309);const f=(0,r.Z)(u.Z,"DataView");var e=i(54673);const y=(0,r.Z)(u.Z,"Promise"),M=(0,r.Z)(u.Z,"Set"),F=(0,r.Z)(u.Z,"WeakMap");var Z=i(46382),J=i(22035),Q="[object Map]",ue="[object Promise]",ae="[object Set]",$="[object WeakMap]",se="[object DataView]",ve=(0,J.Z)(f),oe=(0,J.Z)(e.Z),he=(0,J.Z)(y),me=(0,J.Z)(M),Oe=(0,J.Z)(F),ce=Z.Z;(f&&ce(new f(new ArrayBuffer(1)))!=se||e.Z&&ce(new e.Z)!=Q||y&&ce(y.resolve())!=ue||M&&ce(new M)!=ae||F&&ce(new F)!=$)&&(ce=function(ze){var Ye=(0,Z.Z)(ze),je="[object Object]"==Ye?ze.constructor:void 0,Ie=je?(0,J.Z)(je):"";if(Ie)switch(Ie){case ve:return se;case oe:return Q;case he:return ue;case me:return ae;case Oe:return $}return Ye});const dt=ce},22595:(v,S,i)=>{"use strict";i.d(S,{Z:()=>T});var r=i(4214),u=Object.create;const f=function(){function M(){}return function(R){if(!(0,r.Z)(R))return{};if(u)return u(R);M.prototype=R;var F=new M;return M.prototype=void 0,F}}();var e=i(11595),_=i(31550);const T=function(M){return"function"!=typeof M.constructor||(0,_.Z)(M)?{}:f((0,e.Z)(M))}},28078:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var u=/^(?:0|[1-9]\d*)$/;const f=function(e,_){var y=typeof e;return!!(_=null==_?9007199254740991:_)&&("number"==y||"symbol"!=y&&u.test(e))&&e>-1&&e%1==0&&e<_}},31550:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});var r=Object.prototype;const p=function(f){var e=f&&f.constructor;return f===("function"==typeof e&&e.prototype||r)}},48514:(v,S,i)=>{"use strict";i.d(S,{Z:()=>y});var r=i(7746),u="object"==typeof exports&&exports&&!exports.nodeType&&exports,p=u&&"object"==typeof module&&module&&!module.nodeType&&module,e=p&&p.exports===u&&r.Z.process;const y=function(){try{return p&&p.require&&p.require("util").types||e&&e.binding&&e.binding("util")}catch(M){}}()},24184:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p,f){return function(e){return p(f(e))}}},40309:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var r=i(7746),u="object"==typeof self&&self&&self.Object===Object&&self;const f=r.Z||u||Function("return this")()},22035:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var u=Function.prototype.toString;const f=function(e){if(null!=e){try{return u.call(e)}catch(_){}try{return e+""}catch(_){}}return""}},66224:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p,f){return p===f||p!=p&&f!=f}},2172:(v,S,i)=>{"use strict";i.d(S,{Z:()=>R});var r=i(46382),u=i(6539);const e=function(F){return(0,u.Z)(F)&&"[object Arguments]"==(0,r.Z)(F)};var _=Object.prototype,y=_.hasOwnProperty,T=_.propertyIsEnumerable;const R=e(function(){return arguments}())?e:function(F){return(0,u.Z)(F)&&y.call(F,"callee")&&!T.call(F,"callee")}},34654:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=Array.isArray},18402:(v,S,i)=>{"use strict";i.d(S,{Z:()=>f});var r=i(58209),u=i(19238);const f=function(e){return null!=e&&(0,u.Z)(e.length)&&!(0,r.Z)(e)}},12434:(v,S,i)=>{"use strict";i.d(S,{Z:()=>R});var r=i(40309),f="object"==typeof exports&&exports&&!exports.nodeType&&exports,e=f&&"object"==typeof module&&module&&!module.nodeType&&module,y=e&&e.exports===f?r.Z.Buffer:void 0;const R=(y?y.isBuffer:void 0)||function(){return!1}},58209:(v,S,i)=>{"use strict";i.d(S,{Z:()=>T});var r=i(46382),u=i(4214);const T=function(M){if(!(0,u.Z)(M))return!1;var R=(0,r.Z)(M);return"[object Function]"==R||"[object GeneratorFunction]"==R||"[object AsyncFunction]"==R||"[object Proxy]"==R}},19238:(v,S,i)=>{"use strict";i.d(S,{Z:()=>p});const p=function(f){return"number"==typeof f&&f>-1&&f%1==0&&f<=9007199254740991}},4214:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p){var f=typeof p;return null!=p&&("object"==f||"function"==f)}},6539:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(p){return null!=p&&"object"==typeof p}},99436:(v,S,i)=>{"use strict";i.d(S,{Z:()=>en});var r=i(46382),u=i(19238),p=i(6539),Ye={};Ye["[object Float32Array]"]=Ye["[object Float64Array]"]=Ye["[object Int8Array]"]=Ye["[object Int16Array]"]=Ye["[object Int32Array]"]=Ye["[object Uint8Array]"]=Ye["[object Uint8ClampedArray]"]=Ye["[object Uint16Array]"]=Ye["[object Uint32Array]"]=!0,Ye["[object Arguments]"]=Ye["[object Array]"]=Ye["[object ArrayBuffer]"]=Ye["[object Boolean]"]=Ye["[object DataView]"]=Ye["[object Date]"]=Ye["[object Error]"]=Ye["[object Function]"]=Ye["[object Map]"]=Ye["[object Number]"]=Ye["[object Object]"]=Ye["[object RegExp]"]=Ye["[object Set]"]=Ye["[object String]"]=Ye["[object WeakMap]"]=!1;var Ve=i(21162),He=i(48514),Zt=He.Z&&He.Z.isTypedArray;const en=Zt?(0,Ve.Z)(Zt):function($t){return(0,p.Z)($t)&&(0,u.Z)($t.length)&&!!Ye[(0,r.Z)($t)]}},6251:(v,S,i)=>{"use strict";i.d(S,{Z:()=>Z});var r=i(39434),u=i(31550);const e=(0,i(24184).Z)(Object.keys,Object);var y=Object.prototype.hasOwnProperty;var R=i(18402);const Z=function(J){return(0,R.Z)(J)?(0,r.Z)(J):function(J){if(!(0,u.Z)(J))return e(J);var Q=[];for(var ee in Object(J))y.call(J,ee)&&"constructor"!=ee&&Q.push(ee);return Q}(J)}},76212:(v,S,i)=>{"use strict";i.d(S,{Z:()=>Z});var r=i(39434),u=i(4214),p=i(31550);var y=Object.prototype.hasOwnProperty;const M=function(J){if(!(0,u.Z)(J))return function(J){var Q=[];if(null!=J)for(var ee in Object(J))Q.push(ee);return Q}(J);var Q=(0,p.Z)(J),ee=[];for(var ue in J)"constructor"==ue&&(Q||!y.call(J,ue))||ee.push(ue);return ee};var R=i(18402);const Z=function(J){return(0,R.Z)(J)?(0,r.Z)(J,!0):M(J)}},38387:(v,S,i)=>{"use strict";i.d(S,{Z:()=>u});const u=function(){return[]}}},v=>{v(v.s=66492)}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.ab6c27cac6d7501e18e8.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.ab6c27cac6d7501e18e8.js
new file mode 100644 (file)
index 0000000..e395e4a
--- /dev/null
@@ -0,0 +1 @@
+(()=>{"use strict";var e,h={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={id:e,loaded:!1,exports:{}};return h[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=h,e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(o=0;o<e.length;o++){for(var[t,f,i]=e[o],s=!0,c=0;c<t.length;c++)(!1&i||a>=i)&&Object.keys(r.O).every(b=>r.O[b](t[c]))?t.splice(c--,1):(s=!1,i<a&&(a=i));if(s){e.splice(o--,1);var l=f();void 0!==l&&(n=l)}}return n}i=i||0;for(var o=e.length;o>0&&e[o-1][2]>i;o--)e[o]=e[o-1];e[o]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},(()=>{var n,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;r.t=function(t,f){if(1&f&&(t=this(t)),8&f||"object"==typeof t&&t&&(4&f&&t.__esModule||16&f&&"function"==typeof t.then))return t;var i=Object.create(null);r.r(i);var o={};n=n||[null,e({}),e([]),e(e)];for(var a=2&f&&t;"object"==typeof a&&!~n.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(s=>o[s]=()=>t[s]);return o.default=()=>t,r.d(i,o),i}})(),r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{281:"7c1918629ff8b413cc76",483:"43ef92bcd845cb24eae3",585:"7d0bcf3a0ac0c40fef3b"}[e]+".js",r.miniCssF=e=>"styles.ffb7f665775e3c191fa3.css",r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="ceph-dashboard:";r.l=(t,f,i,o)=>{if(e[t])e[t].push(f);else{var a,s;if(void 0!==i)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var d=c[l];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==n+i){a=d;break}}a||(s=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+i),a.src=r.tu(t)),e[t]=[f];var u=(_,b)=>{a.onerror=a.onload=null,clearTimeout(p);var g=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),g&&g.forEach(y=>y(b)),_)return _(b)},p=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tu=n=>(void 0===e&&(e={createScriptURL:t=>t},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(n))})(),r.p="",(()=>{var e={666:0};r.f.j=(f,i)=>{var o=r.o(e,f)?e[f]:void 0;if(0!==o)if(o)i.push(o[2]);else if(666!=f){var a=new Promise((d,u)=>o=e[f]=[d,u]);i.push(o[2]=a);var s=r.p+r.u(f),c=new Error;r.l(s,d=>{if(r.o(e,f)&&(0!==(o=e[f])&&(e[f]=void 0),o)){var u=d&&("load"===d.type?"missing":d.type),p=d&&d.target&&d.target.src;c.message="Loading chunk "+f+" failed.\n("+u+": "+p+")",c.name="ChunkLoadError",c.type=u,c.request=p,o[1](c)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var c,l,[o,a,s]=i,d=0;for(c in a)r.o(a,c)&&(r.m[c]=a[c]);if(s)var u=s(r);for(f&&f(i);d<o.length;d++)r.o(e,l=o[d])&&e[l]&&e[l][0](),e[o[d]]=0;return r.O(u)},t=self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})()})();
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.d9a3c3d3ac8fa3cc7c93.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.d9a3c3d3ac8fa3cc7c93.js
deleted file mode 100644 (file)
index 30b4b0d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,v={},h={};function r(e){var n=h[e];if(void 0!==n)return n.exports;var t=h[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=v,e=[],r.O=(n,t,f,d)=>{if(!t){var a=1/0;for(i=0;i<e.length;i++){for(var[t,f,d]=e[i],s=!0,o=0;o<t.length;o++)(!1&d||a>=d)&&Object.keys(r.O).every(b=>r.O[b](t[o]))?t.splice(o--,1):(s=!1,d<a&&(a=d));if(s){e.splice(i--,1);var u=f();void 0!==u&&(n=u)}}return n}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[t,f,d]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{281:"cd14092ccedeaf2d7d79",330:"4192d10f1b1db19145cc",585:"764bfab2e2f489fdfd7f"}[e]+".js",r.miniCssF=e=>"styles.e6093c94066da7ab35c7.css",r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="ceph-dashboard:";r.l=(t,f,d,i)=>{if(e[t])e[t].push(f);else{var a,s;if(void 0!==d)for(var o=document.getElementsByTagName("script"),u=0;u<o.length;u++){var l=o[u];if(l.getAttribute("src")==t||l.getAttribute("data-webpack")==n+d){a=l;break}}a||(s=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+d),a.src=r.tu(t)),e[t]=[f];var c=(g,b)=>{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(m=>m(b)),g)return g(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tu=n=>(void 0===e&&(e={createScriptURL:t=>t},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(n))})(),r.p="",(()=>{var e={666:0};r.f.j=(f,d)=>{var i=r.o(e,f)?e[f]:void 0;if(0!==i)if(i)d.push(i[2]);else if(666!=f){var a=new Promise((l,c)=>i=e[f]=[l,c]);d.push(i[2]=a);var s=r.p+r.u(f),o=new Error;r.l(s,l=>{if(r.o(e,f)&&(0!==(i=e[f])&&(e[f]=void 0),i)){var c=l&&("load"===l.type?"missing":l.type),p=l&&l.target&&l.target.src;o.message="Loading chunk "+f+" failed.\n("+c+": "+p+")",o.name="ChunkLoadError",o.type=c,o.request=p,i[1](o)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,d)=>{var o,u,[i,a,s]=d,l=0;for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)var c=s(r);for(f&&f(d);l<i.length;l++)r.o(e,u=i[l])&&e[u]&&e[u][0](),e[i[l]]=0;return r.O(c)},t=self.webpackChunkceph_dashboard=self.webpackChunkceph_dashboard||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})()})();
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.e6093c94066da7ab35c7.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.e6093c94066da7ab35c7.css
deleted file mode 100644 (file)
index 7f607f0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-@charset "UTF-8";.swagger-ui{color:#3b4151;
-  /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:sans-serif}.swagger-ui html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:initial;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{-webkit-text-decoration-skip:objects;background-color:initial}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:initial}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:#0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:#0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid #0000}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid #0000}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid #0000}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid #0000}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:#ffffffe6}.swagger-ui .b--white-80{border-color:#fffc}.swagger-ui .b--white-70{border-color:#ffffffb3}.swagger-ui .b--white-60{border-color:#fff9}.swagger-ui .b--white-50{border-color:#ffffff80}.swagger-ui .b--white-40{border-color:#fff6}.swagger-ui .b--white-30{border-color:#ffffff4d}.swagger-ui .b--white-20{border-color:#fff3}.swagger-ui .b--white-10{border-color:#ffffff1a}.swagger-ui .b--white-05{border-color:#ffffff0d}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.013)}.swagger-ui .b--black-90{border-color:#000000e6}.swagger-ui .b--black-80{border-color:#000c}.swagger-ui .b--black-70{border-color:#000000b3}.swagger-ui .b--black-60{border-color:#0009}.swagger-ui .b--black-50{border-color:#00000080}.swagger-ui .b--black-40{border-color:#0006}.swagger-ui .b--black-30{border-color:#0000004d}.swagger-ui .b--black-20{border-color:#0003}.swagger-ui .b--black-10{border-color:#0000001a}.swagger-ui .b--black-05{border-color:#0000000d}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.013)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:#0000}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5{box-shadow:4px 4px 8px 0 #0003}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-ns{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-ns{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-ns{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-ns{box-shadow:4px 4px 8px 0 #0003}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .shadow-1-m{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-m{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-m{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-m{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-m{box-shadow:4px 4px 8px 0 #0003}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-l{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-l{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-l{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-l{box-shadow:4px 4px 8px 0 #0003}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf:after,.swagger-ui .cf:before{content:" ";display:table}.swagger-ui .cf:after{clear:both}.swagger-ui .cf{*zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:flex}.swagger-ui .inline-flex{display:inline-flex}.swagger-ui .flex-auto{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{flex:none}.swagger-ui .flex-column{flex-direction:column}.swagger-ui .flex-row{flex-direction:row}.swagger-ui .flex-wrap{flex-wrap:wrap}.swagger-ui .flex-nowrap{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{flex-direction:column-reverse}.swagger-ui .flex-row-reverse{flex-direction:row-reverse}.swagger-ui .items-start{align-items:flex-start}.swagger-ui .items-end{align-items:flex-end}.swagger-ui .items-center{align-items:center}.swagger-ui .items-baseline{align-items:baseline}.swagger-ui .items-stretch{align-items:stretch}.swagger-ui .self-start{align-self:flex-start}.swagger-ui .self-end{align-self:flex-end}.swagger-ui .self-center{align-self:center}.swagger-ui .self-baseline{align-self:baseline}.swagger-ui .self-stretch{align-self:stretch}.swagger-ui .justify-start{justify-content:flex-start}.swagger-ui .justify-end{justify-content:flex-end}.swagger-ui .justify-center{justify-content:center}.swagger-ui .justify-between{justify-content:space-between}.swagger-ui .justify-around{justify-content:space-around}.swagger-ui .content-start{align-content:flex-start}.swagger-ui .content-end{align-content:flex-end}.swagger-ui .content-center{align-content:center}.swagger-ui .content-between{align-content:space-between}.swagger-ui .content-around{align-content:space-around}.swagger-ui .content-stretch{align-content:stretch}.swagger-ui .order-0{order:0}.swagger-ui .order-1{order:1}.swagger-ui .order-2{order:2}.swagger-ui .order-3{order:3}.swagger-ui .order-4{order:4}.swagger-ui .order-5{order:5}.swagger-ui .order-6{order:6}.swagger-ui .order-7{order:7}.swagger-ui .order-8{order:8}.swagger-ui .order-last{order:99999}.swagger-ui .flex-grow-0{flex-grow:0}.swagger-ui .flex-grow-1{flex-grow:1}.swagger-ui .flex-shrink-0{flex-shrink:0}.swagger-ui .flex-shrink-1{flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:flex}.swagger-ui .inline-flex-ns{display:inline-flex}.swagger-ui .flex-auto-ns{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{flex:none}.swagger-ui .flex-column-ns{flex-direction:column}.swagger-ui .flex-row-ns{flex-direction:row}.swagger-ui .flex-wrap-ns{flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{flex-direction:row-reverse}.swagger-ui .items-start-ns{align-items:flex-start}.swagger-ui .items-end-ns{align-items:flex-end}.swagger-ui .items-center-ns{align-items:center}.swagger-ui .items-baseline-ns{align-items:baseline}.swagger-ui .items-stretch-ns{align-items:stretch}.swagger-ui .self-start-ns{align-self:flex-start}.swagger-ui .self-end-ns{align-self:flex-end}.swagger-ui .self-center-ns{align-self:center}.swagger-ui .self-baseline-ns{align-self:baseline}.swagger-ui .self-stretch-ns{align-self:stretch}.swagger-ui .justify-start-ns{justify-content:flex-start}.swagger-ui .justify-end-ns{justify-content:flex-end}.swagger-ui .justify-center-ns{justify-content:center}.swagger-ui .justify-between-ns{justify-content:space-between}.swagger-ui .justify-around-ns{justify-content:space-around}.swagger-ui .content-start-ns{align-content:flex-start}.swagger-ui .content-end-ns{align-content:flex-end}.swagger-ui .content-center-ns{align-content:center}.swagger-ui .content-between-ns{align-content:space-between}.swagger-ui .content-around-ns{align-content:space-around}.swagger-ui .content-stretch-ns{align-content:stretch}.swagger-ui .order-0-ns{order:0}.swagger-ui .order-1-ns{order:1}.swagger-ui .order-2-ns{order:2}.swagger-ui .order-3-ns{order:3}.swagger-ui .order-4-ns{order:4}.swagger-ui .order-5-ns{order:5}.swagger-ui .order-6-ns{order:6}.swagger-ui .order-7-ns{order:7}.swagger-ui .order-8-ns{order:8}.swagger-ui .order-last-ns{order:99999}.swagger-ui .flex-grow-0-ns{flex-grow:0}.swagger-ui .flex-grow-1-ns{flex-grow:1}.swagger-ui .flex-shrink-0-ns{flex-shrink:0}.swagger-ui .flex-shrink-1-ns{flex-shrink:1}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .flex-m{display:flex}.swagger-ui .inline-flex-m{display:inline-flex}.swagger-ui .flex-auto-m{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{flex:none}.swagger-ui .flex-column-m{flex-direction:column}.swagger-ui .flex-row-m{flex-direction:row}.swagger-ui .flex-wrap-m{flex-wrap:wrap}.swagger-ui .flex-nowrap-m{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{flex-direction:row-reverse}.swagger-ui .items-start-m{align-items:flex-start}.swagger-ui .items-end-m{align-items:flex-end}.swagger-ui .items-center-m{align-items:center}.swagger-ui .items-baseline-m{align-items:baseline}.swagger-ui .items-stretch-m{align-items:stretch}.swagger-ui .self-start-m{align-self:flex-start}.swagger-ui .self-end-m{align-self:flex-end}.swagger-ui .self-center-m{align-self:center}.swagger-ui .self-baseline-m{align-self:baseline}.swagger-ui .self-stretch-m{align-self:stretch}.swagger-ui .justify-start-m{justify-content:flex-start}.swagger-ui .justify-end-m{justify-content:flex-end}.swagger-ui .justify-center-m{justify-content:center}.swagger-ui .justify-between-m{justify-content:space-between}.swagger-ui .justify-around-m{justify-content:space-around}.swagger-ui .content-start-m{align-content:flex-start}.swagger-ui .content-end-m{align-content:flex-end}.swagger-ui .content-center-m{align-content:center}.swagger-ui .content-between-m{align-content:space-between}.swagger-ui .content-around-m{align-content:space-around}.swagger-ui .content-stretch-m{align-content:stretch}.swagger-ui .order-0-m{order:0}.swagger-ui .order-1-m{order:1}.swagger-ui .order-2-m{order:2}.swagger-ui .order-3-m{order:3}.swagger-ui .order-4-m{order:4}.swagger-ui .order-5-m{order:5}.swagger-ui .order-6-m{order:6}.swagger-ui .order-7-m{order:7}.swagger-ui .order-8-m{order:8}.swagger-ui .order-last-m{order:99999}.swagger-ui .flex-grow-0-m{flex-grow:0}.swagger-ui .flex-grow-1-m{flex-grow:1}.swagger-ui .flex-shrink-0-m{flex-shrink:0}.swagger-ui .flex-shrink-1-m{flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:flex}.swagger-ui .inline-flex-l{display:inline-flex}.swagger-ui .flex-auto-l{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{flex:none}.swagger-ui .flex-column-l{flex-direction:column}.swagger-ui .flex-row-l{flex-direction:row}.swagger-ui .flex-wrap-l{flex-wrap:wrap}.swagger-ui .flex-nowrap-l{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{flex-direction:row-reverse}.swagger-ui .items-start-l{align-items:flex-start}.swagger-ui .items-end-l{align-items:flex-end}.swagger-ui .items-center-l{align-items:center}.swagger-ui .items-baseline-l{align-items:baseline}.swagger-ui .items-stretch-l{align-items:stretch}.swagger-ui .self-start-l{align-self:flex-start}.swagger-ui .self-end-l{align-self:flex-end}.swagger-ui .self-center-l{align-self:center}.swagger-ui .self-baseline-l{align-self:baseline}.swagger-ui .self-stretch-l{align-self:stretch}.swagger-ui .justify-start-l{justify-content:flex-start}.swagger-ui .justify-end-l{justify-content:flex-end}.swagger-ui .justify-center-l{justify-content:center}.swagger-ui .justify-between-l{justify-content:space-between}.swagger-ui .justify-around-l{justify-content:space-around}.swagger-ui .content-start-l{align-content:flex-start}.swagger-ui .content-end-l{align-content:flex-end}.swagger-ui .content-center-l{align-content:center}.swagger-ui .content-between-l{align-content:space-between}.swagger-ui .content-around-l{align-content:space-around}.swagger-ui .content-stretch-l{align-content:stretch}.swagger-ui .order-0-l{order:0}.swagger-ui .order-1-l{order:1}.swagger-ui .order-2-l{order:2}.swagger-ui .order-3-l{order:3}.swagger-ui .order-4-l{order:4}.swagger-ui .order-5-l{order:5}.swagger-ui .order-6-l{order:6}.swagger-ui .order-7-l{order:7}.swagger-ui .order-8-l{order:8}.swagger-ui .order-last-l{order:99999}.swagger-ui .flex-grow-0-l{flex-grow:0}.swagger-ui .flex-grow-1-l{flex-grow:1}.swagger-ui .flex-shrink-0-l{flex-shrink:0}.swagger-ui .flex-shrink-1-l{flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.3333333333%}.swagger-ui .w-two-thirds{width:66.6666666667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.3333333333%}.swagger-ui .w-two-thirds-ns{width:66.6666666667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.3333333333%}.swagger-ui .w-two-thirds-m{width:66.6666666667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.3333333333%}.swagger-ui .w-two-thirds-l{width:66.6666666667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{transform:rotate(45deg)}.swagger-ui .rotate-90{transform:rotate(90deg)}.swagger-ui .rotate-135{transform:rotate(135deg)}.swagger-ui .rotate-180{transform:rotate(180deg)}.swagger-ui .rotate-225{transform:rotate(225deg)}.swagger-ui .rotate-270{transform:rotate(270deg)}.swagger-ui .rotate-315{transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{transform:rotate(45deg)}.swagger-ui .rotate-90-ns{transform:rotate(90deg)}.swagger-ui .rotate-135-ns{transform:rotate(135deg)}.swagger-ui .rotate-180-ns{transform:rotate(180deg)}.swagger-ui .rotate-225-ns{transform:rotate(225deg)}.swagger-ui .rotate-270-ns{transform:rotate(270deg)}.swagger-ui .rotate-315-ns{transform:rotate(315deg)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .rotate-45-m{transform:rotate(45deg)}.swagger-ui .rotate-90-m{transform:rotate(90deg)}.swagger-ui .rotate-135-m{transform:rotate(135deg)}.swagger-ui .rotate-180-m{transform:rotate(180deg)}.swagger-ui .rotate-225-m{transform:rotate(225deg)}.swagger-ui .rotate-270-m{transform:rotate(270deg)}.swagger-ui .rotate-315-m{transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{transform:rotate(45deg)}.swagger-ui .rotate-90-l{transform:rotate(90deg)}.swagger-ui .rotate-135-l{transform:rotate(135deg)}.swagger-ui .rotate-180-l{transform:rotate(180deg)}.swagger-ui .rotate-225-l{transform:rotate(225deg)}.swagger-ui .rotate-270-l{transform:rotate(270deg)}.swagger-ui .rotate-315-l{transform:rotate(315deg)}}.swagger-ui .black-90{color:#000000e6}.swagger-ui .black-80{color:#000c}.swagger-ui .black-70{color:#000000b3}.swagger-ui .black-60{color:#0009}.swagger-ui .black-50{color:#00000080}.swagger-ui .black-40{color:#0006}.swagger-ui .black-30{color:#0000004d}.swagger-ui .black-20{color:#0003}.swagger-ui .black-10{color:#0000001a}.swagger-ui .black-05{color:#0000000d}.swagger-ui .white-90{color:#ffffffe6}.swagger-ui .white-80{color:#fffc}.swagger-ui .white-70{color:#ffffffb3}.swagger-ui .white-60{color:#fff9}.swagger-ui .white-50{color:#ffffff80}.swagger-ui .white-40{color:#fff6}.swagger-ui .white-30{color:#ffffff4d}.swagger-ui .white-20{color:#fff3}.swagger-ui .white-10{color:#ffffff1a}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:#000000e6}.swagger-ui .bg-black-80{background-color:#000c}.swagger-ui .bg-black-70{background-color:#000000b3}.swagger-ui .bg-black-60{background-color:#0009}.swagger-ui .bg-black-50{background-color:#00000080}.swagger-ui .bg-black-40{background-color:#0006}.swagger-ui .bg-black-30{background-color:#0000004d}.swagger-ui .bg-black-20{background-color:#0003}.swagger-ui .bg-black-10{background-color:#0000001a}.swagger-ui .bg-black-05{background-color:#0000000d}.swagger-ui .bg-white-90{background-color:#ffffffe6}.swagger-ui .bg-white-80{background-color:#fffc}.swagger-ui .bg-white-70{background-color:#ffffffb3}.swagger-ui .bg-white-60{background-color:#fff9}.swagger-ui .bg-white-50{background-color:#ffffff80}.swagger-ui .bg-white-40{background-color:#fff6}.swagger-ui .bg-white-30{background-color:#ffffff4d}.swagger-ui .bg-white-20{background-color:#fff3}.swagger-ui .bg-white-10{background-color:#ffffff1a}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:initial}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:#000000e6}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:#000c}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:#000000b3}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:#0009}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:#00000080}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:#0006}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:#0000004d}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:#0003}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:#0000001a}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:#ffffffe6}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:#fffc}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:#ffffffb3}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:#fff9}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:#ffffff80}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:#fff6}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:#ffffff4d}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:#fff3}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:#ffffff1a}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:initial}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:#000000e6}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:#000c}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:#000000b3}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:#0009}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:#00000080}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:#0006}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:#0000004d}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:#0003}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:#0000001a}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:#ffffffe6}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:#fffc}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:#ffffffb3}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:#fff9}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:#ffffff80}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:#fff6}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:#ffffff4d}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:#fff3}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:#ffffff1a}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:#ffffff1a}.swagger-ui .stripe-dark:nth-child(odd){background-color:#0000001a}.swagger-ui .strike{text-decoration:line-through}.swagger-ui .underline{text-decoration:underline}.swagger-ui .no-underline{text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{text-decoration:line-through}.swagger-ui .underline-ns{text-decoration:underline}.swagger-ui .no-underline-ns{text-decoration:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .strike-m{text-decoration:line-through}.swagger-ui .underline-m{text-decoration:underline}.swagger-ui .no-underline-m{text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{text-decoration:line-through}.swagger-ui .underline-l{text-decoration:underline}.swagger-ui .no-underline-l{text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}@media screen and (min-width:30em){.swagger-ui .clip-ns{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .clip-m{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:60em){.swagger-ui .clip-l{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:initial}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:initial}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .v-base-m{vertical-align:initial}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:initial}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5;transition:opacity .15s ease-in}.swagger-ui .dim:active{opacity:.8;transition:opacity .15s ease-out}.swagger-ui .glow{transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1;transition:opacity .15s ease-in}.swagger-ui .hide-child .child{opacity:0;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{transform:scale(1.05)}.swagger-ui .grow:active{transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{transform:scale(1.2)}.swagger-ui .grow-large:active{transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover:after{border-radius:inherit;box-shadow:0 0 16px 2px #0003;content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus:after,.swagger-ui .shadow-hover:hover:after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial{z-index:auto}.swagger-ui .z-unset{z-index:unset}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.swagger-ui .wrapper{box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:flex;flex-direction:column}.swagger-ui .try-out.btn-group{display:flex;flex:0.1 2 auto;padding:0}.swagger-ui .try-out__btn{margin-left:1.25rem}.swagger-ui .opblock-tag{align-items:center;border-bottom:1px solid #3b41514d;cursor:pointer;display:flex;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui .opblock-tag:hover{background:#00000005}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{flex:1}.swagger-ui .opblock-tag svg{transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;flex:1;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;box-shadow:0 0 3px #00000030;margin:0 0 15px}.swagger-ui .opblock .tab-header{display:flex;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span:after{background:gray;bottom:-15px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{align-items:center;background:#fffc;box-shadow:0 1px 2px #0000001a;display:flex;min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header>label{align-items:center;color:#3b4151;display:flex;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 0;text-align:center;text-shadow:0 1px 0 #0000001a}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{align-items:center;color:#3b4151;display:flex;font-family:monospace;font-size:16px;font-weight:600;padding:0 10px;word-break:break-word}@media (max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{flex-shrink:0;max-width:calc(100% - 110px - 15rem)}.swagger-ui .opblock .opblock-summary-path__deprecated{text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;flex:1 1 auto;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary{align-items:center;cursor:pointer;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock.opblock-post{background:#49cc901a;border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span:after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:#fca1301a;border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span:after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:#f93e3e1a;border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span:after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:#61affe1a;border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span:after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:#50e3c21a;border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span:after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:#9012fe1a;border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span:after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:#0d5aa71a;border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span:after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:#ebebeb1a;border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span:after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .tab{display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type:after{background:#0003;content:"";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .tab li button.tablinks{background:none;border:0;color:inherit;font-family:inherit;font-weight:inherit;padding:0}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:flex;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{white-space:normal}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{word-wrap:break-word;background:#333;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important;word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{align-items:center;background:#7d8293;border-radius:4px;bottom:10px;color:#fff;cursor:pointer;display:flex;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;justify-content:center;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;box-shadow:0 1px 2px 0 #00000026;margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{align-items:flex-end;display:flex}.swagger-ui .scheme-container .schemes>label{color:#3b4151;display:flex;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>label select{min-width:130px;text-transform:uppercase}.swagger-ui .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading:after{color:#3b4151;content:"loading";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading:before{animation:rotation 1s linear infinite,opacity .5s;backface-visibility:hidden;border-radius:100%;border:2px solid #5555551a;border-top-color:#0009;content:"";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@keyframes rotation{to{transform:rotate(1turn)}}.swagger-ui .response-controls{display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:flex;font-size:1.2em;height:100%;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:#0000;border:2px solid gray;border-radius:4px;box-shadow:0 1px 2px #0000001a;color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{box-shadow:0 0 5px #0000004d}.swagger-ui .btn.cancel{background-color:initial;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:initial;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:flex;padding:30px}.swagger-ui .btn-group .btn{flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 10px}.swagger-ui .authorization__btn.locked{opacity:1}.swagger-ui .authorization__btn.unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{fill:#707070;transition:all .3s}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;display:flex;height:30px;justify-content:center;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" aria-hidden="true"><path fill="%23fff" fill-rule="evenodd" d="M4 12h4v1H4v-1zm5-6H4v1h5V6zm2 3V7l-3 3 3 3v-2h5V9h-5zM6.5 8H4v1h2.5V8zM4 11h2.5v-1H4v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H3c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V5H3v9h10v-2zM4 4h8c0-.55-.45-1-1-1h-1c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H5c-.55 0-1 .45-1 1z"/></svg>') 50% no-repeat;border:none;flex-grow:1;flex-shrink:1;height:25px}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px}.swagger-ui select{-moz-appearance:none;appearance:none;background:#f7f7f7 url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11l3.418-3.141z"/></svg>') right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;box-shadow:0 1px 2px 0 #00000040;color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media (max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}@media (max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:#fffc;border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;transition:opacity .5s}.swagger-ui .checkbox label{display:flex}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:400!important;font-weight:600;margin:0!important}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url('data:image/svg+xml;charset=utf-8,<svg width="10" height="8" viewBox="3 7 10 8" xmlns="http://www.w3.org/2000/svg"><path fill="%2341474E" fill-rule="evenodd" d="M6.333 15 3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z"/></svg>') 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:#000c;bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;box-shadow:0 10px 30px 0 #0003;left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{align-items:center;border-bottom:1px solid #ebebeb;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{-moz-appearance:none;appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .model-toggle.collapsed{transform:rotate(0deg)}.swagger-ui .model-toggle:after{background:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>') 50% no-repeat;background-size:100%;content:"";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{visibility:visible}.swagger-ui .model-hint{background:#000000b3;border-radius:4px;color:#ebebeb;padding:.1em .5em;position:absolute;top:-1.8em;visibility:hidden;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui section.models{border:1px solid #3b41514d;border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid #3b41514d;margin:0 0 5px}.swagger-ui section.models h4{align-items:center;color:#606060;cursor:pointer;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui section.models h4 svg{transition:all .4s}.swagger-ui section.models h4 span{flex:1}.swagger-ui section.models h4:hover{background:#00000005}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:#0000000d;border-radius:4px;margin:0 20px 15px;position:relative;transition:all .5s}.swagger-ui section.models .model-container:hover{background:#00000012}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui .model-box{background:#0000001a;border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid #3b415133;color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input[type=text]{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required:after{color:#f009;content:"required";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper,.swagger-ui .topbar a{align-items:center;display:flex}.swagger-ui .topbar a{color:#fff;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:flex;flex:3;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{align-items:center;color:#f0f0f0;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;box-shadow:none;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info pre{font-size:14px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300!important;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:flex;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:flex;flex:1;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{animation:scaleUp .5s;background:#f93e3e1a;border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{align-items:center;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;margin:0}@keyframes scaleUp{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:#0000000d;border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block}.toast-center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:#0000;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6Jy8+PC9zdmc+")}.toast-error{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEyMS42IDMxMy4xYzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMzggMzc3LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMzEybC02NS4xIDY1LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwxMzQuNCAzMzhjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2NS42LTY1LTY1LjYtNjUuMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDM5LjYtMzkuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjUgNjUuNyA2NS4xLTY1LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDM5LjYgMzkuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzEyIDI1Nmw2NS42IDY1LjF6Jy8+PC9zdmc+")}.toast-success{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxeicvPjwvc3ZnPg==")}.toast-warning{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1NzYgNTEyJyB3aWR0aD0nNTc2JyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0eicvPjwvc3ZnPg==")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width: 240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width: 241px) and (max-width: 480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width: 481px) and (max-width: 768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}.tree-children.tree-children-no-padding{padding-left:0}.tree-children{overflow:hidden}.node-drop-slot{display:block;height:2px}.node-drop-slot.is-dragging-over{background:#dfe;height:20px;border:2px dotted #888}.toggle-children-wrapper-expanded .toggle-children{transform:rotate(90deg)}.toggle-children-wrapper-collapsed .toggle-children{transform:rotate(0)}.toggle-children-wrapper{padding:2px 3px 5px 1px}.toggle-children{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzRkRFQjcxODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzRkRFQjcwODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTk5NzA1OGEtZDI3OC00NDZkLWE4ODgtNGM4MGQ4YWI1NzNmIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzRkZmQxMGMtY2NlNS0xMTc4LWE5OGQtY2NkZmM5ODk5YWYwIi8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Z2x5cGhpY29uczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5iogFwAAAGhJREFUeNpiYGBgKABigf///zOQg0EARH4A4gZyDIIZ8B/JoAJKDIDhB0CcQIkBRBtEyABkgxwoMQCGD6AbRKoBGAYxQgXIBRuZGKgAKPIC3QLxArnRSHZCIjspk52ZKMrOFBUoAAEGAKnq593MQAZtAAAAAElFTkSuQmCC");height:8px;width:9px;background-size:contain;background-repeat:no-repeat;background-position:50%}.toggle-children,.toggle-children-placeholder{display:inline-block;position:relative;top:1px}.toggle-children-placeholder{height:10px;width:10px;padding-right:3px}.node-content-wrapper{display:inline-block;padding:2px 5px;border-radius:2px;transition:background-color .15s,box-shadow .15s}.node-wrapper{display:flex;align-items:flex-start}.node-content-wrapper-active,.node-content-wrapper-active.node-content-wrapper-focused,.node-content-wrapper.node-content-wrapper-active:hover{background:#beebff}.node-content-wrapper-focused{background:#e7f4f9}.node-content-wrapper:hover{background:#f7fbff}.node-content-wrapper-active,.node-content-wrapper-focused,.node-content-wrapper:hover{box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over{background:#dfe;box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over-disabled{opacity:.5}tree-viewport{-webkit-tap-highlight-color:transparent;height:100%;overflow:auto;display:block}.tree-children{padding-left:20px}.empty-tree-drop-slot .node-drop-slot{height:20px;min-width:100px}.angular-tree-component{width:100%;position:relative;display:inline-block;cursor:pointer;-webkit-touch-callout:none;user-select:none}tree-root .angular-tree-component-rtl{direction:rtl}tree-root .angular-tree-component-rtl .toggle-children-wrapper-collapsed .toggle-children{transform:rotate(180deg)!important}tree-root .angular-tree-component-rtl .tree-children{padding-right:20px;padding-left:0}tree-node-checkbox{padding:1px}:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#6c757d;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--black:#000;--barley-white:#fcecba;--fg-color-over-dark-bg:#fff;--fg-hover-color-over-dark-bg:#adb5bd;--body-color-bright:#f8f9fa;--body-bg:#fff;--body-color:#212529;--body-bg-alt:#e9ecef;--health-color-error:red;--health-color-healthy:#0b0;--health-color-warning:orange;--chart-color-red:#c9190b;--chart-color-blue:#06c;--chart-color-orange:#ef9234;--chart-color-yellow:#f6d173;--chart-color-green:#7cc674;--chart-color-gray:#ededed;--chart-color-cyan:#73c5c5;--chart-color-purple:#3c3d99;--chart-color-center-text:#151515;--chart-color-center-text-description:#72767b;--chart-color-tooltip-background:#000;--chart-danger:#c9190b;--card-cap-bg:#f8f9fa;--grid-gutter-width:30px;--datatable-divider-color:#00000017;--nav-tabs-margin-bottom:1rem;--tooltip-color:#fff;--tooltip-bg:#212529;--screen-sm-min:576px;--screen-md-min:768px;--screen-lg-min:992px;--screen-xl-min:1200px;--screen-xs-max:calc(576px - 1px);--screen-sm-max:calc(768px - 1px);--screen-md-max:calc(992px - 1px);--screen-lg-max:calc(1200px - 1px);--navbar-height:43px;--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#a94442;--red:#ef5c55;--orange:#fd7e14;--yellow:#ffc200;--green:#0b0;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#374249;--success:#0b0;--info:#2b99a8;--warning:#ffc200;--danger:#ef5c55;--light:#f8f9fa;--dark:#777;--accent:#ef5c55;--warning-dark:#fd7e14;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--breakpoint-2xl:1450px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}
-/*!
- * Bootstrap v4.6.1 (https://getbootstrap.com/)
- * Copyright 2011-2021 The Bootstrap Authors
- * Copyright 2011-2021 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:initial;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}a{color:#2b99a8;text-decoration:none;background-color:initial}a:hover{color:#1b626b;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[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]{box-sizing:border-box;padding:0}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:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:initial}[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-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid #0000001a}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#a94442;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width: 992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width: 1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row,cd-about dl{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col,.col-1,.col-2,.col-2xl,.col-2xl-1,.col-2xl-2,.col-2xl-3,.col-2xl-4,.col-2xl-5,.col-2xl-6,.col-2xl-7,.col-2xl-8,.col-2xl-9,.col-2xl-10,.col-2xl-11,.col-2xl-12,.col-2xl-auto,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto,cd-about dd,cd-about dt,cd-health cd-info-card,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-chart-card,cd-health cd-info-card.cd-performance-card,cd-health cd-info-card.cd-status-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4,cd-about dt{flex:0 0 33.33333333%;max-width:33.33333333%}.col-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-8,cd-about dd{flex:0 0 66.66666667%;max-width:66.66666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-11{flex:0 0 91.66666667%;max-width:91.66666667%}.cd-col-form,.col-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-sm-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form-input,.cd-col-form-offset,.col-sm-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.cd-col-form-offset,.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-md-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6,cd-health cd-info-card{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form-input,.cd-col-form-offset,.col-md-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12,cd-health cd-info-card.cd-chart-card{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{flex:0 0 16.66666667%;max-width:16.66666667%}.cd-col-form-label,.col-lg-3,cd-health cd-info-card.cd-capacity-card{flex:0 0 25%;max-width:25%}.col-lg-4,cd-health cd-info-card,cd-modal .cd-col-form-label{flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6,cd-health cd-info-card.cd-chart-card,cd-health cd-info-card.cd-performance-card{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form,.col-lg-8,cd-modal .cd-col-form-input,cd-modal .cd-col-form-offset{flex:0 0 66.66666667%;max-width:66.66666667%}.cd-col-form-input,.cd-col-form-offset,.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.cd-col-form-offset,.offset-lg-3{margin-left:25%}.offset-lg-4,cd-modal .cd-col-form-offset{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width: 1200px){.col-xl,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3,cd-health cd-info-card.cd-status-card{flex:0 0 25%;max-width:25%}.col-xl-4,cd-health cd-info-card.cd-chart-card{flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.cd-col-form,.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}@media (min-width: 1450px){.col-2xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-2xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-2xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-2xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-2xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-2xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-2xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-2xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-2xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-2xl-3,cd-health cd-info-card.cd-chart-card{flex:0 0 25%;max-width:25%}.col-2xl-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-2xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-2xl-6{flex:0 0 50%;max-width:50%}.col-2xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-2xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-2xl-9{flex:0 0 75%;max-width:75%}.col-2xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-2xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-2xl-12{flex:0 0 100%;max-width:100%}.order-2xl-first{order:-1}.order-2xl-last{order:13}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-6{order:6}.order-2xl-7{order:7}.order-2xl-8{order:8}.order-2xl-9{order:9}.order-2xl-10{order:10}.order-2xl-11{order:11}.order-2xl-12{order:12}.offset-2xl-0{margin-left:0}.offset-2xl-1{margin-left:8.33333333%}.offset-2xl-2{margin-left:16.66666667%}.offset-2xl-3{margin-left:25%}.offset-2xl-4{margin-left:33.33333333%}.offset-2xl-5{margin-left:41.66666667%}.offset-2xl-6{margin-left:50%}.offset-2xl-7{margin-left:58.33333333%}.offset-2xl-8{margin-left:66.66666667%}.offset-2xl-9{margin-left:75%}.offset-2xl-10{margin-left:83.33333333%}.offset-2xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:#0000000d}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c4e2e7}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#91cad2}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b2d9e0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#c7cacc}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#979da0}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#babdc0}.table-success,.table-success>td,.table-success>th{background-color:#b8ecb8}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#7adc7a}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#a4e7a4}.table-info,.table-info>td,.table-info>th{background-color:#c4e2e7}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#91cad2}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b2d9e0}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeb8}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7a}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe89f}.table-danger,.table-danger>td,.table-danger>th{background-color:#fbd1cf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f7aaa7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f9bab7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#d9d9d9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#b8b8b8}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#ccc}.table-accent,.table-accent>td,.table-accent>th{background-color:#fbd1cf}.table-accent tbody+tbody,.table-accent td,.table-accent th,.table-accent thead th{border-color:#f7aaa7}.table-hover .table-accent:hover,.table-hover .table-accent:hover>td,.table-hover .table-accent:hover>th{background-color:#f9bab7}.table-warning-dark,.table-warning-dark>td,.table-warning-dark>th{background-color:#fedbbd}.table-warning-dark tbody+tbody,.table-warning-dark td,.table-warning-dark th,.table-warning-dark thead th{border-color:#febc85}.table-hover .table-warning-dark:hover,.table-hover .table-warning-dark:hover>td,.table-hover .table-warning-dark:hover>th{background-color:#fecda4}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:#ffffff0d}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}@media (max-width: 1449.98px){.table-responsive-2xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-2xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.cd-form-control,.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.cd-form-control,.form-control{transition:none}}.cd-form-control::-ms-expand,.form-control::-ms-expand{background-color:initial;border:0}.cd-form-control:focus,.form-control:focus{color:#495057;background-color:#fff;border-color:#76d0dc;box-shadow:0 0 0 .2rem #2b99a840}.cd-form-control::placeholder,.form-control::placeholder{color:#6c757d;opacity:1}.cd-form-control:disabled,.form-control:disabled,.form-control[readonly],[readonly].cd-form-control{background-color:#e9ecef;opacity:1}input[type=date].cd-form-control,input[type=date].form-control,input[type=datetime-local].cd-form-control,input[type=datetime-local].form-control,input[type=month].cd-form-control,input[type=month].form-control,input[type=time].cd-form-control,input[type=time].form-control{-moz-appearance:none;appearance:none}select.cd-form-control:-moz-focusring,select.form-control:-moz-focusring{color:#0000;text-shadow:0 0 0 #495057}select.cd-form-control:focus::-ms-value,select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.cd-col-form-label,.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:initial;border:solid #0000;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],select[multiple].cd-form-control,select[size].cd-form-control,textarea.cd-form-control,textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#0b0}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#00bb00e6;border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.is-valid.cd-form-control,.was-validated .cd-form-control:valid,.was-validated .form-control:valid{border-color:#0b0;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%230b0' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.is-valid.cd-form-control:focus,.was-validated .cd-form-control:valid:focus,.was-validated .form-control:valid:focus{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.was-validated select.cd-form-control:valid,.was-validated select.form-control:valid,select.form-control.is-valid,select.is-valid.cd-form-control{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.cd-form-control:valid,.was-validated textarea.form-control:valid,textarea.form-control.is-valid,textarea.is-valid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#0b0;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%230b0' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#0b0}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#0b0}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#0b0}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#0e0;background-color:#0e0}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #00bb0040}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#0b0}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#ef5c55}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#ef5c55e6;border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.is-invalid.cd-form-control,.was-validated .cd-form-control:invalid,.was-validated .form-control:invalid{border-color:#ef5c55;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ef5c55' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ef5c55' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.is-invalid.cd-form-control:focus,.was-validated .cd-form-control:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.was-validated select.cd-form-control:invalid,.was-validated select.form-control:invalid,select.form-control.is-invalid,select.is-invalid.cd-form-control{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.cd-form-control:invalid,.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid,textarea.is-invalid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ef5c55;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ef5c55' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ef5c55' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ef5c55}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ef5c55}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ef5c55}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f38984;background-color:#f38984}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #ef5c5540}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ef5c55}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .cd-form-control,.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:initial;border:1px solid #0000;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a840}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-secondary{color:#fff;background-color:#374249;border-color:#374249}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#272e33;border-color:#21282c}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem #555e6480}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#374249;border-color:#374249}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#21282c;border-color:#1c2125}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #555e6480}.btn-success{color:#fff;background-color:#0b0;border-color:#0b0}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#009500;border-color:#080}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem #26c52680}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#0b0;border-color:#0b0}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#080;border-color:#007b00}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #26c52680}.btn-info{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-warning{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#d9a500;border-color:#cc9b00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem #deaa0680}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#cc9b00;border-color:#bf9200}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #deaa0680}.btn-danger{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-dark{color:#fff;background-color:#777;border-color:#777}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#646464;border-color:#5e5e5e}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem #8b8b8b80}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#777;border-color:#777}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#5e5e5e;border-color:#575757}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #8b8b8b80}.btn-accent{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-accent.focus,.btn-accent:focus,.btn-accent:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-accent.focus,.btn-accent:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-accent.disabled,.btn-accent:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-accent:not(:disabled):not(.disabled).active,.btn-accent:not(:disabled):not(.disabled):active,.show>.btn-accent.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-accent:not(:disabled):not(.disabled).active:focus,.btn-accent:not(:disabled):not(.disabled):active:focus,.show>.btn-accent.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-warning-dark{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-warning-dark.focus,.btn-warning-dark:focus,.btn-warning-dark:hover{color:#fff;background-color:#e96b02;border-color:#dc6502}.btn-warning-dark.focus,.btn-warning-dark:focus{box-shadow:0 0 0 .2rem #dc711780}.btn-warning-dark.disabled,.btn-warning-dark:disabled{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-warning-dark:not(:disabled):not(.disabled).active,.btn-warning-dark:not(:disabled):not(.disabled):active,.show>.btn-warning-dark.dropdown-toggle{color:#fff;background-color:#dc6502;border-color:#cf5f02}.btn-warning-dark:not(:disabled):not(.disabled).active:focus,.btn-warning-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-warning-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #dc711780}.btn-outline-primary{color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#2b99a8;background-color:initial}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-secondary{color:#374249;border-color:#374249}.btn-outline-secondary:hover{color:#fff;background-color:#374249;border-color:#374249}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem #37424980}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#374249;background-color:initial}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#374249;border-color:#374249}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #37424980}.btn-outline-success{color:#0b0;border-color:#0b0}.btn-outline-success:hover{color:#fff;background-color:#0b0;border-color:#0b0}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem #00bb0080}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#0b0;background-color:initial}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#0b0;border-color:#0b0}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #00bb0080}.btn-outline-info{color:#2b99a8;border-color:#2b99a8}.btn-outline-info:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#2b99a8;background-color:initial}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-warning{color:#ffc200;border-color:#ffc200}.btn-outline-warning:hover{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem #ffc20080}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc200;background-color:initial}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ffc20080}.btn-outline-danger{color:#ef5c55;border-color:#ef5c55}.btn-outline-danger:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ef5c55;background-color:initial}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:initial}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-dark{color:#777;border-color:#777}.btn-outline-dark:hover{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem #77777780}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#777;background-color:initial}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #77777780}.btn-outline-accent{color:#ef5c55;border-color:#ef5c55}.btn-outline-accent:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-accent.focus,.btn-outline-accent:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-accent.disabled,.btn-outline-accent:disabled{color:#ef5c55;background-color:initial}.btn-outline-accent:not(:disabled):not(.disabled).active,.btn-outline-accent:not(:disabled):not(.disabled):active,.show>.btn-outline-accent.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-accent:not(:disabled):not(.disabled).active:focus,.btn-outline-accent:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-accent.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-warning-dark{color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark:hover{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark.focus,.btn-outline-warning-dark:focus{box-shadow:0 0 0 .2rem #fd7e1480}.btn-outline-warning-dark.disabled,.btn-outline-warning-dark:disabled{color:#fd7e14;background-color:initial}.btn-outline-warning-dark:not(:disabled):not(.disabled).active,.btn-outline-warning-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-warning-dark.dropdown-toggle{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-warning-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #fd7e1480}.btn-link{font-weight:400;color:#2b99a8;text-decoration:none}.btn-link:hover{color:#1b626b}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid #0000;border-bottom:0;border-left:.3em solid #0000}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #00000026;border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}@media (min-width: 1450px){.dropdown-menu-2xl-left{right:auto;left:0}.dropdown-menu-2xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid #0000;border-bottom:.3em solid;border-left:.3em solid #0000}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid #0000;border-right:0;border-bottom:.3em solid #0000;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid #0000;border-right:.3em solid;border-bottom:.3em solid #0000}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:initial;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2b99a8}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:initial}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.cd-form-control,.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.cd-form-control+.cd-form-control,.input-group>.cd-form-control+.custom-file,.input-group>.cd-form-control+.custom-select,.input-group>.cd-form-control+.form-control,.input-group>.custom-file+.cd-form-control,.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.cd-form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.cd-form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.cd-form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.cd-form-control:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.cd-form-control:not(:first-child),.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.cd-form-control:nth-last-child(n+3),.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.cd-form-control:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.cd-form-control:not(textarea),.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.cd-form-control,.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.cd-form-control:not(textarea),.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.cd-form-control,.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#2b99a8;background-color:#2b99a8}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #2b99a840}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#76d0dc}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#9fdee6;border-color:#9fdee6}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#2b99a8;background-color:#2b99a8}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before,.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:#2b99a880}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#2b99a880}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#2b99a880}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#76d0dc;outline:0;box-shadow:0 0 0 .2rem #2b99a840}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:#0000;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76d0dc;box-shadow:0 0 0 .2rem #2b99a840}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:initial;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#2b99a8;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#9fdee6}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2b99a8;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#9fdee6}.custom-range::-moz-range-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#2b99a8;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#9fdee6}.custom-range::-ms-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:initial;border-color:#0000;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid #0000;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:initial;border-color:#0000}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2b99a8}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:initial;border:1px solid #0000;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (max-width: 1449.98px){.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid,.navbar-expand-2xl>.container-lg,.navbar-expand-2xl>.container-md,.navbar-expand-2xl>.container-sm,.navbar-expand-2xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1450px){.navbar-expand-2xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-2xl .navbar-nav{flex-direction:row}.navbar-expand-2xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-2xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid,.navbar-expand-2xl>.container-lg,.navbar-expand-2xl>.container-md,.navbar-expand-2xl>.container-sm,.navbar-expand-2xl>.container-xl{flex-wrap:nowrap}.navbar-expand-2xl .navbar-nav-scroll{overflow:visible}.navbar-expand-2xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-2xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#00000080}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:#000000e6}.navbar-light .navbar-toggler{color:#00000080;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#00000080}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#000000e6}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff80}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff80;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff80}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,pre:not(cd-api-docs *){position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:initial;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr,pre:not(cd-api-docs *)>hr{margin-right:0;margin-left:0}.card>.list-group,pre:not(cd-api-docs *)>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,pre:not(cd-api-docs *)>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child,pre:not(cd-api-docs *)>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer,pre:not(cd-api-docs *)>.card-header+.list-group,pre:not(cd-api-docs *)>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fa;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck pre:not(cd-api-docs *){margin-bottom:15px}@media (min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck pre:not(cd-api-docs *){flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>pre:not(cd-api-docs *){margin-bottom:15px}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card,.card-group>pre:not(cd-api-docs *){flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+pre:not(cd-api-docs *),.card-group>pre:not(cd-api-docs *)+.card,.card-group>pre:not(cd-api-docs *)+pre:not(cd-api-docs *){margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>pre:not(:last-child):not(cd-api-docs *){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-header,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-footer,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>pre:not(:first-child):not(cd-api-docs *){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-header,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-footer,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card,.card-columns pre:not(cd-api-docs *){margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;grid-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns pre:not(cd-api-docs *){display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card,.accordion>pre:not(cd-api-docs *){overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>pre:not(:last-of-type):not(cd-api-docs *){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>pre:not(:first-of-type):not(cd-api-docs *){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>pre:not(cd-api-docs *)>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination,cd-table .cd-datatable .datatable-footer .datatable-pager ul{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#2b99a8;background-color:#fff;border:1px solid #dee2e6}.page-link:hover,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:hover{z-index:2;color:#1b626b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem #2b99a840}.page-item:first-child .page-link,.page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link,.page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.active a{z-index:3;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.page-item.disabled .page-link,.page-item.disabled cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.disabled a{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg a{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link,.pagination-lg .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:first-child a{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link,.pagination-lg .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:last-child a{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm a{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link,.pagination-sm .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:first-child a{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link,.pagination-sm .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:last-child a{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:1rem;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:initial;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#2b99a8}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#21747f}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a880}.badge-secondary{color:#fff;background-color:#374249}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#21282c}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem #37424980}.badge-success{color:#fff;background-color:#0b0}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#080}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem #00bb0080}.badge-info{color:#fff;background-color:#2b99a8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#21747f}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a880}.badge-warning{color:#212529;background-color:#ffc200}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#cc9b00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem #ffc20080}.badge-danger{color:#fff;background-color:#ef5c55}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#eb2f26}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem #ef5c5580}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem #f8f9fa80}.badge-dark{color:#fff;background-color:#777}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#5e5e5e}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem #77777780}.badge-accent{color:#fff;background-color:#ef5c55}a.badge-accent:focus,a.badge-accent:hover{color:#fff;background-color:#eb2f26}a.badge-accent.focus,a.badge-accent:focus{outline:0;box-shadow:0 0 0 .2rem #ef5c5580}.badge-warning-dark{color:#212529;background-color:#fd7e14}a.badge-warning-dark:focus,a.badge-warning-dark:hover{color:#212529;background-color:#dc6502}a.badge-warning-dark.focus,a.badge-warning-dark:focus{outline:0;box-shadow:0 0 0 .2rem #fd7e1480}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid #0000;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-primary hr{border-top-color:#b2d9e0}.alert-primary .alert-link{color:#0c2b2e}.alert-secondary{color:#1d2226;background-color:#d7d9db;border-color:#c7cacc}.alert-secondary hr{border-top-color:#babdc0}.alert-secondary .alert-link{color:#070809}.alert-success{color:#006100;background-color:#ccf1cc;border-color:#b8ecb8}.alert-success hr{border-top-color:#a4e7a4}.alert-success .alert-link{color:#002e00}.alert-info{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-info hr{border-top-color:#b2d9e0}.alert-info .alert-link{color:#0c2b2e}.alert-warning{color:#856500;background-color:#fff3cc;border-color:#ffeeb8}.alert-warning hr{border-top-color:#ffe89f}.alert-warning .alert-link{color:#523e00}.alert-danger{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-danger hr{border-top-color:#f9bab7}.alert-danger .alert-link{color:#56211f}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#3e3e3e;background-color:#e4e4e4;border-color:#d9d9d9}.alert-dark hr{border-top-color:#ccc}.alert-dark .alert-link{color:#252525}.alert-accent{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-accent hr{border-top-color:#f9bab7}.alert-accent .alert-link{color:#56211f}.alert-warning-dark{color:#84420a;background-color:#ffe5d0;border-color:#fedbbd}.alert-warning-dark hr{border-top-color:#fecda4}.alert-warning-dark .alert-link{color:#552a06}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#2b99a8;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 0,#0000 50%,#ffffff26 0,#ffffff26 75%,#0000 0,#0000);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1450px){.list-group-horizontal-2xl{flex-direction:row}.list-group-horizontal-2xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-2xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-2xl>.list-group-item.active{margin-top:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#165057;background-color:#c4e2e7}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-secondary{color:#1d2226;background-color:#c7cacc}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#1d2226;background-color:#babdc0}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#1d2226;border-color:#1d2226}.list-group-item-success{color:#006100;background-color:#b8ecb8}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#006100;background-color:#a4e7a4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#006100;border-color:#006100}.list-group-item-info{color:#165057;background-color:#c4e2e7}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-warning{color:#856500;background-color:#ffeeb8}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856500;background-color:#ffe89f}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856500;border-color:#856500}.list-group-item-danger{color:#7c302c;background-color:#fbd1cf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#3e3e3e;background-color:#d9d9d9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#3e3e3e;background-color:#ccc}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3e3e3e;border-color:#3e3e3e}.list-group-item-accent{color:#7c302c;background-color:#fbd1cf}.list-group-item-accent.list-group-item-action:focus,.list-group-item-accent.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-accent.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-warning-dark{color:#84420a;background-color:#fedbbd}.list-group-item-warning-dark.list-group-item-action:focus,.list-group-item-warning-dark.list-group-item-action:hover{color:#84420a;background-color:#fecda4}.list-group-item-warning-dark.list-group-item-action.active{color:#fff;background-color:#84420a;border-color:#84420a}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:initial;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:#ffffffd9;background-clip:padding-box;border:1px solid #0000001a;box-shadow:0 .25rem .75rem #0000001a;opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid #0000000d;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:#0000;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#212529}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#212529}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#212529}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#212529}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#212529;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:350px;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:#0000;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:initial;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid #0000;border-bottom:10px solid #0000;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right:.25em solid #0000;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:initial!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#2b99a8!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#21747f!important}.bg-secondary{background-color:#374249!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#21282c!important}.bg-success{background-color:#0b0!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#080!important}.bg-info{background-color:#2b99a8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#21747f!important}.bg-warning{background-color:#ffc200!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#cc9b00!important}.bg-danger{background-color:#ef5c55!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#eb2f26!important}.bg-light,pre:not(cd-api-docs *){background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#777!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#5e5e5e!important}.bg-accent{background-color:#ef5c55!important}a.bg-accent:focus,a.bg-accent:hover,button.bg-accent:focus,button.bg-accent:hover{background-color:#eb2f26!important}.bg-warning-dark{background-color:#fd7e14!important}a.bg-warning-dark:focus,a.bg-warning-dark:hover,button.bg-warning-dark:focus,button.bg-warning-dark:hover{background-color:#dc6502!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:initial!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom,.cd-header,legend{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#2b99a8!important}.border-secondary{border-color:#374249!important}.border-success{border-color:#0b0!important}.border-info{border-color:#2b99a8!important}.border-warning{border-color:#ffc200!important}.border-danger{border-color:#ef5c55!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#777!important}.border-accent{border-color:#ef5c55!important}.border-warning-dark{border-color:#fd7e14!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex,cd-health cd-info-card{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width: 576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width: 768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width: 992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width: 1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media (min-width: 1450px){.d-2xl-none{display:none!important}.d-2xl-inline{display:inline!important}.d-2xl-inline-block{display:inline-block!important}.d-2xl-block{display:block!important}.d-2xl-table{display:table!important}.d-2xl-table-row{display:table-row!important}.d-2xl-table-cell{display:table-cell!important}.d-2xl-flex{display:flex!important}.d-2xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column,cd-health cd-info-card{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width: 576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width: 768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}@media (min-width: 1450px){.flex-2xl-row{flex-direction:row!important}.flex-2xl-column{flex-direction:column!important}.flex-2xl-row-reverse{flex-direction:row-reverse!important}.flex-2xl-column-reverse{flex-direction:column-reverse!important}.flex-2xl-wrap{flex-wrap:wrap!important}.flex-2xl-nowrap{flex-wrap:nowrap!important}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-2xl-fill{flex:1 1 auto!important}.flex-2xl-grow-0{flex-grow:0!important}.flex-2xl-grow-1{flex-grow:1!important}.flex-2xl-shrink-0{flex-shrink:0!important}.flex-2xl-shrink-1{flex-shrink:1!important}.justify-content-2xl-start{justify-content:flex-start!important}.justify-content-2xl-end{justify-content:flex-end!important}.justify-content-2xl-center{justify-content:center!important}.justify-content-2xl-between{justify-content:space-between!important}.justify-content-2xl-around{justify-content:space-around!important}.align-items-2xl-start{align-items:flex-start!important}.align-items-2xl-end{align-items:flex-end!important}.align-items-2xl-center{align-items:center!important}.align-items-2xl-baseline{align-items:baseline!important}.align-items-2xl-stretch{align-items:stretch!important}.align-content-2xl-start{align-content:flex-start!important}.align-content-2xl-end{align-content:flex-end!important}.align-content-2xl-center{align-content:center!important}.align-content-2xl-between{align-content:space-between!important}.align-content-2xl-around{align-content:space-around!important}.align-content-2xl-stretch{align-content:stretch!important}.align-self-2xl-auto{align-self:auto!important}.align-self-2xl-start{align-self:flex-start!important}.align-self-2xl-end{align-self:flex-end!important}.align-self-2xl-center{align-self:center!important}.align-self-2xl-baseline{align-self:baseline!important}.align-self-2xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width: 576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width: 768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width: 992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width: 1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}@media (min-width: 1450px){.float-2xl-left{float:left!important}.float-2xl-right{float:right!important}.float-2xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{white-space:nowrap}.sr-only-focusable:active,.sr-only-focusable:focus{white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.btn-toolbar cd-table-actions.btn-group,.mr-2,.mx-2,cd-logs label{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3,cd-logs .form-inline>.form-group{margin-right:1rem!important}.mb-3,.my-3,cd-logs .form-inline>.form-group{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.cd-header,.mt-4,.my-4,legend{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.cd-header,.mb-4,.my-4,cd-health cd-info-card,legend{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.cd-header,.pb-1,.py-1,legend{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2,cd-table .cd-datatable .datatable-footer,pre:not(cd-api-docs *){padding:.5rem!important}.pt-2,.py-2,cd-info-card .card .card-body .card-text,cd-info-card pre:not(cd-api-docs *) .card-body .card-text{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2,cd-info-card .card,cd-info-card pre:not(cd-api-docs *){padding-bottom:.5rem!important}.pl-2,.px-2,cd-info-card .card .card-body .card-title,cd-info-card pre:not(cd-api-docs *) .card-body .card-title{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width: 576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width: 768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width: 992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width: 1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}@media (min-width: 1450px){.m-2xl-0{margin:0!important}.mt-2xl-0,.my-2xl-0{margin-top:0!important}.mr-2xl-0,.mx-2xl-0{margin-right:0!important}.mb-2xl-0,.my-2xl-0{margin-bottom:0!important}.ml-2xl-0,.mx-2xl-0{margin-left:0!important}.m-2xl-1{margin:.25rem!important}.mt-2xl-1,.my-2xl-1{margin-top:.25rem!important}.mr-2xl-1,.mx-2xl-1{margin-right:.25rem!important}.mb-2xl-1,.my-2xl-1{margin-bottom:.25rem!important}.ml-2xl-1,.mx-2xl-1{margin-left:.25rem!important}.m-2xl-2{margin:.5rem!important}.mt-2xl-2,.my-2xl-2{margin-top:.5rem!important}.mr-2xl-2,.mx-2xl-2{margin-right:.5rem!important}.mb-2xl-2,.my-2xl-2{margin-bottom:.5rem!important}.ml-2xl-2,.mx-2xl-2{margin-left:.5rem!important}.m-2xl-3{margin:1rem!important}.mt-2xl-3,.my-2xl-3{margin-top:1rem!important}.mr-2xl-3,.mx-2xl-3{margin-right:1rem!important}.mb-2xl-3,.my-2xl-3{margin-bottom:1rem!important}.ml-2xl-3,.mx-2xl-3{margin-left:1rem!important}.m-2xl-4{margin:1.5rem!important}.mt-2xl-4,.my-2xl-4{margin-top:1.5rem!important}.mr-2xl-4,.mx-2xl-4{margin-right:1.5rem!important}.mb-2xl-4,.my-2xl-4{margin-bottom:1.5rem!important}.ml-2xl-4,.mx-2xl-4{margin-left:1.5rem!important}.m-2xl-5{margin:3rem!important}.mt-2xl-5,.my-2xl-5{margin-top:3rem!important}.mr-2xl-5,.mx-2xl-5{margin-right:3rem!important}.mb-2xl-5,.my-2xl-5{margin-bottom:3rem!important}.ml-2xl-5,.mx-2xl-5{margin-left:3rem!important}.p-2xl-0{padding:0!important}.pt-2xl-0,.py-2xl-0{padding-top:0!important}.pr-2xl-0,.px-2xl-0{padding-right:0!important}.pb-2xl-0,.py-2xl-0{padding-bottom:0!important}.pl-2xl-0,.px-2xl-0{padding-left:0!important}.p-2xl-1{padding:.25rem!important}.pt-2xl-1,.py-2xl-1{padding-top:.25rem!important}.pr-2xl-1,.px-2xl-1{padding-right:.25rem!important}.pb-2xl-1,.py-2xl-1{padding-bottom:.25rem!important}.pl-2xl-1,.px-2xl-1{padding-left:.25rem!important}.p-2xl-2{padding:.5rem!important}.pt-2xl-2,.py-2xl-2{padding-top:.5rem!important}.pr-2xl-2,.px-2xl-2{padding-right:.5rem!important}.pb-2xl-2,.py-2xl-2{padding-bottom:.5rem!important}.pl-2xl-2,.px-2xl-2{padding-left:.5rem!important}.p-2xl-3{padding:1rem!important}.pt-2xl-3,.py-2xl-3{padding-top:1rem!important}.pr-2xl-3,.px-2xl-3{padding-right:1rem!important}.pb-2xl-3,.py-2xl-3{padding-bottom:1rem!important}.pl-2xl-3,.px-2xl-3{padding-left:1rem!important}.p-2xl-4{padding:1.5rem!important}.pt-2xl-4,.py-2xl-4{padding-top:1.5rem!important}.pr-2xl-4,.px-2xl-4{padding-right:1.5rem!important}.pb-2xl-4,.py-2xl-4{padding-bottom:1.5rem!important}.pl-2xl-4,.px-2xl-4{padding-left:1.5rem!important}.p-2xl-5{padding:3rem!important}.pt-2xl-5,.py-2xl-5{padding-top:3rem!important}.pr-2xl-5,.px-2xl-5{padding-right:3rem!important}.pb-2xl-5,.py-2xl-5{padding-bottom:3rem!important}.pl-2xl-5,.px-2xl-5{padding-left:3rem!important}.m-2xl-n1{margin:-.25rem!important}.mt-2xl-n1,.my-2xl-n1{margin-top:-.25rem!important}.mr-2xl-n1,.mx-2xl-n1{margin-right:-.25rem!important}.mb-2xl-n1,.my-2xl-n1{margin-bottom:-.25rem!important}.ml-2xl-n1,.mx-2xl-n1{margin-left:-.25rem!important}.m-2xl-n2{margin:-.5rem!important}.mt-2xl-n2,.my-2xl-n2{margin-top:-.5rem!important}.mr-2xl-n2,.mx-2xl-n2{margin-right:-.5rem!important}.mb-2xl-n2,.my-2xl-n2{margin-bottom:-.5rem!important}.ml-2xl-n2,.mx-2xl-n2{margin-left:-.5rem!important}.m-2xl-n3{margin:-1rem!important}.mt-2xl-n3,.my-2xl-n3{margin-top:-1rem!important}.mr-2xl-n3,.mx-2xl-n3{margin-right:-1rem!important}.mb-2xl-n3,.my-2xl-n3{margin-bottom:-1rem!important}.ml-2xl-n3,.mx-2xl-n3{margin-left:-1rem!important}.m-2xl-n4{margin:-1.5rem!important}.mt-2xl-n4,.my-2xl-n4{margin-top:-1.5rem!important}.mr-2xl-n4,.mx-2xl-n4{margin-right:-1.5rem!important}.mb-2xl-n4,.my-2xl-n4{margin-bottom:-1.5rem!important}.ml-2xl-n4,.mx-2xl-n4{margin-left:-1.5rem!important}.m-2xl-n5{margin:-3rem!important}.mt-2xl-n5,.my-2xl-n5{margin-top:-3rem!important}.mr-2xl-n5,.mx-2xl-n5{margin-right:-3rem!important}.mb-2xl-n5,.my-2xl-n5{margin-bottom:-3rem!important}.ml-2xl-n5,.mx-2xl-n5{margin-left:-3rem!important}.m-2xl-auto{margin:auto!important}.mt-2xl-auto,.my-2xl-auto{margin-top:auto!important}.mr-2xl-auto,.mx-2xl-auto{margin-right:auto!important}.mb-2xl-auto,.my-2xl-auto{margin-bottom:auto!important}.ml-2xl-auto,.mx-2xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:#0000}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width: 576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1450px){.text-2xl-left{text-align:left!important}.text-2xl-right{text-align:right!important}.text-2xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold,cd-about dt{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#2b99a8!important}a.text-primary:focus,a.text-primary:hover{color:#1b626b!important}.text-secondary{color:#374249!important}a.text-secondary:focus,a.text-secondary:hover{color:#161b1d!important}.text-success{color:#0b0!important}a.text-success:focus,a.text-success:hover{color:#006f00!important}.text-info{color:#2b99a8!important}a.text-info:focus,a.text-info:hover{color:#1b626b!important}.text-warning{color:#ffc200!important}a.text-warning:focus,a.text-warning:hover{color:#b38800!important}.text-danger{color:#ef5c55!important}a.text-danger:focus,a.text-danger:hover{color:#e21f15!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#777!important}a.text-dark:focus,a.text-dark:hover{color:#515151!important}.text-accent{color:#ef5c55!important}a.text-accent:focus,a.text-accent:hover{color:#e21f15!important}.text-warning-dark{color:#fd7e14!important}a.text-warning-dark:focus,a.text-warning-dark:hover{color:#c35a02!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-hide{font:0/0 a;color:#0000;text-shadow:none;background-color:initial;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
-/*!
-Fork Awesome 1.1.7
-License - https://forkaweso.me/Fork-Awesome/license
-
-Copyright 2018 Dave Gandy & Fork Awesome
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.e182ad6df04f9177b326.eot?v=1.1.7);src:url(forkawesome-webfont.e182ad6df04f9177b326.eot?#iefix&v=1.1.7) format("embedded-opentype"),url(forkawesome-webfont.7c20758e3e7c7dff7c8d.woff2?v=1.1.7) format("woff2"),url(forkawesome-webfont.2dfb5f36fc148e26e398.woff?v=1.1.7) format("woff"),url(forkawesome-webfont.ee4d8bfd0af89fc714a2.ttf?v=1.1.7) format("truetype"),url(forkawesome-webfont.86541105409e56d17291.svg?v=1.1.7#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa,.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before,.fa-sync:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell-o:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-globe-e:before{content:""}.fa-globe-w:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-community:before,.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus-g:before,.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before,.fa-pound:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:""}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:""}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before,.fa-closed-captioning:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before,.fa-gem:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-medium-square:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo-v:before,.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.fa-mastodon:before{content:""}.fa-mastodon-alt:before{content:""}.fa-fork-awesome:before,.fa-fork-circle:before{content:""}.fa-peertube:before{content:""}.fa-diaspora:before{content:""}.fa-friendica:before{content:""}.fa-gnu-social:before{content:""}.fa-liberapay-square:before{content:""}.fa-liberapay:before{content:""}.fa-scuttlebutt:before,.fa-ssb:before{content:""}.fa-hubzilla:before{content:""}.fa-social-home:before{content:""}.fa-artstation:before{content:""}.fa-discord:before{content:""}.fa-discord-alt:before{content:""}.fa-patreon:before{content:""}.fa-snowdrift:before{content:""}.fa-activitypub:before{content:""}.fa-ethereum:before{content:""}.fa-keybase:before{content:""}.fa-shaarli:before{content:""}.fa-shaarli-o:before{content:""}.fa-cut-key:before,.fa-key-modern:before{content:""}.fa-xmpp:before{content:""}.fa-archive-org:before{content:""}.fa-freedombox:before{content:""}.fa-facebook-messenger:before{content:""}.fa-debian:before{content:""}.fa-mastodon-square:before{content:""}.fa-tipeee:before{content:""}.fa-react:before{content:""}.fa-dogmazic:before{content:""}.fa-zotero:before{content:""}.fa-nodejs:before{content:""}.fa-nextcloud:before{content:""}.fa-nextcloud-square:before{content:""}.fa-hackaday:before{content:""}.fa-laravel:before{content:""}.fa-signalapp:before{content:""}.fa-gnupg:before{content:""}.fa-php:before{content:""}.fa-ffmpeg:before{content:""}.fa-joplin:before{content:""}.fa-syncthing:before{content:""}.fa-inkscape:before{content:""}.fa-matrix-org:before{content:""}.fa-pixelfed:before{content:""}.fa-bootstrap:before{content:""}.fa-dev-to:before{content:""}.fa-hashnode:before{content:""}.fa-jirafeau:before{content:""}.fa-emby:before{content:""}.fa-wikidata:before{content:""}.fa-gimp:before{content:""}.fa-c:before{content:""}.fa-digitalocean:before{content:""}.fa-att:before{content:""}.fa-gitea:before{content:""}.fa-file-epub:before{content:""}.fa-python:before{content:""}.fa-archlinux:before{content:""}.fa-pleroma:before{content:""}.fa-unsplash:before{content:""}.fa-hackster:before{content:""}.fa-spell-check:before{content:""}.fa-moon:before{content:""}.fa-sun:before{content:""}.fa-f-droid:before{content:""}.fa-biometric:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-height:20vh;max-width:23vw}.info-card-popover-cluster-status .popover-body{font-size:1rem;max-height:19vh;max-width:100%;overflow:auto}@media (max-width: calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width: calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width: calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{border:1px solid #e9ecef;border-radius:3px;cursor:pointer;padding:7px}.info-card-content-clickable:hover{background-color:#e9ecef;border-color:#ced4da}html{background-color:#fff}body,html{font-size:12px;height:100%;width:100%}option{font-style:normal;font-weight:400}mark{background-color:#ffc200;padding:0}.full-height{height:100vh}.full-width{width:100vw}.vertical-align{align-items:center;display:flex}.horizontal-align{display:flex;justify-content:center}.loading:not(cd-api-docs *){left:50%;position:absolute;top:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-right{text-align:right}.text-monospace{font-family:monospace}.text-pre-wrap{white-space:pre-wrap}.text-pre{white-space:pre}.icon-danger-color{color:#ef5c55}.icon-warning-color{color:#ffc200}.border-warning{border-left:4px solid #ffc200}.border-danger{border-left:4px solid #ef5c55}.border-info{border-left:4px solid #2b99a8}.border-success{border-left:4px solid #0b0}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:initial}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#2b99a8;border-color:#2b99a8}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#adb5bd}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #2b99a840}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before{border-color:#76d0dc}.btn-light{background-color:#fff;border-color:#ced4da!important}.btn-light:hover{background-color:#dee2e6;border-color:#6c757d!important}.btn-light:disabled{background-color:#e9ecef;border-color:#ced4da!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0}.btn.disabled{border:0;box-shadow:none}.btn-primary .badge{background-color:#e9ecef;color:#2b99a8}.btn-group>.btn>i.fa,.cd-datatable-actions button.btn i.fa{margin-right:5px}.card-footer button.btn:not(:first-child){margin-left:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu button.dropdown-item:focus{outline:none}.dropdown-menu>li>a{cursor:pointer}.dropdown-menu>li>a>i.fa{margin-right:5px}.dropdown-menu>.active>a{background-color:#2b99a8;color:#e9ecef}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.dropdown-divider{cursor:auto}.required:after{color:#ef5c55;content:"*";font-size:1.167rem;padding-left:4px}.form-footer{display:flex;width:100%}.cd-form-control,.form-control{display:table-cell}.cd-form-control:focus,.form-control:focus{border-color:#2b99a8cc;box-shadow:0 0 3px 2px #2b99a880;outline:0}.custom-checkbox{padding-top:7px}cd-modal .modal{background-color:#0006;display:block}cd-modal .modal-dialog{max-width:70vh}.invalid-feedback{display:block}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{padding:0 30px}.ceph-icon{background:url(Ceph_Logo.487a0001b327fa7f5232.svg)}.prometheus-icon{background:url(prometheus_logo.8b3183e5a2db0e87bb2b.svg)}.custom-icon{background-clip:padding-box;background-repeat:no-repeat;background-size:contain;margin-right:8px;padding:10px}.nav-tabs{margin-bottom:1rem}#toast-container{margin-top:2vw}@media (max-width: 1600px){#toast-container{margin-top:2.5vw}}@media (max-width: calc(992px - 1px)){#toast-container{margin-top:9vw}}@media (max-width: 900px){#toast-container{margin-top:10vw}}@media (max-width: 319px){#toast-container{margin-top:11vw}}@media (max-width: 260px){#toast-container{margin-top:14vw}}.toast-message>ul{margin:0;padding-left:1rem}.noscript{padding-top:5em}@media (min-width: 576px){.cd-col-form-label,.col-form-label{text-align:right}}.cd-col-form-label,.col-form-label{font-weight:700}.password-strength-level{flex:100%;margin-top:2px}.password-strength-level .ok,.password-strength-level .strong,.password-strength-level .very-strong,.password-strength-level .weak{border-radius:.25rem;height:13px}.password-strength-level .weak{background:#ef5c55;width:25%}.password-strength-level .ok{background:#ffc200;width:50%}.password-strength-level .strong{background:#0b0;width:75%}.password-strength-level .very-strong{background:#006f00;width:100%}.badge-background-gray,.badge-hdd{background-color:#6c757d;color:#fff}.badge-background-primary,.badge-ssd{background-color:#2b99a8;color:#fff}.badge-tab{background-color:#e9ecef;color:#495057}tree-root tree-viewport{min-height:1em}tags-input .tags{border:1px solid #ced4da;border-radius:4px;box-shadow:inset 0 1px 1px #00000017}.card-header{font-size:1.3em}.card-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable,a{cursor:pointer}
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.ffb7f665775e3c191fa3.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.ffb7f665775e3c191fa3.css
new file mode 100644 (file)
index 0000000..9b06354
--- /dev/null
@@ -0,0 +1,20 @@
+@charset "UTF-8";.swagger-ui{color:#3b4151;
+  /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:sans-serif}.swagger-ui html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:initial;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{-webkit-text-decoration-skip:objects;background-color:initial}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:initial}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:#0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:#0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid #0000}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid #0000}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid #0000}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid #0000}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:#ffffffe6}.swagger-ui .b--white-80{border-color:#fffc}.swagger-ui .b--white-70{border-color:#ffffffb3}.swagger-ui .b--white-60{border-color:#fff9}.swagger-ui .b--white-50{border-color:#ffffff80}.swagger-ui .b--white-40{border-color:#fff6}.swagger-ui .b--white-30{border-color:#ffffff4d}.swagger-ui .b--white-20{border-color:#fff3}.swagger-ui .b--white-10{border-color:#ffffff1a}.swagger-ui .b--white-05{border-color:#ffffff0d}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.013)}.swagger-ui .b--black-90{border-color:#000000e6}.swagger-ui .b--black-80{border-color:#000c}.swagger-ui .b--black-70{border-color:#000000b3}.swagger-ui .b--black-60{border-color:#0009}.swagger-ui .b--black-50{border-color:#00000080}.swagger-ui .b--black-40{border-color:#0006}.swagger-ui .b--black-30{border-color:#0000004d}.swagger-ui .b--black-20{border-color:#0003}.swagger-ui .b--black-10{border-color:#0000001a}.swagger-ui .b--black-05{border-color:#0000000d}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.013)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:#0000}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5{box-shadow:4px 4px 8px 0 #0003}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-ns{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-ns{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-ns{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-ns{box-shadow:4px 4px 8px 0 #0003}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .shadow-1-m{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-m{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-m{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-m{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-m{box-shadow:4px 4px 8px 0 #0003}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{box-shadow:0 0 4px 2px #0003}.swagger-ui .shadow-2-l{box-shadow:0 0 8px 2px #0003}.swagger-ui .shadow-3-l{box-shadow:2px 2px 4px 2px #0003}.swagger-ui .shadow-4-l{box-shadow:2px 2px 8px 0 #0003}.swagger-ui .shadow-5-l{box-shadow:4px 4px 8px 0 #0003}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf:after,.swagger-ui .cf:before{content:" ";display:table}.swagger-ui .cf:after{clear:both}.swagger-ui .cf{*zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:flex}.swagger-ui .inline-flex{display:inline-flex}.swagger-ui .flex-auto{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{flex:none}.swagger-ui .flex-column{flex-direction:column}.swagger-ui .flex-row{flex-direction:row}.swagger-ui .flex-wrap{flex-wrap:wrap}.swagger-ui .flex-nowrap{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{flex-direction:column-reverse}.swagger-ui .flex-row-reverse{flex-direction:row-reverse}.swagger-ui .items-start{align-items:flex-start}.swagger-ui .items-end{align-items:flex-end}.swagger-ui .items-center{align-items:center}.swagger-ui .items-baseline{align-items:baseline}.swagger-ui .items-stretch{align-items:stretch}.swagger-ui .self-start{align-self:flex-start}.swagger-ui .self-end{align-self:flex-end}.swagger-ui .self-center{align-self:center}.swagger-ui .self-baseline{align-self:baseline}.swagger-ui .self-stretch{align-self:stretch}.swagger-ui .justify-start{justify-content:flex-start}.swagger-ui .justify-end{justify-content:flex-end}.swagger-ui .justify-center{justify-content:center}.swagger-ui .justify-between{justify-content:space-between}.swagger-ui .justify-around{justify-content:space-around}.swagger-ui .content-start{align-content:flex-start}.swagger-ui .content-end{align-content:flex-end}.swagger-ui .content-center{align-content:center}.swagger-ui .content-between{align-content:space-between}.swagger-ui .content-around{align-content:space-around}.swagger-ui .content-stretch{align-content:stretch}.swagger-ui .order-0{order:0}.swagger-ui .order-1{order:1}.swagger-ui .order-2{order:2}.swagger-ui .order-3{order:3}.swagger-ui .order-4{order:4}.swagger-ui .order-5{order:5}.swagger-ui .order-6{order:6}.swagger-ui .order-7{order:7}.swagger-ui .order-8{order:8}.swagger-ui .order-last{order:99999}.swagger-ui .flex-grow-0{flex-grow:0}.swagger-ui .flex-grow-1{flex-grow:1}.swagger-ui .flex-shrink-0{flex-shrink:0}.swagger-ui .flex-shrink-1{flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:flex}.swagger-ui .inline-flex-ns{display:inline-flex}.swagger-ui .flex-auto-ns{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{flex:none}.swagger-ui .flex-column-ns{flex-direction:column}.swagger-ui .flex-row-ns{flex-direction:row}.swagger-ui .flex-wrap-ns{flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{flex-direction:row-reverse}.swagger-ui .items-start-ns{align-items:flex-start}.swagger-ui .items-end-ns{align-items:flex-end}.swagger-ui .items-center-ns{align-items:center}.swagger-ui .items-baseline-ns{align-items:baseline}.swagger-ui .items-stretch-ns{align-items:stretch}.swagger-ui .self-start-ns{align-self:flex-start}.swagger-ui .self-end-ns{align-self:flex-end}.swagger-ui .self-center-ns{align-self:center}.swagger-ui .self-baseline-ns{align-self:baseline}.swagger-ui .self-stretch-ns{align-self:stretch}.swagger-ui .justify-start-ns{justify-content:flex-start}.swagger-ui .justify-end-ns{justify-content:flex-end}.swagger-ui .justify-center-ns{justify-content:center}.swagger-ui .justify-between-ns{justify-content:space-between}.swagger-ui .justify-around-ns{justify-content:space-around}.swagger-ui .content-start-ns{align-content:flex-start}.swagger-ui .content-end-ns{align-content:flex-end}.swagger-ui .content-center-ns{align-content:center}.swagger-ui .content-between-ns{align-content:space-between}.swagger-ui .content-around-ns{align-content:space-around}.swagger-ui .content-stretch-ns{align-content:stretch}.swagger-ui .order-0-ns{order:0}.swagger-ui .order-1-ns{order:1}.swagger-ui .order-2-ns{order:2}.swagger-ui .order-3-ns{order:3}.swagger-ui .order-4-ns{order:4}.swagger-ui .order-5-ns{order:5}.swagger-ui .order-6-ns{order:6}.swagger-ui .order-7-ns{order:7}.swagger-ui .order-8-ns{order:8}.swagger-ui .order-last-ns{order:99999}.swagger-ui .flex-grow-0-ns{flex-grow:0}.swagger-ui .flex-grow-1-ns{flex-grow:1}.swagger-ui .flex-shrink-0-ns{flex-shrink:0}.swagger-ui .flex-shrink-1-ns{flex-shrink:1}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .flex-m{display:flex}.swagger-ui .inline-flex-m{display:inline-flex}.swagger-ui .flex-auto-m{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{flex:none}.swagger-ui .flex-column-m{flex-direction:column}.swagger-ui .flex-row-m{flex-direction:row}.swagger-ui .flex-wrap-m{flex-wrap:wrap}.swagger-ui .flex-nowrap-m{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{flex-direction:row-reverse}.swagger-ui .items-start-m{align-items:flex-start}.swagger-ui .items-end-m{align-items:flex-end}.swagger-ui .items-center-m{align-items:center}.swagger-ui .items-baseline-m{align-items:baseline}.swagger-ui .items-stretch-m{align-items:stretch}.swagger-ui .self-start-m{align-self:flex-start}.swagger-ui .self-end-m{align-self:flex-end}.swagger-ui .self-center-m{align-self:center}.swagger-ui .self-baseline-m{align-self:baseline}.swagger-ui .self-stretch-m{align-self:stretch}.swagger-ui .justify-start-m{justify-content:flex-start}.swagger-ui .justify-end-m{justify-content:flex-end}.swagger-ui .justify-center-m{justify-content:center}.swagger-ui .justify-between-m{justify-content:space-between}.swagger-ui .justify-around-m{justify-content:space-around}.swagger-ui .content-start-m{align-content:flex-start}.swagger-ui .content-end-m{align-content:flex-end}.swagger-ui .content-center-m{align-content:center}.swagger-ui .content-between-m{align-content:space-between}.swagger-ui .content-around-m{align-content:space-around}.swagger-ui .content-stretch-m{align-content:stretch}.swagger-ui .order-0-m{order:0}.swagger-ui .order-1-m{order:1}.swagger-ui .order-2-m{order:2}.swagger-ui .order-3-m{order:3}.swagger-ui .order-4-m{order:4}.swagger-ui .order-5-m{order:5}.swagger-ui .order-6-m{order:6}.swagger-ui .order-7-m{order:7}.swagger-ui .order-8-m{order:8}.swagger-ui .order-last-m{order:99999}.swagger-ui .flex-grow-0-m{flex-grow:0}.swagger-ui .flex-grow-1-m{flex-grow:1}.swagger-ui .flex-shrink-0-m{flex-shrink:0}.swagger-ui .flex-shrink-1-m{flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:flex}.swagger-ui .inline-flex-l{display:inline-flex}.swagger-ui .flex-auto-l{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{flex:none}.swagger-ui .flex-column-l{flex-direction:column}.swagger-ui .flex-row-l{flex-direction:row}.swagger-ui .flex-wrap-l{flex-wrap:wrap}.swagger-ui .flex-nowrap-l{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{flex-direction:row-reverse}.swagger-ui .items-start-l{align-items:flex-start}.swagger-ui .items-end-l{align-items:flex-end}.swagger-ui .items-center-l{align-items:center}.swagger-ui .items-baseline-l{align-items:baseline}.swagger-ui .items-stretch-l{align-items:stretch}.swagger-ui .self-start-l{align-self:flex-start}.swagger-ui .self-end-l{align-self:flex-end}.swagger-ui .self-center-l{align-self:center}.swagger-ui .self-baseline-l{align-self:baseline}.swagger-ui .self-stretch-l{align-self:stretch}.swagger-ui .justify-start-l{justify-content:flex-start}.swagger-ui .justify-end-l{justify-content:flex-end}.swagger-ui .justify-center-l{justify-content:center}.swagger-ui .justify-between-l{justify-content:space-between}.swagger-ui .justify-around-l{justify-content:space-around}.swagger-ui .content-start-l{align-content:flex-start}.swagger-ui .content-end-l{align-content:flex-end}.swagger-ui .content-center-l{align-content:center}.swagger-ui .content-between-l{align-content:space-between}.swagger-ui .content-around-l{align-content:space-around}.swagger-ui .content-stretch-l{align-content:stretch}.swagger-ui .order-0-l{order:0}.swagger-ui .order-1-l{order:1}.swagger-ui .order-2-l{order:2}.swagger-ui .order-3-l{order:3}.swagger-ui .order-4-l{order:4}.swagger-ui .order-5-l{order:5}.swagger-ui .order-6-l{order:6}.swagger-ui .order-7-l{order:7}.swagger-ui .order-8-l{order:8}.swagger-ui .order-last-l{order:99999}.swagger-ui .flex-grow-0-l{flex-grow:0}.swagger-ui .flex-grow-1-l{flex-grow:1}.swagger-ui .flex-shrink-0-l{flex-shrink:0}.swagger-ui .flex-shrink-1-l{flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.3333333333%}.swagger-ui .w-two-thirds{width:66.6666666667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.3333333333%}.swagger-ui .w-two-thirds-ns{width:66.6666666667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.3333333333%}.swagger-ui .w-two-thirds-m{width:66.6666666667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.3333333333%}.swagger-ui .w-two-thirds-l{width:66.6666666667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{transform:rotate(45deg)}.swagger-ui .rotate-90{transform:rotate(90deg)}.swagger-ui .rotate-135{transform:rotate(135deg)}.swagger-ui .rotate-180{transform:rotate(180deg)}.swagger-ui .rotate-225{transform:rotate(225deg)}.swagger-ui .rotate-270{transform:rotate(270deg)}.swagger-ui .rotate-315{transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{transform:rotate(45deg)}.swagger-ui .rotate-90-ns{transform:rotate(90deg)}.swagger-ui .rotate-135-ns{transform:rotate(135deg)}.swagger-ui .rotate-180-ns{transform:rotate(180deg)}.swagger-ui .rotate-225-ns{transform:rotate(225deg)}.swagger-ui .rotate-270-ns{transform:rotate(270deg)}.swagger-ui .rotate-315-ns{transform:rotate(315deg)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .rotate-45-m{transform:rotate(45deg)}.swagger-ui .rotate-90-m{transform:rotate(90deg)}.swagger-ui .rotate-135-m{transform:rotate(135deg)}.swagger-ui .rotate-180-m{transform:rotate(180deg)}.swagger-ui .rotate-225-m{transform:rotate(225deg)}.swagger-ui .rotate-270-m{transform:rotate(270deg)}.swagger-ui .rotate-315-m{transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{transform:rotate(45deg)}.swagger-ui .rotate-90-l{transform:rotate(90deg)}.swagger-ui .rotate-135-l{transform:rotate(135deg)}.swagger-ui .rotate-180-l{transform:rotate(180deg)}.swagger-ui .rotate-225-l{transform:rotate(225deg)}.swagger-ui .rotate-270-l{transform:rotate(270deg)}.swagger-ui .rotate-315-l{transform:rotate(315deg)}}.swagger-ui .black-90{color:#000000e6}.swagger-ui .black-80{color:#000c}.swagger-ui .black-70{color:#000000b3}.swagger-ui .black-60{color:#0009}.swagger-ui .black-50{color:#00000080}.swagger-ui .black-40{color:#0006}.swagger-ui .black-30{color:#0000004d}.swagger-ui .black-20{color:#0003}.swagger-ui .black-10{color:#0000001a}.swagger-ui .black-05{color:#0000000d}.swagger-ui .white-90{color:#ffffffe6}.swagger-ui .white-80{color:#fffc}.swagger-ui .white-70{color:#ffffffb3}.swagger-ui .white-60{color:#fff9}.swagger-ui .white-50{color:#ffffff80}.swagger-ui .white-40{color:#fff6}.swagger-ui .white-30{color:#ffffff4d}.swagger-ui .white-20{color:#fff3}.swagger-ui .white-10{color:#ffffff1a}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:#000000e6}.swagger-ui .bg-black-80{background-color:#000c}.swagger-ui .bg-black-70{background-color:#000000b3}.swagger-ui .bg-black-60{background-color:#0009}.swagger-ui .bg-black-50{background-color:#00000080}.swagger-ui .bg-black-40{background-color:#0006}.swagger-ui .bg-black-30{background-color:#0000004d}.swagger-ui .bg-black-20{background-color:#0003}.swagger-ui .bg-black-10{background-color:#0000001a}.swagger-ui .bg-black-05{background-color:#0000000d}.swagger-ui .bg-white-90{background-color:#ffffffe6}.swagger-ui .bg-white-80{background-color:#fffc}.swagger-ui .bg-white-70{background-color:#ffffffb3}.swagger-ui .bg-white-60{background-color:#fff9}.swagger-ui .bg-white-50{background-color:#ffffff80}.swagger-ui .bg-white-40{background-color:#fff6}.swagger-ui .bg-white-30{background-color:#ffffff4d}.swagger-ui .bg-white-20{background-color:#fff3}.swagger-ui .bg-white-10{background-color:#ffffff1a}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:initial}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:#000000e6}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:#000c}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:#000000b3}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:#0009}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:#00000080}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:#0006}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:#0000004d}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:#0003}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:#0000001a}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:#ffffffe6}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:#fffc}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:#ffffffb3}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:#fff9}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:#ffffff80}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:#fff6}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:#ffffff4d}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:#fff3}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:#ffffff1a}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:initial}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:#000000e6}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:#000c}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:#000000b3}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:#0009}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:#00000080}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:#0006}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:#0000004d}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:#0003}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:#0000001a}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:#ffffffe6}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:#fffc}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:#ffffffb3}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:#fff9}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:#ffffff80}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:#fff6}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:#ffffff4d}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:#fff3}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:#ffffff1a}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:#ffffff1a}.swagger-ui .stripe-dark:nth-child(odd){background-color:#0000001a}.swagger-ui .strike{text-decoration:line-through}.swagger-ui .underline{text-decoration:underline}.swagger-ui .no-underline{text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{text-decoration:line-through}.swagger-ui .underline-ns{text-decoration:underline}.swagger-ui .no-underline-ns{text-decoration:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .strike-m{text-decoration:line-through}.swagger-ui .underline-m{text-decoration:underline}.swagger-ui .no-underline-m{text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{text-decoration:line-through}.swagger-ui .underline-l{text-decoration:underline}.swagger-ui .no-underline-l{text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}@media screen and (min-width:30em){.swagger-ui .clip-ns{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .clip-m{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:60em){.swagger-ui .clip-l{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:initial}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:initial}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .v-base-m{vertical-align:initial}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:initial}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5;transition:opacity .15s ease-in}.swagger-ui .dim:active{opacity:.8;transition:opacity .15s ease-out}.swagger-ui .glow{transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1;transition:opacity .15s ease-in}.swagger-ui .hide-child .child{opacity:0;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{transform:scale(1.05)}.swagger-ui .grow:active{transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{transform:scale(1.2)}.swagger-ui .grow-large:active{transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover:after{border-radius:inherit;box-shadow:0 0 16px 2px #0003;content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus:after,.swagger-ui .shadow-hover:hover:after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial{z-index:auto}.swagger-ui .z-unset{z-index:unset}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.swagger-ui .wrapper{box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:flex;flex-direction:column}.swagger-ui .try-out.btn-group{display:flex;flex:0.1 2 auto;padding:0}.swagger-ui .try-out__btn{margin-left:1.25rem}.swagger-ui .opblock-tag{align-items:center;border-bottom:1px solid #3b41514d;cursor:pointer;display:flex;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui .opblock-tag:hover{background:#00000005}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{flex:1}.swagger-ui .opblock-tag svg{transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;flex:2;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .opblock-tag>div{flex:1 1 150px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;box-shadow:0 0 3px #00000030;margin:0 0 15px}.swagger-ui .opblock .tab-header{display:flex;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span:after{background:gray;bottom:-15px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{align-items:center;background:#fffc;box-shadow:0 1px 2px #0000001a;display:flex;min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header>label{align-items:center;color:#3b4151;display:flex;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 0;text-align:center;text-shadow:0 1px 0 #0000001a}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{align-items:center;color:#3b4151;display:flex;font-family:monospace;font-size:16px;font-weight:600;padding:0 10px;word-break:break-word}@media (max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{flex-shrink:0;max-width:calc(100% - 110px - 15rem)}.swagger-ui .opblock .opblock-summary-path__deprecated{text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;flex:1 1 auto;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary{align-items:center;cursor:pointer;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock.opblock-post{background:#49cc901a;border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span:after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:#fca1301a;border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span:after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:#f93e3e1a;border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span:after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:#61affe1a;border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span:after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:#50e3c21a;border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span:after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:#9012fe1a;border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span:after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:#0d5aa71a;border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span:after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:#ebebeb1a;border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span:after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .tab{display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type:after{background:#0003;content:"";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .tab li button.tablinks{background:none;border:0;color:inherit;font-family:inherit;font-weight:inherit;padding:0}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:flex;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{white-space:normal}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{word-wrap:break-word;background:#333;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important;word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{align-items:center;background:#7d8293;border-radius:4px;bottom:10px;color:#fff;cursor:pointer;display:flex;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;justify-content:center;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;box-shadow:0 1px 2px 0 #00000026;margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{align-items:flex-end;display:flex}.swagger-ui .scheme-container .schemes>label{color:#3b4151;display:flex;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>label select{min-width:130px;text-transform:uppercase}.swagger-ui .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading:after{color:#3b4151;content:"loading";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading:before{animation:rotation 1s linear infinite,opacity .5s;backface-visibility:hidden;border-radius:100%;border:2px solid #5555551a;border-top-color:#0009;content:"";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@keyframes rotation{to{transform:rotate(1turn)}}.swagger-ui .response-controls{display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:flex;font-size:1.2em;height:100%;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:#0000;border:2px solid gray;border-radius:4px;box-shadow:0 1px 2px #0000001a;color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{box-shadow:0 0 5px #0000004d}.swagger-ui .btn.cancel{background-color:initial;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:initial;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:flex;padding:30px}.swagger-ui .btn-group .btn{flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 0 0 10px}.swagger-ui .authorization__btn.locked{opacity:1}.swagger-ui .authorization__btn.unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{fill:#707070;transition:all .3s}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;display:flex;height:30px;justify-content:center;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" aria-hidden="true"><path fill="%23fff" fill-rule="evenodd" d="M4 12h4v1H4v-1zm5-6H4v1h5V6zm2 3V7l-3 3 3 3v-2h5V9h-5zM6.5 8H4v1h2.5V8zM4 11h2.5v-1H4v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H3c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V5H3v9h10v-2zM4 4h8c0-.55-.45-1-1-1h-1c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H5c-.55 0-1 .45-1 1z"/></svg>') 50% no-repeat;border:none;flex-grow:1;flex-shrink:1;height:25px}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px}.swagger-ui select{appearance:none;background:#f7f7f7 url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11l3.418-3.141z"/></svg>') right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;box-shadow:0 1px 2px 0 #00000040;color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media (max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}@media (max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:#fffc;border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;transition:opacity .5s}.swagger-ui .checkbox label{display:flex}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:400!important;font-weight:600;margin:0!important}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url('data:image/svg+xml;charset=utf-8,<svg width="10" height="8" viewBox="3 7 10 8" xmlns="http://www.w3.org/2000/svg"><path fill="%2341474E" fill-rule="evenodd" d="M6.333 15 3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z"/></svg>') 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:#000c;bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;box-shadow:0 10px 30px 0 #0003;left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{align-items:center;border-bottom:1px solid #ebebeb;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .model-toggle.collapsed{transform:rotate(0deg)}.swagger-ui .model-toggle:after{background:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg>') 50% no-repeat;background-size:100%;content:"";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{visibility:visible}.swagger-ui .model-hint{background:#000000b3;border-radius:4px;color:#ebebeb;padding:.1em .5em;position:absolute;top:-1.8em;visibility:hidden;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui section.models{border:1px solid #3b41514d;border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid #3b41514d;margin:0 0 5px}.swagger-ui section.models h4{align-items:center;color:#606060;cursor:pointer;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui section.models h4 svg{transition:all .4s}.swagger-ui section.models h4 span{flex:1}.swagger-ui section.models h4:hover{background:#00000005}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:#0000000d;border-radius:4px;margin:0 20px 15px;position:relative;transition:all .5s}.swagger-ui section.models .model-container:hover{background:#00000012}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui .model-box{background:#0000001a;border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid #3b415133;color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input[type=text]{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required:after{color:#f009;content:"required";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:gray;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper,.swagger-ui .topbar a{align-items:center;display:flex}.swagger-ui .topbar a{color:#fff;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:flex;flex:3;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{align-items:center;color:#f0f0f0;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;box-shadow:none;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info pre{font-size:14px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300!important;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:flex;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:flex;flex:1;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{animation:scaleUp .5s;background:#f93e3e1a;border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{align-items:center;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;margin:0}@keyframes scaleUp{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:#0000000d;border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block}.toast-center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:#0000;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6Jy8+PC9zdmc+")}.toast-error{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEyMS42IDMxMy4xYzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMzggMzc3LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMzEybC02NS4xIDY1LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwxMzQuNCAzMzhjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2NS42LTY1LTY1LjYtNjUuMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDM5LjYtMzkuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjUgNjUuNyA2NS4xLTY1LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDM5LjYgMzkuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzEyIDI1Nmw2NS42IDY1LjF6Jy8+PC9zdmc+")}.toast-success{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxeicvPjwvc3ZnPg==")}.toast-warning{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1NzYgNTEyJyB3aWR0aD0nNTc2JyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0eicvPjwvc3ZnPg==")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width: 240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width: 241px) and (max-width: 480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width: 481px) and (max-width: 768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}.tree-children.tree-children-no-padding{padding-left:0}.tree-children{overflow:hidden}.node-drop-slot{display:block;height:2px}.node-drop-slot.is-dragging-over{background:#dfe;height:20px;border:2px dotted #888}.toggle-children-wrapper-expanded .toggle-children{transform:rotate(90deg)}.toggle-children-wrapper-collapsed .toggle-children{transform:rotate(0)}.toggle-children-wrapper{padding:2px 3px 5px 1px}.toggle-children{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzRkRFQjcxODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzRkRFQjcwODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTk5NzA1OGEtZDI3OC00NDZkLWE4ODgtNGM4MGQ4YWI1NzNmIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzRkZmQxMGMtY2NlNS0xMTc4LWE5OGQtY2NkZmM5ODk5YWYwIi8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Z2x5cGhpY29uczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5iogFwAAAGhJREFUeNpiYGBgKABigf///zOQg0EARH4A4gZyDIIZ8B/JoAJKDIDhB0CcQIkBRBtEyABkgxwoMQCGD6AbRKoBGAYxQgXIBRuZGKgAKPIC3QLxArnRSHZCIjspk52ZKMrOFBUoAAEGAKnq593MQAZtAAAAAElFTkSuQmCC");height:8px;width:9px;background-size:contain;background-repeat:no-repeat;background-position:50%}.toggle-children,.toggle-children-placeholder{display:inline-block;position:relative;top:1px}.toggle-children-placeholder{height:10px;width:10px;padding-right:3px}.node-content-wrapper{display:inline-block;padding:2px 5px;border-radius:2px;transition:background-color .15s,box-shadow .15s}.node-wrapper{display:flex;align-items:flex-start}.node-content-wrapper-active,.node-content-wrapper-active.node-content-wrapper-focused,.node-content-wrapper.node-content-wrapper-active:hover{background:#beebff}.node-content-wrapper-focused{background:#e7f4f9}.node-content-wrapper:hover{background:#f7fbff}.node-content-wrapper-active,.node-content-wrapper-focused,.node-content-wrapper:hover{box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over{background:#dfe;box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over-disabled{opacity:.5}tree-viewport{-webkit-tap-highlight-color:transparent;height:100%;overflow:auto;display:block}.tree-children{padding-left:20px}.empty-tree-drop-slot .node-drop-slot{height:20px;min-width:100px}.angular-tree-component{width:100%;position:relative;display:inline-block;cursor:pointer;-webkit-touch-callout:none;user-select:none}tree-root .angular-tree-component-rtl{direction:rtl}tree-root .angular-tree-component-rtl .toggle-children-wrapper-collapsed .toggle-children{transform:rotate(180deg)!important}tree-root .angular-tree-component-rtl .tree-children{padding-right:20px;padding-left:0}tree-node-checkbox{padding:1px}:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#6c757d;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--black:#000;--barley-white:#fcecba;--fg-color-over-dark-bg:#fff;--fg-hover-color-over-dark-bg:#adb5bd;--body-color-bright:#f8f9fa;--body-bg:#fff;--body-color:#212529;--body-bg-alt:#e9ecef;--health-color-error:red;--health-color-healthy:#0b0;--health-color-warning:orange;--chart-color-red:#c9190b;--chart-color-blue:#06c;--chart-color-orange:#ef9234;--chart-color-yellow:#f6d173;--chart-color-green:#7cc674;--chart-color-gray:#ededed;--chart-color-cyan:#73c5c5;--chart-color-purple:#3c3d99;--chart-color-center-text:#151515;--chart-color-center-text-description:#72767b;--chart-color-tooltip-background:#000;--chart-danger:#c9190b;--card-cap-bg:#f8f9fa;--grid-gutter-width:30px;--datatable-divider-color:#00000017;--nav-tabs-margin-bottom:1rem;--tooltip-color:#fff;--tooltip-bg:#212529;--screen-sm-min:576px;--screen-md-min:768px;--screen-lg-min:992px;--screen-xl-min:1200px;--screen-xs-max:calc(576px - 1px);--screen-sm-max:calc(768px - 1px);--screen-md-max:calc(992px - 1px);--screen-lg-max:calc(1200px - 1px);--navbar-height:43px;--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#a94442;--red:#ef5c55;--orange:#fd7e14;--yellow:#ffc200;--green:#0b0;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#374249;--success:#0b0;--info:#2b99a8;--warning:#ffc200;--danger:#ef5c55;--light:#f8f9fa;--dark:#777;--accent:#ef5c55;--warning-dark:#fd7e14;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--breakpoint-2xl:1450px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:initial;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}a{color:#2b99a8;text-decoration:none;background-color:initial}a:hover{color:#1b626b;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[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]{box-sizing:border-box;padding:0}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:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:initial}[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-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid #0000001a}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#a94442;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width: 992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width: 1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row,cd-about dl{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-2xl,.col-2xl-1,.col-2xl-10,.col-2xl-11,.col-2xl-12,.col-2xl-2,.col-2xl-3,.col-2xl-4,.col-2xl-5,.col-2xl-6,.col-2xl-7,.col-2xl-8,.col-2xl-9,.col-2xl-auto,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto,cd-about dd,cd-about dt,cd-health cd-info-card,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-chart-card,cd-health cd-info-card.cd-performance-card,cd-health cd-info-card.cd-status-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4,cd-about dt{flex:0 0 33.33333333%;max-width:33.33333333%}.col-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-8,cd-about dd{flex:0 0 66.66666667%;max-width:66.66666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-11{flex:0 0 91.66666667%;max-width:91.66666667%}.cd-col-form,.col-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-sm-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form-input,.cd-col-form-offset,.col-sm-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.cd-col-form-offset,.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-md-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6,cd-health cd-info-card{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form-input,.cd-col-form-offset,.col-md-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12,cd-health cd-info-card.cd-chart-card{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{flex:0 0 16.66666667%;max-width:16.66666667%}.cd-col-form-label,.col-lg-3,cd-health cd-info-card.cd-capacity-card{flex:0 0 25%;max-width:25%}.col-lg-4,cd-health cd-info-card,cd-modal .cd-col-form-label{flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6,cd-health cd-info-card.cd-chart-card,cd-health cd-info-card.cd-performance-card{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333333%;max-width:58.33333333%}.cd-col-form,.col-lg-8,cd-modal .cd-col-form-input,cd-modal .cd-col-form-offset{flex:0 0 66.66666667%;max-width:66.66666667%}.cd-col-form-input,.cd-col-form-offset,.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.cd-col-form-offset,.offset-lg-3{margin-left:25%}.offset-lg-4,cd-modal .cd-col-form-offset{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width: 1200px){.col-xl,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3,cd-health cd-info-card.cd-status-card{flex:0 0 25%;max-width:25%}.col-xl-4,cd-health cd-info-card.cd-chart-card{flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.cd-col-form,.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}@media (min-width: 1450px){.col-2xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-2xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-2xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-2xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-2xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-2xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-2xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-2xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-2xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-2xl-3,cd-health cd-info-card.cd-chart-card{flex:0 0 25%;max-width:25%}.col-2xl-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-2xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-2xl-6{flex:0 0 50%;max-width:50%}.col-2xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-2xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-2xl-9{flex:0 0 75%;max-width:75%}.col-2xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-2xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-2xl-12{flex:0 0 100%;max-width:100%}.order-2xl-first{order:-1}.order-2xl-last{order:13}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-6{order:6}.order-2xl-7{order:7}.order-2xl-8{order:8}.order-2xl-9{order:9}.order-2xl-10{order:10}.order-2xl-11{order:11}.order-2xl-12{order:12}.offset-2xl-0{margin-left:0}.offset-2xl-1{margin-left:8.33333333%}.offset-2xl-2{margin-left:16.66666667%}.offset-2xl-3{margin-left:25%}.offset-2xl-4{margin-left:33.33333333%}.offset-2xl-5{margin-left:41.66666667%}.offset-2xl-6{margin-left:50%}.offset-2xl-7{margin-left:58.33333333%}.offset-2xl-8{margin-left:66.66666667%}.offset-2xl-9{margin-left:75%}.offset-2xl-10{margin-left:83.33333333%}.offset-2xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:#0000000d}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c4e2e7}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#91cad2}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b2d9e0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#c7cacc}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#979da0}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#babdc0}.table-success,.table-success>td,.table-success>th{background-color:#b8ecb8}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#7adc7a}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#a4e7a4}.table-info,.table-info>td,.table-info>th{background-color:#c4e2e7}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#91cad2}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b2d9e0}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeb8}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7a}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe89f}.table-danger,.table-danger>td,.table-danger>th{background-color:#fbd1cf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f7aaa7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f9bab7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#d9d9d9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#b8b8b8}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#ccc}.table-accent,.table-accent>td,.table-accent>th{background-color:#fbd1cf}.table-accent tbody+tbody,.table-accent td,.table-accent th,.table-accent thead th{border-color:#f7aaa7}.table-hover .table-accent:hover,.table-hover .table-accent:hover>td,.table-hover .table-accent:hover>th{background-color:#f9bab7}.table-warning-dark,.table-warning-dark>td,.table-warning-dark>th{background-color:#fedbbd}.table-warning-dark tbody+tbody,.table-warning-dark td,.table-warning-dark th,.table-warning-dark thead th{border-color:#febc85}.table-hover .table-warning-dark:hover,.table-hover .table-warning-dark:hover>td,.table-hover .table-warning-dark:hover>th{background-color:#fecda4}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:#ffffff0d}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}@media (max-width: 1449.98px){.table-responsive-2xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-2xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.cd-form-control,.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.cd-form-control,.form-control{transition:none}}.cd-form-control::-ms-expand,.form-control::-ms-expand{background-color:initial;border:0}.cd-form-control:focus,.form-control:focus{color:#495057;background-color:#fff;border-color:#76d0dc;box-shadow:0 0 0 .2rem #2b99a840}.cd-form-control::placeholder,.form-control::placeholder{color:#6c757d;opacity:1}.cd-form-control:disabled,.form-control:disabled,.form-control[readonly],[readonly].cd-form-control{background-color:#e9ecef;opacity:1}input[type=date].cd-form-control,input[type=date].form-control,input[type=datetime-local].cd-form-control,input[type=datetime-local].form-control,input[type=month].cd-form-control,input[type=month].form-control,input[type=time].cd-form-control,input[type=time].form-control{appearance:none}select.cd-form-control:-moz-focusring,select.form-control:-moz-focusring{color:#0000;text-shadow:0 0 0 #495057}select.cd-form-control:focus::-ms-value,select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.cd-col-form-label,.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:initial;border:solid #0000;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],select[multiple].cd-form-control,select[size].cd-form-control,textarea.cd-form-control,textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#0b0}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#00bb00e6;border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.is-valid.cd-form-control,.was-validated .cd-form-control:valid,.was-validated .form-control:valid{border-color:#0b0;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%230b0' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.is-valid.cd-form-control:focus,.was-validated .cd-form-control:valid:focus,.was-validated .form-control:valid:focus{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.was-validated select.cd-form-control:valid,.was-validated select.form-control:valid,select.form-control.is-valid,select.is-valid.cd-form-control{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.cd-form-control:valid,.was-validated textarea.form-control:valid,textarea.form-control.is-valid,textarea.is-valid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#0b0;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%230b0' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#0b0}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#0b0}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#0b0}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#0e0;background-color:#0e0}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #00bb0040}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#0b0}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#0b0;box-shadow:0 0 0 .2rem #00bb0040}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#ef5c55}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:#ef5c55e6;border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.is-invalid.cd-form-control,.was-validated .cd-form-control:invalid,.was-validated .form-control:invalid{border-color:#ef5c55;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ef5c55' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ef5c55' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.is-invalid.cd-form-control:focus,.was-validated .cd-form-control:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.was-validated select.cd-form-control:invalid,.was-validated select.form-control:invalid,select.form-control.is-invalid,select.is-invalid.cd-form-control{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.cd-form-control:invalid,.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid,textarea.is-invalid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ef5c55;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ef5c55' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ef5c55' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ef5c55}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ef5c55}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ef5c55}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f38984;background-color:#f38984}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #ef5c5540}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ef5c55}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ef5c55;box-shadow:0 0 0 .2rem #ef5c5540}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .cd-form-control,.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:initial;border:1px solid #0000;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a840}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-secondary{color:#fff;background-color:#374249;border-color:#374249}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#272e33;border-color:#21282c}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem #555e6480}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#374249;border-color:#374249}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#21282c;border-color:#1c2125}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #555e6480}.btn-success{color:#fff;background-color:#0b0;border-color:#0b0}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#009500;border-color:#080}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem #26c52680}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#0b0;border-color:#0b0}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#080;border-color:#007b00}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #26c52680}.btn-info{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #4ba8b580}.btn-warning{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#d9a500;border-color:#cc9b00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem #deaa0680}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#cc9b00;border-color:#bf9200}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #deaa0680}.btn-danger{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-dark{color:#fff;background-color:#777;border-color:#777}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#646464;border-color:#5e5e5e}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem #8b8b8b80}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#777;border-color:#777}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#5e5e5e;border-color:#575757}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #8b8b8b80}.btn-accent{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-accent.focus,.btn-accent:focus,.btn-accent:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-accent.focus,.btn-accent:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-accent.disabled,.btn-accent:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-accent:not(:disabled):not(.disabled).active,.btn-accent:not(:disabled):not(.disabled):active,.show>.btn-accent.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-accent:not(:disabled):not(.disabled).active:focus,.btn-accent:not(:disabled):not(.disabled):active:focus,.show>.btn-accent.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f1746f80}.btn-warning-dark{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-warning-dark.focus,.btn-warning-dark:focus,.btn-warning-dark:hover{color:#fff;background-color:#e96b02;border-color:#dc6502}.btn-warning-dark.focus,.btn-warning-dark:focus{box-shadow:0 0 0 .2rem #dc711780}.btn-warning-dark.disabled,.btn-warning-dark:disabled{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-warning-dark:not(:disabled):not(.disabled).active,.btn-warning-dark:not(:disabled):not(.disabled):active,.show>.btn-warning-dark.dropdown-toggle{color:#fff;background-color:#dc6502;border-color:#cf5f02}.btn-warning-dark:not(:disabled):not(.disabled).active:focus,.btn-warning-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-warning-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #dc711780}.btn-outline-primary{color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#2b99a8;background-color:initial}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-secondary{color:#374249;border-color:#374249}.btn-outline-secondary:hover{color:#fff;background-color:#374249;border-color:#374249}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem #37424980}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#374249;background-color:initial}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#374249;border-color:#374249}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #37424980}.btn-outline-success{color:#0b0;border-color:#0b0}.btn-outline-success:hover{color:#fff;background-color:#0b0;border-color:#0b0}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem #00bb0080}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#0b0;background-color:initial}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#0b0;border-color:#0b0}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #00bb0080}.btn-outline-info{color:#2b99a8;border-color:#2b99a8}.btn-outline-info:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#2b99a8;background-color:initial}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #2b99a880}.btn-outline-warning{color:#ffc200;border-color:#ffc200}.btn-outline-warning:hover{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem #ffc20080}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc200;background-color:initial}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc200;border-color:#ffc200}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ffc20080}.btn-outline-danger{color:#ef5c55;border-color:#ef5c55}.btn-outline-danger:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ef5c55;background-color:initial}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:initial}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-dark{color:#777;border-color:#777}.btn-outline-dark:hover{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem #77777780}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#777;background-color:initial}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #77777780}.btn-outline-accent{color:#ef5c55;border-color:#ef5c55}.btn-outline-accent:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-accent.focus,.btn-outline-accent:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-accent.disabled,.btn-outline-accent:disabled{color:#ef5c55;background-color:initial}.btn-outline-accent:not(:disabled):not(.disabled).active,.btn-outline-accent:not(:disabled):not(.disabled):active,.show>.btn-outline-accent.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-accent:not(:disabled):not(.disabled).active:focus,.btn-outline-accent:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-accent.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ef5c5580}.btn-outline-warning-dark{color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark:hover{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark.focus,.btn-outline-warning-dark:focus{box-shadow:0 0 0 .2rem #fd7e1480}.btn-outline-warning-dark.disabled,.btn-outline-warning-dark:disabled{color:#fd7e14;background-color:initial}.btn-outline-warning-dark:not(:disabled):not(.disabled).active,.btn-outline-warning-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-warning-dark.dropdown-toggle{color:#212529;background-color:#fd7e14;border-color:#fd7e14}.btn-outline-warning-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-warning-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #fd7e1480}.btn-link{font-weight:400;color:#2b99a8;text-decoration:none}.btn-link:hover{color:#1b626b}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid #0000;border-bottom:0;border-left:.3em solid #0000}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #00000026;border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}@media (min-width: 1450px){.dropdown-menu-2xl-left{right:auto;left:0}.dropdown-menu-2xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid #0000;border-bottom:.3em solid;border-left:.3em solid #0000}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid #0000;border-right:0;border-bottom:.3em solid #0000;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid #0000;border-right:.3em solid;border-bottom:.3em solid #0000}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:initial;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2b99a8}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:initial}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.cd-form-control,.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.cd-form-control+.cd-form-control,.input-group>.cd-form-control+.custom-file,.input-group>.cd-form-control+.custom-select,.input-group>.cd-form-control+.form-control,.input-group>.custom-file+.cd-form-control,.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.cd-form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.cd-form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.cd-form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.cd-form-control:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.cd-form-control:not(:first-child),.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.cd-form-control:nth-last-child(n+3),.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.cd-form-control:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.cd-form-control:not(textarea),.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.cd-form-control,.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.cd-form-control:not(textarea),.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.cd-form-control,.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#2b99a8;background-color:#2b99a8}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #2b99a840}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#76d0dc}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#9fdee6;border-color:#9fdee6}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#2b99a8;background-color:#2b99a8}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before,.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:#2b99a880}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#2b99a880}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#2b99a880}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#76d0dc;outline:0;box-shadow:0 0 0 .2rem #2b99a840}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:#0000;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76d0dc;box-shadow:0 0 0 .2rem #2b99a840}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:initial;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #2b99a840}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#2b99a8;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#9fdee6}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2b99a8;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#9fdee6}.custom-range::-moz-range-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#2b99a8;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#9fdee6}.custom-range::-ms-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:initial;border-color:#0000;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid #0000;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:initial;border-color:#0000}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2b99a8}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:initial;border:1px solid #0000;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (max-width: 1449.98px){.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid,.navbar-expand-2xl>.container-lg,.navbar-expand-2xl>.container-md,.navbar-expand-2xl>.container-sm,.navbar-expand-2xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1450px){.navbar-expand-2xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-2xl .navbar-nav{flex-direction:row}.navbar-expand-2xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-2xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid,.navbar-expand-2xl>.container-lg,.navbar-expand-2xl>.container-md,.navbar-expand-2xl>.container-sm,.navbar-expand-2xl>.container-xl{flex-wrap:nowrap}.navbar-expand-2xl .navbar-nav-scroll{overflow:visible}.navbar-expand-2xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-2xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#00000080}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:#000000e6}.navbar-light .navbar-toggler{color:#00000080;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#00000080}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#000000e6}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff80}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff80;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff80}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,pre:not(cd-api-docs *){position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:initial;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr,pre:not(cd-api-docs *)>hr{margin-right:0;margin-left:0}.card>.list-group,pre:not(cd-api-docs *)>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,pre:not(cd-api-docs *)>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child,pre:not(cd-api-docs *)>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer,pre:not(cd-api-docs *)>.card-header+.list-group,pre:not(cd-api-docs *)>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fa;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck pre:not(cd-api-docs *){margin-bottom:15px}@media (min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck pre:not(cd-api-docs *){flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>pre:not(cd-api-docs *){margin-bottom:15px}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card,.card-group>pre:not(cd-api-docs *){flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+pre:not(cd-api-docs *),.card-group>pre:not(cd-api-docs *)+.card,.card-group>pre:not(cd-api-docs *)+pre:not(cd-api-docs *){margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>pre:not(:last-child):not(cd-api-docs *){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-header,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-footer,.card-group>pre:not(:last-child):not(cd-api-docs *) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>pre:not(:first-child):not(cd-api-docs *){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-header,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-footer,.card-group>pre:not(:first-child):not(cd-api-docs *) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card,.card-columns pre:not(cd-api-docs *){margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;grid-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns pre:not(cd-api-docs *){display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card,.accordion>pre:not(cd-api-docs *){overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>pre:not(:last-of-type):not(cd-api-docs *){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>pre:not(:first-of-type):not(cd-api-docs *){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>pre:not(cd-api-docs *)>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination,cd-table .cd-datatable .datatable-footer .datatable-pager ul{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#2b99a8;background-color:#fff;border:1px solid #dee2e6}.page-link:hover,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:hover{z-index:2;color:#1b626b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem #2b99a840}.page-item:first-child .page-link,.page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link,.page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.active a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active a{z-index:3;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.page-item.disabled .page-link,.page-item.disabled cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.disabled a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled a{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg a{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link,.pagination-lg .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:first-child a{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link,.pagination-lg .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:last-child a{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm a{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link,.pagination-sm .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:first-child a{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link,.pagination-sm .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:last-child a{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:1rem;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:initial;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#2b99a8}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#21747f}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a880}.badge-secondary{color:#fff;background-color:#374249}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#21282c}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem #37424980}.badge-success{color:#fff;background-color:#0b0}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#080}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem #00bb0080}.badge-info{color:#fff;background-color:#2b99a8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#21747f}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem #2b99a880}.badge-warning{color:#212529;background-color:#ffc200}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#cc9b00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem #ffc20080}.badge-danger{color:#fff;background-color:#ef5c55}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#eb2f26}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem #ef5c5580}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem #f8f9fa80}.badge-dark{color:#fff;background-color:#777}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#5e5e5e}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem #77777780}.badge-accent{color:#fff;background-color:#ef5c55}a.badge-accent:focus,a.badge-accent:hover{color:#fff;background-color:#eb2f26}a.badge-accent.focus,a.badge-accent:focus{outline:0;box-shadow:0 0 0 .2rem #ef5c5580}.badge-warning-dark{color:#212529;background-color:#fd7e14}a.badge-warning-dark:focus,a.badge-warning-dark:hover{color:#212529;background-color:#dc6502}a.badge-warning-dark.focus,a.badge-warning-dark:focus{outline:0;box-shadow:0 0 0 .2rem #fd7e1480}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid #0000;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-primary hr{border-top-color:#b2d9e0}.alert-primary .alert-link{color:#0c2b2e}.alert-secondary{color:#1d2226;background-color:#d7d9db;border-color:#c7cacc}.alert-secondary hr{border-top-color:#babdc0}.alert-secondary .alert-link{color:#070809}.alert-success{color:#006100;background-color:#ccf1cc;border-color:#b8ecb8}.alert-success hr{border-top-color:#a4e7a4}.alert-success .alert-link{color:#002e00}.alert-info{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-info hr{border-top-color:#b2d9e0}.alert-info .alert-link{color:#0c2b2e}.alert-warning{color:#856500;background-color:#fff3cc;border-color:#ffeeb8}.alert-warning hr{border-top-color:#ffe89f}.alert-warning .alert-link{color:#523e00}.alert-danger{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-danger hr{border-top-color:#f9bab7}.alert-danger .alert-link{color:#56211f}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#3e3e3e;background-color:#e4e4e4;border-color:#d9d9d9}.alert-dark hr{border-top-color:#ccc}.alert-dark .alert-link{color:#252525}.alert-accent{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-accent hr{border-top-color:#f9bab7}.alert-accent .alert-link{color:#56211f}.alert-warning-dark{color:#84420a;background-color:#ffe5d0;border-color:#fedbbd}.alert-warning-dark hr{border-top-color:#fecda4}.alert-warning-dark .alert-link{color:#552a06}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#2b99a8;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 0,#0000 50%,#ffffff26 0,#ffffff26 75%,#0000 0,#0000);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1450px){.list-group-horizontal-2xl{flex-direction:row}.list-group-horizontal-2xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-2xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-2xl>.list-group-item.active{margin-top:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#165057;background-color:#c4e2e7}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-secondary{color:#1d2226;background-color:#c7cacc}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#1d2226;background-color:#babdc0}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#1d2226;border-color:#1d2226}.list-group-item-success{color:#006100;background-color:#b8ecb8}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#006100;background-color:#a4e7a4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#006100;border-color:#006100}.list-group-item-info{color:#165057;background-color:#c4e2e7}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-warning{color:#856500;background-color:#ffeeb8}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856500;background-color:#ffe89f}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856500;border-color:#856500}.list-group-item-danger{color:#7c302c;background-color:#fbd1cf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#3e3e3e;background-color:#d9d9d9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#3e3e3e;background-color:#ccc}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3e3e3e;border-color:#3e3e3e}.list-group-item-accent{color:#7c302c;background-color:#fbd1cf}.list-group-item-accent.list-group-item-action:focus,.list-group-item-accent.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-accent.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-warning-dark{color:#84420a;background-color:#fedbbd}.list-group-item-warning-dark.list-group-item-action:focus,.list-group-item-warning-dark.list-group-item-action:hover{color:#84420a;background-color:#fecda4}.list-group-item-warning-dark.list-group-item-action.active{color:#fff;background-color:#84420a;border-color:#84420a}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:initial;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:#ffffffd9;background-clip:padding-box;border:1px solid #0000001a;box-shadow:0 .25rem .75rem #0000001a;opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid #0000000d;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:#0000;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#212529}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#212529}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#212529}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#212529}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#212529;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:350px;font-family:Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:#0000;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:initial;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid #0000;border-bottom:10px solid #0000;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right:.25em solid #0000;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:initial!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#2b99a8!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#21747f!important}.bg-secondary{background-color:#374249!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#21282c!important}.bg-success{background-color:#0b0!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#080!important}.bg-info{background-color:#2b99a8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#21747f!important}.bg-warning{background-color:#ffc200!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#cc9b00!important}.bg-danger{background-color:#ef5c55!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#eb2f26!important}.bg-light,pre:not(cd-api-docs *){background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#777!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#5e5e5e!important}.bg-accent{background-color:#ef5c55!important}a.bg-accent:focus,a.bg-accent:hover,button.bg-accent:focus,button.bg-accent:hover{background-color:#eb2f26!important}.bg-warning-dark{background-color:#fd7e14!important}a.bg-warning-dark:focus,a.bg-warning-dark:hover,button.bg-warning-dark:focus,button.bg-warning-dark:hover{background-color:#dc6502!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:initial!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom,.cd-header,legend{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#2b99a8!important}.border-secondary{border-color:#374249!important}.border-success{border-color:#0b0!important}.border-info{border-color:#2b99a8!important}.border-warning{border-color:#ffc200!important}.border-danger{border-color:#ef5c55!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#777!important}.border-accent{border-color:#ef5c55!important}.border-warning-dark{border-color:#fd7e14!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex,cd-health cd-info-card{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width: 576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width: 768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width: 992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width: 1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media (min-width: 1450px){.d-2xl-none{display:none!important}.d-2xl-inline{display:inline!important}.d-2xl-inline-block{display:inline-block!important}.d-2xl-block{display:block!important}.d-2xl-table{display:table!important}.d-2xl-table-row{display:table-row!important}.d-2xl-table-cell{display:table-cell!important}.d-2xl-flex{display:flex!important}.d-2xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column,cd-health cd-info-card{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width: 576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width: 768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}@media (min-width: 1450px){.flex-2xl-row{flex-direction:row!important}.flex-2xl-column{flex-direction:column!important}.flex-2xl-row-reverse{flex-direction:row-reverse!important}.flex-2xl-column-reverse{flex-direction:column-reverse!important}.flex-2xl-wrap{flex-wrap:wrap!important}.flex-2xl-nowrap{flex-wrap:nowrap!important}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-2xl-fill{flex:1 1 auto!important}.flex-2xl-grow-0{flex-grow:0!important}.flex-2xl-grow-1{flex-grow:1!important}.flex-2xl-shrink-0{flex-shrink:0!important}.flex-2xl-shrink-1{flex-shrink:1!important}.justify-content-2xl-start{justify-content:flex-start!important}.justify-content-2xl-end{justify-content:flex-end!important}.justify-content-2xl-center{justify-content:center!important}.justify-content-2xl-between{justify-content:space-between!important}.justify-content-2xl-around{justify-content:space-around!important}.align-items-2xl-start{align-items:flex-start!important}.align-items-2xl-end{align-items:flex-end!important}.align-items-2xl-center{align-items:center!important}.align-items-2xl-baseline{align-items:baseline!important}.align-items-2xl-stretch{align-items:stretch!important}.align-content-2xl-start{align-content:flex-start!important}.align-content-2xl-end{align-content:flex-end!important}.align-content-2xl-center{align-content:center!important}.align-content-2xl-between{align-content:space-between!important}.align-content-2xl-around{align-content:space-around!important}.align-content-2xl-stretch{align-content:stretch!important}.align-self-2xl-auto{align-self:auto!important}.align-self-2xl-start{align-self:flex-start!important}.align-self-2xl-end{align-self:flex-end!important}.align-self-2xl-center{align-self:center!important}.align-self-2xl-baseline{align-self:baseline!important}.align-self-2xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width: 576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width: 768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width: 992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width: 1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}@media (min-width: 1450px){.float-2xl-left{float:left!important}.float-2xl-right{float:right!important}.float-2xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{white-space:nowrap}.sr-only-focusable:active,.sr-only-focusable:focus{white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.btn-toolbar cd-table-actions.btn-group,.mr-2,.mx-2,cd-logs label{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3,cd-logs .form-inline>.form-group{margin-right:1rem!important}.mb-3,.my-3,cd-logs .form-inline>.form-group{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.cd-header,.mt-4,.my-4,legend{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.cd-header,.mb-4,.my-4,cd-health cd-info-card,legend{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.cd-header,.pb-1,.py-1,legend{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2,cd-table .cd-datatable .datatable-footer,pre:not(cd-api-docs *){padding:.5rem!important}.pt-2,.py-2,cd-info-card .card .card-body .card-text,cd-info-card pre:not(cd-api-docs *) .card-body .card-text{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2,cd-info-card .card,cd-info-card pre:not(cd-api-docs *){padding-bottom:.5rem!important}.pl-2,.px-2,cd-info-card .card .card-body .card-title,cd-info-card pre:not(cd-api-docs *) .card-body .card-title{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width: 576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width: 768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width: 992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width: 1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}@media (min-width: 1450px){.m-2xl-0{margin:0!important}.mt-2xl-0,.my-2xl-0{margin-top:0!important}.mr-2xl-0,.mx-2xl-0{margin-right:0!important}.mb-2xl-0,.my-2xl-0{margin-bottom:0!important}.ml-2xl-0,.mx-2xl-0{margin-left:0!important}.m-2xl-1{margin:.25rem!important}.mt-2xl-1,.my-2xl-1{margin-top:.25rem!important}.mr-2xl-1,.mx-2xl-1{margin-right:.25rem!important}.mb-2xl-1,.my-2xl-1{margin-bottom:.25rem!important}.ml-2xl-1,.mx-2xl-1{margin-left:.25rem!important}.m-2xl-2{margin:.5rem!important}.mt-2xl-2,.my-2xl-2{margin-top:.5rem!important}.mr-2xl-2,.mx-2xl-2{margin-right:.5rem!important}.mb-2xl-2,.my-2xl-2{margin-bottom:.5rem!important}.ml-2xl-2,.mx-2xl-2{margin-left:.5rem!important}.m-2xl-3{margin:1rem!important}.mt-2xl-3,.my-2xl-3{margin-top:1rem!important}.mr-2xl-3,.mx-2xl-3{margin-right:1rem!important}.mb-2xl-3,.my-2xl-3{margin-bottom:1rem!important}.ml-2xl-3,.mx-2xl-3{margin-left:1rem!important}.m-2xl-4{margin:1.5rem!important}.mt-2xl-4,.my-2xl-4{margin-top:1.5rem!important}.mr-2xl-4,.mx-2xl-4{margin-right:1.5rem!important}.mb-2xl-4,.my-2xl-4{margin-bottom:1.5rem!important}.ml-2xl-4,.mx-2xl-4{margin-left:1.5rem!important}.m-2xl-5{margin:3rem!important}.mt-2xl-5,.my-2xl-5{margin-top:3rem!important}.mr-2xl-5,.mx-2xl-5{margin-right:3rem!important}.mb-2xl-5,.my-2xl-5{margin-bottom:3rem!important}.ml-2xl-5,.mx-2xl-5{margin-left:3rem!important}.p-2xl-0{padding:0!important}.pt-2xl-0,.py-2xl-0{padding-top:0!important}.pr-2xl-0,.px-2xl-0{padding-right:0!important}.pb-2xl-0,.py-2xl-0{padding-bottom:0!important}.pl-2xl-0,.px-2xl-0{padding-left:0!important}.p-2xl-1{padding:.25rem!important}.pt-2xl-1,.py-2xl-1{padding-top:.25rem!important}.pr-2xl-1,.px-2xl-1{padding-right:.25rem!important}.pb-2xl-1,.py-2xl-1{padding-bottom:.25rem!important}.pl-2xl-1,.px-2xl-1{padding-left:.25rem!important}.p-2xl-2{padding:.5rem!important}.pt-2xl-2,.py-2xl-2{padding-top:.5rem!important}.pr-2xl-2,.px-2xl-2{padding-right:.5rem!important}.pb-2xl-2,.py-2xl-2{padding-bottom:.5rem!important}.pl-2xl-2,.px-2xl-2{padding-left:.5rem!important}.p-2xl-3{padding:1rem!important}.pt-2xl-3,.py-2xl-3{padding-top:1rem!important}.pr-2xl-3,.px-2xl-3{padding-right:1rem!important}.pb-2xl-3,.py-2xl-3{padding-bottom:1rem!important}.pl-2xl-3,.px-2xl-3{padding-left:1rem!important}.p-2xl-4{padding:1.5rem!important}.pt-2xl-4,.py-2xl-4{padding-top:1.5rem!important}.pr-2xl-4,.px-2xl-4{padding-right:1.5rem!important}.pb-2xl-4,.py-2xl-4{padding-bottom:1.5rem!important}.pl-2xl-4,.px-2xl-4{padding-left:1.5rem!important}.p-2xl-5{padding:3rem!important}.pt-2xl-5,.py-2xl-5{padding-top:3rem!important}.pr-2xl-5,.px-2xl-5{padding-right:3rem!important}.pb-2xl-5,.py-2xl-5{padding-bottom:3rem!important}.pl-2xl-5,.px-2xl-5{padding-left:3rem!important}.m-2xl-n1{margin:-.25rem!important}.mt-2xl-n1,.my-2xl-n1{margin-top:-.25rem!important}.mr-2xl-n1,.mx-2xl-n1{margin-right:-.25rem!important}.mb-2xl-n1,.my-2xl-n1{margin-bottom:-.25rem!important}.ml-2xl-n1,.mx-2xl-n1{margin-left:-.25rem!important}.m-2xl-n2{margin:-.5rem!important}.mt-2xl-n2,.my-2xl-n2{margin-top:-.5rem!important}.mr-2xl-n2,.mx-2xl-n2{margin-right:-.5rem!important}.mb-2xl-n2,.my-2xl-n2{margin-bottom:-.5rem!important}.ml-2xl-n2,.mx-2xl-n2{margin-left:-.5rem!important}.m-2xl-n3{margin:-1rem!important}.mt-2xl-n3,.my-2xl-n3{margin-top:-1rem!important}.mr-2xl-n3,.mx-2xl-n3{margin-right:-1rem!important}.mb-2xl-n3,.my-2xl-n3{margin-bottom:-1rem!important}.ml-2xl-n3,.mx-2xl-n3{margin-left:-1rem!important}.m-2xl-n4{margin:-1.5rem!important}.mt-2xl-n4,.my-2xl-n4{margin-top:-1.5rem!important}.mr-2xl-n4,.mx-2xl-n4{margin-right:-1.5rem!important}.mb-2xl-n4,.my-2xl-n4{margin-bottom:-1.5rem!important}.ml-2xl-n4,.mx-2xl-n4{margin-left:-1.5rem!important}.m-2xl-n5{margin:-3rem!important}.mt-2xl-n5,.my-2xl-n5{margin-top:-3rem!important}.mr-2xl-n5,.mx-2xl-n5{margin-right:-3rem!important}.mb-2xl-n5,.my-2xl-n5{margin-bottom:-3rem!important}.ml-2xl-n5,.mx-2xl-n5{margin-left:-3rem!important}.m-2xl-auto{margin:auto!important}.mt-2xl-auto,.my-2xl-auto{margin-top:auto!important}.mr-2xl-auto,.mx-2xl-auto{margin-right:auto!important}.mb-2xl-auto,.my-2xl-auto{margin-bottom:auto!important}.ml-2xl-auto,.mx-2xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:#0000}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width: 576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1450px){.text-2xl-left{text-align:left!important}.text-2xl-right{text-align:right!important}.text-2xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold,cd-about dt{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#2b99a8!important}a.text-primary:focus,a.text-primary:hover{color:#1b626b!important}.text-secondary{color:#374249!important}a.text-secondary:focus,a.text-secondary:hover{color:#161b1d!important}.text-success{color:#0b0!important}a.text-success:focus,a.text-success:hover{color:#006f00!important}.text-info{color:#2b99a8!important}a.text-info:focus,a.text-info:hover{color:#1b626b!important}.text-warning{color:#ffc200!important}a.text-warning:focus,a.text-warning:hover{color:#b38800!important}.text-danger{color:#ef5c55!important}a.text-danger:focus,a.text-danger:hover{color:#e21f15!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#777!important}a.text-dark:focus,a.text-dark:hover{color:#515151!important}.text-accent{color:#ef5c55!important}a.text-accent:focus,a.text-accent:hover{color:#e21f15!important}.text-warning-dark{color:#fd7e14!important}a.text-warning-dark:focus,a.text-warning-dark:hover{color:#c35a02!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-hide{font:0/0 a;color:#0000;text-shadow:none;background-color:initial;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
+/*!
+Fork Awesome 1.1.7
+License - https://forkaweso.me/Fork-Awesome/license
+
+Copyright 2018 Dave Gandy & Fork Awesome
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.e182ad6df04f9177b326.eot?v=1.1.7);src:url(forkawesome-webfont.e182ad6df04f9177b326.eot?#iefix&v=1.1.7) format("embedded-opentype"),url(forkawesome-webfont.7c20758e3e7c7dff7c8d.woff2?v=1.1.7) format("woff2"),url(forkawesome-webfont.2dfb5f36fc148e26e398.woff?v=1.1.7) format("woff"),url(forkawesome-webfont.ee4d8bfd0af89fc714a2.ttf?v=1.1.7) format("truetype"),url(forkawesome-webfont.86541105409e56d17291.svg?v=1.1.7#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa,.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before,.fa-sync:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell-o:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-globe-e:before{content:""}.fa-globe-w:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-community:before,.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus-g:before,.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before,.fa-pound:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:""}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:""}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before,.fa-closed-captioning:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before,.fa-gem:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-medium-square:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo-v:before,.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.fa-mastodon:before{content:""}.fa-mastodon-alt:before{content:""}.fa-fork-awesome:before,.fa-fork-circle:before{content:""}.fa-peertube:before{content:""}.fa-diaspora:before{content:""}.fa-friendica:before{content:""}.fa-gnu-social:before{content:""}.fa-liberapay-square:before{content:""}.fa-liberapay:before{content:""}.fa-scuttlebutt:before,.fa-ssb:before{content:""}.fa-hubzilla:before{content:""}.fa-social-home:before{content:""}.fa-artstation:before{content:""}.fa-discord:before{content:""}.fa-discord-alt:before{content:""}.fa-patreon:before{content:""}.fa-snowdrift:before{content:""}.fa-activitypub:before{content:""}.fa-ethereum:before{content:""}.fa-keybase:before{content:""}.fa-shaarli:before{content:""}.fa-shaarli-o:before{content:""}.fa-cut-key:before,.fa-key-modern:before{content:""}.fa-xmpp:before{content:""}.fa-archive-org:before{content:""}.fa-freedombox:before{content:""}.fa-facebook-messenger:before{content:""}.fa-debian:before{content:""}.fa-mastodon-square:before{content:""}.fa-tipeee:before{content:""}.fa-react:before{content:""}.fa-dogmazic:before{content:""}.fa-zotero:before{content:""}.fa-nodejs:before{content:""}.fa-nextcloud:before{content:""}.fa-nextcloud-square:before{content:""}.fa-hackaday:before{content:""}.fa-laravel:before{content:""}.fa-signalapp:before{content:""}.fa-gnupg:before{content:""}.fa-php:before{content:""}.fa-ffmpeg:before{content:""}.fa-joplin:before{content:""}.fa-syncthing:before{content:""}.fa-inkscape:before{content:""}.fa-matrix-org:before{content:""}.fa-pixelfed:before{content:""}.fa-bootstrap:before{content:""}.fa-dev-to:before{content:""}.fa-hashnode:before{content:""}.fa-jirafeau:before{content:""}.fa-emby:before{content:""}.fa-wikidata:before{content:""}.fa-gimp:before{content:""}.fa-c:before{content:""}.fa-digitalocean:before{content:""}.fa-att:before{content:""}.fa-gitea:before{content:""}.fa-file-epub:before{content:""}.fa-python:before{content:""}.fa-archlinux:before{content:""}.fa-pleroma:before{content:""}.fa-unsplash:before{content:""}.fa-hackster:before{content:""}.fa-spell-check:before{content:""}.fa-moon:before{content:""}.fa-sun:before{content:""}.fa-f-droid:before{content:""}.fa-biometric:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-height:20vh;max-width:23vw}.info-card-popover-cluster-status .popover-body{font-size:1rem;max-height:19vh;max-width:100%;overflow:auto}@media (max-width: calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width: calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width: calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{border:1px solid #e9ecef;border-radius:3px;cursor:pointer;padding:7px}.info-card-content-clickable:hover{background-color:#e9ecef;border-color:#ced4da}html{background-color:#fff}body,html{font-size:12px;height:100%;width:100%}option{font-style:normal;font-weight:400}mark{background-color:#ffc200;padding:0}.full-height{height:100vh}.full-width{width:100vw}.vertical-align{align-items:center;display:flex}.horizontal-align{display:flex;justify-content:center}.loading:not(cd-api-docs *){left:50%;position:absolute;top:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-right{text-align:right}.text-monospace{font-family:monospace}.text-pre-wrap{white-space:pre-wrap}.text-pre{white-space:pre}.icon-danger-color{color:#ef5c55}.icon-warning-color{color:#ffc200}.border-warning{border-left:4px solid #ffc200}.border-danger{border-left:4px solid #ef5c55}.border-info{border-left:4px solid #2b99a8}.border-success{border-left:4px solid #0b0}.vertical-line{border-left:1px solid #ced4da}.accordion .card,.accordion pre:not(cd-api-docs *){border:0}.accordion .card-header{border:0;border-bottom:3px solid #fff;padding-left:0}.accordion .card-header .btn.focus,.accordion .card-header .btn:focus{box-shadow:none}.accordion .card-header button.dropdown-toggle{position:relative}.accordion .card-header button.dropdown-toggle:after{border:0;content:"";font-family:ForkAwesome;font-size:1rem;position:absolute;right:20px;transition:transform .3s ease-in-out}.accordion .card-header button.dropdown-toggle[aria-expanded=true]:after{transform:rotate(90deg)}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:initial}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#2b99a8;border-color:#2b99a8}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#adb5bd}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #2b99a840}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before{border-color:#76d0dc}.btn-light{background-color:#fff;border-color:#ced4da!important}.btn-light:hover{background-color:#dee2e6;border-color:#6c757d!important}.btn-light:disabled{background-color:#e9ecef;border-color:#ced4da!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0}.btn.disabled{border:0;box-shadow:none}.btn-primary .badge{background-color:#e9ecef;color:#2b99a8}.btn-group>.btn>i.fa,.cd-datatable-actions button.btn i.fa{margin-right:5px}.card-footer button.btn:not(:first-child){margin-left:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu button.dropdown-item:focus{outline:none}.dropdown-menu>li>a{cursor:pointer}.dropdown-menu>li>a>i.fa{margin-right:5px}.dropdown-menu>.active>a{background-color:#2b99a8;color:#e9ecef}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.dropdown-divider{cursor:auto}.required:after{color:#ef5c55;content:"*";font-size:1.167rem;padding-left:4px}.form-footer{display:flex;width:100%}.cd-form-control,.form-control{display:table-cell}.cd-form-control:focus,.form-control:focus{border-color:#2b99a8cc;box-shadow:0 0 3px 2px #2b99a880;outline:0}.custom-checkbox{padding-top:7px}.custom-radio{padding-top:5px}cd-modal .modal{background-color:#0006;display:block}cd-modal .modal-dialog{max-width:70vh}.invalid-feedback{display:block}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{padding:0 30px}.ceph-icon{background:url(Ceph_Logo.487a0001b327fa7f5232.svg)}.prometheus-icon{background:url(prometheus_logo.8b3183e5a2db0e87bb2b.svg)}.custom-icon{background-clip:padding-box;background-repeat:no-repeat;background-size:contain;margin-right:8px;padding:10px}.nav-tabs{margin-bottom:1rem}#toast-container{margin-top:2vw}@media (max-width: 1600px){#toast-container{margin-top:2.5vw}}@media (max-width: calc(992px - 1px)){#toast-container{margin-top:9vw}}@media (max-width: 900px){#toast-container{margin-top:10vw}}@media (max-width: 319px){#toast-container{margin-top:11vw}}@media (max-width: 260px){#toast-container{margin-top:14vw}}.toast-message>ul{margin:0;padding-left:1rem}.noscript{padding-top:5em}@media (min-width: 576px){.cd-col-form-label,.col-form-label{text-align:right}}.cd-col-form-label,.col-form-label{font-weight:700}.password-strength-level{flex:100%;margin-top:2px}.password-strength-level .ok,.password-strength-level .strong,.password-strength-level .very-strong,.password-strength-level .weak{border-radius:.25rem;height:13px}.password-strength-level .weak{background:#ef5c55;width:25%}.password-strength-level .ok{background:#ffc200;width:50%}.password-strength-level .strong{background:#0b0;width:75%}.password-strength-level .very-strong{background:#006f00;width:100%}.badge-background-gray,.badge-hdd{background-color:#6c757d;color:#fff}.badge-background-primary,.badge-ssd{background-color:#2b99a8;color:#fff}.badge-tab{background-color:#e9ecef;color:#495057}tree-root tree-viewport{min-height:1em}tags-input .tags{border:1px solid #ced4da;border-radius:4px;box-shadow:inset 0 1px 1px #00000017}.card-header{font-size:1.3em}.card-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable,a{cursor:pointer}
\ No newline at end of file
index d102e622d5c8f7e5f8928bcae38c84d6280d3161..6020f276cc3865612488bd0767d1add9745adf90 100644 (file)
@@ -5,9 +5,9 @@
   "requires": true,
   "dependencies": {
     "@aduh95/viz.js": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.5.0.tgz",
-      "integrity": "sha512-ahLdpRAoGsdgEfy2SGV2wnnHrBSLDHuwA32v+BoNGnz1gqajr8VMzF8y6mIQt28hHi4LQ272wqSi78DK4YdT2g==",
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz",
+      "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==",
       "dev": true
     },
     "@ampproject/remapping": {
       "requires": {
         "@jridgewell/resolve-uri": "1.0.0",
         "sourcemap-codec": "1.4.8"
+      },
+      "dependencies": {
+        "@jridgewell/resolve-uri": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz",
+          "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==",
+          "dev": true
+        }
       }
     },
     "@angular-devkit/architect": {
             "esbuild-windows-arm64": "0.13.8"
           }
         },
+        "minimatch": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
         "rxjs": {
           "version": "6.6.7",
           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
         "yargs": "^17.0.0"
       },
       "dependencies": {
-        "@babel/core": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz",
-          "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==",
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.16.7",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.16.7",
-            "@babel/parser": "^7.16.7",
-            "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.16.7",
-            "@babel/types": "^7.16.7",
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
+          "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.10",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.10",
+            "@babel/template": "^7.18.10",
+            "@babel/traverse": "^7.18.10",
+            "@babel/types": "^7.18.10",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
-            "semver": "^6.3.0",
-            "source-map": "^0.5.0"
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
           },
           "dependencies": {
             "semver": {
               "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
               "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
               "dev": true
-            },
-            "source-map": {
-              "version": "0.5.7",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-              "dev": true
             }
           }
         },
+        "@jridgewell/gen-mapping": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+          "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.0",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
+          }
+        },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
         "array-flatten": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
           "dev": true
         },
         "body-parser": {
             "ms": "2.0.0"
           }
         },
+        "depd": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+          "dev": true
+        },
+        "destroy": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+          "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==",
+          "dev": true
+        },
         "express": {
           "version": "4.17.1",
           "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
             "vary": "~1.1.2"
           }
         },
+        "finalhandler": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+          "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "on-finished": "~2.3.0",
+            "parseurl": "~1.3.3",
+            "statuses": "~1.5.0",
+            "unpipe": "~1.0.0"
+          }
+        },
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
         "inherits": {
           "version": "2.0.3",
           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
           "dev": true
         },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
+        "on-finished": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+          "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+          "dev": true,
+          "requires": {
+            "ee-first": "1.1.1"
+          }
+        },
         "qs": {
           "version": "6.7.0",
           "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
           "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
           "dev": true
         },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+          "dev": true
+        },
         "supports-color": {
           "version": "7.2.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
             "punycode": "^2.1.1"
           }
         },
+        "tr46": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+          "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+          "dev": true,
+          "requires": {
+            "punycode": "^2.1.0"
+          }
+        },
+        "webidl-conversions": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+          "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+          "dev": true
+        },
+        "whatwg-url": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+          "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+          "dev": true,
+          "requires": {
+            "lodash.sortby": "^4.7.0",
+            "tr46": "^1.0.1",
+            "webidl-conversions": "^4.0.2"
+          }
+        },
         "ws": {
-          "version": "7.5.6",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
-          "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
+          "version": "7.5.9",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+          "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
           "dev": true
         }
       }
       "dev": true
     },
     "@babel/code-frame": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
-      "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+      "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
       "requires": {
-        "@babel/highlight": "^7.16.7"
+        "@babel/highlight": "^7.18.6"
       }
     },
     "@babel/compat-data": {
-      "version": "7.16.4",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
-      "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
+      "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
       "dev": true
     },
     "@babel/core": {
       }
     },
     "@babel/generator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.7.tgz",
-      "integrity": "sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==",
+      "version": "7.18.12",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz",
+      "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==",
       "requires": {
-        "@babel/types": "^7.16.7",
-        "jsesc": "^2.5.1",
-        "source-map": "^0.5.0"
+        "@babel/types": "^7.18.10",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "jsesc": "^2.5.1"
       }
     },
     "@babel/helper-annotate-as-pure": {
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
-      "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
+      "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
       "dev": true,
       "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/helper-explode-assignable-expression": "^7.18.6",
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-compilation-targets": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
-      "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
+      "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.16.4",
-        "@babel/helper-validator-option": "^7.16.7",
-        "browserslist": "^4.17.5",
+        "@babel/compat-data": "^7.18.8",
+        "@babel/helper-validator-option": "^7.18.6",
+        "browserslist": "^4.20.2",
         "semver": "^6.3.0"
       },
       "dependencies": {
       }
     },
     "@babel/helper-create-class-features-plugin": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz",
-      "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz",
+      "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.16.7",
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-member-expression-to-functions": "^7.16.7",
-        "@babel/helper-optimise-call-expression": "^7.16.7",
-        "@babel/helper-replace-supers": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/helper-member-expression-to-functions": "^7.18.9",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.9",
+        "@babel/helper-split-export-declaration": "^7.18.6"
       },
       "dependencies": {
         "@babel/helper-annotate-as-pure": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-          "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.7"
+            "@babel/types": "^7.18.6"
           }
         }
       }
     },
     "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz",
-      "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz",
+      "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.16.7",
-        "regexpu-core": "^4.7.1"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "regexpu-core": "^5.1.0"
       },
       "dependencies": {
         "@babel/helper-annotate-as-pure": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-          "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.7"
+            "@babel/types": "^7.18.6"
           }
         }
       }
       }
     },
     "@babel/helper-environment-visitor": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
-      "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
-      "requires": {
-        "@babel/types": "^7.16.7"
-      }
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+      "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
     },
     "@babel/helper-explode-assignable-expression": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
-      "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
+      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-function-name": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
-      "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
-      "requires": {
-        "@babel/helper-get-function-arity": "^7.16.7",
-        "@babel/template": "^7.16.7",
-        "@babel/types": "^7.16.7"
-      }
-    },
-    "@babel/helper-get-function-arity": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
-      "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
+      "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/template": "^7.18.6",
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-hoist-variables": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
-      "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-member-expression-to-functions": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz",
-      "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
+      "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-module-imports": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
-      "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-module-transforms": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz",
-      "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
+      "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
       "dev": true,
       "requires": {
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-module-imports": "^7.16.7",
-        "@babel/helper-simple-access": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7",
-        "@babel/helper-validator-identifier": "^7.16.7",
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-simple-access": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.9",
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-optimise-call-expression": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
-      "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-plugin-utils": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
-      "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz",
+      "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==",
       "dev": true
     },
     "@babel/helper-remap-async-to-generator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz",
-      "integrity": "sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
+      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.16.7",
-        "@babel/helper-wrap-function": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-wrap-function": "^7.18.9",
+        "@babel/types": "^7.18.9"
       },
       "dependencies": {
         "@babel/helper-annotate-as-pure": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-          "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.7"
+            "@babel/types": "^7.18.6"
           }
         }
       }
     },
     "@babel/helper-replace-supers": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
-      "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz",
+      "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-member-expression-to-functions": "^7.16.7",
-        "@babel/helper-optimise-call-expression": "^7.16.7",
-        "@babel/traverse": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-member-expression-to-functions": "^7.18.9",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/traverse": "^7.18.9",
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-simple-access": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
-      "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
+      "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.16.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
-      "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz",
+      "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.16.0"
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/helper-split-export-declaration": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
-      "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
       "requires": {
-        "@babel/types": "^7.16.7"
+        "@babel/types": "^7.18.6"
       }
     },
+    "@babel/helper-string-parser": {
+      "version": "7.18.10",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
+      "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw=="
+    },
     "@babel/helper-validator-identifier": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
-      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+      "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
     },
     "@babel/helper-validator-option": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
-      "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
       "dev": true
     },
     "@babel/helper-wrap-function": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz",
-      "integrity": "sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw==",
+      "version": "7.18.11",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz",
+      "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/template": "^7.18.10",
+        "@babel/traverse": "^7.18.11",
+        "@babel/types": "^7.18.10"
       }
     },
     "@babel/helpers": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz",
-      "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
+      "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
       "requires": {
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.9",
+        "@babel/types": "^7.18.9"
       }
     },
     "@babel/highlight": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz",
-      "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
       "requires": {
-        "@babel/helper-validator-identifier": "^7.16.7",
+        "@babel/helper-validator-identifier": "^7.18.6",
         "chalk": "^2.0.0",
         "js-tokens": "^4.0.0"
       }
     },
     "@babel/parser": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.7.tgz",
-      "integrity": "sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA=="
+      "version": "7.18.11",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz",
+      "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
     },
     "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
-      "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
+      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
-      "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz",
+      "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
+        "@babel/plugin-proposal-optional-chaining": "^7.18.9"
       }
     },
     "@babel/plugin-proposal-async-generator-functions": {
       }
     },
     "@babel/plugin-proposal-class-properties": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
-      "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-proposal-class-static-block": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz",
-      "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz",
+      "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-class-static-block": "^7.14.5"
       }
     },
     "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
-      "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
+      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-dynamic-import": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-export-namespace-from": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
-      "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
+      "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.9",
         "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-json-strings": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
-      "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
+      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-json-strings": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-logical-assignment-operators": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
-      "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz",
+      "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.9",
         "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
-      "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-numeric-separator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
-      "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-numeric-separator": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz",
-      "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz",
+      "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.16.4",
-        "@babel/helper-compilation-targets": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/compat-data": "^7.18.8",
+        "@babel/helper-compilation-targets": "^7.18.9",
+        "@babel/helper-plugin-utils": "^7.18.9",
         "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.16.7"
+        "@babel/plugin-transform-parameters": "^7.18.8"
       }
     },
     "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
-      "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
-      "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz",
+      "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
         "@babel/plugin-syntax-optional-chaining": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-private-methods": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz",
-      "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
-      "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz",
+      "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.16.7",
-        "@babel/helper-create-class-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
       },
       "dependencies": {
         "@babel/helper-annotate-as-pure": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-          "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.7"
+            "@babel/types": "^7.18.6"
           }
         }
       }
     },
     "@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
-      "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-syntax-async-generators": {
         "@babel/helper-plugin-utils": "^7.8.3"
       }
     },
+    "@babel/plugin-syntax-import-assertions": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz",
+      "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
     "@babel/plugin-syntax-import-meta": {
       "version": "7.10.4",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+      "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
     "@babel/plugin-syntax-logical-assignment-operators": {
       "version": "7.10.4",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
       }
     },
     "@babel/plugin-transform-arrow-functions": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
-      "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz",
+      "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-async-to-generator": {
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
-      "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-block-scoping": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
-      "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz",
+      "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-classes": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
-      "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.16.7",
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-optimise-call-expression": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-replace-supers": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz",
+      "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/helper-replace-supers": "^7.18.9",
+        "@babel/helper-split-export-declaration": "^7.18.6",
         "globals": "^11.1.0"
       },
       "dependencies": {
         "@babel/helper-annotate-as-pure": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-          "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.7"
+            "@babel/types": "^7.18.6"
           }
         }
       }
     },
     "@babel/plugin-transform-computed-properties": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
-      "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz",
+      "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-destructuring": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz",
-      "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz",
+      "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-dotall-regex": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
-      "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
-      "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
+      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
-      "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
       "dev": true,
       "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-for-of": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
-      "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
+      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-function-name": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
-      "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
+      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-compilation-targets": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-compilation-targets": "^7.18.9",
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-literals": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
-      "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
+      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
-      "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-modules-amd": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
-      "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz",
+      "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz",
-      "integrity": "sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz",
+      "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-simple-access": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-simple-access": "^7.18.6",
         "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz",
-      "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz",
+      "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==",
       "dev": true,
       "requires": {
-        "@babel/helper-hoist-variables": "^7.16.7",
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-validator-identifier": "^7.16.7",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-module-transforms": "^7.18.9",
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/helper-validator-identifier": "^7.18.6",
         "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-umd": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
-      "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz",
-      "integrity": "sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz",
+      "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-new-target": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
-      "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
+      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-object-super": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
-      "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-replace-supers": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.6"
       }
     },
     "@babel/plugin-transform-parameters": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
-      "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz",
+      "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-property-literals": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
-      "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-react-display-name": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
+      "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-react-jsx": {
+      "version": "7.18.10",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz",
+      "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/plugin-syntax-jsx": "^7.18.6",
+        "@babel/types": "^7.18.10"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
+      }
+    },
+    "@babel/plugin-transform-react-jsx-development": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
+      "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-transform-react-jsx": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-react-pure-annotations": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
+      "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
       }
     },
     "@babel/plugin-transform-regenerator": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz",
-      "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz",
+      "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==",
       "dev": true,
       "requires": {
-        "regenerator-transform": "^0.14.2"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "regenerator-transform": "^0.15.0"
       }
     },
     "@babel/plugin-transform-reserved-words": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
-      "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-runtime": {
       }
     },
     "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
-      "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-spread": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
-      "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz",
+      "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+        "@babel/helper-plugin-utils": "^7.18.9",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9"
       }
     },
     "@babel/plugin-transform-sticky-regex": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
-      "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-template-literals": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
-      "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
+      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
-      "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
+      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-unicode-escapes": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
-      "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
+      "version": "7.18.10",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
+      "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-plugin-utils": "^7.18.9"
       }
     },
     "@babel/plugin-transform-unicode-regex": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
-      "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-        "@babel/helper-plugin-utils": "^7.16.7"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/preset-env": {
         "esutils": "^2.0.2"
       }
     },
+    "@babel/preset-react": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
+      "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-validator-option": "^7.18.6",
+        "@babel/plugin-transform-react-display-name": "^7.18.6",
+        "@babel/plugin-transform-react-jsx": "^7.18.6",
+        "@babel/plugin-transform-react-jsx-development": "^7.18.6",
+        "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+      }
+    },
     "@babel/runtime": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz",
-      "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
+      "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
       "requires": {
         "regenerator-runtime": "^0.13.4"
       }
     },
     "@babel/runtime-corejs3": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.7.tgz",
-      "integrity": "sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz",
+      "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==",
       "requires": {
-        "core-js-pure": "^3.19.0",
+        "core-js-pure": "^3.20.2",
         "regenerator-runtime": "^0.13.4"
       }
     },
     "@babel/template": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
-      "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+      "version": "7.18.10",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
+      "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
       "requires": {
-        "@babel/code-frame": "^7.16.7",
-        "@babel/parser": "^7.16.7",
-        "@babel/types": "^7.16.7"
+        "@babel/code-frame": "^7.18.6",
+        "@babel/parser": "^7.18.10",
+        "@babel/types": "^7.18.10"
       }
     },
     "@babel/traverse": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.7.tgz",
-      "integrity": "sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==",
-      "requires": {
-        "@babel/code-frame": "^7.16.7",
-        "@babel/generator": "^7.16.7",
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-hoist-variables": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7",
-        "@babel/parser": "^7.16.7",
-        "@babel/types": "^7.16.7",
+      "version": "7.18.11",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz",
+      "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==",
+      "requires": {
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.18.10",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.18.9",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/parser": "^7.18.11",
+        "@babel/types": "^7.18.10",
         "debug": "^4.1.0",
         "globals": "^11.1.0"
       }
     },
     "@babel/types": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.7.tgz",
-      "integrity": "sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==",
+      "version": "7.18.10",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz",
+      "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==",
       "requires": {
-        "@babel/helper-validator-identifier": "^7.16.7",
+        "@babel/helper-string-parser": "^7.18.10",
+        "@babel/helper-validator-identifier": "^7.18.6",
         "to-fast-properties": "^2.0.0"
       }
     },
       "dev": true
     },
     "@braintree/sanitize-url": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz",
-      "integrity": "sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw=="
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz",
+      "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w=="
     },
     "@circlon/angular-tree-component": {
       "version": "10.0.0",
         "minimist": "^1.2.0"
       }
     },
+    "@colors/colors": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+      "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+      "dev": true,
+      "optional": true
+    },
     "@compodoc/compodoc": {
       "version": "1.1.15",
       "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.15.tgz",
         "uuid": "^8.3.2"
       },
       "dependencies": {
-        "@babel/core": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz",
-          "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==",
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.16.7",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.16.7",
-            "@babel/parser": "^7.16.7",
-            "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.16.7",
-            "@babel/types": "^7.16.7",
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
+          "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.10",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.10",
+            "@babel/template": "^7.18.10",
+            "@babel/traverse": "^7.18.10",
+            "@babel/types": "^7.18.10",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
-            "semver": "^6.3.0",
-            "source-map": "^0.5.0"
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
           },
           "dependencies": {
             "semver": {
           }
         },
         "@babel/helper-define-polyfill-provider": {
-          "version": "0.3.0",
-          "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
-          "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz",
+          "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==",
           "dev": true,
           "requires": {
-            "@babel/helper-compilation-targets": "^7.13.0",
-            "@babel/helper-module-imports": "^7.12.13",
-            "@babel/helper-plugin-utils": "^7.13.0",
-            "@babel/traverse": "^7.13.0",
+            "@babel/helper-compilation-targets": "^7.17.7",
+            "@babel/helper-plugin-utils": "^7.16.7",
             "debug": "^4.1.1",
             "lodash.debounce": "^4.0.8",
             "resolve": "^1.14.2",
           }
         },
         "@babel/plugin-proposal-async-generator-functions": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz",
-          "integrity": "sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw==",
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz",
+          "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==",
           "dev": true,
           "requires": {
-            "@babel/helper-plugin-utils": "^7.16.7",
-            "@babel/helper-remap-async-to-generator": "^7.16.7",
+            "@babel/helper-environment-visitor": "^7.18.9",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "@babel/helper-remap-async-to-generator": "^7.18.9",
             "@babel/plugin-syntax-async-generators": "^7.8.4"
           }
         },
         "@babel/plugin-transform-async-to-generator": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz",
-          "integrity": "sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg==",
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
+          "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
           "dev": true,
           "requires": {
-            "@babel/helper-module-imports": "^7.16.7",
-            "@babel/helper-plugin-utils": "^7.16.7",
-            "@babel/helper-remap-async-to-generator": "^7.16.7"
+            "@babel/helper-module-imports": "^7.18.6",
+            "@babel/helper-plugin-utils": "^7.18.6",
+            "@babel/helper-remap-async-to-generator": "^7.18.6"
           }
         },
         "@babel/preset-env": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.7.tgz",
-          "integrity": "sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ==",
-          "dev": true,
-          "requires": {
-            "@babel/compat-data": "^7.16.4",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-plugin-utils": "^7.16.7",
-            "@babel/helper-validator-option": "^7.16.7",
-            "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
-            "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
-            "@babel/plugin-proposal-async-generator-functions": "^7.16.7",
-            "@babel/plugin-proposal-class-properties": "^7.16.7",
-            "@babel/plugin-proposal-class-static-block": "^7.16.7",
-            "@babel/plugin-proposal-dynamic-import": "^7.16.7",
-            "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
-            "@babel/plugin-proposal-json-strings": "^7.16.7",
-            "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
-            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
-            "@babel/plugin-proposal-numeric-separator": "^7.16.7",
-            "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
-            "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
-            "@babel/plugin-proposal-optional-chaining": "^7.16.7",
-            "@babel/plugin-proposal-private-methods": "^7.16.7",
-            "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
-            "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz",
+          "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==",
+          "dev": true,
+          "requires": {
+            "@babel/compat-data": "^7.18.8",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "@babel/helper-validator-option": "^7.18.6",
+            "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+            "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
+            "@babel/plugin-proposal-async-generator-functions": "^7.18.10",
+            "@babel/plugin-proposal-class-properties": "^7.18.6",
+            "@babel/plugin-proposal-class-static-block": "^7.18.6",
+            "@babel/plugin-proposal-dynamic-import": "^7.18.6",
+            "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+            "@babel/plugin-proposal-json-strings": "^7.18.6",
+            "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
+            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+            "@babel/plugin-proposal-numeric-separator": "^7.18.6",
+            "@babel/plugin-proposal-object-rest-spread": "^7.18.9",
+            "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
+            "@babel/plugin-proposal-optional-chaining": "^7.18.9",
+            "@babel/plugin-proposal-private-methods": "^7.18.6",
+            "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
+            "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
             "@babel/plugin-syntax-async-generators": "^7.8.4",
             "@babel/plugin-syntax-class-properties": "^7.12.13",
             "@babel/plugin-syntax-class-static-block": "^7.14.5",
             "@babel/plugin-syntax-dynamic-import": "^7.8.3",
             "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+            "@babel/plugin-syntax-import-assertions": "^7.18.6",
             "@babel/plugin-syntax-json-strings": "^7.8.3",
             "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
             "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
             "@babel/plugin-syntax-optional-chaining": "^7.8.3",
             "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
             "@babel/plugin-syntax-top-level-await": "^7.14.5",
-            "@babel/plugin-transform-arrow-functions": "^7.16.7",
-            "@babel/plugin-transform-async-to-generator": "^7.16.7",
-            "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
-            "@babel/plugin-transform-block-scoping": "^7.16.7",
-            "@babel/plugin-transform-classes": "^7.16.7",
-            "@babel/plugin-transform-computed-properties": "^7.16.7",
-            "@babel/plugin-transform-destructuring": "^7.16.7",
-            "@babel/plugin-transform-dotall-regex": "^7.16.7",
-            "@babel/plugin-transform-duplicate-keys": "^7.16.7",
-            "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
-            "@babel/plugin-transform-for-of": "^7.16.7",
-            "@babel/plugin-transform-function-name": "^7.16.7",
-            "@babel/plugin-transform-literals": "^7.16.7",
-            "@babel/plugin-transform-member-expression-literals": "^7.16.7",
-            "@babel/plugin-transform-modules-amd": "^7.16.7",
-            "@babel/plugin-transform-modules-commonjs": "^7.16.7",
-            "@babel/plugin-transform-modules-systemjs": "^7.16.7",
-            "@babel/plugin-transform-modules-umd": "^7.16.7",
-            "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.7",
-            "@babel/plugin-transform-new-target": "^7.16.7",
-            "@babel/plugin-transform-object-super": "^7.16.7",
-            "@babel/plugin-transform-parameters": "^7.16.7",
-            "@babel/plugin-transform-property-literals": "^7.16.7",
-            "@babel/plugin-transform-regenerator": "^7.16.7",
-            "@babel/plugin-transform-reserved-words": "^7.16.7",
-            "@babel/plugin-transform-shorthand-properties": "^7.16.7",
-            "@babel/plugin-transform-spread": "^7.16.7",
-            "@babel/plugin-transform-sticky-regex": "^7.16.7",
-            "@babel/plugin-transform-template-literals": "^7.16.7",
-            "@babel/plugin-transform-typeof-symbol": "^7.16.7",
-            "@babel/plugin-transform-unicode-escapes": "^7.16.7",
-            "@babel/plugin-transform-unicode-regex": "^7.16.7",
+            "@babel/plugin-transform-arrow-functions": "^7.18.6",
+            "@babel/plugin-transform-async-to-generator": "^7.18.6",
+            "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+            "@babel/plugin-transform-block-scoping": "^7.18.9",
+            "@babel/plugin-transform-classes": "^7.18.9",
+            "@babel/plugin-transform-computed-properties": "^7.18.9",
+            "@babel/plugin-transform-destructuring": "^7.18.9",
+            "@babel/plugin-transform-dotall-regex": "^7.18.6",
+            "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+            "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+            "@babel/plugin-transform-for-of": "^7.18.8",
+            "@babel/plugin-transform-function-name": "^7.18.9",
+            "@babel/plugin-transform-literals": "^7.18.9",
+            "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+            "@babel/plugin-transform-modules-amd": "^7.18.6",
+            "@babel/plugin-transform-modules-commonjs": "^7.18.6",
+            "@babel/plugin-transform-modules-systemjs": "^7.18.9",
+            "@babel/plugin-transform-modules-umd": "^7.18.6",
+            "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6",
+            "@babel/plugin-transform-new-target": "^7.18.6",
+            "@babel/plugin-transform-object-super": "^7.18.6",
+            "@babel/plugin-transform-parameters": "^7.18.8",
+            "@babel/plugin-transform-property-literals": "^7.18.6",
+            "@babel/plugin-transform-regenerator": "^7.18.6",
+            "@babel/plugin-transform-reserved-words": "^7.18.6",
+            "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+            "@babel/plugin-transform-spread": "^7.18.9",
+            "@babel/plugin-transform-sticky-regex": "^7.18.6",
+            "@babel/plugin-transform-template-literals": "^7.18.9",
+            "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+            "@babel/plugin-transform-unicode-escapes": "^7.18.10",
+            "@babel/plugin-transform-unicode-regex": "^7.18.6",
             "@babel/preset-modules": "^0.1.5",
-            "@babel/types": "^7.16.7",
-            "babel-plugin-polyfill-corejs2": "^0.3.0",
-            "babel-plugin-polyfill-corejs3": "^0.4.0",
-            "babel-plugin-polyfill-regenerator": "^0.3.0",
-            "core-js-compat": "^3.19.1",
+            "@babel/types": "^7.18.10",
+            "babel-plugin-polyfill-corejs2": "^0.3.2",
+            "babel-plugin-polyfill-corejs3": "^0.5.3",
+            "babel-plugin-polyfill-regenerator": "^0.4.0",
+            "core-js-compat": "^3.22.1",
             "semver": "^6.3.0"
           },
           "dependencies": {
             }
           }
         },
+        "@jridgewell/gen-mapping": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+          "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.0",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
+          }
+        },
         "ansi-styles": {
           "version": "4.3.0",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
           }
         },
         "babel-plugin-polyfill-corejs2": {
-          "version": "0.3.0",
-          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
-          "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz",
+          "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==",
           "dev": true,
           "requires": {
-            "@babel/compat-data": "^7.13.11",
-            "@babel/helper-define-polyfill-provider": "^0.3.0",
+            "@babel/compat-data": "^7.17.7",
+            "@babel/helper-define-polyfill-provider": "^0.3.2",
             "semver": "^6.1.1"
           },
           "dependencies": {
           }
         },
         "babel-plugin-polyfill-corejs3": {
-          "version": "0.4.0",
-          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
-          "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
+          "version": "0.5.3",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz",
+          "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==",
           "dev": true,
           "requires": {
-            "@babel/helper-define-polyfill-provider": "^0.3.0",
-            "core-js-compat": "^3.18.0"
+            "@babel/helper-define-polyfill-provider": "^0.3.2",
+            "core-js-compat": "^3.21.0"
           }
         },
         "babel-plugin-polyfill-regenerator": {
-          "version": "0.3.0",
-          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
-          "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz",
+          "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==",
           "dev": true,
           "requires": {
-            "@babel/helper-define-polyfill-provider": "^0.3.0"
+            "@babel/helper-define-polyfill-provider": "^0.3.2"
           }
         },
         "chalk": {
           "dev": true
         },
         "html-entities": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
-          "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==",
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
+          "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==",
           "dev": true
         },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
       }
     },
     "@compodoc/live-server": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/@compodoc/live-server/-/live-server-1.2.2.tgz",
-      "integrity": "sha512-TaLC0IfrXc74B/csSaEQhQ2aZrHOC5lSiGT30UqGJ+vBaS9M+JSji0eYCLXScgbp7fSohQA56p0quNmHnHlXUw==",
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/@compodoc/live-server/-/live-server-1.2.3.tgz",
+      "integrity": "sha512-hDmntVCyjjaxuJzPzBx68orNZ7TW4BtHWMnXlIVn5dqhK7vuFF/11hspO1cMmc+2QTYgqde1TBcb3127S7Zrow==",
       "dev": true,
       "requires": {
         "chokidar": "^3.5.2",
-        "colors": "^1.4.0",
+        "colors": "1.4.0",
         "connect": "^3.7.0",
         "cors": "^2.8.5",
         "event-stream": "4.0.1",
         "faye-websocket": "0.11.x",
-        "http-auth": "4.1.7",
+        "http-auth": "4.1.9",
         "http-auth-connect": "^1.0.5",
         "morgan": "^1.10.0",
         "object-assign": "^4.1.1",
-        "open": "8.2.1",
+        "open": "8.4.0",
         "proxy-middleware": "^0.15.0",
-        "send": "^0.17.2",
+        "send": "^0.18.0",
         "serve-index": "^1.9.1"
       },
       "dependencies": {
-        "colors": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
-          "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
-          "dev": true
-        },
         "cors": {
           "version": "2.8.5",
           "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
             "ms": {
               "version": "2.0.0",
               "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
               "dev": true
             }
           }
         "object-assign": {
           "version": "4.1.1",
           "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+          "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
           "dev": true
         },
+        "open": {
+          "version": "8.4.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+          "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+          "dev": true,
+          "requires": {
+            "define-lazy-prop": "^2.0.0",
+            "is-docker": "^2.1.1",
+            "is-wsl": "^2.2.0"
+          }
+        },
         "send": {
-          "version": "0.17.2",
-          "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
-          "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+          "version": "0.18.0",
+          "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+          "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
           "dev": true,
           "requires": {
             "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "destroy": "~1.0.4",
+            "depd": "2.0.0",
+            "destroy": "1.2.0",
             "encodeurl": "~1.0.2",
             "escape-html": "~1.0.3",
             "etag": "~1.8.1",
             "fresh": "0.5.2",
-            "http-errors": "1.8.1",
+            "http-errors": "2.0.0",
             "mime": "1.6.0",
             "ms": "2.1.3",
-            "on-finished": "~2.3.0",
+            "on-finished": "2.4.1",
             "range-parser": "~1.2.1",
-            "statuses": "~1.5.0"
+            "statuses": "2.0.1"
           }
         }
       }
       "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
       "dev": true
     },
+    "@cypress/browserify-preprocessor": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.2.tgz",
+      "integrity": "sha512-y6mlFR+IR2cqcm3HabSp7AEcX9QfF1EUL4eOaw/7xexdhmdQU8ez6piyRopZQob4BK8oKTsc9PkupsU2rzjqMA==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.16.0",
+        "@babel/plugin-proposal-class-properties": "^7.16.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.16.0",
+        "@babel/plugin-transform-runtime": "^7.16.0",
+        "@babel/preset-env": "^7.16.0",
+        "@babel/preset-react": "^7.16.0",
+        "@babel/runtime": "^7.16.0",
+        "babel-plugin-add-module-exports": "^1.0.4",
+        "babelify": "^10.0.0",
+        "bluebird": "^3.7.2",
+        "browserify": "^16.2.3",
+        "coffeeify": "^3.0.1",
+        "coffeescript": "^1.12.7",
+        "debug": "^4.3.2",
+        "fs-extra": "^9.0.0",
+        "lodash.clonedeep": "^4.5.0",
+        "through2": "^2.0.0",
+        "watchify": "^4.0.0"
+      },
+      "dependencies": {
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
+          "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.10",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.10",
+            "@babel/template": "^7.18.10",
+            "@babel/traverse": "^7.18.10",
+            "@babel/types": "^7.18.10",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.2",
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
+          }
+        },
+        "@babel/helper-define-polyfill-provider": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz",
+          "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-compilation-targets": "^7.17.7",
+            "@babel/helper-plugin-utils": "^7.16.7",
+            "debug": "^4.1.1",
+            "lodash.debounce": "^4.0.8",
+            "resolve": "^1.14.2",
+            "semver": "^6.1.2"
+          }
+        },
+        "@babel/plugin-proposal-async-generator-functions": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz",
+          "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-environment-visitor": "^7.18.9",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "@babel/helper-remap-async-to-generator": "^7.18.9",
+            "@babel/plugin-syntax-async-generators": "^7.8.4"
+          }
+        },
+        "@babel/plugin-transform-async-to-generator": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
+          "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-module-imports": "^7.18.6",
+            "@babel/helper-plugin-utils": "^7.18.6",
+            "@babel/helper-remap-async-to-generator": "^7.18.6"
+          }
+        },
+        "@babel/plugin-transform-runtime": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz",
+          "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-module-imports": "^7.18.6",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "babel-plugin-polyfill-corejs2": "^0.3.2",
+            "babel-plugin-polyfill-corejs3": "^0.5.3",
+            "babel-plugin-polyfill-regenerator": "^0.4.0",
+            "semver": "^6.3.0"
+          }
+        },
+        "@babel/preset-env": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz",
+          "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==",
+          "dev": true,
+          "requires": {
+            "@babel/compat-data": "^7.18.8",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "@babel/helper-validator-option": "^7.18.6",
+            "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+            "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
+            "@babel/plugin-proposal-async-generator-functions": "^7.18.10",
+            "@babel/plugin-proposal-class-properties": "^7.18.6",
+            "@babel/plugin-proposal-class-static-block": "^7.18.6",
+            "@babel/plugin-proposal-dynamic-import": "^7.18.6",
+            "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+            "@babel/plugin-proposal-json-strings": "^7.18.6",
+            "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
+            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+            "@babel/plugin-proposal-numeric-separator": "^7.18.6",
+            "@babel/plugin-proposal-object-rest-spread": "^7.18.9",
+            "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
+            "@babel/plugin-proposal-optional-chaining": "^7.18.9",
+            "@babel/plugin-proposal-private-methods": "^7.18.6",
+            "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
+            "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
+            "@babel/plugin-syntax-async-generators": "^7.8.4",
+            "@babel/plugin-syntax-class-properties": "^7.12.13",
+            "@babel/plugin-syntax-class-static-block": "^7.14.5",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+            "@babel/plugin-syntax-import-assertions": "^7.18.6",
+            "@babel/plugin-syntax-json-strings": "^7.8.3",
+            "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+            "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+            "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+            "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+            "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+            "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+            "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+            "@babel/plugin-syntax-top-level-await": "^7.14.5",
+            "@babel/plugin-transform-arrow-functions": "^7.18.6",
+            "@babel/plugin-transform-async-to-generator": "^7.18.6",
+            "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+            "@babel/plugin-transform-block-scoping": "^7.18.9",
+            "@babel/plugin-transform-classes": "^7.18.9",
+            "@babel/plugin-transform-computed-properties": "^7.18.9",
+            "@babel/plugin-transform-destructuring": "^7.18.9",
+            "@babel/plugin-transform-dotall-regex": "^7.18.6",
+            "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+            "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+            "@babel/plugin-transform-for-of": "^7.18.8",
+            "@babel/plugin-transform-function-name": "^7.18.9",
+            "@babel/plugin-transform-literals": "^7.18.9",
+            "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+            "@babel/plugin-transform-modules-amd": "^7.18.6",
+            "@babel/plugin-transform-modules-commonjs": "^7.18.6",
+            "@babel/plugin-transform-modules-systemjs": "^7.18.9",
+            "@babel/plugin-transform-modules-umd": "^7.18.6",
+            "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6",
+            "@babel/plugin-transform-new-target": "^7.18.6",
+            "@babel/plugin-transform-object-super": "^7.18.6",
+            "@babel/plugin-transform-parameters": "^7.18.8",
+            "@babel/plugin-transform-property-literals": "^7.18.6",
+            "@babel/plugin-transform-regenerator": "^7.18.6",
+            "@babel/plugin-transform-reserved-words": "^7.18.6",
+            "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+            "@babel/plugin-transform-spread": "^7.18.9",
+            "@babel/plugin-transform-sticky-regex": "^7.18.6",
+            "@babel/plugin-transform-template-literals": "^7.18.9",
+            "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+            "@babel/plugin-transform-unicode-escapes": "^7.18.10",
+            "@babel/plugin-transform-unicode-regex": "^7.18.6",
+            "@babel/preset-modules": "^0.1.5",
+            "@babel/types": "^7.18.10",
+            "babel-plugin-polyfill-corejs2": "^0.3.2",
+            "babel-plugin-polyfill-corejs3": "^0.5.3",
+            "babel-plugin-polyfill-regenerator": "^0.4.0",
+            "core-js-compat": "^3.22.1",
+            "semver": "^6.3.0"
+          }
+        },
+        "@jridgewell/gen-mapping": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+          "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.0",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
+          }
+        },
+        "babel-plugin-polyfill-corejs2": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz",
+          "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==",
+          "dev": true,
+          "requires": {
+            "@babel/compat-data": "^7.17.7",
+            "@babel/helper-define-polyfill-provider": "^0.3.2",
+            "semver": "^6.1.1"
+          }
+        },
+        "babel-plugin-polyfill-corejs3": {
+          "version": "0.5.3",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz",
+          "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-define-polyfill-provider": "^0.3.2",
+            "core-js-compat": "^3.21.0"
+          }
+        },
+        "babel-plugin-polyfill-regenerator": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz",
+          "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-define-polyfill-provider": "^0.3.2"
+          }
+        },
+        "fs-extra": {
+          "version": "9.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+          "dev": true,
+          "requires": {
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
     "@cypress/request": {
       "version": "2.88.10",
       "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
           "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
           "dev": true,
           "requires": {
-            "assert-plus": "^1.0.0",
-            "jsprim": "^2.0.2",
-            "sshpk": "^1.14.1"
+            "assert-plus": "^1.0.0",
+            "jsprim": "^2.0.2",
+            "sshpk": "^1.14.1"
+          }
+        },
+        "jsprim": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+          "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+          "dev": true,
+          "requires": {
+            "assert-plus": "1.0.0",
+            "extsprintf": "1.3.0",
+            "json-schema": "0.4.0",
+            "verror": "1.10.0"
+          }
+        },
+        "qs": {
+          "version": "6.5.3",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+          "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+          "dev": true
+        }
+      }
+    },
+    "@cypress/webpack-preprocessor": {
+      "version": "5.11.0",
+      "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.11.0.tgz",
+      "integrity": "sha512-0VMEodVAOkYYhCGKQ2wilI28RtISc3rCre9wlFhishwtnT0B1onJJ8fwhWmcT3Y2/K88WP+cyVO2ZaQPcsEFQg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "3.7.1",
+        "debug": "^4.3.2",
+        "lodash": "^4.17.20"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.7.1",
+          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
+          "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
+          "dev": true
+        }
+      }
+    },
+    "@cypress/xvfb": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
+      "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0",
+        "lodash.once": "^4.1.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "@discoveryjs/json-ext": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
+      "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
+      "dev": true
+    },
+    "@foliojs-fork/fontkit": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz",
+      "integrity": "sha512-U589voc2/ROnvx1CyH9aNzOQWJp127JGU1QAylXGQ7LoEAF6hMmahZLQ4eqAcgHUw+uyW4PjtCItq9qudPkK3A==",
+      "dev": true,
+      "requires": {
+        "@foliojs-fork/restructure": "^2.0.2",
+        "brfs": "^2.0.0",
+        "brotli": "^1.2.0",
+        "browserify-optional": "^1.0.1",
+        "clone": "^1.0.4",
+        "deep-equal": "^1.0.0",
+        "dfa": "^1.2.0",
+        "tiny-inflate": "^1.0.2",
+        "unicode-properties": "^1.2.2",
+        "unicode-trie": "^2.0.0"
+      }
+    },
+    "@foliojs-fork/linebreak": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.1.tgz",
+      "integrity": "sha512-pgY/+53GqGQI+mvDiyprvPWgkTlVBS8cxqee03ejm6gKAQNsR1tCYCIvN9FHy7otZajzMqCgPOgC4cHdt4JPig==",
+      "dev": true,
+      "requires": {
+        "base64-js": "1.3.1",
+        "brfs": "^2.0.2",
+        "unicode-trie": "^2.0.0"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+          "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+          "dev": true
+        }
+      }
+    },
+    "@foliojs-fork/pdfkit": {
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.13.0.tgz",
+      "integrity": "sha512-YXeG1fml9k97YNC9K8e292Pj2JzGt9uOIiBFuQFxHsdQ45BlxW+JU3RQK6JAvXU7kjhjP8rCcYvpk36JLD33sQ==",
+      "dev": true,
+      "requires": {
+        "@foliojs-fork/fontkit": "^1.9.1",
+        "@foliojs-fork/linebreak": "^1.1.1",
+        "crypto-js": "^4.0.0",
+        "png-js": "^1.0.0"
+      }
+    },
+    "@foliojs-fork/restructure": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
+      "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==",
+      "dev": true
+    },
+    "@grafana/e2e": {
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/@grafana/e2e/-/e2e-8.4.5.tgz",
+      "integrity": "sha512-3UTxH0CdXqQkuuW4UvNG60R7yQGgD/27VWqVks5+nEuo+DxWrAgzHbxdvks8C1Hm/EUUhmwj5GkaU/9AN74pWQ==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "7.16.7",
+        "@babel/preset-env": "7.16.7",
+        "@cypress/webpack-preprocessor": "5.11.0",
+        "@grafana/e2e-selectors": "8.4.5",
+        "@grafana/tsconfig": "^1.0.0-rc1",
+        "@mochajs/json-file-reporter": "^1.2.0",
+        "babel-loader": "8.2.3",
+        "blink-diff": "1.0.13",
+        "chrome-remote-interface": "0.31.1",
+        "commander": "8.3.0",
+        "cypress": "9.3.1",
+        "cypress-file-upload": "5.0.8",
+        "devtools-protocol": "0.0.927104",
+        "execa": "5.1.1",
+        "lodash": "4.17.21",
+        "mocha": "9.2.0",
+        "resolve-as-bin": "2.1.0",
+        "rimraf": "3.0.2",
+        "tracelib": "1.0.1",
+        "ts-loader": "6.2.1",
+        "tslib": "2.3.1",
+        "typescript": "4.4.4",
+        "uuid": "8.3.2",
+        "yaml": "^1.8.3"
+      },
+      "dependencies": {
+        "@babel/core": {
+          "version": "7.16.7",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz",
+          "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.16.7",
+            "@babel/generator": "^7.16.7",
+            "@babel/helper-compilation-targets": "^7.16.7",
+            "@babel/helper-module-transforms": "^7.16.7",
+            "@babel/helpers": "^7.16.7",
+            "@babel/parser": "^7.16.7",
+            "@babel/template": "^7.16.7",
+            "@babel/traverse": "^7.16.7",
+            "@babel/types": "^7.16.7",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.2",
+            "json5": "^2.1.2",
+            "semver": "^6.3.0",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/helper-define-polyfill-provider": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz",
+          "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-compilation-targets": "^7.17.7",
+            "@babel/helper-plugin-utils": "^7.16.7",
+            "debug": "^4.1.1",
+            "lodash.debounce": "^4.0.8",
+            "resolve": "^1.14.2",
+            "semver": "^6.1.2"
+          }
+        },
+        "@babel/plugin-proposal-async-generator-functions": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz",
+          "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-environment-visitor": "^7.18.9",
+            "@babel/helper-plugin-utils": "^7.18.9",
+            "@babel/helper-remap-async-to-generator": "^7.18.9",
+            "@babel/plugin-syntax-async-generators": "^7.8.4"
+          }
+        },
+        "@babel/plugin-transform-async-to-generator": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
+          "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-module-imports": "^7.18.6",
+            "@babel/helper-plugin-utils": "^7.18.6",
+            "@babel/helper-remap-async-to-generator": "^7.18.6"
+          }
+        },
+        "@babel/preset-env": {
+          "version": "7.16.7",
+          "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.7.tgz",
+          "integrity": "sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ==",
+          "dev": true,
+          "requires": {
+            "@babel/compat-data": "^7.16.4",
+            "@babel/helper-compilation-targets": "^7.16.7",
+            "@babel/helper-plugin-utils": "^7.16.7",
+            "@babel/helper-validator-option": "^7.16.7",
+            "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
+            "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
+            "@babel/plugin-proposal-async-generator-functions": "^7.16.7",
+            "@babel/plugin-proposal-class-properties": "^7.16.7",
+            "@babel/plugin-proposal-class-static-block": "^7.16.7",
+            "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+            "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
+            "@babel/plugin-proposal-json-strings": "^7.16.7",
+            "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
+            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
+            "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+            "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
+            "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+            "@babel/plugin-proposal-optional-chaining": "^7.16.7",
+            "@babel/plugin-proposal-private-methods": "^7.16.7",
+            "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
+            "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+            "@babel/plugin-syntax-async-generators": "^7.8.4",
+            "@babel/plugin-syntax-class-properties": "^7.12.13",
+            "@babel/plugin-syntax-class-static-block": "^7.14.5",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+            "@babel/plugin-syntax-json-strings": "^7.8.3",
+            "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+            "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+            "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+            "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+            "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+            "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+            "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+            "@babel/plugin-syntax-top-level-await": "^7.14.5",
+            "@babel/plugin-transform-arrow-functions": "^7.16.7",
+            "@babel/plugin-transform-async-to-generator": "^7.16.7",
+            "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+            "@babel/plugin-transform-block-scoping": "^7.16.7",
+            "@babel/plugin-transform-classes": "^7.16.7",
+            "@babel/plugin-transform-computed-properties": "^7.16.7",
+            "@babel/plugin-transform-destructuring": "^7.16.7",
+            "@babel/plugin-transform-dotall-regex": "^7.16.7",
+            "@babel/plugin-transform-duplicate-keys": "^7.16.7",
+            "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+            "@babel/plugin-transform-for-of": "^7.16.7",
+            "@babel/plugin-transform-function-name": "^7.16.7",
+            "@babel/plugin-transform-literals": "^7.16.7",
+            "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+            "@babel/plugin-transform-modules-amd": "^7.16.7",
+            "@babel/plugin-transform-modules-commonjs": "^7.16.7",
+            "@babel/plugin-transform-modules-systemjs": "^7.16.7",
+            "@babel/plugin-transform-modules-umd": "^7.16.7",
+            "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.7",
+            "@babel/plugin-transform-new-target": "^7.16.7",
+            "@babel/plugin-transform-object-super": "^7.16.7",
+            "@babel/plugin-transform-parameters": "^7.16.7",
+            "@babel/plugin-transform-property-literals": "^7.16.7",
+            "@babel/plugin-transform-regenerator": "^7.16.7",
+            "@babel/plugin-transform-reserved-words": "^7.16.7",
+            "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+            "@babel/plugin-transform-spread": "^7.16.7",
+            "@babel/plugin-transform-sticky-regex": "^7.16.7",
+            "@babel/plugin-transform-template-literals": "^7.16.7",
+            "@babel/plugin-transform-typeof-symbol": "^7.16.7",
+            "@babel/plugin-transform-unicode-escapes": "^7.16.7",
+            "@babel/plugin-transform-unicode-regex": "^7.16.7",
+            "@babel/preset-modules": "^0.1.5",
+            "@babel/types": "^7.16.7",
+            "babel-plugin-polyfill-corejs2": "^0.3.0",
+            "babel-plugin-polyfill-corejs3": "^0.4.0",
+            "babel-plugin-polyfill-regenerator": "^0.3.0",
+            "core-js-compat": "^3.19.1",
+            "semver": "^6.3.0"
+          }
+        },
+        "@types/node": {
+          "version": "14.18.25",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.25.tgz",
+          "integrity": "sha512-9pLfceRSrKIsv/MISN6RoFWTIzka36Uk2Uuf5a8cHyDYhEgl5Hm5dXoe621KULeBjt+cFsY18mILsWWtJeG80w==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "babel-loader": {
+          "version": "8.2.3",
+          "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz",
+          "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==",
+          "dev": true,
+          "requires": {
+            "find-cache-dir": "^3.3.1",
+            "loader-utils": "^1.4.0",
+            "make-dir": "^3.1.0",
+            "schema-utils": "^2.6.5"
+          }
+        },
+        "babel-plugin-polyfill-corejs2": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz",
+          "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==",
+          "dev": true,
+          "requires": {
+            "@babel/compat-data": "^7.17.7",
+            "@babel/helper-define-polyfill-provider": "^0.3.2",
+            "semver": "^6.1.1"
+          }
+        },
+        "babel-plugin-polyfill-corejs3": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
+          "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-define-polyfill-provider": "^0.3.0",
+            "core-js-compat": "^3.18.0"
+          }
+        },
+        "babel-plugin-polyfill-regenerator": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
+          "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-define-polyfill-provider": "^0.3.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "7.2.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+              "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+              "dev": true,
+              "requires": {
+                "has-flag": "^4.0.0"
+              }
+            }
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "commander": {
+          "version": "8.3.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+          "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+          "dev": true
+        },
+        "cross-spawn": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        },
+        "cypress": {
+          "version": "9.3.1",
+          "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.3.1.tgz",
+          "integrity": "sha512-BODdPesxX6bkVUnH8BVsV8I/jn57zQtO1FEOUTiuG2us3kslW7g0tcuwiny7CKCmJUZz8S/D587ppC+s58a+5Q==",
+          "dev": true,
+          "requires": {
+            "@cypress/request": "^2.88.10",
+            "@cypress/xvfb": "^1.2.4",
+            "@types/node": "^14.14.31",
+            "@types/sinonjs__fake-timers": "8.1.1",
+            "@types/sizzle": "^2.3.2",
+            "arch": "^2.2.0",
+            "blob-util": "^2.0.2",
+            "bluebird": "^3.7.2",
+            "buffer": "^5.6.0",
+            "cachedir": "^2.3.0",
+            "chalk": "^4.1.0",
+            "check-more-types": "^2.24.0",
+            "cli-cursor": "^3.1.0",
+            "cli-table3": "~0.6.1",
+            "commander": "^5.1.0",
+            "common-tags": "^1.8.0",
+            "dayjs": "^1.10.4",
+            "debug": "^4.3.2",
+            "enquirer": "^2.3.6",
+            "eventemitter2": "^6.4.3",
+            "execa": "4.1.0",
+            "executable": "^4.1.1",
+            "extract-zip": "2.0.1",
+            "figures": "^3.2.0",
+            "fs-extra": "^9.1.0",
+            "getos": "^3.2.1",
+            "is-ci": "^3.0.0",
+            "is-installed-globally": "~0.4.0",
+            "lazy-ass": "^1.6.0",
+            "listr2": "^3.8.3",
+            "lodash": "^4.17.21",
+            "log-symbols": "^4.0.0",
+            "minimist": "^1.2.5",
+            "ospath": "^1.2.2",
+            "pretty-bytes": "^5.6.0",
+            "proxy-from-env": "1.0.0",
+            "request-progress": "^3.0.0",
+            "supports-color": "^8.1.1",
+            "tmp": "~0.2.1",
+            "untildify": "^4.0.0",
+            "url": "^0.11.0",
+            "yauzl": "^2.10.0"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+              "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+              "dev": true
+            },
+            "execa": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+              "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+              "dev": true,
+              "requires": {
+                "cross-spawn": "^7.0.0",
+                "get-stream": "^5.0.0",
+                "human-signals": "^1.1.1",
+                "is-stream": "^2.0.0",
+                "merge-stream": "^2.0.0",
+                "npm-run-path": "^4.0.0",
+                "onetime": "^5.1.0",
+                "signal-exit": "^3.0.2",
+                "strip-final-newline": "^2.0.0"
+              }
+            }
+          }
+        },
+        "execa": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+          "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^7.0.3",
+            "get-stream": "^6.0.0",
+            "human-signals": "^2.1.0",
+            "is-stream": "^2.0.0",
+            "merge-stream": "^2.0.0",
+            "npm-run-path": "^4.0.1",
+            "onetime": "^5.1.2",
+            "signal-exit": "^3.0.3",
+            "strip-final-newline": "^2.0.0"
+          },
+          "dependencies": {
+            "get-stream": {
+              "version": "6.0.1",
+              "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+              "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+              "dev": true
+            },
+            "human-signals": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+              "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+              "dev": true
+            }
+          }
+        },
+        "fs-extra": {
+          "version": "9.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+          "dev": true,
+          "requires": {
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "is-stream": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+          "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          },
+          "dependencies": {
+            "json5": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+              "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+              "dev": true,
+              "requires": {
+                "minimist": "^1.2.0"
+              }
+            }
+          }
+        },
+        "npm-run-path": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+          "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.0.0"
+          }
+        },
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+          "dev": true
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^3.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "8.1.1",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+          "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
           }
         },
-        "jsprim": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
-          "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+        "tmp": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+          "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
           "dev": true,
           "requires": {
-            "assert-plus": "1.0.0",
-            "extsprintf": "1.3.0",
-            "json-schema": "0.4.0",
-            "verror": "1.10.0"
+            "rimraf": "^3.0.0"
           }
         },
-        "qs": {
-          "version": "6.5.2",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+        "typescript": {
+          "version": "4.4.4",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
+          "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
           "dev": true
-        }
-      }
-    },
-    "@cypress/xvfb": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
-      "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
-      "dev": true,
-      "requires": {
-        "debug": "^3.1.0",
-        "lodash.once": "^4.1.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
           "dev": true,
           "requires": {
-            "ms": "^2.1.1"
+            "isexe": "^2.0.0"
           }
         }
       }
     },
-    "@discoveryjs/json-ext": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
-      "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
-      "dev": true
-    },
-    "@foliojs-fork/fontkit": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz",
-      "integrity": "sha512-U589voc2/ROnvx1CyH9aNzOQWJp127JGU1QAylXGQ7LoEAF6hMmahZLQ4eqAcgHUw+uyW4PjtCItq9qudPkK3A==",
-      "dev": true,
-      "requires": {
-        "@foliojs-fork/restructure": "^2.0.2",
-        "brfs": "^2.0.0",
-        "brotli": "^1.2.0",
-        "browserify-optional": "^1.0.1",
-        "clone": "^1.0.4",
-        "deep-equal": "^1.0.0",
-        "dfa": "^1.2.0",
-        "tiny-inflate": "^1.0.2",
-        "unicode-properties": "^1.2.2",
-        "unicode-trie": "^2.0.0"
-      }
-    },
-    "@foliojs-fork/linebreak": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.1.tgz",
-      "integrity": "sha512-pgY/+53GqGQI+mvDiyprvPWgkTlVBS8cxqee03ejm6gKAQNsR1tCYCIvN9FHy7otZajzMqCgPOgC4cHdt4JPig==",
+    "@grafana/e2e-selectors": {
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-8.4.5.tgz",
+      "integrity": "sha512-sfdafy76s5nCtrkyCMv8v2QMJTsypWFad5BHF4zL4nHbYEhhpZPbky13RufiqBImFeIWLM9Zmz7LDFFJVBhFtA==",
       "dev": true,
       "requires": {
-        "base64-js": "1.3.1",
-        "brfs": "^2.0.2",
-        "unicode-trie": "^2.0.0"
+        "@grafana/tsconfig": "^1.0.0-rc1",
+        "tslib": "2.3.1",
+        "typescript": "4.4.4"
       },
       "dependencies": {
-        "base64-js": {
-          "version": "1.3.1",
-          "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
-          "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+        "typescript": {
+          "version": "4.4.4",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
+          "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
           "dev": true
         }
       }
     },
-    "@foliojs-fork/pdfkit": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.13.0.tgz",
-      "integrity": "sha512-YXeG1fml9k97YNC9K8e292Pj2JzGt9uOIiBFuQFxHsdQ45BlxW+JU3RQK6JAvXU7kjhjP8rCcYvpk36JLD33sQ==",
-      "dev": true,
-      "requires": {
-        "@foliojs-fork/fontkit": "^1.9.1",
-        "@foliojs-fork/linebreak": "^1.1.1",
-        "crypto-js": "^4.0.0",
-        "png-js": "^1.0.0"
-      }
-    },
-    "@foliojs-fork/restructure": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
-      "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==",
+    "@grafana/tsconfig": {
+      "version": "1.0.0-rc1",
+      "resolved": "https://registry.npmjs.org/@grafana/tsconfig/-/tsconfig-1.0.0-rc1.tgz",
+      "integrity": "sha512-nucKPGyzlSKYSiJk5RA8GzMdVWhdYNdF+Hh65AXxjD9PlY69JKr5wANj8bVdQboag6dgg0BFKqgKPyY+YtV4Iw==",
       "dev": true
     },
     "@hapi/hoek": {
-      "version": "9.2.1",
-      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
-      "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==",
+      "version": "9.3.0",
+      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+      "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
       "dev": true
     },
     "@hapi/topo": {
         }
       }
     },
+    "@jridgewell/gen-mapping": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "requires": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
     "@jridgewell/resolve-uri": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz",
-      "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==",
-      "dev": true
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+    },
+    "@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
+      "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
+      "requires": {
+        "@jridgewell/resolve-uri": "^3.0.3",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
     },
     "@jsdevtools/coverage-istanbul-loader": {
       "version": "3.0.5",
       }
     },
     "@juggle/resize-observer": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz",
-      "integrity": "sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw=="
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+      "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
+    },
+    "@mochajs/json-file-reporter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@mochajs/json-file-reporter/-/json-file-reporter-1.3.0.tgz",
+      "integrity": "sha512-evIxpeP8EOixo/T2xh5xYEIzwbEHk8YNJfRUm1KeTs8F3bMjgNn2580Ogze9yisXNlTxu88JiJJYzXjjg5NdLA==",
+      "dev": true
     },
     "@ng-bootstrap/ng-bootstrap": {
       "version": "10.0.0",
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
         "read-package-json-fast": "^2.0.1"
       }
     },
+    "@protobufjs/aspromise": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+      "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
+      "dev": true
+    },
+    "@protobufjs/base64": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
+      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+      "dev": true
+    },
+    "@protobufjs/codegen": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+      "dev": true
+    },
+    "@protobufjs/eventemitter": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+      "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
+      "dev": true
+    },
+    "@protobufjs/fetch": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+      "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+      "dev": true,
+      "requires": {
+        "@protobufjs/aspromise": "^1.1.1",
+        "@protobufjs/inquire": "^1.1.0"
+      }
+    },
+    "@protobufjs/float": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
+      "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
+      "dev": true
+    },
+    "@protobufjs/inquire": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+      "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
+      "dev": true
+    },
+    "@protobufjs/path": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
+      "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
+      "dev": true
+    },
+    "@protobufjs/pool": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
+      "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
+      "dev": true
+    },
+    "@protobufjs/utf8": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+      "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
+      "dev": true
+    },
     "@schematics/angular": {
       "version": "12.2.13",
       "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.13.tgz",
       }
     },
     "@sideway/address": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz",
-      "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==",
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
+      "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
       "dev": true,
       "requires": {
         "@hapi/hoek": "^9.0.0"
       }
     },
     "@stylelint/postcss-css-in-js": {
-      "version": "0.37.2",
-      "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz",
-      "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==",
+      "version": "0.37.3",
+      "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz",
+      "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==",
       "dev": true,
       "requires": {
-        "@babel/core": ">=7.9.0"
+        "@babel/core": "^7.17.9"
       },
       "dependencies": {
-        "@babel/core": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz",
-          "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==",
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.16.7",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.16.7",
-            "@babel/parser": "^7.16.7",
-            "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.16.7",
-            "@babel/types": "^7.16.7",
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
+          "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.10",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.10",
+            "@babel/template": "^7.18.10",
+            "@babel/traverse": "^7.18.10",
+            "@babel/types": "^7.18.10",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
-            "semver": "^6.3.0",
-            "source-map": "^0.5.0"
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
+          }
+        },
+        "@jridgewell/gen-mapping": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+          "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.0",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
           }
         },
         "semver": {
       }
     },
     "@types/babel__core": {
-      "version": "7.1.18",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz",
-      "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==",
+      "version": "7.1.19",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz",
+      "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==",
       "dev": true,
       "requires": {
         "@babel/parser": "^7.1.0",
       }
     },
     "@types/babel__traverse": {
-      "version": "7.14.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
-      "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
+      "version": "7.18.0",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz",
+      "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==",
       "dev": true,
       "requires": {
         "@babel/types": "^7.3.0"
       "dev": true
     },
     "@types/chart.js": {
-      "version": "2.9.35",
-      "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.35.tgz",
-      "integrity": "sha512-MWx/zZlh4wHBbM4Tm4YsZyYGb1/LkTiFLFwX/FXb0EJCvXX2xWTRHwlJ2RAAEXWxLrOdaAWP8vFtJXny+4CpEw==",
+      "version": "2.9.37",
+      "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.37.tgz",
+      "integrity": "sha512-9bosRfHhkXxKYfrw94EmyDQcdjMaQPkU1fH2tDxu8DWXxf1mjzWQAV4laJF51ZbC2ycYwNDvIm1rGez8Bug0vg==",
       "requires": {
         "moment": "^2.10.2"
       }
     },
+    "@types/cypress-cucumber-preprocessor": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/@types/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.0.1.tgz",
+      "integrity": "sha512-sK2/uU5CtmJ51zo0JF2Lc4iSw9Fy3xn9ewfewuooV5Qmeb5O+brAHuoXKMV7UWwRbBmd+txhAXAJoi4S5QLDRQ==",
+      "dev": true
+    },
     "@types/eslint": {
-      "version": "8.2.1",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz",
-      "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==",
+      "version": "8.4.6",
+      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
+      "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==",
       "dev": true,
       "requires": {
         "@types/estree": "*",
       }
     },
     "@types/eslint-scope": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz",
-      "integrity": "sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==",
+      "version": "3.7.4",
+      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+      "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
       "dev": true,
       "requires": {
         "@types/eslint": "*",
       }
     },
     "@types/json-schema": {
-      "version": "7.0.9",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
-      "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
+      "version": "7.0.11",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
       "dev": true
     },
     "@types/lodash": {
       "integrity": "sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA==",
       "dev": true
     },
+    "@types/long": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
+      "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
+      "dev": true
+    },
     "@types/mdast": {
       "version": "3.0.10",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
       "dev": true
     },
     "@types/prettier": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz",
-      "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
+      "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==",
       "dev": true
     },
     "@types/prop-types": {
-      "version": "15.7.4",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
-      "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ=="
+      "version": "15.7.5",
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
     },
     "@types/react": {
-      "version": "17.0.38",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.38.tgz",
-      "integrity": "sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==",
+      "version": "18.0.17",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz",
+      "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==",
       "requires": {
         "@types/prop-types": "*",
         "@types/scheduler": "*",
       }
     },
     "@types/react-redux": {
-      "version": "7.1.21",
-      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.21.tgz",
-      "integrity": "sha512-bLdglUiBSQNzWVVbmNPKGYYjrzp3/YDPwfOH3nLEz99I4awLlaRAPWjo6bZ2POpxztFWtDDXIPxBLVykXqBt+w==",
+      "version": "7.1.24",
+      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz",
+      "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==",
       "requires": {
         "@types/hoist-non-react-statics": "^3.3.0",
         "@types/react": "*",
       "dev": true
     },
     "@types/sinonjs__fake-timers": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz",
-      "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==",
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
+      "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==",
       "dev": true
     },
     "@types/sizzle": {
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
       "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
     },
+    "@types/uuid": {
+      "version": "3.4.10",
+      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.10.tgz",
+      "integrity": "sha512-BgeaZuElf7DEYZhWYDTc/XcLZXdVgFkVSTa13BqKvbnmUrxr3TJFKofUxCtDO9UQOdhnV+HPOESdHiHKZOJV1A==",
+      "dev": true
+    },
     "@types/webpack-sources": {
       "version": "0.1.9",
       "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz",
       }
     },
     "@types/yargs-parser": {
-      "version": "20.2.1",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
-      "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
+      "version": "21.0.0",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
       "dev": true
     },
     "@types/yauzl": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
-      "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
       "dev": true,
       "optional": true,
       "requires": {
         "@types/node": "*"
       }
     },
+    "@ungap/promise-all-settled": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+      "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+      "dev": true
+    },
     "@webassemblyjs/ast": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
       "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
       "dev": true
     },
+    "JSONStream": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      }
+    },
     "abab": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
-      "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
       "dev": true
     },
     "abbrev": {
       }
     },
     "accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
       "dev": true,
       "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
       }
     },
     "acorn": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
-      "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
+      "version": "8.8.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
+      "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
       "dev": true
     },
     "acorn-globals": {
       }
     },
     "agentkeepalive": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz",
-      "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
+      "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",
         "depd": "^1.1.2",
         "humanize-ms": "^1.2.1"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+          "dev": true
+        }
       }
     },
     "aggregate-error": {
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
       "dev": true
     },
-    "alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
-      "dev": true
-    },
     "amdefine": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
       "dev": true,
       "optional": true
     },
     "ansi-gray": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
-      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+      "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
       "dev": true,
       "requires": {
         "ansi-wrap": "0.1.0"
     "ansi-html": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
-      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==",
       "dev": true
     },
     "ansi-regex": {
     "ansi-wrap": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
-      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+      "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
+      "dev": true
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+      "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
       "dev": true
     },
     "anymatch": {
       "dev": true
     },
     "app-root-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz",
-      "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz",
+      "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==",
       "dev": true
     },
     "aproba": {
     "aria-query": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
-      "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
+      "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==",
       "dev": true,
       "requires": {
         "ast-types-flow": "0.0.7",
     "arr-diff": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
       "dev": true
     },
     "arr-flatten": {
     "arr-union": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
       "dev": true
     },
     "array-differ": {
     "array-each": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
-      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+      "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
       "dev": true
     },
     "array-equal": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
-      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+      "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==",
       "dev": true
     },
     "array-flatten": {
     "array-from": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
-      "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
+      "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==",
       "dev": true
     },
     "array-slice": {
     "array-uniq": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
       "dev": true
     },
     "array-unique": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
       "dev": true
     },
     "arrify": {
       "dev": true
     },
     "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
+      "integrity": "sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==",
       "dev": true
     },
     "asn1": {
         "safer-buffer": "~2.1.0"
       }
     },
-    "assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-      "dev": true
-    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+          "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+          "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+      "dev": true
+    },
+    "assertion-error": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+      "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+      "dev": true
+    },
+    "assertion-error-formatter": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz",
+      "integrity": "sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q==",
+      "dev": true,
+      "requires": {
+        "diff": "^3.0.0",
+        "pad-right": "^0.2.2",
+        "repeat-string": "^1.6.1"
+      },
+      "dependencies": {
+        "diff": {
+          "version": "3.5.0",
+          "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+          "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+          "dev": true
+        }
+      }
+    },
     "assign-symbols": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
       "dev": true
     },
     "ast-transform": {
       "version": "0.0.0",
       "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz",
-      "integrity": "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI=",
+      "integrity": "sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==",
       "dev": true,
       "requires": {
         "escodegen": "~1.2.0",
         "escodegen": {
           "version": "1.2.0",
           "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz",
-          "integrity": "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E=",
+          "integrity": "sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==",
           "dev": true,
           "requires": {
             "esprima": "~1.0.4",
         "esprima": {
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
-          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
+          "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
           "dev": true
         },
         "estraverse": {
           "version": "1.5.1",
           "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz",
-          "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=",
+          "integrity": "sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==",
           "dev": true
         },
         "esutils": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz",
-          "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=",
+          "integrity": "sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==",
           "dev": true
         },
         "source-map": {
           "version": "0.1.43",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+          "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==",
           "dev": true,
           "optional": true,
           "requires": {
     "ast-types": {
       "version": "0.7.8",
       "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz",
-      "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=",
+      "integrity": "sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==",
       "dev": true
     },
     "ast-types-flow": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
+      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
       "dev": true
     },
     "astral-regex": {
       "dev": true
     },
     "async": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+      "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
       "dev": true,
       "requires": {
         "lodash": "^4.17.14"
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
       "dev": true
     },
     "at-least-node": {
       "dev": true
     },
     "autolinker": {
-      "version": "3.14.3",
-      "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz",
-      "integrity": "sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg==",
+      "version": "3.16.0",
+      "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.0.tgz",
+      "integrity": "sha512-KY8yhlwvuQpA7exkkvHsmk0chdrtS0ZRO7XoPfs7w8N3kpiGPjYNDrQ0lIMx2GrKFZzGK/QSEd2Sx5SYtSNBKg==",
       "requires": {
-        "tslib": "^1.9.3"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
+        "tslib": "^2.3.0"
       }
     },
     "autoprefixer": {
         }
       }
     },
+    "available-typed-arrays": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+      "dev": true
+    },
     "aws-sign2": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
       "dev": true
     },
     "aws4": {
         }
       }
     },
+    "babel-plugin-add-module-exports": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz",
+      "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==",
+      "dev": true
+    },
     "babel-plugin-dynamic-import-node": {
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
         "test-exclude": "^6.0.0"
       },
       "dependencies": {
-        "@babel/core": {
-          "version": "7.16.7",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz",
-          "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==",
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.16.7",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.16.7",
-            "@babel/parser": "^7.16.7",
-            "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.16.7",
-            "@babel/types": "^7.16.7",
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.10",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
+          "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.10",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.10",
+            "@babel/template": "^7.18.10",
+            "@babel/traverse": "^7.18.10",
+            "@babel/types": "^7.18.10",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
-            "semver": "^6.3.0",
-            "source-map": "^0.5.0"
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
+          }
+        },
+        "@jridgewell/gen-mapping": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+          "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.0",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
           }
         },
         "istanbul-lib-instrument": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz",
-          "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
+          "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==",
           "dev": true,
           "requires": {
             "@babel/core": "^7.12.3",
         "babel-preset-current-node-syntax": "^1.0.0"
       }
     },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.6.12",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+          "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+          "dev": true
+        },
+        "regenerator-runtime": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+          "dev": true
+        }
+      }
+    },
+    "babelify": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz",
+      "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==",
+      "dev": true
+    },
     "bail": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
     "batch": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
       "dev": true
     },
     "bcrypt-pbkdf": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
       "dev": true,
       "requires": {
         "tweetnacl": "^0.14.3"
     "bcryptjs": {
       "version": "2.4.3",
       "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-      "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=",
+      "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
+      "dev": true
+    },
+    "becke-ch--regex--s0-0-v1--base--pl--lib": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz",
+      "integrity": "sha512-FnWonOyaw7Vivg5nIkrUll9HSS5TjFbyuURAiDssuL6VxrBe3ERzudRxOcWRhZYlP89UArMDikz7SapRPQpmZQ==",
       "dev": true
     },
     "big.js": {
         "readable-stream": "^3.4.0"
       }
     },
+    "blink-diff": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/blink-diff/-/blink-diff-1.0.13.tgz",
+      "integrity": "sha512-2hIEnGq8wruXfje9GvDV41VXo+4YdjrjL5ZMlVJT3Wi5k1jjz20fCTlVejSXoERirhEVsFYz9NmgdUYgQ41Giw==",
+      "dev": true,
+      "requires": {
+        "pngjs-image": "~0.11.5",
+        "preceptor-core": "~0.10.0",
+        "promise": "6.0.0"
+      }
+    },
     "blob-util": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
       "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
       "dev": true
     },
+    "bn.js": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+      "dev": true
+    },
     "body-parser": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz",
-      "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==",
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+      "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
       "dev": true,
       "requires": {
-        "bytes": "3.1.1",
+        "bytes": "3.1.2",
         "content-type": "~1.0.4",
         "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "1.8.1",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
         "iconv-lite": "0.4.24",
-        "on-finished": "~2.3.0",
-        "qs": "6.9.6",
-        "raw-body": "2.4.2",
-        "type-is": "~1.6.18"
+        "on-finished": "2.4.1",
+        "qs": "6.10.3",
+        "raw-body": "2.5.1",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
       },
       "dependencies": {
         "bytes": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
-          "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==",
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
           "dev": true
         },
         "debug": {
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "qs": {
-          "version": "6.9.6",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
-          "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==",
-          "dev": true
+          "version": "6.10.3",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+          "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+          "dev": true,
+          "requires": {
+            "side-channel": "^1.0.4"
+          }
         }
       }
     },
     "bonjour": {
       "version": "3.5.0",
       "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
       "dev": true,
       "requires": {
         "array-flatten": "^2.1.0",
     "boolbase": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
       "dev": true
     },
     "bootstrap": {
         "through2": "^2.0.0"
       }
     },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+      "dev": true
+    },
     "brotli": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz",
-      "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz",
+      "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
       "dev": true,
       "requires": {
         "base64-js": "^1.1.2"
       }
     },
+    "browser-pack": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
+      "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.3",
+        "combine-source-map": "~0.8.0",
+        "defined": "^1.0.0",
+        "safe-buffer": "^5.1.1",
+        "through2": "^2.0.0",
+        "umd": "^3.0.0"
+      }
+    },
     "browser-process-hrtime": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
         "resolve": {
           "version": "1.1.7",
           "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
-          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+          "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==",
+          "dev": true
+        }
+      }
+    },
+    "browser-stdout": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+      "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+      "dev": true
+    },
+    "browserify": {
+      "version": "16.5.2",
+      "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz",
+      "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.3",
+        "assert": "^1.4.0",
+        "browser-pack": "^6.0.1",
+        "browser-resolve": "^2.0.0",
+        "browserify-zlib": "~0.2.0",
+        "buffer": "~5.2.1",
+        "cached-path-relative": "^1.0.0",
+        "concat-stream": "^1.6.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "~1.0.0",
+        "crypto-browserify": "^3.0.0",
+        "defined": "^1.0.0",
+        "deps-sort": "^2.0.0",
+        "domain-browser": "^1.2.0",
+        "duplexer2": "~0.1.2",
+        "events": "^2.0.0",
+        "glob": "^7.1.0",
+        "has": "^1.0.0",
+        "htmlescape": "^1.1.0",
+        "https-browserify": "^1.0.0",
+        "inherits": "~2.0.1",
+        "insert-module-globals": "^7.0.0",
+        "labeled-stream-splicer": "^2.0.0",
+        "mkdirp-classic": "^0.5.2",
+        "module-deps": "^6.2.3",
+        "os-browserify": "~0.3.0",
+        "parents": "^1.0.1",
+        "path-browserify": "~0.0.0",
+        "process": "~0.11.0",
+        "punycode": "^1.3.2",
+        "querystring-es3": "~0.2.0",
+        "read-only-stream": "^2.0.0",
+        "readable-stream": "^2.0.2",
+        "resolve": "^1.1.4",
+        "shasum": "^1.0.0",
+        "shell-quote": "^1.6.1",
+        "stream-browserify": "^2.0.0",
+        "stream-http": "^3.0.0",
+        "string_decoder": "^1.1.1",
+        "subarg": "^1.0.0",
+        "syntax-error": "^1.1.1",
+        "through2": "^2.0.0",
+        "timers-browserify": "^1.0.1",
+        "tty-browserify": "0.0.1",
+        "url": "~0.11.0",
+        "util": "~0.10.1",
+        "vm-browserify": "^1.0.0",
+        "xtend": "^4.0.0"
+      },
+      "dependencies": {
+        "browser-resolve": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
+          "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+          "dev": true,
+          "requires": {
+            "resolve": "^1.17.0"
+          }
+        },
+        "buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
+          "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+          "dev": true,
+          "requires": {
+            "base64-js": "^1.0.2",
+            "ieee754": "^1.1.4"
+          }
+        },
+        "events": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz",
+          "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==",
+          "dev": true
+        },
+        "path-browserify": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+          "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
           "dev": true
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          },
+          "dependencies": {
+            "string_decoder": {
+              "version": "1.1.1",
+              "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+              "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+              "dev": true,
+              "requires": {
+                "safe-buffer": "~5.1.0"
+              }
+            }
+          }
         }
       }
     },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
     "browserify-optional": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz",
-      "integrity": "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk=",
+      "integrity": "sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==",
       "dev": true,
       "requires": {
         "ast-transform": "0.0.0",
         "browser-resolve": "^1.8.1"
       }
     },
+    "browserify-rsa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
+      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
     "browserslist": {
-      "version": "4.19.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
-      "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
+      "version": "4.21.3",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
+      "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "^1.0.30001286",
-        "electron-to-chromium": "^1.4.17",
-        "escalade": "^3.1.1",
-        "node-releases": "^2.0.1",
-        "picocolors": "^1.0.0"
+        "caniuse-lite": "^1.0.30001370",
+        "electron-to-chromium": "^1.4.202",
+        "node-releases": "^2.0.6",
+        "update-browserslist-db": "^1.0.5"
       }
     },
     "bs-logger": {
         "node-int64": "^0.4.0"
       }
     },
-    "btoa": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
-      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
-    },
     "buffer": {
       "version": "5.7.1",
       "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
     "buffer-crc32": {
       "version": "0.2.13",
       "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
       "dev": true
     },
     "buffer-equal": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
-      "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=",
+      "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
       "dev": true
     },
     "buffer-from": {
       "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
       "dev": true
     },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+      "dev": true
+    },
     "builtin-modules": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+      "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
       "dev": true
     },
     "builtins": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
-      "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
+      "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
       "dev": true
     },
     "bulk-require": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz",
-      "integrity": "sha1-yz0DnmmBOaRE/FdLJh1rOyz0TIk=",
+      "integrity": "sha512-BLU9AMnm1FMr68fR0sYvOkMew4x2ZJ8YztshITlGArl6aLtfAazOWiFj/bwJJixRO8C0wXx9PnRNRWeoR03e8Q==",
       "dev": true,
       "requires": {
         "glob": "^7.1.1"
     "bytes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
       "dev": true
     },
     "cacache": {
         "unset-value": "^1.0.0"
       }
     },
+    "cached-path-relative": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz",
+      "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==",
+      "dev": true
+    },
     "cachedir": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz",
     "callsite": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+      "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==",
       "dev": true
     },
     "callsites": {
     "can-use-dom": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz",
-      "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo="
+      "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ=="
     },
     "caniuse-api": {
       "version": "3.0.0",
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30001296",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz",
-      "integrity": "sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q==",
+      "version": "1.0.30001381",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001381.tgz",
+      "integrity": "sha512-fEnkDOKpvp6qc+olg7+NzE1SqyfiyKf4uci7fAU38M3zxs0YOyKOxW/nMZ2l9sJbt7KZHcDIxUnbI0Iime7V4w==",
       "dev": true
     },
     "canonical-path": {
     "caseless": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
       "dev": true
     },
+    "chai": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+      "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
+      "dev": true,
+      "requires": {
+        "assertion-error": "^1.1.0",
+        "check-error": "^1.0.2",
+        "deep-eql": "^3.0.1",
+        "get-func-name": "^2.0.0",
+        "loupe": "^2.3.1",
+        "pathval": "^1.1.1",
+        "type-detect": "^4.0.5"
+      }
+    },
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
     "charenc": {
       "version": "0.0.2",
       "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
-      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+      "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
       "dev": true
     },
     "chart.js": {
         "color-name": "^1.0.0"
       }
     },
+    "check-error": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+      "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+      "dev": true
+    },
     "check-more-types": {
       "version": "2.24.0",
       "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
-      "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=",
+      "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==",
       "dev": true
     },
     "cheerio": {
-      "version": "1.0.0-rc.10",
-      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
-      "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+      "version": "1.0.0-rc.12",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+      "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
       "dev": true,
       "requires": {
-        "cheerio-select": "^1.5.0",
-        "dom-serializer": "^1.3.2",
-        "domhandler": "^4.2.0",
-        "htmlparser2": "^6.1.0",
-        "parse5": "^6.0.1",
-        "parse5-htmlparser2-tree-adapter": "^6.0.1",
-        "tslib": "^2.2.0"
+        "cheerio-select": "^2.1.0",
+        "dom-serializer": "^2.0.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1",
+        "htmlparser2": "^8.0.1",
+        "parse5": "^7.0.0",
+        "parse5-htmlparser2-tree-adapter": "^7.0.0"
+      },
+      "dependencies": {
+        "dom-serializer": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+          "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.2",
+            "entities": "^4.2.0"
+          }
+        },
+        "domhandler": {
+          "version": "5.0.3",
+          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+          "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0"
+          }
+        },
+        "domutils": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+          "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "^2.0.0",
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.1"
+          }
+        },
+        "entities": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz",
+          "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==",
+          "dev": true
+        },
+        "parse5": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz",
+          "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==",
+          "dev": true,
+          "requires": {
+            "entities": "^4.3.0"
+          }
+        },
+        "parse5-htmlparser2-tree-adapter": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+          "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+          "dev": true,
+          "requires": {
+            "domhandler": "^5.0.2",
+            "parse5": "^7.0.0"
+          }
+        }
       }
     },
     "cheerio-select": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
-      "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
       "dev": true,
       "requires": {
-        "css-select": "^4.1.3",
-        "css-what": "^5.0.1",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0",
-        "domutils": "^2.7.0"
+        "boolbase": "^1.0.0",
+        "css-select": "^5.1.0",
+        "css-what": "^6.1.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1"
+      },
+      "dependencies": {
+        "css-select": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+          "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+          "dev": true,
+          "requires": {
+            "boolbase": "^1.0.0",
+            "css-what": "^6.1.0",
+            "domhandler": "^5.0.2",
+            "domutils": "^3.0.1",
+            "nth-check": "^2.0.1"
+          }
+        },
+        "dom-serializer": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+          "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.2",
+            "entities": "^4.2.0"
+          }
+        },
+        "domhandler": {
+          "version": "5.0.3",
+          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+          "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0"
+          }
+        },
+        "domutils": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+          "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "^2.0.0",
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.1"
+          }
+        },
+        "entities": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz",
+          "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==",
+          "dev": true
+        }
       }
     },
     "chokidar": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
-      "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
       "dev": true,
       "requires": {
         "anymatch": "~3.1.2",
       "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
       "dev": true
     },
+    "chrome-remote-interface": {
+      "version": "0.31.1",
+      "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.31.1.tgz",
+      "integrity": "sha512-cvNTnXfx4kYCaeh2sEKrdlqZsYRleACPL47O8LrrjihVfBQbfPmf03vVqSSm7SIeqyo2P77ZXovrBAs4D/nopQ==",
+      "dev": true,
+      "requires": {
+        "commander": "2.11.x",
+        "ws": "^7.2.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.11.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+          "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+          "dev": true
+        },
+        "ws": {
+          "version": "7.5.9",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+          "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+          "dev": true
+        }
+      }
+    },
     "chrome-trace-event": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
       "dev": true
     },
     "ci-info": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz",
-      "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz",
+      "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==",
       "dev": true
     },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
     "circular-dependency-plugin": {
       "version": "5.2.2",
       "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
     "cjson": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.5.0.tgz",
-      "integrity": "sha1-oPSGAeAWFk37LG2JHjgMlsramDk=",
+      "integrity": "sha512-D3CKJU9YnZNyerUQ1IzNUvMnToP3MGC2XbIAPi/7yqunJJW3rBwCVapousoFtaR9IbejeEM0KIshxC1n4HQcXw==",
       "dev": true,
       "requires": {
         "json-parse-helpfulerror": "^1.0.3"
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
       }
     },
     "cli-spinners": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
-      "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
+      "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
       "dev": true
     },
+    "cli-table": {
+      "version": "0.3.11",
+      "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz",
+      "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==",
+      "dev": true,
+      "requires": {
+        "colors": "1.0.3"
+      },
+      "dependencies": {
+        "colors": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+          "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
+          "dev": true
+        }
+      }
+    },
     "cli-table3": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz",
-      "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==",
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz",
+      "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==",
       "dev": true,
       "requires": {
-        "colors": "^1.1.2",
-        "object-assign": "^4.1.0",
+        "@colors/colors": "1.5.0",
         "string-width": "^4.2.0"
       }
     },
     "clone": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
       "dev": true
     },
     "clone-deep": {
     "co": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
       "dev": true
     },
     "code-block-writer": {
     "code-point-at": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
       "dev": true
     },
     "codelyzer": {
         }
       }
     },
+    "coffeeify": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/coffeeify/-/coffeeify-3.0.1.tgz",
+      "integrity": "sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g==",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "^1.3.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "coffeescript": {
+      "version": "1.12.7",
+      "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz",
+      "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==",
+      "dev": true
+    },
     "collect-v8-coverage": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
       "dev": true,
       "requires": {
         "map-visit": "^1.0.0",
     "color-name": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
     },
     "color-support": {
       "version": "1.1.3",
       "dev": true
     },
     "colord": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
-      "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==",
+      "version": "2.9.3",
+      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
       "dev": true
     },
     "colorette": {
       "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
       "dev": true
     },
+    "combine-source-map": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
+      "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "~1.1.0",
+        "inline-source-map": "~0.6.0",
+        "lodash.memoize": "~3.0.3",
+        "source-map": "~0.5.3"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
+          "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==",
+          "dev": true
+        },
+        "lodash.memoize": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
+          "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==",
+          "dev": true
+        }
+      }
+    },
     "combined-stream": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
     "commondir": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
       "dev": true
     },
     "component-emitter": {
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
     },
     "concat-stream": {
       "version": "1.6.2",
             "ms": "2.0.0"
           }
         },
+        "finalhandler": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+          "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "on-finished": "~2.3.0",
+            "parseurl": "~1.3.3",
+            "statuses": "~1.5.0",
+            "unpipe": "~1.0.0"
+          }
+        },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+          "dev": true
+        },
+        "on-finished": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+          "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+          "dev": true,
+          "requires": {
+            "ee-first": "1.1.1"
+          }
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
           "dev": true
         }
       }
       "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
       "dev": true
     },
+    "console-browserify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+      "dev": true
+    },
     "console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+      "dev": true
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
       "dev": true
     },
     "content-disposition": {
       }
     },
     "cookie": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
-      "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
     },
     "cookie-signature": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "dev": true
     },
     "copy-anything": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
-      "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+      "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
       "dev": true,
       "requires": {
-        "is-what": "^3.12.0"
+        "is-what": "^3.14.1"
       }
     },
     "copy-descriptor": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
       "dev": true
     },
     "copy-to-clipboard": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz",
-      "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz",
+      "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==",
       "requires": {
         "toggle-selection": "^1.0.6"
       }
       }
     },
     "core-js": {
-      "version": "3.20.2",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.2.tgz",
-      "integrity": "sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw=="
+      "version": "3.24.1",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz",
+      "integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg=="
     },
     "core-js-compat": {
-      "version": "3.20.2",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.2.tgz",
-      "integrity": "sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==",
+      "version": "3.24.1",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz",
+      "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.19.1",
+        "browserslist": "^4.21.3",
         "semver": "7.0.0"
       },
       "dependencies": {
       }
     },
     "core-js-pure": {
-      "version": "3.20.2",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz",
-      "integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg=="
+      "version": "3.24.1",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz",
+      "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg=="
     },
     "core-util-is": {
       "version": "1.0.3",
         "yaml": "^1.10.0"
       }
     },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
     "critters": {
       "version": "0.0.12",
       "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz",
           "dev": true
         },
         "postcss": {
-          "version": "8.4.5",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
-          "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+          "version": "8.4.16",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
+          "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
           "dev": true,
           "requires": {
-            "nanoid": "^3.1.30",
+            "nanoid": "^3.3.4",
             "picocolors": "^1.0.0",
-            "source-map-js": "^1.0.1"
+            "source-map-js": "^1.0.2"
           }
         },
         "supports-color": {
       }
     },
     "cross-fetch": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
-      "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+      "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
       "requires": {
-        "node-fetch": "2.6.1"
+        "node-fetch": "2.6.7"
       }
     },
     "cross-spawn": {
     "crypt": {
       "version": "0.0.2",
       "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
-      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+      "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
       "dev": true
     },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
     "crypto-js": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
       }
     },
     "css-declaration-sorter": {
-      "version": "6.1.3",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz",
-      "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==",
-      "dev": true,
-      "requires": {
-        "timsort": "^0.3.0"
-      }
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz",
+      "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==",
+      "dev": true
     },
     "css-has-pseudo": {
       "version": "0.10.0",
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
     "css-parse": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
+      "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
       "dev": true,
       "requires": {
         "css": "^2.0.0"
       }
     },
     "css-select": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz",
-      "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
       "dev": true,
       "requires": {
         "boolbase": "^1.0.0",
-        "css-what": "^5.1.0",
-        "domhandler": "^4.3.0",
+        "css-what": "^6.0.1",
+        "domhandler": "^4.3.1",
         "domutils": "^2.8.0",
         "nth-check": "^2.0.1"
       }
       }
     },
     "css-what": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
-      "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
       "dev": true
     },
     "css.escape": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-      "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
+      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="
     },
     "cssauron": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
-      "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
+      "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==",
       "dev": true,
       "requires": {
         "through": "X.X.X"
     "cssfontparser": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz",
-      "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=",
+      "integrity": "sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==",
       "dev": true
     },
     "cssnano": {
-      "version": "5.0.14",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.14.tgz",
-      "integrity": "sha512-qzhRkFvBhv08tbyKCIfWbxBXmkIpLl1uNblt8SpTHkgLfON5OCPX/CCnkdNmEosvo8bANQYmTTMEgcVBlisHaw==",
+      "version": "5.1.13",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz",
+      "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==",
       "dev": true,
       "requires": {
-        "cssnano-preset-default": "^5.1.9",
+        "cssnano-preset-default": "^5.2.12",
         "lilconfig": "^2.0.3",
         "yaml": "^1.10.2"
       }
     },
     "cssnano-preset-default": {
-      "version": "5.1.9",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.9.tgz",
-      "integrity": "sha512-RhkEucqlQ+OxEi14K1p8gdXcMQy1mSpo7P1oC44oRls7BYIj8p+cht4IFBFV3W4iOjTP8EUB33XV1fX9KhDzyA==",
-      "dev": true,
-      "requires": {
-        "css-declaration-sorter": "^6.0.3",
-        "cssnano-utils": "^2.0.1",
-        "postcss-calc": "^8.0.0",
-        "postcss-colormin": "^5.2.2",
-        "postcss-convert-values": "^5.0.2",
-        "postcss-discard-comments": "^5.0.1",
-        "postcss-discard-duplicates": "^5.0.1",
-        "postcss-discard-empty": "^5.0.1",
-        "postcss-discard-overridden": "^5.0.1",
-        "postcss-merge-longhand": "^5.0.4",
-        "postcss-merge-rules": "^5.0.3",
-        "postcss-minify-font-values": "^5.0.1",
-        "postcss-minify-gradients": "^5.0.3",
-        "postcss-minify-params": "^5.0.2",
-        "postcss-minify-selectors": "^5.1.0",
-        "postcss-normalize-charset": "^5.0.1",
-        "postcss-normalize-display-values": "^5.0.1",
-        "postcss-normalize-positions": "^5.0.1",
-        "postcss-normalize-repeat-style": "^5.0.1",
-        "postcss-normalize-string": "^5.0.1",
-        "postcss-normalize-timing-functions": "^5.0.1",
-        "postcss-normalize-unicode": "^5.0.1",
-        "postcss-normalize-url": "^5.0.4",
-        "postcss-normalize-whitespace": "^5.0.1",
-        "postcss-ordered-values": "^5.0.2",
-        "postcss-reduce-initial": "^5.0.2",
-        "postcss-reduce-transforms": "^5.0.1",
-        "postcss-svgo": "^5.0.3",
-        "postcss-unique-selectors": "^5.0.2"
+      "version": "5.2.12",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz",
+      "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==",
+      "dev": true,
+      "requires": {
+        "css-declaration-sorter": "^6.3.0",
+        "cssnano-utils": "^3.1.0",
+        "postcss-calc": "^8.2.3",
+        "postcss-colormin": "^5.3.0",
+        "postcss-convert-values": "^5.1.2",
+        "postcss-discard-comments": "^5.1.2",
+        "postcss-discard-duplicates": "^5.1.0",
+        "postcss-discard-empty": "^5.1.1",
+        "postcss-discard-overridden": "^5.1.0",
+        "postcss-merge-longhand": "^5.1.6",
+        "postcss-merge-rules": "^5.1.2",
+        "postcss-minify-font-values": "^5.1.0",
+        "postcss-minify-gradients": "^5.1.1",
+        "postcss-minify-params": "^5.1.3",
+        "postcss-minify-selectors": "^5.2.1",
+        "postcss-normalize-charset": "^5.1.0",
+        "postcss-normalize-display-values": "^5.1.0",
+        "postcss-normalize-positions": "^5.1.1",
+        "postcss-normalize-repeat-style": "^5.1.1",
+        "postcss-normalize-string": "^5.1.0",
+        "postcss-normalize-timing-functions": "^5.1.0",
+        "postcss-normalize-unicode": "^5.1.0",
+        "postcss-normalize-url": "^5.1.0",
+        "postcss-normalize-whitespace": "^5.1.1",
+        "postcss-ordered-values": "^5.1.3",
+        "postcss-reduce-initial": "^5.1.0",
+        "postcss-reduce-transforms": "^5.1.0",
+        "postcss-svgo": "^5.1.0",
+        "postcss-unique-selectors": "^5.1.1"
       }
     },
     "cssnano-utils": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz",
-      "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
+      "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
       "dev": true
     },
     "csso": {
       }
     },
     "csstype": {
-      "version": "3.0.10",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
-      "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA=="
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
+      "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
+    },
+    "cucumber": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz",
+      "integrity": "sha512-3gQ0Vv4kSHsvXEFC6b1c+TfLRDzWD1/kU7e5vm8Kh8j35b95k6favan9/4ixcBNqd7UsU1T6FYcawC87+DlNKw==",
+      "dev": true,
+      "requires": {
+        "assertion-error-formatter": "^2.0.1",
+        "babel-runtime": "^6.11.6",
+        "bluebird": "^3.4.1",
+        "cli-table": "^0.3.1",
+        "colors": "^1.1.2",
+        "commander": "^2.9.0",
+        "cucumber-expressions": "^5.0.13",
+        "cucumber-tag-expressions": "^1.1.1",
+        "duration": "^0.2.0",
+        "escape-string-regexp": "^1.0.5",
+        "figures": "2.0.0",
+        "gherkin": "^5.0.0",
+        "glob": "^7.0.0",
+        "indent-string": "^3.1.0",
+        "is-generator": "^1.0.2",
+        "is-stream": "^1.1.0",
+        "knuth-shuffle-seeded": "^1.0.6",
+        "lodash": "^4.17.4",
+        "mz": "^2.4.0",
+        "progress": "^2.0.0",
+        "resolve": "^1.3.3",
+        "serialize-error": "^2.1.0",
+        "stack-chain": "^2.0.0",
+        "stacktrace-js": "^2.0.0",
+        "string-argv": "0.0.2",
+        "title-case": "^2.1.1",
+        "util-arity": "^1.0.2",
+        "verror": "^1.9.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+          "dev": true
+        },
+        "cucumber-expressions": {
+          "version": "5.0.18",
+          "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.18.tgz",
+          "integrity": "sha512-cj9UKCEvsB7bN97THmowcZt8I3rYFbTAFBNeDpKmWW3vr43CLZeWBmbk7NlHijndLwPJ7+uiF72xWrRU+RLyZA==",
+          "dev": true,
+          "requires": {
+            "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.2.0"
+          }
+        },
+        "figures": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+          "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "indent-string": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+          "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
+          "dev": true
+        },
+        "serialize-error": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+          "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
+          "dev": true
+        }
+      }
+    },
+    "cucumber-expressions": {
+      "version": "6.6.2",
+      "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-6.6.2.tgz",
+      "integrity": "sha512-WcFSVBiWNLJbIcAAC3t/ACU46vaOKfe1UIF5H3qveoq+Y4XQm9j3YwHurQNufRKBBg8nCnpU7Ttsx7egjS3hwA==",
+      "dev": true,
+      "requires": {
+        "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.2.0"
+      }
+    },
+    "cucumber-messages": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/cucumber-messages/-/cucumber-messages-8.0.0.tgz",
+      "integrity": "sha512-lUnWRMjwA9+KhDec/5xRZV3Du67ISumHnVLywWQXyvzmc4P+Eqx8CoeQrBQoau3Pw1hs4kJLTDyV85hFBF00SQ==",
+      "dev": true,
+      "requires": {
+        "@types/uuid": "^3.4.6",
+        "protobufjs": "^6.8.8",
+        "uuid": "^3.3.3"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+          "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+          "dev": true
+        }
+      }
+    },
+    "cucumber-tag-expressions": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz",
+      "integrity": "sha512-V9jv81sR/HaJ87FoidrvHkviXId7KmBcUi7aQPfi+W3nRO30N6GqH6lcp8K+nyiT1DgemRJBPDDeBMS93xJqMQ==",
+      "dev": true
     },
     "cypress": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.0.0.tgz",
-      "integrity": "sha512-/93SWBZTw7BjFZ+I9S8SqkFYZx7VhedDjTtRBmXO0VzTeDbmxgK/snMJm/VFjrqk/caWbI+XY4Qr80myDMQvYg==",
+      "version": "9.7.0",
+      "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz",
+      "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==",
       "dev": true,
       "requires": {
-        "@cypress/request": "^2.88.7",
+        "@cypress/request": "^2.88.10",
         "@cypress/xvfb": "^1.2.4",
         "@types/node": "^14.14.31",
-        "@types/sinonjs__fake-timers": "^6.0.2",
+        "@types/sinonjs__fake-timers": "8.1.1",
         "@types/sizzle": "^2.3.2",
         "arch": "^2.2.0",
         "blob-util": "^2.0.2",
         "bluebird": "^3.7.2",
+        "buffer": "^5.6.0",
         "cachedir": "^2.3.0",
         "chalk": "^4.1.0",
         "check-more-types": "^2.24.0",
         "cli-cursor": "^3.1.0",
-        "cli-table3": "~0.6.0",
+        "cli-table3": "~0.6.1",
         "commander": "^5.1.0",
         "common-tags": "^1.8.0",
         "dayjs": "^1.10.4",
         "listr2": "^3.8.3",
         "lodash": "^4.17.21",
         "log-symbols": "^4.0.0",
-        "minimist": "^1.2.5",
+        "minimist": "^1.2.6",
         "ospath": "^1.2.2",
         "pretty-bytes": "^5.6.0",
         "proxy-from-env": "1.0.0",
         "request-progress": "^3.0.0",
+        "semver": "^7.3.2",
         "supports-color": "^8.1.1",
         "tmp": "~0.2.1",
         "untildify": "^4.0.0",
-        "url": "^0.11.0",
         "yauzl": "^2.10.0"
       },
       "dependencies": {
         "@types/node": {
-          "version": "14.18.5",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz",
-          "integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==",
+          "version": "14.18.25",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.25.tgz",
+          "integrity": "sha512-9pLfceRSrKIsv/MISN6RoFWTIzka36Uk2Uuf5a8cHyDYhEgl5Hm5dXoe621KULeBjt+cFsY18mILsWWtJeG80w==",
           "dev": true
         },
         "ansi-styles": {
           "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
           "dev": true
         },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
         "shebang-command": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
           "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
           "dev": true,
           "requires": {
-            "has-flag": "^4.0.0"
+            "has-flag": "^4.0.0"
+          }
+        },
+        "tmp": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+          "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+          "dev": true,
+          "requires": {
+            "rimraf": "^3.0.0"
+          }
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "cypress-cucumber-preprocessor": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.3.1.tgz",
+      "integrity": "sha512-BKUYXqoTeKzkPXohEczDtpAwRCY0ZPtIpfRwJut16yNLqdXQMV+aItwanxe3cbJTFlwg562NAjL4LMdiOhkAjg==",
+      "dev": true,
+      "requires": {
+        "@cypress/browserify-preprocessor": "^3.0.2",
+        "chai": "^4.2.0",
+        "chokidar": "3.5.2",
+        "cosmiconfig": "^4.0.0",
+        "cucumber": "^4.2.1",
+        "cucumber-expressions": "^6.0.1",
+        "cucumber-tag-expressions": "^1.1.1",
+        "dargs": "^7.0.0",
+        "debug": "^3.0.1",
+        "gherkin": "^5.1.0",
+        "glob": "^7.1.2",
+        "js-string-escape": "^1.0.1",
+        "minimist": "^1.2.5",
+        "through": "^2.3.8"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "1.0.10",
+          "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+          "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+          "dev": true,
+          "requires": {
+            "sprintf-js": "~1.0.2"
+          }
+        },
+        "chokidar": {
+          "version": "3.5.2",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+          "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+          "dev": true,
+          "requires": {
+            "anymatch": "~3.1.2",
+            "braces": "~3.0.2",
+            "fsevents": "~2.3.2",
+            "glob-parent": "~5.1.2",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.6.0"
+          }
+        },
+        "cosmiconfig": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
+          "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
+          "dev": true,
+          "requires": {
+            "is-directory": "^0.3.1",
+            "js-yaml": "^3.9.0",
+            "parse-json": "^4.0.0",
+            "require-from-string": "^2.0.1"
+          }
+        },
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.1"
           }
         },
-        "tmp": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
-          "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+        "js-yaml": {
+          "version": "3.14.1",
+          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
           "dev": true,
           "requires": {
-            "rimraf": "^3.0.0"
+            "argparse": "^1.0.7",
+            "esprima": "^4.0.0"
           }
         },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+        "parse-json": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+          "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
           "dev": true,
           "requires": {
-            "isexe": "^2.0.0"
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
           }
         }
       }
     },
+    "cypress-file-upload": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz",
+      "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==",
+      "dev": true
+    },
+    "cypress-iframe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cypress-iframe/-/cypress-iframe-1.0.1.tgz",
+      "integrity": "sha512-Ne+xkZmWMhfq3x6wbfzK/SzsVTCrJru3R3cLXsoSAZyfUtJDamXyaIieHXeea3pQDXF4wE2w4iUuvCYHhoD31g==",
+      "dev": true
+    },
     "cypress-multi-reporters": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/cypress-multi-reporters/-/cypress-multi-reporters-1.5.0.tgz",
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
       "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+      "dev": true,
       "requires": {
         "es5-ext": "^0.10.50",
         "type": "^1.0.1"
       }
     },
     "damerau-levenshtein": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz",
-      "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+      "dev": true
+    },
+    "dargs": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
+      "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
       "dev": true
     },
     "dash-ast": {
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
       "dev": true,
       "requires": {
         "assert-plus": "^1.0.0"
         "abab": "^2.0.0",
         "whatwg-mimetype": "^2.2.0",
         "whatwg-url": "^7.0.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+          "dev": true
+        },
+        "tr46": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+          "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+          "dev": true,
+          "requires": {
+            "punycode": "^2.1.0"
+          }
+        },
+        "webidl-conversions": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+          "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+          "dev": true
+        },
+        "whatwg-url": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+          "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+          "dev": true,
+          "requires": {
+            "lodash.sortby": "^4.7.0",
+            "tr46": "^1.0.1",
+            "webidl-conversions": "^4.0.2"
+          }
+        }
       }
     },
+    "date-format": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.0.tgz",
+      "integrity": "sha512-kAmAdtsjW5nQ02FERwI1bP4xe6HQBPwy5kpAF4CRSLOMUs/vgMIEEwpy6JqUs7NitTyhZiImxwAjgPpnteycHg==",
+      "dev": true
+    },
     "dateformat": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
       "dev": true
     },
     "dayjs": {
-      "version": "1.10.7",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz",
-      "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==",
+      "version": "1.11.5",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz",
+      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==",
       "dev": true
     },
     "debug": {
-      "version": "4.3.3",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-      "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
       "requires": {
         "ms": "2.1.2"
       }
     "decamelize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
       "dev": true
     },
     "decamelize-keys": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
-      "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+      "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==",
       "dev": true,
       "requires": {
         "decamelize": "^1.1.0",
         "map-obj": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+          "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
           "dev": true
         }
       }
     },
     "decimal.js": {
-      "version": "10.3.1",
-      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
-      "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz",
+      "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==",
       "dev": true
     },
     "decode-uri-component": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
       "dev": true
     },
+    "deep-eql": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+      "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+      "dev": true,
+      "requires": {
+        "type-detect": "^4.0.0"
+      }
+    },
     "deep-equal": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
     "deepmerge": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
-      "dev": true
+      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
     },
     "default-gateway": {
       "version": "4.2.0",
     "defaults": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+      "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==",
       "dev": true,
       "requires": {
         "clone": "^1.0.2"
       "dev": true
     },
     "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
       "dev": true,
       "requires": {
-        "object-keys": "^1.0.12"
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
       }
     },
     "define-property": {
         }
       }
     },
+    "defined": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+      "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
+      "dev": true
+    },
     "del": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
         "array-union": {
           "version": "1.0.2",
           "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-          "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+          "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
           "dev": true,
           "requires": {
             "array-uniq": "^1.0.1"
         "globby": {
           "version": "6.1.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
           "dev": true,
           "requires": {
             "array-union": "^1.0.1",
             "pify": {
               "version": "2.3.0",
               "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
               "dev": true
             }
           }
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
       "dev": true
     },
     "delegates": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
       "dev": true
     },
     "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
       "dev": true
     },
     "dependency-graph": {
       "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
       "dev": true
     },
+    "deps-sort": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz",
+      "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.3",
+        "shasum-object": "^1.0.0",
+        "subarg": "^1.0.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
     "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
       "dev": true
     },
     "detect-browser": {
     "detect-file": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
-      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+      "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
       "dev": true
     },
     "detect-newline": {
       "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
       "dev": true
     },
+    "detective": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
+      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
+      "dev": true,
+      "requires": {
+        "acorn-node": "^1.8.2",
+        "defined": "^1.0.0",
+        "minimist": "^1.2.6"
+      }
+    },
+    "devtools-protocol": {
+      "version": "0.0.927104",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.927104.tgz",
+      "integrity": "sha512-5jfffjSuTOv0Lz53wTNNTcCUV8rv7d82AhYcapj28bC2B5tDxEZzVb7k51cNxZP2KHw24QE+sW7ZuSeD9NfMpA==",
+      "dev": true
+    },
     "dfa": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz",
       "dev": true
     },
     "diff": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+      "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
       "dev": true
     },
     "diff-sequences": {
       "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==",
       "dev": true
     },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
     "dir-glob": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
     "dns-equal": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
       "dev": true
     },
     "dns-packet": {
     "dns-txt": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
       "dev": true,
       "requires": {
         "buffer-indexof": "^1.0.0"
       }
     },
     "dom-serializer": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
-      "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
       "dev": true,
       "requires": {
         "domelementtype": "^2.0.1",
         "entities": "^2.0.0"
       }
     },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+      "dev": true
+    },
     "domelementtype": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-      "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
       "dev": true
     },
     "domexception": {
       "dev": true,
       "requires": {
         "webidl-conversions": "^4.0.2"
+      },
+      "dependencies": {
+        "webidl-conversions": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+          "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+          "dev": true
+        }
       }
     },
     "domhandler": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
-      "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
       "dev": true,
       "requires": {
         "domelementtype": "^2.2.0"
       "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==",
       "dev": true
     },
+    "drange": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz",
+      "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA=="
+    },
     "duplexer": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
     "duplexer2": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
-      "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+      "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
       "dev": true,
       "requires": {
         "readable-stream": "^2.0.2"
         }
       }
     },
+    "duration": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz",
+      "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.46"
+      }
+    },
     "ecc-jsbn": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
       "dev": true,
       "requires": {
         "jsbn": "~0.1.0",
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.4.35",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz",
-      "integrity": "sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA==",
+      "version": "1.4.225",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz",
+      "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==",
       "dev": true
     },
+    "elliptic": {
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
     "emittery": {
       "version": "0.7.2",
       "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
     "encodeurl": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
       "dev": true
     },
     "encoding": {
       }
     },
     "enhanced-resolve": {
-      "version": "5.8.3",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
-      "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
+      "version": "5.10.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
+      "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.2.4",
         "is-arrayish": "^0.2.1"
       }
     },
+    "error-stack-parser": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+      "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+      "dev": true,
+      "requires": {
+        "stackframe": "^1.3.4"
+      }
+    },
     "es-abstract": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
-      "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
+      "version": "1.20.1",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
+      "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "es-to-primitive": "^1.2.1",
         "function-bind": "^1.1.1",
+        "function.prototype.name": "^1.1.5",
         "get-intrinsic": "^1.1.1",
         "get-symbol-description": "^1.0.0",
         "has": "^1.0.3",
-        "has-symbols": "^1.0.2",
+        "has-property-descriptors": "^1.0.0",
+        "has-symbols": "^1.0.3",
         "internal-slot": "^1.0.3",
         "is-callable": "^1.2.4",
-        "is-negative-zero": "^2.0.1",
+        "is-negative-zero": "^2.0.2",
         "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.1",
+        "is-shared-array-buffer": "^1.0.2",
         "is-string": "^1.0.7",
-        "is-weakref": "^1.0.1",
-        "object-inspect": "^1.11.0",
+        "is-weakref": "^1.0.2",
+        "object-inspect": "^1.12.0",
         "object-keys": "^1.1.1",
         "object.assign": "^4.1.2",
-        "string.prototype.trimend": "^1.0.4",
-        "string.prototype.trimstart": "^1.0.4",
-        "unbox-primitive": "^1.0.1"
+        "regexp.prototype.flags": "^1.4.3",
+        "string.prototype.trimend": "^1.0.5",
+        "string.prototype.trimstart": "^1.0.5",
+        "unbox-primitive": "^1.0.2"
       }
     },
     "es-module-lexer": {
       }
     },
     "es5-ext": {
-      "version": "0.10.53",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
-      "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+      "version": "0.10.62",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
+      "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+      "dev": true,
       "requires": {
-        "es6-iterator": "~2.0.3",
-        "es6-symbol": "~3.1.3",
-        "next-tick": "~1.0.0"
-      },
-      "dependencies": {
-        "next-tick": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-          "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
-        }
+        "es6-iterator": "^2.0.3",
+        "es6-symbol": "^3.1.3",
+        "next-tick": "^1.1.0"
       }
     },
     "es6-iterator": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+      "dev": true,
       "requires": {
         "d": "1",
         "es5-ext": "^0.10.35",
     "es6-map": {
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
-      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+      "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
       "dev": true,
       "requires": {
         "d": "1",
       }
     },
     "es6-set": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
-      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz",
+      "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
       "dev": true,
       "requires": {
-        "d": "1",
-        "es5-ext": "~0.10.14",
-        "es6-iterator": "~2.0.1",
-        "es6-symbol": "3.1.1",
-        "event-emitter": "~0.3.5"
+        "d": "^1.0.1",
+        "es5-ext": "^0.10.62",
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "^3.1.3",
+        "event-emitter": "^0.3.5",
+        "type": "^2.7.2"
       },
       "dependencies": {
-        "es6-symbol": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
-          "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
-          "dev": true,
-          "requires": {
-            "d": "1",
-            "es5-ext": "~0.10.14"
-          }
+        "type": {
+          "version": "2.7.2",
+          "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+          "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+          "dev": true
         }
       }
     },
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
       "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+      "dev": true,
       "requires": {
         "d": "^1.0.1",
         "ext": "^1.1.2"
       }
     },
-    "es6-weak-map": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
-      "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.46",
-        "es6-iterator": "^2.0.3",
-        "es6-symbol": "^3.1.1"
-      }
-    },
     "esbuild-android-arm64": {
       "version": "0.13.8",
       "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz",
     "escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
       "dev": true
     },
     "escape-string-regexp": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
     },
     "escodegen": {
       "version": "1.14.3",
     "etag": {
       "version": "1.8.1",
       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
       "dev": true
     },
     "event-emitter": {
       "version": "0.3.5",
       "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
-      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+      "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+      "dev": true,
       "requires": {
         "d": "1",
         "es5-ext": "~0.10.14"
       "dev": true
     },
     "eventemitter2": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz",
-      "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
+      "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==",
       "dev": true
     },
     "eventemitter3": {
       "dev": true
     },
     "eventsource": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
-      "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
+      "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+      "dev": true
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
       "dev": true,
       "requires": {
-        "original": "^1.0.0"
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
       }
     },
     "exec-sh": {
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
           "dev": true
         }
       }
     "exit": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
       "dev": true
     },
     "expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
       "dev": true,
       "requires": {
         "debug": "^2.3.3",
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
     "expand-tilde": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+      "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
       "dev": true,
       "requires": {
         "homedir-polyfill": "^1.0.1"
       }
     },
     "express": {
-      "version": "4.17.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz",
-      "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==",
+      "version": "4.18.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
+      "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
       "dev": true,
       "requires": {
-        "accepts": "~1.3.7",
+        "accepts": "~1.3.8",
         "array-flatten": "1.1.1",
-        "body-parser": "1.19.1",
+        "body-parser": "1.20.0",
         "content-disposition": "0.5.4",
         "content-type": "~1.0.4",
-        "cookie": "0.4.1",
+        "cookie": "0.5.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
-        "depd": "~1.1.2",
+        "depd": "2.0.0",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
-        "finalhandler": "~1.1.2",
+        "finalhandler": "1.2.0",
         "fresh": "0.5.2",
+        "http-errors": "2.0.0",
         "merge-descriptors": "1.0.1",
         "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
+        "on-finished": "2.4.1",
         "parseurl": "~1.3.3",
         "path-to-regexp": "0.1.7",
         "proxy-addr": "~2.0.7",
-        "qs": "6.9.6",
+        "qs": "6.10.3",
         "range-parser": "~1.2.1",
         "safe-buffer": "5.2.1",
-        "send": "0.17.2",
-        "serve-static": "1.14.2",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
         "setprototypeof": "1.2.0",
-        "statuses": "~1.5.0",
+        "statuses": "2.0.1",
         "type-is": "~1.6.18",
         "utils-merge": "1.0.1",
         "vary": "~1.1.2"
         "array-flatten": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
           "dev": true
         },
         "debug": {
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "qs": {
-          "version": "6.9.6",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
-          "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==",
-          "dev": true
+          "version": "6.10.3",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+          "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+          "dev": true,
+          "requires": {
+            "side-channel": "^1.0.4"
+          }
         },
         "safe-buffer": {
           "version": "5.2.1",
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
       "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
+      "dev": true,
       "requires": {
         "type": "^2.5.0"
       },
       "dependencies": {
         "type": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz",
-          "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw=="
+          "version": "2.7.2",
+          "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+          "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+          "dev": true
         }
       }
     },
     "extend-shallow": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
       "dev": true,
       "requires": {
         "assign-symbols": "^1.0.0",
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
       "dev": true
     },
     "fancy-log": {
       "dev": true
     },
     "fast-glob": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
-      "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+      "version": "3.2.11",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
       "dev": true,
       "requires": {
         "@nodelib/fs.stat": "^2.0.2",
       }
     },
     "fast-json-patch": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz",
-      "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA=="
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz",
+      "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="
     },
     "fast-json-stable-stringify": {
       "version": "2.1.0",
     "fast-levenshtein": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "fast-safe-stringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+      "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
       "dev": true
     },
     "fastest-levenshtein": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
-      "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
+      "version": "1.0.16",
+      "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+      "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
       "dev": true
     },
     "fastparse": {
     "fd-slicer": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
       "dev": true,
       "requires": {
         "pend": "~1.2.0"
       }
     },
     "finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
       "dev": true,
       "requires": {
         "debug": "2.6.9",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
+        "on-finished": "2.4.1",
         "parseurl": "~1.3.3",
-        "statuses": "~1.5.0",
+        "statuses": "2.0.1",
         "unpipe": "~1.0.0"
       },
       "dependencies": {
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
     "findit2": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz",
-      "integrity": "sha1-WKRmaX34piBc39vzlVNri9d3pfY=",
+      "integrity": "sha512-lg/Moejf4qXovVutL0Lz4IsaPoNYMuxt4PA0nGqFxnJ1CTTGGlEO2wKgoDpwknhvZ8k4Q2F+eesgkLbG2Mxfog==",
       "dev": true
     },
     "findup-sync": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+      "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==",
       "dev": true,
       "requires": {
         "detect-file": "^1.0.0",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "is-glob": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
           "dev": true,
           "requires": {
             "is-extglob": "^2.1.0"
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
       "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
       "dev": true
     },
+    "flat": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+      "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+      "dev": true
+    },
     "flat-cache": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
       }
     },
     "flatted": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
-      "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
       "dev": true
     },
     "flatten": {
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.14.6",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
-      "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
+      "version": "1.15.1",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
+      "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
       "dev": true
     },
+    "for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.3"
+      }
+    },
     "for-in": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
       "dev": true
     },
     "for-own": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+      "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
       "dev": true,
       "requires": {
         "for-in": "^1.0.1"
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
       "dev": true
     },
     "fork-awesome": {
       }
     },
     "form-data-encoder": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz",
-      "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg=="
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
+      "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="
     },
     "format": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
-      "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
+      "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
     },
     "formdata-node": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz",
-      "integrity": "sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg==",
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
+      "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
       "requires": {
         "node-domexception": "1.0.0",
-        "web-streams-polyfill": "4.0.0-beta.1"
+        "web-streams-polyfill": "4.0.0-beta.3"
       }
     },
     "forwarded": {
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
       "dev": true,
       "requires": {
         "map-cache": "^0.2.2"
     "fresh": {
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
       "dev": true
     },
     "from": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
-      "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+      "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==",
       "dev": true
     },
     "fs-extra": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
-      "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.2.0",
     "fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
     },
     "fsevents": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
+    "function.prototype.name": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.0",
+        "functions-have-names": "^1.2.2"
+      }
+    },
+    "functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true
+    },
     "gauge": {
       "version": "2.7.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
       "dev": true,
       "requires": {
         "aproba": "^1.0.3",
         "ansi-regex": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
           "dev": true
         },
         "is-fullwidth-code-point": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
           "dev": true,
           "requires": {
             "number-is-nan": "^1.0.0"
         "string-width": {
           "version": "1.0.2",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
           "dev": true,
           "requires": {
             "code-point-at": "^1.0.0",
         "strip-ansi": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
           "dev": true,
           "requires": {
             "ansi-regex": "^2.0.0"
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
     },
+    "get-func-name": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+      "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
+      "dev": true
+    },
     "get-intrinsic": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
-      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
       "requires": {
         "function-bind": "^1.1.1",
         "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
+        "has-symbols": "^1.0.3"
       }
     },
     "get-package-type": {
     "get-value": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
       "dev": true
     },
     "getos": {
       },
       "dependencies": {
         "async": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz",
-          "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==",
+          "version": "3.2.4",
+          "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+          "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+          "dev": true
+        }
+      }
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "gherkin": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.1.0.tgz",
+      "integrity": "sha512-axTCsxH0m0cixijLvo7s9591h5pMb8ifQxFDun5FnfFhVsUhxgdnH0H7TSK7q8I4ASUU18DJ/tmlnMegMuLUUQ==",
+      "dev": true
+    },
+    "gherkin-lint": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/gherkin-lint/-/gherkin-lint-4.2.2.tgz",
+      "integrity": "sha512-+vu0wbrwxaaEdrheU9pH2MYR6zk38u2IkrCIg6IETUw1lkrNVAfIfOCihwrrL2NTJv5Iia/C7hZEBNwjGSkL2Q==",
+      "dev": true,
+      "requires": {
+        "commander": "5.0.0",
+        "core-js": "3.6.4",
+        "gherkin": "9.0.0",
+        "glob": "7.1.6",
+        "lodash": "4.17.21",
+        "strip-json-comments": "3.0.1",
+        "xml-js": "^1.6.11"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-5.0.0.tgz",
+          "integrity": "sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ==",
+          "dev": true
+        },
+        "core-js": {
+          "version": "3.6.4",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
+          "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==",
+          "dev": true
+        },
+        "gherkin": {
+          "version": "9.0.0",
+          "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-9.0.0.tgz",
+          "integrity": "sha512-6xoAepoxo5vhkBXjB4RCfVnSKHu5z9SqXIQVUyj+Jw8BQX8odATlee5otXgdN8llZvyvHokuvNiBeB3naEnnIQ==",
+          "dev": true,
+          "requires": {
+            "commander": "^4.0.1",
+            "cucumber-messages": "8.0.0",
+            "source-map-support": "^0.5.16"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+              "dev": true
+            }
+          }
+        },
+        "glob": {
+          "version": "7.1.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+          "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
           "dev": true
         }
       }
     },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
     "glob": {
       "version": "7.1.7",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
     "global-prefix": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
-      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+      "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
       "dev": true,
       "requires": {
         "expand-tilde": "^2.0.2",
       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
     },
     "globby": {
-      "version": "11.0.4",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
-      "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
       "dev": true,
       "requires": {
         "array-union": "^2.1.0",
         "dir-glob": "^3.0.1",
-        "fast-glob": "^3.1.1",
-        "ignore": "^5.1.4",
-        "merge2": "^1.3.0",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
         "slash": "^3.0.0"
       }
     },
     "globjoin": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
-      "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=",
+      "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
       "dev": true
     },
     "gonzales-pe": {
       }
     },
     "graceful-fs": {
-      "version": "4.2.9",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
-      "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+      "version": "4.2.10",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+      "dev": true
+    },
+    "growl": {
+      "version": "1.10.5",
+      "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+      "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
       "dev": true
     },
     "growly": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
-      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+      "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
       "dev": true,
       "optional": true
     },
     "har-schema": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
       "dev": true
     },
     "har-validator": {
       }
     },
     "has-bigints": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
-      "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
       "dev": true
     },
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+    },
+    "has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
+      "requires": {
+        "get-intrinsic": "^1.1.1"
+      }
     },
     "has-symbols": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
-      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
     },
     "has-tostringtag": {
       "version": "1.0.0",
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
       "dev": true
     },
     "has-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
       "dev": true,
       "requires": {
         "get-value": "^2.0.6",
     "has-values": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
       "dev": true,
       "requires": {
         "is-number": "^3.0.0",
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
         "kind-of": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
         }
       }
     },
+    "hash-base": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
+      }
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
     "hast-util-parse-selector": {
       "version": "2.2.5",
       "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
       "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
       "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
     },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
     "hoist-non-react-statics": {
       "version": "3.3.2",
       "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
       }
     },
     "hosted-git-info": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
-      "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+      "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
       "dev": true,
       "requires": {
         "lru-cache": "^6.0.0"
     "hpack.js": {
       "version": "2.1.6",
       "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
       "dev": true,
       "requires": {
         "inherits": "^2.0.1",
       }
     },
     "html-tags": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz",
-      "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
+      "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+      "dev": true
+    },
+    "htmlescape": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
+      "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==",
       "dev": true
     },
     "htmllint": {
         "promise": "^8.0.2"
       },
       "dependencies": {
+        "asap": {
+          "version": "2.0.6",
+          "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+          "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+          "dev": true
+        },
         "dom-serializer": {
           "version": "0.2.2",
           "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
           },
           "dependencies": {
             "domelementtype": {
-              "version": "2.2.0",
-              "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-              "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+              "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
               "dev": true
             },
             "entities": {
             "inherits": "^2.0.1",
             "readable-stream": "^3.1.1"
           }
+        },
+        "promise": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
+          "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
+          "dev": true,
+          "requires": {
+            "asap": "~2.0.6"
+          }
         }
       }
     },
     "htmllint-cli": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/htmllint-cli/-/htmllint-cli-0.0.7.tgz",
-      "integrity": "sha1-E0yKPZOaLuArQL0FTUv43tAHNYY=",
+      "integrity": "sha512-JREMzimj1HGrOUcA/FMMweLpHD5YRD1E5RnzXa4dj5m1zQ+6YYLklAGdaTar+qAGaj1Jasb3mGhH6FuKuLGWAQ==",
       "dev": true,
       "requires": {
         "bluebird": "^3.5.1",
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+          "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
           "dev": true
         },
         "camelcase": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
           "dev": true
         },
         "cliui": {
         "find-up": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
           "dev": true,
           "requires": {
             "locate-path": "^2.0.0"
         "is-fullwidth-code-point": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
           "dev": true
         },
         "locate-path": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
           "dev": true,
           "requires": {
             "p-locate": "^2.0.0",
         "p-locate": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
           "dev": true,
           "requires": {
             "p-limit": "^1.1.0"
         "p-try": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
           "dev": true
         },
         "path-exists": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
           "dev": true
         },
         "require-main-filename": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-          "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+          "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
           "dev": true
         },
         "string-width": {
         "strip-ansi": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
           "dev": true,
           "requires": {
             "ansi-regex": "^3.0.0"
         "wrap-ansi": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-          "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+          "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
           "dev": true,
           "requires": {
             "string-width": "^1.0.1",
             "ansi-regex": {
               "version": "2.1.1",
               "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+              "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
               "dev": true
             },
             "is-fullwidth-code-point": {
               "version": "1.0.0",
               "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-              "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+              "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
               "dev": true,
               "requires": {
                 "number-is-nan": "^1.0.0"
             "string-width": {
               "version": "1.0.2",
               "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-              "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+              "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
               "dev": true,
               "requires": {
                 "code-point-at": "^1.0.0",
             "strip-ansi": {
               "version": "3.0.1",
               "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
               "dev": true,
               "requires": {
                 "ansi-regex": "^2.0.0"
         "yargs-parser": {
           "version": "9.0.2",
           "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
-          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+          "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==",
           "dev": true,
           "requires": {
             "camelcase": "^4.1.0"
       }
     },
     "htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
+      "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
       "dev": true,
       "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.2",
+        "domutils": "^3.0.1",
+        "entities": "^4.3.0"
+      },
+      "dependencies": {
+        "dom-serializer": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+          "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.2",
+            "entities": "^4.2.0"
+          }
+        },
+        "domhandler": {
+          "version": "5.0.3",
+          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+          "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.3.0"
+          }
+        },
+        "domutils": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+          "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "^2.0.0",
+            "domelementtype": "^2.3.0",
+            "domhandler": "^5.0.1"
+          }
+        },
+        "entities": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz",
+          "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==",
+          "dev": true
+        }
       }
     },
     "http-auth": {
-      "version": "4.1.7",
-      "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-4.1.7.tgz",
-      "integrity": "sha512-LdftJKxCOpEE56ESgg8uODQ+f+P+0ZHN+PZblIT3YX+c1hDINiI6eNDZ/jm+ji+oqeP+RAW7RuIvt76vqiOLnQ==",
+      "version": "4.1.9",
+      "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-4.1.9.tgz",
+      "integrity": "sha512-kvPYxNGc9EKGTXvOMnTBQw2RZfuiSihK/mLw/a4pbtRueTE45S55Lw/3k5CktIf7Ak0veMKEIteDj4YkNmCzmQ==",
       "dev": true,
       "requires": {
         "apache-crypt": "^1.1.2",
         "apache-md5": "^1.0.6",
         "bcryptjs": "^2.4.3",
-        "uuid": "^3.4.0"
-      },
-      "dependencies": {
-        "uuid": {
-          "version": "3.4.0",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-          "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-          "dev": true
-        }
+        "uuid": "^8.3.2"
       }
     },
     "http-auth-connect": {
     "http-deceiver": {
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
       "dev": true
     },
     "http-errors": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
-      "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
       "dev": true,
       "requires": {
-        "depd": "~1.1.2",
+        "depd": "2.0.0",
         "inherits": "2.0.4",
         "setprototypeof": "1.2.0",
-        "statuses": ">= 1.5.0 < 2",
+        "statuses": "2.0.1",
         "toidentifier": "1.0.1"
       }
     },
     "http-parser-js": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz",
-      "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==",
+      "version": "0.5.8",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
+      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
       "dev": true
     },
     "http-proxy": {
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
     "http-signature": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
       "dev": true,
       "requires": {
         "assert-plus": "^1.0.0",
         "sshpk": "^1.7.0"
       }
     },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+      "dev": true
+    },
     "https-proxy-agent": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
     "humanize-ms": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
-      "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
+      "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
       "dev": true,
       "requires": {
         "ms": "^2.0.0"
     "identity-obj-proxy": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
-      "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=",
+      "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==",
       "dev": true,
       "requires": {
         "harmony-reflect": "^1.4.6"
     "image-size": {
       "version": "0.5.5",
       "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
       "dev": true,
       "optional": true
     },
     "immutable": {
       "version": "3.8.2",
       "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
-      "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
+      "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg=="
     },
     "import-fresh": {
       "version": "3.3.0",
         "path-exists": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
           "dev": true
         },
         "pkg-dir": {
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
       "dev": true
     },
     "indent-string": {
     "indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
       "dev": true
     },
     "infer-owner": {
     "inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
       "requires": {
         "once": "^1.3.0",
         "wrappy": "1"
       "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
       "dev": true
     },
+    "inline-source-map": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
+      "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.5.3"
+      }
+    },
     "inquirer": {
       "version": "8.1.2",
       "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
           "dev": true
         },
         "rxjs": {
-          "version": "7.5.1",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.1.tgz",
-          "integrity": "sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==",
+          "version": "7.5.6",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+          "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
           "dev": true,
           "requires": {
             "tslib": "^2.1.0"
         }
       }
     },
+    "insert-module-globals": {
+      "version": "7.2.1",
+      "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz",
+      "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.3",
+        "acorn-node": "^1.5.2",
+        "combine-source-map": "^0.8.0",
+        "concat-stream": "^1.6.1",
+        "is-buffer": "^1.1.0",
+        "path-is-absolute": "^1.0.1",
+        "process": "~0.11.0",
+        "through2": "^2.0.0",
+        "undeclared-identifiers": "^1.1.2",
+        "xtend": "^4.0.0"
+      }
+    },
     "inside": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/inside/-/inside-1.0.0.tgz",
-      "integrity": "sha1-20Xpk1c82z23C5gy6ChbrUZCR3A=",
+      "integrity": "sha512-tvFwvS4g7q6iDot/4FjtWFHwwpv6TVvEumbTdLQilk1F07ojakbXPQcvf3kMAlyNDpzKRzn+d33O3RuXODuxZQ==",
       "dev": true
     },
     "internal-ip": {
       "dev": true
     },
     "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
       "dev": true
     },
     "ip-regex": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
       "dev": true
     },
     "ipaddr.js": {
     "is-accessor-descriptor": {
       "version": "0.1.6",
       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "dev": true
     },
     "is-bigint": {
       }
     },
     "is-core-module": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
-      "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
+      "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
       "requires": {
         "has": "^1.0.3"
       }
     "is-data-descriptor": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
         }
       }
     },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+      "dev": true
+    },
     "is-docker": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
     "is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
       "dev": true
     },
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
       "dev": true
     },
     "is-fullwidth-code-point": {
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
     },
+    "is-generator": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz",
+      "integrity": "sha512-G56jBpbJeg7ds83HW1LuShNs8J73Fv3CPz/bmROHOHlnKkN8sWb9ujiagjmxxMUywftgq48HlBZELKKqFLk0oA==",
+      "dev": true
+    },
     "is-generator-fn": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
       "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
       "dev": true
     },
+    "is-generator-function": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+      "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+      "dev": true,
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
     "is-glob": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
     "is-lambda": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
-      "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=",
+      "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
       "dev": true
     },
     "is-negative-zero": {
       "dev": true
     },
     "is-number-object": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
-      "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
       "dev": true,
       "requires": {
         "has-tostringtag": "^1.0.0"
       "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
       "dev": true
     },
-    "is-promise": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
-    },
     "is-regex": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
       }
     },
     "is-shared-array-buffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
-      "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
-      "dev": true
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
     },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
       "dev": true
     },
     "is-string": {
         "has-symbols": "^1.0.2"
       }
     },
+    "is-typed-array": {
+      "version": "1.1.9",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+      "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+      "dev": true,
+      "requires": {
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "es-abstract": "^1.20.0",
+        "for-each": "^0.3.3",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
       "dev": true
     },
     "is-unc-path": {
     "is-window": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz",
-      "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0="
+      "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg=="
     },
     "is-windows": {
       "version": "1.0.2",
     "isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
       "dev": true
     },
     "isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
       "dev": true
     },
     "isobject": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
       "dev": true
     },
     "isomorphic-form-data": {
     "isstream": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
       "dev": true
     },
     "istanbul-lib-coverage": {
       }
     },
     "istanbul-reports": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz",
-      "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
       "dev": true,
       "requires": {
         "html-escaper": "^2.0.0",
           "dev": true
         },
         "import-local": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz",
-          "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==",
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+          "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
           "dev": true,
           "requires": {
             "pkg-dir": "^4.2.0",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
           }
         },
         "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "minimist": "^1.2.6"
           }
         },
         "slash": {
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
           "dev": true
         },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
       }
     },
     "jest-worker": {
-      "version": "27.4.6",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz",
-      "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==",
+      "version": "27.5.1",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
       "dev": true,
       "requires": {
         "@types/node": "*",
     "jju": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
-      "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
+      "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
       "dev": true
     },
     "joi": {
-      "version": "17.5.0",
-      "resolved": "https://registry.npmjs.org/joi/-/joi-17.5.0.tgz",
-      "integrity": "sha512-R7hR50COp7StzLnDi4ywOXHrBrgNXuUUfJWIR5lPY5Bm/pOD3jZaTwpluUXVLRWcoWZxkrHBBJ5hLxgnlehbdw==",
+      "version": "17.6.0",
+      "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz",
+      "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==",
       "dev": true,
       "requires": {
         "@hapi/hoek": "^9.0.0",
       "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
       "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
     },
+    "js-string-escape": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
+      "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==",
+      "dev": true
+    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
     "jsbn": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
       "dev": true
     },
     "jsdom": {
           }
         },
         "ws": {
-          "version": "7.5.6",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
-          "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
+          "version": "7.5.9",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+          "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
           "dev": true
         }
       }
     "json-parse-helpfulerror": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz",
-      "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=",
+      "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==",
       "dev": true,
       "requires": {
         "jju": "^1.1.0"
       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
       "dev": true
     },
+    "json-stable-stringify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
+      "integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==",
+      "dev": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
+    },
     "json-stringify-safe": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
       "dev": true
     },
     "json5": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
-      "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
     },
     "jsonc-parser": {
       "version": "3.0.0",
         "universalify": "^2.0.0"
       }
     },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==",
+      "dev": true
+    },
     "jsonparse": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
-      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+      "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
       "dev": true
     },
     "jsprim": {
       "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==",
       "dev": true
     },
+    "knuth-shuffle-seeded": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz",
+      "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==",
+      "dev": true,
+      "requires": {
+        "seed-random": "~2.2.0"
+      }
+    },
+    "labeled-stream-splicer": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz",
+      "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "stream-splicer": "^2.0.0"
+      }
+    },
     "lazy-ass": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
-      "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=",
+      "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==",
       "dev": true
     },
     "lcid": {
     "levn": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
       "dev": true,
       "requires": {
         "prelude-ls": "~1.1.2",
     "liftoff": {
       "version": "2.5.0",
       "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
-      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+      "integrity": "sha512-01zfGFqfORP1CGmZZP2Zn51zsqz4RltDi0RDOhbGoLYdUT5Lw+I2gX6QdwXhPITF6hPOHEOp+At6/L24hIg9WQ==",
       "dev": true,
       "requires": {
         "extend": "^3.0.0",
       }
     },
     "lilconfig": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
-      "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
       "dev": true
     },
     "lines-and-columns": {
       },
       "dependencies": {
         "colorette": {
-          "version": "2.0.16",
-          "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
-          "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
+          "version": "2.0.19",
+          "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
+          "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
           "dev": true
         },
         "rxjs": {
-          "version": "7.5.1",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.1.tgz",
-          "integrity": "sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==",
+          "version": "7.5.6",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+          "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
           "dev": true,
           "requires": {
             "tslib": "^2.1.0"
     "load-json-file": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
-      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+      "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "parse-json": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
           "dev": true,
           "requires": {
             "error-ex": "^1.3.1",
         "pify": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
           "dev": true
         },
         "strip-bom": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
           "dev": true
         }
       }
     },
     "loader-runner": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
-      "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
       "dev": true
     },
     "loader-utils": {
       "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
       "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
     },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+      "dev": true
+    },
     "lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
     },
     "lodash.flatten": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+      "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
       "dev": true
     },
     "lodash.mapvalues": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
-      "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+      "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==",
       "dev": true
     },
     "lodash.memoize": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
+      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
     },
     "lodash.merge": {
       "version": "4.6.2",
     "lodash.once": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
+      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
       "dev": true
     },
     "lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
       "dev": true
     },
     "lodash.throttle": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+      "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
     },
     "lodash.truncate": {
       "version": "4.4.2",
       "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
-      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+      "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
       "dev": true
     },
     "lodash.uniq": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
       "dev": true
     },
     "log-symbols": {
         }
       }
     },
+    "log4js": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-1.1.1.tgz",
+      "integrity": "sha512-lYb14ZSs1M/CUFuvy7Zk3VZLDtqrqOaVql9CE0tv8g6/qE1Gfq97XKdltBsjSxxvcJ+t8fAXOnvFxSsms7gGVg==",
+      "dev": true,
+      "requires": {
+        "debug": "^2.2.0",
+        "semver": "^5.3.0",
+        "streamroller": "^0.4.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+          "dev": true
+        }
+      }
+    },
     "loglevel": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz",
       "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
       "dev": true
     },
+    "long": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+      "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
+      "dev": true
+    },
     "longest-streak": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
         "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
+    "loupe": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+      "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+      "dev": true,
+      "requires": {
+        "get-func-name": "^2.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+      "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+      "dev": true
+    },
     "lowlight": {
       "version": "1.20.0",
       "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
         "yallist": "^4.0.0"
       }
     },
-    "lru-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
-      "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
-      "requires": {
-        "es5-ext": "~0.10.2"
-      }
-    },
     "lunr": {
       "version": "2.3.9",
       "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
       "dev": true
     },
     "map-obj": {
     "map-stream": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
-      "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
+      "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==",
       "dev": true
     },
     "map-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
       "dev": true,
       "requires": {
         "object-visit": "^1.0.0"
         "is-buffer": "~1.1.6"
       }
     },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
     "mdast-util-from-markdown": {
       "version": "0.8.5",
       "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
     "media-typer": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
       "dev": true
     },
     "mem": {
       }
     },
     "memfs": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz",
-      "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==",
+      "version": "3.4.7",
+      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
+      "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==",
       "dev": true,
       "requires": {
-        "fs-monkey": "1.0.3"
-      }
-    },
-    "memoizee": {
-      "version": "0.4.15",
-      "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
-      "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
-      "requires": {
-        "d": "^1.0.1",
-        "es5-ext": "^0.10.53",
-        "es6-weak-map": "^2.0.3",
-        "event-emitter": "^0.3.5",
-        "is-promise": "^2.2.2",
-        "lru-queue": "^0.1.0",
-        "next-tick": "^1.1.0",
-        "timers-ext": "^0.1.7"
+        "fs-monkey": "^1.0.3"
       }
     },
     "memory-fs": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
       "dev": true,
       "requires": {
         "errno": "^0.1.3",
     "memorystream": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
-      "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+      "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
       "dev": true
     },
     "meow": {
           }
         },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
     "merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
       "dev": true
     },
     "merge-source-map": {
     "methods": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
       "dev": true
     },
     "micromark": {
       }
     },
     "micromatch": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
-      "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
       "dev": true,
       "requires": {
-        "braces": "^3.0.1",
-        "picomatch": "^2.2.3"
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
       }
     },
     "mime": {
       "dev": true
     },
     "mime-db": {
-      "version": "1.51.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
-      "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.34",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
-      "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
       "dev": true,
       "requires": {
-        "mime-db": "1.51.0"
+        "mime-db": "1.52.0"
       }
     },
     "mimic-fn": {
       "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
       "dev": true
     },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+      "dev": true
+    },
     "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "requires": {
         "brace-expansion": "^1.1.7"
       }
     },
     "minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+      "dev": true
     },
     "minimist-options": {
       "version": "4.1.0",
         "arrify": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-          "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+          "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
           "dev": true
         },
         "is-plain-obj": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-          "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+          "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
           "dev": true
         }
       }
     },
     "minipass": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
-      "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
+      "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
       "dev": true,
       "requires": {
         "yallist": "^4.0.0"
       "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
       "dev": true
     },
+    "mkdirp-classic": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+      "dev": true
+    },
     "mobx": {
       "version": "4.14.1",
       "resolved": "https://registry.npmjs.org/mobx/-/mobx-4.14.1.tgz",
       "integrity": "sha512-Oyg7Sr7r78b+QPYLufJyUmxTWcqeQ96S1nmtyur3QL8SeI6e0TqcKKcxbG+sVJLWANhHQkBW/mDmgG5DDC4fdw=="
     },
+    "mocha": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz",
+      "integrity": "sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q==",
+      "dev": true,
+      "requires": {
+        "@ungap/promise-all-settled": "1.1.2",
+        "ansi-colors": "4.1.1",
+        "browser-stdout": "1.3.1",
+        "chokidar": "3.5.3",
+        "debug": "4.3.3",
+        "diff": "5.0.0",
+        "escape-string-regexp": "4.0.0",
+        "find-up": "5.0.0",
+        "glob": "7.2.0",
+        "growl": "1.10.5",
+        "he": "1.2.0",
+        "js-yaml": "4.1.0",
+        "log-symbols": "4.1.0",
+        "minimatch": "3.0.4",
+        "ms": "2.1.3",
+        "nanoid": "3.2.0",
+        "serialize-javascript": "6.0.0",
+        "strip-json-comments": "3.1.1",
+        "supports-color": "8.1.1",
+        "which": "2.0.2",
+        "workerpool": "6.2.0",
+        "yargs": "16.2.0",
+        "yargs-parser": "20.2.4",
+        "yargs-unparser": "2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+          "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+              "dev": true
+            }
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^6.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "glob": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^5.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+          "dev": true
+        },
+        "nanoid": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
+          "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
+          "dev": true
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "dev": true,
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^3.0.2"
+          }
+        },
+        "supports-color": {
+          "version": "8.1.1",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+          "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "20.2.4",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+          "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+          "dev": true
+        }
+      }
+    },
     "mocha-junit-reporter": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.2.tgz",
           }
         },
         "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "minimist": "^1.2.6"
           }
         },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
     },
+    "module-deps": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz",
+      "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.3",
+        "browser-resolve": "^2.0.0",
+        "cached-path-relative": "^1.0.2",
+        "concat-stream": "~1.6.0",
+        "defined": "^1.0.0",
+        "detective": "^5.2.0",
+        "duplexer2": "^0.1.2",
+        "inherits": "^2.0.1",
+        "parents": "^1.0.0",
+        "readable-stream": "^2.0.2",
+        "resolve": "^1.4.0",
+        "stream-combiner2": "^1.1.1",
+        "subarg": "^1.0.0",
+        "through2": "^2.0.0",
+        "xtend": "^4.0.0"
+      },
+      "dependencies": {
+        "browser-resolve": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
+          "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+          "dev": true,
+          "requires": {
+            "resolve": "^1.17.0"
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
     "moment": {
-      "version": "2.29.1",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
-      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
+      "version": "2.29.3",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
+      "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
     },
     "moo-color": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz",
-      "integrity": "sha512-5iXz5n9LWQzx/C2WesGFfpE6RLamzdHwsn3KpfzShwbfIqs7stnoEpaNErf/7+3mbxwZ4s8Foq7I0tPxw7BWHg==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz",
+      "integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==",
       "dev": true,
       "requires": {
         "color-name": "^1.1.4"
             "ms": "2.0.0"
           }
         },
-        "depd": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-          "dev": true
-        },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
+        },
+        "on-finished": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+          "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+          "dev": true,
+          "requires": {
+            "ee-first": "1.1.1"
+          }
         }
       }
     },
     "multicast-dns-service-types": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
       "dev": true
     },
     "multimatch": {
       "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
       "dev": true
     },
+    "mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+      "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
     "nanoid": {
-      "version": "3.1.30",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
-      "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
       "dev": true
     },
     "nanomatch": {
     "natural-compare": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
       "dev": true
     },
     "needle": {
       }
     },
     "negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
       "dev": true
     },
     "neo-async": {
     "next-tick": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+      "dev": true
     },
     "ng-block-ui": {
       "version": "3.0.2",
       "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
       "dev": true
     },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
     "node-addon-api": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
       "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
     },
     "node-fetch": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+      "requires": {
+        "whatwg-url": "^5.0.0"
+      }
     },
     "node-forge": {
       "version": "0.10.0",
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
       }
     },
     "node-gyp-build": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz",
-      "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==",
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz",
+      "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==",
       "dev": true,
       "optional": true
     },
     "node-int64": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-      "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
       "dev": true
     },
     "node-notifier": {
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "optional": true,
           "requires": {
       }
     },
     "node-releases": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
-      "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
       "dev": true
     },
     "nopt": {
     "normalize-range": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
       "dev": true
     },
     "normalize-selector": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
-      "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
+      "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==",
       "dev": true
     },
     "normalize-url": {
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
         "pify": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
           "dev": true
         },
         "read-pkg": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
-          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+          "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
           "dev": true,
           "requires": {
             "load-json-file": "^4.0.0",
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
       "dev": true,
       "requires": {
         "path-key": "^2.0.0"
       }
     },
     "nth-check": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
-      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "dev": true,
       "requires": {
         "boolbase": "^1.0.0"
     "num2fraction": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
       "dev": true
     },
     "number-is-nan": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
       "dev": true
     },
     "nwsapi": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
-      "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz",
+      "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==",
       "dev": true
     },
     "oauth-sign": {
     "object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
     },
     "object-copy": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
       "dev": true,
       "requires": {
         "copy-descriptor": "^0.1.0",
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
       }
     },
     "object-inspect": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
-      "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
     },
     "object-is": {
       "version": "1.1.5",
     "object-visit": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
       "dev": true,
       "requires": {
         "isobject": "^3.0.0"
       }
     },
     "object.assign": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "has-symbols": "^1.0.3",
         "object-keys": "^1.1.1"
       }
     },
     "object.defaults": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
-      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+      "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
       "dev": true,
       "requires": {
         "array-each": "^1.0.1",
     "object.map": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
-      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+      "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
       "dev": true,
       "requires": {
         "for-own": "^1.0.0",
     "object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
       "dev": true,
       "requires": {
         "isobject": "^3.0.1"
       "dev": true
     },
     "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
       "dev": true,
       "requires": {
         "ee-first": "1.1.1"
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
       "requires": {
         "wrappy": "1"
       }
         "is-wsl": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+          "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
           "dev": true
         }
       }
         }
       }
     },
-    "original": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
-      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
-      "dev": true,
-      "requires": {
-        "url-parse": "^1.4.3"
-      }
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+      "dev": true
     },
     "os-locale": {
       "version": "3.1.0",
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
       "dev": true
     },
     "ospath": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
-      "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=",
+      "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
       "dev": true
     },
+    "outpipe": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz",
+      "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==",
+      "dev": true,
+      "requires": {
+        "shell-quote": "^1.4.2"
+      }
+    },
     "p-defer": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+      "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
       "dev": true
     },
     "p-each-series": {
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
       "dev": true
     },
     "p-is-promise": {
         "tar": "^6.1.0"
       }
     },
+    "pad-right": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz",
+      "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==",
+      "dev": true,
+      "requires": {
+        "repeat-string": "^1.5.2"
+      }
+    },
     "pako": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
         "callsites": "^3.0.0"
       }
     },
+    "parents": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+      "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==",
+      "dev": true,
+      "requires": {
+        "path-platform": "~0.11.15"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
     "parse-entities": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
     "parse-filepath": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
-      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+      "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
       "dev": true,
       "requires": {
         "is-absolute": "^1.0.0",
     "parse-passwd": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
       "dev": true
     },
     "parse5": {
     "pascalcase": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
       "dev": true
     },
     "path-browserify": {
     "path-dirname": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
       "dev": true
     },
     "path-exists": {
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
     },
     "path-is-inside": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
       "dev": true
     },
     "path-key": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
       "dev": true
     },
     "path-parse": {
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
+    "path-platform": {
+      "version": "0.11.15",
+      "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+      "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==",
+      "dev": true
+    },
     "path-root": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
-      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+      "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
       "dev": true,
       "requires": {
         "path-root-regex": "^0.1.0"
     "path-root-regex": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
-      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+      "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
       "dev": true
     },
     "path-to-regexp": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
       "dev": true
     },
     "path-type": {
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true
     },
+    "pathval": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+      "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+      "dev": true
+    },
     "pause-stream": {
       "version": "0.0.11",
       "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
-      "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+      "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
       "dev": true,
       "requires": {
         "through": "~2.3"
       }
     },
+    "pbkdf2": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
     "pdfmake": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.4.tgz",
-      "integrity": "sha512-EM39waHUe/Dg1W9C3XqYbpx6tfhYyU14JHZlI1HaW0AUEY32GbkRBjDLGWo9f7z/k3ea6k1p9yyDrflnvtZS1A==",
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.5.tgz",
+      "integrity": "sha512-NlayjehMtuZEdw2Lyipf/MxOCR2vATZQ7jn8cH0/dHwsNb+mqof9/6SW4jZT5p+So4qz+0mD21KG81+dDQSEhA==",
       "dev": true,
       "requires": {
         "@foliojs-fork/linebreak": "^1.1.1",
     "pend": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
       "dev": true
     },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
       "dev": true
     },
     "picocolors": {
     "pinkie": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
       "dev": true
     },
     "pinkie-promise": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
       "dev": true,
       "requires": {
         "pinkie": "^2.0.0"
       }
     },
     "pirates": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz",
-      "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==",
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
       "dev": true
     },
     "piscina": {
       "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==",
       "dev": true
     },
+    "pngjs": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-2.3.1.tgz",
+      "integrity": "sha512-ITNPqvx+SSssNFOgHQzGG87HrqQ0g2nMSHc1jjU5Piq9xJEJ40fiFEPz0S5HSSXxBHrTnhaBHIayTO5aRfk2vw==",
+      "dev": true
+    },
+    "pngjs-image": {
+      "version": "0.11.7",
+      "resolved": "https://registry.npmjs.org/pngjs-image/-/pngjs-image-0.11.7.tgz",
+      "integrity": "sha512-JRyrmT+HXa1/gvdHpebus8TGqKa8WRgcsHz/DDalxRsMhvu6AOA99/enBFjZIPvmXVAzwKR051s80TuE1IiCpg==",
+      "dev": true,
+      "requires": {
+        "iconv-lite": "^0.4.8",
+        "pako": "^0.2.6",
+        "pngjs": "2.3.1",
+        "request": "^2.55.0",
+        "stream-buffers": "1.0.1",
+        "underscore": "1.7.0"
+      },
+      "dependencies": {
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
+          "dev": true
+        }
+      }
+    },
     "portfinder": {
-      "version": "1.0.28",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
-      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+      "version": "1.0.32",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
+      "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
       "dev": true,
       "requires": {
-        "async": "^2.6.2",
-        "debug": "^3.1.1",
-        "mkdirp": "^0.5.5"
+        "async": "^2.6.4",
+        "debug": "^3.2.7",
+        "mkdirp": "^0.5.6"
       },
       "dependencies": {
         "debug": {
           }
         },
         "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "minimist": "^1.2.6"
           }
         }
       }
     "posix-character-classes": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
       "dev": true
     },
     "postcss": {
       }
     },
     "postcss-calc": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.1.0.tgz",
-      "integrity": "sha512-XaJ+DArhRtRAzI+IqjRNTM0i4NFKkMK5StepwynfrF27UfO6/oMaELSVDE4f9ndLHyaO4aDKUwfQKVmje/BzCg==",
+      "version": "8.2.4",
+      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
+      "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
       "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
+        "postcss-selector-parser": "^6.0.9",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-color-functional-notation": {
       }
     },
     "postcss-colormin": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.2.tgz",
-      "integrity": "sha512-tSEe3NpqWARUTidDlF0LntPkdlhXqfDFuA1yslqpvvGAfpZ7oBaw+/QXd935NKm2U9p4PED0HDZlzmMk7fVC6g==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
+      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
       "dev": true,
       "requires": {
         "browserslist": "^4.16.6",
       }
     },
     "postcss-convert-values": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz",
-      "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz",
+      "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0"
+        "browserslist": "^4.20.3",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-custom-media": {
       }
     },
     "postcss-discard-comments": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz",
-      "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
       "dev": true
     },
     "postcss-discard-duplicates": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz",
-      "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
       "dev": true
     },
     "postcss-discard-empty": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz",
-      "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
       "dev": true
     },
     "postcss-discard-overridden": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz",
-      "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
       "dev": true
     },
     "postcss-double-position-gradients": {
           },
           "dependencies": {
             "domelementtype": {
-              "version": "2.2.0",
-              "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-              "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+              "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
               "dev": true
             },
             "entities": {
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
     "postcss-media-query-parser": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
-      "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
+      "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
       "dev": true
     },
     "postcss-merge-longhand": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz",
-      "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==",
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
+      "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0",
-        "stylehacks": "^5.0.1"
+        "postcss-value-parser": "^4.2.0",
+        "stylehacks": "^5.1.0"
       }
     },
     "postcss-merge-rules": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz",
-      "integrity": "sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz",
+      "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==",
       "dev": true,
       "requires": {
         "browserslist": "^4.16.6",
         "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^2.0.1",
+        "cssnano-utils": "^3.1.0",
         "postcss-selector-parser": "^6.0.5"
       }
     },
     "postcss-minify-font-values": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz",
-      "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-gradients": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz",
-      "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
       "dev": true,
       "requires": {
         "colord": "^2.9.1",
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-params": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz",
-      "integrity": "sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz",
+      "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.2",
         "browserslist": "^4.16.6",
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-selectors": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz",
-      "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==",
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.2",
         "postcss-selector-parser": "^6.0.5"
       }
     },
       }
     },
     "postcss-normalize-charset": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz",
-      "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
       "dev": true
     },
     "postcss-normalize-display-values": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz",
-      "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-positions": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz",
-      "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-repeat-style": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz",
-      "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-string": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz",
-      "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-timing-functions": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz",
-      "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-unicode": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz",
-      "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz",
+      "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.0",
-        "postcss-value-parser": "^4.1.0"
+        "browserslist": "^4.16.6",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-url": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz",
-      "integrity": "sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
       "dev": true,
       "requires": {
         "normalize-url": "^6.0.1",
       }
     },
     "postcss-normalize-whitespace": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz",
-      "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-ordered-values": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz",
-      "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-overflow-shorthand": {
       }
     },
     "postcss-reduce-initial": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz",
-      "integrity": "sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz",
+      "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==",
       "dev": true,
       "requires": {
         "browserslist": "^4.16.6",
       }
     },
     "postcss-reduce-transforms": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz",
-      "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^2.0.1",
-        "postcss-value-parser": "^4.1.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-replace-overflow-wrap": {
     "postcss-resolve-nested-selector": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
-      "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
+      "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
       "dev": true
     },
     "postcss-safe-parser": {
       }
     },
     "postcss-selector-parser": {
-      "version": "6.0.8",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz",
-      "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==",
+      "version": "6.0.10",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
       "dev": true,
       "requires": {
         "cssesc": "^3.0.0",
       }
     },
     "postcss-svgo": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz",
-      "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.1.0",
+        "postcss-value-parser": "^4.2.0",
         "svgo": "^2.7.0"
       }
     },
       "dev": true
     },
     "postcss-unique-selectors": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz",
-      "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.2",
         "postcss-selector-parser": "^6.0.5"
       }
     },
         "uniq": "^1.0.1"
       }
     },
+    "preceptor-core": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/preceptor-core/-/preceptor-core-0.10.1.tgz",
+      "integrity": "sha512-WLDk+UowEESixvlhiamGOj/iqWrp8IWeCCHvBZrLh0g4/A1Fa77fDQWqQUd5S5rScT+9u49aDfa45xYRkxqmiA==",
+      "dev": true,
+      "requires": {
+        "log4js": "1.1.1",
+        "underscore": "1.7.0"
+      }
+    },
     "prelude-ls": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
       "dev": true
     },
     "prettier": {
       }
     },
     "prismjs": {
-      "version": "1.25.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz",
-      "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg=="
+      "version": "1.28.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz",
+      "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw=="
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+      "dev": true
     },
     "process-nextick-args": {
       "version": "2.0.1",
       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "dev": true
     },
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true
+    },
     "promise": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
-      "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-6.0.0.tgz",
+      "integrity": "sha512-PjIqIEWR8EWwP5ml3Wf5KWIP3sIdXAew9vQ6vLOLV+z4LMa/8ZQyLd7sTWe2r8OuA8A9jsIYptDfbEn/L36ogw==",
       "dev": true,
       "requires": {
-        "asap": "~2.0.6"
+        "asap": "~1.0.0"
       }
     },
     "promise-inflight": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
       "dev": true
     },
     "promise-retry": {
         "xtend": "^4.0.0"
       }
     },
+    "protobufjs": {
+      "version": "6.11.3",
+      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
+      "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
+      "dev": true,
+      "requires": {
+        "@protobufjs/aspromise": "^1.1.2",
+        "@protobufjs/base64": "^1.1.2",
+        "@protobufjs/codegen": "^2.0.4",
+        "@protobufjs/eventemitter": "^1.1.0",
+        "@protobufjs/fetch": "^1.1.0",
+        "@protobufjs/float": "^1.0.2",
+        "@protobufjs/inquire": "^1.1.0",
+        "@protobufjs/path": "^1.1.2",
+        "@protobufjs/pool": "^1.1.0",
+        "@protobufjs/utf8": "^1.1.0",
+        "@types/long": "^4.0.1",
+        "@types/node": ">=13.7.0",
+        "long": "^4.0.0"
+      },
+      "dependencies": {
+        "@types/node": {
+          "version": "18.7.9",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz",
+          "integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ==",
+          "dev": true
+        }
+      }
+    },
     "proxy-addr": {
       "version": "2.0.7",
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
     "proxy-from-env": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
-      "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
+      "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==",
       "dev": true
     },
     "proxy-middleware": {
       "version": "0.15.0",
       "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz",
-      "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=",
+      "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==",
       "dev": true
     },
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
       "dev": true
     },
     "ps-tree": {
         "event-stream": {
           "version": "3.3.4",
           "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
-          "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+          "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==",
           "dev": true,
           "requires": {
             "duplexer": "~0.1.1",
         "map-stream": {
           "version": "0.1.0",
           "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
-          "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+          "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==",
           "dev": true
         },
         "split": {
           "version": "0.3.3",
           "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
-          "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+          "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==",
           "dev": true,
           "requires": {
             "through": "2"
         "stream-combiner": {
           "version": "0.0.4",
           "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
-          "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+          "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==",
           "dev": true,
           "requires": {
             "duplexer": "~0.1.1"
       }
     },
     "psl": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
       "dev": true
     },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
     "pump": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
     "punycode": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+      "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
     },
     "qs": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz",
-      "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==",
+      "version": "6.11.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
       "requires": {
         "side-channel": "^1.0.4"
       }
     "querystring": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g=="
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+      "dev": true
     },
     "querystringify": {
       "version": "2.2.0",
     "quote-stream": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz",
-      "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=",
+      "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==",
       "dev": true,
       "requires": {
         "buffer-equal": "0.0.1",
         "through2": "^2.0.0"
       }
     },
+    "randexp": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz",
+      "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==",
+      "requires": {
+        "drange": "^1.0.2",
+        "ret": "^0.2.0"
+      }
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
         "safe-buffer": "^5.1.0"
       }
     },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
     "range-parser": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
       "dev": true
     },
     "raw-body": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz",
-      "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==",
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
       "dev": true,
       "requires": {
-        "bytes": "3.1.1",
-        "http-errors": "1.8.1",
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
         "iconv-lite": "0.4.24",
         "unpipe": "1.0.0"
       },
       "dependencies": {
         "bytes": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
-          "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==",
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
           "dev": true
         }
       }
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
     },
     "react-redux": {
-      "version": "7.2.6",
-      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz",
-      "integrity": "sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ==",
+      "version": "7.2.8",
+      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz",
+      "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==",
       "requires": {
         "@babel/runtime": "^7.15.4",
         "@types/react-redux": "^7.1.20",
       }
     },
     "react-syntax-highlighter": {
-      "version": "15.4.5",
-      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz",
-      "integrity": "sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ==",
+      "version": "15.5.0",
+      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz",
+      "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==",
       "requires": {
         "@babel/runtime": "^7.3.1",
         "highlight.js": "^10.4.1",
         "lowlight": "^1.17.0",
-        "prismjs": "^1.25.0",
-        "refractor": "^3.2.0"
+        "prismjs": "^1.27.0",
+        "refractor": "^3.6.0"
       }
     },
     "read-cache": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
+      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
       "dev": true,
       "requires": {
         "pify": "^2.3.0"
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
           "dev": true
         }
       }
     },
+    "read-only-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
+      "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.2"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
     "read-package-json-fast": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
     "rechoir": {
       "version": "0.6.2",
       "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
       "dev": true,
       "requires": {
         "resolve": "^1.1.6"
       }
     },
     "redux": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz",
-      "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+      "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
       "requires": {
         "@babel/runtime": "^7.9.2"
       }
     "redux-immutable": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz",
-      "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM="
+      "integrity": "sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg=="
     },
     "reflect-metadata": {
       "version": "0.1.13",
       "dev": true
     },
     "refractor": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.5.0.tgz",
-      "integrity": "sha512-QwPJd3ferTZ4cSPPjdP5bsYHMytwWYnAN5EEnLtGvkqp/FCCnGsBgxrm9EuIDnjUC3Uc/kETtvVi7fSIVC74Dg==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
+      "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
       "requires": {
         "hastscript": "^6.0.0",
         "parse-entities": "^2.0.0",
-        "prismjs": "~1.25.0"
+        "prismjs": "~1.27.0"
+      },
+      "dependencies": {
+        "prismjs": {
+          "version": "1.27.0",
+          "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
+          "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA=="
+        }
       }
     },
     "regenerate": {
       "dev": true
     },
     "regenerate-unicode-properties": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
-      "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+      "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
       "dev": true,
       "requires": {
         "regenerate": "^1.4.2"
       "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
     },
     "regenerator-transform": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
-      "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.8.4"
       "dev": true
     },
     "regexp.prototype.flags": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
-      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "define-properties": "^1.1.3",
+        "functions-have-names": "^1.2.2"
       }
     },
     "regexpu-core": {
-      "version": "4.8.0",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
-      "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz",
+      "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==",
       "dev": true,
       "requires": {
         "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^9.0.0",
-        "regjsgen": "^0.5.2",
-        "regjsparser": "^0.7.0",
+        "regenerate-unicode-properties": "^10.0.1",
+        "regjsgen": "^0.6.0",
+        "regjsparser": "^0.8.2",
         "unicode-match-property-ecmascript": "^2.0.0",
         "unicode-match-property-value-ecmascript": "^2.0.0"
       }
     },
     "regjsgen": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
-      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
+      "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
       "dev": true
     },
     "regjsparser": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
-      "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+      "version": "0.8.4",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
+      "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
       "dev": true,
       "requires": {
         "jsesc": "~0.5.0"
         "jsesc": {
           "version": "0.5.0",
           "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
           "dev": true
         }
       }
     "remove-trailing-separator": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
       "dev": true
     },
     "repeat-element": {
     "repeat-string": {
       "version": "1.6.1",
       "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w=="
     },
     "request": {
       "version": "2.88.2",
       },
       "dependencies": {
         "qs": {
-          "version": "6.5.2",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+          "version": "6.5.3",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+          "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
           "dev": true
         },
         "uuid": {
     "request-progress": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
-      "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
+      "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
       "dev": true,
       "requires": {
         "throttleit": "^1.0.0"
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
     },
     "require-from-string": {
       "version": "2.0.2",
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
     },
     "reselect": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz",
-      "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ=="
+      "version": "4.1.6",
+      "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz",
+      "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ=="
     },
     "resolve": {
-      "version": "1.21.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
-      "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
       "requires": {
-        "is-core-module": "^2.8.0",
+        "is-core-module": "^2.9.0",
         "path-parse": "^1.0.7",
         "supports-preserve-symlinks-flag": "^1.0.0"
       }
     },
+    "resolve-as-bin": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/resolve-as-bin/-/resolve-as-bin-2.1.0.tgz",
+      "integrity": "sha512-ileUuPIOP+xj+GS/d/EbB2XqRA8T2IeZTFkMggNIW2Mo72VyBMbq+HvIAxdW0ED9D44aEzJwHvUtbMm2PJT5Kw==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.5"
+      }
+    },
     "resolve-cwd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
       "dev": true,
       "requires": {
         "resolve-from": "^3.0.0"
         "resolve-from": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
           "dev": true
         }
       }
     "resolve-dir": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
-      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+      "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
       "dev": true,
       "requires": {
         "expand-tilde": "^2.0.0",
     "resolve-url": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
       "dev": true
     },
     "resolve-url-loader": {
       }
     },
     "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
+      "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ=="
     },
     "retry": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
       "dev": true
     },
     "reusify": {
         "glob": "^7.1.3"
       }
     },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
     "rsvp": {
       "version": "4.8.5",
       "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
     "safe-regex": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
       "dev": true,
       "requires": {
         "ret": "~0.1.10"
+      },
+      "dependencies": {
+        "ret": {
+          "version": "0.1.15",
+          "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+          "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+          "dev": true
+        }
       }
     },
     "safer-buffer": {
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
         "normalize-path": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+          "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
           "dev": true,
           "requires": {
             "remove-trailing-separator": "^1.0.1"
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
         "get-assigned-identifiers": "^1.1.0"
       }
     },
+    "seed-random": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz",
+      "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==",
+      "dev": true
+    },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
       "dev": true
     },
     "selfsigned": {
-      "version": "1.10.11",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz",
-      "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==",
+      "version": "1.10.14",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
+      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
       "dev": true,
       "requires": {
         "node-forge": "^0.10.0"
     "semver-dsl": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
-      "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
+      "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==",
       "dev": true,
       "requires": {
         "semver": "^5.3.0"
       }
     },
     "send": {
-      "version": "0.17.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
-      "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
       "dev": true,
       "requires": {
         "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
         "fresh": "0.5.2",
-        "http-errors": "1.8.1",
+        "http-errors": "2.0.0",
         "mime": "1.6.0",
         "ms": "2.1.3",
-        "on-finished": "~2.3.0",
+        "on-finished": "2.4.1",
         "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
+        "statuses": "2.0.1"
       },
       "dependencies": {
         "debug": {
             "ms": {
               "version": "2.0.0",
               "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
               "dev": true
             }
           }
     "serve-index": {
       "version": "1.9.1",
       "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.4",
             "ms": "2.0.0"
           }
         },
+        "depd": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+          "dev": true
+        },
         "http-errors": {
           "version": "1.6.3",
           "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
           "dev": true,
           "requires": {
             "depd": "~1.1.2",
         "inherits": {
           "version": "2.0.3",
           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
           "dev": true
         },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "setprototypeof": {
           "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
           "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
           "dev": true
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+          "dev": true
         }
       }
     },
     "serve-static": {
-      "version": "1.14.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
-      "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
       "dev": true,
       "requires": {
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "parseurl": "~1.3.3",
-        "send": "0.17.2"
+        "send": "0.18.0"
       }
     },
     "set-blocking": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
       "dev": true
     },
     "set-value": {
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
       "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
       "dev": true,
       "requires": {
-        "kind-of": "^6.0.2"
+        "kind-of": "^6.0.2"
+      }
+    },
+    "shallow-copy": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
+      "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==",
+      "dev": true
+    },
+    "shasum": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
+      "integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==",
+      "dev": true,
+      "requires": {
+        "json-stable-stringify": "~0.0.0",
+        "sha.js": "~2.4.4"
+      }
+    },
+    "shasum-object": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz",
+      "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==",
+      "dev": true,
+      "requires": {
+        "fast-safe-stringify": "^2.0.7"
       }
     },
-    "shallow-copy": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
-      "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=",
-      "dev": true
-    },
     "shebang-command": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
       "dev": true,
       "requires": {
         "shebang-regex": "^1.0.0"
     "shebang-regex": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
       "dev": true
     },
     "shell-quote": {
       }
     },
     "signal-exit": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
-      "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==",
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
       "dev": true
     },
     "simplebar": {
-      "version": "5.3.6",
-      "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-5.3.6.tgz",
-      "integrity": "sha512-FJUMbV+hNDd/m+1/fvD41TXKd5mSdlI5zgBygkaQIV3SffNbcLhSbJT6ufTs8ZNRLJ6i+qc/KCFMqWmvlGWMhA==",
+      "version": "5.3.8",
+      "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-5.3.8.tgz",
+      "integrity": "sha512-LOHjyOcihx++zFN+vuktoZBGpCarFCtHIVDWXOf2VELbGDknq3Hw/sddafRp1aCg123VNkHWOFHUDHYEXAtufQ==",
       "requires": {
         "@juggle/resize-observer": "^3.3.1",
         "can-use-dom": "^0.1.0",
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
       }
     },
     "sockjs-client": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz",
-      "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==",
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
+      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
       "dev": true,
       "requires": {
-        "debug": "^3.2.6",
-        "eventsource": "^1.0.7",
-        "faye-websocket": "^0.11.3",
+        "debug": "^3.2.7",
+        "eventsource": "^2.0.2",
+        "faye-websocket": "^0.11.4",
         "inherits": "^2.0.4",
-        "json3": "^3.3.3",
-        "url-parse": "^1.5.3"
+        "url-parse": "^1.5.10"
       },
       "dependencies": {
         "debug": {
       }
     },
     "socks": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz",
-      "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
+      "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
       "dev": true,
       "requires": {
-        "ip": "^1.1.5",
-        "smart-buffer": "^4.1.0"
+        "ip": "^2.0.0",
+        "smart-buffer": "^4.2.0"
+      },
+      "dependencies": {
+        "ip": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+          "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+          "dev": true
+        }
       }
     },
     "socks-proxy-agent": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz",
-      "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==",
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
+      "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
       "dev": true,
       "requires": {
         "agent-base": "^6.0.2",
-        "debug": "^4.3.1",
-        "socks": "^2.6.1"
+        "debug": "^4.3.3",
+        "socks": "^2.6.2"
       }
     },
     "source-list-map": {
     "source-map": {
       "version": "0.5.7",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
     },
     "source-map-js": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
-      "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
       "dev": true
     },
     "source-map-loader": {
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
     },
     "sshpk": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "version": "1.17.0",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
+      "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
       "dev": true,
       "requires": {
         "asn1": "~0.2.3",
       "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
       "dev": true
     },
+    "stack-chain": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz",
+      "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==",
+      "dev": true
+    },
+    "stack-generator": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+      "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+      "dev": true,
+      "requires": {
+        "stackframe": "^1.3.4"
+      }
+    },
     "stack-trace": {
       "version": "0.0.10",
       "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+      "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
       "dev": true
     },
     "stack-utils": {
         }
       }
     },
+    "stackframe": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+      "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+      "dev": true
+    },
+    "stacktrace-gps": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
+      "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
+      "dev": true,
+      "requires": {
+        "source-map": "0.5.6",
+        "stackframe": "^1.3.4"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+          "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
+          "dev": true
+        }
+      }
+    },
+    "stacktrace-js": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
+      "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
+      "dev": true,
+      "requires": {
+        "error-stack-parser": "^2.0.6",
+        "stack-generator": "^2.0.5",
+        "stacktrace-gps": "^3.0.4"
+      }
+    },
     "start-server-and-test": {
       "version": "1.12.1",
       "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.12.1.tgz",
     "static-extend": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
       "dev": true,
       "requires": {
         "define-property": "^0.2.5",
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
         "merge-source-map": {
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
-          "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
+          "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==",
           "dev": true,
           "requires": {
             "source-map": "^0.5.6"
       }
     },
     "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
       "dev": true
     },
     "stealthy-require": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
-      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+      "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
+    "stream-buffers": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-1.0.1.tgz",
+      "integrity": "sha512-t+8bSU8qPq7NnWHWAvikjcZf+biErLZzD15RroYft1IKQwYbkRyiwppT7kNqwdtYLS59YPxc4sTSvwbLSMaodw==",
       "dev": true
     },
     "stream-combiner": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
-      "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
+      "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==",
       "dev": true,
       "requires": {
         "duplexer": "~0.1.1",
         "through": "~2.3.4"
       }
     },
+    "stream-combiner2": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+      "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
+      "dev": true,
+      "requires": {
+        "duplexer2": "~0.1.0",
+        "readable-stream": "^2.0.2"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
+    "stream-http": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+      "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "xtend": "^4.0.2"
+      }
+    },
+    "stream-splicer": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz",
+      "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.2"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
+    "streamroller": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.4.1.tgz",
+      "integrity": "sha512-w0GGkMlWOiIBIYTmOWHTWKy9Y5hKxGKpQ5WpiHqwhvoSoMHXNTITrk6ZsR3fdgz3Bi/c+CXVHwmfPUQFkEPL+A==",
+      "dev": true,
+      "requires": {
+        "date-format": "^0.0.0",
+        "debug": "^0.7.2",
+        "mkdirp": "^0.5.1",
+        "readable-stream": "^1.1.7"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "0.7.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+          "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==",
+          "dev": true
+        },
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.6"
+          }
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+          "dev": true
+        }
+      }
+    },
+    "string-argv": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz",
+      "integrity": "sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==",
+      "dev": true
+    },
     "string-length": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
       }
     },
     "string.prototype.trimend": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
-      "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+      "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "define-properties": "^1.1.4",
+        "es-abstract": "^1.19.5"
       }
     },
     "string.prototype.trimstart": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
-      "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+      "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "define-properties": "^1.1.4",
+        "es-abstract": "^1.19.5"
       }
     },
     "string_decoder": {
     "strip-eof": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
       "dev": true
     },
     "strip-final-newline": {
         "min-indent": "^1.0.0"
       }
     },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
     "style-loader": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz",
     "style-search": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
-      "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=",
+      "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
       "dev": true
     },
     "stylehacks": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz",
-      "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
+      "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.0",
+        "browserslist": "^4.16.6",
         "postcss-selector-parser": "^6.0.4"
       }
     },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "semver": {
           "dev": true
         },
         "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "version": "0.7.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
           "dev": true
         }
       }
         "normalize-path": "^3.0.0"
       }
     },
+    "subarg": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+      "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.1.0"
+      }
+    },
     "sugarss": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz",
     "svg-tags": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
-      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
       "dev": true
     },
     "svgo": {
       }
     },
     "swagger-client": {
-      "version": "3.18.0",
-      "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz",
-      "integrity": "sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA==",
+      "version": "3.18.5",
+      "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.5.tgz",
+      "integrity": "sha512-c0txGDtfQTJnaIBaEKCwtRNcUaaAfj+RXI4QVV9p3WW+AUCQqp4naCjaDNNsOfMkE4ySyhnblbL+jGqAVC7snw==",
       "requires": {
         "@babel/runtime-corejs3": "^7.11.2",
-        "btoa": "^1.2.1",
-        "cookie": "~0.4.1",
-        "cross-fetch": "^3.1.4",
-        "deep-extend": "~0.6.0",
+        "cookie": "~0.5.0",
+        "cross-fetch": "^3.1.5",
+        "deepmerge": "~4.2.2",
         "fast-json-patch": "^3.0.0-1",
         "form-data-encoder": "^1.4.3",
         "formdata-node": "^4.0.0",
       }
     },
     "swagger-ui": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/swagger-ui/-/swagger-ui-4.1.3.tgz",
-      "integrity": "sha512-UmM4cu1Wvtg8+JzLLWMjExT7M8d8Fy+4utPtRBXrr8FTp0Q3izu7Ppl+V6ttzebUzxoKMpopwY6RK05C3fhmBg==",
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/swagger-ui/-/swagger-ui-4.12.0.tgz",
+      "integrity": "sha512-ffNcDTQFWu5dEzJywQ4QEcgQZlBaHaeYCjifuWePds8anzqCZXVpeJSD7RCirUs+8D051YevRSu3ZjqNUNyvrQ==",
       "requires": {
-        "@babel/runtime-corejs3": "^7.16.3",
-        "@braintree/sanitize-url": "^5.0.2",
+        "@babel/runtime-corejs3": "^7.16.8",
+        "@braintree/sanitize-url": "=6.0.0",
         "base64-js": "^1.5.1",
         "classnames": "^2.3.1",
         "css.escape": "1.5.1",
         "js-file-download": "^0.4.12",
         "js-yaml": "=4.1.0",
         "lodash": "^4.17.21",
-        "memoizee": "^0.4.15",
-        "prop-types": "^15.7.2",
+        "prop-types": "^15.8.1",
+        "randexp": "^0.5.3",
         "randombytes": "^2.1.0",
         "react": "=17.0.2",
         "react-copy-to-clipboard": "5.0.4",
         "redux": "^4.1.2",
         "redux-immutable": "^4.0.0",
         "remarkable": "^2.0.1",
-        "reselect": "^4.0.0",
+        "reselect": "^4.1.5",
         "serialize-error": "^8.1.0",
         "sha.js": "^2.4.11",
-        "swagger-client": "^3.17.0",
-        "url-parse": "^1.5.3",
+        "swagger-client": "^3.18.5",
+        "url-parse": "^1.5.8",
         "xml": "=1.0.1",
         "xml-but-prettier": "^1.0.1",
         "zenscroll": "^4.0.2"
       "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
       "dev": true
     },
+    "syntax-error": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
+      "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
+      "dev": true,
+      "requires": {
+        "acorn-node": "^1.2.0"
+      }
+    },
     "table": {
-      "version": "6.7.5",
-      "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz",
-      "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==",
+      "version": "6.8.0",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz",
+      "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
       "dev": true,
       "requires": {
         "ajv": "^8.0.1",
           "dev": true
         },
         "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "version": "0.7.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
           "dev": true
         }
       }
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
       "dev": true
     },
+    "thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+      "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+      "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+      "dev": true,
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
     "throat": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
     "throttleit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
-      "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+      "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==",
       "dev": true
     },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
       "dev": true
     },
     "through2": {
     "time-stamp": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
-      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+      "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
       "dev": true
     },
-    "timers-ext": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
-      "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+    "timers-browserify": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
+      "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==",
+      "dev": true,
       "requires": {
-        "es5-ext": "~0.10.46",
-        "next-tick": "1"
+        "process": "~0.11.0"
       }
     },
-    "timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
-      "dev": true
-    },
     "tiny-inflate": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
       "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
       "dev": true
     },
+    "title-case": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz",
+      "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.0.3"
+      }
+    },
     "tmp": {
       "version": "0.0.33",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
     },
     "to-object-path": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
     "toggle-selection": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
-      "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI="
+      "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
     },
     "toidentifier": {
       "version": "1.0.1",
       }
     },
     "tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
+    "tracelib": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-          "dev": true
-        }
-      }
+      "resolved": "https://registry.npmjs.org/tracelib/-/tracelib-1.0.1.tgz",
+      "integrity": "sha512-T2Vkpa/7Vdm3sV8nXRn8vZ0tnq6wlnO4Zx7Pux+JA1W6DMlg5EtbNcPZu/L7XRTPc9S0eAKhEFR4p/u0GcsDpQ==",
+      "dev": true
     },
     "transifex-i18ntool": {
       "version": "1.1.0",
     "traverse": {
       "version": "0.6.6",
       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
-      "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
+      "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw=="
     },
     "tree-kill": {
       "version": "1.2.2",
         "semver": "7.x",
         "yargs-parser": "20.x"
       },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+      "dependencies": {
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
         }
       }
     },
+    "ts-loader": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz",
+      "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.3.0",
+        "enhanced-resolve": "^4.0.0",
+        "loader-utils": "^1.0.2",
+        "micromatch": "^4.0.0",
+        "semver": "^6.0.0"
+      },
+      "dependencies": {
+        "enhanced-resolve": {
+          "version": "4.5.0",
+          "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+          "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "memory-fs": "^0.5.0",
+            "tapable": "^1.0.0"
+          }
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+          "dev": true
+        }
+      }
+    },
     "ts-morph": {
       "version": "12.2.0",
       "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-12.2.0.tgz",
         "make-error": "^1.1.1",
         "source-map-support": "^0.5.17",
         "yn": "3.1.1"
+      },
+      "dependencies": {
+        "diff": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+          "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+          "dev": true
+        }
       }
     },
     "tslib": {
           "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
           "dev": true
         },
+        "diff": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+          "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+          "dev": true
+        },
         "js-yaml": {
           "version": "3.14.1",
           "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
           }
         },
         "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "minimist": "^1.2.6"
           }
         },
         "tslib": {
         }
       }
     },
+    "tty-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+      "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+      "dev": true
+    },
     "tunnel": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
     "tunnel-agent": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
       "dev": true,
       "requires": {
         "safe-buffer": "^5.0.1"
     "tweetnacl": {
       "version": "0.14.5",
       "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
       "dev": true
     },
     "type": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
-      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+      "dev": true
     },
     "type-check": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
       "dev": true,
       "requires": {
         "prelude-ls": "~1.1.2"
     "typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
       "dev": true
     },
     "typedarray-to-buffer": {
       "dev": true
     },
     "uglify-js": {
-      "version": "3.14.5",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz",
-      "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==",
+      "version": "3.17.0",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz",
+      "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==",
       "dev": true,
       "optional": true
     },
+    "umd": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
+      "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
+      "dev": true
+    },
     "unbox-primitive": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
-      "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
       "dev": true,
       "requires": {
-        "function-bind": "^1.1.1",
-        "has-bigints": "^1.0.1",
-        "has-symbols": "^1.0.2",
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
         "which-boxed-primitive": "^1.0.2"
       }
     },
     "unc-path-regex": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
-      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+      "dev": true
+    },
+    "undeclared-identifiers": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz",
+      "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==",
+      "dev": true,
+      "requires": {
+        "acorn-node": "^1.3.0",
+        "dash-ast": "^1.0.0",
+        "get-assigned-identifiers": "^1.2.0",
+        "simple-concat": "^1.0.0",
+        "xtend": "^4.0.1"
+      },
+      "dependencies": {
+        "dash-ast": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
+          "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
+          "dev": true
+        }
+      }
+    },
+    "underscore": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+      "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==",
       "dev": true
     },
     "unicode-canonical-property-names-ecmascript": {
       "dev": true
     },
     "unicode-properties": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz",
-      "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz",
+      "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
       "dev": true,
       "requires": {
         "base64-js": "^1.3.0",
         "pako": {
           "version": "0.2.9",
           "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
-          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+          "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
           "dev": true
         }
       }
     "uniq": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
       "dev": true
     },
     "unique-filename": {
     "unpipe": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
       "dev": true
     },
     "unset-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
       "dev": true,
       "requires": {
         "has-value": "^0.3.1",
         "has-value": {
           "version": "0.3.1",
           "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
           "dev": true,
           "requires": {
             "get-value": "^2.0.3",
             "isobject": {
               "version": "2.1.0",
               "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
               "dev": true,
               "requires": {
                 "isarray": "1.0.0"
         "has-values": {
           "version": "0.1.4",
           "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
           "dev": true
         }
       }
       "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
       "dev": true
     },
+    "update-browserslist-db": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
+      "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
+      "dev": true,
+      "requires": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      }
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+      "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+      "dev": true
+    },
     "uri-js": {
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
     "urix": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
       "dev": true
     },
     "url": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
       "requires": {
         "punycode": "1.3.2",
         "querystring": "0.2.0"
       }
     },
     "url-parse": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz",
-      "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==",
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
       "requires": {
         "querystringify": "^2.1.1",
         "requires-port": "^1.0.0"
       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
       "dev": true
     },
+    "util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+          "dev": true
+        }
+      }
+    },
+    "util-arity": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz",
+      "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==",
+      "dev": true
+    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "dev": true
     },
     "utils-merge": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
       "dev": true
     },
     "uuid": {
       },
       "dependencies": {
         "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "version": "0.7.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
           "dev": true
         }
       }
     "validate-npm-package-name": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
-      "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
+      "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
       "dev": true,
       "requires": {
         "builtins": "^1.0.3"
     "vary": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
       "dev": true
     },
     "verror": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
       "dev": true,
       "requires": {
         "assert-plus": "^1.0.0",
         "core-util-is": {
           "version": "1.0.2",
           "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+          "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
           "dev": true
         }
       }
         "unist-util-stringify-position": "^2.0.0"
       }
     },
+    "vm-browserify": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+      "dev": true
+    },
     "w3c-hr-time": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
         "domexception": "^1.0.1",
         "webidl-conversions": "^4.0.2",
         "xml-name-validator": "^3.0.0"
+      },
+      "dependencies": {
+        "webidl-conversions": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+          "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+          "dev": true
+        }
       }
     },
     "wait-on": {
         "makeerror": "1.0.12"
       }
     },
+    "watchify": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz",
+      "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==",
+      "dev": true,
+      "requires": {
+        "anymatch": "^3.1.0",
+        "browserify": "^17.0.0",
+        "chokidar": "^3.4.0",
+        "defined": "^1.0.0",
+        "outpipe": "^1.1.0",
+        "through2": "^4.0.2",
+        "xtend": "^4.0.2"
+      },
+      "dependencies": {
+        "browser-resolve": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
+          "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+          "dev": true,
+          "requires": {
+            "resolve": "^1.17.0"
+          }
+        },
+        "browserify": {
+          "version": "17.0.0",
+          "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz",
+          "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==",
+          "dev": true,
+          "requires": {
+            "JSONStream": "^1.0.3",
+            "assert": "^1.4.0",
+            "browser-pack": "^6.0.1",
+            "browser-resolve": "^2.0.0",
+            "browserify-zlib": "~0.2.0",
+            "buffer": "~5.2.1",
+            "cached-path-relative": "^1.0.0",
+            "concat-stream": "^1.6.0",
+            "console-browserify": "^1.1.0",
+            "constants-browserify": "~1.0.0",
+            "crypto-browserify": "^3.0.0",
+            "defined": "^1.0.0",
+            "deps-sort": "^2.0.1",
+            "domain-browser": "^1.2.0",
+            "duplexer2": "~0.1.2",
+            "events": "^3.0.0",
+            "glob": "^7.1.0",
+            "has": "^1.0.0",
+            "htmlescape": "^1.1.0",
+            "https-browserify": "^1.0.0",
+            "inherits": "~2.0.1",
+            "insert-module-globals": "^7.2.1",
+            "labeled-stream-splicer": "^2.0.0",
+            "mkdirp-classic": "^0.5.2",
+            "module-deps": "^6.2.3",
+            "os-browserify": "~0.3.0",
+            "parents": "^1.0.1",
+            "path-browserify": "^1.0.0",
+            "process": "~0.11.0",
+            "punycode": "^1.3.2",
+            "querystring-es3": "~0.2.0",
+            "read-only-stream": "^2.0.0",
+            "readable-stream": "^2.0.2",
+            "resolve": "^1.1.4",
+            "shasum-object": "^1.0.0",
+            "shell-quote": "^1.6.1",
+            "stream-browserify": "^3.0.0",
+            "stream-http": "^3.0.0",
+            "string_decoder": "^1.1.1",
+            "subarg": "^1.0.0",
+            "syntax-error": "^1.1.1",
+            "through2": "^2.0.0",
+            "timers-browserify": "^1.0.1",
+            "tty-browserify": "0.0.1",
+            "url": "~0.11.0",
+            "util": "~0.12.0",
+            "vm-browserify": "^1.0.0",
+            "xtend": "^4.0.0"
+          },
+          "dependencies": {
+            "through2": {
+              "version": "2.0.5",
+              "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+              "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+              "dev": true,
+              "requires": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+              }
+            }
+          }
+        },
+        "buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
+          "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+          "dev": true,
+          "requires": {
+            "base64-js": "^1.0.2",
+            "ieee754": "^1.1.4"
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          },
+          "dependencies": {
+            "string_decoder": {
+              "version": "1.1.1",
+              "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+              "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+              "dev": true,
+              "requires": {
+                "safe-buffer": "~5.1.0"
+              }
+            }
+          }
+        },
+        "stream-browserify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+          "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+          "dev": true,
+          "requires": {
+            "inherits": "~2.0.4",
+            "readable-stream": "^3.5.0"
+          },
+          "dependencies": {
+            "readable-stream": {
+              "version": "3.6.0",
+              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+              "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+              "dev": true,
+              "requires": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+              }
+            }
+          }
+        },
+        "through2": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+          "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+          "dev": true,
+          "requires": {
+            "readable-stream": "3"
+          },
+          "dependencies": {
+            "readable-stream": {
+              "version": "3.6.0",
+              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+              "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+              "dev": true,
+              "requires": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+              }
+            }
+          }
+        },
+        "util": {
+          "version": "0.12.4",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
+          "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "is-arguments": "^1.0.4",
+            "is-generator-function": "^1.0.7",
+            "is-typed-array": "^1.1.3",
+            "safe-buffer": "^5.1.2",
+            "which-typed-array": "^1.1.2"
+          }
+        }
+      }
+    },
     "watchpack": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
-      "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
       "dev": true,
       "requires": {
         "glob-to-regexp": "^0.4.1",
     "wcwidth": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
       "dev": true,
       "requires": {
         "defaults": "^1.0.3"
       }
     },
     "web-streams-polyfill": {
-      "version": "4.0.0-beta.1",
-      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz",
-      "integrity": "sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ=="
+      "version": "4.0.0-beta.3",
+      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
+      "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="
     },
     "webidl-conversions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
-      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
-      "dev": true
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
     },
     "webpack": {
       "version": "5.50.0",
           }
         },
         "webpack-sources": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz",
-          "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==",
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+          "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
           "dev": true
         }
       }
         "ansi-regex": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
           "dev": true
         },
         "anymatch": {
             "normalize-path": {
               "version": "2.1.1",
               "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
               "dev": true,
               "requires": {
                 "remove-trailing-separator": "^1.0.1"
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
           },
           "dependencies": {
             "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "version": "4.1.1",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+              "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
               "dev": true
             },
             "strip-ansi": {
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "extend-shallow": {
               "version": "2.0.1",
               "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
               "dev": true,
               "requires": {
                 "is-extendable": "^0.1.0"
         "glob-parent": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
           "dev": true,
           "requires": {
             "is-glob": "^3.1.0",
             "is-glob": {
               "version": "3.1.0",
               "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
               "dev": true,
               "requires": {
                 "is-extglob": "^2.1.0"
         "is-binary-path": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
           "dev": true,
           "requires": {
             "binary-extensions": "^1.0.0"
         "is-fullwidth-code-point": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
           "dev": true
         },
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
           "dev": true
         },
         "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "minimist": "^1.2.6"
           }
         },
         "p-locate": {
         "path-exists": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
           "dev": true
         },
         "readable-stream": {
           },
           "dependencies": {
             "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "version": "4.1.1",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+              "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
               "dev": true
             },
             "strip-ansi": {
         "strip-ansi": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
           "dev": true,
           "requires": {
             "ansi-regex": "^2.0.0"
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
           },
           "dependencies": {
             "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "version": "4.1.1",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+              "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
               "dev": true
             },
             "strip-ansi": {
       "dev": true
     },
     "whatwg-url": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
-      "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
-      "dev": true,
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
       "requires": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
       }
     },
     "which": {
     "which-module": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
       "dev": true
     },
+    "which-typed-array": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+      "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+      "dev": true,
+      "requires": {
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "es-abstract": "^1.20.0",
+        "for-each": "^0.3.3",
+        "has-tostringtag": "^1.0.0",
+        "is-typed-array": "^1.1.9"
+      }
+    },
     "wide-align": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
     "wordwrap": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+      "dev": true
+    },
+    "workerpool": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+      "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
       "dev": true
     },
     "wrap-ansi": {
     "wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     },
     "write-file-atomic": {
       "version": "3.0.3",
     "xml": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
-      "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU="
+      "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw=="
     },
     "xml-but-prettier": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz",
-      "integrity": "sha1-9aMyZ+1CzNTjVcYlV6XjmwH7QPM=",
+      "integrity": "sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==",
       "requires": {
         "repeat-string": "^1.5.2"
       }
       "dev": true
     },
     "xmldoc": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
-      "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.2.0.tgz",
+      "integrity": "sha512-2eN8QhjBsMW2uVj7JHLHkMytpvGHLHxKXBy4J3fAT/HujsEtM6yU84iGjpESYGHg6XwK0Vu4l+KgqQ2dv2cCqg==",
       "dev": true,
       "requires": {
-        "sax": "^1.2.1"
+        "sax": "^1.2.4"
       }
     },
     "xtend": {
       "dev": true
     },
     "yargs": {
-      "version": "17.3.1",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
-      "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
+      "version": "17.5.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
+      "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
       "requires": {
         "cliui": "^7.0.2",
         "escalade": "^3.1.1",
       }
     },
     "yargs-parser": {
-      "version": "21.0.0",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz",
-      "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA=="
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
+    },
+    "yargs-unparser": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+      "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^6.0.0",
+        "decamelize": "^4.0.0",
+        "flat": "^5.0.2",
+        "is-plain-obj": "^2.1.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+          "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+          "dev": true
+        },
+        "decamelize": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+          "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+          "dev": true
+        }
+      }
     },
     "yauzl": {
       "version": "2.10.0",
       "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
       "dev": true,
       "requires": {
         "buffer-crc32": "~0.2.3",
     "zenscroll": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz",
-      "integrity": "sha1-6NV3TRwHOKR7z6hynzcS4t7d6yU="
+      "integrity": "sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg=="
     },
     "zone.js": {
       "version": "0.10.3",
index e2d19f334c0153e9d768b795dadf32e4024d40e0..722baa8dc58f34cd26702cf1e5a85c22e551be5d 100644 (file)
@@ -25,6 +25,7 @@
     "pree2e:ci": "npm run pree2e",
     "e2e:ci": "start-test 4200 'cypress run -b chrome --headless'",
     "lint:tslint": "ng lint",
+    "lint:gherkin": "gherkin-lint -c .gherkin-lintrc cypress/integration",
     "lint:prettier": "prettier --list-different \"{src,cypress}/**/*.{ts,scss}\"",
     "lint:html": "htmllint src/app/**/*.html && html-linter --config html-linter.config.json",
     "prelint:tsc": "npm run postinstall",
@@ -52,7 +53,7 @@
       "<rootDir>/src/setupJest.ts"
     ],
     "transformIgnorePatterns": [
-      "node_modules/(?!@ngrx|@progress|simplebar|lodash-es)"
+      "node_modules/(?!@ngrx|@progress|simplebar|lodash-es|react-syntax-highlighter|swagger-client)"
     ],
     "transform": {
       "^.+\\.(ts|html)$": "ts-jest",
@@ -94,7 +95,7 @@
     "file-saver": "2.0.2",
     "fork-awesome": "1.1.7",
     "lodash": "4.17.21",
-    "moment": "2.29.1",
+    "moment": "2.29.3",
     "ng-block-ui": "3.0.2",
     "ng-click-outside": "7.0.0",
     "ng2-charts": "2.4.2",
     "ngx-toastr": "14.1.4",
     "rxjs": "6.6.3",
     "simplebar-angular": "2.3.6",
-    "swagger-ui": "4.1.3",
+    "swagger-ui": "4.12.0",
     "tslib": "2.3.1"
   },
   "devDependencies": {
     "@angular/language-service": "12.2.13",
     "@applitools/eyes-cypress": "3.22.5",
     "@compodoc/compodoc": "1.1.15",
+    "@cypress/browserify-preprocessor": "3.0.2",
+    "@grafana/e2e": "8.4.5",
     "@types/brace-expansion": "1.1.0",
+    "@types/cypress-cucumber-preprocessor": "4.0.1",
     "@types/jest": "26.0.14",
     "@types/lodash": "4.14.161",
     "@types/node": "12.12.62",
     "@types/simplebar": "5.1.1",
     "@types/swagger-ui": "3.52.0",
     "codelyzer": "6.0.2",
-    "cypress": "9.0.0",
+    "cypress": "9.7.0",
+    "cypress-cucumber-preprocessor": "4.3.1",
+    "cypress-iframe": "1.0.1",
     "cypress-multi-reporters": "1.5.0",
+    "gherkin-lint": "4.2.2",
     "html-linter": "1.1.1",
     "htmllint-cli": "0.0.7",
     "identity-obj-proxy": "3.0.0",
     "ts-node": "9.0.0",
     "tslint": "6.1.3",
     "typescript": "4.3.5"
+  },
+  "cypress-cucumber-preprocessor": {
+    "nonGlobalStepDefinitions": true
   }
 }
index 959cb376997029d950661a888af9c8ca039426fb..4a490728b7cb41980d47e4ebe8e36b77c9996b88 100644 (file)
@@ -96,7 +96,7 @@ const routes: Routes = [
         canActivate: [ModuleStatusGuardService],
         data: {
           moduleStatusGuardConfig: {
-            apiPath: 'orchestrator',
+            uiApiPath: 'orchestrator',
             redirectTo: 'dashboard',
             backend: 'cephadm'
           },
@@ -126,7 +126,7 @@ const routes: Routes = [
         canActivate: [ModuleStatusGuardService],
         data: {
           moduleStatusGuardConfig: {
-            apiPath: 'orchestrator',
+            uiApiPath: 'orchestrator',
             redirectTo: 'error',
             section: 'orch',
             section_info: 'Orchestrator',
@@ -153,7 +153,7 @@ const routes: Routes = [
         component: InventoryComponent,
         data: {
           moduleStatusGuardConfig: {
-            apiPath: 'orchestrator',
+            uiApiPath: 'orchestrator',
             redirectTo: 'error',
             section: 'orch',
             section_info: 'Orchestrator',
@@ -298,7 +298,7 @@ const routes: Routes = [
         canActivateChild: [FeatureTogglesGuardService, ModuleStatusGuardService],
         data: {
           moduleStatusGuardConfig: {
-            apiPath: 'rgw',
+            uiApiPath: 'rgw',
             redirectTo: 'error',
             section: 'rgw',
             section_info: 'Object Gateway',
@@ -335,7 +335,7 @@ const routes: Routes = [
         canActivateChild: [FeatureTogglesGuardService, ModuleStatusGuardService],
         data: {
           moduleStatusGuardConfig: {
-            apiPath: 'nfs-ganesha',
+            uiApiPath: 'nfs-ganesha',
             redirectTo: 'error',
             section: 'nfs-ganesha',
             section_info: 'NFS GANESHA',
index 472fe37f19fa60fe67f552d94eb7fa4ff2140471..8a13f1c6925cbb83c367ed6551a412fd272d0c73 100644 (file)
@@ -9,6 +9,7 @@ import { NgxPipeFunctionModule } from 'ngx-pipe-function';
 
 import { ActionLabels, URLVerbs } from '~/app/shared/constants/app.constants';
 import { FeatureTogglesGuardService } from '~/app/shared/services/feature-toggles-guard.service';
+import { ModuleStatusGuardService } from '~/app/shared/services/module-status-guard.service';
 import { SharedModule } from '~/app/shared/shared.module';
 import { IscsiSettingComponent } from './iscsi-setting/iscsi-setting.component';
 import { IscsiTabsComponent } from './iscsi-tabs/iscsi-tabs.component';
@@ -21,6 +22,7 @@ import { IscsiTargetListComponent } from './iscsi-target-list/iscsi-target-list.
 import { IscsiComponent } from './iscsi/iscsi.component';
 import { MirroringModule } from './mirroring/mirroring.module';
 import { OverviewComponent as RbdMirroringComponent } from './mirroring/overview/overview.component';
+import { PoolEditModeModalComponent } from './mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component';
 import { RbdConfigurationFormComponent } from './rbd-configuration-form/rbd-configuration-form.component';
 import { RbdConfigurationListComponent } from './rbd-configuration-list/rbd-configuration-list.component';
 import { RbdDetailsComponent } from './rbd-details/rbd-details.component';
@@ -89,8 +91,17 @@ const routes: Routes = [
   { path: '', redirectTo: 'rbd', pathMatch: 'full' },
   {
     path: 'rbd',
-    canActivate: [FeatureTogglesGuardService],
-    data: { breadcrumbs: 'Images' },
+    canActivate: [FeatureTogglesGuardService, ModuleStatusGuardService],
+    data: {
+      moduleStatusGuardConfig: {
+        uiApiPath: 'block/rbd',
+        redirectTo: 'error',
+        header: 'No RBD pools available',
+        button_name: 'Create RBD pool',
+        button_route: '/pool/create'
+      },
+      breadcrumbs: 'Images'
+    },
     children: [
       { path: '', component: RbdListComponent },
       {
@@ -138,8 +149,26 @@ const routes: Routes = [
   {
     path: 'mirroring',
     component: RbdMirroringComponent,
-    canActivate: [FeatureTogglesGuardService],
-    data: { breadcrumbs: 'Mirroring' }
+    canActivate: [FeatureTogglesGuardService, ModuleStatusGuardService],
+    data: {
+      moduleStatusGuardConfig: {
+        uiApiPath: 'block/mirroring',
+        redirectTo: 'error',
+        header: $localize`RBD mirroring is not configured`,
+        button_name: $localize`Configure RBD Mirroring`,
+        button_title: $localize`This will create rbd-mirror service and a replicated RBD pool`,
+        component: 'RBD Mirroring',
+        uiConfig: true
+      },
+      breadcrumbs: 'Mirroring'
+    },
+    children: [
+      {
+        path: `${URLVerbs.EDIT}/:pool_name`,
+        component: PoolEditModeModalComponent,
+        outlet: 'modal'
+      }
+    ]
   },
   // iSCSI
   {
index 10475872a2e53d0895130ff0d5ecb9fc08553063..e993468c80d891368bd938e29637e1ae099d1b63 100644 (file)
@@ -89,9 +89,8 @@ describe('IscsiTargetFormComponent', () => {
   };
 
   const RBD_LIST: any[] = [
-    { status: 0, value: [], pool_name: 'ganesha' },
+    { value: [], pool_name: 'ganesha' },
     {
-      status: 0,
       value: [
         {
           size: 96636764160,
@@ -168,7 +167,7 @@ describe('IscsiTargetFormComponent', () => {
     httpTesting.expectOne('ui-api/iscsi/settings').flush(SETTINGS);
     httpTesting.expectOne('ui-api/iscsi/portals').flush(PORTALS);
     httpTesting.expectOne('ui-api/iscsi/version').flush(VERSION);
-    httpTesting.expectOne('api/block/image').flush(RBD_LIST);
+    httpTesting.expectOne('api/block/image?offset=0&limit=-1&search=&sort=+name').flush(RBD_LIST);
     httpTesting.expectOne('api/iscsi/target').flush(LIST_TARGET);
     httpTesting.verify();
   });
index d84647e91dd62e0083046f2938ce5e1fc807296b..6704b41e6480bba162a4365f829da95d3b3e5a72 100644 (file)
@@ -15,6 +15,7 @@ import { Icons } from '~/app/shared/enum/icons.enum';
 import { CdForm } from '~/app/shared/forms/cd-form';
 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
 import { CdValidators } from '~/app/shared/forms/cd-validators';
+import { CdTableFetchDataContext } from '~/app/shared/models/cd-table-fetch-data-context';
 import { FinishedTask } from '~/app/shared/models/finished-task';
 import { ModalService } from '~/app/shared/services/modal.service';
 import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
@@ -86,9 +87,13 @@ export class IscsiTargetFormComponent extends CdForm implements OnInit {
   }
 
   ngOnInit() {
+    const rbdListContext = new CdTableFetchDataContext(() => undefined);
+    /* limit -1 to specify all images */
+    rbdListContext.pageInfo.limit = -1;
     const promises: any[] = [
       this.iscsiService.listTargets(),
-      this.rbdService.list(),
+      /* tslint:disable:no-empty */
+      this.rbdService.list(rbdListContext.toParams()),
       this.iscsiService.portals(),
       this.iscsiService.settings(),
       this.iscsiService.version()
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.html b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.html
deleted file mode 100644 (file)
index f0c9197..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<cd-modal [modalRef]="activeModal">
-  <ng-container i18n
-                class="modal-title">Edit site name</ng-container>
-
-  <ng-container class="modal-content">
-    <form name="editSiteNameForm"
-          class="form"
-          #formDir="ngForm"
-          [formGroup]="editSiteNameForm"
-          novalidate>
-      <div class="modal-body">
-        <p>
-          <ng-container i18n>Edit the site name and click&nbsp;
-          <kbd>Update</kbd>.</ng-container>
-        </p>
-
-        <div class="form-group">
-          <label class="col-form-label required"
-                 for="siteName"
-                 i18n>Site Name</label>
-          <input class="form-control"
-                 type="text"
-                 placeholder="Name..."
-                 i18n-placeholder
-                 id="siteName"
-                 name="siteName"
-                 formControlName="siteName"
-                 autofocus>
-        </div>
-      </div>
-
-      <div class="modal-footer">
-        <cd-form-button-panel (submitActionEvent)="update()"
-                              [form]="editSiteNameForm"
-                              [submitText]="actionLabels.UPDATE"></cd-form-button-panel>
-      </div>
-    </form>
-  </ng-container>
-</cd-modal>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.scss b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.scss
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.spec.ts
deleted file mode 100644 (file)
index 193e4f0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-import { HttpClientTestingModule } from '@angular/common/http/testing';
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { ReactiveFormsModule } from '@angular/forms';
-import { RouterTestingModule } from '@angular/router/testing';
-
-import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
-import { ToastrModule } from 'ngx-toastr';
-import { of } from 'rxjs';
-
-import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
-import { NotificationService } from '~/app/shared/services/notification.service';
-import { SharedModule } from '~/app/shared/shared.module';
-import { configureTestBed } from '~/testing/unit-test-helper';
-import { EditSiteNameModalComponent } from './edit-site-name-modal.component';
-
-describe('EditSiteNameModalComponent', () => {
-  let component: EditSiteNameModalComponent;
-  let fixture: ComponentFixture<EditSiteNameModalComponent>;
-  let notificationService: NotificationService;
-  let rbdMirroringService: RbdMirroringService;
-
-  configureTestBed({
-    declarations: [EditSiteNameModalComponent],
-    imports: [
-      HttpClientTestingModule,
-      ReactiveFormsModule,
-      RouterTestingModule,
-      SharedModule,
-      ToastrModule.forRoot()
-    ],
-    providers: [NgbActiveModal]
-  });
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(EditSiteNameModalComponent);
-    component = fixture.componentInstance;
-    component.siteName = 'site-A';
-
-    notificationService = TestBed.inject(NotificationService);
-    spyOn(notificationService, 'show').and.stub();
-
-    rbdMirroringService = TestBed.inject(RbdMirroringService);
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-
-  describe('edit site name', () => {
-    beforeEach(() => {
-      spyOn(rbdMirroringService, 'getSiteName').and.callFake(() => of({ site_name: 'site-A' }));
-      spyOn(rbdMirroringService, 'refresh').and.stub();
-      spyOn(component.activeModal, 'close').and.callThrough();
-      fixture.detectChanges();
-    });
-
-    afterEach(() => {
-      expect(rbdMirroringService.getSiteName).toHaveBeenCalledTimes(1);
-      expect(rbdMirroringService.refresh).toHaveBeenCalledTimes(1);
-      expect(component.activeModal.close).toHaveBeenCalledTimes(1);
-    });
-
-    it('should call setSiteName', () => {
-      spyOn(rbdMirroringService, 'setSiteName').and.callFake(() => of({ site_name: 'new-site-A' }));
-
-      component.editSiteNameForm.patchValue({
-        siteName: 'new-site-A'
-      });
-      component.update();
-      expect(rbdMirroringService.setSiteName).toHaveBeenCalledWith('new-site-A');
-    });
-  });
-});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/edit-site-name-modal/edit-site-name-modal.component.ts
deleted file mode 100644 (file)
index aa43bd0..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { FormControl } from '@angular/forms';
-
-import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
-
-import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
-import { ActionLabelsI18n } from '~/app/shared/constants/app.constants';
-import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
-import { FinishedTask } from '~/app/shared/models/finished-task';
-import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
-
-@Component({
-  selector: 'cd-edit-site-mode-modal',
-  templateUrl: './edit-site-name-modal.component.html',
-  styleUrls: ['./edit-site-name-modal.component.scss']
-})
-export class EditSiteNameModalComponent implements OnInit {
-  siteName: string;
-
-  editSiteNameForm: CdFormGroup;
-
-  constructor(
-    public activeModal: NgbActiveModal,
-    public actionLabels: ActionLabelsI18n,
-    private rbdMirroringService: RbdMirroringService,
-    private taskWrapper: TaskWrapperService
-  ) {
-    this.createForm();
-  }
-
-  createForm() {
-    this.editSiteNameForm = new CdFormGroup({
-      siteName: new FormControl('', {})
-    });
-  }
-
-  ngOnInit() {
-    this.editSiteNameForm.get('siteName').setValue(this.siteName);
-    this.rbdMirroringService.getSiteName().subscribe((response: any) => {
-      this.editSiteNameForm.get('siteName').setValue(response.site_name);
-    });
-  }
-
-  update() {
-    const action = this.taskWrapper.wrapTaskAroundCall({
-      task: new FinishedTask('rbd/mirroring/site_name/edit', {}),
-      call: this.rbdMirroringService.setSiteName(this.editSiteNameForm.getValue('siteName'))
-    });
-
-    action.subscribe({
-      error: () => this.editSiteNameForm.setErrors({ cdSubmitButton: true }),
-      complete: () => {
-        this.rbdMirroringService.refresh();
-        this.activeModal.close();
-      }
-    });
-  }
-}
index 25f1442f887598e7e7a0dc44399071cdcd41af32..d4972a41c13536042a88896c59c20d2179e9c235 100644 (file)
@@ -4,7 +4,7 @@
     cdStatefulTab="image-list">
   <li ngbNavItem="issues">
     <a ngbNavLink
-       i18n>Issues</a>
+       i18n>Issues ({{ image_error.data.length }})</a>
     <ng-template ngbNavContent>
       <cd-table [data]="image_error.data"
                 columnMode="flex"
@@ -17,7 +17,7 @@
   </li>
   <li ngbNavItem="syncing">
     <a ngbNavLink
-       i18n>Syncing</a>
+       i18n>Syncing ({{ image_syncing.data.length }})</a>
     <ng-template ngbNavContent>
       <cd-table [data]="image_syncing.data"
                 columnMode="flex"
@@ -30,7 +30,7 @@
   </li>
   <li ngbNavItem="ready">
     <a ngbNavLink
-       i18n>Ready</a>
+       i18n>Ready ({{ image_ready.data.length }})</a>
     <ng-template ngbNavContent>
       <cd-table [data]="image_ready.data"
                 columnMode="flex"
   <span [ngClass]="row.state_color | mirrorHealthColor">{{ value }}</span>
 </ng-template>
 
-<ng-template #syncTmpl>
-  <span class="badge badge-info"
-        i18n>Syncing</span>
-</ng-template>
-
 <ng-template #progressTmpl
+             let-row="row"
              let-value="value">
-  <ngb-progressbar type="info"
+  <div *ngIf="row.state === 'Replaying'">
+  </div>
+  <ngb-progressbar *ngIf="row.state === 'Syncing'"
+                   type="info"
                    [value]="value"
                    [showValue]="true"></ngb-progressbar>
 </ng-template>
index 015031ebeebf30b6214f4da94f39983736a9e64d..4966cc0af5dcc040068fc6c89557dcba54efd96c 100644 (file)
@@ -41,42 +41,44 @@ export class ImageListComponent implements OnInit, OnDestroy {
     this.image_error.columns = [
       { prop: 'pool_name', name: $localize`Pool`, flexGrow: 2 },
       { prop: 'name', name: $localize`Image`, flexGrow: 2 },
-      { prop: 'description', name: $localize`Issue`, flexGrow: 4 },
       {
         prop: 'state',
         name: $localize`State`,
         cellTemplate: this.stateTmpl,
         flexGrow: 1
-      }
+      },
+      { prop: 'description', name: $localize`Issue`, flexGrow: 4 }
     ];
 
     this.image_syncing.columns = [
       { prop: 'pool_name', name: $localize`Pool`, flexGrow: 2 },
       { prop: 'name', name: $localize`Image`, flexGrow: 2 },
+      {
+        prop: 'state',
+        name: $localize`State`,
+        cellTemplate: this.stateTmpl,
+        flexGrow: 1
+      },
       {
         prop: 'progress',
         name: $localize`Progress`,
         cellTemplate: this.progressTmpl,
         flexGrow: 2
       },
-      {
-        prop: 'state',
-        name: $localize`State`,
-        cellTemplate: this.syncTmpl,
-        flexGrow: 1
-      }
+      { prop: 'bytes_per_second', name: $localize`Bytes per second`, flexGrow: 2 },
+      { prop: 'entries_behind_primary', name: $localize`Entries behind primary`, flexGrow: 2 }
     ];
 
     this.image_ready.columns = [
       { prop: 'pool_name', name: $localize`Pool`, flexGrow: 2 },
       { prop: 'name', name: $localize`Image`, flexGrow: 2 },
-      { prop: 'description', name: $localize`Description`, flexGrow: 4 },
       {
         prop: 'state',
         name: $localize`State`,
         cellTemplate: this.stateTmpl,
         flexGrow: 1
-      }
+      },
+      { prop: 'description', name: $localize`Description`, flexGrow: 4 }
     ];
 
     this.subs = this.rbdMirroringService.subscribeSummary((data) => {
index 0edea02494ca765b6209b8013958a5c4f34c7ad2..dfebe934f1e0fac1aadd73d49d77cb894a29ba40 100644 (file)
@@ -9,7 +9,6 @@ import { SharedModule } from '~/app/shared/shared.module';
 import { BootstrapCreateModalComponent } from './bootstrap-create-modal/bootstrap-create-modal.component';
 import { BootstrapImportModalComponent } from './bootstrap-import-modal/bootstrap-import-modal.component';
 import { DaemonListComponent } from './daemon-list/daemon-list.component';
-import { EditSiteNameModalComponent } from './edit-site-name-modal/edit-site-name-modal.component';
 import { ImageListComponent } from './image-list/image-list.component';
 import { MirrorHealthColorPipe } from './mirror-health-color.pipe';
 import { OverviewComponent } from './overview/overview.component';
@@ -31,7 +30,6 @@ import { PoolListComponent } from './pool-list/pool-list.component';
     BootstrapCreateModalComponent,
     BootstrapImportModalComponent,
     DaemonListComponent,
-    EditSiteNameModalComponent,
     ImageListComponent,
     OverviewComponent,
     PoolEditModeModalComponent,
index 7bd0bf017b370f2b710452290a5dd5b156c73c87..9cdfab939cc2aa529b97a0efd4fe1d744c91f0fa 100644 (file)
@@ -1,11 +1,43 @@
 <div class="row">
   <div class="col-md-12">
-    <span><strong i18n>Site Name:</strong> {{siteName}}</span>
-    <cd-table-actions class="table-actions float-right"
-                      [permission]="permission"
-                      [selection]="selection"
-                      [tableActions]="tableActions">
-    </cd-table-actions>
+    <form name="rbdmirroringForm"
+          #formDir="ngForm"
+          [formGroup]="rbdmirroringForm"
+          novalidate>
+
+      <div class="d-flex flex-row">
+        <label class="col-form-label"
+               for="siteName"
+               i18n>Site Name</label>
+
+        <div class="col-md-4 input-group mb-3 mr-auto">
+          <input type="text"
+                 class="form-control"
+                 id="siteName"
+                 name="siteName"
+                 formControlName="siteName"
+                 [attr.disabled]="!editing ? true : null">
+          <div class="input-group-append">
+            <button class="btn btn-light"
+                    id="editSiteName"
+                    (click)="updateSiteName()">
+              <i [ngClass]="icons.edit"
+                 *ngIf="!editing"></i>
+              <i [ngClass]="icons.check"
+                 *ngIf="editing"></i>
+            </button>
+            <cd-copy-2-clipboard-button [source]="siteName"
+                                        [byId]="false">
+            </cd-copy-2-clipboard-button>
+          </div>
+        </div>
+        <cd-table-actions class="table-actions"
+                          [permission]="permission"
+                          [selection]="selection"
+                          [tableActions]="tableActions">
+        </cd-table-actions>
+      </div>
+    </form>
   </div>
 </div>
 
index a3c83a75d967be922e0e857a5c3b315d5e496d0e..d771c2f70034a15e7bc09fb7d193f96f047c6f0a 100644 (file)
@@ -1,11 +1,14 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { RouterTestingModule } from '@angular/router/testing';
 
 import { NgbNavModule, NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';
 import { ToastrModule } from 'ngx-toastr';
+import { of } from 'rxjs';
 
+import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
 import { SharedModule } from '~/app/shared/shared.module';
 import { configureTestBed } from '~/testing/unit-test-helper';
 import { DaemonListComponent } from '../daemon-list/daemon-list.component';
@@ -17,6 +20,7 @@ import { OverviewComponent } from './overview.component';
 describe('OverviewComponent', () => {
   let component: OverviewComponent;
   let fixture: ComponentFixture<OverviewComponent>;
+  let rbdMirroringService: RbdMirroringService;
 
   configureTestBed({
     declarations: [
@@ -33,6 +37,7 @@ describe('OverviewComponent', () => {
       NgbProgressbarModule,
       HttpClientTestingModule,
       RouterTestingModule,
+      ReactiveFormsModule,
       ToastrModule.forRoot()
     ]
   });
@@ -40,10 +45,35 @@ describe('OverviewComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(OverviewComponent);
     component = fixture.componentInstance;
+    rbdMirroringService = TestBed.inject(RbdMirroringService);
+    component.siteName = 'site-A';
     fixture.detectChanges();
   });
 
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('edit site name', () => {
+    beforeEach(() => {
+      spyOn(rbdMirroringService, 'getSiteName').and.callFake(() => of({ site_name: 'site-A' }));
+      spyOn(rbdMirroringService, 'refresh').and.stub();
+      fixture.detectChanges();
+    });
+
+    afterEach(() => {
+      expect(rbdMirroringService.refresh).toHaveBeenCalledTimes(1);
+    });
+
+    it('should call setSiteName', () => {
+      component.editing = true;
+      spyOn(rbdMirroringService, 'setSiteName').and.callFake(() => of({ site_name: 'new-site-A' }));
+
+      component.rbdmirroringForm.patchValue({
+        siteName: 'new-site-A'
+      });
+      component.updateSiteName();
+      expect(rbdMirroringService.setSiteName).toHaveBeenCalledWith('new-site-A');
+    });
+  });
 });
index c919e03cdbb82680370a4ab4a603a1f19e4641f4..3ee1fa81334285d4ee56b38533e4bf9662bf5d9e 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, OnDestroy, OnInit } from '@angular/core';
+import { FormControl } from '@angular/forms';
 
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
 import { Subscription } from 'rxjs';
@@ -7,14 +8,16 @@ import { Pool } from '~/app/ceph/pool/pool';
 import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
 import { Icons } from '~/app/shared/enum/icons.enum';
 import { ViewCacheStatus } from '~/app/shared/enum/view-cache-status.enum';
+import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
 import { CdTableAction } from '~/app/shared/models/cd-table-action';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
+import { FinishedTask } from '~/app/shared/models/finished-task';
 import { Permission } from '~/app/shared/models/permissions';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
 import { ModalService } from '~/app/shared/services/modal.service';
+import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
 import { BootstrapCreateModalComponent } from '../bootstrap-create-modal/bootstrap-create-modal.component';
 import { BootstrapImportModalComponent } from '../bootstrap-import-modal/bootstrap-import-modal.component';
-import { EditSiteNameModalComponent } from '../edit-site-name-modal/edit-site-name-modal.component';
 
 @Component({
   selector: 'cd-mirroring',
@@ -22,6 +25,7 @@ import { EditSiteNameModalComponent } from '../edit-site-name-modal/edit-site-na
   styleUrls: ['./overview.component.scss']
 })
 export class OverviewComponent implements OnInit, OnDestroy {
+  rbdmirroringForm: CdFormGroup;
   permission: Permission;
   tableActions: CdTableAction[];
   selection = new CdTableSelection();
@@ -30,27 +34,24 @@ export class OverviewComponent implements OnInit, OnDestroy {
   siteName: any;
   status: ViewCacheStatus;
   private subs = new Subscription();
+  editing = false;
+
+  icons = Icons;
 
   constructor(
     private authStorageService: AuthStorageService,
     private rbdMirroringService: RbdMirroringService,
-    private modalService: ModalService
+    private modalService: ModalService,
+    private taskWrapper: TaskWrapperService
   ) {
     this.permission = this.authStorageService.getPermissions().rbdMirroring;
 
-    const editSiteNameAction: CdTableAction = {
-      permission: 'update',
-      icon: Icons.edit,
-      click: () => this.editSiteNameModal(),
-      name: $localize`Edit Site Name`,
-      canBePrimary: () => true,
-      disable: () => false
-    };
     const createBootstrapAction: CdTableAction = {
       permission: 'update',
       icon: Icons.upload,
       click: () => this.createBootstrapModal(),
       name: $localize`Create Bootstrap Token`,
+      canBePrimary: () => true,
       disable: () => false
     };
     const importBootstrapAction: CdTableAction = {
@@ -60,30 +61,49 @@ export class OverviewComponent implements OnInit, OnDestroy {
       name: $localize`Import Bootstrap Token`,
       disable: () => this.peersExist
     };
-    this.tableActions = [editSiteNameAction, createBootstrapAction, importBootstrapAction];
+    this.tableActions = [createBootstrapAction, importBootstrapAction];
   }
 
   ngOnInit() {
+    this.createForm();
     this.subs.add(this.rbdMirroringService.startPolling());
     this.subs.add(
       this.rbdMirroringService.subscribeSummary((data) => {
         this.status = data.content_data.status;
-        this.siteName = data.site_name;
 
         this.peersExist = !!data.content_data.pools.find((o: Pool) => o['peer_uuids'].length > 0);
       })
     );
+    this.rbdMirroringService.getSiteName().subscribe((response: any) => {
+      this.siteName = response.site_name;
+      this.rbdmirroringForm.get('siteName').setValue(this.siteName);
+    });
+  }
+
+  private createForm() {
+    this.rbdmirroringForm = new CdFormGroup({
+      siteName: new FormControl({ value: '', disabled: true })
+    });
   }
 
   ngOnDestroy(): void {
     this.subs.unsubscribe();
   }
 
-  editSiteNameModal() {
-    const initialState = {
-      siteName: this.siteName
-    };
-    this.modalRef = this.modalService.show(EditSiteNameModalComponent, initialState);
+  updateSiteName() {
+    if (this.editing) {
+      const action = this.taskWrapper.wrapTaskAroundCall({
+        task: new FinishedTask('rbd/mirroring/site_name/edit', {}),
+        call: this.rbdMirroringService.setSiteName(this.rbdmirroringForm.getValue('siteName'))
+      });
+
+      action.subscribe({
+        complete: () => {
+          this.rbdMirroringService.refresh();
+        }
+      });
+    }
+    this.editing = !this.editing;
   }
 
   createBootstrapModal() {
index 03b49a8030d658f578ffa2a1099af886e2450cda..00fe92b32b734ecf507ab2c0080f0b2e169ba577 100644 (file)
@@ -1,4 +1,5 @@
-<cd-modal [modalRef]="activeModal">
+<cd-modal [modalRef]="activeModal"
+          pageURL="mirroring">
   <ng-container i18n
                 class="modal-title">Edit pool mirror mode</ng-container>
 
index a22a60d5e736c0fb631ce975d4d0226c53d08bcc..11ba12334f38cd082c3e868585fc05159b0c40f0 100644 (file)
@@ -1,6 +1,7 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
+import { ActivatedRoute } from '@angular/router';
 import { RouterTestingModule } from '@angular/router/testing';
 
 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
@@ -10,6 +11,7 @@ import { of } from 'rxjs';
 import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
 import { NotificationService } from '~/app/shared/services/notification.service';
 import { SharedModule } from '~/app/shared/shared.module';
+import { ActivatedRouteStub } from '~/testing/activated-route-stub';
 import { configureTestBed, FormHelper } from '~/testing/unit-test-helper';
 import { PoolEditModeModalComponent } from './pool-edit-mode-modal.component';
 
@@ -19,6 +21,7 @@ describe('PoolEditModeModalComponent', () => {
   let notificationService: NotificationService;
   let rbdMirroringService: RbdMirroringService;
   let formHelper: FormHelper;
+  let activatedRoute: ActivatedRouteStub;
 
   configureTestBed({
     declarations: [PoolEditModeModalComponent],
@@ -29,7 +32,13 @@ describe('PoolEditModeModalComponent', () => {
       SharedModule,
       ToastrModule.forRoot()
     ],
-    providers: [NgbActiveModal]
+    providers: [
+      NgbActiveModal,
+      {
+        provide: ActivatedRoute,
+        useValue: new ActivatedRouteStub({ pool_name: 'somePool' })
+      }
+    ]
   });
 
   beforeEach(() => {
@@ -41,6 +50,7 @@ describe('PoolEditModeModalComponent', () => {
     spyOn(notificationService, 'show').and.stub();
 
     rbdMirroringService = TestBed.inject(RbdMirroringService);
+    activatedRoute = <ActivatedRouteStub>TestBed.inject(ActivatedRoute);
 
     formHelper = new FormHelper(component.editModeForm);
     fixture.detectChanges();
@@ -55,11 +65,8 @@ describe('PoolEditModeModalComponent', () => {
       spyOn(component.activeModal, 'close').and.callThrough();
     });
 
-    afterEach(() => {
-      expect(component.activeModal.close).toHaveBeenCalledTimes(1);
-    });
-
     it('should call updatePool', () => {
+      activatedRoute.setParams({ pool_name: 'somePool' });
       spyOn(rbdMirroringService, 'updatePool').and.callFake(() => of(''));
 
       component.editModeForm.patchValue({ mirrorMode: 'disabled' });
index 137e787174d7a0e545382746cf5fbf9cf182afcc..ef30c888c8ba6207be4ff0a0ec9f2756d3d477fc 100644 (file)
@@ -1,5 +1,7 @@
+import { Location } from '@angular/common';
 import { Component, OnDestroy, OnInit } from '@angular/core';
 import { AbstractControl, FormControl, Validators } from '@angular/forms';
+import { ActivatedRoute } from '@angular/router';
 
 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
 import { Subscription } from 'rxjs';
@@ -40,7 +42,9 @@ export class PoolEditModeModalComponent implements OnInit, OnDestroy {
     public activeModal: NgbActiveModal,
     public actionLabels: ActionLabelsI18n,
     private rbdMirroringService: RbdMirroringService,
-    private taskWrapper: TaskWrapperService
+    private taskWrapper: TaskWrapperService,
+    private route: ActivatedRoute,
+    private location: Location
   ) {
     this.createForm();
   }
@@ -54,6 +58,9 @@ export class PoolEditModeModalComponent implements OnInit, OnDestroy {
   }
 
   ngOnInit() {
+    this.route.params.subscribe((params: { pool_name: string }) => {
+      this.poolName = params.pool_name;
+    });
     this.pattern = `${this.poolName}`;
     this.rbdMirroringService.getPool(this.poolName).subscribe((resp: PoolEditModeResponseModel) => {
       this.setResponse(resp);
@@ -97,7 +104,7 @@ export class PoolEditModeModalComponent implements OnInit, OnDestroy {
       error: () => this.editModeForm.setErrors({ cdSubmitButton: true }),
       complete: () => {
         this.rbdMirroringService.refresh();
-        this.activeModal.close();
+        this.location.back();
       }
     });
   }
index b6081b8e03d634e371f564e887ca6162019f74ce..1e4e72df19651aff478a10effefbe5164891a810 100644 (file)
@@ -20,3 +20,4 @@
              let-value="value">
   <span [ngClass]="row.health_color | mirrorHealthColor">{{ value }}</span>
 </ng-template>
+<router-outlet name="modal"></router-outlet>
index 29b435900df6f22ed3f0085cf38ef6daaac080e1..a5e1c9e4b959ba7dc8ccf334bbfbf10483c6b218 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { Router } from '@angular/router';
 
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
 import { Observable, Subscriber, Subscription } from 'rxjs';
@@ -6,6 +7,7 @@ import { Observable, Subscriber, Subscription } from 'rxjs';
 import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
 import { TableStatusViewCache } from '~/app/shared/classes/table-status-view-cache';
 import { CriticalConfirmationModalComponent } from '~/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { URLVerbs } from '~/app/shared/constants/app.constants';
 import { Icons } from '~/app/shared/enum/icons.enum';
 import { CdTableAction } from '~/app/shared/models/cd-table-action';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
@@ -14,9 +16,9 @@ import { Permission } from '~/app/shared/models/permissions';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
 import { ModalService } from '~/app/shared/services/modal.service';
 import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
-import { PoolEditModeModalComponent } from '../pool-edit-mode-modal/pool-edit-mode-modal.component';
 import { PoolEditPeerModalComponent } from '../pool-edit-peer-modal/pool-edit-peer-modal.component';
 
+const BASE_URL = '/block/mirroring';
 @Component({
   selector: 'cd-mirroring-pools',
   templateUrl: './pool-list.component.html',
@@ -43,7 +45,8 @@ export class PoolListComponent implements OnInit, OnDestroy {
     private authStorageService: AuthStorageService,
     private rbdMirroringService: RbdMirroringService,
     private modalService: ModalService,
-    private taskWrapper: TaskWrapperService
+    private taskWrapper: TaskWrapperService,
+    private router: Router
   ) {
     this.data = [];
     this.permission = this.authStorageService.getPermissions().rbdMirroring;
@@ -111,10 +114,10 @@ export class PoolListComponent implements OnInit, OnDestroy {
   }
 
   editModeModal() {
-    const initialState = {
-      poolName: this.selection.first().name
-    };
-    this.modalRef = this.modalService.show(PoolEditModeModalComponent, initialState);
+    this.router.navigate([
+      BASE_URL,
+      { outlets: { modal: [URLVerbs.EDIT, this.selection.first().name] } }
+    ]);
   }
 
   editPeersModal(mode: string) {
index 7503863e0fb2c256165b2b0ee793e83b6ad62792..8614dfe72bccbd50973ceca123652e908760aee4 100644 (file)
                               [featuresName]="selection.features_name"
                               [poolName]="selection.pool_name"
                               [namespace]="selection.namespace"
+                              [mirroring]="selection.mirror_mode"
                               [rbdName]="selection.name"></cd-rbd-snapshot-list>
       </ng-template>
     </li>
          i18n>Performance</a>
       <ng-template ngbNavContent>
         <cd-grafana [grafanaPath]="rbdDashboardUrl"
+                    [type]="'metrics'"
                     uid="YhCYGcuZz"
                     grafanaStyle="one">
         </cd-grafana>
index 9187b024d9d017fcb742452ad66c23ed609cd745..8b994d958a7246dbfcd67af3ab9da1203d7efd45 100644 (file)
@@ -5,4 +5,10 @@ export class RbdFormEditRequestModel {
   size: number;
   features: Array<string> = [];
   configuration: RbdConfigurationEntry[];
+
+  enable_mirror?: boolean;
+  mirror_mode?: string;
+  primary?: boolean;
+  schedule_interval: string;
+  remove_scheduling? = false;
 }
index 668556fa0e24dfff1c3a91fd9175956794ecdce6..38f20476207908f961593bc7a98fe47b2250c934 100644 (file)
@@ -68,7 +68,8 @@
                     name="pool"
                     class="form-control"
                     formControlName="pool"
-                    *ngIf="mode !== 'editing' && poolPermission.read">
+                    *ngIf="mode !== 'editing' && poolPermission.read"
+                    (change)="setPoolMirrorMode()">
               <option *ngIf="pools === null"
                       [ngValue]="null"
                       i18n>Loading...</option>
           </div>
         </div>
 
+        <!-- Mirroring -->
+        <div class="form-group row">
+          <div class="cd-col-form-offset">
+            <div class="custom-control custom-checkbox">
+              <input type="checkbox"
+                     class="custom-control-input"
+                     id="mirroring"
+                     name="mirroring"
+                     (change)="setMirrorMode()"
+                     formControlName="mirroring">
+              <label class="custom-control-label"
+                     for="mirroring">Mirroring</label>
+              <cd-helper *ngIf="mirroring === false && this.currentPoolName">
+                <span i18n>You need to enable a <b>mirror mode</b> in the selected pool. Please <a [routerLink]="['/block/mirroring', {outlets: {modal: ['edit', currentPoolName]}}]">click here to select a mode and enable it in this pool.</a></span>
+              </cd-helper>
+            </div>
+            <div *ngIf="mirroring">
+              <div class="custom-control custom-radio ml-2"
+                   *ngFor="let option of mirroringOptions">
+                <input type="radio"
+                       class="custom-control-input"
+                       [id]="option"
+                       [value]="option"
+                       name="mirroringMode"
+                       (change)="setExclusiveLock()"
+                       formControlName="mirroringMode"
+                       [attr.disabled]="(poolMirrorMode === 'pool' && option === 'snapshot') ? true : null">
+                <label class="custom-control-label"
+                       [for]="option">{{ option | titlecase }}</label>
+                <cd-helper *ngIf="poolMirrorMode === 'pool' && option === 'snapshot'">
+                  <span i18n>You need to enable <b>image mirror mode</b> in the selected pool. Please <a [routerLink]="['/block/mirroring', {outlets: {modal: ['edit', currentPoolName]}}]">click here to select a mode and enable it in this pool.</a></span>
+                </cd-helper>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <div class="form-group row"
+             *ngIf="rbdForm.getValue('mirroringMode') === 'snapshot' && mirroring">
+          <label class="cd-col-form-label"
+                 i18n>Schedule Interval
+          <cd-helper i18n-html
+                     html="Create Mirror-Snapshots automatically on a periodic basis. The interval can be specified in days, hours, or minutes using d, h, m suffix respectively.">
+          </cd-helper></label>
+          <div class="cd-col-form-input">
+            <input id="schedule"
+                   name="schedule"
+                   class="form-control"
+                   type="text"
+                   formControlName="schedule"
+                   i18n-placeholder
+                   placeholder="e.g., 12h or 1d or 10m"
+                   [attr.disabled]="(mode === rbdFormMode.editing) ? true : null">
+          </div>
+        </div>
+
         <!-- Advanced -->
         <div class="row">
           <div class="col-sm-12">
             <div class="form-group row">
               <label i18n
                      class="cd-col-form-label"
-                     for="size">Object size</label>
+                     for="size">Object size<cd-helper>Objects in the Ceph Storage Cluster have a maximum configurable size (e.g., 2MB, 4MB, etc.). The object size should be large enough to accommodate many stripe units, and should be a multiple of the stripe unit.</cd-helper></label>
               <div class="cd-col-form-input">
                 <select id="obj_size"
                         name="obj_size"
               <label class="cd-col-form-label"
                      [ngClass]="{'required': rbdForm.getValue('stripingCount')}"
                      for="stripingUnit"
-                     i18n>Stripe unit</label>
+                     i18n>Stripe unit<cd-helper>Stripes have a configurable unit size (e.g., 64kb). The Ceph Client divides the data it will write to objects into equally sized stripe units, except for the last stripe unit. A stripe width, should be a fraction of the Object Size so that an object may contain many stripe units.</cd-helper></label>
               <div class="cd-col-form-input">
                 <select id="stripingUnit"
                         name="stripingUnit"
               <label class="cd-col-form-label"
                      [ngClass]="{'required': rbdForm.getValue('stripingUnit')}"
                      for="stripingCount"
-                     i18n>Stripe count</label>
+                     i18n>Stripe count<cd-helper>The Ceph Client writes a sequence of stripe units over a series of objects determined by the stripe count. The series of objects is called an object set. After the Ceph Client writes to the last object in the object set, it returns to the first object in the object set.</cd-helper></label>
               <div class="cd-col-form-input">
                 <input id="stripingCount"
                        name="stripingCount"
index 8c00c7460ab6a5fc2bccfcbca58cfebcbdc6cec9..5df73d93fe1ee4142c022dc854f564f4fdcdbaa6 100644 (file)
@@ -304,12 +304,7 @@ describe('RbdFormComponent', () => {
   });
 
   describe('tests for feature flags', () => {
-    let deepFlatten: any,
-      layering: any,
-      exclusiveLock: any,
-      objectMap: any,
-      journaling: any,
-      fastDiff: any;
+    let deepFlatten: any, layering: any, exclusiveLock: any, objectMap: any, fastDiff: any;
     const defaultFeatures = [
       // Supposed to be enabled by default
       'deep-flatten',
@@ -323,7 +318,6 @@ describe('RbdFormComponent', () => {
       'layering',
       'exclusive-lock',
       'object-map',
-      'journaling',
       'fast-diff'
     ];
     const setFeatures = (features: Record<string, RbdImageFeature>) => {
@@ -359,14 +353,7 @@ describe('RbdFormComponent', () => {
         spyOn(rbdService, 'defaultFeatures').and.returnValue(of(defaultFeatures));
         setRouterUrl('edit', pool, image);
         fixture.detectChanges();
-        [
-          deepFlatten,
-          layering,
-          exclusiveLock,
-          objectMap,
-          journaling,
-          fastDiff
-        ] = getFeatureNativeElements();
+        [deepFlatten, layering, exclusiveLock, objectMap, fastDiff] = getFeatureNativeElements();
       };
 
       it('should have the interlock feature for flags disabled, if one feature is not set', () => {
@@ -409,14 +396,7 @@ describe('RbdFormComponent', () => {
         spyOn(rbdService, 'defaultFeatures').and.returnValue(of(defaultFeatures));
         setRouterUrl('create');
         fixture.detectChanges();
-        [
-          deepFlatten,
-          layering,
-          exclusiveLock,
-          objectMap,
-          journaling,
-          fastDiff
-        ] = getFeatureNativeElements();
+        [deepFlatten, layering, exclusiveLock, objectMap, fastDiff] = getFeatureNativeElements();
       });
 
       it('should initialize the checkboxes correctly', () => {
@@ -424,21 +404,18 @@ describe('RbdFormComponent', () => {
         expect(layering.disabled).toBe(false);
         expect(exclusiveLock.disabled).toBe(false);
         expect(objectMap.disabled).toBe(false);
-        expect(journaling.disabled).toBe(false);
         expect(fastDiff.disabled).toBe(false);
 
         expect(deepFlatten.checked).toBe(true);
         expect(layering.checked).toBe(true);
         expect(exclusiveLock.checked).toBe(true);
         expect(objectMap.checked).toBe(true);
-        expect(journaling.checked).toBe(false);
         expect(fastDiff.checked).toBe(true);
       });
 
       it('should disable features if their requirements are not met (exclusive-lock)', () => {
         exclusiveLock.click(); // unchecks exclusive-lock
         expect(objectMap.disabled).toBe(true);
-        expect(journaling.disabled).toBe(true);
         expect(fastDiff.disabled).toBe(true);
       });
 
@@ -447,5 +424,39 @@ describe('RbdFormComponent', () => {
         expect(fastDiff.disabled).toBe(true);
       });
     });
+
+    describe('test mirroring options', () => {
+      beforeEach(() => {
+        component.ngOnInit();
+        fixture.detectChanges();
+        const mirroring = fixture.debugElement.query(By.css('#mirroring')).nativeElement;
+        mirroring.click();
+        fixture.detectChanges();
+      });
+
+      it('should verify two mirroring options are shown', () => {
+        const journal = fixture.debugElement.query(By.css('#journal')).nativeElement;
+        const snapshot = fixture.debugElement.query(By.css('#snapshot')).nativeElement;
+        expect(journal).not.toBeNull();
+        expect(snapshot).not.toBeNull();
+      });
+
+      it('should verify only snapshot is disabled for pools that are in pool mirror mode', () => {
+        component.poolMirrorMode = 'pool';
+        fixture.detectChanges();
+        const journal = fixture.debugElement.query(By.css('#journal')).nativeElement;
+        const snapshot = fixture.debugElement.query(By.css('#snapshot')).nativeElement;
+        expect(journal.disabled).toBe(false);
+        expect(snapshot.disabled).toBe(true);
+      });
+
+      it('should set and disable exclusive-lock only for the journal mode', () => {
+        component.poolMirrorMode = 'pool';
+        fixture.detectChanges();
+        const exclusiveLocks = fixture.debugElement.query(By.css('#exclusive-lock')).nativeElement;
+        expect(exclusiveLocks.checked).toBe(true);
+        expect(exclusiveLocks.disabled).toBe(true);
+      });
+    });
   });
 });
index 1dc1df0dd3aba8da08c4025e85018572d3cd0df2..4fa71646215fafe9f6603309d04818892c97651b 100644 (file)
@@ -8,6 +8,7 @@ import { first, switchMap } from 'rxjs/operators';
 
 import { Pool } from '~/app/ceph/pool/pool';
 import { PoolService } from '~/app/shared/api/pool.service';
+import { RbdMirroringService } from '~/app/shared/api/rbd-mirroring.service';
 import { RbdService } from '~/app/shared/api/rbd.service';
 import { ActionLabelsI18n } from '~/app/shared/constants/app.constants';
 import { Icons } from '~/app/shared/enum/icons.enum';
@@ -77,6 +78,11 @@ export class RbdFormComponent extends CdForm implements OnInit {
 
   defaultObjectSize = '4 MiB';
 
+  mirroringOptions = ['journal', 'snapshot'];
+  poolMirrorMode: string;
+  mirroring = false;
+  currentPoolName = '';
+
   objectSizes: Array<string> = [
     '4 KiB',
     '8 KiB',
@@ -93,6 +99,11 @@ export class RbdFormComponent extends CdForm implements OnInit {
     '16 MiB',
     '32 MiB'
   ];
+
+  defaultStripingUnit = '4 MiB';
+
+  defaultStripingCount = 1;
+
   action: string;
   resource: string;
   private rbdImage = new ReplaySubject(1);
@@ -109,7 +120,8 @@ export class RbdFormComponent extends CdForm implements OnInit {
     private taskWrapper: TaskWrapperService,
     private dimlessBinaryPipe: DimlessBinaryPipe,
     public actionLabels: ActionLabelsI18n,
-    private router: Router
+    private router: Router,
+    private rbdMirroringService: RbdMirroringService
   ) {
     super();
     this.routerUrl = this.router.url;
@@ -141,13 +153,6 @@ export class RbdFormComponent extends CdForm implements OnInit {
         allowDisable: true,
         initDisabled: true
       },
-      journaling: {
-        desc: $localize`Journaling (requires exclusive-lock)`,
-        requires: 'exclusive-lock',
-        allowEnable: true,
-        allowDisable: true,
-        initDisabled: true
-      },
       'fast-diff': {
         desc: $localize`Fast diff (interlocked with object-map)`,
         requires: 'object-map',
@@ -188,8 +193,13 @@ export class RbdFormComponent extends CdForm implements OnInit {
             return acc;
           }, {})
         ),
-        stripingUnit: new FormControl(null),
-        stripingCount: new FormControl(null, {
+        mirroring: new FormControl(false),
+        schedule: new FormControl('', {
+          validators: [Validators.pattern(/^([0-9]+)d|([0-9]+)h|([0-9]+)m$/)] // check schedule interval to be in format - 1d or 1h or 1m
+        }),
+        mirroringMode: new FormControl(this.mirroringOptions[0]),
+        stripingUnit: new FormControl(this.defaultStripingUnit),
+        stripingCount: new FormControl(this.defaultStripingCount, {
           updateOn: 'blur'
         })
       },
@@ -232,6 +242,48 @@ export class RbdFormComponent extends CdForm implements OnInit {
     this.gatherNeededData().subscribe(this.handleExternalData.bind(this));
   }
 
+  setExclusiveLock() {
+    if (this.mirroring && this.rbdForm.get('mirroringMode').value === 'journal') {
+      this.rbdForm.get('exclusive-lock').setValue(true);
+      this.rbdForm.get('exclusive-lock').disable();
+    } else {
+      this.rbdForm.get('exclusive-lock').enable();
+      if (this.poolMirrorMode === 'pool') {
+        this.rbdForm.get('mirroringMode').setValue(this.mirroringOptions[0]);
+      }
+    }
+  }
+
+  setMirrorMode() {
+    this.mirroring = !this.mirroring;
+    this.setExclusiveLock();
+  }
+
+  setPoolMirrorMode() {
+    this.currentPoolName =
+      this.mode === this.rbdFormMode.editing
+        ? this.response?.pool_name
+        : this.rbdForm.getValue('pool');
+    if (this.currentPoolName) {
+      this.rbdMirroringService.refresh();
+      this.rbdMirroringService.subscribeSummary((data) => {
+        const pool = data.content_data.pools.find((o: any) => o.name === this.currentPoolName);
+        this.poolMirrorMode = pool.mirror_mode;
+
+        if (pool.mirror_mode === 'disabled') {
+          this.mirroring = false;
+          this.rbdForm.get('mirroring').setValue(this.mirroring);
+          this.rbdForm.get('mirroring').disable();
+        } else if (this.mode !== this.rbdFormMode.editing) {
+          this.rbdForm.get('mirroring').enable();
+          this.mirroring = true;
+          this.rbdForm.get('mirroring').setValue(this.mirroring);
+        }
+      });
+    }
+    this.setExclusiveLock();
+  }
+
   private prepareFormForAction() {
     const url = this.routerUrl;
     if (url.startsWith('/block/rbd/edit')) {
@@ -285,6 +337,7 @@ export class RbdFormComponent extends CdForm implements OnInit {
 
   private handleExternalData(data: ExternalData) {
     this.handlePoolData(data.pools);
+    this.setPoolMirrorMode();
 
     if (data.defaultFeatures) {
       // Fetched only during creation
@@ -389,7 +442,8 @@ export class RbdFormComponent extends CdForm implements OnInit {
         objectSizeControl.value != null ? objectSizeControl.value : this.defaultObjectSize
       );
       const stripingCountControl = formGroup.get('stripingCount');
-      const stripingCount = stripingCountControl.value != null ? stripingCountControl.value : 1;
+      const stripingCount =
+        stripingCountControl.value != null ? stripingCountControl.value : this.defaultStripingCount;
       let sizeControlErrors = null;
       if (sizeControl.value === null) {
         sizeControlErrors = { required: true };
@@ -543,6 +597,16 @@ export class RbdFormComponent extends CdForm implements OnInit {
     }
     if (this.mode === this.rbdFormMode.editing) {
       this.rbdForm.get('name').setValue(response.name);
+      if (response?.mirror_mode === 'snapshot' || response.features_name.includes('journaling')) {
+        this.mirroring = true;
+        this.rbdForm.get('mirroring').setValue(this.mirroring);
+        this.rbdForm.get('mirroringMode').setValue(response?.mirror_mode);
+        this.rbdForm.get('schedule').setValue(response?.schedule_interval);
+      } else {
+        this.mirroring = false;
+        this.rbdForm.get('mirroring').setValue(this.mirroring);
+      }
+      this.setPoolMirrorMode();
     }
     this.rbdForm.get('pool').setValue(response.pool_name);
     this.onPoolChange(response.pool_name);
@@ -570,7 +634,11 @@ export class RbdFormComponent extends CdForm implements OnInit {
     request.pool_name = this.rbdForm.getValue('pool');
     request.namespace = this.rbdForm.getValue('namespace');
     request.name = this.rbdForm.getValue('name');
+    request.schedule_interval = this.rbdForm.getValue('schedule');
     request.size = this.formatter.toBytes(this.rbdForm.getValue('size'));
+    if (this.poolMirrorMode === 'image') {
+      request.mirror_mode = this.rbdForm.getValue('mirroringMode');
+    }
     this.addObjectSizeAndStripingToRequest(request);
     request.configuration = this.getDirtyConfigurationValues();
     return request;
@@ -586,6 +654,10 @@ export class RbdFormComponent extends CdForm implements OnInit {
       }
     });
 
+    if (this.mirroring && this.rbdForm.getValue('mirroringMode') === 'journal') {
+      request.features.push('journaling');
+    }
+
     /* Striping */
     request.stripe_unit = this.formatter.toBytes(this.rbdForm.getValue('stripingUnit'));
     request.stripe_count = this.rbdForm.getValue('stripingCount');
@@ -598,7 +670,9 @@ export class RbdFormComponent extends CdForm implements OnInit {
       task: new FinishedTask('rbd/create', {
         pool_name: request.pool_name,
         namespace: request.namespace,
-        image_name: request.name
+        image_name: request.name,
+        schedule_interval: request.schedule_interval,
+        start_time: request.start_time
       }),
       call: this.rbdService.create(request)
     });
@@ -607,12 +681,29 @@ export class RbdFormComponent extends CdForm implements OnInit {
   editRequest() {
     const request = new RbdFormEditRequestModel();
     request.name = this.rbdForm.getValue('name');
+    request.schedule_interval = this.rbdForm.getValue('schedule');
+    request.name = this.rbdForm.getValue('name');
     request.size = this.formatter.toBytes(this.rbdForm.getValue('size'));
     _.forIn(this.features, (feature) => {
       if (this.rbdForm.getValue(feature.key)) {
         request.features.push(feature.key);
       }
     });
+    request.enable_mirror = this.rbdForm.getValue('mirroring');
+    if (this.poolMirrorMode === 'image') {
+      if (request.enable_mirror) {
+        request.mirror_mode = this.rbdForm.getValue('mirroringMode');
+      }
+    } else {
+      if (request.enable_mirror) {
+        request.features.push('journaling');
+      } else {
+        const index = request.features.indexOf('journaling', 0);
+        if (index > -1) {
+          request.features.splice(index, 1);
+        }
+      }
+    }
     request.configuration = this.getDirtyConfigurationValues();
     return request;
   }
index 36c7b5ea86950b41ee1a766fc7668b27fa59d23a..262d79c95baec30e3398582c40f83700577cadf9 100644 (file)
@@ -17,4 +17,10 @@ export class RbdFormModel {
 
   /* Deletion process */
   source?: string;
+
+  enable_mirror?: boolean;
+  mirror_mode?: string;
+
+  schedule_interval: string;
+  start_time: string;
 }
index ea2bd668fbaa9c3eeb57717dcfe9f833156ce680..712d771c5d4e00b212de525b740bd6a08ad99091 100644 (file)
@@ -6,12 +6,15 @@
           [columns]="columns"
           identifier="unique_id"
           [searchableObjects]="true"
+          [serverSide]="true"
+          [count]="count"
           forceIdentifier="true"
           selectionType="single"
           [hasDetails]="true"
           [status]="tableStatus"
+          [maxLimit]="25"
           [autoReload]="-1"
-          (fetchData)="taskListService.fetch()"
+          (fetchData)="taskListService.fetch($event)"
           (setExpandedRow)="setExpandedRow($event)"
           (updateSelection)="updateSelection($event)">
   <cd-table-actions class="table-actions"
@@ -24,7 +27,7 @@
   </cd-rbd-details>
 </cd-table>
 
-<ng-template #usageNotAvailableTooltipTpl>
+<ng-template #scheduleStatus>
   <div i18n
        [innerHtml]="'Only available for RBD images with <strong>fast-diff</strong> enabled'"></div>
 </ng-template>
   <span *ngIf="!value">-</span>
 </ng-template>
 
+<ng-template #mirroringTpl
+             let-value="value"
+             let-row="row">
+  <span *ngIf="value.length === 3; else probb"
+        class="badge badge-info">{{ value[0] }}</span>&nbsp;
+  <span *ngIf="value.length === 3"
+        class="badge badge-info"
+        [ngbTooltip]="'Next scheduled snapshot on' + ' ' + (value[2] | cdDate)">{{ value[1] }}</span>
+  <span *ngIf="row.primary === true"
+        class="badge badge-info"
+        i18n>primary</span>
+  <span *ngIf="row.primary === false"
+        class="badge badge-info"
+        i18n>secondary</span>
+  <ng-template #probb>
+    <span class="badge badge-info">{{ value }}</span>
+  </ng-template>
+</ng-template>
+
 <ng-template #flattenTpl
              let-value>
   You are about to flatten
index 02cf636ac89e67cf9dadeaaf0bcc0718b6ce38a0..fa7a772f02239654f975a54bbb6330c6dc8a5bce 100644 (file)
@@ -1,3 +1,4 @@
+import { HttpHeaders } from '@angular/common/http';
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@@ -8,9 +9,7 @@ import { ToastrModule } from 'ngx-toastr';
 import { BehaviorSubject, of } from 'rxjs';
 
 import { RbdService } from '~/app/shared/api/rbd.service';
-import { TableStatusViewCache } from '~/app/shared/classes/table-status-view-cache';
 import { TableActionsComponent } from '~/app/shared/datatable/table-actions/table-actions.component';
-import { ViewCacheStatus } from '~/app/shared/enum/view-cache-status.enum';
 import { ExecutingTask } from '~/app/shared/models/executing-task';
 import { SummaryService } from '~/app/shared/services/summary.service';
 import { TaskListService } from '~/app/shared/services/task-list.service';
@@ -28,6 +27,7 @@ describe('RbdListComponent', () => {
   let component: RbdListComponent;
   let summaryService: SummaryService;
   let rbdService: RbdService;
+  let headers: HttpHeaders;
 
   const refresh = (data: any) => {
     summaryService['summaryDataSource'].next(data);
@@ -58,6 +58,7 @@ describe('RbdListComponent', () => {
     component = fixture.componentInstance;
     summaryService = TestBed.inject(SummaryService);
     rbdService = TestBed.inject(RbdService);
+    headers = new HttpHeaders().set('X-Total-Count', '10');
 
     // this is needed because summaryService isn't being reset after each test.
     summaryService['summaryDataSource'] = new BehaviorSubject(null);
@@ -88,9 +89,6 @@ describe('RbdListComponent', () => {
       spyOn(component.table, 'reset');
       summaryService['summaryDataSource'].error(undefined);
       expect(component.table.reset).toHaveBeenCalled();
-      expect(component.tableStatus).toEqual(
-        new TableStatusViewCache(ViewCacheStatus.ValueException)
-      );
     });
   });
 
@@ -121,7 +119,9 @@ describe('RbdListComponent', () => {
     });
 
     it('should display N/A for Provisioned & Total Provisioned columns if disk usage is null', () => {
-      rbdServiceListSpy.and.callFake(() => of([{ pool_name: 'rbd', status: 1, value: images }]));
+      rbdServiceListSpy.and.callFake(() =>
+        of([{ pool_name: 'rbd', value: images, headers: headers }])
+      );
       fixture.detectChanges();
       const spanWithoutFastDiff = fixture.debugElement.nativeElement.querySelectorAll(
         '.datatable-body-cell-label span'
@@ -133,7 +133,9 @@ describe('RbdListComponent', () => {
       component.images = images;
       refresh({ executing_tasks: [], finished_tasks: [] });
 
-      rbdServiceListSpy.and.callFake(() => of([{ pool_name: 'rbd', status: 1, value: images }]));
+      rbdServiceListSpy.and.callFake(() =>
+        of([{ pool_name: 'rbd', value: images, headers: headers }])
+      );
       fixture.detectChanges();
 
       const spanWithFastDiff = fixture.debugElement.nativeElement.querySelectorAll(
@@ -258,7 +260,7 @@ describe('RbdListComponent', () => {
       component.images = images;
       refresh({ executing_tasks: [], finished_tasks: [] });
       spyOn(rbdService, 'list').and.callFake(() =>
-        of([{ pool_name: 'rbd', status: 1, value: images }])
+        of([{ pool_name: 'rbd', value: images, headers: headers }])
       );
       fixture.detectChanges();
     });
@@ -297,12 +299,12 @@ describe('RbdListComponent', () => {
 
     it('should show when an existing image is being modified', () => {
       addTask('rbd/edit', 'a');
-      addTask('rbd/delete', 'b');
-      addTask('rbd/flatten', 'c');
-      expect(component.images.length).toBe(3);
       expectItemTasks(component.images[0], 'Updating');
+      addTask('rbd/delete', 'b');
       expectItemTasks(component.images[1], 'Deleting');
+      addTask('rbd/flatten', 'c');
       expectItemTasks(component.images[2], 'Flattening');
+      expect(component.images.length).toBe(3);
     });
   });
 
@@ -314,11 +316,31 @@ describe('RbdListComponent', () => {
 
     expect(tableActions).toEqual({
       'create,update,delete': {
-        actions: ['Create', 'Edit', 'Copy', 'Flatten', 'Delete', 'Move to Trash'],
+        actions: [
+          'Create',
+          'Edit',
+          'Copy',
+          'Flatten',
+          'Resync',
+          'Delete',
+          'Move to Trash',
+          'Remove Scheduling',
+          'Promote',
+          'Demote'
+        ],
         primary: { multiple: 'Create', executing: 'Edit', single: 'Edit', no: 'Create' }
       },
       'create,update': {
-        actions: ['Create', 'Edit', 'Copy', 'Flatten'],
+        actions: [
+          'Create',
+          'Edit',
+          'Copy',
+          'Flatten',
+          'Resync',
+          'Remove Scheduling',
+          'Promote',
+          'Demote'
+        ],
         primary: { multiple: 'Create', executing: 'Edit', single: 'Edit', no: 'Create' }
       },
       'create,delete': {
@@ -330,11 +352,20 @@ describe('RbdListComponent', () => {
         primary: { multiple: 'Create', executing: 'Copy', single: 'Copy', no: 'Create' }
       },
       'update,delete': {
-        actions: ['Edit', 'Flatten', 'Delete', 'Move to Trash'],
+        actions: [
+          'Edit',
+          'Flatten',
+          'Resync',
+          'Delete',
+          'Move to Trash',
+          'Remove Scheduling',
+          'Promote',
+          'Demote'
+        ],
         primary: { multiple: 'Edit', executing: 'Edit', single: 'Edit', no: 'Edit' }
       },
       update: {
-        actions: ['Edit', 'Flatten'],
+        actions: ['Edit', 'Flatten', 'Resync', 'Remove Scheduling', 'Promote', 'Demote'],
         primary: { multiple: 'Edit', executing: 'Edit', single: 'Edit', no: 'Edit' }
       },
       delete: {
index 0ffb25695c8d2e5e3e54c93e42778ac2cb7764a5..983f39ed9be523e7ef53bad5d6f1841cc1a4f558 100644 (file)
@@ -2,18 +2,19 @@ import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
 
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
 import _ from 'lodash';
+import { Observable, Subscriber } from 'rxjs';
 
 import { RbdService } from '~/app/shared/api/rbd.service';
 import { ListWithDetails } from '~/app/shared/classes/list-with-details.class';
-import { TableStatusViewCache } from '~/app/shared/classes/table-status-view-cache';
+import { TableStatus } from '~/app/shared/classes/table-status';
 import { ConfirmationModalComponent } from '~/app/shared/components/confirmation-modal/confirmation-modal.component';
 import { CriticalConfirmationModalComponent } from '~/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { ActionLabelsI18n } from '~/app/shared/constants/app.constants';
 import { TableComponent } from '~/app/shared/datatable/table/table.component';
 import { Icons } from '~/app/shared/enum/icons.enum';
-import { ViewCacheStatus } from '~/app/shared/enum/view-cache-status.enum';
 import { CdTableAction } from '~/app/shared/models/cd-table-action';
 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
+import { CdTableFetchDataContext } from '~/app/shared/models/cd-table-fetch-data-context';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
 import { FinishedTask } from '~/app/shared/models/finished-task';
 import { ImageSpec } from '~/app/shared/models/image-spec';
@@ -22,10 +23,12 @@ import { Task } from '~/app/shared/models/task';
 import { DimlessBinaryPipe } from '~/app/shared/pipes/dimless-binary.pipe';
 import { DimlessPipe } from '~/app/shared/pipes/dimless.pipe';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
+import { CdTableServerSideService } from '~/app/shared/services/cd-table-server-side.service';
 import { ModalService } from '~/app/shared/services/modal.service';
 import { TaskListService } from '~/app/shared/services/task-list.service';
 import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
 import { URLBuilderService } from '~/app/shared/services/url-builder.service';
+import { RbdFormEditRequestModel } from '../rbd-form/rbd-form-edit-request.model';
 import { RbdParentModel } from '../rbd-form/rbd-parent.model';
 import { RbdTrashMoveModalComponent } from '../rbd-trash-move-modal/rbd-trash-move-modal.component';
 import { RBDImageFormat, RbdModel } from './rbd-model';
@@ -50,6 +53,8 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
   parentTpl: TemplateRef<any>;
   @ViewChild('nameTpl')
   nameTpl: TemplateRef<any>;
+  @ViewChild('mirroringTpl', { static: true })
+  mirroringTpl: TemplateRef<any>;
   @ViewChild('flattenTpl', { static: true })
   flattenTpl: TemplateRef<any>;
   @ViewChild('deleteTpl', { static: true })
@@ -66,10 +71,11 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
   images: any;
   columns: CdTableColumn[];
   retries: number;
-  tableStatus = new TableStatusViewCache();
+  tableStatus = new TableStatus('light');
   selection = new CdTableSelection();
   icons = Icons;
-
+  count = 0;
+  private tableContext: CdTableFetchDataContext = null;
   modalRef: NgbModalRef;
 
   builders = {
@@ -89,6 +95,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         metadata['dest_image_name']
       )
   };
+  remove_scheduling: boolean;
 
   private createRbdFromTaskImageSpec(imageSpecStr: string): RbdModel {
     const imageSpec = ImageSpec.fromString(imageSpecStr);
@@ -148,6 +155,13 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
       name: this.actionLabels.DELETE,
       disable: (selection: CdTableSelection) => this.getDeleteDisableDesc(selection)
     };
+    const resyncAction: CdTableAction = {
+      permission: 'update',
+      icon: Icons.refresh,
+      click: () => this.resyncRbdModal(),
+      name: this.actionLabels.RESYNC,
+      disable: (selection: CdTableSelection) => this.getResyncDisableDesc(selection)
+    };
     const copyAction: CdTableAction = {
       permission: 'create',
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
@@ -180,13 +194,41 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         this.getInvalidNameDisable(selection) ||
         selection.first().image_format === RBDImageFormat.V1
     };
+    const removeSchedulingAction: CdTableAction = {
+      permission: 'update',
+      icon: Icons.edit,
+      click: () => this.removeSchedulingModal(),
+      name: this.actionLabels.REMOVE_SCHEDULING,
+      disable: (selection: CdTableSelection) =>
+        this.getRemovingStatusDesc(selection) ||
+        this.getInvalidNameDisable(selection) ||
+        selection.first().schedule_info === undefined
+    };
+    const promoteAction: CdTableAction = {
+      permission: 'update',
+      icon: Icons.edit,
+      click: () => this.actionPrimary(true),
+      name: this.actionLabels.PROMOTE,
+      visible: () => this.selection.first() != null && !this.selection.first().primary
+    };
+    const demoteAction: CdTableAction = {
+      permission: 'update',
+      icon: Icons.edit,
+      click: () => this.actionPrimary(false),
+      name: this.actionLabels.DEMOTE,
+      visible: () => this.selection.first() != null && this.selection.first().primary
+    };
     this.tableActions = [
       addAction,
       editAction,
       copyAction,
       flattenAction,
+      resyncAction,
       deleteAction,
-      moveAction
+      moveAction,
+      removeSchedulingAction,
+      promoteAction,
+      demoteAction
     ];
   }
 
@@ -213,6 +255,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         prop: 'size',
         flexGrow: 1,
         cellClass: 'text-right',
+        sortable: false,
         pipe: this.dimlessBinaryPipe
       },
       {
@@ -220,6 +263,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         prop: 'num_objs',
         flexGrow: 1,
         cellClass: 'text-right',
+        sortable: false,
         pipe: this.dimlessPipe
       },
       {
@@ -227,6 +271,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         prop: 'obj_size',
         flexGrow: 1,
         cellClass: 'text-right',
+        sortable: false,
         pipe: this.dimlessBinaryPipe
       },
       {
@@ -235,6 +280,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         cellClass: 'text-center',
         flexGrow: 1,
         pipe: this.dimlessBinaryPipe,
+        sortable: false,
         cellTemplate: this.provisionedNotAvailableTooltipTpl
       },
       {
@@ -243,13 +289,22 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
         cellClass: 'text-center',
         flexGrow: 1,
         pipe: this.dimlessBinaryPipe,
+        sortable: false,
         cellTemplate: this.totalProvisionedNotAvailableTooltipTpl
       },
       {
         name: $localize`Parent`,
         prop: 'parent',
         flexGrow: 2,
+        sortable: false,
         cellTemplate: this.parentTpl
+      },
+      {
+        name: $localize`Mirroring`,
+        prop: 'mirror_mode',
+        flexGrow: 3,
+        sortable: false,
+        cellTemplate: this.mirroringTpl
       }
     ];
 
@@ -299,7 +354,7 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
     };
 
     this.taskListService.init(
-      () => this.rbdService.list(),
+      (context) => this.getRbdImages(context),
       (resp) => this.prepareResponse(resp),
       (images) => (this.images = images),
       () => this.onFetchError(),
@@ -311,40 +366,44 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
 
   onFetchError() {
     this.table.reset(); // Disable loading indicator.
-    this.tableStatus = new TableStatusViewCache(ViewCacheStatus.ValueException);
+    this.tableStatus = new TableStatus('danger');
+  }
+
+  getRbdImages(context: CdTableFetchDataContext) {
+    if (context !== null) {
+      this.tableContext = context;
+    }
+    if (this.tableContext == null) {
+      this.tableContext = new CdTableFetchDataContext(() => undefined);
+    }
+    return this.rbdService.list(this.tableContext?.toParams());
   }
 
   prepareResponse(resp: any[]): any[] {
     let images: any[] = [];
-    const viewCacheStatusMap = {};
 
     resp.forEach((pool) => {
-      if (_.isUndefined(viewCacheStatusMap[pool.status])) {
-        viewCacheStatusMap[pool.status] = [];
-      }
-      viewCacheStatusMap[pool.status].push(pool.pool_name);
       images = images.concat(pool.value);
     });
 
-    let status: number;
-    if (viewCacheStatusMap[ViewCacheStatus.ValueException]) {
-      status = ViewCacheStatus.ValueException;
-    } else if (viewCacheStatusMap[ViewCacheStatus.ValueStale]) {
-      status = ViewCacheStatus.ValueStale;
-    } else if (viewCacheStatusMap[ViewCacheStatus.ValueNone]) {
-      status = ViewCacheStatus.ValueNone;
-    }
-
-    if (status) {
-      const statusFor =
-        (viewCacheStatusMap[status].length > 1 ? 'pools ' : 'pool ') +
-        viewCacheStatusMap[status].join();
+    images.forEach((image) => {
+      if (image.schedule_info !== undefined) {
+        let scheduling: any[] = [];
+        const scheduleStatus = 'scheduled';
+        let nextSnapshotDate = +new Date(image.schedule_info.schedule_time);
+        const offset = new Date().getTimezoneOffset();
+        nextSnapshotDate = nextSnapshotDate + Math.abs(offset) * 60000;
+        scheduling.push(image.mirror_mode, scheduleStatus, nextSnapshotDate);
+        image.mirror_mode = scheduling;
+        scheduling = [];
+      }
+    });
 
-      this.tableStatus = new TableStatusViewCache(status, statusFor);
+    if (images.length > 0) {
+      this.count = CdTableServerSideService.getCount(resp[0]);
     } else {
-      this.tableStatus = new TableStatusViewCache();
+      this.count = 0;
     }
-
     return images;
   }
 
@@ -376,6 +435,26 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
     });
   }
 
+  resyncRbdModal() {
+    const poolName = this.selection.first().pool_name;
+    const namespace = this.selection.first().namespace;
+    const imageName = this.selection.first().name;
+    const imageSpec = new ImageSpec(poolName, namespace, imageName);
+
+    this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
+      itemDescription: 'RBD',
+      itemNames: [imageSpec],
+      actionDescription: 'resync',
+      submitActionObservable: () =>
+        this.taskWrapper.wrapTaskAroundCall({
+          task: new FinishedTask('rbd/edit', {
+            image_spec: imageSpec.toString()
+          }),
+          call: this.rbdService.update(imageSpec, { resync: true })
+        })
+    });
+  }
+
   trashRbdModal() {
     const initialState = {
       poolName: this.selection.first().pool_name,
@@ -429,6 +508,62 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
     this.modalRef = this.modalService.show(ConfirmationModalComponent, initialState);
   }
 
+  editRequest() {
+    const request = new RbdFormEditRequestModel();
+    request.remove_scheduling = !request.remove_scheduling;
+    return request;
+  }
+
+  removeSchedulingModal() {
+    const imageName = this.selection.first().name;
+
+    const imageSpec = new ImageSpec(
+      this.selection.first().pool_name,
+      this.selection.first().namespace,
+      this.selection.first().name
+    );
+
+    this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
+      actionDescription: 'remove scheduling on',
+      itemDescription: $localize`image`,
+      itemNames: [`${imageName}`],
+      submitActionObservable: () =>
+        new Observable((observer: Subscriber<any>) => {
+          this.taskWrapper
+            .wrapTaskAroundCall({
+              task: new FinishedTask('rbd/edit', {
+                image_spec: imageSpec.toString()
+              }),
+              call: this.rbdService.update(imageSpec, this.editRequest())
+            })
+            .subscribe({
+              error: (resp) => observer.error(resp),
+              complete: () => {
+                this.modalRef.close();
+              }
+            });
+        })
+    });
+  }
+
+  actionPrimary(primary: boolean) {
+    const request = new RbdFormEditRequestModel();
+    request.primary = primary;
+    const imageSpec = new ImageSpec(
+      this.selection.first().pool_name,
+      this.selection.first().namespace,
+      this.selection.first().name
+    );
+    this.taskWrapper
+      .wrapTaskAroundCall({
+        task: new FinishedTask('rbd/edit', {
+          image_spec: imageSpec.toString()
+        }),
+        call: this.rbdService.update(imageSpec, request)
+      })
+      .subscribe();
+  }
+
   hasSnapshots() {
     const snapshots = this.selection.first()['snapshots'] || [];
     return snapshots.length > 0;
@@ -460,6 +595,19 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
     return this.getInvalidNameDisable(selection) || this.hasClonedSnapshots(selection.first());
   }
 
+  getResyncDisableDesc(selection: CdTableSelection): string | boolean {
+    const first = selection.first();
+
+    if (first && this.imageIsPrimary(first)) {
+      return $localize`Primary RBD images cannot be resynced`;
+    }
+
+    return this.getInvalidNameDisable(selection);
+  }
+
+  imageIsPrimary(image: object) {
+    return image['primary'];
+  }
   getInvalidNameDisable(selection: CdTableSelection): string | boolean {
     const first = selection.first();
 
index 002c8e57c02036830a38eb3b1e44bb4e8c98b583..e8116ea2a86d2b3af772b5bcc9cd2237ab752ab6 100644 (file)
@@ -1,6 +1,7 @@
 <cd-rbd-tabs></cd-rbd-tabs>
 
 <cd-grafana [grafanaPath]="'rbd-overview?'"
+            [type]="'metrics'"
             uid="41FrpeUiz"
             grafanaStyle="two">
 </cd-grafana>
index da8a2cd25b505993c264ae01d499d3941e8e6115..598e3fd3843ecf27d6e1b9edc44e27c61cbc99f8 100644 (file)
                    placeholder="Snapshot name..."
                    id="snapshotName"
                    name="snapshotName"
+                   [attr.disabled]="(mirroring === 'snapshot') ? true : null"
                    formControlName="snapshotName"
                    autofocus>
             <span class="invalid-feedback"
                   *ngIf="snapshotForm.showError('snapshotName', formDir, 'required')"
-                  i18n>This field is required.</span>
+                  i18n>This field is required.</span><br><br>
+            <span *ngIf="mirroring === 'snapshot'"
+                  i18n>Snapshot mode is enabled on image <b>{{ imageName }}</b>: snapshot names are auto generated</span>
           </div>
         </div>
       </div>
index 83296866c1af7a48be7da44969422493c719873f..d5861163f198b836cbb4221bb91075248c929a0e 100644 (file)
@@ -22,6 +22,7 @@ export class RbdSnapshotFormModalComponent {
   namespace: string;
   imageName: string;
   snapName: string;
+  mirroring: string;
 
   snapshotForm: CdFormGroup;
 
@@ -53,7 +54,11 @@ export class RbdSnapshotFormModalComponent {
 
   setSnapName(snapName: string) {
     this.snapName = snapName;
-    this.snapshotForm.get('snapshotName').setValue(snapName);
+    if (this.mirroring !== 'snapshot') {
+      this.snapshotForm.get('snapshotName').setValue(snapName);
+    } else {
+      this.snapshotForm.get('snapshotName').clearValidators();
+    }
   }
 
   /**
index 01ea8cbdcdb049326b62212c05ad2194ae5c31b7..cc0d61f91aa0720d63e933059b108cbe92390628 100644 (file)
@@ -34,27 +34,31 @@ export class RbdSnapshotActionsModel {
     this.rename = {
       permission: 'update',
       icon: Icons.edit,
-      name: actionLabels.RENAME
+      name: actionLabels.RENAME,
+      disable: (selection: CdTableSelection) => this.disableForMirrorSnapshot(selection)
     };
     this.protect = {
       permission: 'update',
       icon: Icons.lock,
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && !selection.first().is_protected,
-      name: actionLabels.PROTECT
+      name: actionLabels.PROTECT,
+      disable: (selection: CdTableSelection) => this.disableForMirrorSnapshot(selection)
     };
     this.unprotect = {
       permission: 'update',
       icon: Icons.unlock,
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && selection.first().is_protected,
-      name: actionLabels.UNPROTECT
+      name: actionLabels.UNPROTECT,
+      disable: (selection: CdTableSelection) => this.disableForMirrorSnapshot(selection)
     };
     this.clone = {
       permission: 'create',
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
       disable: (selection: CdTableSelection) =>
-        this.getCloneDisableDesc(selection, this.featuresName),
+        this.getCloneDisableDesc(selection, this.featuresName) ||
+        this.disableForMirrorSnapshot(selection),
       icon: Icons.clone,
       name: actionLabels.CLONE
     };
@@ -62,21 +66,29 @@ export class RbdSnapshotActionsModel {
       permission: 'create',
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
       disable: (selection: CdTableSelection) =>
-        !selection.hasSingleSelection || selection.first().cdExecuting,
+        !selection.hasSingleSelection ||
+        selection.first().cdExecuting ||
+        this.disableForMirrorSnapshot(selection),
       icon: Icons.copy,
       name: actionLabels.COPY
     };
     this.rollback = {
       permission: 'update',
       icon: Icons.undo,
-      name: actionLabels.ROLLBACK
+      name: actionLabels.ROLLBACK,
+      disable: (selection: CdTableSelection) => this.disableForMirrorSnapshot(selection)
     };
     this.deleteSnap = {
       permission: 'delete',
       icon: Icons.destroy,
       disable: (selection: CdTableSelection) => {
         const first = selection.first();
-        return !selection.hasSingleSelection || first.cdExecuting || first.is_protected;
+        return (
+          !selection.hasSingleSelection ||
+          first.cdExecuting ||
+          first.is_protected ||
+          this.disableForMirrorSnapshot(selection)
+        );
       },
       name: actionLabels.DELETE
     };
@@ -108,4 +120,12 @@ export class RbdSnapshotActionsModel {
 
     return true;
   }
+
+  disableForMirrorSnapshot(selection: CdTableSelection) {
+    return (
+      selection.hasSingleSelection &&
+      selection.first().mirror_mode === 'snapshot' &&
+      selection.first().name.includes('.mirror.')
+    );
+  }
 }
index 6a8be5b134a25b45d391047255c2b2ac159bf62f..df66b0e8842ae01dd96e61d657e635cbbc8626c4 100644 (file)
@@ -56,6 +56,8 @@ export class RbdSnapshotListComponent implements OnInit, OnChanges {
   @Input()
   namespace: string;
   @Input()
+  mirroring: string;
+  @Input()
   rbdName: string;
   @ViewChild('nameTpl')
   nameTpl: TemplateRef<any>;
@@ -210,7 +212,10 @@ export class RbdSnapshotListComponent implements OnInit, OnChanges {
   }
 
   private openSnapshotModal(taskName: string, snapName: string = null) {
-    this.modalRef = this.modalService.show(RbdSnapshotFormModalComponent);
+    const modalVariables = {
+      mirroring: this.mirroring
+    };
+    this.modalRef = this.modalService.show(RbdSnapshotFormModalComponent, modalVariables);
     this.modalRef.componentInstance.poolName = this.poolName;
     this.modalRef.componentInstance.imageName = this.rbdName;
     this.modalRef.componentInstance.namespace = this.namespace;
index 7a222a1000e32e5fa72be822bff4e3ccbb6a4558..830645d2b6fca0a2a43c5f483254f14b8313c7b9 100644 (file)
@@ -36,6 +36,7 @@
          i18n>Performance Details</a>
       <ng-template ngbNavContent>
         <cd-grafana [grafanaPath]="'mds-performance?var-mds_servers=mds.' + grafanaId"
+                    [type]="'metrics'"
                     uid="tbO9LAiZz"
                     grafanaStyle="one">
         </cd-grafana>
index 7fbc6718576538f84d836888a02e9b9709473aea..750fef894fb9508756adb17bdd58e8236956f97e 100644 (file)
@@ -45,8 +45,6 @@
           class="cd-header">Host Details</legend>
   <cd-hosts [hiddenColumns]="['services', 'status']"
             [hideToolHeader]="true"
-            [hideTitle]="true"
-            [hideSubmitBtn]="true"
             [hasTableDetails]="false"
             [showGeneralActionsOnly]="true">
   </cd-hosts>
index 4a4bb109472f83303572e7da1b7f97375d6599ef..82429e6dda4e27ce96a1236694c379422a4435d1 100644 (file)
           <button class="btn btn-accent m-2"
                   name="expand-cluster"
                   (click)="createCluster()"
+                  aria-label="Expand Cluster"
                   i18n>Expand Cluster</button>
           <button class="btn btn-light"
                   name="skip-cluster-creation"
+                  aria-label="Skip"
                   (click)="skipClusterCreation()"
                   i18n>Skip</button>
         </div>
@@ -41,8 +43,7 @@
               i18n>Add Hosts</h4>
           <br>
           <cd-hosts [hiddenColumns]="['services']"
-                    [hideTitle]="true"
-                    [hideSubmitBtn]="true"
+                    [hideMaintenance]="true"
                     [hasTableDetails]="false"
                     [showGeneralActionsOnly]="true"></cd-hosts>
         </div>
              class="ml-5">
           <h4 class="title"
               i18n>Create OSDs</h4>
-          <br>
           <div class="alignForm">
             <cd-osd-form [hideTitle]="true"
                          [hideSubmitBtn]="true"
-                         (emitDriveGroup)="getDriveGroup($event)"></cd-osd-form>
+                         (emitDriveGroup)="setDriveGroup($event)"
+                         (emitDeploymentOption)="setDeploymentOptions($event)"
+                         (emitMode)="setDeploymentMode($event)"></cd-osd-form>
           </div>
         </div>
         <div *ngSwitchCase="'3'"
index a2e88899a66e261ca6682178fd0c3be7b0c8f56f..313f3193bfbabe24f1b02b38c75fbf866f70dc45 100644 (file)
@@ -1,5 +1,3 @@
-@use './src/styles/vendor/variables' as vv;
-
 .container-fluid {
   align-items: flex-start;
   display: flex;
@@ -7,24 +5,18 @@
   width: 100%;
 }
 
-.card-body {
-  max-width: 85%;
-}
-
-.vertical-line {
-  border-left: 1px solid vv.$gray-400;
-}
-
-cd-wizard {
-  width: 15%;
-}
-
 cd-hosts {
   ::ng-deep .nav {
     display: none;
   }
 }
 
-.alignForm {
-  margin-left: -1%;
+cd-osd-form {
+  ::ng-deep .card {
+    border: 0;
+  }
+
+  ::ng-deep .accordion {
+    margin-left: -1.5rem;
+  }
 }
index 3e0b7f7bdcce71ac83f165127ab8044909110501..0563c4a803a951952c741a86786a58369e39b88d 100644 (file)
@@ -131,6 +131,7 @@ describe('CreateClusterComponent', () => {
   });
 
   it('should ensure osd creation did not happen when no devices are selected', () => {
+    component.simpleDeployment = false;
     const osdServiceSpy = spyOn(osdService, 'create').and.callThrough();
     component.onSubmit();
     fixture.detectChanges();
index 743902b712d8c36bfd5c9537973054b6a8b1c087..02333c39bf6170a958580108aa88abac9606cda1 100644 (file)
@@ -1,4 +1,12 @@
-import { Component, EventEmitter, OnDestroy, Output, TemplateRef, ViewChild } from '@angular/core';
+import {
+  Component,
+  EventEmitter,
+  OnDestroy,
+  OnInit,
+  Output,
+  TemplateRef,
+  ViewChild
+} from '@angular/core';
 import { Router } from '@angular/router';
 
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
@@ -13,6 +21,7 @@ import { ConfirmationModalComponent } from '~/app/shared/components/confirmation
 import { ActionLabelsI18n, AppConstants, URLVerbs } from '~/app/shared/constants/app.constants';
 import { NotificationType } from '~/app/shared/enum/notification-type.enum';
 import { FinishedTask } from '~/app/shared/models/finished-task';
+import { DeploymentOptions } from '~/app/shared/models/osd-deployment-options';
 import { Permissions } from '~/app/shared/models/permissions';
 import { WizardStepModel } from '~/app/shared/models/wizard-steps';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
@@ -27,7 +36,7 @@ import { DriveGroup } from '../osd/osd-form/drive-group.model';
   templateUrl: './create-cluster.component.html',
   styleUrls: ['./create-cluster.component.scss']
 })
-export class CreateClusterComponent implements OnDestroy {
+export class CreateClusterComponent implements OnInit, OnDestroy {
   @ViewChild('skipConfirmTpl', { static: true })
   skipConfirmTpl: TemplateRef<any>;
   currentStep: WizardStepModel;
@@ -40,6 +49,9 @@ export class CreateClusterComponent implements OnDestroy {
   modalRef: NgbModalRef;
   driveGroup = new DriveGroup();
   driveGroups: Object[] = [];
+  deploymentOption: DeploymentOptions;
+  selectedOption = {};
+  simpleDeployment = true;
 
   @Output()
   submitAction = new EventEmitter();
@@ -65,6 +77,13 @@ export class CreateClusterComponent implements OnDestroy {
     this.currentStep.stepIndex = 1;
   }
 
+  ngOnInit(): void {
+    this.osdService.getDeploymentOptions().subscribe((options) => {
+      this.deploymentOption = options;
+      this.selectedOption = { option: options.recommended_option };
+    });
+  }
+
   createCluster() {
     this.startClusterCreation = true;
   }
@@ -118,34 +137,63 @@ export class CreateClusterComponent implements OnDestroy {
           error: (error) => error.preventDefault()
         });
     });
+
     if (this.driveGroup) {
       const user = this.authStorageService.getUsername();
       this.driveGroup.setName(`dashboard-${user}-${_.now()}`);
       this.driveGroups.push(this.driveGroup.spec);
     }
 
-    if (this.osdService.osdDevices['totalDevices'] > 0) {
+    if (this.simpleDeployment) {
+      const title = this.deploymentOption?.options[this.selectedOption['option']].title;
+      const trackingId = $localize`${title} deployment`;
       this.taskWrapper
         .wrapTaskAroundCall({
           task: new FinishedTask('osd/' + URLVerbs.CREATE, {
-            tracking_id: _.join(_.map(this.driveGroups, 'service_id'), ', ')
+            tracking_id: trackingId
           }),
-          call: this.osdService.create(this.driveGroups)
+          call: this.osdService.create([this.selectedOption], trackingId, 'predefined')
         })
         .subscribe({
           error: (error) => error.preventDefault(),
           complete: () => {
             this.submitAction.emit();
-            this.osdService.osdDevices = [];
           }
         });
+    } else {
+      if (this.osdService.osdDevices['totalDevices'] > 0) {
+        this.driveGroup.setFeature('encrypted', this.selectedOption['encrypted']);
+        const trackingId = _.join(_.map(this.driveGroups, 'service_id'), ', ');
+        this.taskWrapper
+          .wrapTaskAroundCall({
+            task: new FinishedTask('osd/' + URLVerbs.CREATE, {
+              tracking_id: trackingId
+            }),
+            call: this.osdService.create(this.driveGroups, trackingId)
+          })
+          .subscribe({
+            error: (error) => error.preventDefault(),
+            complete: () => {
+              this.submitAction.emit();
+              this.osdService.osdDevices = [];
+            }
+          });
+      }
     }
   }
 
-  getDriveGroup(driveGroup: DriveGroup) {
+  setDriveGroup(driveGroup: DriveGroup) {
     this.driveGroup = driveGroup;
   }
 
+  setDeploymentOptions(option: object) {
+    this.selectedOption = option;
+  }
+
+  setDeploymentMode(mode: boolean) {
+    this.simpleDeployment = mode;
+  }
+
   onNextStep() {
     if (!this.wizardStepsService.isLastStep()) {
       this.wizardStepsService.getCurrentStep().subscribe((step: WizardStepModel) => {
index a138768c351f4328a71b396ebf63996b0d4cf976..5803776d0aaefb28813c17accc2495a01386f7d7 100644 (file)
@@ -35,6 +35,7 @@
          i18n>Performance Details</a>
       <ng-template ngbNavContent>
         <cd-grafana [grafanaPath]="'host-details?var-ceph_hosts=' + selectedHostname"
+                    [type]="'metrics'"
                     uid="rtOg0AiWz"
                     grafanaStyle="four">
         </cd-grafana>
index 66fe42f7fa845d11759751ee0368a9cd45c79269..af09b9a4fefa6e68115fb829f0f86d27a9dcbe5a 100644 (file)
@@ -80,7 +80,8 @@
           </div>
 
           <!-- Maintenance Mode -->
-          <div class="form-group row">
+          <div class="form-group row"
+               *ngIf="!hideMaintenance">
             <div class="cd-col-form-offset">
               <div class="custom-control custom-checkbox">
                 <input class="custom-control-input"
index 6bfb79d679c8884e36d2138deabc5c4ac6b58aa6..9031ca5f78ad08c992d6c2684dad18b8dc179b54 100644 (file)
@@ -32,6 +32,7 @@ export class HostFormComponent extends CdForm implements OnInit {
   pageURL: string;
   hostPattern = false;
   labelsOption: Array<SelectOption> = [];
+  hideMaintenance: boolean;
 
   messages = new SelectMessages({
     empty: $localize`There are no labels.`,
@@ -91,7 +92,7 @@ export class HostFormComponent extends CdForm implements OnInit {
         validators: [CdValidators.ip()]
       }),
       labels: new FormControl([]),
-      maintenance: new FormControl({ value: false, disabled: this.pageURL !== 'hosts' })
+      maintenance: new FormControl(false)
     });
   }
 
index b41ecfa8663302264a2a0246701838930040d36f..b8a17135af4379336f6f6c00176e0769e7d534c7 100644 (file)
@@ -36,6 +36,7 @@
        i18n>Overall Performance</a>
     <ng-template ngbNavContent>
       <cd-grafana [grafanaPath]="'host-overview?'"
+                  [type]="'metrics'"
                   uid="y0KGL0iZz"
                   grafanaStyle="two">
       </cd-grafana>
index 60cedf853c9ce6037268592c0c9967e88c570f76..73459a364d50ef2dba6c60c7d233cce3d0818cde 100644 (file)
@@ -3,7 +3,7 @@ import { Router } from '@angular/router';
 
 import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
 import _ from 'lodash';
-import { Subscription } from 'rxjs';
+import { Observable, Subscription } from 'rxjs';
 import { map, mergeMap } from 'rxjs/operators';
 
 import { HostService } from '~/app/shared/api/host.service';
@@ -22,6 +22,7 @@ import { CdTableAction } from '~/app/shared/models/cd-table-action';
 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '~/app/shared/models/cd-table-fetch-data-context';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
+import { Daemon } from '~/app/shared/models/daemon.interface';
 import { FinishedTask } from '~/app/shared/models/finished-task';
 import { OrchestratorFeature } from '~/app/shared/models/orchestrator.enum';
 import { OrchestratorStatus } from '~/app/shared/models/orchestrator.interface';
@@ -61,10 +62,7 @@ export class HostsComponent extends ListWithDetails implements OnDestroy, OnInit
   hiddenColumns: string[] = [];
 
   @Input()
-  hideTitle = false;
-
-  @Input()
-  hideSubmitBtn = false;
+  hideMaintenance = false;
 
   @Input()
   hasTableDetails = true;
@@ -129,7 +127,9 @@ export class HostsComponent extends ListWithDetails implements OnDestroy, OnInit
         click: () =>
           this.router.url.includes('/hosts')
             ? this.router.navigate([BASE_URL, { outlets: { modal: [URLVerbs.ADD] } }])
-            : (this.bsModalRef = this.modalService.show(HostFormComponent)),
+            : (this.bsModalRef = this.modalService.show(HostFormComponent, {
+                hideMaintenance: this.hideMaintenance
+              })),
         disable: (selection: CdTableSelection) => this.getDisable('add', selection)
       },
       {
@@ -496,12 +496,29 @@ export class HostsComponent extends ListWithDetails implements OnDestroy, OnInit
           hostList.map((host) => {
             const counts = {};
             host['service_instances'] = new Set<string>();
-            host['services'].forEach((service: any) => {
-              counts[service.type] = (counts[service.type] || 0) + 1;
-            });
-            host['services'].map((service: any) => {
-              host['service_instances'].add(`${service.type}: ${counts[service.type]}`);
-            });
+            if (this.orchStatus?.available) {
+              let daemons: Daemon[] = [];
+              let observable: Observable<Daemon[]>;
+              observable = this.hostService.getDaemons(host['hostname']);
+              observable.subscribe((dmns: Daemon[]) => {
+                daemons = dmns;
+                daemons.forEach((daemon: any) => {
+                  counts[daemon.daemon_type] = (counts[daemon.daemon_type] || 0) + 1;
+                });
+                daemons.map((daemon: any) => {
+                  host['service_instances'].add(
+                    `${daemon.daemon_type}: ${counts[daemon.daemon_type]}`
+                  );
+                });
+              });
+            } else {
+              host['services'].forEach((service: any) => {
+                counts[service.type] = (counts[service.type] || 0) + 1;
+              });
+              host['services'].map((service: any) => {
+                host['service_instances'].add(`${service.type}: ${counts[service.type]}`);
+              });
+            }
             return host;
           })
         )
index dd55a678fb19614aaa5fae3d75eace193ce3d774..d5c73eb73904a198f8e66319ad2abefbd17fb544 100644 (file)
         </div>
       </ng-template>
     </li>
+    <li ngbNavItem="daemon-logs">
+      <a ngbNavLink
+         i18n>Daemon Logs</a>
+      <ng-template ngbNavContent>
+        <ng-container *ngIf="lokiServiceStatus$ | async as lokiServiceStatus; else daemonLogsTpl">
+          <div *ngIf="promtailServiceStatus$ | async as promtailServiceStatus; else daemonLogsTpl">
+            <cd-grafana [grafanaPath]="'explore?'"
+                        [type]="'logs'"
+                        uid="CrAHE0iZz"
+                        grafanaStyle="two">
+            </cd-grafana>
+          </div>
+        </ng-container>
+      </ng-template>
+    </li>
   </ul>
 
   <div [ngbNavOutlet]="nav"></div>
      (click)="resetFilter()"
      i18n>Reset filter.</a>
 </ng-template>
+
+<ng-template #daemonLogsTpl>
+  <cd-alert-panel type="info"
+                  title="Loki/Promtail service not running"
+                  i18n-title>
+  <ng-container i18n>Please start the loki and promtail service to see these logs.</ng-container>
+  </cd-alert-panel>
+</ng-template>
index 420da495891425d34954fdf15fd215c22903978e..ed8c721eaf3e1f6b3440d091c4c829dc01edf366 100644 (file)
@@ -2,7 +2,10 @@ import { DatePipe } from '@angular/common';
 import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
 
 import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
 
+import { CephServiceService } from '~/app/shared/api/ceph-service.service';
 import { LogsService } from '~/app/shared/api/logs.service';
 import { Icons } from '~/app/shared/enum/icons.enum';
 
@@ -18,6 +21,8 @@ export class LogsComponent implements OnInit, OnDestroy {
   icons = Icons;
   clogText: string;
   auditLogText: string;
+  lokiServiceStatus$: Observable<boolean>;
+  promtailServiceStatus$: Observable<boolean>;
 
   interval: number;
   priorities: Array<{ name: string; value: string }> = [
@@ -40,6 +45,7 @@ export class LogsComponent implements OnInit, OnDestroy {
 
   constructor(
     private logsService: LogsService,
+    private cephService: CephServiceService,
     private datePipe: DatePipe,
     private ngZone: NgZone
   ) {}
@@ -47,6 +53,7 @@ export class LogsComponent implements OnInit, OnDestroy {
   ngOnInit() {
     this.getInfo();
     this.ngZone.runOutsideAngular(() => {
+      this.getDaemonDetails();
       this.interval = window.setInterval(() => {
         this.ngZone.run(() => {
           this.getInfo();
@@ -59,6 +66,19 @@ export class LogsComponent implements OnInit, OnDestroy {
     clearInterval(this.interval);
   }
 
+  getDaemonDetails() {
+    this.lokiServiceStatus$ = this.cephService.getDaemons('loki').pipe(
+      map((data: any) => {
+        return data.length > 0 && data[0].status === 1;
+      })
+    );
+    this.promtailServiceStatus$ = this.cephService.getDaemons('promtail').pipe(
+      map((data: any) => {
+        return data.length > 0 && data[0].status === 1;
+      })
+    );
+  }
+
   getInfo() {
     this.logsService.getLogs().subscribe((data: any) => {
       this.contentData = data;
index 979dcc3411fb55ed59b1e2f75107fb4cd3e167ee..3e1b0f067c47aae60ceeecb207bac3fe670de3fe 100644 (file)
@@ -41,12 +41,13 @@ export class OsdCreationPreviewModalComponent {
   }
 
   onSubmit() {
+    const trackingId = _.join(_.map(this.driveGroups, 'service_id'), ', ');
     this.taskWrapper
       .wrapTaskAroundCall({
         task: new FinishedTask('osd/' + URLVerbs.CREATE, {
-          tracking_id: _.join(_.map(this.driveGroups, 'service_id'), ', ')
+          tracking_id: trackingId
         }),
-        call: this.osdService.create(this.driveGroups)
+        call: this.osdService.create(this.driveGroups, trackingId)
       })
       .subscribe({
         error: () => {
index bd85e2255689ba1291f3afaabb36d229b8b01289..56eee8c8b9c432dba8c8b46c73f8fd417db8448b 100644 (file)
@@ -56,6 +56,7 @@
          i18n>Performance Details</a>
       <ng-template ngbNavContent>
         <cd-grafana [grafanaPath]="'osd-device-details?var-osd=osd.' + osd['id']"
+                    [type]="'metrics'"
                     uid="CrAHE0iZz"
                     grafanaStyle="three">
         </cd-grafana>
index 59a17362f6f834eb55da7c9f3999e8e90202dbbc..d4b6d9faea1099d2ce677d218a838d4d35035081 100644 (file)
 <cd-orchestrator-doc-panel *ngIf="!hasOrchestrator"></cd-orchestrator-doc-panel>
 
-<div class="cd-col-form"
+<div class="card"
      *cdFormLoading="loading">
-  <form name="form"
-        #formDir="ngForm"
-        [formGroup]="form"
-        novalidate>
-    <div class="card">
-      <div i18n="form title|Example: Create Pool@@formTitle"
-           class="card-header"
-           *ngIf="!hideTitle">{{ action | titlecase }} {{ resource | upperFirst }}</div>
-      <div class="card-body">
-        <fieldset>
-          <cd-osd-devices-selection-groups #dataDeviceSelectionGroups
-                                           name="Primary"
-                                           type="data"
-                                           [availDevices]="availDevices"
-                                           [canSelect]="availDevices.length !== 0"
-                                           (selected)="onDevicesSelected($event)"
-                                           (cleared)="onDevicesCleared($event)">
-          </cd-osd-devices-selection-groups>
-        </fieldset>
+  <div i18n="form title|Example: Create Pool@@formTitle"
+       class="card-header"
+       *ngIf="!hideTitle">{{ action | titlecase }} {{ resource | upperFirst }}</div>
+  <div class="card-body ml-2">
+    <form name="form"
+          #formDir="ngForm"
+          [formGroup]="form"
+          novalidate>
+      <div class="accordion">
+        <div class="card">
+          <div class="card-header">
+            <h2 class="mb-0">
+              <button class="btn btn-link btn-block text-left dropdown-toggle"
+                      data-toggle="collapse"
+                      aria-label="toggle deployment options"
+                      [attr.aria-expanded]="simpleDeployment"
+                      (click)="emitDeploymentMode()"
+                      i18n>Deployment Options</button>
+            </h2>
+          </div>
+        </div>
+        <div class="collapse"
+             [ngClass]="{show: simpleDeployment}">
+          <div class="card-body d-flex flex-column">
+            <div class="pt-3 pb-3"
+                 *ngFor="let optionName of optionNames">
+              <div class="custom-control custom-radio custom-control-inline">
+                <input class="custom-control-input"
+                       type="radio"
+                       name="deploymentOption"
+                       [id]="optionName"
+                       [value]="optionName"
+                       formControlName="deploymentOption"
+                       (change)="emitDeploymentSelection()"
+                       [attr.disabled]="!deploymentOptions?.options[optionName].available ? true : null">
+                <label class="custom-control-label"
+                       [id]="'label_' + optionName"
+                       [for]="optionName"
+                       i18n>{{ deploymentOptions?.options[optionName].title }}
+                       {{ deploymentOptions.recommended_option === optionName ? "(Recommended)" : "" }}
+                  <cd-helper>
+                    <span>{{ deploymentOptions?.options[optionName].desc }}</span>
+                  </cd-helper>
+                </label>
+              </div>
+            </div>
+            <!-- @TODO: Visualize the storage used on a chart -->
+            <!-- <div class="pie-chart">
+              <h4 class="text-center">Selected Capacity</h4>
+              <h5 class="margin text-center">10 Hosts | 30 NVMes </h5>
+              <div class="char-i-contain">
+                <cd-health-pie [data]="data"
+                               [config]="rawCapacityChartConfig"
+                               [isBytesData]="true"
+                               (prepareFn)="prepareRawUsage($event[0], $event[1])">
+                </cd-health-pie>
+              </div>
+            </div> -->
+          </div>
+        </div>
+        <div class="card">
+          <div class="card-header">
+            <h2 class="mb-0">
+              <button class="btn btn-link btn-block text-left dropdown-toggle"
+                      data-toggle="collapse"
+                      aria-label="toggle advanced mode"
+                      [attr.aria-expanded]="!simpleDeployment"
+                      (click)="emitDeploymentMode()"
+                      i18n>Advanced Mode</button>
+            </h2>
+          </div>
+        </div>
+        <div class="collapse"
+             [ngClass]="{show: !simpleDeployment}">
+          <div class="card-body">
+            <div class="card-body">
+              <fieldset>
+                <cd-osd-devices-selection-groups #dataDeviceSelectionGroups
+                                                 name="Primary"
+                                                 type="data"
+                                                 [availDevices]="availDevices"
+                                                 [canSelect]="availDevices.length !== 0"
+                                                 (selected)="onDevicesSelected($event)"
+                                                 (cleared)="onDevicesCleared($event)">
+                </cd-osd-devices-selection-groups>
+              </fieldset>
 
-        <!-- Shared devices -->
-        <fieldset>
-          <legend i18n>Shared devices</legend>
+              <!-- Shared devices -->
+              <fieldset>
+                <legend i18n>Shared devices</legend>
 
-          <!-- WAL devices button and table -->
-          <cd-osd-devices-selection-groups #walDeviceSelectionGroups
-                                           name="WAL"
-                                           type="wal"
-                                           [availDevices]="availDevices"
-                                           [canSelect]="dataDeviceSelectionGroups.devices.length !== 0"
-                                           (selected)="onDevicesSelected($event)"
-                                           (cleared)="onDevicesCleared($event)">
-          </cd-osd-devices-selection-groups>
+                <!-- WAL devices button and table -->
+                <cd-osd-devices-selection-groups #walDeviceSelectionGroups
+                                                 name="WAL"
+                                                 type="wal"
+                                                 [availDevices]="availDevices"
+                                                 [canSelect]="dataDeviceSelectionGroups.devices.length !== 0"
+                                                 (selected)="onDevicesSelected($event)"
+                                                 (cleared)="onDevicesCleared($event)">
+                </cd-osd-devices-selection-groups>
 
-          <!-- WAL slots -->
-          <div class="form-group row"
-               *ngIf="walDeviceSelectionGroups.devices.length !== 0">
-            <label class="cd-col-form-label"
-                   for="walSlots">
-              <ng-container i18n>WAL slots</ng-container>
-              <cd-helper>
-                <span i18n>How many OSDs per WAL device.</span>
-                <br>
-                <span i18n>Specify 0 to let Orchestrator backend decide it.</span>
-              </cd-helper>
-            </label>
-            <div class="cd-col-form-input">
-              <input class="form-control"
-                     id="walSlots"
-                     name="walSlots"
-                     type="number"
-                     min="0"
-                     formControlName="walSlots">
-              <span class="invalid-feedback"
-                    *ngIf="form.showError('walSlots', formDir, 'min')"
-                    i18n>Value should be greater than or equal to 0</span>
-            </div>
-          </div>
+                <!-- WAL slots -->
+                <div class="form-group row"
+                     *ngIf="walDeviceSelectionGroups.devices.length !== 0">
+                  <label class="cd-col-form-label"
+                         for="walSlots">
+                    <ng-container i18n>WAL slots</ng-container>
+                    <cd-helper>
+                      <span i18n>How many OSDs per WAL device.</span>
+                      <br>
+                      <span i18n>Specify 0 to let Orchestrator backend decide it.</span>
+                    </cd-helper>
+                  </label>
+                  <div class="cd-col-form-input">
+                    <input class="form-control"
+                           id="walSlots"
+                           name="walSlots"
+                           type="number"
+                           min="0"
+                           formControlName="walSlots">
+                    <span class="invalid-feedback"
+                          *ngIf="form.showError('walSlots', formDir, 'min')"
+                          i18n>Value should be greater than or equal to 0</span>
+                  </div>
+                </div>
 
-          <!-- DB devices button and table -->
-          <cd-osd-devices-selection-groups #dbDeviceSelectionGroups
-                                           name="DB"
-                                           type="db"
-                                           [availDevices]="availDevices"
-                                           [canSelect]="dataDeviceSelectionGroups.devices.length !== 0"
-                                           (selected)="onDevicesSelected($event)"
-                                           (cleared)="onDevicesCleared($event)">
-          </cd-osd-devices-selection-groups>
+                <!-- DB devices button and table -->
+                <cd-osd-devices-selection-groups #dbDeviceSelectionGroups
+                                                 name="DB"
+                                                 type="db"
+                                                 [availDevices]="availDevices"
+                                                 [canSelect]="dataDeviceSelectionGroups.devices.length !== 0"
+                                                 (selected)="onDevicesSelected($event)"
+                                                 (cleared)="onDevicesCleared($event)">
+                </cd-osd-devices-selection-groups>
 
-          <!-- DB slots -->
-          <div class="form-group row"
-               *ngIf="dbDeviceSelectionGroups.devices.length !== 0">
-            <label class="cd-col-form-label"
-                   for="dbSlots">
-              <ng-container i18n>DB slots</ng-container>
-              <cd-helper>
-                <span i18n>How many OSDs per DB device.</span>
-                <br>
-                <span i18n>Specify 0 to let Orchestrator backend decide it.</span>
-              </cd-helper>
-            </label>
-            <div class="cd-col-form-input">
-              <input class="form-control"
-                     id="dbSlots"
-                     name="dbSlots"
-                     type="number"
-                     min="0"
-                     formControlName="dbSlots">
-              <span class="invalid-feedback"
-                    *ngIf="form.showError('dbSlots', formDir, 'min')"
-                    i18n>Value should be greater than or equal to 0</span>
+                <!-- DB slots -->
+                <div class="form-group row"
+                     *ngIf="dbDeviceSelectionGroups.devices.length !== 0">
+                  <label class="cd-col-form-label"
+                         for="dbSlots">
+                    <ng-container i18n>DB slots</ng-container>
+                    <cd-helper>
+                      <span i18n>How many OSDs per DB device.</span>
+                      <br>
+                      <span i18n>Specify 0 to let Orchestrator backend decide it.</span>
+                    </cd-helper>
+                  </label>
+                  <div class="cd-col-form-input">
+                    <input class="form-control"
+                           id="dbSlots"
+                           name="dbSlots"
+                           type="number"
+                           min="0"
+                           formControlName="dbSlots">
+                    <span class="invalid-feedback"
+                          *ngIf="form.showError('dbSlots', formDir, 'min')"
+                          i18n>Value should be greater than or equal to 0</span>
+                  </div>
+                </div>
+              </fieldset>
             </div>
           </div>
-        </fieldset>
-
-        <!-- Configuration -->
-        <fieldset>
-          <legend i18n>Configuration</legend>
+        </div>
 
-          <!-- Features -->
-          <div class="form-group row"
-               formGroupName="features">
-            <label i18n
-                   class="cd-col-form-label"
-                   for="features">Features</label>
-            <div class="cd-col-form-input">
+        <!-- Features -->
+        <div class="card">
+          <div class="card-header">
+            <h2 class="mb-0">
+              <button class="btn btn-link btn-block text-left dropdown-toggle"
+                      data-toggle="collapse"
+                      aria-label="features"
+                      aria-expanded="true"
+                      i18n>Features</button>
+            </h2>
+          </div>
+        </div>
+        <div class="collapse show">
+          <div class="card-body d-flex flex-column">
+            <div class="pt-3 pb-3"
+                 formGroupName="features">
               <div class="custom-control custom-checkbox"
                    *ngFor="let feature of featureList">
                 <input type="checkbox"
                        class="custom-control-input"
                        id="{{ feature.key }}"
                        name="{{ feature.key }}"
-                       formControlName="{{ feature.key }}">
+                       formControlName="{{ feature.key }}"
+                       (change)="emitDeploymentSelection()">
                 <label class="custom-control-label"
                        for="{{ feature.key }}">{{ feature.desc }}</label>
               </div>
             </div>
           </div>
-        </fieldset>
-      </div>
-      <div class="card-footer"
-           *ngIf="!hideSubmitBtn">
-        <cd-form-button-panel #previewButtonPanel
-                              (submitActionEvent)="submit()"
-                              [form]="form"
-                              [disabled]="dataDeviceSelectionGroups.devices.length === 0"
-                              [submitText]="actionLabels.PREVIEW"
-                              wrappingClass="text-right"></cd-form-button-panel>
+        </div>
       </div>
-    </div>
-  </form>
+    </form>
+  </div>
+
+  <div class="card-footer"
+       *ngIf="!hideSubmitBtn">
+    <cd-form-button-panel #previewButtonPanel
+                          (submitActionEvent)="submit()"
+                          [form]="form"
+                          [disabled]="dataDeviceSelectionGroups.devices.length === 0 && !simpleDeployment"
+                          [submitText]="simpleDeployment ? 'Create OSDs' : actionLabels.PREVIEW"
+                          wrappingClass="text-right"></cd-form-button-panel>
+  </div>
 </div>
index 2044b084c7aac81ea02ec1a82828278c74a2c3f7..725fc953fbb6c6d1cbe25f048cd37b9cdb2242a1 100644 (file)
@@ -9,9 +9,14 @@ import { BehaviorSubject, of } from 'rxjs';
 
 import { InventoryDevice } from '~/app/ceph/cluster/inventory/inventory-devices/inventory-device.model';
 import { InventoryDevicesComponent } from '~/app/ceph/cluster/inventory/inventory-devices/inventory-devices.component';
+import { DashboardModule } from '~/app/ceph/dashboard/dashboard.module';
 import { HostService } from '~/app/shared/api/host.service';
 import { OrchestratorService } from '~/app/shared/api/orchestrator.service';
 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
+import {
+  DeploymentOptions,
+  OsdDeploymentOptions
+} from '~/app/shared/models/osd-deployment-options';
 import { SummaryService } from '~/app/shared/services/summary.service';
 import { SharedModule } from '~/app/shared/shared.module';
 import { configureTestBed, FixtureHelper, FormHelper } from '~/testing/unit-test-helper';
@@ -50,6 +55,45 @@ describe('OsdFormComponent', () => {
     }
   ];
 
+  const deploymentOptions: DeploymentOptions = {
+    options: {
+      cost_capacity: {
+        name: OsdDeploymentOptions.COST_CAPACITY,
+        available: true,
+        capacity: 0,
+        used: 0,
+        hdd_used: 0,
+        ssd_used: 0,
+        nvme_used: 0,
+        title: 'Cost/Capacity-optimized',
+        desc: 'All the available HDDs are selected'
+      },
+      throughput_optimized: {
+        name: OsdDeploymentOptions.THROUGHPUT,
+        available: false,
+        capacity: 0,
+        used: 0,
+        hdd_used: 0,
+        ssd_used: 0,
+        nvme_used: 0,
+        title: 'Throughput-optimized',
+        desc: 'HDDs/SSDs are selected for data devices and SSDs/NVMes for DB/WAL devices'
+      },
+      iops_optimized: {
+        name: OsdDeploymentOptions.IOPS,
+        available: false,
+        capacity: 0,
+        used: 0,
+        hdd_used: 0,
+        ssd_used: 0,
+        nvme_used: 0,
+        title: 'IOPS-optimized',
+        desc: 'All the available NVMes are selected'
+      }
+    },
+    recommended_option: OsdDeploymentOptions.COST_CAPACITY
+  };
+
   const expectPreviewButton = (enabled: boolean) => {
     const debugElement = fixtureHelper.getElementByCss('.tc_submitButton');
     expect(debugElement.nativeElement.disabled).toBe(!enabled);
@@ -99,7 +143,8 @@ describe('OsdFormComponent', () => {
       SharedModule,
       RouterTestingModule,
       ReactiveFormsModule,
-      ToastrModule.forRoot()
+      ToastrModule.forRoot(),
+      DashboardModule
     ],
     declarations: [OsdFormComponent, OsdDevicesSelectionGroupsComponent, InventoryDevicesComponent]
   });
@@ -141,14 +186,53 @@ describe('OsdFormComponent', () => {
 
   describe('with orchestrator', () => {
     beforeEach(() => {
+      component.simpleDeployment = false;
       spyOn(orchService, 'status').and.returnValue(of({ available: true }));
       spyOn(hostService, 'inventoryDeviceList').and.returnValue(of([]));
+      component.deploymentOptions = deploymentOptions;
+      fixture.detectChanges();
+    });
+
+    it('should display the accordion', () => {
+      fixtureHelper.expectElementVisible('.card-body .accordion', true);
+    });
+
+    it('should display the three deployment scenarios', () => {
+      fixtureHelper.expectElementVisible('#cost_capacity', true);
+      fixtureHelper.expectElementVisible('#throughput_optimized', true);
+      fixtureHelper.expectElementVisible('#iops_optimized', true);
+    });
+
+    it('should only disable the options that are not available', () => {
+      let radioBtn = fixtureHelper.getElementByCss('#throughput_optimized').nativeElement;
+      expect(radioBtn.disabled).toBeTruthy();
+      radioBtn = fixtureHelper.getElementByCss('#iops_optimized').nativeElement;
+      expect(radioBtn.disabled).toBeTruthy();
+
+      // Make the throughput_optimized option available and verify the option is not disabled
+      deploymentOptions.options['throughput_optimized'].available = true;
+      fixture.detectChanges();
+      radioBtn = fixtureHelper.getElementByCss('#throughput_optimized').nativeElement;
+      expect(radioBtn.disabled).toBeFalsy();
+    });
+
+    it('should be a Recommended option only when it is recommended by backend', () => {
+      const label = fixtureHelper.getElementByCss('#label_cost_capacity').nativeElement;
+      const throughputLabel = fixtureHelper.getElementByCss('#label_throughput_optimized')
+        .nativeElement;
+
+      expect(label.innerHTML).toContain('Recommended');
+      expect(throughputLabel.innerHTML).not.toContain('Recommended');
+
+      deploymentOptions.recommended_option = OsdDeploymentOptions.THROUGHPUT;
       fixture.detectChanges();
+      expect(throughputLabel.innerHTML).toContain('Recommended');
+      expect(label.innerHTML).not.toContain('Recommended');
     });
 
     it('should display form', () => {
       fixtureHelper.expectElementVisible('cd-alert-panel', false);
-      fixtureHelper.expectElementVisible('.cd-col-form form', true);
+      fixtureHelper.expectElementVisible('.card-body form', true);
     });
 
     describe('without data devices selected', () => {
index 71ca2d8f7b2ea038b62051d5715b38d654c60132..c2384425e7019127d087b54ba8813dfdc50513db 100644 (file)
@@ -7,15 +7,21 @@ import _ from 'lodash';
 import { InventoryDevice } from '~/app/ceph/cluster/inventory/inventory-devices/inventory-device.model';
 import { HostService } from '~/app/shared/api/host.service';
 import { OrchestratorService } from '~/app/shared/api/orchestrator.service';
+import { OsdService } from '~/app/shared/api/osd.service';
 import { FormButtonPanelComponent } from '~/app/shared/components/form-button-panel/form-button-panel.component';
-import { ActionLabelsI18n } from '~/app/shared/constants/app.constants';
+import { ActionLabelsI18n, URLVerbs } from '~/app/shared/constants/app.constants';
 import { Icons } from '~/app/shared/enum/icons.enum';
 import { CdForm } from '~/app/shared/forms/cd-form';
 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
+import { FinishedTask } from '~/app/shared/models/finished-task';
+import {
+  DeploymentOptions,
+  OsdDeploymentOptions
+} from '~/app/shared/models/osd-deployment-options';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
 import { ModalService } from '~/app/shared/services/modal.service';
-import { WizardStepsService } from '~/app/shared/services/wizard-steps.service';
+import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
 import { OsdCreationPreviewModalComponent } from '../osd-creation-preview-modal/osd-creation-preview-modal.component';
 import { DevicesSelectionChangeEvent } from '../osd-devices-selection-groups/devices-selection-change-event.interface';
 import { DevicesSelectionClearEvent } from '../osd-devices-selection-groups/devices-selection-clear-event.interface';
@@ -49,6 +55,10 @@ export class OsdFormComponent extends CdForm implements OnInit {
 
   @Output() emitDriveGroup: EventEmitter<DriveGroup> = new EventEmitter();
 
+  @Output() emitDeploymentOption: EventEmitter<object> = new EventEmitter();
+
+  @Output() emitMode: EventEmitter<boolean> = new EventEmitter();
+
   icons = Icons;
 
   form: CdFormGroup;
@@ -71,6 +81,11 @@ export class OsdFormComponent extends CdForm implements OnInit {
 
   hasOrchestrator = true;
 
+  simpleDeployment = true;
+
+  deploymentOptions: DeploymentOptions;
+  optionNames = Object.values(OsdDeploymentOptions);
+
   constructor(
     public actionLabels: ActionLabelsI18n,
     private authStorageService: AuthStorageService,
@@ -78,7 +93,8 @@ export class OsdFormComponent extends CdForm implements OnInit {
     private hostService: HostService,
     private router: Router,
     private modalService: ModalService,
-    public wizardStepService: WizardStepsService
+    private osdService: OsdService,
+    private taskWrapper: TaskWrapperService
   ) {
     super();
     this.resource = $localize`OSDs`;
@@ -103,6 +119,14 @@ export class OsdFormComponent extends CdForm implements OnInit {
       }
     });
 
+    this.osdService.getDeploymentOptions().subscribe((options) => {
+      this.deploymentOptions = options;
+      this.form.get('deploymentOption').setValue(this.deploymentOptions?.recommended_option);
+
+      if (this.deploymentOptions?.recommended_option) {
+        this.enableFeatures();
+      }
+    });
     this.form.get('walSlots').valueChanges.subscribe((value) => this.setSlots('wal', value));
     this.form.get('dbSlots').valueChanges.subscribe((value) => this.setSlots('db', value));
     _.each(this.features, (feature) => {
@@ -123,7 +147,8 @@ export class OsdFormComponent extends CdForm implements OnInit {
           acc[e.key] = new FormControl({ value: false, disabled: true });
           return acc;
         }, {})
-      )
+      ),
+      deploymentOption: new FormControl(0)
     });
   }
 
@@ -209,16 +234,52 @@ export class OsdFormComponent extends CdForm implements OnInit {
     }
   }
 
+  emitDeploymentSelection() {
+    const option = this.form.get('deploymentOption').value;
+    const encrypted = this.form.get('encrypted').value;
+    this.emitDeploymentOption.emit({ option: option, encrypted: encrypted });
+  }
+
+  emitDeploymentMode() {
+    this.simpleDeployment = !this.simpleDeployment;
+    if (!this.simpleDeployment && this.dataDeviceSelectionGroups.devices.length === 0) {
+      this.disableFeatures();
+    } else {
+      this.enableFeatures();
+    }
+    this.emitMode.emit(this.simpleDeployment);
+  }
+
   submit() {
-    // use user name and timestamp for drive group name
-    const user = this.authStorageService.getUsername();
-    this.driveGroup.setName(`dashboard-${user}-${_.now()}`);
-    const modalRef = this.modalService.show(OsdCreationPreviewModalComponent, {
-      driveGroups: [this.driveGroup.spec]
-    });
-    modalRef.componentInstance.submitAction.subscribe(() => {
-      this.router.navigate(['/osd']);
-    });
-    this.previewButtonPanel.submitButton.loading = false;
+    if (this.simpleDeployment) {
+      const option = this.form.get('deploymentOption').value;
+      const encrypted = this.form.get('encrypted').value;
+      const deploymentSpec = { option: option, encrypted: encrypted };
+      const title = this.deploymentOptions.options[deploymentSpec.option].title;
+      const trackingId = `${title} deployment`;
+      this.taskWrapper
+        .wrapTaskAroundCall({
+          task: new FinishedTask('osd/' + URLVerbs.CREATE, {
+            tracking_id: trackingId
+          }),
+          call: this.osdService.create([deploymentSpec], trackingId, 'predefined')
+        })
+        .subscribe({
+          complete: () => {
+            this.router.navigate(['/osd']);
+          }
+        });
+    } else {
+      // use user name and timestamp for drive group name
+      const user = this.authStorageService.getUsername();
+      this.driveGroup.setName(`dashboard-${user}-${_.now()}`);
+      const modalRef = this.modalService.show(OsdCreationPreviewModalComponent, {
+        driveGroups: [this.driveGroup.spec]
+      });
+      modalRef.componentInstance.submitAction.subscribe(() => {
+        this.router.navigate(['/osd']);
+      });
+      this.previewButtonPanel.submitButton.loading = false;
+    }
   }
 }
index 3e6f1475afff8da90f0ea53f2877555d4777c8ac..afec81d9d1971e2446d5b36768329ee7ae8ecc01 100644 (file)
@@ -44,6 +44,7 @@
        i18n>Overall Performance</a>
     <ng-template ngbNavContent>
       <cd-grafana [grafanaPath]="'osd-overview?'"
+                  [type]="'metrics'"
                   uid="lo02I1Aiz"
                   grafanaStyle="four">
       </cd-grafana>
index 83888a5550c8144cbb2aad8e9802afe14120dc02..a319aeed6f338cf85b09377b09e4955e3d060382 100644 (file)
@@ -7,7 +7,6 @@ import { CdTableAction } from '~/app/shared/models/cd-table-action';
 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
 import { Permission } from '~/app/shared/models/permissions';
-import { CdDatePipe } from '~/app/shared/pipes/cd-date.pipe';
 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
 import { PrometheusAlertService } from '~/app/shared/services/prometheus-alert.service';
 import { URLBuilderService } from '~/app/shared/services/url-builder.service';
@@ -29,18 +28,12 @@ export class ActiveAlertListComponent extends PrometheusListHelper implements On
   permission: Permission;
   selection = new CdTableSelection();
   icons = Icons;
-  customCss = {
-    'badge badge-danger': 'active',
-    'badge badge-warning': 'unprocessed',
-    'badge badge-info': 'suppressed'
-  };
 
   constructor(
     // NotificationsComponent will refresh all alerts every 5s (No need to do it here as well)
     private authStorageService: AuthStorageService,
     public prometheusAlertService: PrometheusAlertService,
     private urlBuilder: URLBuilderService,
-    private cdDatePipe: CdDatePipe,
     @Inject(PrometheusService) prometheusService: PrometheusService
   ) {
     super(prometheusService);
@@ -65,30 +58,49 @@ export class ActiveAlertListComponent extends PrometheusListHelper implements On
       {
         name: $localize`Name`,
         prop: 'labels.alertname',
+        cellClass: 'font-weight-bold',
         flexGrow: 2
       },
       {
-        name: $localize`Job`,
-        prop: 'labels.job',
-        flexGrow: 2
+        name: $localize`Summary`,
+        prop: 'annotations.summary',
+        flexGrow: 3
       },
       {
         name: $localize`Severity`,
-        prop: 'labels.severity'
+        prop: 'labels.severity',
+        flexGrow: 1,
+        cellTransformation: CellTemplate.badge,
+        customTemplateConfig: {
+          map: {
+            critical: { class: 'badge-danger' },
+            warning: { class: 'badge-warning' }
+          }
+        }
       },
       {
         name: $localize`State`,
         prop: 'status.state',
-        cellTransformation: CellTemplate.classAdding
+        flexGrow: 1,
+        cellTransformation: CellTemplate.badge,
+        customTemplateConfig: {
+          map: {
+            active: { class: 'badge-info' },
+            unprocessed: { class: 'badge-warning' },
+            suppressed: { class: 'badge-dark' }
+          }
+        }
       },
       {
         name: $localize`Started`,
         prop: 'startsAt',
-        pipe: this.cdDatePipe
+        cellTransformation: CellTemplate.timeAgo,
+        flexGrow: 1
       },
       {
         name: $localize`URL`,
         prop: 'generatorURL',
+        flexGrow: 1,
         sortable: false,
         cellTemplate: this.externalLinkTpl
       }
index fd3967ce6939c3172901011da9151ba9835cfffd..3be6091a584c3d849a49c789a574a3fc1720c6df 100644 (file)
@@ -5,7 +5,11 @@
     class="nav-tabs">
   <li ngbNavItem="/monitoring/active-alerts">
     <a ngbNavLink
-       i18n>Active Alerts</a>
+       i18n>Active Alerts
+    <small *ngIf="prometheusAlertService.activeCriticalAlerts > 0"
+        class="badge badge-danger ml-1">{{ prometheusAlertService.activeCriticalAlerts }}</small>
+    <small *ngIf="prometheusAlertService.activeWarningAlerts > 0"
+        class="badge badge-warning ml-1">{{ prometheusAlertService.activeWarningAlerts }}</small></a>
   </li>
   <li ngbNavItem="/monitoring/alerts">
     <a ngbNavLink
index 675063413adc15c97f39a8b1b4e2d4ec31b2bc04..3272ae32fd0be06791c74eb4c8f28c6ec4b319ff 100644 (file)
@@ -3,6 +3,7 @@ import { RouterTestingModule } from '@angular/router/testing';
 
 import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
 
+import { PrometheusAlertService } from '~/app/shared/services/prometheus-alert.service';
 import { configureTestBed } from '~/testing/unit-test-helper';
 import { PrometheusTabsComponent } from './prometheus-tabs.component';
 
@@ -12,7 +13,8 @@ describe('PrometheusTabsComponent', () => {
 
   configureTestBed({
     imports: [RouterTestingModule, NgbNavModule],
-    declarations: [PrometheusTabsComponent]
+    declarations: [PrometheusTabsComponent],
+    providers: [{ provide: PrometheusAlertService, useValue: { alerts: [] } }]
   });
 
   beforeEach(() => {
index 4011770d4173ae7dd219aaeeac5bc190c302092c..cccce1d92e33c9b3cbcdc8814f0036a95ab9aa31 100644 (file)
@@ -1,11 +1,13 @@
 import { Component } from '@angular/core';
 import { Router } from '@angular/router';
 
+import { PrometheusAlertService } from '~/app/shared/services/prometheus-alert.service';
+
 @Component({
   selector: 'cd-prometheus-tabs',
   templateUrl: './prometheus-tabs.component.html',
   styleUrls: ['./prometheus-tabs.component.scss']
 })
 export class PrometheusTabsComponent {
-  constructor(public router: Router) {}
+  constructor(public router: Router, public prometheusAlertService: PrometheusAlertService) {}
 }
index 325520d110ec984af4d6ce69372c0e0fbbc466ec..cc4ee511156d648978c6e3ab90416f93c785ca2b 100644 (file)
@@ -1,7 +1,11 @@
 import { Component, Inject, OnInit } from '@angular/core';
 
+import _ from 'lodash';
+
 import { PrometheusService } from '~/app/shared/api/prometheus.service';
+import { CellTemplate } from '~/app/shared/enum/cell-template.enum';
 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
+import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
 import { PrometheusRule } from '~/app/shared/models/prometheus-alerts';
 import { DurationPipe } from '~/app/shared/pipes/duration.pipe';
 import { PrometheusAlertService } from '~/app/shared/services/prometheus-alert.service';
@@ -15,6 +19,7 @@ import { PrometheusListHelper } from '../prometheus-list-helper';
 export class RulesListComponent extends PrometheusListHelper implements OnInit {
   columns: CdTableColumn[];
   expandedRow: PrometheusRule;
+  selection = new CdTableSelection();
 
   /**
    * Hide active alerts in details of alerting rules as they are already shown
@@ -33,12 +38,32 @@ export class RulesListComponent extends PrometheusListHelper implements OnInit {
   ngOnInit() {
     super.ngOnInit();
     this.columns = [
-      { prop: 'name', name: $localize`Name` },
-      { prop: 'labels.severity', name: $localize`Severity` },
-      { prop: 'group', name: $localize`Group` },
-      { prop: 'duration', name: $localize`Duration`, pipe: new DurationPipe() },
-      { prop: 'query', name: $localize`Query`, isHidden: true },
-      { prop: 'annotations.description', name: $localize`Description` }
+      { prop: 'name', name: $localize`Name`, cellClass: 'font-weight-bold', flexGrow: 2 },
+      {
+        prop: 'labels.severity',
+        name: $localize`Severity`,
+        flexGrow: 1,
+        cellTransformation: CellTemplate.badge,
+        customTemplateConfig: {
+          map: {
+            critical: { class: 'badge-danger' },
+            warning: { class: 'badge-warning' }
+          }
+        }
+      },
+      {
+        prop: 'group',
+        name: $localize`Group`,
+        flexGrow: 1,
+        cellTransformation: CellTemplate.badge
+      },
+      { prop: 'duration', name: $localize`Duration`, pipe: new DurationPipe(), flexGrow: 1 },
+      { prop: 'query', name: $localize`Query`, isHidden: true, flexGrow: 1 },
+      { prop: 'annotations.summary', name: $localize`Summary`, flexGrow: 3 }
     ];
   }
+
+  updateSelection(selection: CdTableSelection) {
+    this.selection = selection;
+  }
 }
index a3e19ee3112c3d28a3ec630ada446adca026d0a7..dcd898d8853789ef61a342becaae2e8496839d7c 100644 (file)
@@ -17,7 +17,8 @@
             <select id="service_type"
                     name="service_type"
                     class="form-control"
-                    formControlName="service_type">
+                    formControlName="service_type"
+                    (change)="getServiceIds($event.target.value)">
               <option i18n
                       [ngValue]="null">-- Select a service type --</option>
               <option *ngFor="let serviceType of serviceTypes"
@@ -52,7 +53,7 @@
                         i18n>-- No service available --</option>
                 <option *ngIf="services !== null && services.length > 0"
                         [ngValue]="null"
-                        i18n>-- Select an existing RGW service --</option>
+                        i18n>-- Select an existing service --</option>
                 <option *ngFor="let service of services"
                         [value]="service.service_name">{{ service.service_name }}</option>
               </select>
@@ -77,6 +78,9 @@
             <span class="invalid-feedback"
                   *ngIf="serviceForm.showError('service_id', frm, 'required')"
                   i18n>This field is required.</span>
+            <span class="invalid-feedback"
+                  *ngIf="serviceForm.showError('service_id', frm, 'uniqueName')"
+                  i18n>This service id is already in use.</span>
             <span class="invalid-feedback"
                   *ngIf="serviceForm.showError('service_id', frm, 'rgwPattern')"
                   i18n>The value does not match the pattern <strong>&lt;service_id&gt;[.&lt;realm_name&gt;.&lt;zone_name&gt;]</strong>.</span>
@@ -84,8 +88,7 @@
         </div>
 
         <!-- unmanaged -->
-        <div class="form-group row"
-             *ngIf="serviceForm.controls.service_type.value !== 'snmp-gateway'">
+        <div class="form-group row">
           <div class="cd-col-form-offset">
             <div class="custom-control custom-checkbox">
               <input class="custom-control-input"
         </ng-container>
 
         <!-- iSCSI -->
-        <ng-container *ngIf="!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'iscsi'">
-          <!-- pool -->
-          <div class="form-group row">
-            <label i18n
-                   class="cd-col-form-label required"
-                   for="pool">Pool</label>
-            <div class="cd-col-form-input">
-              <select id="pool"
-                      name="pool"
-                      class="form-control"
-                      formControlName="pool">
-                <option *ngIf="pools === null"
-                        [ngValue]="null"
-                        i18n>Loading...</option>
-                <option *ngIf="pools && pools.length === 0"
-                        [ngValue]="null"
-                        i18n>-- No pools available --</option>
-                <option *ngIf="pools && pools.length > 0"
-                        [ngValue]="null"
-                        i18n>-- Select a pool --</option>
-                <option *ngFor="let pool of pools"
-                        [value]="pool.pool_name">{{ pool.pool_name }}</option>
-              </select>
-              <span class="invalid-feedback"
-                    *ngIf="serviceForm.showError('pool', frm, 'required')"
-                    i18n>This field is required.</span>
-            </div>
+        <!-- pool -->
+        <div class="form-group row"
+             *ngIf="serviceForm.controls.service_type.value === 'iscsi'">
+          <label i18n
+                 class="cd-col-form-label required"
+                 for="pool">Pool</label>
+          <div class="cd-col-form-input">
+            <select id="pool"
+                    name="pool"
+                    class="form-control"
+                    formControlName="pool">
+              <option *ngIf="pools === null"
+                      [ngValue]="null"
+                      i18n>Loading...</option>
+              <option *ngIf="pools && pools.length === 0"
+                      [ngValue]="null"
+                      i18n>-- No pools available --</option>
+              <option *ngIf="pools && pools.length > 0"
+                      [ngValue]="null"
+                      i18n>-- Select a pool --</option>
+              <option *ngFor="let pool of pools"
+                      [value]="pool.pool_name">{{ pool.pool_name }}</option>
+            </select>
+            <span class="invalid-feedback"
+                  *ngIf="serviceForm.showError('pool', frm, 'required')"
+                  i18n>This field is required.</span>
           </div>
+        </div>
 
+        <!-- fields in iSCSI which are hidden when unmanaged is true -->
+        <ng-container *ngIf="!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'iscsi'">
           <!-- trusted_ip_list -->
           <div class="form-group row">
             <label class="cd-col-form-label"
         </ng-container>
 
         <!-- Ingress -->
-        <ng-container *ngIf="!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'ingress'">
+        <ng-container *ngIf="serviceForm.controls.service_type.value === 'ingress'">
           <!-- virtual_ip -->
           <div class="form-group row">
             <label class="cd-col-form-label"
             </div>
           </div>
           <!-- virtual_interface_networks -->
-          <div class="form-group row">
+          <div class="form-group row"
+               *ngIf="!serviceForm.controls.unmanaged.value">
             <label class="cd-col-form-label"
                    for="virtual_interface_networks">
               <span i18n>CIDR Networks</span>
         </ng-container>
 
         <!-- SNMP-Gateway -->
-        <ng-container *ngIf="!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'snmp-gateway'">
+        <ng-container *ngIf="serviceForm.controls.service_type.value === 'snmp-gateway'">
           <!-- snmp-version -->
           <div class="form-group row">
             <label class="cd-col-form-label required"
index 4d964575eec1811aa0ad9a574c0448eec95aad0a..4cab7843784f340dd99390817de0d31789b5e637 100644 (file)
@@ -30,6 +30,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
   readonly RGW_SVC_ID_PATTERN = /^([^.]+)(\.([^.]+)\.([^.]+))?$/;
   readonly SNMP_DESTINATION_PATTERN = /^[^\:]+:[0-9]/;
   readonly SNMP_ENGINE_ID_PATTERN = /^[0-9A-Fa-f]{10,64}/g;
+  readonly INGRESS_SUPPORTED_SERVICE_TYPES = ['rgw', 'nfs'];
   @ViewChild(NgbTypeahead, { static: false })
   typeahead: NgbTypeahead;
 
@@ -45,6 +46,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
   action: string;
   resource: string;
   serviceTypes: string[] = [];
+  serviceIds: string[] = [];
   hosts: any;
   labels: string[];
   labelClick = new Subject<string>();
@@ -52,6 +54,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
   pools: Array<object>;
   services: Array<CephServiceSpec> = [];
   pageURL: string;
+  serviceList: CephServiceSpec[];
 
   constructor(
     public actionLabels: ActionLabelsI18n,
@@ -108,7 +111,10 @@ export class ServiceFormComponent extends CdForm implements OnInit {
                 return !this.RGW_SVC_ID_PATTERN.test(value);
               })
             ]
-          )
+          ),
+          CdValidators.custom('uniqueName', (service_id: string) => {
+            return this.serviceIds && this.serviceIds.includes(service_id);
+          })
         ]
       ],
       placement: ['hosts'],
@@ -129,8 +135,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         null,
         [
           CdValidators.requiredIf({
-            service_type: 'iscsi',
-            unmanaged: false
+            service_type: 'iscsi'
           })
         ]
       ],
@@ -162,8 +167,7 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         null,
         [
           CdValidators.requiredIf({
-            service_type: 'ingress',
-            unmanaged: false
+            service_type: 'ingress'
           })
         ]
       ],
@@ -171,13 +175,28 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         null,
         [
           CdValidators.requiredIf({
-            service_type: 'ingress',
-            unmanaged: false
+            service_type: 'ingress'
+          })
+        ]
+      ],
+      frontend_port: [
+        null,
+        [
+          CdValidators.number(false),
+          CdValidators.requiredIf({
+            service_type: 'ingress'
+          })
+        ]
+      ],
+      monitor_port: [
+        null,
+        [
+          CdValidators.number(false),
+          CdValidators.requiredIf({
+            service_type: 'ingress'
           })
         ]
       ],
-      frontend_port: [null, [CdValidators.number(false)]],
-      monitor_port: [null, [CdValidators.number(false)]],
       virtual_interface_networks: [null],
       // RGW, Ingress & iSCSI
       ssl: [false],
@@ -318,6 +337,14 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         this.serviceType = params.type;
       });
     }
+
+    this.cephServiceService.list().subscribe((services: CephServiceSpec[]) => {
+      this.serviceList = services;
+      this.services = services.filter((service: any) =>
+        this.INGRESS_SUPPORTED_SERVICE_TYPES.includes(service.service_type)
+      );
+    });
+
     this.cephServiceService.getKnownTypes().subscribe((resp: Array<string>) => {
       // Remove service types:
       // osd       - This is deployed a different way.
@@ -342,9 +369,6 @@ export class ServiceFormComponent extends CdForm implements OnInit {
     this.poolService.getList().subscribe((resp: Array<object>) => {
       this.pools = resp;
     });
-    this.cephServiceService.list().subscribe((services: CephServiceSpec[]) => {
-      this.services = services.filter((service: any) => service.service_type === 'rgw');
-    });
 
     if (this.editing) {
       this.action = this.actionLabels.EDIT;
@@ -442,6 +466,12 @@ export class ServiceFormComponent extends CdForm implements OnInit {
     }
   }
 
+  getServiceIds(selectedServiceType: string) {
+    this.serviceIds = this.serviceList
+      .filter((service) => service['service_type'] === selectedServiceType)
+      .map((service) => service['service_id']);
+  }
+
   disableForEditing(serviceType: string) {
     const disableForEditKeys = ['service_type', 'service_id'];
     disableForEditKeys.forEach((key) => {
@@ -517,6 +547,47 @@ export class ServiceFormComponent extends CdForm implements OnInit {
       serviceName = `${serviceType}.${serviceId}`;
       serviceSpec['service_id'] = serviceId;
     }
+
+    // These services has some fields to be
+    // filled out even if unmanaged is true
+    switch (serviceType) {
+      case 'ingress':
+        serviceSpec['backend_service'] = values['backend_service'];
+        serviceSpec['service_id'] = values['backend_service'];
+        if (_.isNumber(values['frontend_port']) && values['frontend_port'] > 0) {
+          serviceSpec['frontend_port'] = values['frontend_port'];
+        }
+        if (_.isString(values['virtual_ip']) && !_.isEmpty(values['virtual_ip'])) {
+          serviceSpec['virtual_ip'] = values['virtual_ip'].trim();
+        }
+        if (_.isNumber(values['monitor_port']) && values['monitor_port'] > 0) {
+          serviceSpec['monitor_port'] = values['monitor_port'];
+        }
+        break;
+
+      case 'iscsi':
+        serviceSpec['pool'] = values['pool'];
+        break;
+
+      case 'snmp-gateway':
+        serviceSpec['credentials'] = {};
+        serviceSpec['snmp_version'] = values['snmp_version'];
+        serviceSpec['snmp_destination'] = values['snmp_destination'];
+        if (values['snmp_version'] === 'V3') {
+          serviceSpec['engine_id'] = values['engine_id'];
+          serviceSpec['auth_protocol'] = values['auth_protocol'];
+          serviceSpec['credentials']['snmp_v3_auth_username'] = values['snmp_v3_auth_username'];
+          serviceSpec['credentials']['snmp_v3_auth_password'] = values['snmp_v3_auth_password'];
+          if (values['privacy_protocol'] !== null) {
+            serviceSpec['privacy_protocol'] = values['privacy_protocol'];
+            serviceSpec['credentials']['snmp_v3_priv_password'] = values['snmp_v3_priv_password'];
+          }
+        } else {
+          serviceSpec['credentials']['snmp_community'] = values['snmp_community'];
+        }
+        break;
+    }
+
     if (!values['unmanaged']) {
       switch (values['placement']) {
         case 'hosts':
@@ -542,7 +613,6 @@ export class ServiceFormComponent extends CdForm implements OnInit {
           }
           break;
         case 'iscsi':
-          serviceSpec['pool'] = values['pool'];
           if (_.isString(values['trusted_ip_list']) && !_.isEmpty(values['trusted_ip_list'])) {
             serviceSpec['trusted_ip_list'] = values['trusted_ip_list'].trim();
           }
@@ -558,17 +628,6 @@ export class ServiceFormComponent extends CdForm implements OnInit {
           }
           break;
         case 'ingress':
-          serviceSpec['backend_service'] = values['backend_service'];
-          serviceSpec['service_id'] = values['backend_service'];
-          if (_.isString(values['virtual_ip']) && !_.isEmpty(values['virtual_ip'])) {
-            serviceSpec['virtual_ip'] = values['virtual_ip'].trim();
-          }
-          if (_.isNumber(values['frontend_port']) && values['frontend_port'] > 0) {
-            serviceSpec['frontend_port'] = values['frontend_port'];
-          }
-          if (_.isNumber(values['monitor_port']) && values['monitor_port'] > 0) {
-            serviceSpec['monitor_port'] = values['monitor_port'];
-          }
           serviceSpec['ssl'] = values['ssl'];
           if (values['ssl']) {
             serviceSpec['ssl_cert'] = values['ssl_cert']?.trim();
@@ -576,23 +635,6 @@ export class ServiceFormComponent extends CdForm implements OnInit {
           }
           serviceSpec['virtual_interface_networks'] = values['virtual_interface_networks'];
           break;
-        case 'snmp-gateway':
-          serviceSpec['credentials'] = {};
-          serviceSpec['snmp_version'] = values['snmp_version'];
-          serviceSpec['snmp_destination'] = values['snmp_destination'];
-          if (values['snmp_version'] === 'V3') {
-            serviceSpec['engine_id'] = values['engine_id'];
-            serviceSpec['auth_protocol'] = values['auth_protocol'];
-            serviceSpec['credentials']['snmp_v3_auth_username'] = values['snmp_v3_auth_username'];
-            serviceSpec['credentials']['snmp_v3_auth_password'] = values['snmp_v3_auth_password'];
-            if (values['privacy_protocol'] !== null) {
-              serviceSpec['privacy_protocol'] = values['privacy_protocol'];
-              serviceSpec['credentials']['snmp_v3_priv_password'] = values['snmp_v3_priv_password'];
-            }
-          } else {
-            serviceSpec['credentials']['snmp_community'] = values['snmp_community'];
-          }
-          break;
       }
     }
 
@@ -601,7 +643,9 @@ export class ServiceFormComponent extends CdForm implements OnInit {
         task: new FinishedTask(taskUrl, {
           service_name: serviceName
         }),
-        call: this.cephServiceService.create(serviceSpec)
+        call: this.editing
+          ? this.cephServiceService.update(serviceSpec)
+          : this.cephServiceService.create(serviceSpec)
       })
       .subscribe({
         error() {
index 942e96e2eb9674aef87266bcab7beaf624878f83..15e7d7d5ccebbd56512f1dc524c59548ef35845f 100644 (file)
@@ -21,7 +21,7 @@ export class NfsFormClientComponent implements OnInit {
 
   @ContentChild('squashHelper', { static: true }) squashHelperTpl: TemplateRef<any>;
 
-  nfsSquash: any[] = this.nfsService.nfsSquash;
+  nfsSquash: any[] = Object.keys(this.nfsService.nfsSquash);
   nfsAccessType: any[] = this.nfsService.nfsAccessType;
   icons = Icons;
   clientsFormArray: FormArray;
index 70a2ae370d7133e5ca34228068627ea969d6325e..7313ea69b2ecd96d1e1d3adaca92ca6188176a78 100644 (file)
               <option *ngIf="nfsAccessType !== null && nfsAccessType.length === 0"
                       value=""
                       i18n>-- No access type available --</option>
-              <option *ngIf="nfsAccessType !== null && nfsAccessType.length > 0"
-                      value=""
-                      i18n>-- Select the access type --</option>
               <option *ngFor="let accessType of nfsAccessType"
                       [value]="accessType.value">{{ accessType.value }}</option>
             </select>
         <div class="form-group row">
           <label class="cd-col-form-label"
                  for="squash">
-            <span class="required"
-                  i18n>Squash</span>
+            <span i18n>Squash</span>
             <ng-container *ngTemplateOutlet="squashHelper"></ng-container>
           </label>
           <div class="cd-col-form-input">
               <option *ngIf="nfsSquash !== null && nfsSquash.length === 0"
                       value=""
                       i18n>-- No squash available --</option>
-              <option *ngIf="nfsSquash !== null && nfsSquash.length > 0"
-                      value=""
-                      i18n>--Select what kind of user id squashing is performed --</option>
               <option *ngFor="let squash of nfsSquash"
                       [value]="squash">{{ squash }}</option>
 
index 7cf3d61387a436a138b1b3d92630c1f980478065..62efec423d36aac61f13cf28988ce0e64ccbbcdc 100644 (file)
@@ -36,13 +36,34 @@ describe('NfsFormComponent', () => {
       providers: [
         {
           provide: ActivatedRoute,
-          useValue: new ActivatedRouteStub({ cluster_id: undefined, export_id: undefined })
+          useValue: new ActivatedRouteStub({ cluster_id: 'mynfs', export_id: '1' })
         }
       ]
     },
     [LoadingPanelComponent]
   );
 
+  const matchSquash = (backendSquashValue: string, uiSquashValue: string) => {
+    component.ngOnInit();
+    httpTesting.expectOne('ui-api/nfs-ganesha/fsals').flush(['CEPH', 'RGW']);
+    httpTesting.expectOne('ui-api/nfs-ganesha/cephfs/filesystems').flush([{ id: 1, name: 'a' }]);
+    httpTesting.expectOne('api/nfs-ganesha/cluster').flush(['mynfs']);
+    httpTesting.expectOne('api/nfs-ganesha/export/mynfs/1').flush({
+      fsal: {
+        name: 'RGW'
+      },
+      export_id: 1,
+      transports: ['TCP', 'UDP'],
+      protocols: [4],
+      clients: [],
+      squash: backendSquashValue
+    });
+    httpTesting.verify();
+    expect(component.nfsForm.value).toMatchObject({
+      squash: uiSquashValue
+    });
+  };
+
   beforeEach(() => {
     fixture = TestBed.createComponent(NfsFormComponent);
     component = fixture.componentInstance;
@@ -104,6 +125,14 @@ describe('NfsFormComponent', () => {
     expect(component.nfsForm.get('protocolNfsv4')).toBeTruthy();
   });
 
+  it('should match backend squash values with ui values', () => {
+    component.isEdit = true;
+    matchSquash('none', 'no_root_squash');
+    matchSquash('all', 'all_squash');
+    matchSquash('rootid', 'root_id_squash');
+    matchSquash('root', 'root_squash');
+  });
+
   describe('should submit request', () => {
     beforeEach(() => {
       component.nfsForm.patchValue({
index a56c1105e08e49c2b89b9ac41fb5c7b9faec0d61..595b3b7fe7c39514b898047650fc1f65fcbefa00 100644 (file)
@@ -56,7 +56,7 @@ export class NfsFormComponent extends CdForm implements OnInit {
 
   defaultAccessType = { RGW: 'RO' };
   nfsAccessType: any[] = this.nfsService.nfsAccessType;
-  nfsSquash: any[] = this.nfsService.nfsSquash;
+  nfsSquash: any[] = Object.keys(this.nfsService.nfsSquash);
 
   action: string;
   resource: string;
@@ -161,12 +161,8 @@ export class NfsFormComponent extends CdForm implements OnInit {
           Validators.pattern('^/[^><|&()]*$')
         ]
       }),
-      access_type: new FormControl('RW', {
-        validators: [Validators.required]
-      }),
-      squash: new FormControl(this.nfsSquash[0], {
-        validators: [Validators.required]
-      }),
+      access_type: new FormControl('RW'),
+      squash: new FormControl(this.nfsSquash[0]),
       transportUDP: new FormControl(true, {
         validators: [
           CdValidators.requiredIf({ transportTCP: false }, (value: boolean) => {
@@ -202,6 +198,12 @@ export class NfsFormComponent extends CdForm implements OnInit {
     res.transportUDP = res.transports.indexOf('UDP') !== -1;
     delete res.transports;
 
+    Object.entries(this.nfsService.nfsSquash).forEach(([key, value]) => {
+      if (value.includes(res.squash)) {
+        res.squash = key;
+      }
+    });
+
     res.clients.forEach((client: any) => {
       let addressStr = '';
       client.addresses.forEach((address: string) => {
index 1b0cd563cc8aa37a959b718faaa08cf36b7df615..40d71dd0e32182f39d87120bc02f45dcc0ed8d01 100644 (file)
@@ -20,6 +20,7 @@
          i18n>Performance Details</a>
       <ng-template ngbNavContent>
         <cd-grafana grafanaPath="ceph-pool-detail?var-pool_name={{selection.pool_name}}"
+                    [type]="'metrics'"
                     uid="-xyV8KCiz"
                     grafanaStyle="three">
         </cd-grafana>
index 7122f749cfb9e84f33a7fa1774c2fd62a2dea70b..bd568a9107ea03d1a93453e4c51927305106bc59 100644 (file)
@@ -38,6 +38,7 @@
        i18n>Overall Performance</a>
     <ng-template ngbNavContent>
       <cd-grafana [grafanaPath]="'ceph-pools-overview?'"
+                  [type]="'metrics'"
                   uid="z99hzWtmk"
                   grafanaStyle="two">
       </cd-grafana>
index e53eaa8f73d3d6c5801f52429bc52e4cc78a4148..f10394342b1381e0eef7c587bad937fb63e8ff18 100644 (file)
@@ -27,6 +27,7 @@
          i18n>Performance Details</a>
       <ng-template ngbNavContent>
         <cd-grafana [grafanaPath]="'rgw-instance-detail?var-rgw_servers=rgw.' + this.serviceId"
+                    [type]="'metrics'"
                     uid="x5ARzZtmk"
                     grafanaStyle="one">
         </cd-grafana>
index 38683a6f6d8f72e1fe562a65bf646579afca3cb6..e5b01305706ae81ec6e2450f3ae5ec1486dcafc8 100644 (file)
@@ -24,6 +24,7 @@
        i18n>Overall Performance</a>
     <ng-template ngbNavContent>
       <cd-grafana [grafanaPath]="'rgw-overview?'"
+                  [type]="'metrics'"
                   uid="WAkugZpiz"
                   grafanaStyle="two">
       </cd-grafana>
@@ -36,6 +37,7 @@
        i18n>Sync Performance</a>
     <ng-template ngbNavContent>
       <cd-grafana [grafanaPath]="'radosgw-sync-overview?'"
+                  [type]="'metrics'"
                   uid="rgw-sync-overview"
                   grafanaStyle="two">
       </cd-grafana>
index 4a28c3e57234b9b471303fdd21930888b650c937..6c00f37d42d8387a4c8932a94fa7c25fb0479ed5 100644 (file)
@@ -82,6 +82,9 @@
                    class="form-control"
                    type="text"
                    formControlName="display_name">
+            <span class="invalid-feedback"
+                  *ngIf="userForm.showError('display_name', frm, 'pattern')"
+                  i18n>The value is not valid.</span>
             <span class="invalid-feedback"
                   *ngIf="userForm.showError('display_name', frm, 'required')"
                   i18n>This field is required.</span>
index 5ab3337717812c1c3e8b0fd80a4518e6586b9ff7..9d4e1ce601b7fb83399a423c9dbbe333fcc53de7 100644 (file)
@@ -98,7 +98,7 @@ export class RgwUserFormComponent extends CdForm implements OnInit {
               )
             ]
       ],
-      display_name: [null, [Validators.required]],
+      display_name: [null, [Validators.required, Validators.pattern(/^[a-zA-Z0-9!@#%^&*()_ -]+$/)]],
       email: [
         null,
         [CdValidators.email],
index 93438532e74034050ff17a7db8bbc0c95152b47f..164c181dab4bb76ad865ad9ed1c2dea5746a23bf 100644 (file)
@@ -2,35 +2,62 @@
   <title>Error Page</title>
   <base target="_blank">
 </head>
-<div class="dashboard row">
-  <div class="text-center content">
-    <br>
-    <div *ngIf="header && message; else elseBlock">
-    <i class="{{ icon }}"
-       aria-hidden="true"></i>
-    <br><br><br>
-    <h3><b>{{ header }}</b></h3>
-      <br>
-    <h4>{{ message }}</h4>
-    </div>
-    <ng-template #elseBlock>
-      <i class="fa fa-exclamation-triangle"
-         aria-hidden="true"></i>
-      <br><br><br>
-      <h3 i18n><b>Page not Found</b></h3>
-        <br>
-      <h4 i18n>Sorry, we couldn’t find what you were looking for.
-      The page you requested may have been changed or moved.</h4>
-    </ng-template>
-    <div *ngIf="section">
-      <h4 i18n>Please consult the <a href="{{ docUrl }}">documentation</a> on how to configure and enable
-        the {{ section_info }} management functionality.</h4>
-    </div>
-    <br><br>
-    <div>
-      <button class="btn btn-primary"
-              [routerLink]="'/dashboard'"
-              i18n>Go To Dashboard</button>
+<div class="container h-75">
+  <div class="row h-100 justify-content-center align-items-center">
+    <div class="blank-page">
+      <div *ngIf="header && message; else elseBlock">
+        <i [ngClass]="icon"
+           class="mx-auto d-block"></i>
+
+        <div class="mt-4 text-center">
+          <h3><b>{{ header }}</b></h3>
+          <h4 class="mt-3"
+              *ngIf="header !== message">{{ message }}</h4>
+          <h4 *ngIf="section"
+              i18n>Please consult the <a href="{{ docUrl }}">documentation</a> on how to configure and enable
+                   the {{ sectionInfo }} management functionality.
+          </h4>
+        </div>
+      </div>
+
+      <div class="mt-4">
+        <div class="text-center"
+             *ngIf="(buttonName && buttonRoute) || uiConfig; else dashboardButton">
+          <button class="btn btn-primary"
+                  [routerLink]="buttonRoute"
+                  *ngIf="!uiConfig; else configureButtonTpl"
+                  i18n>{{ buttonName }}</button>
+        </div>
+      </div>
     </div>
   </div>
 </div>
+
+<ng-template #configureButtonTpl>
+  <button class="btn btn-primary"
+          (click)="doConfigure()"
+          [attr.title]="buttonTitle"
+          *ngIf="uiConfig"
+          i18n>{{ buttonName }}</button>
+</ng-template>
+
+
+<ng-template #elseBlock>
+  <i class="fa fa-exclamation-triangle mx-auto d-block text-danger"></i>
+
+  <div class="mt-4 text-center">
+    <h3 i18n><b>Page not Found</b></h3>
+
+    <h4 class="mt-4"
+        i18n>Sorry, we couldn’t find what you were looking for.
+             The page you requested may have been changed or moved.</h4>
+  </div>
+</ng-template>
+
+<ng-template #dashboardButton>
+  <div class="mt-4 text-center">
+    <button class="btn btn-primary"
+            [routerLink]="'/dashboard'"
+            i18n>Go To Dashboard</button>
+  </div>
+</ng-template>
index 618202da8bd23456f14a0f59a2c0199e79bcf665..feb4e0f95829a2b54d3742d9c3e6f581c8ab882f 100644 (file)
@@ -9,35 +9,6 @@ i {
   margin-top: 120px;
 }
 
-.text-center {
-  background-color: vv.$body-bg-alt;
-}
-
-.dashboard {
-  background-color: vv.$body-bg-alt;
-  height: 100%;
-  position: relative;
-}
-
-.content {
-  left: 50%;
-  position: absolute;
-  top: 40%;
-  transform: translate(-50%, -50%);
-  width: 100%;
-}
-
-.row {
-  display: block;
-  margin-left: -29px;
-  margin-right: -29px;
-  padding-top: 10em;
-}
-
-.fa-exclamation-triangle {
-  color: vv.$danger;
-}
-
 .fa-lock {
   color: vv.$danger;
 }
index 3e9b24ebf8e611cc560f7e679922ac4ea2ec9056..5763d4d975fb6dd3ea2e85c496fdf1d765c3ddc4 100644 (file)
@@ -2,6 +2,8 @@ import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { RouterTestingModule } from '@angular/router/testing';
 
+import { ToastrModule } from 'ngx-toastr';
+
 import { SharedModule } from '~/app/shared/shared.module';
 import { configureTestBed } from '~/testing/unit-test-helper';
 import { ErrorComponent } from './error.component';
@@ -12,7 +14,7 @@ describe('ErrorComponent', () => {
 
   configureTestBed({
     declarations: [ErrorComponent],
-    imports: [HttpClientTestingModule, RouterTestingModule, SharedModule]
+    imports: [HttpClientTestingModule, RouterTestingModule, SharedModule, ToastrModule.forRoot()]
   });
 
   beforeEach(() => {
index 1f2cf57c5088780a25fcf11c4bcc8cb69ac2e855..650121fb3c69b761063a0ad1ddeea838d13bcb2c 100644 (file)
@@ -1,10 +1,13 @@
+import { HttpClient } from '@angular/common/http';
 import { Component, HostListener, OnDestroy, OnInit } from '@angular/core';
 import { NavigationEnd, Router, RouterEvent } from '@angular/router';
 
 import { Subscription } from 'rxjs';
 import { filter } from 'rxjs/operators';
 
+import { NotificationType } from '~/app/shared/enum/notification-type.enum';
 import { DocService } from '~/app/shared/services/doc.service';
+import { NotificationService } from '~/app/shared/services/notification.service';
 
 @Component({
   selector: 'cd-error',
@@ -16,12 +19,25 @@ export class ErrorComponent implements OnDestroy, OnInit {
   message: string;
   section: string;
   section_info: string;
+  button_name: string;
+  button_route: string;
   icon: string;
   docUrl: string;
   source: string;
   routerSubscription: Subscription;
+  uiConfig: string;
+  uiApiPath: string;
+  buttonRoute: string;
+  buttonName: string;
+  buttonTitle: string;
+  component: string;
 
-  constructor(private router: Router, private docService: DocService) {}
+  constructor(
+    private router: Router,
+    private docService: DocService,
+    private http: HttpClient,
+    private notificationService: NotificationService
+  ) {}
 
   ngOnInit() {
     this.fetchData();
@@ -32,6 +48,23 @@ export class ErrorComponent implements OnDestroy, OnInit {
       });
   }
 
+  doConfigure() {
+    this.http.post(`ui-api/${this.uiApiPath}/configure`, {}).subscribe({
+      next: () => {
+        this.notificationService.show(NotificationType.info, `Configuring ${this.component}`);
+      },
+      error: (error: any) => {
+        this.notificationService.show(NotificationType.error, error);
+      },
+      complete: () => {
+        setTimeout(() => {
+          this.router.navigate([this.uiApiPath]);
+          this.notificationService.show(NotificationType.success, `Configured ${this.component}`);
+        }, 3000);
+      }
+    });
+  }
+
   @HostListener('window:beforeunload', ['$event']) unloadHandler(event: Event) {
     event.returnValue = false;
   }
@@ -43,8 +76,16 @@ export class ErrorComponent implements OnDestroy, OnInit {
       this.header = history.state.header;
       this.section = history.state.section;
       this.section_info = history.state.section_info;
+      this.button_name = history.state.button_name;
+      this.button_route = history.state.button_route;
       this.icon = history.state.icon;
       this.source = history.state.source;
+      this.uiConfig = history.state.uiConfig;
+      this.uiApiPath = history.state.uiApiPath;
+      this.buttonRoute = history.state.button_route;
+      this.buttonName = history.state.button_name;
+      this.buttonTitle = history.state.button_title;
+      this.component = history.state.component;
       this.docUrl = this.docService.urlGenerator(this.section);
     } catch (error) {
       this.router.navigate(['/error']);
index bdb35a610d973036def487cee01a53bbfc5acf63..39bcb5b6a0dc312fa873b21c6d0e3db9d808b265 100644 (file)
               *ngIf="permissions.prometheus.read">
             <a routerLink="/monitoring">
               <ng-container i18n>Monitoring</ng-container>
-              <small *ngIf="prometheusAlertService.activeAlerts > 0"
-                     class="badge badge-danger">{{ prometheusAlertService.activeAlerts }}</small>
+              <small *ngIf="prometheusAlertService.activeCriticalAlerts > 0"
+                     class="badge badge-danger ml-1">{{ prometheusAlertService.activeCriticalAlerts }}</small>
+              <small *ngIf="prometheusAlertService.activeWarningAlerts > 0"
+                     class="badge badge-warning ml-1">{{ prometheusAlertService.activeWarningAlerts }}</small>
             </a>
           </li>
         </ul>
index 07bd4deb9cb1f06f1d4e38eb834e56d2212fe713..c62dfea7c0155b71fcae79c5d4a424d62f4e4e8a 100644 (file)
@@ -39,6 +39,20 @@ export class CephServiceService {
     );
   }
 
+  update(serviceSpec: { [key: string]: any }) {
+    const serviceName = serviceSpec['service_id']
+      ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
+      : serviceSpec['service_type'];
+    return this.http.put(
+      `${this.url}/${serviceName}`,
+      {
+        service_name: serviceName,
+        service_spec: serviceSpec
+      },
+      { observe: 'response' }
+    );
+  }
+
   delete(serviceName: string) {
     return this.http.delete(`${this.url}/${serviceName}`, { observe: 'response' });
   }
index 636335673978f57619adf54f648830404070182e..9b4e4a0a288d06927e53b7e7e9027e37f5e22814 100644 (file)
@@ -45,7 +45,12 @@ export class NfsService extends ApiClient {
     }
   ];
 
-  nfsSquash = ['no_root_squash', 'root_id_squash', 'root_squash', 'all_squash'];
+  nfsSquash = {
+    no_root_squash: ['no_root_squash', 'noidsquash', 'none'],
+    root_id_squash: ['root_id_squash', 'rootidsquash', 'rootid'],
+    root_squash: ['root_squash', 'rootsquash', 'root'],
+    all_squash: ['all_squash', 'allsquash', 'all', 'allanonymous', 'all_anonymous']
+  };
 
   constructor(private http: HttpClient) {
     super();
index f4c7e4390ca180eadd585fb9dd7a0cb8b1565612..c49cb8b0d81733e6b1b9f599169f0c5b2a512c92 100644 (file)
@@ -7,7 +7,7 @@ import { OrchestratorService } from './orchestrator.service';
 describe('OrchestratorService', () => {
   let service: OrchestratorService;
   let httpTesting: HttpTestingController;
-  const apiPath = 'api/orchestrator';
+  const uiApiPath = 'ui-api/orchestrator';
 
   configureTestBed({
     providers: [OrchestratorService],
@@ -29,7 +29,7 @@ describe('OrchestratorService', () => {
 
   it('should call status', () => {
     service.status().subscribe();
-    const req = httpTesting.expectOne(`${apiPath}/status`);
+    const req = httpTesting.expectOne(`${uiApiPath}/status`);
     expect(req.request.method).toBe('GET');
   });
 });
index 20117158215128ad023c3b90008907aba8a4522a..a6e33e8342acbec2b249d0ec518f2f6143078089 100644 (file)
@@ -11,7 +11,7 @@ import { OrchestratorStatus } from '../models/orchestrator.interface';
   providedIn: 'root'
 })
 export class OrchestratorService {
-  private url = 'api/orchestrator';
+  private url = 'ui-api/orchestrator';
 
   disableMessages = {
     noOrchestrator: $localize`The feature is disabled because Orchestrator is not available.`,
index 135bbaf39bc3b643b49113939ba4c9c021ada119..d1f9997791ae0605fed6d746ab6bb38c79ac00a0 100644 (file)
@@ -27,6 +27,7 @@ describe('OsdService', () => {
   });
 
   it('should call create', () => {
+    const trackingId = 'all_hdd, host1_ssd';
     const post_data = {
       method: 'drive_groups',
       data: [
@@ -47,9 +48,9 @@ describe('OsdService', () => {
           }
         }
       ],
-      tracking_id: 'all_hdd, host1_ssd'
+      tracking_id: trackingId
     };
-    service.create(post_data.data).subscribe();
+    service.create(post_data.data, trackingId).subscribe();
     const req = httpTesting.expectOne('api/osd');
     expect(req.request.method).toBe('POST');
     expect(req.request.body).toEqual(post_data);
@@ -173,4 +174,10 @@ describe('OsdService', () => {
     const req = httpTesting.expectOne('api/osd/1/devices');
     expect(req.request.method).toBe('GET');
   });
+
+  it('should call getDeploymentOptions', () => {
+    service.getDeploymentOptions().subscribe();
+    const req = httpTesting.expectOne('ui-api/osd/deployment_options');
+    expect(req.request.method).toBe('GET');
+  });
 });
index c8f881d5e13f540641ed983760fa6d0d3710555f..10a0cf47f0887ed720af19d652f36d235f2e5b0c 100644 (file)
@@ -7,6 +7,7 @@ import { map } from 'rxjs/operators';
 
 import { CdDevice } from '../models/devices';
 import { InventoryDeviceType } from '../models/inventory-device-type.model';
+import { DeploymentOptions } from '../models/osd-deployment-options';
 import { OsdSettings } from '../models/osd-settings';
 import { SmartDataResponseV1 } from '../models/smart';
 import { DeviceService } from '../services/device.service';
@@ -16,6 +17,8 @@ import { DeviceService } from '../services/device.service';
 })
 export class OsdService {
   private path = 'api/osd';
+  private uiPath = 'ui-api/osd';
+
   osdDevices: InventoryDeviceType[] = [];
 
   osdRecvSpeedModalPriorities = {
@@ -65,11 +68,11 @@ export class OsdService {
 
   constructor(private http: HttpClient, private deviceService: DeviceService) {}
 
-  create(driveGroups: Object[]) {
+  create(driveGroups: Object[], trackingId: string, method = 'drive_groups') {
     const request = {
-      method: 'drive_groups',
+      method: method,
       data: driveGroups,
-      tracking_id: _.join(_.map(driveGroups, 'service_id'), ', ')
+      tracking_id: trackingId
     };
     return this.http.post(this.path, request, { observe: 'response' });
   }
@@ -104,6 +107,10 @@ export class OsdService {
     return this.http.post(`${this.path}/${id}/scrub?deep=${deep}`, null);
   }
 
+  getDeploymentOptions() {
+    return this.http.get<DeploymentOptions>(`${this.uiPath}/deployment_options`);
+  }
+
   getFlags() {
     return this.http.get(`${this.path}/flags`);
   }
index af646d8ac61d3cf8bc725192139de50543f348ad..d14b2bc40654fd148892ca2bd414be99319335e0 100644 (file)
@@ -4,6 +4,7 @@ export interface RbdPool {
   pool_name: string;
   status: number;
   value: RbdImage[];
+  headers: any;
 }
 
 export interface RbdImage {
index a66d861e46432839e0cd43ab2237e0ad7ba27f29..84abf6d346188559a24a563c340a020889018d56 100644 (file)
@@ -1,6 +1,7 @@
 import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
 import { TestBed } from '@angular/core/testing';
 
+import { CdTableFetchDataContext } from '~/app/shared/models/cd-table-fetch-data-context';
 import { configureTestBed } from '~/testing/unit-test-helper';
 import { ImageSpec } from '../models/image-spec';
 import { RbdConfigurationService } from '../services/rbd-configuration.service';
@@ -55,8 +56,10 @@ describe('RbdService', () => {
   });
 
   it('should call list', () => {
-    service.list().subscribe();
-    const req = httpTesting.expectOne('api/block/image');
+    /* tslint:disable:no-empty */
+    const context = new CdTableFetchDataContext(() => {});
+    service.list(context.toParams()).subscribe();
+    const req = httpTesting.expectOne('api/block/image?offset=0&limit=10&search=&sort=+name');
     expect(req.request.method).toBe('GET');
   });
 
index 5482f093122869cd38e672062a3d7f2cc2470a24..555f0db0f4f8009335f3392fd5d2f271ccb0e4d0 100644 (file)
@@ -4,6 +4,7 @@ import { Injectable } from '@angular/core';
 import _ from 'lodash';
 import { map } from 'rxjs/operators';
 
+import { ApiClient } from '~/app/shared/api/api-client';
 import { cdEncode, cdEncodeNot } from '../decorators/cd-encode';
 import { ImageSpec } from '../models/image-spec';
 import { RbdConfigurationService } from '../services/rbd-configuration.service';
@@ -13,8 +14,10 @@ import { RbdPool } from './rbd.model';
 @Injectable({
   providedIn: 'root'
 })
-export class RbdService {
-  constructor(private http: HttpClient, private rbdConfigurationService: RbdConfigurationService) {}
+export class RbdService extends ApiClient {
+  constructor(private http: HttpClient, private rbdConfigurationService: RbdConfigurationService) {
+    super();
+  }
 
   isRBDPool(pool: any) {
     return _.indexOf(pool.application_metadata, 'rbd') !== -1 && !pool.pool_name.includes('/');
@@ -40,23 +43,30 @@ export class RbdService {
     return this.http.get(`api/block/image/${imageSpec.toStringEncoded()}`);
   }
 
-  list() {
-    return this.http.get<RbdPool[]>('api/block/image').pipe(
-      map((pools) =>
-        pools.map((pool) => {
-          pool.value.map((image) => {
-            if (!image.configuration) {
+  list(params: any) {
+    return this.http
+      .get<RbdPool[]>('api/block/image', {
+        params: params,
+        headers: { Accept: this.getVersionHeaderValue(2, 0) },
+        observe: 'response'
+      })
+      .pipe(
+        map((response: any) => {
+          return response['body'].map((pool: any) => {
+            pool.value.map((image: any) => {
+              if (!image.configuration) {
+                return image;
+              }
+              image.configuration.map((option: any) =>
+                Object.assign(option, this.rbdConfigurationService.getOptionByName(option.name))
+              );
               return image;
-            }
-            image.configuration.map((option) =>
-              Object.assign(option, this.rbdConfigurationService.getOptionByName(option.name))
-            );
-            return image;
+            });
+            pool['headers'] = response.headers;
+            return pool;
           });
-          return pool;
         })
-      )
-    );
+      );
   }
 
   copy(imageSpec: ImageSpec, rbd: any) {
index bef4bb8a748639ef9fa6273467f39e3fd8bc6bc8..476ed96096c122f717a1bc6289c61c57ce3d031d 100644 (file)
@@ -6,5 +6,6 @@
                     (submitAction)="submitAction()"
                     [disabled]="disabled"
                     [form]="form"
+                    [ariaLabel]="submitText"
                     data-cy="submitBtn">{{ submitText }}</cd-submit-button>
 </div>
index 755b57c7045fffe03118879a408db0c54de67abb..8ad98b27f47e7bf11b0e394503dfd7ddf7109efc 100644 (file)
                 (click)="reset()">
           <i [ngClass]="[icons.undo]"></i>
         </button>
+        <button class="btn btn-light my-1 ml-3"
+                i18n-title
+                title="Show hidden information"
+                (click)="showMessage = !showMessage">
+          <i [ngClass]="[icons.infoCircle, icons.large]"></i>
+        </button>
       </div>
     </div>
   </div>
 
+  <div class="row">
+    <div class="col my-3"
+         *ngIf="showMessage">
+      <cd-alert-panel type="info"
+                      class="mb-3"
+                      *ngIf="showMessage"
+                      dismissible="true"
+                      (dismissed)="showMessage = false"
+                      i18n>If no embedded Grafana Dashboard appeared below, please follow <a [href]="grafanaSrc"
+                      target="_blank"
+                      noopener
+                      noreferrer>this link </a> to check if Grafana is reachable and there are no HTTPS certificate issues. You may need to reload this page after accepting any Browser certificate exceptions</cd-alert-panel>
+    </div>
+  </div>
+
   <div class="row">
     <div class="col">
       <div class="grafana-container">
index 63733fd759cccd79423ee02fe9b097cf14787947..5052ef9ec6e822eac104b8b9c6f13077c0af1c78 100644 (file)
@@ -20,6 +20,8 @@ describe('GrafanaComponent', () => {
   let fixture: ComponentFixture<GrafanaComponent>;
   const expected_url =
     'http:localhost:3000/d/foo/somePath&refresh=2s&var-datasource=Dashboard1&kiosk&from=now-1h&to=now';
+  const expected_logs_url =
+    'http:localhost:3000/explore?orgId=1&left=["now-1h","now","Loki",{"refId":"A"}]&kiosk';
 
   configureTestBed({
     declarations: [GrafanaComponent, AlertPanelComponent, LoadingPanelComponent, DocComponent],
@@ -31,6 +33,7 @@ describe('GrafanaComponent', () => {
     fixture = TestBed.createComponent(GrafanaComponent);
     component = fixture.componentInstance;
     component.grafanaPath = 'somePath';
+    component.type = 'metrics';
     component.uid = 'foo';
   });
 
@@ -50,6 +53,7 @@ describe('GrafanaComponent', () => {
   describe('with grafana initialized', () => {
     beforeEach(() => {
       TestBed.inject(SettingsService)['settings'] = { 'api/grafana/url': 'http:localhost:3000' };
+      component.type = 'metrics';
       fixture.detectChanges();
     });
 
@@ -78,4 +82,23 @@ describe('GrafanaComponent', () => {
       expect(component.dashboardExist).toBe(true);
     });
   });
+
+  describe('with loki datasource', () => {
+    beforeEach(() => {
+      TestBed.inject(SettingsService)['settings'] = { 'api/grafana/url': 'http:localhost:3000' };
+      component.type = 'logs';
+      component.grafanaPath = 'explore?';
+      fixture.detectChanges();
+    });
+
+    it('should have found out that Loki Log Search exists', () => {
+      expect(component.grafanaExist).toBe(true);
+      expect(component.baseUrl).toBe('http:localhost:3000/d/');
+      expect(component.loading).toBe(false);
+      expect(component.url).toBe(expected_logs_url);
+      expect(component.grafanaSrc).toEqual({
+        changingThisBreaksApplicationSecurity: expected_logs_url
+      });
+    });
+  });
 });
index a687959b747f8532a7b03a69e8a642000a21655e..e7f3f5dc990b34bfd76c1f71439794f606f567be 100644 (file)
@@ -19,15 +19,18 @@ export class GrafanaComponent implements OnInit, OnChanges {
   panelStyle: any;
   grafanaExist = false;
   mode = '&kiosk';
-  datasource = 'Dashboard1';
+  datasource: string;
   loading = true;
   styles: Record<string, string> = {};
   dashboardExist = true;
+  showMessage = false;
   time: string;
   grafanaTimes: any;
   icons = Icons;
   readonly DEFAULT_TIME: string = 'from=now-1h&to=now';
 
+  @Input()
+  type: string;
   @Input()
   grafanaPath: string;
   @Input()
@@ -153,6 +156,8 @@ export class GrafanaComponent implements OnInit, OnChanges {
       four: 'grafana_four'
     };
 
+    this.datasource = this.type === 'metrics' ? 'Dashboard1' : 'Loki';
+
     this.settingsService.ifSettingConfigured('api/grafana/url', (url) => {
       this.grafanaExist = true;
       this.loading = false;
@@ -166,16 +171,13 @@ export class GrafanaComponent implements OnInit, OnChanges {
     this.settingsService
       .validateGrafanaDashboardUrl(this.uid)
       .subscribe((data: any) => (this.dashboardExist = data === 200));
-    this.url =
-      this.baseUrl +
-      this.uid +
-      '/' +
-      this.grafanaPath +
-      '&refresh=2s' +
-      `&var-datasource=${this.datasource}` +
-      this.mode +
-      '&' +
-      this.time;
+    if (this.type === 'metrics') {
+      this.url = `${this.baseUrl}${this.uid}/${this.grafanaPath}&refresh=2s&var-datasource=${this.datasource}${this.mode}&${this.time}`;
+    } else {
+      this.url = `${this.baseUrl.slice(0, -2)}${this.grafanaPath}orgId=1&left=["now-1h","now","${
+        this.datasource
+      }",{"refId":"A"}]${this.mode}`;
+    }
     this.grafanaSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);
   }
 
index 77d6c5440a57c5955ed0c884eef16a9554d56f2e..af557a293cb308b08ff6398c61fb8286737752f2 100644 (file)
@@ -2,7 +2,8 @@
         class="btn btn-accent tc_submitButton"
         [ngClass]="btnClass"
         [disabled]="loading || disabled"
-        (click)="submit($event)">
+        (click)="submit($event)"
+        [attr.aria-label]="ariaLabel">
   <ng-content></ng-content>
   <span *ngIf="loading">
     <i [ngClass]="[icons.spinner, icons.spin]"></i>
index 6cd273bcf4e3535e3ddb439e685082d2cd28233b..3309f47ed18e6c2a02c4df07e786e10d5c368580 100644 (file)
@@ -42,6 +42,9 @@ export class SubmitButtonComponent implements OnInit {
   @Input()
   btnClass: string;
 
+  @Input()
+  ariaLabel: string;
+
   @Output()
   submitAction = new EventEmitter();
 
index 80e3550cd68a5a6cee5da6585f5a7297003f375b..071b02e4a9d946cbc3780ae1b71a300a54be0c5d 100644 (file)
@@ -1,5 +1,9 @@
 @use './src/styles/vendor/variables' as vv;
 
+::ng-deep cd-wizard {
+  width: 15%;
+}
+
 .card-body {
   padding-left: 0;
 }
index cb67cada578b505117d9829b422a5622f0a8c60b..4248be8f59c20121fec34d7f3f341f9f6754e113 100644 (file)
@@ -127,12 +127,16 @@ export class ActionLabelsI18n {
   FLAGS: string;
   ENTER_MAINTENANCE: string;
   EXIT_MAINTENANCE: string;
+  REMOVE_SCHEDULING: string;
+  PROMOTE: string;
+  DEMOTE: string;
   START_DRAIN: string;
   STOP_DRAIN: string;
   START: string;
   STOP: string;
   REDEPLOY: string;
   RESTART: string;
+  RESYNC: string;
 
   constructor() {
     /* Create a new item */
@@ -186,9 +190,10 @@ export class ActionLabelsI18n {
     this.FLAGS = $localize`Flags`;
     this.ENTER_MAINTENANCE = $localize`Enter Maintenance`;
     this.EXIT_MAINTENANCE = $localize`Exit Maintenance`;
+
     this.START_DRAIN = $localize`Start Drain`;
     this.STOP_DRAIN = $localize`Stop Drain`;
-
+    this.RESYNC = $localize`Resync`;
     /* Prometheus wording */
     this.RECREATE = $localize`Recreate`;
     this.EXPIRE = $localize`Expire`;
@@ -197,6 +202,10 @@ export class ActionLabelsI18n {
     this.STOP = $localize`Stop`;
     this.REDEPLOY = $localize`Redeploy`;
     this.RESTART = $localize`Restart`;
+
+    this.REMOVE_SCHEDULING = $localize`Remove Scheduling`;
+    this.PROMOTE = $localize`Promote`;
+    this.DEMOTE = $localize`Demote`;
   }
 }
 
index 9720c14e9166bf99711c73a6ca90b64e9fde5eef..905aaa96b69be5721fad0edc874f2ce4ab198bbb 100644 (file)
@@ -6,7 +6,7 @@
             [ngClass]="{'disabled': disableSelectionAction(currentAction)}"
             (click)="useClickAction(currentAction)"
             [routerLink]="useRouterLink(currentAction)"
-            data-testid="table-action-button"
+            [attr.aria-label]="currentAction.name"
             [preserveFragment]="currentAction.preserveFragment ? '' : null">
       <i [ngClass]="[currentAction.icon]"></i>
       <span>{{ currentAction.name }}</span>
@@ -32,7 +32,8 @@
                 (click)="useClickAction(action)"
                 [routerLink]="useRouterLink(action)"
                 [preserveFragment]="action.preserveFragment ? '' : null"
-                [disabled]="disableSelectionAction(action)">
+                [disabled]="disableSelectionAction(action)"
+                [attr.aria-label]="action.name">
           <i [ngClass]="[action.icon, 'action-icon']"></i>
           <span>{{ action.name }}</span>
         </button>
index 71ba156cf3f607cb108325d0a1565a4b015a2e9c..d7dd7e5c703ffbbf4b8a69e13fe82200a351cea2 100644 (file)
                  [rowClass]="getRowClass()"
                  [headerHeight]="header ? 'auto' : 0"
                  [footerHeight]="footer ? 'auto' : 0"
+                 [count]="count"
+                 [externalPaging]="serverSide"
+                 [externalSorting]="serverSide"
                  [limit]="userConfig.limit > 0 ? userConfig.limit : undefined"
+                 [offset]="userConfig.offset >= 0 ? userConfig.offset : 0"
+                 (page)="changePage($event)"
                  [loadingIndicator]="loadingIndicator"
                  [rowIdentity]="rowIdentity()"
                  [rowHeight]="'auto'">
           <span *ngIf="selectionType">
             {{ selectedCount }} <ng-container i18n="X selected">selected</ng-container> /
           </span>
-          <span *ngIf="rowCount != data?.length">
-            {{ rowCount }} <ng-container i18n="X found">found</ng-container> /
-          </span>
-          <span>
+
+          <!-- rowCount might have different semantics with or without serverSide.
+            We treat serverSide (backend-driven tables) as a specific case.
+          -->
+          <span *ngIf="!serverSide else serverSideTpl">
+            <span *ngIf="rowCount != data?.length">
+              {{ rowCount }} <ng-container i18n="X found">found</ng-container> /
+            </span>
             {{ data?.length || 0 }} <ng-container i18n="X total">total</ng-container>
           </span>
+
+          <ng-template #serverSideTpl>
+            {{ data?.length || 0 }} <ng-container i18n="X found">found</ng-container> /
+            {{ rowCount }} <ng-container i18n="X total">total</ng-container>
+          </ng-template>
         </div>
-        <datatable-pager [pagerLeftArrowIcon]="paginationClasses.pagerLeftArrow"
-                         [pagerRightArrowIcon]="paginationClasses.pagerRightArrow"
-                         [pagerPreviousIcon]="paginationClasses.pagerPrevious"
-                         [pagerNextIcon]="paginationClasses.pagerNext"
+        <datatable-pager [pagerLeftArrowIcon]="paginationClasses.pagerPrevious"
+                         [pagerRightArrowIcon]="paginationClasses.pagerNext"
+                         [pagerPreviousIcon]="paginationClasses.pagerLeftArrow"
+                         [pagerNextIcon]="paginationClasses.pagerRightArrow"
                          [page]="curPage"
                          [size]="pageSize"
                          [count]="rowCount"
      (click)="toggleExpandRow(row, isExpanded, $event)">
   </a>
 </ng-template>
+
+<ng-template #timeAgoTpl
+             let-value="value">
+  <span data-toggle="tooltip"
+        [title]="value | cdDate">{{ value | relativeDate }}</span>
+</ng-template>
index 96bf2336e92d354a80bb91ffa730b9fb5c40a8ba..4f8ca7133036707b8bc905566ad45509c89f86db 100644 (file)
@@ -5,7 +5,6 @@ import {
   Component,
   EventEmitter,
   Input,
-  NgZone,
   OnChanges,
   OnDestroy,
   OnInit,
@@ -24,7 +23,7 @@ import {
   TableColumnProp
 } from '@swimlane/ngx-datatable';
 import _ from 'lodash';
-import { Observable, Subject, Subscription, timer as observableTimer } from 'rxjs';
+import { Observable, of, Subject, Subscription } from 'rxjs';
 
 import { TableStatus } from '~/app/shared/classes/table-status';
 import { CellTemplate } from '~/app/shared/enum/cell-template.enum';
@@ -33,8 +32,10 @@ import { CdTableColumn } from '~/app/shared/models/cd-table-column';
 import { CdTableColumnFilter } from '~/app/shared/models/cd-table-column-filter';
 import { CdTableColumnFiltersChange } from '~/app/shared/models/cd-table-column-filters-change';
 import { CdTableFetchDataContext } from '~/app/shared/models/cd-table-fetch-data-context';
+import { PageInfo } from '~/app/shared/models/cd-table-paging';
 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
 import { CdUserConfig } from '~/app/shared/models/cd-user-config';
+import { TimerService } from '~/app/shared/services/timer.service';
 
 @Component({
   selector: 'cd-table',
@@ -65,6 +66,8 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   mapTpl: TemplateRef<any>;
   @ViewChild('truncateTpl', { static: true })
   truncateTpl: TemplateRef<any>;
+  @ViewChild('timeAgoTpl', { static: true })
+  timeAgoTpl: TemplateRef<any>;
   @ViewChild('rowDetailsTpl', { static: true })
   rowDetailsTpl: TemplateRef<any>;
 
@@ -98,6 +101,8 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   // Page size to show. Set to 0 to show unlimited number of rows.
   @Input()
   limit? = 10;
+  @Input()
+  maxLimit? = 9999;
   // Has the row details?
   @Input()
   hasDetails = false;
@@ -110,7 +115,7 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
    * prevent triggering fetchData when initializing the table.
    */
   @Input()
-  autoReload: any = 5000;
+  autoReload = 5000;
 
   // Which row property is unique for a row. If the identifier is not specified in any
   // column, then the property name of the first column is used. Defaults to 'id'.
@@ -149,6 +154,17 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   @Input()
   status = new TableStatus();
 
+  // Support server-side pagination/sorting/etc.
+  @Input()
+  serverSide = false;
+
+  /*
+  Only required when serverSide is enabled.
+  It should be provided by the server via "X-Total-Count" HTTP Header
+  */
+  @Input()
+  count = 0;
+
   /**
    * Should be a function to update the input data if undefined nothing will be triggered
    *
@@ -159,7 +175,7 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
    * The function is triggered through one table and all tables will update
    */
   @Output()
-  fetchData = new EventEmitter();
+  fetchData = new EventEmitter<CdTableFetchDataContext>();
 
   /**
    * This should be defined if you need access to the selection object.
@@ -234,7 +250,11 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
     });
   }
 
-  constructor(private ngZone: NgZone, private cdRef: ChangeDetectorRef) {}
+  constructor(
+    // private ngZone: NgZone,
+    private cdRef: ChangeDetectorRef,
+    private timerService: TimerService
+  ) {}
 
   static prepareSearch(search: string) {
     search = search.toLowerCase().replace(/,/g, '');
@@ -248,6 +268,11 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
 
   ngOnInit() {
     this.localColumns = _.clone(this.columns);
+    // debounce reloadData method so that search doesn't run api requests
+    // for every keystroke
+    if (this.serverSide) {
+      this.reloadData = _.debounce(this.reloadData, 1000);
+    }
 
     // ngx-datatable triggers calculations each time mouse enters a row,
     // this will prevent that.
@@ -296,13 +321,11 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
       this.loadingIndicator = true;
     }
     if (_.isInteger(this.autoReload) && this.autoReload > 0) {
-      this.ngZone.runOutsideAngular(() => {
-        this.reloadSubscriber = observableTimer(0, this.autoReload).subscribe(() => {
-          this.ngZone.run(() => {
-            return this.reloadData();
-          });
+      this.reloadSubscriber = this.timerService
+        .get(() => of(0), this.autoReload)
+        .subscribe(() => {
+          this.reloadData();
         });
-      });
     } else if (!this.autoReload) {
       this.reloadData();
     } else {
@@ -323,6 +346,12 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
     if (!this.userConfig.limit) {
       this.userConfig.limit = this.limit;
     }
+    if (!(this.userConfig.offset >= 0)) {
+      this.userConfig.offset = this.table.offset;
+    }
+    if (!this.userConfig.search) {
+      this.userConfig.search = this.search;
+    }
     if (!this.userConfig.sorts) {
       this.userConfig.sorts = this.sorts;
     }
@@ -579,6 +608,7 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
     this.cellTemplates.badge = this.badgeTpl;
     this.cellTemplates.map = this.mapTpl;
     this.cellTemplates.truncate = this.truncateTpl;
+    this.cellTemplates.timeAgo = this.timeAgoTpl;
   }
 
   useCustomClass(value: any): string {
@@ -600,9 +630,18 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   }
 
   setLimit(e: any) {
-    const value = parseInt(e.target.value, 10);
+    const value = Number(e.target.value);
     if (value > 0) {
-      this.userConfig.limit = value;
+      if (this.maxLimit && value > this.maxLimit) {
+        this.userConfig.limit = this.maxLimit;
+        // change input field to maxLimit
+        e.srcElement.value = this.maxLimit;
+      } else {
+        this.userConfig.limit = value;
+      }
+    }
+    if (this.serverSide) {
+      this.reloadData();
     }
   }
 
@@ -622,6 +661,13 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
         // to the correct state.
         this.useData();
       });
+      context.pageInfo.offset = this.userConfig.offset;
+      context.pageInfo.limit = this.userConfig.limit;
+      context.search = this.userConfig.search;
+      if (this.userConfig.sorts?.length) {
+        const sort = this.userConfig.sorts[0];
+        context.sort = `${sort.dir === 'desc' ? '-' : '+'}${sort.prop}`;
+      }
       this.fetchData.emit(context);
       this.updating = true;
     }
@@ -632,6 +678,13 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
     this.reloadData();
   }
 
+  changePage(pageInfo: PageInfo) {
+    this.userConfig.offset = pageInfo.offset;
+    this.userConfig.limit = pageInfo.limit;
+    if (this.serverSide) {
+      this.reloadData();
+    }
+  }
   rowIdentity() {
     return (row: any) => {
       const id = row[this.identifier];
@@ -753,6 +806,10 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
 
   changeSorting({ sorts }: any) {
     this.userConfig.sorts = sorts;
+    if (this.serverSide) {
+      this.userConfig.offset = 0;
+      this.reloadData();
+    }
   }
 
   onClearSearch() {
@@ -769,19 +826,32 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   }
 
   updateFilter() {
-    let rows = this.columnFilters.length !== 0 ? this.doColumnFiltering() : this.data;
+    if (this.serverSide) {
+      if (this.userConfig.search !== this.search) {
+        // if we don't go back to the first page it will try load
+        // a page which could not exists with an especific search
+        this.userConfig.offset = 0;
+        this.userConfig.limit = this.limit;
+        this.userConfig.search = this.search;
+        this.updating = false;
+        this.reloadData();
+      }
+      this.rows = this.data;
+    } else {
+      let rows = this.columnFilters.length !== 0 ? this.doColumnFiltering() : this.data;
+
+      if (this.search.length > 0 && rows) {
+        const columns = this.localColumns.filter(
+          (c) => c.cellTransformation !== CellTemplate.sparkline
+        );
+        // update the rows
+        rows = this.subSearch(rows, TableComponent.prepareSearch(this.search), columns);
+        // Whenever the filter changes, always go back to the first page
+        this.table.offset = 0;
+      }
 
-    if (this.search.length > 0 && rows) {
-      const columns = this.localColumns.filter(
-        (c) => c.cellTransformation !== CellTemplate.sparkline
-      );
-      // update the rows
-      rows = this.subSearch(rows, TableComponent.prepareSearch(this.search), columns);
-      // Whenever the filter changes, always go back to the first page
-      this.table.offset = 0;
+      this.rows = rows;
     }
-
-    this.rows = rows;
   }
 
   subSearch(data: any[], currentSearch: string[], columns: CdTableColumn[]): any[] {
index 73ce1f23919f78f7a0a0f65dbe1dcad3a5c3ca38..066cc9930adce977811161e45d708f33c84bad14 100644 (file)
@@ -50,5 +50,10 @@ export enum CellTemplate {
   //     omission?: string; // Defaults to empty string.
   //   }
   // }
-  truncate = 'truncate'
+  truncate = 'truncate',
+  /*
+  This templace replaces a time, datetime or timestamp with a user-friendly "X {seconds,minutes,hours,days,...} ago",
+  but the tooltip still displays the absolute timestamp
+  */
+  timeAgo = 'timeAgo'
 }
index b7c6e672d7d71adaf42d291d679f5c20c1001efa..7937d82e6f3e62cf2d04e7eb872b12c9bed09a4d 100644 (file)
@@ -1,3 +1,7 @@
+import { HttpParams } from '@angular/common/http';
+
+import { PageInfo } from './cd-table-paging';
+
 export class CdTableFetchDataContext {
   errorConfig = {
     resetData: true, // Force data table to show no data
@@ -10,8 +14,31 @@ export class CdTableFetchDataContext {
    * reset the data table to the correct state.
    */
   error: Function;
+  pageInfo: PageInfo = new PageInfo();
+  search = '';
+  sort = '+name';
 
   constructor(error: () => void) {
     this.error = error;
   }
+
+  toParams(): HttpParams {
+    if (this.pageInfo.limit === null) {
+      this.pageInfo.limit = 0;
+    }
+    if (!this.search) {
+      this.search = '';
+    }
+    if (!this.sort || this.sort.length < 2) {
+      this.sort = '+name';
+    }
+    return new HttpParams({
+      fromObject: {
+        offset: String(this.pageInfo.offset * this.pageInfo.limit),
+        limit: String(this.pageInfo.limit),
+        search: this.search,
+        sort: this.sort
+      }
+    });
+  }
 }
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-table-paging.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-table-paging.ts
new file mode 100644 (file)
index 0000000..3693b52
--- /dev/null
@@ -0,0 +1,20 @@
+export const PAGE_LIMIT = 10;
+
+export class PageInfo {
+  // Total number of rows in a table
+  count: number;
+
+  // Current page (current row = offset x limit or pageSize)
+  offset = 0;
+
+  // Max. number of rows fetched from the server
+  limit: number = PAGE_LIMIT;
+
+  /*
+  pageSize and limit can be decoupled if hybrid server-side and client-side
+  are used. A use-case would be to reduce the amount of queries: that is,
+  the pageSize (client-side paging) might be 10, but the back-end queries
+  could have a limit of 100. That would avoid triggering requests
+  */
+  pageSize: number = PAGE_LIMIT;
+}
index 2e1a9e1970a47b1d6d774b76bd5782a535c3a277..edd1af784872e400dbdb735733d71a5f5a66fba8 100644 (file)
@@ -4,6 +4,8 @@ import { CdTableColumn } from './cd-table-column';
 
 export interface CdUserConfig {
   limit?: number;
+  offset?: number;
+  search?: string;
   sorts?: SortPropDir[];
   columns?: CdTableColumn[];
 }
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/osd-deployment-options.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/osd-deployment-options.ts
new file mode 100644 (file)
index 0000000..cae869e
--- /dev/null
@@ -0,0 +1,24 @@
+export enum OsdDeploymentOptions {
+  COST_CAPACITY = 'cost_capacity',
+  THROUGHPUT = 'throughput_optimized',
+  IOPS = 'iops_optimized'
+}
+
+export interface DeploymentOption {
+  name: OsdDeploymentOptions;
+  title: string;
+  desc: string;
+  capacity: number;
+  available: boolean;
+  hdd_used: number;
+  used: number;
+  nvme_used: number;
+  ssd_used: number;
+}
+
+export interface DeploymentOptions {
+  options: {
+    [key in OsdDeploymentOptions]: DeploymentOption;
+  };
+  recommended_option: OsdDeploymentOptions;
+}
index 7b7c5e05318ee4ead90f0b39de8099895e250a92..3e1f1f7ca2deea0fd3634d944b757e90df7cd7f4 100644 (file)
@@ -14,11 +14,11 @@ describe('CephReleaseNamePipe', () => {
     expect(pipe.transform(value)).toBe('mimic');
   });
 
-  it('recognizes a development release as the master branch', () => {
+  it('recognizes a development release as the main branch', () => {
     const value =
       'ceph version 13.1.0-534-g23d3751b89 \
        (23d3751b897b31d2bda57aeaf01acb5ff3c4a9cd) nautilus (dev)';
-    expect(pipe.transform(value)).toBe('master');
+    expect(pipe.transform(value)).toBe('main');
   });
 
   it('transforms with wrong version format', () => {
index c7c1e1d7423db5b7e9ef34e6e81d9384bb204747..c63c794a9188b2bf2b7678cb3face3a8be30051d 100644 (file)
@@ -10,8 +10,8 @@ export class CephReleaseNamePipe implements PipeTransform {
     const result = /ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(value);
     if (result) {
       if (result[2] === 'dev') {
-        // Assume this is actually master
-        return 'master';
+        // Assume this is actually main
+        return 'main';
       } else {
         // Return the "nautilus" part
         return result[1];
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts
new file mode 100644 (file)
index 0000000..22644dc
--- /dev/null
@@ -0,0 +1,20 @@
+import { fromEvent, Observable, partition } from 'rxjs';
+import { repeatWhen, shareReplay, takeUntil } from 'rxjs/operators';
+
+export function whenPageVisible() {
+  const visibilitychange$ = fromEvent(document, 'visibilitychange').pipe(
+    shareReplay({ refCount: true, bufferSize: 1 })
+  );
+
+  const [pageVisible$, pageHidden$] = partition(
+    visibilitychange$,
+    () => document.visibilityState === 'visible'
+  );
+
+  return function <T>(source: Observable<T>) {
+    return source.pipe(
+      takeUntil(pageHidden$),
+      repeatWhen(() => pageVisible$)
+    );
+  };
+}
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.spec.ts
new file mode 100644 (file)
index 0000000..dbe7bb4
--- /dev/null
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { CdTableServerSideService } from './cd-table-server-side.service';
+
+describe('CdTableServerSideService', () => {
+  let service: CdTableServerSideService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(CdTableServerSideService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/cd-table-server-side.service.ts
new file mode 100644 (file)
index 0000000..56bf807
--- /dev/null
@@ -0,0 +1,14 @@
+import { HttpResponse } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class CdTableServerSideService {
+  /* tslint:disable:no-empty */
+  constructor() {}
+
+  static getCount(resp: HttpResponse<any>): number {
+    return Number(resp.headers?.get('X-Total-Count'));
+  }
+}
index 8cce3a8bf8ca115ed14838dfca13c033fb3c0e5b..532aa6c6594b0e587417cd33c59b048efff5ab0f 100644 (file)
@@ -67,7 +67,7 @@ describe('ModuleStatusGuardService', () => {
     route.url = [];
     route.data = {
       moduleStatusGuardConfig: {
-        apiPath: 'bar',
+        uiApiPath: 'bar',
         redirectTo: '/foo',
         backend: 'rook'
       }
index 97c7251fbfac1a2da5651d0cff2183800e1c924f..df6f4854e1967d45090387c48ffdd0fb65521016 100644 (file)
@@ -10,7 +10,7 @@ import { Icons } from '~/app/shared/enum/icons.enum';
 
 /**
  * This service checks if a route can be activated by executing a
- * REST API call to '/api/<apiPath>/status'. If the returned response
+ * REST API call to '/ui-api/<uiApiPath>/status'. If the returned response
  * states that the module is not available, then the user is redirected
  * to the specified <redirectTo> URL path.
  *
@@ -26,7 +26,7 @@ import { Icons } from '~/app/shared/enum/icons.enum';
  *   canActivate: [AuthGuardService, ModuleStatusGuardService],
  *   data: {
  *     moduleStatusGuardConfig: {
- *       apiPath: 'rgw',
+ *       uiApiPath: 'rgw',
  *       redirectTo: 'rgw/501'
  *     }
  *   }
@@ -71,7 +71,7 @@ export class ModuleStatusGuardService implements CanActivate, CanActivateChild {
         }
       );
     }
-    return this.http.get(`api/${config.apiPath}/status`).pipe(
+    return this.http.get(`ui-api/${config.uiApiPath}/status`).pipe(
       map((resp: any) => {
         if (!resp.available && !backendCheck) {
           this.router.navigate([config.redirectTo || ''], {
@@ -80,7 +80,13 @@ export class ModuleStatusGuardService implements CanActivate, CanActivateChild {
               message: resp.message,
               section: config.section,
               section_info: config.section_info,
-              icon: Icons.wrench
+              button_name: config.button_name,
+              button_route: config.button_route,
+              button_title: config.button_title,
+              uiConfig: config.uiConfig,
+              uiApiPath: config.uiApiPath,
+              icon: Icons.wrench,
+              component: config.component
             }
           });
         }
index 11feca26b053189d76b4747f1039dbb884896e1f..d2ee89f9cd168b7890d4e5faaafff117679a51e3 100644 (file)
@@ -5,6 +5,7 @@ import { BehaviorSubject, EMPTY, Observable, of, Subscription } from 'rxjs';
 import { catchError, delay, mergeMap, repeat, tap } from 'rxjs/operators';
 
 import { Motd, MotdService } from '~/app/shared/api/motd.service';
+import { whenPageVisible } from '../rxjs/operators/page-visibilty.operator';
 
 @Injectable({
   providedIn: 'root'
@@ -31,7 +32,8 @@ export class MotdNotificationService implements OnDestroy {
         }),
         tap((motd: Motd | null) => this.processResponse(motd)),
         delay(60000),
-        repeat()
+        repeat(),
+        whenPageVisible()
       )
       .subscribe();
   }
index 6223808fb0122e3bd5cd3a3a62c1580a138fd8d0..f26b80629b9206f61496dc4bcf513ef6eaa90e94 100644 (file)
@@ -18,6 +18,8 @@ export class PrometheusAlertService {
   alerts: AlertmanagerAlert[] = [];
   rules: PrometheusRule[] = [];
   activeAlerts: number;
+  activeCriticalAlerts: number;
+  activeWarningAlerts: number;
 
   constructor(
     private alertFormatter: PrometheusAlertFormatter,
@@ -66,6 +68,18 @@ export class PrometheusAlertService {
       (result, alert) => (alert.status.state === 'active' ? ++result : result),
       0
     );
+    this.activeCriticalAlerts = _.reduce<AlertmanagerAlert, number>(
+      this.alerts,
+      (result, alert) =>
+        alert.status.state === 'active' && alert.labels.severity === 'critical' ? ++result : result,
+      0
+    );
+    this.activeWarningAlerts = _.reduce<AlertmanagerAlert, number>(
+      this.alerts,
+      (result, alert) =>
+        alert.status.state === 'active' && alert.labels.severity === 'warning' ? ++result : result,
+      0
+    );
     this.alerts = alerts;
     this.canAlertsBeNotified = true;
   }
index bfc4573c00ad49c7fcf6d0a89440a4b226b7befb..32145475336381da43d95d7549941e9405ee5961 100644 (file)
@@ -11,7 +11,7 @@ import { TaskMessageService } from './task-message.service';
 export class TaskListService implements OnDestroy {
   summaryDataSubscription: Subscription;
 
-  getUpdate: () => Observable<object>;
+  getUpdate: (context?: any) => Observable<object>;
   preProcessing: (_: any) => any[];
   setList: (_: any[]) => void;
   onFetchError: (error: any) => void;
@@ -42,7 +42,7 @@ export class TaskListService implements OnDestroy {
    * @memberof TaskListService
    */
   init(
-    getUpdate: () => Observable<object>,
+    getUpdate: (context?: any) => Observable<object>,
     preProcessing: (_: any) => any[],
     setList: (_: any[]) => void,
     onFetchError: (error: any) => void,
@@ -64,9 +64,9 @@ export class TaskListService implements OnDestroy {
     }, this.onFetchError);
   }
 
-  fetch() {
-    this.getUpdate().subscribe((resp: any) => {
-      this.updateData(resp, this.summary['executing_tasks'].filter(this.taskFilter));
+  fetch(context: any = null) {
+    this.getUpdate(context).subscribe((resp: any) => {
+      this.updateData(resp, this.summary?.['executing_tasks'].filter(this.taskFilter));
     }, this.onFetchError);
   }
 
@@ -82,7 +82,7 @@ export class TaskListService implements OnDestroy {
 
   private addMissing(data: any[], tasks: ExecutingTask[]) {
     const defaultBuilder = this.builders['default'];
-    tasks.forEach((task) => {
+    tasks?.forEach((task) => {
       const existing = data.find((item) => this.itemFilter(item, task));
       const builder = this.builders[task.name];
       if (!existing && (builder || defaultBuilder)) {
index 2ae2f4cdf5ebc2624266852796aa340229836127..716b710968f339963a4fb69ba063cb2c1a6d8dc8 100644 (file)
@@ -3,6 +3,7 @@ import { Injectable } from '@angular/core';
 import { Observable, timer } from 'rxjs';
 import { observeOn, shareReplay, switchMap } from 'rxjs/operators';
 
+import { whenPageVisible } from '../rxjs/operators/page-visibilty.operator';
 import { NgZoneSchedulerService } from './ngzone-scheduler.service';
 
 @Injectable({
@@ -21,7 +22,8 @@ export class TimerService {
     return timer(dueTime, refreshInterval, this.ngZone.leave).pipe(
       observeOn(this.ngZone.enter),
       switchMap(next),
-      shareReplay({ refCount: true, bufferSize: 1 })
+      shareReplay({ refCount: true, bufferSize: 1 }),
+      whenPageVisible()
     );
   }
 }
index 9ff41c6242351c931a9f3c4329d4d57e6683df72..7a618f704fc1ee4ec7af0ead9f05b93e2cc0c8cb 100644 (file)
@@ -102,3 +102,42 @@ mark {
 .border-success {
   border-left: 4px solid vv.$success;
 }
+
+.vertical-line {
+  border-left: 1px solid vv.$gray-400;
+}
+
+.accordion {
+  .card {
+    border: 0;
+  }
+
+  .card-header {
+    border: 0;
+    border-bottom: 3px solid vv.$white;
+    padding-left: 0;
+
+    .btn:focus,
+    .btn.focus {
+      box-shadow: none;
+    }
+
+    button.dropdown-toggle {
+      position: relative;
+
+      &::after {
+        border: 0;
+        content: '\f054';
+        font-family: 'ForkAwesome';
+        font-size: 1rem;
+        position: absolute;
+        right: 20px;
+        transition: transform 0.3s ease-in-out;
+      }
+
+      &[aria-expanded='true']::after {
+        transform: rotate(90deg);
+      }
+    }
+  }
+}
index 3c6ddbf80c998b714a26c6ce8974499c5104f527..1d84895c0dd75027e1ca324f0e380283bc7c61c7 100644 (file)
   padding-top: 7px;
 }
 
+.custom-radio {
+  padding-top: 5px;
+}
+
 .cd-col-form {
   @extend .col-12;
   @extend .col-lg-8;
index cefceb048622bcc24f2f3f21cd06f40c294eb872..946c853f880d66330d91fa3940be94553d16f363 100644 (file)
@@ -13,9 +13,6 @@ import threading
 import time
 from typing import TYPE_CHECKING, Optional
 
-from .services.custom_banner import get_login_banner_mgr, \
-    set_login_banner_mgr, unset_login_banner_mgr
-
 if TYPE_CHECKING:
     if sys.version_info >= (3, 8):
         from typing import Literal
@@ -421,19 +418,25 @@ class Module(MgrModule, CherryPyConfig):
         return 0, 'RGW credentials configured', ''
 
     @CLIWriteCommand("dashboard set-login-banner")
-    def set_login_banner(self, mgr_id: Optional[str] = None, inbuf: Optional[str] = None):
+    def set_login_banner(self, inbuf: str):
+        '''
+        Set the custom login banner read from -i <file>
+        '''
         item_label = 'login banner file'
         if inbuf is None:
             return HandleCommandResult(
                 -errno.EINVAL,
                 stderr=f'Please specify the {item_label} with "-i" option'
             )
-        set_login_banner_mgr(inbuf, mgr_id)
+        mgr.set_store('custom_login_banner', inbuf)
         return HandleCommandResult(stdout=f'{item_label} added')
 
     @CLIReadCommand("dashboard get-login-banner")
     def get_login_banner(self):
-        banner_text = get_login_banner_mgr()
+        '''
+        Get the custom login banner text
+        '''
+        banner_text = mgr.get_store('custom_login_banner')
         if banner_text is None:
             return HandleCommandResult(stdout='No login banner set')
         else:
@@ -441,7 +444,10 @@ class Module(MgrModule, CherryPyConfig):
 
     @CLIWriteCommand("dashboard unset-login-banner")
     def unset_login_banner(self):
-        unset_login_banner_mgr()
+        '''
+        Unset the custom login banner
+        '''
+        mgr.set_store('custom_login_banner', None)
         return HandleCommandResult(stdout='Login banner removed')
 
     def handle_command(self, inbuf, cmd):
@@ -511,6 +517,13 @@ class StandbyModule(MgrStandbyModule, CherryPyConfig):
             def default(self, *args, **kwargs):
                 if module.get_module_option('standby_behaviour', 'redirect') == 'redirect':
                     active_uri = module.get_active_uri()
+
+                    if cherrypy.request.path_info.startswith('/api/prometheus_receiver'):
+                        module.log.debug("Suppressed redirecting alert to active '%s'",
+                                         active_uri)
+                        cherrypy.response.status = 204
+                        return None
+
                     if active_uri:
                         module.log.info("Redirecting to active '%s'", active_uri)
                         raise cherrypy.HTTPRedirect(active_uri)
index 00329b78033840b2a81e542d5c5b654caa0e4604..8655a57364612e46ccdfc7b5b2f1ef1466a96359 100644 (file)
@@ -154,19 +154,38 @@ paths:
         name: pool_name
         schema:
           type: string
+      - default: 0
+        description: offset
+        in: query
+        name: offset
+        schema:
+          type: integer
+      - default: 5
+        description: limit
+        in: query
+        name: limit
+        schema:
+          type: integer
+      - default: ''
+        in: query
+        name: search
+        schema:
+          type: string
+      - default: ''
+        in: query
+        name: sort
+        schema:
+          type: string
       responses:
         '200':
           content:
-            application/vnd.ceph.api.v1.0+json:
+            application/vnd.ceph.api.v2.0+json:
               schema:
                 items:
                   properties:
                     pool_name:
                       description: pool name
                       type: string
-                    status:
-                      description: Status of the image
-                      type: integer
                     value:
                       description: ''
                       items:
@@ -174,7 +193,6 @@ paths:
                       type: array
                   type: object
                 required:
-                - status
                 - value
                 - pool_name
                 type: array
@@ -206,6 +224,8 @@ paths:
                   type: string
                 features:
                   type: string
+                mirror_mode:
+                  type: string
                 name:
                   type: string
                 namespace:
@@ -214,6 +234,9 @@ paths:
                   type: integer
                 pool_name:
                   type: string
+                schedule_interval:
+                  default: ''
+                  type: string
                 size:
                   type: integer
                 stripe_count:
@@ -539,10 +562,25 @@ paths:
               properties:
                 configuration:
                   type: string
+                enable_mirror:
+                  type: string
                 features:
                   type: string
+                mirror_mode:
+                  type: string
                 name:
                   type: string
+                primary:
+                  type: string
+                remove_scheduling:
+                  default: false
+                  type: boolean
+                resync:
+                  default: false
+                  type: boolean
+                schedule_interval:
+                  default: ''
+                  type: string
                 size:
                   type: integer
               type: object
@@ -5850,74 +5888,6 @@ paths:
       summary: Updates an NFS-Ganesha export
       tags:
       - NFS-Ganesha
-  /api/nfs-ganesha/status:
-    get:
-      parameters: []
-      responses:
-        '200':
-          content:
-            application/vnd.ceph.api.v1.0+json:
-              schema:
-                properties:
-                  available:
-                    description: Is API available?
-                    type: boolean
-                  message:
-                    description: Error message
-                    type: string
-                required:
-                - available
-                - message
-                type: object
-          description: OK
-        '400':
-          description: Operation exception. Please check the response body for details.
-        '401':
-          description: Unauthenticated access. Please login first.
-        '403':
-          description: Unauthorized access. Please check your permissions.
-        '500':
-          description: Unexpected error. Please check the response body for the stack
-            trace.
-      security:
-      - jwt: []
-      summary: Status of NFS-Ganesha management feature
-      tags:
-      - NFS-Ganesha
-  /api/orchestrator/status:
-    get:
-      parameters: []
-      responses:
-        '200':
-          content:
-            application/vnd.ceph.api.v1.0+json:
-              schema:
-                properties:
-                  available:
-                    description: Orchestrator status
-                    type: boolean
-                  message:
-                    description: Error message
-                    type: string
-                required:
-                - available
-                - message
-                type: object
-          description: OK
-        '400':
-          description: Operation exception. Please check the response body for details.
-        '401':
-          description: Unauthenticated access. Please login first.
-        '403':
-          description: Unauthorized access. Please check your permissions.
-        '500':
-          description: Unexpected error. Please check the response body for the stack
-            trace.
-      security:
-      - jwt: []
-      summary: Display Orchestrator Status
-      tags:
-      - Orchestrator
   /api/osd:
     get:
       parameters: []
@@ -7276,26 +7246,9 @@ paths:
           application/json:
             schema:
               properties:
-                application_metadata:
-                  type: string
-                configuration:
-                  type: string
-                erasure_code_profile:
-                  type: string
-                flags:
-                  type: string
-                pg_num:
-                  type: integer
                 pool:
+                  default: rbd-mirror
                   type: string
-                pool_type:
-                  type: string
-                rule_name:
-                  type: string
-              required:
-              - pool
-              - pg_num
-              - pool_type
               type: object
       responses:
         '201':
@@ -7937,40 +7890,6 @@ paths:
       - jwt: []
       tags:
       - RgwSite
-  /api/rgw/status:
-    get:
-      parameters: []
-      responses:
-        '200':
-          content:
-            application/vnd.ceph.api.v1.0+json:
-              schema:
-                properties:
-                  available:
-                    description: Is RGW available?
-                    type: boolean
-                  message:
-                    description: Descriptions
-                    type: string
-                required:
-                - available
-                - message
-                type: object
-          description: OK
-        '400':
-          description: Operation exception. Please check the response body for details.
-        '401':
-          description: Unauthenticated access. Please login first.
-        '403':
-          description: Unauthorized access. Please check your permissions.
-        '500':
-          description: Unexpected error. Please check the response body for the stack
-            trace.
-      security:
-      - jwt: []
-      summary: Display RGW Status
-      tags:
-      - Rgw
   /api/rgw/user:
     get:
       parameters:
@@ -8979,6 +8898,50 @@ paths:
       - jwt: []
       tags:
       - Service
+    put:
+      description: "\n        :param service_spec: The service specification as JSON.\n\
+        \        :param service_name: The service name, e.g. 'alertmanager'.\n   \
+        \     :return: None\n        "
+      parameters:
+      - in: path
+        name: service_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                service_spec:
+                  type: string
+              required:
+              - service_spec
+              type: object
+      responses:
+        '200':
+          content:
+            application/vnd.ceph.api.v1.0+json:
+              type: object
+          description: Resource updated.
+        '202':
+          content:
+            application/vnd.ceph.api.v1.0+json:
+              type: object
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
   /api/service/{service_name}/daemons:
     get:
       parameters:
@@ -10532,8 +10495,6 @@ tags:
   name: NFS-Ganesha
 - description: OSD management API
   name: OSD
-- description: Orchestrator Management API
-  name: Orchestrator
 - description: OSD Perf Counters Management API
   name: OsdPerfCounter
 - description: Perf Counters Management API
@@ -10564,8 +10525,6 @@ tags:
   name: RbdTrash
 - description: Feedback API
   name: Report
-- description: RGW Management API
-  name: Rgw
 - description: RGW Bucket Management API
   name: RgwBucket
 - description: RGW Daemon Management API
index c71d325476774f28f1d64db80208159d8aa229b8..4e23e170759141a882d8753ae7f39aea625e9c3e 100644 (file)
@@ -8,7 +8,7 @@ from mgr_module import CLICommand, Option
 
 from ..controllers.cephfs import CephFS
 from ..controllers.iscsi import Iscsi, IscsiTarget
-from ..controllers.nfs import NFSGanesha, NFSGaneshaExports
+from ..controllers.nfs import NFSGaneshaExports, NFSGaneshaUi
 from ..controllers.rbd import Rbd, RbdSnapshot, RbdTrash
 from ..controllers.rbd_mirroring import RbdMirroringPoolMode, \
     RbdMirroringPoolPeer, RbdMirroringSummary
@@ -36,7 +36,7 @@ Feature2Controller = {
     Features.ISCSI: [Iscsi, IscsiTarget],
     Features.CEPHFS: [CephFS],
     Features.RGW: [Rgw, RgwDaemon, RgwBucket, RgwUser],
-    Features.NFS: [NFSGanesha, NFSGaneshaExports],
+    Features.NFS: [NFSGaneshaUi, NFSGaneshaExports],
 }
 
 
index 2901e9d193d6d6e5b1955025424ca949f7d784fd..607c67426d28f42753782b2b808ac771dc3c1b1d 100644 (file)
@@ -10,3 +10,4 @@ prettytable
 pytest
 pyyaml
 natsort
+setuptools
index bd2f677e0f0fb07fa2acd35a411b42610e6fa2c7..8a9f63a59fa73f0cc1bbec8089a0b5d949a8a6d7 100755 (executable)
@@ -44,7 +44,7 @@ setup_teuthology() {
     ${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python3} -m venv venv
     source venv/bin/activate
     pip install -U pip 'setuptools>=12,<60'
-    pip install "git+https://github.com/ceph/teuthology@7039075#egg=teuthology[test]"
+    pip install "git+https://github.com/ceph/teuthology@9e4bf63#egg=teuthology[test]"
     pushd $CURR_DIR
     pip install -r requirements.txt -c constraints.txt
     popd
index 76ee740b1a73a8347fcff0f278e3d495a98a07c2..8ae897cebd8d4997116c01672a4a7c3cc76df15b 100644 (file)
@@ -178,7 +178,6 @@ class AuthManagerTool(cherrypy.Tool):
     def _check_authentication(self):
         JwtManager.reset_user()
         token = JwtManager.get_token_from_header()
-        self.logger.debug("token: %s", token)
         if token:
             user = JwtManager.get_user(token)
             if user:
diff --git a/ceph/src/pybind/mgr/dashboard/services/custom_banner.py b/ceph/src/pybind/mgr/dashboard/services/custom_banner.py
deleted file mode 100644 (file)
index e28addd..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-import logging
-from typing import Optional
-
-from mgr_module import _get_localized_key
-
-from .. import mgr
-
-logger = logging.getLogger(__name__)
-
-
-def set_login_banner_mgr(inbuf: str, mgr_id: Optional[str] = None):
-    item_key = 'custom_login_banner'
-    if mgr_id is not None:
-        mgr.set_store(_get_localized_key(mgr_id, item_key), inbuf)
-    else:
-        mgr.set_store(item_key, inbuf)
-
-
-def get_login_banner_mgr():
-    banner_text = mgr.get_store('custom_login_banner')
-    logger.info('Reading custom login banner: %s', banner_text)
-    return banner_text
-
-
-def unset_login_banner_mgr():
-    mgr.set_store('custom_login_banner', None)
-    logger.info('Removing custom login banner')
index 80c4b372afa35cb034ca0f62d41e57a047403e21..ed4fbe8003d9d344af7b950509bfecee64a038ba 100644 (file)
@@ -45,15 +45,14 @@ def dashboard_exception_handler(handler, *args, **kwargs):
     try:
         with handle_rados_error(component=None):  # make the None controller the fallback.
             return handler(*args, **kwargs)
-    # Don't catch cherrypy.* Exceptions.
+    # pylint: disable=try-except-raise
+    except (cherrypy.HTTPRedirect, cherrypy.NotFound, cherrypy.HTTPError):
+        raise
     except (ViewCacheNoDataException, DashboardException) as error:
         logger.exception('Dashboard Exception')
         cherrypy.response.headers['Content-Type'] = 'application/json'
         cherrypy.response.status = getattr(error, 'status', 400)
         return json.dumps(serialize_dashboard_exception(error)).encode('utf-8')
-    except cherrypy.HTTPRedirect:
-        # No internal errors
-        raise
     except Exception as error:
         logger.exception('Internal Server Error')
         raise error
@@ -123,3 +122,11 @@ def handle_error(component, http_status_code=None):
         yield
     except Exception as e:  # pylint: disable=broad-except
         raise DashboardException(e, component=component, http_status_code=http_status_code)
+
+
+@contextmanager
+def handle_custom_error(component, http_status_code=None, exceptions=()):
+    try:
+        yield
+    except exceptions as e:
+        raise DashboardException(e, component=component, http_status_code=http_status_code)
index f1818c1986c2600703f5a23af0317a3595eb15ab..c1898a463cac96f8f85e5136ad33c683b09c7b9f 100644 (file)
@@ -54,7 +54,7 @@ class IscsiGatewaysConfig(object):
         If Ceph Dashboard were configured before v10, we try to update our internal gateways
         database automatically.
         """
-        for gateway_name, gateway_config in config['gateways'].items():
+        for gateway_name, gateway_config in list(config['gateways'].items()):
             if '.' not in gateway_name:
                 from ..rest_client import RequestException
                 from .iscsi_client import IscsiClient  # pylint: disable=cyclic-import
index 4cc0a3998563a14c4dcf2a23b3c4aa6ec706b4f0..6829108e098d54315d9ba39eba891a6fcf12337c 100644 (file)
@@ -128,9 +128,11 @@ class ServiceManager(ResourceManager):
             raise_if_exception(c)
 
     @wait_api_result
-    def apply(self, service_spec: Dict) -> OrchResult[List[str]]:
+    def apply(self,
+              service_spec: Dict,
+              no_overwrite: Optional[bool] = False) -> OrchResult[List[str]]:
         spec = ServiceSpec.from_json(service_spec)
-        return self.api.apply([spec])
+        return self.api.apply([spec], no_overwrite)
 
     @wait_api_result
     def remove(self, service_name: str) -> List[str]:
diff --git a/ceph/src/pybind/mgr/dashboard/services/osd.py b/ceph/src/pybind/mgr/dashboard/services/osd.py
new file mode 100644 (file)
index 0000000..12db733
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from enum import Enum
+
+
+class OsdDeploymentOptions(str, Enum):
+    COST_CAPACITY = 'cost_capacity'
+    THROUGHPUT = 'throughput_optimized'
+    IOPS = 'iops_optimized'
+
+
+class HostStorageSummary:
+    def __init__(self, name: str, title=None, desc=None, available=False,
+                 capacity=0, used=0, hdd_used=0, ssd_used=0, nvme_used=0):
+        self.name = name
+        self.title = title
+        self.desc = desc
+        self.available = available
+        self.capacity = capacity
+        self.used = used
+        self.hdd_used = hdd_used
+        self.ssd_used = ssd_used
+        self.nvme_used = nvme_used
+
+    def as_dict(self):
+        return self.__dict__
index 4506938abc358aca1a5f7e14e6367f5c6c1b06fc..e4021735dac3e7996d3f44f321edeae97c684b47 100644 (file)
@@ -1,16 +1,20 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=unused-argument
 import errno
+import json
+from enum import IntEnum
 
 import cherrypy
+import rados
 import rbd
 
 from .. import mgr
-from ..tools import ViewCache
+from ..exceptions import DashboardException
+from ..plugins.ttl_cache import ttl_cache
 from .ceph_service import CephService
 
 try:
-    from typing import List
+    from typing import List, Optional
 except ImportError:
     pass  # For typing only
 
@@ -28,6 +32,20 @@ RBD_FEATURES_NAME_MAPPING = {
 }
 
 
+class MIRROR_IMAGE_MODE(IntEnum):
+    journal = rbd.RBD_MIRROR_IMAGE_MODE_JOURNAL
+    snapshot = rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT
+
+
+def _rbd_support_remote(method_name: str, *args, **kwargs):
+    try:
+        return mgr.remote('rbd_support', method_name, *args, **kwargs)
+    except ImportError as ie:
+        raise DashboardException(f'rbd_support module not found {ie}')
+    except RuntimeError as ie:
+        raise DashboardException(f'rbd_support.{method_name} error: {ie}')
+
+
 def format_bitmask(features):
     """
     Formats the bitmask:
@@ -84,13 +102,13 @@ def parse_image_spec(image_spec):
 def rbd_call(pool_name, namespace, func, *args, **kwargs):
     with mgr.rados.open_ioctx(pool_name) as ioctx:
         ioctx.set_namespace(namespace if namespace is not None else '')
-        func(ioctx, *args, **kwargs)
+        return func(ioctx, *args, **kwargs)
 
 
 def rbd_image_call(pool_name, namespace, image_name, func, *args, **kwargs):
     def _ioctx_func(ioctx, image_name, func, *args, **kwargs):
         with rbd.Image(ioctx, image_name) as img:
-            func(ioctx, img, *args, **kwargs)
+            return func(ioctx, img, *args, **kwargs)
 
     return rbd_call(pool_name, namespace, _ioctx_func, image_name, func, *args, **kwargs)
 
@@ -98,9 +116,8 @@ def rbd_image_call(pool_name, namespace, image_name, func, *args, **kwargs):
 class RbdConfiguration(object):
     _rbd = rbd.RBD()
 
-    def __init__(self, pool_name='', namespace='', image_name='', pool_ioctx=None,
-                 image_ioctx=None):
-        # type: (str, str, str, object, object) -> None
+    def __init__(self, pool_name: str = '', namespace: str = '', image_name: str = '',
+                 pool_ioctx: Optional[rados.Ioctx] = None, image_ioctx: Optional[rbd.Image] = None):
         assert bool(pool_name) != bool(pool_ioctx)  # xor
         self._pool_name = pool_name
         self._namespace = namespace if namespace is not None else ''
@@ -118,8 +135,13 @@ class RbdConfiguration(object):
         def _list(ioctx):
             if self._image_name:  # image config
                 try:
-                    with rbd.Image(ioctx, self._image_name) as image:
-                        result = image.config_list()
+                    # No need to open the context of the image again
+                    # if we already did open it.
+                    if self._image_ioctx:
+                        result = self._image_ioctx.config_list()
+                    else:
+                        with rbd.Image(ioctx, self._image_name) as image:
+                            result = image.config_list()
                 except rbd.ImageNotFound:
                     result = []
             else:  # pool config
@@ -219,6 +241,7 @@ class RbdConfiguration(object):
 
 
 class RbdService(object):
+    _rbd_inst = rbd.RBD()
 
     @classmethod
     def _rbd_disk_usage(cls, image, snaps, whole_object=True):
@@ -245,10 +268,22 @@ class RbdService(object):
         return total_used_size, snap_map
 
     @classmethod
-    def _rbd_image(cls, ioctx, pool_name, namespace, image_name):
+    def _rbd_image(cls, ioctx, pool_name, namespace, image_name):  # pylint: disable=R0912
         with rbd.Image(ioctx, image_name) as img:
-
             stat = img.stat()
+            mirror_mode = img.mirror_image_get_mode()
+            if mirror_mode == rbd.RBD_MIRROR_IMAGE_MODE_JOURNAL:
+                stat['mirror_mode'] = 'journal'
+            elif mirror_mode == rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
+                stat['mirror_mode'] = 'snapshot'
+                schedule_status = json.loads(_rbd_support_remote(
+                    'mirror_snapshot_schedule_status')[1])
+                for scheduled_image in schedule_status['scheduled_images']:
+                    if scheduled_image['image'] == get_image_spec(pool_name, namespace, image_name):
+                        stat['schedule_info'] = scheduled_image
+            else:
+                stat['mirror_mode'] = 'unknown'
+
             stat['name'] = image_name
             if img.old_format():
                 stat['unique_id'] = get_image_spec(pool_name, namespace, stat['block_name_prefix'])
@@ -290,23 +325,34 @@ class RbdService(object):
             # snapshots
             stat['snapshots'] = []
             for snap in img.list_snaps():
+                try:
+                    snap['mirror_mode'] = MIRROR_IMAGE_MODE(img.mirror_image_get_mode()).name
+                except ValueError as ex:
+                    raise DashboardException(f'Unknown RBD Mirror mode: {ex}')
+
                 snap['timestamp'] = "{}Z".format(
                     img.get_snap_timestamp(snap['id']).isoformat())
-                snap['is_protected'] = img.is_protected_snap(snap['name'])
+
+                snap['is_protected'] = None
+                if mirror_mode != rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
+                    snap['is_protected'] = img.is_protected_snap(snap['name'])
                 snap['used_bytes'] = None
                 snap['children'] = []
-                img.set_snap(snap['name'])
-                for child_pool_name, child_image_name in img.list_children():
-                    snap['children'].append({
-                        'pool_name': child_pool_name,
-                        'image_name': child_image_name
-                    })
+
+                if mirror_mode != rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
+                    img.set_snap(snap['name'])
+                    for child_pool_name, child_image_name in img.list_children():
+                        snap['children'].append({
+                            'pool_name': child_pool_name,
+                            'image_name': child_image_name
+                        })
                 stat['snapshots'].append(snap)
 
             # disk usage
             img_flags = img.flags()
             if 'fast-diff' in stat['features_name'] and \
-                    not rbd.RBD_FLAG_FAST_DIFF_INVALID & img_flags:
+                    not rbd.RBD_FLAG_FAST_DIFF_INVALID & img_flags and \
+                    mirror_mode != rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
                 snaps = [(s['id'], s['size'], s['name'])
                          for s in stat['snapshots']]
                 snaps.sort(key=lambda s: s[0])
@@ -326,14 +372,39 @@ class RbdService(object):
                 stat['total_disk_usage'] = None
                 stat['disk_usage'] = None
 
-            stat['configuration'] = RbdConfiguration(pool_ioctx=ioctx, image_name=image_name).list()
+            stat['configuration'] = RbdConfiguration(
+                pool_ioctx=ioctx, image_name=image_name, image_ioctx=img).list()
 
             return stat
 
     @classmethod
-    def _rbd_image_refs(cls, ioctx):
-        rbd_inst = rbd.RBD()
-        return rbd_inst.list2(ioctx)
+    @ttl_cache(10)
+    def get_ioctx(cls, pool_name, namespace=''):
+        ioctx = mgr.rados.open_ioctx(pool_name)
+        ioctx.set_namespace(namespace)
+        return ioctx
+
+    @classmethod
+    @ttl_cache(30)
+    def _rbd_image_refs(cls, pool_name, namespace=''):
+        # We add and set the namespace here so that we cache by ioctx and namespace.
+        images = []
+        ioctx = cls.get_ioctx(pool_name, namespace)
+        images = cls._rbd_inst.list2(ioctx)
+        return images
+
+    @classmethod
+    @ttl_cache(30)
+    def _pool_namespaces(cls, pool_name, namespace=None):
+        namespaces = []
+        if namespace:
+            namespaces = [namespace]
+        else:
+            ioctx = cls.get_ioctx(pool_name, namespace=rados.LIBRADOS_ALL_NSPACES)
+            namespaces = cls._rbd_inst.namespace_list(ioctx)
+            # images without namespace
+            namespaces.append('')
+        return namespaces
 
     @classmethod
     def _rbd_image_stat(cls, ioctx, pool_name, namespace, image_name):
@@ -341,8 +412,7 @@ class RbdService(object):
 
     @classmethod
     def _rbd_image_stat_removing(cls, ioctx, pool_name, namespace, image_id):
-        rbd_inst = rbd.RBD()
-        img = rbd_inst.trash_get(ioctx, image_id)
+        img = cls._rbd_inst.trash_get(ioctx, image_id)
         img_spec = get_image_spec(pool_name, namespace, image_id)
 
         if img['source'] == 'REMOVING':
@@ -356,34 +426,64 @@ class RbdService(object):
                                 errno=errno.ENOENT)
 
     @classmethod
-    @ViewCache()
-    def rbd_pool_list(cls, pool_name, namespace=None):
-        rbd_inst = rbd.RBD()
-        with mgr.rados.open_ioctx(pool_name) as ioctx:
-            result = []
-            if namespace:
-                namespaces = [namespace]
-            else:
-                namespaces = rbd_inst.namespace_list(ioctx)
-                # images without namespace
-                namespaces.append('')
-            for current_namespace in namespaces:
-                ioctx.set_namespace(current_namespace)
-                image_refs = cls._rbd_image_refs(ioctx)
-                for image_ref in image_refs:
-                    try:
-                        stat = cls._rbd_image_stat(
-                            ioctx, pool_name, current_namespace, image_ref['name'])
-                    except rbd.ImageNotFound:
-                        # Check if the RBD has been deleted partially. This happens for example if
-                        # the deletion process of the RBD has been started and was interrupted.
-                        try:
-                            stat = cls._rbd_image_stat_removing(
-                                ioctx, pool_name, current_namespace, image_ref['id'])
-                        except rbd.ImageNotFound:
-                            continue
-                    result.append(stat)
-            return result
+    def _rbd_pool_image_refs(cls, pool_names: List[str], namespace: Optional[str] = None):
+        joint_refs = []
+        for pool in pool_names:
+            for current_namespace in cls._pool_namespaces(pool, namespace=namespace):
+                image_refs = cls._rbd_image_refs(pool, current_namespace)
+                for image in image_refs:
+                    image['namespace'] = current_namespace
+                    image['pool_name'] = pool
+                    joint_refs.append(image)
+        return joint_refs
+
+    @classmethod
+    def rbd_pool_list(cls, pool_names: List[str], namespace: Optional[str] = None, offset: int = 0,
+                      limit: int = 5, search: str = '', sort: str = ''):
+        offset = int(offset)
+        limit = int(limit)
+        # let's use -1 to denotate we want ALL images for now. Iscsi currently gathers
+        # all images therefore, we need this.
+        if limit < -1:
+            raise DashboardException(msg=f'Wrong limit value {limit}', code=400)
+
+        refs = cls._rbd_pool_image_refs(pool_names, namespace)
+        image_refs = []
+        # transform to list so that we can count
+        for ref in refs:
+            if search in ref['name']:
+                image_refs.append(ref)
+            elif search in ref['pool_name']:
+                image_refs.append(ref)
+            elif search in ref['namespace']:
+                image_refs.append(ref)
+
+        result = []
+        end = offset + limit
+        if len(sort) < 2:
+            sort = '+name'
+        descending = sort[0] == '-'
+        sort_by = sort[1:]
+        if sort_by not in ['name', 'pool_name', 'namespace']:
+            sort_by = 'name'
+        if limit == -1:
+            end = len(image_refs)
+        for image_ref in sorted(image_refs, key=lambda v: v[sort_by],
+                                reverse=descending)[offset:end]:
+            ioctx = cls.get_ioctx(image_ref['pool_name'], namespace=image_ref['namespace'])
+            try:
+                stat = cls._rbd_image_stat(
+                    ioctx, image_ref['pool_name'], image_ref['namespace'], image_ref['name'])
+            except rbd.ImageNotFound:
+                # Check if the RBD has been deleted partially. This happens for example if
+                # the deletion process of the RBD has been started and was interrupted.
+                try:
+                    stat = cls._rbd_image_stat_removing(
+                        ioctx, image_ref['pool_name'], image_ref['namespace'], image_ref['id'])
+                except rbd.ImageNotFound:
+                    continue
+            result.append(stat)
+        return result, len(image_refs)
 
     @classmethod
     def get_image(cls, image_spec):
@@ -409,3 +509,51 @@ class RbdSnapshotService(object):
         pool_name, namespace, image_name = parse_image_spec(image_spec)
         return rbd_image_call(pool_name, namespace, image_name,
                               _remove_snapshot, snapshot_name, unprotect)
+
+
+class RBDSchedulerInterval:
+    def __init__(self, interval: str):
+        self.amount = int(interval[:-1])
+        self.unit = interval[-1]
+        if self.unit not in 'mhd':
+            raise ValueError(f'Invalid interval unit {self.unit}')
+
+    def __str__(self):
+        return f'{self.amount}{self.unit}'
+
+
+class RbdMirroringService:
+
+    @classmethod
+    def enable_image(cls, image_name: str, pool_name: str, namespace: str, mode: MIRROR_IMAGE_MODE):
+        rbd_image_call(pool_name, namespace, image_name,
+                       lambda ioctx, image: image.mirror_image_enable(mode))
+
+    @classmethod
+    def disable_image(cls, image_name: str, pool_name: str, namespace: str, force: bool = False):
+        rbd_image_call(pool_name, namespace, image_name,
+                       lambda ioctx, image: image.mirror_image_disable(force))
+
+    @classmethod
+    def promote_image(cls, image_name: str, pool_name: str, namespace: str, force: bool = False):
+        rbd_image_call(pool_name, namespace, image_name,
+                       lambda ioctx, image: image.mirror_image_promote(force))
+
+    @classmethod
+    def demote_image(cls, image_name: str, pool_name: str, namespace: str):
+        rbd_image_call(pool_name, namespace, image_name,
+                       lambda ioctx, image: image.mirror_image_demote())
+
+    @classmethod
+    def resync_image(cls, image_name: str, pool_name: str, namespace: str):
+        rbd_image_call(pool_name, namespace, image_name,
+                       lambda ioctx, image: image.mirror_image_resync())
+
+    @classmethod
+    def snapshot_schedule_add(cls, image_spec: str, interval: str):
+        _rbd_support_remote('mirror_snapshot_schedule_add', image_spec,
+                            str(RBDSchedulerInterval(interval)))
+
+    @classmethod
+    def snapshot_schedule_remove(cls, image_spec: str):
+        _rbd_support_remote('mirror_snapshot_schedule_remove', image_spec)
index c0103653f96d66beb17c3d95ebed7f66f3b9c496..5e71b6525c234cdb8e3d9be59b00ce7c9d6c1fe5 100644 (file)
@@ -6,7 +6,7 @@ from urllib.parse import urlencode
 
 from .. import mgr
 from ..controllers._version import APIVersion
-from ..controllers.nfs import NFSGanesha, NFSGaneshaExports, NFSGaneshaUi
+from ..controllers.nfs import NFSGaneshaExports, NFSGaneshaUi
 from ..tests import ControllerTestCase
 from ..tools import NotificationQueue, TaskManager
 
@@ -228,19 +228,13 @@ class NFSGaneshaUiControllerTest(ControllerTestCase):
         self.assertStatus(200)
         self.assertJsonBody({'paths': []})
 
-
-class NFSGaneshaControllerTest(ControllerTestCase):
-    @classmethod
-    def setup_server(cls):
-        cls.setup_controllers([NFSGanesha])
-
     def test_status_available(self):
-        self._get('/api/nfs-ganesha/status')
+        self._get('/ui-api/nfs-ganesha/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': True, 'message': None})
 
     def test_status_not_available(self):
         mgr.remote = Mock(side_effect=RuntimeError('Test'))
-        self._get('/api/nfs-ganesha/status')
+        self._get('/ui-api/nfs-ganesha/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': False, 'message': 'Test'})
index ded06ba50e49327ee8b743429acb4323b6307604..53e32c85ae6eaa6753ef92cb45adfd77dc12dc0d 100644 (file)
@@ -10,7 +10,7 @@ from ..tests import ControllerTestCase
 
 
 class OrchestratorControllerTest(ControllerTestCase):
-    URL_STATUS = '/api/orchestrator/status'
+    URL_STATUS = '/ui-api/orchestrator/status'
     URL_INVENTORY = '/api/orchestrator/inventory'
 
     @classmethod
index 775c6ca739708eff9f9d72da2900ebccc81fee18..144a98e49af4634c57c209a5c82def46ba3e1807 100644 (file)
@@ -5,10 +5,11 @@ from typing import Any, Dict, List, Optional
 from unittest import mock
 
 from ceph.deployment.drive_group import DeviceSelection, DriveGroupSpec  # type: ignore
-from ceph.deployment.service_spec import PlacementSpec  # type: ignore
+from ceph.deployment.service_spec import PlacementSpec
 
 from .. import mgr
-from ..controllers.osd import Osd
+from ..controllers.osd import Osd, OsdUi
+from ..services.osd import OsdDeploymentOptions
 from ..tests import ControllerTestCase
 from ..tools import NotificationQueue, TaskManager
 from .helper import update_dict  # pylint: disable=import-error
@@ -187,11 +188,35 @@ class OsdHelper(object):
     def gen_mgr_get_counter(cls) -> List[List[int]]:
         return [[1551973855, 35], [1551973860, 35], [1551973865, 35], [1551973870, 35]]
 
+    @staticmethod
+    def mock_inventory_host(orch_client_mock, devices_data: Dict[str, str]) -> None:
+        class MockDevice:
+            def __init__(self, human_readable_type, path, available=True):
+                self.human_readable_type = human_readable_type
+                self.available = available
+                self.path = path
+
+        def create_invetory_host(host, devices_data):
+            inventory_host = mock.Mock()
+            inventory_host.devices.devices = []
+            for data in devices_data:
+                if data['host'] != host:
+                    continue
+                inventory_host.devices.devices.append(MockDevice(data['type'], data['path']))
+            return inventory_host
+
+        hosts = set()
+        for device in devices_data:
+            hosts.add(device['host'])
+
+        inventory = [create_invetory_host(host, devices_data) for host in hosts]
+        orch_client_mock.inventory.list.return_value = inventory
+
 
 class OsdTest(ControllerTestCase):
     @classmethod
     def setup_server(cls):
-        cls.setup_controllers([Osd])
+        cls.setup_controllers([Osd, OsdUi])
         NotificationQueue.start_queue()
         TaskManager.init()
 
@@ -374,3 +399,94 @@ class OsdTest(ControllerTestCase):
         self._task_post('/api/osd/1/reweight', {'weight': '1'})
         instance.send_command.assert_called_with('mon', 'osd reweight', id=1, weight=1.0)
         self.assertStatus(200)
+
+    def _get_deployment_options(self, fake_client, devices_data: Dict[str, str]) -> Dict[str, Any]:
+        OsdHelper.mock_inventory_host(fake_client, devices_data)
+        self._get('/ui-api/osd/deployment_options')
+        self.assertStatus(200)
+        res = self.json_body()
+        return res
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_deployment_options(self, instance):
+        fake_client = mock.Mock()
+        instance.return_value = fake_client
+        fake_client.get_missing_features.return_value = []
+
+        devices_data = [
+            {'type': 'hdd', 'path': '/dev/sda', 'host': 'host1'},
+            {'type': 'hdd', 'path': '/dev/sdc', 'host': 'host1'},
+            {'type': 'hdd', 'path': '/dev/sdb', 'host': 'host2'},
+            {'type': 'hdd', 'path': '/dev/sde', 'host': 'host1'},
+            {'type': 'hdd', 'path': '/dev/sdd', 'host': 'host2'},
+        ]
+
+        res = self._get_deployment_options(fake_client, devices_data)
+        self.assertTrue(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available'])
+        assert res['recommended_option'] == OsdDeploymentOptions.COST_CAPACITY
+
+        # we don't want cost_capacity enabled without hdds
+        for data in devices_data:
+            data['type'] = 'ssd'
+
+        res = self._get_deployment_options(fake_client, devices_data)
+        self.assertFalse(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available'])
+        self.assertFalse(res['options'][OsdDeploymentOptions.THROUGHPUT]['available'])
+        self.assertEqual(res['recommended_option'], None)
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_deployment_options_throughput(self, instance):
+        fake_client = mock.Mock()
+        instance.return_value = fake_client
+        fake_client.get_missing_features.return_value = []
+
+        devices_data = [
+            {'type': 'ssd', 'path': '/dev/sda', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/sdc', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/sdb', 'host': 'host2'},
+            {'type': 'hdd', 'path': '/dev/sde', 'host': 'host1'},
+            {'type': 'hdd', 'path': '/dev/sdd', 'host': 'host2'},
+        ]
+
+        res = self._get_deployment_options(fake_client, devices_data)
+        self.assertTrue(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available'])
+        self.assertTrue(res['options'][OsdDeploymentOptions.THROUGHPUT]['available'])
+        self.assertFalse(res['options'][OsdDeploymentOptions.IOPS]['available'])
+        assert res['recommended_option'] == OsdDeploymentOptions.THROUGHPUT
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_deployment_options_with_hdds_and_nvmes(self, instance):
+        fake_client = mock.Mock()
+        instance.return_value = fake_client
+        fake_client.get_missing_features.return_value = []
+
+        devices_data = [
+            {'type': 'ssd', 'path': '/dev/nvme01', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/nvme02', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/nvme03', 'host': 'host2'},
+            {'type': 'hdd', 'path': '/dev/sde', 'host': 'host1'},
+            {'type': 'hdd', 'path': '/dev/sdd', 'host': 'host2'},
+        ]
+
+        res = self._get_deployment_options(fake_client, devices_data)
+        self.assertTrue(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available'])
+        self.assertFalse(res['options'][OsdDeploymentOptions.THROUGHPUT]['available'])
+        self.assertTrue(res['options'][OsdDeploymentOptions.IOPS]['available'])
+        assert res['recommended_option'] == OsdDeploymentOptions.COST_CAPACITY
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_deployment_options_iops(self, instance):
+        fake_client = mock.Mock()
+        instance.return_value = fake_client
+        fake_client.get_missing_features.return_value = []
+
+        devices_data = [
+            {'type': 'ssd', 'path': '/dev/nvme01', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/nvme02', 'host': 'host1'},
+            {'type': 'ssd', 'path': '/dev/nvme03', 'host': 'host2'}
+        ]
+
+        res = self._get_deployment_options(fake_client, devices_data)
+        self.assertFalse(res['options'][OsdDeploymentOptions.COST_CAPACITY]['available'])
+        self.assertFalse(res['options'][OsdDeploymentOptions.THROUGHPUT]['available'])
+        self.assertTrue(res['options'][OsdDeploymentOptions.IOPS]['available'])
index a7660475d48f7daae92d58ac6c50bce04b18ddd9..60571d8e5543f2ec4a9be4c62a516babff2702d2 100644 (file)
@@ -10,8 +10,10 @@ except ImportError:
     import unittest.mock as mock
 
 from .. import mgr
+from ..controllers.orchestrator import Orchestrator
 from ..controllers.rbd_mirroring import RbdMirroring, \
-    RbdMirroringPoolBootstrap, RbdMirroringSummary, get_daemons, get_pools
+    RbdMirroringPoolBootstrap, RbdMirroringStatus, RbdMirroringSummary, \
+    get_daemons, get_pools
 from ..controllers.summary import Summary
 from ..services import progress
 from ..tests import ControllerTestCase
@@ -279,3 +281,25 @@ class RbdMirroringSummaryControllerTest(ControllerTestCase):
 
         summary = self.json_body()['rbd_mirroring']
         self.assertEqual(summary, {'errors': 0, 'warnings': 1})
+
+
+class RbdMirroringStatusControllerTest(ControllerTestCase):
+
+    @classmethod
+    def setup_server(cls):
+        cls.setup_controllers([RbdMirroringStatus, Orchestrator])
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_status(self, instance):
+        status = {'available': False, 'description': ''}
+        fake_client = mock.Mock()
+        fake_client.status.return_value = status
+        instance.return_value = fake_client
+
+        self._get('/ui-api/block/mirroring/status')
+        self.assertStatus(200)
+        self.assertJsonBody({'available': True, 'message': None})
+
+    def test_configure(self):
+        self._post('/ui-api/block/mirroring/configure')
+        self.assertStatus(200)
index 345f360b607feab89fc1682ddd75005a036df874..6d780c816511e3b9ab07c58edaf1ee1b844bb0c2 100644 (file)
@@ -11,7 +11,8 @@ except ImportError:
     import unittest.mock as mock
 
 from .. import mgr
-from ..services.rbd import RbdConfiguration, RbdService, get_image_spec, parse_image_spec
+from ..services.rbd import RbdConfiguration, RBDSchedulerInterval, RbdService, \
+    get_image_spec, parse_image_spec
 
 
 class ImageNotFoundStub(Exception):
@@ -22,6 +23,11 @@ class ImageNotFoundStub(Exception):
 
 class RbdServiceTest(unittest.TestCase):
 
+    def setUp(self):
+        # pylint: disable=protected-access
+        RbdService._rbd_inst = mock.Mock()
+        self.rbd_inst_mock = RbdService._rbd_inst
+
     def test_compose_image_spec(self):
         self.assertEqual(get_image_spec('mypool', 'myns', 'myimage'), 'mypool/myns/myimage')
         self.assertEqual(get_image_spec('mypool', None, 'myimage'), 'mypool/myimage')
@@ -53,11 +59,9 @@ class RbdServiceTest(unittest.TestCase):
         config = RbdConfiguration('good-pool')
         self.assertEqual(config.list(), [1, 2, 3])
 
-    @mock.patch('dashboard.services.rbd.rbd.RBD')
-    def test_rbd_image_stat_removing(self, rbd_mock):
+    def test_rbd_image_stat_removing(self):
         time = datetime.utcnow()
-        rbd_inst_mock = rbd_mock.return_value
-        rbd_inst_mock.trash_get.return_value = {
+        self.rbd_inst_mock.trash_get.return_value = {
             'id': '3c1a5ee60a88',
             'name': 'test_rbd',
             'source': 'REMOVING',
@@ -81,10 +85,8 @@ class RbdServiceTest(unittest.TestCase):
         })
 
     @mock.patch('dashboard.services.rbd.rbd.ImageNotFound', new_callable=lambda: ImageNotFoundStub)
-    @mock.patch('dashboard.services.rbd.rbd.RBD')
-    def test_rbd_image_stat_filter_source_user(self, rbd_mock, _):
-        rbd_inst_mock = rbd_mock.return_value
-        rbd_inst_mock.trash_get.return_value = {
+    def test_rbd_image_stat_filter_source_user(self, _):
+        self.rbd_inst_mock.trash_get.return_value = {
             'id': '3c1a5ee60a88',
             'name': 'test_rbd',
             'source': 'USER'
@@ -98,21 +100,21 @@ class RbdServiceTest(unittest.TestCase):
                       str(ctx.exception))
 
     @mock.patch('dashboard.services.rbd.rbd.ImageNotFound', new_callable=lambda: ImageNotFoundStub)
+    @mock.patch('dashboard.services.rbd.RbdService._pool_namespaces')
     @mock.patch('dashboard.services.rbd.RbdService._rbd_image_stat_removing')
     @mock.patch('dashboard.services.rbd.RbdService._rbd_image_stat')
     @mock.patch('dashboard.services.rbd.RbdService._rbd_image_refs')
-    @mock.patch('dashboard.services.rbd.rbd.RBD')
-    def test_rbd_pool_list(self, rbd_mock, rbd_image_ref_mock, rbd_image_stat_mock,
-                           rbd_image_stat_removing_mock, _):
+    def test_rbd_pool_list(self, rbd_image_ref_mock, rbd_image_stat_mock,
+                           rbd_image_stat_removing_mock, pool_namespaces, _):
         time = datetime.utcnow()
 
         ioctx_mock = MagicMock()
         mgr.rados = MagicMock()
         mgr.rados.open_ioctx.return_value = ioctx_mock
 
-        rbd_inst_mock = rbd_mock.return_value
-        rbd_inst_mock.namespace_list.return_value = []
+        self.rbd_inst_mock.namespace_list.return_value = []
         rbd_image_ref_mock.return_value = [{'name': 'test_rbd', 'id': '3c1a5ee60a88'}]
+        pool_namespaces.return_value = ['']
 
         rbd_image_stat_mock.side_effect = mock.Mock(side_effect=ImageNotFoundStub(
             'RBD image not found test_pool/3c1a5ee60a88'))
@@ -128,8 +130,14 @@ class RbdServiceTest(unittest.TestCase):
             'namespace': ''
         }
 
-        rbd_pool_list = RbdService.rbd_pool_list('test_pool')
-        self.assertEqual(rbd_pool_list, (0, [{
+        # test with limit 0, it should return a list of pools with an empty list, but
+        rbd_pool_list = RbdService.rbd_pool_list(['test_pool'], offset=0, limit=0)
+        self.assertEqual(rbd_pool_list, ([], 1))
+
+        self.rbd_inst_mock.namespace_list.return_value = []
+
+        rbd_pool_list = RbdService.rbd_pool_list(['test_pool'], offset=0, limit=5)
+        self.assertEqual(rbd_pool_list, ([{
             'id': '3c1a5ee60a88',
             'unique_id': 'test_pool/3c1a5ee60a88',
             'name': 'test_rbd',
@@ -138,4 +146,34 @@ class RbdServiceTest(unittest.TestCase):
             'deferment_end_time': '{}Z'.format(time.isoformat()),
             'pool_name': 'test_pool',
             'namespace': ''
-        }]))
+        }], 1))
+
+    def test_valid_interval(self):
+        test_cases = [
+            ('15m', False),
+            ('1h', False),
+            ('5d', False),
+            ('m', True),
+            ('d', True),
+            ('1s', True),
+            ('11', True),
+            ('1m1', True),
+        ]
+        for interval, error in test_cases:
+            if error:
+                with self.assertRaises(ValueError):
+                    RBDSchedulerInterval(interval)
+            else:
+                self.assertEqual(str(RBDSchedulerInterval(interval)), interval)
+
+    def test_rbd_image_refs_cache(self):
+        ioctx_mock = MagicMock()
+        mgr.rados = MagicMock()
+        mgr.rados.open_ioctx.return_value = ioctx_mock
+        images = [{'image': str(i), 'id': str(i)} for i in range(10)]
+        for i in range(5):
+            self.rbd_inst_mock.list2.return_value = images[i*2:(i*2)+2]
+            ioctx_mock = MagicMock()
+            # pylint: disable=protected-access
+            res = RbdService._rbd_image_refs(ioctx_mock, str(i))
+            self.assertEqual(res, images[i*2:(i*2)+2])
index 0f500a6545cdaa5ded8dce6c62ef8de66b91307f..ce1b5fd928fddc0a833c248d80f6164ea8cd82ab 100644 (file)
@@ -20,7 +20,7 @@ class RgwControllerTestCase(ControllerTestCase):
     @patch.object(RgwClient, 'is_service_online', Mock(return_value=True))
     @patch.object(RgwClient, '_is_system_user', Mock(return_value=True))
     def test_status_available(self):
-        self._get('/test/api/rgw/status')
+        self._get('/test/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': True, 'message': None})
 
@@ -28,7 +28,7 @@ class RgwControllerTestCase(ControllerTestCase):
     @patch.object(RgwClient, 'is_service_online', Mock(
         side_effect=RequestException('My test error')))
     def test_status_online_check_error(self):
-        self._get('/test/api/rgw/status')
+        self._get('/test/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': False,
                              'message': 'My test error'})
@@ -36,7 +36,7 @@ class RgwControllerTestCase(ControllerTestCase):
     @patch.object(RgwClient, '_get_user_id', Mock(return_value='fake-user'))
     @patch.object(RgwClient, 'is_service_online', Mock(return_value=False))
     def test_status_not_online(self):
-        self._get('/test/api/rgw/status')
+        self._get('/test/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': False,
                              'message': "Failed to connect to the Object Gateway's Admin Ops API."})
@@ -45,14 +45,14 @@ class RgwControllerTestCase(ControllerTestCase):
     @patch.object(RgwClient, 'is_service_online', Mock(return_value=True))
     @patch.object(RgwClient, '_is_system_user', Mock(return_value=False))
     def test_status_not_system_user(self):
-        self._get('/test/api/rgw/status')
+        self._get('/test/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': False,
                              'message': 'The system flag is not set for user "fake-user".'})
 
     def test_status_no_service(self):
         RgwStub.get_mgr_no_services()
-        self._get('/test/api/rgw/status')
+        self._get('/test/ui-api/rgw/status')
         self.assertStatus(200)
         self.assertJsonBody({'available': False, 'message': 'No RGW service is running.'})
 
index 8ec21ca509ca5addfa93db527e5a45d4210e8de1..b101094abc0c65f87e100b341fc3e7207288a18f 100644 (file)
@@ -9,13 +9,13 @@ class Module(MgrModule):
 
     def self_test(self) -> None:
         r = self.get('io_rate')
-        assert('pg_stats_delta' in r)
-        assert('stamp_delta' in r['pg_stats_delta'])
-        assert('stat_sum' in r['pg_stats_delta'])
-        assert('num_read_kb' in r['pg_stats_delta']['stat_sum'])
-        assert('num_write_kb' in r['pg_stats_delta']['stat_sum'])
-        assert('num_write' in r['pg_stats_delta']['stat_sum'])
-        assert('num_read' in r['pg_stats_delta']['stat_sum'])
+        assert 'pg_stats_delta' in r
+        assert 'stamp_delta' in r['pg_stats_delta']
+        assert 'stat_sum' in r['pg_stats_delta']
+        assert 'num_read_kb' in r['pg_stats_delta']['stat_sum']
+        assert 'num_write_kb' in r['pg_stats_delta']['stat_sum']
+        assert 'num_write' in r['pg_stats_delta']['stat_sum']
+        assert 'num_read' in r['pg_stats_delta']['stat_sum']
 
     @CLIReadCommand('iostat', poll=True)
     def iostat(self, width: int = 80, print_header: bool = False) -> HandleCommandResult:
index 9110227efcc9d14b3b0f956c9455edb583a6c5ce..1730cdc226fca262f41ecf3106270c5156e0bb5b 100644 (file)
@@ -1638,6 +1638,31 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
 
         return r
 
+    def tell_command(self, daemon_type: str, daemon_id: str, cmd_dict: dict, inbuf: Optional[str] = None) -> Tuple[int, str, str]:
+        """
+        Helper for `ceph tell` command execution.
+
+        See send_command for general case.
+
+        :param dict cmd_dict: expects a prefix i.e.:
+            cmd_dict = {
+                'prefix': 'heap',
+                'heapcmd': 'stats',
+            }
+        :return: status int, out std, err str
+        """
+        t1 = time.time()
+        result = CommandResult()
+        self.send_command(result, daemon_type, daemon_id, json.dumps(cmd_dict), "", inbuf)
+        r = result.wait()
+        t2 = time.time()
+
+        self.log.debug("tell_command on {0}.{1}: '{2}' -> {3} in {4:.5f}s".format(
+            daemon_type, daemon_id, cmd_dict['prefix'], r[0], t2 - t1
+        ))
+
+        return r
+
     def send_command(
             self,
             result: CommandResult,
index 04bcc8485b2661819d9a4a83d1f2686570e242b1..1a86967cb4a32c797827367fac96132dd855be75 100644 (file)
@@ -154,6 +154,7 @@ class CephfsConnectionPool(object):
             self.fs.conf_set("client_mount_uid", "0")
             self.fs.conf_set("client_mount_gid", "0")
             self.fs.conf_set("client_check_pool_perm", "false")
+            self.fs.conf_set("client_quota", "false")
             logger.debug("CephFS initializing...")
             self.fs.init()
             logger.debug("CephFS mounting...")
index 1d80544113243a58b6a721c9c7fbec764eda14b1..61bc477727baa5ba2d5e80c4697d512e7c4f4e23 100644 (file)
@@ -1,3 +1,4 @@
+import ipaddress
 import logging
 import json
 import re
@@ -103,7 +104,13 @@ class NFSCluster:
             ingress: Optional[bool] = None,
             port: Optional[int] = None,
     ) -> Tuple[int, str, str]:
+
         try:
+            if virtual_ip:
+                # validate virtual_ip value: ip_address throws a ValueError
+                # exception in case it's not a valid ipv4 or ipv6 address
+                ip = virtual_ip.split('/')[0]
+                ipaddress.ip_address(ip)
             if virtual_ip and not ingress:
                 raise NFSInvalidOperation('virtual_ip can only be provided with ingress enabled')
             if not virtual_ip and ingress:
index b0ccf73570b7772f4d2957efea31d50e69c6886d..6f0374ffede94dc1c0571981ee5af61ac10986aa 100644 (file)
@@ -31,7 +31,7 @@ import yaml
 
 from ceph.deployment import inventory
 from ceph.deployment.service_spec import ServiceSpec, NFSServiceSpec, RGWSpec, \
-    IscsiServiceSpec, IngressSpec, SNMPGatewaySpec, MDSSpec
+    IscsiServiceSpec, IngressSpec, SNMPGatewaySpec, MDSSpec, TunedProfileSpec
 from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.hostspec import HostSpec, SpecValidationError
 from ceph.utils import datetime_to_str, str_to_datetime
@@ -418,6 +418,17 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
+    def rescan_host(self, hostname: str) -> OrchResult:
+        """Use cephadm to issue a disk rescan on each HBA
+
+        Some HBAs and external enclosures don't automatically register
+        device insertion with the kernel, so for these scenarios we need
+        to manually rescan
+
+        :param hostname: (str) host name
+        """
+        raise NotImplementedError()
+
     def get_inventory(self, host_filter: Optional['InventoryFilter'] = None, refresh: bool = False) -> OrchResult[List['InventoryHost']]:
         """
         Returns something that was created by `ceph-volume inventory`.
@@ -668,6 +679,26 @@ class Orchestrator(object):
         """Update an existing snmp gateway service"""
         raise NotImplementedError()
 
+    def apply_tuned_profiles(self, specs: List[TunedProfileSpec], no_overwrite: bool) -> OrchResult[str]:
+        """Add or update an existing tuned profile"""
+        raise NotImplementedError()
+
+    def rm_tuned_profile(self, profile_name: str) -> OrchResult[str]:
+        """Remove a tuned profile"""
+        raise NotImplementedError()
+
+    def tuned_profile_ls(self) -> OrchResult[List[TunedProfileSpec]]:
+        """See current tuned profiles"""
+        raise NotImplementedError()
+
+    def tuned_profile_add_setting(self, profile_name: str, setting: str, value: str) -> OrchResult[str]:
+        """Change/Add a specific setting for a tuned profile"""
+        raise NotImplementedError()
+
+    def tuned_profile_rm_setting(self, profile_name: str, setting: str) -> OrchResult[str]:
+        """Remove a specific setting for a tuned profile"""
+        raise NotImplementedError()
+
     def upgrade_check(self, image: Optional[str], version: Optional[str]) -> OrchResult[str]:
         raise NotImplementedError()
 
@@ -783,6 +814,7 @@ class UpgradeStatusSpec(object):
         self.which: str = '<unknown>'  # for if user specified daemon types, services or hosts
         self.progress: Optional[str] = None  # How many of the daemons have we upgraded
         self.message = ""  # Freeform description
+        self.is_paused: bool = False  # Is the upgrade paused?
 
 
 def handle_type_error(method: FuncT) -> FuncT:
index a18d1ca4f379976f7075f72e4f75447ff9de50de..f8d2d2d7b8760ce136040d75ce42e10e101924e4 100644 (file)
@@ -29,7 +29,7 @@ from ._interface import OrchestratorClientMixin, DeviceLightLoc, _cli_read_comma
     NoOrchestrator, OrchestratorValidationError, NFSServiceSpec, \
     RGWSpec, InventoryFilter, InventoryHost, HostSpec, CLICommandMeta, \
     ServiceDescription, DaemonDescription, IscsiServiceSpec, json_to_generic_spec, \
-    GenericSpec, DaemonDescriptionStatus, SNMPGatewaySpec, MDSSpec
+    GenericSpec, DaemonDescriptionStatus, SNMPGatewaySpec, MDSSpec, TunedProfileSpec
 
 
 def nice_delta(now: datetime.datetime, t: Optional[datetime.datetime], suffix: str = '') -> str:
@@ -453,6 +453,16 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
 
         return HandleCommandResult(stdout=completion.result_str())
 
+    @_cli_write_command('orch host rescan')
+    def _host_rescan(self, hostname: str, with_summary: bool = False) -> HandleCommandResult:
+        """Perform a disk rescan on a host"""
+        completion = self.rescan_host(hostname)
+        raise_if_exception(completion)
+
+        if with_summary:
+            return HandleCommandResult(stdout=completion.result_str())
+        return HandleCommandResult(stdout=completion.result_str().split('.')[0])
+
     @_cli_read_command('orch device ls')
     def _list_devices(self,
                       hostname: Optional[List[str]] = None,
@@ -1352,6 +1362,84 @@ Usage:
                 output += f"\nHost Parallelism: {result['workers']}"
         return HandleCommandResult(stdout=output)
 
+    @_cli_write_command('orch tuned-profile apply')
+    def _apply_tuned_profiles(self,
+                              profile_name: Optional[str] = None,
+                              placement: Optional[str] = None,
+                              settings: Optional[str] = None,
+                              no_overwrite: bool = False,
+                              inbuf: Optional[str] = None) -> HandleCommandResult:
+        """Add or update a tuned profile"""
+        usage = """Usage:
+  ceph orch tuned-profile apply -i <yaml spec>
+  ceph orch tuned-profile apply <profile_name> [--placement=<placement_string>] [--settings='option=value,option2=value2']
+        """
+        if inbuf:
+            if profile_name or placement or settings:
+                raise OrchestratorValidationError(usage)
+            yaml_objs: Iterator = yaml.safe_load_all(inbuf)
+            specs: List[TunedProfileSpec] = []
+            # YAML '---' document separator with no content generates
+            # None entries in the output. Let's skip them silently.
+            content = [o for o in yaml_objs if o is not None]
+            for spec in content:
+                specs.append(TunedProfileSpec.from_json(spec))
+        else:
+            if not profile_name:
+                raise OrchestratorValidationError(usage)
+            placement_spec = PlacementSpec.from_string(
+                placement) if placement else PlacementSpec(host_pattern='*')
+            settings_dict = {}
+            if settings:
+                settings_list = settings.split(',')
+                for setting in settings_list:
+                    if '=' not in setting:
+                        raise SpecValidationError('settings defined on cli for tuned profile must '
+                                                  + 'be of format "setting_name=value,setting_name2=value2" etc.')
+                    name, value = setting.split('=', 1)
+                    settings_dict[name.strip()] = value.strip()
+            tuned_profile_spec = TunedProfileSpec(
+                profile_name=profile_name, placement=placement_spec, settings=settings_dict)
+            specs = [tuned_profile_spec]
+        completion = self.apply_tuned_profiles(specs, no_overwrite)
+        res = raise_if_exception(completion)
+        return HandleCommandResult(stdout=res)
+
+    @_cli_write_command('orch tuned-profile rm')
+    def _rm_tuned_profiles(self, profile_name: str) -> HandleCommandResult:
+        completion = self.rm_tuned_profile(profile_name)
+        res = raise_if_exception(completion)
+        return HandleCommandResult(stdout=res)
+
+    @_cli_read_command('orch tuned-profile ls')
+    def _tuned_profile_ls(self, format: Format = Format.plain) -> HandleCommandResult:
+        completion = self.tuned_profile_ls()
+        profiles: List[TunedProfileSpec] = raise_if_exception(completion)
+        if format != Format.plain:
+            return HandleCommandResult(stdout=to_format(profiles, format, many=True, cls=TunedProfileSpec))
+        else:
+            out = ''
+            for profile in profiles:
+                out += f'profile_name: {profile.profile_name}\n'
+                out += f'placement: {profile.placement.pretty_str()}\n'
+                out += 'settings:\n'
+                for k, v in profile.settings.items():
+                    out += f'  {k}: {v}\n'
+                out += '---\n'
+            return HandleCommandResult(stdout=out)
+
+    @_cli_write_command('orch tuned-profile add-setting')
+    def _tuned_profile_add_setting(self, profile_name: str, setting: str, value: str) -> HandleCommandResult:
+        completion = self.tuned_profile_add_setting(profile_name, setting, value)
+        res = raise_if_exception(completion)
+        return HandleCommandResult(stdout=res)
+
+    @_cli_write_command('orch tuned-profile rm-setting')
+    def _tuned_profile_rm_setting(self, profile_name: str, setting: str) -> HandleCommandResult:
+        completion = self.tuned_profile_rm_setting(profile_name, setting)
+        res = raise_if_exception(completion)
+        return HandleCommandResult(stdout=res)
+
     def self_test(self) -> None:
         old_orch = self._select_orchestrator()
         self._set_backend('')
@@ -1421,6 +1509,7 @@ Usage:
             'services_complete': status.services_complete,
             'progress': status.progress,
             'message': status.message,
+            'is_paused': status.is_paused,
         }
         out = json.dumps(r, indent=4)
         return HandleCommandResult(stdout=out)
index c6b41251005c53ded54cd4a02f07e4babcede6fe..726a7ac7937c53ffbf4b471322c0deca10323877 100644 (file)
@@ -191,11 +191,15 @@ def test_orch_ps(_describe_service):
     }
     m = OrchestratorCli('orchestrator', 0, 0)
     r = m._handle_command(None, cmd)
-    out = 'NAME    HOST       PORTS  STATUS   REFRESHED  AGE  MEM USE  MEM LIM  VERSION    IMAGE ID   \n'\
-          'osd.1   <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  \n'\
-          'osd.2   <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  \n'\
-          'osd.10  <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  '
-    assert r == HandleCommandResult(retval=0, stdout=out, stderr='')
+    expected_out = 'NAME    HOST       PORTS  STATUS   REFRESHED  AGE  MEM USE  MEM LIM  VERSION    IMAGE ID   \n'\
+                   'osd.1   <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  \n'\
+                   'osd.2   <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  \n'\
+                   'osd.10  <unknown>         unknown          -    -        -        -  <unknown>  <unknown>  '
+    expected_out = [c for c in expected_out if c.isalpha()]
+    actual_out = [c for c in r.stdout if c.isalpha()]
+    assert r.retval == 0
+    assert expected_out == actual_out
+    assert r.stderr == ''
 
 
 hlist = OrchResult([HostSpec("ceph-node-1"), HostSpec("ceph-node-2"), HostSpec("ceph-node-10")])
@@ -210,12 +214,16 @@ def test_orch_host_ls(_describe_service):
     }
     m = OrchestratorCli('orchestrator', 0, 0)
     r = m._handle_command(None, cmd)
-    out = 'HOST          ADDR          LABELS  STATUS  \n'\
-        'ceph-node-1   ceph-node-1                   \n'\
-        'ceph-node-2   ceph-node-2                   \n'\
-        'ceph-node-10  ceph-node-10                  \n'\
-        '3 hosts in cluster'
-    assert r == HandleCommandResult(retval=0, stdout=out, stderr='')
+    expected_out = 'HOST          ADDR          LABELS  STATUS  \n'\
+                   'ceph-node-1   ceph-node-1                   \n'\
+                   'ceph-node-2   ceph-node-2                   \n'\
+                   'ceph-node-10  ceph-node-10                  \n'\
+                   '3 hosts in cluster'
+    expected_out = [c for c in expected_out if c.isalpha()]
+    actual_out = [c for c in r.stdout if c.isalpha()]
+    assert r.retval == 0
+    assert expected_out == actual_out
+    assert r.stderr == ''
 
 
 def test_orch_device_ls():
@@ -230,11 +238,15 @@ def test_orch_device_ls():
         }
         m = OrchestratorCli('orchestrator', 0, 0)
         r = m._handle_command(None, cmd)
-        out = 'HOST          PATH      TYPE     DEVICE ID   SIZE  AVAILABLE  REFRESHED  REJECT REASONS  \n'\
-              'ceph-node-1   /dev/vdb  unknown  None          0   Yes        0s ago                     \n'\
-              'ceph-node-2   /dev/vdb  unknown  None          0   Yes        0s ago                     \n'\
-              'ceph-node-10  /dev/vdb  unknown  None          0   Yes        0s ago                     '
-        assert r == HandleCommandResult(retval=0, stdout=out, stderr='')
+        expected_out = 'HOST          PATH      TYPE     DEVICE ID   SIZE  AVAILABLE  REFRESHED  REJECT REASONS  \n'\
+                       'ceph-node-1   /dev/vdb  unknown  None          0   Yes        0s ago                     \n'\
+                       'ceph-node-2   /dev/vdb  unknown  None          0   Yes        0s ago                     \n'\
+                       'ceph-node-10  /dev/vdb  unknown  None          0   Yes        0s ago                     '
+        expected_out = [c for c in expected_out if c.isalpha()]
+        actual_out = [c for c in r.stdout if c.isalpha()]
+        assert r.retval == 0
+        assert expected_out == actual_out
+        assert r.stderr == ''
 
 
 def test_preview_table_osd_smoke():
index c84ecd23e4ddd81a86985a89e79675a3061138a4..57d27655114483a8d7abf9056415cac4315a63b9 100644 (file)
@@ -364,8 +364,11 @@ class PgAutoscaler(MgrModule):
                     if prev_root_id != root_id:
                         overlapped_roots.add(prev_root_id)
                         overlapped_roots.add(root_id)
-                        self.log.error('pool %d has overlapping roots: %s',
-                                       pool_id, overlapped_roots)
+                        self.log.warning("pool %s won't scale due to overlapping roots: %s",
+                                       pool['pool_name'], overlapped_roots)
+                        self.log.warning("Please See: https://docs.ceph.com/en/"
+                                         "latest/rados/operations/placement-groups"
+                                         "/#automated-scaling")
                     break
             if not s:
                 s = CrushSubtreeResourceStatus()
index ad7c32924ef582e64a9a60b922c0a3fe7d265944..56d239843d13731b2e016ba3d12931d5716a18a3 100644 (file)
@@ -794,6 +794,13 @@ class Module(MgrModule):
                 path,
                 'DF {}'.format(state),
             )
+            path = 'cluster_by_class_{}'.format(state)
+            metrics[path] = Metric(
+                'gauge',
+                path,
+                'DF {}'.format(state),
+                ('device_class',)
+            )
         for state in DF_POOL:
             path = 'pool_{}'.format(state)
             metrics[path] = Metric(
@@ -921,6 +928,8 @@ class Module(MgrModule):
         df = self.get('df')
         for stat in DF_CLUSTER:
             self.metrics['cluster_{}'.format(stat)].set(df['stats'][stat])
+            for device_class in df['stats_by_class']:
+                self.metrics['cluster_by_class_{}'.format(stat)].set(df['stats_by_class'][device_class][stat], (device_class,))
 
         for pool in df['pools']:
             for stat in DF_POOL:
index d1eb61600ef7ebe089249ede04919c229a41c9e5..c8cf4e4ee7ea303745bfcf9f3cd9f6f00b27e008 100644 (file)
@@ -12,8 +12,6 @@ from typing import Any, Dict, List, NamedTuple, Optional, Sequence, Set, Tuple,
 from .common import get_rbd_pools
 from .schedule import LevelSpec, Interval, StartTime, Schedule, Schedules
 
-MIRRORING_OID = "rbd_mirroring"
-
 def namespace_validator(ioctx: rados.Ioctx) -> None:
     mode = rbd.RBD().mirror_mode_get(ioctx)
     if mode != rbd.RBD_MIRROR_MODE_IMAGE:
@@ -25,125 +23,6 @@ def image_validator(image: rbd.Image) -> None:
     if mode != rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT:
         raise rbd.InvalidArgument("Invalid mirror image mode")
 
-class Watchers:
-
-    lock = Lock()
-
-    def __init__(self, handler: Any) -> None:
-        self.rados = handler.module.rados
-        self.log = handler.log
-        self.watchers: Dict[Tuple[str, str], rados.Watch] = {}
-        self.updated: Dict[int, bool] = {}
-        self.error: Dict[int, str] = {}
-        self.epoch: Dict[int, int] = {}
-
-    def __del__(self) -> None:
-        self.unregister_all()
-
-    def _clean_watcher(self, pool_id: str, namespace: str, watch_id: int) -> None:
-        assert self.lock.locked()
-
-        del self.watchers[pool_id, namespace]
-        self.updated.pop(watch_id, None)
-        self.error.pop(watch_id, None)
-        self.epoch.pop(watch_id, None)
-
-    def check(self, pool_id: str, namespace: str, epoch: int) -> bool:
-        error = None
-        with self.lock:
-            watch = self.watchers.get((pool_id, namespace))
-            if watch is not None:
-                error = self.error.get(watch.get_id())
-                if not error:
-                    updated = self.updated[watch.get_id()]
-                    self.updated[watch.get_id()] = False
-                    self.epoch[watch.get_id()] = epoch
-                    return updated
-        if error:
-            self.unregister(pool_id, namespace)
-
-        if self.register(pool_id, namespace):
-            return self.check(pool_id, namespace, epoch)
-        else:
-            return True
-
-    def register(self, pool_id: str, namespace: str) -> bool:
-
-        def callback(notify_id: str, notifier_id: str, watch_id: int, data: str) -> None:
-            self.log.debug("watcher {}: got notify {} from {}".format(
-                watch_id, notify_id, notifier_id))
-
-            with self.lock:
-                self.updated[watch_id] = True
-
-        def error_callback(watch_id: int, error: str) -> None:
-            self.log.debug("watcher {}: got errror {}".format(
-                watch_id, error))
-
-            with self.lock:
-                self.error[watch_id] = error
-
-        try:
-            ioctx = self.rados.open_ioctx2(int(pool_id))
-            ioctx.set_namespace(namespace)
-            watch = ioctx.watch(MIRRORING_OID, callback, error_callback)
-        except rados.ObjectNotFound:
-            self.log.debug(
-                "{}/{}/{} watcher not registered: object not found".format(
-                    pool_id, namespace, MIRRORING_OID))
-            return False
-
-        self.log.debug("{}/{}/{} watcher {} registered".format(
-            pool_id, namespace, MIRRORING_OID, watch.get_id()))
-
-        with self.lock:
-            self.watchers[pool_id, namespace] = watch
-            self.updated[watch.get_id()] = True
-        return True
-
-    def unregister(self, pool_id: str, namespace: str) -> None:
-
-        with self.lock:
-            watch = self.watchers[pool_id, namespace]
-
-        watch_id = watch.get_id()
-
-        try:
-            watch.close()
-
-            self.log.debug("{}/{}/{} watcher {} unregistered".format(
-                pool_id, namespace, MIRRORING_OID, watch_id))
-
-        except rados.Error as e:
-            self.log.debug(
-                "exception when unregistering {}/{} watcher: {}".format(
-                    pool_id, namespace, e))
-
-        with self.lock:
-            self._clean_watcher(pool_id, namespace, watch_id)
-
-    def unregister_all(self) -> None:
-        with self.lock:
-            watchers = list(self.watchers)
-
-        for pool_id, namespace in watchers:
-            self.unregister(pool_id, namespace)
-
-    def unregister_stale(self, current_epoch: int) -> None:
-        with self.lock:
-            watchers = list(self.watchers)
-
-        for pool_id, namespace in watchers:
-            with self.lock:
-                watch = self.watchers[pool_id, namespace]
-                if self.epoch.get(watch.get_id()) == current_epoch:
-                    continue
-
-            self.log.debug("{}/{}/{} watcher {} stale".format(
-                pool_id, namespace, MIRRORING_OID, watch.get_id()))
-
-            self.unregister(pool_id, namespace)
-
 
 class ImageSpec(NamedTuple):
     pool_id: str
@@ -446,6 +325,7 @@ class MirrorSnapshotScheduleHandler:
     MODULE_OPTION_NAME = "mirror_snapshot_schedule"
     MODULE_OPTION_NAME_MAX_CONCURRENT_SNAP_CREATE = "max_concurrent_snap_create"
     SCHEDULE_OID = "rbd_mirror_snapshot_schedule"
+    REFRESH_DELAY_SECONDS = 60.0
 
     lock = Lock()
     condition = Condition(lock)
@@ -463,18 +343,17 @@ class MirrorSnapshotScheduleHandler:
         self.thread.start()
 
     def _cleanup(self) -> None:
-        self.watchers.unregister_all()
         self.create_snapshot_requests.wait_for_pending()
 
     def run(self) -> None:
         try:
             self.log.info("MirrorSnapshotScheduleHandler: starting")
             while True:
-                self.refresh_images()
+                refresh_delay = self.refresh_images()
                 with self.lock:
                     (image_spec, wait_time) = self.dequeue()
                     if not image_spec:
-                        self.condition.wait(min(wait_time, 60))
+                        self.condition.wait(min(wait_time, refresh_delay))
                         continue
                 pool_id, namespace, image_id = image_spec
                 self.create_snapshot_requests.add(pool_id, namespace, image_id)
@@ -490,35 +369,32 @@ class MirrorSnapshotScheduleHandler:
         self.queue: Dict[str, List[ImageSpec]] = {}
         # pool_id => {namespace => image_id}
         self.images: Dict[str, Dict[str, Dict[str, str]]] = {}
-        self.watchers = Watchers(self)
         self.refresh_images()
-        self.log.debug("scheduler queue is initialized")
+        self.log.debug("MirrorSnapshotScheduleHandler: queue is initialized")
 
     def load_schedules(self) -> None:
         self.log.info("MirrorSnapshotScheduleHandler: load_schedules")
 
         schedules = Schedules(self)
         schedules.load(namespace_validator, image_validator)
-        with self.lock:
-            self.schedules = schedules
+        self.schedules = schedules
 
-    def refresh_images(self) -> None:
-        if (datetime.now() - self.last_refresh_images).seconds < 60:
-            return
+    def refresh_images(self) -> float:
+        elapsed = (datetime.now() - self.last_refresh_images).total_seconds()
+        if elapsed < self.REFRESH_DELAY_SECONDS:
+            return self.REFRESH_DELAY_SECONDS - elapsed
 
         self.log.debug("MirrorSnapshotScheduleHandler: refresh_images")
 
-        self.load_schedules()
-
         with self.lock:
+            self.load_schedules()
             if not self.schedules:
-                self.watchers.unregister_all()
+                self.log.debug("MirrorSnapshotScheduleHandler: no schedules")
                 self.images = {}
                 self.queue = {}
                 self.last_refresh_images = datetime.now()
-                return
+                return self.REFRESH_DELAY_SECONDS
 
-        epoch = int(datetime.now().strftime('%s'))
         images: Dict[str, Dict[str, Dict[str, str]]] = {}
 
         for pool_id, pool_name in get_rbd_pools(self.module).items():
@@ -526,18 +402,17 @@ class MirrorSnapshotScheduleHandler:
                     LevelSpec.from_pool_spec(pool_id, pool_name)):
                 continue
             with self.module.rados.open_ioctx2(int(pool_id)) as ioctx:
-                self.load_pool_images(ioctx, epoch, images)
+                self.load_pool_images(ioctx, images)
 
         with self.lock:
             self.refresh_queue(images)
             self.images = images
 
-        self.watchers.unregister_stale(epoch)
         self.last_refresh_images = datetime.now()
+        return self.REFRESH_DELAY_SECONDS
 
     def load_pool_images(self,
                          ioctx: rados.Ioctx,
-                         epoch: int,
                          images: Dict[str, Dict[str, Dict[str, str]]]) -> None:
         pool_id = str(ioctx.get_pool_id())
         pool_name = ioctx.get_pool_name()
@@ -555,14 +430,6 @@ class MirrorSnapshotScheduleHandler:
                     pool_name, namespace))
                 images[pool_id][namespace] = {}
                 ioctx.set_namespace(namespace)
-                updated = self.watchers.check(pool_id, namespace, epoch)
-                if not updated:
-                    self.log.debug("load_pool_images: {}/{} not updated".format(
-                        pool_name, namespace))
-                    with self.lock:
-                        images[pool_id][namespace] = \
-                            self.images[pool_id][namespace]
-                    continue
                 mirror_images = dict(rbd.RBD().mirror_image_info_list(
                     ioctx, rbd.RBD_MIRROR_IMAGE_MODE_SNAPSHOT))
                 if not mirror_images:
@@ -591,25 +458,24 @@ class MirrorSnapshotScheduleHandler:
                     pool_name, e))
 
     def rebuild_queue(self) -> None:
-        with self.lock:
-            now = datetime.now()
+        now = datetime.now()
 
-            # don't remove from queue "due" images
-            now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+        # don't remove from queue "due" images
+        now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
 
-            for schedule_time in list(self.queue):
-                if schedule_time > now_string:
-                    del self.queue[schedule_time]
+        for schedule_time in list(self.queue):
+            if schedule_time > now_string:
+                del self.queue[schedule_time]
 
-            if not self.schedules:
-                return
+        if not self.schedules:
+            return
 
-            for pool_id in self.images:
-                for namespace in self.images[pool_id]:
-                    for image_id in self.images[pool_id][namespace]:
-                        self.enqueue(now, pool_id, namespace, image_id)
+        for pool_id in self.images:
+            for namespace in self.images[pool_id]:
+                for image_id in self.images[pool_id][namespace]:
+                    self.enqueue(now, pool_id, namespace, image_id)
 
-            self.condition.notify()
+        self.condition.notify()
 
     def refresh_queue(self,
                       current_images: Dict[str, Dict[str, Dict[str, str]]]) -> None:
@@ -634,16 +500,19 @@ class MirrorSnapshotScheduleHandler:
         self.condition.notify()
 
     def enqueue(self, now: datetime, pool_id: str, namespace: str, image_id: str) -> None:
-
         schedule = self.schedules.find(pool_id, namespace, image_id)
         if not schedule:
+            self.log.debug(
+                "MirrorSnapshotScheduleHandler: no schedule for {}/{}/{}".format(
+                    pool_id, namespace, image_id))
             return
 
         schedule_time = schedule.next_run(now)
         if schedule_time not in self.queue:
             self.queue[schedule_time] = []
-        self.log.debug("schedule image {}/{}/{} at {}".format(
-            pool_id, namespace, image_id, schedule_time))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: scheduling {}/{}/{} at {}".format(
+                pool_id, namespace, image_id, schedule_time))
         image_spec = ImageSpec(pool_id, namespace, image_id)
         if image_spec not in self.queue[schedule_time]:
             self.queue[schedule_time].append(image_spec)
@@ -667,6 +536,10 @@ class MirrorSnapshotScheduleHandler:
         return image, 0.0
 
     def remove_from_queue(self, pool_id: str, namespace: str, image_id: str) -> None:
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: descheduling {}/{}/{}".format(
+                pool_id, namespace, image_id))
+
         empty_slots = []
         image_spec = ImageSpec(pool_id, namespace, image_id)
         for schedule_time, images in self.queue.items():
@@ -682,14 +555,13 @@ class MirrorSnapshotScheduleHandler:
                      interval: str,
                      start_time: Optional[str]) -> Tuple[int, str, str]:
         self.log.debug(
-            "add_schedule: level_spec={}, interval={}, start_time={}".format(
+            "MirrorSnapshotScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.add(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def remove_schedule(self,
@@ -697,18 +569,19 @@ class MirrorSnapshotScheduleHandler:
                         interval: Optional[str],
                         start_time: Optional[str]) -> Tuple[int, str, str]:
         self.log.debug(
-            "remove_schedule: level_spec={}, interval={}, start_time={}".format(
+            "MirrorSnapshotScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.remove(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def list(self, level_spec: LevelSpec) -> Tuple[int, str, str]:
-        self.log.debug("list: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: list: level_spec={}".format(
+                level_spec.name))
 
         with self.lock:
             result = self.schedules.to_list(level_spec)
@@ -716,7 +589,9 @@ class MirrorSnapshotScheduleHandler:
         return 0, json.dumps(result, indent=4, sort_keys=True), ""
 
     def status(self, level_spec: LevelSpec) -> Tuple[int, str, str]:
-        self.log.debug("status: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "MirrorSnapshotScheduleHandler: status: level_spec={}".format(
+                level_spec.name))
 
         scheduled_images = []
         with self.lock:
index 2eaad833c9b6f0c13859cd6cd1ae6fe0548d2489..d9bf24cf27cd49cd4ed3398c28e02286e861a6e0 100644 (file)
@@ -16,6 +16,7 @@ from .schedule import LevelSpec, Interval, StartTime, Schedule, Schedules
 class TrashPurgeScheduleHandler:
     MODULE_OPTION_NAME = "trash_purge_schedule"
     SCHEDULE_OID = "rbd_trash_purge_schedule"
+    REFRESH_DELAY_SECONDS = 60.0
 
     lock = Lock()
     condition = Condition(lock)
@@ -35,11 +36,11 @@ class TrashPurgeScheduleHandler:
         try:
             self.log.info("TrashPurgeScheduleHandler: starting")
             while True:
-                self.refresh_pools()
+                refresh_delay = self.refresh_pools()
                 with self.lock:
                     (ns_spec, wait_time) = self.dequeue()
                     if not ns_spec:
-                        self.condition.wait(min(wait_time, 60))
+                        self.condition.wait(min(wait_time, refresh_delay))
                         continue
                 pool_id, namespace = ns_spec
                 self.trash_purge(pool_id, namespace)
@@ -64,23 +65,30 @@ class TrashPurgeScheduleHandler:
         # pool_id => {namespace => pool_name}
         self.pools: Dict[str, Dict[str, str]] = {}
         self.refresh_pools()
-        self.log.debug("scheduler queue is initialized")
+        self.log.debug("TrashPurgeScheduleHandler: queue is initialized")
 
     def load_schedules(self) -> None:
         self.log.info("TrashPurgeScheduleHandler: load_schedules")
 
         schedules = Schedules(self)
         schedules.load()
-        with self.lock:
-            self.schedules = schedules
+        self.schedules = schedules
 
-    def refresh_pools(self) -> None:
-        if (datetime.now() - self.last_refresh_pools).seconds < 60:
-            return
+    def refresh_pools(self) -> float:
+        elapsed = (datetime.now() - self.last_refresh_pools).total_seconds()
+        if elapsed < self.REFRESH_DELAY_SECONDS:
+            return self.REFRESH_DELAY_SECONDS - elapsed
 
         self.log.debug("TrashPurgeScheduleHandler: refresh_pools")
 
-        self.load_schedules()
+        with self.lock:
+            self.load_schedules()
+            if not self.schedules:
+                self.log.debug("TrashPurgeScheduleHandler: no schedules")
+                self.pools = {}
+                self.queue = {}
+                self.last_refresh_pools = datetime.now()
+                return self.REFRESH_DELAY_SECONDS
 
         pools: Dict[str, Dict[str, str]] = {}
 
@@ -96,6 +104,7 @@ class TrashPurgeScheduleHandler:
             self.pools = pools
 
         self.last_refresh_pools = datetime.now()
+        return self.REFRESH_DELAY_SECONDS
 
     def load_pool(self, ioctx: rados.Ioctx, pools: Dict[str, Dict[str, str]]) -> None:
         pool_id = str(ioctx.get_pool_id())
@@ -117,24 +126,23 @@ class TrashPurgeScheduleHandler:
             pools[pool_id][namespace] = pool_name
 
     def rebuild_queue(self) -> None:
-        with self.lock:
-            now = datetime.now()
+        now = datetime.now()
 
-            # don't remove from queue "due" images
-            now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
+        # don't remove from queue "due" images
+        now_string = datetime.strftime(now, "%Y-%m-%d %H:%M:00")
 
-            for schedule_time in list(self.queue):
-                if schedule_time > now_string:
-                    del self.queue[schedule_time]
+        for schedule_time in list(self.queue):
+            if schedule_time > now_string:
+                del self.queue[schedule_time]
 
-            if not self.schedules:
-                return
+        if not self.schedules:
+            return
 
-            for pool_id, namespaces in self.pools.items():
-                for namespace in namespaces:
-                    self.enqueue(now, pool_id, namespace)
+        for pool_id, namespaces in self.pools.items():
+            for namespace in namespaces:
+                self.enqueue(now, pool_id, namespace)
 
-            self.condition.notify()
+        self.condition.notify()
 
     def refresh_queue(self, current_pools: Dict[str, Dict[str, str]]) -> None:
         now = datetime.now()
@@ -154,16 +162,19 @@ class TrashPurgeScheduleHandler:
         self.condition.notify()
 
     def enqueue(self, now: datetime, pool_id: str, namespace: str) -> None:
-
         schedule = self.schedules.find(pool_id, namespace)
         if not schedule:
+            self.log.debug(
+                "TrashPurgeScheduleHandler: no schedule for {}/{}".format(
+                    pool_id, namespace))
             return
 
         schedule_time = schedule.next_run(now)
         if schedule_time not in self.queue:
             self.queue[schedule_time] = []
-        self.log.debug("schedule {}/{} at {}".format(
-            pool_id, namespace, schedule_time))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: scheduling {}/{} at {}".format(
+                pool_id, namespace, schedule_time))
         ns_spec = (pool_id, namespace)
         if ns_spec not in self.queue[schedule_time]:
             self.queue[schedule_time].append((pool_id, namespace))
@@ -187,6 +198,10 @@ class TrashPurgeScheduleHandler:
         return namespace, 0.0
 
     def remove_from_queue(self, pool_id: str, namespace: str) -> None:
+        self.log.debug(
+            "TrashPurgeScheduleHandler: descheduling {}/{}".format(
+                pool_id, namespace))
+
         empty_slots = []
         for schedule_time, namespaces in self.queue.items():
             if (pool_id, namespace) in namespaces:
@@ -201,14 +216,13 @@ class TrashPurgeScheduleHandler:
                      interval: str,
                      start_time: Optional[str]) -> Tuple[int, str, str]:
         self.log.debug(
-            "add_schedule: level_spec={}, interval={}, start_time={}".format(
+            "TrashPurgeScheduleHandler: add_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.add(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def remove_schedule(self,
@@ -216,18 +230,19 @@ class TrashPurgeScheduleHandler:
                         interval: Optional[str],
                         start_time: Optional[str]) -> Tuple[int, str, str]:
         self.log.debug(
-            "remove_schedule: level_spec={}, interval={}, start_time={}".format(
+            "TrashPurgeScheduleHandler: remove_schedule: level_spec={}, interval={}, start_time={}".format(
                 level_spec.name, interval, start_time))
 
+        # TODO: optimize to rebuild only affected part of the queue
         with self.lock:
             self.schedules.remove(level_spec, interval, start_time)
-
-        # TODO: optimize to rebuild only affected part of the queue
-        self.rebuild_queue()
+            self.rebuild_queue()
         return 0, "", ""
 
     def list(self, level_spec: LevelSpec) -> Tuple[int, str, str]:
-        self.log.debug("list: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: list: level_spec={}".format(
+                level_spec.name))
 
         with self.lock:
             result = self.schedules.to_list(level_spec)
@@ -235,7 +250,9 @@ class TrashPurgeScheduleHandler:
         return 0, json.dumps(result, indent=4, sort_keys=True), ""
 
     def status(self, level_spec: LevelSpec) -> Tuple[int, str, str]:
-        self.log.debug("status: level_spec={}".format(level_spec.name))
+        self.log.debug(
+            "TrashPurgeScheduleHandler: status: level_spec={}".format(
+                level_spec.name))
 
         scheduled = []
         with self.lock:
index 226425f139202272452f84e6b98c75f991e7141d..ab36032e6705f32517b497f7155d4758593df5e6 100644 (file)
@@ -5,7 +5,7 @@ cryptography
 jsonpatch
 Jinja2
 pecan
-prettytable
+prettytable==3.3.0
 pyfakefs
 pyOpenSSL
 pytest-cov==2.7.1
index a22f658dffed94d0562276c7123b5bc270a9b6ff..486582074767ed303dac712ceac7481dd01cb8cf 100644 (file)
@@ -25,7 +25,13 @@ SNAP_DB_PREFIX = 'snap_db'
 # increment this every time the db schema changes and provide upgrade code
 SNAP_DB_VERSION = '0'
 SNAP_DB_OBJECT_NAME = f'{SNAP_DB_PREFIX}_v{SNAP_DB_VERSION}'
+# scheduled snapshots are tz suffixed
+SNAPSHOT_TS_FORMAT_TZ = '%Y-%m-%d-%H_%M_%S_%Z'
+# for backward compat snapshot name parsing
 SNAPSHOT_TS_FORMAT = '%Y-%m-%d-%H_%M_%S'
+# length of timestamp format (without tz suffix)
+# e.g.: scheduled-2022-04-19-05_39_00_UTC (len = "2022-04-19-05_39_00")
+SNAPSHOT_TS_FORMAT_LEN = 19
 SNAPSHOT_PREFIX = 'scheduled'
 
 log = logging.getLogger(__name__)
@@ -70,6 +76,7 @@ def get_prune_set(candidates: Set[Tuple[cephfs.DirEntry, datetime]],
     PRUNING_PATTERNS = OrderedDict([
         # n is for keep last n snapshots, uses the snapshot name timestamp
         # format for lowest granularity
+        # NOTE: prune set has tz suffix stripped out.
         ("n", SNAPSHOT_TS_FORMAT),
         # TODO remove M for release
         ("M", '%Y-%m-%d-%H_%M'),
@@ -110,6 +117,10 @@ def get_prune_set(candidates: Set[Tuple[cephfs.DirEntry, datetime]],
         keep = keep[:MAX_SNAPS_PER_PATH]
     return candidates - set(keep)
 
+def snap_name_to_timestamp(scheduled_snap_name: str) -> str:
+    """ extract timestamp from a schedule snapshot with tz suffix stripped out """
+    ts = scheduled_snap_name.lstrip(f'{SNAPSHOT_PREFIX}-')
+    return ts[0:SNAPSHOT_TS_FORMAT_LEN]
 
 class DBInfo():
     def __init__(self, fs: str, db: sqlite3.Connection):
@@ -190,7 +201,7 @@ class SnapSchedClient(CephfsClient):
                     size, _mtime = ioctx.stat(SNAP_DB_OBJECT_NAME)
                     dump = ioctx.read(SNAP_DB_OBJECT_NAME, size).decode('utf-8')
                     db.executescript(dump)
-                    ioctx.remove(SNAP_DB_OBJECT_NAME)
+                    ioctx.remove_object(SNAP_DB_OBJECT_NAME)
                 except rados.ObjectNotFound:
                     log.debug(f'No legacy schedule DB found in {fs}')
             db.executescript(Schedule.CREATE_TABLES)
@@ -275,8 +286,9 @@ class SnapSchedClient(CephfsClient):
                                                       start=start)[0]
                     time = datetime.now(timezone.utc)
                     with open_filesystem(self, fs_name) as fs_handle:
-                        snap_ts = time.strftime(SNAPSHOT_TS_FORMAT)
-                        snap_name = f'{path}/.snap/{SNAPSHOT_PREFIX}-{snap_ts}'
+                        snap_ts = time.strftime(SNAPSHOT_TS_FORMAT_TZ)
+                        snap_dir = self.mgr.rados.conf_get('client_snapdir')
+                        snap_name = f'{path}/{snap_dir}/{SNAPSHOT_PREFIX}-{snap_ts}'
                         fs_handle.mkdir(snap_name, 0o755)
                     log.info(f'created scheduled snapshot of {path}')
                     log.debug(f'created scheduled snapshot {snap_name}')
@@ -302,14 +314,14 @@ class SnapSchedClient(CephfsClient):
             prune_candidates = set()
             time = datetime.now(timezone.utc)
             with open_filesystem(self, sched.fs) as fs_handle:
-                with fs_handle.opendir(f'{path}/.snap') as d_handle:
+                snap_dir = self.mgr.rados.conf_get('client_snapdir')
+                with fs_handle.opendir(f'{path}/{snap_dir}') as d_handle:
                     dir_ = fs_handle.readdir(d_handle)
                     while dir_:
                         if dir_.d_name.decode('utf-8').startswith(f'{SNAPSHOT_PREFIX}-'):
                             log.debug(f'add {dir_.d_name} to pruning')
                             ts = datetime.strptime(
-                                dir_.d_name.decode('utf-8').lstrip(f'{SNAPSHOT_PREFIX}-'),
-                                SNAPSHOT_TS_FORMAT)
+                                snap_name_to_timestamp(dir_.d_name.decode('utf-8')), SNAPSHOT_TS_FORMAT)
                             prune_candidates.add((dir_, ts))
                         else:
                             log.debug(f'skipping dir entry {dir_.d_name}')
@@ -318,7 +330,7 @@ class SnapSchedClient(CephfsClient):
                 for k in to_prune:
                     dirname = k[0].d_name.decode('utf-8')
                     log.debug(f'rmdir on {dirname}')
-                    fs_handle.rmdir(f'{path}/.snap/{dirname}')
+                    fs_handle.rmdir(f'{path}/{snap_dir}/{dirname}')
                 if to_prune:
                     with self.get_schedule_db(sched.fs) as conn_mgr:
                         db = conn_mgr.dbinfo.db
index 089479cdec6e886d8172bae1874d71c7a3a96f7e..4e06f1fc64db23702ffc17f4b236ed6dd2d0aaff 100644 (file)
@@ -37,9 +37,15 @@ MDS_PERF_QUERY_COUNTERS_MAP = OrderedDict({'cap_hit': 0,
                                            'pinned_icaps': 6,
                                            'opened_inodes': 7,
                                            'read_io_sizes': 8,
-                                           'write_io_sizes': 9})
+                                           'write_io_sizes': 9,
+                                           'avg_read_latency': 10,
+                                           'stdev_read_latency': 11,
+                                           'avg_write_latency': 12,
+                                           'stdev_write_latency': 13,
+                                           'avg_metadata_latency': 14,
+                                           'stdev_metadata_latency': 15})
 MDS_PERF_QUERY_COUNTERS = [] # type: List[str]
-MDS_GLOBAL_PERF_QUERY_COUNTERS = ['cap_hit', 'read_latency', 'write_latency', 'metadata_latency', 'dentry_lease', 'opened_files', 'pinned_icaps', 'opened_inodes', 'read_io_sizes', 'write_io_sizes'] # type: List[str]
+MDS_GLOBAL_PERF_QUERY_COUNTERS = list(MDS_PERF_QUERY_COUNTERS_MAP.keys())
 
 QUERY_EXPIRE_INTERVAL = timedelta(minutes=1)
 REREGISTER_TIMER_INTERVAL = 1
index 879ab29cf073a17e87eaf9584e5ebecaa509bd27..c57e6179e824190c2a596ec2385e050736a2635a 100644 (file)
@@ -24,7 +24,7 @@ class Module(MgrModule):
 
     def get_rate(self, daemon_type: str, daemon_name: str, stat: str) -> int:
         data = self.get_counter(daemon_type, daemon_name, stat)[stat]
-        if data and len(data) > 1 and data[-1][0] != data[-2][0]:
+        if data and len(data) > 1 and (int(data[-1][0] - data[-2][0]) != 0):
             return (data[-1][1] - data[-2][1]) // int(data[-1][0] - data[-2][0])
         else:
             return 0
index ea97df47741baaff41541cff47e89848e563a018..779cd529b32a749a870236ad14272c9c4941ba5b 100644 (file)
@@ -69,6 +69,7 @@ class Collection(str, enum.Enum):
     basic_pool_usage = 'basic_pool_usage'
     basic_usage_by_class = 'basic_usage_by_class'
     basic_rook_v01 = 'basic_rook_v01'
+    perf_memory_metrics = 'perf_memory_metrics'
 
 MODULE_COLLECTION : List[Dict] = [
     {
@@ -125,6 +126,12 @@ MODULE_COLLECTION : List[Dict] = [
         "channel": "basic",
         "nag": True
     },
+    {
+        "name": Collection.perf_memory_metrics,
+        "description": "Heap stats and mempools for mon and mds",
+        "channel": "perf",
+        "nag": False
+    },
 ]
 
 ROOK_KEYS_BY_COLLECTION : List[Tuple[str, Collection]] = [
@@ -467,85 +474,133 @@ class Module(MgrModule):
         return  etype + '.' + m.hexdigest()
 
     def get_heap_stats(self) -> Dict[str, dict]:
-        # Initialize result dict
-        result: Dict[str, dict] = defaultdict(lambda: defaultdict(int))
-
-        # Get list of osd ids from the metadata
-        osd_metadata = self.get('osd_metadata')
+        result: Dict[str, dict] = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
+        anonymized_daemons = {}
+        osd_map = self.get('osd_map')
 
-        # Grab output from the "osd.x heap stats" command
-        for osd_id in osd_metadata:
-            cmd_dict = {
-                'prefix': 'heap',
-                'heapcmd': 'stats',
-                'id': str(osd_id),
-            }
-            r, outb, outs = self.osd_command(cmd_dict)
-            if r != 0:
-                self.log.debug("Invalid command dictionary.")
-                continue
+        # Combine available daemons
+        daemons = []
+        for osd in osd_map['osds']:
+            daemons.append('osd'+'.'+str(osd['osd']))
+        # perf_memory_metrics collection (1/2)
+        if self.is_enabled_collection(Collection.perf_memory_metrics):
+            mon_map = self.get('mon_map')
+            mds_metadata = self.get('mds_metadata')
+            for mon in mon_map['mons']:
+                daemons.append('mon'+'.'+mon['name'])
+            for mds in mds_metadata:
+                daemons.append('mds'+'.'+mds)
+
+        # Grab output from the "daemon.x heap stats" command
+        for daemon in daemons:
+            daemon_type, daemon_id = daemon.split('.')
+            heap_stats = self.parse_heap_stats(daemon_type, daemon_id)
+            if heap_stats:
+                if (daemon_type != 'osd'):
+                    # Anonymize mon and mds
+                    anonymized_daemons[daemon] = self.anonymize_entity_name(daemon)
+                    daemon = anonymized_daemons[daemon]
+                result[daemon_type][daemon] = heap_stats
             else:
-                if 'tcmalloc heap stats' in outs:
-                    values = [int(i) for i in outs.split() if i.isdigit()]
-                    # `categories` must be ordered this way for the correct output to be parsed
-                    categories = ['use_by_application',
-                                  'page_heap_freelist',
-                                  'central_cache_freelist',
-                                  'transfer_cache_freelist',
-                                  'thread_cache_freelists',
-                                  'malloc_metadata',
-                                  'actual_memory_used',
-                                  'released_to_os',
-                                  'virtual_address_space_used',
-                                  'spans_in_use',
-                                  'thread_heaps_in_use',
-                                  'tcmalloc_page_size']
-                    if len(values) != len(categories):
-                        self.log.debug('Received unexpected output from osd.{}; number of values should match the number of expected categories:\n' \
-                                'values: len={} {} ~ categories: len={} {} ~ outs: {}'.format(osd_id, len(values), values, len(categories), categories, outs))
-                        continue
-                    osd = 'osd.' + str(osd_id)
-                    result[osd] = dict(zip(categories, values))
-                else:
-                    self.log.debug('No heap stats available on osd.{}: {}'.format(osd_id, outs))
-                    continue
+                continue
 
+        if anonymized_daemons:
+            # for debugging purposes only, this data is never reported
+            self.log.debug('Anonymized daemon mapping for telemetry heap_stats (anonymized: real): {}'.format(anonymized_daemons))
         return result
 
+    def parse_heap_stats(self, daemon_type: str, daemon_id: Any) -> Dict[str, int]:
+        parsed_output = {}
+
+        cmd_dict = {
+            'prefix': 'heap',
+            'heapcmd': 'stats'
+        }
+        r, outb, outs = self.tell_command(daemon_type, str(daemon_id), cmd_dict)
+
+        if r != 0:
+            self.log.error("Invalid command dictionary: {}".format(cmd_dict))
+        else:
+            if 'tcmalloc heap stats' in outb:
+                values = [int(i) for i in outb.split() if i.isdigit()]
+                # `categories` must be ordered this way for the correct output to be parsed
+                categories = ['use_by_application',
+                              'page_heap_freelist',
+                              'central_cache_freelist',
+                              'transfer_cache_freelist',
+                              'thread_cache_freelists',
+                              'malloc_metadata',
+                              'actual_memory_used',
+                              'released_to_os',
+                              'virtual_address_space_used',
+                              'spans_in_use',
+                              'thread_heaps_in_use',
+                              'tcmalloc_page_size']
+                if len(values) != len(categories):
+                    self.log.error('Received unexpected output from {}.{}; ' \
+                                   'number of values should match the number' \
+                                   'of expected categories:\n values: len={} {} '\
+                                   '~ categories: len={} {} ~ outs: {}'.format(daemon_type, daemon_id, len(values), values, len(categories), categories, outs))
+                else:
+                    parsed_output = dict(zip(categories, values))
+            else:
+                self.log.error('No heap stats available on {}.{}: {}'.format(daemon_type, daemon_id, outs))
+        
+        return parsed_output
+
     def get_mempool(self, mode: str = 'separated') -> Dict[str, dict]:
-        # Initialize result dict
-        result: Dict[str, dict] = defaultdict(lambda: defaultdict(int))
+        result: Dict[str, dict] = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
+        anonymized_daemons = {}
+        osd_map = self.get('osd_map')
 
-        # Get list of osd ids from the metadata
-        osd_metadata = self.get('osd_metadata')
+        # Combine available daemons
+        daemons = []
+        for osd in osd_map['osds']:
+            daemons.append('osd'+'.'+str(osd['osd']))
+        # perf_memory_metrics collection (2/2)
+        if self.is_enabled_collection(Collection.perf_memory_metrics):
+            mon_map = self.get('mon_map')
+            mds_metadata = self.get('mds_metadata')
+            for mon in mon_map['mons']:
+                daemons.append('mon'+'.'+mon['name'])
+            for mds in mds_metadata:
+                daemons.append('mds'+'.'+mds)
 
-        # Grab output from the "osd.x dump_mempools" command
-        for osd_id in osd_metadata:
+        # Grab output from the "dump_mempools" command
+        for daemon in daemons:
+            daemon_type, daemon_id = daemon.split('.')
             cmd_dict = {
                 'prefix': 'dump_mempools',
-                'id': str(osd_id),
                 'format': 'json'
             }
-            r, outb, outs = self.osd_command(cmd_dict)
+            r, outb, outs = self.tell_command(daemon_type, daemon_id, cmd_dict)
             if r != 0:
-                self.log.debug("Invalid command dictionary.")
+                self.log.error("Invalid command dictionary: {}".format(cmd_dict))
                 continue
             else:
                 try:
                     # This is where the mempool will land.
                     dump = json.loads(outb)
                     if mode == 'separated':
-                        result["osd." + str(osd_id)] = dump['mempool']['by_pool']
+                        # Anonymize mon and mds
+                        if daemon_type != 'osd':
+                            anonymized_daemons[daemon] = self.anonymize_entity_name(daemon)
+                            daemon = anonymized_daemons[daemon]
+                        result[daemon_type][daemon] = dump['mempool']['by_pool']
                     elif mode == 'aggregated':
                         for mem_type in dump['mempool']['by_pool']:
-                            result[mem_type]['bytes'] += dump['mempool']['by_pool'][mem_type]['bytes']
-                            result[mem_type]['items'] += dump['mempool']['by_pool'][mem_type]['items']
+                            result[daemon_type][mem_type]['bytes'] += dump['mempool']['by_pool'][mem_type]['bytes']
+                            result[daemon_type][mem_type]['items'] += dump['mempool']['by_pool'][mem_type]['items']
                     else:
-                        self.log.debug("Incorrect mode specified in get_mempool")
+                        self.log.error("Incorrect mode specified in get_mempool: {}".format(mode))
                 except (json.decoder.JSONDecodeError, KeyError) as e:
-                    self.log.debug("Error caught on osd.{}: {}".format(osd_id, e))
+                    self.log.error("Error caught on {}.{}: {}".format(daemon_type, daemon_id, e))
                     continue
 
+        if anonymized_daemons:
+            # for debugging purposes only, this data is never reported
+            self.log.debug('Anonymized daemon mapping for telemetry mempool (anonymized: real): {}'.format(anonymized_daemons))
+
         return result
 
     def get_osd_histograms(self, mode: str = 'separated') -> List[Dict[str, dict]]:
@@ -569,7 +624,7 @@ class Module(MgrModule):
             r, outb, outs = self.osd_command(cmd_dict)
             # Check for invalid calls
             if r != 0:
-                self.log.debug("Invalid command dictionary.")
+                self.log.error("Invalid command dictionary: {}".format(cmd_dict))
                 continue
             else:
                 try:
@@ -656,7 +711,7 @@ class Module(MgrModule):
                 # schema when it doesn't. In either case, we'll handle that
                 # by continuing and collecting what we can from other osds.
                 except (json.decoder.JSONDecodeError, KeyError) as e:
-                    self.log.debug("Error caught on osd.{}: {}".format(osd_id, e))
+                    self.log.error("Error caught on osd.{}: {}".format(osd_id, e))
                     continue
 
         return list(result.values())
@@ -864,14 +919,14 @@ class Module(MgrModule):
                 m = self.remote('devicehealth', 'get_recent_device_metrics',
                                 devid, min_sample)
             except Exception as e:
-                self.log.debug('Unable to get recent metrics from device with id "{}": {}'.format(devid, e))
+                self.log.error('Unable to get recent metrics from device with id "{}": {}'.format(devid, e))
                 continue
 
             # anonymize host id
             try:
                 host = d['location'][0]['host']
             except (KeyError, IndexError) as e:
-                self.log.debug('Unable to get host from device with id "{}": {}'.format(devid, e))
+                self.log.error('Unable to get host from device with id "{}": {}'.format(devid, e))
                 continue
             anon_host = self.get_store('host-id/%s' % host)
             if not anon_host:
@@ -1579,6 +1634,9 @@ To enable, add '--license {LICENSE}' to the 'ceph telemetry on' command.'''
                 msg = f"{msg}\nSome channels are disabled, please enable with:\n"\
                         f"`ceph telemetry enable channel{disabled_channels}`"
 
+            # wake up serve() to reset health warning
+            self.event.set()
+
             return 0, msg, ''
 
     @CLICommand('telemetry off')
index ea69889e31800ca3eb89cff17c8e28ae1fb1cf17..3426ae2873579f569f03338457b6d75ffc4b4684 100644 (file)
@@ -113,6 +113,7 @@ deps =
     -c{toxinidir}/../../mypy-constrains.txt
     mypy
     types-backports
+    types-pkg_resources
     types-python-dateutil
     types-requests
     types-PyYAML
@@ -183,7 +184,7 @@ modules =
 commands =
     flake8 --config=tox.ini {posargs} \
       {posargs:{[testenv:flake8]modules}}
-    bash -c 'test $(git ls-files cephadm | grep ".py$" | grep -v tests | xargs grep "docker.io" | wc -l) == 15'
+    bash -c 'test $(git ls-files cephadm | grep ".py$" | grep -v tests | xargs grep "docker.io" | wc -l) == 13'
 
 [testenv:jinjalint]
 basepython = python3
index 5a1fcbfdf5d006919211fe24e0d22e800b85a324..95f7d64e1b36422995b5941032c9e4bf39656b18 100644 (file)
@@ -296,9 +296,10 @@ def start_clone_sm(fs_client, volspec, volname, index, groupname, subvolname, st
                                                                                          current_state, next_state))
                 set_clone_state(fs_client, volspec, volname, groupname, subvolname, next_state)
                 current_state = next_state
-    except VolumeException as ve:
-        log.error("clone failed for ({0}, {1}, {2}) (current_state: {3}, reason: {4})".format(volname, groupname,\
-                                                                                             subvolname, current_state, ve))
+    except (MetadataMgrException, VolumeException) as e:
+        log.error(f"clone failed for ({volname}, {groupname}, {subvolname}) "
+                  f"(current_state: {current_state}, reason: {e} {os.strerror(-e.args[0])})")
+        raise
 
 def clone(fs_client, volspec, volname, index, clone_path, state_table, should_cancel, snapshot_clone_delay):
     log.info("cloning to subvolume path: {0}".format(clone_path))
@@ -312,8 +313,8 @@ def clone(fs_client, volspec, volname, index, clone_path, state_table, should_ca
         log.info("starting clone: ({0}, {1}, {2})".format(volname, groupname, subvolname))
         start_clone_sm(fs_client, volspec, volname, index, groupname, subvolname, state_table, should_cancel, snapshot_clone_delay)
         log.info("finished clone: ({0}, {1}, {2})".format(volname, groupname, subvolname))
-    except VolumeException as ve:
-        log.error("clone failed for ({0}, {1}, {2}), reason: {3}".format(volname, groupname, subvolname, ve))
+    except (MetadataMgrException, VolumeException) as e:
+        log.error(f"clone failed for ({volname}, {groupname}, {subvolname}), reason: {e} {os.strerror(-e.args[0])}")
 
 class Cloner(AsyncJobs):
     """
index 05a6e52caf54cd1f7378a664526f139d8bd5a453..be0a06acdd8997d2d7de06dffe653038e6d58c39 100644 (file)
@@ -88,6 +88,28 @@ def listdir(fs, dirpath, filter_entries=None):
         raise VolumeException(-e.args[0], e.args[1])
     return dirs
 
+
+def has_subdir(fs, dirpath, filter_entries=None):
+    """
+    Check the presence of directory (only dirs) for a given path
+    """
+    res = False
+    if filter_entries is None:
+        filter_entries = [b".", b".."]
+    else:
+        filter_entries.extend([b".", b".."])
+    try:
+        with fs.opendir(dirpath) as dir_handle:
+            d = fs.readdir(dir_handle)
+            while d:
+                if (d.d_name not in filter_entries) and d.is_dir():
+                    res = True
+                    break
+                d = fs.readdir(dir_handle)
+    except cephfs.Error as e:
+        raise VolumeException(-e.args[0], e.args[1])
+    return res
+
 def is_inherited_snap(snapname):
     """
     Returns True if the snapname is inherited else False
index 152383c51d43a3e1ae3ccf4b080d7b4b285deebf..8b40610332dce36c8263e2e339f1af8fd32e9c67 100644 (file)
@@ -8,7 +8,7 @@ import cephfs
 from .snapshot_util import mksnap, rmsnap
 from .pin_util import pin
 from .template import GroupTemplate
-from ..fs_util import listdir, listsnaps, get_ancestor_xattr, create_base_dir
+from ..fs_util import listdir, listsnaps, get_ancestor_xattr, create_base_dir, has_subdir
 from ..exception import VolumeException
 
 log = logging.getLogger(__name__)
@@ -20,7 +20,10 @@ class Group(GroupTemplate):
     NO_GROUP_NAME = "_nogroup"
 
     def __init__(self, fs, vol_spec, groupname):
-        assert groupname != Group.NO_GROUP_NAME
+        if groupname == Group.NO_GROUP_NAME:
+            raise VolumeException(-errno.EPERM, "Operation not permitted for group '{0}' as it is an internal group.".format(groupname))
+        if groupname in vol_spec.INTERNAL_DIRS:
+            raise VolumeException(-errno.EINVAL, "'{0}' is an internal directory and not a valid group name.".format(groupname))
         self.fs = fs
         self.user_id = None
         self.group_id = None
@@ -63,6 +66,15 @@ class Group(GroupTemplate):
                 return []
             raise
 
+    def has_subvolumes(self):
+        try:
+            return has_subdir(self.fs, self.path)
+        except VolumeException as ve:
+            # listing a default group when it's not yet created
+            if ve.errno == -errno.ENOENT and self.is_default_group():
+                return False
+            raise
+
     def pin(self, pin_type, pin_setting):
         return pin(self.fs, self.path, pin_type, pin_setting)
 
@@ -88,14 +100,127 @@ class Group(GroupTemplate):
                 return []
             raise
 
+    def info(self):
+        st = self.fs.statx(self.path, cephfs.CEPH_STATX_BTIME | cephfs.CEPH_STATX_SIZE
+                           | cephfs.CEPH_STATX_UID | cephfs.CEPH_STATX_GID | cephfs.CEPH_STATX_MODE
+                           | cephfs.CEPH_STATX_ATIME | cephfs.CEPH_STATX_MTIME | cephfs.CEPH_STATX_CTIME,
+                           cephfs.AT_SYMLINK_NOFOLLOW)
+        usedbytes = st["size"]
+        try:
+            nsize = int(self.fs.getxattr(self.path, 'ceph.quota.max_bytes').decode('utf-8'))
+        except cephfs.NoData:
+            nsize = 0
+
+        try:
+            data_pool = self.fs.getxattr(self.path, 'ceph.dir.layout.pool').decode('utf-8')
+        except cephfs.Error as e:
+            raise VolumeException(-e.args[0], e.args[1])
+
+        return {'uid': int(st["uid"]),
+                'gid': int(st["gid"]),
+                'atime': str(st["atime"]),
+                'mtime': str(st["mtime"]),
+                'ctime': str(st["ctime"]),
+                'mode': int(st["mode"]),
+                'data_pool': data_pool,
+                'created_at': str(st["btime"]),
+                'bytes_quota': "infinite" if nsize == 0 else nsize,
+                'bytes_used': int(usedbytes),
+                'bytes_pcent': "undefined" if nsize == 0 else '{0:.2f}'.format((float(usedbytes) / nsize) * 100.0)}
+
+    def resize(self, newsize, noshrink):
+        try:
+            newsize = int(newsize)
+            if newsize <= 0:
+                raise VolumeException(-errno.EINVAL, "Invalid subvolume group size")
+        except ValueError:
+            newsize = newsize.lower()
+            if not (newsize == "inf" or newsize == "infinite"):
+                raise (VolumeException(-errno.EINVAL, "invalid size option '{0}'".format(newsize)))
+            newsize = 0
+            noshrink = False
+
+        try:
+            maxbytes = int(self.fs.getxattr(self.path, 'ceph.quota.max_bytes').decode('utf-8'))
+        except cephfs.NoData:
+            maxbytes = 0
+        except cephfs.Error as e:
+            raise VolumeException(-e.args[0], e.args[1])
+
+        group_stat = self.fs.stat(self.path)
+        if newsize > 0 and newsize < group_stat.st_size:
+            if noshrink:
+                raise VolumeException(-errno.EINVAL, "Can't resize the subvolume group. The new size"
+                                      " '{0}' would be lesser than the current used size '{1}'"
+                                      .format(newsize, group_stat.st_size))
+
+        if not newsize == maxbytes:
+            try:
+                self.fs.setxattr(self.path, 'ceph.quota.max_bytes', str(newsize).encode('utf-8'), 0)
+            except cephfs.Error as e:
+                raise (VolumeException(-e.args[0],
+                                       "Cannot set new size for the subvolume group. '{0}'".format(e.args[1])))
+        return newsize, group_stat.st_size
+
+def set_group_attrs(fs, path, attrs):
+    # set subvolume group attrs
+    # set size
+    quota = attrs.get("quota")
+    if quota is not None:
+        try:
+            fs.setxattr(path, 'ceph.quota.max_bytes', str(quota).encode('utf-8'), 0)
+        except cephfs.InvalidValue:
+            raise VolumeException(-errno.EINVAL, "invalid size specified: '{0}'".format(quota))
+        except cephfs.Error as e:
+            raise VolumeException(-e.args[0], e.args[1])
+
+    # set pool layout
+    pool = attrs.get("data_pool")
+    if not pool:
+        pool = get_ancestor_xattr(fs, path, "ceph.dir.layout.pool")
+    try:
+        fs.setxattr(path, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
+    except cephfs.InvalidValue:
+        raise VolumeException(-errno.EINVAL,
+                              "Invalid pool layout '{0}'. It must be a valid data pool".format(pool))
 
-def create_group(fs, vol_spec, groupname, pool, mode, uid, gid):
+    # set uid/gid
+    uid = attrs.get("uid")
+    if uid is None:
+        uid = 0
+    else:
+        try:
+            uid = int(uid)
+            if uid < 0:
+                raise ValueError
+        except ValueError:
+            raise VolumeException(-errno.EINVAL, "invalid UID")
+
+    gid = attrs.get("gid")
+    if gid is None:
+        gid = 0
+    else:
+        try:
+            gid = int(gid)
+            if gid < 0:
+                raise ValueError
+        except ValueError:
+            raise VolumeException(-errno.EINVAL, "invalid GID")
+    fs.chown(path, uid, gid)
+
+    # set mode
+    mode = attrs.get("mode", None)
+    if mode is not None:
+        fs.lchmod(path, mode)
+
+def create_group(fs, vol_spec, groupname, size, pool, mode, uid, gid):
     """
     create a subvolume group.
 
     :param fs: ceph filesystem handle
     :param vol_spec: volume specification
     :param groupname: subvolume group name
+    :param size: In bytes, or None for no size limit
     :param pool: the RADOS pool where the data objects of the subvolumes will be stored
     :param mode: the user permissions
     :param uid: the user identifier
@@ -110,32 +235,13 @@ def create_group(fs, vol_spec, groupname, pool, mode, uid, gid):
     create_base_dir(fs, vol_spec_base_dir, vol_spec.DEFAULT_MODE)
     fs.mkdir(path, mode)
     try:
-        if not pool:
-            pool = get_ancestor_xattr(fs, path, "ceph.dir.layout.pool")
-        try:
-            fs.setxattr(path, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
-        except cephfs.InvalidValue:
-            raise VolumeException(-errno.EINVAL,
-                                  "Invalid pool layout '{0}'. It must be a valid data pool".format(pool))
-        if uid is None:
-            uid = 0
-        else:
-            try:
-                uid = int(uid)
-                if uid < 0:
-                    raise ValueError
-            except ValueError:
-                raise VolumeException(-errno.EINVAL, "invalid UID")
-        if gid is None:
-            gid = 0
-        else:
-            try:
-                gid = int(gid)
-                if gid < 0:
-                    raise ValueError
-            except ValueError:
-                raise VolumeException(-errno.EINVAL, "invalid GID")
-        fs.chown(path, uid, gid)
+        attrs = {
+            'uid': uid,
+            'gid': gid,
+            'data_pool': pool,
+            'quota': size
+        }
+        set_group_attrs(fs, path, attrs)
     except (cephfs.Error, VolumeException) as e:
         try:
             # cleanup group path on best effort basis
index 3dcdd7c10ab1001af4929a2314bca860cd84bf31..544afa165f975c6d77d6c7d524986d7ebc6b2227 100644 (file)
@@ -95,7 +95,10 @@ class SubvolumeLoader(object):
             subvolume.discover()
             self.upgrade_to_v2_subvolume(subvolume)
             version = int(subvolume.metadata_mgr.get_global_option('version'))
-            return self._get_subvolume_version(version)(mgr, fs, vol_spec, group, subvolname, legacy=subvolume.legacy_mode)
+            subvolume_version_object = self._get_subvolume_version(version)(mgr, fs, vol_spec, group, subvolname, legacy=subvolume.legacy_mode)
+            subvolume_version_object.metadata_mgr.refresh()
+            subvolume_version_object.clean_stale_snapshot_metadata()
+            return subvolume_version_object
         except MetadataMgrException as me:
             if me.errno == -errno.ENOENT and upgrade:
                 self.upgrade_legacy_subvolume(fs, subvolume)
index 665eec6b8a9c1670a3977c8140919d25eb550b16..718735d91b131a323a40e0382da4396b543c52c0 100644 (file)
@@ -2,16 +2,9 @@ import os
 import errno
 import logging
 import sys
-
-if sys.version_info >= (3, 2):
-    import configparser
-else:
-    import ConfigParser as configparser
-
-try:
-    from StringIO import StringIO
-except ImportError:
-    from io import StringIO
+import threading
+import configparser
+import re
 
 import cephfs
 
@@ -19,6 +12,46 @@ from ...exception import MetadataMgrException
 
 log = logging.getLogger(__name__)
 
+# _lock needs to be shared across all instances of MetadataManager.
+# that is why we have a file level instance
+_lock = threading.Lock()
+
+
+def _conf_reader(fs, fd, offset=0, length=4096):
+    while True:
+        buf = fs.read(fd, offset, length)
+        offset += len(buf)
+        if not buf:
+            return
+        yield buf.decode('utf-8')
+
+
+class _ConfigWriter:
+    def __init__(self, fs, fd):
+        self._fs = fs
+        self._fd = fd
+        self._wrote = 0
+
+    def write(self, value):
+        buf = value.encode('utf-8')
+        wrote = self._fs.write(self._fd, buf, -1)
+        self._wrote += wrote
+        return wrote
+
+    def fsync(self):
+        self._fs.fsync(self._fd, 0)
+
+    @property
+    def wrote(self):
+        return self._wrote
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, exc_type, exc_value, tb):
+        self._fs.close(self._fd)
+
+
 class MetadataManager(object):
     GLOBAL_SECTION = "GLOBAL"
     USER_METADATA_SECTION   = "USER_METADATA"
@@ -31,28 +64,20 @@ class MetadataManager(object):
     CLONE_FAILURE_META_KEY_ERRNO = "errno"
     CLONE_FAILURE_META_KEY_ERROR_MSG = "error_msg"
 
-    MAX_IO_BYTES = 8 * 1024
-
     def __init__(self, fs, config_path, mode):
         self.fs = fs
         self.mode = mode
         self.config_path = config_path
-        if sys.version_info >= (3, 2):
-            self.config = configparser.ConfigParser()
-        else:
-            self.config = configparser.SafeConfigParser()
+        self.config = configparser.ConfigParser()
 
     def refresh(self):
         fd = None
-        conf_data = StringIO()
-        log.debug("opening config {0}".format(self.config_path))
         try:
-            fd = self.fs.open(self.config_path, os.O_RDONLY)
-            while True:
-                data = self.fs.read(fd, -1, MetadataManager.MAX_IO_BYTES)
-                if not len(data):
-                    break
-                conf_data.write(data.decode('utf-8'))
+            log.debug("opening config {0}".format(self.config_path))
+            with _lock:
+                fd = self.fs.open(self.config_path, os.O_RDONLY)
+                cfg = ''.join(_conf_reader(self.fs, fd))
+            self.config.read_string(cfg, source=self.config_path)
         except UnicodeDecodeError:
             raise MetadataMgrException(-errno.EINVAL,
                     "failed to decode, erroneous metadata config '{0}'".format(self.config_path))
@@ -60,19 +85,12 @@ class MetadataManager(object):
             raise MetadataMgrException(-errno.ENOENT, "metadata config '{0}' not found".format(self.config_path))
         except cephfs.Error as e:
             raise MetadataMgrException(-e.args[0], e.args[1])
-        finally:
-            if fd is not None:
-                self.fs.close(fd)
-
-        conf_data.seek(0)
-        try:
-            if sys.version_info >= (3, 2):
-                self.config.read_file(conf_data)
-            else:
-                self.config.readfp(conf_data)
         except configparser.Error:
             raise MetadataMgrException(-errno.EINVAL, "failed to parse, erroneous metadata config "
                     "'{0}'".format(self.config_path))
+        finally:
+            if fd is not None:
+                self.fs.close(fd)
 
     def flush(self):
         # cull empty sections
@@ -80,26 +98,18 @@ class MetadataManager(object):
             if len(self.config.items(section)) == 0:
                 self.config.remove_section(section)
 
-        conf_data = StringIO()
-        self.config.write(conf_data)
-        conf_data.seek(0)
-
-        fd = None
         try:
-            fd = self.fs.open(self.config_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, self.mode)
-            wrote = 0
-            while True:
-                data = conf_data.read()
-                if not len(data):
-                    break
-                wrote += self.fs.write(fd, data.encode('utf-8'), -1)
-            self.fs.fsync(fd, 0)
-            log.info("wrote {0} bytes to config {1}".format(wrote, self.config_path))
+            with _lock:
+                tmp_config_path = self.config_path + b'.tmp'
+                fd = self.fs.open(tmp_config_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, self.mode)
+                with _ConfigWriter(self.fs, fd) as cfg_writer:
+                    self.config.write(cfg_writer)
+                    cfg_writer.fsync()
+                self.fs.rename(tmp_config_path, self.config_path)
+            log.info(f"wrote {cfg_writer.wrote} bytes to config {tmp_config_path}")
+            log.info(f"Renamed {tmp_config_path} to config {self.config_path}")
         except cephfs.Error as e:
             raise MetadataMgrException(-e.args[0], e.args[1])
-        finally:
-            if fd is not None:
-                self.fs.close(fd)
 
     def init(self, version, typ, path, state):
         # you may init just once before refresh (helps to overwrite conf)
@@ -162,7 +172,29 @@ class MetadataManager(object):
                 metadata_dict[option] = self.config.get(section,option)
         return metadata_dict
 
+    def list_all_keys_with_specified_values_from_section(self, section, value):
+        keys = []
+        if self.config.has_section(section):
+            options = self.config.options(section)
+            for option in options:
+                if (value == self.config.get(section, option)) :
+                    keys.append(option)
+        return keys
+
     def section_has_item(self, section, item):
         if not self.config.has_section(section):
             raise MetadataMgrException(-errno.ENOENT, "section '{0}' does not exist".format(section))
         return item in [v[1] for v in self.config.items(section)]
+
+    def has_snap_metadata_section(self):
+        sections = self.config.sections()
+        r = re.compile('SNAP_METADATA_.*')
+        for section in sections:
+            if r.match(section):
+                return True
+        return False
+
+    def list_snaps_with_metadata(self):
+        sections = self.config.sections()
+        r = re.compile('SNAP_METADATA_.*')
+        return [section[len("SNAP_METADATA_"):] for section in sections if r.match(section)]
index bb4605cb16e73b7a6e0b8134b46932f1820427fc..3bae0707a6a4ddbea111d60a3b861db373d8ee18 100644 (file)
@@ -3,7 +3,7 @@ import stat
 
 import errno
 import logging
-from hashlib import md5
+import hashlib
 from typing import Dict, Union
 from pathlib import Path
 
@@ -76,9 +76,16 @@ class SubvolumeBase(object):
 
     @property
     def legacy_config_path(self):
-        m = md5()
-        m.update(self.base_path)
-        meta_config = "{0}.meta".format(m.digest().hex())
+        try:
+            m = hashlib.md5(self.base_path)
+        except ValueError:
+            try:
+                m = hashlib.md5(self.base_path, usedforsecurity=False) # type: ignore
+            except TypeError:
+                raise VolumeException(-errno.EINVAL,
+                                      "require python's hashlib library to support usedforsecurity flag in FIPS enabled systems")
+
+        meta_config = "{0}.meta".format(m.hexdigest())
         return os.path.join(self.legacy_dir, meta_config.encode('utf-8'))
 
     @property
@@ -129,6 +136,10 @@ class SubvolumeBase(object):
         """ Boolean declaring if subvolume can be purged """
         raise NotImplementedError
 
+    def clean_stale_snapshot_metadata(self):
+        """ Clean up stale snapshot metadata """
+        raise NotImplementedError
+
     def load_config(self):
         try:
             self.fs.stat(self.legacy_config_path)
@@ -426,9 +437,14 @@ class SubvolumeBase(object):
                 'features': self.features, 'state': self.state.value}
 
     def set_user_metadata(self, keyname, value):
-        self.metadata_mgr.add_section(MetadataManager.USER_METADATA_SECTION)
-        self.metadata_mgr.update_section(MetadataManager.USER_METADATA_SECTION, keyname, str(value))
-        self.metadata_mgr.flush()
+        try:
+            self.metadata_mgr.add_section(MetadataManager.USER_METADATA_SECTION)
+            self.metadata_mgr.update_section(MetadataManager.USER_METADATA_SECTION, keyname, str(value))
+            self.metadata_mgr.flush()
+        except MetadataMgrException as me:
+            log.error(f"Failed to set user metadata key={keyname} value={value} on subvolume={self.subvol_name} "
+                      f"group={self.group_name} reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
+            raise VolumeException(-me.args[0], me.args[1])
 
     def get_user_metadata(self, keyname):
         try:
@@ -450,7 +466,9 @@ class SubvolumeBase(object):
             self.metadata_mgr.flush()
         except MetadataMgrException as me:
             if me.errno == -errno.ENOENT:
-                raise VolumeException(-errno.ENOENT, "subvolume metadata not does not exist")
+                raise VolumeException(-errno.ENOENT, "subvolume metadata does not exist")
+            log.error(f"Failed to remove user metadata key={keyname} on subvolume={self.subvol_name} "
+                      f"group={self.group_name} reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
             raise VolumeException(-me.args[0], me.args[1])
 
     def get_snap_section_name(self, snapname):
@@ -458,10 +476,16 @@ class SubvolumeBase(object):
         return section;
 
     def set_snapshot_metadata(self, snapname, keyname, value):
-        section = self.get_snap_section_name(snapname)
-        self.metadata_mgr.add_section(section)
-        self.metadata_mgr.update_section(section, keyname, str(value))
-        self.metadata_mgr.flush()
+        try:
+            section = self.get_snap_section_name(snapname)
+            self.metadata_mgr.add_section(section)
+            self.metadata_mgr.update_section(section, keyname, str(value))
+            self.metadata_mgr.flush()
+        except MetadataMgrException as me:
+            log.error(f"Failed to set snapshot metadata key={keyname} value={value} on snap={snapname} "
+                      f"subvolume={self.subvol_name} group={self.group_name} "
+                      f"reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
+            raise VolumeException(-me.args[0], me.args[1])
 
     def get_snapshot_metadata(self, snapname, keyname):
         try:
@@ -469,6 +493,9 @@ class SubvolumeBase(object):
         except MetadataMgrException as me:
             if me.errno == -errno.ENOENT:
                 raise VolumeException(-errno.ENOENT, "key '{0}' does not exist.".format(keyname))
+            log.error(f"Failed to get snapshot metadata key={keyname} on snap={snapname} "
+                      f"subvolume={self.subvol_name} group={self.group_name} "
+                      f"reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
             raise VolumeException(-me.args[0], me.args[1])
         return value
 
@@ -484,4 +511,7 @@ class SubvolumeBase(object):
         except MetadataMgrException as me:
             if me.errno == -errno.ENOENT:
                 raise VolumeException(-errno.ENOENT, "snapshot metadata not does not exist")
+            log.error(f"Failed to remove snapshot metadata key={keyname} on snap={snapname} "
+                      f"subvolume={self.subvol_name} group={self.group_name} "
+                      f"reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
             raise VolumeException(-me.args[0], me.args[1])
index 107f1a46818636e9974fa63d559cc64d47c7878d..b5a10dd6c7f61b6647463fc8fd39739d6306f764 100644 (file)
@@ -6,7 +6,8 @@ import errno
 import logging
 import json
 from datetime import datetime
-from typing import List, Dict
+from typing import Any, List, Dict
+from pathlib import Path
 
 import cephfs
 
@@ -119,7 +120,7 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
 
             if isinstance(e, MetadataMgrException):
                 log.error("metadata manager exception: {0}".format(e))
-                e = VolumeException(-errno.EINVAL, "exception in subvolume metadata")
+                e = VolumeException(-errno.EINVAL, f"exception in subvolume metadata: {os.strerror(-e.args[0])}")
             elif isinstance(e, cephfs.Error):
                 e = VolumeException(-e.args[0], e.args[1])
             raise e
@@ -140,12 +141,16 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
             self.metadata_mgr.flush()
 
     def add_clone_failure(self, errno, error_msg):
-        self.metadata_mgr.add_section(MetadataManager.CLONE_FAILURE_SECTION)
-        self.metadata_mgr.update_section(MetadataManager.CLONE_FAILURE_SECTION,
-                                         MetadataManager.CLONE_FAILURE_META_KEY_ERRNO, errno)
-        self.metadata_mgr.update_section(MetadataManager.CLONE_FAILURE_SECTION,
-                                         MetadataManager.CLONE_FAILURE_META_KEY_ERROR_MSG, error_msg)
-        self.metadata_mgr.flush()
+        try:
+            self.metadata_mgr.add_section(MetadataManager.CLONE_FAILURE_SECTION)
+            self.metadata_mgr.update_section(MetadataManager.CLONE_FAILURE_SECTION,
+                                             MetadataManager.CLONE_FAILURE_META_KEY_ERRNO, errno)
+            self.metadata_mgr.update_section(MetadataManager.CLONE_FAILURE_SECTION,
+                                             MetadataManager.CLONE_FAILURE_META_KEY_ERROR_MSG, error_msg)
+            self.metadata_mgr.flush()
+        except MetadataMgrException as me:
+            log.error(f"Failed to add clone failure status clone={self.subvol_name} group={self.group_name} "
+                      f"reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
 
     def create_clone(self, pool, source_volname, source_subvolume, snapname):
         subvolume_type = SubvolumeTypes.TYPE_CLONE
@@ -191,7 +196,7 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
 
             if isinstance(e, MetadataMgrException):
                 log.error("metadata manager exception: {0}".format(e))
-                e = VolumeException(-errno.EINVAL, "exception in subvolume metadata")
+                e = VolumeException(-errno.EINVAL, f"exception in subvolume metadata: {os.strerror(-e.args[0])}")
             elif isinstance(e, cephfs.Error):
                 e = VolumeException(-e.args[0], e.args[1])
             raise e
@@ -738,13 +743,88 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
                 return False
             raise
 
-    def remove_snapshot(self, snapname):
+    def get_pending_clones(self, snapname):
+        pending_clones_info = {"has_pending_clones": "no"}  # type: Dict[str, Any]
+        pending_track_id_list = []
+        pending_clone_list = []
+        index_path = ""
+        orphan_clones_count = 0
+
+        try:
+            if self.has_pending_clones(snapname):
+                pending_track_id_list = self.metadata_mgr.list_all_keys_with_specified_values_from_section('clone snaps', snapname)
+            else:
+                return pending_clones_info
+        except MetadataMgrException as me:
+            if me.errno != -errno.ENOENT:
+                raise VolumeException(-me.args[0], me.args[1])
+
+        try:
+            with open_clone_index(self.fs, self.vol_spec) as index:
+                index_path = index.path.decode('utf-8')
+        except IndexException as e:
+            log.warning("failed to open clone index '{0}' for snapshot '{1}'".format(e, snapname))
+            raise VolumeException(-errno.EINVAL, "failed to open clone index")
+
+        for track_id in pending_track_id_list:
+            try:
+                link_path = self.fs.readlink(os.path.join(index_path, track_id), 4096)
+            except cephfs.Error as e:
+                if e.errno != errno.ENOENT:
+                    raise VolumeException(-e.args[0], e.args[1])
+                else:
+                    try:
+                        # If clone is completed between 'list_all_keys_with_specified_values_from_section'
+                        # and readlink(track_id_path) call then readlink will fail with error ENOENT (2)
+                        # Hence we double check whether track_id is exist in .meta file or not.
+                        value = self.metadata_mgr.get_option('clone snaps', track_id)
+                        # Edge case scenario.
+                        # If track_id for clone exist but path /volumes/_index/clone/{track_id} not found
+                        # then clone is orphan.
+                        orphan_clones_count += 1
+                        continue
+                    except MetadataMgrException as me:
+                        if me.errno != -errno.ENOENT:
+                            raise VolumeException(-me.args[0], me.args[1])
+
+            path = Path(link_path.decode('utf-8'))
+            clone_name = os.path.basename(link_path).decode('utf-8')
+            group_name = os.path.basename(path.parent.absolute())
+            details = {"name": clone_name}  # type: Dict[str, str]
+            if group_name != Group.NO_GROUP_NAME:
+                details["target_group"] = group_name
+            pending_clone_list.append(details)
+
+        if len(pending_clone_list) != 0:
+            pending_clones_info["has_pending_clones"] = "yes"
+            pending_clones_info["pending_clones"] = pending_clone_list
+        else:
+            pending_clones_info["has_pending_clones"] = "no"
+
+        if orphan_clones_count > 0:
+            pending_clones_info["orphan_clones_count"] = orphan_clones_count
+
+        return pending_clones_info
+
+    def remove_snapshot(self, snapname, force=False):
         if self.has_pending_clones(snapname):
             raise VolumeException(-errno.EAGAIN, "snapshot '{0}' has pending clones".format(snapname))
         snappath = self.snapshot_path(snapname)
+        try:
+            self.metadata_mgr.remove_section(self.get_snap_section_name(snapname))
+            self.metadata_mgr.flush()
+        except MetadataMgrException as me:
+            if force:
+                log.info(f"Allowing snapshot removal on failure of it's metadata removal with force on "
+                         f"snap={snapname} subvol={self.subvol_name} group={self.group_name} reason={me.args[1]}, "
+                         f"errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
+                pass
+            else:
+                log.error(f"Failed to remove snapshot metadata on snap={snapname} subvol={self.subvol_name} "
+                          f"group={self.group_name} reason={me.args[1]}, errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
+                raise VolumeException(-errno.EAGAIN,
+                                      f"failed to remove snapshot metadata on snap={snapname} reason={me.args[0]} {me.args[1]}")
         rmsnap(self.fs, snappath)
-        self.metadata_mgr.remove_section(self.get_snap_section_name(snapname))
-        self.metadata_mgr.flush()
 
     def snapshot_info(self, snapname):
         if is_inherited_snap(snapname):
@@ -753,14 +833,15 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
         snappath = self.snapshot_data_path(snapname)
         snap_info = {}
         try:
-            snap_attrs = {'created_at':'ceph.snap.btime', 'size':'ceph.dir.rbytes',
+            snap_attrs = {'created_at':'ceph.snap.btime',
                           'data_pool':'ceph.dir.layout.pool'}
             for key, val in snap_attrs.items():
                 snap_info[key] = self.fs.getxattr(snappath, val)
-            return {'size': int(snap_info['size']),
-                    'created_at': str(datetime.fromtimestamp(float(snap_info['created_at']))),
-                    'data_pool': snap_info['data_pool'].decode('utf-8'),
-                    'has_pending_clones': "yes" if self.has_pending_clones(snapname) else "no"}
+            pending_clones_info = self.get_pending_clones(snapname)
+            info_dict = {'created_at': str(datetime.fromtimestamp(float(snap_info['created_at']))),
+                    'data_pool': snap_info['data_pool'].decode('utf-8')}  # type: Dict[str, Any]
+            info_dict.update(pending_clones_info);
+            return info_dict
         except cephfs.Error as e:
             if e.errno == errno.ENOENT:
                 raise VolumeException(-errno.ENOENT,
@@ -776,6 +857,22 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
                 return []
             raise
 
+    def clean_stale_snapshot_metadata(self):
+        """ Clean up stale snapshot metadata """
+        if self.metadata_mgr.has_snap_metadata_section():
+            snap_list = self.list_snapshots()
+            snaps_with_metadata_list = self.metadata_mgr.list_snaps_with_metadata()
+            for snap_with_metadata in snaps_with_metadata_list:
+                if snap_with_metadata.encode('utf-8') not in snap_list:
+                    try:
+                        self.metadata_mgr.remove_section(self.get_snap_section_name(snap_with_metadata))
+                        self.metadata_mgr.flush()
+                    except MetadataMgrException as me:
+                        log.error(f"Failed to remove stale snap metadata on snap={snap_with_metadata} "
+                                  f"subvol={self.subvol_name} group={self.group_name} reason={me.args[1]}, "
+                                  f"errno:{-me.args[0]}, {os.strerror(-me.args[0])}")
+                        pass
+
     def _add_snap_clone(self, track_id, snapname):
         self.metadata_mgr.add_section("clone snaps")
         self.metadata_mgr.update_section("clone snaps", track_id, snapname)
index bfebd24e3bf225c71ed02d2598038cb9ee6b6e27..03085d049713f2c24d1742455c51a805b9ce69fc 100644 (file)
@@ -198,7 +198,7 @@ class SubvolumeV2(SubvolumeV1):
 
             if isinstance(e, MetadataMgrException):
                 log.error("metadata manager exception: {0}".format(e))
-                e = VolumeException(-errno.EINVAL, "exception in subvolume metadata")
+                e = VolumeException(-errno.EINVAL, f"exception in subvolume metadata: {os.strerror(-e.args[0])}")
             elif isinstance(e, cephfs.Error):
                 e = VolumeException(-e.args[0], e.args[1])
             raise e
@@ -252,7 +252,7 @@ class SubvolumeV2(SubvolumeV1):
 
             if isinstance(e, MetadataMgrException):
                 log.error("metadata manager exception: {0}".format(e))
-                e = VolumeException(-errno.EINVAL, "exception in subvolume metadata")
+                e = VolumeException(-errno.EINVAL, f"exception in subvolume metadata: {os.strerror(-e.args[0])}")
             elif isinstance(e, cephfs.Error):
                 e = VolumeException(-e.args[0], e.args[1])
             raise e
@@ -385,8 +385,8 @@ class SubvolumeV2(SubvolumeV1):
 
         return {'type': self.subvol_type.value, 'features': self.features, 'state': SubvolumeStates.STATE_RETAINED.value}
 
-    def remove_snapshot(self, snapname):
-        super(SubvolumeV2, self).remove_snapshot(snapname)
+    def remove_snapshot(self, snapname, force=False):
+        super(SubvolumeV2, self).remove_snapshot(snapname, force)
         if self.purgeable:
             self.trash_base_dir()
             # tickle the volume purge job to purge this entry, using ESTALE
index 9ef06fd25e992fcd673a1317a574c23e56360f56..e6e374992fb0bf6bd090a117bfaf870743f7cfed 100644 (file)
@@ -1,6 +1,6 @@
 import errno
 import logging
-import sys
+import os
 
 from typing import List, Tuple
 
@@ -12,11 +12,11 @@ from .lock import GlobalLock
 from ..exception import VolumeException
 from ..fs_util import create_pool, remove_pool, rename_pool, create_filesystem, \
     remove_filesystem, rename_filesystem, create_mds, volume_exists
+from .trash import Trash
 from mgr_util import open_filesystem, CephfsConnectionException
 
 log = logging.getLogger(__name__)
 
-
 def gen_pool_names(volname):
     """
     return metadata and data pool name (from a filesystem/volume name) as a tuple
@@ -55,6 +55,22 @@ def get_pool_names(mgr, volname):
     data_pools = [pools[id] for id in data_pool_ids]
     return metadata_pool, data_pools
 
+def get_pool_ids(mgr, volname):
+    """
+    return metadata and data pools (list) id of volume as a tuple
+    """
+    fs_map = mgr.get("fs_map")
+    metadata_pool_id = None
+    data_pool_ids = [] # type: List[int]
+    for f in fs_map['filesystems']:
+        if volname == f['mdsmap']['fs_name']:
+            metadata_pool_id = f['mdsmap']['metadata_pool']
+            data_pool_ids = f['mdsmap']['data_pools']
+            break
+    if metadata_pool_id is None:
+        return None, None
+    return metadata_pool_id, data_pool_ids
+
 def create_volume(mgr, volname, placement):
     """
     create volume  (pool, filesystem and mds)
@@ -228,6 +244,20 @@ def list_volumes(mgr):
     return result
 
 
+def get_pending_subvol_deletions_count(path):
+    """
+    Get the number of pending subvolumes deletions.
+    """
+    trashdir = os.path.join(path, Trash.GROUP_NAME)
+    try:
+        num_pending_subvol_del = len(os.listdir(trashdir))
+    except OSError as e:
+        if e.errno == errno.ENOENT:
+            num_pending_subvol_del = 0
+
+    return {'pending_subvolume_deletions': num_pending_subvol_del}
+
+
 @contextmanager
 def open_volume(vc, volname):
     """
index 422359e03c9ea7a1e6ce49d888ec8568d4b659de..a3ba1308bca0be3de099d200428304f1ec71c3bb 100644 (file)
@@ -1,3 +1,9 @@
+from .operations.index import Index
+from .operations.group import Group
+from .operations.trash import Trash
+from .operations.versions.subvolume_base import SubvolumeBase
+
+
 class VolSpec(object):
     """
     specification of a "volume" -- base directory and various prefixes.
@@ -9,6 +15,8 @@ class VolSpec(object):
     DEFAULT_NS_PREFIX = "fsvolumens_"
     # default mode for subvol prefix and group
     DEFAULT_MODE = 0o755
+    # internal directories
+    INTERNAL_DIRS = [Group.NO_GROUP_NAME, Index.GROUP_NAME, Trash.GROUP_NAME, SubvolumeBase.LEGACY_CONF_DIR]
 
     def __init__(self, snapshot_prefix, subvolume_prefix=None, pool_ns_prefix=None):
         self.snapshot_prefix = snapshot_prefix
index 18c5da222fe15c8d3a0f472d4830fcf4b42739a3..335d76a809ab13db72128cd83eabbf75b10c589e 100644 (file)
@@ -1,17 +1,19 @@
 import json
 import errno
 import logging
+import os
 from typing import TYPE_CHECKING
 
 import cephfs
 
 from mgr_util import CephfsClient
 
-from .fs_util import listdir
+from .fs_util import listdir, has_subdir
 
-from .operations.volume import create_volume, \
-    delete_volume, rename_volume, list_volumes, open_volume, get_pool_names
-from .operations.group import open_group, create_group, remove_group, open_group_unique
+from .operations.group import open_group, create_group, remove_group, \
+    open_group_unique, set_group_attrs
+from .operations.volume import create_volume, delete_volume, rename_volume, \
+    list_volumes, open_volume, get_pool_names, get_pool_ids, get_pending_subvol_deletions_count
 from .operations.subvolume import open_subvol, create_subvol, remove_subvol, \
     create_clone
 from .operations.trash import Trash
@@ -147,6 +149,51 @@ class VolumeClient(CephfsClient["Module"]):
 
         return rename_volume(self.mgr, volname, newvolname)
 
+    def volume_info(self, **kwargs):
+        ret     = None
+        volname = kwargs['vol_name']
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                path = self.volspec.base_dir
+                vol_info_dict = {}
+                try:
+                    st = fs_handle.statx(path.encode('utf-8'), cephfs.CEPH_STATX_SIZE,
+                                         cephfs.AT_SYMLINK_NOFOLLOW)
+
+                    usedbytes = st['size']
+                    vol_info_dict = get_pending_subvol_deletions_count(path)
+                    vol_info_dict['used_size'] = int(usedbytes)
+                except cephfs.Error as e:
+                    if e.args[0] == errno.ENOENT:
+                        pass
+                df = self.mgr.get("df")
+                pool_stats = dict([(p['id'], p['stats']) for p in df['pools']])
+                osdmap = self.mgr.get("osd_map")
+                pools = dict([(p['pool'], p) for p in osdmap['pools']])
+                metadata_pool_id, data_pool_ids = get_pool_ids(self.mgr, volname)
+                vol_info_dict["pools"] = {"metadata": [], "data": []}
+                for pool_id in [metadata_pool_id] + data_pool_ids:
+                    if pool_id == metadata_pool_id:
+                        pool_type = "metadata"
+                    else:
+                        pool_type = "data"
+                    vol_info_dict["pools"][pool_type].append({
+                                    'name': pools[pool_id]['pool_name'],
+                                    'used': pool_stats[pool_id]['bytes_used'],
+                                    'avail': pool_stats[pool_id]['max_avail']})
+
+                mon_addr_lst = []
+                mon_map_mons = self.mgr.get('mon_map')['mons']
+                for mon in mon_map_mons:
+                    ip_port = mon['addr'].split("/")[0]
+                    mon_addr_lst.append(ip_port)
+                vol_info_dict["mon_addrs"] = mon_addr_lst
+                ret = 0, json.dumps(vol_info_dict, indent=4, sort_keys=True), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     ### subvolume operations
 
     def _create_subvolume(self, fs_handle, volname, group, subvolname, **kwargs):
@@ -465,6 +512,28 @@ class VolumeClient(CephfsClient["Module"]):
             ret = self.volume_exception_to_retval(ve)
         return ret
 
+    def subvolume_exists(self, **kwargs):
+        volname = kwargs['vol_name']
+        groupname = kwargs['group_name']
+        ret = 0, "", ""
+        volume_exists = False
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                volume_exists = True
+                with open_group(fs_handle, self.volspec, groupname) as group:
+                    res = group.has_subvolumes()
+                    if res:
+                        ret = 0, "subvolume exists", ""
+                    else:
+                        ret = 0, "no subvolume exists", ""
+        except VolumeException as ve:
+            if volume_exists and ve.errno == -errno.ENOENT:
+                ret = 0, "no subvolume exists", ""
+            else:
+                ret = self.volume_exception_to_retval(ve)
+        return ret
+
     ### subvolume snapshot
 
     def create_subvolume_snapshot(self, **kwargs):
@@ -495,7 +564,7 @@ class VolumeClient(CephfsClient["Module"]):
             with open_volume(self, volname) as fs_handle:
                 with open_group(fs_handle, self.volspec, groupname) as group:
                     with open_subvol(self.mgr, fs_handle, self.volspec, group, subvolname, SubvolumeOpType.SNAP_REMOVE) as subvolume:
-                        subvolume.remove_snapshot(snapname)
+                        subvolume.remove_snapshot(snapname, force)
         except VolumeException as ve:
             # ESTALE serves as an error to state that subvolume is currently stale due to internal removal and,
             # we should tickle the purge jobs to purge the same
@@ -738,6 +807,7 @@ class VolumeClient(CephfsClient["Module"]):
         ret       = 0, "", ""
         volname    = kwargs['vol_name']
         groupname = kwargs['group_name']
+        size       = kwargs['size']
         pool      = kwargs['pool_layout']
         uid       = kwargs['uid']
         gid       = kwargs['gid']
@@ -746,13 +816,20 @@ class VolumeClient(CephfsClient["Module"]):
         try:
             with open_volume(self, volname) as fs_handle:
                 try:
-                    with open_group(fs_handle, self.volspec, groupname):
+                    with open_group(fs_handle, self.volspec, groupname) as group:
                         # idempotent creation -- valid.
-                        pass
+                        attrs = {
+                            'uid': uid,
+                            'gid': gid,
+                            'mode': octal_str_to_decimal_int(mode),
+                            'data_pool': pool,
+                            'quota': size
+                        }
+                        set_group_attrs(fs_handle, group.path, attrs)
                 except VolumeException as ve:
                     if ve.errno == -errno.ENOENT:
                         oct_mode = octal_str_to_decimal_int(mode)
-                        create_group(fs_handle, self.volspec, groupname, pool, oct_mode, uid, gid)
+                        create_group(fs_handle, self.volspec, groupname, size, pool, oct_mode, uid, gid)
                     else:
                         raise
         except VolumeException as ve:
@@ -774,6 +851,46 @@ class VolumeClient(CephfsClient["Module"]):
                 ret = self.volume_exception_to_retval(ve)
         return ret
 
+    def subvolumegroup_info(self, **kwargs):
+        ret        = None
+        volname    = kwargs['vol_name']
+        groupname  = kwargs['group_name']
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                with open_group(fs_handle, self.volspec, groupname) as group:
+                        mon_addr_lst = []
+                        mon_map_mons = self.mgr.get('mon_map')['mons']
+                        for mon in mon_map_mons:
+                            ip_port = mon['addr'].split("/")[0]
+                            mon_addr_lst.append(ip_port)
+
+                        group_info_dict = group.info()
+                        group_info_dict["mon_addrs"] = mon_addr_lst
+                        ret = 0, json.dumps(group_info_dict, indent=4, sort_keys=True), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
+    def resize_subvolume_group(self, **kwargs):
+        ret        = 0, "", ""
+        volname    = kwargs['vol_name']
+        groupname  = kwargs['group_name']
+        newsize    = kwargs['new_size']
+        noshrink   = kwargs['no_shrink']
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                with open_group(fs_handle, self.volspec, groupname) as group:
+                        nsize, usedbytes = group.resize(newsize, noshrink)
+                        ret = 0, json.dumps(
+                            [{'bytes_used': usedbytes},{'bytes_quota': nsize},
+                             {'bytes_pcent': "undefined" if nsize == 0 else '{0:.2f}'.format((float(usedbytes) / nsize) * 100.0)}],
+                            indent=4, sort_keys=True), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     def getpath_subvolume_group(self, **kwargs):
         volname    = kwargs['vol_name']
         groupname  = kwargs['group_name']
@@ -792,7 +909,7 @@ class VolumeClient(CephfsClient["Module"]):
         try:
             with open_volume(self, volname) as fs_handle:
                 volume_exists = True
-                groups = listdir(fs_handle, self.volspec.base_dir, filter_entries=[Trash.GROUP_NAME.encode('utf-8')])
+                groups = listdir(fs_handle, self.volspec.base_dir, filter_entries=[dir.encode('utf-8') for dir in self.volspec.INTERNAL_DIRS])
                 ret = 0, name_to_json(groups), ""
         except VolumeException as ve:
             if not ve.errno == -errno.ENOENT or not volume_exists:
@@ -815,6 +932,27 @@ class VolumeClient(CephfsClient["Module"]):
             ret = self.volume_exception_to_retval(ve)
         return ret
 
+    def subvolume_group_exists(self, **kwargs):
+        volname = kwargs['vol_name']
+        ret = 0, "", ""
+        volume_exists = False
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                volume_exists = True
+                res = has_subdir(fs_handle, self.volspec.base_dir, filter_entries=[
+                                 dir.encode('utf-8') for dir in self.volspec.INTERNAL_DIRS])
+                if res:
+                    ret = 0, "subvolumegroup exists", ""
+                else:
+                    ret = 0, "no subvolumegroup exists", ""
+        except VolumeException as ve:
+            if volume_exists and ve.errno == -errno.ENOENT:
+                ret = 0, "no subvolumegroup exists", ""
+            else:
+                ret = self.volume_exception_to_retval(ve)
+        return ret
+
     ### group snapshot
 
     def create_subvolume_group_snapshot(self, **kwargs):
index eb4a82f16565b1603bcfaedb5d303763d3b22883..752dde33e3e6badbbffee67c03edd1ece9912f8d 100644 (file)
@@ -68,6 +68,12 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "Rename a CephFS volume by passing --yes-i-really-mean-it flag",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs volume info '
+                   'name=vol_name,type=CephString ',
+            'desc': "Get the information of a CephFS volume",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolumegroup ls '
             'name=vol_name,type=CephString ',
@@ -78,6 +84,7 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'cmd': 'fs subvolumegroup create '
                    'name=vol_name,type=CephString '
                    f'name=group_name,type=CephString,goodchars={goodchars} '
+                   'name=size,type=CephInt,req=false '
                    'name=pool_layout,type=CephString,req=false '
                    'name=uid,type=CephInt,req=false '
                    'name=gid,type=CephInt,req=false '
@@ -94,6 +101,28 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "Delete a CephFS subvolume group in a volume",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolumegroup info '
+                   'name=vol_name,type=CephString '
+                   'name=group_name,type=CephString ',
+            'desc': "Get the metadata of a CephFS subvolume group in a volume, ",
+            'perm': 'r'
+        },
+        {
+            'cmd': 'fs subvolumegroup resize '
+                   'name=vol_name,type=CephString '
+                   'name=group_name,type=CephString '
+                   'name=new_size,type=CephString,req=true '
+                   'name=no_shrink,type=CephBool,req=false ',
+            'desc': "Resize a CephFS subvolume group",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'fs subvolumegroup exist '
+                   'name=vol_name,type=CephString ',
+            'desc': "Check a volume for the existence of subvolumegroup",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolume ls '
                    'name=vol_name,type=CephString '
@@ -193,6 +222,14 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                     "and optionally, in a specific subvolume group",
             'perm': 'r'
         },
+        {
+            'cmd': 'fs subvolume exist '
+                   'name=vol_name,type=CephString '
+                   'name=group_name,type=CephString,req=false ',
+            'desc': "Check a volume for the existence of a subvolume, "
+                    "optionally in a specified subvolume group",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolume metadata set '
                    'name=vol_name,type=CephString '
@@ -516,13 +553,17 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                         cmd['new_vol_name'],
                                         cmd.get('yes_i_really_mean_it', False))
 
+    @mgr_cmd_wrap
+    def _cmd_fs_volume_info(self, inbuf, cmd):
+        return self.vc.volume_info(vol_name=cmd['vol_name'])
+
     @mgr_cmd_wrap
     def _cmd_fs_subvolumegroup_create(self, inbuf, cmd):
         """
         :return: a 3-tuple of return code(int), empty string(str), error message (str)
         """
         return self.vc.create_subvolume_group(
-            vol_name=cmd['vol_name'], group_name=cmd['group_name'],
+            vol_name=cmd['vol_name'], group_name=cmd['group_name'], size=cmd.get('size', None),
             pool_layout=cmd.get('pool_layout', None), mode=cmd.get('mode', '755'),
             uid=cmd.get('uid', None), gid=cmd.get('gid', None))
 
@@ -536,9 +577,24 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                               force=cmd.get('force', False))
 
     @mgr_cmd_wrap
+    def _cmd_fs_subvolumegroup_info(self, inbuf, cmd):
+        return self.vc.subvolumegroup_info(vol_name=cmd['vol_name'],
+                                           group_name=cmd['group_name'])
+
+    @mgr_cmd_wrap
+    def _cmd_fs_subvolumegroup_resize(self, inbuf, cmd):
+        return self.vc.resize_subvolume_group(vol_name=cmd['vol_name'],
+                                              group_name=cmd['group_name'],
+                                              new_size=cmd['new_size'],
+                                              no_shrink=cmd.get('no_shrink', False))
+    @mgr_cmd_wrap
     def _cmd_fs_subvolumegroup_ls(self, inbuf, cmd):
         return self.vc.list_subvolume_groups(vol_name=cmd['vol_name'])
 
+    @mgr_cmd_wrap
+    def _cmd_fs_subvolumegroup_exist(self, inbuf, cmd):
+        return self.vc.subvolume_group_exists(vol_name=cmd['vol_name'])
+
     @mgr_cmd_wrap
     def _cmd_fs_subvolume_create(self, inbuf, cmd):
         """
@@ -629,6 +685,11 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                       sub_name=cmd['sub_name'],
                                       group_name=cmd.get('group_name', None))
 
+    @mgr_cmd_wrap
+    def _cmd_fs_subvolume_exist(self, inbuf, cmd):
+        return self.vc.subvolume_exists(vol_name=cmd['vol_name'],
+                                        group_name=cmd.get('group_name', None))
+    
     @mgr_cmd_wrap
     def _cmd_fs_subvolume_metadata_set(self, inbuf, cmd):
         return self.vc.set_user_metadata(vol_name=cmd['vol_name'],
index dd8724267777820547d1d720d542865d49c36725..9be03df108d6cc198e2e2e8a59b1e8763e28ea35 100644 (file)
@@ -2,7 +2,7 @@ import enum
 import yaml
 
 from ceph.deployment.inventory import Device
-from ceph.deployment.service_spec import ServiceSpec, PlacementSpec
+from ceph.deployment.service_spec import ServiceSpec, PlacementSpec, CustomConfig
 from ceph.deployment.hostspec import SpecValidationError
 
 try:
@@ -150,7 +150,7 @@ class DriveGroupSpec(ServiceSpec):
         "data_devices", "db_devices", "wal_devices", "journal_devices",
         "data_directories", "osds_per_device", "objectstore", "osd_id_claims",
         "journal_size", "unmanaged", "filter_logic", "preview_only", "extra_container_args",
-        "data_allocate_fraction", "method"
+        "data_allocate_fraction", "method", "crush_device_class", "config",
     ]
 
     def __init__(self,
@@ -177,13 +177,18 @@ class DriveGroupSpec(ServiceSpec):
                  extra_container_args=None,  # type: Optional[List[str]]
                  data_allocate_fraction=None,  # type: Optional[float]
                  method=None,  # type: Optional[OSDMethod]
+                 crush_device_class=None,  # type: Optional[str]
+                 config=None,  # type: Optional[Dict[str, str]]
+                 custom_configs=None,  # type: Optional[List[CustomConfig]]
                  ):
         assert service_type is None or service_type == 'osd'
         super(DriveGroupSpec, self).__init__('osd', service_id=service_id,
                                              placement=placement,
+                                             config=config,
                                              unmanaged=unmanaged,
                                              preview_only=preview_only,
-                                             extra_container_args=extra_container_args)
+                                             extra_container_args=extra_container_args,
+                                             custom_configs=custom_configs)
 
         #: A :class:`ceph.deployment.drive_group.DeviceSelection`
         self.data_devices = data_devices
@@ -242,6 +247,9 @@ class DriveGroupSpec(ServiceSpec):
 
         self.method = method
 
+        #: Crush device class to assign to OSDs
+        self.crush_device_class = crush_device_class
+
     @classmethod
     def _from_json_impl(cls, json_drive_group):
         # type: (dict) -> DriveGroupSpec
index 1bf686f97cf6b9e516db9568609f552f1fed3da6..cb7e4de34842484f3ce444c22638fe92d2c6cfcd 100644 (file)
@@ -13,7 +13,7 @@ def assert_valid_host(name: str) -> None:
             assert len(part) <= 63, '.-delimited name component must not be more than 63 chars'
             assert p.match(part), 'name component must include only a-z, 0-9, and -'
     except AssertionError as e:
-        raise SpecValidationError(str(e))
+        raise SpecValidationError(str(e) + f'. Got "{name}"')
 
 
 class SpecValidationError(Exception):
index c23783c5da0e8a4415ea2e1a48d980c54a2ab2b9..72f3efa2e9132446cb3bd8811312d0f4c2974852 100644 (file)
@@ -1,4 +1,5 @@
 import fnmatch
+import os
 import re
 import enum
 from collections import OrderedDict
@@ -420,6 +421,58 @@ tPlacementSpec(hostname='host2', network='', name='')])
 _service_spec_from_json_validate = True
 
 
+class CustomConfig:
+    """
+    Class to specify custom config files to be mounted in daemon's container
+    """
+
+    _fields = ['content', 'mount_path']
+
+    def __init__(self, content: str, mount_path: str) -> None:
+        self.content: str = content
+        self.mount_path: str = mount_path
+        self.validate()
+
+    def to_json(self) -> Dict[str, Any]:
+        return {
+            'content': self.content,
+            'mount_path': self.mount_path,
+        }
+
+    @classmethod
+    def from_json(cls, data: Dict[str, Any]) -> "CustomConfig":
+        for k in cls._fields:
+            if k not in data:
+                raise SpecValidationError(f'CustomConfig must have "{k}" field')
+        for k in data.keys():
+            if k not in cls._fields:
+                raise SpecValidationError(f'CustomConfig got unknown field "{k}"')
+        return cls(**data)
+
+    @property
+    def filename(self) -> str:
+        return os.path.basename(self.mount_path)
+
+    def __eq__(self, other: Any) -> bool:
+        if isinstance(other, CustomConfig):
+            return (
+                self.content == other.content
+                and self.mount_path == other.mount_path
+            )
+        return NotImplemented
+
+    def __repr__(self) -> str:
+        return f'CustomConfig({self.mount_path})'
+
+    def validate(self) -> None:
+        if not isinstance(self.content, str):
+            raise SpecValidationError(
+                    f'CustomConfig content must be a string. Got {type(self.content)}')
+        if not isinstance(self.mount_path, str):
+            raise SpecValidationError(
+                    f'CustomConfig content must be a string. Got {type(self.mount_path)}')
+
+
 @contextmanager
 def service_spec_allow_invalid_from_json() -> Iterator[None]:
     """
@@ -500,6 +553,7 @@ class ServiceSpec(object):
                  preview_only: bool = False,
                  networks: Optional[List[str]] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
 
         #: See :ref:`orchestrator-cli-placement-spec`.
@@ -539,6 +593,7 @@ class ServiceSpec(object):
             self.config = {k.replace(' ', '_'): v for k, v in config.items()}
 
         self.extra_container_args: Optional[List[str]] = extra_container_args
+        self.custom_configs: Optional[List[CustomConfig]] = custom_configs
 
     @classmethod
     @handle_type_error
@@ -626,6 +681,8 @@ class ServiceSpec(object):
         for k, v in json_spec.items():
             if k == 'placement':
                 v = PlacementSpec.from_json(v)
+            if k == 'custom_configs':
+                v = [CustomConfig.from_json(c) for c in v]
             if k == 'spec':
                 args.update(v)
                 continue
@@ -664,6 +721,8 @@ class ServiceSpec(object):
             ret['networks'] = self.networks
         if self.extra_container_args:
             ret['extra_container_args'] = self.extra_container_args
+        if self.custom_configs:
+            ret['custom_configs'] = [c.to_json() for c in self.custom_configs]
 
         c = {}
         for key, val in sorted(self.__dict__.items(), key=lambda tpl: tpl[0]):
@@ -740,12 +799,14 @@ class NFSServiceSpec(ServiceSpec):
                  networks: Optional[List[str]] = None,
                  port: Optional[int] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'nfs'
         super(NFSServiceSpec, self).__init__(
             'nfs', service_id=service_id,
             placement=placement, unmanaged=unmanaged, preview_only=preview_only,
-            config=config, networks=networks, extra_container_args=extra_container_args)
+            config=config, networks=networks, extra_container_args=extra_container_args,
+            custom_configs=custom_configs)
 
         self.port = port
 
@@ -803,6 +864,7 @@ class RGWSpec(ServiceSpec):
                  networks: Optional[List[str]] = None,
                  subcluster: Optional[str] = None,  # legacy, only for from_json on upgrade
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'rgw', service_type
 
@@ -814,7 +876,7 @@ class RGWSpec(ServiceSpec):
             'rgw', service_id=service_id,
             placement=placement, unmanaged=unmanaged,
             preview_only=preview_only, config=config, networks=networks,
-            extra_container_args=extra_container_args)
+            extra_container_args=extra_container_args, custom_configs=custom_configs)
 
         #: The RGW realm associated with this service. Needs to be manually created
         self.rgw_realm: Optional[str] = rgw_realm
@@ -872,13 +934,15 @@ class IscsiServiceSpec(ServiceSpec):
                  config: Optional[Dict[str, str]] = None,
                  networks: Optional[List[str]] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'iscsi'
         super(IscsiServiceSpec, self).__init__('iscsi', service_id=service_id,
                                                placement=placement, unmanaged=unmanaged,
                                                preview_only=preview_only,
                                                config=config, networks=networks,
-                                               extra_container_args=extra_container_args)
+                                               extra_container_args=extra_container_args,
+                                               custom_configs=custom_configs)
 
         #: RADOS pool where ceph-iscsi config data is stored.
         self.pool = pool
@@ -937,17 +1001,21 @@ class IngressSpec(ServiceSpec):
                  enable_stats: Optional[bool] = None,
                  keepalived_password: Optional[str] = None,
                  virtual_ip: Optional[str] = None,
+                 virtual_ips_list: Optional[List[str]] = None,
                  virtual_interface_networks: Optional[List[str]] = [],
                  unmanaged: bool = False,
                  ssl: bool = False,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'ingress'
+
         super(IngressSpec, self).__init__(
             'ingress', service_id=service_id,
             placement=placement, config=config,
             networks=networks,
-            extra_container_args=extra_container_args
+            extra_container_args=extra_container_args,
+            custom_configs=custom_configs
         )
         self.backend_service = backend_service
         self.frontend_port = frontend_port
@@ -961,6 +1029,7 @@ class IngressSpec(ServiceSpec):
         self.monitor_password = monitor_password
         self.keepalived_password = keepalived_password
         self.virtual_ip = virtual_ip
+        self.virtual_ips_list = virtual_ips_list
         self.virtual_interface_networks = virtual_interface_networks or []
         self.unmanaged = unmanaged
         self.ssl = ssl
@@ -984,9 +1053,12 @@ class IngressSpec(ServiceSpec):
         if not self.monitor_port:
             raise SpecValidationError(
                 'Cannot add ingress: No monitor_port specified')
-        if not self.virtual_ip:
+        if not self.virtual_ip and not self.virtual_ips_list:
             raise SpecValidationError(
                 'Cannot add ingress: No virtual_ip provided')
+        if self.virtual_ip is not None and self.virtual_ips_list is not None:
+            raise SpecValidationError(
+                'Cannot add ingress: Single and multiple virtual IPs specified')
 
 
 yaml.add_representer(IngressSpec, ServiceSpec.yaml_representer)
@@ -1070,6 +1142,7 @@ class MonitoringSpec(ServiceSpec):
                  preview_only: bool = False,
                  port: Optional[int] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type in ['grafana', 'node-exporter', 'prometheus', 'alertmanager',
                                 'loki', 'promtail']
@@ -1078,7 +1151,8 @@ class MonitoringSpec(ServiceSpec):
             service_type, service_id,
             placement=placement, unmanaged=unmanaged,
             preview_only=preview_only, config=config,
-            networks=networks, extra_container_args=extra_container_args)
+            networks=networks, extra_container_args=extra_container_args,
+            custom_configs=custom_configs)
 
         self.service_type = service_type
         self.port = port
@@ -1114,13 +1188,14 @@ class AlertManagerSpec(MonitoringSpec):
                  port: Optional[int] = None,
                  secure: bool = False,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'alertmanager'
         super(AlertManagerSpec, self).__init__(
             'alertmanager', service_id=service_id,
             placement=placement, unmanaged=unmanaged,
             preview_only=preview_only, config=config, networks=networks, port=port,
-            extra_container_args=extra_container_args)
+            extra_container_args=extra_container_args, custom_configs=custom_configs)
 
         # Custom configuration.
         #
@@ -1165,13 +1240,14 @@ class GrafanaSpec(MonitoringSpec):
                  port: Optional[int] = None,
                  initial_admin_password: Optional[str] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'grafana'
         super(GrafanaSpec, self).__init__(
             'grafana', service_id=service_id,
             placement=placement, unmanaged=unmanaged,
             preview_only=preview_only, config=config, networks=networks, port=port,
-            extra_container_args=extra_container_args)
+            extra_container_args=extra_container_args, custom_configs=custom_configs)
 
         self.initial_admin_password = initial_admin_password
 
@@ -1219,6 +1295,7 @@ class SNMPGatewaySpec(ServiceSpec):
                  preview_only: bool = False,
                  port: Optional[int] = None,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'snmp-gateway'
 
@@ -1227,7 +1304,8 @@ class SNMPGatewaySpec(ServiceSpec):
             placement=placement,
             unmanaged=unmanaged,
             preview_only=preview_only,
-            extra_container_args=extra_container_args)
+            extra_container_args=extra_container_args,
+            custom_configs=custom_configs)
 
         self.service_type = service_type
         self.snmp_version = snmp_version
@@ -1338,6 +1416,7 @@ class MDSSpec(ServiceSpec):
                  unmanaged: bool = False,
                  preview_only: bool = False,
                  extra_container_args: Optional[List[str]] = None,
+                 custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'mds'
         super(MDSSpec, self).__init__('mds', service_id=service_id,
@@ -1345,7 +1424,8 @@ class MDSSpec(ServiceSpec):
                                       config=config,
                                       unmanaged=unmanaged,
                                       preview_only=preview_only,
-                                      extra_container_args=extra_container_args)
+                                      extra_container_args=extra_container_args,
+                                      custom_configs=custom_configs)
 
     def validate(self) -> None:
         super(MDSSpec, self).validate()
@@ -1355,3 +1435,55 @@ class MDSSpec(ServiceSpec):
 
 
 yaml.add_representer(MDSSpec, ServiceSpec.yaml_representer)
+
+
+class TunedProfileSpec():
+    def __init__(self,
+                 profile_name: str,
+                 placement: Optional[PlacementSpec] = None,
+                 settings: Optional[Dict[str, str]] = None,
+                 ):
+        self.profile_name = profile_name
+        self.placement = placement or PlacementSpec(host_pattern='*')
+        self.settings = settings or {}
+        self._last_updated: str = ''
+
+    @classmethod
+    def from_json(cls, spec: Dict[str, Any]) -> 'TunedProfileSpec':
+        data = {}
+        if 'profile_name' not in spec:
+            raise SpecValidationError('Tuned profile spec must include "profile_name" field')
+        data['profile_name'] = spec['profile_name']
+        if not isinstance(data['profile_name'], str):
+            raise SpecValidationError('"profile_name" field must be a string')
+        if 'placement' in spec:
+            data['placement'] = PlacementSpec.from_json(spec['placement'])
+        if 'settings' in spec:
+            data['settings'] = spec['settings']
+        return cls(**data)
+
+    def to_json(self) -> Dict[str, Any]:
+        res: Dict[str, Any] = {}
+        res['profile_name'] = self.profile_name
+        res['placement'] = self.placement.to_json()
+        res['settings'] = self.settings
+        return res
+
+    def __eq__(self, other: Any) -> bool:
+        if isinstance(other, TunedProfileSpec):
+            if (
+                self.placement == other.placement
+                and self.profile_name == other.profile_name
+                and self.settings == other.settings
+            ):
+                return True
+            return False
+        return NotImplemented
+
+    def __repr__(self) -> str:
+        return f'TunedProfile({self.profile_name})'
+
+    def copy(self) -> 'TunedProfileSpec':
+        # for making deep copies so you can edit the settings in one without affecting the other
+        # mostly for testing purposes
+        return TunedProfileSpec(self.profile_name, self.placement, self.settings.copy())
index 20d36908cac7be7c97b526ea816de0b31dc0eb7d..2d373732c04f1fb44881901aa0e8aaae842c025e 100644 (file)
@@ -109,6 +109,9 @@ class to_ceph_volume(object):
                 cmds[i] += " --yes"
                 cmds[i] += " --no-systemd"
 
+            if self.spec.crush_device_class:
+                cmds[i] += " --crush-device-class {}".format(self.spec.crush_device_class)
+
             if self.preview:
                 cmds[i] += " --report"
                 cmds[i] += " --format json"
index 6d6db311929c5899b40df42de9ae365b671dab5a..12e30ceb04c61d638eae810d6d219a8e34492172 100644 (file)
@@ -912,20 +912,25 @@ connect_to_cluster(rados_t *pcluster)
        return 0;
 }
 
+#define OPT_NOT_FOUND -1
+
 int main(int argc, const char *argv[])
 {
        memset(&rbd_image_data, 0, sizeof(rbd_image_data));
 
-       // librados will filter out -f/-d options from command-line
-       std::map<std::string, bool> filter_args = {
-               {"-f", false},
-               {"-d", false}};
+       // librados will filter out -r/-f/-d options from command-line
+       std::map<std::string, int> filter_options = {
+               {"-r", OPT_NOT_FOUND},
+               {"-f", OPT_NOT_FOUND},
+               {"-d", OPT_NOT_FOUND}};
+
+       std::set<std::string> require_arg_options = {"-r"};
 
        std::vector<const char*> arg_vector;
        for (auto idx = 0; idx < argc; ++idx) {
-               auto it = filter_args.find(argv[idx]);
-               if (it != filter_args.end()) {
-                       it->second = true;
+               auto it = filter_options.find(argv[idx]);
+               if (it != filter_options.end()) {
+                       it->second = idx;
                }
                arg_vector.push_back(argv[idx]);
        }
@@ -941,9 +946,13 @@ int main(int argc, const char *argv[])
                exit(1);
        }
 
-       for (auto& it : filter_args) {
-               if (it.second) {
+       for (auto& it : filter_options) {
+               if (it.second != OPT_NOT_FOUND) {
                        arg_vector.push_back(it.first.c_str());
+                       if (require_arg_options.count(it.first) &&
+                           it.second + 1 < argc) {
+                               arg_vector.push_back(argv[it.second + 1]);
+                       }
                }
        }
 
index a3f8f38cae944c7e1e9ed343e4793c916f8d4681..a18ac23d7807b541a1af4df271121d5d40487e15 100644 (file)
@@ -8993,10 +8993,11 @@ next:
   if (opt_cmd == OPT::SYNC_GROUP_FLOW_CREATE) {
     CHECK_TRUE(require_opt(opt_group_id), "ERROR: --group-id not specified", EINVAL);
     CHECK_TRUE(require_opt(opt_flow_id), "ERROR: --flow-id not specified", EINVAL);
-    CHECK_TRUE(require_opt(opt_flow_type,
-                           (symmetrical_flow_opt(*opt_flow_type) ||
-                            directional_flow_opt(*opt_flow_type))),
-                           "ERROR: --flow-type not specified or invalid (options: symmetrical, directional)", EINVAL);
+    CHECK_TRUE(require_opt(opt_flow_type),
+                           "ERROR: --flow-type not specified (options: symmetrical, directional)", EINVAL);
+    CHECK_TRUE((symmetrical_flow_opt(*opt_flow_type) ||
+                            directional_flow_opt(*opt_flow_type)),
+                           "ERROR: --flow-type invalid (options: symmetrical, directional)", EINVAL);
 
     SyncPolicyContext sync_policy_ctx(zonegroup_id, zonegroup_name, opt_bucket);
     ret = sync_policy_ctx.init();
@@ -9043,10 +9044,11 @@ next:
   if (opt_cmd == OPT::SYNC_GROUP_FLOW_REMOVE) {
     CHECK_TRUE(require_opt(opt_group_id), "ERROR: --group-id not specified", EINVAL);
     CHECK_TRUE(require_opt(opt_flow_id), "ERROR: --flow-id not specified", EINVAL);
-    CHECK_TRUE(require_opt(opt_flow_type,
-                           (symmetrical_flow_opt(*opt_flow_type) ||
-                            directional_flow_opt(*opt_flow_type))),
-                           "ERROR: --flow-type not specified or invalid (options: symmetrical, directional)", EINVAL);
+    CHECK_TRUE(require_opt(opt_flow_type),
+                           "ERROR: --flow-type not specified (options: symmetrical, directional)", EINVAL);
+    CHECK_TRUE((symmetrical_flow_opt(*opt_flow_type) ||
+                            directional_flow_opt(*opt_flow_type)),
+                           "ERROR: --flow-type invalid (options: symmetrical, directional)", EINVAL);
 
     SyncPolicyContext sync_policy_ctx(zonegroup_id, zonegroup_name, opt_bucket);
     ret = sync_policy_ctx.init();
index dfb338818d733b79b23b759601d0f5cd347e8734..369627c6d7b8b5b8ac7788a6c042e5971809d5d7 100644 (file)
@@ -11,6 +11,7 @@
 #include "rgw_http_client.h"
 #include "rgw_keystone.h"
 #include "rgw_sal.h"
+#include "rgw_log.h"
 
 #include "include/str_list.h"
 
@@ -513,6 +514,9 @@ bool rgw::auth::WebIdentityApplier::is_identity(const idset_t& ids) const
     return false;
 }
 
+const std::string rgw::auth::RemoteApplier::AuthInfo::NO_SUBUSER;
+const std::string rgw::auth::RemoteApplier::AuthInfo::NO_ACCESS_KEY;
+
 /* rgw::auth::RemoteAuthApplier */
 uint32_t rgw::auth::RemoteApplier::get_perms_from_aclspec(const DoutPrefixProvider* dpp, const aclspec_t& aclspec) const
 {
@@ -662,6 +666,12 @@ void rgw::auth::RemoteApplier::create_account(const DoutPrefixProvider* dpp,
   }
 }
 
+void rgw::auth::RemoteApplier::write_ops_log_entry(rgw_log_entry& entry) const
+{
+  entry.access_key_id = info.access_key_id;
+  entry.subuser = info.subuser;
+}
+
 /* TODO(rzarzynski): we need to handle display_name changes. */
 void rgw::auth::RemoteApplier::load_acct_info(const DoutPrefixProvider* dpp, RGWUserInfo& user_info) const      /* out */
 {
@@ -723,6 +733,7 @@ void rgw::auth::RemoteApplier::load_acct_info(const DoutPrefixProvider* dpp, RGW
 /* rgw::auth::LocalApplier */
 /* static declaration */
 const std::string rgw::auth::LocalApplier::NO_SUBUSER;
+const std::string rgw::auth::LocalApplier::NO_ACCESS_KEY;
 
 uint32_t rgw::auth::LocalApplier::get_perms_from_aclspec(const DoutPrefixProvider* dpp, const aclspec_t& aclspec) const
 {
@@ -801,6 +812,12 @@ void rgw::auth::LocalApplier::load_acct_info(const DoutPrefixProvider* dpp, RGWU
   user_info = this->user_info;
 }
 
+void rgw::auth::LocalApplier::write_ops_log_entry(rgw_log_entry& entry) const
+{
+  entry.access_key_id = access_key_id;
+  entry.subuser = subuser;
+}
+
 void rgw::auth::RoleApplier::to_str(std::ostream& out) const {
   out << "rgw::auth::RoleApplier(role name =" << role.name;
   for (auto& policy: role.role_policies) {
@@ -911,7 +928,7 @@ rgw::auth::AnonymousEngine::authenticate(const DoutPrefixProvider* dpp, const re
     auto apl = \
       apl_factory->create_apl_local(cct, s, user_info,
                                     rgw::auth::LocalApplier::NO_SUBUSER,
-                                    std::nullopt);
+                                    std::nullopt, rgw::auth::LocalApplier::NO_ACCESS_KEY);
     return result_t::grant(std::move(apl));
   }
 }
index db343649cc3d09a5ff72a8e53a85e81e326104d2..50f2d12e424221677148320cb37198f7c45f2fd7 100644 (file)
@@ -18,6 +18,7 @@
 #define RGW_USER_ANON_ID "anonymous"
 
 class RGWCtl;
+struct rgw_log_entry;
 
 namespace rgw {
 namespace auth {
@@ -82,6 +83,9 @@ public:
   virtual std::string get_subuser() const = 0;
 
   virtual std::string get_role_tenant() const { return ""; }
+
+  /* write any auth-specific fields that are safe to expose in the ops log */
+  virtual void write_ops_log_entry(rgw_log_entry& entry) const {};
 };
 
 inline std::ostream& operator<<(std::ostream& out,
@@ -542,6 +546,8 @@ public:
     const uint32_t perm_mask;
     const bool is_admin;
     const uint32_t acct_type;
+    const std::string access_key_id;
+    const std::string subuser;
 
   public:
     enum class acct_privilege_t {
@@ -549,16 +555,23 @@ public:
       IS_PLAIN_ACCT
     };
 
+    static const std::string NO_SUBUSER;
+    static const std::string NO_ACCESS_KEY;
+
     AuthInfo(const rgw_user& acct_user,
              const std::string& acct_name,
              const uint32_t perm_mask,
              const acct_privilege_t level,
+             const std::string access_key_id,
+             const std::string subuser,
              const uint32_t acct_type=TYPE_NONE)
     : acct_user(acct_user),
       acct_name(acct_name),
       perm_mask(perm_mask),
       is_admin(acct_privilege_t::IS_ADMIN_ACCT == level),
-      acct_type(acct_type) {
+      acct_type(acct_type),
+      access_key_id(access_key_id),
+      subuser(subuser) {
     }
   };
 
@@ -608,6 +621,7 @@ public:
   uint32_t get_perm_mask() const override { return info.perm_mask; }
   void to_str(std::ostream& out) const override;
   void load_acct_info(const DoutPrefixProvider* dpp, RGWUserInfo& user_info) const override; /* out */
+  void write_ops_log_entry(rgw_log_entry& entry) const override;
   uint32_t get_identity_type() const override { return info.acct_type; }
   std::string get_acct_name() const override { return info.acct_name; }
   std::string get_subuser() const override { return {}; }
@@ -636,20 +650,24 @@ protected:
   const RGWUserInfo user_info;
   const std::string subuser;
   uint32_t perm_mask;
+  const std::string access_key_id;
 
   uint32_t get_perm_mask(const std::string& subuser_name,
                          const RGWUserInfo &uinfo) const;
 
 public:
   static const std::string NO_SUBUSER;
+  static const std::string NO_ACCESS_KEY;
 
   LocalApplier(CephContext* const cct,
                const RGWUserInfo& user_info,
                std::string subuser,
-               const std::optional<uint32_t>& perm_mask)
+               const std::optional<uint32_t>& perm_mask,
+               const std::string access_key_id)
     : user_info(user_info),
       subuser(std::move(subuser)),
-      perm_mask(perm_mask.value_or(RGW_PERM_INVALID)) {
+      perm_mask(perm_mask.value_or(RGW_PERM_INVALID)),
+      access_key_id(access_key_id) {
   }
 
 
@@ -669,6 +687,7 @@ public:
   uint32_t get_identity_type() const override { return TYPE_RGW; }
   std::string get_acct_name() const override { return {}; }
   std::string get_subuser() const override { return subuser; }
+  void write_ops_log_entry(rgw_log_entry& entry) const override;
 
   struct Factory {
     virtual ~Factory() {}
@@ -676,7 +695,8 @@ public:
                                       const req_state* s,
                                       const RGWUserInfo& user_info,
                                       const std::string& subuser,
-                                      const std::optional<uint32_t>& perm_mask) const = 0;
+                                      const std::optional<uint32_t>& perm_mask,
+                                      const std::string& access_key_id) const = 0;
     };
 };
 
index 063208fc91209a665c18428bb30865eebb0dce2b..2434ca2781e507e8b0afebabf9b7ab5e7a245e01 100644 (file)
@@ -118,6 +118,10 @@ public:
   void modify_request_state(const DoutPrefixProvider* dpp, req_state * s) const override {     /* in/out */
     return get_decoratee().modify_request_state(dpp, s);
   }
+
+  void write_ops_log_entry(rgw_log_entry& entry) const override {
+    return get_decoratee().write_ops_log_entry(entry);
+  }
 };
 
 
index 71de604362bf032c30f61c685f9a9a7e8cbdba2c..10d8d82738860e6ae1dca24fcc91c14639d97d3a 100644 (file)
@@ -134,8 +134,10 @@ TokenEngine::get_creds_info(const TokenEngine::token_envelope_t& token,
      * the access rights through the perm_mask. At least at this layer. */
     RGW_PERM_FULL_CONTROL,
     level,
-    TYPE_KEYSTONE,
-  };
+    rgw::auth::RemoteApplier::AuthInfo::NO_ACCESS_KEY,
+    rgw::auth::RemoteApplier::AuthInfo::NO_SUBUSER,
+    TYPE_KEYSTONE
+};
 }
 
 static inline const std::string
@@ -498,7 +500,8 @@ EC2Engine::get_acl_strategy(const EC2Engine::token_envelope_t&) const
 
 EC2Engine::auth_info_t
 EC2Engine::get_creds_info(const EC2Engine::token_envelope_t& token,
-                          const std::vector<std::string>& admin_roles
+                          const std::vector<std::string>& admin_roles,
+                          const std::string& access_key_id
                          ) const noexcept
 {
   using acct_privilege_t = \
@@ -522,7 +525,9 @@ EC2Engine::get_creds_info(const EC2Engine::token_envelope_t& token,
      * the access rights through the perm_mask. At least at this layer. */
     RGW_PERM_FULL_CONTROL,
     level,
-    TYPE_KEYSTONE,
+    access_key_id,
+    rgw::auth::RemoteApplier::AuthInfo::NO_SUBUSER,
+    TYPE_KEYSTONE
   };
 }
 
@@ -590,7 +595,7 @@ rgw::auth::Engine::result_t EC2Engine::authenticate(
                   << " expires: " << t->get_expires() << dendl;
 
     auto apl = apl_factory->create_apl_remote(cct, s, get_acl_strategy(*t),
-                                              get_creds_info(*t, accepted_roles.admin));
+                                              get_creds_info(*t, accepted_roles.admin, std::string(access_key_id)));
     return result_t::grant(std::move(apl), completer_factory(boost::none));
   }
 }
index 117708c37562256ef18adc9bd7d7baa2b386bd78..b986fc2a6aef6f7d9eaa47f60f344bbe2d05fbbd 100644 (file)
@@ -138,7 +138,8 @@ class EC2Engine : public rgw::auth::s3::AWSEngine {
   /* Helper methods. */
   acl_strategy_t get_acl_strategy(const token_envelope_t& token) const;
   auth_info_t get_creds_info(const token_envelope_t& token,
-                             const std::vector<std::string>& admin_roles
+                             const std::vector<std::string>& admin_roles,
+                             const std::string& access_key_id
                             ) const noexcept;
   std::pair<boost::optional<token_envelope_t>, int>
   get_from_keystone(const DoutPrefixProvider* dpp,
index edec31a3c6b1382fc6dc3e4dc4144a5bbca8949d..944d708191ddcdd5e315c4623298ad0920bef6c9 100644 (file)
@@ -43,8 +43,7 @@ class STSAuthStrategy : public rgw::auth::Strategy,
   aplptr_t create_apl_remote(CephContext* const cct,
                              const req_state* const s,
                              rgw::auth::RemoteApplier::acl_strategy_t&& acl_alg,
-                             const rgw::auth::RemoteApplier::AuthInfo &info
-                            ) const override {
+                             const rgw::auth::RemoteApplier::AuthInfo &info) const override {
     auto apl = rgw::auth::add_sysreq(cct, store, s,
       rgw::auth::RemoteApplier(cct, store, std::move(acl_alg), info,
                               implicit_tenant_context,
@@ -56,9 +55,10 @@ class STSAuthStrategy : public rgw::auth::Strategy,
                             const req_state* const s,
                             const RGWUserInfo& user_info,
                             const std::string& subuser,
-                            const std::optional<uint32_t>& perm_mask) const override {
+                            const std::optional<uint32_t>& perm_mask,
+                            const std::string& access_key_id) const override {
     auto apl = rgw::auth::add_sysreq(cct, store, s,
-      rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask));
+      rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask, access_key_id));
     return aplptr_t(new decltype(apl)(std::move(apl)));
   }
 
@@ -109,8 +109,7 @@ class ExternalAuthStrategy : public rgw::auth::Strategy,
   aplptr_t create_apl_remote(CephContext* const cct,
                              const req_state* const s,
                              rgw::auth::RemoteApplier::acl_strategy_t&& acl_alg,
-                             const rgw::auth::RemoteApplier::AuthInfo &info
-                            ) const override {
+                             const rgw::auth::RemoteApplier::AuthInfo &info) const override {
     auto apl = rgw::auth::add_sysreq(cct, store, s,
       rgw::auth::RemoteApplier(cct, store, std::move(acl_alg), info,
                                implicit_tenant_context,
@@ -174,9 +173,10 @@ class AWSAuthStrategy : public rgw::auth::Strategy,
                             const req_state* const s,
                             const RGWUserInfo& user_info,
                             const std::string& subuser,
-                            const std::optional<uint32_t>& perm_mask) const override {
+                            const std::optional<uint32_t>& perm_mask,
+                            const std::string& access_key_id) const override {
     auto apl = rgw::auth::add_sysreq(cct, store, s,
-      rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask));
+      rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask, access_key_id));
     /* TODO(rzarzynski): replace with static_ptr. */
     return aplptr_t(new decltype(apl)(std::move(apl)));
   }
index 0310e5ac5a84f36ecd93bcd093e16e61065b8f43..f029709db97aef18665a654e343c8b7677a4ce01 100644 (file)
@@ -3,6 +3,7 @@
 //
 #include "rgw_bucket_encryption.h"
 #include "rgw_xml.h"
+#include "common/ceph_json.h"
 
 void ApplyServerSideEncryptionByDefault::decode_xml(XMLObj *obj) {
   RGWXMLDecoder::decode_xml("KMSMasterKeyID", kmsMasterKeyID, obj, false);
@@ -11,15 +12,21 @@ void ApplyServerSideEncryptionByDefault::decode_xml(XMLObj *obj) {
 
 void ApplyServerSideEncryptionByDefault::dump_xml(Formatter *f) const {
   encode_xml("SSEAlgorithm", sseAlgorithm, f);
+  if (kmsMasterKeyID != "") {
+    encode_xml("KMSMasterKeyID", kmsMasterKeyID, f);
+  }
 }
 
 void ServerSideEncryptionConfiguration::decode_xml(XMLObj *obj) {
-  RGWXMLDecoder::decode_xml("ApplyServerSideEncryptionByDefault", applyServerSideEncryptionByDefault, obj, true);
+  RGWXMLDecoder::decode_xml("ApplyServerSideEncryptionByDefault", applyServerSideEncryptionByDefault, obj, false);
   RGWXMLDecoder::decode_xml("BucketKeyEnabled", bucketKeyEnabled, obj, false);
 }
 
 void ServerSideEncryptionConfiguration::dump_xml(Formatter *f) const {
   encode_xml("ApplyServerSideEncryptionByDefault", applyServerSideEncryptionByDefault, f);
+  if (bucketKeyEnabled) {
+    encode_xml("BucketKeyEnabled", true, f);
+  }
 }
 
 void RGWBucketEncryptionConfig::decode_xml(XMLObj *obj) {
@@ -27,5 +34,16 @@ void RGWBucketEncryptionConfig::decode_xml(XMLObj *obj) {
 }
 
 void RGWBucketEncryptionConfig::dump_xml(Formatter *f) const {
-  encode_xml("Rule", rule, f);
+  if (rule_exist) {
+    encode_xml("Rule", rule, f);
+  }
+}
+
+void RGWBucketEncryptionConfig::dump(Formatter *f) const {
+  encode_json("rule_exist", has_rule(), f);
+  if (has_rule()) {
+    encode_json("sse_algorithm", sse_algorithm(), f);
+    encode_json("kms_master_key_id", kms_master_key_id(), f);
+    encode_json("bucket_key_enabled", bucket_key_enabled(), f);
+  }
 }
index b279e3a166ac15d170e464657283d949410f07b8..ba567bc71999923094fcb8162c987e79343f965f 100644 (file)
@@ -12,7 +12,10 @@ class ApplyServerSideEncryptionByDefault
   std::string sseAlgorithm;
 
 public:
-  ApplyServerSideEncryptionByDefault(): kmsMasterKeyID(""), sseAlgorithm("") {};
+  ApplyServerSideEncryptionByDefault() {};
+  ApplyServerSideEncryptionByDefault(const std::string &algorithm,
+     const std::string &key_id)
+   : kmsMasterKeyID(key_id), sseAlgorithm(algorithm) {};
 
   const std::string& kms_master_key_id() const {
     return kmsMasterKeyID;
@@ -49,6 +52,10 @@ protected:
 
 public:
   ServerSideEncryptionConfiguration(): bucketKeyEnabled(false) {};
+  ServerSideEncryptionConfiguration(const std::string &algorithm,
+    const std::string &keyid="", bool enabled = false)
+      : applyServerSideEncryptionByDefault(algorithm, keyid),
+        bucketKeyEnabled(enabled) {}
 
   const std::string& kms_master_key_id() const {
     return applyServerSideEncryptionByDefault.kms_master_key_id();
@@ -89,6 +96,9 @@ protected:
 
 public:
   RGWBucketEncryptionConfig(): rule_exist(false) {}
+  RGWBucketEncryptionConfig(const std::string &algorithm,
+    const std::string &keyid = "", bool enabled = false)
+      : rule_exist(true), rule(algorithm, keyid, enabled) {}
 
   const std::string& kms_master_key_id() const {
     return rule.kms_master_key_id();
@@ -126,5 +136,7 @@ public:
 
   void decode_xml(XMLObj *obj);
   void dump_xml(Formatter *f) const;
+  void dump(Formatter *f) const;
+  static void generate_test_instances(std::list<RGWBucketEncryptionConfig*>& o);
 };
 WRITE_CLASS_ENCODER(RGWBucketEncryptionConfig)
index cf248cbefe03be4be09a17e81042e65a2e353114..3eb60b6c0d141d4951813e6937ee06bd97fcb7f9 100644 (file)
@@ -393,6 +393,7 @@ struct str_len meta_prefixes[] = { STR_LEN_ENTRY("HTTP_X_AMZ"),
 void req_info::init_meta_info(const DoutPrefixProvider *dpp, bool *found_bad_meta)
 {
   x_meta_map.clear();
+  crypt_attribute_map.clear();
 
   for (const auto& kv: env->get_map()) {
     const char *prefix;
@@ -432,6 +433,9 @@ void req_info::init_meta_info(const DoutPrefixProvider *dpp, bool *found_bad_met
         } else {
           x_meta_map[name_low] = val;
         }
+        if (strncmp(name_low, "x-amz-server-side-encryption", 20) == 0) {
+          crypt_attribute_map[name_low] = val;
+        }
       }
     }
   }
@@ -463,6 +467,35 @@ void rgw_add_amz_meta_header(
   }
 }
 
+bool rgw_set_amz_meta_header(
+  meta_map_t& x_meta_map,
+  const std::string& k,
+  const std::string& v,
+  rgw_set_action_if_set a)
+{
+  auto it { x_meta_map.find(k) };
+  bool r { it != x_meta_map.end() };
+  switch(a) {
+  default:
+    ceph_assert(a == 0);
+  case DISCARD:
+    break;
+  case APPEND:
+    if (r) {
+       std::string old { it->second };
+       boost::algorithm::trim_right(old);
+       old.append(",");
+       old.append(v);
+       x_meta_map[k] = old;
+       break;
+    }
+    /* fall through */
+  case OVERWRITE:
+    x_meta_map[k] = v;
+  }
+  return r;
+}
+
 string rgw_string_unquote(const string& s)
 {
   if (s[0] != '"' || s.size() < 2)
@@ -1297,6 +1330,11 @@ bool verify_bucket_permission_no_policy(const DoutPrefixProvider* dpp, struct re
 
 bool verify_bucket_permission(const DoutPrefixProvider* dpp, struct req_state * const s, const uint64_t op)
 {
+  if (rgw::sal::Bucket::empty(s->bucket)) {
+    // request is missing a bucket name
+    return false;
+  }
+
   perm_state_from_req_state ps(s);
 
   return verify_bucket_permission(dpp, 
index 67a11f430bc0dc89c5c987fa126e6d88fe4e5594..8a441d043e199c5c3a68742579cc7f2825954915 100644 (file)
@@ -1225,6 +1225,7 @@ struct req_info {
   const RGWEnv *env;
   RGWHTTPArgs args;
   meta_map_t x_meta_map;
+  meta_map_t crypt_attribute_map;
 
   std::string host;
   const char *method;
@@ -2052,6 +2053,15 @@ void rgw_add_amz_meta_header(
   const std::string& k,
   const std::string& v);
 
+enum rgw_set_action_if_set {
+  DISCARD=0, OVERWRITE, APPEND
+};
+
+bool rgw_set_amz_meta_header(
+  meta_map_t& x_meta_map,
+  const std::string& k,
+  const std::string& v, rgw_set_action_if_set f);
+
 extern std::string rgw_string_unquote(const std::string& s);
 extern void parse_csv_string(const std::string& ival, std::vector<std::string>& ovals);
 extern int parse_key_value(std::string& in_str, std::string& key, std::string& val);
index b977e77cecb721e786899bd2aa2a4817129053af..515a5ba78c0e0b0cba1ab9f6c971442da3411777 100644 (file)
@@ -858,63 +858,149 @@ typedef enum {
   X_AMZ_SERVER_SIDE_ENCRYPTION_CONTEXT,
   X_AMZ_SERVER_SIDE_ENCRYPTION_LAST
 } crypt_option_e;
-
-typedef struct {
-  const char* http_header_name;
+struct crypt_option_names {
   const std::string post_part_name;
-} crypt_option_names;
+};
 
 static const crypt_option_names crypt_options[] = {
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM",  "x-amz-server-side-encryption-customer-algorithm"},
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY",        "x-amz-server-side-encryption-customer-key"},
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5",    "x-amz-server-side-encryption-customer-key-md5"},
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION",                     "x-amz-server-side-encryption"},
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID",      "x-amz-server-side-encryption-aws-kms-key-id"},
-    {"HTTP_X_AMZ_SERVER_SIDE_ENCRYPTION_CONTEXT",             "x-amz-server-side-encryption-context"},
+    {  "x-amz-server-side-encryption-customer-algorithm"},
+    {        "x-amz-server-side-encryption-customer-key"},
+    {    "x-amz-server-side-encryption-customer-key-md5"},
+    {                     "x-amz-server-side-encryption"},
+    {      "x-amz-server-side-encryption-aws-kms-key-id"},
+    {             "x-amz-server-side-encryption-context"},
 };
 
-static std::string_view get_crypt_attribute(
-    const RGWEnv* env,
-    std::map<std::string,
-             RGWPostObj_ObjStore::post_form_part,
-             const ltstr_nocase>* parts,
-    crypt_option_e option)
-{
-  static_assert(
-      X_AMZ_SERVER_SIDE_ENCRYPTION_LAST == sizeof(crypt_options)/sizeof(*crypt_options),
-      "Missing items in crypt_options");
-  if (parts != nullptr) {
-    auto iter
-      = parts->find(crypt_options[option].post_part_name);
-    if (iter == parts->end())
-      return std::string_view();
-    bufferlist& data = iter->second.data;
-    std::string_view str = std::string_view(data.c_str(), data.length());
-    return rgw_trim_whitespace(str);
-  } else {
-    const char* hdr = env->get(crypt_options[option].http_header_name, nullptr);
-    if (hdr != nullptr) {
-      return std::string_view(hdr);
+struct CryptAttributes {
+  meta_map_t &x_meta_map;
+
+  CryptAttributes(req_state *s)
+    : x_meta_map(s->info.crypt_attribute_map) {
+  }
+
+  std::string_view get(crypt_option_e option)
+  {
+    static_assert(
+       X_AMZ_SERVER_SIDE_ENCRYPTION_LAST == sizeof(crypt_options)/sizeof(*crypt_options),
+       "Missing items in crypt_options");
+    auto hdr { x_meta_map.find(crypt_options[option].post_part_name) };
+    if (hdr != x_meta_map.end()) {
+      return std::string_view(hdr->second);
     } else {
       return std::string_view();
     }
   }
+};
+
+std::string fetch_bucket_key_id(struct req_state *s)
+{
+  auto kek_iter = s->bucket_attrs.find(RGW_ATTR_BUCKET_ENCRYPTION_KEY_ID);
+  if (kek_iter == s->bucket_attrs.end())
+    return std::string();
+  std::string a_key { kek_iter->second.to_str() };
+  // early code appends a nul; pretend that didn't happen
+  auto l { a_key.length() };
+  if (l > 0 && a_key[l-1] == '\0') {
+    a_key.resize(--l);
+  }
+  return a_key;
 }
 
+const std::string cant_expand_key{ "\uFFFD" };
+std::string expand_key_name(struct req_state *s, const std::string_view&t)
+{
+  std::string r;
+  size_t i, j;
+  for (i = 0;;) {
+    i = t.find('%', (j = i));
+    if (i != j) {
+      if (i == std::string_view::npos)
+        r.append( t.substr(j) );
+      else
+        r.append( t.substr(j, i-j) );
+    }
+    if (i == std::string_view::npos) {
+      break;
+    }
+    if (t[i+1] == '%') {
+      r.append("%");
+      i += 2;
+      continue;
+    }
+    if (t.compare(i+1, 9, "bucket_id") == 0) {
+      r.append(s->bucket->get_marker());
+      i += 10;
+      continue;
+    }
+    if (t.compare(i+1, 8, "owner_id") == 0) {
+      r.append(s->bucket->get_info().owner.id);
+      i += 9;
+      continue;
+    }
+    return cant_expand_key;
+  }
+  return r;
+}
+
+static int get_sse_s3_bucket_key(req_state *s,
+                          std::string &key_id)
+{
+  int res;
+  std::string saved_key;
+
+  key_id = expand_key_name(s, s->cct->_conf->rgw_crypt_sse_s3_key_template);
+
+  if (key_id == cant_expand_key) {
+    ldpp_dout(s, 5) << "ERROR: unable to expand key_id " <<
+      s->cct->_conf->rgw_crypt_sse_s3_key_template << " on bucket" << dendl;
+    s->err.message = "Server side error - unable to expand key_id";
+    return -EINVAL;
+  }
+
+  saved_key = fetch_bucket_key_id(s);
+  if (saved_key != "") {
+    ldpp_dout(s, 5) << "Found KEK ID: " << key_id << dendl;
+  }
+  if (saved_key != key_id) {
+    res = create_sse_s3_bucket_key(s, s->cct, key_id);
+    if (res != 0) {
+      return res;
+    }
+    bufferlist key_id_bl;
+    key_id_bl.append(key_id.c_str(), key_id.length());
+    for (int count = 0; count < 15; ++count) {
+      rgw::sal::Attrs attrs = s->bucket->get_attrs();
+      attrs[RGW_ATTR_BUCKET_ENCRYPTION_KEY_ID] = key_id_bl;
+      res = s->bucket->merge_and_store_attrs(s, attrs, s->yield);
+      if (res != -ECANCELED) {
+        break;
+      }
+      res = s->bucket->try_refresh_info(s, nullptr);
+      if (res != 0) {
+        break;
+      }
+    }
+    if (res != 0) {
+      ldpp_dout(s, 5) << "ERROR: unable to save new key_id on bucket" << dendl;
+      s->err.message = "Server side error - unable to save key_id";
+      return res;
+    }
+  }
+  return 0;
+}
 
 int rgw_s3_prepare_encrypt(struct req_state* s,
                            std::map<std::string, ceph::bufferlist>& attrs,
-                           std::map<std::string,
-                                    RGWPostObj_ObjStore::post_form_part,
-                                    const ltstr_nocase>* parts,
                            std::unique_ptr<BlockCrypt>* block_crypt,
                            std::map<std::string, std::string>& crypt_http_responses)
 {
   int res = 0;
+  CryptAttributes crypt_attributes { s };
   crypt_http_responses.clear();
+
   {
     std::string_view req_sse_ca =
-        get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM);
+        crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM);
     if (! req_sse_ca.empty()) {
       if (req_sse_ca != "AES256") {
         ldpp_dout(s, 5) << "ERROR: Invalid value for header "
@@ -932,7 +1018,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       std::string key_bin;
       try {
         key_bin = from_base64(
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY) );
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY) );
       } catch (...) {
         ldpp_dout(s, 5) << "ERROR: rgw_s3_prepare_encrypt invalid encryption "
                          << "key which contains character that is not base64 encoded."
@@ -950,7 +1036,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       }
 
       std::string_view keymd5 =
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5);
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5);
 
       std::string keymd5_bin;
       try {
@@ -998,7 +1084,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       return 0;
     } else {
       std::string_view customer_key =
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY);
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY);
       if (!customer_key.empty()) {
         ldpp_dout(s, 5) << "ERROR: SSE-C encryption request is missing the header "
                          << "x-amz-server-side-encryption-customer-algorithm"
@@ -1009,7 +1095,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       }
 
       std::string_view customer_key_md5 =
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5);
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5);
       if (!customer_key_md5.empty()) {
         ldpp_dout(s, 5) << "ERROR: SSE-C encryption request is missing the header "
                          << "x-amz-server-side-encryption-customer-algorithm"
@@ -1022,7 +1108,7 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
 
     /* AMAZON server side encryption with KMS (key management service) */
     std::string_view req_sse =
-        get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION);
+        crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION);
     if (! req_sse.empty()) {
 
       if (s->cct->_conf->rgw_crypt_require_ssl &&
@@ -1032,75 +1118,112 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       }
 
       if (req_sse == "aws:kms") {
-       std::string_view context =
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_CONTEXT);
+        std::string_view context =
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_CONTEXT);
         std::string cooked_context;
-       if ((res = make_canonical_context(s, context, cooked_context)))
-         return res;
-       std::string_view key_id =
-          get_crypt_attribute(s->info.env, parts, X_AMZ_SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID);
-       if (key_id.empty()) {
-         ldpp_dout(s, 5) << "ERROR: not provide a valid key id" << dendl;
-         s->err.message = "Server Side Encryption with KMS managed key requires "
-           "HTTP header x-amz-server-side-encryption-aws-kms-key-id";
-         return -EINVAL;
-       }
-       /* try to retrieve actual key */
-       std::string key_selector = create_random_key_selector(s->cct);
-       set_attr(attrs, RGW_ATTR_CRYPT_MODE, "SSE-KMS");
-       set_attr(attrs, RGW_ATTR_CRYPT_KEYID, key_id);
-       set_attr(attrs, RGW_ATTR_CRYPT_KEYSEL, key_selector);
-       set_attr(attrs, RGW_ATTR_CRYPT_CONTEXT, cooked_context);
-       std::string actual_key;
-       res = make_actual_key_from_kms(s, s->cct, attrs, actual_key);
-       if (res != 0) {
-         ldpp_dout(s, 5) << "ERROR: failed to retrieve actual key from key_id: " << key_id << dendl;
-         s->err.message = "Failed to retrieve the actual key, kms-keyid: " + std::string(key_id);
-         return res;
-       }
-       if (actual_key.size() != AES_256_KEYSIZE) {
-         ldpp_dout(s, 5) << "ERROR: key obtained from key_id:" <<
+        if ((res = make_canonical_context(s, context, cooked_context)))
+          return res;
+        std::string_view key_id =
+          crypt_attributes.get(X_AMZ_SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID);
+        if (key_id.empty()) {
+          ldpp_dout(s, 5) << "ERROR: not provide a valid key id" << dendl;
+          s->err.message = "Server Side Encryption with KMS managed key requires "
+            "HTTP header x-amz-server-side-encryption-aws-kms-key-id";
+          return -EINVAL;
+        }
+        /* try to retrieve actual key */
+        std::string key_selector = create_random_key_selector(s->cct);
+        set_attr(attrs, RGW_ATTR_CRYPT_MODE, "SSE-KMS");
+        set_attr(attrs, RGW_ATTR_CRYPT_KEYID, key_id);
+        set_attr(attrs, RGW_ATTR_CRYPT_KEYSEL, key_selector);
+        set_attr(attrs, RGW_ATTR_CRYPT_CONTEXT, cooked_context);
+        std::string actual_key;
+        res = make_actual_key_from_kms(s, s->cct, attrs, actual_key);
+        if (res != 0) {
+          ldpp_dout(s, 5) << "ERROR: failed to retrieve actual key from key_id: " << key_id << dendl;
+          s->err.message = "Failed to retrieve the actual key, kms-keyid: " + std::string(key_id);
+          return res;
+        }
+        if (actual_key.size() != AES_256_KEYSIZE) {
+          ldpp_dout(s, 5) << "ERROR: key obtained from key_id:" <<
             key_id << " is not 256 bit size" << dendl;
-         s->err.message = "KMS provided an invalid key for the given kms-keyid.";
-         return -EINVAL;
-       }
-
-       if (block_crypt) {
-         auto aes = std::unique_ptr<AES_256_CBC>(new AES_256_CBC(s, s->cct));
-         aes->set_key(reinterpret_cast<const uint8_t*>(actual_key.c_str()), AES_256_KEYSIZE);
-         *block_crypt = std::move(aes);
-       }
+          s->err.message = "KMS provided an invalid key for the given kms-keyid.";
+          return -EINVAL;
+        }
+
+        if (block_crypt) {
+          auto aes = std::unique_ptr<AES_256_CBC>(new AES_256_CBC(s, s->cct));
+          aes->set_key(reinterpret_cast<const uint8_t*>(actual_key.c_str()), AES_256_KEYSIZE);
+          *block_crypt = std::move(aes);
+        }
         ::ceph::crypto::zeroize_for_security(actual_key.data(), actual_key.length());
 
-       crypt_http_responses["x-amz-server-side-encryption"] = "aws:kms";
-       crypt_http_responses["x-amz-server-side-encryption-aws-kms-key-id"] = std::string(key_id);
-       crypt_http_responses["x-amz-server-side-encryption-context"] = std::move(cooked_context);
-       return 0;
+        crypt_http_responses["x-amz-server-side-encryption"] = "aws:kms";
+        crypt_http_responses["x-amz-server-side-encryption-aws-kms-key-id"] = std::string(key_id);
+        crypt_http_responses["x-amz-server-side-encryption-context"] = std::move(cooked_context);
+        return 0;
       } else if (req_sse == "AES256") {
-       /* if a default encryption key was provided, we will use it for SSE-S3 */
+        /* SSE-S3: fall through to logic to look for vault or test key */
       } else {
         ldpp_dout(s, 5) << "ERROR: Invalid value for header x-amz-server-side-encryption"
                          << dendl;
         s->err.message = "Server Side Encryption with KMS managed key requires "
-         "HTTP header x-amz-server-side-encryption : aws:kms or AES256";
+          "HTTP header x-amz-server-side-encryption : aws:kms or AES256";
         return -EINVAL;
       }
     } else {
-      /* x-amz-server-side-encryption not present or empty */
-      std::string_view key_id =
-       get_crypt_attribute(s->info.env, parts,
-                           X_AMZ_SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID);
-      if (!key_id.empty()) {
-        ldpp_dout(s, 5) << "ERROR: SSE-KMS encryption request is missing the header "
-                         << "x-amz-server-side-encryption"
-                         << dendl;
-        s->err.message = "Server Side Encryption with KMS managed key requires "
-                         "HTTP header x-amz-server-side-encryption : aws:kms";
+  /*no encryption*/
+      return 0;
+    }
+
+    /* from here on we are only handling SSE-S3 (req_sse=="AES256") */
+
+    if (s->cct->_conf->rgw_crypt_sse_s3_backend == "vault") {
+      ldpp_dout(s, 5) << "RGW_ATTR_BUCKET_ENCRYPTION ALGO: "
+              <<  req_sse << dendl;
+      std::string_view context = "";
+      std::string cooked_context;
+      if ((res = make_canonical_context(s, context, cooked_context)))
+        return res;
+
+      std::string key_id;
+      res = get_sse_s3_bucket_key(s, key_id);
+      if (res != 0) {
+        return res;
+      }
+      std::string key_selector = create_random_key_selector(s->cct);
+
+      set_attr(attrs, RGW_ATTR_CRYPT_KEYSEL, key_selector);
+      set_attr(attrs, RGW_ATTR_CRYPT_CONTEXT, cooked_context);
+      set_attr(attrs, RGW_ATTR_CRYPT_MODE, "AES256");
+      set_attr(attrs, RGW_ATTR_CRYPT_KEYID, key_id);
+      std::string actual_key;
+      res = make_actual_key_from_sse_s3(s, s->cct, attrs, actual_key);
+      if (res != 0) {
+        ldpp_dout(s, 5) << "ERROR: failed to retrieve actual key from key_id: " << key_id << dendl;
+        s->err.message = "Failed to retrieve the actual key";
+        return res;
+      }
+      if (actual_key.size() != AES_256_KEYSIZE) {
+        ldpp_dout(s, 5) << "ERROR: key obtained from key_id:" <<
+                       key_id << " is not 256 bit size" << dendl;
+        s->err.message = "SSE-S3 provided an invalid key for the given keyid.";
         return -EINVAL;
       }
+
+      if (block_crypt) {
+        auto aes = std::unique_ptr<AES_256_CBC>(new AES_256_CBC(s, s->cct));
+        aes->set_key(reinterpret_cast<const uint8_t*>(actual_key.c_str()), AES_256_KEYSIZE);
+        *block_crypt = std::move(aes);
+      }
+      ::ceph::crypto::zeroize_for_security(actual_key.data(), actual_key.length());
+
+      crypt_http_responses["x-amz-server-side-encryption"] = "AES256";
+
+      return 0;
     }
 
-    /* no other encryption mode, check if default encryption is selected */
+    /* SSE-S3 and no backend, check if there is a test key */
     if (s->cct->_conf->rgw_crypt_default_encryption_key != "") {
       std::string master_encryption_key;
       try {
@@ -1140,9 +1263,10 @@ int rgw_s3_prepare_encrypt(struct req_state* s,
       ::ceph::crypto::zeroize_for_security(actual_key, sizeof(actual_key));
       return 0;
     }
+    s->err.message = "Request specifies Server Side Encryption "
+                     "but server configuration does not support this.";
+    return -EINVAL;
   }
-  /*no encryption*/
-  return 0;
 }
 
 
@@ -1312,10 +1436,77 @@ int rgw_s3_prepare_decrypt(struct req_state* s,
     if (block_crypt) *block_crypt = std::move(aes);
     return 0;
   }
+
+  /* SSE-S3 */
+  if (stored_mode == "AES256") {
+    if (s->cct->_conf->rgw_crypt_require_ssl &&
+        !rgw_transport_is_secure(s->cct, *s->info.env)) {
+      ldpp_dout(s, 5) << "ERROR: Insecure request, rgw_crypt_require_ssl is set" << dendl;
+      return -ERR_INVALID_REQUEST;
+    }
+    /* try to retrieve actual key */
+    std::string key_id = get_str_attribute(attrs, RGW_ATTR_CRYPT_KEYID);
+    std::string actual_key;
+    res = reconstitute_actual_key_from_sse_s3(s, s->cct, attrs, actual_key);
+    if (res != 0) {
+      ldpp_dout(s, 10) << "ERROR: failed to retrieve actual key" << dendl;
+      s->err.message = "Failed to retrieve the actual key";
+      return res;
+    }
+    if (actual_key.size() != AES_256_KEYSIZE) {
+      ldpp_dout(s, 0) << "ERROR: key obtained " <<
+          "is not 256 bit size" << dendl;
+      s->err.message = "SSE-S3 provided an invalid key for the given keyid.";
+      return -ERR_INVALID_ACCESS_KEY;
+    }
+
+    auto aes = std::unique_ptr<AES_256_CBC>(new AES_256_CBC(s, s->cct));
+    aes->set_key(reinterpret_cast<const uint8_t*>(actual_key.c_str()), AES_256_KEYSIZE);
+    actual_key.replace(0, actual_key.length(), actual_key.length(), '\000');
+    if (block_crypt) *block_crypt = std::move(aes);
+
+    crypt_http_responses["x-amz-server-side-encryption"] = "AES256";
+    return 0;
+  }
+
+
   /*no decryption*/
   return 0;
 }
 
+int rgw_remove_sse_s3_bucket_key(req_state *s)
+{
+  int res;
+  auto key_id { expand_key_name(s, s->cct->_conf->rgw_crypt_sse_s3_key_template) };
+  auto saved_key { fetch_bucket_key_id(s) };
+  size_t i;
+
+  if (key_id == cant_expand_key) {
+    ldpp_dout(s, 5) << "ERROR: unable to expand key_id " <<
+      s->cct->_conf->rgw_crypt_sse_s3_key_template << " on bucket" << dendl;
+    s->err.message = "Server side error - unable to expand key_id";
+    return -EINVAL;
+  }
+
+  if (saved_key == "") {
+    return 0;
+  } else if (saved_key != key_id) {
+    ldpp_dout(s, 5) << "Found but will not delete strange KEK ID: " << saved_key << dendl;
+    return 0;
+  }
+  i = s->cct->_conf->rgw_crypt_sse_s3_key_template.find("%bucket_id");
+  if (i == std::string_view::npos) {
+    ldpp_dout(s, 5) << "Kept valid KEK ID: " << saved_key << dendl;
+    return 0;
+  }
+  ldpp_dout(s, 5) << "Removing valid KEK ID: " << saved_key << dendl;
+  res = remove_sse_s3_bucket_key(s, s->cct, saved_key);
+  if (res != 0) {
+    ldpp_dout(s, 0) << "ERROR: Unable to remove KEK ID: " << saved_key << " got " << res << dendl;
+  }
+  return res;
+}
+
 /*********************************************************************
 *      "BOTTOM OF FILE"
 *      I've left some commented out lines above.  They are there for
index 45d46faffb9a07bde293f72d2b10efed1483a1ca..f84bb23dc39ce54866f11b2c84e486d5243c0547 100644 (file)
@@ -141,9 +141,6 @@ public:
 
 int rgw_s3_prepare_encrypt(struct req_state* s,
                            std::map<std::string, ceph::bufferlist>& attrs,
-                           std::map<std::string,
-                                    RGWPostObj_ObjStore::post_form_part,
-                                    const ltstr_nocase>* parts,
                            std::unique_ptr<BlockCrypt>* block_crypt,
                            std::map<std::string,
                                     std::string>& crypt_http_responses);
@@ -173,4 +170,6 @@ static inline std::string get_str_attribute(std::map<std::string, bufferlist>& a
   return iter->second.to_str();
 }
 
+int rgw_remove_sse_s3_bucket_key(req_state *s);
+
 #endif
index 1e988d4ce33f11ef97de7ec8ab19d0e9ca8d124b..d50572653c3681a0a66a9fad126f3b7f7a2b6cad 100644 (file)
@@ -1592,17 +1592,11 @@ public:
             tn->log(0, SSTR("ERROR: cannot start syncing " << iter->first << ". Duplicate entry?"));
           } else {
             // fetch remote and write locally
-            spawn(sync_single_entry(source_bs, iter->first, iter->first,
-                                    entry_timestamp, false), false);
+            yield_spawn_window(sync_single_entry(source_bs, iter->first, iter->first,
+                                                 entry_timestamp, false),
+                               spawn_window, std::nullopt);
           }
           sync_marker.marker = iter->first;
-
-          drain_all_but_stack_cb(lease_stack.get(),
-                                 [&](uint64_t stack_id, int ret) {
-                                   if (ret < 0) {
-                                     tn->log(10, "a sync operation returned error");
-                                   }
-                                 });
         }
       } while (omapvals->more);
       omapvals.reset();
@@ -1747,16 +1741,10 @@ public:
           if (!marker_tracker->start(log_iter->log_id, 0, log_iter->log_timestamp)) {
             tn->log(0, SSTR("ERROR: cannot start syncing " << log_iter->log_id << ". Duplicate entry?"));
           } else {
-            spawn(sync_single_entry(source_bs, log_iter->entry.key, log_iter->log_id,
-                                    log_iter->log_timestamp, false), false);
+            yield_spawn_window(sync_single_entry(source_bs, log_iter->entry.key, log_iter->log_id,
+                                                 log_iter->log_timestamp, false),
+                               spawn_window, std::nullopt);
           }
-
-          drain_all_but_stack_cb(lease_stack.get(),
-                                 [&](uint64_t stack_id, int ret) {
-                                   if (ret < 0) {
-                                     tn->log(10, "a sync operation returned error");
-                                   }
-                                 });
         }
 
         tn->log(20, SSTR("shard_id=" << shard_id << " sync_marker=" << sync_marker.marker
index 89e41471e11c75458158e17291180434d3d699d7..b52e52000774420de465eaef75eedb76fc861f1e 100644 (file)
@@ -566,13 +566,17 @@ void RGWDataChangesLog::register_renew(const rgw_bucket_shard& bs)
 void RGWDataChangesLog::update_renewed(const rgw_bucket_shard& bs,
                                       real_time expiration)
 {
-  std::scoped_lock l{lock};
+  std::unique_lock l{lock};
   ChangeStatusPtr status;
   _get_change(bs, status);
+  l.unlock();
+
 
   ldout(cct, 20) << "RGWDataChangesLog::update_renewd() bucket_name="
                 << bs.bucket.name << " shard_id=" << bs.shard_id
                 << " expiration=" << expiration << dendl;
+
+  std::unique_lock sl(status->lock);
   status->cur_expiration = expiration;
 }
 
index 1d1be51c45b4c6d021daf273efd715ed62372d33..2475b45ed6e4e3b3610b05cb524c2d47c6456c3e 100644 (file)
@@ -11,6 +11,7 @@
 #include "rgw_meta_sync_status.h"
 #include "rgw_data_sync.h"
 #include "rgw_multi.h"
+#include "rgw_bucket_encryption.h"
 
 #include "common/Formatter.h"
 
@@ -27,3 +28,14 @@ void obj_version::generate_test_instances(list<obj_version*>& o)
   o.push_back(v);
   o.push_back(new obj_version);
 }
+
+void RGWBucketEncryptionConfig::generate_test_instances(std::list<RGWBucketEncryptionConfig*>& o)
+{
+  auto *bc = new RGWBucketEncryptionConfig("aws:kms", "some:key", true);
+  o.push_back(bc);
+
+  bc = new RGWBucketEncryptionConfig("AES256");
+  o.push_back(bc);
+
+  o.push_back(new RGWBucketEncryptionConfig);
+}
index 0113b6c0b44d37dbc2e1826cbcd9fde409c07281..bfea30989b536c4ac752a56fbf36d5d4e4f39e92 100644 (file)
@@ -149,6 +149,17 @@ add_name_val_to_obj(std::string &n, std::string &v, rapidjson::GenericValue<E,A>
   d.AddMember(name, val, allocator);
 }
 
+template<typename E, typename A = ZeroPoolAllocator>
+static inline void
+add_name_val_to_obj(std::string &n, bool v, rapidjson::GenericValue<E,A> &d,
+  A &allocator)
+{
+  rapidjson::GenericValue<E,A> name, val;
+  name.SetString(n.c_str(), n.length(), allocator);
+  val.SetBool(v);
+  d.AddMember(name, val, allocator);
+}
+
 template<typename E, typename A = ZeroPoolAllocator>
 static inline void
 add_name_val_to_obj(const char *n, std::string &v, rapidjson::GenericValue<E,A> &d,
@@ -158,18 +169,46 @@ add_name_val_to_obj(const char *n, std::string &v, rapidjson::GenericValue<E,A>
   add_name_val_to_obj(ns, v, d, allocator);
 }
 
+template<typename E, typename A = ZeroPoolAllocator>
+static inline void
+add_name_val_to_obj(const char *n, bool v, rapidjson::GenericValue<E,A> &d,
+  A &allocator)
+{
+  std::string ns{n, strlen(n) };
+  add_name_val_to_obj(ns, v, d, allocator);
+}
+
 typedef std::map<std::string, std::string> EngineParmMap;
 
+
+class SSEContext {
+protected:
+  virtual ~SSEContext(){};
+public:
+  virtual const std::string & backend() = 0;
+  virtual const std::string & addr() = 0;
+  virtual const std::string & auth() = 0;
+  virtual const std::string & k_namespace() = 0;
+  virtual const std::string & prefix() = 0;
+  virtual const std::string & secret_engine() = 0;
+  virtual const std::string & ssl_cacert() = 0;
+  virtual const std::string & ssl_clientcert() = 0;
+  virtual const std::string & ssl_clientkey() = 0;
+  virtual const std::string & token_file() = 0;
+  virtual const bool verify_ssl() = 0;
+};
+
 class VaultSecretEngine: public SecretEngine {
 
 protected:
   CephContext *cct;
+  SSEContext & kctx;
 
   int load_token_from_file(const DoutPrefixProvider *dpp, std::string *vault_token)
   {
 
     int res = 0;
-    std::string token_file = cct->_conf->rgw_crypt_vault_token_file;
+    std::string token_file = kctx.token_file();
     if (token_file.empty()) {
       ldpp_dout(dpp, 0) << "ERROR: Vault token file not set in rgw_crypt_vault_token_file" << dendl;
       return -EINVAL;
@@ -216,7 +255,7 @@ protected:
   {
     int res;
     string vault_token = "";
-    if (RGW_SSE_KMS_VAULT_AUTH_TOKEN == cct->_conf->rgw_crypt_vault_auth){
+    if (RGW_SSE_KMS_VAULT_AUTH_TOKEN == kctx.auth()){
       ldpp_dout(dpp, 0) << "Loading Vault Token from filesystem" << dendl;
       res = load_token_from_file(dpp, &vault_token);
       if (res < 0){
@@ -224,13 +263,13 @@ protected:
       }
     }
 
-    std::string secret_url = cct->_conf->rgw_crypt_vault_addr;
+    std::string secret_url = kctx.addr();
     if (secret_url.empty()) {
       ldpp_dout(dpp, 0) << "ERROR: Vault address not set in rgw_crypt_vault_addr" << dendl;
       return -EINVAL;
     }
 
-    concat_url(secret_url, cct->_conf->rgw_crypt_vault_prefix);
+    concat_url(secret_url, kctx.prefix());
     concat_url(secret_url, std::string(infix));
     concat_url(secret_url, std::string(key_id));
 
@@ -247,23 +286,23 @@ protected:
       vault_token.replace(0, vault_token.length(), vault_token.length(), '\000');
     }
 
-    string vault_namespace = cct->_conf->rgw_crypt_vault_namespace;
+    string vault_namespace = kctx.k_namespace();
     if (!vault_namespace.empty()){
       ldpp_dout(dpp, 20) << "Vault Namespace: " << vault_namespace << dendl;
       secret_req.append_header("X-Vault-Namespace", vault_namespace);
     }
 
-    secret_req.set_verify_ssl(cct->_conf->rgw_crypt_vault_verify_ssl);
+    secret_req.set_verify_ssl(kctx.verify_ssl());
 
-    if (!cct->_conf->rgw_crypt_vault_ssl_cacert.empty()) {
-      secret_req.set_ca_path(cct->_conf->rgw_crypt_vault_ssl_cacert);
+    if (!kctx.ssl_cacert().empty()) {
+      secret_req.set_ca_path(kctx.ssl_cacert());
     }
 
-    if (!cct->_conf->rgw_crypt_vault_ssl_clientcert.empty()) {
-      secret_req.set_client_cert(cct->_conf->rgw_crypt_vault_ssl_clientcert);
+    if (!kctx.ssl_clientcert().empty()) {
+      secret_req.set_client_cert(kctx.ssl_clientcert());
     }
-    if (!cct->_conf->rgw_crypt_vault_ssl_clientkey.empty()) {
-      secret_req.set_client_key(cct->_conf->rgw_crypt_vault_ssl_clientkey);
+    if (!kctx.ssl_clientkey().empty()) {
+      secret_req.set_client_key(kctx.ssl_clientkey());
     }
 
     res = secret_req.process(null_yield);
@@ -302,8 +341,7 @@ protected:
 
 public:
 
-  VaultSecretEngine(CephContext *cct) {
-    this->cct = cct;
+  VaultSecretEngine(CephContext *_c, SSEContext & _k) : cct(_c), kctx(_k) {
   }
 };
 
@@ -334,7 +372,7 @@ private:
   }
 
 public:
-  TransitSecretEngine(CephContext *cct, EngineParmMap parms): VaultSecretEngine(cct), parms(parms) {
+  TransitSecretEngine(CephContext *cct, SSEContext & kctx, EngineParmMap parms): VaultSecretEngine(cct, kctx), parms(parms) {
     compat = COMPAT_UNSET;
     for (auto& e: parms) {
       if (e.first == "compat") {
@@ -355,7 +393,7 @@ public:
        << e.first << "=" << e.second << " ignored" << dendl;
     }
     if (compat == COMPAT_UNSET) {
-      std::string_view v { cct->_conf->rgw_crypt_vault_prefix };
+      std::string_view v { kctx.prefix() };
       if (string_ends_maybe_slash(v,"/export/encryption-key")) {
        compat = COMPAT_ONLY_OLD;
       } else {
@@ -573,13 +611,102 @@ public:
       return decode_secret(dpp, plaintext_v.GetString(), actual_key);
     }
   }
+
+  int create_bucket_key(const DoutPrefixProvider *dpp, const std::string& key_name)
+  {
+/*
+       .data.ciphertext <- (to-be) named attribute
+       data: {"type": "chacha20-poly1305", "derived": true}
+       post to prefix + key_name
+       empty output.
+*/
+    ZeroPoolDocument d { rapidjson::kObjectType };
+    auto &allocator { d.GetAllocator() };
+    bufferlist dummy_bl;
+    std::string chacha20_poly1305 { "chacha20-poly1305" };
+
+    add_name_val_to_obj("type", chacha20_poly1305, d, allocator);
+    add_name_val_to_obj("derived", true, d, allocator);
+    rapidjson::StringBuffer buf;
+    rapidjson::Writer<rapidjson::StringBuffer> writer(buf);
+    if (!d.Accept(writer)) {
+      ldpp_dout(dpp, 0) << "ERROR: can't make json for vault" << dendl;
+      return -EINVAL;
+    }
+    std::string post_data { buf.GetString() };
+
+    int res = send_request(dpp, "POST", "/keys/", key_name,
+       post_data, dummy_bl);
+    if (res < 0) {
+      return res;
+    }
+    if (dummy_bl.length() != 0) {
+      ldpp_dout(dpp, 0) << "ERROR: unexpected response from Vault making a key: "
+       << dummy_bl
+       << dendl;
+    }
+    return 0;
+  }
+
+  int delete_bucket_key(const DoutPrefixProvider *dpp, const std::string& key_name)
+  {
+/*
+       /keys/<keyname>/config
+       data: {"deletion_allowed": true}
+       post to prefix + key_name
+       empty output.
+*/
+    ZeroPoolDocument d { rapidjson::kObjectType };
+    auto &allocator { d.GetAllocator() };
+    bufferlist dummy_bl;
+    std::ostringstream path_temp;
+    path_temp << "/keys/";
+    path_temp << key_name;
+    std::string delete_path { path_temp.str() };
+    path_temp << "/config";
+    std::string config_path { path_temp.str() };
+
+    add_name_val_to_obj("deletion_allowed", true, d, allocator);
+    rapidjson::StringBuffer buf;
+    rapidjson::Writer<rapidjson::StringBuffer> writer(buf);
+    if (!d.Accept(writer)) {
+      ldpp_dout(dpp, 0) << "ERROR: can't make json for vault" << dendl;
+      return -EINVAL;
+    }
+    std::string post_data { buf.GetString() };
+
+    int res = send_request(dpp, "POST", "", config_path,
+       post_data, dummy_bl);
+    if (res < 0) {
+      return res;
+    }
+    if (dummy_bl.length() != 0) {
+      ldpp_dout(dpp, 0) << "ERROR: unexpected response from Vault marking key to delete: "
+       << dummy_bl
+       << dendl;
+      return -EINVAL;
+    }
+
+    res = send_request(dpp, "DELETE", "", delete_path,
+       string{}, dummy_bl);
+    if (res < 0) {
+      return res;
+    }
+    if (dummy_bl.length() != 0) {
+      ldpp_dout(dpp, 0) << "ERROR: unexpected response from Vault deleting key: "
+       << dummy_bl
+       << dendl;
+      return -EINVAL;
+    }
+    return 0;
+  }
 };
 
 class KvSecretEngine: public VaultSecretEngine {
 
 public:
 
-  KvSecretEngine(CephContext *cct, EngineParmMap parms): VaultSecretEngine(cct){
+  KvSecretEngine(CephContext *cct, SSEContext & kctx, EngineParmMap parms): VaultSecretEngine(cct, kctx){
     if (!parms.empty()) {
       lderr(cct) << "ERROR: vault kv secrets engine takes no parameters (ignoring them)" << dendl;
     }
@@ -876,24 +1003,25 @@ std::string config_to_engine_and_parms(CephContext *cct,
 
 static int get_actual_key_from_vault(const DoutPrefixProvider *dpp,
                                      CephContext *cct,
+                                     SSEContext & kctx,
                                      map<string, bufferlist>& attrs,
                                      std::string& actual_key, bool make_it)
 {
-  std::string secret_engine_str = cct->_conf->rgw_crypt_vault_secret_engine;
+  std::string secret_engine_str = kctx.secret_engine();
   EngineParmMap secret_engine_parms;
   auto secret_engine { config_to_engine_and_parms(
     cct, "rgw_crypt_vault_secret_engine",
     secret_engine_str, secret_engine_parms) };
-  ldpp_dout(dpp, 20) << "Vault authentication method: " << cct->_conf->rgw_crypt_vault_auth << dendl;
+  ldpp_dout(dpp, 20) << "Vault authentication method: " << kctx.auth() << dendl;
   ldpp_dout(dpp, 20) << "Vault Secrets Engine: " << secret_engine << dendl;
 
   if (RGW_SSE_KMS_VAULT_SE_KV == secret_engine){
     std::string key_id = get_str_attribute(attrs, RGW_ATTR_CRYPT_KEYID);
-    KvSecretEngine engine(cct, std::move(secret_engine_parms));
+    KvSecretEngine engine(cct, kctx, std::move(secret_engine_parms));
     return engine.get_key(dpp, key_id, actual_key);
   }
   else if (RGW_SSE_KMS_VAULT_SE_TRANSIT == secret_engine){
-    TransitSecretEngine engine(cct, std::move(secret_engine_parms));
+    TransitSecretEngine engine(cct, kctx, std::move(secret_engine_parms));
     std::string key_id = get_str_attribute(attrs, RGW_ATTR_CRYPT_KEYID);
     return make_it
        ? engine.make_actual_key(dpp, attrs, actual_key)
@@ -908,19 +1036,21 @@ static int get_actual_key_from_vault(const DoutPrefixProvider *dpp,
 
 static int make_actual_key_from_vault(const DoutPrefixProvider *dpp,
                                      CephContext *cct,
+                                     SSEContext & kctx,
                                      map<string, bufferlist>& attrs,
                                      std::string& actual_key)
 {
-    return get_actual_key_from_vault(dpp, cct, attrs, actual_key, true);
+    return get_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key, true);
 }
 
 
 static int reconstitute_actual_key_from_vault(const DoutPrefixProvider *dpp,
                                      CephContext *cct,
+                                     SSEContext & kctx,
                                      map<string, bufferlist>& attrs,
                                      std::string& actual_key)
 {
-    return get_actual_key_from_vault(dpp, cct, attrs, actual_key, false);
+    return get_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key, false);
 }
 
 
@@ -940,14 +1070,94 @@ static int get_actual_key_from_kmip(const DoutPrefixProvider *dpp,
     return -EINVAL;
   }
 }
+class KMSContext : public SSEContext {
+  CephContext *cct;
+public:
+  KMSContext(CephContext*_cct) : cct{_cct} {};
+  ~KMSContext() override {};
+  const std::string & backend() override {
+    return cct->_conf->rgw_crypt_s3_kms_backend;
+  };
+  const std::string & addr() override {
+    return cct->_conf->rgw_crypt_vault_addr;
+  };
+  const std::string & auth() override {
+    return cct->_conf->rgw_crypt_vault_auth;
+  };
+  const std::string & k_namespace() override {
+    return cct->_conf->rgw_crypt_vault_namespace;
+  };
+  const std::string & prefix() override {
+    return cct->_conf->rgw_crypt_vault_prefix;
+  };
+  const std::string & secret_engine() override {
+    return cct->_conf->rgw_crypt_vault_secret_engine;
+  };
+  const std::string & ssl_cacert() override {
+    return cct->_conf->rgw_crypt_vault_ssl_cacert;
+  };
+  const std::string & ssl_clientcert() override {
+    return cct->_conf->rgw_crypt_vault_ssl_clientcert;
+  };
+  const std::string & ssl_clientkey() override {
+    return cct->_conf->rgw_crypt_vault_ssl_clientkey;
+  };
+  const std::string & token_file() override {
+    return cct->_conf->rgw_crypt_vault_token_file;
+  };
+  const bool verify_ssl() override {
+    return cct->_conf->rgw_crypt_vault_verify_ssl;
+  };
+};
 
+class SseS3Context : public SSEContext {
+  CephContext *cct;
+public:
+  static const std::string sse_s3_secret_engine;
+  SseS3Context(CephContext*_cct) : cct{_cct} {};
+  ~SseS3Context(){};
+  const std::string & backend() override {
+   return cct->_conf->rgw_crypt_sse_s3_backend;
+  };
+  const std::string & addr() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_addr;
+  };
+  const std::string & auth() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_auth;
+  };
+  const std::string & k_namespace() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_namespace;
+  };
+  const std::string & prefix() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_prefix;
+  };
+  const std::string & secret_engine() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_secret_engine;
+  };
+  const std::string & ssl_cacert() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_ssl_cacert;
+  };
+  const std::string & ssl_clientcert() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_ssl_clientcert;
+  };
+  const std::string & ssl_clientkey() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_ssl_clientkey;
+  };
+  const std::string & token_file() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_token_file;
+  };
+  const bool verify_ssl() override {
+    return cct->_conf->rgw_crypt_sse_s3_vault_verify_ssl;
+  };
+};
 
 int reconstitute_actual_key_from_kms(const DoutPrefixProvider *dpp, CephContext *cct,
                             map<string, bufferlist>& attrs,
                             std::string& actual_key)
 {
   std::string key_id = get_str_attribute(attrs, RGW_ATTR_CRYPT_KEYID);
-  std::string kms_backend { cct->_conf->rgw_crypt_s3_kms_backend };
+  KMSContext kctx { cct };
+  const std::string &kms_backend { kctx.backend() };
 
   ldpp_dout(dpp, 20) << "Getting KMS encryption key for key " << key_id << dendl;
   ldpp_dout(dpp, 20) << "SSE-KMS backend is " << kms_backend << dendl;
@@ -957,7 +1167,7 @@ int reconstitute_actual_key_from_kms(const DoutPrefixProvider *dpp, CephContext
   }
 
   if (RGW_SSE_KMS_BACKEND_VAULT == kms_backend) {
-    return reconstitute_actual_key_from_vault(dpp, cct, attrs, actual_key);
+    return reconstitute_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key);
   }
 
   if (RGW_SSE_KMS_BACKEND_KMIP == kms_backend) {
@@ -977,8 +1187,91 @@ int make_actual_key_from_kms(const DoutPrefixProvider *dpp, CephContext *cct,
                             map<string, bufferlist>& attrs,
                             std::string& actual_key)
 {
-  std::string kms_backend { cct->_conf->rgw_crypt_s3_kms_backend };
+  KMSContext kctx { cct };
+  const std::string &kms_backend { kctx.backend() };
   if (RGW_SSE_KMS_BACKEND_VAULT == kms_backend)
-    return make_actual_key_from_vault(dpp, cct, attrs, actual_key);
+    return make_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key);
   return reconstitute_actual_key_from_kms(dpp, cct, attrs, actual_key);
 }
+
+int reconstitute_actual_key_from_sse_s3(const DoutPrefixProvider *dpp,
+                            CephContext *cct,
+                            map<string, bufferlist>& attrs,
+                            std::string& actual_key)
+{
+  std::string key_id = get_str_attribute(attrs, RGW_ATTR_CRYPT_KEYID);
+  SseS3Context kctx { cct };
+  const std::string &kms_backend { kctx.backend() };
+
+  ldpp_dout(dpp, 20) << "Getting SSE-S3  encryption key for key " << key_id << dendl;
+  ldpp_dout(dpp, 20) << "SSE-KMS backend is " << kms_backend << dendl;
+
+  if (RGW_SSE_KMS_BACKEND_VAULT == kms_backend) {
+    return reconstitute_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key);
+  }
+
+  ldpp_dout(dpp, 0) << "ERROR: Invalid rgw_crypt_sse_s3_backend: " << kms_backend << dendl;
+  return -EINVAL;
+}
+
+int make_actual_key_from_sse_s3(const DoutPrefixProvider *dpp,
+                            CephContext *cct,
+                            map<string, bufferlist>& attrs,
+                            std::string& actual_key)
+{
+  SseS3Context kctx { cct };
+  const std::string kms_backend { kctx.backend() };
+  if (RGW_SSE_KMS_BACKEND_VAULT != kms_backend) {
+    ldpp_dout(dpp, 0) << "ERROR: Unsupported rgw_crypt_sse_s3_backend: " << kms_backend << dendl;
+    return -EINVAL;
+  }
+  return make_actual_key_from_vault(dpp, cct, kctx, attrs, actual_key);
+}
+
+
+int create_sse_s3_bucket_key(const DoutPrefixProvider *dpp,
+                                     CephContext *cct,
+                                     const std::string& bucket_key)
+{
+  SseS3Context kctx { cct };
+
+  const std::string kms_backend { kctx.backend() };
+  if (RGW_SSE_KMS_BACKEND_VAULT != kms_backend) {
+    ldpp_dout(dpp, 0) << "ERROR: Unsupported rgw_crypt_sse_s3_backend: " << kms_backend << dendl;
+    return -EINVAL;
+  }
+
+  std::string secret_engine_str = kctx.secret_engine();
+  EngineParmMap secret_engine_parms;
+  auto secret_engine { config_to_engine_and_parms(
+    cct, "rgw_crypt_sse_s3_vault_secret_engine",
+    secret_engine_str, secret_engine_parms) };
+  if (RGW_SSE_KMS_VAULT_SE_TRANSIT == secret_engine){
+    TransitSecretEngine engine(cct, kctx, std::move(secret_engine_parms));
+       return engine.create_bucket_key(dpp, bucket_key);
+  }
+  else {
+    ldpp_dout(dpp, 0) << "Missing or invalid secret engine" << dendl;
+    return -EINVAL;
+  }
+}
+
+int remove_sse_s3_bucket_key(const DoutPrefixProvider *dpp,
+                                     CephContext *cct,
+                                     const std::string& bucket_key)
+{
+  SseS3Context kctx { cct };
+  std::string secret_engine_str = kctx.secret_engine();
+  EngineParmMap secret_engine_parms;
+  auto secret_engine { config_to_engine_and_parms(
+    cct, "rgw_crypt_sse_s3_vault_secret_engine",
+    secret_engine_str, secret_engine_parms) };
+  if (RGW_SSE_KMS_VAULT_SE_TRANSIT == secret_engine){
+    TransitSecretEngine engine(cct, kctx, std::move(secret_engine_parms));
+       return engine.delete_bucket_key(dpp, bucket_key);
+  }
+  else {
+    ldpp_dout(dpp, 0) << "Missing or invalid secret engine" << dendl;
+    return -EINVAL;
+  }
+}
index cd64794f122d83991a64910f5d1ca69c069ccf14..a5b83fa99f65f9d89bb987aa1e780eb4268dd2c8 100644 (file)
@@ -39,6 +39,18 @@ int make_actual_key_from_kms(const DoutPrefixProvider *dpp, CephContext *cct,
 int reconstitute_actual_key_from_kms(const DoutPrefixProvider *dpp, CephContext *cct,
                             std::map<std::string, bufferlist>& attrs,
                             std::string& actual_key);
+int make_actual_key_from_sse_s3(const DoutPrefixProvider *dpp, CephContext *cct,
+                            std::map<std::string, bufferlist>& attrs,
+                            std::string& actual_key);
+int reconstitute_actual_key_from_sse_s3(const DoutPrefixProvider *dpp, CephContext *cct,
+                            std::map<std::string, bufferlist>& attrs,
+                            std::string& actual_key);
+
+int create_sse_s3_bucket_key(const DoutPrefixProvider *dpp, CephContext *cct,
+                            const std::string& actual_key);
+
+int remove_sse_s3_bucket_key(const DoutPrefixProvider *dpp, CephContext *cct,
+                            const std::string& actual_key);
 
 /**
  * SecretEngine Interface
index a819d61777800886a9cf33775a7b9ad686862ac8..31822d862c60577802cccf9576638c165197ae33 100644 (file)
@@ -477,7 +477,7 @@ public:
         if (ret < 0) {
           ldpp_dout(dpp, 0) << "ERROR: list_op returned ret=" << ret
                                 << dendl;
-          return ret;
+          return false;
         }
       }
       delay();
index 33b161a45f9f96b9e4d6d1bb7c3dcdefee9fac8b..c51eecded53d204b39b1cf03bea67297dc57f68f 100644 (file)
@@ -316,7 +316,13 @@ void rgw_format_ops_log_entry(struct rgw_log_entry& entry, Formatter *formatter)
       formatter->close_section();
     }
   }
-
+  if (!entry.access_key_id.empty()) {
+    formatter->dump_string("access_key_id", entry.access_key_id);
+  }
+  if (!entry.subuser.empty()) {
+    formatter->dump_string("subuser", entry.subuser);
+  }
+  formatter->dump_bool("temp_url", entry.temp_url);
   formatter->close_section();
 }
 
@@ -344,10 +350,14 @@ int OpsLogManifold::log(struct req_state* s, struct rgw_log_entry& entry)
 }
 
 OpsLogFile::OpsLogFile(CephContext* cct, std::string& path, uint64_t max_data_size) :
-  cct(cct), file(path, std::ofstream::app), data_size(0), max_data_size(max_data_size)
+  cct(cct), data_size(0), max_data_size(max_data_size), path(path), need_reopen(false)
 {
 }
 
+void OpsLogFile::reopen() {
+  need_reopen = true;
+}
+
 void OpsLogFile::flush()
 {
   {
@@ -359,6 +369,11 @@ void OpsLogFile::flush()
   for (auto bl : flush_buffer) {
     int try_num = 0;
     while (true) {
+      if (!file.is_open() || need_reopen) {
+        need_reopen = false;
+        file.close();
+        file.open(path, std::ofstream::app);
+      }
       bl.write_stream(file);
       if (!file) {
         ldpp_dout(this, 0) << "ERROR: failed to log RGW ops log file entry" << dendl;
@@ -582,6 +597,7 @@ int rgw_log_op(RGWREST* const rest, struct req_state *s, const string& op_name,
 
   if (s->auth.identity) {
     entry.identity_type = s->auth.identity->get_identity_type();
+    s->auth.identity->write_ops_log_entry(entry);
   } else {
     entry.identity_type = TYPE_NONE;
   }
index 7bcb62b18579cb90791f8fa61cd1b877c114f467..acbf441f47b32fafa945d8d375aee6e6ae902b7e 100644 (file)
@@ -43,9 +43,12 @@ struct rgw_log_entry {
   std::string trans_id;
   std::vector<std::string> token_claims;
   uint32_t identity_type;
+  std::string access_key_id;
+  std::string subuser;
+  bool temp_url {false};
 
   void encode(bufferlist &bl) const {
-    ENCODE_START(12, 5, bl);
+    ENCODE_START(13, 5, bl);
     encode(object_owner.id, bl);
     encode(bucket_owner.id, bl);
     encode(bucket, bl);
@@ -71,10 +74,13 @@ struct rgw_log_entry {
     encode(trans_id, bl);
     encode(token_claims, bl);
     encode(identity_type,bl);
+    encode(access_key_id, bl);
+    encode(subuser, bl);
+    encode(temp_url, bl);
     ENCODE_FINISH(bl);
   }
   void decode(bufferlist::const_iterator &p) {
-    DECODE_START_LEGACY_COMPAT_LEN(12, 5, 5, p);
+    DECODE_START_LEGACY_COMPAT_LEN(13, 5, 5, p);
     decode(object_owner.id, p);
     if (struct_v > 3)
       decode(bucket_owner.id, p);
@@ -129,6 +135,11 @@ struct rgw_log_entry {
     if (struct_v >= 12) {
       decode(identity_type, p);
     }
+    if (struct_v >= 13) {
+      decode(access_key_id, p);
+      decode(subuser, p);
+      decode(temp_url, p);
+    }
     DECODE_FINISH(p);
   }
   void dump(ceph::Formatter *f) const;
@@ -173,6 +184,8 @@ class OpsLogFile : public JsonOpsLogSink, public Thread, public DoutPrefixProvid
   bool stopped;
   uint64_t data_size;
   uint64_t max_data_size;
+  std::string path;
+  std::atomic_bool need_reopen;
 
   void flush();
 protected:
@@ -184,6 +197,7 @@ public:
   CephContext *get_cct() const override { return cct; }
   unsigned get_subsys() const override { return dout_subsys; }
   std::ostream& gen_prefix(std::ostream& out) const override { return out << "rgw OpsLogFile: "; }
+  void reopen();
   void start();
   void stop();
 };
index 8d6555a2b7fa06a9f18cb2840cb9bf5a856e847b..a346b33b7c004e163133acba316b3ad7bbe559d6 100644 (file)
@@ -131,6 +131,15 @@ static void handle_sigterm(int signum)
 
 }
 
+static OpsLogFile* ops_log_file = nullptr;
+
+static void rgw_sighup_handler(int signum) {
+    if (ops_log_file != nullptr) {
+        ops_log_file->reopen();
+    }
+    sighup_handler(signum);
+}
+
 static void godown_alarm(int signum)
 {
   _exit(0);
@@ -315,7 +324,6 @@ int radosgw_Main(int argc, const char **argv)
   common_init_finish(g_ceph_context);
 
   init_async_signal_handler();
-  register_async_signal_handler(SIGHUP, sighup_handler);
 
   TracepointProvider::initialize<rgw_rados_tracepoint_traits>(g_ceph_context);
   TracepointProvider::initialize<rgw_op_tracepoint_traits>(g_ceph_context);
@@ -546,12 +554,12 @@ int radosgw_Main(int argc, const char **argv)
     olog_socket->init(g_conf()->rgw_ops_log_socket_path);
     olog->add_sink(olog_socket);
   }
-  OpsLogFile* ops_log_file;
   if (!g_conf()->rgw_ops_log_file_path.empty()) {
     ops_log_file = new OpsLogFile(g_ceph_context, g_conf()->rgw_ops_log_file_path, g_conf()->rgw_ops_log_data_backlog);
     ops_log_file->start();
     olog->add_sink(ops_log_file);
   }
+  register_async_signal_handler(SIGHUP, rgw_sighup_handler);
   olog->add_sink(new OpsLogRados(store));
 
   r = signal_fd_init();
@@ -693,7 +701,7 @@ int radosgw_Main(int argc, const char **argv)
     delete fec;
   }
 
-  unregister_async_signal_handler(SIGHUP, sighup_handler);
+  unregister_async_signal_handler(SIGHUP, rgw_sighup_handler);
   unregister_async_signal_handler(SIGTERM, handle_sigterm);
   unregister_async_signal_handler(SIGINT, handle_sigterm);
   unregister_async_signal_handler(SIGUSR1, handle_sigterm);
index 89dbe92a2c8c0a97b28e21e6861635e6b6bea41f..0fa2ffc85aef9d3d324787a08163af1a898add92 100644 (file)
@@ -3427,6 +3427,11 @@ void RGWDeleteBucket::execute(optional_yield y)
     return;
   }
 
+  op_ret = rgw_remove_sse_s3_bucket_key(s);
+  if (op_ret != 0) {
+      // do nothing; it will already have been logged
+  }
+
   op_ret = s->bucket->remove_bucket(this, false, false, nullptr, y);
   if (op_ret < 0 && op_ret == -ECANCELED) {
       // lost a race, either with mdlog sync or another delete bucket operation.
@@ -3631,15 +3636,15 @@ int RGWPutObj::verify_permission(optional_yield y)
 
     constexpr auto encrypt_attr = "x-amz-server-side-encryption";
     constexpr auto s3_encrypt_attr = "s3:x-amz-server-side-encryption";
-    auto enc_header = s->info.x_meta_map.find(encrypt_attr);
-    if (enc_header != s->info.x_meta_map.end()){
+    auto enc_header = s->info.crypt_attribute_map.find(encrypt_attr);
+    if (enc_header != s->info.crypt_attribute_map.end()){
       rgw_add_to_iam_environment(s->env, s3_encrypt_attr, enc_header->second);
     }
 
     constexpr auto kms_attr = "x-amz-server-side-encryption-aws-kms-key-id";
     constexpr auto s3_kms_attr = "s3:x-amz-server-side-encryption-aws-kms-key-id";
-    auto kms_header = s->info.x_meta_map.find(kms_attr);
-    if (kms_header != s->info.x_meta_map.end()){
+    auto kms_header = s->info.crypt_attribute_map.find(kms_attr);
+    if (kms_header != s->info.crypt_attribute_map.end()){
       rgw_add_to_iam_environment(s->env, s3_kms_attr, kms_header->second);
     }
 
@@ -8651,36 +8656,17 @@ void RGWPutBucketEncryption::execute(optional_yield y)
     return;
   }
 
-  if(bucket_encryption_conf.kms_master_key_id().compare("") != 0) {
-    ldpp_dout(this, 5) << "encryption not supported with sse-kms" << dendl;
-    op_ret = -ERR_NOT_IMPLEMENTED;
-    s->err.message = "SSE-KMS support is not provided";
-    return;
-  }
-
-  if(bucket_encryption_conf.sse_algorithm().compare("AES256") != 0) {
-    ldpp_dout(this, 5) << "only aes256 algorithm is supported for encryption" << dendl;
-    op_ret = -ERR_NOT_IMPLEMENTED;
-    s->err.message = "Encryption is supported only with AES256 algorithm";
-    return;
-  }
-
   op_ret = store->forward_request_to_master(this, s->user.get(), nullptr, data, nullptr, s->info, y);
   if (op_ret < 0) {
     ldpp_dout(this, 20) << "forward_request_to_master returned ret=" << op_ret << dendl;
     return;
   }
 
-  bufferlist key_id_bl;
-  string bucket_owner_id = s->bucket->get_info().owner.id;
-  key_id_bl.append(bucket_owner_id.c_str(), bucket_owner_id.size() + 1);
-
   bufferlist conf_bl;
   bucket_encryption_conf.encode(conf_bl);
-  op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this, y, &conf_bl, &key_id_bl] {
+  op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this, y, &conf_bl] {
     rgw::sal::Attrs attrs = s->bucket->get_attrs();
     attrs[RGW_ATTR_BUCKET_ENCRYPTION_POLICY] = conf_bl;
-    attrs[RGW_ATTR_BUCKET_ENCRYPTION_KEY_ID] = key_id_bl;
     return s->bucket->merge_and_store_attrs(this, attrs, y);
   });
 }
index 68f874a5d724e50f6c93aa817578d71f3fb13024..dfd3f4f8e1bd26060e449ed6ef0b3f0af5e752ac 100644 (file)
@@ -47,10 +47,18 @@ int rgw_opa_authorize(RGWOp *& op,
   jf.dump_string("decoded_uri", s->decoded_uri.c_str());
   jf.dump_string("params", s->info.request_params.c_str());
   jf.dump_string("request_uri_aws4", s->info.request_uri_aws4.c_str());
-  jf.dump_string("object_name", s->object->get_name().c_str());
-  jf.dump_string("subuser", s->auth.identity->get_subuser().c_str());
-  jf.dump_object("user_info", s->user->get_info());
-  jf.dump_object("bucket_info", s->bucket->get_info());
+  if (s->object) {
+    jf.dump_string("object_name", s->object->get_name().c_str());
+  }
+  if (s->auth.identity) {
+    jf.dump_string("subuser", s->auth.identity->get_subuser().c_str());
+  }
+  if (s->user) {
+    jf.dump_object("user_info", s->user->get_info());
+  }
+  if (s->bucket) {
+    jf.dump_object("bucket_info", s->bucket->get_info());
+  }
   jf.close_section();
   jf.close_section();
 
index a27db1224fac3a1119ca0ac991c8d503648182e4..bc6c34e68bffb563f3e6f7c98567ea332b2899a6 100644 (file)
@@ -9154,6 +9154,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
 
   string etag;
   string content_type;
+  string storage_class;
   ACLOwner owner;
 
   object.meta.size = astate->size;
@@ -9168,6 +9169,10 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
   if (iter != astate->attrset.end()) {
     content_type = rgw_bl_str(iter->second);
   }
+  iter = astate->attrset.find(RGW_ATTR_STORAGE_CLASS);
+  if (iter != astate->attrset.end()) {
+    storage_class = rgw_bl_str(iter->second);
+  }
   iter = astate->attrset.find(RGW_ATTR_ACL);
   if (iter != astate->attrset.end()) {
     r = decode_policy(dpp, iter->second, &owner);
@@ -9196,6 +9201,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
 
   object.meta.etag = etag;
   object.meta.content_type = content_type;
+  object.meta.storage_class = storage_class;
   object.meta.owner = owner.get_id().to_str();
   object.meta.owner_display_name = owner.get_display_name();
 
@@ -9207,6 +9213,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
   list_state.meta.category = main_category;
   list_state.meta.etag = etag;
   list_state.meta.content_type = content_type;
+  list_state.meta.storage_class = storage_class;
 
   librados::IoCtx head_obj_ctx; // initialize to data pool so we can get pool id
   int ret = get_obj_head_ioctx(dpp, bucket_info, obj, &head_obj_ctx);
index ff2af574fba22525d176ebed26e30ab16be03f5f..7d6a51a573d79e1391b00fb89910757a912e9d4e 100644 (file)
@@ -141,6 +141,129 @@ static struct response_attr_param resp_attr_params[] = {
   {NULL, NULL},
 };
 
+#define SSE_C_GROUP 1
+#define KMS_GROUP 2
+
+int get_encryption_defaults(req_state *s)
+{
+  int meta_sse_group = 0;
+  constexpr auto sse_c_prefix = "x-amz-server-side-encryption-customer-";
+  constexpr auto encrypt_attr = "x-amz-server-side-encryption";
+  constexpr auto context_attr = "x-amz-server-side-encryption-context";
+  constexpr auto kms_attr = "x-amz-server-side-encryption-aws-kms-key-id";
+  constexpr auto bucket_key_attr = "x-amz-server-side-encryption-bucket-key-enabled";
+  bool bucket_configuration_found { false };
+  bool rest_only { false };
+
+  for (auto& kv : s->info.crypt_attribute_map) {
+    if (kv.first.find(sse_c_prefix) == 0)
+      meta_sse_group |= SSE_C_GROUP;
+    else if (kv.first.find(encrypt_attr) == 0)
+      meta_sse_group |= KMS_GROUP;
+  }
+  if (meta_sse_group == (SSE_C_GROUP|KMS_GROUP)) {
+    s->err.message = "Server side error - can't do sse-c & sse-kms|sse-s3";
+    return -EINVAL;
+  }
+
+  const auto& buck_attrs = s->bucket_attrs;
+  auto aiter = buck_attrs.find(RGW_ATTR_BUCKET_ENCRYPTION_POLICY);
+  RGWBucketEncryptionConfig bucket_encryption_conf;
+  if (aiter != buck_attrs.end()) {
+    ldpp_dout(s, 5) << "Found RGW_ATTR_BUCKET_ENCRYPTION_POLICY on "
+           << s->bucket_name << dendl;
+
+    bufferlist::const_iterator iter{&aiter->second};
+
+    try {
+      bucket_encryption_conf.decode(iter);
+      bucket_configuration_found = true;
+    } catch (const buffer::error& e) {
+      s->err.message = "Server side error - can't decode bucket_encryption_conf";
+      ldpp_dout(s, 5) << __func__ <<  "decode bucket_encryption_conf failed" << dendl;
+      return -EINVAL;
+    }
+  }
+  if (meta_sse_group & SSE_C_GROUP) {
+    ldpp_dout(s, 20) << "get_encryption_defaults: no defaults cause sse-c forced"
+       << dendl;
+    return 0;                  // sse-c: no defaults here
+  }
+  std::string sse_algorithm { bucket_encryption_conf.sse_algorithm() };
+  auto kms_master_key_id { bucket_encryption_conf.kms_master_key_id() };
+  bool bucket_key_enabled { bucket_encryption_conf.bucket_key_enabled() };
+  bool kms_attr_seen = false;
+  if (bucket_configuration_found) {
+    ldpp_dout(s, 5) << "RGW_ATTR_BUCKET_ENCRYPTION ALGO: "
+         <<  sse_algorithm << dendl;
+  }
+
+  auto iter = s->info.crypt_attribute_map.find(encrypt_attr);
+  if (iter != s->info.crypt_attribute_map.end()) {
+ldpp_dout(s, 20) << "get_encryption_defaults: found encrypt_attr " << encrypt_attr << " = " << iter->second << ", setting sse_algorithm to that" << dendl;
+    rest_only = true;
+    sse_algorithm = iter->second;
+  } else if (sse_algorithm != "") {
+    rgw_set_amz_meta_header(s->info.crypt_attribute_map, encrypt_attr, sse_algorithm, OVERWRITE);
+  }
+
+  iter = s->info.crypt_attribute_map.find(kms_attr);
+  if (iter != s->info.crypt_attribute_map.end()) {
+ldpp_dout(s, 20) << "get_encryption_defaults: found kms_attr " << kms_attr << " = " << iter->second << ", setting kms_attr_seen" << dendl;
+    if (!rest_only) {
+      s->err.message = std::string("incomplete rest sse parms: ") + kms_attr + " not valid without kms";
+      ldpp_dout(s, 5) << __func__ << "argument problem: " << s->err.message << dendl;
+      return -EINVAL;
+    }
+    kms_attr_seen = true;
+  } else if (!rest_only && kms_master_key_id != "") {
+ldpp_dout(s, 20) << "get_encryption_defaults: no kms_attr, but kms_master_key_id = " << kms_master_key_id << ", settig kms_attr_seen" << dendl;
+    kms_attr_seen = true;
+    rgw_set_amz_meta_header(s->info.crypt_attribute_map, kms_attr, kms_master_key_id, OVERWRITE);
+  }
+
+  iter = s->info.crypt_attribute_map.find(bucket_key_attr);
+  if (iter != s->info.crypt_attribute_map.end()) {
+ldpp_dout(s, 20) << "get_encryption_defaults: found bucket_key_attr " << bucket_key_attr << " = " << iter->second << ", setting kms_attr_seen" << dendl;
+    if (!rest_only) {
+      s->err.message = std::string("incomplete rest sse parms: ") + bucket_key_attr + " not valid without kms";
+      ldpp_dout(s, 5) << __func__ << "argument problem: " << s->err.message << dendl;
+      return -EINVAL;
+    }
+    kms_attr_seen = true;
+  } else if (!rest_only && bucket_key_enabled) {
+ldpp_dout(s, 20) << "get_encryption_defaults: no bucket_key_attr, but bucket_key_enabled,  setting kms_attr_seen" << dendl;
+    kms_attr_seen = true;
+    rgw_set_amz_meta_header(s->info.crypt_attribute_map, bucket_key_attr, "true", OVERWRITE);
+  }
+
+  iter = s->info.crypt_attribute_map.find(context_attr);
+  if (iter != s->info.crypt_attribute_map.end()) {
+ldpp_dout(s, 20) << "get_encryption_defaults: found context_attr " << context_attr << " = " << iter->second << ", setting kms_attr_seen" << dendl;
+    if (!rest_only) {
+      s->err.message = std::string("incomplete rest sse parms: ") + context_attr + " not valid without kms";
+      ldpp_dout(s, 5) << __func__ << "argument problem: " << s->err.message << dendl;
+      return -EINVAL;
+    }
+    kms_attr_seen = true;
+  }
+
+  if (kms_attr_seen && sse_algorithm == "") {
+ldpp_dout(s, 20) << "get_encryption_defaults: kms_attr but no algorithm, defaulting to aws_kms" << dendl;
+    sse_algorithm = "aws:kms";
+  }
+for (const auto& kv: s->info.crypt_attribute_map) {
+ldpp_dout(s, 20) << "get_encryption_defaults:  final map: " << kv.first << " = " << kv.second << dendl;
+}
+ldpp_dout(s, 20) << "get_encryption_defaults:  kms_attr_seen is " << kms_attr_seen << " and sse_algorithm is " << sse_algorithm << dendl;
+  if (kms_attr_seen && sse_algorithm != "aws:kms") {
+    s->err.message = "algorithm <" + sse_algorithm + "> but got sse-kms attributes";
+    return -EINVAL;
+  }
+
+  return 0;
+}
+
 int RGWGetObj_ObjStore_S3Website::send_response_data(bufferlist& bl, off_t bl_ofs, off_t bl_len) {
   map<string, bufferlist>::iterator iter;
   iter = attrs.find(RGW_ATTR_AMZ_WEBSITE_REDIRECT_LOCATION);
@@ -2340,7 +2463,7 @@ void RGWDeleteBucket_ObjStore_S3::send_response()
   end_header(s, this);
 }
 
-static inline void map_qs_metadata(struct req_state* s)
+static inline void map_qs_metadata(struct req_state* s, bool crypto_too)
 {
   /* merge S3 valid user metadata from the query-string into
    * x_meta_map, which maps them to attributes */
@@ -2350,6 +2473,9 @@ static inline void map_qs_metadata(struct req_state* s)
     if (k.find("x-amz-meta-") == /* offset */ 0) {
       rgw_add_amz_meta_header(s->info.x_meta_map, k, elt.second);
     }
+    if (crypto_too && k.find("x-amz-server-side-encryption") == /* offset */ 0) {
+      rgw_set_amz_meta_header(s->info.crypt_attribute_map, k, elt.second, OVERWRITE);
+    }
   }
 }
 
@@ -2360,7 +2486,12 @@ int RGWPutObj_ObjStore_S3::get_params(optional_yield y)
 
   int ret;
 
-  map_qs_metadata(s);
+  map_qs_metadata(s, true);
+  ret = get_encryption_defaults(s);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << __func__ << "(): get_encryption_defaults() returned ret=" << ret << dendl;
+    return ret;
+  }
 
   RGWAccessControlPolicy_S3 s3policy(s->cct);
   ret = create_s3_policy(s, store, s3policy, s->owner);
@@ -2600,7 +2731,7 @@ int RGWPutObj_ObjStore_S3::get_encrypt_filter(
   else
   {
     std::unique_ptr<BlockCrypt> block_crypt;
-    res = rgw_s3_prepare_encrypt(s, attrs, nullptr, &block_crypt, crypt_http_responses);
+    res = rgw_s3_prepare_encrypt(s, attrs, &block_crypt, crypt_http_responses);
     if (res == 0 && block_crypt != nullptr) {
       filter->reset(new RGWPutObj_BlockEncrypt(s, s->cct, cb, std::move(block_crypt)));
     }
@@ -2640,7 +2771,7 @@ int RGWPostObj_ObjStore_S3::get_params(optional_yield y)
     return op_ret;
   }
 
-  map_qs_metadata(s);
+  map_qs_metadata(s, false);
 
   ldpp_dout(this, 20) << "adding bucket to policy env: " << s->bucket->get_name()
                    << dendl;
@@ -2696,6 +2827,20 @@ int RGWPostObj_ObjStore_S3::get_params(optional_yield y)
     env.add_var(part.name, part_str);
   } while (!done);
 
+  for (auto &p: parts) {
+    if (! boost::istarts_with(p.first, "x-amz-server-side-encryption")) {
+      continue;
+    }
+    bufferlist &d { p.second.data };
+    std::string v { rgw_trim_whitespace(std::string_view(d.c_str(), d.length())) };
+    rgw_set_amz_meta_header(s->info.crypt_attribute_map, p.first, v, OVERWRITE);
+  }
+  int r = get_encryption_defaults(s);
+  if (r < 0) {
+    ldpp_dout(this, 5) << __func__ << "(): get_encryption_defaults() returned ret=" << r << dendl;
+    return r;
+  }
+
   string object_str;
   if (!part_str(parts, "key", &object_str)) {
     err_msg = "Key not specified";
@@ -2768,7 +2913,7 @@ int RGWPostObj_ObjStore_S3::get_params(optional_yield y)
     attrs[attr_name] = attr_bl;
   }
 
-  int r = get_policy(y);
+  r = get_policy(y);
   if (r < 0)
     return r;
 
@@ -3133,7 +3278,7 @@ int RGWPostObj_ObjStore_S3::get_encrypt_filter(
     rgw::sal::DataProcessor *cb)
 {
   std::unique_ptr<BlockCrypt> block_crypt;
-  int res = rgw_s3_prepare_encrypt(s, attrs, &parts, &block_crypt,
+  int res = rgw_s3_prepare_encrypt(s, attrs, &block_crypt,
                                    crypt_http_responses);
   if (res == 0 && block_crypt != nullptr) {
     filter->reset(new RGWPutObj_BlockEncrypt(s, s->cct, cb, std::move(block_crypt)));
@@ -3605,7 +3750,8 @@ void RGWGetBucketEncryption_ObjStore_S3::send_response()
   dump_start(s);
 
   if (!op_ret) {
-    encode_xml("ServerSideEncryptionConfiguration", bucket_encryption_conf, s->formatter);
+    encode_xml("ServerSideEncryptionConfiguration", XMLNS_AWS_S3,
+      bucket_encryption_conf, s->formatter);
     rgw_flush_formatter_and_reset(s, s->formatter);
   }
 }
@@ -3746,7 +3892,7 @@ void RGWInitMultipart_ObjStore_S3::send_response()
 int RGWInitMultipart_ObjStore_S3::prepare_encryption(map<string, bufferlist>& attrs)
 {
   int res = 0;
-  res = rgw_s3_prepare_encrypt(s, attrs, nullptr, nullptr, crypt_http_responses);
+  res = rgw_s3_prepare_encrypt(s, attrs, nullptr, crypt_http_responses);
   return res;
 }
 
@@ -3757,7 +3903,7 @@ int RGWCompleteMultipart_ObjStore_S3::get_params(optional_yield y)
     return ret;
   }
 
-  map_qs_metadata(s);
+  map_qs_metadata(s, true);
 
   return do_aws4_auth_completion();
 }
@@ -5823,6 +5969,8 @@ rgw::auth::s3::LDAPEngine::get_creds_info(const rgw::RGWToken& token) const noex
     token.id,
     RGW_PERM_FULL_CONTROL,
     acct_privilege_t::IS_PLAIN_ACCT,
+    rgw::auth::RemoteApplier::AuthInfo::NO_ACCESS_KEY,
+    rgw::auth::RemoteApplier::AuthInfo::NO_SUBUSER,
     TYPE_LDAP
   };
 }
@@ -5933,7 +6081,7 @@ rgw::auth::s3::LocalEngine::authenticate(
   }
 
   auto apl = apl_factory->create_apl_local(cct, s, user->get_info(),
-                                           k.subuser, std::nullopt);
+                                           k.subuser, std::nullopt, access_key_id);
   return result_t::grant(std::move(apl), completer_factory(k.key));
 }
 
@@ -5948,6 +6096,8 @@ rgw::auth::s3::STSEngine::get_creds_info(const STS::SessionToken& token) const n
     token.acct_name,
     token.perm_mask,
     (token.is_admin) ? acct_privilege_t::IS_ADMIN_ACCT: acct_privilege_t::IS_PLAIN_ACCT,
+    token.access_key_id,
+    rgw::auth::RemoteApplier::AuthInfo::NO_SUBUSER,
     token.acct_type
   };
 }
@@ -6113,7 +6263,7 @@ rgw::auth::s3::STSEngine::authenticate(
     return result_t::grant(std::move(apl), completer_factory(token.secret_access_key));
   } else { // This is for all local users of type TYPE_RGW or TYPE_NONE
     string subuser;
-    auto apl = local_apl_factory->create_apl_local(cct, s, user->get_info(), subuser, token.perm_mask);
+    auto apl = local_apl_factory->create_apl_local(cct, s, user->get_info(), subuser, token.perm_mask, std::string(_access_key_id));
     return result_t::grant(std::move(apl), completer_factory(token.secret_access_key));
   }
 }
index 754b292616ed955d3c1b7067d9ab13578053856a..54f0cfff9f895fde98ff17633c8b47c204796b28 100644 (file)
@@ -8,9 +8,17 @@
 #include "rgw_rest.h"
 #include "rgw_sts.h"
 #include "rgw_web_idp.h"
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
 #include "jwt-cpp/jwt.h"
+#pragma clang diagnostic pop
+#pragma GCC diagnostic pop
 #include "rgw_oidc_provider.h"
 
+
 namespace rgw::auth::sts {
 
 class WebTokenEngine : public rgw::auth::Engine {
@@ -227,3 +235,4 @@ public:
                                const rgw::auth::StrategyRegistry&,
                                const std::string&) override;
 };
+
index f7a6340a41c273f4f6caf74fd0582add9aa0b73e..119bdc04c839424f23a9f860c67dc860edae46c8 100644 (file)
@@ -2474,6 +2474,7 @@ RGWOp* RGWSwiftWebsiteHandler::get_ws_index_op()
   } else {
     s->object->set_name(s->bucket->get_info().website_conf.get_index_doc());
   }
+  s->object->set_bucket(s->bucket.get());
 
   auto getop = new RGWGetObj_ObjStore_SWIFT;
   getop->set_get_data(boost::algorithm::equals("GET", s->info.method));
@@ -2805,7 +2806,12 @@ int RGWHandler_REST_SWIFT::postauth_init(optional_yield y)
   struct req_init_state* t = &s->init_state;
 
   /* XXX Stub this until Swift Auth sets account into URL. */
-  s->bucket_tenant = s->user->get_tenant();
+  if (g_conf()->rgw_swift_account_in_url
+      && s->user->get_id().id == RGW_USER_ANON_ID) {
+    s->bucket_tenant = s->account_name;
+  } else {
+    s->bucket_tenant = s->user->get_tenant();
+  }
   s->bucket_name = t->url_bucket;
 
   if (!s->object) {
index a552f3b2b2a2ed4d2d38ddf5b165ee5757bc8694..f6c7d2314dc09fb4f013cf340fd6eb8cd8c3c553 100644 (file)
@@ -25,9 +25,9 @@ using rgw::IAM::Policy;
 
 void RGWRestUserPolicy::dump(Formatter *f) const
 {
-  encode_json("Policyname", policy_name , f);
-  encode_json("Username", user_name , f);
-  encode_json("Policydocument", policy, f);
+  encode_json("PolicyName", policy_name , f);
+  encode_json("UserName", user_name , f);
+  encode_json("PolicyDocument", policy, f);
 }
 
 void RGWRestUserPolicy::send_response()
@@ -276,14 +276,20 @@ void RGWListUserPolicies::execute(optional_yield y)
       s->formatter->close_section();
       s->formatter->open_object_section("ListUserPoliciesResult");
       bufferlist bl = it->second;
-      decode(policies, bl);
+      try {
+        decode(policies, bl);
+      } catch (buffer::error& err) {
+        ldpp_dout(this, 0) << "ERROR: failed to decode user policies" << dendl;
+        op_ret = -EIO;
+        return;
+      }
+      s->formatter->open_object_section("PolicyNames");
       for (const auto& p : policies) {
-        s->formatter->open_object_section("PolicyNames");
         s->formatter->dump_string("member", p.first);
-        s->formatter->close_section();
       }
       s->formatter->close_section();
       s->formatter->close_section();
+      s->formatter->close_section();
     } else {
       ldpp_dout(this, 0) << "ERROR: RGW_ATTR_USER_POLICY not found" << dendl;
       op_ret = -ERR_NO_SUCH_ENTITY;
index cc551a43fe91cd09d3918bb8095bdffdd55062d8..9d02cbbfdf501bc914e514f411b6580eb72423e7 100644 (file)
@@ -734,7 +734,9 @@ class Bucket {
     bool versioning_enabled() { return info.versioning_enabled(); }
 
     /** Check if a Bucket pointer is empty */
-    static bool empty(Bucket* b) { return (!b || b->empty()); }
+    static bool empty(const Bucket* b) { return (!b || b->empty()); }
+    /** Check if a Bucket unique pointer is empty */
+    static bool empty(const std::unique_ptr<Bucket>& b) { return (!b || b->empty()); }
     /** Clone a copy of this bucket.  Used when modification is necessary of the copy */
     virtual std::unique_ptr<Bucket> clone() = 0;
 
index c34ee221edff3952f0e238cbc9368fbe635688ee..8f41807368c997db838cd4a2a8e02d61cd1b178e 100644 (file)
@@ -61,6 +61,12 @@ void TempURLApplier::modify_request_state(const DoutPrefixProvider* dpp, req_sta
 
 }
 
+void TempURLApplier::write_ops_log_entry(rgw_log_entry& entry) const
+{
+  LocalApplier::write_ops_log_entry(entry);
+  entry.temp_url = true;
+}
+
 /* TempURL: engine */
 bool TempURLEngine::is_applicable(const req_state* const s) const noexcept
 {
@@ -461,7 +467,7 @@ ExternalTokenEngine::authenticate(const DoutPrefixProvider* dpp,
 
   auto apl = apl_factory->create_apl_local(cct, s, user->get_info(),
                                            extract_swift_subuser(swift_user),
-                                           std::nullopt);
+                                           std::nullopt, rgw::auth::LocalApplier::NO_ACCESS_KEY);
   return result_t::grant(std::move(apl));
 }
 
@@ -615,7 +621,7 @@ SignedTokenEngine::authenticate(const DoutPrefixProvider* dpp,
 
   auto apl = apl_factory->create_apl_local(cct, s, user->get_info(),
                                            extract_swift_subuser(swift_user),
-                                           std::nullopt);
+                                           std::nullopt, rgw::auth::LocalApplier::NO_ACCESS_KEY);
   return result_t::grant(std::move(apl));
 }
 
index 166a2ad793e8c043c6dde30b2b4d6cbe35425237..430739a447c8a8db9e7e5d345ab7b83ff6c5095b 100644 (file)
@@ -24,10 +24,11 @@ class TempURLApplier : public rgw::auth::LocalApplier {
 public:
   TempURLApplier(CephContext* const cct,
                  const RGWUserInfo& user_info)
-    : LocalApplier(cct, user_info, LocalApplier::NO_SUBUSER, std::nullopt) {
+    : LocalApplier(cct, user_info, LocalApplier::NO_SUBUSER, std::nullopt, LocalApplier::NO_ACCESS_KEY) {
   };
 
   void modify_request_state(const DoutPrefixProvider* dpp, req_state * s) const override; /* in/out */
+  void write_ops_log_entry(rgw_log_entry& entry) const override;
 
   struct Factory {
     virtual ~Factory() {}
@@ -153,7 +154,7 @@ class SwiftAnonymousApplier : public rgw::auth::LocalApplier {
   public:
     SwiftAnonymousApplier(CephContext* const cct,
                           const RGWUserInfo& user_info)
-      : LocalApplier(cct, user_info, LocalApplier::NO_SUBUSER, std::nullopt) {
+      : LocalApplier(cct, user_info, LocalApplier::NO_SUBUSER, std::nullopt, LocalApplier::NO_ACCESS_KEY) {
     }
     bool is_admin_of(const rgw_user& uid) const {return false;}
     bool is_owner_of(const rgw_user& uid) const {return uid.id.compare(RGW_USER_ANON_ID) == 0;}
@@ -225,11 +226,12 @@ class DefaultStrategy : public rgw::auth::Strategy,
                             const req_state* const s,
                             const RGWUserInfo& user_info,
                             const std::string& subuser,
-                            const std::optional<uint32_t>& perm_mask) const override {
+                            const std::optional<uint32_t>& perm_mask,
+                            const std::string& access_key_id) const override {
     auto apl = \
       rgw::auth::add_3rdparty(store, rgw_user(s->account_name),
         rgw::auth::add_sysreq(cct, store, s,
-          rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask)));
+          rgw::auth::LocalApplier(cct, user_info, subuser, perm_mask, access_key_id)));
     /* TODO(rzarzynski): replace with static_ptr. */
     return aplptr_t(new decltype(apl)(std::move(apl)));
   }
index b7a8adafcee730d554e6c211c6bbd5e9625f9a01..cf28d5eecc48d9b4d30a1077d38d0889c491112a 100644 (file)
@@ -258,6 +258,10 @@ void rgw_sync_bucket_entities::set_bucket(std::optional<string> tenant,
     bucket.emplace();
   }
 
+  if (!bucket) {
+    return;
+  }
+
   set_bucket_field(tenant, &bucket->tenant);
   set_bucket_field(bucket_name, &bucket->name);
   set_bucket_field(bucket_id, &bucket->bucket_id);
index 143ede3c094c9e725570714452f975b4585badd2..2af2638c0a9e5e344e3234580435e7c3e1eb25e0 100644 (file)
@@ -23,6 +23,7 @@ set(link_targets spawn)
 if(WITH_JAEGER)
   list(APPEND link_targets ${jaeger_base})
 endif()
+list(APPEND link_targets rgw_common)
 target_link_libraries(dbstore_lib PUBLIC ${link_targets})
 
 set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} dbstore_lib)
index d92821b2f1f8060f59d53b68d6933c6b4964f21a..b4f2a6121d7af65a157898d971a91277c0e21a5e 100755 (executable)
@@ -33,7 +33,7 @@ postfix = "-" + time.strftime(TIME_FORMAT, time.localtime())
 
 current_branch = check_output('git rev-parse --abbrev-ref HEAD',
                               shell=True).strip().decode()
-if current_branch in 'mimic nautilus octopus pacific'.split():
+if current_branch in 'mimic nautilus octopus pacific quincy'.split():
     postfix += '-' + current_branch
     print(f"Adding current branch name '-{current_branch}' as a postfix")
 
index 4a2a21b98fa73c254fffd6e9873d8f03e236ac9a..83a500e5dd64aa70ef047dcd3229e56896d9f71f 100644 (file)
@@ -3,6 +3,8 @@
 
 #pragma once
 
+#include <fmt/format.h>
+
 #include "crimson/common/log.h"
 #include "crimson/os/seastore/onode_manager/staged-fltree/value.h"
 
@@ -36,6 +38,22 @@ inline std::ostream& operator<<(std::ostream& os, const test_item_t& item) {
   return os << "TestItem(#" << item.id << ", " << item.size << "B)";
 }
 
+enum class delta_op_t : uint8_t {
+  UPDATE_ID,
+  UPDATE_TAIL_MAGIC,
+};
+
+inline std::ostream& operator<<(std::ostream& os, const delta_op_t op) {
+  switch (op) {
+  case delta_op_t::UPDATE_ID:
+    return os << "update_id";
+  case delta_op_t::UPDATE_TAIL_MAGIC:
+    return os << "update_tail_magic";
+  default:
+    return os << "unknown";
+  }
+}
+
 template <value_magic_t MAGIC,
           string_size_t MAX_NS_SIZE,
           string_size_t MAX_OID_SIZE,
@@ -86,10 +104,6 @@ class TestValue final : public Value {
 
  public:
   class Recorder final : public ValueDeltaRecorder {
-    enum class delta_op_t : uint8_t {
-      UPDATE_ID,
-      UPDATE_TAIL_MAGIC,
-    };
 
    public:
     Recorder(ceph::bufferlist& encoded)
index 6d252fae18b71d65e4698c70fcf697de8bdd480a..6bc89491f16bfb2ed36e06aabfda48742dcb2557 100644 (file)
@@ -1,6 +1,7 @@
 #include "include/buffer.h"
 #include "include/encoding.h"
 
+#include <fmt/format.h>
 #include "gtest/gtest.h"
 
 using namespace std;
@@ -319,26 +320,27 @@ TEST(EncodingRoundTrip, Integers) {
   }
 }
 
-const char* expected_what[] = {
-  "void lame_decoder(int) no longer understand old encoding version 100 < 200: Malformed input",
-  "void lame_decoder(int) decode past end of struct encoding: Malformed input"
-};
-
-void lame_decoder(int which) {
-  switch (which) {
-  case 0:
-    throw buffer::malformed_input(DECODE_ERR_OLDVERSION(__PRETTY_FUNCTION__, 100, 200));
-  case 1:
-    throw buffer::malformed_input(DECODE_ERR_PAST(__PRETTY_FUNCTION__));
-  }
-}
-
 TEST(EncodingException, Macros) {
-  for (unsigned i = 0; i < sizeof(expected_what)/sizeof(expected_what[0]); i++) {
+  const struct {
+    buffer::malformed_input exc;
+    std::string expected_what;
+  } tests[] = {
+    {
+      DECODE_ERR_OLDVERSION(__PRETTY_FUNCTION__, 100, 200),
+      fmt::format("{} no longer understand old encoding version 100 < 200: Malformed input",
+                  __PRETTY_FUNCTION__)
+    },
+    {
+      DECODE_ERR_PAST(__PRETTY_FUNCTION__),
+      fmt::format("{} decode past end of struct encoding: Malformed input",
+                  __PRETTY_FUNCTION__)
+    }
+  };
+  for (auto& [exec, expected_what] : tests) {
     try {
-      lame_decoder(i);
+      throw exec;
     } catch (const exception& e) {
-      ASSERT_EQ(string(expected_what[i]), string(e.what()));
+      ASSERT_NE(string(e.what()).find(expected_what), string::npos);
     }
   }
 }
index 1dac35469c23712256b5af116e4b229c160745f9..bddd074c578de254de36e9ae2d47e0a50b5a5863 100644 (file)
@@ -4,7 +4,7 @@ add_executable(ceph_test_lazy_omap_stats
   main.cc
   lazy_omap_stats_test.cc)
 target_link_libraries(ceph_test_lazy_omap_stats
-  librados Boost::system ${UNITTEST_LIBS})
+  librados Boost::system ceph-common ${UNITTEST_LIBS})
 install(TARGETS
   ceph_test_lazy_omap_stats
   DESTINATION ${CMAKE_INSTALL_BINDIR})
index 97b0208b9bc17cab0a7a6fd7002185dee23be2b5..d0b8bd7343c724b248d6a60e2ef43dd6dde636bd 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <algorithm>
 #include <boost/algorithm/string/trim.hpp>
-#include <boost/process.hpp>
 #include <boost/tokenizer.hpp>
 #include <boost/uuid/uuid.hpp>             // uuid class
 #include <boost/uuid/uuid_generators.hpp>  // generators
 #include <thread>
 #include <vector>
 
-#include "lazy_omap_stats_test.h"
+#include "common/ceph_json.h"
+#include "global/global_init.h"
 #include "include/compat.h"
 
+#include "lazy_omap_stats_test.h"
+
 using namespace std;
-namespace bp = boost::process;
 
 void LazyOmapStatsTest::init(const int argc, const char** argv)
 {
@@ -100,6 +101,8 @@ void LazyOmapStatsTest::init(const int argc, const char** argv)
          << endl;
     exit(ret);
   }
+
+  get_pool_id(conf.pool_name);
 }
 
 void LazyOmapStatsTest::shutdown()
@@ -167,20 +170,54 @@ void LazyOmapStatsTest::create_payload()
        << endl;
 }
 
-void LazyOmapStatsTest::scrub() const
+void LazyOmapStatsTest::scrub()
 {
-  // Use CLI because we need to block
-
   cout << "Scrubbing" << endl;
-  error_code ec;
-  bp::ipstream is;
-  bp::child c("ceph osd deep-scrub all --block");
-  c.wait(ec);
-  if (ec) {
-    cout << "Deep scrub command failed! Error: " << ec.value() << " "
-         << ec.message() << endl;
-    exit(ec.value());
+
+  cout << "Before scrub stamps:" << endl;
+  string target_pool(conf.pool_id);
+  target_pool.append(".");
+  bool target_pool_found = false;
+  map<string, string> before_scrub = get_scrub_stamps();
+  for (auto [pg, stamp] : before_scrub) {
+    cout << "pg = " << pg << " stamp = " << stamp << endl;
+    if (pg.rfind(target_pool, 0) == 0) {
+        target_pool_found = true;
+    }
+  }
+  if (!target_pool_found) {
+    cout << "Error: Target pool " << conf.pool_name << ":" << conf.pool_id
+         << " not found!" << endl;
+    exit(2); // ENOENT
+  }
+  cout << endl;
+
+  // Short sleep to make sure the new pool is visible
+  sleep(5);
+
+  string command = R"({"prefix": "osd deep-scrub", "who": "all"})";
+  auto output = get_output(command);
+  cout << output << endl;
+
+  cout << "Waiting for deep-scrub to complete..." << endl;
+  while (sleep(1) == 0) {
+    cout << "Current scrub stamps:" <<  endl;
+    bool complete = true;
+    map<string, string> current_stamps = get_scrub_stamps();
+    for (auto [pg, stamp] : current_stamps) {
+        cout << "pg = " << pg << " stamp = " << stamp << endl;
+        if (stamp == before_scrub[pg]) {
+          // See if stamp for each pg has changed
+          // If not, we haven't completed the deep-scrub
+          complete = false;
+        }
+    }
+    cout << endl;
+    if (complete) {
+      break;
+    }
   }
+  cout << "Scrubbing complete" << endl;
 }
 
 const int LazyOmapStatsTest::find_matches(string& output, regex& reg) const
@@ -195,11 +232,17 @@ const int LazyOmapStatsTest::find_matches(string& output, regex& reg) const
 }
 
 const string LazyOmapStatsTest::get_output(const string command,
-                                           const bool silent)
+                                           const bool silent,
+                                           const CommandTarget target)
 {
   librados::bufferlist inbl, outbl;
   string output;
-  int ret = rados.mgr_command(command, inbl, &outbl, &output);
+  int ret = 0;
+  if (target == CommandTarget::TARGET_MON) {
+    ret = rados.mon_command(command, inbl, &outbl, &output);
+  } else {
+    ret = rados.mgr_command(command, inbl, &outbl, &output);
+  }
   if (output.length() && !silent) {
     cout << output << endl;
   }
@@ -212,6 +255,46 @@ const string LazyOmapStatsTest::get_output(const string command,
   return string(outbl.c_str(), outbl.length());
 }
 
+void LazyOmapStatsTest::get_pool_id(const string& pool)
+{
+  cout << R"(Querying pool id)" << endl;
+
+  string command = R"({"prefix": "osd pool ls", "detail": "detail", "format": "json"})";
+  librados::bufferlist inbl, outbl;
+  auto output = get_output(command, false, CommandTarget::TARGET_MON);
+  JSONParser parser;
+  parser.parse(output.c_str(), output.size());
+  for (const auto& pool : parser.get_array_elements()) {
+    JSONParser parser2;
+    parser2.parse(pool.c_str(), static_cast<int>(pool.size()));
+    auto* obj = parser2.find_obj("pool_name");
+    if (obj->get_data().compare(conf.pool_name) == 0) {
+      obj = parser2.find_obj("pool_id");
+      conf.pool_id = obj->get_data();
+    }
+  }
+  if (conf.pool_id.empty()) {
+    cout << "Failed to find pool ID for pool " << conf.pool_name << "!" << endl;
+    exit(2);    // ENOENT
+  } else {
+    cout << "Found pool ID: " << conf.pool_id << endl;
+  }
+}
+
+map<string, string> LazyOmapStatsTest::get_scrub_stamps() {
+  map<string, string> stamps;
+  string command = R"({"prefix": "pg dump", "format": "json"})";
+  auto output = get_output(command);
+  JSONParser parser;
+  parser.parse(output.c_str(), output.size());
+  auto* obj = parser.find_obj("pg_map")->find_obj("pg_stats");
+  for (auto pg = obj->find_first(); !pg.end(); ++pg) {
+    stamps.insert({(*pg)->find_obj("pgid")->get_data(),
+                  (*pg)->find_obj("last_deep_scrub_stamp")->get_data()});
+  }
+  return stamps;
+}
+
 void LazyOmapStatsTest::check_one()
 {
   string full_output = get_output();
@@ -333,34 +416,6 @@ index_t LazyOmapStatsTest::get_indexes(regex& reg, string& output) const
   return indexes;
 }
 
-const string LazyOmapStatsTest::get_pool_id(string& pool)
-{
-  cout << R"(Querying pool id)" << endl;
-
-  string command = R"({"prefix": "osd pool ls", "detail": "detail"})";
-  librados::bufferlist inbl, outbl;
-  string output;
-  int ret = rados.mon_command(command, inbl, &outbl, &output);
-  if (output.length()) cout << output << endl;
-  if (ret < 0) {
-    ret = -ret;
-    cerr << "Failed to get pool id! Error: " << ret << " " << strerror(ret)
-         << endl;
-    exit(ret);
-  }
-  string dump_output(outbl.c_str(), outbl.length());
-  cout << dump_output << endl;
-
-  string poolregstring = R"(pool\s(\d+)\s')" + pool + "'";
-  regex reg(poolregstring);
-  smatch match;
-  regex_search(dump_output, match, reg);
-  auto pool_id = match[1].str();
-  cout << "Found pool ID: " << pool_id << endl;
-
-  return pool_id;
-}
-
 void LazyOmapStatsTest::check_pg_dump()
 {
   cout << R"(Checking "pg dump" output)" << endl;
@@ -459,12 +514,10 @@ void LazyOmapStatsTest::check_pg_dump_pools()
             "\n");
   index_t indexes = get_indexes(reg, dump_output);
 
-  auto pool_id = get_pool_id(conf.pool_name);
-
   reg =
       "\n"
       R"(()" +
-      pool_id +
+      conf.pool_id +
       R"(\s.*))"
       "\n";
   smatch match;
index 020c72c7358adbfef2fee886917905cc2c9c0892..57cbe6e32698b9083a7bb067c09e1b0bf1035d4b 100644 (file)
@@ -39,10 +39,16 @@ class LazyOmapStatsTest
     unsigned keys = 2000;
     unsigned how_many = 50;
     std::string pool_name = "lazy_omap_test_pool";
+    std::string pool_id;
     unsigned total_bytes = 0;
     unsigned total_keys = 0;
   } conf;
 
+  typedef enum {
+    TARGET_MON,
+    TARGET_MGR
+  } CommandTarget;
+
   LazyOmapStatsTest(LazyOmapStatsTest&) = delete;
   void operator=(LazyOmapStatsTest) = delete;
   void init(const int argc, const char** argv);
@@ -51,7 +57,7 @@ class LazyOmapStatsTest
   const std::string get_name() const;
   void create_payload();
   void write_many(const unsigned how_many);
-  void scrub() const;
+  void scrub();
   const int find_matches(std::string& output, std::regex& reg) const;
   void check_one();
   const int find_index(std::string& haystack, std::regex& needle,
@@ -61,7 +67,6 @@ class LazyOmapStatsTest
   void check_column(const int index, const std::string& table,
                     const std::string& type, bool header = true) const;
   index_t get_indexes(std::regex& reg, std::string& output) const;
-  const std::string get_pool_id(std::string& pool);
   void check_pg_dump();
   void check_pg_dump_summary();
   void check_pg_dump_pgs();
@@ -69,7 +74,10 @@ class LazyOmapStatsTest
   void check_pg_ls();
   const std::string get_output(
       const std::string command = R"({"prefix": "pg dump"})",
-      const bool silent = false);
+      const bool silent = false,
+      const CommandTarget target = CommandTarget::TARGET_MGR);
+  void get_pool_id(const std::string& pool);
+  std::map<std::string, std::string> get_scrub_stamps();
   void wait_for_active_clean();
 
  public:
index 75b66798e24086765c20060ab8927b1875c3722c..585fae104dea452f3572331e66bb77f9b8f8ebff 100644 (file)
@@ -470,7 +470,7 @@ TEST(LibCephFS, DirLs) {
     struct dirent rdent;
     struct ceph_statx stx;
     int len = ceph_readdirplus_r(cmount, ls_dir, &rdent, &stx,
-                                CEPH_STATX_SIZE, AT_NO_ATTR_SYNC, NULL);
+                                CEPH_STATX_SIZE, AT_STATX_DONT_SYNC, NULL);
     if (len == 0)
       break;
     ASSERT_EQ(len, 1);
@@ -1811,13 +1811,13 @@ TEST(LibCephFS, LazyStatx) {
 
   /*
    * Now sleep, do a chmod on the first client and the see whether we get a
-   * different ctime with a statx that uses AT_NO_ATTR_SYNC
+   * different ctime with a statx that uses AT_STATX_DONT_SYNC
    */
   sleep(1);
   stx.stx_mode = 0644;
   ASSERT_EQ(ceph_ll_setattr(cmount1, file1, &stx, CEPH_SETATTR_MODE, perms1), 0);
 
-  ASSERT_EQ(ceph_ll_getattr(cmount2, file2, &stx, CEPH_STATX_CTIME, AT_NO_ATTR_SYNC, perms2), 0);
+  ASSERT_EQ(ceph_ll_getattr(cmount2, file2, &stx, CEPH_STATX_CTIME, AT_STATX_DONT_SYNC, perms2), 0);
   ASSERT_TRUE(stx.stx_mask & CEPH_STATX_CTIME);
   ASSERT_TRUE(stx.stx_ctime.tv_sec == old_ctime.tv_sec &&
              stx.stx_ctime.tv_nsec == old_ctime.tv_nsec);
index 28360b3d93833f73e2ffb905d89d965fa221f018..1d55bcf959d74bb434138a43e4a1ae7b46d1343b 100644 (file)
@@ -2318,3 +2318,47 @@ TEST(LibRadosAio, PoolEIOFlag) {
   ASSERT_TRUE(max_success + 1 == min_failed);
   my_lock.unlock();
 }
+
+// This test case reproduces https://tracker.ceph.com/issues/57152
+TEST(LibRadosAio, MultiReads) {
+
+  // here we test multithreaded aio reads
+
+  AioTestDataPP test_data;
+  ASSERT_EQ("", test_data.init());
+  auto my_completion = std::unique_ptr<AioCompletion>{Rados::aio_create_completion()};
+  ASSERT_TRUE(my_completion);
+  char buf[128];
+  memset(buf, 0xcc, sizeof(buf));
+  bufferlist bl1;
+  bl1.append(buf, sizeof(buf));
+  ASSERT_EQ(0, test_data.m_ioctx.aio_write("foo", my_completion.get(),
+                                           bl1, sizeof(buf), 0));
+  {
+    TestAlarm alarm;
+    ASSERT_EQ(0, my_completion->wait_for_complete());
+  }
+  ASSERT_EQ(0, my_completion->get_return_value());
+
+  // Don't use std::vector to store bufferlists (e.g for parallelizing aio_reads),
+  // as they are being moved whenever the vector resizes
+  // and will cause invalidated references.
+  std::deque<std::pair<bufferlist, std::unique_ptr<AioCompletion>>> reads;
+  for (int i = 0; i < 100; i++) {
+    // std::deque is appropriate here as emplace_back() is obliged to
+    // preserve the referenced inserted element. (Unlike insert() or erase())
+    auto& [bl, aiocp] = reads.emplace_back();
+    aiocp = std::unique_ptr<AioCompletion>{Rados::aio_create_completion()};
+    ASSERT_TRUE(aiocp);
+    ASSERT_EQ(0, test_data.m_ioctx.aio_read("foo", aiocp.get(),
+                                            &bl, sizeof(buf), 0));
+  }
+  for (auto& [bl, aiocp] : reads) {
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, aiocp->wait_for_complete());
+    }
+    ASSERT_EQ((int)sizeof(buf), aiocp->get_return_value());
+    ASSERT_EQ(0, memcmp(buf, bl.c_str(), sizeof(buf)));
+  }
+}
index de29f5f6efa3ac008d6887192119b5f2407393aa..e39e60f1488db04daef67ac56c9e797238efac1d 100644 (file)
@@ -58,7 +58,7 @@ TEST(LibRadosMiscConnectFailure, ConnectFailure) {
   ASSERT_EQ(0, rados_conf_read_file(cluster, NULL));
   ASSERT_EQ(0, rados_conf_parse_env(cluster, NULL));
 
-  ASSERT_EQ(0, rados_conf_set(cluster, "client_mount_timeout", "0.000000001"));
+  ASSERT_EQ(0, rados_conf_set(cluster, "client_mount_timeout", "1s"));
   ASSERT_EQ(0, rados_conf_set(cluster, "debug_monc", "20"));
   ASSERT_EQ(0, rados_conf_set(cluster, "debug_ms", "1"));
   ASSERT_EQ(0, rados_conf_set(cluster, "log_to_stderr", "true"));
index f34accf8f1340612db5e5ca7c176356c5ae509e9..e8f345bd5adc93587c933cd67823fded55304ad8 100644 (file)
@@ -5678,6 +5678,9 @@ TEST_F(LibRadosTwoPoolsPP, TierFlushDuringFlush) {
   // delete temp pool, so flushing chunk will fail
   ASSERT_EQ(0, s_cluster.pool_delete(temp_pool_name.c_str()));
 
+  // wait for maps to settle
+  cluster.wait_for_latest_osdmap();
+
   // flush to check if proper error is returned
   {
     ObjectReadOperation op;
index fc372b0d8c7a16a40df83428cb750eef92580a1d..a37f5803897422d6f8d3fbb83feecde104df8443 100644 (file)
@@ -118,10 +118,13 @@ TEST_F(TestMockCacheReplicatedWriteLog, init_state_write) {
   
   image_cache_state.empty = false;
   image_cache_state.clean = false;
+  ceph::mutex lock = ceph::make_mutex("MockImageCacheStateRWL lock");
   MockContextRWL finish_ctx;
   expect_metadata_set(mock_image_ctx);
   expect_context_complete(finish_ctx, 0);
-  image_cache_state.write_image_cache_state(&finish_ctx);
+  std::unique_lock locker(lock);
+  image_cache_state.write_image_cache_state(locker, &finish_ctx);
+  ASSERT_FALSE(locker.owns_lock());
   ASSERT_EQ(0, finish_ctx.wait());
 }
 
index b1fc4726461a5396516262d4edb83591fb637781..72a44dcc9e1110bed21371a18a5e8b65dc009ff6 100644 (file)
@@ -120,10 +120,13 @@ TEST_F(TestMockCacheSSDWriteLog, init_state_write) {
 
   image_cache_state.empty = false;
   image_cache_state.clean = false;
+  ceph::mutex lock = ceph::make_mutex("MockImageCacheStateSSD lock");
   MockContextSSD finish_ctx;
   expect_metadata_set(mock_image_ctx);
   expect_context_complete(finish_ctx, 0);
-  image_cache_state.write_image_cache_state(&finish_ctx);
+  std::unique_lock locker(lock);
+  image_cache_state.write_image_cache_state(locker, &finish_ctx);
+  ASSERT_FALSE(locker.owns_lock());
   ASSERT_EQ(0, finish_ctx.wait());
 }
 
index 4bcca201f7a93e154182b0fd01f2d27dfcc9bc95..e38ffffdbe49380a015de99ebc9b7ee1adcd8ffe 100644 (file)
@@ -312,6 +312,7 @@ TEST_F(TestMockDeepCopyImageCopyRequest, FastDiffNonExistent) {
 
   expect_get_image_size(mock_src_image_ctx, 1 << m_src_image_ctx->order);
   expect_get_image_size(mock_src_image_ctx, 0);
+  expect_op_work_queue(mock_src_image_ctx);
 
   librbd::deep_copy::NoOpHandler no_op;
   C_SaferCond ctx;
@@ -391,6 +392,85 @@ TEST_F(TestMockDeepCopyImageCopyRequest, FastDiffExistsClean) {
   ASSERT_EQ(0, ctx.wait());
 }
 
+TEST_F(TestMockDeepCopyImageCopyRequest, FastDiffMix) {
+  librados::snap_t snap_id_end;
+  ASSERT_EQ(0, create_snap("copy", &snap_id_end));
+
+  uint64_t object_count = 12;
+
+  librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
+  librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
+  MockObjectCopyRequest mock_object_copy_request;
+
+  InSequence seq;
+
+  MockDiffRequest mock_diff_request;
+  BitVector<2> diff_state;
+  diff_state.resize(object_count);
+  diff_state[1] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[2] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[3] = object_map::DIFF_STATE_DATA;
+  diff_state[5] = object_map::DIFF_STATE_DATA_UPDATED;
+  diff_state[8] = object_map::DIFF_STATE_DATA;
+  diff_state[9] = object_map::DIFF_STATE_DATA;
+  diff_state[10] = object_map::DIFF_STATE_DATA_UPDATED;
+  expect_diff_send(mock_diff_request, diff_state, 0);
+
+  expect_get_image_size(mock_src_image_ctx,
+                        object_count * (1 << m_src_image_ctx->order));
+  expect_get_image_size(mock_src_image_ctx, 0);
+
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request, 0);
+  expect_object_copy_send(mock_object_copy_request, 0);
+  expect_object_copy_send(mock_object_copy_request,
+                          OBJECT_COPY_REQUEST_FLAG_EXISTS_CLEAN);
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request, 0);
+  expect_op_work_queue(mock_src_image_ctx);
+  expect_object_copy_send(mock_object_copy_request,
+                          OBJECT_COPY_REQUEST_FLAG_EXISTS_CLEAN);
+  expect_object_copy_send(mock_object_copy_request,
+                          OBJECT_COPY_REQUEST_FLAG_EXISTS_CLEAN);
+  expect_object_copy_send(mock_object_copy_request, 0);
+  expect_op_work_queue(mock_src_image_ctx);
+
+  std::vector<bool> seen(object_count);
+  struct Handler : public librbd::deep_copy::NoOpHandler {
+    Handler(std::vector<bool>* seen) : m_seen(seen) {}
+
+    int update_progress(uint64_t object_no, uint64_t end_object_no) override {
+      EXPECT_THAT(object_no, ::testing::AllOf(::testing::Ge(1),
+                                              ::testing::Le(m_seen->size())));
+      EXPECT_EQ(end_object_no, m_seen->size());
+      EXPECT_FALSE((*m_seen)[object_no - 1]);
+      (*m_seen)[object_no - 1] = true;
+      return 0;
+    }
+
+    std::vector<bool>* m_seen;
+  } handler(&seen);
+
+  C_SaferCond ctx;
+  auto request = new MockImageCopyRequest(&mock_src_image_ctx,
+                                          &mock_dst_image_ctx,
+                                          0, snap_id_end, 0, false, boost::none,
+                                          m_snap_seqs, &handler, &ctx);
+  request->send();
+
+  ASSERT_EQ(m_snap_map, wait_for_snap_map(mock_object_copy_request));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 1, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 2, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 3, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 5, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 8, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 9, nullptr, 0));
+  ASSERT_TRUE(complete_object_copy(mock_object_copy_request, 10, nullptr, 0));
+  ASSERT_EQ(0, ctx.wait());
+
+  EXPECT_THAT(seen, ::testing::Each(::testing::IsTrue()));
+}
+
 TEST_F(TestMockDeepCopyImageCopyRequest, OutOfOrder) {
   std::string max_ops_str;
   ASSERT_EQ(0, _rados.conf_get("rbd_concurrent_management_ops", max_ops_str));
@@ -627,6 +707,32 @@ TEST_F(TestMockDeepCopyImageCopyRequest, Cancel_Inflight_Sync) {
   ASSERT_EQ(5u, handler.object_number.get());
 }
 
+TEST_F(TestMockDeepCopyImageCopyRequest, CancelBeforeSend) {
+  librados::snap_t snap_id_end;
+  ASSERT_EQ(0, create_snap("copy", &snap_id_end));
+
+  librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
+  librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
+
+  InSequence seq;
+
+  MockDiffRequest mock_diff_request;
+  expect_diff_send(mock_diff_request, {}, -EINVAL);
+  expect_get_image_size(mock_src_image_ctx, 2 * (1 << m_src_image_ctx->order));
+  expect_get_image_size(mock_src_image_ctx, 0);
+
+  librbd::deep_copy::NoOpHandler no_op;
+  C_SaferCond ctx;
+  auto request = new MockImageCopyRequest(&mock_src_image_ctx,
+                                          &mock_dst_image_ctx,
+                                          0, snap_id_end, 0, false, boost::none,
+                                          m_snap_seqs, &no_op, &ctx);
+  request->cancel();
+  request->send();
+
+  ASSERT_EQ(-ECANCELED, ctx.wait());
+}
+
 TEST_F(TestMockDeepCopyImageCopyRequest, MissingSnap) {
   librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
   librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
index 96b8fe306737b5ae4dfe174c268d4c4c81c4cf5a..e60409615ecd0a6d61c9df5cf5e4c4046914cc2e 100644 (file)
@@ -20,7 +20,7 @@
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include <arpa/inet.h>
-#include <list>
+#include <queue>
 #include <boost/scope_exit.hpp>
 
 namespace librbd {
@@ -69,26 +69,32 @@ struct GetMetadataRequest<MockRefreshImageCtx> {
 
 template <>
 struct RefreshParentRequest<MockRefreshImageCtx> {
-  static RefreshParentRequest* s_instance;
+  static std::queue<RefreshParentRequest*> s_instances;
   static RefreshParentRequest* create(MockRefreshImageCtx &mock_image_ctx,
                                       const ParentImageInfo &parent_md,
                                       const MigrationInfo &migration_info,
                                       Context *on_finish) {
-    ceph_assert(s_instance != nullptr);
-    s_instance->on_finish = on_finish;
-    return s_instance;
+    ceph_assert(!s_instances.empty());
+    auto instance = s_instances.front();
+    instance->on_finish = on_finish;
+    return instance;
   }
   static bool is_refresh_required(MockRefreshImageCtx &mock_image_ctx,
                                   const ParentImageInfo& parent_md,
                                   const MigrationInfo &migration_info) {
-    ceph_assert(s_instance != nullptr);
-    return s_instance->is_refresh_required();
+    ceph_assert(!s_instances.empty());
+    return s_instances.front()->is_refresh_required();
   }
 
   Context *on_finish = nullptr;
 
   RefreshParentRequest() {
-    s_instance = this;
+    s_instances.push(this);
+  }
+
+  ~RefreshParentRequest() {
+    ceph_assert(this == s_instances.front());
+    s_instances.pop();
   }
 
   MOCK_CONST_METHOD0(is_refresh_required, bool());
@@ -98,7 +104,7 @@ struct RefreshParentRequest<MockRefreshImageCtx> {
 };
 
 GetMetadataRequest<MockRefreshImageCtx>* GetMetadataRequest<MockRefreshImageCtx>::s_instance = nullptr;
-RefreshParentRequest<MockRefreshImageCtx>* RefreshParentRequest<MockRefreshImageCtx>::s_instance = nullptr;
+std::queue<RefreshParentRequest<MockRefreshImageCtx>*> RefreshParentRequest<MockRefreshImageCtx>::s_instances;
 
 } // namespace image
 
@@ -722,7 +728,6 @@ TEST_F(TestMockImageRefreshRequest, SuccessLegacySnapshotNoTimestampV2) {
   ASSERT_EQ(0, ctx.wait());
 }
 
-
 TEST_F(TestMockImageRefreshRequest, SuccessSetSnapshotV2) {
   REQUIRE_FORMAT_V2();
 
@@ -765,6 +770,38 @@ TEST_F(TestMockImageRefreshRequest, SuccessSetSnapshotV2) {
   ASSERT_EQ(0, ctx.wait());
 }
 
+TEST_F(TestMockImageRefreshRequest, SnapshotV2EnoentRetriesLimit) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+  ASSERT_EQ(0, snap_create(*ictx, "snap"));
+
+  MockRefreshImageCtx mock_image_ctx(*ictx);
+  MockGetMetadataRequest mock_get_metadata_request;
+  expect_op_work_queue(mock_image_ctx);
+  expect_test_features(mock_image_ctx);
+
+  InSequence seq;
+  for (int i = 0; i < RefreshRequest<>::MAX_ENOENT_RETRIES + 1; ++i) {
+    expect_get_mutable_metadata(mock_image_ctx, ictx->features, 0);
+    expect_get_parent(mock_image_ctx, 0);
+    expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
+                        mock_image_ctx.header_oid, {}, 0);
+    expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
+                        0);
+    expect_apply_metadata(mock_image_ctx, 0);
+    expect_get_group(mock_image_ctx, 0);
+    expect_get_snapshots(mock_image_ctx, false, -ENOENT);
+  }
+
+  C_SaferCond ctx;
+  auto req = new MockRefreshRequest(mock_image_ctx, false, false, &ctx);
+  req->send();
+
+  ASSERT_EQ(-ENOENT, ctx.wait());
+}
+
 TEST_F(TestMockImageRefreshRequest, SuccessChild) {
   REQUIRE_FEATURE(RBD_FEATURE_LAYERING);
 
@@ -797,8 +834,10 @@ TEST_F(TestMockImageRefreshRequest, SuccessChild) {
   expect_op_work_queue(mock_image_ctx);
   expect_test_features(mock_image_ctx);
 
+  mock_image_ctx.features &= ~RBD_FEATURE_OPERATIONS;
+
   InSequence seq;
-  expect_get_mutable_metadata(mock_image_ctx, ictx2->features, 0);
+  expect_get_mutable_metadata(mock_image_ctx, mock_image_ctx.features, 0);
   expect_get_parent(mock_image_ctx, 0);
   MockGetMetadataRequest mock_get_metadata_request;
   expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
@@ -806,7 +845,6 @@ TEST_F(TestMockImageRefreshRequest, SuccessChild) {
   expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
                       0);
   expect_apply_metadata(mock_image_ctx, 0);
-  expect_get_op_features(mock_image_ctx, RBD_OPERATION_FEATURE_CLONE_CHILD, 0);
   expect_get_group(mock_image_ctx, 0);
   expect_refresh_parent_is_required(*mock_refresh_parent_request, true);
   expect_refresh_parent_send(mock_image_ctx, *mock_refresh_parent_request, 0);
@@ -855,8 +893,10 @@ TEST_F(TestMockImageRefreshRequest, SuccessChildDontOpenParent) {
   expect_op_work_queue(mock_image_ctx);
   expect_test_features(mock_image_ctx);
 
+  mock_image_ctx.features &= ~RBD_FEATURE_OPERATIONS;
+
   InSequence seq;
-  expect_get_mutable_metadata(mock_image_ctx, ictx2->features, 0);
+  expect_get_mutable_metadata(mock_image_ctx, mock_image_ctx.features, 0);
   expect_get_parent(mock_image_ctx, 0);
   MockGetMetadataRequest mock_get_metadata_request;
   expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
@@ -864,7 +904,6 @@ TEST_F(TestMockImageRefreshRequest, SuccessChildDontOpenParent) {
   expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
                       0);
   expect_apply_metadata(mock_image_ctx, 0);
-  expect_get_op_features(mock_image_ctx, RBD_OPERATION_FEATURE_CLONE_CHILD, 0);
   expect_get_group(mock_image_ctx, 0);
   if (ictx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
     expect_init_exclusive_lock(mock_image_ctx, mock_exclusive_lock, 0);
@@ -878,6 +917,141 @@ TEST_F(TestMockImageRefreshRequest, SuccessChildDontOpenParent) {
   ASSERT_EQ(0, ctx.wait());
 }
 
+TEST_F(TestMockImageRefreshRequest, SuccessChildBeingFlattened) {
+  REQUIRE_FEATURE(RBD_FEATURE_LAYERING);
+
+  librbd::ImageCtx *ictx;
+  librbd::ImageCtx *ictx2 = nullptr;
+  std::string clone_name = get_temp_image_name();
+
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+  ASSERT_EQ(0, snap_create(*ictx, "snap"));
+  ASSERT_EQ(0, snap_protect(*ictx, "snap"));
+  BOOST_SCOPE_EXIT_ALL((&)) {
+    if (ictx2 != nullptr) {
+      close_image(ictx2);
+    }
+
+    librbd::NoOpProgressContext no_op;
+    ASSERT_EQ(0, librbd::api::Image<>::remove(m_ioctx, clone_name, no_op));
+    ASSERT_EQ(0, ictx->operations->snap_unprotect(
+        cls::rbd::UserSnapshotNamespace(), "snap"));
+  };
+
+  int order = ictx->order;
+  ASSERT_EQ(0, librbd::clone(m_ioctx, m_image_name.c_str(), "snap", m_ioctx,
+                             clone_name.c_str(), ictx->features, &order, 0, 0));
+
+  ASSERT_EQ(0, open_image(clone_name, &ictx2));
+
+  MockRefreshImageCtx mock_image_ctx(*ictx2);
+  auto mock_refresh_parent_request = new MockRefreshParentRequest();
+  MockRefreshParentRequest mock_refresh_parent_request_ext;
+  MockExclusiveLock mock_exclusive_lock;
+  expect_op_work_queue(mock_image_ctx);
+  expect_test_features(mock_image_ctx);
+
+  mock_image_ctx.features &= ~RBD_FEATURE_OPERATIONS;
+
+  InSequence seq;
+  expect_get_mutable_metadata(mock_image_ctx, mock_image_ctx.features, 0);
+  expect_get_parent(mock_image_ctx, 0);
+  MockGetMetadataRequest mock_get_metadata_request;
+  expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
+                      mock_image_ctx.header_oid, {}, 0);
+  expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
+                      0);
+  expect_apply_metadata(mock_image_ctx, 0);
+  expect_get_group(mock_image_ctx, 0);
+  expect_refresh_parent_is_required(*mock_refresh_parent_request, true);
+  expect_refresh_parent_send(mock_image_ctx, *mock_refresh_parent_request,
+                             -ENOENT);
+  expect_get_mutable_metadata(mock_image_ctx, mock_image_ctx.features, 0);
+  expect_get_parent(mock_image_ctx, 0);
+  expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
+                      mock_image_ctx.header_oid, {}, 0);
+  expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
+                      0);
+  expect_apply_metadata(mock_image_ctx, 0);
+  expect_get_group(mock_image_ctx, 0);
+  expect_refresh_parent_is_required(mock_refresh_parent_request_ext, false);
+  if (ictx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
+    expect_init_exclusive_lock(mock_image_ctx, mock_exclusive_lock, 0);
+  }
+  EXPECT_CALL(mock_image_ctx, rebuild_data_io_context());
+
+  C_SaferCond ctx;
+  auto req = new MockRefreshRequest(mock_image_ctx, false, false, &ctx);
+  req->send();
+
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageRefreshRequest, ChildEnoentRetriesLimit) {
+  REQUIRE_FEATURE(RBD_FEATURE_LAYERING);
+
+  librbd::ImageCtx *ictx;
+  librbd::ImageCtx *ictx2 = nullptr;
+  std::string clone_name = get_temp_image_name();
+
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+  ASSERT_EQ(0, snap_create(*ictx, "snap"));
+  ASSERT_EQ(0, snap_protect(*ictx, "snap"));
+  BOOST_SCOPE_EXIT_ALL((&)) {
+    if (ictx2 != nullptr) {
+      close_image(ictx2);
+    }
+
+    librbd::NoOpProgressContext no_op;
+    ASSERT_EQ(0, librbd::api::Image<>::remove(m_ioctx, clone_name, no_op));
+    ASSERT_EQ(0, ictx->operations->snap_unprotect(
+        cls::rbd::UserSnapshotNamespace(), "snap"));
+  };
+
+  int order = ictx->order;
+  ASSERT_EQ(0, librbd::clone(m_ioctx, m_image_name.c_str(), "snap", m_ioctx,
+                             clone_name.c_str(), ictx->features, &order, 0, 0));
+
+  ASSERT_EQ(0, open_image(clone_name, &ictx2));
+
+  MockRefreshImageCtx mock_image_ctx(*ictx2);
+  constexpr int num_tries = RefreshRequest<>::MAX_ENOENT_RETRIES + 1;
+  MockRefreshParentRequest* mock_refresh_parent_requests[num_tries];
+  for (auto& mock_refresh_parent_request : mock_refresh_parent_requests) {
+    mock_refresh_parent_request = new MockRefreshParentRequest();
+  }
+  MockGetMetadataRequest mock_get_metadata_request;
+  expect_op_work_queue(mock_image_ctx);
+  expect_test_features(mock_image_ctx);
+
+  mock_image_ctx.features &= ~RBD_FEATURE_OPERATIONS;
+
+  InSequence seq;
+  for (auto mock_refresh_parent_request : mock_refresh_parent_requests) {
+    expect_get_mutable_metadata(mock_image_ctx, mock_image_ctx.features, 0);
+    expect_get_parent(mock_image_ctx, 0);
+    expect_get_metadata(mock_image_ctx, mock_get_metadata_request,
+                        mock_image_ctx.header_oid, {}, 0);
+    expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {},
+                        0);
+    expect_apply_metadata(mock_image_ctx, 0);
+    expect_get_group(mock_image_ctx, 0);
+    expect_refresh_parent_is_required(*mock_refresh_parent_request, true);
+    expect_refresh_parent_send(mock_image_ctx, *mock_refresh_parent_request,
+                               -ENOENT);
+  }
+  expect_refresh_parent_apply(*mock_refresh_parent_requests[num_tries - 1]);
+  EXPECT_CALL(mock_image_ctx, rebuild_data_io_context());
+  expect_refresh_parent_finalize(
+      mock_image_ctx, *mock_refresh_parent_requests[num_tries - 1], 0);
+
+  C_SaferCond ctx;
+  auto req = new MockRefreshRequest(mock_image_ctx, false, false, &ctx);
+  req->send();
+
+  ASSERT_EQ(-ENOENT, ctx.wait());
+}
+
 TEST_F(TestMockImageRefreshRequest, SuccessOpFeatures) {
   REQUIRE_FORMAT_V2();
 
index 7a47c4f72a1e09229874ab459183d57b4f8e95b6..f3888755c79e584b83574479e8ebbfbf634a24ec 100644 (file)
@@ -8,6 +8,7 @@
 #include "librbd/migration/HttpClient.h"
 #include "gtest/gtest.h"
 #include "gmock/gmock.h"
+#include <unistd.h>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/beast/core.hpp>
 #include <boost/beast/http.hpp>
@@ -83,10 +84,29 @@ public:
     TestMockFixture::TearDown();
   }
 
+  // if we have a racing where another thread manages to bind and listen the
+  // port picked by this acceptor, try again.
+  static constexpr int MAX_BIND_RETRIES = 60;
+
   void create_acceptor(bool reuse) {
-    m_acceptor.emplace(*m_image_ctx->asio_engine,
+    for (int retries = 0;; retries++) {
+      try {
+       m_acceptor.emplace(*m_image_ctx->asio_engine,
                        boost::asio::ip::tcp::endpoint(
                          boost::asio::ip::tcp::v4(), m_server_port), reuse);
+       // yay!
+       break;
+      } catch (const boost::system::system_error& e) {
+       if (retries == MAX_BIND_RETRIES) {
+         throw;
+       }
+       if (e.code() != boost::system::errc::address_in_use) {
+         throw;
+       }
+      }
+      // backoff a little bit
+      sleep(1);
+    }
     m_server_port = m_acceptor->local_endpoint().port();
   }
 
index 95b25ffa12f0eba8680ff112dc89d1ed26d5543a..6ee148367d6c2b86256ce545e8cf7a6c539dff3d 100644 (file)
@@ -293,7 +293,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkPeer) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   for (int i = 0; i < 3; i++) {
@@ -328,7 +328,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkNoPeer) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   cls::rbd::MirrorSnapshotNamespace ns{
@@ -363,7 +363,7 @@ TEST_F(TestMockMirrorSnapshotCreatePrimaryRequest, SuccessUnlinkMultiplePeers) {
 
   librbd::ImageCtx *ictx;
   ASSERT_EQ(0, open_image(m_image_name, &ictx));
-  ictx->config.set_val("conf_rbd_mirroring_max_mirroring_snapshots", "3");
+  ictx->config.set_val("rbd_mirroring_max_mirroring_snapshots", "3");
 
   MockTestImageCtx mock_image_ctx(*ictx);
   for (int i = 0; i < 3; i++) {
index 4d39ae27e077105c27efc3838d751516e0b11800..480db94d2bf3f81027436dd9658b76b4da40ddb6 100644 (file)
@@ -1120,7 +1120,7 @@ TEST_F(TestMirroring, Snapshot)
   ASSERT_EQ(0, m_rbd.open(m_ioctx, image, image_name.c_str()));
 
   ASSERT_EQ(0, image.metadata_set(
-              "conf_rbd_mirroring_max_mirroring_snapshots", "3"));
+              "conf_rbd_mirroring_max_mirroring_snapshots", "5"));
 
   uint64_t snap_id;
 
@@ -1145,22 +1145,24 @@ TEST_F(TestMirroring, Snapshot)
   ASSERT_EQ(1U, snaps.size());
   ASSERT_EQ(snaps[0].id, snap_id);
 
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
-  ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
+  for (int i = 0; i < 5; i++) {
+    ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
+  }
   snaps.clear();
   ASSERT_EQ(0, image.snap_list(snaps));
-  ASSERT_EQ(3U, snaps.size());
-  ASSERT_EQ(snaps[2].id, snap_id);
+  ASSERT_EQ(5U, snaps.size());
+  ASSERT_EQ(snaps[4].id, snap_id);
 
   // automatic peer unlink on max_mirroring_snapshots reached
   ASSERT_EQ(0, image.mirror_image_create_snapshot(&snap_id));
   vector<librbd::snap_info_t> snaps1;
   ASSERT_EQ(0, image.snap_list(snaps1));
-  ASSERT_EQ(3U, snaps1.size());
+  ASSERT_EQ(5U, snaps1.size());
   ASSERT_EQ(snaps1[0].id, snaps[0].id);
   ASSERT_EQ(snaps1[1].id, snaps[1].id);
-  ASSERT_EQ(snaps1[2].id, snap_id);
+  ASSERT_EQ(snaps1[2].id, snaps[2].id);
+  ASSERT_EQ(snaps1[3].id, snaps[3].id);
+  ASSERT_EQ(snaps1[4].id, snap_id);
 
   librbd::snap_namespace_type_t snap_ns_type;
   ASSERT_EQ(0, image.snap_get_namespace_type(snap_id, &snap_ns_type));
index 340855657c4fd78164c0a9327c4dc4b78b1d8f25..3294616b9b26fa7f191b1b4e3ab76a5f61cdd046 100644 (file)
@@ -147,6 +147,13 @@ if(WITH_BLUESTORE)
   add_ceph_unittest(unittest_bdev)
   target_link_libraries(unittest_bdev os global)
 
+  # unittest_deferred
+  add_executable(unittest_deferred
+    test_deferred.cc
+    )
+  add_ceph_unittest(unittest_deferred)
+  target_link_libraries(unittest_deferred os global)
+
 endif(WITH_BLUESTORE)
 
 # unittest_transaction
diff --git a/ceph/src/test/objectstore/run_test_deferred.sh b/ceph/src/test/objectstore/run_test_deferred.sh
new file mode 100755 (executable)
index 0000000..1be4d91
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+
+if [[ ! (-x ./bin/unittest_deferred) || ! (-x ./bin/ceph-kvstore-tool) || ! (-x ./bin/ceph-bluestore-tool)]]
+then
+    echo Test must be run from ceph build directory
+    echo with unittest_deferred, ceph-kvstore-tool and ceph-bluestore-tool compiled
+    exit 1
+fi
+
+# Create BlueStore, only main block device, 4K AU, forced deferred 4K, 64K AU for BlueFS
+
+# Create file zapchajdziura, that is 0xe000 in size.
+# This adds to 0x0000 - 0x1000 of BlueStore superblock and 0x1000 - 0x2000 of BlueFS superblock,
+# making 0x00000 - 0x10000 filled, nicely aligning for 64K BlueFS requirements
+
+# Prefill 10 objects Object-0 .. Object-9, each 64K. Sync to disk.
+# Do transactions like:
+# - fill Object-x+1 16 times at offsets 0x0000, 0x1000, ... 0xf000 with 8bytes, trigerring deferred writes
+# - fill Object-x with 64K data
+# Repeat for Object-0 to Object-8.
+
+# Right after getting notification on_complete for all 9 transactions, immediately exit(1).
+./bin/unittest_deferred --log-to-stderr=false
+
+# Now we should have a considerable amount of pending deferred writes.
+# They do refer disk regions that do not belong to any object.
+
+# Perform compaction on RocksDB
+# This initializes BlueFS, but does not replay deferred writes.
+# It jiggles RocksDB files around. CURRENT and MANIFEST are recreated, with some .sst files too.
+# The hope here is that newly created RocksDB files will occupy space that is free,
+# but targetted by pending deferred writes.
+./bin/ceph-kvstore-tool bluestore-kv bluestore.test_temp_dir/ compact --log-to-stderr=false
+
+# It this step we (hopefully) get RocksDB files overwritten
+# We initialize BlueFS and RocksDB, there should be no problem here.
+# Then we apply deferred writes. Now some of RocksDB files might get corrupted.
+# It is very likely that this will not cause any problems, since CURRENT and MANIFEST are only read at bootup.
+./bin/ceph-bluestore-tool --path bluestore.test_temp_dir/ --command fsck --deep 1 --debug-bluestore=30/30 --debug-bdev=30/30 --log-file=log-bs-corrupts.txt --log-to-file --log-to-stderr=false
+
+# If we were lucky, this command now fails
+./bin/ceph-bluestore-tool --path bluestore.test_temp_dir/ --command fsck --deep 1 --debug-bluestore=30/30 --debug-bdev=30/30 --log-file=log-bs-crash.txt --log-to-file --log-to-stderr=false
+if [[ $? != 0 ]]
+then
+    echo "Deferred writes corruption successfully created !"
+else
+    echo "No deferred write problems detected."
+fi
+
+#cleanup
+rm -rf bluestore.test_temp_dir/
index c348e5138c8700f09d3eabc5ca93f920fe7e0211..bf69df0b9d4edc34d320f2ffdfc23ceb89c43f1e 100644 (file)
@@ -65,6 +65,22 @@ void dump_mempools()
   delete f;
   cout << ostr.str() << std::endl;
 }
+/*void get_mempool_stats(uint64_t* total_bytes, uint64_t* total_items)
+{
+  uint64_t meta_allocated = mempool::bluestore_cache_meta::allocated_bytes();
+  uint64_t onode_allocated = mempool::bluestore_cache_onode::allocated_bytes();
+  uint64_t other_allocated = mempool::bluestore_cache_other::allocated_bytes();
+
+  uint64_t meta_items = mempool::bluestore_cache_meta::allocated_items();
+  uint64_t onode_items = mempool::bluestore_cache_onode::allocated_items();
+  uint64_t other_items = mempool::bluestore_cache_other::allocated_items();
+  cout << "meta(" << meta_allocated << "/" << meta_items
+       << ") onode(" << onode_allocated << "/" << onode_items
+       << ") other(" << other_allocated << "/" << other_items
+       << ")" << std::endl;
+  *total_bytes = meta_allocated + onode_allocated + other_allocated;
+  *total_items = onode_items;
+}*/
 
 TEST(sb_info_space_efficient_map_t, basic) {
   sb_info_space_efficient_map_t sb_info;
@@ -2247,6 +2263,73 @@ TEST(shared_blob_2hash_tracker_t, basic_test)
   ASSERT_TRUE(t1.test_all_zero_range(5, 0x4500, 0x3b00));
   ASSERT_TRUE(!t1.test_all_zero_range(5, 0, 0x9000));
 }
+
+TEST(bluestore_blob_use_tracker_t, mempool_stats_test)
+{
+  using mempool::bluestore_cache_other::allocated_items;
+  using mempool::bluestore_cache_other::allocated_bytes;
+  uint64_t other_items0 = allocated_items();
+  uint64_t other_bytes0 = allocated_bytes();
+  {
+    bluestore_blob_use_tracker_t* t1 = new bluestore_blob_use_tracker_t;
+
+    t1->init(1024 * 1024, 4096);
+    ASSERT_EQ(256, allocated_items() - other_items0);  // = 1M / 4K
+    ASSERT_EQ(1024, allocated_bytes() - other_bytes0); // = 1M / 4K * 4
+
+    delete t1;
+    ASSERT_EQ(allocated_items(), other_items0);
+    ASSERT_EQ(allocated_bytes(), other_bytes0);
+  }
+  {
+    bluestore_blob_use_tracker_t* t1 = new bluestore_blob_use_tracker_t;
+
+    t1->init(1024 * 1024, 4096);
+    t1->add_tail(2048 * 1024, 4096);
+    // proper stats update after tail add
+    ASSERT_EQ(512, allocated_items() - other_items0);  // = 2M / 4K
+    ASSERT_EQ(2048, allocated_bytes() - other_bytes0); // = 2M / 4K * 4
+
+    delete t1;
+    ASSERT_EQ(allocated_items(), other_items0);
+    ASSERT_EQ(allocated_bytes(), other_bytes0);
+  }
+  {
+    bluestore_blob_use_tracker_t* t1 = new bluestore_blob_use_tracker_t;
+
+    t1->init(1024 * 1024, 4096);
+    t1->prune_tail(512 * 1024);
+    // no changes in stats after pruning
+    ASSERT_EQ(256, allocated_items() - other_items0);  // = 1M / 4K
+    ASSERT_EQ(1024, allocated_bytes() - other_bytes0); // = 1M / 4K * 4
+
+    delete t1;
+    ASSERT_EQ(allocated_items(), other_items0);
+    ASSERT_EQ(allocated_bytes(), other_bytes0);
+  }
+  {
+    bluestore_blob_use_tracker_t* t1 = new bluestore_blob_use_tracker_t;
+    bluestore_blob_use_tracker_t* t2 = new bluestore_blob_use_tracker_t;
+
+    t1->init(1024 * 1024, 4096);
+
+    // t1 keeps the same amount of entries + t2 has got half of them
+    t1->split(512 * 1024, t2);
+    ASSERT_EQ(256 + 128, allocated_items() - other_items0);  //= 1M / 4K*1.5
+    ASSERT_EQ(1024 + 512, allocated_bytes() - other_bytes0); //= 1M / 4K*4*1.5
+
+    // t1 & t2 release everything, then t2 get one less entry than t2 had had
+    // before
+    t1->split(4096, t2);
+    ASSERT_EQ(127, allocated_items() - other_items0);     // = 512K / 4K - 1
+    ASSERT_EQ(127 * 4, allocated_bytes() - other_bytes0); // = 512L / 4K * 4 - 4
+    delete t1;
+    delete t2;
+    ASSERT_EQ(allocated_items(), other_items0);
+    ASSERT_EQ(allocated_bytes(), other_bytes0);
+  }
+}
+
 int main(int argc, char **argv) {
   auto args = argv_to_vec(argc, argv);
   auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
diff --git a/ceph/src/test/objectstore/test_deferred.cc b/ceph/src/test/objectstore/test_deferred.cc
new file mode 100644 (file)
index 0000000..1b56081
--- /dev/null
@@ -0,0 +1,146 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <stdio.h>
+#include <string.h>
+#include <iostream>
+#include <memory>
+#include <time.h>
+
+#include "os/ObjectStore.h"
+#include "os/bluestore/BlueStore.h"
+#include "include/Context.h"
+#include "common/ceph_argparse.h"
+#include "global/global_init.h"
+#include "common/ceph_mutex.h"
+#include "common/Cond.h"
+#include "common/errno.h"
+#include "common/options.h" // for the size literals
+#include <semaphore.h>
+
+
+
+class C_do_action : public Context {
+public:
+  std::function<void()> action;
+  C_do_action(std::function<void()> action)
+    : action(action) {}
+
+  void finish(int r) override {
+    action();
+  }
+};
+
+void create_deferred_and_terminate() {
+  std::unique_ptr<ObjectStore> store;
+
+  g_ceph_context->_conf._clear_safe_to_start_threads();
+  g_ceph_context->_conf.set_val_or_die("bluestore_prefer_deferred_size", "4096");
+  g_ceph_context->_conf.set_val_or_die("bluestore_allocator", "bitmap");
+  g_ceph_context->_conf.set_val_or_die("bluestore_block_size", "10240000000");
+  g_ceph_context->_conf.apply_changes(nullptr);
+
+  int64_t poolid;
+  coll_t cid;
+  ghobject_t hoid;
+  ObjectStore::CollectionHandle ch;
+  ceph_assert(::mkdir("bluestore.test_temp_dir", 0777) == 0);
+  store = ObjectStore::create(g_ceph_context,
+                              "bluestore",
+                              "bluestore.test_temp_dir",
+                              "store_test_temp_journal");
+  ceph_assert(store->mkfs() == 0);
+  ceph_assert(store->mount() == 0);
+
+  poolid = 11;
+  cid = coll_t(spg_t(pg_t(1, poolid), shard_id_t::NO_SHARD));
+  ch = store->create_new_collection(cid);
+  int r;
+  {
+    ObjectStore::Transaction t;
+    t.create_collection(cid, 0);
+    r = store->queue_transaction(ch, std::move(t));
+    ceph_assert(r == 0);
+  }
+
+  {
+    ObjectStore::Transaction t;
+    std::string oid = "zapchajdziura";
+    ghobject_t hoid(hobject_t(oid, "", CEPH_NOSNAP, 1, poolid, ""));
+    bufferlist bl;
+    bl.append(std::string(0xe000, '-'));
+    t.write(cid, hoid, 0, 0xe000, bl);
+    r = store->queue_transaction(ch, std::move(t));
+    ceph_assert(r == 0);
+  }
+
+  size_t object_count = 10;
+
+  // initial fill
+  bufferlist bl_64K;
+  bl_64K.append(std::string(64 * 1024, '-'));
+
+  std::atomic<size_t> prefill_counter{0};
+  sem_t prefill_mutex;
+  sem_init(&prefill_mutex, 0, 0);
+
+  for (size_t o = 0; o < object_count; o++) {
+    ObjectStore::Transaction t;
+    std::string oid = "object-" + std::to_string(o);
+    ghobject_t hoid(hobject_t(oid, "", CEPH_NOSNAP, 1, poolid, ""));
+
+    t.write(cid, hoid, 0, bl_64K.length(), bl_64K);
+    t.register_on_commit(new C_do_action([&] {
+      if (++prefill_counter == object_count) {
+       sem_post(&prefill_mutex);
+      }
+    }));
+
+    r = store->queue_transaction(ch, std::move(t));
+    ceph_assert(r == 0);
+  }
+  sem_wait(&prefill_mutex);
+
+  // small deferred writes over object
+  // and complete overwrite of previous one
+  bufferlist bl_8_bytes;
+  bl_8_bytes.append("abcdefgh");
+  std::atomic<size_t> deferred_counter{0};
+  for (size_t o = 0; o < object_count - 1; o++) {
+    ObjectStore::Transaction t;
+
+    // sprinkle deferred writes
+    std::string oid_d = "object-" + std::to_string(o + 1);
+    ghobject_t hoid_d(hobject_t(oid_d, "", CEPH_NOSNAP, 1, poolid, ""));
+
+    for(int i = 0; i < 16; i++) {
+      t.write(cid, hoid_d, 4096 * i, bl_8_bytes.length(), bl_8_bytes);
+    }
+
+    // overwrite previous object
+    std::string oid_m = "object-" + std::to_string(o);
+    ghobject_t hoid_m(hobject_t(oid_m, "", CEPH_NOSNAP, 1, poolid, ""));
+    t.write(cid, hoid_m, 0, bl_64K.length(), bl_64K);
+
+    t.register_on_commit(new C_do_action([&] {
+      if (++deferred_counter == object_count - 1) {
+        exit(0);
+      }
+    }));
+    r = store->queue_transaction(ch, std::move(t));
+    ceph_assert(r == 0);
+  }
+  sleep(10);
+  ceph_assert(0 && "should not reach here");
+}
+
+int main(int argc, char **argv) {
+  auto args = argv_to_vec(argc, argv);
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY,
+                        CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
+  common_init_finish(g_ceph_context);
+
+  create_deferred_and_terminate();
+  return 0;
+}
index 3aab689a6d281d357223261db3a5e053da28e265..11e2c24265a8d8901d341c246b748018f781b95d 100644 (file)
@@ -2740,8 +2740,8 @@ TEST_F(PGLogTrimTest, TestPartialTrim)
   EXPECT_EQ(eversion_t(19, 160), write_from_dups2);
   EXPECT_EQ(2u, log.log.size());
   EXPECT_EQ(1u, trimmed2.size());
-  EXPECT_EQ(2u, log.dups.size());
-  EXPECT_EQ(1u, trimmed_dups2.size());
+  EXPECT_EQ(3u, log.dups.size());
+  EXPECT_EQ(0u, trimmed_dups2.size());
 }
 
 
@@ -3024,7 +3024,7 @@ TEST_F(PGLogTrimTest, TestTrimDups) {
 
   EXPECT_EQ(eversion_t(20, 103), write_from_dups) << log;
   EXPECT_EQ(2u, log.log.size()) << log;
-  EXPECT_EQ(3u, log.dups.size()) << log;
+  EXPECT_EQ(4u, log.dups.size()) << log;
 }
 
 // This tests trim() to make copies of
@@ -3068,7 +3068,7 @@ TEST_F(PGLogTrimTest, TestTrimDups2) {
 
   EXPECT_EQ(eversion_t(10, 100), write_from_dups) << log;
   EXPECT_EQ(4u, log.log.size()) << log;
-  EXPECT_EQ(5u, log.dups.size()) << log;
+  EXPECT_EQ(6u, log.dups.size()) << log;
 }
 
 // This tests copy_up_to() to make copies of
index 9f75e69e609a60f193251905947f0747adcb15f5..4aa9516294d0635d4a25f55a3c1f1f7ccb8b785a 100644 (file)
@@ -154,12 +154,11 @@ public:
 
   MockPrepareReplayRequest* create_request(
       MockStateBuilder& mock_state_builder,
-      librbd::mirror::PromotionState remote_promotion_state,
       const std::string& local_mirror_uuid,
       bool* resync_requested, bool* syncing, Context* on_finish) {
     return new MockPrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, nullptr, &mock_state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, nullptr, &mock_state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   librbd::ImageCtx *m_local_image_ctx = nullptr;
@@ -204,9 +203,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Success) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -228,9 +226,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, NoLocalJournal) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -257,9 +254,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, ResyncRequested) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_TRUE(resync_requested);
@@ -286,42 +282,12 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, ResyncRequestedError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
 
-TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, UnlinkedRemoteNonPrimary) {
-  InSequence seq;
-
-  librbd::MockJournal mock_journal;
-  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
-  mock_local_image_ctx.journal = &mock_journal;
-
-  // check initial state
-  expect_is_resync_requested(mock_journal, false, 0);
-  expect_journal_get_tag_tid(mock_journal, 345);
-  expect_journal_get_tag_data(mock_journal, {"blah"});
-
-  C_SaferCond ctx;
-  ::journal::MockJournaler mock_remote_journaler;
-  librbd::journal::MirrorPeerClientMeta mirror_peer_client_meta;
-  mirror_peer_client_meta.state = librbd::journal::MIRROR_PEER_STATE_REPLAYING;
-  mirror_peer_client_meta.image_id = mock_local_image_ctx.id;
-  MockStateBuilder mock_state_builder(mock_local_image_ctx,
-                                      mock_remote_journaler,
-                                      mirror_peer_client_meta);
-  bool resync_requested;
-  bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_NON_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
-  request->send();
-  ASSERT_EQ(-EREMOTEIO, ctx.wait());
-}
-
 TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Syncing) {
   InSequence seq;
 
@@ -344,9 +310,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, Syncing) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -384,9 +349,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, GetRemoteTagClassError)
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -430,9 +394,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, GetRemoteTagsError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EINVAL, ctx.wait());
 }
@@ -501,9 +464,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, LocalDemotedRemoteSynci
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -549,46 +511,14 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, UpdateClientError) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
   ASSERT_FALSE(syncing);
 }
 
-TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, NonPrimaryRemoteNotTagOwner) {
-  InSequence seq;
-
-  librbd::MockJournal mock_journal;
-  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
-  mock_local_image_ctx.journal = &mock_journal;
-
-  // check initial state
-  expect_is_resync_requested(mock_journal, false, 0);
-  expect_journal_get_tag_tid(mock_journal, 345);
-  expect_journal_get_tag_data(mock_journal, {librbd::Journal<>::LOCAL_MIRROR_UUID,
-                                             librbd::Journal<>::ORPHAN_MIRROR_UUID,
-                                             true, 344, 0});
-
-  C_SaferCond ctx;
-  ::journal::MockJournaler mock_remote_journaler;
-  librbd::journal::MirrorPeerClientMeta mirror_peer_client_meta;
-  mirror_peer_client_meta.state = librbd::journal::MIRROR_PEER_STATE_REPLAYING;
-  mirror_peer_client_meta.image_id = mock_local_image_ctx.id;
-  MockStateBuilder mock_state_builder(mock_local_image_ctx,
-                                      mock_remote_journaler,
-                                      mirror_peer_client_meta);
-  bool resync_requested;
-  bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_NON_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
-  request->send();
-  ASSERT_EQ(-EREMOTEIO, ctx.wait());
-}
-
 TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, RemoteDemotePromote) {
   InSequence seq;
 
@@ -637,9 +567,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, RemoteDemotePromote) {
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -704,9 +633,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, MultipleRemoteDemotePro
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -759,9 +687,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, LocalDemoteRemotePromot
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(0, ctx.wait());
   ASSERT_FALSE(resync_requested);
@@ -812,9 +739,8 @@ TEST_F(TestMockImageReplayerJournalPrepareReplayRequest, SplitBrainForcePromote)
                                       mirror_peer_client_meta);
   bool resync_requested;
   bool syncing;
-  auto request = create_request(
-    mock_state_builder, librbd::mirror::PROMOTION_STATE_PRIMARY,
-    "local mirror uuid", &resync_requested, &syncing, &ctx);
+  auto request = create_request(mock_state_builder, "local mirror uuid",
+                                &resync_requested, &syncing, &ctx);
   request->send();
   ASSERT_EQ(-EEXIST, ctx.wait());
 }
index 593259bb2a92dc5231693d31d45bba84d5108003..26b4d32cc4ffd6bdaef6588d61b55d7f62669c9d 100644 (file)
@@ -571,6 +571,11 @@ public:
     EXPECT_CALL(mock_instance_watcher, notify_sync_complete(image_id));
   }
 
+  void expect_cancel_sync_request(MockInstanceWatcher& mock_instance_watcher,
+                                  const std::string& image_id) {
+    EXPECT_CALL(mock_instance_watcher, cancel_sync_request(image_id));
+  }
+
   void expect_image_copy(MockImageCopyRequest& mock_image_copy_request,
                          uint64_t src_snap_id_start, uint64_t src_snap_id_end,
                          uint64_t dst_snap_id_start,
@@ -842,24 +847,585 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, SyncSnapshot) {
          cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
          "", CEPH_NOSNAP, true, 0, {}},
        0, {}, 0, 0, {}}},
-      {5U, librbd::SnapInfo{"snap5", cls::rbd::MirrorSnapshotNamespace{
-         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
-         "", CEPH_NOSNAP, true, 0, {}},
-       0, {}, 0, 0, {}}}
+      {5U, librbd::SnapInfo{"snap5", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}}
+    }, 0);
+  expect_snapshot_copy(mock_snapshot_copy_request, 1, 4, 11,
+                       {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 0);
+  expect_get_image_state(mock_get_image_state_request, 4, 0);
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 4,
+                                    {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 14,
+                                    0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  expect_image_copy(mock_image_copy_request, 1, 4, 11, {},
+                    {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 0);
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 14, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // prune non-primary snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::UserSnapshotNamespace{},
+       0, {}, 0, 0, {}}},
+      {14U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         4, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::UserSnapshotNamespace{},
+       0, {}, 0, 0, {}}},
+      {3U, librbd::SnapInfo{"snap3", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {""},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {4U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}}
+    }, 0);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 11, 0);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {14U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         4, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {4U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}}
+    }, 0);
+
+  // fire init
+  C_SaferCond init_ctx;
+  mock_replayer.init(&init_ctx);
+  ASSERT_EQ(0, init_ctx.wait());
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(4));
+
+  // shut down
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncInitial) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, false, 123, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 11, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 0, 1, 0,
+                    librbd::deep_copy::ObjectNumber{123U},
+                    {{1, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 11, true, 123, 0);
+  expect_notify_update(mock_local_image_ctx);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncDelta) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
+  // after a complete snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, true, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 123, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 12, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11,
+                    librbd::deep_copy::ObjectNumber{123U},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 12, true, 123, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // prune non-primary snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 11, 0);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSyncDeltaDemote) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number > 0
+  // after a primary demotion snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "local mirror uuid", 11, true, 0,
+       {{11, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 123, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 12, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11,
+                    librbd::deep_copy::ObjectNumber{123U},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 12, true, 123, 0);
+  expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncInitial) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, false, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // re-sync snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 11, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 0, 1, 0, {},
+                    {{1, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  expect_apply_image_state(mock_apply_state_request, 0);
+  expect_mirror_image_snapshot_set_copy_progress(
+    mock_local_image_ctx, 11, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // idle
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  // wait for sync to complete
+  ASSERT_EQ(0, wait_for_notification(2));
+
+  ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
+                                        mock_local_image_ctx,
+                                        mock_remote_image_ctx));
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncDelta) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  // after a complete snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+       "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+  mock_local_image_ctx.snap_info = {
+    {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       1, true, 0, {{1, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+       2, false, 0, {{2, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}}};
+
+  // prune non-primary snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 12, 0);
+
+  // sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
+         1, true, 0, {{1, CEPH_NOSNAP}}},
+       0, {}, 0, 0, {}}},
     }, 0);
-  expect_snapshot_copy(mock_snapshot_copy_request, 1, 4, 11,
-                       {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 0);
-  expect_get_image_state(mock_get_image_state_request, 4, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 1, 2, 11,
+                       {{2, CEPH_NOSNAP}}, 0);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 2, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
   expect_create_non_primary_request(mock_create_non_primary_request,
-                                    false, "remote mirror uuid", 4,
-                                    {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 14,
-                                    0);
+                                    false, "remote mirror uuid", 2,
+                                    {{2, CEPH_NOSNAP}}, 13, 0);
   expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
-  expect_image_copy(mock_image_copy_request, 1, 4, 11, {},
-                    {{1, 11}, {2, 12}, {4, CEPH_NOSNAP}}, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 1, 2, 11, {},
+                    {{2, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
   expect_apply_image_state(mock_apply_state_request, 0);
   expect_mirror_image_snapshot_set_copy_progress(
-    mock_local_image_ctx, 14, true, 0, 0);
+    mock_local_image_ctx, 13, true, 0, 0);
   expect_notify_update(mock_local_image_ctx);
   MockUnlinkPeerRequest mock_unlink_peer_request;
   expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
@@ -875,30 +1441,18 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, SyncSnapshot) {
          cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
          1, true, 0, {}},
        0, {}, 0, 0, {}}},
-      {12U, librbd::SnapInfo{"snap2", cls::rbd::UserSnapshotNamespace{},
-       0, {}, 0, 0, {}}},
-      {14U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
          cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
-         4, true, 0, {}},
+         2, true, 0, {}},
        0, {}, 0, 0, {}}},
     }, 0);
   expect_is_refresh_required(mock_remote_image_ctx, true);
   expect_refresh(
     mock_remote_image_ctx, {
-      {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
          cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
          "", CEPH_NOSNAP, true, 0, {}},
        0, {}, 0, 0, {}}},
-      {2U, librbd::SnapInfo{"snap2", cls::rbd::UserSnapshotNamespace{},
-       0, {}, 0, 0, {}}},
-      {3U, librbd::SnapInfo{"snap3", cls::rbd::MirrorSnapshotNamespace{
-         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {""},
-         "", CEPH_NOSNAP, true, 0, {}},
-       0, {}, 0, 0, {}}},
-      {4U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
-         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
-         "", CEPH_NOSNAP, true, 0, {}},
-       0, {}, 0, 0, {}}}
     }, 0);
   expect_prune_non_primary_snapshot(mock_local_image_ctx, 11, 0);
 
@@ -907,35 +1461,25 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, SyncSnapshot) {
   expect_is_refresh_required(mock_local_image_ctx, true);
   expect_refresh(
     mock_local_image_ctx, {
-      {14U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
          cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
-         4, true, 0, {}},
+         2, true, 0, {}},
        0, {}, 0, 0, {}}},
     }, 0);
-  expect_is_refresh_required(mock_remote_image_ctx, true);
-  expect_refresh(
-    mock_remote_image_ctx, {
-      {4U, librbd::SnapInfo{"snap4", cls::rbd::MirrorSnapshotNamespace{
-         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
-         "", CEPH_NOSNAP, true, 0, {}},
-       0, {}, 0, 0, {}}}
-    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
 
-  // fire init
-  C_SaferCond init_ctx;
-  mock_replayer.init(&init_ctx);
-  ASSERT_EQ(0, init_ctx.wait());
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
 
   // wait for sync to complete
-  ASSERT_EQ(0, wait_for_notification(4));
+  ASSERT_EQ(0, wait_for_notification(2));
 
-  // shut down
   ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
                                         mock_local_image_ctx,
                                         mock_remote_image_ctx));
 }
 
-TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
+TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedPendingSyncDeltaDemote) {
   librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
   librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
 
@@ -967,34 +1511,66 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
                                    mock_image_meta,
                                    &update_watch_ctx));
 
-  // inject a incomplete sync snapshot
+  // inject an incomplete sync snapshot with last_copied_object_number == 0
+  // after a primary demotion snapshot
   mock_remote_image_ctx.snap_info = {
     {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "local mirror uuid", 11, true, 0,
+       {{11, CEPH_NOSNAP}}},
+     0, {}, 0, 0, {}}},
+    {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
        cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
        "", CEPH_NOSNAP, true, 0, {}},
      0, {}, 0, 0, {}}}};
   mock_local_image_ctx.snap_info = {
     {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+       {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}},
+    {12U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
        cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
-       1, false, 123, {{1, CEPH_NOSNAP}}},
+       2, false, 0, {{2, CEPH_NOSNAP}}},
      0, {}, 0, 0, {}}}};
 
-  // re-sync snap1
+  // prune non-primary snap2
   expect_load_image_meta(mock_image_meta, false, 0);
   expect_is_refresh_required(mock_local_image_ctx, false);
   expect_is_refresh_required(mock_remote_image_ctx, false);
+  expect_prune_non_primary_snapshot(mock_local_image_ctx, 12, 0);
+
+  // sync snap2
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, true);
+  expect_refresh(
+    mock_local_image_ctx, {
+      {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 1, 2, 11,
+                       {{2, CEPH_NOSNAP}}, 0);
   MockGetImageStateRequest mock_get_image_state_request;
-  expect_get_image_state(mock_get_image_state_request, 11, 0);
+  expect_get_image_state(mock_get_image_state_request, 2, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 2,
+                                    {{2, CEPH_NOSNAP}}, 13, 0);
   expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
   MockImageCopyRequest mock_image_copy_request;
-  expect_image_copy(mock_image_copy_request, 0, 1, 0,
-                    librbd::deep_copy::ObjectNumber{123U},
-                    {{1, CEPH_NOSNAP}}, 0);
+  expect_image_copy(mock_image_copy_request, 1, 2, 11, {},
+                    {{2, CEPH_NOSNAP}}, 0);
   MockApplyImageStateRequest mock_apply_state_request;
   expect_apply_image_state(mock_apply_state_request, 0);
   expect_mirror_image_snapshot_set_copy_progress(
-    mock_local_image_ctx, 11, true, 123, 0);
+    mock_local_image_ctx, 13, true, 0, 0);
   expect_notify_update(mock_local_image_ctx);
+  MockUnlinkPeerRequest mock_unlink_peer_request;
+  expect_unlink_peer(mock_unlink_peer_request, 1, "remote mirror peer uuid",
+                     0);
   expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
 
   // idle
@@ -1003,11 +1579,22 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, InterruptedSync) {
   expect_refresh(
     mock_local_image_ctx, {
       {11U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED,
+         {"remote mirror peer uuid"}, "", CEPH_NOSNAP, true, 0, {}},
+       0, {}, 0, 0, {}}},
+      {13U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
          cls::rbd::MIRROR_SNAPSHOT_STATE_NON_PRIMARY, {}, "remote mirror uuid",
-         1, true, 0, {}},
+         2, true, 0, {}},
+       0, {}, 0, 0, {}}},
+    }, 0);
+  expect_is_refresh_required(mock_remote_image_ctx, true);
+  expect_refresh(
+    mock_remote_image_ctx, {
+      {2U, librbd::SnapInfo{"snap2", cls::rbd::MirrorSnapshotNamespace{
+         cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"},
+         "", CEPH_NOSNAP, true, 0, {}},
        0, {}, 0, 0, {}}},
     }, 0);
-  expect_is_refresh_required(mock_remote_image_ctx, false);
 
   // wake-up replayer
   update_watch_ctx->handle_notify();
@@ -1321,7 +1908,7 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, UnregisterRemoteUpdateWatcherError
 
   C_SaferCond shutdown_ctx;
   mock_replayer.shut_down(&shutdown_ctx);
-  ASSERT_EQ(-EINVAL, shutdown_ctx.wait());
+  ASSERT_EQ(0, shutdown_ctx.wait());
 }
 
 TEST_F(TestMockImageReplayerSnapshotReplayer, UnregisterLocalUpdateWatcherError) {
@@ -1363,7 +1950,7 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, UnregisterLocalUpdateWatcherError)
 
   C_SaferCond shutdown_ctx;
   mock_replayer.shut_down(&shutdown_ctx);
-  ASSERT_EQ(-EINVAL, shutdown_ctx.wait());
+  ASSERT_EQ(0, shutdown_ctx.wait());
 }
 
 TEST_F(TestMockImageReplayerSnapshotReplayer, LoadImageMetaError) {
@@ -2562,6 +3149,173 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, ImageNameUpdated) {
                                         mock_remote_image_ctx));
 }
 
+TEST_F(TestMockImageReplayerSnapshotReplayer, ApplyImageStatePendingShutdown) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  C_SaferCond shutdown_ctx;
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"}, "",
+       CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+
+  // sync snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 0, 1, 0, {{1, CEPH_NOSNAP}},
+                       0);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 1, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 1,
+                                    {{1, CEPH_NOSNAP}}, 11, 0);
+  MockImageStateUpdateRequest mock_image_state_update_request;
+  expect_update_mirror_image_state(mock_image_state_update_request, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 0, 1, 0, {},
+                    {{1, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  EXPECT_CALL(mock_apply_state_request, send())
+    .WillOnce(Invoke([this, &req=mock_apply_state_request,
+                      &replayer=mock_replayer, &ctx=shutdown_ctx]() {
+      // inject a shutdown, to be pended due to STATE_REPLAYING
+      replayer.shut_down(&ctx);
+      m_threads->work_queue->queue(req.on_finish, 0);
+    }));
+  expect_cancel_sync_request(mock_instance_watcher, mock_local_image_ctx.id);
+  expect_mirror_image_snapshot_set_copy_progress(
+      mock_local_image_ctx, 11, true, 0, 0);
+  expect_notify_update(mock_local_image_ctx);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // shutdown should be resumed
+  expect_unregister_update_watcher(mock_remote_image_ctx, 234, 0);
+  expect_unregister_update_watcher(mock_local_image_ctx, 123, 0);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  ASSERT_EQ(0, wait_for_notification(1));
+  ASSERT_FALSE(mock_replayer.is_replaying());
+  ASSERT_EQ(0, mock_replayer.get_error_code());
+
+  ASSERT_EQ(0, shutdown_ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerSnapshotReplayer, ApplyImageStateErrorPendingShutdown) {
+  librbd::MockTestImageCtx mock_local_image_ctx{*m_local_image_ctx};
+  librbd::MockTestImageCtx mock_remote_image_ctx{*m_remote_image_ctx};
+
+  MockThreads mock_threads(m_threads);
+  expect_work_queue_repeatedly(mock_threads);
+
+  MockReplayerListener mock_replayer_listener;
+  expect_notification(mock_threads, mock_replayer_listener);
+
+  InSequence seq;
+
+  MockInstanceWatcher mock_instance_watcher;
+  MockImageMeta mock_image_meta;
+  MockStateBuilder mock_state_builder(mock_local_image_ctx,
+                                      mock_remote_image_ctx,
+                                      mock_image_meta);
+  MockReplayer mock_replayer{&mock_threads, &mock_instance_watcher,
+                             "local mirror uuid", &m_pool_meta_cache,
+                             &mock_state_builder, &mock_replayer_listener};
+  C_SaferCond shutdown_ctx;
+  m_pool_meta_cache.set_remote_pool_meta(
+    m_remote_io_ctx.get_id(),
+    {"remote mirror uuid", "remote mirror peer uuid"});
+
+  librbd::UpdateWatchCtx* update_watch_ctx = nullptr;
+  ASSERT_EQ(0, init_entry_replayer(mock_replayer, mock_threads,
+                                   mock_local_image_ctx,
+                                   mock_remote_image_ctx,
+                                   mock_replayer_listener,
+                                   mock_image_meta,
+                                   &update_watch_ctx));
+
+  // inject snapshot
+  mock_remote_image_ctx.snap_info = {
+    {1U, librbd::SnapInfo{"snap1", cls::rbd::MirrorSnapshotNamespace{
+       cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {"remote mirror peer uuid"}, "",
+       CEPH_NOSNAP, true, 0, {}},
+     0, {}, 0, 0, {}}}};
+
+  // sync snap1
+  expect_load_image_meta(mock_image_meta, false, 0);
+  expect_is_refresh_required(mock_local_image_ctx, false);
+  expect_is_refresh_required(mock_remote_image_ctx, false);
+  MockSnapshotCopyRequest mock_snapshot_copy_request;
+  expect_snapshot_copy(mock_snapshot_copy_request, 0, 1, 0, {{1, CEPH_NOSNAP}},
+                       0);
+  MockGetImageStateRequest mock_get_image_state_request;
+  expect_get_image_state(mock_get_image_state_request, 1, 0);
+  MockCreateNonPrimaryRequest mock_create_non_primary_request;
+  expect_create_non_primary_request(mock_create_non_primary_request,
+                                    false, "remote mirror uuid", 1,
+                                    {{1, CEPH_NOSNAP}}, 11, 0);
+  MockImageStateUpdateRequest mock_image_state_update_request;
+  expect_update_mirror_image_state(mock_image_state_update_request, 0);
+  expect_notify_sync_request(mock_instance_watcher, mock_local_image_ctx.id, 0);
+  MockImageCopyRequest mock_image_copy_request;
+  expect_image_copy(mock_image_copy_request, 0, 1, 0, {},
+                    {{1, CEPH_NOSNAP}}, 0);
+  MockApplyImageStateRequest mock_apply_state_request;
+  EXPECT_CALL(mock_apply_state_request, send())
+    .WillOnce(Invoke([this, &req=mock_apply_state_request,
+                      &replayer=mock_replayer, &ctx=shutdown_ctx]() {
+      // inject a shutdown, to be pended due to STATE_REPLAYING
+      replayer.shut_down(&ctx);
+      m_threads->work_queue->queue(req.on_finish, -EINVAL);
+    }));
+  expect_cancel_sync_request(mock_instance_watcher, mock_local_image_ctx.id);
+  expect_notify_sync_complete(mock_instance_watcher, mock_local_image_ctx.id);
+
+  // shutdown should be resumed
+  expect_unregister_update_watcher(mock_remote_image_ctx, 234, 0);
+  expect_unregister_update_watcher(mock_local_image_ctx, 123, 0);
+
+  // wake-up replayer
+  update_watch_ctx->handle_notify();
+
+  ASSERT_EQ(0, shutdown_ctx.wait());
+}
+
 } // namespace snapshot
 } // namespace image_replayer
 } // namespace mirror
index 53a69a84eefafdf4cca5b377d06c9c777338f61d..8a66cecaed9b90d39dbb69f0965a004c4ce1fc50 100644 (file)
@@ -232,6 +232,7 @@ struct StateBuilder<librbd::MockTestImageCtx> {
 
   MOCK_CONST_METHOD0(is_disconnected, bool());
   MOCK_CONST_METHOD0(is_local_primary, bool());
+  MOCK_CONST_METHOD0(is_remote_primary, bool());
   MOCK_CONST_METHOD0(is_linked, bool());
 
   MOCK_CONST_METHOD0(replay_requires_remote_image, bool());
@@ -355,6 +356,17 @@ public:
       .WillOnce(Return(is_primary));
   }
 
+  void expect_is_remote_primary(MockStateBuilder& mock_state_builder,
+                                bool is_primary) {
+    EXPECT_CALL(mock_state_builder, is_remote_primary())
+      .WillOnce(Return(is_primary));
+  }
+
+  void expect_is_linked(MockStateBuilder& mock_state_builder, bool is_linked) {
+    EXPECT_CALL(mock_state_builder, is_linked())
+      .WillOnce(Return(is_linked));
+  }
+
   void expect_is_disconnected(MockStateBuilder& mock_state_builder,
                               bool is_disconnected) {
     EXPECT_CALL(mock_state_builder, is_disconnected())
@@ -492,6 +504,107 @@ TEST_F(TestMockImageReplayerBootstrapRequest, Success) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
+
+  // open the remote image
+  librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
+  MockOpenImageRequest mock_open_image_request;
+  expect_open_image(mock_open_image_request, m_remote_io_ctx,
+                    mock_remote_image_ctx.id, mock_remote_image_ctx, 0);
+
+  // open the local image
+  librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx);
+  MockOpenLocalImageRequest mock_open_local_image_request;
+  expect_open_local_image(mock_open_local_image_request, m_local_io_ctx,
+                          mock_local_image_ctx.id, &mock_local_image_ctx, 0);
+
+  // prepare replay
+  expect_prepare_replay(mock_state_builder, false, false, 0);
+  expect_is_disconnected(mock_state_builder, false);
+
+  // close remote image
+  expect_replay_requires_remote_image(mock_state_builder, false);
+  expect_close_remote_image(mock_state_builder, 0);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalDNE) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, -ENOENT);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(-EREMOTEIO, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalUnlinked) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, 0);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+  expect_is_linked(mock_state_builder, false);
+
+  C_SaferCond ctx;
+  MockThreads mock_threads(m_threads);
+  MockInstanceWatcher mock_instance_watcher;
+  MockBootstrapRequest *request = create_request(
+    &mock_threads, &mock_instance_watcher, "global image id",
+    "local mirror uuid", &ctx);
+  request->send();
+  ASSERT_EQ(-EREMOTEIO, ctx.wait());
+}
+
+TEST_F(TestMockImageReplayerBootstrapRequest, PrepareRemoteImageNotPrimaryLocalLinked) {
+  InSequence seq;
+
+  // prepare local image
+  MockStateBuilder mock_state_builder;
+  MockPrepareLocalImageRequest mock_prepare_local_image_request;
+  expect_send(mock_prepare_local_image_request, mock_state_builder,
+              m_local_image_ctx->id, m_local_image_ctx->name, 0);
+
+  // prepare remote image
+  MockPrepareRemoteImageRequest mock_prepare_remote_image_request;
+  expect_send(mock_prepare_remote_image_request, mock_state_builder,
+              "remote mirror uuid", m_remote_image_ctx->id, 0);
+  expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, false);
+  expect_is_linked(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -537,6 +650,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -579,6 +693,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImageDNE) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -632,6 +747,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, OpenLocalImagePrimary) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -674,6 +790,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, CreateLocalImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -712,6 +829,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -756,6 +874,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayResyncRequested) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -801,6 +920,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplaySyncing) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -850,6 +970,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayDisconnected) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -865,7 +986,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, PrepareReplayDisconnected) {
 
   // prepare replay
   expect_prepare_replay(mock_state_builder, false, false, 0);
-  expect_is_disconnected(mock_state_builder, false);
+  expect_is_disconnected(mock_state_builder, true);
 
   // close remote image
   expect_replay_requires_remote_image(mock_state_builder, false);
@@ -895,6 +1016,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ImageSyncError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -944,6 +1066,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ImageSyncCanceled) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -990,6 +1113,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, CloseRemoteImageError) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
@@ -1035,6 +1159,7 @@ TEST_F(TestMockImageReplayerBootstrapRequest, ReplayRequiresRemoteImage) {
   expect_send(mock_prepare_remote_image_request, mock_state_builder,
               "remote mirror uuid", m_remote_image_ctx->id, 0);
   expect_is_local_primary(mock_state_builder, false);
+  expect_is_remote_primary(mock_state_builder, true);
 
   // open the remote image
   librbd::MockTestImageCtx mock_remote_image_ctx(*m_remote_image_ctx);
index 418c6da022c74ba0bbc72f2dd51527f4dc70c0b5..b58b60dedc81a40ee1c5d39b35e0a74a1e886d4a 100644 (file)
@@ -15,6 +15,7 @@
 #include "rgw/rgw_http_client.h"
 #include "global/global_init.h"
 #include "common/ceph_argparse.h"
+#include <unistd.h>
 #include <curl/curl.h>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/write.hpp>
 
 using namespace std;
 
+namespace {
+  using tcp = boost::asio::ip::tcp;
+
+  // if we have a racing where another thread manages to bind and listen the
+  // port picked by this acceptor, try again.
+  static constexpr int MAX_BIND_RETRIES = 60;
+
+  tcp::acceptor try_bind(boost::asio::io_context& ioctx) {
+    using tcp = boost::asio::ip::tcp;
+    tcp::endpoint endpoint(tcp::v4(), 0);
+    tcp::acceptor acceptor(ioctx);
+    acceptor.open(endpoint.protocol());
+    for (int retries = 0;; retries++) {
+      try {
+       acceptor.bind(endpoint);
+       // yay!
+       break;
+      } catch (const boost::system::system_error& e) {
+       if (retries == MAX_BIND_RETRIES) {
+         throw;
+       }
+       if (e.code() != boost::system::errc::address_in_use) {
+         throw;
+       }
+      }
+      // backoff a little bit
+      sleep(1);
+    }
+    return acceptor;
+  }
+}
+
 TEST(HTTPManager, ReadTruncated)
 {
   using tcp = boost::asio::ip::tcp;
-  tcp::endpoint endpoint(tcp::v4(), 0);
   boost::asio::io_context ioctx;
-  tcp::acceptor acceptor(ioctx);
-  acceptor.open(endpoint.protocol());
-  acceptor.bind(endpoint);
+  auto acceptor = try_bind(ioctx);
   acceptor.listen();
 
   std::thread server{[&] {
@@ -54,11 +84,8 @@ TEST(HTTPManager, ReadTruncated)
 TEST(HTTPManager, Head)
 {
   using tcp = boost::asio::ip::tcp;
-  tcp::endpoint endpoint(tcp::v4(), 0);
   boost::asio::io_context ioctx;
-  tcp::acceptor acceptor(ioctx);
-  acceptor.open(endpoint.protocol());
-  acceptor.bind(endpoint);
+  auto acceptor = try_bind(ioctx);
   acceptor.listen();
 
   std::thread server{[&] {
index 148f0bd32653dd6a8ef8c12f76d164cd15f260af..14319d7396706c0bc39896d617c3d94ef96ea891 100644 (file)
@@ -18,7 +18,7 @@ using ::testing::StrEq;
 class MockTransitSecretEngine : public TransitSecretEngine {
 
 public:
-  MockTransitSecretEngine(CephContext *cct, EngineParmMap parms) : TransitSecretEngine(cct, parms){}
+  MockTransitSecretEngine(CephContext *cct, SSEContext & kctx, EngineParmMap parms) : TransitSecretEngine(cct, kctx, parms){}
 
   MOCK_METHOD(int, send_request, (const DoutPrefixProvider *dpp, const char *method, std::string_view infix, std::string_view key_id, const std::string& postdata, bufferlist &bl), (override));
 
@@ -27,7 +27,7 @@ public:
 class MockKvSecretEngine : public KvSecretEngine {
 
 public:
-  MockKvSecretEngine(CephContext *cct, EngineParmMap parms) : KvSecretEngine(cct, parms){}
+  MockKvSecretEngine(CephContext *cct, SSEContext & kctx, EngineParmMap parms) : KvSecretEngine(cct, kctx, parms){}
 
   MOCK_METHOD(int, send_request, (const DoutPrefixProvider *dpp, const char *method, std::string_view infix, std::string_view key_id, const std::string& postdata, bufferlist &bl), (override));
 
@@ -44,11 +44,12 @@ protected:
   void SetUp() override {
     EngineParmMap old_parms, kv_parms, new_parms;
     cct = (new CephContext(CEPH_ENTITY_TYPE_ANY))->get();
+    KMSContext kctx { cct };
     old_parms["compat"] = "2";
-    old_engine = new MockTransitSecretEngine(cct, std::move(old_parms));
-    kv_engine = new MockKvSecretEngine(cct, std::move(kv_parms));
+    old_engine = new MockTransitSecretEngine(cct, kctx, std::move(old_parms));
+    kv_engine = new MockKvSecretEngine(cct, kctx, std::move(kv_parms));
     new_parms["compat"] = "1";
-    transit_engine = new MockTransitSecretEngine(cct, std::move(new_parms));
+    transit_engine = new MockTransitSecretEngine(cct, kctx, std::move(new_parms));
   }
 
   void TearDown() {
@@ -64,8 +65,9 @@ TEST_F(TestSSEKMS, vault_token_file_unset)
 {
   cct->_conf.set_val("rgw_crypt_vault_auth", "token");
   EngineParmMap old_parms, kv_parms;
-  TransitSecretEngine te(cct, std::move(old_parms));
-  KvSecretEngine kv(cct, std::move(kv_parms));
+  KMSContext kctx { cct };
+  TransitSecretEngine te(cct, kctx, std::move(old_parms));
+  KvSecretEngine kv(cct, kctx, std::move(kv_parms));
   const NoDoutPrefix no_dpp(cct, 1);
 
   std::string_view key_id("my_key");
@@ -81,8 +83,9 @@ TEST_F(TestSSEKMS, non_existent_vault_token_file)
   cct->_conf.set_val("rgw_crypt_vault_auth", "token");
   cct->_conf.set_val("rgw_crypt_vault_token_file", "/nonexistent/file");
   EngineParmMap old_parms, kv_parms;
-  TransitSecretEngine te(cct, std::move(old_parms));
-  KvSecretEngine kv(cct, std::move(kv_parms));
+  KMSContext kctx { cct };
+  TransitSecretEngine te(cct, kctx, std::move(old_parms));
+  KvSecretEngine kv(cct, kctx, std::move(kv_parms));
   const NoDoutPrefix no_dpp(cct, 1);
 
   std::string_view key_id("my_key/1");
index 50730080d8dc7387dc52755cef827f3c5c9c05af..77e31ec0eb730eae0c51593728fb48afceeedab8 100644 (file)
@@ -496,6 +496,21 @@ public:
     }
   }
 
+  std::pair<std::string, ceph::buffer::list> to_raw(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_raw(to_map);
+  }
+
+  std::string to_legacy_raw_key(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_legacy_raw_key(to_map);
+  }
+
+  std::string to_raw_key(
+    const std::pair<snapid_t, hobject_t> &to_map) {
+    return mapper->to_raw_key(to_map);
+  }
+
   void trim_snap() {
     std::lock_guard l{lock};
     if (snap_to_hobject.empty())
@@ -652,3 +667,19 @@ TEST_F(SnapMapperTest, MultiPG) {
   init(50);
   run();
 }
+
+TEST_F(SnapMapperTest, LegacyKeyConvertion) {
+    init(1);
+    auto obj = get_tester().random_hobject();
+    snapid_t snapid = random() % 10;
+    auto snap_obj = make_pair(snapid, obj);
+    auto raw = get_tester().to_raw(snap_obj);
+    std::string old_key = get_tester().to_legacy_raw_key(snap_obj);
+    std::string converted_key =
+      SnapMapper::convert_legacy_key(old_key, raw.second);
+    std::string new_key = get_tester().to_raw_key(snap_obj);
+    std::cout << "Converted: " << old_key << "\nTo:        " << converted_key
+             << "\nNew key:   " << new_key << std::endl;
+    ASSERT_EQ(converted_key, new_key);
+}
+
index 543336a7ef712900c2099e410a2e15da07e50b7f..36ad6ee23206dac37ffb1211b4ff0ef262139b8a 100644 (file)
@@ -455,3 +455,6 @@ MESSAGE(MTimeCheck2)
 
 #include "messages/MWatchNotify.h"
 MESSAGE(MWatchNotify)
+
+#include "messages/MMgrUpdate.h" 
+MESSAGE(MMgrUpdate)
index bd1443ddf13352c53e77206469f8a04f54d25ea0..8862774e7dd17bbb3499bf1016ec7be9de8f7e64 100644 (file)
@@ -128,4 +128,7 @@ TYPE(rgw_data_sync_info)
 TYPE(rgw_data_sync_marker)
 TYPE(rgw_data_sync_status)
 
+#include "rgw/rgw_bucket_encryption.h"
+TYPE(RGWBucketEncryptionConfig)
+
 #endif
index f4ad1a54de9a0bbb6853561c7c677cff3d13da3f..c12a741e97afa29daa1790bf96de58284447cb5c 100644 (file)
 
 #include <boost/program_options/variables_map.hpp>
 #include <boost/program_options/parsers.hpp>
+#include <boost/algorithm/string.hpp>
 #include <boost/scoped_ptr.hpp>
 #include <boost/optional.hpp>
+#include <fstream>
 
 #include <stdlib.h>
 
@@ -435,7 +437,7 @@ static int get_fd_data(int fd, bufferlist &bl)
   return 0;
 }
 
-int get_log(ObjectStore *fs, __u8 struct_ver,
+int get_log(CephContext *cct, ObjectStore *fs, __u8 struct_ver,
            spg_t pgid, const pg_info_t &info,
            PGLog::IndexedLog &log, pg_missing_t &missing)
 {
@@ -447,7 +449,7 @@ int get_log(ObjectStore *fs, __u8 struct_ver,
     ostringstream oss;
     ceph_assert(struct_ver > 0);
     PGLog::read_log_and_missing(
-      fs, ch,
+      cct, fs, ch,
       pgid.make_pgmeta_oid(),
       info, log, missing,
       oss,
@@ -1076,7 +1078,8 @@ int add_osdmap(ObjectStore *store, metadata_section &ms)
   return get_osdmap(store, ms.map_epoch, ms.osdmap, ms.osdmap_bl);
 }
 
-int ObjectStoreTool::do_export(ObjectStore *fs, coll_t coll, spg_t pgid,
+int ObjectStoreTool::do_export(
+    CephContext *cct, ObjectStore *fs, coll_t coll, spg_t pgid,
     pg_info_t &info, epoch_t map_epoch, __u8 struct_ver,
     const OSDSuperblock& superblock,
     PastIntervals &past_intervals)
@@ -1086,7 +1089,7 @@ int ObjectStoreTool::do_export(ObjectStore *fs, coll_t coll, spg_t pgid,
 
   cerr << "Exporting " << pgid << " info " << info << std::endl;
 
-  int ret = get_log(fs, struct_ver, pgid, info, log, missing);
+  int ret = get_log(cct, fs, struct_ver, pgid, info, log, missing);
   if (ret > 0)
       return ret;
 
@@ -3155,6 +3158,136 @@ int dup(string srcpath, ObjectStore *src, string dstpath, ObjectStore *dst)
   return r;
 }
 
+
+const int ceph_entity_name_type(const string name)
+{
+  if (name == "mds") return CEPH_ENTITY_TYPE_MDS;
+  if (name == "osd") return CEPH_ENTITY_TYPE_OSD;
+  if (name == "mon") return CEPH_ENTITY_TYPE_MON;
+  if (name == "client") return CEPH_ENTITY_TYPE_CLIENT;
+  if (name == "mgr") return CEPH_ENTITY_TYPE_MGR;
+  if (name == "auth") return CEPH_ENTITY_TYPE_AUTH;
+  return -1;
+}
+
+eversion_t get_eversion_from_str(const string& s) {
+  eversion_t e;
+  vector<string> result;
+  boost::split(result, s, boost::is_any_of("'"));
+  if (result.size() != 2) {
+    cerr << "eversion_t: invalid format: '" << s << "'" << std::endl;
+    return e;
+  }
+  e.epoch   = atoi(result[0].c_str());
+  e.version = atoi(result[1].c_str());
+  return e;
+}
+
+osd_reqid_t get_reqid_from_str(const string& s) {
+  osd_reqid_t reqid;
+
+  vector<string> result;
+  boost::split(result, s, boost::is_any_of(".:"));
+  if (result.size() != 4) {
+    cerr << "reqid: invalid format " << s << std::endl;
+    return osd_reqid_t();
+  }
+  reqid.name._type = ceph_entity_name_type(result[0]);
+  reqid.name._num = atoi(result[1].c_str());
+
+  reqid.inc = atoi(result[2].c_str());
+  reqid.tid = atoi(result[3].c_str());
+  return reqid;
+}
+
+void do_dups_inject_transction(ObjectStore *store, spg_t r_pgid, map<string,bufferlist> *new_dups)
+{
+  ObjectStore::Transaction t;
+  coll_t coll(r_pgid);
+  cerr << "injecting dups into pgid:" << r_pgid << " num of dups:" << new_dups->size() << std::endl;
+  t.omap_setkeys(coll, r_pgid.make_pgmeta_oid(), (*new_dups));
+  auto ch = store->open_collection(coll);
+  store->queue_transaction(ch, std::move(t));
+  new_dups->clear();
+}
+
+int do_dups_inject_object(ObjectStore *store, spg_t r_pgid, json_spirit::mObject &in_json_obj,
+                          map<string,bufferlist> *new_dups, bool debug) {
+  std::map<std::string, json_spirit::mValue>::const_iterator it = in_json_obj.find("generate");
+  int32_t generate = 0;
+  if (it != in_json_obj.end()) {
+    generate = atoi(it->second.get_str().c_str());
+  }
+
+  it = in_json_obj.find("reqid");
+  if (it == in_json_obj.end()) {
+    return 1;
+  }
+  osd_reqid_t reqid(get_reqid_from_str(it->second.get_str()));
+  it = in_json_obj.find("version");
+  if (it == in_json_obj.end()) {
+    return 1;
+  }
+  eversion_t version(get_eversion_from_str(it->second.get_str()));
+  it = in_json_obj.find("user_version");
+  if (it == in_json_obj.end()) {
+    return 1;
+  }
+  version_t user_version = atoi(it->second.get_str().c_str());
+  it = in_json_obj.find("return_code");
+  if (it == in_json_obj.end()) {
+    return 1;
+  }
+  int32_t return_code = atoi(it->second.get_str().c_str());
+  if (generate) {
+    for(auto i = 0; i < generate; ++i) {
+      version.version++;
+      if (debug) {
+        cout << "generate dups reqid " << reqid << " v=" << version << std::endl;
+      }
+      pg_log_dup_t tmp(version, user_version, reqid, return_code);
+      bufferlist bl;
+      encode(tmp, bl);
+      (*new_dups)[tmp.get_key_name()] = std::move(bl);
+      if ( new_dups->size() > 50000 ) {
+        do_dups_inject_transction(store, r_pgid, new_dups);
+       cout << "inject of " << i << " dups into pgid:" << r_pgid << " done..." << std::endl;
+      }
+    }
+    return 0;
+  } else {
+    pg_log_dup_t tmp(version, user_version, reqid, return_code);
+    if (debug) {
+      cout << "adding dup: " << tmp << "into key:" << tmp.get_key_name() << std::endl;
+    }
+    bufferlist bl;
+    encode(tmp, bl);
+    (*new_dups)[tmp.get_key_name()] = std::move(bl);
+  }
+  return 0;
+}
+
+void do_dups_inject_from_json(ObjectStore *store, spg_t r_pgid, json_spirit::mValue &inJson, bool debug)
+{
+  map<string,bufferlist> new_dups;
+  const vector<json_spirit::mValue>& o = inJson.get_array();
+  for (const auto& obj : o) {
+    if (obj.type() == json_spirit::obj_type) {
+      json_spirit::mObject Mobj = obj.get_obj();
+      do_dups_inject_object(store, r_pgid, Mobj, &new_dups, debug);
+    } else {
+      throw std::runtime_error("JSON array/object not allowed type:" + std::to_string(obj.type()));
+      return;
+    }
+  }
+  if (new_dups.size() > 0) {
+    do_dups_inject_transction(store, r_pgid, &new_dups);
+  }
+
+
+  return ;
+}
+
 void usage(po::options_description &desc)
 {
     cerr << std::endl;
@@ -3488,7 +3621,7 @@ int main(int argc, char **argv)
     } else {
       file_fd = open(file.c_str(), O_WRONLY|O_CREAT|O_TRUNC, 0666);
     }
-  } else if (op == "import" || op == "dump-export" || op == "set-osdmap" || op == "set-inc-osdmap") {
+  } else if (op == "import" || op == "dump-export" || op == "set-osdmap" || op == "set-inc-osdmap" || op == "pg-log-inject-dups") {
     if (!vm.count("file") || file == "-") {
       if (isatty(STDIN_FILENO)) {
         cerr << "stdin is a tty and no --file filename specified" << std::endl;
@@ -3870,7 +4003,7 @@ int main(int argc, char **argv)
       || op == "export-remove" || op == "mark-complete"
       || op == "reset-last-complete"
       || op == "trim-pg-log"
-      || op == "trim-pg-log-dups") &&
+      || op == "pg-log-inject-dups") &&
       pgidstr.length() == 0) {
     cerr << "Must provide pgid" << std::endl;
     usage(desc);
@@ -4097,7 +4230,7 @@ int main(int argc, char **argv)
 
   // If not an object command nor any of the ops handled below, then output this usage
   // before complaining about a bad pgid
-  if (!vm.count("objcmd") && op != "export" && op != "export-remove" && op != "info" && op != "log" && op != "mark-complete" && op != "trim-pg-log" && op != "trim-pg-log-dups") {
+  if (!vm.count("objcmd") && op != "export" && op != "export-remove" && op != "info" && op != "log" && op != "mark-complete" && op != "trim-pg-log" && op != "trim-pg-log-dups" && op != "pg-log-inject-dups") {
     cerr << "Must provide --op (info, log, remove, mkfs, fsck, repair, export, export-remove, import, list, fix-lost, list-pgs, dump-journal, dump-super, meta-list, "
       "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log, trim-pg-log-dups statfs)"
         << std::endl;
@@ -4389,7 +4522,7 @@ int main(int argc, char **argv)
 
     if (op == "export" || op == "export-remove") {
       ceph_assert(superblock != nullptr);
-      ret = tool.do_export(fs.get(), coll, pgid, info, map_epoch, struct_ver, *superblock, past_intervals);
+      ret = tool.do_export(cct.get(), fs.get(), coll, pgid, info, map_epoch, struct_ver, *superblock, past_intervals);
       if (ret == 0) {
         cerr << "Export successful" << std::endl;
         if (op == "export-remove") {
@@ -4408,7 +4541,7 @@ int main(int argc, char **argv)
     } else if (op == "log") {
       PGLog::IndexedLog log;
       pg_missing_t missing;
-      ret = get_log(fs.get(), struct_ver, pgid, info, log, missing);
+      ret = get_log(cct.get(), fs.get(), struct_ver, pgid, info, log, missing);
       if (ret < 0)
           goto out;
 
@@ -4493,6 +4626,34 @@ int main(int argc, char **argv)
       }
       cout << "Reseting last_complete succeeded" << std::endl;
    
+    } else if (op == "pg-log-inject-dups") {
+        if (!vm.count("file") || file == "-") {
+          cerr << "Must provide file containing JSON dups entries" << std::endl;
+          ret = 1;
+          goto out;
+        }
+        if (debug)
+          cerr << "opening file " << file << std::endl;
+
+        ifstream json_file_stream(file , std::ifstream::in);
+        if (!json_file_stream.is_open()) {
+          cerr << "unable to open file " << file << std::endl;
+          ret = -1;
+          goto out;
+        }
+        json_spirit::mValue result;
+        try {
+          if (!json_spirit::read(json_file_stream, result))
+            throw std::runtime_error("unparseable JSON " + file);
+          if (result.type() != json_spirit::array_type) {
+            cerr << "result is not an array_type - type=" << result.type() << std::endl;
+            throw std::runtime_error("not JSON array_type " + file);
+          }
+          do_dups_inject_from_json(fs.get(), pgid, result, debug);
+        } catch (const std::runtime_error &e) {
+          cerr << e.what() << std::endl;;
+          return -1;
+        }
     } else {
       ceph_assert(!"Should have already checked for valid --op");
     }
index aafe886ba697058114c5f013563d1ac7d26dfaa0..82aa83e5d2c3d5ed38b34fc7f72564b08b0aa8e4 100644 (file)
@@ -27,7 +27,7 @@ class ObjectStoreTool : public RadosDump
     int dump_export(Formatter *formatter);
     int do_import(ObjectStore *store, OSDSuperblock& sb, bool force,
                  std::string pgidstr);
-    int do_export(ObjectStore *fs, coll_t coll, spg_t pgid,
+    int do_export(CephContext *cct, ObjectStore *fs, coll_t coll, spg_t pgid,
           pg_info_t &info, epoch_t map_epoch, __u8 struct_ver,
           const OSDSuperblock& superblock,
           PastIntervals &past_intervals);
index 7449e3704b002f95504b0818120a59444d35723c..5d40f8ffb17cb1bf4c5d2a9f2f52f316ed86331d 100644 (file)
@@ -49,12 +49,7 @@ install(TARGETS
 
 option(WITH_CEPHFS_SHELL "install cephfs-shell" OFF)
 if(WITH_CEPHFS_SHELL)
-  include(Distutils)
-  distutils_install_module(cephfs-shell)
-  if(WITH_TESTS)
-    include(AddCephTest)
-    add_tox_test(cephfs-shell)
-  endif()
+  add_subdirectory(shell)
 endif()
 
 option(WITH_CEPHFS_TOP "install cephfs-top utility" ON)
diff --git a/ceph/src/tools/cephfs/cephfs-shell b/ceph/src/tools/cephfs/cephfs-shell
deleted file mode 100755 (executable)
index 08ca4f3..0000000
+++ /dev/null
@@ -1,1687 +0,0 @@
-#!/usr/bin/python3
-# coding = utf-8
-
-import argparse
-import os
-import os.path
-import sys
-import cephfs as libcephfs
-import shutil
-import traceback
-import colorama
-import fnmatch
-import math
-import re
-import shlex
-import stat
-import errno
-
-from cmd2 import Cmd
-from cmd2 import __version__ as cmd2_version
-from distutils.version import LooseVersion
-
-if sys.version_info.major < 3:
-    raise RuntimeError("cephfs-shell is only compatible with python3")
-
-try:
-    from cmd2 import with_argparser
-except ImportError:
-    def with_argparser(argparser):
-        import functools
-
-        def argparser_decorator(func):
-            @functools.wraps(func)
-            def wrapper(thiz, cmdline):
-                if isinstance(cmdline, list):
-                    arglist = cmdline
-                else:
-                    # do not split if it's already a list
-                    arglist = shlex.split(cmdline, posix=False)
-                    # in case user quotes the command args
-                    arglist = [arg.strip('\'""') for arg in arglist]
-                try:
-                    args = argparser.parse_args(arglist)
-                except SystemExit:
-                    shell.exit_code = 1
-                    # argparse exits at seeing bad arguments
-                    return
-                else:
-                    return func(thiz, args)
-            argparser.prog = func.__name__[3:]
-            if argparser.description is None and func.__doc__:
-                argparser.description = func.__doc__
-
-            return wrapper
-
-        return argparser_decorator
-
-
-cephfs = None   # holds CephFS Python bindings
-shell = None    # holds instance of class CephFSShell
-exit_codes = {'Misc': 1,
-              'KeyboardInterrupt': 2,
-              errno.EPERM: 3,
-              errno.EACCES: 4,
-              errno.ENOENT: 5,
-              errno.EIO: 6,
-              errno.ENOSPC: 7,
-              errno.EEXIST: 8,
-              errno.ENODATA: 9,
-              errno.EINVAL: 10,
-              errno.EOPNOTSUPP: 11,
-              errno.ERANGE: 12,
-              errno.EWOULDBLOCK: 13,
-              errno.ENOTEMPTY: 14,
-              errno.ENOTDIR: 15,
-              errno.EDQUOT: 16,
-              errno.EPIPE: 17,
-              errno.ESHUTDOWN: 18,
-              errno.ECONNABORTED: 19,
-              errno.ECONNREFUSED: 20,
-              errno.ECONNRESET: 21,
-              errno.EINTR: 22}
-
-
-#########################################################################
-#
-# Following are methods are generically useful through class CephFSShell
-#
-#######################################################################
-
-
-def poutput(s, end='\n'):
-    shell.poutput(s, end=end)
-
-
-def perror(msg, **kwargs):
-    shell.perror(msg, **kwargs)
-
-
-def set_exit_code_msg(errcode='Misc', msg=''):
-    """
-    Set exit code and print error message
-    """
-    if isinstance(msg, libcephfs.Error):
-        shell.exit_code = exit_codes[msg.get_error_code()]
-    else:
-        shell.exit_code = exit_codes[errcode]
-    if msg:
-        perror(msg)
-
-
-def mode_notation(mode):
-    """
-    """
-    permission_bits = {'0': '---',
-                       '1': '--x',
-                       '2': '-w-',
-                       '3': '-wx',
-                       '4': 'r--',
-                       '5': 'r-x',
-                       '6': 'rw-',
-                       '7': 'rwx'}
-    mode = str(oct(mode))
-    notation = '-'
-    if mode[2] == '4':
-        notation = 'd'
-    elif mode[2:4] == '12':
-        notation = 'l'
-    for i in mode[-3:]:
-        notation += permission_bits[i]
-    return notation
-
-
-def get_chunks(file_size):
-    chunk_start = 0
-    chunk_size = 0x20000  # 131072 bytes, default max ssl buffer size
-    while chunk_start + chunk_size < file_size:
-        yield(chunk_start, chunk_size)
-        chunk_start += chunk_size
-    final_chunk_size = file_size - chunk_start
-    yield(chunk_start, final_chunk_size)
-
-
-def to_bytes(param):
-    # don't convert as follows as it can lead unusable results like coverting
-    # [1, 2, 3, 4] to '[1, 2, 3, 4]' -
-    # str(param).encode('utf-8')
-    if isinstance(param, bytes):
-        return param
-    elif isinstance(param, str):
-        return bytes(param, encoding='utf-8')
-    elif isinstance(param, list):
-        return [i.encode('utf-8') if isinstance(i, str) else to_bytes(i) for
-                i in param]
-    elif isinstance(param, int) or isinstance(param, float):
-        return str(param).encode('utf-8')
-    elif param is None:
-        return None
-
-
-def ls(path, opts=''):
-    # opts tries to be like /bin/ls opts
-    almost_all = 'A' in opts
-    try:
-        with cephfs.opendir(path) as d:
-            while True:
-                dent = cephfs.readdir(d)
-                if dent is None:
-                    return
-                elif almost_all and dent.d_name in (b'.', b'..'):
-                    continue
-                yield dent
-    except libcephfs.ObjectNotFound as e:
-        set_exit_code_msg(msg=e)
-
-
-def glob(path, pattern):
-    paths = []
-    parent_dir = os.path.dirname(path)
-    if parent_dir == b'':
-        parent_dir = b'/'
-    if path == b'/' or is_dir_exists(os.path.basename(path), parent_dir):
-        for i in ls(path, opts='A'):
-            if fnmatch.fnmatch(i.d_name, pattern):
-                paths.append(os.path.join(path, i.d_name))
-    return paths
-
-
-def locate_file(name, case_sensitive=True):
-    dir_list = sorted(set(dirwalk(cephfs.getcwd())))
-    if not case_sensitive:
-        return [dname for dname in dir_list if name.lower() in dname.lower()]
-    else:
-        return [dname for dname in dir_list if name in dname]
-
-
-def get_all_possible_paths(pattern):
-    complete_pattern = pattern[:]
-    paths = []
-    is_rel_path = not os.path.isabs(pattern)
-    if is_rel_path:
-        dir_ = cephfs.getcwd()
-    else:
-        dir_ = b'/'
-        pattern = pattern[1:]
-    patterns = pattern.split(b'/')
-    paths.extend(glob(dir_, patterns[0]))
-    patterns.pop(0)
-    for pattern in patterns:
-        for path in paths:
-            paths.extend(glob(path, pattern))
-    if is_rel_path:
-        complete_pattern = os.path.join(cephfs.getcwd(), complete_pattern)
-    return [path for path in paths if fnmatch.fnmatch(path, complete_pattern)]
-
-
-suffixes = ['B', 'K', 'M', 'G', 'T', 'P']
-
-
-def humansize(nbytes):
-    i = 0
-    while nbytes >= 1024 and i < len(suffixes) - 1:
-        nbytes /= 1024.
-        i += 1
-    nbytes = math.ceil(nbytes)
-    f = ('%d' % nbytes).rstrip('.')
-    return '%s%s' % (f, suffixes[i])
-
-
-def style_listing(path, is_dir, is_symlink, ls_long=False):
-    if not (is_dir or is_symlink):
-        return path
-    pretty = colorama.Style.BRIGHT
-    if is_symlink:
-        pretty += colorama.Fore.CYAN + path
-        if ls_long:
-            # Add target path
-            pretty += ' -> ' + cephfs.readlink(path, size=255).decode('utf-8')
-    elif is_dir:
-        pretty += colorama.Fore.BLUE + path + '/'
-    pretty += colorama.Style.RESET_ALL
-    return pretty
-
-
-def print_long(path, is_dir, is_symlink, human_readable):
-    info = cephfs.stat(path, follow_symlink=(not is_symlink))
-    pretty = style_listing(os.path.basename(path.decode('utf-8')), is_dir, is_symlink, True)
-    if human_readable:
-        sizefmt = '\t {:10s}'.format(humansize(info.st_size))
-    else:
-        sizefmt = '{:12d}'.format(info.st_size)
-    poutput(f'{mode_notation(info.st_mode)} {sizefmt} {info.st_uid} {info.st_gid} {info.st_mtime}'
-            f' {pretty}')
-
-
-def word_len(word):
-    """
-    Returns the word length, minus any color codes.
-    """
-    if word[0] == '\x1b':
-        return len(word) - 9
-    return len(word)
-
-
-def is_dir_exists(path, dir_=b''):
-    path_to_stat = os.path.join(dir_, path)
-    try:
-        return ((cephfs.stat(path_to_stat).st_mode & 0o0040000) != 0)
-    except libcephfs.Error:
-        return False
-
-
-def is_file_exists(path, dir_=b''):
-    try:
-        # if its not a directory, then its a file
-        return ((cephfs.stat(os.path.join(dir_, path)).st_mode & 0o0040000) == 0)
-    except libcephfs.Error:
-        return False
-
-
-def print_list(words, termwidth=79):
-    if not words:
-        return
-    words = [word.decode('utf-8') if isinstance(word, bytes) else word for word in words]
-    width = max([word_len(word) for word in words]) + 2
-    nwords = len(words)
-    ncols = max(1, (termwidth + 1) // (width + 1))
-    nrows = (nwords + ncols - 1) // ncols
-    for row in range(nrows):
-        for i in range(row, nwords, nrows):
-            word = words[i]
-            print_width = width
-            if word[0] == '\x1b':
-                print_width = print_width + 10
-
-            poutput('%-*s' % (print_width, words[i]),
-                    end='\n' if i + nrows >= nwords else '')
-
-
-def copy_from_local(local_path, remote_path):
-    stdin = -1
-    file_ = None
-    fd = None
-    convert_to_bytes = False
-    if local_path == b'-':
-        file_ = sys.stdin
-        convert_to_bytes = True
-    else:
-        try:
-            file_ = open(local_path, 'rb')
-        except PermissionError as e:
-            set_exit_code_msg(e.errno, 'error: no permission to read local file {}'.format(
-                local_path.decode('utf-8')))
-            return
-        stdin = 1
-    try:
-        fd = cephfs.open(remote_path, 'w', 0o666)
-    except libcephfs.Error as e:
-        set_exit_code_msg(msg=e)
-        return
-    progress = 0
-    while True:
-        data = file_.read(65536)
-        if not data or len(data) == 0:
-            break
-        if convert_to_bytes:
-            data = to_bytes(data)
-        wrote = cephfs.write(fd, data, progress)
-        if wrote < 0:
-            break
-        progress += wrote
-    cephfs.close(fd)
-    if stdin > 0:
-        file_.close()
-    poutput('')
-
-
-def copy_to_local(remote_path, local_path):
-    fd = None
-    if local_path != b'-':
-        local_dir = os.path.dirname(local_path)
-        dir_list = remote_path.rsplit(b'/', 1)
-        if not os.path.exists(local_dir):
-            os.makedirs(local_dir)
-        if len(dir_list) > 2 and dir_list[1] == b'':
-            return
-        fd = open(local_path, 'wb+')
-    file_ = cephfs.open(remote_path, 'r')
-    file_size = cephfs.stat(remote_path).st_size
-    if file_size <= 0:
-        return
-    progress = 0
-    for chunk_start, chunk_size in get_chunks(file_size):
-        file_chunk = cephfs.read(file_, chunk_start, chunk_size)
-        progress += len(file_chunk)
-        if fd:
-            fd.write(file_chunk)
-        else:
-            poutput(file_chunk.decode('utf-8'))
-    cephfs.close(file_)
-    if fd:
-        fd.close()
-
-
-def dirwalk(path):
-    """
-    walk a directory tree, using a generator
-    """
-    path = os.path.normpath(path)
-    for item in ls(path, opts='A'):
-        fullpath = os.path.join(path, item.d_name)
-        src_path = fullpath.rsplit(b'/', 1)[0]
-
-        yield os.path.normpath(fullpath)
-        if is_dir_exists(item.d_name, src_path):
-            for x in dirwalk(fullpath):
-                yield x
-
-
-##################################################################
-#
-# Following methods are implementation for CephFS Shell commands
-#
-#################################################################
-
-class CephFSShell(Cmd):
-
-    def __init__(self):
-        super().__init__()
-        self.working_dir = cephfs.getcwd().decode('utf-8')
-        self.set_prompt()
-        self.interactive = False
-        self.umask = '2'
-
-    def default(self, line):
-        perror('Unrecognized command')
-
-    def set_prompt(self):
-        self.prompt = ('\033[01;33mCephFS:~' + colorama.Fore.LIGHTCYAN_EX
-                       + self.working_dir + colorama.Style.RESET_ALL
-                       + '\033[01;33m>>>\033[00m ')
-
-    def create_argparser(self, command):
-        try:
-            argparse_args = getattr(self, 'argparse_' + command)
-        except AttributeError:
-            set_exit_code_msg()
-            return None
-        doc_lines = getattr(
-            self, 'do_' + command).__doc__.expandtabs().splitlines()
-        if '' in doc_lines:
-            blank_idx = doc_lines.index('')
-            usage = doc_lines[:blank_idx]
-            description = doc_lines[blank_idx + 1:]
-        else:
-            usage = doc_lines
-            description = []
-        parser = argparse.ArgumentParser(
-            prog=command,
-            usage='\n'.join(usage),
-            description='\n'.join(description),
-            formatter_class=argparse.ArgumentDefaultsHelpFormatter
-        )
-        for args, kwargs in argparse_args:
-            parser.add_argument(*args, **kwargs)
-        return parser
-
-    def complete_filenames(self, text, line, begidx, endidx):
-        if not text:
-            completions = [x.d_name.decode('utf-8') + '/' * int(x.is_dir())
-                           for x in ls(b".", opts='A')]
-        else:
-            if text.count('/') > 0:
-                completions = [text.rsplit('/', 1)[0] + '/'
-                               + x.d_name.decode('utf-8') + '/'
-                               * int(x.is_dir()) for x in ls('/'
-                               + text.rsplit('/', 1)[0], opts='A')
-                               if x.d_name.decode('utf-8').startswith(
-                                   text.rsplit('/', 1)[1])]
-            else:
-                completions = [x.d_name.decode('utf-8') + '/'
-                               * int(x.is_dir()) for x in ls(b".", opts='A')
-                               if x.d_name.decode('utf-8').startswith(text)]
-            if len(completions) == 1 and completions[0][-1] == '/':
-                dir_, file_ = completions[0].rsplit('/', 1)
-                completions.extend([dir_ + '/' + x.d_name.decode('utf-8')
-                                    + '/' * int(x.is_dir()) for x in
-                                    ls('/' + dir_, opts='A')
-                                    if x.d_name.decode('utf-8').startswith(file_)])
-            return self.delimiter_complete(text, line, begidx, endidx, completions, '/')
-        return completions
-
-    def onecmd(self, line, **kwargs):
-        """
-        Global error catcher
-        """
-        try:
-            res = Cmd.onecmd(self, line, **kwargs)
-            if self.interactive:
-                self.set_prompt()
-            return res
-        except ConnectionError as e:
-            set_exit_code_msg(e.errno, f'***\n{e}')
-        except KeyboardInterrupt:
-            set_exit_code_msg('KeyboardInterrupt', 'Command aborted')
-        except (libcephfs.Error, Exception) as e:
-            if shell.debug:
-                traceback.print_exc(file=sys.stdout)
-            set_exit_code_msg(msg=e)
-
-    class path_to_bytes(argparse.Action):
-        def __call__(self, parser, namespace, values, option_string=None):
-            values = to_bytes(values)
-            setattr(namespace, self.dest, values)
-
-    # TODO: move the necessary contents from here to `class path_to_bytes`.
-    class get_list_of_bytes_path(argparse.Action):
-        def __call__(self, parser, namespace, values, option_string=None):
-            values = to_bytes(values)
-
-            if values == b'.':
-                values = cephfs.getcwd()
-            else:
-                for i in values:
-                    if i == b'.':
-                        values[values.index(i)] = cephfs.getcwd()
-
-            setattr(namespace, self.dest, values)
-
-    def complete_mkdir(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    class ModeAction(argparse.Action):
-        def __init__(self, option_strings, dest, nargs=None, **kwargs):
-            if nargs is not None and nargs != '?':
-                raise ValueError("more than one modes not allowed")
-            super().__init__(option_strings, dest, **kwargs)
-
-        def __call__(self, parser, namespace, values, option_string=None):
-            o_mode = 0
-            res = None
-            try:
-                o_mode = int(values, base=8)
-            except ValueError:
-                res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', values)
-                if res is None:
-                    parser.error("invalid mode: %s\n"
-                                 "mode must be a numeric octal literal\n"
-                                 "or   ((u?g?o?)|(a?))(=)(r?w?x?)" %
-                                 values)
-                else:
-                    # we are supporting only assignment of mode and not + or -
-                    # as is generally available with the chmod command
-                    # eg.
-                    # >>> res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', 'go=')
-                    # >>> res.groups()
-                    # ('go', 'go', None, '=', '')
-                    val = res.groups()
-
-                    if val[3] != '=':
-                        parser.error("need assignment operator between user "
-                                     "and mode specifiers")
-                    if val[4] == '':
-                        parser.error("invalid mode: %s\n"
-                                     "mode must be combination of: r | w | x" %
-                                     values)
-                    users = ''
-                    if val[2] is None:
-                        users = val[1]
-                    else:
-                        users = val[2]
-
-                    t_mode = 0
-                    if users == 'a':
-                        users = 'ugo'
-
-                    if 'r' in val[4]:
-                        t_mode |= 4
-                    if 'w' in val[4]:
-                        t_mode |= 2
-                    if 'x' in val[4]:
-                        t_mode |= 1
-
-                    if 'u' in users:
-                        o_mode |= (t_mode << 6)
-                    if 'g' in users:
-                        o_mode |= (t_mode << 3)
-                    if 'o' in users:
-                        o_mode |= t_mode
-
-            if o_mode < 0:
-                parser.error("invalid mode: %s\n"
-                             "mode cannot be negative" % values)
-            if o_mode > 0o777:
-                parser.error("invalid mode: %s\n"
-                             "mode cannot be greater than octal 0777" % values)
-
-            setattr(namespace, self.dest, str(oct(o_mode)))
-
-    mkdir_parser = argparse.ArgumentParser(
-        description='Create the directory(ies), if they do not already exist.')
-    mkdir_parser.add_argument('dirs', type=str,
-                              action=path_to_bytes,
-                              metavar='DIR_NAME',
-                              help='Name of new_directory.',
-                              nargs='+')
-    mkdir_parser.add_argument('-m', '--mode', type=str,
-                              action=ModeAction,
-                              help='Sets the access mode for the new directory.')
-    mkdir_parser.add_argument('-p', '--parent', action='store_true',
-                              help='Create parent directories as necessary. '
-                                   'When this option is specified, no error is'
-                                   'reported if a directory already exists.')
-
-    @with_argparser(mkdir_parser)
-    def do_mkdir(self, args):
-        """
-        Create directory.
-        """
-        for path in args.dirs:
-            if args.mode:
-                permission = int(args.mode, 8)
-            else:
-                permission = 0o777
-            if args.parent:
-                cephfs.mkdirs(path, permission)
-            else:
-                try:
-                    cephfs.mkdir(path, permission)
-                except libcephfs.Error as e:
-                    set_exit_code_msg(e)
-
-    def complete_put(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        index_dict = {1: self.path_complete}
-        return self.index_based_complete(text, line, begidx, endidx, index_dict)
-
-    put_parser = argparse.ArgumentParser(
-        description='Copy a file/directory to Ceph File System from Local File System.')
-    put_parser.add_argument('local_path', type=str, action=path_to_bytes,
-                            help='Path of the file in the local system')
-    put_parser.add_argument('remote_path', type=str, action=path_to_bytes,
-                            help='Path of the file in the remote system')
-    put_parser.add_argument('-f', '--force', action='store_true',
-                            help='Overwrites the destination if it already exists.')
-
-    @with_argparser(put_parser)
-    def do_put(self, args):
-        """
-        Copy a local file/directory to CephFS.
-        """
-        if args.local_path != b'-' and not os.path.isfile(args.local_path) \
-                and not os.path.isdir(args.local_path):
-            set_exit_code_msg(errno.ENOENT,
-                              msg=f"error: "
-                                  f"{args.local_path.decode('utf-8')}: "
-                                  f"No such file or directory")
-            return
-
-        if (is_file_exists(args.remote_path) or is_dir_exists(
-                args.remote_path)) and not args.force:
-            set_exit_code_msg(msg=f"error: file/directory "
-                                  f"{args.remote_path.decode('utf-8')} "
-                                  f"exists, use --force to overwrite")
-            return
-
-        root_src_dir = args.local_path
-        root_dst_dir = args.remote_path
-        if args.local_path == b'.' or args.local_path == b'./':
-            root_src_dir = os.getcwdb()
-        elif len(args.local_path.rsplit(b'/', 1)) < 2:
-            root_src_dir = os.path.join(os.getcwdb(), args.local_path)
-        else:
-            p = args.local_path.split(b'/')
-            if p[0] == b'.':
-                root_src_dir = os.getcwdb()
-                p.pop(0)
-                while len(p) > 0:
-                    root_src_dir += b'/' + p.pop(0)
-
-        if root_dst_dir == b'.':
-            if args.local_path != b'-':
-                root_dst_dir = root_src_dir.rsplit(b'/', 1)[1]
-                if root_dst_dir == b'':
-                    root_dst_dir = root_src_dir.rsplit(b'/', 1)[0]
-                    a = root_dst_dir.rsplit(b'/', 1)
-                    if len(a) > 1:
-                        root_dst_dir = a[1]
-                    else:
-                        root_dst_dir = a[0]
-            else:
-                set_exit_code_msg(errno.EINVAL, 'error: no filename specified '
-                                  'for destination')
-                return
-
-        if root_dst_dir[-1] != b'/':
-            root_dst_dir += b'/'
-
-        if args.local_path == b'-' or os.path.isfile(root_src_dir):
-            if args.local_path == b'-':
-                root_src_dir = b'-'
-            copy_from_local(root_src_dir, root_dst_dir)
-        else:
-            for src_dir, dirs, files in os.walk(root_src_dir):
-                if isinstance(src_dir, str):
-                    src_dir = to_bytes(src_dir)
-                dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
-                dst_dir = re.sub(rb'\/+', b'/', cephfs.getcwd()
-                                 + dst_dir)
-                if args.force and dst_dir != b'/' and not is_dir_exists(
-                        dst_dir[:-1]) and not locate_file(dst_dir):
-                    try:
-                        cephfs.mkdirs(dst_dir, 0o777)
-                    except libcephfs.Error:
-                        pass
-                if (not args.force) and dst_dir != b'/' and not is_dir_exists(
-                        dst_dir) and not os.path.isfile(root_src_dir):
-                    try:
-                        cephfs.mkdirs(dst_dir, 0o777)
-                    except libcephfs.Error:
-                        # TODO: perhaps, set retval to 1?
-                        pass
-
-                for dir_ in dirs:
-                    dir_name = os.path.join(dst_dir, dir_)
-                    if not is_dir_exists(dir_name):
-                        try:
-                            cephfs.mkdirs(dir_name, 0o777)
-                        except libcephfs.Error:
-                            # TODO: perhaps, set retval to 1?
-                            pass
-
-                for file_ in files:
-                    src_file = os.path.join(src_dir, file_)
-                    dst_file = re.sub(rb'\/+', b'/', b'/' + dst_dir + b'/' + file_)
-                    if (not args.force) and is_file_exists(dst_file):
-                        return
-                    copy_from_local(src_file, os.path.join(cephfs.getcwd(),
-                                    dst_file))
-
-    def complete_get(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    get_parser = argparse.ArgumentParser(
-        description='Copy a file from Ceph File System to Local Directory.')
-    get_parser.add_argument('remote_path', type=str, action=path_to_bytes,
-                            help='Path of the file in the remote system')
-    get_parser.add_argument('local_path', type=str, action=path_to_bytes,
-                            help='Path of the file in the local system')
-    get_parser.add_argument('-f', '--force', action='store_true',
-                            help='Overwrites the destination if it already exists.')
-
-    @with_argparser(get_parser)
-    def do_get(self, args):
-        """
-        Copy a file/directory from CephFS to given path.
-        """
-        if not is_file_exists(args.remote_path) and not \
-                is_dir_exists(args.remote_path):
-            set_exit_code_msg(errno.ENOENT, "error: no file/directory"
-                                            " found at specified remote "
-                                            "path")
-            return
-        if (os.path.isfile(args.local_path) or os.path.isdir(
-                args.local_path)) and not args.force:
-            set_exit_code_msg(msg=f"error: file/directory "
-                                  f"{args.local_path.decode('utf-8')}"
-                                  f" already exists, use --force to "
-                                  f"overwrite")
-            return
-        root_src_dir = args.remote_path
-        root_dst_dir = args.local_path
-        fname = root_src_dir.rsplit(b'/', 1)
-        if args.local_path == b'.':
-            root_dst_dir = os.getcwdb()
-        if args.remote_path == b'.':
-            root_src_dir = cephfs.getcwd()
-        if args.local_path == b'-':
-            if args.remote_path == b'.' or args.remote_path == b'./':
-                set_exit_code_msg(errno.EINVAL, 'error: no remote file name specified')
-                return
-            copy_to_local(root_src_dir, b'-')
-        elif is_file_exists(args.remote_path):
-            copy_to_local(root_src_dir, root_dst_dir)
-        elif b'/' in root_src_dir and is_file_exists(fname[1], fname[0]):
-            copy_to_local(root_src_dir, root_dst_dir)
-        else:
-            files = list(reversed(sorted(dirwalk(root_src_dir))))
-            for file_ in files:
-                dst_dirpath, dst_file = file_.rsplit(b'/', 1)
-                if dst_dirpath in files:
-                    files.remove(dst_dirpath)
-                dst_path = os.path.join(root_dst_dir, dst_dirpath, dst_file)
-                dst_path = os.path.normpath(dst_path)
-                if is_dir_exists(file_):
-                    try:
-                        os.makedirs(dst_path)
-                    except OSError:
-                        pass
-                else:
-                    copy_to_local(file_, dst_path)
-
-        return 0
-
-    def complete_ls(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    ls_parser = argparse.ArgumentParser(
-        description='Copy a file from Ceph File System from Local Directory.')
-    ls_parser.add_argument('-l', '--long', action='store_true',
-                           help='Detailed list of items in the directory.')
-    ls_parser.add_argument('-r', '--reverse', action='store_true',
-                           help='Reverse order of listing items in the directory.')
-    ls_parser.add_argument('-H', action='store_true', help='Human Readable')
-    ls_parser.add_argument('-a', '--all', action='store_true',
-                           help='Do not Ignore entries starting with .')
-    ls_parser.add_argument('-S', action='store_true', help='Sort by file_size')
-    ls_parser.add_argument('paths', help='Name of Directories',
-                           action=path_to_bytes, nargs='*', default=['.'])
-
-    @with_argparser(ls_parser)
-    def do_ls(self, args):
-        """
-        List all the files and directories in the current working directory
-        """
-        paths = args.paths
-        for path in paths:
-            values = []
-            items = []
-            try:
-                if path.count(b'*') > 0:
-                    all_items = get_all_possible_paths(path)
-                    if len(all_items) == 0:
-                        continue
-                    path = all_items[0].rsplit(b'/', 1)[0]
-                    if path == b'':
-                        path = b'/'
-                    dirs = []
-                    for i in all_items:
-                        for item in ls(path):
-                            d_name = item.d_name
-                            if os.path.basename(i) == d_name:
-                                if item.is_dir():
-                                    dirs.append(os.path.join(path, d_name))
-                                else:
-                                    items.append(item)
-                    if dirs:
-                        paths.extend(dirs)
-                    else:
-                        poutput(path.decode('utf-8'), end=':\n')
-                    items = sorted(items, key=lambda item: item.d_name)
-                else:
-                    if path != b'' and path != cephfs.getcwd() and len(paths) > 1:
-                        poutput(path.decode('utf-8'), end=':\n')
-                    items = sorted(ls(path), key=lambda item: item.d_name)
-                if not args.all:
-                    items = [i for i in items if not i.d_name.startswith(b'.')]
-                if args.S:
-                    items = sorted(items, key=lambda item: cephfs.stat(
-                        path + b'/' + item.d_name, follow_symlink=(
-                            not item.is_symbol_file())).st_size)
-                if args.reverse:
-                    items = reversed(items)
-                for item in items:
-                    filepath = item.d_name
-                    is_dir = item.is_dir()
-                    is_sym_lnk = item.is_symbol_file()
-                    try:
-                        if args.long and args.H:
-                            print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir,
-                                       is_sym_lnk, True)
-                        elif args.long:
-                            print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir,
-                                       is_sym_lnk, False)
-                        elif is_sym_lnk or is_dir:
-                            values.append(style_listing(filepath.decode('utf-8'), is_dir,
-                                          is_sym_lnk))
-                        else:
-                            values.append(filepath)
-                    except libcephfs.Error as e:
-                        set_exit_code_msg(msg=e)
-                if not args.long:
-                    print_list(values, shutil.get_terminal_size().columns)
-                    if path != paths[-1]:
-                        poutput('')
-            except libcephfs.Error as e:
-                set_exit_code_msg(msg=e)
-
-    def complete_rmdir(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    rmdir_parser = argparse.ArgumentParser(description='Remove Directory.')
-    rmdir_parser.add_argument('paths', help='Directory Path.', nargs='+',
-                              action=path_to_bytes)
-    rmdir_parser.add_argument('-p', '--parent', action='store_true',
-                              help='Remove parent directories as necessary. '
-                                   'When this option is specified, no error '
-                                    'is reported if a directory has any '
-                                    'sub-directories, files')
-
-    @with_argparser(rmdir_parser)
-    def do_rmdir(self, args):
-        self.do_rmdir_helper(args)
-
-    def do_rmdir_helper(self, args):
-        """
-        Remove a specific Directory
-        """
-        is_pattern = False
-        paths = args.paths
-        for path in paths:
-            if path.count(b'*') > 0:
-                is_pattern = True
-                all_items = get_all_possible_paths(path)
-                if len(all_items) > 0:
-                    path = all_items[0].rsplit(b'/', 1)[0]
-                if path == b'':
-                    path = b'/'
-                dirs = []
-                for i in all_items:
-                    for item in ls(path):
-                        d_name = item.d_name
-                        if os.path.basename(i) == d_name:
-                            if item.is_dir():
-                                dirs.append(os.path.join(path, d_name))
-                paths.extend(dirs)
-                continue
-            else:
-                is_pattern = False
-
-            if args.parent:
-                path = os.path.join(cephfs.getcwd(), path.rsplit(b'/')[0])
-                files = list(sorted(set(dirwalk(path)), reverse=True))
-                if not files:
-                    path = b'.'
-                for filepath in files:
-                    try:
-                        cephfs.rmdir(os.path.normpath(filepath))
-                    except libcephfs.Error as e:
-                        perror(e)
-                        path = b'.'
-                        break
-            else:
-                path = os.path.normpath(os.path.join(cephfs.getcwd(), path))
-            if not is_pattern and path != os.path.normpath(b''):
-                try:
-                    cephfs.rmdir(path)
-                except libcephfs.Error as e:
-                    set_exit_code_msg(msg=e)
-
-    def complete_rm(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    rm_parser = argparse.ArgumentParser(description='Remove File.')
-    rm_parser.add_argument('paths', help='File Path.', nargs='+',
-                           action=path_to_bytes)
-
-    @with_argparser(rm_parser)
-    def do_rm(self, args):
-        """
-        Remove a specific file
-        """
-        file_paths = args.paths
-        for path in file_paths:
-            if path.count(b'*') > 0:
-                file_paths.extend([i for i in get_all_possible_paths(
-                    path) if is_file_exists(i)])
-            else:
-                try:
-                    cephfs.unlink(path)
-                except libcephfs.Error as e:
-                    # NOTE: perhaps we need a better msg here
-                    set_exit_code_msg(msg=e)
-
-    def complete_mv(self, text, line, begidx, endidx):
-        """
-         auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    mv_parser = argparse.ArgumentParser(description='Move File.')
-    mv_parser.add_argument('src_path', type=str, action=path_to_bytes,
-                           help='Source File Path.')
-    mv_parser.add_argument('dest_path', type=str, action=path_to_bytes,
-                           help='Destination File Path.')
-
-    @with_argparser(mv_parser)
-    def do_mv(self, args):
-        """
-        Rename a file or Move a file from source path to the destination
-        """
-        cephfs.rename(args.src_path, args.dest_path)
-
-    def complete_cd(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    cd_parser = argparse.ArgumentParser(description='Change working directory')
-    cd_parser.add_argument('path', type=str, help='Name of the directory.',
-                           action=path_to_bytes, nargs='?', default='/')
-
-    @with_argparser(cd_parser)
-    def do_cd(self, args):
-        """
-        Change working directory
-        """
-        cephfs.chdir(args.path)
-        self.working_dir = cephfs.getcwd().decode('utf-8')
-        self.set_prompt()
-
-    def do_cwd(self, arglist):
-        """
-        Get current working directory.
-        """
-        poutput(cephfs.getcwd().decode('utf-8'))
-
-    def complete_chmod(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    chmod_parser = argparse.ArgumentParser(description='Create Directory.')
-    chmod_parser.add_argument('mode', type=str, action=ModeAction, help='Mode')
-    chmod_parser.add_argument('paths', type=str, action=path_to_bytes,
-                              help='Name of the file', nargs='+')
-
-    @with_argparser(chmod_parser)
-    def do_chmod(self, args):
-        """
-        Change permission of a file
-        """
-        for path in args.paths:
-            mode = int(args.mode, base=8)
-            try:
-                cephfs.chmod(path, mode)
-            except libcephfs.Error as e:
-                set_exit_code_msg(msg=e)
-
-    def complete_cat(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    cat_parser = argparse.ArgumentParser(description='')
-    cat_parser.add_argument('paths', help='Name of Files', action=path_to_bytes,
-                            nargs='+')
-
-    @with_argparser(cat_parser)
-    def do_cat(self, args):
-        """
-        Print contents of a file
-        """
-        for path in args.paths:
-            if is_file_exists(path):
-                copy_to_local(path, b'-')
-            else:
-                set_exit_code_msg(errno.ENOENT, '{}: no such file'.format(
-                    path.decode('utf-8')))
-
-    umask_parser = argparse.ArgumentParser(description='Set umask value.')
-    umask_parser.add_argument('mode', help='Mode', type=str, action=ModeAction,
-                              nargs='?', default='')
-
-    @with_argparser(umask_parser)
-    def do_umask(self, args):
-        """
-        Set Umask value.
-        """
-        if args.mode == '':
-            poutput(self.umask.zfill(4))
-        else:
-            mode = int(args.mode, 8)
-            self.umask = str(oct(cephfs.umask(mode))[2:])
-
-    def complete_write(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    write_parser = argparse.ArgumentParser(description='Writes data into a file')
-    write_parser.add_argument('path', type=str, action=path_to_bytes,
-                              help='Name of File')
-
-    @with_argparser(write_parser)
-    def do_write(self, args):
-        """
-        Write data into a file.
-        """
-
-        copy_from_local(b'-', args.path)
-
-    def complete_lcd(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        index_dict = {1: self.path_complete}
-        return self.index_based_complete(text, line, begidx, endidx, index_dict)
-
-    lcd_parser = argparse.ArgumentParser(description='')
-    lcd_parser.add_argument('path', type=str, action=path_to_bytes, help='Path')
-
-    @with_argparser(lcd_parser)
-    def do_lcd(self, args):
-        """
-        Moves into the given local directory
-        """
-        try:
-            os.chdir(os.path.expanduser(args.path))
-        except OSError as e:
-            set_exit_code_msg(e.errno, "Cannot change to "
-                              f"{e.filename.decode('utf-8')}: {e.strerror}")
-
-    def complete_lls(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        index_dict = {1: self.path_complete}
-        return self.index_based_complete(text, line, begidx, endidx, index_dict)
-
-    lls_parser = argparse.ArgumentParser(
-        description='List files in local system.')
-    lls_parser.add_argument('paths', help='Paths', action=path_to_bytes,
-                            nargs='*')
-
-    @with_argparser(lls_parser)
-    def do_lls(self, args):
-        """
-        Lists all files and folders in the current local directory
-        """
-        if not args.paths:
-            print_list(os.listdir(os.getcwdb()))
-        else:
-            for path in args.paths:
-                try:
-                    items = os.listdir(path)
-                    poutput("{}:".format(path.decode('utf-8')))
-                    print_list(items)
-                except OSError as e:
-                    set_exit_code_msg(e.errno, f"{e.filename.decode('utf-8')}: "
-                                      f"{e.strerror}")
-        # Arguments to the with_argpaser decorator function are sticky.
-        # The items in args.path do not get overwritten in subsequent calls.
-        # The arguments remain in args.paths after the function exits and we
-        # neeed to clean it up to ensure the next call works as expected.
-        args.paths.clear()
-
-    def do_lpwd(self, arglist):
-        """
-        Prints the absolute path of the current local directory
-        """
-        poutput(os.getcwd())
-
-    def complete_df(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    df_parser = argparse.ArgumentParser(description='Show information about\
-                the amount of available disk space')
-    df_parser.add_argument('file', help='Name of the file', nargs='*',
-                           default=['.'], action=path_to_bytes)
-
-    @with_argparser(df_parser)
-    def do_df(self, arglist):
-        """
-        Display the amount of available disk space for file systems
-        """
-        header = True    # Set to true for printing header only once
-        if b'.' == arglist.file[0]:
-            arglist.file = ls(b'.')
-
-        for file in arglist.file:
-            if isinstance(file, libcephfs.DirEntry):
-                file = file.d_name
-            if file == b'.' or file == b'..':
-                continue
-            try:
-                statfs = cephfs.statfs(file)
-                stat = cephfs.stat(file)
-                block_size = (statfs['f_blocks'] * statfs['f_bsize']) // 1024
-                available = block_size - stat.st_size
-                use = 0
-
-                if block_size > 0:
-                    use = (stat.st_size * 100) // block_size
-
-                if header:
-                    header = False
-                    poutput('{:25s}\t{:5s}\t{:15s}{:10s}{}'.format(
-                            "1K-blocks", "Used", "Available", "Use%",
-                            "Stored on"))
-
-                poutput('{:d}\t{:18d}\t{:8d}\t{:10s} {}'.format(block_size,
-                        stat.st_size, available, str(int(use)) + '%',
-                        file.decode('utf-8')))
-            except libcephfs.OSError as e:
-                set_exit_code_msg(e.get_error_code(), "could not statfs {}: {}".format(
-                    file.decode('utf-8'), e.strerror))
-
-    locate_parser = argparse.ArgumentParser(
-        description='Find file within file system')
-    locate_parser.add_argument('name', help='name', type=str,
-                               action=path_to_bytes)
-    locate_parser.add_argument('-c', '--count', action='store_true',
-                               help='Count list of items located.')
-    locate_parser.add_argument(
-        '-i', '--ignorecase', action='store_true', help='Ignore case')
-
-    @with_argparser(locate_parser)
-    def do_locate(self, args):
-        """
-        Find a file within the File System
-        """
-        if args.name.count(b'*') == 1:
-            if args.name[0] == b'*':
-                args.name += b'/'
-            elif args.name[-1] == '*':
-                args.name = b'/' + args.name
-        args.name = args.name.replace(b'*', b'')
-        if args.ignorecase:
-            locations = locate_file(args.name, False)
-        else:
-            locations = locate_file(args.name)
-        if args.count:
-            poutput(len(locations))
-        else:
-            poutput((b'\n'.join(locations)).decode('utf-8'))
-
-    def complete_du(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    du_parser = argparse.ArgumentParser(
-        description='Disk Usage of a Directory')
-    du_parser.add_argument('paths', type=str, action=get_list_of_bytes_path,
-                           help='Name of the directory.', nargs='*',
-                           default=[b'.'])
-    du_parser.add_argument('-r', action='store_true',
-                           help='Recursive Disk usage of all directories.')
-
-    @with_argparser(du_parser)
-    def do_du(self, args):
-        """
-        Print disk usage of a given path(s).
-        """
-        def print_disk_usage(files):
-            if isinstance(files, bytes):
-                files = (files, )
-
-            for f in files:
-                try:
-                    st = cephfs.lstat(f)
-
-                    if stat.S_ISDIR(st.st_mode):
-                        dusage = int(cephfs.getxattr(f,
-                                     'ceph.dir.rbytes').decode('utf-8'))
-                    else:
-                        dusage = st.st_size
-
-                    # print path in local context
-                    f = os.path.normpath(f)
-                    if f[0] is ord('/'):
-                        f = b'.' + f
-                    poutput('{:10s} {}'.format(humansize(dusage),
-                            f.decode('utf-8')))
-                except libcephfs.Error as e:
-                    set_exit_code_msg(msg=e)
-                    continue
-
-        for path in args.paths:
-            if args.r:
-                print_disk_usage(sorted(set(dirwalk(path)).union({path})))
-            else:
-                print_disk_usage(path)
-
-    quota_parser = argparse.ArgumentParser(
-        description='Quota management for a Directory')
-    quota_parser.add_argument('op', choices=['get', 'set'],
-                              help='Quota operation type.')
-    quota_parser.add_argument('path', type=str, action=path_to_bytes,
-                              help='Name of the directory.')
-    quota_parser.add_argument('--max_bytes', type=int, default=-1, nargs='?',
-                              help='Max cumulative size of the data under '
-                                   'this directory.')
-    quota_parser.add_argument('--max_files', type=int, default=-1, nargs='?',
-                              help='Total number of files under this '
-                                   'directory tree.')
-
-    @with_argparser(quota_parser)
-    def do_quota(self, args):
-        """
-        Quota management.
-        """
-        if not is_dir_exists(args.path):
-            set_exit_code_msg(errno.ENOENT, 'error: no such directory {}'.format(
-                args.path.decode('utf-8')))
-            return
-
-        if args.op == 'set':
-            if (args.max_bytes == -1) and (args.max_files == -1):
-                set_exit_code_msg(errno.EINVAL, 'please specify either '
-                                  '--max_bytes or --max_files or both')
-                return
-
-            if args.max_bytes >= 0:
-                max_bytes = to_bytes(str(args.max_bytes))
-                try:
-                    cephfs.setxattr(args.path, 'ceph.quota.max_bytes',
-                                    max_bytes, os.XATTR_CREATE)
-                    poutput('max_bytes set to %d' % args.max_bytes)
-                except libcephfs.Error as e:
-                    cephfs.setxattr(args.path, 'ceph.quota.max_bytes',
-                                    max_bytes, os.XATTR_REPLACE)
-                    set_exit_code_msg(e.get_error_code(), 'max_bytes reset to '
-                                      f'{args.max_bytes}')
-
-            if args.max_files >= 0:
-                max_files = to_bytes(str(args.max_files))
-                try:
-                    cephfs.setxattr(args.path, 'ceph.quota.max_files',
-                                    max_files, os.XATTR_CREATE)
-                    poutput('max_files set to %d' % args.max_files)
-                except libcephfs.Error as e:
-                    cephfs.setxattr(args.path, 'ceph.quota.max_files',
-                                    max_files, os.XATTR_REPLACE)
-                    set_exit_code_msg(e.get_error_code(), 'max_files reset to '
-                                      f'{args.max_files}')
-        elif args.op == 'get':
-            max_bytes = '0'
-            max_files = '0'
-            try:
-                max_bytes = cephfs.getxattr(args.path, 'ceph.quota.max_bytes')
-                poutput('max_bytes: {}'.format(max_bytes.decode('utf-8')))
-            except libcephfs.Error as e:
-                set_exit_code_msg(e.get_error_code(), 'max_bytes is not set')
-
-            try:
-                max_files = cephfs.getxattr(args.path, 'ceph.quota.max_files')
-                poutput('max_files: {}'.format(max_files.decode('utf-8')))
-            except libcephfs.Error as e:
-                set_exit_code_msg(e.get_error_code(), 'max_files is not set')
-
-    snap_parser = argparse.ArgumentParser(description='Snapshot Management')
-    snap_parser.add_argument('op', type=str,
-                             help='Snapshot operation: create or delete')
-    snap_parser.add_argument('name', type=str, action=path_to_bytes,
-                             help='Name of snapshot')
-    snap_parser.add_argument('dir', type=str, action=path_to_bytes,
-                             help='Directory for which snapshot '
-                                  'needs to be created or deleted')
-
-    @with_argparser(snap_parser)
-    def do_snap(self, args):
-        """
-        Snapshot management for the volume
-        """
-        # setting self.colors to None turns off colorizing and
-        # perror emits plain text
-        self.colors = None
-
-        snapdir = '.snap'
-        conf_snapdir = cephfs.conf_get('client_snapdir')
-        if conf_snapdir is not None:
-            snapdir = conf_snapdir
-        snapdir = to_bytes(snapdir)
-        if args.op == 'create':
-            try:
-                if is_dir_exists(args.dir):
-                    cephfs.mkdir(os.path.join(args.dir, snapdir, args.name), 0o755)
-                else:
-                    set_exit_code_msg(errno.ENOENT, "'{}': no such directory".format(
-                                      args.dir.decode('utf-8')))
-            except libcephfs.Error as e:
-                set_exit_code_msg(e.get_error_code(),
-                                  "snapshot '{}' already exists".format(
-                                  args.name.decode('utf-8')))
-        elif args.op == 'delete':
-            snap_dir = os.path.join(args.dir, snapdir, args.name)
-            try:
-                if is_dir_exists(snap_dir):
-                    newargs = argparse.Namespace(paths=[snap_dir], parent=False)
-                    self.do_rmdir_helper(newargs)
-                else:
-                    set_exit_code_msg(errno.ENOENT, "'{}': no such snapshot".format(
-                        args.name.decode('utf-8')))
-            except libcephfs.Error as e:
-                set_exit_code_msg(e.get_error_code(), "error while deleting "
-                                  "'{}'".format(snap_dir.decode('utf-8')))
-        else:
-            set_exit_code_msg(errno.EINVAL, "snapshot can only be created or "
-                              "deleted; check - help snap")
-
-    def do_help(self, line):
-        """
-        Get details about a command.
-            Usage: help <cmd> - for a specific command
-                   help all - for all the commands
-        """
-        if line == 'all':
-            for k in dir(self):
-                if k.startswith('do_'):
-                    poutput('-' * 80)
-                    super().do_help(k[3:])
-            return
-        parser = self.create_argparser(line)
-        if parser:
-            parser.print_help()
-        else:
-            super().do_help(line)
-
-    def complete_stat(self, text, line, begidx, endidx):
-        """
-        auto complete of file name.
-        """
-        return self.complete_filenames(text, line, begidx, endidx)
-
-    stat_parser = argparse.ArgumentParser(
-        description='Display file or file system status')
-    stat_parser.add_argument('paths', type=str, help='file paths',
-                             action=path_to_bytes, nargs='+')
-
-    @with_argparser(stat_parser)
-    def do_stat(self, args):
-        """
-        Display file or file system status
-        """
-        for path in args.paths:
-            try:
-                stat = cephfs.stat(path)
-                atime = stat.st_atime.isoformat(' ')
-                mtime = stat.st_mtime.isoformat(' ')
-                ctime = stat.st_mtime.isoformat(' ')
-
-                poutput("File: {}\nSize: {:d}\nBlocks: {:d}\nIO Block: {:d}\n"
-                        "Device: {:d}\tInode: {:d}\tLinks: {:d}\nPermission: "
-                        "{:o}/{}\tUid: {:d}\tGid: {:d}\nAccess: {}\nModify: "
-                        "{}\nChange: {}".format(path.decode('utf-8'),
-                                                stat.st_size, stat.st_blocks,
-                                                stat.st_blksize, stat.st_dev,
-                                                stat.st_ino, stat.st_nlink,
-                                                stat.st_mode,
-                                                mode_notation(stat.st_mode),
-                                                stat.st_uid, stat.st_gid, atime,
-                                                mtime, ctime))
-            except libcephfs.Error as e:
-                set_exit_code_msg(msg=e)
-
-    setxattr_parser = argparse.ArgumentParser(
-        description='Set extended attribute for a file')
-    setxattr_parser.add_argument('path', type=str, action=path_to_bytes, help='Name of the file')
-    setxattr_parser.add_argument('name', type=str, help='Extended attribute name')
-    setxattr_parser.add_argument('value', type=str, help='Extended attribute value')
-
-    @with_argparser(setxattr_parser)
-    def do_setxattr(self, args):
-        """
-        Set extended attribute for a file
-        """
-        val_bytes = to_bytes(args.value)
-        name_bytes = to_bytes(args.name)
-        try:
-            cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_CREATE)
-            poutput('{} is successfully set to {}'.format(args.name, args.value))
-        except libcephfs.ObjectExists:
-            cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_REPLACE)
-            poutput('{} is successfully reset to {}'.format(args.name, args.value))
-        except libcephfs.Error as e:
-            set_exit_code_msg(msg=e)
-
-    getxattr_parser = argparse.ArgumentParser(
-        description='Get extended attribute set for a file')
-    getxattr_parser.add_argument('path', type=str, action=path_to_bytes,
-                                 help='Name of the file')
-    getxattr_parser.add_argument('name', type=str, help='Extended attribute name')
-
-    @with_argparser(getxattr_parser)
-    def do_getxattr(self, args):
-        """
-        Get extended attribute for a file
-        """
-        try:
-            poutput('{}'.format(cephfs.getxattr(args.path,
-                                to_bytes(args.name)).decode('utf-8')))
-        except libcephfs.Error as e:
-            set_exit_code_msg(msg=e)
-
-    listxattr_parser = argparse.ArgumentParser(
-        description='List extended attributes set for a file')
-    listxattr_parser.add_argument('path', type=str, action=path_to_bytes,
-                                  help='Name of the file')
-
-    @with_argparser(listxattr_parser)
-    def do_listxattr(self, args):
-        """
-        List extended attributes for a file
-        """
-        try:
-            size, xattr_list = cephfs.listxattr(args.path)
-            if size > 0:
-                poutput('{}'.format(xattr_list.replace(b'\x00', b' ').decode('utf-8')))
-            else:
-                poutput('No extended attribute is set')
-        except libcephfs.Error as e:
-            set_exit_code_msg(msg=e)
-
-
-#######################################################
-#
-# Following are methods that get cephfs-shell started.
-#
-#####################################################
-
-def setup_cephfs(args):
-    """
-    Mounting a cephfs
-    """
-    global cephfs
-    try:
-        cephfs = libcephfs.LibCephFS(conffile='')
-        cephfs.mount(filesystem_name=args.fs)
-    except libcephfs.ObjectNotFound as e:
-        print('couldn\'t find ceph configuration not found')
-        sys.exit(e.get_error_code())
-    except libcephfs.Error as e:
-        print(e)
-        sys.exit(e.get_error_code())
-
-
-def str_to_bool(val):
-    """
-    Return corresponding bool values for strings like 'true' or 'false'.
-    """
-    if not isinstance(val, str):
-        return val
-
-    val = val.replace('\n', '')
-    if val.lower() in ['true', 'yes']:
-        return True
-    elif val.lower() in ['false', 'no']:
-        return False
-    else:
-        return val
-
-
-def read_shell_conf(shell, shell_conf_file):
-    import configparser
-
-    sec = 'cephfs-shell'
-    opts = []
-    if LooseVersion(cmd2_version) >= LooseVersion("0.10.0"):
-        for attr in shell.settables.keys():
-            opts.append(attr)
-    else:
-        if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"):
-            # hardcoding options for 0.7.9 because -
-            # 1. we use cmd2 v0.7.9 with teuthology and
-            # 2. there's no way distinguish between a shell setting and shell
-            #    object attribute until v0.10.0
-            opts = ['abbrev', 'autorun_on_edit', 'colors',
-                    'continuation_prompt', 'debug', 'echo', 'editor',
-                    'feedback_to_output', 'locals_in_py', 'prompt', 'quiet',
-                    'timing']
-        elif LooseVersion(cmd2_version) >= LooseVersion("0.9.23"):
-            opts.append('allow_style')
-        # no equivalent option was defined by cmd2.
-        else:
-            pass
-
-    # default and only section in our conf file.
-    cp = configparser.ConfigParser(default_section=sec, strict=False)
-    cp.read(shell_conf_file)
-    for opt in opts:
-        if cp.has_option(sec, opt):
-            setattr(shell, opt, str_to_bool(cp.get(sec, opt)))
-
-
-def get_shell_conffile_path(arg_conf=''):
-    conf_filename = 'cephfs-shell.conf'
-    env_var = 'CEPHFS_SHELL_CONF'
-
-    arg_conf = '' if not arg_conf else arg_conf
-    home_dir_conf = os.path.expanduser('~/.' + conf_filename)
-    env_conf = os.environ[env_var] if env_var in os.environ else ''
-
-    # here's the priority by which conf gets read.
-    for path in (arg_conf, env_conf, home_dir_conf):
-        if os.path.isfile(path):
-            return path
-    else:
-        return ''
-
-
-def manage_args():
-    main_parser = argparse.ArgumentParser(description='')
-    main_parser.add_argument('-b', '--batch', action='store',
-                             help='Path to CephFS shell script/batch file'
-                                  'containing CephFS shell commands',
-                             type=str)
-    main_parser.add_argument('-c', '--config', action='store',
-                             help='Path to Ceph configuration file.',
-                             type=str)
-    main_parser.add_argument('-f', '--fs', action='store',
-                             help='Name of filesystem to mount.',
-                             type=str)
-    main_parser.add_argument('-t', '--test', action='store',
-                             help='Test against transcript(s) in FILE',
-                             nargs='+')
-    main_parser.add_argument('commands', nargs='*', help='Comma delimited '
-                             'commands. The shell executes the given command '
-                             'and quits immediately with the return value of '
-                             'command. In case no commands are provided, the '
-                             'shell is launched.', default=[])
-
-    args = main_parser.parse_args()
-    args.exe_and_quit = False    # Execute and quit, don't launch the shell.
-
-    if args.batch:
-        if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"):
-            args.commands = ['load ' + args.batch, ',quit']
-        else:
-            args.commands = ['run_script ' + args.batch, ',quit']
-    if args.test:
-        args.commands.extend(['-t,'] + [arg + ',' for arg in args.test])
-    if not args.batch and len(args.commands) > 0:
-        args.exe_and_quit = True
-
-    manage_sys_argv(args)
-
-    return args
-
-
-def manage_sys_argv(args):
-    exe = sys.argv[0]
-    sys.argv.clear()
-    sys.argv.append(exe)
-    sys.argv.extend([i.strip() for i in ' '.join(args.commands).split(',')])
-
-    setup_cephfs(args)
-
-
-def execute_cmd_args(args):
-    """
-    Launch a shell session if no arguments were passed, else just execute
-    the given argument as a shell command and exit the shell session
-    immediately at (last) command's termination with the (last) command's
-    return value.
-    """
-    if not args.exe_and_quit:
-        return shell.cmdloop()
-    return execute_cmds_and_quit(args)
-
-
-def execute_cmds_and_quit(args):
-    """
-    Multiple commands might be passed separated by commas, feed onecmd()
-    one command at a time.
-    """
-    # do_* methods triggered by cephfs-shell commands return None when they
-    # complete running successfully. Until 0.9.6, shell.onecmd() returned this
-    # value to indicate whether the execution of the commands should stop, but
-    # since 0.9.7 it returns the return value of do_* methods only if it's
-    # not None. When it is None it returns False instead of None.
-    if LooseVersion(cmd2_version) <= LooseVersion("0.9.6"):
-        stop_exec_val = None
-    else:
-        stop_exec_val = False
-
-    args_to_onecmd = ''
-    if len(args.commands) <= 1:
-        args.commands = args.commands[0].split(' ')
-    for cmdarg in args.commands:
-        if ',' in cmdarg:
-            args_to_onecmd += ' ' + cmdarg[0:-1]
-            onecmd_retval = shell.onecmd(args_to_onecmd)
-            # if the curent command failed, let's abort the execution of
-            # series of commands passed.
-            if onecmd_retval is not stop_exec_val:
-                return onecmd_retval
-            if shell.exit_code != 0:
-                return shell.exit_code
-
-            args_to_onecmd = ''
-            continue
-
-        args_to_onecmd += ' ' + cmdarg
-    return shell.onecmd(args_to_onecmd)
-
-
-if __name__ == '__main__':
-    args = manage_args()
-
-    shell = CephFSShell()
-    # TODO: perhaps, we should add an option to pass ceph.conf?
-    read_shell_conf(shell, get_shell_conffile_path(args.config))
-    # XXX: setting shell.exit_code to zero so that in case there are no errors
-    # and exceptions, it is not set by any method or function of cephfs-shell
-    # and return values from shell.cmdloop() or shell.onecmd() is not an
-    # integer, we can treat it as the return value of cephfs-shell.
-    shell.exit_code = 0
-
-    retval = execute_cmd_args(args)
-    sys.exit(retval if retval else shell.exit_code)
diff --git a/ceph/src/tools/cephfs/setup.py b/ceph/src/tools/cephfs/setup.py
deleted file mode 100644 (file)
index 8cf7f28..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from setuptools import setup
-
-__version__ = '0.0.1'
-
-setup(
-    name='cephfs-shell',
-    version=__version__,
-    description='Interactive shell for Ceph file system',
-    keywords='cephfs, shell',
-    scripts=['cephfs-shell'],
-    install_requires=[
-        'cephfs',
-        'cmd2',
-        'colorama',
-    ],
-    classifiers=[
-        'Development Status :: 3 - Alpha',
-        'Environment :: Console',
-        'Intended Audience :: System Administrators',
-        'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
-        'Operating System :: POSIX :: Linux',
-        'Programming Language :: Python :: 3'
-    ],
-    license='LGPLv2+',
-)
diff --git a/ceph/src/tools/cephfs/shell/CMakeLists.txt b/ceph/src/tools/cephfs/shell/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5a1f6ad
--- /dev/null
@@ -0,0 +1,7 @@
+include(Distutils)
+distutils_install_module(cephfs-shell)
+
+if(WITH_TESTS)
+  include(AddCephTest)
+  add_tox_test(cephfs-shell)
+endif()
diff --git a/ceph/src/tools/cephfs/shell/cephfs-shell b/ceph/src/tools/cephfs/shell/cephfs-shell
new file mode 100755 (executable)
index 0000000..9b2c214
--- /dev/null
@@ -0,0 +1,1687 @@
+#!/usr/bin/python3
+# coding = utf-8
+
+import argparse
+import os
+import os.path
+import sys
+import cephfs as libcephfs
+import shutil
+import traceback
+import colorama
+import fnmatch
+import math
+import re
+import shlex
+import stat
+import errno
+
+from cmd2 import Cmd
+from cmd2 import __version__ as cmd2_version
+from distutils.version import LooseVersion
+
+if sys.version_info.major < 3:
+    raise RuntimeError("cephfs-shell is only compatible with python3")
+
+try:
+    from cmd2 import with_argparser
+except ImportError:
+    def with_argparser(argparser):
+        import functools
+
+        def argparser_decorator(func):
+            @functools.wraps(func)
+            def wrapper(thiz, cmdline):
+                if isinstance(cmdline, list):
+                    arglist = cmdline
+                else:
+                    # do not split if it's already a list
+                    arglist = shlex.split(cmdline, posix=False)
+                    # in case user quotes the command args
+                    arglist = [arg.strip('\'""') for arg in arglist]
+                try:
+                    args = argparser.parse_args(arglist)
+                except SystemExit:
+                    shell.exit_code = 1
+                    # argparse exits at seeing bad arguments
+                    return
+                else:
+                    return func(thiz, args)
+            argparser.prog = func.__name__[3:]
+            if argparser.description is None and func.__doc__:
+                argparser.description = func.__doc__
+
+            return wrapper
+
+        return argparser_decorator
+
+
+cephfs = None   # holds CephFS Python bindings
+shell = None    # holds instance of class CephFSShell
+exit_codes = {'Misc': 1,
+              'KeyboardInterrupt': 2,
+              errno.EPERM: 3,
+              errno.EACCES: 4,
+              errno.ENOENT: 5,
+              errno.EIO: 6,
+              errno.ENOSPC: 7,
+              errno.EEXIST: 8,
+              errno.ENODATA: 9,
+              errno.EINVAL: 10,
+              errno.EOPNOTSUPP: 11,
+              errno.ERANGE: 12,
+              errno.EWOULDBLOCK: 13,
+              errno.ENOTEMPTY: 14,
+              errno.ENOTDIR: 15,
+              errno.EDQUOT: 16,
+              errno.EPIPE: 17,
+              errno.ESHUTDOWN: 18,
+              errno.ECONNABORTED: 19,
+              errno.ECONNREFUSED: 20,
+              errno.ECONNRESET: 21,
+              errno.EINTR: 22}
+
+
+#########################################################################
+#
+# Following are methods are generically useful through class CephFSShell
+#
+#######################################################################
+
+
+def poutput(s, end='\n'):
+    shell.poutput(s, end=end)
+
+
+def perror(msg, **kwargs):
+    shell.perror(msg, **kwargs)
+
+
+def set_exit_code_msg(errcode='Misc', msg=''):
+    """
+    Set exit code and print error message
+    """
+    if isinstance(msg, libcephfs.Error):
+        shell.exit_code = exit_codes[msg.get_error_code()]
+    else:
+        shell.exit_code = exit_codes[errcode]
+    if msg:
+        perror(msg)
+
+
+def mode_notation(mode):
+    """
+    """
+    permission_bits = {'0': '---',
+                       '1': '--x',
+                       '2': '-w-',
+                       '3': '-wx',
+                       '4': 'r--',
+                       '5': 'r-x',
+                       '6': 'rw-',
+                       '7': 'rwx'}
+    mode = str(oct(mode))
+    notation = '-'
+    if mode[2] == '4':
+        notation = 'd'
+    elif mode[2:4] == '12':
+        notation = 'l'
+    for i in mode[-3:]:
+        notation += permission_bits[i]
+    return notation
+
+
+def get_chunks(file_size):
+    chunk_start = 0
+    chunk_size = 0x20000  # 131072 bytes, default max ssl buffer size
+    while chunk_start + chunk_size < file_size:
+        yield chunk_start, chunk_size
+        chunk_start += chunk_size
+    final_chunk_size = file_size - chunk_start
+    yield chunk_start, final_chunk_size
+
+
+def to_bytes(param):
+    # don't convert as follows as it can lead unusable results like coverting
+    # [1, 2, 3, 4] to '[1, 2, 3, 4]' -
+    # str(param).encode('utf-8')
+    if isinstance(param, bytes):
+        return param
+    elif isinstance(param, str):
+        return bytes(param, encoding='utf-8')
+    elif isinstance(param, list):
+        return [i.encode('utf-8') if isinstance(i, str) else to_bytes(i) for
+                i in param]
+    elif isinstance(param, int) or isinstance(param, float):
+        return str(param).encode('utf-8')
+    elif param is None:
+        return None
+
+
+def ls(path, opts=''):
+    # opts tries to be like /bin/ls opts
+    almost_all = 'A' in opts
+    try:
+        with cephfs.opendir(path) as d:
+            while True:
+                dent = cephfs.readdir(d)
+                if dent is None:
+                    return
+                elif almost_all and dent.d_name in (b'.', b'..'):
+                    continue
+                yield dent
+    except libcephfs.ObjectNotFound as e:
+        set_exit_code_msg(msg=e)
+
+
+def glob(path, pattern):
+    paths = []
+    parent_dir = os.path.dirname(path)
+    if parent_dir == b'':
+        parent_dir = b'/'
+    if path == b'/' or is_dir_exists(os.path.basename(path), parent_dir):
+        for i in ls(path, opts='A'):
+            if fnmatch.fnmatch(i.d_name, pattern):
+                paths.append(os.path.join(path, i.d_name))
+    return paths
+
+
+def locate_file(name, case_sensitive=True):
+    dir_list = sorted(set(dirwalk(cephfs.getcwd())))
+    if not case_sensitive:
+        return [dname for dname in dir_list if name.lower() in dname.lower()]
+    else:
+        return [dname for dname in dir_list if name in dname]
+
+
+def get_all_possible_paths(pattern):
+    complete_pattern = pattern[:]
+    paths = []
+    is_rel_path = not os.path.isabs(pattern)
+    if is_rel_path:
+        dir_ = cephfs.getcwd()
+    else:
+        dir_ = b'/'
+        pattern = pattern[1:]
+    patterns = pattern.split(b'/')
+    paths.extend(glob(dir_, patterns[0]))
+    patterns.pop(0)
+    for pattern in patterns:
+        for path in paths:
+            paths.extend(glob(path, pattern))
+    if is_rel_path:
+        complete_pattern = os.path.join(cephfs.getcwd(), complete_pattern)
+    return [path for path in paths if fnmatch.fnmatch(path, complete_pattern)]
+
+
+suffixes = ['B', 'K', 'M', 'G', 'T', 'P']
+
+
+def humansize(nbytes):
+    i = 0
+    while nbytes >= 1024 and i < len(suffixes) - 1:
+        nbytes /= 1024.
+        i += 1
+    nbytes = math.ceil(nbytes)
+    f = ('%d' % nbytes).rstrip('.')
+    return '%s%s' % (f, suffixes[i])
+
+
+def style_listing(path, is_dir, is_symlink, ls_long=False):
+    if not (is_dir or is_symlink):
+        return path
+    pretty = colorama.Style.BRIGHT
+    if is_symlink:
+        pretty += colorama.Fore.CYAN + path
+        if ls_long:
+            # Add target path
+            pretty += ' -> ' + cephfs.readlink(path, size=255).decode('utf-8')
+    elif is_dir:
+        pretty += colorama.Fore.BLUE + path + '/'
+    pretty += colorama.Style.RESET_ALL
+    return pretty
+
+
+def print_long(path, is_dir, is_symlink, human_readable):
+    info = cephfs.stat(path, follow_symlink=(not is_symlink))
+    pretty = style_listing(os.path.basename(path.decode('utf-8')), is_dir, is_symlink, True)
+    if human_readable:
+        sizefmt = '\t {:10s}'.format(humansize(info.st_size))
+    else:
+        sizefmt = '{:12d}'.format(info.st_size)
+    poutput(f'{mode_notation(info.st_mode)} {sizefmt} {info.st_uid} {info.st_gid} {info.st_mtime}'
+            f' {pretty}')
+
+
+def word_len(word):
+    """
+    Returns the word length, minus any color codes.
+    """
+    if word[0] == '\x1b':
+        return len(word) - 9
+    return len(word)
+
+
+def is_dir_exists(path, dir_=b''):
+    path_to_stat = os.path.join(dir_, path)
+    try:
+        return ((cephfs.stat(path_to_stat).st_mode & 0o0040000) != 0)
+    except libcephfs.Error:
+        return False
+
+
+def is_file_exists(path, dir_=b''):
+    try:
+        # if its not a directory, then its a file
+        return ((cephfs.stat(os.path.join(dir_, path)).st_mode & 0o0040000) == 0)
+    except libcephfs.Error:
+        return False
+
+
+def print_list(words, termwidth=79):
+    if not words:
+        return
+    words = [word.decode('utf-8') if isinstance(word, bytes) else word for word in words]
+    width = max([word_len(word) for word in words]) + 2
+    nwords = len(words)
+    ncols = max(1, (termwidth + 1) // (width + 1))
+    nrows = (nwords + ncols - 1) // ncols
+    for row in range(nrows):
+        for i in range(row, nwords, nrows):
+            word = words[i]
+            print_width = width
+            if word[0] == '\x1b':
+                print_width = print_width + 10
+
+            poutput('%-*s' % (print_width, words[i]),
+                    end='\n' if i + nrows >= nwords else '')
+
+
+def copy_from_local(local_path, remote_path):
+    stdin = -1
+    file_ = None
+    fd = None
+    convert_to_bytes = False
+    if local_path == b'-':
+        file_ = sys.stdin
+        convert_to_bytes = True
+    else:
+        try:
+            file_ = open(local_path, 'rb')
+        except PermissionError as e:
+            set_exit_code_msg(e.errno, 'error: no permission to read local file {}'.format(
+                local_path.decode('utf-8')))
+            return
+        stdin = 1
+    try:
+        fd = cephfs.open(remote_path, 'w', 0o666)
+    except libcephfs.Error as e:
+        set_exit_code_msg(msg=e)
+        return
+    progress = 0
+    while True:
+        data = file_.read(65536)
+        if not data or len(data) == 0:
+            break
+        if convert_to_bytes:
+            data = to_bytes(data)
+        wrote = cephfs.write(fd, data, progress)
+        if wrote < 0:
+            break
+        progress += wrote
+    cephfs.close(fd)
+    if stdin > 0:
+        file_.close()
+    poutput('')
+
+
+def copy_to_local(remote_path, local_path):
+    fd = None
+    if local_path != b'-':
+        local_dir = os.path.dirname(local_path)
+        dir_list = remote_path.rsplit(b'/', 1)
+        if not os.path.exists(local_dir):
+            os.makedirs(local_dir)
+        if len(dir_list) > 2 and dir_list[1] == b'':
+            return
+        fd = open(local_path, 'wb+')
+    file_ = cephfs.open(remote_path, 'r')
+    file_size = cephfs.stat(remote_path).st_size
+    if file_size <= 0:
+        return
+    progress = 0
+    for chunk_start, chunk_size in get_chunks(file_size):
+        file_chunk = cephfs.read(file_, chunk_start, chunk_size)
+        progress += len(file_chunk)
+        if fd:
+            fd.write(file_chunk)
+        else:
+            poutput(file_chunk.decode('utf-8'))
+    cephfs.close(file_)
+    if fd:
+        fd.close()
+
+
+def dirwalk(path):
+    """
+    walk a directory tree, using a generator
+    """
+    path = os.path.normpath(path)
+    for item in ls(path, opts='A'):
+        fullpath = os.path.join(path, item.d_name)
+        src_path = fullpath.rsplit(b'/', 1)[0]
+
+        yield os.path.normpath(fullpath)
+        if is_dir_exists(item.d_name, src_path):
+            for x in dirwalk(fullpath):
+                yield x
+
+
+##################################################################
+#
+# Following methods are implementation for CephFS Shell commands
+#
+#################################################################
+
+class CephFSShell(Cmd):
+
+    def __init__(self):
+        super().__init__()
+        self.working_dir = cephfs.getcwd().decode('utf-8')
+        self.set_prompt()
+        self.interactive = False
+        self.umask = '2'
+
+    def default(self, line):
+        perror('Unrecognized command')
+
+    def set_prompt(self):
+        self.prompt = ('\033[01;33mCephFS:~' + colorama.Fore.LIGHTCYAN_EX
+                       + self.working_dir + colorama.Style.RESET_ALL
+                       + '\033[01;33m>>>\033[00m ')
+
+    def create_argparser(self, command):
+        try:
+            argparse_args = getattr(self, 'argparse_' + command)
+        except AttributeError:
+            set_exit_code_msg()
+            return None
+        doc_lines = getattr(
+            self, 'do_' + command).__doc__.expandtabs().splitlines()
+        if '' in doc_lines:
+            blank_idx = doc_lines.index('')
+            usage = doc_lines[:blank_idx]
+            description = doc_lines[blank_idx + 1:]
+        else:
+            usage = doc_lines
+            description = []
+        parser = argparse.ArgumentParser(
+            prog=command,
+            usage='\n'.join(usage),
+            description='\n'.join(description),
+            formatter_class=argparse.ArgumentDefaultsHelpFormatter
+        )
+        for args, kwargs in argparse_args:
+            parser.add_argument(*args, **kwargs)
+        return parser
+
+    def complete_filenames(self, text, line, begidx, endidx):
+        if not text:
+            completions = [x.d_name.decode('utf-8') + '/' * int(x.is_dir())
+                           for x in ls(b".", opts='A')]
+        else:
+            if text.count('/') > 0:
+                completions = [text.rsplit('/', 1)[0] + '/'
+                               + x.d_name.decode('utf-8') + '/'
+                               * int(x.is_dir()) for x in ls('/'
+                               + text.rsplit('/', 1)[0], opts='A')
+                               if x.d_name.decode('utf-8').startswith(
+                                   text.rsplit('/', 1)[1])]
+            else:
+                completions = [x.d_name.decode('utf-8') + '/'
+                               * int(x.is_dir()) for x in ls(b".", opts='A')
+                               if x.d_name.decode('utf-8').startswith(text)]
+            if len(completions) == 1 and completions[0][-1] == '/':
+                dir_, file_ = completions[0].rsplit('/', 1)
+                completions.extend([dir_ + '/' + x.d_name.decode('utf-8')
+                                    + '/' * int(x.is_dir()) for x in
+                                    ls('/' + dir_, opts='A')
+                                    if x.d_name.decode('utf-8').startswith(file_)])
+            return self.delimiter_complete(text, line, begidx, endidx, completions, '/')
+        return completions
+
+    def onecmd(self, line, **kwargs):
+        """
+        Global error catcher
+        """
+        try:
+            res = Cmd.onecmd(self, line, **kwargs)
+            if self.interactive:
+                self.set_prompt()
+            return res
+        except ConnectionError as e:
+            set_exit_code_msg(e.errno, f'***\n{e}')
+        except KeyboardInterrupt:
+            set_exit_code_msg('KeyboardInterrupt', 'Command aborted')
+        except (libcephfs.Error, Exception) as e:
+            if shell.debug:
+                traceback.print_exc(file=sys.stdout)
+            set_exit_code_msg(msg=e)
+
+    class path_to_bytes(argparse.Action):
+        def __call__(self, parser, namespace, values, option_string=None):
+            values = to_bytes(values)
+            setattr(namespace, self.dest, values)
+
+    # TODO: move the necessary contents from here to `class path_to_bytes`.
+    class get_list_of_bytes_path(argparse.Action):
+        def __call__(self, parser, namespace, values, option_string=None):
+            values = to_bytes(values)
+
+            if values == b'.':
+                values = cephfs.getcwd()
+            else:
+                for i in values:
+                    if i == b'.':
+                        values[values.index(i)] = cephfs.getcwd()
+
+            setattr(namespace, self.dest, values)
+
+    def complete_mkdir(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    class ModeAction(argparse.Action):
+        def __init__(self, option_strings, dest, nargs=None, **kwargs):
+            if nargs is not None and nargs != '?':
+                raise ValueError("more than one modes not allowed")
+            super().__init__(option_strings, dest, **kwargs)
+
+        def __call__(self, parser, namespace, values, option_string=None):
+            o_mode = 0
+            res = None
+            try:
+                o_mode = int(values, base=8)
+            except ValueError:
+                res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', values)
+                if res is None:
+                    parser.error("invalid mode: %s\n"
+                                 "mode must be a numeric octal literal\n"
+                                 "or   ((u?g?o?)|(a?))(=)(r?w?x?)" %
+                                 values)
+                else:
+                    # we are supporting only assignment of mode and not + or -
+                    # as is generally available with the chmod command
+                    # eg.
+                    # >>> res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', 'go=')
+                    # >>> res.groups()
+                    # ('go', 'go', None, '=', '')
+                    val = res.groups()
+
+                    if val[3] != '=':
+                        parser.error("need assignment operator between user "
+                                     "and mode specifiers")
+                    if val[4] == '':
+                        parser.error("invalid mode: %s\n"
+                                     "mode must be combination of: r | w | x" %
+                                     values)
+                    users = ''
+                    if val[2] is None:
+                        users = val[1]
+                    else:
+                        users = val[2]
+
+                    t_mode = 0
+                    if users == 'a':
+                        users = 'ugo'
+
+                    if 'r' in val[4]:
+                        t_mode |= 4
+                    if 'w' in val[4]:
+                        t_mode |= 2
+                    if 'x' in val[4]:
+                        t_mode |= 1
+
+                    if 'u' in users:
+                        o_mode |= (t_mode << 6)
+                    if 'g' in users:
+                        o_mode |= (t_mode << 3)
+                    if 'o' in users:
+                        o_mode |= t_mode
+
+            if o_mode < 0:
+                parser.error("invalid mode: %s\n"
+                             "mode cannot be negative" % values)
+            if o_mode > 0o777:
+                parser.error("invalid mode: %s\n"
+                             "mode cannot be greater than octal 0777" % values)
+
+            setattr(namespace, self.dest, str(oct(o_mode)))
+
+    mkdir_parser = argparse.ArgumentParser(
+        description='Create the directory(ies), if they do not already exist.')
+    mkdir_parser.add_argument('dirs', type=str,
+                              action=path_to_bytes,
+                              metavar='DIR_NAME',
+                              help='Name of new_directory.',
+                              nargs='+')
+    mkdir_parser.add_argument('-m', '--mode', type=str,
+                              action=ModeAction,
+                              help='Sets the access mode for the new directory.')
+    mkdir_parser.add_argument('-p', '--parent', action='store_true',
+                              help='Create parent directories as necessary. '
+                                   'When this option is specified, no error is'
+                                   'reported if a directory already exists.')
+
+    @with_argparser(mkdir_parser)
+    def do_mkdir(self, args):
+        """
+        Create directory.
+        """
+        for path in args.dirs:
+            if args.mode:
+                permission = int(args.mode, 8)
+            else:
+                permission = 0o777
+            if args.parent:
+                cephfs.mkdirs(path, permission)
+            else:
+                try:
+                    cephfs.mkdir(path, permission)
+                except libcephfs.Error as e:
+                    set_exit_code_msg(e)
+
+    def complete_put(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        index_dict = {1: self.path_complete}
+        return self.index_based_complete(text, line, begidx, endidx, index_dict)
+
+    put_parser = argparse.ArgumentParser(
+        description='Copy a file/directory to Ceph File System from Local File System.')
+    put_parser.add_argument('local_path', type=str, action=path_to_bytes,
+                            help='Path of the file in the local system')
+    put_parser.add_argument('remote_path', type=str, action=path_to_bytes,
+                            help='Path of the file in the remote system')
+    put_parser.add_argument('-f', '--force', action='store_true',
+                            help='Overwrites the destination if it already exists.')
+
+    @with_argparser(put_parser)
+    def do_put(self, args):
+        """
+        Copy a local file/directory to CephFS.
+        """
+        if args.local_path != b'-' and not os.path.isfile(args.local_path) \
+                and not os.path.isdir(args.local_path):
+            set_exit_code_msg(errno.ENOENT,
+                              msg=f"error: "
+                                  f"{args.local_path.decode('utf-8')}: "
+                                  f"No such file or directory")
+            return
+
+        if (is_file_exists(args.remote_path) or is_dir_exists(
+                args.remote_path)) and not args.force:
+            set_exit_code_msg(msg=f"error: file/directory "
+                                  f"{args.remote_path.decode('utf-8')} "
+                                  f"exists, use --force to overwrite")
+            return
+
+        root_src_dir = args.local_path
+        root_dst_dir = args.remote_path
+        if args.local_path == b'.' or args.local_path == b'./':
+            root_src_dir = os.getcwdb()
+        elif len(args.local_path.rsplit(b'/', 1)) < 2:
+            root_src_dir = os.path.join(os.getcwdb(), args.local_path)
+        else:
+            p = args.local_path.split(b'/')
+            if p[0] == b'.':
+                root_src_dir = os.getcwdb()
+                p.pop(0)
+                while len(p) > 0:
+                    root_src_dir += b'/' + p.pop(0)
+
+        if root_dst_dir == b'.':
+            if args.local_path != b'-':
+                root_dst_dir = root_src_dir.rsplit(b'/', 1)[1]
+                if root_dst_dir == b'':
+                    root_dst_dir = root_src_dir.rsplit(b'/', 1)[0]
+                    a = root_dst_dir.rsplit(b'/', 1)
+                    if len(a) > 1:
+                        root_dst_dir = a[1]
+                    else:
+                        root_dst_dir = a[0]
+            else:
+                set_exit_code_msg(errno.EINVAL, 'error: no filename specified '
+                                  'for destination')
+                return
+
+        if root_dst_dir[-1] != b'/':
+            root_dst_dir += b'/'
+
+        if args.local_path == b'-' or os.path.isfile(root_src_dir):
+            if args.local_path == b'-':
+                root_src_dir = b'-'
+            copy_from_local(root_src_dir, root_dst_dir)
+        else:
+            for src_dir, dirs, files in os.walk(root_src_dir):
+                if isinstance(src_dir, str):
+                    src_dir = to_bytes(src_dir)
+                dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
+                dst_dir = re.sub(rb'\/+', b'/', cephfs.getcwd()
+                                 + dst_dir)
+                if args.force and dst_dir != b'/' and not is_dir_exists(
+                        dst_dir[:-1]) and not locate_file(dst_dir):
+                    try:
+                        cephfs.mkdirs(dst_dir, 0o777)
+                    except libcephfs.Error:
+                        pass
+                if (not args.force) and dst_dir != b'/' and not is_dir_exists(
+                        dst_dir) and not os.path.isfile(root_src_dir):
+                    try:
+                        cephfs.mkdirs(dst_dir, 0o777)
+                    except libcephfs.Error:
+                        # TODO: perhaps, set retval to 1?
+                        pass
+
+                for dir_ in dirs:
+                    dir_name = os.path.join(dst_dir, dir_)
+                    if not is_dir_exists(dir_name):
+                        try:
+                            cephfs.mkdirs(dir_name, 0o777)
+                        except libcephfs.Error:
+                            # TODO: perhaps, set retval to 1?
+                            pass
+
+                for file_ in files:
+                    src_file = os.path.join(src_dir, file_)
+                    dst_file = re.sub(rb'\/+', b'/', b'/' + dst_dir + b'/' + file_)
+                    if (not args.force) and is_file_exists(dst_file):
+                        return
+                    copy_from_local(src_file, os.path.join(cephfs.getcwd(),
+                                    dst_file))
+
+    def complete_get(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    get_parser = argparse.ArgumentParser(
+        description='Copy a file from Ceph File System to Local Directory.')
+    get_parser.add_argument('remote_path', type=str, action=path_to_bytes,
+                            help='Path of the file in the remote system')
+    get_parser.add_argument('local_path', type=str, action=path_to_bytes,
+                            help='Path of the file in the local system')
+    get_parser.add_argument('-f', '--force', action='store_true',
+                            help='Overwrites the destination if it already exists.')
+
+    @with_argparser(get_parser)
+    def do_get(self, args):
+        """
+        Copy a file/directory from CephFS to given path.
+        """
+        if not is_file_exists(args.remote_path) and not \
+                is_dir_exists(args.remote_path):
+            set_exit_code_msg(errno.ENOENT, "error: no file/directory"
+                                            " found at specified remote "
+                                            "path")
+            return
+        if (os.path.isfile(args.local_path) or os.path.isdir(
+                args.local_path)) and not args.force:
+            set_exit_code_msg(msg=f"error: file/directory "
+                                  f"{args.local_path.decode('utf-8')}"
+                                  f" already exists, use --force to "
+                                  f"overwrite")
+            return
+        root_src_dir = args.remote_path
+        root_dst_dir = args.local_path
+        fname = root_src_dir.rsplit(b'/', 1)
+        if args.local_path == b'.':
+            root_dst_dir = os.getcwdb()
+        if args.remote_path == b'.':
+            root_src_dir = cephfs.getcwd()
+        if args.local_path == b'-':
+            if args.remote_path == b'.' or args.remote_path == b'./':
+                set_exit_code_msg(errno.EINVAL, 'error: no remote file name specified')
+                return
+            copy_to_local(root_src_dir, b'-')
+        elif is_file_exists(args.remote_path):
+            copy_to_local(root_src_dir, root_dst_dir)
+        elif b'/' in root_src_dir and is_file_exists(fname[1], fname[0]):
+            copy_to_local(root_src_dir, root_dst_dir)
+        else:
+            files = list(reversed(sorted(dirwalk(root_src_dir))))
+            for file_ in files:
+                dst_dirpath, dst_file = file_.rsplit(b'/', 1)
+                if dst_dirpath in files:
+                    files.remove(dst_dirpath)
+                dst_path = os.path.join(root_dst_dir, dst_dirpath, dst_file)
+                dst_path = os.path.normpath(dst_path)
+                if is_dir_exists(file_):
+                    try:
+                        os.makedirs(dst_path)
+                    except OSError:
+                        pass
+                else:
+                    copy_to_local(file_, dst_path)
+
+        return 0
+
+    def complete_ls(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    ls_parser = argparse.ArgumentParser(
+        description='Copy a file from Ceph File System from Local Directory.')
+    ls_parser.add_argument('-l', '--long', action='store_true',
+                           help='Detailed list of items in the directory.')
+    ls_parser.add_argument('-r', '--reverse', action='store_true',
+                           help='Reverse order of listing items in the directory.')
+    ls_parser.add_argument('-H', action='store_true', help='Human Readable')
+    ls_parser.add_argument('-a', '--all', action='store_true',
+                           help='Do not Ignore entries starting with .')
+    ls_parser.add_argument('-S', action='store_true', help='Sort by file_size')
+    ls_parser.add_argument('paths', help='Name of Directories',
+                           action=path_to_bytes, nargs='*', default=['.'])
+
+    @with_argparser(ls_parser)
+    def do_ls(self, args):
+        """
+        List all the files and directories in the current working directory
+        """
+        paths = args.paths
+        for path in paths:
+            values = []
+            items = []
+            try:
+                if path.count(b'*') > 0:
+                    all_items = get_all_possible_paths(path)
+                    if len(all_items) == 0:
+                        continue
+                    path = all_items[0].rsplit(b'/', 1)[0]
+                    if path == b'':
+                        path = b'/'
+                    dirs = []
+                    for i in all_items:
+                        for item in ls(path):
+                            d_name = item.d_name
+                            if os.path.basename(i) == d_name:
+                                if item.is_dir():
+                                    dirs.append(os.path.join(path, d_name))
+                                else:
+                                    items.append(item)
+                    if dirs:
+                        paths.extend(dirs)
+                    else:
+                        poutput(path.decode('utf-8'), end=':\n')
+                    items = sorted(items, key=lambda item: item.d_name)
+                else:
+                    if path != b'' and path != cephfs.getcwd() and len(paths) > 1:
+                        poutput(path.decode('utf-8'), end=':\n')
+                    items = sorted(ls(path), key=lambda item: item.d_name)
+                if not args.all:
+                    items = [i for i in items if not i.d_name.startswith(b'.')]
+                if args.S:
+                    items = sorted(items, key=lambda item: cephfs.stat(
+                        path + b'/' + item.d_name, follow_symlink=(
+                            not item.is_symbol_file())).st_size)
+                if args.reverse:
+                    items = reversed(items)
+                for item in items:
+                    filepath = item.d_name
+                    is_dir = item.is_dir()
+                    is_sym_lnk = item.is_symbol_file()
+                    try:
+                        if args.long and args.H:
+                            print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir,
+                                       is_sym_lnk, True)
+                        elif args.long:
+                            print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir,
+                                       is_sym_lnk, False)
+                        elif is_sym_lnk or is_dir:
+                            values.append(style_listing(filepath.decode('utf-8'), is_dir,
+                                          is_sym_lnk))
+                        else:
+                            values.append(filepath)
+                    except libcephfs.Error as e:
+                        set_exit_code_msg(msg=e)
+                if not args.long:
+                    print_list(values, shutil.get_terminal_size().columns)
+                    if path != paths[-1]:
+                        poutput('')
+            except libcephfs.Error as e:
+                set_exit_code_msg(msg=e)
+
+    def complete_rmdir(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    rmdir_parser = argparse.ArgumentParser(description='Remove Directory.')
+    rmdir_parser.add_argument('paths', help='Directory Path.', nargs='+',
+                              action=path_to_bytes)
+    rmdir_parser.add_argument('-p', '--parent', action='store_true',
+                              help='Remove parent directories as necessary. '
+                                   'When this option is specified, no error '
+                                    'is reported if a directory has any '
+                                    'sub-directories, files')
+
+    @with_argparser(rmdir_parser)
+    def do_rmdir(self, args):
+        self.do_rmdir_helper(args)
+
+    def do_rmdir_helper(self, args):
+        """
+        Remove a specific Directory
+        """
+        is_pattern = False
+        paths = args.paths
+        for path in paths:
+            if path.count(b'*') > 0:
+                is_pattern = True
+                all_items = get_all_possible_paths(path)
+                if len(all_items) > 0:
+                    path = all_items[0].rsplit(b'/', 1)[0]
+                if path == b'':
+                    path = b'/'
+                dirs = []
+                for i in all_items:
+                    for item in ls(path):
+                        d_name = item.d_name
+                        if os.path.basename(i) == d_name:
+                            if item.is_dir():
+                                dirs.append(os.path.join(path, d_name))
+                paths.extend(dirs)
+                continue
+            else:
+                is_pattern = False
+
+            if args.parent:
+                path = os.path.join(cephfs.getcwd(), path.rsplit(b'/')[0])
+                files = list(sorted(set(dirwalk(path)), reverse=True))
+                if not files:
+                    path = b'.'
+                for filepath in files:
+                    try:
+                        cephfs.rmdir(os.path.normpath(filepath))
+                    except libcephfs.Error as e:
+                        perror(e)
+                        path = b'.'
+                        break
+            else:
+                path = os.path.normpath(os.path.join(cephfs.getcwd(), path))
+            if not is_pattern and path != os.path.normpath(b''):
+                try:
+                    cephfs.rmdir(path)
+                except libcephfs.Error as e:
+                    set_exit_code_msg(msg=e)
+
+    def complete_rm(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    rm_parser = argparse.ArgumentParser(description='Remove File.')
+    rm_parser.add_argument('paths', help='File Path.', nargs='+',
+                           action=path_to_bytes)
+
+    @with_argparser(rm_parser)
+    def do_rm(self, args):
+        """
+        Remove a specific file
+        """
+        file_paths = args.paths
+        for path in file_paths:
+            if path.count(b'*') > 0:
+                file_paths.extend([i for i in get_all_possible_paths(
+                    path) if is_file_exists(i)])
+            else:
+                try:
+                    cephfs.unlink(path)
+                except libcephfs.Error as e:
+                    # NOTE: perhaps we need a better msg here
+                    set_exit_code_msg(msg=e)
+
+    def complete_mv(self, text, line, begidx, endidx):
+        """
+         auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    mv_parser = argparse.ArgumentParser(description='Move File.')
+    mv_parser.add_argument('src_path', type=str, action=path_to_bytes,
+                           help='Source File Path.')
+    mv_parser.add_argument('dest_path', type=str, action=path_to_bytes,
+                           help='Destination File Path.')
+
+    @with_argparser(mv_parser)
+    def do_mv(self, args):
+        """
+        Rename a file or Move a file from source path to the destination
+        """
+        cephfs.rename(args.src_path, args.dest_path)
+
+    def complete_cd(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    cd_parser = argparse.ArgumentParser(description='Change working directory')
+    cd_parser.add_argument('path', type=str, help='Name of the directory.',
+                           action=path_to_bytes, nargs='?', default='/')
+
+    @with_argparser(cd_parser)
+    def do_cd(self, args):
+        """
+        Change working directory
+        """
+        cephfs.chdir(args.path)
+        self.working_dir = cephfs.getcwd().decode('utf-8')
+        self.set_prompt()
+
+    def do_cwd(self, arglist):
+        """
+        Get current working directory.
+        """
+        poutput(cephfs.getcwd().decode('utf-8'))
+
+    def complete_chmod(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    chmod_parser = argparse.ArgumentParser(description='Create Directory.')
+    chmod_parser.add_argument('mode', type=str, action=ModeAction, help='Mode')
+    chmod_parser.add_argument('paths', type=str, action=path_to_bytes,
+                              help='Name of the file', nargs='+')
+
+    @with_argparser(chmod_parser)
+    def do_chmod(self, args):
+        """
+        Change permission of a file
+        """
+        for path in args.paths:
+            mode = int(args.mode, base=8)
+            try:
+                cephfs.chmod(path, mode)
+            except libcephfs.Error as e:
+                set_exit_code_msg(msg=e)
+
+    def complete_cat(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    cat_parser = argparse.ArgumentParser(description='')
+    cat_parser.add_argument('paths', help='Name of Files', action=path_to_bytes,
+                            nargs='+')
+
+    @with_argparser(cat_parser)
+    def do_cat(self, args):
+        """
+        Print contents of a file
+        """
+        for path in args.paths:
+            if is_file_exists(path):
+                copy_to_local(path, b'-')
+            else:
+                set_exit_code_msg(errno.ENOENT, '{}: no such file'.format(
+                    path.decode('utf-8')))
+
+    umask_parser = argparse.ArgumentParser(description='Set umask value.')
+    umask_parser.add_argument('mode', help='Mode', type=str, action=ModeAction,
+                              nargs='?', default='')
+
+    @with_argparser(umask_parser)
+    def do_umask(self, args):
+        """
+        Set Umask value.
+        """
+        if args.mode == '':
+            poutput(self.umask.zfill(4))
+        else:
+            mode = int(args.mode, 8)
+            self.umask = str(oct(cephfs.umask(mode))[2:])
+
+    def complete_write(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    write_parser = argparse.ArgumentParser(description='Writes data into a file')
+    write_parser.add_argument('path', type=str, action=path_to_bytes,
+                              help='Name of File')
+
+    @with_argparser(write_parser)
+    def do_write(self, args):
+        """
+        Write data into a file.
+        """
+
+        copy_from_local(b'-', args.path)
+
+    def complete_lcd(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        index_dict = {1: self.path_complete}
+        return self.index_based_complete(text, line, begidx, endidx, index_dict)
+
+    lcd_parser = argparse.ArgumentParser(description='')
+    lcd_parser.add_argument('path', type=str, action=path_to_bytes, help='Path')
+
+    @with_argparser(lcd_parser)
+    def do_lcd(self, args):
+        """
+        Moves into the given local directory
+        """
+        try:
+            os.chdir(os.path.expanduser(args.path))
+        except OSError as e:
+            set_exit_code_msg(e.errno, "Cannot change to "
+                              f"{e.filename.decode('utf-8')}: {e.strerror}")
+
+    def complete_lls(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        index_dict = {1: self.path_complete}
+        return self.index_based_complete(text, line, begidx, endidx, index_dict)
+
+    lls_parser = argparse.ArgumentParser(
+        description='List files in local system.')
+    lls_parser.add_argument('paths', help='Paths', action=path_to_bytes,
+                            nargs='*')
+
+    @with_argparser(lls_parser)
+    def do_lls(self, args):
+        """
+        Lists all files and folders in the current local directory
+        """
+        if not args.paths:
+            print_list(os.listdir(os.getcwdb()))
+        else:
+            for path in args.paths:
+                try:
+                    items = os.listdir(path)
+                    poutput("{}:".format(path.decode('utf-8')))
+                    print_list(items)
+                except OSError as e:
+                    set_exit_code_msg(e.errno, f"{e.filename.decode('utf-8')}: "
+                                      f"{e.strerror}")
+        # Arguments to the with_argpaser decorator function are sticky.
+        # The items in args.path do not get overwritten in subsequent calls.
+        # The arguments remain in args.paths after the function exits and we
+        # neeed to clean it up to ensure the next call works as expected.
+        args.paths.clear()
+
+    def do_lpwd(self, arglist):
+        """
+        Prints the absolute path of the current local directory
+        """
+        poutput(os.getcwd())
+
+    def complete_df(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    df_parser = argparse.ArgumentParser(description='Show information about\
+                the amount of available disk space')
+    df_parser.add_argument('file', help='Name of the file', nargs='*',
+                           default=['.'], action=path_to_bytes)
+
+    @with_argparser(df_parser)
+    def do_df(self, arglist):
+        """
+        Display the amount of available disk space for file systems
+        """
+        header = True    # Set to true for printing header only once
+        if b'.' == arglist.file[0]:
+            arglist.file = ls(b'.')
+
+        for file in arglist.file:
+            if isinstance(file, libcephfs.DirEntry):
+                file = file.d_name
+            if file == b'.' or file == b'..':
+                continue
+            try:
+                statfs = cephfs.statfs(file)
+                stat = cephfs.stat(file)
+                block_size = (statfs['f_blocks'] * statfs['f_bsize']) // 1024
+                available = block_size - stat.st_size
+                use = 0
+
+                if block_size > 0:
+                    use = (stat.st_size * 100) // block_size
+
+                if header:
+                    header = False
+                    poutput('{:25s}\t{:5s}\t{:15s}{:10s}{}'.format(
+                            "1K-blocks", "Used", "Available", "Use%",
+                            "Stored on"))
+
+                poutput('{:d}\t{:18d}\t{:8d}\t{:10s} {}'.format(block_size,
+                        stat.st_size, available, str(int(use)) + '%',
+                        file.decode('utf-8')))
+            except libcephfs.OSError as e:
+                set_exit_code_msg(e.get_error_code(), "could not statfs {}: {}".format(
+                    file.decode('utf-8'), e.strerror))
+
+    locate_parser = argparse.ArgumentParser(
+        description='Find file within file system')
+    locate_parser.add_argument('name', help='name', type=str,
+                               action=path_to_bytes)
+    locate_parser.add_argument('-c', '--count', action='store_true',
+                               help='Count list of items located.')
+    locate_parser.add_argument(
+        '-i', '--ignorecase', action='store_true', help='Ignore case')
+
+    @with_argparser(locate_parser)
+    def do_locate(self, args):
+        """
+        Find a file within the File System
+        """
+        if args.name.count(b'*') == 1:
+            if args.name[0] == b'*':
+                args.name += b'/'
+            elif args.name[-1] == '*':
+                args.name = b'/' + args.name
+        args.name = args.name.replace(b'*', b'')
+        if args.ignorecase:
+            locations = locate_file(args.name, False)
+        else:
+            locations = locate_file(args.name)
+        if args.count:
+            poutput(len(locations))
+        else:
+            poutput((b'\n'.join(locations)).decode('utf-8'))
+
+    def complete_du(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    du_parser = argparse.ArgumentParser(
+        description='Disk Usage of a Directory')
+    du_parser.add_argument('paths', type=str, action=get_list_of_bytes_path,
+                           help='Name of the directory.', nargs='*',
+                           default=[b'.'])
+    du_parser.add_argument('-r', action='store_true',
+                           help='Recursive Disk usage of all directories.')
+
+    @with_argparser(du_parser)
+    def do_du(self, args):
+        """
+        Print disk usage of a given path(s).
+        """
+        def print_disk_usage(files):
+            if isinstance(files, bytes):
+                files = (files, )
+
+            for f in files:
+                try:
+                    st = cephfs.lstat(f)
+
+                    if stat.S_ISDIR(st.st_mode):
+                        dusage = int(cephfs.getxattr(f,
+                                     'ceph.dir.rbytes').decode('utf-8'))
+                    else:
+                        dusage = st.st_size
+
+                    # print path in local context
+                    f = os.path.normpath(f)
+                    if f[0] is ord('/'):
+                        f = b'.' + f
+                    poutput('{:10s} {}'.format(humansize(dusage),
+                            f.decode('utf-8')))
+                except libcephfs.Error as e:
+                    set_exit_code_msg(msg=e)
+                    continue
+
+        for path in args.paths:
+            if args.r:
+                print_disk_usage(sorted(set(dirwalk(path)).union({path})))
+            else:
+                print_disk_usage(path)
+
+    quota_parser = argparse.ArgumentParser(
+        description='Quota management for a Directory')
+    quota_parser.add_argument('op', choices=['get', 'set'],
+                              help='Quota operation type.')
+    quota_parser.add_argument('path', type=str, action=path_to_bytes,
+                              help='Name of the directory.')
+    quota_parser.add_argument('--max_bytes', type=int, default=-1, nargs='?',
+                              help='Max cumulative size of the data under '
+                                   'this directory.')
+    quota_parser.add_argument('--max_files', type=int, default=-1, nargs='?',
+                              help='Total number of files under this '
+                                   'directory tree.')
+
+    @with_argparser(quota_parser)
+    def do_quota(self, args):
+        """
+        Quota management.
+        """
+        if not is_dir_exists(args.path):
+            set_exit_code_msg(errno.ENOENT, 'error: no such directory {}'.format(
+                args.path.decode('utf-8')))
+            return
+
+        if args.op == 'set':
+            if (args.max_bytes == -1) and (args.max_files == -1):
+                set_exit_code_msg(errno.EINVAL, 'please specify either '
+                                  '--max_bytes or --max_files or both')
+                return
+
+            if args.max_bytes >= 0:
+                max_bytes = to_bytes(str(args.max_bytes))
+                try:
+                    cephfs.setxattr(args.path, 'ceph.quota.max_bytes',
+                                    max_bytes, os.XATTR_CREATE)
+                    poutput('max_bytes set to %d' % args.max_bytes)
+                except libcephfs.Error as e:
+                    cephfs.setxattr(args.path, 'ceph.quota.max_bytes',
+                                    max_bytes, os.XATTR_REPLACE)
+                    set_exit_code_msg(e.get_error_code(), 'max_bytes reset to '
+                                      f'{args.max_bytes}')
+
+            if args.max_files >= 0:
+                max_files = to_bytes(str(args.max_files))
+                try:
+                    cephfs.setxattr(args.path, 'ceph.quota.max_files',
+                                    max_files, os.XATTR_CREATE)
+                    poutput('max_files set to %d' % args.max_files)
+                except libcephfs.Error as e:
+                    cephfs.setxattr(args.path, 'ceph.quota.max_files',
+                                    max_files, os.XATTR_REPLACE)
+                    set_exit_code_msg(e.get_error_code(), 'max_files reset to '
+                                      f'{args.max_files}')
+        elif args.op == 'get':
+            max_bytes = '0'
+            max_files = '0'
+            try:
+                max_bytes = cephfs.getxattr(args.path, 'ceph.quota.max_bytes')
+                poutput('max_bytes: {}'.format(max_bytes.decode('utf-8')))
+            except libcephfs.Error as e:
+                set_exit_code_msg(e.get_error_code(), 'max_bytes is not set')
+
+            try:
+                max_files = cephfs.getxattr(args.path, 'ceph.quota.max_files')
+                poutput('max_files: {}'.format(max_files.decode('utf-8')))
+            except libcephfs.Error as e:
+                set_exit_code_msg(e.get_error_code(), 'max_files is not set')
+
+    snap_parser = argparse.ArgumentParser(description='Snapshot Management')
+    snap_parser.add_argument('op', type=str,
+                             help='Snapshot operation: create or delete')
+    snap_parser.add_argument('name', type=str, action=path_to_bytes,
+                             help='Name of snapshot')
+    snap_parser.add_argument('dir', type=str, action=path_to_bytes,
+                             help='Directory for which snapshot '
+                                  'needs to be created or deleted')
+
+    @with_argparser(snap_parser)
+    def do_snap(self, args):
+        """
+        Snapshot management for the volume
+        """
+        # setting self.colors to None turns off colorizing and
+        # perror emits plain text
+        self.colors = None
+
+        snapdir = '.snap'
+        conf_snapdir = cephfs.conf_get('client_snapdir')
+        if conf_snapdir is not None:
+            snapdir = conf_snapdir
+        snapdir = to_bytes(snapdir)
+        if args.op == 'create':
+            try:
+                if is_dir_exists(args.dir):
+                    cephfs.mkdir(os.path.join(args.dir, snapdir, args.name), 0o755)
+                else:
+                    set_exit_code_msg(errno.ENOENT, "'{}': no such directory".format(
+                                      args.dir.decode('utf-8')))
+            except libcephfs.Error as e:
+                set_exit_code_msg(e.get_error_code(),
+                                  "snapshot '{}' already exists".format(
+                                  args.name.decode('utf-8')))
+        elif args.op == 'delete':
+            snap_dir = os.path.join(args.dir, snapdir, args.name)
+            try:
+                if is_dir_exists(snap_dir):
+                    newargs = argparse.Namespace(paths=[snap_dir], parent=False)
+                    self.do_rmdir_helper(newargs)
+                else:
+                    set_exit_code_msg(errno.ENOENT, "'{}': no such snapshot".format(
+                        args.name.decode('utf-8')))
+            except libcephfs.Error as e:
+                set_exit_code_msg(e.get_error_code(), "error while deleting "
+                                  "'{}'".format(snap_dir.decode('utf-8')))
+        else:
+            set_exit_code_msg(errno.EINVAL, "snapshot can only be created or "
+                              "deleted; check - help snap")
+
+    def do_help(self, line):
+        """
+        Get details about a command.
+            Usage: help <cmd> - for a specific command
+                   help all - for all the commands
+        """
+        if line == 'all':
+            for k in dir(self):
+                if k.startswith('do_'):
+                    poutput('-' * 80)
+                    super().do_help(k[3:])
+            return
+        parser = self.create_argparser(line)
+        if parser:
+            parser.print_help()
+        else:
+            super().do_help(line)
+
+    def complete_stat(self, text, line, begidx, endidx):
+        """
+        auto complete of file name.
+        """
+        return self.complete_filenames(text, line, begidx, endidx)
+
+    stat_parser = argparse.ArgumentParser(
+        description='Display file or file system status')
+    stat_parser.add_argument('paths', type=str, help='file paths',
+                             action=path_to_bytes, nargs='+')
+
+    @with_argparser(stat_parser)
+    def do_stat(self, args):
+        """
+        Display file or file system status
+        """
+        for path in args.paths:
+            try:
+                stat = cephfs.stat(path)
+                atime = stat.st_atime.isoformat(' ')
+                mtime = stat.st_mtime.isoformat(' ')
+                ctime = stat.st_mtime.isoformat(' ')
+
+                poutput("File: {}\nSize: {:d}\nBlocks: {:d}\nIO Block: {:d}\n"
+                        "Device: {:d}\tInode: {:d}\tLinks: {:d}\nPermission: "
+                        "{:o}/{}\tUid: {:d}\tGid: {:d}\nAccess: {}\nModify: "
+                        "{}\nChange: {}".format(path.decode('utf-8'),
+                                                stat.st_size, stat.st_blocks,
+                                                stat.st_blksize, stat.st_dev,
+                                                stat.st_ino, stat.st_nlink,
+                                                stat.st_mode,
+                                                mode_notation(stat.st_mode),
+                                                stat.st_uid, stat.st_gid, atime,
+                                                mtime, ctime))
+            except libcephfs.Error as e:
+                set_exit_code_msg(msg=e)
+
+    setxattr_parser = argparse.ArgumentParser(
+        description='Set extended attribute for a file')
+    setxattr_parser.add_argument('path', type=str, action=path_to_bytes, help='Name of the file')
+    setxattr_parser.add_argument('name', type=str, help='Extended attribute name')
+    setxattr_parser.add_argument('value', type=str, help='Extended attribute value')
+
+    @with_argparser(setxattr_parser)
+    def do_setxattr(self, args):
+        """
+        Set extended attribute for a file
+        """
+        val_bytes = to_bytes(args.value)
+        name_bytes = to_bytes(args.name)
+        try:
+            cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_CREATE)
+            poutput('{} is successfully set to {}'.format(args.name, args.value))
+        except libcephfs.ObjectExists:
+            cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_REPLACE)
+            poutput('{} is successfully reset to {}'.format(args.name, args.value))
+        except libcephfs.Error as e:
+            set_exit_code_msg(msg=e)
+
+    getxattr_parser = argparse.ArgumentParser(
+        description='Get extended attribute set for a file')
+    getxattr_parser.add_argument('path', type=str, action=path_to_bytes,
+                                 help='Name of the file')
+    getxattr_parser.add_argument('name', type=str, help='Extended attribute name')
+
+    @with_argparser(getxattr_parser)
+    def do_getxattr(self, args):
+        """
+        Get extended attribute for a file
+        """
+        try:
+            poutput('{}'.format(cephfs.getxattr(args.path,
+                                to_bytes(args.name)).decode('utf-8')))
+        except libcephfs.Error as e:
+            set_exit_code_msg(msg=e)
+
+    listxattr_parser = argparse.ArgumentParser(
+        description='List extended attributes set for a file')
+    listxattr_parser.add_argument('path', type=str, action=path_to_bytes,
+                                  help='Name of the file')
+
+    @with_argparser(listxattr_parser)
+    def do_listxattr(self, args):
+        """
+        List extended attributes for a file
+        """
+        try:
+            size, xattr_list = cephfs.listxattr(args.path)
+            if size > 0:
+                poutput('{}'.format(xattr_list.replace(b'\x00', b' ').decode('utf-8')))
+            else:
+                poutput('No extended attribute is set')
+        except libcephfs.Error as e:
+            set_exit_code_msg(msg=e)
+
+
+#######################################################
+#
+# Following are methods that get cephfs-shell started.
+#
+#####################################################
+
+def setup_cephfs(args):
+    """
+    Mounting a cephfs
+    """
+    global cephfs
+    try:
+        cephfs = libcephfs.LibCephFS(conffile='')
+        cephfs.mount(filesystem_name=args.fs)
+    except libcephfs.ObjectNotFound as e:
+        print('couldn\'t find ceph configuration not found')
+        sys.exit(e.get_error_code())
+    except libcephfs.Error as e:
+        print(e)
+        sys.exit(e.get_error_code())
+
+
+def str_to_bool(val):
+    """
+    Return corresponding bool values for strings like 'true' or 'false'.
+    """
+    if not isinstance(val, str):
+        return val
+
+    val = val.replace('\n', '')
+    if val.lower() in ['true', 'yes']:
+        return True
+    elif val.lower() in ['false', 'no']:
+        return False
+    else:
+        return val
+
+
+def read_shell_conf(shell, shell_conf_file):
+    import configparser
+
+    sec = 'cephfs-shell'
+    opts = []
+    if LooseVersion(cmd2_version) >= LooseVersion("0.10.0"):
+        for attr in shell.settables.keys():
+            opts.append(attr)
+    else:
+        if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"):
+            # hardcoding options for 0.7.9 because -
+            # 1. we use cmd2 v0.7.9 with teuthology and
+            # 2. there's no way distinguish between a shell setting and shell
+            #    object attribute until v0.10.0
+            opts = ['abbrev', 'autorun_on_edit', 'colors',
+                    'continuation_prompt', 'debug', 'echo', 'editor',
+                    'feedback_to_output', 'locals_in_py', 'prompt', 'quiet',
+                    'timing']
+        elif LooseVersion(cmd2_version) >= LooseVersion("0.9.23"):
+            opts.append('allow_style')
+        # no equivalent option was defined by cmd2.
+        else:
+            pass
+
+    # default and only section in our conf file.
+    cp = configparser.ConfigParser(default_section=sec, strict=False)
+    cp.read(shell_conf_file)
+    for opt in opts:
+        if cp.has_option(sec, opt):
+            setattr(shell, opt, str_to_bool(cp.get(sec, opt)))
+
+
+def get_shell_conffile_path(arg_conf=''):
+    conf_filename = 'cephfs-shell.conf'
+    env_var = 'CEPHFS_SHELL_CONF'
+
+    arg_conf = '' if not arg_conf else arg_conf
+    home_dir_conf = os.path.expanduser('~/.' + conf_filename)
+    env_conf = os.environ[env_var] if env_var in os.environ else ''
+
+    # here's the priority by which conf gets read.
+    for path in (arg_conf, env_conf, home_dir_conf):
+        if os.path.isfile(path):
+            return path
+    else:
+        return ''
+
+
+def manage_args():
+    main_parser = argparse.ArgumentParser(description='')
+    main_parser.add_argument('-b', '--batch', action='store',
+                             help='Path to CephFS shell script/batch file'
+                                  'containing CephFS shell commands',
+                             type=str)
+    main_parser.add_argument('-c', '--config', action='store',
+                             help='Path to Ceph configuration file.',
+                             type=str)
+    main_parser.add_argument('-f', '--fs', action='store',
+                             help='Name of filesystem to mount.',
+                             type=str)
+    main_parser.add_argument('-t', '--test', action='store',
+                             help='Test against transcript(s) in FILE',
+                             nargs='+')
+    main_parser.add_argument('commands', nargs='*', help='Comma delimited '
+                             'commands. The shell executes the given command '
+                             'and quits immediately with the return value of '
+                             'command. In case no commands are provided, the '
+                             'shell is launched.', default=[])
+
+    args = main_parser.parse_args()
+    args.exe_and_quit = False    # Execute and quit, don't launch the shell.
+
+    if args.batch:
+        if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"):
+            args.commands = ['load ' + args.batch, ',quit']
+        else:
+            args.commands = ['run_script ' + args.batch, ',quit']
+    if args.test:
+        args.commands.extend(['-t,'] + [arg + ',' for arg in args.test])
+    if not args.batch and len(args.commands) > 0:
+        args.exe_and_quit = True
+
+    manage_sys_argv(args)
+
+    return args
+
+
+def manage_sys_argv(args):
+    exe = sys.argv[0]
+    sys.argv.clear()
+    sys.argv.append(exe)
+    sys.argv.extend([i.strip() for i in ' '.join(args.commands).split(',')])
+
+    setup_cephfs(args)
+
+
+def execute_cmd_args(args):
+    """
+    Launch a shell session if no arguments were passed, else just execute
+    the given argument as a shell command and exit the shell session
+    immediately at (last) command's termination with the (last) command's
+    return value.
+    """
+    if not args.exe_and_quit:
+        return shell.cmdloop()
+    return execute_cmds_and_quit(args)
+
+
+def execute_cmds_and_quit(args):
+    """
+    Multiple commands might be passed separated by commas, feed onecmd()
+    one command at a time.
+    """
+    # do_* methods triggered by cephfs-shell commands return None when they
+    # complete running successfully. Until 0.9.6, shell.onecmd() returned this
+    # value to indicate whether the execution of the commands should stop, but
+    # since 0.9.7 it returns the return value of do_* methods only if it's
+    # not None. When it is None it returns False instead of None.
+    if LooseVersion(cmd2_version) <= LooseVersion("0.9.6"):
+        stop_exec_val = None
+    else:
+        stop_exec_val = False
+
+    args_to_onecmd = ''
+    if len(args.commands) <= 1:
+        args.commands = args.commands[0].split(' ')
+    for cmdarg in args.commands:
+        if ',' in cmdarg:
+            args_to_onecmd += ' ' + cmdarg[0:-1]
+            onecmd_retval = shell.onecmd(args_to_onecmd)
+            # if the curent command failed, let's abort the execution of
+            # series of commands passed.
+            if onecmd_retval is not stop_exec_val:
+                return onecmd_retval
+            if shell.exit_code != 0:
+                return shell.exit_code
+
+            args_to_onecmd = ''
+            continue
+
+        args_to_onecmd += ' ' + cmdarg
+    return shell.onecmd(args_to_onecmd)
+
+
+if __name__ == '__main__':
+    args = manage_args()
+
+    shell = CephFSShell()
+    # TODO: perhaps, we should add an option to pass ceph.conf?
+    read_shell_conf(shell, get_shell_conffile_path(args.config))
+    # XXX: setting shell.exit_code to zero so that in case there are no errors
+    # and exceptions, it is not set by any method or function of cephfs-shell
+    # and return values from shell.cmdloop() or shell.onecmd() is not an
+    # integer, we can treat it as the return value of cephfs-shell.
+    shell.exit_code = 0
+
+    retval = execute_cmd_args(args)
+    sys.exit(retval if retval else shell.exit_code)
diff --git a/ceph/src/tools/cephfs/shell/setup.py b/ceph/src/tools/cephfs/shell/setup.py
new file mode 100644 (file)
index 0000000..8cf7f28
--- /dev/null
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+
+from setuptools import setup
+
+__version__ = '0.0.1'
+
+setup(
+    name='cephfs-shell',
+    version=__version__,
+    description='Interactive shell for Ceph file system',
+    keywords='cephfs, shell',
+    scripts=['cephfs-shell'],
+    install_requires=[
+        'cephfs',
+        'cmd2',
+        'colorama',
+    ],
+    classifiers=[
+        'Development Status :: 3 - Alpha',
+        'Environment :: Console',
+        'Intended Audience :: System Administrators',
+        'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
+        'Operating System :: POSIX :: Linux',
+        'Programming Language :: Python :: 3'
+    ],
+    license='LGPLv2+',
+)
diff --git a/ceph/src/tools/cephfs/shell/tox.ini b/ceph/src/tools/cephfs/shell/tox.ini
new file mode 100644 (file)
index 0000000..c1cbff0
--- /dev/null
@@ -0,0 +1,7 @@
+[tox]
+envlist = py3
+skipsdist = true
+
+[testenv:py3]
+deps = flake8
+commands = flake8 --ignore=W503 --max-line-length=100 cephfs-shell
index 7c361f1f9fd9bf3cb909a8107d1f4a1ed92fed0b..4d359211f246f2f124970a9ceb840d354f072332 100755 (executable)
@@ -7,6 +7,7 @@ import errno
 import json
 import signal
 import time
+import math
 
 from collections import OrderedDict
 from datetime import datetime
@@ -30,6 +31,7 @@ class MetricType(Enum):
     METRIC_TYPE_PERCENTAGE = 1
     METRIC_TYPE_LATENCY = 2
     METRIC_TYPE_SIZE = 3
+    METRIC_TYPE_STDEV = 4
 
 
 FS_TOP_PROG_STR = 'cephfs-top'
@@ -53,6 +55,11 @@ MAIN_WINDOW_TOP_LINE_ITEMS_START = [ITEMS_PAD,
                                     FS_TOP_MAIN_WINDOW_COL_MNT_ROOT]
 MAIN_WINDOW_TOP_LINE_ITEMS_END = [FS_TOP_MAIN_WINDOW_COL_MNTPT_HOST_ADDR]
 
+MAIN_WINDOW_TOP_LINE_METRICS_LEGACY = ["READ_LATENCY",
+                                       "WRITE_LATENCY",
+                                       "METADATA_LATENCY"
+                                       ]
+
 # adjust this map according to stats version and maintain order
 # as emitted by mgr/stast
 MAIN_WINDOW_TOP_LINE_METRICS = OrderedDict([
@@ -66,6 +73,12 @@ MAIN_WINDOW_TOP_LINE_METRICS = OrderedDict([
     ("OPENED_INODES", MetricType.METRIC_TYPE_NONE),
     ("READ_IO_SIZES", MetricType.METRIC_TYPE_SIZE),
     ("WRITE_IO_SIZES", MetricType.METRIC_TYPE_SIZE),
+    ("AVG_READ_LATENCY", MetricType.METRIC_TYPE_LATENCY),
+    ("STDEV_READ_LATENCY", MetricType.METRIC_TYPE_STDEV),
+    ("AVG_WRITE_LATENCY", MetricType.METRIC_TYPE_LATENCY),
+    ("STDEV_WRITE_LATENCY", MetricType.METRIC_TYPE_STDEV),
+    ("AVG_METADATA_LATENCY", MetricType.METRIC_TYPE_LATENCY),
+    ("STDEV_METADATA_LATENCY", MetricType.METRIC_TYPE_STDEV),
 ])
 MGR_STATS_COUNTERS = list(MAIN_WINDOW_TOP_LINE_METRICS.keys())
 
@@ -95,7 +108,14 @@ def calc_perc(c):
 
 
 def calc_lat(c):
-    return round(c[0] + c[1] / 1000000000, 2)
+    return round(c[0] * 1000 + c[1] / 1000000, 2)
+
+
+def calc_stdev(c):
+    stdev = 0.0
+    if c[1] > 1:
+        stdev = math.sqrt(c[0] / (c[1] - 1)) / 1000000
+    return round(stdev, 2)
 
 
 # in MB
@@ -228,6 +248,18 @@ class FSTop(object):
             return "rtio"
         if item == "WRITE_IO_SIZES":
             return "wtio"
+        if item == 'AVG_READ_LATENCY':
+            return 'rlatavg'
+        if item == 'STDEV_READ_LATENCY':
+            return 'rlatsd'
+        if item == 'AVG_WRITE_LATENCY':
+            return 'wlatavg'
+        if item == 'STDEV_WRITE_LATENCY':
+            return 'wlatsd'
+        if item == 'AVG_METADATA_LATENCY':
+            return 'mlatavg'
+        if item == 'STDEV_METADATA_LATENCY':
+            return 'mlatsd'
         else:
             # return empty string for none type
             return ''
@@ -236,9 +268,11 @@ class FSTop(object):
         if typ == MetricType.METRIC_TYPE_PERCENTAGE:
             return "(%)"
         elif typ == MetricType.METRIC_TYPE_LATENCY:
-            return "(s)"
+            return "(ms)"
         elif typ == MetricType.METRIC_TYPE_SIZE:
             return "(MB)"
+        elif typ == MetricType.METRIC_TYPE_STDEV:
+            return "(ms)"
         else:
             # return empty string for none type
             return ''
@@ -283,6 +317,8 @@ class FSTop(object):
             xp += nlen
 
         for item, typ in MAIN_WINDOW_TOP_LINE_METRICS.items():
+            if item in MAIN_WINDOW_TOP_LINE_METRICS_LEGACY:
+                continue
             it = f'{self.items(item)}{self.mtype(typ)}'
             heading.append(it)
             nlen = len(it) + len(ITEMS_PAD)
@@ -334,6 +370,7 @@ class FSTop(object):
 
     def refresh_client(self, client_id, metrics, counters, client_meta, x_coord_map, y_coord):
         global last_time
+        size = 0
         cur_time = time.time()
         duration = cur_time - last_time
         last_time = cur_time
@@ -362,8 +399,10 @@ class FSTop(object):
                 return
 
         cidx = 0
-        client_id = x_coord_map[FS_TOP_MAIN_WINDOW_COL_CLIENT_ID]
         for item in counters:
+            if item in MAIN_WINDOW_TOP_LINE_METRICS_LEGACY:
+                cidx += 1
+                continue
             coord = x_coord_map[item]
             hlen = coord[1] - len(ITEMS_PAD)
             hlen = min(hlen, remaining_hlen)
@@ -379,6 +418,8 @@ class FSTop(object):
                     self.mainw.addnstr(y_coord, coord[0], f'{calc_perc(m)}', hlen)
                 elif typ == MetricType.METRIC_TYPE_LATENCY:
                     self.mainw.addnstr(y_coord, coord[0], f'{calc_lat(m)}', hlen)
+                elif typ == MetricType.METRIC_TYPE_STDEV:
+                    self.mainw.addnstr(y_coord, coord[0], f'{calc_stdev(m)}', hlen)
                 elif typ == MetricType.METRIC_TYPE_SIZE:
                     self.mainw.addnstr(y_coord, coord[0], f'{calc_size(m)}', hlen)
 
@@ -410,18 +451,21 @@ class FSTop(object):
                         remaining_hlen = 0
                     else:
                         remaining_hlen -= coord[1]
+                    size = 0
                     if key == "READ_IO_SIZES":
-                        global last_read_size
-                        last_size = last_read_size.get(client_id, 0)
-                        size = m[1] - last_size
-                        last_read_size[client_id] = m[1]
+                        if m[1] > 0:
+                            global last_read_size
+                            last_size = last_read_size.get(client_id, 0)
+                            size = m[1] - last_size
+                            last_read_size[client_id] = m[1]
                     if key == "WRITE_IO_SIZES":
-                        global last_write_size
-                        last_size = last_write_size.get(client_id, 0)
-                        size = m[1] - last_size
-                        last_write_size[client_id] = m[1]
+                        if m[1] > 0:
+                            global last_write_size
+                            last_size = last_write_size.get(client_id, 0)
+                            size = m[1] - last_size
+                            last_write_size[client_id] = m[1]
                     self.mainw.addnstr(y_coord, coord[0],
-                                       f'{calc_speed(size, duration)}',
+                                       f'{calc_speed(abs(size), duration)}',
                                        hlen)
                 else:
                     # display 0th element from metric tuple
diff --git a/ceph/src/tools/cephfs/tox.ini b/ceph/src/tools/cephfs/tox.ini
deleted file mode 100644 (file)
index c1cbff0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[tox]
-envlist = py3
-skipsdist = true
-
-[testenv:py3]
-deps = flake8
-commands = flake8 --ignore=W503 --max-line-length=100 cephfs-shell
index c20a1fc659b3aec75c188272cd865c1f65bf15db..890805764c048d86ecb26c817add6aaaf6e5d9af 100644 (file)
@@ -238,7 +238,7 @@ int Mirror::init_mon_client() {
     return r;
   }
 
-  r = m_monc->authenticate(m_cct->_conf->client_mount_timeout);
+  r = m_monc->authenticate(std::chrono::duration<double>(m_cct->_conf.get_val<std::chrono::seconds>("client_mount_timeout")).count());
   if (r < 0) {
     derr << ": failed to authenticate to monitor: " << cpp_strerror(r) << dendl;
     return r;
index d5ab7a215a143c7302e6db8cef11be2a80ff7320..064f2bd4d4f935b1dc59086b7b8f0e8b29d79a53 100644 (file)
@@ -761,7 +761,7 @@ int PeerReplayer::cleanup_remote_dir(const std::string &dir_root,
   int r = ceph_statxat(m_remote_mount, fh.r_fd_dir_root, epath.c_str(), &tstx,
                        CEPH_STATX_MODE | CEPH_STATX_UID | CEPH_STATX_GID |
                        CEPH_STATX_SIZE | CEPH_STATX_ATIME | CEPH_STATX_MTIME,
-                       AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW);
+                       AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW);
   if (r < 0) {
     derr << ": failed to stat remote directory=" << epath << ": "
          << cpp_strerror(r) << dendl;
@@ -794,7 +794,7 @@ int PeerReplayer::cleanup_remote_dir(const std::string &dir_root,
       struct dirent de;
       while (true) {
         r = ceph_readdirplus_r(m_remote_mount, entry.dirp, &de, &stx,
-                               CEPH_STATX_MODE, AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW, NULL);
+                               CEPH_STATX_MODE, AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW, NULL);
         if (r < 0) {
           derr << ": failed to read remote directory=" << entry.epath << dendl;
           break;
@@ -880,7 +880,7 @@ int PeerReplayer::should_sync_entry(const std::string &epath, const struct ceph_
   int r = ceph_statxat(fh.p_mnt, fh.p_fd, epath.c_str(), &pstx,
                        CEPH_STATX_MODE | CEPH_STATX_UID | CEPH_STATX_GID |
                        CEPH_STATX_SIZE | CEPH_STATX_CTIME | CEPH_STATX_MTIME,
-                       AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW);
+                       AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW);
   if (r < 0 && r != -ENOENT && r != -ENOTDIR) {
     derr << ": failed to stat prev entry= " << epath << ": " << cpp_strerror(r)
          << dendl;
@@ -974,7 +974,7 @@ int PeerReplayer::propagate_deleted_entries(const std::string &dir_root,
       struct ceph_statx pstx;
       auto dpath = entry_path(epath, d_name);
       r = ceph_statxat(fh.p_mnt, fh.p_fd, dpath.c_str(), &pstx,
-                       CEPH_STATX_MODE, AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW);
+                       CEPH_STATX_MODE, AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW);
       if (r < 0) {
         derr << ": failed to stat (prev) directory=" << dpath << ": "
              << cpp_strerror(r) << dendl;
@@ -988,7 +988,7 @@ int PeerReplayer::propagate_deleted_entries(const std::string &dir_root,
 
       struct ceph_statx cstx;
       r = ceph_statxat(m_local_mount, fh.c_fd, dpath.c_str(), &cstx,
-                       CEPH_STATX_MODE, AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW);
+                       CEPH_STATX_MODE, AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW);
       if (r < 0 && r != -ENOENT) {
         derr << ": failed to stat local (cur) directory=" << dpath << ": "
              << cpp_strerror(r) << dendl;
@@ -1169,7 +1169,7 @@ int PeerReplayer::do_synchronize(const std::string &dir_root, const Snapshot &cu
   r = ceph_fstatx(m_local_mount, fh.c_fd, &tstx,
                   CEPH_STATX_MODE | CEPH_STATX_UID | CEPH_STATX_GID |
                   CEPH_STATX_SIZE | CEPH_STATX_ATIME | CEPH_STATX_MTIME,
-                  AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW);
+                  AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW);
   if (r < 0) {
     derr << ": failed to stat snap=" << current.first << ": " << cpp_strerror(r)
          << dendl;
@@ -1214,7 +1214,7 @@ int PeerReplayer::do_synchronize(const std::string &dir_root, const Snapshot &cu
         r = ceph_readdirplus_r(m_local_mount, entry.dirp, &de, &stx,
                                CEPH_STATX_MODE | CEPH_STATX_UID | CEPH_STATX_GID |
                                CEPH_STATX_SIZE | CEPH_STATX_ATIME | CEPH_STATX_MTIME,
-                               AT_NO_ATTR_SYNC | AT_SYMLINK_NOFOLLOW, NULL);
+                               AT_STATX_DONT_SYNC | AT_SYMLINK_NOFOLLOW, NULL);
         if (r < 0) {
           derr << ": failed to local read directory=" << entry.epath << dendl;
           break;
index c7d07657403b128923ba89244db627b1dd9bd391..ab1d203311e9fb5bedb232d4afe2d485b0b1d5bd 100644 (file)
@@ -301,13 +301,18 @@ void Shell::get_command_spec(const std::vector<std::string> &arguments,
 
 Shell::Action *Shell::find_action(const CommandSpec &command_spec,
                                   CommandSpec **matching_spec, bool *is_alias) {
-  for (size_t i = 0; i < get_actions().size(); ++i) {
-    Action *action = get_actions()[i];
+  // sort such that all "trash purge schedule ..." actions come before
+  // "trash purge"
+  std::vector<Action *> actions(get_actions());
+  std::sort(actions.begin(), actions.end(), [](auto lhs, auto rhs) {
+    return lhs->command_spec.size() > rhs->command_spec.size();
+  });
+
+  for (Action *action : actions) {
     if (action->command_spec.size() <= command_spec.size()) {
-      if (std::includes(action->command_spec.begin(),
-                        action->command_spec.end(),
-                        command_spec.begin(),
-                        command_spec.begin() + action->command_spec.size())) {
+      if (std::equal(action->command_spec.begin(),
+                     action->command_spec.end(),
+                     command_spec.begin())) {
         if (matching_spec != NULL) {
           *matching_spec = &action->command_spec;
         }
@@ -317,11 +322,9 @@ Shell::Action *Shell::find_action(const CommandSpec &command_spec,
     }
     if (!action->alias_command_spec.empty() &&
         action->alias_command_spec.size() <= command_spec.size()) {
-      if (std::includes(action->alias_command_spec.begin(),
-                        action->alias_command_spec.end(),
-                        command_spec.begin(),
-                        command_spec.begin() +
-                          action->alias_command_spec.size())) {
+      if (std::equal(action->alias_command_spec.begin(),
+                     action->alias_command_spec.end(),
+                     command_spec.begin())) {
         if (matching_spec != NULL) {
           *matching_spec = &action->alias_command_spec;
         }
index 161cb91de1701f8a1093d5ec9e7affda2f3a03e0..a47b45a8be1be527162980856862272ca8466b81 100644 (file)
@@ -197,8 +197,7 @@ std::string get_default_pool_name() {
 }
 
 int get_pool_and_namespace_names(
-    const boost::program_options::variables_map &vm,
-    bool default_empty_pool_name, bool validate_pool_name,
+    const boost::program_options::variables_map &vm, bool validate_pool_name,
     std::string* pool_name, std::string* namespace_name, size_t *arg_index) {
   if (namespace_name != nullptr && vm.count(at::NAMESPACE_NAME)) {
     *namespace_name = vm[at::NAMESPACE_NAME].as<std::string>();
index 66f8e18881b2fc65ee0be3490a13ce87b66fe8e0..3ed5bfddbcb6a4e58e14233f68445ee8945f54c6 100644 (file)
@@ -105,8 +105,7 @@ void normalize_pool_name(std::string* pool_name);
 std::string get_default_pool_name();
 
 int get_pool_and_namespace_names(
-    const boost::program_options::variables_map &vm,
-    bool default_empty_pool_name, bool validate_pool_name,
+    const boost::program_options::variables_map &vm, bool validate_pool_name,
     std::string* pool_name, std::string* namespace_name, size_t *arg_index);
 
 int get_pool_image_snapshot_names(
index e4d49bdac73c7da01f6773344ad66cf25f69e063..5c2232a6fc68f960cee6d0dd0a5e00e662e8b6e2 100644 (file)
@@ -123,7 +123,7 @@ int execute_list(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index c8bc3eeb83a2d7940b7c4f0b4c92cbec371acb80..8fdc3c1a778f53b99867afd301db53f6befebd5b 100644 (file)
@@ -314,7 +314,7 @@ int execute(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 052df75f8d874538c9f32921c32aa54b66415877..b714c3babadec338b876aff722aac670d7080494 100644 (file)
@@ -826,7 +826,7 @@ int execute_peer_bootstrap_create(
     const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -885,7 +885,7 @@ int execute_peer_bootstrap_import(
     const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -978,7 +978,7 @@ int execute_peer_add(const po::variables_map &vm,
                      const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1069,7 +1069,7 @@ int execute_peer_remove(const po::variables_map &vm,
                         const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1117,7 +1117,7 @@ int execute_peer_set(const po::variables_map &vm,
                      const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -1288,7 +1288,7 @@ int execute_disable(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1311,7 +1311,7 @@ int execute_enable(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1367,7 +1367,7 @@ int execute_info(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1463,7 +1463,7 @@ int execute_status(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1653,7 +1653,7 @@ int execute_promote(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -1692,7 +1692,7 @@ int execute_demote(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 746ab40c2b26cdecc419edc127557606a1d5c2db..12d92bff86e892643f231ebd5a01b01b2a4ffba2 100644 (file)
@@ -30,7 +30,7 @@ int execute_create(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -69,7 +69,7 @@ int execute_remove(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -115,7 +115,7 @@ int execute_list(const po::variables_map &vm,
                  const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, true, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
index c38e02780650db6c43f23b937a3f541e7a528388..b39beac9148e4b3ada134dc42022933c493332fb 100644 (file)
@@ -584,7 +584,7 @@ int execute_iostat(const po::variables_map &vm,
   std::string pool;
   std::string pool_namespace;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, false, false, &pool,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool,
                                               &pool_namespace, &arg_index);
   if (r < 0) {
     return r;
@@ -621,7 +621,11 @@ int execute_iostat(const po::variables_map &vm,
     return r;
   }
 
-  utils::normalize_pool_name(&pool);
+  if (!pool_namespace.empty()) {
+    // default empty pool name only if namespace is specified to allow
+    // for an empty pool_spec (-> GLOBAL_POOL_KEY)
+    utils::normalize_pool_name(&pool);
+  }
   std::string pool_spec = format_pool_spec(pool, pool_namespace);
 
   // no point to refreshing faster than the stats period
@@ -667,7 +671,7 @@ int execute_iotop(const po::variables_map &vm,
   std::string pool;
   std::string pool_namespace;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, false, false, &pool,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool,
                                               &pool_namespace, &arg_index);
   if (r < 0) {
     return r;
@@ -685,7 +689,11 @@ int execute_iotop(const po::variables_map &vm,
     return r;
   }
 
-  utils::normalize_pool_name(&pool);
+  if (!pool_namespace.empty()) {
+    // default empty pool name only if namespace is specified to allow
+    // for an empty pool_spec (-> GLOBAL_POOL_KEY)
+    utils::normalize_pool_name(&pool);
+  }
   iotop::MainWindow mainWindow(rados, format_pool_spec(pool, pool_namespace));
   r = mainWindow.run();
   if (r < 0) {
index f1718eb1e1325a74bf5686dedc4b99f8c93fb32a..2ad8e17ff8e2488c25ac8076114517c512fd1f36 100644 (file)
@@ -29,7 +29,7 @@ int execute_init(const po::variables_map &vm,
                  const std::vector<std::string> &ceph_global_init_args) {
   std::string pool_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               nullptr, &arg_index);
   if (r < 0) {
     return r;
@@ -68,7 +68,7 @@ int execute_stats(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index 538318508570cd6c15831d98bb875dcb5ff58fc9..f1fd4df3c364ff8f6c7e691e48897586ccc8354f 100644 (file)
@@ -357,7 +357,7 @@ int execute_list(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
@@ -408,7 +408,7 @@ int execute_purge(const po::variables_map &vm,
   std::string pool_name;
   std::string namespace_name;
   size_t arg_index = 0;
-  int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
+  int r = utils::get_pool_and_namespace_names(vm, false, &pool_name,
                                               &namespace_name, &arg_index);
   if (r < 0) {
     return r;
index cec1f5463e6065f75610349d5a37f14086d1ca67..ee22b8d3475d59b9a037e23dcd0e331d1c349b23 100644 (file)
@@ -385,8 +385,8 @@ void ImageReplayer<I>::handle_bootstrap(int r) {
     on_start_fail(0, "local image is primary");
     return;
   } else if (r == -EREMOTEIO) {
-    dout(5) << "remote image is non-primary" << dendl;
-    on_start_fail(-EREMOTEIO, "remote image is non-primary");
+    dout(5) << "remote image is noprimary" << dendl;
+    on_start_fail(-EREMOTEIO, "remote image is noprimary");
     return;
   } else if (r == -EEXIST) {
     on_start_fail(r, "split-brain detected");
index a34f39c15b34a6770384589f3dfe2755d79af04b..bda5b5f9bd760c19a1938ff8d8bbf971205f7779 100644 (file)
@@ -135,7 +135,7 @@ void BootstrapRequest<I>::handle_prepare_local_image(int r) {
   if (r == -ENOENT) {
     dout(10) << "local image does not exist" << dendl;
   } else if (r < 0) {
-    derr << "error preparing local image for replay" << cpp_strerror(r)
+    derr << "error preparing local image for replay" << cpp_strerror(r)
          << dendl;
     finish(r);
     return;
@@ -177,10 +177,6 @@ void BootstrapRequest<I>::handle_prepare_remote_image(int r) {
     dout(5) << "local image is primary" << dendl;
     finish(-ENOMSG);
     return;
-  } else if (r == -EREMOTEIO) {
-    dout(10) << "remote-image is non-primary" << cpp_strerror(r) << dendl;
-    finish(r);
-    return;
   } else if (r == -ENOENT || state_builder == nullptr) {
     dout(10) << "remote image does not exist";
     if (state_builder != nullptr) {
@@ -204,11 +200,29 @@ void BootstrapRequest<I>::handle_prepare_remote_image(int r) {
     }
     return;
   } else if (r < 0) {
-    derr << "error retrieving remote image id" << cpp_strerror(r) << dendl;
+    derr << "error preparing remote image for replay: " << cpp_strerror(r)
+         << dendl;
     finish(r);
     return;
   }
 
+  if (!state_builder->is_remote_primary()) {
+    ceph_assert(!state_builder->remote_image_id.empty());
+    if (state_builder->local_image_id.empty()) {
+      dout(10) << "local image does not exist and remote image is not primary"
+               << dendl;
+      finish(-EREMOTEIO);
+      return;
+    } else if (!state_builder->is_linked()) {
+      dout(10) << "local image is unlinked and remote image is not primary"
+               << dendl;
+      finish(-EREMOTEIO);
+      return;
+    }
+    // if the local image is linked to the remote image, we ignore that
+    // the remote image is not primary so that we can replay demotion
+  }
+
   open_remote_image();
 }
 
@@ -314,9 +328,7 @@ void BootstrapRequest<I>::handle_prepare_replay(int r) {
   dout(10) << "r=" << r << dendl;
 
   if (r < 0) {
-    if (r != -EREMOTEIO) {
-      derr << "failed to prepare local replay: " << cpp_strerror(r) << dendl;
-    }
+    derr << "failed to prepare local replay: " << cpp_strerror(r) << dendl;
     m_ret_val = r;
     close_remote_image();
     return;
index b1e37ed084b80c1131c5cee8f6191be9b19d35bd..45a44a300e88bf3beeb496212054e9080cab5dd0 100644 (file)
@@ -65,10 +65,7 @@ void PrepareRemoteImageRequest<I>::handle_get_remote_image_id(int r) {
   dout(10) << "r=" << r << ", "
            << "remote_image_id=" << m_remote_image_id << dendl;
 
-  if (r == -ENOENT) {
-    finish(r);
-    return;
-  } else if (r < 0) {
+  if (r < 0) {
     finish(r);
     return;
   }
@@ -116,15 +113,6 @@ void PrepareRemoteImageRequest<I>::handle_get_mirror_info(int r) {
     dout(5) << "remote image mirroring is being disabled" << dendl;
     finish(-ENOENT);
     return;
-  } else if (m_promotion_state != librbd::mirror::PROMOTION_STATE_PRIMARY &&
-             (state_builder == nullptr ||
-              state_builder->local_image_id.empty() ||
-              state_builder->local_promotion_state ==
-                librbd::mirror::PROMOTION_STATE_UNKNOWN)) {
-    // no local image and remote isn't primary -- don't sync it
-    dout(5) << "remote image is not primary -- not syncing" << dendl;
-    finish(-EREMOTEIO);
-    return;
   }
 
   switch (m_mirror_image.mode) {
index 3c7274ec56e56ce736c87f555dae865ad2bc1e89..55fb3509d19d20fa477e2abaaf3f5f05db2a889b 100644 (file)
@@ -36,16 +36,30 @@ StateBuilder<I>::~StateBuilder() {
 }
 
 template <typename I>
-bool StateBuilder<I>::is_local_primary() const  {
-  return (!local_image_id.empty() &&
-          local_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY);
+bool StateBuilder<I>::is_local_primary() const {
+  if (local_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY) {
+    ceph_assert(!local_image_id.empty());
+    return true;
+  }
+  return false;
+}
+
+template <typename I>
+bool StateBuilder<I>::is_remote_primary() const {
+  if (remote_promotion_state == librbd::mirror::PROMOTION_STATE_PRIMARY) {
+    ceph_assert(!remote_image_id.empty());
+    return true;
+  }
+  return false;
 }
 
 template <typename I>
 bool StateBuilder<I>::is_linked() const {
-  return ((local_promotion_state ==
-             librbd::mirror::PROMOTION_STATE_NON_PRIMARY) &&
-          is_linked_impl());
+  if (local_promotion_state == librbd::mirror::PROMOTION_STATE_NON_PRIMARY) {
+    ceph_assert(!local_image_id.empty());
+    return is_linked_impl();
+  }
+  return false;
 }
 
 template <typename I>
index 99007ba5e21a8b8469075cffe3070e6a7c3538fd..51cf8668c1eff3c612e007211a9520173672f49b 100644 (file)
@@ -44,6 +44,7 @@ public:
   virtual bool is_disconnected() const = 0;
 
   bool is_local_primary() const;
+  bool is_remote_primary() const;
   bool is_linked() const;
 
   virtual cls::rbd::MirrorImageMode get_mirror_image_mode() const = 0;
@@ -81,13 +82,13 @@ public:
 
   std::string local_image_id;
   librbd::mirror::PromotionState local_promotion_state =
-    librbd::mirror::PROMOTION_STATE_PRIMARY;
+    librbd::mirror::PROMOTION_STATE_UNKNOWN;
   ImageCtxT* local_image_ctx = nullptr;
 
   std::string remote_mirror_uuid;
   std::string remote_image_id;
   librbd::mirror::PromotionState remote_promotion_state =
-    librbd::mirror::PROMOTION_STATE_NON_PRIMARY;
+    librbd::mirror::PROMOTION_STATE_UNKNOWN;
   ImageCtxT* remote_image_ctx = nullptr;
 
 protected:
index 69631f27587ede2a4a9264a323b0bcfa347a829e..c8a96a4ad364c7d1fa4607f091e480b61ce83ff6 100644 (file)
@@ -68,17 +68,6 @@ void PrepareReplayRequest<I>::send() {
            << "local tag data=" << m_local_tag_data << dendl;
   image_locker.unlock();
 
-  if (m_local_tag_data.mirror_uuid != m_state_builder->remote_mirror_uuid &&
-      m_remote_promotion_state != librbd::mirror::PROMOTION_STATE_PRIMARY) {
-    // if the local mirror is not linked to the (now) non-primary image,
-    // stop the replay. Otherwise, we ignore that the remote is non-primary
-    // so that we can replay the demotion
-    dout(5) << "remote image is not primary -- skipping image replay"
-            << dendl;
-    finish(-EREMOTEIO);
-    return;
-  }
-
   if (*m_resync_requested) {
     finish(0);
     return;
index 4538c94a4ad94077365f177d2d70631c676983cb..2b6fb659be3434ae48c1f792e09ea61213d5d833 100644 (file)
@@ -30,20 +30,18 @@ class PrepareReplayRequest : public BaseRequest {
 public:
   static PrepareReplayRequest* create(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
       bool* syncing,
       Context* on_finish) {
     return new PrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, progress_ctx, state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, progress_ctx, state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   PrepareReplayRequest(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
@@ -51,7 +49,6 @@ public:
       Context* on_finish)
     : BaseRequest(on_finish),
       m_local_mirror_uuid(local_mirror_uuid),
-      m_remote_promotion_state(remote_promotion_state),
       m_progress_ctx(progress_ctx),
       m_state_builder(state_builder),
       m_resync_requested(resync_requested),
@@ -83,7 +80,6 @@ private:
   typedef std::list<cls::journal::Tag> Tags;
 
   std::string m_local_mirror_uuid;
-  librbd::mirror::PromotionState m_remote_promotion_state;
   ProgressContext* m_progress_ctx;
   StateBuilder<ImageCtxT>* m_state_builder;
   bool* m_resync_requested;
index 2c95211d41e12e38501239a3608086e006563ff1..5f1fb0e2f09fc073fbe7567ac06275d1387cd00e 100644 (file)
@@ -97,8 +97,8 @@ BaseRequest* StateBuilder<I>::create_prepare_replay_request(
     bool* syncing,
     Context* on_finish) {
   return PrepareReplayRequest<I>::create(
-    local_mirror_uuid, this->remote_promotion_state, progress_ctx, this,
-    resync_requested, syncing, on_finish);
+    local_mirror_uuid, progress_ctx, this, resync_requested, syncing,
+    on_finish);
 }
 
 template <typename I>
index 315080238f7dcabce9000da3e8a59800695c1ab0..4e9246acd6a99aa2302c0c410fdfe7f0485b4314 100644 (file)
@@ -28,20 +28,18 @@ class PrepareReplayRequest : public BaseRequest {
 public:
   static PrepareReplayRequest* create(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
       bool* syncing,
       Context* on_finish) {
     return new PrepareReplayRequest(
-      local_mirror_uuid, remote_promotion_state, progress_ctx, state_builder,
-      resync_requested, syncing, on_finish);
+      local_mirror_uuid, progress_ctx, state_builder, resync_requested,
+      syncing, on_finish);
   }
 
   PrepareReplayRequest(
       const std::string& local_mirror_uuid,
-      librbd::mirror::PromotionState remote_promotion_state,
       ProgressContext* progress_ctx,
       StateBuilder<ImageCtxT>* state_builder,
       bool* resync_requested,
@@ -49,7 +47,6 @@ public:
       Context* on_finish)
     : BaseRequest(on_finish),
       m_local_mirror_uuid(local_mirror_uuid),
-      m_remote_promotion_state(remote_promotion_state),
       m_progress_ctx(progress_ctx),
       m_state_builder(state_builder),
       m_resync_requested(resync_requested),
@@ -75,7 +72,6 @@ private:
    */
 
   std::string m_local_mirror_uuid;
-  librbd::mirror::PromotionState m_remote_promotion_state;
   ProgressContext* m_progress_ctx;
   StateBuilder<ImageCtxT>* m_state_builder;
   bool* m_resync_requested;
index e94ec71dfe2d3275f2b7300a60c7170325bc6a30..4a44a57bc223534ce51ffacb4f9c2c06b041bee0 100644 (file)
@@ -440,7 +440,6 @@ void Replayer<I>::scan_local_mirror_snapshots(
 
   std::set<uint64_t> prune_snap_ids;
 
-  bool completed_non_primary_snapshots_exist = false;
   auto local_image_ctx = m_state_builder->local_image_ctx;
   std::shared_lock image_locker{local_image_ctx->image_lock};
   for (auto snap_info_it = local_image_ctx->snap_info.begin();
@@ -461,8 +460,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
       if (mirror_ns->complete) {
         // if remote has new snapshots, we would sync from here
         m_local_snap_id_start = local_snap_id;
-        m_local_snap_id_end = CEPH_NOSNAP;
-        completed_non_primary_snapshots_exist = true;
+        ceph_assert(m_local_snap_id_end == CEPH_NOSNAP);
 
         if (mirror_ns->mirror_peer_uuids.empty()) {
           // no other peer will attempt to sync to this snapshot so store as
@@ -471,15 +469,6 @@ void Replayer<I>::scan_local_mirror_snapshots(
         }
       } else if (mirror_ns->last_copied_object_number == 0 &&
                  m_local_snap_id_start > 0) {
-        // shouldn't be possible, but ensure that pruning this snapshot
-        // wouldn't leave this image w/o any non-primary snapshots
-        if (!completed_non_primary_snapshots_exist) {
-          derr << "incomplete local non-primary snapshot" << dendl;
-          handle_replay_complete(locker, -EINVAL,
-                                 "incomplete local non-primary snapshot");
-          return;
-        }
-
         // snapshot might be missing image state, object-map, etc, so just
         // delete and re-create it if we haven't started copying data
         // objects. Also only prune this snapshot since we will need the
@@ -499,7 +488,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
     } else if (mirror_ns->is_primary()) {
       if (mirror_ns->complete) {
         m_local_snap_id_start = local_snap_id;
-        m_local_snap_id_end = CEPH_NOSNAP;
+        ceph_assert(m_local_snap_id_end == CEPH_NOSNAP);
       } else {
         derr << "incomplete local primary snapshot" << dendl;
         handle_replay_complete(locker, -EINVAL,
@@ -515,7 +504,7 @@ void Replayer<I>::scan_local_mirror_snapshots(
   }
   image_locker.unlock();
 
-  if (m_local_snap_id_start > 0 && m_local_snap_id_end == CEPH_NOSNAP) {
+  if (m_local_snap_id_start > 0) {
     // remove candidate that is required for delta snapshot sync
     prune_snap_ids.erase(m_local_snap_id_start);
   }
@@ -1413,8 +1402,6 @@ void Replayer<I>::handle_unregister_remote_update_watcher(int r) {
   if (r < 0) {
     derr << "failed to unregister remote update watcher: " << cpp_strerror(r)
          << dendl;
-    handle_replay_complete(
-      r, "failed to unregister remote image update watcher");
   }
 
   unregister_local_update_watcher();
@@ -1438,8 +1425,6 @@ void Replayer<I>::handle_unregister_local_update_watcher(int r) {
   if (r < 0) {
     derr << "failed to unregister local update watcher: " << cpp_strerror(r)
          << dendl;
-    handle_replay_complete(
-      r, "failed to unregister local image update watcher");
   }
 
   delete m_update_watch_ctx;
@@ -1501,17 +1486,23 @@ void Replayer<I>::handle_replay_complete(std::unique_lock<ceph::mutex>* locker,
                                          const std::string& description) {
   ceph_assert(ceph_mutex_is_locked_by_me(m_lock));
 
-  if (m_error_code == 0) {
-    m_error_code = r;
-    m_error_description = description;
-  }
-
   if (m_sync_in_progress) {
     m_sync_in_progress = false;
     m_instance_watcher->notify_sync_complete(
       m_state_builder->local_image_ctx->id);
   }
 
+  // don't set error code and description if resuming a pending
+  // shutdown
+  if (is_replay_interrupted(locker)) {
+    return;
+  }
+
+  if (m_error_code == 0) {
+    m_error_code = r;
+    m_error_description = description;
+  }
+
   if (m_state != STATE_REPLAYING && m_state != STATE_IDLE) {
     return;
   }
index 52e64e762f5f1e6b1deb145dbe43747804783ebf..ca3e6918babc8cf0f89e852ff4c598584402f9fe 100644 (file)
@@ -96,8 +96,8 @@ BaseRequest* StateBuilder<I>::create_prepare_replay_request(
     bool* syncing,
     Context* on_finish) {
   return PrepareReplayRequest<I>::create(
-    local_mirror_uuid, this->remote_promotion_state, progress_ctx, this,
-    resync_requested, syncing, on_finish);
+    local_mirror_uuid, progress_ctx, this, resync_requested, syncing,
+    on_finish);
 }
 
 template <typename I>
index 19e7b02db3d278707bf421d38e101ebd60d3b2a9..507d3176eda95d930f76456bfec8924ae4421320 100755 (executable)
@@ -19,7 +19,7 @@ sslTag="OpenSSL_1_1_1c"
 sslDir="${depsToolsetDir}/openssl"
 sslSrcDir="${depsSrcDir}/openssl"
 
-curlTag="curl-7_66_0"
+curlTag="curl-7_84_0"
 curlSrcDir="${depsSrcDir}/curl"
 curlDir="${depsToolsetDir}/curl"
 
@@ -38,7 +38,7 @@ snappyTag="1.1.9"
 winLibDir="${depsToolsetDir}/windows/lib"
 
 wnbdUrl="https://github.com/cloudbase/wnbd"
-wnbdTag="master"
+wnbdTag="main"
 wnbdSrcDir="${depsSrcDir}/wnbd"
 wnbdLibDir="${depsToolsetDir}/wnbd/lib"
 
@@ -201,7 +201,7 @@ EOL
 ./b2 install --user-config=user-config.jam toolset=gcc-mingw32 \
     target-os=windows release \
     link=static,shared \
-    threadapi=pthread --prefix=$boostDir \
+    threadapi=win32 --prefix=$boostDir \
     address-model=64 architecture=x86 \
     binary-format=pe abi=ms -j $NUM_WORKERS \
     -sZLIB_INCLUDE=$zlibDir/include -sZLIB_LIBRARY_PATH=$zlibDir/lib \